diff --git a/.gitignore b/.gitignore index 231f1afed..22222fc39 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,9 @@ build # other run + +# CurseForge configuration +/curseforge.properties + +# Changelog backup +/changelog.bak diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..9d02a90df --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,38 @@ +# NTM Contribution Guidelines, Version 1 + +## Keep it concise + +The best PRs are the ones that are small and to the point. The entire PR should focus on the thing you're trying to do, whether it's a fix or a feature PR. If your PR adds the Super Weldtronic 9000, there's no reason to include changes and tweaks to other things that have nothing to do with the Super Weldtronic 9000. If you think those changes are still necessary, open a new PR. + +## Keep it clean + +While admittedly my own code isn't the cleanest on earth, please try to keep terrible practices at a minimum. Also avoid things like unused variables and imports, mixed indentation styles or changes that have a high likelihood of breaking things. + +Things you should also avoid include: +* new libraries (unless your PR absolutely needs it like for special mod compat) +* duplicate util functions (just use what we have, man) +* unused or half finished util functions (for obvious reasons) +* half finished or obviously broken features (à la "bob will fix it, i'm sure of it", please don't do that) + +## Test your code + +This should go without saying, but please don't PR code that was never actually tested or has obvious compiler errors in it. + +## Communication + +If you're planning on adding some new thing or doing a grand change, it's best to ask whether that's a good idea before spending 50 hours on a project that won't end up getting merged, due to issues that could have been entirely avoidable with communication. + +## No guarantees + +This ties together with the previous point - there's no guarantees that your PR gets merged no matter how hard or long you've worked on it. However, if you follow these guidelines, there's a good chance that your PR will be accepted. + +## I want to help but don't know where to start + +If you want to help the project, consider getting involved with the [wiki](ntm.fandom.com) first. Writing an article is the easiest and quickest way of helping, and requires no programming knowledge. If you do know Java and want to help, consider these places first: + +* Localization, i.e. translations in different language are always accepted. +* `IConfigurableMachine`, an interface that allows machines to be added to the `hbmMachines.json` config, is still not used by many machines. +* F1 Presentations, also known as "Stare" or "Jar Presentations", is a neat system of creating a short movie explaining functionality. All the relevant code can be found in `com.hbm.wiaj`. +* Some guns still use the old "bow-style" systems and not `ItemGunBase`. +* Many guns don't have any animations whatsoever, just adding a minor recoil would already improve them by a lot. +* Adding tooltips to more machines, explaining some of the basics. diff --git a/README.md b/README.md index 39977e9da..2506c1a64 100644 --- a/README.md +++ b/README.md @@ -91,5 +91,20 @@ If you want to make some changes to the mod, follow this guide: * Click **Add Standard VM**; in the JRE home, navigate to the directory where the JDK is installed, then click finish and select it. 10. Code! +## Compatibility notice +NTM has certain behaviors intended to fix vanilla code or to increase compatibility in certain cases where it otherwise would not be possible. These behaviors have the potential of not playing well with other mods, and while no such cases are currently known, here's a list of them. + +### Skybox chainloader +NTM adds a few small things to the skybox using a custom skybox renderer. Minecraft can only have a single skybox renderer loaded, so setting the skybox to the NTM custom one would break compatibility with other mods' skyboxes. To mend this, NTM employs a **chainloader**. This chainloader will detect if a different skybox is loaded, save a reference to that skybox and then use NTM's skybox, which when used will also make sure to run the previous modded skybox renderer. In the event that NTM's skybox were to cause trouble, it can be disabled with the config option `1.31_enableSkyboxes`. + +### Custom world provider +A world provider is a piece of code that minecraft can load to determine certain aspects of how the world should be handled, like light levels, sky color, day/night cycle, etc. In order for the Tom impact effects to work, NTM employs such a world provider, although this is known to cause issues with Hardcore Darkness. The world provider can be disabled with the config option `1.32_enableImpactWorldProvider`. + +### Stat re-registering +An often overlooked aspect of Minecraft is its stats, the game keeps track of how many of an item were crafted, placed, broken, etc. By default, Minecraft can only handle vanilla items, modded items would not show up in the stats window. Forge does little to fix this, and since NTM has to keep track of certain things (such as the use of an acidizer for spawning Mask Man) it will run its own code which re-registers all stats for all modded items. In the event that re-registering causes issues, or another mod already does this better already, this behavior can be disabled with the config option `1.33_enableStatReRegistering`. + +### Keybind overlap +An often annoying aspect of modded Minecraft is its keybinds. Even though multiple binds can be assigned the same key, all but one will show up as "conflicting" and only the non-conflicting one will work. Which one this is is usually arbitrary, and there is no reason to have such limitation. Often times keybinds are only applicable in certain scenarios, and a commonly found degree of overlap is within reason. Therefore, NTM will run its own key handling code which allows conflicting keybinds to work. If there should be any issues with this behavior, it can be disabled with the config option `1.34_enableKeybindOverlap`. + # License This software is licensed under the GNU Lesser General Public License version 3. In short: This software is free, you may run the software freely, create modified versions, distribute this software and distribute modified versions, as long as the modified software too has a free software license (with an exception for linking to this software, as stated by the "Lesser" part of the LGPL, where this may not be required). You win this round, Stallman. The full license can be found in the `LICENSE` and `LICENSE.LESSER` files. diff --git a/build.gradle b/build.gradle index 2817f3c3c..8cd9a478d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,9 @@ +import org.gradle.plugins.ide.eclipse.model.internal.FileReferenceFactory + +import java.nio.file.Files +import java.nio.file.Paths +import java.nio.file.StandardCopyOption + buildscript { repositories { maven { url = 'https://maven.minecraftforge.net/' } @@ -10,6 +16,14 @@ buildscript { } apply plugin: 'forge' +apply plugin: 'curseforge' + + +if(Files.exists(Paths.get("curseforge.properties"))) { + // Load CurseForge configuration + ext.cfprops = parseConfig(file("curseforge.properties")) +} + def version_name = version = mod_version if(!mod_build_number.isEmpty()) { version_name = mod_version + "_X" + mod_build_number @@ -42,7 +56,7 @@ eclipse.classpath.file.whenMerged { cp -> } // Create file reference factory - def fileref = new org.gradle.plugins.ide.eclipse.model.internal.FileReferenceFactory() + def fileref = new FileReferenceFactory() // Find all codechicken development jars cp.entries.findAll { entry -> entry.path.contains("codechicken") && entry.path.endsWith("-dev.jar") }.forEach { entry -> @@ -114,3 +128,38 @@ task version { println project.version } } + +if(Files.exists(Paths.get("curseforge.properties"))) { + curse { + apiKey = cfprops.api_key + projectId = cfprops.project_id + releaseType = "release" + + displayName = "Hbm's Nuclear Tech Mod " + version_name.replace("_", "") + " for Minecraft 1.7.10" + + gameVersions.addAll([ + "Forge", + "Java 8", + "Client", "Server" + ]) + + if (Files.exists(Paths.get("changelog"))) { + changelog = String.join("\r\n", Files.readAllLines(Paths.get("changelog"))) + + // Perform a backup of the changelog and create a new file for next changes + doLast { + Files.move(Paths.get("changelog"), Paths.get("changelog.bak"), StandardCopyOption.REPLACE_EXISTING) + Files.createFile(Paths.get("changelog")) + } + } + } +} + +// Properties file parsing helper +static def parseConfig(File config) { + config.withReader { + def prop = new Properties() + prop.load(it) + return (new ConfigSlurper().parse(prop)) + } +} diff --git a/changelog b/changelog new file mode 100644 index 000000000..b9026f9bd --- /dev/null +++ b/changelog @@ -0,0 +1,54 @@ +## Added +* Doors! + * Your favorites from 1.12, the 7 remaining doors have finally been ported + * Thanks to KoblizekXD for biting the bullet +* Rubber boat + * Made from latex or synthetic rubber + * A much less jankier alternative to the vanilla boat. Rotations are silky smooth and done via the strafe keys instead of based on the player's orientation + * Won't break from ramming into blocks + * Faster than a regular boat, but will decelerate quicker when there's nobody sitting in it, preventing the boat from drifting off too far when empty +* Exposure chamber + * Now performs the particle transmutation recipes that were previously done in the crafting table + * Stylish as hell +* Decoy missile + * A cheap tier 1 missile that shows up on radar screens as tier 4 (eg. nuclear) missiles +* Printing press stamps + * 8 different stamps for printing certain pages + * If a meteor dungeon safe is generated without a black book inside, it will generate two random stamps instead + * With all 8 stamps, allows you to print your own black book + +## Changed +* Reduced the blast resistance of the large doors from absurdly high to still very but not quite as high +* Custom missiles are now launchable using the radar +* NTM's structures should no longer spawn in dimensions besides the overworld. Ores will still generate, assuming the config option is set. +* Decreased M1tty's radiation resistance + * It's really damn cheap, what did you expect +* M1tty's helmet now acts like a protective mask +* Most non-custom missiles except tier 0s are now assembled in the arc welder + * Crafting complexity has been reduced, the recipes only need the three major components without any extra loose plates +* Non-custom missiles have been slightly buffed + * Explosions are now slightly larger and they use the new cross-detection entity damage code which still affects entities behind small hills that would otherwise be shielded + * Explosions now have a 2x larger entity damage radius +* Updated the digiminer recipe for mekanism compat +* Added config options to the ground water pumps +* Missile parts such as non-custom thrusters and fuselages are now made in the arc welder, recipe ingredients have been adjusted as well +* Null grenades now have a slightly larger radius, should no longer wipe playerdata and require UNDEFINED to make +* Added some breedable material to BFB PWR fuel rods, meaning that the recycling recipes now actually yield a net positive instead of being a massive waste of time +* The RBMK control panel has been upgraded + * Right.clicking the color buttons will now assign the color to the selected control rods + * There's now a new button that allows to cycle through compressor settings on RBMK steam channels + * The flux display is now functional. It will display the flux curve of the last 30 seconds, as well as labels for the total flux level. + * With the color assigning buttons and the flux display finished, the console is now finally complete +* Compressing blood at 4 PU now turns it into crude oil at a ratio of 2:1 +* Increased the cap for the overdrive upgrade in acidizers, tier 2 should now yield the proper amount and tier 3 should now be better than tier 2 +* The tooltip of valid upgrades now changes when a compatible machine GUI is open + +## Fixed +* Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate +* Fixed RBMK heat exchangers being able to use heatable fluids that don't have heat exchanger efficiency defined like liquid sodium, heavy water and thorium salt +* Fixed RBMK heat exchangers not using the heat exchanger efficiency variable to determine cooling power +* Fixed the ballistic gauntlet spawning a client-side ghost bullet that doesn't move or despawn +* Fixed bug where different custom machine cores would merge in a stack when picked up, turning them into the same type +* Fixed radar screen blips being visible through the back of the model +* Fixed desh crate's last half of slots preventing radiation entirely +* Fixed large mining drill shift-clicking \ No newline at end of file diff --git a/curseforge.properties.example b/curseforge.properties.example new file mode 100644 index 000000000..002b2b4f5 --- /dev/null +++ b/curseforge.properties.example @@ -0,0 +1,5 @@ +# CurseForge API token (obtainable from https://legacy.curseforge.com/account/api-tokens) +api_key= + +# CurseForge project ID +project_id= diff --git a/gradle.properties b/gradle.properties index 311c2314b..a04cdb5cc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,14 +1,19 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4585 +mod_build_number=4809 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ - \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\ - \ UFFR (RTGs, guns, casings), Pu-238 (Tom impact effects), Bismarck (chinese localization),\ - \ Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures, various machines, models, weapons), Vær (gas centrifuges,\ - \ better worldgen, ZIRNOX, CP-1 parts, starter guide), Adam29 (liquid petroleum, ethanol, electric furnace),\ - \ Pashtet (russian localization), MartinTheDragon (calculator, chunk-based fallout), haru315 (spiral point algorithm),\ - \ Sten89 (models), Pixelguru26 (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings),\ - \ OvermindDL1 (project settings), TehTemmie (reacher radiation function), Toshayo (satellite loot system, project settings), Silly541 (config for safe ME drives),\ - \ Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1 (OpenComputers integration), martemen (project settings),\ - \ Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid), sdddddf80 (recipe configs), SuperCraftAlex (tooltips) + \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ + \ porting), UFFR (RTGs, guns, casings, euphemium capacitor), Pu-238 (Tom impact effects), Bismarck\ + \ (chinese localization), Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures,\ + \ various machines, models, weapons), Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide),\ + \ Adam29 (liquid petroleum, ethanol, electric furnace), Pashtet (russian localization), MartinTheDragon\ + \ (calculator, chunk-based fallout, bendable cranes, pipe improvements), haru315 (spiral point algorithm),\ + \ Sten89 (models), Pixelguru26 (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002\ + \ (project settings), Nos (models), Burningwater202 (laminate glass), OvermindDL1 (project settings), TehTemmie\ + \ (reacher radiation function), Toshayo (satellite loot system, project settings, gradle curse task), Silly541\ + \ (config for safe ME drives), Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1\ + \ (OpenComputers integration), martemen (project settings), Pvndols (thorium fuel recipe, gas turbine),\ + \ JamesH2 (blood mechanics, nitric acid, particle emitter), sdddddf80 (recipe configs, chinese localization,\ + \ custom machine holograms, I18n improvements), SuperCraftAlex (tooltips) LePeep (coilgun model, BDCL QC),\ + \ 70k (textures), Maksymisio (polish localization) Ice-Arrow (research reactor tweaks) diff --git a/src/main/java/api/hbm/block/IBlowable.java b/src/main/java/api/hbm/block/IBlowable.java new file mode 100644 index 000000000..625e8a14a --- /dev/null +++ b/src/main/java/api/hbm/block/IBlowable.java @@ -0,0 +1,10 @@ +package api.hbm.block; + +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public interface IBlowable { //sloppy toppy + + /** Called server-side when a fan blows on an IBlowable in range every tick. */ + public void applyFan(World world, int x, int y, int z, ForgeDirection dir, int dist); +} diff --git a/src/main/java/api/hbm/block/IInsertable.java b/src/main/java/api/hbm/block/IInsertable.java new file mode 100644 index 000000000..b53a4849a --- /dev/null +++ b/src/main/java/api/hbm/block/IInsertable.java @@ -0,0 +1,10 @@ +package api.hbm.block; + +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public interface IInsertable { //uwu + + public boolean insertItem(World world, int x, int y, int z, ForgeDirection dir, ItemStack stack); +} diff --git a/src/main/java/api/hbm/energy/IEnergyConnector.java b/src/main/java/api/hbm/energy/IEnergyConnector.java index e3b21e12c..34ed1d175 100644 --- a/src/main/java/api/hbm/energy/IEnergyConnector.java +++ b/src/main/java/api/hbm/energy/IEnergyConnector.java @@ -75,7 +75,7 @@ public interface IEnergyConnector extends ILoadedTile { red = true; } - if(particleDebug) {// + if(particleDebug) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "network"); data.setString("mode", "power"); diff --git a/src/main/java/api/hbm/energy/IEnergyUser.java b/src/main/java/api/hbm/energy/IEnergyUser.java index a4a0a4ed5..4ca8e369a 100644 --- a/src/main/java/api/hbm/energy/IEnergyUser.java +++ b/src/main/java/api/hbm/energy/IEnergyUser.java @@ -28,15 +28,17 @@ public interface IEnergyUser extends IEnergyConnector { @Override public default long transferPower(long power) { - this.setPower(this.getPower() + power); - - if(this.getPower() > this.getMaxPower()) { + if(this.getPower() + power > this.getMaxPower()) { - long overshoot = this.getPower() - this.getMaxPower(); + long overshoot = this.getPower() + power - this.getMaxPower(); this.setPower(this.getMaxPower()); return overshoot; } + if(this.getPower() + power < 0) return 0; //safeguard for negative energy or overflows + + this.setPower(this.getPower() + power); + return 0; } diff --git a/src/main/java/api/hbm/energy/IPowerNet.java b/src/main/java/api/hbm/energy/IPowerNet.java index 4b82df2e9..eb9848226 100644 --- a/src/main/java/api/hbm/energy/IPowerNet.java +++ b/src/main/java/api/hbm/energy/IPowerNet.java @@ -1,5 +1,6 @@ package api.hbm.energy; +import java.math.BigInteger; import java.util.List; /** @@ -32,4 +33,5 @@ public interface IPowerNet { public List getSubscribers(); public long transferPower(long power); + public BigInteger getTotalTransfer(); } diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index f9025201b..83c84d33a 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -1,5 +1,6 @@ package api.hbm.energy; +import java.math.BigInteger; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -20,6 +21,9 @@ public class PowerNet implements IPowerNet { private HashMap links = new HashMap(); private HashMap proxies = new HashMap(); private List subscribers = new ArrayList(); + + public static List trackingInstances = null; + protected BigInteger totalTransfer = BigInteger.ZERO; @Override public void joinNetworks(IPowerNet network) { @@ -119,6 +123,11 @@ public class PowerNet implements IPowerNet { public boolean isValid() { return this.valid; } + + @Override + public BigInteger getTotalTransfer() { + return this.totalTransfer; + } public long lastCleanup = System.currentTimeMillis(); @@ -129,7 +138,9 @@ public class PowerNet implements IPowerNet { cleanup(this.subscribers); lastCleanup = System.currentTimeMillis(); }*/ - + + trackingInstances = new ArrayList(); + trackingInstances.add(this); return fairTransfer(this.subscribers, power); } @@ -142,6 +153,8 @@ public class PowerNet implements IPowerNet { public static long fairTransfer(List subscribers, long power) { + if(power <= 0) return 0; + if(subscribers.isEmpty()) return power; @@ -149,6 +162,8 @@ public class PowerNet implements IPowerNet { ConnectionPriority[] priorities = new ConnectionPriority[] {ConnectionPriority.HIGH, ConnectionPriority.NORMAL, ConnectionPriority.LOW}; + long totalTransfer = 0; + for(ConnectionPriority p : priorities) { List subList = new ArrayList(); @@ -183,9 +198,23 @@ public class PowerNet implements IPowerNet { long given = (long) Math.floor(fraction * power); totalGiven += (given - con.transferPower(given)); + + if(con instanceof TileEntity) { + TileEntity tile = (TileEntity) con; + tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile); + } } power -= totalGiven; + totalTransfer += totalGiven; + } + + if(trackingInstances != null) { + + for(int i = 0; i < trackingInstances.size(); i++) { + PowerNet net = trackingInstances.get(i); + net.totalTransfer = net.totalTransfer.add(BigInteger.valueOf(totalTransfer)); + } } return power; diff --git a/src/main/java/api/hbm/entity/IRadarDetectable.java b/src/main/java/api/hbm/entity/IRadarDetectable.java index f89fc99d4..0c3700b99 100644 --- a/src/main/java/api/hbm/entity/IRadarDetectable.java +++ b/src/main/java/api/hbm/entity/IRadarDetectable.java @@ -1,5 +1,6 @@ package api.hbm.entity; +@Deprecated //Use IRadarDetectableNT instead, old interface will still work though public interface IRadarDetectable { public static enum RadarTargetType { @@ -15,7 +16,7 @@ public interface IRadarDetectable { MISSILE_20("Size 20 Custom Missile"), //size 20 custom missiles MISSILE_AB("Anti-Ballistic Missile"), //anti ballistic missile PLAYER("Player"), //airborne players - ARTILLERY("Artillery Shell"); //airborne players + ARTILLERY("Artillery Shell"); //artillery shells public String name; diff --git a/src/main/java/api/hbm/entity/IRadarDetectableNT.java b/src/main/java/api/hbm/entity/IRadarDetectableNT.java new file mode 100644 index 000000000..0b327620c --- /dev/null +++ b/src/main/java/api/hbm/entity/IRadarDetectableNT.java @@ -0,0 +1,45 @@ +package api.hbm.entity; + +public interface IRadarDetectableNT { + + public static final int TIER0 = 0; + public static final int TIER1 = 1; + public static final int TIER2 = 2; + public static final int TIER3 = 3; + public static final int TIER4 = 4; + public static final int TIER10 = 5; + public static final int TIER10_15 = 6; + public static final int TIER15 = 7; + public static final int TIER15_20 = 8; + public static final int TIER20 = 9; + public static final int TIER_AB = 10; + public static final int PLAYER = 11; + public static final int ARTY = 12; + /** Reserved type that shows a unique purple blip. Used for when nothing else applies. */ + public static final int SPECIAL = 13; + + /** Name use for radar display, uses I18n for lookup */ + public String getUnlocalizedName(); + /** The type of dot to show on the radar as well as the redstone level in tier mode */ + public int getBlipLevel(); + /** Whether the object can be seen by this type of radar */ + public boolean canBeSeenBy(Object radar); + /** Whether the object is currently visible, as well as whether the radar's setting allow for picking this up */ + public boolean paramsApplicable(RadarScanParams params); + /** Whether this radar entry should be counted for the redstone output */ + public boolean suppliesRedstone(RadarScanParams params); + + public static class RadarScanParams { + public boolean scanMissiles = true; + public boolean scanShells = true; + public boolean scanPlayers = true; + public boolean smartMode = true; + + public RadarScanParams(boolean m, boolean s, boolean p, boolean smart) { + this.scanMissiles = m; + this.scanShells = s; + this.scanPlayers = p; + this.smartMode = smart; + } + } +} diff --git a/src/main/java/api/hbm/entity/RadarEntry.java b/src/main/java/api/hbm/entity/RadarEntry.java new file mode 100644 index 000000000..5dcc56845 --- /dev/null +++ b/src/main/java/api/hbm/entity/RadarEntry.java @@ -0,0 +1,66 @@ +package api.hbm.entity; + +import cpw.mods.fml.common.network.ByteBufUtils; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; + +public class RadarEntry { + + /** Name use for radar display, uses I18n for lookup */ + public String unlocalizedName; + /** The type of dot to show on the radar as well as the redstone level in tier mode */ + public int blipLevel; + public int posX; + public int posY; + public int posZ; + public int dim; + public int entityID; + /** Whether this radar entry should be counted for the redstone output */ + public boolean redstone; + + public RadarEntry() { } //blank ctor for packets + + public RadarEntry(String name, int level, int x, int y, int z, int dim, int entityID, boolean redstone) { + this.unlocalizedName = name; + this.blipLevel = level; + this.posX = x; + this.posY = y; + this.posZ = z; + this.dim = dim; + this.entityID = entityID; + this.redstone = redstone; + } + + public RadarEntry(IRadarDetectableNT detectable, Entity entity, boolean redstone) { + this(detectable.getUnlocalizedName(), detectable.getBlipLevel(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension, entity.getEntityId(), redstone); + } + + public RadarEntry(IRadarDetectable detectable, Entity entity) { + this(detectable.getTargetType().name, detectable.getTargetType().ordinal(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension, entity.getEntityId(), entity.motionY < 0); + } + + public RadarEntry(EntityPlayer player) { + this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension, player.getEntityId(), true); + } + + public void fromBytes(ByteBuf buf) { + this.unlocalizedName = ByteBufUtils.readUTF8String(buf); + this.blipLevel = buf.readShort(); + this.posX = buf.readInt(); + this.posY = buf.readInt(); + this.posZ = buf.readInt(); + this.dim = buf.readShort(); + this.entityID = buf.readInt(); + } + + public void toBytes(ByteBuf buf) { + ByteBufUtils.writeUTF8String(buf, this.unlocalizedName); + buf.writeShort(this.blipLevel); + buf.writeInt(this.posX); + buf.writeInt(this.posY); + buf.writeInt(this.posZ); + buf.writeShort(this.dim); + buf.writeInt(this.entityID); + } +} diff --git a/src/main/java/api/hbm/fluid/IFluidConductor.java b/src/main/java/api/hbm/fluid/IFluidConductor.java index 95ae30766..d9d1e00c7 100644 --- a/src/main/java/api/hbm/fluid/IFluidConductor.java +++ b/src/main/java/api/hbm/fluid/IFluidConductor.java @@ -9,11 +9,11 @@ public interface IFluidConductor extends IFluidConnector { public void setPipeNet(FluidType type, IPipeNet network); @Override - public default long transferFluid(FluidType type, long amount) { + public default long transferFluid(FluidType type, int pressure, long amount) { if(this.getPipeNet(type) == null) return amount; - return this.getPipeNet(type).transferFluid(amount); + return this.getPipeNet(type).transferFluid(amount, pressure); } } diff --git a/src/main/java/api/hbm/fluid/IFluidConnector.java b/src/main/java/api/hbm/fluid/IFluidConnector.java index 634412cbf..a47b56def 100644 --- a/src/main/java/api/hbm/fluid/IFluidConnector.java +++ b/src/main/java/api/hbm/fluid/IFluidConnector.java @@ -17,7 +17,7 @@ public interface IFluidConnector { * @param power * @return */ - public long transferFluid(FluidType type, long fluid); + public long transferFluid(FluidType type, int pressure, long fluid); /** * Whether the given side can be connected to @@ -33,7 +33,7 @@ public interface IFluidConnector { * @param type * @return */ - public long getDemand(FluidType type); + public long getDemand(FluidType type, int pressure); /** * Basic implementation of subscribing to a nearby power grid diff --git a/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java b/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java index e60aca9cd..dc7151daf 100644 --- a/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java +++ b/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java @@ -14,10 +14,10 @@ import com.hbm.inventory.fluid.tank.FluidTank; public interface IFluidStandardReceiver extends IFluidUser { @Override - public default long transferFluid(FluidType type, long amount) { + public default long transferFluid(FluidType type, int pressure, long amount) { for(FluidTank tank : getReceivingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { tank.setFill(tank.getFill() + (int) amount); if(tank.getFill() > tank.getMaxFill()) { @@ -36,10 +36,10 @@ public interface IFluidStandardReceiver extends IFluidUser { public FluidTank[] getReceivingTanks(); @Override - public default long getDemand(FluidType type) { + public default long getDemand(FluidType type, int pressure) { for(FluidTank tank : getReceivingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { return tank.getMaxFill() - tank.getFill(); } } diff --git a/src/main/java/api/hbm/fluid/IFluidStandardSender.java b/src/main/java/api/hbm/fluid/IFluidStandardSender.java index 46baee9da..57b587370 100644 --- a/src/main/java/api/hbm/fluid/IFluidStandardSender.java +++ b/src/main/java/api/hbm/fluid/IFluidStandardSender.java @@ -16,10 +16,10 @@ public interface IFluidStandardSender extends IFluidUser { public FluidTank[] getSendingTanks(); @Override - public default long getTotalFluidForSend(FluidType type) { + public default long getTotalFluidForSend(FluidType type, int pressure) { for(FluidTank tank : getSendingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { return tank.getFill(); } } @@ -28,10 +28,10 @@ public interface IFluidStandardSender extends IFluidUser { } @Override - public default void removeFluidForTransfer(FluidType type, long amount) { + public default void removeFluidForTransfer(FluidType type, int pressure, long amount) { for(FluidTank tank : getSendingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { tank.setFill(tank.getFill() - (int) amount); return; } @@ -39,12 +39,12 @@ public interface IFluidStandardSender extends IFluidUser { } @Override - public default long transferFluid(FluidType type, long fluid) { + public default long transferFluid(FluidType type, int pressure, long fluid) { return fluid; } @Override - public default long getDemand(FluidType type) { + public default long getDemand(FluidType type, int pressure) { return 0; } } diff --git a/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java b/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java index 4cbe6b0a4..4012ab63f 100644 --- a/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java +++ b/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java @@ -23,10 +23,10 @@ public interface IFluidStandardTransceiver extends IFluidUser { public FluidTank[] getReceivingTanks(); @Override - public default long getTotalFluidForSend(FluidType type) { + public default long getTotalFluidForSend(FluidType type, int pressure) { for(FluidTank tank : getSendingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { return tank.getFill(); } } @@ -35,10 +35,10 @@ public interface IFluidStandardTransceiver extends IFluidUser { } @Override - public default void removeFluidForTransfer(FluidType type, long amount) { + public default void removeFluidForTransfer(FluidType type, int pressure, long amount) { for(FluidTank tank : getSendingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { tank.setFill(tank.getFill() - (int) amount); return; } @@ -46,10 +46,10 @@ public interface IFluidStandardTransceiver extends IFluidUser { } @Override - public default long getDemand(FluidType type) { + public default long getDemand(FluidType type, int pressure) { for(FluidTank tank : getReceivingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { return tank.getMaxFill() - tank.getFill(); } } @@ -58,10 +58,10 @@ public interface IFluidStandardTransceiver extends IFluidUser { } @Override - public default long transferFluid(FluidType type, long amount) { + public default long transferFluid(FluidType type, int pressure, long amount) { for(FluidTank tank : getReceivingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { tank.setFill(tank.getFill() + (int) amount); if(tank.getFill() > tank.getMaxFill()) { diff --git a/src/main/java/api/hbm/fluid/IFluidUser.java b/src/main/java/api/hbm/fluid/IFluidUser.java index 2a181f99c..a0b5a47f0 100644 --- a/src/main/java/api/hbm/fluid/IFluidUser.java +++ b/src/main/java/api/hbm/fluid/IFluidUser.java @@ -13,7 +13,11 @@ import net.minecraftforge.common.util.ForgeDirection; public interface IFluidUser extends IFluidConnector { - public default void sendFluid(FluidType type, World world, int x, int y, int z, ForgeDirection dir) { + public default void sendFluid(FluidTank tank, World world, int x, int y, int z, ForgeDirection dir) { + sendFluid(tank.getTankType(), tank.getPressure(), world, x, y, z, dir); + } + + public default void sendFluid(FluidType type, int pressure, World world, int x, int y, int z, ForgeDirection dir) { TileEntity te = world.getTileEntity(x, y, z); boolean wasSubscribed = false; @@ -32,9 +36,12 @@ public interface IFluidUser extends IFluidConnector { IFluidConnector con = (IFluidConnector) te; if(con.canConnect(type, dir.getOpposite())) { - long toSend = this.getTotalFluidForSend(type); - long transfer = toSend - con.transferFluid(type, toSend); - this.removeFluidForTransfer(type, transfer); + long toSend = this.getTotalFluidForSend(type, pressure); + + if(toSend > 0) { + long transfer = toSend - con.transferFluid(type, pressure, toSend); + this.removeFluidForTransfer(type, pressure, transfer); + } red = true; } } @@ -77,15 +84,21 @@ public interface IFluidUser extends IFluidConnector { return null; } - public default void sendFluidToAll(FluidType type, TileEntity te) { + /** Use more common conPos method instead */ + @Deprecated public default void sendFluidToAll(FluidTank tank, TileEntity te) { + sendFluidToAll(tank.getTankType(), tank.getPressure(), te); + } + + /** Use more common conPos method instead */ + @Deprecated public default void sendFluidToAll(FluidType type, int pressure, TileEntity te) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - sendFluid(type, te.getWorldObj(), te.xCoord + dir.offsetX, te.yCoord + dir.offsetY, te.zCoord + dir.offsetZ, dir); + sendFluid(type, pressure, te.getWorldObj(), te.xCoord + dir.offsetX, te.yCoord + dir.offsetY, te.zCoord + dir.offsetZ, dir); } } - public default long getTotalFluidForSend(FluidType type) { return 0; } - public default void removeFluidForTransfer(FluidType type, long amount) { } + public default long getTotalFluidForSend(FluidType type, int pressure) { return 0; } + public default void removeFluidForTransfer(FluidType type, int pressure, long amount) { } public default void subscribeToAllAround(FluidType type, TileEntity te) { subscribeToAllAround(type, te.getWorldObj(), te.xCoord, te.yCoord, te.zCoord); diff --git a/src/main/java/api/hbm/fluid/IPipeNet.java b/src/main/java/api/hbm/fluid/IPipeNet.java index 442ec3a33..45e67b017 100644 --- a/src/main/java/api/hbm/fluid/IPipeNet.java +++ b/src/main/java/api/hbm/fluid/IPipeNet.java @@ -24,7 +24,7 @@ public interface IPipeNet { public boolean isValid(); - public long transferFluid(long fill); + public long transferFluid(long fill, int pressure); public FluidType getType(); public BigInteger getTotalTransfer(); } diff --git a/src/main/java/api/hbm/fluid/PipeNet.java b/src/main/java/api/hbm/fluid/PipeNet.java index 1b3d46f5d..cab1fd29f 100644 --- a/src/main/java/api/hbm/fluid/PipeNet.java +++ b/src/main/java/api/hbm/fluid/PipeNet.java @@ -1,9 +1,12 @@ package api.hbm.fluid; import java.math.BigInteger; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.HashSet; import java.util.List; +import java.util.TimeZone; import com.hbm.inventory.fluid.FluidType; @@ -18,6 +21,7 @@ public class PipeNet implements IPipeNet { public static List trackingInstances = null; protected BigInteger totalTransfer = BigInteger.ZERO; + public List debug = new ArrayList(); public PipeNet(FluidType type) { this.type = type; @@ -85,7 +89,7 @@ public class PipeNet implements IPipeNet { } @Override - public long transferFluid(long fill) { + public long transferFluid(long fill, int pressure) { this.subscribers.removeIf(x -> x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid() @@ -97,16 +101,18 @@ public class PipeNet implements IPipeNet { trackingInstances = new ArrayList(); trackingInstances.add(this); List subList = new ArrayList(subscribers); - return fairTransfer(subList, type, fill); + return fairTransfer(subList, type, pressure, fill); } - public static long fairTransfer(List subList, FluidType type, long fill) { + public static long fairTransfer(List subList, FluidType type, int pressure, long fill) { + + if(fill <= 0) return 0; List weight = new ArrayList(); long totalReq = 0; for(IFluidConnector con : subList) { - long req = con.getDemand(type); + long req = con.getDemand(type, pressure); weight.add(req); totalReq += req; } @@ -123,7 +129,24 @@ public class PipeNet implements IPipeNet { long given = (long) Math.floor(fraction * fill); - totalGiven += (given - con.transferFluid(type, given)); + if(given > 0) { + + totalGiven += (given - con.transferFluid(type, pressure, given)); + + if(con instanceof TileEntity) { + TileEntity tile = (TileEntity) con; + tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile); + } + + if(trackingInstances != null) { + for(int j = 0; j < trackingInstances.size(); j++) { + PipeNet net = trackingInstances.get(j); + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SSS"); + sdf.setTimeZone(TimeZone.getTimeZone("UTC")); + log(net, sdf.format(new Date(System.currentTimeMillis())) + " Sending " + given + "mB to " + conToString(con)); + } + } + } } if(trackingInstances != null) { @@ -162,4 +185,22 @@ public class PipeNet implements IPipeNet { public BigInteger getTotalTransfer() { return this.totalTransfer; } + + public static void log(PipeNet net, String msg) { + net.debug.add(msg); + + while(net.debug.size() > 50) { + net.debug.remove(0); + } + } + + public static String conToString(IFluidConnector con) { + + if(con instanceof TileEntity) { + TileEntity tile = (TileEntity) con; + return tile.getClass().getSimpleName() + " @ " + tile.xCoord + "/" + tile.yCoord + "/" + tile.zCoord; + } + + return "" + con; + } } diff --git a/src/main/java/com/hbm/blocks/BlockDummyable.java b/src/main/java/com/hbm/blocks/BlockDummyable.java index 3c1869089..4d7b35b2e 100644 --- a/src/main/java/com/hbm/blocks/BlockDummyable.java +++ b/src/main/java/com/hbm/blocks/BlockDummyable.java @@ -490,12 +490,10 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl int[] pos = this.findCore(world, x, y, z); if(pos == null) return; - TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); - if(tile == null) return; - x = tile.xCoord; - y = tile.yCoord; - z = tile.zCoord; + x = pos[0]; + y = pos[1]; + z = pos[2]; EntityPlayer player = event.player; float interp = event.partialTicks; @@ -503,9 +501,11 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) interp; double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp; float exp = 0.002F; + + int meta = world.getBlockMetadata(x, y, z); ICustomBlockHighlight.setup(); - for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, ForgeDirection.getOrientation(tile.getBlockMetadata() - offset).getRotation(ForgeDirection.UP)).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1); + for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, ForgeDirection.getOrientation(meta - offset).getRotation(ForgeDirection.UP)).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1); ICustomBlockHighlight.cleanup(); } } diff --git a/src/main/java/com/hbm/blocks/BlockEnumMulti.java b/src/main/java/com/hbm/blocks/BlockEnumMulti.java index 5ee6e4660..d581bfd2d 100644 --- a/src/main/java/com/hbm/blocks/BlockEnumMulti.java +++ b/src/main/java/com/hbm/blocks/BlockEnumMulti.java @@ -1,5 +1,7 @@ package com.hbm.blocks; +import java.util.Locale; + import com.hbm.util.EnumUtil; import cpw.mods.fml.relauncher.Side; @@ -34,7 +36,7 @@ public class BlockEnumMulti extends BlockMulti { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase(Locale.US)); } } else { this.blockIcon = reg.registerIcon(this.getTextureName()); @@ -45,7 +47,7 @@ public class BlockEnumMulti extends BlockMulti { if(this.multiName) { Enum num = EnumUtil.grabEnumSafely(this.theEnum, stack.getItemDamage()); - return super.getUnlocalizedName() + "." + num.name().toLowerCase(); + return super.getUnlocalizedName() + "." + num.name().toLowerCase(Locale.US); } return this.getUnlocalizedName(); diff --git a/src/main/java/com/hbm/blocks/BlockEnums.java b/src/main/java/com/hbm/blocks/BlockEnums.java index 99d7edadf..6bb64b079 100644 --- a/src/main/java/com/hbm/blocks/BlockEnums.java +++ b/src/main/java/com/hbm/blocks/BlockEnums.java @@ -7,13 +7,40 @@ public class BlockEnums { ASBESTOS, HEMATITE, MALACHITE, - LIMESTONE + LIMESTONE, + BAUXITE + } + + public static enum EnumBiomeType { + DESERT, + WOODLAND } public static enum EnumStalagmiteType { SULFUR, ASBESTOS } + + public static enum EnumCMMaterials { + STEEL, + ALLOY, + DESH, + TCALLOY + } + + public static enum EnumCMEngines { + STANDARD, + DESH, + BISMUTH + } + + public static enum EnumCMCircuit { + ALUMINIUM, + COPPER, + RED_COPPER, + GOLD, + SCHRABIDIUM + } /** DECO / STRUCTURE ENUMS */ //i apologize in advance diff --git a/src/main/java/com/hbm/blocks/BlockFallingNT.java b/src/main/java/com/hbm/blocks/BlockFallingNT.java new file mode 100644 index 000000000..f880d7268 --- /dev/null +++ b/src/main/java/com/hbm/blocks/BlockFallingNT.java @@ -0,0 +1,96 @@ +package com.hbm.blocks; + +import java.util.Random; + +import com.hbm.entity.item.EntityFallingBlockNT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; + +public class BlockFallingNT extends Block { + + public static boolean fallInstantly; + + public BlockFallingNT() { + super(Material.sand); + this.setCreativeTab(CreativeTabs.tabBlock); + } + + public BlockFallingNT(Material mat) { + super(mat); + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) { + world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); + } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + if(!world.isRemote) { + this.fall(world, x, y, z); + } + } + + protected void fall(World world, int x, int y, int z) { + + if(canFallThrough(world, x, y - 1, z) && y >= 0) { + byte range = 32; + + if(!fallInstantly && world.checkChunksExist(x - range, y - range, z - range, x + range, y + range, z + range)) { + if(!world.isRemote) { + EntityFallingBlockNT entityfallingblock = new EntityFallingBlockNT(world, x + 0.5D, y + 0.5D, z + 0.5D, this, world.getBlockMetadata(x, y, z)); + this.modifyFallingBlock(entityfallingblock); + world.spawnEntityInWorld(entityfallingblock); + } + } else { + world.setBlockToAir(x, y, z); + + while(canFallThrough(world, x, y - 1, z) && y > 0) { + --y; + } + + if(y > 0) { + world.setBlock(x, y, z, this); + } + } + } + } + + protected void modifyFallingBlock(EntityFallingBlockNT falling) { } + + @Override + public int tickRate(World world) { + return 2; + } + + public static boolean canFallThrough(World world, int x, int y, int z) { + Block block = world.getBlock(x, y, z); + + if(block.isAir(world, x, y, z)) { + return true; + } else if(block == Blocks.fire) { + return true; + } else { + Material material = block.getMaterial(); + return material == Material.water ? true : material == Material.lava; + } + } + + public void onLand(World world, int x, int y, int z, int meta) { } + + @SideOnly(Side.CLIENT) public boolean shouldOverrideRenderer() { return false; } + @SideOnly(Side.CLIENT) public void overrideRenderer(EntityFallingBlockNT falling, RenderBlocks renderBlocks, Tessellator tessellator) { } +} diff --git a/src/main/java/com/hbm/blocks/BlockRemap.java b/src/main/java/com/hbm/blocks/BlockRemap.java new file mode 100644 index 000000000..c9d66894f --- /dev/null +++ b/src/main/java/com/hbm/blocks/BlockRemap.java @@ -0,0 +1,41 @@ +package com.hbm.blocks; + +import java.util.ArrayList; +import java.util.Random; + +import com.hbm.lib.RefStrings; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class BlockRemap extends Block implements ILookOverlay { + + public Block remapBlock; + public int remapMeta; + + protected BlockRemap(Block block, int meta) { + super(Material.tnt); + this.remapBlock = block; + this.remapMeta = meta; + this.setTickRandomly(true); + } + + @Override + public Block setBlockName(String name) { + super.setBlockName(name); + this.setBlockTextureName(RefStrings.MODID + ":" + name); + return this; + } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + world.setBlock(x, y, z, this.remapBlock, this.remapMeta, 2); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + ILookOverlay.printGeneric(event, "Compatibility block, will convert on update tick.", 0xffff00, 0x404000, new ArrayList()); + } +} diff --git a/src/main/java/com/hbm/blocks/IAnalyzable.java b/src/main/java/com/hbm/blocks/IAnalyzable.java new file mode 100644 index 000000000..e4e76a5ee --- /dev/null +++ b/src/main/java/com/hbm/blocks/IAnalyzable.java @@ -0,0 +1,10 @@ +package com.hbm.blocks; + +import java.util.List; + +import net.minecraft.world.World; + +public interface IAnalyzable { + + public List getDebugInfo(World world, int x, int y, int z); +} diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 3b4ee27cf..7196b59c5 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1,33 +1,39 @@ package com.hbm.blocks; -import com.hbm.blocks.generic.*; -import com.hbm.blocks.generic.BlockHazard.ExtDisplayEffect; -import com.hbm.blocks.generic.BlockMotherOfAllOres.ItemRandomOreBlock; import com.hbm.blocks.BlockEnums.*; import com.hbm.blocks.bomb.*; import com.hbm.blocks.fluid.*; import com.hbm.blocks.gas.*; +import com.hbm.blocks.generic.*; +import com.hbm.blocks.generic.BlockHazard.ExtDisplayEffect; +import com.hbm.blocks.generic.BlockMotherOfAllOres.ItemRandomOreBlock; import com.hbm.blocks.machine.*; import com.hbm.blocks.machine.pile.*; import com.hbm.blocks.machine.rbmk.*; import com.hbm.blocks.network.*; -import com.hbm.blocks.siege.*; +import com.hbm.blocks.rail.*; +import com.hbm.blocks.siege.SiegeCircuit; +import com.hbm.blocks.siege.SiegeHole; +import com.hbm.blocks.siege.SiegeInternal; +import com.hbm.blocks.siege.SiegeShield; import com.hbm.blocks.test.*; import com.hbm.blocks.turret.*; import com.hbm.items.block.*; -import com.hbm.items.bomb.*; +import com.hbm.items.bomb.ItemPrototypeBlock; import com.hbm.items.special.ItemOreBlock; import com.hbm.lib.ModDamageSource; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.DoorDecl; import com.hbm.tileentity.machine.storage.TileEntityFileCabinet; - import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.block.BlockFalling; -import net.minecraft.block.material.*; +import net.minecraft.block.material.MapColor; +import net.minecraft.block.material.Material; +import net.minecraft.block.material.MaterialLiquid; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemBlock; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; @@ -81,8 +87,6 @@ public class ModBlocks { public static Block ore_bedrock; public static Block ore_volcano; - public static Block ore_bedrock_coltan; - public static Block ore_nether_coal; public static Block ore_nether_smoldering; public static Block ore_nether_uranium; @@ -136,6 +140,7 @@ public class ModBlocks { public static Block stone_resource; public static Block stalagmite; public static Block stalactite; + public static Block stone_biome; public static Block stone_deep_cobble; public static Block depth_brick; @@ -201,8 +206,11 @@ public class ModBlocks { public static Block block_aluminium; public static Block block_fluorite; public static Block block_steel; + public static Block block_tcalloy; + public static Block block_cdalloy; public static Block block_lead; public static Block block_bismuth; + public static Block block_cadmium; public static Block block_coltan; public static Block block_tantalium; public static Block block_niobium; @@ -308,10 +316,13 @@ public class ModBlocks { public static Block reinforced_brick; public static Block reinforced_ducrete; public static Block reinforced_glass; + public static Block reinforced_glass_pane; public static Block reinforced_light; public static Block reinforced_sand; public static Block reinforced_lamp_off; public static Block reinforced_lamp_on; + public static Block reinforced_laminate; + public static Block reinforced_laminate_pane; public static Block lamp_tritium_green_off; public static Block lamp_tritium_green_on; @@ -322,9 +333,13 @@ public class ModBlocks { public static Block lamp_uv_on; public static Block lamp_demon; + public static Block lantern; + public static Block lantern_behemoth; + public static Block reinforced_stone; public static Block concrete_smooth; public static Block concrete_colored; + public static Block concrete_colored_ext; public static Block concrete; public static Block concrete_asbestos; public static Block concrete_super; @@ -480,11 +495,13 @@ public class ModBlocks { public static Block glass_ash; public static Block glass_quartz; - public static Block mush; public static Block mush_block; public static Block mush_block_stem; + public static Block glyphid_base; + public static Block glyphid_spawner; + public static Block plant_flower; public static Block plant_tall; public static Block plant_dead; @@ -586,9 +603,19 @@ public class ModBlocks { public static Block vault_door; public static Block blast_door; + public static Block sliding_blast_door; public static Block fire_door; public static Block transition_seal; + // 1.12.2 Doors + public static Block secure_access_door; + public static Block large_vehicle_door; + public static Block qe_containment; + public static Block qe_sliding_door; + public static Block round_airlock_door; + public static Block sliding_seal_door; + public static Block water_door; + public static Block door_metal; public static Block door_office; public static Block door_bunker; @@ -619,11 +646,12 @@ public class ModBlocks { public static Block sat_dock; public static Block soyuz_capsule; - + public static Block crate_iron; public static Block crate_steel; public static Block crate_desh; public static Block crate_tungsten; + public static Block crate_template; public static Block safe; public static Block mass_storage; @@ -640,27 +668,35 @@ public class ModBlocks { public static Block nuke_n45; public static Block nuke_fstbmb; public static Block bomb_multi; + + public static Block pump_steam; + public static Block pump_electric; public static Block heater_firebox; public static Block heater_oven; public static Block heater_oilburner; public static Block heater_electric; public static Block heater_heatex; + public static Block machine_ashpit; public static Block furnace_iron; public static Block furnace_steel; public static Block furnace_combination; public static Block machine_stirling; public static Block machine_stirling_steel; + public static Block machine_stirling_creative; public static Block machine_sawmill; public static Block machine_crucible; public static Block machine_boiler; + public static Block machine_industrial_boiler; public static Block foundry_mold; public static Block foundry_basin; public static Block foundry_channel; public static Block foundry_tank; public static Block foundry_outlet; + public static Block foundry_slagtap; + public static Block slag; public static Block machine_difurnace_off; public static Block machine_difurnace_on; @@ -692,8 +728,9 @@ public class ModBlocks { public static Block machine_generator; public static Block machine_industrial_generator; - + public static Block machine_cyclotron; + public static Block machine_exposure_chamber; public static Block hadron_plating; public static Block hadron_plating_blue; @@ -721,6 +758,7 @@ public class ModBlocks { public static Block hadron_analysis_glass; public static Block hadron_access; public static Block hadron_core; + public static Block hadron_cooler; public static Block machine_electric_furnace_off; public static Block machine_electric_furnace_on; @@ -739,14 +777,23 @@ public class ModBlocks { public static Block machine_dineutronium_battery; public static Block machine_fensu; public static final int guiID_machine_fensu = 99; + + public static Block capacitor_bus; + public static Block capacitor_copper; + public static Block capacitor_gold; + public static Block capacitor_niobium; + public static Block capacitor_tantalium; + public static Block capacitor_schrabidate; - public static Block machine_coal_off; - public static Block machine_coal_on; + @Deprecated public static Block machine_coal_off; + @Deprecated public static Block machine_coal_on; + public static Block machine_wood_burner; public static Block red_wire_coated; public static Block red_cable; public static Block red_cable_classic; public static Block red_cable_paintable; + public static Block red_cable_gauge; public static Block red_connector; public static Block red_pylon; public static Block red_pylon_large; @@ -755,20 +802,22 @@ public class ModBlocks { public static Block cable_detector; public static Block cable_diode; public static Block machine_detector; - public static Block oil_duct_solid; - public static Block oil_duct; - public static Block gas_duct_solid; - public static Block gas_duct; public static Block fluid_duct; public static Block fluid_duct_solid; public static Block fluid_duct_neo; public static Block fluid_duct_box; public static Block fluid_duct_paintable; public static Block fluid_duct_gauge; + public static Block fluid_duct_exhaust; + public static Block fluid_valve; + public static Block fluid_switch; public static Block radio_torch_sender; public static Block radio_torch_receiver; + public static Block radio_torch_counter; + public static Block radio_telex; public static Block conveyor; + public static Block conveyor_express; //public static Block conveyor_classic; public static Block conveyor_double; public static Block conveyor_triple; @@ -781,8 +830,17 @@ public class ModBlocks { public static Block crane_boxer; public static Block crane_unboxer; public static Block crane_splitter; + + public static Block drone_waypoint; + public static Block drone_crate; + public static Block drone_waypoint_request; + public static Block drone_dock; + public static Block drone_crate_provider; + public static Block drone_crate_requester; public static Block fan; + + public static Block piston_inserter; public static Block chain; @@ -833,13 +891,33 @@ public class ModBlocks { @Deprecated public static Block factory_advanced_furnace; @Deprecated public static Block factory_advanced_conductor; - public static Block reactor_element; - public static Block reactor_control; - public static Block reactor_hatch; - public static Block reactor_ejector; - public static Block reactor_inserter; - public static Block reactor_conductor; - public static Block reactor_computer; + public static Block cm_block; + public static Block cm_sheet; + public static Block cm_engine; + public static Block cm_tank; + public static Block cm_circuit; + public static Block cm_port; + public static Block custom_machine; + public static Block cm_anchor; + + public static Block pwr_fuel; + public static Block pwr_control; + public static Block pwr_channel; + public static Block pwr_heatex; + public static Block pwr_neutron_source; + public static Block pwr_reflector; + public static Block pwr_casing; + public static Block pwr_port; + public static Block pwr_controller; + public static Block pwr_block; + + @Deprecated public static Block reactor_element; + @Deprecated public static Block reactor_control; + @Deprecated public static Block reactor_hatch; + @Deprecated public static Block reactor_ejector; + @Deprecated public static Block reactor_inserter; + @Deprecated public static Block reactor_conductor; + @Deprecated public static Block reactor_computer; public static Block fusion_conductor; public static Block fusion_center; @@ -907,7 +985,6 @@ public class ModBlocks { public static Block field_disturber; public static Block machine_rtg_grey; - public static Block machine_rtg_cyan; public static Block machine_amgen; public static Block machine_geo; public static Block machine_minirtg; @@ -921,6 +998,8 @@ public class ModBlocks { public static Block machine_fracking_tower; public static Block machine_flare; + public static Block chimney_brick; + public static Block chimney_industrial; public static Block machine_refinery; public static Block machine_vacuum_distill; @@ -945,11 +1024,13 @@ public class ModBlocks { public static Block machine_liquefactor; public static Block machine_solidifier; + public static Block machine_compressor; public static Block machine_chungus; public static Block machine_condenser; public static Block machine_tower_small; public static Block machine_tower_large; + public static Block machine_condenser_powered; public static Block machine_electrolyser; @@ -967,6 +1048,7 @@ public class ModBlocks { public static Block machine_assembler; public static Block machine_assemfac; + public static Block machine_arc_welder; public static Block machine_chemplant; public static Block machine_chemfac; @@ -985,8 +1067,9 @@ public class ModBlocks { public static Block launch_table; public static Block soyuz_launcher; - + public static Block machine_radar; + public static Block radar_screen; public static Block machine_turbofan; public static Block machine_turbinegas; @@ -996,6 +1079,7 @@ public class ModBlocks { public static Block press_preheater; public static Block machine_press; public static Block machine_epress; + public static Block machine_conveyor_press; public static Block machine_siren; @@ -1084,6 +1168,13 @@ public class ModBlocks { public static Block rail_narrow; public static Block rail_highspeed; public static Block rail_booster; + + public static Block rail_narrow_straight; + public static Block rail_narrow_curve; + public static Block rail_large_straight; + public static Block rail_large_curve; + public static Block rail_large_ramp; + public static Block rail_large_buffer; public static Block statue_elb; public static Block statue_elb_g; @@ -1167,8 +1258,6 @@ public class ModBlocks { public static Block dummy_block_drill; public static Block dummy_port_drill; - public static Block dummy_block_assembler; - public static Block dummy_port_assembler; public static Block dummy_block_ams_limiter; public static Block dummy_port_ams_limiter; public static Block dummy_block_ams_emitter; @@ -1197,19 +1286,6 @@ public class ModBlocks { public static Material materialGas = new MaterialGas(); - public static Block.SoundType soundTypeGrate = new ModSoundType("metalBlock", 0.5F, 1.0F) { - - @Override - public String func_150496_b() { - return Block.soundTypeMetal.func_150496_b(); - } - - @Override - public String getBreakSound() { - return "dig.stone"; - } - }; - private static void initializeBlock() { test_render = new TestRender(Material.rock).setBlockName("test_render").setCreativeTab(null); @@ -1313,6 +1389,7 @@ public class ModBlocks { stone_resource = new BlockResourceStone().setBlockName("stone_resource").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); stalagmite = new BlockStalagmite().setBlockName("stalagmite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); stalactite = new BlockStalagmite().setBlockName("stalactite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); + stone_biome = new BlockBiomeStone().setBlockName("stone_biome").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); stone_deep_cobble = new BlockDeepCobble().setBlockName("stone_deep_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F); basalt = new BlockGeneric(Material.rock).setBlockName("basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt"); @@ -1336,8 +1413,6 @@ public class ModBlocks { ore_cinnebar = new BlockOre(Material.rock).setBlockName("ore_cinnebar").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cinnebar"); ore_coltan = new BlockOre(Material.rock).setBlockName("ore_coltan").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_coltan"); - ore_bedrock_coltan = new BlockBedrockOre().setBlockName("ore_bedrock_coltan").setCreativeTab(null).setBlockUnbreakable().setResistance(1_000_000).setBlockTextureName(RefStrings.MODID + ":ore_bedrock_coltan"); - ore_oil = new BlockOre(Material.rock).setBlockName("ore_oil").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil"); ore_oil_empty = new BlockGeneric(Material.rock).setBlockName("ore_oil_empty").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil_empty"); ore_oil_sand = new BlockFalling(Material.sand).setBlockName("ore_oil_sand").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeSand).setHardness(0.5F).setResistance(1.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil_sand_alt"); @@ -1350,37 +1425,40 @@ public class ModBlocks { crystal_robust = new BlockCrystal(Material.glass).setBlockName("crystal_robust").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":crystal_robust"); crystal_trixite = new BlockCrystal(Material.glass).setBlockName("crystal_trixite").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(1.0F).setBlockTextureName(RefStrings.MODID + ":crystal_trixite"); - block_uranium = new BlockHazard().makeBeaconable().setBlockName("block_uranium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_uranium"); - block_u233 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_u233").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_u233"); - block_u235 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_u235").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_u235"); - block_u238 = new BlockHazard().makeBeaconable().setBlockName("block_u238").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_u238"); - block_uranium_fuel = new BlockHazard().makeBeaconable().setBlockName("block_uranium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_uranium_fuel"); - block_thorium = new BlockHazard().makeBeaconable().setBlockName("block_thorium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_thorium"); - block_thorium_fuel = new BlockHazard().makeBeaconable().setBlockName("block_thorium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_thorium_fuel"); - block_neptunium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_neptunium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_neptunium"); - block_polonium = new BlockHotHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_polonium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_polonium"); - block_mox_fuel = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_mox_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_mox_fuel"); - block_plutonium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_plutonium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_plutonium"); - block_pu238 = new BlockHotHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu238").setCreativeTab(MainRegistry.blockTab).setLightLevel(5F/15F).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_pu238"); - block_pu239 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu239").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_pu239"); - block_pu240 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu240").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_pu240"); - block_pu_mix = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu_mix").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_pu_mix"); - block_plutonium_fuel = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_plutonium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_plutonium_fuel"); - block_titanium = new BlockBeaconable(Material.iron).setBlockName("block_titanium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_titanium"); + block_uranium = new BlockHazard().makeBeaconable().setBlockName("block_uranium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_uranium"); + block_u233 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_u233").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_u233"); + block_u235 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_u235").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_u235"); + block_u238 = new BlockHazard().makeBeaconable().setBlockName("block_u238").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_u238"); + block_uranium_fuel = new BlockHazard().makeBeaconable().setBlockName("block_uranium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_uranium_fuel"); + block_thorium = new BlockHazard().makeBeaconable().setBlockName("block_thorium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_thorium"); + block_thorium_fuel = new BlockHazard().makeBeaconable().setBlockName("block_thorium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_thorium_fuel"); + block_neptunium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_neptunium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":block_neptunium"); + block_polonium = new BlockHotHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_polonium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_polonium"); + block_mox_fuel = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_mox_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_mox_fuel"); + block_plutonium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_plutonium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_plutonium"); + block_pu238 = new BlockHotHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu238").setCreativeTab(MainRegistry.blockTab).setLightLevel(5F/15F).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_pu238"); + block_pu239 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu239").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_pu239"); + block_pu240 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu240").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_pu240"); + block_pu_mix = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu_mix").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_pu_mix"); + block_plutonium_fuel = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_plutonium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_plutonium_fuel"); + block_titanium = new BlockBeaconable(Material.iron).setBlockName("block_titanium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_titanium"); block_sulfur = new BlockBeaconable(Material.iron).setBlockName("block_sulfur").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_sulfur"); block_niter = new BlockBeaconable(Material.iron).setBlockName("block_niter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_niter"); - block_niter_reinforced = new BlockBeaconable(Material.iron).setBlockName("block_niter_reinforced").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_niter_reinforced"); - block_copper = new BlockBeaconable(Material.iron).setBlockName("block_copper").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_copper"); - block_red_copper = new BlockBeaconable(Material.iron).setBlockName("block_red_copper").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_red_copper"); - block_tungsten = new BlockBeaconable(Material.iron).setBlockName("block_tungsten").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_tungsten"); - block_aluminium = new BlockBeaconable(Material.iron).setBlockName("block_aluminium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); + block_niter_reinforced = new BlockBeaconable(Material.iron).setBlockName("block_niter_reinforced").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":block_niter_reinforced"); + block_copper = new BlockBeaconable(Material.iron).setBlockName("block_copper").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_copper"); + block_red_copper = new BlockBeaconable(Material.iron).setBlockName("block_red_copper").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(25.0F).setBlockTextureName(RefStrings.MODID + ":block_red_copper"); + block_tungsten = new BlockBeaconable(Material.iron).setBlockName("block_tungsten").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_tungsten"); + block_aluminium = new BlockBeaconable(Material.iron).setBlockName("block_aluminium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); block_fluorite = new BlockBeaconable(Material.iron).setBlockName("block_fluorite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_fluorite"); - block_steel = new BlockBeaconable(Material.iron).setBlockName("block_steel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); - block_lead = new BlockBeaconable(Material.iron).setBlockName("block_lead").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_lead"); - block_bismuth = new BlockBeaconable(Material.iron).setBlockName("block_bismuth").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_bismuth"); - block_coltan = new BlockBeaconable(Material.iron).setBlockName("block_coltan").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_coltan"); - block_tantalium = new BlockBeaconable(Material.iron).setBlockName("block_tantalium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); - block_niobium = new BlockBeaconable(Material.iron).setBlockName("block_niobium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F); + block_steel = new BlockBeaconable(Material.iron).setBlockName("block_steel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); + block_tcalloy = new BlockBeaconable(Material.iron).setBlockName("block_tcalloy").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(70.0F).setBlockTextureName(RefStrings.MODID + ":block_tcalloy"); + block_cdalloy = new BlockBeaconable(Material.iron).setBlockName("block_cdalloy").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(70.0F).setBlockTextureName(RefStrings.MODID + ":block_cdalloy"); + block_lead = new BlockBeaconable(Material.iron).setBlockName("block_lead").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_lead"); + block_bismuth = new BlockBeaconable(Material.iron).setBlockName("block_bismuth").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(90.0F).setBlockTextureName(RefStrings.MODID + ":block_bismuth"); + block_cadmium = new BlockBeaconable(Material.iron).setBlockName("block_cadmium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(90.0F).setBlockTextureName(RefStrings.MODID + ":block_cadmium"); + block_coltan = new BlockBeaconable(Material.iron).setBlockName("block_coltan").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_coltan"); + block_tantalium = new BlockBeaconable(Material.iron).setBlockName("block_tantalium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); + block_niobium = new BlockBeaconable(Material.iron).setBlockName("block_niobium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F); block_trinitite = new BlockHazard().makeBeaconable().setBlockName("block_trinitite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_trinitite"); block_waste = new BlockNuclearWaste().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_waste").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_waste"); block_waste_painted = new BlockNuclearWaste().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_waste_painted").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_waste_painted"); @@ -1390,8 +1468,8 @@ public class ModBlocks { block_corium_cobble = new BlockOutgas(Material.iron, true, 1, true, true).setBlockName("block_corium_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(100.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_corium_cobble"); block_scrap = new BlockFalling(Material.sand).setBlockName("block_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(2.5F).setResistance(5.0F).setStepSound(Block.soundTypeGravel).setBlockTextureName(RefStrings.MODID + ":block_scrap"); block_electrical_scrap = new BlockFalling(Material.iron).setBlockName("block_electrical_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(2.5F).setResistance(5.0F).setStepSound(Block.soundTypeMetal).setBlockTextureName(RefStrings.MODID + ":electrical_scrap_alt2"); - block_beryllium = new BlockBeaconable(Material.iron).setBlockName("block_beryllium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_beryllium"); - block_schraranium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_schraranium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schraranium"); + block_beryllium = new BlockBeaconable(Material.iron).setBlockName("block_beryllium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_beryllium"); + block_schraranium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_schraranium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(250.0F).setBlockTextureName(RefStrings.MODID + ":block_schraranium"); block_schrabidium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_schrabidium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidium"); block_schrabidate = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_schrabidate").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidate"); block_solinium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_solinium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_solinium"); @@ -1400,22 +1478,22 @@ public class ModBlocks { block_dineutronium = new BlockBeaconable(Material.iron).setBlockName("block_dineutronium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":block_dineutronium"); block_schrabidium_cluster = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":block_schrabidium_cluster_top").setBlockName("block_schrabidium_cluster").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidium_cluster_side"); block_euphemium_cluster = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":block_euphemium_cluster_top").setBlockName("block_euphemium_cluster").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":block_euphemium_cluster_side"); - block_advanced_alloy = new BlockBeaconable(Material.iron).setBlockName("block_advanced_alloy").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_advanced_alloy"); - block_magnetized_tungsten = new BlockBeaconable(Material.iron).setBlockName("block_magnetized_tungsten").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(35.0F).setBlockTextureName(RefStrings.MODID + ":block_magnetized_tungsten"); + block_advanced_alloy = new BlockBeaconable(Material.iron).setBlockName("block_advanced_alloy").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":block_advanced_alloy"); + block_magnetized_tungsten = new BlockBeaconable(Material.iron).setBlockName("block_magnetized_tungsten").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(75.0F).setBlockTextureName(RefStrings.MODID + ":block_magnetized_tungsten"); block_combine_steel = new BlockBeaconable(Material.iron).setBlockName("block_combine_steel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_combine_steel"); - block_desh = new BlockBeaconable(Material.iron).setBlockName("block_desh").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_desh"); - block_dura_steel = new BlockBeaconable(Material.iron).setBlockName("block_dura_steel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_dura_steel"); - block_starmetal = new BlockBeaconable(Material.iron).setBlockName("block_starmetal").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_starmetal"); + block_desh = new BlockBeaconable(Material.iron).setBlockName("block_desh").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":block_desh"); + block_dura_steel = new BlockBeaconable(Material.iron).setBlockName("block_dura_steel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":block_dura_steel"); + block_starmetal = new BlockBeaconable(Material.iron).setBlockName("block_starmetal").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(400.0F).setBlockTextureName(RefStrings.MODID + ":block_starmetal"); block_polymer = new BlockBeaconable(Material.rock).setBlockName("block_polymer").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypePiston).setHardness(3.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_polymer"); - block_bakelite = new BlockBeaconable(Material.rock).setBlockName("block_bakelite").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypePiston).setHardness(3.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_bakelite"); - block_rubber = new BlockBeaconable(Material.rock).setBlockName("block_rubber").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypePiston).setHardness(3.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_rubber"); - block_yellowcake = new BlockHazardFalling().makeBeaconable().setBlockName("block_yellowcake").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeSand).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_yellowcake"); + block_bakelite = new BlockBeaconable(Material.rock).setBlockName("block_bakelite").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypePiston).setHardness(3.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":block_bakelite"); + block_rubber = new BlockBeaconable(Material.rock).setBlockName("block_rubber").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypePiston).setHardness(3.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_rubber"); + block_yellowcake = new BlockHazardFalling().makeBeaconable().setBlockName("block_yellowcake").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeSand).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_yellowcake"); block_insulator = new BlockRotatablePillar(Material.cloth, RefStrings.MODID + ":block_insulator_top").setBlockName("block_insulator").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_insulator_side"); - block_fiberglass = new BlockRotatablePillar(Material.cloth, RefStrings.MODID + ":block_fiberglass_top").setBlockName("block_fiberglass").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_fiberglass_side"); - block_asbestos = new BlockOutgas(Material.cloth, true, 5, true).setBlockName("block_asbestos").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_asbestos"); - block_cobalt = new BlockBeaconable(Material.iron).setBlockName("block_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_cobalt"); + block_fiberglass = new BlockRotatablePillar(Material.cloth, RefStrings.MODID + ":block_fiberglass_top").setBlockName("block_fiberglass").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_fiberglass_side"); + block_asbestos = new BlockOutgas(Material.cloth, true, 5, true).setBlockName("block_asbestos").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_asbestos"); + block_cobalt = new BlockBeaconable(Material.iron).setBlockName("block_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_cobalt"); block_lithium = new BlockLithium(Material.iron).setBlockName("block_lithium").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_lithium"); - block_zirconium = new BlockBeaconable(Material.iron).setBlockName("block_zirconium").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_zirconium"); + block_zirconium = new BlockBeaconable(Material.iron).setBlockName("block_zirconium").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_zirconium"); block_white_phosphorus = new BlockHazard(Material.rock).makeBeaconable().setBlockName("block_white_phosphorus").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_white_phosphorus"); block_red_phosphorus = new BlockHazardFalling().makeBeaconable().setStepSound(Block.soundTypeSand).setBlockName("block_red_phosphorus").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_red_phosphorus"); block_fallout = new BlockHazardFalling().setStepSound(Block.soundTypeGravel).setBlockName("block_fallout").setCreativeTab(MainRegistry.blockTab).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":ash"); @@ -1437,8 +1515,8 @@ public class ModBlocks { block_tritium = new BlockRotatablePillar(Material.glass, RefStrings.MODID + ":block_tritium_top").setBlockName("block_tritium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGlass).setHardness(3.0F).setResistance(2.0F).setBlockTextureName(RefStrings.MODID + ":block_tritium_side"); block_semtex = new BlockPlasticExplosive(Material.tnt).setBlockName("block_semtex").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(2.0F).setBlockTextureName(RefStrings.MODID + ":block_semtex"); block_c4 = new BlockPlasticExplosive(Material.tnt).setBlockName("block_c4").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(2.0F).setBlockTextureName(RefStrings.MODID + ":block_c4"); - block_smore = new BlockPillar(Material.rock, RefStrings.MODID + ":block_smore_top").setBlockName("block_smore").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":block_smore_side"); - block_slag = new BlockBeaconable(Material.iron).setBlockName("block_slag").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_slag"); + block_smore = new BlockPillar(Material.rock, RefStrings.MODID + ":block_smore_top").setBlockName("block_smore").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_smore_side"); + block_slag = new BlockSlag(Material.rock).setBlockName("block_slag").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeStone).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_slag"); block_australium = new BlockBeaconable(Material.iron).setBlockName("block_australium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_australium"); block_weidanium = new BlockBeaconable(Material.iron).setBlockName("block_weidanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_weidanium"); @@ -1464,28 +1542,31 @@ public class ModBlocks { deco_lead = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_lead"); deco_beryllium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_beryllium"); deco_asbestos = new BlockOutgas(Material.cloth, true, 5, true).noFortune().setBlockName("deco_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_asbestos"); - deco_rbmk = new BlockGeneric(Material.iron).setBlockName("deco_rbmk").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_side"); - deco_rbmk_smooth = new BlockGeneric(Material.iron).setBlockName("deco_rbmk_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_top"); + deco_rbmk = new BlockGeneric(Material.iron).setBlockName("deco_rbmk").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_side"); + deco_rbmk_smooth = new BlockGeneric(Material.iron).setBlockName("deco_rbmk_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_top"); deco_emitter = new BlockEmitter().setBlockName("deco_emitter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":emitter"); part_emitter = new PartEmitter().setBlockName("part_emitter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":part_top"); deco_loot = new BlockLoot().setBlockName("deco_loot").setCreativeTab(null).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); bobblehead = new BlockBobble().setBlockName("bobblehead").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); snowglobe = new BlockSnowglobe().setBlockName("snowglobe").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":glass_boron"); - hazmat = new BlockGeneric(Material.cloth).setBlockName("hazmat").setStepSound(Block.soundTypeCloth).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":hazmat"); + hazmat = new BlockGeneric(Material.cloth).setBlockName("hazmat").setStepSound(Block.soundTypeCloth).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":hazmat"); - gravel_obsidian = new BlockFalling(Material.iron).setBlockName("gravel_obsidian").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGravel).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":gravel_obsidian"); + gravel_obsidian = new BlockFalling(Material.iron).setBlockName("gravel_obsidian").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGravel).setHardness(5.0F).setResistance(240.0F).setBlockTextureName(RefStrings.MODID + ":gravel_obsidian"); gravel_diamond = new BlockFalling(Material.sand).setBlockName("gravel_diamond").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGravel).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":gravel_diamond"); - asphalt = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":asphalt"); - asphalt_light = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":asphalt_light"); - - reinforced_brick = new BlockGeneric(Material.rock).setBlockName("reinforced_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(8000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_brick"); - reinforced_glass = new BlockNTMGlassCT(0, RefStrings.MODID + ":reinforced_glass", Material.rock).setBlockName("reinforced_glass").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(15.0F).setResistance(200.0F); - reinforced_light = new BlockGeneric(Material.rock).setBlockName("reinforced_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1.0F).setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_light"); - reinforced_sand = new BlockGeneric(Material.rock).setBlockName("reinforced_sand").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(400.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_sand"); - reinforced_lamp_off = new ReinforcedLamp(Material.rock, false).setBlockName("reinforced_lamp_off").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_lamp_off"); - reinforced_lamp_on = new ReinforcedLamp(Material.rock, true).setBlockName("reinforced_lamp_on").setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_lamp_on"); + asphalt = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":asphalt"); + asphalt_light = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":asphalt_light"); + reinforced_brick = new BlockGeneric(Material.rock).setBlockName("reinforced_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_brick"); + reinforced_glass = new BlockNTMGlassCT(0, RefStrings.MODID + ":reinforced_glass", Material.rock).setBlockName("reinforced_glass").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(2.0F).setResistance(25.0F); + reinforced_glass_pane = new BlockNTMGlassPane(0, RefStrings.MODID + ":reinforced_glass_pane", RefStrings.MODID + ":reinforced_glass_pane_edge", Material.rock, false).setBlockName("reinforced_glass_pane").setCreativeTab(MainRegistry.blockTab).setLightOpacity(1).setHardness(2.0F).setResistance(25.0F); + reinforced_light = new BlockGeneric(Material.rock).setBlockName("reinforced_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1.0F).setHardness(15.0F).setResistance(80.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_light"); + reinforced_sand = new BlockGeneric(Material.rock).setBlockName("reinforced_sand").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(40.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_sand"); + reinforced_lamp_off = new ReinforcedLamp(Material.rock, false).setBlockName("reinforced_lamp_off").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(80.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_lamp_off"); + reinforced_lamp_on = new ReinforcedLamp(Material.rock, true).setBlockName("reinforced_lamp_on").setHardness(15.0F).setResistance(80.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_lamp_on"); + reinforced_laminate = new BlockNTMGlassCT(1, RefStrings.MODID + ":reinforced_laminate", Material.rock, true).setBlockName("reinforced_laminate").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(15.0F).setResistance(300.0F); + reinforced_laminate_pane = new BlockNTMGlassPane(1, RefStrings.MODID + ":reinforced_laminate_pane", RefStrings.MODID + ":reinforced_laminate_pane_edge", Material.rock, true).setBlockName("reinforced_laminate_pane").setCreativeTab(MainRegistry.blockTab).setLightOpacity(1).setHardness(15.0F).setResistance(300.0F); + lamp_tritium_green_off = new ReinforcedLamp(Material.redstoneLight, false).setBlockName("lamp_tritium_green_off").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_green_off"); lamp_tritium_green_on = new ReinforcedLamp(Material.redstoneLight, true).setBlockName("lamp_tritium_green_on").setStepSound(Block.soundTypeGlass).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_green_on"); lamp_tritium_blue_off = new ReinforcedLamp(Material.redstoneLight, false).setBlockName("lamp_tritium_blue_off").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_blue_off"); @@ -1494,32 +1575,35 @@ public class ModBlocks { lamp_uv_off = new UVLamp(false).setBlockName("lamp_uv_off").setCreativeTab(MainRegistry.blockTab); lamp_uv_on = new UVLamp(true).setBlockName("lamp_uv_on").setCreativeTab(null); lamp_demon = new DemonLamp().setBlockName("lamp_demon").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_demon"); + lantern = new BlockLantern().setBlockName("lantern").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); + lantern_behemoth = new BlockLanternBehemoth().setBlockName("lantern_behemoth").setStepSound(Block.soundTypeMetal).setCreativeTab(null).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":block_rust"); - reinforced_stone = new BlockGeneric(Material.rock).setBlockName("reinforced_stone").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(3000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_stone"); - concrete_smooth = new BlockRadResistant(Material.rock).setBlockName("concrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); - concrete_colored = new BlockConcreteColored(Material.rock).setBlockName("concrete_colored").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); - concrete = new BlockGeneric(Material.rock).setBlockName("concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_tile"); - concrete_asbestos = new BlockGeneric(Material.rock).setBlockName("concrete_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_asbestos"); - concrete_super = new BlockUberConcrete().setBlockName("concrete_super").setCreativeTab(MainRegistry.blockTab).setHardness(150.0F).setResistance(10000.0F); + reinforced_stone = new BlockGeneric(Material.rock).setBlockName("reinforced_stone").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_stone"); + concrete_smooth = new BlockRadResistant(Material.rock).setBlockName("concrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); + concrete_colored = new BlockConcreteColored(Material.rock).setBlockName("concrete_colored").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); + concrete_colored_ext = new BlockConcreteColoredExt(Material.rock).setBlockName("concrete_colored_ext").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete_colored_ext"); + concrete = new BlockGeneric(Material.rock).setBlockName("concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete_tile"); + concrete_asbestos = new BlockGeneric(Material.rock).setBlockName("concrete_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(150.0F).setBlockTextureName(RefStrings.MODID + ":concrete_asbestos"); + concrete_super = new BlockUberConcrete().setBlockName("concrete_super").setCreativeTab(MainRegistry.blockTab).setHardness(150.0F).setResistance(1000.0F); concrete_super_broken = new BlockFalling(Material.rock).setBlockName("concrete_super_broken").setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":concrete_super_broken"); - concrete_pillar = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":concrete_pillar_top").setBlockName("concrete_pillar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_pillar_side"); - brick_concrete = new BlockGeneric(Material.rock).setBlockName("brick_concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - brick_concrete_mossy = new BlockGeneric(Material.rock).setBlockName("brick_concrete_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_mossy"); - brick_concrete_cracked = new BlockGeneric(Material.rock).setBlockName("brick_concrete_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(2000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_cracked"); - brick_concrete_broken = new BlockGeneric(Material.rock).setBlockName("brick_concrete_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(1500.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_broken"); - brick_concrete_marked = new BlockWriting(Material.rock, RefStrings.MODID + ":brick_concrete").setBlockName("brick_concrete_marked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(1500.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_marked"); - brick_obsidian = new BlockGeneric(Material.rock).setBlockName("brick_obsidian").setCreativeTab(MainRegistry.blockTab).setLightOpacity(15).setHardness(15.0F).setResistance(8000.0F).setBlockTextureName(RefStrings.MODID + ":brick_obsidian"); - brick_light = new BlockGeneric(Material.rock).setBlockName("brick_light").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_light"); - brick_compound = new BlockGeneric(Material.rock).setBlockName("brick_compound").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(10000.0F).setBlockTextureName(RefStrings.MODID + ":brick_compound"); - cmb_brick = new BlockGeneric(Material.rock).setBlockName("cmb_brick").setCreativeTab(MainRegistry.blockTab).setHardness(25.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick"); - cmb_brick_reinforced = new BlockGeneric(Material.rock).setBlockName("cmb_brick_reinforced").setCreativeTab(MainRegistry.blockTab).setHardness(25.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick_reinforced"); + concrete_pillar = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":concrete_pillar_top").setBlockName("concrete_pillar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(180.0F).setBlockTextureName(RefStrings.MODID + ":concrete_pillar_side"); + brick_concrete = new BlockGeneric(Material.rock).setBlockName("brick_concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(160.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); + brick_concrete_mossy = new BlockGeneric(Material.rock).setBlockName("brick_concrete_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(160.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_mossy"); + brick_concrete_cracked = new BlockGeneric(Material.rock).setBlockName("brick_concrete_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_cracked"); + brick_concrete_broken = new BlockGeneric(Material.rock).setBlockName("brick_concrete_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(45.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_broken"); + brick_concrete_marked = new BlockWriting(Material.rock, RefStrings.MODID + ":brick_concrete").setBlockName("brick_concrete_marked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(160.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_marked"); + brick_obsidian = new BlockGeneric(Material.rock).setBlockName("brick_obsidian").setCreativeTab(MainRegistry.blockTab).setLightOpacity(15).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":brick_obsidian"); + brick_light = new BlockGeneric(Material.rock).setBlockName("brick_light").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":brick_light"); + brick_compound = new BlockGeneric(Material.rock).setBlockName("brick_compound").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(400.0F).setBlockTextureName(RefStrings.MODID + ":brick_compound"); + cmb_brick = new BlockGeneric(Material.rock).setBlockName("cmb_brick").setCreativeTab(MainRegistry.blockTab).setHardness(25.0F).setResistance(5000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick"); + cmb_brick_reinforced = new BlockGeneric(Material.rock).setBlockName("cmb_brick_reinforced").setCreativeTab(MainRegistry.blockTab).setHardness(25.0F).setResistance(50000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick_reinforced"); brick_asbestos = new BlockOutgas(Material.rock, true, 5, true).setBlockName("brick_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_asbestos"); - brick_fire = new BlockGeneric(Material.rock).setBlockName("brick_fire").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(160.0F).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + brick_fire = new BlockGeneric(Material.rock).setBlockName("brick_fire").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(35.0F).setBlockTextureName(RefStrings.MODID + ":brick_fire"); - ducrete_smooth = new BlockGeneric(Material.rock).setBlockName("ducrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(8000.0F).setBlockTextureName(RefStrings.MODID + ":ducrete"); - ducrete = new BlockGeneric(Material.rock).setBlockName("ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(8000.0F).setBlockTextureName(RefStrings.MODID + ":ducrete_tile"); - brick_ducrete = new BlockGeneric(Material.rock).setBlockName("brick_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(12000.0F).setBlockTextureName(RefStrings.MODID + ":brick_ducrete"); - reinforced_ducrete = new BlockGeneric(Material.rock).setBlockName("reinforced_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(24000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_ducrete"); + ducrete_smooth = new BlockGeneric(Material.rock).setBlockName("ducrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(500.0F).setBlockTextureName(RefStrings.MODID + ":ducrete"); + ducrete = new BlockGeneric(Material.rock).setBlockName("ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(500.0F).setBlockTextureName(RefStrings.MODID + ":ducrete_tile"); + brick_ducrete = new BlockGeneric(Material.rock).setBlockName("brick_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(750.0F).setBlockTextureName(RefStrings.MODID + ":brick_ducrete"); + reinforced_ducrete = new BlockGeneric(Material.rock).setBlockName("reinforced_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_ducrete"); concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab); concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab); @@ -1546,7 +1630,7 @@ public class ModBlocks { brick_asbestos_stairs = new BlockGenericStairs(brick_asbestos, 0).setBlockName("brick_asbestos_stairs").setCreativeTab(MainRegistry.blockTab); brick_fire_stairs = new BlockGenericStairs(brick_fire, 0).setBlockName("brick_fire_stairs").setCreativeTab(MainRegistry.blockTab); - vinyl_tile = new BlockEnumMulti(Material.rock, TileType.class, true, true).setBlockName("vinyl_tile").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":vinyl_tile"); + vinyl_tile = new BlockEnumMulti(Material.rock, TileType.class, true, true).setBlockName("vinyl_tile").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":vinyl_tile"); tile_lab = new BlockOutgas(Material.rock, false, 5, true).setBlockName("tile_lab").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab"); tile_lab_cracked = new BlockOutgas(Material.rock, false, 5, true).setBlockName("tile_lab_cracked").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab_cracked"); @@ -1558,30 +1642,30 @@ public class ModBlocks { siege_emergency = new BlockBase(Material.iron).setBlockName("siege_emergency").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(20000.0F).setBlockTextureName(RefStrings.MODID + ":siege_emergency"); siege_hole = new SiegeHole(Material.iron).setBlockName("siege_hole").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":siege_hole"); - block_meteor = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor"); - block_meteor_cobble = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble"); - block_meteor_broken = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_crushed"); - block_meteor_molten = new BlockOre(Material.rock, true).noFortune().setBlockName("block_meteor_molten").setLightLevel(0.75F).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble_molten"); - block_meteor_treasure = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_treasure").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_treasure"); - meteor_polished = new BlockGeneric(Material.rock).setBlockName("meteor_polished").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_polished"); - meteor_brick = new BlockGeneric(Material.rock).setBlockName("meteor_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick"); - meteor_brick_mossy = new BlockGeneric(Material.rock).setBlockName("meteor_brick_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_mossy"); - meteor_brick_cracked = new BlockGeneric(Material.rock).setBlockName("meteor_brick_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_cracked"); - meteor_brick_chiseled = new BlockGeneric(Material.rock).setBlockName("meteor_brick_chiseled").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_chiseled"); - meteor_pillar = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":meteor_pillar_top").setBlockName("meteor_pillar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_pillar"); - meteor_spawner = new BlockCybercrab(Material.rock).setBlockName("meteor_spawner").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F); - meteor_battery = new BlockPillar(Material.rock, RefStrings.MODID + ":meteor_power").setBlockName("meteor_battery").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_spawner_side"); + block_meteor = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor"); + block_meteor_cobble = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble"); + block_meteor_broken = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_crushed"); + block_meteor_molten = new BlockOre(Material.rock, true).noFortune().setBlockName("block_meteor_molten").setLightLevel(0.75F).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble_molten"); + block_meteor_treasure = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_treasure").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_treasure"); + meteor_polished = new BlockGeneric(Material.rock).setBlockName("meteor_polished").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_polished"); + meteor_brick = new BlockGeneric(Material.rock).setBlockName("meteor_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick"); + meteor_brick_mossy = new BlockGeneric(Material.rock).setBlockName("meteor_brick_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_mossy"); + meteor_brick_cracked = new BlockGeneric(Material.rock).setBlockName("meteor_brick_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_cracked"); + meteor_brick_chiseled = new BlockGeneric(Material.rock).setBlockName("meteor_brick_chiseled").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_chiseled"); + meteor_pillar = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":meteor_pillar_top").setBlockName("meteor_pillar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_pillar"); + meteor_spawner = new BlockCybercrab(Material.rock).setBlockName("meteor_spawner").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F); + meteor_battery = new BlockPillar(Material.rock, RefStrings.MODID + ":meteor_power").setBlockName("meteor_battery").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_spawner_side"); moon_turf = new BlockFalling(Material.sand).setBlockName("moon_turf").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":moon_turf"); - brick_jungle = new BlockGeneric(Material.rock).setBlockName("brick_jungle").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle"); - brick_jungle_cracked = new BlockGeneric(Material.rock).setBlockName("brick_jungle_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_cracked"); - brick_jungle_fragile = new FragileBrick(Material.rock).setBlockName("brick_jungle_fragile").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_fragile"); - brick_jungle_lava = new BlockGeneric(Material.rock).setBlockName("brick_jungle_lava").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_lava"); - brick_jungle_ooze = new BlockOre(Material.rock).setBlockName("brick_jungle_ooze").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_ooze"); - brick_jungle_mystic = new BlockOre(Material.rock).setBlockName("brick_jungle_mystic").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_mystic"); - brick_jungle_trap = new TrappedBrick(Material.rock).setBlockName("brick_jungle_trap").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_trap"); - brick_jungle_glyph = new BlockGlyph(Material.rock).setBlockName("brick_jungle_glyph").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F); - brick_jungle_circle = new BlockBallsSpawner(Material.rock).setBlockName("brick_jungle_circle").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_circle"); + brick_jungle = new BlockGeneric(Material.rock).setBlockName("brick_jungle").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle"); + brick_jungle_cracked = new BlockGeneric(Material.rock).setBlockName("brick_jungle_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_cracked"); + brick_jungle_fragile = new FragileBrick(Material.rock).setBlockName("brick_jungle_fragile").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_fragile"); + brick_jungle_lava = new BlockGeneric(Material.rock).setBlockName("brick_jungle_lava").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_lava"); + brick_jungle_ooze = new BlockOre(Material.rock).setBlockName("brick_jungle_ooze").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_ooze"); + brick_jungle_mystic = new BlockOre(Material.rock).setBlockName("brick_jungle_mystic").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_mystic"); + brick_jungle_trap = new TrappedBrick(Material.rock).setBlockName("brick_jungle_trap").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_trap"); + brick_jungle_glyph = new BlockGlyph(Material.rock).setBlockName("brick_jungle_glyph").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F); + brick_jungle_circle = new BlockBallsSpawner(Material.rock).setBlockName("brick_jungle_circle").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_circle"); brick_dungeon = new BlockGeneric(Material.rock).setBlockName("brick_dungeon").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_dungeon"); brick_dungeon_flat = new BlockGeneric(Material.rock).setBlockName("brick_dungeon_flat").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_dungeon_flat"); @@ -1602,33 +1686,33 @@ public class ModBlocks { steel_roof = new DecoBlock(Material.iron).setBlockName("steel_roof").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_roof"); steel_beam = new DecoBlock(Material.iron).setBlockName("steel_beam").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_beam"); steel_scaffold = new BlockScaffold().setBlockName("steel_scaffold").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel_orig"); - steel_grate = new BlockGrate(Material.iron).setBlockName("steel_grate").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); - steel_grate_wide = new BlockGrate(Material.iron).setBlockName("steel_grate_wide").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); + steel_grate = new BlockGrate(Material.iron).setBlockName("steel_grate").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); + steel_grate_wide = new BlockGrate(Material.iron).setBlockName("steel_grate_wide").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); - deco_pipe = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 0).setBlockName("deco_pipe").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); - deco_pipe_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 0).setBlockName("deco_pipe_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); - deco_pipe_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 0).setBlockName("deco_pipe_green").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); - deco_pipe_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 0).setBlockName("deco_pipe_green_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); - deco_pipe_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 0).setBlockName("deco_pipe_red").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); - deco_pipe_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 0).setBlockName("deco_pipe_marked").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); - deco_pipe_rim = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 1).setBlockName("deco_pipe_rim").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); - deco_pipe_rim_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 1).setBlockName("deco_pipe_rim_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); - deco_pipe_rim_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 1).setBlockName("deco_pipe_rim_green").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); - deco_pipe_rim_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 1).setBlockName("deco_pipe_rim_green_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); - deco_pipe_rim_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 1).setBlockName("deco_pipe_rim_red").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); - deco_pipe_rim_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 1).setBlockName("deco_pipe_rim_marked").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); - deco_pipe_framed = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 3).setBlockName("deco_pipe_framed").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); - deco_pipe_framed_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 3).setBlockName("deco_pipe_framed_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); - deco_pipe_framed_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 3).setBlockName("deco_pipe_framed_green").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); - deco_pipe_framed_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 3).setBlockName("deco_pipe_framed_green_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); - deco_pipe_framed_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 3).setBlockName("deco_pipe_framed_red").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); - deco_pipe_framed_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 3).setBlockName("deco_pipe_framed_marked").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); - deco_pipe_quad = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 2).setBlockName("deco_pipe_quad").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); - deco_pipe_quad_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 2).setBlockName("deco_pipe_quad_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); - deco_pipe_quad_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 2).setBlockName("deco_pipe_quad_green").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); - deco_pipe_quad_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 2).setBlockName("deco_pipe_quad_green_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); - deco_pipe_quad_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 2).setBlockName("deco_pipe_quad_red").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); - deco_pipe_quad_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 2).setBlockName("deco_pipe_quad_marked").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); + deco_pipe = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 0).setBlockName("deco_pipe").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); + deco_pipe_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 0).setBlockName("deco_pipe_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); + deco_pipe_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 0).setBlockName("deco_pipe_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); + deco_pipe_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 0).setBlockName("deco_pipe_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); + deco_pipe_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 0).setBlockName("deco_pipe_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); + deco_pipe_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 0).setBlockName("deco_pipe_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); + deco_pipe_rim = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 1).setBlockName("deco_pipe_rim").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); + deco_pipe_rim_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 1).setBlockName("deco_pipe_rim_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); + deco_pipe_rim_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 1).setBlockName("deco_pipe_rim_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); + deco_pipe_rim_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 1).setBlockName("deco_pipe_rim_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); + deco_pipe_rim_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 1).setBlockName("deco_pipe_rim_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); + deco_pipe_rim_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 1).setBlockName("deco_pipe_rim_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); + deco_pipe_framed = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 3).setBlockName("deco_pipe_framed").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); + deco_pipe_framed_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 3).setBlockName("deco_pipe_framed_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); + deco_pipe_framed_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 3).setBlockName("deco_pipe_framed_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); + deco_pipe_framed_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 3).setBlockName("deco_pipe_framed_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); + deco_pipe_framed_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 3).setBlockName("deco_pipe_framed_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); + deco_pipe_framed_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 3).setBlockName("deco_pipe_framed_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); + deco_pipe_quad = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 2).setBlockName("deco_pipe_quad").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); + deco_pipe_quad_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 2).setBlockName("deco_pipe_quad_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); + deco_pipe_quad_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 2).setBlockName("deco_pipe_quad_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); + deco_pipe_quad_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 2).setBlockName("deco_pipe_quad_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); + deco_pipe_quad_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 2).setBlockName("deco_pipe_quad_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); + deco_pipe_quad_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 2).setBlockName("deco_pipe_quad_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); broadcaster_pc = new PinkCloudBroadcaster(Material.iron).setBlockName("broadcaster_pc").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":broadcaster_pc"); geiger = new GeigerCounter(Material.iron).setBlockName("geiger").setCreativeTab(MainRegistry.machineTab).setHardness(15.0F).setResistance(0.25F).setBlockTextureName(RefStrings.MODID + ":geiger"); @@ -1655,6 +1739,8 @@ public class ModBlocks { mush = new BlockMush(Material.plants).setBlockName("mush").setCreativeTab(MainRegistry.blockTab).setLightLevel(0.5F).setStepSound(Block.soundTypeGrass).setBlockTextureName(RefStrings.MODID + ":mush"); mush_block = new BlockMushHuge(Material.plants).setBlockName("mush_block").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_skin"); mush_block_stem = new BlockMushHuge(Material.plants).setBlockName("mush_block_stem").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_stem"); + glyphid_base = new BlockGlyphid(Material.coral).setBlockName("glyphid_base").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_base"); + glyphid_spawner = new BlockGlyphidSpawner(Material.coral).setBlockName("glyphid_spawner").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_eggs_alt"); plant_flower = new BlockNTMFlower().setBlockName("plant_flower").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); plant_tall = new BlockTallPlant().setBlockName("plant_tall").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); @@ -1704,27 +1790,27 @@ public class ModBlocks { observer_off = new BlockObserver(Material.iron, false).setBlockName("observer_off").setStepSound(Block.soundTypeStone).setHardness(2.0F); observer_on = new BlockObserver(Material.iron, true).setBlockName("observer_on").setStepSound(Block.soundTypeStone).setHardness(2.0F); - nuke_gadget = new NukeGadget(Material.iron).setBlockName("nuke_gadget").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":theGadget"); - nuke_boy = new NukeBoy(Material.iron).setBlockName("nuke_boy").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":lilBoy"); - nuke_man = new NukeMan(Material.iron).setBlockName("nuke_man").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":fatMan"); - nuke_mike = new NukeMike(Material.iron).setBlockName("nuke_mike").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":ivyMike"); - nuke_tsar = new NukeTsar(Material.iron).setBlockName("nuke_tsar").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":tsarBomba"); - nuke_fleija = new NukeFleija(Material.iron).setBlockName("nuke_fleija").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":fleija"); - nuke_prototype = new NukePrototype(Material.iron).setBlockName("nuke_prototype").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":prototype"); - nuke_custom = new NukeCustom(Material.iron).setBlockName("nuke_custom").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":custom"); - nuke_solinium = new NukeSolinium(Material.iron).setBlockName("nuke_solinium").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":nuke_solinium"); - nuke_n2 = new NukeN2(Material.iron).setBlockName("nuke_n2").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":nuke_n2"); - nuke_n45 = new NukeN45(Material.iron).setBlockName("nuke_n45").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":code"); - nuke_fstbmb = new NukeBalefire(Material.iron).setBlockName("nuke_fstbmb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":nuke_fstbmb"); + nuke_gadget = new NukeGadget(Material.iron).setBlockName("nuke_gadget").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":theGadget"); + nuke_boy = new NukeBoy(Material.iron).setBlockName("nuke_boy").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":lilBoy"); + nuke_man = new NukeMan(Material.iron).setBlockName("nuke_man").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":fatMan"); + nuke_mike = new NukeMike(Material.iron).setBlockName("nuke_mike").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":ivyMike"); + nuke_tsar = new NukeTsar(Material.iron).setBlockName("nuke_tsar").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":tsarBomba"); + nuke_fleija = new NukeFleija(Material.iron).setBlockName("nuke_fleija").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":fleija"); + nuke_prototype = new NukePrototype(Material.iron).setBlockName("nuke_prototype").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200).setBlockTextureName(RefStrings.MODID + ":prototype"); + nuke_custom = new NukeCustom(Material.iron).setBlockName("nuke_custom").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":custom"); + nuke_solinium = new NukeSolinium(Material.iron).setBlockName("nuke_solinium").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_solinium"); + nuke_n2 = new NukeN2(Material.iron).setBlockName("nuke_n2").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_n2"); + nuke_n45 = new NukeN45(Material.iron).setBlockName("nuke_n45").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":code"); + nuke_fstbmb = new NukeBalefire(Material.iron).setBlockName("nuke_fstbmb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_fstbmb"); - bomb_multi = new BombMulti(Material.iron).setBlockName("bomb_multi").setCreativeTab(MainRegistry.nukeTab).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":bomb_multi1"); + bomb_multi = new BombMulti(Material.iron).setBlockName("bomb_multi").setCreativeTab(MainRegistry.nukeTab).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":bomb_multi1"); //bomb_multi_large = new BombMultiLarge(Material.iron).setBlockName("bomb_multi_large").setCreativeTab(MainRegistry.tabNuke).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":bomb_multi_large"); - flame_war = new BombFlameWar(Material.iron).setBlockName("flame_war").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":flame_war"); - float_bomb = new BombFloat(Material.iron).setBlockName("float_bomb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F); - therm_endo = new BombThermo(Material.iron).setBlockName("therm_endo").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F); - therm_exo = new BombThermo(Material.iron).setBlockName("therm_exo").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F); - emp_bomb = new BombFloat(Material.iron).setBlockName("emp_bomb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F); + flame_war = new BombFlameWar(Material.iron).setBlockName("flame_war").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":flame_war"); + float_bomb = new BombFloat(Material.iron).setBlockName("float_bomb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F); + therm_endo = new BombThermo(Material.iron).setBlockName("therm_endo").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F); + therm_exo = new BombThermo(Material.iron).setBlockName("therm_exo").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F); + emp_bomb = new BombFloat(Material.iron).setBlockName("emp_bomb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F); det_cord = new DetCord(Material.iron).setBlockName("det_cord").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_cord"); det_charge = new ExplosiveCharge(Material.iron).setBlockName("det_charge").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_charge"); det_nuke = new ExplosiveCharge(Material.iron).setBlockName("det_nuke").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_nuke"); @@ -1750,27 +1836,35 @@ public class ModBlocks { semtex = new BlockSemtex().setBlockName("semtex").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":semtex"); c4 = new BlockC4().setBlockName("c4").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":c4"); fissure_bomb = new BlockFissureBomb().setBlockName("fissure_bomb").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":fissure_bomb"); + + pump_steam = new MachinePump().setBlockName("pump_steam").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); + pump_electric = new MachinePump().setBlockName("pump_electric").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); heater_firebox = new HeaterFirebox().setBlockName("heater_firebox").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); heater_oven = new HeaterOven().setBlockName("heater_oven").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); heater_oilburner = new HeaterOilburner().setBlockName("heater_oilburner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); heater_electric = new HeaterElectric().setBlockName("heater_electric").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); heater_heatex = new HeaterHeatex().setBlockName("heater_heatex").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_ashpit = new MachineAshpit().setBlockName("machine_ashpit").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName("stonebrick"); furnace_iron = new FurnaceIron().setBlockName("furnace_iron").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); furnace_steel = new FurnaceSteel().setBlockName("furnace_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); furnace_combination = new FurnaceCombination().setBlockName("furnace_combination").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_light_alt"); machine_stirling = new MachineStirling().setBlockName("machine_stirling").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_stirling_steel = new MachineStirling().setBlockName("machine_stirling_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_stirling_creative = new MachineStirling().setBlockName("machine_stirling_creative").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_sawmill = new MachineSawmill().setBlockName("machine_sawmill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_crucible = new MachineCrucible().setBlockName("machine_crucible").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); machine_boiler = new MachineHeatBoiler().setBlockName("machine_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); + machine_industrial_boiler = new MachineHeatBoilerIndustrial().setBlockName("machine_industrial_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); foundry_mold = new FoundryMold().setBlockName("foundry_mold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); foundry_basin = new FoundryBasin().setBlockName("foundry_basin").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); foundry_channel = new FoundryChannel().setBlockName("foundry_channel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); foundry_tank = new FoundryTank().setBlockName("foundry_tank").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); foundry_outlet = new FoundryOutlet().setBlockName("foundry_outlet").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + foundry_slagtap = new FoundrySlagtap().setBlockName("foundry_slagtap").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + slag = new BlockDynamicSlag().setBlockName("slag").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":slag"); machine_difurnace_off = new MachineDiFurnace(false).setBlockName("machine_difurnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_difurnace_on = new MachineDiFurnace(true).setBlockName("machine_difurnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); @@ -1799,6 +1893,7 @@ public class ModBlocks { machine_generator = new MachineGenerator(Material.iron).setBlockName("machine_generator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null); machine_industrial_generator = new MachineIGenerator(Material.iron).setBlockName("machine_industrial_generator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":industrial_generator"); machine_cyclotron = new MachineCyclotron(Material.iron).setBlockName("machine_cyclotron").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cyclotron"); + machine_exposure_chamber = new MachineExposureChamber(Material.iron).setBlockName("machine_exposure_chamber").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); machine_radgen = new MachineRadGen(Material.iron).setBlockName("machine_radgen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_radgen"); hadron_plating = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating"); @@ -1827,6 +1922,7 @@ public class ModBlocks { hadron_analysis_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_analysis_glass", Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis_glass"); hadron_access = new BlockHadronAccess(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_access").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_access"); hadron_core = new BlockHadronCore(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_core"); + hadron_cooler = new BlockHadronCooler(Material.iron).setBlockName("hadron_cooler").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); machine_electric_furnace_off = new MachineElectricFurnace(false).setBlockName("machine_electric_furnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_electric_furnace_on = new MachineElectricFurnace(true).setBlockName("machine_electric_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); @@ -1836,15 +1932,23 @@ public class ModBlocks { //machine_deuterium = new MachineDeuterium(Material.iron).setBlockName("machine_deuterium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_battery_potato = new MachineBattery(Material.iron, 10000).setBlockName("machine_battery_potato").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_battery = new MachineBattery(Material.iron, 1000000).setBlockName("machine_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_lithium_battery = new MachineBattery(Material.iron, 50000000).setBlockName("machine_lithium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_schrabidium_battery = new MachineBattery(Material.iron, 25000000000L).setBlockName("machine_schrabidium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_dineutronium_battery = new MachineBattery(Material.iron, 1000000000000L).setBlockName("machine_dineutronium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_battery_potato = new MachineBattery(Material.iron, 10_000).setBlockName("machine_battery_potato").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_battery = new MachineBattery(Material.iron, 1_000_000).setBlockName("machine_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_lithium_battery = new MachineBattery(Material.iron, 50_000_000).setBlockName("machine_lithium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_schrabidium_battery = new MachineBattery(Material.iron, 25_000_000_000L).setBlockName("machine_schrabidium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_dineutronium_battery = new MachineBattery(Material.iron, 1_000_000_000_000L).setBlockName("machine_dineutronium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_fensu = new MachineFENSU(Material.iron).setBlockName("machine_fensu").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_fensu"); - machine_coal_off = new MachineCoal(false).setBlockName("machine_coal_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_coal_on = new MachineCoal(true).setBlockName("machine_coal_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); + capacitor_bus = new MachineCapacitorBus(Material.iron).setBlockName("capacitor_bus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + capacitor_copper = new MachineCapacitor(Material.iron, 1_000_000L, "copper").setBlockName("capacitor_copper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); + capacitor_gold = new MachineCapacitor(Material.iron, 5_000_000L, "gold").setBlockName("capacitor_gold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName("gold_block"); + capacitor_niobium = new MachineCapacitor(Material.iron, 25_000_000L, "niobium").setBlockName("capacitor_niobium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_niobium"); + capacitor_tantalium = new MachineCapacitor(Material.iron, 150_000_000L, "tantalium").setBlockName("capacitor_tantalium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); + capacitor_schrabidate = new MachineCapacitor(Material.iron, 50_000_000_000L, "schrabidate").setBlockName("capacitor_schrabidate").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_schrabidate"); + + machine_coal_off = new MachineCoal(false).setBlockName("machine_coal_off").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_copper"); + machine_coal_on = new MachineCoal(true).setBlockName("machine_coal_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_copper"); + machine_wood_burner = new MachineWoodBurner(Material.iron).setBlockName("machine_wood_burner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_diesel = new MachineDiesel().setBlockName("machine_diesel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_combustion_engine = new MachineCombustionEngine().setBlockName("machine_combustion_engine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -1852,20 +1956,13 @@ public class ModBlocks { machine_shredder = new MachineShredder(Material.iron).setBlockName("machine_shredder").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_shredder_large = new MachineShredderLarge(Material.iron).setBlockName("machine_shredder_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":code"); - machine_combine_factory = new MachineCMBFactory(Material.iron).setBlockName("machine_combine_factory").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_combine_factory = new MachineCMBFactory(Material.iron).setBlockName("machine_combine_factory").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null); machine_teleporter = new MachineTeleporter(Material.iron).setBlockName("machine_teleporter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); teleanchor = new MachineTeleanchor().setBlockName("teleanchor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); field_disturber = new MachineFieldDisturber().setBlockName("field_disturber").setHardness(5.0F).setResistance(200.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":field_disturber"); machine_rtg_grey = new MachineRTG(Material.iron).setBlockName("machine_rtg_grey").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg"); - //machine_rtg_red = new MachineRTG(Material.iron).setBlockName("machine_rtg_red").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - //machine_rtg_orange = new MachineRTG(Material.iron).setBlockName("machine_rtg_orange").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - //machine_rtg_yellow = new MachineRTG(Material.iron).setBlockName("machine_rtg_yellow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - //machine_rtg_green = new MachineRTG(Material.iron).setBlockName("machine_rtg_green").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_rtg_cyan = new MachineRTG(Material.iron).setBlockName("machine_rtg_cyan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - //machine_rtg_blue = new MachineRTG(Material.iron).setBlockName("machine_rtg_blue").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - //machine_rtg_purple = new MachineRTG(Material.iron).setBlockName("machine_rtg_purple").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_amgen = new MachineAmgen(Material.iron).setBlockName("machine_amgen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_geo = new MachineAmgen(Material.iron).setBlockName("machine_geo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_minirtg = new MachineMiniRTG(Material.iron).setBlockName("machine_minirtg").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg_cell"); @@ -1877,6 +1974,7 @@ public class ModBlocks { red_cable = new BlockCable(Material.iron).setBlockName("red_cable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_neo"); red_cable_classic = new BlockCable(Material.iron).setBlockName("red_cable_classic").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_cable_classic"); red_cable_paintable = new BlockCablePaintable().setBlockName("red_cable_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + red_cable_gauge = new BlockCableGauge().setBlockName("red_cable_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); red_connector = new ConnectorRedWire(Material.iron).setBlockName("red_connector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector"); red_pylon = new PylonRedWire(Material.iron).setBlockName("red_pylon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); red_pylon_large = new PylonLarge(Material.iron).setBlockName("red_pylon_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon_large"); @@ -1885,20 +1983,22 @@ public class ModBlocks { cable_detector = new CableDetector(Material.iron).setBlockName("cable_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); cable_diode = new CableDiode(Material.iron).setBlockName("cable_diode").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_diode"); machine_detector = new PowerDetector(Material.iron).setBlockName("machine_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_detector_off"); - oil_duct_solid = new OilDuctSolid(Material.iron).setBlockName("oil_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_duct_solid_alt"); - oil_duct = new BlockOilDuct(Material.iron).setBlockName("oil_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_duct_icon_alt"); - gas_duct_solid = new GasDuctSolid(Material.iron).setBlockName("gas_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":gas_duct_solid"); - gas_duct = new BlockGasDuct(Material.iron).setBlockName("gas_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":gas_duct_icon"); fluid_duct = new BlockFluidDuct(Material.iron).setBlockName("fluid_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fluid_duct_icon"); fluid_duct_solid = new BlockFluidDuctSolid(Material.iron).setBlockName("fluid_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fluid_duct_solid"); - fluid_duct_neo = new FluidDuctStandard(Material.iron).setBlockName("fluid_duct_neo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pipe_neo"); - fluid_duct_box = new FluidDuctBox(Material.iron).setBlockName("fluid_duct_box").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); + fluid_duct_neo = new FluidDuctStandard(Material.iron).setBlockName("fluid_duct_neo").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pipe_neo"); + fluid_duct_box = new FluidDuctBox(Material.iron).setBlockName("fluid_duct_box").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); + fluid_duct_exhaust = new FluidDuctBoxExhaust(Material.iron).setBlockName("fluid_duct_exhaust").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); fluid_duct_paintable = new FluidDuctPaintable().setBlockName("fluid_duct_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); fluid_duct_gauge = new FluidDuctGauge().setBlockName("fluid_duct_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + fluid_valve = new FluidValve(Material.iron).setBlockName("fluid_valve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + fluid_switch = new FluidSwitch(Material.iron).setBlockName("fluid_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); radio_torch_sender = new RadioTorchSender().setBlockName("radio_torch_sender").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); radio_torch_receiver = new RadioTorchReceiver().setBlockName("radio_torch_receiver").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + radio_torch_counter = new RadioTorchCounter().setBlockName("radio_torch_counter").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtty_counter"); + radio_telex = new RadioTelex().setBlockName("radio_telex").setHardness(3F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":radio_telex"); conveyor = new BlockConveyor().setBlockName("conveyor").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); + conveyor_express = new BlockConveyorExpress().setBlockName("conveyor_express").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_express"); //conveyor_classic = new BlockConveyorClassic().setBlockName("conveyor_classic").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); conveyor_double = new BlockConveyorDouble().setBlockName("conveyor_double").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_double"); conveyor_triple = new BlockConveyorTriple().setBlockName("conveyor_triple").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_triple"); @@ -1912,6 +2012,14 @@ public class ModBlocks { crane_unboxer = new CraneUnboxer().setBlockName("crane_unboxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crane_splitter = new CraneSplitter().setBlockName("crane_splitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_side"); fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + + drone_waypoint = new DroneWaypoint().setBlockName("drone_waypoint").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint"); + drone_crate = new DroneCrate().setBlockName("drone_crate").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + drone_waypoint_request = new DroneWaypointRequest().setBlockName("drone_waypoint_request").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint_request"); + drone_dock = new DroneDock().setBlockName("drone_dock").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_dock"); + drone_crate_provider = new DroneDock().setBlockName("drone_crate_provider").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_crate_provider"); + drone_crate_requester = new DroneDock().setBlockName("drone_crate_requester").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_crate_requester"); chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain"); @@ -1961,20 +2069,39 @@ public class ModBlocks { factory_advanced_furnace = new FactoryHatch(Material.iron).setBlockName("factory_advanced_furnace").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_advanced_furnace"); factory_advanced_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":factory_advanced_conductor").setBlockName("factory_advanced_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_advanced_hull"); - reactor_element = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_element_top", RefStrings.MODID + ":reactor_element_base").setBlockName("reactor_element").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":reactor_element_side"); - reactor_control = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_control_top").setBlockName("reactor_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":reactor_control_side"); - reactor_hatch = new ReactorHatch(Material.iron).setBlockName("reactor_hatch").setHardness(5.0F).setResistance(1000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - reactor_ejector = new BlockRotatable(Material.iron).setBlockName("reactor_ejector").setHardness(5.0F).setResistance(1000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - reactor_inserter = new BlockRotatable(Material.iron).setBlockName("reactor_inserter").setHardness(5.0F).setResistance(1000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - reactor_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_conductor_top").setBlockName("reactor_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":reactor_conductor_side"); - reactor_computer = new ReactorCore(Material.iron).setBlockName("reactor_computer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":reactor_computer"); + cm_block = new BlockCM(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_block").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_block"); + cm_sheet = new BlockCM(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_sheet").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_sheet"); + cm_engine = new BlockCM(Material.iron, EnumCMEngines.class, true, true).setBlockName("cm_engine").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_engine"); + cm_tank = new BlockCMGlass(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_tank").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_tank"); + cm_circuit = new BlockCM(Material.iron, EnumCMCircuit.class, true, true).setBlockName("cm_circuit").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_circuit"); + cm_port = new BlockCMPort(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_port").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_port"); + custom_machine = new BlockCustomMachine().setBlockName("custom_machine").setCreativeTab(MainRegistry.machineTab).setLightLevel(1F).setHardness(5.0F).setResistance(10.0F); + cm_anchor = new BlockCMAnchor().setBlockName("custom_machine_anchor").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F); - fusion_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_conductor_top_alt").setBlockName("fusion_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_conductor_side_alt"); + pwr_fuel = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_fuel_top").setBlockName("pwr_fuel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_fuel_side"); + pwr_control = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_control_top").setBlockName("pwr_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_control_side"); + pwr_channel = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_channel_top").setBlockName("pwr_channel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_channel_side"); + pwr_heatex = new BlockGenericPWR(Material.iron).setBlockName("pwr_heatex").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_heatex"); + pwr_neutron_source = new BlockGenericPWR(Material.iron).setBlockName("pwr_neutron_source").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_neutron_source"); + pwr_reflector = new BlockGenericPWR(Material.iron).setBlockName("pwr_reflector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_reflector"); + pwr_casing = new BlockGenericPWR(Material.iron).setBlockName("pwr_casing").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing"); + pwr_port = new BlockGenericPWR(Material.iron).setBlockName("pwr_port").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_port"); + pwr_controller = new MachinePWRController(Material.iron).setBlockName("pwr_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing_blank"); + pwr_block = new BlockPWR(Material.iron).setBlockName("pwr_block").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pwr_block"); + + reactor_element = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_element_top", RefStrings.MODID + ":reactor_element_base").setBlockName("reactor_element").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_element_side"); + reactor_control = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_control_top").setBlockName("reactor_control").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_control_side"); + reactor_hatch = new ReactorHatch(Material.iron).setBlockName("reactor_hatch").setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); + reactor_ejector = new BlockRotatable(Material.iron).setBlockName("reactor_ejector").setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); + reactor_inserter = new BlockRotatable(Material.iron).setBlockName("reactor_inserter").setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); + reactor_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_conductor_top").setBlockName("reactor_conductor").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_conductor_side"); + reactor_computer = new ReactorCore(Material.iron).setBlockName("reactor_computer").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_computer"); + + fusion_conductor = new BlockToolConversionPillar(Material.iron).addVariant("_welded").setBlockName("fusion_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_conductor"); fusion_center = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_center_top_alt").setBlockName("fusion_center").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_center_side_alt"); fusion_motor = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_motor_top_alt").setBlockName("fusion_motor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_motor_side_alt"); fusion_heater = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_heater_top").setBlockName("fusion_heater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_heater_side"); fusion_hatch = new FusionHatch(Material.iron).setBlockName("fusion_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_hatch"); - //fusion_core = new FusionCore(Material.iron).setBlockName("fusion_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fusion_core_side"); plasma = new BlockPlasma(Material.iron).setBlockName("plasma").setHardness(5.0F).setResistance(6000.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma"); iter = new MachineITER().setBlockName("iter").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":iter"); plasma_heater = new MachinePlasmaHeater().setBlockName("plasma_heater").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma_heater"); @@ -1983,9 +2110,9 @@ public class ModBlocks { watz_control = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_control_top").setBlockName("watz_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_control_side"); watz_cooler = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_cooler_top").setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler_side"); watz_end = new BlockToolConversion(Material.iron).addVariant("_bolted").setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing"); - watz_hatch = new WatzHatch(Material.iron).setBlockName("watz_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_hatch"); - watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top"); - watz_core = new WatzCore(Material.iron).setBlockName("watz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_computer"); + watz_hatch = new WatzHatch(Material.iron).setBlockName("watz_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_hatch"); + watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top"); + watz_core = new WatzCore(Material.iron).setBlockName("watz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_computer"); watz = new Watz().setBlockName("watz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); watz_pump = new WatzPump().setBlockName("watz_pump").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2019,10 +2146,19 @@ public class ModBlocks { seal_controller = new BlockSeal(Material.iron).setBlockName("seal_controller").setHardness(10.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab); seal_hatch = new BlockHatch(Material.iron).setBlockName("seal_hatch").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":seal_hatch_3"); - vault_door = new VaultDoor(Material.iron).setBlockName("vault_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vault_door"); - blast_door = new BlastDoor(Material.iron).setBlockName("blast_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":blast_door"); - fire_door = new BlockDoorGeneric(Material.iron, DoorDecl.FIRE_DOOR).setBlockName("fire_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fire_door"); - transition_seal = new BlockDoorGeneric(Material.iron, DoorDecl.TRANSITION_SEAL).setBlockName("transition_seal").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transition_seal"); + vault_door = new VaultDoor(Material.iron).setBlockName("vault_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vault_door"); + blast_door = new BlastDoor(Material.iron).setBlockName("blast_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":blast_door"); + + sliding_blast_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDE_DOOR).setBlockName("sliding_blast_door").setHardness(10.0F).setResistance(750.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":sliding_blast_door"); + fire_door = new BlockDoorGeneric(Material.iron, DoorDecl.FIRE_DOOR).setBlockName("fire_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fire_door"); + transition_seal = new BlockDoorGeneric(Material.iron, DoorDecl.TRANSITION_SEAL).setBlockName("transition_seal").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transition_seal"); + secure_access_door = new BlockDoorGeneric(Material.iron, DoorDecl.SECURE_ACCESS_DOOR).setBlockName("secure_access_door").setHardness(20.0F).setResistance(2_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + large_vehicle_door = new BlockDoorGeneric(Material.iron, DoorDecl.LARGE_VEHICLE_DOOR).setBlockName("large_vehicle_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + qe_containment = new BlockDoorGeneric(Material.iron, DoorDecl.QE_CONTAINMENT).setBlockName("qe_containment").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + qe_sliding_door = new BlockDoorGeneric(Material.iron, DoorDecl.QE_SLIDING).setBlockName("qe_sliding_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + round_airlock_door = new BlockDoorGeneric(Material.iron, DoorDecl.ROUND_AIRLOCK_DOOR).setBlockName("round_airlock_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + sliding_seal_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDING_SEAL_DOOR).setBlockName("sliding_seal_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + water_door = new BlockDoorGeneric(Material.iron, DoorDecl.WATER_DOOR).setBlockName("water_door").setHardness(5.0F).setResistance(50.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); door_metal = new BlockModDoor(Material.iron).setBlockName("door_metal").setHardness(5.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":door_metal"); door_office = new BlockModDoor(Material.iron).setBlockName("door_office").setHardness(10.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":door_office"); @@ -2046,6 +2182,7 @@ public class ModBlocks { launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad"); machine_radar = new MachineRadar(Material.iron).setBlockName("machine_radar").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_radar"); + radar_screen = new MachineRadarScreen(Material.iron).setBlockName("radar_screen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_missile_assembly = new MachineMissileAssembly(Material.iron).setBlockName("machine_missile_assembly").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_missile_assembly"); compact_launcher = new CompactLauncher(Material.iron).setBlockName("compact_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":compact_launcher"); @@ -2109,6 +2246,12 @@ public class ModBlocks { rail_narrow = new RailGeneric().setBlockName("rail_narrow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow"); rail_highspeed = new RailGeneric().setMaxSpeed(1F).setFlexible(false).setBlockName("rail_highspeed").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_highspeed"); rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster"); + rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); + rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); + rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer"); crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate"); crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon"); @@ -2122,6 +2265,7 @@ public class ModBlocks { crate_steel = new BlockStorageCrate(Material.iron).setBlockName("crate_steel").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crate_desh = new BlockStorageCrate(Material.iron).setBlockName("crate_desh").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crate_tungsten = new BlockStorageCrate(Material.iron).setBlockName("crate_tungsten").setStepSound(Block.soundTypeMetal).setHardness(7.5F).setResistance(300.0F).setCreativeTab(MainRegistry.machineTab); + crate_template = new BlockStorageCrate(Material.iron).setBlockName("crate_template").setStepSound(Block.soundTypeMetal).setHardness(7.5F).setResistance(300.0F).setCreativeTab(MainRegistry.machineTab); safe = new BlockStorageCrate(Material.iron).setBlockName("safe").setStepSound(Block.soundTypeMetal).setHardness(7.5F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); mass_storage = new BlockMassStorage().setBlockName("mass_storage").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); @@ -2134,6 +2278,8 @@ public class ModBlocks { machine_fracking_tower = new MachineFrackingTower().setBlockName("machine_fracking_tower").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); oil_pipe = new BlockNoDrop(Material.iron).setBlockName("oil_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_pipe"); machine_flare = new MachineGasFlare(Material.iron).setBlockName("machine_flare").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + chimney_brick = new MachineChimneyBrick(Material.iron).setBlockName("chimney_brick").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + chimney_industrial = new MachineChimneyIndustrial(Material.iron).setBlockName("chimney_industrial").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete_colored_ext.machine"); machine_refinery = new MachineRefinery(Material.iron).setBlockName("machine_refinery").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_refinery"); machine_vacuum_distill = new MachineVacuumDistill(Material.iron).setBlockName("machine_vacuum_distill").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_fraction_tower = new MachineFractionTower(Material.iron).setBlockName("machine_fraction_tower").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2142,13 +2288,14 @@ public class ModBlocks { machine_catalytic_reformer = new MachineCatalyticReformer(Material.iron).setBlockName("machine_catalytic_reformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_drill"); + machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":machine_drill"); machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); drill_pipe = new BlockNoDrop(Material.iron).setBlockName("drill_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":drill_pipe"); machine_mining_laser = new MachineMiningLaser(Material.iron).setBlockName("machine_mining_laser").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_mining_laser"); barricade = new BlockNoDrop(Material.sand).setBlockName("barricade").setHardness(1.0F).setResistance(2.5F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barricade"); machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_assembler"); machine_assemfac = new MachineAssemfac(Material.iron).setBlockName("machine_assemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_arc_welder = new MachineArcWelder(Material.iron).setBlockName("machine_arc_welder").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_chemplant = new MachineChemplant(Material.iron).setBlockName("machine_chemplant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_chemfac = new MachineChemfac(Material.iron).setBlockName("machine_chemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_mixer = new MachineMixer(Material.iron).setBlockName("machine_mixer").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2160,11 +2307,12 @@ public class ModBlocks { press_preheater = new BlockBase(Material.iron).setBlockName("press_preheater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":press_preheater"); machine_press = new MachinePress(Material.iron).setBlockName("machine_press").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_press"); machine_epress = new MachineEPress(Material.iron).setBlockName("machine_epress").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_epress"); + machine_conveyor_press = new MachineConveyorPress(Material.iron).setBlockName("machine_conveyor_press").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_selenium = new MachineSeleniumEngine(Material.iron).setBlockName("machine_selenium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_selenium"); reactor_research = new ReactorResearch(Material.iron).setBlockName("machine_reactor_small").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_reactor_small"); reactor_zirnox = new ReactorZirnox(Material.iron).setBlockName("machine_zirnox").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); zirnox_destroyed = new ZirnoxDestroyed(Material.iron).setBlockName("zirnox_destroyed").setHardness(100.0F).setResistance(800.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_controller = new MachineReactorControl(Material.iron).setBlockName("machine_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_controller = new MachineReactorControl(Material.iron).setBlockName("machine_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null); machine_boiler_off = new MachineBoiler(false).setBlockName("machine_boiler_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_boiler_off"); machine_boiler_on = new MachineBoiler(true).setBlockName("machine_boiler_on").setHardness(5.0F).setResistance(10.0F).setLightLevel(1.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":machine_boiler_on"); @@ -2178,12 +2326,14 @@ public class ModBlocks { machine_condenser = new MachineCondenser(Material.iron).setBlockName("machine_condenser").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":condenser"); machine_tower_small = new MachineTowerSmall(Material.iron).setBlockName("machine_tower_small").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); machine_tower_large = new MachineTowerLarge(Material.iron).setBlockName("machine_tower_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete"); + machine_condenser_powered = new MachineCondenserPowered(Material.iron).setBlockName("machine_condenser_powered").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); machine_deuterium_extractor = new MachineDeuteriumExtractor(Material.iron).setBlockName("machine_deuterium_extractor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_deuterium_extractor_side"); machine_deuterium_tower = new DeuteriumTower(Material.iron).setBlockName("machine_deuterium_tower").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete"); - machine_liquefactor = new MachineLiquefactor().setBlockName("machine_liquefactor").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_liquefactor = new MachineLiquefactor().setBlockName("machine_liquefactor").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); machine_solidifier = new MachineSolidifier().setBlockName("machine_solidifier").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); + machine_compressor = new MachineCompressor().setBlockName("machine_compressor").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); machine_electrolyser = new MachineElectrolyser().setBlockName("machine_electrolyser").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); @@ -2275,7 +2425,7 @@ public class ModBlocks { corium_fluid = new CoriumFluid().setDensity(600000).setViscosity(12000).setLuminosity(10).setTemperature(1500).setUnlocalizedName("corium_fluid"); FluidRegistry.registerFluid(corium_fluid); - corium_block = new CoriumBlock(corium_fluid, fluidcorium).setBlockName("corium_block").setResistance(500F); + corium_block = new CoriumFinite(corium_fluid, fluidcorium).setBlockName("corium_block").setResistance(500F); volcanic_lava_fluid = new VolcanicFluid().setLuminosity(15).setDensity(3000).setViscosity(3000).setTemperature(1300).setUnlocalizedName("volcanic_lava_fluid"); FluidRegistry.registerFluid(volcanic_lava_fluid); @@ -2290,8 +2440,6 @@ public class ModBlocks { dummy_block_drill = new DummyBlockDrill(Material.iron, false).setBlockName("dummy_block_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_lead"); dummy_port_drill = new DummyBlockDrill(Material.iron, true).setBlockName("dummy_port_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_lead"); - dummy_block_assembler = new DummyBlockAssembler(Material.iron, false).setBlockName("dummy_block_assembler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); - dummy_port_assembler = new DummyBlockAssembler(Material.iron, true).setBlockName("dummy_port_assembler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); dummy_block_ams_limiter = new DummyBlockAMSLimiter(Material.iron).setBlockName("dummy_block_ams_limiter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_copper"); dummy_port_ams_limiter = new DummyBlockAMSLimiter(Material.iron).setBlockName("dummy_port_ams_limiter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_copper"); dummy_block_ams_emitter = new DummyBlockAMSEmitter(Material.iron).setBlockName("dummy_block_ams_emitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_copper"); @@ -2376,7 +2524,6 @@ public class ModBlocks { GameRegistry.registerBlock(cluster_copper, ItemBlockBase.class, cluster_copper.getUnlocalizedName()); //Bedrock ores - GameRegistry.registerBlock(ore_bedrock_coltan, ore_bedrock_coltan.getUnlocalizedName()); GameRegistry.registerBlock(ore_bedrock_oil, ore_bedrock_oil.getUnlocalizedName()); //Nice Meme @@ -2454,9 +2601,10 @@ public class ModBlocks { GameRegistry.registerBlock(crystal_trixite, crystal_trixite.getUnlocalizedName()); //Resource-bearing Stones - GameRegistry.registerBlock(stone_resource, ItemBlockBase.class, stone_resource.getUnlocalizedName()); - GameRegistry.registerBlock(stalagmite, ItemBlockBase.class, stalagmite.getUnlocalizedName()); - GameRegistry.registerBlock(stalactite, ItemBlockBase.class, stalactite.getUnlocalizedName()); + register(stone_resource); + register(stalagmite); + register(stalactite); + register(stone_biome); //Stone Variants GameRegistry.registerBlock(stone_porous, stone_porous.getUnlocalizedName()); @@ -2508,8 +2656,11 @@ public class ModBlocks { GameRegistry.registerBlock(block_beryllium, block_beryllium.getUnlocalizedName()); GameRegistry.registerBlock(block_cobalt, block_cobalt.getUnlocalizedName()); GameRegistry.registerBlock(block_steel, block_steel.getUnlocalizedName()); + GameRegistry.registerBlock(block_tcalloy, block_tcalloy.getUnlocalizedName()); + GameRegistry.registerBlock(block_cdalloy, block_cdalloy.getUnlocalizedName()); GameRegistry.registerBlock(block_lead, block_lead.getUnlocalizedName()); GameRegistry.registerBlock(block_bismuth, block_bismuth.getUnlocalizedName()); + GameRegistry.registerBlock(block_cadmium, block_cadmium.getUnlocalizedName()); GameRegistry.registerBlock(block_coltan, block_coltan.getUnlocalizedName()); GameRegistry.registerBlock(block_tantalium, block_tantalium.getUnlocalizedName()); GameRegistry.registerBlock(block_niobium, block_niobium.getUnlocalizedName()); @@ -2615,22 +2766,28 @@ public class ModBlocks { GameRegistry.registerBlock(lamp_uv_off, lamp_uv_off.getUnlocalizedName()); GameRegistry.registerBlock(lamp_uv_on, lamp_uv_on.getUnlocalizedName()); GameRegistry.registerBlock(lamp_demon, lamp_demon.getUnlocalizedName()); + GameRegistry.registerBlock(lantern, lantern.getUnlocalizedName()); + GameRegistry.registerBlock(lantern_behemoth, lantern_behemoth.getUnlocalizedName()); //Reinforced Blocks GameRegistry.registerBlock(asphalt, ItemBlockBlastInfo.class, asphalt.getUnlocalizedName()); GameRegistry.registerBlock(asphalt_light, ItemBlockBlastInfo.class, asphalt_light.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_brick, ItemBlockBlastInfo.class, reinforced_brick.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_glass, ItemBlockBlastInfo.class, reinforced_glass.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_glass_pane, ItemBlockBlastInfo.class, reinforced_glass_pane.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_light, ItemBlockBlastInfo.class, reinforced_light.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_sand, ItemBlockBlastInfo.class, reinforced_sand.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_lamp_off, ItemBlockBlastInfo.class, reinforced_lamp_off.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_lamp_on, ItemBlockBlastInfo.class, reinforced_lamp_on.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_laminate, ItemBlockBlastInfo.class, reinforced_laminate.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_laminate_pane,ItemBlockBlastInfo.class, reinforced_laminate_pane.getUnlocalizedName()); //Bricks GameRegistry.registerBlock(reinforced_stone, ItemBlockBlastInfo.class, reinforced_stone.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_ducrete, ItemBlockBlastInfo.class, reinforced_ducrete.getUnlocalizedName()); GameRegistry.registerBlock(concrete_smooth, ItemBlockBlastInfo.class, concrete_smooth.getUnlocalizedName()); GameRegistry.registerBlock(concrete_colored, ItemBlockColoredConcrete.class, concrete_colored.getUnlocalizedName()); + register(concrete_colored_ext); GameRegistry.registerBlock(concrete, ItemBlockBlastInfo.class, concrete.getUnlocalizedName()); GameRegistry.registerBlock(concrete_asbestos, ItemBlockBlastInfo.class, concrete_asbestos.getUnlocalizedName()); GameRegistry.registerBlock(concrete_super, ItemBlockBlastInfo.class, concrete_super.getUnlocalizedName()); @@ -2778,6 +2935,8 @@ public class ModBlocks { GameRegistry.registerBlock(mush, mush.getUnlocalizedName()); GameRegistry.registerBlock(mush_block, mush_block.getUnlocalizedName()); GameRegistry.registerBlock(mush_block_stem, mush_block_stem.getUnlocalizedName()); + GameRegistry.registerBlock(glyphid_base, glyphid_base.getUnlocalizedName()); + GameRegistry.registerBlock(glyphid_spawner, glyphid_spawner.getUnlocalizedName()); GameRegistry.registerBlock(moon_turf, moon_turf.getUnlocalizedName()); //Waste @@ -2927,17 +3086,26 @@ public class ModBlocks { GameRegistry.registerBlock(blast_door, blast_door.getUnlocalizedName()); GameRegistry.registerBlock(fire_door, fire_door.getUnlocalizedName()); GameRegistry.registerBlock(transition_seal, transition_seal.getUnlocalizedName()); - + GameRegistry.registerBlock(sliding_blast_door, sliding_blast_door.getUnlocalizedName()); + //Doors GameRegistry.registerBlock(door_metal, door_metal.getUnlocalizedName()); GameRegistry.registerBlock(door_office, door_office.getUnlocalizedName()); GameRegistry.registerBlock(door_bunker, door_bunker.getUnlocalizedName()); + GameRegistry.registerBlock(secure_access_door, secure_access_door.getUnlocalizedName()); + GameRegistry.registerBlock(large_vehicle_door, large_vehicle_door.getUnlocalizedName()); + GameRegistry.registerBlock(qe_containment, qe_containment.getUnlocalizedName()); + GameRegistry.registerBlock(qe_sliding_door, qe_sliding_door.getUnlocalizedName()); + GameRegistry.registerBlock(round_airlock_door, round_airlock_door.getUnlocalizedName()); + GameRegistry.registerBlock(sliding_seal_door, sliding_seal_door.getUnlocalizedName()); + GameRegistry.registerBlock(water_door, water_door.getUnlocalizedName()); //Crates register(crate_iron); register(crate_steel); register(crate_desh); register(crate_tungsten); + register(crate_template); register(safe); register(mass_storage); @@ -2967,8 +3135,12 @@ public class ModBlocks { GameRegistry.registerBlock(press_preheater, press_preheater.getUnlocalizedName()); GameRegistry.registerBlock(machine_press, machine_press.getUnlocalizedName()); GameRegistry.registerBlock(machine_epress, machine_epress.getUnlocalizedName()); + register(machine_conveyor_press); + register(pump_steam); + register(pump_electric); register(heater_firebox); register(heater_oven); + register(machine_ashpit); register(heater_oilburner); register(heater_electric); register(heater_heatex); @@ -2977,14 +3149,18 @@ public class ModBlocks { register(furnace_combination); register(machine_stirling); register(machine_stirling_steel); + register(machine_stirling_creative); register(machine_sawmill); register(machine_crucible); register(machine_boiler); + register(machine_industrial_boiler); register(foundry_mold); register(foundry_basin); register(foundry_channel); register(foundry_tank); register(foundry_outlet); + register(foundry_slagtap); + register(slag); register(machine_difurnace_off); register(machine_difurnace_on); register(machine_difurnace_extension); @@ -3004,6 +3180,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_rtg_furnace_on, machine_rtg_furnace_on.getUnlocalizedName()); GameRegistry.registerBlock(machine_coal_off, machine_coal_off.getUnlocalizedName()); GameRegistry.registerBlock(machine_coal_on, machine_coal_on.getUnlocalizedName()); + register(machine_wood_burner); register(machine_diesel); register(machine_selenium); register(machine_combustion_engine); @@ -3015,6 +3192,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_industrial_generator, machine_industrial_generator.getUnlocalizedName()); GameRegistry.registerBlock(machine_radgen, machine_radgen.getUnlocalizedName()); GameRegistry.registerBlock(machine_cyclotron, machine_cyclotron.getUnlocalizedName()); + GameRegistry.registerBlock(machine_exposure_chamber, machine_exposure_chamber.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_grey, machine_rtg_grey.getUnlocalizedName()); GameRegistry.registerBlock(machine_geo, machine_geo.getUnlocalizedName()); GameRegistry.registerBlock(machine_amgen, machine_amgen.getUnlocalizedName()); @@ -3051,6 +3229,7 @@ public class ModBlocks { GameRegistry.registerBlock(hadron_analysis_glass, hadron_analysis_glass.getUnlocalizedName()); GameRegistry.registerBlock(hadron_access, hadron_access.getUnlocalizedName()); GameRegistry.registerBlock(hadron_core, hadron_core.getUnlocalizedName()); + register(hadron_cooler); GameRegistry.registerBlock(rbmk_rod, rbmk_rod.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_rod_mod, rbmk_rod_mod.getUnlocalizedName()); @@ -3082,6 +3261,7 @@ public class ModBlocks { GameRegistry.registerBlock(red_cable, red_cable.getUnlocalizedName()); GameRegistry.registerBlock(red_cable_classic, red_cable_classic.getUnlocalizedName()); GameRegistry.registerBlock(red_cable_paintable, red_cable_paintable.getUnlocalizedName()); + register(red_cable_gauge); GameRegistry.registerBlock(red_wire_coated, red_wire_coated.getUnlocalizedName()); GameRegistry.registerBlock(red_connector, ItemBlockBase.class, red_connector.getUnlocalizedName()); GameRegistry.registerBlock(red_pylon, ItemBlockBase.class, red_pylon.getUnlocalizedName()); @@ -3091,32 +3271,41 @@ public class ModBlocks { GameRegistry.registerBlock(cable_detector, cable_detector.getUnlocalizedName()); GameRegistry.registerBlock(cable_diode, ItemBlockBase.class, cable_diode.getUnlocalizedName()); GameRegistry.registerBlock(machine_detector, machine_detector.getUnlocalizedName()); - GameRegistry.registerBlock(oil_duct, oil_duct.getUnlocalizedName()); - GameRegistry.registerBlock(oil_duct_solid, oil_duct_solid.getUnlocalizedName()); - GameRegistry.registerBlock(gas_duct, gas_duct.getUnlocalizedName()); - GameRegistry.registerBlock(gas_duct_solid, gas_duct_solid.getUnlocalizedName()); GameRegistry.registerBlock(fluid_duct, fluid_duct.getUnlocalizedName()); register(fluid_duct_neo); register(fluid_duct_box); + register(fluid_duct_exhaust); register(fluid_duct_paintable); register(fluid_duct_gauge); GameRegistry.registerBlock(fluid_duct_solid, fluid_duct_solid.getUnlocalizedName()); + register(fluid_valve); + register(fluid_switch); register(radio_torch_sender); register(radio_torch_receiver); + register(radio_torch_counter); + register(radio_telex); - GameRegistry.registerBlock(crane_extractor, crane_extractor.getUnlocalizedName()); - GameRegistry.registerBlock(crane_inserter, crane_inserter.getUnlocalizedName()); - GameRegistry.registerBlock(crane_grabber, crane_grabber.getUnlocalizedName()); - GameRegistry.registerBlock(crane_router, crane_router.getUnlocalizedName()); - GameRegistry.registerBlock(crane_boxer, crane_boxer.getUnlocalizedName()); - GameRegistry.registerBlock(crane_unboxer, crane_unboxer.getUnlocalizedName()); - GameRegistry.registerBlock(conveyor, conveyor.getUnlocalizedName()); - GameRegistry.registerBlock(conveyor_double, conveyor_double.getUnlocalizedName()); - GameRegistry.registerBlock(conveyor_triple, conveyor_triple.getUnlocalizedName()); - GameRegistry.registerBlock(conveyor_chute, conveyor_chute.getUnlocalizedName()); - GameRegistry.registerBlock(conveyor_lift, conveyor_lift.getUnlocalizedName()); - GameRegistry.registerBlock(crane_splitter, crane_splitter.getUnlocalizedName()); - GameRegistry.registerBlock(fan, fan.getUnlocalizedName()); + register(crane_extractor); + register(crane_inserter); + register(crane_grabber); + register(crane_router); + register(crane_boxer); + register(crane_unboxer); + register(conveyor); + register(conveyor_express); + register(conveyor_double); + register(conveyor_triple); + register(conveyor_chute); + register(conveyor_lift); + register(crane_splitter); + register(drone_waypoint); + register(drone_crate); + register(drone_waypoint_request); + register(drone_dock); + register(drone_crate_provider); + register(drone_crate_requester); + register(fan); + register(piston_inserter); GameRegistry.registerBlock(chain, chain.getUnlocalizedName()); GameRegistry.registerBlock(ladder_sturdy, ladder_sturdy.getUnlocalizedName()); @@ -3142,6 +3331,12 @@ public class ModBlocks { register(machine_schrabidium_battery); register(machine_dineutronium_battery); register(machine_fensu); + register(capacitor_bus); + register(capacitor_copper); + register(capacitor_gold); + register(capacitor_niobium); + register(capacitor_tantalium); + register(capacitor_schrabidate); GameRegistry.registerBlock(machine_transformer, machine_transformer.getUnlocalizedName()); GameRegistry.registerBlock(machine_transformer_20, machine_transformer_20.getUnlocalizedName()); GameRegistry.registerBlock(machine_transformer_dnt, machine_transformer_dnt.getUnlocalizedName()); @@ -3157,6 +3352,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_assemfac, machine_assemfac.getUnlocalizedName()); GameRegistry.registerBlock(machine_chemplant, machine_chemplant.getUnlocalizedName()); GameRegistry.registerBlock(machine_chemfac, machine_chemfac.getUnlocalizedName()); + register(machine_arc_welder); register(machine_mixer); register(machine_fluidtank); register(machine_bat9000); @@ -3172,10 +3368,12 @@ public class ModBlocks { GameRegistry.registerBlock(machine_condenser, machine_condenser.getUnlocalizedName()); GameRegistry.registerBlock(machine_tower_small, machine_tower_small.getUnlocalizedName()); GameRegistry.registerBlock(machine_tower_large, machine_tower_large.getUnlocalizedName()); + register(machine_condenser_powered); GameRegistry.registerBlock(machine_deuterium_extractor, machine_deuterium_extractor.getUnlocalizedName()); GameRegistry.registerBlock(machine_deuterium_tower, machine_deuterium_tower.getUnlocalizedName()); GameRegistry.registerBlock(machine_liquefactor, ItemBlockBase.class, machine_liquefactor.getUnlocalizedName()); GameRegistry.registerBlock(machine_solidifier, ItemBlockBase.class, machine_solidifier.getUnlocalizedName()); + register(machine_compressor); GameRegistry.registerBlock(machine_electrolyser, machine_electrolyser.getUnlocalizedName()); GameRegistry.registerBlock(machine_deaerator, machine_deaerator.getUnlocalizedName()); GameRegistry.registerBlock(machine_waste_drum, machine_waste_drum.getUnlocalizedName()); @@ -3186,6 +3384,8 @@ public class ModBlocks { register(machine_pumpjack); register(machine_fracking_tower); register(machine_flare); + register(chimney_brick); + register(chimney_industrial); register(machine_refinery); register(machine_vacuum_distill); register(machine_fraction_tower); @@ -3244,6 +3444,28 @@ public class ModBlocks { GameRegistry.registerBlock(factory_titanium_hull, factory_titanium_hull.getUnlocalizedName()); GameRegistry.registerBlock(factory_advanced_hull, factory_advanced_hull.getUnlocalizedName()); + //CM stuff + register(custom_machine, ItemCustomMachine.class); + register(cm_block); + register(cm_sheet); + register(cm_engine); + register(cm_tank); + register(cm_circuit); + register(cm_port); + register(cm_anchor); + + //PWR + register(pwr_fuel); + register(pwr_control); + register(pwr_channel); + register(pwr_heatex); + register(pwr_neutron_source); + register(pwr_reflector); + register(pwr_casing); + register(pwr_port); + register(pwr_controller); + register(pwr_block); + //Multiblock Generators GameRegistry.registerBlock(reactor_element, reactor_element.getUnlocalizedName()); GameRegistry.registerBlock(reactor_control, reactor_control.getUnlocalizedName()); @@ -3253,7 +3475,7 @@ public class ModBlocks { GameRegistry.registerBlock(reactor_conductor, reactor_conductor.getUnlocalizedName()); GameRegistry.registerBlock(reactor_computer, reactor_computer.getUnlocalizedName()); - GameRegistry.registerBlock(fusion_conductor, fusion_conductor.getUnlocalizedName()); + register(fusion_conductor); GameRegistry.registerBlock(fusion_center, fusion_center.getUnlocalizedName()); GameRegistry.registerBlock(fusion_motor, fusion_motor.getUnlocalizedName()); GameRegistry.registerBlock(fusion_heater, fusion_heater.getUnlocalizedName()); @@ -3309,6 +3531,7 @@ public class ModBlocks { GameRegistry.registerBlock(sat_dock, sat_dock.getUnlocalizedName()); GameRegistry.registerBlock(soyuz_capsule, soyuz_capsule.getUnlocalizedName()); GameRegistry.registerBlock(machine_radar, machine_radar.getUnlocalizedName()); + GameRegistry.registerBlock(radar_screen, radar_screen.getUnlocalizedName()); //Guide GameRegistry.registerBlock(book_guide, book_guide.getUnlocalizedName()); @@ -3326,6 +3549,12 @@ public class ModBlocks { GameRegistry.registerBlock(rail_narrow, ItemBlockBase.class, rail_narrow.getUnlocalizedName()); GameRegistry.registerBlock(rail_highspeed, ItemBlockBase.class, rail_highspeed.getUnlocalizedName()); GameRegistry.registerBlock(rail_booster, ItemBlockBase.class, rail_booster.getUnlocalizedName()); + register(rail_narrow_straight); + register(rail_narrow_curve); + register(rail_large_straight); + register(rail_large_curve); + register(rail_large_ramp); + register(rail_large_buffer); //Crate GameRegistry.registerBlock(crate, crate.getUnlocalizedName()); @@ -3356,8 +3585,6 @@ public class ModBlocks { //Multiblock Dummy Blocks GameRegistry.registerBlock(dummy_block_drill, dummy_block_drill.getUnlocalizedName()); GameRegistry.registerBlock(dummy_port_drill, dummy_port_drill.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_block_assembler, dummy_block_assembler.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_port_assembler, dummy_port_assembler.getUnlocalizedName()); GameRegistry.registerBlock(dummy_block_ams_limiter, dummy_block_ams_limiter.getUnlocalizedName()); GameRegistry.registerBlock(dummy_port_ams_limiter, dummy_port_ams_limiter.getUnlocalizedName()); GameRegistry.registerBlock(dummy_block_ams_emitter, dummy_block_ams_emitter.getUnlocalizedName()); @@ -3414,7 +3641,12 @@ public class ModBlocks { GameRegistry.registerBlock(b, ItemBlockBase.class, b.getUnlocalizedName()); } - /*private static void register(Block b, Class clazz) { + private static void register(Block b, Class clazz) { GameRegistry.registerBlock(b, clazz, b.getUnlocalizedName()); - }*/ + } + + public static void addRemap(String unloc, Block block, int meta) { + Block remap = new BlockRemap(block, meta).setBlockName(unloc); + register(remap, ItemBlockRemap.class); + } } diff --git a/src/main/java/com/hbm/blocks/ModSoundType.java b/src/main/java/com/hbm/blocks/ModSoundType.java index 331a7e27a..0bd8e8a46 100644 --- a/src/main/java/com/hbm/blocks/ModSoundType.java +++ b/src/main/java/com/hbm/blocks/ModSoundType.java @@ -2,18 +2,168 @@ package com.hbm.blocks; import net.minecraft.block.Block; +import java.util.Random; + public class ModSoundType extends Block.SoundType { + protected final String placeSound; + protected final String breakSound; + protected final String stepSound; - public ModSoundType(String name, float volume, float pitch) { - super(name, volume, pitch); + protected ModSoundType(String placeSound, String breakSound, String stepSound, float volume, float pitch) { + super("", volume, pitch); + this.placeSound = placeSound; + this.breakSound = breakSound; + this.stepSound = stepSound; } + public ModEnvelopedSoundType enveloped() { + return new ModEnvelopedSoundType(placeSound, breakSound, stepSound, volume, frequency); + } + + public ModEnvelopedSoundType enveloped(Random random) { + return new ModEnvelopedSoundType(placeSound, breakSound, stepSound, volume, frequency, random); + } + + @Override + public String func_150496_b() { + return placeSound; + } + + @Override public String getBreakSound() { - return "hbm:" + super.getBreakSound(); + return breakSound; } + @Override public String getStepResourcePath() { - return "hbm:" + super.getStepResourcePath(); + return stepSound; } + // creates a sound type with vanilla-like sound strings name-spaced to the mod + public static ModSoundType mod(String soundName, float volume, float pitch) { + return new ModSoundType(modDig(soundName), modDig(soundName), modStep(soundName), volume, pitch); + } + + // these permutations allow creating a sound type with one of the three sounds being custom + // and the other ones defaulting to vanilla-like sound strings name-spaced to the mod + + public static ModSoundType customPlace(String soundName, String placeSound, float volume, float pitch) { + return new ModSoundType(placeSound, modDig(soundName), modStep(soundName), volume, pitch); + } + + public static ModSoundType customBreak(String soundName, String breakSound, float volume, float pitch) { + return new ModSoundType(modDig(soundName), breakSound, modStep(soundName), volume, pitch); + } + + public static ModSoundType customStep(String soundName, String stepSound, float volume, float pitch) { + return new ModSoundType(modDig(soundName), modDig(soundName), stepSound, volume, pitch); + } + + public static ModSoundType customDig(String soundName, String digSound, float volume, float pitch) { + return new ModSoundType(digSound, digSound, modStep(soundName), volume, pitch); + } + + // these permutations copy sounds from an existing sound type and modify one of the sounds, + // but with a manual path for the custom sound + + public static ModSoundType customPlace(Block.SoundType from, String placeSound, float volume, float pitch) { + return new ModSoundType(placeSound, from.getBreakSound(), from.getStepResourcePath(), volume, pitch); + } + + public static ModSoundType customBreak(Block.SoundType from, String breakSound, float volume, float pitch) { + return new ModSoundType(from.func_150496_b(), breakSound, from.getStepResourcePath(), volume, pitch); + } + + public static ModSoundType customStep(Block.SoundType from, String stepSound, float volume, float pitch) { + return new ModSoundType(from.func_150496_b(), from.getBreakSound(), stepSound, volume, pitch); + } + + public static ModSoundType customDig(Block.SoundType from, String dig, float volume, float pitch) { + return new ModSoundType(dig, dig, from.getStepResourcePath(), volume, pitch); + } + + // customizes all sounds + public static ModSoundType placeBreakStep(String placeSound, String breakSound, String stepSound, float volume, float pitch) { + return new ModSoundType(placeSound, breakSound, stepSound, volume, pitch); + } + + private static String modDig(String soundName) { + return "hbm:dig." + soundName; + } + + private static String modStep(String soundName) { + return "hbm:step." + soundName; + } + + public static class ModEnvelopedSoundType extends ModSoundType { + private final Random random; + + ModEnvelopedSoundType(String placeSound, String breakSound, String stepSound, float volume, float pitch, Random random) { + super(placeSound, breakSound, stepSound, volume, pitch); + this.random = random; + } + + ModEnvelopedSoundType(String placeSound, String breakSound, String stepSound, float volume, float pitch) { + this(placeSound, breakSound, stepSound, volume, pitch, new Random()); + } + + // a bit of a hack, but most of the time, playSound is called with the sound path queried first, and then volume and pitch + private SubType probableSubType = SubType.PLACE; + + @Override + public String func_150496_b() { + probableSubType = SubType.PLACE; + return super.func_150496_b(); + } + + @Override + public String getBreakSound() { + probableSubType = SubType.BREAK; + return super.getBreakSound(); + } + + @Override + public String getStepResourcePath() { + probableSubType = SubType.STEP; + return super.getStepResourcePath(); + } + + private Envelope volumeEnvelope = null; + private Envelope pitchEnvelope = null; + + public ModEnvelopedSoundType volumeFunction(Envelope volumeEnvelope) { + this.volumeEnvelope = volumeEnvelope; + return this; + } + + public ModEnvelopedSoundType pitchFunction(Envelope pitchEnvelope) { + this.pitchEnvelope = pitchEnvelope; + return this; + } + + @Override + public float getVolume() { + if (volumeEnvelope == null) + return super.getVolume(); + else + return volumeEnvelope.compute(super.getVolume(), random, probableSubType); + } + + @Override + public float getPitch() { + if (pitchEnvelope == null) + return super.getPitch(); + else + return pitchEnvelope.compute(super.getPitch(), random, probableSubType); + } + + @FunctionalInterface + public interface Envelope { + float compute(float in, Random rand, SubType type); + } + } + + public enum SubType { + PLACE, BREAK, STEP + } } diff --git a/src/main/java/com/hbm/blocks/ModSoundTypes.java b/src/main/java/com/hbm/blocks/ModSoundTypes.java new file mode 100644 index 000000000..85f42f310 --- /dev/null +++ b/src/main/java/com/hbm/blocks/ModSoundTypes.java @@ -0,0 +1,13 @@ +package com.hbm.blocks; + +import com.hbm.main.MainRegistry; +import net.minecraft.block.Block; + +public class ModSoundTypes { + + public static final ModSoundType grate = ModSoundType.customStep(Block.soundTypeStone, "hbm:step.metalBlock", 0.5F, 1.0F); + public static final ModSoundType pipe = ModSoundType.customDig(Block.soundTypeMetal, "hbm:block.pipePlaced", 0.85F, 0.85F).enveloped(MainRegistry.instance.rand).pitchFunction((in, rand, type) -> { + if(type == ModSoundType.SubType.BREAK) in -= 0.15F; + return in + rand.nextFloat() * 0.2F; + }); +} diff --git a/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java b/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java index cf29f747c..680ea9030 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java @@ -16,11 +16,13 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.world.Explosion; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public abstract class BlockTNTBase extends BlockFlammable implements IToolable { @@ -44,6 +46,8 @@ public abstract class BlockTNTBase extends BlockFlammable implements IToolable { if(world.isBlockIndirectlyGettingPowered(x, y, z)) { this.onBlockDestroyedByPlayer(world, x, y, z, 1); world.setBlockToAir(x, y, z); + } else { + checkAndIgnite(world, x, y, z); } } @@ -52,6 +56,19 @@ public abstract class BlockTNTBase extends BlockFlammable implements IToolable { if(world.isBlockIndirectlyGettingPowered(x, y, z)) { this.onBlockDestroyedByPlayer(world, x, y, z, 1); world.setBlockToAir(x, y, z); + } else { + checkAndIgnite(world, x, y, z); + } + } + + public void checkAndIgnite(World world, int x, int y, int z) { + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) == Blocks.fire) { + this.onBlockDestroyedByPlayer(world, x, y, z, 1); + world.setBlockToAir(x, y, z); + return; + } } } @@ -128,8 +145,8 @@ public abstract class BlockTNTBase extends BlockFlammable implements IToolable { if(tool == ToolType.DEFUSER) { if(!world.isRemote) { - world.func_147480_a(x, y, z, true); - this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); + world.func_147480_a(x, y, z, false); + this.dropBlockAsItem(world, x, y, z, 0, 0); } return true; } diff --git a/src/main/java/com/hbm/blocks/bomb/CompactLauncher.java b/src/main/java/com/hbm/blocks/bomb/CompactLauncher.java index 10f7547aa..eb9764411 100644 --- a/src/main/java/com/hbm/blocks/bomb/CompactLauncher.java +++ b/src/main/java/com/hbm/blocks/bomb/CompactLauncher.java @@ -123,7 +123,7 @@ public class CompactLauncher extends BlockContainer implements IMultiblock, IBom TileEntityCompactLauncher entity = (TileEntityCompactLauncher) world.getTileEntity(x, y, z); if(entity.canLaunch()) { - entity.launch(); + entity.launchFromDesignator(); return BombReturnCode.LAUNCHED; } diff --git a/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java b/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java index f3d5f88e8..262f4be36 100644 --- a/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java +++ b/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java @@ -2,7 +2,7 @@ package com.hbm.blocks.bomb; import com.hbm.blocks.ModBlocks; import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; @@ -78,12 +78,7 @@ public class ExplosiveCharge extends Block implements IBomb, IDetConnectible { } if(this == ModBlocks.det_nuke) { world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.missileRadius, x + 0.5, y + 0.5, z + 0.5)); - - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, BombConfig.missileRadius * 0.005F); - entity2.posX = x; - entity2.posY = y; - entity2.posZ = z; - world.spawnEntityInWorld(entity2); + EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius); } } diff --git a/src/main/java/com/hbm/blocks/bomb/LaunchPad.java b/src/main/java/com/hbm/blocks/bomb/LaunchPad.java index 675fbfd38..78436a540 100644 --- a/src/main/java/com/hbm/blocks/bomb/LaunchPad.java +++ b/src/main/java/com/hbm/blocks/bomb/LaunchPad.java @@ -2,38 +2,27 @@ package com.hbm.blocks.bomb; import java.util.Random; -import org.apache.logging.log4j.Level; - import com.hbm.blocks.ModBlocks; -import com.hbm.config.GeneralConfig; -import com.hbm.entity.missile.*; import com.hbm.interfaces.IBomb; -import com.hbm.interfaces.Spaghetti; -import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityLaunchPad; -import api.hbm.item.IDesignatorItem; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class LaunchPad extends BlockContainer implements IBomb { - public TileEntityLaunchPad tetn = new TileEntityLaunchPad(); public static boolean keepInventory = false; private final static Random field_149933_a = new Random(); @@ -46,11 +35,6 @@ public class LaunchPad extends BlockContainer implements IBomb { return new TileEntityLaunchPad(); } - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { - return Item.getItemFromBlock(ModBlocks.launch_pad); - } - @Override public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { if(!keepInventory) { @@ -132,186 +116,16 @@ public class LaunchPad extends BlockContainer implements IBomb { return false; } - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { - int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - - if(i == 0) { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - } - if(i == 1) { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - } - if(i == 2) { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - } - if(i == 3) { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - } - } - - /* - * @Override public void setBlockBoundsBasedOnState(IBlockAccess - * p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) { float f - * = 0.0625F; this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); } - * - * @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World - * world, int x, int y, int z) { float f = 0.0625F; - * this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8*f, 1.0F); return - * AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, - * x + this.maxX, y + this.maxY, z + this.maxZ); } - */ - @Override @SideOnly(Side.CLIENT) public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) { return Item.getItemFromBlock(ModBlocks.launch_pad); } - @Spaghetti("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA *takes breath* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") @Override public BombReturnCode explode(World world, int x, int y, int z) { - TileEntityLaunchPad entity = (TileEntityLaunchPad) world.getTileEntity(x, y, z); - - if(entity.slots[0] == null || world.isRemote) - return BombReturnCode.ERROR_MISSING_COMPONENT; - - if(entity.slots[1] != null && entity.slots[1].getItem() instanceof IDesignatorItem && entity.power >= 75000) { - - if(!((IDesignatorItem)entity.slots[1].getItem()).isReady(world, entity.slots[1], x, y, z)) - return BombReturnCode.ERROR_MISSING_COMPONENT; - - int xCoord = entity.slots[1].stackTagCompound.getInteger("xCoord"); - int zCoord = entity.slots[1].stackTagCompound.getInteger("zCoord"); - - if(xCoord == entity.xCoord && zCoord == entity.zCoord) { - xCoord += 1; - } - - Entity missile = null; - - if(entity.slots[0].getItem() == ModItems.missile_generic) { - missile = new EntityMissileGeneric(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_incendiary) { - missile = new EntityMissileIncendiary(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_cluster) { - missile = new EntityMissileCluster(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_buster) { - missile = new EntityMissileBunkerBuster(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_strong) { - missile = new EntityMissileStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_incendiary_strong) { - missile = new EntityMissileIncendiaryStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_cluster_strong) { - missile = new EntityMissileClusterStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_buster_strong) { - missile = new EntityMissileBusterStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_burst) { - missile = new EntityMissileBurst(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_inferno) { - missile = new EntityMissileInferno(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_rain) { - missile = new EntityMissileRain(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_drill) { - missile = new EntityMissileDrill(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_nuclear) { - missile = new EntityMissileNuclear(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_endo) { - missile = new EntityMissileEndo(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_exo) { - missile = new EntityMissileExo(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_nuclear_cluster) { - missile = new EntityMissileMirv(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_doomsday) { - missile = new EntityMissileDoomsday(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_taint) { - missile = new EntityMissileTaint(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_micro) { - missile = new EntityMissileMicro(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_bhole) { - missile = new EntityMissileBHole(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_schrabidium) { - missile = new EntityMissileSchrabidium(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_emp) { - missile = new EntityMissileEMP(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_emp_strong) { - missile = new EntityMissileEMPStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_volcano) { - missile = new EntityMissileVolcano(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_shuttle) { - missile = new EntityMissileShuttle(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - - if(missile != null) { - world.spawnEntityInWorld(missile); - world.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - entity.power -= 75000; - entity.slots[0] = null; - - if(GeneralConfig.enableExtendedLogging) - MainRegistry.logger.log(Level.INFO, "[MISSILE] Tried to launch missile at " + x + " / " + y + " / " + z + " to " + xCoord + " / " + zCoord + "!"); - return BombReturnCode.LAUNCHED; - } - } - - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_carrier && entity.power >= 75000) { - EntityCarrier missile = new EntityCarrier(world); - missile.posX = x + 0.5F; - missile.posY = y + 1F; - missile.posZ = z + 0.5F; - - if(entity.slots[1] != null) - missile.setPayload(entity.slots[1]); - - world.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - entity.slots[1] = null; - world.playSoundEffect(x, y, z, "hbm:entity.rocketTakeoff", 100.0F, 1.0F); - return BombReturnCode.LAUNCHED; - } - - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_anti_ballistic && entity.power >= 75000) { - EntityMissileAntiBallistic missile = new EntityMissileAntiBallistic(world); - missile.posX = x + 0.5F; - missile.posY = y + 0.5F; - missile.posZ = z + 0.5F; - - world.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - world.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - return BombReturnCode.LAUNCHED; - } - - return BombReturnCode.ERROR_MISSING_COMPONENT; + return entity.launchFromDesignator(); } } diff --git a/src/main/java/com/hbm/blocks/bomb/LaunchTable.java b/src/main/java/com/hbm/blocks/bomb/LaunchTable.java index 3170cea1c..e5f194f59 100644 --- a/src/main/java/com/hbm/blocks/bomb/LaunchTable.java +++ b/src/main/java/com/hbm/blocks/bomb/LaunchTable.java @@ -163,7 +163,7 @@ public class LaunchTable extends BlockContainer implements IMultiblock, IBomb { TileEntityLaunchTable entity = (TileEntityLaunchTable) world.getTileEntity(x, y, z); if(entity.canLaunch()) { - entity.launch(); + entity.launchFromDesignator(); return BombReturnCode.LAUNCHED; } diff --git a/src/main/java/com/hbm/blocks/bomb/NukeBoy.java b/src/main/java/com/hbm/blocks/bomb/NukeBoy.java index 01673e12d..c6b96a476 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeBoy.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeBoy.java @@ -4,11 +4,12 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityNukeBoy; +import com.hbm.util.TrackerUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.Block; @@ -124,7 +125,13 @@ public class NukeBoy extends BlockContainer implements IBomb { world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F); world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.boyRadius, x + 0.5, y + 0.5, z + 0.5)); - world.spawnEntityInWorld(EntityNukeCloudSmall.statFac(world, x, y, z, BombConfig.boyRadius)); + //world.spawnEntityInWorld(EntityNukeCloudSmall.statFac(world, x, y, z, BombConfig.boyRadius)); + + EntityNukeTorex torex = new EntityNukeTorex(world); + torex.setPositionAndRotation(x + 0.5, y + 1, z + 0.5, 0, 0); + torex.getDataWatcher().updateObject(10, 1.5F); + world.spawnEntityInWorld(torex); + TrackerUtil.setTrackingRange(world, torex, 1000); } return false; } diff --git a/src/main/java/com/hbm/blocks/bomb/NukeCustom.java b/src/main/java/com/hbm/blocks/bomb/NukeCustom.java index a00b74d56..ebc21403e 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeCustom.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeCustom.java @@ -4,7 +4,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.entity.effect.EntityCloudFleija; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.grenade.EntityGrenadeZOMG; import com.hbm.entity.logic.EntityBalefire; import com.hbm.entity.logic.EntityNukeExplosionMK3; @@ -169,7 +169,7 @@ public class NukeCustom extends BlockContainer implements IBomb { bf.setPosition(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); bf.destructionRange = (int) amat; worldObj.spawnEntityInWorld(bf); - worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFacBale(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, amat * 1.5F, 1000)); + EntityNukeTorex.statFacBale(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, amat); /// HYDROGEN /// } else if(hydro > 0) { @@ -179,7 +179,7 @@ public class NukeCustom extends BlockContainer implements IBomb { dirty *= 0.25F; worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)hydro, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).moreFallout((int)dirty)); - worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, hydro)); + EntityNukeTorex.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, hydro); /// NUCLEAR /// } else if(nuke > 0) { @@ -188,7 +188,7 @@ public class NukeCustom extends BlockContainer implements IBomb { nuke = Math.min(nuke, maxNuke); worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)nuke, xCoord + 0.5, yCoord + 5, zCoord + 0.5).moreFallout((int)dirty)); - worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, nuke)); + EntityNukeTorex.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, nuke); /// NON-NUCLEAR /// } else if(tnt >= 75) { @@ -196,7 +196,7 @@ public class NukeCustom extends BlockContainer implements IBomb { tnt = Math.min(tnt, maxTnt); worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(worldObj, (int)tnt, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5)); - worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, tnt)); + EntityNukeTorex.statFac(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, tnt); } else if(tnt > 0) { ExplosionLarge.explode(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, tnt, true, true, true); diff --git a/src/main/java/com/hbm/blocks/bomb/NukeGadget.java b/src/main/java/com/hbm/blocks/bomb/NukeGadget.java index 9c555b132..a09d7c31f 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeGadget.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeGadget.java @@ -4,7 +4,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; @@ -130,13 +130,8 @@ public class NukeGadget extends BlockContainer implements IBomb { tetn.clearSlots(); world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F); - world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.gadgetRadius, x + 0.5, y + 0.5, z + 0.5)); - - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, BombConfig.gadgetRadius * 0.005F); - entity2.posX = x; - entity2.posY = y; - entity2.posZ = z; - world.spawnEntityInWorld(entity2); + world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.gadgetRadius, x + 0.5, y + 0.5, z + 0.5)); + EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.gadgetRadius); } return false; diff --git a/src/main/java/com/hbm/blocks/bomb/NukeMan.java b/src/main/java/com/hbm/blocks/bomb/NukeMan.java index 9f8a8b941..d9fc4f1a5 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeMan.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeMan.java @@ -4,7 +4,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; @@ -124,12 +124,7 @@ public class NukeMan extends BlockContainer implements IBomb { world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F); world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.manRadius, x + 0.5, y + 0.5, z + 0.5)); - - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, BombConfig.manRadius * 0.005F); - entity2.posX = x; - entity2.posY = y; - entity2.posZ = z; - world.spawnEntityInWorld(entity2); + EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.manRadius); } return false; diff --git a/src/main/java/com/hbm/blocks/bomb/NukeMike.java b/src/main/java/com/hbm/blocks/bomb/NukeMike.java index 75216a1eb..84e178758 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeMike.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeMike.java @@ -4,7 +4,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; @@ -131,12 +131,7 @@ public class NukeMike extends BlockContainer implements IBomb { world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F); world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.mikeRadius, x + 0.5, y + 0.5, z + 0.5)); - - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F); - entity2.posX = x; - entity2.posY = y; - entity2.posZ = z; - world.spawnEntityInWorld(entity2); + EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.mikeRadius); } return false; diff --git a/src/main/java/com/hbm/blocks/bomb/NukeN2.java b/src/main/java/com/hbm/blocks/bomb/NukeN2.java index a01f83d25..c65eef0f7 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeN2.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeN2.java @@ -4,7 +4,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; @@ -120,12 +120,7 @@ public class NukeN2 extends BlockContainer implements IBomb { world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F); world.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(world, r, x + 0.5, y + 0.5, z + 0.5)); - - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F); - entity2.posX = x; - entity2.posY = y; - entity2.posZ = z; - world.spawnEntityInWorld(entity2); + EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, r); } return false; diff --git a/src/main/java/com/hbm/blocks/bomb/NukeTsar.java b/src/main/java/com/hbm/blocks/bomb/NukeTsar.java index 51514ced2..f064a053a 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeTsar.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeTsar.java @@ -4,7 +4,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; @@ -127,18 +127,9 @@ public class NukeTsar extends BlockContainer implements IBomb { public boolean igniteTestBomb(World world, int x, int y, int z, int r) { if(!world.isRemote) { tetn.clearSlots(); - // world.spawnParticle("hugeexplosion", x, y, z, 0, 0, 0); world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F); - world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, r, x + 0.5, y + 0.5, z + 0.5)); - - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F); - entity2.posX = x; - entity2.posY = y; - entity2.posZ = z; - world.spawnEntityInWorld(entity2); - - // ExplosionNukeAdvanced.mush(world, x, y, z); + EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, r); } return false; diff --git a/src/main/java/com/hbm/blocks/fluid/CoriumBlock.java b/src/main/java/com/hbm/blocks/fluid/CoriumBlock.java index 5c418b60b..ac5fb835f 100644 --- a/src/main/java/com/hbm/blocks/fluid/CoriumBlock.java +++ b/src/main/java/com/hbm/blocks/fluid/CoriumBlock.java @@ -62,7 +62,7 @@ public class CoriumBlock extends BlockFluidClassic { return true; Random rand = new Random(); - return b.getMaterial().isLiquid() || rand.nextInt((int) res) == 0; + return b.getMaterial().isLiquid() || rand.nextInt((int) (res * res)) == 0; } @Override diff --git a/src/main/java/com/hbm/blocks/fluid/CoriumFinite.java b/src/main/java/com/hbm/blocks/fluid/CoriumFinite.java new file mode 100644 index 000000000..1861e41b9 --- /dev/null +++ b/src/main/java/com/hbm/blocks/fluid/CoriumFinite.java @@ -0,0 +1,84 @@ +package com.hbm.blocks.fluid; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.ModDamageSource; +import com.hbm.util.ContaminationUtil; +import com.hbm.util.ContaminationUtil.ContaminationType; +import com.hbm.util.ContaminationUtil.HazardType; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.fluids.Fluid; + +public class CoriumFinite extends GenericFiniteFluid { + + public CoriumFinite(Fluid fluid, Material material) { + super(fluid, material, "corium_still", "corium_flowing"); + setQuantaPerBlock(5); + this.tickRate = 30; + } + + @Override + public boolean canDisplace(IBlockAccess world, int x, int y, int z) { + Block b = world.getBlock(x, y, z); + float res = (float) (Math.sqrt(b.getExplosionResistance(null)) * 3); + + if(res < 1) + return true; + Random rand = new Random(); + + return b.getMaterial().isLiquid() || rand.nextInt((int) res) == 0; + } + + @Override + public boolean displaceIfPossible(World world, int x, int y, int z) { + + if(world.getBlock(x, y, z).getMaterial().isLiquid()) { + return false; + } + return canDisplace(world, x, y, z); + } + + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { + entity.setInWeb(); + entity.setFire(3); + entity.attackEntityFrom(ModDamageSource.radiation, 2F); + + if(entity instanceof EntityLivingBase) + ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.CREATIVE, 1F); + } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + + super.updateTick(world, x, y, z, rand); + + if(!world.isRemote && rand.nextInt(10) == 0 && world.getBlock(x, y - 1, z) != this) { + + if(rand.nextInt(3) == 0) + world.setBlock(x, y, z, ModBlocks.block_corium); + else + world.setBlock(x, y, z, ModBlocks.block_corium_cobble); + } + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() { + return 0; + } + + @Override + public boolean isReplaceable(IBlockAccess world, int x, int y, int z) { + return false; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockBedrockOre.java b/src/main/java/com/hbm/blocks/generic/BlockBedrockOre.java deleted file mode 100644 index 766f3df31..000000000 --- a/src/main/java/com/hbm/blocks/generic/BlockBedrockOre.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.hbm.blocks.generic; - -import com.hbm.blocks.ModBlocks; -import com.hbm.items.ModItems; - -import api.hbm.block.IDrillInteraction; -import api.hbm.block.IMiningDrill; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class BlockBedrockOre extends Block implements IDrillInteraction { - - public BlockBedrockOre() { - super(Material.rock); - } - - @Override - public boolean canBreak(World world, int x, int y, int z, int meta, IMiningDrill drill) { - return drill.getDrillRating() > 70; - } - - @Override - public ItemStack extractResource(World world, int x, int y, int z, int meta, IMiningDrill drill) { - - if(drill.getDrillRating() > 70) - return null; - - Item drop = this.getDrop(); - - if(drop == null) - return null; - - return world.rand.nextInt(50) == 0 ? new ItemStack(drop) : null; - } - - @Override - public float getRelativeHardness(World world, int x, int y, int z, int meta, IMiningDrill drill) { - return 30; - } - - private Item getDrop() { - - if(this == ModBlocks.ore_bedrock_coltan) - return ModItems.fragment_coltan; - - return null; - } -} diff --git a/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java b/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java index 6d5b525cc..040c22cba 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java @@ -145,7 +145,7 @@ public class BlockBedrockOreTE extends BlockContainer implements ILookOverlay, I text.add("Tier: " + ore.tier); if(ore.acidRequirement != null) { - text.add("Requires: " + ore.acidRequirement.fill + "mB " + I18nUtil.resolveKey(ore.acidRequirement.type.getUnlocalizedName())); + text.add("Requires: " + ore.acidRequirement.fill + "mB " + ore.acidRequirement.type.getLocalizedName()); } ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); diff --git a/src/main/java/com/hbm/blocks/generic/BlockBiomeStone.java b/src/main/java/com/hbm/blocks/generic/BlockBiomeStone.java new file mode 100644 index 000000000..157270048 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockBiomeStone.java @@ -0,0 +1,55 @@ +package com.hbm.blocks.generic; + +import java.util.Locale; + +import com.hbm.blocks.BlockEnumMulti; +import com.hbm.blocks.BlockEnums.EnumBiomeType; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class BlockBiomeStone extends BlockEnumMulti { + + public BlockBiomeStone() { + super(Material.rock, EnumBiomeType.class, true, true); + } + + protected IIcon[] iconsTop; + protected IIcon[] iconsLayer; + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + + Enum[] enums = theEnum.getEnumConstants(); + this.icons = new IIcon[enums.length]; + this.iconsTop = new IIcon[enums.length]; + this.iconsLayer = new IIcon[enums.length]; + + for(int i = 0; i < icons.length; i++) { + Enum num = enums[i]; + this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase(Locale.US)); + this.iconsTop[i] = reg.registerIcon(this.getTextureName() + "_top." + num.name().toLowerCase(Locale.US)); + this.iconsLayer[i] = reg.registerIcon(this.getTextureName() + "_layer." + num.name().toLowerCase(Locale.US)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + + int meta = world.getBlockMetadata(x, y, z); + if(side == 0) return this.iconsTop[meta % this.icons.length]; + if(side == 1) return this.iconsTop[meta % this.icons.length]; + + if(world.getBlock(x, y + 1, z) == this && world.getBlockMetadata(x, y + 1, z) == meta) { + return this.getIcon(side, meta); + } else { + return this.iconsLayer[meta % this.icons.length]; + } + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockBobble.java b/src/main/java/com/hbm/blocks/generic/BlockBobble.java index df84bf616..afd48197b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBobble.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBobble.java @@ -1,13 +1,9 @@ package com.hbm.blocks.generic; -import java.util.List; -import java.util.Random; - import com.hbm.inventory.gui.GUIScreenBobble; import com.hbm.items.special.ItemPlasticScrap.ScrapType; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -33,6 +29,9 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import java.util.List; +import java.util.Random; + public class BlockBobble extends BlockContainer implements IGUIProvider { public BlockBobble() { @@ -171,27 +170,29 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { public static enum BobbleType { - NONE( "null", "null", null, null, false, ScrapType.BOARD_BLANK), - STRENGTH( "Strength", "Strength", null, "It's essential to give your arguments impact.", false, ScrapType.BRIDGE_BIOS), - PERCEPTION( "Perception", "Perception", null, "Only through observation will you perceive weakness.", false, ScrapType.BRIDGE_NORTH), - ENDURANCE( "Endurance", "Endurance", null, "Always be ready to take one for the team.", false, ScrapType.BRIDGE_SOUTH), - CHARISMA( "Charisma", "Charisma", null, "Nothing says pizzaz like a winning smile.", false, ScrapType.BRIDGE_IO), - INTELLIGENCE( "Intelligence", "Intelligence", null, "It takes the smartest individuals to realize$there's always more to learn.", false, ScrapType.BRIDGE_BUS), - AGILITY( "Agility", "Agility", null, "Never be afraid to dodge the sensitive issues.", false, ScrapType.BRIDGE_CHIPSET), - LUCK( "Luck", "Luck", null, "There's only one way to give 110%.", false, ScrapType.BRIDGE_CMOS), - BOB( "Robert \"The Bobcat\" Katzinsky", "HbMinecraft", "Hbm's Nuclear Tech Mod", "I know where you live, " + System.getProperty("user.name"), false, ScrapType.CPU_SOCKET), - FRIZZLE( "Frooz", "Frooz", "Weapon models", "BLOOD IS FUEL", true, ScrapType.CPU_CLOCK), - PU238( "Pu-238", "Pu-238", "Improved Tom impact mechanics", null, false, ScrapType.CPU_REGISTER), - VT( "VT-6/24", "VT-6/24", "Balefire warhead model and general texturework", "You cannot unfuck a horse.", true, ScrapType.CPU_EXT), - DOC( "The Doctor", "Doctor17PH", "Russian localization, lunar miner", "Perhaps the moon rocks were too expensive", true, ScrapType.CPU_CACHE), - BLUEHAT( "The Blue Hat", "The Blue Hat", "Textures", "payday 2's deagle freeaim champ of the year 2022", true, ScrapType.MEM_16K_A), - PHEO( "Pheo", "Pheonix", "Deuterium machines, tantalium textures, Reliant Rocket", "RUN TO THE BEDROOM, ON THE SUITCASE ON THE LEFT,$YOU'LL FIND MY FAVORITE AXE", true, ScrapType.MEM_16K_B), - ADAM29( "Adam29", "Adam29", "Ethanol, liquid petroleum gas", "You know, nukes are really quite beatiful.$It's like watching a star be born for a split second.", true, ScrapType.MEM_16K_C), - UFFR( "UFFR", "UFFR", "All sorts of things from his PR", "fried shrimp", false, ScrapType.MEM_SOCKET), - VAER( "vaer", "vaer", "ZIRNOX", "taken de family out to the weekend cigarette festival", true, ScrapType.MEM_16K_D), - NOS( "Dr Nostalgia", "Dr Nostalgia", "SSG and Vortex models", "Take a picture, I'ma pose, paparazzi$I've been drinking, moving like a zombie", true, ScrapType.BOARD_TRANSISTOR), - DRILLGON( "Drillgon200", "Drillgon200", "1.12 Port", null, false, ScrapType.CPU_LOGIC), - CIRNO( "Cirno", "Cirno", "the only multi layered skin i had", "No brain. Head empty.", true, ScrapType.BOARD_BLANK); + NONE( "null", "null", null, null, false, ScrapType.BOARD_BLANK), + STRENGTH( "Strength", "Strength", null, "It's essential to give your arguments impact.", false, ScrapType.BRIDGE_BIOS), + PERCEPTION( "Perception", "Perception", null, "Only through observation will you perceive weakness.", false, ScrapType.BRIDGE_NORTH), + ENDURANCE( "Endurance", "Endurance", null, "Always be ready to take one for the team.", false, ScrapType.BRIDGE_SOUTH), + CHARISMA( "Charisma", "Charisma", null, "Nothing says pizzaz like a winning smile.", false, ScrapType.BRIDGE_IO), + INTELLIGENCE( "Intelligence", "Intelligence", null, "It takes the smartest individuals to realize$there's always more to learn.", false, ScrapType.BRIDGE_BUS), + AGILITY( "Agility", "Agility", null, "Never be afraid to dodge the sensitive issues.", false, ScrapType.BRIDGE_CHIPSET), + LUCK( "Luck", "Luck", null, "There's only one way to give 110%.", false, ScrapType.BRIDGE_CMOS), + BOB( "Robert \"The Bobcat\" Katzinsky", "HbMinecraft", "Hbm's Nuclear Tech Mod", "I know where you live, " + System.getProperty("user.name"), false, ScrapType.CPU_SOCKET), + FRIZZLE( "Frooz", "Frooz", "Weapon models", "BLOOD IS FUEL", true, ScrapType.CPU_CLOCK), + PU238( "Pu-238", "Pu-238", "Improved Tom impact mechanics", null, false, ScrapType.CPU_REGISTER), + VT( "VT-6/24", "VT-6/24", "Balefire warhead model and general texturework", "You cannot unfuck a horse.", true, ScrapType.CPU_EXT), + DOC( "The Doctor", "Doctor17PH", "Russian localization, lunar miner", "Perhaps the moon rocks were too expensive", true, ScrapType.CPU_CACHE), + BLUEHAT( "The Blue Hat", "The Blue Hat", "Textures", "payday 2's deagle freeaim champ of the year 2022", true, ScrapType.MEM_16K_A), + PHEO( "Pheo", "Pheonix", "Deuterium machines, tantalium textures, Reliant Rocket", "RUN TO THE BEDROOM, ON THE SUITCASE ON THE LEFT,$YOU'LL FIND MY FAVORITE AXE", true, ScrapType.MEM_16K_B), + ADAM29( "Adam29", "Adam29", "Ethanol, liquid petroleum gas", "You know, nukes are really quite beatiful.$It's like watching a star be born for a split second.", true, ScrapType.MEM_16K_C), + UFFR( "UFFR", "UFFR", "All sorts of things from his PR", "fried shrimp", false, ScrapType.MEM_SOCKET), + VAER( "vaer", "vaer", "ZIRNOX", "taken de family out to the weekend cigarette festival", true, ScrapType.MEM_16K_D), + NOS( "Dr Nostalgia", "Dr Nostalgia", "SSG and Vortex models", "Take a picture, I'ma pose, paparazzi$I've been drinking, moving like a zombie", true, ScrapType.BOARD_TRANSISTOR), + DRILLGON( "Drillgon200", "Drillgon200", "1.12 Port", null, false, ScrapType.CPU_LOGIC), + CIRNO( "Cirno", "Cirno", "the only multi layered skin i had", "No brain. Head empty.", true, ScrapType.BOARD_BLANK), + MICROWAVE( "Microwave", "Microwave", "OC Compatibility", "they call me the food heater", true, ScrapType.BRIDGE_BIOS), + PEEP( "Peep", "LePeeperSauvage", "Coilgun, Leadburster and Congo Lake models, BDCL QC", "Fluffy ears can't hide in ash, nor snow.", true, ScrapType.CPU_CLOCK); public String name; //the title of the tooltip public String label; //the name engraved in the socket diff --git a/src/main/java/com/hbm/blocks/generic/BlockConcreteColoredExt.java b/src/main/java/com/hbm/blocks/generic/BlockConcreteColoredExt.java new file mode 100644 index 000000000..929d2281a --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockConcreteColoredExt.java @@ -0,0 +1,35 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.BlockEnumMulti; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.util.IIcon; + +public class BlockConcreteColoredExt extends BlockEnumMulti { + + public BlockConcreteColoredExt(Material mat) { + super(mat, EnumConcreteType.class, true, true); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + + if(meta == EnumConcreteType.MACHINE_STRIPE.ordinal() && (side == 0 || side == 1)) { + return super.getIcon(side, EnumConcreteType.MACHINE.ordinal()); + } + + return super.getIcon(side, meta); + } + + public enum EnumConcreteType { + MACHINE, + MACHINE_STRIPE, + INDIGO, + PURPLE, + PINK, + HAZARD + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java index 4dad6a3a9..ea3780a27 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java @@ -3,6 +3,7 @@ package com.hbm.blocks.generic; import java.util.List; import com.hbm.blocks.BlockDummyable; +import com.hbm.items.special.ItemDoorSkin; import com.hbm.tileentity.DoorDecl; import com.hbm.tileentity.TileEntityDoorGeneric; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -54,12 +55,14 @@ public class BlockDoorGeneric extends BlockDummyable { TileEntityDoorGeneric door = (TileEntityDoorGeneric) world.getTileEntity(pos1[0], pos1[1], pos1[2]); if(door != null) { - return door.tryToggle(playerIn); + if(playerIn.getHeldItem() != null && playerIn.getHeldItem().getItem() instanceof ItemDoorSkin) { + return door.setSkinIndex((byte) playerIn.getHeldItem().getItemDamage()); + } else { + return door.tryToggle(playerIn); + } } } - if(!playerIn.isSneaking()) - return true; - return false; + return !playerIn.isSneaking(); } @Override diff --git a/src/main/java/com/hbm/blocks/generic/BlockDynamicSlag.java b/src/main/java/com/hbm/blocks/generic/BlockDynamicSlag.java new file mode 100644 index 000000000..fc053c80c --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockDynamicSlag.java @@ -0,0 +1,278 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.material.NTMMaterial; +import com.hbm.items.machine.ItemScraps; +import com.hbm.render.icon.RGBMutatorInterpolatedComponentRemap; +import com.hbm.render.icon.TextureAtlasSpriteMutatable; +import com.hbm.util.Compat; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.stats.StatList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockDynamicSlag extends BlockContainer { + + private HashMap iconMap = new HashMap(); + + public BlockDynamicSlag() { + super(Material.iron); + this.useNeighborBrightness = true; + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntitySlag(); + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + + if(reg instanceof TextureMap) { + TextureMap map = (TextureMap) reg; + + for(NTMMaterial mat : Mats.orderedList) { + if(mat.solidColorLight != mat.solidColorDark) { + String placeholderName = this.getTextureName() + "-" + mat.names[0]; + TextureAtlasSpriteMutatable mutableIcon = new TextureAtlasSpriteMutatable(placeholderName, new RGBMutatorInterpolatedComponentRemap(0xFFFFFF, 0x505050, mat.solidColorLight, mat.solidColorDark)).setBlockAtlas(); + map.setTextureEntry(placeholderName, mutableIcon); + iconMap.put(mat, mutableIcon); + } + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + + TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z); + + if(tile != null && tile.mat != null) { + IIcon override = iconMap.get(tile.mat); + if(override != null) { + return override; + } + } + + return this.blockIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public int colorMultiplier(IBlockAccess world, int x, int y, int z) { + + TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z); + + if(tile != null && tile.mat != null) { + if(!iconMap.containsKey(tile.mat)) { + return tile.mat.moltenColor; + } + } + + return 0xffffff; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z); + if(tile != null) { + this.setBlockBounds(0F, 0F, 0F, 1F, (float) tile.amount / (float) TileEntitySlag.maxAmount, 1F); + } + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z); + if(tile != null) { + this.setBlockBounds(0F, 0F, 0F, 1F, (float) tile.amount / (float) TileEntitySlag.maxAmount, 1F); + } + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + + TileEntity s = Compat.getTileStandard(world, x, y, z); + TileEntity b = Compat.getTileStandard(world, x, y - 1, z); + + /* Error here, delete the block */ + if(s == null || !(s instanceof TileEntitySlag)) { + world.setBlockToAir(x, y, z); + return; + } + + TileEntitySlag self = (TileEntitySlag) s; + + /* Flow down */ + if(world.getBlock(x, y - 1, z).isReplaceable(world, x, y - 1, z)) { + world.setBlock(x, y - 1, z, ModBlocks.slag); + TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, x, y - 1, z); + tile.mat = self.mat; + tile.amount = self.amount; + world.markBlockForUpdate(x, y - 1, z); + world.setBlockToAir(x, y, z); + return; + } else if(b instanceof TileEntitySlag) { + + TileEntitySlag below = (TileEntitySlag) b; + + if(below.mat == self.mat && below.amount < TileEntitySlag.maxAmount) { + int transfer = Math.min(TileEntitySlag.maxAmount - below.amount, self.amount); + below.amount += transfer; + self.amount -= transfer; + + if(self.amount <= 0){ + world.setBlockToAir(x, y, z); + } else { + world.markBlockForUpdate(x, y, z); + } + + world.markBlockForUpdate(x, y - 1, z); + world.scheduleBlockUpdate(x, y - 1, z, ModBlocks.slag, 1); + return; + } + } + + /* Flow sideways, no neighbors */ + ForgeDirection[] sides = new ForgeDirection[] { ForgeDirection.NORTH, ForgeDirection.SOUTH, ForgeDirection.EAST, ForgeDirection.WEST }; + int count = 0; + for(ForgeDirection dir : sides) { + int iX = x + dir.offsetX; + int iZ = z + dir.offsetZ; + + if(world.getBlock(iX, y, iZ).isReplaceable(world, iX, y, iZ)) { + count++; + } + } + + if(self.amount >= self.maxAmount / 5 && count > 0) { + int toSpread = Math.max(self.amount / (count * 2), 1); + + for(ForgeDirection dir : sides) { + int iX = x + dir.offsetX; + int iZ = z + dir.offsetZ; + + if(world.getBlock(iX, y, iZ).isReplaceable(world, iX, y, iZ)) { + world.setBlock(iX, y, iZ, ModBlocks.slag); + TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, iX, y, iZ); + world.markBlockForUpdate(iX, y, iZ); + world.scheduleBlockUpdate(iX, y, iZ, ModBlocks.slag, 1); + tile.mat = self.mat; + tile.amount = toSpread; + self.amount -= toSpread; + world.markBlockForUpdate(x, y, z); + } + } + } + } + + @Override + public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { + + if(!player.capabilities.isCreativeMode) { + harvesters.set(player); + this.dropBlockAsItem(world, x, y, z, meta, 0); + harvesters.set(null); + } + } + + @Override + public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) { + player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1); + player.addExhaustion(0.025F); + } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + ArrayList ret = new ArrayList(); + + TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z); + + if(tile != null && tile.mat != null && tile.amount > 0) { + ret.add(ItemScraps.create(new MaterialStack(tile.mat, tile.amount))); + } + + return ret; + } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { + + TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z); + + if(tile != null) { + return ItemScraps.create(new MaterialStack(tile.mat, tile.amount)); + } + + return super.getPickBlock(target, world, x, y, z, player); + } + + public static class TileEntitySlag extends TileEntity { + + public NTMMaterial mat; + public int amount; + public static int maxAmount = MaterialShapes.BLOCK.q(16); + + @Override + public boolean canUpdate() { + return false; + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.mat = Mats.matById.get(nbt.getInteger("mat")); + this.amount = nbt.getInteger("amount"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + if(this.mat != null) nbt.setInteger("mat", this.mat.id); + nbt.setInteger("amount", this.amount); + } + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java new file mode 100644 index 000000000..267624e28 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java @@ -0,0 +1,43 @@ +package com.hbm.blocks.generic; + +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class BlockGlyphid extends Block { + + public IIcon[] icons = new IIcon[2]; + + public BlockGlyphid(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + long l = (long) (x * 3129871) ^ (long)y * 116129781L ^ (long)z; + l = l * l * 42317861L + l * 11L; + int i = (int)(l >> 16 & 3L); + return icons[(int)(Math.abs(i) % this.icons.length)]; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return icons[meta % this.icons.length]; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + icons[0] = reg.registerIcon(RefStrings.MODID + ":glyphid_base"); + icons[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_alt"); + } + +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java new file mode 100644 index 000000000..f02a8efba --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java @@ -0,0 +1,92 @@ +package com.hbm.blocks.generic; + +import java.util.List; +import java.util.Random; + +import com.hbm.config.MobConfig; +import com.hbm.entity.mob.EntityGlyphid; +import com.hbm.entity.mob.EntityGlyphidBehemoth; +import com.hbm.entity.mob.EntityGlyphidBlaster; +import com.hbm.entity.mob.EntityGlyphidBombardier; +import com.hbm.entity.mob.EntityGlyphidBrawler; +import com.hbm.entity.mob.EntityGlyphidBrenda; +import com.hbm.entity.mob.EntityGlyphidNuclear; +import com.hbm.entity.mob.EntityGlyphidScout; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.items.ModItems; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.EnumDifficulty; +import net.minecraft.world.World; + +public class BlockGlyphidSpawner extends BlockContainer { + + public BlockGlyphidSpawner(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public Item getItemDropped(int meta, Random rand, int fortune) { + return ModItems.egg_glyphid; + } + + @Override + public int quantityDropped(int meta, int fortune, Random rand) { + return 1 + rand.nextInt(3) + fortune; + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityGlpyhidSpawner(); + } + + public static class TileEntityGlpyhidSpawner extends TileEntity { + + @Override + public void updateEntity() { + + if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 60 == 0 && this.worldObj.difficultySetting != EnumDifficulty.PEACEFUL) { + + int count = 0; + + for(Object e : worldObj.loadedEntityList) { + if(e instanceof EntityGlyphid) { + count++; + if(count >= MobConfig.spawnMax) return; + } + } + + float soot = PollutionHandler.getPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT); + List list = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord - 6, yCoord + 1, zCoord - 6, xCoord + 7, yCoord + 9, zCoord + 7)); + + if(list.size() < 3) { + EntityGlyphid glyphid = createGlyphid(soot); + glyphid.setLocationAndAngles(xCoord + 0.5, yCoord + 1, zCoord + 0.5, worldObj.rand.nextFloat() * 360.0F, 0.0F); + this.worldObj.spawnEntityInWorld(glyphid); + } + + if(worldObj.rand.nextInt(20) == 0 && soot >= MobConfig.scoutThreshold) { + EntityGlyphidScout scout = new EntityGlyphidScout(worldObj); + scout.setLocationAndAngles(xCoord + 0.5, yCoord + 1, zCoord + 0.5, worldObj.rand.nextFloat() * 360.0F, 0.0F); + this.worldObj.spawnEntityInWorld(scout); + } + } + } + + public EntityGlyphid createGlyphid(float soot) { + Random rand = new Random(); + + if(soot < MobConfig.tier2Threshold) return rand.nextInt(5) == 0 ? new EntityGlyphidBombardier(worldObj) : new EntityGlyphid(worldObj); + if(soot < MobConfig.tier3Threshold) return rand.nextInt(5) == 0 ? new EntityGlyphidBombardier(worldObj) : new EntityGlyphidBrawler(worldObj); + if(soot < MobConfig.tier4Threshold) return rand.nextInt(5) == 0 ? new EntityGlyphidBlaster(worldObj) : new EntityGlyphidBehemoth(worldObj); + if(soot < MobConfig.tier5Threshold) return rand.nextInt(5) == 0 ? new EntityGlyphidBlaster(worldObj) : new EntityGlyphidBrenda(worldObj); + + return rand.nextInt(3) == 0 ? new EntityGlyphidBlaster(worldObj) : new EntityGlyphidNuclear(worldObj); + } + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockHazard.java b/src/main/java/com/hbm/blocks/generic/BlockHazard.java index 94008085f..b3bdfc145 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockHazard.java +++ b/src/main/java/com/hbm/blocks/generic/BlockHazard.java @@ -138,6 +138,7 @@ public class BlockHazard extends Block implements ITooltipProvider { public void onBlockAdded(World world, int x, int y, int z) { super.onBlockAdded(world, x, y, z); + // who wrote this??? rad = HazardSystem.getHazardLevelFromStack(new ItemStack(this), HazardRegistry.RADIATION) * 0.1F; if(this.rad > 0) diff --git a/src/main/java/com/hbm/blocks/generic/BlockLantern.java b/src/main/java/com/hbm/blocks/generic/BlockLantern.java new file mode 100644 index 000000000..7b725afc9 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockLantern.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.deco.TileEntityLantern; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BlockLantern extends BlockDummyable { + + public BlockLantern() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityLantern(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {4, 0, 0, 0, 0, 0}; + } + + @Override + public int getOffset() { + return 0; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockLanternBehemoth.java b/src/main/java/com/hbm/blocks/generic/BlockLanternBehemoth.java new file mode 100644 index 000000000..843a7c7b7 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockLanternBehemoth.java @@ -0,0 +1,67 @@ +package com.hbm.blocks.generic; + +import java.util.Random; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; +import com.hbm.extprop.HbmPlayerProps; +import com.hbm.tileentity.IRepairable; +import com.hbm.tileentity.deco.TileEntityLanternBehemoth; + +import api.hbm.block.IToolable; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class BlockLanternBehemoth extends BlockDummyable implements IToolable, ILookOverlay { + + public BlockLanternBehemoth() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityLanternBehemoth(); + return null; + } + + @Override + public Item getItemDropped(int i, Random rand, int j) { + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {4, 0, 0, 0, 0, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + + if(tool != ToolType.TORCH) return false; + boolean didRepair = IRepairable.tryRepairMultiblock(world, x, y, z, this, player); + + if(didRepair) { + HbmPlayerProps data = HbmPlayerProps.getData(player); + data.reputation++; + } + + return didRepair; + } + + @Override + @SideOnly(Side.CLIENT) + public void printHook(Pre event, World world, int x, int y, int z) { + IRepairable.addGenericOverlay(event, world, x, y, z, this); + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockLayering.java b/src/main/java/com/hbm/blocks/generic/BlockLayering.java index 7b45bbe3a..d4f516436 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockLayering.java +++ b/src/main/java/com/hbm/blocks/generic/BlockLayering.java @@ -2,6 +2,7 @@ package com.hbm.blocks.generic; import java.util.Random; +import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.ZirnoxDestroyed; import com.hbm.blocks.machine.rbmk.RBMKDebris; @@ -99,6 +100,7 @@ public class BlockLayering extends Block { } public boolean isReplaceable(IBlockAccess world, int x, int y, int z) { + if(this == ModBlocks.leaves_layer) return true; int meta = world.getBlockMetadata(x, y, z); return meta >= 7 ? false : blockMaterial.isReplaceable(); } diff --git a/src/main/java/com/hbm/blocks/generic/BlockNTMGlass.java b/src/main/java/com/hbm/blocks/generic/BlockNTMGlass.java index 440352102..acfdc1521 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockNTMGlass.java +++ b/src/main/java/com/hbm/blocks/generic/BlockNTMGlass.java @@ -22,19 +22,23 @@ public class BlockNTMGlass extends BlockBreakable { this.doesDrop = doesDrop; } + @Override public int quantityDropped(Random rand) { return doesDrop ? 1 : 0; } + @Override @SideOnly(Side.CLIENT) public int getRenderBlockPass() { return renderLayer; } + @Override public boolean renderAsNormalBlock() { return false; } + @Override protected boolean canSilkHarvest() { return true; } diff --git a/src/main/java/com/hbm/blocks/generic/BlockNTMGlassPane.java b/src/main/java/com/hbm/blocks/generic/BlockNTMGlassPane.java new file mode 100644 index 000000000..204064e52 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockNTMGlassPane.java @@ -0,0 +1,52 @@ +package com.hbm.blocks.generic; + +import java.util.Random; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockPane; +import net.minecraft.block.material.Material; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockNTMGlassPane extends BlockPane +{ + int renderLayer; + boolean doesDrop = false; + + //NOTE when you have eclipse make the constructor for you it *WILL BE 'protected'* so make sure to make this public like below. + /*public BlockNTMGlassPane(String flatFaceTextureName, String rimTextureName, + Material mat, boolean bool) { + super(flatFaceTextureName, rimTextureName, mat, bool); + // TODO Auto-generated constructor stub + this.setLightOpacity(1); + this.opaque = true; + }*/ + + public BlockNTMGlassPane(int layer, String name, String rimTextureName, Material material, boolean doesDrop) { + super(name, rimTextureName, material, false); + this.renderLayer = layer; + this.doesDrop = doesDrop; + this.opaque = true; + this.setLightOpacity(1); + } + + @Override + public boolean canPaneConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir) { + Block b = world.getBlock(x, y, z); + return super.canPaneConnectTo(world, x, y, z, dir) || b instanceof BlockNTMGlass; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() { + return renderLayer; + } + + @Override + public int quantityDropped(Random rand) { + return doesDrop ? 1 : 0; + } + +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockSellafield.java b/src/main/java/com/hbm/blocks/generic/BlockSellafield.java index 2f4a618c3..03c53b9f4 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockSellafield.java +++ b/src/main/java/com/hbm/blocks/generic/BlockSellafield.java @@ -29,6 +29,8 @@ public class BlockSellafield extends BlockHazard { public BlockSellafield(Material mat) { super(mat); this.setCreativeTab(MainRegistry.blockTab); + this.needsRandomTick = true; + this.rad = 0.5F; } @Override @@ -41,19 +43,20 @@ public class BlockSellafield extends BlockHazard { @Override public void updateTick(World world, int x, int y, int z, Random rand) { - - ChunkRadiationManager.proxy.incrementRad(world, x, y, z, this.rad); - + int meta = world.getBlockMetadata(x, y, z); - if(rand.nextInt(meta == 0 ? 30 * 60 : 15 * 60) == 0) { + ChunkRadiationManager.proxy.incrementRad(world, x, y, z, this.rad * (meta + 1)); + + if(rand.nextInt(meta == 0 ? 25 : 15) == 0) { if(meta > 0) world.setBlockMetadataWithNotify(x, y, z, meta - 1, 2); else world.setBlock(x, y, z, ModBlocks.sellafield_slaked); } - - world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); } + + @Override public void onBlockAdded(World world, int x, int y, int z) { } + @SideOnly(Side.CLIENT) protected IIcon[] icons; @@ -86,6 +89,4 @@ public class BlockSellafield extends BlockHazard { public IIcon getIcon(int side, int meta) { return this.icons[meta % this.icons.length]; } - - } diff --git a/src/main/java/com/hbm/blocks/generic/BlockSlag.java b/src/main/java/com/hbm/blocks/generic/BlockSlag.java new file mode 100644 index 000000000..b18db55b1 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockSlag.java @@ -0,0 +1,32 @@ +package com.hbm.blocks.generic; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; + +public class BlockSlag extends BlockBeaconable { + + @SideOnly(Side.CLIENT) + private IIcon iconAlt; + + public BlockSlag(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconAlt = iconRegister.registerIcon(this.getTextureName() + "_broken"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + if(metadata == 1) return this.iconAlt; + + return this.blockIcon; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java b/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java index 8844789ea..718f26c54 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java @@ -1,21 +1,19 @@ package com.hbm.blocks.generic; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.Random; import com.hbm.blocks.IBlockMulti; +import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemLock; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityLockableBase; -import com.hbm.tileentity.machine.storage.TileEntityCrateBase; -import com.hbm.tileentity.machine.storage.TileEntityCrateDesh; -import com.hbm.tileentity.machine.storage.TileEntityCrateIron; -import com.hbm.tileentity.machine.storage.TileEntityCrateSteel; -import com.hbm.tileentity.machine.storage.TileEntityCrateTungsten; -import com.hbm.tileentity.machine.storage.TileEntitySafe; +import com.hbm.tileentity.machine.storage.*; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; @@ -27,6 +25,8 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -39,7 +39,7 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class BlockStorageCrate extends BlockContainer implements IBlockMulti { +public class BlockStorageCrate extends BlockContainer implements IBlockMulti, ITooltipProvider { @SideOnly(Side.CLIENT) private IIcon iconTop; @@ -75,6 +75,9 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti { this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top"); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side"); } + if(this == ModBlocks.crate_template) { + this.iconTop = this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":crate_template"); + } } @Override @@ -93,6 +96,7 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti { if(this == ModBlocks.crate_steel) return new TileEntityCrateSteel(); if(this == ModBlocks.crate_desh) return new TileEntityCrateDesh(); if(this == ModBlocks.crate_tungsten) return new TileEntityCrateTungsten(); + if(this == ModBlocks.crate_template) return new TileEntityCrateTemplate(); if(this == ModBlocks.safe) return new TileEntitySafe(); return null; } @@ -140,6 +144,7 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti { if(abyte.length > 6000) { player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.RED + "Warning: Container NBT exceeds 6kB, contents will be ejected!")); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(this))); return world.setBlockToAir(x, y, z); } @@ -270,4 +275,45 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti { public int getSubCount() { return 0; } + + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + return Container.calcRedstoneFromInventory((IInventory) world.getTileEntity(x, y, z)); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + if(stack.hasTagCompound()) { + + List contents = new ArrayList(); + int amount = 0; + + for(int i = 0; i < 100; i++) { //whatever the biggest container is, i can't be bothered to check + ItemStack content = ItemStack.loadItemStackFromNBT(stack.stackTagCompound.getCompoundTag("slot" + i)); + + if(content != null) { + amount++; + + if(contents.size() < 10) { + contents.add(EnumChatFormatting.AQUA + " - " + content.getDisplayName() + (content.stackSize > 1 ? (" x" + content.stackSize) : "")); + } + } + } + + if(!contents.isEmpty()) { + list.add(EnumChatFormatting.AQUA + "Contains:"); + list.addAll(contents); + amount -= contents.size(); + + if(amount > 0) { + list.add(EnumChatFormatting.AQUA + "...and " + amount + " more."); + } + } + } + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java b/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java index 60ef35c47..f52da4c41 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java +++ b/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java @@ -1,6 +1,7 @@ package com.hbm.blocks.generic; import java.util.ArrayList; +import java.util.Locale; import java.util.Random; import com.hbm.blocks.BlockEnumMulti; @@ -87,8 +88,8 @@ public class BlockTallPlant extends BlockEnumMulti implements IPlantable, IGrowa for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase() + ".upper"); - this.bottomIcons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase() + ".lower"); + this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase(Locale.US) + ".upper"); + this.bottomIcons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase(Locale.US) + ".lower"); } } @@ -304,7 +305,7 @@ public class BlockTallPlant extends BlockEnumMulti implements IPlantable, IGrowa public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { ArrayList ret = super.getDrops(world, x, y, z, metadata, fortune); - if(rectify(world.getBlockMetadata(x, y, z)) == EnumTallFlower.CD4.ordinal()) { + if(metadata == EnumTallFlower.CD4.ordinal() + 8) { ret.add(DictFrame.fromOne(ModItems.plant_item, com.hbm.items.ItemEnums.EnumPlantType.MUSTARDWILLOW, 3 + world.rand.nextInt(4))); } diff --git a/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java index 582db2d18..a4c146f6a 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java +++ b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java @@ -8,9 +8,11 @@ import java.util.Map.Entry; import com.hbm.blocks.BlockMulti; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.OreDictManager; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.MetaBlock; +import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.items.ModItems; import com.hbm.util.I18nUtil; import com.hbm.util.InventoryUtil; @@ -150,6 +152,7 @@ public class BlockToolConversion extends BlockMulti implements IToolable, ILookO public static void registerRecipes() { conversions.put(new Pair(ToolType.BOLT, new MetaBlock(ModBlocks.watz_end, 0)), new Pair(new AStack[] {new ComparableStack(ModItems.bolt_dura_steel, 4)}, new MetaBlock(ModBlocks.watz_end, 1))); + conversions.put(new Pair(ToolType.TORCH, new MetaBlock(ModBlocks.fusion_conductor, 0)), new Pair(new AStack[] {new OreDictStack(OreDictManager.STEEL.plateCast())}, new MetaBlock(ModBlocks.fusion_conductor, 1))); } public static HashMap bufferedRecipes = new HashMap(); diff --git a/src/main/java/com/hbm/blocks/generic/BlockToolConversionPillar.java b/src/main/java/com/hbm/blocks/generic/BlockToolConversionPillar.java new file mode 100644 index 000000000..630437faa --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockToolConversionPillar.java @@ -0,0 +1,48 @@ +package com.hbm.blocks.generic; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; + +public class BlockToolConversionPillar extends BlockToolConversion { + + public IIcon[] topIcons; + public IIcon topIcon; + + public BlockToolConversionPillar(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + + this.blockIcon = iconRegister.registerIcon(this.getTextureName() + "_side"); + this.topIcon = iconRegister.registerIcon(this.getTextureName() + "_top"); + + if(names != null) { + icons = new IIcon[names.length]; + topIcons = new IIcon[names.length]; + + for(int i = 0; i < names.length; i++) { + icons[i] = iconRegister.registerIcon(getTextureName() + "_side" + names[i]); + topIcons[i] = iconRegister.registerIcon(getTextureName() + "_top" + names[i]); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + + metadata -= 1; + + if(metadata == -1 || icons == null || metadata >= icons.length) { + return side == 0 || side == 1 ? topIcon : blockIcon; + } + + return side == 0 || side == 1 ? topIcons[metadata] : icons[metadata]; + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockCM.java b/src/main/java/com/hbm/blocks/machine/BlockCM.java new file mode 100644 index 000000000..eb8b23e78 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockCM.java @@ -0,0 +1,30 @@ +package com.hbm.blocks.machine; + +import java.util.Locale; + +import com.hbm.blocks.BlockEnumMulti; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; + +public class BlockCM extends BlockEnumMulti { + + public BlockCM(Material mat, Class theEnum, boolean multiName, boolean multiTexture) { + super(mat, theEnum, multiName, multiTexture); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + Enum[] enums = theEnum.getEnumConstants(); + this.icons = new IIcon[enums.length]; + + for(int i = 0; i < icons.length; i++) { + Enum num = enums[i]; + this.icons[i] = reg.registerIcon(this.getTextureName() + "_" + num.name().toLowerCase(Locale.US)); + } + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockCMAnchor.java b/src/main/java/com/hbm/blocks/machine/BlockCMAnchor.java new file mode 100644 index 000000000..44f60003b --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockCMAnchor.java @@ -0,0 +1,46 @@ +package com.hbm.blocks.machine; + +import com.hbm.lib.RefStrings; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class BlockCMAnchor extends Block { + + @SideOnly(Side.CLIENT) + private IIcon iconFront; + + public BlockCMAnchor() { + super(Material.iron); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":cmt_terminal_front"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":cmt_terminal_side"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); + if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockCMGlass.java b/src/main/java/com/hbm/blocks/machine/BlockCMGlass.java new file mode 100644 index 000000000..af9a116a9 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockCMGlass.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.machine; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.world.IBlockAccess; + +public class BlockCMGlass extends BlockCM { + + public BlockCMGlass(Material mat, Class theEnum, boolean multiName, boolean multiTexture) { + super(mat, theEnum, multiName, multiTexture); + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { + Block block = world.getBlock(x, y, z); + + return block == this ? false : super.shouldSideBeRendered(world, x, y, z, side); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockCMPort.java b/src/main/java/com/hbm/blocks/machine/BlockCMPort.java new file mode 100644 index 000000000..b16528a55 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockCMPort.java @@ -0,0 +1,32 @@ +package com.hbm.blocks.machine; + +import com.hbm.tileentity.TileEntityProxyCombo; + +import net.minecraft.block.Block; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BlockCMPort extends BlockCM implements ITileEntityProvider { + + public BlockCMPort(Material mat, Class theEnum, boolean multiName, boolean multiTexture) { + super(mat, theEnum, multiName, multiTexture); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityProxyCombo().inventory().power().fluid(); + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) { + super.onBlockAdded(world, x, y, z); + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block b, int m) { + super.breakBlock(world, x, y, z, b, m); + world.removeTileEntity(x, y, z); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockCustomMachine.java b/src/main/java/com/hbm/blocks/machine/BlockCustomMachine.java new file mode 100644 index 000000000..72efa3313 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockCustomMachine.java @@ -0,0 +1,206 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.Random; + +import com.hbm.config.CustomMachineConfigJSON; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityCustomMachine; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.stats.StatList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; + +public class BlockCustomMachine extends BlockContainer { + + @SideOnly(Side.CLIENT) + private IIcon iconFront; + + public BlockCustomMachine() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityCustomMachine(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":cm_terminal_front"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":cm_terminal_side"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + if(metadata >= 100) return side == 3 ? this.iconFront : this.blockIcon; + return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + + TileEntityCustomMachine tile = (TileEntityCustomMachine) world.getTileEntity(x, y, z); + + if(tile != null) { + + if(tile.checkStructure()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + } else if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.wand_s) { + tile.buildStructure(); + } + } + return true; + } + + return false; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); + if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); + + TileEntityCustomMachine tile = (TileEntityCustomMachine) world.getTileEntity(x, y, z); + + if(tile != null) { + int id = stack.getItemDamage() - 100; + + if(id >= 0 && id < CustomMachineConfigJSON.customMachines.size()) { + + MachineConfiguration config = CustomMachineConfigJSON.niceList.get(id); + + if(config != null) { + tile.machineType = config.unlocalizedName; + tile.init(); + tile.markChanged(); + } + } + } + } + + @Override + public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { + + if(!player.capabilities.isCreativeMode) { + harvesters.set(player); + this.dropBlockAsItem(world, x, y, z, meta, 0); + harvesters.set(null); + } + } + + @Override + public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) { + player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1); + player.addExhaustion(0.025F); + } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + + ArrayList ret = new ArrayList(); + Item item = getItemDropped(metadata, world.rand, fortune); + if(item != null) { + + TileEntityCustomMachine tile = (TileEntityCustomMachine) world.getTileEntity(x, y, z); + + if(tile != null) { + ItemStack stack = new ItemStack(item, 1, CustomMachineConfigJSON.niceList.indexOf(tile.config) + 100); + ret.add(stack); + } + } + + return ret; + } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) { //using the deprecated one to make NEI happy + + TileEntityCustomMachine tile = (TileEntityCustomMachine) world.getTileEntity(x, y, z); + + if(tile != null && tile.machineType != null && !tile.machineType.isEmpty()) { + ItemStack stack = new ItemStack(this, 1, CustomMachineConfigJSON.niceList.indexOf(tile.config) + 100); + return stack; + } + + return super.getPickBlock(target, world, x, y, z); + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + + ISidedInventory sided = (ISidedInventory) world.getTileEntity(x, y, z); + Random rand = world.rand; + + if(sided != null) { + for(int i1 = 0; i1 < sided.getSizeInventory(); ++i1) { + + if(i1 >= 10 && i1 <= 15) + continue; // do NOT drop the filters + + ItemStack itemstack = sided.getStackInSlot(i1); + + if(itemstack != null) { + float f = rand.nextFloat() * 0.8F + 0.1F; + float f1 = rand.nextFloat() * 0.8F + 0.1F; + float f2 = rand.nextFloat() * 0.8F + 0.1F; + + while(itemstack.stackSize > 0) { + int j1 = rand.nextInt(21) + 10; + + if(j1 > itemstack.stackSize) { + j1 = itemstack.stackSize; + } + + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + + if(itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (float) rand.nextGaussian() * f3; + entityitem.motionY = (float) rand.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) rand.nextGaussian() * f3; + world.spawnEntityInWorld(entityitem); + } + } + } + + world.func_147453_f(x, y, z, block); + } + + super.breakBlock(world, x, y, z, block, meta); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java index c5e6e063a..41ab8cba8 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java +++ b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java @@ -7,12 +7,13 @@ import java.util.Random; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.machine.storage.TileEntityBarrel; -import com.hbm.util.I18nUtil; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -28,6 +29,9 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.stats.StatList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -72,7 +76,19 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); return true; - } else { + } else if(player.isSneaking()){ + TileEntityBarrel mileEntity = (TileEntityBarrel) world.getTileEntity(x, y, z); + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, x, y, z, player.getHeldItem()); + + mileEntity.tank.setTankType(type); + mileEntity.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + return true; + + }else { return false; } } @@ -164,11 +180,28 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider player.addExhaustion(0.025F); } + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityBarrel)) + return 0; + + TileEntityBarrel barrel = (TileEntityBarrel) te; + return barrel.getComparatorPower(); + } + @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { - FluidTank tank = new FluidTank(Fluids.NONE, 0, 0); + FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "tank"); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } @Override diff --git a/src/main/java/com/hbm/blocks/machine/BlockGenericPWR.java b/src/main/java/com/hbm/blocks/machine/BlockGenericPWR.java new file mode 100644 index 000000000..d94d06697 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockGenericPWR.java @@ -0,0 +1,22 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.ITooltipProvider; +import com.hbm.blocks.generic.BlockGeneric; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class BlockGenericPWR extends BlockGeneric implements ITooltipProvider { + + public BlockGenericPWR(Material material) { + super(material); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockHadronCoil.java b/src/main/java/com/hbm/blocks/machine/BlockHadronCoil.java index 20bd9f35a..1cb88488a 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockHadronCoil.java +++ b/src/main/java/com/hbm/blocks/machine/BlockHadronCoil.java @@ -1,6 +1,7 @@ package com.hbm.blocks.machine; import java.util.List; +import java.util.Locale; import com.hbm.blocks.ITooltipProvider; import com.hbm.render.block.ct.CT; @@ -47,12 +48,12 @@ public class BlockHadronCoil extends Block implements IBlockCT, ITooltipProvider } @Override - public boolean canConnect(IBlockAccess world, int x, int y, int z, IBlockCT block) { + public boolean canConnect(IBlockAccess world, int x, int y, int z, Block block) { return block instanceof BlockHadronCoil; } @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(I18nUtil.resolveKey("info.coil") + ": " + String.format("%,d", factor)); + list.add(I18nUtil.resolveKey("info.coil") + ": " + String.format(Locale.US, "%,d", factor)); } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java b/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java new file mode 100644 index 000000000..a242772e2 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java @@ -0,0 +1,67 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import org.lwjgl.input.Keyboard; + +import com.hbm.blocks.BlockMulti; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; + +public class BlockHadronCooler extends BlockMulti implements ITooltipProvider { + + private IIcon[] icons = new IIcon[getSubCount()]; + + public BlockHadronCooler(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + icons[0] = reg.registerIcon(RefStrings.MODID + ":hadron_cooler"); + icons[1] = reg.registerIcon(RefStrings.MODID + ":hadron_cooler_mk2"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return icons[this.rectify(metadata)]; + } + + @Override + public int getSubCount() { + return 2; + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + int meta = this.rectify(stack.getItemDamage()); + + if(meta == 1) return this.getUnlocalizedName() + "_mk2"; + + return this.getUnlocalizedName(); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + + if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + for(String s : I18nUtil.resolveKeyArray(this.getUnlocalizedName(stack) + ".desc")) list.add(EnumChatFormatting.YELLOW + s); + } else { + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + } + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java b/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java index 519011857..03fc8c597 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java +++ b/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Random; import com.hbm.blocks.IBlockMulti; @@ -47,8 +48,8 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { - this.iconTop = new IIcon[3]; - this.iconSide = new IIcon[3]; + this.iconTop = new IIcon[4]; + this.iconSide = new IIcon[4]; this.iconTop[0] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top_iron"); this.iconSide[0] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_iron"); @@ -56,14 +57,17 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo this.iconSide[1] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_desh"); this.iconTop[2] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top"); this.iconSide[2] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side"); + this.iconTop[3] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top_wood"); + this.iconSide[3] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_wood"); } @Override @SideOnly(Side.CLIENT) public void getSubBlocks(Item item, CreativeTabs tab, List list) { - for(int i = 0; i < getSubCount(); ++i) { - list.add(new ItemStack(item, 1, i)); - } + list.add(new ItemStack(item, 1, 3)); + list.add(new ItemStack(item, 1, 0)); + list.add(new ItemStack(item, 1, 1)); + list.add(new ItemStack(item, 1, 2)); } @Override @@ -84,7 +88,7 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo } public int getCapacity(int meta) { - return meta == 0 ? 10_000 : meta == 1 ? 100_000 : meta == 2 ? 1_000_000 : 0; + return meta == 3 ? 100 : meta == 0 ? 10_000 : meta == 1 ? 100_000 : meta == 2 ? 1_000_000 : 0; } @Override @@ -242,7 +246,7 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo @Override public int getSubCount() { - return 3; + return 4; } @Override @@ -262,7 +266,7 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo if(full) { title = storage.type.getDisplayName(); - text.add(String.format("%,d", storage.getStockpile()) + " / " + String.format("%,d", storage.getCapacity())); + text.add(String.format(Locale.US, "%,d", storage.getStockpile()) + " / " + String.format(Locale.US, "%,d", storage.getCapacity())); double percent = (double) storage.getStockpile() / (double) storage.getCapacity(); int charge = (int) Math.floor(percent * 10_000D); @@ -283,7 +287,17 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo if(type != null) { list.add(EnumChatFormatting.GOLD + type.getDisplayName()); - list.add(String.format("%,d", stack.stackTagCompound.getInteger("stack")) + " / " + String.format("%,d", getCapacity(stack.getItemDamage()))); + list.add(String.format(Locale.US, "%,d", stack.stackTagCompound.getInteger("stack")) + " / " + String.format(Locale.US, "%,d", getCapacity(stack.getItemDamage()))); } } + + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + return ((TileEntityMassStorage) world.getTileEntity(x, y, z)).redstone; + } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockPWR.java b/src/main/java/com/hbm/blocks/machine/BlockPWR.java new file mode 100644 index 000000000..eeecb464a --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockPWR.java @@ -0,0 +1,320 @@ +package com.hbm.blocks.machine; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.lib.RefStrings; +import com.hbm.render.block.ct.CT; +import com.hbm.render.block.ct.CTStitchReceiver; +import com.hbm.render.block.ct.IBlockCT; +import com.hbm.tileentity.machine.TileEntityPWRController; + +import api.hbm.fluid.IFluidConnector; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockPWR extends BlockContainer implements IBlockCT { + + @SideOnly(Side.CLIENT) protected IIcon iconPort; + + public BlockPWR(Material mat) { + super(mat); + } + + @Override + public int getRenderType() { + return CT.renderID; + } + + @Override + public Item getItemDropped(int i, Random rand, int j) { + return null; + } + + @SideOnly(Side.CLIENT) public CTStitchReceiver rec; + @SideOnly(Side.CLIENT) public CTStitchReceiver recPort; + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + this.iconPort = reg.registerIcon(RefStrings.MODID + ":pwr_casing_port"); + this.rec = IBlockCT.primeReceiver(reg, this.blockIcon.getIconName(), this.blockIcon); + this.recPort = IBlockCT.primeReceiver(reg, this.iconPort.getIconName(), this.iconPort); + } + + @Override + public IIcon[] getFragments(IBlockAccess world, int x, int y, int z) { + int meta = world.getBlockMetadata(x, y, z); + if(meta == 1) return recPort.fragCache; + return rec.fragCache; + } + + @Override + public boolean canConnect(IBlockAccess world, int x, int y, int z, Block block) { + return block == ModBlocks.pwr_block || block == ModBlocks.pwr_controller; + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityBlockPWR(); + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + + TileEntity tile = world.getTileEntity(x, y, z); + + if(tile instanceof TileEntityBlockPWR) { + TileEntityBlockPWR pwr = (TileEntityBlockPWR) tile; + world.removeTileEntity(x, y, z); + if(pwr.block != null) { + world.setBlock(x, y, z, pwr.block); + TileEntity controller = world.getTileEntity(pwr.coreX, pwr.coreY, pwr.coreZ); + + if(controller instanceof TileEntityPWRController) { + ((TileEntityPWRController) controller).assembled = false; + } + } + } else { + world.removeTileEntity(x, y, z); + } + super.breakBlock(world, x, y, z, block, meta); + } + + public static class TileEntityBlockPWR extends TileEntity implements IFluidConnector, ISidedInventory { + + public Block block; + public int coreX; + public int coreY; + public int coreZ; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 20 == 0 && block != null) { + + TileEntityPWRController controller = getCore(); + + if(controller != null) { + if(!controller.assembled) { + this.getBlockType().breakBlock(worldObj, xCoord, yCoord, zCoord, this.getBlockType(), this.getBlockMetadata()); + } + } else if(worldObj.getChunkProvider().chunkExists(coreX >> 4, coreZ >> 4)) { + this.getBlockType().breakBlock(worldObj, xCoord, yCoord, zCoord, this.getBlockType(), this.getBlockMetadata()); + } + } + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + block = Block.getBlockById(nbt.getInteger("block")); + if(block != Blocks.air) { + coreX = nbt.getInteger("cX"); + coreY = nbt.getInteger("cY"); + coreZ = nbt.getInteger("cZ"); + } else { + block = null; + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + if(block != null) { + nbt.setInteger("block", Block.getIdFromBlock(block)); + nbt.setInteger("cX", coreX); + nbt.setInteger("cY", coreY); + nbt.setInteger("cZ", coreZ); + } + } + + @Override + public void markDirty() { + if(this.worldObj != null) { + this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); + } + } + + public TileEntityPWRController cachedCore; + + protected TileEntityPWRController getCore() { + + if(cachedCore != null && !cachedCore.isInvalid()) return cachedCore; + + if(worldObj.getChunkProvider().chunkExists(coreX >> 4, coreZ >> 4)) { + + TileEntity tile = worldObj.getTileEntity(coreX, coreY, coreZ); + if(tile instanceof TileEntityPWRController) { + TileEntityPWRController controller = (TileEntityPWRController) tile; + cachedCore = controller; + return controller; + } + } + + return null; + } + + @Override + public long transferFluid(FluidType type, int pressure, long fluid) { + + if(this.getBlockMetadata() != 1) return fluid; + if(block == null) return fluid; + TileEntityPWRController controller = this.getCore(); + if(controller != null) return controller.transferFluid(type, pressure, fluid); + + return fluid; + } + + @Override + public long getDemand(FluidType type, int pressure) { + + if(this.getBlockMetadata() != 1) return 0; + if(block == null) return 0; + TileEntityPWRController controller = this.getCore(); + if(controller != null) return controller.getDemand(type, pressure); + + return 0; + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + return this.getBlockMetadata() == 1; + } + + @Override + public int getSizeInventory() { + + if(this.getBlockMetadata() != 1) return 0; + if(block == null) return 0; + TileEntityPWRController controller = this.getCore(); + if(controller != null) return controller.getSizeInventory(); + + return 0; + } + + @Override + public ItemStack getStackInSlot(int slot) { + + if(this.getBlockMetadata() != 1) return null; + if(block == null) return null; + TileEntityPWRController controller = this.getCore(); + if(controller != null) return controller.getStackInSlot(slot); + + return null; + } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + + if(this.getBlockMetadata() != 1) return null; + if(block == null) return null; + TileEntityPWRController controller = this.getCore(); + if(controller != null) return controller.decrStackSize(slot, amount); + + return null; + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) { + + if(this.getBlockMetadata() != 1) return null; + if(block == null) return null; + TileEntityPWRController controller = this.getCore(); + if(controller != null) return controller.getStackInSlotOnClosing(slot); + + return null; + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) { + + if(this.getBlockMetadata() != 1) return; + if(block == null) return; + TileEntityPWRController controller = this.getCore(); + if(controller != null) controller.setInventorySlotContents(slot, stack); + } + + @Override + public int getInventoryStackLimit() { + + if(this.getBlockMetadata() != 1) return 0; + if(block == null) return 0; + TileEntityPWRController controller = this.getCore(); + if(controller != null) return controller.getInventoryStackLimit(); + + return 0; + } + + @Override public boolean isUseableByPlayer(EntityPlayer player) { return false; } + @Override public void openInventory() { } + @Override public void closeInventory() { } + @Override public String getInventoryName() { return ""; } + @Override public boolean hasCustomInventoryName() { return false; } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + + if(this.getBlockMetadata() != 1) return false; + if(block == null) return false; + TileEntityPWRController controller = this.getCore(); + if(controller != null) return controller.isItemValidForSlot(slot, stack); + + return false; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + + if(this.getBlockMetadata() != 1) return new int[0]; + if(block == null) return new int[0]; + TileEntityPWRController controller = this.getCore(); + if(controller != null) return controller.getAccessibleSlotsFromSide(side); + + return new int[0]; + } + + @Override + public boolean canInsertItem(int slot, ItemStack stack, int side) { + + if(this.getBlockMetadata() != 1) return false; + if(block == null) return false; + TileEntityPWRController controller = this.getCore(); + if(controller != null) return controller.canInsertItem(slot, stack, side); + + return false; + } + + @Override + public boolean canExtractItem(int slot, ItemStack stack, int side) { + + if(this.getBlockMetadata() != 1) return false; + if(block == null) return false; + TileEntityPWRController controller = this.getCore(); + if(controller != null) return controller.canExtractItem(slot, stack, side); + + return false; + } + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockPillarPWR.java b/src/main/java/com/hbm/blocks/machine/BlockPillarPWR.java new file mode 100644 index 000000000..691578a45 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockPillarPWR.java @@ -0,0 +1,21 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.ITooltipProvider; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class BlockPillarPWR extends BlockPillar implements ITooltipProvider { + + public BlockPillarPWR(Material mat, String top) { + super(mat, top); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/DeuteriumTower.java b/src/main/java/com/hbm/blocks/machine/DeuteriumTower.java index e3e706707..85dc20517 100644 --- a/src/main/java/com/hbm/blocks/machine/DeuteriumTower.java +++ b/src/main/java/com/hbm/blocks/machine/DeuteriumTower.java @@ -77,7 +77,7 @@ public class DeuteriumTower extends BlockDummyable implements ILookOverlay { text.add((tower.power < tower.getMaxPower() / 20 ? EnumChatFormatting.RED : EnumChatFormatting.GREEN) + "Power: " + BobMathUtil.getShortNumber(tower.power) + "HE"); for(int i = 0; i < tower.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase()) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tower.tanks[i].getTankType().getLocalizedName() + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/FWatzHatch.java b/src/main/java/com/hbm/blocks/machine/FWatzHatch.java index 5b3df59dd..69a7e5871 100644 --- a/src/main/java/com/hbm/blocks/machine/FWatzHatch.java +++ b/src/main/java/com/hbm/blocks/machine/FWatzHatch.java @@ -8,6 +8,7 @@ import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityFWatzCore; +import api.hbm.energy.IEnergyConnectorBlock; import api.hbm.fluid.IFluidConnectorBlock; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; @@ -26,7 +27,7 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class FWatzHatch extends Block implements IFluidConnectorBlock { +public class FWatzHatch extends Block implements IEnergyConnectorBlock, IFluidConnectorBlock { @SideOnly(Side.CLIENT) private IIcon iconFront; @@ -158,4 +159,9 @@ public class FWatzHatch extends Block implements IFluidConnectorBlock { public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { return type == Fluids.AMAT || type == Fluids.ASCHRAB; } + + @Override + public boolean canConnect(IBlockAccess world, int x, int y, int z, ForgeDirection dir) { + return true; + } } diff --git a/src/main/java/com/hbm/blocks/machine/FoundryChannel.java b/src/main/java/com/hbm/blocks/machine/FoundryChannel.java index bf00c6b60..e692c3bf9 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryChannel.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryChannel.java @@ -131,7 +131,7 @@ public class FoundryChannel extends BlockContainer implements ICrucibleAcceptor if(b == ModBlocks.foundry_outlet && meta == dir.ordinal()) return true; - return b == ModBlocks.foundry_channel || b == ModBlocks.foundry_mold; + return b == ModBlocks.foundry_channel || b == ModBlocks.foundry_mold || b == ModBlocks.foundry_slagtap; } public static int renderID = RenderingRegistry.getNextAvailableRenderId(); diff --git a/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java b/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java index de46f885b..d62f01cb0 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java @@ -167,12 +167,12 @@ public class FoundryOutlet extends BlockContainer implements ICrucibleAcceptor, @Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { - return ((TileEntityFoundryOutlet) world.getTileEntity(x, y, z)).canAcceptPartialFlow(world, x, y, z, side, stack); + return ((ICrucibleAcceptor) world.getTileEntity(x, y, z)).canAcceptPartialFlow(world, x, y, z, side, stack); } @Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { - return ((TileEntityFoundryOutlet) world.getTileEntity(x, y, z)).flow(world, x, y, z, side, stack); + return ((ICrucibleAcceptor) world.getTileEntity(x, y, z)).flow(world, x, y, z, side, stack); } public static int renderID = RenderingRegistry.getNextAvailableRenderId(); diff --git a/src/main/java/com/hbm/blocks/machine/FoundrySlagtap.java b/src/main/java/com/hbm/blocks/machine/FoundrySlagtap.java new file mode 100644 index 000000000..b001d1157 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/FoundrySlagtap.java @@ -0,0 +1,35 @@ +package com.hbm.blocks.machine; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityFoundrySlagtap; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class FoundrySlagtap extends FoundryOutlet { + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_top"); + this.iconSide = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_side"); + this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_bottom"); + this.iconInner = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_inner"); + this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_front"); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityFoundrySlagtap(); + } + + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { return false; } + @Override public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { return false; } + @Override public void printHook(Pre event, World world, int x, int y, int z) { } +} diff --git a/src/main/java/com/hbm/blocks/machine/GasDuctSolid.java b/src/main/java/com/hbm/blocks/machine/GasDuctSolid.java deleted file mode 100644 index 8351015a7..000000000 --- a/src/main/java/com/hbm/blocks/machine/GasDuctSolid.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hbm.blocks.machine; - -import com.hbm.tileentity.conductor.TileEntityGasDuctSolid; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class GasDuctSolid extends BlockContainer { - - public GasDuctSolid(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityGasDuctSolid(); - } -} diff --git a/src/main/java/com/hbm/blocks/machine/HeaterElectric.java b/src/main/java/com/hbm/blocks/machine/HeaterElectric.java index 7d458daf5..c66fad6b7 100644 --- a/src/main/java/com/hbm/blocks/machine/HeaterElectric.java +++ b/src/main/java/com/hbm/blocks/machine/HeaterElectric.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import api.hbm.block.IToolable; import com.hbm.blocks.BlockDummyable; @@ -75,7 +76,7 @@ public class HeaterElectric extends BlockDummyable implements ILookOverlay, IToo TileEntityHeaterElectric heater = (TileEntityHeaterElectric) te; List text = new ArrayList(); - text.add(String.format("%,d", heater.heatEnergy) + " TU"); + text.add(String.format(Locale.US, "%,d", heater.heatEnergy) + " TU"); text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + heater.getConsumption() + " HE/t"); text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + heater.getHeatGen() + " TU/t"); diff --git a/src/main/java/com/hbm/blocks/machine/HeaterFirebox.java b/src/main/java/com/hbm/blocks/machine/HeaterFirebox.java index e502b1a3b..70f1a0b94 100644 --- a/src/main/java/com/hbm/blocks/machine/HeaterFirebox.java +++ b/src/main/java/com/hbm/blocks/machine/HeaterFirebox.java @@ -29,7 +29,7 @@ public class HeaterFirebox extends BlockDummyable implements ITooltipProvider { /*if(lastCore.getX() == lastBlockSet.getX() && lastCore.getY() + 1 == lastBlockSet.getY() && lastCore.getZ() == lastBlockSet.getZ()) return new TileEntityProxyCombo().inventory().heatSource();*/ - return new TileEntityProxyCombo(true, false, false); + return new TileEntityProxyCombo().inventory().fluid(); } @Override diff --git a/src/main/java/com/hbm/blocks/machine/HeaterHeatex.java b/src/main/java/com/hbm/blocks/machine/HeaterHeatex.java index fa585caeb..ddc4c63dc 100644 --- a/src/main/java/com/hbm/blocks/machine/HeaterHeatex.java +++ b/src/main/java/com/hbm/blocks/machine/HeaterHeatex.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -63,7 +64,7 @@ public class HeaterHeatex extends BlockDummyable implements ILookOverlay, IToolt TileEntityHeaterHeatex heater = (TileEntityHeaterHeatex) te; List text = new ArrayList(); - text.add(String.format("%,d", heater.heatEnergy) + " TU"); + text.add(String.format(Locale.US, "%,d", heater.heatEnergy) + " TU"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/HeaterOilburner.java b/src/main/java/com/hbm/blocks/machine/HeaterOilburner.java index eb9c13e53..0ddca5005 100644 --- a/src/main/java/com/hbm/blocks/machine/HeaterOilburner.java +++ b/src/main/java/com/hbm/blocks/machine/HeaterOilburner.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -97,7 +98,7 @@ public class HeaterOilburner extends BlockDummyable implements ILookOverlay, ITo FluidType type = heater.tank.getTankType(); if(type.hasTrait(FT_Flammable.class)) { int heat = (int)(type.getTrait(FT_Flammable.class).getHeatEnergy() * heater.setting / 1000); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + String.format("%,d", heat) + " TU/t"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", heat) + " TU/t"); } ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); diff --git a/src/main/java/com/hbm/blocks/machine/HeaterOven.java b/src/main/java/com/hbm/blocks/machine/HeaterOven.java index 1aa60151b..a7373310a 100644 --- a/src/main/java/com/hbm/blocks/machine/HeaterOven.java +++ b/src/main/java/com/hbm/blocks/machine/HeaterOven.java @@ -23,7 +23,7 @@ public class HeaterOven extends BlockDummyable implements ITooltipProvider { public TileEntity createNewTileEntity(World world, int meta) { if(meta >= 12) return new TileEntityHeaterOven(); - return new TileEntityProxyCombo(true, false, false); + return new TileEntityProxyCombo().inventory().fluid(); } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineArcWelder.java b/src/main/java/com/hbm/blocks/machine/MachineArcWelder.java new file mode 100644 index 000000000..9cc28da0c --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineArcWelder.java @@ -0,0 +1,38 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineArcWelder; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineArcWelder extends BlockDummyable { + + public MachineArcWelder(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineArcWelder(); + return new TileEntityProxyCombo().inventory().power().fluid(); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } + + @Override + public int[] getDimensions() { + return new int[] {1, 0, 1, 0, 1, 1}; + } + + @Override + public int getOffset() { + return 0; + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineAshpit.java b/src/main/java/com/hbm/blocks/machine/MachineAshpit.java new file mode 100644 index 000000000..578c7c2ce --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineAshpit.java @@ -0,0 +1,47 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityAshpit; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineAshpit extends BlockDummyable implements ITooltipProvider { + + public MachineAshpit() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityAshpit(); + return new TileEntityProxyCombo().inventory(); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineAssembler.java b/src/main/java/com/hbm/blocks/machine/MachineAssembler.java index 881768570..eeaa0e63b 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineAssembler.java +++ b/src/main/java/com/hbm/blocks/machine/MachineAssembler.java @@ -1,296 +1,55 @@ package com.hbm.blocks.machine; -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.MultiblockHandler; -import com.hbm.interfaces.IMultiblock; -import com.hbm.tileentity.machine.TileEntityDummy; +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineAssembler; -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class MachineAssembler extends BlockContainer implements IMultiblock { +public class MachineAssembler extends BlockDummyable { public MachineAssembler(Material p_i45386_1_) { super(p_i45386_1_); } @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineAssembler(); - + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineAssembler(); + if(meta >= 6) return new TileEntityProxyCombo().power(); + return null; } @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { - return Item.getItemFromBlock(ModBlocks.machine_assembler); + public int[] getDimensions() { + return new int[] {1, 0, 2, 1, 2, 1}; } @Override - public int getRenderType() { - return -1; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { - int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - - if (i == 0) { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.assemblerDimensionEast)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.assemblerDimensionEast, ModBlocks.dummy_block_assembler); - - // - DummyBlockAssembler.safeBreak = true; - world.setBlock(x - 1, y, z, ModBlocks.dummy_port_assembler); - TileEntity te = world.getTileEntity(x - 1, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 1, y, z + 1, ModBlocks.dummy_port_assembler); - TileEntity te2 = world.getTileEntity(x - 1, y, z + 1); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x + 2, y, z, ModBlocks.dummy_port_assembler); - TileEntity te3 = world.getTileEntity(x + 2, y, z); - if(te3 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te3; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x + 2, y, z + 1, ModBlocks.dummy_port_assembler); - TileEntity te4 = world.getTileEntity(x + 2, y, z + 1); - if(te4 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te4; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockAssembler.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 1) { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.assemblerDimensionSouth)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.assemblerDimensionSouth, ModBlocks.dummy_block_assembler); - - // - DummyBlockAssembler.safeBreak = true; - world.setBlock(x, y, z - 1, ModBlocks.dummy_port_assembler); - TileEntity te = world.getTileEntity(x, y, z - 1); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 1, y, z - 1, ModBlocks.dummy_port_assembler); - TileEntity te2 = world.getTileEntity(x - 1, y, z - 1); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x, y, z + 2, ModBlocks.dummy_port_assembler); - TileEntity te3 = world.getTileEntity(x, y, z + 2); - if(te3 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te3; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 1, y, z + 2, ModBlocks.dummy_port_assembler); - TileEntity te4 = world.getTileEntity(x - 1, y, z + 2); - if(te4 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te4; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockAssembler.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 2) { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.assemblerDimensionWest)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.assemblerDimensionWest, ModBlocks.dummy_block_assembler); - - // - DummyBlockAssembler.safeBreak = true; - world.setBlock(x + 1, y, z, ModBlocks.dummy_port_assembler); - TileEntity te = world.getTileEntity(x + 1, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x + 1, y, z - 1, ModBlocks.dummy_port_assembler); - TileEntity te2 = world.getTileEntity(x + 1, y, z - 1); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 2, y, z, ModBlocks.dummy_port_assembler); - TileEntity te3 = world.getTileEntity(x - 2, y, z); - if(te3 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te3; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 2, y, z - 1, ModBlocks.dummy_port_assembler); - TileEntity te4 = world.getTileEntity(x - 2, y, z - 1); - if(te4 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te4; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockAssembler.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 3) { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.assemblerDimensionNorth)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.assemblerDimensionNorth, ModBlocks.dummy_block_assembler); - - // - DummyBlockAssembler.safeBreak = true; - world.setBlock(x, y, z + 1, ModBlocks.dummy_port_assembler); - TileEntity te = world.getTileEntity(x, y, z + 1); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x + 1, y, z + 1, ModBlocks.dummy_port_assembler); - TileEntity te2 = world.getTileEntity(x + 1, y, z + 1); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x, y, z - 2, ModBlocks.dummy_port_assembler); - TileEntity te3 = world.getTileEntity(x, y, z - 2); - if(te3 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te3; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x + 1, y, z - 2, ModBlocks.dummy_port_assembler); - TileEntity te4 = world.getTileEntity(x + 1, y, z - 2); - if(te4 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te4; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockAssembler.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } + public int getOffset() { + return 1; } - private final Random field_149933_a = new Random(); - private static boolean keepInventory; - @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { - if (!keepInventory) - { - ISidedInventory tileentityfurnace = (ISidedInventory)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + x -= dir.offsetX; + z -= dir.offsetZ; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } + this.makeExtra(world, x + rot.offsetX * 2, y, z + rot.offsetZ * 2); + this.makeExtra(world, x - rot.offsetX * 1, y, z - rot.offsetZ * 1); + this.makeExtra(world, x + rot.offsetX * 2 - dir.offsetX, y, z + rot.offsetZ * 2 - dir.offsetZ); + this.makeExtra(world, x - rot.offsetX * 1 - dir.offsetX, y, z - rot.offsetZ * 1 - dir.offsetZ); + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java b/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java index b2bce040f..8e38ba3e7 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java +++ b/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java @@ -4,16 +4,25 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.machine.TileEntityMachineAutosaw; import com.hbm.util.I18nUtil; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; -public class MachineAutosaw extends BlockContainer implements ILookOverlay { +public class MachineAutosaw extends BlockContainer implements ILookOverlay, ITooltipProvider { public MachineAutosaw() { super(Material.iron); @@ -38,6 +47,30 @@ public class MachineAutosaw extends BlockContainer implements ILookOverlay { public boolean renderAsNormalBlock() { return false; } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(!world.isRemote && !player.isSneaking()) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + + TileEntityMachineAutosaw saw = (TileEntityMachineAutosaw) world.getTileEntity(x, y, z); + + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, x, y, z, player.getHeldItem()); + if(saw.acceptedFuels.contains(type)) { + saw.tank.setTankType(type); + saw.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + return true; + } + } + + return false; + } + + return true; + } @Override public void printHook(Pre event, World world, int x, int y, int z) { @@ -50,8 +83,13 @@ public class MachineAutosaw extends BlockContainer implements ILookOverlay { TileEntityMachineAutosaw saw = (TileEntityMachineAutosaw) te; List text = new ArrayList(); - text.add(I18nUtil.resolveKey("hbmfluid." + saw.tank.getTankType().getName().toLowerCase()) + ": " + saw.tank.getFill() + "/" + saw.tank.getMaxFill() + "mB"); + text.add(saw.tank.getTankType().getLocalizedName() + ": " + saw.tank.getFill() + "/" + saw.tank.getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java index 178d0dbb8..300f9b019 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java @@ -6,13 +6,14 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; @@ -20,6 +21,9 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -88,7 +92,26 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); //we can do this because nobody is stopping me from doing this return true; - } else { + } else if(player.isSneaking()){ + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntityMachineBAT9000 trialEntity = (TileEntityMachineBAT9000) world.getTileEntity(pos[0], pos[1], pos[2]); + + if(trialEntity != null) { + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); + + trialEntity.tank.setTankType(type); + trialEntity.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + } + + return true; + }else { return true; } } @@ -98,10 +121,27 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent return IPersistentNBT.getDrops(world, x, y, z, this); } + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityMachineBAT9000)) + return 0; + + TileEntityMachineBAT9000 tank = (TileEntityMachineBAT9000) te; + return tank.getComparatorPower(); + } + @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { - FluidTank tank = new FluidTank(Fluids.NONE, 0, 0); + FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "tank"); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineBoiler.java b/src/main/java/com/hbm/blocks/machine/MachineBoiler.java index 24bd24f16..2f65df9e8 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBoiler.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBoiler.java @@ -147,30 +147,10 @@ public class MachineBoiler extends BlockContainer { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) - { + if(world.isRemote) { return true; - } else if(!player.isSneaking()) - { - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof TileEntityMachineBoiler) { - - TileEntityMachineBoiler entity = (TileEntityMachineBoiler) te; - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - } - - if(te instanceof TileEntityMachineBoilerElectric) { - - TileEntityMachineBoilerElectric entity = (TileEntityMachineBoilerElectric) te; - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - } + } else if(!player.isSneaking()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); return true; } else { return false; diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java new file mode 100644 index 000000000..be083f6e3 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java @@ -0,0 +1,272 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.input.Keyboard; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.IPersistentInfoProvider; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IPersistentNBT; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import api.hbm.energy.IEnergyUser; +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.stats.StatList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineCapacitor extends BlockContainer implements ILookOverlay, IPersistentInfoProvider, ITooltipProvider { + + @SideOnly(Side.CLIENT) public IIcon iconTop; + @SideOnly(Side.CLIENT) public IIcon iconSide; + @SideOnly(Side.CLIENT) public IIcon iconBottom; + @SideOnly(Side.CLIENT) public IIcon iconInnerTop; + @SideOnly(Side.CLIENT) public IIcon iconInnerSide; + + protected long power; + String name; + + public MachineCapacitor(Material mat, long power, String name) { + super(mat); + this.power = power; + this.name = name; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_" + name + "_top"); + this.iconSide = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_" + name + "_side"); + this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_" + name + "_bottom"); + this.iconInnerTop = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_" + name + "_inner_top"); + this.iconInnerSide = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_" + name + "_inner_side"); + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override public int getRenderType() { return renderID; } + @Override public boolean isOpaqueCube() { return false; } + @Override public boolean renderAsNormalBlock() { return false; } + + @Override + public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) { + return side; + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityCapacitor(this.power); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityCapacitor)) + return; + + TileEntityCapacitor battery = (TileEntityCapacitor) te; + List text = new ArrayList(); + text.add(BobMathUtil.getShortNumber(battery.getPower()) + " / " + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE"); + + double percent = (double) battery.getPower() / (double) battery.getMaxPower(); + int charge = (int) Math.floor(percent * 10_000D); + int color = ((int) (0xFF - 0xFF * percent)) << 16 | ((int)(0xFF * percent) << 8); + text.add("&[" + color + "&]" + (charge / 100D) + "%"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + "+" + BobMathUtil.getShortNumber(battery.powerReceived) + "HE/t"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + "-" + BobMathUtil.getShortNumber(battery.powerSent) + "HE/t"); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + @Override + public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.YELLOW + "" + BobMathUtil.getShortNumber(persistentTag.getLong("power")) + "/" + BobMathUtil.getShortNumber(persistentTag.getLong("maxPower")) + "HE"); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + + if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + for(String s : I18nUtil.resolveKeyArray("tile.capacitor.desc")) list.add(EnumChatFormatting.YELLOW + s); + } else { + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + } + } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + return IPersistentNBT.getDrops(world, x, y, z, this); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + IPersistentNBT.restoreData(world, x, y, z, itemStack); + } + + @Override + public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { + + if(!player.capabilities.isCreativeMode) { + harvesters.set(player); + this.dropBlockAsItem(world, x, y, z, meta, 0); + harvesters.set(null); + } + } + + @Override + public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) { + player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1); + player.addExhaustion(0.025F); + } + + public static class TileEntityCapacitor extends TileEntityLoadedBase implements IEnergyUser, INBTPacketReceiver, IPersistentNBT { + + public long power; + protected long maxPower; + public long prevPower; + public long powerReceived; + public long powerSent; + + public TileEntityCapacitor() { } + + public TileEntityCapacitor(long maxPower) { + this.maxPower = maxPower; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + long gain = power - prevPower; + + ForgeDirection opp = ForgeDirection.getOrientation(this.getBlockMetadata()); + ForgeDirection dir = opp.getOpposite(); + + BlockPos pos = new BlockPos(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + + boolean didStep = false; + ForgeDirection last = null; + + while(worldObj.getBlock(pos.getX(), pos.getY(), pos.getZ()) == ModBlocks.capacitor_bus) { + ForgeDirection current = ForgeDirection.getOrientation(worldObj.getBlockMetadata(pos.getX(), pos.getY(), pos.getZ())); + if(!didStep) last = current; + didStep = true; + + if(last != current) { + pos = null; + break; + } + + pos = pos.offset(current); + } + + long preSend = power; + if(pos != null && last != null) { + this.tryUnsubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ()); + this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), last); + } + long sent = preSend - power; + + this.trySubscribe(worldObj, xCoord + opp.offsetX, yCoord+ opp.offsetY, zCoord + opp.offsetZ, opp); + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setLong("maxPower", maxPower); + data.setLong("rec", gain); + data.setLong("sent", sent); + INBTPacketReceiver.networkPack(this, data, 15); + + this.prevPower = power; + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.maxPower = nbt.getLong("maxPower"); + this.powerReceived = nbt.getLong("rec"); + this.powerSent = nbt.getLong("sent"); + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public ConnectionPriority getPriority() { + return ConnectionPriority.LOW; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public boolean canConnect(ForgeDirection dir) { + return dir == ForgeDirection.getOrientation(this.getBlockMetadata()); + } + + @Override + public void writeNBT(NBTTagCompound nbt) { + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setLong("maxPower", maxPower); + nbt.setTag(NBT_PERSISTENT_KEY, data); + } + + @Override + public void readNBT(NBTTagCompound nbt) { + NBTTagCompound data = nbt.getCompoundTag(NBT_PERSISTENT_KEY); + this.power = data.getLong("power"); + this.maxPower = data.getLong("maxPower"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.power = nbt.getLong("power"); + this.maxPower = nbt.getLong("maxPower"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + nbt.setLong("maxPower", maxPower); + } + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java new file mode 100644 index 000000000..fa7aa8dbe --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java @@ -0,0 +1,59 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.ITooltipProvider; +import com.hbm.lib.RefStrings; + +import api.hbm.energy.IEnergyConnectorBlock; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineCapacitorBus extends Block implements IEnergyConnectorBlock, ITooltipProvider { + + @SideOnly(Side.CLIENT) private IIcon topIcon; + + public MachineCapacitorBus(Material mat) { + super(mat); + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister p_149651_1_) { + this.blockIcon = p_149651_1_.registerIcon(RefStrings.MODID + ":capacitor_bus_side"); + this.topIcon = p_149651_1_.registerIcon(RefStrings.MODID + ":capacitor_bus_out"); + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return side == meta ? topIcon : blockIcon; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int l = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + } + + @Override + public boolean canConnect(IBlockAccess world, int x, int y, int z, ForgeDirection dir) { + int meta = world.getBlockMetadata(x, y, z); + ForgeDirection busDir = ForgeDirection.getOrientation(meta); + return dir == busDir; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java b/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java index 648f9a3b6..c8d9bd49d 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java @@ -70,7 +70,7 @@ public class MachineCatalyticCracker extends BlockDummyable implements ILookOver FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); cracker.tanks[0].setTankType(type); cracker.markDirty(); - player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase())).appendSibling(new ChatComponentText("!"))); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); return true; } @@ -129,7 +129,7 @@ public class MachineCatalyticCracker extends BlockDummyable implements ILookOver List text = new ArrayList(); for(int i = 0; i < cracker.tanks.length; i++) - text.add((i < 2 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + cracker.tanks[i].getTankType().getName().toLowerCase()) + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); + text.add((i < 2 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + cracker.tanks[i].getTankType().getLocalizedName() + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java b/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java new file mode 100644 index 000000000..7c8f40bc2 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java @@ -0,0 +1,54 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityChimneyBrick; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineChimneyBrick extends BlockDummyable implements ITooltipProvider { + + public MachineChimneyBrick(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) return new TileEntityChimneyBrick(); + if(meta >= 6) return new TileEntityProxyCombo().fluid(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {12, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o); + this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o - 1); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineChimneyIndustrial.java b/src/main/java/com/hbm/blocks/machine/MachineChimneyIndustrial.java new file mode 100644 index 000000000..036273535 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineChimneyIndustrial.java @@ -0,0 +1,54 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityChimneyIndustrial; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineChimneyIndustrial extends BlockDummyable implements ITooltipProvider { + + public MachineChimneyIndustrial(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) return new TileEntityChimneyIndustrial(); + if(meta >= 6) return new TileEntityProxyCombo().fluid(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {22, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o); + this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o - 1); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineCoal.java b/src/main/java/com/hbm/blocks/machine/MachineCoal.java index 5a56ecf5a..4b28a5e94 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCoal.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCoal.java @@ -1,257 +1,21 @@ package com.hbm.blocks.machine; -import java.util.Random; - -import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; import net.minecraft.world.World; -import com.hbm.blocks.ModBlocks; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineCoal; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - +@Deprecated public class MachineCoal extends BlockContainer { - private final Random field_149933_a = new Random(); - private final boolean isActive; - private static boolean keepInventory; - - @SideOnly(Side.CLIENT) - private IIcon iconFront; - public MachineCoal(boolean blockState) { super(Material.iron); - isActive = blockState; } - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + (this.isActive ? ":machine_coal_front_on" : ":machine_coal_front_off")); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_coal_side"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); - } - - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return Item.getItemFromBlock(ModBlocks.machine_coal_off); - } - - @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); - this.setDefaultDirection(world, x, y, z); - } - - private void setDefaultDirection(World world, int x, int y, int z) { - if(!world.isRemote) - { - Block block1 = world.getBlock(x, y, z - 1); - Block block2 = world.getBlock(x, y, z + 1); - Block block3 = world.getBlock(x - 1, y, z); - Block block4 = world.getBlock(x + 1, y, z); - - byte b0 = 3; - - if(block1.func_149730_j() && !block2.func_149730_j()) - { - b0 = 3; - } - if(block2.func_149730_j() && !block1.func_149730_j()) - { - b0 = 2; - } - if(block3.func_149730_j() && !block4.func_149730_j()) - { - b0 = 5; - } - if(block4.func_149730_j() && !block3.func_149730_j()) - { - b0 = 4; - } - - world.setBlockMetadataWithNotify(x, y, z, b0, 2); - } - } - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { - int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - - if(i == 0) - { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - } - if(i == 1) - { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - } - if(i == 2) - { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - } - if(i == 3) - { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - } - - if(itemStack.hasDisplayName()) - { - ((TileEntityMachineCoal)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); - } - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) - { - return true; - } else if(!player.isSneaking()) - { - TileEntityMachineCoal entity = (TileEntityMachineCoal) world.getTileEntity(x, y, z); - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - return true; - } else { - return false; - } - } - @Override public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityMachineCoal(); } - - public static void updateBlockState(boolean isProcessing, World world, int x, int y, int z) { - int i = world.getBlockMetadata(x, y, z); - TileEntity entity = world.getTileEntity(x, y, z); - keepInventory = true; - - if(isProcessing) - { - world.setBlock(x, y, z, ModBlocks.machine_coal_on); - }else{ - world.setBlock(x, y, z, ModBlocks.machine_coal_off); - } - - keepInventory = false; - world.setBlockMetadataWithNotify(x, y, z, i, 2); - - if(entity != null) { - entity.validate(); - world.setTileEntity(x, y, z, entity); - } - } - - @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { - if (!keepInventory) - { - TileEntityMachineCoal tileentityfurnace = (TileEntityMachineCoal)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } - - @Override - @SideOnly(Side.CLIENT) - public void randomDisplayTick(World p_149734_1_, int x, int y, int z, Random rand) - { - if (isActive) - { - int l = p_149734_1_.getBlockMetadata(x, y, z); - float f = x + 0.5F; - float f1 = y + 0.0F + rand.nextFloat() * 6.0F / 16.0F; - float f2 = z + 0.5F; - float f3 = 0.52F; - float f4 = rand.nextFloat() * 0.6F - 0.3F; - - if (l == 4) - { - p_149734_1_.spawnParticle("smoke", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - } - else if (l == 5) - { - p_149734_1_.spawnParticle("smoke", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - } - else if (l == 2) - { - p_149734_1_.spawnParticle("smoke", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D); - } - else if (l == 3) - { - p_149734_1_.spawnParticle("smoke", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D); - } - } - } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCompressor.java b/src/main/java/com/hbm/blocks/machine/MachineCompressor.java new file mode 100644 index 000000000..f22bc3fc1 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineCompressor.java @@ -0,0 +1,66 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineCompressor; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineCompressor extends BlockDummyable { + + public MachineCompressor() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineCompressor(); + if(meta >= extra) return new TileEntityProxyCombo().fluid().power(); + + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {2, 0, 1, 2, 1, 1}; + } + + @Override + public int getOffset() { + return 2; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + return super.checkRequirement(world, x, y, z, dir, o) && + MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, -3, 1, 1, 1, 1}, x, y, z, dir) && + MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {8, -4, 0, 0, 1, 1}, x, y, z, dir); + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, -3, 1, 1, 1, 1}, this, dir); + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {8, -4, 0, 0, 1, 1}, this, dir); + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ); + this.makeExtra(world, x + rot.offsetX, y, z + rot.offsetZ); + this.makeExtra(world, x - rot.offsetX, y, z - rot.offsetZ); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineCondenser.java b/src/main/java/com/hbm/blocks/machine/MachineCondenser.java index b31340f09..8bbe97b99 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCondenser.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCondenser.java @@ -38,7 +38,7 @@ public class MachineCondenser extends BlockContainer implements ILookOverlay { List text = new ArrayList(); for(int i = 0; i < condenser.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + condenser.tanks[i].getTankType().getName().toLowerCase()) + ": " + condenser.tanks[i].getFill() + "/" + condenser.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET +condenser.tanks[i].getTankType().getLocalizedName() + ": " + condenser.tanks[i].getFill() + "/" + condenser.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java b/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java new file mode 100644 index 000000000..842c084b7 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java @@ -0,0 +1,81 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityCondenserPowered; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineCondenserPowered extends BlockDummyable implements ILookOverlay { + + public MachineCondenserPowered(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int meta) { + if(meta >= 12) return new TileEntityCondenserPowered(); + if(meta >= 6) return new TileEntityProxyCombo().power().fluid(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {2, 0, 1, 1, 3, 3}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + x = x + dir.offsetX * o; + z = z + dir.offsetZ * o; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x + rot.offsetX * 3, y + 1, z + rot.offsetZ * 3); + this.makeExtra(world, x - rot.offsetX * 3, y + 1, z - rot.offsetZ * 3); + this.makeExtra(world, x + dir.offsetX + rot.offsetX, y + 1, z + dir.offsetZ + rot.offsetZ); + this.makeExtra(world, x + dir.offsetX - rot.offsetX, y + 1, z + dir.offsetZ - rot.offsetZ); + this.makeExtra(world, x - dir.offsetX + rot.offsetX, y + 1, z - dir.offsetZ + rot.offsetZ); + this.makeExtra(world, x - dir.offsetX - rot.offsetX, y + 1, z - dir.offsetZ - rot.offsetZ); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityCondenserPowered)) return; + + TileEntityCondenserPowered tower = (TileEntityCondenserPowered) te; + List text = new ArrayList(); + + text.add(BobMathUtil.getShortNumber(tower.power) + "HE / " + BobMathUtil.getShortNumber(tower.maxPower) + "HE"); + + for(int i = 0; i < tower.tanks.length; i++) + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tower.tanks[i].getTankType().getLocalizedName() + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineConveyorPress.java b/src/main/java/com/hbm/blocks/machine/MachineConveyorPress.java new file mode 100644 index 000000000..1bddf1a9d --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineConveyorPress.java @@ -0,0 +1,173 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.items.machine.ItemStamp; +import com.hbm.tileentity.machine.TileEntityConveyorPress; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; + +import api.hbm.block.IToolable; +import api.hbm.conveyor.IConveyorBelt; +import net.minecraft.block.material.Material; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineConveyorPress extends BlockDummyable implements IConveyorBelt, ILookOverlay, IToolable, ITooltipProvider { + + public MachineConveyorPress(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityConveyorPress(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {2, 0, 0, 0, 0, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else { + + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityConveyorPress)) + return false; + + TileEntityConveyorPress press = (TileEntityConveyorPress) te; + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemStamp && press.slots[0] == null) { + press.slots[0] = player.getHeldItem().copy(); + press.slots[0].stackSize = 1; + player.getHeldItem().stackSize--; + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); + press.markChanged(); + world.markBlockForUpdate(x, y, z); + return true; + } + } + + return false; + } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + + if(tool != ToolType.SCREWDRIVER) return false; + + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityConveyorPress)) + return false; + + TileEntityConveyorPress press = (TileEntityConveyorPress) te; + + if(press.slots[0] == null) return false; + + if(!player.inventory.addItemStackToInventory(press.slots[0].copy())) { + EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, press.slots[0].copy()); + world.spawnEntityInWorld(item); + } else { + player.inventoryContainer.detectAndSendChanges(); + } + + press.slots[0] = null; + press.markChanged(); + + return true; + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, Vec3 itemPos, double speed) { + ForgeDirection dir = this.getTravelDirection(world, x, y, z, itemPos); + Vec3 snap = this.getClosestSnappingPosition(world, x, y, z, itemPos); + Vec3 dest = Vec3.createVectorHelper(snap.xCoord - dir.offsetX * speed, snap.yCoord - dir.offsetY * speed, snap.zCoord - dir.offsetZ * speed); + Vec3 motion = Vec3.createVectorHelper((dest.xCoord - itemPos.xCoord), (dest.yCoord - itemPos.yCoord), (dest.zCoord - itemPos.zCoord)); + double len = motion.lengthVector(); + Vec3 ret = Vec3.createVectorHelper(itemPos.xCoord + motion.xCoord / len * speed, itemPos.yCoord + motion.yCoord / len * speed, itemPos.zCoord + motion.zCoord / len * speed); + return ret; + } + + public ForgeDirection getTravelDirection(World world, int x, int y, int z, Vec3 itemPos) { + int meta = world.getBlockMetadata(x, y - 1, z) - offset; + return ForgeDirection.getOrientation(meta).getRotation(ForgeDirection.UP); + } + + @Override + public Vec3 getClosestSnappingPosition(World world, int x, int y, int z, Vec3 itemPos) { + + ForgeDirection dir = this.getTravelDirection(world, x, y, z, itemPos); + itemPos.xCoord = MathHelper.clamp_double(itemPos.xCoord, x, x + 1); + itemPos.zCoord = MathHelper.clamp_double(itemPos.zCoord, z, z + 1); + double posX = x + 0.5; + double posZ = z + 0.5; + if(dir.offsetX != 0) posX = itemPos.xCoord; + if(dir.offsetZ != 0) posZ = itemPos.zCoord; + return Vec3.createVectorHelper(posX, y + 0.25, posZ); + } + + @Override + public boolean canItemStay(World world, int x, int y, int z, Vec3 itemPos) { + return world.getBlock(x, y - 1, z) == this && world.getBlockMetadata(x, y - 1, z) >= 12; + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityConveyorPress)) + return; + + TileEntityConveyorPress press = (TileEntityConveyorPress) te; + List text = new ArrayList(); + + text.add(BobMathUtil.getShortNumber(press.power) + "HE / " + BobMathUtil.getShortNumber(press.maxPower) + "HE"); + text.add("Installed stamp: " + ((press.syncStack == null || press.syncStack.getItem() == null) ? (EnumChatFormatting.RED + "NONE") : press.syncStack.getDisplayName())); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineCyclotron.java b/src/main/java/com/hbm/blocks/machine/MachineCyclotron.java index 285f2f838..6ace99312 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCyclotron.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCyclotron.java @@ -25,7 +25,7 @@ public class MachineCyclotron extends BlockDummyable { return new TileEntityMachineCyclotron(); if(meta >= 6) - return new TileEntityProxyCombo(false, true, true); + return new TileEntityProxyCombo().inventory().power().fluid(); return null; } @@ -93,12 +93,16 @@ public class MachineCyclotron extends BlockDummyable { super.fillSpace(world, x, y, z, dir, o); this.makeExtra(world, x + dir.offsetX * o + 2, y, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o + 2, y, z + dir.offsetZ * o); this.makeExtra(world, x + dir.offsetX * o + 2, y, z + dir.offsetZ * o - 1); this.makeExtra(world, x + dir.offsetX * o - 2, y, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o - 2, y, z + dir.offsetZ * o); this.makeExtra(world, x + dir.offsetX * o - 2, y, z + dir.offsetZ * o - 1); this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o + 2); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o + 2); this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o + 2); this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o - 2); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o - 2); this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o - 2); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java b/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java index f0d3d2d43..08c921a35 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java @@ -66,7 +66,7 @@ public class MachineDeuteriumExtractor extends BlockContainer implements ILookOv text.add((extractor.power < extractor.getMaxPower() / 20 ? EnumChatFormatting.RED : EnumChatFormatting.GREEN) + "Power: " + BobMathUtil.getShortNumber(extractor.power) + "HE"); for(int i = 0; i < extractor.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + extractor.tanks[i].getTankType().getName().toLowerCase()) + ": " + extractor.tanks[i].getFill() + "/" + extractor.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + extractor.tanks[i].getTankType().getLocalizedName() + ": " + extractor.tanks[i].getFill() + "/" + extractor.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceExtension.java b/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceExtension.java index 3b8c4208f..7d67a92b5 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceExtension.java +++ b/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceExtension.java @@ -30,7 +30,7 @@ public class MachineDiFurnaceExtension extends BlockContainer implements IProxyC @Override public TileEntity createNewTileEntity(World world, int meta) { - return new TileEntityProxyCombo().inventory(); + return new TileEntityProxyCombo().inventory().fluid(); } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineElectrolyser.java b/src/main/java/com/hbm/blocks/machine/MachineElectrolyser.java index fb3ee992f..3c6b7beac 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineElectrolyser.java +++ b/src/main/java/com/hbm/blocks/machine/MachineElectrolyser.java @@ -20,18 +20,18 @@ public class MachineElectrolyser extends BlockDummyable { @Override public TileEntity createNewTileEntity(World world, int meta) { if(meta >= 12) return new TileEntityElectrolyser(); - if(meta >= 6) return new TileEntityProxyCombo(false, true, true); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid(); return null; } @Override public int[] getDimensions() { - return new int[] {0, 0, 4, 4, 2, 2}; + return new int[] {0, 0, 5, 5, 1, 3}; } @Override public int getOffset() { - return 4; + return 5; } @Override @@ -42,33 +42,54 @@ public class MachineElectrolyser extends BlockDummyable { @Override public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {1, 0, 4, 4, 1, 1}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, -1, 4, 4, 0, 0}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, 1, -1, -2, 2}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, 1, -1, -1, 1}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, 3, -3, -2, 2}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, 3, -3, -1, 1}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, -1, 1, -2, 2}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, -1, 1, -1, 1}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, -3, 3, -2, 2}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, -3, 3, -1, 1}, this, dir); + x += dir.offsetX * o; + z += dir.offsetZ * o; + + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {2, -1, 5, 5, 1, 1}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -3, 5, 5, 0, 0}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -1, 4, -4, -3, 3}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -1, 2, -2, -3, 3}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -1, 0, 0, -3, 3}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -1, -2, 2, -3, 3}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -1, -4, 4, -3, 3}, this, dir); + MultiblockHandlerXR.fillSpace(world,x + dir.offsetX * 4, y + 3, z + dir.offsetZ * 4, new int[] {0, 0, 0, 0, -1, 2}, this, dir); + MultiblockHandlerXR.fillSpace(world,x + dir.offsetX * 2, y + 3, z + dir.offsetZ * 2, new int[] {0, 0, 0, 0, -1, 2}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y + 3, z, new int[] {0, 0, 0, 0, -1, 2}, this, dir); + MultiblockHandlerXR.fillSpace(world, x - dir.offsetX * 2, y + 3, z - dir.offsetZ * 2, new int[] {0, 0, 0, 0, -1, 2}, this, dir); + MultiblockHandlerXR.fillSpace(world, x - dir.offsetX * 4, y + 3, z - dir.offsetZ * 4, new int[] {0, 0, 0, 0, -1, 2}, this, dir); + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x - dir.offsetX * 5, y, z - dir.offsetZ * 5); + this.makeExtra(world, x - dir.offsetX * 5 + rot.offsetX, y, z - dir.offsetZ * 5 + rot.offsetZ); + this.makeExtra(world, x - dir.offsetX * 5 - rot.offsetX, y, z - dir.offsetZ * 5 - rot.offsetZ); + this.makeExtra(world, x + dir.offsetX * 5, y, z + dir.offsetZ * 5); + this.makeExtra(world, x + dir.offsetX * 5 + rot.offsetX, y, z + dir.offsetZ * 5 + rot.offsetZ); + this.makeExtra(world, x + dir.offsetX * 5 - rot.offsetX, y, z + dir.offsetZ * 5 - rot.offsetZ); } @Override protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {1, 0, 4, 4, 1, 1}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, -1, 4, 4, 0, 0}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, 1, -1, -2, 2}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, 1, -1, -1, 1}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, 3, -3, -2, 2}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, 3, -3, -1, 1}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, -1, 1, -2, 2}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, -1, 1, -1, 1}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, -3, 3, -2, 2}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, -3, 3, -1, 1}, x, y, z, dir)) return false; + x += dir.offsetX * o; + z += dir.offsetZ * o; + + if(!MultiblockHandlerXR.checkSpace(world, x, y , z, getDimensions(), x, y, z, dir)) return false; + + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {2, -1, 5, 5, 1, 1}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -3, 5, 5, 0, 0}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -1, 4, -4, -3, 3}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -1, 2, -2, -3, 3}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -1, 0, 0, -3, 3}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -1, -2, 2, -3, 3}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -1, -4, 4, -3, 3}, x, y, z, dir)) return false; + + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * 4, y + 3, z + dir.offsetZ * 4, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * 2, y + 3, z + dir.offsetZ * 2, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y + 3, z, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x - dir.offsetX * 2, y + 3, z - dir.offsetZ * 2, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x - dir.offsetX * 4, y + 3, z - dir.offsetZ * 4, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; return true; } diff --git a/src/main/java/com/hbm/blocks/machine/MachineExcavator.java b/src/main/java/com/hbm/blocks/machine/MachineExcavator.java index 0d27866a6..c91d6bb16 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineExcavator.java +++ b/src/main/java/com/hbm/blocks/machine/MachineExcavator.java @@ -51,7 +51,10 @@ public class MachineExcavator extends BlockDummyable { y += dir.offsetY * o; z += dir.offsetZ * o; - return MultiblockHandlerXR.checkSpace(world, x, y, z, getDimensions(), x, y, z, dir); + return MultiblockHandlerXR.checkSpace(world, x, y, z, getDimensions(), x, y, z, dir) && + MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {-1, 3, 3, -2, 3, -2}, x, y, z, dir) && + MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {-1, 3, 3, -2, -2, 3}, x, y, z, dir) && + MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {-1, 3, -2, 3, 3, 3}, x, y, z, dir); } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java b/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java new file mode 100644 index 000000000..8efe19ae1 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java @@ -0,0 +1,81 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineExposureChamber; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineExposureChamber extends BlockDummyable { + + public MachineExposureChamber(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineExposureChamber(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {4, 0, 2, 2, 2, 2}; + } + + @Override + public int getOffset() { + return 2; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP).getOpposite(); + + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, 0, 0, 0, -3, 8}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y + 2, z, new int[] {0, 0, 1, -1, -3, 6}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y + 2, z, new int[] {0, 0, -1, 1, -3, 6}, this, dir); + MultiblockHandlerXR.fillSpace(world, x + rot.offsetX * 7, y, z + rot.offsetZ * 7, new int[] {3, 0, 1, -1, 0, 1}, this, dir); + MultiblockHandlerXR.fillSpace(world, x + rot.offsetX * 7, y, z + rot.offsetZ * 7, new int[] {3, 0, -1, 1, 0, 1}, this, dir); + + this.makeExtra(world, x + rot.offsetX * 7 + dir.offsetX, y, z + rot.offsetZ * 7 + dir.offsetZ); + this.makeExtra(world, x + rot.offsetX * 7 - dir.offsetX, y, z + rot.offsetZ * 7 - dir.offsetZ); + this.makeExtra(world, x + rot.offsetX * 8 + dir.offsetX, y, z + rot.offsetZ * 8 + dir.offsetZ); + this.makeExtra(world, x + rot.offsetX * 8 - dir.offsetX, y, z + rot.offsetZ * 8 - dir.offsetZ); + this.makeExtra(world, x + rot.offsetX * 8, y, z + rot.offsetZ * 8); + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP).getOpposite(); + + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, getDimensions(), x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, 0, 0, 0, -3, 8}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {0, 0, 1, -1, -3, 6}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {0, 0, -1, 1, -3, 6}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x + rot.offsetX * 7, y, z + rot.offsetZ * 7, new int[] {3, 0, 1, -1, 0, 1}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x + rot.offsetX * 7, y, z + rot.offsetZ * 7, new int[] {3, 0, -1, 1, 0, 1}, x, y, z, dir)) return false; + + return true; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return super.standardOpenBehavior(world, x, y, z, player, 0); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineFan.java b/src/main/java/com/hbm/blocks/machine/MachineFan.java index f9321d052..37a96e5f8 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFan.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFan.java @@ -2,9 +2,13 @@ package com.hbm.blocks.machine; import java.util.List; +import com.hbm.blocks.ITooltipProvider; + +import api.hbm.block.IBlowable; import api.hbm.block.IToolable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; @@ -18,7 +22,7 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class MachineFan extends BlockContainer implements IToolable { +public class MachineFan extends BlockContainer implements IToolable, ITooltipProvider { public MachineFan() { super(Material.iron); @@ -79,7 +83,13 @@ public class MachineFan extends BlockContainer implements IToolable { double push = 0.1; for(int i = 1; i <= range; i++) { - if(worldObj.getBlock(xCoord + dir.offsetX * i, yCoord + dir.offsetY * i, zCoord + dir.offsetZ * i).isNormalCube()) { + Block block = worldObj.getBlock(xCoord + dir.offsetX * i, yCoord + dir.offsetY * i, zCoord + dir.offsetZ * i); + boolean blowable = block instanceof IBlowable; + + if(block.isNormalCube() || blowable) { + if(!worldObj.isRemote && blowable) + ((IBlowable) block).applyFan(worldObj, xCoord + dir.offsetX * i, yCoord + dir.offsetY * i, zCoord + dir.offsetZ * i, dir, i); + break; } @@ -134,4 +144,9 @@ public class MachineFan extends BlockContainer implements IToolable { return true; } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java index 8b5071525..32274741c 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java @@ -7,15 +7,16 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.entity.projectile.EntityBombletZeta; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; -import com.hbm.util.I18nUtil; import api.hbm.block.IToolable; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -28,6 +29,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.Explosion; import net.minecraft.world.World; @@ -62,7 +66,8 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP if(world.isRemote) { return true; - } else if(!player.isSneaking()) { + } + else if(!player.isSneaking()) { int[] pos = this.findCore(world, x, y, z); if(pos == null) @@ -75,9 +80,30 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); } return true; - } else { + } + else if(player.isSneaking()){ + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntityMachineFluidTank tank = (TileEntityMachineFluidTank) world.getTileEntity(pos[0], pos[1], pos[2]); + + if(tank != null) { + if(tank.hasExploded) return false; + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); + + tank.tank.setTankType(type); + tank.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + } + return true; + }else { return true; } + } @Override @@ -99,7 +125,7 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "tank"); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } @Override @@ -135,6 +161,23 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP } } + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityMachineFluidTank)) + return 0; + + TileEntityMachineFluidTank tank = (TileEntityMachineFluidTank) te; + return tank.getComparatorPower(); + } + @Override public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java b/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java index 9383b3565..7c6281110 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java @@ -13,7 +13,6 @@ import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineFrackingTower; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; @@ -113,7 +112,7 @@ public class MachineFrackingTower extends BlockDummyable implements IPersistentI for(int i = 0; i < 2; i++) { FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "t" + i); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java b/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java index b8705ead5..5c60f53df 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java @@ -73,7 +73,7 @@ public class MachineFractionTower extends BlockDummyable implements ILookOverlay FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); frac.tanks[0].setTankType(type); frac.markDirty(); - player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase())).appendSibling(new ChatComponentText("!"))); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); } return true; @@ -115,7 +115,7 @@ public class MachineFractionTower extends BlockDummyable implements ILookOverlay List text = new ArrayList(); for(int i = 0; i < cracker.tanks.length; i++) - text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + cracker.tanks[i].getTankType().getName().toLowerCase()) + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); + text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + cracker.tanks[i].getTankType().getLocalizedName() + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java b/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java index 4264b777d..66c2396d0 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IBlockMulti; @@ -68,7 +69,7 @@ public class MachineHeatBoiler extends BlockDummyable implements ILookOverlay, I if(type.hasTrait(FT_Heatable.class) && type.getTrait(FT_Heatable.class).getEfficiency(HeatingType.BOILER) > 0) { boiler.tanks[0].setTankType(type); boiler.markDirty(); - player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase())).appendSibling(new ChatComponentText("!"))); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); } return true; } @@ -174,9 +175,9 @@ public class MachineHeatBoiler extends BlockDummyable implements ILookOverlay, I if(boiler.hasExploded) return; List text = new ArrayList(); - text.add(String.format("%,d", boiler.heat) + "TU"); - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[0].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", boiler.tanks[0].getFill()) + " / " + String.format("%,d", boiler.tanks[0].getMaxFill()) + "mB"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[1].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", boiler.tanks[1].getFill()) + " / " + String.format("%,d", boiler.tanks[1].getMaxFill()) + "mB"); + text.add(String.format(Locale.US, "%,d", boiler.heat) + "TU"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + boiler.tanks[0].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", boiler.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[0].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + boiler.tanks[1].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", boiler.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[1].getMaxFill()) + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java b/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java new file mode 100644 index 000000000..7869a74bd --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java @@ -0,0 +1,126 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.trait.FT_Heatable; +import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityHeatBoilerIndustrial; +import com.hbm.util.I18nUtil; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineHeatBoilerIndustrial extends BlockDummyable implements ILookOverlay, ITooltipProvider { + + public MachineHeatBoilerIndustrial() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) return new TileEntityHeatBoilerIndustrial(); + if(meta >= extra) return new TileEntityProxyCombo().fluid(); + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(!world.isRemote && !player.isSneaking()) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityHeatBoilerIndustrial)) + return false; + + TileEntityHeatBoilerIndustrial boiler = (TileEntityHeatBoilerIndustrial) te; + + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); + + if(type.hasTrait(FT_Heatable.class) && type.getTrait(FT_Heatable.class).getEfficiency(HeatingType.BOILER) > 0) { + boiler.tanks[0].setTankType(type); + boiler.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + return true; + } + return false; + + } else { + return true; + } + } + + @Override + public int[] getDimensions() { + return new int[] {4, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + this.makeExtra(world, x - dir.offsetX + 1, y, z - dir.offsetZ); + this.makeExtra(world, x - dir.offsetX - 1, y, z - dir.offsetZ); + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ + 1); + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ - 1); + this.makeExtra(world, x - dir.offsetX, y + 4, z - dir.offsetZ); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityHeatBoilerIndustrial)) + return; + + TileEntityHeatBoilerIndustrial boiler = (TileEntityHeatBoilerIndustrial) te; + + List text = new ArrayList(); + text.add(String.format(Locale.US, "%,d", boiler.heat) + "TU"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + boiler.tanks[0].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", boiler.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[0].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + boiler.tanks[1].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", boiler.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[1].getMaxFill()) + "mB"); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java b/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java index b748e3412..b6a628c78 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -15,6 +16,9 @@ import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; @@ -81,6 +85,8 @@ public class MachineHephaestus extends BlockDummyable implements ILookOverlay { FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); heatex.input.setTankType(type); heatex.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + return true; } @@ -106,11 +112,11 @@ public class MachineHephaestus extends BlockDummyable implements ILookOverlay { TileEntityMachineHephaestus heatex = (TileEntityMachineHephaestus) te; List text = new ArrayList(); - text.add(String.format("%,d", heatex.bufferedHeat) + " TU"); + text.add(String.format(Locale.US, "%,d", heatex.bufferedHeat) + " TU"); for(int i = 0; i < heatex.getAllTanks().length; i++) { FluidTank tank = heatex.getAllTanks()[i]; - text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tank.getTankType().getName().toLowerCase()) + ": " + tank.getFill() + "/" + tank.getMaxFill() + "mB"); + text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tank.getTankType().getLocalizedName() + ": " + tank.getFill() + "/" + tank.getMaxFill() + "mB"); } ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); diff --git a/src/main/java/com/hbm/blocks/machine/MachineIGenerator.java b/src/main/java/com/hbm/blocks/machine/MachineIGenerator.java index 8c00aeffb..5f3de0132 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineIGenerator.java +++ b/src/main/java/com/hbm/blocks/machine/MachineIGenerator.java @@ -72,6 +72,8 @@ public class MachineIGenerator extends BlockDummyable { public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); this.makeExtra(world, x + dir.offsetX * (o - 3), y, z + dir.offsetZ * (o - 3)); + this.makeExtra(world, x + dir.offsetX * (o - 2), y, z + dir.offsetZ * (o - 2)); + this.makeExtra(world, x + dir.offsetX * (o - 1), y, z + dir.offsetZ * (o - 1)); this.makeExtra(world, x + dir.offsetX * (o + 2), y, z + dir.offsetZ * (o + 2)); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineITER.java b/src/main/java/com/hbm/blocks/machine/MachineITER.java index 98b8f30e3..f049e058f 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineITER.java +++ b/src/main/java/com/hbm/blocks/machine/MachineITER.java @@ -4,6 +4,8 @@ import java.util.Random; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.material.Mats; +import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityITER; @@ -241,20 +243,23 @@ public class MachineITER extends BlockDummyable { @Override public void breakBlock(World world, int x, int y, int z, Block block, int i) { - - if(i >= 12 && drop) { - - for(int l = 0; l < 4; l++) - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_conductor, 64))); - - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_conductor, 36))); - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_center, 64))); - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_motor, 4))); - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.reinforced_glass, 8))); - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_iter_core, 1))); - } + + if(i >= 12 && drop) { + + for(int l = 0; l < 4; l++) { + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_conductor, 64))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.plate_cast, 64, Mats.MAT_STEEL.id))); + } + + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_conductor, 36))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.plate_cast, 36, Mats.MAT_STEEL.id))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_center, 64))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_motor, 4))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.reinforced_glass, 8))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_iter_core, 1))); + } super.breakBlock(world, x, y, z, block, i); - } + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineOilWell.java b/src/main/java/com/hbm/blocks/machine/MachineOilWell.java index bdd36a179..65fc71706 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineOilWell.java +++ b/src/main/java/com/hbm/blocks/machine/MachineOilWell.java @@ -12,7 +12,6 @@ import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineOilWell; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; @@ -87,7 +86,7 @@ public class MachineOilWell extends BlockDummyable implements IPersistentInfoPro for(int i = 0; i < 2; i++) { FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "t" + i); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java index b1ddbb028..445956358 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java @@ -5,13 +5,14 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IPersistentInfoProvider; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; @@ -19,6 +20,9 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -61,7 +65,26 @@ public class MachineOrbus extends BlockDummyable implements IPersistentInfoProvi FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); return true; - } else { + } else if(player.isSneaking()){ + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntityMachineOrbus kyleEntity = (TileEntityMachineOrbus) world.getTileEntity(pos[0], pos[1], pos[2]); + + if(kyleEntity != null) { + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); + + kyleEntity.tank.setTankType(type); + kyleEntity.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + } + + return true; + } else { return true; } } @@ -91,8 +114,8 @@ public class MachineOrbus extends BlockDummyable implements IPersistentInfoProvi @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { - FluidTank tank = new FluidTank(Fluids.NONE, 0, 0); + FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "tank"); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachinePWRController.java b/src/main/java/com/hbm/blocks/machine/MachinePWRController.java new file mode 100644 index 000000000..e40163c91 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachinePWRController.java @@ -0,0 +1,216 @@ +package com.hbm.blocks.machine; + +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.hbm.blocks.ITooltipProvider; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.TileEntityPWRController; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachinePWRController extends BlockContainer implements ITooltipProvider { + + @SideOnly(Side.CLIENT) + private IIcon iconFront; + + public MachinePWRController(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityPWRController(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":pwr_controller"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); + if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + + TileEntityPWRController controller = (TileEntityPWRController) world.getTileEntity(x, y, z); + + if(!controller.assembled) { + assemble(world, x, y, z, player); + } else { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + } + + return true; + } else { + return false; + } + } + + private static HashMap assembly = new HashMap(); + private static HashMap fuelRods = new HashMap(); + private static HashMap sources = new HashMap(); + private static boolean errored; + private static final int maxSize = 4096; + + public void assemble(World world, int x, int y, int z, EntityPlayer player) { + assembly.clear(); + fuelRods.clear(); + sources.clear(); + assembly.put(new BlockPos(x, y, z), this); + + ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)).getOpposite(); + + errored = false; + floodFill(world, x + dir.offsetX, y, z + dir.offsetZ, player); + + if(fuelRods.size() == 0){ + sendError(world, x, y, z, "Fuel rods required", player); + errored = true; + } + + if(sources.size() == 0) { + sendError(world, x, y, z, "Neutron sources required", player); + errored = true; + } + + TileEntityPWRController controller = (TileEntityPWRController) world.getTileEntity(x, y, z); + + if(!errored) { + for(Entry entry : assembly.entrySet()) { + + BlockPos pos = entry.getKey(); + Block block = entry.getValue(); + + if(block != ModBlocks.pwr_controller) { + + if(block == ModBlocks.pwr_port) { + world.setBlock(pos.getX(), pos.getY(), pos.getZ(), ModBlocks.pwr_block, 1, 3); + } else { + world.setBlock(pos.getX(), pos.getY(), pos.getZ(), ModBlocks.pwr_block, 0, 3); + } + + TileEntityBlockPWR pwr = (TileEntityBlockPWR) world.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); + pwr.block = block; + pwr.coreX = x; + pwr.coreY = y; + pwr.coreZ = z; + pwr.markDirty(); + } + } + + controller.setup(assembly, fuelRods); + } + controller.assembled = !errored; + + assembly.clear(); + fuelRods.clear(); + sources.clear(); + } + + private void floodFill(World world, int x, int y, int z, EntityPlayer player) { + + BlockPos pos = new BlockPos(x, y, z); + + if(assembly.containsKey(pos)) return; + if(assembly.size() >= maxSize) { + errored = true; + sendError(world, x, y, z, "Max size exceeded", player); + return; + } + + Block block = world.getBlock(x, y, z); + + if(isValidCasing(block)) { + assembly.put(pos, block); + return; + } + + if(isValidCore(block)) { + assembly.put(pos, block); + if(block == ModBlocks.pwr_fuel) fuelRods.put(pos, block); + if(block == ModBlocks.pwr_neutron_source) sources.put(pos, block); + floodFill(world, x + 1, y, z, player); + floodFill(world, x - 1, y, z, player); + floodFill(world, x, y + 1, z, player); + floodFill(world, x, y - 1, z, player); + floodFill(world, x, y, z + 1, player); + floodFill(world, x, y, z - 1, player); + return; + } + + sendError(world, x, y, z, "Non-reactor block", player); + errored = true; + } + + private void sendError(World world, int x, int y, int z, String message, EntityPlayer player) { + + if(player instanceof EntityPlayerMP) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "marker"); + data.setInteger("color", 0xff0000); + data.setInteger("expires", 5_000); + data.setDouble("dist", 128D); + if(message != null) data.setString("label", message); + PacketDispatcher.wrapper.sendTo(new AuxParticlePacketNT(data, x, y, z), (EntityPlayerMP) player); + } + } + + private boolean isValidCore(Block block) { + if(block == ModBlocks.pwr_fuel || block == ModBlocks.pwr_control || block == ModBlocks.pwr_channel || block == ModBlocks.pwr_heatex || block == ModBlocks.pwr_neutron_source) return true; + return false; + } + + private boolean isValidCasing(Block block) { + if(block == ModBlocks.pwr_casing || block == ModBlocks.pwr_reflector || block == ModBlocks.pwr_port) return true; + return false; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachinePump.java b/src/main/java/com/hbm/blocks/machine/MachinePump.java new file mode 100644 index 000000000..1d2198029 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachinePump.java @@ -0,0 +1,108 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.blocks.ModBlocks; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachinePumpBase; +import com.hbm.tileentity.machine.TileEntityMachinePumpElectric; +import com.hbm.tileentity.machine.TileEntityMachinePumpSteam; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachinePump extends BlockDummyable implements ITooltipProvider, ILookOverlay { + + public MachinePump() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) { + if(this == ModBlocks.pump_steam) return new TileEntityMachinePumpSteam(); + if(this == ModBlocks.pump_electric) return new TileEntityMachinePumpElectric(); + } + if(meta >= 6) { + if(this == ModBlocks.pump_steam) return new TileEntityProxyCombo().fluid(); + if(this == ModBlocks.pump_electric) return new TileEntityProxyCombo().fluid().power(); + } + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {3, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + this.makeExtra(world, x - dir.offsetX + 1, y, z - dir.offsetZ); + this.makeExtra(world, x - dir.offsetX - 1, y, z - dir.offsetZ); + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ + 1); + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ - 1); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityMachinePumpBase)) return; + + List text = new ArrayList(); + + if(te instanceof TileEntityMachinePumpSteam) { + TileEntityMachinePumpSteam pump = (TileEntityMachinePumpSteam) te; + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + pump.steam.getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", pump.steam.getFill()) + " / " + String.format(Locale.US, "%,d", pump.steam.getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + pump.lps.getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", pump.lps.getFill()) + " / " + String.format(Locale.US, "%,d", pump.lps.getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + pump.water.getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", pump.water.getFill()) + " / " + String.format(Locale.US, "%,d", pump.water.getMaxFill()) + "mB"); + } + + if(te instanceof TileEntityMachinePumpElectric) { + TileEntityMachinePumpElectric pump = (TileEntityMachinePumpElectric) te; + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", pump.power) + " / " + String.format(Locale.US, "%,d", pump.maxPower) + "HE"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + pump.water.getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", pump.water.getFill()) + " / " + String.format(Locale.US, "%,d", pump.water.getMaxFill()) + "mB"); + } + + if(pos[1] > 70) { + text.add("&[" + (BobMathUtil.getBlink() ? 0xff0000 : 0xffff00) + "&]! ! ! ALTITUDE ! ! !"); + } + + if(!((TileEntityMachinePumpBase) te).onGround) { + text.add("&[" + (BobMathUtil.getBlink() ? 0xff0000 : 0xffff00) + "&]! ! ! NO VALID GROUND ! ! !"); + } + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachinePumpjack.java b/src/main/java/com/hbm/blocks/machine/MachinePumpjack.java index 89169d863..56f05147d 100644 --- a/src/main/java/com/hbm/blocks/machine/MachinePumpjack.java +++ b/src/main/java/com/hbm/blocks/machine/MachinePumpjack.java @@ -13,7 +13,6 @@ import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachinePumpjack; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; @@ -100,7 +99,7 @@ public class MachinePumpjack extends BlockDummyable implements IPersistentInfoPr for(int i = 0; i < 2; i++) { FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "t" + i); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineRadar.java b/src/main/java/com/hbm/blocks/machine/MachineRadar.java index 9a7ccb8f6..a06effd14 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineRadar.java +++ b/src/main/java/com/hbm/blocks/machine/MachineRadar.java @@ -1,8 +1,7 @@ package com.hbm.blocks.machine; -import com.hbm.config.WeaponConfig; import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityMachineRadar; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.BlockContainer; @@ -10,6 +9,8 @@ import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -21,7 +22,7 @@ public class MachineRadar extends BlockContainer { @Override public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineRadar(); + return new TileEntityMachineRadarNT(); } @Override @@ -42,41 +43,35 @@ public class MachineRadar extends BlockContainer { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(y < WeaponConfig.radarAltitude) { + if(y < TileEntityMachineRadarNT.radarAltitude) { if(world.isRemote) - player.addChatMessage(new ChatComponentText("[Radar] Error: Radar altitude not sufficient.")); + player.addChatMessage(new ChatComponentText("[Radar] Error: Radar altitude not sufficient.").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); return true; } - if(world.isRemote) - { + if(world.isRemote && !player.isSneaking()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); return true; - } else if(!player.isSneaking()) - { - TileEntityMachineRadar entity = (TileEntityMachineRadar) world.getTileEntity(x, y, z); - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } + } else if(!player.isSneaking()) { return true; } else { return false; } } - public boolean canProvidePower() - { - return true; - } + @Override + public boolean canProvidePower() { + return true; + } - public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int m) - { - TileEntityMachineRadar entity = (TileEntityMachineRadar) world.getTileEntity(x, y, z); - return entity.getRedPower(); - } + @Override + public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int m) { + TileEntityMachineRadarNT entity = (TileEntityMachineRadarNT) world.getTileEntity(x, y, z); + return entity.getRedPower(); + } - public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int m) - { - return isProvidingWeakPower(world, x, y, z, m); - } + @Override + public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int m) { + return isProvidingWeakPower(world, x, y, z, m); + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineRadarScreen.java b/src/main/java/com/hbm/blocks/machine/MachineRadarScreen.java new file mode 100644 index 000000000..6f1df1a14 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineRadarScreen.java @@ -0,0 +1,56 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; +import com.hbm.tileentity.machine.TileEntityMachineRadarScreen; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineRadarScreen extends BlockDummyable { + + public MachineRadarScreen(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return meta >= 12 ? new TileEntityMachineRadarScreen() : null; + } + + @Override + public int[] getDimensions() { + return new int[] {1, 0, 0, 0, 1, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(world.isRemote && !player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) return false; + + TileEntityMachineRadarScreen screen = (TileEntityMachineRadarScreen) world.getTileEntity(pos[0], pos[1], pos[2]); + + if(screen.linked && world.getTileEntity(screen.refX, screen.refY, screen.refZ) instanceof TileEntityMachineRadarNT) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, screen.refX, screen.refY, screen.refZ); + } + + return false; + } else if(!player.isSneaking()) { + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineRefinery.java b/src/main/java/com/hbm/blocks/machine/MachineRefinery.java index 10fab37d0..4a720413d 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineRefinery.java +++ b/src/main/java/com/hbm/blocks/machine/MachineRefinery.java @@ -14,7 +14,6 @@ import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineRefinery; -import com.hbm.util.I18nUtil; import api.hbm.block.IToolable; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -116,7 +115,7 @@ public class MachineRefinery extends BlockDummyable implements IPersistentInfoPr for(int i = 0; i < 5; i++) { FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "" + i); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java b/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java index 7277b011d..b3e1c8cd2 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -72,8 +73,8 @@ public class MachineSteamEngine extends BlockDummyable implements ILookOverlay, TileEntitySteamEngine engine = (TileEntitySteamEngine) te; List text = new ArrayList(); - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(engine.tanks[0].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", engine.tanks[0].getFill()) + " / " + String.format("%,d", engine.tanks[0].getMaxFill()) + "mB"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(engine.tanks[1].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", engine.tanks[1].getFill()) + " / " + String.format("%,d", engine.tanks[1].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + engine.tanks[0].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", engine.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", engine.tanks[0].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + engine.tanks[1].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", engine.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", engine.tanks[1].getMaxFill()) + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineStirling.java b/src/main/java/com/hbm/blocks/machine/MachineStirling.java index 800b7f361..3cdfde1e7 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineStirling.java +++ b/src/main/java/com/hbm/blocks/machine/MachineStirling.java @@ -7,6 +7,7 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; +import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityStirling; @@ -156,26 +157,28 @@ public class MachineStirling extends BlockDummyable implements ILookOverlay, ITo return; TileEntityStirling stirling = (TileEntityStirling) te; - int maxHeat = stirling.maxHeat(); List text = new ArrayList(); text.add(stirling.heat + "TU/t"); text.add((stirling.hasCog ? stirling.powerBuffer : 0) + "HE/t"); - double percent = (double) stirling.heat / (double) maxHeat; - int color = ((int) (0xFF - 0xFF * percent)) << 16 | ((int)(0xFF * percent) << 8); - - if(percent > 1D) - color = 0xff0000; - - text.add("&[" + color + "&]" + ((stirling.heat * 1000 / maxHeat) / 10D) + "%"); - - if(stirling.heat > maxHeat) { - text.add("&[" + (BobMathUtil.getBlink() ? 0xff0000 : 0xffff00) + "&]! ! ! OVERSPEED ! ! !"); - } - - if(!stirling.hasCog) { - text.add("&[" + 0xff0000 + "&]Gear missing!"); + if(this != ModBlocks.machine_stirling_creative) { + int maxHeat = stirling.maxHeat(); + double percent = (double) stirling.heat / (double) maxHeat; + int color = ((int) (0xFF - 0xFF * percent)) << 16 | ((int)(0xFF * percent) << 8); + + if(percent > 1D) + color = 0xff0000; + + text.add("&[" + color + "&]" + ((stirling.heat * 1000 / maxHeat) / 10D) + "%"); + + if(stirling.heat > maxHeat) { + text.add("&[" + (BobMathUtil.getBlink() ? 0xff0000 : 0xffff00) + "&]! ! ! OVERSPEED ! ! !"); + } + + if(!stirling.hasCog) { + text.add("&[" + 0xff0000 + "&]Gear missing!"); + } } ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); diff --git a/src/main/java/com/hbm/blocks/machine/MachineTeleporter.java b/src/main/java/com/hbm/blocks/machine/MachineTeleporter.java index 3b5ccd587..f702e0b4f 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineTeleporter.java +++ b/src/main/java/com/hbm/blocks/machine/MachineTeleporter.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.ILookOverlay; import com.hbm.lib.RefStrings; @@ -61,7 +62,7 @@ public class MachineTeleporter extends BlockContainer implements ILookOverlay { if(tele.targetY == -1) { text.add(EnumChatFormatting.RED + "No destination set!"); } else { - text.add((tele.power >= tele.consumption ? EnumChatFormatting.GREEN : EnumChatFormatting.RED) + String.format("%,d", tele.power) + " / " + String.format("%,d", tele.maxPower)); + text.add((tele.power >= tele.consumption ? EnumChatFormatting.GREEN : EnumChatFormatting.RED) + String.format(Locale.US, "%,d", tele.power) + " / " + String.format(Locale.US, "%,d", tele.maxPower)); text.add("Destination: " + tele.targetX + " / " + tele.targetY + " / " + tele.targetZ + " (D: " + tele.targetDim + ")"); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineTowerLarge.java b/src/main/java/com/hbm/blocks/machine/MachineTowerLarge.java index b3fea11e2..4279cc746 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineTowerLarge.java +++ b/src/main/java/com/hbm/blocks/machine/MachineTowerLarge.java @@ -77,7 +77,7 @@ public class MachineTowerLarge extends BlockDummyable implements ILookOverlay { List text = new ArrayList(); for(int i = 0; i < tower.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase()) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tower.tanks[i].getTankType().getLocalizedName() + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineTowerSmall.java b/src/main/java/com/hbm/blocks/machine/MachineTowerSmall.java index ac1dd989e..6b9bc5947 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineTowerSmall.java +++ b/src/main/java/com/hbm/blocks/machine/MachineTowerSmall.java @@ -74,7 +74,7 @@ public class MachineTowerSmall extends BlockDummyable implements ILookOverlay { List text = new ArrayList(); for(int i = 0; i < tower.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase()) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tower.tanks[i].getTankType().getLocalizedName() + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineTurbineGas.java b/src/main/java/com/hbm/blocks/machine/MachineTurbineGas.java index 02c6d7394..a17cf0fcc 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineTurbineGas.java +++ b/src/main/java/com/hbm/blocks/machine/MachineTurbineGas.java @@ -85,16 +85,16 @@ public class MachineTurbineGas extends BlockDummyable implements ILookOverlay { List text = new ArrayList(); if(hitCheck(dir, pos[0], pos[1], pos[2], -1, -1, 0, x, y, z) || hitCheck(dir, pos[0], pos[1], pos[2], 1, -1, 0, x, y, z)) { - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[0].getTankType().getName().toLowerCase())); - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[1].getTankType().getName().toLowerCase())); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + turbine.tanks[0].getTankType().getLocalizedName()); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + turbine.tanks[1].getTankType().getLocalizedName()); } if(hitCheck(dir, pos[0], pos[1], pos[2], -1, 4, 0, x, y, z) || hitCheck(dir, pos[0], pos[1], pos[2], 1, 4, 0, x, y, z)) { - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[2].getTankType().getName().toLowerCase())); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + turbine.tanks[2].getTankType().getLocalizedName()); } if(hitCheck(dir, pos[0], pos[1], pos[2], 0, 5, 1, x, y, z)) { - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[3].getTankType().getName().toLowerCase())); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + turbine.tanks[3].getTankType().getLocalizedName()); } if(hitCheck(dir, pos[0], pos[1], pos[2], 0, -4, 1, x, y, z)) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineWoodBurner.java b/src/main/java/com/hbm/blocks/machine/MachineWoodBurner.java new file mode 100644 index 000000000..246fb20b0 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineWoodBurner.java @@ -0,0 +1,58 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineWoodBurner; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineWoodBurner extends BlockDummyable implements ITooltipProvider { + + public MachineWoodBurner(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineWoodBurner(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid(); + return new TileEntityProxyCombo().inventory(); + } + + @Override + public int[] getDimensions() { + return new int[] {1, 0, 1, 0, 1, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } + + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ); + this.makeExtra(world, x - dir.offsetX + rot.offsetX, y, z - dir.offsetZ + rot.offsetZ); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/NTMAnvil.java b/src/main/java/com/hbm/blocks/machine/NTMAnvil.java index 099748d19..c71865430 100644 --- a/src/main/java/com/hbm/blocks/machine/NTMAnvil.java +++ b/src/main/java/com/hbm/blocks/machine/NTMAnvil.java @@ -4,12 +4,16 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import com.hbm.blocks.BlockFallingNT; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; +import com.hbm.entity.item.EntityFallingBlockNT; import com.hbm.inventory.container.ContainerAnvil; import com.hbm.inventory.gui.GUIAnvil; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.client.registry.RenderingRegistry; @@ -17,9 +21,10 @@ import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; -import net.minecraft.block.BlockFalling; import net.minecraft.block.material.Material; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -31,8 +36,9 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; -public class NTMAnvil extends BlockFalling implements ITooltipProvider, IGUIProvider { +public class NTMAnvil extends BlockFallingNT implements ITooltipProvider, IGUIProvider { public final int tier; @@ -180,4 +186,29 @@ public class NTMAnvil extends BlockFalling implements ITooltipProvider, IGUIProv public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIAnvil(player.inventory, ((NTMAnvil)world.getBlock(x, y, z)).tier); } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldOverrideRenderer() { + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public void overrideRenderer(EntityFallingBlockNT falling, RenderBlocks renderBlocks, Tessellator tessellator) { + + float rotation = 0; + if(falling.getMeta() == 2) rotation = 90F / 180F * (float) Math.PI; + if(falling.getMeta() == 3) rotation = 270F / 180F * (float) Math.PI; + if(falling.getMeta() == 4) rotation = 180F / 180F * (float)Math.PI; + + tessellator.addTranslation(0F, -0.5F, 0F); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.anvil, "Top", getIcon(1, 0), tessellator, rotation, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.anvil, "Bottom", getIcon(0, 0), tessellator, rotation, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.anvil, "Front", getIcon(0, 0), tessellator, rotation, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.anvil, "Back", getIcon(0, 0), tessellator, rotation, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.anvil, "Left", getIcon(0, 0), tessellator, rotation, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.anvil, "Right", getIcon(0, 0), tessellator, rotation, true); + tessellator.addTranslation(0F, 0.5F, 0F); + } } diff --git a/src/main/java/com/hbm/blocks/machine/OilDuctSolid.java b/src/main/java/com/hbm/blocks/machine/OilDuctSolid.java deleted file mode 100644 index cfec07f2d..000000000 --- a/src/main/java/com/hbm/blocks/machine/OilDuctSolid.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hbm.blocks.machine; - -import com.hbm.tileentity.conductor.TileEntityOilDuctSolid; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class OilDuctSolid extends BlockContainer { - - public OilDuctSolid(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityOilDuctSolid(); - } -} diff --git a/src/main/java/com/hbm/blocks/machine/PistonInserter.java b/src/main/java/com/hbm/blocks/machine/PistonInserter.java new file mode 100644 index 000000000..8b95fed92 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/PistonInserter.java @@ -0,0 +1,394 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.BlockContainerBase; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.INBTPacketReceiver; + +import api.hbm.block.IInsertable; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class PistonInserter extends BlockContainerBase implements ITooltipProvider { + + public PistonInserter() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityPistonInserter(); + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block neighbor) { + this.updateState(world, x, y, z); + } + + protected void updateState(World world, int x, int y, int z) { + if(!world.isRemote) { + ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); + + if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).isNormalCube()) + return; //no obstructions allowed! + + boolean flag = checkRedstone(world, x, y, z); + TileEntityPistonInserter piston = (TileEntityPistonInserter)world.getTileEntity(x, y, z); + + if(flag && !piston.lastState && piston.extend <= 0) + piston.isRetracting = false; + + piston.lastState = flag; + } + } + + protected boolean checkRedstone(World world, int x, int y, int z) { + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(world.getIndirectPowerOutput(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir.ordinal())) + return true; + } + + return false; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(side != world.getBlockMetadata(x, y, z)) return false; + + if(player.isSneaking()) { + if(!world.isRemote) { + TileEntityPistonInserter piston = (TileEntityPistonInserter)world.getTileEntity(x, y, z); + + if(piston.slot != null && piston.isRetracting) { + ForgeDirection dir = ForgeDirection.getOrientation(piston.getBlockMetadata()); + + EntityItem dust = new EntityItem(world, x + 0.5D + dir.offsetX * 0.75D, y + 0.5D + dir.offsetY * 0.75D, z + 0.5D + dir.offsetZ * 0.75D, piston.slot); + piston.slot = null; + + dust.motionX = dir.offsetX * 0.25; + dust.motionY = dir.offsetY * 0.25; + dust.motionZ = dir.offsetZ * 0.25; + world.spawnEntityInWorld(dust); + } + } + + return true; + } else if(player.getHeldItem() != null) { + if(!world.isRemote) { + TileEntityPistonInserter piston = (TileEntityPistonInserter)world.getTileEntity(x, y, z); + + if(piston.slot == null) { + piston.slot = player.inventory.decrStackSize(player.inventory.currentItem, 1); + player.inventoryContainer.detectAndSendChanges(); + } + } + + return true; + } + + return false; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int l = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + } + + @Override + public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) { + int meta = world.getBlockMetadata(x, y, z); + return meta != side.ordinal() && meta != side.getOpposite().ordinal(); + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + IInventory tileentityfurnace = (IInventory) world.getTileEntity(x, y, z); + + if(tileentityfurnace != null) { + + ItemStack itemstack = tileentityfurnace.getStackInSlot(0); + + if(itemstack != null) { + float f = world.rand.nextFloat() * 0.8F + 0.1F; + float f1 = world.rand.nextFloat() * 0.8F + 0.1F; + float f2 = world.rand.nextFloat() * 0.8F + 0.1F; + + while(itemstack.stackSize > 0) { + int j1 = world.rand.nextInt(21) + 10; + + if(j1 > itemstack.stackSize) { + j1 = itemstack.stackSize; + } + + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + + if(itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (float) world.rand.nextGaussian() * f3; + entityitem.motionY = (float) world.rand.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) world.rand.nextGaussian() * f3; + world.spawnEntityInWorld(entityitem); + } + } + + world.func_147453_f(x, y, z, block); + } + + super.breakBlock(world, x, y, z, block, meta); + } + + @Override + public int getRenderType(){ + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + // $%&#$& + // %$&&@$%%#% + //______ $%@--$@@%&$%$ + // | %/ *--$#@&&$$ + // | / --__ %$%@$& + // | (----^`--- $@##% + // | /___\ `-----*#@$ + // | /(()_) / /___\ /__ + // | / \___// (()_) //-,| + // | /____|_ / \___// )_/ + // | \____/ `^-___|___/ | + // | \/ \____/ /_-^-. + // | / _-' |___. \_ + // | / _-' / `\ \\___ + // | `'\____~~+~^/ _)/ \____ + // | \`----' | __/ _) + // | /( /~-' ,-' | + // | / `| | / | + // | / ( ) / `) + // | / `-==-' | | + // | / /| | | + // | / / \ | | + // | / / | | | + // | / / \ _____,.____| | + // | / _ / |<`____, ____,| | + // | / / \_ / _ | <_____/ | ) + // | / / ^/,^=-~---~' `z---..._______/ | + // |--' / /| |/ .^ ,^\ \ ) + // | |_|| || |(_( ) | | + // | \_/`-``-`----'___/_____ | + // |___..---' _|____`-----..-----'\ + // |_____________________| @ | ) + // average coding session involving tile entities + public static class TileEntityPistonInserter extends TileEntity implements IInventory, INBTPacketReceiver { + + public ItemStack slot; + + public int extend; //why don't we just make all these ones serverside? we're never using them on the client anyway + public static final int maxExtend = 25; + public boolean isRetracting = true; + public int delay; + + //prevents funkies from happening with block updates or loading into a server + private boolean lastState; + + //when a fake animatorcel gives you something so 20fps you gotta hit him with the true interpolation stare + @SideOnly(Side.CLIENT) public double renderExtend; + @SideOnly(Side.CLIENT) public double lastExtend; + @SideOnly(Side.CLIENT) private int syncExtend; //what are these for? + @SideOnly(Side.CLIENT) private int turnProgress; + + public TileEntityPistonInserter() { } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(delay <= 0) { + + if(this.isRetracting && this.extend > 0) { + this.extend--; + } else if(!this.isRetracting) { + this.extend++; + + if(this.extend >= this.maxExtend) { + worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.pressOperate", 1.0F, 1.5F); + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + Block b = worldObj.getBlock(xCoord + dir.offsetX * 2, yCoord + dir.offsetY * 2, zCoord + dir.offsetZ * 2); + + if(b instanceof IInsertable && ((IInsertable) b).insertItem(worldObj, xCoord + dir.offsetX * 2, yCoord + dir.offsetY * 2, zCoord + dir.offsetZ * 2, dir, slot)) { + this.decrStackSize(0, 1); + } + + this.isRetracting = true; + this.delay = 5; + } + } + + } else { + delay--; + } + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("extend", extend); + if(this.slot != null) { + NBTTagCompound stack = new NBTTagCompound(); + slot.writeToNBT(stack); + data.setTag("stack", stack); + } + + INBTPacketReceiver.networkPack(this, data, 25); + + } else { + this.lastExtend = this.renderExtend; + + if(this.turnProgress > 0) { + this.renderExtend += (this.syncExtend - this.renderExtend) / (double) this.turnProgress; + this.turnProgress--; + } else { + this.renderExtend = this.syncExtend; + } + } + + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.syncExtend = nbt.getInteger("extend"); + + if(nbt.hasKey("stack")) { + NBTTagCompound stack = nbt.getCompoundTag("stack"); + this.slot = ItemStack.loadItemStackFromNBT(stack); + } else + this.slot = null; + + this.turnProgress = 2; + } + + /* :3 NBT stuff */ + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("extend", extend); + nbt.setBoolean("retract", isRetracting); + nbt.setBoolean("state", lastState); //saved so loading into a world doesn't cause issues + if(this.slot != null) { + NBTTagCompound stack = new NBTTagCompound(); + slot.writeToNBT(stack); + nbt.setTag("stack", stack); + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.extend = nbt.getInteger("extend"); + this.isRetracting = nbt.getBoolean("retract"); + this.lastState = nbt.getBoolean("state"); + if(nbt.hasKey("stack")) { + NBTTagCompound stack = nbt.getCompoundTag("stack"); + this.slot = ItemStack.loadItemStackFromNBT(stack); + } else { + this.slot = null; + } + } + + @SideOnly(Side.CLIENT) + private AxisAlignedBB aabb; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(aabb != null) + return aabb; + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + aabb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 1, zCoord + 1).addCoord(dir.offsetX, dir.offsetY, dir.offsetZ); + return aabb; + } + + /* BS inventory stuff */ + + @Override public int getSizeInventory() { return 1; } + + @Override public ItemStack getStackInSlot(int slot) { return this.slot; } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + if(this.slot != null) { + if(this.slot.stackSize <= amount) { + ItemStack stack = this.slot; + this.slot = null; + return stack; + } + + ItemStack stack = this.slot.splitStack(amount); + if(this.slot.stackSize == 0) + this.slot = null; + + return stack; + } + + return null; + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) { return null; } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) { + this.slot = stack; + if(stack != null && stack.stackSize > this.getInventoryStackLimit()) + stack.stackSize = this.getInventoryStackLimit(); + } + + @Override public String getInventoryName() { return null; } + + @Override public boolean hasCustomInventoryName() { return false; } + + @Override public int getInventoryStackLimit() { return 1; } + + @Override public boolean isUseableByPlayer(EntityPlayer player) { return false; } + + @Override public void openInventory() {} + + @Override public void closeInventory() {} + + @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return true; } + + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/ReactorCore.java b/src/main/java/com/hbm/blocks/machine/ReactorCore.java index 2475ec52f..847ece06f 100644 --- a/src/main/java/com/hbm/blocks/machine/ReactorCore.java +++ b/src/main/java/com/hbm/blocks/machine/ReactorCore.java @@ -2,13 +2,8 @@ package com.hbm.blocks.machine; import java.util.Random; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; -import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -23,72 +18,6 @@ public class ReactorCore extends BlockContainer { @Override public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineReactorLarge(); + return null; } - - @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { - if (!keepInventory) - { - TileEntityMachineReactorLarge tileentityfurnace = (TileEntityMachineReactorLarge)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } - - /*@Override - public void onBlockDestroyedByExplosion(World p_149723_1_, int p_149723_2_, int p_149723_3_, int p_149723_4_, Explosion p_149723_5_) - { - if (!p_149723_1_.isRemote) - { - TileEntityMachineReactorLarge entity = (TileEntityMachineReactorLarge) p_149723_1_.getTileEntity(p_149723_2_, p_149723_3_, p_149723_4_); - if(entity != null && entity.isLoaded) - { - entity.explode(); - } - } - }*/ - } diff --git a/src/main/java/com/hbm/blocks/machine/Watz.java b/src/main/java/com/hbm/blocks/machine/Watz.java index 8a975bbc2..4f195b722 100644 --- a/src/main/java/com/hbm/blocks/machine/Watz.java +++ b/src/main/java/com/hbm/blocks/machine/Watz.java @@ -1,5 +1,7 @@ package com.hbm.blocks.machine; +import java.util.Random; + import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; @@ -11,6 +13,7 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -29,6 +32,11 @@ public class Watz extends BlockDummyable { if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid(); return null; } + + @Override + public Item getItemDropped(int i, Random rand, int j) { + return null; + } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java index 45ceb6d10..c5018700a 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java @@ -32,7 +32,7 @@ public class BlockGraphite extends BlockFlammable implements IToolable { PacketDispatcher.wrapper.sendToAllAround(new ParticleBurstPacket(x, y, z, Block.getIdFromBlock(this), 0), new TargetPoint(world.provider.dimensionId, x, y, z, 50)); world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, this.stepSound.func_150496_b(), (this.stepSound.getVolume() + 1.0F) / 2.0F, this.stepSound.getPitch() * 0.8F); - BlockGraphiteRod.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(ModItems.powder_coal)); + BlockGraphiteRod.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(ModItems.ingot_graphite)); } return true; diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingFuel.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingFuel.java index 46231bca4..fdfcac709 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingFuel.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingFuel.java @@ -64,4 +64,5 @@ public class BlockGraphiteBreedingFuel extends BlockGraphiteDrilledTE implements protected Item getInsertedItem() { return ModItems.pile_rod_lithium; } + } diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java index 909620e26..58ec7bce2 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java @@ -5,9 +5,11 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockFlammable; +import com.hbm.inventory.RecipesCommon.MetaBlock; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; +import api.hbm.block.IInsertable; import api.hbm.block.IToolable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -17,11 +19,13 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public abstract class BlockGraphiteDrilledBase extends BlockFlammable implements IToolable { +public abstract class BlockGraphiteDrilledBase extends BlockFlammable implements IToolable, IInsertable { @SideOnly(Side.CLIENT) protected IIcon sideIcon; @@ -89,7 +93,7 @@ public abstract class BlockGraphiteDrilledBase extends BlockFlammable implements if(side == cfg * 2 || side == cfg * 2 + 1) { world.setBlock(x, y, z, ModBlocks.block_graphite_drilled, meta & 7, 3); - this.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(getInsertedItem())); + this.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(getInsertedItem(meta))); } } @@ -115,4 +119,115 @@ public abstract class BlockGraphiteDrilledBase extends BlockFlammable implements drops.add(new ItemStack(getInsertedItem(meta), 1)); return drops; } + + //Checks the relationship between specific items and placement. + //kinda cringe but anything other than hardcoding would be overengineering this for no reason so + //all of this is destined to be changed most likely anyway + protected MetaBlock checkInteractions(ItemStack stack) { + Item item = stack.getItem(); //temp + if(item == ModItems.pile_rod_uranium) return new MetaBlock(ModBlocks.block_graphite_fuel); + if(item == ModItems.pile_rod_pu239) return new MetaBlock(ModBlocks.block_graphite_fuel, 0b1000); + if(item == ModItems.pile_rod_plutonium) return new MetaBlock(ModBlocks.block_graphite_plutonium); + if(item == ModItems.pile_rod_source) return new MetaBlock(ModBlocks.block_graphite_source); + if(item == ModItems.pile_rod_boron) return new MetaBlock(ModBlocks.block_graphite_rod); + if(item == ModItems.pile_rod_lithium) return new MetaBlock(ModBlocks.block_graphite_lithium); + if(item == ModItems.cell_tritium) return new MetaBlock(ModBlocks.block_graphite_tritium); + if(item == ModItems.pile_rod_detector) return new MetaBlock(ModBlocks.block_graphite_detector); + return null; + } + + @Override + public boolean insertItem(World world, int x, int y, int z, ForgeDirection dir, ItemStack stack) { + + if(stack == null) return false; + + MetaBlock baseBlock = checkInteractions(stack); + if(baseBlock == null) return false; + + final int side = dir.ordinal(); + final int pureMeta = world.getBlockMetadata(x, y, z) & 3; //in case it's shrouded in aluminum + + if(side == pureMeta * 2 || side == pureMeta * 2 + 1) { + //first, make sure we can even push rods out + for(int i = 0; i <= 3; i++) { //limited to 3 boyos + int ix = x + dir.offsetX * i; + int iy = y + dir.offsetY * i; + int iz = z + dir.offsetZ * i; + + Block b = world.getBlock(ix, iy, iz); + + if(b instanceof BlockGraphiteDrilledBase) { + int baseMeta = world.getBlockMetadata(ix, iy, iz); + if((baseMeta & 3) != pureMeta) //wrong orientation + return false; + + if(((BlockGraphiteDrilledBase)b).getInsertedItem(baseMeta) == null) //if there's nothing to push + break; + else if(i >= 3) //if there is stuff to push and we reach our limit + return false; + } else { + if(b.isNormalCube()) //obstructions + return false; + else //empty space? no need to search + break; + } + } + + //TODO convert old methods to use itemstack for flexibility + int oldMeta = pureMeta | baseBlock.meta; //metablocks are kinda inconvenient to work with so + Block oldBlock = baseBlock.block; + NBTTagCompound oldTag = new NBTTagCompound(); //In case of TEs + oldTag.setInteger("x", x); //giving tags prevents issues and resets any lingering tes. + oldTag.setInteger("y", y); + oldTag.setInteger("z", z); + + //now actually make the change + for(int i = 0; i <= 3; i++) { //yeah yeah we know it's safe but let's be *extra cautious* of infinite loops + int ix = x + dir.offsetX * i; + int iy = y + dir.offsetY * i; + int iz = z + dir.offsetZ * i; + + Block newBlock = world.getBlock(ix, iy, iz); + + if(newBlock instanceof BlockGraphiteDrilledBase) { + int newMeta = world.getBlockMetadata(ix, iy, iz); + NBTTagCompound newTag = new NBTTagCompound(); + + if(newBlock instanceof BlockGraphiteDrilledTE) { + TileEntity te = world.getTileEntity(ix, iy, iz); + te.writeToNBT(newTag); + newTag.setInteger("x", te.xCoord + dir.offsetX); //malformed positions is very very bad and prevents the pile TEs from ticking + newTag.setInteger("y", te.yCoord + dir.offsetY); + newTag.setInteger("z", te.zCoord + dir.offsetZ); + } + + world.setBlock(ix, iy, iz, oldBlock, (oldMeta & ~0b100) | (newMeta & 0b100), 0); + + if(oldBlock instanceof BlockGraphiteDrilledTE && !oldTag.hasNoTags()) { //safety first + TileEntity te = world.getTileEntity(ix, iy, iz); + te.readFromNBT(oldTag); + } + + world.markAndNotifyBlock(ix, iy, iz, world.getChunkFromBlockCoords(ix, iz), newBlock, oldBlock, 3); //in case setBlock returns false due to = meta / block + + oldMeta = newMeta; + oldBlock = newBlock; + oldTag = newTag; + + if(oldBlock instanceof BlockGraphiteDrilled) //if there's no need to eject an item + break; + } else { + Item eject = ((BlockGraphiteDrilledBase) oldBlock).getInsertedItem(oldMeta); //TODO old methods to itemstack + this.ejectItem(world, ix - dir.offsetX, iy - dir.offsetY, iz - dir.offsetZ, dir, new ItemStack(eject)); + world.playSoundEffect(ix + 0.5, iy + 0.5, iz + 0.5, "hbm:item.upgradePlug", 1.25F, 1.0F); + + break; + } + } + + return true; + } + + return false; + } } diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java index d3b768d6c..cc98534da 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java @@ -5,6 +5,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.pile.TileEntityPileFuel; +import api.hbm.block.IBlowable; import api.hbm.block.IToolable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -16,14 +17,19 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolable { +public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolable, IBlowable { @Override - public TileEntity createNewTileEntity(World world, int mets) { - return new TileEntityPileFuel(); + public TileEntity createNewTileEntity(World world, int meta) { + TileEntityPileFuel pile = new TileEntityPileFuel(); + if((meta & 8) != 0) + pile.progress = pile.maxProgress - 1000; // pu239 rods cringe :( + + return pile; } @Override @@ -33,6 +39,17 @@ public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolab this.blockIconAluminum = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_fuel_aluminum"); } + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + TileEntityPileFuel pile = (TileEntityPileFuel)world.getTileEntity(x, y, z); + return MathHelper.clamp_int((pile.progress * 16) / pile.maxProgress, 0, 15); //potentially wip + } + @Override public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { @@ -68,4 +85,10 @@ public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolab protected Item getInsertedItem(int meta) { return (meta & 8) == 8 ? ModItems.pile_rod_pu239 : ModItems.pile_rod_uranium; } + + @Override + public void applyFan(World world, int x, int y, int z, ForgeDirection dir, int dist) { + TileEntityPileFuel pile = (TileEntityPileFuel) world.getTileEntity(x, y, z); + pile.heat -= pile.heat * 0.025; + } } diff --git a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java new file mode 100644 index 000000000..54921d0c7 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java @@ -0,0 +1,143 @@ +package com.hbm.blocks.network; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.IBlockMultiPass; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.lib.RefStrings; +import com.hbm.render.block.RenderBlockMultipass; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.network.TileEntityCableBaseNT; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, ILookOverlay, ITooltipProvider { + + @SideOnly(Side.CLIENT) protected IIcon overlayGauge; + + public BlockCableGauge() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityCableGauge(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + this.blockIcon = reg.registerIcon(RefStrings.MODID + ":deco_red_copper"); + this.overlayGauge = reg.registerIcon(RefStrings.MODID + ":cable_gauge"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + + if(RenderBlockMultipass.currentPass == 0) { + return blockIcon; + } + + return side == world.getBlockMetadata(x, y, z) ? this.overlayGauge : this.blockIcon; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int l = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + } + + @Override + public int getPasses() { + return 2; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityCableGauge)) + return; + + TileEntityCableGauge duct = (TileEntityCableGauge) te; + + List text = new ArrayList(); + text.add(BobMathUtil.getShortNumber(duct.deltaTick) + "HE/t"); + text.add(BobMathUtil.getShortNumber(duct.deltaLastSecond) + "HE/s"); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + @Override + public int getRenderType(){ + return IBlockMultiPass.getRenderType(); + } + + public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver { + + private BigInteger lastMeasurement = BigInteger.valueOf(10); + private long deltaTick = 0; + private long deltaSecond = 0; + private long deltaLastSecond = 0; + + @Override + public void updateEntity() { + super.updateEntity(); + + if(!worldObj.isRemote) { + + if(network != null) { + BigInteger total = network.getTotalTransfer(); + BigInteger delta = total.subtract(this.lastMeasurement); + this.lastMeasurement = total; + + try { + this.deltaTick = delta.longValueExact(); + if(worldObj.getTotalWorldTime() % 20 == 0) { + this.deltaLastSecond = this.deltaSecond; + this.deltaSecond = 0; + } + this.deltaSecond += deltaTick; + + } catch(Exception ex) { } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("deltaT", deltaTick); + data.setLong("deltaS", deltaLastSecond); + INBTPacketReceiver.networkPack(this, data, 25); + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.deltaTick = Math.max(nbt.getLong("deltaT"), 0); + this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); + } + } +} diff --git a/src/main/java/com/hbm/blocks/network/BlockConveyorBase.java b/src/main/java/com/hbm/blocks/network/BlockConveyorBase.java index 62a8a2b55..44ce47839 100644 --- a/src/main/java/com/hbm/blocks/network/BlockConveyorBase.java +++ b/src/main/java/com/hbm/blocks/network/BlockConveyorBase.java @@ -1,5 +1,8 @@ package com.hbm.blocks.network; +import java.util.List; + +import com.hbm.blocks.ITooltipProvider; import com.hbm.entity.item.EntityMovingItem; import com.hbm.lib.RefStrings; @@ -13,6 +16,7 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.IIcon; @@ -22,7 +26,7 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public abstract class BlockConveyorBase extends Block implements IConveyorBelt { +public abstract class BlockConveyorBase extends Block implements IConveyorBelt, ITooltipProvider { @SideOnly(Side.CLIENT) protected IIcon sideIcon; @@ -159,4 +163,9 @@ public abstract class BlockConveyorBase extends Block implements IConveyorBelt { world.setBlockMetadataWithNotify(x, y, z, 4, 2); } } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/network/BlockConveyorExpress.java b/src/main/java/com/hbm/blocks/network/BlockConveyorExpress.java new file mode 100644 index 000000000..0041da992 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/BlockConveyorExpress.java @@ -0,0 +1,12 @@ +package com.hbm.blocks.network; + +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class BlockConveyorExpress extends BlockConveyorBendable { + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, Vec3 itemPos, double speed) { + return super.getTravelLocation(world, x, y, z, itemPos, speed * 3); + } +} diff --git a/src/main/java/com/hbm/blocks/network/BlockCraneBase.java b/src/main/java/com/hbm/blocks/network/BlockCraneBase.java index 932381c24..ef73c5f4f 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCraneBase.java +++ b/src/main/java/com/hbm/blocks/network/BlockCraneBase.java @@ -1,11 +1,12 @@ package com.hbm.blocks.network; -import java.util.Random; - +import api.hbm.block.IToolable; import com.hbm.blocks.IBlockSideRotation; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.items.tool.ItemTooling; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; - +import com.hbm.tileentity.network.TileEntityCraneBase; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; @@ -21,11 +22,16 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public abstract class BlockCraneBase extends BlockContainer implements IBlockSideRotation { +import java.util.List; +import java.util.Random; + +public abstract class BlockCraneBase extends BlockContainer implements IBlockSideRotation, IToolable, ITooltipProvider { @SideOnly(Side.CLIENT) protected IIcon iconSide; @SideOnly(Side.CLIENT) protected IIcon iconIn; @@ -37,10 +43,24 @@ public abstract class BlockCraneBase extends BlockContainer implements IBlockSid @SideOnly(Side.CLIENT) protected IIcon iconDirectionalUp; @SideOnly(Side.CLIENT) protected IIcon iconDirectionalDown; + @SideOnly(Side.CLIENT) protected IIcon iconDirectionalTurnLeft; + @SideOnly(Side.CLIENT) protected IIcon iconDirectionalTurnRight; + @SideOnly(Side.CLIENT) protected IIcon iconDirectionalSideLeftTurnUp; + @SideOnly(Side.CLIENT) protected IIcon iconDirectionalSideRightTurnUp; + @SideOnly(Side.CLIENT) protected IIcon iconDirectionalSideLeftTurnDown; + @SideOnly(Side.CLIENT) protected IIcon iconDirectionalSideRightTurnDown; + @SideOnly(Side.CLIENT) protected IIcon iconDirectionalSideUpTurnLeft; + @SideOnly(Side.CLIENT) protected IIcon iconDirectionalSideUpTurnRight; + @SideOnly(Side.CLIENT) protected IIcon iconDirectionalSideDownTurnLeft; + @SideOnly(Side.CLIENT) protected IIcon iconDirectionalSideDownTurnRight; + public BlockCraneBase(Material mat) { super(mat); } - + + @Override + public abstract TileEntityCraneBase createNewTileEntity(World p_149915_1_, int p_149915_2_); + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -54,7 +74,9 @@ public abstract class BlockCraneBase extends BlockContainer implements IBlockSid @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) { + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemTooling) { + return false; + } else if(world.isRemote) { return true; } else if(!player.isSneaking()) { FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); @@ -71,8 +93,128 @@ public abstract class BlockCraneBase extends BlockContainer implements IBlockSid } @Override - public IIcon getIcon(int side, int metadata) { + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + if (tool != ToolType.SCREWDRIVER) return false; + + TileEntity te = world.getTileEntity(x, y, z); + if (!(te instanceof TileEntityCraneBase)) return false; + + TileEntityCraneBase craneTileEntity = (TileEntityCraneBase) te; + + ForgeDirection newDirection = ForgeDirection.getOrientation(side); + + if (player.isSneaking()) { + craneTileEntity.setOutputOverride(newDirection); + } else { + craneTileEntity.setInput(newDirection); + } + + return true; + } + + public ForgeDirection getInputSide(IBlockAccess world, int x, int y, int z) { + return ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); + } + + /** + * Returns the player-overridden output direction, or {@link ForgeDirection#UNKNOWN} if unset. + * A return value of {@link ForgeDirection#UNKNOWN} suggests use of default meta behavior. + * Should never return the current input direction. + */ + protected final ForgeDirection getOutputSideOverride(IBlockAccess world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + if (!(te instanceof TileEntityCraneBase)) return ForgeDirection.UNKNOWN; + TileEntityCraneBase craneTileEntity = (TileEntityCraneBase) te; + + return craneTileEntity.getOutputOverride(); + } + + public ForgeDirection getOutputSide(IBlockAccess world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + if (!(te instanceof TileEntityCraneBase)) return ForgeDirection.UNKNOWN; + TileEntityCraneBase craneTileEntity = (TileEntityCraneBase) te; + + return craneTileEntity.getOutputSide(); + } + + @Override + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + ForgeDirection inputSide = getInputSide(world, x, y, z); + ForgeDirection outputOverride = getOutputSideOverride(world, x, y, z); + boolean outputSideOverridden = outputOverride != ForgeDirection.UNKNOWN && outputOverride.getOpposite() != inputSide; + ForgeDirection outputSide = outputSideOverridden ? outputOverride : inputSide.getOpposite(); + + // take your left hand, make your thumb the input side and the index finger the output side + // angle your middle finger to make your hand look like coordinate axes + // the direction your middle finger is pointing towards will be the direction returned from this function + ForgeDirection leftHandRotation = outputSide.getRotation(inputSide); + + if(side == 0 || side == 1) { + if(side == outputSide.ordinal()) { + return this.iconOut; + } + if(side == inputSide.ordinal()) { + return this.iconIn; + } + + if (side == 1) { + if (outputSideOverridden) { + if (leftHandRotation == ForgeDirection.UP) { + return this.iconDirectionalTurnLeft; + } + if (leftHandRotation == ForgeDirection.DOWN) { + return this.iconDirectionalTurnRight; + } + } else return iconDirectional; + } + + return this.blockIcon; + } + if(side == outputSide.ordinal()) { + return this.iconSideOut; + } + if(side == inputSide.ordinal()) { + return this.iconSideIn; + } + + if (outputSideOverridden) { + if (leftHandRotation.ordinal() == side) { + if (outputSide == ForgeDirection.UP) + return this.iconDirectionalSideLeftTurnUp; + if (outputSide == ForgeDirection.DOWN) + return this.iconDirectionalSideRightTurnDown; + if (inputSide == ForgeDirection.UP) + return this.iconDirectionalSideUpTurnRight; + if (inputSide == ForgeDirection.DOWN) + return this.iconDirectionalSideDownTurnLeft; + } + if (leftHandRotation.getOpposite().ordinal() == side) { + if (outputSide == ForgeDirection.UP) + return this.iconDirectionalSideRightTurnUp; + if (outputSide == ForgeDirection.DOWN) + return this.iconDirectionalSideLeftTurnDown; + if (inputSide == ForgeDirection.UP) + return this.iconDirectionalSideUpTurnLeft; + if (inputSide == ForgeDirection.DOWN) + return this.iconDirectionalSideDownTurnRight; + } + } else { + if(outputSide == ForgeDirection.UP) { + return this.iconDirectionalUp; + } + if(outputSide == ForgeDirection.DOWN) { + return this.iconDirectionalDown; + } + } + + return this.iconSide; + } + + // kept for inventory rendering + @Override + public IIcon getIcon(int side, int metadata) { + if(side == 0 || side == 1) { if(side == metadata) { return this.iconOut; @@ -80,10 +222,10 @@ public abstract class BlockCraneBase extends BlockContainer implements IBlockSid if(side == ForgeDirection.getOrientation(metadata).getOpposite().ordinal()) { return this.iconIn; } - + return side == 1 ? this.iconDirectional : this.blockIcon; } - + if(side == metadata) { return this.iconSideOut; } @@ -97,9 +239,23 @@ public abstract class BlockCraneBase extends BlockContainer implements IBlockSid if(metadata == 1) { return this.iconDirectionalDown; } - + return this.iconSide; } + + @Override + public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { + int meta = world.getBlockMetadata(x, y, z); + + if(meta > 1 && side == 1) { + if(meta == 2) return 3; + if(meta == 3) return 0; + if(meta == 4) return 1; + if(meta == 5) return 2; + } + + return 0; + } public static int renderIDClassic = RenderingRegistry.getNextAvailableRenderId(); @@ -150,4 +306,9 @@ public abstract class BlockCraneBase extends BlockContainer implements IBlockSid super.breakBlock(world, x, y, z, block, meta); } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java b/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java index b14fa899e..88e054bfd 100644 --- a/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java +++ b/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java @@ -97,7 +97,7 @@ public class BlockFluidDuct extends BlockContainer implements ILookOverlay { TileEntityFluidDuctSimple duct = (TileEntityFluidDuctSimple) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java b/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java index 08031fe84..3674da7d1 100644 --- a/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java +++ b/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java @@ -82,7 +82,7 @@ public class BlockFluidDuctSolid extends BlockContainer implements IBlockMultiPa TileEntityFluidDuctSimple duct = (TileEntityFluidDuctSimple) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/network/BlockGasDuct.java b/src/main/java/com/hbm/blocks/network/BlockGasDuct.java deleted file mode 100644 index f1b85be7d..000000000 --- a/src/main/java/com/hbm/blocks/network/BlockGasDuct.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.hbm.blocks.network; - -import com.hbm.tileentity.conductor.TileEntityGasDuct; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; - -public class BlockGasDuct extends BlockContainer { - - public BlockGasDuct(Material p_i45386_1_) { - super(p_i45386_1_); - float p = 1F/16F; - this.setBlockBounds(11 * p / 2, 11 * p / 2, 11 * p / 2, 1 - 11 * p / 2, 1 - 11 * p / 2, 1 - 11 * p / 2); - this.useNeighborBrightness = true; - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - if(world.getTileEntity(x, y, z) instanceof TileEntityGasDuct) { - TileEntityGasDuct cable = (TileEntityGasDuct)world.getTileEntity(x, y, z); - - if(cable != null) - { - float p = 1F/16F; - float minX = 11 * p / 2 - (cable.connections[5] != null ? (11 * p / 2) : 0); - float minY = 11 * p / 2 - (cable.connections[1] != null ? (11 * p / 2) : 0); - float minZ = 11 * p / 2 - (cable.connections[2] != null ? (11 * p / 2) : 0); - float maxX = 1 - 11 * p / 2 + (cable.connections[3] != null ? (11 * p / 2) : 0); - float maxY = 1 - 11 * p / 2 + (cable.connections[0] != null ? (11 * p / 2) : 0); - float maxZ = 1 - 11 * p / 2 + (cable.connections[4] != null ? (11 * p / 2) : 0); - - this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ); - } - } - return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); - } - - @Override - public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { - if(world.getTileEntity(x, y, z) instanceof TileEntityGasDuct) { - TileEntityGasDuct cable = (TileEntityGasDuct)world.getTileEntity(x, y, z); - - if(cable != null) - { - float p = 1F/16F; - float minX = 11 * p / 2 - (cable.connections[5] != null ? (11 * p / 2) : 0); - float minY = 11 * p / 2 - (cable.connections[1] != null ? (11 * p / 2) : 0); - float minZ = 11 * p / 2 - (cable.connections[2] != null ? (11 * p / 2) : 0); - float maxX = 1 - 11 * p / 2 + (cable.connections[3] != null ? (11 * p / 2) : 0); - float maxY = 1 - 11 * p / 2 + (cable.connections[0] != null ? (11 * p / 2) : 0); - float maxZ = 1 - 11 * p / 2 + (cable.connections[4] != null ? (11 * p / 2) : 0); - - this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ); - } - } - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityGasDuct(); - } - - @Override - public int getRenderType(){ - return -1; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } -} diff --git a/src/main/java/com/hbm/blocks/network/BlockOilDuct.java b/src/main/java/com/hbm/blocks/network/BlockOilDuct.java deleted file mode 100644 index a1b9ca9bd..000000000 --- a/src/main/java/com/hbm/blocks/network/BlockOilDuct.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.hbm.blocks.network; - -import com.hbm.tileentity.conductor.TileEntityOilDuct; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; - -public class BlockOilDuct extends BlockContainer { - - public BlockOilDuct(Material p_i45386_1_) { - super(p_i45386_1_); - float p = 1F/16F; - this.setBlockBounds(11 * p / 2, 11 * p / 2, 11 * p / 2, 1 - 11 * p / 2, 1 - 11 * p / 2, 1 - 11 * p / 2); - this.useNeighborBrightness = true; - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - if(world.getTileEntity(x, y, z) instanceof TileEntityOilDuct) { - TileEntityOilDuct cable = (TileEntityOilDuct)world.getTileEntity(x, y, z); - - if(cable != null) - { - float p = 1F/16F; - float minX = 11 * p / 2 - (cable.connections[5] != null ? (11 * p / 2) : 0); - float minY = 11 * p / 2 - (cable.connections[1] != null ? (11 * p / 2) : 0); - float minZ = 11 * p / 2 - (cable.connections[2] != null ? (11 * p / 2) : 0); - float maxX = 1 - 11 * p / 2 + (cable.connections[3] != null ? (11 * p / 2) : 0); - float maxY = 1 - 11 * p / 2 + (cable.connections[0] != null ? (11 * p / 2) : 0); - float maxZ = 1 - 11 * p / 2 + (cable.connections[4] != null ? (11 * p / 2) : 0); - - this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ); - } - } - return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); - } - - @Override - public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { - if(world.getTileEntity(x, y, z) instanceof TileEntityOilDuct) { - TileEntityOilDuct cable = (TileEntityOilDuct)world.getTileEntity(x, y, z); - - if(cable != null) - { - float p = 1F/16F; - float minX = 11 * p / 2 - (cable.connections[5] != null ? (11 * p / 2) : 0); - float minY = 11 * p / 2 - (cable.connections[1] != null ? (11 * p / 2) : 0); - float minZ = 11 * p / 2 - (cable.connections[2] != null ? (11 * p / 2) : 0); - float maxX = 1 - 11 * p / 2 + (cable.connections[3] != null ? (11 * p / 2) : 0); - float maxY = 1 - 11 * p / 2 + (cable.connections[0] != null ? (11 * p / 2) : 0); - float maxZ = 1 - 11 * p / 2 + (cable.connections[4] != null ? (11 * p / 2) : 0); - - this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ); - } - } - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityOilDuct(); - } - - @Override - public int getRenderType(){ - return -1; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } -} diff --git a/src/main/java/com/hbm/blocks/network/CraneBoxer.java b/src/main/java/com/hbm/blocks/network/CraneBoxer.java index b884bd62f..2498e734c 100644 --- a/src/main/java/com/hbm/blocks/network/CraneBoxer.java +++ b/src/main/java/com/hbm/blocks/network/CraneBoxer.java @@ -1,11 +1,11 @@ package com.hbm.blocks.network; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.network.TileEntityCraneBoxer; - import api.hbm.conveyor.IConveyorItem; import api.hbm.conveyor.IConveyorPackage; import api.hbm.conveyor.IEnterableBlock; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityCraneBase; +import com.hbm.tileentity.network.TileEntityCraneBoxer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -14,8 +14,6 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.item.EntityItem; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -26,7 +24,7 @@ public class CraneBoxer extends BlockCraneBase implements IEnterableBlock { } @Override - public TileEntity createNewTileEntity(World world, int meta) { + public TileEntityCraneBase createNewTileEntity(World world, int meta) { return new TileEntityCraneBoxer(); } @@ -34,31 +32,26 @@ public class CraneBoxer extends BlockCraneBase implements IEnterableBlock { @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { super.registerBlockIcons(iconRegister); - this.iconIn = iconRegister.registerIcon(RefStrings.MODID + ":crane_box"); - this.iconSideIn = iconRegister.registerIcon(RefStrings.MODID + ":crane_side_box"); + this.iconOut = iconRegister.registerIcon(RefStrings.MODID + ":crane_box"); + this.iconSideOut = iconRegister.registerIcon(RefStrings.MODID + ":crane_side_box"); this.iconDirectional = iconRegister.registerIcon(RefStrings.MODID + ":crane_boxer_top"); this.iconDirectionalUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_boxer_side_up"); this.iconDirectionalDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_boxer_side_down"); + this.iconDirectionalTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_boxer_top_left"); + this.iconDirectionalTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_boxer_top_right"); + this.iconDirectionalSideLeftTurnUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_boxer_side_left_turn_up"); + this.iconDirectionalSideRightTurnUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_boxer_side_right_turn_up"); + this.iconDirectionalSideLeftTurnDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_boxer_side_left_turn_down"); + this.iconDirectionalSideRightTurnDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_boxer_side_right_turn_down"); + this.iconDirectionalSideUpTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_boxer_side_up_turn_left"); + this.iconDirectionalSideUpTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_boxer_side_up_turn_right"); + this.iconDirectionalSideDownTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_boxer_side_down_turn_left"); + this.iconDirectionalSideDownTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_boxer_side_down_turn_right"); } - @Override - public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { - int meta = world.getBlockMetadata(x, y, z); - - if(meta > 1 && side == 1) { - if(meta == 2) return 3; - if(meta == 3) return 0; - if(meta == 4) return 1; - if(meta == 5) return 2; - } - - return 0; - } - - @Override + @Override public boolean canItemEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorItem entity) { - ForgeDirection orientation = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); - return orientation == dir; + return getInputSide(world, x, y, z) == dir; } @Override diff --git a/src/main/java/com/hbm/blocks/network/CraneExtractor.java b/src/main/java/com/hbm/blocks/network/CraneExtractor.java index 51d754aa4..a50ff756a 100644 --- a/src/main/java/com/hbm/blocks/network/CraneExtractor.java +++ b/src/main/java/com/hbm/blocks/network/CraneExtractor.java @@ -1,16 +1,16 @@ package com.hbm.blocks.network; import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityCraneBase; import com.hbm.tileentity.network.TileEntityCraneExtractor; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class CraneExtractor extends BlockCraneBase { @@ -19,7 +19,7 @@ public class CraneExtractor extends BlockCraneBase { } @Override - public TileEntity createNewTileEntity(World world, int meta) { + public TileEntityCraneBase createNewTileEntity(World world, int meta) { return new TileEntityCraneExtractor(); } @@ -30,19 +30,48 @@ public class CraneExtractor extends BlockCraneBase { this.iconDirectional = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_top"); this.iconDirectionalUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_down"); this.iconDirectionalDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_up"); + this.iconDirectionalTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_top_right"); + this.iconDirectionalTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_top_left"); + this.iconDirectionalSideLeftTurnUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_up_turn_left"); + this.iconDirectionalSideRightTurnUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_up_turn_right"); + this.iconDirectionalSideLeftTurnDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_down_turn_left"); + this.iconDirectionalSideRightTurnDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_down_turn_right"); + this.iconDirectionalSideUpTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_left_turn_up"); + this.iconDirectionalSideUpTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_right_turn_up"); + this.iconDirectionalSideDownTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_left_turn_down"); + this.iconDirectionalSideDownTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_right_turn_down"); } @Override public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { int meta = world.getBlockMetadata(x, y, z); - + if(meta > 1 && side == 1) { + // ok so i've been sitting around for 4-5 hours trying to come up with a + // more elegant way to implement this and i have seriously no clue what + // the guys at mojang did, but the uv rotation makes absolutely no sense + // it's 2:30 am, please just accept this + // - martin + ForgeDirection leftHandDirection = getOutputSide(world, x, y, z).getRotation(getInputSide(world, x, y, z)); + if (leftHandDirection == ForgeDirection.UP) { + if (meta == 2) return 2; + if (meta == 3) return 1; + if (meta == 4) return 3; + if (meta == 5) return 0; + } + if (leftHandDirection == ForgeDirection.DOWN) { + if (meta == 2) return 1; + if (meta == 3) return 2; + if (meta == 4) return 0; + if (meta == 5) return 3; + } + if(meta == 2) return 0; if(meta == 3) return 3; if(meta == 4) return 2; if(meta == 5) return 1; } - + return 0; } diff --git a/src/main/java/com/hbm/blocks/network/CraneGrabber.java b/src/main/java/com/hbm/blocks/network/CraneGrabber.java index 71372467b..fcda1d05a 100644 --- a/src/main/java/com/hbm/blocks/network/CraneGrabber.java +++ b/src/main/java/com/hbm/blocks/network/CraneGrabber.java @@ -1,15 +1,13 @@ package com.hbm.blocks.network; import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityCraneBase; import com.hbm.tileentity.network.TileEntityCraneGrabber; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class CraneGrabber extends BlockCraneBase { @@ -19,7 +17,7 @@ public class CraneGrabber extends BlockCraneBase { } @Override - public TileEntity createNewTileEntity(World world, int meta) { + public TileEntityCraneBase createNewTileEntity(World world, int meta) { return new TileEntityCraneGrabber(); } @@ -27,30 +25,26 @@ public class CraneGrabber extends BlockCraneBase { @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { super.registerBlockIcons(iconRegister); + this.iconIn = iconRegister.registerIcon(RefStrings.MODID + ":crane_pull"); + this.iconSideIn = iconRegister.registerIcon(RefStrings.MODID + ":crane_side_pull"); this.iconDirectional = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_top"); this.iconDirectionalUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_up"); this.iconDirectionalDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_down"); - this.iconOut = iconRegister.registerIcon(RefStrings.MODID + ":crane_pull"); - this.iconSideOut = iconRegister.registerIcon(RefStrings.MODID + ":crane_side_pull"); + this.iconDirectionalTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_top_left"); + this.iconDirectionalTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_top_right"); + this.iconDirectionalSideLeftTurnUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_left_turn_up"); + this.iconDirectionalSideRightTurnUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_right_turn_up"); + this.iconDirectionalSideLeftTurnDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_left_turn_down"); + this.iconDirectionalSideRightTurnDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_right_turn_down"); + this.iconDirectionalSideUpTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_up_turn_left"); + this.iconDirectionalSideUpTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_up_turn_right"); + this.iconDirectionalSideDownTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_down_turn_left"); + this.iconDirectionalSideDownTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_down_turn_right"); } - @Override - public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { - int meta = world.getBlockMetadata(x, y, z); - - if(meta > 1 && side == 1) { - if(meta == 2) return 3; - if(meta == 3) return 0; - if(meta == 4) return 1; - if(meta == 5) return 2; - } - - return 0; - } - - @Override + @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { - this.dropContents(world, x, y, z, block, meta, 0, 11); + this.dropContents(world, x, y, z, block, meta, 9, 11); super.breakBlock(world, x, y, z, block, meta); } } diff --git a/src/main/java/com/hbm/blocks/network/CraneInserter.java b/src/main/java/com/hbm/blocks/network/CraneInserter.java index cf3917af4..97347dc3c 100644 --- a/src/main/java/com/hbm/blocks/network/CraneInserter.java +++ b/src/main/java/com/hbm/blocks/network/CraneInserter.java @@ -1,11 +1,11 @@ package com.hbm.blocks.network; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.network.TileEntityCraneInserter; - import api.hbm.conveyor.IConveyorItem; import api.hbm.conveyor.IConveyorPackage; import api.hbm.conveyor.IEnterableBlock; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityCraneBase; +import com.hbm.tileentity.network.TileEntityCraneInserter; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -18,7 +18,6 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; -import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -29,7 +28,7 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock { } @Override - public TileEntity createNewTileEntity(World world, int meta) { + public TileEntityCraneBase createNewTileEntity(World world, int meta) { return new TileEntityCraneInserter(); } @@ -40,6 +39,16 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock { this.iconDirectional = iconRegister.registerIcon(RefStrings.MODID + ":crane_in_top"); this.iconDirectionalUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_in_side_up"); this.iconDirectionalDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_in_side_down"); + this.iconDirectionalTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_in_top_left"); + this.iconDirectionalTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_in_top_right"); + this.iconDirectionalSideLeftTurnUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_in_side_left_turn_up"); + this.iconDirectionalSideRightTurnUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_in_side_right_turn_up"); + this.iconDirectionalSideLeftTurnDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_in_side_left_turn_down"); + this.iconDirectionalSideRightTurnDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_in_side_right_turn_down"); + this.iconDirectionalSideUpTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_in_side_up_turn_left"); + this.iconDirectionalSideUpTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_in_side_up_turn_right"); + this.iconDirectionalSideDownTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_in_side_down_turn_left"); + this.iconDirectionalSideDownTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_in_side_down_turn_right"); } @Override @@ -50,7 +59,8 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock { @Override public void onItemEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorItem entity) { - TileEntity te = world.getTileEntity(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); + ForgeDirection outputDirection = getOutputSide(world, x, y, z); + TileEntity te = world.getTileEntity(x + outputDirection.offsetX, y + outputDirection.offsetY, z + outputDirection.offsetZ); if(entity == null || entity.getItemStack() == null || entity.getItemStack().stackSize <= 0) { return; @@ -62,19 +72,19 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock { if(te instanceof ISidedInventory) { ISidedInventory sided = (ISidedInventory) te; - access = masquerade(sided, dir.ordinal()); + access = masquerade(sided, outputDirection.getOpposite().ordinal()); } if(te instanceof IInventory) { IInventory inv = (IInventory) te; - addToInventory(inv, access, toAdd, dir.ordinal()); + addToInventory(inv, access, toAdd, outputDirection.getOpposite().ordinal()); } - if(toAdd != null && toAdd.stackSize > 0) { - addToInventory((TileEntityCraneInserter) world.getTileEntity(x, y, z), null, toAdd, dir.ordinal()); + if(toAdd.stackSize > 0) { + addToInventory((TileEntityCraneInserter) world.getTileEntity(x, y, z), null, toAdd, outputDirection.getOpposite().ordinal()); } - if(toAdd != null && toAdd.stackSize > 0) { + if(toAdd.stackSize > 0) { EntityItem drop = new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, toAdd.copy()); world.spawnEntityInWorld(drop); } @@ -147,21 +157,7 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock { @Override public void onPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) { } - @Override - public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { - int meta = world.getBlockMetadata(x, y, z); - - if(meta > 1 && side == 1) { - if(meta == 2) return 3; - if(meta == 3) return 0; - if(meta == 4) return 1; - if(meta == 5) return 2; - } - - return 0; - } - - @Override + @Override public boolean hasComparatorInputOverride() { return true; } diff --git a/src/main/java/com/hbm/blocks/network/CraneRouter.java b/src/main/java/com/hbm/blocks/network/CraneRouter.java index 06dc1769f..a89d2a695 100644 --- a/src/main/java/com/hbm/blocks/network/CraneRouter.java +++ b/src/main/java/com/hbm/blocks/network/CraneRouter.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.IBlockMultiPass; +import com.hbm.blocks.ITooltipProvider; import com.hbm.entity.item.EntityMovingItem; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; @@ -32,7 +33,7 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnterableBlock { +public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnterableBlock, ITooltipProvider { @SideOnly(Side.CLIENT) protected IIcon iconOverlay; @@ -194,11 +195,11 @@ public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnt } } - @Override - public boolean canPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) { - return false; - } + @Override public boolean canPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) { return false; } + @Override public void onPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) { } @Override - public void onPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) { } + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/network/CraneSplitter.java b/src/main/java/com/hbm/blocks/network/CraneSplitter.java index 11de7afda..a39396fb0 100644 --- a/src/main/java/com/hbm/blocks/network/CraneSplitter.java +++ b/src/main/java/com/hbm/blocks/network/CraneSplitter.java @@ -1,6 +1,9 @@ package com.hbm.blocks.network; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; import com.hbm.entity.item.EntityMovingItem; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityCraneSplitter; @@ -14,6 +17,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; @@ -22,7 +26,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnterableBlock { +public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnterableBlock, ITooltipProvider { @SideOnly(Side.CLIENT) public IIcon iconTopLeft; @SideOnly(Side.CLIENT) public IIcon iconTopRight; @@ -154,4 +158,9 @@ public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnt if(meta >= 12) return ForgeDirection.getOrientation(meta - offset); return ForgeDirection.getOrientation(meta).getRotation(ForgeDirection.UP); } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/network/CraneUnboxer.java b/src/main/java/com/hbm/blocks/network/CraneUnboxer.java index 558de5654..b9ffd19a2 100644 --- a/src/main/java/com/hbm/blocks/network/CraneUnboxer.java +++ b/src/main/java/com/hbm/blocks/network/CraneUnboxer.java @@ -1,11 +1,11 @@ package com.hbm.blocks.network; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.network.TileEntityCraneUnboxer; - import api.hbm.conveyor.IConveyorItem; import api.hbm.conveyor.IConveyorPackage; import api.hbm.conveyor.IEnterableBlock; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityCraneBase; +import com.hbm.tileentity.network.TileEntityCraneUnboxer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -14,7 +14,6 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.item.EntityItem; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -26,7 +25,7 @@ public class CraneUnboxer extends BlockCraneBase implements IEnterableBlock { } @Override - public TileEntity createNewTileEntity(World world, int meta) { + public TileEntityCraneBase createNewTileEntity(World world, int meta) { return new TileEntityCraneUnboxer(); } @@ -34,24 +33,53 @@ public class CraneUnboxer extends BlockCraneBase implements IEnterableBlock { @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { super.registerBlockIcons(iconRegister); - this.iconIn = iconRegister.registerIcon(RefStrings.MODID + ":crane_box"); - this.iconSideIn = iconRegister.registerIcon(RefStrings.MODID + ":crane_side_box"); + this.iconOut = iconRegister.registerIcon(RefStrings.MODID + ":crane_box"); + this.iconSideOut = iconRegister.registerIcon(RefStrings.MODID + ":crane_side_box"); this.iconDirectional = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_top"); this.iconDirectionalUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_side_down"); this.iconDirectionalDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_side_up"); + this.iconDirectionalTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_top_right"); + this.iconDirectionalTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_top_left"); + this.iconDirectionalSideLeftTurnUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_side_up_turn_left"); + this.iconDirectionalSideRightTurnUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_side_up_turn_right"); + this.iconDirectionalSideLeftTurnDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_side_down_turn_left"); + this.iconDirectionalSideRightTurnDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_side_down_turn_right"); + this.iconDirectionalSideUpTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_side_left_turn_up"); + this.iconDirectionalSideUpTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_side_right_turn_up"); + this.iconDirectionalSideDownTurnLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_side_left_turn_down"); + this.iconDirectionalSideDownTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_unboxer_side_right_turn_down"); } @Override public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { int meta = world.getBlockMetadata(x, y, z); - + if(meta > 1 && side == 1) { + // ok so i've been sitting around for 4-5 hours trying to come up with a + // more elegant way to implement this and i have seriously no clue what + // the guys at mojang did, but the uv rotation makes absolutely no sense + // it's 2:30 am, please just accept this + // - martin + ForgeDirection leftHandDirection = getOutputSide(world, x, y, z).getRotation(getInputSide(world, x, y, z)); + if (leftHandDirection == ForgeDirection.UP) { + if (meta == 2) return 2; + if (meta == 3) return 1; + if (meta == 4) return 3; + if (meta == 5) return 0; + } + if (leftHandDirection == ForgeDirection.DOWN) { + if (meta == 2) return 1; + if (meta == 3) return 2; + if (meta == 4) return 0; + if (meta == 5) return 3; + } + if(meta == 2) return 0; if(meta == 3) return 3; if(meta == 4) return 2; if(meta == 5) return 1; } - + return 0; } @@ -71,15 +99,16 @@ public class CraneUnboxer extends BlockCraneBase implements IEnterableBlock { @Override public boolean canPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) { - return true; + return getOutputSide(world, x, y, z) == dir; } @Override public void onPackageEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorPackage entity) { TileEntityCraneUnboxer unboxer = (TileEntityCraneUnboxer) world.getTileEntity(x, y, z); - + ForgeDirection accessedSide = getOutputSide(world, x, y, z).getOpposite(); + for(ItemStack stack : entity.getItemStacks()) { - ItemStack remainder = CraneInserter.addToInventory(unboxer, unboxer.getAccessibleSlotsFromSide(dir.ordinal()), stack, dir.ordinal()); + ItemStack remainder = CraneInserter.addToInventory(unboxer, unboxer.getAccessibleSlotsFromSide(accessedSide.ordinal()), stack, accessedSide.ordinal()); if(remainder != null && remainder.stackSize > 0) { EntityItem drop = new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, remainder.copy()); diff --git a/src/main/java/com/hbm/blocks/network/DroneCrate.java b/src/main/java/com/hbm/blocks/network/DroneCrate.java new file mode 100644 index 000000000..94641ed8f --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/DroneCrate.java @@ -0,0 +1,133 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.network.TileEntityDroneCrate; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class DroneCrate extends BlockContainer implements ILookOverlay, ITooltipProvider { + + private static Random rand = new Random(); + + @SideOnly(Side.CLIENT) private IIcon iconTop; + @SideOnly(Side.CLIENT) private IIcon iconBottom; + + public DroneCrate() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityDroneCrate(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + this.blockIcon = reg.registerIcon(RefStrings.MODID + ":drone_crate_side"); + this.iconTop = reg.registerIcon(RefStrings.MODID + ":drone_crate_top"); + this.iconBottom = reg.registerIcon(RefStrings.MODID + ":drone_crate_bottom"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return side == 1 ? this.iconTop : (side == 0 ? this.iconBottom : this.blockIcon); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.drone_linker) return false; + + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + return true; + } else { + return false; + } + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + TileEntityDroneCrate tileentityfurnace = (TileEntityDroneCrate) world.getTileEntity(x, y, z); + + if(tileentityfurnace != null) { + for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) { + ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); + + if(itemstack != null) { + float f = this.rand.nextFloat() * 0.8F + 0.1F; + float f1 = this.rand.nextFloat() * 0.8F + 0.1F; + float f2 = this.rand.nextFloat() * 0.8F + 0.1F; + + while(itemstack.stackSize > 0) { + int j1 = this.rand.nextInt(21) + 10; + + if(j1 > itemstack.stackSize) { + j1 = itemstack.stackSize; + } + + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + + if(itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (float) this.rand.nextGaussian() * f3; + entityitem.motionY = (float) this.rand.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) this.rand.nextGaussian() * f3; + world.spawnEntityInWorld(entityitem); + } + } + } + + world.func_147453_f(x, y, z, block); + } + + super.breakBlock(world, x, y, z, block, meta); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + addStandardInfo(stack, player, list, ext); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + TileEntityDroneCrate tile = (TileEntityDroneCrate) world.getTileEntity(x, y, z); + List text = new ArrayList(); + + if(tile.nextY != -1) { + text.add("Next waypoint: " + tile.nextX + " / " + tile.nextY + " / " + tile.nextZ); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + } +} diff --git a/src/main/java/com/hbm/blocks/network/DroneDock.java b/src/main/java/com/hbm/blocks/network/DroneDock.java new file mode 100644 index 000000000..592f5a194 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/DroneDock.java @@ -0,0 +1,64 @@ +package com.hbm.blocks.network; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.network.TileEntityDroneDock; +import com.hbm.tileentity.network.TileEntityDroneProvider; +import com.hbm.tileentity.network.TileEntityDroneRequester; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class DroneDock extends BlockContainer { + + @SideOnly(Side.CLIENT) private IIcon iconTop; + @SideOnly(Side.CLIENT) private IIcon iconBottom; + + public DroneDock() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(this == ModBlocks.drone_dock) return new TileEntityDroneDock(); + if(this == ModBlocks.drone_crate_provider) return new TileEntityDroneProvider(); + if(this == ModBlocks.drone_crate_requester) return new TileEntityDroneRequester(); + + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + this.blockIcon = reg.registerIcon(this.textureName + "_side"); + this.iconTop = reg.registerIcon(this.textureName + "_top"); + this.iconBottom = reg.registerIcon(this.textureName + "_bottom"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return side == 1 ? this.iconTop : (side == 0 ? this.iconBottom : this.blockIcon); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/hbm/blocks/network/DroneWaypoint.java b/src/main/java/com/hbm/blocks/network/DroneWaypoint.java new file mode 100644 index 000000000..28e9e338b --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/DroneWaypoint.java @@ -0,0 +1,141 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.items.ModItems; +import com.hbm.tileentity.network.TileEntityDroneWaypoint; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class DroneWaypoint extends BlockContainer implements ILookOverlay, ITooltipProvider { + + public DroneWaypoint() { + super(Material.circuits); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityDroneWaypoint(); + } + + @Override + public int getRenderType() { + return RadioTorchBase.renderID; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { + return true; + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return null; + } + + @Override + public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 vec0, Vec3 vec1) { + + int meta = world.getBlockMetadata(x, y, z) & 7; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + + this.setBlockBounds( + dir.offsetX == 1 ? 0F : 0.375F, + dir.offsetY == 1 ? 0F : 0.375F, + dir.offsetZ == 1 ? 0F : 0.375F, + dir.offsetX == -1 ? 1F : 0.625F, + dir.offsetY == -1 ? 1F : 0.625F, + dir.offsetZ == -1 ? 1F : 0.625F + ); + + return super.collisionRayTrace(world, x, y, z, vec0, vec1); + } + + @Override + public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) { + return side; + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + + int meta = world.getBlockMetadata(x, y, z); + ForgeDirection dir = ForgeDirection.getOrientation(meta); + Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); + + if(!b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) && (!b.renderAsNormalBlock() || b.isAir(world, x, y, z))) { + this.dropBlockAsItem(world, x, y, z, meta, 0); + world.setBlockToAir(x, y, z); + } + } + + @Override + public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side) { + if(!super.canPlaceBlockOnSide(world, x, y, z, side)) return false; + + ForgeDirection dir = ForgeDirection.getOrientation(side); + Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); + + return b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z)); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.drone_linker) return false; + + if(world.isRemote) return true; + + TileEntityDroneWaypoint tile = (TileEntityDroneWaypoint) world.getTileEntity(x, y, z); + tile.addHeight(player.isSneaking() ? - 1 : 1); + return true; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + addStandardInfo(stack, player, list, ext); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + TileEntityDroneWaypoint tile = (TileEntityDroneWaypoint) world.getTileEntity(x, y, z); + List text = new ArrayList(); + + text.add("Waypoint distance: " + tile.height); + + if(tile.nextY != -1) { + text.add("Next waypoint: " + tile.nextX + " / " + tile.nextY + " / " + tile.nextZ); + } + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/blocks/network/DroneWaypointRequest.java b/src/main/java/com/hbm/blocks/network/DroneWaypointRequest.java new file mode 100644 index 000000000..a02b63a3c --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/DroneWaypointRequest.java @@ -0,0 +1,100 @@ +package com.hbm.blocks.network; + +import com.hbm.tileentity.network.TileEntityDroneWaypointRequest; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class DroneWaypointRequest extends BlockContainer { + + public DroneWaypointRequest() { + super(Material.circuits); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityDroneWaypointRequest(); + } + + @Override + public int getRenderType() { + return RadioTorchBase.renderID; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { + return true; + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return null; + } + + @Override + public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 vec0, Vec3 vec1) { + + int meta = world.getBlockMetadata(x, y, z) & 7; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + + this.setBlockBounds( + dir.offsetX == 1 ? 0F : 0.375F, + dir.offsetY == 1 ? 0F : 0.375F, + dir.offsetZ == 1 ? 0F : 0.375F, + dir.offsetX == -1 ? 1F : 0.625F, + dir.offsetY == -1 ? 1F : 0.625F, + dir.offsetZ == -1 ? 1F : 0.625F + ); + + return super.collisionRayTrace(world, x, y, z, vec0, vec1); + } + + @Override + public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) { + return side; + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + + int meta = world.getBlockMetadata(x, y, z); + ForgeDirection dir = ForgeDirection.getOrientation(meta); + Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); + + if(!b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) && (!b.renderAsNormalBlock() || b.isAir(world, x, y, z))) { + this.dropBlockAsItem(world, x, y, z, meta, 0); + world.setBlockToAir(x, y, z); + } + } + + @Override + public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side) { + if(!super.canPlaceBlockOnSide(world, x, y, z, side)) return false; + + ForgeDirection dir = ForgeDirection.getOrientation(side); + Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); + + return b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z)); + } +} diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBase.java b/src/main/java/com/hbm/blocks/network/FluidDuctBase.java index 7c17661f1..3422d1f17 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBase.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBase.java @@ -1,9 +1,15 @@ package com.hbm.blocks.network; +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.IAnalyzable; import com.hbm.inventory.fluid.FluidType; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.network.TileEntityPipeBaseNT; +import api.hbm.fluid.IPipeNet; +import api.hbm.fluid.PipeNet; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -12,7 +18,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class FluidDuctBase extends BlockContainer implements IBlockFluidDuct { +public class FluidDuctBase extends BlockContainer implements IBlockFluidDuct, IAnalyzable { public FluidDuctBase(Material mat) { super(mat); @@ -80,4 +86,35 @@ public class FluidDuctBase extends BlockContainer implements IBlockFluidDuct { } } } + + @Override + public List getDebugInfo(World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityPipeBaseNT) { + TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; + FluidType type = pipe.getType(); + + if(type != null) { + + IPipeNet net = pipe.getPipeNet(type); + + if(net instanceof PipeNet) { + PipeNet pipeNet = (PipeNet) net; + + List debug = new ArrayList(); + debug.add("=== DEBUG START ==="); + debug.addAll(pipeNet.debug); + debug.add("=== DEBUG END ==="); + debug.add("Links: " + pipeNet.getLinks().size()); + debug.add("Subscribers: " + pipeNet.getSubscribers().size()); + debug.add("Transfer: " + pipeNet.getTotalTransfer()); + return debug; + } + } + } + + return null; + } } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java index e8675d146..f05d3733a 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java @@ -5,8 +5,6 @@ import java.util.List; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ILookOverlay; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityPipeBaseNT; @@ -73,21 +71,14 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve @SideOnly(Side.CLIENT) public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { - FluidType type = Fluids.NONE; - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof TileEntityPipeBaseNT) { - TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; - type = pipe.getType(); - } - - boolean pX = Library.canConnectFluid(world, x + 1, y, z, Library.NEG_X, type); - boolean nX = Library.canConnectFluid(world, x - 1, y, z, Library.POS_X, type); - boolean pY = Library.canConnectFluid(world, x, y + 1, z, Library.NEG_Y, type); - boolean nY = Library.canConnectFluid(world, x, y - 1, z, Library.POS_Y, type); - boolean pZ = Library.canConnectFluid(world, x, y, z + 1, Library.NEG_Z, type); - boolean nZ = Library.canConnectFluid(world, x, y, z - 1, Library.POS_Z, type); + + boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, te); + boolean pX = canConnectTo(world, x, y, z, Library.POS_X, te); + boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, te); + boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, te); + boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, te); + boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, te); int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); @@ -172,59 +163,55 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve List bbs = new ArrayList(); TileEntity te = world.getTileEntity(x, y, z); - if(te instanceof TileEntityPipeBaseNT) { - TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; - FluidType type = pipe.getType(); - double lower = 0.125D; - double upper = 0.875D; - double jLower = 0.0625D; - double jUpper = 0.9375D; - int meta = world.getBlockMetadata(x, y, z); - - for(int i = 2; i < 13; i += 3) { - - if(meta > i) { - lower += 0.0625D; - upper -= 0.0625D; - jLower += 0.0625D; - jUpper -= 0.0625D; - } - } - - boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, type); - boolean pX = canConnectTo(world, x, y, z, Library.POS_X, type); - boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, type); - boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, type); - boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, type); - boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, type); - int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); - int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); - - if(mask == 0) { - bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper)); - } else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) { - bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + lower, z + lower, x + 1.0D, y + upper, z + upper)); - } else if(mask == 0b001000 || mask == 0b000100 || mask == 0b001100) { - bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + 0.0D, z + lower, x + upper, y + 1.0D, z + upper)); - } else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) { - bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + 1.0D)); - } else { - - if(count != 2) { - bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper)); - } else { - bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + lower, x + upper, y + upper, z + upper)); - } + double lower = 0.125D; + double upper = 0.875D; + double jLower = 0.0625D; + double jUpper = 0.9375D; + int meta = world.getBlockMetadata(x, y, z); - if(pX) bbs.add(AxisAlignedBB.getBoundingBox(x + upper, y + lower, z + lower, x + 1.0D, y + upper, z + upper)); - if(nX) bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + lower, z + lower, x + lower, y + upper, z + upper)); - if(pY) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + upper, z + lower, x + upper, y + 1.0D, z + upper)); - if(nY) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + 0.0D, z + lower, x + upper, y + lower, z + upper)); - if(pZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + upper, x + upper, y + upper, z + 1.0D)); - if(nZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + lower)); + for(int i = 2; i < 13; i += 3) { + + if(meta > i) { + lower += 0.0625D; + upper -= 0.0625D; + jLower += 0.0625D; + jUpper -= 0.0625D; } } + + boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, te); + boolean pX = canConnectTo(world, x, y, z, Library.POS_X, te); + boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, te); + boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, te); + boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, te); + boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, te); + int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); + int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); + + if(mask == 0) { + bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper)); + } else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) { + bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + lower, z + lower, x + 1.0D, y + upper, z + upper)); + } else if(mask == 0b001000 || mask == 0b000100 || mask == 0b001100) { + bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + 0.0D, z + lower, x + upper, y + 1.0D, z + upper)); + } else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) { + bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + 1.0D)); + } else { + + if(count != 2) { + bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper)); + } else { + bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + lower, x + upper, y + upper, z + upper)); + } + + if(pX) bbs.add(AxisAlignedBB.getBoundingBox(x + upper, y + lower, z + lower, x + 1.0D, y + upper, z + upper)); + if(nX) bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + lower, z + lower, x + lower, y + upper, z + upper)); + if(pY) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + upper, z + lower, x + upper, y + 1.0D, z + upper)); + if(nY) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + 0.0D, z + lower, x + upper, y + lower, z + upper)); + if(pZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + upper, x + upper, y + upper, z + 1.0D)); + if(nZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + lower)); + } for(AxisAlignedBB bb : bbs) { if(entityBounding.intersectsWith(bb)) { @@ -244,68 +231,67 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { TileEntity te = world.getTileEntity(x, y, z); - if(te instanceof TileEntityPipeBaseNT) { - TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; - FluidType type = pipe.getType(); - float lower = 0.125F; - float upper = 0.875F; - float jLower = 0.0625F; - float jUpper = 0.9375F; - int meta = world.getBlockMetadata(x, y, z); + float lower = 0.125F; + float upper = 0.875F; + float jLower = 0.0625F; + float jUpper = 0.9375F; + int meta = world.getBlockMetadata(x, y, z); + + for(int i = 2; i < 13; i += 3) { - for(int i = 2; i < 13; i += 3) { - - if(meta > i) { - lower += 0.0625F; - upper -= 0.0625F; - jLower += 0.0625F; - jUpper -= 0.0625F; - } + if(meta > i) { + lower += 0.0625F; + upper -= 0.0625F; + jLower += 0.0625F; + jUpper -= 0.0625F; } - - boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, type); - boolean pX = canConnectTo(world, x, y, z, Library.POS_X, type); - boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, type); - boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, type); - boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, type); - boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, type); - int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); - int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); + } + + boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, te); + boolean pX = canConnectTo(world, x, y, z, Library.POS_X, te); + boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, te); + boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, te); + boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, te); + boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, te); + int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); + int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); + + if(mask == 0) { + this.setBlockBounds(jLower, jLower, jLower, jUpper, jUpper, jUpper); + } else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) { + this.setBlockBounds(0F, lower, lower, 1F, upper, upper); + } else if(mask == 0b001000 || mask == 0b000100 || mask == 0b001100) { + this.setBlockBounds(lower, 0F, lower, upper, 1F, upper); + } else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) { + this.setBlockBounds(lower, lower, 0F, upper, upper, 1F); + } else { - if(mask == 0) { - this.setBlockBounds(jLower, jLower, jLower, jUpper, jUpper, jUpper); - } else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) { - this.setBlockBounds(0F, lower, lower, 1F, upper, upper); - } else if(mask == 0b001000 || mask == 0b000100 || mask == 0b001100) { - this.setBlockBounds(lower, 0F, lower, upper, 1F, upper); - } else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) { - this.setBlockBounds(lower, lower, 0F, upper, upper, 1F); + if(count != 2) { + this.setBlockBounds( + nX ? 0F : jLower, + nY ? 0F : jLower, + nZ ? 0F : jLower, + pX ? 1F : jUpper, + pY ? 1F : jUpper, + pZ ? 1F : jUpper); } else { - - if(count != 2) { - this.setBlockBounds( - nX ? 0F : jLower, - nY ? 0F : jLower, - nZ ? 0F : jLower, - pX ? 1F : jUpper, - pY ? 1F : jUpper, - pZ ? 1F : jUpper); - } else { - this.setBlockBounds( - nX ? 0F : lower, - nY ? 0F : lower, - nZ ? 0F : lower, - pX ? 1F : upper, - pY ? 1F : upper, - pZ ? 1F : upper); - } + this.setBlockBounds( + nX ? 0F : lower, + nY ? 0F : lower, + nZ ? 0F : lower, + pX ? 1F : upper, + pY ? 1F : upper, + pZ ? 1F : upper); } } } - public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, FluidType type) { - return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, type); + public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, TileEntity tile) { + if(tile instanceof TileEntityPipeBaseNT) { + return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, ((TileEntityPipeBaseNT) tile).getType()); + } + return false; } @Override @@ -319,7 +305,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve TileEntityPipeBaseNT duct = (TileEntityPipeBaseNT) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java b/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java new file mode 100644 index 000000000..42a24fe85 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java @@ -0,0 +1,86 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.lib.Library; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityPipeExhaust; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class FluidDuctBoxExhaust extends FluidDuctBox { + + public FluidDuctBoxExhaust(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityPipeExhaust(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + + iconStraight = new IIcon[1]; + iconEnd = new IIcon[1]; + iconCurveTL = new IIcon[1]; + iconCurveTR = new IIcon[1]; + iconCurveBL = new IIcon[1]; + iconCurveBR = new IIcon[1]; + iconJunction = new IIcon[1]; + + iconStraight[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_straight"); + iconEnd[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_end"); + iconCurveTL[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_tl"); + iconCurveTR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_tr"); + iconCurveBL[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_bl"); + iconCurveBR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_br"); + iconJunction[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_junction"); + } + + public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, TileEntity tile) { + return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, Fluids.SMOKE) || + Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, Fluids.SMOKE_LEADED) || + Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, Fluids.SMOKE_POISON); + } + + @Override + public int getSubCount() { + return 1; + } + + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < 15; i += 3) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + List text = new ArrayList(); + text.add(Fluids.SMOKE.getLocalizedName()); + text.add(Fluids.SMOKE_LEADED.getLocalizedName()); + text.add(Fluids.SMOKE_POISON.getLocalizedName()); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index 10e36bf10..9c17a38c0 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -3,6 +3,7 @@ package com.hbm.blocks.network; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ILookOverlay; @@ -15,8 +16,13 @@ import com.hbm.tileentity.network.TileEntityPipeBaseNT; import com.hbm.util.I18nUtil; import api.hbm.fluid.IPipeNet; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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.block.BlockPistonBase; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -90,9 +96,9 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL TileEntityPipeGauge duct = (TileEntityPipeGauge) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); - text.add(String.format("%,d", duct.deltaTick) + " mB/t"); - text.add(String.format("%,d", duct.deltaLastSecond) + " mB/s"); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); + text.add(String.format(Locale.US, "%,d", duct.deltaTick) + " mB/t"); + text.add(String.format(Locale.US, "%,d", duct.deltaLastSecond) + " mB/s"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } @@ -100,8 +106,9 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL public int getRenderType(){ return IBlockMultiPass.getRenderType(); } - - public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver { + + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) + public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver, SimpleComponent { private BigInteger lastMeasurement = BigInteger.valueOf(10); private long deltaTick = 0; @@ -144,5 +151,27 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL this.deltaTick = Math.max(nbt.getLong("deltaT"), 0); this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); } + + public String getComponentName() { + return "ntm_fluid_gauge"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getTransfer(Context context, Arguments args) { + return new Object[] {deltaTick, deltaSecond}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] {getType().getName()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {deltaTick, deltaSecond, getType().getName(), xCoord, yCoord, zCoord}; + } } } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java b/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java index a9415a219..6777195d8 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java @@ -160,7 +160,7 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo TileEntityPipeBaseNT duct = (TileEntityPipeBaseNT) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java index 485fbc06b..e58d7ab02 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java @@ -7,6 +7,7 @@ import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.test.TestPipe; import com.hbm.inventory.fluid.FluidType; +import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityPipeBaseNT; @@ -18,11 +19,13 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; @@ -70,7 +73,42 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo public int damageDropped(int meta) { return rectify(meta); } + /* + @Override + @SideOnly(Side.CLIENT) + public Item getItem(World world, int x, int y, int z) { + Block block = world.getBlock(x, y, z); // Get the block at the specified coordinates + int blockMetadata = world.getBlockMetadata(x, y, z); // Get the metadata of the block at the specified coordinates + TileEntity tileEntity = world.getTileEntity(x, y, z); // Get the tile entity at the specified coordinates + TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) tileEntity; + + // Get the metadata (FluidType) from the pipe + FluidType fluidType = pipe.getType(); + int metadata = fluidType.getID(); + + // Create an ItemStack with the item and metadata + ItemStack itemStack = new ItemStack(ModItems.fluid_duct, 1, metadata); + System.out.println(metadata); + System.out.println(itemStack); + + return new ItemStack(ModItems.fluid_duct, 1, metadata).getItem(); + } + */ + + @Override + @SideOnly(Side.CLIENT) + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { + TileEntity tileEntity = world.getTileEntity(x, y, z); + if (tileEntity instanceof TileEntityPipeBaseNT) { + TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) tileEntity; + FluidType fluidType = pipe.getType(); + int retadata = fluidType.getID(); //florf + + return new ItemStack(ModItems.fluid_duct, 1, retadata); + } + return super.getPickBlock(target, world, x, y, z, player); + } @Override public int getRenderType() { return TestPipe.renderID; @@ -201,7 +239,7 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo TileEntityPipeBaseNT duct = (TileEntityPipeBaseNT) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/network/FluidSwitch.java b/src/main/java/com/hbm/blocks/network/FluidSwitch.java new file mode 100644 index 000000000..f4fc8c82d --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/FluidSwitch.java @@ -0,0 +1,88 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityFluidValve; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class FluidSwitch extends FluidDuctBase implements ILookOverlay { + + @SideOnly(Side.CLIENT) + private IIcon iconOn; + + public FluidSwitch(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":fluid_switch_on"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fluid_switch_off"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return metadata == 1 ? iconOn : blockIcon; + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityFluidValve(); + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + + boolean on = world.isBlockIndirectlyGettingPowered(x, y, z); + int meta = world.getBlockMetadata(x, y, z); + + boolean update = false; + + if(on && meta == 0) { + world.setBlockMetadataWithNotify(x, y, z, 1, 2); + world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 1.0F); + update = true; + } + + if(!on && meta == 1) { + world.setBlockMetadataWithNotify(x, y, z, 0, 2); + world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 0.85F); + update = true; + } + + if(update) { + TileEntityFluidValve te = (TileEntityFluidValve) world.getTileEntity(x, y, z); + te.updateState(); + } + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityFluidValve)) + return; + + TileEntityFluidValve duct = (TileEntityFluidValve) te; + + List text = new ArrayList(); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/blocks/network/FluidValve.java b/src/main/java/com/hbm/blocks/network/FluidValve.java new file mode 100644 index 000000000..5a0b3d5b3 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/FluidValve.java @@ -0,0 +1,88 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityFluidValve; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class FluidValve extends FluidDuctBase implements ILookOverlay { + + @SideOnly(Side.CLIENT) + private IIcon iconOn; + + public FluidValve(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":fluid_valve_on"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fluid_valve_off"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return metadata == 1 ? iconOn : blockIcon; + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityFluidValve(); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(world.isRemote) return true; + + if(super.onBlockActivated(world, x, y, z, player, side, hitX, hitY, hitZ)) return true; + + if(!player.isSneaking()) { + int meta = world.getBlockMetadata(x, y, z); + if(meta == 0) { + world.setBlockMetadataWithNotify(x, y, z, 1, 2); + world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 1.0F); + } else { + world.setBlockMetadataWithNotify(x, y, z, 0, 2); + world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 0.85F); + } + + TileEntityFluidValve te = (TileEntityFluidValve) world.getTileEntity(x, y, z); + te.updateState(); + + return true; + } else { + return false; + } + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityFluidValve)) + return; + + TileEntityFluidValve duct = (TileEntityFluidValve) te; + + List text = new ArrayList(); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/blocks/network/RadioTelex.java b/src/main/java/com/hbm/blocks/network/RadioTelex.java new file mode 100644 index 000000000..8b7614b51 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/RadioTelex.java @@ -0,0 +1,46 @@ +package com.hbm.blocks.network; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.network.TileEntityRadioTelex; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class RadioTelex extends BlockDummyable { + + public RadioTelex() { + super(Material.wood); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityRadioTelex(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 0, 0, 1, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote && !player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return false; + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); + return true; + } else { + return !player.isSneaking(); + } + } +} diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchBase.java b/src/main/java/com/hbm/blocks/network/RadioTorchBase.java index f6255c271..049bc565b 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchBase.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchBase.java @@ -1,15 +1,11 @@ package com.hbm.blocks.network; -import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; -import com.hbm.inventory.gui.GUIScreenRadioTorch; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.network.TileEntityRadioTorchBase; -import com.hbm.util.I18nUtil; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -18,25 +14,21 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.IIcon; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +/** + * Base class for all torch-like RTTY blocks + * @author hbm + */ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvider, ILookOverlay, ITooltipProvider { - @SideOnly(Side.CLIENT) protected IIcon iconOn; - public RadioTorchBase() { super(Material.circuits); } @@ -87,12 +79,6 @@ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvi return super.collisionRayTrace(world, x, y, z, vec0, vec1); } - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return side == 0 ? this.blockIcon : this.iconOn; - } - @Override public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) { return side; @@ -130,36 +116,9 @@ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvi return !player.isSneaking(); } } - - @Override - @SideOnly(Side.CLIENT) - public void printHook(Pre event, World world, int x, int y, int z) { - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof TileEntityRadioTorchBase) { - TileEntityRadioTorchBase radio = (TileEntityRadioTorchBase) te; - List text = new ArrayList(); - if(radio.channel != null && !radio.channel.isEmpty()) text.add(EnumChatFormatting.AQUA + "Freq: " + radio.channel); - text.add(EnumChatFormatting.RED + "Signal: " + radio.lastState); - ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); - } - } @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { addStandardInfo(stack, player, list, ext); } - - @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof TileEntityRadioTorchBase) - return new GUIScreenRadioTorch((TileEntityRadioTorchBase) te); - - return null; - } } diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java b/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java new file mode 100644 index 000000000..a78aafc4a --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java @@ -0,0 +1,70 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.inventory.container.ContainerCounterTorch; +import com.hbm.inventory.gui.GUICounterTorch; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.network.TileEntityRadioTorchCounter; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class RadioTorchCounter extends RadioTorchBase { + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(!world.isRemote && !player.isSneaking()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + return true; + } else { + return !player.isSneaking(); + } + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityRadioTorchCounter(); + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerCounterTorch(player.inventory, (TileEntityRadioTorchCounter) world.getTileEntity(x, y, z)); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUICounterTorch(player.inventory, (TileEntityRadioTorchCounter) world.getTileEntity(x, y, z)); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRadioTorchCounter) { + TileEntityRadioTorchCounter radio = (TileEntityRadioTorchCounter) te; + List text = new ArrayList(); + + for(int i = 0; i < 3; i++) { + if(!radio.channel[i].isEmpty()) { + text.add(EnumChatFormatting.AQUA + "Freq " + (i + 1) + ": " + radio.channel[i]); + text.add(EnumChatFormatting.RED + "Signal " + (i + 1) + ": " + radio.lastCount[i]); + } + } + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + } +} diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchRWBase.java b/src/main/java/com/hbm/blocks/network/RadioTorchRWBase.java new file mode 100644 index 000000000..8199991a5 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/RadioTorchRWBase.java @@ -0,0 +1,62 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.inventory.gui.GUIScreenRadioTorch; +import com.hbm.tileentity.network.TileEntityRadioTorchBase; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +/** + * Base class for the basic sender and receiver RTTY torch + * @author hbm + */ +public abstract class RadioTorchRWBase extends RadioTorchBase { + + @SideOnly(Side.CLIENT) protected IIcon iconOn; + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return side == 0 ? this.blockIcon : this.iconOn; + } + + @Override + @SideOnly(Side.CLIENT) + public void printHook(Pre event, World world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRadioTorchBase) { + TileEntityRadioTorchBase radio = (TileEntityRadioTorchBase) te; + List text = new ArrayList(); + if(radio.channel != null && !radio.channel.isEmpty()) text.add(EnumChatFormatting.AQUA + "Freq: " + radio.channel); + text.add(EnumChatFormatting.RED + "Signal: " + radio.lastState); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRadioTorchBase) + return new GUIScreenRadioTorch((TileEntityRadioTorchBase) te); + + return null; + } +} diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchReceiver.java b/src/main/java/com/hbm/blocks/network/RadioTorchReceiver.java index 7ce90e43f..4d7f28c83 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchReceiver.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchReceiver.java @@ -10,7 +10,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class RadioTorchReceiver extends RadioTorchBase { +public class RadioTorchReceiver extends RadioTorchRWBase { public RadioTorchReceiver() { super(); diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchSender.java b/src/main/java/com/hbm/blocks/network/RadioTorchSender.java index 2e5a675d4..2045be8a3 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchSender.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchSender.java @@ -9,7 +9,7 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class RadioTorchSender extends RadioTorchBase { +public class RadioTorchSender extends RadioTorchRWBase { public RadioTorchSender() { super(); diff --git a/src/main/java/com/hbm/blocks/rail/IRailNTM.java b/src/main/java/com/hbm/blocks/rail/IRailNTM.java new file mode 100644 index 000000000..120c3b586 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/IRailNTM.java @@ -0,0 +1,64 @@ +package com.hbm.blocks.rail; + +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +/** in retrospect, not the best name i could have chosen */ +public interface IRailNTM { + + /** Returns a vector pointing to the closest snapping position given the starting position */ + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ); + + /** + * Returns a location on the rail based on the train's current X/Y/Z momentum as well as the intended speed along the rail. + * If the train would leave the rail within that tick, the position is the last valid position on that rail. + * Inherently safer than simply adding the motion to the position and then snapping, since that may lead to derailing. + * The motion has to be calculated from the train's rotation (rotated 180° when going backwards), the scalar doesn't matter since it's only used for determining orientation in a clear way. + * Motion ends up being *-1 if the train is going in reverse, still pointing forwards despite the speed being negative. + * Also features a double[] wrapper with size 1 which holds the speed value that overshoots the rail. + * */ + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context); + + /** Returns that rail's gauge. Trains will derail if the gauge does not match. */ + public TrackGauge getGauge(World world, int x, int y, int z); + + public static enum TrackGauge { + STANDARD, //roughly 1.5m + NARROW //roughly 0.75m + } + + /** A wrapper for all relevant info required when leaving a rail */ + public static class RailContext { + /** The angle at which the train ends up being on this rail */ + public float yaw; + /** The amount of blocks still left to travel after completing the rail */ + public double overshoot; + /** The exit position of that rail */ + public BlockPos pos; + public RailContext yaw(float y) { this.yaw = y; return this; } + public RailContext dist(double d) { this.overshoot = d; return this; } + public RailContext pos(BlockPos d) { this.pos = d; return this; } + } + + /** A wrapper for additional information like stopping on rails and what type of check we're doing */ + public static class MoveContext { + public RailCheckType type; + public double collisionBogieDistance; + public boolean collision = false; //if a buffer stop or similar applies + public double overshoot; //how much of the travel distance was cut short + + public MoveContext(RailCheckType type, double collisionBogieDistance) { + this.type = type; + this.collisionBogieDistance = collisionBogieDistance; + } + } + + public static enum RailCheckType { + CORE, + FRONT, + BACK, + OTHER + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java b/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java new file mode 100644 index 000000000..ac317b65d --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java @@ -0,0 +1,144 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailNarrowCurve extends BlockDummyable implements IRailNTM { + + public RailNarrowCurve() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return null; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + double turnRadius = 4.5D; + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * turnRadius; + double axisZ = cZ + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * turnRadius; + + Vec3 dist = Vec3.createVectorHelper(vec.xCoord - axisX, 0, vec.zCoord - axisZ); + dist = dist.normalize(); + dist.xCoord *= turnRadius; + dist.zCoord *= turnRadius; + + double moveAngle = Math.atan2(motionX, motionZ) * 180D / Math.PI + 90; + + if(speed == 0) { + info.dist(0).pos(new BlockPos(x, y, z)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); + } + + double angleDeg = Math.atan2(dist.xCoord, dist.zCoord) * 180D / Math.PI + 90; + if(dir == Library.NEG_X) angleDeg -= 90; + if(dir == Library.POS_X) angleDeg += 90; + if(dir == Library.POS_Z) angleDeg += 180; + angleDeg = MathHelper.wrapAngleTo180_double(angleDeg); + double length90Deg = turnRadius * Math.PI / 2D; + double angularChange = speed / length90Deg * 90D; + + ForgeDirection moveDir = ForgeDirection.UNKNOWN; + + if(Math.abs(motionX) > Math.abs(motionZ)) { + moveDir = motionX > 0 ? Library.POS_X : Library.NEG_X; + } else { + moveDir = motionZ > 0 ? Library.POS_Z : Library.NEG_Z; + } + + if(moveDir == dir || moveDir == rot.getOpposite()) { + angularChange *= -1; + } + + double effAngle = angleDeg + angularChange; + moveAngle += angularChange; + + if(effAngle > 90) { + double angleOvershoot = effAngle - 90D; + moveAngle -= angleOvershoot; + double lengthOvershoot = angleOvershoot * length90Deg / 90D; + info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y, axisZ - dir.offsetZ * turnRadius); + } + + if(effAngle < 0) { + double angleOvershoot = -effAngle; + moveAngle -= angleOvershoot; + double lengthOvershoot = angleOvershoot * length90Deg / 90D; + info.dist(-lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX - rot.offsetX * turnRadius, y, axisZ -rot.offsetZ * turnRadius); + } + + double radianChange = angularChange * Math.PI / 180D; + dist.rotateAroundY((float) radianChange); + + return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.NARROW; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 4, 0, 4, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java b/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java new file mode 100644 index 000000000..624087974 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java @@ -0,0 +1,115 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailNarrowStraight extends BlockDummyable implements IRailNTM { + + public RailNarrowStraight() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return null; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 2, 2, 0, 0}; + } + + @Override + public int getOffset() { + return 2; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + + if(dir == Library.POS_X || dir == Library.NEG_X) { + double targetX = trainX; + if(motionX > 0) { + targetX += speed; + info.yaw(-90F); + } else { + targetX -= speed; + info.yaw(90F); + } + vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3); + vec.yCoord = y; + vec.zCoord = cZ + 0.5; + info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), y, cZ)); + } else { + double targetZ = trainZ; + if(motionZ > 0) { + targetZ += speed; + info.yaw(0F); + } else { + targetZ -= speed; + info.yaw(180F); + } + vec.xCoord = cX + 0.5; + vec.yCoord = y; + vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3); + info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX, y, cZ + (motionZ * speed > 0 ? 3 : -3))); + } + + return vec; + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.NARROW; + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java b/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java new file mode 100644 index 000000000..bb503060a --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java @@ -0,0 +1,137 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardBuffer extends BlockDummyable implements IRailNTM { + + public RailStandardBuffer() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return null; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 2, 2, 1, 0}; + } + + @Override + public int getOffset() { + return 2; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext(), new MoveContext(RailCheckType.OTHER, 0)); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info, context); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + + if(speed == 0) { + //return vec; + } + + if(dir == Library.POS_X || dir == Library.NEG_X) { + double targetX = trainX; + if(motionX > 0) { + targetX += speed; + info.yaw(-90F); + } else { + targetX -= speed; + info.yaw(90F); + } + vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3); + vec.yCoord = y + 0.1875; + vec.zCoord = cZ + 0.5 + rot.offsetZ * 0.5; + + double nX = (dir == Library.POS_X ? -1 - context.collisionBogieDistance : 2); + double pX = (dir == Library.NEG_X ? 0 - context.collisionBogieDistance : 3); + double buffer = MathHelper.clamp_double(targetX, cX - nX, cX + pX); + + if(buffer != vec.xCoord) { + context.collision = true; + context.overshoot = Math.abs(buffer - vec.xCoord); + vec.xCoord = buffer; + return vec; + } + + info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), y, cZ)); + } else { + double targetZ = trainZ; + if(motionZ > 0) { + targetZ += speed; + info.yaw(0F); + } else { + targetZ -= speed; + info.yaw(180F); + } + vec.xCoord = cX + 0.5 + rot.offsetX * 0.5; + vec.yCoord = y + 0.1875; + vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3); + + double nZ = (dir == Library.POS_Z ? -1 - context.collisionBogieDistance : 2); + double pZ = (dir == Library.NEG_Z ? 0 - context.collisionBogieDistance : 3); + double buffer = MathHelper.clamp_double(targetZ, cZ - nZ, cZ + pZ); + + if(buffer != vec.xCoord) { + context.collision = true; + context.overshoot = Math.abs(buffer - vec.zCoord); + vec.zCoord = buffer; + return vec; + } + + info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX, y, cZ + (motionZ * speed > 0 ? 3 : -3))); + } + + return vec; + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java new file mode 100644 index 000000000..10bed1608 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java @@ -0,0 +1,201 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardCurve extends BlockDummyable implements IRailNTM { + + public RailStandardCurve() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return null; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + double turnRadius = 4D; + double axisDist = 4.5D; + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * axisDist; + double axisZ = cZ + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * axisDist; + + Vec3 dist = Vec3.createVectorHelper(vec.xCoord - axisX, 0, vec.zCoord - axisZ); + dist = dist.normalize(); + dist.xCoord *= turnRadius; + dist.zCoord *= turnRadius; + + double moveAngle = Math.atan2(motionX, motionZ) * 180D / Math.PI + 90; + + if(speed == 0) { + info.dist(0).pos(new BlockPos(x, y, z)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); + } + + double angleDeg = Math.atan2(dist.xCoord, dist.zCoord) * 180D / Math.PI + 90; + if(dir == Library.NEG_X) angleDeg -= 90; + if(dir == Library.POS_X) angleDeg += 90; + if(dir == Library.POS_Z) angleDeg += 180; + angleDeg = MathHelper.wrapAngleTo180_double(angleDeg); + double length90Deg = turnRadius * Math.PI / 2D; + double angularChange = speed / length90Deg * 90D; + + ForgeDirection moveDir = ForgeDirection.UNKNOWN; + + if(Math.abs(motionX) > Math.abs(motionZ)) { + moveDir = motionX > 0 ? Library.POS_X : Library.NEG_X; + } else { + moveDir = motionZ > 0 ? Library.POS_Z : Library.NEG_Z; + } + + if(moveDir == dir || moveDir == rot.getOpposite()) { + angularChange *= -1; + } + + double effAngle = angleDeg + angularChange; + moveAngle += angularChange; + + if(effAngle > 90) { + double angleOvershoot = effAngle - 90D; + moveAngle -= angleOvershoot; + double lengthOvershoot = angleOvershoot * length90Deg / 90D; + info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y + 0.1875, axisZ - dir.offsetZ * turnRadius); + } + + if(effAngle < 0) { + double angleOvershoot = -effAngle; + moveAngle -= angleOvershoot; + double lengthOvershoot = angleOvershoot * length90Deg / 90D; + info.dist(-lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX - rot.offsetX * turnRadius, y + 0.1875, axisZ -rot.offsetZ * turnRadius); + } + + double radianChange = angularChange * Math.PI / 180D; + dist.rotateAroundY((float) radianChange); + + return Vec3.createVectorHelper(axisX + dist.xCoord, y + 0.1875, axisZ + dist.zCoord); + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 4, 0, 4, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + return world.getBlock(x + dX, y, z + dZ).isReplaceable(world, x + dX, y, z + dZ) && + world.getBlock(x + rX, y, z + rZ).isReplaceable(world, x + rX, y, z + rZ) && + world.getBlock(x + dX + rX, y, z + dZ + rZ).isReplaceable(world, x + dX + rX, y, z + dZ + rZ) && + world.getBlock(x + dX + rX * 2, y, z + dZ + rZ * 2).isReplaceable(world, x + dX + rX * 2, y, z + dZ + rZ * 2) && + world.getBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ).isReplaceable(world, x + dX * 2 + rX, y, z + dZ * 2 + rZ) && + world.getBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2).isReplaceable(world, x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2) && + world.getBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ).isReplaceable(world, x + dX * 3 + rX, y, z + dZ * 3 + rZ) && + world.getBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2).isReplaceable(world, x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2) && + world.getBlock(x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3).isReplaceable(world, x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3) && + world.getBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3).isReplaceable(world, x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3) && + world.getBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3).isReplaceable(world, x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3) && + world.getBlock(x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4).isReplaceable(world, x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4) && + world.getBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4).isReplaceable(world, x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4); + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + + BlockDummyable.safeRem = true; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + world.setBlock(x + dX, y, z + dZ, this, dir.ordinal(), 3); + world.setBlock(x + rX, y, z + rZ, this, rot.ordinal(), 3); + world.setBlock(x + dX + rX, y, z + dZ + rZ, this, rot.ordinal(), 3); + world.setBlock(x + dX + rX * 2, y, z + dZ + rZ * 2, this, rot.ordinal(), 3); + world.setBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ, this, dir.ordinal(), 3); + world.setBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ, this, dir.ordinal(), 3); + world.setBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3, this, rot.ordinal(), 3); + world.setBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3, this, rot.ordinal(), 3); + world.setBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3, this, dir.ordinal(), 3); + world.setBlock(x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4, this, rot.ordinal(), 3); + world.setBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4, this, rot.ordinal(), 3); + + BlockDummyable.safeRem = false; + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java b/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java new file mode 100644 index 000000000..d6911418c --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java @@ -0,0 +1,138 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardRamp extends BlockDummyable implements IRailNTM { + + public RailStandardRamp() { + super(Material.iron); + this.bounding.add(AxisAlignedBB.getBoundingBox(-2.5, 0.0, -1.5, -1.5, 0.1, 0.5)); + this.bounding.add(AxisAlignedBB.getBoundingBox(-1.5, 0.0, -1.5, -0.5, 0.3, 0.5)); + this.bounding.add(AxisAlignedBB.getBoundingBox(-0.5, 0.0, -1.5, 0.5, 0.5, 0.5)); + this.bounding.add(AxisAlignedBB.getBoundingBox(0.5, 0.0, -1.5, 1.5, 0.7, 0.5)); + this.bounding.add(AxisAlignedBB.getBoundingBox(1.5, 0.0, -1.5, 2.5, 0.9, 0.5)); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return null; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 2, 2, 1, 0}; + } + + @Override + public int getOffset() { + return 2; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + + if(speed == 0) { + //return vec; + } + + if(dir == Library.POS_X || dir == Library.NEG_X) { + double targetX = trainX; + if(motionX > 0) { + targetX += speed; + info.yaw(-90F); + } else { + targetX -= speed; + info.yaw(90F); + } + double dist = (cX + 0.5 - targetX + 2.5) / 5; + vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3); + vec.yCoord = MathHelper.clamp_double(dir == Library.POS_X ? cY + dist : cY + 1 - dist, cY, cY + 1) + 0.1875; + vec.zCoord = cZ + 0.5 + rot.offsetZ * 0.5; + info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), cY + (motionX * speed > 0 ^ dir == Library.POS_X ? 1 : 0), cZ)); + } else { + double targetZ = trainZ; + if(motionZ > 0) { + targetZ += speed; + info.yaw(0F); + } else { + targetZ -= speed; + info.yaw(180F); + } + double dist = (cZ + 0.5 - targetZ + 2.5) / 5; + vec.xCoord = cX + 0.5 + rot.offsetX * 0.5; + vec.yCoord = MathHelper.clamp_double(dir == Library.POS_Z ? cY + dist : cY + 1 - dist, cY, cY + 1) + 0.1875; + vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3); + info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX, cY + (motionZ * speed > 0 ^ dir == Library.POS_Z ? 1 : 0), cZ + (motionZ * speed > 0 ? 3 : -3))); + } + + return vec; + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } + + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + return MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), x, y, z, dir) && + MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {1, -1, 2, 2, 1, 0}, x, y, z, dir); + } + + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), this, dir); + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {1, -1, 2, 2, 1, 0}, this, dir); + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java new file mode 100644 index 000000000..b68aedd68 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -0,0 +1,120 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardStraight extends BlockDummyable implements IRailNTM { + + public RailStandardStraight() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return null; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 2, 2, 1, 0}; + } + + @Override + public int getOffset() { + return 2; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + + if(speed == 0) { + //return vec; + } + + if(dir == Library.POS_X || dir == Library.NEG_X) { + double targetX = trainX; + if(motionX > 0) { + targetX += speed; + info.yaw(-90F); + } else { + targetX -= speed; + info.yaw(90F); + } + vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3); + vec.yCoord = y + 0.1875; + vec.zCoord = cZ + 0.5 + rot.offsetZ * 0.5; + info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), y, cZ)); + } else { + double targetZ = trainZ; + if(motionZ > 0) { + targetZ += speed; + info.yaw(0F); + } else { + targetZ -= speed; + info.yaw(180F); + } + vec.xCoord = cX + 0.5 + rot.offsetX * 0.5; + vec.yCoord = y + 0.1875; + vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3); + info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX, y, cZ + (motionZ * speed > 0 ? 3 : -3))); + } + + return vec; + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } +} diff --git a/src/main/java/com/hbm/blocks/test/TestCore.java b/src/main/java/com/hbm/blocks/test/TestCore.java index ff070e919..049f7eae9 100644 --- a/src/main/java/com/hbm/blocks/test/TestCore.java +++ b/src/main/java/com/hbm/blocks/test/TestCore.java @@ -3,7 +3,7 @@ package com.hbm.blocks.test; import java.util.Random; import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import net.minecraft.block.Block; @@ -27,12 +27,7 @@ public class TestCore extends Block { world.setBlockToAir(x, y, z); world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.missileRadius, x + 0.5, y + 0.5, z + 0.5)); - - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, BombConfig.missileRadius * 0.005F); - entity2.posX = x; - entity2.posY = y; - entity2.posZ = z; - world.spawnEntityInWorld(entity2); + EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius); } else if(meta > 0) { diff --git a/src/main/java/com/hbm/commands/CommandDebugChunkLoad.java b/src/main/java/com/hbm/commands/CommandDebugChunkLoad.java new file mode 100644 index 000000000..caf5e7673 --- /dev/null +++ b/src/main/java/com/hbm/commands/CommandDebugChunkLoad.java @@ -0,0 +1,112 @@ +package com.hbm.commands; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.IChunkProvider; +import net.minecraft.world.chunk.storage.AnvilChunkLoader; +import net.minecraft.world.chunk.storage.IChunkLoader; +import net.minecraft.world.gen.ChunkProviderServer; + +public class CommandDebugChunkLoad extends CommandBase { + + @Override + public String getCommandName() { + return "ntmloadchunk"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/ntmloadchunk "; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + + if(args.length != 2) { + return; + } + + int x = this.parseInt(sender, args[0]); + int z = this.parseInt(sender, args[1]); + + IChunkProvider prov = sender.getEntityWorld().getChunkProvider(); + if(prov instanceof ChunkProviderServer) { + ChunkProviderServer serv = (ChunkProviderServer) prov; + IChunkLoader loader = serv.currentChunkLoader; + + if(loader instanceof AnvilChunkLoader) { + AnvilChunkLoader anvil = (AnvilChunkLoader) loader; + + try { + int cX = x >> 4; + int cZ = z >> 4; + + if(prov.chunkExists(cX, cZ)) { + Chunk chunk = sender.getEntityWorld().getChunkFromChunkCoords(cX, cZ); + if(chunk.isChunkLoaded) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Chunk currently loaded.")); + return; + } + } + + Object[] data = anvil.loadChunk__Async(sender.getEntityWorld(), cX, cZ); + //Chunk chunk = (Chunk) data[0]; + NBTTagCompound nbt = (NBTTagCompound) data[1]; + NBTTagCompound level = nbt.getCompoundTag("Level"); + NBTTagList tagList = level.getTagList("TileEntities", 10); + + if(tagList != null) { + + if(tagList.tagCount() <= 0) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Tag list empty")); + } + + for(int i1 = 0; i1 < tagList.tagCount(); ++i1) { + NBTTagCompound tileCompound = tagList.getCompoundTagAt(i1); + int tX = tileCompound.getInteger("x"); + int tY = tileCompound.getInteger("y"); + int tZ = tileCompound.getInteger("z"); + String name = tileCompound.getString("id"); + + int i = tX - cX * 16; + int j = tY; + int k = tZ - cZ * 16; + + EnumChatFormatting color = EnumChatFormatting.GREEN; + + if(i < 0 || i > 15 || j < 0 || j > 255 || k < 0 || k > 15) { + color = EnumChatFormatting.RED; + } + + sender.addChatMessage(new ChatComponentText(color + name + " " + i + " " + j + " " + k)); + + if(i < 0 || i > 15 || j < 0 || j > 255 || k < 0 || k > 15) { + tileCompound.setString("id", "INVALID_POS_" + name); + + NBTTagCompound nbttagcompound = new NBTTagCompound(); + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + nbttagcompound.setTag("Level", nbttagcompound1); + // anvil.writeChunkToNBT(chunk, sender.getEntityWorld(), nbttagcompound1); + // anvil.addChunkToPending(chunk.getChunkCoordIntPair(), nbttagcompound); + } + } + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Tag list null")); + } + + } catch(Exception e) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "" + e.getLocalizedMessage())); + } + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Not AnvilChunkLoader")); + } + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Not ChunkProviderServer")); + } + } +} diff --git a/src/main/java/com/hbm/commands/CommandRadiation.java b/src/main/java/com/hbm/commands/CommandRadiation.java new file mode 100644 index 000000000..90b4476d3 --- /dev/null +++ b/src/main/java/com/hbm/commands/CommandRadiation.java @@ -0,0 +1,41 @@ +package com.hbm.commands; + +import com.hbm.handler.radiation.ChunkRadiationManager; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; + +public class CommandRadiation extends CommandBase { + + @Override + public String getCommandName() { + return "ntmrad"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/ntmrad "; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + + if(args.length == 1 && "clear".equals(args[0])) { + ChunkRadiationManager.proxy.clearSystem(sender.getEntityWorld()); + sender.addChatMessage(new ChatComponentText("Cleared radiation data!")); + return; + } + + if(args.length == 2 && "set".equals(args[0])) { + float amount = (float) this.parseDoubleBounded(sender, args[1], 0D, 100_000D); + ChunkRadiationManager.proxy.setRadiation(sender.getEntityWorld(), sender.getPlayerCoordinates().posX, sender.getPlayerCoordinates().posY, sender.getPlayerCoordinates().posZ, amount); + sender.addChatMessage(new ChatComponentText("Radiation set.")); + return; + } + + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + getCommandUsage(sender))); + } + +} diff --git a/src/main/java/com/hbm/commands/CommandSatellites.java b/src/main/java/com/hbm/commands/CommandSatellites.java new file mode 100644 index 000000000..6f1a803cd --- /dev/null +++ b/src/main/java/com/hbm/commands/CommandSatellites.java @@ -0,0 +1,88 @@ +package com.hbm.commands; + +import com.hbm.items.ISatChip; +import com.hbm.items.ModItems; +import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.saveddata.satellites.Satellite; +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; + +import java.util.Collections; +import java.util.List; +import java.util.Locale; +import java.util.stream.Collectors; + +public class CommandSatellites extends CommandBase { + @Override + public String getCommandName() { + return "ntmsatellites"; + } + + @Override + public String getCommandUsage(ICommandSender iCommandSender) { + return String.format(Locale.US, + "%s/%s orbit %s- Launch the held satellite\n" + + "%s/%s descend %s- Deletes satellite by frequency.", + EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE, + EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE + ); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + if(!(sender instanceof EntityPlayer)) { + sender.addChatMessage(new ChatComponentTranslation( "commands.satellite.should_be_run_as_player").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + return; + } + switch (args[0]) { + case "orbit": + EntityPlayer player = getCommandSenderAsPlayer(sender); + if(player.getHeldItem().getItem() instanceof ISatChip && player.getHeldItem().getItem() != ModItems.sat_chip) { + Satellite.orbit( + player.worldObj, + Satellite.getIDFromItem(player.getHeldItem().getItem()), + ISatChip.getFreqS(player.getHeldItem()), + player.posX, player.posY, player.posZ + ); + player.getHeldItem().stackSize -= 1; + sender.addChatMessage(new ChatComponentTranslation("commands.satellite.satellite_orbited").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GREEN))); + } else { + sender.addChatMessage(new ChatComponentTranslation("commands.satellite.not_a_satellite").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + } + break; + case "descend": + int freq = parseInt(sender, args[1]); + SatelliteSavedData data = SatelliteSavedData.getData(sender.getEntityWorld()); + if(data.sats.containsKey(freq)) { + data.sats.remove(freq); + data.markDirty(); + sender.addChatMessage(new ChatComponentTranslation( "commands.satellite.satellite_descended").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GREEN))); + } else { + sender.addChatMessage(new ChatComponentTranslation( "commands.satellite.no_satellite").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + } + break; + } + } + + @SuppressWarnings("rawtypes") + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args) { + if(!(sender instanceof EntityPlayer)) { + return Collections.emptyList(); + } + if(args.length < 1) { + return Collections.emptyList(); + } + if(args.length == 1) { + return getListOfStringsMatchingLastWord(args, "orbit", "descend"); + } + if (args[0].equals("descend")) { + return getListOfStringsFromIterableMatchingLastWord(args, SatelliteSavedData.getData(sender.getEntityWorld()).sats.keySet().stream().map(String::valueOf).collect(Collectors.toList())); + } + return Collections.emptyList(); + } +} diff --git a/src/main/java/com/hbm/config/BombConfig.java b/src/main/java/com/hbm/config/BombConfig.java index df2eda4b6..8c32d0a8d 100644 --- a/src/main/java/com/hbm/config/BombConfig.java +++ b/src/main/java/com/hbm/config/BombConfig.java @@ -27,6 +27,7 @@ public class BombConfig { public static int limitExplosionLifespan = 0; public static int rain = 0; public static int cont = 0; + public static boolean chunkloading = true; public static void loadFromConfig(Configuration config) { @@ -100,5 +101,7 @@ public class BombConfig { Property rainCont = config.get(CATEGORY_NUKE, "6.06_falloutRainRadiation", 0); rainCont.comment = "Radiation in 100th RADs created by fallout rain"; cont = rainCont.getInt(); + + chunkloading = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "6.XX_enableChunkLoading", "Allows all types of procedural explosions to keep the central chunk loaded.", true); } } diff --git a/src/main/java/com/hbm/config/CommonConfig.java b/src/main/java/com/hbm/config/CommonConfig.java index 57495b68a..7e121b26e 100644 --- a/src/main/java/com/hbm/config/CommonConfig.java +++ b/src/main/java/com/hbm/config/CommonConfig.java @@ -1,5 +1,7 @@ package com.hbm.config; +import java.util.Locale; + import com.hbm.main.MainRegistry; import net.minecraftforge.common.config.Configuration; @@ -22,6 +24,7 @@ public class CommonConfig { public static final String CATEGORY_RADIATION = "13_radiation"; public static final String CATEGORY_HAZARD = "14_hazard"; public static final String CATEGORY_STRUCTURES = "15_structures"; + public static final String CATEGORY_POLLUTION = "16_pollution"; public static final String CATEGORY_528 = "528"; public static final String CATEGORY_LBSM = "LESS BULLSHIT MODE"; @@ -30,7 +33,7 @@ public class CommonConfig { if(value < 0) { MainRegistry.logger.error("Fatal error config: Randomizer value has been below zero, despite bound having to be positive integer!"); - MainRegistry.logger.error(String.format("Errored value will default back to %d, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", def)); + MainRegistry.logger.error(String.format(Locale.US, "Errored value will default back to %d, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", def)); return def; } @@ -41,7 +44,7 @@ public class CommonConfig { if(value <= 0) { MainRegistry.logger.error("Fatal error config: Randomizer value has been set to zero, despite bound having to be positive integer!"); - MainRegistry.logger.error(String.format("Errored value will default back to %d, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", def)); + MainRegistry.logger.error(String.format(Locale.US, "Errored value will default back to %d, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", def)); return def; } diff --git a/src/main/java/com/hbm/config/CustomMachineConfigJSON.java b/src/main/java/com/hbm/config/CustomMachineConfigJSON.java new file mode 100644 index 000000000..359eb3db5 --- /dev/null +++ b/src/main/java/com/hbm/config/CustomMachineConfigJSON.java @@ -0,0 +1,257 @@ +package com.hbm.config; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ModBlocks; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration.ComponentDefinition; +import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; +import com.hbm.main.CraftingManager; +import com.hbm.main.MainRegistry; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class CustomMachineConfigJSON { + + public static final Gson gson = new Gson(); + public static HashMap customMachines = new HashMap(); + public static List niceList = new ArrayList(); + + public static void initialize() { + File folder = MainRegistry.configHbmDir; + + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmCustomMachines.json"); + + if(!config.exists()) { + writeDefault(config); + } + + readConfig(config); + } + + public static void writeDefault(File config) { + + try { + JsonWriter writer = new JsonWriter(new FileWriter(config)); + writer.setIndent(" "); + writer.beginObject(); + writer.name("machines").beginArray(); + + writer.beginObject(); + writer.name("recipeKey").value("paperPress"); + writer.name("unlocalizedName").value("paperPress"); + writer.name("localizedName").value("Paper Press"); + writer.name("fluidInCount").value(1); + writer.name("fluidInCap").value(1_000); + writer.name("itemInCount").value(1); + writer.name("fluidOutCount").value(0); + writer.name("fluidOutCap").value(0); + writer.name("itemOutCount").value(1); + writer.name("generatorMode").value(false); + writer.name("recipeSpeedMult").value(1.0D); + writer.name("recipeConsumptionMult").value(1.0D); + writer.name("maxPower").value(10_000L); + + writer.name("recipeShape").beginArray(); + writer.value("IPI").value("PCP").value("IPI"); + writer.endArray(); + + writer.name("recipeParts").beginArray().setIndent(""); + writer.value("I"); + SerializableRecipe.writeAStack(new OreDictStack(OreDictManager.STEEL.ingot()), writer); + writer.setIndent(""); + writer.value("P"); + SerializableRecipe.writeAStack(new OreDictStack(OreDictManager.STEEL.plate()), writer); + writer.setIndent(""); + writer.value("C"); + SerializableRecipe.writeAStack(new ComparableStack(ModItems.circuit_aluminium), writer); + writer.endArray().setIndent(" "); + + writer.name("components").beginArray(); + + for(int x = -1; x <= 1; x++) { + for(int y = -1; y <= 1; y++) { + for(int z = 0; z <= 2; z++) { + if(!(x == 0 && y == 0 && z == 1) && !(x == 0 && z == 0)) { + writer.beginObject().setIndent(""); + writer.name("block").value(y == 0 ? "hbm:tile.cm_sheet" : "hbm:tile.cm_block"); + writer.name("x").value(x); + writer.name("y").value(y); + writer.name("z").value(z); + writer.name("metas").beginArray(); + writer.value(0); + writer.endArray(); + writer.endObject().setIndent(" "); + } + } + } + } + + writer.beginObject().setIndent(""); + writer.name("block").value("hbm:tile.cm_port"); + writer.name("x").value(0); + writer.name("y").value(-1); + writer.name("z").value(0); + writer.name("metas").beginArray(); + writer.value(0); + writer.endArray(); + writer.endObject().setIndent(" "); + + writer.beginObject().setIndent(""); + writer.name("block").value("hbm:tile.cm_port"); + writer.name("x").value(0); + writer.name("y").value(1); + writer.name("z").value(0); + writer.name("metas").beginArray(); + writer.value(0); + writer.endArray(); + writer.endObject().setIndent(" "); + + writer.endArray(); + writer.endObject(); + + writer.endArray(); + writer.endObject(); + writer.close(); + } catch(IOException e) { + e.printStackTrace(); + } + } + + public static void readConfig(File config) { + + try { + JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); + JsonArray machines = json.get("machines").getAsJsonArray(); + + for(int i = 0; i < machines.size(); i++) { + JsonObject machineObject = machines.get(i).getAsJsonObject(); + + MachineConfiguration configuration = new MachineConfiguration(); + configuration.recipeKey = machineObject.get("recipeKey").getAsString(); + configuration.unlocalizedName = machineObject.get("unlocalizedName").getAsString(); + configuration.localizedName = machineObject.get("localizedName").getAsString(); + configuration.fluidInCount = machineObject.get("fluidInCount").getAsInt(); + configuration.fluidInCap = machineObject.get("fluidInCap").getAsInt(); + configuration.itemInCount = machineObject.get("itemInCount").getAsInt(); + configuration.fluidOutCount = machineObject.get("fluidOutCount").getAsInt(); + configuration.fluidOutCap = machineObject.get("fluidOutCap").getAsInt(); + configuration.itemOutCount = machineObject.get("itemOutCount").getAsInt(); + configuration.generatorMode = machineObject.get("generatorMode").getAsBoolean(); + configuration.recipeSpeedMult = machineObject.get("recipeSpeedMult").getAsDouble(); + configuration.recipeConsumptionMult = machineObject.get("recipeConsumptionMult").getAsDouble(); + configuration.maxPower = machineObject.get("maxPower").getAsLong(); + + if(machineObject.has("recipeShape") && machineObject.has("recipeParts")) { + JsonArray recipeShape = machineObject.get("recipeShape").getAsJsonArray(); + JsonArray recipeParts = machineObject.get("recipeParts").getAsJsonArray(); + + Object[] parts = new Object[recipeShape.size() + recipeParts.size()]; + + for(int j = 0; j < recipeShape.size(); j++) { + parts[j] = recipeShape.get(j).getAsString(); + } + + for(int j = 0; j < recipeParts.size(); j++) { + Object o = null; + + if(j % 2 == 0) { + o = recipeParts.get(j).getAsString().charAt(0); //god is dead and we killed him + } else { + AStack a = SerializableRecipe.readAStack(recipeParts.get(j).getAsJsonArray()); + + if(a instanceof ComparableStack) o = ((ComparableStack) a).toStack(); + if(a instanceof OreDictStack) o = ((OreDictStack) a).name; + } + + parts[j + recipeShape.size()] = o; + } + + ItemStack stack = new ItemStack(ModBlocks.custom_machine, 1, i + 100); + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setString("machineType", configuration.unlocalizedName); + + CraftingManager.addRecipeAuto(stack, parts); + } + + JsonArray components = machineObject.get("components").getAsJsonArray(); + configuration.components = new ArrayList(); + + for(int j = 0; j < components.size(); j++) { + JsonObject compObject = components.get(j).getAsJsonObject(); + ComponentDefinition compDef = new ComponentDefinition(); + compDef.block = (Block) Block.blockRegistry.getObject(compObject.get("block").getAsString()); + compDef.x = compObject.get("x").getAsInt(); + compDef.y = compObject.get("y").getAsInt(); + compDef.z = compObject.get("z").getAsInt(); + compDef.allowedMetas = new HashSet(); + compDef.metas = compObject.get("metas").getAsJsonArray(); + for(int k = 0; k < compDef.metas.size(); k++) { + compDef.allowedMetas.add(compDef.metas.get(k).getAsInt()); + } + + configuration.components.add(compDef); + } + + customMachines.put(configuration.unlocalizedName, configuration); + niceList.add(configuration); + } + + } catch(Exception ex) { + ex.printStackTrace(); + } + } + + public static class MachineConfiguration { + + /** The name of the recipe set that this machine can handle */ + public String recipeKey; + /** The internal name of this machine */ + public String unlocalizedName; + /** The display name of this machine */ + public String localizedName; + + public int fluidInCount; + public int fluidInCap; + public int itemInCount; + public int fluidOutCount; + public int fluidOutCap; + public int itemOutCount; + /** Whether inputs should be used up when the process begins */ + public boolean generatorMode; + + public double recipeSpeedMult = 1D; + public double recipeConsumptionMult = 1D; + public long maxPower; + + /** Definitions of blocks that this machine is composed of */ + public List components; + + public static class ComponentDefinition { + public Block block; + public Set allowedMetas; + public JsonArray metas; + public int x; + public int y; + public int z; + } + } +} diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 2e4b79920..0c39c8180 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -24,15 +24,17 @@ public class GeneralConfig { public static boolean enableCrosshairs = true; public static boolean enableReflectorCompat = false; public static boolean enableRenderDistCheck = true; - public static boolean enableCustomDashKeybind = false; public static boolean enableReEval = true; public static boolean enableSilentCompStackErrors = true; public static boolean enableChunkyNEIHandler = true; public static boolean enableSkyboxes = true; public static boolean enableImpactWorldProvider = true; public static boolean enableStatReRegistering = true; + public static boolean enableKeybindOverlap = true; public static int hintPos = 0; + public static boolean enableExpensiveMode = false; + public static boolean enable528 = false; public static boolean enable528ReasimBoilers = true; public static boolean enable528ColtanDeposit = true; @@ -40,6 +42,7 @@ public class GeneralConfig { public static boolean enable528BedrockDeposit = true; public static boolean enable528BedrockSpawn = false; public static boolean enable528BosniaSimulator = true; + public static boolean enable528BedrockReplacement = true; public static int coltanRate = 2; public static int bedrockRate = 50; @@ -81,7 +84,6 @@ public class GeneralConfig { enableCrosshairs = config.get(CATEGORY_GENERAL, "1.22_enableCrosshairs", true, "Shows custom crosshairs when an NTM gun is being held").getBoolean(true); enableReflectorCompat = config.get(CATEGORY_GENERAL, "1.24_enableReflectorCompat", false, "Enable old reflector oredict name (\"plateDenseLead\") instead of new \"plateTungCar\"").getBoolean(false); enableRenderDistCheck = config.get(CATEGORY_GENERAL, "1.25_enableRenderDistCheck", true, "Check invalid render distances (over 16, without OptiFine) and fix it").getBoolean(true); - enableCustomDashKeybind = config.get(CATEGORY_GENERAL, "1.26_enableCustomDashKeybind", false, "Enable custom dash keybind instead of shift").getBoolean(false); enableReEval = config.get(CATEGORY_GENERAL, "1.27_enableReEval", true, "Allows re-evaluating power networks on link remove instead of destroying and recreating").getBoolean(true); enableSilentCompStackErrors = config.get(CATEGORY_GENERAL, "1.28_enableSilentCompStackErrors", false, "Enabling this will disable log spam created by unregistered items in ComparableStack instances.").getBoolean(false); hintPos = CommonConfig.createConfigInt(config, CATEGORY_GENERAL, "1.29_hudOverlayPosition", "0: Top left\n1: Top right\n2: Center right\n3: Center Left", 0); @@ -89,6 +91,9 @@ public class GeneralConfig { enableSkyboxes = config.get(CATEGORY_GENERAL, "1.31_enableSkyboxes", true, "If enabled, will try to use NTM's custom skyboxes.").getBoolean(true); enableImpactWorldProvider = config.get(CATEGORY_GENERAL, "1.32_enableImpactWorldProvider", true, "If enabled, registers custom world provider which modifies lighting and sky colors for post impact effects.").getBoolean(true); enableStatReRegistering = config.get(CATEGORY_GENERAL, "1.33_enableStatReRegistering", true, "If enabled, will re-register item crafting/breaking/usage stats in order to fix a forge bug where modded items just won't show up.").getBoolean(true); + enableKeybindOverlap = config.get(CATEGORY_GENERAL, "1.34_enableKeybindOverlap", true, "If enabled, will handle keybinds that would otherwise be ignored due to overlapping.").getBoolean(true); + + enableExpensiveMode = config.get(CATEGORY_GENERAL, "1.99_enableExpensiveMode", false, "It does what the name implies.").getBoolean(false); final String CATEGORY_528 = CommonConfig.CATEGORY_528; @@ -104,6 +109,7 @@ public class GeneralConfig { enable528BedrockDeposit = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableBedrockDepsoit", "Enables bedrock coltan ores in the coltan deposit. These ores can be drilled to extract infinite coltan, albeit slowly.", true); enable528BedrockSpawn = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableBedrockSpawning", "Enables the bedrock coltan ores as a rare spawn. These will be rarely found anywhere in the world.", false); enable528BosniaSimulator = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableBosniaSimulator", "Enables anti tank mines spawning all over the world.", true); + enable528BedrockReplacement = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528BedrockReplacement", "Replaces certain bedrock ores with ones that require additional processing.", true); coltanRate = CommonConfig.createConfigInt(config, CATEGORY_528, "X528_oreColtanFrequency", "Determines how many coltan ore veins are to be expected in a chunk. These values do not affect the frequency in deposits, and only apply if random coltan spanwing is enabled.", 2); bedrockRate = CommonConfig.createConfigInt(config, CATEGORY_528, "X528_bedrockColtanFrequency", "Determines how often (1 in X) bedrock coltan ores spawn. Applies for both the bedrock ores in the coltan deposit (if applicable) and the random bedrock ores (if applicable)", 50); diff --git a/src/main/java/com/hbm/config/MobConfig.java b/src/main/java/com/hbm/config/MobConfig.java index cd01ac0c8..8ce250f40 100644 --- a/src/main/java/com/hbm/config/MobConfig.java +++ b/src/main/java/com/hbm/config/MobConfig.java @@ -14,6 +14,7 @@ public class MobConfig { public static int raidDelay = 30 * 60 * 60; public static int raidChance = 3; public static int raidAmount = 15; + public static int raidDrones = 5; public static int raidAttackDelay = 40; public static int raidAttackReach = 2; public static int raidAttackDistance = 32; @@ -27,6 +28,17 @@ public class MobConfig { public static boolean enableDucks = true; public static boolean enableMobGear = true; + public static boolean enableHives = true; + public static int hiveSpawn = 256; + public static double scoutThreshold = 0.1; + public static double tier2Threshold = 1; + public static double tier3Threshold = 10; + public static double tier4Threshold = 50; + public static double tier5Threshold = 100; + public static double spawnMax = 50; + public static double targetingThreshold = 1; + + public static void loadFromConfig(Configuration config) { final String CATEGORY = CommonConfig.CATEGORY_MOBS; @@ -44,6 +56,7 @@ public class MobConfig { raidAttackDelay = CommonConfig.createConfigInt(config, CATEGORY, "12.F04_raidAttackDelay", "Time between individual attempts to break machines", 40); raidAttackReach = CommonConfig.createConfigInt(config, CATEGORY, "12.F05_raidAttackReach", "How far away machines can be broken", 2); raidAttackDistance = CommonConfig.createConfigInt(config, CATEGORY, "12.F06_raidAttackDistance", "How far away agents will spawn from the targeted player", 32); + raidDrones = CommonConfig.createConfigInt(config, CATEGORY, "12.F07_raidDrones", "How many quadcopter drones are spawned each raid", 5); enableElementals = CommonConfig.createConfigBool(config, CATEGORY, "12.E00_enableMeltdownElementals", "Whether there should be radiation elementals", true); elementalDelay = CommonConfig.createConfigInt(config, CATEGORY, "12.E01_elementalDelay", "How many world ticks need to pass for a check to be performed", 30 * 60 * 60); @@ -53,5 +66,15 @@ public class MobConfig { enableDucks = CommonConfig.createConfigBool(config, CATEGORY, "12.D00_enableDucks", "Whether pressing O should allow the player to duck", true); enableMobGear = CommonConfig.createConfigBool(config, CATEGORY, "12.D01_enableMobGear", "Whether zombies and skeletons should have additional gear when spawning", true); + + enableHives = CommonConfig.createConfigBool(config, CATEGORY, "12.G00_enableHives", "Whether glyphid hives should spawn", true); + hiveSpawn = CommonConfig.createConfigInt(config, CATEGORY, "12.G01_hiveSpawn", "The average amount of chunks per hive", 256); + scoutThreshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G02_scoutThreshold", "Minimum amount of soot for scouts to spawn", 0.1); + tier2Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G03_tier2Threshold", "Minimum amount of soot for tier 2 glyphids to spawn", 1); + tier3Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G04_tier3Threshold", "Minimum amount of soot for tier 3 glyphids to spawn", 10); + tier4Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G05_tier4Threshold", "Minimum amount of soot for tier 4 glyphids to spawn", 50); + tier5Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G06_tier5Threshold", "Minimum amount of soot for tier 5 glyphids to spawn", 100); + spawnMax = CommonConfig.createConfigDouble(config, CATEGORY, "12.G07_spawnMax", "Maximum amount of glyphids being able to exist at once through natural spawning", 50); + targetingThreshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G08_targetingThreshold", "Minimum amount of soot required for glyphids' extended targeting range to activate", 1D); } } diff --git a/src/main/java/com/hbm/config/PotionConfig.java b/src/main/java/com/hbm/config/PotionConfig.java index d34c9128c..9cd584ff0 100644 --- a/src/main/java/com/hbm/config/PotionConfig.java +++ b/src/main/java/com/hbm/config/PotionConfig.java @@ -1,5 +1,7 @@ package com.hbm.config; +import java.util.Locale; + import net.minecraftforge.common.config.Configuration; public class PotionConfig { @@ -37,9 +39,9 @@ public class PotionConfig { String s = CommonConfig.createConfigString(config, CATEGORY_POTION, "8.S0_potionSickness", "Valid configs include \"NORMAL\" and \"TERRARIA\", otherwise potion sickness is turned off", "OFF"); - if("normal".equals(s.toLowerCase())) + if("normal".equals(s.toLowerCase(Locale.US))) potionSickness = 1; - if("terraria".equals(s.toLowerCase())) + if("terraria".equals(s.toLowerCase(Locale.US))) potionSickness = 2; } diff --git a/src/main/java/com/hbm/config/RadiationConfig.java b/src/main/java/com/hbm/config/RadiationConfig.java index ad7b0acd7..25be90304 100644 --- a/src/main/java/com/hbm/config/RadiationConfig.java +++ b/src/main/java/com/hbm/config/RadiationConfig.java @@ -22,6 +22,15 @@ public class RadiationConfig { public static boolean disableHydro = false; public static boolean disableBlinding = false; public static boolean disableFibrosis = false; + + public static boolean enablePollution = true; + public static boolean enableLeadFromBlocks = true; + public static boolean enableLeadPoisoning = true; + public static boolean enableSootFog = true; + public static boolean enablePoison = true; + public static double buffMobThreshold = 15D; + public static double sootFogThreshold = 35D; + public static double sootFogDivisor = 120D; public static void loadFromConfig(Configuration config) { @@ -49,5 +58,15 @@ public class RadiationConfig { disableHydro = CommonConfig.createConfigBool(config, CATEGORY_HAZ, "HAZ_04_disableHydroactive", "When turned off, all hydroactive hazards are disabled", false); disableBlinding = CommonConfig.createConfigBool(config, CATEGORY_HAZ, "HAZ_05_disableBlinding", "When turned off, all blinding hazards are disabled", false); disableFibrosis = CommonConfig.createConfigBool(config, CATEGORY_HAZ, "HAZ_06_disableFibrosis", "When turned off, all fibrosis hazards are disabled", false); + + final String CATEGORY_POL = CommonConfig.CATEGORY_POLLUTION; + enablePollution = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_00_enablePollution", "If disabled, none of the polltuion related things will work", true); + enableLeadFromBlocks = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_01_enableLeadFromBlocks", "Whether breaking blocks in heavy metal polluted areas will poison the player", true); + enableLeadPoisoning = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_02_enableLeadPoisoning", "Whether being in a heavy metal polluted area will poison the player", true); + enableSootFog = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_03_enableSootFog", "Whether smog should be visible", true); + enablePoison = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_04_enablePoison", "Whether being in a poisoned area will affect the player", true); + buffMobThreshold = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_05_buffMobThreshold", "The amount of soot required to buff naturally spawning mobs", 15D); + sootFogThreshold = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_06_sootFogThreshold", "How much soot is required for smog to become visible", 35D); + sootFogDivisor = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_07_sootFogDivisor", "The divisor for smog, higher numbers will require more soot for the same smog density", 120D); } } diff --git a/src/main/java/com/hbm/config/StructureConfig.java b/src/main/java/com/hbm/config/StructureConfig.java index 2f22d7281..9d6ad3cc0 100644 --- a/src/main/java/com/hbm/config/StructureConfig.java +++ b/src/main/java/com/hbm/config/StructureConfig.java @@ -1,5 +1,7 @@ package com.hbm.config; +import java.util.Locale; + import com.hbm.main.MainRegistry; import net.minecraftforge.common.config.Configuration; @@ -28,7 +30,7 @@ public class StructureConfig { if(structureMinChunks > structureMaxChunks) { MainRegistry.logger.error("Fatal error config: Minimum value has been set higher than the maximum value!"); - MainRegistry.logger.error(String.format("Errored values will default back to %1$d and %2$d respectively, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", 8, 24)); + MainRegistry.logger.error(String.format(Locale.US, "Errored values will default back to %1$d and %2$d respectively, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", 8, 24)); structureMinChunks = 8; structureMaxChunks = 24; } diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index 9f560b536..46add586c 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -26,21 +26,31 @@ public class WorldConfig { public static int cinnebarSpawn = 1; public static int oilcoalSpawn = 128; public static int gassshaleSpawn = 5; - public static int gasbubbleSpawn = 4; - public static int explosivebubbleSpawn = 8; + public static int gasbubbleSpawn = 12; + public static int explosivebubbleSpawn = 0; public static int cobaltSpawn = 2; public static int oilSpawn = 100; public static int bedrockOilSpawn = 200; public static int meteoriteSpawn = 500; - public static int bedrockIronSpawn = 200; + public static int bedrockIronSpawn = 100; public static int bedrockCopperSpawn = 200; - public static int bedrockBoraxSpawn = 300; - public static int bedrockAsbestosSpawn = 300; - public static int bedrockNiobiumSpawn = 300; - public static int bedrockTitaniumSpawn = 400; - public static int bedrockTungstenSpawn = 300; - public static int bedrockGoldSpawn = 500; + public static int bedrockBoraxSpawn = 50; + public static int bedrockChlorocalciteSpawn = 35; + public static int bedrockAsbestosSpawn = 50; + public static int bedrockNiobiumSpawn = 50; + public static int bedrockTitaniumSpawn = 100; + public static int bedrockTungstenSpawn = 100; + public static int bedrockGoldSpawn = 50; + public static int bedrockUraniumSpawn = 35; + public static int bedrockThoriumSpawn = 50; + public static int bedrockCoalSpawn = 200; + public static int bedrockNiterSpawn = 50; + public static int bedrockFluoriteSpawn = 50; + public static int bedrockRedstoneSpawn = 50; + public static int bedrockGlowstoneSpawn = 100; + public static int bedrockPhosphorusSpawn = 50; + public static int bedrockQuartzSpawn = 100; public static int ironClusterSpawn = 4; public static int titaniumClusterSpawn = 2; @@ -71,7 +81,6 @@ public class WorldConfig { public static int dungeonStructure = 64; public static int relayStructure = 500; public static int satelliteStructure = 500; - public static int bunkerStructure = 1000; public static int siloStructure = 1000; public static int factoryStructure = 1000; public static int dudStructure = 500; @@ -124,23 +133,34 @@ public class WorldConfig { rareSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.14_rareEarthSpawnRate", "Amount of rare earth ore veins per chunk", 6); oilcoalSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.15_oilCoalSpawnRate", "Spawns an oily coal vein every nTH chunk", 128); gassshaleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.16_gasShaleSpawnRate", "Amount of oil shale veins per chunk", 5); - gasbubbleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.17_gasBubbleSpawnRate", "Spawns a gas bubble every nTH chunk", 4); + gasbubbleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.17_gasBubbleSpawnRate", "Spawns a gas bubble every nTH chunk", 12); cinnebarSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.18_cinnebarSpawnRate", "Amount of cinnebar ore veins per chunk", 1); cobaltSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.18_cobaltSpawnRate", "Amount of cobalt ore veins per chunk", 2); - explosivebubbleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.19_explosiveBubbleSpawnRate", "Spawns an explosive gas bubble every nTH chunk", 8); + explosivebubbleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.19_explosiveBubbleSpawnRate", "Spawns an explosive gas bubble every nTH chunk", 0); alexandriteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.20_alexandriteSpawnRate", "Spawns an alexandrite vein every nTH chunk", 100); oilSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.21_oilSpawnRate", "Spawns an oil bubble every nTH chunk", 100); bedrockOilSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.22_bedrockOilSpawnRate", "Spawns a bedrock oil node every nTH chunk", 200); meteoriteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.23_meteoriteSpawnRate", "Spawns a fallen meteorite every nTH chunk", 200); - bedrockIronSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B00_bedrockIronSpawn", "Spawns a bedrock iron deposit every nTH chunk", 200); - bedrockCopperSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B01_bedrockCopperSpawn", "Spawns a bedrock copper deposit every nTH chunk", 200); - bedrockBoraxSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B02_bedrockBoraxSpawn", "Spawns a bedrock borax deposit every nTH chunk", 300); - bedrockAsbestosSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B03_bedrockAsbestosSpawn", "Spawns a bedrock asbestos deposit every nTH chunk", 300); - bedrockNiobiumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B04_bedrockNiobiumSpawn", "Spawns a bedrock niobium deposit every nTH chunk", 300); - bedrockTitaniumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B05_bedrockTitaniumSpawn", "Spawns a bedrock titanium deposit every nTH chunk", 500); - bedrockTungstenSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B06_bedrockTungstenSpawn", "Spawns a bedrock tungsten deposit every nTH chunk", 300); - bedrockGoldSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B07_bedrockGoldSpawn", "Spawns a bedrock gold deposit every nTH chunk", 500); + bedrockIronSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B00_bedrockIronWeight", "Spawn weight for iron bedrock ore", 100); + bedrockCopperSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B01_bedrockCopperWeight", "Spawn weight for copper bedrock ore", 200); + bedrockBoraxSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B02_bedrockBoraxWeight", "Spawn weight for borax bedrock ore", 50); + bedrockAsbestosSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B03_bedrockAsbestosWeight", "Spawn weight for asbestos bedrock ore", 50); + bedrockNiobiumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B04_bedrockNiobiumWeight", "Spawn weight for niobium bedrock ore", 50); + bedrockTitaniumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B05_bedrockTitaniumWeight", "Spawn weight for titanium bedrock ore", 100); + bedrockTungstenSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B06_bedrockTungstenWeight", "Spawn weight for tungsten bedrock ore", 100); + bedrockGoldSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B07_bedrockGoldWeight", "Spawn weight for gold bedrock ore", 50); + bedrockUraniumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B08_bedrockUraniumWeight", "Spawn weight for uranium bedrock ore", 35); + bedrockThoriumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B09_bedrockThoriumWeight", "Spawn weight for thorium bedrock ore", 50); + bedrockCoalSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B10_bedrockCoalWeight", "Spawn weight for coal bedrock ore", 200); + bedrockNiterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B11_bedrockNiterWeight", "Spawn weight for niter bedrock ore", 50); + bedrockFluoriteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B12_bedrockFluoriteWeight", "Spawn weight for fluorite bedrock ore", 50); + bedrockRedstoneSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B13_bedrockRedstoneWeight", "Spawn weight for redstone bedrock ore", 50); + bedrockChlorocalciteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B14_bedrockChlorocalciteWeight", "Spawn weight for chlorocalcite bedrock ore", 35); + + bedrockGlowstoneSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.BN00_bedrockGlowstoneWeight", "Spawn weight for glowstone bedrock ore", 100); + bedrockPhosphorusSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.BN01_bedrockPhosphorusWeight", "Spawn weight for phosphorus bedrock ore", 50); + bedrockQuartzSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.BN01_bedrockQuartzWeight", "Spawn weight for quartz bedrock ore", 100); ironClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C00_ironClusterSpawn", "Amount of iron cluster veins per chunk", 4); titaniumClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C01_titaniumClusterSpawn", "Amount of titanium cluster veins per chunk", 2); @@ -171,7 +191,6 @@ public class WorldConfig { dungeonStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.04_dungeonSpawn", "Spawn library dungeon on every nTH chunk", 64); relayStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.05_relaySpawn", "Spawn relay on every nTH chunk", 500); satelliteStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.06_satelliteSpawn", "Spawn satellite dish on every nTH chunk", 500); - bunkerStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.07_bunkerSpawn", "Spawn bunker on every nTH chunk", 1000); siloStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.08_siloSpawn", "Spawn missile silo on every nTH chunk", 1000); factoryStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.09_factorySpawn", "Spawn factory on every nTH chunk", 1000); dudStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.10_dudSpawn", "Spawn dud on every nTH chunk", 500); @@ -206,7 +225,6 @@ public class WorldConfig { dungeonStructure = CommonConfig.setDefZero(dungeonStructure, 1000); relayStructure = CommonConfig.setDefZero(relayStructure, 1000); satelliteStructure = CommonConfig.setDefZero(satelliteStructure, 1000); - bunkerStructure = CommonConfig.setDefZero(bunkerStructure, 1000); siloStructure = CommonConfig.setDefZero(siloStructure, 1000); factoryStructure = CommonConfig.setDefZero(factoryStructure, 1000); dudStructure = CommonConfig.setDefZero(dudStructure, 1000); diff --git a/src/main/java/com/hbm/crafting/ArmorRecipes.java b/src/main/java/com/hbm/crafting/ArmorRecipes.java index 40a284856..33d455ca6 100644 --- a/src/main/java/com/hbm/crafting/ArmorRecipes.java +++ b/src/main/java/com/hbm/crafting/ArmorRecipes.java @@ -44,19 +44,18 @@ public class ArmorRecipes { addChest( CMB.ingot(), ModItems.cmb_plate); addLegs( CMB.ingot(), ModItems.cmb_legs); addBoots( CMB.ingot(), ModItems.cmb_boots); - addHelmet( CO.ingot(), ModItems.cobalt_helmet); - addChest( CO.ingot(), ModItems.cobalt_plate); - addLegs( CO.ingot(), ModItems.cobalt_legs); - addBoots( CO.ingot(), ModItems.cobalt_boots); addHelmet( ModItems.rag, ModItems.robes_helmet); addChest( ModItems.rag, ModItems.robes_plate); addLegs( ModItems.rag, ModItems.robes_legs); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.robes_boots, 1), new Object[] { "R R", "P P", 'R', ModItems.rag, 'P', ModItems.plate_polymer }); - - CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_helmet, 1), new Object[] { "SSS", "IGI", 'S', STEEL.plate(), 'I', ModItems.plate_polymer, 'G', KEY_ANYPANE }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_plate, 1), new Object[] { "KWK", "IKI", "WKW", 'K', ModItems.plate_kevlar, 'I', POLYMER.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_legs, 1), new Object[] { "IWI", "K K", "W W", 'K', ModItems.plate_kevlar, 'I', POLYMER.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_boots, 1), new Object[] { "P P", "I I", 'P', STEEL.plate(), 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.robes_boots, 1), new Object[] { "R R", "P P", 'R', ModItems.rag, 'P', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_helmet, 1), new Object[] {"ECE", 'E', CO.billet(), 'C', ModItems.steel_helmet }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_plate, 1), new Object[] { " E ", "ECE"," E ", 'E', CO.billet(), 'C', ModItems.steel_plate }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_legs, 1), new Object[] { "ECE", "E E", 'E', CO.billet(), 'C', ModItems.steel_legs }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_boots, 1), new Object[] {"ECE", 'E', CO.billet(), 'C', ModItems.steel_boots }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_helmet, 1), new Object[] { "SSS", "IGI", 'S', STEEL.plate(), 'I', ANY_RUBBER.ingot(), 'G', KEY_ANYPANE }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_plate, 1), new Object[] { "KWK", "IKI", "WKW", 'K', ModItems.plate_kevlar, 'I', ANY_PLASTIC.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_legs, 1), new Object[] { "IWI", "K K", "W W", 'K', ModItems.plate_kevlar, 'I', ANY_PLASTIC.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_boots, 1), new Object[] { "P P", "I I", 'P', STEEL.plate(), 'I', ANY_RUBBER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dnt_helmet, 1), new Object[] { "EEE", "EE ", 'E', DNT.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dnt_plate, 1), new Object[] { "EE ", "EEE", "EEE", 'E', DNT.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dnt_legs, 1), new Object[] { "EE ", "EEE", "E E", 'E', DNT.ingot() }); @@ -64,11 +63,11 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.zirconium_legs, 1), new Object[] { "EEE", "E E", "E E", 'E', ZR.ingot() }); //Power armor - CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_titanium, 'C', ModItems.circuit_targeting_tier3, 'I', ModItems.plate_polymer, 'X', ModItems.gas_mask_m65, 'B', ModItems.titanium_helmet }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_titanium, 'C', ModItems.circuit_targeting_tier3, 'I', ANY_RUBBER.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.titanium_helmet }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_plate, 1), new Object[] { "MPM", "TBT", "PPP", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'T', ModItems.gas_empty, 'B', ModItems.titanium_plate }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_legs, 1), new Object[] { "MPM", "PBP", "P P", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_legs }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_boots }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_ajr, 'C', ModItems.circuit_targeting_tier4, 'I', POLYMER.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.alloy_helmet }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_ajr, 'C', ModItems.circuit_targeting_tier4, 'I', ANY_PLASTIC.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.alloy_helmet }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_plate, 1), new Object[] { "MPM", "TBT", "PPP", 'M', ModItems.motor_desh, 'P', ModItems.plate_armor_ajr, 'T', ModItems.gas_empty, 'B', ModItems.alloy_plate }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_legs, 1), new Object[] { "MPM", "PBP", "P P", 'M', ModItems.motor_desh, 'P', ModItems.plate_armor_ajr, 'B', ModItems.alloy_legs }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_ajr, 'B', ModItems.alloy_boots }); @@ -81,9 +80,9 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_plate_jetpack, 1), new Object[] { "NFN", "TPT", "ICI", 'N', ModItems.plate_armor_lunar, 'F', ModItems.fins_quad_titanium, 'T', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.XENON.getID()), 'P', ModItems.bj_plate, 'I', ModItems.mp_thruster_10_xenon, 'C', ModItems.crystal_phosphorus }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_legs, 1), new Object[] { "MBM", "NSN", "N N", 'N', ModItems.plate_armor_lunar, 'M', ModItems.motor_desh, 'S', ModItems.starmetal_legs, 'B', ModBlocks.block_starmetal }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_boots, 1), new Object[] { "N N", "BSB", 'N', ModItems.plate_armor_lunar, 'S', ModItems.starmetal_boots, 'B', ModBlocks.block_starmetal }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_helmet, 1), new Object[] { "PPC", "PBP", "IFI", 'P', ModItems.plate_armor_hev, 'C', ModItems.circuit_targeting_tier4, 'B', ModItems.titanium_helmet, 'I', ModItems.plate_polymer, 'F', ModItems.gas_mask_filter }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_plate, 1), new Object[] { "MPM", "IBI", "PPP", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_plate, 'I', POLYMER.ingot(), 'M', ModItems.motor_desh }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_legs, 1), new Object[] { "MPM", "IBI", "P P", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_legs, 'I', POLYMER.ingot(), 'M', ModItems.motor_desh }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_helmet, 1), new Object[] { "PPC", "PBP", "IFI", 'P', ModItems.plate_armor_hev, 'C', ModItems.circuit_targeting_tier4, 'B', ModItems.titanium_helmet, 'I', ANY_PLASTIC.ingot(), 'F', ModItems.gas_mask_filter }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_plate, 1), new Object[] { "MPM", "IBI", "PPP", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_plate, 'I', ANY_PLASTIC.ingot(), 'M', ModItems.motor_desh }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_legs, 1), new Object[] { "MPM", "IBI", "P P", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_legs, 'I', ANY_PLASTIC.ingot(), 'M', ModItems.motor_desh }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_boots }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.fau_helmet, 1), new Object[] { "PWP", "PBP", "FSF", 'P', ModItems.plate_armor_fau, 'W', new ItemStack(Blocks.wool, 1, 14), 'B', ModItems.starmetal_helmet, 'F', ModItems.gas_mask_filter, 'S', ModItems.pipes_steel }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.fau_plate, 1), new Object[] { "MCM", "PBP", "PSP", 'M', ModItems.motor_desh, 'C', ModItems.demon_core_closed, 'P', ModItems.plate_armor_fau, 'B', ModItems.starmetal_plate, 'S', ModBlocks.ancient_scrap }); @@ -105,6 +104,10 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.dieselsuit_plate, 1), new Object[] { "W W", "CDC", "SWS", 'W', new ItemStack(Blocks.wool, 1, 14), 'S', STEEL.ingot(), 'C', ModItems.circuit_targeting_tier3, 'D', ModBlocks.machine_diesel }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dieselsuit_legs, 1), new Object[] { "M M", "S S", "W W", 'W', new ItemStack(Blocks.wool, 1, 14), 'S', STEEL.ingot(), 'M', ModItems.motor }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dieselsuit_boots, 1), new Object[] { "W W", "S S", 'W', new ItemStack(Blocks.wool, 1, 14), 'S', STEEL.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.envsuit_helmet, 1), new Object[] { "TCT", "TGT", "RRR", 'T', TI.plate(), 'C', ModItems.circuit_red_copper, 'G', KEY_ANYPANE, 'R', RUBBER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.envsuit_plate, 1), new Object[] { "T T", "TCT", "RRR", 'T', TI.plate(), 'C', TI.plateCast(), 'R', RUBBER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.envsuit_legs, 1), new Object[] { "TCT", "R R", "T T", 'T', TI.plate(), 'C', TI.plateCast(), 'R', RUBBER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.envsuit_boots, 1), new Object[] { "R R", "T T", 'T', TI.plate(), 'R', RUBBER.ingot() }); //Bismuth fursui- I mean armor CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_helmet, 1), new Object[] { "GPP", "P ", "FPP", 'G', Items.gold_ingot, 'P', ModItems.plate_bismuth, 'F', ModItems.rag }); @@ -150,19 +153,19 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.paa_boots, 1), new Object[] { "E E", "N N", 'E', ModItems.plate_paa, 'N', OreDictManager.getReflector() }); //Liquidator Suit - CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_helmet, 1), new Object[] { "III", "CBC", "III", 'I', ModItems.plate_polymer, 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_helmet_grey }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_plate, 1), new Object[] { "ICI", "TBT", "ICI", 'I', ModItems.plate_polymer, 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_plate_grey, 'T', ModItems.gas_empty }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_legs, 1), new Object[] { "III", "CBC", "I I", 'I', ModItems.plate_polymer, 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_legs_grey }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_boots, 1), new Object[] { "ICI", "IBI", 'I', ModItems.plate_polymer, 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_boots_grey }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_helmet, 1), new Object[] { "III", "CBC", "III", 'I', ANY_RUBBER.ingot(), 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_helmet_grey }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_plate, 1), new Object[] { "ICI", "TBT", "ICI", 'I', ANY_RUBBER.ingot(), 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_plate_grey, 'T', ModItems.gas_empty }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_legs, 1), new Object[] { "III", "CBC", "I I", 'I', ANY_RUBBER.ingot(), 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_legs_grey }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_boots, 1), new Object[] { "ICI", "IBI", 'I', ANY_RUBBER.ingot(), 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_boots_grey }); //Masks CraftingManager.addRecipeAuto(new ItemStack(ModItems.goggles, 1), new Object[] { "P P", "GPG", 'G', KEY_ANYPANE, 'P', STEEL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask, 1), new Object[] { "PPP", "GPG", " F ", 'G', KEY_ANYPANE, 'P', STEEL.plate(), 'F', IRON.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_m65, 1), new Object[] { "PPP", "GPG", " F ", 'G', KEY_ANYPANE, 'P', ModItems.plate_polymer, 'F', IRON.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_m65, 1), new Object[] { "PPP", "GPG", " F ", 'G', KEY_ANYPANE, 'P', ANY_RUBBER.ingot(), 'F', IRON.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_olde, 1), new Object[] { "PPP", "GPG", " F ", 'G', KEY_ANYPANE, 'P', Items.leather, 'F', IRON.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_mono, 1), new Object[] { " P ", "PPP", " F ", 'P', ModItems.plate_polymer, 'F', IRON.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_mono, 1), new Object[] { " P ", "PPP", " F ", 'P', ANY_RUBBER.ingot(), 'F', IRON.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mask_of_infamy, 1), new Object[] { "III", "III", " I ", 'I', IRON.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ashglasses, 1), new Object[] { "I I", "GPG", 'I', ModItems.plate_polymer, 'G', ModBlocks.glass_ash, 'P', POLYMER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ashglasses, 1), new Object[] { "I I", "GPG", 'I', ANY_RUBBER.ingot(), 'G', ModBlocks.glass_ash, 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mask_rag, 1), new Object[] { "RRR", 'R', ModItems.rag_damp }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mask_piss, 1), new Object[] { "RRR", 'R', ModItems.rag_piss }); diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index d4dd9d69c..caac98962 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -52,7 +52,7 @@ public class ConsumableRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.med_ptsd, 1), new Object[] { ModItems.med_ipecac }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.pancake, 1), new Object[] { REDSTONE.dust(), DIAMOND.dust(), Items.wheat, ModItems.bolt_tungsten, ModItems.wire_copper, STEEL.plate() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.pancake, 1), new Object[] { REDSTONE.dust(), EMERALD.dust(), Items.wheat, ModItems.bolt_tungsten, ModItems.wire_copper, STEEL.plate() }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.chocolate_milk, 1), new Object[] { KEY_ANYPANE, new ItemStack(Items.dye, 1, 3), Items.milk_bucket, KNO.block(), S.dust(), S.dust(), S.dust(), P_RED.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.chocolate_milk, 1), new Object[] { KEY_ANYPANE, new ItemStack(Items.dye, 1, 3), Items.milk_bucket, Fluids.NITROGLYCERIN.getDict(1_000) }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.loops), new Object[] { ModItems.flame_pony, Items.wheat, Items.sugar }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.loop_stew), new Object[] { ModItems.loops, ModItems.can_smart, Items.bowl }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.coffee), new Object[] { COAL.dust(), Items.milk_bucket, Items.potionitem, Items.sugar }); @@ -105,12 +105,13 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_awesome, 1), new Object[] { "SNS", "PCP", "SNS", 'C', ModItems.syringe_empty, 'S', S.dust(), 'P', PU239.nugget(), 'N', PU238.nugget() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_empty, 6), new Object[] { "P", "C", "B", 'B', Blocks.iron_bars, 'C', ModItems.rod_empty, 'P', IRON.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_stimpak, 1), new Object[] { " N ", "NSN", " N ", 'N', Items.nether_wart, 'S', ModItems.syringe_metal_empty }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.syringe_metal_stimpak, 1), new Object[] { ModItems.nitra_small, ModItems.nitra_small, ModItems.nitra_small, ModItems.syringe_metal_empty }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_medx, 1), new Object[] { " N ", "NSN", " N ", 'N', Items.quartz, 'S', ModItems.syringe_metal_empty }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_psycho, 1), new Object[] { " N ", "NSN", " N ", 'N', Items.glowstone_dust, 'S', ModItems.syringe_metal_empty }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_super, 1), new Object[] { " N ", "PSP", "L L", 'N', ModItems.bottle_nuka, 'P', STEEL.plate(), 'S', ModItems.syringe_metal_stimpak, 'L', Items.leather }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_super, 1), new Object[] { " N ", "PSP", "L L", 'N', ModItems.bottle_nuka, 'P', STEEL.plate(), 'S', ModItems.syringe_metal_stimpak, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_super, 1), new Object[] { " N ", "PSP", "L L", 'N', ModItems.bottle_nuka, 'P', STEEL.plate(), 'S', ModItems.syringe_metal_stimpak, 'L', ANY_RUBBER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_super, 1), new Object[] { " N ", "PSP", "L L", 'N', ModItems.bottle_cherry, 'P', STEEL.plate(), 'S', ModItems.syringe_metal_stimpak, 'L', Items.leather }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_super, 1), new Object[] { " N ", "PSP", "L L", 'N', ModItems.bottle_cherry, 'P', STEEL.plate(), 'S', ModItems.syringe_metal_stimpak, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_super, 1), new Object[] { " N ", "PSP", "L L", 'N', ModItems.bottle_cherry, 'P', STEEL.plate(), 'S', ModItems.syringe_metal_stimpak, 'L', ANY_RUBBER.ingot() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.syringe_taint), new Object[] { ModItems.bottle2_empty, ModItems.syringe_metal_empty, ModItems.ducttape, ModItems.powder_magic, SA326.nugget(), Items.potionitem }); //Medicine @@ -134,12 +135,12 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', Items.leather, 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.syringe_antidote }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', Items.leather, 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.pill_iodine }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LL", "SI", "LL", 'L', Items.leather, 'S', ModItems.syringe_metal_super, 'I', ModItems.radaway }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', ModItems.plate_polymer, 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.syringe_antidote }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', ModItems.plate_polymer, 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.pill_iodine }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LL", "SI", "LL", 'L', ModItems.plate_polymer, 'S', ModItems.syringe_metal_super, 'I', ModItems.radaway }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', ANY_RUBBER.ingot(), 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.syringe_antidote }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', ANY_RUBBER.ingot(), 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.pill_iodine }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LL", "SI", "LL", 'L', ANY_RUBBER.ingot(), 'S', ModItems.syringe_metal_super, 'I', ModItems.radaway }); //IV Bags - CraftingManager.addRecipeAuto(new ItemStack(ModItems.iv_empty, 4), new Object[] { "S", "I", "S", 'S', ModItems.plate_polymer, 'I', IRON.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.iv_empty, 4), new Object[] { "S", "I", "S", 'S', ANY_RUBBER.ingot(), 'I', IRON.plate() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.iv_xp_empty, 1), new Object[] { ModItems.iv_empty, ModItems.powder_magic }); //Radaway @@ -149,7 +150,7 @@ public class ConsumableRecipes { //Cladding CraftingManager.addShapelessAuto(new ItemStack(ModItems.cladding_paint, 1), new Object[] { PB.nugget(), PB.nugget(), PB.nugget(), PB.nugget(), Items.clay_ball, Items.glass_bottle }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.cladding_rubber, 1), new Object[] { "RCR", "CDC", "RCR", 'R', ModItems.plate_polymer, 'C', COAL.dust(), 'D', ModItems.ducttape }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cladding_rubber, 1), new Object[] { "RCR", "CDC", "RCR", 'R', ANY_RUBBER.ingot(), 'C', COAL.dust(), 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cladding_lead, 1), new Object[] { "DPD", "PRP", "DPD", 'R', ModItems.cladding_rubber, 'P', PB.plate(), 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cladding_desh, 1), new Object[] { "DPD", "PRP", "DPD", 'R', ModItems.cladding_lead, 'P', ModItems.plate_desh, 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cladding_ghiorsium, 1), new Object[] { "DPD", "PRP", "DPD", 'R', ModItems.cladding_desh, 'P', ModItems.ingot_gh336, 'D', ModItems.ducttape }); @@ -162,7 +163,7 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_ghiorsium, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', GH336.ingot(), 'S', U238.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_polonium, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', IRON.plate(), 'S', PO210.block() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_era, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', IRON.plate(), 'S', ModItems.ingot_semtex }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_kevlar, 1), new Object[] { "KIK", "IDI", "KIK", 'K', ModItems.plate_kevlar, 'I', ModItems.plate_polymer, 'D', ModItems.ducttape }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_kevlar, 1), new Object[] { "KIK", "IDI", "KIK", 'K', ModItems.plate_kevlar, 'I', ANY_RUBBER.ingot(), 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_sapi, 1), new Object[] { "PKP", "DPD", "PKP", 'P', POLYMER.ingot(), 'K', ModItems.insert_kevlar, 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_esapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', POLYMER.ingot(), 'K', ModItems.insert_sapi, 'D', ModItems.ducttape, 'S', BIGMT.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_xsapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', ASBESTOS.ingot(), 'K', ModItems.insert_esapi, 'D', ModItems.ducttape, 'S', ModItems.ingot_meteorite_forged }); @@ -173,13 +174,13 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.servo_set_desh, 1), new Object[] { "MBM", "PSP", "MBM", 'M', ModItems.motor_desh, 'B', ModItems.bolt_dura_steel, 'P', ALLOY.plate(), 'S', ModItems.servo_set }); //Helmet Mods - CraftingManager.addRecipeAuto(new ItemStack(ModItems.attachment_mask, 1), new Object[] { "DID", "IGI", " F ", 'D', ModItems.ducttape, 'I', ModItems.plate_polymer, 'G', KEY_ANYPANE, 'F', IRON.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.attachment_mask_mono, 1), new Object[] { " D ", "DID", " F ", 'D', ModItems.ducttape, 'I', ModItems.plate_polymer, 'F', IRON.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.attachment_mask, 1), new Object[] { "DID", "IGI", " F ", 'D', ModItems.ducttape, 'I', ANY_RUBBER.ingot(), 'G', KEY_ANYPANE, 'F', IRON.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.attachment_mask_mono, 1), new Object[] { " D ", "DID", " F ", 'D', ModItems.ducttape, 'I', ANY_RUBBER.ingot(), 'F', IRON.plate() }); //Boot Mods - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pads_rubber, 1), new Object[] { "P P", "IDI", "P P", 'P', ModItems.plate_polymer, 'I', IRON.plate(), 'D', ModItems.ducttape }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.pads_rubber, 1), new Object[] { "P P", "IDI", "P P", 'P', ANY_RUBBER.ingot(), 'I', IRON.plate(), 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pads_slime, 1), new Object[] { "SPS", "DSD", "SPS", 'S', KEY_SLIME, 'P', ModItems.pads_rubber, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pads_static, 1), new Object[] { "CDC", "ISI", "CDC", 'C', CU.ingot(), 'D', ModItems.ducttape, 'I', ModItems.plate_polymer, 'S', ModItems.pads_slime }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.pads_static, 1), new Object[] { "CDC", "ISI", "CDC", 'C', CU.ingot(), 'D', ModItems.ducttape, 'I', ANY_RUBBER.ingot(), 'S', ModItems.pads_slime }); //Special Mods CraftingManager.addRecipeAuto(new ItemStack(ModItems.horseshoe_magnet, 1), new Object[] { "L L", "I I", "ILI", 'L', ModItems.lodestone, 'I', IRON.ingot() }); @@ -201,7 +202,8 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_tester, 1), new Object[] { "G", "C", "I", 'G', GOLD.plate(), 'C', ModItems.circuit_aluminium, 'I', IRON.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser_gold, 1), new Object[] { "GPG", "PRP", "GPG", 'G', Items.gunpowder, 'P', GOLD.plate(), 'R', "record" }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ballistic_gauntlet, 1), new Object[] { " WS", "WRS", " RS", 'W', ModItems.wire_copper, 'R', ModItems.ring_starmetal, 'S', STEEL.plate() }); - + CraftingManager.addRecipeAuto(new ItemStack(ModItems.night_vision, 1), "P P", "GCG", 'P', ANY_PLASTIC.ingot(), 'G', KEY_ANYGLASS, 'C', ModItems.circuit_gold); + //Stealth boy CraftingManager.addRecipeAuto(new ItemStack(ModItems.stealth_boy, 1), new Object[] { " B", "LI", "LC", 'B', Blocks.stone_button, 'L', Items.leather, 'I', STEEL.ingot(), 'C', ModItems.circuit_red_copper }); diff --git a/src/main/java/com/hbm/crafting/MineralRecipes.java b/src/main/java/com/hbm/crafting/MineralRecipes.java index 0f440dbe3..ebd11b692 100644 --- a/src/main/java/com/hbm/crafting/MineralRecipes.java +++ b/src/main/java/com/hbm/crafting/MineralRecipes.java @@ -1,6 +1,7 @@ package com.hbm.crafting; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.BlockEnums.EnumStoneType; import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; @@ -51,6 +52,9 @@ public class MineralRecipes { add1To9Pair(ModBlocks.block_polymer, ModItems.ingot_polymer); add1To9Pair(ModBlocks.block_bakelite, ModItems.ingot_bakelite); add1To9Pair(ModBlocks.block_rubber, ModItems.ingot_rubber); + add1To9Pair(ModBlocks.block_cadmium, ModItems.ingot_cadmium); + add1To9Pair(ModBlocks.block_tcalloy, ModItems.ingot_tcalloy); + add1To9Pair(ModBlocks.block_cdalloy, ModItems.ingot_cdalloy); for(int i = 0; i < EnumCokeType.values().length; i++) { add1To9PairSameMeta(Item.getItemFromBlock(ModBlocks.block_coke), ModItems.coke, i); @@ -414,6 +418,8 @@ public class MineralRecipes { GameRegistry.addRecipe(new ItemStack(ModItems.ingot_mercury, 8), new Object[] { "#", '#', ModItems.bottle_mercury }); GameRegistry.addRecipe(new ItemStack(ModItems.egg_balefire, 1), new Object[] { "###", "###", "###", '#', ModItems.egg_balefire_shard }); GameRegistry.addRecipe(new ItemStack(ModItems.egg_balefire_shard, 9), new Object[] { "#", '#', ModItems.egg_balefire }); + GameRegistry.addRecipe(new ItemStack(ModItems.nitra, 1), new Object[] { "##", "##", '#', ModItems.nitra_small }); + GameRegistry.addRecipe(new ItemStack(ModItems.nitra_small, 4), new Object[] { "#", '#', ModItems.nitra }); add1To9Pair(ModItems.powder_paleogenite, ModItems.powder_paleogenite_tiny); add1To9Pair(ModItems.ingot_osmiridium, ModItems.nugget_osmiridium); @@ -443,6 +449,7 @@ public class MineralRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.ball_fireclay, 4), new Object[] { Items.clay_ball, Items.clay_ball, Items.clay_ball, AL.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.ball_fireclay, 4), new Object[] { Items.clay_ball, Items.clay_ball, Items.clay_ball, AL.ore() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ball_fireclay, 4), new Object[] { Items.clay_ball, Items.clay_ball, DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.LIMESTONE), KEY_SAND }); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_IRON), new ItemStack(ModItems.powder_iron)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_COPPER), new ItemStack(ModItems.powder_copper)); @@ -454,6 +461,10 @@ public class MineralRecipes { add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_SULFUR), new ItemStack(ModItems.sulfur)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_CALCIUM), new ItemStack(ModItems.powder_calcium)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_BISMUTH), new ItemStack(ModItems.powder_bismuth)); + add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_RADIUM), new ItemStack(ModItems.powder_ra226)); + add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_TECHNETIUM), new ItemStack(ModItems.billet_technetium)); + add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_POLONIUM), new ItemStack(ModItems.billet_polonium)); + add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_URANIUM), new ItemStack(ModItems.powder_uranium)); } //Bundled 1/9 recipes diff --git a/src/main/java/com/hbm/crafting/PowderRecipes.java b/src/main/java/com/hbm/crafting/PowderRecipes.java index 6c6845ed9..20eb1a2f1 100644 --- a/src/main/java/com/hbm/crafting/PowderRecipes.java +++ b/src/main/java/com/hbm/crafting/PowderRecipes.java @@ -41,11 +41,11 @@ public class PowderRecipes { CraftingManager.addShapelessAuto(new ItemStack(Items.gunpowder, 3), new Object[] { S.dust(), KNO.dust(), new ItemStack(Items.coal, 1, 1) }); //Blends - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_power, 5), new Object[] { REDSTONE.dust(), "dustGlowstone", DIAMOND.dust(), NP237.dust(), MAGTUNG.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_power, 3), new Object[] { "dustGlowstone", DIAMOND.dust(), MAGTUNG.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_nitan_mix, 6), new Object[] { NP237.dust(), I.dust(), TH232.dust(), AT.dust(), ND.dust(), CS.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_nitan_mix, 6), new Object[] { ST.dust(), CO.dust(), BR.dust(), TS.dust(), NB.dust(), CE.dust() }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_spark_mix, 5), new Object[] { DESH.dust(), EUPH.dust(), ModItems.powder_meteorite, ModItems.powder_power, ModItems.powder_nitan_mix }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_meteorite, 5), new Object[] { IRON.dust(), CU.dust(), LI.dust(), W.dust(), U.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_spark_mix, 3), new Object[] { DESH.dust(), EUPH.dust(), ModItems.powder_power }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_meteorite, 4), new Object[] { IRON.dust(), CU.dust(), LI.dust(), NETHERQUARTZ.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_thermite, 4), new Object[] { IRON.dust(), IRON.dust(), IRON.dust(), AL.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_desh_mix, 1), new Object[] { B.dustTiny(), B.dustTiny(), LA.dustTiny(), LA.dustTiny(), CE.dustTiny(), CO.dustTiny(), LI.dustTiny(), ND.dustTiny(), NB.dustTiny() }); @@ -63,8 +63,9 @@ public class PowderRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 8), new Object[] { PB.dust(), S.dust(), KEY_SAND }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 12), new Object[] { CA.dust(), KEY_SAND }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 16), new Object[] { BORAX.dust(), KEY_SAND }); - + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_fertilizer, 4), new Object[] { CA.dust(), P_RED.dust(), KNO.dust(), S.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_fertilizer, 4), new Object[] { ANY_ASH.any(), P_RED.dust(), KNO.dust(), S.dust() }); if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting) { CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { REDSTONE.dust(), IRON.dust(), COAL.dust(), CU.dust() }); diff --git a/src/main/java/com/hbm/crafting/RodRecipes.java b/src/main/java/com/hbm/crafting/RodRecipes.java index 06f29fb44..089d08aae 100644 --- a/src/main/java/com/hbm/crafting/RodRecipes.java +++ b/src/main/java/com/hbm/crafting/RodRecipes.java @@ -3,6 +3,7 @@ package com.hbm.crafting; import static com.hbm.inventory.OreDictManager.*; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBreedingRod.*; +import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; import com.hbm.main.CraftingManager; @@ -136,6 +137,23 @@ public class RodRecipes { addPellet(PB, EnumWatzType.LEAD); addPellet(B, EnumWatzType.BORON); addPellet(U238, EnumWatzType.DU); + + //PWR fuel + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.MEU), new Object[] { "F", "I", "F", 'F', ModItems.billet_uranium_fuel, 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.HEU233), new Object[] { "F", "I", "F", 'F', U233.billet(), 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.HEU235), new Object[] { "F", "I", "F", 'F', U235.billet(), 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.MEN), new Object[] { "F", "I", "F", 'F', ModItems.billet_neptunium_fuel, 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.HEN237), new Object[] { "F", "I", "F", 'F', NP237.billet(), 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.MOX), new Object[] { "F", "I", "F", 'F', ModItems.billet_mox_fuel, 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.MEP), new Object[] { "F", "I", "F", 'F', ModItems.billet_pu_mix, 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.HEP239), new Object[] { "F", "I", "F", 'F', PU239.billet(), 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.HEP241), new Object[] { "F", "I", "F", 'F', PU241.billet(), 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.MEA), new Object[] { "F", "I", "F", 'F', ModItems.billet_am_mix, 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.HEA242), new Object[] { "F", "I", "F", 'F', AM242.billet(), 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.HES326), new Object[] { "F", "I", "F", 'F', SA326.billet(), 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.HES327), new Object[] { "F", "I", "F", 'F', SA327.billet(), 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.BFB_AM_MIX), new Object[] { "NFN", "NIN", "NBN", 'F', ModItems.billet_am_mix, 'I', ModItems.plate_polymer, 'B', BI.billet(), 'N', ModItems.nugget_plutonium_fuel }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.BFB_PU241), new Object[] { "NFN", "NIN", "NBN", 'F', PU241.billet(), 'I', ModItems.plate_polymer, 'B', BI.billet(), 'N', ModItems.nugget_uranium_fuel }); } public static void registerInit() { diff --git a/src/main/java/com/hbm/crafting/SmeltingRecipes.java b/src/main/java/com/hbm/crafting/SmeltingRecipes.java index 2024919c3..e3da94819 100644 --- a/src/main/java/com/hbm/crafting/SmeltingRecipes.java +++ b/src/main/java/com/hbm/crafting/SmeltingRecipes.java @@ -22,6 +22,8 @@ public class SmeltingRecipes { public static void AddSmeltingRec() { + GameRegistry.addSmelting(ModItems.glyphid_meat, new ItemStack(ModItems.glyphid_meat_grilled), 1.0F); + GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_thorium), new ItemStack(ModItems.ingot_th232), 3.0F); GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_uranium), new ItemStack(ModItems.ingot_uranium), 6.0F); GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_uranium_scorched), new ItemStack(ModItems.ingot_uranium), 6.0F); @@ -106,6 +108,7 @@ public class SmeltingRecipes { GameRegistry.addSmelting(ModItems.powder_bismuth, new ItemStack(ModItems.ingot_bismuth), 1.0F); GameRegistry.addSmelting(ModItems.powder_calcium, new ItemStack(ModItems.ingot_calcium), 1.0F); GameRegistry.addSmelting(ModItems.powder_cadmium, new ItemStack(ModItems.ingot_cadmium), 1.0F); + GameRegistry.addSmelting(ModItems.ball_resin, new ItemStack(ModItems.ingot_biorubber), 0.1F); GameRegistry.addSmelting(ModItems.combine_scrap, new ItemStack(ModItems.ingot_combine_steel), 1.0F); GameRegistry.addSmelting(ModItems.rag_damp, new ItemStack(ModItems.rag), 0.1F); @@ -181,7 +184,7 @@ public class SmeltingRecipes { for(EnumBedrockOre ore : EnumBedrockOre.values()) { int i = ore.ordinal(); - GameRegistry.addSmelting(new ItemStack(ModBlocks.ore_bedrock, 1, i), new ItemStack(Blocks.cobblestone, 16), 0.1F); + GameRegistry.addSmelting(new ItemStack(ModItems.ore_bedrock, 1, i), new ItemStack(Blocks.cobblestone, 16), 0.1F); } for(int i = 0; i < 10; i++) diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 91ddd5338..3ab160158 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -6,6 +6,7 @@ import com.hbm.inventory.fluid.Fluids; import static com.hbm.inventory.OreDictManager.*; +import com.hbm.items.ItemEnums.EnumPlantType; import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; @@ -61,12 +62,12 @@ public class ToolRecipes { addShovel( DESH.ingot(), ModItems.desh_shovel); addHoe( DESH.ingot(), ModItems.desh_hoe); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_sword, 1), new Object[] { "RPR", "RPR", " B ", 'P', POLYMER.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_pickaxe, 1), new Object[] { "RDM", " PB", " P ", 'P', POLYMER.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_axe, 1), new Object[] { " DP", "RRM", " PB", 'P', POLYMER.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_shovel, 1), new Object[] { " P", "RRM", " B", 'P', POLYMER.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_sword, 1), new Object[] { "RPR", "RPR", " B ", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_pickaxe, 1), new Object[] { "RDM", " PB", " P ", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_axe, 1), new Object[] { " DP", "RRM", " PB", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_shovel, 1), new Object[] { " P", "RRM", " B", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.centri_stick, 1), new Object[] { ModItems.centrifuge_element, ModItems.energy_core, KEY_STICK }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.smashing_hammer, 1), new Object[] { "STS", "SPS", " P ", 'S', STEEL.block(), 'T', W.block(), 'P', POLYMER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.smashing_hammer, 1), new Object[] { "STS", "SPS", " P ", 'S', STEEL.block(), 'T', W.block(), 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.meteorite_sword, 1), new Object[] { " B", "GB ", "SG ", 'B', ModItems.blade_meteorite, 'G', GOLD.plate(), 'S', KEY_STICK }); //Drax @@ -88,6 +89,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.euphemium_stopper, 1), new Object[] { "I", "S", "S", 'I', EUPH.ingot(), 'S', KEY_STICK }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.crowbar, 1), new Object[] { "II", " I", " I", 'I', STEEL.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bottle_opener, 1), new Object[] { "S", "P", 'S', STEEL.plate(), 'P', KEY_PLANKS }); + CraftingManager.addRecipeAuto(new ItemStack(Items.saddle, 1), new Object[] { "LLL", "LRL", " S ", 'S', STEEL.ingot(), 'L', Items.leather, 'R', DictFrame.fromOne(ModItems.plant_item, EnumPlantType.ROPE) }); //Matches CraftingManager.addRecipeAuto(new ItemStack(ModItems.matchstick, 16), new Object[] { "I", "S", 'I', S.dust(), 'S', KEY_STICK }); @@ -109,25 +111,27 @@ public class ToolRecipes { //Utility CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator, 1), new Object[] { " A", "#B#", "#B#", '#', IRON.plate(), 'A', STEEL.plate(), 'B', ModItems.circuit_red_copper }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator_range, 1), new Object[] { "RRD", "PIC", " P", 'P', STEEL.plate(), 'R', Items.redstone, 'C', ModItems.circuit_gold, 'D', ModItems.designator, 'I', STEEL.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator_manual, 1), new Object[] { " A", "#C#", "#B#", '#', POLYMER.ingot(), 'A', PB.plate(), 'B', ModItems.circuit_gold, 'C', ModItems.designator }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator_manual, 1), new Object[] { " A", "#C#", "#B#", '#', ANY_PLASTIC.ingot(), 'A', PB.plate(), 'B', ModItems.circuit_gold, 'C', ModItems.designator }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator_arty_range, 1), new Object[] { "M", "C", "P", 'M', ModItems.magnetron, 'C', ModItems.circuit_gold, 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.linker, 1), new Object[] { "I I", "ICI", "GGG", 'I', IRON.plate(), 'G', GOLD.plate(), 'C', ModItems.circuit_gold }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.oil_detector, 1), new Object[] { "W I", "WCI", "PPP", 'W', ModItems.wire_gold, 'I', CU.ingot(), 'C', ModItems.circuit_red_copper, 'P', STEEL.plate528() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.turret_chip, 1), new Object[] { "WWW", "CPC", "WWW", 'W', ModItems.wire_gold, 'P', POLYMER.ingot(), 'C', ModItems.circuit_gold, }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.survey_scanner, 1), new Object[] { "SWS", " G ", "PCP", 'W', ModItems.wire_gold, 'P', POLYMER.ingot(), 'C', ModItems.circuit_gold, 'S', STEEL.plate528(), 'G', GOLD.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.geiger_counter, 1), new Object[] { "GPP", "WCS", "WBB", 'W', ModItems.wire_gold, 'P', ModItems.plate_polymer, 'C', ModItems.circuit_red_copper, 'G', GOLD.ingot(), 'S', STEEL.plate528(), 'B', ModItems.ingot_beryllium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.turret_chip, 1), new Object[] { "WWW", "CPC", "WWW", 'W', ModItems.wire_gold, 'P', ANY_PLASTIC.ingot(), 'C', ModItems.circuit_gold, }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.survey_scanner, 1), new Object[] { "SWS", " G ", "PCP", 'W', ModItems.wire_gold, 'P', ANY_PLASTIC.ingot(), 'C', ModItems.circuit_gold, 'S', STEEL.plate528(), 'G', GOLD.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.geiger_counter, 1), new Object[] { "GPP", "WCS", "WBB", 'W', ModItems.wire_gold, 'P', ANY_RUBBER.ingot(), 'C', ModItems.circuit_red_copper, 'G', GOLD.ingot(), 'S', STEEL.plate528(), 'B', ModItems.ingot_beryllium }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dosimeter, 1), new Object[] { "WGW", "WCW", "WBW", 'W', KEY_PLANKS, 'G', KEY_ANYPANE, 'C', ModItems.circuit_aluminium, 'B', BE.ingot() }); CraftingManager.addShapelessAuto(new ItemStack(ModBlocks.geiger), new Object[] { ModItems.geiger_counter }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.digamma_diagnostic), new Object[] { ModItems.geiger_counter, PO210.billet(), ASBESTOS.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser, 1), new Object[] { " PS", "P P", " P ", 'P', POLYMER.ingot(), 'S', STEEL.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.pollution_detector, 1), new Object[] { "SFS", "SCS", " S ", 'S', STEEL.plate(), 'F', ModItems.filter_coal, 'C', ModItems.circuit_copper }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser, 1), new Object[] { " PS", "P P", " P ", 'P', ANY_PLASTIC.ingot(), 'S', STEEL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.coltan_tool, 1), new Object[] { "ACA", "CXC", "ACA", 'A', ALLOY.ingot(), 'C', CINNABAR.crystal(), 'X', Items.compass }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', ModItems.bolt_tungsten, 'I', W.ingot(), 'P', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', ModItems.bolt_tungsten, 'I', W.ingot(), 'P', ANY_RUBBER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_tool, 1), new Object[] { "TBT", "SRS", "SCS", 'T', TA.nugget(), 'B', ModItems.nugget_bismuth, 'S', ANY_RESISTANTALLOY.ingot(), 'R', ModItems.reacher, 'C', ModItems.circuit_aluminium }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.sat_designator, 1), new Object[] { "RRD", "PIC", " P", 'P', GOLD.plate(), 'R', Items.redstone, 'C', ModItems.circuit_gold, 'D', ModItems.sat_chip, 'I', GOLD.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mirror_tool), new Object[] { " A ", " IA", "I ", 'A', AL.ingot(), 'I', IRON.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.rbmk_tool), new Object[] { " A ", " IA", "I ", 'A', PB.ingot(), 'I', IRON.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.power_net_tool), new Object[] { "WRW", " I ", " B ", 'W', ModItems.wire_red_copper, 'R', REDSTONE.dust(), 'I', IRON.ingot(), 'B', ModItems.battery_su }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.analysis_tool), new Object[] { " G", " S ", "S ", 'G', KEY_ANYPANE, 'S', STEEL.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.kit_toolbox_empty), new Object[] { "CCC", "CIC", 'C', CU.plate(), 'I', IRON.ingot() }); @@ -151,6 +155,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(EnumCartBase.WOOD, EnumMinecart.EMPTY), new Object[] { "P P", "WPW", 'P',KEY_SLAB, 'W', KEY_PLANKS }); CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(EnumCartBase.STEEL, EnumMinecart.EMPTY), new Object[] { "P P", "IPI", 'P', STEEL.plate(), 'I', STEEL.ingot() }); CraftingManager.addShapelessAuto(ItemModMinecart.createCartItem(EnumCartBase.PAINTED, EnumMinecart.EMPTY), new Object[] { ItemModMinecart.createCartItem(EnumCartBase.STEEL, EnumMinecart.EMPTY), KEY_RED }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.boat_rubber), new Object[] { "L L", "LLL", 'L', ANY_RUBBER.ingot() }); for(EnumCartBase base : EnumCartBase.values()) { @@ -178,21 +183,24 @@ public class ToolRecipes { addShovel( SA326.ingot(), ModItems.schrabidium_shovel); addHoe( SA326.ingot(), ModItems.schrabidium_hoe); } else { + /* CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_sword, 1), new Object[] { " I ", " I ", "SBS", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_sword }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_pickaxe, 1), new Object[] { "III", " B ", " S ", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_pickaxe }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_axe, 1), new Object[] { "II", "IB", " S", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_axe }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_shovel, 1), new Object[] { "I", "B", "S", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_shovel }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_hoe, 1), new Object[] { "II", " B", " S", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_hoe }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_sword, 1), new Object[] { " I ", " I ", "SBS", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_sword }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_pickaxe, 1), new Object[] { "III", " B ", " S ", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_pickaxe }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_axe, 1), new Object[] { "II", "IB", " S", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_axe }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_shovel, 1), new Object[] { "I", "B", "S", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_shovel }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_hoe, 1), new Object[] { "II", " B", " S", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_hoe }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_sword, 1), new Object[] { "I", "W", "S", 'I', SA326.block(), 'W', ModItems.desh_sword, 'S', POLYMER.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_pickaxe, 1), new Object[] { "BSB", " W ", " P ", 'B', ModItems.blades_desh, 'S', SA326.block(), 'W', ModItems.desh_pickaxe, 'P', POLYMER.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_axe, 1), new Object[] { "BS", "BW", " P", 'B', ModItems.blades_desh, 'S', SA326.block(), 'W', ModItems.desh_axe, 'P', POLYMER.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_shovel, 1), new Object[] { "B", "W", "P", 'B', SA326.block(), 'W', ModItems.desh_shovel, 'P', POLYMER.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_hoe, 1), new Object[] { "IW", " S", " S", 'I', SA326.ingot(), 'W', ModItems.desh_hoe, 'S', POLYMER.ingot() }); + + */ + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_sword, 1), new Object[] { " I ", " B ", "ISI", 'I', STAR.ingot(), 'S', ModItems.ring_starmetal, 'B', ModItems.cobalt_decorated_sword }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_pickaxe, 1), new Object[] { "ISI", " B ", " I ", 'I', STAR.ingot(), 'S', ModItems.ring_starmetal, 'B', ModItems.cobalt_decorated_pickaxe }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_axe, 1), new Object[] { "IS", "IB", " I", 'I', STAR.ingot(), 'S', ModItems.ring_starmetal, 'B', ModItems.cobalt_decorated_axe }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_shovel, 1), new Object[] { "I", "B", "I", 'I', STAR.ingot(), 'B', ModItems.cobalt_decorated_shovel }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_hoe, 1), new Object[] { "IS", " B", " I", 'I', STAR.ingot(), 'S', ModItems.ring_starmetal, 'B', ModItems.cobalt_decorated_hoe }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_sword, 1), new Object[] { "I", "W", "S", 'I', SA326.block(), 'W', ModItems.desh_sword, 'S', ANY_PLASTIC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_pickaxe, 1), new Object[] { "BSB", " W ", " P ", 'B', ModItems.blades_desh, 'S', SA326.block(), 'W', ModItems.desh_pickaxe, 'P', ANY_PLASTIC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_axe, 1), new Object[] { "BS", "BW", " P", 'B', ModItems.blades_desh, 'S', SA326.block(), 'W', ModItems.desh_axe, 'P', ANY_PLASTIC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_shovel, 1), new Object[] { "B", "W", "P", 'B', SA326.block(), 'W', ModItems.desh_shovel, 'P', ANY_PLASTIC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_hoe, 1), new Object[] { "IW", " S", " S", 'I', SA326.ingot(), 'W', ModItems.desh_hoe, 'S', ANY_PLASTIC.ingot() }); } } diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 72585ccb7..0ed6e8a9c 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -2,6 +2,7 @@ package com.hbm.crafting; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import static com.hbm.inventory.OreDictManager.*; @@ -45,12 +46,12 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_thruster_15_balefire_large_rad, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.board_copper, 'T', ModItems.mp_thruster_15_balefire_large }); //Missile fuselages - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_kerosene_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.plate_polymer, 'T', ModItems.mp_fuselage_10_kerosene }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_long_kerosene_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.plate_polymer, 'T', ModItems.mp_fuselage_10_long_kerosene }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_15_kerosene_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.plate_polymer, 'T', ModItems.mp_fuselage_15_kerosene }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_solid_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.plate_polymer, 'T', ModItems.mp_fuselage_10_solid }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_long_solid_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.plate_polymer, 'T', ModItems.mp_fuselage_10_long_solid }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_15_solid_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.plate_polymer, 'T', ModItems.mp_fuselage_15_solid }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_kerosene_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ANY_RUBBER.ingot(), 'T', ModItems.mp_fuselage_10_kerosene }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_long_kerosene_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ANY_RUBBER.ingot(), 'T', ModItems.mp_fuselage_10_long_kerosene }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_15_kerosene_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ANY_RUBBER.ingot(), 'T', ModItems.mp_fuselage_15_kerosene }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_solid_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ANY_RUBBER.ingot(), 'T', ModItems.mp_fuselage_10_solid }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_long_solid_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ANY_RUBBER.ingot(), 'T', ModItems.mp_fuselage_10_long_solid }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_15_solid_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ANY_RUBBER.ingot(), 'T', ModItems.mp_fuselage_15_solid }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_15_solid_desh, 1), new Object[] { "CCC", "CTC", "CCC", 'C', DESH.ingot(), 'T', ModItems.mp_fuselage_15_solid }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_kerosene_metal, 1), new Object[] { "ICI", "CTC", "ICI", 'C', STEEL.plate(), 'I', IRON.plate(), 'T', ModItems.mp_fuselage_10_kerosene }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_long_kerosene_metal, 1), new Object[] { "ICI", "CTC", "ICI", 'C', STEEL.plate(), 'I', IRON.plate(), 'T', ModItems.mp_fuselage_10_long_kerosene }); @@ -60,11 +61,11 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_warhead_15_boxcar, 1), new Object[] { "SNS", "CBC", "SFS", 'S', STAR.ingot(), 'N', ModBlocks.det_nuke, 'C', ModItems.circuit_targeting_tier4, 'B', ModBlocks.boxcar, 'F', ModItems.tritium_deuterium_cake }); //Missile chips - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_1, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier1, 'S', ModBlocks.steel_scaffold }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_2, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier2, 'S', ModBlocks.steel_scaffold }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_3, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier3, 'S', ModBlocks.steel_scaffold }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_4, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier4, 'S', ModBlocks.steel_scaffold }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_5, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier5, 'S', ModBlocks.steel_scaffold }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_1, 1), new Object[] { "P", "C", "S", 'P', ANY_RUBBER.ingot(), 'C', ModItems.circuit_targeting_tier1, 'S', ModBlocks.steel_scaffold }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_2, 1), new Object[] { "P", "C", "S", 'P', ANY_RUBBER.ingot(), 'C', ModItems.circuit_targeting_tier2, 'S', ModBlocks.steel_scaffold }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_3, 1), new Object[] { "P", "C", "S", 'P', ANY_RUBBER.ingot(), 'C', ModItems.circuit_targeting_tier3, 'S', ModBlocks.steel_scaffold }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_4, 1), new Object[] { "P", "C", "S", 'P', ANY_RUBBER.ingot(), 'C', ModItems.circuit_targeting_tier4, 'S', ModBlocks.steel_scaffold }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_5, 1), new Object[] { "P", "C", "S", 'P', ANY_RUBBER.ingot(), 'C', ModItems.circuit_targeting_tier5, 'S', ModBlocks.steel_scaffold }); //Turrets CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.turret_sentry, 1), new Object[] { "PPL", " MD", " SC", 'P', STEEL.plate(), 'M', ModItems.motor, 'L', ModItems.mechanism_rifle_1, 'S', ModBlocks.steel_scaffold, 'C', ModItems.circuit_red_copper, 'D', ModItems.crt_display }); @@ -75,6 +76,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_karl, 1), new Object[] { "SSW", " MW", 'S', ModItems.hull_small_steel, 'W', ALLOY.plate(), 'M', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_quadro, 1), new Object[] { "SSS", "SSS", "CM ", 'S', ModItems.hull_small_steel, 'C', ModItems.circuit_targeting_tier3, 'M', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hk69, 1), new Object[] { "SSI", " MB", 'S', ModItems.hull_small_steel, 'I', IRON.ingot(), 'M', ModItems.mechanism_launcher_1, 'B', ModItems.bolt_tungsten }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "HHR", "WLW", 'H', ModItems.hull_small_aluminium, 'R', ModItems.mechanism_rifle_1, 'W', KEY_LOG, 'L', ModItems.mechanism_launcher_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stinger, 1), new Object[] { "SSW", "CMW", 'S', STEEL.plate(), 'W', TI.plate(), 'C', ModItems.circuit_red_copper, 'M', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket, 4), new Object[] { "SS ", "STI", " IR", 'S', STEEL.plate(), 'T', Item.getItemFromBlock(Blocks.tnt), 'I', AL.plate(), 'R', REDSTONE.dust() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver, 1), new Object[] { "SSM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', ModItems.wire_aluminium, 'M', ModItems.mechanism_revolver_1 }); @@ -87,6 +89,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_silver, 1), new Object[] { "SSP", " TI", 'S', AL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', ModItems.wire_tungsten, 'I', KEY_PLANKS }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_red, 1), new Object[] { "R ", " B", 'R', ModItems.key_red, 'B', ModItems.gun_revolver_blackjack }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_deagle, 1), new Object[] { "PPM", " BI", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uac_pistol, 1), new Object[] { "IIM", " BI", 'B', ModItems.bolt_dura_steel, 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_cursed, 1), new Object[] { "TTM", "SRI", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'R', ModItems.wire_red_copper, 'T', TI.plate(), 'M', ModItems.mechanism_revolver_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nightmare, 1), new Object[] { "SEM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', ModItems.wire_aluminium, 'E', ModItems.powder_power, 'M', ModItems.mechanism_revolver_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nightmare2, 1), new Object[] { "SSM", "RRW", 'S', OreDictManager.getReflector(), 'W', W.ingot(), 'R', ModItems.wire_gold, 'M', ModItems.mechanism_special }); @@ -94,8 +97,8 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_chemthrower, 1), new Object[] { "RWC", "HHT", "RLC", 'R', RUBBER.ingot(), 'W', ModItems.wrench, 'C', CU.plate(), 'H', ModItems.hull_small_steel, 'T', ModItems.tank_steel, 'L', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fatman, 1), new Object[] { "SSI", "IIM", "WPH", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', ModItems.wire_aluminium, 'H', ModItems.hull_small_steel, 'P', Item.getItemFromBlock(Blocks.piston), 'M', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mirv, 1), new Object[] { "LLL", "WFW", "SSS", 'S', STEEL.plate(), 'L', PB.plate(), 'W', ModItems.wire_gold, 'F', ModItems.gun_fatman }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_proto, 1), new Object[] { "LLL", "WFW", "SSS", 'S', ModItems.plate_polymer, 'L', ModItems.plate_desh, 'W', ModItems.wire_tungsten, 'F', ModItems.gun_fatman }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bf_ammo, 1), new Object[] { " S ", "EBE", " S ", 'S', ModItems.hull_small_steel, 'E', ModItems.powder_power, 'B', ModItems.egg_balefire_shard }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_proto, 1), new Object[] { "LLL", "WFW", "SSS", 'S', ANY_RUBBER.ingot(), 'L', ModItems.plate_desh, 'W', ModItems.wire_tungsten, 'F', ModItems.gun_fatman }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke, 1, AmmoFatman.BALEFIRE.ordinal()), new Object[] { " S ", "EBE", " S ", 'S', ModItems.hull_small_steel, 'E', ModItems.powder_power, 'B', ModItems.egg_balefire_shard }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp40, 1), new Object[] { "IIM", " SW", " S ", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_thompson, 1), new Object[] { "IIM", " SW", " S ", 'S', IRON.plate(), 'I', STEEL.plate(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flechette, 1), new Object[] { "PPM", "TIS", "G ", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_2, 'T', ModItems.hull_small_steel, 'I', STEEL.ingot(), 'S', ANY_PLASTIC.ingot(), 'G', ModItems.mechanism_launcher_1 }); @@ -151,75 +154,95 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_minigun, 1), new Object[] { "PIB", "PCM", "PIB", 'P', ModItems.pipes_steel, 'B', STEEL.block(), 'I', ANY_PLASTIC.ingot(), 'C', ModItems.mechanism_rifle_2, 'M', ModItems.motor }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_avenger, 1), new Object[] { "PIB", "PCM", "PIB", 'P', ModItems.pipes_steel, 'B', BE.block(), 'I', DESH.ingot(), 'C', ModItems.mechanism_rifle_2, 'M', ModItems.motor }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lacunae, 1), new Object[] { "TIT", "ILI", "PRP", 'T', ModItems.syringe_taint, 'I', STAR.ingot(), 'L', ModItems.gun_minigun, 'P', ModItems.pellet_rtg, 'R', ModBlocks.machine_rtg_grey }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mymy, 1), new Object[] { "PP ", " WP", 'P', ModItems.plate_polymer, 'W', ModItems.wire_aluminium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mymy, 1), new Object[] { "PP ", " WP", 'P', ANY_RUBBER.ingot(), 'W', ModItems.wire_aluminium }); //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_darter, 1), new Object[] { "SST", " P", 'S', STEEL.plate(), 'T', ModItems.gas_empty, 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fireext, 1), new Object[] { "HB", " T", 'H', ModItems.hull_small_steel, 'B', ModItems.bolt_tungsten, 'T', ModItems.tank_steel }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "TPS", "HHR", " L", 'T', ModItems.bolt_tungsten, 'P', STEEL.plate(), 'S', STEEL.ingot(), 'H', ModItems.hull_small_steel, 'R', ModItems.mechanism_rifle_1, 'L', ANY_PLASTIC.ingot()}); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_glass_cannon, 1), new Object[] { "GGC", "GTM", 'G', Item.getItemFromBlock(ModBlocks.glass_quartz), 'C', ModItems.battery_lithium_cell, 'T', ModItems.crt_display, 'M', ModItems.mechanism_special }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_remington, 1), new Object[] { "PPM", "S L", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_1, 'S', KEY_SLAB, 'L', KEY_LOG }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_benelli), new Object[] { "HHP", "SSM", "AAP", 'H', ModItems.ingot_dura_steel, 'S', ModItems.hull_small_steel, 'A', ModItems.hull_small_aluminium, 'P', ModItems.ingot_polymer, 'M', ModItems.mechanism_rifle_2 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lunatic_marksman), new Object[] { " GN", "SSM", " A", 'G', KEY_ANYPANE, 'N', ModItems.powder_nitan_mix, 'S', BIGMT.plate(), 'M', ModItems.mechanism_special, 'A', ANY_RESISTANTALLOY.plateCast() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_coilgun), new Object[] { "CCC", "SSM", " P", 'C', ModBlocks.capacitor_copper, 'S', BIGMT.plate(), 'M', ModItems.mechanism_special, 'P', ANY_PLASTIC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 0), new Object[] { " T ", "TST", " T ", 'T', W.ingot(), 'S', BIGMT.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 1), new Object[] { " T ", "TST", " T ", 'T', FERRO.ingot(), 'S', BIGMT.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 2), new Object[] { " T ", "TST", " T ", 'T', RUBBER.ingot(), 'S', ANY_PLASTIC.ingot() }); + + //TODO: somehow add more variance, 4 gauge is still missing + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_22lr, 16), new Object[] { ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_9mm, 16), new Object[] { ModItems.nitra_small, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_5mm, 16), new Object[] { ModItems.nitra_small, ModItems.nitra_small, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_357, 16, Ammo357Magnum.LEAD.ordinal()), new Object[] { ModItems.nitra, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_44, 16), new Object[] { ModItems.nitra, ModItems.nitra_small, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_45, 16), new Object[] { ModItems.nitra, ModItems.nitra_small, ModItems.nitra_small, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_50ae, 16), new Object[] { ModItems.nitra, ModItems.nitra }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_556, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_20gauge, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra_small, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_12gauge, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_762, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_50bmg, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra, ModItems.nitra }); //Ammo assemblies CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_flechette, 1), new Object[] { " L ", " L ", "LLL", 'L', PB.nugget() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_claws, 1), new Object[] { " X ", "X X", " XX", 'X', STEEL.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_iron, 24), new Object[] { " I", "GC", " P", 'I', IRON.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_iron, 24), new Object[] { " I", "GC", " P", 'I', IRON.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_steel, 24), new Object[] { " I", "GC", " P", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_steel, 24), new Object[] { " I", "GC", " P", 'I', PB.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 24), new Object[] { " I", "GC", " P", 'I', U235.ingot(), 'G', ModItems.cordite, 'C', KEY_CLEARGLASS, 'P', ModItems.primer_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 24), new Object[] { " I", "GC", " P", 'I', PU239.ingot(), 'G', ModItems.cordite, 'C', KEY_CLEARGLASS, 'P', ModItems.primer_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 24), new Object[] { " I", "GC", " P", 'I', ModItems.trinitite, 'G', ModItems.cordite, 'C', KEY_CLEARGLASS, 'P', ModItems.primer_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 24), new Object[] { " I", "GC", " P", 'I', ModItems.nuclear_waste_tiny, 'G', ModItems.cordite, 'C', KEY_CLEARGLASS, 'P', ModItems.primer_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_gold, 24), new Object[] { " I", "GC", " P", 'I', GOLD.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_schrabidium, 6), new Object[] { " I ", "GCN", " P ", 'I', SA326.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357, 'N', ModItems.billet_yharonite }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nightmare, 24), new Object[] { " I", "GC", " P", 'I', W.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_desh, 24), new Object[] { " I", "GC", " P", 'I', DESH.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_smg, 32), new Object[] { " I", "GC", " P", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_smg, 32), new Object[] { " I", "GC", " P", 'I', PB.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_556, 32), new Object[] { " I", "GC", " P", 'I', STEEL.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); - CraftingManager.addRecipeAuto(ModItems.ammo_556.stackFromEnum(30, Ammo556mm.K), new Object[] { "G", "C", "P", 'G', ANY_GUNPOWDER.dust(), 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 32), new Object[] { " I", "GC", " P", 'I', IRON.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 32), new Object[] { " I", "GC", " P", 'I', IRON.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 32), new Object[] { " I", "GC", " P", 'I', IRON.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 32), new Object[] { " I", "GC", " P", 'I', IRON.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lacunae, 32), new Object[] { " I", "GC", " P", 'I', CU.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nopip, 24), new Object[] { " I", "GC", " P", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_44, 'P', ModItems.primer_44 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nopip, 24), new Object[] { " I", "GC", " P", 'I', PB.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_44, 'P', ModItems.primer_44 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.PERCUSSION), new Object[] { "G", "C", "P", 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.SLUG), new Object[] { " I ", "GCL", " P ", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", " P ", 'I', ModBlocks.tnt, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(6, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", " P ", 'I', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.MINING), new Object[] { " I ", "GCL", " P ", 'I', ModBlocks.det_miner, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_iron, 1), new Object[] { " I", "GC", 'I', IRON.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_iron, 1), new Object[] { " I", "GC", 'I', IRON.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_357 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_steel, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_steel, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_357 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', U235.ingot(), 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', PU239.ingot(), 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', ModItems.trinitite, 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', ModItems.nuclear_waste_tiny, 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_gold, 1), new Object[] { " I", "GC", 'I', GOLD.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_schrabidium, 1), new Object[] { " I ", "GCN", 'I', SA326.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357, 'N', ModItems.billet_yharonite }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nightmare, 1), new Object[] { " I", "GC", 'I', W.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_desh, 1), new Object[] { " I", "GC", 'I', DESH.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_smg, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_smg, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_9 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_556, 1), new Object[] { " I", "GC", 'I', STEEL.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9 }); + CraftingManager.addRecipeAuto(ModItems.ammo_556.stackFromEnum(30, Ammo556mm.K), new Object[] { "G", "C", 'G', ANY_GUNPOWDER.dust(), 'C', ModItems.casing_9 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 1), new Object[] { " I", "GC", 'I', IRON.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 1), new Object[] { " I", "GC", 'I', IRON.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_9 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 1), new Object[] { " I", "GC", 'I', IRON.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 1), new Object[] { " I", "GC", 'I', IRON.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_9 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lacunae, 1), new Object[] { " I", "GC", 'I', CU.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nopip, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_44 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nopip, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_44 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'L', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'L', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.PERCUSSION), new Object[] { "G", "C", 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.SLUG), new Object[] { " I ", "GCL", 'I', STEEL.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_flechette, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ModBlocks.tnt, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(6, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.MINING), new Object[] { " I ", "GCL", 'I', ModBlocks.det_miner, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); CraftingManager.addShapelessAuto(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.QUACK), new Object[] { ModItems.ammo_4gauge, ModItems.nugget_bismuth, ModItems.nugget_tantalium, ModItems.ball_dynamite }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SLUG), new Object[] { " I ", "GCL", " P ", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_cluster, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.FLECHETTE), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE2), new Object[] { "I", "C", "P", 'I', ModItems.powder_power, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_calamity, 12), new Object[] { " I ", "GCG", " P ", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_actionexpress, 12), new Object[] { " I", "GC", " P", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50 }); + CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); + CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SLUG), new Object[] { " I ", "GCL", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); + CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_cluster, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); + CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.FLECHETTE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_flechette, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); + CraftingManager.addRecipeAuto(ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE2), new Object[] { "I", "C", 'I', ModItems.powder_power, 'C', ModItems.casing_buckshot }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_calamity, 1), new Object[] { " I ", "GCG", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_actionexpress, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nuke, 1), new Object[] { " WP", "SEP", " WP", 'W', ModItems.wire_aluminium, 'P', STEEL.plate(), 'S', ModItems.hull_small_steel, 'E', ANY_HIGHEXPLOSIVE.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.GPS), new Object[] { "IPI", "ICI", "IPI", 'I', ModItems.plate_polymer, 'P', IRON.plate(), 'C', new ItemStack(ModItems.fluid_tank_lead_full, 1, Fluids.WATZ.getID()) }); - CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.NERF), new Object[] { "I", "I", 'I', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_45, 32), " I", "GC", " P", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_44, 'P', ModItems.primer_44); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_762, 32), " I", "GC", " P", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_9); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_luna, 4), new Object[] { " B ", "GCG", "GPG", 'B', FERRO.ingot(), 'G', ModItems.powder_nitan_mix, 'C', ModItems.casing_50, 'P', ModItems.powder_power}); + CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.GPS), new Object[] { "IPI", "ICI", "IPI", 'I', ANY_RUBBER.ingot(), 'P', IRON.plate(), 'C', new ItemStack(ModItems.fluid_tank_lead_full, 1, Fluids.WATZ.getID()) }); + CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.NERF), new Object[] { "I", "I", 'I', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_45, 1), " I", "GC", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_44); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_762, 1), " I", "GC", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_luna, 1), new Object[] { " B ", "GCG", "GPG", 'B', FERRO.ingot(), 'G', ModItems.powder_nitan_mix, 'C', ModItems.casing_50, 'P', ModItems.powder_power}); //Folly shells CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet, 1), new Object[] { " S ", "STS", "SMS", 'S', STAR.ingot(), 'T', ModItems.powder_magic, 'M', ModBlocks.block_meteor }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet_nuclear, 1), new Object[] { " N ", "UTU", "UTU", 'N', ModItems.ammo_nuke, 'U', IRON.ingot(), 'T', W.block() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet_du, 1), new Object[] { " U ", "UDU", "UTU", 'U', U238.block(), 'D', DESH.block(), 'T', W.block() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_shell, 1), new Object[] { "IPI", "IPI", "IMI", 'I', IRON.ingot(), 'P', IRON.plate(), 'M', ModItems.primer_50 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_shell, 1), new Object[] { "IPI", "IPI", "IMI", 'I', IRON.ingot(), 'P', IRON.plate(), 'M', ANY_SMOKELESS.dust() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly, 1), new Object[] { " B ", "MEM", " S ", 'B', ModItems.folly_bullet, 'M', ModItems.powder_magic, 'E', ModItems.powder_power, 'S', ModItems.folly_shell }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly_nuclear, 1), new Object[] { " B ", "EEE", " S ", 'B', ModItems.folly_bullet_nuclear, 'E', ModBlocks.det_charge, 'S', ModItems.folly_shell }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly_du, 1), new Object[] { " B ", "EEE", " S ", 'B', ModItems.folly_bullet_du, 'E', ModBlocks.det_charge, 'S', ModItems.folly_shell }); //Rockets - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 1), new Object[] { " T ", "GCG", " P ", 'T', ModItems.ball_dynamite, 'G', ModItems.rocket_fuel, 'C', ModItems.hull_small_aluminium, 'P', ModItems.primer_50 });// I got tired of changing *all* of them, the stock one is always the first one anyway - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 2), new Object[] { " T ", "GCG", " P ", 'T', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.rocket_fuel, 'C', ModItems.hull_small_aluminium, 'P', ModItems.primer_50 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 1), new Object[] { "T", "C", "G", 'T', ModItems.ball_dynamite, 'G', ModItems.rocket_fuel, 'C', ModItems.hull_small_aluminium, });// I got tired of changing *all* of them, the stock one is always the first one anyway + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 2), new Object[] { "T", "C", "G", 'T', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.rocket_fuel, 'C', ModItems.hull_small_aluminium }); CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.HE), new Object[] { "G", "R", 'G', ANY_PLASTICEXPLOSIVE.ingot(), 'R', ModItems.ammo_rocket }); CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.INCENDIARY), new Object[] { "G", "R", 'G', P_RED.dust(), 'R', ModItems.ammo_rocket }); CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.PHOSPHORUS), new Object[] { "G", "R", 'G', P_WHITE.ingot(), 'R', ModItems.ammo_rocket }); @@ -229,24 +252,20 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.CHLORINE), new Object[] { "G", "R", 'G', ModItems.pellet_gas, 'R', ModItems.ammo_rocket }); CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.CANISTER), new Object[] { "G", "R", 'G', ModItems.pellet_canister, 'R', ModItems.ammo_rocket }); CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.NUCLEAR), new Object[] { " P ", "NRN", " P ", 'P', PU239.nugget(), 'N', OreDictManager.getReflector(), 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.DIESEL.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.DIESEL_CRACK.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.PETROIL.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.PETROIL_LEADED.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.GASOLINE.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.GASOLINE_LEADED.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.BIOFUEL.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); + + FluidType[] chainsawTypes = new FluidType[] {Fluids.DIESEL, Fluids.DIESEL_CRACK, Fluids.PETROIL, Fluids.PETROIL_LEADED, Fluids.GASOLINE, Fluids.GASOLINE_LEADED, Fluids.BIOFUEL}; + for(FluidType type : chainsawTypes) CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', type.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); //Stinger Rockets - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket, 2), "CE ", "FSF", " P ", 'C', ModItems.circuit_aluminium, 'E', ANY_PLASTICEXPLOSIVE.ingot(), 'F', ModItems.rocket_fuel, 'S', ModItems.hull_small_aluminium, 'P', ModItems.primer_50); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket, 2), "CE ", " S ", " F ", 'C', ModItems.circuit_aluminium, 'E', ANY_PLASTICEXPLOSIVE.ingot(), 'F', ModItems.rocket_fuel, 'S', ModItems.hull_small_aluminium); CraftingManager.addRecipeAuto(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.HE), new Object[] { "S", "R", 'S', ANY_PLASTICEXPLOSIVE.ingot(), 'R', ModItems.ammo_stinger_rocket }); CraftingManager.addRecipeAuto(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.INCENDIARY), new Object[] { "S", "R", 'S', P_RED.dust(), 'R', ModItems.ammo_stinger_rocket }); CraftingManager.addRecipeAuto(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.NUCLEAR), new Object[] { "RPR", "PSP", "RPR", 'R', ModItems.neutron_reflector, 'P', PU239.nugget(), 'S', ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.HE) }); CraftingManager.addRecipeAuto(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.BONES), new Object[] { " C ", "SKR", " P ", 'C', ModItems.fallout, 'S', SR90.dust(), 'K', ModItems.ammo_stinger_rocket, 'R', RA226.dust(), 'P', PU.dust() }); //40mm grenades - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade, 2), new Object[] { " T ", "GCI", " P ", 'T', ANY_HIGHEXPLOSIVE.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'I', IRON.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.TRACER), new Object[] { " T ", "GCI", " P ", 'T', LAPIS.dust(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'I', IRON.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade, 2), new Object[] { " T ", "GCI", 'T', ANY_HIGHEXPLOSIVE.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'I', IRON.plate() }); + CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.TRACER), new Object[] { " T ", "GCI", 'T', LAPIS.dust(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'I', IRON.plate() }); CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.HE), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', ANY_PLASTICEXPLOSIVE.ingot() }); CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.INCENDIARY), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', P_RED.dust() }); CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.PHOSPHORUS), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', P_WHITE.ingot() }); @@ -255,6 +274,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.NUCLEAR), new Object[] { " P ", "GIG", " P ", 'G', ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.HE), 'I', ModItems.neutron_reflector, 'P', PU239.nugget() }); CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.FINNED), new Object[] { "G", "R", 'G', Items.feather, 'R', ModItems.ammo_grenade }); CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.KAMPF), new Object[] { "G", "R", 'G', ModItems.ammo_rocket, 'R', ModItems.ammo_grenade }); + CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.LEADBURSTER), new Object[] { "LCL", "CHC", "LML", 'L', ModItems.pellet_buckshot, 'C', ANY_SMOKELESS.dust(), 'H', ModItems.hull_small_aluminium, 'M', ModItems.motor }); //240mm Shells CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell, 4), new Object[] { " T ", "GHG", "CCC", 'T', ModBlocks.tnt, 'G', Items.gunpowder, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); @@ -345,9 +365,10 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_pink_cloud), new Object[] { " S ", "ECE", " E ", 'S', ModItems.powder_spark_mix, 'E', ModItems.powder_magic, 'C', ModItems.grenade_cloud }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.nuclear_waste_pearl), new Object[] { "WWW", "WFW", "WWW", 'W', ModItems.nuclear_waste_tiny, 'F', ModBlocks.block_fallout }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.grenade_kyiv), new Object[] { ModItems.canister_napalm, ModItems.bottle2_empty, ModItems.rag }); - + //Sticks of explosives CraftingManager.addRecipeAuto(new ItemStack(ModItems.stick_dynamite, 4), new Object[] { " S ", "PDP", "PDP", 'S', ModItems.safety_fuse, 'P', Items.paper, 'D', ModItems.ball_dynamite }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.stick_dynamite_fishing, 1), new Object[] { ModItems.stick_dynamite, ModItems.stick_dynamite, ModItems.stick_dynamite, Items.paper, ANY_TAR.any() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.stick_tnt, 4), new Object[] { " S ", "PDP", "PDP", 'S', ModBlocks.det_cord, 'P', Items.paper, 'D', ModItems.ball_tnt }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.stick_semtex, 4), new Object[] { " S ", "PDP", "PDP", 'S', ModBlocks.det_cord, 'P', Items.paper, 'D', ModItems.ingot_semtex }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.stick_c4, 4), new Object[] { " S ", "PDP", "PDP", 'S', ModBlocks.det_cord, 'P', Items.paper, 'D', ModItems.ingot_c4 }); @@ -363,7 +384,7 @@ public class WeaponRecipes { //IF Grenades CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_generic, 1), new Object[] { " C ", "PTP", " P ", 'C', ModItems.coil_tungsten, 'P', STEEL.plate(), 'T', Blocks.tnt }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_he, 1), new Object[] { "A", "G", "A", 'G', ModItems.grenade_if_generic, 'A', Items.gunpowder }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_bouncy, 1), new Object[] { "G", "A", 'G', ModItems.grenade_if_generic, 'A', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_bouncy, 1), new Object[] { "G", "A", 'G', ModItems.grenade_if_generic, 'A', ANY_RUBBER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_sticky, 1), new Object[] { "G", "A", 'G', ModItems.grenade_if_generic, 'A', KEY_SLIME }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_impact, 1), new Object[] { "G", "A", 'G', ModItems.grenade_if_generic, 'A', REDSTONE.dust() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_concussion, 1), new Object[] { "G", "A", 'G', ModItems.grenade_if_generic, 'A', Items.glowstone_dust }); @@ -373,7 +394,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_mystery, 1), new Object[] { "A", "G", "A", 'G', ModItems.grenade_if_generic, 'A', ModItems.powder_magic }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_spark, 1), new Object[] { " A ", "AGA", " A ", 'G', ModItems.grenade_if_generic, 'A', ModItems.powder_spark_mix }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_hopwire, 1), new Object[] { " A ", "AGA", " A ", 'G', ModItems.grenade_if_generic, 'A', ModItems.powder_power }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_null, 1), new Object[] { "BAB", "AGA", "BAB", 'G', ModItems.grenade_if_generic, 'A', Blocks.obsidian, 'B', BIGMT.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_null, 1), new Object[] { "BAB", "AGA", "BAB", 'G', ModItems.grenade_if_generic, 'A', ModItems.undefined, 'B', BIGMT.ingot() }); //Mines CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_ap, 4), new Object[] { "C", "P", "T", 'C', ModItems.circuit_targeting_tier2, 'P', IRON.plate(), 'T', ANY_PLASTICEXPLOSIVE.ingot() }); diff --git a/src/main/java/com/hbm/creativetabs/MachineTab.java b/src/main/java/com/hbm/creativetabs/MachineTab.java index 13f3c934f..a24abc8a6 100644 --- a/src/main/java/com/hbm/creativetabs/MachineTab.java +++ b/src/main/java/com/hbm/creativetabs/MachineTab.java @@ -15,8 +15,8 @@ public class MachineTab extends CreativeTabs { @Override public Item getTabIconItem() { - if(ModBlocks.reactor_element != null) - return Item.getItemFromBlock(ModBlocks.reactor_element); + if(ModBlocks.pwr_controller != null) + return Item.getItemFromBlock(ModBlocks.pwr_controller); return Items.iron_pickaxe; } diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 4d56ebc9b..16a452ba5 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -9,16 +9,30 @@ import com.hbm.entity.grenade.*; import com.hbm.entity.item.*; import com.hbm.entity.logic.*; import com.hbm.entity.missile.*; +import com.hbm.entity.missile.EntityMissileTier0.*; +import com.hbm.entity.missile.EntityMissileTier1.*; +import com.hbm.entity.missile.EntityMissileTier2.*; +import com.hbm.entity.missile.EntityMissileTier3.*; +import com.hbm.entity.missile.EntityMissileTier4.*; import com.hbm.entity.mob.*; import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; +import com.hbm.entity.train.EntityRailCarBase.BoundingBoxDummyEntity; +import com.hbm.entity.train.EntityRailCarRidable.SeatDummyEntity; +import com.hbm.entity.train.*; import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Quartet; import cpw.mods.fml.common.registry.EntityRegistry; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EnumCreatureType; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.BiomeDictionary.Type; public class EntityMappings { @@ -44,6 +58,7 @@ public class EntityMappings { addEntity(EntityGrenadeNuke.class, "entity_grenade_nuke", 500); addEntity(EntitySchrab.class, "entity_schrabnel", 500); addEntity(EntityMissileGeneric.class, "entity_missile_generic", 1000); + addEntity(EntityMissileDecoy.class, "entity_missile_decoy", 1000); addEntity(EntityMissileStrong.class, "entity_missile_strong", 1000); addEntity(EntityMissileNuclear.class, "entity_missile_nuclear", 1000); addEntity(EntityMissileCluster.class, "entity_missile_cluster", 1000); @@ -103,7 +118,7 @@ public class EntityMappings { addEntity(EntityTSmokeFX.class, "entity_t_smoke_fx", 1000); addEntity(EntityNukeExplosionMK3.class, "entity_nuke_mk3", 1000); addEntity(EntityVortex.class, "entity_vortex", 250); - addEntity(EntityMeteor.class, "entity_meteor", 1000); + addEntity(EntityMeteor.class, "entity_meteor", 250); addEntity(EntityLaser.class, "entity_laser", 1000); addEntity(EntityBoxcar.class, "entity_boxcar", 1000); addEntity(EntityMissileTaint.class, "entity_missile_taint", 1000); @@ -150,7 +165,7 @@ public class EntityMappings { addEntity(EntityGrenadeIFHopwire.class, "entity_grenade_ironshod_hopwire", 250); addEntity(EntityGrenadeIFNull.class, "entity_grenade_ironshod_null", 250); addEntity(EntityFallingNuke.class, "entity_falling_bomb", 1000); - addEntity(EntityBulletBase.class, "entity_bullet_mk2", 250); + addEntity(EntityBulletBaseNT.class, "entity_bullet_mk3", 250, false); addEntity(EntityMinerRocket.class, "entity_miner_lander", 1000); addEntity(EntityFogFX.class, "entity_nuclear_fog", 1000); addEntity(EntityDuchessGambit.class, "entity_duchessgambit", 1000); @@ -167,6 +182,8 @@ public class EntityMappings { addEntity(EntitySoyuzCapsule.class, "entity_soyuz_capsule", 1000); addEntity(EntityMovingItem.class, "entity_c_item", 1000); addEntity(EntityMovingPackage.class, "entity_c_package", 1000); + addEntity(EntityDeliveryDrone.class, "entity_delivery_drone", 250, false); + addEntity(EntityRequestDrone.class, "entity_request_drone", 250, false); addEntity(EntityCloudTom.class, "entity_moonstone_blast", 1000); addEntity(EntityBeamVortex.class, "entity_vortex_beam", 1000); addEntity(EntityFireworks.class, "entity_firework_ball", 1000); @@ -203,11 +220,25 @@ public class EntityMappings { addEntity(EntityCog.class, "entity_stray_cog", 1000); addEntity(EntitySawblade.class, "entity_stray_saw", 1000); addEntity(EntityChemical.class, "entity_chemthrower_splash", 1000); - addEntity(EntityMist.class, "entity_mist", 1000); + addEntity(EntityMist.class, "entity_mist", 250, false); + addEntity(EntityAcidBomb.class, "entity_acid_bomb", 1000); + addEntity(EntityFallingBlockNT.class, "entity_falling_block_nt", 1000); + addEntity(EntityBoatRubber.class, "entity_rubber_boat", 250, false); + + addEntity(EntityItemWaste.class, "entity_item_waste", 100); + addEntity(EntityItemBuoyant.class, "entity_item_buoyant", 100); + + addEntity(SeatDummyEntity.class, "entity_ntm_seat_dummy", 250, false); + addEntity(BoundingBoxDummyEntity.class, "entity_ntm_bounding_dummy", 250, false); + addEntity(TrainCargoTram.class, "entity_ntm_cargo_tram", 250, false); + addEntity(TrainCargoTramTrailer.class, "entity_ntm_cargo_tram_trailer", 250, false); + addEntity(TrainTunnelBore.class, "entity_ntm_tunnel_bore", 250, false); addMob(EntityCreeperNuclear.class, "entity_mob_nuclear_creeper", 0x204131, 0x75CE00); addMob(EntityCreeperTainted.class, "entity_mob_tainted_creeper", 0x813b9b, 0xd71fdd); addMob(EntityCreeperPhosgene.class, "entity_mob_phosgene_creeper", 0xE3D398, 0xB8A06B); + addMob(EntityCreeperVolatile.class, "entity_mob_volatile_creeper", 0xC28153, 0x4D382C); + addMob(EntityCreeperGold.class, "entity_mob_gold_creeper", 0xECC136, 0x9E8B3E); addMob(EntityHunterChopper.class, "entity_mob_hunter_chopper", 0x000020, 0x2D2D72); addMob(EntityCyberCrab.class, "entity_cyber_crab", 0xAAAAAA, 0x444444); addMob(EntityTeslaCrab.class, "entity_tesla_crab", 0xAAAAAA, 0x440000); @@ -215,12 +246,29 @@ public class EntityMappings { addMob(EntityMaskMan.class, "entity_mob_mask_man", 0x818572, 0xC7C1B7); addMob(EntityDuck.class, "entity_fucc_a_ducc", 0xd0d0d0, 0xFFBF00); addMob(EntityQuackos.class, "entity_elder_one", 0xd0d0d0, 0xFFBF00); + addMob(EntityPigeon.class, "entity_pigeon", 0xC8C9CD, 0x858894); addMob(EntityFBI.class, "entity_ntm_fbi", 0x008000, 0x404040); + addMob(EntityFBIDrone.class, "entity_ntm_fbi_drone", 0x008000, 0x404040); addMob(EntityRADBeast.class, "entity_ntm_radiation_blaze", 0x303030, 0x008000); addMob(EntitySiegeZombie.class, "entity_meme_zombie", 0x303030, 0x008000); addMob(EntitySiegeSkeleton.class, "entity_meme_skeleton", 0x303030, 0x000080); addMob(EntitySiegeUFO.class, "entity_meme_ufo", 0x303030, 0x800000); addMob(EntitySiegeCraft.class, "entity_meme_craft", 0x303030, 0x808000); + addMob(EntityGlyphid.class, "entity_glyphid", 0x724A21, 0xD2BB72); + addMob(EntityGlyphidBrawler.class, "entity_glyphid_brawler", 0x273038, 0xD2BB72); + addMob(EntityGlyphidBehemoth.class, "entity_glyphid_behemoth", 0x267F00, 0xD2BB72); + addMob(EntityGlyphidBrenda.class, "entity_glyphid_brenda", 0x4FC0C0, 0xA0A0A0); + addMob(EntityGlyphidBombardier.class, "entity_glyphid_bombardier", 0xDDD919, 0xDBB79D); + addMob(EntityGlyphidBlaster.class, "entity_glyphid_blaster", 0xD83737, 0xDBB79D); + addMob(EntityGlyphidScout.class, "entity_glyphid_scout", 0x273038, 0xB9E36B); + addMob(EntityGlyphidNuclear.class, "entity_glyphid_nuclear", 0x267F00, 0xA0A0A0); + addMob(EntityPlasticBag.class, "entity_plastic_bag", 0xd0d0d0, 0x808080); + + addSpawn(EntityCreeperPhosgene.class, 5, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); + addSpawn(EntityCreeperVolatile.class, 10, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); + addSpawn(EntityCreeperGold.class, 1, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); + addSpawn(EntityPlasticBag.class, 1, 1, 3, EnumCreatureType.waterCreature, BiomeDictionary.getBiomesForType(Type.OCEAN)); + addSpawn(EntityPigeon.class, 1, 5, 10, EnumCreatureType.creature, BiomeDictionary.getBiomesForType(Type.PLAINS)); int id = 0; for(Quartet, String, Integer, Boolean> entry : entityMappings) { @@ -243,4 +291,26 @@ public class EntityMappings { private static void addMob(Class clazz, String name, int color1, int color2) { mobMappings.add(new Quartet(clazz, name, color1, color2)); } + + public static void addSpawn(Class entityClass, int weightedProb, int min, int max, EnumCreatureType typeOfCreature, BiomeGenBase... biomes) { + + for(BiomeGenBase biome : biomes) { + + if(biome == null) continue; + + List spawns = biome.getSpawnableList(typeOfCreature); + + for(SpawnListEntry entry : spawns) { + // Adjusting an existing spawn entry + if(entry.entityClass == entityClass) { + entry.itemWeight = weightedProb; + entry.minGroupCount = min; + entry.maxGroupCount = max; + break; + } + } + + spawns.add(new SpawnListEntry(entityClass, weightedProb, min, max)); + } + } } diff --git a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java index 079e2ab2c..4eae334d6 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java +++ b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java @@ -4,12 +4,12 @@ import com.hbm.blocks.ModBlocks; import com.hbm.config.BombConfig; import com.hbm.config.FalloutConfigJSON; import com.hbm.config.FalloutConfigJSON.FalloutEntry; +import com.hbm.entity.item.EntityFallingBlockNT; import com.hbm.saveddata.AuxSavedData; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityFallingBlock; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; @@ -178,7 +178,8 @@ public class EntityFalloutRain extends Entity { for(int i = 0; i <= depth; i++) { hardness = worldObj.getBlock(x, y + i, z).getBlockHardness(worldObj, x, y + i, z); if(hardness <= Blocks.stonebrick.getExplosionResistance(null) && hardness >= 0) { - EntityFallingBlock entityfallingblock = new EntityFallingBlock(worldObj, x + 0.5D, y + 0.5D + i, z + 0.5D, worldObj.getBlock(x, y + i, z), worldObj.getBlockMetadata(x, y + i, z)); + EntityFallingBlockNT entityfallingblock = new EntityFallingBlockNT(worldObj, x + 0.5D, y + 0.5D + i, z + 0.5D, worldObj.getBlock(x, y + i, z), worldObj.getBlockMetadata(x, y + i, z)); + entityfallingblock.canDrop = false; //turn off block drops because block dropping was coded by a mule with dementia worldObj.spawnEntityInWorld(entityfallingblock); } } diff --git a/src/main/java/com/hbm/entity/effect/EntityMist.java b/src/main/java/com/hbm/entity/effect/EntityMist.java index 4150a436b..ceb2dc014 100644 --- a/src/main/java/com/hbm/entity/effect/EntityMist.java +++ b/src/main/java/com/hbm/entity/effect/EntityMist.java @@ -16,6 +16,7 @@ import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous_ART; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Viscous; import com.hbm.lib.ModDamageSource; +import com.hbm.main.MainRegistry; import com.hbm.util.ArmorUtil; import com.hbm.util.ContaminationUtil; import com.hbm.util.EntityDamageUtil; @@ -101,10 +102,21 @@ public class EntityMist extends Entity { } else { for(int i = 0; i < 2; i++) { - double x = this.boundingBox.minX + rand.nextDouble() * (this.boundingBox.maxX - this.boundingBox.minX); + double x = this.boundingBox.minX + (rand.nextDouble() - 0.5) * (this.boundingBox.maxX - this.boundingBox.minX); double y = this.boundingBox.minY + rand.nextDouble() * (this.boundingBox.maxY - this.boundingBox.minY); - double z = this.boundingBox.minZ + rand.nextDouble() * (this.boundingBox.maxZ - this.boundingBox.minZ); - worldObj.spawnParticle("cloud", x, y, z, 0, 0, 0); + double z = this.boundingBox.minZ + (rand.nextDouble() - 0.5) * (this.boundingBox.maxZ - this.boundingBox.minZ); + + NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "tower"); + fx.setFloat("lift", 0.5F); + fx.setFloat("base", 0.75F); + fx.setFloat("max", 2F); + fx.setInteger("life", 50 + worldObj.rand.nextInt(10)); + fx.setInteger("color",this.getType().getColor()); + fx.setDouble("posX", x); + fx.setDouble("posY", y); + fx.setDouble("posZ", z); + MainRegistry.proxy.effectNT(fx); } } } @@ -192,11 +204,14 @@ public class EntityMist extends Entity { @Override protected void readEntityFromNBT(NBTTagCompound nbt) { this.setType(Fluids.fromID(nbt.getInteger("type"))); + this.setArea(nbt.getFloat("width"), nbt.getFloat("height")); } @Override protected void writeEntityToNBT(NBTTagCompound nbt) { nbt.setInteger("type", this.getType().getID()); + nbt.setFloat("width", this.dataWatcher.getWatchableObjectFloat(11)); + nbt.setFloat("height", this.dataWatcher.getWatchableObjectFloat(12)); } @Override @@ -204,6 +219,12 @@ public class EntityMist extends Entity { public boolean canRenderOnFire() { return false; } + + @Override public void moveEntity(double x, double y, double z) { } + @Override public void addVelocity(double x, double y, double z) { } + @Override public void setPosition(double x, double y, double z) { + if(this.ticksExisted == 0) super.setPosition(x, y, z); //honest to fucking god mojang suck my fucking nuts + } public static SprayStyle getStyleFromType(FluidType type) { diff --git a/src/main/java/com/hbm/entity/effect/EntityNukeCloudSmall.java b/src/main/java/com/hbm/entity/effect/EntityNukeCloudSmall.java index b2794a939..2aee5b349 100644 --- a/src/main/java/com/hbm/entity/effect/EntityNukeCloudSmall.java +++ b/src/main/java/com/hbm/entity/effect/EntityNukeCloudSmall.java @@ -9,6 +9,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.World; +@Deprecated public class EntityNukeCloudSmall extends Entity { public int maxAge = 1000; diff --git a/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java b/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java index b93311496..56f2a9f67 100644 --- a/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java +++ b/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java @@ -2,6 +2,8 @@ package com.hbm.entity.effect; import java.util.ArrayList; +import com.hbm.util.TrackerUtil; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; @@ -34,12 +36,25 @@ public class EntityNukeTorex extends Entity { @Override protected void entityInit() { this.dataWatcher.addObject(10, new Float(1)); + this.dataWatcher.addObject(11, new Integer(0)); + } + + @Override + @SideOnly(Side.CLIENT) + public int getBrightnessForRender(float p_70070_1_) { + return 15728880; + } + + @Override + public float getBrightness(float p_70013_1_) { + return 1.0F; } @Override public void onUpdate() { double s = this.getScale(); + double cs = 1.5; int maxAge = this.getMaxAge(); if(worldObj.isRemote) { @@ -48,7 +63,7 @@ public class EntityNukeTorex extends Entity { lastSpawnY = posY - 3; } - int spawnTarget = worldObj.getHeightValue((int) Math.floor(posX), (int) Math.floor(posZ)) - 3; + int spawnTarget = Math.max(worldObj.getHeightValue((int) Math.floor(posX), (int) Math.floor(posZ)) - 3, 1); double moveSpeed = 0.5D; if(Math.abs(spawnTarget - lastSpawnY) < moveSpeed) { @@ -57,6 +72,7 @@ public class EntityNukeTorex extends Entity { lastSpawnY += moveSpeed * Math.signum(spawnTarget - lastSpawnY); } + // spawn mush clouds double range = (torusWidth - rollerSize) * 0.25; double simSpeed = getSimulationSpeed(); int toSpawn = (int) Math.ceil(10 * simSpeed * simSpeed); @@ -66,14 +82,15 @@ public class EntityNukeTorex extends Entity { double x = posX + rand.nextGaussian() * range; double z = posZ + rand.nextGaussian() * range; Cloudlet cloud = new Cloudlet(x, lastSpawnY, z, (float)(rand.nextDouble() * 2D * Math.PI), 0, lifetime); - cloud.setScale(1F + this.ticksExisted * 0.005F * (float) s, 5F * (float) s); + cloud.setScale(1F + this.ticksExisted * 0.005F * (float) cs, 5F * (float) cs); cloudlets.add(cloud); } - if(ticksExisted < 50) { + // spawn shock clouds + if(ticksExisted < 100) { int cloudCount = ticksExisted * 5; - int shockLife = 200 - ticksExisted * 9 / 10; + int shockLife = Math.max(300 - ticksExisted * 20, 50); for(int i = 0; i < cloudCount; i++) { Vec3 vec = Vec3.createVectorHelper((ticksExisted * 2 + rand.nextDouble()) * 2, 0, 0); @@ -85,6 +102,15 @@ public class EntityNukeTorex extends Entity { } } + // spawn ring clouds + if(ticksExisted < 200) { + for(int i = 0; i < 2; i++) { + Cloudlet cloud = new Cloudlet(posX, posY + coreHeight, posZ, (float)(rand.nextDouble() * 2D * Math.PI), 0, lifetime, TorexType.RING); + cloud.setScale(1F + this.ticksExisted * 0.005F * (float) cs * 0.5F, 3F * (float) (cs * s)); + cloudlets.add(cloud); + } + } + for(Cloudlet cloud : cloudlets) { cloud.update(); } @@ -104,6 +130,20 @@ public class EntityNukeTorex extends Entity { } } + public EntityNukeTorex setScale(float scale) { + getDataWatcher().updateObject(10, scale); + this.coreHeight = this.coreHeight / 1.5D * scale; + this.convectionHeight = this.convectionHeight / 1.5D * scale; + this.torusWidth = this.torusWidth / 1.5D * scale; + this.rollerSize = this.rollerSize / 1.5D * scale; + return this; + } + + public EntityNukeTorex setType(int type) { + this.dataWatcher.updateObject(11, type); + return this; + } + public double getSimulationSpeed() { int lifetime = getMaxAge(); @@ -151,7 +191,7 @@ public class EntityNukeTorex extends Entity { if(life > fadeOut) { float fac = (float)(life - fadeOut) / (float)(lifetime - fadeOut); - return 1F - fac * fac; + return 1F - fac; } return 1.0F; @@ -181,8 +221,13 @@ public class EntityNukeTorex extends Entity { public float colorMod = 1.0F; public Vec3 color; public Vec3 prevColor; + public TorexType type; public Cloudlet(double posX, double posY, double posZ, float angle, int age, int maxAge) { + this(posX, posY, posZ, angle, age, maxAge, TorexType.STANDARD); + } + + public Cloudlet(double posX, double posY, double posZ, float angle, int age, int maxAge, TorexType type) { this.posX = posX; this.posY = posY; this.posZ = posZ; @@ -191,10 +236,9 @@ public class EntityNukeTorex extends Entity { this.angle = angle; this.rangeMod = 0.3F + rand.nextFloat() * 0.7F; this.colorMod = 0.8F + rand.nextFloat() * 0.2F; + this.type = type; this.updateColor(); - - //TODO: add movement types which excludes ground dust from convection sim, then let centered ground dust linger for longer } private void update() { @@ -212,14 +256,21 @@ public class EntityNukeTorex extends Entity { Vec3 simPos = Vec3.createVectorHelper(EntityNukeTorex.this.posX - this.posX, 0, EntityNukeTorex.this.posZ - this.posZ); double simPosX = EntityNukeTorex.this.posX + simPos.lengthVector(); double simPosZ = EntityNukeTorex.this.posZ + 0D; - - Vec3 convection = getConvectionMotion(simPosX, simPosZ); - Vec3 lift = getLiftMotion(simPosX, simPosZ); - double factor = MathHelper.clamp_double((this.posY - EntityNukeTorex.this.posY) / EntityNukeTorex.this.coreHeight, 0, 1); - this.motionX = convection.xCoord * factor + lift.xCoord * (1D - factor); - this.motionY = convection.yCoord * factor + lift.yCoord * (1D - factor); - this.motionZ = convection.zCoord * factor + lift.zCoord * (1D - factor); + if(this.type == TorexType.STANDARD) { + Vec3 convection = getConvectionMotion(simPosX, simPosZ); + Vec3 lift = getLiftMotion(simPosX, simPosZ); + + double factor = MathHelper.clamp_double((this.posY - EntityNukeTorex.this.posY) / EntityNukeTorex.this.coreHeight, 0, 1); + this.motionX = convection.xCoord * factor + lift.xCoord * (1D - factor); + this.motionY = convection.yCoord * factor + lift.yCoord * (1D - factor); + this.motionZ = convection.zCoord * factor + lift.zCoord * (1D - factor); + } else if(this.type == TorexType.RING) { + Vec3 motion = getRingMotion(simPosX, simPosZ); + this.motionX = motion.xCoord; + this.motionY = motion.yCoord; + this.motionZ = motion.zCoord; + } double mult = this.motionMult * getSimulationSpeed(); @@ -230,6 +281,67 @@ public class EntityNukeTorex extends Entity { this.updateColor(); } + private Vec3 getRingMotion(double simPosX, double simPosZ) { + + /*Vec3 targetPos = Vec3.createVectorHelper( + (EntityNukeTorex.this.posX + torusWidth * 1), + (EntityNukeTorex.this.posY + coreHeight * 0.5), + EntityNukeTorex.this.posZ); + + Vec3 delta = Vec3.createVectorHelper(targetPos.xCoord - simPosX, targetPos.yCoord - this.posY, targetPos.zCoord - simPosZ); + + double speed = 0.125D; + delta.xCoord *= speed; + delta.yCoord *= speed; + delta.zCoord *= speed; + + delta.rotateAroundY(this.angle); + return delta;*/ + + if(simPosX > EntityNukeTorex.this.posX + torusWidth * 2) + return Vec3.createVectorHelper(0, 0, 0); + + /* the position of the torus' outer ring center */ + Vec3 torusPos = Vec3.createVectorHelper( + (EntityNukeTorex.this.posX + torusWidth), + (EntityNukeTorex.this.posY + coreHeight * 0.5), + EntityNukeTorex.this.posZ); + + /* the difference between the cloudlet and the torus' ring center */ + Vec3 delta = Vec3.createVectorHelper(torusPos.xCoord - simPosX, torusPos.yCoord - this.posY, torusPos.zCoord - simPosZ); + + /* the distance this cloudlet wants to achieve to the torus' ring center */ + double roller = EntityNukeTorex.this.rollerSize * this.rangeMod * 0.25; + /* the distance between this cloudlet and the torus' outer ring perimeter */ + double dist = delta.lengthVector() / roller - 1D; + + /* euler function based on how far the cloudlet is away from the perimeter */ + double func = 1D - Math.pow(Math.E, -dist); // [0;1] + /* just an approximation, but it's good enough */ + float angle = (float) (func * Math.PI * 0.5D); // [0;90°] + + /* vector going from the ring center in the direction of the cloudlet, stopping at the perimeter */ + Vec3 rot = Vec3.createVectorHelper(-delta.xCoord / dist, -delta.yCoord / dist, -delta.zCoord / dist); + /* rotate by the approximate angle */ + rot.rotateAroundZ(angle); + + /* the direction from the cloudlet to the target position on the perimeter */ + Vec3 motion = Vec3.createVectorHelper( + torusPos.xCoord + rot.xCoord - simPosX, + torusPos.yCoord + rot.yCoord - this.posY, + torusPos.zCoord + rot.zCoord - simPosZ); + + double speed = 0.001D; + motion.xCoord *= speed; + motion.yCoord *= speed; + motion.zCoord *= speed; + + motion = motion.normalize(); + motion.rotateAroundY(this.angle); + + return motion; + } + /* simulated on a 2D-plane along the X/Y axis */ private Vec3 getConvectionMotion(double simPosX, double simPosZ) { @@ -245,7 +357,6 @@ public class EntityNukeTorex extends Entity { /* the difference between the cloudlet and the torus' ring center */ Vec3 delta = Vec3.createVectorHelper(torusPos.xCoord - simPosX, torusPos.yCoord - this.posY, torusPos.zCoord - simPosZ); - /* the distance this cloudlet wants to achieve to the torus' ring center */ double roller = EntityNukeTorex.this.rollerSize * this.rangeMod; /* the distance between this cloudlet and the torus' outer ring perimeter */ @@ -304,11 +415,21 @@ public class EntityNukeTorex extends Entity { dist = Math.max(dist, 1); double col = 2D / dist; - this.color = Vec3.createVectorHelper( - Math.max(col * 2, 0.25), - Math.max(col * 1.5, 0.25), - Math.max(col * 0.5, 0.25) - ); + int type = EntityNukeTorex.this.dataWatcher.getWatchableObjectInt(11); + + if(type == 1) { + this.color = Vec3.createVectorHelper( + Math.max(col * 1, 0.25), + Math.max(col * 2, 0.25), + Math.max(col * 0.5, 0.25) + ); + } else { + this.color = Vec3.createVectorHelper( + Math.max(col * 2, 0.25), + Math.max(col * 1.5, 0.25), + Math.max(col * 0.5, 0.25) + ); + } } public Vec3 getInterpPos(float interp) { @@ -320,6 +441,11 @@ public class EntityNukeTorex extends Entity { public Vec3 getInterpColor(float interp) { double greying = EntityNukeTorex.this.getGreying(); + + if(this.type == TorexType.RING) { + greying += 1; + } + return Vec3.createVectorHelper( (prevColor.xCoord + (color.xCoord - prevColor.xCoord) * interp) * greying, (prevColor.yCoord + (color.yCoord - prevColor.yCoord) * interp) * greying, @@ -350,16 +476,33 @@ public class EntityNukeTorex extends Entity { return this; } } + + public static enum TorexType { + STANDARD, + RING + } - @Override - protected void readEntityFromNBT(NBTTagCompound nbt) { } - - @Override - protected void writeEntityToNBT(NBTTagCompound nbt) { } + @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } + @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; } + @Override public void readEntityFromNBT(NBTTagCompound nbt) { this.setDead(); } @Override @SideOnly(Side.CLIENT) public boolean isInRangeToRenderDist(double distance) { return true; } + + public static void statFac(World world, double x, double y, double z, float scale) { + EntityNukeTorex torex = new EntityNukeTorex(world).setScale(MathHelper.clamp_float(scale * 0.01F, 0.5F, 5F)); + torex.setPosition(x, y, z); + world.spawnEntityInWorld(torex); + TrackerUtil.setTrackingRange(world, torex, 1000); + } + + public static void statFacBale(World world, double x, double y, double z, float scale) { + EntityNukeTorex torex = new EntityNukeTorex(world).setScale(MathHelper.clamp_float(scale * 0.01F, 0.5F, 5F)).setType(1); + torex.setPosition(x, y, z); + world.spawnEntityInWorld(torex); + TrackerUtil.setTrackingRange(world, torex, 1000); + } } diff --git a/src/main/java/com/hbm/entity/grenade/EntityGrenadeBouncyGeneric.java b/src/main/java/com/hbm/entity/grenade/EntityGrenadeBouncyGeneric.java index cc440ec35..05f5326dd 100644 --- a/src/main/java/com/hbm/entity/grenade/EntityGrenadeBouncyGeneric.java +++ b/src/main/java/com/hbm/entity/grenade/EntityGrenadeBouncyGeneric.java @@ -40,7 +40,7 @@ public class EntityGrenadeBouncyGeneric extends EntityGrenadeBouncyBase implemen @Override public void explode() { - getGrenade().explode(worldObj, posX, posY, posZ); + getGrenade().explode(this, this.getThrower(), worldObj, posX, posY, posZ); this.setDead(); } diff --git a/src/main/java/com/hbm/entity/grenade/EntityGrenadeGas.java b/src/main/java/com/hbm/entity/grenade/EntityGrenadeGas.java index 5526b87a0..20be9af9c 100644 --- a/src/main/java/com/hbm/entity/grenade/EntityGrenadeGas.java +++ b/src/main/java/com/hbm/entity/grenade/EntityGrenadeGas.java @@ -5,7 +5,8 @@ import net.minecraft.world.World; import java.util.Random; -import com.hbm.explosion.ExplosionChaos; +import com.hbm.entity.effect.EntityMist; +import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.items.weapon.ItemGrenade; @@ -30,21 +31,12 @@ public class EntityGrenadeGas extends EntityGrenadeBouncyBase { if (!this.worldObj.isRemote) { this.setDead(); this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 0.0F, true); - // ExplosionChaos.poison(this.worldObj, (int)this.posX, - // (int)this.posY, (int)this.posZ, 5); - // for(int i = 0; 0 < 15; i++) { - - /* - * ExplosionLarge.spawnParticlesRadial(worldObj, posX, posY, posZ, - * 50); ExplosionLarge.spawnParticlesRadial(worldObj, posX, posY, - * posZ, 50); ExplosionLarge.spawnParticlesRadial(worldObj, posX, - * posY, posZ, 50); ExplosionLarge.spawnParticlesRadial(worldObj, - * posX, posY, posZ, 50); - */ - - ExplosionChaos.spawnChlorine(worldObj, posX, posY, posZ, 50, 1.25, 0); - - // } + + EntityMist mist = new EntityMist(worldObj); + mist.setType(Fluids.CHLORINE); + mist.setPosition(posX, posY - 5, posZ); + mist.setArea(15, 10); + worldObj.spawnEntityInWorld(mist); } } diff --git a/src/main/java/com/hbm/entity/grenade/EntityGrenadeIFNull.java b/src/main/java/com/hbm/entity/grenade/EntityGrenadeIFNull.java index 601381cee..98da6e84c 100644 --- a/src/main/java/com/hbm/entity/grenade/EntityGrenadeIFNull.java +++ b/src/main/java/com/hbm/entity/grenade/EntityGrenadeIFNull.java @@ -8,52 +8,51 @@ import com.hbm.items.weapon.ItemGrenade; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; import net.minecraft.world.World; public class EntityGrenadeIFNull extends EntityGrenadeBouncyBase { - public EntityGrenadeIFNull(World p_i1773_1_) - { - super(p_i1773_1_); - } + public EntityGrenadeIFNull(World world) { + super(world); + } - public EntityGrenadeIFNull(World p_i1774_1_, EntityLivingBase p_i1774_2_) - { - super(p_i1774_1_, p_i1774_2_); - } + public EntityGrenadeIFNull(World world, EntityLivingBase thrower) { + super(world, thrower); + } - public EntityGrenadeIFNull(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) - { - super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); - } + public EntityGrenadeIFNull(World world, double x, double y, double z) { + super(world, x, y, z); + } - @Override - public void explode() { - - if (!this.worldObj.isRemote) - { - this.setDead(); + @Override + public void explode() { - for(int a = -3; a <= 3; a++) - for(int b = -3; b <= 3; b++) - for(int c = -3; c <= 3; c++) - worldObj.setBlockToAir((int)posX + a, (int)posY + b, (int)posZ + c); - - List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox((int)posX + 0.5 - 3, (int)posY + 0.5 - 3, (int)posZ + 0.5 - 3, (int)posX + 0.5 + 3, (int)posY + 0.5 + 3, (int)posZ + 0.5 + 3)); - - for(Object o : list) { - if(o instanceof EntityLivingBase) { - EntityLivingBase e = (EntityLivingBase)o; - - e.setHealth(0); - } else if(o instanceof Entity) { - Entity e = (Entity)o; - - e.setDead(); - } - } - } - } + if(!this.worldObj.isRemote) { + this.setDead(); + + int range = 5; + + for(int a = -range; a <= range; a++) + for(int b = -range; b <= range; b++) + for(int c = -range; c <= range; c++) + worldObj.setBlockToAir((int) Math.floor(posX + a), (int) Math.floor(posY + b), (int) Math.floor(posZ + c)); + + List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, + AxisAlignedBB.getBoundingBox((int) posX + 0.5 - 3, (int) posY + 0.5 - 3, (int) posZ + 0.5 - 3, (int) posX + 0.5 + 3, (int) posY + 0.5 + 3, (int) posZ + 0.5 + 3)); + + for(Object o : list) { + if(o instanceof EntityLivingBase) { + EntityLivingBase e = (EntityLivingBase) o; + e.setHealth(0); + e.onDeath(DamageSource.outOfWorld); + } else if(o instanceof Entity) { + Entity e = (Entity) o; + e.setDead(); + } + } + } + } @Override protected int getMaxTimer() { diff --git a/src/main/java/com/hbm/entity/grenade/EntityGrenadeImpactGeneric.java b/src/main/java/com/hbm/entity/grenade/EntityGrenadeImpactGeneric.java index febe81373..82d4e89ca 100644 --- a/src/main/java/com/hbm/entity/grenade/EntityGrenadeImpactGeneric.java +++ b/src/main/java/com/hbm/entity/grenade/EntityGrenadeImpactGeneric.java @@ -42,7 +42,7 @@ public class EntityGrenadeImpactGeneric extends EntityGrenadeBase implements IGe public void explode() { if(!this.worldObj.isRemote && getGrenade() != null) { - getGrenade().explode(worldObj, posX, posY, posZ); + getGrenade().explode(this, this.getThrower(), worldObj, posX, posY, posZ); this.setDead(); } } diff --git a/src/main/java/com/hbm/entity/item/EntityBoatRubber.java b/src/main/java/com/hbm/entity/item/EntityBoatRubber.java new file mode 100644 index 000000000..bcf638c7a --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityBoatRubber.java @@ -0,0 +1,491 @@ +package com.hbm.entity.item; + +import java.util.List; + +import com.hbm.items.ModItems; +import com.hbm.util.TrackerUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.EntityTrackerEntry; +import net.minecraft.entity.item.EntityBoat; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; + +public class EntityBoatRubber extends Entity { + + private boolean isBoatEmpty; + private double speedMultiplier; + private int boatPosRotationIncrements; + private double boatX; + private double boatY; + private double boatZ; + private double boatYaw; + private double boatPitch; + @SideOnly(Side.CLIENT) private double velocityX; + @SideOnly(Side.CLIENT) private double velocityY; + @SideOnly(Side.CLIENT) private double velocityZ; + public float prevRenderYaw; + + public EntityBoatRubber(World world) { + super(world); + this.isBoatEmpty = true; + this.speedMultiplier = 0.07D; + this.preventEntitySpawning = true; + this.setSize(1.5F, 0.6F); + this.yOffset = this.height / 2.0F; + } + + public EntityBoatRubber(World world, double x, double y, double z) { + this(world); + this.setPosition(x, y + (double) this.yOffset, z); + this.motionX = 0.0D; + this.motionY = 0.0D; + this.motionZ = 0.0D; + this.prevPosX = x; + this.prevPosY = y; + this.prevPosZ = z; + } + + protected void entityInit() { + this.dataWatcher.addObject(17, new Integer(0)); + this.dataWatcher.addObject(18, new Integer(1)); + this.dataWatcher.addObject(19, new Float(0.0F)); + } + + @Override + protected boolean canTriggerWalking() { + return false; + } + + @Override + public AxisAlignedBB getCollisionBox(Entity entity) { + return entity.boundingBox; + } + @Override + public AxisAlignedBB getBoundingBox() { + return this.boundingBox; + } + @Override + public boolean canBePushed() { + return true; + } + @Override + public double getMountedYOffset() { + return (double) this.height * 0.0D - 0.3D; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + if(this.isEntityInvulnerable()) { + return false; + } else if(!this.worldObj.isRemote && !this.isDead) { + this.setForwardDirection(-this.getForwardDirection()); + this.setTimeSinceHit(10); + this.setDamageTaken(this.getDamageTaken() + amount * 10.0F); + this.setBeenAttacked(); + boolean hitByCreative = source.getEntity() instanceof EntityPlayer && ((EntityPlayer) source.getEntity()).capabilities.isCreativeMode; + + if(hitByCreative || this.getDamageTaken() > 40.0F) { + if(this.riddenByEntity != null) { + this.riddenByEntity.mountEntity(this); + } + + if(!hitByCreative) { + this.dropBoat(); + } + + this.setDead(); + } + + return true; + } else { + return true; + } + } + + @Override + @SideOnly(Side.CLIENT) + public void performHurtAnimation() { + this.setForwardDirection(-this.getForwardDirection()); + this.setTimeSinceHit(10); + this.setDamageTaken(this.getDamageTaken() * 11.0F); + } + + @Override + public boolean canBeCollidedWith() { + return !this.isDead; + } + + @Override + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double x, double y, double z, float yaw, float pitch, int interp) { + if(this.isBoatEmpty) { + this.boatPosRotationIncrements = interp; + } else { + double d3 = x - this.posX; + double d4 = y - this.posY; + double d5 = z - this.posZ; + double d6 = d3 * d3 + d4 * d4 + d5 * d5; + + if(d6 <= 1.0D) { + return; + } + + this.boatPosRotationIncrements = 3; + } + + this.boatX = x; + this.boatY = y; + this.boatZ = z; + this.boatYaw = (double) yaw; + this.boatPitch = (double) pitch; + this.motionX = this.velocityX; + this.motionY = this.velocityY; + this.motionZ = this.velocityZ; + } + + @Override + @SideOnly(Side.CLIENT) + public void setVelocity(double x, double y, double z) { + this.velocityX = this.motionX = x; + this.velocityY = this.motionY = y; + this.velocityZ = this.motionZ = z; + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(this.getTimeSinceHit() > 0) { + this.setTimeSinceHit(this.getTimeSinceHit() - 1); + } + + if(this.getDamageTaken() > 0.0F) { + this.setDamageTaken(this.getDamageTaken() - 1.0F); + } + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + byte b0 = 5; + double d0 = 0.0D; + + for(int i = 0; i < b0; ++i) { + double d1 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double) (i + 0) / (double) b0 - 0.125D; + double d3 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double) (i + 1) / (double) b0 - 0.125D; + AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox(this.boundingBox.minX, d1, this.boundingBox.minZ, this.boundingBox.maxX, d3, this.boundingBox.maxZ); + + if(this.worldObj.isAABBInMaterial(axisalignedbb, Material.water)) { + d0 += 1.0D / (double) b0; + } + } + + if(this.worldObj.isRemote && this.isBoatEmpty) { + if(this.boatPosRotationIncrements > 0) { + double x = this.posX + (this.boatX - this.posX) / (double) this.boatPosRotationIncrements; + double y = this.posY + (this.boatY - this.posY) / (double) this.boatPosRotationIncrements; + double z = this.posZ + (this.boatZ - this.posZ) / (double) this.boatPosRotationIncrements; + double yaw = MathHelper.wrapAngleTo180_double(this.boatYaw - (double) this.rotationYaw); + this.rotationYaw = (float) ((double) this.rotationYaw + yaw / (double) this.boatPosRotationIncrements); + this.rotationPitch = (float) ((double) this.rotationPitch + (this.boatPitch - (double) this.rotationPitch) / (double) this.boatPosRotationIncrements); + --this.boatPosRotationIncrements; + this.setPosition(x, y, z); + + } else { + double x = this.posX + this.motionX; + double y = this.posY + this.motionY; + double z = this.posZ + this.motionZ; + this.setPosition(x, y, z); + + if(this.onGround) { + this.motionX *= 0.5D; + this.motionY *= 0.5D; + this.motionZ *= 0.5D; + } + + this.passiveDeccelerate(); + } + } else { + if(d0 < 1.0D) { + double d2 = d0 * 2.0D - 1.0D; + this.motionY += 0.04D * d2; + } else { + if(this.motionY < 0.0D) { + this.motionY /= 2.0D; + } + + this.motionY += 0.007000000216066837D; + } + + double prevSpeedSq = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); + + this.isAirBorne = false; + + if(this.riddenByEntity != null && this.riddenByEntity instanceof EntityLivingBase) { + EntityLivingBase entitylivingbase = (EntityLivingBase) this.riddenByEntity; + + if(entitylivingbase.moveForward != 0 || entitylivingbase.moveStrafing != 0) { + + Vec3 dir = Vec3.createVectorHelper(0, 0, 1); + dir.rotateAroundY((float) -((this.rotationYaw + 90) * Math.PI / 180D)); + this.motionX += dir.xCoord * this.speedMultiplier * entitylivingbase.moveForward * 0.05D; + this.motionZ += dir.zCoord * this.speedMultiplier * entitylivingbase.moveForward * 0.05D; + + float prevYaw = this.rotationYaw; + this.rotationYaw -= entitylivingbase.moveStrafing * 3; + + Vec3 newMotion = Vec3.createVectorHelper(motionX, 0, motionZ); + newMotion.rotateAroundY((float) (-(this.rotationYaw - prevYaw) * Math.PI / 180D)); + this.motionX = newMotion.xCoord; + this.motionZ = newMotion.zCoord; + + //HOLY HELL! if we don't shit ourselves over packets and send them at proper intervals, entities are suddenly smooth! who would have thought! mojang certainly didn't! + EntityTrackerEntry entry = TrackerUtil.getTrackerEntry((WorldServer) worldObj, this.getEntityId()); + entry.lastYaw = MathHelper.floor_float(this.rotationYaw * 256.0F / 360.0F) + 10; //force-trigger rotation update + } + } else { + this.motionX *= 0.95D; + this.motionY *= 0.95D; + this.motionZ *= 0.95D; + } + + double speedSq = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); + + if(speedSq > 0.5D) { + double d4 = 0.5D / speedSq; + this.motionX *= d4; + this.motionZ *= d4; + speedSq = 0.5D; + } + + if(speedSq > prevSpeedSq && this.speedMultiplier < 0.5D) { + this.speedMultiplier += (0.5D - this.speedMultiplier) / 50.0D; + + if(this.speedMultiplier > 0.5D) { + this.speedMultiplier = 0.5D; + } + } else { + this.speedMultiplier -= (this.speedMultiplier - 0.07D) / 35.0D; + + if(this.speedMultiplier < 0.07D) { + this.speedMultiplier = 0.07D; + } + } + + for(int index = 0; index < 4; ++index) { + int x = MathHelper.floor_double(this.posX + ((double) (index % 2) - 0.5D) * 0.8D); + int z = MathHelper.floor_double(this.posZ + ((double) (index / 2) - 0.5D) * 0.8D); + + for(int yOff = 0; yOff < 2; ++yOff) { + int y = MathHelper.floor_double(this.posY) + yOff; + Block block = this.worldObj.getBlock(x, y, z); + + if(block == Blocks.snow_layer) { + this.worldObj.setBlockToAir(x, y, z); + this.isCollidedHorizontally = false; + } else if(block == Blocks.waterlily) { + this.worldObj.func_147480_a(x, y, z, true); + this.isCollidedHorizontally = false; + } + } + } + + if(this.onGround) { + this.motionX *= 0.5D; + this.motionY *= 0.5D; + this.motionZ *= 0.5D; + } + + this.moveEntity(this.motionX, this.motionY, this.motionZ); + + if(this.isCollidedHorizontally && prevSpeedSq > 0.2D) { + this.motionX *= 0.25D; + this.motionY *= 0.25D; + this.motionZ *= 0.25D; + + } else { + this.passiveDeccelerate(); + } + + this.rotationPitch = 0.0F; + + if(!(this.riddenByEntity instanceof EntityLivingBase)) { + double yaw = (double) this.rotationYaw; + double deltaX = this.prevPosX - this.posX; + double deltaZ = this.prevPosZ - this.posZ; + + if(deltaX * deltaX + deltaZ * deltaZ > 0.001D) { + yaw = (double) ((float) (Math.atan2(deltaZ, deltaX) * 180.0D / Math.PI)); + } + + double rotationSpeed = MathHelper.wrapAngleTo180_double(yaw - (double) this.rotationYaw); + + if(rotationSpeed > 20.0D) { + rotationSpeed = 20.0D; + } + + if(rotationSpeed < -20.0D) { + rotationSpeed = -20.0D; + } + + this.rotationYaw = (float) ((double) this.rotationYaw + rotationSpeed); + } + + this.setRotation(this.rotationYaw, this.rotationPitch); + + if(!this.worldObj.isRemote) { + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(0.2D, 0.0D, 0.2D)); + + if(list != null && !list.isEmpty()) { + for(int k1 = 0; k1 < list.size(); ++k1) { + Entity entity = (Entity) list.get(k1); + + if(entity != this.riddenByEntity && entity.canBePushed() && (entity instanceof EntityBoatRubber || entity instanceof EntityBoat)) { + entity.applyEntityCollision(this); + } + } + } + + if(this.riddenByEntity != null && this.riddenByEntity.isDead) { + this.riddenByEntity = null; + } + } + } + + double moX = this.prevPosX - this.posX; + double moZ = this.prevPosZ - this.posZ; + double prevSpeedSq = Math.sqrt(moX * moX + moZ * moZ); + + if(prevSpeedSq > 0.2625D) { + double cosYaw = Math.cos(this.rotationYaw * Math.PI / 180.0D); + double sinYaw = Math.sin(this.rotationYaw * Math.PI / 180.0D); + + for(double j = 0; j < 1.0D + prevSpeedSq * 60.0D; ++j) { + double offset = (double) (this.rand.nextFloat() * 2.0F - 1.0F); + double side = (double) (this.rand.nextInt(2) * 2 - 1) * 0.7D; + double magX; + double magZ; + + if(this.rand.nextBoolean()) { + magX = this.posX - cosYaw * offset * 0.8D + sinYaw * side; + magZ = this.posZ - sinYaw * offset * 0.8D - cosYaw * side; + this.worldObj.spawnParticle("splash", magX, this.posY - 0.125D, magZ, moX, 0.1, moZ); + } else { + magX = this.posX + cosYaw + sinYaw * offset * 0.7D; + magZ = this.posZ + sinYaw - cosYaw * offset * 0.7D; + this.worldObj.spawnParticle("splash", magX, this.posY - 0.125D, magZ, moX, 0.1, moZ); + } + } + } + } + + protected void passiveDeccelerate() { + this.motionX *= 0.99D; + this.motionY *= 0.95D; + this.motionZ *= 0.99D; + } + + @Override + public void updateRiderPosition() { + if(this.riddenByEntity != null) { + double offX = Math.cos((double) this.rotationYaw * Math.PI / 180.0D) * 0.4D; + double offZ = Math.sin((double) this.rotationYaw * Math.PI / 180.0D) * 0.4D; + this.riddenByEntity.setPosition(this.posX + offX, this.posY + this.getMountedYOffset() + this.riddenByEntity.getYOffset(), this.posZ + offZ); + + if(this.riddenByEntity instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) this.riddenByEntity; + player.renderYawOffset = MathHelper.wrapAngleTo180_float(this.rotationYaw + 90F); + } + } + } + + @Override protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { } + @Override protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { } + + @Override + @SideOnly(Side.CLIENT) + public float getShadowSize() { + return 0.0F; + } + + @Override + public boolean interactFirst(EntityPlayer player) { + if(this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != player) { + return true; + } else { + if(!this.worldObj.isRemote) { + player.mountEntity(this); + } + + return true; + } + } + + @Override + protected void updateFallState(double fall, boolean onGround) { + int x = MathHelper.floor_double(this.posX); + int y = MathHelper.floor_double(this.posY); + int z = MathHelper.floor_double(this.posZ); + + if(onGround) { + if(this.fallDistance > 5.0F) { + this.fall(this.fallDistance); + + if(!this.worldObj.isRemote && !this.isDead) { + this.setDead(); + this.dropBoat(); + } + + this.fallDistance = 0.0F; + } + } else if(this.worldObj.getBlock(x, y - 1, z).getMaterial() != Material.water && fall < 0.0D) { + this.fallDistance = (float) ((double) this.fallDistance - fall); + } + } + + public void dropBoat() { + this.func_145778_a(ModItems.boat_rubber, 1, 0.0F); + } + + public void setDamageTaken(float amount) { + this.dataWatcher.updateObject(19, Float.valueOf(amount)); + } + + public float getDamageTaken() { + return this.dataWatcher.getWatchableObjectFloat(19); + } + + public void setTimeSinceHit(int time) { + this.dataWatcher.updateObject(17, Integer.valueOf(time)); + } + + public int getTimeSinceHit() { + return this.dataWatcher.getWatchableObjectInt(17); + } + + public void setForwardDirection(int dir) { + this.dataWatcher.updateObject(18, Integer.valueOf(dir)); + } + + public int getForwardDirection() { + return this.dataWatcher.getWatchableObjectInt(18); + } + + @SideOnly(Side.CLIENT) + public void setIsBoatEmpty(boolean empty) { + this.isBoatEmpty = empty; + } +} diff --git a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java new file mode 100644 index 000000000..531c19d3d --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java @@ -0,0 +1,197 @@ +package com.hbm.entity.item; + +import com.hbm.entity.logic.IChunkLoader; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; + +public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, IChunkLoader { + + protected ItemStack[] slots = new ItemStack[this.getSizeInventory()]; + public FluidStack fluid; + + private Ticket loaderTicket; + public boolean isChunkLoading = false; + + public EntityDeliveryDrone(World world) { + super(world); + } + + @Override + protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(11, new Byte((byte) 0)); + } + + public EntityDeliveryDrone setChunkLoading() { + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + return this; + } + + @Override + public void onUpdate() { + + if(!worldObj.isRemote) { + loadNeighboringChunks((int)Math.floor(posX / 16D), (int)Math.floor(posZ / 16D)); + } + + super.onUpdate(); + } + + @Override + public double getSpeed() { + return this.dataWatcher.getWatchableObjectByte(11) == 1 ? 0.375 : 0.125; + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + + NBTTagList nbttaglist = new NBTTagList(); + + for(int i = 0; i < this.slots.length; ++i) { + if(this.slots[i] != null) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + nbttagcompound1.setByte("Slot", (byte) i); + this.slots[i].writeToNBT(nbttagcompound1); + nbttaglist.appendTag(nbttagcompound1); + } + } + + nbt.setTag("Items", nbttaglist); + + if(fluid != null) { + nbt.setString("fluidType", fluid.type.getName()); + nbt.setInteger("fluidAmount", fluid.fill); + } + + nbt.setByte("load", this.dataWatcher.getWatchableObjectByte(11)); + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + + NBTTagList nbttaglist = nbt.getTagList("Items", 10); + this.slots = new ItemStack[this.getSizeInventory()]; + + for(int i = 0; i < nbttaglist.tagCount(); ++i) { + NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); + int j = nbttagcompound1.getByte("Slot") & 255; + + if(j >= 0 && j < this.slots.length) { + this.slots[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1); + } + } + + if(nbt.hasKey("fluidType")) { + this.fluid = new FluidStack(Fluids.fromName(nbt.getString("fluidType")), nbt.getInteger("fluidAmount")); + } + + this.dataWatcher.updateObject(11, nbt.getByte("load")); + } + + @Override + public ItemStack getStackInSlot(int slot) { + return slots[slot]; + } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + if(this.slots[slot] != null) { + ItemStack itemstack; + + if(this.slots[slot].stackSize <= amount) { + itemstack = this.slots[slot]; + this.slots[slot] = null; + return itemstack; + } else { + itemstack = this.slots[slot].splitStack(amount); + + if(this.slots[slot].stackSize == 0) { + this.slots[slot] = null; + } + + return itemstack; + } + } else { + return null; + } + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) { + if(this.slots[slot] != null) { + ItemStack itemstack = this.slots[slot]; + this.slots[slot] = null; + return itemstack; + } else { + return null; + } + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) { + this.slots[slot] = stack; + + if(stack != null && stack.stackSize > this.getInventoryStackLimit()) { + stack.stackSize = this.getInventoryStackLimit(); + } + } + + @Override public int getSizeInventory() { return 18; } + @Override public String getInventoryName() { return "container.drone"; } + @Override public int getInventoryStackLimit() { return 64; } + @Override public boolean hasCustomInventoryName() { return false; } + @Override public boolean isUseableByPlayer(EntityPlayer player) { return false; } + @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return false; } + + @Override public void markDirty() { } + @Override public void openInventory() { } + @Override public void closeInventory() { } + + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + clearChunkLoader(); + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(newChunkX, newChunkZ)); + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(newChunkX + (int) Math.ceil((this.posX + this.motionX) / 16D), newChunkZ + (int) Math.ceil((this.posZ + this.motionZ) / 16D))); + } + } + + @Override + public void setDead() { + super.setDead(); + this.clearChunkLoader(); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loaderTicket.getChunkList()) { + ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote && ticket != null) { + if(loaderTicket == null) { + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } +} diff --git a/src/main/java/com/hbm/entity/item/EntityDroneBase.java b/src/main/java/com/hbm/entity/item/EntityDroneBase.java new file mode 100644 index 000000000..5cc0e4e97 --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityDroneBase.java @@ -0,0 +1,163 @@ +package com.hbm.entity.item; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public abstract class EntityDroneBase extends Entity { + + protected int turnProgress; + protected double syncPosX; + protected double syncPosY; + protected double syncPosZ; + @SideOnly(Side.CLIENT) protected double velocityX; + @SideOnly(Side.CLIENT) protected double velocityY; + @SideOnly(Side.CLIENT) protected double velocityZ; + + public double targetX = -1; + public double targetY = -1; + public double targetZ = -1; + + public EntityDroneBase(World world) { + super(world); + this.setSize(1.5F, 2.0F); + } + + public void setTarget(double x, double y, double z) { + this.targetX = x; + this.targetY = y; + this.targetZ = z; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + @Override + public boolean canAttackWithItem() { + return true; + } + + @Override + public boolean hitByEntity(Entity attacker) { + + if(attacker instanceof EntityPlayer) { + this.setDead(); + } + + return false; + } + + @Override + protected boolean canTriggerWalking() { + return false; + } + + @Override + protected void entityInit() { + this.dataWatcher.addObject(10, new Byte((byte) 0)); + } + + /** + * 0: Empty
+ * 1: Crate
+ * 2: Barrel
+ */ + public void setAppearance(int style) { + this.dataWatcher.updateObject(10, (byte) style); + } + + public int getAppearance() { + return this.dataWatcher.getWatchableObjectByte(10); + } + + @Override + public void onUpdate() { + + if(worldObj.isRemote) { + if(this.turnProgress > 0) { + double interpX = this.posX + (this.syncPosX - this.posX) / (double) this.turnProgress; + double interpY = this.posY + (this.syncPosY - this.posY) / (double) this.turnProgress; + double interpZ = this.posZ + (this.syncPosZ - this.posZ) / (double) this.turnProgress; + --this.turnProgress; + this.setPosition(interpX, interpY, interpZ); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + } + + worldObj.spawnParticle("smoke", posX + 1.125, posY + 0.75, posZ, 0, -0.2, 0); + worldObj.spawnParticle("smoke", posX - 1.125, posY + 0.75, posZ, 0, -0.2, 0); + worldObj.spawnParticle("smoke", posX, posY + 0.75, posZ + 1.125, 0, -0.2, 0); + worldObj.spawnParticle("smoke", posX, posY + 0.75, posZ - 1.125, 0, -0.2, 0); + } else { + + this.motionX = 0; + this.motionY = 0; + this.motionZ = 0; + + if(this.targetY != -1) { + + Vec3 dist = Vec3.createVectorHelper(targetX - posX, targetY - posY, targetZ - posZ); + double speed = getSpeed(); + + if(dist.lengthVector() >= speed) { + dist = dist.normalize(); + this.motionX = dist.xCoord * speed; + this.motionY = dist.yCoord * speed; + this.motionZ = dist.zCoord * speed; + } + } + + this.moveEntity(motionX, motionY, motionZ); + } + } + + public double getSpeed() { + return 0.125D; + } + + @SideOnly(Side.CLIENT) + public void setVelocity(double motionX, double motionY, double motionZ) { + this.velocityX = this.motionX = motionX; + this.velocityY = this.motionY = motionY; + this.velocityZ = this.motionZ = motionZ; + } + + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double x, double y, double z, float yaw, float pitch, int theNumberThree) { + this.syncPosX = x; + this.syncPosY = y; + this.syncPosZ = z; + this.turnProgress = theNumberThree; + this.motionX = this.velocityX; + this.motionY = this.velocityY; + this.motionZ = this.velocityZ; + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + + nbt.setDouble("tX", targetX); + nbt.setDouble("tY", targetY); + nbt.setDouble("tZ", targetZ); + + nbt.setByte("app", this.dataWatcher.getWatchableObjectByte(10)); + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + + if(nbt.hasKey("tY")) { + this.targetX = nbt.getDouble("tX"); + this.targetY = nbt.getDouble("tY"); + this.targetZ = nbt.getDouble("tZ"); + } + + this.dataWatcher.updateObject(10, nbt.getByte("app")); + } +} diff --git a/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java b/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java new file mode 100644 index 000000000..cabc90143 --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java @@ -0,0 +1,286 @@ +package com.hbm.entity.item; + +import java.util.ArrayList; +import java.util.Iterator; + +import com.hbm.blocks.BlockFallingNT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockFalling; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.crash.CrashReportCategory; +import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class EntityFallingBlockNT extends Entity { + + private Block fallingBlock; + private int fallingMeta = -1; + public int fallingTicks; + public boolean canDrop; + private boolean destroyOnLand; + private boolean canHurtEntities; + private int damageCap; + private float damageAmount; + public NBTTagCompound tileNBT; + + public EntityFallingBlockNT(World world) { + super(world); + this.canDrop = true; + this.damageCap = 40; + this.damageAmount = 2.0F; + this.setSize(0.98F, 0.98F); + this.yOffset = this.height / 2.0F; + } + + public EntityFallingBlockNT(World world, double x, double y, double z, Block block) { + this(world, x, y, z, block, 0); + } + + public EntityFallingBlockNT(World world, double x, double y, double z, Block block, int meta) { + super(world); + this.canDrop = true; + this.damageCap = 40; + this.damageAmount = 2.0F; + this.fallingBlock = block; + this.dataWatcher.updateObject(10, Block.getIdFromBlock(fallingBlock)); + this.fallingMeta = meta; + this.dataWatcher.updateObject(11, fallingMeta); + this.preventEntitySpawning = true; + this.setPosition(x, y, z); + this.motionX = 0.0D; + this.motionY = 0.0D; + this.motionZ = 0.0D; + this.prevPosX = x; + this.prevPosY = y; + this.prevPosZ = z; + } + + @Override protected void entityInit() { + this.dataWatcher.addObject(10, new Integer(0)); + this.dataWatcher.addObject(11, new Integer(0)); + } + + public Block getBlock() { + if(this.fallingBlock != null) return this.fallingBlock; + + this.fallingBlock = Block.getBlockById(this.dataWatcher.getWatchableObjectInt(10)); + return this.fallingBlock; + } + + public int getMeta() { + if(this.fallingMeta != -1) return this.fallingMeta; + this.fallingMeta = 0; + + this.fallingMeta = this.dataWatcher.getWatchableObjectInt(11); + return this.fallingMeta; + } + + @Override protected boolean canTriggerWalking() { return false; } + @Override public boolean canBeCollidedWith() { return !this.isDead; } + + public void onUpdate() { + + if(this.getBlock().getMaterial() == Material.air) { + this.setDead(); + } else { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + ++this.fallingTicks; + this.motionY -= 0.04D; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.98D; + this.motionY *= 0.98D; + this.motionZ *= 0.98D; + + if(!this.worldObj.isRemote) { + int x = MathHelper.floor_double(this.posX); + int y = MathHelper.floor_double(this.posY); + int z = MathHelper.floor_double(this.posZ); + + if(this.fallingTicks == 1) { + if(this.worldObj.getBlock(x, y, z) != this.getBlock()) { + this.setDead(); + return; + } + + this.worldObj.setBlockToAir(x, y, z); + } + + if(this.onGround) { + this.motionX *= 0.7D; + this.motionZ *= 0.7D; + this.motionY *= -0.5D; + + if(this.worldObj.getBlock(x, y, z) != Blocks.piston_extension) { + this.setDead(); + + if(!this.destroyOnLand && replacementCheck(x, y, z) && this.worldObj.setBlock(x, y, z, this.getBlock(), this.getMeta(), 3)) { + + if(this.getBlock() instanceof BlockFalling) ((BlockFalling) this.getBlock()).func_149828_a(this.worldObj, x, y, z, this.getMeta()); + if(this.getBlock() instanceof BlockFallingNT) ((BlockFallingNT) this.getBlock()).onLand(this.worldObj, x, y, z, this.getMeta()); + + if(this.tileNBT != null && this.getBlock() instanceof ITileEntityProvider) { + TileEntity tileentity = this.worldObj.getTileEntity(x, y, z); + + if(tileentity != null) { + NBTTagCompound nbt = new NBTTagCompound(); + tileentity.writeToNBT(nbt); + Iterator it = this.tileNBT.func_150296_c().iterator(); + + while(it.hasNext()) { + String s = (String) it.next(); + NBTBase nbtbase = this.tileNBT.getTag(s); + + if(!s.equals("x") && !s.equals("y") && !s.equals("z")) { + nbt.setTag(s, nbtbase.copy()); + } + } + + tileentity.readFromNBT(nbt); + tileentity.markDirty(); + } + } + } else if(this.canDrop && !this.destroyOnLand) { + this.entityDropItem(new ItemStack(this.getBlock(), 1, this.getBlock().damageDropped(this.getMeta())), 0.0F); + } + } + } else if(this.fallingTicks > 100 && !this.worldObj.isRemote && (y < 1 || y > 256) || this.fallingTicks > 600) { + if(this.canDrop) { + this.entityDropItem(new ItemStack(this.getBlock(), 1, this.getBlock().damageDropped(this.getMeta())), 0.0F); + } + + this.setDead(); + } + } + } + } + + public boolean replacementCheck(int x, int y, int z) { + return worldObj.getBlock(x, y, z).isReplaceable(worldObj, x, y, z) && this.getBlock().canBlockStay(worldObj, x, y, z); + } + + @Override + protected void fall(float fallDistance) { + + if(this.canHurtEntities) { + int fall = MathHelper.ceiling_float_int(fallDistance - 1.0F); + + if(fall > 0) { + ArrayList arraylist = new ArrayList(this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox)); + boolean isAnvil = this.getBlock() == Blocks.anvil; + DamageSource damagesource = isAnvil ? DamageSource.anvil : DamageSource.fallingBlock; + Iterator iterator = arraylist.iterator(); + + while(iterator.hasNext()) { + Entity entity = (Entity) iterator.next(); + entity.attackEntityFrom(damagesource, (float) Math.min(MathHelper.floor_float((float) fall * this.damageAmount), this.damageCap)); + } + + if(isAnvil && (double) this.rand.nextFloat() < 0.05D + (double) fall * 0.05D) { + int j = this.getMeta() >> 2; + int k = this.getMeta() & 3; + ++j; + + if(j > 2) { + this.destroyOnLand = true; + } else { + this.fallingMeta = k | j << 2; + } + } + } + } + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + nbt.setByte("Tile", (byte) Block.getIdFromBlock(this.fallingBlock)); + nbt.setInteger("TileID", Block.getIdFromBlock(this.fallingBlock)); + nbt.setByte("Data", (byte) this.fallingMeta); + nbt.setByte("Time", (byte) this.fallingTicks); + nbt.setBoolean("DropItem", this.canDrop); + nbt.setBoolean("HurtEntities", this.canHurtEntities); + nbt.setFloat("FallHurtAmount", this.damageAmount); + nbt.setInteger("FallHurtMax", this.damageCap); + + if(this.tileNBT != null) { + nbt.setTag("TileEntityData", this.tileNBT); + } + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + + if(nbt.hasKey("TileID", 99)) { + this.fallingBlock = Block.getBlockById(nbt.getInteger("TileID")); + } else { + this.fallingBlock = Block.getBlockById(nbt.getByte("Tile") & 255); + } + + this.fallingMeta = nbt.getByte("Data") & 255; + this.fallingTicks = nbt.getByte("Time") & 255; + + if(nbt.hasKey("HurtEntities", 99)) { + this.canHurtEntities = nbt.getBoolean("HurtEntities"); + this.damageAmount = nbt.getFloat("FallHurtAmount"); + this.damageCap = nbt.getInteger("FallHurtMax"); + } else if(this.fallingBlock == Blocks.anvil) { + this.canHurtEntities = true; + } + + if(nbt.hasKey("DropItem", 99)) { + this.canDrop = nbt.getBoolean("DropItem"); + } + + if(nbt.hasKey("TileEntityData", 10)) { + this.tileNBT = nbt.getCompoundTag("TileEntityData"); + } + + if(this.fallingBlock.getMaterial() == Material.air) { + this.fallingBlock = Blocks.sand; + } + } + + public void func_145806_a(boolean p_145806_1_) { + this.canHurtEntities = p_145806_1_; + } + + @Override + public void addEntityCrashInfo(CrashReportCategory report) { + super.addEntityCrashInfo(report); + report.addCrashSection("Immitating block ID", Integer.valueOf(Block.getIdFromBlock(this.fallingBlock))); + report.addCrashSection("Immitating block data", Integer.valueOf(this.fallingMeta)); + } + + @Override + @SideOnly(Side.CLIENT) + public float getShadowSize() { + return 0.0F; + } + + @SideOnly(Side.CLIENT) + public World getWorldForRender() { + return this.worldObj; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean canRenderOnFire() { + return false; + } + + public Block getBlockForRender() { + return this.getBlock(); + } +} diff --git a/src/main/java/com/hbm/entity/item/EntityItemBuoyant.java b/src/main/java/com/hbm/entity/item/EntityItemBuoyant.java new file mode 100644 index 000000000..9a19b7490 --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityItemBuoyant.java @@ -0,0 +1,27 @@ +package com.hbm.entity.item; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class EntityItemBuoyant extends EntityItem { + + public EntityItemBuoyant(World world) { + super(world); + } + + public EntityItemBuoyant(World world, double x, double y, double z, ItemStack stack) { + super(world, x, y, z, stack); + } + + @Override + public void onUpdate() { + + if(worldObj.getBlock((int) Math.floor(posX), (int) Math.floor(posY - 0.0625), (int) Math.floor(posZ)).getMaterial() == Material.water) { + this.motionY += 0.045D; + } + + super.onUpdate(); + } +} diff --git a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java new file mode 100644 index 000000000..0b5294516 --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java @@ -0,0 +1,232 @@ +package com.hbm.entity.item; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemDrone.EnumDroneType; +import com.hbm.tileentity.network.TileEntityDroneDock; +import com.hbm.tileentity.network.TileEntityDroneProvider; +import com.hbm.tileentity.network.TileEntityDroneRequester; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityRequestDrone extends EntityDroneBase { + + public ItemStack heldItem; + public List program = new ArrayList(); + int nextActionTimer = 0; + + public static enum DroneProgram { + UNLOAD, DOCK + } + + public EntityRequestDrone(World world) { + super(world); + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) { + + if(Vec3.createVectorHelper(motionX, motionY, motionZ).lengthVector() < 0.01) { + + if(nextActionTimer > 0) { + nextActionTimer--; + } else { + + if(program.isEmpty()) { + this.setDead(); //self-destruct if no further operations are pending + this.entityDropItem(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), 1F); + return; + } + + Object next = program.get(0); + program.remove(0); + + if(next instanceof BlockPos) { + BlockPos pos = (BlockPos) next; + this.setTarget(pos.getX() + 0.5, pos.getY(), pos.getZ() + 0.5); + } else if(next instanceof AStack && heldItem == null) { + + AStack aStack = (AStack) next; + TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); + + if(tile instanceof TileEntityDroneProvider) { + TileEntityDroneProvider provider = (TileEntityDroneProvider) tile; + + for(int i = 0; i < provider.slots.length; i++) { + ItemStack stack = provider.slots[i]; + + if(stack != null && aStack.matchesRecipe(stack, true)) { + this.heldItem = stack.copy(); + this.setAppearance(1); + worldObj.playSoundEffect(posX, posY, posZ, "hbm:item.unpack", 0.5F, 0.75F); + provider.slots[i] = null; + provider.markDirty(); + break; + } + } + } + nextActionTimer = 5; + } else if(next == DroneProgram.UNLOAD && this.heldItem != null) { + + TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); + if(tile instanceof TileEntityDroneRequester) { + TileEntityDroneRequester requester = (TileEntityDroneRequester) tile; + + for(int i = 9; i < 18; i++) { + ItemStack stack = requester.slots[i]; + if(stack != null && stack.getItem() == heldItem.getItem() && stack.getItemDamage() == heldItem.getItemDamage()) { + int toTransfer = Math.min(stack.getMaxStackSize() - stack.stackSize, heldItem.stackSize); + requester.slots[i].stackSize += toTransfer; + this.heldItem.stackSize -= toTransfer; + } + } + + if(this.heldItem.stackSize <= 0) this.heldItem = null; + + if(this.heldItem != null) for(int i = 9; i < 18; i++) { + if(requester.slots[i] == null) { + requester.slots[i] = this.heldItem.copy(); + this.heldItem = null; + break; + } + } + + if(this.heldItem == null) { + this.setAppearance(0); + worldObj.playSoundEffect(posX, posY, posZ, "hbm:item.unpack", 0.5F, 0.75F); + } + + requester.markDirty(); + } + nextActionTimer = 5; + } else if(next == DroneProgram.DOCK) { + + TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); + if(tile instanceof TileEntityDroneDock) { + TileEntityDroneDock dock = (TileEntityDroneDock) tile; + + for(int i = 0; i < dock.slots.length; i++) { + if(dock.slots[i] == null) { + this.setDead(); + dock.slots[i] = new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()); + this.worldObj.playSoundEffect(dock.xCoord + 0.5, dock.yCoord + 0.5, dock.zCoord + 0.5, "hbm:block.storageClose", 2.0F, 1.0F); + break; + } + } + } + + if(!this.isDead) { + this.setDead(); + this.entityDropItem(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), 1F); + } + } + } + } + } + } + + @Override + public double getSpeed() { + return 0.5D; + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + + if(nbt.hasKey("held")) { + NBTTagCompound stack = nbt.getCompoundTag("held"); + this.heldItem = ItemStack.loadItemStackFromNBT(stack); + } + + nextActionTimer = 5; + + this.dataWatcher.updateObject(10, nbt.getByte("app")); + + int size = nbt.getInteger("programSize"); + + for(int i = 0; i < size; i++) { + NBTTagCompound data = nbt.getCompoundTag("program" + i); + String pType = data.getString("type"); + + if("pos".equals(pType)) { + int[] pos = data.getIntArray("pos"); + this.program.add(new BlockPos(pos[0], pos[1], pos[2])); + } else if("unload".equals(pType)) { + this.program.add(DroneProgram.UNLOAD); + } else if("dock".equals(pType)) { + this.program.add(DroneProgram.DOCK); + } else if("comp".equals(pType)) { + ComparableStack comp = new ComparableStack(Item.getItemById(nbt.getInteger("id")), 1, nbt.getInteger("meta")); + this.program.add(comp); + } else if("dict".equals(pType)) { + OreDictStack dict = new OreDictStack(nbt.getString("dict")); + this.program.add(dict); + } + } + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + + if(heldItem != null) { + NBTTagCompound stack = new NBTTagCompound(); + this.heldItem.writeToNBT(stack); + nbt.setTag("held", stack); + } + + nbt.setByte("app", this.dataWatcher.getWatchableObjectByte(10)); + + int size = this.program.size(); + nbt.setInteger("programSize", size); + + for(int i = 0; i < size; i++) { + NBTTagCompound data = new NBTTagCompound(); + Object p = this.program.get(i); + + if(p instanceof BlockPos) { + BlockPos pos = (BlockPos) p; + data.setString("type", "pos"); + data.setIntArray("pos", new int[] {pos.getX(), pos.getY(), pos.getZ()}); + } else if(p instanceof AStack) { + + // neither of these wretched fungii works correctly, but so long as the pathing works (which it does), it means that the drone will + // eventually return to the dock and not got lost, and simply retry the task + if(p instanceof ComparableStack) { + ComparableStack comp = (ComparableStack) p; + data.setString("type", "comp"); + data.setInteger("id", Item.getIdFromItem(comp.item)); + data.setInteger("meta", comp.meta); + } else { + OreDictStack dict = (OreDictStack) p; + data.setString("type", "dict"); + data.setString("dict", dict.name); + } + + } else if(p == DroneProgram.UNLOAD) { + data.setString("type", "unload"); + + } else if(p == DroneProgram.DOCK) { + data.setString("type", "dock"); + + } + + nbt.setTag("program" + i, data); + } + } +} diff --git a/src/main/java/com/hbm/entity/logic/EntityBalefire.java b/src/main/java/com/hbm/entity/logic/EntityBalefire.java index 00d0f38e9..73c8e51b2 100644 --- a/src/main/java/com/hbm/entity/logic/EntityBalefire.java +++ b/src/main/java/com/hbm/entity/logic/EntityBalefire.java @@ -7,11 +7,10 @@ import com.hbm.explosion.ExplosionBalefire; import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.main.MainRegistry; -import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class EntityBalefire extends Entity { +public class EntityBalefire extends EntityExplosionChunkloading { public int age = 0; public int destructionRange = 0; @@ -53,48 +52,46 @@ public class EntityBalefire extends Entity { super(p_i1582_1_); } - @Override - public void onUpdate() { - super.onUpdate(); - - if(!this.did) - { - if(GeneralConfig.enableExtendedLogging && !worldObj.isRemote) - MainRegistry.logger.log(Level.INFO, "[NUKE] Initialized BF explosion at " + posX + " / " + posY + " / " + posZ + " with strength " + destructionRange + "!"); - - exp = new ExplosionBalefire((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, this.destructionRange); - - this.did = true; - } - - speed += 1; //increase speed to keep up with expansion - - boolean flag = false; - for(int i = 0; i < this.speed; i++) - { - flag = exp.update(); - - if(flag) { - this.setDead(); - } - } - - if(!mute && rand.nextInt(5) == 0) - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "random.explode", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F); - - if(!flag) { - - if(!mute) - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F); - - ExplosionNukeGeneric.dealDamage(this.worldObj, this.posX, this.posY, this.posZ, this.destructionRange * 2); - } - - age++; - } - @Override - protected void entityInit() { } + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) loadChunk((int) Math.floor(posX / 16D), (int) Math.floor(posZ / 16D)); + + if(!this.did) { + if(GeneralConfig.enableExtendedLogging && !worldObj.isRemote) + MainRegistry.logger.log(Level.INFO, "[NUKE] Initialized BF explosion at " + posX + " / " + posY + " / " + posZ + " with strength " + destructionRange + "!"); + + exp = new ExplosionBalefire((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, this.destructionRange); + + this.did = true; + } + + speed += 1; // increase speed to keep up with expansion + + boolean flag = false; + for(int i = 0; i < this.speed; i++) { + flag = exp.update(); + + if(flag) { + clearChunkLoader(); + this.setDead(); + } + } + + if(!mute && rand.nextInt(5) == 0) + this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "random.explode", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F); + + if(!flag) { + + if(!mute) + this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F); + + ExplosionNukeGeneric.dealDamage(this.worldObj, this.posX, this.posY, this.posZ, this.destructionRange * 2); + } + + age++; + } public EntityBalefire mute() { this.mute = true; diff --git a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java index 1065b019d..c4ffd67f3 100644 --- a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java +++ b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java @@ -1,6 +1,6 @@ package com.hbm.entity.logic; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; @@ -45,7 +45,7 @@ public class EntityDeathBlast extends Entity { Vec3 vec = Vec3.createVectorHelper(0.2, 0, 0); vec.rotateAroundY((float)(2 * Math.PI * i / (float)count)); - EntityBulletBase laser = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.MASKMAN_BOLT); + EntityBulletBaseNT laser = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.MASKMAN_BOLT); laser.setPosition(posX, posY + 2, posZ); laser.motionX = vec.xCoord; laser.motionZ = vec.zCoord; diff --git a/src/main/java/com/hbm/entity/logic/EntityEnvirEffect.java b/src/main/java/com/hbm/entity/logic/EntityEnvirEffect.java deleted file mode 100644 index 75c912a32..000000000 --- a/src/main/java/com/hbm/entity/logic/EntityEnvirEffect.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.hbm.entity.logic; - -import net.minecraft.entity.Entity; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -public abstract class EntityEnvirEffect extends Entity { - - public int maxAge = 100; - public int blockRadius = 7; - public int entityRadius = 7; - public int chance = 10; - public boolean hasBlockEffect = true; - public boolean hasEntityEffect = true; - - public EntityEnvirEffect(World p_i1582_1_) { - super(p_i1582_1_); - } - - @Override - protected void entityInit() { - - } - - @Override - protected void readEntityFromNBT(NBTTagCompound nbt) { - this.ticksExisted = nbt.getInteger("lifetime"); - this.maxAge = nbt.getInteger("lifecap"); - } - - @Override - protected void writeEntityToNBT(NBTTagCompound nbt) { - nbt.setInteger("lifetime", this.ticksExisted); - nbt.setInteger("lifecap", this.maxAge); - } - - public void onUpdate() { - - if(hasBlockEffect && rand.nextInt(chance) == 0) - applyBlockEffect(); - - if(hasEntityEffect && rand.nextInt(chance) == 0) - applyEntityEffect(); - } - - private void applyBlockEffect() { }; - private void applyEntityEffect() { }; - -} diff --git a/src/main/java/com/hbm/entity/logic/EntityEnvirEffectRad.java b/src/main/java/com/hbm/entity/logic/EntityEnvirEffectRad.java deleted file mode 100644 index f67bcaf6a..000000000 --- a/src/main/java/com/hbm/entity/logic/EntityEnvirEffectRad.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.hbm.entity.logic; - -import net.minecraft.world.World; - -public class EntityEnvirEffectRad extends EntityEnvirEffect { - - public EntityEnvirEffectRad(World p_i1582_1_) { - super(p_i1582_1_); - } - - public void randomizeAge(int min, int max) { - this.maxAge = min + rand.nextInt(max - min); - } - -} diff --git a/src/main/java/com/hbm/entity/logic/EntityExplosionChunkloading.java b/src/main/java/com/hbm/entity/logic/EntityExplosionChunkloading.java new file mode 100644 index 000000000..ca2ad6f6f --- /dev/null +++ b/src/main/java/com/hbm/entity/logic/EntityExplosionChunkloading.java @@ -0,0 +1,51 @@ +package com.hbm.entity.logic; + +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.Entity; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; + +public abstract class EntityExplosionChunkloading extends Entity implements IChunkLoader { + + private Ticket loaderTicket; + private ChunkCoordIntPair loadedChunk; + + public EntityExplosionChunkloading(World world) { + super(world); + } + + @Override + protected void entityInit() { + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote && ticket != null) { + if(loaderTicket == null) { + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } + + public void loadChunk(int x, int z) { + + if(this.loadedChunk == null) { + this.loadedChunk = new ChunkCoordIntPair(x, z); + ForgeChunkManager.forceChunk(loaderTicket, loadedChunk); + } + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null && loadedChunk != null) { + ForgeChunkManager.unforceChunk(loaderTicket, loadedChunk); + } + } +} diff --git a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java index 93335b142..665d9550d 100644 --- a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java +++ b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java @@ -20,14 +20,13 @@ import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.World; @Spaghetti("why???") -public class EntityNukeExplosionMK3 extends Entity { +public class EntityNukeExplosionMK3 extends EntityExplosionChunkloading { public int age = 0; public int destructionRange = 0; @@ -59,31 +58,32 @@ public class EntityNukeExplosionMK3 extends Entity { long time = nbt.getLong("milliTime"); - if(BombConfig.limitExplosionLifespan > 0 && System.currentTimeMillis() - time > BombConfig.limitExplosionLifespan * 1000) + if(BombConfig.limitExplosionLifespan > 0 && System.currentTimeMillis() - time > BombConfig.limitExplosionLifespan * 1000) { + this.clearChunkLoader(); this.setDead(); + } - if(this.waste) - { - exp = new ExplosionNukeAdvanced((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, this.destructionRange, this.coefficient, 0); + if(this.waste) { + exp = new ExplosionNukeAdvanced((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, this.destructionRange, this.coefficient, 0); exp.readFromNbt(nbt, "exp_"); - wst = new ExplosionNukeAdvanced((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, (int)(this.destructionRange * 1.8), this.coefficient, 2); + wst = new ExplosionNukeAdvanced((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, (int) (this.destructionRange * 1.8), this.coefficient, 2); wst.readFromNbt(nbt, "wst_"); - vap = new ExplosionNukeAdvanced((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, (int)(this.destructionRange * 2.5), this.coefficient, 1); + vap = new ExplosionNukeAdvanced((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, (int) (this.destructionRange * 2.5), this.coefficient, 1); vap.readFromNbt(nbt, "vap_"); - } else { + } else { - if(extType == 0) { - expl = new ExplosionFleija((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, this.destructionRange, this.coefficient, this.coefficient2); + if(extType == 0) { + expl = new ExplosionFleija((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, this.destructionRange, this.coefficient, this.coefficient2); expl.readFromNbt(nbt, "expl_"); - } - if(extType == 1) { - sol = new ExplosionSolinium((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, this.destructionRange, this.coefficient, this.coefficient2); - sol.readFromNbt(nbt, "sol_"); - } - } - - this.did = true; - + } + if(extType == 1) { + sol = new ExplosionSolinium((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, this.destructionRange, this.coefficient, this.coefficient2); + sol.readFromNbt(nbt, "sol_"); + } + } + + this.did = true; + } @Override @@ -120,6 +120,8 @@ public class EntityNukeExplosionMK3 extends Entity { @Override public void onUpdate() { super.onUpdate(); + + if(!worldObj.isRemote) loadChunk((int) Math.floor(posX / 16D), (int) Math.floor(posZ / 16D)); if(!this.did) { @@ -149,25 +151,31 @@ public class EntityNukeExplosionMK3 extends Entity { boolean flag = false; boolean flag3 = false; - for(int i = 0; i < this.speed; i++) - { - if(waste) { - flag = exp.update(); - wst.update(); - flag3 = vap.update(); - - if(flag3) { - this.setDead(); - } - } else { - if(extType == 0) - if(expl.update()) - this.setDead(); - if(extType == 1) - if(sol.update()) - this.setDead(); - } - } + for(int i = 0; i < this.speed; i++) { + if(waste) { + flag = exp.update(); + wst.update(); + flag3 = vap.update(); + + if(flag3) { + this.clearChunkLoader(); + this.setDead(); + } + } else { + if(extType == 0) { + if(expl.update()) { + this.clearChunkLoader(); + this.setDead(); + } + } + if(extType == 1) { + if(sol.update()) { + this.clearChunkLoader(); + this.setDead(); + } + } + } + } if(!flag) { @@ -196,9 +204,6 @@ public class EntityNukeExplosionMK3 extends Entity { age++; } - - @Override - protected void entityInit() { } public static HashMap at = new HashMap(); diff --git a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java index e924e43da..15cb2679b 100644 --- a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java +++ b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java @@ -14,7 +14,6 @@ import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -22,7 +21,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class EntityNukeExplosionMK5 extends Entity { +public class EntityNukeExplosionMK5 extends EntityExplosionChunkloading { //Strength of the blast public int strength; @@ -52,9 +51,12 @@ public class EntityNukeExplosionMK5 extends Entity { public void onUpdate() { if(strength == 0) { + this.clearChunkLoader(); this.setDead(); return; } + + if(!worldObj.isRemote) loadChunk((int) Math.floor(posX / 16D), (int) Math.floor(posZ / 16D)); for(Object player : this.worldObj.playerEntities) { ((EntityPlayer)player).triggerAchievement(MainRegistry.achManhattan); @@ -92,9 +94,11 @@ public class EntityNukeExplosionMK5 extends Entity { fallout.setScale((int)(this.length * 2.5 + falloutAdd) * BombConfig.falloutRange / 100); this.worldObj.spawnEntityInWorld(fallout); - + + this.clearChunkLoader(); this.setDead(); } else { + this.clearChunkLoader(); this.setDead(); } } diff --git a/src/main/java/com/hbm/entity/logic/EntityTomBlast.java b/src/main/java/com/hbm/entity/logic/EntityTomBlast.java index 4eb855576..093638a6d 100644 --- a/src/main/java/com/hbm/entity/logic/EntityTomBlast.java +++ b/src/main/java/com/hbm/entity/logic/EntityTomBlast.java @@ -8,11 +8,10 @@ import com.hbm.explosion.ExplosionTom; import com.hbm.main.MainRegistry; import com.hbm.saveddata.TomSaveData; -import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class EntityTomBlast extends Entity { +public class EntityTomBlast extends EntityExplosionChunkloading { public int age = 0; public int destructionRange = 0; @@ -54,6 +53,8 @@ public class EntityTomBlast extends Entity { public void onUpdate() { super.onUpdate(); + if(!worldObj.isRemote) loadChunk((int) Math.floor(posX / 16D), (int) Math.floor(posZ / 16D)); + if(!this.did) { if(GeneralConfig.enableExtendedLogging && !worldObj.isRemote) @@ -89,8 +90,4 @@ public class EntityTomBlast extends Entity { age++; } - - @Override - protected void entityInit() { - } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMIRV.java b/src/main/java/com/hbm/entity/missile/EntityMIRV.java index c7aa4b0af..e5a4054f6 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMIRV.java +++ b/src/main/java/com/hbm/entity/missile/EntityMIRV.java @@ -1,7 +1,7 @@ package com.hbm.entity.missile; import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.entity.particle.EntitySmokeFX; @@ -37,12 +37,7 @@ public class EntityMIRV extends EntityThrowable { if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air) { if(!this.worldObj.isRemote) { worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.mirvRadius, posX, posY, posZ)); - - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(this.worldObj, 1000, BombConfig.mirvRadius * 0.005F); - entity2.posX = this.posX; - entity2.posY = this.posY; - entity2.posZ = this.posZ; - this.worldObj.spawnEntityInWorld(entity2); + EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.mirvRadius); } this.setDead(); } diff --git a/src/main/java/com/hbm/entity/missile/EntityMinerRocket.java b/src/main/java/com/hbm/entity/missile/EntityMinerRocket.java index cb8af88ae..6264046a9 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMinerRocket.java +++ b/src/main/java/com/hbm/entity/missile/EntityMinerRocket.java @@ -10,11 +10,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; public class EntityMinerRocket extends Entity { - //0 landing, 1 unloading, 2 lifting public int timer = 0; - //0 asteroid, 1 moon - public String satelliteClassName = "com.hbm.saveddata.satellites.SatelliteMiner"; public EntityMinerRocket(World p_i1582_1_) { super(p_i1582_1_); @@ -24,13 +21,12 @@ public class EntityMinerRocket extends Entity { @Override protected void entityInit() { - this.dataWatcher.addObject(16, Integer.valueOf(0)); - this.dataWatcher.addObject(17, Integer.valueOf(0)); + this.dataWatcher.addObject(16, 0); + this.dataWatcher.addObject(17, 0); } @Override public void onUpdate() { - if(dataWatcher.getWatchableObjectInt(16) == 0) motionY = -0.75; if(dataWatcher.getWatchableObjectInt(16) == 1) @@ -43,7 +39,6 @@ public class EntityMinerRocket extends Entity { this.setPositionAndRotation(posX + motionX, posY + motionY, posZ + motionZ, 0.0F, 0.0F); - if(dataWatcher.getWatchableObjectInt(16) == 0 && worldObj.getBlock((int)(posX - 0.5), (int)(posY - 0.5), (int)(posZ - 0.5)) == ModBlocks.sat_dock) { dataWatcher.updateObject(16, 1); motionY = 0; @@ -55,7 +50,6 @@ public class EntityMinerRocket extends Entity { } if(dataWatcher.getWatchableObjectInt(16) == 1) { - if(!worldObj.isRemote && ticksExisted % 4 == 0) ExplosionLarge.spawnShock(worldObj, posX, posY, posZ, 1 + rand.nextInt(3), 1 + rand.nextGaussian()); @@ -79,7 +73,6 @@ public class EntityMinerRocket extends Entity { dataWatcher.updateObject(16, nbt.getInteger("mode")); dataWatcher.updateObject(17, nbt.getInteger("sat")); timer = nbt.getInteger("timer"); - satelliteClassName = nbt.getString("type"); } @Override @@ -87,7 +80,5 @@ public class EntityMinerRocket extends Entity { nbt.setInteger("mode", dataWatcher.getWatchableObjectInt(16)); nbt.setInteger("sat", dataWatcher.getWatchableObjectInt(17)); nbt.setInteger("timer", timer); - nbt.setString("type", satelliteClassName); } - } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java index b350038be..b0f2ef6be 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -1,156 +1,231 @@ package com.hbm.entity.missile; +import java.util.ArrayList; import java.util.List; -import com.hbm.entity.particle.EntitySmokeFX; +import com.hbm.entity.logic.IChunkLoader; +import com.hbm.entity.projectile.EntityThrowableInterp; import com.hbm.explosion.ExplosionLarge; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import api.hbm.entity.IRadarDetectable; +import api.hbm.entity.IRadarDetectableNT; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; -import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; +import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; -public class EntityMissileAntiBallistic extends Entity implements IRadarDetectable { +public class EntityMissileAntiBallistic extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable, IRadarDetectableNT { - int activationTimer; + private Ticket loaderTicket; + public Entity tracking; + public double velocity; + protected int activationTimer; + + public static double baseSpeed = 1.5D; - public EntityMissileAntiBallistic(World p_i1582_1_) { - super(p_i1582_1_); - } - - @Override - public void onUpdate() { - - if(activationTimer < 40) { - activationTimer++; - - motionY = 1.5D; - - this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); - this.rotation(); - - if(!this.worldObj.isRemote && this.posY < 400) - this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); - - } else { - - if(activationTimer == 40) { - ExplosionLarge.spawnParticlesRadial(worldObj, posX, posY, posZ, 15); - activationTimer = 100; - } - - for(int i = 0; i < 5; i++) { - - targetMissile(); - - this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); - this.rotation(); - - if(!this.worldObj.isRemote && this.posY < 400) - this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); - - List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 5, posY - 5, posZ - 5, posX + 5, posY + 5, posZ + 5)); - - for(Entity e : list) { - if(e instanceof EntityMissileBaseAdvanced || e instanceof EntityMissileCustom) { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 15F, true, false, true); - this.setDead(); - return; - } - } - } - } - - if(this.posY > 2000) - this.setDead(); - - if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.water && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.flowing_water) { - - if(!this.worldObj.isRemote) { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 10F, true, true, true); - } - this.setDead(); - return; - } - - } - - protected void rotation() { - float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - for(this.rotationPitch = (float) (Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { - ; - } - - while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { - this.prevRotationPitch += 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw < -180.0F) { - this.prevRotationYaw -= 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { - this.prevRotationYaw += 360.0F; - } - } - - private void targetMissile() { - - List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 500, 0, posZ - 500, posX + 500, 5000, posZ + 500)); - - Entity target = null; - double closest = 1000D; - - for(Entity e : list) { - if(e instanceof EntityMissileBaseAdvanced || e instanceof EntityMissileCustom) { - double dis = Math.sqrt(Math.pow(e.posX - posX, 2) + Math.pow(e.posY - posY, 2) + Math.pow(e.posZ - posZ, 2)); - - if(dis < closest) { - closest = dis; - target = e; - } - } - } - - if(target != null) { - - Vec3 vec = Vec3.createVectorHelper(target.posX - posX, target.posY - posY, target.posZ - posZ); - - vec.normalize(); - - this.motionX = vec.xCoord * 0.065D; - this.motionY = vec.yCoord * 0.065D; - this.motionZ = vec.zCoord * 0.065D; - } + public EntityMissileAntiBallistic(World world) { + super(world); + this.setSize(1.5F, 1.5F); + this.motionY = baseSpeed; } @Override protected void entityInit() { - + super.entityInit(); + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); } @Override - protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { - + protected double motionMult() { + return velocity; } @Override - protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { + public boolean doesImpactEntities() { + return false; + } + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) { + + if(velocity < 6) velocity += 0.1; + + if(activationTimer < 40) { + activationTimer++; + motionY = baseSpeed; + } else { + Entity prevTracking = this.tracking; + + if(this.tracking == null || this.tracking.isDead) this.targetMissile(); + + if(prevTracking == null && this.tracking != null) { + ExplosionLarge.spawnShock(worldObj, posX, posY, posZ, 24, 3F); + } + + if(this.tracking != null) { + this.aimAtTarget(); + } else { + if(this.ticksExisted > 600) this.setDead(); + } + } + + loadNeighboringChunks((int) Math.floor(posX / 16), (int) Math.floor(posZ / 16)); + + if(this.posY > 2000 && (this.tracking == null || this.tracking.isDead)) this.setDead(); + + } else { + + Vec3 vec = Vec3.createVectorHelper(motionX, motionY, motionZ).normalize(); + MainRegistry.proxy.particleControl(posX - vec.xCoord, posY - vec.yCoord, posZ - vec.zCoord, 2); + } + + float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + for(this.rotationPitch = (float) (Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F); + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) this.prevRotationPitch += 360.0F; + while(this.rotationYaw - this.prevRotationYaw < -180.0F) this.prevRotationYaw -= 360.0F; + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) this.prevRotationYaw += 360.0F; + } + + /** Detects and caches nearby EntityMissileBaseNT */ + protected void targetMissile() { + + Entity closest = null; + double dist = 1_000; + + for(Entity e : TileEntityMachineRadarNT.matchingEntities) { + if(e.dimension != this.dimension) continue; + if(!(e instanceof EntityMissileBaseNT)) continue; + + Vec3 vec = Vec3.createVectorHelper(e.posX - posX, e.posY - posY, e.posZ - posZ); + + if(vec.lengthVector() < dist) { + closest = e; + } + } + + this.tracking = closest; + } + + /** Predictive targeting system */ + protected void aimAtTarget() { + + Vec3 delta = Vec3.createVectorHelper(tracking.posX - posX, tracking.posY - posY, tracking.posZ - posZ); + double intercept = delta.lengthVector() / (this.baseSpeed * this.velocity); + Vec3 predicted = Vec3.createVectorHelper(tracking.posX + (tracking.posX - tracking.lastTickPosX) * intercept, tracking.posY + (tracking.posY - tracking.lastTickPosY) * intercept, tracking.posZ + (tracking.posZ - tracking.lastTickPosZ) * intercept); + Vec3 motion = Vec3.createVectorHelper(predicted.xCoord - posX, predicted.yCoord - posY, predicted.zCoord - posZ).normalize(); + + if(delta.lengthVector() < 10 && activationTimer >= 40) { + this.setDead(); + ExplosionLarge.explode(worldObj, posX, posY, posZ, 15F, true, false, false); + + } + + this.motionX = motion.xCoord * baseSpeed; + this.motionY = motion.yCoord * baseSpeed; + this.motionZ = motion.zCoord * baseSpeed; + } + + @Override + protected void onImpact(MovingObjectPosition mop) { + if(this.activationTimer >= 40) { + this.setDead(); + ExplosionLarge.explode(worldObj, posX, posY, posZ, 20F, true, false, false); + } + } + + @Override + public double getGravityVelocity() { + return 0.0D; + } + + @Override + protected float getAirDrag() { + return 1F; + } + + @Override + protected float getWaterDrag() { + return 1F; + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.velocity = nbt.getDouble("veloc"); + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setDouble("veloc", this.velocity); + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote) { + + if(ticket != null) { + + if(loaderTicket == null) { + + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } + } + + List loadedChunks = new ArrayList(); + + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + + clearChunkLoader(); + + loadedChunks.clear(); + for(int i = -1; i <= 1; i++) for(int j = -1; j <= 1; j++) loadedChunks.add(new ChunkCoordIntPair(newChunkX + i, newChunkZ + j)); + + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.forceChunk(loaderTicket, chunk); + } + } + } + + @Override + public void setDead() { + super.setDead(); + this.clearChunkLoader(); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } } @Override @SideOnly(Side.CLIENT) public boolean isInRangeToRenderDist(double distance) { - return distance < 500000; + return true; } @Override @@ -158,4 +233,28 @@ public class EntityMissileAntiBallistic extends Entity implements IRadarDetectab return RadarTargetType.MISSILE_AB; } + @Override + public String getUnlocalizedName() { + return "radar.target.abm"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER_AB; + } + + @Override + public boolean canBeSeenBy(Object radar) { + return true; + } + + @Override + public boolean paramsApplicable(RadarScanParams params) { + return params.scanMissiles; + } + + @Override + public boolean suppliesRedstone(RadarScanParams params) { + return false; + } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBHole.java b/src/main/java/com/hbm/entity/missile/EntityMissileBHole.java deleted file mode 100644 index dcc595d05..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBHole.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.entity.effect.EntityBlackHole; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileBHole extends EntityMissileBaseAdvanced { - - public EntityMissileBHole(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileBHole(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - if (!this.worldObj.isRemote) - { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 1.5F, true); - - EntityBlackHole bl = new EntityBlackHole(this.worldObj, 1.5F); - bl.posX = this.posX; - bl.posY = this.posY; - bl.posZ = this.posZ; - this.worldObj.spawnEntityInWorld(bl); - } - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.wire_aluminium, 4)); - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.hull_small_aluminium, 2)); - list.add(new ItemStack(ModItems.ducttape, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.grenade_black_hole, 1); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER0; - } - -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java deleted file mode 100644 index 5c0d93b67..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java +++ /dev/null @@ -1,301 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.entity.logic.IChunkLoader; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacket; -import com.hbm.packet.PacketDispatcher; - -import api.hbm.entity.IRadarDetectable; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.Entity; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.util.Vec3; -import net.minecraft.world.ChunkCoordIntPair; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeChunkManager; -import net.minecraftforge.common.ForgeChunkManager.Ticket; -import net.minecraftforge.common.ForgeChunkManager.Type; - -public abstract class EntityMissileBaseAdvanced extends Entity implements IChunkLoader, IRadarDetectable { - - int startX; - int startZ; - int targetX; - int targetZ; - public int velocity; - double decelY; - double accelXZ; - boolean isCluster = false; - private Ticket loaderTicket; - public int health = 50; - - public EntityMissileBaseAdvanced(World p_i1582_1_) { - super(p_i1582_1_); - this.ignoreFrustumCheck = true; - startX = (int) posX; - startZ = (int) posZ; - targetX = (int) posX; - targetZ = (int) posZ; - } - - public boolean canBeCollidedWith() - { - return true; - } - - public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) - { - if (this.isEntityInvulnerable()) - { - return false; - } - else - { - if (!this.isDead && !this.worldObj.isRemote) - { - health -= p_70097_2_; - - if (this.health <= 0) - { - this.setDead(); - this.killMissile(); - } - } - - return true; - } - } - - private void killMissile() { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); - ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); - ExplosionLarge.spawnMissileDebris(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 0.25, getDebris(), getDebrisRareDrop()); - } - - public EntityMissileBaseAdvanced(World world, float x, float y, float z, int a, int b) { - super(world); - this.ignoreFrustumCheck = true; - /*this.posX = x; - this.posY = y; - this.posZ = z;*/ - this.setLocationAndAngles(x, y, z, 0, 0); - startX = (int) x; - startZ = (int) z; - targetX = a; - targetZ = b; - this.motionY = 2; - - Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); - accelXZ = decelY = 1/vector.lengthVector(); - decelY *= 2; - - velocity = 1; - - this.setSize(1.5F, 1.5F); - } - - @Override - protected void entityInit() { - init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); - this.dataWatcher.addObject(8, Integer.valueOf(this.health)); - } - - @Override - protected void readEntityFromNBT(NBTTagCompound nbt) { - motionX = nbt.getDouble("moX"); - motionY = nbt.getDouble("moY"); - motionZ = nbt.getDouble("moZ"); - posX = nbt.getDouble("poX"); - posY = nbt.getDouble("poY"); - posZ = nbt.getDouble("poZ"); - decelY = nbt.getDouble("decel"); - accelXZ = nbt.getDouble("accel"); - targetX = nbt.getInteger("tX"); - targetZ = nbt.getInteger("tZ"); - startX = nbt.getInteger("sX"); - startZ = nbt.getInteger("sZ"); - velocity = nbt.getInteger("veloc"); - } - - @Override - protected void writeEntityToNBT(NBTTagCompound nbt) { - nbt.setDouble("moX", motionX); - nbt.setDouble("moY", motionY); - nbt.setDouble("moZ", motionZ); - nbt.setDouble("poX", posX); - nbt.setDouble("poY", posY); - nbt.setDouble("poZ", posZ); - nbt.setDouble("decel", decelY); - nbt.setDouble("accel", accelXZ); - nbt.setInteger("tX", targetX); - nbt.setInteger("tZ", targetZ); - nbt.setInteger("sX", startX); - nbt.setInteger("sZ", startZ); - nbt.setInteger("veloc", velocity); - } - - protected void rotation() { - float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - for (this.rotationPitch = (float)(Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) - { - ; - } - - while (this.rotationPitch - this.prevRotationPitch >= 180.0F) - { - this.prevRotationPitch += 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw < -180.0F) - { - this.prevRotationYaw -= 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw >= 180.0F) - { - this.prevRotationYaw += 360.0F; - } - } - - @Override - public void onUpdate() { - - if(velocity < 1) - velocity = 1; - if(this.ticksExisted > 40) - velocity = 3; - else if(this.ticksExisted > 20) - velocity = 2; - - this.dataWatcher.updateObject(8, Integer.valueOf(this.health)); - - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - //TODO: instead of crappy skipping, implement a hitscan - for(int i = 0; i < velocity; i++) { - //this.posX += this.motionX; - //this.posY += this.motionY; - //this.posZ += this.motionZ; - this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); - - this.rotation(); - - this.motionY -= decelY; - - Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); - vector = vector.normalize(); - vector.xCoord *= accelXZ; - vector.zCoord *= accelXZ; - - if(motionY > 0) { - motionX += vector.xCoord; - motionZ += vector.zCoord; - } - - if(motionY < 0) { - motionX -= vector.xCoord; - motionZ -= vector.zCoord; - } - - if(!this.worldObj.isRemote) - //this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacket(posX, posY, posZ, 2), - new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 300)); - - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air && - this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.water && - this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.flowing_water) { - - if(!this.worldObj.isRemote) - { - onImpact(); - } - this.setDead(); - return; - } - - loadNeighboringChunks((int)(posX / 16), (int)(posZ / 16)); - - if(motionY < -1 && this.isCluster && !worldObj.isRemote) { - cluster(); - this.setDead(); - return; - } - } - } - - @Override - @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 500000; - } - - public abstract void onImpact(); - - public abstract List getDebris(); - - public abstract ItemStack getDebrisRareDrop(); - - public void cluster() { } - - public void init(Ticket ticket) { - if(!worldObj.isRemote) { - - if(ticket != null) { - - if(loaderTicket == null) { - - loaderTicket = ticket; - loaderTicket.bindEntity(this); - loaderTicket.getModData(); - } - - ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); - } - } - } - - List loadedChunks = new ArrayList(); - - public void loadNeighboringChunks(int newChunkX, int newChunkZ) - { - if(!worldObj.isRemote && loaderTicket != null) - { - for(ChunkCoordIntPair chunk : loadedChunks) - { - ForgeChunkManager.unforceChunk(loaderTicket, chunk); - } - - loadedChunks.clear(); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ - 1)); - - for(ChunkCoordIntPair chunk : loadedChunks) - { - ForgeChunkManager.forceChunk(loaderTicket, chunk); - } - } - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java new file mode 100644 index 000000000..631f75cb0 --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java @@ -0,0 +1,324 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.entity.logic.IChunkLoader; +import com.hbm.entity.projectile.EntityThrowableInterp; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockMutatorFire; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCross; +import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.main.MainRegistry; + +import api.hbm.entity.IRadarDetectable; +import api.hbm.entity.IRadarDetectableNT; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; + +public abstract class EntityMissileBaseNT extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable, IRadarDetectableNT { + + public int startX; + public int startZ; + public int targetX; + public int targetZ; + public double velocity; + public double decelY; + public double accelXZ; + public boolean isCluster = false; + private Ticket loaderTicket; + public int health = 50; + + public EntityMissileBaseNT(World world) { + super(world); + this.ignoreFrustumCheck = true; + startX = (int) posX; + startZ = (int) posZ; + targetX = (int) posX; + targetZ = (int) posZ; + } + + public EntityMissileBaseNT(World world, float x, float y, float z, int a, int b) { + super(world); + this.ignoreFrustumCheck = true; + this.setLocationAndAngles(x, y, z, 0, 0); + startX = (int) x; + startZ = (int) z; + targetX = a; + targetZ = b; + this.motionY = 2; + + Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); + accelXZ = decelY = 1 / vector.lengthVector(); + decelY *= 2; + velocity = 0; + + this.setSize(1.5F, 1.5F); + } + + @Override + public boolean canBeSeenBy(Object radar) { + return true; + } + + @Override + public boolean paramsApplicable(RadarScanParams params) { + if(!params.scanMissiles) return false; + return true; + } + + @Override + public boolean suppliesRedstone(RadarScanParams params) { + if(params.smartMode && this.motionY >= 0) return false; + return true; + } + + @Override + protected void entityInit() { + super.entityInit(); + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + } + + @Override + protected double motionMult() { + return velocity; + } + + @Override + public boolean doesImpactEntities() { + return false; + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(velocity < 4) velocity += 0.025; + + if(!worldObj.isRemote) { + + if(hasPropulsion()) { + this.motionY -= decelY * velocity; + + Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); + vector = vector.normalize(); + vector.xCoord *= accelXZ; + vector.zCoord *= accelXZ; + + if(motionY > 0) { + motionX += vector.xCoord * velocity; + motionZ += vector.zCoord * velocity; + } + + if(motionY < 0) { + motionX -= vector.xCoord * velocity; + motionZ -= vector.zCoord * velocity; + } + } else { + motionX *= 0.99; + motionZ *= 0.99; + + if(motionY > -1.5) + motionY -= 0.05; + } + + if(motionY < -velocity && this.isCluster) { + cluster(); + this.setDead(); + return; + } + + loadNeighboringChunks((int) Math.floor(posX / 16), (int) Math.floor(posZ / 16)); + } else { + this.spawnContrail(); + } + + float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + for(this.rotationPitch = (float) (Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F); + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) this.prevRotationPitch += 360.0F; + while(this.rotationYaw - this.prevRotationYaw < -180.0F) this.prevRotationYaw -= 360.0F; + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) this.prevRotationYaw += 360.0F; + } + + public boolean hasPropulsion() { + return true; + } + + protected void spawnContrail() { + Vec3 vec = Vec3.createVectorHelper(motionX, motionY, motionZ).normalize(); + MainRegistry.proxy.particleControl(posX - vec.xCoord, posY - vec.yCoord, posZ - vec.zCoord, 2); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + motionX = nbt.getDouble("moX"); + motionY = nbt.getDouble("moY"); + motionZ = nbt.getDouble("moZ"); + posX = nbt.getDouble("poX"); + posY = nbt.getDouble("poY"); + posZ = nbt.getDouble("poZ"); + decelY = nbt.getDouble("decel"); + accelXZ = nbt.getDouble("accel"); + targetX = nbt.getInteger("tX"); + targetZ = nbt.getInteger("tZ"); + startX = nbt.getInteger("sX"); + startZ = nbt.getInteger("sZ"); + velocity = nbt.getDouble("veloc"); + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setDouble("moX", motionX); + nbt.setDouble("moY", motionY); + nbt.setDouble("moZ", motionZ); + nbt.setDouble("poX", posX); + nbt.setDouble("poY", posY); + nbt.setDouble("poZ", posZ); + nbt.setDouble("decel", decelY); + nbt.setDouble("accel", accelXZ); + nbt.setInteger("tX", targetX); + nbt.setInteger("tZ", targetZ); + nbt.setInteger("sX", startX); + nbt.setInteger("sZ", startZ); + nbt.setDouble("veloc", velocity); + } + + public boolean canBeCollidedWith() { + return true; + } + + public boolean attackEntityFrom(DamageSource source, float amount) { + if(this.isEntityInvulnerable()) { + return false; + } else { + if(!this.isDead && !this.worldObj.isRemote) { + health -= amount; + + if(this.health <= 0) { + this.killMissile(); + } + } + + return true; + } + } + + protected void killMissile() { + this.setDead(); + ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); + ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); + ExplosionLarge.spawnMissileDebris(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 0.25, getDebris(), getDebrisRareDrop()); + } + + @Override + @SideOnly(Side.CLIENT) + public boolean isInRangeToRenderDist(double distance) { + return true; + } + + @Override + protected void onImpact(MovingObjectPosition mop) { + if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) { + this.onImpact(); + this.setDead(); + } + } + + public abstract void onImpact(); + public abstract List getDebris(); + public abstract ItemStack getDebrisRareDrop(); + public void cluster() { } + + @Override + public double getGravityVelocity() { + return 0.0D; + } + + @Override + protected float getAirDrag() { + return 1F; + } + + @Override + protected float getWaterDrag() { + return 1F; + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote) { + + if(ticket != null) { + + if(loaderTicket == null) { + + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } + } + + List loadedChunks = new ArrayList(); + + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + + clearChunkLoader(); + + loadedChunks.clear(); + loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); + //loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.floor((this.posX + this.motionX * this.motionMult()) / 16D), newChunkZ + (int) Math.floor((this.posZ + this.motionZ * this.motionMult()) / 16D))); + + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.forceChunk(loaderTicket, chunk); + } + } + } + + @Override + public void setDead() { + super.setDead(); + this.clearChunkLoader(); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } + } + + public void explodeStandard(float strength, int resolution, boolean fire, boolean largeSmoke) { + ExplosionVNT xnt = new ExplosionVNT(worldObj, posX, posY, posZ, strength); + xnt.setBlockAllocator(new BlockAllocatorStandard(resolution)); + xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop().withBlockEffect(fire ? new BlockMutatorFire() : null)); + xnt.setEntityProcessor(new EntityProcessorCross(7.5D).withRangeMod(2)); + xnt.setPlayerProcessor(new PlayerProcessorStandard()); + xnt.setSFX(new ExplosionEffectStandard()); + if(largeSmoke) ExplosionLarge.spawnParticles(worldObj, posX, posY, posZ, ExplosionLarge.cloudFunction((int) strength)); + xnt.explode(); + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBunkerBuster.java b/src/main/java/com/hbm/entity/missile/EntityMissileBunkerBuster.java deleted file mode 100644 index b23a22063..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBunkerBuster.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileBunkerBuster extends EntityMissileBaseAdvanced { - - public EntityMissileBunkerBuster(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileBunkerBuster(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - for(int i = 0; i < 15; i++) - { - this.worldObj.createExplosion(this, this.posX, this.posY - i, this.posZ, 5F, true); - } - - ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 5); - ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 5); - ExplosionLarge.spawnRubble(worldObj, this.posX, this.posY, this.posZ, 5); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.thruster_small, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_buster_small); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER1; - } - -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBurst.java b/src/main/java/com/hbm/entity/missile/EntityMissileBurst.java deleted file mode 100644 index b9285eb32..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBurst.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileBurst extends EntityMissileBaseAdvanced { - - public EntityMissileBurst(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileBurst(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - for(int i = 0; i < 4; i++) - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 50.0F, true); - ExplosionLarge.explode(worldObj, posX, posY, posZ, 50.0F, true, true, true); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 16)); - list.add(new ItemStack(ModItems.plate_titanium, 10)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier3, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_generic_large); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBusterStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileBusterStrong.java deleted file mode 100644 index ac4e903b6..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBusterStrong.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileBusterStrong extends EntityMissileBaseAdvanced { - - public EntityMissileBusterStrong(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileBusterStrong(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - for(int i = 0; i < 20; i++) - { - this.worldObj.createExplosion(this, this.posX, this.posY - i, this.posZ, 7.5F, true); - } - ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 8); - ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 8); - ExplosionLarge.spawnRubble(worldObj, this.posX, this.posY, this.posZ, 8); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 10)); - list.add(new ItemStack(ModItems.plate_titanium, 6)); - list.add(new ItemStack(ModItems.thruster_medium, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier2, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_buster_medium); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER2; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCluster.java b/src/main/java/com/hbm/entity/missile/EntityMissileCluster.java deleted file mode 100644 index 38ac71f9a..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCluster.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionChaos; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileCluster extends EntityMissileBaseAdvanced { - - public EntityMissileCluster(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileCluster(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - this.isCluster = true; - } - - @Override - public void onImpact() { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 5F, true); - ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 25, 100); - } - - @Override - public void cluster() { - this.onImpact(); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.thruster_small, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_cluster_small); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER1; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileClusterStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileClusterStrong.java deleted file mode 100644 index 81a3cab63..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileClusterStrong.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionChaos; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileClusterStrong extends EntityMissileBaseAdvanced { - - public EntityMissileClusterStrong(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileClusterStrong(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - this.isCluster = true; - } - - @Override - public void onImpact() { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 15F, true); - ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 50, 100); - } - - @Override - public void cluster() { - this.onImpact(); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 10)); - list.add(new ItemStack(ModItems.plate_titanium, 6)); - list.add(new ItemStack(ModItems.thruster_medium, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier2, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_cluster_medium); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER2; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java index 12a2b845a..7c82eb017 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java @@ -5,11 +5,11 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.bomb.BlockTaint; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityBalefire; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.entity.logic.IChunkLoader; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; import com.hbm.handler.BulletConfigSyncingUtil; @@ -21,77 +21,25 @@ import com.hbm.items.weapon.ItemMissile.WarheadType; import com.hbm.main.MainRegistry; import api.hbm.entity.IRadarDetectable; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.Entity; -import net.minecraft.init.Blocks; +import api.hbm.entity.IRadarDetectableNT; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; -import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; -import net.minecraftforge.common.ForgeChunkManager; -import net.minecraftforge.common.ForgeChunkManager.Ticket; -import net.minecraftforge.common.ForgeChunkManager.Type; -public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarDetectable { +public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLoader, IRadarDetectable { - int startX; - int startZ; - int targetX; - int targetZ; - double velocity; - double decelY; - double accelXZ; - float fuel; - float consumption; - private Ticket loaderTicket; - public int health = 50; - MissileStruct template; + protected float fuel; + protected float consumption; - public EntityMissileCustom(World p_i1582_1_) { - super(p_i1582_1_); - this.ignoreFrustumCheck = true; - startX = (int) posX; - startZ = (int) posZ; - targetX = (int) posX; - targetZ = (int) posZ; - } - - public boolean canBeCollidedWith() { - return true; - } - - public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) { - if(this.isEntityInvulnerable()) { - return false; - } else { - if(!this.isDead && !this.worldObj.isRemote) { - health -= p_70097_2_; - - if(this.health <= 0) { - this.setDead(); - this.killMissile(); - } - } - - return true; - } - } - - private void killMissile() { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); - ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); + public EntityMissileCustom(World world) { + super(world); } public EntityMissileCustom(World world, float x, float y, float z, int a, int b, MissileStruct template) { super(world); this.ignoreFrustumCheck = true; - /* - * this.posX = x; this.posY = y; this.posZ = z; - */ this.setLocationAndAngles(x, y, z, 0, 0); startX = (int) x; startZ = (int) z; @@ -99,21 +47,19 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD targetZ = b; this.motionY = 2; - this.template = template; - - this.dataWatcher.updateObject(9, Item.getIdFromItem(template.warhead)); - this.dataWatcher.updateObject(10, Item.getIdFromItem(template.fuselage)); - if(template.fins != null) - this.dataWatcher.updateObject(11, Item.getIdFromItem(template.fins)); - else - this.dataWatcher.updateObject(11, Integer.valueOf(0)); - this.dataWatcher.updateObject(12, Item.getIdFromItem(template.thruster)); - Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); accelXZ = decelY = 1 / vector.lengthVector(); decelY *= 2; + velocity = 0; - velocity = 0.0; + this.dataWatcher.updateObject(9, Item.getIdFromItem(template.warhead)); + this.dataWatcher.updateObject(10, Item.getIdFromItem(template.fuselage)); + this.dataWatcher.updateObject(12, Item.getIdFromItem(template.thruster)); + if(template.fins != null) { + this.dataWatcher.updateObject(11, Item.getIdFromItem(template.fins)); + } else { + this.dataWatcher.updateObject(11, Integer.valueOf(0)); + } ItemMissile fuselage = (ItemMissile) template.fuselage; ItemMissile thruster = (ItemMissile) template.thruster; @@ -125,43 +71,39 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD } @Override - protected void entityInit() { - init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); - this.dataWatcher.addObject(8, Integer.valueOf(this.health)); - - if(template != null) { - this.dataWatcher.addObject(9, Integer.valueOf(Item.getIdFromItem(template.warhead))); - this.dataWatcher.addObject(10, Integer.valueOf(Item.getIdFromItem(template.fuselage))); - - if(template.fins != null) - this.dataWatcher.addObject(11, Integer.valueOf(Item.getIdFromItem(template.fins))); - else - this.dataWatcher.addObject(11, Integer.valueOf(0)); - - this.dataWatcher.addObject(12, Integer.valueOf(Item.getIdFromItem(template.thruster))); - } else { - this.dataWatcher.addObject(9, Integer.valueOf(0)); - this.dataWatcher.addObject(10, Integer.valueOf(0)); - this.dataWatcher.addObject(11, Integer.valueOf(0)); - this.dataWatcher.addObject(12, Integer.valueOf(0)); + protected void killMissile() { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); + ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); + } + + @Override + public void onUpdate() { + + if(!worldObj.isRemote) { + if(this.hasPropulsion()) this.fuel -= this.consumption; } + + super.onUpdate(); } @Override - protected void readEntityFromNBT(NBTTagCompound nbt) { - motionX = nbt.getDouble("moX"); - motionY = nbt.getDouble("moY"); - motionZ = nbt.getDouble("moZ"); - posX = nbt.getDouble("poX"); - posY = nbt.getDouble("poY"); - posZ = nbt.getDouble("poZ"); - decelY = nbt.getDouble("decel"); - accelXZ = nbt.getDouble("accel"); - targetX = nbt.getInteger("tX"); - targetZ = nbt.getInteger("tZ"); - startX = nbt.getInteger("sX"); - startZ = nbt.getInteger("sZ"); - velocity = nbt.getInteger("veloc"); + public boolean hasPropulsion() { + return this.fuel > 0; + } + + @Override + protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(8, Integer.valueOf(this.health)); + this.dataWatcher.addObject(9, Integer.valueOf(0)); + this.dataWatcher.addObject(10, Integer.valueOf(0)); + this.dataWatcher.addObject(11, Integer.valueOf(0)); + this.dataWatcher.addObject(12, Integer.valueOf(0)); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); fuel = nbt.getFloat("fuel"); consumption = nbt.getFloat("consumption"); this.dataWatcher.updateObject(9, nbt.getInteger("warhead")); @@ -171,20 +113,8 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD } @Override - protected void writeEntityToNBT(NBTTagCompound nbt) { - nbt.setDouble("moX", motionX); - nbt.setDouble("moY", motionY); - nbt.setDouble("moZ", motionZ); - nbt.setDouble("poX", posX); - nbt.setDouble("poY", posY); - nbt.setDouble("poZ", posZ); - nbt.setDouble("decel", decelY); - nbt.setDouble("accel", accelXZ); - nbt.setInteger("tX", targetX); - nbt.setInteger("tZ", targetZ); - nbt.setInteger("sX", startX); - nbt.setInteger("sZ", startZ); - nbt.setDouble("veloc", velocity); + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); nbt.setFloat("fuel", fuel); nbt.setFloat("consumption", consumption); nbt.setInteger("warhead", this.dataWatcher.getWatchableObjectInt(9)); @@ -192,118 +122,28 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD nbt.setInteger("fins", this.dataWatcher.getWatchableObjectInt(11)); nbt.setInteger("thruster", this.dataWatcher.getWatchableObjectInt(12)); } + + @Override + protected void spawnContrail() { - protected void rotation() { - float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + Vec3 v = Vec3.createVectorHelper(motionX, motionY, motionZ).normalize(); + String smoke = ""; + ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(10)); + FuelType type = (FuelType) part.attributes[0]; - for(this.rotationPitch = (float) (Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { - ; + switch(type) { + case BALEFIRE: smoke = "exBalefire"; break; + case HYDROGEN: smoke = "exHydrogen"; break; + case KEROSENE: smoke = "exKerosene"; break; + case SOLID: smoke = "exSolid"; break; + case XENON: break; } - while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { - this.prevRotationPitch += 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw < -180.0F) { - this.prevRotationYaw -= 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { - this.prevRotationYaw += 360.0F; - } + if(!smoke.isEmpty()) for(int i = 0; i < velocity; i++) MainRegistry.proxy.spawnParticle(posX - v.xCoord * i, posY - v.yCoord * i, posZ - v.zCoord * i, smoke, null); } @Override - public void onUpdate() { - this.dataWatcher.updateObject(8, Integer.valueOf(this.health)); - - this.setLocationAndAngles(posX + this.motionX * velocity, posY + this.motionY * velocity, posZ + this.motionZ * velocity, 0, 0); - - this.rotation(); - - if(fuel > 0 || worldObj.isRemote) { - - fuel -= consumption; - - this.motionY -= decelY * velocity; - - Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); - vector = vector.normalize(); - vector.xCoord *= accelXZ * velocity; - vector.zCoord *= accelXZ * velocity; - - if(motionY > 0) { - motionX += vector.xCoord; - motionZ += vector.zCoord; - } - - if(motionY < 0) { - motionX -= vector.xCoord; - motionZ -= vector.zCoord; - } - - if(velocity < 5) - velocity += 0.01; - } else { - - motionX *= 0.99; - motionZ *= 0.99; - - if(motionY > -1.5) - motionY -= 0.05; - } - - if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.water && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.flowing_water) { - - if(!this.worldObj.isRemote) { - onImpact(); - } - this.setDead(); - return; - } - - if(this.worldObj.isRemote) { - - Vec3 v = Vec3.createVectorHelper(motionX, motionY, motionZ); - v = v.normalize(); - - String smoke = ""; - - ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(10)); - FuelType type = (FuelType) part.attributes[0]; - - switch(type) { - case BALEFIRE: - smoke = "exBalefire"; - break; - case HYDROGEN: - smoke = "exHydrogen"; - break; - case KEROSENE: - smoke = "exKerosene"; - break; - case SOLID: - smoke = "exSolid"; - break; - case XENON: - break; - } - - for(int i = 0; i < velocity; i++) - MainRegistry.proxy.spawnParticle(posX - v.xCoord * i, posY - v.yCoord * i, posZ - v.zCoord * i, smoke, null); - } - - loadNeighboringChunks((int) (posX / 16), (int) (posZ / 16)); - } - - @Override - @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) { - return distance < 2500000; - } - - public void onImpact() { + public void onImpact() { //TODO: demolish this steaming pile of shit ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(9)); @@ -327,11 +167,7 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD case NUCLEAR: case TX: worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int) strength, posX, posY, posZ)); - EntityNukeCloudSmall nuke = new EntityNukeCloudSmall(worldObj, 1000, strength * 0.005F); - nuke.posX = posX; - nuke.posY = posY; - nuke.posZ = posZ; - worldObj.spawnEntityInWorld(nuke); + EntityNukeTorex.statFac(worldObj, posX, posY, posZ, strength); break; case BALEFIRE: EntityBalefire bf = new EntityBalefire(worldObj); @@ -340,15 +176,11 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD bf.posZ = this.posZ; bf.destructionRange = (int) strength; worldObj.spawnEntityInWorld(bf); - worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFacBale(worldObj, posX, posY + 5, posZ, strength * 1.5F, 1000)); + EntityNukeTorex.statFacBale(worldObj, posX, posY, posZ, strength); break; case N2: worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(worldObj, (int) strength, posX, posY, posZ)); - EntityNukeCloudSmall n2 = new EntityNukeCloudSmall(worldObj, 1000, strength * 0.005F); - n2.posX = posX; - n2.posY = posY; - n2.posZ = posZ; - worldObj.spawnEntityInWorld(n2); + EntityNukeTorex.statFac(worldObj, posX, posY, posZ, strength); break; case TAINT: int r = (int) strength; @@ -371,7 +203,7 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD Vec3 vec = Vec3.createVectorHelper(0.5, 0, 0); for(int i = 0; i < count; i++) { - EntityBulletBase blade = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.TURBINE); + EntityBulletBaseNT blade = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.TURBINE); blade.setPositionAndRotation(this.posX - this.motionX, this.posY - this.motionY + rand.nextGaussian(), this.posZ - this.motionZ, 0, 0); blade.motionX = vec.xCoord; blade.motionZ = vec.zCoord; @@ -386,67 +218,54 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD } } - public void init(Ticket ticket) { - if(!worldObj.isRemote) { - - if(ticket != null) { - - if(loaderTicket == null) { - - loaderTicket = ticket; - loaderTicket.bindEntity(this); - loaderTicket.getModData(); - } - - ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); - } - } - } - - List loadedChunks = new ArrayList(); - - public void loadNeighboringChunks(int newChunkX, int newChunkZ) { - if(!worldObj.isRemote && loaderTicket != null) { - for(ChunkCoordIntPair chunk : loadedChunks) { - ForgeChunkManager.unforceChunk(loaderTicket, chunk); - } - - loadedChunks.clear(); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ - 1)); - - for(ChunkCoordIntPair chunk : loadedChunks) { - ForgeChunkManager.forceChunk(loaderTicket, chunk); - } - } - } - @Override public RadarTargetType getTargetType() { ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(10)); - PartSize top = part.top; PartSize bottom = part.bottom; - if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_10) - return RadarTargetType.MISSILE_10; - if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_15) - return RadarTargetType.MISSILE_10_15; - if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_15) - return RadarTargetType.MISSILE_15; - if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_20) - return RadarTargetType.MISSILE_15_20; - if(top == PartSize.SIZE_20 && bottom == PartSize.SIZE_20) - return RadarTargetType.MISSILE_20; + if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_10) return RadarTargetType.MISSILE_10; + if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_15) return RadarTargetType.MISSILE_10_15; + if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_15) return RadarTargetType.MISSILE_15; + if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_20) return RadarTargetType.MISSILE_15_20; + if(top == PartSize.SIZE_20 && bottom == PartSize.SIZE_20) return RadarTargetType.MISSILE_20; - return RadarTargetType.PLAYER; + return RadarTargetType.MISSILE_TIER1; } + + @Override + public String getUnlocalizedName() { + + ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(10)); + PartSize top = part.top; + PartSize bottom = part.bottom; + + if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_10) return "radar.target.custom10"; + if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_15) return "radar.target.custom1015"; + if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_15) return "radar.target.custom15"; + if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_20) return "radar.target.custom1520"; + if(top == PartSize.SIZE_20 && bottom == PartSize.SIZE_20) return "radar.target.custom20"; + + return "radar.target.custom"; + } + + @Override + public int getBlipLevel() { + + ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(10)); + PartSize top = part.top; + PartSize bottom = part.bottom; + + if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_10) return IRadarDetectableNT.TIER10; + if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_15) return IRadarDetectableNT.TIER10_15; + if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_15) return IRadarDetectableNT.TIER15; + if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_20) return IRadarDetectableNT.TIER15_20; + if(top == PartSize.SIZE_20 && bottom == PartSize.SIZE_20) return IRadarDetectableNT.TIER20; + + return IRadarDetectableNT.TIER1; + } + + @Override public List getDebris() { return new ArrayList(); } + @Override public ItemStack getDebrisRareDrop() { return null; } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java b/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java index 7b1d42a36..63e14e7f3 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java @@ -4,10 +4,11 @@ import java.util.List; import com.hbm.explosion.ExplosionLarge; +import api.hbm.entity.IRadarDetectableNT; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -public class EntityMissileDoomsday extends EntityMissileBaseAdvanced { +public class EntityMissileDoomsday extends EntityMissileBaseNT { public EntityMissileDoomsday(World p_i1582_1_) { super(p_i1582_1_); @@ -108,4 +109,14 @@ public class EntityMissileDoomsday extends EntityMissileBaseAdvanced { public RadarTargetType getTargetType() { return RadarTargetType.MISSILE_TIER4; } + + @Override + public String getUnlocalizedName() { + return "radar.target.doomsday"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER4; + } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileDrill.java b/src/main/java/com/hbm/entity/missile/EntityMissileDrill.java deleted file mode 100644 index 3c0ab3442..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileDrill.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionNT; -import com.hbm.explosion.ExplosionNT.ExAttrib; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileDrill extends EntityMissileBaseAdvanced { - - public EntityMissileDrill(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileDrill(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - for(int i = 0; i < 30; i++) - { - ExplosionNT explosion = new ExplosionNT(worldObj, this, this.posX, this.posY - i, this.posZ, 10F); - explosion.addAllAttrib(ExAttrib.ERRODE); - explosion.explode(); //an explosion exploded! - } - ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 25); - ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 12); - ExplosionLarge.jolt(worldObj, this.posX, this.posY, this.posZ, 10, 50, 1); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 16)); - list.add(new ItemStack(ModItems.plate_titanium, 10)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier3, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_buster_large); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileEMP.java b/src/main/java/com/hbm/entity/missile/EntityMissileEMP.java deleted file mode 100644 index bd6ce0281..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileEMP.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.entity.effect.EntityEMPBlast; -import com.hbm.explosion.ExplosionNukeGeneric; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileEMP extends EntityMissileBaseAdvanced { - - public EntityMissileEMP(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileEMP(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - if (!this.worldObj.isRemote) - { - ExplosionNukeGeneric.empBlast(worldObj, (int)posX, (int)posY, (int)posZ, 50); - EntityEMPBlast wave = new EntityEMPBlast(worldObj, 50); - wave.posX = posX; - wave.posY = posY; - wave.posZ = posZ; - worldObj.spawnEntityInWorld(wave); - } - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.wire_aluminium, 4)); - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.hull_small_aluminium, 2)); - list.add(new ItemStack(ModItems.ducttape, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModBlocks.emp_bomb, 1); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER0; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileEMPStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileEMPStrong.java deleted file mode 100644 index 4253cbaa6..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileEMPStrong.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.entity.logic.EntityEMP; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileEMPStrong extends EntityMissileBaseAdvanced { - - public EntityMissileEMPStrong(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileEMPStrong(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - - EntityEMP emp = new EntityEMP(worldObj); - emp.posX = posX; - emp.posY = posY; - emp.posZ = posZ; - - worldObj.spawnEntityInWorld(emp); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 10)); - list.add(new ItemStack(ModItems.plate_titanium, 6)); - list.add(new ItemStack(ModItems.thruster_medium, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier2, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_generic_medium); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER2; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileEndo.java b/src/main/java/com/hbm/entity/missile/EntityMissileEndo.java deleted file mode 100644 index e1205b606..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileEndo.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionThermo; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileEndo extends EntityMissileBaseAdvanced { - - public EntityMissileEndo(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileEndo(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true); - ExplosionThermo.freeze(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 30); - ExplosionThermo.freezer(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 40); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 10)); - list.add(new ItemStack(ModItems.plate_steel, 14)); - list.add(new ItemStack(ModItems.plate_aluminium, 8)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_thermo_exo); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileExo.java b/src/main/java/com/hbm/entity/missile/EntityMissileExo.java deleted file mode 100644 index 494bebb06..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileExo.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionThermo; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileExo extends EntityMissileBaseAdvanced { - - public EntityMissileExo(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileExo(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true); - ExplosionThermo.scorch(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 30); - ExplosionThermo.setEntitiesOnFire(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 40); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 10)); - list.add(new ItemStack(ModItems.plate_steel, 14)); - list.add(new ItemStack(ModItems.plate_aluminium, 8)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_thermo_exo); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileGeneric.java b/src/main/java/com/hbm/entity/missile/EntityMissileGeneric.java deleted file mode 100644 index b1ad0f37b..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileGeneric.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileGeneric extends EntityMissileBaseAdvanced { - - public EntityMissileGeneric(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileGeneric(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.thruster_small, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_generic_small); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER1; - } - - /*public EntityMissileGeneric(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileGeneric(World p_i1582_1_, int x, int z, double a, double b, double c) { - super(p_i1582_1_, x, z, a, b, c); - } - - @Override - public void onUpdate() - { - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; - - this.rotation(); - - switch(phase) - { - case 0: - if(loc0 != null) - { - freePizzaGoddammit(loc0); - if(loc0.posX + 2 > this.posX && loc0.posX - 2 < this.posX && - loc0.posY + 2 > this.posY && loc0.posY - 2 < this.posY && - loc0.posZ + 2 > this.posZ && loc0.posZ - 2 < this.posZ) - { - this.phase = 1; - } - } - break; - case 1: - if(loc1 != null) - { - freePizzaGoddammit(loc1); - if(loc1.posX + 2 > this.posX && loc1.posX - 2 < this.posX && - loc1.posY + 2 > this.posY && loc1.posY - 2 < this.posY && - loc1.posZ + 2 > this.posZ && loc1.posZ - 2 < this.posZ) - { - this.phase = 2; - } - } - break; - case 2: - if(loc2 != null) - { - freePizzaGoddammit(loc2); - if(loc2.posX + 2 > this.posX && loc2.posX - 2 < this.posX && - loc2.posY + 2 > this.posY && loc2.posY - 2 < this.posY && - loc2.posZ + 2 > this.posZ && loc2.posZ - 2 < this.posZ) - { - this.phase = 3; - } - } - break; - case 3: - if(loc3 != null) - { - freePizzaGoddammit(loc3); - if(loc3.posX + 2 > this.posX && loc3.posX - 2 < this.posX && - loc3.posY + 2 > this.posY && loc3.posY - 2 < this.posY && - loc3.posZ + 2 > this.posZ && loc3.posZ - 2 < this.posZ) - { - this.phase = 4; - } - } - break; - case 4: - if(loc4 != null) - { - freePizzaGoddammit(loc4); - if(loc4.posX + 2 > this.posX && loc4.posX - 2 < this.posX && - loc4.posY + 2 > this.posY && loc4.posY - 2 < this.posY && - loc4.posZ + 2 > this.posZ && loc4.posZ - 2 < this.posZ) - { - this.phase = 5; - } - } - break; - case 5: - if(loc5 != null) - { - freePizzaGoddammit(loc5); - if(loc5.posX + 2 > this.posX && loc5.posX - 2 < this.posX && - loc5.posY + 2 > this.posY && loc5.posY - 2 < this.posY && - loc5.posZ + 2 > this.posZ && loc5.posZ - 2 < this.posZ) - { - this.phase = 6; - } - } - break; - case 6: - if(loc6 != null) - { - freePizzaGoddammit(loc6); - if(loc6.posX + 2 > this.posX && loc6.posX - 2 < this.posX && - loc6.posY + 2 > this.posY && loc6.posY - 2 < this.posY && - loc6.posZ + 2 > this.posZ && loc6.posZ - 2 < this.posZ) - { - this.phase = 7; - } - } - break; - case 7: - if(loc7 != null) - { - freePizzaGoddammit(loc7); - if(loc7.posX + 2 > this.posX && loc7.posX - 2 < this.posX && - loc7.posY + 2 > this.posY && loc7.posY - 2 < this.posY && - loc7.posZ + 2 > this.posZ && loc7.posZ - 2 < this.posZ) - { - this.phase = 8; - } - } - break; - case 8: - if(target != null) - { - freePizzaGoddammit(target); - if(target.posX + 2 > this.posX && target.posX - 2 < this.posX && - target.posY + 2 > this.posY && target.posY - 2 < this.posY && - target.posZ + 2 > this.posZ && target.posZ - 2 < this.posZ) - { - this.phase = -1; - } - } - break; - } - - this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); - - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air && this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.water && this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.flowing_water) - { - if(!this.worldObj.isRemote) - { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true); - } - this.setDead(); - } - }*/ - -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileIncendiary.java b/src/main/java/com/hbm/entity/missile/EntityMissileIncendiary.java deleted file mode 100644 index 709e2e1f3..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileIncendiary.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileIncendiary extends EntityMissileBaseAdvanced { - - public EntityMissileIncendiary(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileIncendiary(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 10.0F, true, true, true); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.thruster_small, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_incendiary_small); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER1; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java deleted file mode 100644 index 56e8b86d6..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionChaos; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileIncendiaryStrong extends EntityMissileBaseAdvanced { - - public EntityMissileIncendiaryStrong(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileIncendiaryStrong(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 25.0F, true, true, true); - ExplosionChaos.flameDeath(this.worldObj, (int)((float)this.posX + 0.5F), (int)((float)this.posY + 0.5F), (int)((float)this.posZ + 0.5F), 25); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 10)); - list.add(new ItemStack(ModItems.plate_titanium, 6)); - list.add(new ItemStack(ModItems.thruster_medium, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier2, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_incendiary_medium); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER2; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileInferno.java b/src/main/java/com/hbm/entity/missile/EntityMissileInferno.java deleted file mode 100644 index 4109390b0..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileInferno.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionChaos; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileInferno extends EntityMissileBaseAdvanced { - - public EntityMissileInferno(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileInferno(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 35.0F, true, true, true); - ExplosionChaos.burn(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 10); - ExplosionChaos.flameDeath(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 25); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 16)); - list.add(new ItemStack(ModItems.plate_titanium, 10)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier3, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_incendiary_large); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java b/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java deleted file mode 100644 index a85d7a980..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionNukeSmall; -import com.hbm.items.ItemAmmoEnums.AmmoFatman; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileMicro extends EntityMissileBaseAdvanced { - - public EntityMissileMicro(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileMicro(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - if(!this.worldObj.isRemote) { - ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.PARAMS_HIGH); - } - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.wire_aluminium, 4)); - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.hull_small_aluminium, 2)); - list.add(new ItemStack(ModItems.ducttape, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER0; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileMirv.java b/src/main/java/com/hbm/entity/missile/EntityMissileMirv.java deleted file mode 100644 index 627d074a1..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileMirv.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeCloudSmall; -import com.hbm.entity.logic.EntityNukeExplosionMK5; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileMirv extends EntityMissileBaseAdvanced { - - public EntityMissileMirv(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileMirv(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - - worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ)); - - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(this.worldObj, 1000, BombConfig.missileRadius * 2 * 0.005F); - entity2.posX = this.posX; - entity2.posY = this.posY - 9; - entity2.posZ = this.posZ; - this.worldObj.spawnEntityInWorld(entity2); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 16)); - list.add(new ItemStack(ModItems.plate_steel, 20)); - list.add(new ItemStack(ModItems.plate_aluminium, 12)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier5, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_mirv); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER4; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileNuclear.java b/src/main/java/com/hbm/entity/missile/EntityMissileNuclear.java deleted file mode 100644 index 76d2d3e1e..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileNuclear.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeCloudSmall; -import com.hbm.entity.logic.EntityNukeExplosionMK5; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileNuclear extends EntityMissileBaseAdvanced { - - public EntityMissileNuclear(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileNuclear(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - - this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ)); - - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(this.worldObj, 1000, BombConfig.missileRadius * 0.005F); - entity2.posX = this.posX; - entity2.posY = this.posY; - entity2.posZ = this.posZ; - this.worldObj.spawnEntityInWorld(entity2); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 16)); - list.add(new ItemStack(ModItems.plate_steel, 20)); - list.add(new ItemStack(ModItems.plate_aluminium, 12)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_nuclear); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER4; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileRain.java b/src/main/java/com/hbm/entity/missile/EntityMissileRain.java deleted file mode 100644 index 877fe54c4..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileRain.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionChaos; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileRain extends EntityMissileBaseAdvanced { - - public EntityMissileRain(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileRain(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - this.isCluster = true; - } - - @Override - public void onImpact() { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 25F, true); - ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 100, 100); - } - - @Override - public void cluster() { - this.onImpact(); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 16)); - list.add(new ItemStack(ModItems.plate_titanium, 10)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier3, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_cluster_large); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileSchrabidium.java b/src/main/java/com/hbm/entity/missile/EntityMissileSchrabidium.java deleted file mode 100644 index c197026bc..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileSchrabidium.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityCloudFleija; -import com.hbm.entity.logic.EntityNukeExplosionMK3; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileSchrabidium extends EntityMissileBaseAdvanced { - - public EntityMissileSchrabidium(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileSchrabidium(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - if(!this.worldObj.isRemote) { - EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, posX, posY, posZ, BombConfig.aSchrabRadius); - if(!ex.isDead) { - worldObj.spawnEntityInWorld(ex); - - EntityCloudFleija cloud = new EntityCloudFleija(this.worldObj, BombConfig.aSchrabRadius); - cloud.posX = this.posX; - cloud.posY = this.posY; - cloud.posZ = this.posZ; - this.worldObj.spawnEntityInWorld(cloud); - } - } - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.wire_aluminium, 4)); - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.hull_small_aluminium, 2)); - list.add(new ItemStack(ModItems.ducttape, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.powder_schrabidium, 1); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER0; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java index c662a383d..356588f64 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java @@ -11,13 +11,14 @@ import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import api.hbm.entity.IRadarDetectableNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class EntityMissileShuttle extends EntityMissileBaseAdvanced { +public class EntityMissileShuttle extends EntityMissileBaseNT { public EntityMissileShuttle(World p_i1582_1_) { super(p_i1582_1_); @@ -64,4 +65,14 @@ public class EntityMissileShuttle extends EntityMissileBaseAdvanced { public RadarTargetType getTargetType() { return RadarTargetType.MISSILE_TIER3; } + + @Override + public String getUnlocalizedName() { + return "radar.target.shuttle"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER3; + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileStrong.java deleted file mode 100644 index 60d2486d2..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileStrong.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileStrong extends EntityMissileBaseAdvanced { - - public EntityMissileStrong(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileStrong(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 25.0F, true, true, true); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 10)); - list.add(new ItemStack(ModItems.plate_titanium, 6)); - list.add(new ItemStack(ModItems.thruster_medium, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier2, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_generic_medium); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER2; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTaint.java b/src/main/java/com/hbm/entity/missile/EntityMissileTaint.java deleted file mode 100644 index b536b4410..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTaint.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.bomb.BlockTaint; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileTaint extends EntityMissileBaseAdvanced { - - public EntityMissileTaint(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileTaint(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true); - - for(int i = 0; i < 100; i++) { - int a = rand.nextInt(11) + (int)this.posX - 5; - int b = rand.nextInt(11) + (int)this.posY - 5; - int c = rand.nextInt(11) + (int)this.posZ - 5; - if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && BlockTaint.hasPosNeightbour(worldObj, a, b, c)) - worldObj.setBlock(a, b, c, ModBlocks.taint); - } - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.wire_aluminium, 4)); - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.hull_small_aluminium, 2)); - list.add(new ItemStack(ModItems.powder_magic, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.powder_spark_mix, 1); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER0; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java new file mode 100644 index 000000000..d1d6ecba9 --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java @@ -0,0 +1,121 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.bomb.BlockTaint; +import com.hbm.config.BombConfig; +import com.hbm.entity.effect.EntityBlackHole; +import com.hbm.entity.effect.EntityCloudFleija; +import com.hbm.entity.effect.EntityEMPBlast; +import com.hbm.entity.logic.EntityNukeExplosionMK3; +import com.hbm.explosion.ExplosionNukeGeneric; +import com.hbm.explosion.ExplosionNukeSmall; +import com.hbm.items.ModItems; + +import api.hbm.entity.IRadarDetectableNT; + +import com.hbm.items.ItemAmmoEnums.AmmoFatman; + +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public abstract class EntityMissileTier0 extends EntityMissileBaseNT { + + public EntityMissileTier0(World world) { super(world); } + public EntityMissileTier0(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + + @Override + public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.wire_aluminium, 4)); + list.add(new ItemStack(ModItems.plate_titanium, 4)); + list.add(new ItemStack(ModItems.hull_small_aluminium, 2)); + list.add(new ItemStack(ModItems.ducttape, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); + return list; + } + + @Override + public RadarTargetType getTargetType() { + return RadarTargetType.MISSILE_TIER0; + } + + @Override + public String getUnlocalizedName() { + return "radar.target.tier0"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER0; + } + + public static class EntityMissileMicro extends EntityMissileTier0 { + public EntityMissileMicro(World world) { super(world); } + public EntityMissileMicro(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.PARAMS_HIGH); } + @Override public ItemStack getDebrisRareDrop() { return ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH); } + } + + public static class EntityMissileSchrabidium extends EntityMissileTier0 { + public EntityMissileSchrabidium(World world) { super(world); } + public EntityMissileSchrabidium(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, posX, posY, posZ, BombConfig.aSchrabRadius); + if(!ex.isDead) { + worldObj.spawnEntityInWorld(ex); + EntityCloudFleija cloud = new EntityCloudFleija(this.worldObj, BombConfig.aSchrabRadius); + cloud.posX = this.posX; + cloud.posY = this.posY; + cloud.posZ = this.posZ; + this.worldObj.spawnEntityInWorld(cloud); + } + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.powder_schrabidium, 1); } + } + + public static class EntityMissileBHole extends EntityMissileTier0 { + public EntityMissileBHole(World world) { super(world); } + public EntityMissileBHole(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 1.5F, true); + EntityBlackHole bl = new EntityBlackHole(this.worldObj, 1.5F); + bl.posX = this.posX; + bl.posY = this.posY; + bl.posZ = this.posZ; + this.worldObj.spawnEntityInWorld(bl); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.grenade_black_hole, 1); } + } + + public static class EntityMissileTaint extends EntityMissileTier0 { + public EntityMissileTaint(World world) { super(world); } + public EntityMissileTaint(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true); + for(int i = 0; i < 100; i++) { + int a = rand.nextInt(11) + (int) this.posX - 5; + int b = rand.nextInt(11) + (int) this.posY - 5; + int c = rand.nextInt(11) + (int) this.posZ - 5; + if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && BlockTaint.hasPosNeightbour(worldObj, a, b, c)) worldObj.setBlock(a, b, c, ModBlocks.taint); + } + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.powder_spark_mix, 1); } + } + + public static class EntityMissileEMP extends EntityMissileTier0 { + public EntityMissileEMP(World world) { super(world); } + public EntityMissileEMP(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + ExplosionNukeGeneric.empBlast(worldObj, (int)posX, (int)posY, (int)posZ, 50); + EntityEMPBlast wave = new EntityEMPBlast(worldObj, 50); + wave.posX = posX; + wave.posY = posY; + wave.posZ = posZ; + worldObj.spawnEntityInWorld(wave); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModBlocks.emp_bomb, 1); } + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java new file mode 100644 index 000000000..6fb39039e --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java @@ -0,0 +1,88 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.explosion.ExplosionChaos; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; + +import api.hbm.entity.IRadarDetectableNT; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public abstract class EntityMissileTier1 extends EntityMissileBaseNT { + + public EntityMissileTier1(World world) { super(world); } + public EntityMissileTier1(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + + @Override + public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.plate_titanium, 4)); + list.add(new ItemStack(ModItems.thruster_small, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); + return list; + } + + @Override + public RadarTargetType getTargetType() { + return RadarTargetType.MISSILE_TIER1; + } + + @Override + public String getUnlocalizedName() { + return "radar.target.tier1"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER1; + } + + public static class EntityMissileGeneric extends EntityMissileTier1 { + public EntityMissileGeneric(World world) { super(world); } + public EntityMissileGeneric(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { this.explodeStandard(15F, 24, false, true); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_small); } + } + + public static class EntityMissileDecoy extends EntityMissileTier1 { + public EntityMissileDecoy(World world) { super(world); } + public EntityMissileDecoy(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { worldObj.newExplosion(this, posX, posY, posZ, 4F, false, false); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.ingot_steel); } + @Override public String getUnlocalizedName() { return "radar.target.tier4"; } + @Override public int getBlipLevel() { return IRadarDetectableNT.TIER4; } + } + + public static class EntityMissileIncendiary extends EntityMissileTier1 { + public EntityMissileIncendiary(World world) { super(world); } + public EntityMissileIncendiary(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { this.explodeStandard(15F, 24, true, true); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_incendiary_small); } + } + + public static class EntityMissileCluster extends EntityMissileTier1 { + public EntityMissileCluster(World world) { super(world); } + public EntityMissileCluster(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); this.isCluster = true; } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 5F, true); + ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 25, 100); + } + @Override public void cluster() { this.onImpact(); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_cluster_small); } + } + + public static class EntityMissileBunkerBuster extends EntityMissileTier1 { + public EntityMissileBunkerBuster(World world) { super(world); } + public EntityMissileBunkerBuster(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + for(int i = 0; i < 15; i++) this.worldObj.createExplosion(this, this.posX, this.posY - i, this.posZ, 5F, true); + ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 5); + ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 5); + ExplosionLarge.spawnRubble(worldObj, this.posX, this.posY, this.posZ, 5); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_buster_small); } + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java new file mode 100644 index 000000000..a0b71922f --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java @@ -0,0 +1,99 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.entity.logic.EntityEMP; +import com.hbm.explosion.ExplosionChaos; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; + +import api.hbm.entity.IRadarDetectableNT; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public abstract class EntityMissileTier2 extends EntityMissileBaseNT { + + public EntityMissileTier2(World world) { super(world); } + public EntityMissileTier2(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 10)); + list.add(new ItemStack(ModItems.plate_titanium, 6)); + list.add(new ItemStack(ModItems.thruster_medium, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier2, 1)); + + return list; + } + + @Override + public RadarTargetType getTargetType() { + return RadarTargetType.MISSILE_TIER2; + } + + @Override + public String getUnlocalizedName() { + return "radar.target.tier2"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER2; + } + + public static class EntityMissileStrong extends EntityMissileTier2 { + public EntityMissileStrong(World world) { super(world); } + public EntityMissileStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { this.explodeStandard(30F, 32, false, true); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_medium); } + } + + public static class EntityMissileIncendiaryStrong extends EntityMissileTier2 { + public EntityMissileIncendiaryStrong(World world) { super(world); } + public EntityMissileIncendiaryStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + this.explodeStandard(30F, 32, true, true); + ExplosionChaos.flameDeath(this.worldObj, (int)((float)this.posX + 0.5F), (int)((float)this.posY + 0.5F), (int)((float)this.posZ + 0.5F), 25); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_incendiary_medium); } + } + + public static class EntityMissileClusterStrong extends EntityMissileTier2 { + public EntityMissileClusterStrong(World world) { super(world); } + public EntityMissileClusterStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); this.isCluster = true; } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 15F, true); + ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 50, 100); + } + @Override public void cluster() { this.onImpact(); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_cluster_medium); } + } + + public static class EntityMissileBusterStrong extends EntityMissileTier2 { + public EntityMissileBusterStrong(World world) { super(world); } + public EntityMissileBusterStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + for(int i = 0; i < 20; i++) this.worldObj.createExplosion(this, this.posX, this.posY - i, this.posZ, 7.5F, true); + ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 8); + ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 8); + ExplosionLarge.spawnRubble(worldObj, this.posX, this.posY, this.posZ, 8); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_buster_medium); } + } + + public static class EntityMissileEMPStrong extends EntityMissileTier2 { + public EntityMissileEMPStrong(World world) { super(world); } + public EntityMissileEMPStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + EntityEMP emp = new EntityEMP(worldObj); + emp.posX = posX; + emp.posY = posY; + emp.posZ = posZ; + worldObj.spawnEntityInWorld(emp); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_medium); } + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java new file mode 100644 index 000000000..e046a2f6c --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java @@ -0,0 +1,135 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.explosion.ExplosionChaos; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.explosion.ExplosionNT; +import com.hbm.explosion.ExplosionThermo; +import com.hbm.explosion.ExplosionNT.ExAttrib; +import com.hbm.items.ModItems; + +import api.hbm.entity.IRadarDetectableNT; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public abstract class EntityMissileTier3 extends EntityMissileBaseNT { + + public EntityMissileTier3(World world) { super(world); } + public EntityMissileTier3(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 16)); + list.add(new ItemStack(ModItems.plate_titanium, 10)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier3, 1)); + + return list; + } + + @Override + public RadarTargetType getTargetType() { + return RadarTargetType.MISSILE_TIER3; + } + + @Override + public String getUnlocalizedName() { + return "radar.target.tier3"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER3; + } + + public static class EntityMissileBurst extends EntityMissileTier3 { + public EntityMissileBurst(World world) { super(world); } + public EntityMissileBurst(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + this.explodeStandard(50F, 48, false, true); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_large); } + } + + public static class EntityMissileInferno extends EntityMissileTier3 { + public EntityMissileInferno(World world) { super(world); } + public EntityMissileInferno(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + this.explodeStandard(50F, 48, true, true); + ExplosionChaos.burn(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 10); + ExplosionChaos.flameDeath(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 25); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_incendiary_large); } + } + + public static class EntityMissileRain extends EntityMissileTier3 { + public EntityMissileRain(World world) { super(world); } + public EntityMissileRain(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); this.isCluster = true; } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 25F, true); + ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 100, 100); + } + @Override public void cluster() { this.onImpact(); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_cluster_large); } + } + + public static class EntityMissileDrill extends EntityMissileTier3 { + public EntityMissileDrill(World world) { super(world); } + public EntityMissileDrill(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + for(int i = 0; i < 30; i++) { + ExplosionNT explosion = new ExplosionNT(worldObj, this, this.posX, this.posY - i, this.posZ, 10F); + explosion.addAllAttrib(ExAttrib.ERRODE); + explosion.explode(); //an explosion exploded! + } + ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 25); + ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 12); + ExplosionLarge.jolt(worldObj, this.posX, this.posY, this.posZ, 10, 50, 1); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_buster_large); } + } + + public static class EntityMissileEndo extends EntityMissileTier3 { + public EntityMissileEndo(World world) { super(world); } + public EntityMissileEndo(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true); + ExplosionThermo.freeze(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 30); + ExplosionThermo.freezer(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 40); + } + @Override public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.plate_titanium, 10)); + list.add(new ItemStack(ModItems.plate_steel, 14)); + list.add(new ItemStack(ModItems.plate_aluminium, 8)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); + return list; + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_thermo_exo); } + } + + public static class EntityMissileExo extends EntityMissileTier3 { + public EntityMissileExo(World world) { super(world); } + public EntityMissileExo(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true); + ExplosionThermo.scorch(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 30); + ExplosionThermo.setEntitiesOnFire(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 40); + } + @Override public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.plate_titanium, 10)); + list.add(new ItemStack(ModItems.plate_steel, 14)); + list.add(new ItemStack(ModItems.plate_aluminium, 8)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); + return list; + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_thermo_exo); } + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java new file mode 100644 index 000000000..826f4143f --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java @@ -0,0 +1,87 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.config.BombConfig; +import com.hbm.entity.effect.EntityNukeTorex; +import com.hbm.entity.logic.EntityNukeExplosionMK5; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; + +import api.hbm.entity.IRadarDetectableNT; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public abstract class EntityMissileTier4 extends EntityMissileBaseNT { + + public EntityMissileTier4(World world) { super(world); } + public EntityMissileTier4(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + + @Override + public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.plate_titanium, 16)); + list.add(new ItemStack(ModItems.plate_steel, 20)); + list.add(new ItemStack(ModItems.plate_aluminium, 12)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); + return list; + } + + @Override + public RadarTargetType getTargetType() { + return RadarTargetType.MISSILE_TIER4; + } + + @Override + public String getUnlocalizedName() { + return "radar.target.tier4"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER4; + } + + public static class EntityMissileNuclear extends EntityMissileTier4 { + public EntityMissileNuclear(World world) { super(world); } + public EntityMissileNuclear(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ)); + EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.missileRadius); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_nuclear); } + } + + public static class EntityMissileMirv extends EntityMissileTier4 { + public EntityMissileMirv(World world) { super(world); } + public EntityMissileMirv(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ)); + EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.missileRadius * 2); + } + @Override public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.plate_titanium, 16)); + list.add(new ItemStack(ModItems.plate_steel, 20)); + list.add(new ItemStack(ModItems.plate_aluminium, 12)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier5, 1)); + return list; + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_mirv); } + } + + public static class EntityMissileVolcano extends EntityMissileTier4 { + public EntityMissileVolcano(World world) { super(world); } + public EntityMissileVolcano(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true); + for(int x = -1; x <= 1; x++) for(int y = -1; y <= 1; y++) for(int z = -1; z <= 1; z++) worldObj.setBlock((int)Math.floor(posX + x), (int)Math.floor(posY + y), (int)Math.floor(posZ + z), ModBlocks.volcanic_lava_block); + worldObj.setBlock((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ), ModBlocks.volcano_core); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_volcano); } + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileVolcano.java b/src/main/java/com/hbm/entity/missile/EntityMissileVolcano.java deleted file mode 100644 index 4a8ccbebf..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileVolcano.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileVolcano extends EntityMissileBaseAdvanced { - - public EntityMissileVolcano(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileVolcano(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - - ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true); - - for(int x = -1; x <= 1; x++) { - for(int y = -1; y <= 1; y++) { - for(int z = -1; z <= 1; z++) { - worldObj.setBlock((int)Math.floor(posX + x), (int)Math.floor(posY + y), (int)Math.floor(posZ + z), ModBlocks.volcanic_lava_block); - } - } - } - - worldObj.setBlock((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ), ModBlocks.volcano_core); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 16)); - list.add(new ItemStack(ModItems.plate_steel, 20)); - list.add(new ItemStack(ModItems.plate_aluminium, 12)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_volcano); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER4; - } -} diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperGold.java b/src/main/java/com/hbm/entity/mob/EntityCreeperGold.java new file mode 100644 index 000000000..70ad6fbe9 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperGold.java @@ -0,0 +1,47 @@ +package com.hbm.entity.mob; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.*; +import com.hbm.items.ModItems; + +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class EntityCreeperGold extends EntityCreeper { + + public EntityCreeperGold(World world) { + super(world); + } + + @Override + public void func_146077_cc() { + + if(!this.worldObj.isRemote) { + this.setDead(); + + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, this.getPowered() ? 14 : 7, this); + vnt.setBlockAllocator(new BlockAllocatorBulkie(60, this.getPowered() ? 32 : 16)); + vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorBulkie(Blocks.gold_ore))); + vnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(0.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectStandard()); + vnt.explode(); + } + } + + @Override + public boolean getCanSpawnHere() { + return super.getCanSpawnHere() && this.posY <= 40; + } + + @Override + protected void dropFewItems(boolean byPlayer, int looting) { + + int amount = byPlayer ? 5 + rand.nextInt(6 + looting * 2) : 3; + for(int i = 0; i < amount; ++i) { + this.entityDropItem(new ItemStack(ModItems.crystal_gold), 0F); + } + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java b/src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java new file mode 100644 index 000000000..17160b15e --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java @@ -0,0 +1,44 @@ +package com.hbm.entity.mob; + +import com.hbm.blocks.ModBlocks; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.*; +import com.hbm.items.ModItems; + +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class EntityCreeperVolatile extends EntityCreeper { + + public EntityCreeperVolatile(World world) { + super(world); + } + + @Override + public void func_146077_cc() { + + if(!this.worldObj.isRemote) { + this.setDead(); + + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, this.getPowered() ? 14 : 7, this); + vnt.setBlockAllocator(new BlockAllocatorBulkie(60, this.getPowered() ? 32 : 16)); + vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorBulkie(ModBlocks.block_slag, 1))); + vnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(0.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectStandard()); + vnt.explode(); + } + } + + @Override + public boolean getCanSpawnHere() { + return super.getCanSpawnHere() && this.posY <= 40; + } + + @Override + protected void dropFewItems(boolean byPlayer, int looting) { + this.entityDropItem(new ItemStack(ModItems.sulfur, 2 + rand.nextInt(3)), 0F); + this.entityDropItem(new ItemStack(ModItems.stick_tnt, 1 + rand.nextInt(2)), 0F); + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityFBI.java b/src/main/java/com/hbm/entity/mob/EntityFBI.java index df1ed0755..c6426a6b3 100644 --- a/src/main/java/com/hbm/entity/mob/EntityFBI.java +++ b/src/main/java/com/hbm/entity/mob/EntityFBI.java @@ -7,7 +7,7 @@ import java.util.Set; import com.hbm.blocks.ModBlocks; import com.hbm.config.MobConfig; import com.hbm.entity.mob.ai.EntityAIBreaking; -import com.hbm.entity.mob.ai.EntityAI_MLPF; +import com.hbm.entity.pathfinder.PathFinderUtils; import com.hbm.entity.projectile.EntityBullet; import com.hbm.items.ModItems; @@ -50,7 +50,7 @@ public class EntityFBI extends EntityMob implements IRangedAttackMob { this.tasks.addTask(2, new EntityAIArrowAttack(this, 1D, 20, 25, 15.0F)); this.tasks.addTask(3, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, true)); this.tasks.addTask(5, new EntityAIMoveTowardsRestriction(this, 1.0D)); - this.tasks.addTask(6, new EntityAI_MLPF(this, EntityPlayer.class, 100, 1D, 16)); + //this.tasks.addTask(6, new EntityAI_MLPF(this, EntityPlayer.class, 100, 1D, 16)); this.tasks.addTask(7, new EntityAIWander(this, 1.0D)); this.tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); this.tasks.addTask(8, new EntityAILookIdle(this)); @@ -119,6 +119,20 @@ public class EntityFBI extends EntityMob implements IRangedAttackMob { protected boolean isAIEnabled() { return true; } + + @Override + protected void updateAITasks() { + super.updateAITasks(); + + if(this.getAttackTarget() == null) { + this.setAttackTarget(this.worldObj.getClosestVulnerablePlayerToEntity(this, 128.0D)); + } + + // hell yeah!! + if(this.getAttackTarget() != null) { + this.getNavigator().setPath(PathFinderUtils.getPathEntityToEntityPartial(worldObj, this, this.getAttackTarget(), 16F, true, false, false, true), 1); + } + } //combat vest = full diamond set public int getTotalArmorValue() { @@ -155,7 +169,6 @@ public class EntityFBI extends EntityMob implements IRangedAttackMob { canDestroy.add(Blocks.trapdoor); canDestroy.add(ModBlocks.machine_press); canDestroy.add(ModBlocks.machine_epress); - canDestroy.add(ModBlocks.dummy_block_assembler); canDestroy.add(ModBlocks.machine_chemplant); canDestroy.add(ModBlocks.machine_crystallizer); canDestroy.add(ModBlocks.machine_turbine); diff --git a/src/main/java/com/hbm/entity/mob/EntityFBIDrone.java b/src/main/java/com/hbm/entity/mob/EntityFBIDrone.java new file mode 100644 index 000000000..97110b54f --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityFBIDrone.java @@ -0,0 +1,64 @@ +package com.hbm.entity.mob; + +import com.hbm.entity.grenade.EntityGrenadeStrong; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityFBIDrone extends EntityUFOBase { + + private int attackCooldown; + + public EntityFBIDrone(World world) { + super(world); + } + + @Override + protected void updateEntityActionState() { + super.updateEntityActionState(); + if(this.courseChangeCooldown > 0) this.courseChangeCooldown--; + if(this.scanCooldown > 0) this.scanCooldown--; + + if(!worldObj.isRemote) { + + if(attackCooldown > 0) attackCooldown--; + + if(this.target != null && attackCooldown <= 0) { + + Vec3 vec = Vec3.createVectorHelper(posX - target.posX, posY - target.posY, posZ - target.posZ); + if(Math.abs(vec.xCoord) < 5 && Math.abs(vec.zCoord) < 5 && vec.yCoord > 3) { + attackCooldown = 60; + EntityGrenadeStrong grenade = new EntityGrenadeStrong(worldObj); + grenade.setPosition(posX, posY, posZ); + worldObj.spawnEntityInWorld(grenade); + } + } + } + + if(this.courseChangeCooldown > 0) { + approachPosition(this.target == null ? 0.25D : 0.5D); + } + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(35.0D); + } + + @Override + protected int getScanRange() { + return 100; + } + + @Override + protected int targetHeightOffset() { + return 7 + rand.nextInt(4); + } + + @Override + protected int wanderHeightOffset() { + return 7 + rand.nextInt(4); + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java new file mode 100644 index 000000000..599b66f6a --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -0,0 +1,254 @@ +package com.hbm.entity.mob; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import com.hbm.config.MobConfig; +import com.hbm.entity.pathfinder.PathFinderUtils; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.items.ModItems; +import com.hbm.lib.ModDamageSource; +import com.hbm.main.ResourceManager; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EnumCreatureAttribute; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.monster.EntityMob; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.util.DamageSource; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityGlyphid extends EntityMob { + + public EntityGlyphid(World world) { + super(world); + /*this.tasks.addTask(0, new EntityAISwimming(this)); + this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false)); + this.tasks.addTask(5, new EntityAIMoveTowardsRestriction(this, 1.0D)); + this.tasks.addTask(7, new EntityAIWander(this, 1.0D)); + this.tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); + this.tasks.addTask(8, new EntityAILookIdle(this)); + this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, true)); + this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true));*/ + this.setSize(1.75F, 1F); + } + + public ResourceLocation getSkin() { + return ResourceManager.glyphid_tex; + } + + public double getScale() { + return 1.0D; + } + + @Override + protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(16, new Byte((byte) 0)); //wall climbing + this.dataWatcher.addObject(17, new Byte((byte) 0b11111)); //armor + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(30D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(5D); + } + + @Override + protected void dropFewItems(boolean byPlayer, int looting) { + if(rand.nextInt(3) == 0) this.entityDropItem(new ItemStack(ModItems.glyphid_meat, 1 + rand.nextInt(2) + looting), 0F); + } + + @Override + protected Entity findPlayerToAttack() { + if(this.isPotionActive(Potion.blindness)) return null; + EntityPlayer entityplayer = this.worldObj.getClosestVulnerablePlayerToEntity(this, useExtendedTargeting() ? 128D : 16D); + return entityplayer != null && this.canEntityBeSeen(entityplayer) ? entityplayer : null; + } + + @Override + protected void updateEntityActionState() { + super.updateEntityActionState(); + + if(this.isPotionActive(Potion.blindness)) { + this.entityToAttack = null; + this.setPathToEntity(null); + } else { + + // hell yeah!! + if(useExtendedTargeting() && this.entityToAttack != null && !this.hasPath()) { + this.setPathToEntity(PathFinderUtils.getPathEntityToEntityPartial(worldObj, this, this.entityToAttack, 16F, true, false, false, true)); + } + } + + } + + public boolean useExtendedTargeting() { + return PollutionHandler.getPollution(worldObj, (int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), PollutionType.SOOT) >= MobConfig.targetingThreshold; + } + + @Override + protected boolean canDespawn() { + return entityToAttack == null; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + + if(!source.isDamageAbsolute() && !source.isUnblockable() && !worldObj.isRemote && !source.isFireDamage() && !source.getDamageType().equals(ModDamageSource.s_cryolator)) { + byte armor = this.dataWatcher.getWatchableObjectByte(17); + + if(armor != 0) { //if at least one bit of armor is present + + if(amount < getDamageThreshold()) return false; + + int chance = getArmorBreakChance(amount); //chances of armor being broken off + if(this.rand.nextInt(chance) == 0 && amount > 1) { + breakOffArmor(); + amount *= 0.25F; + } + + amount -= getDamageThreshold(); + if(amount < 0) return true; + } + + amount = this.calculateDamage(amount); + } + + if(source.isFireDamage()) amount *= 4F; + + return super.attackEntityFrom(source, amount); + } + + public int getArmorBreakChance(float amount) { + return amount < 10 ? 5 : amount < 20 ? 3 : 2; + } + + public float calculateDamage(float amount) { + + byte armor = this.dataWatcher.getWatchableObjectByte(17); + int divisor = 1; + + for(int i = 0; i < 5; i++) { + if((armor & (1 << i)) > 0) { + divisor++; + } + } + + amount /= divisor; + + return amount; + } + + public float getDamageThreshold() { + return 0.5F; + } + + public void breakOffArmor() { + byte armor = this.dataWatcher.getWatchableObjectByte(17); + List indices = Arrays.asList(0, 1, 2, 3, 4); + Collections.shuffle(indices); + + for(Integer i : indices) { + byte bit = (byte) (1 << i); + if((armor & bit) > 0) { + armor &= ~bit; + armor = (byte) (armor & 0b11111); + this.dataWatcher.updateObject(17, armor); + worldObj.playSoundAtEntity(this, "mob.zombie.woodbreak", 1.0F, 1.25F); + break; + } + } + } + + @Override + public boolean attackEntityAsMob(Entity victum) { + if(this.isSwingInProgress) return false; + this.swingItem(); + return super.attackEntityAsMob(victum); + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!this.worldObj.isRemote) { + this.setBesideClimbableBlock(this.isCollidedHorizontally); + + if(worldObj.getTotalWorldTime() % 200 == 0) { + this.swingItem(); + } + } + } + + @Override + protected void updateArmSwingProgress() { + int i = this.swingDuration(); + + if(this.isSwingInProgress) { + ++this.swingProgressInt; + + if(this.swingProgressInt >= i) { + this.swingProgressInt = 0; + this.isSwingInProgress = false; + } + } else { + this.swingProgressInt = 0; + } + + this.swingProgress = (float) this.swingProgressInt / (float) i; + } + + public int swingDuration() { + return 15; + } + + @Override + public void setInWeb() { } + + @Override + public boolean isOnLadder() { + return this.isBesideClimbableBlock(); + } + + public boolean isBesideClimbableBlock() { + return (this.dataWatcher.getWatchableObjectByte(16) & 1) != 0; + } + + public void setBesideClimbableBlock(boolean climbable) { + byte watchable = this.dataWatcher.getWatchableObjectByte(16); + + if(climbable) { + watchable = (byte) (watchable | 1); + } else { + watchable &= -2; + } + + this.dataWatcher.updateObject(16, Byte.valueOf(watchable)); + } + + @Override + public EnumCreatureAttribute getCreatureAttribute() { + return EnumCreatureAttribute.ARTHROPOD; + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setByte("armor", this.dataWatcher.getWatchableObjectByte(17)); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.dataWatcher.updateObject(17, nbt.getByte("armor")); + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java new file mode 100644 index 000000000..bf3215059 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java @@ -0,0 +1,60 @@ +package com.hbm.entity.mob; + +import com.hbm.main.ResourceManager; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityGlyphidBehemoth extends EntityGlyphid { + + public EntityGlyphidBehemoth(World world) { + super(world); + this.setSize(2.25F, 1.25F); + } + + @Override + public ResourceLocation getSkin() { + return ResourceManager.glyphid_behemoth_tex; + } + + @Override + public double getScale() { + return 1.5D; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(100D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.8D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(25D); + } + + @Override + public int getArmorBreakChance(float amount) { + return amount < 20 ? 10 : amount < 100 ? 5 : amount > 200 ? 1 : 3; + } + + @Override + public float calculateDamage(float amount) { + + byte armor = this.dataWatcher.getWatchableObjectByte(17); + int divisor = 1; + + for(int i = 0; i < 5; i++) { + if((armor & (1 << i)) > 0) { + divisor += 3; + } + } + + amount /= divisor; + + return amount; + } + + @Override + public float getDamageThreshold() { + return 2.5F; + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java new file mode 100644 index 000000000..5e922ab49 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java @@ -0,0 +1,80 @@ +package com.hbm.entity.mob; + +import com.hbm.main.ResourceManager; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityGlyphidBlaster extends EntityGlyphidBombardier { + + public EntityGlyphidBlaster(World world) { + super(world); + this.setSize(2F, 1.125F); + } + + @Override + public ResourceLocation getSkin() { + return ResourceManager.glyphid_blaster_tex; + } + + @Override + public double getScale() { + return 1.25D; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(50D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(10D); + } + + @Override + public int getArmorBreakChance(float amount) { + return amount < 10 ? 10 : amount < 25 ? 5 : amount > 100 ? 1 : 3; + } + + @Override + public float calculateDamage(float amount) { + + byte armor = this.dataWatcher.getWatchableObjectByte(17); + int divisor = 1; + + for(int i = 0; i < 5; i++) { + if((armor & (1 << i)) > 0) { + divisor += 2; + } + } + + amount /= divisor; + + return amount; + } + + @Override + public float getDamageThreshold() { + return 1.0F; + } + + @Override + public float getBombDamage() { + return 10F; + } + + @Override + public int getBombCount() { + return 20; + } + + @Override + public float getSpreadMult() { + return 0.75F; + } + + @Override + public double getV0() { + return 1.25D; + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java new file mode 100644 index 000000000..61750f0ee --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java @@ -0,0 +1,101 @@ +package com.hbm.entity.mob; + +import com.hbm.entity.projectile.EntityAcidBomb; +import com.hbm.main.ResourceManager; + +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityGlyphidBombardier extends EntityGlyphid { + + public EntityGlyphidBombardier(World world) { + super(world); + } + + public ResourceLocation getSkin() { + return ResourceManager.glyphid_bombardier_tex; + } + + protected Entity lastTarget; + protected double lastX; + protected double lastY; + protected double lastZ; + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!this.worldObj.isRemote) { + + Entity e = this.getEntityToAttack(); + + if(this.ticksExisted % 20 == 0 && e != null) { + this.lastTarget = e; + this.lastX = e.posX; + this.lastY = e.posY; + this.lastZ = e.posZ; + } + + if(this.ticksExisted % 20 == 1 && e != null) { + + boolean topAttack = rand.nextBoolean(); + + double velX = e.posX - lastX; + double velY = e.posY - lastY; + double velZ = e.posZ - lastZ; + + if(this.lastTarget != e || Vec3.createVectorHelper(velX, velY, velZ).lengthVector() > 30) { + velX = velY = velZ = 0; + } + + int prediction = topAttack ? 60 : 20; + Vec3 delta = Vec3.createVectorHelper(e.posX - posX + velX * prediction, (e.posY + e.height / 2) - (posY + 1) + velY * prediction, e.posZ - posZ + velZ * prediction); + double len = delta.lengthVector(); + if(len < 3) return; + double targetYaw = -Math.atan2(delta.xCoord, delta.zCoord); + + double x = Math.sqrt(delta.xCoord * delta.xCoord + delta.zCoord * delta.zCoord); + double y = delta.yCoord; + double v0 = getV0(); + double v02 = v0 * v0; + double g = 0.04D; + double upperLower = topAttack ? 1 : -1; + double targetPitch = Math.atan((v02 + Math.sqrt(v02*v02 - g*(g*x*x + 2*y*v02)) * upperLower) / (g*x)); + + if(!Double.isNaN(targetPitch)) { + + Vec3 fireVec = Vec3.createVectorHelper(v0, 0, 0); + fireVec.rotateAroundZ((float) -targetPitch); + fireVec.rotateAroundY((float) -(targetYaw + Math.PI * 0.5)); + + for(int i = 0; i < getBombCount(); i++) { + EntityAcidBomb bomb = new EntityAcidBomb(worldObj, posX, posY + 1, posZ); + bomb.setThrowableHeading(fireVec.xCoord, fireVec.yCoord, fireVec.zCoord, (float) v0, i * getSpreadMult()); + bomb.damage = getBombDamage(); + worldObj.spawnEntityInWorld(bomb); + } + + this.swingItem(); + } + } + } + } + + public float getBombDamage() { + return 1.5F; + } + + public int getBombCount() { + return 10; + } + + public float getSpreadMult() { + return 1F; + } + + public double getV0() { + return 1D; + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBrawler.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrawler.java new file mode 100644 index 000000000..749230a42 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrawler.java @@ -0,0 +1,60 @@ +package com.hbm.entity.mob; + +import com.hbm.main.ResourceManager; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityGlyphidBrawler extends EntityGlyphid { + + public EntityGlyphidBrawler(World world) { + super(world); + this.setSize(2F, 1.125F); + } + + @Override + public ResourceLocation getSkin() { + return ResourceManager.glyphid_brawler_tex; + } + + @Override + public double getScale() { + return 1.25D; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(50D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(10D); + } + + @Override + public int getArmorBreakChance(float amount) { + return amount < 10 ? 10 : amount < 25 ? 5 : amount > 100 ? 1 : 3; + } + + @Override + public float calculateDamage(float amount) { + + byte armor = this.dataWatcher.getWatchableObjectByte(17); + int divisor = 1; + + for(int i = 0; i < 5; i++) { + if((armor & (1 << i)) > 0) { + divisor += 2; + } + } + + amount /= divisor; + + return amount; + } + + @Override + public float getDamageThreshold() { + return 1.0F; + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java new file mode 100644 index 000000000..bdce3e7bc --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java @@ -0,0 +1,81 @@ +package com.hbm.entity.mob; + +import com.hbm.main.ResourceManager; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityGlyphidBrenda extends EntityGlyphid { + + public EntityGlyphidBrenda(World world) { + super(world); + this.setSize(2.5F, 1.75F); + this.isImmuneToFire = true; + } + + @Override + public ResourceLocation getSkin() { + return ResourceManager.glyphid_brenda_tex; + } + + @Override + public double getScale() { + return 2D; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(250D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.8D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(50D); + } + + @Override + public int getArmorBreakChance(float amount) { + return amount < 25 ? 100 : amount > 1000 ? 1 : 10; + } + + @Override + public float calculateDamage(float amount) { + + byte armor = this.dataWatcher.getWatchableObjectByte(17); + int divisor = 1; + + for(int i = 0; i < 5; i++) { + if((armor & (1 << i)) > 0) { + divisor += 5; + } + } + + amount /= divisor; + + return amount; + } + + @Override + public float getDamageThreshold() { + return 10F; + } + + @Override + public void setDead() { + if(!this.worldObj.isRemote && this.getHealth() <= 0.0F) { + for(int i = 0; i < 12; ++i) { + EntityGlyphid glyphid = new EntityGlyphid(worldObj); + glyphid.setLocationAndAngles(this.posX, this.posY + 0.5D, this.posZ, rand.nextFloat() * 360.0F, 0.0F); + glyphid.addPotionEffect(new PotionEffect(Potion.resistance.id, 5 * 60 * 20, 2)); + glyphid.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 5 * 60 * 20, 0)); + glyphid.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 5 * 60 * 20, 4)); + glyphid.addPotionEffect(new PotionEffect(Potion.field_76444_x.id, 5 * 60 * 20, 19)); + this.worldObj.spawnEntityInWorld(glyphid); + glyphid.moveEntity(rand.nextGaussian(), 0, rand.nextGaussian()); + } + } + + super.setDead(); + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java new file mode 100644 index 000000000..62a3ae9a6 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java @@ -0,0 +1,108 @@ +package com.hbm.entity.mob; + +import com.hbm.blocks.ModBlocks; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockMutatorDebris; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityGlyphidNuclear extends EntityGlyphid { + + public int deathTicks; + + public EntityGlyphidNuclear(World world) { + super(world); + this.setSize(2.5F, 1.75F); + this.isImmuneToFire = true; + } + + @Override + public ResourceLocation getSkin() { + return ResourceManager.glyphid_nuclear_tex; + } + + @Override + public double getScale() { + return 2D; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(20D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.8D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(50D); + } + + @Override + public int getArmorBreakChance(float amount) { + return amount < 25 ? 100 : amount > 1000 ? 1 : 10; + } + + @Override + public float calculateDamage(float amount) { + + byte armor = this.dataWatcher.getWatchableObjectByte(17); + int divisor = 1; + + for(int i = 0; i < 5; i++) { + if((armor & (1 << i)) > 0) { + divisor += 5; + } + } + + amount /= divisor; + + return amount; + } + + @Override + public float getDamageThreshold() { + return 10F; + } + + @Override + protected void onDeathUpdate() { + ++this.deathTicks; + + if(this.deathTicks == 100) { + + if(!worldObj.isRemote) { + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, 25, this); + vnt.setBlockAllocator(new BlockAllocatorStandard(24)); + vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorDebris(ModBlocks.volcanic_lava_block, 0)).setNoDrop()); + vnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(1.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.explode(); + + worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "muke"); + // if the FX type is "muke", apply random BF effect + if(MainRegistry.polaroidID == 11 || rand.nextInt(100) == 0) { + data.setBoolean("balefire", true); + } + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250)); + } + + this.setDead(); + } else { + if(!worldObj.isRemote && this.deathTicks % 10 == 0) { + worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.fstbmbPing", 5.0F, 1.0F); + } + } + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java new file mode 100644 index 000000000..181156e09 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java @@ -0,0 +1,157 @@ +package com.hbm.entity.mob; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.world.feature.GlyphidHive; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityGlyphidScout extends EntityGlyphid { + + public boolean hasHome = false; + public double homeX; + public double homeY; + public double homeZ; + + public EntityGlyphidScout(World world) { + super(world); + this.setSize(1.25F, 0.75F); + } + + @Override + public float getDamageThreshold() { + return 0.0F; + } + + @Override + public ResourceLocation getSkin() { + return ResourceManager.glyphid_scout_tex; + } + + @Override + public double getScale() { + return 0.75D; + } + + @Override + public int getArmorBreakChance(float amount) { + return 1; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(16D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1.5D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(2D); + } + + @Override + protected boolean canDespawn() { + return true; + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) { + + if(!this.hasHome) { + this.homeX = posX; + this.homeY = posY; + this.homeZ = posZ; + this.hasHome = true; + } + + if(rand.nextInt(20) == 0) fleeingTick = 2; + + if(this.ticksExisted > 0 && this.ticksExisted % 1200 == 0 && Vec3.createVectorHelper(posX - homeX, posY - homeY, posZ - homeZ).lengthVector() > 8) { + + Block b = worldObj.getBlock((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); + + int accuracy = 16; + for(int i = 0; i < accuracy; i++) { + float angle = (float) Math.toRadians(360D / accuracy * i); + Vec3 rot = Vec3.createVectorHelper(0, 0, 16); + rot.rotateAroundY(angle); + Vec3 pos = Vec3.createVectorHelper(this.posX, this.posY + 1, this.posZ); + Vec3 nextPos = Vec3.createVectorHelper(this.posX + rot.xCoord, this.posY + 1, this.posZ + rot.zCoord); + MovingObjectPosition mop = this.worldObj.rayTraceBlocks(pos, nextPos); + + if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) { + + Block block = worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ); + + if(block == ModBlocks.glyphid_base) { + return; + } + } + } + + if(b.getMaterial() != Material.air && b.isNormalCube() && b != ModBlocks.glyphid_base) { + this.setDead(); + worldObj.newExplosion(this, posX, posY, posZ, 5F, false, false); + GlyphidHive.generate(worldObj, (int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), rand); + } + } + } + } + + @Override + protected void updateWanderPath() { + this.worldObj.theProfiler.startSection("stroll"); + boolean flag = false; + int pathX = -1; + int pathY = -1; + int pathZ = -1; + float maxWeight = -99999.0F; + + for(int l = 0; l < 5; ++l) { + int x = MathHelper.floor_double(this.posX + (double) this.rand.nextInt(25) - 12.0D); + int y = MathHelper.floor_double(this.posY + (double) this.rand.nextInt(11) - 5.0D); + int z = MathHelper.floor_double(this.posZ + (double) this.rand.nextInt(25) - 12.0D); + float weight = this.getBlockPathWeight(x, y, z); + + if(weight > maxWeight) { + maxWeight = weight; + pathX = x; + pathY = y; + pathZ = z; + flag = true; + } + } + + if(flag) { + this.setPathToEntity(this.worldObj.getEntityPathToXYZ(this, pathX, pathY, pathZ, 10.0F, true, false, false, true)); + } + + this.worldObj.theProfiler.endSection(); + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setBoolean("hasHome", hasHome); + nbt.setDouble("homeX", homeX); + nbt.setDouble("homeY", homeY); + nbt.setDouble("homeZ", homeZ); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.hasHome = nbt.getBoolean("hasHome"); + this.homeX = nbt.getDouble("homeX"); + this.homeY = nbt.getDouble("homeY"); + this.homeZ = nbt.getDouble("homeZ"); + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityPigeon.java b/src/main/java/com/hbm/entity/mob/EntityPigeon.java new file mode 100644 index 000000000..ad6d203fc --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityPigeon.java @@ -0,0 +1,226 @@ +package com.hbm.entity.mob; + +import java.util.function.Predicate; + +import com.hbm.entity.mob.ai.EntityAIEatBread; +import com.hbm.entity.mob.ai.EntityAIStartFlying; +import com.hbm.entity.mob.ai.EntityAIStopFlying; +import com.hbm.entity.mob.ai.EntityAISwimmingConditional; +import com.hbm.entity.mob.ai.EntityAIWanderConditional; +import com.hbm.items.tool.ItemFertilizer; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.ai.EntityAILookIdle; +import net.minecraft.entity.ai.EntityAIWatchClosest; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.passive.IAnimals; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; +import net.minecraftforge.common.util.FakePlayerFactory; + +public class EntityPigeon extends EntityCreature implements IFlyingCreature, IAnimals { + + public float fallTime; + public float dest; + public float prevDest; + public float prevFallTime; + public float offGroundTimer = 1.0F; + + public EntityPigeon(World world) { + super(world); + Predicate noFlyCondition = x -> { return ((EntityPigeon) x).getFlyingState() == IFlyingCreature.STATE_WALKING; }; + this.tasks.addTask(0, new EntityAIStartFlying(this, this)); + this.tasks.addTask(0, new EntityAIStopFlying(this, this)); + this.tasks.addTask(1, new EntityAISwimmingConditional(this, noFlyCondition)); + this.tasks.addTask(2, new EntityAIEatBread(this, 0.4D)); + this.tasks.addTask(5, new EntityAIWanderConditional(this, 0.2D, noFlyCondition)); + this.tasks.addTask(6, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); + this.tasks.addTask(7, new EntityAILookIdle(this)); + this.setSize(0.5F, 1.0F); + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + + if(amount >= this.getMaxHealth() * 2 && !worldObj.isRemote) { + this.setDead(); + + for(int i = 0; i < 10; i++) { + Vec3 vec = Vec3.createVectorHelper(rand.nextGaussian(), rand.nextGaussian(), rand.nextGaussian()).normalize(); + + EntityItem feather = new EntityItem(worldObj); + feather.setEntityItemStack(new ItemStack(Items.feather)); + feather.setPosition(posX + vec.xCoord, posY + height / 2D + vec.yCoord, posZ + vec.zCoord); + feather.motionX = vec.xCoord * 0.5; + feather.motionY = vec.yCoord * 0.5; + feather.motionZ = vec.zCoord * 0.5; + worldObj.spawnEntityInWorld(feather); + } + + return true; + } + + return super.attackEntityFrom(source, amount); + } + + @Override + public boolean isAIEnabled() { + return true; + } + + @Override + protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(12, Byte.valueOf((byte) 0)); + this.dataWatcher.addObject(13, Byte.valueOf((byte) 0)); + } + + @Override + protected Item getDropItem() { + return Items.feather; + } + + @Override + protected void func_145780_a(int x, int y, int z, Block block) { + this.playSound("mob.chicken.step", 0.15F, 1.0F); + } + + @Override + protected void dropFewItems(boolean byPlayer, int looting) { + int j = this.rand.nextInt(3) + this.rand.nextInt(1 + looting); + + for(int k = 0; k < j; ++k) { + this.dropItem(Items.feather, 1); + } + + if(this.isBurning()) { + this.dropItem(Items.cooked_chicken, this.isFat() ? 3 : 1); + } else { + this.dropItem(Items.chicken, this.isFat() ? 3 : 1); + } + } + + @Override + public int getFlyingState() { + return this.dataWatcher.getWatchableObjectByte(12); + } + + @Override + public void setFlyingState(int state) { + this.dataWatcher.updateObject(12, (byte) state); + } + + public boolean isFat() { + return this.dataWatcher.getWatchableObjectByte(13) == 1; + } + + public void setFat(boolean fat) { + this.dataWatcher.updateObject(13, (byte) (fat ? 1 : 0)); + } + + protected String getLivingSound() { + return null; + } + + protected String getHurtSound() { + return null; + } + + protected String getDeathSound() { + return null; + } + + @Override + protected void updateAITasks() { + super.updateAITasks(); + + if(this.getFlyingState() == this.STATE_FLYING) { + int height = worldObj.getHeightValue((int) Math.floor(posX), (int) Math.floor(posZ)); + + boolean ceil = posY - height > 10; + + this.motionY = this.getRNG().nextGaussian() * 0.05 + (ceil ? 0 : 0.04) + (this.isInWater() ? 0.2 : 0); + + if(onGround) this.motionY = Math.abs(this.motionY) + 0.1D; + + this.moveForward = 1.5F; + if(this.getRNG().nextInt(20) == 0) this.rotationYaw += this.getRNG().nextGaussian() * 30; + + if(this.isFat() && this.getRNG().nextInt(50) == 0) { + + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("type", "sweat"); + nbt.setInteger("count", 3); + nbt.setInteger("block", Block.getIdFromBlock(Blocks.wool)); + nbt.setInteger("entity", getEntityId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(dimension, posX, posY, posZ, 50)); + + int x = (int) Math.floor(posX); + int y = (int) Math.floor(posY) - 1; + int z = (int) Math.floor(posZ); + EntityPlayer player = FakePlayerFactory.getMinecraft((WorldServer)worldObj); + + for(int i = 0; i < 25; i++) { + + if(ItemFertilizer.fertilize(worldObj, x, y - i, z, player, true)) { + worldObj.playAuxSFX(2005, x, y - i, z, 0); + break; + } + } + + if(this.getRNG().nextInt(10) == 0) { + this.setFat(false); + } + } + + } else if(!this.onGround && this.motionY < 0.0D) { + this.motionY *= 0.8D; + } + } + + @Override + public void onLivingUpdate() { + super.onLivingUpdate(); + this.prevFallTime = this.fallTime; + this.prevDest = this.dest; + this.dest = (float) ((double) this.dest + (double) (this.onGround ? -1 : 4) * 0.3D); + + if(this.dest < 0.0F) { + this.dest = 0.0F; + } + + if(this.dest > 1.0F) { + this.dest = 1.0F; + } + + if(!this.onGround && this.offGroundTimer < 1.0F) { + this.offGroundTimer = 1.0F; + } + + this.offGroundTimer = (float) ((double) this.offGroundTimer * 0.9D); + + if(!this.onGround && this.motionY < 0.0D) { + this.motionY *= 0.6D; + } + + this.fallTime += this.offGroundTimer * 2.0F; + } + + @Override public boolean doesEntityNotTriggerPressurePlate() { return true; } + @Override protected boolean canTriggerWalking() { return false; } + + @Override protected void fall(float p_70069_1_) { } + @Override protected void updateFallState(double p_70064_1_, boolean p_70064_3_) { } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityPlasticBag.java b/src/main/java/com/hbm/entity/mob/EntityPlasticBag.java new file mode 100644 index 000000000..0c9ecaef4 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityPlasticBag.java @@ -0,0 +1,160 @@ +package com.hbm.entity.mob; + +import com.hbm.entity.item.EntityItemBuoyant; +import com.hbm.items.ModItems; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.passive.EntityWaterMob; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +/** + * Copy-pasted shit from the squid class + * Mojang-certified + * + * @author hbm + */ +public class EntityPlasticBag extends EntityWaterMob { + + public float rotation; + public float prevRotation; + private float randomMotionSpeed; + private float rotationVelocity; + private float randomMotionVecX; + private float randomMotionVecY; + private float randomMotionVecZ; + + public EntityPlasticBag(World world) { + super(world); + this.setSize(0.45F, 0.45F); + this.rotationVelocity = 1.0F / (this.rand.nextFloat() + 1.0F) * 0.2F; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + + if(!worldObj.isRemote) { + this.setDead(); + this.dropItem(ModItems.plastic_bag, 1); + } + + return true; + } + + @Override + public EntityItem entityDropItem(ItemStack stack, float offset) { + if(stack.stackSize != 0 && stack.getItem() != null) { + EntityItemBuoyant entityitem = new EntityItemBuoyant(this.worldObj, this.posX, this.posY + (double) offset, this.posZ, stack); + entityitem.delayBeforeCanPickup = 10; + if(captureDrops) { + capturedDrops.add(entityitem); + } else { + this.worldObj.spawnEntityInWorld(entityitem); + } + return entityitem; + } else { + return null; + } + } + + @Override + protected String getLivingSound() { + return null; + } + + @Override + protected String getHurtSound() { + return null; + } + + @Override + protected String getDeathSound() { + return null; + } + + @Override + protected boolean canTriggerWalking() { + return false; + } + + @Override + public boolean isInWater() { + return this.worldObj.handleMaterialAcceleration(this.boundingBox.expand(0.0D, -0.6D, 0.0D), Material.water, this); + } + + @Override + public void onLivingUpdate() { + super.onLivingUpdate(); + this.prevRotation = this.rotation; + this.rotation += this.rotationVelocity; + + if(this.rotation > ((float) Math.PI * 2F)) { + this.rotation -= ((float) Math.PI * 2F); + + if(this.rand.nextInt(10) == 0) { + this.rotationVelocity = 1.0F / (this.rand.nextFloat() + 1.0F) * 0.2F; + } + } + + if(this.isInWater()) { + float f; + + if(this.rotation < (float) Math.PI) { + f = this.rotation / (float) Math.PI; + + if((double) f > 0.75D) { + this.randomMotionSpeed = 0.1F; + } + } else { + this.randomMotionSpeed *= 0.999F; + } + + if(!this.worldObj.isRemote) { + this.motionX = (double) (this.randomMotionVecX * this.randomMotionSpeed); + this.motionY = (double) (this.randomMotionVecY * this.randomMotionSpeed); + this.motionZ = (double) (this.randomMotionVecZ * this.randomMotionSpeed); + } + + f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.renderYawOffset += (-((float) Math.atan2(this.motionX, this.motionZ)) * 180.0F / (float) Math.PI - this.renderYawOffset) * 0.1F; + this.rotationYaw = this.renderYawOffset; + this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); + } else { + if(!this.worldObj.isRemote) { + this.motionX = 0.0D; + this.motionY -= 0.08D; + this.motionY *= 0.98D; + this.motionZ = 0.0D; + } + } + } + + @Override + public void moveEntityWithHeading(float forward, float strafe) { + this.moveEntity(this.motionX, this.motionY, this.motionZ); + } + + @Override + protected void updateEntityActionState() { + ++this.entityAge; + + if(this.entityAge > 100) { + this.randomMotionVecX = this.randomMotionVecY = this.randomMotionVecZ = 0.0F; + } else if(this.rand.nextInt(50) == 0 || !this.inWater || this.randomMotionVecX == 0.0F && this.randomMotionVecY == 0.0F && this.randomMotionVecZ == 0.0F) { + float f = this.rand.nextFloat() * (float) Math.PI * 2.0F; + this.randomMotionVecX = MathHelper.cos(f) * 0.2F; + this.randomMotionVecY = -0.1F + this.rand.nextFloat() * 0.2F; + this.randomMotionVecZ = MathHelper.sin(f) * 0.2F; + } + + this.despawnEntity(); + } + + @Override + public boolean getCanSpawnHere() { + return this.posY > 45.0D && this.posY < 63.0D && this.getRNG().nextInt(10) == 0 && super.getCanSpawnHere(); + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java b/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java index 9c733ef12..aa0851cc9 100644 --- a/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java +++ b/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java @@ -3,7 +3,7 @@ package com.hbm.entity.mob; import java.util.ArrayList; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.items.ModItems; import com.hbm.packet.AuxParticlePacketNT; @@ -72,7 +72,7 @@ public class EntityTaintCrab extends EntityCyberCrab { @Override public void attackEntityWithRangedAttack(EntityLivingBase entity, float f) { - EntityBulletBase bullet = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.BMG50_STAR, this); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.BMG50_STAR, this); Vec3 motion = Vec3.createVectorHelper(posX - entity.posX, posY - entity.posZ - entity.height / 2, posZ - entity.posZ); motion = motion.normalize(); NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/entity/mob/EntityUFO.java b/src/main/java/com/hbm/entity/mob/EntityUFO.java index 95e03d499..4a8f46ee5 100644 --- a/src/main/java/com/hbm/entity/mob/EntityUFO.java +++ b/src/main/java/com/hbm/entity/mob/EntityUFO.java @@ -3,7 +3,7 @@ package com.hbm.entity.mob; import java.util.ArrayList; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.items.ModItems; @@ -326,8 +326,8 @@ public class EntityUFO extends EntityFlying implements IMob, IBossDisplayData, I Vec3 heading = Vec3.createVectorHelper(e.posX - pivotX, e.posY + e.height / 2 - pivotY, e.posZ - pivotZ); heading = heading.normalize(); - EntityBulletBase bullet = new EntityBulletBase(this.worldObj, BulletConfigSyncingUtil.WORM_LASER); - bullet.shooter = this; + EntityBulletBaseNT bullet = new EntityBulletBaseNT(this.worldObj, BulletConfigSyncingUtil.WORM_LASER); + bullet.setThrower(this); bullet.setPosition(pivotX, pivotY, pivotZ); bullet.setThrowableHeading(heading.xCoord, heading.yCoord, heading.zCoord, 2F, 0.02F); this.worldObj.spawnEntityInWorld(bullet); @@ -339,8 +339,8 @@ public class EntityUFO extends EntityFlying implements IMob, IBossDisplayData, I Vec3 heading = Vec3.createVectorHelper(e.posX - this.posX, e.posY + e.height / 2 - posY - 0.5D, e.posZ - this.posZ); heading = heading.normalize(); - EntityBulletBase bullet = new EntityBulletBase(this.worldObj, BulletConfigSyncingUtil.UFO_ROCKET); - bullet.shooter = this; + EntityBulletBaseNT bullet = new EntityBulletBaseNT(this.worldObj, BulletConfigSyncingUtil.UFO_ROCKET); + bullet.setThrower(this); bullet.setPosition(this.posX, this.posY - 0.5D, this.posZ); bullet.setThrowableHeading(heading.xCoord, heading.yCoord, heading.zCoord, 2F, 0.02F); bullet.getEntityData().setInteger("homingTarget", e.getEntityId()); @@ -350,7 +350,7 @@ public class EntityUFO extends EntityFlying implements IMob, IBossDisplayData, I @Override public boolean canAttackClass(Class clazz) { - return clazz != this.getClass() && clazz != EntityBulletBase.class; + return clazz != this.getClass() && clazz != EntityBulletBaseNT.class; } @Override diff --git a/src/main/java/com/hbm/entity/mob/EntityUFOBase.java b/src/main/java/com/hbm/entity/mob/EntityUFOBase.java index 125cc1283..2468a5c2b 100644 --- a/src/main/java/com/hbm/entity/mob/EntityUFOBase.java +++ b/src/main/java/com/hbm/entity/mob/EntityUFOBase.java @@ -18,8 +18,8 @@ public abstract class EntityUFOBase extends EntityFlying implements IMob { protected int courseChangeCooldown; protected Entity target; - public EntityUFOBase(World p_i1587_1_) { - super(p_i1587_1_); + public EntityUFOBase(World world) { + super(world); } @Override diff --git a/src/main/java/com/hbm/entity/mob/IFlyingCreature.java b/src/main/java/com/hbm/entity/mob/IFlyingCreature.java new file mode 100644 index 000000000..68bd8c36c --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/IFlyingCreature.java @@ -0,0 +1,10 @@ +package com.hbm.entity.mob; + +public interface IFlyingCreature { + + public static final int STATE_WALKING = 0; + public static final int STATE_FLYING = 1; + + public int getFlyingState(); + public void setFlyingState(int state); +} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIEatBread.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIEatBread.java new file mode 100644 index 000000000..491179711 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIEatBread.java @@ -0,0 +1,71 @@ +package com.hbm.entity.mob.ai; + +import java.util.List; + +import com.hbm.entity.mob.EntityPigeon; + +import net.minecraft.entity.ai.EntityAIBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class EntityAIEatBread extends EntityAIBase { + + private EntityPigeon pigeon; + private double speed; + private EntityItem item; + + public EntityAIEatBread(EntityPigeon pigeon, double speed) { + this.pigeon = pigeon; + this.speed = speed; + this.setMutexBits(3); + } + + @Override + public boolean shouldExecute() { + if(pigeon.isFat() || pigeon.getFlyingState() != pigeon.STATE_WALKING) return false; + + List items = pigeon.worldObj.getEntitiesWithinAABB(EntityItem.class, this.pigeon.boundingBox.expand(10, 10, 10)); + + for(EntityItem item : items) { + if(item.getEntityItem().getItem() == Items.bread) { + this.item = item; + return true; + } + } + + return false; + } + + @Override + public boolean continueExecuting() { + return this.item != null && !this.item.isDead && this.shouldExecute(); + } + + @Override + public void updateTask() { + this.pigeon.getLookHelper().setLookPositionWithEntity(this.item, 30.0F, (float) this.pigeon.getVerticalFaceSpeed()); + + if(this.pigeon.getDistanceToEntity(this.item) > 1) { + this.pigeon.getNavigator().tryMoveToEntityLiving(this.item, this.speed); + } else { + + if(this.pigeon.getRNG().nextInt(3) == 0) { + ItemStack stack = this.item.getEntityItem(); + + if(stack.stackSize > 1) { + stack.stackSize--; + EntityItem newItem = new EntityItem(this.pigeon.worldObj); + newItem.setPosition(this.item.posX, this.item.posY, this.item.posZ); + newItem.setEntityItemStack(stack); + this.pigeon.worldObj.spawnEntityInWorld(newItem); + } + + this.item.setDead(); + } + this.pigeon.setFat(true); + this.pigeon.playSound("random.eat", 0.5F + 0.5F * this.pigeon.getRNG().nextInt(2), (this.pigeon.getRNG().nextFloat() - this.pigeon.getRNG().nextFloat()) * 0.2F + 1.0F); + } + } + +} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanCasualApproach.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanCasualApproach.java index 058f9211c..06ff8e598 100644 --- a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanCasualApproach.java +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanCasualApproach.java @@ -93,7 +93,6 @@ public class EntityAIMaskmanCasualApproach extends EntityAIBase { EntityLivingBase entitylivingbase = this.attacker.getAttackTarget(); this.attacker.getLookHelper().setLookPositionWithEntity(entitylivingbase, 30.0F, 30.0F); double d0 = this.attacker.getDistanceSq(entitylivingbase.posX, entitylivingbase.boundingBox.minY, entitylivingbase.posZ); - double d1 = (double) (this.attacker.width * 2.0F * this.attacker.width * 2.0F + entitylivingbase.width); this.pathTimer--; diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanLasergun.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanLasergun.java index a298ce331..e6abf7d7b 100644 --- a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanLasergun.java +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanLasergun.java @@ -1,6 +1,6 @@ package com.hbm.entity.mob.ai; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import net.minecraft.entity.EntityCreature; @@ -52,7 +52,7 @@ public class EntityAIMaskmanLasergun extends EntityAIBase { switch(attack) { case ORB: - EntityBulletBase orb = new EntityBulletBase(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_ORB, owner, target, 2.0F, 0); + EntityBulletBaseNT orb = new EntityBulletBaseNT(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_ORB, owner, target, 2.0F, 0); orb.motionY += 0.5D; owner.worldObj.spawnEntityInWorld(orb); @@ -60,7 +60,7 @@ public class EntityAIMaskmanLasergun extends EntityAIBase { break; case MISSILE: - EntityBulletBase missile = new EntityBulletBase(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_ROCKET, owner, target, 1.0F, 0); + EntityBulletBaseNT missile = new EntityBulletBaseNT(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_ROCKET, owner, target, 1.0F, 0); Vec3 vec = Vec3.createVectorHelper(target.posX - owner.posX, 0, target.posZ - owner.posZ); missile.motionX = vec.xCoord * 0.05D; missile.motionY = 0.5D + owner.getRNG().nextDouble() * 0.5D; @@ -73,7 +73,7 @@ public class EntityAIMaskmanLasergun extends EntityAIBase { case SPLASH: for(int i = 0; i < 5; i++) { - EntityBulletBase tracer = new EntityBulletBase(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_TRACER, owner, target, 1.0F, 0.05F); + EntityBulletBaseNT tracer = new EntityBulletBaseNT(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_TRACER, owner, target, 1.0F, 0.05F); owner.worldObj.spawnEntityInWorld(tracer); } break; diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java index e56037204..c794a1d3b 100644 --- a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java @@ -1,6 +1,6 @@ package com.hbm.entity.mob.ai; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import net.minecraft.entity.EntityCreature; @@ -49,7 +49,7 @@ public class EntityAIMaskmanMinigun extends EntityAIBase { if(timer <= 0) { timer = delay; - EntityBulletBase bullet = new EntityBulletBase(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_BULLET, owner, target, 1.0F, 0); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_BULLET, owner, target, 1.0F, 0); owner.worldObj.spawnEntityInWorld(bullet); owner.playSound("hbm:weapon.calShoot", 1.0F, 1.0F); } diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIPanicConditional.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIPanicConditional.java new file mode 100644 index 000000000..71fa26e4d --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIPanicConditional.java @@ -0,0 +1,56 @@ +package com.hbm.entity.mob.ai; + +import java.util.function.Predicate; + +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.ai.EntityAIBase; +import net.minecraft.entity.ai.RandomPositionGenerator; +import net.minecraft.util.Vec3; + +public class EntityAIPanicConditional extends EntityAIBase { + + private EntityCreature creature; + private double speed; + private Predicate condition; + private double randPosX; + private double randPosY; + private double randPosZ; + + public EntityAIPanicConditional(EntityCreature creature, double speed, Predicate condition) { + this.creature = creature; + this.speed = speed; + this.condition = condition; + this.setMutexBits(1); + } + + @Override + public boolean shouldExecute() { + + if(!condition.test(creature)) return false; + + if(this.creature.getAITarget() == null && !this.creature.isBurning()) { + return false; + } else { + Vec3 vec3 = RandomPositionGenerator.findRandomTarget(this.creature, 5, 4); + + if(vec3 == null) { + return false; + } else { + this.randPosX = vec3.xCoord; + this.randPosY = vec3.yCoord; + this.randPosZ = vec3.zCoord; + return true; + } + } + } + + @Override + public void startExecuting() { + this.creature.getNavigator().tryMoveToXYZ(this.randPosX, this.randPosY, this.randPosZ, this.speed); + } + + @Override + public boolean continueExecuting() { + return !this.creature.getNavigator().noPath() && condition.test(creature); + } +} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIStartFlying.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIStartFlying.java new file mode 100644 index 000000000..2f8ffa66c --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIStartFlying.java @@ -0,0 +1,28 @@ +package com.hbm.entity.mob.ai; + +import com.hbm.entity.mob.IFlyingCreature; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.ai.EntityAIBase; + +public class EntityAIStartFlying extends EntityAIBase { + + private EntityLivingBase living; + private IFlyingCreature flying; + + public EntityAIStartFlying(EntityLivingBase living, IFlyingCreature flying) { + this.living = living; + this.flying = flying; + } + + @Override + public boolean shouldExecute() { + //take off if attacked, on fire or at random (avg 30s) + return this.flying.getFlyingState() == this.flying.STATE_WALKING && (this.living.getAITarget() != null || this.living.isBurning() || this.living.getRNG().nextInt(600) == 0); + } + + @Override + public void startExecuting() { + this.flying.setFlyingState(this.flying.STATE_FLYING); + } +} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIStopFlying.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIStopFlying.java new file mode 100644 index 000000000..6f8dadee5 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIStopFlying.java @@ -0,0 +1,27 @@ +package com.hbm.entity.mob.ai; + +import com.hbm.entity.mob.IFlyingCreature; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.ai.EntityAIBase; + +public class EntityAIStopFlying extends EntityAIBase { + + private EntityLivingBase living; + private IFlyingCreature flying; + + public EntityAIStopFlying(EntityLivingBase living, IFlyingCreature flying) { + this.living = living; + this.flying = flying; + } + + @Override + public boolean shouldExecute() { + return this.flying.getFlyingState() == this.flying.STATE_FLYING && this.living.getRNG().nextInt(200) == 0; + } + + @Override + public void startExecuting() { + this.flying.setFlyingState(this.flying.STATE_WALKING); + } +} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAISwimmingConditional.java b/src/main/java/com/hbm/entity/mob/ai/EntityAISwimmingConditional.java new file mode 100644 index 000000000..1f2e3c18a --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAISwimmingConditional.java @@ -0,0 +1,36 @@ +package com.hbm.entity.mob.ai; + +import java.util.function.Predicate; + +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.ai.EntityAIBase; + +/** + * Identical to EntityAISwimming, but with an added conditional lambda for maximum reusability. + * + * @author hbm + */ +public class EntityAISwimmingConditional extends EntityAIBase { + + private EntityLiving living; + private Predicate condition; + + public EntityAISwimmingConditional(EntityLiving living, Predicate condition) { + this.living = living; + this.condition = condition; + this.setMutexBits(4); + living.getNavigator().setCanSwim(true); + } + + @Override + public boolean shouldExecute() { + return (this.living.isInWater() || this.living.handleLavaMovement()) && condition.test(living); + } + + @Override + public void updateTask() { + if(this.living.getRNG().nextFloat() < 0.8F) { + this.living.getJumpHelper().setJumping(); + } + } +} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIWanderConditional.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIWanderConditional.java new file mode 100644 index 000000000..6132468eb --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIWanderConditional.java @@ -0,0 +1,58 @@ +package com.hbm.entity.mob.ai; + +import java.util.function.Predicate; + +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.ai.EntityAIBase; +import net.minecraft.entity.ai.RandomPositionGenerator; +import net.minecraft.util.Vec3; + +public class EntityAIWanderConditional extends EntityAIBase { + + private EntityCreature creature; + private double speed; + private Predicate condition; + private double xPosition; + private double yPosition; + private double zPosition; + + public EntityAIWanderConditional(EntityCreature creature, double speed, Predicate condition) { + this.creature = creature; + this.speed = speed; + this.condition = condition; + this.setMutexBits(1); + } + + @Override + public boolean shouldExecute() { + + if(!condition.test(creature)) return false; + + if(this.creature.getAge() >= 100) { + return false; + } else if(this.creature.getRNG().nextInt(120) != 0) { + return false; + } else { + Vec3 vec3 = RandomPositionGenerator.findRandomTarget(this.creature, 10, 7); + + if(vec3 == null) { + return false; + } else { + this.xPosition = vec3.xCoord; + this.yPosition = vec3.yCoord; + this.zPosition = vec3.zCoord; + return true; + } + } + } + + @Override + public boolean continueExecuting() { + return !this.creature.getNavigator().noPath() && condition.test(creature); + } + + @Override + public void startExecuting() { + this.creature.getNavigator().tryMoveToXYZ(this.xPosition, this.yPosition, this.zPosition, this.speed); + } +} diff --git a/src/main/java/com/hbm/entity/mob/botprime/EntityBOTPrimeBase.java b/src/main/java/com/hbm/entity/mob/botprime/EntityBOTPrimeBase.java index 1aedbd326..2ec6a830e 100644 --- a/src/main/java/com/hbm/entity/mob/botprime/EntityBOTPrimeBase.java +++ b/src/main/java/com/hbm/entity/mob/botprime/EntityBOTPrimeBase.java @@ -1,6 +1,6 @@ package com.hbm.entity.mob.botprime; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import api.hbm.entity.IRadiationImmune; @@ -80,14 +80,14 @@ public abstract class EntityBOTPrimeBase extends EntityWormBaseNT implements IRa for(int i = 0; i < 5; i++) { - EntityBulletBase bullet = new EntityBulletBase(this.worldObj, BulletConfigSyncingUtil.WORM_LASER, this, living, 1.0F, i * 0.05F); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(this.worldObj, BulletConfigSyncingUtil.WORM_LASER, this, living, 1.0F, i * 0.05F); this.worldObj.spawnEntityInWorld(bullet); } this.playSound("hbm:weapon.ballsLaser", 5.0F, 0.75F); } else { - EntityBulletBase bullet = new EntityBulletBase(this.worldObj, BulletConfigSyncingUtil.WORM_BOLT, this, living, 0.5F, 0.125F); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(this.worldObj, BulletConfigSyncingUtil.WORM_BOLT, this, living, 0.5F, 0.125F); this.worldObj.spawnEntityInWorld(bullet); this.playSound("hbm:weapon.ballsLaser", 5.0F, 1.0F); } diff --git a/src/main/java/com/hbm/entity/pathfinder/PathFinderUtils.java b/src/main/java/com/hbm/entity/pathfinder/PathFinderUtils.java new file mode 100644 index 000000000..9d5b2f36c --- /dev/null +++ b/src/main/java/com/hbm/entity/pathfinder/PathFinderUtils.java @@ -0,0 +1,62 @@ +package com.hbm.entity.pathfinder; + +import net.minecraft.entity.Entity; +import net.minecraft.pathfinding.PathEntity; +import net.minecraft.pathfinding.PathFinder; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.ChunkCache; +import net.minecraft.world.World; + +public class PathFinderUtils { + + public static PathEntity getPathEntityToEntityPartial(World world, Entity fromEntity, Entity toEntity, float maxDist, boolean allowDoors, boolean allowBlocked, boolean allowWater, boolean canDrown) { + world.theProfiler.startSection("pathfind"); + int startX = MathHelper.floor_double(fromEntity.posX); + int startY = MathHelper.floor_double(fromEntity.posY + 1.0D); + int startZ = MathHelper.floor_double(fromEntity.posZ); + int maxDistEff = (int) (maxDist + 16.0F); + int minX = startX - maxDistEff; + int minY = startY - maxDistEff; + int minZ = startZ - maxDistEff; + int maxX = startX + maxDistEff; + int maxY = startY + maxDistEff; + int maxZ = startZ + maxDistEff; + ChunkCache chunkcache = new ChunkCache(world, minX, minY, minZ, maxX, maxY, maxZ, 0); + + Vec3 vec = Vec3.createVectorHelper(toEntity.posX - fromEntity.posX, toEntity.posY - fromEntity.posY, toEntity.posZ - fromEntity.posZ); + vec = vec.normalize(); + vec.xCoord *= maxDist; + vec.yCoord *= maxDist; + vec.zCoord *= maxDist; + + int x = (int) Math.floor(fromEntity.posX + vec.xCoord); + int y = (int) Math.floor(fromEntity.posY + vec.yCoord); + int z = (int) Math.floor(fromEntity.posZ + vec.zCoord); + + //this part will adjust the end of the path so it's actually on the ground, it being unreachable causes mobs to slow down + boolean solid = false; + + for(int i = y; i > y - 10; i--) { + if(!world.getBlock(x, i, z).getMaterial().blocksMovement() && world.getBlock(x, i - 1, z).isNormalCube()) { + solid = true; + y = i; + break; + } + + } + + if(!solid) for(int i = y + 10; i > y; i--) { + if(!world.getBlock(x, i, z).getMaterial().blocksMovement() && world.getBlock(x, i - 1, z).isNormalCube()) { + solid = true; + y = i; + break; + } + } + + //PathEntity pathentity = (new PathFinder(chunkcache, allowDoors, allowBlocked, allowWater, canDrown)).createEntityPathTo(fromEntity, toEntity, maxDist); + PathEntity pathentity = (new PathFinder(chunkcache, allowDoors, allowBlocked, allowWater, canDrown)).createEntityPathTo(fromEntity, x, y, z, maxDist); + world.theProfiler.endSection(); + return pathentity; + } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityAcidBomb.java b/src/main/java/com/hbm/entity/projectile/EntityAcidBomb.java new file mode 100644 index 000000000..8a688df2d --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/EntityAcidBomb.java @@ -0,0 +1,60 @@ +package com.hbm.entity.projectile; + +import com.hbm.entity.mob.EntityGlyphid; +import com.hbm.lib.ModDamageSource; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; + +public class EntityAcidBomb extends EntityThrowableInterp { + + public float damage = 1.5F; + + public EntityAcidBomb(World world) { + super(world); + } + + public EntityAcidBomb(World world, double x, double y, double z) { + super(world, x, y, z); + } + + @Override + protected void onImpact(MovingObjectPosition mop) { + + if(worldObj.isRemote) return; + + if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + + if(!(mop.entityHit instanceof EntityGlyphid)) { + mop.entityHit.attackEntityFrom(ModDamageSource.acid, damage); + this.setDead(); + } + } + + if(mop.typeOfHit == mop.typeOfHit.BLOCK) + this.setDead(); + } + + @Override + public double getGravityVelocity() { + return 0.04D; + } + + @Override + protected float getAirDrag() { + return 1.0F; + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setFloat("damage", damage); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.damage = nbt.getFloat("damage"); + } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java b/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java index e8f4a6ad8..0115dbef3 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java +++ b/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java @@ -150,7 +150,7 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu loadedChunks.clear(); loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.ceil((this.posX + this.motionX) / 16D), newChunkZ + (int) Math.ceil((this.posZ + this.motionZ) / 16D))); + //loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.floor((this.posX + this.motionX) / 16D), newChunkZ + (int) Math.floor((this.posZ + this.motionZ) / 16D))); for(ChunkCoordIntPair chunk : loadedChunks) { ForgeChunkManager.forceChunk(loaderTicket, chunk); diff --git a/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java b/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java index a64891b70..e608b49d5 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java +++ b/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java @@ -56,6 +56,7 @@ public class EntityArtilleryShell extends EntityThrowableNT implements IChunkLoa @Override protected void entityInit() { + super.entityInit(); init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); this.dataWatcher.addObject(10, new Integer(0)); } @@ -197,7 +198,7 @@ public class EntityArtilleryShell extends EntityThrowableNT implements IChunkLoa loadedChunks.clear(); loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.ceil((this.posX + this.motionX) / 16D), newChunkZ + (int) Math.ceil((this.posZ + this.motionZ) / 16D))); + //loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.floor((this.posX + this.motionX) / 16D), newChunkZ + (int) Math.floor((this.posZ + this.motionZ) / 16D))); for(ChunkCoordIntPair chunk : loadedChunks) { ForgeChunkManager.forceChunk(loaderTicket, chunk); diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java deleted file mode 100644 index 76f9340b0..000000000 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java +++ /dev/null @@ -1,696 +0,0 @@ -package com.hbm.entity.projectile; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.generic.RedBarrel; -import com.hbm.entity.effect.EntityCloudFleijaRainbow; -import com.hbm.entity.effect.EntityEMPBlast; -import com.hbm.entity.logic.EntityNukeExplosionMK3; -import com.hbm.entity.logic.EntityNukeExplosionMK5; -import com.hbm.explosion.ExplosionChaos; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionNukeGeneric; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.GunConfiguration; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; -import com.hbm.potion.HbmPotion; -import com.hbm.util.ArmorUtil; -import com.hbm.util.BobMathUtil; -import com.hbm.util.Tuple.Pair; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.ReflectionHelper; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IProjectile; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.EntityDamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class EntityBulletBase extends Entity implements IProjectile { - - private BulletConfiguration config; - public EntityLivingBase shooter; - public float overrideDamage; - - public double prevRenderX; - public double prevRenderY; - public double prevRenderZ; - public final List> trailNodes = new ArrayList(); - - public BulletConfiguration getConfig() { - return config; - } - - public EntityBulletBase(World world) { - super(world); - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - } - - public EntityBulletBase(World world, int config) { - super(world); - this.config = BulletConfigSyncingUtil.pullConfig(config); - this.dataWatcher.updateObject(18, config); - this.renderDistanceWeight = 10.0D; - - if(this.config == null) { - this.setDead(); - return; - } - - this.dataWatcher.updateObject(16, (byte)this.config.style); - this.dataWatcher.updateObject(17, (byte)this.config.trail); - - this.setSize(0.5F, 0.5F); - } - - public EntityBulletBase(World world, int config, EntityLivingBase entity) { - super(world); - this.config = BulletConfigSyncingUtil.pullConfig(config); - this.dataWatcher.updateObject(18, config); - shooter = entity; - - ItemStack gun = entity.getHeldItem(); - boolean offsetShot = true; - - if(gun != null && gun.getItem() instanceof ItemGunBase) { - GunConfiguration cfg = ((ItemGunBase) gun.getItem()).mainConfig; - - if(cfg != null && cfg.hasSights && entity.isSneaking()) { - offsetShot = false; - } - } - - this.setLocationAndAngles(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ, entity.rotationYaw, entity.rotationPitch); - - if(offsetShot) { - double sideOffset = 0.16D; - - this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * sideOffset; - this.posY -= 0.1D; - this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * sideOffset; - } else { - this.posY -= 0.1D; - } - this.setPosition(this.posX, this.posY, this.posZ); - - this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); - this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); - this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); - - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - - this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, this.config.spread * (offsetShot ? 1F : 0.25F)); - - this.dataWatcher.updateObject(16, (byte)this.config.style); - this.dataWatcher.updateObject(17, (byte)this.config.trail); - } - - public EntityBulletBase(World world, int config, EntityLivingBase entity, EntityLivingBase target, float motion, float deviation) { - super(world); - - this.config = BulletConfigSyncingUtil.pullConfig(config); - this.dataWatcher.updateObject(18, config); - this.shooter = entity; - - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - - this.posY = entity.posY + entity.getEyeHeight() - 0.10000000149011612D; - double d0 = target.posX - entity.posX; - double d1 = target.boundingBox.minY + target.height / 3.0F - this.posY; - double d2 = target.posZ - entity.posZ; - double d3 = MathHelper.sqrt_double(d0 * d0 + d2 * d2); - - if (d3 >= 1.0E-7D) { - float f2 = (float) (Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; - float f3 = (float) (-(Math.atan2(d1, d3) * 180.0D / Math.PI)); - double d4 = d0 / d3; - double d5 = d2 / d3; - this.setLocationAndAngles(entity.posX + d4, this.posY, entity.posZ + d5, f2, f3); - this.yOffset = 0.0F; - this.setThrowableHeading(d0, d1, d2, motion, deviation); - } - - this.dataWatcher.updateObject(16, (byte)this.config.style); - this.dataWatcher.updateObject(17, (byte)this.config.trail); - } - - public boolean attackEntityFrom(DamageSource source, float amount) { - - this.setBeenAttacked(); - - if(source instanceof EntityDamageSource) { - EntityDamageSource dmg = (EntityDamageSource) source; - - if(dmg.damageType.equals("player")) { - this.motionX *= -1.5; - this.motionY *= -1.5; - this.motionZ *= -1.5; - return true; - } - } - return false; - } - - @Override - public void setThrowableHeading(double moX, double moY, double moZ, float mult1, float mult2) { - - float f2 = MathHelper.sqrt_double(moX * moX + moY * moY + moZ * moZ); - moX /= f2; - moY /= f2; - moZ /= f2; - moX += this.rand.nextGaussian() * mult2; - moY += this.rand.nextGaussian() * mult2; - moZ += this.rand.nextGaussian() * mult2; - moX *= mult1; - moY *= mult1; - moZ *= mult1; - this.motionX = moX; - this.motionY = moY; - this.motionZ = moZ; - - float f3 = MathHelper.sqrt_double(moX * moX + moZ * moZ); - this.prevRotationYaw = this.rotationYaw = (float) (Math.atan2(moX, moZ) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float) (Math.atan2(moY, f3) * 180.0D / Math.PI); - } - - @Override - @SideOnly(Side.CLIENT) - public void setPositionAndRotation2(double x, double y, double z, float r0, float r1, int i) { - this.setPosition(x, y, z); - this.setRotation(r0, r1); - } - - @Override - @SideOnly(Side.CLIENT) - public void setVelocity(double x, double y, double z) { - this.motionX = x; - this.motionY = y; - this.motionZ = z; - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { - float f = MathHelper.sqrt_double(x * x + z * z); - this.prevRotationYaw = this.rotationYaw = (float) (Math.atan2(x, z) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float) (Math.atan2(y, f) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch; - this.prevRotationYaw = this.rotationYaw; - this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); - } - } - - @Override - protected void entityInit() { - //style - this.dataWatcher.addObject(16, Byte.valueOf((byte) 0)); - //trail - this.dataWatcher.addObject(17, Byte.valueOf((byte) 0)); - //bullet config sync - this.dataWatcher.addObject(18, Integer.valueOf((int) 0)); - } - - @Override - public void onUpdate() { - super.onUpdate(); - - if(config == null) - config = BulletConfigSyncingUtil.pullConfig(dataWatcher.getWatchableObjectInt(18)); - - if(config == null){ - this.setDead(); - return; - } - - if(worldObj.isRemote && config.style == config.STYLE_TAU) { - if(trailNodes.isEmpty()) { - this.ignoreFrustumCheck = true; - trailNodes.add(new Pair(Vec3.createVectorHelper(-motionX * 2, -motionY * 2, -motionZ * 2), 0D)); - } else { - trailNodes.add(new Pair(Vec3.createVectorHelper(0, 0, 0), 1D)); - } - } - - if(this.config.blackPowder && this.ticksExisted == 1) { - - for(int i = 0; i < 15; i++) { - double mod = rand.nextDouble(); - this.worldObj.spawnParticle("smoke", this.posX, this.posY, this.posZ, - (this.motionX + rand.nextGaussian() * 0.05) * mod, - (this.motionY + rand.nextGaussian() * 0.05) * mod, - (this.motionZ + rand.nextGaussian() * 0.05) * mod); - } - - double mod = 0.5; - this.worldObj.spawnParticle("flame", this.posX + this.motionX * mod, this.posY + this.motionY * mod, this.posZ + this.motionZ * mod, 0, 0, 0); - } - - if(config.maxAge == 0) { - - if(this.config.bUpdate != null) - this.config.bUpdate.behaveUpdate(this); - - this.setDead(); - return; - } - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { - float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.prevRotationYaw = this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); - } - - /// ZONE 1 START /// - //entity and block collision, plinking - - /// ZONE 2 START /// - //entity detection - Vec3 vecOrigin = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - Vec3 vecDestination = Vec3.createVectorHelper(this.posX + this.motionX * this.config.velocity, this.posY + this.motionY * this.config.velocity, this.posZ + this.motionZ * this.config.velocity); - MovingObjectPosition movement = this.worldObj.func_147447_a(vecOrigin, vecDestination, false, true, false); - vecOrigin = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - vecDestination = Vec3.createVectorHelper(this.posX + this.motionX * this.config.velocity, this.posY + this.motionY * this.config.velocity, this.posZ + this.motionZ * this.config.velocity); - - MovingObjectPosition impact = null; - - Entity victim = null; - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX * this.config.velocity, this.motionY * this.config.velocity, this.motionZ * this.config.velocity).expand(1.0D, 1.0D, 1.0D)); - - double d0 = 0.0D; - int i; - float f1; - - for (i = 0; i < list.size(); ++i) { - Entity entity1 = (Entity) list.get(i); - - if (entity1.canBeCollidedWith() && (entity1 != this.shooter)) { - f1 = 0.3F; - AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand(f1, f1, f1); - MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vecOrigin, vecDestination); - - if (movingobjectposition1 != null) { - double d1 = vecOrigin.distanceTo(movingobjectposition1.hitVec); - - if (d1 < d0 || d0 == 0.0D) { - victim = entity1; - impact = movingobjectposition1; - d0 = d1; - } - } - } - } - - if (victim != null) { - movement = new MovingObjectPosition(victim); - movement.hitVec.yCoord += victim.height * 0.5D; - } - - /// ZONE 2 END /// - - boolean didBounce = false; - - if(movement != null) { - - //handle entity collision - if(movement.entityHit != null) { - - DamageSource damagesource = this.config.getDamage(this, shooter); - - if(!worldObj.isRemote) { - if(!config.doesPenetrate) { - this.setPosition(movement.hitVec.xCoord, movement.hitVec.yCoord, movement.hitVec.zCoord); - onEntityImpact(victim); - } else { - onEntityHurt(victim); - } - } - - float damage = rand.nextFloat() * (config.dmgMax - config.dmgMin) + config.dmgMin; - - if(overrideDamage != 0) - damage = overrideDamage; - - boolean headshot = false; - - if(victim instanceof EntityLivingBase && this.config.headshotMult > 1F) { - EntityLivingBase living = (EntityLivingBase) victim; - double head = living.height - living.getEyeHeight(); - - if(!!living.isEntityAlive() && impact.hitVec != null && impact.hitVec.yCoord > (living.posY + living.height - head * 2)) { - damage *= this.config.headshotMult; - headshot = true; - } - } - - if(victim != null && !victim.attackEntityFrom(damagesource, damage)) { - - try { - Field lastDamage = ReflectionHelper.findField(EntityLivingBase.class, "lastDamage", "field_110153_bc"); - - float dmg = (float) damage + lastDamage.getFloat(victim); - - if(!victim.attackEntityFrom(damagesource, dmg)) { - headshot = false; - } - } catch (Exception x) { } - - } - - if(!worldObj.isRemote && headshot) { - if(victim instanceof EntityLivingBase) { - EntityLivingBase living = (EntityLivingBase) victim; - double head = living.height - living.getEyeHeight(); - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setInteger("count", 15); - data.setDouble("motion", 0.1D); - data.setString("mode", "blockdust"); - data.setInteger("block", Block.getIdFromBlock(Blocks.redstone_block)); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, living.posX, living.posY + living.height - head, living.posZ), new TargetPoint(living.dimension, living.posX, living.posY, living.posZ, 50)); - worldObj.playSoundEffect(victim.posX, victim.posY, victim.posZ, "mob.zombie.woodbreak", 1.0F, 0.95F + rand.nextFloat() * 0.2F); - } - } - - //handle block collision - } else if(worldObj.getBlock(movement.blockX, movement.blockY, movement.blockZ).getMaterial() != Material.air) { - - boolean hRic = rand.nextInt(100) < config.HBRC; - boolean doesRic = config.doesRicochet || hRic; - - if(!config.isSpectral && !doesRic) { - this.setPosition(movement.hitVec.xCoord, movement.hitVec.yCoord, movement.hitVec.zCoord); - this.onBlockImpact(movement.blockX, movement.blockY, movement.blockZ); - } - - if(doesRic) { - - Vec3 face = null; - - switch(movement.sideHit) { - case 0: - face = Vec3.createVectorHelper(0, -1, 0); break; - case 1: - face = Vec3.createVectorHelper(0, 1, 0); break; - case 2: - face = Vec3.createVectorHelper(0, 0, 1); break; - case 3: - face = Vec3.createVectorHelper(0, 0, -1); break; - case 4: - face = Vec3.createVectorHelper(-1, 0, 0); break; - case 5: - face = Vec3.createVectorHelper(1, 0, 0); break; - } - - if(face != null) { - - Vec3 vel = Vec3.createVectorHelper(motionX, motionY, motionZ); - vel.normalize(); - - boolean lRic = rand.nextInt(100) < config.LBRC; - double angle = Math.abs(BobMathUtil.getCrossAngle(vel, face) - 90); - - if(hRic || (angle <= config.ricochetAngle && lRic)) { - switch(movement.sideHit) { - case 0: - case 1: - motionY *= -1; break; - case 2: - case 3: - motionZ *= -1; break; - case 4: - case 5: - motionX *= -1; break; - } - - if(config.plink == 1) - worldObj.playSoundAtEntity(this, "hbm:weapon.ricochet", 0.25F, 1.0F); - if(config.plink == 2) - worldObj.playSoundAtEntity(this, "hbm:weapon.gBounce", 1.0F, 1.0F); - - onRicochet(movement.blockX, movement.blockY, movement.blockZ); - - } else { - if(!worldObj.isRemote) { - this.setPosition(movement.hitVec.xCoord, movement.hitVec.yCoord, movement.hitVec.zCoord); - onBlockImpact(movement.blockX, movement.blockY, movement.blockZ); - } - } - - this.posX += (movement.hitVec.xCoord - this.posX) * 0.6; - this.posY += (movement.hitVec.yCoord - this.posY) * 0.6; - this.posZ += (movement.hitVec.zCoord - this.posZ) * 0.6; - - this.motionX *= config.bounceMod; - this.motionY *= config.bounceMod; - this.motionZ *= config.bounceMod; - - didBounce = true; - } - } - } - - } - - /// ZONE 1 END /// - - if(!didBounce) { - motionY -= config.gravity; - this.posX += this.motionX * this.config.velocity; - this.posY += this.motionY * this.config.velocity; - this.posZ += this.motionZ * this.config.velocity; - this.setPosition(this.posX, this.posY, this.posZ); - } - - /// SPECIAL UPDATE BEHAVIOR /// - if(this.config.bUpdate != null) - this.config.bUpdate.behaveUpdate(this); - - float f2; - this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f2) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) - { - ; - } - - while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { - this.prevRotationPitch += 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw < -180.0F) { - this.prevRotationYaw -= 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { - this.prevRotationYaw += 360.0F; - } - - if(this.ticksExisted > config.maxAge) - this.setDead(); - - if(worldObj.isRemote && !config.vPFX.isEmpty()) { - - double motion = Math.min(Vec3.createVectorHelper(motionX, motionY, motionZ).lengthVector(), 0.1); - - for(double d = 0; d < motion; d += 0.0625) { - - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setString("type", "vanillaExt"); - nbt.setString("mode", config.vPFX); - nbt.setDouble("posX", (this.lastTickPosX - this.posX) * d + this.posX); - nbt.setDouble("posY", (this.lastTickPosY - this.posY) * d + this.posY); - nbt.setDouble("posZ", (this.lastTickPosZ - this.posZ) * d + this.posZ); - MainRegistry.proxy.effectNT(nbt); - } - } - - //this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; - //this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; - } - - //for when a bullet dies by hitting a block - private void onBlockImpact(int bX, int bY, int bZ) { - - if(config.bImpact != null) - config.bImpact.behaveBlockHit(this, bX, bY, bZ); - - if(!worldObj.isRemote && !config.liveAfterImpact) - this.setDead(); - - if(config.incendiary > 0 && !this.worldObj.isRemote) { - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX, (int)posY, (int)posZ, Blocks.fire); - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX + 1, (int)posY, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX + 1, (int)posY, (int)posZ, Blocks.fire); - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX - 1, (int)posY, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX - 1, (int)posY, (int)posZ, Blocks.fire); - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY + 1, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX, (int)posY + 1, (int)posZ, Blocks.fire); - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY - 1, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX, (int)posY - 1, (int)posZ, Blocks.fire); - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY, (int)posZ + 1) == Blocks.air) worldObj.setBlock((int)posX, (int)posY, (int)posZ + 1, Blocks.fire); - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY, (int)posZ - 1) == Blocks.air) worldObj.setBlock((int)posX, (int)posY, (int)posZ - 1, Blocks.fire); - } - - if(config.emp > 0) - ExplosionNukeGeneric.empBlast(this.worldObj, (int)(this.posX + 0.5D), (int)(this.posY + 0.5D), (int)(this.posZ + 0.5D), config.emp); - - if(config.emp > 3) { - if (!this.worldObj.isRemote) { - - EntityEMPBlast cloud = new EntityEMPBlast(this.worldObj, config.emp); - cloud.posX = this.posX; - cloud.posY = this.posY + 0.5F; - cloud.posZ = this.posZ; - - this.worldObj.spawnEntityInWorld(cloud); - } - } - - if(config.jolt > 0 && !worldObj.isRemote) - ExplosionLarge.jolt(worldObj, posX, posY, posZ, config.jolt, 150, 0.25); - - if(config.explosive > 0 && !worldObj.isRemote) - worldObj.newExplosion(this, posX, posY, posZ, config.explosive, config.incendiary > 0, config.blockDamage); - - if(config.shrapnel > 0 && !worldObj.isRemote) - ExplosionLarge.spawnShrapnels(worldObj, posX, posY, posZ, config.shrapnel); - - if(config.chlorine > 0 && !worldObj.isRemote) { - ExplosionChaos.spawnChlorine(worldObj, posX, posY, posZ, config.chlorine, 1.5, 0); - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); - } - - if(config.rainbow > 0 && !worldObj.isRemote) { - EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, posX, posY, posZ, config.rainbow); - if(!ex.isDead) { - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "random.explode", 100.0f, this.worldObj.rand.nextFloat() * 0.1F + 0.9F); - worldObj.spawnEntityInWorld(ex); - - EntityCloudFleijaRainbow cloud = new EntityCloudFleijaRainbow(this.worldObj, config.rainbow); - cloud.posX = this.posX; - cloud.posY = this.posY; - cloud.posZ = this.posZ; - this.worldObj.spawnEntityInWorld(cloud); - } - } - - if(config.nuke > 0 && !worldObj.isRemote) { - worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, config.nuke, posX, posY, posZ).mute()); - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "muke"); - if(MainRegistry.polaroidID == 11 || rand.nextInt(100) == 0) data.setBoolean("balefire", true); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250)); - worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); - } - - if(config.destroysBlocks && !worldObj.isRemote) { - if(worldObj.getBlock(bX, bY, bZ).getBlockHardness(worldObj, bX, bY, bZ) <= 120) - worldObj.func_147480_a(bX, bY, bZ, false); - } else if(config.doesBreakGlass && !worldObj.isRemote) { - if(worldObj.getBlock(bX, bY, bZ) == Blocks.glass || - worldObj.getBlock(bX, bY, bZ) == Blocks.glass_pane || - worldObj.getBlock(bX, bY, bZ) == Blocks.stained_glass || - worldObj.getBlock(bX, bY, bZ) == Blocks.stained_glass_pane) - worldObj.func_147480_a(bX, bY, bZ, false); - - if(worldObj.getBlock(bX, bY, bZ) == ModBlocks.red_barrel) - ((RedBarrel) ModBlocks.red_barrel).explode(worldObj, bX, bY, bZ); - } - } - - //for when a bullet dies by hitting a block - private void onRicochet(int bX, int bY, int bZ) { - - if(config.bRicochet != null) - config.bRicochet.behaveBlockRicochet(this, bX, bY, bZ); - } - - //for when a bullet dies by hitting an entity - private void onEntityImpact(Entity e) { - onEntityHurt(e); - onBlockImpact(-1, -1, -1); - - if(config.bHit != null) - config.bHit.behaveEntityHit(this, e); - } - - //for when a bullet hurts an entity, not necessarily dying - private void onEntityHurt(Entity e) { - - if(config.bHurt != null) - config.bHurt.behaveEntityHurt(this, e); - - if(config.incendiary > 0 && !worldObj.isRemote) { - e.setFire(config.incendiary); - } - - if(config.leadChance > 0 && !worldObj.isRemote && worldObj.rand.nextInt(100) < config.leadChance && e instanceof EntityLivingBase) { - ((EntityLivingBase)e).addPotionEffect(new PotionEffect(HbmPotion.lead.id, 10 * 20, 0)); - } - - if(e instanceof EntityLivingBase && config.effects != null && !config.effects.isEmpty() && !worldObj.isRemote) { - - for(PotionEffect effect : config.effects) { - ((EntityLivingBase)e).addPotionEffect(new PotionEffect(effect)); - } - } - - if(config.instakill && e instanceof EntityLivingBase && !worldObj.isRemote) { - - if(!(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode)) - ((EntityLivingBase)e).setHealth(0.0F); - } - - if(config.caustic > 0 && e instanceof EntityPlayer){ - ArmorUtil.damageSuit((EntityPlayer)e, 0, config.caustic); - ArmorUtil.damageSuit((EntityPlayer)e, 1, config.caustic); - ArmorUtil.damageSuit((EntityPlayer)e, 2, config.caustic); - ArmorUtil.damageSuit((EntityPlayer)e, 3, config.caustic); - } - } - - @Override - protected void readEntityFromNBT(NBTTagCompound nbt) { - - int cfg = nbt.getInteger("config"); - this.config = BulletConfigSyncingUtil.pullConfig(cfg); - - if(this.config == null) { - this.setDead(); - return; - } - - this.overrideDamage = nbt.getFloat("damage"); - - this.dataWatcher.updateObject(18, cfg); - - this.dataWatcher.updateObject(16, (byte)this.config.style); - this.dataWatcher.updateObject(17, (byte)this.config.trail); - } - - @Override - protected void writeEntityToNBT(NBTTagCompound nbt) { - - nbt.setInteger("config", dataWatcher.getWatchableObjectInt(18)); - - nbt.setFloat("damage", this.overrideDamage); - } - -} diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java new file mode 100644 index 000000000..d8ee0f4f3 --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java @@ -0,0 +1,605 @@ +package com.hbm.entity.projectile; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.RedBarrel; +import com.hbm.entity.effect.EntityCloudFleijaRainbow; +import com.hbm.entity.effect.EntityEMPBlast; +import com.hbm.entity.logic.EntityNukeExplosionMK3; +import com.hbm.entity.logic.EntityNukeExplosionMK5; +import com.hbm.explosion.ExplosionChaos; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.explosion.ExplosionNukeGeneric; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockMutatorFire; +import com.hbm.explosion.vanillant.standard.BlockProcessorNoDamage; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; +import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.GunConfiguration; +import com.hbm.items.weapon.ItemGunBase; +import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.potion.HbmPotion; +import com.hbm.util.ArmorUtil; +import com.hbm.util.BobMathUtil; +import com.hbm.util.Tuple.Pair; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.relauncher.ReflectionHelper; +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +/** + * MK2 which features several improvements: + * - uses generic throwable code, reducing boilerplate nonsense + * - uses approach-based interpolation, preventing desyncs and making movement silky-smooth + * - new adjustments in the base class allow for multiple MOP impacts per frame + * - also comes with tons of legacy code to ensure compat (sadly) + * @author hbm + */ +public class EntityBulletBaseNT extends EntityThrowableInterp implements IBulletBase { + + @Override public double prevX() { return prevRenderX; } + @Override public double prevY() { return prevRenderY; } + @Override public double prevZ() { return prevRenderZ; } + @Override public void prevX(double d) { prevRenderX = d; } + @Override public void prevY(double d) { prevRenderY = d; } + @Override public void prevZ(double d) { prevRenderZ = d; } + @Override public List> nodes() { return this.trailNodes; } + + private BulletConfiguration config; + public float overrideDamage; + + public double prevRenderX; + public double prevRenderY; + public double prevRenderZ; + public final List> trailNodes = new ArrayList(); + + public BulletConfiguration getConfig() { + return config; + } + + public EntityBulletBaseNT(World world) { + super(world); + this.renderDistanceWeight = 10.0D; + this.setSize(0.5F, 0.5F); + } + + public EntityBulletBaseNT(World world, int config) { + super(world); + this.config = BulletConfigSyncingUtil.pullConfig(config); + this.dataWatcher.updateObject(18, config); + this.dataWatcher.updateObject(16, (byte)this.config.style); + this.dataWatcher.updateObject(17, (byte)this.config.trail); + this.renderDistanceWeight = 10.0D; + + if(this.config == null) { + this.setDead(); + return; + } + + this.setSize(0.5F, 0.5F); + } + + public EntityBulletBaseNT(World world, int config, EntityLivingBase entity) { + super(world); + this.config = BulletConfigSyncingUtil.pullConfig(config); + this.dataWatcher.updateObject(18, config); + this.dataWatcher.updateObject(16, (byte)this.config.style); + this.dataWatcher.updateObject(17, (byte)this.config.trail); + thrower = entity; + + ItemStack gun = entity.getHeldItem(); + boolean offsetShot = true; + + if(gun != null && gun.getItem() instanceof ItemGunBase) { + GunConfiguration cfg = ((ItemGunBase) gun.getItem()).mainConfig; + + if(cfg != null && cfg.hasSights && entity.isSneaking()) { + offsetShot = false; + } + } + + this.setLocationAndAngles(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ, entity.rotationYaw, entity.rotationPitch); + + if(offsetShot) { + double sideOffset = 0.16D; + + this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * sideOffset; + this.posY -= 0.1D; + this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * sideOffset; + } else { + this.posY -= 0.1D; + } + this.setPosition(this.posX, this.posY, this.posZ); + + this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); + + this.renderDistanceWeight = 10.0D; + this.setSize(0.5F, 0.5F); + + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, this.config.spread * (offsetShot ? 1F : 0.25F)); + } + + public EntityBulletBaseNT(World world, int config, EntityLivingBase entity, EntityLivingBase target, float motion, float deviation) { + super(world); + + this.config = BulletConfigSyncingUtil.pullConfig(config); + this.dataWatcher.updateObject(18, config); + this.dataWatcher.updateObject(16, (byte)this.config.style); + this.dataWatcher.updateObject(17, (byte)this.config.trail); + this.thrower = entity; + + this.renderDistanceWeight = 10.0D; + this.setSize(0.5F, 0.5F); + + this.posY = entity.posY + entity.getEyeHeight() - 0.10000000149011612D; + double d0 = target.posX - entity.posX; + double d1 = target.boundingBox.minY + target.height / 3.0F - this.posY; + double d2 = target.posZ - entity.posZ; + double d3 = MathHelper.sqrt_double(d0 * d0 + d2 * d2); + + if (d3 >= 1.0E-7D) { + float f2 = (float) (Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; + float f3 = (float) (-(Math.atan2(d1, d3) * 180.0D / Math.PI)); + double d4 = d0 / d3; + double d5 = d2 / d3; + this.setLocationAndAngles(entity.posX + d4, this.posY, entity.posZ + d5, f2, f3); + this.yOffset = 0.0F; + this.setThrowableHeading(d0, d1, d2, motion, deviation); + } + } + + @Override + protected void entityInit() { + super.entityInit(); + //style + this.dataWatcher.addObject(16, Byte.valueOf((byte) 0)); + //trail + this.dataWatcher.addObject(17, Byte.valueOf((byte) 0)); + //bullet config sync + this.dataWatcher.addObject(18, Integer.valueOf((int) 0)); + } + + @Override + public void onUpdate() { + + if(config == null) config = BulletConfigSyncingUtil.pullConfig(dataWatcher.getWatchableObjectInt(18)); + + if(config == null){ + this.setDead(); + return; + } + + if(worldObj.isRemote && config.style == config.STYLE_TAU) { + if(trailNodes.isEmpty()) { + this.ignoreFrustumCheck = true; + trailNodes.add(new Pair(Vec3.createVectorHelper(-motionX * 2, -motionY * 2, -motionZ * 2), 0D)); + } else { + trailNodes.add(new Pair(Vec3.createVectorHelper(0, 0, 0), 1D)); + } + } + + if(worldObj.isRemote && this.config.blackPowder && this.ticksExisted == 1) { + + for(int i = 0; i < 15; i++) { + double mod = rand.nextDouble(); + this.worldObj.spawnParticle("smoke", this.posX, this.posY, this.posZ, + (this.motionX + rand.nextGaussian() * 0.05) * mod, + (this.motionY + rand.nextGaussian() * 0.05) * mod, + (this.motionZ + rand.nextGaussian() * 0.05) * mod); + } + + double mod = 0.5; + this.worldObj.spawnParticle("flame", this.posX + this.motionX * mod, this.posY + this.motionY * mod, this.posZ + this.motionZ * mod, 0, 0, 0); + } + + if(!worldObj.isRemote) { + + if(config.maxAge == 0) { + if(this.config.bntUpdate != null) this.config.bntUpdate.behaveUpdate(this); + this.setDead(); + return; + } + + if(this.ticksExisted > config.maxAge) this.setDead(); + } + + if(this.config.bntUpdate != null) this.config.bntUpdate.behaveUpdate(this); + + this.prevPosX = posX; + this.prevPosY = posY; + this.prevPosZ = posZ; + + super.onUpdate(); + + if(worldObj.isRemote && !config.vPFX.isEmpty()) { + + Vec3 vec = Vec3.createVectorHelper(posX - prevPosX, posY - prevPosY, posZ - prevPosZ); + double motion = Math.max(vec.lengthVector(), 0.1); + vec = vec.normalize(); + + for(double d = 0; d < motion; d += 0.5) { + + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("type", "vanillaExt"); + nbt.setString("mode", config.vPFX); + nbt.setDouble("posX", this.posX - vec.xCoord * d); + nbt.setDouble("posY", this.posY - vec.yCoord * d); + nbt.setDouble("posZ", this.posZ - vec.zCoord * d); + MainRegistry.proxy.effectNT(nbt); + } + } + } + + @Override + protected void onImpact(MovingObjectPosition mop) { + + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + + boolean hRic = rand.nextInt(100) < config.HBRC; + boolean doesRic = config.doesRicochet && hRic; + + if(!config.isSpectral && !doesRic) { + this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + this.onBlockImpact(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit); + } + + if(doesRic) { + + Vec3 face = null; + + switch(mop.sideHit) { + case 0: face = Vec3.createVectorHelper(0, -1, 0); break; + case 1: face = Vec3.createVectorHelper(0, 1, 0); break; + case 2: face = Vec3.createVectorHelper(0, 0, 1); break; + case 3: face = Vec3.createVectorHelper(0, 0, -1); break; + case 4: face = Vec3.createVectorHelper(-1, 0, 0); break; + case 5: face = Vec3.createVectorHelper(1, 0, 0); break; + } + + if(face != null) { + + Vec3 vel = Vec3.createVectorHelper(motionX, motionY, motionZ); + vel.normalize(); + + boolean lRic = rand.nextInt(100) < config.LBRC; + double angle = Math.abs(BobMathUtil.getCrossAngle(vel, face) - 90); + + if(hRic || (angle <= config.ricochetAngle && lRic)) { + switch(mop.sideHit) { + case 0: + case 1: motionY *= -1; break; + case 2: + case 3: motionZ *= -1; break; + case 4: + case 5: motionX *= -1; break; + } + + if(config.plink == 1) + worldObj.playSoundAtEntity(this, "hbm:weapon.ricochet", 0.25F, 1.0F); + if(config.plink == 2) + worldObj.playSoundAtEntity(this, "hbm:weapon.gBounce", 1.0F, 1.0F); + + this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + onRicochet(mop.blockX, mop.blockY, mop.blockZ); + + //worldObj.setBlock((int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), Blocks.dirt); + + } else { + if(!worldObj.isRemote) { + this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + onBlockImpact(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit); + } + } + + /*this.posX += (mop.hitVec.xCoord - this.posX) * 0.6; + this.posY += (mop.hitVec.yCoord - this.posY) * 0.6; + this.posZ += (mop.hitVec.zCoord - this.posZ) * 0.6;*/ + + this.motionX *= config.bounceMod; + this.motionY *= config.bounceMod; + this.motionZ *= config.bounceMod; + } + } + + } + + if(mop.entityHit != null) { + + DamageSource damagesource = this.config.getDamage(this, this.thrower); + Entity victim = mop.entityHit; + + if(!config.doesPenetrate) { + this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + onEntityImpact(victim); + } else { + onEntityHurt(victim); + } + + float damage = rand.nextFloat() * (config.dmgMax - config.dmgMin) + config.dmgMin; + + if(overrideDamage != 0) + damage = overrideDamage; + + boolean headshot = false; + + if(victim instanceof EntityLivingBase && this.config.headshotMult > 1F) { + EntityLivingBase living = (EntityLivingBase) victim; + double head = living.height - living.getEyeHeight(); + + if(!!living.isEntityAlive() && mop.hitVec != null && mop.hitVec.yCoord > (living.posY + living.height - head * 2)) { + damage *= this.config.headshotMult; + headshot = true; + } + } + + if(victim != null && !victim.attackEntityFrom(damagesource, damage)) { + + try { + Field lastDamage = ReflectionHelper.findField(EntityLivingBase.class, "lastDamage", "field_110153_bc"); + float dmg = (float) damage + lastDamage.getFloat(victim); + if(!victim.attackEntityFrom(damagesource, dmg)) headshot = false; + } catch (Exception x) { } + + } + + if(!worldObj.isRemote && headshot) { + if(victim instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) victim; + double head = living.height - living.getEyeHeight(); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setInteger("count", 15); + data.setDouble("motion", 0.1D); + data.setString("mode", "blockdust"); + data.setInteger("block", Block.getIdFromBlock(Blocks.redstone_block)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, living.posX, living.posY + living.height - head, living.posZ), new TargetPoint(living.dimension, living.posX, living.posY, living.posZ, 50)); + worldObj.playSoundEffect(victim.posX, victim.posY, victim.posZ, "mob.zombie.woodbreak", 1.0F, 0.95F + rand.nextFloat() * 0.2F); + } + } + } + } + + //for when a bullet dies by hitting a block + private void onBlockImpact(int bX, int bY, int bZ, int sideHit) { + + if(config.bntImpact != null) + config.bntImpact.behaveBlockHit(this, bX, bY, bZ, sideHit); + + if(!worldObj.isRemote) { + if(!config.liveAfterImpact && !config.isSpectral && bY > -1 && !this.inGround) this.setDead(); + if(!config.doesPenetrate && bY == -1) this.setDead(); + } + + if(config.incendiary > 0 && !this.worldObj.isRemote) { + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX, (int)posY, (int)posZ, Blocks.fire); + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX + 1, (int)posY, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX + 1, (int)posY, (int)posZ, Blocks.fire); + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX - 1, (int)posY, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX - 1, (int)posY, (int)posZ, Blocks.fire); + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY + 1, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX, (int)posY + 1, (int)posZ, Blocks.fire); + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY - 1, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX, (int)posY - 1, (int)posZ, Blocks.fire); + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY, (int)posZ + 1) == Blocks.air) worldObj.setBlock((int)posX, (int)posY, (int)posZ + 1, Blocks.fire); + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY, (int)posZ - 1) == Blocks.air) worldObj.setBlock((int)posX, (int)posY, (int)posZ - 1, Blocks.fire); + } + + if(config.emp > 0) + ExplosionNukeGeneric.empBlast(this.worldObj, (int)(this.posX + 0.5D), (int)(this.posY + 0.5D), (int)(this.posZ + 0.5D), config.emp); + + if(config.emp > 3) { + if (!this.worldObj.isRemote) { + + EntityEMPBlast cloud = new EntityEMPBlast(this.worldObj, config.emp); + cloud.posX = this.posX; + cloud.posY = this.posY + 0.5F; + cloud.posZ = this.posZ; + + this.worldObj.spawnEntityInWorld(cloud); + } + } + + if(config.jolt > 0 && !worldObj.isRemote) + ExplosionLarge.jolt(worldObj, posX, posY, posZ, config.jolt, 150, 0.25); + + if(config.explosive > 0 && !worldObj.isRemote) { + //worldObj.newExplosion(this.thrower, posX, posY, posZ, config.explosive, config.incendiary > 0, config.blockDamage); + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, config.explosive, this.thrower); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + if(config.blockDamage) vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(config.incendiary > 0 ? new BlockMutatorFire() : null)); + else vnt.setBlockProcessor(new BlockProcessorNoDamage().withBlockEffect(config.incendiary > 0 ? new BlockMutatorFire() : null)); + vnt.setEntityProcessor(new EntityProcessorStandard().allowSelfDamage()); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectStandard()); + vnt.explode(); + } + + if(config.shrapnel > 0 && !worldObj.isRemote) + ExplosionLarge.spawnShrapnels(worldObj, posX, posY, posZ, config.shrapnel); + + if(config.chlorine > 0 && !worldObj.isRemote) { + ExplosionChaos.spawnChlorine(worldObj, posX, posY, posZ, config.chlorine, 1.5, 0); + worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); + } + + if(config.rainbow > 0 && !worldObj.isRemote) { + EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, posX, posY, posZ, config.rainbow); + if(!ex.isDead) { + this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "random.explode", 100.0f, this.worldObj.rand.nextFloat() * 0.1F + 0.9F); + worldObj.spawnEntityInWorld(ex); + + EntityCloudFleijaRainbow cloud = new EntityCloudFleijaRainbow(this.worldObj, config.rainbow); + cloud.posX = this.posX; + cloud.posY = this.posY; + cloud.posZ = this.posZ; + this.worldObj.spawnEntityInWorld(cloud); + } + } + + if(config.nuke > 0 && !worldObj.isRemote) { + worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, config.nuke, posX, posY, posZ).mute()); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "muke"); + if(MainRegistry.polaroidID == 11 || rand.nextInt(100) == 0) data.setBoolean("balefire", true); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250)); + worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); + } + + if(config.destroysBlocks && !worldObj.isRemote) { + if(worldObj.getBlock(bX, bY, bZ).getBlockHardness(worldObj, bX, bY, bZ) <= 120) + worldObj.func_147480_a(bX, bY, bZ, false); + } else if(config.doesBreakGlass && !worldObj.isRemote) { + if(worldObj.getBlock(bX, bY, bZ) == Blocks.glass || + worldObj.getBlock(bX, bY, bZ) == Blocks.glass_pane || + worldObj.getBlock(bX, bY, bZ) == Blocks.stained_glass || + worldObj.getBlock(bX, bY, bZ) == Blocks.stained_glass_pane) + worldObj.func_147480_a(bX, bY, bZ, false); + + if(worldObj.getBlock(bX, bY, bZ) == ModBlocks.red_barrel) + ((RedBarrel) ModBlocks.red_barrel).explode(worldObj, bX, bY, bZ); + } + } + + //for when a bullet dies by hitting a block + private void onRicochet(int bX, int bY, int bZ) { + + if(config.bntRicochet != null) + config.bntRicochet.behaveBlockRicochet(this, bX, bY, bZ); + } + + //for when a bullet dies by hitting an entity + private void onEntityImpact(Entity e) { + onEntityHurt(e); + onBlockImpact(-1, -1, -1, -1); + + if(config.bntHit != null) + config.bntHit.behaveEntityHit(this, e); + + //this.setDead(); + } + + //for when a bullet hurts an entity, not necessarily dying + private void onEntityHurt(Entity e) { + + if(config.bntHurt != null) + config.bntHurt.behaveEntityHurt(this, e); + + if(config.incendiary > 0 && !worldObj.isRemote) { + e.setFire(config.incendiary); + } + + if(config.leadChance > 0 && !worldObj.isRemote && worldObj.rand.nextInt(100) < config.leadChance && e instanceof EntityLivingBase) { + ((EntityLivingBase)e).addPotionEffect(new PotionEffect(HbmPotion.lead.id, 10 * 20, 0)); + } + + if(e instanceof EntityLivingBase && config.effects != null && !config.effects.isEmpty() && !worldObj.isRemote) { + + for(PotionEffect effect : config.effects) { + ((EntityLivingBase)e).addPotionEffect(new PotionEffect(effect)); + } + } + + if(config.instakill && e instanceof EntityLivingBase && !worldObj.isRemote) { + + if(!(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode)) + ((EntityLivingBase)e).setHealth(0.0F); + } + + if(config.caustic > 0 && e instanceof EntityPlayer){ + ArmorUtil.damageSuit((EntityPlayer)e, 0, config.caustic); + ArmorUtil.damageSuit((EntityPlayer)e, 1, config.caustic); + ArmorUtil.damageSuit((EntityPlayer)e, 2, config.caustic); + ArmorUtil.damageSuit((EntityPlayer)e, 3, config.caustic); + } + } + + @Override + public boolean doesPenetrate() { + return this.config.doesPenetrate; + } + + @Override + public boolean isSpectral() { + return this.config.isSpectral; + } + + @Override + public int selfDamageDelay() { + return this.config.selfDamageDelay; + } + + @Override + protected double headingForceMult() { + return 1D; + } + + @Override + public double getGravityVelocity() { + return this.config.gravity; + } + + @Override + protected double motionMult() { + return this.config.velocity; + } + + @Override + protected float getAirDrag() { + return 1F; + } + + @Override + protected float getWaterDrag() { + return 1F; + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + int cfg = nbt.getInteger("config"); + this.config = BulletConfigSyncingUtil.pullConfig(cfg); + this.dataWatcher.updateObject(16, (byte)this.config.style); + this.dataWatcher.updateObject(17, (byte)this.config.trail); + + if(this.config == null) { + this.setDead(); + return; + } + + this.overrideDamage = nbt.getFloat("damage"); + this.dataWatcher.updateObject(18, cfg); + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setInteger("config", dataWatcher.getWatchableObjectInt(18)); + nbt.setFloat("damage", this.overrideDamage); + } + + public static interface IBulletHurtBehaviorNT { public void behaveEntityHurt(EntityBulletBaseNT bullet, Entity hit); } + public static interface IBulletHitBehaviorNT { public void behaveEntityHit(EntityBulletBaseNT bullet, Entity hit); } + public static interface IBulletRicochetBehaviorNT { public void behaveBlockRicochet(EntityBulletBaseNT bullet, int x, int y, int z); } + public static interface IBulletImpactBehaviorNT { public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit); } + public static interface IBulletUpdateBehaviorNT { public void behaveUpdate(EntityBulletBaseNT bullet); } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityChemical.java b/src/main/java/com/hbm/entity/projectile/EntityChemical.java index 003414be6..3eb72cddc 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityChemical.java +++ b/src/main/java/com/hbm/entity/projectile/EntityChemical.java @@ -175,7 +175,7 @@ public class EntityChemical extends EntityThrowableNT { } if(type.temperature >= 100) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_boil), 5F + (type.temperature - 100) * 0.02F); //5 damage at 100°C with one extra damage every 50°C + EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_boil), 0.25F + (type.temperature - 100) * 0.001F); //.25 damage at 100°C with one extra damage every 1000°C if(type.temperature >= 500) { e.setFire(10); //afterburn for 10 seconds @@ -185,9 +185,15 @@ public class EntityChemical extends EntityThrowableNT { if(style == ChemicalStyle.LIQUID || style == ChemicalStyle.GAS) { if(type.temperature < -20) { if(living != null) { //only living things are affected - EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_cryolator), 5F + (type.temperature + 20) * -0.05F); //5 damage at -20°C with one extra damage every -20°C - living.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 2)); - living.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 100, 4)); + + HbmLivingProps.setTemperature(living, HbmLivingProps.getTemperature(living) + type.temperature / 20); + + if(HbmLivingProps.isFrozen(living)) { + if(!EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_cryolator), living.getMaxHealth() * -type.temperature / 273 * 0.01F)) + e.attackEntityFrom(getDamage(ModDamageSource.s_cryolator), living.getMaxHealth() * -type.temperature / 273); + living.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 2)); + living.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 100, 4)); + } } } @@ -229,11 +235,11 @@ public class EntityChemical extends EntityThrowableNT { if(type.hasTrait(FT_Corrosive.class)) { FT_Corrosive trait = type.getTrait(FT_Corrosive.class); - EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_acid), trait.getRating() / 20F); + EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_acid), trait.getRating() / 50F); if(living != null) { for(int i = 0; i < 4; i++) { - ArmorUtil.damageSuit(living, i, trait.getRating() / 5); + ArmorUtil.damageSuit(living, i, (int) Math.ceil(trait.getRating() / 50)); } } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityCombineBallNT.java b/src/main/java/com/hbm/entity/projectile/EntityCombineBallNT.java index 1c0b0f27c..e9c5dc228 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityCombineBallNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityCombineBallNT.java @@ -3,7 +3,7 @@ package com.hbm.entity.projectile; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -public class EntityCombineBallNT extends EntityBulletBase { +public class EntityCombineBallNT extends EntityBulletBaseNT { public EntityCombineBallNT(World world, int config, EntityLivingBase shooter) { super(world, config, shooter); @@ -13,6 +13,6 @@ public class EntityCombineBallNT extends EntityBulletBase { @Override public void setDead() { super.setDead(); - worldObj.createExplosion(shooter, posX, posY, posZ, 2, false); + worldObj.createExplosion(this.getThrower(), posX, posY, posZ, 2, false); } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityMeteor.java b/src/main/java/com/hbm/entity/projectile/EntityMeteor.java index 3582a80c3..3fea4e2e3 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityMeteor.java +++ b/src/main/java/com/hbm/entity/projectile/EntityMeteor.java @@ -74,7 +74,7 @@ public class EntityMeteor extends Entity { @Override @SideOnly(Side.CLIENT) public boolean isInRangeToRenderDist(double distance) { - return distance < 500000; + return true; } @Override diff --git a/src/main/java/com/hbm/entity/projectile/EntityModBeam.java b/src/main/java/com/hbm/entity/projectile/EntityModBeam.java index b8e8365f9..f8a2e6be7 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityModBeam.java +++ b/src/main/java/com/hbm/entity/projectile/EntityModBeam.java @@ -5,7 +5,7 @@ import java.util.List; import com.hbm.config.BombConfig; import com.hbm.entity.effect.EntityBlackHole; import com.hbm.entity.effect.EntityCloudFleijaRainbow; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.effect.EntityRagingVortex; import com.hbm.entity.effect.EntityVortex; import com.hbm.entity.grenade.EntityGrenadeZOMG; @@ -490,7 +490,7 @@ public class EntityModBeam extends Entity implements IProjectile { this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "random.explode", 100.0f, this.worldObj.rand.nextFloat() * 0.1F + 0.9F); this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.gadgetRadius, posX, posY, posZ)); - this.worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFac(worldObj, posX, posY, posZ, BombConfig.gadgetRadius)); + EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.gadgetRadius); } } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityRBMKDebris.java b/src/main/java/com/hbm/entity/projectile/EntityRBMKDebris.java index c92fb2ae6..0bc62c9e3 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityRBMKDebris.java +++ b/src/main/java/com/hbm/entity/projectile/EntityRBMKDebris.java @@ -68,30 +68,6 @@ public class EntityRBMKDebris extends EntityDebrisBase { hasSizeSet = true; } - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - this.motionY -= 0.04D; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - - this.lastRot = this.rot; - - if(this.onGround) { - this.motionX *= 0.85D; - this.motionZ *= 0.85D; - this.motionY *= -0.5D; - - } else { - - this.rot += 10F; - - if(rot >= 360F) { - this.rot -= 360F; - this.lastRot -= 360F; - } - } - if(!worldObj.isRemote) { if(this.getType() == DebrisType.LID && motionY > 0) { @@ -133,6 +109,30 @@ public class EntityRBMKDebris extends EntityDebrisBase { if(!RBMKDials.getPermaScrap(worldObj) && this.ticksExisted > getLifetime() + this.getEntityId() % 50) this.setDead(); } + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + this.motionY -= 0.04D; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + + this.lastRot = this.rot; + + if(this.onGround) { + this.motionX *= 0.85D; + this.motionZ *= 0.85D; + this.motionY *= -0.5D; + + } else { + + this.rot += 10F; + + if(rot >= 360F) { + this.rot -= 360F; + this.lastRot -= 360F; + } + } } @Override diff --git a/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java b/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java index 3b1c7dea5..c7cc1a674 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java +++ b/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java @@ -7,6 +7,7 @@ import com.hbm.lib.ModDamageSource; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; @@ -106,4 +107,15 @@ public class EntityShrapnel extends EntityThrowable { public void setWatz(boolean b) { this.dataWatcher.updateObject(16, (byte) (b ? 3 : 0)); } + + @Override + public boolean writeToNBTOptional(NBTTagCompound nbt) { + return false; + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.setDead(); + } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java index 608f999d5..40964b9d3 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java @@ -2,6 +2,8 @@ package com.hbm.entity.projectile; import java.util.List; +import com.hbm.util.TrackerUtil; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -32,7 +34,7 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { public int throwableShake; protected EntityLivingBase thrower; private String throwerName; - private int ticksInGround; + public int ticksInGround; private int ticksInAir; public EntityThrowableNT(World world) { @@ -41,7 +43,17 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { } @Override - protected void entityInit() { } + protected void entityInit() { + this.dataWatcher.addObject(2, Byte.valueOf((byte)0)); + } + + public void setStuckIn(int side) { + this.dataWatcher.updateObject(2, (byte) side); + } + + public int getStuckIn() { + return this.dataWatcher.getWatchableObjectByte(2); + } @Override @SideOnly(Side.CLIENT) @@ -81,19 +93,27 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { return 1.5F; } + protected double headingForceMult() { + return 0.0075D; + } + protected float throwAngle() { return 0.0F; } + protected double motionMult() { + return 1.0D; + } + @Override public void setThrowableHeading(double motionX, double motionY, double motionZ, float velocity, float inaccuracy) { float throwLen = MathHelper.sqrt_double(motionX * motionX + motionY * motionY + motionZ * motionZ); motionX /= (double) throwLen; motionY /= (double) throwLen; motionZ /= (double) throwLen; - motionX += this.rand.nextGaussian() * 0.0075D * (double) inaccuracy; - motionY += this.rand.nextGaussian() * 0.0075D * (double) inaccuracy; - motionZ += this.rand.nextGaussian() * 0.0075D * (double) inaccuracy; + motionX += this.rand.nextGaussian() * headingForceMult() * (double) inaccuracy; + motionY += this.rand.nextGaussian() * headingForceMult() * (double) inaccuracy; + motionZ += this.rand.nextGaussian() * headingForceMult() * (double) inaccuracy; motionX *= (double) velocity; motionY *= (double) velocity; motionZ *= (double) velocity; @@ -155,43 +175,54 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { ++this.ticksInAir; Vec3 pos = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - Vec3 nextPos = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - MovingObjectPosition mop = this.worldObj.rayTraceBlocks(pos, nextPos); + Vec3 nextPos = Vec3.createVectorHelper(this.posX + this.motionX * motionMult(), this.posY + this.motionY * motionMult(), this.posZ + this.motionZ * motionMult()); + MovingObjectPosition mop = null; + if(!this.isSpectral()) mop = this.worldObj.func_147447_a(pos, nextPos, false, true, false); pos = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - nextPos = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + nextPos = Vec3.createVectorHelper(this.posX + this.motionX * motionMult(), this.posY + this.motionY * motionMult(), this.posZ + this.motionZ * motionMult()); if(mop != null) { nextPos = Vec3.createVectorHelper(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); } - - if(!this.worldObj.isRemote) { + + if(!this.worldObj.isRemote && this.doesImpactEntities()) { Entity hitEntity = null; - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX * motionMult(), this.motionY * motionMult(), this.motionZ * motionMult()).expand(1.0D, 1.0D, 1.0D)); double nearest = 0.0D; EntityLivingBase thrower = this.getThrower(); + MovingObjectPosition nonPenImpact = null; for(int j = 0; j < list.size(); ++j) { Entity entity = (Entity) list.get(j); - - if(entity.canBeCollidedWith() && (entity != thrower || this.ticksInAir >= 5)) { + + if(entity.canBeCollidedWith() && (entity != thrower || this.ticksInAir >= this.selfDamageDelay())) { double hitbox = 0.3F; AxisAlignedBB aabb = entity.boundingBox.expand(hitbox, hitbox, hitbox); MovingObjectPosition hitMop = aabb.calculateIntercept(pos, nextPos); if(hitMop != null) { - double dist = pos.distanceTo(hitMop.hitVec); - - if(dist < nearest || nearest == 0.0D) { - hitEntity = entity; - nearest = dist; + + // if penetration is enabled, run impact for all intersecting entities + if(this.doesPenetrate()) { + this.onImpact(new MovingObjectPosition(entity, hitMop.hitVec)); + } else { + + double dist = pos.distanceTo(hitMop.hitVec); + + if(dist < nearest || nearest == 0.0D) { + hitEntity = entity; + nearest = dist; + nonPenImpact = hitMop; + } } } } } - if(hitEntity != null) { - mop = new MovingObjectPosition(hitEntity); + // if not, only run it for the closest MOP + if(!this.doesPenetrate() && hitEntity != null) { + mop = new MovingObjectPosition(hitEntity, nonPenImpact.hitVec); } } @@ -202,35 +233,38 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { this.onImpact(mop); } } - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; - float hyp = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - for(this.rotationPitch = (float) (Math.atan2(this.motionY, (double) hyp) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { - ; + if(!this.onGround) { + float hyp = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + + for(this.rotationPitch = (float) (Math.atan2(this.motionY, (double) hyp) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { + ; + } + + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { + this.prevRotationPitch += 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw < -180.0F) { + this.prevRotationYaw -= 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { + this.prevRotationYaw += 360.0F; + } + + this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; + this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; } - - while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { - this.prevRotationPitch += 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw < -180.0F) { - this.prevRotationYaw -= 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { - this.prevRotationYaw += 360.0F; - } - - this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; - this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; + float drag = this.getAirDrag(); double gravity = this.getGravityVelocity(); + this.posX += this.motionX * motionMult(); + this.posY += this.motionY * motionMult(); + this.posZ += this.motionZ * motionMult(); + if(this.isInWater()) { for(int i = 0; i < 4; ++i) { float f = 0.25F; @@ -245,15 +279,26 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { this.motionZ *= (double) drag; this.motionY -= gravity; this.setPosition(this.posX, this.posY, this.posZ); - } } - public boolean alowMultiImpact() { - return false; //TODO + public boolean doesImpactEntities() { + return true; } - public void getStuck(int x, int y, int z) { + public boolean doesPenetrate() { + return false; + } + + public boolean isSpectral() { + return false; + } + + public int selfDamageDelay() { + return 5; + } + + public void getStuck(int x, int y, int z, int side) { this.stuckBlockX = x; this.stuckBlockY = y; this.stuckBlockZ = z; @@ -262,6 +307,8 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { this.motionX = 0; this.motionY = 0; this.motionZ = 0; + this.setStuckIn(side); + TrackerUtil.sendTeleport(worldObj, this); } public double getGravityVelocity() { @@ -306,6 +353,10 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { public float getShadowSize() { return 0.0F; } + + public void setThrower(EntityLivingBase thrower) { + this.thrower = thrower; + } public EntityLivingBase getThrower() { if(this.thrower == null && this.throwerName != null && this.throwerName.length() > 0) { diff --git a/src/main/java/com/hbm/entity/projectile/EntityWaterSplash.java b/src/main/java/com/hbm/entity/projectile/EntityWaterSplash.java index d8501c733..4eed4570b 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityWaterSplash.java +++ b/src/main/java/com/hbm/entity/projectile/EntityWaterSplash.java @@ -9,24 +9,21 @@ import net.minecraft.world.World; public class EntityWaterSplash extends EntityThrowable { - public EntityWaterSplash(World p_i1773_1_) - { - super(p_i1773_1_); - } + public EntityWaterSplash(World p_i1773_1_) { + super(p_i1773_1_); + } - public EntityWaterSplash(World p_i1774_1_, EntityLivingBase p_i1774_2_) - { - super(p_i1774_1_, p_i1774_2_); - } + public EntityWaterSplash(World p_i1774_1_, EntityLivingBase p_i1774_2_) { + super(p_i1774_1_, p_i1774_2_); + } - @Override + @Override public void entityInit() { - } + } - public EntityWaterSplash(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) - { - super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); - } + public EntityWaterSplash(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } @Override public void onUpdate() { @@ -51,9 +48,12 @@ public class EntityWaterSplash extends EntityThrowable { } } + @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; } + + @Override public void readEntityFromNBT(NBTTagCompound nbt) { super.readEntityFromNBT(nbt); this.setDead(); diff --git a/src/main/java/com/hbm/entity/projectile/IBulletBase.java b/src/main/java/com/hbm/entity/projectile/IBulletBase.java new file mode 100644 index 000000000..635ce9a09 --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/IBulletBase.java @@ -0,0 +1,11 @@ +package com.hbm.entity.projectile; + +import java.util.List; +import com.hbm.util.Tuple.Pair; +import net.minecraft.util.Vec3; + +public interface IBulletBase { + public double prevX(); public double prevY(); public double prevZ(); + public void prevX(double d); public void prevY(double d); public void prevZ(double d); + public List> nodes(); +} diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java new file mode 100644 index 000000000..f4a301914 --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -0,0 +1,891 @@ +package com.hbm.entity.train; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.MoveContext; +import com.hbm.blocks.rail.IRailNTM.RailCheckType; +import com.hbm.blocks.rail.IRailNTM.RailContext; +import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import com.hbm.items.ModItems; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.util.Tuple.Pair; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public abstract class EntityRailCarBase extends Entity implements ILookOverlay { + + public LogicalTrainUnit ltu; + public int ltuIndex = 0; + public boolean isOnRail = true; + private int turnProgress; + /* Clientside position that should be approached with smooth interpolation */ + private double trainX; + private double trainY; + private double trainZ; + private double trainYaw; + private double trainPitch; + private float movementYaw; + private float movementPitch; + @SideOnly(Side.CLIENT) private double velocityX; + @SideOnly(Side.CLIENT) private double velocityY; + @SideOnly(Side.CLIENT) private double velocityZ; + /* "Actual" position with offset directly between the front and back pos, won't match the standard position on curves */ + public double lastRenderX; + public double lastRenderY; + public double lastRenderZ; + public double renderX; + public double renderY; + public double renderZ; + + public EntityRailCarBase coupledFront; + public EntityRailCarBase coupledBack; + + public boolean initDummies = false; + public BoundingBoxDummyEntity[] dummies = new BoundingBoxDummyEntity[0]; + + public EntityRailCarBase(World world) { + super(world); + } + + @Override protected void entityInit() { } + @Override protected void readEntityFromNBT(NBTTagCompound nbt) { } + @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } + + @Override + public boolean interactFirst(EntityPlayer player) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.coupling_tool) { + + List intersecting = worldObj.getEntitiesWithinAABB(EntityRailCarBase.class, this.boundingBox.expand(2D, 0D, 2D)); + + for(EntityRailCarBase neighbor : intersecting) { + if(neighbor == this) continue; + if(neighbor.getGauge() != this.getGauge()) continue; + + TrainCoupling closestOwnCoupling = null; + TrainCoupling closestNeighborCoupling = null; + double closestDist = Double.POSITIVE_INFINITY; + + for(TrainCoupling ownCoupling : TrainCoupling.values()) { + for(TrainCoupling neighborCoupling : TrainCoupling.values()) { + Vec3 ownPos = this.getCouplingPos(ownCoupling); + Vec3 neighborPos = neighbor.getCouplingPos(neighborCoupling); + if(ownPos != null && neighborPos != null) { + Vec3 delta = Vec3.createVectorHelper(ownPos.xCoord - neighborPos.xCoord, ownPos.yCoord - neighborPos.yCoord, ownPos.zCoord - neighborPos.zCoord); + double length = delta.lengthVector(); + + if(length < 1 && length < closestDist) { + closestDist = length; + closestOwnCoupling = ownCoupling; + closestNeighborCoupling = neighborCoupling; + } + } + } + } + + if(closestOwnCoupling != null && closestNeighborCoupling != null) { + if(this.getCoupledTo(closestOwnCoupling) != null) continue; + if(neighbor.getCoupledTo(closestNeighborCoupling) != null) continue; + this.couple(closestOwnCoupling, neighbor); + neighbor.couple(closestNeighborCoupling, this); + if(this.ltu != null) this.ltu.dissolveTrain(); + if(neighbor.ltu != null) neighbor.ltu.dissolveTrain(); + player.swingItem(); + + player.addChatComponentMessage(new ChatComponentText("Coupled " + this.hashCode() + " (" + closestOwnCoupling.name() + ") to " + neighbor.hashCode() + " (" + closestNeighborCoupling.name() + ")")); + + return true; + } + } + } + + //DEBUG + if(this.ltu != null) { + + String id = Integer.toHexString(ltu.hashCode()); + + for(EntityRailCarBase train : ltu.trains) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "debug"); + data.setInteger("color", 0x0000ff); + data.setFloat("scale", 1.5F); + data.setString("text", id + " (#" + train.ltuIndex + ")"); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, train.posX, train.posY + 1, train.posZ), new TargetPoint(this.dimension, train.posX, train.posY + 1, train.posZ, 50)); + } + } + + return false; + } + + @Override + public void onUpdate() { + + if(this.worldObj.isRemote) { + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + if(this.turnProgress > 0) { + this.prevRotationYaw = this.rotationYaw; + double x = this.posX + (this.trainX - this.posX) / (double) this.turnProgress; + double y = this.posY + (this.trainY - this.posY) / (double) this.turnProgress; + double z = this.posZ + (this.trainZ - this.posZ) / (double) this.turnProgress; + double yaw = MathHelper.wrapAngleTo180_double(this.trainYaw - (double) this.rotationYaw); + this.rotationYaw = (float) ((double) this.rotationYaw + yaw / (double) this.turnProgress); + this.rotationPitch = (float) ((double) this.rotationPitch + (this.trainPitch - (double) this.rotationPitch) / (double) this.turnProgress); + --this.turnProgress; + this.setPosition(x, y, z); + this.setRotation(this.rotationYaw, this.rotationPitch); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + this.setRotation(this.rotationYaw, this.rotationPitch); + } + + BlockPos anchor = this.getCurrentAnchorPos(); + Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan(), new MoveContext(RailCheckType.FRONT, this.getCollisionSpan() - this.getLengthSpan())); + Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan(), new MoveContext(RailCheckType.BACK, this.getCollisionSpan() - this.getLengthSpan())); + + this.lastRenderX = this.renderX; + this.lastRenderY = this.renderY; + this.lastRenderZ = this.renderZ; + + if(frontPos != null && backPos != null) { + this.renderX = (frontPos.xCoord + backPos.xCoord) / 2D; + this.renderY = (frontPos.yCoord + backPos.yCoord) / 2D; + this.renderZ = (frontPos.zCoord + backPos.zCoord) / 2D; + } + + } else { + + if(this.coupledFront != null && this.coupledFront.isDead) { + this.coupledFront = null; + if(this.ltu != null) this.ltu.dissolveTrain(); + } + if(this.coupledBack != null && this.coupledBack.isDead) { + this.coupledBack = null; + if(this.ltu != null) this.ltu.dissolveTrain(); + } + + if(this.ltu == null && (this.coupledFront == null || this.coupledBack == null)) { + LogicalTrainUnit.generateTrain(this); + } + + DummyConfig[] definitions = this.getDummies(); + + if(!this.initDummies) { + this.dummies = new BoundingBoxDummyEntity[definitions.length]; + + for(int i = 0; i < definitions.length; i++) { + DummyConfig def = definitions[i]; + BoundingBoxDummyEntity dummy = new BoundingBoxDummyEntity(worldObj, this, def.width, def.height); + Vec3 rot = Vec3.createVectorHelper(def.offset.xCoord, def.offset.yCoord, def.offset.zCoord); + rot.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = posX + rot.xCoord; + double y = posY + rot.yCoord; + double z = posZ + rot.zCoord; + dummy.setPosition(x, y, z); + dummy.setSize(def.width, def.height); + dummy.velocityChanged = true; + worldObj.spawnEntityInWorld(dummy); + this.dummies[i] = dummy; + } + + this.initDummies = true; + } + + for(int i = 0; i < definitions.length; i++) { + DummyConfig def = definitions[i]; + BoundingBoxDummyEntity dummy = dummies[i]; + Vec3 rot = Vec3.createVectorHelper(def.offset.xCoord, def.offset.yCoord, def.offset.zCoord); + rot.rotateAroundX((float) (this.rotationPitch * Math.PI / 180D)); + rot.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = renderX + rot.xCoord; + double y = renderY + rot.yCoord; + double z = renderZ + rot.zCoord; + dummy.setPosition(x, y, z); + } + } + } + + public Vec3 getRelPosAlongRail(BlockPos anchor, double distanceToCover, MoveContext context) { + return getRelPosAlongRail(anchor, distanceToCover, this.getGauge(), this.worldObj, Vec3.createVectorHelper(posX, posY, posZ), this.rotationYaw, context); + } + + public static Vec3 getRelPosAlongRail(BlockPos anchor, double distanceToCover, TrackGauge gauge, World worldObj, Vec3 next, float yaw, MoveContext context) { + + if(distanceToCover < 0) { + distanceToCover *= -1; + yaw += 180; + } + + int it = 0; + + do { + + it++; + + if(it > 30) { + return null; + } + + int x = anchor.getX(); + int y = anchor.getY(); + int z = anchor.getZ(); + Block block = worldObj.getBlock(x, y, z); + + Vec3 rot = Vec3.createVectorHelper(0, 0, 1); + rot.rotateAroundY((float) (-yaw * Math.PI / 180D)); + + if(block instanceof IRailNTM) { + IRailNTM rail = (IRailNTM) block; + + if(it == 1) { + next = rail.getTravelLocation(worldObj, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, new RailContext(), context); + } + + boolean flip = distanceToCover < 0; + + if(rail.getGauge(worldObj, x, y, z) == gauge) { + RailContext info = new RailContext(); + Vec3 prev = next; + next = rail.getTravelLocation(worldObj, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info, context); + distanceToCover = info.overshoot; + anchor = info.pos; + + yaw = generateYaw(next, prev) * (flip ? -1 : 1); + + } else { + return null; + } + } else { + return null; + } + + } while(distanceToCover != 0); //if there's still length to cover, keep going + + return next; + } + + public static float generateYaw(Vec3 front, Vec3 back) { + double deltaX = front.xCoord - back.xCoord; + double deltaZ = front.zCoord - back.zCoord; + double radians = -Math.atan2(deltaX, deltaZ); + return (float) MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI); + } + + public static void updateMotion(World world) { + Set ltus = new HashSet(); + + /* gather all LTUs */ + for(Object o : world.loadedEntityList) { + if(o instanceof EntityRailCarBase) { + EntityRailCarBase train = (EntityRailCarBase) o; + if(train.ltu != null) ltus.add(train.ltu); + } + } + + /* Move carts together with links */ + //for(LogicalTrainUnit ltu : ltus) ltu.combineWagons(); + + /* Move carts with unified speed */ + //for(LogicalTrainUnit ltu : ltus) ltu.moveTrain(); + + for(LogicalTrainUnit ltu : ltus) { + + double speed = ltu.getTotalSpeed() + ltu.pushForce; + + if(Math.abs(speed) < 0.001) speed = 0; + + if(ltu.trains.length == 1) { + + EntityRailCarBase train = ltu.trains[0]; + + BlockPos anchor = new BlockPos(train.posX, train.posY, train.posZ); + Vec3 newPos = train.getRelPosAlongRail(anchor, speed, new MoveContext(RailCheckType.CORE, 0)); + if(newPos == null) { + train.derail(); + ltu.dissolveTrain(); + continue; + } + train.setPosition(newPos.xCoord, newPos.yCoord, newPos.zCoord); + anchor = train.getCurrentAnchorPos(); + Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT, train.getCollisionSpan() - train.getLengthSpan())); + Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK, train.getCollisionSpan() - train.getLengthSpan())); + + if(frontPos == null || backPos == null) { + train.derail(); + ltu.dissolveTrain(); + continue; + } else { + ltu.setRenderPos(train, frontPos, backPos); + } + + //ltu.pushForce *= 0.95; + ltu.pushForce = 0; + ltu.collideTrain(speed); + + continue; + } + + if(speed == 0) { + ltu.combineWagons(); + } else { + ltu.moveTrainByApproach(speed); + } + + if(ltu.trains.length != 1) { + //ltu.pushForce *= 0.95; + ltu.pushForce = 0; + ltu.collideTrain(speed); + } + } + } + + /** Returns the amount of blocks that the train should move per tick */ + public abstract double getCurrentSpeed(); + public abstract double getMaxRailSpeed(); + /** Returns the gauge of this train */ + public abstract TrackGauge getGauge(); + /** Returns the length between the core and one of the bogies */ + public abstract double getLengthSpan(); + /** Returns the length between the core and the collision points */ + public abstract double getCollisionSpan(); + /** Returns a collision box, usually smaller than the entity's AABB for rendering, which is used for colliding trains */ + /*public AxisAlignedBB getCollisionBox() { + return this.boundingBox; + }*/ + /** Returns a collision box used for block collisions when derailed */ + /*@Override public AxisAlignedBB getBoundingBox() { + return this.boundingBox; + }*/ + + /** Returns the "true" position of the train, i.e. the block it wants to snap to */ + public BlockPos getCurrentAnchorPos() { + return new BlockPos(posX, posY + 0.25, posZ); + } + + public void derail() { + isOnRail = false; + this.setDead(); + } + + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double posX, double posY, double posZ, float yaw, float pitch, int turnProg) { + this.trainX = posX; + this.trainY = posY; + this.trainZ = posZ; + //this.trainYaw = (double) yaw; + this.trainPitch = (double) pitch; + this.turnProgress = turnProg + 2; + this.motionX = this.velocityX; + this.motionY = this.velocityY; + this.motionZ = this.velocityZ; + this.trainYaw = this.movementYaw; + this.trainPitch = this.movementPitch; + } + + @SideOnly(Side.CLIENT) + public void setVelocity(double mX, double mY, double mZ) { + this.movementYaw = (float) this.motionX * 360F; + this.movementPitch = (float) this.motionY * 360F; + this.velocityX = this.motionX = mX; + this.velocityY = this.motionY = mY; + this.velocityZ = this.motionZ = mZ; + } + + /** Invisible entities that make up the dynamic bounding structure of the train, moving as the train rotates. */ + public static class BoundingBoxDummyEntity extends Entity implements ILookOverlay { + + private int turnProgress; + private double trainX; + private double trainY; + private double trainZ; + public EntityRailCarBase train; + + public BoundingBoxDummyEntity(World world) { this(world, null, 1F, 1F); } + public BoundingBoxDummyEntity(World world, EntityRailCarBase train, float width, float height) { + super(world); + this.setSize(width, height); + this.train = train; + if(train != null) this.dataWatcher.updateObject(3, train.getEntityId()); + } + + @Override protected void setSize(float width, float height) { + super.setSize(width, height); + this.dataWatcher.updateObject(4, width); + this.dataWatcher.updateObject(5, height); + } + + @Override protected void entityInit() { + this.dataWatcher.addObject(3, new Integer(0)); + this.dataWatcher.addObject(4, new Float(1F)); + this.dataWatcher.addObject(5, new Float(1F)); + } + + @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } + @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; } + @Override public void readEntityFromNBT(NBTTagCompound nbt) { this.setDead(); } + @Override public boolean canBePushed() { return true; } + @Override public boolean canBeCollidedWith() { return !this.isDead; } + + @Override public boolean attackEntityFrom(DamageSource source, float amount) { if(train != null) return train.attackEntityFrom(source, amount); return super.attackEntityFrom(source, amount); } + @Override public boolean interactFirst(EntityPlayer player) { if(train != null) return train.interactFirst(player); return super.interactFirst(player); } + + @Override public void onUpdate() { + if(!worldObj.isRemote) { + if(this.train == null || this.train.isDead) { + this.setDead(); + } + } else { + + if(this.turnProgress > 0) { + this.prevRotationYaw = this.rotationYaw; + double x = this.posX + (this.trainX - this.posX) / (double) this.turnProgress; + double y = this.posY + (this.trainY - this.posY) / (double) this.turnProgress; + double z = this.posZ + (this.trainZ - this.posZ) / (double) this.turnProgress; + --this.turnProgress; + this.setPosition(x, y, z); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + } + + this.setSize(this.dataWatcher.getWatchableObjectFloat(4), this.dataWatcher.getWatchableObjectFloat(5)); + } + } + + @Override @SideOnly(Side.CLIENT) public void setPositionAndRotation2(double posX, double posY, double posZ, float yaw, float pitch, int turnProg) { + this.trainX = posX; + this.trainY = posY; + this.trainZ = posZ; + this.turnProgress = turnProg + 2; + } + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + Entity e = worldObj.getEntityByID(this.dataWatcher.getWatchableObjectInt(3)); + if(e instanceof EntityRailCarBase) { + ((EntityRailCarBase) e).printHook(event, world, x, y, z); + } + } + } + + public DummyConfig[] getDummies() { + return new DummyConfig[0]; + } + + public static class DummyConfig { + public Vec3 offset; + public float width; + public float height; + + public DummyConfig(float width, float height, Vec3 offset) { + this.width = width; + this.height = height; + this.offset = offset; + } + } + + public static enum TrainCoupling { + FRONT, + BACK + } + + public double getCouplingDist(TrainCoupling coupling) { + return 0D; + } + + public Vec3 getCouplingPos(TrainCoupling coupling) { + double dist = this.getCouplingDist(coupling); + + if(dist <= 0) return null; + + if(coupling == TrainCoupling.BACK) dist *= -1; + + Vec3 rot = Vec3.createVectorHelper(0, 0, dist); + rot.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180D)); + rot.xCoord += this.renderX; + rot.yCoord += this.renderY; + rot.zCoord += this.renderZ; + return rot; + } + + public EntityRailCarBase getCoupledTo(TrainCoupling coupling) { + return coupling == TrainCoupling.FRONT ? this.coupledFront : coupling == TrainCoupling.BACK ? this.coupledBack : null; + } + + public TrainCoupling getCouplingFrom(EntityRailCarBase coupledTo) { + return coupledTo == this.coupledFront ? TrainCoupling.FRONT : coupledTo == this.coupledBack ? TrainCoupling.BACK : null; + } + + public void couple(TrainCoupling coupling, EntityRailCarBase to) { + if(coupling == TrainCoupling.FRONT) this.coupledFront = to; + if(coupling == TrainCoupling.BACK) this.coupledBack = to; + } + + public static class LogicalTrainUnit { + + protected double pushForce; + protected EntityRailCarBase trains[]; + + /** Assumes that the train is an endpoint, i.e. that only one coupling is in use */ + public static LogicalTrainUnit generateTrain(EntityRailCarBase train) { + List links = new ArrayList(); + Set brake = new HashSet(); + LogicalTrainUnit ltu = new LogicalTrainUnit(); + + if(train.coupledFront == null && train.coupledBack == null) { + ltu.trains = new EntityRailCarBase[] {train}; + train.ltu = ltu; + train.ltuIndex = 0; + return ltu; + } + + EntityRailCarBase current = train; + EntityRailCarBase next = null; + + do { + next = null; + + if(current.coupledFront != null && !brake.contains(current.coupledFront)) next = current.coupledFront; + if(current.coupledBack != null && !brake.contains(current.coupledBack)) next = current.coupledBack; + + links.add(current); + brake.add(current); + + current = next; + + } while(next != null); + + ltu.trains = new EntityRailCarBase[links.size()]; + for(int i = 0; i < ltu.trains.length; i++) { + ltu.trains[i] = links.get(i); + ltu.trains[i].ltu = ltu; + ltu.trains[i].ltuIndex = i; + } + + return ltu; + } + + /** Removes the LTU from all wagons */ + public void dissolveTrain() { + for(EntityRailCarBase train : trains) { + train.ltu = null; + train.ltuIndex = 0; + } + } + + /** Find the center fo the train, then moves all wagons towards that center until the coupling points roughly touch */ + public void combineWagons() { + + if(trains.length <= 1) return; + + boolean odd = trains.length % 2 == 1; + int centerIndex = odd ? trains.length / 2 : trains.length / 2 - 1; + EntityRailCarBase center = trains[centerIndex]; + EntityRailCarBase prev = center; + + for(int i = centerIndex - 1; i >= 0; i--) { + EntityRailCarBase next = trains[i]; + moveWagonTo(prev, next); + prev = next; + } + + prev = center; + for(int i = centerIndex + 1; i < trains.length; i++) { + EntityRailCarBase next = trains[i]; + moveWagonTo(prev, next); + prev = next; + } + } + + /** Moves one wagon to ne next until the coupling points roughly touch */ + public void moveWagonTo(EntityRailCarBase moveTo, EntityRailCarBase moving) { + TrainCoupling prevCouple = moveTo.getCouplingFrom(moving); + TrainCoupling nextCouple = moving.getCouplingFrom(moveTo); + Vec3 prevLoc = moveTo.getCouplingPos(prevCouple); + Vec3 nextLoc = moving.getCouplingPos(nextCouple); + Vec3 delta = Vec3.createVectorHelper(prevLoc.xCoord - nextLoc.xCoord, 0, prevLoc.zCoord - nextLoc.zCoord); + double len = delta.lengthVector(); + //len *= 0.25; //suspension, causes movements to be less rigid + len = (len / (0.5D / (len * len) + 1D)); //smart suspension + BlockPos anchor = new BlockPos(moving.posX, moving.posY, moving.posZ); + Vec3 trainPos = Vec3.createVectorHelper(moving.posX, moving.posY, moving.posZ); + float yaw = EntityRailCarBase.generateYaw(prevLoc, nextLoc); + Vec3 newPos = EntityRailCarBase.getRelPosAlongRail(anchor, len, moving.getGauge(), moving.worldObj, trainPos, yaw, new MoveContext(RailCheckType.CORE, 0)); + moving.setPosition(newPos.xCoord, newPos.yCoord, newPos.zCoord); + anchor = moving.getCurrentAnchorPos(); //reset origin to new position + Vec3 frontPos = moving.getRelPosAlongRail(anchor, moving.getLengthSpan(), new MoveContext(RailCheckType.FRONT, moving.getCollisionSpan() - moving.getLengthSpan())); + Vec3 backPos = moving.getRelPosAlongRail(anchor, -moving.getLengthSpan(), new MoveContext(RailCheckType.BACK, moving.getCollisionSpan() - moving.getLengthSpan())); + + if(frontPos == null || backPos == null) { + moving.derail(); + this.dissolveTrain(); + return; + } else { + setRenderPos(moving, frontPos, backPos); + } + } + + /** Generates the speed of the train, then moves the rain along the rail */ + @Deprecated public void moveTrain() { + + EntityRailCarBase prev = trains[0]; + TrainCoupling dir = prev.getCouplingFrom(null); + double totalSpeed = 0; + double maxSpeed = Double.POSITIVE_INFINITY; + + for(EntityRailCarBase train : this.trains) { + boolean con = train.getCouplingFrom(prev) == dir; + double speed = train.getCurrentSpeed(); + if(!con) speed *= -1; + totalSpeed += speed; + maxSpeed = Math.min(maxSpeed, train.getMaxRailSpeed()); + prev = train; + } + + if(Math.abs(totalSpeed) > maxSpeed) { + totalSpeed = maxSpeed * Math.signum(totalSpeed); + } + + this.moveTrainBy(totalSpeed); + } + + /** Moves the entire train along the rail by a certain speed */ + @Deprecated public void moveTrainBy(double totalSpeed) { + + for(EntityRailCarBase train : this.trains) { + + BlockPos anchor = train.getCurrentAnchorPos(); + Vec3 corePos = train.getRelPosAlongRail(anchor, totalSpeed, new MoveContext(RailCheckType.CORE, 0)); + + if(corePos == null) { + train.derail(); + this.dissolveTrain(); + return; + } else { + train.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); + anchor = train.getCurrentAnchorPos(); //reset origin to new position + Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT, 0)); + Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK, 0)); + + if(frontPos == null || backPos == null) { + train.derail(); + this.dissolveTrain(); + return; + } else { + train.renderX = (frontPos.xCoord + backPos.xCoord) / 2D; + train.renderY = (frontPos.yCoord + backPos.yCoord) / 2D; + train.renderZ = (frontPos.zCoord + backPos.zCoord) / 2D; + train.prevRotationYaw = train.rotationYaw; + train.rotationYaw = train.movementYaw = generateYaw(frontPos, backPos); + train.motionX = train.rotationYaw / 360D; // hijacking this crap for easy syncing + train.velocityChanged = true; + } + } + } + } + + /** Returns the total speed of the LTU, negative if it is backwards compared to the arbitrary "front" wagon */ + public double getTotalSpeed() { + + EntityRailCarBase prev = trains[0]; + double totalSpeed = 0; + double maxSpeed = Double.POSITIVE_INFINITY; + //if the first car is in reverse, flip all subsequent cars as well + boolean reverseTheReverse = prev.getCouplingFrom(null) == TrainCoupling.BACK; + + if(trains.length == 1) { + return prev.getCurrentSpeed(); + } + + for(EntityRailCarBase train : this.trains) { + //if the car's linked indices are the wrong way, it is in reverse and speed applies negatively + boolean reverse = false; + + EntityRailCarBase conFront = train.getCoupledTo(TrainCoupling.FRONT); + EntityRailCarBase conBack = train.getCoupledTo(TrainCoupling.BACK); + + if(conFront != null && conFront.ltuIndex > train.ltuIndex) reverse = true; + if(conBack != null && conBack.ltuIndex < train.ltuIndex) reverse = true; + + reverse ^= reverseTheReverse; + + double speed = train.getCurrentSpeed(); + if(reverse) speed *= -1; + totalSpeed += speed; + maxSpeed = Math.min(maxSpeed, train.getMaxRailSpeed()); + prev = train; + } + + if(Math.abs(totalSpeed) > maxSpeed) { + totalSpeed = maxSpeed * Math.signum(totalSpeed); + } + + return totalSpeed; + } + + /** Determines the "front" wagon based on the movement and moves it, then moves all other wagons towards that */ + public void moveTrainByApproach(double speed) { + boolean forward = speed < 0; + speed = Math.abs(speed); + EntityRailCarBase previous = null; + + EntityRailCarBase first = this.trains[0]; + + for(int i = !forward ? 0 : this.trains.length - 1; !forward ? i < this.trains.length : i >= 0; i += !forward ? 1 : -1) { + EntityRailCarBase current = this.trains[i]; + + if(previous == null) { + + boolean inReverse = first.getCouplingFrom(null) == current.getCouplingFrom(null); + int sigNum = inReverse ? 1 : -1; + BlockPos anchor = current.getCurrentAnchorPos(); + + /*Vec3 frontPos = current.getRelPosAlongRail(anchor, current.getLengthSpan(), new MoveContext(RailCheckType.FRONT)); + + if(frontPos == null) { + current.derail(); + this.dissolveTrain(); + return; + } else { + anchor = current.getCurrentAnchorPos(); //reset origin to new position + Vec3 corePos = current.getRelPosAlongRail(anchor, speed * sigNum, new MoveContext(RailCheckType.CORE)); + current.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); + Vec3 backPos = current.getRelPosAlongRail(anchor, -current.getLengthSpan(), new MoveContext(RailCheckType.BACK)); + + if(frontPos == null || backPos == null) { + current.derail(); + this.dissolveTrain(); + return; + } else { + setRenderPos(current, frontPos, backPos); + } + }*/ + + Pair[] checks; + double dist = speed * sigNum; + + if(forward) { + checks = new Pair[] { + new Pair(dist + current.getLengthSpan(), RailCheckType.FRONT), + new Pair(dist, RailCheckType.CORE), + new Pair(dist - current.getLengthSpan(), RailCheckType.BACK) + }; + } else { + checks = new Pair[] { + new Pair(dist - current.getLengthSpan(), RailCheckType.BACK), + new Pair(dist, RailCheckType.CORE), + new Pair(dist + current.getLengthSpan(), RailCheckType.FRONT) + }; + } + + double brake = 0; + + for(Pair check : checks) { + MoveContext ctx = new MoveContext(check.getValue(), current.getCollisionSpan() - current.getLengthSpan()); + current.getRelPosAlongRail(anchor, check.getKey() - (brake * Math.signum(check.getKey())), ctx); + if(ctx.collision) { + brake += ctx.overshoot; + } + } + + } else { + this.moveWagonTo(previous, current); + } + + previous = current; + } + } + + /** Uses the front and back bogey positions to set the render pos and angles of a wagon */ + public void setRenderPos(EntityRailCarBase current, Vec3 frontPos, Vec3 backPos) { + current.renderX = (frontPos.xCoord + backPos.xCoord) / 2D; + current.renderY = (frontPos.yCoord + backPos.yCoord) / 2D; + current.renderZ = (frontPos.zCoord + backPos.zCoord) / 2D; + current.prevRotationYaw = current.rotationYaw; + current.rotationYaw = current.movementYaw = generateYaw(frontPos, backPos); + Vec3 delta = Vec3.createVectorHelper(frontPos.xCoord - backPos.xCoord, frontPos.yCoord - backPos.yCoord, frontPos.zCoord - backPos.zCoord); + current.rotationPitch = current.movementPitch = (float) (Math.asin(delta.yCoord / delta.lengthVector()) * 180D / Math.PI); + current.motionX = current.rotationYaw / 360D; // hijacking this crap for easy syncing + current.motionY = current.rotationPitch / 360D; + current.velocityChanged = true; + } + + public void collideTrain(double speed) { + EntityRailCarBase collidingTrain = speed > 0 ? trains[0] : trains[trains.length - 1]; + List intersect = collidingTrain.worldObj.getEntitiesWithinAABB(EntityRailCarBase.class, collidingTrain.boundingBox.expand(1, 1, 1)); + EntityRailCarBase collidesWith = null; + + for(EntityRailCarBase train : intersect) { + if(train.ltu != null && train.ltu != this) { + collidesWith = train; + break; + } + } + + if(collidesWith == null) return; + + Vec3 delta = Vec3.createVectorHelper(collidingTrain.posX - collidesWith.posX, 0, collidingTrain.posZ - collidesWith.posZ); + double totalSpan = collidingTrain.getCollisionSpan() + collidesWith.getCollisionSpan(); + double diff = delta.lengthVector(); + if(diff > totalSpan) return; + double push = (totalSpan - diff); + + //PacketDispatcher.wrapper.sendToAllAround(new PlayerInformPacket(ChatBuilder.start("" + collidesWith.ltuIndex + " " + collidingTrain.ltuIndex).color(EnumChatFormatting.RED).flush(), 1), + // new TargetPoint(collidingTrain.dimension, collidingTrain.posX, collidingTrain.posY + 1, collidingTrain.posZ, 50)); + + EntityRailCarBase[][] whatever = new EntityRailCarBase[][] {{collidingTrain, collidesWith}, {collidesWith, collidingTrain}}; + for(EntityRailCarBase[] array : whatever) { + LogicalTrainUnit ltu = array[0].ltu; + if(ltu.trains.length == 1) { + Vec3 rot = Vec3.createVectorHelper(0, 0, array[0].getCollisionSpan()); + rot.rotateAroundX((float) (array[0].rotationPitch * Math.PI / 180D)); + rot.rotateAroundY((float) (-array[0].rotationYaw * Math.PI / 180)); + Vec3 forward = Vec3.createVectorHelper(array[1].posX - (array[0].posX + rot.xCoord), 0, array[1].posZ - (array[0].posZ + rot.zCoord)); + Vec3 backward = Vec3.createVectorHelper(array[1].posX - (array[0].posX - rot.xCoord), 0, array[1].posZ - (array[0].posZ - rot.zCoord)); + + if(forward.lengthVector() > backward.lengthVector()) { + ltu.pushForce += push; + } else { + ltu.pushForce -= push; + } + } else { + + if(array[0].ltuIndex < ltu.trains.length / 2) { + ltu.pushForce -= push; + } else { + ltu.pushForce += push; + } + } + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { + List text = new ArrayList(); + ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); //none of this shit is going to work anyway + } +} diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java b/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java new file mode 100644 index 000000000..4bf5f2ee2 --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java @@ -0,0 +1,165 @@ +package com.hbm.entity.train; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.world.World; + +public abstract class EntityRailCarCargo extends EntityRailCarBase implements IInventory { + + protected String entityName; + protected ItemStack[] slots = new ItemStack[this.getSizeInventory()]; + + public EntityRailCarCargo(World world) { + super(world); + } + + @Override + protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(10, new Integer(0)); + } + + public int countVacantSlots() { + int slots = 0; + + for(int i = 0; i < this.getSizeInventory(); i++) { + if(this.getStackInSlot(i) != null) slots++; + } + + return slots; + } + + @Override + public ItemStack getStackInSlot(int slot) { + return slots[slot]; + } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + if(this.slots[slot] != null) { + ItemStack itemstack; + + if(this.slots[slot].stackSize <= amount) { + itemstack = this.slots[slot]; + this.slots[slot] = null; + return itemstack; + } else { + itemstack = this.slots[slot].splitStack(amount); + + if(this.slots[slot].stackSize == 0) { + this.slots[slot] = null; + } + + if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); + return itemstack; + } + } else { + if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); + return null; + } + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) { + if(this.slots[slot] != null) { + ItemStack itemstack = this.slots[slot]; + this.slots[slot] = null; + if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); + return itemstack; + } else { + if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); + return null; + } + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) { + this.slots[slot] = stack; + + if(stack != null && stack.stackSize > this.getInventoryStackLimit()) { + stack.stackSize = this.getInventoryStackLimit(); + } + + if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); + } + + @Override + public int getInventoryStackLimit() { + return 64; + } + + @Override + public void markDirty() { } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + return this.isDead ? false : player.getDistanceSqToEntity(this) <= 64.0D; + } + + @Override + public void openInventory() { } + + @Override + public void closeInventory() { } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + return true; + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + NBTTagList nbttaglist = new NBTTagList(); + + for(int i = 0; i < this.slots.length; ++i) { + if(this.slots[i] != null) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + nbttagcompound1.setByte("Slot", (byte) i); + this.slots[i].writeToNBT(nbttagcompound1); + nbttaglist.appendTag(nbttagcompound1); + } + } + + nbt.setTag("Items", nbttaglist); + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + NBTTagList nbttaglist = nbt.getTagList("Items", 10); + this.slots = new ItemStack[this.getSizeInventory()]; + + for(int i = 0; i < nbttaglist.tagCount(); ++i) { + NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); + int j = nbttagcompound1.getByte("Slot") & 255; + + if(j >= 0 && j < this.slots.length) { + this.slots[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1); + } + } + + this.dataWatcher.updateObject(10, this.countVacantSlots()); + } + + @Override + public boolean hasCustomInventoryName() { + return this.entityName != null; + } + + public String getEntityName() { + return this.entityName; + } + + public void setEntityName(String name) { + this.entityName = name; + } + + @Override + public String getCommandSenderName() { + return this.entityName != null ? this.entityName : super.getCommandSenderName(); + } +} diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java b/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java new file mode 100644 index 000000000..46643b029 --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java @@ -0,0 +1,70 @@ +package com.hbm.entity.train; + +import com.hbm.items.ModItems; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public abstract class EntityRailCarElectric extends EntityRailCarRidable { + + public EntityRailCarElectric(World world) { + super(world); + } + + public abstract int getMaxPower(); + public abstract int getPowerConsumption(); + + public boolean hasChargeSlot() { return false; } + public int getChargeSlot() { return 0; } + + @Override protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(3, new Integer(0)); + } + + @Override public boolean canAccelerate() { + return true; + //return this.getPower() >= this.getPowerConsumption(); + } + + @Override public void consumeFuel() { + //this.setPower(this.getPower() - this.getPowerConsumption()); + } + + public void setPower(int power) { + this.dataWatcher.updateObject(3, power); + } + + public int getPower() { + return this.dataWatcher.getWatchableObjectInt(3); + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) { + + if(this.hasChargeSlot()) { + ItemStack stack = this.getStackInSlot(this.getChargeSlot()); + + if(stack != null && stack.getItem() instanceof IBatteryItem) { + IBatteryItem battery = (IBatteryItem) stack.getItem(); + int powerNeeded = this.getMaxPower() - this.getPower(); + long powerProvided = Math.min(battery.getDischargeRate(), battery.getCharge(stack)); + int powerTransfered = (int) Math.min(powerNeeded, powerProvided); + + if(powerTransfered > 0) { + battery.dischargeBattery(stack, powerTransfered); + this.setPower(this.getPower() + powerTransfered); + } + } else if(stack != null) { + if(stack.getItem() == ModItems.battery_creative || stack.getItem() == ModItems.fusion_core_infinite) { + this.setPower(this.getMaxPower()); + } + } + } + } + } +} diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java new file mode 100644 index 000000000..da9a66f4e --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java @@ -0,0 +1,296 @@ +package com.hbm.entity.train; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.main.MainRegistry; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent; + +public abstract class EntityRailCarRidable extends EntityRailCarCargo { + + public double engineSpeed; + public SeatDummyEntity[] passengerSeats; + + public EntityRailCarRidable(World world) { + super(world); + this.passengerSeats = new SeatDummyEntity[this.getPassengerSeats().length]; + } + + /** Returns the linear speed added per tick when using powered movement */ + public abstract double getPoweredAcceleration(); + /** A mulitplier used on the speed either is there is no player in the train or if the parking brake is active */ + public abstract double getPassivBrake(); + /** The parking brake can be toggled, assuming a player is present, otherwise it is implicitly ON */ + public abstract boolean shouldUseEngineBrake(EntityPlayer player); + /** The max speed the engine can provide in both directions */ + public abstract double getMaxPoweredSpeed(); + /** Whether the engine is turned on */ + public abstract boolean canAccelerate(); + /** Called every tick if acceleration is successful */ + public void consumeFuel() { } + + /** An additive to the engine's speed yielding the total speed, caused by uneven surfaces */ + public double getGravitySpeed() { + return 0D; + } + + @Override + public double getCurrentSpeed() { // in its current form, only call once per tick + + if(this.riddenByEntity instanceof EntityPlayer) { + + EntityPlayer player = (EntityPlayer) this.riddenByEntity; + + if(this.canAccelerate()) { + if(player.moveForward > 0) { + engineSpeed += this.getPoweredAcceleration(); + this.consumeFuel(); + } else if(player.moveForward < 0) { + engineSpeed -= this.getPoweredAcceleration(); + this.consumeFuel(); + } else { + if(this.shouldUseEngineBrake(player)) { + engineSpeed *= this.getPassivBrake(); + } else { + this.consumeFuel(); + } + } + } else { + engineSpeed *= this.getPassivBrake(); + } + + } else { + engineSpeed *= this.getPassivBrake(); + } + + double maxSpeed = this.getMaxPoweredSpeed(); + engineSpeed = MathHelper.clamp_double(engineSpeed, -maxSpeed, maxSpeed); + + return engineSpeed + this.getGravitySpeed(); + } + + @Override + public boolean interactFirst(EntityPlayer player) { + + if(super.interactFirst(player)) return true; + if(worldObj.isRemote) return true; + + int nearestSeat = this.getNearestSeat(player); + + if(nearestSeat == -1) { + player.mountEntity(this); + } else if(nearestSeat >= 0) { + SeatDummyEntity dummySeat = new SeatDummyEntity(worldObj, this, nearestSeat); + Vec3 passengerSeat = this.getPassengerSeats()[nearestSeat]; + passengerSeat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = renderX + passengerSeat.xCoord; + double y = renderY + passengerSeat.yCoord; + double z = renderZ + passengerSeat.zCoord; + dummySeat.setPosition(x, y - 1, z); + passengerSeats[nearestSeat] = dummySeat; + worldObj.spawnEntityInWorld(dummySeat); + player.mountEntity(dummySeat); + } + + return true; + } + + public int getNearestSeat(EntityPlayer player) { + + double nearestDist = Double.POSITIVE_INFINITY; + int nearestSeat = -3; + + Vec3[] seats = getPassengerSeats(); + Vec3 look = player.getLook(2); + look.xCoord += player.posX; + look.yCoord += player.posY + player.eyeHeight - player.yOffset; + look.zCoord += player.posZ; + + for(int i = 0; i < seats.length; i++) { + + Vec3 seat = seats[i]; + if(seat == null) continue; + if(passengerSeats[i] != null) continue; + + seat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = renderX + seat.xCoord; + double y = renderY + seat.yCoord; + double z = renderZ + seat.zCoord; + + Vec3 delta = Vec3.createVectorHelper(look.xCoord - x, look.yCoord - y, look.zCoord - z); + double dist = delta.lengthVector(); + + if(dist < nearestDist) { + nearestDist = dist; + nearestSeat = i; + } + } + + if(this.riddenByEntity == null) { + Vec3 seat = getRiderSeatPosition(); + seat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = renderX + seat.xCoord; + double y = renderY + seat.yCoord; + double z = renderZ + seat.zCoord; + + Vec3 delta = Vec3.createVectorHelper(look.xCoord - x, look.yCoord - y, look.zCoord - z); + double dist = delta.lengthVector(); + + if(dist < nearestDist) { + nearestDist = dist; + nearestSeat = -1; + } + } + + if(nearestDist > 180) return -2; + + return nearestSeat; + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) { + + Vec3[] seats = this.getPassengerSeats(); + for(int i = 0; i < passengerSeats.length; i++) { + SeatDummyEntity seat = passengerSeats[i]; + + if(seat != null) { + if(seat.riddenByEntity == null) { + passengerSeats[i] = null; + seat.setDead(); + } else { + Vec3 rot = seats[i]; + rot.rotateAroundX((float) (this.rotationPitch * Math.PI / 180)); + rot.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = renderX + rot.xCoord; + double y = renderY + rot.yCoord; + double z = renderZ + rot.zCoord; + seat.setPosition(x, y - 1, z); + } + } + } + } + } + + @Override + public void updateRiderPosition() { + + Vec3 offset = getRiderSeatPosition(); + offset.rotateAroundX((float) (this.rotationPitch * Math.PI / 180)); + offset.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + + if(this.riddenByEntity != null) { + this.riddenByEntity.setPosition(this.renderX + offset.xCoord, this.renderY + offset.yCoord, this.renderZ + offset.zCoord); + } + } + + /** Returns a Vec3 showing the relative position from the driver to the core */ + public abstract Vec3 getRiderSeatPosition(); + + public abstract Vec3[] getPassengerSeats(); + + /** Dynamic seats generated when a player clicks near a seat-spot, moves and rotates with the train as one would expect. */ + public static class SeatDummyEntity extends Entity { + + private int turnProgress; + private double trainX; + private double trainY; + private double trainZ; + public EntityRailCarRidable train; + + public SeatDummyEntity(World world) { super(world); this.setSize(0.5F, 0.1F);} + public SeatDummyEntity(World world, EntityRailCarRidable train, int index) { + this(world); + this.train = train; + if(train != null) this.dataWatcher.updateObject(3, train.getEntityId()); + this.dataWatcher.updateObject(4, index); + } + + @Override protected void entityInit() { this.dataWatcher.addObject(3, new Integer(0)); this.dataWatcher.addObject(4, new Integer(0)); } + @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } + @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; } + @Override public void readEntityFromNBT(NBTTagCompound nbt) { this.setDead(); } + + @Override public void onUpdate() { + if(!worldObj.isRemote) { + if(this.train == null || this.train.isDead) { + this.setDead(); + } + } else { + + if(this.turnProgress > 0) { + this.prevRotationYaw = this.rotationYaw; + double x = this.posX + (this.trainX - this.posX) / (double) this.turnProgress; + double y = this.posY + (this.trainY - this.posY) / (double) this.turnProgress; + double z = this.posZ + (this.trainZ - this.posZ) / (double) this.turnProgress; + --this.turnProgress; + this.setPosition(x, y, z); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + } + } + } + + @Override @SideOnly(Side.CLIENT) public void setPositionAndRotation2(double posX, double posY, double posZ, float yaw, float pitch, int turnProg) { + this.trainX = posX; + this.trainY = posY; + this.trainZ = posZ; + this.turnProgress = turnProg + 2; + } + + @Override + public void updateRiderPosition() { + if(this.riddenByEntity != null) { + + if(train == null) { + int eid = this.dataWatcher.getWatchableObjectInt(3); + Entity entity = worldObj.getEntityByID(eid); + if(entity instanceof EntityRailCarRidable) { + train = (EntityRailCarRidable) entity; + } + } + + //fallback for when train is null + if(train == null) { + this.riddenByEntity.setPosition(posX, posY + 1, posZ); + return; + } + + //doing it like this instead of with the position directly removes any discrepancies caused by entity tick order + //mmhmhmhm silky smooth + int index = this.dataWatcher.getWatchableObjectInt(4); + Vec3 rot = this.train.getPassengerSeats()[index]; + rot.rotateAroundX((float) (train.rotationPitch * Math.PI / 180)); + rot.rotateAroundY((float) (-train.rotationYaw * Math.PI / 180)); + double x = train.renderX + rot.xCoord; + double y = train.renderY + rot.yCoord; + double z = train.renderZ + rot.zCoord; + this.riddenByEntity.setPosition(x, y, z); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { + List text = new ArrayList(); + /*text.add("LTU: " + this.ltu); + text.add("Front: " + this.coupledFront); + text.add("Back: " + this.coupledBack);*/ + text.add("Nearest seat: " + this.getNearestSeat(MainRegistry.proxy.me())); + ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTram.java b/src/main/java/com/hbm/entity/train/TrainCargoTram.java new file mode 100644 index 000000000..3b64d7679 --- /dev/null +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -0,0 +1,214 @@ +package com.hbm.entity.train; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import com.hbm.inventory.gui.GuiInfoContainer; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.IGUIProvider; + +import api.hbm.energy.IBatteryItem; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class TrainCargoTram extends EntityRailCarElectric implements IGUIProvider { + + /* + * + * _________ + * | | \ <-- + * | | |___ + * | | | | | + * _O\|_|_______|__|_____________________________|/O_ + * |____| |____| + * \__________________________________________/ + * '( + )' '( + )' + * + */ + + public TrainCargoTram(World world) { + super(world); + this.setSize(5F, 2F); + } + + @Override public double getPoweredAcceleration() { return 0.01; } + @Override public double getPassivBrake() { return 0.95; } + @Override public boolean shouldUseEngineBrake(EntityPlayer player) { return Math.abs(this.engineSpeed) < 0.1; } + @Override public double getMaxPoweredSpeed() { return 0.5; } + @Override public double getMaxRailSpeed() { return 1; } + + @Override public TrackGauge getGauge() { return TrackGauge.STANDARD; } + @Override public double getLengthSpan() { return 1.5; } + @Override public double getCollisionSpan() { return 2.5; } + @Override public Vec3 getRiderSeatPosition() { return Vec3.createVectorHelper(0.375, 2.375, 0.5); } + @Override public boolean shouldRiderSit() { return false; } + @Override public int getSizeInventory() { return 29; } + @Override public String getInventoryName() { return this.hasCustomInventoryName() ? this.getEntityName() : "container.trainTram"; } + //@Override public AxisAlignedBB getCollisionBox() { return AxisAlignedBB.getBoundingBox(renderX, renderY, renderZ, renderX, renderY + 1, renderZ).expand(4, 0, 4); } + @Override public double getCouplingDist(TrainCoupling coupling) { return coupling != null ? 2.75 : 0; } + + @Override public int getMaxPower() { return this.getPowerConsumption() * 100; } + @Override public int getPowerConsumption() { return 10; } + @Override public boolean hasChargeSlot() { return true; } + @Override public int getChargeSlot() { return 28; } + + @Override + public DummyConfig[] getDummies() { + return new DummyConfig[] { + new DummyConfig(2F, 1F, Vec3.createVectorHelper(0, 0, 1.5)), + new DummyConfig(2F, 1F, Vec3.createVectorHelper(0, 0, 0)), + new DummyConfig(2F, 1F, Vec3.createVectorHelper(0, 0, -1.5)) + }; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + if(!this.worldObj.isRemote && !this.isDead) { + this.setDead(); + } + + return true; + } + + @Override + public Vec3[] getPassengerSeats() { + return new Vec3[] { + Vec3.createVectorHelper(0.5, 1.75, -1.5), + Vec3.createVectorHelper(-0.5, 1.75, -1.5) + }; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerTrainCargoTram(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUITrainCargoTram(player.inventory, this); + } + + /* + * ##### ##### # # ##### ##### ### # # ##### #### + * # # # ## # # # # # ## # # # # + * # # # # # # # ##### # # # # ### #### + * # # # # ## # # # # # ## # # # + * ##### ##### # # # # # ### # # ##### # # + */ + public static class ContainerTrainCargoTram extends Container { + private TrainCargoTram train; + public ContainerTrainCargoTram(InventoryPlayer invPlayer, TrainCargoTram train) { + this.train = train; + for(int i = 0; i < 4; i++) { + for(int j = 0; j < 7; j++) { + this.addSlotToContainer(new Slot(train, i * 7 + j, 8 + j * 18, 18 + i * 18)); + } + } + this.addSlotToContainer(new Slot(train, 28, 152, 72)); + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 180)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) { + ItemStack stackCopy = null; + Slot slot = (Slot) this.inventorySlots.get(slotIndex); + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + stackCopy = stack.copy(); + if(slotIndex < train.getSizeInventory()) { + if(!this.mergeItemStack(stack, train.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(stackCopy.getItem() instanceof IBatteryItem) { + if(!this.mergeItemStack(stack, 28, 29, false)) { + return null; + } + } else { + if(!this.mergeItemStack(stack, 0, 28, false)) { + return null; + } + } + } + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + return stackCopy; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return train.isUseableByPlayer(player); + } + } + + /* + * ##### # # ### + * # # # # + * # ## # # # + * # # # # # + * ##### ##### ### + */ + @SideOnly(Side.CLIENT) + public static class GUITrainCargoTram extends GuiInfoContainer { + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/vehicles/gui_cargo_tram.png"); + private TrainCargoTram train; + public GUITrainCargoTram(InventoryPlayer invPlayer, TrainCargoTram train) { + super(new ContainerTrainCargoTram(invPlayer, train)); + this.train = train; + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + this.drawElectricityInfo(this, x, y, guiLeft + 152, guiTop + 18, 16, 52, train.getPower(), train.getMaxPower()); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.train.hasCustomInventoryName() ? this.train.getInventoryName() : I18n.format(this.train.getInventoryName()); + this.fontRendererObj.drawString(name, 140 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float intero, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int i = train.getPower() * 53 / train.getMaxPower(); + drawTexturedModalRect(guiLeft + 152, guiTop + 70 - i, 176, 52 - i, 16, i); + + if(train.getPower() > train.getPowerConsumption()) { + drawTexturedModalRect(guiLeft + 156, guiTop + 4, 176, 52, 9, 12); + } + } + } +} diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTramTrailer.java b/src/main/java/com/hbm/entity/train/TrainCargoTramTrailer.java new file mode 100644 index 000000000..afefb1d9a --- /dev/null +++ b/src/main/java/com/hbm/entity/train/TrainCargoTramTrailer.java @@ -0,0 +1,183 @@ +package com.hbm.entity.train; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import com.hbm.inventory.gui.GuiInfoContainer; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IGUIProvider; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class TrainCargoTramTrailer extends EntityRailCarCargo implements IGUIProvider { + + /* + * + * <-- + * + * _O\____________________________________________/O_ + * |____| |____| + * \__________________________________________/ + * '( + )' '( + )' + * + */ + + public TrainCargoTramTrailer(World world) { + super(world); + this.setSize(5F, 2F); + } + + @Override public double getMaxRailSpeed() { return 1; } + @Override public TrackGauge getGauge() { return TrackGauge.STANDARD; } + @Override public double getLengthSpan() { return 1.5; } + @Override public double getCollisionSpan() { return 2.5; } + @Override public int getSizeInventory() { return 45; } + @Override public String getInventoryName() { return this.hasCustomInventoryName() ? this.getEntityName() : "container.trainTramTrailer"; } + //@Override public AxisAlignedBB getCollisionBox() { return AxisAlignedBB.getBoundingBox(renderX, renderY, renderZ, renderX, renderY + 1, renderZ).expand(4, 0, 4); } + @Override public double getCouplingDist(TrainCoupling coupling) { return coupling != null ? 2.75 : 0; } + @Override public double getCurrentSpeed() { return 0; } + + @Override + public DummyConfig[] getDummies() { + return new DummyConfig[] { + new DummyConfig(2F, 1F, Vec3.createVectorHelper(0, 0, 1.5)), + new DummyConfig(2F, 1F, Vec3.createVectorHelper(0, 0, 0)), + new DummyConfig(2F, 1F, Vec3.createVectorHelper(0, 0, -1.5)) + }; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + if(!this.worldObj.isRemote && !this.isDead) { + this.setDead(); + } + + return true; + } + + @Override + public boolean interactFirst(EntityPlayer player) { + if(super.interactFirst(player)) return false; + + if(!this.worldObj.isRemote) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, worldObj, this.getEntityId(), 0, 0); + } + + return true; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerTrainCargoTramTrailer(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUITrainCargoTramTrailer(player.inventory, this); + } + + /* + * ##### ##### # # ##### ##### ### # # ##### #### + * # # # ## # # # # # ## # # # # + * # # # # # # # ##### # # # # ### #### + * # # # # ## # # # # # ## # # # + * ##### ##### # # # # # ### # # ##### # # + */ + public static class ContainerTrainCargoTramTrailer extends Container { + private TrainCargoTramTrailer train; + public ContainerTrainCargoTramTrailer(InventoryPlayer invPlayer, TrainCargoTramTrailer train) { + this.train = train; + for(int i = 0; i < 5; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(train, i * 9 + j, 8 + j * 18, 18 + i * 18)); + } + } + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 140 + i * 18)); + } + } + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 198)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) { + ItemStack stackCopy = null; + Slot slot = (Slot) this.inventorySlots.get(slotIndex); + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + stackCopy = stack.copy(); + if(slotIndex < train.getSizeInventory()) { + if(!this.mergeItemStack(stack, train.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else + if(!this.mergeItemStack(stack, 0, 45, false)) { + return null; + } + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + return stackCopy; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return train.isUseableByPlayer(player); + } + } + + /* + * ##### # # ### + * # # # # + * # ## # # # + * # # # # # + * ##### ##### ### + */ + @SideOnly(Side.CLIENT) + public static class GUITrainCargoTramTrailer extends GuiInfoContainer { + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/vehicles/gui_cargo_tram_trailer.png"); + private TrainCargoTramTrailer train; + public GUITrainCargoTramTrailer(InventoryPlayer invPlayer, TrainCargoTramTrailer train) { + super(new ContainerTrainCargoTramTrailer(invPlayer, train)); + this.train = train; + this.xSize = 176; + this.ySize = 222; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.train.hasCustomInventoryName() ? this.train.getInventoryName() : I18n.format(this.train.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float intero, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } + } +} diff --git a/src/main/java/com/hbm/entity/train/TrainTunnelBore.java b/src/main/java/com/hbm/entity/train/TrainTunnelBore.java new file mode 100644 index 000000000..f7b10493e --- /dev/null +++ b/src/main/java/com/hbm/entity/train/TrainTunnelBore.java @@ -0,0 +1,54 @@ +package com.hbm.entity.train; + +import com.hbm.blocks.rail.IRailNTM.TrackGauge; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class TrainTunnelBore extends EntityRailCarRidable { + + public TrainTunnelBore(World world) { + super(world); + this.setSize(6F, 4F); + } + + @Override public double getPoweredAcceleration() { return 0.01; } + @Override public double getPassivBrake() { return 0.95; } + @Override public boolean shouldUseEngineBrake(EntityPlayer player) { return Math.abs(this.engineSpeed) < 0.1; } + @Override public double getMaxPoweredSpeed() { return 0.5; } + @Override public double getMaxRailSpeed() { return 1; } + + @Override public TrackGauge getGauge() { return TrackGauge.STANDARD; } + @Override public double getLengthSpan() { return 2.5; } + @Override public double getCollisionSpan() { return 4.5; } + @Override public Vec3 getRiderSeatPosition() { return Vec3.createVectorHelper(0.0, 2.375, -2.375); } + @Override public boolean shouldRiderSit() { return true; } + @Override public int getSizeInventory() { return 0; } + @Override public String getInventoryName() { return this.hasCustomInventoryName() ? this.getEntityName() : "container.trainTunnelBore"; } + @Override public double getCouplingDist(TrainCoupling coupling) { return coupling != null ? 2.75 : 0; } + + @Override public boolean canAccelerate() { return true; } + @Override public Vec3[] getPassengerSeats() { return new Vec3[0]; } + + @Override + public DummyConfig[] getDummies() { + return new DummyConfig[] { + new DummyConfig(2F, 3F, Vec3.createVectorHelper(0, 0, 2.5)), + new DummyConfig(2F, 3F, Vec3.createVectorHelper(0, 0, 1.25)), + new DummyConfig(2F, 3F, Vec3.createVectorHelper(0, 0, 0)), + new DummyConfig(2F, 3F, Vec3.createVectorHelper(0, 0, -1.25)), + new DummyConfig(2F, 3F, Vec3.createVectorHelper(0, 0, -2.5)) + }; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + if(!this.worldObj.isRemote && !this.isDead) { + this.setDead(); + } + + return true; + } +} diff --git a/src/main/java/com/hbm/explosion/ExplosionChaos.java b/src/main/java/com/hbm/explosion/ExplosionChaos.java index 38b3514da..820f3df46 100644 --- a/src/main/java/com/hbm/explosion/ExplosionChaos.java +++ b/src/main/java/com/hbm/explosion/ExplosionChaos.java @@ -6,6 +6,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.entity.grenade.EntityGrenadeTau; import com.hbm.entity.grenade.EntityGrenadeZOMG; +import com.hbm.entity.item.EntityFallingBlockNT; import com.hbm.entity.missile.EntityMissileAntiBallistic; import com.hbm.entity.missile.EntityMissileBase; import com.hbm.entity.particle.EntityChlorineFX; @@ -29,7 +30,6 @@ import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityFallingBlock; import net.minecraft.entity.item.EntityTNTPrimed; import net.minecraft.entity.passive.EntitySheep; import net.minecraft.entity.player.EntityPlayer; @@ -406,7 +406,7 @@ public class ExplosionChaos { public static void pDestruction(World world, int x, int y, int z) { - EntityFallingBlock entityfallingblock = new EntityFallingBlock(world, (double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), world.getBlock(x, y, z), world.getBlockMetadata(x, y, z)); + EntityFallingBlockNT entityfallingblock = new EntityFallingBlockNT(world, (double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), world.getBlock(x, y, z), world.getBlockMetadata(x, y, z)); world.spawnEntityInWorld(entityfallingblock); } diff --git a/src/main/java/com/hbm/explosion/ExplosionFleija.java b/src/main/java/com/hbm/explosion/ExplosionFleija.java index 3ad81f5e2..5a478fe14 100644 --- a/src/main/java/com/hbm/explosion/ExplosionFleija.java +++ b/src/main/java/com/hbm/explosion/ExplosionFleija.java @@ -96,7 +96,7 @@ public class ExplosionFleija dist = (int) Math.sqrt(dist); for (int y = (int)(dist / this.explosionCoefficient2); y > -dist / this.explosionCoefficient; y--) { - if(!(this.worldObj.getBlock(this.posX+x, this.posY+y, this.posZ+z) == Blocks.bedrock && this.posY+y <= 0) && !(this.worldObj.getBlock(this.posX+x, this.posY+y, this.posZ+z) instanceof DecoBlockAlt))this.worldObj.setBlock(this.posX+x, this.posY+y, this.posZ+z, Blocks.air); + if(this.posY + y > 0 && !(this.worldObj.getBlock(this.posX+x, this.posY+y, this.posZ+z) instanceof DecoBlockAlt))this.worldObj.setBlock(this.posX+x, this.posY+y, this.posZ+z, Blocks.air); } } } diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeAdvanced.java b/src/main/java/com/hbm/explosion/ExplosionNukeAdvanced.java index ef07620ee..5893488d5 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeAdvanced.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeAdvanced.java @@ -147,68 +147,4 @@ public class ExplosionNukeAdvanced } } } - - /*public static void mush(World world, double x, double y, double z) - { - double d = (float)x + 0.5F; - double d1 = (float)y + 0.5F; - double d2 = (float)z + 0.5F; - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1, d2, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 15, d1, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1, d2 + 15, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 15, d1, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1, d2 - 15, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 25, d1, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1, d2 + 25, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 25, d1, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1, d2 - 25, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 10, d1, d2 + 10, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 10, d1, d2 - 10, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 10, d1, d2 + 10, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 10, d1, d2 - 10, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 15, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 30, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 45, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 60, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 75, d2, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 90, d2, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 15, d1 + 90, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 90, d2 + 15, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 15, d1 + 90, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 90, d2 - 15, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 40, d1 + 90, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 90, d2 + 40, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 40, d1 + 90, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 90, d2 - 40, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 30, d1 + 90, d2 + 30, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 30, d1 + 90, d2 - 30, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 30, d1 + 90, d2 + 30, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 30, d1 + 90, d2 - 30, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 105, d2, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 30, d1 + 105, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 105, d2 + 30, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 30, d1 + 105, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 105, d2 - 30, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 20, d1 + 105, d2 + 20, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 20, d1 + 105, d2 - 20, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 20, d1 + 105, d2 + 20, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 20, d1 + 105, d2 - 20, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 10, d1 + 120, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 120, d2 + 10, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 10, d1 + 120, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 120, d2 - 10, 0.0D, 0.0D, 0.0D, 100)); - }*/ } diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java index c8c15c8a9..c2a58d0a1 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java @@ -24,7 +24,7 @@ import com.hbm.entity.effect.EntityNukeCloudSmall; import com.hbm.entity.grenade.EntityGrenadeASchrab; import com.hbm.entity.grenade.EntityGrenadeNuclear; import com.hbm.entity.missile.EntityMIRV; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.entity.projectile.EntityExplosiveBeam; import com.hbm.interfaces.Spaghetti; import com.hbm.items.ModItems; @@ -108,7 +108,7 @@ public class ExplosionNukeGeneric { e instanceof EntityGrenadeASchrab || e instanceof EntityGrenadeNuclear || e instanceof EntityExplosiveBeam || - e instanceof EntityBulletBase || + e instanceof EntityBulletBaseNT || e instanceof EntityPlayer && ArmorUtil.checkArmor((EntityPlayer) e, ModItems.euphemium_helmet, ModItems.euphemium_plate, ModItems.euphemium_legs, ModItems.euphemium_boots)) { return true; diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java b/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java index 8f0b72cd7..8f075876c 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java @@ -76,6 +76,8 @@ public class ExplosionNukeRayBatched { } public void collectTip(int count) { + + //count = Math.min(count, 10); int amountProcessed = 0; @@ -108,7 +110,7 @@ public class ExplosionNukeRayBatched { Block block = world.getBlock(iX, iY, iZ); if(!block.getMaterial().isLiquid()) - res -= Math.pow(block.getExplosionResistance(null), 7.5D - fac); + res -= Math.pow(masqueradeResistance(block), 7.5D - fac); //else // res -= Math.pow(Blocks.air.getExplosionResistance(null), 7.5D - fac); // air is 0, might want to raise that is necessary @@ -119,7 +121,16 @@ public class ExplosionNukeRayBatched { chunkCoords.add(chunkPos); } - if(res <= 0 || i + 1 >= this.length) { + if(res <= 0 || i + 1 >= this.length || i == length - 1) { + + /*NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "debugline"); + fx.setDouble("mX", vec.xCoord * i); + fx.setDouble("mY", vec.yCoord * i); + fx.setDouble("mZ", vec.zCoord * i); + fx.setInteger("color", 0xff0000); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(fx, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 200));*/ + break; } } @@ -150,6 +161,13 @@ public class ExplosionNukeRayBatched { isAusf3Complete = true; } + public static float masqueradeResistance(Block block) { + + if(block == Blocks.sandstone) return Blocks.stone.getExplosionResistance(null); + if(block == Blocks.obsidian) return Blocks.stone.getExplosionResistance(null) * 3; + return block.getExplosionResistance(null); + } + /** little comparator for roughly sorting chunks by distance to the center */ public class CoordComparator implements Comparator { @@ -181,6 +199,8 @@ public class ExplosionNukeRayBatched { Math.abs(posX - (chunkX << 4)), Math.abs(posZ - (chunkZ << 4)))) - 16; //jump ahead to cut back on NOPs + enter = Math.max(enter, 0); + for(FloatTriplet triplet : list) { float x = triplet.xCoord; float y = triplet.yCoord; diff --git a/src/main/java/com/hbm/explosion/nt/IExplosionLogic.java b/src/main/java/com/hbm/explosion/nt/IExplosionLogic.java index b2b2e86b8..0886cb3eb 100644 --- a/src/main/java/com/hbm/explosion/nt/IExplosionLogic.java +++ b/src/main/java/com/hbm/explosion/nt/IExplosionLogic.java @@ -1,5 +1,6 @@ package com.hbm.explosion.nt; +@Deprecated public interface IExplosionLogic { public void updateLogic(); diff --git a/src/main/java/com/hbm/explosion/nt/Mark5.java b/src/main/java/com/hbm/explosion/nt/Mark5.java index 6827b6758..16d2d5ee4 100644 --- a/src/main/java/com/hbm/explosion/nt/Mark5.java +++ b/src/main/java/com/hbm/explosion/nt/Mark5.java @@ -10,6 +10,7 @@ import net.minecraft.init.Blocks; import net.minecraft.util.Vec3; import net.minecraft.world.World; +@Deprecated public class Mark5 implements IExplosionLogic { //holds rays after being calculated up to where the blocks get removed diff --git a/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java b/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java index 891c10213..e1c217617 100644 --- a/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java +++ b/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java @@ -39,10 +39,10 @@ public class ExplosionVNT { //since we want to reduce each effect to the bare minimum (sound, particles, etc. being separate) we definitely need multiple most of the time private IExplosionSFX[] sfx; - protected World world; - protected double posX; - protected double posY; - protected double posZ; + public World world; + public double posX; + public double posY; + public double posZ; public float size; public Entity exploder; diff --git a/src/main/java/com/hbm/explosion/vanillant/interfaces/IBlockMutator.java b/src/main/java/com/hbm/explosion/vanillant/interfaces/IBlockMutator.java index d1e29ecbc..904f01c69 100644 --- a/src/main/java/com/hbm/explosion/vanillant/interfaces/IBlockMutator.java +++ b/src/main/java/com/hbm/explosion/vanillant/interfaces/IBlockMutator.java @@ -2,7 +2,10 @@ package com.hbm.explosion.vanillant.interfaces; import com.hbm.explosion.vanillant.ExplosionVNT; +import net.minecraft.block.Block; + public interface IBlockMutator { - public int mutateAtPosition(ExplosionVNT explosion, int x, int y, int z); + public void mutatePre(ExplosionVNT explosion, Block block, int meta, int x, int y, int z); + public void mutatePost(ExplosionVNT explosion, int x, int y, int z); } diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorBulkie.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorBulkie.java new file mode 100644 index 000000000..863916f19 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorBulkie.java @@ -0,0 +1,89 @@ +package com.hbm.explosion.vanillant.standard; + +import java.util.HashSet; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IBlockAllocator; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +public class BlockAllocatorBulkie implements IBlockAllocator { + + protected double maximum; + protected int resolution; + + public BlockAllocatorBulkie(double maximum) { + this(maximum, 16); + } + + public BlockAllocatorBulkie(double maximum, int resolution) { + this.resolution = resolution; + this.maximum = maximum; + } + + @Override + public HashSet allocate(ExplosionVNT explosion, World world, double x, double y, double z, float size) { + + HashSet affectedBlocks = new HashSet(); + + for(int i = 0; i < this.resolution; ++i) { + for(int j = 0; j < this.resolution; ++j) { + for(int k = 0; k < this.resolution; ++k) { + + if(i == 0 || i == this.resolution - 1 || j == 0 || j == this.resolution - 1 || k == 0 || k == this.resolution - 1) { + + double d0 = (double) ((float) i / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d1 = (double) ((float) j / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d2 = (double) ((float) k / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d3 = Math.sqrt(d0 * d0 + d1 * d1 + d2 * d2); + + d0 /= d3; + d1 /= d3; + d2 /= d3; + + double currentX = x; + double currentY = y; + double currentZ = z; + + double dist = 0; + + for(float stepSize = 0.3F; dist <= explosion.size;) { + + double deltaX = currentX - x; + double deltaY = currentY - y; + double deltaZ = currentZ - z; + dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ); + + int blockX = MathHelper.floor_double(currentX); + int blockY = MathHelper.floor_double(currentY); + int blockZ = MathHelper.floor_double(currentZ); + + Block block = world.getBlock(blockX, blockY, blockZ); + + if(block.getMaterial() != Material.air) { + float blockResistance = explosion.exploder != null ? explosion.exploder.func_145772_a(explosion.compat, world, blockX, blockY, blockZ, block) : block.getExplosionResistance(explosion.exploder, world, blockX, blockY, blockZ, x, y, z); + if(this.maximum < blockResistance) { + break; + } + } + + if(explosion.exploder == null || explosion.exploder.func_145774_a(explosion.compat, world, blockX, blockY, blockZ, block, explosion.size)) { + affectedBlocks.add(new ChunkPosition(blockX, blockY, blockZ)); + } + + currentX += d0 * (double) stepSize; + currentY += d1 * (double) stepSize; + currentZ += d2 * (double) stepSize; + } + } + } + } + } + + return affectedBlocks; + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java new file mode 100644 index 000000000..8d7a2d77f --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java @@ -0,0 +1,32 @@ +package com.hbm.explosion.vanillant.standard; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IBlockMutator; +import com.hbm.inventory.RecipesCommon.MetaBlock; + +import net.minecraft.block.Block; +import net.minecraft.util.Vec3; + +public class BlockMutatorBulkie implements IBlockMutator { + + protected MetaBlock metaBlock; + + public BlockMutatorBulkie(Block block) { + this(block, 0); + } + + public BlockMutatorBulkie(Block block, int meta) { + this.metaBlock = new MetaBlock(block, meta); + } + + @Override + public void mutatePre(ExplosionVNT explosion, Block block, int meta, int x, int y, int z) { + if(!block.isNormalCube()) return; + Vec3 vec = Vec3.createVectorHelper(x + 0.5 - explosion.posX, y + 0.5 - explosion.posY, z + 0.5 - explosion.posZ); + if(vec.lengthVector() >= explosion.size - 0.5) { + explosion.world.setBlock(x, y, z, metaBlock.block, metaBlock.meta, 3); + } + } + + @Override public void mutatePost(ExplosionVNT explosion, int x, int y, int z) { } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorDebris.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorDebris.java new file mode 100644 index 000000000..9feb9a918 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorDebris.java @@ -0,0 +1,36 @@ +package com.hbm.explosion.vanillant.standard; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IBlockMutator; +import com.hbm.inventory.RecipesCommon.MetaBlock; + +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockMutatorDebris implements IBlockMutator { + + protected MetaBlock metaBlock; + + public BlockMutatorDebris(Block block) { + this(block, 0); + } + + public BlockMutatorDebris(Block block, int meta) { + this.metaBlock = new MetaBlock(block, meta); + } + + @Override public void mutatePre(ExplosionVNT explosion, Block block, int meta, int x, int y, int z) { } + + @Override public void mutatePost(ExplosionVNT explosion, int x, int y, int z) { + + World world = explosion.world; + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); + if(b.isNormalCube() && (b != metaBlock.block || world.getBlockMetadata(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) != metaBlock.meta)) { + world.setBlock(x, y, z, metaBlock.block, metaBlock.meta, 3); + return; + } + } + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorFire.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorFire.java new file mode 100644 index 000000000..8cc03caa9 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorFire.java @@ -0,0 +1,23 @@ +package com.hbm.explosion.vanillant.standard; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IBlockMutator; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; + +public class BlockMutatorFire implements IBlockMutator { + + @Override public void mutatePre(ExplosionVNT explosion, Block block, int meta, int x, int y, int z) { } + + @Override + public void mutatePost(ExplosionVNT explosion, int x, int y, int z) { + + Block block = explosion.world.getBlock(x, y, z); + Block block1 = explosion.world.getBlock(x, y - 1, z); + if(block.getMaterial() == Material.air && block1.func_149730_j() && explosion.world.rand.nextInt(3) == 0) { + explosion.world.setBlock(x, y, z, Blocks.fire); + } + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorNoDamage.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorNoDamage.java new file mode 100644 index 000000000..40332a9d8 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorNoDamage.java @@ -0,0 +1,62 @@ +package com.hbm.explosion.vanillant.standard; + +import java.util.HashSet; +import java.util.Iterator; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IBlockMutator; +import com.hbm.explosion.vanillant.interfaces.IBlockProcessor; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +public class BlockProcessorNoDamage implements IBlockProcessor { + + protected IBlockMutator convert; + + public BlockProcessorNoDamage() { } + + public BlockProcessorNoDamage withBlockEffect(IBlockMutator convert) { + this.convert = convert; + return this; + } + + @Override + public void process(ExplosionVNT explosion, World world, double x, double y, double z, HashSet affectedBlocks) { + + Iterator iterator = affectedBlocks.iterator(); + + while(iterator.hasNext()) { + ChunkPosition chunkposition = (ChunkPosition) iterator.next(); + int blockX = chunkposition.chunkPosX; + int blockY = chunkposition.chunkPosY; + int blockZ = chunkposition.chunkPosZ; + Block block = world.getBlock(blockX, blockY, blockZ); + + if(block.getMaterial() != Material.air) { + if(this.convert != null) this.convert.mutatePre(explosion, block, world.getBlockMetadata(blockX, blockY, blockZ), blockX, blockY, blockZ); + } + } + + + if(this.convert != null) { + iterator = affectedBlocks.iterator(); + + while(iterator.hasNext()) { + ChunkPosition chunkposition = (ChunkPosition) iterator.next(); + int blockX = chunkposition.chunkPosX; + int blockY = chunkposition.chunkPosY; + int blockZ = chunkposition.chunkPosZ; + Block block = world.getBlock(blockX, blockY, blockZ); + + if(block.getMaterial() == Material.air) { + this.convert.mutatePost(explosion, blockX, blockY, blockZ); + } + } + } + + affectedBlocks.clear(); //tricks the standard SFX to not do the block damage particles + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorStandard.java index ac1fcd7be..8d76b9d9a 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorStandard.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorStandard.java @@ -63,6 +63,9 @@ public class BlockProcessorStandard implements IBlockProcessor { } block.onBlockExploded(world, blockX, blockY, blockZ, explosion.compat); + if(this.convert != null) this.convert.mutatePre(explosion, block, world.getBlockMetadata(blockX, blockY, blockZ), blockX, blockY, blockZ); + } else { + iterator.remove(); } } @@ -78,7 +81,7 @@ public class BlockProcessorStandard implements IBlockProcessor { Block block = world.getBlock(blockX, blockY, blockZ); if(block.getMaterial() == Material.air) { - this.convert.mutateAtPosition(explosion, blockX, blockY, blockZ); + this.convert.mutatePost(explosion, blockX, blockY, blockZ); } } } diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java index 626887245..ba9a66cad 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java @@ -21,6 +21,7 @@ public class EntityProcessorStandard implements IEntityProcessor { protected IEntityRangeMutator range; protected ICustomDamageHandler damage; + protected boolean allowSelfDamage = false; @Override public HashMap process(ExplosionVNT explosion, World world, double x, double y, double z, float size) { @@ -40,7 +41,7 @@ public class EntityProcessorStandard implements IEntityProcessor { double minZ = z - (double) size - 1.0D; double maxZ = z + (double) size + 1.0D; - List list = world.getEntitiesWithinAABBExcludingEntity(explosion.exploder, AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ)); + List list = world.getEntitiesWithinAABBExcludingEntity(allowSelfDamage ? null : explosion.exploder, AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ)); ForgeEventFactory.onExplosionDetonate(world, explosion.compat, list, size); Vec3 vec3 = Vec3.createVectorHelper(x, y, z); @@ -101,4 +102,9 @@ public class EntityProcessorStandard implements IEntityProcessor { this.damage = damage; return this; } + + public EntityProcessorStandard allowSelfDamage() { + this.allowSelfDamage = true; + return this; + } } diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java index 1ffb85b24..79b5b6966 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java @@ -30,7 +30,7 @@ public class ExplosionEffectStandard implements IExplosionSFX { if(size >= 2.0F) { world.spawnParticle("hugeexplosion", x, y, z, 1.0D, 0.0D, 0.0D); } else { - world.spawnParticle("largeexplode", x, z, z, 1.0D, 0.0D, 0.0D); + world.spawnParticle("largeexplode", x, y, z, 1.0D, 0.0D, 0.0D); } int count = affectedBlocks.size(); diff --git a/src/main/java/com/hbm/extprop/HbmLivingProps.java b/src/main/java/com/hbm/extprop/HbmLivingProps.java index 73d5957af..81a44a47a 100644 --- a/src/main/java/com/hbm/extprop/HbmLivingProps.java +++ b/src/main/java/com/hbm/extprop/HbmLivingProps.java @@ -25,6 +25,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.IExtendedEntityProperties; @@ -40,12 +41,15 @@ public class HbmLivingProps implements IExtendedEntityProperties { private int asbestos; public static final int maxAsbestos = 60 * 60 * 20; private int blacklung; - public static final int maxBlacklung = 60 * 60 * 20; + public static final int maxBlacklung = 2 * 60 * 60 * 20; private float radEnv; private float radBuf; private int bombTimer; private int contagion; private int oil; + private int temperature; + private boolean frozen = false; + private boolean burning = false; private List contamination = new ArrayList(); public HbmLivingProps(EntityLivingBase entity) { @@ -270,6 +274,24 @@ public class HbmLivingProps implements IExtendedEntityProperties { public static void setOil(EntityLivingBase entity, int oil) { getData(entity).oil = oil; } + + /// TEMPERATURE /// + public static int getTemperature(EntityLivingBase entity) { + return getData(entity).temperature; + } + + public static void setTemperature(EntityLivingBase entity, int temperature) { + HbmLivingProps data = getData(entity); + temperature = MathHelper.clamp_int(temperature, -2500, 2500); + data.temperature = temperature; + if(temperature > 1000) data.burning = true; + if(temperature < 800) data.burning = false; + if(temperature < -1000) data.frozen = true; + if(temperature > -800) data.frozen = false; + } + + public static boolean isFrozen(EntityLivingBase entity) { return getData(entity).frozen; }; + public static boolean isBurning(EntityLivingBase entity) { return getData(entity).burning; }; @Override public void init(Entity entity, World world) { } diff --git a/src/main/java/com/hbm/extprop/HbmPlayerProps.java b/src/main/java/com/hbm/extprop/HbmPlayerProps.java index 23191641e..f51905229 100644 --- a/src/main/java/com/hbm/extprop/HbmPlayerProps.java +++ b/src/main/java/com/hbm/extprop/HbmPlayerProps.java @@ -1,8 +1,11 @@ package com.hbm.extprop; +import com.hbm.entity.train.EntityRailCarBase; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IGUIProvider; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -15,6 +18,8 @@ public class HbmPlayerProps implements IExtendedEntityProperties { public static final String key = "NTM_EXT_PLAYER"; public EntityPlayer player; + public boolean hasReceivedBook = false; + public boolean enableHUD = true; public boolean enableBackpack = true; @@ -36,6 +41,8 @@ public class HbmPlayerProps implements IExtendedEntityProperties { public int lastDamage = 0; public static final float shieldCap = 100; + public int reputation; + public HbmPlayerProps(EntityPlayer player) { this.player = player; } @@ -63,20 +70,36 @@ public class HbmPlayerProps implements IExtendedEntityProperties { if(!getKeyPressed(key) && pressed) { if(key == EnumKeybind.TOGGLE_JETPACK) { - this.enableBackpack = !this.enableBackpack; - if(this.enableBackpack) - MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON", MainRegistry.proxy.ID_JETPACK); - else - MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF", MainRegistry.proxy.ID_JETPACK); + if(!player.worldObj.isRemote) { + this.enableBackpack = !this.enableBackpack; + + if(this.enableBackpack) + MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON", MainRegistry.proxy.ID_JETPACK); + else + MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF", MainRegistry.proxy.ID_JETPACK); + } } if(key == EnumKeybind.TOGGLE_HEAD) { - this.enableHUD = !this.enableHUD; - if(this.enableHUD) - MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD); - else - MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF", MainRegistry.proxy.ID_HUD); + if(!player.worldObj.isRemote) { + this.enableHUD = !this.enableHUD; + + if(this.enableHUD) + MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD); + else + MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF", MainRegistry.proxy.ID_HUD); + } + } + + if(key == EnumKeybind.TRAIN) { + + if(!this.player.worldObj.isRemote) { + + if(player.ridingEntity != null && player.ridingEntity instanceof EntityRailCarBase && player.ridingEntity instanceof IGUIProvider) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, player.worldObj, player.ridingEntity.getEntityId(), 0, 0); + } + } } } @@ -131,8 +154,12 @@ public class HbmPlayerProps implements IExtendedEntityProperties { NBTTagCompound props = new NBTTagCompound(); + props.setBoolean("hasReceivedBook", hasReceivedBook); props.setFloat("shield", shield); props.setFloat("maxShield", maxShield); + props.setBoolean("enableBackpack", enableBackpack); + props.setBoolean("enableHUD", enableHUD); + props.setInteger("reputation", reputation); nbt.setTag("HbmPlayerProps", props); } @@ -143,8 +170,12 @@ public class HbmPlayerProps implements IExtendedEntityProperties { NBTTagCompound props = (NBTTagCompound) nbt.getTag("HbmPlayerProps"); if(props != null) { + this.hasReceivedBook = props.getBoolean("hasReceivedBook"); this.shield = props.getFloat("shield"); this.maxShield = props.getFloat("maxShield"); + this.enableBackpack = props.getBoolean("enableBackpack"); + this.enableHUD = props.getBoolean("enableHUD"); + this.reputation = props.getInteger("reputation"); } } } diff --git a/src/main/java/com/hbm/handler/BossSpawnHandler.java b/src/main/java/com/hbm/handler/BossSpawnHandler.java index 5d981fd0d..5c3a206c7 100644 --- a/src/main/java/com/hbm/handler/BossSpawnHandler.java +++ b/src/main/java/com/hbm/handler/BossSpawnHandler.java @@ -7,6 +7,7 @@ import com.hbm.config.GeneralConfig; import com.hbm.config.MobConfig; import com.hbm.config.WorldConfig; import com.hbm.entity.mob.EntityFBI; +import com.hbm.entity.mob.EntityFBIDrone; import com.hbm.entity.mob.EntityGhost; import com.hbm.entity.mob.EntityMaskMan; import com.hbm.entity.mob.EntityRADBeast; @@ -97,6 +98,15 @@ public class BossSpawnHandler { trySpawn(world, (float)spawnX, (float)spawnY, (float)spawnZ, new EntityFBI(world)); } + + for(int i = 0; i < MobConfig.raidDrones; i++) { + + double spawnX = player.posX + vec.xCoord + world.rand.nextGaussian() * 5; + double spawnZ = player.posZ + vec.zCoord + world.rand.nextGaussian() * 5; + double spawnY = world.getHeightValue((int)spawnX, (int)spawnZ); + + trySpawn(world, (float)spawnX, (float)spawnY + 10, (float)spawnZ, new EntityFBIDrone(world)); + } } } } diff --git a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java index 7e7af9633..3c2c2e7a3 100644 --- a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java @@ -68,6 +68,7 @@ public class BulletConfigSyncingUtil { public static int GRENADE_PHOSPHORUS = i++; public static int GRENADE_TRACER = i++; public static int GRENADE_KAMPF = i++; + public static int GRENADE_LEADBURSTER = i++; public static int G12_NORMAL = i++; public static int G12_INCENDIARY = i++; @@ -160,12 +161,18 @@ public class BulletConfigSyncingUtil { public static int SPECIAL_GAUSS_CHARGED = i++; public static int SPECIAL_EMP = i++; + public static int COIL_NORMAL = i++; + public static int COIL_DU = i++; + public static int COIL_RUBBER = i++; + public static int FLAMER_NORMAL = i++; public static int FLAMER_NAPALM = i++; public static int FLAMER_WP = i++; public static int FLAMER_VAPORIZER = i++; public static int FLAMER_GAS = i++; + public static int CRYO_NORMAL = i++; + public static int FEXT_NORMAL = i++; public static int FEXT_FOAM = i++; public static int FEXT_SAND = i++; @@ -359,6 +366,7 @@ public class BulletConfigSyncingUtil { configSet.put(GRENADE_NUCLEAR, GunGrenadeFactory.getGrenadeNuclearConfig()); configSet.put(GRENADE_TRACER, GunGrenadeFactory.getGrenadeTracerConfig()); configSet.put(GRENADE_KAMPF, GunGrenadeFactory.getGrenadeKampfConfig()); + configSet.put(GRENADE_LEADBURSTER, GunGrenadeFactory.getGrenadeLeadbursterConfig()); configSet.put(G12_NORMAL, Gun12GaugeFactory.get12GaugeConfig()); configSet.put(G12_INCENDIARY, Gun12GaugeFactory.get12GaugeFireConfig()); @@ -450,12 +458,18 @@ public class BulletConfigSyncingUtil { configSet.put(SPECIAL_GAUSS_CHARGED, GunGaussFactory.getAltConfig()); configSet.put(SPECIAL_EMP, GunEnergyFactory.getOrbusConfig()); + configSet.put(COIL_NORMAL, GunEnergyFactory.getCoilConfig()); + configSet.put(COIL_DU, GunEnergyFactory.getCoilDUConfig()); + configSet.put(COIL_RUBBER, GunEnergyFactory.getCoilRubberConfig()); + configSet.put(FLAMER_NORMAL, GunEnergyFactory.getFlameConfig()); configSet.put(FLAMER_NAPALM, GunEnergyFactory.getNapalmConfig()); configSet.put(FLAMER_WP, GunEnergyFactory.getPhosphorusConfig()); configSet.put(FLAMER_VAPORIZER, GunEnergyFactory.getVaporizerConfig()); configSet.put(FLAMER_GAS, GunEnergyFactory.getGasConfig()); + configSet.put(CRYO_NORMAL, GunEnergyFactory.getCryoConfig()); + configSet.put(FEXT_NORMAL, GunEnergyFactory.getFextConfig()); configSet.put(FEXT_FOAM, GunEnergyFactory.getFextFoamConfig()); configSet.put(FEXT_SAND, GunEnergyFactory.getFextSandConfig()); diff --git a/src/main/java/com/hbm/handler/BulletConfiguration.java b/src/main/java/com/hbm/handler/BulletConfiguration.java index a55ffe030..aa1d73ca5 100644 --- a/src/main/java/com/hbm/handler/BulletConfiguration.java +++ b/src/main/java/com/hbm/handler/BulletConfiguration.java @@ -2,14 +2,9 @@ package com.hbm.handler; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseNT.*; import com.hbm.handler.guncfg.BulletConfigFactory; -import com.hbm.interfaces.IBulletHitBehavior; -import com.hbm.interfaces.IBulletHurtBehavior; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletRicochetBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; -import com.hbm.interfaces.Untested; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; @@ -59,14 +54,16 @@ public class BulletConfiguration implements Cloneable { public int HBRC; //how much of the initial velocity is kept after bouncing public double bounceMod; + //how many ticks until the projectile can hurt the shooter + public int selfDamageDelay = 5; //whether or not the bullet should penetrate mobs public boolean doesPenetrate; - //whether or not the bullet should phase through blocks + //disables collisions with blocks entirely public boolean isSpectral; //whether or not the bullet should break glass public boolean doesBreakGlass; - //whether the bullet should stay alive after colliding with a block + //bullets still call the impact function when hitting blocks but do not get destroyed public boolean liveAfterImpact; //creates a "muzzle flash" and a ton of smoke with every projectile spawned @@ -87,11 +84,16 @@ public class BulletConfiguration implements Cloneable { public int caustic; public boolean destroysBlocks; public boolean instakill; - public IBulletHurtBehavior bHurt; + /*public IBulletHurtBehavior bHurt; public IBulletHitBehavior bHit; public IBulletRicochetBehavior bRicochet; public IBulletImpactBehavior bImpact; - public IBulletUpdateBehavior bUpdate; + public IBulletUpdateBehavior bUpdate;*/ + public IBulletHurtBehaviorNT bntHurt; + public IBulletHitBehaviorNT bntHit; + public IBulletRicochetBehaviorNT bntRicochet; + public IBulletImpactBehaviorNT bntImpact; + public IBulletUpdateBehaviorNT bntUpdate; //appearance public int style; @@ -138,6 +140,7 @@ public class BulletConfiguration implements Cloneable { public static final int STYLE_BLADE = 15; public static final int STYLE_BARREL = 16; public static final int STYLE_TAU = 17; + public static final int STYLE_LEADBURSTER = 18; public static final int PLINK_NONE = 0; public static final int PLINK_BULLET = 1; @@ -173,18 +176,20 @@ public class BulletConfiguration implements Cloneable { public BulletConfiguration setToGuided() { - this.bUpdate = BulletConfigFactory.getLaserSteering(); + this.bntUpdate = BulletConfigFactory.getLaserSteering(); this.doesRicochet = false; return this; } public BulletConfiguration getChlorophyte() { - this.bUpdate = BulletConfigFactory.getHomingBehavior(200, 45); - this.dmgMin *= 1.5F; - this.dmgMax *= 1.5F; + this.bntUpdate = BulletConfigFactory.getHomingBehavior(30, 180); + this.bntHurt = BulletConfigFactory.getPenHomingBehavior(); + this.dmgMin *= 2F; + this.dmgMax *= 2F; this.wear *= 0.5; + this.velocity *= 0.3; this.doesRicochet = false; - this.doesPenetrate = false; + this.doesPenetrate = true; this.vPFX = "greendust"; if(this.spentCasing != null) { @@ -213,8 +218,7 @@ public class BulletConfiguration implements Cloneable { return this; } - @Untested - public DamageSource getDamage(EntityBulletBase bullet, EntityLivingBase shooter) { + public DamageSource getDamage(EntityBulletBaseNT bullet, EntityLivingBase shooter) { DamageSource dmg; diff --git a/src/main/java/com/hbm/handler/CompatHandler.java b/src/main/java/com/hbm/handler/CompatHandler.java new file mode 100644 index 000000000..07d7fd20a --- /dev/null +++ b/src/main/java/com/hbm/handler/CompatHandler.java @@ -0,0 +1,31 @@ +package com.hbm.handler; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; + + +/** + * General handler for OpenComputers compatibility. + *

+ * Mostly just functions used across many TEs. + */ +public class CompatHandler { + public static Object[] steamTypeToInt(FluidType type) { + if(type == Fluids.STEAM) {return new Object[] {0};} + else if(type == Fluids.HOTSTEAM) {return new Object[] {1};} + else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {2};} + return new Object[] {3}; + } + public static FluidType intToSteamType(int arg) { + switch(arg) { + default: + return Fluids.STEAM; + case(1): + return Fluids.HOTSTEAM; + case(2): + return Fluids.SUPERHOTSTEAM; + case(3): + return Fluids.ULTRAHOTSTEAM; + } + } +} diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index 845bbd9a6..c38cf5755 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -12,6 +12,8 @@ import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmPlayerProps; import com.hbm.extprop.HbmLivingProps.ContaminationEffect; import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.interfaces.IArmorModDash; import com.hbm.items.armor.ArmorFSB; @@ -19,6 +21,7 @@ import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.potion.HbmPotion; import com.hbm.packet.ExtPropPacket; import com.hbm.saveddata.AuxSavedData; import com.hbm.util.ArmorRegistry; @@ -32,6 +35,7 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -48,42 +52,40 @@ import net.minecraft.world.World; public class EntityEffectHandler { public static void onUpdate(EntityLivingBase entity) { - + + if(entity.ticksExisted % 20 == 0) { + HbmLivingProps.setRadBuf(entity, HbmLivingProps.getRadEnv(entity)); + HbmLivingProps.setRadEnv(entity, 0); + } + + if(entity instanceof EntityPlayerMP) { + HbmLivingProps props = HbmLivingProps.getData(entity); + HbmPlayerProps pprps = HbmPlayerProps.getData((EntityPlayerMP) entity); + NBTTagCompound data = new NBTTagCompound(); + + if(pprps.shield < pprps.maxShield && entity.ticksExisted > pprps.lastDamage + 60) { + int tsd = entity.ticksExisted - (pprps.lastDamage + 60); + pprps.shield += Math.min(pprps.maxShield - pprps.shield, 0.005F * tsd); + } + + if(pprps.shield > pprps.maxShield) + pprps.shield = pprps.maxShield; + + props.saveNBTData(data); + pprps.saveNBTData(data); + PacketDispatcher.wrapper.sendTo(new ExtPropPacket(data), (EntityPlayerMP) entity); + } + if(!entity.worldObj.isRemote) { - - if(entity.ticksExisted % 20 == 0) { - HbmLivingProps.setRadBuf(entity, HbmLivingProps.getRadEnv(entity)); - HbmLivingProps.setRadEnv(entity, 0); - } - - - if(entity instanceof EntityPlayerMP) { - HbmLivingProps props = HbmLivingProps.getData(entity); - HbmPlayerProps pprps = HbmPlayerProps.getData((EntityPlayerMP) entity); - NBTTagCompound data = new NBTTagCompound(); - - if(pprps.shield < pprps.maxShield && entity.ticksExisted > pprps.lastDamage + 60) { - int tsd = entity.ticksExisted - (pprps.lastDamage + 60); - pprps.shield += Math.min(pprps.maxShield - pprps.shield, 0.005F * tsd); - } - - if(pprps.shield > pprps.maxShield) - pprps.shield = pprps.maxShield; - - props.saveNBTData(data); - pprps.saveNBTData(data); - PacketDispatcher.wrapper.sendTo(new ExtPropPacket(data), (EntityPlayerMP) entity); - } - int timer = HbmLivingProps.getTimer(entity); if(timer > 0) { HbmLivingProps.setTimer(entity, timer - 1); - + if(timer == 1) { ExplosionNukeSmall.explode(entity.worldObj, entity.posX, entity.posY, entity.posZ, ExplosionNukeSmall.PARAMS_MEDIUM); } } - + if(GeneralConfig.enable528 && entity instanceof EntityLivingBase && !entity.isImmuneToFire() && entity.worldObj.provider.isHellWorld) { entity.setFire(5); } @@ -95,6 +97,8 @@ public class EntityEffectHandler { handleDigamma(entity); handleLungDisease(entity); handleOil(entity); + handlePollution(entity); + handleTemperature(entity); handleDashing(entity); handlePlinking(entity); @@ -122,13 +126,13 @@ public class EntityEffectHandler { private static void handleRadiation(EntityLivingBase entity) { - if(ContaminationUtil.isRadImmune(entity)) - return; - World world = entity.worldObj; if(!world.isRemote) { + if(ContaminationUtil.isRadImmune(entity)) + return; + int ix = (int)MathHelper.floor_double(entity.posX); int iy = (int)MathHelper.floor_double(entity.posY); int iz = (int)MathHelper.floor_double(entity.posZ); @@ -156,7 +160,7 @@ public class EntityEffectHandler { if(HbmLivingProps.getRadiation(entity) > 600) { - if((world.getTotalWorldTime() + r600) % 600 < 20) { + if((world.getTotalWorldTime() + r600) % 600 < 20 && canVomit(entity)) { NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "vomit"); nbt.setString("mode", "blood"); @@ -170,7 +174,7 @@ public class EntityEffectHandler { } } - } else if(HbmLivingProps.getRadiation(entity) > 200 && (world.getTotalWorldTime() + r1200) % 1200 < 20) { + } else if(HbmLivingProps.getRadiation(entity) > 200 && (world.getTotalWorldTime() + r1200) % 1200 < 20 && canVomit(entity)) { NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "vomit"); @@ -326,7 +330,7 @@ public class EntityEffectHandler { entity.attackEntityFrom(ModDamageSource.mku, 2F); } - if(contagion < 30 * minute && (contagion + entity.getEntityId()) % 200 < 20) { + if(contagion < 30 * minute && (contagion + entity.getEntityId()) % 200 < 20 && canVomit(entity)) { NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "vomit"); nbt.setString("mode", "blood"); @@ -359,14 +363,19 @@ public class EntityEffectHandler { int bl = HbmLivingProps.getBlackLung(entity); - if(bl > 0 && bl < HbmLivingProps.maxBlacklung * 0.25) + if(bl > 0 && bl < HbmLivingProps.maxBlacklung * 0.5) HbmLivingProps.setBlackLung(entity, HbmLivingProps.getBlackLung(entity) - 1); } double blacklung = Math.min(HbmLivingProps.getBlackLung(entity), HbmLivingProps.maxBlacklung); double asbestos = Math.min(HbmLivingProps.getAsbestos(entity), HbmLivingProps.maxAsbestos); + double soot = PollutionHandler.getPollution(entity.worldObj, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY + entity.getEyeHeight()), (int) Math.floor(entity.posZ), PollutionType.SOOT); - boolean coughs = blacklung / HbmLivingProps.maxBlacklung > 0.25D || asbestos / HbmLivingProps.maxAsbestos > 0.25D; + if(!(entity instanceof EntityPlayer)) soot = 0; + + if(ArmorRegistry.hasProtection(entity, 3, HazardClass.PARTICLE_COARSE)) soot = 0; + + boolean coughs = blacklung / HbmLivingProps.maxBlacklung > 0.25D || asbestos / HbmLivingProps.maxAsbestos > 0.25D || soot > 30; if(!coughs) return; @@ -377,11 +386,10 @@ public class EntityEffectHandler { double blacklungDelta = 1D - (blacklung / (double)HbmLivingProps.maxBlacklung); double asbestosDelta = 1D - (asbestos / (double)HbmLivingProps.maxAsbestos); + double sootDelta = 1D - Math.min(soot / 100, 1D); double total = 1 - (blacklungDelta * asbestosDelta); - int freq = Math.max((int) (1000 - 950 * total), 20); - World world = entity.worldObj; if(total > 0.75D) { @@ -392,6 +400,9 @@ public class EntityEffectHandler { entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 100, 0)); } + total = 1 - (blacklungDelta * asbestosDelta * sootDelta); + int freq = Math.max((int) (1000 - 950 * total), 20); + if(world.getTotalWorldTime() % freq == entity.getEntityId() % freq) { world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:player.cough", 1.0F, 1.0F); @@ -416,6 +427,10 @@ public class EntityEffectHandler { } private static void handleOil(EntityLivingBase entity) { + + if(entity.worldObj.isRemote) + return; + int oil = HbmLivingProps.getOil(entity); if(oil > 0) { @@ -433,11 +448,85 @@ public class EntityEffectHandler { nbt.setInteger("count", 1); nbt.setInteger("block", Block.getIdFromBlock(Blocks.coal_block)); nbt.setInteger("entity", entity.getEntityId()); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); } } } + private static void handlePollution(EntityLivingBase entity) { + + if(!RadiationConfig.enablePollution) return; + + if(RadiationConfig.enablePoison && !ArmorRegistry.hasProtection(entity, 3, HazardClass.GAS_CORROSIVE) && entity.ticksExisted % 60 == 0) { + + float poison = PollutionHandler.getPollution(entity.worldObj, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY + entity.getEyeHeight()), (int) Math.floor(entity.posZ), PollutionType.POISON); + + if(poison > 10) { + + if(poison < 25) { + entity.addPotionEffect(new PotionEffect(Potion.poison.id, 100, 0)); + } else if(poison < 50) { + entity.addPotionEffect(new PotionEffect(Potion.poison.id, 100, 1)); + } else { + entity.addPotionEffect(new PotionEffect(Potion.wither.id, 100, 2)); + } + } + } + + if(RadiationConfig.enableLeadPoisoning && !ArmorRegistry.hasProtection(entity, 3, HazardClass.PARTICLE_FINE) && entity.ticksExisted % 60 == 0) { + + float poison = PollutionHandler.getPollution(entity.worldObj, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY + entity.getEyeHeight()), (int) Math.floor(entity.posZ), PollutionType.HEAVYMETAL); + + if(poison > 25) { + + if(poison < 50) { + entity.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 0)); + } else if(poison < 75) { + entity.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 2)); + } else { + entity.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 2)); + } + } + } + } + + private static void handleTemperature(Entity entity) { + + if(!(entity instanceof EntityLivingBase)) return; + if(entity.worldObj.isRemote) return; + + EntityLivingBase living = (EntityLivingBase) entity; + int temp = HbmLivingProps.getTemperature(living); + + if(temp < 0) HbmLivingProps.setTemperature(living, temp + Math.min(-temp, 5)); + if(temp > 0) HbmLivingProps.setTemperature(living, temp - Math.min(temp, 5)); + + if(HbmLivingProps.isFrozen(living)) { + living.motionX = 0; + living.motionZ = 0; + living.motionY = Math.min(living.motionY, 0); + + if(entity.ticksExisted % 5 == 0) { + NBTTagCompound nbt0 = new NBTTagCompound(); + nbt0.setString("type", "sweat"); + nbt0.setInteger("count", 1); + nbt0.setInteger("block", Block.getIdFromBlock(Blocks.snow)); + nbt0.setInteger("entity", entity.getEntityId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt0, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); + + if(entity instanceof EntityPlayerMP) { + NBTTagCompound nbt1 = new NBTTagCompound(); + nbt1.setString("type", "frozen"); + PacketDispatcher.wrapper.sendTo(new AuxParticlePacketNT(nbt1, 0, 0, 0), (EntityPlayerMP) entity); + } + } + } + + if(HbmLivingProps.isBurning(living)) { + living.setFire(1); + } + } + private static void handleDashing(Entity entity) { //AAAAAAAAAAAAAAAAAAAAEEEEEEEEEEEEEEEEEEEE @@ -480,16 +569,7 @@ public class EntityEffectHandler { int dashCount = armorDashCount + armorModDashCount; - boolean dashActivated = false; - - - if(!GeneralConfig.enableCustomDashKeybind) { - dashActivated = !player.capabilities.isFlying && player.isSneaking(); - } else { - dashActivated = props.getKeyPressed(EnumKeybind.DASH); - } - - //System.out.println(dashCount); + boolean dashActivated = props.getKeyPressed(EnumKeybind.DASH); if(dashCount * 30 < props.getStamina()) props.setStamina(dashCount * 30); @@ -554,4 +634,9 @@ public class EntityEffectHandler { props.plinkCooldown--; } } + + private static boolean canVomit(Entity e) { + if(e.isCreatureType(EnumCreatureType.waterCreature, false)) return false; + return true; + } } diff --git a/src/main/java/com/hbm/handler/FuelHandler.java b/src/main/java/com/hbm/handler/FuelHandler.java index af8f911e7..18442a5a2 100644 --- a/src/main/java/com/hbm/handler/FuelHandler.java +++ b/src/main/java/com/hbm/handler/FuelHandler.java @@ -51,6 +51,17 @@ public class FuelHandler implements IFuelHandler { } } + if(fuel.getItem() == ModItems.powder_ash) { + int meta = fuel.getItemDamage(); + switch(meta) { + case 0: return single / 2; + case 1: return single; + case 2: return single / 2; + case 3: return single; + case 4: return single / 2; + } + } + return 0; } diff --git a/src/main/java/com/hbm/handler/GunConfiguration.java b/src/main/java/com/hbm/handler/GunConfiguration.java index 43a21ce01..97cb7b3a5 100644 --- a/src/main/java/com/hbm/handler/GunConfiguration.java +++ b/src/main/java/com/hbm/handler/GunConfiguration.java @@ -25,6 +25,8 @@ public class GunConfiguration implements Cloneable { public int rateOfFire; //amount of bullets fired per delay passed public int roundsPerCycle; + /** Amount of rounds per burst, irrelevant if not a burst fire weapon**/ + public int roundsPerBurst; //0 = normal, 1 = release, 2 = both public int gunMode; //0 = manual, 1 = automatic @@ -46,7 +48,7 @@ public class GunConfiguration implements Cloneable { //how long the reload animation will play //MUST BE GREATER THAN ZERO ! ! ! public int reloadDuration; - //duration of every animation cycle + //duration of every animation cycle, used also for how quickly a burst fire rifle can fire public int firingDuration; //sound path to the reload sound public String reloadSound = ""; @@ -94,6 +96,7 @@ public class GunConfiguration implements Cloneable { public static final int FIRE_MANUAL = 0; public static final int FIRE_AUTO = 1; + public static final int FIRE_BURST = 2; public static final int RELOAD_NONE = 0; public static final int RELOAD_FULL = 1; @@ -105,6 +108,7 @@ public class GunConfiguration implements Cloneable { public static final String RSOUND_SHOTGUN = "hbm:weapon.shotgunReload"; public static final String RSOUND_LAUNCHER = "hbm:weapon.rpgReload"; public static final String RSOUND_GRENADE = "hbm:weapon.hkReload"; + public static final String RSOUND_GRENADE_NEW = "hbm:weapon.glReload"; public static final String RSOUND_FATMAN = "hbm:weapon.fatmanReload"; public GunConfiguration silenced() { diff --git a/src/main/java/com/hbm/handler/HTTPHandler.java b/src/main/java/com/hbm/handler/HTTPHandler.java index e12832267..4efc054f4 100644 --- a/src/main/java/com/hbm/handler/HTTPHandler.java +++ b/src/main/java/com/hbm/handler/HTTPHandler.java @@ -17,15 +17,22 @@ public class HTTPHandler { public static String versionNumber = ""; public static void loadStats() { - - try { - - loadVersion(); - loadSoyuz(); - - } catch(IOException e) { - MainRegistry.logger.warn("Version checker failed!"); - } + + Thread versionChecker = new Thread("NTM Version Checker") { + + @Override + public void run() { + try { + loadVersion(); + loadSoyuz(); + } catch(IOException e) { + MainRegistry.logger.warn("Version checker failed!"); + } + } + + }; + + versionChecker.start(); } private static void loadVersion() throws IOException { diff --git a/src/main/java/com/hbm/handler/HazmatRegistry.java b/src/main/java/com/hbm/handler/HazmatRegistry.java index 67bc7c955..5bffe35cb 100644 --- a/src/main/java/com/hbm/handler/HazmatRegistry.java +++ b/src/main/java/com/hbm/handler/HazmatRegistry.java @@ -53,8 +53,10 @@ public class HazmatRegistry { double t45 = 1D; // 90% double ajr = 1.3D; // 95% double bj = 1D; // 90% + double env = 1.0D; // 99% double hev = 2.3D; // 99.5% double rpa = 2D; // 99% + double trench = 1D; // 90% double fau = 4D; // 99.99% double dns = 5D; // 99.999% double security = 0.825D; // 85% @@ -108,6 +110,11 @@ public class HazmatRegistry { HazmatRegistry.registerHazmat(ModItems.steamsuit_legs, 1.3 * legs); HazmatRegistry.registerHazmat(ModItems.steamsuit_boots, 1.3 * boots); + HazmatRegistry.registerHazmat(ModItems.envsuit_helmet, env * helmet); + HazmatRegistry.registerHazmat(ModItems.envsuit_plate, env * chest); + HazmatRegistry.registerHazmat(ModItems.envsuit_legs, env * legs); + HazmatRegistry.registerHazmat(ModItems.envsuit_boots, env * boots); + HazmatRegistry.registerHazmat(ModItems.hev_helmet, hev * helmet); HazmatRegistry.registerHazmat(ModItems.hev_plate, hev * chest); HazmatRegistry.registerHazmat(ModItems.hev_legs, hev * legs); @@ -118,6 +125,11 @@ public class HazmatRegistry { HazmatRegistry.registerHazmat(ModItems.rpa_legs, rpa * legs); HazmatRegistry.registerHazmat(ModItems.rpa_boots, rpa * boots); + HazmatRegistry.registerHazmat(ModItems.trenchmaster_helmet, trench * helmet); + HazmatRegistry.registerHazmat(ModItems.trenchmaster_plate, trench * chest); + HazmatRegistry.registerHazmat(ModItems.trenchmaster_legs, trench * legs); + HazmatRegistry.registerHazmat(ModItems.trenchmaster_boots, trench * boots); + HazmatRegistry.registerHazmat(ModItems.fau_helmet, fau * helmet); HazmatRegistry.registerHazmat(ModItems.fau_plate, fau * chest); HazmatRegistry.registerHazmat(ModItems.fau_legs, fau * legs); diff --git a/src/main/java/com/hbm/handler/HbmKeybinds.java b/src/main/java/com/hbm/handler/HbmKeybinds.java index 19ae602f3..6ae2507e1 100644 --- a/src/main/java/com/hbm/handler/HbmKeybinds.java +++ b/src/main/java/com/hbm/handler/HbmKeybinds.java @@ -22,7 +22,8 @@ public class HbmKeybinds { public static KeyBinding jetpackKey = new KeyBinding(category + ".toggleBack", Keyboard.KEY_C, category); public static KeyBinding hudKey = new KeyBinding(category + ".toggleHUD", Keyboard.KEY_V, category); public static KeyBinding reloadKey = new KeyBinding(category + ".reload", Keyboard.KEY_R, category); - public static KeyBinding dashKey = new KeyBinding(category + ".dash", Keyboard.KEY_F, category); + public static KeyBinding dashKey = new KeyBinding(category + ".dash", Keyboard.KEY_LSHIFT, category); + public static KeyBinding trainKey = new KeyBinding(category + ".trainInv", Keyboard.KEY_R, category); public static KeyBinding craneUpKey = new KeyBinding(category + ".craneMoveUp", Keyboard.KEY_UP, category); public static KeyBinding craneDownKey = new KeyBinding(category + ".craneMoveDown", Keyboard.KEY_DOWN, category); @@ -36,6 +37,7 @@ public class HbmKeybinds { ClientRegistry.registerKeyBinding(hudKey); ClientRegistry.registerKeyBinding(reloadKey); ClientRegistry.registerKeyBinding(dashKey); + ClientRegistry.registerKeyBinding(trainKey); ClientRegistry.registerKeyBinding(craneUpKey); ClientRegistry.registerKeyBinding(craneDownKey); @@ -69,6 +71,7 @@ public class HbmKeybinds { TOGGLE_HEAD, RELOAD, DASH, + TRAIN, CRANE_UP, CRANE_DOWN, CRANE_LEFT, diff --git a/src/main/java/com/hbm/handler/WeaponAbility.java b/src/main/java/com/hbm/handler/WeaponAbility.java index 60a8ae6b7..11e2621b3 100644 --- a/src/main/java/com/hbm/handler/WeaponAbility.java +++ b/src/main/java/com/hbm/handler/WeaponAbility.java @@ -2,14 +2,12 @@ package com.hbm.handler; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockBobble.BobbleType; -import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; import com.hbm.items.tool.IItemAbility; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; import com.hbm.util.ContaminationUtil; -import com.hbm.util.WeightedRandomObject; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -35,7 +33,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; -import net.minecraft.util.WeightedRandom; +import net.minecraft.util.DamageSource; import net.minecraft.world.World; public abstract class WeaponAbility { @@ -86,6 +84,7 @@ public abstract class WeaponAbility { EntityLivingBase living = (EntityLivingBase) victim; living.setHealth(living.getHealth() - amount); + if(living.getHealth() <= 0) living.onDeath(DamageSource.magic); player.heal(amount); } } @@ -206,28 +205,10 @@ public abstract class WeaponAbility { if(living.getHealth() <= 0.0F) { - WeightedRandomObject[] ammo = new WeightedRandomObject[] { - new WeightedRandomObject(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.STOCK), 10), - new WeightedRandomObject(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.SHRAPNEL), 5), - new WeightedRandomObject(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.STOCK), 10), - new WeightedRandomObject(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.FLECHETTE), 5), - new WeightedRandomObject(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.SLUG), 5), - new WeightedRandomObject(ModItems.ammo_9mm.stackFromEnum(Ammo9mm.STOCK), 10), - new WeightedRandomObject(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.STOCK), 10), - new WeightedRandomObject(ModItems.ammo_556.stackFromEnum(Ammo556mm.STOCK), 10), - new WeightedRandomObject(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE), 10), - new WeightedRandomObject(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.STOCK), 3), - new WeightedRandomObject(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.STOCK), 3), - new WeightedRandomObject(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.STOCK), 1), - new WeightedRandomObject(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.GLARE), 1), - new WeightedRandomObject(new ItemStack(ModItems.syringe_metal_stimpak), 20), - }; - int count = Math.min((int)Math.ceil(living.getMaxHealth() / divider), 250); //safeguard to prevent funnies from bosses with obscene health for(int i = 0; i < count; i++) { - - living.entityDropItem(((WeightedRandomObject)WeightedRandom.getRandomItem(living.getRNG(), ammo)).asStack(), 1); + living.entityDropItem(new ItemStack(ModItems.nitra_small), 1); world.spawnEntityInWorld(new EntityXPOrb(world, living.posX, living.posY, living.posZ, 1)); } diff --git a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java index c8e3bebd0..9e1e8bc13 100644 --- a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java @@ -4,13 +4,12 @@ import java.util.List; import java.util.Random; import com.hbm.entity.particle.EntityBSmokeFX; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseNT.*; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.explosion.ExplosionNukeSmall.MukeParams; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; @@ -144,10 +143,10 @@ public class BulletConfigFactory { bullet.leadChance = 0; bullet.vPFX = "reddust"; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(bullet.worldObj.isRemote) return; @@ -164,9 +163,10 @@ public class BulletConfigFactory { Vec3 motion = Vec3.createVectorHelper(bullet.posX - dx, bullet.posY - dy, bullet.posZ - dz); motion = motion.normalize(); - EntityBulletBase bolt = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.R556_FLECHETTE_DU); + EntityBulletBaseNT bolt = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.R556_FLECHETTE_DU); bolt.setPosition(dx, dy, dz); bolt.setThrowableHeading(motion.xCoord, motion.yCoord, motion.zCoord, 0.5F, 0.1F); + bolt.setThrower(bullet.getThrower()); bullet.worldObj.spawnEntityInWorld(bolt); if(i < 30) { @@ -310,12 +310,19 @@ public class BulletConfigFactory { } } - public static IBulletImpactBehavior getPhosphorousEffect(final int radius, final int duration, final int count, final double motion, float hazeChance) { + public static void makeFlechette(BulletConfiguration bullet) { + + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + bulletnt.getStuck(x, y, z, sideHit); + }; + } + + public static IBulletImpactBehaviorNT getPhosphorousEffect(final int radius, final int duration, final int count, final double motion, float hazeChance) { - IBulletImpactBehavior impact = new IBulletImpactBehavior() { + IBulletImpactBehaviorNT impact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { List hit = bullet.worldObj.getEntitiesWithinAABBExcludingEntity(bullet, AxisAlignedBB.getBoundingBox(bullet.posX - radius, bullet.posY - radius, bullet.posZ - radius, bullet.posX + radius, bullet.posY + radius, bullet.posZ + radius)); @@ -352,12 +359,12 @@ public class BulletConfigFactory { return impact; } - public static IBulletImpactBehavior getGasEffect(final int radius, final int duration) { + public static IBulletImpactBehaviorNT getGasEffect(final int radius, final int duration) { - IBulletImpactBehavior impact = new IBulletImpactBehavior() { + IBulletImpactBehaviorNT impact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { List hit = bullet.worldObj.getEntitiesWithinAABBExcludingEntity(bullet, AxisAlignedBB.getBoundingBox(bullet.posX - radius, bullet.posY - radius, bullet.posZ - radius, bullet.posX + radius, bullet.posY + radius, bullet.posZ + radius)); @@ -401,20 +408,20 @@ public class BulletConfigFactory { return impact; } - public static IBulletUpdateBehavior getLaserSteering() { + public static IBulletUpdateBehaviorNT getLaserSteering() { - IBulletUpdateBehavior onUpdate = new IBulletUpdateBehavior() { + IBulletUpdateBehaviorNT onUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { - if(bullet.shooter == null || !(bullet.shooter instanceof EntityPlayer)) + if(bullet.getThrower() == null || !(bullet.getThrower() instanceof EntityPlayer)) return; - if(Vec3.createVectorHelper(bullet.posX - bullet.shooter.posX, bullet.posY - bullet.shooter.posY, bullet.posZ - bullet.shooter.posZ).lengthVector() > 100) + if(Vec3.createVectorHelper(bullet.posX - bullet.getThrower().posX, bullet.posY - bullet.getThrower().posY, bullet.posZ - bullet.getThrower().posZ).lengthVector() > 100) return; - MovingObjectPosition mop = Library.rayTrace((EntityPlayer)bullet.shooter, 200, 1); + MovingObjectPosition mop = Library.rayTrace((EntityPlayer)bullet.getThrower(), 200, 1); if(mop == null || mop.hitVec == null) return; @@ -438,12 +445,12 @@ public class BulletConfigFactory { return onUpdate; } - public static IBulletUpdateBehavior getHomingBehavior(final double range, final double angle) { - - IBulletUpdateBehavior onUpdate = new IBulletUpdateBehavior() { + public static IBulletUpdateBehaviorNT getHomingBehavior(final double range, final double angle) { + + IBulletUpdateBehaviorNT onUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -458,7 +465,6 @@ public class BulletConfigFactory { Vec3 delta = Vec3.createVectorHelper(target.posX - bullet.posX, target.posY + target.height / 2 - bullet.posY, target.posZ - bullet.posZ); delta = delta.normalize(); - double vel = Vec3.createVectorHelper(bullet.motionX, bullet.motionY, bullet.motionZ).lengthVector(); bullet.motionX = delta.xCoord * vel; @@ -467,7 +473,7 @@ public class BulletConfigFactory { } } - private void chooseTarget(EntityBulletBase bullet) { + private void chooseTarget(EntityBulletBaseNT bullet) { List entities = bullet.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, bullet.boundingBox.expand(range, range, range)); @@ -478,7 +484,7 @@ public class BulletConfigFactory { for(EntityLivingBase e : entities) { - if(!e.isEntityAlive() || e == bullet.shooter) + if(!e.isEntityAlive() || e == bullet.getThrower()) continue; Vec3 delta = Vec3.createVectorHelper(e.posX - bullet.posX, e.posY + e.height / 2 - bullet.posY, e.posZ - bullet.posZ); @@ -493,6 +499,10 @@ public class BulletConfigFactory { double deltaAngle = BobMathUtil.getCrossAngle(mot, delta); if(deltaAngle < targetAngle) { + //Checks if the bullet is not already inside the entity's bounding box, so it doesn't pick the same target + if(bullet.getConfig().doesPenetrate && bullet.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, bullet.boundingBox.expand(2, 2, 2)) == null) { + continue; + } target = e; targetAngle = deltaAngle; } @@ -507,4 +517,9 @@ public class BulletConfigFactory { return onUpdate; } + /** Resets the bullet's target **/ + public static IBulletHurtBehaviorNT getPenHomingBehavior(){ + return (bullet, hit) -> bullet.getEntityData().setInteger("homingTarget", 0); + } + } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java index e5f851c48..424deacfc 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java @@ -2,12 +2,9 @@ package com.hbm.handler.guncfg; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHurtBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.Ammo12Gauge; import com.hbm.items.ModItems; @@ -234,6 +231,72 @@ public class Gun12GaugeFactory { return config; } + + public static GunConfiguration getBenelliConfig() { + + GunConfiguration config = getUboinikConfig(); + + config.gunMode = 0; + config.firingMode = 1; + config.rateOfFire = 5; + config.ammoCap = 8; + config.reloadDuration = 8; + config.crosshair = Crosshair.CIRCLE; + config.hasSights = true; + config.durability = 250000; + config.allowsInfinity = true; + config.firingSound = "hbm:weapon.deagleShoot"; + config.firingPitch = 0.75F; + config.reloadType = 2; + config.reloadSoundEnd = true; + + config.animations.put(AnimType.CYCLE, new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(6.25, 0.25, 2.5, 55)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 55)) + ) + .addBus("EJECT", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 25)) + .addKeyframe(new BusAnimationKeyframe(25, 0, 0, 100)) + ) + ); + + config.animations.put(AnimType.RELOAD, new BusAnimation() + .addBus("RELOAD", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(60, 0, -10, 400)) + .addKeyframe(new BusAnimationKeyframe(60, 125, -10, 200)) + .addKeyframe(new BusAnimationKeyframe(60, 125, -10, 300)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 300)) + ) + .addBus("PUMP", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 900)) + .addKeyframe(new BusAnimationKeyframe(10, 0, 0, 200)) + .addKeyframe(new BusAnimationKeyframe()) + ) + ); + + config.name = "benelli"; + config.manufacturer = EnumGunManufacturer.BENELLI; + config.comment.add("Eat your heart out SPAS-12"); + config.config = HbmCollection.g12; + + config.ejector = EJECTOR_BENELLI; + + return config; + } + + public static GunConfiguration getBenelliModConfig() { + + GunConfiguration config = getBenelliConfig(); + + config.reloadType = 1; + config.ammoCap = 24; + config.reloadDuration = 20; + config.reloadSound = config.RSOUND_MAG; + config.reloadSoundEnd = true; + config.name += "Drum"; + return config; + } public static BulletConfiguration get12GaugeConfig() { @@ -306,14 +369,10 @@ public class Gun12GaugeFactory { bullet.dmgMax = 500; bullet.leadChance = 50; - bullet.bHurt = new IBulletHurtBehavior() { - - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { + bullet.bntHurt = (bulletnt, hit) -> { - if(hit instanceof EntityLivingBase) - ((EntityLivingBase)hit).addPotionEffect(new PotionEffect(HbmPotion.bang.id, 20, 0)); - } + if(hit instanceof EntityLivingBase) + ((EntityLivingBase)hit).addPotionEffect(new PotionEffect(HbmPotion.bang.id, 20, 0)); }; @@ -347,38 +406,34 @@ public class Gun12GaugeFactory { bullet.spentCasing = CASING12GAUGE.clone().register("12GaPerc").setColor(0x9E1616, SpentCasing.COLOR_CASE_12GA).setupSmoke(1F, 0.5D, 60, 40); - bullet.bUpdate = new IBulletUpdateBehavior() { - - @Override - public void behaveUpdate(EntityBulletBase bullet) { + bullet.bntUpdate = (bulletnt) -> { + + if(!bulletnt.worldObj.isRemote) { + + Vec3 vec = Vec3.createVectorHelper(bulletnt.motionX, bulletnt.motionY, bulletnt.motionZ); + double radius = 4; + double x = bulletnt.posX + vec.xCoord; + double y = bulletnt.posY + vec.yCoord; + double z = bulletnt.posZ + vec.zCoord; + AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(x, y, z, x, y, z).expand(radius, radius, radius); + List list = bulletnt.worldObj.getEntitiesWithinAABBExcludingEntity(bulletnt.getThrower(), aabb); - if(!bullet.worldObj.isRemote) { - - Vec3 vec = Vec3.createVectorHelper(bullet.motionX, bullet.motionY, bullet.motionZ); - double radius = 4; - double x = bullet.posX + vec.xCoord; - double y = bullet.posY + vec.yCoord; - double z = bullet.posZ + vec.zCoord; - AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(x, y, z, x, y, z).expand(radius, radius, radius); - List list = bullet.worldObj.getEntitiesWithinAABBExcludingEntity(bullet.shooter, aabb); - - for(Entity e : list) { - DamageSource source = bullet.shooter instanceof EntityPlayer ? DamageSource.causePlayerDamage((EntityPlayer) bullet.shooter) : DamageSource.magic; - e.attackEntityFrom(source, 30F); - } - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "plasmablast"); - data.setFloat("r", 0.75F); - data.setFloat("g", 0.75F); - data.setFloat("b", 0.75F); - data.setFloat("pitch", (float) -bullet.rotationPitch + 90); - data.setFloat("yaw", (float) bullet.rotationYaw); - data.setFloat("scale", 2F); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(bullet.dimension, x, y, z, 100)); - - bullet.setDead(); + for(Entity e : list) { + DamageSource source = bulletnt.getThrower() instanceof EntityPlayer ? DamageSource.causePlayerDamage((EntityPlayer) bulletnt.getThrower()) : DamageSource.magic; + e.attackEntityFrom(source, 30F); } + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "plasmablast"); + data.setFloat("r", 0.75F); + data.setFloat("g", 0.75F); + data.setFloat("b", 0.75F); + data.setFloat("pitch", (float) -bulletnt.rotationPitch + 90); + data.setFloat("yaw", (float) bulletnt.rotationYaw); + data.setFloat("scale", 2F); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(bulletnt.dimension, x, y, z, 100)); + + bulletnt.setDead(); } }; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java index b99da2c21..755296329 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java @@ -78,6 +78,8 @@ public class Gun20GaugeFactory { config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; config.firingSound = "hbm:weapon.revolverShootAlt"; config.firingPitch = 0.75F; + config.hasSights = true; + config.zoomFOV = 0.75F; config.name = "win1887"; config.manufacturer = EnumGunManufacturer.WINCHESTER; @@ -95,6 +97,8 @@ public class Gun20GaugeFactory { config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; config.firingSound = "hbm:weapon.revolverShootAlt"; config.firingPitch = 0.75F; + config.hasSights = true; + config.zoomFOV = 0.75F; config.name = "win1887Inox"; config.manufacturer = EnumGunManufacturer.WINCHESTER; @@ -104,114 +108,6 @@ public class Gun20GaugeFactory { return config; } - public static GunConfiguration getBoltConfig() { - - GunConfiguration config = getShotgunConfig(); - - config.ammoCap = 1; - config.durability = 3000; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.revolverShoot"; - config.firingPitch = 0.75F; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) - ) - .addBus("LEVER_PULL", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //wait out recoil and lever flick - .addKeyframe(new BusAnimationKeyframe(-1, 0, 0, 375)) //pull back bolt - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //release bolt - ) - .addBus("LEVER_ROTATE", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) //wait out recoil - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 125)) //flick up lever in 125ms - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 750)) //pull action - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 125)) //flick down lever again - ) - ); - - config.name = "win20Inox"; - config.manufacturer = EnumGunManufacturer.WINCHESTER; - - config.config = HbmCollection.g20; - - return config; - } - - public static GunConfiguration getBoltGreenConfig() { - - GunConfiguration config = getShotgunConfig(); - - config.ammoCap = 1; - config.durability = 2500; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.revolverShoot"; - config.firingPitch = 0.75F; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) - ) - .addBus("LEVER_PULL", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //wait out recoil and lever flick - .addKeyframe(new BusAnimationKeyframe(-1, 0, 0, 375)) //pull back bolt - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //release bolt - ) - .addBus("LEVER_ROTATE", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) //wait out recoil - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 125)) //flick up lever in 125ms - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 750)) //pull action - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 125)) //flick down lever again - ) - ); - - config.name = "win20Poly"; - config.manufacturer = EnumGunManufacturer.WINCHESTER; - - config.config = HbmCollection.g20; - - return config; - } - - public static GunConfiguration getBoltSaturniteConfig() { - - GunConfiguration config = getShotgunConfig(); - - config.ammoCap = 1; - config.durability = 4000; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.revolverShoot"; - config.firingPitch = 0.75F; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) - ) - .addBus("LEVER_PULL", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //wait out recoil and lever flick - .addKeyframe(new BusAnimationKeyframe(-1, 0, 0, 375)) //pull back bolt - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //release bolt - ) - .addBus("LEVER_ROTATE", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) //wait out recoil - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 125)) //flick up lever in 125ms - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 750)) //pull action - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 125)) //flick down lever again - ) - ); - - config.name = "win20Satur"; - config.manufacturer = EnumGunManufacturer.WINCHESTER_BIGMT; - - config.config = HbmCollection.g20; - - return config; - } - public static BulletConfiguration get20GaugeConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); @@ -251,6 +147,7 @@ public class Gun20GaugeFactory { bullet.style = BulletConfiguration.STYLE_FLECHETTE; bullet.HBRC = 2; bullet.LBRC = 95; + BulletConfigFactory.makeFlechette(bullet); bullet.spentCasing = CASING20GAUGE.clone().register("20GaFlech").setColor(0x2847FF, SpentCasing.COLOR_CASE_BRASS); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java index 05ad9902a..515b1b8bf 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java @@ -5,14 +5,11 @@ import java.util.ArrayList; import com.hbm.entity.particle.EntityBSmokeFX; import com.hbm.entity.projectile.EntityBoxcar; import com.hbm.entity.projectile.EntityBuilding; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.entity.projectile.EntityDuchessGambit; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHitBehavior; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.Ammo44Magnum; @@ -27,7 +24,6 @@ import com.hbm.potion.HbmPotion; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; import net.minecraft.util.ResourceLocation; @@ -227,19 +223,15 @@ public class Gun44MagnumFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); - } + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); }; bullet.spentCasing = CASING44.clone().register("44Phos"); @@ -272,27 +264,21 @@ public class Gun44MagnumFactory { bullet.wear = 25; bullet.doesPenetrate = false; - bullet.bHit = new IBulletHitBehavior() { - - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { + bullet.bntHit = (bulletnt, hit) -> { - if(!bullet.worldObj.isRemote) { - EntityBoxcar pippo = new EntityBoxcar(bullet.worldObj); - pippo.posX = hit.posX; - pippo.posY = hit.posY + 50; - pippo.posZ = hit.posZ; - - for(int j = 0; j < 50; j++) { - EntityBSmokeFX fx = new EntityBSmokeFX(bullet.worldObj, pippo.posX + (bullet.worldObj.rand.nextDouble() - 0.5) * 4, pippo.posY + (bullet.worldObj.rand.nextDouble() - 0.5) * 12, pippo.posZ + (bullet.worldObj.rand.nextDouble() - 0.5) * 4, 0, 0, 0); - bullet.worldObj.spawnEntityInWorld(fx); - } - bullet.worldObj.spawnEntityInWorld(pippo); - - bullet.worldObj.playSoundEffect(pippo.posX, - pippo.posY + 50, - pippo.posZ, "hbm:alarm.trainHorn", 100F, 1F); + if(!bulletnt.worldObj.isRemote) { + EntityBoxcar pippo = new EntityBoxcar(bulletnt.worldObj); + pippo.posX = hit.posX; + pippo.posY = hit.posY + 50; + pippo.posZ = hit.posZ; + + for(int j = 0; j < 50; j++) { + EntityBSmokeFX fx = new EntityBSmokeFX(bulletnt.worldObj, pippo.posX + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 4, pippo.posY + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 12, pippo.posZ + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 4, 0, 0, 0); + bulletnt.worldObj.spawnEntityInWorld(fx); } + bulletnt.worldObj.spawnEntityInWorld(pippo); + + bulletnt.worldObj.playSoundEffect(pippo.posX, pippo.posY + 50, pippo.posZ, "hbm:alarm.trainHorn", 100F, 1F); } }; @@ -311,29 +297,22 @@ public class Gun44MagnumFactory { bullet.wear = 25; bullet.doesPenetrate = false; - bullet.bHit = new IBulletHitBehavior() { - - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { + bullet.bntHit = (bulletnt, hit) -> { - if(!bullet.worldObj.isRemote) { - EntityDuchessGambit pippo = new EntityDuchessGambit(bullet.worldObj); - pippo.posX = hit.posX; - pippo.posY = hit.posY + 50; - pippo.posZ = hit.posZ; - - for(int j = 0; j < 150; j++) { - EntityBSmokeFX fx = new EntityBSmokeFX(bullet.worldObj, pippo.posX + (bullet.worldObj.rand.nextDouble() - 0.5) * 7, pippo.posY + (bullet.worldObj.rand.nextDouble() - 0.5) * 8, pippo.posZ + (bullet.worldObj.rand.nextDouble() - 0.5) * 18, 0, 0, 0); - bullet.worldObj.spawnEntityInWorld(fx); - } - bullet.worldObj.spawnEntityInWorld(pippo); - - bullet.worldObj.playSoundEffect(pippo.posX, - pippo.posY + 50, - pippo.posZ, "hbm:weapon.boat", 100F, 1F); + if(!bulletnt.worldObj.isRemote) { + EntityDuchessGambit pippo = new EntityDuchessGambit(bulletnt.worldObj); + pippo.posX = hit.posX; + pippo.posY = hit.posY + 50; + pippo.posZ = hit.posZ; + + for(int j = 0; j < 150; j++) { + EntityBSmokeFX fx = new EntityBSmokeFX(bulletnt.worldObj, pippo.posX + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 7, pippo.posY + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 8, pippo.posZ + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 18, 0, 0, 0); + bulletnt.worldObj.spawnEntityInWorld(fx); } + bulletnt.worldObj.spawnEntityInWorld(pippo); + + bulletnt.worldObj.playSoundEffect(pippo.posX, pippo.posY + 50, pippo.posZ, "hbm:weapon.boat", 100F, 1F); } - }; bullet.spentCasing = CASING44.clone().register("44BJ").setColor(0x632B2C); @@ -351,29 +330,22 @@ public class Gun44MagnumFactory { bullet.wear = 25; bullet.doesPenetrate = false; - bullet.bHit = new IBulletHitBehavior() { - - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { + bullet.bntHit = (bulletnt, hit) -> { - if(!bullet.worldObj.isRemote) { - EntityBuilding pippo = new EntityBuilding(bullet.worldObj); - pippo.posX = hit.posX; - pippo.posY = hit.posY + 50; - pippo.posZ = hit.posZ; - - for(int j = 0; j < 150; j++) { - EntityBSmokeFX fx = new EntityBSmokeFX(bullet.worldObj, pippo.posX + (bullet.worldObj.rand.nextDouble() - 0.5) * 15, pippo.posY + (bullet.worldObj.rand.nextDouble() - 0.5) * 15, pippo.posZ + (bullet.worldObj.rand.nextDouble() - 0.5) * 15, 0, 0, 0); - bullet.worldObj.spawnEntityInWorld(fx); - } - bullet.worldObj.spawnEntityInWorld(pippo); - - bullet.worldObj.playSoundEffect(pippo.posX, - pippo.posY + 50, - pippo.posZ, "hbm:block.debris", 100F, 1F); + if(!bulletnt.worldObj.isRemote) { + EntityBuilding pippo = new EntityBuilding(bulletnt.worldObj); + pippo.posX = hit.posX; + pippo.posY = hit.posY + 50; + pippo.posZ = hit.posZ; + + for(int j = 0; j < 150; j++) { + EntityBSmokeFX fx = new EntityBSmokeFX(bulletnt.worldObj, pippo.posX + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 15, pippo.posY + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 15, pippo.posZ + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 15, 0, 0, 0); + bulletnt.worldObj.spawnEntityInWorld(fx); } + bulletnt.worldObj.spawnEntityInWorld(pippo); + + bulletnt.worldObj.playSoundEffect(pippo.posX, pippo.posY + 50, pippo.posZ, "hbm:block.debris", 100F, 1F); } - }; bullet.spentCasing = CASING44.clone().register("44Silver").setColor(0x2B5963); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java index 21e3db275..644d37457 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java @@ -62,14 +62,16 @@ public class Gun45ACPFactory { config.firingMode = GunConfiguration.FIRE_MANUAL; config.reloadDuration = 10; config.firingDuration = 8; - config.ammoCap = 16; + config.ammoCap = 21; config.durability = 10000; config.reloadType = 1; config.allowsInfinity = true; config.hasSights = true; + config.absoluteFOV = true; + config.zoomFOV = 0.5F; config.crosshair = Crosshair.CROSS; - config.reloadSound = "hbm:weapon.pistolReloadPB3"; - config.firingSound = "hbm:weapon.pistolFirePB3"; + config.reloadSound = GunConfiguration.RSOUND_MAG; + config.firingSound = "hbm:weapon.deagleShoot"; config.reloadSoundEnd = true; config.name = "uacPistol"; @@ -89,6 +91,17 @@ public class Gun45ACPFactory { return config; } + public static GunConfiguration getUACPistolBurstConfig() { + GunConfiguration config = getUACPistolConfig(); + config.rateOfFire = 5; + config.roundsPerBurst = 3; + config.firingDuration = 2; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_BURST; + + return config; + } + public static GunConfiguration getUACSMGConfig() { GunConfiguration config = new GunConfiguration(); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java index 191867b61..31447e131 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java @@ -3,7 +3,7 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT.ExAttrib; @@ -12,9 +12,6 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHurtBehavior; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; @@ -33,7 +30,6 @@ import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -183,6 +179,7 @@ public class Gun4GaugeFactory { bullet.style = BulletConfiguration.STYLE_FLECHETTE; bullet.HBRC = 2; bullet.LBRC = 95; + BulletConfigFactory.makeFlechette(bullet); bullet.spentCasing = CASING4GAUGE.clone().register("4GaFlech").setColor(0x1537FF, SpentCasing.COLOR_CASE_4GA); @@ -209,19 +206,15 @@ public class Gun4GaugeFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); - } + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); }; bullet.spentCasing = CASING4GAUGE.clone().register("4GaPhos").setColor(0xF6871A, SpentCasing.COLOR_CASE_4GA); @@ -259,22 +252,18 @@ public class Gun4GaugeFactory { bullet.trail = 1; bullet.explosive = 0.0F; - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - ExplosionNT explosion = new ExplosionNT(bullet.worldObj, null, bullet.posX, bullet.posY, bullet.posZ, 4); - explosion.atttributes.add(ExAttrib.ALLDROP); - explosion.atttributes.add(ExAttrib.NOHURT); - explosion.doExplosionA(); - explosion.doExplosionB(false); - - ExplosionLarge.spawnParticles(bullet.worldObj, bullet.posX, bullet.posY, bullet.posZ, 15); - } + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + + if(bulletnt.worldObj.isRemote) + return; + + ExplosionNT explosion = new ExplosionNT(bulletnt.worldObj, null, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 4); + explosion.atttributes.add(ExAttrib.ALLDROP); + explosion.atttributes.add(ExAttrib.NOHURT); + explosion.doExplosionA(); + explosion.doExplosionB(false); + + ExplosionLarge.spawnParticles(bulletnt.worldObj, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 15); }; bullet.spentCasing = CASING4GAUGE.clone().register("4GaSem").setColor(0x5C5C5C, SpentCasing.COLOR_CASE_4GA); @@ -295,21 +284,17 @@ public class Gun4GaugeFactory { bullet.trail = 1; bullet.explosive = 0.0F; - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - ExplosionNT explosion = new ExplosionNT(bullet.worldObj, null, bullet.posX, bullet.posY, bullet.posZ, 6); - explosion.atttributes.add(ExAttrib.BALEFIRE); - explosion.doExplosionA(); - explosion.doExplosionB(false); - - ExplosionLarge.spawnParticles(bullet.worldObj, bullet.posX, bullet.posY, bullet.posZ, 30); - } + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + + if(bulletnt.worldObj.isRemote) + return; + + ExplosionNT explosion = new ExplosionNT(bulletnt.worldObj, null, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 6); + explosion.atttributes.add(ExAttrib.BALEFIRE); + explosion.doExplosionA(); + explosion.doExplosionB(false); + + ExplosionLarge.spawnParticles(bulletnt.worldObj, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 30); }; bullet.spentCasing = CASING4GAUGE.clone().register("4GaBale").setColor(0x7BFF44, SpentCasing.COLOR_CASE_4GA); @@ -348,23 +333,20 @@ public class Gun4GaugeFactory { bullet.trail = 4; bullet.vPFX = "smoke"; - bullet.bUpdate = new IBulletUpdateBehavior() { - - @Override - public void behaveUpdate(EntityBulletBase bullet) { + bullet.bntUpdate = (bulletnt) -> { + + if(!bulletnt.worldObj.isRemote) { - if(!bullet.worldObj.isRemote) { + if(bulletnt.ticksExisted > 10) { + bulletnt.setDead(); - if(bullet.ticksExisted > 10) { - bullet.setDead(); + for(int i = 0; i < 50; i++) { - for(int i = 0; i < 50; i++) { - - EntityBulletBase bolt = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.M44_AP); - bolt.setPosition(bullet.posX, bullet.posY, bullet.posZ); - bolt.setThrowableHeading(bullet.motionX, bullet.motionY, bullet.motionZ, 0.25F, 0.1F); - bullet.worldObj.spawnEntityInWorld(bolt); - } + EntityBulletBaseNT bolt = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.M44_AP); + bolt.setPosition(bulletnt.posX, bulletnt.posY, bulletnt.posZ); + bolt.setThrowableHeading(bulletnt.motionX, bulletnt.motionY, bulletnt.motionZ, 0.25F, 0.1F); + bolt.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(bolt); } } } @@ -397,25 +379,21 @@ public class Gun4GaugeFactory { bullet.bulletsMax *= 2; bullet.leadChance = 100; - bullet.bHurt = new IBulletHurtBehavior() { - - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { + bullet.bntHurt = (bulletnt, hit) -> { + + if(bulletnt.worldObj.isRemote) + return; + + if(hit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) hit; + float f = living.getHealth(); - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - EntityLivingBase living = (EntityLivingBase) hit; - float f = living.getHealth(); + if(f > 0) { + f = Math.max(0, f - 2); + living.setHealth(f); - if(f > 0) { - f = Math.max(0, f - 2); - living.setHealth(f); - - if(f == 0) - living.onDeath(ModDamageSource.causeBulletDamage(bullet, hit)); - } + if(f == 0) + living.onDeath(ModDamageSource.causeBulletDamage(bulletnt, hit)); } } }; @@ -437,25 +415,21 @@ public class Gun4GaugeFactory { bullet.leadChance = 100; bullet.style = BulletConfiguration.STYLE_FLECHETTE; - bullet.bHurt = new IBulletHurtBehavior() { + bullet.bntHurt = (bulletnt, hit) -> { - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) hit; - - IExtendedEntityProperties prop = player.getExtendedProperties("WitcheryExtendedPlayer"); - - NBTTagCompound blank = new NBTTagCompound(); - blank.setTag("WitcheryExtendedPlayer", new NBTTagCompound()); - - if(prop != null) { - prop.loadNBTData(blank); - } + if(bulletnt.worldObj.isRemote) + return; + + if(hit instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) hit; + + IExtendedEntityProperties prop = player.getExtendedProperties("WitcheryExtendedPlayer"); + + NBTTagCompound blank = new NBTTagCompound(); + blank.setTag("WitcheryExtendedPlayer", new NBTTagCompound()); + + if(prop != null) { + prop.loadNBTData(blank); } } }; @@ -476,20 +450,16 @@ public class Gun4GaugeFactory { bullet.bulletsMax *= 2; bullet.leadChance = 0; - bullet.bHurt = new IBulletHurtBehavior() { + bullet.bntHurt = (bulletnt, hit) -> { + + if(bulletnt.worldObj.isRemote) + return; - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) hit; - - player.inventory.dropAllItems(); - player.worldObj.newExplosion(bullet.shooter, player.posX, player.posY, player.posZ, 5.0F, true, true); - } + if(hit instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) hit; + + player.inventory.dropAllItems(); + player.worldObj.newExplosion(bulletnt.getThrower(), player.posX, player.posY, player.posZ, 5.0F, true, true); } }; @@ -512,27 +482,20 @@ public class Gun4GaugeFactory { bullet.trail = 4; bullet.vPFX = "explode"; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(!bullet.worldObj.isRemote) { - - if(bullet.ticksExisted % 2 == 0) { - - List creatures = bullet.worldObj.getEntitiesWithinAABB(EntityCreature.class, bullet.boundingBox.expand(10, 10, 10)); - - for(EntityCreature creature : creatures) { - - if(creature.getClass().getCanonicalName().startsWith("net.minecraft.entity.titan")) { - BulletConfigFactory.nuclearExplosion(creature, 0, 0, 0, ExplosionNukeSmall.PARAMS_TOTS); + if(!bulletnt.worldObj.isRemote) { + if(bulletnt.ticksExisted % 2 == 0) { - bullet.worldObj.removeEntity(creature); - bullet.worldObj.unloadEntities(new ArrayList() {{ add(creature); }}); - } + List creatures = bulletnt.worldObj.getEntitiesWithinAABB(EntityCreature.class, bulletnt.boundingBox.expand(10, 10, 10)); + for(EntityCreature creature : creatures) { + + if(creature.getClass().getCanonicalName().startsWith("net.minecraft.entity.titan")) { + BulletConfigFactory.nuclearExplosion(creature, 0, 0, 0, ExplosionNukeSmall.PARAMS_TOTS); + + bulletnt.worldObj.removeEntity(creature); + bulletnt.worldObj.unloadEntities(new ArrayList() {{ add(creature); }}); } - } } } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java index c7d290c35..189ad105e 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java @@ -2,13 +2,11 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHitBehavior; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.Ammo50BMG; @@ -31,7 +29,6 @@ import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; @@ -65,7 +62,7 @@ public class Gun50BMGFactory { bullet.leadChance = 20; bullet.blockDamage = false; - bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 2.0F, false, false); + bullet.bntImpact = (projectile, x, y, z, sideHit) -> projectile.worldObj.newExplosion(projectile, x, y, z, 2.0F, false, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaStock"); @@ -79,7 +76,7 @@ public class Gun50BMGFactory { bullet.ammo.meta = 1; bullet.incendiary = 10; - bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false); + bullet.bntImpact = (projectile, x, y, z, sideHit) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaInc"); @@ -94,7 +91,7 @@ public class Gun50BMGFactory { bullet.ammo.meta = 2; bullet.explosive = 25; bullet.destroysBlocks = true; - bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 25.0F, true, false); + bullet.bntImpact = (projectile, x, y, z, sideHit) -> projectile.worldObj.newExplosion(projectile, x, y, z, 25.0F, true, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaExp"); @@ -111,6 +108,7 @@ public class Gun50BMGFactory { config.firingMode = GunConfiguration.FIRE_AUTO; config.reloadDuration = 20; config.firingDuration = 0; + config.reloadSoundEnd = false; config.ammoCap = 50; config.reloadType = GunConfiguration.RELOAD_FULL; config.allowsInfinity = true; @@ -137,10 +135,40 @@ public class Gun50BMGFactory { config.config.add(BulletConfigSyncingUtil.BMG50_SLEEK); config.ejector = EJECTOR_BMG; - + + config.animations.put(AnimType.CYCLE, new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) + ) + ); + config.animations.put(AnimType.RELOAD, new BusAnimation() + .addBus("TILT", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 125)) + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 750)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 125)) + ) + .addBus("MAG", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 1, 200)) + .addKeyframe(new BusAnimationKeyframe(1, 0, 1, 200)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200)) + ) + ); + return config; } - + + public static GunConfiguration getAR15BurstConfig(){ + GunConfiguration config = getAR15Config(); + config.rateOfFire = 4; + config.roundsPerBurst = 3; + config.firingDuration = 2; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_BURST; + + return config; + } + public static GunConfiguration getM2Config() { GunConfiguration config = getAR15Config(); @@ -267,19 +295,15 @@ public class Gun50BMGFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); - } + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); }; bullet.spentCasing = CASING50BMG.clone().register("50BMGPhos"); @@ -363,39 +387,31 @@ public class Gun50BMGFactory { bullet.leadChance = 100; bullet.doesPenetrate = false; - bullet.bHit = new IBulletHitBehavior() { + bullet.bntHit = (bulletnt, hit) -> { - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + if(bulletnt.worldObj.isRemote) + return; + + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - if(y == -1) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(bullet.posX, bullet.posY + 30 + meteor.worldObj.rand.nextInt(10), bullet.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + if(bulletnt.worldObj.isRemote) + return; + + if(y == -1) + return; + + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(bulletnt.posX, bulletnt.posY + 30 + meteor.worldObj.rand.nextInt(10), bulletnt.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; bullet.spentCasing = CASING50BMG.clone().register("50BMGIF"); @@ -412,6 +428,7 @@ public class Gun50BMGFactory { bullet.dmgMin = 50; bullet.dmgMax = 54; bullet.style = bullet.STYLE_FLECHETTE; + BulletConfigFactory.makeFlechette(bullet); bullet.spentCasing = CASING50BMG.clone().register("50BMGFlech"); @@ -427,18 +444,15 @@ public class Gun50BMGFactory { bullet.dmgMin = 60; bullet.dmgMax = 64; bullet.style = bullet.STYLE_FLECHETTE; + BulletConfigFactory.makeFlechette(bullet); - bullet.bHit = new IBulletHitBehavior() { + bullet.bntHit = (bulletnt, hit) -> { - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - ContaminationUtil.contaminate((EntityLivingBase) hit, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 100F); - } + if(bulletnt.worldObj.isRemote) + return; + + if(hit instanceof EntityLivingBase) { + ContaminationUtil.contaminate((EntityLivingBase) hit, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 100F); } }; @@ -456,18 +470,15 @@ public class Gun50BMGFactory { bullet.dmgMin = 60; bullet.dmgMax = 64; bullet.style = bullet.STYLE_FLECHETTE; + BulletConfigFactory.makeFlechette(bullet); - bullet.bHit = new IBulletHitBehavior() { + bullet.bntHit = (bulletnt, hit) -> { - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - ContaminationUtil.contaminate((EntityLivingBase) hit, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 50F); - } + if(bulletnt.worldObj.isRemote) + return; + + if(hit instanceof EntityLivingBase) { + ContaminationUtil.contaminate((EntityLivingBase) hit, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 50F); } }; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java index dec4e5b73..88c9aa190 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java @@ -2,13 +2,11 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHitBehavior; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.Ammo556mm; import com.hbm.items.ModItems; @@ -26,7 +24,6 @@ import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; @@ -185,19 +182,15 @@ public class Gun556mmFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); - } + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); }; bullet.spentCasing = CASING556.clone().register("556Phos"); @@ -261,39 +254,31 @@ public class Gun556mmFactory { bullet.leadChance = 100; bullet.doesPenetrate = false; - bullet.bHit = new IBulletHitBehavior() { + bullet.bntHit = (bulletnt, hit) -> { - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + if(bulletnt.worldObj.isRemote) + return; + + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; - - bullet.bImpact = new IBulletImpactBehavior() { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - if(y == -1) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(bullet.posX, bullet.posY + 30 + meteor.worldObj.rand.nextInt(10), bullet.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + + if(bulletnt.worldObj.isRemote) + return; + + if(y == -1) + return; + + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(bulletnt.posX, bulletnt.posY + 30 + meteor.worldObj.rand.nextInt(10), bulletnt.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; bullet.spentCasing = CASING556.clone().register("556IF"); @@ -325,6 +310,7 @@ public class Gun556mmFactory { bullet.wear = 15; bullet.style = BulletConfiguration.STYLE_FLECHETTE; bullet.doesPenetrate = false; + BulletConfigFactory.makeFlechette(bullet); bullet.spentCasing = CASING556.clone().register("556Flec"); @@ -337,6 +323,7 @@ public class Gun556mmFactory { bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE_INCENDIARY)); bullet.incendiary = 5; + BulletConfigFactory.makeFlechette(bullet); bullet.spentCasing = CASING556.clone().register("556FlecInc"); @@ -355,19 +342,15 @@ public class Gun556mmFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); - } + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); }; bullet.spentCasing = CASING556.clone().register("556FlecPhos"); @@ -402,39 +385,31 @@ public class Gun556mmFactory { bullet.leadChance = 50; bullet.doesPenetrate = false; - bullet.bHit = new IBulletHitBehavior() { + bullet.bntHit = (bulletnt, hit) -> { - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + if(bulletnt.worldObj.isRemote) + return; + + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - if(y == -1) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(bullet.posX, bullet.posY + 30 + meteor.worldObj.rand.nextInt(10), bullet.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + if(bulletnt.worldObj.isRemote) + return; + + if(y == -1) + return; + + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(bulletnt.posX, bulletnt.posY + 30 + meteor.worldObj.rand.nextInt(10), bulletnt.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; bullet.spentCasing = CASING556.clone().register("556FlecIF"); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java index 89d7f2c7c..cc05924f6 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java @@ -2,11 +2,8 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHurtBehavior; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.Ammo75Bolt; import com.hbm.items.ModItems; @@ -23,7 +20,6 @@ import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; @@ -96,25 +92,21 @@ public class Gun75BoltFactory { bullet.doesRicochet = false; bullet.explosive = 0.25F; - bullet.bHurt = new IBulletHurtBehavior() { + bullet.bntHurt = (bulletnt, hit) -> { - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - EntityLivingBase living = (EntityLivingBase) hit; - float f = living.getHealth(); - - if(f > 0) { - f = Math.max(0, f - 2); - living.setHealth(f); - - if(f == 0) - living.onDeath(ModDamageSource.lead); - } + if(bulletnt.worldObj.isRemote) + return; + + if(hit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) hit; + float f = living.getHealth(); + + if(f > 0) { + f = Math.max(0, f - 2); + living.setHealth(f); + + if(f == 0) + living.onDeath(ModDamageSource.lead); } } }; @@ -142,19 +134,15 @@ public class Gun75BoltFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); - } + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); }; return bullet; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java index d5da7444f..4dec2a175 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java @@ -9,6 +9,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.Ammo762NATO; import com.hbm.lib.HbmCollection; +import com.hbm.lib.RefStrings; import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; @@ -20,14 +21,19 @@ import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.ResourceLocation; public class Gun762mmFactory { + public static final ResourceLocation scope_bolt = new ResourceLocation(RefStrings.MODID, "textures/misc/scope_bolt.png"); + private static final CasingEjector EJECTOR_RIFLE; + private static final CasingEjector EJECTOR_BOLT; private static final SpentCasing CASING762NATO; static { EJECTOR_RIFLE = new CasingEjector().setMotion(-0.35, 0.6, 0).setOffset(-0.35, 0, 0.35).setAngleRange(0.01F, 0.03F); + EJECTOR_BOLT = new CasingEjector().setMotion(-0.35, 0.6, 0).setOffset(-0.35, 0, 0.35).setAngleRange(0.01F, 0.03F).setDelay(15); CASING762NATO = new SpentCasing(CasingType.BOTTLENECK).setScale(1.7F).setBounceMotion(0.01F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS); } @@ -157,6 +163,127 @@ public class Gun762mmFactory { return config; } + + public static GunConfiguration getBoltConfig() { + + GunConfiguration config = Gun20GaugeFactory.getShotgunConfig(); + + config.ammoCap = 5; + config.durability = 3000; + config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; + config.firingSound = "hbm:weapon.revolverShoot"; + config.firingPitch = 0.75F; + config.crosshair = Crosshair.CIRCLE; + + config.animations.put(AnimType.CYCLE, new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) + ) + .addBus("LEVER_PULL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //wait out recoil and lever flick + .addKeyframe(new BusAnimationKeyframe(-1, 0, 0, 375)) //pull back bolt + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //release bolt + ) + .addBus("LEVER_ROTATE", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) //wait out recoil + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 125)) //flick up lever in 125ms + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 750)) //pull action + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 125)) //flick down lever again + ) + ); + + config.name = "win20Inox"; + config.manufacturer = EnumGunManufacturer.WINCHESTER; + + config.ejector = EJECTOR_BOLT; + + config.config = HbmCollection.r762; + + return config; + } + + public static GunConfiguration getBoltGreenConfig() { + + GunConfiguration config = Gun20GaugeFactory.getShotgunConfig(); + + config.ammoCap = 5; + config.durability = 2500; + config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; + config.firingSound = "hbm:weapon.revolverShoot"; + config.firingPitch = 0.75F; + config.crosshair = Crosshair.CIRCLE; + + config.animations.put(AnimType.CYCLE, new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) + ) + .addBus("LEVER_PULL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //wait out recoil and lever flick + .addKeyframe(new BusAnimationKeyframe(-1, 0, 0, 375)) //pull back bolt + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //release bolt + ) + .addBus("LEVER_ROTATE", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) //wait out recoil + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 125)) //flick up lever in 125ms + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 750)) //pull action + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 125)) //flick down lever again + ) + ); + + config.name = "win20Poly"; + config.manufacturer = EnumGunManufacturer.WINCHESTER; + + config.ejector = EJECTOR_BOLT; + + config.config = HbmCollection.r762; + + return config; + } + + public static GunConfiguration getBoltSaturniteConfig() { + + GunConfiguration config = Gun20GaugeFactory.getShotgunConfig(); + + config.ammoCap = 5; + config.durability = 4000; + config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; + config.firingSound = "hbm:weapon.revolverShoot"; + config.firingPitch = 0.75F; + config.hasSights = true; + config.absoluteFOV = true; + config.zoomFOV = 0.25F; + config.scopeTexture = scope_bolt; + config.crosshair = Crosshair.CIRCLE; + + config.animations.put(AnimType.CYCLE, new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) + ) + .addBus("LEVER_PULL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //wait out recoil and lever flick + .addKeyframe(new BusAnimationKeyframe(-1, 0, 0, 375)) //pull back bolt + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //release bolt + ) + .addBus("LEVER_ROTATE", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) //wait out recoil + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 125)) //flick up lever in 125ms + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 750)) //pull action + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 125)) //flick down lever again + ) + ); + + config.name = "win20Satur"; + config.manufacturer = EnumGunManufacturer.WINCHESTER_BIGMT; + + config.ejector = EJECTOR_BOLT; + + config.config = HbmCollection.r762; + + return config; + } public static BulletConfiguration get762NATOConfig() { final BulletConfiguration bullet = Gun556mmFactory.get556Config().clone(); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java index 827950fd8..2e7c68cc4 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java @@ -44,7 +44,7 @@ public class Gun9mmFactory { config.reloadSoundEnd = false; config.name = "mp40"; - config.manufacturer = EnumGunManufacturer.NAZI; + config.manufacturer = EnumGunManufacturer.ERFURT; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.P9_NORMAL); diff --git a/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java index 42a79013e..411574bbe 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java @@ -1,9 +1,7 @@ package com.hbm.handler.guncfg; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.handler.BulletConfiguration; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.Ammo240Shell; import com.hbm.items.ModItems; @@ -86,12 +84,8 @@ public class GunCannonFactory { bullet.dmgMin = 100; bullet.dmgMax = 150; - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); - } + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); }; bullet.spentCasing = CASINNG240MM; diff --git a/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java index 70c743232..07bcc2878 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java @@ -2,12 +2,10 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHurtBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.AmmoDart; import com.hbm.items.ModItems; @@ -16,7 +14,6 @@ import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.main.MainRegistry; import com.hbm.render.util.RenderScreenOverlay.Crosshair; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.Potion; @@ -103,27 +100,23 @@ public class GunDartFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(Potion.wither.id, 60 * 20, 2)); - bullet.bHurt = new IBulletHurtBehavior() { + bullet.bntHurt = (bulletnt, hit) -> { - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) + if(bulletnt.worldObj.isRemote) + return; + + if(hit instanceof EntityPlayer) { + + if(((EntityPlayer) hit).inventory.hasItem(ModItems.ingot_meteorite_forged)) return; - - if(hit instanceof EntityPlayer) { - - if(((EntityPlayer) hit).inventory.hasItem(ModItems.ingot_meteorite_forged)) - return; - - if(bullet.shooter instanceof EntityPlayer) { - - EntityPlayer shooter = (EntityPlayer) bullet.shooter; - - if(shooter.getHeldItem() != null && shooter.getHeldItem().getItem() == ModItems.gun_darter) { - ItemGunDart.writePlayer(shooter.getHeldItem(), (EntityPlayer)hit); - shooter.playSound("random.orb", 1.0F, 1.0F); - } + + if(bulletnt.getThrower() instanceof EntityPlayer) { + + EntityPlayer shooter = (EntityPlayer) bulletnt.getThrower(); + + if(shooter.getHeldItem() != null && shooter.getHeldItem().getItem() == ModItems.gun_darter) { + ItemGunDart.writePlayer(shooter.getHeldItem(), (EntityPlayer) hit); + shooter.playSound("random.orb", 1.0F, 1.0F); } } } @@ -146,23 +139,19 @@ public class GunDartFactory { bullet.style = bullet.STYLE_FLECHETTE; bullet.leadChance = 0; - bullet.bHurt = new IBulletHurtBehavior() { + bullet.bntHurt = (bulletnt, hit) -> { - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - - EntityLivingBase e = (EntityLivingBase) hit; + if(bulletnt.worldObj.isRemote) + return; - if(HbmLivingProps.getRadiation(e) < 250) - HbmLivingProps.setRadiation(e, 250); - if(HbmLivingProps.getTimer(e) <= 0) - HbmLivingProps.setTimer(e, MainRegistry.polaroidID * 60 * 20); - } + if(hit instanceof EntityLivingBase) { + + EntityLivingBase e = (EntityLivingBase) hit; + + if(HbmLivingProps.getRadiation(e) < 250) + HbmLivingProps.setRadiation(e, 250); + if(HbmLivingProps.getTimer(e) <= 0) + HbmLivingProps.setTimer(e, MainRegistry.polaroidID * 60 * 20); } }; diff --git a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java index dad35a32a..2d76d18e6 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java @@ -2,14 +2,12 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBomb; import com.hbm.interfaces.IBomb.BombReturnCode; import com.hbm.main.MainRegistry; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.packet.PacketDispatcher; @@ -62,6 +60,7 @@ public class GunDetonatorFactory { config.config.add(BulletConfigSyncingUtil.G12_DU); config.config.add(BulletConfigSyncingUtil.G12_SLEEK); config.config.add(BulletConfigSyncingUtil.G12_AM); + config.config.add(BulletConfigSyncingUtil.G12_PERCUSSION); config.config.add(BulletConfigSyncingUtil.NUKE_NORMAL); config.config.add(BulletConfigSyncingUtil.NUKE_LOW); config.config.add(BulletConfigSyncingUtil.NUKE_SAFE); @@ -90,22 +89,20 @@ public class GunDetonatorFactory { bullet.doesRicochet = false; bullet.setToBolt(BulletConfiguration.BOLT_LASER); - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - World world = bullet.worldObj; - if(!world.isRemote && y > 0) { - Block b = world.getBlock(x, y, z); - if(b instanceof IBomb) { - BombReturnCode ret = ((IBomb)b).explode(world, x, y, z); - - if(ret.wasSuccessful() && bullet.shooter instanceof EntityPlayerMP) { - EntityPlayerMP player = (EntityPlayerMP) bullet.shooter; - world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(EnumChatFormatting.YELLOW).flush(), MainRegistry.proxy.ID_DETONATOR), (EntityPlayerMP) player); - } + World world = bulletnt.worldObj; + if(!world.isRemote && y > 0) { + Block b = world.getBlock(x, y, z); + if(b instanceof IBomb) { + BombReturnCode ret = ((IBomb) b).explode(world, x, y, z); + + if(ret.wasSuccessful() && bulletnt.getThrower() instanceof EntityPlayerMP) { + EntityPlayerMP player = (EntityPlayerMP) bulletnt.getThrower(); + world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + PacketDispatcher.wrapper.sendTo( + new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(EnumChatFormatting.YELLOW).flush(), MainRegistry.proxy.ID_DETONATOR), + (EntityPlayerMP) player); } } } diff --git a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java index 2fafccbeb..0ea31f450 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java @@ -3,15 +3,16 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; import com.hbm.blocks.ModBlocks; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseNT.IBulletImpactBehaviorNT; +import com.hbm.entity.projectile.EntityBulletBaseNT.IBulletUpdateBehaviorNT; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums.AmmoCoilgun; import com.hbm.items.ItemAmmoEnums.AmmoFireExt; import com.hbm.items.ItemAmmoEnums.AmmoFlamethrower; import com.hbm.items.ModItems; @@ -19,6 +20,7 @@ import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.ExplosionKnockbackPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; import com.hbm.render.util.RenderScreenOverlay.Crosshair; @@ -29,11 +31,13 @@ import com.hbm.util.CompatExternal; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; public class GunEnergyFactory { @@ -180,6 +184,60 @@ public class GunEnergyFactory { return config; } + public static GunConfiguration getCoilgunConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 5; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_MANUAL; + config.reloadDuration = 20; + config.firingDuration = 0; + config.ammoCap = 1; + config.durability = 2_500; + config.reloadType = GunConfiguration.RELOAD_FULL; + config.allowsInfinity = true; + config.crosshair = Crosshair.CIRCLE; + config.firingSound = "hbm:weapon.coilgunShoot"; + config.reloadSoundEnd = false; + config.reloadSound = "hbm:weapon.coilgunReload"; + + config.name = "ArmsKore Coilgun"; + config.manufacturer = EnumGunManufacturer.DRG; + + config.config = new ArrayList(); + config.config.add(BulletConfigSyncingUtil.COIL_NORMAL); + config.config.add(BulletConfigSyncingUtil.COIL_DU); + config.config.add(BulletConfigSyncingUtil.COIL_RUBBER); + + return config; + } + + public static GunConfiguration getCryoCannonConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 1; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_AUTO; + config.firingDuration = 0; + config.ammoCap = 1_000; + config.durability = 10_000; + config.reloadType = GunConfiguration.RELOAD_FULL; + config.allowsInfinity = true; + config.crosshair = Crosshair.L_CIRCLE; + + config.name = "Cryo Cannon"; + config.manufacturer = EnumGunManufacturer.DRG; + + config.config = new ArrayList(); + config.config.add(BulletConfigSyncingUtil.CRYO_NORMAL); + + return config; + } + public static GunConfiguration getVortexConfig() { GunConfiguration config = new GunConfiguration(); @@ -221,6 +279,127 @@ public class GunEnergyFactory { return bullet; } + public static BulletConfiguration getCoilConfig() { + + BulletConfiguration bullet = new BulletConfiguration(); + + bullet.ammo = new ComparableStack(ModItems.ammo_coilgun, 1, AmmoCoilgun.STOCK.ordinal()); + + bullet.velocity = 7.5F; + bullet.spread = 0.0F; + bullet.wear = 10; + bullet.bulletsMin = 1; + bullet.bulletsMax = 1; + bullet.dmgMin = 35; + bullet.dmgMax = 45; + bullet.gravity = 0D; + bullet.maxAge = 50; + bullet.doesPenetrate = true; + bullet.isSpectral = true; + + bullet.style = bullet.STYLE_BOLT; + bullet.trail = bullet.BOLT_NIGHTMARE; + bullet.vPFX = "fireworks"; + + bullet.bntUpdate = (entity) -> breakInPath(entity, 1.25F); + + return bullet; + } + + public static BulletConfiguration getCoilDUConfig() { + + BulletConfiguration bullet = new BulletConfiguration(); + + bullet.ammo = new ComparableStack(ModItems.ammo_coilgun, 1, AmmoCoilgun.DU.ordinal()); + + bullet.velocity = 7.5F; + bullet.spread = 0.0F; + bullet.wear = 25; + bullet.bulletsMin = 1; + bullet.bulletsMax = 1; + bullet.dmgMin = 65; + bullet.dmgMax = 80; + bullet.gravity = 0D; + bullet.maxAge = 50; + bullet.doesPenetrate = true; + bullet.isSpectral = true; + + bullet.style = bullet.STYLE_BOLT; + bullet.trail = bullet.BOLT_NIGHTMARE; + bullet.vPFX = "fireworks"; + + bullet.bntUpdate = (entity) -> breakInPath(entity, 2.5F); + + return bullet; + } + + public static BulletConfiguration getCoilRubberConfig() { + + BulletConfiguration bullet = new BulletConfiguration(); + + bullet.ammo = new ComparableStack(ModItems.ammo_coilgun, 1, AmmoCoilgun.RUBBER.ordinal()); + + bullet.velocity = 5F; + bullet.spread = 0.0F; + bullet.wear = 10; + bullet.bulletsMin = 1; + bullet.bulletsMax = 1; + bullet.dmgMin = 10; + bullet.dmgMax = 20; + bullet.gravity = 0D; + bullet.maxAge = 50; + bullet.doesPenetrate = false; + bullet.isSpectral = false; + bullet.doesRicochet = true; + bullet.ricochetAngle = 30; + bullet.HBRC = 90; + bullet.LBRC = 100; + bullet.bounceMod = 1; + bullet.selfDamageDelay = 2; + + bullet.style = bullet.STYLE_PELLET; + + bullet.bntHurt = (entity, hit) -> { + Vec3 vec = Vec3.createVectorHelper(entity.motionX, entity.motionY, entity.motionZ); + vec = vec.normalize(); + vec.xCoord *= 10; + vec.yCoord *= 10; + vec.zCoord *= 10; + hit.motionX += vec.xCoord; + hit.motionY += vec.yCoord; + hit.motionZ += vec.zCoord; + + if(hit instanceof EntityPlayerMP) { + PacketDispatcher.wrapper.sendTo(new ExplosionKnockbackPacket(vec), (EntityPlayerMP) hit); + } + }; + + return bullet; + } + + public static void breakInPath(EntityBulletBaseNT entity, float threshold) { + + if(entity.worldObj.isRemote) return; + + Vec3 vec = Vec3.createVectorHelper(entity.posX - entity.prevPosX, entity.posY - entity.prevPosY, entity.posZ - entity.prevPosZ); + double motion = Math.max(vec.lengthVector(), 0.1); + vec = vec.normalize(); + + for(double d = 0; d < motion; d += 0.5) { + + int x = (int) Math.floor(entity.posX - vec.xCoord * d); + int y = (int) Math.floor(entity.posY - vec.yCoord * d); + int z = (int) Math.floor(entity.posZ - vec.zCoord * d); + + Block b = entity.worldObj.getBlock(x, y, z); + float hardness = b.getBlockHardness(entity.worldObj, x, y, z); + + if(b.getMaterial() != Material.air && hardness >= 0 && hardness < threshold) { + entity.worldObj.func_147480_a(x, y, z, false); + } + } + } + public static BulletConfiguration getFlameConfig() { BulletConfiguration bullet = new BulletConfiguration(); @@ -249,10 +428,10 @@ public class GunEnergyFactory { bullet.dmgProj = false; bullet.dmgFire = true; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { NBTTagCompound data = new NBTTagCompound(); @@ -296,7 +475,7 @@ public class GunEnergyFactory { bullet.maxAge = 200; bullet.vPFX = "smoke"; - bullet.bImpact = BulletConfigFactory.getPhosphorousEffect(5, 60 * 20, 25, 0.25, 0.1F); + bullet.bntImpact = BulletConfigFactory.getPhosphorousEffect(5, 60 * 20, 25, 0.25, 0.1F); return bullet; } @@ -343,7 +522,7 @@ public class GunEnergyFactory { bullet.dmgFire = false; - bullet.bImpact = BulletConfigFactory.getGasEffect(5, 60 * 20); + bullet.bntImpact = BulletConfigFactory.getGasEffect(5, 60 * 20); return bullet; } @@ -370,12 +549,12 @@ public class GunEnergyFactory { bullet.style = BulletConfiguration.STYLE_NONE; bullet.plink = BulletConfiguration.PLINK_NONE; - bullet.bHurt = (bulletEntity, target) -> { target.extinguish(); }; + bullet.bntHurt = (bulletEntity, target) -> { target.extinguish(); }; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { @@ -408,10 +587,10 @@ public class GunEnergyFactory { } }; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) { @@ -450,10 +629,10 @@ public class GunEnergyFactory { bullet.ammo = new ComparableStack(ModItems.ammo_fireext.stackFromEnum(AmmoFireExt.FOAM)); bullet.spread = 0.05F; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { @@ -505,10 +684,10 @@ public class GunEnergyFactory { } }; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) { @@ -537,12 +716,12 @@ public class GunEnergyFactory { bullet.ammo = new ComparableStack(ModItems.ammo_fireext.stackFromEnum(AmmoFireExt.SAND)); bullet.spread = 0.1F; - bullet.bHurt = null; // does not extinguish entities + bullet.bntHurt = null; // does not extinguish entities - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { @@ -578,10 +757,10 @@ public class GunEnergyFactory { } }; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) { @@ -630,10 +809,10 @@ public class GunEnergyFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(HbmPotion.bang.id, 10 * 20, 0)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { ExplosionChaos.explodeZOMG(bullet.worldObj, (int)Math.floor(bullet.posX), (int)Math.floor(bullet.posY), (int)Math.floor(bullet.posZ), 5); @@ -645,6 +824,15 @@ public class GunEnergyFactory { return bullet; } + + public static BulletConfiguration getCryoConfig() { + BulletConfiguration bullet = new BulletConfiguration(); + bullet.ammo = new ComparableStack(ModItems.gun_cryolator_ammo); + bullet.ammoCount = 100; + bullet.bulletsMin = 1; + bullet.bulletsMax = 1; + return bullet; + } public static BulletConfiguration getTurbineConfig() { diff --git a/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java b/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java index 0e8dbbd24..5ed0b21db 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java @@ -3,7 +3,8 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; import com.hbm.blocks.ModBlocks; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseNT.*; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNukeSmall; @@ -12,8 +13,6 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.handler.radiation.ChunkRadiationManager; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.AmmoFatman; @@ -133,10 +132,10 @@ public class GunFatmanFactory { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.STOCK)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_MEDIUM); } }; @@ -149,10 +148,10 @@ public class GunFatmanFactory { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.LOW)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_LOW); } }; @@ -165,10 +164,10 @@ public class GunFatmanFactory { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_HIGH); } }; @@ -185,10 +184,10 @@ public class GunFatmanFactory { bullet.spread = 0.1F; bullet.style = bullet.STYLE_GRENADE; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); } }; @@ -201,10 +200,10 @@ public class GunFatmanFactory { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.SAFE)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_SAFE); } }; @@ -218,10 +217,10 @@ public class GunFatmanFactory { bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.PUMPKIN)); bullet.explosive = 10F; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { @@ -250,10 +249,10 @@ public class GunFatmanFactory { bullet.explosive = 3F; bullet.style = bullet.STYLE_BARREL; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { @@ -308,10 +307,10 @@ public class GunFatmanFactory { bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -321,7 +320,7 @@ public class GunFatmanFactory { for(int i = 0; i < 6; i++) { - EntityBulletBase nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_NORMAL); + EntityBulletBaseNT nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_NORMAL); nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); double mod = 0.1D; nuke.motionX = bullet.worldObj.rand.nextGaussian() * mod; @@ -345,10 +344,10 @@ public class GunFatmanFactory { bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -358,7 +357,7 @@ public class GunFatmanFactory { for(int i = 0; i < 6; i++) { - EntityBulletBase nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_LOW); + EntityBulletBaseNT nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_LOW); nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); double mod = 0.1D; nuke.motionX = bullet.worldObj.rand.nextGaussian() * mod; @@ -382,10 +381,10 @@ public class GunFatmanFactory { bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -395,7 +394,7 @@ public class GunFatmanFactory { for(int i = 0; i < 6; i++) { - EntityBulletBase nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_HIGH); + EntityBulletBaseNT nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_HIGH); nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); double mod = 0.1D; nuke.motionX = bullet.worldObj.rand.nextGaussian() * mod; @@ -419,10 +418,10 @@ public class GunFatmanFactory { bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -432,7 +431,7 @@ public class GunFatmanFactory { for(int i = 0; i < 6; i++) { - EntityBulletBase nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_SAFE); + EntityBulletBaseNT nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_SAFE); nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); double mod = 0.1D; nuke.motionX = bullet.worldObj.rand.nextGaussian() * mod; @@ -456,10 +455,10 @@ public class GunFatmanFactory { bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -469,16 +468,16 @@ public class GunFatmanFactory { for(int i = 0; i < 24; i++) { - EntityBulletBase nuke = null; + EntityBulletBaseNT nuke = null; if(i < 6) - nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_LOW); + nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_LOW); else if(i < 12) - nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_TOTS); + nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_TOTS); else if(i < 18) - nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_NORMAL); + nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_NORMAL); else - nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_AMAT); + nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_AMAT); nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); @@ -503,8 +502,8 @@ public class GunFatmanFactory { bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.BALEFIRE)); bullet.style = BulletConfiguration.STYLE_BF; - bullet.bImpact = new IBulletImpactBehavior() { - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + bullet.bntImpact = new IBulletImpactBehaviorNT() { + @Override public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { diff --git a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java index 0c787f9a9..092b7fd5a 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java @@ -1,29 +1,36 @@ package com.hbm.handler.guncfg; -import java.util.ArrayList; - -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.AmmoGrenade; +import com.hbm.lib.HbmCollection; import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; + public class GunGrenadeFactory { - + private static final CasingEjector EJECTOR_LAUNCHER; + private static final CasingEjector EJECTOR_CONGOLAKE; private static final SpentCasing CASING40MM; static { EJECTOR_LAUNCHER = new CasingEjector().setAngleRange(0.02F, 0.03F).setAfterReload(); + EJECTOR_CONGOLAKE = new CasingEjector().setMotion(0.3, 0.1, 0).setAngleRange(0.02F, 0.03F).setDelay(15); CASING40MM = new SpentCasing(CasingType.STRAIGHT).setScale(4F, 4F, 3F).setBounceMotion(0.02F, 0.03F).setColor(0x777777).setupSmoke(1F, 0.5D, 60, 40); } @@ -49,25 +56,42 @@ public class GunGrenadeFactory { config.name = "gPistol"; config.manufacturer = EnumGunManufacturer.H_AND_K; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.GRENADE_NORMAL); - config.config.add(BulletConfigSyncingUtil.GRENADE_HE); - config.config.add(BulletConfigSyncingUtil.GRENADE_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.GRENADE_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.GRENADE_CHEMICAL); - config.config.add(BulletConfigSyncingUtil.GRENADE_CONCUSSION); - config.config.add(BulletConfigSyncingUtil.GRENADE_FINNED); - config.config.add(BulletConfigSyncingUtil.GRENADE_SLEEK); - config.config.add(BulletConfigSyncingUtil.GRENADE_NUCLEAR); - config.config.add(BulletConfigSyncingUtil.GRENADE_TRACER); - config.config.add(BulletConfigSyncingUtil.GRENADE_KAMPF); + + config.config = HbmCollection.grenade; config.durability = 300; config.ejector = EJECTOR_LAUNCHER; return config; } + + public static GunConfiguration getCongoConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 20; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_MANUAL; + config.reloadDuration = 20; + config.firingDuration = 0; + config.ammoCap = 4; + config.reloadType = GunConfiguration.RELOAD_SINGLE; + config.allowsInfinity = true; + config.crosshair = Crosshair.L_CIRCUMFLEX; + config.firingSound = "hbm:weapon.glShoot"; + config.reloadSound = GunConfiguration.RSOUND_GRENADE_NEW; + + config.name = "congoLake"; + config.manufacturer = EnumGunManufacturer.NAWS; + + config.config = HbmCollection.grenade; + config.durability = 2500; + + config.ejector = EJECTOR_CONGOLAKE; + + return config; + } public static BulletConfiguration getGrenadeConfig() { @@ -131,7 +155,7 @@ public class GunGrenadeFactory { bullet.trail = 0; bullet.incendiary = 2; - bullet.bImpact = BulletConfigFactory.getPhosphorousEffect(10, 60 * 20, 100, 0.5D, 1F); + bullet.bntImpact = BulletConfigFactory.getPhosphorousEffect(10, 60 * 20, 100, 0.5D, 1F); bullet.spentCasing = CASING40MM.clone().register("40MMPhos"); @@ -213,12 +237,8 @@ public class GunGrenadeFactory { bullet.velocity = 4; bullet.explosive = 0.0F; - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); - } + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); }; bullet.spentCasing = CASING40MM.clone().register("40MMNuke"); @@ -259,4 +279,101 @@ public class GunGrenadeFactory { return bullet; } + + public static BulletConfiguration getGrenadeLeadbursterConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.LEADBURSTER)); + bullet.spread = 0.0F; + bullet.gravity = 0.01D; + bullet.explosive = 0F; + bullet.style = BulletConfiguration.STYLE_LEADBURSTER; + bullet.doesRicochet = false; + bullet.doesPenetrate = true; + bullet.vPFX = ""; + + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + + switch(sideHit) { + case 0: bulletnt.rotationPitch = (float) (90); break; + case 1: bulletnt.rotationPitch = (float) (-90); break; + case 2: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = 0; break; + case 3: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = (float) 180; break; + case 4: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = 90; break; + case 5: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = (float) -90; break; + } + + Vec3 vec = Vec3.createVectorHelper(0, 0, 1); + vec.rotateAroundX((float) (bulletnt.rotationPitch * Math.PI / 180D)); + vec.rotateAroundY((float) (bulletnt.rotationYaw * Math.PI / 180)); + + double offset = 0.1; + bulletnt.posX -= vec.xCoord * offset; + bulletnt.posY -= vec.yCoord * offset; + bulletnt.posZ -= vec.zCoord * offset; + + bulletnt.ticksExisted = 0; + bulletnt.getStuck(x, y, z, sideHit); + }; + + bullet.bntUpdate = (bulletnt) -> { + if(bulletnt.worldObj.isRemote) return; + + switch(bulletnt.getStuckIn()) { + case 0: bulletnt.rotationPitch = (float) (90); break; + case 1: bulletnt.rotationPitch = (float) (-90); break; + case 2: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = 0; break; + case 3: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = (float) 180; break; + case 4: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = 90; break; + case 5: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = (float) -90; break; + } + + if(bulletnt.ticksInGround < 20) return; + int timer = bulletnt.ticksInGround - 20; + + Vec3 offset = Vec3.createVectorHelper(0, 0, -0.5); + offset.rotateAroundX((float) (bulletnt.rotationPitch * Math.PI / 180D)); + offset.rotateAroundY((float) (bulletnt.rotationYaw * Math.PI / 180)); + + if(bulletnt.ticksExisted >= 100) { + bulletnt.setDead(); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", "largeexplode"); + data.setFloat("size", 1F); + data.setByte("count", (byte)1); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX + offset.xCoord, bulletnt.posY + offset.yCoord, bulletnt.posZ + offset.zCoord), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); + } + + if(timer > 60) return; + + bulletnt.worldObj.playSoundEffect(bulletnt.posX, bulletnt.posY, bulletnt.posZ, "hbm:weapon.silencerShoot", 2F, 1F); + + for(int i = 0; i < 5; i++) { + Vec3 vec = Vec3.createVectorHelper(0, 1, 0); + vec.rotateAroundX((float) Math.toRadians(11.25 * i)); + vec.rotateAroundZ((float) -Math.toRadians(13 * timer)); + vec.rotateAroundX((float) (bulletnt.rotationPitch * Math.PI / 180D)); + vec.rotateAroundY((float) (bulletnt.rotationYaw * Math.PI / 180)); + + EntityBulletBaseNT pellet = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.R556_NORMAL); + double dist = 0.5; + double off = 0.5; + pellet.setPosition(bulletnt.posX + vec.xCoord * dist + offset.xCoord * off, bulletnt.posY + vec.yCoord * dist + offset.yCoord * off, bulletnt.posZ + vec.zCoord * dist + offset.zCoord * off); + double vel = 0.5; + pellet.motionX = vec.xCoord * vel; + pellet.motionY = vec.yCoord * vel; + pellet.motionZ = vec.zCoord * vel; + + float hyp = MathHelper.sqrt_double(pellet.motionX * pellet.motionX + pellet.motionZ * pellet.motionZ); + pellet.prevRotationYaw = pellet.rotationYaw = (float) (Math.atan2(pellet.motionX, pellet.motionZ) * 180.0D / Math.PI); + pellet.prevRotationPitch = pellet.rotationPitch = (float) (Math.atan2(pellet.motionY, (double) hyp) * 180.0D / Math.PI); + + bulletnt.worldObj.spawnEntityInWorld(pellet); + } + }; + + return bullet; + } } diff --git a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java index 960ebee81..d7fff5e2b 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java @@ -3,12 +3,11 @@ package com.hbm.handler.guncfg; import java.util.List; import java.util.Random; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseNT.IBulletUpdateBehaviorNT; import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; @@ -51,30 +50,26 @@ public class GunNPCFactory { bullet.trail = 1; bullet.explosive = 1.5F; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { + + if(bulletnt.worldObj.isRemote) + return; - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(bullet.worldObj.isRemote) - return; - - if(bullet.ticksExisted % 10 != 5) - return; - - List players = bullet.worldObj.getEntitiesWithinAABB(EntityPlayer.class, bullet.boundingBox.expand(50, 50, 50)); - - for(EntityPlayer player : players) { - - Vec3 motion = Vec3.createVectorHelper(player.posX - bullet.posX, (player.posY + player.getEyeHeight()) - bullet.posY, player.posZ - bullet.posZ); - motion = motion.normalize(); - - EntityBulletBase bolt = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_BOLT); - bolt.shooter = bullet.shooter; - bolt.setPosition(bullet.posX, bullet.posY, bullet.posZ); - bolt.setThrowableHeading(motion.xCoord, motion.yCoord, motion.zCoord, 0.5F, 0.05F); - bullet.worldObj.spawnEntityInWorld(bolt); - } + if(bulletnt.ticksExisted % 10 != 5) + return; + + List players = bulletnt.worldObj.getEntitiesWithinAABB(EntityPlayer.class, bulletnt.boundingBox.expand(50, 50, 50)); + + for(EntityPlayer player : players) { + + Vec3 motion = Vec3.createVectorHelper(player.posX - bulletnt.posX, (player.posY + player.getEyeHeight()) - bulletnt.posY, player.posZ - bulletnt.posZ); + motion = motion.normalize(); + + EntityBulletBaseNT bolt = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_BOLT); + bolt.setThrower(bulletnt.getThrower()); + bolt.setPosition(bulletnt.posX, bulletnt.posY, bulletnt.posZ); + bolt.setThrowableHeading(motion.xCoord, motion.yCoord, motion.zCoord, 0.5F, 0.05F); + bulletnt.worldObj.spawnEntityInWorld(bolt); } }; @@ -129,20 +124,16 @@ public class GunNPCFactory { bullet.vPFX = "reddust"; bullet.damageType = ModDamageSource.s_laser; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + + if(bulletnt.worldObj.isRemote) + return; - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(bullet.posX, bullet.posY + 30 + meteor.worldObj.rand.nextInt(10), bullet.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(bulletnt.posX, bulletnt.posY + 30 + meteor.worldObj.rand.nextInt(10), bulletnt.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; return bullet; @@ -178,25 +169,21 @@ public class GunNPCFactory { bullet.explosive = 2.5F; bullet.style = BulletConfiguration.STYLE_METEOR; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(!bullet.worldObj.isRemote) - return; - - Random rand = bullet.worldObj.rand; - - for(int i = 0; i < 5; i++) { - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setString("type", "vanillaExt"); - nbt.setString("mode", "flame"); - nbt.setDouble("posX", bullet.posX + rand.nextDouble() * 0.5 - 0.25); - nbt.setDouble("posY", bullet.posY + rand.nextDouble() * 0.5 - 0.25); - nbt.setDouble("posZ", bullet.posZ + rand.nextDouble() * 0.5 - 0.25); - MainRegistry.proxy.effectNT(nbt); - } + if(!bulletnt.worldObj.isRemote) + return; + + Random rand = bulletnt.worldObj.rand; + + for(int i = 0; i < 5; i++) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("type", "vanillaExt"); + nbt.setString("mode", "flame"); + nbt.setDouble("posX", bulletnt.posX + rand.nextDouble() * 0.5 - 0.25); + nbt.setDouble("posY", bulletnt.posY + rand.nextDouble() * 0.5 - 0.25); + nbt.setDouble("posZ", bulletnt.posZ + rand.nextDouble() * 0.5 - 0.25); + MainRegistry.proxy.effectNT(nbt); } }; @@ -245,13 +232,13 @@ public class GunNPCFactory { bullet.destroysBlocks = false; bullet.explosive = 0F; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { double angle = 90; double range = 100; @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -265,7 +252,7 @@ public class GunNPCFactory { if(target != null) { if(bullet.getDistanceSqToEntity(target) < 5) { - bullet.getConfig().bImpact.behaveBlockHit(bullet, -1, -1, -1); + bullet.getConfig().bntImpact.behaveBlockHit(bullet, -1, -1, -1, -1); bullet.setDead(); return; } @@ -281,7 +268,7 @@ public class GunNPCFactory { } } - private void chooseTarget(EntityBulletBase bullet) { + private void chooseTarget(EntityBulletBaseNT bullet) { List entities = bullet.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, bullet.boundingBox.expand(range, range, range)); @@ -292,7 +279,7 @@ public class GunNPCFactory { for(EntityLivingBase e : entities) { - if(!e.isEntityAlive() || e == bullet.shooter) + if(!e.isEntityAlive() || e == bullet.getThrower()) continue; Vec3 delta = Vec3.createVectorHelper(e.posX - bullet.posX, e.posY + e.height / 2 - bullet.posY, e.posZ - bullet.posZ); @@ -319,27 +306,23 @@ public class GunNPCFactory { } }; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + bulletnt.worldObj.playSoundEffect(bulletnt.posX, bulletnt.posY, bulletnt.posZ, "hbm:entity.ufoBlast", 5.0F, 0.9F + bulletnt.worldObj.rand.nextFloat() * 0.2F); + bulletnt.worldObj.playSoundEffect(bulletnt.posX, bulletnt.posY, bulletnt.posZ, "fireworks.blast", 5.0F, 0.5F); + ExplosionNukeGeneric.dealDamage(bulletnt.worldObj, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 10, 50); - bullet.worldObj.playSoundEffect(bullet.posX, bullet.posY, bullet.posZ, "hbm:entity.ufoBlast", 5.0F, 0.9F + bullet.worldObj.rand.nextFloat() * 0.2F); - bullet.worldObj.playSoundEffect(bullet.posX, bullet.posY, bullet.posZ, "fireworks.blast", 5.0F, 0.5F); - ExplosionNukeGeneric.dealDamage(bullet.worldObj, bullet.posX, bullet.posY, bullet.posZ, 10, 50); - - for(int i = 0; i < 3; i++) { - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "plasmablast"); - data.setFloat("r", 0.0F); - data.setFloat("g", 0.75F); - data.setFloat("b", 1.0F); - data.setFloat("pitch", -30F + 30F * i); - data.setFloat("yaw", bullet.worldObj.rand.nextFloat() * 180F); - data.setFloat("scale", 5F); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), - new TargetPoint(bullet.worldObj.provider.dimensionId, bullet.posX, bullet.posY, bullet.posZ, 100)); - } + for(int i = 0; i < 3; i++) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "plasmablast"); + data.setFloat("r", 0.0F); + data.setFloat("g", 0.75F); + data.setFloat("b", 1.0F); + data.setFloat("pitch", -30F + 30F * i); + data.setFloat("yaw", bulletnt.worldObj.rand.nextFloat() * 180F); + data.setFloat("scale", 5F); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), + new TargetPoint(bulletnt.worldObj.provider.dimensionId, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 100)); } }; diff --git a/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java b/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java index db093f702..47c3e698c 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java @@ -101,17 +101,17 @@ public class GunOSIPRFactory { bullet.maxAge = 150; bullet.velocity = 2; - bullet.bHurt = (ball, entity) -> { + bullet.bntHurt = (ball, entity) -> { if(entity instanceof EntityLivingBase) { EntityLivingBase entityLiving = (EntityLivingBase) entity; entity.addVelocity(ball.motionX / 2, ball.motionY / 2, ball.motionZ / 2); - if(entity == ball.shooter) + if(entity == ball.getThrower()) return; if(entityLiving.getHealth() <= 1000) { entityLiving.addPotionEffect(new PotionEffect(HbmPotion.bang.id, 1, 0)); - entityLiving.setLastAttacker(ball.shooter); + entityLiving.setLastAttacker(ball.getThrower()); } else if(entityLiving.getHealth() > 1000) { ball.setDead(); return; @@ -120,14 +120,14 @@ public class GunOSIPRFactory { } }; - bullet.bRicochet = (ball, x, y, z) -> { + bullet.bntRicochet = (ball, x, y, z) -> { Block block = ball.worldObj.getBlock(x, y, z); if(block instanceof RedBarrel) ((RedBarrel) block).explode(ball.worldObj, x, y, z); }; - bullet.bImpact = (ball, x, y, z) -> { + bullet.bntImpact = (ball, x, y, z, sideHit) -> { final Block block = ball.worldObj.getBlock(x, y, z); if(block instanceof RedBarrel) ((RedBarrel) block).explode(ball.worldObj, x, y, z); diff --git a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java index 8af201e52..b6b0714dd 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java @@ -3,14 +3,11 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; import com.hbm.entity.effect.EntitySpear; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletRicochetBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.AmmoRocket; @@ -287,12 +284,8 @@ public class GunRocketFactory { bullet.incendiary = 0; bullet.trail = 7; - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_MEDIUM); - } + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_MEDIUM); }; return bullet; @@ -331,18 +324,14 @@ public class GunRocketFactory { bullet.LBRC = 100; bullet.doesPenetrate = true; - bullet.bRicochet = new IBulletRicochetBehavior() { + bullet.bntRicochet = (bulletnt, bX, bY, bZ) -> { + World worldObj = bulletnt.worldObj; + if(!worldObj.isRemote && (worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.wood || + worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.plants || + worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.glass || + worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.leaves)) + worldObj.func_147480_a(bX, bY, bZ, false); - @Override - public void behaveBlockRicochet(EntityBulletBase bullet, int bX, int bY, int bZ) { - World worldObj = bullet.worldObj; - if(!worldObj.isRemote && - (worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.wood || - worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.plants || - worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.glass || - worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.leaves)) - worldObj.func_147480_a(bX, bY, bZ, false);} - }; return bullet; @@ -360,7 +349,7 @@ public class GunRocketFactory { bullet.incendiary = 5; bullet.trail = 9; - bullet.bImpact = BulletConfigFactory.getPhosphorousEffect(10, 60 * 20, 100, 0.5D, 1F); + bullet.bntImpact = BulletConfigFactory.getPhosphorousEffect(10, 60 * 20, 100, 0.5D, 1F); return bullet; } @@ -375,23 +364,16 @@ public class GunRocketFactory { bullet.explosive = 2F; bullet.trail = 0; - bullet.bUpdate = new IBulletUpdateBehavior() { - - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(!bullet.worldObj.isRemote) { - - if(bullet.ticksExisted > 10) { - bullet.setDead(); - - for(int i = 0; i < 50; i++) { - - EntityBulletBase bolt = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.M44_AP); - bolt.setPosition(bullet.posX, bullet.posY, bullet.posZ); - bolt.setThrowableHeading(bullet.motionX, bullet.motionY, bullet.motionZ, 0.25F, 0.1F); - bullet.worldObj.spawnEntityInWorld(bolt); - } + bullet.bntUpdate = (bulletnt) -> { + if(!bulletnt.worldObj.isRemote) { + if(bulletnt.ticksExisted > 10) { + bulletnt.setDead(); + for(int i = 0; i < 50; i++) { + EntityBulletBaseNT bolt = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.M44_AP); + bolt.setPosition(bulletnt.posX, bulletnt.posY, bulletnt.posZ); + bolt.setThrowableHeading(bulletnt.motionX, bulletnt.motionY, bulletnt.motionZ, 0.25F, 0.1F); + bolt.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(bolt); } } } @@ -413,21 +395,17 @@ public class GunRocketFactory { bullet.incendiary = 0; bullet.trail = 7; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - EntitySpear spear = new EntitySpear(bullet.worldObj); - spear.posX = bullet.posX; - spear.posZ = bullet.posZ; - spear.posY = bullet.posY + 100; - - bullet.worldObj.spawnEntityInWorld(spear); - } + if(bulletnt.worldObj.isRemote) + return; + + EntitySpear spear = new EntitySpear(bulletnt.worldObj); + spear.posX = bulletnt.posX; + spear.posZ = bulletnt.posZ; + spear.posY = bulletnt.posY + 100; + + bulletnt.worldObj.spawnEntityInWorld(spear); }; return bullet; diff --git a/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java b/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java index 9ace3b45f..3e2808d40 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java @@ -2,12 +2,10 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.entity.projectile.EntityRocketHoming; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.AmmoStinger; import com.hbm.items.ModItems; @@ -98,28 +96,24 @@ GunConfiguration config = new GunConfiguration(); bullet.explosive = 4F; bullet.trail = 0; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(!bullet.worldObj.isRemote) { - - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 0); - if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 0); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 0); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); - bullet.setDead(); + if(!bulletnt.worldObj.isRemote) { + EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); + EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 0); + if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 0); + rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 0); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bulletnt.worldObj.spawnEntityInWorld(rocket2); } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bulletnt.worldObj.spawnEntityInWorld(rocket); + bulletnt.setDead(); + } }; return bullet; @@ -135,28 +129,24 @@ GunConfiguration config = new GunConfiguration(); bullet.trail = 0; bullet.wear = 15; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(!bullet.worldObj.isRemote) { - - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 1); - if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 1); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 1); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); - bullet.setDead(); + if(!bulletnt.worldObj.isRemote) { + EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); + EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 1); + if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 1); + rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 1); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bulletnt.worldObj.spawnEntityInWorld(rocket2); } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bulletnt.worldObj.spawnEntityInWorld(rocket); + bulletnt.setDead(); + } }; return bullet; @@ -172,28 +162,24 @@ GunConfiguration config = new GunConfiguration(); bullet.trail = 0; bullet.wear = 12; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(!bullet.worldObj.isRemote) { - - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 2); - if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 2); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 2); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); - bullet.setDead(); + if(!bulletnt.worldObj.isRemote) { + EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); + EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 2); + if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 2); + rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 2); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bulletnt.worldObj.spawnEntityInWorld(rocket2); } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bulletnt.worldObj.spawnEntityInWorld(rocket); + bulletnt.setDead(); + } }; return bullet; @@ -209,31 +195,27 @@ GunConfiguration config = new GunConfiguration(); bullet.trail = 0; bullet.wear = 30; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { + if(!bulletnt.worldObj.isRemote) { - if(!bullet.worldObj.isRemote) { + EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - - if(player.getDistanceToEntity(bullet) < 16) { - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 4); - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); + if(player.getDistanceToEntity(bulletnt) < 16) { + EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 4); + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 4); + rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 4); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bulletnt.worldObj.spawnEntityInWorld(rocket2); } - bullet.setDead(); - + rocket.homingMod = 5; + rocket.homingRadius = 25; + bulletnt.worldObj.spawnEntityInWorld(rocket); } + bulletnt.setDead(); + } }; return bullet; @@ -248,31 +230,27 @@ GunConfiguration config = new GunConfiguration(); bullet.explosive = 8F; bullet.trail = 0; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { + if(!bulletnt.worldObj.isRemote) { - if(!bullet.worldObj.isRemote) { + EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - - if(player.getDistanceToEntity(bullet) < 16) { - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 42); - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); + if(player.getDistanceToEntity(bulletnt) < 16) { + EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 42); + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 42); + rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 42); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bulletnt.worldObj.spawnEntityInWorld(rocket2); } - bullet.setDead(); - + rocket.homingMod = 5; + rocket.homingRadius = 25; + bulletnt.worldObj.spawnEntityInWorld(rocket); } + bulletnt.setDead(); + } }; return bullet; diff --git a/src/main/java/com/hbm/handler/nei/ArcWelderHandler.java b/src/main/java/com/hbm/handler/nei/ArcWelderHandler.java new file mode 100644 index 000000000..e598840fc --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/ArcWelderHandler.java @@ -0,0 +1,60 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; +import java.util.Locale; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIMachineArcWelder; +import com.hbm.inventory.recipes.ArcWelderRecipes; +import com.hbm.inventory.recipes.ArcWelderRecipes.ArcWelderRecipe; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.item.ItemStack; + +public class ArcWelderHandler extends NEIUniversalHandler { + + public ArcWelderHandler() { + super("Arc Welder", ModBlocks.machine_arc_welder, ArcWelderRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmArcWelder"; + } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(67, 26, 32, 14), "ntmArcWelder")); + guiGui.add(GUIMachineArcWelder.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } + + @Override + public void drawExtras(int recipe) { + + RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); + Object[] original = (Object[]) rec.originalInputInstance; + ItemStack output = rec.output[0].item; + + outer: for(ArcWelderRecipe arc : ArcWelderRecipes.recipes) { + + //checks do not include the fluid, will break of there's two recipes with identical input and output but with fluids + if(ItemStack.areItemStacksEqual(arc.output, output) && arc.ingredients.length == original.length - (arc.fluid == null ? 0 : 1)) { + + for(int i = 0; i < rec.input.length - (arc.fluid == null ? 0 : 1); i++) { + if(arc.ingredients[i] != original[i]) continue outer; + } + + FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; + String duration = String.format(Locale.US, "%,d", arc.duration) + " ticks"; + String consumption = String.format(Locale.US, "%,d", arc.consumption) + " HE/t"; + int side = 160; + fontRenderer.drawString(duration, side - fontRenderer.getStringWidth(duration), 43, 0x404040); + fontRenderer.drawString(consumption, side - fontRenderer.getStringWidth(consumption), 55, 0x404040); + return; + } + } + } +} diff --git a/src/main/java/com/hbm/handler/nei/AshpitHandler.java b/src/main/java/com/hbm/handler/nei/AshpitHandler.java new file mode 100644 index 000000000..d7cf8af20 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/AshpitHandler.java @@ -0,0 +1,50 @@ +package com.hbm.handler.nei; + +import java.util.HashMap; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ItemEnums.EnumAshType; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; + +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class AshpitHandler extends NEIUniversalHandler { + + public AshpitHandler() { + super("Ashpit", ModBlocks.machine_ashpit, getRecipes()); + } + + @Override + public String getKey() { + return "ntmAshpit"; + } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + ItemStack[] ovens = new ItemStack[] {new ItemStack(ModBlocks.heater_firebox), new ItemStack(ModBlocks.heater_oven)}; + ItemStack[] chimneys = new ItemStack[] {new ItemStack(ModBlocks.chimney_brick), new ItemStack(ModBlocks.chimney_industrial)}; + ItemStack[] coals = new ItemStack[] {new ItemStack(Items.coal, 1, 0), new ItemStack(ModItems.lignite), new ItemStack(ModItems.coke)}; + ItemStack[] wood = new ItemStack[] {new ItemStack(Blocks.log), new ItemStack(Blocks.log2), new ItemStack(Blocks.planks), new ItemStack(Blocks.sapling)}; + ItemStack[] misc = new ItemStack[] {new ItemStack(ModItems.solid_fuel), new ItemStack(ModItems.scrap), new ItemStack(ModItems.dust), new ItemStack(ModItems.rocket_fuel)}; + FluidType[] smokes = new FluidType[] {Fluids.SMOKE, Fluids.SMOKE_LEADED, Fluids.SMOKE_POISON};; + + recipes.put(new ItemStack[][] {ovens, coals}, DictFrame.fromOne(ModItems.powder_ash, EnumAshType.COAL)); + recipes.put(new ItemStack[][] {ovens, wood}, DictFrame.fromOne(ModItems.powder_ash, EnumAshType.WOOD)); + recipes.put(new ItemStack[][] {ovens, misc}, DictFrame.fromOne(ModItems.powder_ash, EnumAshType.MISC)); + + for(FluidType smoke : smokes) { + recipes.put(new ItemStack[][] {chimneys, new ItemStack[] {ItemFluidIcon.make(smoke, 2_000)}}, DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FLY)); + recipes.put(new ItemStack[][] {new ItemStack[] {new ItemStack(ModBlocks.chimney_industrial)}, new ItemStack[] {ItemFluidIcon.make(smoke, 8_000)}}, DictFrame.fromOne(ModItems.powder_ash, EnumAshType.SOOT)); + } + + return recipes; + } +} diff --git a/src/main/java/com/hbm/handler/nei/CMBFurnaceRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CMBFurnaceRecipeHandler.java deleted file mode 100644 index 5390eef46..000000000 --- a/src/main/java/com/hbm/handler/nei/CMBFurnaceRecipeHandler.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.hbm.handler.nei; - -import java.awt.Rectangle; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -import com.hbm.inventory.gui.GUIMachineCMBFactory; -import com.hbm.inventory.recipes.MachineRecipes; -import com.hbm.lib.RefStrings; - -import codechicken.nei.NEIServerUtils; -import codechicken.nei.PositionedStack; -import codechicken.nei.recipe.TemplateRecipeHandler; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.item.ItemStack; - -public class CMBFurnaceRecipeHandler extends TemplateRecipeHandler { - - public LinkedList transferRectsRec = new LinkedList(); - public LinkedList transferRectsGui = new LinkedList(); - public LinkedList> guiRec = new LinkedList>(); - public LinkedList> guiGui = new LinkedList>(); - - public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe - { - PositionedStack input1; - PositionedStack input2; - PositionedStack result; - - public SmeltingSet(ItemStack input1, ItemStack input2, ItemStack result) { - input1.stackSize = 1; - input2.stackSize = 1; - this.input1 = new PositionedStack(input1, 66, 6); - this.input2 = new PositionedStack(input2, 66, 42); - this.result = new PositionedStack(result, 129, 24); - } - - @Override - public List getIngredients() { - return getCycledIngredients(cycleticks / 48, Arrays.asList(new PositionedStack[] {input1, input2})); - } - - @Override - public PositionedStack getResult() { - return result; - } - } - - @Override - public String getRecipeName() { - return "CMB Steel Furnace"; - } - - @Override - public String getGuiTexture() { - return RefStrings.MODID + ":textures/gui/nei/gui_nei_cmb.png"; - } - - @Override - public void loadCraftingRecipes(String outputId, Object... results) { - if ((outputId.equals("cmbsmelting")) && getClass() == CMBFurnaceRecipeHandler.class) { - Map recipes = MachineRecipes.instance().getCMBRecipes(); - for (Map.Entry recipe : recipes.entrySet()) { - this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue())); - } - } else { - super.loadCraftingRecipes(outputId, results); - } - } - - @Override - public void loadCraftingRecipes(ItemStack result) { - Map recipes = MachineRecipes.instance().getCMBRecipes(); - for (Map.Entry recipe : recipes.entrySet()) { - if (NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue(), result)) - this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue())); - } - } - - @Override - public void loadUsageRecipes(String inputId, Object... ingredients) { - if ((inputId.equals("cmbsmelting")) && getClass() == CMBFurnaceRecipeHandler.class) { - loadCraftingRecipes("cmbsmelting", new Object[0]); - } else { - super.loadUsageRecipes(inputId, ingredients); - } - } - - @Override - public void loadUsageRecipes(ItemStack ingredient) { - Map recipes = MachineRecipes.instance().getCMBRecipes(); - for (Map.Entry recipe : recipes.entrySet()) { - if (NEIServerUtils.areStacksSameType(ingredient, (ItemStack)recipe.getKey()[0]) || NEIServerUtils.areStacksSameType(ingredient, (ItemStack)recipe.getKey()[1])) - this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue())); - } - } - - @Override - public Class getGuiClass() { - //return GUITestDiFurnace.class; - return null; - } - - @Override - public void loadTransferRects() { - transferRectsGui = new LinkedList(); - guiGui = new LinkedList>(); - - transferRects.add(new RecipeTransferRect(new Rectangle(74 + 6 + 18, 23, 24, 18), "cmbsmelting")); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(74 + 6 + 18, 23, 24, 18), "cmbsmelting")); - guiGui.add(GUIMachineCMBFactory.class); - RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); - RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); - } - - @Override - public void drawExtras(int recipe) { - - drawProgressBar(83 - (18 * 4) - 9 + 1, 6, 36, 86, 16, 18 * 3 - 2, 480, 7); - drawProgressBar(83 - (18 * 4) - 9 + 1 + 18, 6, 36 + 48, 86, 16, 18 * 3 - 2, 480, 7); - - drawProgressBar(83 - 3 + 16, 5 + 18, 100, 118, 24, 16, 48, 0); - } - - @Override - public TemplateRecipeHandler newInstance() { - return super.newInstance(); - } - -} diff --git a/src/main/java/com/hbm/handler/nei/ChemplantRecipeHandler.java b/src/main/java/com/hbm/handler/nei/ChemplantRecipeHandler.java index 0beaff581..9ef27b9a9 100644 --- a/src/main/java/com/hbm/handler/nei/ChemplantRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/ChemplantRecipeHandler.java @@ -45,7 +45,7 @@ public class ChemplantRecipeHandler extends TemplateRecipeHandler { for(int i = 0; i < recipe.inputFluids.length; i++) { FluidStack in = recipe.inputFluids[i]; if(in == null) continue; - ItemStack drop = ItemFluidIcon.make(in.type, in.fill); + ItemStack drop = ItemFluidIcon.make(in); this.fluidIn[i] = new PositionedStack(drop, 30 + (i % 2) * 18, 6); } @@ -58,7 +58,7 @@ public class ChemplantRecipeHandler extends TemplateRecipeHandler { for(int i = 0; i < recipe.outputFluids.length; i++) { FluidStack out = recipe.outputFluids[i]; if(out == null) continue; - ItemStack drop = ItemFluidIcon.make(out.type, out.fill); + ItemStack drop = ItemFluidIcon.make(out); this.fluidOut[i] = new PositionedStack(drop, 120 + (i % 2) * 18, 6); } diff --git a/src/main/java/com/hbm/handler/nei/CokingHandler.java b/src/main/java/com/hbm/handler/nei/CokingHandler.java index da3cb101d..a0227147e 100644 --- a/src/main/java/com/hbm/handler/nei/CokingHandler.java +++ b/src/main/java/com/hbm/handler/nei/CokingHandler.java @@ -1,6 +1,9 @@ package com.hbm.handler.nei; +import java.awt.Rectangle; + import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIMachineCoker; import com.hbm.inventory.recipes.CokerRecipes; public class CokingHandler extends NEIUniversalHandler { @@ -13,4 +16,12 @@ public class CokingHandler extends NEIUniversalHandler { public String getKey() { return "ntmCoking"; } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(55, 15, 36, 18), "ntmCoking")); + guiGui.add(GUIMachineCoker.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } } diff --git a/src/main/java/com/hbm/handler/nei/CombinationHandler.java b/src/main/java/com/hbm/handler/nei/CombinationHandler.java index 8537c12b0..0c07afbbc 100644 --- a/src/main/java/com/hbm/handler/nei/CombinationHandler.java +++ b/src/main/java/com/hbm/handler/nei/CombinationHandler.java @@ -1,6 +1,9 @@ package com.hbm.handler.nei; +import java.awt.Rectangle; + import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIFurnaceCombo; import com.hbm.inventory.recipes.CombinationRecipes; public class CombinationHandler extends NEIUniversalHandler { @@ -13,4 +16,12 @@ public class CombinationHandler extends NEIUniversalHandler { public String getKey() { return "ntmCombination"; } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(49, 44, 18, 18), "ntmCombination")); + guiGui.add(GUIFurnaceCombo.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } } diff --git a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java index 240ad58af..c845f1601 100644 --- a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java +++ b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java @@ -3,6 +3,7 @@ package com.hbm.handler.nei; import java.util.HashMap; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.material.Mats; import com.hbm.items.ModItems; import com.hbm.util.ItemStackUtil; @@ -45,13 +46,13 @@ public class ConstructionHandler extends NEIUniversalHandler { /* ITER */ ItemStack[] iter = new ItemStack[] { new ItemStack(ModBlocks.fusion_conductor, 36), - new ItemStack(ModBlocks.fusion_conductor, 64), - new ItemStack(ModBlocks.fusion_conductor, 64), - new ItemStack(ModBlocks.fusion_conductor, 64), - new ItemStack(ModBlocks.fusion_conductor, 64), + ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.fusion_conductor, 256), EnumChatFormatting.RED + "4x64"), + new ItemStack(ModItems.plate_cast, 36, Mats.MAT_STEEL.id), + ItemStackUtil.addTooltipToStack(new ItemStack(ModItems.plate_cast, 256, Mats.MAT_STEEL.id), EnumChatFormatting.RED + "4x64"), new ItemStack(ModBlocks.fusion_center, 64), new ItemStack(ModBlocks.fusion_motor, 4), - new ItemStack(ModBlocks.reinforced_glass, 8)}; + new ItemStack(ModBlocks.reinforced_glass, 8), + new ItemStack(ModItems.blowtorch)}; bufferedRecipes.put(iter, new ItemStack(ModBlocks.iter)); bufferedTools.put(iter, new ItemStack(ModBlocks.struct_iter_core)); diff --git a/src/main/java/com/hbm/handler/nei/CrucibleAlloyingHandler.java b/src/main/java/com/hbm/handler/nei/CrucibleAlloyingHandler.java index 1f2d9a359..80ccd314b 100644 --- a/src/main/java/com/hbm/handler/nei/CrucibleAlloyingHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrucibleAlloyingHandler.java @@ -35,8 +35,8 @@ public class CrucibleAlloyingHandler extends TemplateRecipeHandler { public RecipeSet(CrucibleRecipe recipe) { List inputs = new ArrayList(); List outputs = new ArrayList(); - for(MaterialStack stack : recipe.input) inputs.add(ItemScraps.create(stack)); - for(MaterialStack stack : recipe.output) outputs.add(ItemScraps.create(stack)); + for(MaterialStack stack : recipe.input) inputs.add(ItemScraps.create(stack, true)); + for(MaterialStack stack : recipe.output) outputs.add(ItemScraps.create(stack, true)); this.template = new PositionedStack(new ItemStack(ModItems.crucible_template, 1, recipe.getId()), 75, 6); this.crucible = new PositionedStack(new ItemStack(ModBlocks.machine_crucible), 75, 42); diff --git a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java new file mode 100644 index 000000000..844af6e60 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java @@ -0,0 +1,206 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.config.CustomMachineConfigJSON; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.recipes.CustomMachineRecipes; +import com.hbm.inventory.recipes.CustomMachineRecipes.CustomMachineRecipe; +import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.lib.RefStrings; +import com.hbm.util.ItemStackUtil; +import com.hbm.util.Tuple.Pair; + +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.TemplateRecipeHandler; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; + +public class CustomMachineHandler extends TemplateRecipeHandler { + + public LinkedList transferRectsRec = new LinkedList(); + public LinkedList> guiRec = new LinkedList>(); + + public MachineConfiguration conf; + + @Override + public TemplateRecipeHandler newInstance() { // brick by brick, suck my dick + try { + return new CustomMachineHandler(conf); + } catch(Exception e) { + throw new RuntimeException(e); + } + } + + public CustomMachineHandler(MachineConfiguration conf) { + super(); + this.conf = conf; + loadTransferRects(); + RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); + } + + public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { + + List inputs = new ArrayList(); + PositionedStack machine; + List outputs = new ArrayList(); + + public RecipeSet(CustomMachineRecipe recipe) { + + for(int i = 0; i < 3; i++) if(recipe.inputFluids.length > i) inputs.add(new PositionedStack(ItemFluidIcon.make(recipe.inputFluids[i]), 12 + i * 18, 6)); + for(int i = 0; i < 3; i++) if(recipe.inputItems.length > i) inputs.add(new PositionedStack(recipe.inputItems[i].extractForNEI(), 12 + i * 18, 24)); + for(int i = 3; i < 6; i++) if(recipe.inputItems.length > i) inputs.add(new PositionedStack(recipe.inputItems[i].extractForNEI(), 12 + (i - 3) * 18, 42)); + + for(int i = 0; i < 3; i++) if(recipe.outputFluids.length > i) outputs.add(new PositionedStack(ItemFluidIcon.make(recipe.outputFluids[i]), 102 + i * 18, 6)); + + for(int i = 0; i < 3; i++) if(recipe.outputItems.length > i) { + Pair pair = recipe.outputItems[i]; + ItemStack out = pair.getKey().copy(); + if(pair.getValue() != 1) { + ItemStackUtil.addTooltipToStack(out, EnumChatFormatting.RED + "" + (((int)(pair.getValue() * 1000)) / 10D) + "%"); + } + outputs.add(new PositionedStack(out, 102 + i * 18, 24)); + } + + for(int i = 3; i < 6; i++) if(recipe.outputItems.length > i) { + Pair pair = recipe.outputItems[i]; + ItemStack out = pair.getKey().copy(); + if(pair.getValue() != 1) { + ItemStackUtil.addTooltipToStack(out, EnumChatFormatting.RED + "" + (((int)(pair.getValue() * 1000)) / 10D) + "%"); + } + outputs.add(new PositionedStack(out, 102 + (i - 3) * 18, 42)); + } + + this.machine = new PositionedStack(new ItemStack(ModBlocks.custom_machine, 1, 100 + CustomMachineConfigJSON.niceList.indexOf(conf)), 75, 42); + } + + @Override + public List getIngredients() { + return getCycledIngredients(cycleticks / 20, inputs); + } + + @Override + public PositionedStack getResult() { + return outputs.get(0); + } + + @Override + public List getOtherStacks() { + List other = new ArrayList(); + other.addAll(inputs); + other.add(machine); + other.addAll(outputs); + return getCycledIngredients(cycleticks / 20, other); + } + } + + @Override + public String getRecipeName() { + return conf.localizedName; + } + + @Override + public String getGuiTexture() { + return RefStrings.MODID + ":textures/gui/nei/gui_nei_custom.png"; + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) { + + if(outputId.equals("ntm_" + conf.unlocalizedName)) { + + List recipes = CustomMachineRecipes.recipes.get(conf.recipeKey); + + if(recipes != null) for(CustomMachineRecipe recipe : recipes) { + this.arecipes.add(new RecipeSet(recipe)); + } + } else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) { + + List recipes = CustomMachineRecipes.recipes.get(conf.recipeKey); + + if(recipes != null) outer:for(CustomMachineRecipe recipe : recipes) { + + for(Pair stack : recipe.outputItems) { + + if(NEIServerUtils.areStacksSameTypeCrafting(stack.getKey(), result)) { + this.arecipes.add(new RecipeSet(recipe)); + continue outer; + } + } + + for(FluidStack fluid : recipe.outputFluids) { + ItemStack drop = ItemFluidIcon.make(fluid); + + if(compareFluidStacks(result, drop)) { + this.arecipes.add(new RecipeSet(recipe)); + continue outer; + } + } + } + } + + @Override + public void loadUsageRecipes(String inputId, Object... ingredients) { + + if(inputId.equals("ntm_" + conf.unlocalizedName)) { + loadCraftingRecipes("ntm_" + conf.unlocalizedName, new Object[0]); + } else { + super.loadUsageRecipes(inputId, ingredients); + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) { + + List recipes = CustomMachineRecipes.recipes.get(conf.recipeKey); + + if(recipes != null) outer:for(CustomMachineRecipe recipe : recipes) { + + for(AStack stack : recipe.inputItems) { + + List stacks = stack.extractForNEI(); + + for(ItemStack sta : stacks) { + if(NEIServerUtils.areStacksSameTypeCrafting(ingredient, sta)) { + this.arecipes.add(new RecipeSet(recipe)); + continue outer; + } + } + } + + for(FluidStack fluid : recipe.inputFluids) { + ItemStack drop = ItemFluidIcon.make(fluid); + + if(compareFluidStacks(ingredient, drop)) { + this.arecipes.add(new RecipeSet(recipe)); + continue outer; + } + } + } + } + + public static boolean compareFluidStacks(ItemStack sta1, ItemStack sta2) { + return sta1.getItem() == sta2.getItem() && sta1.getItemDamage() == sta2.getItemDamage(); + } + + @Override + public void loadTransferRects() { + if(this.conf == null) return; + transferRects.add(new RecipeTransferRect(new Rectangle(65, 23, 36, 18), "ntm_" + conf.unlocalizedName)); + RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); + } +} diff --git a/src/main/java/com/hbm/handler/nei/ElectrolyserFluidHandler.java b/src/main/java/com/hbm/handler/nei/ElectrolyserFluidHandler.java new file mode 100644 index 000000000..11af20db8 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/ElectrolyserFluidHandler.java @@ -0,0 +1,27 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIElectrolyserFluid; +import com.hbm.inventory.recipes.ElectrolyserFluidRecipes; + +public class ElectrolyserFluidHandler extends NEIUniversalHandler { + + public ElectrolyserFluidHandler() { + super("Electrolysis", ModBlocks.machine_electrolyser, ElectrolyserFluidRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmElectrolysisFluid"; + } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(57, 15, 12, 40), "ntmElectrolysisFluid")); + guiGui.add(GUIElectrolyserFluid.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } +} diff --git a/src/main/java/com/hbm/handler/nei/ElectrolyserMetalHandler.java b/src/main/java/com/hbm/handler/nei/ElectrolyserMetalHandler.java new file mode 100644 index 000000000..f1d5b6e68 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/ElectrolyserMetalHandler.java @@ -0,0 +1,27 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIElectrolyserMetal; +import com.hbm.inventory.recipes.ElectrolyserMetalRecipes; + +public class ElectrolyserMetalHandler extends NEIUniversalHandler { + + public ElectrolyserMetalHandler() { + super("Electrolysis", ModBlocks.machine_electrolyser, ElectrolyserMetalRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmElectrolysisMetal"; + } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(2, 35, 22, 25), "ntmElectrolysisMetal")); + guiGui.add(GUIElectrolyserMetal.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } +} diff --git a/src/main/java/com/hbm/handler/nei/ExposureChamberHandler.java b/src/main/java/com/hbm/handler/nei/ExposureChamberHandler.java new file mode 100644 index 000000000..4969763e4 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/ExposureChamberHandler.java @@ -0,0 +1,27 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIMachineExposureChamber; +import com.hbm.inventory.recipes.ExposureChamberRecipes; + +public class ExposureChamberHandler extends NEIUniversalHandler { + + public ExposureChamberHandler() { + super("Exposure Chamber", ModBlocks.machine_exposure_chamber, ExposureChamberRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmExposure"; + } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(31, 28, 41, 10), "ntmExposure")); + guiGui.add(GUIMachineExposureChamber.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } +} diff --git a/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java b/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java index 21ba387e3..cbd520858 100644 --- a/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java @@ -6,6 +6,7 @@ import java.awt.Rectangle; import java.util.Arrays; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import com.hbm.inventory.gui.GUIHadron; import com.hbm.inventory.recipes.HadronRecipes; @@ -141,7 +142,7 @@ public class HadronRecipeHandler extends TemplateRecipeHandler { FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; - String mom = String.format("%,d", rec.momentum); + String mom = String.format(Locale.US, "%,d", rec.momentum); fontRenderer.drawString(mom, -fontRenderer.getStringWidth(mom) / 2 + 30, 42, 0x404040); } diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 3f4fcbe67..0bb53100a 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -56,8 +56,10 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { PositionedStack[] input; PositionedStack[] output; PositionedStack machinePositioned; + Object originalInputInstance; public RecipeSet(ItemStack[][] in, ItemStack[][] out, Object originalInputInstance /* for custom machine lookup */) { + this.originalInputInstance = originalInputInstance; input = new PositionedStack[in.length]; int[][] inPos = NEIUniversalHandler.getInputCoords(in.length); diff --git a/src/main/java/com/hbm/handler/nei/PressRecipeHandler.java b/src/main/java/com/hbm/handler/nei/PressRecipeHandler.java index cc776c8fd..fbc14c5cd 100644 --- a/src/main/java/com/hbm/handler/nei/PressRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/PressRecipeHandler.java @@ -110,7 +110,7 @@ public class PressRecipeHandler extends TemplateRecipeHandler { if(in.matchesRecipe(ingredient, true)) this.arecipes.add(new SmeltingSet(ItemStamp.stamps.get(recipe.getKey().getValue()), new ComparableStack(ingredient), recipe.getValue())); - else if(ingredient.getItem() instanceof ItemStamp && ((ItemStamp)ingredient.getItem()).type == stamp) + else if(ingredient.getItem() instanceof ItemStamp && ((ItemStamp)ingredient.getItem()).getStampType(ingredient.getItem(), ingredient.getItemDamage()) == stamp) this.arecipes.add(new SmeltingSet(ingredient, recipe.getKey().getKey(), recipe.getValue())); } } diff --git a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java new file mode 100644 index 000000000..4ff3b70c1 --- /dev/null +++ b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java @@ -0,0 +1,337 @@ +package com.hbm.handler.pollution; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map.Entry; +import java.util.UUID; + +import com.hbm.config.RadiationConfig; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.TickEvent; +import cpw.mods.fml.common.gameevent.TickEvent.Phase; +import cpw.mods.fml.relauncher.Side; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.monster.IMob; +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; +import net.minecraftforge.event.entity.living.LivingSpawnEvent; +import net.minecraftforge.event.world.WorldEvent; + +public class PollutionHandler { + + public static final String fileName = "hbmpollution.dat"; + public static HashMap perWorld = new HashMap(); + + /** Baserate of soot generation for a furnace-equivalent machine per second */ + public static final float SOOT_PER_SECOND = 1F / 25F; + /** Baserate of heavy metal generation, balanced around the soot values of combustion engines */ + public static final float HEAVY_METAL_PER_SECOND = 1F / 50F; + + /////////////////////// + /// UTILITY METHODS /// + /////////////////////// + public static void incrementPollution(World world, int x, int y, int z, PollutionType type, float amount) { + + if(!RadiationConfig.enablePollution) return; + + PollutionPerWorld ppw = perWorld.get(world); + if(ppw == null) return; + ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6); + PollutionData data = ppw.pollution.get(pos); + if(data == null) { + data = new PollutionData(); + ppw.pollution.put(pos, data); + } + data.pollution[type.ordinal()] = MathHelper.clamp_float(data.pollution[type.ordinal()] + amount, 0F, 10_000F); + } + + public static void decrementPollution(World world, int x, int y, int z, PollutionType type, float amount) { + incrementPollution(world, x, y, z, type, -amount); + } + + public static void setPollution(World world, int x, int y, int z, PollutionType type, float amount) { + + if(!RadiationConfig.enablePollution) return; + + PollutionPerWorld ppw = perWorld.get(world); + if(ppw == null) return; + ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6); + PollutionData data = ppw.pollution.get(pos); + if(data == null) { + data = new PollutionData(); + ppw.pollution.put(pos, data); + } + data.pollution[type.ordinal()] = amount; + } + + public static float getPollution(World world, int x, int y, int z, PollutionType type) { + + if(!RadiationConfig.enablePollution) return 0; + + PollutionPerWorld ppw = perWorld.get(world); + if(ppw == null) return 0F; + ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6); + PollutionData data = ppw.pollution.get(pos); + if(data == null) return 0F; + return data.pollution[type.ordinal()]; + } + + public static PollutionData getPollutionData(World world, int x, int y, int z) { + + if(!RadiationConfig.enablePollution) return null; + + PollutionPerWorld ppw = perWorld.get(world); + if(ppw == null) return null; + ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6); + PollutionData data = ppw.pollution.get(pos); + return data; + } + + ////////////////////// + /// EVENT HANDLING /// + ////////////////////// + @SubscribeEvent + public void onWorldLoad(WorldEvent.Load event) { + if(!event.world.isRemote && RadiationConfig.enablePollution) { + WorldServer world = (WorldServer) event.world; + String dirPath = getDataDir(world); + + try { + File pollutionFile = new File(dirPath, fileName); + + if(pollutionFile != null) { + + if(pollutionFile.exists()) { + FileInputStream io = new FileInputStream(pollutionFile); + NBTTagCompound data = CompressedStreamTools.readCompressed(io); + io.close(); + perWorld.put(event.world, new PollutionPerWorld(data)); + } else { + perWorld.put(event.world, new PollutionPerWorld()); + } + } + } catch(Exception ex) { + ex.printStackTrace(); + } + } + } + + @SubscribeEvent + public void onWorldUnload(WorldEvent.Unload event) { + if(!event.world.isRemote) perWorld.remove(event.world); + } + + @SubscribeEvent + public void onWorldSave(WorldEvent.Save event) { + if(!event.world.isRemote) { + WorldServer world = (WorldServer) event.world; + String dirPath = getDataDir(world); + File pollutionFile = new File(dirPath, fileName); + + try { + if(!pollutionFile.getParentFile().exists()) pollutionFile.getParentFile().mkdirs(); + if(!pollutionFile.exists()) pollutionFile.createNewFile(); + PollutionPerWorld ppw = perWorld.get(world); + if(ppw != null) { + NBTTagCompound data = ppw.writeToNBT(); + CompressedStreamTools.writeCompressed(data, new FileOutputStream(pollutionFile)); + } + } catch(Exception ex) { + System.out.println("Failed to write " + pollutionFile.getAbsolutePath()); + ex.printStackTrace(); + } + } + } + + public String getDataDir(WorldServer world) { + String dir = world.getSaveHandler().getWorldDirectory().getAbsolutePath(); + // Crucible and probably Thermos provide dimId by themselves + String dimId = File.separator + "DIM" + world.provider.dimensionId; + if(world.provider.dimensionId != 0 && !dir.endsWith(dimId)) { + dir += dimId; + } + dir += File.separator + "data"; + return dir; + } + + ////////////////////////// + /// SYSTEM UPDATE LOOP /// + ////////////////////////// + int eggTimer = 0; + @SubscribeEvent + public void updateSystem(TickEvent.ServerTickEvent event) { + + if(event.side == Side.SERVER && event.phase == Phase.END) { + + eggTimer++; + if(eggTimer < 60) return; + eggTimer = 0; + + for(Entry entry : perWorld.entrySet()) { + HashMap newPollution = new HashMap(); + + for(Entry chunk : entry.getValue().pollution.entrySet()) { + int x = chunk.getKey().chunkXPos; + int z = chunk.getKey().chunkZPos; + PollutionData data = chunk.getValue(); + + float[] pollutionForNeightbors = new float[PollutionType.values().length]; + int S = PollutionType.SOOT.ordinal(); + int H = PollutionType.HEAVYMETAL.ordinal(); + int P = PollutionType.POISON.ordinal(); + + /* CALCULATION */ + if(data.pollution[S] > 15) { + pollutionForNeightbors[S] = data.pollution[S] * 0.05F; + data.pollution[S] *= 0.8F; + } else { + data.pollution[S] *= 0.99F; + } + + data.pollution[H] *= 0.9995F; + + if(data.pollution[P] > 10) { + pollutionForNeightbors[P] = data.pollution[P] * 0.025F; + data.pollution[P] *= 0.9F; + } else { + data.pollution[P] *= 0.995F; + } + + /* SPREADING */ + //apply new data to self + PollutionData newData = newPollution.get(chunk.getKey()); + if(newData == null) newData = new PollutionData(); + + boolean shouldPut = false; + for(int i = 0; i < newData.pollution.length; i++) { + newData.pollution[i] += data.pollution[i]; + if(newData.pollution[i] > 0) shouldPut = true; + } + if(shouldPut) newPollution.put(chunk.getKey(), newData); + + //apply neighbor data to neighboring chunks + int[][] offsets = new int[][] {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; + for(int[] offset : offsets) { + ChunkCoordIntPair offPos = new ChunkCoordIntPair(x + offset[0], z + offset[1]); + PollutionData offsetData = newPollution.get(offPos); + if(offsetData == null) offsetData = new PollutionData(); + + shouldPut = false; + for(int i = 0; i < offsetData.pollution.length; i++) { + offsetData.pollution[i] += pollutionForNeightbors[i]; + if(offsetData.pollution[i] > 0) shouldPut = true; + } + if(shouldPut) newPollution.put(offPos, offsetData); + } + } + + entry.getValue().pollution.clear(); + entry.getValue().pollution.putAll(newPollution); + } + } + } + + ////////////////////// + /// DATA STRUCTURE /// + ////////////////////// + public static class PollutionPerWorld { + public HashMap pollution = new HashMap(); + + public PollutionPerWorld() { } + + public PollutionPerWorld(NBTTagCompound data) { + + NBTTagList list = data.getTagList("entries", 10); + + for(int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt = list.getCompoundTagAt(i); + int chunkX = nbt.getInteger("chunkX"); + int chunkZ = nbt.getInteger("chunkZ"); + pollution.put(new ChunkCoordIntPair(chunkX, chunkZ), PollutionData.fromNBT(nbt)); + } + } + + public NBTTagCompound writeToNBT() { + + NBTTagCompound data = new NBTTagCompound(); + + NBTTagList list = new NBTTagList(); + + for(Entry entry : pollution.entrySet()) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setInteger("chunkX", entry.getKey().chunkXPos); + nbt.setInteger("chunkZ", entry.getKey().chunkZPos); + entry.getValue().toNBT(nbt); + list.appendTag(nbt); + } + + data.setTag("entries", list); + + return data; + } + } + + public static class PollutionData { + public float[] pollution = new float[PollutionType.values().length]; + + public static PollutionData fromNBT(NBTTagCompound nbt) { + PollutionData data = new PollutionData(); + + for(int i = 0; i < PollutionType.values().length; i++) { + data.pollution[i] = nbt.getFloat(PollutionType.values()[i].name().toLowerCase(Locale.US)); + } + + return data; + } + + public void toNBT(NBTTagCompound nbt) { + for(int i = 0; i < PollutionType.values().length; i++) { + nbt.setFloat(PollutionType.values()[i].name().toLowerCase(Locale.US), pollution[i]); + } + } + } + + public static enum PollutionType { + SOOT, POISON, HEAVYMETAL, FALLOUT; + } + + /////////////////// + /// MOB EFFECTS /// + /////////////////// + + public static final UUID maxHealth = UUID.fromString("25462f6c-2cb2-4ca8-9b47-3a011cc61207"); + public static final UUID attackDamage = UUID.fromString("8f442d7c-d03f-49f6-a040-249ae742eed9"); + + @SubscribeEvent + public void decorateMob(LivingSpawnEvent event) { + + if(!RadiationConfig.enablePollution) return; + + World world = event.world; + if(world.isRemote) return; + EntityLivingBase living = event.entityLiving; + + PollutionData data = getPollutionData(world, (int) Math.floor(event.x), (int) Math.floor(event.y), (int) Math.floor(event.z)); + if(data == null) return; + + if(living instanceof IMob) { + + if(data.pollution[PollutionType.SOOT.ordinal()] > RadiationConfig.buffMobThreshold) { + if(living.getEntityAttribute(SharedMonsterAttributes.maxHealth) != null && living.getEntityAttribute(SharedMonsterAttributes.maxHealth).getModifier(maxHealth) == null) living.getEntityAttribute(SharedMonsterAttributes.maxHealth).applyModifier(new AttributeModifier(maxHealth, "Soot Anger Health Increase", 1D, 1)); + if(living.getEntityAttribute(SharedMonsterAttributes.attackDamage) != null && living.getEntityAttribute(SharedMonsterAttributes.attackDamage).getModifier(attackDamage) == null) living.getEntityAttribute(SharedMonsterAttributes.attackDamage).applyModifier(new AttributeModifier(attackDamage, "Soot Anger Damage Increase", 1.5D, 1)); + living.heal(living.getMaxHealth()); + } + } + } +} diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler.java index 6e53a8838..f351d2a27 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler.java @@ -17,6 +17,7 @@ public abstract class ChunkRadiationHandler { public abstract void setRadiation(World world, int x, int y, int z, float rad); public abstract void incrementRad(World world, int x, int y, int z, float rad); public abstract void decrementRad(World world, int x, int y, int z, float rad); + public abstract void clearSystem(World world); /* * Proxy'd event handlers diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java index 5c81a416e..30066a91e 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java @@ -109,6 +109,15 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler { } } + @Override + public void clearSystem(World world) { + ThreeDimRadiationPerWorld radWorld = perWorld.get(world); + + if(radWorld != null) { + radWorld.radiation.clear(); + } + } + @Override public void receiveWorldLoad(WorldEvent.Load event) { if(!event.world.isRemote) diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerBlank.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerBlank.java index c28a69348..76cc31af0 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerBlank.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerBlank.java @@ -4,20 +4,10 @@ import net.minecraft.world.World; public class ChunkRadiationHandlerBlank extends ChunkRadiationHandler { - @Override - public float getRadiation(World world, int x, int y, int z) { - return 0; - } - - @Override - public void setRadiation(World world, int x, int y, int z, float rad) { } - - @Override - public void incrementRad(World world, int x, int y, int z, float rad) { } - - @Override - public void decrementRad(World world, int x, int y, int z, float rad) { } - - @Override - public void updateSystem() { } + @Override public float getRadiation(World world, int x, int y, int z) { return 0; } + @Override public void setRadiation(World world, int x, int y, int z, float rad) { } + @Override public void incrementRad(World world, int x, int y, int z, float rad) { } + @Override public void decrementRad(World world, int x, int y, int z, float rad) { } + @Override public void updateSystem() { } + @Override public void clearSystem(World world) { } } diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerNT.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerNT.java index c95c180d5..50144d6aa 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerNT.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerNT.java @@ -38,6 +38,18 @@ public class ChunkRadiationHandlerNT extends ChunkRadiationHandler { private static HashMap worldMap = new HashMap(); + @Override + public void clearSystem(World world) { + WorldRadiationData radWorld = worldMap.get(world); + + if(radWorld != null) { + radWorld.data.clear(); + radWorld.activePockets.clear(); + radWorld.dirtyChunks.clear(); + radWorld.dirtyChunks2.clear(); + } + } + @Override public void incrementRad(World world, int x, int y, int z, float rad) { if(!world.blockExists(x, y, z)) { diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java index d080eb6e6..161dd5522 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java @@ -102,7 +102,7 @@ public class ChunkRadiationHandlerSimple extends ChunkRadiationHandler { } float rad = radiation.get(newCoord); - if(rad > RadiationConfig.fogRad && world != null && world.rand.nextInt(RadiationConfig.fogCh) == 0 && world.getChunkFromChunkCoords(coord.chunkXPos, coord.chunkZPos).isChunkLoaded) { + if(rad > RadiationConfig.fogRad && world != null && world.rand.nextInt(RadiationConfig.fogCh) == 0 && world.getChunkProvider().chunkExists(coord.chunkXPos, coord.chunkZPos)) { int x = coord.chunkXPos * 16 + world.rand.nextInt(16); int z = coord.chunkZPos * 16 + world.rand.nextInt(16); @@ -116,6 +116,15 @@ public class ChunkRadiationHandlerSimple extends ChunkRadiationHandler { } } + @Override + public void clearSystem(World world) { + SimpleRadiationPerWorld radWorld = perWorld.get(world); + + if(radWorld != null) { + radWorld.radiation.clear(); + } + } + @Override public void receiveWorldLoad(WorldEvent.Load event) { if(!event.world.isRemote) diff --git a/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationContainer.java b/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationContainer.java index f91e4e51f..2f66ebcb1 100644 --- a/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationContainer.java +++ b/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationContainer.java @@ -23,15 +23,16 @@ public class HazardTransformerRadiationContainer extends HazardTransformerBase { boolean isCrate = Block.getBlockFromItem(stack.getItem()) instanceof BlockStorageCrate; boolean isBox = stack.getItem() == ModItems.containment_box; + boolean isBag = stack.getItem() == ModItems.plastic_bag; - if(!isCrate && !isBox) return; + if(!isCrate && !isBox && !isBag) return; if(!stack.hasTagCompound()) return; float radiation = 0; if(isCrate) { - for(int i = 0; i < 54; i++) { + for(int i = 0; i < 104; i++) { ItemStack held = ItemStack.loadItemStackFromNBT(stack.stackTagCompound.getCompoundTag("slot" + i)); if(held != null) { @@ -54,6 +55,20 @@ public class HazardTransformerRadiationContainer extends HazardTransformerBase { radiation = (float) BobMathUtil.squirt(radiation); } + if(isBag) { + + ItemStack[] fromNBT = ItemStackUtil.readStacksFromNBT(stack, 1); + if(fromNBT == null) return; + + for(ItemStack held : fromNBT) { + if(held != null) { + radiation += HazardSystem.getHazardLevelFromStack(held, HazardRegistry.RADIATION) * held.stackSize; + } + } + + radiation *= 2F; + } + if(radiation > 0) { entries.add(new HazardEntry(HazardRegistry.RADIATION, radiation)); } diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java b/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java index 2a2dbb9e5..f7d6a3c49 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java @@ -6,7 +6,6 @@ import com.hbm.config.RadiationConfig; import com.hbm.hazard.modifier.HazardModifier; import com.hbm.util.I18nUtil; -import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -33,7 +32,7 @@ public class HazardTypeHydroactive extends HazardTypeBase { if(RadiationConfig.disableHydro) return; - if(item.worldObj.getBlock((int)Math.floor(item.posX), (int)Math.floor(item.posY), (int)Math.floor(item.posZ)).getMaterial() == Material.water) { + if(item.isWet()) { item.setDead(); item.worldObj.newExplosion(null, item.posX, item.posY + item.height * 0.5, item.posZ, level, false, true); } diff --git a/src/main/java/com/hbm/interfaces/IBulletHitBehavior.java b/src/main/java/com/hbm/interfaces/IBulletHitBehavior.java deleted file mode 100644 index b07aab829..000000000 --- a/src/main/java/com/hbm/interfaces/IBulletHitBehavior.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.hbm.interfaces; - -import com.hbm.entity.projectile.EntityBulletBase; - -import net.minecraft.entity.Entity; - -public interface IBulletHitBehavior { - - //entity is hit, bullet dies - public void behaveEntityHit(EntityBulletBase bullet, Entity hit); - -} diff --git a/src/main/java/com/hbm/interfaces/IBulletHurtBehavior.java b/src/main/java/com/hbm/interfaces/IBulletHurtBehavior.java deleted file mode 100644 index 4aa57a5a2..000000000 --- a/src/main/java/com/hbm/interfaces/IBulletHurtBehavior.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.interfaces; - -import com.hbm.entity.projectile.EntityBulletBase; - -import net.minecraft.entity.Entity; - -public interface IBulletHurtBehavior { - - //entity is hit - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit); -} diff --git a/src/main/java/com/hbm/interfaces/IBulletImpactBehavior.java b/src/main/java/com/hbm/interfaces/IBulletImpactBehavior.java deleted file mode 100644 index 30c067d79..000000000 --- a/src/main/java/com/hbm/interfaces/IBulletImpactBehavior.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.interfaces; - -import com.hbm.entity.projectile.EntityBulletBase; - -public interface IBulletImpactBehavior { - - //block is hit, bullet dies - //also called when an entity is hit but with -1 coords, so beware - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z); - -} diff --git a/src/main/java/com/hbm/interfaces/IBulletRicochetBehavior.java b/src/main/java/com/hbm/interfaces/IBulletRicochetBehavior.java deleted file mode 100644 index 4f4f5c5f6..000000000 --- a/src/main/java/com/hbm/interfaces/IBulletRicochetBehavior.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.hbm.interfaces; - -import com.hbm.entity.projectile.EntityBulletBase; - -public interface IBulletRicochetBehavior { - - //block is hit, bullet ricochets - public void behaveBlockRicochet(EntityBulletBase bullet, int x, int y, int z); - -} diff --git a/src/main/java/com/hbm/interfaces/IBulletUpdateBehavior.java b/src/main/java/com/hbm/interfaces/IBulletUpdateBehavior.java deleted file mode 100644 index 9f614c41e..000000000 --- a/src/main/java/com/hbm/interfaces/IBulletUpdateBehavior.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.hbm.interfaces; - -import com.hbm.entity.projectile.EntityBulletBase; - -public interface IBulletUpdateBehavior { - - //once every update, for lcokon, steering and other memes - public void behaveUpdate(EntityBulletBase bullet); - -} diff --git a/src/main/java/com/hbm/interfaces/IControlReceiver.java b/src/main/java/com/hbm/interfaces/IControlReceiver.java index 74ff5d0c6..fe49fdf2e 100644 --- a/src/main/java/com/hbm/interfaces/IControlReceiver.java +++ b/src/main/java/com/hbm/interfaces/IControlReceiver.java @@ -10,6 +10,8 @@ import net.minecraft.nbt.NBTTagCompound; public interface IControlReceiver { public boolean hasPermission(EntityPlayer player); - + public void receiveControl(NBTTagCompound data); + /* this was the easiest way of doing this without needing to change all 7 quadrillion implementors */ + public default void receiveControl(EntityPlayer player, NBTTagCompound data) { } } diff --git a/src/main/java/com/hbm/interfaces/ICustomWarhead.java b/src/main/java/com/hbm/interfaces/ICustomWarhead.java index 9c9301bc2..656425cd1 100644 --- a/src/main/java/com/hbm/interfaces/ICustomWarhead.java +++ b/src/main/java/com/hbm/interfaces/ICustomWarhead.java @@ -3,6 +3,7 @@ package com.hbm.interfaces; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import org.apache.logging.log4j.Level; @@ -198,7 +199,7 @@ public interface ICustomWarhead { for (Enum f : combinedFuels) if (data.getFloat(f.toString()) > 0) - tooltip.add(String.format("%s: %skg (%s)", I18nUtil.resolveKey("warheadFuel.".concat(f.toString())), df.format(data.getFloat(f.toString())), BobMathUtil.toPercentage(data.getFloat(f.toString()), data.getFloat(NBT_MASS)))); + tooltip.add(String.format(Locale.US, "%s: %skg (%s)", I18nUtil.resolveKey("warheadFuel.".concat(f.toString())), df.format(data.getFloat(f.toString())), BobMathUtil.toPercentage(data.getFloat(f.toString()), data.getFloat(NBT_MASS)))); } public default void addTooltip(ItemStack stack, List tooltip) diff --git a/src/main/java/com/hbm/interfaces/IDoor.java b/src/main/java/com/hbm/interfaces/IDoor.java index 2b101dd76..a0c539a28 100644 --- a/src/main/java/com/hbm/interfaces/IDoor.java +++ b/src/main/java/com/hbm/interfaces/IDoor.java @@ -2,19 +2,23 @@ package com.hbm.interfaces; public interface IDoor { - public void open(); - public void close(); - public DoorState getState(); - public void toggle(); - public default boolean setTexture(String tex) { + void open(); + void close(); + DoorState getState(); + void toggle(); + default boolean setTexture(String tex) { + return false; + } + default void setTextureState(byte tex) { } + + default boolean setSkinIndex(byte skinIndex) { return false; } - public default void setTextureState(byte tex) { }; - public enum DoorState { + enum DoorState { CLOSED, OPEN, CLOSING, - OPENING; + OPENING } } diff --git a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java index aacd3c2f2..f6f3d2971 100644 --- a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java +++ b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ModBlocks; +import com.hbm.config.GeneralConfig; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids.CD_Canister; @@ -22,6 +23,7 @@ public class FluidContainerRegistry { public static void register() { FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(Items.water_bucket), new ItemStack(Items.bucket), Fluids.WATER, 1000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(Items.potionitem), new ItemStack(Items.glass_bottle), Fluids.WATER, 250)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(Items.lava_bucket), new ItemStack(Items.bucket), Fluids.LAVA, 1000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.bucket_mud), new ItemStack(Items.bucket), Fluids.WATZ, 1000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.bucket_schrabidic_acid), new ItemStack(Items.bucket), Fluids.SCHRABIDIC, 1000)); @@ -32,7 +34,7 @@ public class FluidContainerRegistry { FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.lox_barrel), new ItemStack(ModItems.tank_steel), Fluids.OXYGEN, 10000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.ore_oil), null, Fluids.OIL, 250)); - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.ore_gneiss_gas), null, Fluids.PETROLEUM, 250)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.ore_gneiss_gas), null, Fluids.PETROLEUM, GeneralConfig.enable528 ? 50 : 250)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.cell_deuterium), new ItemStack(ModItems.cell_empty), Fluids.DEUTERIUM, 1000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.cell_tritium), new ItemStack(ModItems.cell_empty), Fluids.TRITIUM, 1000)); @@ -60,18 +62,19 @@ public class FluidContainerRegistry { for(int i = 1; i < fluids.length; i++) { FluidType type = fluids[i]; + int id = type.getID(); - if(type.getContainer(CD_Canister.class) != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.canister_full, 1, i), new ItemStack(ModItems.canister_empty), Fluids.fromID(i), 1000)); - if(type.getContainer(CD_Gastank.class) != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.gas_full, 1, i), new ItemStack(ModItems.gas_empty), Fluids.fromID(i), 1000)); + if(type.getContainer(CD_Canister.class) != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.canister_full, 1, id), new ItemStack(ModItems.canister_empty), type, 1000)); + if(type.getContainer(CD_Gastank.class) != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.gas_full, 1, id), new ItemStack(ModItems.gas_empty), type, 1000)); if(type.hasNoContainer()) continue; - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_lead_full, 1, i), new ItemStack(ModItems.fluid_tank_lead_empty), Fluids.fromID(i), 1000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_lead_full, 1, id), new ItemStack(ModItems.fluid_tank_lead_empty), type, 1000)); if(type.needsLeadContainer()) continue; - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_full, 1, i), new ItemStack(ModItems.fluid_tank_empty), Fluids.fromID(i), 1000)); - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_barrel_full, 1, i), new ItemStack(ModItems.fluid_barrel_empty), Fluids.fromID(i), 16000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_full, 1, id), new ItemStack(ModItems.fluid_tank_empty), type, 1000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_barrel_full, 1, id), new ItemStack(ModItems.fluid_barrel_empty), type, 16000)); } Compat.registerCompatFluidContainers(); diff --git a/src/main/java/com/hbm/inventory/FluidStack.java b/src/main/java/com/hbm/inventory/FluidStack.java index f508ed0ab..03b001ef4 100644 --- a/src/main/java/com/hbm/inventory/FluidStack.java +++ b/src/main/java/com/hbm/inventory/FluidStack.java @@ -3,9 +3,10 @@ package com.hbm.inventory; import com.hbm.inventory.fluid.FluidType; public class FluidStack { - - public int fill; + public FluidType type; + public int fill; + public int pressure; public FluidStack(int fill, FluidType type) { this.fill = fill; @@ -13,7 +14,12 @@ public class FluidStack { } public FluidStack(FluidType type, int fill) { + this(type, fill, 0); + } + + public FluidStack(FluidType type, int fill, int pressure) { this.fill = fill; this.type = type; + this.pressure = pressure; } } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index fb39122a5..a64fdb6eb 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -23,6 +23,7 @@ import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior; import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ItemEnums.EnumBriquetteType; import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ItemEnums.EnumTarType; @@ -62,6 +63,7 @@ public class OreDictManager { public static final String KEY_LEAVES = "treeLeaves"; public static final String KEY_SAPLING = "treeSapling"; public static final String KEY_SAND = "sand"; + public static final String KEY_COBBLESTONE = "cobblestone"; public static final String KEY_BLACK = "dyeBlack"; public static final String KEY_RED = "dyeRed"; @@ -92,6 +94,7 @@ public class OreDictManager { public static final String KEY_TOOL_SCREWDRIVER = "ntmscrewdriver"; public static final String KEY_TOOL_HANDDRILL = "ntmhanddrill"; public static final String KEY_TOOL_CHEMISTRYSET = "ntmchemistryset"; + public static final String KEY_TOOL_TORCH = "ntmtorch"; public static final String KEY_CIRCUIT_BISMUTH = "circuitVersatile"; @@ -182,6 +185,7 @@ public class OreDictManager { public static final DictFrame PET = new DictFrame("PET"); public static final DictFrame PC = new DictFrame("Polycarbonate"); public static final DictFrame PVC = new DictFrame("PVC"); + public static final DictFrame LATEX = new DictFrame("Latex"); public static final DictFrame RUBBER = new DictFrame("Rubber"); public static final DictFrame MAGTUNG = new DictFrame("MagnetizedTungsten"); public static final DictFrame CMB = new DictFrame("CMBSteel"); @@ -209,6 +213,8 @@ public class OreDictManager { public static final DictFrame LIGCOKE = new DictFrame("LigniteCoke"); public static final DictFrame CINNABAR = new DictFrame("Cinnabar"); public static final DictFrame BORAX = new DictFrame("Borax"); + public static final DictFrame CHLOROCALCITE = new DictFrame("Chlorocalcite"); + public static final DictFrame SODALITE = new DictFrame("Sodalite"); public static final DictFrame VOLCANIC = new DictFrame("Volcanic"); public static final DictFrame HEMATITE = new DictFrame("Hematite"); public static final DictFrame MALACHITE = new DictFrame("Malachite"); @@ -218,6 +224,8 @@ public class OreDictManager { */ /** LITHIUM */ public static final DictFrame LI = new DictFrame("Lithium"); + /** SODIUM */ + public static final DictFrame NA = new DictFrame("Sodium"); /* * PHOSPHORUS */ @@ -270,6 +278,8 @@ public class OreDictManager { /* * COLLECTIONS */ + /** Any form of elastic polymer */ + public static final DictGroup ANY_RUBBER = new DictGroup("AnyRubber", LATEX, RUBBER); /** Any post oil polymer like teflon ("polymer") or bakelite */ public static final DictGroup ANY_PLASTIC = new DictGroup("AnyPlastic", POLYMER, BAKELITE); //using the Any prefix means that it's just the secondary prefix, and that shape prefixes are applicable /** Any post vacuum polymer like PET or PVC */ @@ -289,6 +299,7 @@ public class OreDictManager { public static final DictGroup ANY_TAR = new DictGroup("Tar", KEY_OIL_TAR, KEY_COAL_TAR, KEY_CRACK_TAR, KEY_WOOD_TAR); /** Any special post-RBMK gating material, namely bismuth and arsenic */ public static final DictFrame ANY_BISMOID = new DictFrame("AnyBismoid"); + public static final DictFrame ANY_ASH = new DictFrame("Ash"); public static void registerOres() { @@ -345,13 +356,13 @@ public class OreDictManager { W .ingot(ingot_tungsten) .dust(powder_tungsten) .block(block_tungsten) .ore(ore_tungsten, ore_nether_tungsten, ore_meteor_tungsten) .oreNether(ore_nether_tungsten); AL .ingot(ingot_aluminium) .dust(powder_aluminium) .plate(plate_aluminium) .block(block_aluminium) .ore(ore_aluminium, ore_meteor_aluminium); STEEL .ingot(ingot_steel) .dustSmall(powder_steel_tiny) .dust(powder_steel) .plate(plate_steel) .block(block_steel); - TCALLOY .ingot(ingot_tcalloy) .dust(powder_tcalloy); - CDALLOY .ingot(ingot_cdalloy); + TCALLOY .ingot(ingot_tcalloy) .dust(powder_tcalloy) .block(block_tcalloy); + CDALLOY .ingot(ingot_cdalloy) .block(block_cdalloy); PB .nugget(nugget_lead) .ingot(ingot_lead) .dust(powder_lead) .plate(plate_lead) .block(block_lead) .ore(ore_lead, ore_meteor_lead); - BI .nugget(nugget_bismuth) .ingot(ingot_bismuth) .dust(powder_bismuth); + BI .nugget(nugget_bismuth) .billet(billet_bismuth) .ingot(ingot_bismuth) .dust(powder_bismuth); AS .nugget(nugget_arsenic) .ingot(ingot_arsenic); CA .ingot(ingot_calcium) .dust(powder_calcium); - CD .ingot(ingot_cadmium) .dust(powder_cadmium); + CD .ingot(ingot_cadmium) .dust(powder_cadmium) .block(block_cadmium); TA .nugget(nugget_tantalium) .gem(gem_tantalium) .ingot(ingot_tantalium) .dust(powder_tantalium) .block(block_tantalium); COLTAN .ingot(fragment_coltan) .dust(powder_coltan_ore) .block(block_coltan) .ore(ore_coltan); NB .nugget(fragment_niobium) .ingot(ingot_niobium) .dustSmall(powder_niobium_tiny) .dust(powder_niobium) .block(block_niobium); @@ -362,6 +373,7 @@ public class OreDictManager { DURA .ingot(ingot_dura_steel) .dust(powder_dura_steel) .block(block_dura_steel); POLYMER .ingot(ingot_polymer) .dust(powder_polymer) .block(block_polymer); BAKELITE .ingot(ingot_bakelite) .dust(powder_bakelite) .block(block_bakelite); + LATEX .gem(ball_resin) .ingot(ingot_biorubber); RUBBER .ingot(ingot_rubber) .block(block_rubber); //PET .ingot(ingot_pet); PC .ingot(ingot_pc); @@ -390,6 +402,8 @@ public class OreDictManager { LIGCOKE .gem(fromOne(coke, EnumCokeType.LIGNITE)) .block(fromOne(block_coke, EnumCokeType.LIGNITE)); CINNABAR .crystal(cinnebar) .gem(cinnebar) .ore(ore_cinnebar, ore_depth_cinnebar); BORAX .dust(powder_borax) .ore(ore_depth_borax); + CHLOROCALCITE .dust(powder_chlorocalcite); + SODALITE .gem(gem_sodalite); VOLCANIC .gem(gem_volcanic) .ore(basalt_gem); HEMATITE .ore(fromOne(stone_resource, EnumStoneType.HEMATITE)); MALACHITE .ore(fromOne(stone_resource, EnumStoneType.MALACHITE)); @@ -399,6 +413,7 @@ public class OreDictManager { * HAZARDS, MISC */ LI .hydro(1F) .ingot(lithium) .dustSmall(powder_lithium_tiny) .dust(powder_lithium) .block(block_lithium) .ore(ore_gneiss_lithium, ore_meteor_lithium); + NA .hydro(1F) .dust(powder_sodium); /* * PHOSPHORUS @@ -452,8 +467,10 @@ public class OreDictManager { ANY_HIGHEXPLOSIVE .ingot(ball_tnt).ingot(ball_tatb); ANY_CONCRETE .any(concrete, concrete_smooth, concrete_asbestos, ducrete, ducrete_smooth); for(int i = 0; i < 16; i++) { ANY_CONCRETE.any(new ItemStack(ModBlocks.concrete_colored, 1, i)); } + for(int i = 0; i < 16; i++) { ANY_CONCRETE.any(new ItemStack(ModBlocks.concrete_colored_ext, 1, i)); } ANY_COKE .gem(fromAll(coke, EnumCokeType.class)).block(fromAll(block_coke, EnumCokeType.class)); ANY_BISMOID .ingot(ingot_bismuth, ingot_arsenic).nugget(nugget_bismuth, nugget_arsenic).block(block_bismuth); + ANY_ASH .any(fromOne(ModItems.powder_ash, EnumAshType.WOOD), fromOne(ModItems.powder_ash, EnumAshType.COAL), fromOne(ModItems.powder_ash, EnumAshType.MISC), fromOne(ModItems.powder_ash, EnumAshType.FLY), fromOne(ModItems.powder_ash, EnumAshType.SOOT)); /* * TAR @@ -479,6 +496,8 @@ public class OreDictManager { OreDictionary.registerOre(KEY_TOOL_HANDDRILL, new ItemStack(hand_drill_desh, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre(KEY_TOOL_CHEMISTRYSET, new ItemStack(chemistry_set, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre(KEY_TOOL_CHEMISTRYSET, new ItemStack(chemistry_set_boron, 1, OreDictionary.WILDCARD_VALUE)); + OreDictionary.registerOre(KEY_TOOL_TORCH, new ItemStack(blowtorch, 1, OreDictionary.WILDCARD_VALUE)); + OreDictionary.registerOre(KEY_TOOL_TORCH, new ItemStack(acetylene_torch, 1, OreDictionary.WILDCARD_VALUE)); /* * CIRCUITS @@ -487,8 +506,11 @@ public class OreDictManager { OreDictionary.registerOre(KEY_CIRCUIT_BISMUTH, circuit_arsenic); for(NTMMaterial mat : Mats.orderedList) { - if(mat.smeltable == SmeltingBehavior.SMELTABLE && mat.shapes.contains(MaterialShapes.CASTPLATE)) { - for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); + if(mat.smeltable == SmeltingBehavior.SMELTABLE) { + if(mat.shapes.contains(MaterialShapes.CASTPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); + if(mat.shapes.contains(MaterialShapes.WELDEDPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WELDEDPLATE.name() + name, new ItemStack(ModItems.plate_welded, 1, mat.id)); + if(mat.shapes.contains(MaterialShapes.HEAVY_COMPONENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVY_COMPONENT.name() + name, new ItemStack(ModItems.heavy_component, 1, mat.id)); + if(mat.shapes.contains(MaterialShapes.DENSEWIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.DENSEWIRE.name() + name, new ItemStack(ModItems.wire_dense, 1, mat.id)); } } @@ -557,6 +579,13 @@ public class OreDictManager { OreDictionary.registerOre("dye", new ItemStack(oil_tar, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre("dyeOrange", powder_cadmium); OreDictionary.registerOre("dye", powder_cadmium); + OreDictionary.registerOre("dyeLightGray", fromOne(powder_ash, EnumAshType.WOOD)); + OreDictionary.registerOre("dyeBlack", fromOne(powder_ash, EnumAshType.COAL)); + OreDictionary.registerOre("dyeGray", fromOne(powder_ash, EnumAshType.MISC)); + OreDictionary.registerOre("dyeBrown", fromOne(powder_ash, EnumAshType.FLY)); + OreDictionary.registerOre("dyeBlack", fromOne(powder_ash, EnumAshType.SOOT)); + OreDictionary.registerOre("dyeMagenta", fromOne(powder_ash, EnumAshType.FULLERENE)); + OreDictionary.registerOre("dye", new ItemStack(powder_ash, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre("blockGlass", glass_boron); OreDictionary.registerOre("blockGlass", glass_lead); @@ -568,6 +597,8 @@ public class OreDictManager { OreDictionary.registerOre("blockGlassLime", glass_trinitite); OreDictionary.registerOre("blockGlassRed", glass_polonium); OreDictionary.registerOre("blockGlassBlack", glass_ash); + + OreDictionary.registerOre("container1000lubricant", bdcl); MaterialShapes.registerCompatShapes(); } @@ -577,9 +608,10 @@ public class OreDictManager { } public static void registerGroups() { + ANY_RUBBER.addPrefix(INGOT, true); ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true); ANY_HARDPLASTIC.addPrefix(INGOT, true); - ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(PLATECAST, true).addPrefix(BLOCK, true); + ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(PLATECAST, true).addPrefix(PLATEWELDED, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true); ANY_TAR.addPrefix(ANY, false); } @@ -617,19 +649,22 @@ public class OreDictManager { /* * Quick access methods to grab ore names for recipes. */ - public String any() { return ANY + mats[0]; } - public String nugget() { return NUGGET + mats[0]; } - public String tiny() { return TINY + mats[0]; } - public String ingot() { return INGOT + mats[0]; } - public String dustTiny() { return DUSTTINY + mats[0]; } - public String dust() { return DUST + mats[0]; } - public String gem() { return GEM + mats[0]; } - public String crystal() { return CRYSTAL + mats[0]; } - public String plate() { return PLATE + mats[0]; } - public String plateCast() { return PLATECAST + mats[0]; } - public String billet() { return BILLET + mats[0]; } - public String block() { return BLOCK + mats[0]; } - public String ore() { return ORE + mats[0]; } + public String any() { return ANY + mats[0]; } + public String nugget() { return NUGGET + mats[0]; } + public String tiny() { return TINY + mats[0]; } + public String ingot() { return INGOT + mats[0]; } + public String dustTiny() { return DUSTTINY + mats[0]; } + public String dust() { return DUST + mats[0]; } + public String gem() { return GEM + mats[0]; } + public String crystal() { return CRYSTAL + mats[0]; } + public String plate() { return PLATE + mats[0]; } + public String plateCast() { return PLATECAST + mats[0]; } + public String plateWelded() { return PLATEWELDED + mats[0]; } + public String heavyComp() { return HEAVY_COMPONENT + mats[0]; } + public String wireDense() { return WIREDENSE + mats[0]; } + public String billet() { return BILLET + mats[0]; } + public String block() { return BLOCK + mats[0]; } + public String ore() { return ORE + mats[0]; } public String[] anys() { return appendToAll(ANY); } public String[] nuggets() { return appendToAll(NUGGET); } public String[] tinys() { return appendToAll(TINY); } @@ -867,19 +902,22 @@ public class OreDictManager { return this; } - public String any() { return ANY + groupName; } - public String nugget() { return NUGGET + groupName; } - public String tiny() { return TINY + groupName; } - public String ingot() { return INGOT + groupName; } - public String dustTiny() { return DUSTTINY + groupName; } - public String dust() { return DUST + groupName; } - public String gem() { return GEM + groupName; } - public String crystal() { return CRYSTAL + groupName; } - public String plate() { return PLATE + groupName; } - public String plateTriple() { return PLATECAST + groupName; } - public String billet() { return BILLET + groupName; } - public String block() { return BLOCK + groupName; } - public String ore() { return ORE + groupName; } + public String any() { return ANY + groupName; } + public String nugget() { return NUGGET + groupName; } + public String tiny() { return TINY + groupName; } + public String ingot() { return INGOT + groupName; } + public String dustTiny() { return DUSTTINY + groupName; } + public String dust() { return DUST + groupName; } + public String gem() { return GEM + groupName; } + public String crystal() { return CRYSTAL + groupName; } + public String plate() { return PLATE + groupName; } + public String plateCast() { return PLATECAST + groupName; } + public String plateWelded() { return PLATEWELDED + groupName; } + public String heavyComp() { return HEAVY_COMPONENT + groupName; } + public String wireDense() { return WIREDENSE + groupName; } + public String billet() { return BILLET + groupName; } + public String block() { return BLOCK + groupName; } + public String ore() { return ORE + groupName; } } private static void addReRegistration(String original, String additional) { diff --git a/src/main/java/com/hbm/inventory/OreNames.java b/src/main/java/com/hbm/inventory/OreNames.java index 91cbb7099..4f1584d60 100644 --- a/src/main/java/com/hbm/inventory/OreNames.java +++ b/src/main/java/com/hbm/inventory/OreNames.java @@ -15,12 +15,15 @@ public class OreNames { public static final String CRYSTAL = "crystal"; public static final String PLATE = "plate"; public static final String PLATECAST = "plateTriple"; //cast plates are solid plates made from 3 ingots, turns out that's literally just a GT triple plate + public static final String PLATEWELDED = "plateSextuple"; + public static final String WIREDENSE = "wireDense"; public static final String BILLET = "billet"; public static final String BLOCK = "block"; public static final String ORE = "ore"; public static final String ORENETHER = "oreNether"; + public static final String HEAVY_COMPONENT = "componentHeavy"; public static final String[] prefixes = new String[] { - ANY, NUGGET, TINY, INGOT, DUSTTINY, DUST, GEM, CRYSTAL, PLATE, PLATECAST, BILLET, BLOCK, ORE, ORENETHER + ANY, NUGGET, TINY, INGOT, DUSTTINY, DUST, GEM, CRYSTAL, PLATE, PLATECAST, BILLET, BLOCK, ORE, ORENETHER, HEAVY_COMPONENT, WIREDENSE }; } diff --git a/src/main/java/com/hbm/inventory/RecipesCommon.java b/src/main/java/com/hbm/inventory/RecipesCommon.java index 2b1191f55..9e963743b 100644 --- a/src/main/java/com/hbm/inventory/RecipesCommon.java +++ b/src/main/java/com/hbm/inventory/RecipesCommon.java @@ -169,7 +169,6 @@ public class RecipesCommon { String[] entries = new String[ids.length]; for(int i = 0; i < ids.length; i++) { - entries[i] = OreDictionary.getOreName(ids[i]); } diff --git a/src/main/java/com/hbm/inventory/SlotCraftingOutput.java b/src/main/java/com/hbm/inventory/SlotCraftingOutput.java index 7b8a1c86a..46770d660 100644 --- a/src/main/java/com/hbm/inventory/SlotCraftingOutput.java +++ b/src/main/java/com/hbm/inventory/SlotCraftingOutput.java @@ -1,13 +1,10 @@ package com.hbm.inventory; -import com.hbm.blocks.ModBlocks; -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; +import com.hbm.util.AchievementHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class SlotCraftingOutput extends Slot { @@ -27,40 +24,7 @@ public class SlotCraftingOutput extends Slot { //ugly but nothing to be done public static void checkAchievements(EntityPlayer player, ItemStack stack) { - Item item = stack.getItem(); - - if(item == Item.getItemFromBlock(ModBlocks.machine_chemplant)) - player.triggerAchievement(MainRegistry.achChemplant); - if(item == Item.getItemFromBlock(ModBlocks.concrete_smooth) || item == Item.getItemFromBlock(ModBlocks.concrete_asbestos)) - player.triggerAchievement(MainRegistry.achConcrete); - if(item == ModItems.ingot_polymer) - player.triggerAchievement(MainRegistry.achPolymer); - if(item == ModItems.ingot_desh) - player.triggerAchievement(MainRegistry.achDesh); - if(item == ModItems.gem_tantalium) - player.triggerAchievement(MainRegistry.achTantalum); - if(item == Item.getItemFromBlock(ModBlocks.machine_gascent)) - player.triggerAchievement(MainRegistry.achGasCent); - if(item == Item.getItemFromBlock(ModBlocks.machine_centrifuge)) - player.triggerAchievement(MainRegistry.achCentrifuge); - if(item == ModItems.ingot_schrabidium || item == ModItems.nugget_schrabidium) - player.triggerAchievement(MainRegistry.achSchrab); - if(item == Item.getItemFromBlock(ModBlocks.machine_crystallizer)) - player.triggerAchievement(MainRegistry.achAcidizer); - if(item == Item.getItemFromBlock(ModBlocks.machine_silex)) - player.triggerAchievement(MainRegistry.achSILEX); - if(item == ModItems.nugget_technetium) - player.triggerAchievement(MainRegistry.achTechnetium); - if(item == Item.getItemFromBlock(ModBlocks.watz_core)) - player.triggerAchievement(MainRegistry.achWatz); - if(item == ModItems.nugget_bismuth) - player.triggerAchievement(MainRegistry.achBismuth); - if(item == ModItems.nugget_am241 || item == ModItems.nugget_am242) - player.triggerAchievement(MainRegistry.achBreeding); - if(item == ModItems.missile_nuclear || item == ModItems.missile_nuclear_cluster || item == ModItems.missile_doomsday || item == ModItems.mp_warhead_10_nuclear || item == ModItems.mp_warhead_10_nuclear_large || item == ModItems.mp_warhead_15_nuclear || item == ModItems.mp_warhead_15_nuclear_shark || item == ModItems.mp_warhead_15_boxcar) - player.triggerAchievement(MainRegistry.achRedBalloons); - if(item == Item.getItemFromBlock(ModBlocks.struct_iter_core)) - player.triggerAchievement(MainRegistry.achFusion); + AchievementHandler.fire(player, stack); } @Override diff --git a/src/main/java/com/hbm/inventory/container/ContainerAshpit.java b/src/main/java/com/hbm/inventory/container/ContainerAshpit.java new file mode 100644 index 000000000..5d3505d63 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerAshpit.java @@ -0,0 +1,73 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotTakeOnly; +import com.hbm.tileentity.machine.TileEntityAshpit; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerAshpit extends Container { + + protected TileEntityAshpit ashpit; + + public ContainerAshpit(InventoryPlayer invPlayer, TileEntityAshpit ashpit) { + this.ashpit = ashpit; + this.ashpit.openInventory(); + + for(int i = 0; i < 5; i++) this.addSlotToContainer(new SlotTakeOnly(ashpit, i, 44 + i * 18, 27)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 86 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 144)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack stack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack originalStack = slot.getStack(); + stack = originalStack.copy(); + + if(index <= 4) { + if(!this.mergeItemStack(originalStack, 5, this.inventorySlots.size(), true)) { + return null; + } + + slot.onSlotChange(originalStack, stack); + + } else { + return null; + } + + if(originalStack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return stack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return ashpit.isUseableByPlayer(player); + } + + @Override + public void onContainerClosed(EntityPlayer player) { + super.onContainerClosed(player); + this.ashpit.closeInventory(); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerCompressor.java b/src/main/java/com/hbm/inventory/container/ContainerCompressor.java new file mode 100644 index 000000000..3f81b4f68 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerCompressor.java @@ -0,0 +1,83 @@ +package com.hbm.inventory.container; + +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.machine.TileEntityMachineCompressor; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerCompressor extends Container { + + private TileEntityMachineCompressor compressor; + + public ContainerCompressor(InventoryPlayer playerInv, TileEntityMachineCompressor tile) { + compressor = tile; + + //Fluid ID + this.addSlotToContainer(new Slot(tile, 0, 17, 72)); + //Battery + this.addSlotToContainer(new Slot(tile, 1, 152, 72)); + //Upgrades + this.addSlotToContainer(new Slot(tile, 2, 52, 72)); + this.addSlotToContainer(new Slot(tile, 3, 70, 72)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 180)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return compressor.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(index); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(index < 4) { + if(!this.mergeItemStack(var5, 4, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IBatteryItem) { + if(!this.mergeItemStack(var5, 1, 2, false)) { + return null; + } + } else if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 0, 1, false)) { + return null; + } + } else { + if(!this.mergeItemStack(var5, 2, 4, false)) { + return null; + } + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerCounterTorch.java b/src/main/java/com/hbm/inventory/container/ContainerCounterTorch.java new file mode 100644 index 000000000..56af3c613 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerCounterTorch.java @@ -0,0 +1,76 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.network.TileEntityRadioTorchCounter; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerCounterTorch extends Container { + + protected TileEntityRadioTorchCounter radio; + + public ContainerCounterTorch(InventoryPlayer invPlayer, TileEntityRadioTorchCounter radio) { + this.radio = radio; + + for(int i = 0; i < 3; i++) { + this.addSlotToContainer(new Slot(radio, i, 138, 18 + 44 * i)); + } + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 12 + j * 18, 156 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 12 + i * 18, 214)); + } + } + + @Override public ItemStack transferStackInSlot(EntityPlayer player, int slot) { return null; } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return radio.isUseableByPlayer(player); + } + + @Override + public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { + + //L/R: 0 + //M3: 3 + //SHIFT: 1 + //DRAG: 5 + if(index < 0 || index > 2) { + return super.slotClick(index, button, mode, player); + } + + Slot slot = this.getSlot(index); + + ItemStack ret = null; + ItemStack held = player.inventory.getItemStack(); + + if(slot.getHasStack()) + ret = slot.getStack().copy(); + + if(button == 1 && mode == 0 && slot.getHasStack()) { + radio.matcher.nextMode(radio.getWorldObj(), slot.getStack(), index); + return ret; + + } else { + slot.putStack(held != null ? held.copy() : null); + + if(slot.getHasStack()) { + slot.getStack().stackSize = 1; + } + + slot.onSlotChanged(); + radio.matcher.initPatternStandard(radio.getWorldObj(), slot.getStack(), index); + + return ret; + } + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java b/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java index afab4ad24..dab69d73b 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java @@ -1,5 +1,6 @@ package com.hbm.inventory.container; +import com.hbm.inventory.SlotPattern; import com.hbm.inventory.SlotUpgrade; import com.hbm.items.ModItems; import com.hbm.tileentity.network.TileEntityCraneExtractor; @@ -20,7 +21,7 @@ public class ContainerCraneExtractor extends Container { //filter for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { - this.addSlotToContainer(new Slot(extractor, j + i * 3, 71 + j * 18, 17 + i * 18)); + this.addSlotToContainer(new SlotPattern(extractor, j + i * 3, 71 + j * 18, 17 + i * 18)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrateIron.java b/src/main/java/com/hbm/inventory/container/ContainerCrateIron.java index d91eb1be0..26bdada96 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCrateIron.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCrateIron.java @@ -10,25 +10,20 @@ public class ContainerCrateIron extends ContainerCrateBase { public ContainerCrateIron(InventoryPlayer invPlayer, TileEntityCrateIron tedf) { super(tedf); - - for(int i = 0; i < 4; i++) - { - for(int j = 0; j < 9; j++) - { + + for(int i = 0; i < 4; i++) { + for(int j = 0; j < 9; j++) { this.addSlotToContainer(new Slot(tedf, j + i * 9, 8 + j * 18, 18 + i * 18)); } } - - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 20)); } } - - for(int i = 0; i < 9; i++) - { + + for(int i = 0; i < 9; i++) { this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 20)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrateTemplate.java b/src/main/java/com/hbm/inventory/container/ContainerCrateTemplate.java new file mode 100644 index 000000000..122c301e4 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerCrateTemplate.java @@ -0,0 +1,29 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.machine.storage.TileEntityCrateTemplate; + +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; + +public class ContainerCrateTemplate extends ContainerCrateBase { + + public ContainerCrateTemplate(InventoryPlayer invPlayer, TileEntityCrateTemplate tedf) { + super(tedf); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(tedf, j + i * 9, 8 + j * 18, 18 + i * 18)); + } + } + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 86 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 144)); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneCrate.java b/src/main/java/com/hbm/inventory/container/ContainerDroneCrate.java new file mode 100644 index 000000000..cf9338763 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneCrate.java @@ -0,0 +1,79 @@ +package com.hbm.inventory.container; + +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.network.TileEntityDroneCrate; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerDroneCrate extends Container { + + protected TileEntityDroneCrate crate; + + public ContainerDroneCrate(InventoryPlayer invPlayer, TileEntityDroneCrate inserter) { + this.crate = inserter; + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 6; j++) { + this.addSlotToContainer(new Slot(inserter, j + i * 6, 8 + j * 18, 17 + i * 18)); + } + } + + this.addSlotToContainer(new Slot(inserter, 18, 125, 53)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slot) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(slot); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(slot <= crate.getSizeInventory() - 1) { + if(!this.mergeItemStack(var5, crate.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 18, 19, false)) + return null; + } else if(!this.mergeItemStack(var5, 0, 18, false)) { + return null; + } + + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + + var4.onPickupFromSlot(player, var5); + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return crate.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java b/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java new file mode 100644 index 000000000..913ee1dd3 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java @@ -0,0 +1,29 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.network.TileEntityDroneDock; + +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; + +public class ContainerDroneDock extends ContainerCrateBase { + + public ContainerDroneDock(InventoryPlayer invPlayer, TileEntityDroneDock tedf) { + super(tedf); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 3; j++) { + this.addSlotToContainer(new Slot(tedf, j + i * 3, 62 + j * 18, 17 + i * 18)); + } + } + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); + } + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java b/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java new file mode 100644 index 000000000..7b818dc8d --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java @@ -0,0 +1,29 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.network.TileEntityDroneProvider; + +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; + +public class ContainerDroneProvider extends ContainerCrateBase { + + public ContainerDroneProvider(InventoryPlayer invPlayer, TileEntityDroneProvider tedf) { + super(tedf); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 3; j++) { + this.addSlotToContainer(new Slot(tedf, j + i * 3, 62 + j * 18, 17 + i * 18)); + } + } + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); + } + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java b/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java new file mode 100644 index 000000000..d728d69c3 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java @@ -0,0 +1,108 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotPattern; +import com.hbm.tileentity.network.TileEntityDroneRequester; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerDroneRequester extends ContainerCrateBase { + + public ContainerDroneRequester(InventoryPlayer invPlayer, TileEntityDroneRequester tedf) { + super(tedf); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 3; j++) { + this.addSlotToContainer(new SlotPattern(tedf, j + i * 3, 98 + j * 18, 17 + i * 18)); + } + } + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 3; j++) { + this.addSlotToContainer(new Slot(tedf, j + i * 3 + 9, 26 + j * 18, 17 + i * 18)); + } + } + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 < 9) return null; //ignore filters + + if(par2 <= crate.getSizeInventory() - 1) { + if(!this.mergeItemStack(var5, crate.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else if(!this.mergeItemStack(var5, 9, crate.getSizeInventory(), false)) { + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + + var4.onPickupFromSlot(p_82846_1_, var5); + } + + return var3; + } + + @Override + public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { + + //L/R: 0 + //M3: 3 + //SHIFT: 1 + //DRAG: 5 + + if(index < 0 || index > 8) { + return super.slotClick(index, button, mode, player); + } + + Slot slot = this.getSlot(index); + + ItemStack ret = null; + ItemStack held = player.inventory.getItemStack(); + TileEntityDroneRequester requester = (TileEntityDroneRequester) crate; + + if(slot.getHasStack()) + ret = slot.getStack().copy(); + + if(button == 1 && mode == 0 && slot.getHasStack()) { + requester.nextMode(index); + return ret; + + } else { + slot.putStack(held != null ? held.copy() : null); + + if(slot.getHasStack()) { + slot.getStack().stackSize = 1; + } + + slot.onSlotChanged(); + requester.matcher.initPatternStandard(requester.getWorldObj(), slot.getStack(), index); + + return ret; + } + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerElectrolyserFluid.java b/src/main/java/com/hbm/inventory/container/ContainerElectrolyserFluid.java new file mode 100644 index 000000000..f9fcff491 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerElectrolyserFluid.java @@ -0,0 +1,101 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotTakeOnly; +import com.hbm.items.ModItems; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.items.machine.ItemMachineUpgrade; +import com.hbm.tileentity.machine.TileEntityElectrolyser; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerElectrolyserFluid extends Container { + + private TileEntityElectrolyser electrolyser; + + public ContainerElectrolyserFluid(InventoryPlayer invPlayer, TileEntityElectrolyser tedf) { + electrolyser = tedf; + + //Battery + this.addSlotToContainer(new Slot(tedf, 0, 186, 109)); + //Upgrades + this.addSlotToContainer(new Slot(tedf, 1, 186, 140)); + this.addSlotToContainer(new Slot(tedf, 2, 186, 158)); + //Fluid ID + this.addSlotToContainer(new Slot(tedf, 3, 6, 18)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 6, 54)); + //Input + this.addSlotToContainer(new Slot(tedf, 5, 24, 18)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 6, 24, 54)); + //Output + this.addSlotToContainer(new Slot(tedf, 7, 78, 18)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 8, 78, 54)); + this.addSlotToContainer(new Slot(tedf, 9, 134, 18)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 134, 54)); + //Byproducts + this.addSlotToContainer(new SlotTakeOnly(tedf, 11, 154, 18)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 12, 154, 36)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 13, 154, 54)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 180)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= 13) { + if(!this.mergeItemStack(var5, 14, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IBatteryItem || var3.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(var5, 0, 1, false)) { + return null; + } + } else if(var3.getItem() instanceof ItemMachineUpgrade) { + if(!this.mergeItemStack(var5, 1, 3, false)) { + return null; + } + } else if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 3, 4, false)) { + return null; + } + } else { + return null; + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return electrolyser.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerElectrolyserMetal.java b/src/main/java/com/hbm/inventory/container/ContainerElectrolyserMetal.java new file mode 100644 index 000000000..15c8b9565 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerElectrolyserMetal.java @@ -0,0 +1,92 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemMachineUpgrade; +import com.hbm.tileentity.machine.TileEntityElectrolyser; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerElectrolyserMetal extends Container { + + private TileEntityElectrolyser electrolyser; + + public ContainerElectrolyserMetal(InventoryPlayer invPlayer, TileEntityElectrolyser tedf) { + electrolyser = tedf; + + //Battery + this.addSlotToContainer(new Slot(tedf, 0, 186, 109)); + //Upgrades + this.addSlotToContainer(new Slot(tedf, 1, 186, 140)); + this.addSlotToContainer(new Slot(tedf, 2, 186, 158)); + //Input + this.addSlotToContainer(new Slot(tedf, 14, 10, 22)); + //Outputs + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 15, 136, 18)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 16, 154, 18)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 17, 136, 36)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 18, 154, 36)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 19, 136, 54)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 20, 154, 54)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 180)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= 10) { + if(!this.mergeItemStack(var5, 11, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IBatteryItem || var3.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(var5, 0, 1, false)) { + return null; + } + } else if(var3.getItem() instanceof ItemMachineUpgrade) { + if(!this.mergeItemStack(var5, 1, 3, false)) { + return null; + } + } else { + if(!this.mergeItemStack(var5, 3, 4, false)) { + return null; + } + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return electrolyser.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerLaunchPadTier1.java b/src/main/java/com/hbm/inventory/container/ContainerLaunchPadTier1.java index 11a9190e1..a19e9a385 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerLaunchPadTier1.java +++ b/src/main/java/com/hbm/inventory/container/ContainerLaunchPadTier1.java @@ -5,7 +5,6 @@ import com.hbm.tileentity.bomb.TileEntityLaunchPad; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; @@ -21,57 +20,43 @@ public class ContainerLaunchPadTier1 extends Container { this.addSlotToContainer(new Slot(tedf, 1, 80, 17)); this.addSlotToContainer(new Slot(tedf, 2, 134, 17)); - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); } } - - for(int i = 0; i < 9; i++) - { + + for(int i = 0; i < 9; i++) { this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); } } @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { ItemStack var3 = null; Slot var4 = (Slot) this.inventorySlots.get(par2); - - if (var4 != null && var4.getHasStack()) - { + + if(var4 != null && var4.getHasStack()) { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - - if (par2 <= 2) { - if (!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) - { + + if(par2 <= 2) { + if(!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) { return null; } } else { return null; } - - if (var5.stackSize == 0) - { + + if(var5.stackSize == 0) { var4.putStack((ItemStack) null); - } - else - { + } else { var4.onSlotChanged(); } } - + return var3; - } + } @Override public boolean canInteractWith(EntityPlayer player) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerLeadBox.java b/src/main/java/com/hbm/inventory/container/ContainerLeadBox.java index 2d015033f..3e8a6d0cf 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerLeadBox.java +++ b/src/main/java/com/hbm/inventory/container/ContainerLeadBox.java @@ -66,6 +66,7 @@ public class ContainerLeadBox extends Container { @Override public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { // prevents the player from moving around the currently open box + if(mode == 2 && button == player.inventory.currentItem) return null; if(index == player.inventory.currentItem + 47) return null; return super.slotClick(index, button, mode, player); } diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineArcWelder.java b/src/main/java/com/hbm/inventory/container/ContainerMachineArcWelder.java new file mode 100644 index 000000000..9c5d516b8 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineArcWelder.java @@ -0,0 +1,86 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.inventory.SlotUpgrade; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemMachineUpgrade; +import com.hbm.tileentity.machine.TileEntityMachineArcWelder; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineArcWelder extends Container { + + private TileEntityMachineArcWelder welder; + + public ContainerMachineArcWelder(InventoryPlayer playerInv, TileEntityMachineArcWelder tile) { + welder = tile; + + //Inputs + this.addSlotToContainer(new Slot(tile, 0, 17, 36)); + this.addSlotToContainer(new Slot(tile, 1, 35, 36)); + this.addSlotToContainer(new Slot(tile, 2, 53, 36)); + //Output + this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 3, 107, 36)); + //Battery + this.addSlotToContainer(new Slot(tile, 4, 152, 72)); + //Fluid ID + this.addSlotToContainer(new Slot(tile, 5, 17, 63)); + //Upgrades + this.addSlotToContainer(new SlotUpgrade(tile, 6, 89, 63)); + this.addSlotToContainer(new SlotUpgrade(tile, 7, 107, 63)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 180)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return welder.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(index); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(index <= 3) { + if(!this.mergeItemStack(var5, 4, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IBatteryItem || var3.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(var5, 4, 5, false)) return null; + } else if(var3.getItem() instanceof ItemMachineUpgrade ) { + if(!this.mergeItemStack(var5, 6, 8, false)) return null; + } else { + if(!this.mergeItemStack(var5, 0, 3, false)) return null; + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCoal.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCoal.java deleted file mode 100644 index 1060bdaec..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineCoal.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.inventory.SlotTakeOnly; -import com.hbm.tileentity.machine.TileEntityMachineCoal; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ContainerMachineCoal extends Container { - - private TileEntityMachineCoal diFurnace; - - public ContainerMachineCoal(InventoryPlayer invPlayer, TileEntityMachineCoal tedf) { - diFurnace = tedf; - - this.addSlotToContainer(new Slot(tedf, 0, 44, 53 - 36)); - this.addSlotToContainer(new Slot(tedf, 1, 80, 53)); - this.addSlotToContainer(new Slot(tedf, 2, 116, 53)); - this.addSlotToContainer(new SlotTakeOnly(tedf, 3, 44, 53)); - - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); - } - } - - for(int i = 0; i < 9; i++) - { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); - } - } - - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); - - if (var4 != null && var4.getHasStack()) - { - ItemStack var5 = var4.getStack(); - var3 = var5.copy(); - - if (par2 <= 3) { - if (!this.mergeItemStack(var5, 4, this.inventorySlots.size(), true)) - { - return null; - } - } - else if (!this.mergeItemStack(var5, 1, 2, false)) - { - if (!this.mergeItemStack(var5, 0, 1, false)) - if (!this.mergeItemStack(var5, 2, 3, false)) - return null; - } - - if (var5.stackSize == 0) - { - var4.putStack((ItemStack) null); - } - else - { - var4.onSlotChanged(); - } - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); - } -} diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCustom.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCustom.java new file mode 100644 index 000000000..d85a2953f --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCustom.java @@ -0,0 +1,109 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.inventory.SlotPattern; +import com.hbm.tileentity.machine.TileEntityCustomMachine; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineCustom extends Container { + + private TileEntityCustomMachine custom; + + public ContainerMachineCustom(InventoryPlayer playerInv, TileEntityCustomMachine tile) { + custom = tile; + + //Input + this.addSlotToContainer(new Slot(tile, 0, 150, 72)); + //Fluid IDs + for(int i = 0; i < tile.inputTanks.length; i++) { + this.addSlotToContainer(new Slot(tile, 1 + i, 8 + 18 * i, 54)); + } + //Item inputs + if(tile.config.itemInCount > 0) this.addSlotToContainer(new Slot(tile, 4, 8, 72)); + if(tile.config.itemInCount > 1) this.addSlotToContainer(new Slot(tile, 5, 26, 72)); + if(tile.config.itemInCount > 2) this.addSlotToContainer(new Slot(tile, 6, 44, 72)); + if(tile.config.itemInCount > 3) this.addSlotToContainer(new Slot(tile, 7, 8, 90)); + if(tile.config.itemInCount > 4) this.addSlotToContainer(new Slot(tile, 8, 26, 90)); + if(tile.config.itemInCount > 5) this.addSlotToContainer(new Slot(tile, 9, 44, 90)); + //Templates + if(tile.config.itemInCount > 0) this.addSlotToContainer(new SlotPattern(tile, 10, 8, 108)); + if(tile.config.itemInCount > 1) this.addSlotToContainer(new SlotPattern(tile, 11, 26, 108)); + if(tile.config.itemInCount > 2) this.addSlotToContainer(new SlotPattern(tile, 12, 44, 108)); + if(tile.config.itemInCount > 3) this.addSlotToContainer(new SlotPattern(tile, 13, 8, 126)); + if(tile.config.itemInCount > 4) this.addSlotToContainer(new SlotPattern(tile, 14, 26, 126)); + if(tile.config.itemInCount > 5) this.addSlotToContainer(new SlotPattern(tile, 15, 44, 126)); + //Output + if(tile.config.itemOutCount > 0) this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 16, 78, 72)); + if(tile.config.itemOutCount > 1) this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 17, 96, 72)); + if(tile.config.itemOutCount > 2) this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 18, 114, 72)); + if(tile.config.itemOutCount > 3) this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 19, 78, 90)); + if(tile.config.itemOutCount > 4) this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 20, 96, 90)); + if(tile.config.itemOutCount > 5) this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 21, 114, 90)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 174 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 232)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return custom.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + return null; + } + + @Override + public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { + + //L/R: 0 + //M3: 3 + //SHIFT: 1 + //DRAG: 5 + + //TODO: shoot whoever at mojang wrote the container code + if(index < 0 || index >= this.inventorySlots.size() || !(this.inventorySlots.get(index) instanceof SlotPattern)) { + return super.slotClick(index, button, mode, player); + } + + Slot slot = this.getSlot(index); + index = ((Slot) this.inventorySlots.get(index)).getSlotIndex(); + + ItemStack ret = null; + ItemStack held = player.inventory.getItemStack(); + + if(slot.getHasStack()) + ret = slot.getStack().copy(); + + if(button == 1 && mode == 0 && slot.getHasStack()) { + custom.matcher.nextMode(player.worldObj, slot.getStack(), index - 10); + return ret; + + } else { + + slot.putStack(held != null ? held.copy() : null); + + if(slot.getHasStack()) { + slot.getStack().stackSize = 1; + } + + slot.onSlotChanged(); + custom.matcher.initPatternSmart(player.worldObj, slot.getStack(), index - 10); + + return ret; + } + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineDiFurnaceRTG.java b/src/main/java/com/hbm/inventory/container/ContainerMachineDiFurnaceRTG.java index 4f0b39b00..e32e9197c 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineDiFurnaceRTG.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineDiFurnaceRTG.java @@ -1,7 +1,7 @@ package com.hbm.inventory.container; import com.hbm.inventory.SlotCraftingOutput; -import com.hbm.tileentity.IRadioisotopeFuel; +import com.hbm.items.machine.ItemRTGPellet; import com.hbm.tileentity.machine.TileEntityDiFurnaceRTG; import net.minecraft.entity.player.EntityPlayer; @@ -45,6 +45,25 @@ public class ContainerMachineDiFurnaceRTG extends Container { return bFurnace.isUseableByPlayer(player); } + @Override + public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { + + if(index >= 0 && index < 2 && button == 1 && mode == 0) { + Slot slot = this.getSlot(index); + if(!slot.getHasStack() && player.inventory.getItemStack() == null) { + if(!player.worldObj.isRemote) { + if(index == 0) bFurnace.sideUpper = (byte) ((bFurnace.sideUpper + 1) % 6); + if(index == 1) bFurnace.sideLower = (byte) ((bFurnace.sideLower + 1) % 6); + + bFurnace.markDirty(); + } + return null; + } + } + + return super.slotClick(index, button, mode, player); + } + @Override public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { ItemStack var3 = null; @@ -58,7 +77,7 @@ public class ContainerMachineDiFurnaceRTG extends Container { if(!this.mergeItemStack(var5, 9, this.inventorySlots.size(), true)) { return null; } - } else if(var5.getItem() instanceof IRadioisotopeFuel) { + } else if(var5.getItem() instanceof ItemRTGPellet) { if(!this.mergeItemStack(var5, 3, 9, false)) return null; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java b/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java index a7caab502..c55fd5400 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java @@ -54,8 +54,8 @@ public class ContainerMachineExcavator extends Container { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - if(par2 <= 4) { - if(!this.mergeItemStack(var5, 5, this.inventorySlots.size(), true)) { + if(par2 <= 13) { + if(!this.mergeItemStack(var5, 14, this.inventorySlots.size(), true)) { return null; } } else { diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java b/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java new file mode 100644 index 000000000..c4dd07df6 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java @@ -0,0 +1,86 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.inventory.SlotTakeOnly; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemMachineUpgrade; +import com.hbm.tileentity.machine.TileEntityMachineExposureChamber; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineExposureChamber extends Container { + + private TileEntityMachineExposureChamber chamber; + + public ContainerMachineExposureChamber(InventoryPlayer invPlayer, TileEntityMachineExposureChamber tedf) { + this.chamber = tedf; + + this.addSlotToContainer(new Slot(tedf, 0, 8, 18)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 8, 54)); + this.addSlotToContainer(new Slot(tedf, 3, 80, 36)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 4, 116, 36)); + this.addSlotToContainer(new Slot(tedf, 5, 152, 54)); + this.addSlotToContainer(new Slot(tedf, 6, 44, 54)); + this.addSlotToContainer(new Slot(tedf, 7, 62, 54)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= 6) { + if(!this.mergeItemStack(var5, 7, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof ItemMachineUpgrade) { + if(!this.mergeItemStack(var5, 5, 7, false)) { + return null; + } + } else if(var3.getItem() instanceof IBatteryItem || var3.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(var5, 4, 5, false)) { + return null; + } + } else { + if(!this.mergeItemStack(var5, 0, 3, false)) { + return null; + } + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return chamber.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineRadar.java b/src/main/java/com/hbm/inventory/container/ContainerMachineRadar.java deleted file mode 100644 index 5599c4f76..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineRadar.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.tileentity.machine.TileEntityMachineRadar; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; - -public class ContainerMachineRadar extends Container { - - public ContainerMachineRadar(InventoryPlayer invPlayer, TileEntityMachineRadar tedf) { - } - - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return true; - } -} diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineRadarNT.java b/src/main/java/com/hbm/inventory/container/ContainerMachineRadarNT.java new file mode 100644 index 000000000..0bd1f475b --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineRadarNT.java @@ -0,0 +1,76 @@ +package com.hbm.inventory.container; + +import com.hbm.items.ModItems; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineRadarNT extends Container { + + private TileEntityMachineRadarNT radar; + + public ContainerMachineRadarNT(InventoryPlayer invPlayer, TileEntityMachineRadarNT tedf) { + this.radar = tedf; + + for(int i = 0; i < 8; i++) this.addSlotToContainer(new Slot(tedf, i, 26 + i * 18, 17)); + + this.addSlotToContainer(new Slot(tedf, 8, 26, 44)); + this.addSlotToContainer(new Slot(tedf, 9, 152, 44)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= 9) { + if(!this.mergeItemStack(var5, 10, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IBatteryItem || var3.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(var5, 9, 10, false)) { + return null; + } + } else { + if(!this.mergeItemStack(var5, 0, 9, false)) { + return null; + } + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return radar.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java b/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java new file mode 100644 index 000000000..73684e642 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java @@ -0,0 +1,103 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotTakeOnly; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.machine.TileEntityMachineWoodBurner; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntityFurnace; + +public class ContainerMachineWoodBurner extends Container { + + protected TileEntityMachineWoodBurner burner; + + public ContainerMachineWoodBurner(InventoryPlayer invPlayer, TileEntityMachineWoodBurner burner) { + this.burner = burner; + this.burner.openInventory(); + + //Fuel + this.addSlotToContainer(new Slot(burner, 0, 26, 18)); + //Ashes + this.addSlotToContainer(new SlotTakeOnly(burner, 1, 26, 54)); + //Fluid ID + this.addSlotToContainer(new Slot(burner, 2, 98, 54)); + //Fluid Container + this.addSlotToContainer(new Slot(burner, 3, 98, 18)); + this.addSlotToContainer(new SlotTakeOnly(burner, 4, 98, 36)); + //Battery + this.addSlotToContainer(new Slot(burner, 5, 143, 54)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack stack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack originalStack = slot.getStack(); + stack = originalStack.copy(); + + if(index <= 5) { + if(!this.mergeItemStack(originalStack, 6, this.inventorySlots.size(), true)) { + return null; + } + + slot.onSlotChange(originalStack, stack); + + } else { + + if(stack.getItem() instanceof IBatteryItem) { + if(!this.mergeItemStack(originalStack, 5, 6, false)) { + return null; + } + } else if(stack.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(originalStack, 2, 3, false)) { + return null; + } + } else if(TileEntityFurnace.isItemFuel(stack)) { + if(!this.mergeItemStack(originalStack, 0, 1, false)) { + return null; + } + } else { + if(!this.mergeItemStack(originalStack, 3, 4, false)) { + return null; + } + } + } + + if(originalStack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return stack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return burner.isUseableByPlayer(player); + } + + @Override + public void onContainerClosed(EntityPlayer player) { + super.onContainerClosed(player); + this.burner.closeInventory(); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerNukeTsar.java b/src/main/java/com/hbm/inventory/container/ContainerNukeTsar.java index aafabe2d5..9877e66f3 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerNukeTsar.java +++ b/src/main/java/com/hbm/inventory/container/ContainerNukeTsar.java @@ -16,59 +16,50 @@ private TileEntityNukeTsar nukeTsar; nukeTsar = tedf; - this.addSlotToContainer(new Slot(tedf, 0, 35, 17)); - this.addSlotToContainer(new Slot(tedf, 1, 71, 17)); - this.addSlotToContainer(new Slot(tedf, 2, 35, 53)); - this.addSlotToContainer(new Slot(tedf, 3, 71, 53)); - this.addSlotToContainer(new Slot(tedf, 4, 53, 35)); - this.addSlotToContainer(new Slot(tedf, 5, 98, 35)); + this.addSlotToContainer(new Slot(tedf, 0, 48, 101)); + this.addSlotToContainer(new Slot(tedf, 1, 66, 101)); + this.addSlotToContainer(new Slot(tedf, 2, 84, 101)); + this.addSlotToContainer(new Slot(tedf, 3, 102, 101)); + this.addSlotToContainer(new Slot(tedf, 4, 55, 51)); + this.addSlotToContainer(new Slot(tedf, 5, 138, 101)); - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, 9 + j + i * 9, 48 + j * 18, 151 + i * 18)); } } - - for(int i = 0; i < 9; i++) - { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 48 + i * 18, 209)); } } @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { ItemStack var3 = null; Slot var4 = (Slot) this.inventorySlots.get(par2); - - if (var4 != null && var4.getHasStack()) - { + + if(var4 != null && var4.getHasStack()) { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - - if (par2 <= 5) { - if (!this.mergeItemStack(var5, 6, this.inventorySlots.size(), true)) - { + + if(par2 <= 5) { + if(!this.mergeItemStack(var5, 6, this.inventorySlots.size(), true)) { return null; } } else { return null; } - - if (var5.stackSize == 0) - { + + if(var5.stackSize == 0) { var4.putStack((ItemStack) null); - } - else - { + } else { var4.onSlotChanged(); } } - + return var3; - } + } @Override public boolean canInteractWith(EntityPlayer player) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerPWR.java b/src/main/java/com/hbm/inventory/container/ContainerPWR.java new file mode 100644 index 000000000..ff6cc84fa --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerPWR.java @@ -0,0 +1,76 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.machine.TileEntityPWRController; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerPWR extends Container { + + TileEntityPWRController controller; + + public ContainerPWR(InventoryPlayer invPlayer, TileEntityPWRController controller) { + this.controller = controller; + + this.addSlotToContainer(new Slot(controller, 0, 53, 5)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, controller, 1, 89, 32)); + this.addSlotToContainer(new Slot(controller, 2, 8, 59)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 106 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 164)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= 2) { + if(!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 2, 3, false)) { + return null; + } + } else { + if(!this.mergeItemStack(var5, 0, 1, false)) { + return null; + } + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return controller.isUseableByPlayer(player); + } + +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerPlasticBag.java b/src/main/java/com/hbm/inventory/container/ContainerPlasticBag.java new file mode 100644 index 000000000..687e53a54 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerPlasticBag.java @@ -0,0 +1,80 @@ +package com.hbm.inventory.container; + +import com.hbm.items.tool.ItemPlasticBag.InventoryPlasticBag; +import com.hbm.util.InventoryUtil; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerPlasticBag extends Container { + + private InventoryPlasticBag bag; + + public ContainerPlasticBag(InventoryPlayer invPlayer, InventoryPlasticBag bag) { + this.bag = bag; + this.bag.openInventory(); + + this.addSlotToContainer(new Slot(bag, 0, 80, 65)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 134 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 192)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= bag.getSizeInventory() - 1) { + if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, bag.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, bag.getSizeInventory(), false)) { + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + + var4.onPickupFromSlot(p_82846_1_, var5); + } + + return var3; + } + + @Override + public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { + // prevents the player from moving around the currently open box + if(mode == 2 && button == player.inventory.currentItem) return null; + if(index == player.inventory.currentItem + 28) return null; + return super.slotClick(index, button, mode, player); + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return bag.isUseableByPlayer(player); + } + + @Override + public void onContainerClosed(EntityPlayer player) { + super.onContainerClosed(player); + this.bag.closeInventory(); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerSatDock.java b/src/main/java/com/hbm/inventory/container/ContainerSatDock.java index 9ee0b37d5..02f02db56 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerSatDock.java +++ b/src/main/java/com/hbm/inventory/container/ContainerSatDock.java @@ -1,7 +1,8 @@ package com.hbm.inventory.container; +import com.hbm.inventory.SlotTakeOnly; +import com.hbm.items.machine.ItemSatChip; import com.hbm.tileentity.machine.TileEntityMachineSatDock; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -11,41 +12,42 @@ import net.minecraft.item.ItemStack; public class ContainerSatDock extends Container { - private TileEntityMachineSatDock diFurnace; + private final TileEntityMachineSatDock tileSatelliteDock; - public ContainerSatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tedf) { - - diFurnace = tedf; + public ContainerSatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tesd) { + tileSatelliteDock = tesd; //Storage - this.addSlotToContainer(new Slot(tedf, 0, 62, 17)); - this.addSlotToContainer(new Slot(tedf, 1, 80, 17)); - this.addSlotToContainer(new Slot(tedf, 2, 98, 17)); - this.addSlotToContainer(new Slot(tedf, 3, 116, 17)); - this.addSlotToContainer(new Slot(tedf, 4, 134, 17)); - this.addSlotToContainer(new Slot(tedf, 5, 62, 35)); - this.addSlotToContainer(new Slot(tedf, 6, 80, 35)); - this.addSlotToContainer(new Slot(tedf, 7, 98, 35)); - this.addSlotToContainer(new Slot(tedf, 8, 116, 35)); - this.addSlotToContainer(new Slot(tedf, 9, 134, 35)); - this.addSlotToContainer(new Slot(tedf, 10, 62, 53)); - this.addSlotToContainer(new Slot(tedf, 11, 80, 53)); - this.addSlotToContainer(new Slot(tedf, 12, 98, 53)); - this.addSlotToContainer(new Slot(tedf, 13, 116, 53)); - this.addSlotToContainer(new Slot(tedf, 14, 134, 53)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 0, 62, 17)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 1, 80, 17)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 2, 98, 17)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 3, 116, 17)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 4, 134, 17)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 5, 62, 35)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 6, 80, 35)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 7, 98, 35)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 8, 116, 35)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 9, 134, 35)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 10, 62, 53)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 11, 80, 53)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 12, 98, 53)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 13, 116, 53)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 14, 134, 53)); //Chip - this.addSlotToContainer(new Slot(tedf, 15, 26, 35)); + this.addSlotToContainer(new Slot(tesd, 15, 26, 35) { + @Override + public boolean isItemValid(ItemStack stack) { + return stack.getItem() instanceof ItemSatChip; + } + }); - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); } } - for(int i = 0; i < 9; i++) - { + for(int i = 0; i < 9; i++) { this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); } } @@ -56,33 +58,25 @@ public class ContainerSatDock extends Container { } @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { + public ItemStack transferStackInSlot(EntityPlayer player, int par2) { ItemStack var3 = null; Slot var4 = (Slot) this.inventorySlots.get(par2); - if (var4 != null && var4.getHasStack()) - { + if (var4 != null && var4.getHasStack()) { ItemStack var5 = var4.getStack(); var3 = var5.copy(); if (par2 <= 15) { - if (!this.mergeItemStack(var5, 16, this.inventorySlots.size(), true)) - { + if (!this.mergeItemStack(var5, 16, this.inventorySlots.size(), true)) { return null; } - } - else if (!this.mergeItemStack(var5, 0, 15, false)) - { - return null; + } else if (!this.mergeItemStack(var5, 0, 15, false)) { + return null; } - if (var5.stackSize == 0) - { - var4.putStack((ItemStack) null); - } - else - { + if (var5.stackSize == 0) { + var4.putStack(null); + } else { var4.onSlotChanged(); } } @@ -92,6 +86,6 @@ public class ContainerSatDock extends Container { @Override public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); + return tileSatelliteDock.isUseableByPlayer(player); } } diff --git a/src/main/java/com/hbm/inventory/fluid/FluidType.java b/src/main/java/com/hbm/inventory/fluid/FluidType.java index cc52b005d..d6fa4d759 100644 --- a/src/main/java/com/hbm/inventory/fluid/FluidType.java +++ b/src/main/java/com/hbm/inventory/fluid/FluidType.java @@ -3,6 +3,7 @@ package com.hbm.inventory.fluid; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map.Entry; import org.lwjgl.input.Keyboard; @@ -12,6 +13,7 @@ import com.hbm.inventory.fluid.trait.*; import com.hbm.inventory.fluid.trait.FluidTraitSimple.*; import com.hbm.lib.RefStrings; import com.hbm.render.util.EnumSymbol; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -30,24 +32,24 @@ public class FluidType { private int color; //Unlocalized string ID of the fluid private String unlocalized; + //localization override for custom fluids + private String localizedOverride; + private int guiTint = 0xffffff; public int poison; public int flammability; public int reactivity; public EnumSymbol symbol; + public boolean customFluid = false; public static final int ROOM_TEMPERATURE = 20; - public static final double DEFAULT_HEATCAP = 0.01D; - public static final double DEFAULT_COMPRESSION = 1D; // v v v this entire system is a pain in the ass to work with. i'd much rather define state transitions and heat values manually. /** How hot this fluid is. Simple enough. */ public int temperature = ROOM_TEMPERATURE; - /** How much "stuff" there is in one mB. 1mB of water turns into 100mB of steam, therefore steam has a compression of 0.01. Compression is only used for translating fluids into other fluids, heat calculations should ignore this. */ - public double compression = DEFAULT_COMPRESSION; public HashMap containers = new HashMap(); - private HashMap, FluidTrait> traits = new HashMap(); + public HashMap, FluidTrait> traits = new HashMap(); //public List enumTraits = new ArrayList(); private ResourceLocation texture; @@ -55,16 +57,33 @@ public class FluidType { public FluidType(String name, int color, int p, int f, int r, EnumSymbol symbol) { this.stringId = name; this.color = color; - this.unlocalized = "hbmfluid." + name.toLowerCase(); + this.unlocalized = "hbmfluid." + name.toLowerCase(Locale.US); this.poison = p; this.flammability = f; this.reactivity = r; this.symbol = symbol; - this.texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/fluids/" + name.toLowerCase() + ".png"); + this.texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/fluids/" + name.toLowerCase(Locale.US) + ".png"); this.id = Fluids.registerSelf(this); } + public FluidType(String name, int color, int p, int f, int r, EnumSymbol symbol, String texName, int tint, int id, String displayName) { + this.stringId = name; + this.color = color; + this.unlocalized = "hbmfluid." + name.toLowerCase(Locale.US); + this.poison = p; + this.flammability = f; + this.reactivity = r; + this.symbol = symbol; + this.texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/fluids/" + texName + ".png"); + this.guiTint = tint; + this.localizedOverride = displayName; + this.customFluid = true; + + this.id = id; + Fluids.register(this, id); + } + public FluidType(int forcedId, String name, int color, int p, int f, int r, EnumSymbol symbol) { this(name, color, p, f, r, symbol); @@ -78,11 +97,6 @@ public class FluidType { return this; } - public FluidType setCompression(double compression) { - this.compression = compression; - return this; - } - public FluidType addContainers(Object... containers) { for(Object container : containers) this.containers.put(container.getClass(), container); return this; @@ -108,7 +122,7 @@ public class FluidType { public int getID() { return this.id; } - + /** The unique mapping name for this fluid, usually matches the unlocalied name, minus the prefix */ public String getName() { return this.stringId; } @@ -117,14 +131,26 @@ public class FluidType { return this.color; } + public int getTint() { + return this.guiTint; + } + public ResourceLocation getTexture() { return this.texture; } public String getUnlocalizedName() { return this.unlocalized; } + /** Returns the localized override name if present, or otherwise the I18n converted name */ + @SideOnly(Side.CLIENT) public String getLocalizedName() { + return this.localizedOverride != null ? this.localizedOverride : I18nUtil.resolveKey(this.unlocalized); + } + /** Returns the localized override name if present, or otherwise the raw unlocalized name. Used for server-side code that needs ChatComponentTranslation. */ + public String getConditionalName() { + return this.localizedOverride != null ? this.localizedOverride : this.unlocalized; + } public String getDict(int quantity) { - return "container" + quantity + this.stringId.replace("_", "").toLowerCase(); + return "container" + quantity + this.stringId.replace("_", "").toLowerCase(Locale.US); } public boolean isHot() { diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index bf2ce2575..5ca1341f6 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -1,12 +1,22 @@ package com.hbm.inventory.fluid; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map.Entry; +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.trait.*; import com.hbm.inventory.fluid.trait.FluidTraitSimple.*; import com.hbm.lib.ModDamageSource; +import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; @@ -20,6 +30,8 @@ import net.minecraft.potion.PotionEffect; public class Fluids { + public static final Gson gson = new Gson(); + public static FluidType NONE; public static FluidType WATER; public static FluidType STEAM; @@ -130,9 +142,33 @@ public class Fluids { public static FluidType EGG; public static FluidType CHOLESTEROL; public static FluidType ESTRADIOL; + public static FluidType FISHOIL; + public static FluidType SUNFLOWEROIL; + public static FluidType NITROGLYCERIN; + public static FluidType REDMUD; + public static FluidType CHLOROCALCITE_SOLUTION; + public static FluidType CHLOROCALCITE_MIX; + public static FluidType CHLOROCALCITE_CLEANED; + public static FluidType POTASSIUM_CHLORIDE; + public static FluidType CALCIUM_CHLORIDE; + public static FluidType CALCIUM_SOLUTION; + public static FluidType SMOKE; + public static FluidType SMOKE_LEADED; + public static FluidType SMOKE_POISON; + public static FluidType HELIUM4; + public static FluidType HEAVYWATER_HOT; + public static FluidType SODIUM; + public static FluidType SODIUM_HOT; + public static FluidType THORIUM_SALT; + public static FluidType THORIUM_SALT_HOT; + public static FluidType THORIUM_SALT_DEPLETED; + public static FluidType FULLERENE; + + public static List customFluids = new ArrayList(); private static final HashMap idMapping = new HashMap(); private static final HashMap nameMapping = new HashMap(); + protected static final List registerOrder = new ArrayList(); protected static final List metaOrder = new ArrayList(); public static final FT_Liquid LIQUID = new FT_Liquid(); @@ -145,6 +181,7 @@ public class Fluids { public static final FT_NoContainer NOCON = new FT_NoContainer(); public static final FT_NoID NOID = new FT_NoID(); public static final FT_Delicious DELICIOUS = new FT_Delicious(); + public static final FT_Leaded LEADED = new FT_Leaded(); public static void init() { @@ -163,10 +200,10 @@ public class Fluids { NONE = new FluidType("NONE", 0x888888, 0, 0, 0, EnumSymbol.NONE); WATER = new FluidType("WATER", 0x3333FF, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); - STEAM = new FluidType("STEAM", 0xe5e5e5, 3, 0, 0, EnumSymbol.NONE).setTemp(100).setCompression(0.01D).addTraits(GASEOUS); - HOTSTEAM = new FluidType("HOTSTEAM", 0xE7D6D6, 4, 0, 0, EnumSymbol.NONE).setTemp(300).setCompression(0.1D).addTraits(GASEOUS); - SUPERHOTSTEAM = new FluidType("SUPERHOTSTEAM", 0xE7B7B7, 4, 0, 0, EnumSymbol.NONE).setTemp(450).setCompression(1D).addTraits(GASEOUS); - ULTRAHOTSTEAM = new FluidType("ULTRAHOTSTEAM", 0xE39393, 4, 0, 0, EnumSymbol.NONE).setTemp(600).setCompression(10D).addTraits(GASEOUS); + STEAM = new FluidType("STEAM", 0xe5e5e5, 3, 0, 0, EnumSymbol.NONE).setTemp(100).addTraits(GASEOUS); + HOTSTEAM = new FluidType("HOTSTEAM", 0xE7D6D6, 4, 0, 0, EnumSymbol.NONE).setTemp(300).addTraits(GASEOUS); + SUPERHOTSTEAM = new FluidType("SUPERHOTSTEAM", 0xE7B7B7, 4, 0, 0, EnumSymbol.NONE).setTemp(450).addTraits(GASEOUS); + ULTRAHOTSTEAM = new FluidType("ULTRAHOTSTEAM", 0xE39393, 4, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(GASEOUS); COOLANT = new FluidType("COOLANT", 0xd8fcff, 1, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); LAVA = new FluidType("LAVA", 0xFF3300, 4, 0, 0, EnumSymbol.NOWATER).setTemp(1200).addTraits(LIQUID, VISCOUS); DEUTERIUM = new FluidType("DEUTERIUM", 0x0000FF, 3, 4, 0, EnumSymbol.NONE).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), GASEOUS); @@ -209,7 +246,7 @@ public class Fluids { WASTEGAS = new FluidType("WASTEGAS", 0xB8B8B8, 2, 0, 1, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.5F), NOCON, GASEOUS); GASOLINE = new FluidType("GASOLINE", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2F7747)).addTraits(new FT_Flammable(400_000), new FT_Combustible(FuelGrade.HIGH, 1_000_000), LIQUID); COALGAS = new FluidType("COALGAS", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2E155F)).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.MEDIUM, 150_000), LIQUID); - SPENTSTEAM = new FluidType("SPENTSTEAM", 0x445772, 2, 0, 0, EnumSymbol.NONE).setCompression(1D).addTraits(NOCON, GASEOUS); + SPENTSTEAM = new FluidType("SPENTSTEAM", 0x445772, 2, 0, 0, EnumSymbol.NONE).addTraits(NOCON, GASEOUS); FRACKSOL = new FluidType("FRACKSOL", 0x798A6B, 1, 3, 3, EnumSymbol.ACID).addContainers(new CD_Canister(0x4F887F)).addTraits(new FT_Corrosive(15), new FT_Poison(false, 0), LIQUID, VISCOUS); PLASMA_DT = new FluidType("PLASMA_DT", 0xF7AFDE, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3250).addTraits(NOCON, NOID, PLASMA); PLASMA_HD = new FluidType("PLASMA_HD", 0xF0ADF4, 0, 4, 0, EnumSymbol.RADIATION).setTemp(2500).addTraits(NOCON, NOID, PLASMA); @@ -218,7 +255,7 @@ public class Fluids { PLASMA_BF = new FluidType("PLASMA_BF", 0xA7F1A3, 4, 5, 4, EnumSymbol.ANTIMATTER).setTemp(8500).addTraits(NOCON, NOID, PLASMA); CARBONDIOXIDE = new FluidType("CARBONDIOXIDE", 0x404040, 3, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS); PLASMA_DH3 = new FluidType("PLASMA_DH3", 0xFF83AA, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3480).addTraits(NOCON, NOID, PLASMA); - HELIUM3 = new FluidType("HELIUM3", 0xFCF0C4, 3, 4, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS); + HELIUM3 = new FluidType("HELIUM3", 0xFCF0C4, 0, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS); DEATH = new FluidType("DEATH", 0x717A88, 2, 0, 1, EnumSymbol.ACID).setTemp(300).addTraits(new FT_Corrosive(80), new FT_Poison(true, 4), LEADCON, LIQUID, VISCOUS); ETHANOL = new FluidType("ETHANOL", 0xe0ffff, 2, 3, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xEAFFF3)).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.HIGH, 200_000), LIQUID); HEAVYWATER = new FluidType("HEAVYWATER", 0x00a0b0, 1, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); @@ -233,9 +270,9 @@ public class Fluids { SALIENT = new FluidType("SALIENT", 0x457F2D, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID, VISCOUS); XPJUICE = new FluidType("XPJUICE", 0xBBFF09, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); ENDERJUICE = new FluidType("ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); - PETROIL_LEADED = new FluidType("PETROIL_LEADED", 0x44413d, 1, 3, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2331F6)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 450_000), LIQUID); - GASOLINE_LEADED = new FluidType("GASOLINE_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2F775A)).addTraits(new FT_Flammable(400_000), new FT_Combustible(FuelGrade.HIGH, 1_500_000), LIQUID); - COALGAS_LEADED = new FluidType("COALGAS_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x1E155F)).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.MEDIUM, 250_000), LIQUID); + PETROIL_LEADED = new FluidType("PETROIL_LEADED", 0x44413d, 1, 3, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2331F6)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 450_000), LIQUID, LEADED); + GASOLINE_LEADED = new FluidType("GASOLINE_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2F775A)).addTraits(new FT_Flammable(400_000), new FT_Combustible(FuelGrade.HIGH, 1_500_000), LIQUID, LEADED); + COALGAS_LEADED = new FluidType("COALGAS_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x1E155F)).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.MEDIUM, 250_000), LIQUID, LEADED); SULFURIC_ACID = new FluidType("SULFURIC_ACID", 0xB0AA64, 3, 0, 2, EnumSymbol.ACID).addTraits(new FT_Corrosive(50), LIQUID); COOLANT_HOT = new FluidType("COOLANT_HOT", 0x99525E, 1, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(LIQUID); MUG = new FluidType("MUG", 0x4B2D28, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID); @@ -250,7 +287,7 @@ public class Fluids { SYNGAS = new FluidType("SYNGAS", 0x131313, 1, 4, 2, EnumSymbol.NONE).addContainers(new CD_Gastank(0xFFFFFF, 0x131313)).addTraits(GASEOUS); OXYHYDROGEN = new FluidType("OXYHYDROGEN", 0x483FC1, 0, 4, 2, EnumSymbol.NONE).addTraits(GASEOUS); RADIOSOLVENT = new FluidType("RADIOSOLVENT", 0xA4D7DD, 3, 3, 0, EnumSymbol.NONE).addTraits(LIQUID, LEADCON, new FT_Corrosive(50), new FT_VentRadiation(0.01F)); - CHLORINE = new FluidType("CHLORINE", 0xBAB572, 3, 0, 0, EnumSymbol.OXIDIZER).addContainers(new CD_Gastank(0xBAB572, 0x887B34)).addTraits(GASEOUS, new FT_Corrosive(25), new FT_Poison(true, 1)); + CHLORINE = new FluidType("CHLORINE", 0xBAB572, 3, 0, 0, EnumSymbol.OXIDIZER).addContainers(new CD_Gastank(0xBAB572, 0x887B34)).addTraits(GASEOUS, new FT_Corrosive(25)); HEAVYOIL_VACUUM = new FluidType("HEAVYOIL_VACUUM", 0x131214, 2, 1, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS).addContainers(new CD_Canister(0x513F39)); REFORMATE = new FluidType("REFORMATE", 0x835472, 2, 2, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS).addContainers(new CD_Canister(0xD180D6)); LIGHTOIL_VACUUM = new FluidType("LIGHTOIL_VACUUM", 0x8C8851, 1, 2, 0, EnumSymbol.NONE).addTraits(LIQUID).addContainers(new CD_Canister(0xB46B52)); @@ -270,10 +307,37 @@ public class Fluids { GAS_COKER = new FluidType("GAS_COKER", 0xDEF4CA, 1, 4, 0, EnumSymbol.NONE).addTraits(GASEOUS); EGG = new FluidType("EGG", 0xD2C273, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); CHOLESTEROL = new FluidType("CHOLESTEROL", 0xD6D2BD, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); - ESTRADIOL = new FluidType(109, "ESTRADIOL", 0xCDD5D8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); + ESTRADIOL = new FluidType("ESTRADIOL", 0xCDD5D8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); + FISHOIL = new FluidType("FISHOIL", 0x4B4A45, 0, 1, 0, EnumSymbol.NONE).addTraits(LIQUID); + SUNFLOWEROIL = new FluidType("SUNFLOWEROIL", 0xCBAD45, 0, 1, 0, EnumSymbol.NONE).addTraits(LIQUID); + NITROGLYCERIN = new FluidType("NITROGLYCERIN", 0x92ACA6, 0, 4, 0, EnumSymbol.NONE).addTraits(LIQUID); + REDMUD = new FluidType("REDMUD", 0xD85638, 3, 0, 4, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, LEADCON, new FT_Corrosive(60), new FT_Flammable(1_000)); + CHLOROCALCITE_SOLUTION = new FluidType("CHLOROCALCITE_SOLUTION", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60)); + CHLOROCALCITE_MIX = new FluidType("CHLOROCALCITE_MIX", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60)); + CHLOROCALCITE_CLEANED = new FluidType("CHLOROCALCITE_CLEANED", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60)); + POTASSIUM_CHLORIDE = new FluidType("POTASSIUM_CHLORIDE", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60)); + CALCIUM_CHLORIDE = new FluidType("CALCIUM_CHLORIDE", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60)); + CALCIUM_SOLUTION = new FluidType("CALCIUM_SOLUTION", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60)); + SMOKE = new FluidType("SMOKE", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON); + SMOKE_LEADED = new FluidType("SMOKE_LEADED", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON); + SMOKE_POISON = new FluidType("SMOKE_POISON", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON); + HELIUM4 = new FluidType("HELIUM4", 0xE54B0A, 0, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS); + HEAVYWATER_HOT = new FluidType("HEAVYWATER_HOT", 0x4D007B, 1, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(LIQUID); + SODIUM = new FluidType("SODIUM", 0xCCD4D5, 1, 2, 3, EnumSymbol.NONE).setTemp(400).addTraits(LIQUID); + SODIUM_HOT = new FluidType("SODIUM_HOT", 0xE2ADC1, 1, 2, 3, EnumSymbol.NONE).setTemp(1200).addTraits(LIQUID); + THORIUM_SALT = new FluidType("THORIUM_SALT", 0x7A5542, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65)); + THORIUM_SALT_HOT = new FluidType("THORIUM_SALT_HOT", 0x3E3627, 2, 0, 3, EnumSymbol.NONE).setTemp(1600).addTraits(LIQUID, new FT_Corrosive(65)); + THORIUM_SALT_DEPLETED = new FluidType("THORIUM_SALT_DEPLETED", 0x302D1C, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65)); + FULLERENE = new FluidType(130, "FULLERENE", 0xFF7FED, 3, 3, 3, EnumSymbol.NONE).addTraits(LIQUID, new FT_Corrosive(65)); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE + + File folder = MainRegistry.configHbmDir; + File customTypes = new File(folder.getAbsolutePath() + File.separatorChar + "hbmFluidTypes.json"); + if(!customTypes.exists()) initDefaultFluids(customTypes); + readCustomFluids(customTypes); + //AND DON'T FORGET THE META DOWN HERE // V V V V V V V V @@ -282,6 +346,7 @@ public class Fluids { //vanilla metaOrder.add(WATER); metaOrder.add(HEAVYWATER); + metaOrder.add(HEAVYWATER_HOT); metaOrder.add(LAVA); //steams metaOrder.add(STEAM); @@ -298,11 +363,17 @@ public class Fluids { metaOrder.add(MUG_HOT); metaOrder.add(BLOOD); metaOrder.add(BLOOD_HOT); + metaOrder.add(SODIUM); + metaOrder.add(SODIUM_HOT); + metaOrder.add(THORIUM_SALT); + metaOrder.add(THORIUM_SALT_HOT); + metaOrder.add(THORIUM_SALT_DEPLETED); //pure elements, cyogenic gasses metaOrder.add(HYDROGEN); metaOrder.add(DEUTERIUM); metaOrder.add(TRITIUM); metaOrder.add(HELIUM3); + metaOrder.add(HELIUM4); metaOrder.add(OXYGEN); metaOrder.add(XENON); metaOrder.add(CHLORINE); @@ -357,6 +428,8 @@ public class Fluids { metaOrder.add(BIOGAS); metaOrder.add(BIOFUEL); metaOrder.add(ETHANOL); + metaOrder.add(FISHOIL); + metaOrder.add(SUNFLOWEROIL); metaOrder.add(NITAN); metaOrder.add(BALEFIRE); //processing fluids @@ -376,14 +449,23 @@ public class Fluids { metaOrder.add(PAIN); metaOrder.add(DEATH); metaOrder.add(WATZ); + metaOrder.add(REDMUD); + metaOrder.add(FULLERENE); metaOrder.add(EGG); metaOrder.add(CHOLESTEROL); + metaOrder.add(CHLOROCALCITE_SOLUTION); + metaOrder.add(CHLOROCALCITE_MIX); + metaOrder.add(CHLOROCALCITE_CLEANED); + metaOrder.add(POTASSIUM_CHLORIDE); + metaOrder.add(CALCIUM_CHLORIDE); + metaOrder.add(CALCIUM_SOLUTION); //solutions and working fluids metaOrder.add(FRACKSOL); //the fun guys metaOrder.add(PHOSGENE); metaOrder.add(MUSTARDGAS); metaOrder.add(ESTRADIOL); + metaOrder.add(NITROGLYCERIN); //antimatter metaOrder.add(AMAT); metaOrder.add(ASCHRAB); @@ -400,12 +482,19 @@ public class Fluids { metaOrder.add(PLASMA_DH3); metaOrder.add(PLASMA_XM); metaOrder.add(PLASMA_BF); + //smoke + metaOrder.add(SMOKE); + metaOrder.add(SMOKE_LEADED); + metaOrder.add(SMOKE_POISON); + + for(FluidType custom : customFluids) metaOrder.add(custom); CHLORINE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 2F, 20, HazardClass.GAS_CHLORINE, false))); PHOSGENE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 20, HazardClass.GAS_CHLORINE, false))); MUSTARDGAS.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 10, HazardClass.GAS_CORROSIVE, false)) .addEntry(new ToxinEffects(HazardClass.GAS_CORROSIVE, true).add(new PotionEffect(Potion.wither.id, 100, 1), new PotionEffect(Potion.confusion.id, 100, 0)))); ESTRADIOL.addTraits(new FT_Toxin().addEntry(new ToxinEffects(HazardClass.PARTICLE_FINE, false).add(new PotionEffect(HbmPotion.death.id, 60 * 60 * 20, 0)))); + REDMUD.addTraits(new FT_Toxin().addEntry(new ToxinEffects(HazardClass.GAS_CORROSIVE, false).add(new PotionEffect(Potion.wither.id, 30 * 20, 2)))); double eff_steam_boil = 1.0D; double eff_steam_heatex = 0.25D; @@ -432,16 +521,25 @@ public class Fluids { HOTOIL.addTraits(new FT_Coolable(OIL, 1, 1, 10).setEff(CoolingType.HEATEXCHANGER, 1.0D)); HOTCRACKOIL.addTraits(new FT_Coolable(CRACKOIL, 1, 1, 10).setEff(CoolingType.HEATEXCHANGER, 1.0D)); - - COOLANT.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).addStep(300, 1, COOLANT_HOT, 1)); + + COOLANT.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.PWR, 1.0D).addStep(300, 1, COOLANT_HOT, 1)); COOLANT_HOT.addTraits(new FT_Coolable(COOLANT, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D)); - MUG.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).addStep(400, 1, MUG_HOT, 1)); + MUG.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.PWR, 1.0D).addStep(400, 1, MUG_HOT, 1), new FT_PWRModerator(1.15D)); MUG_HOT.addTraits(new FT_Coolable(MUG, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D)); BLOOD.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).addStep(500, 1, BLOOD_HOT, 1)); BLOOD_HOT.addTraits(new FT_Coolable(BLOOD, 1, 1, 500).setEff(CoolingType.HEATEXCHANGER, 1.0D)); + HEAVYWATER.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 1.0D).addStep(300, 1, HEAVYWATER_HOT, 1), new FT_PWRModerator(1.25D)); + HEAVYWATER_HOT.addTraits(new FT_Coolable(HEAVYWATER, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D)); + + SODIUM.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 2.5D).addStep(400, 1, SODIUM_HOT, 1)); + SODIUM_HOT.addTraits(new FT_Coolable(SODIUM, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D)); + + THORIUM_SALT.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 1.0D).addStep(400, 1, THORIUM_SALT_HOT, 1), new FT_PWRModerator(2.5D)); + THORIUM_SALT_HOT.addTraits(new FT_Coolable(THORIUM_SALT_DEPLETED, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D)); + if(idMapping.size() != metaOrder.size()) { throw new IllegalStateException("A severe error has occoured during NTM's fluid registering process! The MetaOrder and Mappings are inconsistent! Mapping size: " + idMapping.size()+ " / MetaOrder size: " + metaOrder.size()); } @@ -523,12 +621,134 @@ public class Fluids { registerCalculatedFuel(WOODOIL, 110_000 /* 20_000 TU per 250mB + a bonus */, 0, null); registerCalculatedFuel(COALCREOSOTE, 250_000 /* 20_000 TU per 100mB + a bonus */, 0, null); + registerCalculatedFuel(FISHOIL, 75_000, 0, null); + registerCalculatedFuel(SUNFLOWEROIL, 50_000, 0, null); registerCalculatedFuel(SOLVENT, 100_000, 0, null); // flammable, sure, but not combustable registerCalculatedFuel(RADIOSOLVENT, 150_000, 0, null); registerCalculatedFuel(SYNGAS, (coalHeat * (1000 /* bucket */ / 100 /* mB per coal */) * flammabilityLow * demandLow * complexityChemplant) * 1.5, 1.25, FuelGrade.GAS); //same as coal oil, +50% bonus registerCalculatedFuel(OXYHYDROGEN, 5_000, 3, FuelGrade.GAS); // whatever + + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmFluidTraits.json"); + File template = new File(folder.getAbsolutePath() + File.separatorChar + "_hbmFluidTraits.json"); + + if(!config.exists()) { + writeDefaultTraits(template); + } else { + readTraits(config); + } + } + + private static void initDefaultFluids(File file) { + + try { + JsonWriter writer = new JsonWriter(new FileWriter(file)); + writer.setIndent(" "); + writer.beginObject(); + + writer.name("CUSTOM_DEMO").beginObject(); + writer.name("name").value("Custom Fluid Demo"); + writer.name("id").value(1000); + writer.name("color").value(0xff0000); + writer.name("tint").value(0xff0000); + writer.name("p").value(1).name("f").value(2).name("r").value(0); + writer.name("symbol").value(EnumSymbol.OXIDIZER.name()); + writer.name("texture").value("custom_water"); + writer.name("temperature").value(20); + writer.endObject(); + + writer.endObject(); + writer.close(); + } catch(IOException e) { + e.printStackTrace(); + } + } + + private static void readCustomFluids(File file) { + + try { + JsonObject json = gson.fromJson(new FileReader(file), JsonObject.class); + + for(Entry entry : json.entrySet()) { + + JsonObject obj = (JsonObject) entry.getValue(); + + String name = entry.getKey(); + int id = obj.get("id").getAsInt(); + String displayName = obj.get("name").getAsString(); + int color = obj.get("color").getAsInt(); + int tint = obj.get("tint").getAsInt(); + int p = obj.get("p").getAsInt(); + int f = obj.get("f").getAsInt(); + int r = obj.get("r").getAsInt(); + EnumSymbol symbol = EnumSymbol.valueOf(obj.get("symbol").getAsString()); + String texture = obj.get("texture").getAsString(); + int temperature = obj.get("temperature").getAsInt(); + + FluidType type = new FluidType(name, color, p, f, r, symbol, texture, tint, id, displayName).setTemp(temperature); + customFluids.add(type); + } + + } catch(Exception ex) { + ex.printStackTrace(); + } + } + + private static void writeDefaultTraits(File file) { + + try { + JsonWriter writer = new JsonWriter(new FileWriter(file)); + writer.setIndent(" "); + writer.beginObject(); + + for(FluidType type : metaOrder) { + writer.name(type.getName()).beginObject(); + + for(Entry, FluidTrait> entry : type.traits.entrySet()) { + writer.name(FluidTrait.traitNameMap.inverse().get(entry.getKey())).beginObject(); + entry.getValue().serializeJSON(writer); + writer.endObject(); + } + + writer.endObject(); + } + + writer.endObject(); + writer.close(); + } catch(IOException e) { + e.printStackTrace(); + } + } + + private static void readTraits(File config) { + + try { + JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); + + for(FluidType type : metaOrder) { + + JsonElement element = json.get(type.getName()); + if(element != null) { + type.traits.clear(); + JsonObject obj = element.getAsJsonObject(); + + for(Entry entry : obj.entrySet()) { + Class traitClass = FluidTrait.traitNameMap.get(entry.getKey()); + try { + FluidTrait trait = traitClass.newInstance(); + trait.deserializeJSON(entry.getValue().getAsJsonObject()); + type.addTraits(trait); + } catch(Exception ex) { + ex.printStackTrace(); + } + } + } + } + + } catch(Exception ex) { + ex.printStackTrace(); + } } private static void registerCalculatedFuel(FluidType type, double base, double combustMult, FuelGrade grade) { @@ -559,10 +779,17 @@ public class Fluids { protected static int registerSelf(FluidType fluid) { int id = idMapping.size(); idMapping.put(id, fluid); + registerOrder.add(fluid); nameMapping.put(fluid.getName(), fluid); return id; } + protected static void register(FluidType fluid, int id) { + idMapping.put(id, fluid); + registerOrder.add(fluid); + nameMapping.put(fluid.getName(), fluid); + } + public static FluidType fromID(int id) { FluidType fluid = idMapping.get(id); @@ -593,7 +820,7 @@ public class Fluids { FluidType[] all = new FluidType[idMapping.size()]; for(int i = 0; i < all.length; i++) { - FluidType type = nice ? metaOrder.get(i) : idMapping.get(i); + FluidType type = nice ? metaOrder.get(i) : registerOrder.get(i); if(type == null) { throw new IllegalStateException("A severe error has occoured with NTM's fluid system! Fluid of the ID " + i + " has returned NULL in the registry!"); diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index 5d67bb325..4294759bb 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -15,10 +15,11 @@ import com.hbm.packet.TEFluidPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; public class FluidTank { @@ -33,13 +34,22 @@ public class FluidTank { FluidType type; int fluid; int maxFluid; - public int index = 0; + @Deprecated public int index = 0; + int pressure = 0; public FluidTank(FluidType type, int maxFluid) { this.type = type; this.maxFluid = maxFluid; } + public FluidTank withPressure(int pressure) { + + if(this.pressure != pressure) this.setFill(0); + + this.pressure = pressure; + return this; + } + @Deprecated // indices are no longer needed public FluidTank(FluidType type, int maxFluid, int index) { this.type = type; @@ -76,6 +86,10 @@ public class FluidTank { return maxFluid; } + public int getPressure() { + return pressure; + } + public int changeTankSize(int size) { maxFluid = size; @@ -108,6 +122,8 @@ public class FluidTank { if(slots[in] == null) return false; + if(this.pressure != 0) return false; //for now, canisters can only be loaded from high-pressure tanks, not unloaded + int prev = this.getFill(); for(FluidLoadingHandler handler : loadingHandlers) { @@ -184,10 +200,19 @@ public class FluidTank { * @param width * @param height */ - //TODO: add a directional parameter to allow tanks to grow horizontally public void renderTank(int x, int y, double z, int width, int height) { + renderTank(x, y, z, width, height, 0); + } + + public void renderTank(int x, int y, double z, int width, int height, int orientation) { GL11.glEnable(GL11.GL_BLEND); + + int color = type.getTint(); + double r = ((color & 0xff0000) >> 16) / 255D; + double g = ((color & 0x00ff00) >> 8) / 255D; + double b = ((color & 0x0000ff) >> 0) / 255D; + GL11.glColor3d(r, g, b); y -= height; @@ -196,15 +221,32 @@ public class FluidTank { int i = (fluid * height) / maxFluid; double minX = x; - double maxX = x + width; - double minY = y + (height - i); - double maxY = y + height; + double maxX = x; + double minY = y; + double maxY = y; double minV = 1D - i / 16D; double maxV = 1D; double minU = 0D; double maxU = width / 16D; + if(orientation == 0) { + maxX += width; + minY += height - i; + maxY += height; + } + + if(orientation == 1) { + i = (fluid * width) / maxFluid; + maxX += i; + maxY += height; + + minV = 0; + maxV = height / 16D; + minU = 0D; + maxU = width / 16D; + } + Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); tessellator.addVertexWithUV(minX, maxY, z, minU, maxV); @@ -213,6 +255,7 @@ public class FluidTank { tessellator.addVertexWithUV(minX, minY, z, minU, minV); tessellator.draw(); + GL11.glColor3d(1D, 1D, 1D); GL11.glDisable(GL11.GL_BLEND); } @@ -220,9 +263,13 @@ public class FluidTank { if(x <= mouseX && x + width > mouseX && y < mouseY && y + height >= mouseY) { List list = new ArrayList(); - list.add(I18n.format(this.type.getUnlocalizedName())); + list.add(this.type.getLocalizedName()); list.add(fluid + "/" + maxFluid + "mB"); + if(this.pressure != 0) { + list.add(EnumChatFormatting.RED + "Pressure: " + this.pressure + " PU"); + } + type.addInfo(list); gui.drawInfo(list.toArray(new String[0]), mouseX, mouseY); } @@ -233,6 +280,7 @@ public class FluidTank { nbt.setInteger(s, fluid); nbt.setInteger(s + "_max", maxFluid); nbt.setInteger(s + "_type", type.getID()); + nbt.setShort(s + "_p", (short) pressure); } //Called by TE to load fillstate @@ -240,11 +288,15 @@ public class FluidTank { fluid = nbt.getInteger(s); int max = nbt.getInteger(s + "_max"); if(max > 0) - maxFluid = nbt.getInteger(s + "_max"); + maxFluid = max; + + fluid = MathHelper.clamp_int(fluid, 0, max); type = Fluids.fromName(nbt.getString(s + "_type")); //compat if(type == Fluids.NONE) type = Fluids.fromID(nbt.getInteger(s + "_type")); + + this.pressure = nbt.getShort(s + "_p"); } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java index a88ac2c35..a297d40ca 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java @@ -1,7 +1,10 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.List; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.util.BobMathUtil; import net.minecraft.util.EnumChatFormatting; @@ -11,6 +14,8 @@ public class FT_Combustible extends FluidTrait { protected FuelGrade fuelGrade; protected long combustionEnergy; + public FT_Combustible() { } + public FT_Combustible(FuelGrade grade, long energy) { this.fuelGrade = grade; this.combustionEnergy = energy; @@ -53,4 +58,16 @@ public class FT_Combustible extends FluidTrait { return this.grade; } } + + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("energy").value(combustionEnergy); + writer.name("grade").value(fuelGrade.name()); + } + + @Override + public void deserializeJSON(JsonObject obj) { + this.combustionEnergy = obj.get("energy").getAsLong(); + this.fuelGrade = FuelGrade.valueOf(obj.get("grade").getAsString()); + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java index 25bd1488d..1bb6d3574 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java @@ -1,9 +1,14 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.HashMap; import java.util.List; +import java.util.Map.Entry; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; import net.minecraft.util.EnumChatFormatting; @@ -11,10 +16,12 @@ public class FT_Coolable extends FluidTrait { protected HashMap efficiency = new HashMap(); - public final FluidType coolsTo; + public FluidType coolsTo; public int amountReq; public int amountProduced; - public final int heatEnergy; + public int heatEnergy; + + public FT_Coolable() { } public FT_Coolable(FluidType type, int req, int prod, int heat) { this.coolsTo = type; @@ -35,6 +42,7 @@ public class FT_Coolable extends FluidTrait { @Override public void addInfoHidden(List info) { + info.add(EnumChatFormatting.AQUA + "Thermal capacity: " + heatEnergy + " TU"); for(CoolingType type : CoolingType.values()) { double eff = getEfficiency(type); @@ -56,4 +64,28 @@ public class FT_Coolable extends FluidTrait { this.name = name; } } + + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("coolsTo").value(this.coolsTo.getName()); + writer.name("amountReq").value(this.amountReq); + writer.name("amountProd").value(this.amountProduced); + writer.name("heatEnergy").value(this.heatEnergy); + + for(Entry entry : this.efficiency.entrySet()) { + writer.name(entry.getKey().name()).value(entry.getValue()); + } + } + + @Override + public void deserializeJSON(JsonObject obj) { + this.coolsTo = Fluids.fromName(obj.get("coolsTo").getAsString()); + this.amountReq = obj.get("amountReq").getAsInt(); + this.amountProduced = obj.get("amountProd").getAsInt(); + this.heatEnergy = obj.get("heatEnergy").getAsInt(); + + for(CoolingType type : CoolingType.values()) { + if(obj.has(type.name())) efficiency.put(type, obj.get(type.name()).getAsDouble()); + } + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java index 4e0354033..2a459e25c 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java @@ -1,7 +1,11 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.List; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; + import net.minecraft.util.EnumChatFormatting; public class FT_Corrosive extends FluidTrait { @@ -9,6 +13,8 @@ public class FT_Corrosive extends FluidTrait { /* 0-100 */ private int rating; + public FT_Corrosive() { } + public FT_Corrosive(int rating) { this.rating = rating; } @@ -29,4 +35,14 @@ public class FT_Corrosive extends FluidTrait { else info.add(EnumChatFormatting.YELLOW + "[Corrosive]"); } + + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("rating").value(rating); + } + + @Override + public void deserializeJSON(JsonObject obj) { + this.rating = obj.get("rating").getAsInt(); + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java index c2b582ae5..82e309ef9 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java @@ -1,7 +1,10 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.List; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.util.BobMathUtil; import net.minecraft.util.EnumChatFormatting; @@ -11,6 +14,8 @@ public class FT_Flammable extends FluidTrait { /** How much heat energy (usually translates into HE 1:1) 1000mB hold */ private long energy; + public FT_Flammable() { } + public FT_Flammable(long energy) { this.energy = energy; } @@ -28,4 +33,14 @@ public class FT_Flammable extends FluidTrait { if(energy > 0) info.add(EnumChatFormatting.YELLOW + "Provides " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(energy) + "TU " + EnumChatFormatting.YELLOW + "per bucket"); } + + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("energy").value(energy); + } + + @Override + public void deserializeJSON(JsonObject obj) { + this.energy = obj.get("energy").getAsLong(); + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java index e01169076..c828858b8 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java @@ -1,12 +1,18 @@ package com.hbm.inventory.fluid.trait; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; import net.minecraft.util.EnumChatFormatting; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map.Entry; public class FT_Heatable extends FluidTrait { @@ -36,6 +42,7 @@ public class FT_Heatable extends FluidTrait { @Override public void addInfoHidden(List info) { + info.add(EnumChatFormatting.AQUA + "Thermal capacity: " + this.getFirstStep().heatReq + " TU"); for(HeatingType type : HeatingType.values()) { double eff = getEfficiency(type); @@ -63,7 +70,8 @@ public class FT_Heatable extends FluidTrait { public static enum HeatingType { BOILER("Boilable"), - HEATEXCHANGER("Heatable"); + HEATEXCHANGER("Heatable"), + PWR("PWR Coolant"); public String name; @@ -71,4 +79,45 @@ public class FT_Heatable extends FluidTrait { this.name = name; } } + + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + + writer.name("steps").beginArray(); + + for(HeatingStep step : steps) { + writer.beginObject(); + writer.name("typeProduced").value(step.typeProduced.getName()); + writer.name("amountReq").value(step.amountReq); + writer.name("amountProd").value(step.amountProduced); + writer.name("heatReq").value(step.heatReq); + writer.endObject(); + } + + writer.endArray(); + + for(Entry entry : this.efficiency.entrySet()) { + writer.name(entry.getKey().name()).value(entry.getValue()); + } + } + + @Override + public void deserializeJSON(JsonObject obj) { + + JsonArray steps = obj.get("steps").getAsJsonArray(); + + for(int i = 0; i < steps.size(); i++) { + JsonObject step = steps.get(i).getAsJsonObject(); + this.steps.add(new HeatingStep( + step.get("amountReq").getAsInt(), + step.get("heatReq").getAsInt(), + Fluids.fromName(step.get("typeProduced").getAsString()), + step.get("amountProd").getAsInt() + )); + } + + for(HeatingType type : HeatingType.values()) { + if(obj.has(type.name())) efficiency.put(type, obj.get(type.name()).getAsDouble()); + } + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java new file mode 100644 index 000000000..65386405a --- /dev/null +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java @@ -0,0 +1,43 @@ +package com.hbm.inventory.fluid.trait; + +import java.io.IOException; +import java.util.List; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; + +import net.minecraft.util.EnumChatFormatting; + +public class FT_PWRModerator extends FluidTrait { + + private double multiplier; + + public FT_PWRModerator(double mulitplier) { + this.multiplier = mulitplier; + } + + public double getMultiplier() { + return multiplier; + } + + @Override + public void addInfo(List info) { + info.add(EnumChatFormatting.BLUE + "[PWR Flux Multiplier]"); + } + + @Override + public void addInfoHidden(List info) { + int mult = (int) (multiplier * 100 - 100); + info.add(EnumChatFormatting.BLUE + "Core flux " + (mult >= 0 ? "+" : "") + mult + "%"); + } + + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("multiplier").value(multiplier); + } + + @Override + public void deserializeJSON(JsonObject obj) { + this.multiplier = obj.get("multiplier").getAsDouble(); + } +} diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java index 2c176bc3e..335c182cb 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java @@ -1,7 +1,11 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.List; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; + import net.minecraft.util.EnumChatFormatting; @Deprecated //use FT_Toxin instead @@ -10,6 +14,8 @@ public class FT_Poison extends FluidTrait { protected boolean withering = false; protected int level = 0; + public FT_Poison() { } + public FT_Poison(boolean withering, int level) { this.withering = withering; this.level = level; @@ -27,4 +33,14 @@ public class FT_Poison extends FluidTrait { public void addInfoHidden(List info) { info.add(EnumChatFormatting.GREEN + "[Toxic Fumes]"); } + + @Override public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("level").value(this.level); + writer.name("withering").value(this.withering); + } + + @Override public void deserializeJSON(JsonObject obj) { + this.level = obj.get("level").getAsInt(); + this.withering = obj.get("withering").getAsBoolean(); + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java index 456b8e0a8..fe814219e 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java @@ -1,8 +1,13 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Locale; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorUtil; import com.hbm.util.I18nUtil; @@ -96,7 +101,7 @@ public class FT_Toxin extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.YELLOW + "- " + I18nUtil.resolveKey(clazz.lang) + (fullBody ? EnumChatFormatting.RED + " (requires hazmat suit)" : "") + ": " + EnumChatFormatting.YELLOW + String.format("%,.1f", amount * 20 / delay) + " DPS"); + info.add(EnumChatFormatting.YELLOW + "- " + I18nUtil.resolveKey(clazz.lang) + (fullBody ? EnumChatFormatting.RED + " (requires hazmat suit)" : "") + ": " + EnumChatFormatting.YELLOW + String.format(Locale.US, "%,.1f", amount * 20 / delay) + " DPS"); } } @@ -116,6 +121,8 @@ public class FT_Toxin extends FluidTrait { @Override public void poison(EntityLivingBase entity, double intensity) { + if(isProtected(entity)) return; + for(PotionEffect eff : effects) { entity.addPotionEffect(new PotionEffect(eff.getPotionID(), (int) (eff.getDuration() * intensity), eff.getAmplifier())); } @@ -130,4 +137,76 @@ public class FT_Toxin extends FluidTrait { } } } + + @Override public void serializeJSON(JsonWriter writer) throws IOException { + + writer.name("entries").beginArray(); + + for(ToxinEntry entry : entries) { + writer.beginObject(); + + if(entry instanceof ToxinDirectDamage) { + ToxinDirectDamage e = (ToxinDirectDamage) entry; + writer.name("type").value("directdamage"); + writer.name("amount").value(e.amount); + writer.name("source").value(e.damage.damageType); + writer.name("delay").value(e.delay); + writer.name("hazmat").value(e.fullBody); + writer.name("masktype").value(e.clazz.name()); + } + if(entry instanceof ToxinEffects) { + ToxinEffects e = (ToxinEffects) entry; + writer.name("type").value("effects"); + writer.name("effects").beginArray(); + writer.setIndent(""); + for(PotionEffect effect : e.effects) { + writer.beginArray(); + writer.value(effect.getPotionID()).value(effect.getDuration()).value(effect.getAmplifier()).value(effect.getIsAmbient()); + writer.endArray(); + } + writer.endArray(); + writer.setIndent(" "); + writer.name("hazmat").value(e.fullBody); + writer.name("masktype").value(e.clazz.name()); + } + + writer.endObject(); + } + + writer.endArray(); + } + + @Override public void deserializeJSON(JsonObject obj) { + JsonArray array = obj.get("entries").getAsJsonArray(); + + for(int i = 0; i < array.size(); i++) { + JsonObject entry = array.get(i).getAsJsonObject(); + String name = entry.get("type").getAsString(); + + if(name.equals("directdamage")) { + ToxinDirectDamage e = new ToxinDirectDamage( + new DamageSource(entry.get("source").getAsString()), + entry.get("amount").getAsFloat(), + entry.get("delay").getAsInt(), + HazardClass.valueOf(entry.get("masktype").getAsString()), + entry.get("hazmat").getAsBoolean() + ); + this.entries.add(e); + } + + if(name.equals("effects")) { + ToxinEffects e = new ToxinEffects( + HazardClass.valueOf(entry.get("masktype").getAsString()), + entry.get("hazmat").getAsBoolean() + ); + JsonArray effects = entry.get("effects").getAsJsonArray(); + for(int j = 0; j < effects.size(); j++) { + JsonArray effect = effects.get(j).getAsJsonArray(); + PotionEffect potion = new PotionEffect(effect.get(0).getAsInt(), effect.get(1).getAsInt(), effect.get(2).getAsInt(), effect.get(3).getAsBoolean()); + e.effects.add(potion); + } + this.entries.add(e); + } + } + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java index de8dd7764..516ef0e81 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java @@ -1,7 +1,10 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.List; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.fluid.tank.FluidTank; @@ -12,6 +15,8 @@ public class FT_VentRadiation extends FluidTrait { float radPerMB = 0; + public FT_VentRadiation() { } + public FT_VentRadiation(float rad) { this.radPerMB = rad; } @@ -29,4 +34,14 @@ public class FT_VentRadiation extends FluidTrait { public void addInfo(List info) { info.add(EnumChatFormatting.YELLOW + "[Radioactive]"); } + + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("radiation").value(radPerMB); + } + + @Override + public void deserializeJSON(JsonObject obj) { + this.radPerMB = obj.get("radiation").getAsFloat(); + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java index 128e945b0..ff2522d09 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java @@ -1,12 +1,43 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.List; +import com.google.common.collect.HashBiMap; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.*; import net.minecraft.world.World; public abstract class FluidTrait { + + public static HashBiMap> traitNameMap = HashBiMap.create(); + + static { + traitNameMap.put("combustible", FT_Combustible.class); // x + traitNameMap.put("coolable", FT_Coolable.class); // x + traitNameMap.put("corrosive", FT_Corrosive.class); // x + traitNameMap.put("flammable", FT_Flammable.class); // x + traitNameMap.put("heatable", FT_Heatable.class); // x + traitNameMap.put("poison", FT_Poison.class); // x + traitNameMap.put("toxin", FT_Toxin.class); // x + traitNameMap.put("ventradiation", FT_VentRadiation.class); // x + traitNameMap.put("pwrmoderator", FT_PWRModerator.class); // x + + traitNameMap.put("gaseous", FT_Gaseous.class); + traitNameMap.put("gaseous_art", FT_Gaseous_ART.class); + traitNameMap.put("liquid", FT_Liquid.class); + traitNameMap.put("viscous", FT_Viscous.class); + traitNameMap.put("plasma", FT_Plasma.class); + traitNameMap.put("amat", FT_Amat.class); + traitNameMap.put("leadcontainer", FT_LeadContainer.class); + traitNameMap.put("delicious", FT_Delicious.class); + traitNameMap.put("leaded", FT_Leaded.class); + traitNameMap.put("noid", FT_NoID.class); + traitNameMap.put("nocontainer", FT_NoContainer.class); + } /** Important information that should always be displayed */ public void addInfo(List info) { } @@ -14,4 +45,7 @@ public abstract class FluidTrait { public void addInfoHidden(List info) { } public void onFluidRelease(World world, int x, int y, int z, FluidTank tank, int overflowAmount) { } + + public void serializeJSON(JsonWriter writer) throws IOException { } + public void deserializeJSON(JsonObject obj) { } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java index 319a7e6d4..d282cea42 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java @@ -49,10 +49,18 @@ public class FluidTraitSimple { info.add(EnumChatFormatting.DARK_RED + "[Requires hazardous material tank to hold]"); } } + public static class FT_Delicious extends FluidTrait { @Override public void addInfoHidden(List info) { info.add(EnumChatFormatting.DARK_GREEN + "[Delicious]"); - }} + } + } + + public static class FT_Leaded extends FluidTrait { + @Override public void addInfoHidden(List info) { + info.add(EnumChatFormatting.BLUE + "[Leaded Fuel]"); + } + } public static class FT_NoID extends FluidTrait { } public static class FT_NoContainer extends FluidTrait { } diff --git a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java index b9f77897d..6f8ef4a10 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java +++ b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java @@ -2,6 +2,7 @@ package com.hbm.inventory.gui; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; @@ -85,7 +86,7 @@ public class GUIAnvil extends GuiContainer { private void search(String search) { - search = search.toLowerCase(); + search = search.toLowerCase(Locale.US); this.recipes.clear(); @@ -320,7 +321,7 @@ public class GUIAnvil extends GuiContainer { for(AStack stack : recipe.input) { if(stack instanceof ComparableStack) { ItemStack input = ((ComparableStack) stack).toStack(); - list.add(input.getDisplayName().toLowerCase()); + list.add(input.getDisplayName().toLowerCase(Locale.US)); } else if(stack instanceof OreDictStack) { OreDictStack input = (OreDictStack) stack; @@ -328,7 +329,7 @@ public class GUIAnvil extends GuiContainer { if(ores.size() > 0) { for(ItemStack ore : ores) { - list.add(ore.getDisplayName().toLowerCase()); + list.add(ore.getDisplayName().toLowerCase(Locale.US)); } } @@ -336,7 +337,7 @@ public class GUIAnvil extends GuiContainer { } for(AnvilOutput stack : recipe.output) { - list.add(stack.stack.getDisplayName().toLowerCase()); + list.add(stack.stack.getDisplayName().toLowerCase(Locale.US)); } return list; diff --git a/src/main/java/com/hbm/inventory/gui/GUIAshpit.java b/src/main/java/com/hbm/inventory/gui/GUIAshpit.java new file mode 100644 index 000000000..af5a768e1 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIAshpit.java @@ -0,0 +1,41 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerAshpit; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityAshpit; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIAshpit extends GuiInfoContainer { + + private TileEntityAshpit firebox; + private final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_ashpit.png"); + + public GUIAshpit(InventoryPlayer invPlayer, TileEntityAshpit tedf) { + super(new ContainerAshpit(invPlayer, tedf)); + firebox = tedf; + + this.xSize = 176; + this.ySize = 168; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.firebox.hasCustomInventoryName() ? this.firebox.getInventoryName() : I18n.format(this.firebox.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIBookLore.java b/src/main/java/com/hbm/inventory/gui/GUIBookLore.java index b8f203f23..dc628427a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIBookLore.java +++ b/src/main/java/com/hbm/inventory/gui/GUIBookLore.java @@ -5,134 +5,177 @@ import java.util.List; import org.lwjgl.opengl.GL11; -import com.hbm.items.special.ItemBookLore.*; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; + import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; -import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; -// and you may ask yourself: vaer, why do this? this is basically just a copy of GUIScreenGuide. -// and I would answer, shut the fuck up nerd, the guide book system is too involved for my small -// brain to use for god knows how many tidbits of lore. i'll settle for a text box and cool textures, thanks public class GUIBookLore extends GuiScreen { - protected int xSize; - protected int ySize; + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/book/book_lore.png"); + protected int guiLeft; protected int guiTop; + protected static int sizeX = 272; + protected static int sizeY = 182; - private NBTTagCompound tag; //Used for save-dependent information, like the MKU recipe - private BookLoreType type; + protected String key; + protected NBTTagCompound tag; - public int itemTexture; + //judgement + protected int color; - protected GUIPage mainPage; - protected GUIPage auxPage; - protected GUIPageButton button; - - int page = 0; - int maxPage; + protected int page; + protected int maxPage; public GUIBookLore(EntityPlayer player) { + ItemStack stack = player.getHeldItem(); + if(!stack.hasTagCompound()) return; + this.tag = stack.getTagCompound(); + this.key = tag.getString("k"); + if(key.isEmpty()) return; - type = BookLoreType.getTypeFromStack(player.getHeldItem()); - tag = player.getHeldItem().getTagCompound(); //compound is created or gotten in method above - GUIAppearance setup = type.appearance; - - mainPage = setup.mainPage; - auxPage = setup.auxPage; - button = setup.button; - itemTexture = setup.itemTexture; - - if(type.pages <= 1) { - xSize = auxPage.sizeX; - ySize = auxPage.sizeY; - } else { - xSize = mainPage.sizeX; - ySize = mainPage.sizeY; - } - - maxPage = mainPage.isTwoPages ? (int)Math.ceil(type.pages / 2D) - 1 : type.pages - 1; + this.color = tag.getInteger("cov_col"); + if(color <= 0) + color = 0x303030; + this.maxPage = (int)Math.ceil(tag.getInteger("p") / 2D) - 1; } @Override public void initGui() { - super.initGui(); - this.guiLeft = (this.width - this.xSize) / 2; - this.guiTop = (this.height - this.ySize) / 2; + if(key == null || key.isEmpty()) this.mc.thePlayer.closeScreen(); + this.guiLeft = (this.width - this.sizeX) / 2; + this.guiTop = (this.height - this.sizeY) / 2; } @Override - public void drawScreen(int mouseX, int mouseY, float f) { + public void drawScreen(int i, int j, float f) { this.drawDefaultBackground(); - this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + this.drawGuiContainerBackgroundLayer(f, i, j); GL11.glDisable(GL11.GL_LIGHTING); - this.drawGuiContainerForegroundLayer(mouseX, mouseY); + this.drawGuiContainerForegroundLayer(i, j); GL11.glEnable(GL11.GL_LIGHTING); } protected void drawGuiContainerBackgroundLayer(float f, int i, int j) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - if(page == maxPage && (page + 1) * 2 > type.pages) { //odd numbered pages - Minecraft.getMinecraft().getTextureManager().bindTexture(auxPage.texture); - func_146110_a(guiLeft, guiTop, auxPage.u, auxPage.v, auxPage.sizeX, auxPage.sizeY, 512, 512); - } else { - Minecraft.getMinecraft().getTextureManager().bindTexture(mainPage.texture); - func_146110_a(guiLeft, guiTop, mainPage.u, mainPage.v, mainPage.sizeX, mainPage.sizeY, 512, 512); + float r = (float)(color >> 16 & 255) / 255F; + float g = (float)(color >> 8 & 255) / 255F; + float b = (float)(color & 255) / 255F; + GL11.glColor4f(r, g, b, 1.0F); + func_146110_a(guiLeft, guiTop, 0, 0, sizeX, sizeY, 512, 512); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + func_146110_a(guiLeft + 7, guiTop + 7, 0, 182, 258, 165, 512, 512); + + final boolean overY = j >= guiTop + 155 && j < guiTop + 165; + if(page > 0) { + if(overY && i >= guiLeft + 24 && i <= guiLeft + 42) + func_146110_a(guiLeft + 24, guiTop + 155, 295, 13, 18, 10, 512, 512); + else + func_146110_a(guiLeft + 24, guiTop + 155, 272, 13, 18, 10, 512, 512); } - int width = page == maxPage && (page + 1) * 2 > type.pages ? auxPage.sizeX : mainPage.sizeX; - - if(page > 0) - button.renderButton(this, width, guiLeft, guiTop, false, i, j); - - if(page < maxPage) - button.renderButton(this, width, guiLeft, guiTop, true, i, j); + if(page < maxPage) { + if(overY && i >= guiLeft + 230 && i <= guiLeft + 248) + func_146110_a(guiLeft + 230, guiTop + 155, 295, 0, 18, 10, 512, 512); + else + func_146110_a(guiLeft + 230, guiTop + 155, 272, 0, 18, 10, 512, 512); + } } protected void drawGuiContainerForegroundLayer(int x, int y) { - String key = "book_lore." + type.keyI18n + ".page."; + String k = "book_lore." + key + ".page."; - if(mainPage.isTwoPages) { - int defacto = page * 2 + 1; - String text = type.resolveKey(key + defacto, tag); + for(int i = 0; i < 2; i++) { + int defacto = this.page * 2 + i; - if((page + 1) * 2 <= type.pages) { //Checks if text should be rendered as an aux or a main page - mainPage.renderText(text, fontRendererObj, guiLeft, guiTop, false); + if(defacto < tag.getInteger("p")) { + String text; + NBTTagCompound argTag = tag.getCompoundTag("p" + defacto); - text = type.resolveKey(key + (defacto + 1), tag); //kinda awkward, but no way around it - mainPage.renderText(text, fontRendererObj, guiLeft, guiTop, true); - } else - auxPage.renderText(text, fontRendererObj, guiLeft, guiTop, false); - - } else { - String text = type.resolveKey(key + (page + 1), tag); - - if(page < maxPage) - mainPage.renderText(text, fontRendererObj, guiLeft, guiTop, false); - else - auxPage.renderText(text, fontRendererObj, guiLeft, guiTop, false); + if(argTag.hasNoTags()) + text = I18nUtil.resolveKey(k + defacto); + else { + List args = new ArrayList(); + int index = 1; + String arg = argTag.getString("a1"); + + while(!arg.isEmpty()) { + args.add(arg); + index++; + arg = argTag.getString("a" + index); + } + + text = I18nUtil.resolveKey(k + defacto, args.toArray()); + } + + float scale = 1; + int width = 100; + int widthScaled = (int) (width * scale); + + List lines = new ArrayList(); + String[] words = text.split(" "); + + lines.add(words[0]); + int indent = this.fontRendererObj.getStringWidth(words[0]); + + for(int w = 1; w < words.length; w++) { + if(words[w].equals("$")) { + if(w + 1 < words.length && !words[w + 1].equals("$")) { + lines.add(words[++w]); + indent = this.fontRendererObj.getStringWidth(words[w]); + } else + lines.add(""); + + continue; + } + + indent += this.fontRendererObj.getStringWidth(" " + words[w]); + + if(indent <= widthScaled) { + String last = lines.get(lines.size() - 1); + lines.set(lines.size() - 1, last += (" " + words[w])); + } else { + lines.add(words[w]); + indent = this.fontRendererObj.getStringWidth(words[w]); + } + } + + GL11.glPushMatrix(); + GL11.glScalef(1F/scale, 1F/scale, 1F); + + for(int l = 0; l < lines.size(); l++) { + this.fontRendererObj.drawString(lines.get(l), + (int)((guiLeft + 20 + i * 130) * scale), + (int)((guiTop + 20) * scale + (9 * l)), + 0x0F0F0F); + } + + GL11.glPopMatrix(); + } } } @Override protected void mouseClicked(int i, int j, int k) { - int q = 0; //if both buttons are somehow simultaneously clicked then obviously something's wrong already + if(j < guiTop + 155 || j >= guiTop + 165) return; - if(page > 0) - q = button.handleInput(xSize, guiLeft, guiTop, false, i, j); - - if(page < maxPage && q == 0) - q = button.handleInput(xSize, guiLeft, guiTop, true, i, j); - - if(q != 0) { + if(page > 0 && i >= guiLeft + 24 && i <= guiLeft + 42) { + page--; + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + } + + if(page < maxPage && i >= guiLeft + 230 && i <= guiLeft + 248) { + page++; mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - this.page += q; } } @@ -142,208 +185,4 @@ public class GUIBookLore extends GuiScreen { this.mc.thePlayer.closeScreen(); } } - - // turn page buttons, one-page, both page textures, sizes, positions, etc. - public enum GUIAppearance { - GUIDEBOOK(new GUIPage(272, 182, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/book.png")).setScale(2F).setMargins(20, 20, 20), - new GUIPageButton(18, 10, 17, 148, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png")).setUV(263, 0, 512, 512), - 0), //Guide Book - LOOSEPAPER(new GUIPage(130, 165, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png"), false).setMargins(12, 10, 16).setUV(133, 0), - new GUIPageButton(18, 10, 17, 148, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png")).setUV(263, 0, 512, 512), - 1), //Singular loose page - LOOSEPAPERS(new GUIPage(133, 165, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png"), false).setMargins(12, 10, 16), - new GUIPageButton(18, 10, 17, 148, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png")).setUV(263, 0, 512, 512), - 2), //Collection of loose pages - NOTEBOOK(new GUIPage(133, 165, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png"), false).setMargins(10, 10, 16).setUV(0, 165), - new GUIPage(133, 165, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png"), false).setMargins(10, 10, 16).setUV(133, 165), - new GUIPageButton(18, 10, 17, 148, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png")).setUV(263, 0, 512, 512), - 3); - - public int itemTexture; - - protected GUIPage mainPage; //"Main" page, usually two pages. GUI accounts for one-paged main pages. - protected GUIPage auxPage; //"Aux" page, AKA the final page if the max pages is oddly numbered. - //If two-sided, text will be positioned on the left page. - protected GUIPageButton button; - - private GUIAppearance(GUIPage main, GUIPage aux, GUIPageButton button, int texture) { - this.mainPage = main; - this.auxPage = aux; - this.button = button; - this.itemTexture = texture; - } - - private GUIAppearance(GUIPage main, GUIPageButton button, int texture) { - this.mainPage = main; - this.auxPage = main; - this.button = button; - this.itemTexture = texture; - } - - } - - private static class GUIPage { - protected ResourceLocation texture; - - //UV positioning - protected int u = 0; //X/U pos in texture - protected int v = 0; //Y/V pos in texture - - protected int sizeX; //X size of the page - protected int sizeY; //Y size of the page - - //Text positioning - protected int marginInner = 10; //Margin from inner edge of page - protected int marginOuter = 10; //Margin from outer edge of page - protected int marginY = 20; //Margin from upper edge of page - protected boolean isTwoPages = true; //Has two pages to display text - protected float scale = 1.0F; //Scale of the text; larger values are smaller - protected int spacing = 9; //12 is a more comfortable spacing - - protected GUIPage(int x, int y, ResourceLocation texture, boolean twoPages) { - this.sizeX = x; - this.sizeY = y; - this.texture = texture; - this.isTwoPages = twoPages; - } - - protected GUIPage(int x, int y, ResourceLocation texture) { - this.sizeX = x; - this.sizeY = y; - this.texture = texture; - } - - protected GUIPage setUV(int u, int v) { - this.u = u; - this.v = v; - return this; - } - - protected GUIPage setScale(float scale) { - this.scale = scale; - return this; - } - - protected GUIPage setMargins(int inner, int outer, int upper) { - this.marginInner = inner; - this.marginOuter = outer; - this.marginY = upper; - return this; - } - - protected GUIPage setSpacing(int spacing) { - this.spacing = spacing; - return this; - } - - protected void renderText(String text, FontRenderer renderer, int left, int top, boolean secondPage) { - int width = (isTwoPages ? sizeX / 2 : sizeX) - marginInner - marginOuter; - int widthScaled = (int) (width * scale); - - List lines = new ArrayList(); - String[] words = text.split(" "); - - lines.add(words[0]); - int indent = renderer.getStringWidth(words[0]); - - for(int w = 1; w < words.length; w++) { - - if(words[w].equals("$")) { - if(w + 1 < words.length && !words[w + 1].equals("$")) { - lines.add(words[++w]); - indent = renderer.getStringWidth(words[w]); - } else - lines.add(""); - - continue; - } - - indent += renderer.getStringWidth(" " + words[w]); - - if(indent <= widthScaled) { - String last = lines.get(lines.size() - 1); - lines.set(lines.size() - 1, last += (" " + words[w])); - } else { - lines.add(words[w]); - indent = renderer.getStringWidth(words[w]); - } - } - - GL11.glPushMatrix(); - GL11.glScalef(1F/scale, 1F/scale, 1F); - - int sideOffset = secondPage ? sizeX / 2 + marginInner : marginOuter; - - for(int l = 0; l < lines.size(); l++) { - renderer.drawString(lines.get(l), (int)((left + sideOffset) * scale), (int)((top + marginY) * scale + (spacing * l)), 4210752); - } - - GL11.glPopMatrix(); - } - } - - private static class GUIPageButton { - protected ResourceLocation texture; - - protected int sizeX; //size of a single button; full texture is 2*sizeX : 2*sizeZ - protected int sizeY; - protected int x; //x position on page, relative to edge of the page it is on. - protected int y; //y position on page, relative to the top edge of the page. - - /* Left, Unsel | Right, Unsel - * Left, Sel | Right, Sel - */ - protected int u = 0; //upper lefthand corner where the button textures lie. - protected int v = 0; //assumes uniform size for each. - protected int sizeU = sizeX * 2; //Size of UV texture - protected int sizeV = sizeY * 2; - - protected GUIPageButton(int sizeX, int sizeY, int x, int y, ResourceLocation tex) { - this.sizeX = sizeX; - this.sizeY = sizeY; - this.x = x; - this.y = y; - this.texture = tex; - } - - protected GUIPageButton setUV(int u, int v, int sizeU, int sizeV) { - this.u = u; - this.v = v; - this.sizeU = sizeU; - this.sizeV = sizeV; - return this; - } - - protected void renderButton(GuiScreen screen, int width, int left, int top, boolean rightPage, int i, int j) { - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - boolean overY = j >= top + y && j < top + y + sizeY; - - if(!rightPage) { - if(i >= left + x && i < left + x + sizeX && overY) { - func_146110_a(left + x, top + y, u, v + sizeY, sizeX, sizeY, sizeU, sizeV); - } else { - func_146110_a(left + x, top + y, u, v, sizeX, sizeY, sizeU, sizeV); - } - } else { - if(i >= left + width - x - sizeX && i < left + width - x && overY) { - func_146110_a(left + width - x - sizeX, top + y, u + sizeX, v + sizeY, sizeX, sizeY, sizeU, sizeV); - } else { - func_146110_a(left + width - x - sizeX, top + y, u + sizeX, v, sizeX, sizeY, sizeU, sizeV); - } - } - } - - protected int handleInput(int width, int left, int top, boolean rightPage, int i, int j) { - boolean overY = j >= top + y && j < top + y + sizeY; - if(!rightPage) { - if(i >= left + x && i < left + x + sizeX && overY) - return -1; - } else { - if(i >= left + width - x - sizeX && i < left + width - x && overY) - return 1; - } - - return 0; - } - } } \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java b/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java index fe85c7fe6..dc8f89785 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java +++ b/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCombustionEngine; @@ -59,7 +61,7 @@ public class GUICombustionEngine extends GuiInfoContainer { power = setting * 0.2 * trait.getCombustionEnergy() / 1_000D * piston.eff[trait.getGrade().ordinal()]; } String c = EnumChatFormatting.YELLOW + ""; - drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 50, 35, 14, x, y, c + String.format("%,d", (int)(power)) + " HE/t", c + String.format("%,d", (int)(power * 20)) + " HE/s"); + drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 50, 35, 14, x, y, c + String.format(Locale.US, "%,d", (int)(power)) + " HE/t", c + String.format(Locale.US, "%,d", (int)(power * 20)) + " HE/s"); } drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 13, 35, 15, x, y, "Ignition"); diff --git a/src/main/java/com/hbm/inventory/gui/GUICompressor.java b/src/main/java/com/hbm/inventory/gui/GUICompressor.java new file mode 100644 index 000000000..66e72609b --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUICompressor.java @@ -0,0 +1,88 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerCompressor; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.TileEntityMachineCompressor; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; + +public class GUICompressor extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_compressor.png"); + private TileEntityMachineCompressor compressor; + + public GUICompressor(InventoryPlayer invPlayer, TileEntityMachineCompressor tedf) { + super(new ContainerCompressor(invPlayer, tedf)); + compressor = tedf; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + compressor.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 17, guiTop + 18, 16, 52); + compressor.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 107, guiTop + 18, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 52, compressor.power, compressor.maxPower); + + for(int j = 0; j < 5; j++) drawCustomInfoStat(mouseX, mouseY, guiLeft + 43 + j * 11, guiTop + 46, 8, 14, mouseX, mouseY, j + " PU -> " + (j + 1) + " PU"); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + for(int j = 0; j < 5; j++) { + + if(guiLeft + 43 + j * 11 <= x && guiLeft + 43 + 8 + j * 11 > x && guiTop + 46 < y && guiTop + 46 + 14 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("compression", j); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, compressor.xCoord, compressor.yCoord, compressor.zCoord)); + } + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + + String name = this.compressor.hasCustomInventoryName() ? this.compressor.getInventoryName() : I18n.format(this.compressor.getInventoryName()); + + this.fontRendererObj.drawString(name, 70 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xC7C1A3); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(compressor.power >= compressor.powerRequirement) { + drawTexturedModalRect(guiLeft + 156, guiTop + 4, 176, 52, 9, 12); + } + + drawTexturedModalRect(guiLeft + 43 + compressor.tanks[0].getPressure() * 11, guiTop + 46, 193, 18, 8, 124); + + int i = compressor.progress * 55 / compressor.processTime; + drawTexturedModalRect(guiLeft + 42, guiTop + 26, 192, 0, i, 17); + + int j = (int) (compressor.power * 52 / compressor.maxPower); + drawTexturedModalRect(guiLeft + 152, guiTop + 70 - j, 176, 52 - j, 16, j); + + compressor.tanks[0].renderTank(guiLeft + 17, guiTop + 70, this.zLevel, 16, 52); + compressor.tanks[1].renderTank(guiLeft + 107, guiTop + 70, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java b/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java new file mode 100644 index 000000000..b4c4dd7b2 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java @@ -0,0 +1,151 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; + +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerCounterTorch; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.network.TileEntityRadioTorchCounter; +import com.hbm.util.I18nUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUICounterTorch extends GuiInfoContainer { + + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_rtty_counter.png"); + + protected TileEntityRadioTorchCounter counter; + protected GuiTextField[] frequency; + + public GUICounterTorch(InventoryPlayer invPlayer, TileEntityRadioTorchCounter counter) { + super(new ContainerCounterTorch(invPlayer, counter)); + this.counter = counter; + + this.xSize = 218; + this.ySize = 238; + } + + @Override + public void initGui() { + super.initGui(); + + Keyboard.enableRepeatEvents(true); + + this.frequency = new GuiTextField[3]; + + for(int i = 0; i < 3; i++) { + + this.frequency[i] = new GuiTextField(this.fontRendererObj, guiLeft + 29, guiTop + 21 + 44 * i, 86, 14); + this.frequency[i].setTextColor(0x00ff00); + this.frequency[i].setDisabledTextColour(0x00ff00); + this.frequency[i].setEnableBackgroundDrawing(false); + this.frequency[i].setMaxStringLength(10); + this.frequency[i].setText(counter.channel[i] == null ? "" : counter.channel[i]); + } + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + if(guiLeft + 193 <= x && guiLeft + 193 + 18 > x && guiTop + 8 < y && guiTop + 8 + 18 >= y) { + func_146283_a(Arrays.asList(new String[] { counter.polling ? "Polling" : "State Change" }), x, y); + } + if(guiLeft + 193 <= x && guiLeft + 193 + 18 > x && guiTop + 30 < y && guiTop + 30 + 18 >= y) { + func_146283_a(Arrays.asList(new String[] { "Save Settings" }), x, y); + } + + if(this.mc.thePlayer.inventory.getItemStack() == null) { + for(int i = 0; i < 3; ++i) { + Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); + + if(this.isMouseOverSlot(slot, x, y) && counter.matcher.modes[i] != null) { + + String label = EnumChatFormatting.YELLOW + ""; + + switch(counter.matcher.modes[i]) { + case "exact": label += "Item and meta match"; break; + case "wildcard": label += "Item matches"; break; + default: label += "Ore dict key matches: " + counter.matcher.modes[i]; break; + } + + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + } + } + } + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + for(int j = 0; j < 3; j++) this.frequency[j].mouseClicked(x, y, i); + + if(guiLeft + 193 <= x && guiLeft + 193 + 18 > x && guiTop + 8 < y && guiTop + 8 + 18 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("polling", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, counter.xCoord, counter.yCoord, counter.zCoord)); + } + + if(guiLeft + 193 <= x && guiLeft + 193 + 18 > x && guiTop + 30 < y && guiTop + 30 + 18 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + + for(int j = 0; j < 3; j++) data.setString("c" + j, this.frequency[j].getText()); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, counter.xCoord, counter.yCoord, counter.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int x, int y) { + String name = I18nUtil.resolveKey(this.counter.getInventoryName()); + this.fontRendererObj.drawString(name, 184 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 16, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(counter.polling) { + drawTexturedModalRect(guiLeft + 193, guiTop + 8, 218, 0, 18, 18); + } + + for(int i = 0; i < 3; i++) this.frequency[i].drawTextBox(); + } + + @Override + protected void keyTyped(char c, int i) { + + for(int j = 0; j < 3; j++) if(this.frequency[j].textboxKeyTyped(c, i)) return; + + super.keyTyped(c, i); + } + + @Override + public void onGuiClosed() { + super.onGuiClosed(); + Keyboard.enableRepeatEvents(false); + } + + @Override + public boolean doesGuiPauseGame() { + return false; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUICrateTemplate.java b/src/main/java/com/hbm/inventory/gui/GUICrateTemplate.java new file mode 100644 index 000000000..9968d461c --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUICrateTemplate.java @@ -0,0 +1,42 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerCrateTemplate; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.storage.TileEntityCrateTemplate; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUICrateTemplate extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_crate_template.png"); + private TileEntityCrateTemplate diFurnace; + + public GUICrateTemplate(InventoryPlayer invPlayer, TileEntityCrateTemplate tedf) { + super(new ContainerCrateTemplate(invPlayer, tedf)); + diFurnace = tedf; + + this.xSize = 176; + this.ySize = 168; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/gui/GUICrucible.java b/src/main/java/com/hbm/inventory/gui/GUICrucible.java index f235275b5..a41ef4288 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICrucible.java +++ b/src/main/java/com/hbm/inventory/gui/GUICrucible.java @@ -3,6 +3,7 @@ package com.hbm.inventory.gui; import java.awt.Color; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; @@ -42,8 +43,8 @@ public class GUICrucible extends GuiInfoContainer { drawStackInfo(crucible.wasteStack, x, y, 16, 17); drawStackInfo(crucible.recipeStack, x, y, 61, 17); - this.drawCustomInfoStat(x, y, guiLeft + 125, guiTop + 81, 34, 7, x, y, new String[] { String.format("%,d", crucible.progress) + " / " + String.format("%,d", crucible.processTime) + "TU" }); - this.drawCustomInfoStat(x, y, guiLeft + 125, guiTop + 90, 34, 7, x, y, new String[] { String.format("%,d", crucible.heat) + " / " + String.format("%,d", crucible.maxHeat) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 125, guiTop + 81, 34, 7, x, y, new String[] { String.format(Locale.US, "%,d", crucible.progress) + " / " + String.format(Locale.US, "%,d", crucible.processTime) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 125, guiTop + 90, 34, 7, x, y, new String[] { String.format(Locale.US, "%,d", crucible.heat) + " / " + String.format(Locale.US, "%,d", crucible.maxHeat) + "TU" }); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java b/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java new file mode 100644 index 000000000..cd99405b4 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java @@ -0,0 +1,75 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerDroneCrate; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.network.TileEntityDroneCrate; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; + +public class GUIDroneCrate extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_crate_drone.png"); + private TileEntityDroneCrate crate; + + public GUIDroneCrate(InventoryPlayer invPlayer, TileEntityDroneCrate crate) { + super(new ContainerDroneCrate(invPlayer, crate)); + this.crate = crate; + + this.xSize = 176; + this.ySize = 185; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + crate.tank.renderTankInfo(this, x, y, guiLeft + 125, guiTop + 17, 16, 34); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + String op = null; + + // Toggle type + if(guiLeft + 151 <= x && guiLeft + 151 + 18 > x && guiTop + 16 < y && guiTop + 16 + 18 >= y) op = "type"; + // Toggle mode + if(guiLeft + 151 <= x && guiLeft + 151 + 18 > x && guiTop + 52 < y && guiTop + 52 + 18 >= y) op = "mode"; + + if(op != null) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean(op, true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, crate.xCoord, crate.yCoord, crate.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.crate.hasCustomInventoryName() ? this.crate.getInventoryName() : I18n.format(this.crate.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + drawTexturedModalRect(guiLeft + 151, guiTop + 16, 194, crate.itemType ? 0 : 18, 18, 18); + drawTexturedModalRect(guiLeft + 151, guiTop + 52, 176, crate.sendingMode ? 18 : 0, 18, 18); + + crate.tank.renderTank(guiLeft + 125, guiTop + 51, this.zLevel, 16, 34); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIDroneDock.java b/src/main/java/com/hbm/inventory/gui/GUIDroneDock.java new file mode 100644 index 000000000..006b8a092 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIDroneDock.java @@ -0,0 +1,39 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerDroneDock; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityDroneDock; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIDroneDock extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_drone_dock.png"); + private TileEntityDroneDock diFurnace; + + public GUIDroneDock(InventoryPlayer invPlayer, TileEntityDroneDock tedf) { + super(new ContainerDroneDock(invPlayer, tedf)); + diFurnace = tedf; + this.xSize = 176; + this.ySize = 185; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIDroneProvider.java b/src/main/java/com/hbm/inventory/gui/GUIDroneProvider.java new file mode 100644 index 000000000..0547e969d --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIDroneProvider.java @@ -0,0 +1,42 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerDroneProvider; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityDroneProvider; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIDroneProvider extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_drone_provider.png"); + private TileEntityDroneProvider diFurnace; + + public GUIDroneProvider(InventoryPlayer invPlayer, TileEntityDroneProvider tedf) { + super(new ContainerDroneProvider(invPlayer, tedf)); + diFurnace = tedf; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java b/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java new file mode 100644 index 000000000..4fec012e5 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java @@ -0,0 +1,69 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerDroneRequester; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityDroneRequester; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIDroneRequester extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_drone_requester.png"); + private TileEntityDroneRequester diFurnace; + + public GUIDroneRequester(InventoryPlayer invPlayer, TileEntityDroneRequester tedf) { + super(new ContainerDroneRequester(invPlayer, tedf)); + diFurnace = tedf; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + if(this.mc.thePlayer.inventory.getItemStack() == null) { + for(int i = 0; i < 9; ++i) { + Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); + + if(this.isMouseOverSlot(slot, x, y) && diFurnace.matcher.modes[i] != null) { + + String label = EnumChatFormatting.YELLOW + ""; + + switch(diFurnace.matcher.modes[i]) { + case "exact": label += "Item and meta match"; break; + case "wildcard": label += "Item matches"; break; + default: label += "Ore dict key matches: " + diFurnace.matcher.modes[i]; break; + } + + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + } + } + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java new file mode 100644 index 000000000..fa4964eed --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java @@ -0,0 +1,80 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerElectrolyserFluid; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.TileEntityElectrolyser; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; + +public class GUIElectrolyserFluid extends GuiInfoContainer { + + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_electrolyser_fluid.png"); + private TileEntityElectrolyser electrolyser; + + public GUIElectrolyserFluid(InventoryPlayer invPlayer, TileEntityElectrolyser electrolyser) { + super(new ContainerElectrolyserFluid(invPlayer, electrolyser)); + this.electrolyser = electrolyser; + + this.xSize = 210; + this.ySize = 204; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + electrolyser.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 42, guiTop + 18, 16, 52); + electrolyser.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 96, guiTop + 18, 16, 52); + electrolyser.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 18, 16, 52); + + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 186, guiTop + 18, 16, 89, electrolyser.power, electrolyser.maxPower); + } + + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 8 <= x && guiLeft + 8 + 54 > x && guiTop + 82 < y && guiTop + 82 + 12 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("sgm", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, electrolyser.xCoord, electrolyser.yCoord, electrolyser.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.electrolyser.hasCustomInventoryName() ? this.electrolyser.getInventoryName() : I18n.format(this.electrolyser.getInventoryName()); + + this.fontRendererObj.drawString(name, (this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2) - 16, 7, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 94, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int p = (int) (electrolyser.power * 89 / electrolyser.maxPower); + drawTexturedModalRect(guiLeft + 186, guiTop + 107 - p, 210, 89 - p, 16, p); + + if(electrolyser.power >= electrolyser.usage) + drawTexturedModalRect(guiLeft + 190, guiTop + 4, 226, 40, 9, 12); + + int e = electrolyser.progressFluid * 41 / electrolyser.processFluidTime; + drawTexturedModalRect(guiLeft + 62, guiTop + 26, 226, 0, 12, e); + + electrolyser.tanks[0].renderTank(guiLeft + 42, guiTop + 70, this.zLevel, 16, 52); + electrolyser.tanks[1].renderTank(guiLeft + 96, guiTop + 70, this.zLevel, 16, 52); + electrolyser.tanks[2].renderTank(guiLeft + 116, guiTop + 70, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java new file mode 100644 index 000000000..b132811e1 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java @@ -0,0 +1,110 @@ +package com.hbm.inventory.gui; + +import java.awt.Color; + +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerElectrolyserMetal; +import com.hbm.inventory.material.Mats; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.TileEntityElectrolyser; +import com.hbm.util.I18nUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIElectrolyserMetal extends GuiInfoContainer { + + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_electrolyser_metal.png"); + private TileEntityElectrolyser electrolyser; + + public GUIElectrolyserMetal(InventoryPlayer invPlayer, TileEntityElectrolyser electrolyser) { + super(new ContainerElectrolyserMetal(invPlayer, electrolyser)); + this.electrolyser = electrolyser; + + this.xSize = 210; + this.ySize = 204; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + electrolyser.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 36, guiTop + 18, 16, 52); + + if(electrolyser.leftStack != null) { + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 58, guiTop + 18, 34, 42, mouseX, mouseY, EnumChatFormatting.YELLOW + I18nUtil.resolveKey(electrolyser.leftStack.material.getUnlocalizedName()) + ": " + Mats.formatAmount(electrolyser.leftStack.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + } else { + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 58, guiTop + 18, 34, 42, mouseX, mouseY, EnumChatFormatting.RED + "Empty"); + } + + if(electrolyser.rightStack != null) { + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 96, guiTop + 18, 34, 42, mouseX, mouseY, EnumChatFormatting.YELLOW + I18nUtil.resolveKey(electrolyser.rightStack.material.getUnlocalizedName()) + ": " + Mats.formatAmount(electrolyser.rightStack.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + } else { + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 96, guiTop + 18, 34, 42, mouseX, mouseY, EnumChatFormatting.RED + "Empty"); + } + + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 186, guiTop + 18, 16, 89, electrolyser.power, electrolyser.maxPower); + } + + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 8 <= x && guiLeft + 8 + 54 > x && guiTop + 82 < y && guiTop + 82 + 12 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("sgf", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, electrolyser.xCoord, electrolyser.yCoord, electrolyser.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.electrolyser.hasCustomInventoryName() ? this.electrolyser.getInventoryName() : I18n.format(this.electrolyser.getInventoryName()); + + this.fontRendererObj.drawString(name, (this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2) - 16, 7, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 94, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(electrolyser.leftStack != null) { + int p = electrolyser.leftStack.amount * 42 / electrolyser.maxMaterial; + Color color = new Color(electrolyser.leftStack.material.moltenColor); + GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + drawTexturedModalRect(guiLeft + 58, guiTop + 60 - p, 210, 131 - p, 34, p); + } + + if(electrolyser.rightStack != null) { + int p = electrolyser.rightStack.amount * 42 / electrolyser.maxMaterial; + Color color = new Color(electrolyser.rightStack.material.moltenColor); + GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + drawTexturedModalRect(guiLeft + 96, guiTop + 60 - p, 210, 131 - p, 34, p); + } + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + int p = (int) (electrolyser.power * 89 / electrolyser.maxPower); + drawTexturedModalRect(guiLeft + 186, guiTop + 107 - p, 210, 89 - p, 16, p); + + if(electrolyser.power >= electrolyser.usage) + drawTexturedModalRect(guiLeft + 190, guiTop + 4, 226, 25, 9, 12); + + int o = electrolyser.progressOre * 26 / electrolyser.processOreTime; + drawTexturedModalRect(guiLeft + 7, guiTop + 71 - o, 226, 25 - o, 22, o); + + electrolyser.tanks[3].renderTank(guiLeft + 36, guiTop + 70, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIFirebox.java b/src/main/java/com/hbm/inventory/gui/GUIFirebox.java index 6091d74d2..35fe1207e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIFirebox.java +++ b/src/main/java/com/hbm/inventory/gui/GUIFirebox.java @@ -1,6 +1,7 @@ package com.hbm.inventory.gui; import java.util.List; +import java.util.Locale; import org.lwjgl.opengl.GL11; @@ -48,7 +49,7 @@ public class GUIFirebox extends GuiInfoContainer { } } - this.drawCustomInfoStat(x, y, guiLeft + 80, guiTop + 27, 71, 7, x, y, new String[] { String.format("%,d", firebox.heatEnergy) + " / " + String.format("%,d", firebox.getMaxHeat()) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 80, guiTop + 27, 71, 7, x, y, new String[] { String.format(Locale.US, "%,d", firebox.heatEnergy) + " / " + String.format(Locale.US, "%,d", firebox.getMaxHeat()) + "TU" }); this.drawCustomInfoStat(x, y, guiLeft + 80, guiTop + 36, 71, 7, x, y, new String[] { firebox.burnHeat + "TU/t", (firebox.burnTime / 20) + "s" }); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIFurnaceCombo.java b/src/main/java/com/hbm/inventory/gui/GUIFurnaceCombo.java index 118c83f60..6fa6362ea 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIFurnaceCombo.java +++ b/src/main/java/com/hbm/inventory/gui/GUIFurnaceCombo.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerFurnaceCombo; @@ -30,8 +32,8 @@ public class GUIFurnaceCombo extends GuiInfoContainer { furnace.tank.renderTankInfo(this, x, y, guiLeft + 118, guiTop + 18, 16, 52); - this.drawCustomInfoStat(x, y, guiLeft + 44, guiTop + 36, 39, 7, x, y, new String[] { String.format("%,d", furnace.progress) + " / " + String.format("%,d", furnace.processTime) + "TU" }); - this.drawCustomInfoStat(x, y, guiLeft + 44, guiTop + 45, 39, 7, x, y, new String[] { String.format("%,d", furnace.heat) + " / " + String.format("%,d", furnace.maxHeat) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 44, guiTop + 36, 39, 7, x, y, new String[] { String.format(Locale.US, "%,d", furnace.progress) + " / " + String.format(Locale.US, "%,d", furnace.processTime) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 44, guiTop + 45, 39, 7, x, y, new String[] { String.format(Locale.US, "%,d", furnace.heat) + " / " + String.format(Locale.US, "%,d", furnace.maxHeat) + "TU" }); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIFurnaceSteel.java b/src/main/java/com/hbm/inventory/gui/GUIFurnaceSteel.java index a7dcb6eb8..dfdddf87e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIFurnaceSteel.java +++ b/src/main/java/com/hbm/inventory/gui/GUIFurnaceSteel.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerFurnaceSteel; @@ -29,11 +31,11 @@ public class GUIFurnaceSteel extends GuiInfoContainer { super.drawScreen(x, y, interp); for(int i = 0; i < 3; i++) { - this.drawCustomInfoStat(x, y, guiLeft + 53, guiTop + 17 + 18 * i, 70, 7, x, y, new String[] { String.format("%,d", furnace.progress[i]) + " / " + String.format("%,d", furnace.processTime) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 53, guiTop + 17 + 18 * i, 70, 7, x, y, new String[] { String.format(Locale.US, "%,d", furnace.progress[i]) + " / " + String.format(Locale.US, "%,d", furnace.processTime) + "TU" }); this.drawCustomInfoStat(x, y, guiLeft + 53, guiTop + 26 + 18 * i, 70, 7, x, y, new String[] { "Bonus: " + furnace.bonus[i] + "%" }); } - this.drawCustomInfoStat(x, y, guiLeft + 151, guiTop + 18, 9, 50, x, y, new String[] { String.format("%,d", furnace.heat) + " / " + String.format("%,d", furnace.maxHeat) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 151, guiTop + 18, 9, 50, x, y, new String[] { String.format(Locale.US, "%,d", furnace.heat) + " / " + String.format(Locale.US, "%,d", furnace.maxHeat) + "TU" }); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIHadron.java b/src/main/java/com/hbm/inventory/gui/GUIHadron.java index d77a5bb3f..b39db1804 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIHadron.java +++ b/src/main/java/com/hbm/inventory/gui/GUIHadron.java @@ -2,6 +2,7 @@ package com.hbm.inventory.gui; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import org.lwjgl.opengl.GL11; @@ -39,8 +40,10 @@ public class GUIHadron extends GuiInfoContainer { this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 62, guiTop + 108, 70, 16, hadron.power, hadron.maxPower); - if(hadron.hopperMode) + if(hadron.ioMode == 1) this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 142, guiTop + 89, 18, 18, mouseX, mouseY, I18nUtil.resolveKeyArray("hadron.hopper1")); + else if(hadron.ioMode == 2) + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 142, guiTop + 89, 18, 18, mouseX, mouseY, I18nUtil.resolveKeyArray("hadron.hopper2")); else this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 142, guiTop + 89, 18, 18, mouseX, mouseY, I18nUtil.resolveKeyArray("hadron.hopper0")); @@ -51,9 +54,9 @@ public class GUIHadron extends GuiInfoContainer { List stats = new ArrayList(); stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("hadron.stats")); - stats.add((hadron.stat_success ? EnumChatFormatting.GREEN : EnumChatFormatting.RED) + I18n.format("hadron." + this.hadron.stat_state.name().toLowerCase())); + stats.add((hadron.stat_success ? EnumChatFormatting.GREEN : EnumChatFormatting.RED) + I18n.format("hadron." + this.hadron.stat_state.name().toLowerCase(Locale.US))); if(this.hadron.state.showCoord) stats.add(EnumChatFormatting.RED + I18nUtil.resolveKey("hadron.stats_coord", hadron.stat_x, hadron.stat_y, hadron.stat_z)); - stats.add(EnumChatFormatting.GRAY + I18nUtil.resolveKey("hadron.stats_momentum", String.format("%,d", hadron.stat_charge))); + stats.add(EnumChatFormatting.GRAY + I18nUtil.resolveKey("hadron.stats_momentum", String.format(Locale.US, "%,d", hadron.stat_charge))); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 41, guiTop + 92, 25, 11, mouseX, mouseY, stats.toArray(new String[0])); this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 4, guiTop + 36, 16, 16, guiLeft + 4, guiTop + 36 + 16, new String[] {"Initial particle momentum: 750"}); @@ -89,7 +92,7 @@ public class GUIHadron extends GuiInfoContainer { this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - String state = I18n.format("hadron." + this.hadron.state.name().toLowerCase()); + String state = I18n.format("hadron." + this.hadron.state.name().toLowerCase(Locale.US)); this.fontRendererObj.drawString(state, this.xSize / 2 - this.fontRendererObj.getStringWidth(state) / 2, 76, this.hadron.state.color); } @@ -104,9 +107,9 @@ public class GUIHadron extends GuiInfoContainer { if(hadron.analysisOnly) drawTexturedModalRect(guiLeft + 142, guiTop + 107, 206, 18, 18, 18); - - if(hadron.hopperMode) - drawTexturedModalRect(guiLeft + 142, guiTop + 89, 206, 36, 18, 18); + + if(hadron.ioMode == hadron.MODE_HOPPER) drawTexturedModalRect(guiLeft + 142, guiTop + 89, 206, 36, 18, 18); + if(hadron.ioMode == hadron.MODE_SINGLE) drawTexturedModalRect(guiLeft + 142, guiTop + 89, 224, 36, 18, 18); if(hadron.state == EnumHadronState.SUCCESS) { drawTexturedModalRect(guiLeft + 73, guiTop + 29, 176, 0, 30, 30); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java b/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java new file mode 100644 index 000000000..ae993fb9a --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java @@ -0,0 +1,63 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineArcWelder; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineArcWelder; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineArcWelder extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_arc_welder.png"); + private TileEntityMachineArcWelder welder; + + public GUIMachineArcWelder(InventoryPlayer playerInv, TileEntityMachineArcWelder tile) { + super(new ContainerMachineArcWelder(playerInv, tile)); + + this.welder = tile; + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + welder.tank.renderTankInfo(this, x, y, guiLeft + 35, guiTop + 63, 34, 16); + this.drawElectricityInfo(this, x, y, guiLeft + 152, guiTop + 18, 16, 52, welder.getPower(), welder.getMaxPower()); + + this.drawCustomInfoStat(x, y, guiLeft + 78, guiTop + 67, 8, 8, guiLeft + 78, guiTop + 67, this.getUpgradeInfo(welder)); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.welder.hasCustomInventoryName() ? this.welder.getInventoryName() : I18n.format(this.welder.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 18, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int p = (int) (welder.power * 52 / welder.maxPower); + drawTexturedModalRect(guiLeft + 152, guiTop + 70 - p, 176, 52 - p, 16, p); + + int i = welder.progress * 33 / welder.processTime; + drawTexturedModalRect(guiLeft + 72, guiTop + 37, 192, 0, i, 14); + + if(welder.power >= welder.consumption) { + drawTexturedModalRect(guiLeft + 156, guiTop + 4, 176, 52, 9, 12); + } + + this.drawInfoPanel(guiLeft + 78, guiTop + 67, 8, 8, 8); + welder.tank.renderTank(guiLeft + 35, guiTop + 79, this.zLevel, 34, 16, 1); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineAssembler.java b/src/main/java/com/hbm/inventory/gui/GUIMachineAssembler.java index 145174fad..795d8882b 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineAssembler.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineAssembler.java @@ -30,7 +30,7 @@ public class GUIMachineAssembler extends GuiInfoContainer { public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 70 - 52, 16, 52, assembler.power, assembler.maxPower); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 70 - 52, 16, 52, assembler.power, assembler.getMaxPower()); if(assembler.getStackInSlot(4) == null || assembler.getStackInSlot(4).getItem()!= ModItems.assembly_template) { @@ -41,12 +41,7 @@ public class GUIMachineAssembler extends GuiInfoContainer { String[] templateText = I18nUtil.resolveKeyArray("desc.gui.template"); this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 16, 16, 16, guiLeft - 8, guiTop + 16 + 16, templateText); - String[] upgradeText = new String[3]; - upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade"); - upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed"); - upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.power"); - - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 141, guiTop + 40, 8, 8, guiLeft + 225, guiTop + 40 + 16 + 8, upgradeText); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 141, guiTop + 40, 8, 8, guiLeft + 225, guiTop + 40 + 16 + 8, this.getUpgradeInfo(assembler)); } @Override @@ -63,14 +58,15 @@ public class GUIMachineAssembler extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int i = (int)assembler.getPowerScaled(52); + int i = (int) (assembler.power * 52 / assembler.getMaxPower()); drawTexturedModalRect(guiLeft + 116, guiTop + 70 - i, 176, 52 - i, 16, i); - int j = assembler.getProgressScaled(83); - drawTexturedModalRect(guiLeft + 45, guiTop + 82, 2, 222, j, 32); + if(assembler.isProgressing) { + int j = assembler.progress[0] * 83 / assembler.maxProgress[0]; + drawTexturedModalRect(guiLeft + 45, guiTop + 82, 2, 222, j, 32); + } if(assembler.getStackInSlot(4) == null || assembler.getStackInSlot(4).getItem()!= ModItems.assembly_template) { - this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 6); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCoal.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCoal.java deleted file mode 100644 index 24b1cf2ae..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCoal.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.hbm.inventory.gui; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerMachineCoal; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityMachineCoal; - -public class GUIMachineCoal extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/GUICoal.png"); - private TileEntityMachineCoal diFurnace; - - public GUIMachineCoal(InventoryPlayer invPlayer, TileEntityMachineCoal tedf) { - super(new ContainerMachineCoal(invPlayer, tedf)); - diFurnace = tedf; - - this.xSize = 176; - this.ySize = 166; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - diFurnace.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 69 - 52, 16, 52); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 69 - 52, 16, 52, diFurnace.power, diFurnace.maxPower); - - String[] text = new String[] { "Power generation rate:", - " 25 HE/t", - " 500 HE/s", - "Accepts all furnace fuels.", - "(All fuels burn half as long in this generator", - "as in a regular furnace)" }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text); - - String[] text1 = new String[] { "Water consumption rate:", - " 1 mB/t", - " 20 mB/s", - "(Consumption rate is constant)" }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, text1); - - if(diFurnace.tank.getFill() <= 0) { - - String[] text2 = new String[] { "Error: Water is required for", - "the generator to function properly!" }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 32, 16, 16, guiLeft - 8, guiTop + 36 + 16 + 32, text2); - } - - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 79, guiTop + 34, 18, 18, mouseX, mouseY, new String[] { String.valueOf((int)(Math.ceil((double)diFurnace.burnTime / 20D))) + "s"}); - } - - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); - - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - //It's as horrifying as it is functional. - if(diFurnace.isInvalid() && diFurnace.getWorldObj().getTileEntity(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord) instanceof TileEntityMachineCoal) - diFurnace = (TileEntityMachineCoal) diFurnace.getWorldObj().getTileEntity(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord); - - if(diFurnace.power > 0) { - int i = (int)diFurnace.getPowerScaled(52); - drawTexturedModalRect(guiLeft + 152, guiTop + 69 - i, 176, 52 - i, 16, i); - } - - if(diFurnace.burnTime > 0) - { - drawTexturedModalRect(guiLeft + 79, guiTop + 34, 208, 0, 18, 18); - } - - if(diFurnace.tank.getFill() <= 0) - this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 32, 16, 16, 6); - - this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); - this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 16, 16, 16, 3); - - diFurnace.tank.renderTank(guiLeft + 8, guiTop + 69, this.zLevel, 16, 52); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java index b9b2d5d1f..e21a06d8b 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineCoker; @@ -31,8 +33,8 @@ public class GUIMachineCoker extends GuiInfoContainer { refinery.tanks[0].renderTankInfo(this, x, y, guiLeft + 35, guiTop + 18, 16, 52); refinery.tanks[1].renderTankInfo(this, x, y, guiLeft + 125, guiTop + 18, 16, 52); - this.drawCustomInfoStat(x, y, guiLeft + 60, guiTop + 45, 54, 7, x, y, new String[] { String.format("%,d", refinery.progress) + " / " + String.format("%,d", refinery.processTime) + "TU" }); - this.drawCustomInfoStat(x, y, guiLeft + 60, guiTop + 54, 54, 7, x, y, new String[] { String.format("%,d", refinery.heat) + " / " + String.format("%,d", refinery.maxHeat) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 60, guiTop + 45, 54, 7, x, y, new String[] { String.format(Locale.US, "%,d", refinery.progress) + " / " + String.format(Locale.US, "%,d", refinery.processTime) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 60, guiTop + 54, 54, 7, x, y, new String[] { String.format(Locale.US, "%,d", refinery.heat) + " / " + String.format(Locale.US, "%,d", refinery.maxHeat) + "TU" }); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java new file mode 100644 index 000000000..7b658c150 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java @@ -0,0 +1,121 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.SlotPattern; +import com.hbm.inventory.container.ContainerMachineCustom; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityCustomMachine; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineCustom extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_custom.png"); + private TileEntityCustomMachine custom; + + public GUIMachineCustom(InventoryPlayer invPlayer, TileEntityCustomMachine tedf) { + super(new ContainerMachineCustom(invPlayer, tedf)); + custom = tedf; + + this.xSize = 176; + this.ySize = 256; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + this.drawElectricityInfo(this, x, y, guiLeft + 150, guiTop + 18, 16, 52, custom.power, custom.config.maxPower); + + if(this.mc.thePlayer.inventory.getItemStack() == null) { + for(int i = 0; i < this.inventorySlots.inventorySlots.size(); ++i) { + Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); + int tileIndex = slot.getSlotIndex(); + + if(this.isMouseOverSlot(slot, x, y) && slot instanceof SlotPattern && custom.matcher.modes[tileIndex - 10] != null) { + + String label = EnumChatFormatting.YELLOW + ""; + + switch(custom.matcher.modes[tileIndex - 10]) { + case "exact": label += "Item and meta match"; break; + case "wildcard": label += "Item matches"; break; + default: label += "Ore dict key matches: " + custom.matcher.modes[tileIndex - 10]; break; + } + + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + } + } + } + + for(int i = 0; i < custom.inputTanks.length; i++) { + custom.inputTanks[i].renderTankInfo(this, x, y, guiLeft + 8 + 18 * i, guiTop + 18, 16, 34); + } + + for(int i = 0; i < custom.outputTanks.length; i++) { + custom.outputTanks[i].renderTankInfo(this, x, y, guiLeft + 78 + 18 * i, guiTop + 18, 16, 34); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.custom.getInventoryName(); + this.fontRendererObj.drawString(name, 68 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int p = custom.progress * 90 / custom.maxProgress; + drawTexturedModalRect(guiLeft + 78, guiTop + 119, 192, 0, Math.min(p, 44), 16); + if(p > 44) { + p-= 44; + drawTexturedModalRect(guiLeft + 78 + 44, guiTop + 119, 192, 16, p, 16); + } + + int e = (int) (custom.power * 52 / custom.config.maxPower); + drawTexturedModalRect(guiLeft + 150, guiTop + 70 - e, 176, 52 - e, 16, e); + + for(int i = 0; i < 2; i++) { + for(int j = 0; j < 3; j++) { + int index = i * 3 + j; + if(custom.config.itemInCount <= index) { + drawTexturedModalRect(guiLeft + 7 + j * 18, guiTop + 71 + i * 18, 192 + j * 18, 86 + i * 18, 18, 18); + drawTexturedModalRect(guiLeft + 7 + j * 18, guiTop + 107 + i * 18, 192 + j * 18, 86 + i * 18, 18, 18); + } + if(custom.config.itemOutCount <= index) { + drawTexturedModalRect(guiLeft + 77 + j * 18, guiTop + 71 + i * 18, 192 + j * 18, 86 + i * 18, 18, 18); + } + } + } + + for(int i = 0; i < 3; i++) { + if(custom.config.fluidInCount <= i) { + drawTexturedModalRect(guiLeft + 7 + i * 18, guiTop + 17, 192 + i * 18, 32, 18, 54); + } + if(custom.config.fluidOutCount <= i) { + drawTexturedModalRect(guiLeft + 77 + i * 18, guiTop + 17, 192 + i * 18, 32, 18, 36); + } + } + + for(int i = 0; i < custom.inputTanks.length; i++) { + custom.inputTanks[i].renderTank(guiLeft + 8 + 18 * i, guiTop + 52, this.zLevel, 16, 34); + } + + for(int i = 0; i < custom.outputTanks.length; i++) { + custom.outputTanks[i].renderTank(guiLeft + 78 + 18 * i, guiTop + 52, this.zLevel, 16, 34); + } + } + +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineDiFurnaceRTG.java b/src/main/java/com/hbm/inventory/gui/GUIMachineDiFurnaceRTG.java index 0345dc6a4..36606b0f4 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineDiFurnaceRTG.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineDiFurnaceRTG.java @@ -1,5 +1,6 @@ package com.hbm.inventory.gui; +import java.util.Arrays; import java.util.List; import org.lwjgl.opengl.GL11; @@ -14,8 +15,11 @@ import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.util.ForgeDirection; public class GUIMachineDiFurnaceRTG extends GuiInfoContainer { public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/gui/processing/gui_rtg_difurnace.png"); @@ -47,6 +51,23 @@ public class GUIMachineDiFurnaceRTG extends GuiInfoContainer { } this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 15, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, pelletText); + + if(this.mc.thePlayer.inventory.getItemStack() == null) { + for(int i = 0; i < 2; i++) { + Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); + + if(this.isMouseOverSlot(slot, mouseX, mouseY)) { + + String label = EnumChatFormatting.YELLOW + "Accepts items from: "; + byte dir = i == 0 ? bFurnace.sideUpper : bFurnace.sideLower; + label += ForgeDirection.getOrientation(dir); + + this.func_146283_a(Arrays.asList(new String[] { label }), mouseX, mouseY - (slot.getHasStack() ? 15 : 0)); + + return; + } + } + } } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java b/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java index 0197e0409..4b78d4aa5 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java @@ -7,6 +7,7 @@ import com.hbm.lib.RefStrings; import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityMachineExcavator; +import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -32,6 +33,12 @@ public class GUIMachineExcavator extends GuiInfoContainer { @Override public void drawScreen(int x, int y, float interp) { super.drawScreen(x, y, interp); + + this.drawCustomInfoStat(x, y, guiLeft + 6, guiTop + 42, 20, 40, x, y, I18nUtil.resolveKey("excavator.drill")); + this.drawCustomInfoStat(x, y, guiLeft + 30, guiTop + 42, 20, 40, x, y, I18nUtil.resolveKey("excavator.crusher")); + this.drawCustomInfoStat(x, y, guiLeft + 54, guiTop + 42, 20, 40, x, y, I18nUtil.resolveKey("excavator.walling")); + this.drawCustomInfoStat(x, y, guiLeft + 78, guiTop + 42, 20, 40, x, y, I18nUtil.resolveKey("excavator.veinminer")); + this.drawCustomInfoStat(x, y, guiLeft + 102, guiTop + 42, 20, 40, x, y, I18nUtil.resolveKey("excavator.silktouch")); this.drawElectricityInfo(this, x, y, guiLeft + 220, guiTop + 18, 16, 52, drill.getPower(), drill.maxPower); this.drill.tank.renderTankInfo(this, x, y, guiLeft + 202, guiTop + 18, 16, 52); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineExposureChamber.java b/src/main/java/com/hbm/inventory/gui/GUIMachineExposureChamber.java new file mode 100644 index 000000000..3f5760cce --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineExposureChamber.java @@ -0,0 +1,62 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineExposureChamber; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineExposureChamber; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineExposureChamber extends GuiInfoContainer { + + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_exposure_chamber.png"); + private TileEntityMachineExposureChamber chamber; + + public GUIMachineExposureChamber(InventoryPlayer invPlayer, TileEntityMachineExposureChamber chamber) { + super(new ContainerMachineExposureChamber(invPlayer, chamber)); + this.chamber = chamber; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 34, chamber.power, chamber.maxPower); + + drawCustomInfoStat(mouseX, mouseY, guiLeft + 26, guiTop + 36, 9, 16, mouseX, mouseY, chamber.savedParticles + " / " + chamber.maxParticles); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.chamber.hasCustomInventoryName() ? this.chamber.getInventoryName() : I18n.format(this.chamber.getInventoryName()); + this.fontRendererObj.drawString(name, 70 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int p = chamber.progress * 42 / (chamber.processTime + 1); + drawTexturedModalRect(guiLeft + 36, guiTop + 39, 192, 0, p, 10); + + int c = chamber.savedParticles * 16 / chamber.maxParticles; + drawTexturedModalRect(guiLeft + 26, guiTop + 52 - c, 192, 26 - c, 9, c); + + int e = (int) (chamber.power * 34 / chamber.maxPower); + drawTexturedModalRect(guiLeft + 152, guiTop + 52 - e, 176, 34 - e, 16, e); + + if(chamber.consumption <= chamber.power) { + drawTexturedModalRect(guiLeft + 156, guiTop + 4, 176, 34, 9, 12); + } + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachinePress.java b/src/main/java/com/hbm/inventory/gui/GUIMachinePress.java index 19d1e30fb..63e98642b 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachinePress.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachinePress.java @@ -4,6 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachinePress; import com.hbm.lib.RefStrings; +import com.hbm.render.util.GaugeUtil; import com.hbm.tileentity.machine.TileEntityMachinePress; import net.minecraft.client.Minecraft; @@ -46,14 +47,14 @@ public class GUIMachinePress extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int i = press.speed * 12 / press.maxSpeed; - drawTexturedModalRect(guiLeft + 25, guiTop + 16, 176, 14 + 18 * i, 18, 18); - if(press.burnTime >= 20) { this.drawTexturedModalRect(guiLeft + 27, guiTop + 36, 176, 0, 14, 14); } int k = (int) (press.renderPress * 16 / press.maxPress); this.drawTexturedModalRect(guiLeft + 79, guiTop + 35, 194, 0, 18, k); + + double i = (double) press.speed / (double) press.maxSpeed; + GaugeUtil.drawSmoothGauge(guiLeft + 34, guiTop + 25, this.zLevel, i, 5, 2, 1, 0x7f0000); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadar.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadar.java deleted file mode 100644 index 4cd9db8d5..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadar.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.hbm.inventory.gui; - -import java.util.Arrays; - -import org.lwjgl.opengl.GL11; - -import com.hbm.config.WeaponConfig; -import com.hbm.inventory.container.ContainerMachineRadar; -import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.machine.TileEntityMachineRadar; -import com.hbm.util.I18nUtil; - -import api.hbm.entity.IRadarDetectable.RadarTargetType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.PositionedSoundRecord; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUIMachineRadar extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar.png"); - private TileEntityMachineRadar diFurnace; - - public GUIMachineRadar(InventoryPlayer invPlayer, TileEntityMachineRadar tedf) { - super(new ContainerMachineRadar(invPlayer, tedf)); - diFurnace = tedf; - texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar.png"); - - this.xSize = 216; - this.ySize = 234; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 221, 200, 7, diFurnace.power, diFurnace.maxPower); - - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 10, guiTop + 98, 8, 8, mouseX, mouseY, I18nUtil.resolveKeyArray("radar.detectMissiles") ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 10, guiTop + 108, 8, 8, mouseX, mouseY, I18nUtil.resolveKeyArray("radar.detectPlayers")); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 10, guiTop + 118, 8, 8, mouseX, mouseY, I18nUtil.resolveKeyArray("radar.smartMode")); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 10, guiTop + 128, 8, 8, mouseX, mouseY, I18nUtil.resolveKeyArray("radar.redMode")); - - if(!diFurnace.nearbyMissiles.isEmpty()) { - for(int[] m : diFurnace.nearbyMissiles) { - int x = guiLeft + (int)((m[0] - diFurnace.xCoord) / ((double)WeaponConfig.radarRange * 2 + 1) * (200D - 8D)) + 108; - int z = guiTop + (int)((m[1] - diFurnace.zCoord) / ((double)WeaponConfig.radarRange * 2 + 1) * (200D - 8D)) + 117; - - if(mouseX + 4 > x && mouseX - 4 < x && - mouseY + 4 > z && mouseY - 4 < z) { - - - String[] text = new String[] { RadarTargetType.values()[m[2]].name, m[0] + " / " + m[1], "Alt.: " + m[3] }; - - this.func_146283_a(Arrays.asList(text), x, z); - - return; - } - } - } - } - - @Override - protected void mouseClicked(int x, int y, int i) { - super.mouseClicked(x, y, i); - - if(guiLeft -10 <= x && guiLeft + -10 + 8 > x && guiTop + 98 < y && guiTop + 98 + 8 >= y) { - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord, 0, 0)); - } - - if(guiLeft -10 <= x && guiLeft + -10 + 8 > x && guiTop + 108 < y && guiTop + 108 + 8 >= y) { - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord, 0, 1)); - } - - if(guiLeft -10 <= x && guiLeft + -10 + 8 > x && guiTop + 118 < y && guiTop + 118 + 8 >= y) { - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord, 0, 2)); - } - - if(guiLeft -10 <= x && guiLeft + -10 + 8 > x && guiTop + 128 < y && guiTop + 128 + 8 >= y) { - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord, 0, 3)); - } - } - - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = I18n.format("container.radar"); - - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - drawTexturedModalRect(guiLeft - 14, guiTop + 94, 216, 198, 14, 46); - - if(diFurnace.scanMissiles || (diFurnace.jammed && diFurnace.getWorldObj().rand.nextBoolean())) - drawTexturedModalRect(guiLeft - 10, guiTop + 98, 230, 202, 8, 8); - - if(diFurnace.scanPlayers || (diFurnace.jammed && diFurnace.getWorldObj().rand.nextBoolean())) - drawTexturedModalRect(guiLeft - 10, guiTop + 108, 230, 212, 8, 8); - - if(diFurnace.smartMode || (diFurnace.jammed && diFurnace.getWorldObj().rand.nextBoolean())) - drawTexturedModalRect(guiLeft - 10, guiTop + 118, 230, 222, 8, 8); - - if(diFurnace.redMode || (diFurnace.jammed && diFurnace.getWorldObj().rand.nextBoolean())) - drawTexturedModalRect(guiLeft - 10, guiTop + 128, 230, 232, 8, 8); - - if(diFurnace.power > 0) { - int i = (int)diFurnace.getPowerScaled(200); - drawTexturedModalRect(guiLeft + 8, guiTop + 221, 0, 234, i, 16); - } - - if(diFurnace.jammed) { - - for(int i = 0; i < 5; i++) { - for(int j = 0; j < 5; j++) { - drawTexturedModalRect(guiLeft + 8 + i * 40, guiTop + 17 + j * 40, 216, 118 + diFurnace.getWorldObj().rand.nextInt(41), 40, 40); - } - } - - return; - } - - if(!diFurnace.nearbyMissiles.isEmpty()) { - for(int[] m : diFurnace.nearbyMissiles) { - int x = (int)((m[0] - diFurnace.xCoord) / ((double)WeaponConfig.radarRange * 2 + 1) * (200D - 8D)) - 4; - int z = (int)((m[1] - diFurnace.zCoord) / ((double)WeaponConfig.radarRange * 2 + 1) * (200D - 8D)) - 4; - int t = m[2]; - - drawTexturedModalRect(guiLeft + 108 + x, guiTop + 117 + z, 216, 8 * t, 8, 8); - } - } - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java new file mode 100644 index 000000000..accefedf1 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java @@ -0,0 +1,265 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; + +import api.hbm.entity.RadarEntry; +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; + +public class GUIMachineRadarNT extends GuiScreen { + + public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar_nt.png"); + + protected TileEntityMachineRadarNT radar; + protected int xSize = 216; + protected int ySize = 234; + protected int guiLeft; + protected int guiTop; + + public int lastMouseX; + public int lastMouseY; + + public GUIMachineRadarNT(TileEntityMachineRadarNT tile) { + this.radar = tile; + } + + @Override + public void initGui() { + super.initGui(); + this.guiLeft = (this.width - this.xSize) / 2; + this.guiTop = (this.height - this.ySize) / 2; + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + String cmd = null; + + if(checkClick(x, y, -10, 88, 8, 8)) cmd = "missiles"; + if(checkClick(x, y, -10, 98, 8, 8)) cmd = "shells"; + if(checkClick(x, y, -10, 108, 8, 8)) cmd = "players"; + if(checkClick(x, y, -10, 118, 8, 8)) cmd = "smart"; + if(checkClick(x, y, -10, 128, 8, 8)) cmd = "red"; + if(checkClick(x, y, -10, 138, 8, 8)) cmd = "map"; + if(checkClick(x, y, -10, 158, 8, 8)) cmd = "gui1"; + if(checkClick(x, y, -10, 178, 8, 8)) cmd = "clear"; + + if(cmd != null) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean(cmd, true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, radar.xCoord, radar.yCoord, radar.zCoord)); + } + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + this.drawDefaultBackground(); + this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + GL11.glDisable(GL11.GL_LIGHTING); + this.drawGuiContainerForegroundLayer(mouseX, mouseY); + GL11.glEnable(GL11.GL_LIGHTING); + + this.lastMouseX = mouseX; + this.lastMouseY = mouseY; + } + + private void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { + + if(checkClick(mouseX, mouseY, 8, 221, 200, 7)) this.func_146283_a(Arrays.asList(BobMathUtil.getShortNumber(radar.power) + "/" + BobMathUtil.getShortNumber(radar.maxPower) + "HE"), mouseX, mouseY); + + if(checkClick(mouseX, mouseY, -10, 88, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectMissiles")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 98, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectShells")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 108, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectPlayers")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 118, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.smartMode")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 128, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.redMode")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 138, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.showMap")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 158, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.toggleGui")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 178, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.clearMap")), mouseX, mouseY); + + if(!radar.entries.isEmpty()) { + for(RadarEntry m : radar.entries) { + int x = guiLeft + (int)((m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 108; + int z = guiTop + (int)((m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 117; + + if(mouseX + 5 > x && mouseX - 4 <= x && mouseY + 5 > z && mouseY - 4 <= z) { + + String[] text = new String[] { I18nUtil.resolveKey(m.unlocalizedName), m.posX + " / " + m.posZ, "Alt.: " + m.posY }; + this.func_146283_a(Arrays.asList(text), x, z); + return; + } + } + } + + if(checkClick(mouseX, mouseY, 8, 17, 200, 200)) { + int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.xCoord); + int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.zCoord); + this.func_146283_a(Arrays.asList(tX + " / " + tZ), lastMouseX, lastMouseY); + } + } + + private void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + drawTexturedModalRect(guiLeft - 14, guiTop + 84, 224, 0, 14, 66); + drawTexturedModalRect(guiLeft - 14, guiTop + 154, 224, 66, 14, 36); + + if(radar.power > 0) { + int i = (int) (radar.power * 200 / radar.maxPower); + drawTexturedModalRect(guiLeft + 8, guiTop + 221, 0, 234, i, 16); + } + + if(radar.scanMissiles ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 88, 238, 4, 8, 8); + if(radar.scanShells ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 98, 238, 14, 8, 8); + if(radar.scanPlayers ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 108, 238, 24, 8, 8); + if(radar.smartMode ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 118, 238, 34, 8, 8); + if(radar.redMode ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 128, 238, 44, 8, 8); + if(radar.showMap ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 138, 238, 54, 8, 8); + + if(radar.power < radar.consumption) return; + + if(radar.jammed) { + for(int i = 0; i < 5; i++) { + for(int j = 0; j < 5; j++) { + drawTexturedModalRect(guiLeft + 8 + i * 40, guiTop + 17 + j * 40, 216, 118 + radar.getWorldObj().rand.nextInt(81), 40, 40); + } + } + return; + } + + if(radar.showMap) { + Tessellator tess = Tessellator.instance; + GL11.glDisable(GL11.GL_TEXTURE_2D); + tess.startDrawingQuads(); + for(int i = 0; i < 40_000; i++) { + int iX = i % 200; + int iZ = i / 200; + byte b = radar.map[i]; + if(b > 0) { + int color = ((b - 50) * 255 / 78) << 8; + tess.setColorOpaque_I(color); + tess.addVertex(guiLeft + 8 + iX, guiTop + 18 + iZ, this.zLevel); + tess.addVertex(guiLeft + 9 + iX, guiTop + 18 + iZ, this.zLevel); + tess.addVertex(guiLeft + 9 + iX, guiTop + 17 + iZ, this.zLevel); + tess.addVertex(guiLeft + 8 + iX, guiTop + 17 + iZ, this.zLevel); + } + } + tess.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + } + + Vec3 tr = Vec3.createVectorHelper(100, 0, 0); + Vec3 tl = Vec3.createVectorHelper(100, 0, 0); + Vec3 bl = Vec3.createVectorHelper(0, -5, 0); + float rot = (float) -Math.toRadians(radar.prevRotation + (radar.rotation - radar.prevRotation) * f + 180F); + tr.rotateAroundZ(rot); + tl.rotateAroundZ(rot + 0.25F); + bl.rotateAroundZ(rot); + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glShadeModel(GL11.GL_SMOOTH); + Tessellator tess = Tessellator.instance; + tess.startDrawingQuads(); + tess.setColorRGBA_I(0x00ff00, 0); tess.addVertex(guiLeft + 108, guiTop + 117, this.zLevel); + tess.setColorRGBA_I(0x00ff00, 255); tess.addVertex(guiLeft + 108 + tr.xCoord, guiTop + 117 + tr.yCoord, this.zLevel); + tess.setColorRGBA_I(0x00ff00, 0); tess.addVertex(guiLeft + 108 + tl.xCoord, guiTop + 117 + tl.yCoord, this.zLevel); + tess.setColorRGBA_I(0x00ff00, 0); tess.addVertex(guiLeft + 108 + bl.xCoord, guiTop + 117 + bl.yCoord, this.zLevel); + tess.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glShadeModel(GL11.GL_FLAT); + + if(!radar.entries.isEmpty()) { + for(RadarEntry m : radar.entries) { + double x = (m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D) - 4D; + double z = (m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D) - 4D; + int t = m.blipLevel; + drawTexturedModalRectDouble(guiLeft + 108 + x, guiTop + 117 + z, 216, 8 * t, 8, 8); + } + } + } + + public void drawTexturedModalRectDouble(double x, double y, int sourceX, int sourceY, int sizeX, int sizeY) { + float f = 0.00390625F; + float f1 = 0.00390625F; + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + tessellator.addVertexWithUV(x, y + sizeY, this.zLevel, (sourceX + 0) * f, (sourceY + sizeY) * f1); + tessellator.addVertexWithUV(x + sizeX, y + sizeY, this.zLevel, (sourceX + sizeX) * f, (sourceY + sizeY) * f1); + tessellator.addVertexWithUV(x + sizeX, y, this.zLevel, (sourceX + sizeX) * f, (sourceY + 0) * f1); + tessellator.addVertexWithUV(x, y, this.zLevel, (sourceX + 0) * f, (sourceY + 0) * f1); + tessellator.draw(); + } + + protected boolean checkClick(int x, int y, int left, int top, int sizeX, int sizeY) { + return guiLeft + left <= x && guiLeft + left + sizeX > x && guiTop + top < y && guiTop + top + sizeY >= y; + } + + @Override + protected void keyTyped(char c, int key) { + if(key == 1 || key == this.mc.gameSettings.keyBindInventory.getKeyCode()) { + this.mc.thePlayer.closeScreen(); + } + + if(checkClick(lastMouseX, lastMouseY, 8, 17, 200, 200) && c >= '1' && c <= '8') { + + int id = c - '1'; + + if(!radar.entries.isEmpty()) { + for(RadarEntry m : radar.entries) { + int x = guiLeft + (int) ((m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 108; + int z = guiTop + (int) ((m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 117; + + if(lastMouseX + 5 > x && lastMouseX - 4 <= x && lastMouseY + 5 > z && lastMouseY - 4 <= z) { + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("launchEntity", m.entityID); + data.setInteger("link", id); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, radar.xCoord, radar.yCoord, radar.zCoord)); + return; + } + } + } + + int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.xCoord); + int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.zCoord); + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("launchPosX", tX); + data.setInteger("launchPosZ", tZ); + data.setInteger("link", id); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, radar.xCoord, radar.yCoord, radar.zCoord)); + } + } + + @Override + public boolean doesGuiPauseGame() { + return false; + } + + @Override + public void updateScreen() { + super.updateScreen(); + + if(!this.mc.thePlayer.isEntityAlive() || this.mc.thePlayer.isDead) { + this.mc.thePlayer.closeScreen(); + } + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java new file mode 100644 index 000000000..77f1f3a60 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java @@ -0,0 +1,71 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineRadarNT; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.network.play.client.C0DPacketCloseWindow; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineRadarNTSlots extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar_link.png"); + private TileEntityMachineRadarNT radar; + + public GUIMachineRadarNTSlots(InventoryPlayer invPlayer, TileEntityMachineRadarNT tedf) { + super(new ContainerMachineRadarNT(invPlayer, tedf)); + radar = tedf; + + this.xSize = 176; + this.ySize = 184; + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(checkClick(x, y, 5, 5, 8, 8)) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + this.mc.thePlayer.sendQueue.addToSendQueue(new C0DPacketCloseWindow(this.mc.thePlayer.openContainer.windowId)); // closes the server-side GUI component without resetting the client's cursor position + FMLNetworkHandler.openGui(this.mc.thePlayer, MainRegistry.instance, 0, radar.getWorldObj(), radar.xCoord, radar.yCoord, radar.zCoord); + } + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + if(checkClick(mouseX, mouseY, 5, 5, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.toggleGui")), mouseX, mouseY); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.radar.hasCustomInventoryName() ? this.radar.getInventoryName() : I18n.format(this.radar.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(radar.power > 0) { + int i = (int) (radar.power * 160 / radar.maxPower); + drawTexturedModalRect(guiLeft + 8, guiTop + 64, 0, 185, i, 16); + } + } + +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineSelenium.java b/src/main/java/com/hbm/inventory/gui/GUIMachineSelenium.java index 20ea31ba8..9c34f199d 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineSelenium.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineSelenium.java @@ -10,7 +10,6 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; @@ -45,7 +44,7 @@ public class GUIMachineSelenium extends GuiInfoContainer { long energy = selenium.getHEFromFuel(type); if(energy > 0) - text.add(" " + I18nUtil.resolveKey(type.getUnlocalizedName()) + " (" + BobMathUtil.getShortNumber(energy) + "HE/t)"); + text.add(" " + type.getLocalizedName() + " (" + BobMathUtil.getShortNumber(energy) + "HE/t)"); } text.add(EnumChatFormatting.ITALIC + "(These numbers are base values,"); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java index 724797310..4646f4e88 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java @@ -137,7 +137,7 @@ public class GUIMachineTurbineGas extends GuiInfoContainer { fuels.add(I18nUtil.resolveKey("desc.gui.turbinegas.fuels")); for(FluidType type : Fluids.getInNiceOrder()) { if(type.hasTrait(FT_Combustible.class) && type.getTrait(FT_Combustible.class).getGrade() == FuelGrade.GAS) { - fuels.add(" " + I18nUtil.resolveKey(type.getUnlocalizedName())); + fuels.add(" " + type.getLocalizedName()); } } this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 34 + 16, 16, 16, guiLeft - 8, guiTop + 44 + 16, fuels); @@ -225,10 +225,6 @@ public class GUIMachineTurbineGas extends GuiInfoContainer { int firstDigitX = 66; int firstDigitY = 62; - int width = 5; - int height = 11; - int spaceBetweenBumbers = 3; - int[] digit = new int[6]; for(int i = 5; i >= 0; i--) { //creates an array of digits that represent the numbers diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java new file mode 100644 index 000000000..977f11d20 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java @@ -0,0 +1,115 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineWoodBurner; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.TileEntityMachineWoodBurner; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineWoodBurner extends GuiInfoContainer { + + private TileEntityMachineWoodBurner burner; + private final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/generators/gui_wood_burner_alt.png"); + + public GUIMachineWoodBurner(InventoryPlayer invPlayer, TileEntityMachineWoodBurner tedf) { + super(new ContainerMachineWoodBurner(invPlayer, tedf)); + burner = tedf; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 143, guiTop + 18, 16, 34, burner.power, burner.maxPower); + + if(this.mc.thePlayer.inventory.getItemStack() == null) { + + Slot slot = (Slot) this.inventorySlots.inventorySlots.get(0); + if(this.isMouseOverSlot(slot, mouseX, mouseY) && !slot.getHasStack()) { + List bonuses = burner.burnModule.getDesc(); + if(!bonuses.isEmpty()) { + this.func_146283_a(bonuses, mouseX, mouseY); + } + } + } + + if(burner.liquidBurn) burner.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 18, 16, 52); + + if(!burner.liquidBurn && guiLeft + 16 <= mouseX && guiLeft + 16 + 8 > mouseX && guiTop + 17 < mouseY && guiTop + 17 + 54 >= mouseY) { + func_146283_a(Arrays.asList(new String[] { (burner.burnTime / 20) + "s" }), mouseX, mouseY); + } + + if(guiLeft + 53 <= mouseX && guiLeft + 53 + 16 > mouseX && guiTop + 17 < mouseY && guiTop + 17 + 15 >= mouseY) { + func_146283_a(Arrays.asList(new String[] { burner.isOn ? EnumChatFormatting.GREEN + "ON" : EnumChatFormatting.RED + "OFF" }), mouseX, mouseY); + } + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 53 <= x && guiLeft + 53 + 16 > x && guiTop + 17 < y && guiTop + 17 + 15 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("toggle", false); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, burner.xCoord, burner.yCoord, burner.zCoord)); + } + + if(guiLeft + 46 <= x && guiLeft + 46 + 30 > x && guiTop + 37 < y && guiTop + 37 + 14 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("switch", false); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, burner.xCoord, burner.yCoord, burner.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.burner.hasCustomInventoryName() ? this.burner.getInventoryName() : I18n.format(this.burner.getInventoryName()); + + this.fontRendererObj.drawString(name, 70 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(burner.liquidBurn) { + drawTexturedModalRect(guiLeft + 16, guiTop + 17, 176, 52, 60, 54); + drawTexturedModalRect(guiLeft + 79, guiTop + 17, 176, 106, 36, 54); + } + + if(burner.isOn) { + drawTexturedModalRect(guiLeft + 53, guiTop + 17, 196, 0, 16, 15); + } + + int p = (int) (burner.power * 34 / burner.maxPower); + drawTexturedModalRect(guiLeft + 143, guiTop + 52 - p, 176, 52 - p, 16, p); + + if(burner.maxBurnTime > 0 && !burner.liquidBurn) { + int b = (int) (burner.burnTime * 52 / burner.maxBurnTime); + drawTexturedModalRect(guiLeft + 17, guiTop + 70 - b, 192, 52 - b, 4, b); + } + + if(burner.liquidBurn) burner.tank.renderTank(guiLeft + 80, guiTop + 70, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java b/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java index 8ada24c3c..dfa413f97 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; @@ -35,7 +37,7 @@ public class GUIMassStorage extends GuiInfoContainer { String percent = (((int) (storage.getStockpile() * 1000D / (double) storage.getCapacity())) / 10D) + "%"; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 96, guiTop + 16, 18, 90, mouseX, mouseY, new String[] - { String.format("%,d", storage.getStockpile()) + " / " + String.format("%,d", storage.getCapacity()), percent }); + { String.format(Locale.US, "%,d", storage.getStockpile()) + " / " + String.format(Locale.US, "%,d", storage.getCapacity()), percent }); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 62, guiTop + 72, 14, 14, mouseX, mouseY, new String[] { "Click: Provide one", "Shift-click: Provide stack" }); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 80, guiTop + 72, 14, 14, mouseX, mouseY, new String[] { "Toggle output" }); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMixer.java b/src/main/java/com/hbm/inventory/gui/GUIMixer.java index ae109391e..79f6461d6 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMixer.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMixer.java @@ -1,14 +1,24 @@ package com.hbm.inventory.gui; +import java.util.ArrayList; +import java.util.List; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMixer; +import com.hbm.inventory.recipes.MixerRecipes; +import com.hbm.inventory.recipes.MixerRecipes.MixerRecipe; import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityMachineMixer; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; public class GUIMixer extends GuiInfoContainer { @@ -29,12 +39,38 @@ public class GUIMixer extends GuiInfoContainer { super.drawScreen(x, y, interp); this.drawElectricityInfo(this, x, y, guiLeft + 23, guiTop + 23, 16, 52, mixer.getPower(), mixer.getMaxPower()); + + MixerRecipe[] recipes = MixerRecipes.getOutput(mixer.tanks[2].getTankType()); + + if(recipes != null && recipes.length > 1) { + List label = new ArrayList(); + label.add(EnumChatFormatting.YELLOW + "Current recipe (" + (mixer.recipeIndex + 1) + "/" + recipes.length + "):"); + MixerRecipe recipe = recipes[mixer.recipeIndex % recipes.length]; + if(recipe.input1 != null) label.add("-" + recipe.input1.type.getLocalizedName()); + if(recipe.input2 != null) label.add("-" + recipe.input2.type.getLocalizedName()); + if(recipe.solidInput != null) label.add("-" + recipe.solidInput.extractForCyclingDisplay(20).getDisplayName()); + label.add(EnumChatFormatting.RED + "Click to change!"); + this.drawCustomInfoStat(x, y, guiLeft + 62, guiTop + 22, 12, 12, x, y, label); + } mixer.tanks[0].renderTankInfo(this, x, y, guiLeft + 43, guiTop + 23, 7, 52); mixer.tanks[1].renderTankInfo(this, x, y, guiLeft + 52, guiTop + 23, 7, 52); mixer.tanks[2].renderTankInfo(this, x, y, guiLeft + 117, guiTop + 23, 16, 52); } + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 62 <= x && guiLeft + 62 + 12 > x && guiTop + 22 < y && guiTop + 22 + 12 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("toggle", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, mixer.xCoord, mixer.yCoord, mixer.zCoord)); + } + } + @Override protected void drawGuiContainerForegroundLayer( int i, int j) { diff --git a/src/main/java/com/hbm/inventory/gui/GUINukeTsar.java b/src/main/java/com/hbm/inventory/gui/GUINukeTsar.java index e91e91e65..4d22cde31 100644 --- a/src/main/java/com/hbm/inventory/gui/GUINukeTsar.java +++ b/src/main/java/com/hbm/inventory/gui/GUINukeTsar.java @@ -8,6 +8,7 @@ import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerNukeTsar; +import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.tileentity.bomb.TileEntityNukeTsar; import com.hbm.util.I18nUtil; @@ -15,14 +16,15 @@ import com.hbm.util.I18nUtil; public class GUINukeTsar extends GuiInfoContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/tsarBombaSchematic.png"); - private TileEntityNukeTsar testNuke; + private static ResourceLocation textureMike = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/ivyMikeSchematic.png"); + private TileEntityNukeTsar tsar; public GUINukeTsar(InventoryPlayer invPlayer, TileEntityNukeTsar tedf) { super(new ContainerNukeTsar(invPlayer, tedf)); - testNuke = tedf; + tsar = tedf; - this.xSize = 176; - this.ySize = 166; + this.xSize = 256; + this.ySize = 233; } @Override @@ -35,10 +37,10 @@ public class GUINukeTsar extends GuiInfoContainer { @Override protected void drawGuiContainerForegroundLayer( int i, int j) { - String name = this.testNuke.hasCustomInventoryName() ? this.testNuke.getInventoryName() : I18n.format(this.testNuke.getInventoryName()); + String name = this.tsar.hasCustomInventoryName() ? this.tsar.getInventoryName() : I18n.format(this.tsar.getInventoryName()); this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 48, this.ySize - 96 + 2, 4210752); } @Override @@ -46,16 +48,23 @@ public class GUINukeTsar extends GuiInfoContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + Minecraft.getMinecraft().getTextureManager().bindTexture(textureMike); - if(testNuke.isReady()) - { - drawTexturedModalRect(guiLeft + 133, guiTop + 34, 176, 0, 16, 16); - } + if(tsar.isFilled()) drawTexturedModalRect(guiLeft + 18, guiTop + 50, 176, 18, 16, 16); + else if(tsar.isReady()) drawTexturedModalRect(guiLeft + 18, guiTop + 50, 176, 0, 16, 16); - if(testNuke.isFilled()) - { - drawTexturedModalRect(guiLeft + 133, guiTop + 34, 176, 18, 16, 16); + for(int i = 0; i < 4; i++) { + if(tsar.getStackInSlot(i) != null && tsar.getStackInSlot(i).getItem() == ModItems.explosive_lenses) switch(i) { + case 0: drawTexturedModalRect(guiLeft + 24 + 16, guiTop + 20 + 16, 209, 1, 23, 23); break; + case 2: drawTexturedModalRect(guiLeft + 47 + 16, guiTop + 20 + 16, 232, 1, 23, 23); break; + case 1: drawTexturedModalRect(guiLeft + 24 + 16, guiTop + 43 + 16, 209, 24, 23, 23); break; + case 3: drawTexturedModalRect(guiLeft + 47 + 16, guiTop + 43 + 16, 232, 24, 23, 23); break; + } } + + if(tsar.getStackInSlot(5) != null && tsar.getStackInSlot(5).getItem() == ModItems.tsar_core) + drawTexturedModalRect(guiLeft + 75 + 16, guiTop + 25 + 16, 176, 220, 80, 36); this.drawInfoPanel(guiLeft - 16, guiTop + 16, 16, 16, 2); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIOilburner.java b/src/main/java/com/hbm/inventory/gui/GUIOilburner.java index 35112f2b6..8d040b03f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIOilburner.java +++ b/src/main/java/com/hbm/inventory/gui/GUIOilburner.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerOilburner; @@ -33,10 +35,10 @@ public class GUIOilburner extends GuiInfoContainer { public void drawScreen(int x, int y, float interp) { super.drawScreen(x, y, interp); - this.drawCustomInfoStat(x, y, guiLeft + 116, guiTop + 17, 16, 52, x, y, new String[] { String.format("%,d", Math.min(diFurnace.heatEnergy, diFurnace.maxHeatEnergy)) + " / " + String.format("%,d", diFurnace.maxHeatEnergy) + " TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 116, guiTop + 17, 16, 52, x, y, new String[] { String.format(Locale.US, "%,d", Math.min(diFurnace.heatEnergy, diFurnace.maxHeatEnergy)) + " / " + String.format(Locale.US, "%,d", diFurnace.maxHeatEnergy) + " TU" }); if(diFurnace.tank.getTankType().hasTrait(FT_Flammable.class)) { - this.drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 34, 18, 18, x, y, new String[] { diFurnace.setting + " mB/t", String.format("%,d", (int)(diFurnace.tank.getTankType().getTrait(FT_Flammable.class).getHeatEnergy() / 1000) * diFurnace.setting) + " TU/t" }); + this.drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 34, 18, 18, x, y, new String[] { diFurnace.setting + " mB/t", String.format(Locale.US, "%,d", (int)(diFurnace.tank.getTankType().getTrait(FT_Flammable.class).getHeatEnergy() / 1000) * diFurnace.setting) + " TU/t" }); } diFurnace.tank.renderTankInfo(this, x, y, guiLeft + 44, guiTop + 17, 16, 52); diff --git a/src/main/java/com/hbm/inventory/gui/GUIPWR.java b/src/main/java/com/hbm/inventory/gui/GUIPWR.java new file mode 100644 index 000000000..338f4be99 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIPWR.java @@ -0,0 +1,199 @@ +package com.hbm.inventory.gui; + +import java.util.Locale; + +import org.apache.commons.lang3.math.NumberUtils; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerPWR; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.render.util.GaugeUtil; +import com.hbm.tileentity.machine.TileEntityPWRController; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +public class GUIPWR extends GuiInfoContainer { + + protected TileEntityPWRController controller; + private final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_pwr.png"); + + private GuiTextField field; + + public GUIPWR(InventoryPlayer inventory, TileEntityPWRController controller) { + super(new ContainerPWR(inventory, controller)); + this.controller = controller; + + this.xSize = 176; + this.ySize = 188; + } + + @Override + public void initGui() { + super.initGui(); + + Keyboard.enableRepeatEvents(true); + + this.field = new GuiTextField(this.fontRendererObj, guiLeft + 57, guiTop + 63, 30, 8); + this.field.setTextColor(0x00ff00); + this.field.setDisabledTextColour(0x008000); + this.field.setEnableBackgroundDrawing(false); + this.field.setMaxStringLength(3); + + this.field.setText((100 - controller.rodTarget) + ""); + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + this.drawCustomInfoStat(x, y, guiLeft + 115, guiTop + 31, 18, 18, x, y, new String[] { "Core: " + String.format(Locale.US, "%,d", controller.coreHeat) + " / " + String.format(Locale.US, "%,d", controller.coreHeatCapacity) + " TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 151, guiTop + 31, 18, 18, x, y, new String[] { "Hull: " + String.format(Locale.US, "%,d", controller.hullHeat) + " / " + String.format(Locale.US, "%,d", controller.hullHeatCapacity) + " TU" }); + + this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 31, 36, 18, x, y, new String[] { ((int) (controller.progress * 100 / controller.processTime)) + "%" }); + this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 53, 54, 4, x, y, "Control rod level: " + (100 - controller.rodLevel) + "%"); + + if(controller.typeLoaded != -1 && controller.amountLoaded > 0) { + ItemStack display = new ItemStack(ModItems.pwr_fuel, 1, controller.typeLoaded); + if(guiLeft + 88 <= x && guiLeft + 88 + 18 > x && guiTop + 4 < y && guiTop + 4 + 18 >= y) this.renderToolTip(display, x, y); + } + + controller.tanks[0].renderTankInfo(this, x, y, guiLeft + 8, guiTop + 5, 16, 52); + controller.tanks[1].renderTankInfo(this, x, y, guiLeft + 26, guiTop + 5, 16, 52); + } + + @Override + protected void drawItemStack(ItemStack stack, int x, int y, String label) { + GL11.glPushMatrix(); + GL11.glTranslatef(0.0F, 0.0F, 32.0F); + this.zLevel = 200.0F; + itemRender.zLevel = 200.0F; + FontRenderer font = null; + if(stack != null) font = stack.getItem().getFontRenderer(stack); + if(font == null) font = fontRendererObj; + itemRender.renderItemAndEffectIntoGUI(font, this.mc.getTextureManager(), stack, x, y); + GL11.glScaled(0.5, 0.5, 0.5); + itemRender.renderItemOverlayIntoGUI(font, this.mc.getTextureManager(), stack, (x + font.getStringWidth(label) / 4) * 2, (y + 15) * 2, label); + this.zLevel = 0.0F; + itemRender.zLevel = 0.0F; + GL11.glPopMatrix(); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + + double scale = 1.25; + String flux = String.format(Locale.US, "%,.1f", controller.flux); + GL11.glScaled(1 / scale, 1 / scale, 1); + this.fontRendererObj.drawString(flux, (int) (165 * scale - this.fontRendererObj.getStringWidth(flux)), (int)(64 * scale), 0x00ff00); + GL11.glScaled(scale, scale, 1); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(controller.hullHeat > controller.hullHeatCapacity * 0.8 || controller.coreHeat > controller.coreHeatCapacity * 0.8) + drawTexturedModalRect(guiLeft + 147, guiTop, 176, 14, 26, 26); + + int p = (int) (controller.progress * 33 / controller.processTime); + drawTexturedModalRect(guiLeft + 54, guiTop + 33, 176, 0, p, 14); + + int c = (int) (controller.rodLevel * 52 / 100); + drawTexturedModalRect(guiLeft + 53, guiTop + 54, 176, 40, c, 2); + + //GaugeUtil.renderGauge(Gauge.ROUND_SMALL, guiLeft + 115, guiTop + 31, this.zLevel, (double) controller.coreHeat / (double) controller.coreHeatCapacity); + //GaugeUtil.renderGauge(Gauge.ROUND_SMALL, guiLeft + 151, guiTop + 31, this.zLevel, (double) controller.hullHeat / (double) controller.hullHeatCapacity); + + GaugeUtil.drawSmoothGauge(guiLeft + 124, guiTop + 40, this.zLevel, (double) controller.coreHeat / (double) controller.coreHeatCapacity, 5, 2, 1, 0x7F0000); + GaugeUtil.drawSmoothGauge(guiLeft + 160, guiTop + 40, this.zLevel, (double) controller.hullHeat / (double) controller.hullHeatCapacity, 5, 2, 1, 0x7F0000); + + if(controller.typeLoaded != -1 && controller.amountLoaded > 0) { + ItemStack display = new ItemStack(ModItems.pwr_fuel, 1, controller.typeLoaded); + this.drawItemStack(display, guiLeft + 89, guiTop + 5, EnumChatFormatting.YELLOW + "" + controller.amountLoaded + "/" + controller.rodCount); + RenderHelper.enableGUIStandardItemLighting(); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + } + + GL11.glDisable(GL11.GL_LIGHTING); + + controller.tanks[0].renderTank(guiLeft + 8, guiTop + 57, this.zLevel, 16, 52); + controller.tanks[1].renderTank(guiLeft + 26, guiTop + 57, this.zLevel, 16, 52); + + this.field.drawTextBox(); + } + + /*private void drawGauge(int x, int y, double d) { + GL11.glDisable(GL11.GL_TEXTURE_2D); + + d = MathHelper.clamp_double(d, 0, 1); + + float angle = (float) Math.toRadians(-d * 270 - 45); + Vec3 tip = Vec3.createVectorHelper(0, 5, 0); + Vec3 left = Vec3.createVectorHelper(1, -2, 0); + Vec3 right = Vec3.createVectorHelper(-1, -2, 0); + + tip.rotateAroundZ(angle); + left.rotateAroundZ(angle); + right.rotateAroundZ(angle); + + Tessellator tess = Tessellator.instance; + tess.startDrawing(GL11.GL_TRIANGLES); + tess.setColorOpaque_F(0F, 0F, 0F); + double mult = 1.5; + tess.addVertex(x + tip.xCoord * mult, y + tip.yCoord * mult, this.zLevel); + tess.addVertex(x + left.xCoord * mult, y + left.yCoord * mult, this.zLevel); + tess.addVertex(x + right.xCoord * mult, y + right.yCoord * mult, this.zLevel); + tess.setColorOpaque_F(0.75F, 0F, 0F); + tess.addVertex(x + tip.xCoord, y + tip.yCoord, this.zLevel); + tess.addVertex(x + left.xCoord, y + left.yCoord, this.zLevel); + tess.addVertex(x + right.xCoord, y + right.yCoord, this.zLevel); + tess.draw(); + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + }*/ + + @Override + protected void mouseClicked(int mouseX, int mouseY, int i) { + super.mouseClicked(mouseX, mouseY, i); + this.field.mouseClicked(mouseX, mouseY, i); + + if(guiLeft + 88 <= mouseX && guiLeft + 88 + 18 > mouseX && guiTop + 58 < mouseY && guiTop + 58 + 18 >= mouseY) { + + if(NumberUtils.isNumber(field.getText())) { + int level = (int)MathHelper.clamp_double(Double.parseDouble(field.getText()), 0, 100); + field.setText(level + ""); + + NBTTagCompound control = new NBTTagCompound(); + control.setInteger("control", 100 - level); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(control, controller.xCoord, controller.yCoord, controller.zCoord)); + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1F)); + + } + } + } + + @Override + protected void keyTyped(char c, int i) { + if(this.field.textboxKeyTyped(c, i)) return; + super.keyTyped(c, i); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIPlasticBag.java b/src/main/java/com/hbm/inventory/gui/GUIPlasticBag.java new file mode 100644 index 000000000..4c3400388 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIPlasticBag.java @@ -0,0 +1,48 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerPlasticBag; +import com.hbm.items.tool.ItemPlasticBag.InventoryPlasticBag; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class GUIPlasticBag extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_plastic_bag.png"); + private ItemStack firstHeld; + + public GUIPlasticBag(InventoryPlayer invPlayer, InventoryPlasticBag box) { + super(new ContainerPlasticBag(invPlayer, box)); + + this.xSize = 176; + this.ySize = 216; + } + + @Override + public void drawScreen(int x, int y, float interp) { + if(firstHeld == null) { + firstHeld = this.mc.thePlayer.getHeldItem(); + } + + super.drawScreen(x, y, interp); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java index 8d9bda1d3..b07d3a19c 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java @@ -3,6 +3,7 @@ package com.hbm.inventory.gui; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; import org.apache.commons.lang3.math.NumberUtils; import org.lwjgl.input.Keyboard; @@ -21,6 +22,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; @@ -96,16 +98,17 @@ public class GUIRBMKConsole extends GuiScreen { for(int i = 0; i < 3; i++) { for(int j = 0; j < 2; j++) { int id = i * 2 + j + 1; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 6 + 40 * j, guiTop + 8 + 21 * i, 18, 18, mouseX, mouseY, new String[]{ EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.console." + console.screens[id - 1].type.name().toLowerCase(), id) } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 6 + 40 * j, guiTop + 8 + 21 * i, 18, 18, mouseX, mouseY, new String[]{ EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.console." + console.screens[id - 1].type.name().toLowerCase(Locale.US), id) } ); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 24 + 40 * j, guiTop + 8 + 21 * i, 18, 18, mouseX, mouseY, new String[]{ I18nUtil.resolveKey("rbmk.console.assign", id) } ); } } - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 6, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ "Select red group" } ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 17, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ "Select yellow group" } ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 28, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ "Select green group" } ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 39, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ "Select blue group" } ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 50, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ "Select purple group" } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 6, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ EnumChatFormatting.RED + "Left click: Select red group", EnumChatFormatting.RED + "Right click: Assign red group" } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 17, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ EnumChatFormatting.YELLOW + "Left click: Select yellow group", EnumChatFormatting.YELLOW + "Right click: Assign yellow group" } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 28, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ EnumChatFormatting.GREEN + "Left click: Select green group", EnumChatFormatting.GREEN + "Right click: Assign green group" } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 39, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ EnumChatFormatting.BLUE + "Left click: Select blue group", EnumChatFormatting.BLUE + "Right click: Assign blue group" } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 50, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ EnumChatFormatting.LIGHT_PURPLE + "Left click: Select purple group", EnumChatFormatting.LIGHT_PURPLE + "Right click: Assign purple group" } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 70, guiTop + 82, 12, 12, mouseX, mouseY, new String[]{ "Cycle steam channel compressor setting" } ); } public void drawCustomInfoStat(int mouseX, int mouseY, int x, int y, int width, int height, int tPosX, int tPosY, String[] text) { @@ -115,9 +118,12 @@ public class GUIRBMKConsole extends GuiScreen { } @Override - protected void mouseClicked(int mouseX, int mouseY, int i) { - super.mouseClicked(mouseX, mouseY, i); - this.field.mouseClicked(mouseX, mouseY, i); + protected void mouseClicked(int mouseX, int mouseY, int key) { + super.mouseClicked(mouseX, mouseY, key); + this.field.mouseClicked(mouseX, mouseY, key); + + int LEFT_CLICK = 0; + int RIGTH_CLICK = 1; int bX = 86; int bY = 11; @@ -157,19 +163,54 @@ public class GUIRBMKConsole extends GuiScreen { return; } + //compressor + if(guiLeft + 70 <= mouseX && guiLeft + 70 + 12 > mouseX && guiTop + 82 < mouseY && guiTop + 82 + 12 >= mouseY) { + NBTTagCompound control = new NBTTagCompound(); + control.setBoolean("compressor", true); + List ints = new ArrayList(); + for(int j = 0; j < console.columns.length; j++) { + if(console.columns[j] != null && console.columns[j].type == ColumnType.BOILER && this.selection[j]) { + ints.add(j); + } + } + int[] cols = new int[ints.size()]; + for(int i = 0; i < cols.length; i++) cols[i] = ints.get(i); + control.setIntArray("cols", cols); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(control, console.xCoord, console.yCoord, console.zCoord)); + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1F)); + } + //select color groups for(int k = 0; k < 5; k++) { if(guiLeft + 6 + k * 11 <= mouseX && guiLeft + 6 + k * 11 + 10 > mouseX && guiTop + 70 < mouseY && guiTop + 70 + 10 >= mouseY) { - this.selection = new boolean[15 * 15]; - for(int j = 0; j < console.columns.length; j++) { + if(key == LEFT_CLICK) { + this.selection = new boolean[15 * 15]; - if(console.columns[j] != null && console.columns[j].type == ColumnType.CONTROL && console.columns[j].data.getShort("color") == k) { - this.selection[j] = true; + for(int j = 0; j < console.columns.length; j++) { + + if(console.columns[j] != null && console.columns[j].type == ColumnType.CONTROL && console.columns[j].data.getShort("color") == k) { + this.selection[j] = true; + } } } + if(key == RIGTH_CLICK) { + NBTTagCompound control = new NBTTagCompound(); + control.setByte("assignColor", (byte) k); + List ints = new ArrayList(); + for(int j = 0; j < console.columns.length; j++) { + if(console.columns[j] != null && console.columns[j].type == ColumnType.CONTROL && this.selection[j]) { + ints.add(j); + } + } + int[] cols = new int[ints.size()]; + for(int i = 0; i < cols.length; i++) cols[i] = ints.get(i); + control.setIntArray("cols", cols); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(control, console.xCoord, console.yCoord, console.zCoord)); + } + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 0.8F + k * 0.1F)); return; } @@ -319,9 +360,11 @@ public class GUIRBMKConsole extends GuiScreen { case FUEL_SIM: if(col.data.hasKey("c_heat")) { int fh = (int)Math.ceil((col.data.getDouble("c_heat") - 20) * 8 / col.data.getDouble("c_maxHeat")); + if(fh > 8) fh = 8; drawTexturedModalRect(guiLeft + x + 1, guiTop + y + size - fh - 1, 11, 191 - fh, 2, fh); int fe = (int)Math.ceil((col.data.getDouble("enrichment")) * 8); + if(fe > 8) fe = 8; drawTexturedModalRect(guiLeft + x + 4, guiTop + y + size - fe - 1, 14, 191 - fe, 2, fe); } break; @@ -355,6 +398,41 @@ public class GUIRBMKConsole extends GuiScreen { drawTexturedModalRect(guiLeft + x, guiTop + y, 0, 192, 10, 10); } + int highest = Integer.MIN_VALUE; + int lowest = Integer.MAX_VALUE; + + for(int i : console.fluxBuffer) { + if(i > highest) highest = i; + if(i < lowest) lowest = i; + } + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glLineWidth(2F); + Tessellator tess = Tessellator.instance; + tess.startDrawing(GL11.GL_LINES); + tess.setColorOpaque_I(0x00ff00); + int range = highest - lowest; + for(int i = 0; i < console.fluxBuffer.length - 1; i++) { + for(int j = 0; j < 2; j++) { + int k = i + j; + int flux = console.fluxBuffer[k]; + double x = guiLeft + 7 + k * 74D / console.fluxBuffer.length; + double y = guiTop + 127 - (flux - lowest) * 24D / Math.max(range, 1); + tess.addVertex(x, y, this.zLevel + 10); + } + } + tess.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + + GL11.glPushMatrix(); + double scale = 0.5D; + GL11.glScaled(scale, scale, 1); + this.fontRendererObj.drawString(highest + "", (int) ((guiLeft + 8) / scale), (int) ((guiTop + 98) / scale), 0x00ff00); + this.fontRendererObj.drawString(highest + "", (int) ((guiLeft + 80 - this.fontRendererObj.getStringWidth(highest + "") * scale) / scale), (int) ((guiTop + 98) / scale), 0x00ff00); + this.fontRendererObj.drawString(lowest + "", (int) ((guiLeft + 8) / scale), (int) ((guiTop + 133 - this.fontRendererObj.FONT_HEIGHT * scale) / scale), 0x00ff00); + this.fontRendererObj.drawString(lowest + "", (int) ((guiLeft + 80 - this.fontRendererObj.getStringWidth(lowest + "") * scale) / scale), (int) ((guiTop + 133 - this.fontRendererObj.FONT_HEIGHT * scale) / scale), 0x00ff00); + GL11.glPopMatrix(); + this.field.drawTextBox(); } diff --git a/src/main/java/com/hbm/inventory/gui/GUISILEX.java b/src/main/java/com/hbm/inventory/gui/GUISILEX.java index 8de55b89a..722b59878 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISILEX.java +++ b/src/main/java/com/hbm/inventory/gui/GUISILEX.java @@ -6,6 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerSILEX; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.SILEXRecipes; +import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.lib.RefStrings; import com.hbm.packet.AuxButtonPacket; @@ -18,6 +20,7 @@ import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; public class GUISILEX extends GuiInfoContainer { @@ -85,7 +88,7 @@ public class GUISILEX extends GuiInfoContainer { if(silex.tank.getFill() > 0) { - if(silex.tank.getTankType() == Fluids.ACID || silex.fluidConversion.containsKey(silex.tank.getTankType())) { + if(silex.tank.getTankType() == Fluids.ACID || silex.fluidConversion.containsKey(silex.tank.getTankType()) || SILEXRecipes.getOutput(new ItemStack(ModItems.fluid_icon, 1, silex.tank.getTankType().getID())) != null) { drawTexturedModalRect(guiLeft + 7, guiTop + 41, 176, 118, 54, 9); } else { drawTexturedModalRect(guiLeft + 7, guiTop + 41, 176, 109, 54, 9); diff --git a/src/main/java/com/hbm/inventory/gui/GUISatDock.java b/src/main/java/com/hbm/inventory/gui/GUISatDock.java index 3276564df..369530b2f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISatDock.java +++ b/src/main/java/com/hbm/inventory/gui/GUISatDock.java @@ -1,24 +1,22 @@ package com.hbm.inventory.gui; -import org.lwjgl.opengl.GL11; - import com.hbm.inventory.container.ContainerSatDock; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineSatDock; - import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; public class GUISatDock extends GuiInfoContainer { - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_dock.png"); - private TileEntityMachineSatDock diFurnace; + public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_dock.png"); + private final TileEntityMachineSatDock tileSatelliteDock; - public GUISatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tedf) { - super(new ContainerSatDock(invPlayer, tedf)); - diFurnace = tedf; + public GUISatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tesd) { + super(new ContainerSatDock(invPlayer, tesd)); + tileSatelliteDock = tesd; this.xSize = 176; this.ySize = 168; @@ -36,10 +34,10 @@ public class GUISatDock extends GuiInfoContainer { @Override protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); + String name = this.tileSatelliteDock.hasCustomInventoryName() ? this.tileSatelliteDock.getInventoryName() : I18n.format(this.tileSatelliteDock.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0x404040); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 0x404040); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java index 24a00b973..8d0105f14 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java @@ -2,6 +2,7 @@ package com.hbm.inventory.gui; import java.awt.Color; import java.util.Arrays; +import java.util.Locale; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; @@ -13,7 +14,6 @@ import com.hbm.items.machine.ItemFluidIDMulti; import com.hbm.lib.RefStrings; import com.hbm.packet.NBTItemControlPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -110,7 +110,7 @@ public class GUIScreenFluid extends GuiScreen { return; if(guiLeft + 7 + k * 18 <= i && guiLeft + 7 + k * 18 + 18 > i && guiTop + 29 < j && guiTop + 29 + 18 >= j) - func_146283_a(Arrays.asList(new String[] { I18nUtil.resolveKey(this.searchArray[k].getUnlocalizedName()) }), i, j); + func_146283_a(Arrays.asList(new String[] { this.searchArray[k].getLocalizedName() }), i, j); } } @@ -166,10 +166,10 @@ public class GUIScreenFluid extends GuiScreen { this.searchArray = new FluidType[9]; int next = 0; - String subs = this.search.getText().toLowerCase(); + String subs = this.search.getText().toLowerCase(Locale.US); for(FluidType type : Fluids.getInNiceOrder()) { - String name = I18nUtil.resolveKey(type.getUnlocalizedName()).toLowerCase(); + String name = type.getLocalizedName().toLowerCase(); if(name.contains(subs) && !type.hasNoID()) { this.searchArray[next] = type; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java index fb9f41afc..fc90751df 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java @@ -85,7 +85,6 @@ public class GUIScreenRadioTorch extends GuiScreen { GL11.glEnable(GL11.GL_LIGHTING); } - private void drawGuiContainerForegroundLayer(int x, int y) { String name = I18nUtil.resolveKey(this.title); this.fontRendererObj.drawString(name, this.guiLeft + this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, this.guiTop + 6, 4210752); diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java index 6872d9f9a..a563eb732 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java @@ -3,6 +3,7 @@ package com.hbm.inventory.gui; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; @@ -23,7 +24,6 @@ import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.packet.ItemFolderPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -100,8 +100,11 @@ public class GUIScreenTemplateFolder extends GuiScreen { for(int i = 0; i < AssemblerRecipes.recipeList.size(); i++) { if(AssemblerRecipes.hidden.get(AssemblerRecipes.recipeList.get(i)) != null && - AssemblerRecipes.hidden.get(AssemblerRecipes.recipeList.get(i)).contains(player.getHeldItem().getItem())) - allStacks.add(new ItemStack(ModItems.assembly_template, 1, i)); + AssemblerRecipes.hidden.get(AssemblerRecipes.recipeList.get(i)).contains(player.getHeldItem().getItem())) { + + ComparableStack comp = AssemblerRecipes.recipeList.get(i); + allStacks.add(ItemAssemblyTemplate.writeType(new ItemStack(ModItems.assembly_template, 1, i), comp)); + } } isJournal = true; @@ -122,7 +125,7 @@ public class GUIScreenTemplateFolder extends GuiScreen { return; } - sub = sub.toLowerCase(); + sub = sub.toLowerCase(Locale.US); outer: for(ItemStack stack : allStacks) { @@ -132,7 +135,7 @@ public class GUIScreenTemplateFolder extends GuiScreen { if(o instanceof String) { String text = (String) o; - if(text.toLowerCase().contains(sub)) { + if(text.toLowerCase(Locale.US).contains(sub)) { stacks.add(stack); continue outer; } @@ -142,7 +145,7 @@ public class GUIScreenTemplateFolder extends GuiScreen { if(stack.getItem() == ModItems.fluid_identifier) { FluidType fluid = Fluids.fromID(stack.getItemDamage()); - if(I18nUtil.resolveKey(fluid.getUnlocalizedName()).toLowerCase().contains(sub)) { + if(fluid.getLocalizedName().contains(sub)) { stacks.add(stack); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIWatz.java b/src/main/java/com/hbm/inventory/gui/GUIWatz.java index 5153b1032..c22046d29 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIWatz.java +++ b/src/main/java/com/hbm/inventory/gui/GUIWatz.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerWatz; @@ -35,7 +37,7 @@ public class GUIWatz extends GuiInfoContainer { public void drawScreen(int x, int y, float interp) { super.drawScreen(x, y, interp); - this.drawCustomInfoStat(x, y, guiLeft + 13, guiTop + 100, 18, 18, x, y, new String[] { String.format("%,d", watz.heat) + " TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 13, guiTop + 100, 18, 18, x, y, new String[] { String.format(Locale.US, "%,d", watz.heat) + " TU" }); this.drawCustomInfoStat(x, y, guiLeft + 143, guiTop + 71, 16, 16, x, y, new String[] { watz.isLocked ? "Unlock pellet IO configuration" : "Lock pellet IO configuration" }); watz.tanks[0].renderTankInfo(this, x, y, guiLeft + 142, guiTop + 23, 6, 45); @@ -48,7 +50,7 @@ public class GUIWatz extends GuiInfoContainer { this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 93, 4210752); double scale = 1.25; - String flux = String.format("%,.1f", watz.fluxDisplay); + String flux = String.format(Locale.US, "%,.1f", watz.fluxDisplay); GL11.glScaled(1 / scale, 1 / scale, 1); this.fontRendererObj.drawString(flux, (int) (161 * scale - this.fontRendererObj.getStringWidth(flux)), (int)(107 * scale), 0x00ff00); GL11.glScaled(scale, scale, 1); diff --git a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java index 4c041eaea..51bc6d957 100644 --- a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java +++ b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java @@ -1,5 +1,6 @@ package com.hbm.inventory.gui; +import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -7,8 +8,11 @@ import java.util.List; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.RefStrings; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -18,6 +22,7 @@ import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; public abstract class GuiInfoContainer extends GuiContainer { @@ -45,6 +50,33 @@ public abstract class GuiInfoContainer extends GuiContainer { this.func_146283_a(Arrays.asList(text), x, y); } + /** Automatically grabs upgrade info out of the tile entity if it's a IUpgradeInfoProvider and crams the available info into a list for display. Automation, yeah! */ + public List getUpgradeInfo(TileEntity tile) { + List lines = new ArrayList(); + + if(tile instanceof IUpgradeInfoProvider) { + IUpgradeInfoProvider provider = (IUpgradeInfoProvider) tile; + + lines.add(I18nUtil.resolveKey("upgrade.gui.title")); + + for(UpgradeType type : UpgradeType.values()) { + if(provider.canProvideInfo(type, 0, false)) { + int maxLevel = provider.getMaxLevel(type); + switch(type) { + case SPEED: lines.add(I18nUtil.resolveKey("upgrade.gui.speed", maxLevel)); break; + case POWER: lines.add(I18nUtil.resolveKey("upgrade.gui.power", maxLevel)); break; + case EFFECT: lines.add(I18nUtil.resolveKey("upgrade.gui.effectiveness", maxLevel)); break; + case AFTERBURN: lines.add(I18nUtil.resolveKey("upgrade.gui.afterburner", maxLevel)); break; + case OVERDRIVE: lines.add(I18nUtil.resolveKey("upgrade.gui.overdrive", maxLevel)); break; + default: break; + } + } + } + } + + return lines; + } + @Deprecated public void drawCustomInfo(GuiInfoContainer gui, int mouseX, int mouseY, int x, int y, int width, int height, String[] text) { if(x <= mouseX && x + width > mouseX && y < mouseY && y + height >= mouseY) @@ -75,6 +107,10 @@ public abstract class GuiInfoContainer extends GuiContainer { return this.func_146978_c(slot.xDisplayPosition, slot.yDisplayPosition, 16, 16, x, y); } + protected boolean checkClick(int x, int y, int left, int top, int sizeX, int sizeY) { + return guiLeft + left <= x && guiLeft + left + sizeX > x && guiTop + top < y && guiTop + top + sizeY >= y; + } + /* Getters for external use of the GUI's rect rendering, such as NumberDisplay */ public int getGuiTop() { return this.guiTop; @@ -100,6 +136,19 @@ public abstract class GuiInfoContainer extends GuiContainer { return this.fontRendererObj; } + protected void drawItemStack(ItemStack stack, int x, int y, String label) { + GL11.glTranslatef(0.0F, 0.0F, 32.0F); + this.zLevel = 200.0F; + itemRender.zLevel = 200.0F; + FontRenderer font = null; + if(stack != null) font = stack.getItem().getFontRenderer(stack); + if(font == null) font = fontRendererObj; + itemRender.renderItemAndEffectIntoGUI(font, this.mc.getTextureManager(), stack, x, y); + itemRender.renderItemOverlayIntoGUI(font, this.mc.getTextureManager(), stack, x, y, label); + this.zLevel = 0.0F; + itemRender.zLevel = 0.0F; + } + protected void drawStackText(List lines, int x, int y, FontRenderer font) { if(!lines.isEmpty()) { diff --git a/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java b/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java new file mode 100644 index 000000000..316c6e9fb --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java @@ -0,0 +1,321 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; +import java.util.Random; + +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.network.TileEntityRadioTelex; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatAllowedCharacters; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +public class GuiScreenRadioTelex extends GuiScreen { + + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_telex.png"); + protected TileEntityRadioTelex telex; + protected int xSize = 256; + protected int ySize = 244; + protected int guiLeft; + protected int guiTop; + protected GuiTextField txFrequency; + protected GuiTextField rxFrequency; + protected boolean textFocus = false; + + protected String[] txBuffer; + protected int cursorPos = 0; + + public GuiScreenRadioTelex(TileEntityRadioTelex tile) { + this.telex = tile; + this.txBuffer = new String[tile.txBuffer.length]; + + for(int i = 0; i < txBuffer.length; i++) { + this.txBuffer[i] = tile.txBuffer[i]; + } + + for(int i = 4; i > 0; i--) { + if(!txBuffer[i].isEmpty()) { + cursorPos = i; + break; + } + } + } + + @Override + public void initGui() { + super.initGui(); + this.guiLeft = (this.width - this.xSize) / 2; + this.guiTop = (this.height - this.ySize) / 2; + + Keyboard.enableRepeatEvents(true); + + this.txFrequency = new GuiTextField(this.fontRendererObj, guiLeft + 29, guiTop + 110, 90, 14); + this.txFrequency.setTextColor(0x00ff00); + this.txFrequency.setDisabledTextColour(0x00ff00); + this.txFrequency.setEnableBackgroundDrawing(false); + this.txFrequency.setMaxStringLength(10); + this.txFrequency.setText(telex.txChannel == null ? "" : telex.txChannel); + + this.rxFrequency = new GuiTextField(this.fontRendererObj, guiLeft + 29, guiTop + 224, 90, 14); + this.rxFrequency.setTextColor(0x00ff00); + this.rxFrequency.setDisabledTextColour(0x00ff00); + this.rxFrequency.setEnableBackgroundDrawing(false); + this.rxFrequency.setMaxStringLength(10); + this.rxFrequency.setText(telex.rxChannel == null ? "" : telex.rxChannel); + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + this.drawDefaultBackground(); + this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + GL11.glDisable(GL11.GL_LIGHTING); + this.drawGuiContainerForegroundLayer(mouseX, mouseY); + GL11.glEnable(GL11.GL_LIGHTING); + } + + private void drawGuiContainerForegroundLayer(int x, int y) { + + if(checkClick(x, y, 7, 85, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GOLD + "BELL", "Plays a bell when this character is received"}), x, y); + if(checkClick(x, y, 27, 85, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GOLD + "PRINT", "Forces recipient to print message after transmission ends"}), x, y); + if(checkClick(x, y, 47, 85, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GOLD + "CLEAR SCREEN", "Wipes message buffer when this character is received"}), x, y); + if(checkClick(x, y, 67, 85, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GOLD + "FORMAT", "Inserts format character for message formatting"}), x, y); + if(checkClick(x, y, 87, 85, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GOLD + "PAUSE", "Pauses message transmission for one second"}), x, y); + + if(checkClick(x, y, 127, 105, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GREEN + "SAVE ID"}), x, y); + if(checkClick(x, y, 147, 105, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.YELLOW + "SEND MESSAGE"}), x, y); + if(checkClick(x, y, 167, 105, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.RED + "DELETE MESSAGE BUFFER"}), x, y); + + if(checkClick(x, y, 127, 219, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GREEN + "SAVE ID"}), x, y); + if(checkClick(x, y, 147, 219, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.AQUA + "PRINT MESSAGE"}), x, y); + if(checkClick(x, y, 167, 219, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.RED + "CLEAR SCREEN"}), x, y); + } + + private void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + this.txFrequency.drawTextBox(); + this.rxFrequency.drawTextBox(); + + for(int line = 0; line < 5; line++) { + String text = txBuffer[line]; + int y = 11 + 14 * line; + + String format = EnumChatFormatting.RESET + ""; + + for(int index = 0; index < text.length(); index++) { + int x = 11 + 7 * index; + char c = text.charAt(index); + x += (7 - this.fontRendererObj.getCharWidth(c)) / 2; + if(c == '§' && text.length() > index + 1) { + format = "\u00a7" + text.charAt(index + 1); + x -= 3; + } + String glyph = format + c; + if(c == '\u0007') glyph = EnumChatFormatting.RED + "B"; + if(c == '\u000c') glyph = EnumChatFormatting.RED + "P"; + if(c == '\u007f') glyph = EnumChatFormatting.RED + "<"; + if(c == '\u0016') glyph = EnumChatFormatting.RED + "W"; + this.fontRendererObj.drawString(glyph, guiLeft + x, guiTop + y, 0x00ff00); + } + + if(System.currentTimeMillis() % 1000 < 500 && this.textFocus) { + int x = Math.max(11 + 7 * (text.length() - 1) + 7, 11); + if(this.cursorPos == line) { + this.fontRendererObj.drawString("|", guiLeft + x, guiTop + y, 0x00ff00); + } + } + } + + for(int line = 0; line < 5; line++) { + String text = telex.rxBuffer[line]; + int y = 145 + 14 * line; + + String format = EnumChatFormatting.RESET + ""; + + int x = 11; + + for(int index = 0; index < text.length(); index++) { + + char c = text.charAt(index); + x += (7 - this.fontRendererObj.getCharWidth(c)) / 2; + if(c == '§' && text.length() > index + 1) { + format = "\u00a7" + text.charAt(index + 1); + c = ' '; + } else if(c == '§') { + c = ' '; + } else if(index > 0 && text.charAt(index - 1) == '§') { + c = ' '; + x -= 14; + } + String glyph = format + c; + this.fontRendererObj.drawString(glyph, guiLeft + x, guiTop + y, 0x00ff00); + x += 7; + } + } + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glLineWidth(3F); + Random rand = new Random(telex.sendingChar); + Tessellator tess = Tessellator.instance; + tess.startDrawing(GL11.GL_LINES); + tess.setColorOpaque_I(0x00ff00); + double offset = 0; + for(int i = 0; i < 48; i++) { + tess.addVertex(guiLeft + 199 + i, guiTop + 93.5 + offset, this.zLevel + 10); + if(telex.sendingChar != ' ' && i > 4 && i < 43) offset = rand.nextGaussian() * 7; else offset = 0; + offset = MathHelper.clamp_double(offset, -7D, 7D); + tess.addVertex(guiLeft + 199 + i + 1, guiTop + 93.5 + offset, this.zLevel + 10); + } + tess.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + this.txFrequency.mouseClicked(x, y, i); + this.rxFrequency.mouseClicked(x, y, i); + + if(guiLeft + 7 <= x && guiLeft + 7 + 242 > x && guiTop + 7 < y && guiTop + 7 + 74 >= y) { + this.textFocus = true; + } else { + this.textFocus = false; + } + + char character = '\0'; + String cmd = null; + + /* special characters */ + // BEL + if(checkClick(x, y, 7, 85, 18, 18)) character = '\u0007'; // bell + // PRT + if(checkClick(x, y, 27, 85, 18, 18)) character = '\u000c'; // form feed + // CLS + if(checkClick(x, y, 47, 85, 18, 18)) character = '\u007f'; // delete + // FMT + if(checkClick(x, y, 67, 85, 18, 18)) character = '§'; // minecraft formatting character + // PSE + if(checkClick(x, y, 87, 85, 18, 18)) character = '\u0016'; // synchronous idle + + // SVE + if(checkClick(x, y, 127, 105, 18, 18) || checkClick(x, y, 127, 219, 18, 18)) cmd = "sve"; // save channel + // SND + if(checkClick(x, y, 147, 105, 18, 18)) cmd = "snd"; // send message in TX buffer + // DEL + if(checkClick(x, y, 167, 105, 18, 18)) { // delete message in TX buffer + cmd = "rxdel"; + for(int j = 0; j < 5; j++) this.txBuffer[j] = ""; + NBTTagCompound data = new NBTTagCompound(); + for(int j = 0; j < 5; j++) data.setString("tx" + j, this.txBuffer[j]); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, telex.xCoord, telex.yCoord, telex.zCoord)); + } + // PRT + if(checkClick(x, y, 147, 219, 18, 18)) cmd = "rxprt"; // print message in RX buffer + // CLS + if(checkClick(x, y, 167, 219, 18, 18)) cmd = "rxcls"; // delete message in RX buffer + + if(cmd != null) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setString("cmd", cmd); + + if("snd".equals(cmd)) { + for(int j = 0; j < 5; j++) data.setString("tx" + j, this.txBuffer[j]); + } + + if("sve".equals(cmd)) { + data.setString("txChan", this.txFrequency.getText()); + data.setString("rxChan", this.rxFrequency.getText()); + } + + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, telex.xCoord, telex.yCoord, telex.zCoord)); + } + + if(character != '\0') { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + setTextFocus(); + submitChar(character); + } + } + + protected boolean checkClick(int x, int y, int left, int top, int sizeX, int sizeY) { + return guiLeft + left <= x && guiLeft + left + sizeX > x && guiTop + top < y && guiTop + top + sizeY >= y; + } + + protected void setTextFocus() { + this.textFocus = true; + this.txFrequency.setFocused(false); + this.rxFrequency.setFocused(false); + } + + @Override + protected void keyTyped(char c, int i) { + + if(this.txFrequency.textboxKeyTyped(c, i)) return; + if(this.rxFrequency.textboxKeyTyped(c, i)) return; + + if(this.textFocus) { + + if(i == 1) { + this.textFocus = false; + return; + } + + if(i == Keyboard.KEY_UP) this.cursorPos--; + if(i == Keyboard.KEY_DOWN) this.cursorPos++; + + this.cursorPos = MathHelper.clamp_int(cursorPos, 0, 4); + + if(ChatAllowedCharacters.isAllowedCharacter(c)) { + submitChar(c); + return; + } + + if(i == Keyboard.KEY_BACK && this.txBuffer[cursorPos].length() > 0) { + this.txBuffer[cursorPos] = this.txBuffer[cursorPos].substring(0, this.txBuffer[cursorPos].length() - 1); + } + } + + if(i == 1 || i == this.mc.gameSettings.keyBindInventory.getKeyCode()) { + this.mc.thePlayer.closeScreen(); + this.mc.setIngameFocus(); + } + } + + protected void submitChar(char c) { + String line = this.txBuffer[cursorPos]; + + if(line.length() < TileEntityRadioTelex.lineWidth) { + this.txBuffer[cursorPos] = line + c; + } + } + + @Override + public void onGuiClosed() { + Keyboard.enableRepeatEvents(false); + NBTTagCompound data = new NBTTagCompound(); + for(int j = 0; j < 5; j++) data.setString("tx" + j, this.txBuffer[j]); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, telex.xCoord, telex.yCoord, telex.zCoord)); + } + + @Override + public boolean doesGuiPauseGame() { + return false; + } +} diff --git a/src/main/java/com/hbm/inventory/material/MatDistribution.java b/src/main/java/com/hbm/inventory/material/MatDistribution.java index 71116ec6c..dd55dc119 100644 --- a/src/main/java/com/hbm/inventory/material/MatDistribution.java +++ b/src/main/java/com/hbm/inventory/material/MatDistribution.java @@ -22,6 +22,7 @@ import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.util.Compat; import net.minecraft.block.Block; @@ -44,22 +45,30 @@ public class MatDistribution extends SerializableRecipe { registerEntry(Items.minecart, MAT_IRON, INGOT.q(5)); //castables - registerEntry(ModItems.blade_titanium, MAT_TITANIUM, INGOT.q(2)); - registerEntry(ModItems.blade_tungsten, MAT_TUNGSTEN, INGOT.q(2)); - registerEntry(ModItems.blades_steel, MAT_STEEL, INGOT.q(4)); - registerEntry(ModItems.blades_titanium, MAT_TITANIUM, INGOT.q(4)); - registerEntry(ModItems.blades_advanced_alloy, MAT_ALLOY, INGOT.q(4)); - registerEntry(ModItems.stamp_stone_flat, MAT_STONE, INGOT.q(3)); - registerEntry(ModItems.stamp_iron_flat, MAT_IRON, INGOT.q(3)); - registerEntry(ModItems.stamp_steel_flat, MAT_STEEL, INGOT.q(3)); - registerEntry(ModItems.stamp_titanium_flat, MAT_TITANIUM, INGOT.q(3)); - registerEntry(ModItems.stamp_obsidian_flat, MAT_OBSIDIAN, INGOT.q(3)); - registerEntry(ModItems.hull_small_steel, MAT_STEEL, INGOT.q(2)); - registerEntry(ModItems.hull_small_aluminium, MAT_ALUMINIUM, INGOT.q(2)); - registerEntry(ModItems.hull_big_steel, MAT_STEEL, INGOT.q(6)); - registerEntry(ModItems.hull_big_aluminium, MAT_ALUMINIUM, INGOT.q(6)); - registerEntry(ModItems.hull_big_titanium, MAT_TITANIUM, INGOT.q(6)); - registerEntry(ModItems.pipes_steel, MAT_STEEL, BLOCK.q(3)); + registerEntry(ModItems.blade_titanium, MAT_TITANIUM, INGOT.q(2)); + registerEntry(ModItems.blade_tungsten, MAT_TUNGSTEN, INGOT.q(2)); + registerEntry(ModItems.blades_steel, MAT_STEEL, INGOT.q(4)); + registerEntry(ModItems.blades_titanium, MAT_TITANIUM, INGOT.q(4)); + registerEntry(ModItems.blades_advanced_alloy, MAT_ALLOY, INGOT.q(4)); + registerEntry(ModItems.stamp_stone_flat, MAT_STONE, INGOT.q(3)); + registerEntry(ModItems.stamp_iron_flat, MAT_IRON, INGOT.q(3)); + registerEntry(ModItems.stamp_steel_flat, MAT_STEEL, INGOT.q(3)); + registerEntry(ModItems.stamp_titanium_flat, MAT_TITANIUM, INGOT.q(3)); + registerEntry(ModItems.stamp_obsidian_flat, MAT_OBSIDIAN, INGOT.q(3)); + registerEntry(ModItems.hull_small_steel, MAT_STEEL, INGOT.q(2)); + registerEntry(ModItems.hull_small_aluminium, MAT_ALUMINIUM, INGOT.q(2)); + registerEntry(ModItems.hull_big_steel, MAT_STEEL, INGOT.q(6)); + registerEntry(ModItems.hull_big_aluminium, MAT_ALUMINIUM, INGOT.q(6)); + registerEntry(ModItems.hull_big_titanium, MAT_TITANIUM, INGOT.q(6)); + registerEntry(ModItems.pipes_steel, MAT_STEEL, BLOCK.q(3)); + registerEntry(ModItems.wire_aluminium, MAT_ALUMINIUM, WIRE.q(1)); + registerEntry(ModItems.wire_copper, MAT_COPPER, WIRE.q(1)); + registerEntry(ModItems.wire_red_copper, MAT_MINGRADE, WIRE.q(1)); + registerEntry(ModItems.wire_tungsten, MAT_TUNGSTEN, WIRE.q(1)); + registerEntry(ModItems.wire_gold, MAT_GOLD, WIRE.q(1)); + registerEntry(ModItems.wire_advanced_alloy, MAT_ALLOY, WIRE.q(1)); + registerEntry(ModItems.wire_magnetized_tungsten, MAT_MAGTUNG, WIRE.q(1)); + registerEntry(ModItems.wire_schrabidium, MAT_SCHRABIDIUM, WIRE.q(1)); //actual ores if(!Compat.isModLoaded(Compat.MOD_GT6)) { @@ -69,7 +78,7 @@ public class MatDistribution extends SerializableRecipe { registerOre(OreDictManager.AL.ore(), MAT_ALUMINIUM, INGOT.q(2), MAT_STONE, QUART.q(1)); } - registerOre(OreDictManager.COAL.ore(), MAT_COAL, GEM.q(4), MAT_STONE, QUART.q(1)); + registerOre(OreDictManager.COAL.ore(), MAT_CARBON, GEM.q(3), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.GOLD.ore(), MAT_GOLD, INGOT.q(2), MAT_LEAD, NUGGET.q(3), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.U.ore(), MAT_URANIUM, INGOT.q(2), MAT_LEAD, NUGGET.q(3), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.TH232.ore(), MAT_THORIUM, INGOT.q(2), MAT_URANIUM, NUGGET.q(3), MAT_STONE, QUART.q(1)); @@ -79,11 +88,16 @@ public class MatDistribution extends SerializableRecipe { registerOre(OreDictManager.CO.ore(), MAT_COBALT, INGOT.q(1), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.REDSTONE.ore(), MAT_REDSTONE, INGOT.q(4), MAT_STONE, QUART.q(1)); - registerOre(OreDictManager.HEMATITE.ore(), MAT_HEMATITE, INGOT.q(4)); - registerOre(OreDictManager.MALACHITE.ore(), MAT_MALACHITE, INGOT.q(4)); + registerOre(OreDictManager.HEMATITE.ore(), MAT_HEMATITE, INGOT.q(1)); + registerOre(OreDictManager.MALACHITE.ore(), MAT_MALACHITE, INGOT.q(1)); registerEntry(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.LIMESTONE), MAT_FLUX, DUST.q(10)); registerEntry(ModItems.powder_flux, MAT_FLUX, DUST.q(1)); + registerEntry(new ItemStack(Items.coal, 1, 1), MAT_CARBON, NUGGET.q(3)); + + registerEntry(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.WOOD), MAT_CARBON, NUGGET.q(1)); + registerEntry(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.COAL), MAT_CARBON, NUGGET.q(2)); + registerEntry(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.MISC), MAT_CARBON, NUGGET.q(1)); } public static void registerEntry(Object key, Object... matDef) { diff --git a/src/main/java/com/hbm/inventory/material/MaterialShapes.java b/src/main/java/com/hbm/inventory/material/MaterialShapes.java index a93ef368a..df72f9da9 100644 --- a/src/main/java/com/hbm/inventory/material/MaterialShapes.java +++ b/src/main/java/com/hbm/inventory/material/MaterialShapes.java @@ -18,10 +18,13 @@ public class MaterialShapes { public static final MaterialShapes GEM = new MaterialShapes(INGOT.quantity, "gem"); public static final MaterialShapes CRYSTAL = new MaterialShapes(INGOT.quantity, "crystal"); public static final MaterialShapes DUST = new MaterialShapes(INGOT.quantity, "dust"); + public static final MaterialShapes DENSEWIRE = new MaterialShapes(INGOT.quantity, "wireDense"); public static final MaterialShapes PLATE = new MaterialShapes(INGOT.quantity, "plate"); public static final MaterialShapes CASTPLATE = new MaterialShapes(INGOT.quantity * 3, "plateTriple"); + public static final MaterialShapes WELDEDPLATE = new MaterialShapes(INGOT.quantity * 6, "plateSextuple"); public static final MaterialShapes QUART = new MaterialShapes(162); public static final MaterialShapes BLOCK = new MaterialShapes(INGOT.quantity * 9, "block"); + public static final MaterialShapes HEAVY_COMPONENT = new MaterialShapes(CASTPLATE.quantity * 256, "componentHeavy"); public static void registerCompatShapes() { diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index ffb7d3516..9526c475f 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -54,8 +54,8 @@ public class Mats { public static final NTMMaterial MAT_PETCOKE = make( 1411, PETCOKE) .setConversion(MAT_CARBON, 4, 3); public static final NTMMaterial MAT_LIGCOKE = make( 1412, LIGCOKE) .setConversion(MAT_CARBON, 4, 3); public static final NTMMaterial MAT_GRAPHITE = make( 1420, GRAPHITE) .setConversion(MAT_CARBON, 1, 1); - public static final NTMMaterial MAT_IRON = makeSmeltable(2600, IRON, 0xFFFFFF, 0x353535, 0xFFA259).setShapes(CASTPLATE); - public static final NTMMaterial MAT_GOLD = makeSmeltable(7900, GOLD, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(CASTPLATE); + public static final NTMMaterial MAT_IRON = makeSmeltable(2600, IRON, 0xFFFFFF, 0x353535, 0xFFA259).setShapes(CASTPLATE, WELDEDPLATE); + public static final NTMMaterial MAT_GOLD = makeSmeltable(7900, GOLD, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(DENSEWIRE, CASTPLATE); public static final NTMMaterial MAT_REDSTONE = makeSmeltable(_VS + 01, REDSTONE, 0xE3260C, 0x700E06, 0xFF1000); public static final NTMMaterial MAT_OBSIDIAN = makeSmeltable(_VS + 02, df("Obsidian"), 0x3D234D); public static final NTMMaterial MAT_HEMATITE = makeAdditive( 2601, HEMATITE, 0xDFB7AE, 0x5F372E, 0x6E463D); @@ -87,40 +87,45 @@ public class Mats { public static final NTMMaterial MAT_CO60 = makeSmeltable(2760, CO60, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, BILLET, INGOT, DUST); public static final NTMMaterial MAT_AU198 = makeSmeltable(7998, AU198, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(NUGGET, BILLET, INGOT, DUST); public static final NTMMaterial MAT_PB209 = makeSmeltable(8209, PB209, 0x7B535D).setShapes(NUGGET, BILLET, INGOT, DUST); - public static final NTMMaterial MAT_SCHRABIDIUM = makeSmeltable(12626, SA326, 0x32FFFF, 0x005C5C, 0x32FFFF).setShapes(NUGGET, WIRE, BILLET, INGOT, DUST, PLATE, CASTPLATE, BLOCK); + public static final NTMMaterial MAT_SCHRABIDIUM = makeSmeltable(12626, SA326, 0x32FFFF, 0x005C5C, 0x32FFFF).setShapes(NUGGET, WIRE, BILLET, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK); public static final NTMMaterial MAT_SOLINIUM = makeSmeltable(12627, SA327, 0xA2E6E0, 0x00433D, 0x72B6B0).setShapes(NUGGET, BILLET, INGOT, BLOCK); - public static final NTMMaterial MAT_SCHRABIDATE = makeSmeltable(12600, SBD, 0x77C0D7, 0x39005E, 0x6589B4).setShapes(INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_SCHRABIDATE = makeSmeltable(12600, SBD, 0x77C0D7, 0x39005E, 0x6589B4).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); public static final NTMMaterial MAT_SCHRARANIUM = makeSmeltable(12601, SRN, 0x2B3227, 0x2B3227, 0x24AFAC).setShapes(INGOT, BLOCK); public static final NTMMaterial MAT_GHIORSIUM = makeSmeltable(12836, GH336, 0xF4EFE1, 0x2A3306, 0xC6C6A1).setShapes(NUGGET, BILLET, INGOT, BLOCK); //Base metals - public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setShapes(NUGGET, INGOT, DUST, PLATE, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, df("Bismuth"), 0xB200FF).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, INGOT, DUST, DENSEWIRE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setShapes(NUGGET, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, BI, 0xB200FF).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_ARSENIC = makeSmeltable(3300, AS, 0x6CBABA, 0x242525, 0x558080).setShapes(NUGGET, INGOT); public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(7300, TA, 0xFFFFFF, 0x1D1D36, 0xA89B74).setShapes(NUGGET, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_NEODYMIUM = makeSmeltable(6000, ND, 0xE6E6B6, 0x1C1C00, 0x8F8F5F).setShapes(NUGGET, DUSTTINY, INGOT, DUST, DENSEWIRE, BLOCK); public static final NTMMaterial MAT_NIOBIUM = makeSmeltable(4100, NB, 0xB76EC9, 0x2F2D42, 0xD576B1).setShapes(NUGGET, DUSTTINY, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_BERYLLIUM = makeSmeltable(400, BE, 0xB2B2A6, 0x0F0F03, 0xAE9572).setShapes(NUGGET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_COBALT = makeSmeltable(2700, CO, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_BORON = makeSmeltable(500, B, 0xBDC8D2, 0x29343E, 0xAD72AE).setShapes(DUSTTINY, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_ZIRCONIUM = makeSmeltable(4000, ZR, 0xE3DCBE, 0x3E3719, 0xADA688).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, CASTPLATE, WELDEDPLATE, BLOCK); + public static final NTMMaterial MAT_LITHIUM = makeSmeltable(300, LI, 0xFFFFFF, 0x818181, 0xD6D6D6).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_CADMIUM = makeSmeltable(4800, CD, 0xFFFADE, 0x350000, 0xA85600).setShapes(INGOT, DUST); + public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setShapes(NUGGET, INGOT, CASTPLATE, WELDEDPLATE); //Alloys - public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, INGOT, DUST, PLATE, CASTPLATE, BLOCK); + public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setShapes(WIRE, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK); + public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x4DA3AF, 0x00000C, 0x4DA3AF).setShapes(INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setShapes(INGOT); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE); - public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE); - public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT); + public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT); + public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); + public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK); + public static final NTMMaterial MAT_DNT = makeSmeltable(_AS + 15, DNT, 0x7582B9, 0x16000E, 0x455289).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST); public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK); public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).setShapes(INGOT); diff --git a/src/main/java/com/hbm/inventory/material/NTMMaterial.java b/src/main/java/com/hbm/inventory/material/NTMMaterial.java index 35940e7b2..0f953871b 100644 --- a/src/main/java/com/hbm/inventory/material/NTMMaterial.java +++ b/src/main/java/com/hbm/inventory/material/NTMMaterial.java @@ -1,6 +1,7 @@ package com.hbm.inventory.material; import java.util.HashSet; +import java.util.Locale; import java.util.Set; import com.hbm.inventory.OreDictManager.DictFrame; @@ -45,7 +46,7 @@ public class NTMMaterial { } public String getUnlocalizedName() { - return "hbmmat." + this.names[0].toLowerCase(); + return "hbmmat." + this.names[0].toLowerCase(Locale.US); } public NTMMaterial setConversion(NTMMaterial mat, int in, int out) { diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java new file mode 100644 index 000000000..180c6981d --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -0,0 +1,248 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import static com.hbm.inventory.OreDictManager.*; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; + +import net.minecraft.item.ItemStack; + +public class ArcWelderRecipes extends SerializableRecipe { + + public static List recipes = new ArrayList(); + + @Override + public void registerDefaults() { + + //Parts + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 200L, + new OreDictStack(IRON.plate(), 2), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 400L, + new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); + + //Dense Wires + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), 100, 10_000L, + new ComparableStack(ModItems.wire_advanced_alloy, 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_GOLD.id), 100, 10_000L, + new ComparableStack(ModItems.wire_gold, 8))); + + //Circuits + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_copper), 100, 1_000L, new FluidStack(Fluids.GAS, 100), + new ComparableStack(ModItems.circuit_aluminium, 1), new OreDictStack(NETHERQUARTZ.dust()), new ComparableStack(ModItems.wire_copper, 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_red_copper), 100, 2_500L, new FluidStack(Fluids.PETROLEUM, 100), + new ComparableStack(ModItems.circuit_copper, 1), new ComparableStack(ModItems.plate_polymer), new ComparableStack(ModItems.wire_red_copper, 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_gold), 100, 10_000L, new FluidStack(Fluids.UNSATURATEDS, 250), + new ComparableStack(ModItems.circuit_red_copper, 1), new OreDictStack(ANY_PLASTIC.ingot()), new ComparableStack(ModItems.wire_gold, 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_schrabidium), 100, 50_000L, new FluidStack(Fluids.SOURGAS, 250), + new ComparableStack(ModItems.circuit_gold, 1), new OreDictStack(DESH.ingot()), new ComparableStack(ModItems.wire_schrabidium, 8))); + + //earlygame welded parts + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_IRON.id), 100, 100L, + new OreDictStack(IRON.plateCast(), 2))); + //high-demand mid-game parts + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_STEEL.id), 100, 500L, + new OreDictStack(STEEL.plateCast(), 2))); + //literally just the combination oven + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_COPPER.id), 200, 1_000L, + new OreDictStack(CU.plateCast(), 2))); + //mid-game, single combustion engine running on LPG + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_TITANIUM.id), 600, 50_000L, + new OreDictStack(TI.plateCast(), 2))); + //mid-game PWR + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_ZIRCONIUM.id), 600, 10_000L, + new OreDictStack(ZR.plateCast(), 2))); + //late-game fusion + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_TCALLOY.id), 1_200, 1_000_000L, new FluidStack(Fluids.OXYGEN, 1_000), + new OreDictStack(TCALLOY.plateCast(), 2))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_CDALLOY.id), 1_200, 1_000_000L, new FluidStack(Fluids.OXYGEN, 1_000), + new OreDictStack(CDALLOY.plateCast(), 2))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_TUNGSTEN.id), 1_200, 250_000L, new FluidStack(Fluids.OXYGEN, 1_000), + new OreDictStack(W.plateCast(), 2))); + //pre-DFC + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_OSMIRIDIUM.id), 6_000, 20_000_000L, new FluidStack(Fluids.REFORMGAS, 16_000), + new OreDictStack(OSMIRIDIUM.plateCast(), 2))); + + //Missile Parts + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.thruster_small), 60, 1_000L, new OreDictStack(STEEL.plate(), 4), new ComparableStack(ModItems.wire_aluminium, 4), new OreDictStack(CU.plate(), 4))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.thruster_medium), 100, 2_000L, new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.motor, 1), new OreDictStack(GRAPHITE.ingot(), 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.thruster_large), 200, 5_000L, new OreDictStack(DURA.ingot(), 12), new ComparableStack(ModItems.motor, 2), new OreDictStack(OreDictManager.getReflector(), 16))); + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_small), 60, 1_000L, new OreDictStack(Fluids.ETHANOL.getDict(1_000), 6), new OreDictStack(TI.plate(), 6), new OreDictStack(STEEL.plate(), 2))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_medium), 100, 2_000L, new OreDictStack(Fluids.KEROSENE.getDict(1_000), 8), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 4))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_large), 200, 5_000L, new OreDictStack(Fluids.KEROSENE.getDict(1_000), 12), new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 8))); + + //Missiles + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_generic), 100, 5_000L, new ComparableStack(ModItems.warhead_generic_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_incendiary), 100, 5_000L, new ComparableStack(ModItems.warhead_incendiary_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_cluster), 100, 5_000L, new ComparableStack(ModItems.warhead_cluster_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_buster), 100, 5_000L, new ComparableStack(ModItems.warhead_buster_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_decoy), 60, 2_500L, new OreDictStack(STEEL.ingot()), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_strong), 200, 10_000L, new ComparableStack(ModItems.warhead_generic_medium), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_incendiary_strong), 200, 10_000L, new ComparableStack(ModItems.warhead_incendiary_medium), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_cluster_strong), 200, 10_000L, new ComparableStack(ModItems.warhead_cluster_medium), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_buster_strong), 200, 10_000L, new ComparableStack(ModItems.warhead_buster_medium), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_emp_strong), 200, 10_000L, new ComparableStack(ModBlocks.emp_bomb, 3), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_burst), 300, 25_000L, new ComparableStack(ModItems.warhead_generic_large), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_inferno), 300, 25_000L, new ComparableStack(ModItems.warhead_incendiary_large), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_rain), 300, 25_000L, new ComparableStack(ModItems.warhead_cluster_large), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_drill), 300, 25_000L, new ComparableStack(ModItems.warhead_buster_large), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear), 600, 50_000L, new ComparableStack(ModItems.warhead_nuclear), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear_cluster), 600, 50_000L, new ComparableStack(ModItems.warhead_mirv), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_volcano), 600, 50_000L, new ComparableStack(ModItems.warhead_volcano), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_endo), 200, 10_000L, new ComparableStack(ModItems.warhead_thermo_endo), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_exo), 200, 10_000L, new ComparableStack(ModItems.warhead_thermo_exo), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(ArcWelderRecipe recipe : ArcWelderRecipes.recipes) { + + int size = recipe.ingredients.length + (recipe.fluid != null ? 1 : 0); + Object[] array = new Object[size]; + + for(int i = 0; i < recipe.ingredients.length; i++) { + array[i] = recipe.ingredients[i]; + } + + if(recipe.fluid != null) array[size - 1] = ItemFluidIcon.make(recipe.fluid); + + recipes.put(array, recipe.output); + } + + return recipes; + } + + public static ArcWelderRecipe getRecipe(ItemStack... inputs) { + + outer: + for(ArcWelderRecipe recipe : recipes) { + + List recipeList = new ArrayList(); + for(AStack ingredient : recipe.ingredients) recipeList.add(ingredient); + + for(int i = 0; i < inputs.length; i++) { + + ItemStack inputStack = inputs[i]; + + if(inputStack != null) { + + boolean hasMatch = false; + Iterator iterator = recipeList.iterator(); + + while(iterator.hasNext()) { + AStack recipeStack = iterator.next(); + + if(recipeStack.matchesRecipe(inputStack, true) && inputStack.stackSize >= recipeStack.stacksize) { + hasMatch = true; + recipeList.remove(recipeStack); + break; + } + } + + if(!hasMatch) { + continue outer; + } + } + } + + if(recipeList.isEmpty()) return recipe; + } + + return null; + } + + @Override + public String getFileName() { + return "hbmArcWelder.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + + AStack[] inputs = this.readAStackArray(obj.get("inputs").getAsJsonArray()); + FluidStack fluid = obj.has("fluid") ? this.readFluidStack(obj.get("fluid").getAsJsonArray()) : null; + ItemStack output = this.readItemStack(obj.get("output").getAsJsonArray()); + int duration = obj.get("duration").getAsInt(); + long consumption = obj.get("consumption").getAsLong(); + + recipes.add(new ArcWelderRecipe(output, duration, consumption, fluid, inputs)); + } + + @Override + public void writeRecipe(Object obj, JsonWriter writer) throws IOException { + ArcWelderRecipe recipe = (ArcWelderRecipe) obj; + + writer.name("inputs").beginArray(); + for(AStack aStack : recipe.ingredients) { + this.writeAStack(aStack, writer); + } + writer.endArray(); + + if(recipe.fluid != null) { + writer.name("fluid"); + this.writeFluidStack(recipe.fluid, writer); + } + + writer.name("output"); + this.writeItemStack(recipe.output, writer); + + writer.name("duration").value(recipe.duration); + writer.name("consumption").value(recipe.consumption); + } + + public static class ArcWelderRecipe { + + public AStack[] ingredients; + public FluidStack fluid; + public ItemStack output; + public int duration; + public long consumption; + + public ArcWelderRecipe(ItemStack output, int duration, long consumption, FluidStack fluid, AStack... ingredients) { + this.ingredients = ingredients; + this.fluid = fluid; + this.output = output; + this.duration = duration; + this.consumption = consumption; + } + + public ArcWelderRecipe(ItemStack output, int duration, long consumption, AStack... ingredients) { + this(output, duration, consumption, null, ingredients); + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 5464b4581..33b9a227b 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -12,7 +12,11 @@ import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.NTMMaterial; import com.hbm.items.ItemAmmoEnums; +import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemAssemblyTemplate; import com.hbm.items.machine.ItemDrillbit.EnumDrillType; @@ -141,6 +145,8 @@ public class AssemblerRecipes { */ private static void registerDefaults() { + boolean exp = GeneralConfig.enableExpensiveMode; + makeRecipe(new ComparableStack(ModItems.plate_iron, 2), new AStack[] {new OreDictStack(IRON.ingot(), 3), },30); makeRecipe(new ComparableStack(ModItems.plate_gold, 2), new AStack[] {new OreDictStack(GOLD.ingot(), 3), },30); makeRecipe(new ComparableStack(ModItems.plate_titanium, 2), new AStack[] {new OreDictStack(TI.ingot(), 3), },30); @@ -163,7 +169,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.wire_magnetized_tungsten, 6), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), },20); makeRecipe(new ComparableStack(ModItems.hazmat_cloth, 4), new AStack[] {new OreDictStack(PB.dust(), 4), new ComparableStack(Items.string, 8), },50); makeRecipe(new ComparableStack(ModItems.asbestos_cloth, 4), new AStack[] {new OreDictStack(ASBESTOS.ingot(), 2), new ComparableStack(Items.string, 6), new ComparableStack(Blocks.wool, 1), },50); - makeRecipe(new ComparableStack(ModItems.filter_coal, 1), new AStack[] {new OreDictStack(COAL.dust(), 4), new ComparableStack(Items.string, 6), new ComparableStack(Items.paper, 1), },50); + makeRecipe(new ComparableStack(ModItems.filter_coal, 1), new AStack[] {new OreDictStack(COAL.dust(), 4), new ComparableStack(Items.string, 2), new ComparableStack(Items.paper, 1), },50); makeRecipe(new ComparableStack(ModItems.centrifuge_element, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 4), new OreDictStack(TI.plate528(), 4), new ComparableStack(ModItems.motor, 1), }, 100); makeRecipe(new ComparableStack(ModItems.magnet_circular, 1), new AStack[] {new ComparableStack(ModBlocks.fusion_conductor, 5), new OreDictStack(STEEL.ingot(), 4), new OreDictStack(ALLOY.plate(), 6), },150); makeRecipe(new ComparableStack(ModItems.reactor_core, 1), new AStack[] {new OreDictStack(PB.ingot(), 8), new OreDictStack(BE.ingot(), 6), new OreDictStack(STEEL.plate(), 16), new OreDictStack(OreDictManager.getReflector(), 8), new OreDictStack(FIBER.ingot(), 2) },100); @@ -173,10 +179,10 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.entanglement_kit, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(DURA.ingot(), 4), new OreDictStack(CU.plate(), 24), new ComparableStack(ModBlocks.hadron_coil_gold, 4), new OreDictStack(Fluids.XENON.getDict(1_000))},200); makeRecipe(new ComparableStack(ModItems.dysfunctional_reactor, 1), new AStack[] {new OreDictStack(STEEL.plate(), 15), new OreDictStack(PB.ingot(), 5), new ComparableStack(ModItems.rod_quad_empty, 10), new OreDictStack("dyeBrown", 3), },200); makeRecipe(new ComparableStack(ModItems.missile_assembly, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 1), new ComparableStack(ModItems.hull_small_aluminium, 4), new OreDictStack(STEEL.ingot(), 2), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.wire_aluminium, 6), new ComparableStack(ModItems.canister_full, 3, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - makeRecipe(new ComparableStack(ModItems.missile_carrier, 1), new AStack[] {new ComparableStack(ModItems.fluid_barrel_full, 16, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_medium, 4), new ComparableStack(ModItems.thruster_large, 1), new ComparableStack(ModItems.hull_big_titanium, 6), new ComparableStack(ModItems.hull_big_steel, 2), new ComparableStack(ModItems.hull_small_aluminium, 12), new OreDictStack(TI.plate(), 24), new ComparableStack(ModItems.plate_polymer, 128), new ComparableStack(ModBlocks.det_cord, 8), new ComparableStack(ModItems.circuit_targeting_tier3, 12), new ComparableStack(ModItems.circuit_targeting_tier4, 3), },4800); - makeRecipe(new ComparableStack(ModItems.warhead_generic_small, 1), new AStack[] {new OreDictStack(TI.plate(), 5), new OreDictStack(STEEL.plate(), 3), new ComparableStack(Blocks.tnt, 2), },100); - makeRecipe(new ComparableStack(ModItems.warhead_generic_medium, 1), new AStack[] {new OreDictStack(TI.plate(), 8), new OreDictStack(STEEL.plate(), 5), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), },150); - makeRecipe(new ComparableStack(ModItems.warhead_generic_large, 1), new AStack[] {new OreDictStack(TI.plate(), 15), new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), },200); + makeRecipe(new ComparableStack(ModItems.missile_carrier, 1), new AStack[] {new ComparableStack(ModItems.fluid_barrel_full, 16, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_medium, 4), new ComparableStack(ModItems.thruster_large, 1), new ComparableStack(ModItems.hull_big_titanium, 6), new ComparableStack(ModItems.hull_big_steel, 2), new ComparableStack(ModItems.hull_small_aluminium, 12), new OreDictStack(TI.plate(), 24), new OreDictStack(ANY_RUBBER.ingot(), 128), new ComparableStack(ModBlocks.det_cord, 8), new ComparableStack(ModItems.circuit_targeting_tier3, 12), new ComparableStack(ModItems.circuit_targeting_tier4, 3), },4800); + makeRecipe(new ComparableStack(ModItems.warhead_generic_small, 1), new AStack[] {new OreDictStack(TI.plate(), 5), new OreDictStack(STEEL.plate(), 3), new ComparableStack(ModItems.ball_dynamite, 2), new ComparableStack(ModItems.circuit_targeting_tier2) },100); + makeRecipe(new ComparableStack(ModItems.warhead_generic_medium, 1), new AStack[] {new OreDictStack(TI.plate(), 8), new OreDictStack(STEEL.plate(), 5), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit_targeting_tier3) },150); + makeRecipe(new ComparableStack(ModItems.warhead_generic_large, 1), new AStack[] {new OreDictStack(TI.plate(), 15), new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new ComparableStack(ModItems.circuit_targeting_tier4) },200); makeRecipe(new ComparableStack(ModItems.warhead_incendiary_small, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_small, 1), new OreDictStack(P_RED.dust(), 4), },100); makeRecipe(new ComparableStack(ModItems.warhead_incendiary_medium, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new OreDictStack(P_RED.dust(), 8), },150); makeRecipe(new ComparableStack(ModItems.warhead_incendiary_large, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new OreDictStack(P_RED.dust(), 16), },200); @@ -186,17 +192,11 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.warhead_buster_small, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_small, 1), new ComparableStack(ModBlocks.det_cord, 8), },100); makeRecipe(new ComparableStack(ModItems.warhead_buster_medium, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new ComparableStack(ModBlocks.det_cord, 4), new ComparableStack(ModBlocks.det_charge, 4), },150); makeRecipe(new ComparableStack(ModItems.warhead_buster_large, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new ComparableStack(ModBlocks.det_charge, 8), },200); - makeRecipe(new ComparableStack(ModItems.warhead_nuclear, 1), new AStack[] {new ComparableStack(ModItems.boy_shielding, 1), new ComparableStack(ModItems.boy_target, 1), new ComparableStack(ModItems.boy_bullet, 1), new ComparableStack(ModItems.boy_propellant, 1), new ComparableStack(ModItems.wire_red_copper, 6), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 12), },300); - makeRecipe(new ComparableStack(ModItems.warhead_mirv, 1), new AStack[] {new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 12), new OreDictStack(PU239.ingot(), 1), new ComparableStack(ModItems.ball_tatb, 8), new OreDictStack(BE.ingot(), 4), new OreDictStack(LI.ingot(), 4), new ComparableStack(ModItems.cell_deuterium, 6), },500); + makeRecipe(new ComparableStack(ModItems.warhead_nuclear, 1), new AStack[] {new ComparableStack(ModItems.boy_shielding, 1), new ComparableStack(ModItems.boy_target, 1), new ComparableStack(ModItems.boy_bullet, 1), new ComparableStack(ModItems.boy_propellant, 1), new ComparableStack(ModItems.wire_red_copper, 6), new OreDictStack(TI.plate(), 24), new ComparableStack(ModItems.circuit_targeting_tier4, 1) },300); + makeRecipe(new ComparableStack(ModItems.warhead_mirv, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 12), new OreDictStack(PU239.ingot(), 1), new ComparableStack(ModItems.ball_tatb, 8), new OreDictStack(BE.ingot(), 4), new OreDictStack(LI.ingot(), 4), new ComparableStack(ModItems.cell_deuterium, 6), new ComparableStack(ModItems.circuit_targeting_tier4, 3) },500); makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit_tantalium, 5) }, 600); - makeRecipe(new ComparableStack(ModItems.warhead_thermo_endo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_endo, 2), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 6), },300); - makeRecipe(new ComparableStack(ModItems.warhead_thermo_exo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_exo, 2), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 6), },300); - makeRecipe(new ComparableStack(ModItems.fuel_tank_small, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 6, Fluids.ETHANOL.getID()), new OreDictStack(TI.plate(), 6), new OreDictStack(STEEL.plate(), 2), },100); - makeRecipe(new ComparableStack(ModItems.fuel_tank_medium, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 8, Fluids.KEROSENE.getID()), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 4), },150); - makeRecipe(new ComparableStack(ModItems.fuel_tank_large, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 12, Fluids.KEROSENE.getID()), new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 8), },200); - makeRecipe(new ComparableStack(ModItems.thruster_small, 1), new AStack[] {new OreDictStack(STEEL.plate(), 4), new OreDictStack(W.ingot(), 4), new ComparableStack(ModItems.wire_aluminium, 4), },100); - makeRecipe(new ComparableStack(ModItems.thruster_medium, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(W.ingot(), 8), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.wire_copper, 16), },150); - makeRecipe(new ComparableStack(ModItems.thruster_large, 1), new AStack[] {new OreDictStack(DURA.ingot(), 16), new OreDictStack(W.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.wire_gold, 32), new ComparableStack(ModItems.circuit_red_copper, 1), },200); + makeRecipe(new ComparableStack(ModItems.warhead_thermo_endo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_endo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300); + makeRecipe(new ComparableStack(ModItems.warhead_thermo_exo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_exo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300); makeRecipe(new ComparableStack(ModItems.thruster_nuclear, 1), new AStack[] {new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new ComparableStack(ModItems.pipes_steel), new ComparableStack(ModItems.circuit_gold, 1) },600); makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.photo_panel, 24), new ComparableStack(ModItems.board_copper, 12), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },500); makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.hull_small_steel, 3), new ComparableStack(ModItems.plate_desh, 2), new ComparableStack(ModItems.circuit_gold, 2), new OreDictStack(RUBBER.ingot(), 12), new OreDictStack(REDSTONE.dust(), 6), new ComparableStack(Items.diamond, 1), new ComparableStack(Blocks.glass_pane, 6), },400); @@ -221,7 +221,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.pellet_cluster, 1), new AStack[] {new OreDictStack(STEEL.plate(), 4), new ComparableStack(Blocks.tnt, 1), }, 50); makeRecipe(new ComparableStack(ModItems.pellet_buckshot, 1), new AStack[] {new OreDictStack(PB.nugget(), 6), }, 50); makeRecipe(new ComparableStack(ModItems.australium_iii, 1), new AStack[] {new ComparableStack(ModItems.nugget_australium, 6), new OreDictStack(STEEL.ingot(), 1), new OreDictStack(STEEL.plate(), 6), new OreDictStack(CU.plate(), 2), new ComparableStack(ModItems.wire_copper, 6), },150); - makeRecipe(new ComparableStack(ModItems.magnetron, 1), new AStack[] {new OreDictStack(ALLOY.ingot(), 1), new OreDictStack(ALLOY.plate(), 2), new ComparableStack(ModItems.wire_tungsten, 1), new ComparableStack(ModItems.coil_tungsten, 1), },100); + makeRecipe(new ComparableStack(ModItems.magnetron, 1), new AStack[] {new OreDictStack(ALLOY.plate(), 3), new ComparableStack(ModItems.wire_tungsten, 1), new ComparableStack(ModItems.coil_tungsten, 1), },100); makeRecipe(new ComparableStack(ModItems.pellet_schrabidium, 1), new AStack[] {new OreDictStack(SA326.ingot(), 5), new OreDictStack(IRON.plate(), 2), }, 200); makeRecipe(new ComparableStack(ModItems.pellet_hes, 1), new AStack[] {new ComparableStack(ModItems.ingot_hes, 5), new OreDictStack(IRON.plate(), 2), }, 200); makeRecipe(new ComparableStack(ModItems.pellet_mes, 1), new AStack[] {new ComparableStack(ModItems.ingot_schrabidium_fuel, 5), new OreDictStack(IRON.plate(), 2), }, 200); @@ -253,12 +253,12 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_3, 1), new AStack[] {new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_afterburn_1, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new ComparableStack(ModItems.crystal_lithium, 16), new OreDictStack(KEY_CIRCUIT_BISMUTH), }, 500); makeRecipe(new ComparableStack(ModItems.redcoil_capacitor, 1), new AStack[] {new OreDictStack(GOLD.plate(), 3), new ComparableStack(ModItems.fuse, 1), new ComparableStack(ModItems.wire_advanced_alloy, 4), new ComparableStack(ModItems.coil_advanced_alloy, 6), new ComparableStack(Blocks.redstone_block, 2), },200); makeRecipe(new ComparableStack(ModItems.titanium_filter, 1), new AStack[] {new OreDictStack(PB.plate(), 3), new ComparableStack(ModItems.fuse, 1), new ComparableStack(ModItems.wire_tungsten, 4), new OreDictStack(TI.plate(), 6), new OreDictStack(U238.ingot(), 2), },200); - makeRecipe(new ComparableStack(ModItems.part_lithium, 1), new AStack[] {new ComparableStack(ModItems.plate_polymer, 1), new OreDictStack(LI.dust(), 1), },50); - makeRecipe(new ComparableStack(ModItems.part_beryllium, 1), new AStack[] {new ComparableStack(ModItems.plate_polymer, 1), new OreDictStack(BE.dust(), 1), },50); - makeRecipe(new ComparableStack(ModItems.part_carbon, 1), new AStack[] {new ComparableStack(ModItems.plate_polymer, 1), new OreDictStack(COAL.dust(), 1), },50); - makeRecipe(new ComparableStack(ModItems.part_copper, 1), new AStack[] {new ComparableStack(ModItems.plate_polymer, 1), new OreDictStack(CU.dust(), 1), },50); - makeRecipe(new ComparableStack(ModItems.part_plutonium, 1), new AStack[] {new ComparableStack(ModItems.plate_polymer, 1), new ComparableStack(ModItems.powder_plutonium, 1), },50); - makeRecipe(new ComparableStack(ModItems.thermo_element, 1), new AStack[] {new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.wire_red_copper, 2), new ComparableStack(ModItems.wire_aluminium, 2), new OreDictStack(NETHERQUARTZ.dust(), 2), },150); + makeRecipe(new ComparableStack(ModItems.part_lithium, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(LI.dust(), 1), },50); + makeRecipe(new ComparableStack(ModItems.part_beryllium, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(BE.dust(), 1), },50); + makeRecipe(new ComparableStack(ModItems.part_carbon, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(COAL.dust(), 1), },50); + makeRecipe(new ComparableStack(ModItems.part_copper, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(CU.dust(), 1), },50); + makeRecipe(new ComparableStack(ModItems.part_plutonium, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new ComparableStack(ModItems.powder_plutonium, 1), },50); + makeRecipe(new ComparableStack(ModItems.thermo_element, 1), new AStack[] {new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.wire_red_copper, 2), new OreDictStack(NETHERQUARTZ.dust(), 2), }, 60); makeRecipe(new ComparableStack(ModItems.plate_dalekanium, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), },50); makeRecipe(new ComparableStack(ModBlocks.block_meteor, 1), new AStack[] {new ComparableStack(ModItems.fragment_meteorite, 100), },500); makeRecipe(new ComparableStack(ModBlocks.cmb_brick, 8), new AStack[] {new OreDictStack(CMB.ingot(), 1), new OreDictStack(CMB.plate(), 8), },100); @@ -268,38 +268,37 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.circuit_copper, 1), }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_gascent, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 4), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(DESH.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.coil_tungsten, 4), new ComparableStack(ModItems.circuit_red_copper, 1) }, 300); makeRecipe(new ComparableStack(ModBlocks.machine_rtg_furnace_off, 1), new AStack[] {new ComparableStack(Blocks.furnace, 1), new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(PB.plate528(), 6), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(CU.plate(), 2), },150); - makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 1), new ComparableStack(ModItems.piston_selenium, 1), new OreDictStack(STEEL.ingot(), 6), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.coil_copper, 4), }, 100); + makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 1), new ComparableStack(ModItems.piston_selenium, 1), new OreDictStack(STEEL.plateCast(), 1), new ComparableStack(ModItems.coil_copper, 4), }, 60); makeRecipe(new ComparableStack(ModBlocks.machine_selenium, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 6), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.hull_small_steel, 9), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.coil_copper, 4), },250); makeRecipe(new ComparableStack(ModBlocks.machine_rtg_grey, 1), new AStack[] {new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(STEEL.plate528(), 4), new ComparableStack(ModItems.wire_red_copper, 4), new OreDictStack(ANY_PLASTIC.ingot(), 3), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_battery, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(S.dust(), 12), new OreDictStack(PB.dust(), 12), new OreDictStack(MINGRADE.ingot(), 2), new ComparableStack(ModItems.wire_red_copper, 4), },200); + makeRecipe(new ComparableStack(ModBlocks.machine_battery, 1), new AStack[] {new OreDictStack(STEEL.plateWelded(), 1), new OreDictStack(S.dust(), 12), new OreDictStack(PB.dust(), 12), new OreDictStack(MINGRADE.ingot(), 2), new ComparableStack(ModItems.wire_red_copper, 4), },200); makeRecipe(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new AStack[] {new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(CO.dust(), 12), new OreDictStack(LI.dust(), 12), new OreDictStack(ALLOY.ingot(), 2), new ComparableStack(ModItems.wire_red_copper, 4), },400); makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_battery, 1), new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(NP237.dust(), 12), new OreDictStack(SA326.dust(), 12), new OreDictStack(SA326.ingot(), 2), new ComparableStack(ModItems.wire_schrabidium, 4), },800); makeRecipe(new ComparableStack(ModBlocks.machine_dineutronium_battery, 1), new AStack[] {new OreDictStack(DNT.ingot(), 24), new ComparableStack(ModItems.powder_spark_mix, 12), new ComparableStack(ModItems.battery_spark_cell_1000, 1), new OreDictStack(CMB.ingot(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 8), },1600); - makeRecipe(new ComparableStack(ModBlocks.machine_shredder, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.wire_red_copper, 2), new ComparableStack(ModBlocks.steel_beam, 2), new ComparableStack(Blocks.iron_bars, 2), new ComparableStack(ModBlocks.red_wire_coated, 1), },200); + makeRecipe(new ComparableStack(ModBlocks.machine_shredder, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModBlocks.steel_beam, 2), new ComparableStack(Blocks.iron_bars, 2) },200); makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModBlocks.steel_beam, 8), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 3), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.wire_red_copper, 6), },250); - makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.block(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.ingot(), 24), new OreDictStack(STEEL.plate(), 16), new OreDictStack(AL.plate(), 6), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.wire_red_copper, 8), },400); + makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.plateWelded(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor, 2) }, 400); makeRecipe(new ComparableStack(ModBlocks.machine_flare, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 4), new ComparableStack(ModItems.tank_steel, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 8), new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(ModItems.thermo_element, 3), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {new OreDictStack(STEEL.plate(), 24), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); - makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(CU.plate(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); - makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.bolt_tungsten, 4), new ComparableStack(ModItems.coil_copper, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit_copper, 1), new ComparableStack(ModItems.canister_full, 1, Fluids.LUBRICANT.getID()), },160); + makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 16), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); + makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate528(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); + makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit_copper, 1) }, 100); makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit_gold, 1), },400); + makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit_gold, 1), },400); makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.hull_big_steel, 4), new OreDictStack(ANY_TAR.any(), 4), },150); - makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); - makeRecipe(new ComparableStack(ModBlocks.machine_orbus, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 12), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1) }, 200); - makeRecipe(new ComparableStack(ModBlocks.machine_drill, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 6), new OreDictStack(STEEL.ingot(), 4), new ComparableStack(ModItems.wire_red_copper, 4), new ComparableStack(ModItems.circuit_copper, 1), new ComparableStack(ModItems.motor, 1), new OreDictStack(DURA.ingot(), 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new ComparableStack(ModItems.drill_titanium, 1), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_mining_laser, 1), new AStack[] {new ComparableStack(ModItems.tank_steel, 3), new OreDictStack(STEEL.plate528(), 16), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 3), new OreDictStack(DURA.ingot(), 4), new ComparableStack(ModItems.bolt_dura_steel, 6), new ComparableStack(ModBlocks.machine_battery, 3), },400); - makeRecipe(new ComparableStack(ModBlocks.machine_turbofan, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.hull_small_steel, 2), new ComparableStack(ModItems.turbine_tungsten, 1), new ComparableStack(ModItems.turbine_titanium, 7), new ComparableStack(ModItems.bolt_compound, 8), new OreDictStack(MINGRADE.ingot(), 12), new ComparableStack(ModItems.wire_red_copper, 24), },500); - makeRecipe(new ComparableStack(ModBlocks.machine_turbinegas, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.generator_steel, 2), new ComparableStack(ModItems.bolt_compound, 4), new ComparableStack(ModBlocks.steel_scaffold, 8), new ComparableStack(ModBlocks.deco_pipe_quad, 4), new ComparableStack(ModItems.turbine_tungsten, 3), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.ingot_rubber, 4), new ComparableStack(ModItems.circuit_red_copper, 3)}, 600); + makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); + makeRecipe(new ComparableStack(ModBlocks.machine_orbus, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1) }, 200); + makeRecipe(new ComparableStack(ModBlocks.machine_mining_laser, 1), new AStack[] {new ComparableStack(ModItems.tank_steel, 3), !exp ? new OreDictStack(STEEL.plate528(), 16) : new OreDictStack(STEEL.heavyComp(), 3), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 3), !exp ? new OreDictStack(DURA.ingot(), 4) : new OreDictStack(DESH.heavyComp(), 1), new ComparableStack(ModItems.bolt_dura_steel, 6), new ComparableStack(ModBlocks.machine_battery, 3), },400); + makeRecipe(new ComparableStack(ModBlocks.machine_turbofan, 1), new AStack[] {!exp ? new ComparableStack(ModItems.hull_big_steel, 1) : new OreDictStack(STEEL.heavyComp(), 1), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.hull_small_steel, 2), new ComparableStack(ModItems.turbine_tungsten, 1), new ComparableStack(ModItems.turbine_titanium, 7), new ComparableStack(ModItems.bolt_compound, 8), new OreDictStack(MINGRADE.ingot(), 12), new ComparableStack(ModItems.wire_red_copper, 24), },500); + makeRecipe(new ComparableStack(ModBlocks.machine_turbinegas, 1), new AStack[] {!exp ? new ComparableStack(ModItems.hull_big_steel, 4) : new OreDictStack(STEEL.heavyComp(), 2), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.generator_steel, 2), new ComparableStack(ModItems.bolt_compound, 4), new ComparableStack(ModBlocks.steel_scaffold, 8), new ComparableStack(ModBlocks.deco_pipe_quad, 4), new ComparableStack(ModItems.turbine_tungsten, 3), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.ingot_rubber, 4), new ComparableStack(ModItems.circuit_red_copper, 3)}, 600); makeRecipe(new ComparableStack(ModBlocks.machine_teleporter, 1), new AStack[] {new OreDictStack(TI.ingot(), 8), new OreDictStack(ALLOY.plate528(), 12), new ComparableStack(ModItems.wire_gold, 32), new ComparableStack(ModItems.entanglement_kit, 1), new ComparableStack(ModBlocks.machine_battery, 1) },300); - makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), new OreDictStack(TI.ingot(), 24), new OreDictStack(ALLOY.plate(), 18), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_desh, 6), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit_gold, 5), },500); - makeRecipe(new ComparableStack(ModBlocks.fusion_conductor, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.coil_advanced_alloy, 5), },150); + makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), !exp ? new OreDictStack(TI.ingot(), 24) : new OreDictStack(TI.heavyComp(), 2), !exp ? new OreDictStack(ALLOY.plate(), 18) : new OreDictStack(ALLOY.heavyComp(), 1), new OreDictStack(STEEL.plateWelded(), 12), new ComparableStack(ModItems.plate_desh, 6), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit_gold, 5), },500); + makeRecipe(new ComparableStack(ModBlocks.fusion_conductor, 1), new AStack[] {new ComparableStack(ModItems.coil_advanced_alloy, 5), }, 100); makeRecipe(new ComparableStack(ModBlocks.fusion_center, 1), new AStack[] {new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.wire_advanced_alloy, 24), },200); makeRecipe(new ComparableStack(ModBlocks.fusion_motor, 1), new AStack[] {new OreDictStack(TI.ingot(), 4), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.motor, 4), },250); - makeRecipe(new ComparableStack(ModBlocks.fusion_heater, 1), new AStack[] {new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate528(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.magnetron, 1), new ComparableStack(ModItems.wire_advanced_alloy, 4), },150); + makeRecipe(new ComparableStack(ModBlocks.fusion_heater, 4), new AStack[] {new OreDictStack(W.plateWelded(), 2), new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new ComparableStack(ModItems.magnetron, 2) }, 200); makeRecipe(new ComparableStack(ModBlocks.watz_element, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)},200); makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2), }, 200); - makeRecipe(new ComparableStack(ModBlocks.watz_end, 3), new AStack[] {new OreDictStack(ANY_RESISTANTALLOY.plateTriple()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plate(), 9), }, 100); + makeRecipe(new ComparableStack(ModBlocks.watz_end, 3), new AStack[] {new OreDictStack(ANY_RESISTANTALLOY.plateWelded()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plateWelded(), 2), }, 100); makeRecipe(new ComparableStack(ModBlocks.fwatz_hatch, 1), new AStack[] {new OreDictStack(W.ingot(), 6), new OreDictStack(CMB.plate(), 4), },250); makeRecipe(new ComparableStack(ModBlocks.fwatz_conductor, 1), new AStack[] {new OreDictStack(CMB.plate(), 2), new ComparableStack(ModItems.coil_magnetized_tungsten, 5), },250); makeRecipe(new ComparableStack(ModBlocks.fwatz_computer, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.wire_magnetized_tungsten, 16), new OreDictStack(DIAMOND.dust(), 6), new OreDictStack(MAGTUNG.dust(), 6), new OreDictStack(DESH.dust(), 4), },300); @@ -320,24 +319,6 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.therm_exo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new OreDictStack(P_RED.dust(), 32), new ComparableStack(ModItems.circuit_gold, 1), new ComparableStack(ModItems.coil_gold, 4), },250); makeRecipe(new ComparableStack(ModBlocks.launch_pad, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModBlocks.machine_battery, 1), new ComparableStack(ModItems.circuit_gold, 2), },250); makeRecipe(new ComparableStack(ModItems.spawn_chopper, 1), new AStack[] {new ComparableStack(ModItems.chopper_blades, 5), new ComparableStack(ModItems.chopper_gun, 1), new ComparableStack(ModItems.chopper_head, 1), new ComparableStack(ModItems.chopper_tail, 1), new ComparableStack(ModItems.chopper_torso, 1), new ComparableStack(ModItems.chopper_wing, 2), },300); - makeRecipe(new ComparableStack(ModItems.missile_generic, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - makeRecipe(new ComparableStack(ModItems.missile_incendiary, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - makeRecipe(new ComparableStack(ModItems.missile_cluster, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - makeRecipe(new ComparableStack(ModItems.missile_buster, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - makeRecipe(new ComparableStack(ModItems.missile_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - makeRecipe(new ComparableStack(ModItems.missile_incendiary_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - makeRecipe(new ComparableStack(ModItems.missile_cluster_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - makeRecipe(new ComparableStack(ModItems.missile_buster_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - makeRecipe(new ComparableStack(ModItems.missile_emp_strong, 1), new AStack[] {new ComparableStack(ModBlocks.emp_bomb, 3), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - makeRecipe(new ComparableStack(ModItems.missile_burst, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - makeRecipe(new ComparableStack(ModItems.missile_inferno, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - makeRecipe(new ComparableStack(ModItems.missile_rain, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - makeRecipe(new ComparableStack(ModItems.missile_drill, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - makeRecipe(new ComparableStack(ModItems.missile_nuclear, 1), new AStack[] {new ComparableStack(ModItems.warhead_nuclear, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },500); - makeRecipe(new ComparableStack(ModItems.missile_nuclear_cluster, 1), new AStack[] {new ComparableStack(ModItems.warhead_mirv, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier5, 1), },600); - makeRecipe(new ComparableStack(ModItems.missile_volcano, 1), new AStack[] {new ComparableStack(ModItems.warhead_volcano, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier5, 1), },600); - makeRecipe(new ComparableStack(ModItems.missile_endo, 1), new AStack[] {new ComparableStack(ModItems.warhead_thermo_endo, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },350); - makeRecipe(new ComparableStack(ModItems.missile_exo, 1), new AStack[] {new ComparableStack(ModItems.warhead_thermo_exo, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },350); makeRecipe(new ComparableStack(ModItems.gun_defabricator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(IRON.plate(), 5), new ComparableStack(ModItems.mechanism_special, 3), new ComparableStack(Items.diamond, 1), new ComparableStack(ModItems.plate_dalekanium, 3), },200); makeRecipe(new ComparableStack(ModItems.gun_osipr_ammo, 24), new AStack[] {new OreDictStack(STEEL.plate(), 2), new OreDictStack(REDSTONE.dust(), 1), new ComparableStack(Items.glowstone_dust, 1), },50); makeRecipe(new ComparableStack(ModItems.gun_osipr_ammo2, 1), new AStack[] {new OreDictStack(CMB.plate(), 4), new OreDictStack(REDSTONE.dust(), 7), new ComparableStack(ModItems.powder_power, 3), },200); @@ -379,7 +360,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.ams_limiter, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 6), new OreDictStack(STEEL.plate(), 24), new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModItems.crystal_diamond, 1)}, 600); makeRecipe(new ComparableStack(ModBlocks.ams_emitter, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 24), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModBlocks.steel_scaffold, 40), new ComparableStack(ModItems.crystal_redstone, 5), new ComparableStack(ModBlocks.machine_lithium_battery)}, 600); makeRecipe(new ComparableStack(ModBlocks.ams_base, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 12), new OreDictStack(STEEL.plate(), 28), new ComparableStack(ModBlocks.steel_scaffold, 30), new ComparableStack(ModBlocks.steel_grate, 8), new ComparableStack(ModBlocks.barrel_steel, 2)}, 600); - makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.plate_polymer, 24), new ComparableStack(ModItems.magnetron, 10), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300); + makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(ANY_RUBBER.ingot(), 8), new ComparableStack(ModItems.magnetron, 10), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300); makeRecipe(new ComparableStack(ModBlocks.machine_forcefield, 1), new AStack[] {new OreDictStack(ALLOY.plate528(), 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.coil_gold_torus, 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 12), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.upgrade_radius, 1), new ComparableStack(ModItems.upgrade_health, 1), new ComparableStack(ModItems.circuit_targeting_tier5, 1), new ComparableStack(ModBlocks.machine_transformer, 1), },1000); makeRecipe(new ComparableStack(ModItems.mp_thruster_10_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100); makeRecipe(new ComparableStack(ModItems.mp_thruster_10_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModItems.coil_tungsten, 1), new OreDictStack(DURA.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100); @@ -391,9 +372,9 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.mp_thruster_15_solid_hexdecuple, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 6), new OreDictStack(DURA.ingot(), 12), new ComparableStack(ModItems.coil_tungsten, 6), },500); makeRecipe(new ComparableStack(ModItems.mp_thruster_15_hydrogen, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 8), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.tank_steel, 1), new OreDictStack(DESH.ingot(), 4), },500); makeRecipe(new ComparableStack(ModItems.mp_thruster_15_hydrogen_dual, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.tank_steel, 1), new OreDictStack(DESH.ingot(), 1), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire_short, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModBlocks.reactor_element, 1), new OreDictStack(DESH.ingot(), 8), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.board_copper, 2), new ComparableStack(ModItems.ingot_uranium_fuel, 4), new ComparableStack(ModItems.pipes_steel, 2), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModBlocks.reactor_element, 2), new OreDictStack(DESH.ingot(), 16), new OreDictStack(BIGMT.plate(), 24), new ComparableStack(ModItems.board_copper, 4), new ComparableStack(ModItems.ingot_uranium_fuel, 8), new ComparableStack(ModItems.pipes_steel, 2), },500); - makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire_large, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModBlocks.reactor_element, 2), new OreDictStack(DESH.ingot(), 24), new OreDictStack(BIGMT.plate(), 32), new ComparableStack(ModItems.board_copper, 4), new ComparableStack(ModItems.ingot_uranium_fuel, 8), new ComparableStack(ModItems.pipes_steel, 2), },500); + makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire_short, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModBlocks.pwr_fuel, 1), new OreDictStack(DESH.ingot(), 8), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.board_copper, 2), new ComparableStack(ModItems.ingot_uranium_fuel, 4), new ComparableStack(ModItems.pipes_steel, 2), },500); + makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModBlocks.pwr_fuel, 2), new OreDictStack(DESH.ingot(), 16), new OreDictStack(BIGMT.plate(), 24), new ComparableStack(ModItems.board_copper, 4), new ComparableStack(ModItems.ingot_uranium_fuel, 8), new ComparableStack(ModItems.pipes_steel, 2), },500); + makeRecipe(new ComparableStack(ModItems.mp_thruster_15_balefire_large, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModBlocks.pwr_fuel, 2), new OreDictStack(DESH.ingot(), 24), new OreDictStack(BIGMT.plate(), 32), new ComparableStack(ModItems.board_copper, 4), new ComparableStack(ModItems.ingot_uranium_fuel, 8), new ComparableStack(ModItems.pipes_steel, 2), },500); makeRecipe(new ComparableStack(ModItems.mp_thruster_20_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_20, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 16), new OreDictStack(STEEL.plate(), 12), new OreDictStack(DESH.ingot(), 8), },500); makeRecipe(new ComparableStack(ModItems.mp_thruster_20_kerosene_dual, 1), new AStack[] {new ComparableStack(ModItems.seg_20, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 8), new OreDictStack(STEEL.plate(), 6), new OreDictStack(DESH.ingot(), 4), },500); makeRecipe(new ComparableStack(ModItems.mp_thruster_20_kerosene_triple, 1), new AStack[] {new ComparableStack(ModItems.seg_20, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 12), new OreDictStack(STEEL.plate(), 8), new OreDictStack(DESH.ingot(), 6), },500); @@ -428,14 +409,14 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.mp_warhead_15_n2, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 20), new ComparableStack(ModBlocks.det_charge, 24), new ComparableStack(Blocks.redstone_block, 12), new OreDictStack(MAGTUNG.dust(), 6), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },400); makeRecipe(new ComparableStack(ModItems.mp_warhead_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(OreDictManager.getReflector(), 16), new ComparableStack(ModItems.powder_magic, 6), new ComparableStack(ModItems.egg_balefire_shard, 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new ComparableStack(ModItems.circuit_targeting_tier4, 1), }, 60); makeRecipe(new ComparableStack(ModItems.missile_soyuz, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 40), new ComparableStack(ModBlocks.det_cord, 20), new ComparableStack(ModItems.thruster_medium, 12), new ComparableStack(ModItems.thruster_small, 12), new ComparableStack(ModItems.tank_steel, 10), new ComparableStack(ModItems.circuit_targeting_tier4, 2), new ComparableStack(ModItems.circuit_targeting_tier3, 8), new OreDictStack(RUBBER.ingot(), 64), new ComparableStack(ModItems.fins_small_steel, 4), new ComparableStack(ModItems.hull_big_titanium, 32), new ComparableStack(ModItems.hull_big_steel, 18), new OreDictStack(FIBER.ingot(), 64), },600); - makeRecipe(new ComparableStack(ModItems.missile_soyuz_lander, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 10), new ComparableStack(ModItems.thruster_small, 3), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.circuit_targeting_tier3, 4), new ComparableStack(ModItems.plate_polymer, 32), new ComparableStack(ModItems.hull_big_aluminium, 2), new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(FIBER.ingot(), 12), },600); + makeRecipe(new ComparableStack(ModItems.missile_soyuz_lander, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 10), new ComparableStack(ModItems.thruster_small, 3), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.circuit_targeting_tier3, 4), new OreDictStack(ANY_RUBBER.ingot(), 32), new ComparableStack(ModItems.hull_big_aluminium, 2), new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(FIBER.ingot(), 12), },600); makeRecipe(new ComparableStack(ModItems.fusion_shield_tungsten, 1), new AStack[] {new OreDictStack(W.block(), 32), new OreDictStack(OreDictManager.getReflector(), 96)}, 600); makeRecipe(new ComparableStack(ModItems.fusion_shield_desh, 1), new AStack[] {new OreDictStack(DESH.block(), 16), new OreDictStack(CO.block(), 16), new OreDictStack(BIGMT.plate(), 96)}, 600); makeRecipe(new ComparableStack(ModItems.fusion_shield_chlorophyte, 1), new AStack[] {new OreDictStack(W.block(), 16), new OreDictStack(DURA.block(), 16), new OreDictStack(OreDictManager.getReflector(), 48), new ComparableStack(ModItems.powder_chlorophyte, 48)}, 600); makeRecipe(new ComparableStack(ModBlocks.machine_fensu, 1), new AStack[] { new ComparableStack(ModItems.ingot_electronium, 32), new ComparableStack(ModBlocks.machine_dineutronium_battery, 16), - new OreDictStack(STEEL.block(), 32), + !exp ? new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 64) : new OreDictStack(ANY_RESISTANTALLOY.heavyComp(), 64), new OreDictStack(DURA.block(), 16), new OreDictStack(STAR.block(), 64), new ComparableStack(ModBlocks.machine_transformer_dnt, 8), @@ -443,11 +424,11 @@ public class AssemblerRecipes { new ComparableStack(ModItems.powder_magic, 64), new ComparableStack(ModItems.plate_dineutronium, 24), new ComparableStack(ModItems.ingot_u238m2), - new OreDictStack(FIBER.ingot(), 128) + new ComparableStack(ModItems.ingot_cft, 128) }, 1200); makeRecipe(new ComparableStack(ModBlocks.struct_iter_core, 1), new AStack[] { - new OreDictStack(STEEL.ingot(), 6), - new OreDictStack(W.ingot(), 6), + !exp ? new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 6) : new OreDictStack(ANY_RESISTANTALLOY.heavyComp(), 2), + !exp ? new OreDictStack(W.plateWelded(), 6) : new OreDictStack(W.heavyComp(), 1), new OreDictStack(OreDictManager.getReflector(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new OreDictStack(ANY_PLASTIC.ingot(), 8), @@ -529,8 +510,28 @@ public class AssemblerRecipes { new OreDictStack(DIAMOND.dust(), 32) }, 100); + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY.ordinal()), new AStack[] { + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 20), + new OreDictStack(DESH.ingot(), 12), + new OreDictStack(RUBBER.ingot(), 8) + }, 200); + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY_DIAMOND.ordinal()), new AStack[] { + new ComparableStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY.ordinal()), + new OreDictStack(DIAMOND.dust(), 48) + }, 100); + + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.FERRO.ordinal()), new AStack[] { + new OreDictStack(FERRO.ingot(), 24), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 12), + new OreDictStack(BI.ingot(), 4), + }, 200); + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.FERRO_DIAMOND.ordinal()), new AStack[] { + new ComparableStack(ModItems.drillbit, 1, EnumDrillType.FERRO.ordinal()), + new OreDictStack(DIAMOND.dust(), 56) + }, 100); + makeRecipe(new ComparableStack(ModBlocks.machine_large_turbine, 1), new AStack[] { - new OreDictStack(STEEL.plate528(), 12), + !exp ? new OreDictStack(STEEL.plate528(), 12) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.turbine_titanium, 3), new ComparableStack(ModItems.generator_steel, 1), @@ -540,8 +541,8 @@ public class AssemblerRecipes { }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_chungus, 1), new AStack[] { new ComparableStack(ModItems.hull_big_steel, 6), - new OreDictStack(STEEL.plate528(), 32), - new OreDictStack(TI.plate528(), 12), + !exp ? new OreDictStack(STEEL.plateWelded(), 16) : new OreDictStack(STEEL.heavyComp(), 3), + !exp ? new OreDictStack(TI.plate528(), 12) : new OreDictStack(TI.heavyComp(), 1), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new ComparableStack(ModItems.turbine_tungsten, 5), new ComparableStack(ModItems.turbine_titanium, 3), @@ -550,6 +551,15 @@ public class AssemblerRecipes { new ComparableStack(ModItems.bolt_compound, 16), new ComparableStack(ModItems.pipes_steel, 3) }, 600); + + makeRecipe(new ComparableStack(ModBlocks.machine_condenser_powered, 1), new AStack[] { + !exp ? new OreDictStack(STEEL.plateWelded(), 8) : new OreDictStack(STEEL.heavyComp(), 3), + new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 4), + !exp ? new OreDictStack(CU.plate528(), 16) : new OreDictStack(CU.heavyComp(), 3), + new ComparableStack(ModItems.motor_desh, 3), + new ComparableStack(ModItems.pipes_steel, 4), + new OreDictStack(Fluids.LUBRICANT.getDict(1_000), 4) + }, 600); makeRecipe(new ComparableStack(ModItems.pellet_chlorophyte, 2), new AStack[] { new ComparableStack(ModItems.powder_chlorophyte, 1), @@ -571,7 +581,7 @@ public class AssemblerRecipes { new ComparableStack(ModBlocks.machine_lithium_battery, 3), new ComparableStack(ModBlocks.hadron_coil_neodymium, 8), new ComparableStack(ModItems.wire_advanced_alloy, 96), - new OreDictStack(STEEL.ingot(), 16), + !exp ? new OreDictStack(STEEL.ingot(), 16) : new OreDictStack(STEEL.heavyComp(), 3), new OreDictStack(STEEL.plate528(), 32), new OreDictStack(AL.plate528(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 24), @@ -582,7 +592,7 @@ public class AssemblerRecipes { }, 600); makeRecipe(new ComparableStack(ModBlocks.reactor_zirnox, 1), new AStack[] { - new ComparableStack(ModItems.hull_big_steel, 4), + !exp ? new ComparableStack(ModItems.hull_big_steel, 4) : new OreDictStack(STEEL.heavyComp(), 1), new ComparableStack(ModBlocks.steel_scaffold, 4), new OreDictStack(ANY_CONCRETE.any(), 16), new ComparableStack(ModBlocks.deco_pipe_quad, 8), @@ -606,7 +616,6 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.STOCK.ordinal()), new AStack[] { new OreDictStack(STEEL.plate(), 2), new OreDictStack(CU.plate(), 1), - new ComparableStack(ModItems.primer_50, 5), new ComparableStack(ModItems.casing_50, 5), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2), new ComparableStack(ModItems.cordite, 3), @@ -616,7 +625,6 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.INCENDIARY.ordinal()), new AStack[] { new OreDictStack(STEEL.plate(), 2), new OreDictStack(CU.plate(), 1), - new ComparableStack(ModItems.primer_50, 5), new ComparableStack(ModItems.casing_50, 5), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 3), new ComparableStack(ModItems.cordite, 3), @@ -626,7 +634,6 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.HE.ordinal()), new AStack[] { new OreDictStack(STEEL.plate(), 2), new OreDictStack(CU.plate(), 1), - new ComparableStack(ModItems.primer_50, 5), new ComparableStack(ModItems.casing_50, 5), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 5), new ComparableStack(ModItems.cordite, 5), @@ -664,7 +671,7 @@ public class AssemblerRecipes { new OreDictStack(W.ingot(), 32), new OreDictStack(PB.plate(), 16), new OreDictStack(ALLOY.plate(), 4), - new ComparableStack(ModItems.plate_polymer, 4), + new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.bolt_tungsten, 8), new ComparableStack(ModItems.bolt_dura_steel, 8), new ComparableStack(ModItems.motor, 3), @@ -675,7 +682,7 @@ public class AssemblerRecipes { new OreDictStack(W.ingot(), 8), new OreDictStack(PB.plate(), 6), new OreDictStack(ALLOY.plate(), 3), - new ComparableStack(ModItems.plate_polymer, 3), + new OreDictStack(ANY_RUBBER.ingot(), 3), new ComparableStack(ModItems.bolt_tungsten, 3), new ComparableStack(ModItems.bolt_dura_steel, 3), new ComparableStack(ModItems.motor, 1), @@ -846,6 +853,14 @@ public class AssemblerRecipes { new OreDictStack(OreDictManager.getReflector(), 12), new ComparableStack(ModItems.circuit_copper, 12) }, 100); + makeRecipe(new ComparableStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_LAVA), new AStack[] { + new OreDictStack(STEEL.plate(), 24), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), + new ComparableStack(ModItems.rocket_fuel, 32), + new ComparableStack(ModItems.ball_tatb, 4), + new OreDictStack(VOLCANIC.gem(), 1), + new ComparableStack(ModItems.circuit_copper, 6) + }, 100); makeRecipe(new ComparableStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.LARGE), new AStack[] { new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), @@ -867,7 +882,7 @@ public class AssemblerRecipes { new ComparableStack(Blocks.glass, 12), new ComparableStack(ModItems.motor, 2), new OreDictStack(DURA.ingot(), 4), - new OreDictStack(STEEL.plate528(), 8), + !exp ? new OreDictStack(STEEL.plate528(), 8) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(DESH.ingot(), 2), new ComparableStack(ModItems.tank_steel, 1), new ComparableStack(ModItems.pipes_steel, 1), @@ -877,7 +892,7 @@ public class AssemblerRecipes { new ComparableStack(ModBlocks.fusion_conductor, 16), new ComparableStack(ModBlocks.machine_lithium_battery, 2), new OreDictStack(STEEL.ingot(), 16), - new OreDictStack(STEEL.plate528(), 24), + !exp ? new OreDictStack(STEEL.plate528(), 24) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.circuit_red_copper, 4), new ComparableStack(ModItems.wire_red_copper, 64), @@ -887,7 +902,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.rbmk_blank, 1), new AStack[] { new ComparableStack(ModBlocks.concrete_asbestos, 4), - new OreDictStack(STEEL.plate528(), 4), + !exp ? new OreDictStack(STEEL.plate528(), 4) : new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(CU.ingot(), 4), new ComparableStack(ModItems.plate_polymer, 4) }, 100); @@ -901,7 +916,7 @@ public class AssemblerRecipes { }, 100); makeRecipe(new ComparableStack(ModBlocks.machine_assemfac, 1), new AStack[] { - new OreDictStack(STEEL.ingot(), 48), + !exp ? new OreDictStack(STEEL.ingot(), 48) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new OreDictStack(B.ingot(), 4), new OreDictStack(RUBBER.ingot(), 16), @@ -913,7 +928,7 @@ public class AssemblerRecipes { }, 400); makeRecipe(new ComparableStack(ModBlocks.machine_chemfac, 1), new AStack[] { - new OreDictStack(STEEL.ingot(), 48), + !exp ? new OreDictStack(STEEL.ingot(), 48) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new OreDictStack(NB.ingot(), 4), new OreDictStack(RUBBER.ingot(), 16), @@ -947,17 +962,17 @@ public class AssemblerRecipes { }, 150); makeRecipe(new ComparableStack(ModBlocks.machine_vacuum_distill, 1), new AStack[] { - new OreDictStack(STEEL.plateCast(), 16), - new OreDictStack(CU.plate528(), 16), + !exp ? new OreDictStack(STEEL.plateCast(), 16) : new OreDictStack(STEEL.heavyComp(), 4), + !exp ? new OreDictStack(CU.plate528(), 16) : new OreDictStack(CU.heavyComp(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.motor_desh, 3), - new ComparableStack(ModItems.circuit_gold, 1) + new OreDictStack(KEY_CIRCUIT_BISMUTH, 1) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_catalytic_reformer, 1), new AStack[] { - new OreDictStack(STEEL.plateCast(), 12), - new OreDictStack(CU.plate528(), 8), + !exp ? new OreDictStack(STEEL.plateCast(), 12) : new OreDictStack(STEEL.heavyComp(), 4), + !exp ? new OreDictStack(CU.plate528(), 8) : new OreDictStack(CU.heavyComp(), 2), new OreDictStack(NB.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.hull_big_steel, 3), @@ -966,6 +981,44 @@ public class AssemblerRecipes { new ComparableStack(ModItems.circuit_red_copper, 3) }, 200); + makeRecipe(new ComparableStack(ModBlocks.machine_compressor, 1), new AStack[] { + new OreDictStack(STEEL.plateCast(), 8), + new OreDictStack(CU.plate528(), 4), + new ComparableStack(ModItems.hull_big_steel, 2), + new ComparableStack(ModItems.motor, 3), + new ComparableStack(ModItems.circuit_red_copper, 1) + }, 200); + + makeRecipe(new ComparableStack(ModBlocks.machine_electrolyser, 1), new AStack[] { + !exp ? new OreDictStack(STEEL.plateCast(), 8) : new OreDictStack(STEEL.heavyComp(), 2), + !exp ? new OreDictStack(CU.plate528(), 16) : new OreDictStack(CU.heavyComp(), 1), + new OreDictStack(RUBBER.ingot(), 8), + new ComparableStack(ModItems.ingot_firebrick, 16), + new ComparableStack(ModItems.tank_steel, 3), + new ComparableStack(ModItems.coil_copper, 16), + new ComparableStack(ModItems.circuit_gold, 2) + }, 200); + + makeRecipe(new ComparableStack(ModBlocks.machine_exposure_chamber, 1), new AStack[] { + !exp ? new OreDictStack(AL.plateCast(), 12) : new OreDictStack(AL.heavyComp(), 1), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), + new OreDictStack(ALLOY.wireDense(), 32), + new ComparableStack(ModItems.motor_desh, 2), + new ComparableStack(ModItems.circuit_gold, 3), + new ComparableStack(ModBlocks.capacitor_tantalium, 1), + new ComparableStack(ModBlocks.glass_quartz, 16) + }, 200); + + makeRecipe(new ComparableStack(ModItems.euphemium_capacitor, 1), new AStack[] + { + new OreDictStack(NB.ingot(), 4), + new ComparableStack(ModItems.redcoil_capacitor, 1), + new ComparableStack(ModItems.ingot_euphemium, 4), + new ComparableStack(ModItems.circuit_tantalium, 6), + new ComparableStack(ModItems.powder_nitan_mix, 18), + }, 600); + makeRecipe(new ComparableStack(ModBlocks.block_cap_nuka, 1), new AStack[] { new ComparableStack(ModItems.cap_nuka, 128) }, 10); makeRecipe(new ComparableStack(ModBlocks.block_cap_quantum, 1), new AStack[] { new ComparableStack(ModItems.cap_quantum, 128) }, 10); makeRecipe(new ComparableStack(ModBlocks.block_cap_sparkle, 1), new AStack[] { new ComparableStack(ModItems.cap_sparkle, 128) }, 10); @@ -976,12 +1029,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.block_cap_star, 1), new AStack[] { new ComparableStack(ModItems.cap_star, 128) }, 10); if(!GeneralConfig.enable528) { - makeRecipe(new ComparableStack(ModBlocks.machine_hephaestus, 1), new AStack[] { new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(STEEL.ingot(), 24), new OreDictStack(CU.plate(), 24), new OreDictStack(NB.ingot(), 4), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModBlocks.glass_quartz, 16) }, 150); - makeRecipe(new ComparableStack(ModBlocks.reactor_element, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(PB.plate(), 2), new OreDictStack(ZR.ingot(), 2), },150); - makeRecipe(new ComparableStack(ModBlocks.reactor_control, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(PB.ingot(), 6), new ComparableStack(ModItems.bolt_tungsten, 6), new ComparableStack(ModItems.motor, 1), },100); - makeRecipe(new ComparableStack(ModBlocks.reactor_hatch, 1), new AStack[] {new ComparableStack(ModBlocks.brick_concrete, 1), new OreDictStack(STEEL.plate(), 6), },150); - makeRecipe(new ComparableStack(ModBlocks.reactor_conductor, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(CU.plate(), 12), new ComparableStack(ModItems.wire_tungsten, 4), },130); - makeRecipe(new ComparableStack(ModBlocks.reactor_computer, 1), new AStack[] {new ComparableStack(ModBlocks.reactor_conductor, 2), new ComparableStack(ModItems.circuit_targeting_tier3, 4), new ComparableStack(ModItems.circuit_gold, 1), },250); + makeRecipe(new ComparableStack(ModBlocks.machine_hephaestus, 1), new AStack[] { new ComparableStack(ModItems.pipes_steel, 1), !exp ? new OreDictStack(STEEL.ingot(), 24) : new OreDictStack(STEEL.heavyComp(), 2), !exp ? new OreDictStack(CU.plate(), 24) : new OreDictStack(CU.heavyComp(), 2), new OreDictStack(NB.ingot(), 4), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModBlocks.glass_quartz, 16) }, 150); makeRecipe(new ComparableStack(ModBlocks.machine_radgen, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 6), new ComparableStack(ModItems.wire_magnetized_tungsten, 24), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.reactor_core, 3), new OreDictStack(STAR.ingot(), 1), new OreDictStack("dyeRed", 1), },400); makeRecipe(new ComparableStack(ModBlocks.machine_reactor_breeding, 1), new AStack[] {new ComparableStack(ModItems.reactor_core, 1), new OreDictStack(STEEL.ingot(), 12), new OreDictStack(PB.plate(), 16), new ComparableStack(ModBlocks.reinforced_glass, 4), new OreDictStack(ASBESTOS.ingot(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.crt_display, 1)},150); makeRecipe(new ComparableStack(ModBlocks.reactor_research, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.motor_desh, 2), new OreDictStack(B.ingot(), 5), new OreDictStack(PB.plate(), 8), new ComparableStack(ModItems.crt_display, 3), new ComparableStack(ModItems.circuit_copper, 2), },300); @@ -1027,7 +1075,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.rbmk_console, 1), new AStack[] { new OreDictStack(STEEL.ingot(), 16), new OreDictStack(AL.plate528(), 32), - new ComparableStack(ModItems.plate_polymer, 16), + new OreDictStack(ANY_RUBBER.ingot(), 16), new ComparableStack(ModItems.circuit_gold, 5), new ComparableStack(ModItems.circuit_tantalium, 20), new ComparableStack(ModItems.crt_display, 8), @@ -1036,7 +1084,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.rbmk_crane_console, 1), new AStack[] { new OreDictStack(STEEL.ingot(), 16), new OreDictStack(AL.plate528(), 8), - new ComparableStack(ModItems.plate_polymer, 4), + new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.circuit_gold, 1), new ComparableStack(ModItems.circuit_tantalium, 10), }, 300); @@ -1086,7 +1134,7 @@ public class AssemblerRecipes { new ComparableStack(ModBlocks.concrete_smooth, 64), new ComparableStack(ModItems.drill_titanium), new ComparableStack(ModItems.motor_desh, 2), - new ComparableStack(ModItems.plate_desh, 6), + !exp ? new ComparableStack(ModItems.plate_desh, 6) : new OreDictStack(DESH.heavyComp()), new OreDictStack(NB.ingot(), 8), new ComparableStack(ModItems.tank_steel, 24), new ComparableStack(ModItems.pipes_steel, 2) @@ -1094,7 +1142,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_catalytic_cracker), new AStack[] { new ComparableStack(ModBlocks.steel_scaffold, 16), - new ComparableStack(ModItems.hull_big_steel, 4), + !exp ? new ComparableStack(ModItems.hull_big_steel, 4) : new OreDictStack(STEEL.heavyComp()), new ComparableStack(ModItems.tank_steel, 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(NB.ingot(), 2), @@ -1108,8 +1156,7 @@ public class AssemblerRecipes { new OreDictStack(ANY_TAR.any(), 8), new ComparableStack(ModItems.catalyst_clay, 4), new ComparableStack(ModItems.coil_tungsten, 8), - new ComparableStack(ModItems.tank_steel, 2), - new ComparableStack(ModItems.inf_water_mk2, 2) + new ComparableStack(ModItems.tank_steel, 2) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_solidifier), new AStack[] { @@ -1124,7 +1171,7 @@ public class AssemblerRecipes { }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_radiolysis), new AStack[] { - new OreDictStack(STEEL.ingot(), 12), + !exp ? new OreDictStack(STEEL.ingot(), 12) : new OreDictStack(STEEL.heavyComp()), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(DURA.ingot(), 10), new OreDictStack(RUBBER.ingot(), 4), @@ -1139,12 +1186,28 @@ public class AssemblerRecipes { new ComparableStack(ModBlocks.cmb_brick_reinforced, 16), new OreDictStack(STEEL.plate(), 64), new OreDictStack(ALLOY.plate(), 40), - new ComparableStack(ModItems.plate_polymer, 36), + new OreDictStack(ANY_RUBBER.ingot(), 36), new OreDictStack(STEEL.block(), 24), new ComparableStack(ModItems.motor_desh, 16), new ComparableStack(ModItems.bolt_dura_steel, 12), new OreDictStack(KEY_YELLOW, 4) }, 1200); + + makeRecipe(new ComparableStack(ModBlocks.sliding_blast_door, 1), new AStack[] { + new OreDictStack(STEEL.plate(), 16), + new OreDictStack(W.ingot(), 8), + new ComparableStack(ModBlocks.reinforced_glass, 4), + new OreDictStack(ANY_RUBBER.ingot(), 4), + new ComparableStack(ModItems.bolt_dura_steel, 8), + new ComparableStack(ModItems.motor, 2) + }, 200); + makeRecipe(new ComparableStack(ModBlocks.large_vehicle_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 36), new OreDictStack("plateAdvancedAlloy", 4), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 4), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.bolt_dura_steel, 12), new OreDictStack("dyeGreen", 4)}, 500); + makeRecipe(new ComparableStack(ModBlocks.water_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new OreDictStack("plateAdvancedAlloy", 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new OreDictStack("dyeRed", 1)}, 500); + makeRecipe(new ComparableStack(ModBlocks.qe_containment, 1), new AStack[]{new OreDictStack(STEEL.plate(), 24), new OreDictStack("plateAdvancedAlloy", 8), new ComparableStack(ModItems.plate_polymer, 8), new OreDictStack("blockSteel", 2), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.bolt_dura_steel, 16), new OreDictStack("dyeBlack", 4)}, 500); + makeRecipe(new ComparableStack(ModBlocks.qe_sliding_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new OreDictStack("dyeWhite", 4), new ComparableStack(Blocks.glass, 4)}, 200); + makeRecipe(new ComparableStack(ModBlocks.round_airlock_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 32), new OreDictStack("plateAdvancedAlloy", 12), new ComparableStack(ModItems.plate_polymer, 12), new OreDictStack("blockSteel", 6), new ComparableStack(ModItems.motor, 6), new ComparableStack(ModItems.bolt_dura_steel, 12), new OreDictStack("dyeGreen", 4)}, 500); + makeRecipe(new ComparableStack(ModBlocks.secure_access_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 48), new OreDictStack("plateAdvancedAlloy", 16), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 6), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.bolt_dura_steel, 24), new OreDictStack("dyeRed", 8)}, 1000); + makeRecipe(new ComparableStack(ModBlocks.sliding_seal_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new OreDictStack("plateAdvancedAlloy", 4), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new OreDictStack("dyeWhite", 2)}, 500); if(Loader.isModLoaded("Mekanism")) { @@ -1154,21 +1217,26 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(mb, 1, 4), new AStack[] { new OreDictStack(DURA.ingot(), 16), - new OreDictStack(DESH.ingot(), 8), - new OreDictStack(STEEL.plate(), 48), - new OreDictStack(CU.plate(), 24), + new OreDictStack(DESH.ingot(), 16), + new OreDictStack(STEEL.plateWelded(), 32), + new OreDictStack(CU.plateWelded(), 24), new ComparableStack(ModItems.pipes_steel, 8), - new ComparableStack(ModItems.circuit_gold, 8), - new ComparableStack(ModItems.wire_advanced_alloy, 24), + new OreDictStack(KEY_CIRCUIT_BISMUTH, 4), + new ComparableStack(ModItems.wire_dense, 32, Mats.MAT_ALLOY.id), new ComparableStack(ModBlocks.fusion_conductor, 12), - new ComparableStack(ModBlocks.machine_lithium_battery, 3), - new ComparableStack(ModItems.crystal_redstone, 12), + new ComparableStack(ModBlocks.capacitor_tantalium, 53), + new ComparableStack(ModItems.crystal_redstone, 16), new ComparableStack(ModItems.crystal_diamond, 8), - new ComparableStack(ModItems.motor_desh, 16) + new ComparableStack(ModItems.motor_bismuth, 4) }, 15 * 60 * 20); } } + for(NTMMaterial mat : Mats.orderedList) { + if(mat.shapes.contains(MaterialShapes.CASTPLATE) && mat.shapes.contains(MaterialShapes.HEAVY_COMPONENT)) { + makeRecipe(new ComparableStack(ModItems.heavy_component, 1, mat.id), new AStack[] { new OreDictStack(MaterialShapes.CASTPLATE.name() + mat.names[0], 256) }, 12_000); + } + } /// HIDDEN /// hidden.put(new ComparableStack(ModBlocks.machine_radgen, 1), new HashSet() {{ add(ModItems.journal_pip); }}); diff --git a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java index 3dd2f4914..af7032305 100644 --- a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java @@ -63,7 +63,7 @@ public class BlastFurnaceRecipes extends SerializableRecipe { addRecipe(CO, ModBlocks.block_meteor, new ItemStack(ModItems.ingot_meteorite)); addRecipe(ModItems.meteorite_sword_hardened, CO, new ItemStack(ModItems.meteorite_sword_alloyed)); addRecipe(ModBlocks.block_meteor, CO, new ItemStack(ModItems.ingot_meteorite)); - + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) { addRecipe(ModItems.canister_empty, COAL, new ItemStack(ModItems.canister_full, 1, Fluids.OIL.getID())); } diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index 992ed2e3e..5b933fdd3 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -1,6 +1,7 @@ package com.hbm.inventory.recipes; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; @@ -19,7 +20,9 @@ import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.items.special.ItemByproduct.EnumByproduct; @@ -186,9 +189,86 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.nugget_polonium, 12), new ItemStack(ModItems.nugget_pu238, 6), new ItemStack(ModItems.nuclear_waste, 2) }); + + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.MEU)), new ItemStack[] { + new ItemStack(ModItems.nugget_u238, 3), + new ItemStack(ModItems.nugget_plutonium, 4), + new ItemStack(ModItems.nugget_technetium, 2), + new ItemStack(ModItems.nuclear_waste_tiny, 3) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.HEU233)), new ItemStack[] { + new ItemStack(ModItems.nugget_u235, 3), + new ItemStack(ModItems.nugget_pu238, 3), + new ItemStack(ModItems.nugget_technetium, 1), + new ItemStack(ModItems.nuclear_waste_tiny, 5) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.HEU235)), new ItemStack[] { + new ItemStack(ModItems.nugget_neptunium, 3), + new ItemStack(ModItems.nugget_pu238, 3), + new ItemStack(ModItems.nugget_technetium, 1), + new ItemStack(ModItems.nuclear_waste_tiny, 5) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.MEN)), new ItemStack[] { + new ItemStack(ModItems.nugget_u238, 3), + new ItemStack(ModItems.nugget_pu239, 4), + new ItemStack(ModItems.nugget_technetium, 2), + new ItemStack(ModItems.nuclear_waste_tiny, 3) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.HEN237)), new ItemStack[] { + new ItemStack(ModItems.nugget_pu238, 2), + new ItemStack(ModItems.nugget_pu239, 4), + new ItemStack(ModItems.nugget_technetium, 1), + new ItemStack(ModItems.nuclear_waste_tiny, 5) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.MOX)), new ItemStack[] { + new ItemStack(ModItems.nugget_u238, 3), + new ItemStack(ModItems.nugget_pu240, 4), + new ItemStack(ModItems.nugget_technetium, 2), + new ItemStack(ModItems.nuclear_waste_tiny, 3) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.MEP)), new ItemStack[] { + new ItemStack(ModItems.nugget_lead, 2), + new ItemStack(ModItems.nugget_pu_mix, 4), + new ItemStack(ModItems.nugget_technetium, 2), + new ItemStack(ModItems.nuclear_waste_tiny, 3) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.HEP239)), new ItemStack[] { + new ItemStack(ModItems.nugget_pu_mix, 2), + new ItemStack(ModItems.nugget_pu240, 4), + new ItemStack(ModItems.nugget_technetium, 1), + new ItemStack(ModItems.nuclear_waste_tiny, 5) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.HEP241)), new ItemStack[] { + new ItemStack(ModItems.nugget_lead, 3), + new ItemStack(ModItems.nugget_zirconium, 2), + new ItemStack(ModItems.nugget_technetium, 1), + new ItemStack(ModItems.nuclear_waste_tiny, 6) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.MEA)), new ItemStack[] { + new ItemStack(ModItems.nugget_lead, 3), + new ItemStack(ModItems.nugget_zirconium, 2), + new ItemStack(ModItems.nugget_technetium, 1), + new ItemStack(ModItems.nuclear_waste_tiny, 6) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.HEA242)), new ItemStack[] { + new ItemStack(ModItems.nugget_lead, 3), + new ItemStack(ModItems.nugget_zirconium, 2), + new ItemStack(ModItems.nugget_technetium, 1), + new ItemStack(ModItems.nuclear_waste_tiny, 6) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.HES326)), new ItemStack[] { + new ItemStack(ModItems.nugget_solinium, 3), + new ItemStack(ModItems.nugget_lead, 2), + new ItemStack(ModItems.nugget_euphemium, 1), + new ItemStack(ModItems.nuclear_waste_tiny, 6) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.HES327)), new ItemStack[] { + new ItemStack(ModItems.nugget_australium, 4), + new ItemStack(ModItems.nugget_lead, 1), + new ItemStack(ModItems.nugget_euphemium, 1), + new ItemStack(ModItems.nuclear_waste_tiny, 6) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.BFB_AM_MIX)), new ItemStack[] { + new ItemStack(ModItems.nugget_am_mix, 9), + new ItemStack(ModItems.nugget_pu_mix, 2), + new ItemStack(ModItems.nugget_bismuth, 6), + new ItemStack(ModItems.nuclear_waste_tiny, 1) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.BFB_PU241)), new ItemStack[] { + new ItemStack(ModItems.nugget_pu241, 9), + new ItemStack(ModItems.nugget_pu_mix, 2), + new ItemStack(ModItems.nugget_bismuth, 6), + new ItemStack(ModItems.nuclear_waste_tiny, 1) }); - if(OreDictionary.doesOreNameExist("nuggetNaquadria")) { - ItemStack nuggetNQR = OreDictionary.getOres("nuggetNaquadria").get(0); + ArrayList naquadriaNuggets = OreDictionary.getOres("nuggetNaquadria"); + if(naquadriaNuggets.size() != 0) { + ItemStack nuggetNQR = naquadriaNuggets.get(0); ItemStack copy = nuggetNQR.copy(); copy.stackSize = 12; recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.NQD)), new ItemStack[] { @@ -317,6 +397,12 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.powder_emerald, 1), new ItemStack(Blocks.gravel, 1) }); + recipes.put(new OreDictStack(F.ore()), new ItemStack[] { + new ItemStack(ModItems.fluorite, 3), + new ItemStack(ModItems.fluorite, 3), + new ItemStack(ModItems.gem_sodalite, 1), + new ItemStack(Blocks.gravel, 1) }); + recipes.put(new OreDictStack(REDSTONE.ore()), new ItemStack[] { new ItemStack(Items.redstone, 3), new ItemStack(Items.redstone, 3), @@ -330,9 +416,9 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(Blocks.end_stone, 1) }); recipes.put(new OreDictStack(LAPIS.ore()), new ItemStack[] { - new ItemStack(ModItems.powder_lapis, 3), - new ItemStack(ModItems.powder_lapis, 3), + new ItemStack(ModItems.powder_lapis, 6), new ItemStack(ModItems.powder_cobalt_tiny, 1), + new ItemStack(ModItems.gem_sodalite, 1), new ItemStack(Blocks.gravel, 1) }); recipes.put(new ComparableStack(ModBlocks.ore_meteor_starmetal), new ItemStack[] { @@ -368,9 +454,14 @@ public class CentrifugeRecipes extends SerializableRecipe { recipes.put(new ComparableStack(ModBlocks.block_slag), new ItemStack[] { new ItemStack(Blocks.gravel, 1), new ItemStack(ModItems.powder_fire, 1), - new ItemStack(ModItems.powder_calcium), //temp + new ItemStack(ModItems.powder_calcium), new ItemStack(ModItems.dust) }); + recipes.put(new ComparableStack(ModItems.powder_ash, 1, EnumAshType.COAL.ordinal()), new ItemStack[] { + new ItemStack(ModItems.powder_coal_tiny, 2), + new ItemStack(ModItems.powder_boron_tiny, 1), + new ItemStack(ModItems.dust_tiny, 6)}); + for(EnumBedrockOre ore : EnumBedrockOre.values()) { int i = ore.ordinal(); @@ -438,7 +529,7 @@ public class CentrifugeRecipes extends SerializableRecipe { recipes.put(new ComparableStack(ModItems.crystal_iron), new ItemStack[] { new ItemStack(ModItems.powder_iron, 2), new ItemStack(ModItems.powder_iron, 2), new ItemStack(ModItems.powder_titanium, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_gold), new ItemStack[] { new ItemStack(ModItems.powder_gold, 2), new ItemStack(ModItems.powder_gold, 2), new ItemStack(ModItems.ingot_mercury, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_redstone), new ItemStack[] { new ItemStack(Items.redstone, 3), new ItemStack(Items.redstone, 3), new ItemStack(Items.redstone, 3), new ItemStack(ModItems.ingot_mercury, 3) }); - recipes.put(new ComparableStack(ModItems.crystal_lapis), new ItemStack[] { new ItemStack(ModItems.powder_lapis, 3), new ItemStack(ModItems.powder_lapis, 3), new ItemStack(ModItems.powder_lapis, 3), new ItemStack(ModItems.powder_cobalt, 1) }); + recipes.put(new ComparableStack(ModItems.crystal_lapis), new ItemStack[] { new ItemStack(ModItems.powder_lapis, 4), new ItemStack(ModItems.powder_lapis, 4), new ItemStack(ModItems.powder_cobalt, 1), new ItemStack(ModItems.gem_sodalite, 2) }); recipes.put(new ComparableStack(ModItems.crystal_diamond), new ItemStack[] { new ItemStack(ModItems.powder_diamond, 1), new ItemStack(ModItems.powder_diamond, 1), new ItemStack(ModItems.powder_diamond, 1), new ItemStack(ModItems.powder_diamond, 1) }); recipes.put(new ComparableStack(ModItems.crystal_uranium), new ItemStack[] { new ItemStack(ModItems.powder_uranium, 2), new ItemStack(ModItems.powder_uranium, 2), new ItemStack(ModItems.nugget_ra226, 2), new ItemStack(ModItems.powder_lithium_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_thorium), new ItemStack[] { new ItemStack(ModItems.powder_thorium, 2), new ItemStack(ModItems.powder_thorium, 2), new ItemStack(ModItems.powder_uranium, 1), new ItemStack(ModItems.nugget_ra226, 1) }); @@ -449,7 +540,7 @@ public class CentrifugeRecipes extends SerializableRecipe { recipes.put(new ComparableStack(ModItems.crystal_copper), new ItemStack[] { new ItemStack(ModItems.powder_copper, 2), new ItemStack(ModItems.powder_copper, 2), new ItemStack(ModItems.sulfur, 1), new ItemStack(ModItems.powder_cobalt_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_tungsten), new ItemStack[] { new ItemStack(ModItems.powder_tungsten, 2), new ItemStack(ModItems.powder_tungsten, 2), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_aluminium), new ItemStack[] { new ItemStack(ModItems.powder_aluminium, 2), new ItemStack(ModItems.powder_aluminium, 2), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) }); - recipes.put(new ComparableStack(ModItems.crystal_fluorite), new ItemStack[] { new ItemStack(ModItems.fluorite, 3), new ItemStack(ModItems.fluorite, 3), new ItemStack(ModItems.fluorite, 3), new ItemStack(ModItems.powder_lithium_tiny, 1) }); + recipes.put(new ComparableStack(ModItems.crystal_fluorite), new ItemStack[] { new ItemStack(ModItems.fluorite, 4), new ItemStack(ModItems.fluorite, 4), new ItemStack(ModItems.gem_sodalite, 2), new ItemStack(ModItems.powder_lithium_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_beryllium), new ItemStack[] { new ItemStack(ModItems.powder_beryllium, 2), new ItemStack(ModItems.powder_beryllium, 2), new ItemStack(ModItems.powder_quartz, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_lead), new ItemStack[] { new ItemStack(ModItems.powder_lead, 2), new ItemStack(ModItems.powder_lead, 2), new ItemStack(ModItems.powder_gold, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_schraranium), new ItemStack[] { new ItemStack(ModItems.nugget_schrabidium, 2), new ItemStack(ModItems.nugget_schrabidium, 2), new ItemStack(ModItems.nugget_uranium, 2), new ItemStack(ModItems.nugget_plutonium, 2) }); diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 979ff7f1e..f3639536b 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -91,22 +91,22 @@ public class ChemplantRecipes extends SerializableRecipe { new ComparableStack(ModItems.wire_schrabidium, 4), new OreDictStack(DIAMOND.dust()), new OreDictStack(DESH.ingot())) - .inputFluids(new FluidStack(Fluids.ACID, 800), new FluidStack(Fluids.MERCURY, 200)) + .inputFluids(new FluidStack(Fluids.ACID, 800, GeneralConfig.enable528 ? 1 : 0), new FluidStack(Fluids.MERCURY, 200)) .outputItems(new ItemStack(ModItems.circuit_schrabidium))); recipes.add(new ChemRecipe(43, "POLYMER", 100) .inputItems( new OreDictStack(COAL.dust(), 2), new OreDictStack(F.dust())) - .inputFluids(new FluidStack(Fluids.PETROLEUM, 500)) + .inputFluids(new FluidStack(Fluids.PETROLEUM, 500, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.ingot_polymer))); recipes.add(new ChemRecipe(81, "BAKELITE", 100) .inputFluids( - new FluidStack(Fluids.AROMATICS, 500), - new FluidStack(Fluids.PETROLEUM, 500)) + new FluidStack(Fluids.AROMATICS, 500, GeneralConfig.enable528 ? 1 : 0), + new FluidStack(Fluids.PETROLEUM, 500, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.ingot_bakelite))); recipes.add(new ChemRecipe(82, "RUBBER", 100) .inputItems(new OreDictStack(S.dust())) - .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500)) + .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500, GeneralConfig.enable528 ? 2 : 0)) .outputItems(new ItemStack(ModItems.ingot_rubber))); /*recipes.add(new ChemRecipe(94, "PET", 100) .inputItems(new OreDictStack(AL.dust())) @@ -114,16 +114,26 @@ public class ChemplantRecipes extends SerializableRecipe { new FluidStack(Fluids.XYLENE, 500), new FluidStack(Fluids.OXYGEN, 100)) .outputItems(new ItemStack(ModItems.ingot_pet)));*/ + + //Laminate Glass going here + recipes.add(new ChemRecipe(97, "LAMINATE", 100) + .inputFluids( + new FluidStack(Fluids.XYLENE, 250), + new FluidStack(Fluids.PHOSGENE, 250)) + .inputItems( + new ComparableStack(com.hbm.blocks.ModBlocks.reinforced_glass), + new ComparableStack(com.hbm.items.ModItems.bolt_tungsten, 4)) + .outputItems(new ItemStack(com.hbm.blocks.ModBlocks.reinforced_laminate))); recipes.add(new ChemRecipe(94, "PC", 100) .inputFluids( - new FluidStack(Fluids.XYLENE, 500), - new FluidStack(Fluids.PHOSGENE, 500)) + new FluidStack(Fluids.XYLENE, 500, GeneralConfig.enable528 ? 2 : 0), + new FluidStack(Fluids.PHOSGENE, 500, GeneralConfig.enable528 ? 2 : 0)) .outputItems(new ItemStack(ModItems.ingot_pc))); recipes.add(new ChemRecipe(96, "PVC", 100) .inputItems(new OreDictStack(CD.dust())) .inputFluids( - new FluidStack(Fluids.UNSATURATEDS, 250), - new FluidStack(Fluids.CHLORINE, 250)) + new FluidStack(Fluids.UNSATURATEDS, 250, GeneralConfig.enable528 ? 2 : 0), + new FluidStack(Fluids.CHLORINE, 250, GeneralConfig.enable528 ? 2 : 0)) .outputItems(new ItemStack(ModItems.ingot_pvc, 2))); recipes.add(new ChemRecipe(89, "DYNAMITE", 50) .inputItems( @@ -133,15 +143,15 @@ public class ChemplantRecipes extends SerializableRecipe { .outputItems(new ItemStack(ModItems.ball_dynamite, 2))); recipes.add(new ChemRecipe(83, "TNT", 150) .inputItems(new OreDictStack(KNO.dust())) - .inputFluids(new FluidStack(Fluids.AROMATICS, 500)) + .inputFluids(new FluidStack(Fluids.AROMATICS, 500, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.ball_tnt, 4))); recipes.add(new ChemRecipe(95, "TATB", 50) .inputItems(new ComparableStack(ModItems.ball_tnt)) - .inputFluids(new FluidStack(Fluids.SOURGAS, 200), new FluidStack(Fluids.NITRIC_ACID, 10)) + .inputFluids(new FluidStack(Fluids.SOURGAS, 200, 1), new FluidStack(Fluids.NITRIC_ACID, 10)) .outputItems(new ItemStack(ModItems.ball_tatb))); recipes.add(new ChemRecipe(84, "C4", 150) .inputItems(new OreDictStack(KNO.dust())) - .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500)) + .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.ingot_c4, 4))); //44, formerly deuterium //45, formerly steam @@ -190,13 +200,13 @@ public class ChemplantRecipes extends SerializableRecipe { recipes.add(new ChemRecipe(55, "CONCRETE", 100) .inputItems( new ComparableStack(Blocks.gravel, 8), - new ComparableStack(Blocks.sand, 8)) + new OreDictStack(KEY_SAND, 8)) .inputFluids(new FluidStack(Fluids.WATER, 2000)) .outputItems(new ItemStack(ModBlocks.concrete_smooth, 16))); recipes.add(new ChemRecipe(56, "CONCRETE_ASBESTOS", 100) .inputItems( new ComparableStack(Blocks.gravel, 2), - new ComparableStack(Blocks.sand, 2), + new OreDictStack(KEY_SAND, 2), (GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ? new OreDictStack(ASBESTOS.ingot(), 1) : new OreDictStack(ASBESTOS.ingot(), 4)) @@ -204,7 +214,7 @@ public class ChemplantRecipes extends SerializableRecipe { .outputItems(new ItemStack(ModBlocks.concrete_asbestos, 16))); recipes.add(new ChemRecipe(79, "DUCRETE", 150) .inputItems( - new ComparableStack(Blocks.sand, 8), + new OreDictStack(KEY_SAND, 8), new OreDictStack(U238.billet(), 2), new ComparableStack(Items.clay_ball, 4)) .inputFluids(new FluidStack(Fluids.WATER, 2000)) @@ -214,7 +224,7 @@ public class ChemplantRecipes extends SerializableRecipe { new ComparableStack(ModItems.solid_fuel, 2), new OreDictStack(KNO.dust()), new OreDictStack(REDSTONE.dust())) - .inputFluids(new FluidStack(Fluids.PETROLEUM, 200)) + .inputFluids(new FluidStack(Fluids.PETROLEUM, 200, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.rocket_fuel, 4))); recipes.add(new ChemRecipe(58, "ELECTROLYSIS", 150) .inputFluids(new FluidStack(Fluids.WATER, 8000)) @@ -229,14 +239,11 @@ public class ChemplantRecipes extends SerializableRecipe { .outputFluids(new FluidStack(Fluids.XENON, 50))); recipes.add(new ChemRecipe(61, "SATURN", 60) .inputItems( - new ComparableStack(ModItems.powder_dura_steel), - new OreDictStack(P_RED.dust())) - .inputFluids( - new FluidStack(Fluids.ACID, 100), - (GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ? - new FluidStack(Fluids.WATER, 200) : - new FluidStack(Fluids.MERCURY, 50)) - .outputItems(new ItemStack(ModItems.ingot_saturnite, 2))); + new OreDictStack(DURA.dust(), 2), + new OreDictStack(CU.dust(), 1), + new OreDictStack(COAL.dust(), 1)) + .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100)) + .outputItems(new ItemStack(ModItems.ingot_saturnite, 4))); recipes.add(new ChemRecipe(62, "BALEFIRE", 100) .inputItems(new ComparableStack(ModItems.egg_balefire_shard)) .inputFluids(new FluidStack(Fluids.KEROSENE, 6000)) @@ -345,8 +352,8 @@ public class ChemplantRecipes extends SerializableRecipe { new ComparableStack(ModItems.powder_paleogenite), new OreDictStack(F.dust(), 8), new ComparableStack(ModItems.nugget_bismuth, 4)) - .inputFluids(new FluidStack(Fluids.ACID, 1000)) - .outputFluids(new FluidStack(Fluids.DEATH, 1000))); + .inputFluids(new FluidStack(Fluids.ACID, 1000, 5)) + .outputFluids(new FluidStack(Fluids.DEATH, 1000, GeneralConfig.enable528 ? 5 : 0))); //one bucket of ethanol equals 275_000 TU using the diesel baseline0 //the coal baseline is 400_000 per piece //if we assume a burntime of 1.5 ops (300 ticks) for sugar at 100 TU/t that would equal a total of 30_000 TU @@ -373,6 +380,34 @@ public class ChemplantRecipes extends SerializableRecipe { .inputItems(new OreDictStack(DIAMOND.dust(), 1)) .inputFluids(new FluidStack(Fluids.XPJUICE, 500)) .outputFluids(new FluidStack(Fluids.ENDERJUICE, 100))); + recipes.add(new ChemRecipe(98, "SHELL_CHLORINE", 100) + .inputItems( + new ComparableStack(ModItems.ammo_arty, 1, 0), + new OreDictStack(ANY_PLASTIC.ingot(), 1)) + .inputFluids(new FluidStack(Fluids.CHLORINE, 4000)) + .outputItems(new ItemStack(ModItems.ammo_arty, 1, 9))); + recipes.add(new ChemRecipe(99, "SHELL_PHOSGENE", 100) + .inputItems( + new ComparableStack(ModItems.ammo_arty, 1, 0), + new OreDictStack(ANY_PLASTIC.ingot(), 1)) + .inputFluids(new FluidStack(Fluids.PHOSGENE, 4000)) + .outputItems(new ItemStack(ModItems.ammo_arty, 1, 10))); + recipes.add(new ChemRecipe(100, "SHELL_MUSTARD", 100) + .inputItems( + new ComparableStack(ModItems.ammo_arty, 1, 0), + new OreDictStack(ANY_PLASTIC.ingot(), 1)) + .inputFluids(new FluidStack(Fluids.MUSTARDGAS, 4000)) + .outputItems(new ItemStack(ModItems.ammo_arty, 1, 11))); + recipes.add(new ChemRecipe(101, "CC_CENTRIFUGE", 200) + .inputFluids(new FluidStack(Fluids.CHLOROCALCITE_CLEANED, 500), new FluidStack(Fluids.SULFURIC_ACID, 8_000)) + .outputFluids(new FluidStack(Fluids.POTASSIUM_CHLORIDE, 250), new FluidStack(Fluids.CALCIUM_CHLORIDE, 250))); + recipes.add(new ChemRecipe(102, "THORIUM_SALT", 60) + .inputFluids(new FluidStack(Fluids.THORIUM_SALT_DEPLETED, 16_000)) + .inputItems(new OreDictStack(TH232.nugget(), 2)) + .outputFluids(new FluidStack(Fluids.THORIUM_SALT, 16_000)) + .outputItems( + new ItemStack(ModItems.nugget_u233, 1), + new ItemStack(ModItems.nuclear_waste_tiny, 1))); } public static void registerFuelProcessing() { diff --git a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java index 1c74b406c..d6f9cf30d 100644 --- a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java @@ -50,12 +50,16 @@ public class CokerRecipes extends SerializableRecipe { registerAuto(AROMATICS, GAS_COKER); registerAuto(REFORMATE, GAS_COKER); registerAuto(XYLENE, GAS_COKER); + registerAuto(FISHOIL, MERCURY); + registerAuto(SUNFLOWEROIL, GAS_COKER); registerSFAuto(WOODOIL, 340_000L, new ItemStack(Items.coal, 1, 1), GAS_COKER); registerRecipe(WATZ, 4_000, new ItemStack(ModItems.ingot_mud, 4), null); + registerRecipe(REDMUD, 1_000, new ItemStack(Items.iron_ingot, 1), new FluidStack(MERCURY, 50)); registerRecipe(BITUMEN, 16_000, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), new FluidStack(OIL_COKER, 1_600)); registerRecipe(LUBRICANT, 12_000, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), new FluidStack(OIL_COKER, 1_200)); + registerRecipe(CALCIUM_SOLUTION, 125, new ItemStack(ModItems.powder_calcium), new FluidStack(SPENTSTEAM, 100)); } private static void registerAuto(FluidType fluid, FluidType type) { diff --git a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java index fa3b7ffaa..2b70c1359 100644 --- a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java @@ -9,6 +9,8 @@ import static com.hbm.inventory.OreDictManager.*; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.BlockEnums.EnumStoneType; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.FluidStack; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.RecipesCommon.AStack; @@ -16,6 +18,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ItemEnums.EnumBriquetteType; import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ItemEnums.EnumTarType; @@ -23,6 +26,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.util.Tuple.Pair; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -35,18 +39,21 @@ public class CombinationRecipes extends SerializableRecipe { recipes.put(COAL.gem(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), new FluidStack(Fluids.COALCREOSOTE, 100))); recipes.put(COAL.dust(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), new FluidStack(Fluids.COALCREOSOTE, 100))); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.COAL)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), new FluidStack(Fluids.COALCREOSOTE, 150))); - recipes.put(LIGNITE.gem(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 50))); recipes.put(LIGNITE.dust(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 50))); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.LIGNITE)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 100))); - - recipes.put(CINNABAR.crystal(), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.MERCURY, 100))); - recipes.put(new ComparableStack(Items.glowstone_dust), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.CHLORINE, 50))); - recipes.put(KEY_LOG, new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 250))); - recipes.put(KEY_SAPLING, new Pair(null, new FluidStack(Fluids.WOODOIL, 50))); - recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.WOOD)), new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 500))); + //recipes.put(CHLOROCALCITE.dust(), new Pair(new ItemStack(ModItems.powder_calcium), new FluidStack(Fluids.CHLORINE, 250))); + recipes.put(CINNABAR.crystal(), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.MERCURY, 100))); + recipes.put(new ComparableStack(Items.glowstone_dust), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.CHLORINE, 100))); + recipes.put(SODALITE.gem(), new Pair(new ItemStack(ModItems.powder_sodium), new FluidStack(Fluids.CHLORINE, 100))); + recipes.put(new ComparableStack(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.BAUXITE)), new Pair(new ItemStack(ModItems.ingot_aluminium, 2), new FluidStack(Fluids.REDMUD, 250))); + recipes.put(NA.dust(), new Pair(null, new FluidStack(Fluids.SODIUM, 100))); + + recipes.put(KEY_LOG, new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 250))); + recipes.put(KEY_SAPLING, new Pair(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.WOOD), new FluidStack(Fluids.WOODOIL, 50))); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.WOOD)), new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 500))); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), null)); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), null)); @@ -54,6 +61,7 @@ public class CombinationRecipes extends SerializableRecipe { recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WOOD)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), null)); recipes.put(new ComparableStack(Items.reeds), new Pair(new ItemStack(Items.sugar, 2), new FluidStack(Fluids.ETHANOL, 50))); + recipes.put(new ComparableStack(Blocks.clay), new Pair(new ItemStack(Blocks.brick_block, 1), null)); } public static Pair getOutput(ItemStack stack) { diff --git a/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java b/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java new file mode 100644 index 000000000..9b5ef555d --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java @@ -0,0 +1,83 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map.Entry; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.util.Tuple.Pair; + +public class CompressorRecipes extends SerializableRecipe { + + public static HashMap, CompressorRecipe> recipes = new HashMap(); + + @Override + public void registerDefaults() { + recipes.put(new Pair(Fluids.STEAM, 0), new CompressorRecipe(1_000, new FluidStack(Fluids.HOTSTEAM, 100))); + recipes.put(new Pair(Fluids.HOTSTEAM, 0), new CompressorRecipe(1_000, new FluidStack(Fluids.SUPERHOTSTEAM, 100))); + recipes.put(new Pair(Fluids.SUPERHOTSTEAM, 0), new CompressorRecipe(1_000, new FluidStack(Fluids.ULTRAHOTSTEAM, 100))); + + recipes.put(new Pair(Fluids.PETROLEUM, 0), new CompressorRecipe(2_000, new FluidStack(Fluids.PETROLEUM, 2_000, 1), 20)); + recipes.put(new Pair(Fluids.PETROLEUM, 1), new CompressorRecipe(2_000, new FluidStack(Fluids.LPG, 1_000, 0), 20)); + + recipes.put(new Pair(Fluids.BLOOD, 3), new CompressorRecipe(1_000, new FluidStack(Fluids.OIL, 500, 0), 100)); + } + + public static class CompressorRecipe { + + public FluidStack output; + public int inputAmount; + public int duration; + + public CompressorRecipe(int input, FluidStack output, int duration) { + this.output = output; + this.inputAmount = input; + this.duration = duration; + } + + public CompressorRecipe(int input, FluidStack output) { + this(input, output, 100); + } + } + + @Override + public String getFileName() { + return "hbmCompressor.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = recipe.getAsJsonObject(); + + FluidStack input = this.readFluidStack(obj.get("input").getAsJsonArray()); + FluidStack output = this.readFluidStack(obj.get("output").getAsJsonArray()); + + recipes.put(new Pair(input.type, input.pressure), new CompressorRecipe(input.fill, output)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + Entry, CompressorRecipe> entry = (Entry) recipe; + + writer.name("input"); + this.writeFluidStack(new FluidStack(entry.getKey().getKey(), entry.getValue().inputAmount, entry.getKey().getValue()), writer); + writer.name("output"); + this.writeFluidStack(entry.getValue().output, writer); + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java index 9fa52a29e..fecbd9e20 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java @@ -186,11 +186,11 @@ public class CrucibleRecipes extends SerializableRecipe { input[i] = new MaterialStack(Mats.matByName.get(matname), amount); } MaterialStack[] output = new MaterialStack[obj.get("output").getAsJsonArray().size()]; - for(int i = 0; i < input.length; i++) { + for(int i = 0; i < output.length; i++) { JsonArray entry = obj.get("output").getAsJsonArray().get(i).getAsJsonArray(); String matname = entry.get(0).getAsString(); int amount = entry.get(1).getAsInt(); - input[i] = new MaterialStack(Mats.matByName.get(matname), amount); + output[i] = new MaterialStack(Mats.matByName.get(matname), amount); } recipes.add(new CrucibleRecipe(id, name, freq, icon).inputs(input).outputs(output)); } @@ -248,7 +248,7 @@ public class CrucibleRecipes extends SerializableRecipe { if(!ores.isEmpty()) { List stacks = new ArrayList(); - stacks.add(ItemScraps.create(new MaterialStack(convert, (int) (shape.q(1) * out / in)))); + stacks.add(ItemScraps.create(new MaterialStack(convert, (int) (shape.q(1) * out / in)), true)); map.put(new OreDictStack(name), stacks); } } @@ -257,7 +257,7 @@ public class CrucibleRecipes extends SerializableRecipe { for(Entry> entry : Mats.materialOreEntries.entrySet()) { List stacks = new ArrayList(); for(MaterialStack mat : entry.getValue()) { - stacks.add(ItemScraps.create(mat)); + stacks.add(ItemScraps.create(mat, true)); } map.put(new OreDictStack(entry.getKey()), stacks); } @@ -265,7 +265,7 @@ public class CrucibleRecipes extends SerializableRecipe { for(Entry> entry : Mats.materialEntries.entrySet()) { List stacks = new ArrayList(); for(MaterialStack mat : entry.getValue()) { - stacks.add(ItemScraps.create(mat)); + stacks.add(ItemScraps.create(mat, true)); } map.put(entry.getKey().copy(), stacks); } @@ -293,7 +293,7 @@ public class CrucibleRecipes extends SerializableRecipe { for(Mold mold : ItemMold.molds) { ItemStack out = mold.getOutput(material); if(out != null) { - ItemStack scrap = ItemScraps.create(new MaterialStack(material, mold.getCost())); + ItemStack scrap = ItemScraps.create(new MaterialStack(material, mold.getCost()), true); ItemStack shape = new ItemStack(ModItems.mold, 1, mold.id); ItemStack basin = new ItemStack(mold.size == 0 ? ModBlocks.foundry_mold : mold.size == 1 ? ModBlocks.foundry_basin : Blocks.fire); ItemStack[] entry = new ItemStack[] {scrap, shape, basin, out}; diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 933a7c970..8f33e422e 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -19,6 +19,7 @@ import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ItemEnums.EnumPlantType; import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.ModItems; @@ -95,6 +96,7 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(Items.dye, 1, 15), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 4), 20), new FluidStack(Fluids.SULFURIC_ACID, 250)); registerRecipe(new ComparableStack(Items.bone), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 16), 20), new FluidStack(Fluids.SULFURIC_ACID, 1_000)); registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.plant_item, EnumPlantType.MUSTARDWILLOW)), new CrystallizerRecipe(new ItemStack(ModItems.powder_cadmium), 100).setReq(10), new FluidStack(Fluids.RADIOSOLVENT, 250)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE)), new CrystallizerRecipe(new ItemStack(ModItems.ingot_cft), baseTime).setReq(4), new FluidStack(Fluids.XYLENE, 1_000)); registerRecipe(DIAMOND.dust(), new CrystallizerRecipe(Items.diamond, utilityTime)); registerRecipe(EMERALD.dust(), new CrystallizerRecipe(Items.emerald, utilityTime)); @@ -102,6 +104,7 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ModItems.powder_semtex_mix), new CrystallizerRecipe(ModItems.ingot_semtex, baseTime)); registerRecipe(new ComparableStack(ModItems.powder_desh_ready), new CrystallizerRecipe(ModItems.ingot_desh, baseTime)); registerRecipe(new ComparableStack(ModItems.powder_meteorite), new CrystallizerRecipe(ModItems.fragment_meteorite, utilityTime)); + registerRecipe(CD.dust(), new CrystallizerRecipe(ModItems.ingot_rubber, baseTime), new FluidStack(Fluids.FISHOIL, 250)); registerRecipe(new ComparableStack(ModItems.meteorite_sword_treated), new CrystallizerRecipe(ModItems.meteorite_sword_etched, baseTime)); registerRecipe(new ComparableStack(ModItems.powder_impure_osmiridium), new CrystallizerRecipe(ModItems.crystal_osmiridium, baseTime), new FluidStack(Fluids.SCHRABIDIC, 1_000)); @@ -126,20 +129,25 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ModItems.ore_nitrocrystalline, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_seared, 1, i), oreTime), hiperf); } - FluidStack woodOil = new FluidStack(Fluids.WOODOIL, 100); - registerRecipe(COAL.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLACK, 4), 20), woodOil); - registerRecipe(TI.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.WHITE, 4), 20), woodOil); - registerRecipe(IRON.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.RED, 4), 20), woodOil); - registerRecipe(W.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.YELLOW, 4), 20), woodOil); - registerRecipe(CU.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GREEN, 4), 20), woodOil); - registerRecipe(CO.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLUE, 4), 20), woodOil); + FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100)}; + for(FluidStack dye : dyes) { + registerRecipe(COAL.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLACK, 4), 20), dye); + registerRecipe(TI.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.WHITE, 4), 20), dye); + registerRecipe(IRON.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.RED, 4), 20), dye); + registerRecipe(W.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.YELLOW, 4), 20), dye); + registerRecipe(CU.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GREEN, 4), 20), dye); + registerRecipe(CO.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLUE, 4), 20), dye); + } registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 250)); registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 100)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 100)); registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX)), new CrystallizerRecipe(new ItemStack(ModItems.pellet_charged), 200), new FluidStack(Fluids.IONGEL, 500)); registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN)), new CrystallizerRecipe(new ItemStack(ModItems.pill_red), 200), new FluidStack(Fluids.ESTRADIOL, 250)); registerRecipe(KEY_SAND, new CrystallizerRecipe(Blocks.clay, 20), new FluidStack(Fluids.COLLOID, 1_000)); + registerRecipe(new ComparableStack(ModBlocks.sand_quartz), new CrystallizerRecipe(new ItemStack(ModItems.ball_dynamite, 16), 20), new FluidStack(Fluids.NITROGLYCERIN, 1_000)); + registerRecipe(NETHERQUARTZ.dust(), new CrystallizerRecipe(new ItemStack(ModItems.ball_dynamite, 4), 20), new FluidStack(Fluids.NITROGLYCERIN, 250)); /// COMPAT CERTUS QUARTZ /// List quartz = OreDictionary.getOres("crystalCertusQuartz"); diff --git a/src/main/java/com/hbm/inventory/recipes/CustomMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/CustomMachineRecipes.java new file mode 100644 index 000000000..e3fe13cef --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/CustomMachineRecipes.java @@ -0,0 +1,127 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; +import com.hbm.util.Tuple.Pair; + +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class CustomMachineRecipes extends SerializableRecipe { + + public static HashMap> recipes = new HashMap(); + + @Override + public void registerDefaults() { + + recipes.put("paperPress", new ArrayList() {{ + CustomMachineRecipe recipe = new CustomMachineRecipe(); + recipe.inputFluids = new FluidStack[] {new FluidStack(Fluids.WATER, 250)}; + recipe.inputItems = new AStack[] {new ComparableStack(ModItems.powder_sawdust)}; + recipe.outputFluids = new FluidStack[0]; + recipe.outputItems = new Pair[] {new Pair(new ItemStack(Items.paper, 3), 1F)}; + recipe.duration = 60; + recipe.consumptionPerTick = 10; + add(recipe); + }}); + } + + @Override + public String getFileName() { + return "hbmCustomMachines.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = recipe.getAsJsonObject(); + + String name = obj.get("recipeKey").getAsString(); + List list = new ArrayList(); + JsonArray array = obj.get("recipes").getAsJsonArray(); + + for(int i = 0; i < array.size(); i++) { + JsonObject rec = array.get(i).getAsJsonObject(); + CustomMachineRecipe recipeInstance = new CustomMachineRecipe(); + recipeInstance.inputFluids = this.readFluidArray(rec.get("inputFluids").getAsJsonArray()); + recipeInstance.inputItems = this.readAStackArray(rec.get("inputItems").getAsJsonArray()); + recipeInstance.outputFluids = this.readFluidArray(rec.get("outputFluids").getAsJsonArray()); + recipeInstance.outputItems = this.readItemStackArrayChance(rec.get("outputItems").getAsJsonArray()); + recipeInstance.duration = rec.get("duration").getAsInt(); + recipeInstance.consumptionPerTick = rec.get("consumptionPerTick").getAsInt(); + list.add(recipeInstance); + } + + recipes.put(name, list); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + Entry> entry = (Entry) recipe; + + writer.name("recipeKey").value(entry.getKey()); + writer.name("recipes").beginArray(); + + for(CustomMachineRecipe recipeInstance : entry.getValue()) { + writer.beginObject(); + + writer.name("inputFluids").beginArray(); + for(FluidStack stack : recipeInstance.inputFluids) this.writeFluidStack(stack, writer); + writer.endArray(); + + writer.name("inputItems").beginArray(); + for(AStack stack : recipeInstance.inputItems) this.writeAStack(stack, writer); + writer.endArray(); + + writer.name("outputFluids").beginArray(); + for(FluidStack stack : recipeInstance.outputFluids) this.writeFluidStack(stack, writer); + writer.endArray(); + + writer.name("outputItems").beginArray(); + for(Pair stack : recipeInstance.outputItems) this.writeItemStackChance(stack, writer); + writer.endArray(); + + writer.name("duration").value(recipeInstance.duration); + writer.name("consumptionPerTick").value(recipeInstance.consumptionPerTick); + + writer.endObject(); + } + + writer.endArray(); + } + + public static class CustomMachineRecipe { + + public FluidStack[] inputFluids; + public AStack[] inputItems; + public FluidStack[] outputFluids; + public Pair[] outputItems; + + public int duration; + public int consumptionPerTick; + } + +} diff --git a/src/main/java/com/hbm/inventory/recipes/ElectrolyserFluidRecipes.java b/src/main/java/com/hbm/inventory/recipes/ElectrolyserFluidRecipes.java new file mode 100644 index 000000000..658f0d305 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/ElectrolyserFluidRecipes.java @@ -0,0 +1,110 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; + +import net.minecraft.item.ItemStack; + +public class ElectrolyserFluidRecipes extends SerializableRecipe { + + public static HashMap recipes = new HashMap(); + + @Override + public void registerDefaults() { + recipes.put(Fluids.WATER, new ElectrolysisRecipe(1_000, new FluidStack(Fluids.HYDROGEN, 100), new FluidStack(Fluids.OXYGEN, 100))); + recipes.put(Fluids.HEAVYWATER, new ElectrolysisRecipe(1_000, new FluidStack(Fluids.DEUTERIUM, 50), new FluidStack(Fluids.OXYGEN, 50))); + + recipes.put(Fluids.POTASSIUM_CHLORIDE, new ElectrolysisRecipe(250, new FluidStack(Fluids.CHLORINE, 125), new FluidStack(Fluids.NONE, 0), new ItemStack(ModItems.dust))); + recipes.put(Fluids.CALCIUM_CHLORIDE, new ElectrolysisRecipe(250, new FluidStack(Fluids.CHLORINE, 125), new FluidStack(Fluids.CALCIUM_SOLUTION, 125))); + } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(Entry entry : ElectrolyserFluidRecipes.recipes.entrySet()) { + + ElectrolysisRecipe recipe = entry.getValue(); + FluidStack input = new FluidStack(entry.getKey(), recipe.amount); + List outputs = new ArrayList(); + if(recipe.output1.type != Fluids.NONE) outputs.add(ItemFluidIcon.make(recipe.output1)); + if(recipe.output2.type != Fluids.NONE) outputs.add(ItemFluidIcon.make(recipe.output2)); + for(ItemStack byproduct : recipe.byproduct) outputs.add(byproduct); + + recipes.put(ItemFluidIcon.make(input), outputs.toArray()); + } + + return recipes; + } + + @Override + public String getFileName() { + return "hbmElectrolyzerFluid.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + + FluidStack input = this.readFluidStack(obj.get("input").getAsJsonArray()); + FluidStack output1 = this.readFluidStack(obj.get("output1").getAsJsonArray()); + FluidStack output2 = this.readFluidStack(obj.get("output2").getAsJsonArray()); + + ItemStack[] byproducts = new ItemStack[0]; + if(obj.has("byproducts")) byproducts = this.readItemStackArray(obj.get("byproducts").getAsJsonArray()); + + recipes.put(input.type, new ElectrolysisRecipe(input.fill, output1, output2, byproducts)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + Entry rec = (Entry) recipe; + + writer.name("input"); this.writeFluidStack(new FluidStack(rec.getKey(), rec.getValue().amount), writer); + writer.name("output1"); this.writeFluidStack(rec.getValue().output1, writer); + writer.name("output2"); this.writeFluidStack(rec.getValue().output2, writer); + + if(rec.getValue().byproduct != null && rec.getValue().byproduct.length > 0) { + writer.name("byproducts").beginArray(); + for(ItemStack stack : rec.getValue().byproduct) this.writeItemStack(stack, writer); + writer.endArray(); + } + } + + public static class ElectrolysisRecipe { + public FluidStack output1; + public FluidStack output2; + public int amount; + public ItemStack[] byproduct; + + public ElectrolysisRecipe(int amount, FluidStack output1, FluidStack output2, ItemStack... byproduct) { + this.output1 = output1; + this.output2 = output2; + this.amount = amount; + this.byproduct = byproduct; + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java b/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java new file mode 100644 index 000000000..aabebb3a4 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java @@ -0,0 +1,244 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.items.machine.ItemScraps; +import com.hbm.util.ItemStackUtil; + +import net.minecraft.item.ItemStack; + +public class ElectrolyserMetalRecipes extends SerializableRecipe { + + public static HashMap recipes = new HashMap(); + + @Override + public void registerDefaults() { + + recipes.put(new ComparableStack(ModItems.crystal_iron), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_TITANIUM, MaterialShapes.INGOT.q(2)), + new ItemStack(ModItems.powder_lithium_tiny, 3))); + + recipes.put(new ComparableStack(ModItems.crystal_gold), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_GOLD, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_LEAD, MaterialShapes.INGOT.q(2)), + new ItemStack(ModItems.powder_lithium_tiny, 3), + new ItemStack(ModItems.ingot_mercury, 2))); + + recipes.put(new ComparableStack(ModItems.crystal_uranium), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_URANIUM, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_RADIUM, MaterialShapes.NUGGET.q(4)), + new ItemStack(ModItems.powder_lithium_tiny, 3))); + + recipes.put(new ComparableStack(ModItems.crystal_thorium), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_THORIUM, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_URANIUM, MaterialShapes.INGOT.q(2)), + new ItemStack(ModItems.powder_lithium_tiny, 3))); + + recipes.put(new ComparableStack(ModItems.crystal_plutonium), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_PLUTONIUM, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_POLONIUM, MaterialShapes.INGOT.q(2)), + new ItemStack(ModItems.powder_lithium_tiny, 3))); + + recipes.put(new ComparableStack(ModItems.crystal_titanium), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_TITANIUM, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(2)), + new ItemStack(ModItems.powder_lithium_tiny, 3))); + + recipes.put(new ComparableStack(ModItems.crystal_copper), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_COPPER, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_LEAD, MaterialShapes.NUGGET.q(4)), + new ItemStack(ModItems.powder_lithium_tiny, 3), + new ItemStack(ModItems.sulfur, 2))); + + recipes.put(new ComparableStack(ModItems.crystal_tungsten), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_TUNGSTEN, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(2)), + new ItemStack(ModItems.powder_lithium_tiny, 3))); + + recipes.put(new ComparableStack(ModItems.crystal_aluminium), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_ALUMINIUM, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(2)), + new ItemStack(ModItems.powder_lithium_tiny, 3))); + + recipes.put(new ComparableStack(ModItems.crystal_beryllium), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_BERYLLIUM, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_LEAD, MaterialShapes.NUGGET.q(4)), + new ItemStack(ModItems.powder_lithium_tiny, 3), + new ItemStack(ModItems.powder_quartz, 2))); + + recipes.put(new ComparableStack(ModItems.crystal_lead), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_LEAD, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_GOLD, MaterialShapes.INGOT.q(2)), + new ItemStack(ModItems.powder_lithium_tiny, 3))); + + recipes.put(new ComparableStack(ModItems.crystal_schraranium), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_SCHRABIDIUM, MaterialShapes.NUGGET.q(5)), + new MaterialStack(Mats.MAT_URANIUM, MaterialShapes.NUGGET.q(2)), + new ItemStack(ModItems.nugget_plutonium, 2))); + + recipes.put(new ComparableStack(ModItems.crystal_schrabidium), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_SCHRABIDIUM, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_PLUTONIUM, MaterialShapes.INGOT.q(2)), + new ItemStack(ModItems.powder_lithium_tiny, 3))); + + recipes.put(new ComparableStack(ModItems.crystal_rare), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_ZIRCONIUM, MaterialShapes.NUGGET.q(6)), + new MaterialStack(Mats.MAT_BORON, MaterialShapes.NUGGET.q(2)), + new ItemStack(ModItems.powder_desh_mix, 3))); + + recipes.put(new ComparableStack(ModItems.crystal_trixite), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_PLUTONIUM, MaterialShapes.INGOT.q(3)), + new MaterialStack(Mats.MAT_COBALT, MaterialShapes.INGOT.q(4)), + new ItemStack(ModItems.powder_niobium, 4), + new ItemStack(ModItems.powder_nitan_mix, 2))); + + recipes.put(new ComparableStack(ModItems.crystal_lithium), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_LITHIUM, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_BORON, MaterialShapes.INGOT.q(2)), + new ItemStack(ModItems.powder_quartz, 2), + new ItemStack(ModItems.fluorite, 2))); + + recipes.put(new ComparableStack(ModItems.crystal_starmetal), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_DURA, MaterialShapes.INGOT.q(4)), + new MaterialStack(Mats.MAT_COBALT, MaterialShapes.INGOT.q(4)), + new ItemStack(ModItems.powder_astatine, 3), + new ItemStack(ModItems.ingot_mercury, 8))); + + recipes.put(new ComparableStack(ModItems.crystal_cobalt), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_COBALT, MaterialShapes.INGOT.q(3)), + new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(4)), + new ItemStack(ModItems.powder_copper, 4), + new ItemStack(ModItems.powder_lithium_tiny, 3))); + } + + public static ElectrolysisMetalRecipe getRecipe(ItemStack stack) { + + ComparableStack comp = new ComparableStack(stack).makeSingular(); + + if(recipes.containsKey(comp)) return recipes.get(comp); + + List names = ItemStackUtil.getOreDictNames(stack); + + for(String name : names) { + OreDictStack ore = new OreDictStack(name); + if(recipes.containsKey(ore)) return recipes.get(ore); + } + + return null; + } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(Entry entry : ElectrolyserMetalRecipes.recipes.entrySet()) { + + ElectrolysisMetalRecipe recipe = entry.getValue(); + Object[] input = new Object[] { entry.getKey().copy(), ItemFluidIcon.make(Fluids.NITRIC_ACID, 100) }; + List outputs = new ArrayList(); + if(recipe.output1 != null) outputs.add(ItemScraps.create(recipe.output1, true)); + if(recipe.output2 != null) outputs.add(ItemScraps.create(recipe.output2, true)); + for(ItemStack byproduct : recipe.byproduct) outputs.add(byproduct); + + recipes.put(input, outputs.toArray()); + } + + return recipes; + } + + @Override + public String getFileName() { + return "hbmElectrolyzerMetal.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + + AStack input = this.readAStack(obj.get("input").getAsJsonArray()); + + JsonArray out1 = obj.get("output1").getAsJsonArray(); + String name1 = out1.get(0).getAsString(); + int amount1 = out1.get(1).getAsInt(); + MaterialStack output1 = new MaterialStack(Mats.matByName.get(name1), amount1); + + JsonArray out2 = obj.get("output2").getAsJsonArray(); + String name2 = out2.get(0).getAsString(); + int amount2 = out2.get(1).getAsInt(); + MaterialStack output2 = new MaterialStack(Mats.matByName.get(name2), amount2); + + ItemStack[] byproducts = new ItemStack[0]; + if(obj.has("byproducts")) byproducts = this.readItemStackArray(obj.get("byproducts").getAsJsonArray()); + + recipes.put(input, new ElectrolysisMetalRecipe(output1, output2, byproducts)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + Entry rec = (Entry) recipe; + + writer.name("input"); this.writeAStack(rec.getKey(), writer); + + writer.name("output1"); + writer.beginArray(); + writer.setIndent(""); + writer.value(rec.getValue().output1.material.names[0]).value(rec.getValue().output1.amount); + writer.endArray(); + writer.setIndent(" "); + + writer.name("output2"); + writer.beginArray(); + writer.setIndent(""); + writer.value(rec.getValue().output2.material.names[0]).value(rec.getValue().output2.amount); + writer.endArray(); + writer.setIndent(" "); + + if(rec.getValue().byproduct != null && rec.getValue().byproduct.length > 0) { + writer.name("byproducts").beginArray(); + for(ItemStack stack : rec.getValue().byproduct) this.writeItemStack(stack, writer); + writer.endArray(); + } + } + + public static class ElectrolysisMetalRecipe { + + public MaterialStack output1; + public MaterialStack output2; + public ItemStack[] byproduct; + + public ElectrolysisMetalRecipe(MaterialStack output1, MaterialStack output2, ItemStack... byproduct) { + this.output1 = output1; + this.output2 = output2; + this.byproduct = byproduct; + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java b/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java new file mode 100644 index 000000000..cb42e3140 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java @@ -0,0 +1,108 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import static com.hbm.inventory.OreDictManager.*; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; + +import net.minecraft.item.ItemStack; + +public class ExposureChamberRecipes extends SerializableRecipe { + + public static List recipes = new ArrayList(); + + @Override + public void registerDefaults() { + recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_higgs), new OreDictStack(U.ingot()), new ItemStack(ModItems.ingot_schraranium))); + recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_higgs), new OreDictStack(U238.ingot()), new ItemStack(ModItems.ingot_schrabidium))); + recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_dark), new OreDictStack(PU.ingot()), new ItemStack(ModItems.ingot_euphemium))); + recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_sparkticle), new OreDictStack(SBD.ingot()), new ItemStack(ModItems.ingot_dineutronium))); + } + + public static ExposureChamberRecipe getRecipe(ItemStack particle, ItemStack input) { + for(ExposureChamberRecipe recipe : recipes) if(recipe.particle.matchesRecipe(particle, true) && recipe.ingredient.matchesRecipe(input, true)) return recipe; + return null; + } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(ExposureChamberRecipe recipe : ExposureChamberRecipes.recipes) { + + Object[] array = new Object[2]; + + array[1] = recipe.particle; + AStack stack = recipe.ingredient.copy(); + stack.stacksize = 8; + array[0] = stack; + + recipes.put(array, recipe.output); + } + + return recipes; + } + + @Override + public String getFileName() { + return "hbmExposureChamber.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + + JsonObject obj = (JsonObject) recipe; + + AStack particle = this.readAStack(obj.get("particle").getAsJsonArray()); + AStack ingredient = this.readAStack(obj.get("ingredient").getAsJsonArray()); + ItemStack output = this.readItemStack(obj.get("output").getAsJsonArray()); + + ExposureChamberRecipe rec = new ExposureChamberRecipe(particle, ingredient, output); + recipes.add(rec); + } + + @Override + public void writeRecipe(Object o, JsonWriter writer) throws IOException { + ExposureChamberRecipe recipe = (ExposureChamberRecipe) o; + + writer.name("particle"); + this.writeAStack(recipe.particle, writer); + writer.name("ingredient"); + this.writeAStack(recipe.ingredient, writer); + writer.name("output"); + this.writeItemStack(recipe.output, writer); + } + + public static class ExposureChamberRecipe { + + public AStack particle; + public AStack ingredient; + public ItemStack output; + + public ExposureChamberRecipe(AStack particle, AStack ingredient, ItemStack output) { + this.particle = particle; + this.ingredient = ingredient; + this.output = output; + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java index 00f49aeae..b3b673a6a 100644 --- a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java @@ -63,6 +63,7 @@ public class FractionRecipes extends SerializableRecipe { fractions.put(Fluids.OIL_COKER, new Pair(new FluidStack(Fluids.CRACKOIL, 30), new FluidStack(Fluids.HEATINGOIL, 70))); fractions.put(Fluids.NAPHTHA_COKER, new Pair(new FluidStack(Fluids.NAPHTHA_CRACK, 75), new FluidStack(Fluids.LIGHTOIL_CRACK, 25))); fractions.put(Fluids.GAS_COKER, new Pair(new FluidStack(Fluids.AROMATICS, 25), new FluidStack(Fluids.CARBONDIOXIDE, 75))); + fractions.put(Fluids.CHLOROCALCITE_MIX, new Pair(new FluidStack(Fluids.CHLOROCALCITE_CLEANED, 50), new FluidStack(Fluids.COLLOID, 50))); } public static Pair getFractions(FluidType oil) { diff --git a/src/main/java/com/hbm/inventory/recipes/FuelPoolRecipes.java b/src/main/java/com/hbm/inventory/recipes/FuelPoolRecipes.java index 2e80c2bb4..9f01c9d80 100644 --- a/src/main/java/com/hbm/inventory/recipes/FuelPoolRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/FuelPoolRecipes.java @@ -11,6 +11,7 @@ import com.google.gson.stream.JsonWriter; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; import net.minecraft.item.ItemStack; @@ -37,6 +38,8 @@ public class FuelPoolRecipes extends SerializableRecipe { recipes.put(new ComparableStack(ModItems.waste_plate_sa326, 1, 1), new ItemStack(ModItems.waste_plate_sa326)); recipes.put(new ComparableStack(ModItems.waste_plate_ra226be, 1, 1), new ItemStack(ModItems.waste_plate_ra226be)); recipes.put(new ComparableStack(ModItems.waste_plate_pu238be, 1, 1), new ItemStack(ModItems.waste_plate_pu238be)); + + for(EnumPWRFuel pwr : EnumPWRFuel.values()) recipes.put(new ComparableStack(ModItems.pwr_fuel_hot, 1, pwr.ordinal()), new ItemStack(ModItems.pwr_fuel_depleted, 1, pwr.ordinal())); } @Override diff --git a/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java index abbdea91a..c352c085d 100644 --- a/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java @@ -2,10 +2,12 @@ package com.hbm.inventory.recipes; import java.util.HashMap; import java.util.Iterator; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; @@ -15,63 +17,47 @@ import net.minecraft.item.ItemStack; public class GasCentrifugeRecipes { - public static enum PseudoFluidType { - NONE (0, 0, null, false, (ItemStack[])null), + public static class PseudoFluidType { - HEUF6 (300, 0, NONE, true, new ItemStack(ModItems.nugget_u238, 2), new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.fluorite, 1)), - MEUF6 (200, 100, HEUF6, false, new ItemStack(ModItems.nugget_u238, 1)), - LEUF6 (300, 200, MEUF6, false, new ItemStack(ModItems.nugget_u238, 1), new ItemStack(ModItems.fluorite, 1)), - NUF6 (400, 300, LEUF6, false, new ItemStack(ModItems.nugget_u238, 1)), + public static HashMap types = new HashMap(); - PF6 (300, 0, NONE, false, new ItemStack(ModItems.nugget_pu238, 1), new ItemStack(ModItems.nugget_pu_mix, 2), new ItemStack(ModItems.fluorite, 1)), + public static PseudoFluidType NONE = new PseudoFluidType("NONE", 0, 0, null, false, (ItemStack[])null); - MUD_HEAVY (500, 0, NONE, false, new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.dust, 1), new ItemStack(ModItems.nuclear_waste_tiny, 1)), - MUD (1000, 500, MUD_HEAVY, false, new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.dust, 1)); + public static PseudoFluidType HEUF6 = new PseudoFluidType("HEUF6", 300, 0, NONE, true, new ItemStack(ModItems.nugget_u238, 2), new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.fluorite, 1)); + public static PseudoFluidType MEUF6 = new PseudoFluidType("MEUF6", 200, 100, HEUF6, false, new ItemStack(ModItems.nugget_u238, 1)); + public static PseudoFluidType LEUF6 = new PseudoFluidType("LEUF6", 300, 200, MEUF6, false, new ItemStack(ModItems.nugget_u238, 1), new ItemStack(ModItems.fluorite, 1)); + public static PseudoFluidType NUF6 = new PseudoFluidType("NUF6", 400, 300, LEUF6, false, new ItemStack(ModItems.nugget_u238, 1)); - //TODO for bob: consider more fluid types - //Schraranium Trisulfide for more schrab-containing, pre-SILEX processing using the crystals? - //Gaseous Nuclear Waste: because why not? Large inputs could output Xe-135 and maybe some other fun stuff... - // + public static PseudoFluidType PF6 = new PseudoFluidType("PF6", 300, 0, NONE, false, new ItemStack(ModItems.nugget_pu238, 1), new ItemStack(ModItems.nugget_pu_mix, 2), new ItemStack(ModItems.fluorite, 1)); + public static PseudoFluidType MUD_HEAVY = new PseudoFluidType("MUD_HEAVY", 500, 0, NONE, false, new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.dust, 1), new ItemStack(ModItems.nuclear_waste_tiny, 1)); + public static PseudoFluidType MUD = new PseudoFluidType("MUD", 1000, 500, MUD_HEAVY, false, new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.dust, 1)); + + public String name; int fluidConsumed; int fluidProduced; PseudoFluidType outputFluid; boolean isHighSpeed; ItemStack[] output; - PseudoFluidType(int fluidConsumed, int fluidProduced, PseudoFluidType outputFluid, boolean isHighSpeed, ItemStack... output) { + PseudoFluidType(String name, int fluidConsumed, int fluidProduced, PseudoFluidType outputFluid, boolean isHighSpeed, ItemStack... output) { + this.name = name; this.fluidConsumed = fluidConsumed; this.fluidProduced = fluidProduced; this.outputFluid = outputFluid; this.isHighSpeed = isHighSpeed; this.output = output; + types.put(name, this); } - public int getFluidConsumed() { - return this.fluidConsumed; - } + public int getFluidConsumed() { return this.fluidConsumed; } + public int getFluidProduced() { return this.fluidProduced; } + public PseudoFluidType getOutputType() { return this.outputFluid; } + public ItemStack[] getOutput() { return this.output; } + public boolean getIfHighSpeed() { return this.isHighSpeed; } + public String getName() { return I18nUtil.resolveKey("hbmpseudofluid.".concat(this.name.toLowerCase(Locale.US))); } - public int getFluidProduced() { - return this.fluidProduced; - } - - public PseudoFluidType getOutputType() { - return this.outputFluid; - } - - public String getName() { - return I18nUtil.resolveKey("hbmpseudofluid.".concat(this.toString().toLowerCase())); - } - - public boolean getIfHighSpeed() { - return this.isHighSpeed; - } - - public ItemStack[] getOutput() { - return this.output; - } - - }; + } /* Recipe NEI Handler */ //Fluid input; ItemStack[] outputs, isHighSpeed, # of centrifuges @@ -101,14 +87,17 @@ public class GasCentrifugeRecipes { return recipes; } + public static HashMap fluidConversions = new HashMap(); + public static void register() { - gasCent.put(new FluidStack(1200, Fluids.UF6), new Object[] { new ItemStack[] - {new ItemStack(ModItems.nugget_u238, 11), new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.fluorite, 4)}, true, 4 }); - gasCent.put(new FluidStack(1200, Fluids.UF6), new Object[] { new ItemStack[] - {new ItemStack(ModItems.nugget_u238, 6), new ItemStack(ModItems.nugget_uranium_fuel, 6), new ItemStack(ModItems.fluorite, 4)}, false, 2 }); - gasCent.put(new FluidStack(900, Fluids.PUF6), new Object[] { new ItemStack[] - {new ItemStack(ModItems.nugget_pu238, 3), new ItemStack(ModItems.nugget_pu_mix, 6), new ItemStack(ModItems.fluorite, 3)}, false, 1 }); - gasCent.put(new FluidStack(1000, Fluids.WATZ), new Object[] { new ItemStack[] - {new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.nuclear_waste_tiny, 1), new ItemStack(ModItems.dust, 2)}, false, 2 }); + + fluidConversions.put(Fluids.UF6, PseudoFluidType.NUF6); + fluidConversions.put(Fluids.PUF6, PseudoFluidType.PF6); + fluidConversions.put(Fluids.WATZ, PseudoFluidType.MUD); + + gasCent.put(new FluidStack(1200, Fluids.UF6), new Object[] { new ItemStack[] {new ItemStack(ModItems.nugget_u238, 11), new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.fluorite, 4)}, true, 4 }); + gasCent.put(new FluidStack(1200, Fluids.UF6), new Object[] { new ItemStack[] {new ItemStack(ModItems.nugget_u238, 6), new ItemStack(ModItems.nugget_uranium_fuel, 6), new ItemStack(ModItems.fluorite, 4)}, false, 2 }); + gasCent.put(new FluidStack(900, Fluids.PUF6), new Object[] { new ItemStack[] {new ItemStack(ModItems.nugget_pu238, 3), new ItemStack(ModItems.nugget_pu_mix, 6), new ItemStack(ModItems.fluorite, 3)}, false, 1 }); + gasCent.put(new FluidStack(1000, Fluids.WATZ), new Object[] { new ItemStack[] {new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.nuclear_waste_tiny, 1), new ItemStack(ModItems.dust, 2)}, false, 2 }); } } diff --git a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java index bd6698749..ee093f541 100644 --- a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java @@ -23,6 +23,7 @@ import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemFood; import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; public class LiquefactionRecipes extends SerializableRecipe { @@ -41,6 +42,7 @@ public class LiquefactionRecipes extends SerializableRecipe { recipes.put(KEY_COAL_TAR, new FluidStack(50, Fluids.BITUMEN)); recipes.put(KEY_LOG, new FluidStack(100, Fluids.MUG)); recipes.put(KNO.dust(), new FluidStack(250, Fluids.NITRIC_ACID)); + recipes.put(NA.dust(), new FluidStack(100, Fluids.SODIUM)); //general utility recipes because why not recipes.put(new ComparableStack(Blocks.netherrack), new FluidStack(250, Fluids.LAVA)); recipes.put(new ComparableStack(Blocks.cobblestone), new FluidStack(250, Fluids.LAVA)); @@ -51,11 +53,14 @@ public class LiquefactionRecipes extends SerializableRecipe { recipes.put(new ComparableStack(Blocks.ice), new FluidStack(1000, Fluids.WATER)); recipes.put(new ComparableStack(Blocks.packed_ice), new FluidStack(1000, Fluids.WATER)); recipes.put(new ComparableStack(Items.ender_pearl), new FluidStack(100, Fluids.ENDERJUICE)); + recipes.put(new ComparableStack(ModItems.pellet_charged), new FluidStack(4000, Fluids.HELIUM4)); recipes.put(new ComparableStack(Items.sugar), new FluidStack(100, Fluids.ETHANOL)); recipes.put(new ComparableStack(ModBlocks.plant_flower, 1, 3), new FluidStack(150, Fluids.ETHANOL)); recipes.put(new ComparableStack(ModBlocks.plant_flower, 1, 4), new FluidStack(50, Fluids.ETHANOL)); recipes.put(new ComparableStack(ModItems.biomass), new FluidStack(125, Fluids.BIOGAS)); + recipes.put(new ComparableStack(Items.fish, 1, OreDictionary.WILDCARD_VALUE), new FluidStack(100, Fluids.FISHOIL)); + recipes.put(new ComparableStack(Blocks.double_plant, 1, 0), new FluidStack(100, Fluids.SUNFLOWEROIL)); recipes.put(new ComparableStack(Items.wheat_seeds), new FluidStack(50, Fluids.SEEDSLURRY)); recipes.put(new ComparableStack(Blocks.tallgrass, 1, 1), new FluidStack(100, Fluids.SEEDSLURRY)); @@ -78,6 +83,10 @@ public class LiquefactionRecipes extends SerializableRecipe { return recipes.get(comp); String[] dictKeys = comp.getDictKeys(); + comp = new ComparableStack(stack.getItem(), 1, OreDictionary.WILDCARD_VALUE); + + if(recipes.containsKey(comp)) + return recipes.get(comp); for(String key : dictKeys) { diff --git a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java index 39fc4c54b..21e8ca942 100644 --- a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static com.hbm.inventory.OreDictManager.*; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.OreDictStack; @@ -41,7 +42,7 @@ public class MagicRecipes { public static void register() { recipes.add(new MagicRecipe(new ItemStack(ModItems.ingot_u238m2), new ComparableStack(ModItems.ingot_u238m2, 1, 1), new ComparableStack(ModItems.ingot_u238m2, 1, 2), new ComparableStack(ModItems.ingot_u238m2, 1, 3))); recipes.add(new MagicRecipe(new ItemStack(ModItems.rod_of_discord), new ComparableStack(Items.ender_pearl), new ComparableStack(Items.blaze_rod), new ComparableStack(ModItems.nugget_euphemium))); - recipes.add(new MagicRecipe(new ItemStack(ModItems.balefire_and_steel), new OreDictStack("ingotSteel"), new ComparableStack(ModItems.egg_balefire_shard))); + recipes.add(new MagicRecipe(new ItemStack(ModItems.balefire_and_steel), new OreDictStack(STEEL.ingot()), new ComparableStack(ModItems.egg_balefire_shard))); recipes.add(new MagicRecipe(new ItemStack(ModItems.mysteryshovel), new ComparableStack(Items.iron_shovel), new ComparableStack(Items.bone), new ComparableStack(ModItems.ingot_starmetal), new ComparableStack(ModItems.ducttape))); recipes.add(new MagicRecipe(new ItemStack(ModItems.ingot_electronium), new ComparableStack(ModItems.pellet_charged), new ComparableStack(ModItems.pellet_charged), new ComparableStack(ModItems.ingot_dineutronium), new ComparableStack(ModItems.ingot_dineutronium))); @@ -83,16 +84,22 @@ public class MagicRecipes { new ComparableStack(ModBlocks.hadron_coil_chlorophyte), new ComparableStack(ModItems.powder_dineutronium), new ComparableStack(ModItems.plate_desh), - new OreDictStack("dustGold"))); + new OreDictStack(GOLD.dust()))); + + recipes.add(new MagicRecipe(new ItemStack(ModBlocks.hadron_coil_mese), + new ComparableStack(ModBlocks.hadron_coil_chlorophyte), + new OreDictStack(DNT.wireDense()), + new OreDictStack(W.wireDense()), + new OreDictStack(GOLD.wireDense()))); recipes.add(new MagicRecipe(new ItemStack(ModItems.gun_darter), - new OreDictStack("plateSteel"), - new OreDictStack("plateSteel"), + new OreDictStack(STEEL.plate()), + new OreDictStack(STEEL.plate()), new ComparableStack(ModItems.ingot_polymer), - new OreDictStack("plateGold"))); + new OreDictStack(GOLD.plate()))); recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_dart, 4, ItemAmmoEnums.AmmoDart.NUCLEAR.ordinal()), - new ComparableStack(ModItems.plate_polymer), + new OreDictStack(ANY_RUBBER.ingot()), new ComparableStack(ModItems.nugget_pu239), new ComparableStack(ModItems.circuit_aluminium))); } @@ -109,7 +116,6 @@ public class MagicRecipes { public MagicRecipe(ItemStack out, AStack... in) { this.out = out; this.in = Arrays.asList(in); - //Collections.sort(this.in); } public boolean matches(List comps) { diff --git a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java index 9e79c597a..15bf9a25e 100644 --- a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java @@ -8,6 +8,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map.Entry; +import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; @@ -19,53 +20,87 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.machine.ItemFluidIcon; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; +import net.minecraftforge.oredict.OreDictionary; public class MixerRecipes extends SerializableRecipe { - public static HashMap recipes = new HashMap(); + public static HashMap recipes = new HashMap(); @Override public void registerDefaults() { - recipes.put(Fluids.COOLANT, new MixerRecipe(2_000, 50).setStack1(new FluidStack(Fluids.WATER, 1_800)).setSolid(new OreDictStack(KNO.dust()))); - recipes.put(Fluids.CRYOGEL, new MixerRecipe(2_000, 50).setStack1(new FluidStack(Fluids.COOLANT, 1_800)).setSolid(new ComparableStack(ModItems.powder_ice))); - recipes.put(Fluids.NITAN, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.KEROSENE, 600)).setStack2(new FluidStack(Fluids.MERCURY, 200)).setSolid(new ComparableStack(ModItems.powder_nitan_mix))); - recipes.put(Fluids.FRACKSOL, new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.SULFURIC_ACID, 900)).setStack2(new FluidStack(Fluids.PETROLEUM, 100))); - recipes.put(Fluids.ENDERJUICE, new MixerRecipe(100, 100).setStack1(new FluidStack(Fluids.XPJUICE, 500)).setSolid(new OreDictStack(DIAMOND.dust()))); - recipes.put(Fluids.SALIENT, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.SEEDSLURRY, 500)).setStack2(new FluidStack(Fluids.BLOOD, 500))); - recipes.put(Fluids.COLLOID, new MixerRecipe(500, 20).setStack1(new FluidStack(Fluids.WATER, 500)).setSolid(new ComparableStack(ModItems.dust))); - recipes.put(Fluids.PHOSGENE, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.UNSATURATEDS, 500)).setStack2(new FluidStack(Fluids.CHLORINE, 500))); - recipes.put(Fluids.MUSTARDGAS, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250)).setSolid(new OreDictStack(S.dust()))); - recipes.put(Fluids.IONGEL, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.WATER, 1000)).setStack2(new FluidStack(Fluids.HYDROGEN, 200)).setSolid(new ComparableStack(ModItems.pellet_charged))); - recipes.put(Fluids.EGG, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.RADIOSOLVENT, 500)).setSolid(new ComparableStack(Items.egg))); + register(Fluids.COOLANT, new MixerRecipe(2_000, 50).setStack1(new FluidStack(Fluids.WATER, 1_800)).setSolid(new OreDictStack(KNO.dust()))); + register(Fluids.CRYOGEL, new MixerRecipe(2_000, 50).setStack1(new FluidStack(Fluids.COOLANT, 1_800)).setSolid(new ComparableStack(ModItems.powder_ice))); + register(Fluids.NITAN, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.KEROSENE, 600)).setStack2(new FluidStack(Fluids.MERCURY, 200)).setSolid(new ComparableStack(ModItems.powder_nitan_mix))); + register(Fluids.FRACKSOL, + new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.SULFURIC_ACID, 900)).setStack2(new FluidStack(Fluids.PETROLEUM, 100)), + new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.WATER, 1000)).setStack2(new FluidStack(Fluids.PETROLEUM, 100)).setSolid(new OreDictStack(S.dust()))); + register(Fluids.ENDERJUICE, new MixerRecipe(100, 100).setStack1(new FluidStack(Fluids.XPJUICE, 500)).setSolid(new OreDictStack(DIAMOND.dust()))); + register(Fluids.SALIENT, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.SEEDSLURRY, 500)).setStack2(new FluidStack(Fluids.BLOOD, 500))); + register(Fluids.COLLOID, new MixerRecipe(500, 20).setStack1(new FluidStack(Fluids.WATER, 500)).setSolid(new ComparableStack(ModItems.dust))); + register(Fluids.PHOSGENE, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.UNSATURATEDS, 500)).setStack2(new FluidStack(Fluids.CHLORINE, 500))); + register(Fluids.MUSTARDGAS, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250)).setSolid(new OreDictStack(S.dust()))); + register(Fluids.IONGEL, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.WATER, 1000)).setStack2(new FluidStack(Fluids.HYDROGEN, 200)).setSolid(new ComparableStack(ModItems.pellet_charged))); + register(Fluids.EGG, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.RADIOSOLVENT, 500)).setSolid(new ComparableStack(Items.egg))); + register(Fluids.FISHOIL, new MixerRecipe(100, 50).setSolid(new ComparableStack(Items.fish, 1, OreDictionary.WILDCARD_VALUE))); + register(Fluids.SUNFLOWEROIL, new MixerRecipe(100, 50).setSolid(new ComparableStack(Blocks.double_plant, 1, 0))); + register(Fluids.FULLERENE, new MixerRecipe(250, 50).setStack1(new FluidStack(Fluids.RADIOSOLVENT, 500)).setSolid(new ComparableStack(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.SOOT)))); - recipes.put(Fluids.SOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500))); - recipes.put(Fluids.SULFURIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.ACID, 800)).setSolid(new OreDictStack(S.dust()))); - recipes.put(Fluids.NITRIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.SULFURIC_ACID, 500)).setSolid(new OreDictStack(KNO.dust()))); - recipes.put(Fluids.RADIOSOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250))); - recipes.put(Fluids.SCHRABIDIC, new MixerRecipe(16_000, 100).setStack1(new FluidStack(Fluids.SAS3, 8_000)).setStack2(new FluidStack(Fluids.ACID, 6_000)).setSolid(new ComparableStack(ModItems.pellet_charged))); + register(Fluids.SOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500))); + register(Fluids.SULFURIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.ACID, 800)).setSolid(new OreDictStack(S.dust()))); + register(Fluids.NITRIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.SULFURIC_ACID, 500)).setSolid(new OreDictStack(KNO.dust()))); + register(Fluids.RADIOSOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250))); + register(Fluids.SCHRABIDIC, new MixerRecipe(16_000, 100).setStack1(new FluidStack(Fluids.SAS3, 8_000)).setStack2(new FluidStack(Fluids.ACID, 6_000)).setSolid(new ComparableStack(ModItems.pellet_charged))); - recipes.put(Fluids.LUBRICANT, new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.HEATINGOIL, 500)).setStack2(new FluidStack(Fluids.UNSATURATEDS, 500))); - recipes.put(Fluids.PETROIL, new MixerRecipe(1_000, 30).setStack1(new FluidStack(Fluids.RECLAIMED, 800)).setStack2(new FluidStack(Fluids.LUBRICANT, 200))); + register(Fluids.PETROIL, new MixerRecipe(1_000, 30).setStack1(new FluidStack(Fluids.RECLAIMED, 800)).setStack2(new FluidStack(Fluids.LUBRICANT, 200))); + register(Fluids.LUBRICANT, + new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.HEATINGOIL, 500)).setStack2(new FluidStack(Fluids.UNSATURATEDS, 500)), + new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.FISHOIL, 800)).setStack2(new FluidStack(Fluids.ETHANOL, 200)), + new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.SUNFLOWEROIL, 800)).setStack2(new FluidStack(Fluids.ETHANOL, 200))); + register(Fluids.BIOFUEL, + new MixerRecipe(250, 20).setStack1(new FluidStack(Fluids.FISHOIL, 500)).setStack2(new FluidStack(Fluids.WOODOIL, 500)), + new MixerRecipe(200, 20).setStack1(new FluidStack(Fluids.SUNFLOWEROIL, 500)).setStack2(new FluidStack(Fluids.WOODOIL, 500))); + register(Fluids.NITROGLYCERIN, + new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.PETROLEUM, 1_000)).setStack2(new FluidStack(Fluids.NITRIC_ACID, 1_000)), + new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.FISHOIL, 500)).setStack2(new FluidStack(Fluids.NITRIC_ACID, 500))); + + register(Fluids.THORIUM_SALT, new MixerRecipe(1_000, 30).setStack1(new FluidStack(Fluids.CHLORINE, 1000)).setSolid(new OreDictStack(TH232.dust()))); - recipes.put(Fluids.SYNGAS, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.COALOIL, 500)).setStack2(new FluidStack(Fluids.STEAM, 500))); - recipes.put(Fluids.OXYHYDROGEN, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.HYDROGEN, 500)).setStack2(new FluidStack(Fluids.OXYGEN, 500))); + register(Fluids.SYNGAS, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.COALOIL, 500)).setStack2(new FluidStack(Fluids.STEAM, 500))); + register(Fluids.OXYHYDROGEN, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.HYDROGEN, 500)).setStack2(new FluidStack(Fluids.OXYGEN, 500))); - recipes.put(Fluids.PETROIL_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.PETROIL, 10_000)).setSolid(new ComparableStack(ModItems.antiknock))); - recipes.put(Fluids.GASOLINE_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.GASOLINE, 10_000)).setSolid(new ComparableStack(ModItems.antiknock))); - recipes.put(Fluids.COALGAS_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.COALGAS, 10_000)).setSolid(new ComparableStack(ModItems.antiknock))); + register(Fluids.PETROIL_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.PETROIL, 10_000)).setSolid(new ComparableStack(ModItems.antiknock))); + register(Fluids.GASOLINE_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.GASOLINE, 10_000)).setSolid(new ComparableStack(ModItems.antiknock))); + register(Fluids.COALGAS_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.COALGAS, 10_000)).setSolid(new ComparableStack(ModItems.antiknock))); - recipes.put(Fluids.DIESEL_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.DIESEL, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); - recipes.put(Fluids.DIESEL_CRACK_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.DIESEL_CRACK, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); - recipes.put(Fluids.KEROSENE_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.KEROSENE, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); + register(Fluids.DIESEL_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.DIESEL, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); + register(Fluids.DIESEL_CRACK_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.DIESEL_CRACK, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); + register(Fluids.KEROSENE_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.KEROSENE, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); + + register(Fluids.CHLOROCALCITE_SOLUTION, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.WATER, 250)).setStack2(new FluidStack(Fluids.NITRIC_ACID, 250)).setSolid(new OreDictStack(CHLOROCALCITE.dust()))); + register(Fluids.CHLOROCALCITE_MIX, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.CHLOROCALCITE_SOLUTION, 500)).setStack2(new FluidStack(Fluids.SULFURIC_ACID, 500)).setSolid(new ComparableStack(ModItems.powder_flux))); } - public static MixerRecipe getOutput(FluidType type) { + public static void register(FluidType type, MixerRecipe... rec) { + recipes.put(type, rec); + } + + public static MixerRecipe[] getOutput(FluidType type) { return recipes.get(type); } + public static MixerRecipe getOutput(FluidType type, int index) { + MixerRecipe[] recs = recipes.get(type); + + if(recs == null) return null; + + return recs[index % recs.length]; + } + @Override public String getFileName() { return "hbmMixer.json"; @@ -85,47 +120,65 @@ public class MixerRecipes extends SerializableRecipe { public void readRecipe(JsonElement recipe) { JsonObject obj = (JsonObject) recipe; - FluidStack output = this.readFluidStack(obj.get("output").getAsJsonArray()); - MixerRecipe mix = new MixerRecipe(output.fill, obj.get("duration").getAsInt()); - - if(obj.has("input1")) mix.setStack1(this.readFluidStack(obj.get("input1").getAsJsonArray())); - if(obj.has("input2")) mix.setStack2(this.readFluidStack(obj.get("input2").getAsJsonArray())); - if(obj.has("solidInput")) mix.setSolid(this.readAStack(obj.get("solidInput").getAsJsonArray())); + FluidType outputType = Fluids.fromName(obj.get("outputType").getAsString()); + JsonArray recipeArray = obj.get("recipes").getAsJsonArray(); + MixerRecipe[] array = new MixerRecipe[recipeArray.size()]; - recipes.put(output.type, mix); + for(int i = 0; i < recipeArray.size(); i++) { + JsonObject sub = recipeArray.get(i).getAsJsonObject(); + MixerRecipe mix = new MixerRecipe(sub.get("outputAmount").getAsInt(), sub.get("duration").getAsInt()); + + if(sub.has("input1")) mix.setStack1(this.readFluidStack(sub.get("input1").getAsJsonArray())); + if(sub.has("input2")) mix.setStack2(this.readFluidStack(sub.get("input2").getAsJsonArray())); + if(sub.has("solidInput")) mix.setSolid(this.readAStack(sub.get("solidInput").getAsJsonArray())); + + array[i] = mix; + + } + + recipes.put(outputType, array); } @Override public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { - Entry rec = (Entry) recipe; - MixerRecipe mix = rec.getValue(); - FluidStack output = new FluidStack(rec.getKey(), mix.output); + Entry rec = (Entry) recipe; + MixerRecipe[] recipes = rec.getValue(); - writer.name("duration").value(mix.processTime); - writer.name("output"); - this.writeFluidStack(output, writer); + writer.name("outputType").value(rec.getKey().getName()); + writer.name("recipes").beginArray(); - if(mix.input1 != null) { writer.name("input1"); this.writeFluidStack(mix.input1, writer); } - if(mix.input2 != null) { writer.name("input2"); this.writeFluidStack(mix.input2, writer); } - if(mix.solidInput != null) { writer.name("solidInput"); this.writeAStack(mix.solidInput, writer); } + for(MixerRecipe mix : recipes) { + writer.beginObject(); + writer.name("duration").value(mix.processTime); + writer.name("outputAmount").value(mix.output); + + if(mix.input1 != null) { writer.name("input1"); this.writeFluidStack(mix.input1, writer); } + if(mix.input2 != null) { writer.name("input2"); this.writeFluidStack(mix.input2, writer); } + if(mix.solidInput != null) { writer.name("solidInput"); this.writeAStack(mix.solidInput, writer); } + writer.endObject(); + } + writer.endArray(); } public static HashMap getRecipes() { HashMap recipes = new HashMap(); - for(Entry entry : MixerRecipes.recipes.entrySet()) { + for(Entry entry : MixerRecipes.recipes.entrySet()) { FluidType type = entry.getKey(); - MixerRecipe recipe = entry.getValue(); - FluidStack output = new FluidStack(type, recipe.output); - - List objects = new ArrayList(); - if(recipe.input1 != null) objects.add(ItemFluidIcon.make(recipe.input1)); - if(recipe.input2 != null) objects.add(ItemFluidIcon.make(recipe.input2)); - if(recipe.solidInput != null) objects.add(recipe.solidInput); + MixerRecipe[] recs = entry.getValue(); - recipes.put(objects.toArray(), ItemFluidIcon.make(output)); + for(MixerRecipe recipe : recs) { + FluidStack output = new FluidStack(type, recipe.output); + + List objects = new ArrayList(); + if(recipe.input1 != null) objects.add(ItemFluidIcon.make(recipe.input1)); + if(recipe.input2 != null) objects.add(ItemFluidIcon.make(recipe.input2)); + if(recipe.solidInput != null) objects.add(recipe.solidInput); + + recipes.put(objects.toArray(), ItemFluidIcon.make(output)); + } } return recipes; diff --git a/src/main/java/com/hbm/inventory/recipes/OutgasserRecipes.java b/src/main/java/com/hbm/inventory/recipes/OutgasserRecipes.java index 1f1c72505..491a8595f 100644 --- a/src/main/java/com/hbm/inventory/recipes/OutgasserRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/OutgasserRecipes.java @@ -56,6 +56,8 @@ public class OutgasserRecipes extends SerializableRecipe { recipes.put(new OreDictStack(COAL.gem()), new Pair(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL, 1), new FluidStack(Fluids.SYNGAS, 50))); recipes.put(new OreDictStack(COAL.dust()), new Pair(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL, 1), new FluidStack(Fluids.SYNGAS, 50))); recipes.put(new OreDictStack(COAL.block()), new Pair(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL, 9), new FluidStack(Fluids.SYNGAS, 500))); + + recipes.put(new OreDictStack(PVC.ingot()), new Pair(new ItemStack(ModItems.ingot_c4), new FluidStack(Fluids.COLLOID, 250))); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL)), new Pair(null, new FluidStack(Fluids.COALOIL, 100))); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX)), new Pair(null, new FluidStack(Fluids.RADIOSOLVENT, 100))); diff --git a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java index 1186eb481..aa3449238 100644 --- a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java @@ -2,6 +2,7 @@ package com.hbm.inventory.recipes; import java.io.IOException; import java.util.HashMap; +import java.util.Locale; import java.util.Map.Entry; import static com.hbm.inventory.OreDictManager.*; @@ -14,6 +15,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumBriquetteType; +import com.hbm.items.ItemEnums.EnumPages; import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; import com.hbm.items.ItemAmmoEnums.Ammo556mm; import com.hbm.items.ItemAmmoEnums.AmmoLunaticSniper; @@ -22,6 +24,7 @@ import com.hbm.items.machine.ItemStamp; import com.hbm.items.machine.ItemStamp.StampType; import com.hbm.util.Tuple.Pair; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -38,7 +41,7 @@ public class PressRecipes extends SerializableRecipe { if(!(stamp.getItem() instanceof ItemStamp)) return null; - StampType type = ((ItemStamp) stamp.getItem()).type; + StampType type = ((ItemStamp) stamp.getItem()).getStampType(stamp.getItem(), stamp.getItemDamage()); for(Entry, ItemStack> recipe : recipes.entrySet()) { @@ -60,6 +63,7 @@ public class PressRecipes extends SerializableRecipe { makeRecipe(StampType.FLAT, new ComparableStack(ModItems.biomass), ModItems.biomass_compressed); makeRecipe(StampType.FLAT, new OreDictStack(ANY_COKE.gem()), ModItems.ingot_graphite); makeRecipe(StampType.FLAT, new ComparableStack(ModItems.meteorite_sword_reforged), ModItems.meteorite_sword_hardened); + makeRecipe(StampType.FLAT, new ComparableStack(Blocks.log, 1, 3), ModItems.ball_resin); makeRecipe(StampType.FLAT, new OreDictStack(COAL.dust()), DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.COAL)); makeRecipe(StampType.FLAT, new OreDictStack(LIGNITE.dust()), DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.LIGNITE)); @@ -91,28 +95,37 @@ public class PressRecipes extends SerializableRecipe { makeRecipe(StampType.CIRCUIT, new ComparableStack(ModItems.circuit_arsenic_raw), ModItems.circuit_arsenic); makeRecipe(StampType.CIRCUIT, new ComparableStack(ModItems.circuit_tantalium_raw), ModItems.circuit_tantalium); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_iron), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.IRON)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_steel), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.LEAD)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_lead), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.NUCLEAR)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_gold), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.GOLD)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_schrabidium), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.SCHRABIDIUM)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_nightmare), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.NIGHTMARE1)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_desh), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.DESH)); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_iron), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.IRON)); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_steel), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.LEAD)); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_lead), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.NUCLEAR)); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_gold), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.GOLD)); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_schrabidium), ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.SCHRABIDIUM)); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_nightmare), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.NIGHTMARE1)); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_desh), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.DESH)); makeRecipe(StampType.C357, new OreDictStack(STEEL.ingot()), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.STEEL)); - makeRecipe(StampType.C44, new ComparableStack(ModItems.assembly_nopip), ModItems.ammo_44); - makeRecipe(StampType.C44, new ComparableStack(ModItems.assembly_45), ModItems.ammo_45); + makeRecipe(StampType.C44, new ComparableStack(ModItems.assembly_nopip), new ItemStack(ModItems.ammo_44, 24)); + makeRecipe(StampType.C44, new ComparableStack(ModItems.assembly_45), new ItemStack(ModItems.ammo_45, 32)); - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_smg), ModItems.ammo_9mm); - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_uzi), ModItems.ammo_22lr); + makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_smg), new ItemStack(ModItems.ammo_9mm, 32)); + makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_uzi), new ItemStack(ModItems.ammo_22lr, 32)); makeRecipe(StampType.C9, new OreDictStack(GOLD.ingot()), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.GOLD)); - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_lacunae), ModItems.ammo_5mm); - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_556), ModItems.ammo_556); + makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_lacunae), new ItemStack(ModItems.ammo_5mm, 64)); + makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_556), new ItemStack(ModItems.ammo_556, 32)); - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_calamity), ModItems.ammo_50bmg); - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_actionexpress), ModItems.ammo_50ae); - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_luna), ModItems.ammo_luna_sniper.stackFromEnum(AmmoLunaticSniper.SABOT)); - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_762), ModItems.ammo_762); + makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_calamity), new ItemStack(ModItems.ammo_50bmg, 12)); + makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_actionexpress), new ItemStack(ModItems.ammo_50ae, 12)); + makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_luna), ModItems.ammo_luna_sniper.stackFromEnum(4, AmmoLunaticSniper.SABOT)); + makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_762), new ItemStack(ModItems.ammo_762, 32)); + + makeRecipe(StampType.PRINTING1, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE1)); + makeRecipe(StampType.PRINTING2, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE2)); + makeRecipe(StampType.PRINTING3, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE3)); + makeRecipe(StampType.PRINTING4, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE4)); + makeRecipe(StampType.PRINTING5, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE5)); + makeRecipe(StampType.PRINTING6, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE6)); + makeRecipe(StampType.PRINTING7, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE7)); + makeRecipe(StampType.PRINTING8, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE8)); } public static void makeRecipe(StampType type, AStack in, Item out) { @@ -151,7 +164,7 @@ public class PressRecipes extends SerializableRecipe { writer.name("input"); this.writeAStack(entry.getKey().getKey(), writer); - writer.name("stamp").value(entry.getKey().getValue().name().toLowerCase()); + writer.name("stamp").value(entry.getKey().getValue().name().toLowerCase(Locale.US)); writer.name("output"); this.writeItemStack(entry.getValue(), writer); } diff --git a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java index 314e50d56..427f4a329 100644 --- a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java @@ -58,7 +58,7 @@ public class RefineryRecipes { public static HashMap getVacuumRecipe() { HashMap recipes = new HashMap(); - recipes.put(ItemFluidIcon.make(Fluids.OIL, 1000), + recipes.put(ItemFluidIcon.make(Fluids.OIL, 1000, 2), new ItemStack[] { ItemFluidIcon.make(Fluids.HEAVYOIL_VACUUM, vac_frac_heavy * 10), ItemFluidIcon.make(Fluids.REFORMATE, vac_frac_reform * 10), diff --git a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java index 238e5bca9..168fbe902 100644 --- a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java @@ -32,6 +32,16 @@ public class ReformingRecipes extends SerializableRecipe { new FluidStack(Fluids.AROMATICS, 10), new FluidStack(Fluids.HYDROGEN, 5) )); + recipes.put(Fluids.LIGHTOIL, new Triplet( + new FluidStack(Fluids.AROMATICS, 50), + new FluidStack(Fluids.REFORMGAS, 10), + new FluidStack(Fluids.HYDROGEN, 15) + )); + recipes.put(Fluids.LIGHTOIL_CRACK, new Triplet( + new FluidStack(Fluids.AROMATICS, 50), + new FluidStack(Fluids.REFORMGAS, 5), + new FluidStack(Fluids.HYDROGEN, 20) + )); recipes.put(Fluids.PETROLEUM, new Triplet( new FluidStack(Fluids.UNSATURATEDS, 85), new FluidStack(Fluids.REFORMGAS, 10), diff --git a/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java b/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java index adb944df5..3b0d908a2 100644 --- a/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java @@ -11,6 +11,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.items.special.ItemWasteLong; import com.hbm.items.special.ItemWasteShort; @@ -31,7 +32,7 @@ public class SILEXRecipes { itemTranslation.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.UF6.getID()), new ComparableStack(ModItems.ingot_uranium)); dictTranslation.put(U.dust(), U.ingot()); - recipes.put(U.ingot(), new SILEXRecipe(900, 100, EnumWavelengths.UV) + recipes.put(U.ingot(), new SILEXRecipe(900, 100, EnumWavelengths.VISIBLE) .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u235), 1)) .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u238), 11)) ); @@ -630,6 +631,10 @@ public class SILEXRecipes { .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_lithium), 10)) .addOut(new WeightedRandomObject(new ItemStack(ModItems.fluorite), 5)) ); + + recipes.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.FULLERENE.getID()), new SILEXRecipe(1_000, 1_000, EnumWavelengths.UV) + .addOut(new WeightedRandomObject(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE), 1)) + ); } public static SILEXRecipe getOutput(ItemStack stack) { diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index 2c0150b5d..aee7d21ae 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -46,6 +46,8 @@ public class ShredderRecipes extends SerializableRecipe { if(name == null || name.isEmpty()) continue; + if(name.contains("Any")) continue; + List matches = OreDictionary.getOres(name); //if the name isn't assigned to an ore, also skip @@ -94,10 +96,6 @@ public class ShredderRecipes extends SerializableRecipe { String matName = name.substring(len); - //skip over genericized names so we don't accidentally convert item groups - if(matName.startsWith("Any")) - return; - ItemStack dust = getDustByName(matName); if(dust != null && dust.getItem() != ModItems.scrap) { @@ -286,10 +284,6 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(ModBlocks.chain, new ItemStack(ModItems.powder_steel_tiny, 1)); ShredderRecipes.setRecipe(ModBlocks.steel_grate, new ItemStack(ModItems.powder_steel_tiny, 3)); ShredderRecipes.setRecipe(ModItems.pipes_steel, new ItemStack(ModItems.powder_steel, 27)); - ShredderRecipes.setRecipe(ModBlocks.oil_duct, new ItemStack(ModItems.powder_steel_tiny, 3)); - ShredderRecipes.setRecipe(ModBlocks.oil_duct_solid, new ItemStack(ModItems.powder_steel_tiny, 3)); - ShredderRecipes.setRecipe(ModBlocks.gas_duct, new ItemStack(ModItems.powder_steel, 1)); - ShredderRecipes.setRecipe(ModBlocks.gas_duct_solid, new ItemStack(ModItems.powder_steel, 1)); ShredderRecipes.setRecipe(ModBlocks.machine_fluidtank, new ItemStack(ModItems.powder_steel, 32)); /* Sellafite scrapping */ @@ -356,17 +350,17 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(ModItems.debris_graphite, new ItemStack(ModItems.powder_coal, 1)); /* GC COMPAT */ - Item gcMoonBlock = Compat.tryLoadItem(Compat.MOD_GCC, "moonBlock"); - if(gcMoonBlock != null) { + Block gcMoonBlock = Compat.tryLoadBlock(Compat.MOD_GCC, "moonBlock"); + if(gcMoonBlock != null && gcMoonBlock != Blocks.air) { ShredderRecipes.setRecipe(new ItemStack(gcMoonBlock, 1, 3), new ItemStack(ModBlocks.moon_turf)); //Moon dirt ShredderRecipes.setRecipe(new ItemStack(gcMoonBlock, 1, 5), new ItemStack(ModBlocks.moon_turf)); //Moon topsoil } /* AR COMPAT */ - Item arMoonTurf = Compat.tryLoadItem(Compat.MOD_AR, "turf"); - if(arMoonTurf != null) ShredderRecipes.setRecipe(arMoonTurf, new ItemStack(ModBlocks.moon_turf)); //i assume it's moon turf - Item arMoonTurfDark = Compat.tryLoadItem(Compat.MOD_AR, "turfDark"); - if(arMoonTurfDark != null) ShredderRecipes.setRecipe(arMoonTurfDark, new ItemStack(ModBlocks.moon_turf)); //probably moon dirt? would have helped if i had ever played AR for more than 5 seconds + Block arMoonTurf = Compat.tryLoadBlock(Compat.MOD_AR, "turf"); + if(arMoonTurf != null && gcMoonBlock != Blocks.air) ShredderRecipes.setRecipe(arMoonTurf, new ItemStack(ModBlocks.moon_turf)); //i assume it's moon turf + Block arMoonTurfDark = Compat.tryLoadBlock(Compat.MOD_AR, "turfDark"); + if(arMoonTurfDark != null && gcMoonBlock != Blocks.air) ShredderRecipes.setRecipe(arMoonTurfDark, new ItemStack(ModBlocks.moon_turf)); //probably moon dirt? would have helped if i had ever played AR for more than 5 seconds } /** diff --git a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java index 38f618aea..cba463d6f 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java @@ -67,6 +67,8 @@ public class SolidificationRecipes extends SerializableRecipe { registerRecipe(SALIENT, 1280, new ItemStack(ModItems.bio_wafer, 8)); //4 (food val) * 2 (sat mod) * 2 (constant) * 10 (quanta) * 8 (batch size) registerRecipe(ENDERJUICE, 100, Items.ender_pearl); registerRecipe(WATZ, 1000, ModItems.ingot_mud); + registerRecipe(REDMUD, 1000, Items.iron_ingot); + registerRecipe(SODIUM, 100, ModItems.powder_sodium); registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); registerRecipe(CRACKOIL, SF_CRACK, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 5c7672729..18e76b6a0 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -65,6 +65,14 @@ public class AnvilRecipes { smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_meteorite_forged, 1), new ComparableStack(ModItems.ingot_meteorite), new ComparableStack(ModItems.ingot_meteorite))); smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.blade_meteorite, 1), new ComparableStack(ModItems.ingot_meteorite_forged), new ComparableStack(ModItems.ingot_meteorite_forged))); smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.meteorite_sword_reforged, 1), new ComparableStack(ModItems.meteorite_sword_seared), new ComparableStack(ModItems.ingot_meteorite_forged))); + + + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_sword, 1), new ComparableStack(ModItems.cobalt_sword), new ComparableStack(ModItems.ingot_meteorite))); + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_pickaxe, 1), new ComparableStack(ModItems.cobalt_pickaxe), new ComparableStack(ModItems.ingot_meteorite))); + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_axe, 1), new ComparableStack(ModItems.cobalt_axe), new ComparableStack(ModItems.ingot_meteorite))); + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_shovel, 1), new ComparableStack(ModItems.cobalt_shovel), new ComparableStack(ModItems.ingot_meteorite))); + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_hoe, 1), new ComparableStack(ModItems.cobalt_hoe), new ComparableStack(ModItems.ingot_meteorite))); + smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModItems.gun_ar15, 1), new ComparableStack(ModItems.gun_thompson), new ComparableStack(ModItems.pipe_lead))); smithingRecipes.add(new AnvilSmithingRecipe(1916169, new ItemStack(ModItems.wings_murk, 1), new ComparableStack(ModItems.wings_limp), new ComparableStack(ModItems.particle_tachyon))); smithingRecipes.add(new AnvilSmithingRecipe(4, new ItemStack(ModItems.flask_infusion, 1, EnumInfusion.SHIELD.ordinal()), new ComparableStack(ModItems.gem_alexandrite), new ComparableStack(ModItems.bottle_nuka))); @@ -118,6 +126,8 @@ public class AnvilRecipes { smithingRecipes.add(new AnvilSmithingMold(16, new ComparableStack(ModItems.casing_9), new ItemStack[] {new ItemStack(ModItems.casing_9)})); smithingRecipes.add(new AnvilSmithingMold(17, new ComparableStack(ModItems.casing_50), new ItemStack[] {new ItemStack(ModItems.casing_50)})); smithingRecipes.add(new AnvilSmithingMold(18, new ComparableStack(ModItems.casing_buckshot), new ItemStack[] {new ItemStack(ModItems.casing_buckshot)})); + smithingRecipes.add(new AnvilSmithingMold(20, new OreDictStack(ALLOY.wireDense(), 1), new OreDictStack("wireDense", 1))); + smithingRecipes.add(new AnvilSmithingMold(21, new OreDictStack(ALLOY.wireDense(), 9), new OreDictStack("wireDense", 9))); smithingRecipes.add(new AnvilSmithingCyanideRecipe()); smithingRecipes.add(new AnvilSmithingRenameRecipe()); @@ -204,6 +214,9 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] {new ComparableStack(ModItems.motor), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(DESH.ingot(), 2), new ComparableStack(ModItems.coil_gold_torus)}, new AnvilOutput(new ItemStack(ModItems.motor_desh, 1))).setTier(3)); + + pullFromAssembler(new ComparableStack(ModItems.filter_coal), 2); + pullFromAssembler(new ComparableStack(ModItems.thermo_element), 2); constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { @@ -223,6 +236,22 @@ public class AnvilRecipes { new ComparableStack(ModItems.circuit_aluminium, 1 * ukModifier) }, new AnvilOutput(new ItemStack(ModBlocks.machine_assembler))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new OreDictStack(KEY_COBBLESTONE, 8), + new OreDictStack(KEY_PLANKS, 16), + new OreDictStack(IRON.ingot(), 4), + new OreDictStack(CU.plate(), 8) + }, new AnvilOutput(new ItemStack(ModBlocks.pump_steam))).setTier(2)); + + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new ComparableStack(Blocks.stonebrick, 8), + new OreDictStack(STEEL.plate(), 16), + new ComparableStack(ModItems.motor, 2), + new ComparableStack(ModItems.circuit_copper, 1) + }, new AnvilOutput(new ItemStack(ModBlocks.pump_electric))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(Blocks.furnace), @@ -237,6 +266,13 @@ public class AnvilRecipes { new OreDictStack(CU.ingot(), 8) }, new AnvilOutput(new ItemStack(ModBlocks.heater_oven))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new ComparableStack(Blocks.stone, 8), + new OreDictStack(STEEL.plate(), 2), + new OreDictStack(IRON.ingot(), 4) + }, new AnvilOutput(new ItemStack(ModBlocks.machine_ashpit))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(ModItems.tank_steel, 4), @@ -275,9 +311,8 @@ public class AnvilRecipes { new AStack[] { new ComparableStack(Blocks.stonebrick, 8), new OreDictStack(KEY_LOG, 16), - new OreDictStack(CU.ingot(), 8), - new OreDictStack(KEY_BRICK, 16), - new ComparableStack(Items.blaze_powder, 4) + new OreDictStack(CU.plateWelded(), 2), + new OreDictStack(KEY_BRICK, 16) }, new AnvilOutput(new ItemStack(ModBlocks.furnace_combination))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( @@ -303,7 +338,7 @@ public class AnvilRecipes { new ComparableStack(ModBlocks.reinforced_stone, 16), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.hull_small_steel, 2), - new ComparableStack(ModItems.coil_copper, 8), + new ComparableStack(ModItems.coil_copper, 4), new ComparableStack(ModItems.gear_large, 1) }, new AnvilOutput(new ItemStack(ModBlocks.machine_steam_engine))).setTier(2)); @@ -330,6 +365,21 @@ public class AnvilRecipes { new ComparableStack(ModItems.plate_polymer, 8) }, new AnvilOutput(new ItemStack(ModBlocks.machine_boiler))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new OreDictStack(STEEL.plateCast(), 4), + new OreDictStack(W.ingot(), 8), + new ComparableStack(ModBlocks.machine_transformer, 1), + new ComparableStack(ModItems.arc_electrode, 2) + }, new AnvilOutput(new ItemStack(ModBlocks.machine_arc_welder))).setTier(2)); + + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new OreDictStack(STEEL.plateCast(), 8), + new OreDictStack(CU.ingot(), 8), + new OreDictStack(ANY_PLASTIC.ingot(), 4) + }, new AnvilOutput(new ItemStack(ModBlocks.machine_industrial_boiler))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new OreDictStack(STEEL.plate(), 4), @@ -417,6 +467,23 @@ public class AnvilRecipes { }, new AnvilOutput(new ItemStack(ModBlocks.substation))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new OreDictStack(STEEL.plate(), 4), + new ComparableStack(Blocks.brick_block, 16), + new ComparableStack(ModBlocks.steel_grate, 2) + }, + new AnvilOutput(new ItemStack(ModBlocks.chimney_brick))).setTier(2)); + + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new OreDictStack(STEEL.plate(), 16), + new OreDictStack(ANY_CONCRETE.any(), 64), + new ComparableStack(ModBlocks.steel_grate, 4), + new ComparableStack(ModItems.filter_coal, 4) + }, + new AnvilOutput(new ItemStack(ModBlocks.chimney_industrial))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(ModItems.tank_steel, 1), @@ -490,6 +557,9 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.fluid_duct_box, 1, i), new AnvilOutput(new ItemStack(ModItems.plate_iron))).setTier(2).setOverlay(OverlayType.RECYCLING)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.fluid_duct_box, 1, i + 1), new AnvilOutput(new ItemStack(ModItems.plate_copper))).setTier(2).setOverlay(OverlayType.RECYCLING)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.fluid_duct_box, 1, i + 2), new AnvilOutput(new ItemStack(ModItems.plate_aluminium))).setTier(2).setOverlay(OverlayType.RECYCLING)); + + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] {new OreDictStack(IRON.plate(), 1), new ComparableStack(ModItems.plate_polymer)}, new AnvilOutput(new ItemStack(ModBlocks.fluid_duct_exhaust, 8, i))).setTier(2).setOverlay(OverlayType.CONSTRUCTION)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.fluid_duct_exhaust, 8, i), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.plate_iron)), new AnvilOutput(new ItemStack(ModItems.plate_polymer))}).setTier(2)); } } @@ -500,90 +570,93 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_9))).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_50))).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_buckshot))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] {new OreDictStack(IRON.plate()), new ComparableStack(Items.redstone)}, new AnvilOutput(new ItemStack(ModItems.primer_357))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] {new OreDictStack(IRON.plate()), new ComparableStack(Items.redstone)}, new AnvilOutput(new ItemStack(ModItems.primer_44))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] {new OreDictStack(IRON.plate()), new ComparableStack(Items.redstone)}, new AnvilOutput(new ItemStack(ModItems.primer_9))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] {new OreDictStack(IRON.plate()), new ComparableStack(Items.redstone)}, new AnvilOutput(new ItemStack(ModItems.primer_50))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] {new OreDictStack(IRON.plate()), new ComparableStack(Items.redstone)}, new AnvilOutput(new ItemStack(ModItems.primer_buckshot))).setTier(1)); + + pullFromAssembler(new ComparableStack(ModItems.pellet_buckshot), 1); + pullFromAssembler(new ComparableStack(ModItems.pellet_canister), 1); + + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[]{ + new ComparableStack(ModItems.powder_chlorophyte, 1), + new OreDictStack(PB.nugget(), 12),}, + new AnvilOutput(new ItemStack(ModItems.pellet_chlorophyte, 2))).setTier(1)); Object[][] recs = new Object[][] { - {ModItems.ammo_12gauge.stackFromEnum(20, Ammo12Gauge.STOCK), P_RED.dust(), ModItems.ammo_12gauge.stackFromEnum(20, Ammo12Gauge.INCENDIARY), 2}, - {ModItems.ammo_12gauge.stackFromEnum(20, Ammo12Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_12gauge.stackFromEnum(20, Ammo12Gauge.SHRAPNEL), 2}, - {ModItems.ammo_12gauge.stackFromEnum(20, Ammo12Gauge.STOCK), U238.ingot(), ModItems.ammo_12gauge.stackFromEnum(20, Ammo12Gauge.DU), 3}, - {ModItems.ammo_12gauge.stackFromEnum(100, Ammo12Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_12gauge.stackFromEnum(100, Ammo12Gauge.SLEEK), 4}, + {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), P_RED.dust(), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.INCENDIARY), 2}, + {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.SHRAPNEL), 2}, + {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), U238.ingot(), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.DU), 3}, + {ModItems.ammo_12gauge.stackFromEnum(120, Ammo12Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_12gauge.stackFromEnum(120, Ammo12Gauge.SLEEK), 4}, - {ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.STOCK), P_RED.dust(), ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.INCENDIARY), 2}, - {ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.SHRAPNEL), 2}, - {ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.STOCK), ModItems.powder_poison, ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.CAUSTIC), 2}, - {ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.STOCK), DIAMOND.dust(), ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.SHOCK), 2}, - {ModItems.ammo_20gauge.stackFromEnum(10, Ammo20Gauge.STOCK), Item.getItemFromBlock(Blocks.soul_sand), ModItems.ammo_20gauge.stackFromEnum(10, Ammo20Gauge.WITHER), 3}, - {ModItems.ammo_20gauge.stackFromEnum(100, Ammo20Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_20gauge.stackFromEnum(100, Ammo20Gauge.SLEEK), 4}, + {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), P_RED.dust(), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.INCENDIARY), 2}, + {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SHRAPNEL), 2}, + {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), ModItems.powder_poison, ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.CAUSTIC), 2}, + {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), DIAMOND.dust(), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SHOCK), 2}, + {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), Item.getItemFromBlock(Blocks.soul_sand), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.WITHER), 3}, + {ModItems.ammo_20gauge.stackFromEnum(120, Ammo20Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_20gauge.stackFromEnum(120, Ammo20Gauge.SLEEK), 4}, - {ModItems.ammo_4gauge.stackFromEnum(20, Ammo4Gauge.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_4gauge.stackFromEnum(20, Ammo4Gauge.FLECHETTE_PHOSPHORUS), 2}, - {ModItems.ammo_4gauge.stackFromEnum(10, Ammo4Gauge.EXPLOSIVE), ModItems.egg_balefire_shard, ModItems.ammo_4gauge.stackFromEnum(10, Ammo4Gauge.BALEFIRE), 4}, + {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE_PHOSPHORUS), 2}, + {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.EXPLOSIVE), ModItems.egg_balefire_shard, ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.BALEFIRE), 4}, {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), ModItems.ammo_rocket, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.KAMPF), 2}, - {ModItems.ammo_4gauge.stackFromEnum(10, Ammo4Gauge.KAMPF), ModItems.pellet_canister, ModItems.ammo_4gauge.stackFromEnum(10, Ammo4Gauge.CANISTER), 3}, + {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.KAMPF), ModItems.pellet_canister, ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.CANISTER), 3}, {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.STOCK), ModItems.pellet_claws, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.CLAW), 5}, {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.STOCK), ModItems.toothpicks, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.VAMPIRE), 5}, {ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.STOCK), ModItems.pellet_charged, ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VOID), 5}, - {ModItems.ammo_4gauge.stackFromEnum(100, Ammo4Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_4gauge.stackFromEnum(100, Ammo4Gauge.SLEEK), 4}, + {ModItems.ammo_4gauge.stackFromEnum(120, Ammo4Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_4gauge.stackFromEnum(120, Ammo4Gauge.SLEEK), 4}, - {ModItems.ammo_44.stackFromEnum(20, Ammo44Magnum.STOCK), DURA.ingot(), ModItems.ammo_44.stackFromEnum(20, Ammo44Magnum.AP), 2}, - {ModItems.ammo_44.stackFromEnum(20, Ammo44Magnum.STOCK), U238.ingot(), ModItems.ammo_44.stackFromEnum(20, Ammo44Magnum.DU), 2}, - {ModItems.ammo_44.stackFromEnum(20, Ammo44Magnum.STOCK), P_WHITE.ingot(), ModItems.ammo_44.stackFromEnum(20, Ammo44Magnum.PHOSPHORUS), 2}, - {ModItems.ammo_44.stackFromEnum(10, Ammo44Magnum.DU), STAR.ingot(), ModItems.ammo_44.stackFromEnum(10, Ammo44Magnum.STAR), 3}, - {ModItems.ammo_44.stackFromEnum(10, Ammo44Magnum.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_44.stackFromEnum(10, Ammo44Magnum.CHLOROPHYTE), 3}, + {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), DURA.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.AP), 2}, + {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), U238.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.DU), 2}, + {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), P_WHITE.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.PHOSPHORUS), 2}, + {ModItems.ammo_44.stackFromEnum(12, Ammo44Magnum.DU), STAR.ingot(), ModItems.ammo_44.stackFromEnum(12, Ammo44Magnum.STAR), 3}, + {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.CHLOROPHYTE), 3}, - {ModItems.ammo_45.stackFromEnum(20, Ammo45ACP.STOCK), DURA.ingot(), ModItems.ammo_45.stackFromEnum(20, Ammo45ACP.AP), 3}, - {ModItems.ammo_45.stackFromEnum(10, Ammo45ACP.STOCK), U238.ingot(), ModItems.ammo_45.stackFromEnum(10, Ammo45ACP.DU), 3}, + {ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.STOCK), DURA.ingot(), ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.AP), 3}, + {ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.STOCK), U238.ingot(), ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.DU), 3}, - {ModItems.ammo_5mm.stackFromEnum(100, Ammo5mm.STOCK), ModItems.ingot_semtex, ModItems.ammo_5mm.stackFromEnum(100, Ammo5mm.EXPLOSIVE), 2}, - {ModItems.ammo_5mm.stackFromEnum(100, Ammo5mm.STOCK), U238.ingot(), ModItems.ammo_5mm.stackFromEnum(100, Ammo5mm.DU), 2}, - {ModItems.ammo_5mm.stackFromEnum(25, Ammo5mm.DU), STAR.ingot(), ModItems.ammo_5mm.stackFromEnum(25, Ammo5mm.STAR), 3}, - {ModItems.ammo_5mm.stackFromEnum(100, Ammo5mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_5mm.stackFromEnum(100, Ammo5mm.CHLOROPHYTE), 3}, + {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), ModItems.ingot_semtex, ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.EXPLOSIVE), 2}, + {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), U238.ingot(), ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.DU), 2}, + {ModItems.ammo_5mm.stackFromEnum(32, Ammo5mm.DU), STAR.ingot(), ModItems.ammo_5mm.stackFromEnum(32, Ammo5mm.STAR), 3}, + {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.CHLOROPHYTE), 3}, - {ModItems.ammo_9mm.stackFromEnum(20, Ammo9mm.STOCK), DURA.ingot(), ModItems.ammo_9mm.stackFromEnum(20, Ammo9mm.AP), 2}, - {ModItems.ammo_9mm.stackFromEnum(20, Ammo9mm.STOCK), U238.ingot(), ModItems.ammo_9mm.stackFromEnum(20, Ammo9mm.DU), 2}, - {ModItems.ammo_9mm.stackFromEnum(10, Ammo9mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_9mm.stackFromEnum(10, Ammo9mm.CHLOROPHYTE), 3}, + {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), DURA.ingot(), ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.AP), 2}, + {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), U238.ingot(), ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.DU), 2}, + {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.CHLOROPHYTE), 3}, - {ModItems.ammo_22lr.stackFromEnum(20, Ammo22LR.STOCK), DURA.ingot(), ModItems.ammo_22lr.stackFromEnum(20, Ammo22LR.AP), 2}, - {ModItems.ammo_22lr.stackFromEnum(10, Ammo22LR.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_22lr.stackFromEnum(10, Ammo22LR.CHLOROPHYTE), 3}, + {ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK), DURA.ingot(), ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.AP), 2}, + {ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.CHLOROPHYTE), 3}, - {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.STOCK), P_RED.dust(), ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.INCENDIARY), 2}, - {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.STOCK), P_WHITE.ingot(), ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.PHOSPHORUS), 2}, - {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.STOCK), ModItems.ingot_semtex, ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.EXPLOSIVE), 2}, - {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.STOCK), DURA.ingot(), ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.AP), 2}, - {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.STOCK), U238.ingot(), ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.DU), 2}, - {ModItems.ammo_50bmg.stackFromEnum(10, Ammo50BMG.DU), STAR.ingot(), ModItems.ammo_50bmg.stackFromEnum(10, Ammo50BMG.STAR), 3}, - {ModItems.ammo_50bmg.stackFromEnum(10, Ammo50BMG.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50bmg.stackFromEnum(10, Ammo50BMG.CHLOROPHYTE), 3}, - {ModItems.ammo_50bmg.stackFromEnum(100, Ammo50BMG.STOCK), ModItems.coin_maskman, ModItems.ammo_50bmg.stackFromEnum(100, Ammo50BMG.SLEEK), 4}, - {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.STOCK), ModItems.pellet_flechette, ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.FLECHETTE), 2}, - {ModItems.ammo_50bmg.stackFromEnum(10, Ammo50BMG.FLECHETTE), ModItems.nugget_am_mix, ModItems.ammo_50bmg.stackFromEnum(10, Ammo50BMG.FLECHETTE_AM), 3}, - {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.FLECHETTE), ModItems.powder_polonium, ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.FLECHETTE_PO), 3}, + {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), P_RED.dust(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.INCENDIARY), 2}, + {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), P_WHITE.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.PHOSPHORUS), 2}, + {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.ingot_semtex, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.EXPLOSIVE), 2}, + {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), DURA.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.AP), 2}, + {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), U238.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.DU), 2}, + {ModItems.ammo_50bmg.stackFromEnum(8, Ammo50BMG.DU), STAR.ingot(), ModItems.ammo_50bmg.stackFromEnum(8, Ammo50BMG.STAR), 3}, + {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.CHLOROPHYTE), 3}, + {ModItems.ammo_50bmg.stackFromEnum(128, Ammo50BMG.STOCK), ModItems.coin_maskman, ModItems.ammo_50bmg.stackFromEnum(128, Ammo50BMG.SLEEK), 4}, + {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.pellet_flechette, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE), 2}, + {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE), ModItems.nugget_am_mix, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE_AM), 3}, + {ModItems.ammo_50bmg.stackFromEnum(32, Ammo50BMG.FLECHETTE), ModItems.powder_polonium, ModItems.ammo_50bmg.stackFromEnum(32, Ammo50BMG.FLECHETTE_PO), 3}, - {ModItems.ammo_50ae.stackFromEnum(20, Ammo50AE.STOCK), DURA.ingot(), ModItems.ammo_50ae.stackFromEnum(20, Ammo50AE.AP), 2}, - {ModItems.ammo_50ae.stackFromEnum(20, Ammo50AE.STOCK), U238.ingot(), ModItems.ammo_50ae.stackFromEnum(20, Ammo50AE.DU), 2}, - {ModItems.ammo_50ae.stackFromEnum(10, Ammo50AE.DU), STAR.ingot(), ModItems.ammo_50ae.stackFromEnum(10, Ammo50AE.STAR), 3}, - {ModItems.ammo_50ae.stackFromEnum(10, Ammo50AE.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50ae.stackFromEnum(10, Ammo50AE.CHLOROPHYTE), 3}, + {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), DURA.ingot(), ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.AP), 2}, + {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), U238.ingot(), ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.DU), 2}, + {ModItems.ammo_50ae.stackFromEnum(16, Ammo50AE.DU), STAR.ingot(), ModItems.ammo_50ae.stackFromEnum(16, Ammo50AE.STAR), 3}, + {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.CHLOROPHYTE), 3}, - {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.STOCK), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(20, Ammo556mm.PHOSPHORUS), 2}, - {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.STOCK), DURA.ingot(), ModItems.ammo_556.stackFromEnum(20, Ammo556mm.AP), 2}, - {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.STOCK), U238.ingot(), ModItems.ammo_556.stackFromEnum(20, Ammo556mm.DU), 2}, - {ModItems.ammo_556.stackFromEnum(10, Ammo556mm.DU), STAR.ingot(), ModItems.ammo_556.stackFromEnum(10, Ammo556mm.STAR), 3}, - {ModItems.ammo_556.stackFromEnum(10, Ammo556mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(10, Ammo556mm.CHLOROPHYTE), 3}, - {ModItems.ammo_556.stackFromEnum(100, Ammo556mm.STOCK), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(100, Ammo556mm.SLEEK), 4}, - {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.STOCK), Items.redstone, ModItems.ammo_556.stackFromEnum(20, Ammo556mm.TRACER), 2}, - {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.STOCK), ModItems.pellet_flechette, ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE), 2}, - {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE), P_RED.dust(), ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE_INCENDIARY), 2}, - {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE_PHOSPHORUS), 2}, - {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE), U238.ingot(), ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE_DU), 2}, - {ModItems.ammo_556.stackFromEnum(100, Ammo556mm.FLECHETTE), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(100, Ammo556mm.FLECHETTE_SLEEK), 4}, - {ModItems.ammo_556.stackFromEnum(10, Ammo556mm.FLECHETTE), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(10, Ammo556mm.FLECHETTE_CHLOROPHYTE), 3}, + {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.PHOSPHORUS), 2}, + {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), DURA.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.AP), 2}, + {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), U238.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.DU), 2}, + {ModItems.ammo_556.stackFromEnum(16, Ammo556mm.DU), STAR.ingot(), ModItems.ammo_556.stackFromEnum(16, Ammo556mm.STAR), 3}, + {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.CHLOROPHYTE), 3}, + {ModItems.ammo_556.stackFromEnum(128, Ammo556mm.STOCK), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(128, Ammo556mm.SLEEK), 4}, + {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), Items.redstone, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.TRACER), 2}, + {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), ModItems.pellet_flechette, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), 2}, + {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), P_RED.dust(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_INCENDIARY), 2}, + {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_PHOSPHORUS), 2}, + {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), U238.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_DU), 2}, + {ModItems.ammo_556.stackFromEnum(100, Ammo556mm.FLECHETTE), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(128, Ammo556mm.FLECHETTE_SLEEK), 4}, + {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_CHLOROPHYTE), 3}, - {ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.STOCK), Items.redstone, ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.TRACER), 2}, - {ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.STOCK), DURA.ingot(), ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.AP), 2}, - {ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.STOCK), P_WHITE.ingot(), ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.PHOSPHORUS), 2}, - {ModItems.ammo_762.stackFromEnum(10, Ammo762NATO.STOCK), U238.ingot(), ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.DU), 2} + {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), Items.redstone, ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.TRACER), 2}, + {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), DURA.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.AP), 2}, + {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), P_WHITE.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.PHOSPHORUS), 2}, + {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), U238.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.DU), 2} }; for(Object[] objs : recs) { @@ -629,6 +702,23 @@ public class AnvilRecipes { } public static void registerConstructionRecycling() { + + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModBlocks.heater_firebox), + new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.plate_steel, 8)), + new AnvilOutput(new ItemStack(ModItems.ingot_copper, 6)) + } + ).setTier(2)); + + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModBlocks.heater_oven), + new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.ingot_firebrick, 16)), + new AnvilOutput(new ItemStack(ModItems.ingot_copper, 8)) + } + ).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.barrel_tcalloy), new AnvilOutput[] { @@ -932,6 +1022,14 @@ public class AnvilRecipes { new AnvilOutput(new ItemStack(ModItems.plate_lead, 2)), new AnvilOutput(new ItemStack(ModItems.nuclear_waste_vitrified, 10)) }).setTier(3)); + + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModItems.egg_glyphid), new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.glyphid_meat, 2)), + new AnvilOutput(new ItemStack(ModItems.glyphid_meat, 1), 0.5F), + new AnvilOutput(new ItemStack(Items.bone, 1), 0.75F), + new AnvilOutput(new ItemStack(Items.experience_bottle, 1), 0.5F) + }).setTier(1)); } public static void pullFromAssembler(ComparableStack result, int tier) { diff --git a/src/main/java/com/hbm/inventory/recipes/loader/JSONLoaderBase.java b/src/main/java/com/hbm/inventory/recipes/loader/JSONLoaderBase.java deleted file mode 100644 index a2e8bc316..000000000 --- a/src/main/java/com/hbm/inventory/recipes/loader/JSONLoaderBase.java +++ /dev/null @@ -1,177 +0,0 @@ -package com.hbm.inventory.recipes.loader; - -import java.io.File; -import java.io.FileReader; -import java.io.IOException; - -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.stream.JsonWriter; -import com.hbm.inventory.RecipesCommon.AStack; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.inventory.RecipesCommon.OreDictStack; -import com.hbm.main.MainRegistry; - -import net.minecraft.item.Item; -import net.minecraftforge.oredict.OreDictionary; - -@Deprecated -public abstract class JSONLoaderBase { - - public File config; - public File template; - private final Gson gson = new Gson(); - - public JSONLoaderBase() { - - } - - public void loadRecipes() { - registerDefaults(); - //saveTemplateJSON(template); - - if(config != null) { - loadJSONRecipes(); - } - } - - protected abstract void registerDefaults(); - - protected void loadJSONRecipes() { - - try { - JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); - JsonElement recipes = json.get("recipes"); - - if(recipes instanceof JsonArray) { - - JsonArray recArray = recipes.getAsJsonArray(); - for(JsonElement recipe : recArray) { - - if(recipe.isJsonObject()) { - - } - } - } - } catch (Exception e) { } - } - - protected static AStack aStackFromArray(JsonArray array) { - - boolean dict = false; - String item = ""; - int stacksize = 1; - int meta = 0; - - if(array.size() < 2) - return null; - - /* - * EVAL "dict" OR "item" - */ - if(array.get(0).isJsonPrimitive()) { - - if(array.get(0).getAsString().equals("item")) { - dict = false; - } else if(array.get(0).getAsString().equals("dict")) { - dict = true; - } else { - MainRegistry.logger.error("Error reading recipe, stack array does not have 'item' or 'dict' label!"); - return null; - } - - } else { - MainRegistry.logger.error("Error reading recipe, label is not a valid data type!"); - return null; - } - - /* - * EVAL NAME - */ - if(array.get(1).isJsonPrimitive()) { - item = array.get(1).getAsString(); - } else { - MainRegistry.logger.error("Error reading recipe, item string is not a valid data type!"); - return null; - } - - /* - * EVAL STACKSIZE - */ - if(array.size() > 2 && array.get(2).isJsonPrimitive()) { - if(array.get(2).getAsJsonPrimitive().isNumber()) { - stacksize = Math.max(1, array.get(2).getAsJsonPrimitive().getAsNumber().intValue()); - } else { - MainRegistry.logger.error("Error reading recipe, stack size is not a valid data type!"); - return null; - } - } - - /* - * RESOLVE OREDICT - */ - if(dict) { - - if(OreDictionary.doesOreNameExist(item)) { - return new OreDictStack(item, stacksize); - } else { - - MainRegistry.logger.error("Error reading recipe, ore dict name does not exist!"); - return null; - } - - /* - * RESOLVE COMPARABLE - */ - } else { - - /* - * EVAL META - */ - if(array.size() > 3 && array.get(3).isJsonPrimitive()) { - if(array.get(3).getAsJsonPrimitive().isNumber()) { - meta = Math.max(0, array.get(3).getAsJsonPrimitive().getAsNumber().intValue()); - } else { - MainRegistry.logger.error("Error reading recipe, metadata is not a valid data type!"); - return null; - } - } - - Item it = (Item)Item.itemRegistry.getObject(item); - if(it == null) { - MainRegistry.logger.error("Item could not be found!"); - return null; - } - - return new ComparableStack(it, stacksize, meta); - } - } - - protected static void writeAStack(AStack astack, JsonWriter writer) throws IOException { - - writer.beginArray(); - writer.setIndent(""); - - if(astack instanceof ComparableStack) { - ComparableStack comp = (ComparableStack) astack; - - writer.value("item"); //ITEM identifier - writer.value(Item.itemRegistry.getNameForObject(comp.toStack().getItem())); //item name - if(comp.stacksize != 1) writer.value(comp.stacksize); //stack size - if(comp.meta > 0) writer.value(comp.meta); //metadata - } - - if(astack instanceof OreDictStack) { - OreDictStack ore = (OreDictStack) astack; - - writer.value("dict"); //DICT identifier - writer.value(ore.name); //dict name - writer.value(ore.stacksize); //stacksize - } - - writer.endArray(); - writer.setIndent(" "); - } -} diff --git a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index 92e378ef2..f54138b0f 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -25,6 +25,7 @@ import com.hbm.inventory.material.MatDistribution; import com.hbm.inventory.recipes.*; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import com.hbm.util.Tuple.Pair; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -60,7 +61,14 @@ public abstract class SerializableRecipe { recipeHandlers.add(new FuelPoolRecipes()); recipeHandlers.add(new MixerRecipes()); recipeHandlers.add(new OutgasserRecipes()); + recipeHandlers.add(new CompressorRecipes()); + recipeHandlers.add(new ElectrolyserFluidRecipes()); + recipeHandlers.add(new ElectrolyserMetalRecipes()); + recipeHandlers.add(new ArcWelderRecipes()); + recipeHandlers.add(new ExposureChamberRecipes()); + recipeHandlers.add(new MatDistribution()); + recipeHandlers.add(new CustomMachineRecipes()); } public static void initialize() { @@ -165,7 +173,9 @@ public abstract class SerializableRecipe { writer.endArray(); //end recipe array writer.endObject(); //final '}' writer.close(); - } catch(Exception ex) { } + } catch(Exception ex) { + ex.printStackTrace(); + } } public void readRecipeFile(File file) { @@ -183,7 +193,7 @@ public abstract class SerializableRecipe { * JSON IO UTIL */ - protected static AStack readAStack(JsonArray array) { + public static AStack readAStack(JsonArray array) { try { String type = array.get(0).getAsString(); int stacksize = array.size() > 2 ? array.get(2).getAsInt() : 1; @@ -201,7 +211,7 @@ public abstract class SerializableRecipe { return new ComparableStack(ModItems.nothing); } - protected static AStack[] readAStackArray(JsonArray array) { + public static AStack[] readAStackArray(JsonArray array) { try { AStack[] items = new AStack[array.size()]; for(int i = 0; i < items.length; i++) { items[i] = readAStack((JsonArray) array.get(i)); } @@ -211,7 +221,7 @@ public abstract class SerializableRecipe { return new AStack[0]; } - protected static void writeAStack(AStack astack, JsonWriter writer) throws IOException { + public static void writeAStack(AStack astack, JsonWriter writer) throws IOException { writer.beginArray(); writer.setIndent(""); if(astack instanceof ComparableStack) { @@ -231,7 +241,7 @@ public abstract class SerializableRecipe { writer.setIndent(" "); } - protected static ItemStack readItemStack(JsonArray array) { + public static ItemStack readItemStack(JsonArray array) { try { Item item = (Item) Item.itemRegistry.getObject(array.get(0).getAsString()); int stacksize = array.size() > 1 ? array.get(1).getAsInt() : 1; @@ -242,7 +252,19 @@ public abstract class SerializableRecipe { return new ItemStack(ModItems.nothing); } - protected static ItemStack[] readItemStackArray(JsonArray array) { + public static Pair readItemStackChance(JsonArray array) { + try { + Item item = (Item) Item.itemRegistry.getObject(array.get(0).getAsString()); + int stacksize = array.size() > 2 ? array.get(1).getAsInt() : 1; + int meta = array.size() > 3 ? array.get(2).getAsInt() : 0; + float chance = array.get(array.size() - 1).getAsFloat(); + if(item != null) return new Pair(new ItemStack(item, stacksize, meta), chance); + } catch(Exception ex) { } + MainRegistry.logger.error("Error reading stack array " + array.toString() + " - defaulting to NOTHING item!"); + return new Pair(new ItemStack(ModItems.nothing), 1F); + } + + public static ItemStack[] readItemStackArray(JsonArray array) { try { ItemStack[] items = new ItemStack[array.size()]; for(int i = 0; i < items.length; i++) { items[i] = readItemStack((JsonArray) array.get(i)); } @@ -252,7 +274,17 @@ public abstract class SerializableRecipe { return new ItemStack[0]; } - protected static void writeItemStack(ItemStack stack, JsonWriter writer) throws IOException { + public static Pair[] readItemStackArrayChance(JsonArray array) { + try { + Pair[] items = new Pair[array.size()]; + for(int i = 0; i < items.length; i++) { items[i] = readItemStackChance((JsonArray) array.get(i)); } + return items; + } catch(Exception ex) { } + MainRegistry.logger.error("Error reading stack array " + array.toString()); + return new Pair[0]; + } + + public static void writeItemStack(ItemStack stack, JsonWriter writer) throws IOException { writer.beginArray(); writer.setIndent(""); writer.value(Item.itemRegistry.getNameForObject(stack.getItem())); //item name @@ -262,17 +294,29 @@ public abstract class SerializableRecipe { writer.setIndent(" "); } - protected static FluidStack readFluidStack(JsonArray array) { + public static void writeItemStackChance(Pair stack, JsonWriter writer) throws IOException { + writer.beginArray(); + writer.setIndent(""); + writer.value(Item.itemRegistry.getNameForObject(stack.getKey().getItem())); //item name + if(stack.getKey().stackSize != 1 || stack.getKey().getItemDamage() != 0) writer.value(stack.getKey().stackSize); //stack size + if(stack.getKey().getItemDamage() != 0) writer.value(stack.getKey().getItemDamage()); //metadata + writer.value(stack.value); //chance + writer.endArray(); + writer.setIndent(" "); + } + + public static FluidStack readFluidStack(JsonArray array) { try { FluidType type = Fluids.fromName(array.get(0).getAsString()); int fill = array.get(1).getAsInt(); - return new FluidStack(type, fill); + int pressure = array.size() < 3 ? 0 : array.get(2).getAsInt(); + return new FluidStack(type, fill, pressure); } catch(Exception ex) { } MainRegistry.logger.error("Error reading fluid array " + array.toString()); return new FluidStack(Fluids.NONE, 0); } - protected static FluidStack[] readFluidArray(JsonArray array) { + public static FluidStack[] readFluidArray(JsonArray array) { try { FluidStack[] fluids = new FluidStack[array.size()]; for(int i = 0; i < fluids.length; i++) { fluids[i] = readFluidStack((JsonArray) array.get(i)); } @@ -282,11 +326,12 @@ public abstract class SerializableRecipe { return new FluidStack[0]; } - protected static void writeFluidStack(FluidStack stack, JsonWriter writer) throws IOException { + public static void writeFluidStack(FluidStack stack, JsonWriter writer) throws IOException { writer.beginArray(); writer.setIndent(""); writer.value(stack.type.getName()); //fluid type writer.value(stack.fill); //amount in mB + if(stack.pressure != 0) writer.value(stack.pressure); writer.endArray(); writer.setIndent(" "); } diff --git a/src/main/java/com/hbm/items/ItemAmmoEnums.java b/src/main/java/com/hbm/items/ItemAmmoEnums.java index d42eb4015..54ad9f1c6 100644 --- a/src/main/java/com/hbm/items/ItemAmmoEnums.java +++ b/src/main/java/com/hbm/items/ItemAmmoEnums.java @@ -186,7 +186,8 @@ public class ItemAmmoEnums { FINNED("ammo_grenade_finned", AmmoItemTrait.PRO_GRAVITY, AmmoItemTrait.CON_RADIUS), NUCLEAR("ammo_grenade_nuclear", AmmoItemTrait.PRO_NUCLEAR, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.CON_HEAVY_WEAR), TRACER("ammo_grenade_tracer", AmmoItemTrait.NEU_BLANK), - KAMPF("ammo_grenade_kampf", AmmoItemTrait.PRO_ROCKET_PROPELLED, AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.CON_WEAR); + KAMPF("ammo_grenade_kampf", AmmoItemTrait.PRO_ROCKET_PROPELLED, AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.CON_WEAR), + LEADBURSTER("ammo_grenade_leadburster", AmmoItemTrait.NEU_LEADBURSTER, AmmoItemTrait.CON_NO_EXPLODE1); private final Set traits; private final String unloc; @@ -748,6 +749,23 @@ public class ItemAmmoEnums { } } + public enum AmmoCoilgun implements IAmmoItemEnum { + STOCK("ammo_coilgun"), + DU("ammo_coilgun_du", AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.CON_HEAVY_WEAR), + RUBBER("ammo_coilgun_rubber", AmmoItemTrait.NEU_MORE_BOUNCY, AmmoItemTrait.CON_DAMAGE); + + private final Set traits; + private final String unloc; + + private AmmoCoilgun(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + @Override public Set getTraits() { return traits; } + @Override public String getInternalName() { return unloc; } + } + public interface IAmmoItemEnum { public Set getTraits(); public String getInternalName(); diff --git a/src/main/java/com/hbm/items/ItemEnumMulti.java b/src/main/java/com/hbm/items/ItemEnumMulti.java index f3f81d997..8085625d1 100644 --- a/src/main/java/com/hbm/items/ItemEnumMulti.java +++ b/src/main/java/com/hbm/items/ItemEnumMulti.java @@ -1,6 +1,7 @@ package com.hbm.items; import java.util.List; +import java.util.Locale; import com.hbm.lib.RefStrings; import com.hbm.util.EnumUtil; @@ -54,7 +55,7 @@ public class ItemEnumMulti extends Item { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "." + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "." + num.name().toLowerCase(Locale.US)); } } else { this.itemIcon = reg.registerIcon(this.getIconString()); @@ -91,7 +92,7 @@ public class ItemEnumMulti extends Item { if(multiName) { Enum num = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); - return super.getUnlocalizedName() + "." + num.name().toLowerCase(); + return super.getUnlocalizedName() + "." + num.name().toLowerCase(Locale.US); } else { return super.getUnlocalizedName(stack); } diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index a15664ddb..b4d48e009 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -23,6 +23,15 @@ public class ItemEnums { PARAFFIN } + public static enum EnumAshType { + WOOD, + COAL, + MISC, + FLY, + SOOT, + FULLERENE + } + public static enum EnumBriquetteType { COAL, LIGNITE, @@ -40,4 +49,20 @@ public class ItemEnums { ROPE, MUSTARDWILLOW } + + public static enum EnumAchievementType { + GOFISH, + ACID, + BALLS, + DIGAMMASEE, + DIGAMMAFEEL, + DIGAMMAKNOW, + DIGAMMAKAUAIMOHO, + DIGAMMAUPONTOP, + DIGAMMAFOROURRIGHT + } + + public static enum EnumPages { + PAGE1, PAGE2, PAGE3, PAGE4, PAGE5, PAGE6, PAGE7, PAGE8 + } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 79043e1e0..211768119 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -17,11 +17,11 @@ import com.hbm.items.armor.*; import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart; import com.hbm.items.bomb.*; import com.hbm.items.food.*; -import com.hbm.items.food.ItemConserve.EnumFoodType; import com.hbm.items.machine.*; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemPlateFuel.FunctionEnum; +import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; import com.hbm.items.machine.ItemRBMKRod.EnumBurnFunc; import com.hbm.items.machine.ItemRBMKRod.EnumDepleteFunc; import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; @@ -103,6 +103,8 @@ public class ModItems { public static Item ingot_titanium; public static Item ingot_cobalt; public static Item sulfur; + public static Item nitra; + public static Item nitra_small; public static Item coke; public static Item lignite; @@ -110,6 +112,7 @@ public class ModItems { public static Item briquette; public static Item coal_infernal; public static Item cinnebar; + public static Item powder_ash; public static Item niter; public static Item ingot_copper; @@ -342,10 +345,12 @@ public class ModItems { public static Item crayon; public static Item undefined; - + + public static Item ball_resin; public static Item ingot_dura_steel; public static Item ingot_polymer; public static Item ingot_bakelite; + public static Item ingot_biorubber; public static Item ingot_rubber; public static Item ingot_pet; public static Item ingot_pc; @@ -360,6 +365,7 @@ public class ModItems { public static Item powder_cadmium; public static Item powder_bismuth; public static Item ingot_mud; + public static Item ingot_cft; public static Item ingot_lanthanium; public static Item ingot_actinium; @@ -414,7 +420,8 @@ public class ModItems { public static Item crystal_cinnebar; public static Item crystal_trixite; public static Item crystal_osmiridium; - + + public static Item gem_sodalite; public static Item gem_tantalium; public static Item gem_volcanic; public static Item gem_alexandrite; @@ -480,6 +487,7 @@ public class ModItems { public static Item powder_steel; public static Item powder_lithium; public static Item powder_zirconium; + public static Item powder_sodium; public static Item redstone_depleted; public static Item powder_australium; @@ -513,6 +521,7 @@ public class ModItems { public static Item powder_paleogenite_tiny; public static Item powder_impure_osmiridium; public static Item powder_borax; + public static Item powder_chlorocalcite; public static Item powder_lanthanium; public static Item powder_actinium; @@ -552,6 +561,7 @@ public class ModItems { public static Item tank_steel; public static Item motor; public static Item motor_desh; + public static Item motor_bismuth; public static Item centrifuge_element; //public static Item centrifuge_tower; public static Item reactor_core; @@ -606,11 +616,6 @@ public class ModItems { public static Item mechanism_launcher_2; public static Item mechanism_special; - public static Item primer_357; - public static Item primer_44; - public static Item primer_9; - public static Item primer_50; - public static Item primer_buckshot; public static Item casing_357; public static Item casing_44; public static Item casing_9; @@ -757,12 +762,18 @@ public class ModItems { public static Item stamp_desh_plate; public static Item stamp_desh_wire; public static Item stamp_desh_circuit; + public static Item stamp_book; public static Item stamp_357; public static Item stamp_44; public static Item stamp_9; public static Item stamp_50; + public static Item stamp_desh_357; + public static Item stamp_desh_44; + public static Item stamp_desh_9; + public static Item stamp_desh_50; + public static Item blades_steel; public static Item blades_titanium; public static Item blades_advanced_alloy; @@ -772,6 +783,9 @@ public class ModItems { public static Item mold; public static Item scraps; public static Item plate_cast; + public static Item plate_welded; + public static Item heavy_component; + public static Item wire_dense; public static Item part_lithium; public static Item part_beryllium; @@ -1000,6 +1014,7 @@ public class ModItems { public static Item cap_sunset; public static Item cap_star; public static Item ring_pull; + public static Item bdcl; //public static Item canned_beef; //public static Item canned_tuna; //public static Item canned_mystery; @@ -1030,7 +1045,10 @@ public class ModItems { public static ItemEnumMulti canned_conserve; public static Item can_key; + public static Item boat_rubber; public static Item cart; + public static Item train; + public static Item drone; public static Item coin_creeper; public static Item coin_radiation; @@ -1094,6 +1112,10 @@ public class ModItems { public static Item plate_fuel_sa326; public static Item plate_fuel_ra226be; public static Item plate_fuel_pu238be; + + public static Item pwr_fuel; + public static Item pwr_fuel_hot; + public static Item pwr_fuel_depleted; public static Item rbmk_lid; public static Item rbmk_lid_glass; @@ -1192,17 +1214,7 @@ public class ModItems { public static Item debris_element; public static Item containment_box; - - public static Item recycled_ground; - public static Item recycled_rock; - public static Item recycled_metal; - public static Item recycled_refined; - public static Item recycled_organic; - public static Item recycled_crystal; - public static Item recycled_explosive; - public static Item recycled_electronic; - public static Item recycled_nuclear; - public static Item recycled_misc; + public static Item plastic_bag; public static Item test_nuke_igniter; public static Item test_nuke_propellant; @@ -1246,11 +1258,16 @@ public class ModItems { public static Item dosimeter; public static Item geiger_counter; public static Item digamma_diagnostic; + public static Item pollution_detector; public static Item survey_scanner; public static Item mirror_tool; public static Item rbmk_tool; public static Item coltan_tool; public static Item power_net_tool; + public static Item analysis_tool; + public static Item coupling_tool; + public static Item drone_linker; + public static Item radar_linker; public static Item template_folder; public static Item journal_pip; @@ -1278,6 +1295,7 @@ public class ModItems { public static Item missile_incendiary; public static Item missile_cluster; public static Item missile_buster; + public static Item missile_decoy; public static Item missile_strong; public static Item missile_incendiary_strong; public static Item missile_cluster_strong; @@ -1495,6 +1513,7 @@ public class ModItems { public static ItemEnumMulti ammo_dart; public static ItemEnumMulti ammo_stinger_rocket; public static ItemEnumMulti ammo_luna_sniper; + public static ItemEnumMulti ammo_coilgun; public static Item ammo_cell; @@ -1510,6 +1529,7 @@ public class ModItems { public static Item gun_panzerschreck; public static Item gun_quadro; public static Item gun_hk69; + public static Item gun_congolake; public static Item gun_stinger; public static Item gun_skystinger; public static Item gun_revolver; @@ -1537,7 +1557,6 @@ public class ModItems { public static Item gun_proto; public static Item gun_mirv; public static Item gun_bf; - public static Item gun_bf_ammo; public static Item gun_chemthrower; public static Item gun_mp40; public static Item gun_thompson; @@ -1549,6 +1568,7 @@ public class ModItems { public static Item gun_remington; public static Item gun_spas12; public static Item gun_supershotgun; + public static Item gun_benelli; public static Item gun_ks23; public static Item gun_sauer; public static Item gun_lever_action; @@ -1561,6 +1581,7 @@ public class ModItems { public static Item gun_b92; public static Item gun_b92_ammo; public static Item gun_b93; + public static Item gun_coilgun; public static Item gun_xvl1456; public static Item gun_xvl1456_ammo; public static Item gun_osipr; @@ -1570,6 +1591,7 @@ public class ModItems { public static Item gun_immolator_ammo; public static Item gun_flamer; public static Item gun_cryolator; + public static Item gun_cryocannon; public static Item gun_cryolator_ammo; public static Item gun_fireext; public static Item gun_mp; @@ -1603,6 +1625,7 @@ public class ModItems { public static Item gun_glass_cannon; public static Item gun_m2; public static Item gun_lunatic_marksman; + public static Item gun_uac_pistol; // We'll figure this part out later //public static Item gun_llr, gun_mlr, gun_hlr, gun_twr, gun_lunatic, gun_lunatic_shotty; @@ -1612,6 +1635,7 @@ public class ModItems { public static Item crucible; public static Item stick_dynamite; + public static Item stick_dynamite_fishing; public static Item stick_tnt; public static Item stick_semtex; public static Item stick_c4; @@ -1661,7 +1685,7 @@ public class ModItems { public static Item grenade_mirv; public static Item grenade_breach; public static Item grenade_burst; - + public static Item nuclear_waste_pearl; public static Item weaponized_starblaster_cell; @@ -1690,6 +1714,9 @@ public class ModItems { public static Item marshmallow; public static Item cheese; public static Item quesadilla; + public static Item glyphid_meat; + public static Item glyphid_meat_grilled; + public static Item egg_glyphid; public static Item med_ipecac; public static Item med_ptsd; @@ -1793,6 +1820,7 @@ public class ModItems { public static Item energy_core; public static Item fuse; public static Item redcoil_capacitor; + public static Item euphemium_capacitor; public static Item titanium_filter; //by using these in crafting table recipes, i'm running the risk of making my recipes too greg-ian (which i don't like) //in the event that i forget about the meaning of the word "sparingly", please throw a brick at my head @@ -1948,6 +1976,10 @@ public class ModItems { public static Item bj_plate_jetpack; public static Item bj_legs; public static Item bj_boots; + public static Item envsuit_helmet; + public static Item envsuit_plate; + public static Item envsuit_legs; + public static Item envsuit_boots; public static Item hev_helmet; public static Item hev_plate; public static Item hev_legs; @@ -1960,6 +1992,10 @@ public class ModItems { public static Item dns_plate; public static Item dns_legs; public static Item dns_boots; + public static Item trenchmaster_helmet; + public static Item trenchmaster_plate; + public static Item trenchmaster_legs; + public static Item trenchmaster_boots; public static Item zirconium_legs; public static Item robes_helmet; public static Item robes_plate; @@ -2157,6 +2193,7 @@ public class ModItems { public static Item gas_tester; public static Item defuser_gold; public static Item ballistic_gauntlet; + public static Item night_vision; public static Item hazmat_helmet; public static Item hazmat_plate; @@ -2189,6 +2226,7 @@ public class ModItems { public static Item structure_pattern; public static Item structure_randomized; public static Item structure_randomly; + public static Item structure_custommachine; public static Item rod_of_discord; @@ -2309,7 +2347,9 @@ public class ModItems { public static Item door_metal; public static Item door_office; public static Item door_bunker; - + + public static Item sliding_blast_door_skin; + public static Item record_lc; public static Item record_ss; public static Item record_vc; @@ -2325,6 +2365,7 @@ public class ModItems { public static Item letter; public static Item book_secret; public static Item book_of_; + public static Item page_of_; public static Item burnt_bark; public static Item smoke1; @@ -2433,18 +2474,13 @@ public class ModItems { public static Item nothing; public static Item void_anim; + public static Item achievement_icon; public static Item bob_metalworks; public static Item bob_assembly; public static Item bob_chemistry; public static Item bob_oil; public static Item bob_nuclear; - public static Item digamma_see; - public static Item digamma_feel; - public static Item digamma_know; - public static Item digamma_kauai_moho; - public static Item digamma_up_on_top; - public static Item mysteryshovel; public static Item memory; @@ -2497,6 +2533,8 @@ public class ModItems { ingot_firebrick = new Item().setUnlocalizedName("ingot_firebrick").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_firebrick"); ingot_smore = new ItemFood(10, 20F, false).setUnlocalizedName("ingot_smore").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_smore"); sulfur = new Item().setUnlocalizedName("sulfur").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sulfur"); + nitra = new Item().setUnlocalizedName("nitra").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nitra"); + nitra_small = new Item().setUnlocalizedName("nitra_small").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nitra_small"); ingot_uranium_fuel = new Item().setUnlocalizedName("ingot_uranium_fuel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_uranium_fuel"); ingot_plutonium_fuel = new Item().setUnlocalizedName("ingot_plutonium_fuel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_plutonium_fuel"); @@ -2625,9 +2663,11 @@ public class ModItems { billet_zfb_am_mix = new Item().setUnlocalizedName("billet_zfb_am_mix").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":billet_zfb_am_mix"); billet_nuclear_waste = new Item().setUnlocalizedName("billet_nuclear_waste").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":billet_nuclear_waste"); + ball_resin = new ItemCustomLore().setUnlocalizedName("ball_resin").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ball_resin"); ingot_dura_steel = new ItemCustomLore().setUnlocalizedName("ingot_dura_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_dura_steel"); ingot_polymer = new ItemCustomLore().setUnlocalizedName("ingot_polymer").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_polymer"); ingot_bakelite = new ItemCustomLore().setUnlocalizedName("ingot_bakelite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_bakelite"); + ingot_biorubber = new ItemCustomLore().setUnlocalizedName("ingot_biorubber").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_biorubber"); ingot_rubber = new ItemCustomLore().setUnlocalizedName("ingot_rubber").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_rubber"); //ingot_pet = new ItemCustomLore().setUnlocalizedName("ingot_pet").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_pet"); ingot_pc = new ItemCustomLore().setUnlocalizedName("ingot_pc").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_pc"); @@ -2655,6 +2695,7 @@ public class ModItems { powder_cadmium = new Item().setUnlocalizedName("powder_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cadmium"); powder_bismuth = new Item().setUnlocalizedName("powder_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_bismuth"); ingot_mud = new Item().setUnlocalizedName("ingot_mud").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_mud"); + ingot_cft = new Item().setUnlocalizedName("ingot_cft").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_cft"); ore_byproduct = new ItemByproduct().setUnlocalizedName("ore_byproduct").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":byproduct"); @@ -2700,6 +2741,7 @@ public class ModItems { powder_lignite = new Item().setUnlocalizedName("powder_lignite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lignite"); coal_infernal = new Item().setUnlocalizedName("coal_infernal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coal_infernal"); cinnebar = new Item().setUnlocalizedName("cinnebar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cinnebar"); + powder_ash = new ItemEnumMulti(EnumAshType.class, true, true).setUnlocalizedName("powder_ash").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_ash"); ingot_gh336 = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("ingot_gh336").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_gh336"); nugget_gh336 = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("nugget_gh336").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_gh336"); @@ -2802,6 +2844,7 @@ public class ModItems { crystal_cinnebar = new Item().setUnlocalizedName("crystal_cinnebar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_cinnebar"); crystal_trixite = new Item().setUnlocalizedName("crystal_trixite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_trixite"); crystal_osmiridium = new Item().setUnlocalizedName("crystal_osmiridium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_osmiridium"); + gem_sodalite = new ItemCustomLore().setUnlocalizedName("gem_sodalite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":gem_sodalite"); gem_tantalium = new ItemCustomLore().setUnlocalizedName("gem_tantalium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":gem_tantalium"); gem_volcanic = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("gem_volcanic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":gem_volcanic"); gem_alexandrite = new ItemAlexandrite().setUnlocalizedName("gem_alexandrite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":gem_alexandrite"); @@ -2851,6 +2894,7 @@ public class ModItems { powder_steel = new Item().setUnlocalizedName("powder_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_steel"); powder_lithium = new Item().setUnlocalizedName("powder_lithium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lithium"); powder_zirconium = new Item().setUnlocalizedName("powder_zirconium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_zirconium"); + powder_sodium = new Item().setUnlocalizedName("powder_sodium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_sodium"); redstone_depleted = new Item().setUnlocalizedName("redstone_depleted").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":redstone_depleted"); powder_power = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("powder_power").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_energy_alt"); powder_iodine = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_iodine").setCreativeTab(null).setTextureName(RefStrings.MODID + ":powder_iodine"); @@ -2908,6 +2952,7 @@ public class ModItems { powder_paleogenite_tiny = new Item().setUnlocalizedName("powder_paleogenite_tiny").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_paleogenite_tiny"); powder_impure_osmiridium = new Item().setUnlocalizedName("powder_impure_osmiridium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_impure_osmiridium"); powder_borax = new Item().setUnlocalizedName("powder_borax").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_borax"); + powder_chlorocalcite = new Item().setUnlocalizedName("powder_chlorocalcite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_chlorocalcite"); fragment_neodymium = new Item().setUnlocalizedName("fragment_neodymium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_neodymium"); fragment_cobalt = new Item().setUnlocalizedName("fragment_cobalt").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_cobalt"); @@ -2930,6 +2975,7 @@ public class ModItems { tank_steel = new Item().setUnlocalizedName("tank_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":tank_steel"); motor = new Item().setUnlocalizedName("motor").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor"); motor_desh = new Item().setUnlocalizedName("motor_desh").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor_desh"); + motor_bismuth = new Item().setUnlocalizedName("motor_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor_bismuth"); centrifuge_element = new Item().setUnlocalizedName("centrifuge_element").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":centrifuge_element"); //centrifuge_tower = new Item().setUnlocalizedName("centrifuge_tower").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":centrifuge_tower"); reactor_core = new Item().setUnlocalizedName("reactor_core").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":reactor_core"); @@ -3067,11 +3113,6 @@ public class ModItems { mechanism_launcher_1 = new Item().setUnlocalizedName("mechanism_launcher_1").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_5"); mechanism_launcher_2 = new Item().setUnlocalizedName("mechanism_launcher_2").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_6"); mechanism_special = new Item().setUnlocalizedName("mechanism_special").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_7"); - primer_357 = new Item().setUnlocalizedName("primer_357").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":primer_357"); - primer_44 = new Item().setUnlocalizedName("primer_44").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":primer_44"); - primer_9 = new Item().setUnlocalizedName("primer_9").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":primer_9"); - primer_50 = new Item().setUnlocalizedName("primer_50").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":primer_50"); - primer_buckshot = new Item().setUnlocalizedName("primer_buckshot").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":primer_buckshot"); casing_357 = new Item().setUnlocalizedName("casing_357").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing_357"); casing_44 = new Item().setUnlocalizedName("casing_44").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing_44"); casing_9 = new Item().setUnlocalizedName("casing_9").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing_9"); @@ -3219,7 +3260,13 @@ public class ModItems { stamp_44 = new ItemStamp(1000, StampType.C44).setUnlocalizedName("stamp_44").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_44"); stamp_9 = new ItemStamp(1000, StampType.C9).setUnlocalizedName("stamp_9").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_9"); stamp_50 = new ItemStamp(1000, StampType.C50).setUnlocalizedName("stamp_50").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_50"); + stamp_book = new ItemStampBook().setUnlocalizedName("stamp_book").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":stamp_book"); + stamp_desh_357 = new ItemStamp(0, StampType.C357).setUnlocalizedName("stamp_desh_357").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_357_desh"); + stamp_desh_44 = new ItemStamp(0, StampType.C44).setUnlocalizedName("stamp_desh_44").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_44_desh"); + stamp_desh_9 = new ItemStamp(0, StampType.C9).setUnlocalizedName("stamp_desh_9").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_9_desh"); + stamp_desh_50 = new ItemStamp(0, StampType.C50).setUnlocalizedName("stamp_desh_50").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_50_desh"); + blades_steel = new ItemBlades(200).setUnlocalizedName("blades_steel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":blades_steel"); blades_titanium = new ItemBlades(350).setUnlocalizedName("blades_titanium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":blades_titanium"); blades_advanced_alloy = new ItemBlades(700).setUnlocalizedName("blades_advanced_alloy").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":blades_advanced_alloy"); @@ -3229,6 +3276,9 @@ public class ModItems { mold = new ItemMold().setUnlocalizedName("mold").setCreativeTab(MainRegistry.controlTab); scraps = new ItemScraps().aot(Mats.MAT_BISMUTH, "scraps_bismuth").setUnlocalizedName("scraps").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":scraps"); plate_cast = new ItemAutogen(MaterialShapes.CASTPLATE).aot(Mats.MAT_BISMUTH, "plate_cast_bismuth").setUnlocalizedName("plate_cast").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_cast"); + plate_welded = new ItemAutogen(MaterialShapes.WELDEDPLATE).setUnlocalizedName("plate_welded").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_welded"); + heavy_component = new ItemAutogen(MaterialShapes.HEAVY_COMPONENT).setUnlocalizedName("heavy_component").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":heavy_component"); + wire_dense = new ItemAutogen(MaterialShapes.DENSEWIRE).setUnlocalizedName("wire_dense").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_dense"); part_lithium = new Item().setUnlocalizedName("part_lithium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_lithium"); part_beryllium = new Item().setUnlocalizedName("part_beryllium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_beryllium"); @@ -3243,7 +3293,6 @@ public class ModItems { laser_crystal_digamma = new ItemFELCrystal(EnumWavelengths.DRX).setUnlocalizedName("laser_crystal_digamma").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":laser_crystal_digamma"); thermo_element = new Item().setUnlocalizedName("thermo_element").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":thermo_element"); - //limiter = new Item().setUnlocalizedName("limiter").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":limiter"); catalytic_converter = new Item().setUnlocalizedName("catalytic_converter").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":catalytic_converter"); antiknock = new Item().setUnlocalizedName("antiknock").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":antiknock"); @@ -3279,7 +3328,7 @@ public class ModItems { }).setUnlocalizedName("iv_blood").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":iv_blood"); iv_xp_empty = new ItemSimpleConsumable().setUseActionServer((stack, user) -> { - if(user.experienceTotal >= 100) { + if(EnchantmentUtil.getTotalExperience(user) >= 100) { ItemSimpleConsumable.giveSoundAndDecrement(stack, user, "hbm:item.syringe", new ItemStack(ModItems.iv_xp)); EnchantmentUtil.setExperience(user, EnchantmentUtil.getTotalExperience(user) - 100); } @@ -3327,6 +3376,7 @@ public class ModItems { cbt_device = new ItemSyringe().setUnlocalizedName("cbt_device").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":cbt_device"); cigarette = new ItemCigarette().setUnlocalizedName("cigarette").setFull3D().setMaxStackSize(16).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cigarette"); crackpipe = new ItemCigarette().setUnlocalizedName("crackpipe").setFull3D().setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":crackpipe"); + bdcl = new ItemBDCL().setUnlocalizedName("bdcl").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bdcl"); attachment_mask = new ItemModGasmask().setUnlocalizedName("attachment_mask").setTextureName(RefStrings.MODID + ":attachment_mask"); attachment_mask_mono = new ItemModGasmask().setUnlocalizedName("attachment_mask_mono").setTextureName(RefStrings.MODID + ":attachment_mask_mono"); @@ -3386,6 +3436,7 @@ public class ModItems { gas_tester = new ItemModSensor().setUnlocalizedName("gas_tester").setTextureName(RefStrings.MODID + ":gas_tester"); defuser_gold = new ItemModDefuser().setUnlocalizedName("defuser_gold").setTextureName(RefStrings.MODID + ":defuser_gold"); ballistic_gauntlet = new ItemModTwoKick().setUnlocalizedName("ballistic_gauntlet").setTextureName(RefStrings.MODID + ":ballistic_gauntlet"); + night_vision = new ItemModNightVision().setUnlocalizedName("night_vision").setTextureName(RefStrings.MODID + ":night_vision"); 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"); @@ -3424,38 +3475,13 @@ public class ModItems { coffee = new ItemEnergy().setUnlocalizedName("coffee").setTextureName(RefStrings.MODID + ":coffee"); coffee_radium = new ItemEnergy().setUnlocalizedName("coffee_radium").setTextureName(RefStrings.MODID + ":coffee_radium"); chocolate = new ItemPill(0).setUnlocalizedName("chocolate").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":chocolate"); - - //canned_beef = new ItemLemon(8, 5, false).setUnlocalizedName("canned_beef").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_beef"); - //canned_tuna = new ItemLemon(4, 5, false).setUnlocalizedName("canned_tuna").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_tuna"); - //canned_mystery = new ItemLemon(6, 5, false).setUnlocalizedName("canned_mystery").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_mystery"); - //canned_pashtet = new ItemLemon(4, 5, false).setUnlocalizedName("canned_pashtet").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_pashtet"); - //canned_cheese = new ItemLemon(3, 5, false).setUnlocalizedName("canned_cheese").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_cheese"); - //canned_jizz = new ItemLemon(15, 5, false).setUnlocalizedName("canned_jizz").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_jizz"); - //canned_milk = new ItemLemon(5, 5, false).setUnlocalizedName("canned_milk").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_milk"); - //canned_ass = new ItemLemon(6, 5, false).setUnlocalizedName("canned_ass").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_ass"); - //canned_pizza = new ItemLemon(8, 5, false).setUnlocalizedName("canned_pizza").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_pizza"); - //canned_tube = new ItemLemon(2, 5, false).setUnlocalizedName("canned_tube").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_tube"); - //canned_tomato = new ItemLemon(4, 5, false).setUnlocalizedName("canned_tomato").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_tomato"); - //canned_asbestos = new ItemLemon(7, 5, false).setUnlocalizedName("canned_asbestos").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_asbestos"); - //canned_bhole = new ItemLemon(10, 5, false).setUnlocalizedName("canned_bhole").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_bhole"); - //canned_hotdogs = new ItemLemon(5, 5, false).setUnlocalizedName("canned_hotdogs").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_hotdogs"); - //canned_leftovers = new ItemLemon(1, 5, false).setUnlocalizedName("canned_leftovers").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_leftovers"); - //canned_yogurt = new ItemLemon(3, 5, false).setUnlocalizedName("canned_yogurt").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_yogurt"); - //canned_stew = new ItemLemon(5, 5, false).setUnlocalizedName("canned_stew").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_stew"); - //canned_chinese = new ItemLemon(6, 5, false).setUnlocalizedName("canned_chinese").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_chinese"); - //canned_oil = new ItemLemon(3, 5, false).setUnlocalizedName("canned_oil").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_oil"); - //canned_fist = new ItemLemon(6, 5, false).setUnlocalizedName("canned_fist").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_fist"); - //canned_spam = new ItemLemon(8, 5, false).setUnlocalizedName("canned_spam").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_spam"); - //canned_fried = new ItemLemon(10, 5, false).setUnlocalizedName("canned_fried").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_fried"); - //canned_napalm = new ItemLemon(6, 5, false).setUnlocalizedName("canned_napalm").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_napalm"); - //canned_diesel = new ItemLemon(6, 5, false).setUnlocalizedName("canned_diesel").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_diesel"); - //canned_kerosene = new ItemLemon(6, 5, false).setUnlocalizedName("canned_kerosene").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_kerosene"); - //canned_recursion = new ItemLemon(1, 5, false).setUnlocalizedName("canned_recursion").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_recursion"); - //canned_bark = new ItemLemon(2, 5, false).setUnlocalizedName("canned_bark").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_bark"); canned_conserve = (ItemEnumMulti) new ItemConserve().setUnlocalizedName("canned_conserve").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned"); can_key = new Item().setUnlocalizedName("can_key").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_key"); + boat_rubber = new ItemBoatRubber().setUnlocalizedName("boat_rubber").setTextureName(RefStrings.MODID + ":boat_rubber"); cart = new ItemModMinecart().setUnlocalizedName("cart"); + train = new ItemTrain().setUnlocalizedName("train"); + drone = new ItemDrone().setUnlocalizedName("drone"); coin_creeper = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_creeper").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_creeper"); coin_radiation = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_radiation").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_radiation"); @@ -3463,17 +3489,6 @@ public class ModItems { coin_worm = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_worm").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_worm"); coin_ufo = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_ufo").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_ufo"); - recycled_ground = new Item().setUnlocalizedName("recycled_ground").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_ground"); - recycled_rock = new Item().setUnlocalizedName("recycled_rock").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_rock"); - recycled_metal = new Item().setUnlocalizedName("recycled_metal").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_metal"); - recycled_refined = new Item().setUnlocalizedName("recycled_refined").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_refined"); - recycled_organic = new Item().setUnlocalizedName("recycled_organic").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_organic"); - recycled_crystal = new Item().setUnlocalizedName("recycled_crystal").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_crystal"); - recycled_explosive = new Item().setUnlocalizedName("recycled_explosive").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_explosive"); - recycled_electronic = new Item().setUnlocalizedName("recycled_electronic").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_electronic"); - recycled_nuclear = new Item().setUnlocalizedName("recycled_nuclear").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_nuclear"); - recycled_misc = new Item().setUnlocalizedName("recycled_misc").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_misc"); - rod_empty = new Item().setUnlocalizedName("rod_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_empty"); rod = (ItemEnumMulti) new ItemBreedingRod().setUnlocalizedName("rod").setContainerItem(ModItems.rod_empty).setCreativeTab(MainRegistry.controlTab); rod_dual_empty = new Item().setUnlocalizedName("rod_dual_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_dual_empty"); @@ -3539,6 +3554,10 @@ public class ModItems { plate_fuel_sa326 = new ItemPlateFuel(2000000).setFunction(FunctionEnum.LINEAR, 80).setUnlocalizedName("plate_fuel_sa326").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_sa326"); plate_fuel_ra226be = new ItemPlateFuel(1300000).setFunction(FunctionEnum.PASSIVE, 30).setUnlocalizedName("plate_fuel_ra226be").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_ra226be"); plate_fuel_pu238be = new ItemPlateFuel(1000000).setFunction(FunctionEnum.PASSIVE, 50).setUnlocalizedName("plate_fuel_pu238be").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_pu238be"); + + pwr_fuel = new ItemPWRFuel().setUnlocalizedName("pwr_fuel").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pwr_fuel"); + pwr_fuel_hot = new ItemEnumMulti(EnumPWRFuel.class, true, false).setUnlocalizedName("pwr_fuel_hot").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pwr_fuel_hot"); + pwr_fuel_depleted = new ItemEnumMulti(EnumPWRFuel.class, true, false).setUnlocalizedName("pwr_fuel_depleted").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pwr_fuel_depleted"); rbmk_lid = new ItemRBMKLid().setUnlocalizedName("rbmk_lid").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rbmk_lid"); rbmk_lid_glass = new ItemRBMKLid().setUnlocalizedName("rbmk_lid_glass").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rbmk_lid_glass"); @@ -3843,6 +3862,7 @@ public class ModItems { scrap_oil = new Item().setUnlocalizedName("scrap_oil").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":scrap_oil"); scrap_nuclear = new Item().setUnlocalizedName("scrap_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":scrap_nuclear"); containment_box = new ItemLeadBox().setUnlocalizedName("containment_box").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":containment_box"); + plastic_bag = new ItemPlasticBag().setUnlocalizedName("plastic_bag").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":plastic_bag"); debris_graphite = new Item().setUnlocalizedName("debris_graphite").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":debris_graphite"); debris_metal = new Item().setUnlocalizedName("debris_metal").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":debris_metal"); @@ -3893,6 +3913,7 @@ public class ModItems { missile_incendiary = new Item().setUnlocalizedName("missile_incendiary").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_incendiary"); missile_cluster = new Item().setUnlocalizedName("missile_cluster").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_cluster"); missile_buster = new Item().setUnlocalizedName("missile_buster").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_buster"); + missile_decoy = new Item().setUnlocalizedName("missile_decoy").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_decoy"); missile_strong = new Item().setUnlocalizedName("missile_strong").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_strong"); missile_incendiary_strong = new Item().setUnlocalizedName("missile_incendiary_strong").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_incendiary_strong"); missile_cluster_strong = new Item().setUnlocalizedName("missile_cluster_strong").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_cluster_strong"); @@ -4106,6 +4127,7 @@ public class ModItems { ammo_fuel = new ItemAmmo(AmmoFlamethrower.class).setUnlocalizedName("ammo_fuel"); ammo_fireext = new ItemAmmo(AmmoFireExt.class).setUnlocalizedName("ammo_fireext"); ammo_cell = new ItemCustomLore().setCreativeTab(MainRegistry.weaponTab).setUnlocalizedName("ammo_cell").setMaxStackSize(16); + ammo_coilgun = new ItemAmmo(AmmoCoilgun.class).setUnlocalizedName("ammo_coilgun"); ammo_dart = (ItemEnumMulti) new ItemAmmo(AmmoDart.class).setUnlocalizedName("ammo_dart").setMaxStackSize(16); ammo_stinger_rocket = new ItemAmmo(AmmoStinger.class).setUnlocalizedName("ammo_stinger_rocket"); ammo_luna_sniper = new ItemAmmo(AmmoLunaticSniper.class).setUnlocalizedName("ammo_luna_sniper"); @@ -4121,6 +4143,7 @@ public class ModItems { gun_panzerschreck = new ItemGunBase(GunRocketFactory.getPanzConfig()).setUnlocalizedName("gun_panzerschreck").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_panzerschreck"); gun_quadro = new ItemGunBase(GunRocketFactory.getQuadroConfig()).setUnlocalizedName("gun_quadro").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_quadro"); gun_hk69 = new ItemGunBase(GunGrenadeFactory.getHK69Config()).setUnlocalizedName("gun_hk69").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hk69"); + gun_congolake = new ItemGunCongo(GunGrenadeFactory.getCongoConfig()).setUnlocalizedName("gun_congolake").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_congolake"); gun_stinger = new ItemGunBase(GunRocketHomingFactory.getStingerConfig()).setUnlocalizedName("gun_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_stinger"); gun_skystinger = new ItemGunBase(GunRocketHomingFactory.getSkyStingerConfig()).setUnlocalizedName("gun_skystinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_skystinger"); gun_revolver = new ItemGunBase(Gun357MagnumFactory.getRevolverConfig()).setUnlocalizedName("gun_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver"); @@ -4138,7 +4161,7 @@ public class ModItems { gun_deagle = new ItemGunBase(Gun50AEFactory.getDeagleConfig()).setUnlocalizedName("gun_deagle").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_deagle"); gun_bio_revolver = new ItemGunBio(Gun357MagnumFactory.getRevolverBioConfig()).setUnlocalizedName("gun_bio_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bio_revolver"); gun_flechette = new ItemGunBase(Gun556mmFactory.getSPIWConfig(), Gun556mmFactory.getGLauncherConfig()).setUnlocalizedName("gun_flechette").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flechette"); - gun_ar15 = new ItemGunBase(Gun50BMGFactory.getAR15Config()).setUnlocalizedName("gun_ar15").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_ar15"); + gun_ar15 = new ItemGunBase(Gun50BMGFactory.getAR15Config(), Gun50BMGFactory.getAR15BurstConfig()).setUnlocalizedName("gun_ar15").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_ar15"); gun_calamity = new ItemGunBase(Gun762mmFactory.getCalamityConfig()).setUnlocalizedName("gun_calamity").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity"); gun_minigun = new ItemGunLacunae(Gun5mmFactory.get53Config()).setUnlocalizedName("gun_minigun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_minigun"); gun_avenger = new ItemGunLacunae(Gun5mmFactory.get57Config()).setUnlocalizedName("gun_avenger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_avenger"); @@ -4147,7 +4170,6 @@ public class ModItems { gun_fatman = new ItemGunBase(GunFatmanFactory.getFatmanConfig()).setUnlocalizedName("gun_fatman").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); gun_proto = new ItemGunBase(GunFatmanFactory.getProtoConfig()).setUnlocalizedName("gun_proto").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); gun_mirv = new ItemGunBase(GunFatmanFactory.getMIRVConfig()).setUnlocalizedName("gun_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv"); - gun_bf_ammo = new Item().setUnlocalizedName("gun_bf_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf_ammo"); gun_bf = new ItemGunBase(GunFatmanFactory.getBELConfig()).setUnlocalizedName("gun_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf"); gun_chemthrower = new ItemGunChemthrower().setUnlocalizedName("gun_chemthrower").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); gun_mp40 = new ItemGunBase(Gun9mmFactory.getMP40Config()).setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40"); @@ -4159,19 +4181,21 @@ public class ModItems { gun_uboinik = new ItemGunBase(Gun12GaugeFactory.getUboinikConfig()).setUnlocalizedName("gun_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); gun_remington = new ItemGunBase(Gun12GaugeFactory.getRemington870Config()).setUnlocalizedName("gun_remington").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); gun_spas12 = new ItemGunBase(Gun12GaugeFactory.getSpas12Config(), Gun12GaugeFactory.getSpas12AltConfig()).setUnlocalizedName("gun_spas12").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); + gun_benelli = new ItemGunBase(Gun12GaugeFactory.getBenelliModConfig()).setUnlocalizedName("gun_benelli").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); gun_supershotgun = new ItemGunShotty(Gun12GaugeFactory.getShottyConfig()).setUnlocalizedName("gun_supershotgun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); gun_ks23 = new ItemGunBase(Gun4GaugeFactory.getKS23Config()).setUnlocalizedName("gun_ks23").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); gun_sauer = new ItemGunBase(Gun4GaugeFactory.getSauerConfig()).setUnlocalizedName("gun_sauer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); gun_lever_action = new ItemGunBase(Gun20GaugeFactory.getMareConfig()).setUnlocalizedName("gun_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action"); gun_lever_action_dark = new ItemGunBase(Gun20GaugeFactory.getMareDarkConfig()).setUnlocalizedName("gun_lever_action_dark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_dark"); gun_lever_action_sonata = new GunLeverActionS().setUnlocalizedName("gun_lever_action_sonata").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_sonata"); - gun_bolt_action = new ItemGunBase(Gun20GaugeFactory.getBoltConfig()).setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action"); - gun_bolt_action_green = new ItemGunBase(Gun20GaugeFactory.getBoltGreenConfig()).setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_green"); - gun_bolt_action_saturnite = new ItemGunBase(Gun20GaugeFactory.getBoltSaturniteConfig()).setUnlocalizedName("gun_bolt_action_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_saturnite"); + gun_bolt_action = new ItemGunBase(Gun762mmFactory.getBoltConfig()).setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action"); + gun_bolt_action_green = new ItemGunBase(Gun762mmFactory.getBoltGreenConfig()).setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_green"); + gun_bolt_action_saturnite = new ItemGunBase(Gun762mmFactory.getBoltSaturniteConfig()).setUnlocalizedName("gun_bolt_action_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_saturnite"); gun_mymy = new ItemGunBase(GunDartFactory.getMymyConfig()).setUnlocalizedName("gun_mymy").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mymy"); gun_b92_ammo = new GunB92Cell().setUnlocalizedName("gun_b92_ammo").setMaxStackSize(1).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92_ammo_alt"); gun_b92 = new GunB92().setUnlocalizedName("gun_b92").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92"); gun_b93 = new GunB93().setUnlocalizedName("gun_b93").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b93"); + gun_coilgun = new ItemCoilgun(GunEnergyFactory.getCoilgunConfig()).setUnlocalizedName("gun_coilgun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_coilgun"); gun_xvl1456_ammo = new Item().setUnlocalizedName("gun_xvl1456_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456_ammo"); gun_xvl1456 = new ItemGunGauss(GunGaussFactory.getXVLConfig(), GunGaussFactory.getChargedConfig()).setUnlocalizedName("gun_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456"); gun_osipr_ammo = new Item().setUnlocalizedName("gun_osipr_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr_ammo"); @@ -4182,6 +4206,7 @@ public class ModItems { gun_flamer = new ItemGunBase(GunEnergyFactory.getFlamerConfig()).setUnlocalizedName("gun_flamer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flamer"); gun_cryolator_ammo = new Item().setUnlocalizedName("gun_cryolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator_ammo"); gun_cryolator = new GunCryolator().setUnlocalizedName("gun_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator"); + gun_cryocannon = new ItemCryoCannon(GunEnergyFactory.getCryoCannonConfig()).setUnlocalizedName("gun_cryocannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryocannon"); gun_fireext = new ItemGunBase(GunEnergyFactory.getExtConfig()).setUnlocalizedName("gun_fireext").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fireext"); gun_mp = new ItemGunBase(Gun556mmFactory.getEuphieConfig()).setUnlocalizedName("gun_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm"); gun_bolter = new ItemGunBase(Gun75BoltFactory.getBolterConfig()).setUnlocalizedName("gun_bolter").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolter"); @@ -4213,11 +4238,13 @@ public class ModItems { gun_glass_cannon = new ItemEnergyGunBase(GunPoweredFactory.getGlassCannonConfig()).setFull3D().setUnlocalizedName("gun_glass_cannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); gun_m2 = new ItemGunBase(Gun50BMGFactory.getM2Config()).setFull3D().setUnlocalizedName("gun_m2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); gun_lunatic_marksman = new ItemGunBase(Gun50BMGFactory.getLunaticMarksman()).setFull3D().setUnlocalizedName("gun_lunatic_marksman").setCreativeTab(MainRegistry.weaponTab); - + gun_uac_pistol = new ItemGunBase(Gun45ACPFactory.getUACPistolConfig(), Gun45ACPFactory.getUACPistolBurstConfig()).setFull3D().setUnlocalizedName("gun_uac_pistol").setCreativeTab(MainRegistry.weaponTab); + ToolMaterial matCrucible = EnumHelper.addToolMaterial("CRUCIBLE", 10, 3, 50.0F, 100.0F, 0); crucible = new ItemCrucible(5000, 1F, matCrucible).setUnlocalizedName("crucible").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":crucible"); stick_dynamite = new ItemGrenade(3).setUnlocalizedName("stick_dynamite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":stick_dynamite"); + stick_dynamite_fishing = new ItemGrenadeFishing(3).setUnlocalizedName("stick_dynamite_fishing").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":stick_dynamite_fishing"); stick_tnt = new Item().setUnlocalizedName("stick_tnt").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":stick_tnt"); stick_semtex = new Item().setUnlocalizedName("stick_semtex").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":stick_semtex"); stick_c4 = new Item().setUnlocalizedName("stick_c4").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":stick_c4"); @@ -4302,6 +4329,9 @@ public class ModItems { cheese = new ItemLemon(5, 10, false).setUnlocalizedName("cheese").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cheese"); quesadilla = new ItemLemon(8, 10, false).setUnlocalizedName("cheese_quesadilla").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":quesadilla"); mucho_mango = new ItemMuchoMango(10).setUnlocalizedName("mucho_mango").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mucho_mango"); + glyphid_meat = new ItemLemon(3, 3, true).setUnlocalizedName("glyphid_meat").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glyphid_meat"); + glyphid_meat_grilled = new ItemLemon(8, 8, true).setPotionEffect(Potion.damageBoost.id, 180, 1, 1F).setUnlocalizedName("glyphid_meat_grilled").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glyphid_meat_grilled"); + egg_glyphid = new Item().setUnlocalizedName("egg_glyphid").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":egg_glyphid"); defuser = new ItemTooling(ToolType.DEFUSER, 100).setUnlocalizedName("defuser").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":defuser"); reacher = new Item().setUnlocalizedName("reacher").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":reacher"); @@ -4405,7 +4435,8 @@ public class ModItems { energy_core = new ItemBattery(10000000, 0, 1000).setUnlocalizedName("energy_core").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":energy_core"); fuse = new ItemCustomLore().setUnlocalizedName("fuse").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fuse"); redcoil_capacitor = new ItemCapacitor(10).setUnlocalizedName("redcoil_capacitor").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":redcoil_capacitor"); - titanium_filter = new ItemCapacitor(6 * 60 * 60 * 20).setUnlocalizedName("titanium_filter").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":titanium_filter"); + euphemium_capacitor = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("euphemium_capacitor").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":redcoil_capacitor_euphemium"); + titanium_filter = new ItemTitaniumFilter(6 * 60 * 60 * 20).setUnlocalizedName("titanium_filter").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":titanium_filter"); screwdriver = new ItemTooling(ToolType.SCREWDRIVER, 100).setUnlocalizedName("screwdriver"); screwdriver_desh = new ItemTooling(ToolType.SCREWDRIVER, 0).setUnlocalizedName("screwdriver_desh"); hand_drill = new ItemTooling(ToolType.HAND_DRILL, 100).setUnlocalizedName("hand_drill"); @@ -4477,7 +4508,8 @@ public class ModItems { structure_pattern = new ItemStructurePattern().setUnlocalizedName("structure_pattern").setMaxStackSize(1).setCreativeTab(null).setFull3D().setTextureName(RefStrings.MODID + ":structure_pattern"); structure_randomized = new ItemStructureRandomized().setUnlocalizedName("structure_randomized").setMaxStackSize(1).setCreativeTab(null).setFull3D().setTextureName(RefStrings.MODID + ":structure_randomized"); structure_randomly = new ItemStructureRandomly().setUnlocalizedName("structure_randomly").setMaxStackSize(1).setCreativeTab(null).setFull3D().setTextureName(RefStrings.MODID + ":structure_randomly"); - + structure_custommachine = new ItemCMStructure().setUnlocalizedName("structure_custommachine").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setFull3D().setTextureName(RefStrings.MODID + ":structure_custommachine"); + rod_of_discord = new ItemDiscord().setUnlocalizedName("rod_of_discord").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setFull3D().setTextureName(RefStrings.MODID + ":rod_of_discord"); nuke_starter_kit = new ItemStarterKit().setUnlocalizedName("nuke_starter_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":nuke_starter_kit"); @@ -4571,11 +4603,16 @@ public class ModItems { dosimeter = new ItemDosimeter().setUnlocalizedName("dosimeter").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":dosimeter"); geiger_counter = new ItemGeigerCounter().setUnlocalizedName("geiger_counter").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":geiger_counter"); digamma_diagnostic = new ItemDigammaDiagnostic().setUnlocalizedName("digamma_diagnostic").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":digamma_diagnostic"); + pollution_detector = new ItemPollutionDetector().setUnlocalizedName("pollution_detector").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pollution_detector"); survey_scanner = new ItemSurveyScanner().setUnlocalizedName("survey_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":survey_scanner"); mirror_tool = new ItemMirrorTool().setUnlocalizedName("mirror_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mirror_tool"); rbmk_tool = new ItemRBMKTool().setUnlocalizedName("rbmk_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":rbmk_tool"); coltan_tool = new ItemColtanCompass().setUnlocalizedName("coltan_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coltass"); power_net_tool = new ItemPowerNetTool().setUnlocalizedName("power_net_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":power_net_tool"); + analysis_tool = new ItemAnalysisTool().setUnlocalizedName("analysis_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":analysis_tool"); + coupling_tool = new ItemCouplingTool().setUnlocalizedName("coupling_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coupling_tool"); + drone_linker = new ItemDroneLinker().setUnlocalizedName("drone_linker").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":drone_linker"); + radar_linker = new ItemRadarLinker().setUnlocalizedName("radar_linker").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":radar_linker"); key = new ItemKey().setUnlocalizedName("key").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":key"); key_red = new ItemCustomLore().setUnlocalizedName("key_red").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":key_red"); @@ -4685,11 +4722,11 @@ public class ModItems { asbestos_plate = new ArmorFSB(MainRegistry.aMatAsbestos, 1, RefStrings.MODID + ":textures/armor/asbestos_1.png").setFireproof(true).setUnlocalizedName("asbestos_plate").setTextureName(RefStrings.MODID + ":asbestos_plate"); asbestos_legs = new ArmorFSB(MainRegistry.aMatAsbestos, 2, RefStrings.MODID + ":textures/armor/asbestos_2.png").setFireproof(true).setUnlocalizedName("asbestos_legs").setTextureName(RefStrings.MODID + ":asbestos_legs"); asbestos_boots = new ArmorFSB(MainRegistry.aMatAsbestos, 3, RefStrings.MODID + ":textures/armor/asbestos_1.png").setFireproof(true).setUnlocalizedName("asbestos_boots").setTextureName(RefStrings.MODID + ":asbestos_boots"); - security_helmet = new ArmorFSB(MainRegistry.aMatSecurity, 0, RefStrings.MODID + ":textures/armor/security_1.png").setMod(0.75F).setProjectileProtection(0.5F).setUnlocalizedName("security_helmet").setTextureName(RefStrings.MODID + ":security_helmet"); + security_helmet = new ArmorFSB(MainRegistry.aMatSecurity, 0, RefStrings.MODID + ":textures/armor/security_1.png").setMod(0.65F).setProjectileProtection(0.5F).setUnlocalizedName("security_helmet").setTextureName(RefStrings.MODID + ":security_helmet"); security_plate = new ArmorFSB(MainRegistry.aMatSecurity, 1, RefStrings.MODID + ":textures/armor/security_1.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_plate").setTextureName(RefStrings.MODID + ":security_plate"); security_legs = new ArmorFSB(MainRegistry.aMatSecurity, 2, RefStrings.MODID + ":textures/armor/security_2.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_legs").setTextureName(RefStrings.MODID + ":security_legs"); security_boots = new ArmorFSB(MainRegistry.aMatSecurity, 3, RefStrings.MODID + ":textures/armor/security_1.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_boots").setTextureName(RefStrings.MODID + ":security_boots"); - cobalt_helmet = new ArmorFSB(MainRegistry.aMatCobalt, 0, RefStrings.MODID + ":textures/armor/cobalt_1.png").setMod(0.75F).setUnlocalizedName("cobalt_helmet").setTextureName(RefStrings.MODID + ":cobalt_helmet"); + cobalt_helmet = new ArmorFSB(MainRegistry.aMatCobalt, 0, RefStrings.MODID + ":textures/armor/cobalt_1.png").setMod(0.7F).setUnlocalizedName("cobalt_helmet").setTextureName(RefStrings.MODID + ":cobalt_helmet"); cobalt_plate = new ArmorFSB(MainRegistry.aMatCobalt, 1, RefStrings.MODID + ":textures/armor/cobalt_1.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_plate").setTextureName(RefStrings.MODID + ":cobalt_plate"); cobalt_legs = new ArmorFSB(MainRegistry.aMatCobalt, 2, RefStrings.MODID + ":textures/armor/cobalt_2.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_legs").setTextureName(RefStrings.MODID + ":cobalt_legs"); cobalt_boots = new ArmorFSB(MainRegistry.aMatCobalt, 3, RefStrings.MODID + ":textures/armor/cobalt_1.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_boots").setTextureName(RefStrings.MODID + ":cobalt_boots"); @@ -4848,6 +4885,20 @@ public class ModItems { bj_legs = new ArmorBJ(aMatBJ, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_legs").setTextureName(RefStrings.MODID + ":bj_legs"); bj_boots = new ArmorBJ(aMatBJ, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_boots").setTextureName(RefStrings.MODID + ":bj_boots"); + ArmorMaterial aMatEnv = EnumHelper.addArmorMaterial("HBM_ENV", 150, new int[] { 3, 8, 6, 3 }, 100); + aMatEnv.customCraftingMaterial = ModItems.plate_armor_hev; + envsuit_helmet = new ArmorEnvsuit(aMatEnv, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 100_000, 1_000, 250, 0).setMod(0.5F).setThreshold(2.0F) + .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 1)) + .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) + .addResistance("fall", 0.25F) + .addResistance("monoxide", 0F) + .addResistance("onFire", 0F) + .hides(EnumPlayerPart.HAT) + .setUnlocalizedName("envsuit_helmet").setTextureName(RefStrings.MODID + ":envsuit_helmet"); + envsuit_plate = new ArmorEnvsuit(aMatEnv, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 100_000, 1_000, 250, 0).cloneStats((ArmorFSB) envsuit_helmet).setUnlocalizedName("envsuit_plate").setTextureName(RefStrings.MODID + ":envsuit_plate"); + envsuit_legs = new ArmorEnvsuit(aMatEnv, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 100_000, 1_000, 250, 0).cloneStats((ArmorFSB) envsuit_helmet).setUnlocalizedName("envsuit_legs").setTextureName(RefStrings.MODID + ":envsuit_legs"); + envsuit_boots = new ArmorEnvsuit(aMatEnv, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 100_000, 1_000, 250, 0).cloneStats((ArmorFSB) envsuit_helmet).setUnlocalizedName("envsuit_boots").setTextureName(RefStrings.MODID + ":envsuit_boots"); + ArmorMaterial aMatHEV = EnumHelper.addArmorMaterial("HBM_HEV", 150, new int[] { 3, 8, 6, 3 }, 100); aMatHEV.customCraftingMaterial = ModItems.plate_armor_hev; hev_helmet = new ArmorHEV(aMatHEV, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).setMod(0.20F).setCap(4.0F).setThreshold(2.0F) @@ -4890,7 +4941,7 @@ public class ModItems { fau_plate = new ArmorDigamma(aMatFau, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setFullSetForHide().setUnlocalizedName("fau_plate").setTextureName(RefStrings.MODID + ":fau_plate"); fau_legs = new ArmorDigamma(aMatFau, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).hides(EnumPlayerPart.LEFT_LEG, EnumPlayerPart.RIGHT_LEG).setFullSetForHide().setUnlocalizedName("fau_legs").setTextureName(RefStrings.MODID + ":fau_legs"); fau_boots = new ArmorDigamma(aMatFau, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setUnlocalizedName("fau_boots").setTextureName(RefStrings.MODID + ":fau_boots"); - + ArmorMaterial aMatDNS = EnumHelper.addArmorMaterial("HBM_DNT_NANO", 150, new int[] { 3, 8, 6, 3 }, 100); aMatDNS.customCraftingMaterial = ModItems.plate_armor_dnt; dns_helmet = new ArmorDNT(aMatDNS, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000000, 1000000, 100000, 115) @@ -4911,6 +4962,23 @@ public class ModItems { dns_legs = new ArmorDNT(aMatDNS, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 1000000000, 1000000, 100000, 115).cloneStats((ArmorFSB) dns_helmet).setUnlocalizedName("dns_legs").setTextureName(RefStrings.MODID + ":dns_legs"); dns_boots = new ArmorDNT(aMatDNS, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000000, 1000000, 100000, 115).cloneStats((ArmorFSB) dns_helmet).setUnlocalizedName("dns_boots").setTextureName(RefStrings.MODID + ":dns_boots"); + ArmorMaterial aMatTrench = EnumHelper.addArmorMaterial("HBM_TRENCH", 150, new int[] { 3, 8, 6, 3 }, 100); + aMatTrench.customCraftingMaterial = ModItems.plate_iron; + trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setMod(0.25F).setThreshold(5.0F) + .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 2)) + .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 1)) + .addEffect(new PotionEffect(Potion.jump.id, 20, 1)) + .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 0)) + .enableVATS(true) + .addResistance("fall", 0F) + .setFireproof(true) + .setStepSize(1) + .hides(EnumPlayerPart.HAT) + .setUnlocalizedName("trenchmaster_helmet").setTextureName(RefStrings.MODID + ":trenchmaster_helmet"); + trenchmaster_plate = new ArmorTrenchmaster(aMatTrench, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) trenchmaster_helmet).setUnlocalizedName("trenchmaster_plate").setTextureName(RefStrings.MODID + ":trenchmaster_plate"); + trenchmaster_legs = new ArmorTrenchmaster(aMatTrench, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) trenchmaster_helmet).setUnlocalizedName("trenchmaster_legs").setTextureName(RefStrings.MODID + ":trenchmaster_legs"); + trenchmaster_boots = new ArmorTrenchmaster(aMatTrench, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) trenchmaster_helmet).setUnlocalizedName("trenchmaster_boots").setTextureName(RefStrings.MODID + ":trenchmaster_boots"); + jackt = new ModArmor(MainRegistry.aMatSteel, 1).setUnlocalizedName("jackt").setTextureName(RefStrings.MODID + ":jackt"); jackt2 = new ModArmor(MainRegistry.aMatSteel, 1).setUnlocalizedName("jackt2").setTextureName(RefStrings.MODID + ":jackt2"); @@ -4918,7 +4986,7 @@ public class ModItems { Fluids.DIESEL, Fluids.DIESEL_CRACK, Fluids.KEROSENE, Fluids.BIOFUEL, Fluids.GASOLINE, Fluids.GASOLINE_LEADED, Fluids.PETROIL, Fluids.PETROIL_LEADED, Fluids.COALGAS, Fluids.COALGAS_LEADED) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new ToolAbility.RecursionAbility(5)) - .addHitAbility(new WeaponAbility.ChainsawAbility(4)) + .addHitAbility(new WeaponAbility.ChainsawAbility(10)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("chainsaw").setTextureName(RefStrings.MODID + ":chainsaw"); schrabidium_sword = new ItemSwordAbility(150, 0, MainRegistry.tMatSchrab) @@ -5026,7 +5094,7 @@ public class ModItems { .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)) - .addHitAbility(new WeaponAbility.ChainsawAbility(6)) + .addHitAbility(new WeaponAbility.ChainsawAbility(15)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("elec_axe").setTextureName(RefStrings.MODID + ":elec_chainsaw_anim"); elec_shovel = new ItemToolAbilityPower(7.5F, 0, MainRegistry.tMatElec, EnumToolType.SHOVEL, 500000, 1000, 100) @@ -5075,7 +5143,7 @@ public class ModItems { .addBreakAbility(new LuckAbility(1)).setUnlocalizedName("cobalt_shovel").setTextureName(RefStrings.MODID + ":cobalt_shovel"); cobalt_hoe = new ModHoe(MainRegistry.tMatCobalt).setUnlocalizedName("cobalt_hoe").setTextureName(RefStrings.MODID + ":cobalt_hoe"); - ToolMaterial matDecCobalt = EnumHelper.addToolMaterial("HBM_COBALT2", 3, 1000, 15.0F, 2.5F, 25).setRepairItem(new ItemStack(ModItems.ingot_cobalt)); + ToolMaterial matDecCobalt = EnumHelper.addToolMaterial("HBM_COBALT2", 3, 2500, 15.0F, 2.5F, 75).setRepairItem(new ItemStack(ModItems.ingot_cobalt)); cobalt_decorated_sword = new ItemSwordAbility(15F, 0, matDecCobalt) .addHitAbility(new WeaponAbility.BobbleAbility()).setUnlocalizedName("cobalt_decorated_sword").setTextureName(RefStrings.MODID + ":cobalt_decorated_sword"); cobalt_decorated_pickaxe = new ItemToolAbility(6F, 0, matDecCobalt, EnumToolType.PICKAXE) @@ -5096,7 +5164,7 @@ public class ModItems { .addBreakAbility(new LuckAbility(3)).setUnlocalizedName("cobalt_decorated_shovel").setTextureName(RefStrings.MODID + ":cobalt_decorated_shovel"); cobalt_decorated_hoe = new ModHoe(matDecCobalt).setUnlocalizedName("cobalt_decorated_hoe").setTextureName(RefStrings.MODID + ":cobalt_decorated_hoe"); - ToolMaterial matStarmetal = EnumHelper.addToolMaterial("HBM_STARMETAL", 3, 1000, 20.0F, 2.5F, 30).setRepairItem(new ItemStack(ModItems.ingot_starmetal)); + ToolMaterial matStarmetal = EnumHelper.addToolMaterial("HBM_STARMETAL", 3, 3000, 20.0F, 2.5F, 100).setRepairItem(new ItemStack(ModItems.ingot_starmetal)); starmetal_sword = new ItemSwordAbility(25F, 0, matStarmetal) .addHitAbility(new WeaponAbility.BeheaderAbility()) .addHitAbility(new WeaponAbility.StunAbility(3)) @@ -5330,13 +5398,15 @@ public class ModItems { door_office = new ItemModDoor().setUnlocalizedName("door_office").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_office"); door_bunker = new ItemModDoor().setUnlocalizedName("door_bunker").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_bunker"); + sliding_blast_door_skin = new ItemSlidingBlastDoorSkin().setUnlocalizedName("sliding_blast_door_skin").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":sliding_blast_door_default"); + record_lc = new ItemModRecord("lc").setUnlocalizedName("record_lc").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_lc"); record_ss = new ItemModRecord("ss").setUnlocalizedName("record_ss").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_ss"); record_vc = new ItemModRecord("vc").setUnlocalizedName("record_vc").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_vc"); record_glass = new ItemModRecord("glass").setUnlocalizedName("record_glass").setCreativeTab(null).setTextureName(RefStrings.MODID + ":record_glass"); book_guide = new ItemGuideBook().setUnlocalizedName("book_guide").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":book_guide"); - book_lore = new ItemBookLore().setUnlocalizedName("book_lore").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape"); + book_lore = new ItemBookLore().setUnlocalizedName("book_lore").setCreativeTab(null).setTextureName(RefStrings.MODID + ":book_pages"); holotape_image = new ItemHolotapeImage().setUnlocalizedName("holotape_image").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape"); holotape_damaged = new Item().setUnlocalizedName("holotape_damaged").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape_damaged"); @@ -5345,6 +5415,7 @@ public class ModItems { letter = new ItemStarterKit().setUnlocalizedName("letter").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":letter"); book_secret = new ItemCustomLore().setUnlocalizedName("book_secret").setCreativeTab(MainRegistry.polaroidID == 11 ? MainRegistry.consumableTab : null).setTextureName(RefStrings.MODID + ":book_secret"); book_of_ = new ItemBook().setUnlocalizedName("book_of_").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":book_of_"); + page_of_ = new ItemEnumMulti(ItemEnums.EnumPages.class, true, false).setUnlocalizedName("page_of_").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":page_of_"); burnt_bark = new ItemCustomLore().setUnlocalizedName("burnt_bark").setCreativeTab(null).setTextureName(RefStrings.MODID + ":burnt_bark"); smoke1 = new Item().setUnlocalizedName("smoke1").setTextureName(RefStrings.MODID + ":smoke1"); @@ -5446,16 +5517,12 @@ public class ModItems { void_anim = new Item().setUnlocalizedName("void_anim").setTextureName(RefStrings.MODID + ":void_anim"); + achievement_icon = new ItemEnumMulti(ItemEnums.EnumAchievementType.class, true, true).setUnlocalizedName("achievement_icon"); bob_metalworks = new Item().setUnlocalizedName("bob_metalworks").setTextureName(RefStrings.MODID + ":bob_metalworks"); bob_assembly = new Item().setUnlocalizedName("bob_assembly").setTextureName(RefStrings.MODID + ":bob_assembly"); bob_chemistry = new Item().setUnlocalizedName("bob_chemistry").setTextureName(RefStrings.MODID + ":bob_chemistry"); bob_oil = new Item().setUnlocalizedName("bob_oil").setTextureName(RefStrings.MODID + ":bob_oil"); bob_nuclear = new Item().setUnlocalizedName("bob_nuclear").setTextureName(RefStrings.MODID + ":bob_nuclear"); - digamma_see = new Item().setUnlocalizedName("digamma_see").setTextureName(RefStrings.MODID + ":digamma_see"); - digamma_feel = new Item().setUnlocalizedName("digamma_feel").setTextureName(RefStrings.MODID + ":digamma_feel"); - digamma_know = new Item().setUnlocalizedName("digamma_know").setTextureName(RefStrings.MODID + ":digamma_know"); - digamma_kauai_moho = new Item().setUnlocalizedName("digamma_kauai_moho").setTextureName(RefStrings.MODID + ":digamma_kauai_moho"); - digamma_up_on_top = new Item().setUnlocalizedName("digamma_up_on_top").setTextureName(RefStrings.MODID + ":digamma_up_on_top"); mysteryshovel = new ItemMS().setUnlocalizedName("mysteryshovel").setFull3D().setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cursed_shovel"); memory = new ItemBattery(Long.MAX_VALUE / 100L, 100000000000000L, 100000000000000L).setUnlocalizedName("memory").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mo8_anim"); @@ -5543,11 +5610,13 @@ public class ModItems { GameRegistry.registerItem(ingot_dura_steel, ingot_dura_steel.getUnlocalizedName()); GameRegistry.registerItem(ingot_polymer, ingot_polymer.getUnlocalizedName()); GameRegistry.registerItem(ingot_bakelite, ingot_bakelite.getUnlocalizedName()); + GameRegistry.registerItem(ingot_biorubber, ingot_biorubber.getUnlocalizedName()); GameRegistry.registerItem(ingot_rubber, ingot_rubber.getUnlocalizedName()); //GameRegistry.registerItem(ingot_pet, ingot_pet.getUnlocalizedName()); GameRegistry.registerItem(ingot_pc, ingot_pc.getUnlocalizedName()); GameRegistry.registerItem(ingot_pvc, ingot_pvc.getUnlocalizedName()); GameRegistry.registerItem(ingot_mud, ingot_mud.getUnlocalizedName()); + GameRegistry.registerItem(ingot_cft, ingot_cft.getUnlocalizedName()); GameRegistry.registerItem(ingot_schraranium, ingot_schraranium.getUnlocalizedName()); GameRegistry.registerItem(ingot_schrabidium, ingot_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(ingot_schrabidate, ingot_schrabidate.getUnlocalizedName()); @@ -5671,6 +5740,8 @@ public class ModItems { GameRegistry.registerItem(briquette, briquette.getUnlocalizedName()); GameRegistry.registerItem(sulfur, sulfur.getUnlocalizedName()); GameRegistry.registerItem(niter, niter.getUnlocalizedName()); + GameRegistry.registerItem(nitra, nitra.getUnlocalizedName()); + GameRegistry.registerItem(nitra_small, nitra_small.getUnlocalizedName()); GameRegistry.registerItem(fluorite, fluorite.getUnlocalizedName()); GameRegistry.registerItem(powder_coal, powder_coal.getUnlocalizedName()); GameRegistry.registerItem(powder_coal_tiny, powder_coal_tiny.getUnlocalizedName()); @@ -5717,6 +5788,7 @@ public class ModItems { GameRegistry.registerItem(powder_paleogenite_tiny, powder_paleogenite_tiny.getUnlocalizedName()); GameRegistry.registerItem(powder_impure_osmiridium, powder_impure_osmiridium.getUnlocalizedName()); GameRegistry.registerItem(powder_borax, powder_borax.getUnlocalizedName()); + GameRegistry.registerItem(powder_chlorocalcite, powder_chlorocalcite.getUnlocalizedName()); GameRegistry.registerItem(powder_yellowcake, powder_yellowcake.getUnlocalizedName()); GameRegistry.registerItem(powder_beryllium, powder_beryllium.getUnlocalizedName()); GameRegistry.registerItem(powder_dura_steel, powder_dura_steel.getUnlocalizedName()); @@ -5730,6 +5802,7 @@ public class ModItems { GameRegistry.registerItem(powder_lithium, powder_lithium.getUnlocalizedName()); GameRegistry.registerItem(powder_lithium_tiny, powder_lithium_tiny.getUnlocalizedName()); GameRegistry.registerItem(powder_zirconium, powder_zirconium.getUnlocalizedName()); + GameRegistry.registerItem(powder_sodium, powder_sodium.getUnlocalizedName()); GameRegistry.registerItem(powder_lignite, powder_lignite.getUnlocalizedName()); GameRegistry.registerItem(powder_iodine, powder_iodine.getUnlocalizedName()); GameRegistry.registerItem(powder_thorium, powder_thorium.getUnlocalizedName()); @@ -5779,6 +5852,7 @@ public class ModItems { GameRegistry.registerItem(dust, dust.getUnlocalizedName()); GameRegistry.registerItem(dust_tiny, dust_tiny.getUnlocalizedName()); GameRegistry.registerItem(fallout, fallout.getUnlocalizedName()); + GameRegistry.registerItem(powder_ash, powder_ash.getUnlocalizedName()); //Powders GameRegistry.registerItem(powder_fire, powder_fire.getUnlocalizedName()); @@ -5791,6 +5865,7 @@ public class ModItems { GameRegistry.registerItem(ball_dynamite, ball_dynamite.getUnlocalizedName()); GameRegistry.registerItem(ball_tnt, ball_tnt.getUnlocalizedName()); GameRegistry.registerItem(ball_tatb, ball_tatb.getUnlocalizedName()); + GameRegistry.registerItem(ball_resin, ball_resin.getUnlocalizedName()); GameRegistry.registerItem(ball_fireclay, ball_fireclay.getUnlocalizedName()); //Ores @@ -5836,6 +5911,7 @@ public class ModItems { GameRegistry.registerItem(crystal_cinnebar, crystal_cinnebar.getUnlocalizedName()); GameRegistry.registerItem(crystal_trixite, crystal_trixite.getUnlocalizedName()); GameRegistry.registerItem(crystal_osmiridium, crystal_osmiridium.getUnlocalizedName()); + GameRegistry.registerItem(gem_sodalite, gem_sodalite.getUnlocalizedName()); GameRegistry.registerItem(gem_tantalium, gem_tantalium.getUnlocalizedName()); GameRegistry.registerItem(gem_volcanic, gem_volcanic.getUnlocalizedName()); GameRegistry.registerItem(gem_alexandrite, gem_alexandrite.getUnlocalizedName()); @@ -5946,6 +6022,8 @@ public class ModItems { //Heavy/Cast Plate GameRegistry.registerItem(plate_cast, plate_cast.getUnlocalizedName()); + GameRegistry.registerItem(plate_welded, plate_welded.getUnlocalizedName()); + GameRegistry.registerItem(heavy_component, heavy_component.getUnlocalizedName()); //Boards GameRegistry.registerItem(board_copper, board_copper.getUnlocalizedName()); @@ -5974,6 +6052,7 @@ public class ModItems { GameRegistry.registerItem(wire_gold, wire_gold.getUnlocalizedName()); GameRegistry.registerItem(wire_schrabidium, wire_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(wire_magnetized_tungsten, wire_magnetized_tungsten.getUnlocalizedName()); + GameRegistry.registerItem(wire_dense, wire_dense.getUnlocalizedName()); //Parts GameRegistry.registerItem(coil_copper, coil_copper.getUnlocalizedName()); @@ -5988,6 +6067,7 @@ public class ModItems { GameRegistry.registerItem(tank_steel, tank_steel.getUnlocalizedName()); GameRegistry.registerItem(motor, motor.getUnlocalizedName()); GameRegistry.registerItem(motor_desh, motor_desh.getUnlocalizedName()); + GameRegistry.registerItem(motor_bismuth, motor_bismuth.getUnlocalizedName()); GameRegistry.registerItem(centrifuge_element, centrifuge_element.getUnlocalizedName()); //GameRegistry.registerItem(centrifuge_tower, centrifuge_tower.getUnlocalizedName()); //GameRegistry.registerItem(magnet_dee, magnet_dee.getUnlocalizedName()); @@ -6133,13 +6213,6 @@ public class ModItems { GameRegistry.registerItem(mechanism_launcher_2, mechanism_launcher_2.getUnlocalizedName()); GameRegistry.registerItem(mechanism_special, mechanism_special.getUnlocalizedName()); - //Primers - GameRegistry.registerItem(primer_357, primer_357.getUnlocalizedName()); - GameRegistry.registerItem(primer_44, primer_44.getUnlocalizedName()); - GameRegistry.registerItem(primer_9, primer_9.getUnlocalizedName()); - GameRegistry.registerItem(primer_50, primer_50.getUnlocalizedName()); - GameRegistry.registerItem(primer_buckshot, primer_buckshot.getUnlocalizedName()); - //Casings GameRegistry.registerItem(casing_357, casing_357.getUnlocalizedName()); GameRegistry.registerItem(casing_44, casing_44.getUnlocalizedName()); @@ -6379,6 +6452,12 @@ public class ModItems { GameRegistry.registerItem(stamp_44, stamp_44.getUnlocalizedName()); GameRegistry.registerItem(stamp_9, stamp_9.getUnlocalizedName()); GameRegistry.registerItem(stamp_50, stamp_50.getUnlocalizedName()); + + GameRegistry.registerItem(stamp_desh_357, stamp_desh_357.getUnlocalizedName()); + GameRegistry.registerItem(stamp_desh_44, stamp_desh_44.getUnlocalizedName()); + GameRegistry.registerItem(stamp_desh_9, stamp_desh_9.getUnlocalizedName()); + GameRegistry.registerItem(stamp_desh_50, stamp_desh_50.getUnlocalizedName()); + GameRegistry.registerItem(stamp_book, stamp_book.getUnlocalizedName()); //Molds GameRegistry.registerItem(mold_base, mold_base.getUnlocalizedName()); @@ -6432,6 +6511,7 @@ public class ModItems { //Machine Items GameRegistry.registerItem(fuse, fuse.getUnlocalizedName()); GameRegistry.registerItem(redcoil_capacitor, redcoil_capacitor.getUnlocalizedName()); + GameRegistry.registerItem(euphemium_capacitor, euphemium_capacitor.getUnlocalizedName()); GameRegistry.registerItem(titanium_filter, titanium_filter.getUnlocalizedName()); GameRegistry.registerItem(screwdriver, screwdriver.getUnlocalizedName()); GameRegistry.registerItem(screwdriver_desh, screwdriver_desh.getUnlocalizedName()); @@ -6461,18 +6541,6 @@ public class ModItems { GameRegistry.registerItem(laser_crystal_dnt, laser_crystal_dnt.getUnlocalizedName()); GameRegistry.registerItem(laser_crystal_digamma, laser_crystal_digamma.getUnlocalizedName()); - //Recycled Units - GameRegistry.registerItem(recycled_ground, recycled_ground.getUnlocalizedName()); - GameRegistry.registerItem(recycled_rock, recycled_rock.getUnlocalizedName()); - GameRegistry.registerItem(recycled_metal, recycled_metal.getUnlocalizedName()); - GameRegistry.registerItem(recycled_refined, recycled_refined.getUnlocalizedName()); - GameRegistry.registerItem(recycled_organic, recycled_organic.getUnlocalizedName()); - GameRegistry.registerItem(recycled_crystal, recycled_crystal.getUnlocalizedName()); - GameRegistry.registerItem(recycled_explosive, recycled_explosive.getUnlocalizedName()); - GameRegistry.registerItem(recycled_electronic, recycled_electronic.getUnlocalizedName()); - GameRegistry.registerItem(recycled_nuclear, recycled_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(recycled_misc, recycled_misc.getUnlocalizedName()); - //Catalyst Rune Sigils GameRegistry.registerItem(rune_blank, rune_blank.getUnlocalizedName()); GameRegistry.registerItem(rune_isa, rune_isa.getUnlocalizedName()); @@ -6597,6 +6665,11 @@ public class ModItems { GameRegistry.registerItem(plate_fuel_ra226be, plate_fuel_ra226be.getUnlocalizedName()); GameRegistry.registerItem(plate_fuel_pu238be, plate_fuel_pu238be.getUnlocalizedName()); + //PWR Parts + GameRegistry.registerItem(pwr_fuel, pwr_fuel.getUnlocalizedName()); + GameRegistry.registerItem(pwr_fuel_hot, pwr_fuel_hot.getUnlocalizedName()); + GameRegistry.registerItem(pwr_fuel_depleted, pwr_fuel_depleted.getUnlocalizedName()); + //RBMK parts GameRegistry.registerItem(rbmk_lid, rbmk_lid.getUnlocalizedName()); GameRegistry.registerItem(rbmk_lid_glass, rbmk_lid_glass.getUnlocalizedName()); @@ -6716,12 +6789,18 @@ public class ModItems { GameRegistry.registerItem(survey_scanner, survey_scanner.getUnlocalizedName()); GameRegistry.registerItem(mirror_tool, mirror_tool.getUnlocalizedName()); GameRegistry.registerItem(rbmk_tool, rbmk_tool.getUnlocalizedName()); + GameRegistry.registerItem(drone_linker, drone_linker.getUnlocalizedName()); + GameRegistry.registerItem(radar_linker, radar_linker.getUnlocalizedName()); GameRegistry.registerItem(coltan_tool, coltan_tool.getUnlocalizedName()); GameRegistry.registerItem(power_net_tool, power_net_tool.getUnlocalizedName()); + GameRegistry.registerItem(analysis_tool, analysis_tool.getUnlocalizedName()); + GameRegistry.registerItem(coupling_tool, coupling_tool.getUnlocalizedName()); GameRegistry.registerItem(dosimeter, dosimeter.getUnlocalizedName()); GameRegistry.registerItem(geiger_counter, geiger_counter.getUnlocalizedName()); GameRegistry.registerItem(digamma_diagnostic, digamma_diagnostic.getUnlocalizedName()); + GameRegistry.registerItem(pollution_detector, pollution_detector.getUnlocalizedName()); GameRegistry.registerItem(containment_box, containment_box.getUnlocalizedName()); + GameRegistry.registerItem(plastic_bag, plastic_bag.getUnlocalizedName()); //Keys and Locks GameRegistry.registerItem(key, key.getUnlocalizedName()); @@ -6738,6 +6817,7 @@ public class ModItems { //Missiles GameRegistry.registerItem(missile_generic, missile_generic.getUnlocalizedName()); GameRegistry.registerItem(missile_anti_ballistic, missile_anti_ballistic.getUnlocalizedName()); + GameRegistry.registerItem(missile_decoy, missile_decoy.getUnlocalizedName()); GameRegistry.registerItem(missile_incendiary, missile_incendiary.getUnlocalizedName()); GameRegistry.registerItem(missile_cluster, missile_cluster.getUnlocalizedName()); GameRegistry.registerItem(missile_buster, missile_buster.getUnlocalizedName()); @@ -6935,6 +7015,7 @@ public class ModItems { GameRegistry.registerItem(gun_revolver_red, gun_revolver_red.getUnlocalizedName()); GameRegistry.registerItem(gun_bio_revolver, gun_bio_revolver.getUnlocalizedName()); GameRegistry.registerItem(gun_deagle, gun_deagle.getUnlocalizedName()); + GameRegistry.registerItem(gun_uac_pistol, gun_uac_pistol.getUnlocalizedName()); GameRegistry.registerItem(gun_flechette, gun_flechette.getUnlocalizedName()); GameRegistry.registerItem(gun_ar15, gun_ar15.getUnlocalizedName()); GameRegistry.registerItem(gun_calamity, gun_calamity.getUnlocalizedName()); @@ -6950,6 +7031,7 @@ public class ModItems { GameRegistry.registerItem(gun_panzerschreck, gun_panzerschreck.getUnlocalizedName()); GameRegistry.registerItem(gun_quadro, gun_quadro.getUnlocalizedName()); GameRegistry.registerItem(gun_hk69, gun_hk69.getUnlocalizedName()); + GameRegistry.registerItem(gun_congolake, gun_congolake.getUnlocalizedName()); GameRegistry.registerItem(gun_stinger, gun_stinger.getUnlocalizedName()); GameRegistry.registerItem(gun_fatman, gun_fatman.getUnlocalizedName()); GameRegistry.registerItem(gun_proto, gun_proto.getUnlocalizedName()); @@ -6965,6 +7047,7 @@ public class ModItems { GameRegistry.registerItem(gun_uboinik, gun_uboinik.getUnlocalizedName()); GameRegistry.registerItem(gun_remington, gun_remington.getUnlocalizedName()); GameRegistry.registerItem(gun_spas12, gun_spas12.getUnlocalizedName()); + GameRegistry.registerItem(gun_benelli, gun_benelli.getUnlocalizedName()); GameRegistry.registerItem(gun_supershotgun, gun_supershotgun.getUnlocalizedName()); GameRegistry.registerItem(gun_ks23, gun_ks23.getUnlocalizedName()); GameRegistry.registerItem(gun_sauer, gun_sauer.getUnlocalizedName()); @@ -6975,11 +7058,13 @@ public class ModItems { GameRegistry.registerItem(gun_bolt_action_green, gun_bolt_action_green.getUnlocalizedName()); GameRegistry.registerItem(gun_bolt_action_saturnite, gun_bolt_action_saturnite.getUnlocalizedName()); GameRegistry.registerItem(gun_mymy, gun_mymy.getUnlocalizedName()); + GameRegistry.registerItem(gun_coilgun, gun_coilgun.getUnlocalizedName()); GameRegistry.registerItem(gun_xvl1456, gun_xvl1456.getUnlocalizedName()); GameRegistry.registerItem(gun_osipr, gun_osipr.getUnlocalizedName()); GameRegistry.registerItem(gun_immolator, gun_immolator.getUnlocalizedName()); GameRegistry.registerItem(gun_flamer, gun_flamer.getUnlocalizedName()); GameRegistry.registerItem(gun_cryolator, gun_cryolator.getUnlocalizedName()); + GameRegistry.registerItem(gun_cryocannon, gun_cryocannon.getUnlocalizedName()); GameRegistry.registerItem(gun_fireext, gun_fireext.getUnlocalizedName()); GameRegistry.registerItem(gun_mp, gun_mp.getUnlocalizedName()); GameRegistry.registerItem(gun_bolter, gun_bolter.getUnlocalizedName()); @@ -7024,7 +7109,6 @@ public class ModItems { //GameRegistry.registerItem(gun_stinger_ammo, gun_stinger_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_fatman_ammo, gun_fatman_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_mirv_ammo, gun_mirv_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_bf_ammo, gun_bf_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_mp40_ammo, gun_mp40_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_uzi_ammo, gun_uzi_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_uboinik_ammo, gun_uboinik_ammo.getUnlocalizedName()); @@ -7064,6 +7148,7 @@ public class ModItems { GameRegistry.registerItem(ammo_rocket, ammo_rocket.getUnlocalizedName()); GameRegistry.registerItem(ammo_stinger_rocket, ammo_stinger_rocket.getUnlocalizedName()); GameRegistry.registerItem(ammo_luna_sniper, ammo_luna_sniper.getUnlocalizedName()); + GameRegistry.registerItem(ammo_coilgun, ammo_coilgun.getUnlocalizedName()); GameRegistry.registerItem(ammo_grenade, ammo_grenade.getUnlocalizedName()); GameRegistry.registerItem(ammo_shell, ammo_shell.getUnlocalizedName()); @@ -7258,6 +7343,7 @@ public class ModItems { //Grenades GameRegistry.registerItem(stick_dynamite, stick_dynamite.getUnlocalizedName()); //heave-ho! + GameRegistry.registerItem(stick_dynamite_fishing, stick_dynamite_fishing.getUnlocalizedName()); GameRegistry.registerItem(stick_tnt, stick_tnt.getUnlocalizedName()); GameRegistry.registerItem(stick_semtex, stick_semtex.getUnlocalizedName()); GameRegistry.registerItem(stick_c4, stick_c4.getUnlocalizedName()); @@ -7490,6 +7576,9 @@ public class ModItems { GameRegistry.registerItem(marshmallow, marshmallow.getUnlocalizedName()); GameRegistry.registerItem(cheese, cheese.getUnlocalizedName()); GameRegistry.registerItem(quesadilla, quesadilla.getUnlocalizedName()); + GameRegistry.registerItem(glyphid_meat, glyphid_meat.getUnlocalizedName()); + GameRegistry.registerItem(glyphid_meat_grilled, glyphid_meat_grilled.getUnlocalizedName()); + GameRegistry.registerItem(egg_glyphid, egg_glyphid.getUnlocalizedName()); GameRegistry.registerItem(med_ipecac, med_ipecac.getUnlocalizedName()); GameRegistry.registerItem(med_ptsd, med_ptsd.getUnlocalizedName()); GameRegistry.registerItem(canteen_13, canteen_13.getUnlocalizedName()); @@ -7586,12 +7675,14 @@ public class ModItems { GameRegistry.registerItem(gas_tester, gas_tester.getUnlocalizedName()); GameRegistry.registerItem(defuser_gold, defuser_gold.getUnlocalizedName()); GameRegistry.registerItem(ballistic_gauntlet, ballistic_gauntlet.getUnlocalizedName()); - + GameRegistry.registerItem(night_vision, night_vision.getUnlocalizedName()); + //Chaos GameRegistry.registerItem(chocolate_milk, chocolate_milk.getUnlocalizedName()); GameRegistry.registerItem(cbt_device, cbt_device.getUnlocalizedName()); GameRegistry.registerItem(cigarette, cigarette.getUnlocalizedName()); GameRegistry.registerItem(crackpipe, crackpipe.getUnlocalizedName()); + GameRegistry.registerItem(bdcl, bdcl.getUnlocalizedName()); //Armor mods GameRegistry.registerItem(attachment_mask, attachment_mask.getUnlocalizedName()); @@ -7645,8 +7736,11 @@ public class ModItems { GameRegistry.registerItem(injector_5htp, injector_5htp.getUnlocalizedName()); GameRegistry.registerItem(injector_knife, injector_knife.getUnlocalizedName()); - //Minecarts + //Vehicles + GameRegistry.registerItem(boat_rubber, boat_rubber.getUnlocalizedName()); GameRegistry.registerItem(cart, cart.getUnlocalizedName()); + GameRegistry.registerItem(train, train.getUnlocalizedName()); + GameRegistry.registerItem(drone, drone.getUnlocalizedName()); //High Explosive Lenses GameRegistry.registerItem(early_explosive_lenses, early_explosive_lenses.getUnlocalizedName()); @@ -7760,6 +7854,10 @@ public class ModItems { GameRegistry.registerItem(bj_plate_jetpack, bj_plate_jetpack.getUnlocalizedName()); GameRegistry.registerItem(bj_legs, bj_legs.getUnlocalizedName()); GameRegistry.registerItem(bj_boots, bj_boots.getUnlocalizedName()); + GameRegistry.registerItem(envsuit_helmet, envsuit_helmet.getUnlocalizedName()); + GameRegistry.registerItem(envsuit_plate, envsuit_plate.getUnlocalizedName()); + GameRegistry.registerItem(envsuit_legs, envsuit_legs.getUnlocalizedName()); + GameRegistry.registerItem(envsuit_boots, envsuit_boots.getUnlocalizedName()); GameRegistry.registerItem(hev_helmet, hev_helmet.getUnlocalizedName()); GameRegistry.registerItem(hev_plate, hev_plate.getUnlocalizedName()); GameRegistry.registerItem(hev_legs, hev_legs.getUnlocalizedName()); @@ -7772,6 +7870,10 @@ public class ModItems { GameRegistry.registerItem(dns_plate, dns_plate.getUnlocalizedName()); GameRegistry.registerItem(dns_legs, dns_legs.getUnlocalizedName()); GameRegistry.registerItem(dns_boots, dns_boots.getUnlocalizedName()); + GameRegistry.registerItem(trenchmaster_helmet, trenchmaster_helmet.getUnlocalizedName()); + GameRegistry.registerItem(trenchmaster_plate, trenchmaster_plate.getUnlocalizedName()); + GameRegistry.registerItem(trenchmaster_legs, trenchmaster_legs.getUnlocalizedName()); + GameRegistry.registerItem(trenchmaster_boots, trenchmaster_boots.getUnlocalizedName()); //Nobody will ever read this anyway, so it shouldn't matter. GameRegistry.registerItem(chainsaw, chainsaw.getUnlocalizedName()); @@ -7882,6 +7984,7 @@ public class ModItems { GameRegistry.registerItem(structure_pattern, structure_pattern.getUnlocalizedName()); GameRegistry.registerItem(structure_randomized, structure_randomized.getUnlocalizedName()); GameRegistry.registerItem(structure_randomly, structure_randomly.getUnlocalizedName()); + GameRegistry.registerItem(structure_custommachine, structure_custommachine.getUnlocalizedName()); GameRegistry.registerItem(rod_of_discord, rod_of_discord.getUnlocalizedName()); //GameRegistry.registerItem(analyzer, analyzer.getUnlocalizedName()); //GameRegistry.registerItem(remote, remote.getUnlocalizedName()); @@ -7890,6 +7993,7 @@ public class ModItems { GameRegistry.registerItem(glitch, glitch.getUnlocalizedName()); GameRegistry.registerItem(book_secret, book_secret.getUnlocalizedName()); GameRegistry.registerItem(book_of_, book_of_.getUnlocalizedName()); + GameRegistry.registerItem(page_of_, page_of_.getUnlocalizedName()); GameRegistry.registerItem(burnt_bark, burnt_bark.getUnlocalizedName()); //Kits @@ -7935,7 +8039,8 @@ public class ModItems { GameRegistry.registerItem(door_metal, door_metal.getUnlocalizedName()); GameRegistry.registerItem(door_office, door_office.getUnlocalizedName()); GameRegistry.registerItem(door_bunker, door_bunker.getUnlocalizedName()); - + GameRegistry.registerItem(sliding_blast_door_skin, sliding_blast_door_skin.getUnlocalizedName()); + //Records GameRegistry.registerItem(record_lc, record_lc.getUnlocalizedName()); GameRegistry.registerItem(record_ss, record_ss.getUnlocalizedName()); @@ -8046,48 +8151,15 @@ public class ModItems { GameRegistry.registerItem(ln2_10, ln2_10.getUnlocalizedName()); GameRegistry.registerItem(nothing, nothing.getUnlocalizedName()); GameRegistry.registerItem(void_anim, void_anim.getUnlocalizedName()); + GameRegistry.registerItem(achievement_icon, achievement_icon.getUnlocalizedName()); GameRegistry.registerItem(bob_metalworks, bob_metalworks.getUnlocalizedName()); GameRegistry.registerItem(bob_assembly, bob_assembly.getUnlocalizedName()); GameRegistry.registerItem(bob_chemistry, bob_chemistry.getUnlocalizedName()); GameRegistry.registerItem(bob_oil, bob_oil.getUnlocalizedName()); GameRegistry.registerItem(bob_nuclear, bob_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(digamma_see, digamma_see.getUnlocalizedName()); - GameRegistry.registerItem(digamma_feel, digamma_feel.getUnlocalizedName()); - GameRegistry.registerItem(digamma_know, digamma_know.getUnlocalizedName()); - GameRegistry.registerItem(digamma_kauai_moho, digamma_kauai_moho.getUnlocalizedName()); - GameRegistry.registerItem(digamma_up_on_top, digamma_up_on_top.getUnlocalizedName()); GameRegistry.registerItem(mysteryshovel, mysteryshovel.getUnlocalizedName()); GameRegistry.registerItem(memory, memory.getUnlocalizedName()); - //CONSERVE REMAP - addRemap("canned_beef", canned_conserve, EnumFoodType.BEEF); - addRemap("canned_tuna", canned_conserve, EnumFoodType.TUNA); - addRemap("canned_mystery", canned_conserve, EnumFoodType.MYSTERY); - addRemap("canned_pashtet", canned_conserve, EnumFoodType.PASHTET); - addRemap("canned_cheese", canned_conserve, EnumFoodType.CHEESE); - addRemap("canned_jizz", canned_conserve, EnumFoodType.JIZZ); - addRemap("canned_milk", canned_conserve, EnumFoodType.MILK); - addRemap("canned_ass", canned_conserve, EnumFoodType.ASS); - addRemap("canned_pizza", canned_conserve, EnumFoodType.PIZZA); - addRemap("canned_tube", canned_conserve, EnumFoodType.TUBE); - addRemap("canned_tomato", canned_conserve, EnumFoodType.TOMATO); - addRemap("canned_asbestos", canned_conserve, EnumFoodType.ASBESTOS); - addRemap("canned_bhole", canned_conserve, EnumFoodType.BHOLE); - addRemap("canned_hotdogs", canned_conserve, EnumFoodType.HOTDOGS); - addRemap("canned_leftovers", canned_conserve, EnumFoodType.LEFTOVERS); - addRemap("canned_yogurt", canned_conserve, EnumFoodType.YOGURT); - addRemap("canned_stew", canned_conserve, EnumFoodType.STEW); - addRemap("canned_chinese", canned_conserve, EnumFoodType.CHINESE); - addRemap("canned_oil", canned_conserve, EnumFoodType.OIL); - addRemap("canned_fist", canned_conserve, EnumFoodType.FIST); - addRemap("canned_spam", canned_conserve, EnumFoodType.SPAM); - addRemap("canned_fried", canned_conserve, EnumFoodType.FRIED); - addRemap("canned_napalm", canned_conserve, EnumFoodType.NAPALM); - addRemap("canned_diesel", canned_conserve, EnumFoodType.DIESEL); - addRemap("canned_kerosene", canned_conserve, EnumFoodType.KEROSENE); - addRemap("canned_recursion", canned_conserve, EnumFoodType.RECURSION); - addRemap("canned_bark", canned_conserve, EnumFoodType.BARK); - addRemap("rod_zirnox_natural_uranium_fuel", rod_zirnox, EnumZirnoxType.NATURAL_URANIUM_FUEL); addRemap("rod_zirnox_uranium_fuel", rod_zirnox, EnumZirnoxType.URANIUM_FUEL); addRemap("rod_zirnox_th232", rod_zirnox, EnumZirnoxType.TH232); @@ -8103,10 +8175,8 @@ public class ModItems { addRemap("gas_petroleum", gas_full, Fluids.PETROLEUM.getID()); addRemap("gas_biogas", gas_full, Fluids.BIOGAS.getID()); addRemap("gas_lpg", gas_full, Fluids.LPG.getID()); - } - - public static void addRemap(String unloc, int removoingTheseWouldTakeForever, Item item, Enum sub) { - addRemap(unloc, item, sub.ordinal()); + + addRemap("gun_coilgun_ammo", ammo_coilgun, AmmoCoilgun.STOCK); } public static void addRemap(String unloc, Item item, Enum sub) { diff --git a/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java b/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java index 93f8d34a3..5882236e7 100644 --- a/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java +++ b/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java @@ -89,13 +89,13 @@ public class ArmorBJJetpack extends ArmorBJ { } } } - } - - @SideOnly(Side.CLIENT) - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - super.addInformation(stack, player, list, ext); + } - list.add(EnumChatFormatting.RED + " + " + I18nUtil.resolveKey("armor.electricJetpack")); - list.add(EnumChatFormatting.GRAY + " + " + I18nUtil.resolveKey("armor.glider")); - } + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + super.addInformation(stack, player, list, ext); + + list.add(EnumChatFormatting.RED + " + " + I18nUtil.resolveKey("armor.electricJetpack")); + list.add(EnumChatFormatting.GRAY + " + " + I18nUtil.resolveKey("armor.glider")); + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java b/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java new file mode 100644 index 000000000..e7ee41f79 --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java @@ -0,0 +1,87 @@ +package com.hbm.items.armor; + +import java.util.UUID; + +import com.google.common.collect.Multimap; +import com.hbm.items.ModItems; +import com.hbm.render.model.ModelArmorEnvsuit; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class ArmorEnvsuit extends ArmorFSBPowered { + + public ArmorEnvsuit(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { + super(material, slot, texture, maxPower, chargeRate, consumption, drain); + } + + @SideOnly(Side.CLIENT) + ModelArmorEnvsuit[] models; + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { + + if(models == null) { + models = new ModelArmorEnvsuit[4]; + + for(int i = 0; i < 4; i++) + models[i] = new ModelArmorEnvsuit(i); + } + + return models[armorSlot]; + } + + private static final UUID speed = UUID.fromString("6ab858ba-d712-485c-bae9-e5e765fc555a"); + + @Override + public void onArmorTick(World world, EntityPlayer player, ItemStack stack) { + + super.onArmorTick(world, player, stack); + + if(this != ModItems.envsuit_plate) + return; + + /// SPEED /// + Multimap multimap = super.getAttributeModifiers(stack); + multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(speed, "SQUIRREL SPEED", 0.1, 0)); + player.getAttributeMap().removeAttributeModifiers(multimap); + + if(this.hasFSBArmor(player)) { + + if(player.isSprinting()) player.getAttributeMap().applyAttributeModifiers(multimap); + + if(player.isInWater()) { + + if(!world.isRemote) { + player.setAir(300); + player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0)); + } + + double mo = 0.1 * player.moveForward; + Vec3 vec = player.getLookVec(); + vec.xCoord *= mo; + vec.yCoord *= mo; + vec.zCoord *= mo; + + player.motionX += vec.xCoord; + player.motionY += vec.yCoord; + player.motionZ += vec.zCoord; + } else { + if(!world.isRemote) { + player.removePotionEffect(Potion.nightVision.id); + } + } + } + } +} diff --git a/src/main/java/com/hbm/items/armor/ArmorFSB.java b/src/main/java/com/hbm/items/armor/ArmorFSB.java index 4e2e60571..d6eb33079 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSB.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSB.java @@ -65,6 +65,7 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { public boolean hardLanding = false; public double gravity = 0; public int dashCount = 0; + public int stepSize = 0; public String step; public String jump; public String fall; @@ -158,6 +159,11 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { this.dashCount = dashCount; return this; } + + public ArmorFSB setStepSize(int stepSize) { + this.stepSize = stepSize; + return this; + } public ArmorFSB setStep(String step) { this.step = step; @@ -199,6 +205,7 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { this.hardLanding = original.hardLanding; this.gravity = original.gravity; this.dashCount = original.dashCount; + this.stepSize = original.stepSize; this.step = original.step; this.jump = original.jump; this.fall = original.fall; @@ -282,6 +289,10 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.gravity", gravity)); } + if(stepSize != 0) { + list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.stepSize", stepSize)); + } + if(dashCount > 0) { list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.dash", dashCount)); } diff --git a/src/main/java/com/hbm/items/armor/ArmorFSBFueled.java b/src/main/java/com/hbm/items/armor/ArmorFSBFueled.java index 4988f6234..deb44ba51 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSBFueled.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSBFueled.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.inventory.fluid.FluidType; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import api.hbm.fluid.IFillableItem; import cpw.mods.fml.relauncher.Side; @@ -83,7 +82,7 @@ public class ArmorFSBFueled extends ArmorFSB implements IFillableItem { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add(I18nUtil.resolveKey(this.fuelType.getUnlocalizedName()) + ": " + BobMathUtil.getShortNumber(getFill(stack)) + " / " + BobMathUtil.getShortNumber(getMaxFill(stack))); + list.add(this.fuelType.getLocalizedName() + ": " + BobMathUtil.getShortNumber(getFill(stack)) + " / " + BobMathUtil.getShortNumber(getMaxFill(stack))); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java new file mode 100644 index 000000000..0036d36e6 --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java @@ -0,0 +1,86 @@ +package com.hbm.items.armor; + +import java.util.List; + +import com.hbm.extprop.HbmPlayerProps; +import com.hbm.render.model.ModelArmorTrenchmaster; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.event.entity.living.LivingAttackEvent; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class ArmorTrenchmaster extends ArmorFSB { + + public ArmorTrenchmaster(ArmorMaterial material, int slot, String texture) { + super(material, slot, texture); + this.setMaxDamage(0); + } + + @SideOnly(Side.CLIENT) + ModelArmorTrenchmaster[] models; + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { + + if(models == null) { + models = new ModelArmorTrenchmaster[4]; + + for(int i = 0; i < 4; i++) + models[i] = new ModelArmorTrenchmaster(i); + } + + return models[armorSlot]; + } + + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + super.addInformation(stack, player, list, ext); + + list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.fasterReload")); + list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.moreAmmo")); + } + + @Override + public void handleHurt(LivingHurtEvent event) { + + EntityLivingBase e = event.entityLiving; + + if(e instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) e; + + if(ArmorFSB.hasFSBArmor(player)) { + + if(event.source.isExplosion() && event.source.getSourceOfDamage() == player) { + event.ammount = 0; + return; + } + } + } + } + + @Override + public void handleAttack(LivingAttackEvent event) { + + EntityLivingBase e = event.entityLiving; + + if(e instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) e; + + if(ArmorFSB.hasFSBArmor(player)) { + + if(e.getRNG().nextInt(3) == 0) { + HbmPlayerProps.plink(player, "random.break", 0.5F, 1.0F + e.getRNG().nextFloat() * 0.5F); + event.setCanceled(true); + } + } + } + } +} diff --git a/src/main/java/com/hbm/items/armor/ItemModLens.java b/src/main/java/com/hbm/items/armor/ItemModLens.java index f7d3675fc..a9df9cfff 100644 --- a/src/main/java/com/hbm/items/armor/ItemModLens.java +++ b/src/main/java/com/hbm/items/armor/ItemModLens.java @@ -84,7 +84,6 @@ public class ItemModLens extends ItemArmorMod implements ISatChip { if(addIf(ModBlocks.ore_oil, b, 300, aX, seg, aZ, "Oil", 0xa0a0a0, player)) hits++; if(addIf(ModBlocks.ore_bedrock_oil, b, 300, aX, seg, aZ, "Bedrock Oil", 0xa0a0a0, player)) hits++; if(addIf(ModBlocks.ore_coltan, b, 5, aX, seg, aZ, "Coltan", 0xa0a000, player)) hits++; - if(addIf(ModBlocks.ore_bedrock_coltan, b, 1, aX, seg, aZ, "Bedrock Coltan", 0xa0a000, player)) hits++; if(addIf(ModBlocks.stone_gneiss, b, 5000, aX, seg, aZ, "Schist", 0x8080ff, player)) hits++; if(addIf(ModBlocks.ore_australium, b, 1000, aX, seg, aZ, "Australium", 0xffff00, player)) hits++; if(addIf(Blocks.end_portal_frame, b, 1, aX, seg, aZ, "End Portal", 0x40b080, player)) hits++; diff --git a/src/main/java/com/hbm/items/armor/ItemModNightVision.java b/src/main/java/com/hbm/items/armor/ItemModNightVision.java new file mode 100644 index 000000000..6df89d2a6 --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ItemModNightVision.java @@ -0,0 +1,41 @@ +package com.hbm.items.armor; + +import com.hbm.handler.ArmorModHandler; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.EnumChatFormatting; + +import java.util.List; + +public class ItemModNightVision extends ItemArmorMod { + public ItemModNightVision() { + super(ArmorModHandler.helmet_only, true, false, false, false); + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + list.add(EnumChatFormatting.AQUA + I18n.format("item.night_vision.description.item")); + list.add(""); + super.addInformation(itemstack, player, list, bool); + } + + @Override + public void addDesc(List list, ItemStack stack, ItemStack armor) { + list.add(EnumChatFormatting.YELLOW + I18n.format("item.night_vision.description.in_armor", stack.getDisplayName())); + } + + @Override + public void modUpdate(EntityLivingBase entity, ItemStack armor) { + if(!entity.worldObj.isRemote && entity instanceof EntityPlayer && armor.getItem() instanceof ArmorFSBPowered && ArmorFSBPowered.hasFSBArmor((EntityPlayer)entity)) { + entity.addPotionEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0)); + + if(entity.getRNG().nextInt(50) == 0) { + armor.damageItem(1, entity); + } + } + } +} diff --git a/src/main/java/com/hbm/items/armor/JetpackBase.java b/src/main/java/com/hbm/items/armor/JetpackBase.java index c036d3ad6..e5701e3d8 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBase.java +++ b/src/main/java/com/hbm/items/armor/JetpackBase.java @@ -6,7 +6,6 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.inventory.fluid.FluidType; import com.hbm.render.model.ModelJetPack; import com.hbm.util.ArmorUtil; -import com.hbm.util.I18nUtil; import api.hbm.fluid.IFillableItem; import cpw.mods.fml.relauncher.Side; @@ -38,7 +37,7 @@ public abstract class JetpackBase extends ItemArmorMod implements IFillableItem @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKey(fuel.getUnlocalizedName()) + ": " + this.getFuel(itemstack) + "mB / " + this.maxFuel + "mB"); + list.add(EnumChatFormatting.LIGHT_PURPLE + fuel.getLocalizedName() + ": " + this.getFuel(itemstack) + "mB / " + this.maxFuel + "mB"); list.add(""); super.addInformation(itemstack, player, list, bool); list.add(EnumChatFormatting.GOLD + "Can be worn on its own!"); @@ -52,7 +51,7 @@ public abstract class JetpackBase extends ItemArmorMod implements IFillableItem if(jetpack == null) return; - list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (" + I18nUtil.resolveKey(fuel.getUnlocalizedName()) + ": " + this.getFuel(jetpack) + "mB / " + this.maxFuel + "mB"); + list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (" + fuel.getLocalizedName() + ": " + this.getFuel(jetpack) + "mB / " + this.maxFuel + "mB"); } @Override diff --git a/src/main/java/com/hbm/items/block/ItemBlockRemap.java b/src/main/java/com/hbm/items/block/ItemBlockRemap.java new file mode 100644 index 000000000..bda77f379 --- /dev/null +++ b/src/main/java/com/hbm/items/block/ItemBlockRemap.java @@ -0,0 +1,34 @@ +package com.hbm.items.block; + +import java.util.List; + +import com.hbm.blocks.BlockRemap; + +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +public class ItemBlockRemap extends ItemBlockBase { + + public ItemBlockRemap(Block block) { + super(block); + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean held) { + + if(!(entity instanceof EntityPlayer) || !(this.field_150939_a instanceof BlockRemap)) return; + + EntityPlayer player = (EntityPlayer) entity; + BlockRemap remap = (BlockRemap) this.field_150939_a; + player.inventory.setInventorySlotContents(slot, new ItemStack(remap.remapBlock, stack.stackSize, remap.remapMeta)); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.RED + "Compatibility item, hold in inventory to convert!"); + } +} diff --git a/src/main/java/com/hbm/items/block/ItemCustomMachine.java b/src/main/java/com/hbm/items/block/ItemCustomMachine.java new file mode 100644 index 000000000..30723223d --- /dev/null +++ b/src/main/java/com/hbm/items/block/ItemCustomMachine.java @@ -0,0 +1,48 @@ +package com.hbm.items.block; + +import java.util.List; + +import com.hbm.config.CustomMachineConfigJSON; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; + +public class ItemCustomMachine extends ItemBlock { + + public ItemCustomMachine(Block block) { + super(block); + this.setMaxDamage(0); + this.setHasSubtypes(true); + } + + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + + for(int i = 0; i < CustomMachineConfigJSON.niceList.size(); i++) { + ItemStack stack = new ItemStack(item, 1, i + 100); + list.add(stack); + } + } + + @Override + public String getItemStackDisplayName(ItemStack stack) { + + int id = stack.getItemDamage() - 100; + + if(id >= 0 && id < CustomMachineConfigJSON.customMachines.size()) { + MachineConfiguration conf = CustomMachineConfigJSON.niceList.get(id); + + if(conf != null) { + return conf.localizedName; + } + } + + return "INVALID MACHINE CONTROLLER"; + } +} diff --git a/src/main/java/com/hbm/items/food/ItemBDCL.java b/src/main/java/com/hbm/items/food/ItemBDCL.java new file mode 100644 index 000000000..1ec41d032 --- /dev/null +++ b/src/main/java/com/hbm/items/food/ItemBDCL.java @@ -0,0 +1,34 @@ +package com.hbm.items.food; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class ItemBDCL extends Item { + + @Override + public int getMaxItemUseDuration(ItemStack p_77626_1_) { + return 32; + } + + @Override + public EnumAction getItemUseAction(ItemStack p_77661_1_) { + return EnumAction.drink; + } + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); + return stack; + } + + @Override + public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player) { + + if(!player.capabilities.isCreativeMode) { + --stack.stackSize; + } + return stack; + } +} diff --git a/src/main/java/com/hbm/items/food/ItemConserve.java b/src/main/java/com/hbm/items/food/ItemConserve.java index a8a7a5af1..11b2c9bb7 100644 --- a/src/main/java/com/hbm/items/food/ItemConserve.java +++ b/src/main/java/com/hbm/items/food/ItemConserve.java @@ -1,6 +1,7 @@ package com.hbm.items.food; import java.util.List; +import java.util.Locale; import com.hbm.entity.effect.EntityVortex; import com.hbm.items.ItemEnumMulti; @@ -93,14 +94,14 @@ public class ItemConserve extends ItemEnumMulti { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase(Locale.US)); } } @Override public String getUnlocalizedName(ItemStack stack) { Enum num = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); - return "item.canned_" + num.name().toLowerCase(); + return "item.canned_" + num.name().toLowerCase(Locale.US); } public static enum EnumFoodType { diff --git a/src/main/java/com/hbm/items/food/ItemCrayon.java b/src/main/java/com/hbm/items/food/ItemCrayon.java index c03282985..f9f7d0760 100644 --- a/src/main/java/com/hbm/items/food/ItemCrayon.java +++ b/src/main/java/com/hbm/items/food/ItemCrayon.java @@ -1,6 +1,7 @@ package com.hbm.items.food; import java.util.List; +import java.util.Locale; import com.hbm.items.machine.ItemChemicalDye.EnumChemDye; import com.hbm.lib.RefStrings; @@ -44,7 +45,7 @@ public class ItemCrayon extends ItemFood { @Override public String getUnlocalizedName(ItemStack stack) { Enum num = EnumUtil.grabEnumSafely(EnumChemDye.class, stack.getItemDamage()); - return super.getUnlocalizedName() + "." + num.name().toLowerCase(); + return super.getUnlocalizedName() + "." + num.name().toLowerCase(Locale.US); } @Override diff --git a/src/main/java/com/hbm/items/food/ItemFlask.java b/src/main/java/com/hbm/items/food/ItemFlask.java index c2d727da0..9ecdb4fc2 100644 --- a/src/main/java/com/hbm/items/food/ItemFlask.java +++ b/src/main/java/com/hbm/items/food/ItemFlask.java @@ -1,5 +1,7 @@ package com.hbm.items.food; +import java.util.Locale; + import com.hbm.extprop.HbmPlayerProps; import com.hbm.items.ItemEnumMulti; @@ -30,7 +32,7 @@ public class ItemFlask extends ItemEnumMulti { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase(Locale.US)); } } @@ -47,8 +49,8 @@ public class ItemFlask extends ItemEnumMulti { if(stack.getItemDamage() == EnumInfusion.SHIELD.ordinal()) { float infusion = 5F; HbmPlayerProps props = HbmPlayerProps.getData(player); - props.maxShield = Math.min(props.shieldCap, props.shield + infusion); - props.shield += infusion; + props.maxShield = Math.min(props.shieldCap, props.maxShield + infusion); + props.shield = Math.min(props.shield + infusion, props.maxShield); } return stack; diff --git a/src/main/java/com/hbm/items/machine/ItemCanister.java b/src/main/java/com/hbm/items/machine/ItemCanister.java index b1393db87..fb792f532 100644 --- a/src/main/java/com/hbm/items/machine/ItemCanister.java +++ b/src/main/java/com/hbm/items/machine/ItemCanister.java @@ -40,7 +40,7 @@ public class ItemCanister extends Item { public String getItemStackDisplayName(ItemStack stack) { String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); + String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getConditionalName())).trim(); if(s1 != null) { s = s + " " + s1; diff --git a/src/main/java/com/hbm/items/machine/ItemCapacitor.java b/src/main/java/com/hbm/items/machine/ItemCapacitor.java index 57ee26b2c..2d2147615 100644 --- a/src/main/java/com/hbm/items/machine/ItemCapacitor.java +++ b/src/main/java/com/hbm/items/machine/ItemCapacitor.java @@ -8,15 +8,13 @@ import net.minecraft.entity.effect.EntityLightningBolt; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; public class ItemCapacitor extends Item { - private int dura; public ItemCapacitor(int dura) { - this.dura = dura; + this.setMaxDamage(dura); } @Override @@ -24,11 +22,7 @@ public class ItemCapacitor extends Item { if (this == ModItems.redcoil_capacitor) { list.add("Right-click a block to negate positive charge."); list.add("[Needed for Schrabidium Synthesis]"); - list.add(getDura(itemstack) + "/" + dura); - } - if (this == ModItems.titanium_filter) { - list.add("[Needed for Watz Reaction]"); - list.add((getDura(itemstack) / 20) + "/" + (dura / 20)); + list.add((itemstack.getMaxDamage() - itemstack.getItemDamage()) + "/" + itemstack.getMaxDamage()); } } @@ -39,9 +33,9 @@ public class ItemCapacitor extends Item { if (!player.isSneaking()) { - if (getDura(stack) < dura) { + if(stack.getItemDamage() > 0) { - setDura(stack, getDura(stack) + 1); + stack.setItemDamage(stack.getItemDamage() - 1); if (!world.isRemote) { world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 2.5F, true); @@ -55,29 +49,4 @@ public class ItemCapacitor extends Item { return false; } - - public boolean showDurabilityBar(ItemStack stack) { - return getDurabilityForDisplay(stack) > 0; - } - - public static int getDura(ItemStack stack) { - - if(stack.stackTagCompound == null) - return ((ItemCapacitor)stack.getItem()).dura; - - return stack.stackTagCompound.getInteger("dura"); - } - - public static void setDura(ItemStack stack, int dura) { - - if(!stack.hasTagCompound()) - stack.stackTagCompound = new NBTTagCompound(); - - stack.stackTagCompound.setInteger("dura", dura); - } - - public double getDurabilityForDisplay(ItemStack stack) - { - return 1D - (double)getDura(stack) / (double)dura; - } } diff --git a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java index 12ad0569e..b063ce516 100644 --- a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java +++ b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java @@ -9,7 +9,6 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.resources.I18n; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -75,7 +74,8 @@ public class ItemChemistryTemplate extends Item { for(int i = 0; i < 2; i++) { if(recipe.outputFluids[i] != null) { - list.add(recipe.outputFluids[i].fill + "mB " + I18n.format(recipe.outputFluids[i].type.getUnlocalizedName())); + int p = recipe.outputFluids[i].pressure; + list.add(recipe.outputFluids[i].fill + "mB " + recipe.outputFluids[i].type.getLocalizedName() + (p != 0 ? (" at " + p + "PU") : "")); } } @@ -89,7 +89,8 @@ public class ItemChemistryTemplate extends Item { for(int i = 0; i < 2; i++) { if(recipe.inputFluids[i] != null) { - list.add(recipe.inputFluids[i].fill + "mB " + I18n.format(recipe.inputFluids[i].type.getUnlocalizedName())); + int p = recipe.inputFluids[i].pressure; + list.add(recipe.inputFluids[i].fill + "mB " + recipe.inputFluids[i].type.getLocalizedName() + (p != 0 ? (" at " + p + "PU") : "")); } } diff --git a/src/main/java/com/hbm/items/machine/ItemDrillbit.java b/src/main/java/com/hbm/items/machine/ItemDrillbit.java index b992fd052..7dd8d3bdd 100644 --- a/src/main/java/com/hbm/items/machine/ItemDrillbit.java +++ b/src/main/java/com/hbm/items/machine/ItemDrillbit.java @@ -1,6 +1,7 @@ package com.hbm.items.machine; import java.util.List; +import java.util.Locale; import com.hbm.items.ItemEnumMulti; import com.hbm.util.EnumUtil; @@ -27,14 +28,14 @@ public class ItemDrillbit extends ItemEnumMulti { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase(Locale.US)); } } @Override public String getUnlocalizedName(ItemStack stack) { Enum num = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); - return super.getUnlocalizedName() + "_" + num.name().toLowerCase(); + return super.getUnlocalizedName() + "_" + num.name().toLowerCase(Locale.US); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemFluidDuct.java b/src/main/java/com/hbm/items/machine/ItemFluidDuct.java index b366e39ea..e6153e1f5 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidDuct.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidDuct.java @@ -1,12 +1,9 @@ package com.hbm.items.machine; -import java.util.List; - import com.hbm.blocks.ModBlocks; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.tileentity.network.TileEntityPipeBaseNT; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -19,6 +16,8 @@ import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; import net.minecraft.world.World; +import java.util.List; + public class ItemFluidDuct extends Item { IIcon overlayIcon; @@ -41,7 +40,7 @@ public class ItemFluidDuct extends Item { public String getItemStackDisplayName(ItemStack stack) { String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); + String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getConditionalName())).trim(); if(s1 != null) { s = s + " " + s1; @@ -111,7 +110,7 @@ public class ItemFluidDuct extends Item { ++x; } - if(!world.isAirBlock(x, y, z)) { + if(!world.getBlock(x, y, z).isReplaceable(world, x, y, z)) { return false; } } @@ -125,8 +124,8 @@ public class ItemFluidDuct extends Item { if(world.getTileEntity(x, y, z) instanceof TileEntityPipeBaseNT) { ((TileEntityPipeBaseNT) world.getTileEntity(x, y, z)).setType(Fluids.fromID(stack.getItemDamage())); } - - world.playSoundEffect(x, y, z, "hbm:block.pipePlaced", 1.0F, 0.65F + world.rand.nextFloat() * 0.2F); + + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, ModBlocks.fluid_duct_neo.stepSound.func_150496_b(), (ModBlocks.fluid_duct_neo.stepSound.getVolume() + 1.0F) / 2.0F, ModBlocks.fluid_duct_neo.stepSound.getPitch() * 0.8F); return true; } diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java index 43ad52bcb..e8f44cfa4 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java @@ -20,7 +20,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; @@ -45,7 +44,7 @@ public class ItemFluidIDMulti extends Item implements IItemFluidIdentifier, IIte setType(stack, secondary, true); setType(stack, primary, false); world.playSoundAtEntity(player, "random.orb", 0.25F, 1.25F); - PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.startTranslation(secondary.getUnlocalizedName()).flush(), /*MainRegistry.proxy.ID_DETONATOR*/ 7, 3000), (EntityPlayerMP) player); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.startTranslation(secondary.getConditionalName()).flush(), /*MainRegistry.proxy.ID_DETONATOR*/ 7, 3000), (EntityPlayerMP) player); } if(world.isRemote && player.isSneaking()) { @@ -68,9 +67,9 @@ public class ItemFluidIDMulti extends Item implements IItemFluidIdentifier, IIte @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { list.add(I18nUtil.resolveKey(getUnlocalizedName() + ".info")); - list.add(" " + I18n.format(getType(stack, true).getUnlocalizedName())); + list.add(" " + getType(stack, true).getLocalizedName()); list.add(I18nUtil.resolveKey(getUnlocalizedName() + ".info2")); - list.add(" " + I18n.format(getType(stack, false).getUnlocalizedName())); + list.add(" " + getType(stack, false).getLocalizedName()); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java index f15d2ad05..358d498d8 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java @@ -14,6 +14,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; @@ -38,42 +39,50 @@ public class ItemFluidIcon extends Item { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { if(stack.hasTagCompound()) { - if(stack.getTagCompound().getInteger("fill") > 0) - list.add(stack.getTagCompound().getInteger("fill") + "mB"); + if(getQuantity(stack) > 0) list.add(getQuantity(stack) + "mB"); + if(getPressure(stack) > 0) list.add(EnumChatFormatting.RED + "" + getPressure(stack) + "PU"); } Fluids.fromID(stack.getItemDamage()).addInfo(list); } public static ItemStack addQuantity(ItemStack stack, int i) { - - if(!stack.hasTagCompound()) - stack.stackTagCompound = new NBTTagCompound(); - + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setInteger("fill", i); + return stack; + } + public static ItemStack addPressure(ItemStack stack, int i) { + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); + stack.getTagCompound().setInteger("pressure", i); return stack; } public static ItemStack make(FluidStack stack) { - return make(stack.type, stack.fill); + return make(stack.type, stack.fill, stack.pressure); } public static ItemStack make(FluidType fluid, int i) { - return addQuantity(new ItemStack(ModItems.fluid_icon, 1, fluid.ordinal()), i); + return make(fluid, i, 0); + } + + public static ItemStack make(FluidType fluid, int i, int pressure) { + return addPressure(addQuantity(new ItemStack(ModItems.fluid_icon, 1, fluid.ordinal()), i), pressure); } public static int getQuantity(ItemStack stack) { - - if(!stack.hasTagCompound()) - return 0; - + if(!stack.hasTagCompound()) return 0; return stack.getTagCompound().getInteger("fill"); } + public static int getPressure(ItemStack stack) { + if(!stack.hasTagCompound()) return 0; + return stack.getTagCompound().getInteger("pressure"); + } + @Override public String getItemStackDisplayName(ItemStack stack) { - String s = (StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); + String s = (StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getConditionalName())).trim(); if(s != null) { return s; diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java b/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java index fcb336edc..d68a24f24 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java @@ -13,7 +13,6 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.client.resources.I18n; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -65,7 +64,7 @@ public class ItemFluidIdentifier extends Item implements IItemFluidIdentifier { list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder", I18nUtil.resolveKey(ModItems.template_folder.getUnlocalizedName() + ".name"))); list.add(""); list.add(I18nUtil.resolveKey(getUnlocalizedName() + ".info")); - list.add(" " + I18n.format(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())); + list.add(" " + Fluids.fromID(stack.getItemDamage()).getLocalizedName()); list.add(""); list.add(I18nUtil.resolveKey(getUnlocalizedName() + ".usage0")); list.add(I18nUtil.resolveKey(getUnlocalizedName() + ".usage1")); diff --git a/src/main/java/com/hbm/items/machine/ItemFluidTank.java b/src/main/java/com/hbm/items/machine/ItemFluidTank.java index 437554375..f4c0a3551 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidTank.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidTank.java @@ -48,7 +48,7 @@ public class ItemFluidTank extends Item { public String getItemStackDisplayName(ItemStack stack) { String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); + String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getConditionalName())).trim(); if(s1 != null) { s = s + " " + s1; diff --git a/src/main/java/com/hbm/items/machine/ItemGasTank.java b/src/main/java/com/hbm/items/machine/ItemGasTank.java index 11a20554a..0fe7cf03e 100644 --- a/src/main/java/com/hbm/items/machine/ItemGasTank.java +++ b/src/main/java/com/hbm/items/machine/ItemGasTank.java @@ -42,7 +42,7 @@ public class ItemGasTank extends Item { public String getItemStackDisplayName(ItemStack stack) { String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); + String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getConditionalName())).trim(); if(s1 != null) { s = s + " " + s1; diff --git a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java index 1a04a4649..3e165b474 100644 --- a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java +++ b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java @@ -3,8 +3,15 @@ package com.hbm.items.machine; import java.util.List; import com.hbm.items.ModItems; +import com.hbm.tileentity.IUpgradeInfoProvider; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -32,6 +39,24 @@ public class ItemMachineUpgrade extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + GuiScreen open = Minecraft.getMinecraft().currentScreen; + + if(open != null && open instanceof GuiContainer) { + GuiContainer guiContainer = (GuiContainer) open; + Container container = guiContainer.inventorySlots; + if(container.inventorySlots.size() > 0) { + Slot first = container.getSlot(0); + IInventory inv = (IInventory) first.inventory; + if(inv instanceof IUpgradeInfoProvider) { + IUpgradeInfoProvider provider = (IUpgradeInfoProvider) inv; + if(provider.canProvideInfo(this.type, this.tier, bool)) { + provider.provideInfo(this.type, this.tier, list, bool); + return; + } + } + } + } + if(this.type == UpgradeType.SPEED) { list.add(EnumChatFormatting.RED + "Mining Drill:"); list.add("Delay -" + (15 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); diff --git a/src/main/java/com/hbm/items/machine/ItemMold.java b/src/main/java/com/hbm/items/machine/ItemMold.java index 6da8ca650..78e5a8ff1 100644 --- a/src/main/java/com/hbm/items/machine/ItemMold.java +++ b/src/main/java/com/hbm/items/machine/ItemMold.java @@ -46,8 +46,9 @@ public class ItemMold extends Item { registerMold(new MoldShape( 2, S, "ingot", MaterialShapes.INGOT)); registerMold(new MoldShape( 3, S, "plate", MaterialShapes.PLATE)); registerMold(new MoldWire( 4, S, "wire")); - + registerMold(new MoldShape( 19, S, "plate_cast", MaterialShapes.CASTPLATE)); + registerMold(new MoldShape( 20, S, "wire_dense", MaterialShapes.DENSEWIRE)); registerMold(new MoldMulti( 5, S, "blade", MaterialShapes.INGOT.q(3), Mats.MAT_TITANIUM, new ItemStack(ModItems.blade_titanium), @@ -76,6 +77,7 @@ public class ItemMold extends Item { registerMold(new MoldShape( 10, L, "ingots", MaterialShapes.INGOT, 9)); registerMold(new MoldShape( 11, L, "plates", MaterialShapes.PLATE, 9)); + registerMold(new MoldShape( 21, L, "wires_dense", MaterialShapes.DENSEWIRE, 9)); registerMold(new MoldBlock( 12, L, "block", MaterialShapes.BLOCK)); registerMold(new MoldSingle( 13, L, "pipes", new ItemStack(ModItems.pipes_steel), Mats.MAT_STEEL, MaterialShapes.BLOCK.q(3))); diff --git a/src/main/java/com/hbm/items/machine/ItemPWRFuel.java b/src/main/java/com/hbm/items/machine/ItemPWRFuel.java new file mode 100644 index 000000000..db802776a --- /dev/null +++ b/src/main/java/com/hbm/items/machine/ItemPWRFuel.java @@ -0,0 +1,64 @@ +package com.hbm.items.machine; + +import java.util.List; + +import com.hbm.items.ItemEnumMulti; +import com.hbm.util.EnumUtil; +import com.hbm.util.function.Function; +import com.hbm.util.function.Function.FunctionLogarithmic; +import com.hbm.util.function.Function.FunctionSqrt; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; + +public class ItemPWRFuel extends ItemEnumMulti { + + public ItemPWRFuel() { + super(EnumPWRFuel.class, true, true); + } + + public static enum EnumPWRFuel { + MEU( 05.0D, new FunctionLogarithmic(20 * 30).withDiv(2_500)), + HEU233( 07.5D, new FunctionSqrt(25)), + HEU235( 07.5D, new FunctionSqrt(22.5)), + MEN( 07.5D, new FunctionLogarithmic(22.5 * 30).withDiv(2_500)), + HEN237( 07.5D, new FunctionSqrt(27.5)), + MOX( 07.5D, new FunctionLogarithmic(20 * 30).withDiv(2_500)), + MEP( 07.5D, new FunctionLogarithmic(22.5 * 30).withDiv(2_500)), + HEP239( 10.0D, new FunctionSqrt(22.5)), + HEP241( 10.0D, new FunctionSqrt(25)), + MEA( 07.5D, new FunctionLogarithmic(25 * 30).withDiv(2_500)), + HEA242( 10.0D, new FunctionSqrt(25)), + HES326( 12.5D, new FunctionSqrt(27.5)), + HES327( 12.5D, new FunctionSqrt(30)), + BFB_AM_MIX( 2.5D, new FunctionSqrt(15), 250_000_000), + BFB_PU241( 2.5D, new FunctionSqrt(15), 250_000_000); + + public double yield = 1_000_000_000; + public double heatEmission; + public Function function; + + private EnumPWRFuel(double heatEmission, Function function, double yield) { + this.heatEmission = heatEmission; + this.function = function; + } + + private EnumPWRFuel(double heatEmission, Function function) { + this(heatEmission, function, 1_000_000_000); + } + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + + EnumPWRFuel num = EnumUtil.grabEnumSafely(EnumPWRFuel.class, stack.getItemDamage()); + + String color = EnumChatFormatting.GOLD + ""; + String reset = EnumChatFormatting.RESET + ""; + + list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU"); + list.add(color + "Reacton function: " + reset + num.function.getLabelForFuel()); + list.add(color + "Fuel type: " + reset + num.function.getDangerFromFuel()); + } +} diff --git a/src/main/java/com/hbm/items/machine/ItemPistons.java b/src/main/java/com/hbm/items/machine/ItemPistons.java index e47d8a53b..4736b5cdd 100644 --- a/src/main/java/com/hbm/items/machine/ItemPistons.java +++ b/src/main/java/com/hbm/items/machine/ItemPistons.java @@ -1,6 +1,7 @@ package com.hbm.items.machine; import java.util.List; +import java.util.Locale; import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.items.ItemEnumMulti; @@ -28,14 +29,14 @@ public class ItemPistons extends ItemEnumMulti { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase(Locale.US)); } } @Override public String getUnlocalizedName(ItemStack stack) { Enum num = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); - return super.getUnlocalizedName() + "_" + num.name().toLowerCase(); + return super.getUnlocalizedName() + "_" + num.name().toLowerCase(Locale.US); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java index 01c83055c..960a84874 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java @@ -1,6 +1,7 @@ package com.hbm.items.machine; import java.util.List; +import java.util.Locale; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; @@ -275,7 +276,7 @@ public class ItemRBMKRod extends Item { break; case ARCH: function = "(%1$s - %1$s² / 10000) / 100 * %2$s [0;∞]"; break; - case SIGMOID: function = "%2$s / (1 + e^(-(%1$s - 50) / 10)"; + case SIGMOID: function = "%2$s / (1 + e^(-(%1$s - 50) / 10))"; break; case SQUARE_ROOT: function = "sqrt(%1$s) * %2$s / 10"; break; @@ -295,10 +296,10 @@ public class ItemRBMKRod extends Item { String reactivity = EnumChatFormatting.YELLOW + "" + ((int)(this.reactivity * enrichment * 1000D) / 1000D) + EnumChatFormatting.WHITE; String enrichmentPer = EnumChatFormatting.GOLD + " (" + ((int)(enrichment * 1000D) / 10D) + "%)"; - return String.format(function, selfRate > 0 ? "(x" + EnumChatFormatting.RED + " + " + selfRate + "" + EnumChatFormatting.WHITE + ")" : "x", reactivity).concat(enrichmentPer); + return String.format(Locale.US, function, selfRate > 0 ? "(x" + EnumChatFormatting.RED + " + " + selfRate + "" + EnumChatFormatting.WHITE + ")" : "x", reactivity).concat(enrichmentPer); } - return String.format(function, selfRate > 0 ? "(x" + EnumChatFormatting.RED + " + " + selfRate + "" + EnumChatFormatting.WHITE + ")" : "x", reactivity); + return String.format(Locale.US, function, selfRate > 0 ? "(x" + EnumChatFormatting.RED + " + " + selfRate + "" + EnumChatFormatting.WHITE + ")" : "x", reactivity); } public static enum EnumDepleteFunc { diff --git a/src/main/java/com/hbm/items/machine/ItemRTGPellet.java b/src/main/java/com/hbm/items/machine/ItemRTGPellet.java index 1cbdb729e..151a27f34 100644 --- a/src/main/java/com/hbm/items/machine/ItemRTGPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemRTGPellet.java @@ -3,6 +3,7 @@ package com.hbm.items.machine; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Locale; import javax.annotation.CheckForNull; @@ -156,17 +157,17 @@ public class ItemRTGPellet extends Item { list.add(BobMathUtil.toPercentage(instance.getLifespan(stack), instance.getMaxLifespan())); if (bool) { list.add("EXTENDED INFO:"); - list.add(String.format("%s / %s ticks", instance.getLifespan(stack), instance.getMaxLifespan())); + list.add(String.format(Locale.US, "%s / %s ticks", instance.getLifespan(stack), instance.getMaxLifespan())); final String[] timeLeft = BobMathUtil.ticksToDate(instance.getLifespan(stack)); final String[] maxLife = BobMathUtil.ticksToDate(instance.getMaxLifespan()); - list.add(String.format("Time remaining: %s y, %s d, %s h", (Object[]) timeLeft)); - list.add(String.format("Maximum life: %s y, %s d, %s h", (Object[]) maxLife)); + list.add(String.format(Locale.US, "Time remaining: %s y, %s d, %s h", (Object[]) timeLeft)); + list.add(String.format(Locale.US, "Maximum life: %s y, %s d, %s h", (Object[]) maxLife)); } } } public String getData() { - return String.format("%s (%s HE/t) %s", I18nUtil.resolveKey(getUnlocalizedName().concat(".name")), getHeat(), (getDoesDecay() ? " (decays)" : "")); + return String.format(Locale.US, "%s (%s HE/t) %s", I18nUtil.resolveKey(getUnlocalizedName().concat(".name")), getHeat(), (getDoesDecay() ? " (decays)" : "")); } public static HashMap getRecipeMap() { diff --git a/src/main/java/com/hbm/items/machine/ItemScraps.java b/src/main/java/com/hbm/items/machine/ItemScraps.java index 3e6134ffa..5c3436148 100644 --- a/src/main/java/com/hbm/items/machine/ItemScraps.java +++ b/src/main/java/com/hbm/items/machine/ItemScraps.java @@ -9,25 +9,39 @@ import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.items.ModItems; import com.hbm.items.special.ItemAutogen; +import com.hbm.lib.RefStrings; import com.hbm.util.I18nUtil; import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; public class ItemScraps extends ItemAutogen { + + @SideOnly(Side.CLIENT) public IIcon liquidIcon; + @SideOnly(Side.CLIENT) public IIcon addiviceIcon; public ItemScraps() { super(null); } + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister reg) { + super.registerIcons(reg); + this.liquidIcon = reg.registerIcon(RefStrings.MODID + ":scraps_liquid"); + this.addiviceIcon = reg.registerIcon(RefStrings.MODID + ":scraps_additive"); + } + @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { @@ -38,8 +52,48 @@ public class ItemScraps extends ItemAutogen { } } + @Override + @SideOnly(Side.CLIENT) + public int getColorFromItemStack(ItemStack stack, int layer) { + + if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("liquid")) { + + NTMMaterial mat = Mats.matById.get(stack.getItemDamage()); + + if(mat != null) { + return mat.moltenColor; + } + } + + return super.getColorFromItemStack(stack, layer); + } + + @SideOnly(Side.CLIENT) + public IIcon getIconIndex(ItemStack stack) { + + if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("liquid")) { + + NTMMaterial mat = Mats.matById.get(stack.getItemDamage()); + + if(mat != null) { + if(mat.smeltable == mat.smeltable.SMELTABLE) return this.liquidIcon; + if(mat.smeltable == mat.smeltable.ADDITIVE) return this.addiviceIcon; + } + } + + return this.getIconFromDamage(stack.getItemDamage()); + } + @Override public String getItemStackDisplayName(ItemStack stack) { + + if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("liquid")) { + MaterialStack contents = getMats(stack); + if(contents != null) { + return I18nUtil.resolveKey(contents.material.getUnlocalizedName()); + } + } + return ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack) + ".name")).trim(); } @@ -48,7 +102,13 @@ public class ItemScraps extends ItemAutogen { MaterialStack contents = getMats(stack); if(contents != null) { - list.add(I18nUtil.resolveKey(contents.material.getUnlocalizedName()) + ", " + Mats.formatAmount(contents.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + + if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("liquid")) { + list.add(Mats.formatAmount(contents.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + if(contents.material.smeltable == contents.material.smeltable.ADDITIVE) list.add(EnumChatFormatting.DARK_RED + "Additive, not castable!"); + } else { + list.add(I18nUtil.resolveKey(contents.material.getUnlocalizedName()) + ", " + Mats.formatAmount(contents.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + } } } @@ -69,11 +129,16 @@ public class ItemScraps extends ItemAutogen { } public static ItemStack create(MaterialStack stack) { + return create(stack, false); + } + + public static ItemStack create(MaterialStack stack, boolean liquid) { if(stack.material == null) return new ItemStack(ModItems.nothing); //why do i bother adding checks for fucking everything when they don't work ItemStack scrap = new ItemStack(ModItems.scraps, 1, stack.material.id); scrap.stackTagCompound = new NBTTagCompound(); scrap.stackTagCompound.setInteger("amount", stack.amount); + if(liquid) scrap.stackTagCompound.setBoolean("liquid", true); return scrap; } } diff --git a/src/main/java/com/hbm/items/machine/ItemStamp.java b/src/main/java/com/hbm/items/machine/ItemStamp.java index fe6986d90..75ed425fa 100644 --- a/src/main/java/com/hbm/items/machine/ItemStamp.java +++ b/src/main/java/com/hbm/items/machine/ItemStamp.java @@ -10,19 +10,27 @@ import net.minecraft.item.ItemStack; public class ItemStamp extends Item { - public StampType type; + protected StampType type; public static final HashMap> stamps = new HashMap(); public ItemStamp(int dura, StampType type) { this.setMaxDamage(dura); this.type = type; + if(type != null) { + this.addStampToList(this, 0, type); + } + } + + protected void addStampToList(Item item, int meta, StampType type) { List list = stamps.get(type); if(list == null) list = new ArrayList(); - list.add(new ItemStack(this)); + ItemStack stack = new ItemStack(item, 1, meta); + + list.add(stack); stamps.put(type, list); } @@ -32,16 +40,27 @@ public class ItemStamp extends Item { list.add("[CREATED USING TEMPLATE FOLDER]"); } - //TODO: give UFFR one (1) good boy token + /** Params can't take an ItemStack, for some reason it crashes during init */ + public StampType getStampType(Item item, int meta) { + return type; + } + public static enum StampType { FLAT, PLATE, WIRE, CIRCUIT, - //DISC, C357, C44, C50, - C9; + C9, + PRINTING1, + PRINTING2, + PRINTING3, + PRINTING4, + PRINTING5, + PRINTING6, + PRINTING7, + PRINTING8; } } diff --git a/src/main/java/com/hbm/items/machine/ItemStampBook.java b/src/main/java/com/hbm/items/machine/ItemStampBook.java new file mode 100644 index 000000000..6fa9906f6 --- /dev/null +++ b/src/main/java/com/hbm/items/machine/ItemStampBook.java @@ -0,0 +1,42 @@ +package com.hbm.items.machine; + +import java.util.List; +import java.util.Locale; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class ItemStampBook extends ItemStamp { + + public ItemStampBook() { + super(0, null); + + for(int i = 0; i < 8; i++) { + StampType type = getStampType(this, i); + this.addStampToList(this, i, type); + } + } + + @Override + public StampType getStampType(Item item, int meta) { + meta %= 8; + return StampType.values()[StampType.PRINTING1.ordinal() + meta]; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < 8; i++) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + StampType type = this.getStampType(stack.getItem(), stack.getItemDamage()); + return super.getUnlocalizedName() + "." + type.name().toLowerCase(Locale.US); + } +} diff --git a/src/main/java/com/hbm/items/machine/ItemZirnoxRod.java b/src/main/java/com/hbm/items/machine/ItemZirnoxRod.java index 3856016fa..d2a50f20d 100644 --- a/src/main/java/com/hbm/items/machine/ItemZirnoxRod.java +++ b/src/main/java/com/hbm/items/machine/ItemZirnoxRod.java @@ -1,6 +1,7 @@ package com.hbm.items.machine; import java.util.List; +import java.util.Locale; import com.hbm.items.ItemEnumMulti; import com.hbm.util.BobMathUtil; @@ -87,14 +88,14 @@ public class ItemZirnoxRod extends ItemEnumMulti { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase(Locale.US)); } } @Override public String getUnlocalizedName(ItemStack stack) { Enum num = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); - return super.getUnlocalizedName() + "_" + num.name().toLowerCase(); + return super.getUnlocalizedName() + "_" + num.name().toLowerCase(Locale.US); } public static enum EnumZirnoxType { diff --git a/src/main/java/com/hbm/items/special/ItemAntiCheat.java b/src/main/java/com/hbm/items/special/ItemAntiCheat.java deleted file mode 100644 index ddb62457f..000000000 --- a/src/main/java/com/hbm/items/special/ItemAntiCheat.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.hbm.items.special; - -import com.hbm.items.ItemCustomLore; - -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemAntiCheat extends ItemCustomLore { - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int j, boolean b) { - - /*if(stack.getItemDamage() != 34) { - - if(entity instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer)entity; - for(ItemStack s : player.inventory.mainInventory) { - player.inventory.consumeInventoryItem(ModItems.ingot_euphemium); - player.inventory.consumeInventoryItem(ModItems.nugget_euphemium); - } - } - - //entity.attackEntityFrom(ModDamageSource.cheater, Float.POSITIVE_INFINITY); - for(int i = 0; i < 100; i++) - entity.attackEntityFrom(ModDamageSource.cheater, 10000); - - //if(!world.isRemote) - // ExplosionChaos.antiCheat(world, (int)entity.posX, (int)entity.posY, (int)entity.posZ, 20); - }*/ - } - -} diff --git a/src/main/java/com/hbm/items/special/ItemAutogen.java b/src/main/java/com/hbm/items/special/ItemAutogen.java index 9ddf38798..1e1f1d075 100644 --- a/src/main/java/com/hbm/items/special/ItemAutogen.java +++ b/src/main/java/com/hbm/items/special/ItemAutogen.java @@ -99,7 +99,7 @@ public class ItemAutogen extends Item { NTMMaterial mat = Mats.matById.get(stack.getItemDamage()); if(mat != null) { - return mat.solidColorLight; + return mat.moltenColor; } return 0xffffff; diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOre.java b/src/main/java/com/hbm/items/special/ItemBedrockOre.java index 61fc2bd96..ca2ad4853 100644 --- a/src/main/java/com/hbm/items/special/ItemBedrockOre.java +++ b/src/main/java/com/hbm/items/special/ItemBedrockOre.java @@ -3,6 +3,9 @@ package com.hbm.items.special; import com.hbm.items.ItemEnumMulti; import com.hbm.items.special.ItemByproduct.EnumByproduct; import static com.hbm.items.special.ItemByproduct.EnumByproduct.*; + +import java.util.Locale; + import com.hbm.lib.RefStrings; import com.hbm.util.EnumUtil; @@ -57,7 +60,7 @@ public class ItemBedrockOre extends ItemEnumMulti { public String getItemStackDisplayName(ItemStack stack) { EnumBedrockOre ore = EnumUtil.grabEnumSafely(EnumBedrockOre.class, stack.getItemDamage()); - String oreName = StatCollector.translateToLocal("item.ore." + ore.oreName.toLowerCase()); + String oreName = StatCollector.translateToLocal("item.ore." + ore.oreName.toLowerCase(Locale.US)); return StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".name", oreName); } @@ -81,15 +84,21 @@ public class ItemBedrockOre extends ItemEnumMulti { */ public static enum EnumBedrockOre { - //Ore Byproduct 1, 2, 3 - IRON("Iron", 0xE2C0AA, B_SULFUR, B_TITANIUM, B_TITANIUM), //titanium, sulfur from pyrite - COPPER("Copper", 0xEC9A63, B_SULFUR, B_SULFUR, B_SULFUR), //sulfur sulfur sulfur sulfur - BORAX("Borax", 0xE4BE74, B_LITHIUM, B_CALCIUM, B_CALCIUM), //calcium from ulexite, uhhh lithium? - ASBESTOS("Asbestos", 0xBFBFB9, B_SILICON, B_SILICON, B_SILICON), //quartz i guess? - NIOBIUM("Niobium", 0xAF58D8, B_IRON, B_IRON, B_IRON), //iron in columbite, often found along tantalite - TITANIUM("Titanium", 0xF2EFE2, B_SILICON, B_CALCIUM, B_ALUMINIUM), //titanite is titanium + calcium + silicon with traces of iron and aluminium - TUNGSTEN("Tungsten", 0x2C293C, B_LEAD, B_IRON, B_BISMUTH), //ferberite has iron, raspite has lead, russelite is bismuth tungsten - GOLD("Gold", 0xF9D738, B_LEAD, B_COPPER, B_BISMUTH); //occurs with copper, lead and rare bismuthide + //Ore Byproduct 1, 2, 3 + IRON("Iron", 0xE2C0AA, B_SULFUR, B_TITANIUM, B_TITANIUM), //titanium, sulfur from pyrite + COPPER("Copper", 0xEC9A63, B_SULFUR, B_SULFUR, B_SULFUR), //sulfur sulfur sulfur sulfur + BORAX("Borax", 0xE4BE74, B_LITHIUM, B_CALCIUM, B_CALCIUM), //calcium from ulexite, uhhh lithium? + ASBESTOS("Asbestos", 0xBFBFB9, B_SILICON, B_SILICON, B_SILICON), //quartz i guess? + NIOBIUM("Niobium", 0xAF58D8, B_IRON, B_IRON, B_IRON), //iron in columbite, often found along tantalite + TITANIUM("Titanium", 0xF2EFE2, B_SILICON, B_CALCIUM, B_ALUMINIUM), //titanite is titanium + calcium + silicon with traces of iron and aluminium + TUNGSTEN("Tungsten", 0x2C293C, B_LEAD, B_IRON, B_BISMUTH), //ferberite has iron, raspite has lead, russelite is bismuth tungsten + GOLD("Gold", 0xF9D738, B_LEAD, B_COPPER, B_BISMUTH), //occurs with copper, lead and rare bismuthide + URANIUM("Uranium", 0x868D82, B_LEAD, B_RADIUM, B_POLONIUM), //uranium and its decay products + THORIUM("Thorium232", 0x7D401D, B_SILICON, B_URANIUM, B_TECHNETIUM), //thorium occours with uraninite and decay products + CHLOROCALCITE("Chlorocalcite", 0xCDE036, B_LITHIUM, B_SILICON, B_SILICON), //i guess? + FLUORITE("Fluorite", 0xF6F3E7, B_SILICON, B_LITHIUM, B_ALUMINIUM), //different silicon-bearing gemstones, generic lithium, aluminium from sodium compound trailings + HEMATITE("Hematite", 0xA37B72, B_SULFUR, B_TITANIUM, B_TITANIUM), //titanium, sulfur from pyrite + MALACHITE("Malachite", 0x66B48C, B_SULFUR, B_SULFUR, B_SULFUR); //sulfur sulfur sulfur sulfur public String oreName; public int color; diff --git a/src/main/java/com/hbm/items/special/ItemBookLore.java b/src/main/java/com/hbm/items/special/ItemBookLore.java index b34aa2598..866bd0866 100644 --- a/src/main/java/com/hbm/items/special/ItemBookLore.java +++ b/src/main/java/com/hbm/items/special/ItemBookLore.java @@ -3,7 +3,7 @@ package com.hbm.items.special; import java.util.List; import com.hbm.inventory.gui.GUIBookLore; -import com.hbm.inventory.gui.GUIBookLore.GUIAppearance; +import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; @@ -42,47 +42,71 @@ public class ItemBookLore extends Item implements IGUIProvider { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - BookLoreType type = BookLoreType.getTypeFromStack(stack); + if(!stack.hasTagCompound()) return; + String key = stack.stackTagCompound.getString("k"); + if(key.isEmpty()) return; - if(type.hasAuthor) { - String unloc = I18nUtil.resolveKey("book_lore.author", I18nUtil.resolveKey("book_lore." + type.keyI18n + ".author")); - - list.add(unloc); - } + key = "book_lore." + key + ".author"; + String loc = I18nUtil.resolveKey(key); + if(!loc.equals(key)) + list.add(I18nUtil.resolveKey("book_lore.author", loc)); } @Override public String getUnlocalizedName(ItemStack stack) { - BookLoreType type = BookLoreType.getTypeFromStack(stack); + if(!stack.hasTagCompound()) return "book_lore.test"; + String key = stack.stackTagCompound.getString("k"); - return "book_lore." + type.keyI18n; + return "book_lore." + (key.isEmpty() ? "test" : key); } - protected IIcon[] icons; + //Textures - public final static String[] itemTextures = new String[] { ":book_guide", ":paper_loose", ":papers_loose", ":notebook" }; + @SideOnly(Side.CLIENT) protected IIcon[] overlays; + @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister reg) { - String[] iconStrings = itemTextures; - this.icons = new IIcon[itemTextures.length]; + super.registerIcons(reg); - for(int i = 0; i < icons.length; i++) { - this.icons[i] = reg.registerIcon(RefStrings.MODID + itemTextures[i]); + this.overlays = new IIcon[2]; + this.overlays[0] = reg.registerIcon(RefStrings.MODID + ":book_cover"); + this.overlays[1] = reg.registerIcon(RefStrings.MODID + ":book_title"); + } + + @Override + @SideOnly(Side.CLIENT) + public boolean requiresMultipleRenderPasses() { return true; } + + @Override + public int getRenderPasses(int metadata) { return 3; } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamageForRenderPass(int meta, int pass) { + if(pass == 0) return this.itemIcon; + return overlays[pass - 1]; + } + + @Override + @SideOnly(Side.CLIENT) + public int getColorFromItemStack(ItemStack stack, int pass) { + switch(pass) { + default: return 0xFFFFFF; + case 1: //book cover + if(stack.hasTagCompound()) { + int color = stack.stackTagCompound.getInteger("cov_col"); + if(color > 0) return color; + } + return 0x303030; + case 2: //title color + if(stack.hasTagCompound()) { + int color = stack.stackTagCompound.getInteger("tit_col"); + if(color > 0) return color; + } + return 0xFFFFFF; } } - - @Override - public IIcon getIconIndex(ItemStack stack) { - return this.getIcon(stack, 1); - } - - @Override - public IIcon getIcon(ItemStack stack, int pass) { - BookLoreType type = BookLoreType.getTypeFromStack(stack); - - return this.icons[type.appearance.itemTexture]; - } @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { @@ -95,88 +119,25 @@ public class ItemBookLore extends Item implements IGUIProvider { return new GUIBookLore(player); } - public enum BookLoreType { - TEST(true, "test", 5, GUIAppearance.NOTEBOOK), - BOOK_IODINE(true, "book_iodine", 3, GUIAppearance.LOOSEPAPERS) { - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag.getInteger("mku_slot")); - }}, - BOOK_PHOSPHOROUS(true, "book_phosphorous", 2, GUIAppearance.LOOSEPAPERS) { - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag.getInteger("mku_slot")); - }}, - BOOK_DUST(true, "book_dust", 3, GUIAppearance.LOOSEPAPERS) { - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag.getInteger("mku_slot")); - }}, - BOOK_MERCURY(true, "book_mercury", 2, GUIAppearance.LOOSEPAPERS) { - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag.getInteger("mku_slot")); - }}, - BOOK_FLOWER(true, "book_flower", 2, GUIAppearance.LOOSEPAPERS) { - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag.getInteger("mku_slot")); - }}, - BOOK_SYRINGE(true, "book_syringe", 2, GUIAppearance.LOOSEPAPERS) { - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag.getInteger("mku_slot")); - }}, - RESIGNATION_NOTE(true, "resignation_note", 3, GUIAppearance.NOTEBOOK), - MEMO_STOCKS(false, "memo_stocks", 1, GUIAppearance.LOOSEPAPER), - MEMO_SCHRAB_GSA(false, "memo_schrab_gsa", 2, GUIAppearance.LOOSEPAPERS), - MEMO_SCHRAB_RD(false, "memo_schrab_rd", 4, GUIAppearance.LOOSEPAPERS), - MEMO_SCHRAB_NUKE(true, "memo_schrab_nuke", 3, GUIAppearance.LOOSEPAPERS), - ; + public static ItemStack createBook(String key, int pages, int colorCov, int colorTit) { + ItemStack book = new ItemStack(ModItems.book_lore); + NBTTagCompound tag = new NBTTagCompound(); + tag.setString("k", key); + tag.setShort("p", (short)pages); + tag.setInteger("cov_col", colorCov); + tag.setInteger("tit_col", colorTit); - //Why? it's quite simple; i am too burnt out and also doing it the other way - //is too inflexible for my taste - public final GUIAppearance appearance; //gui and item texture appearance - - public boolean hasAuthor = false; - public final String keyI18n; - public final int pages; - - private BookLoreType(Boolean author, String key, int max, GUIAppearance appearance) { - this.hasAuthor = author; - this.keyI18n = key; - this.pages = max; - this.appearance = appearance; + book.stackTagCompound = tag; + return book; + } + + public static void addArgs(ItemStack book, int page, String... args) { + if(!book.hasTagCompound()) return; + NBTTagCompound data = new NBTTagCompound(); + for(int i = 0; i < args.length; i++) { + data.setString("a" + (i + 1), args[i]); } - private BookLoreType(String key, int max, GUIAppearance appearance) { - this.keyI18n = key; - this.pages = max; - this.appearance = appearance; - } - - /** Function to resolve I18n keys using potential save-dependent information, a la format specifiers. */ - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag); - } - - public static BookLoreType getTypeFromStack(ItemStack stack) { - if(!stack.hasTagCompound()) { - stack.stackTagCompound = new NBTTagCompound(); - } - - NBTTagCompound tag = stack.getTagCompound(); - int ordinal = tag.getInteger("Book_Lore_Type"); - - return BookLoreType.values()[Math.abs(ordinal) % BookLoreType.values().length]; - } - - public static ItemStack setTypeForStack(ItemStack stack, BookLoreType num) { - - if(stack.getItem() instanceof ItemBookLore) { - if(!stack.hasTagCompound()) { - stack.stackTagCompound = new NBTTagCompound(); - } - - NBTTagCompound tag = stack.getTagCompound(); - tag.setInteger("Book_Lore_Type", num.ordinal()); - } - - return stack; - } + book.stackTagCompound.setTag("p" + page, data); } } diff --git a/src/main/java/com/hbm/items/special/ItemByproduct.java b/src/main/java/com/hbm/items/special/ItemByproduct.java index 049c8f20e..6b513884f 100644 --- a/src/main/java/com/hbm/items/special/ItemByproduct.java +++ b/src/main/java/com/hbm/items/special/ItemByproduct.java @@ -31,7 +31,11 @@ public class ItemByproduct extends ItemEnumMulti { B_ALUMINIUM(0xE8F2F9), B_SULFUR(0xEAD377), B_CALCIUM(0xCFCFA6), - B_BISMUTH(0x8D8577); + B_BISMUTH(0x8D8577), + B_RADIUM(0xE9FAF6), + B_TECHNETIUM(0xCADFDF), + B_POLONIUM(0xCADFDF), + B_URANIUM(0x868D82); public int color; diff --git a/src/main/java/com/hbm/items/special/ItemDoorSkin.java b/src/main/java/com/hbm/items/special/ItemDoorSkin.java new file mode 100644 index 000000000..c7211473f --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemDoorSkin.java @@ -0,0 +1,36 @@ +package com.hbm.items.special; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import java.util.List; + +public class ItemDoorSkin extends Item { + protected final IIcon[] icons; + + public ItemDoorSkin(int skinCount) { + setMaxStackSize(1); + icons = new IIcon[skinCount]; + } + + @Override + public boolean getHasSubtypes() { + return true; + } + + @Override + public void getSubItems(Item item, CreativeTabs creativeTabs, List list) { + for(int i = 0; i < icons.length; i++) { + list.add(new ItemStack(item, 1, i)); + } + } + + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int meta) { + return icons[meta]; + } +} diff --git a/src/main/java/com/hbm/items/special/ItemGlitch.java b/src/main/java/com/hbm/items/special/ItemGlitch.java index f30246151..9942c4754 100644 --- a/src/main/java/com/hbm/items/special/ItemGlitch.java +++ b/src/main/java/com/hbm/items/special/ItemGlitch.java @@ -12,6 +12,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; +import api.hbm.energy.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; @@ -21,7 +22,7 @@ import net.minecraft.potion.PotionEffect; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; -public class ItemGlitch extends Item { +public class ItemGlitch extends Item implements IBatteryItem { public ItemGlitch() { @@ -235,4 +236,12 @@ public class ItemGlitch extends Item { } } + + @Override public void chargeBattery(ItemStack stack, long i) { } + @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 getChargeRate() { return 0; } + @Override public long getDischargeRate() { return 200; } } diff --git a/src/main/java/com/hbm/items/special/ItemKitNBT.java b/src/main/java/com/hbm/items/special/ItemKitNBT.java index e310c04de..f7248759c 100644 --- a/src/main/java/com/hbm/items/special/ItemKitNBT.java +++ b/src/main/java/com/hbm/items/special/ItemKitNBT.java @@ -62,7 +62,7 @@ public class ItemKitNBT extends Item { list.add("Contains:"); for(ItemStack item : stacks) { - list.add("-" + item.getDisplayName()); + list.add("-" + item.getDisplayName() + (item.stackSize > 1 ? (" x" + item.stackSize) : "")); } } } diff --git a/src/main/java/com/hbm/items/special/ItemSlidingBlastDoorSkin.java b/src/main/java/com/hbm/items/special/ItemSlidingBlastDoorSkin.java new file mode 100644 index 000000000..36008e132 --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemSlidingBlastDoorSkin.java @@ -0,0 +1,28 @@ +package com.hbm.items.special; + +import com.hbm.lib.RefStrings; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.ItemStack; + +public class ItemSlidingBlastDoorSkin extends ItemDoorSkin { + public ItemSlidingBlastDoorSkin() { + super(3); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister reg) { + this.itemIcon = reg.registerIcon(this.getIconString()); + + this.icons[0] = reg.registerIcon(RefStrings.MODID + ":sliding_blast_door_default"); + this.icons[1] = reg.registerIcon(RefStrings.MODID + ":sliding_blast_door_variant1"); + this.icons[2] = reg.registerIcon(RefStrings.MODID + ":sliding_blast_door_variant2"); + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName(stack) + "." + stack.getItemDamage(); + } +} diff --git a/src/main/java/com/hbm/items/special/ItemTeleLink.java b/src/main/java/com/hbm/items/special/ItemTeleLink.java index baf9880ce..6ed12b051 100644 --- a/src/main/java/com/hbm/items/special/ItemTeleLink.java +++ b/src/main/java/com/hbm/items/special/ItemTeleLink.java @@ -42,7 +42,7 @@ public class ItemTeleLink extends Item { if(!stack.hasTagCompound()) { world.playSoundAtEntity(player, "hbm:item.techBoop", 1.0F, 1.0F); - player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "[TeleLink] No destiation set!")); + player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "[TeleLink] No destination set!")); return false; } diff --git a/src/main/java/com/hbm/items/special/ItemTrain.java b/src/main/java/com/hbm/items/special/ItemTrain.java new file mode 100644 index 000000000..007d31a91 --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemTrain.java @@ -0,0 +1,100 @@ +package com.hbm.items.special; + +import java.util.List; + +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.MoveContext; +import com.hbm.blocks.rail.IRailNTM.RailCheckType; +import com.hbm.entity.train.EntityRailCarBase; +import com.hbm.entity.train.TrainCargoTram; +import com.hbm.entity.train.TrainCargoTramTrailer; +import com.hbm.entity.train.TrainTunnelBore; +import com.hbm.items.ItemEnumMulti; +import com.hbm.util.EnumUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.block.Block; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class ItemTrain extends ItemEnumMulti { + + public ItemTrain() { + super(EnumTrainType.class, true, true); + this.setCreativeTab(CreativeTabs.tabTransport); + this.setMaxStackSize(1); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + EnumTrainType train = EnumUtil.grabEnumSafely(this.theEnum, stack.getItemDamage()); + + if(train.engine != null) list.add(EnumChatFormatting.GREEN + "Engine: " + EnumChatFormatting.RESET + train.engine); + list.add(EnumChatFormatting.GREEN + "Gauge: " + EnumChatFormatting.RESET + train.gauge); + if(train.maxSpeed != null) list.add(EnumChatFormatting.GREEN + "Max Speed: " + EnumChatFormatting.RESET + train.maxSpeed); + if(train.acceleration != null) list.add(EnumChatFormatting.GREEN + "Acceleration: " + EnumChatFormatting.RESET + train.acceleration); + if(train.brakeThreshold != null) list.add(EnumChatFormatting.GREEN + "Engine Brake Threshold: " + EnumChatFormatting.RESET + train.brakeThreshold); + if(train.parkingBrake != null) list.add(EnumChatFormatting.GREEN + "Parking Brake: " + EnumChatFormatting.RESET + train.parkingBrake); + } + + public static enum EnumTrainType { + + // Engine Gauge Max Speed Accel. Eng. Brake Parking Brake + CARGO_TRAM(TrainCargoTram.class, "Electric", "Standard Gauge", "10m/s", "0.2m/s", "<1m/s", "Yes"), + CARGO_TRAM_TRAILER(TrainCargoTramTrailer.class, null, "Standard Gauge", "Yes", null, null, "No"), + TUNNEL_BORE(TrainTunnelBore.class, "NONE", "Standard Gauge", "10m/s", "0.2m/s", "<1m/s", "Yes"); + + public Class train; + public String engine; + public String maxSpeed; + public String acceleration; + public String brakeThreshold; + public String parkingBrake; + public String gauge; + private EnumTrainType(Class train, String engine, String gauge, String maxSpeed, String acceleration, String brakeThreshold, String parkingBrake) { + this.train = train; + this.engine = engine; + this.maxSpeed = maxSpeed; + this.acceleration = acceleration; + this.brakeThreshold = brakeThreshold; + this.parkingBrake = parkingBrake; + this.gauge = gauge; + } + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer entity, World world, int x, int y, int z, int side, float fx, float fy, float fz) { + + Block b = world.getBlock(x, y, z); + + if(b instanceof IRailNTM) { + + EnumTrainType type = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); + EntityRailCarBase train = null; + try { train = type.train.getConstructor(World.class).newInstance(world); } catch(Exception e) { } + + if(train != null && train.getGauge() == ((IRailNTM) b).getGauge(world, x, y, z)) { + if(!world.isRemote) { + train.setPosition(x + fx, y + fy, z + fz); + BlockPos anchor = train.getCurrentAnchorPos(); + train.rotationYaw = entity.rotationYaw; + Vec3 corePos = train.getRelPosAlongRail(anchor, 0, new MoveContext(RailCheckType.CORE, 0)); + train.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); + Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT, train.getCollisionSpan() - train.getLengthSpan())); + Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK, train.getCollisionSpan() - train.getLengthSpan())); + train.rotationYaw = train.generateYaw(frontPos, backPos); + world.spawnEntityInWorld(train); + } + + stack.stackSize--; + return true; + } + } + + return false; + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemAnalysisTool.java b/src/main/java/com/hbm/items/tool/ItemAnalysisTool.java new file mode 100644 index 000000000..84fe9fcce --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemAnalysisTool.java @@ -0,0 +1,48 @@ +package com.hbm.items.tool; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.IAnalyzable; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +public class ItemAnalysisTool extends Item { + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { + + Block b = world.getBlock(x, y, z); + + if(b instanceof BlockDummyable) { + int[] pos = ((BlockDummyable) b).findCore(world, x, y, z); + + if(pos != null) { + x = pos[0]; + y = pos[1]; + z = pos[2]; + } + } + + if(b instanceof IAnalyzable) { + List debug = ((IAnalyzable) b).getDebugInfo(world, x, y, z); + + if(debug != null && !world.isRemote) { + for(String line : debug) { + player.addChatComponentMessage(new ChatComponentText(line).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); + } + } + + return true; + } + + return false; + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemAnalyzer.java b/src/main/java/com/hbm/items/tool/ItemAnalyzer.java index ebfdbe208..1076552b1 100644 --- a/src/main/java/com/hbm/items/tool/ItemAnalyzer.java +++ b/src/main/java/com/hbm/items/tool/ItemAnalyzer.java @@ -75,7 +75,7 @@ public class ItemAnalyzer extends Item { if(te instanceof IFluidDuct) { player.addChatMessage(new ChatComponentText( - "Duct Type: " + I18n.format(((IFluidDuct)te).getType().getUnlocalizedName()))); + "Duct Type: " + ((IFluidDuct)te).getType().getLocalizedName())); } if(te instanceof TileEntityPylon) { diff --git a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java index 172e0fa4a..0776efa01 100644 --- a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java +++ b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java @@ -1,6 +1,7 @@ package com.hbm.items.tool; import java.util.List; +import java.util.Locale; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -9,7 +10,6 @@ import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.util.I18nUtil; import api.hbm.block.IToolable; import api.hbm.block.IToolable.ToolType; @@ -69,7 +69,7 @@ public class ItemBlowtorch extends Item implements IFillableItem { initNBT(stack); } - return stack.stackTagCompound.getInteger(type.getUnlocalizedName()); + return stack.stackTagCompound.getInteger(type.getName()); } public int getMaxFill(FluidType type) { @@ -85,7 +85,7 @@ public class ItemBlowtorch extends Item implements IFillableItem { initNBT(stack); } - stack.stackTagCompound.setInteger(type.getUnlocalizedName(), fill); + stack.stackTagCompound.setInteger(type.getName(), fill); } public void initNBT(ItemStack stack) { @@ -137,7 +137,7 @@ public class ItemBlowtorch extends Item implements IFillableItem { if(!world.isRemote) { if(this == ModItems.blowtorch) { - this.setFill(stack, Fluids.GAS, this.getFill(stack, Fluids.GAS) - 1000); + this.setFill(stack, Fluids.GAS, this.getFill(stack, Fluids.GAS) - 250); } if(this == ModItems.acetylene_torch) { @@ -199,7 +199,7 @@ public class ItemBlowtorch extends Item implements IFillableItem { @SideOnly(Side.CLIENT) private String getFillGauge(ItemStack stack, FluidType type) { - return I18nUtil.resolveKey(type.getUnlocalizedName()) + ": " + String.format("%,d", this.getFill(stack, type)) + " / " + String.format("%,d", this.getMaxFill(type)); + return type.getLocalizedName() + ": " + String.format(Locale.US, "%,d", this.getFill(stack, type)) + " / " + String.format(Locale.US, "%,d", this.getMaxFill(type)); } @Override public boolean providesFluid(FluidType type, ItemStack stack) { return false; } diff --git a/src/main/java/com/hbm/items/tool/ItemBoatRubber.java b/src/main/java/com/hbm/items/tool/ItemBoatRubber.java new file mode 100644 index 000000000..c7b8ec137 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemBoatRubber.java @@ -0,0 +1,102 @@ +package com.hbm.items.tool; + +import java.util.List; + +import com.hbm.entity.item.EntityBoatRubber; + +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class ItemBoatRubber extends Item { + + public ItemBoatRubber() { + this.maxStackSize = 1; + this.setCreativeTab(CreativeTabs.tabTransport); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + + float f = 1.0F; + float pitch = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * f; + float yaw = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * f; + double posX = player.prevPosX + (player.posX - player.prevPosX) * (double) f; + double posY = player.prevPosY + (player.posY - player.prevPosY) * (double) f + 1.62D - (double) player.yOffset; + double posZ = player.prevPosZ + (player.posZ - player.prevPosZ) * (double) f; + float compZ = MathHelper.cos(-yaw * 0.017453292F - (float) Math.PI); + float compX = MathHelper.sin(-yaw * 0.017453292F - (float) Math.PI); + float mult = -MathHelper.cos(-pitch * 0.017453292F); + float lookY = MathHelper.sin(-pitch * 0.017453292F); + float lookX = compX * mult; + float lookZ = compZ * mult; + double reach = 5.0D; + + Vec3 pos = Vec3.createVectorHelper(posX, posY, posZ); + Vec3 target = pos.addVector((double) lookX * reach, (double) lookY * reach, (double) lookZ * reach); + MovingObjectPosition mop = world.rayTraceBlocks(pos, target, true); + + if(mop == null) { + return stack; + + } else { + Vec3 look = player.getLook(f); + boolean flag = false; + double width = 1.0D; + List list = world.getEntitiesWithinAABBExcludingEntity(player, player.boundingBox.addCoord(look.xCoord * reach, look.yCoord * reach, look.zCoord * reach).expand(width, width, width)); + + for(int i = 0; i < list.size(); ++i) { + Entity entity = (Entity) list.get(i); + + if(entity.canBeCollidedWith()) { + float f10 = entity.getCollisionBorderSize(); + AxisAlignedBB axisalignedbb = entity.boundingBox.expand((double) f10, (double) f10, (double) f10); + + if(axisalignedbb.isVecInside(pos)) { + flag = true; + } + } + } + + if(flag) { + return stack; + + } else { + if(mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { + int x = mop.blockX; + int y = mop.blockY; + int z = mop.blockZ; + + if(world.getBlock(x, y, z) == Blocks.snow_layer) { + --y; + } + + EntityBoatRubber entityboat = new EntityBoatRubber(world, (double) ((float) x + 0.5F), (double) ((float) y + 1.0F), (double) ((float) z + 0.5F)); + entityboat.rotationYaw = (float) (((MathHelper.floor_double((double) (player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3) - 1) * 90); + + if(!world.getCollidingBoundingBoxes(entityboat, entityboat.boundingBox.expand(-0.1D, -0.1D, -0.1D)).isEmpty()) { + return stack; + } + + if(!world.isRemote) { + world.spawnEntityInWorld(entityboat); + } + + if(!player.capabilities.isCreativeMode) { + --stack.stackSize; + } + } + + return stack; + } + } + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemBoltgun.java b/src/main/java/com/hbm/items/tool/ItemBoltgun.java index a4ef287f3..34440b70a 100644 --- a/src/main/java/com/hbm/items/tool/ItemBoltgun.java +++ b/src/main/java/com/hbm/items/tool/ItemBoltgun.java @@ -63,6 +63,10 @@ public class ItemBoltgun extends Item implements IAnimatedItem { player.inventory.decrStackSize(i, 1); player.inventoryContainer.detectAndSendChanges(); EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, DamageSource.causePlayerDamage(player).setDamageBypassesArmor(), 10F); + + if(!entity.isEntityAlive() && entity instanceof EntityPlayer) { + ((EntityPlayer) entity).triggerAchievement(MainRegistry.achGoFish); + } NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaExt"); diff --git a/src/main/java/com/hbm/items/tool/ItemBombCaller.java b/src/main/java/com/hbm/items/tool/ItemBombCaller.java index 9d39a924d..5ea5c732e 100644 --- a/src/main/java/com/hbm/items/tool/ItemBombCaller.java +++ b/src/main/java/com/hbm/items/tool/ItemBombCaller.java @@ -7,6 +7,7 @@ import com.hbm.lib.Library; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import com.hbm.world.WorldUtil; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -16,101 +17,81 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class ItemBombCaller extends Item { - + public ItemBombCaller() { super(); - this.setHasSubtypes(true); + this.setHasSubtypes(true); } - + @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { list.add("Aim & click to call an airstrike!"); - if(itemstack.getItemDamage() == 0) - list.add("Type: Carpet bombing"); - if(itemstack.getItemDamage() == 1) - list.add("Type: Napalm"); - if(itemstack.getItemDamage() == 2) - list.add("Type: Poison gas"); - if(itemstack.getItemDamage() == 3) - list.add("Type: Agent orange"); - if(itemstack.getItemDamage() == 4) - list.add("Type: Atomic bomb"); - if(itemstack.getItemDamage() == 5) - list.add("Type: VT stinger rockets"); - if(itemstack.getItemDamage() == 6) - list.add("Type: PIP OH GOD"); - if(itemstack.getItemDamage() == 7) - list.add("Type: Cloud the cloud oh god the cloud"); + switch (stack.getItemDamage()) { + case 0: list.add("Type: Carpet bombing"); break; + case 1: list.add("Type: Napalm"); break; + case 2: list.add("Type: Poison gas"); break; + case 3: list.add("Type: Agent orange"); break; + case 4: list.add("Type: Atomic bomb"); break; + case 5: list.add("Type: VT stinger rockets"); break; + case 6: list.add("Type: PIP OH GOD"); break; + case 7: list.add("Type: Cloud the cloud oh god the cloud"); break; + default: list.add("Type: INVALID, Report it to mod creator"); + + } + } - + @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) - { + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { MovingObjectPosition pos = Library.rayTrace(player, 500, 1); int x = pos.blockX; int y = pos.blockY; int z = pos.blockZ; - - boolean b = false; - - if(!world.isRemote) + + if(!world.isRemote) { + EntityBomber bomber; + switch(stack.getItemDamage()) { + + case 1: bomber = EntityBomber.statFacNapalm(world, x, y, z); break; + case 2: bomber = EntityBomber.statFacChlorine(world, x, y, z); break; + case 3: bomber = EntityBomber.statFacOrange(world, x, y, z); break; + case 4: bomber = EntityBomber.statFacABomb(world, x, y, z); break; + case 5: bomber = EntityBomber.statFacStinger(world, x, y, z); break; + case 6: bomber = EntityBomber.statFacBoxcar(world, x, y, z); break; + case 7: bomber = EntityBomber.statFacPC(world, x, y, z); break; + default: bomber = EntityBomber.statFacCarpet(world, x, y, z); + + } + WorldUtil.loadAndSpawnEntityInWorld(bomber); + player.addChatMessage(new ChatComponentText("Called in airstrike!")); + world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - if(stack.getItemDamage() == 0) - if(world.spawnEntityInWorld(EntityBomber.statFacCarpet(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 1) - if(world.spawnEntityInWorld(EntityBomber.statFacNapalm(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 2) - if(world.spawnEntityInWorld(EntityBomber.statFacChlorine(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 3) - if(world.spawnEntityInWorld(EntityBomber.statFacOrange(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 4) - if(world.spawnEntityInWorld(EntityBomber.statFacABomb(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 5) - if(world.spawnEntityInWorld(EntityBomber.statFacStinger(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 6) - if(world.spawnEntityInWorld(EntityBomber.statFacBoxcar(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 7) - if(world.spawnEntityInWorld(EntityBomber.statFacPC(world, x, y, z))) - b = true; - - if(b) { - player.addChatMessage(new ChatComponentText("Called in airstrike!")); - world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - } else { - world.playSoundAtEntity(player, "hbm:item.techBoop", 1.0F, 1.0F); - } } - - stack.stackSize -= b ? 1 : 0; - - return stack; - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubItems(Item p_150895_1_, CreativeTabs p_150895_2_, List p_150895_3_) - { - p_150895_3_.add(new ItemStack(p_150895_1_, 1, 0)); - p_150895_3_.add(new ItemStack(p_150895_1_, 1, 1)); - p_150895_3_.add(new ItemStack(p_150895_1_, 1, 2)); - p_150895_3_.add(new ItemStack(p_150895_1_, 1, 3)); - p_150895_3_.add(new ItemStack(p_150895_1_, 1, 4)); - } - @Override + stack.stackSize -= 1; + + return stack; + } + + @Override @SideOnly(Side.CLIENT) - public boolean hasEffect(ItemStack p_77636_1_) - { - return p_77636_1_.getItemDamage() >= 4; - } + public void getSubItems(Item p_150895_1_, CreativeTabs p_150895_2_, List p_150895_3_) + { + p_150895_3_.add(new ItemStack(p_150895_1_, 1, 0)); + p_150895_3_.add(new ItemStack(p_150895_1_, 1, 1)); + p_150895_3_.add(new ItemStack(p_150895_1_, 1, 2)); + p_150895_3_.add(new ItemStack(p_150895_1_, 1, 3)); + p_150895_3_.add(new ItemStack(p_150895_1_, 1, 4)); + } + + @Override + @SideOnly(Side.CLIENT) + public boolean hasEffect(ItemStack p_77636_1_) + { + return p_77636_1_.getItemDamage() >= 4; + } } diff --git a/src/main/java/com/hbm/items/tool/ItemCMStructure.java b/src/main/java/com/hbm/items/tool/ItemCMStructure.java new file mode 100644 index 000000000..6c46decee --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemCMStructure.java @@ -0,0 +1,197 @@ +package com.hbm.items.tool; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.MainRegistry; +import com.hbm.util.fauxpointtwelve.BlockPos; +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.common.util.ForgeDirection; + +import java.util.ArrayList; +import java.util.List; + +public class ItemCMStructure extends Item implements ILookOverlay { + + private static File file = new File(MainRegistry.configHbmDir, "CMstructureOutput.txt"); + + public static BlockPos getAnchor(ItemStack stack) { + + if(!stack.hasTagCompound()) { + return null; + } + + return new BlockPos(stack.stackTagCompound.getInteger("anchorX"), stack.stackTagCompound.getInteger("anchorY"), stack.stackTagCompound.getInteger("anchorZ")); + } + + public static void setAnchor(ItemStack stack, int x, int y, int z) { + + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + stack.stackTagCompound.setInteger("anchorX", x); + stack.stackTagCompound.setInteger("anchorY", y); + stack.stackTagCompound.setInteger("anchorZ", z); + } + + public static void writeToFile(File config, ItemStack stack, World world) { + int anchorX = stack.stackTagCompound.getInteger("anchorX"); + int anchorY = stack.stackTagCompound.getInteger("anchorY"); + int anchorZ = stack.stackTagCompound.getInteger("anchorZ"); + int x1 = stack.stackTagCompound.getInteger("x1"); + int y1 = stack.stackTagCompound.getInteger("y1"); + int z1 = stack.stackTagCompound.getInteger("z1"); + int x2 = stack.stackTagCompound.getInteger("x2"); + int y2 = stack.stackTagCompound.getInteger("y2"); + int z2 = stack.stackTagCompound.getInteger("z2"); + ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(anchorX, anchorY, anchorZ)); + int minX = Math.min(x1, x2); + int maxX = Math.max(x1, x2); + int minY = Math.min(y1, y2); + int maxY = Math.max(y1, y2); + int minZ = Math.min(z1, z2); + int maxZ = Math.max(z1, z2); + + try { + JsonWriter writer = new JsonWriter(new FileWriter(config)); + writer.setIndent(" "); + writer.beginObject(); + writer.name("components").beginArray(); + + for(int x = minX; x <= maxX; x++) { + for(int y = minY; y <= maxY; y++) { + for(int z = minZ; z <= maxZ; z++) { + + int compY = y - anchorY; + int compX = 0; + int compZ = 0; + + if(dir == ForgeDirection.SOUTH) { + compX = anchorX - x; + compZ = anchorZ - z; + } + if(dir == ForgeDirection.NORTH) { + compX = x - anchorX; + compZ = z - anchorZ; + } + + if(dir == ForgeDirection.WEST) { + compZ = x - anchorX; + compX = anchorZ - z; + } + if(dir == ForgeDirection.EAST) { + compZ = anchorX - x; + compX = z - anchorZ; + } + + if(x == anchorX && y == anchorY && z == anchorZ) continue; + Block block = world.getBlock(x, y, z); + int meta = world.getBlockMetadata(x, y, z); + if(block == Blocks.air) continue; + + writer.beginObject().setIndent(""); + writer.name("block").value(Block.blockRegistry.getNameForObject(block)); + writer.name("x").value(compX); + writer.name("y").value(compY); + writer.name("z").value(compZ); + writer.name("metas").beginArray().value(meta).endArray(); + writer.endObject().setIndent(" "); + } + } + } + writer.endArray(); + writer.endObject(); + writer.close(); + } catch(IOException e) { + e.printStackTrace(); + } + + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { + Block b = world.getBlock(x, y, z); + + if(b == ModBlocks.cm_anchor) { + this.setAnchor(stack, x, y, z); + return true; + } + + if(this.getAnchor(stack) == null) { + return false; + } + if(!stack.stackTagCompound.hasKey("x1")) { + stack.stackTagCompound.setInteger("x1", x); + stack.stackTagCompound.setInteger("y1", y); + stack.stackTagCompound.setInteger("z1", z); + } else if(!stack.stackTagCompound.hasKey("x2")) { + stack.stackTagCompound.setInteger("x2", x); + stack.stackTagCompound.setInteger("y2", y); + stack.stackTagCompound.setInteger("z2", z); + } else { + writeToFile(file, stack, world); + stack.stackTagCompound.removeTag("x1"); + stack.stackTagCompound.removeTag("y1"); + stack.stackTagCompound.removeTag("z1"); + stack.stackTagCompound.removeTag("x2"); + stack.stackTagCompound.removeTag("y2"); + stack.stackTagCompound.removeTag("z2"); + } + return true; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + super.addInformation(stack, player, list, ext); + list.add(EnumChatFormatting.YELLOW + "Click Custom Machine Structure Positioning Anchor to"); + list.add(EnumChatFormatting.YELLOW + "Confirm the location of the custom machine core block."); + list.add(EnumChatFormatting.YELLOW + "Output all blocks between Position1 and Position2 with"); + list.add(EnumChatFormatting.YELLOW + "metadata to \"CMstructureOutput.txt\" in hbmConfig."); + } + + @Override + public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { + ItemStack stack = Minecraft.getMinecraft().thePlayer.getHeldItem(); + List text = new ArrayList(); + + BlockPos anchor = getAnchor(stack); + + if(anchor == null) { + + text.add(EnumChatFormatting.RED + "No Anchor"); + } else { + int anchorX = stack.stackTagCompound.getInteger("anchorX"); + int anchorY = stack.stackTagCompound.getInteger("anchorY"); + int anchorZ = stack.stackTagCompound.getInteger("anchorZ"); + text.add(EnumChatFormatting.GOLD + "Anchor: " + anchorX + " / " + anchorY + " / " + anchorZ); + if(stack.stackTagCompound.hasKey("x1")) { + int x1 = stack.stackTagCompound.getInteger("x1"); + int y1 = stack.stackTagCompound.getInteger("y1"); + int z1 = stack.stackTagCompound.getInteger("z1"); + + text.add(EnumChatFormatting.YELLOW + "Position1: " + x1 + " / " + y1 + " / " + z1); + } + if(stack.stackTagCompound.hasKey("x2")) { + int x2 = stack.stackTagCompound.getInteger("x2"); + int y2 = stack.stackTagCompound.getInteger("y2"); + int z2 = stack.stackTagCompound.getInteger("z2"); + text.add(EnumChatFormatting.YELLOW + "Position2: " + x2 + " / " + y2 + " / " + z2); + } + } + + ILookOverlay.printGeneric(event, this.getItemStackDisplayName(stack), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemCoordinateBase.java b/src/main/java/com/hbm/items/tool/ItemCoordinateBase.java new file mode 100644 index 000000000..71e8d80c5 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemCoordinateBase.java @@ -0,0 +1,75 @@ +package com.hbm.items.tool; + +import java.util.List; + +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +public abstract class ItemCoordinateBase extends Item { + + public static BlockPos getPosition(ItemStack stack) { + + if(stack.hasTagCompound()) { + return new BlockPos(stack.stackTagCompound.getInteger("posX"), stack.stackTagCompound.getInteger("posY"), stack.stackTagCompound.getInteger("posZ")); + } + + return null; + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { + + if(this.canGrabCoordinateHere(world, x, y, z)) { + + if(!world.isRemote) { + BlockPos pos = this.getCoordinates(world, x, y, z); + + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); + + stack.stackTagCompound.setInteger("posX", pos.getX()); + if(includeY()) stack.stackTagCompound.setInteger("posY", pos.getY()); + stack.stackTagCompound.setInteger("posZ", pos.getZ()); + + this.onTargetSet(world, pos.getX(), pos.getY(), pos.getZ(), player); + } + + return true; + } + + return false; + } + + /** Whether this position can be saved or if the position target is valid */ + public abstract boolean canGrabCoordinateHere(World world, int x, int y, int z); + + /** Whether this linking item saves the Y coordinate */ + public boolean includeY() { + return true; + } + + /** Modified the saved coordinates, for example detecting the core for multiblocks */ + public BlockPos getCoordinates(World world, int x, int y, int z) { + return new BlockPos(x, y, z); + } + + /** Extra on successful target set, eg. sounds */ + public void onTargetSet(World world, int x, int y, int z, EntityPlayer player) { } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + + if(stack.hasTagCompound()) { + list.add("X: " + stack.stackTagCompound.getInteger("posX")); + if(includeY()) list.add("Y: " + stack.stackTagCompound.getInteger("posY")); + list.add("Z: " + stack.stackTagCompound.getInteger("posZ")); + } else { + list.add(EnumChatFormatting.RED + "No position set!"); + } + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemCouplingTool.java b/src/main/java/com/hbm/items/tool/ItemCouplingTool.java new file mode 100644 index 000000000..c6295697d --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemCouplingTool.java @@ -0,0 +1,5 @@ +package com.hbm.items.tool; + +import net.minecraft.item.Item; + +public class ItemCouplingTool extends Item { } diff --git a/src/main/java/com/hbm/items/tool/ItemDrone.java b/src/main/java/com/hbm/items/tool/ItemDrone.java new file mode 100644 index 000000000..e2c7b5ffe --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemDrone.java @@ -0,0 +1,52 @@ +package com.hbm.items.tool; + +import com.hbm.entity.item.EntityDeliveryDrone; +import com.hbm.items.ItemEnumMulti; +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class ItemDrone extends ItemEnumMulti { + + public ItemDrone() { + super(EnumDroneType.class, true, true); + this.setCreativeTab(MainRegistry.machineTab); + } + + public static enum EnumDroneType { + PATROL, + PATROL_CHUNKLOADING, + PATROL_EXPRESS, + PATROL_EXPRESS_CHUNKLOADING, + REQUEST + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer entity, World world, int x, int y, int z, int side, float fx, float fy, float fz) { + + if(side != 1) return false; + if(world.isRemote) return true; + + Entity toSpawn = null; + + if(stack.getItemDamage() < 4) { + toSpawn = new EntityDeliveryDrone(world); + if(stack.getItemDamage() % 2 == 0) { + ((EntityDeliveryDrone) toSpawn).setChunkLoading(); + } + if(stack.getItemDamage() > 1) { + ((EntityDeliveryDrone) toSpawn).getDataWatcher().updateObject(11, (byte) 1); + } + } + + if(toSpawn != null) { + toSpawn.setPosition(x + 0.5, y + 1, z + 0.5); + world.spawnEntityInWorld(toSpawn); + } + + return false; + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemDroneLinker.java b/src/main/java/com/hbm/items/tool/ItemDroneLinker.java new file mode 100644 index 000000000..31489ea8d --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemDroneLinker.java @@ -0,0 +1,101 @@ +package com.hbm.items.tool; + +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.network.IDroneLinkable; +import com.hbm.util.ChatBuilder; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +public class ItemDroneLinker extends Item { + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { + + TileEntity tile = world.getTileEntity(x, y, z); + + if(tile instanceof IDroneLinkable) { + + if(!world.isRemote) { + if(!stack.hasTagCompound()) { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setInteger("x", x); + stack.stackTagCompound.setInteger("y", y); + stack.stackTagCompound.setInteger("z", z); + + player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) + .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) + .next("] ").color(EnumChatFormatting.DARK_AQUA) + .next("Set initial position!").color(EnumChatFormatting.AQUA).flush()); + + } else { + + int tx = stack.stackTagCompound.getInteger("x"); + int ty = stack.stackTagCompound.getInteger("y"); + int tz = stack.stackTagCompound.getInteger("z"); + + TileEntity prev = world.getTileEntity(tx, ty, tz); + + if(prev instanceof IDroneLinkable) { + + BlockPos dest = ((IDroneLinkable) tile).getPoint(); + ((IDroneLinkable) prev).setNextTarget(dest.getX(), dest.getY(), dest.getZ()); + + player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) + .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) + .next("] ").color(EnumChatFormatting.DARK_AQUA) + .next("Link set!").color(EnumChatFormatting.AQUA).flush()); + } else { + player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) + .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) + .next("] ").color(EnumChatFormatting.DARK_AQUA) + .next("Previous link lost!").color(EnumChatFormatting.RED).flush()); + } + + stack.stackTagCompound.setInteger("x", x); + stack.stackTagCompound.setInteger("y", y); + stack.stackTagCompound.setInteger("z", z); + } + } + + return true; + } + + return false; + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean inhand) { + + if(world.isRemote && inhand) { + if(stack.hasTagCompound()) { + int x = stack.stackTagCompound.getInteger("x"); + int y = stack.stackTagCompound.getInteger("y"); + int z = stack.stackTagCompound.getInteger("z"); + MainRegistry.proxy.displayTooltip("Prev pos: " + x + " / " + y + " / " + z, MainRegistry.proxy.ID_DRONE); + } + } + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + + if(!world.isRemote && stack.hasTagCompound()) { + stack.stackTagCompound = null; + + player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) + .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) + .next("] ").color(EnumChatFormatting.DARK_AQUA) + .next("Position cleared!").color(EnumChatFormatting.GREEN).flush()); + } + + return stack; + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemMirrorTool.java b/src/main/java/com/hbm/items/tool/ItemMirrorTool.java index 935a37937..61db24d6e 100644 --- a/src/main/java/com/hbm/items/tool/ItemMirrorTool.java +++ b/src/main/java/com/hbm/items/tool/ItemMirrorTool.java @@ -24,7 +24,7 @@ import net.minecraft.world.World; public class ItemMirrorTool extends Item { @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { Block b = world.getBlock(x, y, z); diff --git a/src/main/java/com/hbm/items/tool/ItemModMinecart.java b/src/main/java/com/hbm/items/tool/ItemModMinecart.java index c065c189f..4bc248f8c 100644 --- a/src/main/java/com/hbm/items/tool/ItemModMinecart.java +++ b/src/main/java/com/hbm/items/tool/ItemModMinecart.java @@ -1,6 +1,7 @@ package com.hbm.items.tool; import java.util.List; +import java.util.Locale; import com.hbm.entity.cart.*; import com.hbm.items.ModItems; @@ -103,7 +104,7 @@ public class ItemModMinecart extends Item { @Override public String getUnlocalizedName(ItemStack stack) { EnumMinecart cart = EnumUtil.grabEnumSafely(EnumMinecart.class, stack.getItemDamage()); - return super.getUnlocalizedName() + "." + cart.name().toLowerCase(); + return super.getUnlocalizedName() + "." + cart.name().toLowerCase(Locale.US); } @Override @@ -126,7 +127,7 @@ public class ItemModMinecart extends Item { for(int i = 0; i < EnumCartBase.values().length; i++) { EnumCartBase base = EnumCartBase.values()[i]; - bases[i] = reg.registerIcon(this.getIconString() + "." + base.name().toLowerCase()); + bases[i] = reg.registerIcon(this.getIconString() + "." + base.name().toLowerCase(Locale.US)); } EnumMinecart[] enums = EnumMinecart.values(); @@ -134,7 +135,7 @@ public class ItemModMinecart extends Item { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "_overlay." + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "_overlay." + num.name().toLowerCase(Locale.US)); } } diff --git a/src/main/java/com/hbm/items/tool/ItemPlasticBag.java b/src/main/java/com/hbm/items/tool/ItemPlasticBag.java new file mode 100644 index 000000000..1d575e314 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemPlasticBag.java @@ -0,0 +1,126 @@ +package com.hbm.items.tool; + +import com.hbm.inventory.container.ContainerPlasticBag; +import com.hbm.inventory.gui.GUIPlasticBag; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.util.ItemStackUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class ItemPlasticBag extends Item implements IGUIProvider { + + public ItemPlasticBag() { + this.setMaxStackSize(1); + } + + @Override + public int getMaxItemUseDuration(ItemStack stack) { + return 1; + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + + if(!world.isRemote) player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); + return stack; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerPlasticBag(player.inventory, new InventoryPlasticBag(player, player.getHeldItem())); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIPlasticBag(player.inventory, new InventoryPlasticBag(player, player.getHeldItem())); + } + + public static class InventoryPlasticBag implements IInventory { + + public final EntityPlayer player; + public final ItemStack bag; + public ItemStack[] slots; + + public InventoryPlasticBag(EntityPlayer player, ItemStack box) { + this.player = player; + this.bag = box; + slots = new ItemStack[this.getSizeInventory()]; + + if(!box.hasTagCompound()) + box.setTagCompound(new NBTTagCompound()); + + ItemStack[] fromNBT = ItemStackUtil.readStacksFromNBT(box, slots.length); + + if(fromNBT != null) { + for(int i = 0; i < slots.length; i++) { + slots[i] = fromNBT[i]; + } + } + } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + ItemStack stack = getStackInSlot(slot); + if (stack != null) { + if (stack.stackSize > amount) { + stack = stack.splitStack(amount); + markDirty(); + } else { + setInventorySlotContents(slot, null); + } + } + return stack; + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) { + ItemStack stack = getStackInSlot(slot); + setInventorySlotContents(slot, null); + return stack; + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) { + + if(stack != null) { + stack.stackSize = Math.min(stack.stackSize, this.getInventoryStackLimit()); + } + + slots[slot] = stack; + markDirty(); + } + + @Override + public void markDirty() { + + for(int i = 0; i < getSizeInventory(); ++i) { + if(getStackInSlot(i) != null && getStackInSlot(i).stackSize == 0) { + slots[i] = null; + } + } + + ItemStackUtil.addStacksToNBT(bag, slots); + } + + @Override public int getSizeInventory() { return 1; } + @Override public ItemStack getStackInSlot(int slot) { return slots[slot]; } + @Override public String getInventoryName() { return "container.plasticBag"; } + @Override public boolean hasCustomInventoryName() { return bag.hasDisplayName(); } + @Override public int getInventoryStackLimit() { return 1; } + @Override public boolean isUseableByPlayer(EntityPlayer player) { return true; } + @Override public void openInventory() { } + @Override public void closeInventory() { } + @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return true; } + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java b/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java new file mode 100644 index 000000000..4ff3cc55f --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java @@ -0,0 +1,42 @@ +package com.hbm.items.tool; + +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionData; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; +import com.hbm.util.ChatBuilder; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +public class ItemPollutionDetector extends Item { + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean bool) { + + if(!(entity instanceof EntityPlayerMP) || world.getTotalWorldTime() % 10 != 0) return; + + PollutionData data = PollutionHandler.getPollutionData(world, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ)); + if(data == null) data = new PollutionData(); + + float soot = data.pollution[PollutionType.SOOT.ordinal()]; + float poison = data.pollution[PollutionType.POISON.ordinal()]; + float heavymetal = data.pollution[PollutionType.HEAVYMETAL.ordinal()]; + float fallout = data.pollution[PollutionType.FALLOUT.ordinal()]; + + soot = ((int) (soot * 100)) / 100F; + poison = ((int) (poison * 100)) / 100F; + heavymetal = ((int) (heavymetal * 100)) / 100F; + fallout = ((int) (fallout * 100)) / 100F; + + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Soot: " + soot).color(EnumChatFormatting.YELLOW).flush(), 100, 4000), (EntityPlayerMP) entity); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Poison: " + poison).color(EnumChatFormatting.YELLOW).flush(), 101, 4000), (EntityPlayerMP) entity); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Heavy metal: " + heavymetal).color(EnumChatFormatting.YELLOW).flush(), 102, 4000), (EntityPlayerMP) entity); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Fallout: " + fallout).color(EnumChatFormatting.YELLOW).flush(), 103, 4000), (EntityPlayerMP) entity); + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java index d1e5eef45..10b0d2d20 100644 --- a/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java +++ b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java @@ -41,58 +41,60 @@ public class ItemPowerNetTool extends Item { TileEntity te = world.getTileEntity(x, y, z); - if(!(te instanceof IEnergyConductor)) - return false; - if(world.isRemote) return true; - IEnergyConductor con = (IEnergyConductor) te; - IPowerNet net = con.getPowerNet(); - - if(net == null) { - player.addChatComponentMessage(ChatBuilder.start("Error: No network found! This should be impossible!").color(EnumChatFormatting.RED).flush()); + if((te instanceof IEnergyConductor)) { + + IEnergyConductor con = (IEnergyConductor) te; + IPowerNet net = con.getPowerNet(); + + if(net == null) { + player.addChatComponentMessage(ChatBuilder.start("Error: No network found! This should be impossible!").color(EnumChatFormatting.RED).flush()); + return true; + } + + if(!(net instanceof PowerNet)) { + player.addChatComponentMessage(ChatBuilder.start("Error: Cannot print diagnostic for non-standard power net implementation!").color(EnumChatFormatting.RED).flush()); + } + + PowerNet network = (PowerNet) net; + String id = Integer.toHexString(net.hashCode()); + + player.addChatComponentMessage(ChatBuilder.start("Start of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush()); + player.addChatComponentMessage(ChatBuilder.start("Links: " + network.getLinks().size()).color(EnumChatFormatting.YELLOW).flush()); + player.addChatComponentMessage(ChatBuilder.start("Proxies: " + network.getProxies().size()).color(EnumChatFormatting.YELLOW).flush()); + player.addChatComponentMessage(ChatBuilder.start("Subscribers: " + network.getSubscribers().size()).color(EnumChatFormatting.YELLOW).flush()); + player.addChatComponentMessage(ChatBuilder.start("End of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush()); + + for(IEnergyConductor link : network.getLinks()) { + Vec3 pos = link.getDebugParticlePos(); + + boolean errored = link.getPowerNet() != net; + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "debug"); + data.setInteger("color", errored ? 0xff0000 : 0xffff00); + data.setFloat("scale", 0.5F); + data.setString("text", id); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord, pos.yCoord, pos.zCoord), new TargetPoint(world.provider.dimensionId, pos.xCoord, pos.yCoord, pos.zCoord, radius)); + } + + for(IEnergyConnector subscriber : network.getSubscribers()) { + Vec3 pos = subscriber.getDebugParticlePos(); + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "debug"); + data.setInteger("color", 0x0000ff); + data.setFloat("scale", 1.5F); + data.setString("text", id); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord, pos.yCoord, pos.zCoord), new TargetPoint(world.provider.dimensionId, pos.xCoord, pos.yCoord, pos.zCoord, radius)); + } + return true; } - if(!(net instanceof PowerNet)) { - player.addChatComponentMessage(ChatBuilder.start("Error: Cannot print diagnostic for non-standard power net implementation!").color(EnumChatFormatting.RED).flush()); - } - - PowerNet network = (PowerNet) net; - String id = Integer.toHexString(net.hashCode()); - - player.addChatComponentMessage(ChatBuilder.start("Start of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush()); - player.addChatComponentMessage(ChatBuilder.start("Links: " + network.getLinks().size()).color(EnumChatFormatting.YELLOW).flush()); - player.addChatComponentMessage(ChatBuilder.start("Proxies: " + network.getProxies().size()).color(EnumChatFormatting.YELLOW).flush()); - player.addChatComponentMessage(ChatBuilder.start("Subscribers: " + network.getSubscribers().size()).color(EnumChatFormatting.YELLOW).flush()); - player.addChatComponentMessage(ChatBuilder.start("End of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush()); - - for(IEnergyConductor link : network.getLinks()) { - Vec3 pos = link.getDebugParticlePos(); - - boolean errored = link.getPowerNet() != net; - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "debug"); - data.setInteger("color", errored ? 0xff0000 : 0xffff00); - data.setFloat("scale", 0.5F); - data.setString("text", id); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord, pos.yCoord, pos.zCoord), new TargetPoint(world.provider.dimensionId, pos.xCoord, pos.yCoord, pos.zCoord, radius)); - } - - for(IEnergyConnector subscriber : network.getSubscribers()) { - Vec3 pos = subscriber.getDebugParticlePos(); - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "debug"); - data.setInteger("color", 0x0000ff); - data.setFloat("scale", 1.5F); - data.setString("text", id); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord, pos.yCoord, pos.zCoord), new TargetPoint(world.provider.dimensionId, pos.xCoord, pos.yCoord, pos.zCoord, radius)); - } - - return true; + return false; } private static final int radius = 20; diff --git a/src/main/java/com/hbm/items/tool/ItemRadarLinker.java b/src/main/java/com/hbm/items/tool/ItemRadarLinker.java new file mode 100644 index 000000000..53ee7e206 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemRadarLinker.java @@ -0,0 +1,30 @@ +package com.hbm.items.tool; + +import com.hbm.tileentity.IRadarCommandReceiver; +import com.hbm.tileentity.machine.TileEntityMachineRadarScreen; +import com.hbm.util.CompatExternal; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class ItemRadarLinker extends ItemCoordinateBase { + + @Override + public boolean canGrabCoordinateHere(World world, int x, int y, int z) { + TileEntity tile = CompatExternal.getCoreFromPos(world, x, y, z); + return tile instanceof IRadarCommandReceiver || tile instanceof TileEntityMachineRadarScreen; + } + + @Override + public BlockPos getCoordinates(World world, int x, int y, int z) { + TileEntity tile = CompatExternal.getCoreFromPos(world, x, y, z); + return new BlockPos(tile.xCoord, tile.yCoord, tile.zCoord); + } + + @Override + public void onTargetSet(World world, int x, int y, int z, EntityPlayer player) { + world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemTitaniumFilter.java b/src/main/java/com/hbm/items/tool/ItemTitaniumFilter.java new file mode 100644 index 000000000..322d5f574 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemTitaniumFilter.java @@ -0,0 +1,51 @@ +package com.hbm.items.tool; + +import java.util.List; + +import com.hbm.items.ModItems; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class ItemTitaniumFilter extends Item { + + private int dura; + + public ItemTitaniumFilter(int dura) { + this.dura = dura; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + if(this == ModItems.titanium_filter) { + list.add("[Needed for Watz Reaction]"); + list.add((getDura(itemstack) / 20) + "/" + (dura / 20)); + } + } + + public boolean showDurabilityBar(ItemStack stack) { + return getDurabilityForDisplay(stack) > 0; + } + + public static int getDura(ItemStack stack) { + + if(stack.stackTagCompound == null) + return ((ItemTitaniumFilter) stack.getItem()).dura; + + return stack.stackTagCompound.getInteger("dura"); + } + + public static void setDura(ItemStack stack, int dura) { + + if(!stack.hasTagCompound()) + stack.stackTagCompound = new NBTTagCompound(); + + stack.stackTagCompound.setInteger("dura", dura); + } + + public double getDurabilityForDisplay(ItemStack stack) { + return 1D - (double) getDura(stack) / (double) dura; + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index e5b006909..7fcded778 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -3,6 +3,7 @@ package com.hbm.items.tool; import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Set; import com.google.common.collect.HashMultimap; @@ -10,6 +11,10 @@ import com.google.common.collect.Multimap; import com.google.common.collect.Sets; import com.hbm.handler.ToolAbility; import com.hbm.handler.ToolAbility.*; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; +import com.hbm.util.ChatBuilder; import com.hbm.handler.WeaponAbility; import api.hbm.item.IDepthRockTool; @@ -21,14 +26,12 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemTool; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; @@ -90,7 +93,7 @@ public class ItemToolAbility extends ItemTool implements IItemAbility, IDepthRoc this.setHarvestLevel("pickaxe", material.getHarvestLevel()); this.setHarvestLevel("shovel", material.getHarvestLevel()); } else { - this.setHarvestLevel(type.toString().toLowerCase(), material.getHarvestLevel()); + this.setHarvestLevel(type.toString().toLowerCase(Locale.US), material.getHarvestLevel()); } } @@ -205,7 +208,7 @@ public class ItemToolAbility extends ItemTool implements IItemAbility, IDepthRoc } list.add("Right click to cycle through abilities!"); - list.add("Sneak-click to turn abilitty off!"); + list.add("Sneak-click to turn ability off!"); } if(!this.hitAbility.isEmpty()) { @@ -238,18 +241,17 @@ public class ItemToolAbility extends ItemTool implements IItemAbility, IDepthRoc while(getCurrentAbility(stack) != null && !getCurrentAbility(stack).isAllowed()) { - player.addChatComponentMessage(new ChatComponentText("[Ability ").appendSibling(new ChatComponentTranslation(getCurrentAbility(stack).getName(), new Object[0])) - .appendSibling(new ChatComponentText(getCurrentAbility(stack).getExtension() + " is blacklisted!]")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("[Ability ").nextTranslation(getCurrentAbility(stack).getName()).next(getCurrentAbility(stack).getExtension() + " is blacklisted!]").colorAll(EnumChatFormatting.RED).flush(), MainRegistry.proxy.ID_TOOLABILITY), (EntityPlayerMP) player); + i++; setAbility(stack, i % this.breakAbility.size()); } if(getCurrentAbility(stack) != null) { - player.addChatComponentMessage(new ChatComponentText("[Enabled ").appendSibling(new ChatComponentTranslation(getCurrentAbility(stack).getName(), new Object[0])) - .appendSibling(new ChatComponentText(getCurrentAbility(stack).getExtension() + "]")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("[Enabled ").nextTranslation(getCurrentAbility(stack).getName()).next(getCurrentAbility(stack).getExtension() + "]").colorAll(EnumChatFormatting.YELLOW).flush(), MainRegistry.proxy.ID_TOOLABILITY), (EntityPlayerMP) player); } else { - player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.GOLD + "[Tool ability deactivated]")); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("[Tool ability deactivated]").color(EnumChatFormatting.GOLD).flush(), MainRegistry.proxy.ID_TOOLABILITY), (EntityPlayerMP) player); } world.playSoundAtEntity(player, "random.orb", 0.25F, getCurrentAbility(stack) == null ? 0.75F : 1.25F); diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbilityFueled.java b/src/main/java/com/hbm/items/tool/ItemToolAbilityFueled.java index fd116a9b0..fd749bbd0 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbilityFueled.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbilityFueled.java @@ -4,7 +4,6 @@ import java.util.HashSet; import java.util.List; import com.hbm.inventory.fluid.FluidType; -import com.hbm.util.I18nUtil; import api.hbm.fluid.IFillableItem; import cpw.mods.fml.relauncher.Side; @@ -38,7 +37,7 @@ public class ItemToolAbilityFueled extends ItemToolAbility implements IFillableI list.add(EnumChatFormatting.GOLD + "Fuel: " + this.getFill(stack) + "/" + this.maxFuel + "mB"); for(FluidType type : acceptedFuels) { - list.add(EnumChatFormatting.YELLOW + "- " + I18nUtil.resolveKey(type.getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "- " + type.getLocalizedName()); } super.addInformation(stack, player, list, ext); diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 9401b7b76..3c1a0da33 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -3,7 +3,7 @@ package com.hbm.items.tool; import java.util.List; import com.hbm.lib.Library; -import com.hbm.world.feature.OilSpot; +import com.hbm.saveddata.TomSaveData; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -23,6 +23,16 @@ public class ItemWandD extends Item { if(pos != null) { + /*ExplosionVNT vnt = new ExplosionVNT(world, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 7); + vnt.setBlockAllocator(new BlockAllocatorBulkie(60)); + vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorBulkie(ModBlocks.block_slag)).setNoDrop()); + vnt.setEntityProcessor(new EntityProcessorStandard()); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectStandard()); + vnt.explode();*/ + + //PollutionHandler.incrementPollution(world, pos.blockX, pos.blockY, pos.blockZ, PollutionType.SOOT, 15); + /*TimeAnalyzer.startCount("setBlock"); world.setBlock(pos.blockX, pos.blockY, pos.blockZ, Blocks.dirt); TimeAnalyzer.startEndCount("getBlock"); @@ -30,11 +40,11 @@ public class ItemWandD extends Item { TimeAnalyzer.endCount(); TimeAnalyzer.dump();*/ - /*TomSaveData data = TomSaveData.forWorld(world); - data.impact = false; + TomSaveData data = TomSaveData.forWorld(world); + data.impact = true; data.fire = 0F; data.dust = 0F; - data.markDirty();*/ + data.markDirty(); /*EntityTomBlast tom = new EntityTomBlast(world); tom.posX = pos.blockX; @@ -43,32 +53,18 @@ public class ItemWandD extends Item { tom.destructionRange = 600; world.spawnEntityInWorld(tom);*/ - /*ItemStack itemStack = new ItemStack(ModItems.book_lore); - BookLoreType.setTypeForStack(itemStack, BookLoreType.BOOK_IODINE); - - player.inventory.addItemStackToInventory(itemStack); - player.inventoryContainer.detectAndSendChanges();*/ - - //use sparingly - /*int k = ((pos.blockX >> 4) << 4) + 8; - int l = ((pos.blockZ >> 4) << 4) + 8; - - MapGenBunker.Start start = new MapGenBunker.Start(world, world.rand, pos.blockX >> 4, pos.blockZ >> 4); - start.generateStructure(world, world.rand, new StructureBoundingBox(k - 124, l - 124, k + 15 + 124, l + 15 + 124));*/ - //MapGenStronghold.Start startS = new MapGenStronghold.Start(world, world.rand, pos.blockX >> 4, pos.blockZ >> 4); - //startS.generateStructure(world, world.rand, new StructureBoundingBox(k - 124, l - 124, k + 15 + 124, l + 15 + 124)); - - OilSpot.generateOilSpot(world, pos.blockX, pos.blockZ, 3, 50, true); - /*EntityNukeTorex torex = new EntityNukeTorex(world); torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0); - torex.getDataWatcher().updateObject(10, 1.5F); + torex.setScale(1.5F); + torex.setType(1); world.spawnEntityInWorld(torex); - EntityTracker entitytracker = ((WorldServer) world).getEntityTracker(); + TrackerUtil.setTrackingRange(world, torex, 1000);*/ + + /*EntityTracker entitytracker = ((WorldServer) world).getEntityTracker(); IntHashMap map = ReflectionHelper.getPrivateValue(EntityTracker.class, entitytracker, "trackedEntityIDs", "field_72794_c"); EntityTrackerEntry entry = (EntityTrackerEntry) map.lookup(torex.getEntityId()); - entry.blocksDistanceThreshold = 1000; - world.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(world, 150, pos.blockX, pos.blockY + 1, pos.blockZ));*/ + entry.blocksDistanceThreshold = 1000;*/ + //world.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(world, 150, pos.blockX, pos.blockY + 1, pos.blockZ)); //DungeonToolbox.generateBedrockOreWithChance(world, world.rand, pos.blockX, pos.blockZ, EnumBedrockOre.TITANIUM, new FluidStack(Fluids.SULFURIC_ACID, 500), 2, 1); diff --git a/src/main/java/com/hbm/items/tool/ItemWiring.java b/src/main/java/com/hbm/items/tool/ItemWiring.java index fc694ee82..cd6b5d787 100644 --- a/src/main/java/com/hbm/items/tool/ItemWiring.java +++ b/src/main/java/com/hbm/items/tool/ItemWiring.java @@ -60,17 +60,24 @@ public class ItemWiring extends Item { TileEntityPylonBase first = (TileEntityPylonBase) world.getTileEntity(x1, y1, z1); TileEntityPylonBase second = ((TileEntityPylonBase) te); - - if(TileEntityPylonBase.canConnect(first, second)) { - - first.addConnection(x, y, z); - second.addConnection(x1, y1, z1); - player.addChatMessage(new ChatComponentText("Wire end")); - - } else { - player.addChatMessage(new ChatComponentText("Wire error")); + + switch (TileEntityPylonBase.canConnect(first, second)) { + case 0: + first.addConnection(x, y, z); + second.addConnection(x1, y1, z1); + player.addChatMessage(new ChatComponentText("Wire end")); + break; + case 1: + player.addChatMessage(new ChatComponentText("Wire error - Pylons are not the same type")); + break; + case 2: + player.addChatMessage(new ChatComponentText("Wire error - Cannot connect to the same pylon")); + break; + case 3: + player.addChatMessage(new ChatComponentText("Wire error - Pylon is too far away")); + break; } - + stack.stackTagCompound = null; } else { diff --git a/src/main/java/com/hbm/items/tool/WeaponSpecial.java b/src/main/java/com/hbm/items/tool/WeaponSpecial.java index 1fc052d41..c59daa016 100644 --- a/src/main/java/com/hbm/items/tool/WeaponSpecial.java +++ b/src/main/java/com/hbm/items/tool/WeaponSpecial.java @@ -4,7 +4,7 @@ import java.util.List; import java.util.Random; import com.google.common.collect.Multimap; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.entity.projectile.EntityRubble; import com.hbm.items.ModItems; @@ -152,12 +152,7 @@ public class WeaponSpecial extends ItemSword { if(entityPlayer.fallDistance >= 20 && !((EntityPlayer)entityPlayer).capabilities.isCreativeMode) { if(!world.isRemote) { world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, 100, entity.posX, entity.posY, entity.posZ)); - - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, 100 * 0.005F); - entity2.posX = entity.posX; - entity2.posY = entity.posY; - entity2.posZ = entity.posZ; - world.spawnEntityInWorld(entity2); + EntityNukeTorex.statFac(world, entity.posX, entity.posY, entity.posZ, 100); } } } diff --git a/src/main/java/com/hbm/items/weapon/GunFolly.java b/src/main/java/com/hbm/items/weapon/GunFolly.java index 9fa3a0a8a..b796d477a 100644 --- a/src/main/java/com/hbm/items/weapon/GunFolly.java +++ b/src/main/java/com/hbm/items/weapon/GunFolly.java @@ -1,7 +1,7 @@ package com.hbm.items.weapon; import com.hbm.entity.particle.EntitySSmokeFX; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.interfaces.IHoldableWeapon; import com.hbm.items.ModItems; @@ -63,7 +63,7 @@ public class GunFolly extends Item implements IHoldableWeapon { player.motionZ -= player.getLookVec().zCoord * mult; if (!world.isRemote) { - EntityBulletBase bullet = new EntityBulletBase(world, BulletConfigSyncingUtil.TEST_CONFIG, player); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, BulletConfigSyncingUtil.TEST_CONFIG, player); world.spawnEntityInWorld(bullet); for(int i = 0; i < 25; i++) { diff --git a/src/main/java/com/hbm/items/weapon/GunLeverAction.java b/src/main/java/com/hbm/items/weapon/GunLeverAction.java deleted file mode 100644 index a0980d7b5..000000000 --- a/src/main/java/com/hbm/items/weapon/GunLeverAction.java +++ /dev/null @@ -1,271 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBulletBase; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunLeverAction extends Item { - - Random rand = new Random(); - - public int dmgMin = 8; - public int dmgMax = 16; - - public GunLeverAction() { - - this.maxStackSize = 1; - - if(this == ModItems.gun_lever_action) - this.setMaxDamage(500); - if(this == ModItems.gun_lever_action_dark) - this.setMaxDamage(750); - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.ammo_20gauge)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - EntityBulletBase entityarrow1; - EntityBulletBase entityarrow2; - EntityBulletBase entityarrow3; - EntityBulletBase entityarrow4; - EntityBulletBase entityarrow5; - EntityBulletBase entityarrow6; - EntityBulletBase entityarrow7; - EntityBulletBase entityarrow8; - EntityBulletBase entityarrow9; - EntityBulletBase entityarrow10; - - if (!p_77615_3_.isSneaking()) { - entityarrow1 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow2 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow3 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow4 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow5 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow6 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow7 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow8 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow9 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow10 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - } else { - entityarrow1 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow2 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow3 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow4 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow5 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow6 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow7 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow8 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow9 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow10 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - } - - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.revolverShootAlt", 5.0F, 0.75F); - - if (flag) { } else { - p_77615_3_.inventory.consumeInventoryItem(ModItems.ammo_20gauge); - } - - if (!p_77615_2_.isRemote) { - p_77615_2_.spawnEntityInWorld(entityarrow1); - p_77615_2_.spawnEntityInWorld(entityarrow2); - p_77615_2_.spawnEntityInWorld(entityarrow3); - p_77615_2_.spawnEntityInWorld(entityarrow4); - - if (!p_77615_3_.isSneaking()) { - - p_77615_2_.spawnEntityInWorld(entityarrow5); - p_77615_2_.spawnEntityInWorld(entityarrow6); - - int i = rand.nextInt(5); - - if(i >= 1) - p_77615_2_.spawnEntityInWorld(entityarrow7); - if(i >= 2) - p_77615_2_.spawnEntityInWorld(entityarrow8); - if(i >= 3) - p_77615_2_.spawnEntityInWorld(entityarrow9); - if(i >= 4) - p_77615_2_.spawnEntityInWorld(entityarrow10); - } - } - - setAnim(p_77615_1_, 1); - } - } - - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { - int j = getAnim(stack); - - if(j > 0) { - if(j < 30) - setAnim(stack, j + 1); - else - setAnim(stack, 0); - - if(j == 15) - world.playSoundAtEntity(entity, "hbm:weapon.leverActionReload", 2F, 0.85F); - } - - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - if(this.getAnim(p_77659_1_) == 0) - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if(this == ModItems.gun_lever_action) - list.add("Universal head-to-spaghetti-sauce converter."); - if(this == ModItems.gun_lever_action_dark) - list.add("Blow your legs off!"); - list.add(""); - list.add("Ammo: 12x74 Buckshot"); - list.add("Damage: 8 - 16"); - list.add("Projectiles: 6 - 10"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3.5, 0)); - return multimap; - } - - private static int getAnim(ItemStack stack) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - return 0; - } - - return stack.stackTagCompound.getInteger("animation"); - - } - - private static void setAnim(ItemStack stack, int i) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("animation", i); - - } - - public static float getRotationFromAnim(ItemStack stack) { - float rad = 0.0174533F; - rad *= 7.5F; - int i = getAnim(stack); - - if(i < 10) - return 0; - i -= 10; - - if(i < 10) - return rad * i; - else - return (rad * 10) - (rad * (i - 10)); - } - - public static float getOffsetFromAnim(ItemStack stack) { - float i = getAnim(stack); - - if(i < 10) - return 0; - i -= 10; - - if(i < 10) - return i / 10; - else - return 2 - (i / 10); - } - -} diff --git a/src/main/java/com/hbm/items/weapon/GunOSIPR.java b/src/main/java/com/hbm/items/weapon/GunOSIPR.java deleted file mode 100644 index bae321b8e..000000000 --- a/src/main/java/com/hbm/items/weapon/GunOSIPR.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.entity.projectile.EntityCombineBall; -import com.hbm.items.ModItems; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunOSIPR extends Item { - - Random rand = new Random(); - - public GunOSIPR() - { - this.maxStackSize = 1; - this.setMaxDamage(2500); - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - if (!player.isSneaking()) { - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_osipr_ammo)) && count % 3 == 0) { - EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 5, 15, false, "chopper"); - entityarrow.setDamage(5 + rand.nextInt(10)); - - //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); - world.playSoundAtEntity(player, "hbm:weapon.osiprShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - player.inventory.consumeInventoryItem(ModItems.gun_osipr_ammo); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } else { - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_osipr_ammo2)) && count % 30 == 0 && (this.getMaxItemUseDuration(stack) - count) != 0) { - EntityCombineBall entityarrow = new EntityCombineBall(player.worldObj, player, 3.0F); - entityarrow.setDamage(35 + rand.nextInt(45 - 35)); - - //world.playSoundAtEntity(player, "tile.piston.in", 1.0F, 0.75F); - world.playSoundAtEntity(player, "hbm:weapon.singFlyby", 1.0F, 1F); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - player.inventory.consumeInventoryItem(ModItems.gun_osipr_ammo2); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - - if((this.getMaxItemUseDuration(stack) - count) % 30 == 15 && (player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_osipr_ammo2))) - world.playSoundAtEntity(player, "hbm:weapon.osiprCharging", 1.0F, 1F); - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Hold right mouse button"); - list.add("to shoot,"); - list.add("sneak to shoot a"); - list.add("dark energy ball!"); - list.add(""); - list.add("Ammo: Dark Energy Plugs"); - list.add("Secondary Ammo: Combine Ball"); - list.add("Damage: 5 - 15"); - list.add("Secondary Damage: 1000"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 5, 0)); - return multimap; - } - -} diff --git a/src/main/java/com/hbm/items/weapon/GunSMG.java b/src/main/java/com/hbm/items/weapon/GunSMG.java deleted file mode 100644 index e5cb4cf58..000000000 --- a/src/main/java/com/hbm/items/weapon/GunSMG.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBulletBase; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunSMG extends Item { - - Random rand = new Random(); - - public GunSMG() - { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.ammo_9mm)) - && count % 2 == 0) { - - EntityBulletBase bullet = new EntityBulletBase(world, BulletConfigSyncingUtil.TEST_CONFIG, player); - //EntityArrow bullet = new EntityArrow(world, player, 3.0F); - - //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); - world.playSoundAtEntity(player, "hbm:weapon.rifleShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (flag) { - } else { - player.inventory.consumeInventoryItem(ModItems.ammo_9mm); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(bullet); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Ratatatatatatatata!!"); - list.add(""); - list.add("Ammo: SMG Round"); - list.add("Damage: 2 - 8"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunShotgun.java b/src/main/java/com/hbm/items/weapon/GunShotgun.java deleted file mode 100644 index fe9b604d1..000000000 --- a/src/main/java/com/hbm/items/weapon/GunShotgun.java +++ /dev/null @@ -1,187 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunShotgun extends Item { - Random rand = new Random(); - - public int dmgMin = 3; - public int dmgMax = 7; - - public GunShotgun() { - - this.maxStackSize = 1; - - if (this == ModItems.gun_uboinik) { - this.setMaxDamage(500); - } - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.ammo_12gauge)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - EntityBullet entityarrow1 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow1.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow2 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow2.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow3 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow3.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow4 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow4.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow5 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow5.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow6 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow6.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow7 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow7.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow8 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow8.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow9 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow9.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow10 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow10.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow11 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow11.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow12 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow12.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.shotgunShoot", 1.0F, 1.0F); - - if (flag) { } else { - p_77615_3_.inventory.consumeInventoryItem(ModItems.ammo_12gauge); - } - - if (!p_77615_2_.isRemote) { - p_77615_2_.spawnEntityInWorld(entityarrow1); - p_77615_2_.spawnEntityInWorld(entityarrow2); - p_77615_2_.spawnEntityInWorld(entityarrow3); - p_77615_2_.spawnEntityInWorld(entityarrow4); - p_77615_2_.spawnEntityInWorld(entityarrow5); - p_77615_2_.spawnEntityInWorld(entityarrow6); - - int i = rand.nextInt(7); - - if(i >= 1) - p_77615_2_.spawnEntityInWorld(entityarrow7); - if(i >= 2) - p_77615_2_.spawnEntityInWorld(entityarrow8); - if(i >= 3) - p_77615_2_.spawnEntityInWorld(entityarrow9); - if(i >= 4) - p_77615_2_.spawnEntityInWorld(entityarrow10); - if(i >= 5) - p_77615_2_.spawnEntityInWorld(entityarrow11); - if(i >= 6) - p_77615_2_.spawnEntityInWorld(entityarrow12); - } - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - //list.add("POW! Haha!"); - list.add("Abracadabra Tomanakara!"); - list.add(""); - list.add("Ammo: 12x70 Buckshot"); - list.add("Damage: 3 - 7"); - list.add("Projectiles: 6 - 12"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmo.java b/src/main/java/com/hbm/items/weapon/ItemAmmo.java index 1917cfa1c..eebc241a8 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmo.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmo.java @@ -3,6 +3,7 @@ package com.hbm.items.weapon; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Locale; import java.util.Set; import com.hbm.items.ItemAmmoEnums.AmmoRocket; @@ -64,6 +65,7 @@ public class ItemAmmo extends ItemEnumMulti { NEU_STARMETAL, NEU_TRACER, NEU_UHH, + NEU_LEADBURSTER, NEU_WARCRIME1, NEU_WARCRIME2, PRO_ACCURATE1, @@ -108,7 +110,7 @@ public class ItemAmmo extends ItemEnumMulti { public String key = "desc.item.ammo."; private AmmoItemTrait() { - key += this.toString().toLowerCase(); + key += this.toString().toLowerCase(Locale.US); } } diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java index 8a96ce169..30b1fdeab 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java @@ -3,8 +3,10 @@ package com.hbm.items.weapon; import java.util.List; import java.util.Random; +import com.hbm.blocks.ModBlocks; import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityMist; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.entity.projectile.EntityArtilleryShell; import com.hbm.explosion.ExplosionChaos; @@ -12,10 +14,14 @@ import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockMutatorDebris; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; import com.hbm.explosion.vanillant.standard.EntityProcessorCross; import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; @@ -46,8 +52,7 @@ import net.minecraft.util.MovingObjectPosition.MovingObjectType; public class ItemAmmoArty extends Item { public static Random rand = new Random(); - public static ArtilleryShell[] itemTypes = new ArtilleryShell[ /* >>> */ 9 /* <<< */ ]; - //public static ArtilleryShell[] shellTypes = new ArtilleryShell[ /* >>> */ 8 /* <<< */ ]; + public static ArtilleryShell[] itemTypes = new ArtilleryShell[ /* >>> */ 12 /* <<< */ ]; /* item types */ public final int NORMAL = 0; public final int CLASSIC = 1; @@ -58,6 +63,9 @@ public class ItemAmmoArty extends Item { public final int MINI_NUKE_MULTI = 6; public final int PHOSPHORUS_MULTI = 7; public final int CARGO = 8; + public final int CHLORINE = 9; + public final int PHOSGENE = 10; + public final int MUSTARD = 11; /* non-item shell types */ public ItemAmmoArty() { @@ -78,6 +86,9 @@ public class ItemAmmoArty extends Item { list.add(new ItemStack(item, 1, MINI_NUKE_MULTI)); list.add(new ItemStack(item, 1, NUKE)); list.add(new ItemStack(item, 1, CARGO)); + list.add(new ItemStack(item, 1, CHLORINE)); + list.add(new ItemStack(item, 1, PHOSGENE)); + list.add(new ItemStack(item, 1, MUSTARD)); } @Override @@ -195,7 +206,7 @@ public class ItemAmmoArty extends Item { ExplosionVNT xnt = new ExplosionVNT(shell.worldObj, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, size); if(breaksBlocks) { xnt.setBlockAllocator(new BlockAllocatorStandard(48)); - xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop()); + xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop().withBlockEffect(new BlockMutatorDebris(ModBlocks.block_slag, 1))); } xnt.setEntityProcessor(new EntityProcessorCross(7.5D).withRangeMod(rangeMod)); xnt.setPlayerProcessor(new PlayerProcessorStandard()); @@ -252,11 +263,7 @@ public class ItemAmmoArty extends Item { this.itemTypes[NUKE] = new ArtilleryShell("ammo_arty_nuke", SpentCasing.COLOR_CASE_16INCH_NUKE) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { shell.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(shell.worldObj, BombConfig.missileRadius, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord)); - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(shell.worldObj, 1000, BombConfig.missileRadius * 0.005F); - entity2.posX = mop.hitVec.xCoord; - entity2.posY = mop.hitVec.yCoord; - entity2.posZ = mop.hitVec.zCoord; - shell.worldObj.spawnEntityInWorld(entity2); + EntityNukeTorex.statFac(shell.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, BombConfig.missileRadius); shell.setDead(); } }; @@ -294,10 +301,69 @@ public class ItemAmmoArty extends Item { this.itemTypes[CARGO] = new ArtilleryShell("ammo_arty_cargo", SpentCasing.COLOR_CASE_16INCH) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { if(mop.typeOfHit == MovingObjectType.BLOCK) { shell.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); - shell.getStuck(mop.blockX, mop.blockY, mop.blockZ); + shell.getStuck(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit); } }}; + /* GAS */ + this.itemTypes[CHLORINE] = new ArtilleryShell("ammo_arty_chlorine", SpentCasing.COLOR_CASE_16INCH) { + public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { + shell.killAndClear(); + Vec3 vec = Vec3.createVectorHelper(shell.motionX, shell.motionY, shell.motionZ).normalize(); + shell.worldObj.createExplosion(shell, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, 5F, false); + EntityMist mist = new EntityMist(shell.worldObj); + mist.setType(Fluids.CHLORINE); + mist.setPosition(mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord - 3, mop.hitVec.zCoord - vec.zCoord); + mist.setArea(15, 7.5F); + shell.worldObj.spawnEntityInWorld(mist); + PollutionHandler.incrementPollution(shell.worldObj, mop.blockX, mop.blockY, mop.blockZ, PollutionType.HEAVYMETAL, 5F); + } + }; + this.itemTypes[PHOSGENE] = new ArtilleryShell("ammo_arty_phosgene", SpentCasing.COLOR_CASE_16INCH_NUKE) { + public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { + shell.killAndClear(); + Vec3 vec = Vec3.createVectorHelper(shell.motionX, shell.motionY, shell.motionZ).normalize(); + shell.worldObj.createExplosion(shell, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, 5F, false); + for(int i = 0; i < 3; i++) { + EntityMist mist = new EntityMist(shell.worldObj); + mist.setType(Fluids.PHOSGENE); + double x = mop.hitVec.xCoord - vec.xCoord; + double z = mop.hitVec.zCoord - vec.zCoord; + if(i > 0) { + x += rand.nextGaussian() * 15; + z += rand.nextGaussian() * 15; + } + mist.setPosition(x, mop.hitVec.yCoord - vec.yCoord - 5, z); + mist.setArea(15, 10); + shell.worldObj.spawnEntityInWorld(mist); + } + PollutionHandler.incrementPollution(shell.worldObj, mop.blockX, mop.blockY, mop.blockZ, PollutionType.HEAVYMETAL, 10F); + PollutionHandler.incrementPollution(shell.worldObj, mop.blockX, mop.blockY, mop.blockZ, PollutionType.POISON, 15F); + } + }; + this.itemTypes[MUSTARD] = new ArtilleryShell("ammo_arty_mustard_gas", SpentCasing.COLOR_CASE_16INCH_NUKE) { + public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { + shell.killAndClear(); + Vec3 vec = Vec3.createVectorHelper(shell.motionX, shell.motionY, shell.motionZ).normalize(); + shell.worldObj.createExplosion(shell, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, 5F, false); + for(int i = 0; i < 5; i++) { + EntityMist mist = new EntityMist(shell.worldObj); + mist.setType(Fluids.MUSTARDGAS); + double x = mop.hitVec.xCoord - vec.xCoord; + double z = mop.hitVec.zCoord - vec.zCoord; + if(i > 0) { + x += rand.nextGaussian() * 25; + z += rand.nextGaussian() * 25; + } + mist.setPosition(x, mop.hitVec.yCoord - vec.yCoord - 5, z); + mist.setArea(20, 10); + shell.worldObj.spawnEntityInWorld(mist); + } + PollutionHandler.incrementPollution(shell.worldObj, mop.blockX, mop.blockY, mop.blockZ, PollutionType.HEAVYMETAL, 15F); + PollutionHandler.incrementPollution(shell.worldObj, mop.blockX, mop.blockY, mop.blockZ, PollutionType.POISON, 30F); + } + }; + /* CLUSTER SHELLS */ this.itemTypes[PHOSPHORUS_MULTI] = new ArtilleryShell("ammo_arty_phosphorus_multi", SpentCasing.COLOR_CASE_16INCH_PHOS) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { ItemAmmoArty.this.itemTypes[PHOSPHORUS].onImpact(shell, mop); } diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java index 9d2b1dba1..4eac7ec1f 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java @@ -2,12 +2,14 @@ package com.hbm.items.weapon; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityArtilleryRocket; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockMutatorDebris; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; import com.hbm.explosion.vanillant.standard.EntityProcessorCross; import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; @@ -21,6 +23,7 @@ import com.hbm.potion.HbmPotion; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -37,7 +40,7 @@ import net.minecraft.util.Vec3; public class ItemAmmoHIMARS extends Item { - public static HIMARSRocket[] itemTypes = new HIMARSRocket[ /* >>> */ 7 /* <<< */ ]; + public static HIMARSRocket[] itemTypes = new HIMARSRocket[ /* >>> */ 8 /* <<< */ ]; public static final int SMALL = 0; public static final int LARGE = 1; @@ -46,6 +49,7 @@ public class ItemAmmoHIMARS extends Item { public static final int SMALL_TB = 4; public static final int LARGE_TB = 5; public static final int SMALL_MINI_NUKE = 6; + public static final int SMALL_LAVA = 7; public ItemAmmoHIMARS() { this.setHasSubtypes(true); @@ -62,6 +66,7 @@ public class ItemAmmoHIMARS extends Item { list.add(new ItemStack(item, 1, SMALL_HE)); list.add(new ItemStack(item, 1, SMALL_WP)); list.add(new ItemStack(item, 1, SMALL_TB)); + list.add(new ItemStack(item, 1, SMALL_LAVA)); list.add(new ItemStack(item, 1, SMALL_MINI_NUKE)); list.add(new ItemStack(item, 1, LARGE)); list.add(new ItemStack(item, 1, LARGE_TB)); @@ -101,6 +106,11 @@ public class ItemAmmoHIMARS extends Item { list.add(r + "Deals nuclear damage"); list.add(r + "Destroys blocks"); break; + case SMALL_LAVA: + list.add(y + "Strength: 20"); + list.add(r + "Creates volcanic lava"); + list.add(r + "Destroys blocks"); + break; case LARGE: list.add(y + "Strength: 50"); list.add(y + "Damage modifier: 5x"); @@ -137,13 +147,13 @@ public class ItemAmmoHIMARS extends Item { public void onUpdate(EntityArtilleryRocket rocket) { } } - public static void standardExplosion(EntityArtilleryRocket rocket, MovingObjectPosition mop, float size, float rangeMod, boolean breaksBlocks) { + public static void standardExplosion(EntityArtilleryRocket rocket, MovingObjectPosition mop, float size, float rangeMod, boolean breaksBlocks, Block slag, int slagMeta) { rocket.worldObj.playSoundEffect(rocket.posX, rocket.posY, rocket.posZ, "hbm:weapon.explosionMedium", 20.0F, 0.9F + rocket.worldObj.rand.nextFloat() * 0.2F); Vec3 vec = Vec3.createVectorHelper(rocket.motionX, rocket.motionY, rocket.motionZ).normalize(); ExplosionVNT xnt = new ExplosionVNT(rocket.worldObj, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, size); if(breaksBlocks) { xnt.setBlockAllocator(new BlockAllocatorStandard(48)); - xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop()); + xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop().withBlockEffect(new BlockMutatorDebris(slag, slagMeta))); } xnt.setEntityProcessor(new EntityProcessorCross(7.5).withRangeMod(rangeMod)); xnt.setPlayerProcessor(new PlayerProcessorStandard()); @@ -161,9 +171,10 @@ public class ItemAmmoHIMARS extends Item { private void init() { /* STANDARD ROCKETS */ - this.itemTypes[SMALL] = new HIMARSRocket("standard", "himars_standard", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 20F, 3F, false); }}; - this.itemTypes[SMALL_HE] = new HIMARSRocket("standard_he", "himars_standard_he", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 20F, 3F, true); }}; - this.itemTypes[LARGE] = new HIMARSRocket("single", "himars_single", 1) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 50F, 5F, true); }}; + this.itemTypes[SMALL] = new HIMARSRocket("standard", "himars_standard", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 20F, 3F, false, ModBlocks.block_slag, 1); }}; + this.itemTypes[SMALL_HE] = new HIMARSRocket("standard_he", "himars_standard_he", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 20F, 3F, true, ModBlocks.block_slag, 1); }}; + this.itemTypes[SMALL_LAVA] = new HIMARSRocket("standard_lava", "himars_standard_lava", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 20F, 3F, true, ModBlocks.volcanic_lava_block, 0); }}; + this.itemTypes[LARGE] = new HIMARSRocket("single", "himars_single", 1) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 50F, 5F, true, ModBlocks.block_slag, 1); }}; this.itemTypes[SMALL_MINI_NUKE] = new HIMARSRocket("standard_mini_nuke", "himars_standard_mini_nuke", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { @@ -175,7 +186,7 @@ public class ItemAmmoHIMARS extends Item { this.itemTypes[SMALL_WP] = new HIMARSRocket("standard_wp", "himars_standard_wp", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { - standardExplosion(rocket, mop, 20F, 3F, false); + standardExplosion(rocket, mop, 20F, 3F, false, ModBlocks.block_slag, 1); ExplosionLarge.spawnShrapnels(rocket.worldObj, (int) mop.hitVec.xCoord, (int) mop.hitVec.yCoord, (int) mop.hitVec.zCoord, 30); ExplosionChaos.burn(rocket.worldObj, (int) mop.hitVec.xCoord, (int) mop.hitVec.yCoord, (int) mop.hitVec.zCoord, 20); int radius = 30; @@ -198,14 +209,14 @@ public class ItemAmmoHIMARS extends Item { this.itemTypes[SMALL_TB] = new HIMARSRocket("standard_tb", "himars_standard_tb", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { - standardExplosion(rocket, mop, 20F, 10F, true); + standardExplosion(rocket, mop, 20F, 10F, true, ModBlocks.block_slag, 1); ExplosionLarge.spawnShrapnels(rocket.worldObj, (int) mop.hitVec.xCoord, (int) mop.hitVec.yCoord, (int) mop.hitVec.zCoord, 30); standardMush(rocket, mop, 20); }}; this.itemTypes[LARGE_TB] = new HIMARSRocket("single_tb", "himars_single_tb", 1) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { - standardExplosion(rocket, mop, 50F, 12F, true); + standardExplosion(rocket, mop, 50F, 12F, true, ModBlocks.slag, 1); ExplosionLarge.spawnShrapnels(rocket.worldObj, (int) mop.hitVec.xCoord, (int) mop.hitVec.yCoord, (int) mop.hitVec.zCoord, 30); standardMush(rocket, mop, 35); }}; diff --git a/src/main/java/com/hbm/items/weapon/ItemCoilgun.java b/src/main/java/com/hbm/items/weapon/ItemCoilgun.java new file mode 100644 index 000000000..9bce20e0e --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/ItemCoilgun.java @@ -0,0 +1,41 @@ +package com.hbm.items.weapon; + +import com.hbm.handler.GunConfiguration; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationKeyframe; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; + +public class ItemCoilgun extends ItemGunBase { + + public ItemCoilgun(GunConfiguration config) { + super(config); + } + + @Override + @SideOnly(Side.CLIENT) + public BusAnimation getAnimation(ItemStack stack, AnimType type) { + + if(type == AnimType.CYCLE) { + return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 100)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200))); + } + + if(type == AnimType.RELOAD) { + return new BusAnimation() + .addBus("RELOAD", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 250)) + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 500)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250))); + } + + GunConfiguration config = ((ItemGunBase) stack.getItem()).mainConfig; + return config.animations.get(type); + } +} diff --git a/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java b/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java new file mode 100644 index 000000000..6e9bf1de7 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java @@ -0,0 +1,118 @@ +package com.hbm.items.weapon; + +import com.hbm.entity.projectile.EntityChemical; +import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.GunConfiguration; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.packet.GunAnimationPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class ItemCryoCannon extends ItemGunBase { + + public ItemCryoCannon(GunConfiguration config) { + super(config); + } + + @Override + protected void fire(ItemStack stack, World world, EntityPlayer player) { + + if(this.getPressure(stack) >= 1000) return; + if(this.getTurbine(stack) < 100) return; + + BulletConfiguration config = null; + + if(mainConfig.reloadType == mainConfig.RELOAD_NONE) { + config = getBeltCfg(player, stack, true); + } else { + config = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))); + } + + int bullets = config.bulletsMin; + + for(int k = 0; k < mainConfig.roundsPerCycle; k++) { + + if(!hasAmmo(stack, player, true)) + break; + + if(config.bulletsMax > config.bulletsMin) + bullets += world.rand.nextInt(config.bulletsMax - config.bulletsMin); + + for(int i = 0; i < bullets; i++) { + spawnProjectile(world, player, stack, BulletConfigSyncingUtil.getKey(config)); + } + + useUpAmmo(player, stack, true); + player.inventoryContainer.detectAndSendChanges(); + + int wear = (int) Math.ceil(config.wear / (1F + EnchantmentHelper.getEnchantmentLevel(Enchantment.unbreaking.effectId, stack))); + setItemWear(stack, getItemWear(stack) + wear); + } + + world.playSoundAtEntity(player, mainConfig.firingSound, mainConfig.firingVolume, mainConfig.firingPitch); + + if(mainConfig.ejector != null && !mainConfig.ejector.getAfterReload()) + queueCasing(player, mainConfig.ejector, config, stack); + } + + @Override + protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { + + EntityChemical chem = new EntityChemical(world, player); + chem.setFluid(Fluids.OXYGEN); + world.spawnEntityInWorld(chem); + + int pressure = this.getPressure(stack); + pressure += 5; + pressure = MathHelper.clamp_int(pressure, 0, 1000); + this.setPressure(stack, pressure); + + if(player instanceof EntityPlayerMP) PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.CYCLE.ordinal()), (EntityPlayerMP) player); + } + + @Override + protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { + + int turbine = this.getTurbine(stack); + int pressure = this.getPressure(stack); + + if(this.getIsMouseDown(stack)) { + turbine += 10; + } else { + turbine -= 5; + pressure -= 5; + } + + turbine = MathHelper.clamp_int(turbine, 0, 100); + pressure = MathHelper.clamp_int(pressure, 0, 1000); + this.setTurbine(stack, turbine); + this.setPressure(stack, pressure); + + super.updateServer(stack, world, player, slot, isCurrentItem); + } + + public static void setTurbine(ItemStack stack, int i) { + writeNBT(stack, "turbine", i); + } + + public static int getTurbine(ItemStack stack) { + return readNBT(stack, "turbine"); + } + + public static void setPressure(ItemStack stack, int i) { + writeNBT(stack, "pressure", i); + } + + public static int getPressure(ItemStack stack) { + return readNBT(stack, "pressure"); + } +} diff --git a/src/main/java/com/hbm/items/weapon/ItemGenericGrenade.java b/src/main/java/com/hbm/items/weapon/ItemGenericGrenade.java index e7f417999..c300075f8 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGenericGrenade.java +++ b/src/main/java/com/hbm/items/weapon/ItemGenericGrenade.java @@ -3,6 +3,8 @@ package com.hbm.items.weapon; import com.hbm.entity.grenade.EntityGrenadeBouncyGeneric; import com.hbm.entity.grenade.EntityGrenadeImpactGeneric; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -33,7 +35,7 @@ public class ItemGenericGrenade extends ItemGrenade { return stack; } - public void explode(World world, double x, double y, double z) { } + public void explode(Entity grenade, EntityLivingBase thrower, World world, double x, double y, double z) { } public int getMaxTimer() { return this.fuse * 20; diff --git a/src/main/java/com/hbm/items/weapon/ItemGrenade.java b/src/main/java/com/hbm/items/weapon/ItemGrenade.java index f26ee698e..4bca576fe 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGrenade.java +++ b/src/main/java/com/hbm/items/weapon/ItemGrenade.java @@ -2,49 +2,7 @@ package com.hbm.items.weapon; import java.util.List; -import com.hbm.entity.grenade.EntityGrenadeASchrab; -import com.hbm.entity.grenade.EntityGrenadeBlackHole; -import com.hbm.entity.grenade.EntityGrenadeBreach; -import com.hbm.entity.grenade.EntityGrenadeBurst; -import com.hbm.entity.grenade.EntityGrenadeCloud; -import com.hbm.entity.grenade.EntityGrenadeCluster; -import com.hbm.entity.grenade.EntityGrenadeDynamite; -import com.hbm.entity.grenade.EntityGrenadeElectric; -import com.hbm.entity.grenade.EntityGrenadeFire; -import com.hbm.entity.grenade.EntityGrenadeFlare; -import com.hbm.entity.grenade.EntityGrenadeFrag; -import com.hbm.entity.grenade.EntityGrenadeGas; -import com.hbm.entity.grenade.EntityGrenadeGascan; -import com.hbm.entity.grenade.EntityGrenadeGeneric; -import com.hbm.entity.grenade.EntityGrenadeIFBouncy; -import com.hbm.entity.grenade.EntityGrenadeIFBrimstone; -import com.hbm.entity.grenade.EntityGrenadeIFConcussion; -import com.hbm.entity.grenade.EntityGrenadeIFGeneric; -import com.hbm.entity.grenade.EntityGrenadeIFHE; -import com.hbm.entity.grenade.EntityGrenadeIFHopwire; -import com.hbm.entity.grenade.EntityGrenadeIFImpact; -import com.hbm.entity.grenade.EntityGrenadeIFIncendiary; -import com.hbm.entity.grenade.EntityGrenadeIFMystery; -import com.hbm.entity.grenade.EntityGrenadeIFNull; -import com.hbm.entity.grenade.EntityGrenadeIFSpark; -import com.hbm.entity.grenade.EntityGrenadeIFSticky; -import com.hbm.entity.grenade.EntityGrenadeIFToxic; -import com.hbm.entity.grenade.EntityGrenadeLemon; -import com.hbm.entity.grenade.EntityGrenadeMIRV; -import com.hbm.entity.grenade.EntityGrenadeMk2; -import com.hbm.entity.grenade.EntityGrenadeNuclear; -import com.hbm.entity.grenade.EntityGrenadeNuke; -import com.hbm.entity.grenade.EntityGrenadePC; -import com.hbm.entity.grenade.EntityGrenadePlasma; -import com.hbm.entity.grenade.EntityGrenadePoison; -import com.hbm.entity.grenade.EntityGrenadePulse; -import com.hbm.entity.grenade.EntityGrenadeSchrabidium; -import com.hbm.entity.grenade.EntityGrenadeShrapnel; -import com.hbm.entity.grenade.EntityGrenadeSmart; -import com.hbm.entity.grenade.EntityGrenadeStrong; -import com.hbm.entity.grenade.EntityGrenadeTau; -import com.hbm.entity.grenade.EntityGrenadeZOMG; -import com.hbm.entity.grenade.EntityWastePearl; +import com.hbm.entity.grenade.*; import com.hbm.items.ModItems; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/items/weapon/ItemGrenadeFishing.java b/src/main/java/com/hbm/items/weapon/ItemGrenadeFishing.java new file mode 100644 index 000000000..a04d29f7e --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/ItemGrenadeFishing.java @@ -0,0 +1,60 @@ +package com.hbm.items.weapon; + +import java.util.Random; + +import com.hbm.entity.item.EntityItemBuoyant; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class ItemGrenadeFishing extends ItemGenericGrenade { + + public ItemGrenadeFishing(int fuse) { + super(fuse); + } + + @Override + public void explode(Entity grenade, EntityLivingBase thrower, World world, double x, double y, double z) { + world.newExplosion(null, x, y + 0.25D, z, 3F, false, false); + + int iX = (int) Math.floor(x); + int iY = (int) Math.floor(y); + int iZ = (int) Math.floor(z); + + for(int i = 0; i < 15; i++) { + + int rX = iX + world.rand.nextInt(15) - 7; + int rY = iY + world.rand.nextInt(15) - 7; + int rZ = iZ + world.rand.nextInt(15) - 7; + + if(world.getBlock(rX, rY, rZ).getMaterial() == Material.water) { + ItemStack loot = this.getRandomLoot(world.rand); + if(loot != null) { + EntityItemBuoyant item = new EntityItemBuoyant(world, rX + 0.5, rY + 0.5, rZ + 0.5, loot.copy()); + item.motionY = 1; + world.spawnEntityInWorld(item); + } + } + } + } + + public static ItemStack getRandomLoot(Random rand) { + float chance = rand.nextFloat(); + int luck = 0; + int speed = 100; //reduces both the junk and treasure chance to near zero + return net.minecraftforge.common.FishingHooks.getRandomFishable(rand, chance, luck, speed); + } + + @Override + public int getMaxTimer() { + return 60; + } + + @Override + public double getBounceMod() { + return 0.5D; + } +} diff --git a/src/main/java/com/hbm/items/weapon/ItemGrenadeKyiv.java b/src/main/java/com/hbm/items/weapon/ItemGrenadeKyiv.java index 1adcdb3dc..bd5ecda87 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGrenadeKyiv.java +++ b/src/main/java/com/hbm/items/weapon/ItemGrenadeKyiv.java @@ -1,5 +1,7 @@ package com.hbm.items.weapon; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; public class ItemGrenadeKyiv extends ItemGenericGrenade { @@ -8,7 +10,8 @@ public class ItemGrenadeKyiv extends ItemGenericGrenade { super(fuse); } - public void explode(World world, double x, double y, double z) { - world.newExplosion(null, x, y, z, 5F, true, true); + @Override + public void explode(Entity grenade, EntityLivingBase thrower, World world, double x, double y, double z) { + world.newExplosion(grenade, x, y, z, 5F, true, true); } } diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index 065dcf6f4..6ec696cab 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -5,7 +5,7 @@ import java.util.List; import org.lwjgl.input.Mouse; import com.hbm.config.GeneralConfig; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; @@ -15,6 +15,8 @@ import com.hbm.interfaces.IHoldableWeapon; import com.hbm.interfaces.IItemHUD; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.IEquipReceiver; +import com.hbm.items.ModItems; +import com.hbm.items.armor.ArmorFSB; import com.hbm.lib.HbmCollection; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.GunAnimationPacket; @@ -55,7 +57,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu public boolean m1;// = false; @SideOnly(Side.CLIENT) public boolean m2;// = false; - + public ItemGunBase(GunConfiguration config) { mainConfig = config; this.setMaxStackSize(1); @@ -117,7 +119,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if(GameSettings.isKeyDown(HbmKeybinds.reloadKey) && Minecraft.getMinecraft().currentScreen == null && (getMag(stack) < mainConfig.ammoCap || hasInfinity(stack, mainConfig))) { PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(true, (byte) 2)); setIsReloading(stack, true); - resetReloadCycle(stack); + resetReloadCycle(entity, stack); } } } @@ -131,13 +133,29 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if(getIsMouseDown(stack) && !(player.getHeldItem() == stack)) { setIsMouseDown(stack, false); } - + + int burstDuration = getBurstDuration(stack); + if(burstDuration > 0) { + + if(altConfig == null) { + if (burstDuration % mainConfig.firingDuration == 0 && tryShoot(stack, world, player, true)) { + fire(stack, world, player); + } + } else { + boolean canFire = altConfig.firingDuration == 1 || burstDuration % altConfig.firingDuration == 0; + if (canFire && tryShoot(stack, world, player, false)) { + altFire(stack, world, player); + } + } + + setBurstDuration(stack, getBurstDuration(stack) - 1); + if(getBurstDuration(stack) == 0) setDelay(stack, mainConfig.rateOfFire); + } if(getIsAltDown(stack) && !isCurrentItem) { setIsAltDown(stack, false); } if(GeneralConfig.enableGuns && mainConfig.firingMode == 1 && getIsMouseDown(stack) && tryShoot(stack, world, player, isCurrentItem)) { - fire(stack, world, player); setDelay(stack, mainConfig.rateOfFire); } @@ -164,7 +182,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu //whether or not the gun can shoot in its current state protected boolean tryShoot(ItemStack stack, World world, EntityPlayer player, boolean main) { - if(getIsReloading(stack) && mainConfig.reloadType == mainConfig.RELOAD_SINGLE) { + //cancel reload when trying to shoot if it's a single reload weapon and at least one round is loaded + if(getIsReloading(stack) && mainConfig.reloadType == mainConfig.RELOAD_SINGLE && this.getMag(stack) > 0) { setReloadCycle(stack, 0); setIsReloading(stack, false); } @@ -272,7 +291,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu //spawns the actual projectile, can be overridden to change projectile entity protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { - EntityBulletBase bullet = new EntityBulletBase(world, config, player); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, config, player); world.spawnEntityInWorld(bullet); if(player instanceof EntityPlayerMP) @@ -283,17 +302,32 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu //called on click (server side, called by mouse packet) for semi-automatics and specific events public void startAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - if(mainConfig.firingMode == mainConfig.FIRE_MANUAL && main && tryShoot(stack, world, player, main)) { - fire(stack, world, player); - setDelay(stack, mainConfig.rateOfFire); + boolean validConfig = mainConfig.firingMode == GunConfiguration.FIRE_MANUAL || mainConfig.firingMode == GunConfiguration.FIRE_BURST; + + if(validConfig && main && tryShoot(stack, world, player, main)) { + + if(mainConfig.firingMode == GunConfiguration.FIRE_BURST){ + if(getBurstDuration(stack) <= 0) + setBurstDuration(stack,mainConfig.firingDuration * mainConfig.roundsPerBurst); + } else { + fire(stack, world, player); + setDelay(stack, mainConfig.rateOfFire); + } + //setMag(stack, getMag(stack) - 1); //useUpAmmo(player, stack, main); //player.inventoryContainer.detectAndSendChanges(); } if(!main && altConfig != null && tryShoot(stack, world, player, main)) { - altFire(stack, world, player); - setDelay(stack, altConfig.rateOfFire); + + if(altConfig.firingMode == GunConfiguration.FIRE_BURST && getBurstDuration(stack) <= 0){ + setBurstDuration(stack,altConfig.firingDuration * altConfig.roundsPerBurst); + } else { + altFire(stack, world, player); + setDelay(stack, altConfig.rateOfFire); + } + //useUpAmmo(player, stack, main); //player.inventoryContainer.detectAndSendChanges(); } @@ -344,7 +378,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if (getMag(stack) >= mainConfig.ammoCap) setIsReloading(stack, false); else - resetReloadCycle(stack); + resetReloadCycle(player, stack); if(hasLoaded && mainConfig.reloadSoundEnd) world.playSoundAtEntity(player, mainConfig.reloadSound, 1.0F, 1.0F); @@ -352,7 +386,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if(mainConfig.ejector != null && mainConfig.ejector.getAfterReload()) queueCasing(player, mainConfig.ejector, prevCfg, stack); - InventoryUtil.tryConsumeAStack(player.inventory.mainInventory, 0, player.inventory.mainInventory.length, ammo); + InventoryUtil.tryConsumeAStack(player.inventory.mainInventory, 0, player.inventory.mainInventory.length - 1, ammo); } else { setReloadCycle(stack, getReloadCycle(stack) - 1); } @@ -390,7 +424,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.RELOAD.ordinal()), (EntityPlayerMP) player); setIsReloading(stack, true); - resetReloadCycle(stack); + resetReloadCycle(player, stack); } public boolean canReload(ItemStack stack, World world, EntityPlayer player) { @@ -544,8 +578,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if(!main) config = altConfig; - if(hasInfinity(stack, config)) - return; + if(hasInfinity(stack, config)) return; + if(isTrenchMaster(player) && player.getRNG().nextInt(3) == 0) return; if(config.reloadType != GunConfiguration.RELOAD_NONE) { setMag(stack, getMag(stack) - 1); @@ -559,8 +593,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu } /// sets reload cycle to config defult /// - public static void resetReloadCycle(ItemStack stack) { - writeNBT(stack, "reload", ((ItemGunBase)stack.getItem()).mainConfig.reloadDuration); + public static void resetReloadCycle(EntityPlayer player, ItemStack stack) { + writeNBT(stack, "reload", getReloadDuration(player, stack)); } /// if reloading routine is active /// @@ -643,6 +677,14 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu public static int getMagType(ItemStack stack) { return readNBT(stack, "magazineType"); } + /// Sets how long a burst fires for, only useful for burst fire weapons /// + public static void setBurstDuration(ItemStack stack, int i) { + writeNBT(stack, "bduration", i); + } + + public static int getBurstDuration(ItemStack stack) { + return readNBT(stack, "bduration"); + } /// queued casing for ejection /// public static void setCasing(ItemStack stack, BulletConfiguration bullet) { @@ -777,4 +819,14 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu data.setInteger("ej", ejector.getId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 50)); } + + public static int getReloadDuration(EntityPlayer player, ItemStack stack) { + int cycle = ((ItemGunBase) stack.getItem()).mainConfig.reloadDuration; + if(isTrenchMaster(player)) return Math.max(1, cycle / 2); + return cycle; + } + + public static boolean isTrenchMaster(EntityPlayer player) { + return player.inventory.armorInventory[2] != null && player.inventory.armorInventory[2].getItem() == ModItems.trenchmaster_plate && ArmorFSB.hasFSBArmor(player); + } } diff --git a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java b/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java index 880813acd..80910ce01 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java @@ -20,7 +20,6 @@ import api.hbm.fluid.IFillableItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; @@ -84,7 +83,8 @@ public class ItemGunChemthrower extends ItemGunBase implements IFillableItem { public boolean canReload(ItemStack stack, World world, EntityPlayer player) { return false; } - + + @Override protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { //spawn fluid projectile @@ -96,12 +96,13 @@ public class ItemGunChemthrower extends ItemGunBase implements IFillableItem { if(player instanceof EntityPlayerMP) PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.CYCLE.ordinal()), (EntityPlayerMP) player); } + @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { list.add("Ammo: " + getMag(stack) + " / " + mainConfig.ammoCap + "mB"); - list.add("Ammo Type: " + I18n.format(this.getFluidType(stack).getUnlocalizedName())); + list.add("Ammo Type: " + this.getFluidType(stack).getLocalizedName()); int dura = mainConfig.durability - getItemWear(stack); diff --git a/src/main/java/com/hbm/items/weapon/ItemGunCongo.java b/src/main/java/com/hbm/items/weapon/ItemGunCongo.java new file mode 100644 index 000000000..7072e772d --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/ItemGunCongo.java @@ -0,0 +1,37 @@ +package com.hbm.items.weapon; + +import com.hbm.handler.GunConfiguration; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationKeyframe; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; + +public class ItemGunCongo extends ItemGunBase { + + public ItemGunCongo(GunConfiguration config) { + super(config); + } + + @Override + @SideOnly(Side.CLIENT) + public BusAnimation getAnimation(ItemStack stack, AnimType type) { + + if(type == AnimType.CYCLE) { + return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 50)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 100))) + .addBus("PUMP", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 500)) + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 100)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200))); + + } + + return null; + } +} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java index 4db1ce526..7dd20b1a0 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java @@ -1,6 +1,6 @@ package com.hbm.items.weapon; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.GunConfiguration; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; @@ -31,7 +31,7 @@ public class ItemGunGauss extends ItemGunBase { } if(!main && getStored(stack) > 0) { - EntityBulletBase bullet = new EntityBulletBase(world, altConfig.config.get(0), player); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, altConfig.config.get(0), player); bullet.overrideDamage = Math.max(getStored(stack), 1) * 10F; world.spawnEntityInWorld(bullet); world.playSoundAtEntity(player, "hbm:weapon.tauShoot", 0.5F, 0.75F); @@ -59,7 +59,7 @@ public class ItemGunGauss extends ItemGunBase { public void startActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { if(!main && getItemWear(stack) < mainConfig.durability && player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) { - chargeLoop = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, 1.0F, 0.75F); + chargeLoop = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, 1.0F, 5F, 0.75F); world.playSoundAtEntity(player, "hbm:weapon.tauChargeLoop2", 1.0F, 0.75F); if(chargeLoop != null) { @@ -120,7 +120,7 @@ public class ItemGunGauss extends ItemGunBase { public AudioWrapper rebootAudio(AudioWrapper wrapper, EntityPlayer player) { wrapper.stopSound(); - AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, wrapper.getVolume(), wrapper.getPitch()); + AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, wrapper.getVolume(), wrapper.getRange(), wrapper.getPitch()); audio.startSound(); return audio; } 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 21dc8448a..e137eda14 100644 --- a/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java +++ b/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java @@ -5,7 +5,7 @@ import java.util.List; import org.lwjgl.input.Mouse; import com.hbm.config.GeneralConfig; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; @@ -140,7 +140,7 @@ public class ItemEnergyGunBase extends ItemGunBase implements IBatteryItem { protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { - EntityBulletBase bullet = new EntityBulletBase(world, config, player); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, config, player); world.spawnEntityInWorld(bullet); if(this.mainConfig.animations.containsKey(AnimType.CYCLE) && player instanceof EntityPlayerMP) diff --git a/src/main/java/com/hbm/lib/HbmChestContents.java b/src/main/java/com/hbm/lib/HbmChestContents.java index 185495790..812a66848 100644 --- a/src/main/java/com/hbm/lib/HbmChestContents.java +++ b/src/main/java/com/hbm/lib/HbmChestContents.java @@ -1,16 +1,20 @@ package com.hbm.lib; +import java.util.Random; + import com.hbm.blocks.ModBlocks; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; import com.hbm.items.ItemAmmoEnums.AmmoFatman; import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemBreedingRod.*; +import com.hbm.items.machine.ItemBreedingRod.BreedingRodType; import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; -import com.hbm.items.special.ItemBookLore.BookLoreType; +import com.hbm.items.special.ItemBookLore; +import com.hbm.items.tool.ItemBlowtorch; import net.minecraft.init.Items; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.util.WeightedRandomChestContent; public class HbmChestContents { @@ -30,8 +34,6 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.ammo_20gauge, 0, 2, 6, 3), new WeightedRandomChestContent(ModItems.casing_9, 0, 4, 10, 3), new WeightedRandomChestContent(ModItems.casing_50, 0, 4, 10, 3), - new WeightedRandomChestContent(ModItems.primer_9, 0, 4, 10, 3), - new WeightedRandomChestContent(ModItems.primer_50, 0, 4, 10, 3), new WeightedRandomChestContent(ModItems.cordite, 0, 4, 6, 5), new WeightedRandomChestContent(ModItems.battery_generic, 0, 1, 1, 4), new WeightedRandomChestContent(ModItems.battery_advanced, 0, 1, 1, 2), @@ -136,12 +138,8 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.nugget_pu240, 0, 3, 8, 5), new WeightedRandomChestContent(ModItems.nugget_neptunium, 0, 1, 4, 3), new WeightedRandomChestContent(ModItems.rod, BreedingRodType.U238.ordinal(), 1, 1, 3), - new WeightedRandomChestContent(ModItems.rod, BreedingRodType.NP237.ordinal(), 1, 1, 4), - new WeightedRandomChestContent(ModItems.rod, BreedingRodType.RGP.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.rod_dual, BreedingRodType.U238.ordinal(), 1, 1, 3), - new WeightedRandomChestContent(ModItems.rod_dual, BreedingRodType.RGP.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.rod_quad, BreedingRodType.U238.ordinal(), 1, 1, 3), - new WeightedRandomChestContent(ModItems.rod_quad, BreedingRodType.RGP.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.bottle_quantum, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.gas_mask_m65, 60, 1, 1, 5), new WeightedRandomChestContent(ModItems.hazmat_kit, 0, 1, 1, 1), @@ -150,17 +148,14 @@ public class HbmChestContents { public static WeightedRandomChestContent[] nuclearFuel = new WeightedRandomChestContent[] { new WeightedRandomChestContent(ModItems.billet_uranium, 0, 1, 4, 4), - new WeightedRandomChestContent(ModItems.billet_pu_mix, 0, 1, 2, 4), new WeightedRandomChestContent(ModItems.billet_th232, 0, 1, 3, 3), new WeightedRandomChestContent(ModItems.billet_uranium_fuel, 0, 1, 3, 5), new WeightedRandomChestContent(ModItems.billet_mox_fuel, 0, 1, 3, 5), - new WeightedRandomChestContent(ModItems.billet_plutonium_fuel, 0, 1, 3, 4), new WeightedRandomChestContent(ModItems.billet_thorium_fuel, 0, 1, 3, 3), new WeightedRandomChestContent(ModItems.billet_ra226be, 0, 1, 2, 2), new WeightedRandomChestContent(ModItems.billet_beryllium, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.nugget_u233, 0, 1, 1, 1), - new WeightedRandomChestContent(ModItems.nugget_u235, 0, 1, 1, 1), - new WeightedRandomChestContent(ModItems.nugget_pu239, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.nugget_uranium_fuel, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.rod_zirnox_empty, 0, 1, 3, 3), new WeightedRandomChestContent(ModItems.ingot_graphite, 0, 1, 4, 3), new WeightedRandomChestContent(ModItems.pile_rod_uranium, 0, 2, 5, 3), @@ -172,15 +167,11 @@ public class HbmChestContents { public static WeightedRandomChestContent[] nuclear = new WeightedRandomChestContent[] { new WeightedRandomChestContent(ModItems.nugget_u235, 0, 3, 12, 5), new WeightedRandomChestContent(ModItems.nugget_pu238, 0, 3, 12, 5), - new WeightedRandomChestContent(ModItems.nugget_pu239, 0, 3, 12, 5), + new WeightedRandomChestContent(ModItems.nugget_ra226, 0, 3, 6, 5), new WeightedRandomChestContent(ModItems.rod, BreedingRodType.U235.ordinal(), 1, 1, 3), - new WeightedRandomChestContent(ModItems.rod, BreedingRodType.PU239.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.rod_dual, BreedingRodType.U235.ordinal(), 1, 1, 3), - new WeightedRandomChestContent(ModItems.rod_dual, BreedingRodType.PU239.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.rod_quad, BreedingRodType.U235.ordinal(), 1, 1, 3), - new WeightedRandomChestContent(ModItems.rod_quad, BreedingRodType.PU239.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.rod_zirnox, EnumZirnoxType.URANIUM_FUEL.ordinal(), 1, 1, 4), - new WeightedRandomChestContent(ModItems.rod_zirnox, EnumZirnoxType.PLUTONIUM_FUEL.ordinal(), 1, 1, 4), new WeightedRandomChestContent(ModItems.rod_zirnox, EnumZirnoxType.MOX_FUEL.ordinal(), 1, 1, 4), new WeightedRandomChestContent(ModItems.rod_zirnox, EnumZirnoxType.LITHIUM.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.rod_zirnox, EnumZirnoxType.THORIUM_FUEL.ordinal(), 1, 1, 3), @@ -254,7 +245,7 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.powder_niobium, 0, 1, 1, 1), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.fusion_conductor), 0, 2, 4, 5), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.fusion_heater), 0, 1, 3, 5), - new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.reactor_element), 0, 1, 2, 5), + new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.pwr_fuel), 0, 1, 2, 5), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.block_tungsten), 0, 3, 8, 5), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.red_wire_coated), 0, 4, 8, 5), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.red_cable), 0, 8, 16, 5) }; @@ -275,11 +266,13 @@ public class HbmChestContents { public static WeightedRandomChestContent[] vault1 = new WeightedRandomChestContent[] { new WeightedRandomChestContent(Items.gold_ingot, 0, 3, 14, 1), + new WeightedRandomChestContent(ModItems.gun_uac_pistol, 0, 1, 1, 2), new WeightedRandomChestContent(ModItems.pin, 0, 8, 8, 1), new WeightedRandomChestContent(ModItems.gun_calamity, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.bottle_quantum, 0, 1, 3, 1), new WeightedRandomChestContent(ModItems.ingot_advanced_alloy, 0, 4, 12, 1), new WeightedRandomChestContent(ModItems.ammo_50bmg, 0, 24, 48, 1), + new WeightedRandomChestContent(ModItems.ammo_45, 0, 48, 64, 2), new WeightedRandomChestContent(ModItems.circuit_red_copper, 0, 6, 12, 1), new WeightedRandomChestContent(ModItems.gas_mask_m65, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.grenade_if_he, 0, 1, 1, 1), @@ -366,15 +359,79 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.ink, 0, 1, 1, 1), //make that mf rare; 1:555 weight }; - /** ITEMBOOKLORE ARRAYS */ - //might make a wrapper class for this, if game-state knowledge using the nbt system becomes that relevant - public final static BookLoreType[] books_office_sch = new BookLoreType[] { - BookLoreType.RESIGNATION_NOTE, - BookLoreType.MEMO_STOCKS, - BookLoreType.MEMO_SCHRAB_GSA, - BookLoreType.MEMO_SCHRAB_RD, - BookLoreType.MEMO_SCHRAB_NUKE, + public static WeightedRandomChestContent[] solidFuel = new WeightedRandomChestContent[] { + new WeightedRandomChestContent(ModItems.solid_fuel, 0, 1, 5, 1), + new WeightedRandomChestContent(ModItems.solid_fuel_presto, 0, 1, 2, 2), + new WeightedRandomChestContent(ModItems.ball_dynamite, 0, 1, 4, 2), + new WeightedRandomChestContent(Items.redstone, 0, 1, 3, 1), + new WeightedRandomChestContent(ModItems.niter, 0, 1, 3, 1) }; + public static WeightedRandomChestContent[] labVault = new WeightedRandomChestContent[] { + new WeightedRandomChestContent(ItemBlowtorch.getEmptyTool(ModItems.blowtorch), 1, 1, 4), + new WeightedRandomChestContent(ModItems.chemistry_set, 0, 1, 1, 15), + new WeightedRandomChestContent(ModItems.screwdriver, 0, 1, 1, 10), + new WeightedRandomChestContent(ModItems.nugget_mercury, 0, 1, 1, 3), + new WeightedRandomChestContent(ModItems.morning_glory, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.filter_coal, 0, 1, 1, 5), + new WeightedRandomChestContent(ModItems.dust, 0, 1, 3, 25), + new WeightedRandomChestContent(Items.paper, 0, 1, 2, 15), + new WeightedRandomChestContent(ModItems.cell_empty, 0, 1, 1, 5), + new WeightedRandomChestContent(Items.glass_bottle, 0, 1, 1, 5), + new WeightedRandomChestContent(ModItems.powder_iodine, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.powder_bromine, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.powder_cobalt, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.powder_neodymium, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.powder_boron, 0, 1, 1, 1), + }; + public static WeightedRandomChestContent[] lockersVault = new WeightedRandomChestContent[] { + new WeightedRandomChestContent(ModItems.robes_helmet, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.robes_plate, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.ammo_45, 0, 48, 64, 2), + new WeightedRandomChestContent(ModItems.gun_uac_pistol, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.robes_legs, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.robes_boots, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.jackt, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.jackt2, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.gas_mask_m65, 0, 1, 1, 2), + new WeightedRandomChestContent(ModItems.gas_mask_mono, 0, 1, 1, 2), + new WeightedRandomChestContent(ModItems.goggles, 0, 1, 1, 2), + new WeightedRandomChestContent(ModItems.gas_mask_filter, 0, 1, 1, 4), + new WeightedRandomChestContent(ModItems.flame_opinion, 0, 1, 3, 5), + new WeightedRandomChestContent(ModItems.flame_conspiracy, 0, 1, 3, 5), + new WeightedRandomChestContent(ModItems.flame_politics, 0, 1, 3, 5), + new WeightedRandomChestContent(ModItems.cigarette, 0, 1, 8, 5), + new WeightedRandomChestContent(ModItems.canteen_13, 0, 1, 1, 2), + new WeightedRandomChestContent(ModItems.armor_polish, 0, 1, 1, 3), + new WeightedRandomChestContent(ModItems.gun_kit_1, 0, 1, 1, 3), + new WeightedRandomChestContent(ModItems.rag, 0, 1, 3, 5), + new WeightedRandomChestContent(Items.paper, 0, 1, 6, 7), + new WeightedRandomChestContent(Items.clock, 0, 1, 1, 3), + new WeightedRandomChestContent(Items.book, 0, 1, 5, 10), + new WeightedRandomChestContent(Items.experience_bottle, 0, 1, 3, 1), + }; + + /** ITEMBOOKLORE SHIT */ + //one downside of all this huge flexibility, make a wrapper if it's too annoying + public static ItemStack generateOfficeBook(Random rand) { //TODO rework this lore in general + String key; + int pages; + switch(rand.nextInt(10)) { + case 0: key = "resignation_note"; pages = 3; break; + case 1: key = "memo_stocks"; pages = 1; break; + case 2: key = "memo_schrab_gsa"; pages = 2; break; + case 3: key = "memo_schrab_rd"; pages = 4; break; + case 4: key = "memo_schrab_nuke"; pages = 3; break; + case 5: key = "bf_bomb_1"; pages = 4; break; + case 6: key = "bf_bomb_2"; pages = 6; break; + case 7: key = "bf_bomb_3"; pages = 6; break; + case 8: key = "bf_bomb_4"; pages = 5; break; + case 9: key = "bf_bomb_5"; pages = 9; break; + default: + return null; + } + + return ItemBookLore.createBook(key, pages, 0x6BC8FF, 0x0A0A0A); + } } diff --git a/src/main/java/com/hbm/lib/HbmCollection.java b/src/main/java/com/hbm/lib/HbmCollection.java index a0d1efc1e..6c2e7df23 100644 --- a/src/main/java/com/hbm/lib/HbmCollection.java +++ b/src/main/java/com/hbm/lib/HbmCollection.java @@ -18,7 +18,7 @@ public class HbmCollection { public static final Set ExplosiveType = ImmutableSet.of(AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.CON_HEAVY_WEAR); public static final Set DUType = ImmutableSet.of(AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.NEU_HEAVY_METAL, AmmoItemTrait.CON_HEAVY_WEAR); public static final Set StarmetalType = ImmutableSet.of(AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.NEU_STARMETAL, AmmoItemTrait.CON_HEAVY_WEAR); - public static final Set ChlorophyteType = ImmutableSet.of(AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_WEAR, AmmoItemTrait.NEU_CHLOROPHYTE, AmmoItemTrait.NEU_HOMING, AmmoItemTrait.CON_PENETRATION); + public static final Set ChlorophyteType = ImmutableSet.of(AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_WEAR, AmmoItemTrait.PRO_PENETRATION, AmmoItemTrait.NEU_CHLOROPHYTE, AmmoItemTrait.NEU_HOMING, AmmoItemTrait.CON_SPEED); /// BULLET COLLECTIONS // SHOTGUNS @@ -70,7 +70,7 @@ public class HbmCollection { /** MIRV MINI-NUKES **/ public static final List fatmanMIRV = ImmutableList.of(BulletConfigSyncingUtil.NUKE_MIRV_NORMAL, BulletConfigSyncingUtil.NUKE_MIRV_LOW, BulletConfigSyncingUtil.NUKE_MIRV_HIGH, BulletConfigSyncingUtil.NUKE_MIRV_SAFE, BulletConfigSyncingUtil.NUKE_MIRV_SPECIAL); /** 40MM GRENADE **/ - public static final List grenade = ImmutableList.of(BulletConfigSyncingUtil.GRENADE_NORMAL, BulletConfigSyncingUtil.GRENADE_HE, BulletConfigSyncingUtil.GRENADE_INCENDIARY, BulletConfigSyncingUtil.GRENADE_PHOSPHORUS, BulletConfigSyncingUtil.GRENADE_CHEMICAL, BulletConfigSyncingUtil.GRENADE_CONCUSSION, BulletConfigSyncingUtil.GRENADE_FINNED, BulletConfigSyncingUtil.GRENADE_SLEEK, BulletConfigSyncingUtil.GRENADE_NUCLEAR, BulletConfigSyncingUtil.GRENADE_TRACER, BulletConfigSyncingUtil.GRENADE_KAMPF); + public static final List grenade = ImmutableList.of(BulletConfigSyncingUtil.GRENADE_NORMAL, BulletConfigSyncingUtil.GRENADE_HE, BulletConfigSyncingUtil.GRENADE_INCENDIARY, BulletConfigSyncingUtil.GRENADE_PHOSPHORUS, BulletConfigSyncingUtil.GRENADE_CHEMICAL, BulletConfigSyncingUtil.GRENADE_CONCUSSION, BulletConfigSyncingUtil.GRENADE_FINNED, BulletConfigSyncingUtil.GRENADE_SLEEK, BulletConfigSyncingUtil.GRENADE_NUCLEAR, BulletConfigSyncingUtil.GRENADE_TRACER, BulletConfigSyncingUtil.GRENADE_KAMPF, BulletConfigSyncingUtil.GRENADE_LEADBURSTER); /** 84MM ROCKET **/ public static final List rocket = ImmutableList.of(BulletConfigSyncingUtil.ROCKET_NORMAL, BulletConfigSyncingUtil.ROCKET_HE, BulletConfigSyncingUtil.ROCKET_INCENDIARY, BulletConfigSyncingUtil.ROCKET_PHOSPHORUS, BulletConfigSyncingUtil.ROCKET_SHRAPNEL, BulletConfigSyncingUtil.ROCKET_EMP, BulletConfigSyncingUtil.ROCKET_GLARE, BulletConfigSyncingUtil.ROCKET_TOXIC, BulletConfigSyncingUtil.ROCKET_CANISTER, BulletConfigSyncingUtil.ROCKET_SLEEK, BulletConfigSyncingUtil.ROCKET_NUKE, BulletConfigSyncingUtil.ROCKET_CHAINSAW); @@ -95,6 +95,8 @@ public class HbmCollection { COMBINE, /**Cube 2: Sauerbraten**/ CUBE, + /**Deep Rock Galactic**/ + DRG, /**Enzinger Union**/ ENZINGER, /**Equestria Missile Systems**/ @@ -131,8 +133,10 @@ public class HbmCollection { METRO, /**MWT Prototype Labs**/ MWT, + /**Naval Air Weapons Station**/ + NAWS, /**Erfurter Maschinenfabrik Geipel**/ - NAZI, + ERFURT, /**No manufacturer, just puts "-" **/ NONE, /**OxfordEM Technologies**/ diff --git a/src/main/java/com/hbm/lib/HbmWorld.java b/src/main/java/com/hbm/lib/HbmWorld.java index 44bea3667..4a24a192f 100644 --- a/src/main/java/com/hbm/lib/HbmWorld.java +++ b/src/main/java/com/hbm/lib/HbmWorld.java @@ -1,14 +1,17 @@ package com.hbm.lib; -import com.hbm.world.worldgen.MapGenNTMFeatures; -import com.hbm.world.worldgen.NTMWorldGenerator; -import com.hbm.world.worldgen.components.CivilianFeatures; -import com.hbm.world.worldgen.components.OfficeFeatures; -import com.hbm.world.worldgen.components.RuinFeatures; +import com.hbm.world.gen.MapGenNTMFeatures; +import com.hbm.world.gen.NTMWorldGenerator; +import com.hbm.world.gen.component.BunkerComponents; +import com.hbm.world.gen.component.CivilianFeatures; +import com.hbm.world.gen.component.OfficeFeatures; +import com.hbm.world.gen.component.RuinFeatures; +import com.hbm.world.gen.component.BunkerComponents.BunkerStart; import cpw.mods.fml.common.IWorldGenerator; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.world.gen.structure.MapGenStructureIO; +import net.minecraftforge.common.MinecraftForge; public class HbmWorld { @@ -21,10 +24,14 @@ public class HbmWorld { //MapGenStructureIO.registerStructure(StructureStartTest.class, "HFR_STRUCTURE"); //MapGenStructureIO.func_143031_a(StructureComponentTest.class, "HFR_COMPONENT"); MapGenStructureIO.registerStructure(MapGenNTMFeatures.Start.class, "NTMFeatures"); + MapGenStructureIO.registerStructure(BunkerStart.class, "NTMBunker"); registerNTMFeatures(); registerWorldGen(new HbmWorldGen(), 1); - registerWorldGen(new NTMWorldGenerator(), 1); //Ideally, move everything over from HbmWorldGen to NTMWorldGenerator + + NTMWorldGenerator worldGenerator = new NTMWorldGenerator(); + registerWorldGen(worldGenerator, 1); //Ideally, move everything over from HbmWorldGen to NTMWorldGenerator + MinecraftForge.EVENT_BUS.register(worldGenerator); //registerWorldGen(new WorldGenTest(), 1); } @@ -37,5 +44,6 @@ public class HbmWorld { CivilianFeatures.registerComponents(); OfficeFeatures.registerComponents(); RuinFeatures.registerComponents(); + BunkerComponents.registerComponents(); } } diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 6d9f43fb0..d8019a7ea 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -7,20 +7,21 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType; import com.hbm.config.GeneralConfig; +import com.hbm.config.MobConfig; import com.hbm.config.WorldConfig; -import com.hbm.inventory.FluidStack; -import com.hbm.inventory.fluid.Fluids; +import com.hbm.handler.MultiblockHandlerXR; import com.hbm.items.ModItems; -import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.main.MainRegistry; import com.hbm.saveddata.TomSaveData; +import com.hbm.tileentity.deco.TileEntityLanternBehemoth; import com.hbm.tileentity.machine.storage.TileEntitySafe; import com.hbm.tileentity.machine.storage.TileEntitySoyuzCapsule; +import com.hbm.util.LootGenerator; +import com.hbm.util.WeightedRandomGeneric; import com.hbm.world.dungeon.AncientTomb; import com.hbm.world.dungeon.Antenna; import com.hbm.world.dungeon.ArcticVault; import com.hbm.world.dungeon.Barrel; -import com.hbm.world.dungeon.Bunker; import com.hbm.world.dungeon.CrashedVertibird; import com.hbm.world.dungeon.DesertAtom001; import com.hbm.world.dungeon.Factory; @@ -32,10 +33,12 @@ import com.hbm.world.dungeon.Silo; import com.hbm.world.dungeon.Spaceship; import com.hbm.world.dungeon.Vertibird; import com.hbm.world.feature.BedrockOre; +import com.hbm.world.feature.BedrockOre.BedrockOreDefinition; import com.hbm.world.feature.DepthDeposit; import com.hbm.world.feature.Dud; import com.hbm.world.feature.Geyser; import com.hbm.world.feature.GeyserLarge; +import com.hbm.world.feature.GlyphidHive; import com.hbm.world.feature.Meteorite; import com.hbm.world.feature.OilBubble; import com.hbm.world.feature.OilSandBubble; @@ -49,6 +52,7 @@ import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntityChest; import net.minecraft.tileentity.TileEntitySkull; +import net.minecraft.util.WeightedRandom; import net.minecraft.util.WeightedRandomChestContent; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; @@ -57,7 +61,9 @@ import net.minecraft.world.biome.BiomeGenForest; import net.minecraft.world.biome.BiomeGenJungle; import net.minecraft.world.biome.BiomeGenRiver; import net.minecraft.world.chunk.IChunkProvider; +import net.minecraft.world.gen.ChunkProviderFlat; import net.minecraft.world.gen.feature.WorldGenMinable; +import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.common.IWorldGenerator; public class HbmWorldGen implements IWorldGenerator { @@ -115,21 +121,22 @@ public class HbmWorldGen implements IWorldGenerator { if(WorldConfig.alexandriteSpawn > 0 && rand.nextInt(WorldConfig.alexandriteSpawn) == 0) DungeonToolbox.generateOre(world, rand, i, j, 1, 3, 10, 5, ModBlocks.ore_alexandrite); - DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.6D, ModBlocks.cluster_depth_iron, rand, 24); - DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.6D, ModBlocks.cluster_depth_titanium, rand, 32); - DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.6D, ModBlocks.cluster_depth_tungsten, rand, 32); - DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_cinnebar, rand, 16); - DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_zirconium, rand, 16); - DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_borax, rand, 16); - if(WorldConfig.overworldOre) { + + DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.6D, ModBlocks.cluster_depth_iron, rand, 24); + DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.6D, ModBlocks.cluster_depth_titanium, rand, 32); + DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.6D, ModBlocks.cluster_depth_tungsten, rand, 32); + DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_cinnebar, rand, 16); + DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_zirconium, rand, 16); + DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_borax, rand, 16); + DungeonToolbox.generateOre(world, rand, i, j, 25, 6, 30, 10, ModBlocks.ore_gneiss_iron, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, 10, 6, 30, 10, ModBlocks.ore_gneiss_gold, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.uraniumSpawn * 3, 6, 30, 10, ModBlocks.ore_gneiss_uranium, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.copperSpawn * 3, 6, 30, 10, ModBlocks.ore_gneiss_copper, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.asbestosSpawn * 3, 6, 30, 10, ModBlocks.ore_gneiss_asbestos, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.lithiumSpawn, 6, 30, 10, ModBlocks.ore_gneiss_lithium, ModBlocks.stone_gneiss); - DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.rareSpawn, 6, 30, 10, ModBlocks.ore_gneiss_asbestos, ModBlocks.stone_gneiss); + DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.rareSpawn, 6, 30, 10, ModBlocks.ore_gneiss_rare, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.gassshaleSpawn * 3, 10, 30, 10, ModBlocks.ore_gneiss_gas, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.uraniumSpawn, 5, 5, 20, ModBlocks.ore_uranium); @@ -154,18 +161,22 @@ public class HbmWorldGen implements IWorldGenerator { DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.aluminiumClusterSpawn, 6, 15, 35, ModBlocks.cluster_aluminium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.copperClusterSpawn, 6, 15, 20, ModBlocks.cluster_copper); - //DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.hematiteSpawn, 10, 4, 80, ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()); - DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.malachiteSpawn, 10, 6, 40, ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()); + DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.malachiteSpawn, 16, 6, 40, ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.limestoneSpawn, 12, 25, 30, ModBlocks.stone_resource, EnumStoneType.LIMESTONE.ordinal()); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.IRON, 1, WorldConfig.bedrockIronSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.COPPER, 1, WorldConfig.bedrockCopperSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.BORAX, new FluidStack(Fluids.SULFURIC_ACID, 500), 3, WorldConfig.bedrockBoraxSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.ASBESTOS, 2, WorldConfig.bedrockAsbestosSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.NIOBIUM, new FluidStack(Fluids.ACID, 1_000), 2, WorldConfig.bedrockNiobiumSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.TITANIUM, new FluidStack(Fluids.SULFURIC_ACID, 500), 2, WorldConfig.bedrockTitaniumSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.TUNGSTEN, new FluidStack(Fluids.ACID, 1_000), 2, WorldConfig.bedrockTungstenSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.GOLD, 1, WorldConfig.bedrockGoldSpawn); + if(rand.nextInt(3) == 0) { + WeightedRandomGeneric item = (WeightedRandomGeneric) WeightedRandom.getRandomItem(rand, BedrockOre.weightedOres); + BedrockOreDefinition def = item.get(); + + if(GeneralConfig.enable528 && GeneralConfig.enable528BedrockReplacement) { + BedrockOreDefinition replacement = BedrockOre.replacements.get(def.id); + if(replacement != null) def = replacement; + } + + int randPosX = i + rand.nextInt(2) + 8; + int randPosZ = j + rand.nextInt(2) + 8; + BedrockOre.generate(world, randPosX, randPosZ, def.stack, def.acid, def.color, def.tier); + } for(int k = 0; k < WorldConfig.randomSpawn; k++) { BlockMotherOfAllOres.shuffleOverride(rand); @@ -217,8 +228,22 @@ public class HbmWorldGen implements IWorldGenerator { (new WorldGenMinable(ModBlocks.ore_australium, 50)).generate(world, rand, randPosX, randPosY, randPosZ); } } + + boolean enableDungeons = true; + + if(world.getChunkProvider() instanceof ChunkProviderFlat) { + ChunkProviderFlat provider = (ChunkProviderFlat) world.getChunkProvider(); + enableDungeons = provider.hasDungeons; + } - if(GeneralConfig.enableDungeons && world.provider.isSurfaceWorld()) { + if(GeneralConfig.enableDungeons && world.provider.dimensionId == 0 && enableDungeons) { + + if(MobConfig.enableHives && rand.nextInt(MobConfig.hiveSpawn) == 0) { + int x = i + rand.nextInt(16) + 8; + int z = j + rand.nextInt(16) + 8; + int y = world.getHeightValue(x, z); + if(world.getBlock(x, y - 1, z).isNormalCube()) GlyphidHive.generate(world, x, y, z, rand); + } if(biome == BiomeGenBase.plains || biome == BiomeGenBase.desert) { if(WorldConfig.radioStructure > 0 && rand.nextInt(WorldConfig.radioStructure) == 0) { @@ -316,14 +341,6 @@ public class HbmWorldGen implements IWorldGenerator { } } - if(WorldConfig.bunkerStructure > 0 && rand.nextInt(WorldConfig.bunkerStructure) == 0) { - int x = i + rand.nextInt(16); - int z = j + rand.nextInt(16); - int y = world.getHeightValue(x, z); - - new Bunker().generate(world, rand, x, y, z); - } - if(WorldConfig.siloStructure > 0 && rand.nextInt(WorldConfig.siloStructure) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); @@ -390,6 +407,29 @@ public class HbmWorldGen implements IWorldGenerator { } } + if(rand.nextInt(2000) == 0) { + int x = i + rand.nextInt(16); + int z = j + rand.nextInt(16); + int y = world.getHeightValue(x, z); + + if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z) && world.getBlock(x, y, z).isReplaceable(world, x, y, z)) { + + world.setBlock(x, y, z, ModBlocks.lantern_behemoth, 12, 3); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {4, 0, 0, 0, 0, 0}, ModBlocks.lantern_behemoth, ForgeDirection.NORTH); + + TileEntityLanternBehemoth lantern = (TileEntityLanternBehemoth) world.getTileEntity(x, y, z); + lantern.isBroken = true; + + if(rand.nextInt(2) == 0) { + LootGenerator.setBlock(world, x, y, z - 2); + LootGenerator.lootBooklet(world, x, y, z - 2); + } + + if(GeneralConfig.enableDebugMode) + MainRegistry.logger.info("[Debug] Successfully spawned lantern at " + x + " " + (y) + " " + z); + } + } + if(GeneralConfig.enable528 && GeneralConfig.enable528BosniaSimulator && rand.nextInt(16) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); @@ -630,7 +670,7 @@ public class HbmWorldGen implements IWorldGenerator { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); int y = world.getHeightValue(x, z) - rand.nextInt(10); - (new Meteorite()).generate(world, rand, x, y, z, false, true, false); + if(y > 1) (new Meteorite()).generate(world, rand, x, y, z, false, false, false); } if (GeneralConfig.enableNITAN) { @@ -723,10 +763,18 @@ public class HbmWorldGen implements IWorldGenerator { if(GeneralConfig.enablePlutoniumOre) DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.netherPlutoniumSpawn, 4, 0, 127, ModBlocks.ore_nether_plutonium, Blocks.netherrack); - } + + if(rand.nextInt(10) == 0) { + WeightedRandomGeneric item = (WeightedRandomGeneric) WeightedRandom.getRandomItem(rand, BedrockOre.weightedOresNether); + BedrockOreDefinition def = item.get(); + int randPosX = i + rand.nextInt(2) + 8; + int randPosZ = j + rand.nextInt(2) + 8; + BedrockOre.generate(world, randPosX, randPosZ, def.stack, def.acid, def.color, def.tier, ModBlocks.stone_depth_nether); + } - DepthDeposit.generateConditionNether(world, i, 0, 3, j, 7, 0.6D, ModBlocks.ore_depth_nether_neodymium, rand, 16); - DepthDeposit.generateConditionNether(world, i, 125, 3, j, 7, 0.6D, ModBlocks.ore_depth_nether_neodymium, rand, 16); + DepthDeposit.generateConditionNether(world, i, 0, 3, j, 7, 0.6D, ModBlocks.ore_depth_nether_neodymium, rand, 16); + DepthDeposit.generateConditionNether(world, i, 125, 3, j, 7, 0.6D, ModBlocks.ore_depth_nether_neodymium, rand, 16); + } for(int k = 0; k < 30; k++){ int x = i + rand.nextInt(16); diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index bd96c150b..3cd331dae 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -19,10 +19,6 @@ import com.hbm.items.ModItems; import com.hbm.tileentity.TileEntityProxyBase; import com.hbm.tileentity.TileEntityProxyInventory; import com.hbm.tileentity.conductor.TileEntityFluidDuctSimple; -import com.hbm.tileentity.conductor.TileEntityGasDuct; -import com.hbm.tileentity.conductor.TileEntityGasDuctSolid; -import com.hbm.tileentity.conductor.TileEntityOilDuct; -import com.hbm.tileentity.conductor.TileEntityOilDuctSolid; import com.hbm.tileentity.machine.TileEntityDummy; import api.hbm.energy.IBatteryItem; @@ -37,6 +33,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; @@ -484,102 +481,6 @@ public class Library { ((TileEntityFluidDuctSimple)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact)); } } - if(tileentity instanceof TileEntityGasDuct && ((TileEntityGasDuct)tileentity).type.name().equals(type.name())) - { - if(Library.checkUnionListForFluids(((TileEntityGasDuct)tileentity).uoteab, that)) - { - for(int i = 0; i < ((TileEntityGasDuct)tileentity).uoteab.size(); i++) - { - if(((TileEntityGasDuct)tileentity).uoteab.get(i).source == that) - { - if(((TileEntityGasDuct)tileentity).uoteab.get(i).ticked != newTact) - { - ((TileEntityGasDuct)tileentity).uoteab.get(i).ticked = newTact; - transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x + 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z - 1, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z + 1, that.getTact(), that, worldObj, type); - } - } - } - } else { - ((TileEntityGasDuct)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact)); - } - } - if(tileentity instanceof TileEntityOilDuct && ((TileEntityOilDuct)tileentity).type.name().equals(type.name())) - { - if(Library.checkUnionListForFluids(((TileEntityOilDuct)tileentity).uoteab, that)) - { - for(int i = 0; i < ((TileEntityOilDuct)tileentity).uoteab.size(); i++) - { - if(((TileEntityOilDuct)tileentity).uoteab.get(i).source == that) - { - if(((TileEntityOilDuct)tileentity).uoteab.get(i).ticked != newTact) - { - ((TileEntityOilDuct)tileentity).uoteab.get(i).ticked = newTact; - transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x + 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z - 1, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z + 1, that.getTact(), that, worldObj, type); - } - } - } - } else { - ((TileEntityOilDuct)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact)); - } - } - if(tileentity instanceof TileEntityGasDuctSolid && ((TileEntityGasDuctSolid)tileentity).type.name().equals(type.name())) - { - if(Library.checkUnionListForFluids(((TileEntityGasDuctSolid)tileentity).uoteab, that)) - { - for(int i = 0; i < ((TileEntityGasDuctSolid)tileentity).uoteab.size(); i++) - { - if(((TileEntityGasDuctSolid)tileentity).uoteab.get(i).source == that) - { - if(((TileEntityGasDuctSolid)tileentity).uoteab.get(i).ticked != newTact) - { - ((TileEntityGasDuctSolid)tileentity).uoteab.get(i).ticked = newTact; - transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x + 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z - 1, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z + 1, that.getTact(), that, worldObj, type); - } - } - } - } else { - ((TileEntityGasDuctSolid)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact)); - } - } - if(tileentity instanceof TileEntityOilDuctSolid && ((TileEntityOilDuctSolid)tileentity).type.name().equals(type.name())) - { - if(Library.checkUnionListForFluids(((TileEntityOilDuctSolid)tileentity).uoteab, that)) - { - for(int i = 0; i < ((TileEntityOilDuctSolid)tileentity).uoteab.size(); i++) - { - if(((TileEntityOilDuctSolid)tileentity).uoteab.get(i).source == that) - { - if(((TileEntityOilDuctSolid)tileentity).uoteab.get(i).ticked != newTact) - { - ((TileEntityOilDuctSolid)tileentity).uoteab.get(i).ticked = newTact; - transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x + 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z - 1, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z + 1, that.getTact(), that, worldObj, type); - } - } - } - } else { - ((TileEntityOilDuctSolid)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact)); - } - } } if(tileentity instanceof IFluidAcceptor && newTact && ((IFluidAcceptor)tileentity).getMaxFluidFillForReceive(type) > 0 && @@ -628,7 +529,18 @@ public class Library { return flag; } - + + // Added for sake of doors + // Original: Drillgon200: https://thebookofshaders.com/glossary/?search=smoothstep + public static double smoothstep(double t, double edge0, double edge1){ + t = MathHelper.clamp_double((t - edge0) / (edge1 - edge0), 0.0, 1.0); + return t * t * (3.0 - 2.0 * t); + } + public static float smoothstep(float t, float edge0, float edge1){ + t = MathHelper.clamp_float((t - edge0) / (edge1 - edge0), 0.0F, 1.0F); + return t * t * (3.0F - 2.0F * t); + } + public static boolean isObstructed(World world, double x, double y, double z, double a, double b, double c) { MovingObjectPosition pos = world.rayTraceBlocks(Vec3.createVectorHelper(x, y, z), Vec3.createVectorHelper(a, b, c)); return pos != null; diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index dcc814ea7..8803032ed 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4585)"; + public static final String VERSION = "1.0.27 BETA (4809)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index d366c31f2..2a8e88ddb 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -19,6 +19,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -48,6 +49,7 @@ import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.machine.MachineFan.TileEntityFan; +import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; import com.hbm.entity.cart.*; import com.hbm.entity.effect.*; @@ -55,11 +57,19 @@ import com.hbm.entity.grenade.*; import com.hbm.entity.item.*; import com.hbm.entity.logic.*; import com.hbm.entity.missile.*; +import com.hbm.entity.missile.EntityMissileTier0.*; +import com.hbm.entity.missile.EntityMissileTier1.*; +import com.hbm.entity.missile.EntityMissileTier2.*; +import com.hbm.entity.missile.EntityMissileTier3.*; +import com.hbm.entity.missile.EntityMissileTier4.*; import com.hbm.entity.mob.*; import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; +import com.hbm.entity.train.*; +import com.hbm.entity.train.EntityRailCarBase.BoundingBoxDummyEntity; +import com.hbm.entity.train.EntityRailCarRidable.SeatDummyEntity; import com.hbm.handler.CasingEjector; import com.hbm.handler.HbmKeybinds; import com.hbm.handler.ImpactWorldHandler; @@ -82,6 +92,7 @@ import com.hbm.render.item.*; import com.hbm.render.item.block.*; import com.hbm.render.item.weapon.*; import com.hbm.render.loader.HmfModelLoader; +import com.hbm.render.model.ModelPigeon; import com.hbm.render.tileentity.*; import com.hbm.render.util.MissilePart; import com.hbm.render.util.RenderInfoSystem; @@ -164,6 +175,8 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBobble.class, new RenderBobble()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySnowglobe.class, new RenderSnowglobe()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEmitter.class, new RenderEmitter()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLantern.class, new RenderLantern()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLanternBehemoth.class, new RenderLanternBehemoth()); //bombs ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeGadget.class, new RenderNukeGadget()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeBoy.class, new RenderNukeBoy()); @@ -205,8 +218,11 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePuF6Tank.class, new RenderPuF6Tank()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineIGenerator.class, new RenderIGenerator()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCyclotron.class, new RenderCyclotron()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineExposureChamber.class, new RenderExposureChamber()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOilWell.class, new RenderDerrick()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyBrick.class, new RenderChimneyBrick()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyIndustrial.class, new RenderChimneyIndustrial()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningDrill.class, new RenderMiningDrill()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningLaser.class, new RenderLaserMiner()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssembler.class, new RenderAssembler()); @@ -226,7 +242,8 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePress.class, new RenderPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineEPress.class, new RenderEPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadGen.class, new RenderRadGen()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadar.class, new RenderRadar()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarScreen.class, new RenderRadarScreen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSeleniumEngine.class, new RenderSelenium()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorResearch.class, new RenderSmallReactor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineShredderLarge.class, new RenderMachineShredder()); @@ -246,10 +263,12 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChungus.class, new RenderChungus()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTowerLarge.class, new RenderLargeTower()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTowerSmall.class, new RenderSmallTower()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCondenserPowered.class, new RenderCondenser()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDeuteriumTower.class, new RenderDeuteriumTower()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticCracker.class, new RenderCatalyticCracker()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLiquefactor.class, new RenderLiquefactor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSolidifier.class, new RenderSolidifier()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCompressor.class, new RenderCompressor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadiolysis.class, new RenderRadiolysis()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityElectrolyser.class, new RenderElectrolyser()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceIron.class, new RenderFurnaceIron()); @@ -257,6 +276,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceCombination.class, new RenderFurnaceCombination()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterFirebox.class, new RenderFirebox()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterOven.class, new RenderHeatingOven()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAshpit.class, new RenderAshpit()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterOilburner.class, new RenderOilburner()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterElectric.class, new RenderElectricHeater()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterHeatex.class, new RenderHeaterHeatex()); @@ -264,6 +284,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySawmill.class, new RenderSawmill()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCrucible.class, new RenderCrucible()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeatBoiler.class, new RenderBoiler()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeatBoilerIndustrial.class, new RenderIndustrialBoiler()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySteamEngine.class, new RenderSteamEngine()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineDiesel.class, new RenderDieselGen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCombustionEngine.class, new RenderCombustionEngine()); @@ -275,6 +296,13 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticReformer.class, new RenderCatalyticReformer()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCoker.class, new RenderCoker()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFan.class, new RenderFan()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPistonInserter.class, new RenderPistonInserter()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConveyorPress.class, new RenderConveyorPress()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadioTelex.class, new RenderTelex()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpSteam.class, new RenderPump()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpElectric.class, new RenderPump()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineArcWelder.class, new RenderArcWelder()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineWoodBurner.class, new RenderWoodBurner()); //Foundry ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry()); @@ -299,8 +327,6 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzLauncher.class, new RenderSoyuzLauncher()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzCapsule.class, new RenderCapsule()); //network - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityOilDuct.class, new RenderOilDuct()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityGasDuct.class, new RenderGasDuct()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFluidDuct.class, new RenderFluidDuct()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRFDuct.class, new RenderRFCable()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylon.class, new RenderPylon()); @@ -318,6 +344,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITERStruct.class, new RenderITERMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPlasmaStruct.class, new RenderPlasmaMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatzStruct.class, new RenderWatzMultiblock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCustomMachine.class, new RenderCustomMachine()); //RBMK ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKControlManual.class, new RenderRBMKControlRod()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKControlAuto.class, new RenderRBMKControlRod()); @@ -513,6 +540,11 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_silver, new ItemRenderWeaponNovac()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_red, new ItemRenderWeaponNovac()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_lunatic_marksman, new ItemRenderLunaticSniper()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_benelli, new ItemRenderBenelli()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_uac_pistol, new ItemRenderUACPistol()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderWeaponCoilgun()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryocannon, new ItemRenderWeaponCryoCannon()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderWeaponCongo()); //multitool MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool()); @@ -536,7 +568,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderSnowball(ModItems.man_core)); RenderingRegistry.registerEntityRenderingHandler(EntitySchrab.class, new RenderFlare()); RenderingRegistry.registerEntityRenderingHandler(EntityBullet.class, new RenderRocket()); - RenderingRegistry.registerEntityRenderingHandler(EntityBulletBase.class, new RenderBullet()); + RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseNT.class, new RenderBullet()); RenderingRegistry.registerEntityRenderingHandler(EntityRainbow.class, new RenderRainbow()); RenderingRegistry.registerEntityRenderingHandler(EntityNightmareBlast.class, new RenderOminousBullet()); RenderingRegistry.registerEntityRenderingHandler(EntityFire.class, new RenderFireball(ModItems.energy_ball)); @@ -581,6 +613,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntitySawblade.class, new RenderSawblade()); RenderingRegistry.registerEntityRenderingHandler(EntityChemical.class, new RenderChemical()); RenderingRegistry.registerEntityRenderingHandler(EntityMist.class, new RenderMist()); + RenderingRegistry.registerEntityRenderingHandler(EntityAcidBomb.class, new RenderSnowball(Items.slime_ball)); //grenades RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeGeneric.class, new RenderSnowball(ModItems.grenade_generic)); RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeStrong.class, new RenderSnowball(ModItems.grenade_strong)); @@ -631,6 +664,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityTestMissile.class, new RenderTestMissile()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileCustom.class, new RenderMissileCustom()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileGeneric.class, new RenderMissileGeneric()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileDecoy.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileAntiBallistic.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileIncendiary.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileCluster.class, new RenderMissileGeneric()); @@ -681,14 +715,26 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMinecartCrate.class, new RenderMinecart()); RenderingRegistry.registerEntityRenderingHandler(EntityMinecartNTM.class, new RenderNeoCart()); RenderingRegistry.registerEntityRenderingHandler(EntityMagnusCartus.class, new RenderMagnusCartus()); + RenderingRegistry.registerEntityRenderingHandler(EntityBoatRubber.class, new RenderBoatRubber()); + //trains + RenderingRegistry.registerEntityRenderingHandler(SeatDummyEntity.class, new RenderEmpty()); + RenderingRegistry.registerEntityRenderingHandler(BoundingBoxDummyEntity.class, new RenderEmpty()); + RenderingRegistry.registerEntityRenderingHandler(TrainCargoTram.class, new RenderTrainCargoTram()); + RenderingRegistry.registerEntityRenderingHandler(TrainCargoTramTrailer.class, new RenderTrainCargoTramTrailer()); + RenderingRegistry.registerEntityRenderingHandler(TrainTunnelBore.class, new RenderTunnelBore()); //items RenderingRegistry.registerEntityRenderingHandler(EntityMovingItem.class, new RenderMovingItem()); RenderingRegistry.registerEntityRenderingHandler(EntityMovingPackage.class, new RenderMovingPackage()); RenderingRegistry.registerEntityRenderingHandler(EntityTNTPrimedBase.class, new RenderTNTPrimedBase()); + RenderingRegistry.registerEntityRenderingHandler(EntityDeliveryDrone.class, new RenderDeliveryDrone()); + RenderingRegistry.registerEntityRenderingHandler(EntityRequestDrone.class, new RenderDeliveryDrone()); + RenderingRegistry.registerEntityRenderingHandler(EntityFallingBlockNT.class, new RenderFallingBlockNT()); //mobs RenderingRegistry.registerEntityRenderingHandler(EntityCreeperNuclear.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor.png").setSwellMod(5F)); RenderingRegistry.registerEntityRenderingHandler(EntityCreeperTainted.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_tainted.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor_taint.png")); RenderingRegistry.registerEntityRenderingHandler(EntityCreeperPhosgene.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_phosgene.png", "textures/entity/creeper/creeper_armor.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperVolatile.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_volatile.png", "textures/entity/creeper/creeper_armor.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperGold.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_gold.png", "textures/entity/creeper/creeper_armor.png")); RenderingRegistry.registerEntityRenderingHandler(EntityHunterChopper.class, new RenderHunterChopper()); RenderingRegistry.registerEntityRenderingHandler(EntityCyberCrab.class, new RenderCyberCrab()); RenderingRegistry.registerEntityRenderingHandler(EntityTeslaCrab.class, new RenderTeslaCrab()); @@ -708,6 +754,17 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntitySiegeSkeleton.class, new RenderSiegeSkeleton()); RenderingRegistry.registerEntityRenderingHandler(EntitySiegeTunneler.class, new RenderSiegeTunneler()); RenderingRegistry.registerEntityRenderingHandler(EntityGhost.class, new RenderGhost()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphid.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBrawler.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBehemoth.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBrenda.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBombardier.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBlaster.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidScout.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidNuclear.class, new RenderGlyphidNuclear()); + RenderingRegistry.registerEntityRenderingHandler(EntityFBIDrone.class, new RenderDrone()); + RenderingRegistry.registerEntityRenderingHandler(EntityPlasticBag.class, new RenderPlasticBag()); + RenderingRegistry.registerEntityRenderingHandler(EntityPigeon.class, new RenderPigeon(new ModelPigeon(), 0.3F)); //"particles" RenderingRegistry.registerEntityRenderingHandler(EntitySmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.smoke1, ModItems.smoke2, ModItems.smoke3, ModItems.smoke4, ModItems.smoke5, ModItems.smoke6, ModItems.smoke7, ModItems.smoke8 })); RenderingRegistry.registerEntityRenderingHandler(EntityBSmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.b_smoke1, ModItems.b_smoke2, ModItems.b_smoke3, ModItems.b_smoke4, ModItems.b_smoke5, ModItems.b_smoke6, ModItems.b_smoke7, ModItems.b_smoke8 })); @@ -764,12 +821,20 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderRTTY()); RenderingRegistry.registerBlockHandler(new RenderDiFurnaceExtension()); RenderingRegistry.registerBlockHandler(new RenderSplitter()); + RenderingRegistry.registerBlockHandler(new RenderCapacitor()); RenderingRegistry.registerBlockHandler(new RenderFoundryBasin()); RenderingRegistry.registerBlockHandler(new RenderFoundryMold()); RenderingRegistry.registerBlockHandler(new RenderFoundryChannel()); RenderingRegistry.registerBlockHandler(new RenderFoundryTank()); RenderingRegistry.registerBlockHandler(new RenderFoundryOutlet()); + + RenderingRegistry.registerBlockHandler(new RenderNarrowStraightRail()); + RenderingRegistry.registerBlockHandler(new RenderNarrowCurveRail()); + RenderingRegistry.registerBlockHandler(new RenderStandardStraightRail()); + RenderingRegistry.registerBlockHandler(new RenderStandardCurveRail()); + RenderingRegistry.registerBlockHandler(new RenderStandardRampRail()); + RenderingRegistry.registerBlockHandler(new RenderStandardBufferRail()); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite)); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4)); @@ -1143,6 +1208,10 @@ public class ClientProxy extends ServerProxy { fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.5F, 0.1F); } + if("fireworks".equals(data.getString("mode"))) { + fx = new EntityFireworkSparkFX(world, x, y, z, 0, 0, 0, Minecraft.getMinecraft().effectRenderer); + } + if("largeexplode".equals(data.getString("mode"))) { @@ -1787,6 +1856,32 @@ public class ClientProxy extends ServerProxy { Minecraft.getMinecraft().effectRenderer.addEffect(text); } + if("debugline".equals(type)) { + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + int color = data.getInteger("color"); + ParticleDebugLine text = new ParticleDebugLine(world, x, y, z, mX, mY, mZ, color); + Minecraft.getMinecraft().effectRenderer.addEffect(text); + } + + if("debugdrone".equals(type)) { + Item held = player.getHeldItem() == null ? null : player.getHeldItem().getItem(); + + if(held == ModItems.drone || + held == Item.getItemFromBlock(ModBlocks.drone_crate_provider) || + held == Item.getItemFromBlock(ModBlocks.drone_crate_requester) || + held == Item.getItemFromBlock(ModBlocks.drone_dock) || + held == Item.getItemFromBlock(ModBlocks.drone_waypoint_request)) { + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + int color = data.getInteger("color"); + ParticleDebugLine text = new ParticleDebugLine(world, x, y, z, mX, mY, mZ, color); + Minecraft.getMinecraft().effectRenderer.addEffect(text); + } + } + if("network".equals(type)) { ParticleDebug debug = null; double mX = data.getDouble("mX"); @@ -1842,6 +1937,14 @@ public class ClientProxy extends ServerProxy { ParticleFoundry sploosh = new ParticleFoundry(man, world, x, y, z, color, dir, length, base, offset); Minecraft.getMinecraft().effectRenderer.addEffect(sploosh); } + + if("frozen".equals(type)) { + player.motionX = 0; + player.motionZ = 0; + player.motionY = Math.min(player.motionY, 0); + player.moveForward = 0; + player.moveStrafing = 0; + } } private HashMap vanished = new HashMap(); @@ -1863,13 +1966,23 @@ public class ClientProxy extends ServerProxy { } @Override - public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch) { + public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch) { AudioWrapperClient audio = new AudioWrapperClient(new ResourceLocation(sound)); audio.updatePosition(x, y, z); + audio.updateVolume(volume); + audio.updateRange(range); return audio; } + @Override + public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch, int keepAlive) { + AudioWrapper audio = getLoopedSound(sound, x, y, z, volume, range, pitch); + audio.setKeepAlive(keepAlive); + return audio; + } + + /** Only used for doors */ @Override public AudioWrapper getLoopedSoundStartStop(World world, String sound, String start, String stop, float x, float y, float z, float volume, float pitch) { AudioWrapperClientStartStop audio = new AudioWrapperClientStartStop(world, sound == null ? null : new ResourceLocation(sound), start, stop, volume * 5); @@ -1898,6 +2011,7 @@ public class ClientProxy extends ServerProxy { case TOGGLE_HEAD: return HbmKeybinds.hudKey.getIsKeyPressed(); case RELOAD: return HbmKeybinds.reloadKey.getIsKeyPressed(); case DASH: return HbmKeybinds.dashKey.getIsKeyPressed(); + case TRAIN: return HbmKeybinds.trainKey.getIsKeyPressed(); case CRANE_UP: return HbmKeybinds.craneUpKey.getIsKeyPressed(); case CRANE_DOWN: return HbmKeybinds.craneDownKey.getIsKeyPressed(); case CRANE_LEFT: return HbmKeybinds.craneLeftKey.getIsKeyPressed(); @@ -1945,5 +2059,9 @@ public class ClientProxy extends ServerProxy { public boolean getImpact(World world) { return ImpactWorldHandler.getImpactForClient(world); } -} + @Override + public void playSoundClient(double x, double y, double z, String sound, float volume, float pitch) { + Minecraft.getMinecraft().getSoundHandler().playSound(new PositionedSoundRecord(new ResourceLocation(sound), volume, pitch, (float) x, (float) y, (float) z)); + } +} diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index baadb5428..9203ee542 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.blocks.BlockEnums.DecoCabinetEnum; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockConcreteColoredExt.EnumConcreteType; import com.hbm.blocks.generic.BlockGenericStairs; import com.hbm.blocks.generic.BlockMultiSlab; import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType; @@ -21,6 +22,7 @@ import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.Ammo50BMG; import com.hbm.items.ItemAmmoEnums.Ammo5mm; import com.hbm.items.ItemEnums.EnumLegendaryType; +import com.hbm.items.ItemEnums.EnumPages; import com.hbm.items.ItemEnums.EnumPlantType; import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.food.ItemConserve.EnumFoodType; @@ -28,6 +30,7 @@ import com.hbm.items.machine.ItemBattery; import com.hbm.items.special.ItemCircuitStarComponent.CircuitComponentType; import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage; import com.hbm.items.special.ItemPlasticScrap.ScrapType; +import com.hbm.items.tool.ItemDrone.EnumDroneType; import com.hbm.items.tool.ItemGuideBook.BookType; import com.hbm.util.EnchantmentUtil; @@ -88,7 +91,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.board_copper, 1), new Object[] { "TTT", "TTT", 'T', CU.plate() }); addRecipeAuto(Mats.MAT_IRON.make(ModItems.plate_cast), new Object[] { "BPB", "BPB", "BPB", 'B', ModItems.bolt_tungsten, 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModItems.hazmat_cloth_red, 1), new Object[] { "C", "R", "C", 'C', ModItems.hazmat_cloth, 'R', REDSTONE.dust() }); - addRecipeAuto(new ItemStack(ModItems.hazmat_cloth_grey, 1), new Object[] { " P ", "ICI", " L ", 'C', ModItems.hazmat_cloth_red, 'P', IRON.plate(), 'L', PB.plate(), 'I', ModItems.plate_polymer }); + addRecipeAuto(new ItemStack(ModItems.hazmat_cloth_grey, 1), new Object[] { " P ", "ICI", " L ", 'C', ModItems.hazmat_cloth_red, 'P', IRON.plate(), 'L', PB.plate(), 'I', ANY_RUBBER.ingot() }); addRecipeAuto(new ItemStack(ModItems.asbestos_cloth, 8), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', BR.dust(), 'C', Blocks.wool }); addRecipeAuto(new ItemStack(ModItems.bolt_dura_steel, 4), new Object[] { "D", "D", 'D', DURA.ingot()}); addRecipeAuto(new ItemStack(ModItems.pipes_steel, 1), new Object[] { "B", "B", "B", 'B', STEEL.block() }); @@ -96,6 +99,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.bolt_compound, 1), new Object[] { "PDP", "PTP", "PDP", 'D', ModItems.bolt_dura_steel, 'T', ModItems.bolt_tungsten, 'P', TI.plate() }); addRecipeAuto(new ItemStack(ModItems.pellet_coal, 1), new Object[] { "PFP", "FOF", "PFP", 'P', COAL.dust(), 'F', Items.flint, 'O', ModBlocks.gravel_obsidian }); addRecipeAuto(new ItemStack(ModItems.plate_polymer, 8), new Object[] { "DD", 'D', ANY_PLASTIC.ingot() }); + addRecipeAuto(new ItemStack(ModItems.plate_polymer, 8), new Object[] { "DD", 'D', ANY_RUBBER.ingot() }); addRecipeAuto(new ItemStack(ModItems.plate_polymer, 16), new Object[] { "DD", 'D', FIBER.ingot()}); addRecipeAuto(new ItemStack(ModItems.plate_polymer, 16), new Object[] { "DD", 'D', ASBESTOS.ingot()}); addRecipeAuto(new ItemStack(ModItems.plate_polymer, 4), new Object[] { "SWS", 'S', Items.string, 'W', Blocks.wool }); @@ -188,6 +192,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.motor, 2), new Object[] { " R ", "ICI", "ITI", 'R', ModItems.wire_red_copper, 'T', ModItems.coil_copper_torus, 'I', IRON.plate(), 'C', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModItems.motor, 2), new Object[] { " R ", "ICI", " T ", 'R', ModItems.wire_red_copper, 'T', ModItems.coil_copper_torus, 'I', STEEL.plate(), 'C', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModItems.motor_desh, 1), new Object[] { "PCP", "DMD", "PCP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.coil_gold_torus, 'D', DESH.ingot(), 'M', ModItems.motor }); + addRecipeAuto(new ItemStack(ModItems.motor_bismuth, 1), new Object[] { "BCB", "SDS", "BCB", 'B', BI.nugget(), 'C', ModBlocks.hadron_coil_alloy, 'S', STEEL.plateCast(), 'D', DURA.ingot() }); //addRecipeAuto(new ItemStack(ModItems.centrifuge_element, 1), new Object[] { " T ", "WTW", "RMR", 'R', ModItems.wire_red_copper, 'T', ModItems.tank_steel, 'M', ModItems.motor, 'W', ModItems.coil_tungsten }); //addRecipeAuto(new ItemStack(ModItems.centrifuge_tower, 1), new Object[] { "LL", "EE", "EE", 'E', ModItems.centrifuge_element, 'L', KEY_BLUE }); //addRecipeAuto(new ItemStack(ModItems.reactor_core, 1), new Object[] { "LNL", "N N", "LNL", 'N', getReflector(), 'L', PB.plate() }); @@ -251,10 +256,13 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.radio_torch_sender, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', NETHERQUARTZ.gem() }); addRecipeAuto(new ItemStack(ModBlocks.radio_torch_receiver, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.radio_torch_counter, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', ModItems.circuit_aluminium }); + addRecipeAuto(new ItemStack(ModBlocks.radio_telex, 2), new Object[] { "SCR", "W#W", "WWW", 'S', ModBlocks.radio_torch_sender, 'C', ModItems.crt_display, 'R', ModBlocks.radio_torch_receiver, 'W', KEY_PLANKS, '#', ModItems.circuit_aluminium }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "LLL", "I I", "LLL", 'L', Items.leather, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "RSR", "I I", "RSR", 'I', IRON.ingot(), 'R', DictFrame.fromOne(ModItems.plant_item, EnumPlantType.ROPE), 'S', IRON.plate() }); - addRecipeAuto(new ItemStack(ModBlocks.conveyor, 64), new Object[] { "LLL", "I I", "LLL", 'L', RUBBER.ingot(), 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.conveyor, 64), new Object[] { "LLL", "I I", "LLL", 'L', ANY_RUBBER.ingot(), 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.conveyor_express, 8), new Object[] { "CCC", "CLC", "CCC", 'C', ModBlocks.conveyor, 'L', Fluids.LUBRICANT.getDict(1_000) }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_double, 3), new Object[] { "CPC", "CPC", "CPC", 'C', ModBlocks.conveyor, 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_triple, 3), new Object[] { "CPC", "CPC", "CPC", 'C', ModBlocks.conveyor_double, 'P', STEEL.plate() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_chute, 3), new Object[] { "IGI", "IGI", "ICI" , 'I', IRON.ingot(), 'G', ModBlocks.steel_grate, 'C', ModBlocks.conveyor }); @@ -276,15 +284,24 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.red_cable, 16), new Object[] { " W ", "RRR", " W ", 'W', ModItems.plate_polymer, 'R', ModItems.wire_red_copper }); addShapelessAuto(new ItemStack(ModBlocks.red_cable_classic, 1), new Object[] { ModBlocks.red_cable }); addShapelessAuto(new ItemStack(ModBlocks.red_cable, 1), new Object[] { ModBlocks.red_cable_classic }); + addShapelessAuto(new ItemStack(ModBlocks.red_cable_gauge), new Object[] { ModBlocks.red_wire_coated, STEEL.ingot(), ModItems.circuit_aluminium }); addRecipeAuto(new ItemStack(ModBlocks.red_connector, 4), new Object[] { "C", "I", "S", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.red_pylon, 4), new Object[] { "CWC", "PWP", " T ", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'P', ModItems.plate_polymer, 'T', ModBlocks.red_wire_coated }); addRecipeAuto(new ItemStack(ModBlocks.machine_battery_potato, 1), new Object[] { "PCP", "WRW", "PCP", 'P', ItemBattery.getEmptyBattery(ModItems.battery_potato), 'C', CU.ingot(), 'R', REDSTONE.block(), 'W', KEY_PLANKS }); - addRecipeAuto(new ItemStack(ModBlocks.machine_coal_off, 1), new Object[] { "STS", "SCS", "SFS", 'S', STEEL.ingot(), 'T', ModItems.tank_steel, 'C', MINGRADE.ingot(), 'F', Blocks.furnace }); + addRecipeAuto(new ItemStack(ModBlocks.capacitor_bus, 1), new Object[] { "PIP", "PIP", "PIP", 'P', ModItems.plate_polymer, 'I', MINGRADE.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.capacitor_copper, 1), new Object[] { "PPP", "PCP", "WWW", 'P', STEEL.plate(), 'C', CU.block(), 'W', KEY_PLANKS }); + addRecipeAuto(new ItemStack(ModBlocks.capacitor_gold, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_PLASTIC.ingot(), 'C', GOLD.block(), 'W', STEEL.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.capacitor_niobium, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', RUBBER.ingot(), 'C', NB.block(), 'W', STEEL.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.capacitor_tantalium, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_RESISTANTALLOY.ingot(), 'C', TA.block(), 'W', STEEL.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.capacitor_schrabidate, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_RESISTANTALLOY.ingot(), 'C', SBD.block(), 'W', STEEL.ingot() }); + //addRecipeAuto(new ItemStack(ModBlocks.machine_coal_off, 1), new Object[] { "STS", "SCS", "SFS", 'S', STEEL.ingot(), 'T', ModItems.tank_steel, 'C', MINGRADE.ingot(), 'F', Blocks.furnace }); + addRecipeAuto(new ItemStack(ModBlocks.machine_wood_burner, 1), new Object[] { "PPP", "CFC", "I I" , 'P', STEEL.plate528(), 'C', ModItems.coil_copper, 'I', IRON.ingot(), 'F', Blocks.furnace}); addRecipeAuto(new ItemStack(ModBlocks.machine_boiler_off, 1), new Object[] { "SPS", "TFT", "SPS", 'S', STEEL.ingot(), 'P', ModItems.board_copper, 'T', ModItems.tank_steel, 'F', Blocks.furnace }); addRecipeAuto(new ItemStack(ModBlocks.machine_boiler_electric_off, 1), new Object[] { "SPS", "TFT", "SPS", 'S', DESH.ingot(), 'P', ModItems.board_copper, 'T', ModItems.tank_steel, 'F', ModBlocks.machine_electric_furnace_off }); addRecipeAuto(new ItemStack(ModBlocks.machine_turbine, 1), new Object[] { "SMS", "PTP", "SMS", 'S', STEEL.ingot(), 'T', ModItems.turbine_titanium, 'M', ModItems.coil_copper, 'P', ANY_PLASTIC.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.machine_converter_he_rf, 1), new Object[] { "SSS", "CRB", "SSS", 'S', STEEL.ingot(), 'C', ModItems.coil_copper, 'R', ModItems.coil_copper_torus, 'B', REDSTONE.block() }); addRecipeAuto(new ItemStack(ModBlocks.machine_converter_rf_he, 1), new Object[] { "SSS", "BRC", "SSS", 'S', BE.ingot(), 'C', ModItems.coil_copper, 'R', ModItems.coil_copper_torus, 'B', REDSTONE.block() }); + addRecipeAuto(new ItemStack(ModBlocks.crate_template, 1), new Object[] { "IPI", "P P", "IPI", 'I', IRON.ingot(), 'P', Items.paper }); addRecipeAuto(new ItemStack(ModBlocks.crate_iron, 1), new Object[] { "PPP", "I I", "III", 'P', IRON.plate(), 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.crate_steel, 1), new Object[] { "PPP", "I I", "III", 'P', STEEL.plate(), 'I', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.crate_desh, 1), new Object[] { " D ", "DSD", " D ", 'D', ModItems.plate_desh, 'S', ModBlocks.crate_steel }); @@ -293,23 +310,25 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 0), new Object[] { "ICI", "CLC", "ICI", 'I', TI.ingot(), 'C', ModBlocks.crate_steel, 'L', ModItems.circuit_copper }); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 1), new Object[] { "PCP", "PMP", "PPP", 'P', DESH.ingot(), 'C', ModItems.circuit_red_copper, 'M', new ItemStack(ModBlocks.mass_storage, 1, 0) }); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { "PCP", "PMP", "PPP", 'P', ANY_RESISTANTALLOY.ingot(), 'C', ModItems.circuit_gold, 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) }); + addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 3), new Object[] { "PPP", "PIP", "PPP", 'P', KEY_PLANKS, 'I', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', ModItems.circuit_copper, 'M', ModItems.motor, 'W', Blocks.crafting_table }); addRecipeAuto(new ItemStack(ModBlocks.machine_waste_drum, 1), new Object[] { "LRL", "BRB", "LRL", 'L', PB.ingot(), 'B', Blocks.iron_bars, 'R', ModItems.rod_quad_empty }); addRecipeAuto(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', IRON.ingot(), 'R', Blocks.furnace, 'B', IRON.block(), 'P', Blocks.piston }); - addRecipeAuto(new ItemStack(ModBlocks.machine_siren, 1), new Object[] { "SIS", "ICI", "SRS", 'S', STEEL.plate(), 'I', ModItems.plate_polymer, 'C', ModItems.circuit_copper, 'R', REDSTONE.dust() }); + addRecipeAuto(new ItemStack(ModBlocks.machine_siren, 1), new Object[] { "SIS", "ICI", "SRS", 'S', STEEL.plate(), 'I', ANY_RUBBER.ingot(), 'C', ModItems.circuit_copper, 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.machine_microwave, 1), new Object[] { "III", "SGM", "IDI", 'I', ModItems.plate_polymer, 'S', STEEL.plate(), 'G', KEY_ANYPANE, 'M', ModItems.magnetron, 'D', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.machine_solar_boiler), new Object[] { "SHS", "DHD", "SHS", 'S', STEEL.ingot(), 'H', ModItems.hull_big_steel, 'D', KEY_BLACK }); addRecipeAuto(new ItemStack(ModBlocks.solar_mirror, 3), new Object[] { "AAA", " B ", "SSS", 'A', AL.plate(), 'B', ModBlocks.steel_beam, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.anvil_iron, 1), new Object[] { "III", " B ", "III", 'I', IRON.ingot(), 'B', IRON.block() }); addRecipeAuto(new ItemStack(ModBlocks.anvil_lead, 1), new Object[] { "III", " B ", "III", 'I', PB.ingot(), 'B', PB.block() }); addRecipeAuto(new ItemStack(ModBlocks.anvil_murky, 1), new Object[] { "UUU", "UAU", "UUU", 'U', ModItems.undefined, 'A', ModBlocks.anvil_steel }); - addRecipeAuto(new ItemStack(ModBlocks.machine_fraction_tower), new Object[] { "SHS", "SGS", "SHS", 'S', STEEL.plate(), 'H', ModItems.hull_big_steel, 'G', ModBlocks.steel_grate }); + addRecipeAuto(new ItemStack(ModBlocks.machine_fraction_tower), new Object[] { "H", "G", "H", 'H', STEEL.plateWelded(), 'G', ModBlocks.steel_grate }); addRecipeAuto(new ItemStack(ModBlocks.fraction_spacer), new Object[] { "BHB", 'H', ModItems.hull_big_steel, 'B', Blocks.iron_bars }); addRecipeAuto(new ItemStack(ModBlocks.furnace_iron), new Object[] { "III", "IFI", "BBB", 'I', IRON.ingot(), 'F', Blocks.furnace, 'B', Blocks.stonebrick }); addRecipeAuto(new ItemStack(ModBlocks.machine_mixer), new Object[] { "PIP", "GCG", "PMP", 'P', STEEL.plate(), 'I', DURA.ingot(), 'G', KEY_ANYPANE, 'C', ModItems.circuit_copper, 'M', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', ModItems.bolt_tungsten, 'P', IRON.plate(), 'R', REDSTONE.dust() }); - - addRecipeAuto(new ItemStack(ModBlocks.muffler, 1), new Object[] { "III", "IWI", "III", 'I', ModItems.plate_polymer, 'W', Blocks.wool }); + addRecipeAuto(new ItemStack(ModBlocks.piston_inserter), new Object[] { "ITI", "TPT", "ITI", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', IRON.plate(), 'T', ModItems.bolt_tungsten }); + + addRecipeAuto(new ItemStack(ModBlocks.muffler, 1), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_titanium_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', TI.plate(), 'I', TI.ingot() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_advanced_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', ALLOY.plate(), 'I', ALLOY.ingot() }); @@ -367,7 +386,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_2, 1), new Object[] { "TTT", "SSS", "BBI", 'T', ALLOY.plate(), 'S', ANY_PLASTIC.ingot(), 'B', ModItems.bolt_dura_steel, 'I', DESH.ingot() }); addRecipeAuto(new ItemStack(ModItems.mechanism_special, 1), new Object[] { "PCI", "ISS", "PCI", 'P', ModItems.plate_desh, 'C', ModItems.coil_advanced_alloy, 'I', STAR.ingot(), 'S', ModItems.circuit_targeting_tier3 }); - addRecipeAuto(new ItemStack(ModBlocks.watz_pump, 1), new Object[] { "MPM", "PCP", "PSP", 'M', ModItems.motor_desh, 'P', ANY_RESISTANTALLOY.plateTriple(), 'C', KEY_CIRCUIT_BISMUTH, 'S', ModItems.pipes_steel }); + addRecipeAuto(new ItemStack(ModBlocks.watz_pump, 1), new Object[] { "MPM", "PCP", "PSP", 'M', ModItems.motor_desh, 'P', ANY_RESISTANTALLOY.plateCast(), 'C', KEY_CIRCUIT_BISMUTH, 'S', ModItems.pipes_steel }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_cooler), 1), new Object[] { "IPI", "IPI", "IPI", 'I', TI.ingot(), 'P', TI.plate() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_tank), 1), new Object[] { "CGC", "GGG", "CGC", 'C', CMB.plate(), 'G', KEY_ANYPANE }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_scaffold), 1), new Object[] { "IPI", "P P", "IPI", 'I', W.ingot(), 'P', getReflector() }); @@ -376,7 +395,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.brick_light, 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.fence, 'B', Blocks.brick_block }); addRecipeAuto(new ItemStack(ModBlocks.brick_asbestos, 2), new Object[] { " A ", "ABA", " A ", 'B', ModBlocks.brick_light, 'A', ASBESTOS.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.concrete, 4), new Object[] { "CC", "CC", 'C', ModBlocks.concrete_smooth }); - addRecipeAuto(new ItemStack(ModBlocks.concrete_pillar, 8), new Object[] { "CBC", "CBC", "CBC", 'C', ModBlocks.concrete_smooth, 'B', Blocks.iron_bars }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_pillar, 6), new Object[] { "CBC", "CBC", "CBC", 'C', ModBlocks.concrete_smooth, 'B', Blocks.iron_bars }); addRecipeAuto(new ItemStack(ModBlocks.brick_concrete, 4), new Object[] { " C ", "CBC", " C ", 'C', ModBlocks.concrete_smooth, 'B', Items.clay_ball }); addRecipeAuto(new ItemStack(ModBlocks.brick_concrete, 4), new Object[] { " C ", "CBC", " C ", 'C', ModBlocks.concrete, 'B', Items.clay_ball }); addRecipeAuto(new ItemStack(ModBlocks.brick_concrete_mossy, 8), new Object[] { "CCC", "CVC", "CCC", 'C', ModBlocks.brick_concrete, 'V', Blocks.vine }); @@ -405,9 +424,16 @@ public class CraftingManager { for(int i = 0; i < 16; i++) { 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 }); - addRecipeAuto(new ItemStack(ModBlocks.concrete_colored, 8, i), new Object[] { "CCC", "CDC", "CCC", 'C', ModBlocks.concrete_colored, '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 }); + + 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 }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.INDIGO.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BLUE, '2', KEY_PURPLE }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.PURPLE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_PURPLE, '2', KEY_PURPLE }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.PINK.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_PINK, '2', KEY_RED }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.HAZARD.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_YELLOW, '2', KEY_BLACK }); addRecipeAuto(new ItemStack(ModBlocks.gneiss_tile, 4), new Object[] { "CC", "CC", 'C', ModBlocks.stone_gneiss }); addRecipeAuto(new ItemStack(ModBlocks.gneiss_brick, 4), new Object[] { "CC", "CC", 'C', ModBlocks.gneiss_tile }); @@ -424,12 +450,15 @@ public class CraftingManager { addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_brick), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', ModBlocks.brick_concrete }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_compound), 4), new Object[] { "FBF", "BTB", "FBF", 'F', ModItems.bolt_tungsten, 'B', ModBlocks.reinforced_brick, 'T', ANY_TAR.any() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_glass), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.glass }); + addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_glass_pane), 16), new Object[] { " ", "GGG", "GGG", 'G', ModBlocks.reinforced_glass}); + addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_laminate_pane), 16), new Object[] { " ", "LLL", "LLL", 'L', ModBlocks.reinforced_laminate}); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_light), 1), new Object[] { "FFF", "FBF", "FFF", 'F', Blocks.iron_bars, 'B', Blocks.glowstone }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_lamp_off), 1), new Object[] { "FFF", "FBF", "FFF", 'F', Blocks.iron_bars, 'B', Blocks.redstone_lamp }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_sand), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.sandstone }); addRecipeAuto(new ItemStack(ModBlocks.lamp_tritium_green_off, 1), new Object[] { "GPG", "1T2", "GPG", 'G', KEY_ANYGLASS, 'P', P_RED.dust(), 'T', ModItems.cell_tritium, '1', "dustSulfur", '2', CU.dust() }); addRecipeAuto(new ItemStack(ModBlocks.lamp_tritium_blue_off, 1), new Object[] { "GPG", "1T2", "GPG", 'G', KEY_ANYGLASS, 'P',P_RED.dust(), 'T', ModItems.cell_tritium, '1', AL.dust(), '2', ST.dust() }); + addRecipeAuto(new ItemStack(ModBlocks.lantern, 1), new Object[] { "PGP", " S ", " S ", 'P', KEY_ANYPANE, 'G', Items.glowstone_dust, 'S', ModBlocks.steel_beam }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire, 16), new Object[] { "AIA", "I I", "AIA", 'A', ModItems.wire_aluminium, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_fire, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', P_RED.dust() }); @@ -469,6 +498,11 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.stamp_9, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_9 }); addRecipeAuto(new ItemStack(ModItems.stamp_50, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_50 }); + addRecipeAuto(new ItemStack(ModItems.stamp_desh_357, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_357 }); + addRecipeAuto(new ItemStack(ModItems.stamp_desh_44, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_44 }); + addRecipeAuto(new ItemStack(ModItems.stamp_desh_9, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_9 }); + addRecipeAuto(new ItemStack(ModItems.stamp_desh_50, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_50 }); + addRecipeAuto(new ItemStack(ModBlocks.sat_dock, 1), new Object[] { "SSS", "PCP", 'S', STEEL.ingot(), 'P', ANY_PLASTIC.ingot(), 'C', ModBlocks.crate_iron }); addRecipeAuto(new ItemStack(ModBlocks.book_guide, 1), new Object[] { "IBI", "LBL", "IBI", 'B', Items.book, 'I', KEY_BLACK, 'L', KEY_BLUE }); @@ -513,7 +547,7 @@ public class CraftingManager { addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_lithium), new Object[] { "A A", "PLP", "PSP", 'A', ModItems.wire_gold, 'P', TI.plate(), 'S', LI.dust(), 'L', CO.dust() }); addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_schrabidium), new Object[] { " A ", "PNP", "PSP", 'A', ModItems.wire_schrabidium, 'P', SA326.plate(), 'S', SA326.dust(), 'N', NP237.dust() }); addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_schrabidium), new Object[] { " A ", "PSP", "PNP", 'A', ModItems.wire_schrabidium, 'P', SA326.plate(), 'S', SA326.dust(), 'N', NP237.dust() }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark), new Object[] { " A ", "PSP", "PSP", 'A', ModItems.wire_magnetized_tungsten, 'P', ModItems.plate_dineutronium, 'S', ModItems.powder_spark_mix }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark), new Object[] { "P", "S", "S", 'P', ModItems.plate_dineutronium, 'S', ModItems.powder_spark_mix }); addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_trixite), new Object[] { " A ", "PSP", "PTP", 'A', ModItems.wire_aluminium, 'P', AL.plate(), 'S', ModItems.powder_power, 'T', ModItems.crystal_trixite }); addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_trixite), new Object[] { " A ", "PTP", "PSP", 'A', ModItems.wire_aluminium, 'P', AL.plate(), 'S', ModItems.powder_power, 'T', ModItems.crystal_trixite }); addRecipeAuto(ItemBattery.getFullBattery(ModItems.energy_core), new Object[] { "PCW", "TRD", "PCW", 'P', ALLOY.plate(), 'C', ModItems.coil_advanced_alloy, 'W', ModItems.wire_advanced_alloy, 'R', ModItems.cell_tritium, 'D', ModItems.cell_deuterium, 'T', W.ingot() }); @@ -535,13 +569,13 @@ public class CraftingManager { addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_advanced_cell_12), new Object[] { "WPW", "BBB", "WPW", 'W', ModItems.wire_red_copper, 'P', CU.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_advanced_cell_4) }); addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_lithium_cell_6), new Object[] { "WPW", "BWB", "WPW", 'W', ModItems.wire_gold, 'P', TI.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_lithium_cell_3) }); addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_schrabidium_cell_4), new Object[] { "WPW", "BWB", "WPW", 'W', ModItems.wire_schrabidium, 'P', SA326.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_schrabidium_cell_2) }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_6), new Object[] { "BBW", "BBP", "BBW", 'W', ModItems.wire_magnetized_tungsten, 'P', ModItems.plate_dineutronium, 'B', ItemBattery.getEmptyBattery(ModItems.battery_spark) }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_25), new Object[] { " WW", "PCC", "BCC", 'W', ModItems.wire_magnetized_tungsten, 'P', ModItems.plate_dineutronium, 'B', ItemBattery.getEmptyBattery(ModItems.battery_spark), 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_6) }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100), new Object[] { "W W", "BPB", "BPB", 'W', ModItems.wire_magnetized_tungsten, 'P', ModItems.plate_dineutronium, 'B', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_25) }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_1000), new Object[] { "CCC", "CSC", "CCC", 'S', ModItems.singularity_spark, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100) }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_2500), new Object[] { "CVC", "PSP", "CVC", 'S', ModItems.singularity_spark, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100), 'V', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_1000), 'P', ModItems.plate_dineutronium }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_10000), new Object[] { "PVP", "VSV", "PVP", 'S', ModItems.singularity_spark, 'V', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_2500), 'P', ModItems.plate_dineutronium }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_power), new Object[] { "CCC", "CSC", "CCC", 'S', ModItems.singularity_spark, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_10000) }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_6), new Object[] { "BW", "PW", "BW", 'W', ModItems.wire_magnetized_tungsten, 'P', ModItems.powder_spark_mix, 'B', ItemBattery.getEmptyBattery(ModItems.battery_spark) }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_25), new Object[] { "W W", "SCS", "PSP", 'W', ModItems.wire_magnetized_tungsten, 'P', ModItems.plate_dineutronium, 'S', ModItems.powder_spark_mix, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_6) }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100), new Object[] { "W W", "BPB", "SSS", 'W', ModItems.wire_magnetized_tungsten, 'P', ModItems.plate_dineutronium, 'S', ModItems.powder_spark_mix, 'B', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_25) }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_1000), new Object[] { "PCP", "CSC", "PCP", 'S', ModItems.singularity_spark, 'P', ModItems.powder_spark_mix, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100) }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_2500), new Object[] { "SCS", "CVC", "SCS", 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100), 'V', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_1000), 'S', ModItems.powder_spark_mix }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_10000), new Object[] { "OSO", "SVS", "OSO", 'S', ModItems.singularity_spark, 'V', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_2500), 'O', ModItems.ingot_osmiridium }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_power), new Object[] { "YSY", "SCS", "YSY", 'S', ModItems.singularity_spark, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_10000), 'Y', ModItems.billet_yharonite }); addRecipeAuto(ItemBattery.getFullBattery(ModItems.battery_su), new Object[] { "P", "R", "C", 'P', Items.paper, 'R', REDSTONE.dust(), 'C', COAL.dust() }); addRecipeAuto(ItemBattery.getFullBattery(ModItems.battery_su), new Object[] { "P", "C", "R", 'P', Items.paper, 'R', REDSTONE.dust(), 'C', COAL.dust() }); @@ -565,15 +599,15 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.wiring_red_copper, 1), new Object[] { "PPP", "PIP", "PPP", 'P', STEEL.plate(), 'I', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.jetpack_tank, 1), new Object[] { " S ", "BKB", " S ", 'S', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'K', Fluids.KEROSENE.getDict(1000) }); - addRecipeAuto(new ItemStack(ModItems.gun_kit_1, 4), new Object[] { "I ", "LB", "P ", 'I', ModItems.plate_polymer, 'L', Fluids.LUBRICANT.getDict(1000), 'B', ModItems.bolt_tungsten, 'P', IRON.plate() }); - addRecipeAuto(new ItemStack(ModItems.gun_kit_2, 1), new Object[] { "III", "GLG", "PPP", 'I', ModItems.plate_polymer, 'L', ModItems.ducttape, 'G', ModItems.gun_kit_1, 'P', IRON.plate() }); + addRecipeAuto(new ItemStack(ModItems.gun_kit_1, 4), new Object[] { "I ", "LB", "P ", 'I', ANY_RUBBER.ingot(), 'L', Fluids.LUBRICANT.getDict(1000), 'B', ModItems.bolt_tungsten, 'P', IRON.plate() }); + addRecipeAuto(new ItemStack(ModItems.gun_kit_2, 1), new Object[] { "III", "GLG", "PPP", 'I', ANY_RUBBER.ingot(), 'L', ModItems.ducttape, 'G', ModItems.gun_kit_1, 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModItems.igniter, 1), new Object[] { " W", "SC", "CE", 'S', STEEL.plate(), 'W', ModItems.wire_schrabidium, 'C', ModItems.circuit_schrabidium, 'E', EUPH.ingot() }); - addRecipeAuto(new ItemStack(ModItems.watch, 1), new Object[] { "LEL", "EWE", "LEL", 'E', EUPH.ingot(), 'L', KEY_BLUE, 'W', Items.clock }); + addRecipeAuto(new ItemStack(ModItems.watch, 1), new Object[] { "LYL", "EWE", "LYL", 'E', EUPH.ingot(), 'L', KEY_BLUE, 'W', Items.clock, 'Y', ModItems.billet_yharonite }); addRecipeAuto(new ItemStack(ModItems.key, 1), new Object[] { " B", " B ", "P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten }); addRecipeAuto(new ItemStack(ModItems.key_kit, 1), new Object[] { "PKP", "DTD", "PKP", 'P', GOLD.plate(), 'K', ModItems.key, 'D', DESH.dust(), 'T', KEY_TOOL_SCREWDRIVER }); - addRecipeAuto(new ItemStack(ModItems.key_red, 1), new Object[] { "DSC", "SMS", "KSD", 'C', ModItems.circuit_targeting_tier4, 'M', Items.nether_star, 'K', ModItems.key, 'D', DESH.dust(), 'S', BIGMT.plate() }); + addRecipeAuto(new ItemStack(ModItems.key_red, 1), new Object[] { "RCA", "CIC", "KCR", 'R', KEY_RED, 'C', STAR.wireDense(), 'A', ModItems.gem_alexandrite, 'I', ModItems.ingot_chainsteel, 'K', ModItems.key }); addRecipeAuto(new ItemStack(ModItems.pin, 1), new Object[] { "W ", " W", " W", 'W', ModItems.wire_copper }); addRecipeAuto(new ItemStack(ModItems.padlock_rusty, 1), new Object[] { "I", "B", "I", 'I', IRON.ingot(), 'B', ModItems.bolt_tungsten }); addRecipeAuto(new ItemStack(ModItems.padlock, 1), new Object[] { " P ", "PBP", "PPP", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten }); @@ -599,13 +633,18 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.fluid_duct, 8), new Object[] { "SAS", " D ", "SAS", 'S', STEEL.plate(), 'A', AL.plate(), 'D', ModItems.ducttape }); addShapelessAuto(new ItemStack(ModBlocks.fluid_duct_neo, 1, 0), new Object[] { ModBlocks.fluid_duct }); addRecipeAuto(new ItemStack(ModBlocks.fluid_duct_solid, 8), new Object[] { "SAS", "ADA", "SAS", 'S', STEEL.ingot(), 'A', AL.plate(), 'D', ModItems.ducttape }); + addRecipeAuto(new ItemStack(ModBlocks.fluid_valve, 1), new Object[] { "S", "W", 'S', Blocks.lever, 'W', ModBlocks.fluid_duct_paintable }); + addRecipeAuto(new ItemStack(ModBlocks.fluid_switch, 1), new Object[] { "S", "W", 'S', REDSTONE.dust(), 'W', ModBlocks.fluid_duct_paintable }); addRecipeAuto(new ItemStack(ModItems.template_folder, 1), new Object[] { "LPL", "BPB", "LPL", 'P', Items.paper, 'L', "dye", 'B', "dye" }); addRecipeAuto(new ItemStack(ModItems.pellet_antimatter, 1), new Object[] { "###", "###", "###", '#', ModItems.cell_antimatter }); addRecipeAuto(new ItemStack(ModItems.fluid_tank_empty, 8), new Object[] { "121", "1G1", "121", '1', AL.plate(), '2', IRON.plate(), 'G', KEY_ANYPANE }); addRecipeAuto(new ItemStack(ModItems.fluid_tank_lead_empty, 4), new Object[] { "LUL", "LTL", "LUL", 'L', PB.plate(), 'U', U238.billet(), 'T', ModItems.fluid_tank_empty }); addRecipeAuto(new ItemStack(ModItems.fluid_barrel_empty, 2), new Object[] { "121", "1G1", "121", '1', STEEL.plate(), '2', AL.plate(), 'G', KEY_ANYPANE }); - addRecipeAuto(new ItemStack(ModItems.inf_water, 1), new Object[] { "222", "131", "222", '1', Items.water_bucket, '2', AL.plate(), '3', DIAMOND.gem() }); - addRecipeAuto(new ItemStack(ModItems.inf_water_mk2, 1), new Object[] { "BPB", "PTP", "BPB", 'B', ModItems.inf_water, 'P', ModBlocks.fluid_duct_neo, 'T', ModItems.tank_steel }); + + if(!GeneralConfig.enable528) { + addRecipeAuto(new ItemStack(ModItems.inf_water, 1), new Object[] { "222", "131", "222", '1', Items.water_bucket, '2', AL.plate(), '3', DIAMOND.gem() }); + addRecipeAuto(new ItemStack(ModItems.inf_water_mk2, 1), new Object[] { "BPB", "PTP", "BPB", 'B', ModItems.inf_water, 'P', ModBlocks.fluid_duct_neo, 'T', ModItems.tank_steel }); + } //not so Temporary Crappy Recipes addRecipeAuto(new ItemStack(ModItems.piston_selenium, 1), new Object[] { "SSS", "STS", " D ", 'S', STEEL.plate(), 'T', W.ingot(), 'D', ModItems.bolt_dura_steel }); @@ -650,14 +689,14 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.machine_transformer_dnt_20), new Object[] { "SDS", "MCM", "MCM", 'S', STAR.ingot(), 'D', DESH.ingot(), 'M', ModBlocks.fusion_conductor, 'C', ModItems.circuit_targeting_tier6 }); addRecipeAuto(new ItemStack(ModBlocks.radiobox), new Object[] { "PLP", "PSP", "PLP", 'P', STEEL.plate(), 'S', ModItems.ring_starmetal, 'C', ModItems.fusion_core, 'L', getReflector() }); addRecipeAuto(new ItemStack(ModBlocks.radiorec), new Object[] { " W", "PCP", "PIP", 'W', ModItems.wire_copper, 'P', STEEL.plate(), 'C', ModItems.circuit_red_copper, 'I', ANY_PLASTIC.ingot() }); - addRecipeAuto(new ItemStack(ModItems.jackt), new Object[] { "S S", "LIL", "LIL", 'S', STEEL.plate(), 'L', Items.leather, 'I', ModItems.plate_polymer }); - addRecipeAuto(new ItemStack(ModItems.jackt2), new Object[] { "S S", "LIL", "III", 'S', STEEL.plate(), 'L', Items.leather, 'I', ModItems.plate_polymer }); + addRecipeAuto(new ItemStack(ModItems.jackt), new Object[] { "S S", "LIL", "LIL", 'S', STEEL.plate(), 'L', Items.leather, 'I', ANY_RUBBER.ingot() }); + addRecipeAuto(new ItemStack(ModItems.jackt2), new Object[] { "S S", "LIL", "III", 'S', STEEL.plate(), 'L', Items.leather, 'I', ANY_RUBBER.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.vent_chlorine), new Object[] { "IGI", "ICI", "IDI", 'I', IRON.plate(), 'G', Blocks.iron_bars, 'C', ModItems.pellet_gas, 'D', Blocks.dispenser }); addRecipeAuto(new ItemStack(ModBlocks.vent_chlorine_seal), new Object[] { "ISI", "SCS", "ISI", 'I', BIGMT.ingot(), 'S', STAR.ingot(), 'C', ModItems.chlorine_pinwheel }); addRecipeAuto(new ItemStack(ModBlocks.vent_cloud), new Object[] { "IGI", "ICI", "IDI", 'I', IRON.plate(), 'G', Blocks.iron_bars, 'C', ModItems.grenade_cloud, 'D', Blocks.dispenser }); addRecipeAuto(new ItemStack(ModBlocks.vent_pink_cloud), new Object[] { "IGI", "ICI", "IDI", 'I', IRON.plate(), 'G', Blocks.iron_bars, 'C', ModItems.grenade_pink_cloud, 'D', Blocks.dispenser }); addRecipeAuto(new ItemStack(ModBlocks.spikes, 4), new Object[] { "FFF", "BBB", "TTT", 'F', Items.flint, 'B', ModItems.bolt_tungsten, 'T', W.ingot() }); - addRecipeAuto(new ItemStack(ModItems.custom_fall, 1), new Object[] { "IIP", "CHW", "IIP", 'I', ModItems.plate_polymer, 'P', BIGMT.plate(), 'C', ModItems.circuit_red_copper, 'H', ModItems.hull_small_steel, 'W', ModItems.coil_copper }); + addRecipeAuto(new ItemStack(ModItems.custom_fall, 1), new Object[] { "IIP", "CHW", "IIP", 'I', ANY_RUBBER.ingot(), 'P', BIGMT.plate(), 'C', ModItems.circuit_red_copper, 'H', ModItems.hull_small_steel, 'W', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModBlocks.machine_controller, 1), new Object[] { "TDT", "DCD", "TDT", 'T', ANY_RESISTANTALLOY.ingot(), 'D', ModItems.crt_display, 'C', ModItems.circuit_targeting_tier3 }); addRecipeAuto(new ItemStack(ModItems.containment_box, 1), new Object[] { "LUL", "UCU", "LUL", 'L', PB.plate(), 'U', U238.billet(), 'C', ModBlocks.crate_steel }); @@ -754,10 +793,10 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.ams_catalyst_schrabidium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_dagaz, ModItems.rune_hagalaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, SA326.dust(), SA326.dust(), SA326.dust(), SA326.dust() }); addShapelessAuto(new ItemStack(ModItems.ams_catalyst_dineutronium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_hagalaz, ModItems.rune_hagalaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, DNT.dust(), DNT.dust(), DNT.dust(), DNT.dust() }); addRecipeAuto(new ItemStack(ModBlocks.dfc_core, 1), new Object[] { "DLD", "LML", "DLD", 'D', ModItems.ingot_bismuth, 'L', DNT.block(), 'M', KEY_CIRCUIT_BISMUTH }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_emitter, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModItems.crystal_xen, 'L', ModItems.sat_head_laser }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_receiver, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', new ItemStack(ModBlocks.sellafield, 1, 5), 'L', ModItems.hull_small_steel }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_injector, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', CMB.plate(), 'T', ModBlocks.machine_fluidtank, 'X', ModItems.motor, 'L', ModItems.pipes_steel }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModItems.magnet_circular, 'L', ModItems.crystal_xen }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_emitter, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModItems.crystal_xen, 'L', ModItems.sat_head_laser }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_receiver, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModBlocks.block_dineutronium, 'L', ModItems.hull_small_steel }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_injector, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', CMB.plate(), 'T', ModBlocks.machine_fluidtank, 'X', ModItems.motor, 'L', ModItems.pipes_steel }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModItems.magnet_circular, 'L', ModItems.crystal_xen }); addRecipeAuto(new ItemStack(ModBlocks.barrel_plastic, 1), new Object[] { "IPI", "I I", "IPI", 'I', ModItems.plate_polymer, 'P', AL.plate() }); addRecipeAuto(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { "IPI", "I I", "IPI", 'I', IRON.plate(), 'P', IRON.ingot() }); addShapelessAuto(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { ModBlocks.barrel_corroded, ANY_TAR.any() }); @@ -766,7 +805,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.barrel_antimatter, 1), new Object[] { "IPI", "IBI", "IPI", 'I', BIGMT.plate(), 'P', ModItems.coil_advanced_torus, 'B', ModItems.battery_sc_technetium }); addRecipeAuto(new ItemStack(ModBlocks.tesla, 1), new Object[] { "CCC", "PIP", "WTW", 'C', ModItems.coil_copper, 'I', IRON.ingot(), 'P', ANY_PLASTIC.ingot(), 'T', ModBlocks.machine_transformer, 'W', KEY_PLANKS }); addRecipeAuto(new ItemStack(ModBlocks.struct_plasma_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_gold, 'B', ModBlocks.machine_lithium_battery, 'H', ModBlocks.fusion_heater }); - addRecipeAuto(new ItemStack(ModBlocks.struct_watz_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_schrabidium, 'B', ANY_RESISTANTALLOY.plateTriple(), 'H', ModBlocks.watz_cooler }); + addRecipeAuto(new ItemStack(ModBlocks.struct_watz_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_schrabidium, 'B', ANY_RESISTANTALLOY.plateCast(), 'H', ModBlocks.watz_cooler }); addShapelessAuto(new ItemStack(ModBlocks.fusion_heater), new Object[] { ModBlocks.fusion_hatch }); addShapelessAuto(new ItemStack(ModItems.energy_core), new Object[] { ModItems.fusion_core, ModItems.fuse }); addRecipeAuto(new ItemStack(ModItems.catalytic_converter, 1), new Object[] { "PCP", "PBP", "PCP", 'P', ANY_HARDPLASTIC.ingot(), 'C', CO.dust(), 'B', BI.ingot() }); @@ -788,15 +827,23 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.mech_key, 1), new Object[] { "MCM", "MKM", "MMM", 'M', ModItems.ingot_meteorite_forged, 'C', ModItems.coin_maskman, 'K', ModItems.key }); addRecipeAuto(new ItemStack(ModItems.spawn_ufo, 1), new Object[] { "MMM", "DCD", "MMM", 'M', ModItems.ingot_meteorite, 'D', DNT.ingot(), 'C', ModItems.coin_worm }); - + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_alloy, 1), new Object[] { "WWW", "WCW", "WWW", 'W', ModItems.wire_advanced_alloy, 'C', ModBlocks.fusion_conductor }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_alloy, 1), new Object[] { "WW", "WW", 'W', ALLOY.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_gold, 1), new Object[] { "PGP", "PCP", "PGP", 'G', GOLD.dust(), 'C', ModBlocks.hadron_coil_alloy, 'P', IRON.plate() }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_gold, 1), new Object[] { "WG", "GW", 'W', ALLOY.wireDense(), 'G', GOLD.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_neodymium, 1), new Object[] { "G", "C", "G", 'G', ND.dust(), 'C', ModBlocks.hadron_coil_gold }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_neodymium, 1), new Object[] { "WG", "GW", 'W', ND.wireDense(), 'G', GOLD.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_magtung, 1), new Object[] { "WWW", "WCW", "WWW", 'W', ModItems.wire_magnetized_tungsten, 'C', ModBlocks.fwatz_conductor }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_magtung, 1), new Object[] { "WW", "WW", 'W', MAGTUNG.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidium, 1), new Object[] { "WWW", "WCW", "WWW", 'W', ModItems.wire_schrabidium, 'C', ModBlocks.hadron_coil_magtung }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidium, 1), new Object[] { "WS", "SW", 'W', MAGTUNG.wireDense(), 'S', SA326.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidate, 1), new Object[] { " S ", "SCS", " S ", 'S', SBD.dust(), 'C', ModBlocks.hadron_coil_schrabidium }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidate, 1), new Object[] { "WS", "SW", 'W', SBD.wireDense(), 'S', SA326.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_starmetal, 1), new Object[] { "SNS", "SCS", "SNS", 'S', STAR.ingot(), 'N', ModBlocks.hadron_coil_neodymium, 'C', ModBlocks.hadron_coil_schrabidate }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_starmetal, 1), new Object[] { "SW", "WS", 'W', SBD.wireDense(), 'S', STAR.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_chlorophyte, 1), new Object[] { "TCT", "TST", "TCT", 'T', ModItems.coil_tungsten, 'C', ModItems.powder_chlorophyte, 'S', ModBlocks.hadron_coil_starmetal }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_chlorophyte, 1), new Object[] { "TC", "CT", 'T', W.wireDense(), 'C', ModItems.powder_chlorophyte }); addRecipeAuto(new ItemStack(ModBlocks.hadron_diode, 1), new Object[] { "CIC", "ISI", "CIC", 'C', ModBlocks.hadron_coil_alloy, 'I', STEEL.ingot(), 'S', ModItems.circuit_gold }); addRecipeAuto(new ItemStack(ModBlocks.hadron_plating, 16), new Object[] { "CC", "CC", 'C', STEEL.plateCast()}); addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_blue, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLUE }); @@ -813,10 +860,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.hadron_analysis, 1), new Object[] { "IPI", "PCP", "IPI", 'I', TI.ingot(), 'P', getReflector(), 'C', ModItems.circuit_gold }); addShapelessAuto(new ItemStack(ModBlocks.hadron_analysis_glass, 1), new Object[] { ModBlocks.hadron_analysis, KEY_ANYGLASS }); addRecipeAuto(new ItemStack(ModBlocks.hadron_access, 1), new Object[] { "IGI", "CRC", "IPI", 'I', ModItems.plate_polymer, 'G', KEY_ANYPANE, 'C', ModItems.circuit_aluminium, 'R', REDSTONE.block(), 'P', ModBlocks.hadron_plating_blue }); - - addRecipeAuto(new ItemStack(ModItems.ingot_schrabidium, 8), new Object[] { "UUU", "UPU", "UUU", 'U', U.ingot(), 'P', new ItemStack(ModItems.particle_higgs).setStackDisplayName("Higgs Boson (Temporary Recipe)") }); - addRecipeAuto(new ItemStack(ModItems.ingot_euphemium, 8), new Object[] { "UUU", "UPU", "UUU", 'U', PU.ingot(), 'P', new ItemStack(ModItems.particle_dark).setStackDisplayName("Dark Matter (Temporary Recipe)") }); - addRecipeAuto(new ItemStack(ModItems.ingot_dineutronium, 8), new Object[] { "UUU", "UPU", "UUU", 'U', SBD.ingot(), 'P', new ItemStack(ModItems.particle_sparkticle).setStackDisplayName("Sparkticle (Temporary Recipe)") }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_cooler, 1, 0), new Object[] { "PCP", "CHC", "PCP", 'P', ANY_RESISTANTALLOY.plateCast(), 'C', ModItems.circuit_gold, 'H', Fluids.HELIUM4.getDict(16_000) }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_cooler, 1, 1), new Object[] { "PCP", "CHC", "PCP", 'P', GOLD.plateCast(), 'C', ModItems.motor_bismuth, 'H', new ItemStack(ModBlocks.hadron_cooler, 1, 0) }); addRecipeAuto(new ItemStack(ModBlocks.fireworks, 1), new Object[] { "PPP", "PPP", "WIW", 'P', Items.paper, 'W', KEY_PLANKS, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModItems.safety_fuse, 8), new Object[] { "SSS", "SGS", "SSS", 'S', Items.string, 'G', Items.gunpowder }); @@ -844,6 +889,16 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.rbmk_steam_outlet, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.ingot(), 'C', CU.plate(), 'B', ModItems.tank_steel }); //addRecipeAuto(new ItemStack(ModBlocks.rbmk_heatex, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.ingot(), 'C', CU.plate(), 'B', ModItems.pipes_steel }); + addRecipeAuto(new ItemStack(ModBlocks.pwr_fuel, 4), new Object[] { "LZL", "L L", "LZL", 'L', PB.plate528(), 'Z', ZR.plateWelded() }); + addRecipeAuto(new ItemStack(ModBlocks.pwr_control, 4), new Object[] { "SBS", "MBM", "SBS", 'S', STEEL.plate528(), 'B', B.ingot(), 'M', ModItems.motor }); + addRecipeAuto(new ItemStack(ModBlocks.pwr_channel, 4), new Object[] { "CPC", "BPB", "CPC", 'C', CU.ingot(), 'P', ModBlocks.deco_pipe_quad, 'B', ANY_PLASTIC.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.pwr_heatex, 4), new Object[] { "CSC", "SMS", "CSC", 'C', CU.plateCast(), 'S', STEEL.plate528(), 'M', ModItems.motor }); + addRecipeAuto(new ItemStack(ModBlocks.pwr_reflector, 4), new Object[] { "RLR", "LSL", "RLR", 'R', OreDictManager.getReflector(), 'L', PB.plate528(), 'S', STEEL.plateCast() }); + addRecipeAuto(new ItemStack(ModBlocks.pwr_casing, 4), new Object[] { "LCL", "CSC", "LCL", 'L', PB.plate528(), 'C', ANY_CONCRETE.any(), 'S', STEEL.plateCast() }); + addRecipeAuto(new ItemStack(ModBlocks.pwr_controller, 1), new Object[] { "CPC", "PSP", "CPC", 'C', ModBlocks.pwr_casing, 'P', ANY_PLASTIC.ingot(), 'S', !GeneralConfig.enableExpensiveMode ? ModItems.circuit_gold : STEEL.heavyComp() }); + addRecipeAuto(new ItemStack(ModBlocks.pwr_port, 1), new Object[] { "S", "C", "S", 'S', STEEL.plate(), 'C', ModBlocks.pwr_casing }); + addRecipeAuto(new ItemStack(ModBlocks.pwr_neutron_source, 1), new Object[] { "LRL", "ZRZ", "LRL", 'L', PB.plate528(), 'R', ModItems.billet_ra226be, 'Z', ZR.plateCast() }); + addRecipeAuto(new ItemStack(ModBlocks.deco_rbmk, 8), new Object[] { "R", 'R', ModBlocks.rbmk_blank }); addRecipeAuto(new ItemStack(ModBlocks.deco_rbmk_smooth, 1), new Object[] { "R", 'R', ModBlocks.deco_rbmk }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_blank, 1), new Object[] { "RRR", "R R", "RRR", 'R', ModBlocks.deco_rbmk }); @@ -900,7 +955,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(Items.lead, 4), new Object[] { "RSR", 'R', DictFrame.fromOne(ModItems.plant_item, EnumPlantType.ROPE), 'S', KEY_SLIME }); addRecipeAuto(new ItemStack(ModItems.rag, 4), new Object[] { "SW", "WS", 'S', Items.string, 'W', Blocks.wool }); - addShapelessAuto(new ItemStack(ModItems.solid_fuel, 2), new Object[] { Fluids.HEATINGOIL.getDict(1000), KEY_TOOL_CHEMISTRYSET }); + addShapelessAuto(new ItemStack(ModItems.solid_fuel, 3), new Object[] { Fluids.HEATINGOIL.getDict(16000), KEY_TOOL_CHEMISTRYSET }); addShapelessAuto(new ItemStack(ModItems.canister_full, 2, Fluids.LUBRICANT.getID()), new Object[] { Fluids.HEATINGOIL.getDict(1000), Fluids.UNSATURATEDS.getDict(1000), ModItems.canister_empty, ModItems.canister_empty, KEY_TOOL_CHEMISTRYSET }); addRecipeAuto(new ItemStack(ModBlocks.machine_condenser), new Object[] { "SIS", "ICI", "SIS", 'S', STEEL.ingot(), 'I', IRON.plate(), 'C', ModItems.board_copper }); @@ -944,6 +999,30 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.crane_unboxer), new Object[] { "WWW", "WPW", "CCC", 'W', KEY_STICK, 'P', Items.shears, 'C', ModBlocks.conveyor }); addRecipeAuto(new ItemStack(ModBlocks.crane_router), new Object[] { "PIP", "ICI", "PIP", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', ModItems.plate_polymer, 'C', ModItems.circuit_copper }); addRecipeAuto(new ItemStack(ModBlocks.crane_splitter), new Object[] { "III", "PCP", "III", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', STEEL.ingot(), 'C', ModItems.circuit_aluminium }); + + addRecipeAuto(new ItemStack(ModBlocks.machine_conveyor_press), new Object[] { "CPC", "CBC", "CCC", 'C', CU.plate(), 'P', ModBlocks.machine_epress, 'B', ModBlocks.conveyor }); + addRecipeAuto(new ItemStack(ModBlocks.radar_screen), new Object[] { "PCP", "SRS", "PCP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.circuit_aluminium, 'S', STEEL.plate(), 'R', ModItems.crt_display }); + addRecipeAuto(new ItemStack(ModItems.radar_linker), new Object[] { "S", "C", "P", 'S', ModItems.crt_display, 'C', ModItems.circuit_copper, 'P', STEEL.plate() }); + + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()), new Object[] { "PPP", "HCH", " B ", 'P', ANY_PLASTIC.ingot(), 'H', ModItems.hull_small_steel, 'C', ModItems.circuit_copper, 'B', ModBlocks.crate_steel }); + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()), new Object[] { "E", "D", 'E', Items.ender_pearl, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) }); + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()), new Object[] { " P ", "KDK", " P ", 'P', TI.plateWelded(), 'K', Fluids.KEROSENE.getDict(1_000), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) }); + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()), new Object[] { "E", "D", 'E', Items.ender_pearl, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()) }); + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()), new Object[] { " P ", "KDK", " P ", 'P', TI.plateWelded(), 'K', Fluids.KEROSENE.getDict(1_000), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()) }); + addShapelessAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()), new Object[] { new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()) }); + addShapelessAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()), new Object[] { new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()) }); + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), new Object[] { "E", "D", 'E', ModItems.circuit_red_copper, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()) }); + + addRecipeAuto(new ItemStack(ModItems.drone_linker), new Object[] { "T", "C", 'T', ModBlocks.drone_waypoint, 'C', ModItems.circuit_copper }); + addRecipeAuto(new ItemStack(ModBlocks.drone_waypoint, 4), new Object[] { "G", "T", "C", 'G', KEY_GREEN, 'T', Blocks.redstone_torch, 'C', ModItems.circuit_aluminium }); + addRecipeAuto(new ItemStack(ModBlocks.drone_crate), new Object[] { "T", "C", 'T', ModBlocks.drone_waypoint, 'C', ModBlocks.crate_steel }); + addRecipeAuto(new ItemStack(ModBlocks.drone_waypoint_request, 4), new Object[] { "G", "T", "C", 'G', KEY_BLUE, 'T', Blocks.redstone_torch, 'C', ModItems.circuit_copper }); + addRecipeAuto(new ItemStack(ModBlocks.drone_crate), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', ModItems.circuit_red_copper }); + addRecipeAuto(new ItemStack(ModBlocks.drone_crate_requester), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_YELLOW }); + addRecipeAuto(new ItemStack(ModBlocks.drone_crate_provider), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_ORANGE }); + addRecipeAuto(new ItemStack(ModBlocks.drone_dock), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', ModItems.circuit_gold }); + + addRecipeAuto(new ItemStack(ModItems.ball_resin), new Object[] { "DD", "DD", 'D', Blocks.yellow_flower }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1), new Object[] { ModItems.ingot_chainsteel, ASBESTOS.ingot(), ModItems.gem_alexandrite }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1, 3), new Object[] { DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2) }); @@ -960,6 +1039,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.foundry_channel, 4), new Object[] { "B B", " S ", 'B', ModItems.ingot_firebrick, 'S', Blocks.stone_slab }); addRecipeAuto(new ItemStack(ModBlocks.foundry_tank), new Object[] { "B B", "I I", "BSB", 'B', ModItems.ingot_firebrick, 'I', STEEL.ingot(), 'S', Blocks.stone_slab }); addShapelessAuto(new ItemStack(ModBlocks.foundry_outlet), new Object[] { ModBlocks.foundry_channel, STEEL.plate() }); + addShapelessAuto(new ItemStack(ModBlocks.foundry_slagtap), new Object[] { ModBlocks.foundry_channel, Blocks.stonebrick }); addRecipeAuto(new ItemStack(ModItems.mold_base), new Object[] { " B ", "BIB", " B ", 'B', ModItems.ingot_firebrick, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.brick_fire), new Object[] { "BB", "BB", 'B', ModItems.ingot_firebrick }); addShapelessAuto(new ItemStack(ModItems.ingot_firebrick, 4), new Object[] { ModBlocks.brick_fire }); @@ -972,6 +1052,10 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.upgrade_5g), new Object[] { ModItems.upgrade_template, ModItems.gem_alexandrite }); + addShapelessAuto(new ItemStack(ModItems.bdcl), new Object[] { ANY_TAR.any(), Fluids.WATER.getDict(1_000), KEY_WHITE }); + + addShapelessAuto(new ItemStack(ModItems.book_of_), new Object[] { DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE1), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE2), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE3), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE4), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE5), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE6), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE7), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE8), ModItems.egg_balefire }); + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting) { addShapelessAuto(new ItemStack(ModItems.cordite, 3), new Object[] { ModItems.ballistite, Items.gunpowder, new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); addShapelessAuto(new ItemStack(ModItems.ingot_semtex, 3), new Object[] { Items.slime_ball, Blocks.tnt, KNO.dust() }); @@ -1013,8 +1097,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.struct_launcher_core_large, 1), new Object[] { "SIS", "ICI", "BEB", 'S', ModItems.circuit_red_copper, 'I', Blocks.iron_bars, 'C', ModItems.circuit_targeting_tier4, 'B', ModBlocks.struct_launcher, 'E', ModBlocks.machine_battery }); addRecipeAuto(new ItemStack(ModBlocks.struct_soyuz_core, 1), new Object[] { "CUC", "TST", "TBT", 'C', ModItems.circuit_targeting_tier4, 'U', ModItems.upgrade_power_3, 'T', ModBlocks.barrel_steel, 'S', ModBlocks.steel_scaffold, 'B', ModBlocks.machine_lithium_battery }); addRecipeAuto(new ItemStack(ModItems.reactor_sensor, 1), new Object[] { "WPW", "CMC", "PPP", 'W', ModItems.wire_tungsten, 'P', PB.plate(), 'C', ModItems.circuit_targeting_tier3, 'M', ModItems.magnetron }); - addRecipeAuto(new ItemStack(ModBlocks.reactor_ejector, 1), new Object[] { "CLC", "MHM", "CLC", 'C', ModBlocks.brick_concrete, 'L', PB.plate(), 'M', ModItems.motor, 'H', ModBlocks.reactor_hatch }); - addRecipeAuto(new ItemStack(ModBlocks.reactor_inserter, 1), new Object[] { "CLC", "MHM", "CLC", 'C', ModBlocks.brick_concrete, 'L', CU.plate(), 'M', ModItems.motor, 'H', ModBlocks.reactor_hatch }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_console, 1), new Object[] { "BBB", "DGD", "DCD", 'B', B.ingot(), 'D', ModBlocks.deco_rbmk, 'G', KEY_ANYPANE, 'C', ModItems.circuit_targeting_tier3 }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_crane_console, 1), new Object[] { "BCD", "DDD", 'B', B.ingot(), 'D', ModBlocks.deco_rbmk, 'C', ModItems.circuit_targeting_tier3 }); addRecipeAuto(new ItemStack(ModBlocks.hadron_core, 1), new Object[] { "CCC", "DSD", "CCC", 'C', ModBlocks.hadron_coil_alloy, 'D', ModBlocks.hadron_diode, 'S', ModItems.circuit_schrabidium }); @@ -1059,6 +1141,31 @@ public class CraftingManager { ModItems.circuit_star_piece.stackFromEnum(ScrapType.BOARD_TRANSISTOR), ModItems.circuit_star_piece.stackFromEnum(ScrapType.BOARD_BLANK) }); + + addRecipeAuto(new ItemStack(ModItems.sliding_blast_door_skin), "SPS", "DPD", "SPS", 'P', Items.paper, 'D', "dye", 'S', STEEL.plate()); + addShapelessAuto(new ItemStack(ModItems.sliding_blast_door_skin, 1, 1), new ItemStack(ModItems.sliding_blast_door_skin, 1, 0)); + addShapelessAuto(new ItemStack(ModItems.sliding_blast_door_skin, 1, 2), new ItemStack(ModItems.sliding_blast_door_skin, 1, 1)); + addShapelessAuto(new ItemStack(ModItems.sliding_blast_door_skin), new ItemStack(ModItems.sliding_blast_door_skin, 1, 2)); + + addRecipeAuto(new ItemStack(ModBlocks.cm_block, 4, 0), " I ", "IPI", " I ", 'I', STEEL.ingot(), 'P', STEEL.plateCast()); + addRecipeAuto(new ItemStack(ModBlocks.cm_block, 4, 1), " I ", "IPI", " I ", 'I', ALLOY.ingot(), 'P', ALLOY.plateCast()); + addRecipeAuto(new ItemStack(ModBlocks.cm_block, 4, 2), " I ", "IPI", " I ", 'I', DESH.ingot(), 'P', DESH.plateCast()); + addRecipeAuto(new ItemStack(ModBlocks.cm_block, 4, 3), " I ", "IPI", " I ", 'I', ANY_RESISTANTALLOY.ingot(), 'P', ANY_RESISTANTALLOY.plateCast()); + + for(int i = 0; i < 4; i++) { + addRecipeAuto(new ItemStack(ModBlocks.cm_sheet, 16, i), "BB", "BB", 'B', new ItemStack(ModBlocks.cm_block, 1, i)); + addRecipeAuto(new ItemStack(ModBlocks.cm_tank, 4, i), " B ", "BGB", " B ", 'B', new ItemStack(ModBlocks.cm_block, 1, i), 'G', KEY_ANYGLASS); + addRecipeAuto(new ItemStack(ModBlocks.cm_port, 1, i), "P", "B", "P", 'B', new ItemStack(ModBlocks.cm_block, 1, i), 'P', IRON.plate()); + } + + addRecipeAuto(new ItemStack(ModBlocks.cm_engine, 1, 0), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.motor); + addRecipeAuto(new ItemStack(ModBlocks.cm_engine, 1, 1), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.motor_desh); + addRecipeAuto(new ItemStack(ModBlocks.cm_engine, 1, 2), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.motor_bismuth); + addRecipeAuto(new ItemStack(ModBlocks.cm_circuit, 1, 0), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.circuit_aluminium); + addRecipeAuto(new ItemStack(ModBlocks.cm_circuit, 1, 1), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.circuit_copper); + addRecipeAuto(new ItemStack(ModBlocks.cm_circuit, 1, 2), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.circuit_red_copper); + addRecipeAuto(new ItemStack(ModBlocks.cm_circuit, 1, 3), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.circuit_gold); + addRecipeAuto(new ItemStack(ModBlocks.cm_circuit, 1, 4), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.circuit_schrabidium); } public static void crumple() { diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 6e1e381e5..6b933db58 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1,5 +1,70 @@ package com.hbm.main; +import com.google.common.collect.ImmutableList; +import com.hbm.blocks.BlockEnums.EnumStoneType; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockMotherOfAllOres; +import com.hbm.blocks.generic.BlockToolConversion; +import com.hbm.commands.*; +import com.hbm.config.*; +import com.hbm.crafting.RodRecipes; +import com.hbm.creativetabs.*; +import com.hbm.entity.EntityMappings; +import com.hbm.entity.grenade.*; +import com.hbm.entity.logic.IChunkLoader; +import com.hbm.entity.mob.siege.SiegeTier; +import com.hbm.handler.*; +import com.hbm.handler.imc.IMCBlastFurnace; +import com.hbm.handler.imc.IMCCentrifuge; +import com.hbm.handler.imc.IMCCrystallizer; +import com.hbm.handler.imc.IMCHandler; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.radiation.ChunkRadiationManager; +import com.hbm.hazard.HazardRegistry; +import com.hbm.inventory.FluidContainerRegistry; +import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.*; +import com.hbm.inventory.recipes.anvil.AnvilRecipes; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; +import com.hbm.items.ItemEnums.EnumAchievementType; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemFertilizer; +import com.hbm.items.weapon.ItemGenericGrenade; +import com.hbm.lib.HbmWorld; +import com.hbm.lib.Library; +import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; +import com.hbm.potion.HbmPotion; +import com.hbm.saveddata.satellites.Satellite; +import com.hbm.tileentity.TileMappings; +import com.hbm.tileentity.bomb.TileEntityLaunchPad; +import com.hbm.tileentity.bomb.TileEntityNukeCustom; +import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; +import com.hbm.tileentity.machine.TileEntityNukeFurnace; +import com.hbm.tileentity.machine.rbmk.RBMKDials; +import com.hbm.util.*; +import com.hbm.world.feature.BedrockOre; +import com.hbm.world.feature.OreCave; +import com.hbm.world.feature.OreLayer3D; +import com.hbm.world.feature.SchistStratum; +import com.hbm.world.generator.CellularDungeonFactory; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.Mod; +import cpw.mods.fml.common.Mod.EventHandler; +import cpw.mods.fml.common.Mod.Instance; +import cpw.mods.fml.common.Mod.Metadata; +import cpw.mods.fml.common.ModMetadata; +import cpw.mods.fml.common.SidedProxy; +import cpw.mods.fml.common.event.*; +import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent; +import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; +import cpw.mods.fml.common.event.FMLMissingMappingsEvent.MissingMapping; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; import net.minecraft.block.BlockDispenser; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.dispenser.BehaviorDefaultDispenseItem; @@ -25,12 +90,8 @@ import net.minecraftforge.common.ForgeChunkManager.Ticket; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.util.EnumHelper; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.Mod.EventHandler; -import cpw.mods.fml.common.Mod.Instance; -import cpw.mods.fml.common.Mod.Metadata; -import cpw.mods.fml.common.ModMetadata; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.io.File; import java.util.HashMap; @@ -39,65 +100,6 @@ import java.util.List; import java.util.Map.Entry; import java.util.Random; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import com.google.common.collect.ImmutableList; -import com.hbm.blocks.BlockEnums.EnumStoneType; -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.generic.BlockMotherOfAllOres; -import com.hbm.blocks.generic.BlockToolConversion; -import com.hbm.commands.CommandReloadRecipes; -import com.hbm.config.*; -import com.hbm.crafting.RodRecipes; -import com.hbm.creativetabs.*; -import com.hbm.entity.EntityMappings; -import com.hbm.entity.grenade.*; -import com.hbm.entity.logic.*; -import com.hbm.entity.mob.siege.*; -import com.hbm.handler.*; -import com.hbm.handler.imc.*; -import com.hbm.handler.radiation.ChunkRadiationManager; -import com.hbm.hazard.HazardRegistry; -import com.hbm.inventory.*; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.recipes.*; -import com.hbm.inventory.recipes.anvil.AnvilRecipes; -import com.hbm.inventory.recipes.loader.SerializableRecipe; -import com.hbm.items.ModItems; -import com.hbm.items.tool.ItemFertilizer; -import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; -import com.hbm.lib.HbmWorld; -import com.hbm.lib.Library; -import com.hbm.lib.RefStrings; -import com.hbm.packet.PacketDispatcher; -import com.hbm.potion.HbmPotion; -import com.hbm.saveddata.satellites.Satellite; -import com.hbm.tileentity.TileMappings; -import com.hbm.tileentity.bomb.TileEntityNukeCustom; -import com.hbm.tileentity.machine.*; -import com.hbm.tileentity.machine.rbmk.RBMKDials; -import com.hbm.util.ArmorUtil; -import com.hbm.util.Compat; -import com.hbm.util.StatHelper; -import com.hbm.util.SuicideThreadDump; -import com.hbm.world.feature.*; -import com.hbm.world.generator.CellularDungeonFactory; - -import cpw.mods.fml.common.SidedProxy; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLMissingMappingsEvent; -import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent; -import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; -import cpw.mods.fml.common.event.FMLMissingMappingsEvent.MissingMapping; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.event.FMLServerStartedEvent; -import cpw.mods.fml.common.event.FMLServerStartingEvent; -import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.relauncher.Side; - @Mod(modid = RefStrings.MODID, name = RefStrings.NAME, version = RefStrings.VERSION) public class MainRegistry { @@ -122,7 +124,7 @@ public class MainRegistry { public static ToolMaterial tMatCMB = EnumHelper.addToolMaterial("HBM_CMB", 3, 8500, 40.0F, 55F, 100); public static ToolMaterial tMatElec = EnumHelper.addToolMaterial("HBM_ELEC", 3, 0, 30.0F, 12.0F, 2); public static ToolMaterial tMatDesh = EnumHelper.addToolMaterial("HBM_DESH", 2, 0, 7.5F, 2.0F, 10); - public static ToolMaterial tMatCobalt = EnumHelper.addToolMaterial("HBM_COBALT", 3, 750, 9.0F, 2.5F, 15); + public static ToolMaterial tMatCobalt = EnumHelper.addToolMaterial("HBM_COBALT", 3, 750, 9.0F, 2.5F, 60); public static ToolMaterial enumToolMaterialSaw = EnumHelper.addToolMaterial("SAW", 2, 750, 2.0F, 3.5F, 25); public static ToolMaterial enumToolMaterialBat = EnumHelper.addToolMaterial("BAT", 0, 500, 1.5F, 3F, 25); @@ -151,7 +153,7 @@ public class MainRegistry { public static ArmorMaterial aMatCMB = EnumHelper.addArmorMaterial("HBM_CMB", 60, new int[] { 3, 8, 6, 3 }, 50); public static ArmorMaterial aMatAus3 = EnumHelper.addArmorMaterial("HBM_AUSIII", 375, new int[] { 2, 6, 5, 2 }, 0); public static ArmorMaterial aMatSecurity = EnumHelper.addArmorMaterial("HBM_SECURITY", 100, new int[] { 3, 8, 6, 3 }, 15); - public static ArmorMaterial aMatCobalt = EnumHelper.addArmorMaterial("HBM_COBALT", 70, new int[] { 3, 8, 6, 3 }, 25); + public static ArmorMaterial aMatCobalt = EnumHelper.addArmorMaterial("HBM_COBALT", 70, new int[] { 3, 8, 6, 3 }, 60); public static ArmorMaterial aMatStarmetal = EnumHelper.addArmorMaterial("HBM_STARMETAL", 150, new int[] { 3, 8, 6, 3 }, 100); public static ArmorMaterial aMatBismuth = EnumHelper.addArmorMaterial("HBM_BISMUTH", 100, new int[] { 3, 8, 6, 3 }, 100); @@ -185,6 +187,7 @@ public class MainRegistry { public static Achievement achSlimeball; public static Achievement achSulfuric; public static Achievement achWitchtaunter; + public static Achievement achGoFish; public static Achievement achNo9; public static Achievement achInferno; public static Achievement bobHidden; @@ -241,7 +244,7 @@ public class MainRegistry { public static File configDir; public static File configHbmDir; - Random rand = new Random(); + public Random rand = new Random(); @EventHandler public void PreLoad(FMLPreInitializationEvent PreEvent) { @@ -255,7 +258,6 @@ public class MainRegistry { logger.info("Let us celebrate the fact that the logger finally works again!"); // Reroll Polaroid - if(generalOverride > 0 && generalOverride < 19) { polaroidID = generalOverride; } else { @@ -282,7 +284,11 @@ public class MainRegistry { SiegeTier.registerTiers(); HazardRegistry.registerItems(); HazardRegistry.registerTrafos(); - OreDictManager.registerGroups(); + + OreDictManager oreMan = new OreDictManager(); + MinecraftForge.EVENT_BUS.register(oreMan); //OreRegisterEvent + OreDictManager.registerGroups(); //important to run first + OreDictManager.registerOres(); Library.superuser.add("192af5d7-ed0f-48d8-bd89-9d41af8524f8"); Library.superuser.add("5aee1e3d-3767-4987-a222-e7ce1fbdf88e"); @@ -319,6 +325,7 @@ public class MainRegistry { TileMappings.writeMappings(); MachineDynConfig.initialize(); + TileEntityLaunchPad.registerLaunchables(); for(Entry, String[]> e : TileMappings.map.entrySet()) { @@ -613,6 +620,18 @@ public class MainRegistry { return new EntityGrenadeDynamite(world, position.getX(), position.getY(), position.getZ()); } }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_kyiv, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World world, IPosition position) { + return new EntityGrenadeImpactGeneric(world, position.getX(), position.getY(), position.getZ()).setType((ItemGenericGrenade) ModItems.grenade_kyiv); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.stick_dynamite_fishing, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World world, IPosition position) { + return new EntityGrenadeImpactGeneric(world, position.getX(), position.getY(), position.getZ()).setType((ItemGenericGrenade) ModItems.stick_dynamite_fishing); + } + }); BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.powder_fertilizer, new BehaviorDefaultDispenseItem() { private boolean dispenseSound = true; @@ -644,6 +663,7 @@ public class MainRegistry { achSacrifice = new Achievement("achievement.sacrifice", "sacrifice", -3, 1, ModItems.burnt_bark, null).initIndependentStat().setSpecial().registerStat(); achImpossible = new Achievement("achievement.impossible", "impossible", 18, 10, ModItems.nothing, null).initIndependentStat().setSpecial().registerStat(); achTOB = new Achievement("achievement.tasteofblood", "tasteofblood", 3, 10, new ItemStack(ModItems.fluid_icon, 1, Fluids.ASCHRAB.getID()), null).initIndependentStat().setSpecial().registerStat(); + achGoFish = new Achievement("achievement.goFish", "goFish", 5, 10, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.GOFISH), null).initIndependentStat().setSpecial().registerStat(); achFreytag = new Achievement("achievement.freytag", "freytag", 0, -4, ModItems.gun_mp40, null).initIndependentStat().setSpecial().registerStat(); achPotato = new Achievement("achievement.potato", "potato", -2, -2, ModItems.battery_potatos, null).initIndependentStat().setSpecial().registerStat(); achC44 = new Achievement("achievement.c44", "c44", 2, -4, ModItems.gun_revolver_pip, null).initIndependentStat().setSpecial().registerStat(); @@ -655,8 +675,8 @@ public class MainRegistry { achWitchtaunter = new Achievement("achievement.witchtaunter", "witchtaunter", -8, 7, ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VAMPIRE), null).initIndependentStat().setSpecial().registerStat(); achNo9 = new Achievement("achievement.no9", "no9", -8, 12, ModItems.no9, null).initIndependentStat().registerStat(); - achSlimeball = new Achievement("achievement.slimeball", "slimeball", -10, 6, Items.slime_ball, null).initIndependentStat().registerStat(); - achSulfuric = new Achievement("achievement.sulfuric", "sulfuric", -10, 8, ModItems.bucket_sulfuric_acid, achSlimeball).initIndependentStat().setSpecial().registerStat(); + achSlimeball = new Achievement("achievement.slimeball", "slimeball", -10, 6, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.ACID), null).initIndependentStat().registerStat(); + achSulfuric = new Achievement("achievement.sulfuric", "sulfuric", -10, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.BALLS), achSlimeball).initIndependentStat().setSpecial().registerStat(); achInferno = new Achievement("achievement.inferno", "inferno", -8, 10, ModItems.canister_napalm, null).initIndependentStat().setSpecial().registerStat(); bobHidden = new Achievement("achievement.hidden", "hidden", 15, -4, ModItems.gun_dampfmaschine, null).initIndependentStat().registerStat(); @@ -676,11 +696,11 @@ public class MainRegistry { achSomeWounds = new Achievement("achievement.someWounds", "someWounds", -2, 10, ModItems.injector_knife, null).initIndependentStat().registerStat(); - digammaSee = new Achievement("achievement.digammaSee", "digammaSee", -1, 8, ModItems.digamma_see, null).initIndependentStat().registerStat(); - digammaFeel = new Achievement("achievement.digammaFeel", "digammaFeel", 1, 8, ModItems.digamma_feel, digammaSee).initIndependentStat().registerStat(); - digammaKnow = new Achievement("achievement.digammaKnow", "digammaKnow", 3, 8, ModItems.digamma_know, digammaFeel).initIndependentStat().registerStat().setSpecial(); - digammaKauaiMoho = new Achievement("achievement.digammaKauaiMoho", "digammaKauaiMoho", 5, 8, ModItems.digamma_kauai_moho, digammaKnow).initIndependentStat().registerStat().setSpecial(); - digammaUpOnTop = new Achievement("achievement.digammaUpOnTop", "digammaUpOnTop", 7, 8, ModItems.digamma_up_on_top, digammaKauaiMoho).initIndependentStat().registerStat().setSpecial(); + digammaSee = new Achievement("achievement.digammaSee", "digammaSee", -1, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMASEE), null).initIndependentStat().registerStat(); + digammaFeel = new Achievement("achievement.digammaFeel", "digammaFeel", 1, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAFEEL), digammaSee).initIndependentStat().registerStat(); + digammaKnow = new Achievement("achievement.digammaKnow", "digammaKnow", 3, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAKNOW), digammaFeel).initIndependentStat().registerStat().setSpecial(); + digammaKauaiMoho = new Achievement("achievement.digammaKauaiMoho", "digammaKauaiMoho", 5, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAKAUAIMOHO), digammaKnow).initIndependentStat().registerStat().setSpecial(); + digammaUpOnTop = new Achievement("achievement.digammaUpOnTop", "digammaUpOnTop", 7, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAUPONTOP), digammaKauaiMoho).initIndependentStat().registerStat().setSpecial(); //progression achieves achBurnerPress = new Achievement("achievement.burnerPress", "burnerPress", 0, 0, new ItemStack(ModBlocks.machine_press), null).initIndependentStat().registerStat(); @@ -719,6 +739,7 @@ public class MainRegistry { achSacrifice, achImpossible, achTOB, + achGoFish, achFreytag, achPotato, achC44, @@ -785,7 +806,6 @@ public class MainRegistry { // MUST be initialized AFTER achievements!! BobmazonOfferFactory.init(); - OreDictManager.registerOres(); IMCHandler.registerHandler("blastfurnace", new IMCBlastFurnace()); IMCHandler.registerHandler("crystallizer", new IMCCrystallizer()); @@ -818,6 +838,8 @@ public class MainRegistry { AnvilRecipes.register(); RefineryRecipes.registerRefinery(); GasCentrifugeRecipes.register(); + + CustomMachineConfigJSON.initialize(); //the good stuff SerializableRecipe.registerAllHandlers(); @@ -834,6 +856,7 @@ public class MainRegistry { FluidContainerRegistry.register(); TileEntityMachineReactorLarge.registerAll(); BlockToolConversion.registerRecipes(); + AchievementHandler.register(); proxy.registerMissileItems(); @@ -847,8 +870,11 @@ public class MainRegistry { new OreCave(ModBlocks.stone_resource, 0).setThreshold(1.5D).setRangeMult(20).setYLevel(30).setMaxRange(20).withFluid(ModBlocks.sulfuric_acid_block); //sulfur new OreCave(ModBlocks.stone_resource, 1).setThreshold(1.75D).setRangeMult(20).setYLevel(25).setMaxRange(20); //asbestos - new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()); + new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()).setScaleH(0.04D).setScaleV(0.25D).setThreshold(230); + new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.BAUXITE.ordinal()).setScaleH(0.03D).setScaleV(0.15D).setThreshold(300); + //new BiomeCave().setThreshold(1.5D).setRangeMult(20).setYLevel(40).setMaxRange(20); //new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); + BedrockOre.init(); Compat.handleRailcraftNonsense(); SuicideThreadDump.register(); @@ -872,14 +898,15 @@ public class MainRegistry { MinecraftForge.EVENT_BUS.register(impactHandler); MinecraftForge.TERRAIN_GEN_BUS.register(impactHandler); - OreDictManager oreMan = new OreDictManager(); - MinecraftForge.EVENT_BUS.register(oreMan); //OreRegisterEvent - PacketDispatcher.registerPackets(); ChunkRadiationManager radiationSystem = new ChunkRadiationManager(); MinecraftForge.EVENT_BUS.register(radiationSystem); FMLCommonHandler.instance().bus().register(radiationSystem); + + PollutionHandler pollution = new PollutionHandler(); + MinecraftForge.EVENT_BUS.register(pollution); + FMLCommonHandler.instance().bus().register(pollution); if(event.getSide() == Side.CLIENT) { HbmKeybinds.register(); @@ -895,6 +922,9 @@ public class MainRegistry { RBMKDials.createDials(world); SiegeOrchestrator.createGameRules(world); event.registerServerCommand(new CommandReloadRecipes()); + event.registerServerCommand(new CommandDebugChunkLoad()); + event.registerServerCommand(new CommandSatellites()); + event.registerServerCommand(new CommandRadiation()); } @EventHandler @@ -903,6 +933,7 @@ public class MainRegistry { if(GeneralConfig.enableStatReRegistering) { logger.info("Attempting to re-register item stats..."); StatHelper.resetStatShitFuck(); //shit yourself + logger.info("Item stats re-registered"); } } @@ -921,10 +952,12 @@ public class MainRegistry { WeaponConfig.loadFromConfig(config); MobConfig.loadFromConfig(config); StructureConfig.loadFromConfig(config); + + config.save(); try { - if(GeneralConfig.enableThermosPreventer && Class.forName("thermos.Thermos") != null) { - throw new IllegalStateException("The mod tried to start on a Thermos server and therefore stopped. To allow the server to start on Thermos, change the appropriate " + if(GeneralConfig.enableThermosPreventer && Class.forName("thermos.ThermosClassTransformer") != null) { + throw new IllegalStateException("The mod tried to start on a Thermos or it's fork server and therefore stopped. To allow the server to start on Thermos, change the appropriate " + "config entry (0.00 in hbm.cfg). This was done because, by default, Thermos " + "uses a so-called \"optimization\" feature that reduces tile ticking a lot, which will inevitably break a lot of machines. Most people aren't even aware " + "of this, and start blaming random mods for all their stuff breaking. In order to adjust or even disable this feature, edit \"tileentities.yml\" in your " @@ -933,8 +966,6 @@ public class MainRegistry { + "change Thermos' config anyway so that extra change in NTM's config can't be that big of a burden."); } } catch(ClassNotFoundException e) { } - - config.save(); } private static HashSet ignoreMappings = new HashSet(); @@ -1089,6 +1120,61 @@ public class MainRegistry { ignoreMappings.add("hbm:item.gun_revolver_lead_ammo"); ignoreMappings.add("hbm:item.gun_revolver_schrabidium_ammo"); ignoreMappings.add("hbm:item.tank_waste"); + ignoreMappings.add("hbm:item.digamma_see"); + ignoreMappings.add("hbm:item.digamma_feel"); + ignoreMappings.add("hbm:item.digamma_know"); + ignoreMappings.add("hbm:item.digamma_kauai_moho"); + ignoreMappings.add("hbm:item.digamma_up_on_top"); + ignoreMappings.add("hbm:tile.oil_duct_solid"); + ignoreMappings.add("hbm:tile.oil_duct"); + ignoreMappings.add("hbm:tile.gas_duct_solid"); + ignoreMappings.add("hbm:tile.gas_duct"); + ignoreMappings.add("hbm:tile.dummy_block_assembler"); + ignoreMappings.add("hbm:tile.dummy_port_assembler"); + ignoreMappings.add("hbm:item.canned_beef"); + ignoreMappings.add("hbm:item.canned_tuna"); + ignoreMappings.add("hbm:item.canned_mystery"); + ignoreMappings.add("hbm:item.canned_pashtet"); + ignoreMappings.add("hbm:item.canned_cheese"); + ignoreMappings.add("hbm:item.canned_jizz"); + ignoreMappings.add("hbm:item.canned_milk"); + ignoreMappings.add("hbm:item.canned_ass"); + ignoreMappings.add("hbm:item.canned_pizza"); + ignoreMappings.add("hbm:item.canned_tube"); + ignoreMappings.add("hbm:item.canned_tomato"); + ignoreMappings.add("hbm:item.canned_asbestos"); + ignoreMappings.add("hbm:item.canned_bhole"); + ignoreMappings.add("hbm:item.canned_hotdogs"); + ignoreMappings.add("hbm:item.canned_leftovers"); + ignoreMappings.add("hbm:item.canned_yogurt"); + ignoreMappings.add("hbm:item.canned_stew"); + ignoreMappings.add("hbm:item.canned_chinese"); + ignoreMappings.add("hbm:item.canned_oil"); + ignoreMappings.add("hbm:item.canned_fist"); + ignoreMappings.add("hbm:item.canned_spam"); + ignoreMappings.add("hbm:item.canned_fried"); + ignoreMappings.add("hbm:item.canned_napalm"); + ignoreMappings.add("hbm:item.canned_diesel"); + ignoreMappings.add("hbm:item.canned_kerosene"); + ignoreMappings.add("hbm:item.canned_recursion"); + ignoreMappings.add("hbm:item.canned_bark"); + ignoreMappings.add("hbm:item.primer_357"); + ignoreMappings.add("hbm:item.primer_44"); + ignoreMappings.add("hbm:item.primer_9"); + ignoreMappings.add("hbm:item.primer_50"); + ignoreMappings.add("hbm:item.primer_buckshot"); + ignoreMappings.add("hbm:tile.ore_bedrock_coltan"); + ignoreMappings.add("hbm:item.recycled_ground"); + ignoreMappings.add("hbm:item.recycled_rock"); + ignoreMappings.add("hbm:item.recycled_metal"); + ignoreMappings.add("hbm:item.recycled_refined"); + ignoreMappings.add("hbm:item.recycled_organic"); + ignoreMappings.add("hbm:item.recycled_crystal"); + ignoreMappings.add("hbm:item.recycled_explosive"); + ignoreMappings.add("hbm:item.recycled_electronic"); + ignoreMappings.add("hbm:item.recycled_nuclear"); + ignoreMappings.add("hbm:item.recycled_misc"); + ignoreMappings.add("hbm:item.gun_bf_ammo"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 81bb45c51..d0ab5626f 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -4,10 +4,13 @@ import java.lang.reflect.Field; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Random; +import java.util.Set; import org.apache.commons.lang3.math.NumberUtils; import org.apache.logging.log4j.Level; @@ -18,15 +21,15 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; import com.hbm.config.GeneralConfig; import com.hbm.config.MobConfig; -import com.hbm.entity.missile.EntityMissileBaseAdvanced; -import com.hbm.entity.missile.EntityMissileCustom; +import com.hbm.config.RadiationConfig; import com.hbm.entity.mob.EntityCyberCrab; import com.hbm.entity.mob.EntityDuck; import com.hbm.entity.mob.EntityCreeperNuclear; import com.hbm.entity.mob.EntityQuackos; import com.hbm.entity.mob.EntityCreeperTainted; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.entity.projectile.EntityBurningFOEQ; +import com.hbm.entity.train.EntityRailCarBase; import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.ArmorModHandler; @@ -39,6 +42,8 @@ import com.hbm.hazard.HazardSystem; import com.hbm.interfaces.IBomb; import com.hbm.handler.HTTPHandler; import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.handler.SiegeOrchestrator; import com.hbm.items.IEquipReceiver; import com.hbm.items.ModItems; @@ -61,13 +66,18 @@ import com.hbm.packet.PermaSyncPacket; import com.hbm.packet.PlayerInformPacket; import com.hbm.potion.HbmPotion; import com.hbm.saveddata.AuxSavedData; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import com.hbm.tileentity.network.RTTYSystem; +import com.hbm.tileentity.network.RequestNetwork; +import com.hbm.util.AchievementHandler; +import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorUtil; import com.hbm.util.ContaminationUtil; import com.hbm.util.EnchantmentUtil; import com.hbm.util.EntityDamageUtil; import com.hbm.util.EnumUtil; import com.hbm.util.InventoryUtil; +import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.world.generator.TimedGenerator; import cpw.mods.fml.common.eventhandler.EventPriority; @@ -168,10 +178,13 @@ public class ModEventHandler { if(MobConfig.enableDucks && event.player instanceof EntityPlayerMP && !event.player.getEntityData().getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG).getBoolean("hasDucked")) PacketDispatcher.wrapper.sendTo(new PlayerInformPacket("Press O to Duck!", MainRegistry.proxy.ID_DUCK, 30_000), (EntityPlayerMP) event.player); - if(event.player instanceof EntityPlayerMP && !event.player.getEntityData().getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG).getBoolean("hasGuide")) { + + HbmPlayerProps props = HbmPlayerProps.getData(event.player); + + if(!props.hasReceivedBook) { event.player.inventory.addItemStackToInventory(new ItemStack(ModItems.book_guide, 1, BookType.STARTER.ordinal())); event.player.inventoryContainer.detectAndSendChanges(); - event.player.getEntityData().getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG).setBoolean("hasGuide", true); + props.hasReceivedBook = true; } } } @@ -211,7 +224,7 @@ public class ModEventHandler { } @SubscribeEvent - public void onPlayerChaangeDimension(PlayerChangedDimensionEvent event) { + public void onPlayerChangeDimension(PlayerChangedDimensionEvent event) { EntityPlayer player = event.player; HbmPlayerProps data = HbmPlayerProps.getData(player); data.setKeyPressed(EnumKeybind.JETPACK, false); @@ -475,11 +488,7 @@ public class ModEventHandler { @SubscribeEvent public void onLivingUpdate(LivingUpdateEvent event) { - ItemStack[] prevArmor = null; - - try { - prevArmor = (ItemStack[]) ReflectionHelper.findField(EntityLivingBase.class, "field_82180_bT", "previousEquipment").get(event.entityLiving); - } catch(Exception e) { } + ItemStack[] prevArmor = event.entityLiving.previousEquipment; if(event.entityLiving instanceof EntityPlayer && prevArmor != null && event.entityLiving.getHeldItem() != null && (prevArmor[0] == null || prevArmor[0].getItem() != event.entityLiving.getHeldItem().getItem()) @@ -690,6 +699,11 @@ public class ModEventHandler { */ } /// RADIATION STUFF END /// + + + if(event.phase == Phase.END) { + EntityRailCarBase.updateMotion(event.world); + } } if(event.phase == Phase.START) { @@ -810,7 +824,7 @@ public class ModEventHandler { EntityPlayer player = event.entityPlayer; ItemStack chestplate = player.inventory.armorInventory[2]; - if(player.getHeldItem() == null && chestplate != null && ArmorModHandler.hasMods(chestplate)) { + if(!player.worldObj.isRemote && player.getHeldItem() == null && chestplate != null && ArmorModHandler.hasMods(chestplate)) { ItemStack[] mods = ArmorModHandler.pryMods(chestplate); ItemStack servo = mods[ArmorModHandler.servos]; @@ -835,7 +849,7 @@ public class ModEventHandler { } for(int i = 0; i < bullets; i++) { - EntityBulletBase bullet = new EntityBulletBase(player.worldObj, BulletConfigSyncingUtil.getKey(firedConfig), player); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(player.worldObj, BulletConfigSyncingUtil.getKey(firedConfig), player); player.worldObj.spawnEntityInWorld(bullet); } @@ -1085,19 +1099,21 @@ public class ModEventHandler { if(event.phase == event.phase.START) { RTTYSystem.updateBroadcastQueue(); + RequestNetwork.updateEntries(); + TileEntityMachineRadarNT.updateSystem(); } } @SubscribeEvent public void enteringChunk(EnteringChunk evt) { - if(evt.entity instanceof EntityMissileBaseAdvanced) { - ((EntityMissileBaseAdvanced) evt.entity).loadNeighboringChunks(evt.newChunkX, evt.newChunkZ); + /*if(evt.entity instanceof EntityMissileBaseNT) { + ((EntityMissileBaseNT) evt.entity).loadNeighboringChunks(evt.newChunkX, evt.newChunkZ); } if(evt.entity instanceof EntityMissileCustom) { ((EntityMissileCustom) evt.entity).loadNeighboringChunks(evt.newChunkX, evt.newChunkZ); - } + }*/ } @SubscribeEvent @@ -1110,31 +1126,12 @@ public class ModEventHandler { @SubscribeEvent public void itemCrafted(PlayerEvent.ItemCraftedEvent e) { - - Item item = e.crafting.getItem(); - - if(item == ModItems.gun_mp40) { - e.player.addStat(MainRegistry.achFreytag, 1); - } - if(item == ModItems.piston_selenium || item == ModItems.gun_b92) { - e.player.addStat(MainRegistry.achSelenium, 1); - } - if(item == ModItems.battery_potatos) { - e.player.addStat(MainRegistry.achPotato, 1); - } - if(item == ModItems.gun_revolver_pip) { - e.player.addStat(MainRegistry.achC44, 1); - } - if(item == Item.getItemFromBlock(ModBlocks.machine_press)) { - e.player.triggerAchievement(MainRegistry.achBurnerPress); - } - if(item == ModItems.rbmk_fuel_empty) { - e.player.triggerAchievement(MainRegistry.achRBMK); - } + AchievementHandler.fire(e.player, e.crafting); } @SubscribeEvent public void itemSmelted(PlayerEvent.ItemSmeltedEvent e) { + AchievementHandler.fire(e.player, e.smelting); if(!e.player.worldObj.isRemote && e.smelting.getItem() == Items.iron_ingot && e.player.getRNG().nextInt(64) == 0) { @@ -1164,10 +1161,12 @@ public class ModEventHandler { @SubscribeEvent public void onBlockBreak(BreakEvent event) { - if(!(event.getPlayer() instanceof EntityPlayerMP)) + EntityPlayer player = event.getPlayer(); + + if(!(player instanceof EntityPlayerMP)) return; - if(event.block == ModBlocks.stone_gneiss && !((EntityPlayerMP) event.getPlayer()).func_147099_x().hasAchievementUnlocked(MainRegistry.achStratum)) { + if(event.block == ModBlocks.stone_gneiss && !((EntityPlayerMP) player).func_147099_x().hasAchievementUnlocked(MainRegistry.achStratum)) { event.getPlayer().triggerAchievement(MainRegistry.achStratum); event.setExpToDrop(500); } @@ -1184,9 +1183,31 @@ public class ModEventHandler { event.world.setBlock(x, y, z, ModBlocks.gas_coal); } } + + if(RadiationConfig.enablePollution && RadiationConfig.enableLeadFromBlocks) { + if(!ArmorRegistry.hasProtection(player, 3, HazardClass.PARTICLE_FINE)) { + + float metal = PollutionHandler.getPollution(player.worldObj, event.x, event.y, event.z, PollutionType.HEAVYMETAL); + + if(metal < 5) return; + + if(metal < 10) { + player.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 0)); + } else if(metal < 25) { + player.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 1)); + } else { + player.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 2)); + } + } + } } - private static final String hash = "41eb77f138ce350932e33b6b26b233df9aad0c0c80c6a49cb9a54ddd8fae3f83"; + private static final Set hashes = new HashSet(); + + static { + hashes.add("41de5c372b0589bbdb80571e87efa95ea9e34b0d74c6005b8eab495b7afd9994"); + hashes.add("31da6223a100ed348ceb3254ceab67c9cc102cb2a04ac24de0df3ef3479b1036"); + } @SubscribeEvent public void onClickSign(PlayerInteractEvent event) { @@ -1196,14 +1217,14 @@ public class ModEventHandler { int z = event.z; World world = event.world; - if(!world.isRemote && event.action == Action.RIGHT_CLICK_BLOCK && world.getBlock(x, y, z) == Blocks.standing_sign) { + if(!world.isRemote && event.action == Action.RIGHT_CLICK_BLOCK && world.getTileEntity(x, y, z) instanceof TileEntitySign) { TileEntitySign sign = (TileEntitySign)world.getTileEntity(x, y, z); String result = smoosh(sign.signText[0], sign.signText[1], sign.signText[2], sign.signText[3]); - //System.out.println(result); + System.out.println(result); - if(result.equals(hash)) { + if(hashes.contains(result)) { world.func_147480_a(x, y, z, false); EntityItem entityitem = new EntityItem(world, x, y, z, new ItemStack(ModItems.bobmazon_hidden)); entityitem.delayBeforeCanPickup = 10; @@ -1310,7 +1331,7 @@ public class ModEventHandler { String[] msg = message.split(" "); - String m = msg[0].substring(1, msg[0].length()).toLowerCase(); + String m = msg[0].substring(1, msg[0].length()).toLowerCase(Locale.US); if("gv".equals(m)) { diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 9e8872aec..7e3226470 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -1,8 +1,8 @@ package com.hbm.main; import java.lang.reflect.Method; -import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Random; import org.lwjgl.input.Keyboard; @@ -13,9 +13,9 @@ import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; import com.hbm.config.GeneralConfig; -import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.mob.EntityHunterChopper; import com.hbm.entity.projectile.EntityChopperMine; +import com.hbm.entity.train.EntityRailCarRidable; import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.ArmorModHandler; @@ -81,15 +81,19 @@ import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.InputEvent; import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent; import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; +import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; import cpw.mods.fml.relauncher.ReflectionHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.AbstractClientPlayer; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.multiplayer.WorldClient; @@ -97,12 +101,16 @@ import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderPlayer; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.inventory.Slot; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; +import net.minecraft.network.play.client.C03PacketPlayer; +import net.minecraft.network.play.client.C0CPacketInput; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.EnumChatFormatting; @@ -116,6 +124,7 @@ import net.minecraft.world.WorldProviderSurface; import net.minecraftforge.client.GuiIngameForge; import net.minecraftforge.client.IRenderHandler; import net.minecraftforge.client.event.FOVUpdateEvent; +import net.minecraftforge.client.event.GuiOpenEvent; import net.minecraftforge.client.event.MouseEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; @@ -131,11 +140,39 @@ import net.minecraftforge.event.entity.player.ItemTooltipEvent; public class ModEventHandlerClient { + public static final int flashDuration = 5_000; + public static long flashTimestamp; + @SubscribeEvent public void onOverlayRender(RenderGameOverlayEvent.Pre event) { EntityPlayer player = Minecraft.getMinecraft().thePlayer; + /// NUKE FLASH /// + if(event.type == ElementType.CROSSHAIRS && (flashTimestamp + flashDuration - System.currentTimeMillis()) > 0) { + int width = event.resolution.getScaledWidth(); + int height = event.resolution.getScaledHeight(); + Tessellator tess = Tessellator.instance; + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.0F); + GL11.glDepthMask(false); + tess.startDrawingQuads(); + float brightness = (flashTimestamp + flashDuration - System.currentTimeMillis()) / (float) flashDuration; + tess.setColorRGBA_F(1F, 1F, 1F, brightness * 0.8F); + tess.addVertex(width, 0, 0); + tess.addVertex(0, 0, 0); + tess.addVertex(0, height, 0); + tess.addVertex(width, height, 0); + tess.draw(); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDepthMask(true); + return; + } + /// HANDLE GUN OVERLAYS /// if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemHUD) { ((IItemHUD)player.getHeldItem().getItem()).renderHUD(event, event.type, player, player.getHeldItem()); @@ -161,28 +198,25 @@ public class ModEventHandlerClient { World world = mc.theWorld; MovingObjectPosition mop = mc.objectMouseOver; - if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK ) { + if(mop != null) { - if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ILookOverlay) { - ((ILookOverlay) player.getHeldItem().getItem()).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ); + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { - } else if(world.getBlock(mop.blockX, mop.blockY, mop.blockZ) instanceof ILookOverlay) { - ((ILookOverlay) world.getBlock(mop.blockX, mop.blockY, mop.blockZ)).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ); + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ILookOverlay) { + ((ILookOverlay) player.getHeldItem().getItem()).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ); + + } else if(world.getBlock(mop.blockX, mop.blockY, mop.blockZ) instanceof ILookOverlay) { + ((ILookOverlay) world.getBlock(mop.blockX, mop.blockY, mop.blockZ)).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ); + } + } else if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + Entity entity = mop.entityHit; + + if(entity instanceof ILookOverlay) { + ((ILookOverlay) entity).printHook(event, world, 0, 0, 0); + } } } - List torex = world.getEntitiesWithinAABB(EntityNukeTorex.class, player.boundingBox.expand(100, 100, 100)); - - if(!torex.isEmpty()) { - EntityNukeTorex t = torex.get(0); - List text = new ArrayList(); - text.add("Speed: " + t.getSimulationSpeed()); - text.add("Alpha: " + t.getAlpha()); - text.add("Age: " + t.ticksExisted + " / " + t.getMaxAge()); - text.add("Clouds: " + t.cloudlets.size()); - ILookOverlay.printGeneric(event, "DEBUG", 0xff0000, 0x4040000, text); - } - /*List text = new ArrayList(); text.add("IMPACT: " + ImpactWorldHandler.getImpactForClient(world)); text.add("DUST: " + ImpactWorldHandler.getDustForClient(world)); @@ -200,6 +234,71 @@ public class ModEventHandlerClient { GL11.glPopMatrix(); Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); }*/ + + /*List text = new ArrayList(); + MovingObjectPosition pos = Library.rayTrace(player, 500, 1, false, true, false); + + for(int i = 0; i < 2; i++) if(pos != null && pos.typeOfHit == pos.typeOfHit.BLOCK) { + + float yaw = player.rotationYaw; + + Vec3 next = Vec3.createVectorHelper(pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord); + int it = 0; + + BlockPos anchor = new BlockPos(pos.blockX, pos.blockY, pos.blockZ); + + double distanceToCover = 4D * (i == 0 ? 1 : -1); + + do { + + it++; + + if(it > 30) { + world.createExplosion(player, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 5F, false); + break; + } + + int x = anchor.getX(); + int y = anchor.getY(); + int z = anchor.getZ(); + Block block = world.getBlock(x, y, z); + + Vec3 rot = Vec3.createVectorHelper(0, 0, 1); + rot.rotateAroundY((float) (-yaw * Math.PI / 180D)); + + if(block instanceof IRailNTM) { + IRailNTM rail = (IRailNTM) block; + RailContext info = new RailContext(); + + boolean flip = distanceToCover < 0; + + if(it == 1) { + Vec3 snap = next = rail.getTravelLocation(world, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, info, new MoveContext(RailCheckType.CORE, 0)); + if(i == 0) world.spawnParticle("reddust", snap.xCoord, snap.yCoord + 0.25, snap.zCoord, 0.1, 1, 0.1); + } + + Vec3 prev = next; + next = rail.getTravelLocation(world, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info, new MoveContext(i == 0 ? RailCheckType.FRONT : RailCheckType.BACK, 0)); + distanceToCover = info.overshoot; + anchor = info.pos; + if(i == 0) world.spawnParticle("reddust", next.xCoord, next.yCoord + 0.25, next.zCoord, 0, distanceToCover != 0 ? 0.5 : 0, 0); + else world.spawnParticle("reddust", next.xCoord, next.yCoord + 0.25, next.zCoord, 0, distanceToCover != 0 ? 0.5 : 0, 1); + + double deltaX = next.xCoord - prev.xCoord; + double deltaZ = next.zCoord - prev.zCoord; + double radians = -Math.atan2(deltaX, deltaZ); + yaw = (float) MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI + (flip ? 180 : 0)); + + text.add(it + ": " + yaw); + + } else { + break; + } + + } while(distanceToCover != 0); + + ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text); + }*/ } /// HANLDE ANIMATION BUSES /// @@ -376,7 +475,7 @@ public class ModEventHandlerClient { if(invis != null && invis.getAmplifier() > 0) event.setCanceled(true); - if(player.getDisplayName().toLowerCase().equals("martmn")) { + if(player.getDisplayName().toLowerCase(Locale.US).equals("martmn")) { event.setCanceled(true); @@ -854,6 +953,25 @@ public class ModEventHandlerClient { } } } + + if(event.phase == Phase.START) { + EntityPlayer player = mc.thePlayer; + + float discriminator = 0.003F; + float defaultStepSize = 0.5F; + int newStepSize = 0; + + if(player.inventory.armorInventory[2] != null && player.inventory.armorInventory[2].getItem() instanceof ArmorFSB) { + ArmorFSB plate = (ArmorFSB) player.inventory.armorInventory[2].getItem(); + if(plate.hasFSBArmor(player)) newStepSize = plate.stepSize; + } + + if(newStepSize > 0) { + player.stepHeight = newStepSize + discriminator; + } else { + for(int i = 1; i < 4; i++) if(player.stepHeight == i + discriminator) player.stepHeight = defaultStepSize; + } + } } @SideOnly(Side.CLIENT) @@ -863,21 +981,73 @@ public class ModEventHandlerClient { if(event.phase == Phase.START && GeneralConfig.enableSkyboxes) { World world = Minecraft.getMinecraft().theWorld; + if(world == null) return; - if(world != null && world.provider instanceof WorldProviderSurface) { - - IRenderHandler sky = world.provider.getSkyRenderer(); + IRenderHandler sky = world.provider.getSkyRenderer(); + + if(world.provider instanceof WorldProviderSurface) { if(ImpactWorldHandler.getDustForClient(world) > 0 || ImpactWorldHandler.getFireForClient(world) > 0) { //using a chainloader isn't necessary since none of the sky effects should render anyway if(!(sky instanceof RenderNTMSkyboxImpact)) { world.provider.setSkyRenderer(new RenderNTMSkyboxImpact()); + return; } - } else { + } + } + + if(world.provider.dimensionId == 0) { + + if(!(sky instanceof RenderNTMSkyboxChainloader)) { + world.provider.setSkyRenderer(new RenderNTMSkyboxChainloader(sky)); + } + } + } + } - if(!(sky instanceof RenderNTMSkyboxChainloader)) { - world.provider.setSkyRenderer(new RenderNTMSkyboxChainloader(sky)); + @SideOnly(Side.CLIENT) + @SubscribeEvent + public void onMouseClicked(InputEvent.KeyInputEvent event) { + + Minecraft mc = Minecraft.getMinecraft(); + if(GeneralConfig.enableKeybindOverlap && (mc.currentScreen == null || mc.currentScreen.allowUserInput)) { + boolean state = Mouse.getEventButtonState(); + int keyCode = Mouse.getEventButton() - 100; + + //if anything errors here, run ./gradlew clean setupDecompWorkSpace + for(Object o : KeyBinding.keybindArray) { + KeyBinding key = (KeyBinding) o; + + if(key.getKeyCode() == keyCode && KeyBinding.hash.lookup(key.getKeyCode()) != key) { + + key.pressed = state; + if(state) { + key.pressTime++; + } + } + } + } + } + + @SideOnly(Side.CLIENT) + @SubscribeEvent + public void onKeyTyped(InputEvent.KeyInputEvent event) { + + Minecraft mc = Minecraft.getMinecraft(); + if(GeneralConfig.enableKeybindOverlap && (mc.currentScreen == null || mc.currentScreen.allowUserInput)) { + boolean state = Keyboard.getEventKeyState(); + int keyCode = Keyboard.getEventKey(); + + //if anything errors here, run ./gradlew clean setupDecompWorkSpace + for(Object o : KeyBinding.keybindArray) { + KeyBinding key = (KeyBinding) o; + + if(keyCode != 0 && key.getKeyCode() == keyCode && KeyBinding.hash.lookup(key.getKeyCode()) != key) { + + key.pressed = state; + if(state) { + key.pressTime++; } } } @@ -1092,4 +1262,48 @@ public class ModEventHandlerClient { GL11.glEnable(GL11.GL_LIGHTING); } } + + @SubscribeEvent + public void worldTick(WorldTickEvent event) { + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + + if(player != null && player.ridingEntity instanceof EntityRailCarRidable && player instanceof EntityClientPlayerMP) { + EntityRailCarRidable train = (EntityRailCarRidable) player.ridingEntity; + EntityClientPlayerMP client = (EntityClientPlayerMP) player; + + //mojank compensation, because apparently the "this makes the render work" method also determines the fucking input + if(!train.shouldRiderSit()) { + client.sendQueue.addToSendQueue(new C03PacketPlayer.C05PacketPlayerLook(client.rotationYaw, client.rotationPitch, client.onGround)); + client.sendQueue.addToSendQueue(new C0CPacketInput(client.moveStrafing, client.moveForward, client.movementInput.jump, client.movementInput.sneak)); + } + } + } + + @SubscribeEvent + public void onOpenGUI(GuiOpenEvent event) { + + if(event.gui instanceof GuiMainMenu) { + GuiMainMenu main = (GuiMainMenu) event.gui; + int rand = (int)(Math.random() * 150); + + switch(rand) { + case 0: main.splashText = "Floppenheimer!"; break; + case 1: main.splashText = "i should dip my balls in sulfuric acid"; break; + case 2: main.splashText = "All answers are popbob!"; break; + case 3: main.splashText = "None may enter The Orb!"; break; + case 4: main.splashText = "Wacarb was here"; break; + case 5: main.splashText = "SpongeBoy me Bob I am overdosing on keramine agagagagaga"; break; + case 6: main.splashText = EnumChatFormatting.RED + "I know where you live, " + System.getProperty("user.name"); break; + case 7: main.splashText = "Nice toes, now hand them over."; break; + case 8: main.splashText = "I smell burnt toast!"; break; + case 9: main.splashText = "There are bugs under your skin!"; break; + case 10: main.splashText = "Fentanyl!"; break; + case 11: main.splashText = "Do drugs!"; break; + case 12: main.splashText = "Imagine being scared by splash texts!"; break; + } + + if(Math.random() < 0.1) main.splashText = "Redditors aren't people!"; + } + } } diff --git a/src/main/java/com/hbm/main/ModEventHandlerImpact.java b/src/main/java/com/hbm/main/ModEventHandlerImpact.java index fbad76c79..7f178531f 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerImpact.java +++ b/src/main/java/com/hbm/main/ModEventHandlerImpact.java @@ -31,10 +31,11 @@ import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.storage.ExtendedBlockStorage; import net.minecraftforge.common.DimensionManager; -import net.minecraftforge.event.entity.EntityJoinWorldEvent; +import net.minecraftforge.event.entity.living.LivingSpawnEvent.CheckSpawn; import net.minecraftforge.event.terraingen.BiomeEvent; import net.minecraftforge.event.terraingen.DecorateBiomeEvent; import net.minecraftforge.event.terraingen.PopulateChunkEvent; +import net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate; import net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType; import net.minecraftforge.event.world.WorldEvent; @@ -100,31 +101,47 @@ public class ModEventHandlerImpact { }*/ @SubscribeEvent - public void extinction(EntityJoinWorldEvent event) { + public void extinction(CheckSpawn event) { TomSaveData data = TomSaveData.forWorld(event.world); if(data.impact) { - if(!(event.entity instanceof EntityPlayer) && event.entity instanceof EntityLivingBase) { - EntityLivingBase living = (EntityLivingBase) event.entity; + if(!(event.entityLiving instanceof EntityPlayer) && event.entityLiving instanceof EntityLivingBase) { if(event.world.provider.dimensionId == 0) { - if(event.entity.height >= 0.85f || event.entity.width >= 0.85f && event.entity.ticksExisted < 20 && !(event.entity instanceof EntityWaterMob) && !living.isChild()) { - event.setCanceled(true); + if(event.entityLiving.height >= 0.85F || event.entityLiving.width >= 0.85F && !(event.entity instanceof EntityWaterMob) && !event.entityLiving.isChild()) { + event.setResult(Result.DENY); + event.entityLiving.setDead(); } } - if(event.entity instanceof EntityWaterMob && event.entity.ticksExisted < 20) { + if(event.entityLiving instanceof EntityWaterMob) { Random rand = new Random(); - if(rand.nextInt(9) != 0) { - event.setCanceled(true); + if(rand.nextInt(5) != 0) { + event.setResult(Result.DENY); + event.entityLiving.setDead(); } } } } } + + @SubscribeEvent + public void onPopulate(Populate event) { + + if(event.type == Populate.EventType.ANIMALS) { + + TomSaveData data = TomSaveData.forWorld(event.world); + + if(data.impact) { + event.setResult(Result.DENY); + } + } + } @SubscribeEvent(priority = EventPriority.LOWEST) public void onLoad(WorldEvent.Load event) { + TomSaveData.resetLastCached(); + if(GeneralConfig.enableImpactWorldProvider) { DimensionManager.unregisterProviderType(0); DimensionManager.registerProviderType(0, WorldProviderNTM.class, true); diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index 1c629ee3f..50156b735 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -1,8 +1,11 @@ package com.hbm.main; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GLContext; import com.hbm.blocks.ICustomBlockHighlight; +import com.hbm.config.RadiationConfig; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.items.armor.IArmorDisableModel; import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart; import com.hbm.packet.PermaSyncHandler; @@ -10,7 +13,9 @@ import com.hbm.render.model.ModelMan; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.entity.RenderManager; @@ -23,6 +28,10 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.client.event.DrawBlockHighlightEvent; +import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.client.event.EntityViewRenderEvent.FogColors; +import net.minecraftforge.client.event.EntityViewRenderEvent.FogDensity; +import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.client.event.RenderPlayerEvent; public class ModEventHandlerRenderer { @@ -318,4 +327,67 @@ public class ModEventHandlerRenderer { GL11.glPopMatrix(); } }*/ + + float renderSoot = 0; + + @SubscribeEvent + public void worldTick(WorldTickEvent event) { + + if(event.phase == event.phase.START && RadiationConfig.enableSootFog) { + + float step = 0.05F; + float soot = PermaSyncHandler.pollution[PollutionType.SOOT.ordinal()]; + + if(Math.abs(renderSoot - soot) < step) { + renderSoot = soot; + } else if(renderSoot < soot) { + renderSoot += step; + } else if(renderSoot > soot) { + renderSoot -= step; + } + } + } + + @SubscribeEvent(priority = EventPriority.LOW) + public void thickenFog(FogDensity event) { + float soot = (float) (renderSoot - RadiationConfig.sootFogThreshold); + if(soot > 0 && RadiationConfig.enableSootFog) { + + float farPlaneDistance = (float) (Minecraft.getMinecraft().gameSettings.renderDistanceChunks * 16); + float fogDist = farPlaneDistance / (1 + soot * 5F / (float) RadiationConfig.sootFogDivisor); + GL11.glFogf(GL11.GL_FOG_START, 0); + GL11.glFogf(GL11.GL_FOG_END, fogDist); + + if(GLContext.getCapabilities().GL_NV_fog_distance) { + GL11.glFogi(34138, 34139); + } + //GL11.glFogi(GL11.GL_FOG_MODE, GL11.GL_EXP); + //GL11.glFogf(GL11.GL_FOG_DENSITY, 2F); + event.setCanceled(true); + } + } + + @SubscribeEvent(priority = EventPriority.LOW) + public void tintFog(FogColors event) { + float soot = (float) (renderSoot - RadiationConfig.sootFogThreshold); + float sootColor = 0.15F; + float sootReq = (float) RadiationConfig.sootFogDivisor; + if(soot > 0 && RadiationConfig.enableSootFog) { + float interp = Math.min(soot / sootReq, 1F); + event.red = event.red * (1 - interp) + sootColor * interp; + event.green = event.green * (1 - interp) + sootColor * interp; + event.blue = event.blue * (1 - interp) + sootColor * interp; + } + } + + @SubscribeEvent + public void onRenderHUD(RenderGameOverlayEvent.Pre event) { + + if(event.type == ElementType.HOTBAR && (ModEventHandlerClient.flashTimestamp + ModEventHandlerClient.flashDuration - System.currentTimeMillis()) > 0) { + double mult = (ModEventHandlerClient.flashTimestamp + ModEventHandlerClient.flashDuration - System.currentTimeMillis()) / (double) ModEventHandlerClient.flashDuration * 2; + double horizontal = MathHelper.clamp_double(Math.sin(System.currentTimeMillis() * 0.02), -0.7, 0.7) * 5; + double vertical = MathHelper.clamp_double(Math.sin(System.currentTimeMillis() * 0.01 + 2), -0.7, 0.7) * 1; + GL11.glTranslated(horizontal * mult, vertical * mult, 0); + } + } } diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 03221742b..1d1697804 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -4,6 +4,8 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; +import com.hbm.config.CustomMachineConfigJSON; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; import com.hbm.config.VersatileConfig; import com.hbm.handler.nei.*; import com.hbm.items.ModItems; @@ -14,6 +16,8 @@ import codechicken.nei.api.API; import codechicken.nei.api.IConfigureNEI; import codechicken.nei.api.IHighlightHandler; import codechicken.nei.api.ItemInfo.Layout; +import codechicken.nei.recipe.GuiCraftingRecipe; +import codechicken.nei.recipe.GuiUsageRecipe; import codechicken.nei.recipe.ICraftingHandler; import codechicken.nei.recipe.IUsageHandler; import net.minecraft.entity.player.EntityPlayer; @@ -32,7 +36,6 @@ public class NEIConfig implements IConfigureNEI { registerHandler(new CentrifugeRecipeHandler()); registerHandler(new GasCentrifugeRecipeHandler()); registerHandler(new BreederRecipeHandler()); - registerHandler(new CMBFurnaceRecipeHandler()); registerHandler(new CyclotronRecipeHandler()); registerHandler(new AssemblerRecipeHandler()); registerHandler(new RefineryRecipeHandler()); @@ -70,11 +73,16 @@ public class NEIConfig implements IConfigureNEI { registerHandler(new SawmillHandler()); registerHandler(new MixerHandler()); registerHandler(new OutgasserHandler()); + registerHandler(new ElectrolyserFluidHandler()); + registerHandler(new ElectrolyserMetalHandler()); + registerHandler(new AshpitHandler()); + registerHandler(new ArcWelderHandler()); + registerHandler(new ExposureChamberHandler()); + + for(MachineConfiguration conf : CustomMachineConfigJSON.niceList) registerHandlerBypass(new CustomMachineHandler(conf)); //fluids registerHandler(new FluidRecipeHandler()); - - //registerHandler(new ChunkyHandler()); //Some things are even beyond my control...or are they? API.hideItem(ItemBattery.getEmptyBattery(ModItems.memory)); @@ -95,13 +103,13 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModBlocks.transission_hatch)); API.hideItem(new ItemStack(ModItems.euphemium_kit)); API.hideItem(new ItemStack(ModItems.bobmazon_hidden)); + API.hideItem(new ItemStack(ModItems.book_lore)); //the broken nbt-less one shouldn't show up in normal play anyway if(MainRegistry.polaroidID != 11) { API.hideItem(new ItemStack(ModItems.book_secret)); API.hideItem(new ItemStack(ModItems.book_of_)); API.hideItem(new ItemStack(ModItems.burnt_bark)); API.hideItem(new ItemStack(ModItems.ams_core_thingy)); } - API.hideItem(new ItemStack(ModBlocks.dummy_block_assembler)); API.hideItem(new ItemStack(ModBlocks.dummy_block_drill)); API.hideItem(new ItemStack(ModBlocks.dummy_block_ams_base)); API.hideItem(new ItemStack(ModBlocks.dummy_block_ams_emitter)); @@ -110,7 +118,6 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModBlocks.dummy_block_blast)); API.hideItem(new ItemStack(ModBlocks.dummy_block_uf6)); API.hideItem(new ItemStack(ModBlocks.dummy_block_puf6)); - API.hideItem(new ItemStack(ModBlocks.dummy_port_assembler)); API.hideItem(new ItemStack(ModBlocks.dummy_port_drill)); API.hideItem(new ItemStack(ModBlocks.dummy_port_ams_base)); API.hideItem(new ItemStack(ModBlocks.dummy_port_ams_emitter)); @@ -157,6 +164,12 @@ public class NEIConfig implements IConfigureNEI { API.registerRecipeHandler((ICraftingHandler) o); API.registerUsageHandler((IUsageHandler) o); } + + /** Bypasses the utterly useless restriction of one registered handler per class */ + public static void registerHandlerBypass(Object o) { + GuiCraftingRecipe.craftinghandlers.add((ICraftingHandler) o); + GuiUsageRecipe.usagehandlers.add((IUsageHandler) o); + } @Override public String getName() { diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index c56c4ed0d..9816aee87 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -48,6 +48,7 @@ public class ResourceManager { public static final IModelCustom crucible_heat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/crucible.obj")); public static final IModelCustom boiler = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/boiler.obj")); public static final IModelCustom boiler_burst = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/boiler_burst.obj")); + public static final IModelCustom boiler_industrial = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/industrial_boiler.obj")); public static final IModelCustom hephaestus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/hephaestus.obj")); //Furnaces @@ -76,10 +77,13 @@ public class ResourceManager { public static final IModelCustom catalytic_reformer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/catalytic_reformer.obj")); public static final IModelCustom liquefactor = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/liquefactor.obj")); public static final IModelCustom solidifier = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/solidifier.obj")); + public static final IModelCustom compressor = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/compressor.obj")); public static final IModelCustom coker = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/coker.obj")); //Flare Stack public static final IModelCustom oilflare = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/flare_stack.obj")); + public static final IModelCustom chimney_brick = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chimney_brick.obj")); + public static final IModelCustom chimney_industrial = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chimney_industrial.obj")); //Tank public static final IModelCustom fluidtank = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fluidtank.obj")); @@ -93,6 +97,9 @@ public class ResourceManager { //Gas Turbine public static final IModelCustom turbinegas = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbinegas.obj")); + //Pumps + public static final IModelCustom pump = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/pump.obj")).asDisplayList(); + //Large Turbine public static final IModelCustom steam_engine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/steam_engine.obj")).asDisplayList(); public static final IModelCustom turbine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbine.obj")); @@ -101,6 +108,10 @@ public class ResourceManager { //Cooling Tower public static final IModelCustom tower_small = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/tower_small.obj")); public static final IModelCustom tower_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/tower_large.obj")); + public static final IModelCustom condenser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/condenser.obj")); + + //Wood burner + public static final IModelCustom wood_burner = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/wood_burner.obj")); //IGen public static final IModelCustom igen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/igen.obj")); @@ -119,6 +130,7 @@ public class ResourceManager { public static final IModelCustom press_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/press_head.obj")); public static final IModelCustom epress_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/epress_body.obj")); public static final IModelCustom epress_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/epress_head.obj")); + public static final IModelCustom conveyor_press = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/conveyor_press.obj")); //Assembler public static final IModelCustom assembler_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/assembler_new_body.obj")); @@ -128,7 +140,7 @@ public class ResourceManager { public static final IModelCustom assemfac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/assemfac.obj")); //Chemplant - public static final IModelCustom chemplant_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_body.obj")); + public static final IModelCustom chemplant_body = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_body.obj")); public static final IModelCustom chemplant_spinner = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_spinner.obj")); public static final IModelCustom chemplant_piston = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_piston.obj")); public static final IModelCustom chemplant_fluid = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_fluid.hmf")); @@ -138,6 +150,9 @@ public class ResourceManager { //Mixer public static final IModelCustom mixer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mixer.obj")); + //Arc Welder + public static final IModelCustom arc_welder = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/arc_welder.obj")); + //F6 TANKS public static final IModelCustom tank = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/tank.obj")); @@ -167,6 +182,9 @@ public class ResourceManager { //Cyclotron public static final IModelCustom cyclotron = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/cyclotron.obj")); + //Exposure Chamber + public static final IModelCustom exposure_chamber = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/exposure_chamber.obj")); + //RTG public static final IModelCustom rtg = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/rtg.obj")); @@ -191,6 +209,9 @@ public class ResourceManager { //Fan public static final IModelCustom fan = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/fan.obj")); + //Piston Inserter + public static final IModelCustom piston_inserter = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/piston_inserter.obj")); + //Sphere public static final IModelCustom sphere_ruv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_ruv.obj")); public static final IModelCustom sphere_iuv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_iuv.obj")); @@ -224,6 +245,7 @@ public class ResourceManager { public static final IModelCustom radar_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/radar_base.obj")); public static final IModelCustom radar_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/radar_head.obj")); public static final IModelCustom radar = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/radar.obj")); + public static final IModelCustom radar_screen = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/radar_screen.obj")); //Forcefield public static final IModelCustom forcefield_top = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/forcefield_top.obj")); @@ -236,7 +258,7 @@ public class ResourceManager { public static final IModelCustom bomb_boy = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/LilBoy1.obj")); public static final IModelCustom bomb_man = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/FatMan.obj")).asDisplayList(); public static final IModelCustom bomb_mike = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/ivymike.obj")); - public static final IModelCustom bomb_tsar = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/TsarBomba.obj")); + public static final IModelCustom bomb_tsar = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/tsar.obj")).asDisplayList(); public static final IModelCustom bomb_prototype = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/Prototype.obj")); public static final IModelCustom bomb_fleija = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/Fleija.obj")); public static final IModelCustom bomb_solinium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/ufp.obj")); @@ -286,11 +308,46 @@ public class ResourceManager { public static final IModelCustom blast_door_tooth = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_tooth.obj")); public static final IModelCustom blast_door_slider = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_slider.obj")); public static final IModelCustom blast_door_block = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_block.obj")); - + + //Sliding Blast Door + public static final ResourceLocation sliding_blast_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/sliding_blast_door.png"); + public static final ResourceLocation sliding_blast_door_variant1_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/sliding_blast_door_variant1.png"); + public static final ResourceLocation sliding_blast_door_variant2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/sliding_blast_door_variant2.png"); + + public static AnimatedModel sliding_blast_door; + public static Animation sliding_blast_door_anim; + //Doors public static AnimatedModel transition_seal; public static Animation transition_seal_anim; public static final WavefrontObjDisplayList fire_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/fire_door.obj")).asDisplayList(); + + //Secure Access Door + public static final ResourceLocation secure_access_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/secure_access_door.png"); + public static WavefrontObjDisplayList secure_access_door = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/secure_access_door.obj"))); + + public static final ResourceLocation water_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/water_door.png"); + public static WavefrontObjDisplayList water_door = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/water_door.obj"))); + + public static final ResourceLocation sliding_seal_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/sliding_seal_door.png"); + public static WavefrontObjDisplayList sliding_seal_door = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/sliding_seal_door.obj"))); + + public static final ResourceLocation round_airlock_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/round_airlock_door.png"); + public static WavefrontObjDisplayList round_airlock_door = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/round_airlock_door.obj"))); + + public static final ResourceLocation qe_sliding_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/qe_sliding_door.png"); + public static WavefrontObjDisplayList qe_sliding_door = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/qe_sliding_door.obj"))); + + public static final ResourceLocation qe_containment_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/qe_containment.png"); + public static WavefrontObjDisplayList qe_containment = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/qe_containment.obj"))); + + public static final ResourceLocation large_vehicle_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/large_vehicle_door.png"); + public static WavefrontObjDisplayList large_vehicle_door = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/large_vehicle_door.obj"))); + public static final ResourceLocation qe_containment_decal = new ResourceLocation(RefStrings.MODID, "textures/models/doors/qe_containment_decal.png"); + + + //Lantern + public static final IModelCustom lantern = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/trinkets/lantern.obj")); //Tesla Coil public static final IModelCustom tesla = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/tesla.obj")); @@ -301,6 +358,8 @@ public class ResourceManager { public static final IModelCustom ufo = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/ufo.obj")); public static final IModelCustom mini_ufo = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/mini_ufo.obj")); public static final IModelCustom siege_ufo = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/siege_ufo.obj")); + public static final IModelCustom glyphid = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/glyphid.obj")); + public static final IModelCustom drone = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mobs/quadcopter.obj")); //ZIRNOX public static final IModelCustom zirnox = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/zirnox.obj")); @@ -326,6 +385,9 @@ public class ResourceManager { //DecoContainer (File Cabinet for now) public static final IModelCustom file_cabinet = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/file_cabinet.obj")); + //TELEX + public static final IModelCustom telex = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/telex.obj")); + ////Textures TEs public static final ResourceLocation universal = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); @@ -371,6 +433,7 @@ public class ResourceManager { //Heaters public static final ResourceLocation heater_firebox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/firebox.png"); public static final ResourceLocation heater_oven_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/heating_oven.png"); + public static final ResourceLocation ashpit_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/ashpit.png"); public static final ResourceLocation heater_oilburner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/oilburner.png"); public static final ResourceLocation heater_electric_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/electric_heater.png"); public static final ResourceLocation heater_heatex_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/heater_heatex.png"); @@ -378,9 +441,11 @@ public class ResourceManager { //Heat Engines public static final ResourceLocation stirling_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/stirling.png"); public static final ResourceLocation stirling_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/stirling_steel.png"); + public static final ResourceLocation stirling_creative_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/stirling_creative.png"); public static final ResourceLocation sawmill_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/sawmill.png"); public static final ResourceLocation crucible_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crucible_heat.png"); public static final ResourceLocation boiler_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/boiler.png"); + public static final ResourceLocation boiler_industrial_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/industrial_boiler.png"); public static final ResourceLocation hephaestus_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/hephaestus.png"); //Furnaces @@ -402,10 +467,13 @@ public class ResourceManager { public static final ResourceLocation catalytic_reformer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/catalytic_reformer.png"); public static final ResourceLocation liquefactor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/liquefactor.png"); public static final ResourceLocation solidifier_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/solidifier.png"); + public static final ResourceLocation compressor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/compressor.png"); public static final ResourceLocation coker_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/coker.png"); //Flare Stack public static final ResourceLocation oilflare_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/flare_stack.png"); + public static final ResourceLocation chimney_brick_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/chimney_brick.png"); + public static final ResourceLocation chimney_industrial_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/chimney_industrial.png"); //Tank public static final ResourceLocation tank_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank.png"); @@ -421,6 +489,10 @@ public class ResourceManager { //Gas Turbine public static final ResourceLocation turbinegas_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/turbinegas.png"); + + //Pumps + public static final ResourceLocation pump_steam_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/pump_steam.png"); + public static final ResourceLocation pump_electric_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/pump_electric.png"); //Large Turbine public static final ResourceLocation steam_engine_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/steam_engine.png"); @@ -430,10 +502,14 @@ public class ResourceManager { //Cooling Tower public static final ResourceLocation tower_small_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/tower_small.png"); public static final ResourceLocation tower_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/tower_large.png"); + public static final ResourceLocation condenser_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/condenser.png"); //Deuterium Tower public static final ResourceLocation deuterium_tower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/machine_deuterium_tower.png"); + //Wood Burner + public static final ResourceLocation wood_burner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/wood_burner.png"); + //IGen public static final ResourceLocation igen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/igen.png"); public static final ResourceLocation igen_rotor = new ResourceLocation(RefStrings.MODID, "textures/models/machines/igen_rotor.png"); @@ -455,6 +531,8 @@ public class ResourceManager { public static final ResourceLocation press_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/press_head.png"); public static final ResourceLocation epress_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/epress_body.png"); public static final ResourceLocation epress_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/epress_head.png"); + public static final ResourceLocation conveyor_press_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press.png"); + public static final ResourceLocation conveyor_press_belt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press_belt.png"); //Assembler public static final ResourceLocation assembler_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/assembler_base_new.png"); @@ -472,6 +550,9 @@ public class ResourceManager { //Mixer public static final ResourceLocation mixer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mixer.png"); + + //Welder + public static final ResourceLocation arc_welder_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/arc_welder.png"); //F6 TANKS public static final ResourceLocation uf6_tex = new ResourceLocation(RefStrings.MODID, "textures/models/UF6Tank.png"); @@ -515,6 +596,9 @@ public class ResourceManager { public static final ResourceLocation cyclotron_coin = new ResourceLocation(RefStrings.MODID, "textures/models/machines/cyclotron_coin.png"); public static final ResourceLocation cyclotron_coin_filled = new ResourceLocation(RefStrings.MODID, "textures/models/machines/cyclotron_coin_filled.png"); + //Exposure Chamber + public static final ResourceLocation exposure_chamber_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/exposure_chamber.png"); + //RTG public static final ResourceLocation rtg_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rtg.png"); public static final ResourceLocation rtg_cell_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rtg_cell.png"); @@ -538,6 +622,9 @@ public class ResourceManager { //Fan public static final ResourceLocation fan_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fan.png"); + //Piston_Inserter + public static final ResourceLocation piston_inserter_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/piston_inserter.png"); + //Radgen public static final ResourceLocation radgen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radgen.png"); @@ -574,6 +661,7 @@ public class ResourceManager { public static final ResourceLocation radar_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/radar_head.png"); public static final ResourceLocation radar_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_base.png"); public static final ResourceLocation radar_dish_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_dish.png"); + public static final ResourceLocation radar_screen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_screen.png"); //Forcefield public static final ResourceLocation forcefield_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/forcefield_base.png"); @@ -587,7 +675,7 @@ public class ResourceManager { public static final ResourceLocation bomb_boy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/lilboy.png"); public static final ResourceLocation bomb_man_tex = new ResourceLocation(RefStrings.MODID, "textures/models/FatMan.png"); public static final ResourceLocation bomb_mike_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/ivymike.png"); - public static final ResourceLocation bomb_tsar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/TsarBomba.png"); + public static final ResourceLocation bomb_tsar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/tsar.png"); public static final ResourceLocation bomb_prototype_tex = new ResourceLocation(RefStrings.MODID, "textures/models/Prototype.png"); public static final ResourceLocation bomb_fleija_tex = new ResourceLocation(RefStrings.MODID, "textures/models/Fleija.png"); public static final ResourceLocation bomb_solinium_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/ufp.png"); @@ -642,6 +730,10 @@ public class ResourceManager { public static final ResourceLocation transition_seal_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/transition_seal.png"); public static final ResourceLocation fire_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/fire_door.png"); + //Lantern + public static final ResourceLocation lantern_tex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/lantern.png"); + public static final ResourceLocation lantern_rusty_tex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/lantern_rusty.png"); + //Tesla Coil public static final ResourceLocation tesla_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tesla.png"); public static final ResourceLocation teslacrab_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/teslacrab.png"); @@ -650,6 +742,14 @@ public class ResourceManager { public static final ResourceLocation iou = new ResourceLocation(RefStrings.MODID, "textures/entity/iou.png"); public static final ResourceLocation spider_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/blockspider.png"); public static final ResourceLocation ufo_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/ufo.png"); + public static final ResourceLocation glyphid_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid.png"); + public static final ResourceLocation glyphid_brawler_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_brawler.png"); + public static final ResourceLocation glyphid_behemoth_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_behemoth.png"); + public static final ResourceLocation glyphid_brenda_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_brenda.png"); + public static final ResourceLocation glyphid_bombardier_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_bombardier.png"); + public static final ResourceLocation glyphid_blaster_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_blaster.png"); + public static final ResourceLocation glyphid_scout_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_scout.png"); + public static final ResourceLocation glyphid_nuclear_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_nuclear.png"); //ZIRNOX public static final ResourceLocation zirnox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/zirnox.png"); @@ -673,6 +773,9 @@ public class ResourceManager { public static final ResourceLocation file_cabinet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/file_cabinet.png"); public static final ResourceLocation file_cabinet_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/file_cabinet_steel.png"); + //TELEX + public static final ResourceLocation telex_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/telex.png"); + ////Obj Items //Shimmer Sledge @@ -719,6 +822,11 @@ public class ResourceManager { public static final IModelCustom m2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/m2_browning.obj")).asDisplayList(); //large fella should be a display list public static final IModelCustom lunatic_sniper = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lunatic_sniper.obj")).asDisplayList(); public static final IModelCustom tau = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/tau.obj")); + public static final IModelCustom benelli = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/benelli_new.obj")).asDisplayList(); + public static final IModelCustom coilgun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/coilgun.obj")).asDisplayList(); + public static final IModelCustom cryocannon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/cryo_cannon.obj")).asDisplayList(); + public static final IModelCustom uac_pistol = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/UAC pistol.obj")).asDisplayList(); + public static final IModelCustom congolake = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/congolake.obj")).asDisplayList(); public static final IModelCustom lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj")); @@ -741,6 +849,8 @@ public class ResourceManager { public static final IModelCustom armor_wings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/murk.obj")); public static final IModelCustom armor_solstice = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/solstice.obj")); public static final IModelCustom player_manly_af = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/armor/player_fem.obj")); + public static final IModelCustom armor_envsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/envsuit.obj")); + public static final IModelCustom armor_trenchmaster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/trenchmaster.obj")); ////Texture Items @@ -809,6 +919,11 @@ public class ResourceManager { public static final ResourceLocation m2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/m2_browning.png"); public static final ResourceLocation lunatic_sniper_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lunatic_sniper.png"); public static final ResourceLocation tau_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/tau.png"); + public static final ResourceLocation benelli_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/benelli_tex.png"); + public static final ResourceLocation coilgun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/coilgun.png"); + public static final ResourceLocation cryocannon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/cryo_cannon.png"); + public static final ResourceLocation uac_pistol_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/pistol_texture.png"); + public static final ResourceLocation congolake_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/congolake.png"); public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); @@ -835,6 +950,12 @@ public class ResourceManager { public static final ResourceLocation bj_jetpack = new ResourceLocation(RefStrings.MODID, "textures/armor/bj_jetpack.png"); public static final ResourceLocation bj_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/bj_arm.png"); + public static final ResourceLocation envsuit_helmet = new ResourceLocation(RefStrings.MODID, "textures/armor/envsuit_helmet.png"); + public static final ResourceLocation envsuit_leg = new ResourceLocation(RefStrings.MODID, "textures/armor/envsuit_leg.png"); + public static final ResourceLocation envsuit_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/envsuit_chest.png"); + public static final ResourceLocation envsuit_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/envsuit_arm.png"); + public static final ResourceLocation envsuit_tail = new ResourceLocation(RefStrings.MODID, "textures/armor/envsuit_tail.png"); + public static final ResourceLocation hev_helmet = new ResourceLocation(RefStrings.MODID, "textures/armor/hev_helmet.png"); public static final ResourceLocation hev_leg = new ResourceLocation(RefStrings.MODID, "textures/armor/hev_leg.png"); public static final ResourceLocation hev_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/hev_chest.png"); @@ -876,6 +997,11 @@ public class ResourceManager { public static final ResourceLocation rpa_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/rpa_chest.png"); public static final ResourceLocation rpa_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/rpa_arm.png"); + public static final ResourceLocation trenchmaster_helmet = new ResourceLocation(RefStrings.MODID, "textures/armor/trenchmaster_helmet.png"); + public static final ResourceLocation trenchmaster_leg = new ResourceLocation(RefStrings.MODID, "textures/armor/trenchmaster_leg.png"); + public static final ResourceLocation trenchmaster_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/trenchmaster_chest.png"); + public static final ResourceLocation trenchmaster_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/trenchmaster_arm.png"); + public static final ResourceLocation mod_tesla = new ResourceLocation(RefStrings.MODID, "textures/armor/mod_tesla.png"); public static final ResourceLocation armor_bismuth_tex = new ResourceLocation(RefStrings.MODID, "textures/armor/bismuth.png"); @@ -907,6 +1033,7 @@ public class ResourceManager { //Projectiles public static final IModelCustom projectiles = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/projectiles/projectiles.obj")); + public static final IModelCustom leadburster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/projectiles/leadburster.obj")); public static final IModelCustom casings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/effect/casings.obj")); //Bomber @@ -914,9 +1041,10 @@ public class ResourceManager { public static final IModelCustom b29 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/b29.obj")); //Missiles - public static final IModelCustom missileV2 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileV2.obj")); - public static final IModelCustom missileStrong = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileGeneric.obj")); - public static final IModelCustom missileHuge = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileHuge.obj")); + public static final IModelCustom missileV2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_v2.obj")).asDisplayList(); + public static final IModelCustom missileABM = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_abm.obj")).asDisplayList(); + public static final IModelCustom missileStrong = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_strong.obj")); + public static final IModelCustom missileHuge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_huge.obj")); public static final IModelCustom missileNuclear = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileNeon.obj")); public static final IModelCustom missileMIRV = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileMIRV.obj")); public static final IModelCustom missileThermo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileThermo.obj")); @@ -1005,6 +1133,12 @@ public class ResourceManager { public static final IModelCustom cart = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart.obj")); public static final IModelCustom cart_destroyer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_destroyer.obj")); public static final IModelCustom cart_powder = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_powder.obj")); + public static final IModelCustom train_cargo_tram = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/tram.obj")); + public static final IModelCustom train_cargo_tram_trailer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/tram_trailer.obj")); + public static final IModelCustom tunnel_bore = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/vehicles/tunnel_bore.obj")); + + //Drones + public static final IModelCustom delivery_drone = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/drone.obj")); ////Texture Entities @@ -1032,6 +1166,7 @@ public class ResourceManager { public static final ResourceLocation rocket_mirv_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/rocket_mirv.png"); public static final ResourceLocation mini_nuke_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/mini_nuke.png"); public static final ResourceLocation mini_mirv_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/mini_mirv.png"); + public static final ResourceLocation leadburster_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/leadburster.png"); public static final ResourceLocation casings_tex = new ResourceLocation(RefStrings.MODID, "textures/particle/casings.png"); //Bomber @@ -1046,20 +1181,21 @@ public class ResourceManager { public static final ResourceLocation b29_3_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_3.png"); //Missiles - public static final ResourceLocation missileV2_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileV2_HE.png"); - public static final ResourceLocation missileV2_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileV2_IN.png"); - public static final ResourceLocation missileV2_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileV2_CL.png"); - public static final ResourceLocation missileV2_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileV2_BU.png"); - public static final ResourceLocation missileAA_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileAA.png"); - public static final ResourceLocation missileStrong_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_HE.png"); - public static final ResourceLocation missileStrong_EMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_EMP.png"); - public static final ResourceLocation missileStrong_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_IN.png"); - public static final ResourceLocation missileStrong_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_CL.png"); - public static final ResourceLocation missileStrong_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_BU.png"); - public static final ResourceLocation missileHuge_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileHuge_HE.png"); - public static final ResourceLocation missileHuge_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileHuge_IN.png"); - public static final ResourceLocation missileHuge_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileHuge_CL.png"); - public static final ResourceLocation missileHuge_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileHuge_BU.png"); + public static final ResourceLocation missileV2_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2.png"); + public static final ResourceLocation missileV2_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_inc.png"); + public static final ResourceLocation missileV2_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_cl.png"); + public static final ResourceLocation missileV2_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_bu.png"); + public static final ResourceLocation missileV2_decoy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_decoy.png"); + public static final ResourceLocation missileAA_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_abm.png"); + public static final ResourceLocation missileStrong_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong.png"); + public static final ResourceLocation missileStrong_EMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_emp.png"); + public static final ResourceLocation missileStrong_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_inc.png"); + public static final ResourceLocation missileStrong_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_cl.png"); + public static final ResourceLocation missileStrong_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_bu.png"); + public static final ResourceLocation missileHuge_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_huge.png"); + public static final ResourceLocation missileHuge_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_huge_inc.png"); + public static final ResourceLocation missileHuge_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_huge_cl.png"); + public static final ResourceLocation missileHuge_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_huge_bu.png"); public static final ResourceLocation missileNuclear_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileNeon.png"); public static final ResourceLocation missileMIRV_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileNeonH.png"); public static final ResourceLocation missileVolcano_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileNeonV.png"); @@ -1278,6 +1414,13 @@ public class ResourceManager { public static final ResourceLocation cart_powder_tex = new ResourceLocation(RefStrings.MODID, "textures/blocks/block_gunpowder.png"); public static final ResourceLocation cart_semtex_side = new ResourceLocation(RefStrings.MODID, "textures/blocks/semtex_side.png"); public static final ResourceLocation cart_semtex_top = new ResourceLocation(RefStrings.MODID, "textures/blocks/semtex_bottom.png"); + public static final ResourceLocation train_tram = new ResourceLocation(RefStrings.MODID, "textures/models/trains/tram.png"); + public static final ResourceLocation tram_trailer = new ResourceLocation(RefStrings.MODID, "textures/models/trains/tram_trailer.png"); + + //Drone + public static final ResourceLocation delivery_drone_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drone.png"); + public static final ResourceLocation delivery_drone_express_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drone_express.png"); + public static final ResourceLocation delivery_drone_request_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drone_request.png"); //ISBRHs public static final IModelCustom scaffold = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/scaffold.obj")); @@ -1317,6 +1460,13 @@ public class ResourceManager { public static final IModelCustom pipe_neo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/pipe_neo.obj")); public static final IModelCustom difurnace_extension = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/difurnace_extension.obj")); public static final IModelCustom splitter = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/splitter.obj")); + public static final IModelCustom rail_narrow_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow.obj")); + public static final IModelCustom rail_narrow_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow_bend.obj")); + public static final IModelCustom rail_standard_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard.obj")); + public static final IModelCustom rail_standard_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend.obj")); + public static final IModelCustom rail_standard_ramp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_ramp.obj")); + public static final IModelCustom rail_standard_buffer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_buffer.obj")); + public static final IModelCustom capacitor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/capacitor.obj")); public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj")); public static final IModelCustom charge_c4 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_c4.obj")); @@ -1338,5 +1488,8 @@ public class ResourceManager { public static void loadAnimatedModels(){ transition_seal = ColladaLoader.load(new ResourceLocation(RefStrings.MODID, "models/doors/seal.dae"), true); transition_seal_anim = ColladaLoader.loadAnim(24040, new ResourceLocation(RefStrings.MODID, "models/doors/seal.dae")); + + sliding_blast_door = ColladaLoader.load(new ResourceLocation(RefStrings.MODID, "models/doors/sliding_blast_door.dae")); + sliding_blast_door_anim = ColladaLoader.loadAnim(1200, new ResourceLocation(RefStrings.MODID, "models/doors/sliding_blast_door.dae")); } } diff --git a/src/main/java/com/hbm/main/ServerProxy.java b/src/main/java/com/hbm/main/ServerProxy.java index d479b8790..e30cbe562 100644 --- a/src/main/java/com/hbm/main/ServerProxy.java +++ b/src/main/java/com/hbm/main/ServerProxy.java @@ -20,12 +20,14 @@ public class ServerProxy { public static final int ID_FILTER = 1; public static final int ID_COMPASS = 2; public static final int ID_CABLE = 3; - public static final int ID_JETPACK = 4; - public static final int ID_HUD = 5; - public static final int ID_DETONATOR = 6; - public static final int ID_FLUID_ID = 7; - public static final int ID_GUN_MODE = 8; - public static final int ID_GAS_HAZARD = 9; + public static final int ID_DRONE = 4; + public static final int ID_JETPACK = 5; + public static final int ID_HUD = 6; + public static final int ID_DETONATOR = 7; + public static final int ID_FLUID_ID = 8; + public static final int ID_TOOLABILITY = 9; + public static final int ID_GUN_MODE = 10; + public static final int ID_GAS_HAZARD = 11; public void registerRenderInfo() { } public void registerTileEntitySpecialRenderer() { } @@ -41,7 +43,8 @@ public class ServerProxy { public void registerMissileItems() { } - public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch) { return null; } + public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch) { return null; } + public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch, int keepAlive) { return null; } public AudioWrapper getLoopedSoundStartStop(World world, String sound, String start, String stop, float x, float y, float z, float volume, float pitch) { return null; } public void playSound(String sound, Object data) { } @@ -82,4 +85,6 @@ public class ServerProxy { public boolean getImpact(World world) { return TomSaveData.forWorld(world).impact; } + + public void playSoundClient(double x, double y, double z, String sound, float volume, float pitch) { } } \ No newline at end of file diff --git a/src/main/java/com/hbm/packet/AnvilCraftPacket.java b/src/main/java/com/hbm/packet/AnvilCraftPacket.java index bc1719702..d8b1049a4 100644 --- a/src/main/java/com/hbm/packet/AnvilCraftPacket.java +++ b/src/main/java/com/hbm/packet/AnvilCraftPacket.java @@ -1,12 +1,9 @@ package com.hbm.packet; -import com.hbm.blocks.ModBlocks; import com.hbm.inventory.container.ContainerAnvil; import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilConstructionRecipe; -import com.hbm.items.ItemAmmoEnums; -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; +import com.hbm.util.AchievementHandler; import com.hbm.util.InventoryUtil; import cpw.mods.fml.common.network.simpleimpl.IMessage; @@ -14,7 +11,6 @@ import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; public class AnvilCraftPacket implements IMessage { @@ -65,15 +61,7 @@ public class AnvilCraftPacket implements IMessage { if(InventoryUtil.doesPlayerHaveAStacks(p, recipe.input, true)) { InventoryUtil.giveChanceStacksToPlayer(p, recipe.output); - - if(recipe.output.get(0).stack.getItem() == Item.getItemFromBlock(ModBlocks.machine_difurnace_off)) - p.triggerAchievement(MainRegistry.achBlastFurnace); - if(recipe.output.get(0).stack.getItem() == Item.getItemFromBlock(ModBlocks.machine_assembler)) - p.triggerAchievement(MainRegistry.achAssembly); - if(recipe.output.get(0).stack.getItem() == ModItems.billet_pu_mix) - p.triggerAchievement(MainRegistry.achChicagoPile); - if(recipe.output.get(0).stack.getItem() == ModItems.ammo_4gauge && recipe.output.get(0).stack.getItemDamage() == ItemAmmoEnums.Ammo4Gauge.VAMPIRE.ordinal()) - p.triggerAchievement(MainRegistry.achWitchtaunter); + AchievementHandler.fire(p, recipe.output.get(0).stack); } else { break; diff --git a/src/main/java/com/hbm/packet/AuxGaugePacket.java b/src/main/java/com/hbm/packet/AuxGaugePacket.java index 299dee72f..1a9e99d5d 100644 --- a/src/main/java/com/hbm/packet/AuxGaugePacket.java +++ b/src/main/java/com/hbm/packet/AuxGaugePacket.java @@ -13,11 +13,6 @@ import com.hbm.tileentity.machine.TileEntityAMSLimiter; import com.hbm.tileentity.machine.TileEntityMachineArcFurnace; import com.hbm.tileentity.machine.TileEntityMachineBoiler; import com.hbm.tileentity.machine.TileEntityMachineBoilerElectric; -import com.hbm.tileentity.machine.TileEntityMachineCoal; -import com.hbm.tileentity.machine.TileEntityMachineDiesel; -import com.hbm.tileentity.machine.TileEntityMachineElectricFurnace; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge.ReactorFuelType; import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; import cpw.mods.fml.common.network.simpleimpl.IMessage; @@ -113,11 +108,6 @@ public class AuxGaugePacket implements IMessage { if(m.id == 1) selenium.powerCap = m.value; } - if (te instanceof TileEntityMachineDiesel) { - TileEntityMachineDiesel selenium = (TileEntityMachineDiesel)te; - - selenium.powerCap = m.value; - } if (te instanceof TileEntityBomber) { TileEntityBomber bomber = (TileEntityBomber)te; @@ -136,18 +126,6 @@ public class AuxGaugePacket implements IMessage { if(m.id == 1) boiler.burnTime = m.value; } - if (te instanceof TileEntityMachineCoal) { - TileEntityMachineCoal coalgen = (TileEntityMachineCoal)te; - - if(m.id == 0) - coalgen.burnTime = m.value; - } - if (te instanceof TileEntityMachineElectricFurnace) { - TileEntityMachineElectricFurnace furn = (TileEntityMachineElectricFurnace)te; - - if(m.id == 0) - furn.progress = m.value; - } if (te instanceof TileEntityMachineArcFurnace) { TileEntityMachineArcFurnace furn = (TileEntityMachineArcFurnace)te; @@ -165,24 +143,6 @@ public class AuxGaugePacket implements IMessage { nuke.primed = m.value == 1; } - if (te instanceof TileEntityMachineReactorLarge) { - TileEntityMachineReactorLarge reactor = (TileEntityMachineReactorLarge)te; - - if(m.id == 0) - reactor.rods = m.value; - if(m.id == 1) - reactor.coreHeat = m.value; - if(m.id == 2) - reactor.hullHeat = m.value; - if(m.id == 3) - reactor.size = m.value; - if(m.id == 4) - reactor.fuel = m.value; - if(m.id == 5) - reactor.waste = m.value; - if(m.id == 6) - reactor.type = ReactorFuelType.getEnum(m.value); - } if (te instanceof TileEntityCompactLauncher) { TileEntityCompactLauncher launcher = (TileEntityCompactLauncher)te; diff --git a/src/main/java/com/hbm/packet/BufPacket.java b/src/main/java/com/hbm/packet/BufPacket.java new file mode 100644 index 000000000..7ff502c9d --- /dev/null +++ b/src/main/java/com/hbm/packet/BufPacket.java @@ -0,0 +1,62 @@ +package com.hbm.packet; + +import com.hbm.tileentity.IBufPacketReceiver; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class BufPacket implements IMessage { + + int x; + int y; + int z; + IBufPacketReceiver rec; + ByteBuf buf; + + public BufPacket() { } + + public BufPacket(int x, int y, int z, IBufPacketReceiver rec) { + this.x = x; + this.y = y; + this.z = z; + this.rec = rec; + } + + @Override + public void fromBytes(ByteBuf buf) { + this.x = buf.readInt(); + this.y = buf.readInt(); + this.z = buf.readInt(); + this.buf = buf; + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + this.rec.serialize(buf); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(BufPacket m, MessageContext ctx) { + + if(Minecraft.getMinecraft().theWorld == null) + return null; + + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if(te instanceof IBufPacketReceiver) { + ((IBufPacketReceiver) te).deserialize(m.buf); + } + + return null; + } + } +} diff --git a/src/main/java/com/hbm/packet/NBTControlPacket.java b/src/main/java/com/hbm/packet/NBTControlPacket.java index 8ce47aa3c..226b3eae1 100644 --- a/src/main/java/com/hbm/packet/NBTControlPacket.java +++ b/src/main/java/com/hbm/packet/NBTControlPacket.java @@ -32,7 +32,6 @@ public class NBTControlPacket implements IMessage { try { buffer.writeNBTTagCompoundToBuffer(nbt); - } catch (IOException e) { e.printStackTrace(); } @@ -45,9 +44,8 @@ public class NBTControlPacket implements IMessage { y = buf.readInt(); z = buf.readInt(); - if (buffer == null) { - buffer = new PacketBuffer(Unpooled.buffer()); - } + if(buffer == null) buffer = new PacketBuffer(Unpooled.buffer()); + buffer.writeBytes(buf); } @@ -58,9 +56,8 @@ public class NBTControlPacket implements IMessage { buf.writeInt(y); buf.writeInt(z); - if (buffer == null) { - buffer = new PacketBuffer(Unpooled.buffer()); - } + if (buffer == null) buffer = new PacketBuffer(Unpooled.buffer()); + buf.writeBytes(buffer); } @@ -85,8 +82,10 @@ public class NBTControlPacket implements IMessage { IControlReceiver tile = (IControlReceiver)te; - if(tile.hasPermission(p)) + if(tile.hasPermission(p)) { + tile.receiveControl(p, nbt); tile.receiveControl(nbt); + } } } diff --git a/src/main/java/com/hbm/packet/NBTPacket.java b/src/main/java/com/hbm/packet/NBTPacket.java index 80645347d..3bd5afbcb 100644 --- a/src/main/java/com/hbm/packet/NBTPacket.java +++ b/src/main/java/com/hbm/packet/NBTPacket.java @@ -14,6 +14,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; import net.minecraft.tileentity.TileEntity; + +@Deprecated // rest in peace sweet little prince public class NBTPacket implements IMessage { PacketBuffer buffer; diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 3d94f2d10..9414d49a0 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -19,12 +19,6 @@ public class PacketDispatcher { wrapper.registerMessage(TEStructurePacket.Handler.class, TEStructurePacket.class, i++, Side.CLIENT); //Mining drill rotation for rendering wrapper.registerMessage(TEDrillPacket.Handler.class, TEDrillPacket.class, i++, Side.CLIENT); - //Mining drill torque for sounds - wrapper.registerMessage(TEDrillSoundPacket.Handler.class, TEDrillSoundPacket.class, i++, Side.CLIENT); - //Assembler cog rotation for rendering - wrapper.registerMessage(TEAssemblerPacket.Handler.class, TEAssemblerPacket.class, i++, Side.CLIENT); - //Missile type for rendering - wrapper.registerMessage(TEMissilePacket.Handler.class, TEMissilePacket.class, i++, Side.CLIENT); //Fluid packet for GUI wrapper.registerMessage(TEFluidPacket.Handler.class, TEFluidPacket.class, i++, Side.CLIENT); //Sound packet that keeps client and server separated @@ -33,16 +27,10 @@ public class PacketDispatcher { wrapper.registerMessage(ItemFolderPacket.Handler.class, ItemFolderPacket.class, i++, Side.SERVER); //Electricity gauge for GUI rendering wrapper.registerMessage(AuxElectricityPacket.Handler.class, AuxElectricityPacket.class, i++, Side.CLIENT); - //Universal package for machine gauges and states - wrapper.registerMessage(AuxGaugePacket.Handler.class, AuxGaugePacket.class, i++, Side.CLIENT); //Siren packet for looped sounds wrapper.registerMessage(TESirenPacket.Handler.class, TESirenPacket.class, i++, Side.CLIENT); //Signals server to change ItemStacks wrapper.registerMessage(ItemDesignatorPacket.Handler.class, ItemDesignatorPacket.class, i++, Side.SERVER); - //Siren packet for looped sounds - wrapper.registerMessage(TERadarPacket.Handler.class, TERadarPacket.class, i++, Side.CLIENT); - //Siren packet for looped sounds - wrapper.registerMessage(TERadarDestructorPacket.Handler.class, TERadarDestructorPacket.class, i++, Side.CLIENT); //Signals server to perform orbital strike, among other things wrapper.registerMessage(SatLaserPacket.Handler.class, SatLaserPacket.class, i++, Side.SERVER); //Universal package for sending small info packs back to server @@ -57,7 +45,7 @@ public class PacketDispatcher { wrapper.registerMessage(ExtPropPacket.Handler.class, ExtPropPacket.class, i++, Side.CLIENT); //Entity sound packet that keeps client and server separated wrapper.registerMessage(LoopedEntitySoundPacket.Handler.class, LoopedEntitySoundPacket.class, i++, Side.CLIENT); - //Entity sound packet that keeps client and server separated + //Packet for force fields wrapper.registerMessage(TEFFPacket.Handler.class, TEFFPacket.class, i++, Side.CLIENT); //Sends button information for ItemGunBase wrapper.registerMessage(GunButtonPacket.Handler.class, GunButtonPacket.class, i++, Side.SERVER); @@ -67,8 +55,6 @@ public class PacketDispatcher { wrapper.registerMessage(ItemBobmazonPacket.Handler.class, ItemBobmazonPacket.class, i++, Side.SERVER); //Packet to send missile multipart information to TEs wrapper.registerMessage(TEMissileMultipartPacket.Handler.class, TEMissileMultipartPacket.class, i++, Side.CLIENT); - //Packet to send NBT data to tile entities - wrapper.registerMessage(NBTPacket.Handler.class, NBTPacket.class, i++, Side.CLIENT); //Aux Particle Packet, New Technology: like the APP but with NBT wrapper.registerMessage(AuxParticlePacketNT.Handler.class, AuxParticlePacketNT.class, i++, Side.CLIENT); //Signals server to do coord based satellite stuff @@ -97,6 +83,11 @@ public class PacketDispatcher { wrapper.registerMessage(PermaSyncPacket.Handler.class, PermaSyncPacket.class, i++, Side.CLIENT); //Syncs biome information for single positions or entire chunks wrapper.registerMessage(BiomeSyncPacket.Handler.class, BiomeSyncPacket.class, i++, Side.CLIENT); + + //Tile sync + wrapper.registerMessage(AuxGaugePacket.Handler.class, AuxGaugePacket.class, i++, Side.CLIENT); //The horrid one + wrapper.registerMessage(NBTPacket.Handler.class, NBTPacket.class, i++, Side.CLIENT); //The convenient but laggy one + wrapper.registerMessage(BufPacket.Handler.class, BufPacket.class, i++, Side.CLIENT); //The not-so-convenient but not laggy one } } diff --git a/src/main/java/com/hbm/packet/PermaSyncHandler.java b/src/main/java/com/hbm/packet/PermaSyncHandler.java index 6d15243be..bcd566e72 100644 --- a/src/main/java/com/hbm/packet/PermaSyncHandler.java +++ b/src/main/java/com/hbm/packet/PermaSyncHandler.java @@ -5,6 +5,9 @@ import java.util.HashSet; import java.util.List; import com.hbm.handler.ImpactWorldHandler; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionData; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.potion.HbmPotion; import com.hbm.saveddata.TomSaveData; @@ -21,6 +24,7 @@ import net.minecraft.world.World; public class PermaSyncHandler { public static HashSet boykissers = new HashSet(); + public static float[] pollution = new float[PollutionType.values().length]; public static void writePacket(ByteBuf buf, World world, EntityPlayerMP player) { @@ -42,6 +46,14 @@ public class PermaSyncHandler { buf.writeShort((short) ids.size()); for(Integer i : ids) buf.writeInt(i); /// SHITTY MEMES /// + + /// POLLUTION /// + PollutionData pollution = PollutionHandler.getPollutionData(world, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ)); + if(pollution == null) pollution = new PollutionData(); + for(int i = 0; i < PollutionType.values().length; i++) { + buf.writeFloat(pollution.pollution[i]); + } + /// POLLUTION /// } public static void readPacket(ByteBuf buf, World world, EntityPlayer player) { @@ -58,5 +70,11 @@ public class PermaSyncHandler { int ids = buf.readShort(); for(int i = 0; i < ids; i++) boykissers.add(buf.readInt()); /// SHITTY MEMES /// + + /// POLLUTION /// + for(int i = 0; i < PollutionType.values().length; i++) { + pollution[i] = buf.readFloat(); + } + /// POLLUTION /// } } diff --git a/src/main/java/com/hbm/packet/TEAssemblerPacket.java b/src/main/java/com/hbm/packet/TEAssemblerPacket.java deleted file mode 100644 index fddaeedcb..000000000 --- a/src/main/java/com/hbm/packet/TEAssemblerPacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineAssembler; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TEAssemblerPacket implements IMessage { - - int x; - int y; - int z; - boolean progress; - - public TEAssemblerPacket() - { - - } - - public TEAssemblerPacket(int x, int y, int z, boolean bool) - { - this.x = x; - this.y = y; - this.z = z; - this.progress = bool; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - progress = buf.readBoolean(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeBoolean(progress); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(TEAssemblerPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityMachineAssembler) { - - TileEntityMachineAssembler gen = (TileEntityMachineAssembler) te; - gen.isProgressing = m.progress; - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/TEDoorAnimationPacket.java b/src/main/java/com/hbm/packet/TEDoorAnimationPacket.java index 9ffa77c65..7321aa015 100644 --- a/src/main/java/com/hbm/packet/TEDoorAnimationPacket.java +++ b/src/main/java/com/hbm/packet/TEDoorAnimationPacket.java @@ -15,20 +15,22 @@ public class TEDoorAnimationPacket implements IMessage { public int x, y, z; public byte state; + public byte skinIndex; public byte texture; public TEDoorAnimationPacket() { } public TEDoorAnimationPacket(int x, int y, int z, byte state) { - this(x, y, z, state, (byte) -1); + this(x, y, z, state, (byte) 0, (byte) -1); } - public TEDoorAnimationPacket(int x, int y, int z, byte state, byte tex) { + public TEDoorAnimationPacket(int x, int y, int z, byte state, byte skinIndex, byte tex) { this.x = x; this.y = y; this.z = z; this.state = state; + this.skinIndex = skinIndex; this.texture = tex; } @@ -38,6 +40,7 @@ public class TEDoorAnimationPacket implements IMessage { y = buf.readInt(); z = buf.readInt(); state = buf.readByte(); + skinIndex = buf.readByte(); if(buf.readableBytes() == 1){ texture = buf.readByte(); } @@ -49,6 +52,7 @@ public class TEDoorAnimationPacket implements IMessage { buf.writeInt(y); buf.writeInt(z); buf.writeByte(state); + buf.writeByte(skinIndex); if(texture != -1){ buf.writeByte(texture); } @@ -63,6 +67,7 @@ public class TEDoorAnimationPacket implements IMessage { TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); if(te instanceof IAnimatedDoor){ ((IAnimatedDoor) te).handleNewState(m.state); + ((IAnimatedDoor) te).setSkinIndex(m.skinIndex); ((IAnimatedDoor) te).setTextureState(m.texture); } diff --git a/src/main/java/com/hbm/packet/TEDrillSoundPacket.java b/src/main/java/com/hbm/packet/TEDrillSoundPacket.java deleted file mode 100644 index 5e8ba4a6c..000000000 --- a/src/main/java/com/hbm/packet/TEDrillSoundPacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TEDrillSoundPacket implements IMessage { - - int x; - int y; - int z; - float spin; - - public TEDrillSoundPacket() - { - - } - - public TEDrillSoundPacket(int x, int y, int z, float spin) - { - this.x = x; - this.y = y; - this.z = z; - this.spin = spin; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - spin = buf.readFloat(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeFloat(spin); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(TEDrillSoundPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityMachineMiningDrill) { - - TileEntityMachineMiningDrill gen = (TileEntityMachineMiningDrill) te; - gen.torque = m.spin; - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/TEMissilePacket.java b/src/main/java/com/hbm/packet/TEMissilePacket.java deleted file mode 100644 index 86933573a..000000000 --- a/src/main/java/com/hbm/packet/TEMissilePacket.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.hbm.packet; - -import com.hbm.interfaces.Spaghetti; -import com.hbm.items.ModItems; -import com.hbm.tileentity.bomb.TileEntityLaunchPad; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; - -public class TEMissilePacket implements IMessage { - - int x; - int y; - int z; - int type; - - public TEMissilePacket() { } - - @Spaghetti("die") - public TEMissilePacket(int x, int y, int z, ItemStack stack) { - - this.x = x; - this.y = y; - this.z = z; - this.type = 0; - if(stack != null) { - if(stack.getItem() == ModItems.missile_generic) - type = 1; - if(stack.getItem() == ModItems.missile_strong) - type = 2; - if(stack.getItem() == ModItems.missile_cluster) - type = 3; - if(stack.getItem() == ModItems.missile_nuclear) - type = 4; - if(stack.getItem() == ModItems.missile_incendiary) - type = 5; - if(stack.getItem() == ModItems.missile_buster) - type = 6; - if(stack.getItem() == ModItems.missile_incendiary_strong) - type = 7; - if(stack.getItem() == ModItems.missile_cluster_strong) - type = 8; - if(stack.getItem() == ModItems.missile_buster_strong) - type = 9; - if(stack.getItem() == ModItems.missile_burst) - type = 10; - if(stack.getItem() == ModItems.missile_inferno) - type = 11; - if(stack.getItem() == ModItems.missile_rain) - type = 12; - if(stack.getItem() == ModItems.missile_drill) - type = 13; - if(stack.getItem() == ModItems.missile_endo) - type = 14; - if(stack.getItem() == ModItems.missile_exo) - type = 15; - if(stack.getItem() == ModItems.missile_nuclear_cluster) - type = 16; - if(stack.getItem() == ModItems.missile_doomsday) - type = 17; - if(stack.getItem() == ModItems.missile_taint) - type = 18; - if(stack.getItem() == ModItems.missile_micro) - type = 19; - if(stack.getItem() == ModItems.missile_carrier) - type = 20; - if(stack.getItem() == ModItems.missile_anti_ballistic) - type = 21; - if(stack.getItem() == ModItems.missile_bhole) - type = 22; - if(stack.getItem() == ModItems.missile_schrabidium) - type = 23; - if(stack.getItem() == ModItems.missile_emp) - type = 24; - if(stack.getItem() == ModItems.missile_emp_strong) - type = 25; - if(stack.getItem() == ModItems.missile_volcano) - type = 26; - if(stack.getItem() == ModItems.missile_shuttle) - type = 27; - - } - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - type = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(type); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(TEMissilePacket m, MessageContext ctx) { - - try { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityLaunchPad) { - - TileEntityLaunchPad gen = (TileEntityLaunchPad)te; - gen.state = m.type; - } - } catch(Exception e) { } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/TERadarDestructorPacket.java b/src/main/java/com/hbm/packet/TERadarDestructorPacket.java deleted file mode 100644 index 4b5a14763..000000000 --- a/src/main/java/com/hbm/packet/TERadarDestructorPacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineRadar; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TERadarDestructorPacket implements IMessage { - - int x; - int y; - int z; - - public TERadarDestructorPacket() { - - } - - public TERadarDestructorPacket(int x, int y, int z) { - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - } - - public static class Handler implements IMessageHandler { - - @Override - @SideOnly(Side.CLIENT) - public IMessage onMessage(TERadarDestructorPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - try { - if (te != null && te instanceof TileEntityMachineRadar) { - - TileEntityMachineRadar radar = (TileEntityMachineRadar) te; - radar.nearbyMissiles.clear(); - } - } catch (Exception x) { - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/TERadarPacket.java b/src/main/java/com/hbm/packet/TERadarPacket.java deleted file mode 100644 index 661438627..000000000 --- a/src/main/java/com/hbm/packet/TERadarPacket.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineRadar; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TERadarPacket implements IMessage { - - int x; - int y; - int z; - int conX; - int conY; - int conZ; - int alt; - - public TERadarPacket() { - - } - - public TERadarPacket(int x, int y, int z, int conX, int conY, int conZ, int alt) { - this.x = x; - this.y = y; - this.z = z; - this.conX = conX; - this.conY = conY; - this.conZ = conZ; - this.alt = alt; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - conX = buf.readInt(); - conY = buf.readInt(); - conZ = buf.readInt(); - alt = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(conX); - buf.writeInt(conY); - buf.writeInt(conZ); - buf.writeInt(alt); - } - - public static class Handler implements IMessageHandler { - - @Override - @SideOnly(Side.CLIENT) - public IMessage onMessage(TERadarPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - try { - if (te != null && te instanceof TileEntityMachineRadar) { - - TileEntityMachineRadar radar = (TileEntityMachineRadar) te; - radar.nearbyMissiles.add(new int[]{m.conX, m.conY, m.conZ, m.alt}); - } - } catch (Exception x) { - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/particle/ParticleDebugLine.java b/src/main/java/com/hbm/particle/ParticleDebugLine.java new file mode 100644 index 000000000..5207e7658 --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleDebugLine.java @@ -0,0 +1,72 @@ +package com.hbm.particle; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.World; + +public class ParticleDebugLine extends EntityFX { + + int color; + + public ParticleDebugLine(World world, double x, double y, double z, double lx, double ly, double lz, int color) { + super(world, x, y, z, lx, ly, lz); + this.motionX = lx; + this.motionY = ly; + this.motionZ = lz; + this.color = color; + this.particleMaxAge = 60; + } + + @Override + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + if(this.particleAge++ >= this.particleMaxAge) { + this.setDead(); + } + } + + @Override + public int getFXLayer() { + return 3; + } + + @Override + public void renderParticle(Tessellator tess, float interp, float x, float y, float z, float tx, float tz) { + + double pX = this.prevPosX + (this.posX - this.prevPosX) * (double) interp - interpPosX; + double pY = this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY; + double pZ = this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ; + + double mX = pX + motionX; + double mY = pY + motionY; + double mZ = pZ + motionZ; + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_COLOR_MATERIAL); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_POINT_SMOOTH); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_DEPTH_TEST); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA,GL11.GL_ONE_MINUS_SRC_ALPHA); + + tess.startDrawing(GL11.GL_LINES); + tess.setBrightness((int) (240 - (240 * (this.particleAge + interp) / this.particleMaxAge))); + tess.setColorOpaque_I(color); + tess.addVertex(pX, pY, pZ); + tess.addVertex(mX, mY, mZ); + tess.draw(); + + GL11.glEnable(GL11.GL_COLOR_MATERIAL); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_POINT_SMOOTH); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/particle/ParticleHadron.java b/src/main/java/com/hbm/particle/ParticleHadron.java index 923ca8b58..46b5e3d7c 100644 --- a/src/main/java/com/hbm/particle/ParticleHadron.java +++ b/src/main/java/com/hbm/particle/ParticleHadron.java @@ -6,10 +6,12 @@ import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -50,11 +52,16 @@ public class ParticleHadron extends EntityFX { float scale = (this.particleAge + interp) * 0.15F; tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, this.particleAlpha); + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + double dX = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double)interp; + double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double)interp; + double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp; - float pX = (float) (this.prevPosX + (this.posX - this.prevPosX) * (double)interp - interpPosX); - float pY = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double)interp - interpPosY); - float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double)interp - interpPosZ); - + double pX = this.prevPosX + (this.posX - this.prevPosX) * (double) interp - dX; + double pY = this.prevPosY + (this.posY - this.prevPosY) * (double) interp - dY; + double pZ = this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - dZ; + tess.addVertexWithUV((double)(pX - x * scale - tx * scale), (double)(pY - y * scale), (double)(pZ - z * scale - tz * scale), 1, 1); tess.addVertexWithUV((double)(pX - x * scale + tx * scale), (double)(pY + y * scale), (double)(pZ - z * scale + tz * scale), 1, 0); tess.addVertexWithUV((double)(pX + x * scale + tx * scale), (double)(pY + y * scale), (double)(pZ + z * scale + tz * scale), 0, 0); @@ -63,6 +70,7 @@ public class ParticleHadron extends EntityFX { GL11.glPolygonOffset(0.0F, 0.0F); GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_LIGHTING); } } diff --git a/src/main/java/com/hbm/potion/HbmPotion.java b/src/main/java/com/hbm/potion/HbmPotion.java index 48031fddf..a7688f2da 100644 --- a/src/main/java/com/hbm/potion/HbmPotion.java +++ b/src/main/java/com/hbm/potion/HbmPotion.java @@ -47,10 +47,10 @@ public class HbmPotion extends Potion { } public static void init() { - taint = registerPotion(PotionConfig.taintID, true, 8388736, "potion.hbm_taint", 0, 0); - radiation = registerPotion(PotionConfig.radiationID, true, 8700200, "potion.hbm_radiation", 1, 0); - bang = registerPotion(PotionConfig.bangID, true, 1118481, "potion.hbm_bang", 3, 0); - mutation = registerPotion(PotionConfig.mutationID, false, 8388736, "potion.hbm_mutation", 2, 0); + taint = registerPotion(PotionConfig.taintID, true, 0x800080, "potion.hbm_taint", 0, 0); + radiation = registerPotion(PotionConfig.radiationID, true, 0x84C128, "potion.hbm_radiation", 1, 0); + bang = registerPotion(PotionConfig.bangID, true, 0x111111, "potion.hbm_bang", 3, 0); + mutation = registerPotion(PotionConfig.mutationID, false, 0x800080, "potion.hbm_mutation", 2, 0); radx = registerPotion(PotionConfig.radxID, false, 0xBB4B00, "potion.hbm_radx", 5, 0); lead = registerPotion(PotionConfig.leadID, true, 0x767682, "potion.hbm_lead", 6, 0); radaway = registerPotion(PotionConfig.radawayID, false, 0xBB4B00, "potion.hbm_radaway", 7, 0); @@ -58,7 +58,7 @@ public class HbmPotion extends Potion { phosphorus = registerPotion(PotionConfig.phosphorusID, true, 0xFFFF00, "potion.hbm_phosphorus", 1, 1); stability = registerPotion(PotionConfig.stabilityID, false, 0xD0D0D0, "potion.hbm_stability", 2, 1); potionsickness = registerPotion(PotionConfig.potionsicknessID, false, 0xff8080, "potion.hbm_potionsickness", 3, 1); - death = registerPotion(PotionConfig.deathID, false, 1118481, "potion.hbm_death", 4, 1); + death = registerPotion(PotionConfig.deathID, false, 0x111111, "potion.hbm_death", 4, 1); } public static HbmPotion registerPotion(int id, boolean isBad, int color, String name, int x, int y) { @@ -99,6 +99,8 @@ public class HbmPotion extends Potion { } public void performEffect(EntityLivingBase entity, int level) { + + if(entity.worldObj.isRemote) return; if(this == taint) { @@ -123,7 +125,6 @@ public class HbmPotion extends Potion { ContaminationUtil.contaminate(entity, HazardType.RADIATION, ContaminationType.CREATIVE, (float)(level + 1F) * 0.05F); } if(this == radaway) { - HbmLivingProps.incrementRadiation(entity, -(level + 1)); } @@ -145,22 +146,9 @@ public class HbmPotion extends Potion { } } if(this == lead) { - entity.attackEntityFrom(ModDamageSource.lead, (level + 1)); } - /*if(this == telekinesis) { - - int remaining = entity.getActivePotionEffect(this).getDuration(); - - if(remaining > 1) { - entity.motionY = 0.5; - } else { - entity.motionY = -2; - entity.fallDistance = 50; - } - }*/ - if(this == phosphorus && !entity.worldObj.isRemote) { - + if(this == phosphorus) { entity.setFire(1); } } diff --git a/src/main/java/com/hbm/render/block/RenderBoxDuct.java b/src/main/java/com/hbm/render/block/RenderBoxDuct.java index eb0d53002..c8c8f8915 100644 --- a/src/main/java/com/hbm/render/block/RenderBoxDuct.java +++ b/src/main/java/com/hbm/render/block/RenderBoxDuct.java @@ -23,7 +23,7 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler { Tessellator tessellator = Tessellator.instance; FluidDuctBox duct = (FluidDuctBox) block; - int type = metadata % 3; + int type = duct.rectify(metadata); float lower = 0.125F; float upper = 0.875F; @@ -65,7 +65,23 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler { tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); int meta = world.getBlockMetadata(x, y, z); + boolean pX = false; + boolean nX = false; + boolean pY = false; + boolean nY = false; + boolean pZ = false; + boolean nZ = false; + FluidDuctBox.cachedColor = 0xffffff; + FluidDuctBox duct = (FluidDuctBox) block; + + pX = duct.canConnectTo(world, x, y, z, Library.POS_X, te); + nX = duct.canConnectTo(world, x, y, z, Library.NEG_X, te); + pY = duct.canConnectTo(world, x, y, z, Library.POS_Y, te); + nY = duct.canConnectTo(world, x, y, z, Library.NEG_Y, te); + pZ = duct.canConnectTo(world, x, y, z, Library.POS_Z, te); + nZ = duct.canConnectTo(world, x, y, z, Library.NEG_Z, te); + if(te instanceof TileEntityPipeBaseNT) { TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; type = pipe.getType(); @@ -74,13 +90,6 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler { } } - boolean pX = Library.canConnectFluid(world, x + 1, y, z, Library.POS_X, type); - boolean nX = Library.canConnectFluid(world, x - 1, y, z, Library.NEG_X, type); - boolean pY = Library.canConnectFluid(world, x, y + 1, z, Library.POS_Y, type); - boolean nY = Library.canConnectFluid(world, x, y - 1, z, Library.NEG_Y, type); - boolean pZ = Library.canConnectFluid(world, x, y, z + 1, Library.POS_Z, type); - boolean nZ = Library.canConnectFluid(world, x, y, z - 1, Library.NEG_Z, type); - int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); diff --git a/src/main/java/com/hbm/render/block/RenderCapacitor.java b/src/main/java/com/hbm/render/block/RenderCapacitor.java new file mode 100644 index 000000000..227bf140c --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderCapacitor.java @@ -0,0 +1,89 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.machine.MachineCapacitor; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderCapacitor implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + tessellator.setColorOpaque_F(1, 1, 1); + + MachineCapacitor capacitor = (MachineCapacitor) block; + + tessellator.startDrawingQuads(); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Top", capacitor.iconTop, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Side", capacitor.iconSide, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Bottom", capacitor.iconBottom, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "InnerTop", capacitor.iconInnerTop, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "InnerSide", capacitor.iconInnerSide, tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + MachineCapacitor capacitor = (MachineCapacitor) block; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + float flip = 0; + float rotation = 0; + + int meta = world.getBlockMetadata(x, y, z); + + if(meta == 0) + flip = (float)Math.PI; + + if(meta == 2) + rotation = 90F / 180F * (float) Math.PI; + + if(meta == 3) + rotation = 270F / 180F * (float) Math.PI; + + if(meta == 4) + rotation = 180F / 180F * (float)Math.PI; + + if(rotation != 0F || meta == 5) + flip = (float)Math.PI * 0.5F; + + tessellator.addTranslation(x + 0.5F, y + 0.5F, z + 0.5F); + + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Top", capacitor.iconTop, tessellator, rotation, flip, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Side", capacitor.iconSide, tessellator, rotation, flip, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Bottom", capacitor.iconBottom, tessellator, rotation, flip, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "InnerTop", capacitor.iconInnerTop, tessellator, rotation, flip, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "InnerSide", capacitor.iconInnerSide, tessellator, rotation, flip, true); + + tessellator.addTranslation(-x - 0.5F, -y - 0.5F, -z - 0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return MachineCapacitor.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderFoundryOutlet.java b/src/main/java/com/hbm/render/block/RenderFoundryOutlet.java index 743ba6306..1e5b52354 100644 --- a/src/main/java/com/hbm/render/block/RenderFoundryOutlet.java +++ b/src/main/java/com/hbm/render/block/RenderFoundryOutlet.java @@ -10,6 +10,7 @@ import net.minecraft.block.Block; import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler { @@ -82,7 +83,8 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler { FoundryOutlet outlet = (FoundryOutlet) block; int meta = world.getBlockMetadata(x, y, z); - TileEntityFoundryOutlet tile = (TileEntityFoundryOutlet) world.getTileEntity(x, y, z); + TileEntity tile = world.getTileEntity(x, y, z); + TileEntityFoundryOutlet tileOutlet = tile instanceof TileEntityFoundryOutlet ? (TileEntityFoundryOutlet) tile : null; int brightness = block.getMixedBrightnessForBlock(world, x, y, z); tessellator.setBrightness(brightness); @@ -105,13 +107,13 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler { renderer.renderFaceXPos(block, x, y, z, outlet.iconFront); renderer.renderFaceXNeg(block, x, y, z, outlet.iconFront); - if(tile.filter != null) { + if(tileOutlet != null && tileOutlet.filter != null) { renderer.setRenderBounds(0.96875D, 0.0625, 0.375D, 0.96875D, top, 0.625D); renderer.renderFaceXPos(block, x, y, z, outlet.iconFilter); renderer.renderFaceXNeg(block, x, y, z, outlet.iconFilter); } - if(tile.isClosed()) { + if(tileOutlet != null && tileOutlet.isClosed()) { renderer.setRenderBounds(0.9375D, 0.0625, 0.375D, 0.9375D, top, 0.625D); renderer.renderFaceXPos(block, x, y, z, outlet.iconLock); renderer.renderFaceXNeg(block, x, y, z, outlet.iconLock); @@ -136,13 +138,13 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler { renderer.renderFaceXPos(block, x, y, z, outlet.iconFront); renderer.renderFaceXNeg(block, x, y, z, outlet.iconFront); - if(tile.filter != null) { + if(tileOutlet != null && tileOutlet.filter != null) { renderer.setRenderBounds(0.03125D, 0.0625, 0.375D, 0.03125D, top, 0.625D); renderer.renderFaceXPos(block, x, y, z, outlet.iconFilter); renderer.renderFaceXNeg(block, x, y, z, outlet.iconFilter); } - if(tile.isClosed()) { + if(tileOutlet != null && tileOutlet.isClosed()) { renderer.setRenderBounds(0.0625D, 0.0625, 0.375D, 0.0625D, top, 0.625D); renderer.renderFaceXPos(block, x, y, z, outlet.iconLock); renderer.renderFaceXNeg(block, x, y, z, outlet.iconLock); @@ -167,13 +169,13 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler { renderer.renderFaceZPos(block, x, y, z, outlet.iconFront); renderer.renderFaceZNeg(block, x, y, z, outlet.iconFront); - if(tile.filter != null) { + if(tileOutlet != null && tileOutlet.filter != null) { renderer.setRenderBounds(0.375D, 0.0625, 0.96875D, 0.625D, top, 0.96875D); renderer.renderFaceZPos(block, x, y, z, outlet.iconFilter); renderer.renderFaceZNeg(block, x, y, z, outlet.iconFilter); } - if(tile.isClosed()) { + if(tileOutlet != null && tileOutlet.isClosed()) { renderer.setRenderBounds(0.375D, 0.0625, 0.9375D, 0.625D, top, 0.9375D); renderer.renderFaceZPos(block, x, y, z, outlet.iconLock); renderer.renderFaceZNeg(block, x, y, z, outlet.iconLock); @@ -198,13 +200,13 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler { renderer.renderFaceZPos(block, x, y, z, outlet.iconFront); renderer.renderFaceZNeg(block, x, y, z, outlet.iconFront); - if(tile.filter != null) { + if(tileOutlet != null && tileOutlet.filter != null) { renderer.setRenderBounds(0.375D, 0.0625D, 0.03125, 0.625D, top, 0.03125D); renderer.renderFaceZPos(block, x, y, z, outlet.iconFilter); renderer.renderFaceZNeg(block, x, y, z, outlet.iconFilter); } - if(tile.isClosed()) { + if(tileOutlet != null && tileOutlet.isClosed()) { renderer.setRenderBounds(0.375D, 0.0625, 0.0625D, 0.625D, top, 0.0625D); renderer.renderFaceZPos(block, x, y, z, outlet.iconLock); renderer.renderFaceZNeg(block, x, y, z, outlet.iconLock); diff --git a/src/main/java/com/hbm/render/block/RenderNarrowCurveRail.java b/src/main/java/com/hbm/render/block/RenderNarrowCurveRail.java new file mode 100644 index 000000000..0cb029690 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderNarrowCurveRail.java @@ -0,0 +1,69 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.RailNarrowCurve; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderNarrowCurveRail implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + + GL11.glScaled(0.2, 0.2, 0.2); + GL11.glTranslated(2.5, -0.0625, -1.5); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_curve, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + int meta = world.getBlockMetadata(x, y, z); + if(meta < 12) return true; + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + float rotation = 0; + + if(meta == 12) + rotation = 90F / 180F * (float) Math.PI; + if(meta == 14) + rotation = 180F / 180F * (float) Math.PI; + if(meta == 13) + rotation = 270F / 180F * (float) Math.PI; + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_curve, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return RailNarrowCurve.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderNarrowStraightRail.java b/src/main/java/com/hbm/render/block/RenderNarrowStraightRail.java new file mode 100644 index 000000000..3f2c40c78 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderNarrowStraightRail.java @@ -0,0 +1,62 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.RailNarrowStraight; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderNarrowStraightRail implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + + GL11.glTranslated(0, -0.0625, 0); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_straight, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + int meta = world.getBlockMetadata(x, y, z); + + float rotation = 0; + + if(meta == 2 || meta == 3 || meta == 12 || meta == 13) + rotation = 90F / 180F * (float) Math.PI; + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_straight, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return RailNarrowStraight.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderStandardBufferRail.java b/src/main/java/com/hbm/render/block/RenderStandardBufferRail.java new file mode 100644 index 000000000..5cf6381e1 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderStandardBufferRail.java @@ -0,0 +1,77 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.RailStandardBuffer; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderStandardBufferRail implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + + GL11.glTranslated(0, -0.0625, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.3, 0.3, 0.3); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_buffer, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + int meta = world.getBlockMetadata(x, y, z); + if(meta < 12) return true; + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + float rotation = 0; + + if(meta == 12) rotation = (float) Math.PI; + if(meta == 14) rotation = 270F / 180F * (float) Math.PI; + if(meta == 15) rotation = 90F / 180F * (float) Math.PI; + + if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_buffer, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return RailStandardBuffer.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderStandardCurveRail.java b/src/main/java/com/hbm/render/block/RenderStandardCurveRail.java new file mode 100644 index 000000000..a238d461d --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderStandardCurveRail.java @@ -0,0 +1,70 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.RailStandardCurve; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderStandardCurveRail implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + + GL11.glScaled(0.2, 0.2, 0.2); + GL11.glTranslated(2.5, -0.0625, -1.5); + GL11.glRotated(90, 0, 1, 0); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + int meta = world.getBlockMetadata(x, y, z); + if(meta < 12) return true; + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + float rotation = 0; + + if(meta == 15) + rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) + rotation = 180F / 180F * (float) Math.PI; + if(meta == 14) + rotation = 270F / 180F * (float) Math.PI; + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return RailStandardCurve.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderStandardRampRail.java b/src/main/java/com/hbm/render/block/RenderStandardRampRail.java new file mode 100644 index 000000000..eb1e245fd --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderStandardRampRail.java @@ -0,0 +1,80 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.RailStandardRamp; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderStandardRampRail implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + + GL11.glTranslated(0, -0.0625, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.3, 0.3, 0.3); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_ramp, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + int meta = world.getBlockMetadata(x, y, z); + if(meta < 12) return true; + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + float rotation = 0; + + if(meta == 15) + rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) + rotation = 180F / 180F * (float) Math.PI; + if(meta == 14) + rotation = 270F / 180F * (float) Math.PI; + + if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_ramp, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return RailStandardRamp.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderStandardStraightRail.java b/src/main/java/com/hbm/render/block/RenderStandardStraightRail.java new file mode 100644 index 000000000..5108aaea2 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderStandardStraightRail.java @@ -0,0 +1,75 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.RailStandardStraight; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderStandardStraightRail implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + + GL11.glTranslated(0, -0.0625, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.3, 0.3, 0.3); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_straight, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + int meta = world.getBlockMetadata(x, y, z); + if(meta < 12) return true; + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + float rotation = 0; + + if(meta == 14 || meta == 15) rotation = 90F / 180F * (float) Math.PI; + + if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_straight, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return RailStandardStraight.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/ct/CTContext.java b/src/main/java/com/hbm/render/block/ct/CTContext.java index 30e1e9126..d028d2933 100644 --- a/src/main/java/com/hbm/render/block/ct/CTContext.java +++ b/src/main/java/com/hbm/render/block/ct/CTContext.java @@ -80,7 +80,7 @@ public class CTContext { int[] coord = dirs[j]; Block neighbor = world.getBlock(x + coord[0], y + coord[1], z + coord[2]); - if(neighbor instanceof IBlockCT && ((IBlockCT) neighbor).canConnect(world, x + coord[0], y + coord[1], z + coord[2], (IBlockCT)block)) { + if(((IBlockCT) block).canConnect(world, x + coord[0], y + coord[1], z + coord[2], neighbor)) { cons[j] = true; } } diff --git a/src/main/java/com/hbm/render/block/ct/IBlockCT.java b/src/main/java/com/hbm/render/block/ct/IBlockCT.java index 66bd967c0..c672784c0 100644 --- a/src/main/java/com/hbm/render/block/ct/IBlockCT.java +++ b/src/main/java/com/hbm/render/block/ct/IBlockCT.java @@ -1,5 +1,6 @@ package com.hbm.render.block.ct; +import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; @@ -8,7 +9,7 @@ public interface IBlockCT { public IIcon[] getFragments(IBlockAccess world, int x, int y, int z); - public default boolean canConnect(IBlockAccess world, int x, int y, int z, IBlockCT block) { + public default boolean canConnect(IBlockAccess world, int x, int y, int z, Block block) { return this == block; } diff --git a/src/main/java/com/hbm/render/block/ct/RenderBlocksCT.java b/src/main/java/com/hbm/render/block/ct/RenderBlocksCT.java index e59c4a6b5..bbd2655ee 100644 --- a/src/main/java/com/hbm/render/block/ct/RenderBlocksCT.java +++ b/src/main/java/com/hbm/render/block/ct/RenderBlocksCT.java @@ -37,7 +37,7 @@ public class RenderBlocksCT extends RenderBlocks { this.blockAccess = acc; } - private void initSideInfo() { + private void initSideInfo(int side) { if(!this.enableAO) return; @@ -49,15 +49,42 @@ public class RenderBlocksCT extends RenderBlocks { * it's only the color in ONE PARTICULAR SIDE. well thanks for that i think that's rather poggers, lex. */ - float red = (colorRedTopLeft + colorRedTopRight + colorRedBottomLeft + colorRedBottomRight) / 4F; + /*float red = (colorRedTopLeft + colorRedTopRight + colorRedBottomLeft + colorRedBottomRight) / 4F; float green = (colorGreenTopLeft + colorGreenTopRight + colorGreenBottomLeft + colorGreenBottomRight) / 4F; float blue = (colorBlueTopLeft + colorBlueTopRight + colorBlueBottomLeft + colorBlueBottomRight) / 4F; - int light = (brightnessTopLeft + brightnessTopRight + brightnessBottomLeft + brightnessBottomRight) / 4; + int light = (brightnessTopLeft + brightnessTopRight + brightnessBottomLeft + brightnessBottomRight) / 4;*/ - this.tl = new VertInfo(red, green, blue, light); - this.tr = new VertInfo(red, green, blue, light); - this.bl = new VertInfo(red, green, blue, light); - this.br = new VertInfo(red, green, blue, light); + if(side == ForgeDirection.SOUTH.ordinal()) { + this.tl = new VertInfo(colorRedTopLeft, colorGreenTopLeft, colorBlueTopLeft, brightnessTopLeft); + this.tr = new VertInfo(colorRedTopRight, colorGreenTopRight, colorBlueTopRight, brightnessTopRight); + this.bl = new VertInfo(colorRedBottomLeft, colorGreenBottomLeft, colorBlueBottomLeft, brightnessBottomLeft); + this.br = new VertInfo(colorRedBottomRight, colorGreenBottomRight, colorBlueBottomRight, brightnessBottomRight); + } else if(side == ForgeDirection.NORTH.ordinal()) { + this.tr = new VertInfo(colorRedTopLeft, colorGreenTopLeft, colorBlueTopLeft, brightnessTopLeft); + this.br = new VertInfo(colorRedTopRight, colorGreenTopRight, colorBlueTopRight, brightnessTopRight); + this.tl = new VertInfo(colorRedBottomLeft, colorGreenBottomLeft, colorBlueBottomLeft, brightnessBottomLeft); + this.bl = new VertInfo(colorRedBottomRight, colorGreenBottomRight, colorBlueBottomRight, brightnessBottomRight); + } else if(side == ForgeDirection.EAST.ordinal()) { + this.bl = new VertInfo(colorRedTopLeft, colorGreenTopLeft, colorBlueTopLeft, brightnessTopLeft); + this.tl = new VertInfo(colorRedTopRight, colorGreenTopRight, colorBlueTopRight, brightnessTopRight); + this.br = new VertInfo(colorRedBottomLeft, colorGreenBottomLeft, colorBlueBottomLeft, brightnessBottomLeft); + this.tr = new VertInfo(colorRedBottomRight, colorGreenBottomRight, colorBlueBottomRight, brightnessBottomRight); + } else if(side == ForgeDirection.WEST.ordinal()) { + this.tr = new VertInfo(colorRedTopLeft, colorGreenTopLeft, colorBlueTopLeft, brightnessTopLeft); + this.br = new VertInfo(colorRedTopRight, colorGreenTopRight, colorBlueTopRight, brightnessTopRight); + this.tl = new VertInfo(colorRedBottomLeft, colorGreenBottomLeft, colorBlueBottomLeft, brightnessBottomLeft); + this.bl = new VertInfo(colorRedBottomRight, colorGreenBottomRight, colorBlueBottomRight, brightnessBottomRight); + } else if(side == ForgeDirection.UP.ordinal()) { + this.br = new VertInfo(colorRedTopLeft, colorGreenTopLeft, colorBlueTopLeft, brightnessTopLeft); + this.bl = new VertInfo(colorRedTopRight, colorGreenTopRight, colorBlueTopRight, brightnessTopRight); + this.tr = new VertInfo(colorRedBottomLeft, colorGreenBottomLeft, colorBlueBottomLeft, brightnessBottomLeft); + this.tl = new VertInfo(colorRedBottomRight, colorGreenBottomRight, colorBlueBottomRight, brightnessBottomRight); + } else { + this.tl = new VertInfo(colorRedTopLeft, colorGreenTopLeft, colorBlueTopLeft, brightnessTopLeft); + this.tr = new VertInfo(colorRedTopRight, colorGreenTopRight, colorBlueTopRight, brightnessTopRight); + this.bl = new VertInfo(colorRedBottomLeft, colorGreenBottomLeft, colorBlueBottomLeft, brightnessBottomLeft); + this.br = new VertInfo(colorRedBottomRight, colorGreenBottomRight, colorBlueBottomRight, brightnessBottomRight); + } this.tc = VertInfo.avg(tl, tr); this.bc = VertInfo.avg(bl, br); @@ -82,7 +109,7 @@ public class RenderBlocksCT extends RenderBlocks { @Override public void renderFaceXPos(Block block, double x, double y, double z, IIcon icon) { - initSideInfo(); + initSideInfo(ForgeDirection.EAST.ordinal()); CTFace face = CTContext.faces[ForgeDirection.EAST.ordinal()]; /// ORDER: LEXICAL /// @@ -99,7 +126,7 @@ public class RenderBlocksCT extends RenderBlocks { @Override public void renderFaceXNeg(Block block, double x, double y, double z, IIcon icon) { - initSideInfo(); + initSideInfo(ForgeDirection.WEST.ordinal()); CTFace face = CTContext.faces[ForgeDirection.WEST.ordinal()]; /// ORDER: LEXICAL /// @@ -116,7 +143,7 @@ public class RenderBlocksCT extends RenderBlocks { @Override public void renderFaceYPos(Block block, double x, double y, double z, IIcon icon) { - initSideInfo(); + initSideInfo(ForgeDirection.UP.ordinal()); CTFace face = CTContext.faces[ForgeDirection.UP.ordinal()]; /// ORDER: LEXICAL /// @@ -133,7 +160,7 @@ public class RenderBlocksCT extends RenderBlocks { @Override public void renderFaceYNeg(Block block, double x, double y, double z, IIcon icon) { - initSideInfo(); + initSideInfo(ForgeDirection.DOWN.ordinal()); CTFace face = CTContext.faces[ForgeDirection.DOWN.ordinal()]; /// ORDER: LEXICAL /// @@ -150,7 +177,7 @@ public class RenderBlocksCT extends RenderBlocks { @Override public void renderFaceZPos(Block block, double x, double y, double z, IIcon icon) { - initSideInfo(); + initSideInfo(ForgeDirection.SOUTH.ordinal()); CTFace face = CTContext.faces[ForgeDirection.SOUTH.ordinal()]; /// ORDER: LEXICAL /// @@ -167,7 +194,7 @@ public class RenderBlocksCT extends RenderBlocks { @Override public void renderFaceZNeg(Block block, double x, double y, double z, IIcon icon) { - initSideInfo(); + initSideInfo(ForgeDirection.NORTH.ordinal()); CTFace face = CTContext.faces[ForgeDirection.NORTH.ordinal()]; /// ORDER: LEXICAL /// diff --git a/src/main/java/com/hbm/render/entity/effect/RenderTorex.java b/src/main/java/com/hbm/render/entity/effect/RenderTorex.java index 661b57773..e90761d3e 100644 --- a/src/main/java/com/hbm/render/entity/effect/RenderTorex.java +++ b/src/main/java/com/hbm/render/entity/effect/RenderTorex.java @@ -2,6 +2,7 @@ package com.hbm.render.entity.effect; import java.util.ArrayList; import java.util.Comparator; +import java.util.Random; import org.lwjgl.opengl.GL11; @@ -9,6 +10,7 @@ import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.effect.EntityNukeTorex.Cloudlet; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; +import com.hbm.main.ModEventHandlerClient; import net.minecraft.client.renderer.ActiveRenderInfo; import net.minecraft.client.renderer.OpenGlHelper; @@ -23,14 +25,20 @@ import net.minecraft.util.Vec3; public class RenderTorex extends Render { private static final ResourceLocation cloudlet = new ResourceLocation(RefStrings.MODID + ":textures/particle/particle_base.png"); + private static final ResourceLocation flash = new ResourceLocation(RefStrings.MODID + ":textures/particle/flare.png"); @Override public void doRender(Entity entity, double x, double y, double z, float f0, float interp) { GL11.glPushMatrix(); GL11.glTranslated(x, y, z); + boolean fog = GL11.glIsEnabled(GL11.GL_FOG); + if(fog) GL11.glDisable(GL11.GL_FOG); EntityNukeTorex cloud = (EntityNukeTorex)entity; cloudletWrapper(cloud, interp); + if(cloud.ticksExisted < 101) flashWrapper(cloud, interp); + if(cloud.ticksExisted < 10 && System.currentTimeMillis() - ModEventHandlerClient.flashTimestamp > 1_000) ModEventHandlerClient.flashTimestamp = System.currentTimeMillis(); + if(fog) GL11.glEnable(GL11.GL_FOG); GL11.glPopMatrix(); } @@ -81,6 +89,43 @@ public class RenderTorex extends Render { GL11.glDisable(GL11.GL_BLEND); GL11.glPopMatrix(); } + + private void flashWrapper(EntityNukeTorex cloud, float interp) { + + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glAlphaFunc(GL11.GL_GREATER, 0); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glDepthMask(false); + RenderHelper.disableStandardItemLighting(); + + bindTexture(flash); + + Tessellator tess = Tessellator.instance; + tess.startDrawingQuads(); + + double age = Math.min(cloud.ticksExisted + interp, 100); + float alpha = (float) ((100D - age) / 100F); + + Random rand = new Random(cloud.getEntityId()); + + for(int i = 0; i < 3; i++) { + float x = (float) (rand.nextGaussian() * 0.5F * cloud.rollerSize); + float y = (float) (rand.nextGaussian() * 0.5F * cloud.rollerSize); + float z = (float) (rand.nextGaussian() * 0.5F * cloud.rollerSize); + tessellateFlash(tess, x, y + cloud.coreHeight, z, (float) (10 * cloud.rollerSize), alpha, interp); + } + + tess.draw(); + + GL11.glDepthMask(true); + GL11.glEnable(GL11.GL_ALPHA_TEST); + RenderHelper.enableStandardItemLighting(); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + } private void tessellateCloudlet(Tessellator tess, double posX, double posY, double posZ, Cloudlet cloud, float interp) { @@ -104,6 +149,23 @@ public class RenderTorex extends Render { } + private void tessellateFlash(Tessellator tess, double posX, double posY, double posZ, float scale, float alpha, float interp) { + + float f1 = ActiveRenderInfo.rotationX; + float f2 = ActiveRenderInfo.rotationZ; + float f3 = ActiveRenderInfo.rotationYZ; + float f4 = ActiveRenderInfo.rotationXY; + float f5 = ActiveRenderInfo.rotationXZ; + + tess.setColorRGBA_F(1F, 1F, 1F, alpha); + + tess.addVertexWithUV((double) (posX - f1 * scale - f3 * scale), (double) (posY - f5 * scale), (double) (posZ - f2 * scale - f4 * scale), 1, 1); + tess.addVertexWithUV((double) (posX - f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ - f2 * scale + f4 * scale), 1, 0); + tess.addVertexWithUV((double) (posX + f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ + f2 * scale + f4 * scale), 0, 0); + tess.addVertexWithUV((double) (posX + f1 * scale - f3 * scale), (double) (posY - f5 * scale), (double) (posZ + f2 * scale - f4 * scale), 0, 1); + + } + @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) { return null; diff --git a/src/main/java/com/hbm/render/entity/item/RenderBoatRubber.java b/src/main/java/com/hbm/render/entity/item/RenderBoatRubber.java new file mode 100644 index 000000000..963c936d7 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderBoatRubber.java @@ -0,0 +1,74 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.item.EntityBoatRubber; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBoat; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +public class RenderBoatRubber extends Render { + + private static final ResourceLocation boatTextures = new ResourceLocation(RefStrings.MODID + ":textures/entity/boat_rubber.png"); + protected ModelBase modelBoat; + + public RenderBoatRubber() { + this.shadowSize = 0.5F; + this.modelBoat = new ModelBoat(); + } + + public void doRender(EntityBoatRubber entity, double x, double y, double z, float yaw, float interp) { + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(180.0F - yaw, 0.0F, 1.0F, 0.0F); + float f2 = (float) entity.getTimeSinceHit() - interp; + float f3 = entity.getDamageTaken() - interp; + + if(f3 < 0.0F) { + f3 = 0.0F; + } + + if(f2 > 0.0F) { + GL11.glRotatef(MathHelper.sin(f2) * f2 * f3 / 10.0F * (float) entity.getForwardDirection(), 1.0F, 0.0F, 0.0F); + } + + EntityPlayer me = Minecraft.getMinecraft().getMinecraft().thePlayer; + + if(entity.riddenByEntity == me) { + float diff = MathHelper.wrapAngleTo180_float(entity.rotationYaw - entity.prevRenderYaw); + me.rotationYaw += diff; + me.rotationYawHead += diff; + } + + entity.prevRenderYaw = entity.rotationYaw; + + float f4 = 0.75F; + GL11.glScalef(f4, f4, f4); + GL11.glScalef(1.0F / f4, 1.0F / f4, 1.0F / f4); + this.bindEntityTexture(entity); + GL11.glScalef(-1.0F, -1.0F, 1.0F); + this.modelBoat.render(entity, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); + GL11.glPopMatrix(); + } + + protected ResourceLocation getEntityTexture(EntityBoatRubber entity) { + return boatTextures; + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return this.getEntityTexture((EntityBoatRubber) entity); + } + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { + this.doRender((EntityBoatRubber) entity, x, y, z, f0, f1); + } +} diff --git a/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java b/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java new file mode 100644 index 000000000..04bbcf027 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java @@ -0,0 +1,48 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.item.EntityDroneBase; +import com.hbm.entity.item.EntityRequestDrone; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderDeliveryDrone extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + if(entity instanceof EntityRequestDrone) { + bindTexture(ResourceManager.delivery_drone_request_tex); + } else if(entity.getDataWatcher().getWatchableObjectByte(11) == 1) + bindTexture(ResourceManager.delivery_drone_express_tex); + else + bindTexture(ResourceManager.delivery_drone_tex); + ResourceManager.delivery_drone.renderPart("Drone"); + + EntityDroneBase drone = (EntityDroneBase) entity; + int style = drone.getAppearance(); + + if(style == 1) ResourceManager.delivery_drone.renderPart("Crate"); + if(style == 2) ResourceManager.delivery_drone.renderPart("Barrel"); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity drone) { + return ResourceManager.delivery_drone_tex; + } +} diff --git a/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java b/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java new file mode 100644 index 000000000..e42ebd0f2 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java @@ -0,0 +1,71 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockFallingNT; +import com.hbm.entity.item.EntityFallingBlockNT; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class RenderFallingBlockNT extends Render { + + private final RenderBlocks renderBlocks = new RenderBlocks(); + + public RenderFallingBlockNT() { + this.shadowSize = 0.5F; + } + + public void doRender(EntityFallingBlockNT entity, double x, double y, double z, float f0, float f1) { + + World world = entity.getWorldForRender(); + Block block = entity.getBlockForRender(); + + int iX = MathHelper.floor_double(entity.posX); + int iY = MathHelper.floor_double(entity.posY); + int iZ = MathHelper.floor_double(entity.posZ); + + if(block != null && block != world.getBlock(iX, iY, iZ)) { + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + this.bindEntityTexture(entity); + GL11.glDisable(GL11.GL_LIGHTING); + + this.renderBlocks.blockAccess = world; + + if(block instanceof BlockFallingNT && ((BlockFallingNT) block).shouldOverrideRenderer()) { + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + ((BlockFallingNT) block).overrideRenderer(entity, renderBlocks, tessellator); + tessellator.draw(); + } else { + this.renderBlocks.setRenderBoundsFromBlock(block); + this.renderBlocks.renderBlockSandFalling(block, world, iX, iY, iZ, entity.getDataWatcher().getWatchableObjectInt(11)); + } + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopMatrix(); + } + } + + protected ResourceLocation getEntityTexture(EntityFallingBlockNT entity) { + return TextureMap.locationBlocksTexture; + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return this.getEntityTexture((EntityFallingBlockNT) entity); + } + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { + this.doRender((EntityFallingBlockNT) entity, x, y, z, f0, f1); + } +} diff --git a/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java new file mode 100644 index 000000000..93cb9cf29 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java @@ -0,0 +1,58 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.train.EntityRailCarBase; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderTrainCargoTram extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float swing, float interp) { + GL11.glPushMatrix(); + + EntityRailCarBase train = (EntityRailCarBase) entity; + double iX = train.prevPosX + (train.posX - train.prevPosX) * interp; + double iY = train.prevPosY + (train.posY - train.prevPosY) * interp; + double iZ = train.prevPosZ + (train.posZ - train.prevPosZ) * interp; + double rX = train.lastRenderX + (train.renderX - train.lastRenderX) * interp; + double rY = train.lastRenderY + (train.renderY - train.lastRenderY) * interp; + double rZ = train.lastRenderZ + (train.renderZ - train.lastRenderZ) * interp; + x -= iX - rX; + y -= iY - rY; + z -= iZ - rZ; + + GL11.glTranslated(x, y, z); + + float yaw = entity.rotationYaw; + float prevYaw = entity.prevRotationYaw; + + if(yaw - prevYaw > 180) yaw -= 360; + if(prevYaw - yaw > 180) prevYaw -= 360; + + float yawInterp = prevYaw + (yaw - prevYaw) * interp - 720; + + GL11.glRotated(-yawInterp, 0, 1, 0); + + float pitch = entity.rotationPitch; + float prevPitch = entity.prevRotationPitch; + float pitchInterp = prevPitch + (pitch - prevPitch) * interp; + GL11.glRotated(-pitchInterp, 1, 0, 0); + + GL11.glDisable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.train_tram); + ResourceManager.train_cargo_tram.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ResourceManager.train_tram; + } +} diff --git a/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTramTrailer.java b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTramTrailer.java new file mode 100644 index 000000000..867a396ba --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTramTrailer.java @@ -0,0 +1,133 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.entity.train.EntityRailCarBase; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class RenderTrainCargoTramTrailer extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float swing, float interp) { + GL11.glPushMatrix(); + + EntityRailCarBase train = (EntityRailCarBase) entity; + double iX = train.prevPosX + (train.posX - train.prevPosX) * interp; + double iY = train.prevPosY + (train.posY - train.prevPosY) * interp; + double iZ = train.prevPosZ + (train.posZ - train.prevPosZ) * interp; + double rX = train.lastRenderX + (train.renderX - train.lastRenderX) * interp; + double rY = train.lastRenderY + (train.renderY - train.lastRenderY) * interp; + double rZ = train.lastRenderZ + (train.renderZ - train.lastRenderZ) * interp; + x -= iX - rX; + y -= iY - rY; + z -= iZ - rZ; + + GL11.glTranslated(x, y, z); + + float yaw = entity.rotationYaw; + float prevYaw = entity.prevRotationYaw; + + if(yaw - prevYaw > 180) yaw -= 360; + if(prevYaw - yaw > 180) prevYaw -= 360; + + float yawInterp = prevYaw + (yaw - prevYaw) * interp - 720; + + GL11.glRotated(-yawInterp, 0, 1, 0); + + float pitch = entity.rotationPitch; + float prevPitch = entity.prevRotationPitch; + float pitchInterp = prevPitch + (pitch - prevPitch) * interp; + GL11.glRotated(-pitchInterp, 1, 0, 0); + + GL11.glDisable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.tram_trailer); + ResourceManager.train_cargo_tram_trailer.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + + int slots = entity.getDataWatcher().getWatchableObjectInt(10); + + if(slots > 0) { + + EntityItem dummy = new EntityItem(entity.worldObj, 0, 0, 0, new ItemStack(ModBlocks.crate)); + dummy.hoverStart = 0.0F; + + RenderItem.renderInFrame = true; + double scale = 2; + GL11.glScaled(scale, scale, scale); + + if(slots <= 5) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.375D, 0.0D, 0.0F, 0.0F); + } else if(slots <= 10) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.1D, 0.375D, 0.25D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, -0.25D, 0.0F, 0.0F); + } else if(slots <= 15) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.1D, 0.375D, 0.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, 0.375D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, -0.375D, 0.0F, 0.0F); + } else if(slots <= 20) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.3D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.2D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.2D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.3D, 0.0F, 0.0F); + } else if(slots <= 25) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.6D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.5D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.2D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.3D, 0.0F, 0.0F); + } else if(slots <= 30) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.6D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.5D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.5D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.6D, 0.0F, 0.0F); + } else if(slots <= 35) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.4D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.4D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.3D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.5D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, -0.25D, 0.0F, 0.0F); + } else if(slots <= 40) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.4D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.4D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.3D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.5D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, -0.25D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, 0.15D, 0.0F, 0.0F); + } else { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.4D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.4D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.3D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.5D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, -0.25D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, 0.15D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, 0.8D, 0.0F, 0.0F); + } + + RenderItem.renderInFrame = false; + } + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ResourceManager.tram_trailer; + } +} diff --git a/src/main/java/com/hbm/render/entity/item/RenderTunnelBore.java b/src/main/java/com/hbm/render/entity/item/RenderTunnelBore.java new file mode 100644 index 000000000..98c8c1f69 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderTunnelBore.java @@ -0,0 +1,60 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.train.EntityRailCarBase; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderTunnelBore extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float swing, float interp) { + GL11.glPushMatrix(); + + EntityRailCarBase train = (EntityRailCarBase) entity; + double iX = train.prevPosX + (train.posX - train.prevPosX) * interp; + double iY = train.prevPosY + (train.posY - train.prevPosY) * interp; + double iZ = train.prevPosZ + (train.posZ - train.prevPosZ) * interp; + double rX = train.lastRenderX + (train.renderX - train.lastRenderX) * interp; + double rY = train.lastRenderY + (train.renderY - train.lastRenderY) * interp; + double rZ = train.lastRenderZ + (train.renderZ - train.lastRenderZ) * interp; + x -= iX - rX; + y -= iY - rY; + z -= iZ - rZ; + + GL11.glTranslated(x, y - 0.0625D, z); + + float yaw = entity.rotationYaw; + float prevYaw = entity.prevRotationYaw; + + if(yaw - prevYaw > 180) yaw -= 360; + if(prevYaw - yaw > 180) prevYaw -= 360; + + float yawInterp = prevYaw + (yaw - prevYaw) * interp - 720; + + GL11.glRotated(-yawInterp, 0, 1, 0); + + float pitch = entity.rotationPitch; + float prevPitch = entity.prevRotationPitch; + float pitchInterp = prevPitch + (pitch - prevPitch) * interp; + GL11.glRotated(-pitchInterp, 1, 0, 0); + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.universal); + ResourceManager.tunnel_bore.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ResourceManager.universal; + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderBalls.java b/src/main/java/com/hbm/render/entity/mob/RenderBalls.java index 2a13025aa..113742e0f 100644 --- a/src/main/java/com/hbm/render/entity/mob/RenderBalls.java +++ b/src/main/java/com/hbm/render/entity/mob/RenderBalls.java @@ -37,5 +37,4 @@ public class RenderBalls extends Render { protected ResourceLocation getEntityTexture(Entity p_110775_1_) { return ResourceManager.universal_bright; } - } diff --git a/src/main/java/com/hbm/render/entity/mob/RenderDrone.java b/src/main/java/com/hbm/render/entity/mob/RenderDrone.java new file mode 100644 index 000000000..664bb4275 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderDrone.java @@ -0,0 +1,45 @@ +package com.hbm.render.entity.mob; + +import java.util.Random; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.mob.EntityFBIDrone; +import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderDrone extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y + 0.25, z); + + this.bindTexture(getEntityTexture(entity)); + + Random rand = new Random(entity.getEntityId()); + GL11.glRotated(rand.nextDouble() * 360D, 0, 1, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glDisable(GL11.GL_CULL_FACE); + ResourceManager.drone.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return this.getEntityTexture((EntityFBIDrone) entity); + } + + protected ResourceLocation getEntityTexture(EntityFBIDrone entity) { + return new ResourceLocation(RefStrings.MODID + ":textures/entity/quadcopter.png"); + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java b/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java new file mode 100644 index 000000000..49b0ea4f8 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java @@ -0,0 +1,169 @@ +package com.hbm.render.entity.mob; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.mob.EntityGlyphid; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +public class RenderGlyphid extends RenderLiving { + + public RenderGlyphid() { + super(new ModelGlyphid(), 1.0F); + this.shadowOpaque = 0.0F; + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + EntityGlyphid glyphid = (EntityGlyphid) entity; + return glyphid.getSkin(); + } + + public static class ModelGlyphid extends ModelBase { + + double bite = 0; + + @Override + public void setLivingAnimations(EntityLivingBase entity, float limbSwing, float limbSwingAmount, float interp) { + bite = entity.getSwingProgress(interp); + } + + @Override + public void render(Entity entity, float limbSwing, float limbSwingAmount, float rotationYaw, float rotationHeadYaw, float rotationPitch, float scale) { + GL11.glPushMatrix(); + + GL11.glRotatef(180, 1, 0, 0); + GL11.glTranslatef(0, -1.5F, 0); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + double s = ((EntityGlyphid) entity).getScale(); + GL11.glScaled(s, s, s); + + EntityLivingBase living = (EntityLivingBase) entity; + byte armor = living.getDataWatcher().getWatchableObjectByte(17); + + double walkCycle = limbSwing; + + double cy0 = Math.sin(walkCycle % (Math.PI * 2)); + double cy1 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI * 0.5); + double cy2 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI); + double cy3 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI * 0.75); + + double bite = MathHelper.clamp_double(Math.sin(this.bite * Math.PI * 2 - Math.PI * 0.5), 0, 1) * 20; + double headTilt = Math.sin(this.bite * Math.PI) * 30; + + ResourceManager.glyphid.renderPart("Body"); + if((armor & (1 << 0)) > 0) ResourceManager.glyphid.renderPart("ArmorFront"); + if((armor & (1 << 1)) > 0) ResourceManager.glyphid.renderPart("ArmorLeft"); + if((armor & (1 << 2)) > 0) ResourceManager.glyphid.renderPart("ArmorRight"); + + /// LEFT ARM /// + GL11.glPushMatrix(); + GL11.glTranslated(0.25, 0.625, 0.0625); + GL11.glRotated(10, 0, 1, 0); + GL11.glRotated(35 + cy1 * 20, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.0625); + ResourceManager.glyphid.renderPart("ArmLeftUpper"); + GL11.glTranslated(0.25, 0.625, 0.4375); + GL11.glRotated(-75 - cy1 * 20 + cy0 * 20, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.4375); + ResourceManager.glyphid.renderPart("ArmLeftMid"); + GL11.glTranslated(0.25, 0.625, 0.9375); + GL11.glRotated(90 - cy0 * 45, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.9375); + ResourceManager.glyphid.renderPart("ArmLeftLower"); + if((armor & (1 << 3)) > 0) ResourceManager.glyphid.renderPart("ArmLeftArmor"); + GL11.glPopMatrix(); + + /// RIGHT ARM /// + GL11.glPushMatrix(); + GL11.glTranslated(-0.25, 0.625, 0.0625); + GL11.glRotated(-10, 0, 1, 0); + GL11.glRotated(35 + cy2 * 20, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.0625); + ResourceManager.glyphid.renderPart("ArmRightUpper"); + GL11.glTranslated(-0.25, 0.625, 0.4375); + GL11.glRotated(-75 - cy2 * 20 + cy3 * 20, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.4375); + ResourceManager.glyphid.renderPart("ArmRightMid"); + GL11.glTranslated(-0.25, 0.625, 0.9375); + GL11.glRotated(90 - cy3 * 45, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.9375); + ResourceManager.glyphid.renderPart("ArmRightLower"); + if((armor & (1 << 4)) > 0) ResourceManager.glyphid.renderPart("ArmRightArmor"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(headTilt, 0, 0, 1); + GL11.glTranslated(0, -0.5, -0.25); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(-bite, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawTop"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(bite, 0, 1, 0); + GL11.glRotated(bite, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawLeft"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(-bite, 0, 1, 0); + GL11.glRotated(bite, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawRight"); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + + double steppy = 15; + double bend = 60; + + for(int i = 0; i < 3; i++) { + + double c0 = cy0 * (i == 1 ? -1 : 1); + double c1 = cy1 * (i == 1 ? -1 : 1); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.25, 0); + GL11.glRotated(i * 30 - 15 + c0 * 7.5, 0, 1, 0); + GL11.glRotated(steppy + c1 * steppy, 0, 0, 1); + GL11.glTranslated(0, -0.25, 0); + ResourceManager.glyphid.renderPart("LegLeftUpper"); + GL11.glTranslated(0.5625, 0.25, 0); + GL11.glRotated(-bend - c1 * steppy, 0, 0, 1); + GL11.glTranslated(-0.5625, -0.25, 0); + ResourceManager.glyphid.renderPart("LegLeftLower"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.25, 0); + GL11.glRotated(i * 30 - 45 + c0 * 7.5, 0, 1, 0); + GL11.glRotated(-steppy + c1 * steppy, 0, 0, 1); + GL11.glTranslated(0, -0.25, 0); + ResourceManager.glyphid.renderPart("LegRightUpper"); + GL11.glTranslated(-0.5625, 0.25, 0); + GL11.glRotated(bend - c1 * steppy, 0, 0, 1); + GL11.glTranslated(0.5625, -0.25, 0); + ResourceManager.glyphid.renderPart("LegRightLower"); + GL11.glPopMatrix(); + } + + GL11.glPopMatrix(); + } + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderGlyphidNuclear.java b/src/main/java/com/hbm/render/entity/mob/RenderGlyphidNuclear.java new file mode 100644 index 000000000..88c74cc21 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderGlyphidNuclear.java @@ -0,0 +1,234 @@ +package com.hbm.render.entity.mob; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.mob.EntityGlyphid; +import com.hbm.entity.mob.EntityGlyphidNuclear; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +public class RenderGlyphidNuclear extends RenderLiving { + + public RenderGlyphidNuclear() { + super(new ModelGlyphid(), 1.0F); + this.shadowOpaque = 0.0F; + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + EntityGlyphid glyphid = (EntityGlyphid) entity; + return glyphid.getSkin(); + } + + @Override + protected void preRenderCallback(EntityLivingBase entity, float interp) { + this.preRenderCallback((EntityGlyphidNuclear) entity, interp); + } + + protected void preRenderCallback(EntityGlyphidNuclear entity, float interp) { + float swell = (float) (entity.deathTicks + interp) / 95F; + float flash = 1.0F + MathHelper.sin(swell * 100.0F) * swell * 0.01F; + + if(swell < 0.0F) { + swell = 0.0F; + } + + if(swell > 1.0F) { + swell = 1.0F; + } + + swell *= swell; + swell *= swell; + + float scaleHorizontal = (1.0F + swell * 0.4F) * flash; + float scaleVertical = (1.0F + swell * 0.1F) / flash; + GL11.glScalef(scaleHorizontal, scaleVertical, scaleHorizontal); + } + + @Override + protected int getColorMultiplier(EntityLivingBase entity, float lightBrightness, float interp) { + return this.getColorMultiplier((EntityGlyphidNuclear) entity, lightBrightness, interp); + } + + protected int getColorMultiplier(EntityGlyphidNuclear entity, float lightBrightness, float interp) { + float swell = (float) (entity.deathTicks + interp) / 20F; + + + + + int a = (int) (swell * 0.2F * 255.0F); + + if((int) (swell * 10.0F) % 4 < 2) + return a *= 0.75; + + if(a < 0) { + a = 0; + } + + if(a > 255) { + a = 255; + } + + short r = 255; + short g = 255; + short b = 255; + return a << 24 | r << 16 | g << 8 | b; + } + + public static class ModelGlyphid extends ModelBase { + + double bite = 0; + + @Override + public void setLivingAnimations(EntityLivingBase entity, float limbSwing, float limbSwingAmount, float interp) { + bite = entity.getSwingProgress(interp); + } + + @Override + public void render(Entity entity, float limbSwing, float limbSwingAmount, float rotationYaw, float rotationHeadYaw, float rotationPitch, float scale) { + GL11.glPushMatrix(); + + GL11.glRotatef(180, 1, 0, 0); + GL11.glTranslatef(0, -1.5F, 0); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + double s = ((EntityGlyphid) entity).getScale(); + GL11.glScaled(s, s, s); + + EntityLivingBase living = (EntityLivingBase) entity; + byte armor = living.getDataWatcher().getWatchableObjectByte(17); + + double walkCycle = limbSwing; + + double cy0 = Math.sin(walkCycle % (Math.PI * 2)); + double cy1 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI * 0.5); + double cy2 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI); + double cy3 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI * 0.75); + + double bite = MathHelper.clamp_double(Math.sin(this.bite * Math.PI * 2 - Math.PI * 0.5), 0, 1) * 20; + double headTilt = Math.sin(this.bite * Math.PI) * 30; + + ResourceManager.glyphid.renderPart("Body"); + if((armor & (1 << 0)) > 0) ResourceManager.glyphid.renderPart("ArmorFront"); + if((armor & (1 << 1)) > 0) ResourceManager.glyphid.renderPart("ArmorLeft"); + if((armor & (1 << 2)) > 0) ResourceManager.glyphid.renderPart("ArmorRight"); + + /// LEFT ARM /// + GL11.glPushMatrix(); + GL11.glTranslated(0.25, 0.625, 0.0625); + GL11.glRotated(10, 0, 1, 0); + GL11.glRotated(35 + cy1 * 20, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.0625); + ResourceManager.glyphid.renderPart("ArmLeftUpper"); + GL11.glTranslated(0.25, 0.625, 0.4375); + GL11.glRotated(-75 - cy1 * 20 + cy0 * 20, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.4375); + ResourceManager.glyphid.renderPart("ArmLeftMid"); + GL11.glTranslated(0.25, 0.625, 0.9375); + GL11.glRotated(90 - cy0 * 45, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.9375); + ResourceManager.glyphid.renderPart("ArmLeftLower"); + if((armor & (1 << 3)) > 0) ResourceManager.glyphid.renderPart("ArmLeftArmor"); + GL11.glPopMatrix(); + + /// RIGHT ARM /// + GL11.glPushMatrix(); + GL11.glTranslated(-0.25, 0.625, 0.0625); + GL11.glRotated(-10, 0, 1, 0); + GL11.glRotated(35 + cy2 * 20, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.0625); + ResourceManager.glyphid.renderPart("ArmRightUpper"); + GL11.glTranslated(-0.25, 0.625, 0.4375); + GL11.glRotated(-75 - cy2 * 20 + cy3 * 20, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.4375); + ResourceManager.glyphid.renderPart("ArmRightMid"); + GL11.glTranslated(-0.25, 0.625, 0.9375); + GL11.glRotated(90 - cy3 * 45, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.9375); + ResourceManager.glyphid.renderPart("ArmRightLower"); + if((armor & (1 << 4)) > 0) ResourceManager.glyphid.renderPart("ArmRightArmor"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(headTilt, 0, 0, 1); + GL11.glTranslated(0, -0.5, -0.25); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(-bite, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawTop"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(bite, 0, 1, 0); + GL11.glRotated(bite, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawLeft"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(-bite, 0, 1, 0); + GL11.glRotated(bite, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawRight"); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + + double steppy = 15; + double bend = 60; + + for(int i = 0; i < 3; i++) { + + double c0 = cy0 * (i == 1 ? -1 : 1); + double c1 = cy1 * (i == 1 ? -1 : 1); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.25, 0); + GL11.glRotated(i * 30 - 15 + c0 * 7.5, 0, 1, 0); + GL11.glRotated(steppy + c1 * steppy, 0, 0, 1); + GL11.glTranslated(0, -0.25, 0); + ResourceManager.glyphid.renderPart("LegLeftUpper"); + GL11.glTranslated(0.5625, 0.25, 0); + GL11.glRotated(-bend - c1 * steppy, 0, 0, 1); + GL11.glTranslated(-0.5625, -0.25, 0); + ResourceManager.glyphid.renderPart("LegLeftLower"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.25, 0); + GL11.glRotated(i * 30 - 45 + c0 * 7.5, 0, 1, 0); + GL11.glRotated(-steppy + c1 * steppy, 0, 0, 1); + GL11.glTranslated(0, -0.25, 0); + ResourceManager.glyphid.renderPart("LegRightUpper"); + GL11.glTranslated(-0.5625, 0.25, 0); + GL11.glRotated(bend - c1 * steppy, 0, 0, 1); + GL11.glTranslated(0.5625, -0.25, 0); + ResourceManager.glyphid.renderPart("LegRightLower"); + GL11.glPopMatrix(); + } + + + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glTranslated(0, 1, 0); + GL11.glRotated(90, 1, 0, 0); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mini_nuke_tex); + ResourceManager.projectiles.renderPart("MiniNuke"); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java b/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java new file mode 100644 index 000000000..8acc1a550 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java @@ -0,0 +1,39 @@ +package com.hbm.render.entity.mob; + +import com.hbm.entity.mob.EntityPigeon; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +public class RenderPigeon extends RenderLiving { + + public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/entity/pigeon.png"); + + public RenderPigeon(ModelBase p_i1252_1_, float p_i1252_2_) { + super(p_i1252_1_, p_i1252_2_); + } + + protected ResourceLocation getEntityTexture(Entity entity) { + return this.getEntityTexture((EntityPigeon) entity); + } + + protected ResourceLocation getEntityTexture(EntityPigeon entity) { + return texture; + } + + protected float handleRotationFloat(EntityPigeon entity, float interp) { + float f1 = entity.prevFallTime + (entity.fallTime - entity.prevFallTime) * interp; + float f2 = entity.prevDest + (entity.dest - entity.prevDest) * interp; + return (MathHelper.sin(f1) + 1.0F) * f2; + } + + @Override + protected float handleRotationFloat(EntityLivingBase entity, float interp) { + return this.handleRotationFloat((EntityPigeon) entity, interp); + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderPlasticBag.java b/src/main/java/com/hbm/render/entity/mob/RenderPlasticBag.java new file mode 100644 index 000000000..2d6a210f4 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderPlasticBag.java @@ -0,0 +1,41 @@ +package com.hbm.render.entity.mob; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.AdvancedModelLoader; +import net.minecraftforge.client.model.IModelCustom; + +public class RenderPlasticBag extends Render { + + private static final IModelCustom model = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mobs/plasticbag.obj")); + private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/entity/plasticbag.png"); + + public RenderPlasticBag() { + this.shadowOpaque = 0.0F; + } + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * f1 + 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * f1 - 90, 0.0F, 0.0F, 1.0F); + + this.bindEntityTexture(entity); + model.renderAll(); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return texture; + } +} diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java b/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java index 0c8f15481..c97e4b982 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java @@ -3,8 +3,10 @@ package com.hbm.render.entity.projectile; import java.util.Random; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.IBulletBase; import com.hbm.handler.BulletConfiguration; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; @@ -71,7 +73,8 @@ public class RenderBullet extends Render { case BulletConfiguration.STYLE_APDS: renderAPDS(); break; case BulletConfiguration.STYLE_BLADE: renderBlade(); break; case BulletConfiguration.STYLE_BARREL: renderNuke(3); break; - case BulletConfiguration.STYLE_TAU: renderTau((EntityBulletBase) bullet, trail, f1); break; + case BulletConfiguration.STYLE_TAU: renderTau(bullet, trail, f1); break; + case BulletConfiguration.STYLE_LEADBURSTER: renderLeadburster(bullet, f1); break; default: renderBullet(trail); break; } @@ -482,7 +485,7 @@ public class RenderBullet extends Render { GL11.glPopMatrix(); } - private void renderTau(EntityBulletBase bullet, int trail, float interp) { + private void renderTau(Entity bullet, int trail, float interp) { Tessellator tessellator = Tessellator.instance; @@ -492,15 +495,17 @@ public class RenderBullet extends Render { double pY = bullet.prevPosY + (bullet.posY - bullet.prevPosY) * interp; double pZ = bullet.prevPosZ + (bullet.posZ - bullet.prevPosZ) * interp; - if(bullet.prevRenderY == 0) { - bullet.prevRenderX = pX; - bullet.prevRenderY = pY; - bullet.prevRenderZ = pZ; + IBulletBase iface = (IBulletBase) bullet; + + if(iface.prevY() == 0) { + iface.prevX(pX); + iface.prevY(pY); + iface.prevZ(pZ); } - double deltaX = bullet.prevRenderX - pX; - double deltaY = bullet.prevRenderY - pY; - double deltaZ = bullet.prevRenderZ - pZ; + double deltaX = iface.prevX() - pX; + double deltaY = iface.prevY() - pY; + double deltaZ = iface.prevZ() - pZ; EntityPlayer player = Minecraft.getMinecraft().thePlayer; double dX = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double)interp; @@ -521,7 +526,7 @@ public class RenderBullet extends Render { b = 1; } - for(Pair pair : bullet.trailNodes) { + for(Pair pair : iface.nodes()) { Vec3 pos = pair.getKey(); double mult = 1D; @@ -533,8 +538,8 @@ public class RenderBullet extends Render { tessellator.startDrawingQuads(); tessellator.setNormal(0F, 1F, 0F); - for(int i = 0; i < bullet.trailNodes.size() - 1; i++) { - final Pair node = bullet.trailNodes.get(i), past = bullet.trailNodes.get(i + 1); + for(int i = 0; i < iface.nodes().size() - 1; i++) { + final Pair node = iface.nodes().get(i), past = iface.nodes().get(i + 1); final Vec3 nodeLoc = node.getKey(), pastLoc = past.getKey(); float nodeAlpha = node.getValue().floatValue(); float pastAlpha = past.getValue().floatValue(); @@ -582,9 +587,27 @@ public class RenderBullet extends Render { GL11.glDisable(GL11.GL_BLEND); GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); - bullet.prevRenderX = pX; - bullet.prevRenderY = pY; - bullet.prevRenderZ = pZ; + iface.prevX(pX); + iface.prevY(pY); + iface.prevZ(pZ); + } + + private void renderLeadburster(Entity bullet, float interp) { + EntityBulletBaseNT bulletnt = (EntityBulletBaseNT) bullet; + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glRotated(90, 0, 0, -1); + double scale = 0.05; + GL11.glScaled(scale, scale, scale); + bindTexture(ResourceManager.leadburster_tex); + ResourceManager.leadburster.renderPart("Based"); + if(bulletnt.getStuckIn() != -1) { + GL11.glRotated((bullet.ticksExisted + interp) * -18, 0, 1, 0); + } + ResourceManager.leadburster.renderPart("Based.001"); + ResourceManager.leadburster.renderPart("Backlight"); + GL11.glPopMatrix(); } @Override diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java index 268cca1cf..1dff79e27 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java @@ -3,10 +3,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; import com.hbm.entity.missile.EntityMissileAntiBallistic; -import com.hbm.entity.missile.EntityMissileBunkerBuster; -import com.hbm.entity.missile.EntityMissileCluster; -import com.hbm.entity.missile.EntityMissileGeneric; -import com.hbm.entity.missile.EntityMissileIncendiary; +import com.hbm.entity.missile.EntityMissileTier1.*; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; @@ -14,28 +11,40 @@ import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; public class RenderMissileGeneric extends Render { - - public RenderMissileGeneric() { } + + public RenderMissileGeneric() { + } @Override - public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { + public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float interp) { GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); - - if(p_76986_1_ instanceof EntityMissileGeneric) - bindTexture(ResourceManager.missileV2_HE_tex); - if(p_76986_1_ instanceof EntityMissileIncendiary) - bindTexture(ResourceManager.missileV2_IN_tex); - if(p_76986_1_ instanceof EntityMissileCluster) - bindTexture(ResourceManager.missileV2_CL_tex); - if(p_76986_1_ instanceof EntityMissileBunkerBuster) - bindTexture(ResourceManager.missileV2_BU_tex); - if(p_76986_1_ instanceof EntityMissileAntiBallistic) - bindTexture(ResourceManager.missileAA_tex); - ResourceManager.missileV2.renderAll(); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * interp, 0.0F, 0.0F, 1.0F); + + if(entity instanceof EntityMissileAntiBallistic) { + bindTexture(ResourceManager.missileAA_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileABM.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } else { + + if(entity instanceof EntityMissileGeneric) + bindTexture(ResourceManager.missileV2_HE_tex); + if(entity instanceof EntityMissileIncendiary) + bindTexture(ResourceManager.missileV2_IN_tex); + if(entity instanceof EntityMissileCluster) + bindTexture(ResourceManager.missileV2_CL_tex); + if(entity instanceof EntityMissileBunkerBuster) + bindTexture(ResourceManager.missileV2_BU_tex); + if(entity instanceof EntityMissileDecoy) + bindTexture(ResourceManager.missileV2_decoy_tex); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileHuge.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileHuge.java index af95674e1..00df032dc 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileHuge.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileHuge.java @@ -2,10 +2,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; -import com.hbm.entity.missile.EntityMissileBurst; -import com.hbm.entity.missile.EntityMissileDrill; -import com.hbm.entity.missile.EntityMissileInferno; -import com.hbm.entity.missile.EntityMissileRain; +import com.hbm.entity.missile.EntityMissileTier3.*; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; @@ -13,27 +10,29 @@ import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; public class RenderMissileHuge extends Render { - - public RenderMissileHuge() { } + + public RenderMissileHuge() { + } @Override public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glScalef(2F, 2F, 2F); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); + GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); - if(p_76986_1_ instanceof EntityMissileBurst) - bindTexture(ResourceManager.missileHuge_HE_tex); - if(p_76986_1_ instanceof EntityMissileInferno) - bindTexture(ResourceManager.missileHuge_IN_tex); - if(p_76986_1_ instanceof EntityMissileRain) - bindTexture(ResourceManager.missileHuge_CL_tex); - if(p_76986_1_ instanceof EntityMissileDrill) - bindTexture(ResourceManager.missileHuge_BU_tex); - ResourceManager.missileHuge.renderAll(); + if(p_76986_1_ instanceof EntityMissileBurst) + bindTexture(ResourceManager.missileHuge_HE_tex); + if(p_76986_1_ instanceof EntityMissileInferno) + bindTexture(ResourceManager.missileHuge_IN_tex); + if(p_76986_1_ instanceof EntityMissileRain) + bindTexture(ResourceManager.missileHuge_CL_tex); + if(p_76986_1_ instanceof EntityMissileDrill) + bindTexture(ResourceManager.missileHuge_BU_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileHuge.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileNuclear.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileNuclear.java index 7719b2612..f69443b8f 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileNuclear.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileNuclear.java @@ -2,7 +2,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; -import com.hbm.entity.missile.EntityMissileVolcano; +import com.hbm.entity.missile.EntityMissileTier4.EntityMissileVolcano; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileStrong.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileStrong.java index cbe85f692..5b31dbd04 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileStrong.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileStrong.java @@ -2,11 +2,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; -import com.hbm.entity.missile.EntityMissileBusterStrong; -import com.hbm.entity.missile.EntityMissileClusterStrong; -import com.hbm.entity.missile.EntityMissileEMPStrong; -import com.hbm.entity.missile.EntityMissileIncendiaryStrong; -import com.hbm.entity.missile.EntityMissileStrong; +import com.hbm.entity.missile.EntityMissileTier2.*; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; @@ -21,22 +17,24 @@ public class RenderMissileStrong extends Render { public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glScalef(1.5F, 1.5F, 1.5F); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); - - if(p_76986_1_ instanceof EntityMissileStrong) - bindTexture(ResourceManager.missileStrong_HE_tex); - if(p_76986_1_ instanceof EntityMissileIncendiaryStrong) - bindTexture(ResourceManager.missileStrong_IN_tex); - if(p_76986_1_ instanceof EntityMissileClusterStrong) - bindTexture(ResourceManager.missileStrong_CL_tex); - if(p_76986_1_ instanceof EntityMissileBusterStrong) - bindTexture(ResourceManager.missileStrong_BU_tex); - if(p_76986_1_ instanceof EntityMissileEMPStrong) - bindTexture(ResourceManager.missileStrong_EMP_tex); - ResourceManager.missileStrong.renderAll(); + GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); + GL11.glScalef(1.5F, 1.5F, 1.5F); + GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); + + if(p_76986_1_ instanceof EntityMissileStrong) + bindTexture(ResourceManager.missileStrong_HE_tex); + if(p_76986_1_ instanceof EntityMissileIncendiaryStrong) + bindTexture(ResourceManager.missileStrong_IN_tex); + if(p_76986_1_ instanceof EntityMissileClusterStrong) + bindTexture(ResourceManager.missileStrong_CL_tex); + if(p_76986_1_ instanceof EntityMissileBusterStrong) + bindTexture(ResourceManager.missileStrong_BU_tex); + if(p_76986_1_ instanceof EntityMissileEMPStrong) + bindTexture(ResourceManager.missileStrong_EMP_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileStrong.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileTaint.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileTaint.java index 19c49616a..65643516f 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileTaint.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileTaint.java @@ -2,10 +2,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; -import com.hbm.entity.missile.EntityMissileBHole; -import com.hbm.entity.missile.EntityMissileEMP; -import com.hbm.entity.missile.EntityMissileSchrabidium; -import com.hbm.entity.missile.EntityMissileTaint; +import com.hbm.entity.missile.EntityMissileTier0.*; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileThermo.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileThermo.java index 644dc3c81..c19a36c83 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileThermo.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileThermo.java @@ -2,8 +2,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; -import com.hbm.entity.missile.EntityMissileEndo; -import com.hbm.entity.missile.EntityMissileExo; +import com.hbm.entity.missile.EntityMissileTier3.*; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/hbm/render/icon/TextureAtlasSpriteMutatable.java b/src/main/java/com/hbm/render/icon/TextureAtlasSpriteMutatable.java index 5a0e97ee2..3c596db64 100644 --- a/src/main/java/com/hbm/render/icon/TextureAtlasSpriteMutatable.java +++ b/src/main/java/com/hbm/render/icon/TextureAtlasSpriteMutatable.java @@ -52,7 +52,8 @@ public class TextureAtlasSpriteMutatable extends TextureAtlasSprite { if(mutator != null) { for(int i = 0; i < frames.length; i++) { BufferedImage frame = frames[i]; - mutator.mutate(frame, i, frames.length); + + if(frame != null) mutator.mutate(frame, i, frames.length); } } diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 9e15b0a08..0c3a421c2 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -257,7 +257,9 @@ public class ItemRenderLibrary { } public void renderCommon() { GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.chemplant_body_tex); ResourceManager.chemplant_body.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); bindTexture(ResourceManager.chemplant_piston_tex); ResourceManager.chemplant_piston.renderAll(); bindTexture(ResourceManager.chemplant_spinner_tex); GL11.glTranslated(-0.625, 0, 0.625); @@ -442,16 +444,6 @@ public class ItemRenderLibrary { ResourceManager.bomb_boy.renderAll(); }}); - renderers.put(Item.getItemFromBlock(ModBlocks.nuke_tsar), new ItemRenderBase() { - public void renderInventory() { - GL11.glScaled(2.25, 2.25, 2.25); - } - public void renderCommon() { - GL11.glTranslated(1.5, 0, 0); - bindTexture(ResourceManager.bomb_tsar_tex); - ResourceManager.bomb_tsar.renderAll(); - }}); - renderers.put(Item.getItemFromBlock(ModBlocks.nuke_prototype), new ItemRenderBase() { public void renderInventory() { GL11.glScaled(2.25, 2.25, 2.25); @@ -735,6 +727,95 @@ public class ItemRenderLibrary { bindTexture(ResourceManager.vault_cog_tex); ResourceManager.vault_cog.renderAll(); bindTexture(ResourceManager.vault_label_101_tex); ResourceManager.vault_label.renderAll(); }}); + renderers.put(Item.getItemFromBlock(ModBlocks.secure_access_door), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(2.4, 2.4, 2.4); + } + public void renderCommon() { + bindTexture(ResourceManager.secure_access_door_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.secure_access_door.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); + + renderers.put(Item.getItemFromBlock(ModBlocks.large_vehicle_door), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(1.8, 1.8, 1.8); + } + public void renderCommon() { + bindTexture(ResourceManager.large_vehicle_door_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.large_vehicle_door.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); + renderers.put(Item.getItemFromBlock(ModBlocks.water_door), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(4, 4, 4); + } + public void renderCommon() { + bindTexture(ResourceManager.water_door_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.water_door.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); + renderers.put(Item.getItemFromBlock(ModBlocks.qe_containment), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -3.5, 0); + GL11.glScaled(3.8, 3.8, 3.8); + } + public void renderCommon() { + bindTexture(ResourceManager.qe_containment_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.qe_containment.renderAllExcept("decal"); + bindTexture(ResourceManager.qe_containment_decal); + ResourceManager.qe_containment.renderPart("decal"); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); + renderers.put(Item.getItemFromBlock(ModBlocks.qe_sliding_door), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -3.5, 0); + GL11.glScaled(6, 6, 6); + } + public void renderCommon() { + bindTexture(ResourceManager.qe_sliding_door_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.qe_sliding_door.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); + + renderers.put(Item.getItemFromBlock(ModBlocks.round_airlock_door), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(3, 3, 3); + } + public void renderCommon() { + bindTexture(ResourceManager.round_airlock_door_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.round_airlock_door.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); + + renderers.put(Item.getItemFromBlock(ModBlocks.sliding_seal_door), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(7, 7, 7); + } + public void renderCommon() { + bindTexture(ResourceManager.sliding_seal_door_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.sliding_seal_door.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); renderers.put(Item.getItemFromBlock(ModBlocks.blast_door), new ItemRenderBase() { public void renderInventory() { @@ -1189,17 +1270,6 @@ public class ItemRenderLibrary { GL11.glShadeModel(GL11.GL_FLAT); }}); - renderers.put(Item.getItemFromBlock(ModBlocks.machine_electrolyser), new ItemRenderBase( ) { - public void renderInventory() { - GL11.glScaled(3, 3, 3); - } - public void renderCommon() { - GL11.glScaled(0.5, 0.5, 0.5); - GL11.glShadeModel(GL11.GL_SMOOTH); - bindTexture(ResourceManager.electrolyser_tex); ResourceManager.electrolyser.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - }}); - renderers.put(Item.getItemFromBlock(ModBlocks.red_pylon_large), new ItemRenderBase( ) { public void renderInventory() { GL11.glTranslated(0, -5, 0); diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderBenelli.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderBenelli.java new file mode 100644 index 000000000..712cc58ab --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderBenelli.java @@ -0,0 +1,115 @@ +package com.hbm.render.item.weapon; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.ItemGunBase; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderBenelli implements IItemRenderer +{ + public ItemRenderBenelli() {} + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch (type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + case INVENTORY: + return true; + default: + return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); + } + + static final String body = "Body.001_Cube.001"; + static final String frontGrip = "Pump_Cylinder.003"; + static final String slide = "Cylinder"; + static final String barrelAndTube = "Body_Cube.002"; + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + int magSize = ItemGunBase.getMag(item); + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + GL11.glPushMatrix(); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.benelli_tex); + final float scale1 = 0.2F; + final double scale2 = 0.065D; + final double scale3 = 0.52D; + + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] feedNew = HbmAnimations.getRelevantTransformation("PUMP"); + + switch (type) { + case EQUIPPED_FIRST_PERSON:// In hand from POV + GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); + if (player.isSneaking()) { + GL11.glRotatef(25.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(-5F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(-1.007F, 0F, -2.5F); + } + else { + GL11.glRotatef(30.0F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(0.0F, -1F, -2.5F); + } + GL11.glScalef(scale1, scale1, scale1); + // Move on recoil + GL11.glTranslated(0, recoil[1], recoil[2]); + GL11.glRotated(recoil[0], 1, 0, 0); + // Move up for reload + GL11.glPushMatrix(); + ResourceManager.benelli.renderAll(); + // Pump new round if empty + if (magSize == 0) + GL11.glTranslated(feedNew[0], feedNew[1], feedNew[2]); + ResourceManager.benelli.renderPart(slide); + GL11.glPopMatrix(); + // Eject spent shell + GL11.glPushMatrix(); + GL11.glPopMatrix(); + break; + case EQUIPPED:// In hand from other's POV + GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(-0.4F, 0.05F, -0.5F); + GL11.glRotated(recoil[0], 1, 0, 0); + GL11.glScaled(scale2 - scale2 * 2, scale2, scale2); + + GL11.glPushMatrix(); + GL11.glPopMatrix(); + break; + case ENTITY:// Dropped entity + GL11.glScaled(0.0625D, 0.0625D, 0.0625D); + break; + case INVENTORY:// Inventory icon + GL11.glScaled(scale3, scale3, -scale3); + GL11.glTranslatef(14.4F, 15.0F, 0.0F); + GL11.glRotatef(270.0F, 10.0F, 0.0F, 0.0F); + GL11.glRotatef(52.5F, 0.0F, 10.0F, 0.0F); + GL11.glRotatef(270.0F, 0.0F, 0.0F, 10.0F); + default: + break; + } + + if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) + ResourceManager.benelli.renderAll(); + GL11.glPopMatrix(); + + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderUACPistol.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderUACPistol.java new file mode 100644 index 000000000..2ce940cc0 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderUACPistol.java @@ -0,0 +1,109 @@ +package com.hbm.render.item.weapon; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderUACPistol implements IItemRenderer { + Minecraft mc = Minecraft.getMinecraft(); + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + return type == ItemRenderType.FIRST_PERSON_MAP ? false : true; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_BOBBING || helper == ItemRendererHelper.ENTITY_ROTATION); + } + + static final String lower = "lower_pistol_0"; + static final String mag = "mag_pistol_0"; + static final String slide = "slide_pistol_0"; + static final String trigger = "trigger_pistol_0"; + static final String hammer = "bool_obj_bool_obj_data.002"; + + static final float scale1 = 0.05F; + static final float scale2 = 0.025F; + static final float scale3 = 0.05F; + static final float scale4 = 0.55F; + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + GL11.glPushMatrix(); + mc.renderEngine.bindTexture(ResourceManager.uac_pistol_tex); + EntityPlayer player = mc.thePlayer; + GL11.glShadeModel(GL11.GL_SMOOTH); + + double[] slideAnim = HbmAnimations.getRelevantTransformation("SLIDE"); + double[] hammerAnim = HbmAnimations.getRelevantTransformation("HAMMER"); + + switch(type) { + case ENTITY:// Dropped item + GL11.glScalef(scale1, scale1, scale1); + break; + case EQUIPPED:// In hand from other's POV + GL11.glScalef(scale2, scale2, scale2); + GL11.glRotatef(90F, 0F, 1F, 0F); + GL11.glRotatef(-45F, 1F, 0F, 0F); + GL11.glTranslatef(0F, -12F, 30F); + + GL11.glPushMatrix(); + ResourceManager.uac_pistol.renderOnly(trigger, mag, lower); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(slideAnim[0], slideAnim[1], slideAnim[2] * 2); + ResourceManager.uac_pistol.renderPart(slide); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glRotated(hammerAnim[0], 1F, 0F, 0F); + ResourceManager.uac_pistol.renderPart(hammer); + GL11.glPopMatrix(); + break; + case EQUIPPED_FIRST_PERSON:// In hand from POV + GL11.glScalef(scale3, scale3, scale3); + GL11.glRotatef(90F, 0F, 1F, 0F); + if(player.isSneaking()) { + GL11.glRotatef(-25F, 1F, 0F, 0F); + GL11.glRotatef(-5F, 0F, 1F, 0F); + GL11.glTranslatef(20.15F, 3.5F, 18F); + } else { + GL11.glRotatef(-25F, 1F, 0F, 0F); + GL11.glTranslatef(-3F, -5F, 20F); + } + GL11.glPushMatrix(); + GL11.glTranslated(slideAnim[0], slideAnim[1], slideAnim[2] * 2); + ResourceManager.uac_pistol.renderPart(slide); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glRotated(hammerAnim[0], 1F, 0F, 0F); + ResourceManager.uac_pistol.renderPart(hammer); + GL11.glPopMatrix(); + break; + case INVENTORY: + GL11.glScalef(scale4, scale4, scale4); + GL11.glRotatef(90F, 0F, 1F, 0F); + GL11.glRotatef(150F, 1F, 0F, 0F); + GL11.glTranslatef(0F, -8F, -24F); + break; + default: + break; + } + if(type != ItemRenderType.EQUIPPED_FIRST_PERSON && type != ItemRenderType.EQUIPPED) + ResourceManager.uac_pistol.renderAll(); + else + ResourceManager.uac_pistol.renderOnly(trigger, mag, lower); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java index 62d35a29d..27e348b32 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java @@ -1,5 +1,7 @@ package com.hbm.render.item.weapon; +import com.hbm.render.anim.HbmAnimations; +import net.minecraftforge.client.model.IModelCustom; import org.lwjgl.opengl.GL11; import com.hbm.main.ResourceManager; @@ -32,62 +34,90 @@ public class ItemRenderWeaponAR15 implements IItemRenderer { @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - + GL11.glPushMatrix(); - + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ar15_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.125D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.0, 0.0, -0.5); - GL11.glRotated(80, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - break; - - case EQUIPPED: - double scale = 0.125D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(10, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(4F, -2F, 5F); - - break; - - case ENTITY: + IModelCustom model = ResourceManager.ar15; - double s1 = 0.1D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: + switch (type) { - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 0.75D; - GL11.glTranslated(6, 9, 0); - GL11.glRotated(-90, 0, 1, 0); - GL11.glRotated(-135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; + case EQUIPPED_FIRST_PERSON: + + double s0 = 0.25D; + GL11.glRotated(25, 0, 0, 1); + GL11.glTranslated(1.25, 0, -0.25); + GL11.glRotated(-100, 0, 1, 0); + GL11.glScaled(s0, s0, s0); + + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + GL11.glRotated(recoil[0] * 2.5, 1, 0, 0); + GL11.glTranslated(0, 0, recoil[0]); + + + double[] tilt = HbmAnimations.getRelevantTransformation("TILT"); + GL11.glTranslated(0, tilt[0], 3); + GL11.glRotated(tilt[0] * -35, 0, 0, 1); + GL11.glTranslated(0, 0, -3); + + model.renderPart("main"); + + double[] mag = HbmAnimations.getRelevantTransformation("MAG"); + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 5); + GL11.glRotated(mag[0] * 60 * (mag[2] == 1 ? 2.5 : 1), -1, 0, 0); + GL11.glTranslated(0, 0, -5); + model.renderPart("mag"); + GL11.glPopMatrix(); + + break; + + case EQUIPPED: + + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(-2F, -0.9F, -0.75F); + + break; + + case ENTITY: + + double s1 = 0.2D; + GL11.glScaled(s1, s1, s1); + GL11.glTranslated(0, 1, 0); + GL11.glRotatef(90, 0, 1, 0); + + break; + + case INVENTORY: + + GL11.glEnable(GL11.GL_LIGHTING); + + double s = 1.45D; + + GL11.glTranslated(6, 9, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(135, 1, 0, 0); + GL11.glScaled(s, s, -s); + + break; + + default: + break; + } + + if (type != ItemRenderType.EQUIPPED_FIRST_PERSON) { + model.renderAll(); } - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.ar15.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix(); } } diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java new file mode 100644 index 000000000..4bca0361c --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java @@ -0,0 +1,100 @@ +package com.hbm.render.item.weapon; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderWeaponCoilgun implements IItemRenderer { + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + case INVENTORY: + return true; + default: return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + + GL11.glPushMatrix(); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.coilgun_tex); + + switch(type) { + + case EQUIPPED_FIRST_PERSON: + + double s0 = 0.25D; + GL11.glRotated(20, 0, 0, 1); + GL11.glTranslated(0.75, 0.3, -0.5); + GL11.glRotated(-10, 0, 1, 0); + GL11.glScaled(s0, s0, s0); + + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + GL11.glTranslated(-1.5 - recoil[0] * 0.5, 0, 0); + GL11.glRotated(recoil[0] * 45, 0, 0, 1); + GL11.glTranslated(1.5, 0, 0); + + double[] reload = HbmAnimations.getRelevantTransformation("RELOAD"); + GL11.glTranslated(-2.5, 0, 0); + GL11.glRotated(reload[0] * -45, 0, 0, 1); + GL11.glTranslated(2.5, 0, 0); + + break; + + case EQUIPPED: + + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(-80, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-15F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(1.25F, 0.5F, -1.75F); + + break; + + case ENTITY: + + double s1 = 0.2D; + GL11.glScaled(s1, s1, s1); + + break; + + case INVENTORY: + + double s = 3.5D; + GL11.glTranslated(6, 8, 0); + GL11.glRotated(-135, 0, 0, 1); + GL11.glScaled(s, s, -s); + + break; + + default: break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.coilgun.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java new file mode 100644 index 000000000..bcf9f2c02 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java @@ -0,0 +1,106 @@ +package com.hbm.render.item.weapon; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderWeaponCongo implements IItemRenderer { + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + case INVENTORY: + return true; + default: return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + + GL11.glPushMatrix(); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.congolake_tex); + + switch(type) { + + case EQUIPPED_FIRST_PERSON: + + double s0 = 0.25D; + GL11.glRotated(20, 0, 0, 1); + GL11.glTranslated(0.5, 0.0, -0.5); + GL11.glRotated(-10, 0, 1, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(s0, s0, s0); + + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + GL11.glTranslated(0, 0, -recoil[0]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.congolake.renderPart("Gun"); + + double[] pump = HbmAnimations.getRelevantTransformation("PUMP"); + GL11.glTranslated(0, 0, -pump[0]); + + ResourceManager.congolake.renderPart("Pump_Pummp"); + GL11.glShadeModel(GL11.GL_FLAT); + + break; + + case EQUIPPED: + + double scale = 0.35D; + GL11.glScaled(scale, scale, scale); + GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(15, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(1.25F, -1F, 1.5F); + + break; + + case ENTITY: + + double s1 = 0.2D; + GL11.glScaled(s1, s1, s1); + + break; + + case INVENTORY: + + double s = 2D; + GL11.glTranslated(6, 9, 0); + GL11.glRotated(-135, 0, 0, 1); + GL11.glRotated(-90, 0, 1, 0); + GL11.glScaled(s, s, -s); + + break; + + default: break; + } + + if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) { + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.congolake.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCryoCannon.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCryoCannon.java new file mode 100644 index 000000000..b368c30f5 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCryoCannon.java @@ -0,0 +1,118 @@ +package com.hbm.render.item.weapon; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.ItemCryoCannon; +import com.hbm.items.weapon.ItemGunBase; +import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderWeaponCryoCannon implements IItemRenderer { + + public static final ResourceLocation[] fill_tex = new ResourceLocation[15]; + public static final ResourceLocation[] pressure_tex = new ResourceLocation[12]; + public static final ResourceLocation[] turbine_tex = new ResourceLocation[9]; + + public ItemRenderWeaponCryoCannon() { + for(int i = 0; i < fill_tex.length; i++) fill_tex[i] = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/cryo_cannon/fill_" + i + ".png"); + for(int i = 0; i < pressure_tex.length; i++) pressure_tex[i] = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/cryo_cannon/pressure_" + i + ".png"); + for(int i = 0; i < turbine_tex.length; i++) turbine_tex[i] = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/cryo_cannon/turbine_" + i + ".png"); + } + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + case INVENTORY: + return true; + default: return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + + GL11.glPushMatrix(); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glShadeModel(GL11.GL_SMOOTH); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.cryocannon_tex); + + switch(type) { + + case EQUIPPED_FIRST_PERSON: + + double s0 = 0.25D; + GL11.glRotated(25, 0, 0, 1); + GL11.glTranslated(1, 0, -0.3); + GL11.glRotated(80, 0, 1, 0); + GL11.glScaled(s0, s0, s0); + + ItemGunBase gun = (ItemGunBase) item.getItem(); + + ResourceManager.cryocannon.renderPart("Gun"); + ResourceManager.cryocannon.renderPart("Rotor"); + Minecraft.getMinecraft().renderEngine.bindTexture(fill_tex[MathHelper.clamp_int(ItemGunBase.getMag(item) * fill_tex.length / gun.mainConfig.ammoCap, 0, fill_tex.length - 1)]); + ResourceManager.cryocannon.renderPart("Fuel"); + Minecraft.getMinecraft().renderEngine.bindTexture(turbine_tex[MathHelper.clamp_int(turbine_tex.length - 1 - ItemCryoCannon.getTurbine(item) * turbine_tex.length / 100, 0, turbine_tex.length - 1)]); + ResourceManager.cryocannon.renderPart("Spin"); + Minecraft.getMinecraft().renderEngine.bindTexture(pressure_tex[MathHelper.clamp_int(ItemCryoCannon.getPressure(item) * pressure_tex.length / 1000, 0, pressure_tex.length - 1)]); + ResourceManager.cryocannon.renderPart("Pressure"); + + break; + + case EQUIPPED: + + double scale = 0.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(10F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(0.75F, -2.5F, 3.5F); + + break; + + case ENTITY: + + double s1 = 0.25D; + GL11.glScaled(s1, s1, s1); + GL11.glTranslated(0, 0, 3); + + break; + + case INVENTORY: + + double s = 2.5D; + GL11.glTranslated(1, 6, 0); + GL11.glRotated(-135, 0, 0, 1); + GL11.glRotated(-90, 0, 1, 0); + GL11.glScaled(s, s, -s); + + break; + + default: break; + } + + if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) ResourceManager.cryocannon.renderAll(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java index 4573ea079..d1c7b88aa 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java @@ -2,6 +2,7 @@ package com.hbm.render.item.weapon; import org.lwjgl.opengl.GL11; +import com.hbm.items.ModItems; import com.hbm.render.anim.HbmAnimations; import net.minecraft.client.Minecraft; @@ -52,6 +53,11 @@ public class ItemRenderWeaponFFBolt implements IItemRenderer { case EQUIPPED_FIRST_PERSON: + if(item.getItem() == ModItems.gun_bolt_action_saturnite && Minecraft.getMinecraft().thePlayer.isSneaking()) { + GL11.glPopMatrix(); + return; + } + double s0 = 0.5D; GL11.glTranslated(0.5, 0.25, -0.2); GL11.glScaled(s0, s0, s0); diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java index b95260b35..f63f1d68e 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java @@ -67,6 +67,9 @@ public class ItemRenderWeaponFFMaresLeg implements IItemRenderer { GL11.glTranslated(-0.71, 0.375, 0); GL11.glRotated(25, 1, 0, 0); GL11.glRotated(1, 0, 1, 0); + GL11.glRotated(-3, 0, 0, 1); + GL11.glRotated(0.2, 0, 1, 0); + GL11.glTranslated(-0.006, -0.005, 0.4); } double[] recoil = HbmAnimations.getRelevantTransformation("LEVER_RECOIL"); diff --git a/src/main/java/com/hbm/render/loader/ModelRendererObj.java b/src/main/java/com/hbm/render/loader/ModelRendererObj.java index e9ba2885f..4d916aa86 100644 --- a/src/main/java/com/hbm/render/loader/ModelRendererObj.java +++ b/src/main/java/com/hbm/render/loader/ModelRendererObj.java @@ -12,6 +12,9 @@ public class ModelRendererObj { public float rotationPointX; public float rotationPointY; public float rotationPointZ; + public float originPointX; + public float originPointY; + public float originPointZ; public float rotateAngleX; public float rotateAngleY; public float rotateAngleZ; @@ -35,9 +38,9 @@ public class ModelRendererObj { } public ModelRendererObj setRotationPoint(float x, float y, float z) { - this.rotationPointX = x; - this.rotationPointY = y; - this.rotationPointZ = z; + this.originPointX = this.rotationPointX = x; + this.originPointY = this.rotationPointY = y; + this.originPointZ = this.rotationPointZ = z; return this; } @@ -90,7 +93,7 @@ public class ModelRendererObj { GL11.glRotatef(this.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F); } - GL11.glTranslatef(-this.rotationPointX * scale, -this.rotationPointY * scale, -this.rotationPointZ * scale); + GL11.glTranslatef(-this.rotationPointX * scale, -this.rotationPointY * scale, -this.originPointZ * scale); //yes, that is correct GL11.glScalef(scale, scale, scale); diff --git a/src/main/java/com/hbm/render/loader/ModelRendererTest.java b/src/main/java/com/hbm/render/loader/ModelRendererTest.java new file mode 100644 index 000000000..0a8063a94 --- /dev/null +++ b/src/main/java/com/hbm/render/loader/ModelRendererTest.java @@ -0,0 +1,172 @@ +package com.hbm.render.loader; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.Tessellator; + +public class ModelRendererTest extends ModelRenderer { + + //TODO: blow up mojank HQ with a JDAM + private boolean compiled; + private int displayList; + + public ModelRendererTest(ModelBase p_i1173_1_) { + super(p_i1173_1_); + } + + public ModelRendererTest(ModelBase p_i1174_1_, int p_i1174_2_, int p_i1174_3_) { + this(p_i1174_1_); + this.setTextureOffset(p_i1174_2_, p_i1174_3_); + } + + @SideOnly(Side.CLIENT) + public void render(float p_78785_1_) { + if(!this.isHidden) { + if(this.showModel) { + if(!this.compiled) { + this.compileDisplayList(p_78785_1_); + } + + GL11.glTranslatef(this.offsetX, this.offsetY, this.offsetZ); + int i; + + if(this.rotateAngleX == 0.0F && this.rotateAngleY == 0.0F && this.rotateAngleZ == 0.0F) { + if(this.rotationPointX == 0.0F && this.rotationPointY == 0.0F && this.rotationPointZ == 0.0F) { + GL11.glCallList(this.displayList); + + if(this.childModels != null) { + for(i = 0; i < this.childModels.size(); ++i) { + ((ModelRenderer) this.childModels.get(i)).render(p_78785_1_); + } + } + } else { + GL11.glTranslatef(this.rotationPointX * p_78785_1_, this.rotationPointY * p_78785_1_, this.rotationPointZ * p_78785_1_); + GL11.glCallList(this.displayList); + + if(this.childModels != null) { + for(i = 0; i < this.childModels.size(); ++i) { + ((ModelRenderer) this.childModels.get(i)).render(p_78785_1_); + } + } + + GL11.glTranslatef(-this.rotationPointX * p_78785_1_, -this.rotationPointY * p_78785_1_, -this.rotationPointZ * p_78785_1_); + } + } else { + GL11.glPushMatrix(); + GL11.glTranslatef(this.rotationPointX * p_78785_1_, this.rotationPointY * p_78785_1_, this.rotationPointZ * p_78785_1_); + + if(this.rotateAngleZ != 0.0F) { + GL11.glRotatef(this.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F); + } + + if(this.rotateAngleY != 0.0F) { + GL11.glRotatef(this.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F); + } + + if(this.rotateAngleX != 0.0F) { + GL11.glRotatef(this.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F); + } + + GL11.glPushMatrix(); + GL11.glScaled(0.1, 0.1, 0.1); + ResourceManager.chemplant_body.renderAll(); + GL11.glPopMatrix(); + + //GL11.glCallList(this.displayList); + + if(this.childModels != null) { + for(i = 0; i < this.childModels.size(); ++i) { + ((ModelRenderer) this.childModels.get(i)).render(p_78785_1_); + } + } + + GL11.glPopMatrix(); + } + + GL11.glTranslatef(-this.offsetX, -this.offsetY, -this.offsetZ); + } + } + } + + @SideOnly(Side.CLIENT) + public void renderWithRotation(float p_78791_1_) { + if(!this.isHidden) { + if(this.showModel) { + if(!this.compiled) { + this.compileDisplayList(p_78791_1_); + } + + GL11.glPushMatrix(); + GL11.glTranslatef(this.rotationPointX * p_78791_1_, this.rotationPointY * p_78791_1_, this.rotationPointZ * p_78791_1_); + + if(this.rotateAngleY != 0.0F) { + GL11.glRotatef(this.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F); + } + + if(this.rotateAngleX != 0.0F) { + GL11.glRotatef(this.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F); + } + + if(this.rotateAngleZ != 0.0F) { + GL11.glRotatef(this.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F); + } + + GL11.glCallList(this.displayList); + GL11.glPopMatrix(); + } + } + } + + @SideOnly(Side.CLIENT) + public void postRender(float p_78794_1_) { + if(!this.isHidden) { + if(this.showModel) { + if(!this.compiled) { + this.compileDisplayList(p_78794_1_); + } + + if(this.rotateAngleX == 0.0F && this.rotateAngleY == 0.0F && this.rotateAngleZ == 0.0F) { + if(this.rotationPointX != 0.0F || this.rotationPointY != 0.0F || this.rotationPointZ != 0.0F) { + GL11.glTranslatef(this.rotationPointX * p_78794_1_, this.rotationPointY * p_78794_1_, this.rotationPointZ * p_78794_1_); + } + } else { + GL11.glTranslatef(this.rotationPointX * p_78794_1_, this.rotationPointY * p_78794_1_, this.rotationPointZ * p_78794_1_); + + if(this.rotateAngleZ != 0.0F) { + GL11.glRotatef(this.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F); + } + + if(this.rotateAngleY != 0.0F) { + GL11.glRotatef(this.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F); + } + + if(this.rotateAngleX != 0.0F) { + GL11.glRotatef(this.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F); + } + } + } + } + } + + @SideOnly(Side.CLIENT) + private void compileDisplayList(float p_78788_1_) { + this.displayList = GLAllocation.generateDisplayLists(1); + GL11.glNewList(this.displayList, GL11.GL_COMPILE); + Tessellator tessellator = Tessellator.instance; + + for(int i = 0; i < this.cubeList.size(); ++i) { + ((ModelBox) this.cubeList.get(i)).render(tessellator, p_78788_1_); + } + + GL11.glEndList(); + this.compiled = true; + } +} diff --git a/src/main/java/com/hbm/render/model/ModelArmorBase.java b/src/main/java/com/hbm/render/model/ModelArmorBase.java index 70134b4f6..b823ec015 100644 --- a/src/main/java/com/hbm/render/model/ModelArmorBase.java +++ b/src/main/java/com/hbm/render/model/ModelArmorBase.java @@ -39,16 +39,17 @@ public class ModelArmorBase extends ModelBiped { rightFoot = new ModelRendererObj(null).setRotationPoint(-1.9F, 12.0F, 0.0F); } - public void setRotationAngles(float p_78087_1_, float p_78087_2_, float p_78087_3_, float p_78087_4_, float p_78087_5_, float p_78087_6_, Entity entity) { + public void setRotationAngles(float walkCycle, float walkAmplitude, float idleCycle, float headYaw, float headPitch, float scale, Entity entity) { + //super.setRotationAngles(walkCycle, walkAmplitude, idleCycle, headYaw, headPitch, scale, entity); - head.rotateAngleY = p_78087_4_ / (180F / (float) Math.PI); - head.rotateAngleX = p_78087_5_ / (180F / (float) Math.PI); - rightArm.rotateAngleX = MathHelper.cos(p_78087_1_ * 0.6662F + (float) Math.PI) * 2.0F * p_78087_2_ * 0.5F; - leftArm.rotateAngleX = MathHelper.cos(p_78087_1_ * 0.6662F) * 2.0F * p_78087_2_ * 0.5F; + head.rotateAngleY = headYaw / (180F / (float) Math.PI); + head.rotateAngleX = headPitch / (180F / (float) Math.PI); + rightArm.rotateAngleX = MathHelper.cos(walkCycle * 0.6662F + (float) Math.PI) * 2.0F * walkAmplitude * 0.5F; + leftArm.rotateAngleX = MathHelper.cos(walkCycle * 0.6662F) * 2.0F * walkAmplitude * 0.5F; rightArm.rotateAngleZ = 0.0F; leftArm.rotateAngleZ = 0.0F; - rightFoot.rotateAngleX = rightLeg.rotateAngleX = MathHelper.cos(p_78087_1_ * 0.6662F) * 1.4F * p_78087_2_; - leftFoot.rotateAngleX = leftLeg.rotateAngleX = MathHelper.cos(p_78087_1_ * 0.6662F + (float) Math.PI) * 1.4F * p_78087_2_; + rightFoot.rotateAngleX = rightLeg.rotateAngleX = MathHelper.cos(walkCycle * 0.6662F) * 1.4F * walkAmplitude; + leftFoot.rotateAngleX = leftLeg.rotateAngleX = MathHelper.cos(walkCycle * 0.6662F + (float) Math.PI) * 1.4F * walkAmplitude; rightFoot.rotateAngleY = rightLeg.rotateAngleY = 0.0F; leftFoot.rotateAngleY = leftLeg.rotateAngleY = 0.0F; @@ -143,10 +144,10 @@ public class ModelArmorBase extends ModelBiped { head.offsetY = 0.0F; } - rightArm.rotateAngleZ += MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; - leftArm.rotateAngleZ -= MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; - rightArm.rotateAngleX += MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; - leftArm.rotateAngleX -= MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; + rightArm.rotateAngleZ += MathHelper.cos(idleCycle * 0.09F) * 0.05F + 0.05F; + leftArm.rotateAngleZ -= MathHelper.cos(idleCycle * 0.09F) * 0.05F + 0.05F; + rightArm.rotateAngleX += MathHelper.sin(idleCycle * 0.067F) * 0.05F; + leftArm.rotateAngleX -= MathHelper.sin(idleCycle * 0.067F) * 0.05F; if(this.aimedBow) { f6 = 0.0F; @@ -159,10 +160,10 @@ public class ModelArmorBase extends ModelBiped { leftArm.rotateAngleX = -((float) Math.PI / 2F) + head.rotateAngleX; rightArm.rotateAngleX -= f6 * 1.2F - f7 * 0.4F; leftArm.rotateAngleX -= f6 * 1.2F - f7 * 0.4F; - rightArm.rotateAngleZ += MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; - leftArm.rotateAngleZ -= MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; - rightArm.rotateAngleX += MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; - leftArm.rotateAngleX -= MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; + rightArm.rotateAngleZ += MathHelper.cos(idleCycle * 0.09F) * 0.05F + 0.05F; + leftArm.rotateAngleZ -= MathHelper.cos(idleCycle * 0.09F) * 0.05F + 0.05F; + rightArm.rotateAngleX += MathHelper.sin(idleCycle * 0.067F) * 0.05F; + leftArm.rotateAngleX -= MathHelper.sin(idleCycle * 0.067F) * 0.05F; } } diff --git a/src/main/java/com/hbm/render/model/ModelArmorEnvsuit.java b/src/main/java/com/hbm/render/model/ModelArmorEnvsuit.java new file mode 100644 index 000000000..0f5e0aa7a --- /dev/null +++ b/src/main/java/com/hbm/render/model/ModelArmorEnvsuit.java @@ -0,0 +1,80 @@ +package com.hbm.render.model; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.loader.ModelRendererObj; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.entity.Entity; + +public class ModelArmorEnvsuit extends ModelArmorBase { + + ModelRendererObj lamps; + + public ModelArmorEnvsuit(int type) { + super(type); + + head = new ModelRendererObj(ResourceManager.armor_envsuit, "Helmet"); + lamps = new ModelRendererObj(ResourceManager.armor_envsuit, "Lamps"); + body = new ModelRendererObj(ResourceManager.armor_envsuit, "Chest"); + leftArm = new ModelRendererObj(ResourceManager.armor_envsuit, "LeftArm").setRotationPoint(-5.0F, 2.0F, 0.0F); + rightArm = new ModelRendererObj(ResourceManager.armor_envsuit, "RightArm").setRotationPoint(5.0F, 2.0F, 0.0F); + leftLeg = new ModelRendererObj(ResourceManager.armor_envsuit, "LeftLeg").setRotationPoint(1.9F, 12.0F, 0.0F); + rightLeg = new ModelRendererObj(ResourceManager.armor_envsuit, "RightLeg").setRotationPoint(-1.9F, 12.0F, 0.0F); + leftFoot = new ModelRendererObj(ResourceManager.armor_envsuit, "LeftFoot").setRotationPoint(1.9F, 12.0F, 0.0F); + rightFoot = new ModelRendererObj(ResourceManager.armor_envsuit, "RightFoot").setRotationPoint(-1.9F, 12.0F, 0.0F); + } + + @Override + public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) { + setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity); + head.copyTo(lamps); + + GL11.glPushMatrix(); + + if(type == 0) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.envsuit_helmet); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + head.render(par7); + GL11.glDisable(GL11.GL_BLEND); + + /// START GLOW /// + float lastX = OpenGlHelper.lastBrightnessX; + float lastY = OpenGlHelper.lastBrightnessY; + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glColor3f(1F, 1F, 0.8F); + lamps.render(par7); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lastX, lastY); + /// END GLOW /// + } + if(type == 1) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.envsuit_chest); + body.render(par7); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.envsuit_arm); + leftArm.render(par7); + rightArm.render(par7); + } + if(type == 2) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.envsuit_leg); + leftLeg.render(par7); + rightLeg.render(par7); + } + if(type == 3) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.envsuit_leg); + leftFoot.render(par7); + rightFoot.render(par7); + } + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/model/ModelArmorTrenchmaster.java b/src/main/java/com/hbm/render/model/ModelArmorTrenchmaster.java new file mode 100644 index 000000000..533190861 --- /dev/null +++ b/src/main/java/com/hbm/render/model/ModelArmorTrenchmaster.java @@ -0,0 +1,76 @@ +package com.hbm.render.model; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.loader.ModelRendererObj; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.entity.Entity; + +public class ModelArmorTrenchmaster extends ModelArmorBase { + + ModelRendererObj light; + + public ModelArmorTrenchmaster(int type) { + super(type); + + head = new ModelRendererObj(ResourceManager.armor_trenchmaster, "Helmet"); + light = new ModelRendererObj(ResourceManager.armor_trenchmaster, "Light"); + body = new ModelRendererObj(ResourceManager.armor_trenchmaster, "Chest"); + leftArm = new ModelRendererObj(ResourceManager.armor_trenchmaster, "LeftArm").setRotationPoint(-5.0F, 2.0F, 0.0F); + rightArm = new ModelRendererObj(ResourceManager.armor_trenchmaster, "RightArm").setRotationPoint(5.0F, 2.0F, 0.0F); + leftLeg = new ModelRendererObj(ResourceManager.armor_trenchmaster, "LeftLeg").setRotationPoint(1.9F, 12.0F, 0.0F); + rightLeg = new ModelRendererObj(ResourceManager.armor_trenchmaster, "RightLeg").setRotationPoint(-1.9F, 12.0F, 0.0F); + leftFoot = new ModelRendererObj(ResourceManager.armor_trenchmaster, "LeftBoot").setRotationPoint(1.9F, 12.0F, 0.0F); + rightFoot = new ModelRendererObj(ResourceManager.armor_trenchmaster, "RightBoot").setRotationPoint(-1.9F, 12.0F, 0.0F); + } + + @Override + public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) { + setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity); + head.copyTo(light); + + GL11.glPushMatrix(); + + if(type == 0) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_helmet); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + head.render(par7); + GL11.glDisable(GL11.GL_BLEND); + + /// START GLOW /// + float lastX = OpenGlHelper.lastBrightnessX; + float lastY = OpenGlHelper.lastBrightnessY; + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + GL11.glDisable(GL11.GL_LIGHTING); + light.render(par7); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lastX, lastY); + /// END GLOW /// + } + if(type == 1) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_chest); + body.render(par7); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_arm); + leftArm.render(par7); + rightArm.render(par7); + } + if(type == 2) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_leg); + leftLeg.render(par7); + rightLeg.render(par7); + } + if(type == 3) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_leg); + leftFoot.render(par7); + rightFoot.render(par7); + } + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/model/ModelPigeon.java b/src/main/java/com/hbm/render/model/ModelPigeon.java new file mode 100644 index 000000000..14c4dc3ac --- /dev/null +++ b/src/main/java/com/hbm/render/model/ModelPigeon.java @@ -0,0 +1,110 @@ +package com.hbm.render.model; + +import com.hbm.entity.mob.EntityPigeon; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; + +public class ModelPigeon extends ModelBase { + + public ModelRenderer head; + public ModelRenderer beak; + public ModelRenderer body; + public ModelRenderer bodyFat; + public ModelRenderer leftLeg; + public ModelRenderer rightLeg; + public ModelRenderer leftWing; + public ModelRenderer rightWing; + public ModelRenderer ass; + public ModelRenderer feathers; + + public ModelPigeon() { + initModel(); + } + + private void initModel() { + + this.head = new ModelRenderer(this, 0, 0); + this.head.addBox(-2F, -6F, -2F, 4, 6, 4); + this.head.setRotationPoint(0F, 16F, -2F); + this.beak = new ModelRenderer(this, 14, 0); + this.beak.addBox(-1F, -4F, -4F, 2, 2, 2); + this.beak.setRotationPoint(0F, 16F, -2F); + + this.body = new ModelRenderer(this, 0, 10); + this.body.addBox(-3F, -3F, -4F, 6, 6, 8, 0); + this.body.setRotationPoint(0F, 17F, 0F); + this.bodyFat = new ModelRenderer(this, 0, 10); + this.bodyFat.addBox(-3F, -3F, -4F, 6, 6, 8, 1); + this.bodyFat.setRotationPoint(0F, 17F, 0F); + this.ass = new ModelRenderer(this, 0, 24); + this.ass.addBox(-2F, -2F, -2F, 4, 4, 4); + this.ass.setRotationPoint(0F, 20F, 4F); + this.feathers = new ModelRenderer(this, 16, 24); + this.feathers.addBox(-1F, -0.5F, -2F, 2, 1, 4); + this.feathers.setRotationPoint(0F, 21.5F, 7.5F); + + this.leftLeg = new ModelRenderer(this, 20, 0); + this.leftLeg.addBox(-1F, 0F, 0F, 2, 4, 2); + this.leftLeg.setRotationPoint(1F, 20F, -1F); + this.rightLeg = new ModelRenderer(this, 20, 0); + this.rightLeg.addBox(-1F, 0F, 0F, 2, 4, 2); + this.rightLeg.setRotationPoint(-1F, 20F, -1F); + + this.leftWing = new ModelRenderer(this, 28, 0); + this.leftWing.addBox(0F, 0F, -3F, 1, 4, 6); + this.leftWing.setRotationPoint(3F, -2F, 0F); + this.rightWing = new ModelRenderer(this, 28, 10); + this.rightWing.addBox(-1F, 0F, -3F, 1, 4, 6); + this.rightWing.setRotationPoint(-3F, -2F, 0F); + + this.body.addChild(this.leftWing); + this.body.addChild(this.rightWing); + this.bodyFat.addChild(this.leftWing); + this.bodyFat.addChild(this.rightWing); + } + + public void render(Entity entity, float f0, float f1, float f2, float f3, float f4, float scale) { + this.setRotationAngles(f0, f1, f2, f3, f4, scale, entity); + this.head.render(scale); + this.beak.render(scale); + if(((EntityPigeon) entity).isFat()) { + this.bodyFat.render(scale); + } else { + this.body.render(scale); + } + this.rightLeg.render(scale); + this.leftLeg.render(scale); + this.ass.render(scale); + this.feathers.render(scale); + } + + public void setRotationAngles(float walkLoop, float legAmplitude, float armSwing, float headYaw, float headPitch, float scale, Entity entity) { + this.head.rotateAngleX = this.beak.rotateAngleX = headPitch / (180F / (float) Math.PI); + this.head.rotateAngleY = this.beak.rotateAngleY = headYaw / (180F / (float) Math.PI); + this.body.rotateAngleX = this.bodyFat.rotateAngleX = this.ass.rotateAngleX = -((float) Math.PI / 4F); + this.feathers.rotateAngleX = -((float) Math.PI / 8F); + this.rightLeg.rotateAngleX = MathHelper.cos(walkLoop * 0.6662F) * 1.4F * legAmplitude; + this.leftLeg.rotateAngleX = MathHelper.cos(walkLoop * 0.6662F + (float) Math.PI) * 1.4F * legAmplitude; + this.rightWing.rotateAngleZ = armSwing; + this.leftWing.rotateAngleZ = -armSwing; + + if(((EntityPigeon) entity).isFat()) { + this.head.rotationPointZ = -4F; + this.beak.rotationPointZ = -4F; + this.ass.rotationPointZ = 5F; + this.feathers.rotationPointZ = 8.5F; + this.leftWing.rotationPointX = 4F; + this.rightWing.rotationPointX = -4F; + } else { + this.head.rotationPointZ = -2F; + this.beak.rotationPointZ = -2F; + this.ass.rotationPointZ = 4F; + this.feathers.rotationPointZ = 7.5F; + this.leftWing.rotationPointX = 3F; + this.rightWing.rotationPointX = -3F; + } + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderArcWelder.java b/src/main/java/com/hbm/render/tileentity/RenderArcWelder.java new file mode 100644 index 000000000..e87c1d7e4 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderArcWelder.java @@ -0,0 +1,86 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.render.util.RenderDecoItem; +import com.hbm.tileentity.machine.TileEntityMachineArcWelder; + +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderArcWelder extends TileEntitySpecialRenderer implements IItemRendererProvider { + + private RenderItem itemRenderer = new RenderDecoItem(this); + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + GL11.glTranslated(-0.5, 0, 0); + + bindTexture(ResourceManager.arc_welder_tex); + ResourceManager.arc_welder.renderAll(); + + TileEntityMachineArcWelder welder = (TileEntityMachineArcWelder) tile; + if(welder.display != null) { + GL11.glPushMatrix(); + GL11.glTranslated(0.0625D * 2.5D, 1.125D, 0D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glRotatef(90, 0F, 1F, 0F); + GL11.glRotatef(-90, 1F, 0F, 0F); + + if(welder.display != null) { + ItemStack stack = welder.display.copy(); + + EntityItem item = new EntityItem(null, 0.0D, 0.0D, 0.0D, stack); + item.getEntityItem().stackSize = 1; + item.hoverStart = 0.0F; + + RenderItem.renderInFrame = true; + GL11.glScaled(1.5, 1.5, 1.5); + this.itemRenderer.doRender(item, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); + RenderItem.renderInFrame = false; + } + GL11.glPopMatrix(); + } + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_arc_welder); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -2, 0); + GL11.glScaled(4, 4, 4); + } + public void renderCommon() { + bindTexture(ResourceManager.arc_welder_tex); + ResourceManager.arc_welder.renderAll(); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderAshpit.java b/src/main/java/com/hbm/render/tileentity/RenderAshpit.java new file mode 100644 index 000000000..cfee40260 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderAshpit.java @@ -0,0 +1,71 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityAshpit; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderAshpit extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(270, 0F, 1F, 0F); break; + } + GL11.glRotatef(-90, 0F, 1F, 0F); + + TileEntityAshpit oven = (TileEntityAshpit) tile; + + bindTexture(ResourceManager.ashpit_tex); + ResourceManager.heater_oven.renderPart("Main"); + + GL11.glPushMatrix(); + float door = oven.prevDoorAngle + (oven.doorAngle - oven.prevDoorAngle) * interp; + GL11.glTranslated(0, 0, door * 0.75D / 135D); + ResourceManager.heater_oven.renderPart("Door"); + GL11.glPopMatrix(); + + if(oven.isFull) { + ResourceManager.heater_oven.renderPart("InnerBurning"); + } else { + ResourceManager.heater_oven.renderPart("Inner"); + } + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_ashpit); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -1, 0); + GL11.glScaled(3.25, 3.25, 3.25); + } + public void renderCommon() { + bindTexture(ResourceManager.ashpit_tex); + ResourceManager.heater_oven.renderPart("Main"); + ResourceManager.heater_oven.renderPart("Door"); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderAssembler.java b/src/main/java/com/hbm/render/tileentity/RenderAssembler.java index b03698a8b..7f9436fd9 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderAssembler.java +++ b/src/main/java/com/hbm/render/tileentity/RenderAssembler.java @@ -33,16 +33,16 @@ public class RenderAssembler extends TileEntitySpecialRenderer { GL11.glRotatef(180, 0F, 1F, 0F); switch(tileEntity.getBlockMetadata()) { - case 2: + case 14: GL11.glRotatef(180, 0F, 1F, 0F); GL11.glTranslated(0.5D, 0.0D, -0.5D); break; - case 4: + case 13: GL11.glRotatef(270, 0F, 1F, 0F); GL11.glTranslated(0.5D, 0.0D, -0.5D); break; - case 3: + case 15: GL11.glRotatef(0, 0F, 1F, 0F); GL11.glTranslated(0.5D, 0.0D, -0.5D); break; - case 5: + case 12: GL11.glRotatef(90, 0F, 1F, 0F); GL11.glTranslated(0.5D, 0.0D, -0.5D); break; } @@ -99,15 +99,15 @@ public class RenderAssembler extends TileEntitySpecialRenderer { GL11.glRotatef(180, 0F, 1F, 0F); switch(tileEntity.getBlockMetadata()) { - case 2: + case 14: GL11.glTranslated(-1, 0, 0); GL11.glRotatef(180, 0F, 1F, 0F); break; - case 4: + case 13: GL11.glRotatef(270, 0F, 1F, 0F); break; - case 3: + case 15: GL11.glTranslated(0, 0, -1); GL11.glRotatef(0, 0F, 1F, 0F); break; - case 5: + case 12: GL11.glTranslated(-1, 0, -1); GL11.glRotatef(90, 0F, 1F, 0F); break; } @@ -150,15 +150,15 @@ public class RenderAssembler extends TileEntitySpecialRenderer { GL11.glRotatef(180, 0F, 1F, 0F); switch(tileEntity.getBlockMetadata()) { - case 2: + case 14: GL11.glTranslated(-1, 0, 0); GL11.glRotatef(180, 0F, 1F, 0F); break; - case 4: + case 13: GL11.glRotatef(270, 0F, 1F, 0F); break; - case 3: + case 15: GL11.glTranslated(0, 0, -1); GL11.glRotatef(0, 0F, 1F, 0F); break; - case 5: + case 12: GL11.glTranslated(-1, 0, -1); GL11.glRotatef(90, 0F, 1F, 0F); break; } diff --git a/src/main/java/com/hbm/render/tileentity/RenderBobble.java b/src/main/java/com/hbm/render/tileentity/RenderBobble.java index 58f96d995..5d2e0ea14 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderBobble.java +++ b/src/main/java/com/hbm/render/tileentity/RenderBobble.java @@ -45,6 +45,8 @@ public class RenderBobble extends TileEntitySpecialRenderer { public static final ResourceLocation bobble_nos = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/nos.png"); public static final ResourceLocation bobble_drillgon = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/drillgon200.png"); public static final ResourceLocation bobble_cirno = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/cirno.png"); + public static final ResourceLocation bobble_microwave = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/microwave.png"); + public static final ResourceLocation bobble_peep = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/peep.png"); @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float intero) { @@ -94,6 +96,8 @@ public class RenderBobble extends TileEntitySpecialRenderer { case VAER: bindTexture(bobble_vaer); break; case NOS: bindTexture(bobble_nos); break; case DRILLGON: bindTexture(bobble_drillgon); break; + case MICROWAVE: bindTexture(bobble_microwave); break; + case PEEP: bindTexture(bobble_peep); break; default: bindTexture(ResourceManager.universal); } @@ -197,6 +201,9 @@ public class RenderBobble extends TileEntitySpecialRenderer { case VAER: rotLeftArm = new double[]{0, -5, 45}; rotRightArm = new double[]{0, 15, 45}; + case PEEP: + rotLeftArm = new double[]{0, 0, 1}; + rotRightArm = new double[]{0, 0, 1}; break; } } @@ -209,6 +216,8 @@ public class RenderBobble extends TileEntitySpecialRenderer { GL11.glPushMatrix(); GL11.glRotated(rotBody, 0, 1, 0); + if(type == BobbleType.PEEP) bobble.renderPart("PeepTail"); + GL11.glDisable(GL11.GL_CULL_FACE); String suffix = type.skinLayers ? "" : "17"; @@ -278,9 +287,9 @@ public class RenderBobble extends TileEntitySpecialRenderer { GL11.glTranslated(0, -1.75, 0); bobble.renderPart("Head" + suffix); - - if(type == BobbleType.VT) - bobble.renderPart("Horn"); + + if(type == BobbleType.VT) bobble.renderPart("Horn"); + if(type == BobbleType.PEEP) bobble.renderPart("PeepHat"); if(type == BobbleType.VAER) { GL11.glTranslated(0.25, 1.9, 0.075); @@ -311,19 +320,19 @@ public class RenderBobble extends TileEntitySpecialRenderer { public void renderPellet(BobbleType type) { GL11.glEnable(GL11.GL_CULL_FACE); - + GL11.glPushMatrix(); GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); GL11.glDisable(GL11.GL_LIGHTING); bobble.renderPart("Pellet"); - + GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_BLEND); GL11.glAlphaFunc(GL11.GL_GREATER, 0); - + OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GL11.glColor4f(1.0F, 1.0F, 0.0F, 0.1F + (float)Math.sin(System.currentTimeMillis() * 0.001D) * 0.05F); + GL11.glColor4f(1.0F, 1.0F, 0.0F, 0.1F + (float) Math.sin(System.currentTimeMillis() * 0.001D) * 0.05F); bobble.renderPart("PelletShine"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); @@ -395,9 +404,9 @@ public class RenderBobble extends TileEntitySpecialRenderer { renderItem(new ItemStack(ModItems.coin_maskman, 1, 5)); break; case ADAM29: - GL11.glTranslated(0.45, 1.15, 0.4); + GL11.glTranslated(0.4, 1.15, 0.4); GL11.glScaled(0.5, 0.5, 0.5); - renderItem(new ItemStack(ModItems.coffee)); + renderItem(new ItemStack(ModItems.can_redbomb)); break; case PHEO: GL11.glTranslated(0.5, 1.15, 0.45); diff --git a/src/main/java/com/hbm/render/tileentity/RenderChemplant.java b/src/main/java/com/hbm/render/tileentity/RenderChemplant.java index da86e40ec..6a1a936ac 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderChemplant.java +++ b/src/main/java/com/hbm/render/tileentity/RenderChemplant.java @@ -42,7 +42,9 @@ public class RenderChemplant extends TileEntitySpecialRenderer { bindTexture(ResourceManager.chemplant_body_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.chemplant_body.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/render/tileentity/RenderChimneyBrick.java b/src/main/java/com/hbm/render/tileentity/RenderChimneyBrick.java new file mode 100644 index 000000000..bbab3e1ad --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderChimneyBrick.java @@ -0,0 +1,56 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderChimneyBrick extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glRotatef(180, 0F, 1F, 0F); + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.chimney_brick_tex); + ResourceManager.chimney_brick.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.chimney_brick); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(2.25, 2.25, 2.25); + } + public void renderCommon() { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.chimney_brick_tex); + ResourceManager.chimney_brick.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderChimneyIndustrial.java b/src/main/java/com/hbm/render/tileentity/RenderChimneyIndustrial.java new file mode 100644 index 000000000..b29da43dd --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderChimneyIndustrial.java @@ -0,0 +1,56 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderChimneyIndustrial extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glRotatef(180, 0F, 1F, 0F); + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.chimney_industrial_tex); + ResourceManager.chimney_industrial.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.chimney_industrial); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(2.75, 2.75, 2.75); + } + public void renderCommon() { + GL11.glScaled(0.25, 0.25, 0.25); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.chimney_industrial_tex); + ResourceManager.chimney_industrial.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderCompressor.java b/src/main/java/com/hbm/render/tileentity/RenderCompressor.java new file mode 100644 index 000000000..13e9d2c64 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderCompressor.java @@ -0,0 +1,99 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityMachineCompressor; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderCompressor extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + } + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.compressor_tex); + ResourceManager.compressor.renderPart("Compressor"); + + TileEntityMachineCompressor compressor = (TileEntityMachineCompressor) tile; + float lift = compressor.prevPiston + (compressor.piston - compressor.prevPiston) * interp; + float fan = compressor.prevFanSpin + (compressor.fanSpin - compressor.prevFanSpin) * interp; + + GL11.glPushMatrix(); + GL11.glTranslatef(0, lift * 3 - 3, 0); + ResourceManager.compressor.renderPart("Pump"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, 0); + GL11.glRotatef(fan, 1, 0, 0); + GL11.glTranslated(0, -1.5, 0); + ResourceManager.compressor.renderPart("Fan"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_compressor); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(3, 3, 3); + } + public void renderCommon() { + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glScaled(0.5, 0.5, 0.5); + + bindTexture(ResourceManager.compressor_tex); + ResourceManager.compressor.renderPart("Compressor"); + + double lift = (System.currentTimeMillis() * 0.005) % 9; + + if(lift > 3) lift = 3 - (lift - 3) / 2D; + + GL11.glPushMatrix(); + GL11.glTranslated(0, -lift, 0); + ResourceManager.compressor.renderPart("Pump"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, 0); + GL11.glRotated((System.currentTimeMillis() * 0.25) % 360D, 1, 0, 0); + GL11.glTranslated(0, -1.5, 0); + ResourceManager.compressor.renderPart("Fan"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderCondenser.java b/src/main/java/com/hbm/render/tileentity/RenderCondenser.java new file mode 100644 index 000000000..40af1e6dc --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderCondenser.java @@ -0,0 +1,81 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityCondenserPowered; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderCondenser extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + switch(tileEntity.getBlockMetadata() - 10) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + TileEntityCondenserPowered condenser = (TileEntityCondenserPowered) tileEntity; + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.condenser_tex); + ResourceManager.condenser.renderPart("Condenser"); + + float rot = condenser.lastSpin + (condenser.spin - condenser.lastSpin) * f; + + GL11.glPushMatrix(); + GL11.glTranslated(0,1.5, 0); + GL11.glRotatef(rot, 1, 0, 0); + GL11.glTranslated(0, -1.5, 0); + ResourceManager.condenser.renderPart("Fan1"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0,1.5, 0); + GL11.glRotatef(rot, -1, 0, 0); + GL11.glTranslated(0, -1.5, 0); + ResourceManager.condenser.renderPart("Fan2"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_condenser_powered); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(-1, -1, 0); + GL11.glScaled(2.75, 2.75, 2.75); + } + public void renderCommon() { + GL11.glScaled(0.75, 0.75, 0.75); + GL11.glTranslated(0.5, 0, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.condenser_tex); ResourceManager.condenser.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderConveyorPress.java b/src/main/java/com/hbm/render/tileentity/RenderConveyorPress.java new file mode 100644 index 000000000..1bfb50fae --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderConveyorPress.java @@ -0,0 +1,80 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityConveyorPress; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderConveyorPress extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + TileEntityConveyorPress press = (TileEntityConveyorPress) tile; + + bindTexture(ResourceManager.conveyor_press_tex); + ResourceManager.conveyor_press.renderPart("Press"); + + if(press.syncStack != null) { + GL11.glPushMatrix(); + double piston = press.lastPress + (press.renderPress - press.lastPress) * interp; + GL11.glTranslated(0, -piston * 0.75, 0); + ResourceManager.conveyor_press.renderPart("Piston"); + GL11.glPopMatrix(); + } + + bindTexture(ResourceManager.conveyor_press_belt_tex); + + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + int ticks = (int)(tile.getWorldObj().getTotalWorldTime() % 16) - 2; + GL11.glTranslated(0, ticks / 16D, 0); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + ResourceManager.conveyor_press.renderPart("Belt"); + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_conveyor_press); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(4.5, 4.5, 4.5); + } + public void renderCommon() { + bindTexture(ResourceManager.conveyor_press_tex); + ResourceManager.conveyor_press.renderPart("Press"); + ResourceManager.conveyor_press.renderPart("Piston"); + bindTexture(ResourceManager.conveyor_press_belt_tex); + ResourceManager.conveyor_press.renderPart("Belt"); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderCustomMachine.java b/src/main/java/com/hbm/render/tileentity/RenderCustomMachine.java new file mode 100644 index 000000000..1c5d6835a --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderCustomMachine.java @@ -0,0 +1,50 @@ +package com.hbm.render.tileentity; + +import com.hbm.config.CustomMachineConfigJSON; +import com.hbm.render.util.SmallBlockPronter; +import com.hbm.tileentity.machine.TileEntityCustomMachine; + +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import org.lwjgl.opengl.GL11; + +public class RenderCustomMachine extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + + TileEntityCustomMachine custom = (TileEntityCustomMachine) tile; + CustomMachineConfigJSON.MachineConfiguration config = custom.config; + + ForgeDirection dir = ForgeDirection.getOrientation(tile.getBlockMetadata()); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + if(config != null && !custom.structureOK) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + + bindTexture(TextureMap.locationBlocksTexture); + SmallBlockPronter.startDrawing(); + for(CustomMachineConfigJSON.MachineConfiguration.ComponentDefinition comp : config.components) { + int rx = -dir.offsetX * comp.x + rot.offsetX * comp.x; + int ry = +comp.y; + int rz = -dir.offsetZ * comp.z + rot.offsetZ * comp.z; + if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { + rx = +dir.offsetZ * comp.z - rot.offsetZ * comp.z; + rz = +dir.offsetX * comp.x - rot.offsetX * comp.x; + } + + int index = (int) ((System.currentTimeMillis() / 1000) % comp.metas.size()); + SmallBlockPronter.drawSmolBlockAt(comp.block, comp.metas.get(index).getAsInt(), rx, ry, rz); + + } + + SmallBlockPronter.draw(); + + GL11.glPopMatrix(); + } + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderDoorGeneric.java b/src/main/java/com/hbm/render/tileentity/RenderDoorGeneric.java index 1849842df..080be2114 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderDoorGeneric.java +++ b/src/main/java/com/hbm/render/tileentity/RenderDoorGeneric.java @@ -65,7 +65,7 @@ public class RenderDoorGeneric extends TileEntitySpecialRenderer { AnimatedModel animModel = door.getAnimatedModel(); if(animModel != null){ Animation anim = door.getAnim(); - bindTexture(door.getTextureForPart("")); + bindTexture(door.getTextureForPart(te.getSkinIndex(), "")); long time = System.currentTimeMillis(); long startTime = te.state > 1 ? te.animStartTime : time; boolean reverse = te.state == 1 || te.state == 2; @@ -83,14 +83,14 @@ public class RenderDoorGeneric extends TileEntitySpecialRenderer { if(!door.doesRender(p.getLeft(), false)) continue; GL11.glPushMatrix(); - bindTexture(door.getTextureForPart(p.getLeft())); + bindTexture(door.getTextureForPart(te.getSkinIndex(), p.getLeft())); doPartTransform(door, p.getLeft(), openTicks, false); GL11.glCallList(p.getRight()); for(String name : door.getChildren(p.getLeft())){ if(!door.doesRender(name, true)) continue; GL11.glPushMatrix(); - bindTexture(door.getTextureForPart(name)); + bindTexture(door.getTextureForPart(te.getSkinIndex(), name)); doPartTransform(door, name, openTicks, true); model.renderPart(name); GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/render/tileentity/RenderElectrolyser.java b/src/main/java/com/hbm/render/tileentity/RenderElectrolyser.java index 9784333e1..f8054adc4 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderElectrolyser.java +++ b/src/main/java/com/hbm/render/tileentity/RenderElectrolyser.java @@ -3,19 +3,20 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; -import com.hbm.tileentity.machine.TileEntityElectrolyser; +import com.hbm.render.item.ItemRenderBase; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; -public class RenderElectrolyser extends TileEntitySpecialRenderer { +public class RenderElectrolyser extends TileEntitySpecialRenderer implements IItemRendererProvider { @Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { - TileEntityElectrolyser electrolyser = (TileEntityElectrolyser) te; - GL11.glPushMatrix(); GL11.glTranslated(x + 0.5D, y, z + 0.5D); @@ -40,4 +41,25 @@ public class RenderElectrolyser extends TileEntitySpecialRenderer { } + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_electrolyser); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(-1, -1, 0); + GL11.glScaled(2.5, 2.5, 2.5); + } + public void renderCommon() { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.electrolyser_tex); ResourceManager.electrolyser.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }; + } + } diff --git a/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java b/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java new file mode 100644 index 000000000..acfb9bbf9 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java @@ -0,0 +1,137 @@ +package com.hbm.render.tileentity; + +import java.util.Random; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.render.util.BeamPronter; +import com.hbm.render.util.BeamPronter.EnumBeamType; +import com.hbm.render.util.BeamPronter.EnumWaveType; +import com.hbm.tileentity.machine.TileEntityMachineExposureChamber; + +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; +import net.minecraftforge.client.IItemRenderer; + +public class RenderExposureChamber extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + switch(tileEntity.getBlockMetadata() - BlockDummyable.offset) { + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + TileEntityMachineExposureChamber chamber = (TileEntityMachineExposureChamber) tileEntity; + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.exposure_chamber_tex); + ResourceManager.exposure_chamber.renderPart("Chamber"); + + double rotation = chamber.prevRotation + (chamber.rotation - chamber.prevRotation) * interp; + + GL11.glPushMatrix(); + GL11.glRotated(rotation, 0, 1, 0); + ResourceManager.exposure_chamber.renderPart("Magnets"); + GL11.glPopMatrix(); + + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + + if(chamber.isOn) { + GL11.glPushMatrix(); + GL11.glRotated(rotation / 2D, 0, 1, 0); + GL11.glTranslated(0, Math.sin((tileEntity.getWorldObj().getTotalWorldTime() % (Math.PI * 16D) + interp) * 0.125) * 0.0625, 0); + ResourceManager.exposure_chamber.renderPart("Core"); + GL11.glPopMatrix(); + } + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + if(chamber.isOn) { + + int duration = 8; + Random rand = new Random(chamber.getWorldObj().getTotalWorldTime() / duration); + int chance = 2; + int color = chamber.getWorldObj().getTotalWorldTime() % duration >= duration / 2 ? 0x80d0ff : 0xffffff; + rand.nextInt(chance); //RNG behaves weirldy in the first iteration + if(rand.nextInt(chance) == 0) { + GL11.glPushMatrix(); + GL11.glTranslated(0, 3.675, -7.5); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, 5), EnumWaveType.RANDOM, EnumBeamType.LINE, color, 0xffffff, (int)(System.currentTimeMillis() % 1000) / 50, 15, 0.125F, 1, 0); + GL11.glPopMatrix(); + } + if(rand.nextInt(chance) == 0) { + GL11.glPushMatrix(); + GL11.glTranslated(1.1875, 2.5, -7.5); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, 5), EnumWaveType.RANDOM, EnumBeamType.LINE, color, 0xffffff, (int)(System.currentTimeMillis() % 1000) / 50, 15, 0.125F, 1, 0); + GL11.glPopMatrix(); + } + if(rand.nextInt(chance) == 0) { + GL11.glPushMatrix(); + GL11.glTranslated(-1.1875, 2.5, -7.5); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, 5), EnumWaveType.RANDOM, EnumBeamType.LINE, color, 0xffffff, (int)(System.currentTimeMillis() % 1000) / 50, 15, 0.125F, 1, 0); + GL11.glPopMatrix(); + } + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.75, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 1.5, 0), EnumWaveType.RANDOM, EnumBeamType.LINE, 0x80d0ff, 0xffffff, (int)(System.currentTimeMillis() % 1000) / 50, 10, 0.125F, 1, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 1.5, 0), EnumWaveType.RANDOM, EnumBeamType.LINE, 0x8080ff, 0xffffff, (int)(System.currentTimeMillis() + 5 % 1000) / 50, 10, 0.125F, 1, 0); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 2.5, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, -1), EnumWaveType.SPIRAL, EnumBeamType.LINE, 0xffff80, 0xffffff, (int)(System.currentTimeMillis() % 360), 15, 0.125F, 1, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, -1), EnumWaveType.SPIRAL, EnumBeamType.LINE, 0xff8080, 0xffffff, (int)(System.currentTimeMillis() % 360) + 180, 15, 0.125F, 1, 0); + GL11.glPopMatrix(); + } + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_exposure_chamber); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -1.5, 0); + GL11.glScaled(3, 3, 3); + } + public void renderCommon() { + GL11.glTranslated(1.5, 0, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.exposure_chamber_tex); + ResourceManager.exposure_chamber.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java b/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java index 6a6f12176..47b0e405a 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java +++ b/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java @@ -56,6 +56,7 @@ public class RenderFluidTank extends TileEntitySpecialRenderer implements IItemR ResourceManager.fluidtank_exploded.renderPart("Tank"); } + GL11.glColor3d(1D, 1D, 1D); GL11.glShadeModel(GL11.GL_FLAT); if(type != null && type != Fluids.NONE) { @@ -80,6 +81,16 @@ public class RenderFluidTank extends TileEntitySpecialRenderer implements IItemR } public String getTextureFromType(FluidType type) { + + if(type.customFluid) { + int color = type.getTint(); + double r = ((color & 0xff0000) >> 16) / 255D; + double g = ((color & 0x00ff00) >> 8) / 255D; + double b = ((color & 0x0000ff) >> 0) / 255D; + GL11.glColor3d(r, g, b); + return "textures/models/tank/tank_NONE.png"; + } + String s = type.getName(); if(type.isAntimatter() || (type.hasTrait(FT_Corrosive.class) && type.getTrait(FT_Corrosive.class).isHighlyCorrosive())) diff --git a/src/main/java/com/hbm/render/tileentity/RenderGasDuct.java b/src/main/java/com/hbm/render/tileentity/RenderGasDuct.java deleted file mode 100644 index 460d20b52..000000000 --- a/src/main/java/com/hbm/render/tileentity/RenderGasDuct.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.hbm.render.tileentity; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.conductor.TileEntityGasDuct; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.util.ForgeDirection; - -public class RenderGasDuct extends TileEntitySpecialRenderer { - - public ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/blocks/gas_duct.png"); - float pixel = 1F/16F; - float textureP = 1F / 32F; - - @Override - public void renderTileEntityAt(TileEntity tileentity, double offsetX, double offsetY, double offsetZ, float f) { - GL11.glTranslated(offsetX, offsetY, offsetZ); - GL11.glDisable(GL11.GL_LIGHTING); - this.bindTexture(texture); - drawCore(tileentity); - TileEntityGasDuct cable = (TileEntityGasDuct) tileentity; - for(int i = 0; i < cable.connections.length; i++) - { - if(cable.connections[i] != null) - { - drawConnection(cable.connections[i]); - } - } - GL11.glTranslated(-offsetX, -offsetY, -offsetZ); - GL11.glEnable(GL11.GL_LIGHTING); - - } - - public void drawCore(TileEntity tileentity) { - Tessellator tesseract = Tessellator.instance; - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - tesseract.draw(); - } - - public void drawConnection(ForgeDirection direction) - { - Tessellator tesseract = Tessellator.instance; - tesseract.startDrawingQuads(); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - if(direction.equals(ForgeDirection.UP)) - { - - } - if(direction.equals(ForgeDirection.DOWN)) - { - GL11.glRotatef(180, 1, 0, 0); - } - if(direction.equals(ForgeDirection.NORTH)) - { - GL11.glRotatef(270, 1, 0, 0); - } - if(direction.equals(ForgeDirection.SOUTH)) - { - GL11.glRotatef(90, 1, 0, 0); - } - if(direction.equals(ForgeDirection.EAST)) - { - GL11.glRotatef(270, 0, 0, 1); - } - if(direction.equals(ForgeDirection.WEST)) - { - GL11.glRotatef(90, 0, 0, 1); - } - GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.draw(); - - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - if(direction.equals(ForgeDirection.UP)) - { - - } - if(direction.equals(ForgeDirection.DOWN)) - { - GL11.glRotatef(-180, 1, 0, 0); - } - if(direction.equals(ForgeDirection.NORTH)) - { - GL11.glRotatef(-270, 1, 0, 0); - } - if(direction.equals(ForgeDirection.SOUTH)) - { - GL11.glRotatef(-90, 1, 0, 0); - } - if(direction.equals(ForgeDirection.EAST)) - { - GL11.glRotatef(-270, 0, 0, 1); - } - if(direction.equals(ForgeDirection.WEST)) - { - GL11.glRotatef(-90, 0, 0, 1); - } - GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - } -} diff --git a/src/main/java/com/hbm/render/tileentity/RenderITERMultiblock.java b/src/main/java/com/hbm/render/tileentity/RenderITERMultiblock.java index 225cddd2c..c4cad00da 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderITERMultiblock.java +++ b/src/main/java/com/hbm/render/tileentity/RenderITERMultiblock.java @@ -3,14 +3,12 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.blocks.ModBlocks; -import com.hbm.render.util.IconUtil; import com.hbm.render.util.SmallBlockPronter; import com.hbm.tileentity.machine.TileEntityITERStruct; -import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; public class RenderITERMultiblock extends TileEntitySpecialRenderer { @@ -19,50 +17,35 @@ public class RenderITERMultiblock extends TileEntitySpecialRenderer { GL11.glPushMatrix(); - GL11.glTranslatef((float)x, (float)y, (float)z); + GL11.glTranslated(x, y, z); + + bindTexture(TextureMap.locationBlocksTexture); + SmallBlockPronter.startDrawing(); + + int[][][] layout = TileEntityITERStruct.layout; + + for(int iy = -2; iy <= 2; iy++) { + int iny = 2 - Math.abs(iy); + + for(int ix = 0; ix < layout[0].length; ix++) { + for(int iz = 0; iz < layout[0][0].length; iz++) { + + int block = layout[iny][ix][iz]; + + switch(block) { + case 0: + continue; + case 1: SmallBlockPronter.drawSmolBlockAt(ModBlocks.fusion_conductor, 1, ix - 7F, iy + 2, iz - 7F); break; + case 2: SmallBlockPronter.drawSmolBlockAt(ModBlocks.fusion_center, 0, ix - 7F, iy + 2, iz - 7F); break; + case 3: SmallBlockPronter.drawSmolBlockAt(ModBlocks.fusion_motor, 0, ix - 7F, iy + 2, iz - 7F); break; + case 4: SmallBlockPronter.drawSmolBlockAt(ModBlocks.reinforced_glass, 0, ix - 7F, iy + 2, iz - 7F); break; + } + } + } + } + + SmallBlockPronter.draw(); - GL11.glEnable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_CULL_FACE); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.75F); - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glDepthMask(false); - - ResourceLocation magnet = IconUtil.getTextureFromBlockAndSide(ModBlocks.fusion_conductor, 2); - ResourceLocation solenoid = IconUtil.getTextureFromBlockAndSide(ModBlocks.fusion_center, 2); - ResourceLocation motor = IconUtil.getTextureFromBlock(ModBlocks.fusion_motor); - ResourceLocation glass = IconUtil.getTextureFromBlock(ModBlocks.reinforced_glass); - - int[][][] layout = TileEntityITERStruct.layout; - - for(int iy = -2; iy <= 2; iy ++) { - - int iny = 2 - Math.abs(iy); - - for(int ix = 0; ix < layout[0].length; ix++) { - - for(int iz = 0; iz < layout[0][0].length; iz++) { - - int block = layout[iny][ix][iz]; - - switch(block) { - case 0: continue; - case 1: bindTexture(magnet); break; - case 2: bindTexture(solenoid); break; - case 3: bindTexture(motor); break; - case 4: bindTexture(glass); break; - } - - SmallBlockPronter.renderSmolBlockAt(ix - 6F, iy + 3, iz - 7F); - } - } - } - - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glDepthMask(true); - - GL11.glEnable(GL11.GL_LIGHTING); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderIndustrialBoiler.java b/src/main/java/com/hbm/render/tileentity/RenderIndustrialBoiler.java new file mode 100644 index 000000000..f2d0da729 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderIndustrialBoiler.java @@ -0,0 +1,51 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderIndustrialBoiler extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.boiler_industrial_tex); + ResourceManager.boiler_industrial.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_industrial_boiler); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(2.5, 2.5, 2.5); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glRotatef(90, 0F, 1F, 0F); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.boiler_industrial_tex); + ResourceManager.boiler_industrial.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLantern.java b/src/main/java/com/hbm/render/tileentity/RenderLantern.java new file mode 100644 index 000000000..d61594f60 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderLantern.java @@ -0,0 +1,69 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderLantern extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + bindTexture(ResourceManager.lantern_tex); + ResourceManager.lantern.renderPart("Lantern"); + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + float mult = (float) (Math.sin(System.currentTimeMillis() / 200D) / 2 + 0.5) * 0.1F + 0.9F; + GL11.glColor3f(1F * mult, 1F * mult, 0.7F * mult); + ResourceManager.lantern.renderPart("Light"); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.lantern); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + double scale = 2.75; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + bindTexture(ResourceManager.lantern_tex); + ResourceManager.lantern.renderPart("Lantern"); + GL11.glDisable(GL11.GL_TEXTURE_2D); + float mult = (float) (Math.sin(System.currentTimeMillis() / 200D) / 2 + 0.5) * 0.1F + 0.9F; + GL11.glColor3f(1F * mult, 1F * mult, 0.7F * mult); + ResourceManager.lantern.renderPart("Light"); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLanternBehemoth.java b/src/main/java/com/hbm/render/tileentity/RenderLanternBehemoth.java new file mode 100644 index 000000000..b7d18c4f5 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderLanternBehemoth.java @@ -0,0 +1,53 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.tileentity.deco.TileEntityLanternBehemoth; + +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +public class RenderLanternBehemoth extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + TileEntityLanternBehemoth lantern = (TileEntityLanternBehemoth) tile; + if(lantern.isBroken) { + GL11.glRotated(5, 1, 0, 0); + GL11.glRotated(10, 0, 0, 1); + } + + bindTexture(ResourceManager.lantern_rusty_tex); + ResourceManager.lantern.renderPart("Lantern"); + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + + if(lantern.isBroken) { + float mult = (float) (Math.sin(System.currentTimeMillis() / 200D) / 2 + 0.5); + GL11.glColor3f(1F * mult, 0, 0); + } else { + float mult = (float) (Math.sin(System.currentTimeMillis() / 200D) / 2 + 0.5) * 0.5F + 0.5F; + GL11.glColor3f(0, 1F * mult, 0); + } + ResourceManager.lantern.renderPart("Light"); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java index 047155832..8b6e245aa 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java @@ -2,211 +2,219 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; +import com.hbm.items.ModItems; import com.hbm.main.ResourceManager; import com.hbm.tileentity.bomb.TileEntityLaunchPad; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - - bindTexture(ResourceManager.missile_pad_tex); - ResourceManager.missile_pad.renderAll(); + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_CULL_FACE); - int state = 0; - - if(tileEntity instanceof TileEntityLaunchPad) - state = ((TileEntityLaunchPad)tileEntity).state; - - GL11.glTranslated(0, 1, 0); - - if(state == 1) - { - GL11.glScalef(1.0F, 1.0F, 1.0F); - bindTexture(ResourceManager.missileV2_HE_tex); - ResourceManager.missileV2.renderAll(); - } - if(state == 2) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileStrong_HE_tex); - ResourceManager.missileStrong.renderAll(); - } - if(state == 3) - { - GL11.glScalef(1.0F, 1.0F, 1.0F); - bindTexture(ResourceManager.missileV2_CL_tex); - ResourceManager.missileV2.renderAll(); - } - if(state == 4) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileNuclear_tex); - ResourceManager.missileNuclear.renderAll(); - } - if(state == 5) - { - GL11.glScalef(1.0F, 1.0F, 1.0F); - bindTexture(ResourceManager.missileV2_IN_tex); - ResourceManager.missileV2.renderAll(); - } - if(state == 6) - { - GL11.glScalef(1.0F, 1.0F, 1.0F); - bindTexture(ResourceManager.missileV2_BU_tex); - ResourceManager.missileV2.renderAll(); - } - if(state == 7) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileStrong_IN_tex); - ResourceManager.missileStrong.renderAll(); - } - if(state == 8) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileStrong_CL_tex); - ResourceManager.missileStrong.renderAll(); - } - if(state == 9) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileStrong_BU_tex); - ResourceManager.missileStrong.renderAll(); - } - if(state == 10) - { - GL11.glScalef(2.0F, 2.0F, 2.0F); - bindTexture(ResourceManager.missileHuge_HE_tex); - ResourceManager.missileHuge.renderAll(); - } - if(state == 11) - { - GL11.glScalef(2.0F, 2.0F, 2.0F); - bindTexture(ResourceManager.missileHuge_IN_tex); - ResourceManager.missileHuge.renderAll(); - } - if(state == 12) - { - GL11.glScalef(2.0F, 2.0F, 2.0F); - bindTexture(ResourceManager.missileHuge_CL_tex); - ResourceManager.missileHuge.renderAll(); - } - if(state == 13) - { - GL11.glScalef(2.0F, 2.0F, 2.0F); - bindTexture(ResourceManager.missileHuge_BU_tex); - ResourceManager.missileHuge.renderAll(); - } - if(state == 14) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileEndo_tex); - ResourceManager.missileThermo.renderAll(); - } - if(state == 15) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileExo_tex); - ResourceManager.missileThermo.renderAll(); - } - if(state == 16) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileMIRV_tex); - ResourceManager.missileNuclear.renderAll(); - } - if(state == 17) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileDoomsday_tex); - ResourceManager.missileDoomsday.renderAll(); - } - if(state == 18) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileTaint_tex); - ResourceManager.missileTaint.renderAll(); - } - if(state == 19) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileMicro_tex); - ResourceManager.missileTaint.renderAll(); - } - if(state == 20) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileCarrier_tex); - ResourceManager.missileCarrier.renderAll(); - GL11.glTranslated(0.0D, 0.5D, 0.0D); - GL11.glTranslated(1.25D, 0.0D, 0.0D); - bindTexture(ResourceManager.missileBooster_tex); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(-2.5D, 0.0D, 0.0D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(1.25D, 0.0D, 0.0D); - GL11.glTranslated(0.0D, 0.0D, 1.25D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(0.0D, 0.0D, -2.5D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(0.0D, 0.0D, 1.25D); - } - if(state == 21) - { - GL11.glScalef(1.0F, 1.0F, 1.0F); - bindTexture(ResourceManager.missileAA_tex); - ResourceManager.missileV2.renderAll(); - } - if(state == 22) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileMicroBHole_tex); - ResourceManager.missileTaint.renderAll(); - } - if(state == 23) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileMicroSchrab_tex); - ResourceManager.missileTaint.renderAll(); - } - if(state == 24) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileMicroEMP_tex); - ResourceManager.missileTaint.renderAll(); - } - if(state == 25) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileStrong_EMP_tex); - ResourceManager.missileStrong.renderAll(); - } - if(state == 26) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileVolcano_tex); - ResourceManager.missileNuclear.renderAll(); - } - if(state == 27) - { - GL11.glScalef(1.0F, 1.0F, 1.0F); - bindTexture(ResourceManager.missileShuttle_tex); - ResourceManager.missileShuttle.renderAll(); - } + bindTexture(ResourceManager.missile_pad_tex); + ResourceManager.missile_pad.renderAll(); + + GL11.glDisable(GL11.GL_CULL_FACE); + + if(tileEntity instanceof TileEntityLaunchPad) { + ItemStack toRender = ((TileEntityLaunchPad) tileEntity).toRender; - GL11.glEnable(GL11.GL_CULL_FACE); + if(toRender != null) { + GL11.glTranslated(0, 1, 0); + + //TODO: add a registry for missile rendering to be reused here and for the entity renderer + if(toRender.getItem() == ModItems.missile_generic) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileV2_HE_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_decoy) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileV2_decoy_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_strong) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileStrong_HE_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileStrong.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_cluster) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileV2_CL_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_nuclear) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileNuclear_tex); + ResourceManager.missileNuclear.renderAll(); + } + if(toRender.getItem() == ModItems.missile_incendiary) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileV2_IN_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_buster) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileV2_BU_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_incendiary_strong) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileStrong_IN_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileStrong.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_cluster_strong) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileStrong_CL_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileStrong.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_buster_strong) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileStrong_BU_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileStrong.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_burst) { + bindTexture(ResourceManager.missileHuge_HE_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileHuge.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_inferno) { + bindTexture(ResourceManager.missileHuge_IN_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileHuge.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_rain) { + bindTexture(ResourceManager.missileHuge_CL_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileHuge.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_drill) { + bindTexture(ResourceManager.missileHuge_BU_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileHuge.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_endo) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileEndo_tex); + ResourceManager.missileThermo.renderAll(); + } + if(toRender.getItem() == ModItems.missile_exo) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileExo_tex); + ResourceManager.missileThermo.renderAll(); + } + if(toRender.getItem() == ModItems.missile_nuclear_cluster) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileMIRV_tex); + ResourceManager.missileNuclear.renderAll(); + } + if(toRender.getItem() == ModItems.missile_doomsday) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileDoomsday_tex); + ResourceManager.missileDoomsday.renderAll(); + } + if(toRender.getItem() == ModItems.missile_taint) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileTaint_tex); + ResourceManager.missileTaint.renderAll(); + } + if(toRender.getItem() == ModItems.missile_micro) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileMicro_tex); + ResourceManager.missileTaint.renderAll(); + } + if(toRender.getItem() == ModItems.missile_carrier) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileCarrier_tex); + ResourceManager.missileCarrier.renderAll(); + GL11.glTranslated(0.0D, 0.5D, 0.0D); + GL11.glTranslated(1.25D, 0.0D, 0.0D); + bindTexture(ResourceManager.missileBooster_tex); + ResourceManager.missileBooster.renderAll(); + GL11.glTranslated(-2.5D, 0.0D, 0.0D); + ResourceManager.missileBooster.renderAll(); + GL11.glTranslated(1.25D, 0.0D, 0.0D); + GL11.glTranslated(0.0D, 0.0D, 1.25D); + ResourceManager.missileBooster.renderAll(); + GL11.glTranslated(0.0D, 0.0D, -2.5D); + ResourceManager.missileBooster.renderAll(); + GL11.glTranslated(0.0D, 0.0D, 1.25D); + } + if(toRender.getItem() == ModItems.missile_anti_ballistic) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileAA_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileABM.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_bhole) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileMicroBHole_tex); + ResourceManager.missileTaint.renderAll(); + } + if(toRender.getItem() == ModItems.missile_schrabidium) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileMicroSchrab_tex); + ResourceManager.missileTaint.renderAll(); + } + if(toRender.getItem() == ModItems.missile_emp) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileMicroEMP_tex); + ResourceManager.missileTaint.renderAll(); + } + if(toRender.getItem() == ModItems.missile_emp_strong) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileStrong_EMP_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileStrong.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_volcano) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileVolcano_tex); + ResourceManager.missileNuclear.renderAll(); + } + if(toRender.getItem() == ModItems.missile_shuttle) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileShuttle_tex); + ResourceManager.missileShuttle.renderAll(); + } + } + } - GL11.glPopMatrix(); - } + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderLoot.java b/src/main/java/com/hbm/render/tileentity/RenderLoot.java index d25492de0..1813bb7d7 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLoot.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLoot.java @@ -100,11 +100,22 @@ public class RenderLoot extends TileEntitySpecialRenderer { GL11.glRotated(90, 1, 0, 0); bindTexture(TextureMap.locationItemsTexture); - IIcon icon = stack.getIconIndex(); - float f14 = icon.getMinU(); - float f15 = icon.getMaxU(); - float f4 = icon.getMinV(); - float f5 = icon.getMaxV(); - ItemRenderer.renderItemIn2D(Tessellator.instance, f15, f4, f14, f5, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); + + for(int i = 0; i < stack.getItem().getRenderPasses(stack.getItemDamage()); i++) { + + IIcon icon = stack.getItem().getIcon(stack, i); + float f14 = icon.getMinU(); + float f15 = icon.getMaxU(); + float f4 = icon.getMinV(); + float f5 = icon.getMaxV(); + + int k1 = stack.getItem().getColorFromItemStack(stack, i); + float f10 = (float) (k1 >> 16 & 255) / 255.0F; + float f11 = (float) (k1 >> 8 & 255) / 255.0F; + float f12 = (float) (k1 & 255) / 255.0F; + GL11.glColor4f(1.0F * f10, 1.0F * f11, 1.0F * f12, 1.0F); + + ItemRenderer.renderItemIn2D(Tessellator.instance, f15, f4, f14, f5, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); + } } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderMicrowave.java b/src/main/java/com/hbm/render/tileentity/RenderMicrowave.java index cfdc25b26..fbe36e6e2 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderMicrowave.java +++ b/src/main/java/com/hbm/render/tileentity/RenderMicrowave.java @@ -10,36 +10,35 @@ import net.minecraft.tileentity.TileEntity; public class RenderMicrowave extends TileEntitySpecialRenderer { - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y - 0.75, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y - 0.785, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + switch(tileEntity.getBlockMetadata()) { case 2: GL11.glRotatef(0, 0F, 1F, 0F); break; case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; case 3: GL11.glRotatef(180, 0F, 1F, 0F); break; case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; } - GL11.glTranslated(-0.5D, 0.0D, 0.5D); - - TileEntityMicrowave mic = (TileEntityMicrowave)tileEntity; + GL11.glTranslated(-0.5D, 0.0D, 0.65D); + + TileEntityMicrowave mic = (TileEntityMicrowave) tileEntity; bindTexture(ResourceManager.microwave_tex); - ResourceManager.microwave.renderPart("mainbody_Cube.001"); - ResourceManager.microwave.renderPart("window_Cube.002"); + ResourceManager.microwave.renderPart("mainbody_Cube.001"); + ResourceManager.microwave.renderPart("window_Cube.002"); - double rot = (System.currentTimeMillis() * mic.speed / 10D) % 360; - - if(mic.time > 0) { - GL11.glTranslated(0.575D, 0.0D, -0.45D); + double rot = (System.currentTimeMillis() * mic.speed / 10D) % 360; + + if(mic.time > 0) { + GL11.glTranslated(0.575D, 0.0D, -0.45D); GL11.glRotated(rot, 0F, 1F, 0F); - GL11.glTranslated(-0.575D, 0.0D, 0.45D); - } - ResourceManager.microwave.renderPart("plate_Cylinder"); + GL11.glTranslated(-0.575D, 0.0D, 0.45D); + } + ResourceManager.microwave.renderPart("plate_Cylinder"); - GL11.glPopMatrix(); - } + GL11.glPopMatrix(); + } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderNukeTsar.java b/src/main/java/com/hbm/render/tileentity/RenderNukeTsar.java index 64f452ea5..c1a5032c3 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderNukeTsar.java +++ b/src/main/java/com/hbm/render/tileentity/RenderNukeTsar.java @@ -2,38 +2,58 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; +import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; -public class RenderNukeTsar extends TileEntitySpecialRenderer { +public class RenderNukeTsar extends TileEntitySpecialRenderer implements IItemRendererProvider { - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - switch(tileEntity.getBlockMetadata()) - { - case 2: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 4: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(0, 0F, 1F, 0F); break; + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + switch(tileEntity.getBlockMetadata()) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; } - bindTexture(ResourceManager.bomb_tsar_tex); - ResourceManager.bomb_tsar.renderAll(); - - GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.bomb_tsar_tex); + ResourceManager.bomb_tsar.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } + GL11.glPopMatrix(); + } + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.nuke_tsar); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glScaled(2.25, 2.25, 2.25); + } + public void renderCommon() { + GL11.glTranslated(1.5, 0, 0); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.bomb_tsar_tex); ResourceManager.bomb_tsar.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderOilDuct.java b/src/main/java/com/hbm/render/tileentity/RenderOilDuct.java deleted file mode 100644 index ec867972c..000000000 --- a/src/main/java/com/hbm/render/tileentity/RenderOilDuct.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.hbm.render.tileentity; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.conductor.TileEntityOilDuct; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.util.ForgeDirection; - -public class RenderOilDuct extends TileEntitySpecialRenderer { - - public ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/blocks/oil_duct_alt.png"); - float pixel = 1F/16F; - float textureP = 1F / 32F; - - @Override - public void renderTileEntityAt(TileEntity tileentity, double offsetX, double offsetY, double offsetZ, float f) { - GL11.glTranslated(offsetX, offsetY, offsetZ); - GL11.glDisable(GL11.GL_LIGHTING); - this.bindTexture(texture); - drawCore(tileentity); - TileEntityOilDuct cable = (TileEntityOilDuct) tileentity; - for(int i = 0; i < cable.connections.length; i++) - { - if(cable.connections[i] != null) - { - drawConnection(cable.connections[i]); - } - } - GL11.glTranslated(-offsetX, -offsetY, -offsetZ); - GL11.glEnable(GL11.GL_LIGHTING); - - } - - public void drawCore(TileEntity tileentity) { - Tessellator tesseract = Tessellator.instance; - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - tesseract.draw(); - } - - public void drawConnection(ForgeDirection direction) - { - Tessellator tesseract = Tessellator.instance; - tesseract.startDrawingQuads(); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - if(direction.equals(ForgeDirection.UP)) - { - - } - if(direction.equals(ForgeDirection.DOWN)) - { - GL11.glRotatef(180, 1, 0, 0); - } - if(direction.equals(ForgeDirection.NORTH)) - { - GL11.glRotatef(270, 1, 0, 0); - } - if(direction.equals(ForgeDirection.SOUTH)) - { - GL11.glRotatef(90, 1, 0, 0); - } - if(direction.equals(ForgeDirection.EAST)) - { - GL11.glRotatef(270, 0, 0, 1); - } - if(direction.equals(ForgeDirection.WEST)) - { - GL11.glRotatef(90, 0, 0, 1); - } - GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.draw(); - - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - if(direction.equals(ForgeDirection.UP)) - { - - } - if(direction.equals(ForgeDirection.DOWN)) - { - GL11.glRotatef(-180, 1, 0, 0); - } - if(direction.equals(ForgeDirection.NORTH)) - { - GL11.glRotatef(-270, 1, 0, 0); - } - if(direction.equals(ForgeDirection.SOUTH)) - { - GL11.glRotatef(-90, 1, 0, 0); - } - if(direction.equals(ForgeDirection.EAST)) - { - GL11.glRotatef(-270, 0, 0, 1); - } - if(direction.equals(ForgeDirection.WEST)) - { - GL11.glRotatef(-90, 0, 0, 1); - } - GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - } -} diff --git a/src/main/java/com/hbm/render/tileentity/RenderPistonInserter.java b/src/main/java/com/hbm/render/tileentity/RenderPistonInserter.java new file mode 100644 index 000000000..e09129898 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPistonInserter.java @@ -0,0 +1,100 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.render.util.RenderDecoItem; + +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderPistonInserter extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata()) { + case 0: GL11.glRotatef(180, 1F, 0F, 0F); break; + case 1: break; + case 2: GL11.glRotatef(-90, 1F, 0F, 0F); + GL11.glRotatef(180, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(90, 0F, 0F, 1F); + GL11.glRotatef(-90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(90, 1F, 0F, 0F); break; + case 5: GL11.glRotatef(-90, 0F, 0F, 1F); + GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + GL11.glTranslated(0D, -0.5, 0D); + + bindTexture(ResourceManager.piston_inserter_tex); + ResourceManager.piston_inserter.renderPart("Frame"); + + TileEntityPistonInserter piston = (TileEntityPistonInserter)tile; + double e = (piston.lastExtend + (piston.renderExtend - piston.lastExtend) * interp) / (double) piston.maxExtend; + GL11.glTranslated(0, e * 0.9375D, 0); + ResourceManager.piston_inserter.renderPart("Piston"); + + RenderItem itemRenderer = new RenderDecoItem(this); + itemRenderer.setRenderManager(RenderManager.instance); + + if(piston.slot != null) { + ItemStack stack = piston.slot.copy(); + + EntityItem item = new EntityItem(null, 0.0D, 0.0D, 0.0D, stack); + item.getEntityItem().stackSize = 1; + item.hoverStart = 0.0F; + + if(stack.getItem() instanceof ItemBlock) { + GL11.glTranslated(0.0D, 1.125D, 0.0D); + } else { + GL11.glTranslated(0.0D, 1.0625D, 0.1D); + if(!RenderManager.instance.options.fancyGraphics) + GL11.glTranslated(0.0D, 0.01D, 0.0D); + + GL11.glRotated(90, -1, 0, 0); + } + + RenderItem.renderInFrame = true; + itemRenderer.doRender(item, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); + RenderItem.renderInFrame = false; + } + + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.piston_inserter); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -2.5, 0); + double scale = 5; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + GL11.glScaled(2, 2, 2); + bindTexture(ResourceManager.piston_inserter_tex); + ResourceManager.piston_inserter.renderAll(); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderPump.java b/src/main/java/com/hbm/render/tileentity/RenderPump.java new file mode 100644 index 000000000..8b9dc8756 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPump.java @@ -0,0 +1,102 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityMachinePumpBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderPump extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 3: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + TileEntityMachinePumpBase engine = (TileEntityMachinePumpBase) tile; + float angle = engine.lastRotor + (engine.rotor - engine.lastRotor) * interp; + renderCommon(angle, engine.getBlockType() == ModBlocks.pump_steam ? 0 : 1); + //renderCommon(0, engine.getBlockType() == ModBlocks.pump_steam ? 0 : 1); + + GL11.glPopMatrix(); + } + + private void renderCommon(double rot, int type) { + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + if(type == 0) bindTexture(ResourceManager.pump_steam_tex); + else bindTexture(ResourceManager.pump_electric_tex); + ResourceManager.pump.renderPart("Base"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 2.25, 0); + GL11.glRotated(rot - 90, 0, 0, 1); + GL11.glTranslated(0, -2.25, 0); + ResourceManager.pump.renderPart("Rotor"); + GL11.glPopMatrix(); + + double sin = Math.sin(rot * Math.PI / 180D) * 0.5D - 0.5D; + double cos = Math.cos(rot * Math.PI / 180D) * 0.5D; + double ang = Math.acos(cos / 2D); + double cath = Math.sqrt(1 + (cos * cos) / 2); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1 - cath + sin, 0); + GL11.glTranslated(0, 4.75, 0); + GL11.glRotated(ang * 180D / Math.PI - 90D, 0, 0, -1); + GL11.glTranslated(0, -4.75, 0); + ResourceManager.pump.renderPart("Arms"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1 - cath + sin, 0); + ResourceManager.pump.renderPart("Piston"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.pump_steam); + } + + @Override + public Item[] getItemsForRenderer() { + return new Item[] { + Item.getItemFromBlock(ModBlocks.pump_steam), + Item.getItemFromBlock(ModBlocks.pump_electric) + }; + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(2.5, 2.5, 2.5); + } + public void renderCommonWithStack(ItemStack item) { + RenderPump.this.renderCommon(System.currentTimeMillis() % 3600 * 0.1F, item.getItem() == Item.getItemFromBlock(ModBlocks.pump_steam) ? 0 : 1); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderRadar.java b/src/main/java/com/hbm/render/tileentity/RenderRadar.java index 45cc19fd0..6910c9b6e 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRadar.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRadar.java @@ -3,7 +3,7 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.main.ResourceManager; -import com.hbm.tileentity.machine.TileEntityMachineRadar; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; @@ -21,8 +21,8 @@ public class RenderRadar extends TileEntitySpecialRenderer { bindTexture(ResourceManager.radar_base_tex); ResourceManager.radar.renderPart("Base"); - TileEntityMachineRadar radar = (TileEntityMachineRadar) tileEntity; - GL11.glRotatef(radar.prevRotation + (radar.rotation - radar.prevRotation) * f, 0F, 1F, 0F); + TileEntityMachineRadarNT radar = (TileEntityMachineRadarNT) tileEntity; + GL11.glRotatef(radar.prevRotation + (radar.rotation - radar.prevRotation) * f, 0F, -1F, 0F); GL11.glTranslated(-0.125D, 0, 0); bindTexture(ResourceManager.radar_dish_tex); @@ -30,5 +30,4 @@ public class RenderRadar extends TileEntitySpecialRenderer { GL11.glPopMatrix(); } - } diff --git a/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java b/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java new file mode 100644 index 000000000..92342b53b --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java @@ -0,0 +1,117 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIMachineRadarNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; +import com.hbm.tileentity.machine.TileEntityMachineRadarScreen; + +import api.hbm.entity.RadarEntry; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderRadarScreen extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + switch(tileEntity.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + TileEntityMachineRadarScreen screen = (TileEntityMachineRadarScreen) tileEntity; + + bindTexture(ResourceManager.radar_screen_tex); + ResourceManager.radar_screen.renderAll(); + + bindTexture(GUIMachineRadarNT.texture); + Tessellator tess = Tessellator.instance; + + if(screen.linked) { + GL11.glDepthMask(false); + tess.startDrawingQuads(); + + double offset = ((tileEntity.getWorldObj().getTotalWorldTime() % 56) + f) / 30D; + tess.setColorRGBA_I(0x00ff00, 0); + tess.addVertex(0.38, 2 - offset, 1.375); + tess.addVertex(0.38, 2 - offset, -0.375); + tess.setColorRGBA_I(0x00ff00, 50); + tess.addVertex(0.38, 2 - offset - 0.125, -0.375); + tess.addVertex(0.38, 2 - offset - 0.125, 1.375); + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glShadeModel(GL11.GL_SMOOTH); + tess.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glShadeModel(GL11.GL_FLAT); + + if(!screen.entries.isEmpty()) { + tess.startDrawingQuads(); + tess.setNormal(0F, 1F, 0F); + + for(RadarEntry entry : screen.entries) { + + double sX = (entry.posX - screen.refX) / ((double) TileEntityMachineRadarNT.radarRange + 1) * (0.875D); + double sZ = (entry.posZ - screen.refZ) / ((double) TileEntityMachineRadarNT.radarRange + 1) * (0.875D); + double size = 0.0625D; + tess.addVertexWithUV(0.38, 1 - sZ + size, 0.5 - sX + size, 216D / 256D, (entry.blipLevel * 8F + 8F) / 256F); + tess.addVertexWithUV(0.38, 1 - sZ + size, 0.5 - sX - size, 224D / 256D, (entry.blipLevel * 8F + 8F) / 256F); + tess.addVertexWithUV(0.38, 1 - sZ - size, 0.5 - sX - size, 224D / 256D, entry.blipLevel * 8F / 256F); + tess.addVertexWithUV(0.38, 1 - sZ - size, 0.5 - sX + size, 216D / 256D, entry.blipLevel * 8F / 256F); + } + tess.draw(); + } + GL11.glDepthMask(true); + } else { + int offset = 118 + tileEntity.getWorldObj().rand.nextInt(81); + tess.startDrawingQuads(); + tess.setColorOpaque_I(0xffffff); + tess.setNormal(0F, 1F, 0F); + tess.addVertexWithUV(0.38, 1.875, 1.375, 216D / 256D, (offset + 40F) / 256F); + tess.addVertexWithUV(0.38, 1.875, -0.375, 256D / 256D, (offset + 40F) / 256F); + tess.addVertexWithUV(0.38, 0.125, -0.375, 256D / 256D, offset / 256F); + tess.addVertexWithUV(0.38, 0.125, 1.375, 216D / 256D, offset / 256F); + tess.draw(); + } + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.radar_screen); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(5.5, 5.5, 5.5); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glTranslated(0, 0, -0.5); + bindTexture(ResourceManager.radar_screen_tex); + ResourceManager.radar_screen.renderAll(); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderSteamEngine.java b/src/main/java/com/hbm/render/tileentity/RenderSteamEngine.java index f4b35ac7b..ff5e30bde 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSteamEngine.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSteamEngine.java @@ -71,7 +71,7 @@ public class RenderSteamEngine extends TileEntitySpecialRenderer implements IIte GL11.glPopMatrix(); GL11.glPushMatrix(); - double cath = Math.sqrt(3.515625D - (cos * cos)); + double cath = Math.sqrt(3.515625D - (cos * cos) / 2); GL11.glTranslated(1.875 - cath + sin, 0, 0); //the difference that "1.875 - cath" makes is minuscule but very much noticeable ResourceManager.steam_engine.renderPart("Piston"); GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/render/tileentity/RenderStirling.java b/src/main/java/com/hbm/render/tileentity/RenderStirling.java index d1544382d..3957f074e 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderStirling.java +++ b/src/main/java/com/hbm/render/tileentity/RenderStirling.java @@ -47,6 +47,8 @@ public class RenderStirling extends TileEntitySpecialRenderer implements IItemRe if(type == 0) bindTexture(ResourceManager.stirling_tex); + else if(type == 2) + bindTexture(ResourceManager.stirling_creative_tex); else bindTexture(ResourceManager.stirling_steel_tex); @@ -86,7 +88,8 @@ public class RenderStirling extends TileEntitySpecialRenderer implements IItemRe public Item[] getItemsForRenderer() { return new Item[] { Item.getItemFromBlock(ModBlocks.machine_stirling), - Item.getItemFromBlock(ModBlocks.machine_stirling_steel) + Item.getItemFromBlock(ModBlocks.machine_stirling_steel), + Item.getItemFromBlock(ModBlocks.machine_stirling_creative) }; } @@ -100,7 +103,7 @@ public class RenderStirling extends TileEntitySpecialRenderer implements IItemRe public void renderCommonWithStack(ItemStack item) { GL11.glRotatef(90, 0F, 1F, 0F); boolean cog = item.getItemDamage() != 1; - RenderStirling.this.renderCommon(cog ? System.currentTimeMillis() % 3600 * 0.1F : 0, cog, item.getItem() == Item.getItemFromBlock(ModBlocks.machine_stirling) ? 0 : 1); + RenderStirling.this.renderCommon(cog ? System.currentTimeMillis() % 3600 * 0.1F : 0, cog, item.getItem() == Item.getItemFromBlock(ModBlocks.machine_stirling) ? 0 : item.getItem() == Item.getItemFromBlock(ModBlocks.machine_stirling_creative) ? 2 : 1); }}; } diff --git a/src/main/java/com/hbm/render/tileentity/RenderTelex.java b/src/main/java/com/hbm/render/tileentity/RenderTelex.java new file mode 100644 index 000000000..9761d83e3 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderTelex.java @@ -0,0 +1,56 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderTelex extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + bindTexture(ResourceManager.telex_tex); + ResourceManager.telex.renderAll(); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.radio_telex); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -2, 0); + GL11.glScaled(6, 6, 6); + } + public void renderCommon() { + GL11.glTranslated(0, 0, -0.5); + bindTexture(ResourceManager.telex_tex); + ResourceManager.telex.renderAll(); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderWoodBurner.java b/src/main/java/com/hbm/render/tileentity/RenderWoodBurner.java new file mode 100644 index 000000000..14362d898 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderWoodBurner.java @@ -0,0 +1,61 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderWoodBurner extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + GL11.glTranslated(-0.5, 0, -0.5); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.wood_burner_tex); + ResourceManager.wood_burner.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_wood_burner); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(3.5, 3.5, 3.5); + } + public void renderCommon() { + GL11.glRotatef(90, 0F, 1F, 0F); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.wood_burner_tex); + ResourceManager.wood_burner.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java index 49ef618d6..d6311b241 100644 --- a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java +++ b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java @@ -20,23 +20,25 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.AdvancedModelLoader; -import net.minecraftforge.client.model.IModelCustom; public class RendererObjTester extends TileEntitySpecialRenderer { - private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/TestObj.obj"); - + //private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/TestObj.obj"); + + private static ResourceLocation extra = new ResourceLocation(RefStrings.MODID, "textures/models/horse/dyx.png"); + @Override public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { GL11.glPushMatrix(); GL11.glTranslated(x + 0.5, y, z + 0.5); GL11.glEnable(GL11.GL_LIGHTING); - - GL11.glTranslated(0, 0, 0.75); - this.bindTexture(new ResourceLocation(RefStrings.MODID, "textures/models/horse/dyx.png")); + GL11.glDisable(GL11.GL_CULL_FACE); + + GL11.glRotated(System.currentTimeMillis() / 5D % 360D, 0, -1, 0); + GL11.glTranslated(0, 0.1, 0.5); + + this.bindTexture(extra); HorsePronter.reset(); - //HorsePronter.pose(HorsePronter.id_lfl, 0, System.currentTimeMillis() % 360 / 10D, 0); double r = 60; HorsePronter.pose(HorsePronter.id_body, 0, -r, 0); HorsePronter.pose(HorsePronter.id_tail, 0, 45, 90); @@ -57,11 +59,7 @@ public class RendererObjTester extends TileEntitySpecialRenderer { GL11.glRotated(60, 0, 0, -1); bindTexture(TextureMap.locationItemsTexture); IIcon icon = stack.getIconIndex(); - float f14 = icon.getMinU(); - float f15 = icon.getMaxU(); - float f4 = icon.getMinV(); - float f5 = icon.getMaxV(); - ItemRenderer.renderItemIn2D(Tessellator.instance, f15, f4, f14, f5, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); + ItemRenderer.renderItemIn2D(Tessellator.instance, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 0.0625F); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/util/GaugeUtil.java b/src/main/java/com/hbm/render/util/GaugeUtil.java index e31455bac..751edabdf 100644 --- a/src/main/java/com/hbm/render/util/GaugeUtil.java +++ b/src/main/java/com/hbm/render/util/GaugeUtil.java @@ -1,10 +1,14 @@ package com.hbm.render.util; +import org.lwjgl.opengl.GL11; + import com.hbm.lib.RefStrings; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; public class GaugeUtil { @@ -55,5 +59,35 @@ public class GaugeUtil { tess.addVertexWithUV(x, y, z, 0, frameOffset); tess.draw(); } + + public static void drawSmoothGauge(int x, int y, double z, double progress, double tipLength, double backLength, double backSide, int color) { + GL11.glDisable(GL11.GL_TEXTURE_2D); + + progress = MathHelper.clamp_double(progress, 0, 1); + + float angle = (float) Math.toRadians(-progress * 270 - 45); + Vec3 tip = Vec3.createVectorHelper(0, tipLength, 0); + Vec3 left = Vec3.createVectorHelper(backSide, -backLength, 0); + Vec3 right = Vec3.createVectorHelper(-backSide, -backLength, 0); + tip.rotateAroundZ(angle); + left.rotateAroundZ(angle); + right.rotateAroundZ(angle); + + Tessellator tess = Tessellator.instance; + tess.startDrawing(GL11.GL_TRIANGLES); + tess.setColorOpaque_F(0F, 0F, 0F); + double mult = 1.5; + tess.addVertex(x + tip.xCoord * mult, y + tip.yCoord * mult, z); + tess.addVertex(x + left.xCoord * mult, y + left.yCoord * mult, z); + tess.addVertex(x + right.xCoord * mult, y + right.yCoord * mult, z); + tess.setColorOpaque_I(color); + tess.addVertex(x + tip.xCoord, y + tip.yCoord, z); + tess.addVertex(x + left.xCoord, y + left.yCoord, z); + tess.addVertex(x + right.xCoord, y + right.yCoord, z); + tess.draw(); + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + } } diff --git a/src/main/java/com/hbm/render/util/RenderDecoItem.java b/src/main/java/com/hbm/render/util/RenderDecoItem.java index bfca8e9ff..b7e6d2a70 100644 --- a/src/main/java/com/hbm/render/util/RenderDecoItem.java +++ b/src/main/java/com/hbm/render/util/RenderDecoItem.java @@ -1,6 +1,7 @@ package com.hbm.render.util; import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.ItemStack; @@ -9,7 +10,9 @@ import net.minecraft.item.ItemStack; * @author hbm */ public class RenderDecoItem extends RenderItem { + public RenderDecoItem(TileEntitySpecialRenderer render) { + this.setRenderManager(RenderManager.instance); } @Override diff --git a/src/main/java/com/hbm/saveddata/SatelliteSavedData.java b/src/main/java/com/hbm/saveddata/SatelliteSavedData.java index 2e5fe33c1..a0dd2a624 100644 --- a/src/main/java/com/hbm/saveddata/SatelliteSavedData.java +++ b/src/main/java/com/hbm/saveddata/SatelliteSavedData.java @@ -1,35 +1,38 @@ package com.hbm.saveddata; -import java.util.HashMap; -import java.util.Map.Entry; - import com.hbm.saveddata.satellites.Satellite; - import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraft.world.WorldSavedData; +import java.util.HashMap; +import java.util.Map.Entry; + public class SatelliteSavedData extends WorldSavedData { - public HashMap sats = new HashMap(); + public final HashMap sats = new HashMap<>(); - public SatelliteSavedData(String p_i2141_1_) { - super(p_i2141_1_); + /** + * Constructor used for deserialization + * @param name - Map data name + */ + public SatelliteSavedData(String name) { + super(name); } - public SatelliteSavedData() - { + /** + * Default constructor for satellites map data. + */ + public SatelliteSavedData() { super("satellites"); this.markDirty(); } public boolean isFreqTaken(int freq) { - return getSatFromFreq(freq) != null; } public Satellite getSatFromFreq(int freq) { - return sats.get(freq); } @@ -38,7 +41,6 @@ public class SatelliteSavedData extends WorldSavedData { int satCount = nbt.getInteger("satCount"); for(int i = 0; i < satCount; i++) { - Satellite sat = Satellite.create(nbt.getInteger("sat_id_" + i)); sat.readFromNBT((NBTTagCompound) nbt.getTag("sat_data_" + i)); @@ -55,7 +57,6 @@ public class SatelliteSavedData extends WorldSavedData { int i = 0; for(Entry struct : sats.entrySet()) { - NBTTagCompound data = new NBTTagCompound(); struct.getValue().writeToNBT(data); @@ -67,7 +68,6 @@ public class SatelliteSavedData extends WorldSavedData { } public static SatelliteSavedData getData(World worldObj) { - SatelliteSavedData data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); if(data == null) { worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData()); @@ -77,5 +77,4 @@ public class SatelliteSavedData extends WorldSavedData { return data; } - } diff --git a/src/main/java/com/hbm/saveddata/TomSaveData.java b/src/main/java/com/hbm/saveddata/TomSaveData.java index be36cecb5..0ccc22395 100644 --- a/src/main/java/com/hbm/saveddata/TomSaveData.java +++ b/src/main/java/com/hbm/saveddata/TomSaveData.java @@ -32,6 +32,10 @@ public class TomSaveData extends WorldSavedData { public static TomSaveData getLastCachedOrNull() { return lastCachedUnsafe; } + + public static void resetLastCached() { + lastCachedUnsafe = null; + } public TomSaveData(String tagName) { super(tagName); diff --git a/src/main/java/com/hbm/saveddata/satellites/Satellite.java b/src/main/java/com/hbm/saveddata/satellites/Satellite.java index 70c65e0ac..e1a3ff431 100644 --- a/src/main/java/com/hbm/saveddata/satellites/Satellite.java +++ b/src/main/java/com/hbm/saveddata/satellites/Satellite.java @@ -1,23 +1,22 @@ package com.hbm.saveddata.satellites; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - import com.hbm.items.ModItems; import com.hbm.saveddata.SatelliteSavedData; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + public abstract class Satellite { - public static List satellites = new ArrayList(); - public static HashMap itemToClass = new HashMap(); + public static final List> satellites = new ArrayList<>(); + public static final HashMap> itemToClass = new HashMap<>(); - public static enum InterfaceActions { + public enum InterfaceActions { HAS_MAP, //lets the interface display loaded chunks CAN_CLICK, //enables onClick events SHOW_COORDS, //enables coordinates as a mouse tooltip @@ -25,18 +24,18 @@ public abstract class Satellite { HAS_ORES //like HAS_MAP but only shows ores } - public static enum CoordActions { + public enum CoordActions { HAS_Y //enables the Y-coord field which is disabled by default } - public static enum Interfaces { + public enum Interfaces { NONE, //does not interact with any sat interface (i.e. asteroid miners) SAT_PANEL, //allows to interact with the sat interface panel (for graphical applications) SAT_COORD //allows to interact with the sat coord remote (for teleportation or other coord related actions) } - public List ifaceAcs = new ArrayList(); - public List coordAcs = new ArrayList(); + public List ifaceAcs = new ArrayList<>(); + public List coordAcs = new ArrayList<>(); public Interfaces satIface = Interfaces.NONE; public static void register() { @@ -64,10 +63,13 @@ public abstract class Satellite { } public static void orbit(World world, int id, int freq, double x, double y, double z) { - + if(world.isRemote) { + return; + } + Satellite sat = create(id); - if(sat != null && !world.isRemote) { + if(sat != null) { SatelliteSavedData data = SatelliteSavedData.getData(world); data.sats.put(freq, sat); sat.onOrbit(world, x, y, z); @@ -76,25 +78,22 @@ public abstract class Satellite { } public static Satellite create(int id) { - Satellite sat = null; try { - Class c = satellites.get(id); - sat = (Satellite) c.newInstance(); - } catch(Exception ex) { - + Class c = satellites.get(id); + sat = c.newInstance(); + } catch(Exception e) { + e.printStackTrace(); } return sat; } public static int getIDFromItem(Item item) { - Class sat = itemToClass.get(item); - int i = satellites.indexOf(sat); - - return i; + + return satellites.indexOf(sat); } public int getID() { diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java index 99195b6d5..59b2d3f3d 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java @@ -1,3 +1,20 @@ package com.hbm.saveddata.satellites; -public class SatelliteLunarMiner extends SatelliteMiner { } \ No newline at end of file +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; +import com.hbm.util.WeightedRandomObject; +import net.minecraft.item.ItemStack; + +public class SatelliteLunarMiner extends SatelliteMiner { + static { + registerCargo(SatelliteLunarMiner.class, new WeightedRandomObject[] { + new WeightedRandomObject(new ItemStack(ModBlocks.moon_turf, 48), 5), + new WeightedRandomObject(new ItemStack(ModBlocks.moon_turf, 32), 7), + new WeightedRandomObject(new ItemStack(ModBlocks.moon_turf, 16), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_lithium, 3), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_iron, 3), 5), + new WeightedRandomObject(new ItemStack(ModItems.crystal_iron, 1), 1), + new WeightedRandomObject(new ItemStack(ModItems.crystal_lithium, 1), 1) + }); + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java index f54beb254..c1ee0f836 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java @@ -1,9 +1,20 @@ package com.hbm.saveddata.satellites; +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; +import com.hbm.util.WeightedRandomObject; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import java.util.HashMap; + public class SatelliteMiner extends Satellite { - + /** + * {@link WeightedRandomObject} array with loot the satellite will deliver. + */ + private static final HashMap, WeightedRandomObject[]> CARGO = new HashMap<>(); + public long lastOp; public SatelliteMiner() { @@ -17,4 +28,52 @@ public class SatelliteMiner extends Satellite { public void readFromNBT(NBTTagCompound nbt) { lastOp = nbt.getLong("lastOp"); } + + /** + * Replaces cargo of the satellite. + * @param cargo - Array of {@link WeightedRandomObject} representing the loot that will be delivered. + */ + public static void registerCargo(Class minerSatelliteClass, WeightedRandomObject[] cargo) { + CARGO.put(minerSatelliteClass, cargo); + } + + /** + * Gets items the satellite can deliver. + * @return - Array of {@link WeightedRandomObject} of satellite loot. + */ + public WeightedRandomObject[] getCargo() { + return CARGO.get(getClass()); + } + + static { + registerCargo(SatelliteMiner.class, new WeightedRandomObject[] { + new WeightedRandomObject(new ItemStack(ModItems.powder_aluminium, 3), 10), + new WeightedRandomObject(new ItemStack(ModItems.powder_iron, 3), 10), + new WeightedRandomObject(new ItemStack(ModItems.powder_titanium, 2), 8), + new WeightedRandomObject(new ItemStack(ModItems.crystal_tungsten, 2), 7), + new WeightedRandomObject(new ItemStack(ModItems.powder_coal, 4), 15), + new WeightedRandomObject(new ItemStack(ModItems.powder_uranium, 2), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_plutonium, 1), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_thorium, 2), 7), + new WeightedRandomObject(new ItemStack(ModItems.powder_desh_mix, 3), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_diamond, 2), 7), + new WeightedRandomObject(new ItemStack(Items.redstone, 5), 15), + new WeightedRandomObject(new ItemStack(ModItems.powder_nitan_mix, 2), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_power, 2), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_copper, 5), 15), + new WeightedRandomObject(new ItemStack(ModItems.powder_lead, 3), 10), + new WeightedRandomObject(new ItemStack(ModItems.fluorite, 4), 15), + new WeightedRandomObject(new ItemStack(ModItems.powder_lapis, 4), 10), + new WeightedRandomObject(new ItemStack(ModItems.powder_combine_steel, 1), 1), + new WeightedRandomObject(new ItemStack(ModItems.crystal_aluminium, 1), 5), + new WeightedRandomObject(new ItemStack(ModItems.crystal_gold, 1), 5), + new WeightedRandomObject(new ItemStack(ModItems.crystal_phosphorus, 1), 10), + new WeightedRandomObject(new ItemStack(ModBlocks.gravel_diamond, 1), 3), + new WeightedRandomObject(new ItemStack(ModItems.crystal_uranium, 1), 3), + new WeightedRandomObject(new ItemStack(ModItems.crystal_plutonium, 1), 3), + new WeightedRandomObject(new ItemStack(ModItems.crystal_trixite, 1), 1), + new WeightedRandomObject(new ItemStack(ModItems.crystal_starmetal, 1), 1), + new WeightedRandomObject(new ItemStack(ModItems.crystal_lithium, 2), 4) + }); + } } diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteMinerCargoRegistry.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteMinerCargoRegistry.java deleted file mode 100644 index 7caf98f02..000000000 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteMinerCargoRegistry.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.hbm.saveddata.satellites; - -import com.hbm.blocks.ModBlocks; -import com.hbm.items.ModItems; -import com.hbm.util.WeightedRandomObject; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; - -import java.util.HashMap; - -public class SatelliteMinerCargoRegistry { - private static final HashMap cargo = new HashMap() {{ - put(SatelliteMiner.class.getName(), new WeightedRandomObject[] { - new WeightedRandomObject(new ItemStack(ModItems.powder_aluminium, 3), 10), - new WeightedRandomObject(new ItemStack(ModItems.powder_iron, 3), 10), - new WeightedRandomObject(new ItemStack(ModItems.powder_titanium, 2), 8), - new WeightedRandomObject(new ItemStack(ModItems.crystal_tungsten, 2), 7), - new WeightedRandomObject(new ItemStack(ModItems.powder_coal, 4), 15), - new WeightedRandomObject(new ItemStack(ModItems.powder_uranium, 2), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_plutonium, 1), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_thorium, 2), 7), - new WeightedRandomObject(new ItemStack(ModItems.powder_desh_mix, 3), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_diamond, 2), 7), - new WeightedRandomObject(new ItemStack(Items.redstone, 5), 15), - new WeightedRandomObject(new ItemStack(ModItems.powder_nitan_mix, 2), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_power, 2), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_copper, 5), 15), - new WeightedRandomObject(new ItemStack(ModItems.powder_lead, 3), 10), - new WeightedRandomObject(new ItemStack(ModItems.fluorite, 4), 15), - new WeightedRandomObject(new ItemStack(ModItems.powder_lapis, 4), 10), - new WeightedRandomObject(new ItemStack(ModItems.powder_combine_steel, 1), 1), - new WeightedRandomObject(new ItemStack(ModItems.crystal_aluminium, 1), 5), - new WeightedRandomObject(new ItemStack(ModItems.crystal_gold, 1), 5), - new WeightedRandomObject(new ItemStack(ModItems.crystal_phosphorus, 1), 10), - new WeightedRandomObject(new ItemStack(ModBlocks.gravel_diamond, 1), 3), - new WeightedRandomObject(new ItemStack(ModItems.crystal_uranium, 1), 3), - new WeightedRandomObject(new ItemStack(ModItems.crystal_plutonium, 1), 3), - new WeightedRandomObject(new ItemStack(ModItems.crystal_trixite, 1), 1), - new WeightedRandomObject(new ItemStack(ModItems.crystal_starmetal, 1), 1), - new WeightedRandomObject(new ItemStack(ModItems.crystal_lithium, 2), 4) - }); - put(SatelliteLunarMiner.class.getName(), new WeightedRandomObject[] { - new WeightedRandomObject(new ItemStack(ModBlocks.moon_turf, 48), 5), - new WeightedRandomObject(new ItemStack(ModBlocks.moon_turf, 32), 7), - new WeightedRandomObject(new ItemStack(ModBlocks.moon_turf, 16), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_lithium, 3), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_iron, 3), 5), - new WeightedRandomObject(new ItemStack(ModItems.crystal_iron, 1), 1), - new WeightedRandomObject(new ItemStack(ModItems.crystal_lithium, 1), 1), - }); - }}; - - /** - * Register cargo for specified satellite object - * @param o - Satellite object - * @param cargo - WeightedRandomObject array with loot - */ - public static void register(Object o, WeightedRandomObject[] cargo) { - SatelliteMinerCargoRegistry.cargo.put(o.getClass().getName(), cargo); - } - - /** - * Register cargo for specified satellite class - * @param c - Satellite class - * @param cargo - WeightedRandomObject array with loot - */ - public static void register(Class c, WeightedRandomObject[] cargo) { - SatelliteMinerCargoRegistry.cargo.put(c.getName(), cargo); - } - - /** - * Get loot by satellite class name - * @param satelliteName - Satellite class name, like com.hbm.saveddata.satellites.SatelliteMiner - * @return - WeightedRandomObject array with loot - */ - public static WeightedRandomObject[] getCargo(String satelliteName) { - if(cargo.containsKey(satelliteName)) { - return cargo.get(satelliteName); - } - return new WeightedRandomObject[0]; - } -} diff --git a/src/main/java/com/hbm/sound/AudioDynamic.java b/src/main/java/com/hbm/sound/AudioDynamic.java index 8bc976d0d..3799b7d05 100644 --- a/src/main/java/com/hbm/sound/AudioDynamic.java +++ b/src/main/java/com/hbm/sound/AudioDynamic.java @@ -10,14 +10,18 @@ import net.minecraft.util.ResourceLocation; @SideOnly(Side.CLIENT) public class AudioDynamic extends MovingSound { - - public float intendedVolume; + + public float maxVolume = 1; + public float range; + public int keepAlive; + public int timeSinceKA;; + public boolean shouldExpire = false;; protected AudioDynamic(ResourceLocation loc) { super(loc); this.repeat = true; - this.field_147666_i = ISound.AttenuationType.LINEAR; - this.intendedVolume = 10; + this.field_147666_i = ISound.AttenuationType.NONE; + this.range = 10; } public void setPosition(float x, float y, float z) { @@ -34,9 +38,18 @@ public class AudioDynamic extends MovingSound { if(player != null) { f = (float)Math.sqrt(Math.pow(xPosF - player.posX, 2) + Math.pow(yPosF - player.posY, 2) + Math.pow(zPosF - player.posZ, 2)); - volume = func(f, intendedVolume); + volume = func(f); } else { - volume = intendedVolume; + volume = maxVolume; + } + + if(this.shouldExpire) { + + if(this.timeSinceKA > this.keepAlive) { + this.stop(); + } + + this.timeSinceKA++; } } @@ -49,15 +62,28 @@ public class AudioDynamic extends MovingSound { } public void setVolume(float volume) { - this.intendedVolume = volume; + this.volume = volume; + } + + public void setRange(float range) { + this.range = range; + } + + public void setKeepAlive(int keepAlive) { + this.keepAlive = keepAlive; + this.shouldExpire = true; + } + + public void keepAlive() { + this.timeSinceKA = 0; } public void setPitch(float pitch) { this.field_147663_c = pitch; } - public float func(float f, float v) { - return (f / v) * -2 + 2; + public float func(float dist) { + return (dist / range) * -maxVolume + maxVolume; } public boolean isPlaying() { diff --git a/src/main/java/com/hbm/sound/AudioWrapper.java b/src/main/java/com/hbm/sound/AudioWrapper.java index 9c99bf096..e3830d5d8 100644 --- a/src/main/java/com/hbm/sound/AudioWrapper.java +++ b/src/main/java/com/hbm/sound/AudioWrapper.java @@ -1,14 +1,19 @@ package com.hbm.sound; public class AudioWrapper { + + public void setKeepAlive(int keepAlive) { } + public void keepAlive() { } public void updatePosition(float x, float y, float z) { } - + public void updateVolume(float volume) { } + public void updateRange(float range) { } public void updatePitch(float pitch) { } - + public float getVolume() { return 0F; } + public float getRange() { return 0F; } public float getPitch() { return 0F; } diff --git a/src/main/java/com/hbm/sound/AudioWrapperClient.java b/src/main/java/com/hbm/sound/AudioWrapperClient.java index 34a72dc06..bc259c1dd 100644 --- a/src/main/java/com/hbm/sound/AudioWrapperClient.java +++ b/src/main/java/com/hbm/sound/AudioWrapperClient.java @@ -14,6 +14,18 @@ public class AudioWrapperClient extends AudioWrapper { sound = new AudioDynamic(source); } + @Override + public void setKeepAlive(int keepAlive) { + if(sound != null) + sound.setKeepAlive(keepAlive); + } + + @Override + public void keepAlive() { + if(sound != null) + sound.keepAlive(); + } + @Override public void updatePosition(float x, float y, float z) { if(sound != null) @@ -26,6 +38,12 @@ public class AudioWrapperClient extends AudioWrapper { sound.setVolume(volume); } + @Override + public void updateRange(float range) { + if(sound != null) + sound.setRange(range); + } + @Override public void updatePitch(float pitch) { if(sound != null) diff --git a/src/main/java/com/hbm/sound/AudioWrapperClientStartStop.java b/src/main/java/com/hbm/sound/AudioWrapperClientStartStop.java index 663981b9e..6df22c652 100644 --- a/src/main/java/com/hbm/sound/AudioWrapperClientStartStop.java +++ b/src/main/java/com/hbm/sound/AudioWrapperClientStartStop.java @@ -3,6 +3,7 @@ package com.hbm.sound; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +/** Only used for doors */ public class AudioWrapperClientStartStop extends AudioWrapperClient { public String start; diff --git a/src/main/java/com/hbm/tileentity/DoorDecl.java b/src/main/java/com/hbm/tileentity/DoorDecl.java index b770acb68..5f81ef8f5 100644 --- a/src/main/java/com/hbm/tileentity/DoorDecl.java +++ b/src/main/java/com/hbm/tileentity/DoorDecl.java @@ -1,79 +1,78 @@ package com.hbm.tileentity; -import org.lwjgl.opengl.GL11; - import com.hbm.animloader.AnimatedModel; import com.hbm.animloader.Animation; +import com.hbm.lib.Library; import com.hbm.main.ResourceManager; import com.hbm.render.loader.WavefrontObjDisplayList; import com.hbm.util.BobMathUtil; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; public abstract class DoorDecl { - -public static final DoorDecl TRANSITION_SEAL = new DoorDecl(){ - + + public static final DoorDecl TRANSITION_SEAL = new DoorDecl() { + @Override public String getOpenSoundStart() { return "hbm:door.TransitionSealOpen"; - }; - + } + @Override - public float getSoundVolume(){ + public float getSoundVolume() { return 6; } - + @Override @SideOnly(Side.CLIENT) public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - if(!partName.equals("base")){ - set(trans, 0, 3.5F*getNormTime(openTicks), 0); + if(!partName.equals("base")) { + set(trans, 0, 3.5F * getNormTime(openTicks), 0); } else { super.getTranslation(partName, openTicks, child, trans); } - }; - + } + @Override @SideOnly(Side.CLIENT) public void doOffsetTransform() { GL11.glTranslated(0, 0, 0.5); - }; - + } + @Override @SideOnly(Side.CLIENT) public double[][] getClippingPlanes() { return super.getClippingPlanes(); - }; - + } + @Override public int timeToOpen() { return 480; - }; - - @Override - public int[][] getDoorOpenRanges(){ - //3 is tall - //4 is wide - return new int[][]{{-9, 2, 0, 20, 20, 1}}; } @Override - public int[] getDimensions(){ - return new int[]{23, 0, 0, 0, 13, 12}; + public int[][] getDoorOpenRanges() { + // 3 is tall + // 4 is wide + return new int[][] { { -9, 2, 0, 20, 20, 1 } }; } - + + @Override + public int[] getDimensions() { + return new int[] { 23, 0, 0, 0, 13, 12 }; + } + @Override public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { return super.getBlockBound(x, y, z, open); - }; + } @Override @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(String partName){ + public ResourceLocation getTextureForPart(int skinIndex, String partName) { return ResourceManager.transition_seal_tex; } @@ -81,226 +80,1001 @@ public static final DoorDecl TRANSITION_SEAL = new DoorDecl(){ @SideOnly(Side.CLIENT) public Animation getAnim() { return ResourceManager.transition_seal_anim; - }; - + } + @Override @SideOnly(Side.CLIENT) public AnimatedModel getAnimatedModel() { return ResourceManager.transition_seal; - }; - + } + @Override @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel(){ + public WavefrontObjDisplayList getModel() { return null; } }; - -public static final DoorDecl FIRE_DOOR = new DoorDecl(){ - + + public static final DoorDecl FIRE_DOOR = new DoorDecl() { + @Override - public String getOpenSoundEnd() { + public String getOpenSoundEnd() { return "hbm:door.wghStop"; - }; + } + @Override - public String getOpenSoundLoop() { + public String getOpenSoundLoop() { return "hbm:door.wghStart"; - }; + } + @Override - public String getSoundLoop2() { + public String getSoundLoop2() { return "hbm:door.alarm6"; - }; - + } + @Override - public float getSoundVolume(){ + public float getSoundVolume() { return 2; } - + @Override @SideOnly(Side.CLIENT) public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - if(!partName.equals("frame")){ - set(trans, 0, 3*getNormTime(openTicks), 0); + if(!partName.equals("frame")) { + set(trans, 0, 3 * getNormTime(openTicks), 0); } else { super.getTranslation(partName, openTicks, child, trans); } - }; - + } + @Override @SideOnly(Side.CLIENT) public void doOffsetTransform() { GL11.glTranslated(0, 0, 0.5); - }; - - @Override - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes() { - return new double[][]{{0, -1, 0, 3.0001}}; - }; - - @Override - public int timeToOpen() { - return 160; - }; - - @Override - public int[][] getDoorOpenRanges(){ - return new int[][]{{-1, 0, 0, 3, 4, 1}}; } @Override - public int[] getDimensions(){ - return new int[]{2, 0, 0, 0, 2, 1}; + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { 0, -1, 0, 3.0001 } }; } - + + @Override + public int timeToOpen() { + return 160; + } + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { -1, 0, 0, 3, 4, 1 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 2, 0, 0, 0, 2, 1 }; + } + @Override public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { if(!open) return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); - if(z == 1){ + if(z == 1) { return AxisAlignedBB.getBoundingBox(0.5, 0, 0, 1, 1, 1); - } else if(z == -2){ + } else if(z == -2) { return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.5, 1, 1); - } else if(y > 1){ + } else if(y > 1) { return AxisAlignedBB.getBoundingBox(0, 0.75, 0, 1, 1, 1); } else if(y == 0) { return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.1, 1); } else { return super.getBlockBound(x, y, z, open); } - }; + } @Override @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(String partName){ + public ResourceLocation getTextureForPart(int skinIndex, String partName) { return ResourceManager.fire_door_tex; } @Override @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel(){ + public WavefrontObjDisplayList getModel() { return ResourceManager.fire_door; } }; - //Format: x, y, z, tangent amount 1 (how long the door would be if it moved up), tangent amount 2 (door places blocks in this direction), axis (0-x, 1-y, 2-z) + public static final DoorDecl SLIDE_DOOR = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.sliding_door_opened"; + } + + @Override + public String getCloseSoundEnd() { + return "hbm:door.sliding_door_shut"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.sliding_door_opening"; + } + + @Override + public String getSoundLoop2() { + return "hbm:door.sliding_door_opening"; + } + + @Override + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glRotated(-90, 0, 1, 0); + } + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { -1, 0, 0, 3.50001 }, { 1, 0, 0, 3.50001 } }; + } + + @Override + public int timeToOpen() { + return 24; + } + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { -2, 0, 0, 4, 5, 1 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 3, 0, 0, 0, 3, 3 }; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(open) { + if(y == 3) { + return AxisAlignedBB.getBoundingBox(0, 0.5, 0, 1, 1, 1); + } else if(y == 0) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.08, 1); + } + } + return super.getBlockBound(x, y, z, open); + } + + @Override + public boolean hasSkins() { + return true; + } + + @Override + public int getSkinCount() { + return 3; + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return new ResourceLocation[] { ResourceManager.sliding_blast_door_tex, ResourceManager.sliding_blast_door_variant1_tex, ResourceManager.sliding_blast_door_variant2_tex }[skinIndex]; + } + + @Override + public WavefrontObjDisplayList getModel() { + return null; + } + + @Override + public Animation getAnim() { + return ResourceManager.sliding_blast_door_anim; + } + + @Override + public AnimatedModel getAnimatedModel() { + return ResourceManager.sliding_blast_door; + } + }; + + public static final DoorDecl SLIDING_SEAL_DOOR = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.sliding_seal_stop"; + } + + @Override + public String getOpenSoundStart() { + return "hbm:door.sliding_seal_open"; + } + + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(partName.startsWith("door")) { + set(trans, 0, 0, Library.smoothstep(getNormTime(openTicks), 0, 1)); + } else { + set(trans, 0, 0, 0); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { 0, 0, -1, 0.5001 } }; + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0.375, 0, 0); + }; + + @Override + public int timeToOpen() { + return 20; + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(open) { + if(y == 0) return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.25, 1, 0, 1); + return AxisAlignedBB.getBoundingBox(0, 0.9375, 1 - 0.25, 1, 1, 1); + } else { + return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.25, 1, 1, 1); + } + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { 0, 0, 0, 1, 2, 2 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 1, 0, 0, 0, 0, 0 }; + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return ResourceManager.sliding_seal_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.sliding_seal_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.sliding_seal_door; + } + }; + + public static final DoorDecl SECURE_ACCESS_DOOR = new DoorDecl() { + + @Override + public String getCloseSoundLoop() { + return "hbm:door.garage_move"; + } + + @Override + public String getCloseSoundEnd() { + return "hbm:door.garage_stop"; + } + + @Override + public String getOpenSoundEnd() { + return "hbm:door.garage_stop"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.garage_move"; + } + + @Override + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(!partName.equals("base")) { + set(trans, 0, 3.5F * getNormTime(openTicks), 0); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glRotated(90, 0, 1, 0); + }; + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { 0, -1, 0, 5 } }; + }; + + @Override + public int timeToOpen() { + return 120; + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { -2, 1, 0, 4, 5, 1 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 4, 0, 0, 0, 2, 2 }; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) { + if(y > 0) { + return AxisAlignedBB.getBoundingBox(0, 0, 0.375, 1, 1, 0.625); + } + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); + } + if(y == 1) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.0625, 1); + } else if(y == 4) { + return AxisAlignedBB.getBoundingBox(0, 0.5, 0.15, 1, 1, 0.85); + } else { + return super.getBlockBound(x, y, z, open); + } + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return ResourceManager.secure_access_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.secure_access_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.secure_access_door; + } + }; + + public static final DoorDecl ROUND_AIRLOCK_DOOR = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.garage_stop"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.garage_move"; + } + + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if("doorLeft".equals(partName)) { + set(trans, 0, 0, 1.5F * getNormTime(openTicks)); + } else if("doorRight".equals(partName)) { + set(trans, 0, 0, -1.5F * getNormTime(openTicks)); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0, 0, 0.5); + }; + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { 0.0, 0.0, 1.0, 2.0001 }, { 0.0, 0.0, -1.0, 2.0001 } }; + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) + return super.getBlockBound(x, y, z, open); + if(z == 1) { + return AxisAlignedBB.getBoundingBox(0.4, 0, 0, 1, 1, 1); + } else if(z == -2) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.6, 1, 1); + } else if(y == 3) { + return AxisAlignedBB.getBoundingBox(0, 0.5, 0, 1, 1, 1); + } else if(y == 0) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.0625, 1); + } + return super.getBlockBound(x, y, z, open); + }; + + @Override + public int timeToOpen() { + return 60; + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { 0, 0, 0, -2, 4, 2 }, { 0, 0, 0, 3, 4, 2 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 3, 0, 0, 0, 2, 1 }; + }; + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return ResourceManager.round_airlock_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.round_airlock_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.round_airlock_door; + } + }; + + public static final DoorDecl QE_SLIDING = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.qe_sliding_opened"; + }; + + @Override + public String getCloseSoundEnd() { + return "hbm:door.qe_sliding_shut"; + }; + + @Override + public String getOpenSoundLoop() { + return "hbm:door.qe_sliding_opening"; + }; + + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(partName.startsWith("left")) { + set(trans, 0, 0, 0.99F * getNormTime(openTicks)); + } else { + set(trans, 0, 0, -0.99F * getNormTime(openTicks)); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0.4375, 0, 0.5); + }; + + @Override + public int timeToOpen() { + return 10; + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(open) { + if(z == 0) { + return AxisAlignedBB.getBoundingBox(1 - 0.125, 0, 1 - 0.125, 1, 1, 1); + } else { + return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.125, 0.125, 1, 1); + } + } else { + return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.125, 1, 1, 1); + } + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { 0, 0, 0, 2, 2, 2 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 1, 0, 0, 0, 1, 0 }; + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return ResourceManager.qe_sliding_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return getTextureForPart(partName); + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.qe_sliding_door; + } + + }; + + public static final DoorDecl QE_CONTAINMENT = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.wgh_stop"; + }; + + @Override + public String getOpenSoundLoop() { + return "hbm:door.wgh_start"; + }; + + @Override + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(!partName.equals("frame")) { + set(trans, 0, 3 * getNormTime(openTicks), 0); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0.25, 0, 0); + }; + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { 0, -1, 0, 3.0001 } }; + }; + + @Override + public int timeToOpen() { + return 160; + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { -1, 0, 0, 3, 3, 1 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 2, 0, 0, 0, 1, 1 }; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) + return AxisAlignedBB.getBoundingBox(0, 0, 0.5, 1, 1, 1); + if(y > 1) + return AxisAlignedBB.getBoundingBox(0, 0.5, 0.5, 1, 1, 1); + else if(y == 0) + return AxisAlignedBB.getBoundingBox(0, 0, 0.5, 1, 0.1, 1); + return super.getBlockBound(x, y, z, open); + }; + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + if(partName.equals("decal")) + return ResourceManager.qe_containment_decal; + return ResourceManager.qe_containment_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return getTextureForPart(partName); + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.qe_containment; + } + + }; + + public static final DoorDecl WATER_DOOR = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.wgh_big_stop"; + }; + + @Override + public String getOpenSoundLoop() { + return "hbm:door.wgh_big_start"; + }; + + @Override + public String getOpenSoundStart() { + return "hbm:door.lever"; + }; + + @Override + public String getCloseSoundStart() { + return null; + }; + + @Override + public String getCloseSoundEnd() { + return "hbm:door.lever"; + }; + + @Override + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if("bolt".equals(partName)) { + set(trans, 0, 0, 0.4F * Library.smoothstep(getNormTime(openTicks, 0, 30), 0, 1)); + } else { + set(trans, 0, 0, 0); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0.375, 0, 0); + } + + @Override + @SideOnly(Side.CLIENT) + public void getOrigin(String partName, float[] orig) { + if("door".equals(partName) || "bolt".equals(partName)) { + set(orig, 0.125F, 1.5F, 1.18F); + return; + } else if("spinny_upper".equals(partName)) { + set(orig, 0.041499F, 2.43569F, -0.587849F); + return; + } else if("spinny_lower".equals(partName)) { + set(orig, 0.041499F, 0.571054F, -0.587849F); + return; + } + super.getOrigin(partName, orig); + }; + + @Override + @SideOnly(Side.CLIENT) + public void getRotation(String partName, float openTicks, float[] rot) { + if(partName.startsWith("spinny")) { + set(rot, Library.smoothstep(getNormTime(openTicks, 0, 30), 0, 1) * 360, 0, 0); + return; + } else if("door".equals(partName) || "bolt".equals(partName)) { + set(rot, 0, Library.smoothstep(getNormTime(openTicks, 30, 60), 0, 1) * -134, 0); + return; + } + super.getRotation(partName, openTicks, rot); + }; + + @Override + @SideOnly(Side.CLIENT) + public boolean doesRender(String partName, boolean child) { + return child || !partName.startsWith("spinny"); + }; + + @Override + @SideOnly(Side.CLIENT) + public String[] getChildren(String partName) { + if("door".equals(partName)) + return new String[] { "spinny_lower", "spinny_upper" }; + return super.getChildren(partName); + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) { + return AxisAlignedBB.getBoundingBox(0, 0, 0.75, 1, 1, 1); + } else if(y > 1) { + return AxisAlignedBB.getBoundingBox(0, 0.85, 0.75, 1, 1, 1); + } else if(y == 0) { + return AxisAlignedBB.getBoundingBox(0, 0, 0.75, 1, 0.15, 1); + } + return super.getBlockBound(x, y, z, open); + }; + + @Override + public int timeToOpen() { + return 60; + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { 1, 0, 0, -3, 3, 2 } }; + } + + public float getDoorRangeOpenTime(int ticks, int idx) { + return getNormTime(ticks, 35, 40); + }; + + @Override + public int[] getDimensions() { + return new int[] { 2, 0, 0, 0, 1, 1 }; + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return ResourceManager.water_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.water_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.water_door; + } + + }; + + public static final DoorDecl LARGE_VEHICLE_DOOR = new DoorDecl() { + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if("doorLeft".equals(partName)) { + set(trans, 0, 0, 3 * getNormTime(openTicks)); + } else if("doorRight".equals(partName)) { + set(trans, 0, 0, -3 * getNormTime(openTicks)); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + }; + + @Override + public String getOpenSoundEnd() { + return "hbm:door.garage_stop"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.garage_move"; + }; + + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { 0.0, 0.0, 1.0, 3.50001 }, { 0.0, 0.0, -1.0, 3.50001 } }; + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) + return super.getBlockBound(x, y, z, open); + if(z == 3) { + return AxisAlignedBB.getBoundingBox(0.4, 0, 0, 1, 1, 1); + } else if(z == -3) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.6, 1, 1); + } + return super.getBlockBound(x, y, z, open); + }; + + @Override + public int timeToOpen() { + return 60; + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { 0, 0, 0, -4, 6, 2 }, { 0, 0, 0, 4, 6, 2 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 5, 0, 0, 0, 3, 3 }; + }; + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return ResourceManager.large_vehicle_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.large_vehicle_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.large_vehicle_door; + } + + }; + + // Format: x, y, z, tangent amount 1 (how long the door would be if it moved + // up), tangent amount 2 (door places blocks in this direction), axis (0-x, + // 1-y, 2-z) public abstract int[][] getDoorOpenRanges(); - + public abstract int[] getDimensions(); - - public float getDoorRangeOpenTime(int ticks, int idx){ + + public float getDoorRangeOpenTime(int ticks, int idx) { return getNormTime(ticks); } - - public int timeToOpen(){ + + public int timeToOpen() { return 20; } - - public float getNormTime(float time){ + + public float getNormTime(float time) { return getNormTime(time, 0, timeToOpen()); } - - public float getNormTime(float time, float min, float max){ + + public float getNormTime(float time, float min, float max) { return BobMathUtil.remap01_clamp(time, min, max); } - - @SideOnly(Side.CLIENT) - public abstract ResourceLocation getTextureForPart(String partName); - - @SideOnly(Side.CLIENT) - public abstract WavefrontObjDisplayList getModel(); - - @SideOnly(Side.CLIENT) - public AnimatedModel getAnimatedModel(){ - return null; - } - - @SideOnly(Side.CLIENT) - public Animation getAnim(){ - return null; - } - - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans){ - set(trans, 0, 0, 0); - } - - @SideOnly(Side.CLIENT) - public void getRotation(String partName, float openTicks, float[] rot){ - set(rot, 0, 0, 0); - } - - @SideOnly(Side.CLIENT) - public void getOrigin(String partName, float[] orig){ - set(orig, 0, 0, 0); - } - - @SideOnly(Side.CLIENT) - public boolean doesRender(String partName, boolean child){ - return true; - } - - private static final String[] nothing = new String[]{}; - - @SideOnly(Side.CLIENT) - public String[] getChildren(String partName){ - return nothing; - } - - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes(){ - return new double[][]{}; - } - - @SideOnly(Side.CLIENT) - public void doOffsetTransform(){ - } - - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open){ - return open ? AxisAlignedBB.getBoundingBox(0, 0, 0, 0, 0, 0) : AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); - } - - public boolean isLadder(boolean open){ + + public boolean hasSkins() { return false; } - - public String getOpenSoundLoop(){ + + public int getSkinCount() { + return 0; + } + + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return getTextureForPart(0, partName); + } + + @SideOnly(Side.CLIENT) + public abstract ResourceLocation getTextureForPart(int skinIndex, String partName); + + @SideOnly(Side.CLIENT) + public abstract WavefrontObjDisplayList getModel(); + + @SideOnly(Side.CLIENT) + public AnimatedModel getAnimatedModel() { return null; } - - //Hack - public String getSoundLoop2(){ + + @SideOnly(Side.CLIENT) + public Animation getAnim() { return null; } - - public String getCloseSoundLoop(){ + + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + set(trans, 0, 0, 0); + } + + @SideOnly(Side.CLIENT) + public void getRotation(String partName, float openTicks, float[] rot) { + set(rot, 0, 0, 0); + } + + @SideOnly(Side.CLIENT) + public void getOrigin(String partName, float[] orig) { + set(orig, 0, 0, 0); + } + + @SideOnly(Side.CLIENT) + public boolean doesRender(String partName, boolean child) { + return true; + } + + private static final String[] nothing = new String[] {}; + + @SideOnly(Side.CLIENT) + public String[] getChildren(String partName) { + return nothing; + } + + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] {}; + } + + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + } + + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + return open ? AxisAlignedBB.getBoundingBox(0, 0, 0, 0, 0, 0) : AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); + } + + public boolean isLadder(boolean open) { + return false; + } + + public String getOpenSoundLoop() { + return null; + } + + // Hack + public String getSoundLoop2() { + return null; + } + + public String getCloseSoundLoop() { return getOpenSoundLoop(); } - - public String getOpenSoundStart(){ + + public String getOpenSoundStart() { return null; } - - public String getCloseSoundStart(){ + + public String getCloseSoundStart() { return getOpenSoundStart(); } - - public String getOpenSoundEnd(){ + + public String getOpenSoundEnd() { return null; } - - public String getCloseSoundEnd(){ + + public String getCloseSoundEnd() { return getOpenSoundEnd(); } - - public float getSoundVolume(){ + + public float getSoundVolume() { return 1; } - - public float[] set(float[] f, float x, float y, float z){ + + public float[] set(float[] f, float x, float y, float z) { f[0] = x; f[1] = y; f[2] = z; return f; - }; + } } diff --git a/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java b/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java new file mode 100644 index 000000000..4250d6edd --- /dev/null +++ b/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java @@ -0,0 +1,9 @@ +package com.hbm.tileentity; + +import io.netty.buffer.ByteBuf; + +public interface IBufPacketReceiver { + + public void serialize(ByteBuf buf); + public void deserialize(ByteBuf buf); +} diff --git a/src/main/java/com/hbm/tileentity/IConditionalInvAccess.java b/src/main/java/com/hbm/tileentity/IConditionalInvAccess.java new file mode 100644 index 000000000..9416eb837 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/IConditionalInvAccess.java @@ -0,0 +1,17 @@ +package com.hbm.tileentity; + +import net.minecraft.item.ItemStack; + +/** + * Masks operation such as isItemValidForSlot and getAccessibleSlotsFromSide found in ISidedInveotry + * Intended to be used to return a different result depending on the port, assuming the port detects IConditionalInvAccess + * + * @author hbm + */ +public interface IConditionalInvAccess { + + public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack); + public boolean canInsertItem(int x, int y, int z, int slot, ItemStack stack, int side); + public boolean canExtractItem(int x, int y, int z, int slot, ItemStack stack, int side); + public int[] getAccessibleSlotsFromSide(int x, int y, int z, int side); +} diff --git a/src/main/java/com/hbm/tileentity/IRadarCommandReceiver.java b/src/main/java/com/hbm/tileentity/IRadarCommandReceiver.java new file mode 100644 index 000000000..0351ec055 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/IRadarCommandReceiver.java @@ -0,0 +1,9 @@ +package com.hbm.tileentity; + +import net.minecraft.entity.Entity; + +public interface IRadarCommandReceiver { + + public boolean sendCommandPosition(int x, int y, int z); + public boolean sendCommandEntity(Entity target); +} diff --git a/src/main/java/com/hbm/tileentity/IRadioisotopeFuel.java b/src/main/java/com/hbm/tileentity/IRadioisotopeFuel.java index 829bfba2f..5f737b6e8 100644 --- a/src/main/java/com/hbm/tileentity/IRadioisotopeFuel.java +++ b/src/main/java/com/hbm/tileentity/IRadioisotopeFuel.java @@ -1,6 +1,7 @@ package com.hbm.tileentity; import java.util.List; +import java.util.Locale; import javax.annotation.CheckForNull; import javax.annotation.Nonnull; @@ -139,11 +140,11 @@ public interface IRadioisotopeFuel if (showAdv) { tooltip.add("EXTENDED INFO:"); - tooltip.add(String.format("%s / %s ticks", instance.getLifespan(stack), instance.getMaxLifespan())); + tooltip.add(String.format(Locale.US, "%s / %s ticks", instance.getLifespan(stack), instance.getMaxLifespan())); final String[] timeLeft = BobMathUtil.ticksToDate(instance.getLifespan(stack)); final String[] maxLife = BobMathUtil.ticksToDate(instance.getMaxLifespan()); - tooltip.add(String.format("Time remaining: %s y, %s d, %s h", (Object[]) timeLeft)); - tooltip.add(String.format("Maximum life: %s y, %s d, %s h", (Object[]) maxLife)); + tooltip.add(String.format(Locale.US, "Time remaining: %s y, %s d, %s h", (Object[]) timeLeft)); + tooltip.add(String.format(Locale.US, "Maximum life: %s y, %s d, %s h", (Object[]) maxLife)); } } } diff --git a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java new file mode 100644 index 000000000..f1a420b5f --- /dev/null +++ b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java @@ -0,0 +1,29 @@ +package com.hbm.tileentity; + +import java.util.List; + +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.util.I18nUtil; + +import net.minecraft.block.Block; +import net.minecraft.util.EnumChatFormatting; + +public interface IUpgradeInfoProvider { + + /** If any of the automated display stuff should be applied for this upgrade. A level of 0 is used by the GUI's indicator, as opposed to the item tooltips */ + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo); + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo); + public int getMaxLevel(UpgradeType type); + + public static String getStandardLabel(Block block) { + return EnumChatFormatting.GREEN.YELLOW + ">>> " + I18nUtil.resolveKey(block.getUnlocalizedName() + ".name") + " <<<"; + } + + public static final String KEY_ACID = "upgrade.acid"; + public static final String KEY_BURN = "upgrade.burn"; + public static final String KEY_CONSUMPTION = "upgrade.consumption"; + public static final String KEY_DELAY = "upgrade.delay"; + public static final String KEY_EFFICIENCY = "upgrade.efficiency"; + public static final String KEY_FORTUNE = "upgrade.fortune"; + public static final String KEY_RANGE = "upgrade.range"; +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java index 386737ab3..5968d685e 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java +++ b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java @@ -33,6 +33,8 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn public long animStartTime = 0; public int redstonePower; public boolean shouldUseBB = false; + private byte skinIndex = 0; + public Set activatedBlocks = new HashSet<>(4); private AudioWrapper audio; @@ -52,9 +54,7 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn } } - if(worldObj.isRemote) { - - } else { + if(!worldObj.isRemote) { BlockPos pos = new BlockPos(this); @@ -140,7 +140,7 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn if(state == 2 && openTicks == 0) { state = 0; } - PacketDispatcher.wrapper.sendToAllAround(new TEDoorAnimationPacket(xCoord, yCoord, zCoord, state, (byte)(shouldUseBB ? 1 : 0)), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 100)); + PacketDispatcher.wrapper.sendToAllAround(new TEDoorAnimationPacket(xCoord, yCoord, zCoord, state, skinIndex, (byte)(shouldUseBB ? 1 : 0)), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 100)); if(redstonePower == -1 && state == 0){ tryToggle(-1); @@ -282,10 +282,22 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn //Ah yes piggy backing on this packet @Override public void setTextureState(byte tex){ - if(tex > 0) - shouldUseBB = true; - else - shouldUseBB = false; + shouldUseBB = tex > 0; + } + + public int getSkinIndex() { + return skinIndex; + } + + @Override + public boolean setSkinIndex(byte skinIndex) { + if(!getDoorType().hasSkins()) + return false; + if(getDoorType().getSkinCount() < skinIndex) { + return false; + } + this.skinIndex = skinIndex; + return true; } @Override @@ -305,6 +317,7 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn this.animStartTime = tag.getInteger("animStartTime"); this.redstonePower = tag.getInteger("redstoned"); this.shouldUseBB = tag.getBoolean("shouldUseBB"); + this.skinIndex = tag.getByte("skin"); NBTTagCompound activatedBlocks = tag.getCompoundTag("activatedBlocks"); this.activatedBlocks.clear(); for(int i = 0; i < activatedBlocks.func_150296_c().size()/3; i ++){ @@ -322,6 +335,8 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn tag.setLong("animStartTime", animStartTime); tag.setInteger("redstoned", redstonePower); tag.setBoolean("shouldUseBB", shouldUseBB); + if(getDoorType().hasSkins()) + tag.setByte("skin", skinIndex); NBTTagCompound activatedBlocks = new NBTTagCompound(); int i = 0; for(BlockPos p : this.activatedBlocks){ diff --git a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java index baec2d8d4..f2ab912aa 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java @@ -1,5 +1,7 @@ package com.hbm.tileentity; +import com.hbm.sound.AudioWrapper; + import api.hbm.energy.ILoadedTile; import net.minecraft.tileentity.TileEntity; @@ -17,4 +19,13 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile { super.onChunkUnload(); this.isLoaded = false; } + + public AudioWrapper createAudioLoop() { return null; } + + public AudioWrapper rebootAudio(AudioWrapper wrapper) { + wrapper.stopSound(); + AudioWrapper audio = createAudioLoop(); + audio.startSound(); + return audio; + } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index 5c5c26d5d..bf1318f0f 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -2,11 +2,12 @@ package com.hbm.tileentity; import com.hbm.blocks.ModBlocks; import com.hbm.packet.AuxGaugePacket; +import com.hbm.packet.BufPacket; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.sound.AudioWrapper; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; @@ -15,14 +16,14 @@ import net.minecraft.nbt.NBTTagList; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidTank; -public abstract class TileEntityMachineBase extends TileEntityLoadedBase implements ISidedInventory, INBTPacketReceiver { +public abstract class TileEntityMachineBase extends TileEntityLoadedBase implements ISidedInventory, INBTPacketReceiver, IBufPacketReceiver { public ItemStack slots[]; private String customName; - public TileEntityMachineBase(int scount) { - slots = new ItemStack[scount]; + public TileEntityMachineBase(int slotCount) { + slots = new ItemStack[slotCount]; } /** The "chunks is modified, pls don't forget to save me" effect of markDirty, minus the block updates */ @@ -84,11 +85,10 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme @Override public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=128; + } else { + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128; } } @@ -98,23 +98,22 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme public void closeInventory() {} @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { + public boolean isItemValidForSlot(int slot, ItemStack itemStack) { return false; } @Override public ItemStack decrStackSize(int slot, int amount) { - if(slots[slot] != null) - { - if(slots[slot].stackSize <= amount) - { + if(slots[slot] != null) { + + if(slots[slot].stackSize <= amount) { ItemStack itemStack = slots[slot]; slots[slot] = null; return itemStack; } + ItemStack itemStack1 = slots[slot].splitStack(amount); - if (slots[slot].stackSize == 0) - { + if(slots[slot].stackSize == 0) { slots[slot] = null; } @@ -125,17 +124,17 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme } @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); + public boolean canInsertItem(int slot, ItemStack itemStack, int side) { + return this.isItemValidForSlot(slot, itemStack); } @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { + public boolean canExtractItem(int slot, ItemStack itemStack, int side) { return false; } @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + public int[] getAccessibleSlotsFromSide(int side) { return new int[] { }; } @@ -150,23 +149,23 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme @Override public abstract void updateEntity(); - @Deprecated - public void updateGauge(int val, int id, int range) { - - if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, val, id), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + @Deprecated public void updateGauge(int val, int id, int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, val, id), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + @Deprecated public void processGauge(int val, int id) { } + + @Deprecated public void networkPack(NBTTagCompound nbt, int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + @Deprecated public void networkUnpack(NBTTagCompound nbt) { } + + /** Sends a sync packet that uses ByteBuf for efficient information-cramming */ + public void networkPackNT(int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); } - @Deprecated - public void processGauge(int val, int id) { } - - public void networkPack(NBTTagCompound nbt, int range) { - - if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - - public void networkUnpack(NBTTagCompound nbt) { } + @Override public void serialize(ByteBuf buf) { } + @Override public void deserialize(ByteBuf buf) { } @Deprecated public void handleButtonPacket(int value, int meta) { } @@ -222,13 +221,4 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme return Math.max(volume, 0); } - - public AudioWrapper createAudioLoop() { return null; } - - public AudioWrapper rebootAudio(AudioWrapper wrapper) { - wrapper.stopSound(); - AudioWrapper audio = createAudioLoop(); - audio.startSound(); - return audio; - } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachinePolluting.java b/src/main/java/com/hbm/tileentity/TileEntityMachinePolluting.java new file mode 100644 index 000000000..ffba5d8a1 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/TileEntityMachinePolluting.java @@ -0,0 +1,67 @@ +package com.hbm.tileentity; + +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; + +import api.hbm.fluid.IFluidUser; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.ForgeDirection; + +public abstract class TileEntityMachinePolluting extends TileEntityMachineBase implements IFluidUser { + + public FluidTank smoke; + public FluidTank smoke_leaded; + public FluidTank smoke_poison; + + public TileEntityMachinePolluting(int scount, int buffer) { + super(scount); + smoke = new FluidTank(Fluids.SMOKE, buffer); + smoke_leaded = new FluidTank(Fluids.SMOKE_LEADED, buffer); + smoke_poison = new FluidTank(Fluids.SMOKE_POISON, buffer); + } + + public void pollute(PollutionType type, float amount) { + FluidTank tank = type == PollutionType.SOOT ? smoke : type == PollutionType.HEAVYMETAL ? smoke_leaded : smoke_poison; + + int fluidAmount = (int) Math.ceil(amount * 100); + tank.setFill(tank.getFill() + fluidAmount); + + if(tank.getFill() > tank.getMaxFill()) { + int overflow = tank.getFill() - tank.getMaxFill(); + tank.setFill(tank.getMaxFill()); + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, type, overflow / 100F); + + if(worldObj.rand.nextInt(3) == 0) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "random.fizz", 0.1F, 1.5F); + } + } + + public void sendSmoke(int x, int y, int z, ForgeDirection dir) { + if(this.smoke.getFill() > 0) this.sendFluid(smoke, worldObj, x, y, z, dir); + if(this.smoke_leaded.getFill() > 0) this.sendFluid(smoke_leaded, worldObj, x, y, z, dir); + if(this.smoke_poison.getFill() > 0) this.sendFluid(smoke_poison, worldObj, x, y, z, dir); + } + + public FluidTank[] getSmokeTanks() { + return new FluidTank[] {smoke, smoke_leaded, smoke_poison}; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + smoke.readFromNBT(nbt, "smoke0"); + smoke_leaded.readFromNBT(nbt, "smoke1"); + smoke_poison.readFromNBT(nbt, "smoke2"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + smoke.writeToNBT(nbt, "smoke0"); + smoke_leaded.writeToNBT(nbt, "smoke1"); + smoke_poison.writeToNBT(nbt, "smoke2"); + } +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java b/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java index 182e1f1bc..36a123851 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java @@ -3,16 +3,27 @@ package com.hbm.tileentity; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IProxyController; import com.hbm.util.Compat; +import com.hbm.util.fauxpointtwelve.BlockPos; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; public class TileEntityProxyBase extends TileEntityLoadedBase { + + public BlockPos cachedPosition; public boolean canUpdate() { return false; } public TileEntity getTE() { + + if(cachedPosition != null) { + TileEntity te = Compat.getTileStandard(worldObj, cachedPosition.getX(), cachedPosition.getY(), cachedPosition.getZ()); + if(te != null && !(te instanceof TileEntityProxyBase)) return te; + cachedPosition = null; + this.markDirty(); + } if(this.getBlockType() instanceof BlockDummyable) { @@ -23,7 +34,7 @@ public class TileEntityProxyBase extends TileEntityLoadedBase { if(pos != null) { TileEntity te = Compat.getTileStandard(worldObj, pos[0], pos[1], pos[2]); - if(te != null && te != this) return te; + if(te != null && !(te instanceof TileEntityProxyBase)) return te; } } @@ -31,9 +42,28 @@ public class TileEntityProxyBase extends TileEntityLoadedBase { IProxyController controller = (IProxyController) this.getBlockType(); TileEntity tile = controller.getCore(worldObj, xCoord, yCoord, zCoord); - if(tile != null && tile != this) return tile; + if(tile != null && !(tile instanceof TileEntityProxyBase)) return tile; } return null; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + if(nbt.getBoolean("hasPos")) cachedPosition = new BlockPos(nbt.getInteger("pX"), nbt.getInteger("pY"), nbt.getInteger("pZ")); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + if(this.cachedPosition != null) { + nbt.setBoolean("hasPos", true); + nbt.setInteger("pX", this.cachedPosition.getX()); + nbt.setInteger("pY", this.cachedPosition.getY()); + nbt.setInteger("pZ", this.cachedPosition.getZ()); + } + } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index 4a1786e53..eb4a603e0 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -217,7 +217,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return ((IEnergyConnector)getTile()).canConnect(dir); } - return false; + return true; } @Override @@ -361,6 +361,9 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return false; if(getTile() instanceof ISidedInventory) { + + if(getTile() instanceof IConditionalInvAccess) return ((IConditionalInvAccess) getTile()).isItemValidForSlot(xCoord, yCoord, zCoord, slot, stack); + return ((ISidedInventory)getTile()).isItemValidForSlot(slot, stack); } @@ -374,6 +377,9 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return new int[0]; if(getTile() instanceof ISidedInventory) { + + if(getTile() instanceof IConditionalInvAccess) return ((IConditionalInvAccess) getTile()).getAccessibleSlotsFromSide(xCoord, yCoord, zCoord, side); + return ((ISidedInventory)getTile()).getAccessibleSlotsFromSide(side); } @@ -387,6 +393,9 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return false; if(getTile() instanceof ISidedInventory) { + + if(getTile() instanceof IConditionalInvAccess) return ((IConditionalInvAccess) getTile()).canInsertItem(xCoord, yCoord, zCoord, i, stack, j); + return ((ISidedInventory)getTile()).canInsertItem(i, stack, j); } @@ -400,6 +409,9 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return false; if(getTile() instanceof ISidedInventory) { + + if(getTile() instanceof IConditionalInvAccess) return ((IConditionalInvAccess) getTile()).canExtractItem(xCoord, yCoord, zCoord, i, stack, j); + return ((ISidedInventory)getTile()).canExtractItem(i, stack, j); } @@ -427,25 +439,25 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy } @Override - public long transferFluid(FluidType type, long fluid) { + public long transferFluid(FluidType type, int pressure, long fluid) { if(!this.fluid) return fluid; if(getTile() instanceof IFluidConnector) { - return ((IFluidConnector)getTile()).transferFluid(type, fluid); + return ((IFluidConnector)getTile()).transferFluid(type, pressure, fluid); } return fluid; } @Override - public long getDemand(FluidType type) { + public long getDemand(FluidType type, int pressure) { if(!this.fluid) return 0; if(getTile() instanceof IFluidConnector) { - return ((IFluidConnector)getTile()).getDemand(type); + return ((IFluidConnector)getTile()).getDemand(type, pressure); } return 0; } @@ -459,7 +471,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy if(getTile() instanceof IFluidConnector) { return ((IFluidConnector)getTile()).canConnect(type, dir); } - return false; + return true; } @Override diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyInventory.java b/src/main/java/com/hbm/tileentity/TileEntityProxyInventory.java index 9e348c0b4..ce4208ccc 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyInventory.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyInventory.java @@ -5,6 +5,7 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +@Deprecated public class TileEntityProxyInventory extends TileEntityProxyBase implements ISidedInventory { @Override diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 4426db9ed..0161679ba 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -7,13 +7,19 @@ import java.util.List; import com.hbm.blocks.bomb.BlockVolcano.TileEntityVolcanoCore; import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre; import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; +import com.hbm.blocks.generic.BlockDynamicSlag.TileEntitySlag; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; +import com.hbm.blocks.generic.BlockGlyphidSpawner.TileEntityGlpyhidSpawner; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; +import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; +import com.hbm.blocks.machine.MachineCapacitor.TileEntityCapacitor; import com.hbm.blocks.machine.MachineFan.TileEntityFan; +import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; +import com.hbm.blocks.network.BlockCableGauge.TileEntityCableGauge; import com.hbm.blocks.network.BlockCablePaintable.TileEntityCablePaintable; import com.hbm.blocks.network.CableDiode.TileEntityDiode; import com.hbm.blocks.network.FluidDuctGauge.TileEntityPipeGauge; @@ -59,7 +65,9 @@ public class TileMappings { put(TileEntityDecoPoleTop.class, "tileentity_poletop"); put(TileEntityDecoPoleSatelliteReceiver.class, "tileentity_satellitereceicer"); put(TileEntityMachineBattery.class, "tileentity_battery"); + put(TileEntityCapacitor.class, "tileentity_capacitor"); put(TileEntityMachineCoal.class, "tileentity_coal"); + put(TileEntityMachineWoodBurner.class, "tileentity_wood_burner"); put(TileEntityRedBarrel.class, "tileentity_barrel"); put(TileEntityYellowBarrel.class, "tileentity_nukebarrel"); put(TileEntityLaunchPad.class, "tileentity_launch1"); @@ -82,10 +90,7 @@ public class TileMappings { put(TileEntityPartEmitter.class, "tileentity_partemitter"); put(TileEntityDummy.class, "tileentity_dummy"); put(TileEntityMachineCyclotron.class, "tileentity_cyclotron"); - put(TileEntityOilDuct.class, "tileentity_oil_duct"); - put(TileEntityOilDuctSolid.class, "tileentity_oil_duct_solid"); - put(TileEntityGasDuct.class, "tileentity_gas_duct"); - put(TileEntityGasDuctSolid.class, "tileentity_gas_duct_solid"); + put(TileEntityMachineExposureChamber.class, "tileentity_exposure_chamber"); put(TileEntityMachineRTG.class, "tileentity_machine_rtg"); put(TileEntityStructureMarker.class, "tileentity_structure_marker"); put(TileEntityMachineMiningDrill.class, "tileentity_mining_drill"); @@ -95,6 +100,7 @@ public class TileMappings { put(TileEntityMachineFluidTank.class, "tileentity_fluid_tank"); put(TileEntityMachineTurbofan.class, "tileentity_machine_turbofan"); put(TileEntityMachineTurbineGas.class, "tileentity_machine_gasturbine"); + put(TileEntityCrateTemplate.class, "tileentity_crate_template"); put(TileEntityCrateIron.class, "tileentity_crate_iron"); put(TileEntityCrateSteel.class, "tileentity_crate_steel"); put(TileEntityCrateDesh.class, "tileentity_crate_desh"); @@ -107,7 +113,8 @@ public class TileMappings { put(TileEntityMachineSPP.class, "tileentity_spp"); put(TileEntityMachineRadGen.class, "tileentity_radgen"); put(TileEntityMachineTransformer.class, "tileentity_transformer"); - put(TileEntityMachineRadar.class, "tileentity_radar"); + put(TileEntityMachineRadarNT.class, "tileentity_radar"); + put(TileEntityMachineRadarScreen.class, "tileentity_radar_screen"); put(TileEntityBroadcaster.class, "tileentity_pink_cloud_broadcaster"); put(TileEntityMachineSeleniumEngine.class, "tileentity_selenium_engine"); put(TileEntityMachineSatLinker.class, "tileentity_satlinker"); @@ -137,6 +144,7 @@ public class TileMappings { put(TileEntityDecon.class, "tileentity_decon"); put(TileEntityMachineSatDock.class, "tileentity_miner_dock"); put(TileEntityMachineEPress.class, "tileentity_electric_press"); + put(TileEntityConveyorPress.class, "tileentity_conveyor_press"); put(TileEntityCoreEmitter.class, "tileentity_v0_emitter"); put(TileEntityCoreReceiver.class, "tileentity_v0_receiver"); put(TileEntityCoreInjector.class, "tileentity_v0_injector"); @@ -180,15 +188,22 @@ public class TileMappings { put(TileEntitySILEX.class, "tileentity_silex"); put(TileEntityFEL.class, "tileentity_fel"); put(TileEntityDemonLamp.class, "tileentity_demonlamp"); + put(TileEntityLantern.class, "tileentity_lantern_ordinary"); + put(TileEntityLanternBehemoth.class, "tileentity_lantern_behemoth"); put(TileEntityStorageDrum.class, "tileentity_waste_storage_drum"); put(TileEntityDeaerator.class, "tileentity_deaerator"); put(TileEntityCableBaseNT.class, "tileentity_ohgod"); // what? put(TileEntityCablePaintable.class, "tileentity_cable_paintable"); + put(TileEntityCableGauge.class, "tileentity_cable_gauge"); put(TileEntityPipeBaseNT.class, "tileentity_pipe_base"); put(TileEntityPipePaintable.class, "tileentity_pipe_paintable"); put(TileEntityPipeGauge.class, "tileentity_pipe_gauge"); + put(TileEntityPipeExhaust.class, "tileentity_pipe_exhaust"); + put(TileEntityFluidValve.class, "tileentity_pipe_valve"); put(TileEntityMachineBAT9000.class, "tileentity_bat9000"); put(TileEntityMachineOrbus.class, "tileentity_orbus"); + put(TileEntityGlpyhidSpawner.class, "tileentity_glyphid_spawner"); + put(TileEntityCustomMachine.class, "tileentity_custom_machine"); put(TileEntityLoot.class, "tileentity_ntm_loot"); put(TileEntityBobble.class, "tileentity_ntm_bobblehead"); @@ -208,6 +223,9 @@ public class TileMappings { put(TileEntityRandomOre.class, "tileentity_mother_of_all_ores"); put(TileEntityBedrockOre.class, "tileentity_bedrock_ore"); + + put(TileEntityBlockPWR.class, "tileentity_block_pwr"); + put(TileEntityPWRController.class, "tileentity_pwr_controller"); putNetwork(); putBombs(); @@ -215,6 +233,9 @@ public class TileMappings { putMachines(); putPile(); putRBMK(); + + TileEntityMachineRadarNT.registerEntityClasses(); + TileEntityMachineRadarNT.registerConverters(); } private static void putBombs() { @@ -251,6 +272,7 @@ public class TileMappings { private static void putMachines() { put(TileEntityHeaterFirebox.class, "tileentity_firebox"); put(TileEntityHeaterOven.class, "tileentity_heating_oven"); + put(TileEntityAshpit.class, "tileentity_ashpit"); put(TileEntityHeaterOilburner.class, "tileentity_oilburner"); put(TileEntityHeaterElectric.class, "tileentity_electric_heater"); put(TileEntityHeaterHeatex.class, "tileentity_heater_heatex"); @@ -261,12 +283,18 @@ public class TileMappings { put(TileEntitySawmill.class, "tileentity_sawmill"); put(TileEntityCrucible.class, "tileentity_crucible"); put(TileEntityHeatBoiler.class, "tileentity_heat_boiler"); + put(TileEntityHeatBoilerIndustrial.class, "tileentity_heat_boiler_industrial"); + put(TileEntityMachinePumpSteam.class, "tileentity_steam_pump"); + put(TileEntityMachinePumpElectric.class, "tileentity_electric_pump"); + put(TileEntityFoundryMold.class, "tileentity_foundry_mold"); put(TileEntityFoundryBasin.class, "tileentity_foundry_basin"); put(TileEntityFoundryChannel.class, "tileentity_foundry_channel"); put(TileEntityFoundryTank.class, "tileentity_foundry_tank"); put(TileEntityFoundryOutlet.class, "tileentity_foundry_outlet"); + put(TileEntityFoundrySlagtap.class, "tileentity_foundry_slagtap"); + put(TileEntitySlag.class, "tileentity_foundry_slag"); put(TileEntityMachineAutocrafter.class, "tileentity_autocrafter"); put(TileEntityDiFurnaceRTG.class, "tileentity_rtg_difurnace"); @@ -277,12 +305,15 @@ public class TileMappings { put(TileEntityCondenser.class, "tileentity_condenser"); put(TileEntityTowerSmall.class, "tileentity_cooling_tower_small"); put(TileEntityTowerLarge.class, "tileentity_cooling_tower_large"); + put(TileEntityCondenserPowered.class, "tileentity_condenser_powered"); put(TileEntityDeuteriumExtractor.class, "tileentity_deuterium_extractor"); put(TileEntityDeuteriumTower.class, "tileentity_deuterium_tower"); put(TileEntityMachineLiquefactor.class, "tileentity_liquefactor"); put(TileEntityMachineSolidifier.class, "tileentity_solidifier"); + put(TileEntityMachineCompressor.class, "tileentity_compressor"); put(TileEntityElectrolyser.class, "tileentity_electrolyser"); put(TileEntityMachineMixer.class, "tileentity_mixer"); + put(TileEntityMachineArcWelder.class, "tileentity_arc_welder"); put(TileEntitySteamEngine.class, "tileentity_steam_engine"); put(TileEntityMachineTurbine.class, "tileentity_turbine"); @@ -307,6 +338,8 @@ public class TileMappings { put(TileEntityMachineCatalyticCracker.class, "tileentity_catalytic_cracker"); put(TileEntityMachineCatalyticReformer.class, "tileentity_catalytic_reformer"); put(TileEntityMachineCoker.class, "tileentity_coker"); + put(TileEntityChimneyBrick.class, "tileentity_chimney_brick"); + put(TileEntityChimneyIndustrial.class, "tileentity_chimney_industrial"); put(TileEntityReactorZirnox.class, "tileentity_zirnox"); put(TileEntityZirnoxDestroyed.class, "tileentity_zirnox_destroyed"); @@ -360,9 +393,19 @@ public class TileMappings { put(TileEntityCraneRouter.class, "tileentity_router"); put(TileEntityCraneSplitter.class, "tileentity_splitter"); put(TileEntityFan.class, "tileentity_fan"); + put(TileEntityPistonInserter.class, "tileentity_piston_inserter"); put(TileEntityRadioTorchSender.class, "tileentity_rtty_sender"); put(TileEntityRadioTorchReceiver.class, "tileentity_rtty_rec"); + put(TileEntityRadioTorchCounter.class, "tileentity_rtty_counter"); + put(TileEntityRadioTelex.class, "tileentity_rtty_telex"); + + put(TileEntityDroneWaypoint.class, "tileentity_drone_waypoint"); + put(TileEntityDroneCrate.class, "tileentity_drone_crate"); + put(TileEntityDroneWaypointRequest.class, "tileentity_drone_waypoint_request"); + put(TileEntityDroneDock.class, "tileentity_drone_dock"); + put(TileEntityDroneProvider.class, "tileentity_drone_provider"); + put(TileEntityDroneRequester.class, "tileentity_drone_requester"); } private static void put(Class clazz, String... names) { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java index 24a739811..6dd6a97be 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java @@ -23,6 +23,7 @@ import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEMissileMultipartPacket; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IRadarCommandReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; @@ -47,7 +48,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCompactLauncher extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IEnergyUser, IFluidStandardReceiver, IGUIProvider { +public class TileEntityCompactLauncher extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IEnergyUser, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver { private ItemStack slots[]; @@ -207,7 +208,7 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I for(int z = -1; z <= 1; z++) { if(worldObj.isBlockIndirectlyGettingPowered(xCoord + x, yCoord, zCoord + z) && canLaunch()) { - launch(); + launchFromDesignator(); break outer; } } @@ -268,14 +269,31 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I return false; } - - public void launch() { - worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.missileTakeOff", 10.0F, 1.0F); + @Override + public boolean sendCommandEntity(Entity target) { + return sendCommandPosition((int) Math.floor(target.posX), yCoord, (int) Math.floor(target.posX)); + } + + @Override + public boolean sendCommandPosition(int x, int y, int z) { + if(!canLaunch()) return false; + this.launchTo(x, z); + return true; + } + + public void launchFromDesignator() { int tX = slots[1].stackTagCompound.getInteger("xCoord"); int tZ = slots[1].stackTagCompound.getInteger("zCoord"); + this.launchTo(tX, tZ); + } + + public void launchTo(int tX, int tZ) { + + worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.missileTakeOff", 10.0F, 1.0F); + ItemMissile chip = (ItemMissile) Item.getItemById(ItemCustomMissile.readFromNBT(slots[0], "chip")); float c = (Float)chip.attributes[0]; float f = 1.0F; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index 9e7084101..676409778 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -1,20 +1,35 @@ package com.hbm.tileentity.bomb; +import java.util.HashMap; + +import org.apache.logging.log4j.Level; + import com.hbm.blocks.ModBlocks; import com.hbm.blocks.bomb.LaunchPad; +import com.hbm.config.GeneralConfig; +import com.hbm.entity.missile.EntityCarrier; +import com.hbm.entity.missile.EntityMissileAntiBallistic; +import com.hbm.entity.missile.EntityMissileBaseNT; +import com.hbm.entity.missile.EntityMissileShuttle; +import com.hbm.entity.missile.EntityMissileTier0.*; +import com.hbm.entity.missile.EntityMissileTier1.*; +import com.hbm.entity.missile.EntityMissileTier2.*; +import com.hbm.entity.missile.EntityMissileTier3.*; +import com.hbm.entity.missile.EntityMissileTier4.*; +import com.hbm.interfaces.IBomb.BombReturnCode; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerLaunchPadTier1; import com.hbm.inventory.gui.GUILaunchPadTier1; +import com.hbm.items.ModItems; import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEMissilePacket; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.tileentity.IRadarCommandReceiver; +import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyUser; import api.hbm.item.IDesignatorItem; import cpw.mods.fml.common.Optional; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import li.cil.oc.api.machine.Arguments; @@ -22,183 +37,73 @@ 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.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; 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 TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, SimpleComponent, IGUIProvider { +public class TileEntityLaunchPad extends TileEntityMachineBase implements IEnergyUser, SimpleComponent, IGUIProvider, IRadarCommandReceiver { + + /** Automatic instantiation of generic missiles, i.e. everything that both extends EntityMissileBaseNT and needs a designator */ + public static final HashMap> missiles = new HashMap(); + + public static void registerLaunchables() { - public ItemStack slots[]; + //Tier 0 + missiles.put(new ComparableStack(ModItems.missile_micro), EntityMissileMicro.class); + missiles.put(new ComparableStack(ModItems.missile_schrabidium), EntityMissileSchrabidium.class); + missiles.put(new ComparableStack(ModItems.missile_bhole), EntityMissileBHole.class); + missiles.put(new ComparableStack(ModItems.missile_taint), EntityMissileTaint.class); + missiles.put(new ComparableStack(ModItems.missile_emp), EntityMissileEMP.class); + //Tier 1 + missiles.put(new ComparableStack(ModItems.missile_generic), EntityMissileGeneric.class); + missiles.put(new ComparableStack(ModItems.missile_decoy), EntityMissileDecoy.class); + missiles.put(new ComparableStack(ModItems.missile_incendiary), EntityMissileIncendiary.class); + missiles.put(new ComparableStack(ModItems.missile_cluster), EntityMissileCluster.class); + missiles.put(new ComparableStack(ModItems.missile_buster), EntityMissileBunkerBuster.class); + //Tier 2 + missiles.put(new ComparableStack(ModItems.missile_strong), EntityMissileStrong.class); + missiles.put(new ComparableStack(ModItems.missile_incendiary_strong), EntityMissileIncendiaryStrong.class); + missiles.put(new ComparableStack(ModItems.missile_cluster_strong), EntityMissileClusterStrong.class); + missiles.put(new ComparableStack(ModItems.missile_buster_strong), EntityMissileBusterStrong.class); + missiles.put(new ComparableStack(ModItems.missile_emp_strong), EntityMissileEMPStrong.class); + //Tier 3 + missiles.put(new ComparableStack(ModItems.missile_burst), EntityMissileBurst.class); + missiles.put(new ComparableStack(ModItems.missile_inferno), EntityMissileInferno.class); + missiles.put(new ComparableStack(ModItems.missile_rain), EntityMissileRain.class); + missiles.put(new ComparableStack(ModItems.missile_drill), EntityMissileDrill.class); + missiles.put(new ComparableStack(ModItems.missile_endo), EntityMissileEndo.class); + missiles.put(new ComparableStack(ModItems.missile_exo), EntityMissileExo.class); + missiles.put(new ComparableStack(ModItems.missile_shuttle), EntityMissileShuttle.class); + //Tier 4 + missiles.put(new ComparableStack(ModItems.missile_nuclear), EntityMissileNuclear.class); + missiles.put(new ComparableStack(ModItems.missile_nuclear_cluster), EntityMissileMirv.class); + missiles.put(new ComparableStack(ModItems.missile_volcano), EntityMissileVolcano.class); + } + + public ItemStack toRender; public long power; public final long maxPower = 100000; - private static final int[] slots_top = new int[] {0}; - private static final int[] slots_bottom = new int[] { 0, 1, 2}; + private static final int[] slots_bottom = new int[] {0, 1, 2}; private static final int[] slots_side = new int[] {0}; - public int state = 0; - private String customName; public TileEntityLaunchPad() { - slots = new ItemStack[3]; + super(3); } @Override - public int getSizeInventory() { - return slots.length; - } - - @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } else { - return null; - } - } - - @Override - public void setInventorySlotContents(int i, ItemStack itemStack) { - slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.launchPad"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } - - @Override - public int getInventoryStackLimit() { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { - return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; - } - } - - //You scrubs aren't needed for anything (right now) - @Override - public void openInventory() {} - @Override - public void closeInventory() {} - - @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { - return true; - } - - @Override - public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { - slots[i] = null; - } - - return itemStack1; - } else { - return null; - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); - power = nbt.getLong("power"); - slots = new ItemStack[getSizeInventory()]; - - for(int i = 0; i < list.tagCount(); i++) - { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - NBTTagList list = new NBTTagList(); - nbt.setLong("power", power); - - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - nbt.setTag("items", list); - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) - { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); - } - - @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); - } - - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return false; - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; + public String getName() { + return "container.launchPad"; } @Override @@ -209,8 +114,24 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI power = Library.chargeTEFromItems(slots, 2, power, maxPower); this.updateConnections(); - PacketDispatcher.wrapper.sendToAllAround(new TEMissilePacket(xCoord, yCoord, zCoord, slots[0]), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250)); - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + if(slots[0] != null) { + data.setInteger("id", Item.getIdFromItem(slots[0].getItem())); + data.setShort("meta", (short) slots[0].getItemDamage()); + } + networkPack(data, 250); + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + + if(nbt.hasKey("id")) { + this.toRender = new ItemStack(Item.getItemById(nbt.getInteger("id")), 1, nbt.getShort("meta")); + } else { + this.toRender = null; } } @@ -221,6 +142,34 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI this.trySubscribe(worldObj, xCoord, yCoord, zCoord - 1, Library.NEG_Z); this.trySubscribe(worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + return true; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + power = nbt.getLong("power"); + + if(slots == null || slots.length != 3) slots = new ItemStack[3]; + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return side == 0 ? slots_bottom : (side == 1 ? new int[0] : slots_side); + } + + public long getPowerScaled(long i) { + return (power * i) / maxPower; + } @Override public AxisAlignedBB getRenderBoundingBox() { @@ -230,13 +179,11 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI @Override public void setPower(long i) { power = i; - } @Override public long getPower() { return power; - } @Override @@ -246,16 +193,12 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI @Override public long transferPower(long power) { - this.power += power; - if(this.power > this.getMaxPower()) { - long overshoot = this.power - this.getMaxPower(); this.power = this.getMaxPower(); return overshoot; } - return 0; } @@ -266,60 +209,172 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI @Override @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { + public double getMaxRenderDistanceSquared() { return 65536.0D; } + public boolean hasPower() { + return this.power >= 75_000; + } + + @Override + public boolean sendCommandPosition(int x, int y, int z) { + return this.launchToCoordinate(x, z) == BombReturnCode.LAUNCHED; + } + + @Override + public boolean sendCommandEntity(Entity target) { + return this.launchToEntity(target) == BombReturnCode.LAUNCHED; + } + + public BombReturnCode launchFromDesignator() { + if(slots[0] == null) return BombReturnCode.ERROR_MISSING_COMPONENT; + + boolean needsDesignator = missiles.containsKey(new ComparableStack(slots[0]).makeSingular()); + + int targetX = 0; + int targetZ = 0; + + if(slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + + IDesignatorItem designator = (IDesignatorItem) slots[1].getItem(); + + if(!designator.isReady(worldObj, slots[1], xCoord, yCoord, zCoord) && needsDesignator) return BombReturnCode.ERROR_MISSING_COMPONENT; + + Vec3 coords = designator.getCoords(worldObj, slots[1], xCoord, yCoord, zCoord); + targetX = (int) Math.floor(coords.xCoord); + targetZ = (int) Math.floor(coords.zCoord); + + } else { + if(needsDesignator) return BombReturnCode.ERROR_MISSING_COMPONENT; + } + + return this.launchToCoordinate(targetX, targetZ); + } + + public BombReturnCode launchToEntity(Entity entity) { + if(!hasPower()) return BombReturnCode.ERROR_MISSING_COMPONENT; + Entity e = instantiateMissile((int) Math.floor(entity.posX), (int) Math.floor(entity.posZ)); + if(e != null) { + + if(e instanceof EntityMissileAntiBallistic) { + EntityMissileAntiBallistic abm = (EntityMissileAntiBallistic) e; + abm.tracking = entity; + } + + finalizeLaunch(e); + return BombReturnCode.LAUNCHED; + } + return BombReturnCode.ERROR_MISSING_COMPONENT; + } + + public BombReturnCode launchToCoordinate(int targetX, int targetZ) { + if(!hasPower()) return BombReturnCode.ERROR_MISSING_COMPONENT; + Entity e = instantiateMissile(targetX, targetZ); + if(e != null) { + finalizeLaunch(e); + return BombReturnCode.LAUNCHED; + } + return BombReturnCode.ERROR_MISSING_COMPONENT; + } + + public Entity instantiateMissile(int targetX, int targetZ) { + + if(slots[0] == null) return null; + + if(slots[0].getItem() == ModItems.missile_carrier) { + EntityCarrier missile = new EntityCarrier(worldObj); + missile.posX = xCoord + 0.5F; + missile.posY = yCoord + 1F; + missile.posZ = zCoord + 0.5F; + if(slots[1] != null) { + missile.setPayload(slots[1]); + this.slots[1] = null; + } + worldObj.playSoundEffect(xCoord + 0.5, yCoord, zCoord + 0.5, "hbm:entity.rocketTakeoff", 100.0F, 1.0F); + return missile; + } + + Class clazz = this.missiles.get(new ComparableStack(slots[0]).makeSingular()); + + if(clazz != null) { + try { + EntityMissileBaseNT missile = clazz.getConstructor(World.class, float.class, float.class, float.class, int.class, int.class).newInstance(worldObj, xCoord + 0.5F, yCoord + 2F, zCoord + 0.5F, targetX, targetZ); + worldObj.playSoundEffect(xCoord + 0.5, yCoord, zCoord + 0.5, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); + if(GeneralConfig.enableExtendedLogging) MainRegistry.logger.log(Level.INFO, "[MISSILE] Tried to launch missile at " + xCoord + " / " + yCoord + " / " + zCoord + " to " + xCoord + " / " + zCoord + "!"); + return missile; + } catch(Exception e) { } + } + + if(slots[0].getItem() == ModItems.missile_anti_ballistic) { + EntityMissileAntiBallistic missile = new EntityMissileAntiBallistic(worldObj); + missile.posX = xCoord + 0.5F; + missile.posY = yCoord + 0.5F; + missile.posZ = zCoord + 0.5F; + worldObj.playSoundEffect(xCoord + 0.5, yCoord, zCoord + 0.5, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); + return missile; + } + + return null; + } + + public void finalizeLaunch(Entity missile) { + this.power -= 75_000; + worldObj.spawnEntityInWorld(missile); + this.decrStackSize(0, 1); + } + // do some opencomputer stuff @Override public String getComponentName() { return "launch_pad"; } - + @Callback @Optional.Method(modid = "OpenComputers") - public Object[] getEnergyStored(Context context, Arguments args) { - return new Object[] {getPower()}; - } - @Callback - @Optional.Method(modid = "OpenComputers") - public Object[] getMaxEnergy(Context context, Arguments args) { - return new Object[] {getMaxPower()}; + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; } @Callback @Optional.Method(modid = "OpenComputers") public Object[] getCoords(Context context, Arguments args) { if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { - int xCoord2 = slots[1].stackTagCompound.getInteger("xCoord"); - int zCoord2 = slots[1].stackTagCompound.getInteger("zCoord"); + int xCoord2; + int zCoord2; + if (slots[1].stackTagCompound != null) { + xCoord2 = slots[1].stackTagCompound.getInteger("xCoord"); + zCoord2 = slots[1].stackTagCompound.getInteger("zCoord"); + } else + return new Object[] {false}; // Not sure if i should have this + /* if(xCoord2 == xCoord && zCoord2 == zCoord) { xCoord2 += 1; } - + */ + return new Object[] {xCoord2, zCoord2}; } - return new Object[] {"Designator not found"}; + return new Object[] {false, "Designator not found"}; } @Callback @Optional.Method(modid = "OpenComputers") public Object[] setCoords(Context context, Arguments args) { if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + slots[1].stackTagCompound = new NBTTagCompound(); slots[1].stackTagCompound.setInteger("xCoord", args.checkInteger(0)); slots[1].stackTagCompound.setInteger("zCoord", args.checkInteger(1)); - - return new Object[] {"Success"}; + + return new Object[] {true}; } - return new Object[] {"Designator not found"}; + return new Object[] {false, "Designator not found"}; } @Callback @Optional.Method(modid = "OpenComputers") public Object[] launch(Context context, Arguments args) { - //worldObj.getBlock(xCoord, yCoord, zCoord).explode(worldObj, xCoord, yCoord, zCoord); ((LaunchPad) ModBlocks.launch_pad).explode(worldObj, xCoord, yCoord, zCoord); return new Object[] {}; } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 71a0d7289..709db4fdb 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -2,6 +2,8 @@ package com.hbm.tileentity.bomb; import java.util.List; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.bomb.LaunchPad; import com.hbm.entity.missile.EntityMissileCustom; import com.hbm.handler.MissileStruct; import com.hbm.interfaces.IFluidAcceptor; @@ -23,27 +25,37 @@ import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEMissileMultipartPacket; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IRadarCommandReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.item.IDesignatorItem; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent, IRadarCommandReceiver { private ItemStack slots[]; @@ -208,7 +220,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide for(int z = -4; z <= 4; z++) { if(worldObj.isBlockIndirectlyGettingPowered(xCoord + x, yCoord, zCoord + z) && canLaunch()) { - launch(); + launchFromDesignator(); break outer; } } @@ -254,15 +266,47 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide return false; } - - public void launch() { - worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.missileTakeOff", 10.0F, 1.0F); + @Override + public boolean sendCommandEntity(Entity target) { + return sendCommandPosition((int) Math.floor(target.posX), yCoord, (int) Math.floor(target.posX)); + } + + @Override + public boolean sendCommandPosition(int x, int y, int z) { + if(!canLaunch()) return false; + this.launchTo(x, z); + return true; + } + + public void launchFromDesignator() { int tX = slots[1].stackTagCompound.getInteger("xCoord"); int tZ = slots[1].stackTagCompound.getInteger("zCoord"); - EntityMissileCustom missile = new EntityMissileCustom(worldObj, xCoord + 0.5F, yCoord + 2.5F, zCoord + 0.5F, tX, tZ, getStruct(slots[0])); + this.launchTo(tX, tZ); + } + + public void launchTo(int tX, int tZ) { + + worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.missileTakeOff", 10.0F, 1.0F); + + ItemMissile chip = (ItemMissile) Item.getItemById(ItemCustomMissile.readFromNBT(slots[0], "chip")); + float c = (Float)chip.attributes[0]; + float f = 1.0F; + + if(getStruct(slots[0]).fins != null) { + ItemMissile fins = (ItemMissile) Item.getItemById(ItemCustomMissile.readFromNBT(slots[0], "stability")); + f = (Float) fins.attributes[0]; + } + + Vec3 target = Vec3.createVectorHelper(xCoord - tX, 0, zCoord - tZ); + target.xCoord *= c * f; + target.zCoord *= c * f; + + target.rotateAroundY(worldObj.rand.nextFloat() * 360); + + EntityMissileCustom missile = new EntityMissileCustom(worldObj, xCoord + 0.5F, yCoord + 2.5F, zCoord + 0.5F, tX + (int)target.xCoord, tZ + (int)target.zCoord, getStruct(slots[0])); worldObj.spawnEntityInWorld(missile); subtractFuel(); @@ -597,6 +641,74 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide return tanks; } + // do some opencomputer stuff + @Override + public String getComponentName() { + return "large_launch_pad"; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getContents(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getName(), tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getName(), solid, maxSolid}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getLaunchInfo(Context context, Arguments args) { + return new Object[] {canLaunch(), isMissileValid(), hasDesignator(), hasFuel()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoords(Context context, Arguments args) { + if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + int xCoord2; + int zCoord2; + if (slots[1].stackTagCompound != null) { + xCoord2 = slots[1].stackTagCompound.getInteger("xCoord"); + zCoord2 = slots[1].stackTagCompound.getInteger("zCoord"); + } else + return new Object[] {false}; + + // Not sure if i should have this + /* + if(xCoord2 == xCoord && zCoord2 == zCoord) { + xCoord2 += 1; + } + */ + + return new Object[] {xCoord2, zCoord2}; + } + return new Object[] {false, "Designator not found"}; + } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] setCoords(Context context, Arguments args) { + if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + slots[1].stackTagCompound = new NBTTagCompound(); + slots[1].stackTagCompound.setInteger("xCoord", args.checkInteger(0)); + slots[1].stackTagCompound.setInteger("zCoord", args.checkInteger(1)); + + return new Object[] {true}; + } + return new Object[] {false, "Designator not found"}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] launch(Context context, Arguments args) { + //worldObj.getBlock(xCoord, yCoord, zCoord).explode(worldObj, xCoord, yCoord, zCoord); + ((LaunchPad) ModBlocks.launch_pad).explode(worldObj, xCoord, yCoord, zCoord); + return new Object[] {}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerLaunchTable(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java index 6403145d4..4044d26df 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java @@ -1,6 +1,6 @@ package com.hbm.tileentity.bomb; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityBalefire; import com.hbm.inventory.container.ContainerNukeFstbmb; import com.hbm.inventory.gui.GUINukeFstbmb; @@ -128,7 +128,7 @@ public class TileEntityNukeBalefire extends TileEntityMachineBase implements IGU bf.posZ = zCoord + 0.5; bf.destructionRange = (int) 250; worldObj.spawnEntityInWorld(bf); - worldObj.spawnEntityInWorld(EntityNukeCloudSmall.statFacBale(worldObj, xCoord + 0.5, yCoord + 5, zCoord + 0.5, 250 * 1.5F, 1000)); + EntityNukeTorex.statFacBale(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 250); } public String getMinutes() { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN45.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN45.java index 19fe5165d..07cd73d6a 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN45.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN45.java @@ -4,7 +4,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.explosion.ExplosionLarge; import com.hbm.inventory.container.ContainerNukeN45; @@ -262,12 +262,7 @@ public class TileEntityNukeN45 extends TileEntity implements ISidedInventory, IG break; case 4: world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, (int)(BombConfig.missileRadius * 0.75F), x + 0.5, y + 0.5, z + 0.5)); - - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, BombConfig.missileRadius * 0.005F * 0.75F); - entity2.posX = x; - entity2.posY = y; - entity2.posZ = z; - world.spawnEntityInWorld(entity2); + EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius * 0.75F); break; } } diff --git a/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuctSimple.java b/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuctSimple.java index 60e93c1fd..9027eca23 100644 --- a/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuctSimple.java +++ b/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuctSimple.java @@ -21,7 +21,6 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityFluidDuctSimple extends TileEntity implements IFluidDuct { - private FluidType lastType = Fluids.NONE; protected FluidType type = Fluids.NONE; public List uoteab = new ArrayList(); diff --git a/src/main/java/com/hbm/tileentity/conductor/TileEntityGasDuct.java b/src/main/java/com/hbm/tileentity/conductor/TileEntityGasDuct.java deleted file mode 100644 index bcc06b8a4..000000000 --- a/src/main/java/com/hbm/tileentity/conductor/TileEntityGasDuct.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.hbm.tileentity.conductor; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids; -import com.hbm.interfaces.IFluidDuct; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.lib.Library; -import com.hbm.tileentity.network.TileEntityPipeBaseNT; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; - -public class TileEntityGasDuct extends TileEntity implements IFluidDuct { - - public ForgeDirection[] connections = new ForgeDirection[6]; - public FluidType type = Fluids.GAS; - public List uoteab = new ArrayList(); - - @Override - public void updateEntity() { - - //this.updateConnections(); - - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.fluid_duct_neo, 1, 3); - - TileEntity tile = worldObj.getTileEntity(xCoord, yCoord, zCoord); - if(tile instanceof TileEntityPipeBaseNT) { - ((TileEntityPipeBaseNT) tile).setType(this.type); - } - } - - public void updateConnections() { - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord + 1, zCoord, type)) - connections[0] = ForgeDirection.UP; - else - connections[0] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord - 1, zCoord, type)) - connections[1] = ForgeDirection.DOWN; - else - connections[1] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord - 1, type)) - connections[2] = ForgeDirection.NORTH; - else - connections[2] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord + 1, yCoord, zCoord, type)) - connections[3] = ForgeDirection.EAST; - else - connections[3] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord + 1, type)) - connections[4] = ForgeDirection.SOUTH; - else - connections[4] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord - 1, yCoord, zCoord, type)) - connections[5] = ForgeDirection.WEST; - else - connections[5] = null; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - type = Fluids.GAS; - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() { - return 65536.0D; - } - - @Override - public FluidType getType() { - return type; - } - - @Override - public boolean setType(FluidType type) { - return false; - } -} diff --git a/src/main/java/com/hbm/tileentity/conductor/TileEntityGasDuctSolid.java b/src/main/java/com/hbm/tileentity/conductor/TileEntityGasDuctSolid.java deleted file mode 100644 index a78c2a6e3..000000000 --- a/src/main/java/com/hbm/tileentity/conductor/TileEntityGasDuctSolid.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.hbm.tileentity.conductor; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids; -import com.hbm.interfaces.IFluidDuct; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.tileentity.network.TileEntityPipeBaseNT; - -import net.minecraft.tileentity.TileEntity; - -public class TileEntityGasDuctSolid extends TileEntity implements IFluidDuct { - - public FluidType type = Fluids.GAS; - public List uoteab = new ArrayList(); - - @Override - public void updateEntity() { - - //if(!worldObj.isRemote) - // PacketDispatcher.wrapper.sendToAll(new TEFluidPipePacket(xCoord, yCoord, zCoord, type)); - - //this.updateConnections(); - - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.fluid_duct_paintable); - - TileEntity tile = worldObj.getTileEntity(xCoord, yCoord, zCoord); - if(tile instanceof TileEntityPipeBaseNT) { - ((TileEntityPipeBaseNT) tile).setType(this.type); - } - } - - @Override - public FluidType getType() { - return type; - } - - @Override - public boolean setType(FluidType type) { - return false; - } -} diff --git a/src/main/java/com/hbm/tileentity/conductor/TileEntityOilDuct.java b/src/main/java/com/hbm/tileentity/conductor/TileEntityOilDuct.java deleted file mode 100644 index 9db606172..000000000 --- a/src/main/java/com/hbm/tileentity/conductor/TileEntityOilDuct.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.hbm.tileentity.conductor; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids; -import com.hbm.interfaces.IFluidDuct; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.lib.Library; -import com.hbm.tileentity.network.TileEntityPipeBaseNT; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; - -public class TileEntityOilDuct extends TileEntity implements IFluidDuct { - - public ForgeDirection[] connections = new ForgeDirection[6]; - public FluidType type = Fluids.OIL; - public List uoteab = new ArrayList(); - - public TileEntityOilDuct() { - - } - - @Override - public void updateEntity() { - - //if(!worldObj.isRemote) - // PacketDispatcher.wrapper.sendToAll(new TEFluidPipePacket(xCoord, yCoord, zCoord, type)); - - //this.updateConnections(); - - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.fluid_duct_neo, 2, 3); - - TileEntity tile = worldObj.getTileEntity(xCoord, yCoord, zCoord); - if(tile instanceof TileEntityPipeBaseNT) { - ((TileEntityPipeBaseNT) tile).setType(this.type); - } - } - - public void updateConnections() { - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord + 1, zCoord, type)) connections[0] = ForgeDirection.UP; - else connections[0] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord - 1, zCoord, type)) connections[1] = ForgeDirection.DOWN; - else connections[1] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord - 1, type)) connections[2] = ForgeDirection.NORTH; - else connections[2] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord + 1, yCoord, zCoord, type)) connections[3] = ForgeDirection.EAST; - else connections[3] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord + 1, type)) connections[4] = ForgeDirection.SOUTH; - else connections[4] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord - 1, yCoord, zCoord, type)) connections[5] = ForgeDirection.WEST; - else connections[5] = null; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - type = Fluids.OIL; - } - - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { - return 65536.0D; - } - - @Override - public FluidType getType() { - return type; - } - - @Override - public boolean setType(FluidType type) { - return false; - } -} diff --git a/src/main/java/com/hbm/tileentity/conductor/TileEntityOilDuctSolid.java b/src/main/java/com/hbm/tileentity/conductor/TileEntityOilDuctSolid.java deleted file mode 100644 index 940494cbc..000000000 --- a/src/main/java/com/hbm/tileentity/conductor/TileEntityOilDuctSolid.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.hbm.tileentity.conductor; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids; -import com.hbm.interfaces.IFluidDuct; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.tileentity.network.TileEntityPipeBaseNT; - -import net.minecraft.tileentity.TileEntity; - -public class TileEntityOilDuctSolid extends TileEntity implements IFluidDuct { - - public FluidType type = Fluids.OIL; - public List uoteab = new ArrayList(); - - @Override - public void updateEntity() { - - //if(!worldObj.isRemote) - // PacketDispatcher.wrapper.sendToAll(new TEFluidPipePacket(xCoord, yCoord, zCoord, type)); - - //this.updateConnections(); - - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.fluid_duct_paintable); - - TileEntity tile = worldObj.getTileEntity(xCoord, yCoord, zCoord); - if(tile instanceof TileEntityPipeBaseNT) { - ((TileEntityPipeBaseNT) tile).setType(this.type); - } - } - - @Override - public FluidType getType() { - return type; - } - - @Override - public boolean setType(FluidType type) { - return false; - } -} diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityLantern.java b/src/main/java/com/hbm/tileentity/deco/TileEntityLantern.java new file mode 100644 index 000000000..65be4a600 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityLantern.java @@ -0,0 +1,53 @@ +package com.hbm.tileentity.deco; + +import java.util.List; + +import com.hbm.entity.mob.EntityGlyphid; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityLantern extends TileEntity { + + @Override + public void updateEntity() { + + if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 20 == 0) { + + List glyphids = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 5.5, zCoord + 0.5, xCoord + 0.5, yCoord + 5.5, zCoord + 0.5).expand(7.5, 7.5, 7.5)); + + for(EntityGlyphid glyphid : glyphids) { + glyphid.addPotionEffect(new PotionEffect(Potion.blindness.id, 100, 0)); + } + } + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord, + yCoord, + zCoord, + xCoord + 1, + yCoord + 6, + zCoord + 1 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java b/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java new file mode 100644 index 000000000..3a4b8a49e --- /dev/null +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java @@ -0,0 +1,152 @@ +package com.hbm.tileentity.deco; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.entity.missile.EntityBobmazon; +import com.hbm.extprop.HbmPlayerProps; +import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemKitCustom; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IRepairable; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +public class TileEntityLanternBehemoth extends TileEntity implements INBTPacketReceiver, IRepairable { + + public boolean isBroken = false; + public int comTimer = -1; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(comTimer == 360) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.hornNearSingle", 10F, 1F); + if(comTimer == 280) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.hornFarSingle", 10000F, 1F); + if(comTimer == 220) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.hornNearDual", 10F, 1F); + if(comTimer == 100) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.hornFarDual", 10000F, 1F); + + if(comTimer == 0) { + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord - 10, yCoord - 10, zCoord - 10, xCoord + 11, yCoord + 11, zCoord + 11)); + EntityPlayer first = players.isEmpty() ? null : players.get(0); + boolean bonus = first == null ? false : (HbmPlayerProps.getData(first).reputation >= 10); + EntityBobmazon shuttle = new EntityBobmazon(worldObj); + shuttle.posX = xCoord + 0.5 + worldObj.rand.nextGaussian() * 10; + shuttle.posY = 300; + shuttle.posZ = zCoord + 0.5 + worldObj.rand.nextGaussian() * 10; + ItemStack payload = ItemKitCustom.create("Supplies", null, 0xffffff, 0x008000, + new ItemStack(ModItems.circuit_aluminium, 4 + worldObj.rand.nextInt(4)), + new ItemStack(ModItems.circuit_copper, 4 + worldObj.rand.nextInt(2)), + new ItemStack(ModItems.circuit_red_copper, 2 + worldObj.rand.nextInt(3)), + new ItemStack(ModItems.circuit_gold, 1 + worldObj.rand.nextInt(2)), + bonus ? new ItemStack(ModItems.gem_alexandrite) : new ItemStack(Items.diamond, 6 + worldObj.rand.nextInt(6)), + new ItemStack(Blocks.red_flower)); + shuttle.payload = payload; + + worldObj.spawnEntityInWorld(shuttle); + } + + if(comTimer >= 0) { + comTimer--; + } + + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("isBroken", isBroken); + INBTPacketReceiver.networkPack(this, data, 250); + } + } + + @Override + public void invalidate() { + super.invalidate(); + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord - 50, yCoord - 50, zCoord - 50, xCoord + 51, yCoord + 51, zCoord + 51)); + for(EntityPlayer player : players) { + HbmPlayerProps props = HbmPlayerProps.getData(player); + if(props.reputation > -10) props.reputation--; + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.isBroken = nbt.getBoolean("isBroken"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + isBroken = nbt.getBoolean("isBroken"); + comTimer = nbt.getInteger("comTimer"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("isBroken", isBroken); + nbt.setInteger("comTimer", comTimer); + } + + @Override + public boolean isDamaged() { + return isBroken; + } + + List repair = new ArrayList(); + @Override + public List getRepairMaterials() { + + if(!repair.isEmpty()) + return repair; + + repair.add(new OreDictStack(OreDictManager.STEEL.plate(), 2)); + repair.add(new ComparableStack(ModItems.circuit_copper, 1)); + return repair; + } + + @Override + public void repair() { + this.isBroken = false; + this.comTimer = 400; + this.markDirty(); + } + + @Override public void tryExtinguish(World world, int x, int y, int z, EnumExtinguishType type) { } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord, + yCoord, + zCoord, + xCoord + 1, + yCoord + 6, + zCoord + 1 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityTrappedBrick.java b/src/main/java/com/hbm/tileentity/deco/TileEntityTrappedBrick.java index af014a09c..5dcef1aad 100644 --- a/src/main/java/com/hbm/tileentity/deco/TileEntityTrappedBrick.java +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityTrappedBrick.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.TrappedBrick.Trap; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.entity.projectile.EntityRubble; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.items.ModItems; @@ -77,7 +77,7 @@ public class TileEntityTrappedBrick extends TileEntity { worldObj.setBlock(xCoord, yCoord - 1 - i, zCoord, ModBlocks.concrete_pillar); break; case POISON_DART: - EntityBulletBase dart = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.G20_CAUSTIC); + EntityBulletBaseNT dart = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.G20_CAUSTIC); dart.setPosition(xCoord + 0.5 + dir.offsetX, yCoord + 0.5, zCoord + 0.5 + dir.offsetZ); dart.motionX = dir.offsetX; dart.motionZ = dir.offsetZ; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java new file mode 100644 index 000000000..cd78eb206 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java @@ -0,0 +1,183 @@ +package com.hbm.tileentity.machine; + +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.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvider { + + private int playersUsing = 0; + public float doorAngle = 0; + public float prevDoorAngle = 0; + public boolean isFull; + + public int ashLevelWood; + public int ashLevelCoal; + public int ashLevelMisc; + public int ashLevelFly; + public int ashLevelSoot; + + public TileEntityAshpit() { + super(5); + } + + @Override + public void openInventory() { + if(!worldObj.isRemote) this.playersUsing++; + } + + @Override + public void closeInventory() { + if(!worldObj.isRemote) this.playersUsing--; + } + + @Override + public String getName() { + return "container.ashpit"; + } + + @Override + public void updateEntity() { + + 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; + + isFull = false; + + for(int i = 0; i < 5; i++) { + if(slots[i] != null) isFull = true; + } + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("playersUsing", this.playersUsing); + data.setBoolean("isFull", this.isFull); + this.networkPack(data, 50); + + } else { + this.prevDoorAngle = this.doorAngle; + float swingSpeed = (doorAngle / 10F) + 3; + + if(this.playersUsing > 0) { + this.doorAngle += swingSpeed; + } else { + this.doorAngle -= swingSpeed; + } + + this.doorAngle = MathHelper.clamp_float(this.doorAngle, 0F, 135F); + } + } + + protected boolean processAsh(int level, EnumAshType type, int threshold) { + + if(level >= threshold) { + for(int i = 0; i < 5; i++) { + if(slots[i] == null) { + slots[i] = DictFrame.fromOne(ModItems.powder_ash, type); + ashLevelWood -= threshold; + return true; + } else if(slots[i].stackSize < slots[i].getMaxStackSize() && slots[i].getItem() == ModItems.powder_ash && slots[i].getItemDamage() == type.ordinal()) { + slots[i].stackSize++; + return true; + } + } + } + + return false; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.playersUsing = nbt.getInteger("playersUsing"); + this.isFull = nbt.getBoolean("isFull"); + } + + @Override + public int[] getAccessibleSlotsFromSide(int meta) { + return new int[] { 0, 1, 2, 3, 4 }; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return true; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.ashLevelWood = nbt.getInteger("ashLevelWood"); + this.ashLevelCoal = nbt.getInteger("ashLevelCoal"); + this.ashLevelMisc = nbt.getInteger("ashLevelMisc"); + this.ashLevelFly = nbt.getInteger("ashLevelFly"); + this.ashLevelSoot = nbt.getInteger("ashLevelSoot"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setInteger("ashLevelWood", ashLevelWood); + nbt.setInteger("ashLevelCoal", ashLevelCoal); + nbt.setInteger("ashLevelMisc", ashLevelMisc); + nbt.setInteger("ashLevelFly", ashLevelFly); + nbt.setInteger("ashLevelSoot", ashLevelSoot); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 1, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerAshpit(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIAshpit(player.inventory, this); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java new file mode 100644 index 000000000..e01b8352f --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java @@ -0,0 +1,113 @@ +package com.hbm.tileentity.machine; + +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +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.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; + +import api.hbm.fluid.IFluidUser; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +public abstract class TileEntityChimneyBase extends TileEntityLoadedBase implements IFluidUser, INBTPacketReceiver { + + public long ashTick = 0; + public long sootTick = 0; + public int onTicks; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 20 == 0) { + FluidType[] types = new FluidType[] {Fluids.SMOKE, Fluids.SMOKE_LEADED, Fluids.SMOKE_POISON}; + + for(FluidType type : types) { + this.trySubscribe(type, worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); + this.trySubscribe(type, worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); + this.trySubscribe(type, worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); + this.trySubscribe(type, worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); + } + } + + if(ashTick > 0 || sootTick > 0) { + + TileEntity below = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); + + if(below instanceof TileEntityAshpit) { + TileEntityAshpit ashpit = (TileEntityAshpit) below; + ashpit.ashLevelFly += ashTick; + ashpit.ashLevelSoot += sootTick; + } + this.ashTick = 0; + this.sootTick = 0; + } + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("onTicks", onTicks); + INBTPacketReceiver.networkPack(this, data, 150); + + if(onTicks > 0) onTicks--; + + } else { + + if(onTicks > 0) { + this.spawnParticles(); + } + } + } + + public boolean cpaturesAsh() { + return true; + } + + public boolean cpaturesSoot() { + return false; + } + + public void spawnParticles() { } + + public void networkUnpack(NBTTagCompound nbt) { + this.onTicks = nbt.getInteger("onTicks"); + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + return (dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH || dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) && + (type == Fluids.SMOKE || type == Fluids.SMOKE_LEADED || type == Fluids.SMOKE_POISON); + } + + @Override + public long transferFluid(FluidType type, int pressure, long fluid) { + onTicks = 20; + + if(cpaturesAsh()) ashTick += fluid; + if(cpaturesSoot()) sootTick += fluid; + + fluid *= getPollutionMod(); + + if(type == Fluids.SMOKE) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, fluid / 100F); + if(type == Fluids.SMOKE_LEADED) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.HEAVYMETAL, fluid / 100F); + if(type == Fluids.SMOKE_POISON) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.POISON, fluid / 100F); + + return 0; + } + + public abstract double getPollutionMod(); + + @Override + public long getDemand(FluidType type, int pressure) { + return 1_000_000; + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] {}; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java new file mode 100644 index 000000000..5a95b31ac --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java @@ -0,0 +1,59 @@ +package com.hbm.tileentity.machine; + +import com.hbm.main.MainRegistry; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityChimneyBrick extends TileEntityChimneyBase { + + @Override + public void spawnParticles() { + + if(worldObj.getTotalWorldTime() % 2 == 0) { + NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "tower"); + fx.setFloat("lift", 10F); + fx.setFloat("base", 0.5F); + fx.setFloat("max", 3F); + fx.setInteger("life", 250 + worldObj.rand.nextInt(50)); + fx.setInteger("color",0x404040); + fx.setDouble("posX", xCoord + 0.5); + fx.setDouble("posY", yCoord + 12); + fx.setDouble("posZ", zCoord + 0.5); + MainRegistry.proxy.effectNT(fx); + } + } + + @Override + public double getPollutionMod() { + return 0.25D; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 13, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java new file mode 100644 index 000000000..f5a79dce4 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java @@ -0,0 +1,64 @@ +package com.hbm.tileentity.machine; + +import com.hbm.main.MainRegistry; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityChimneyIndustrial extends TileEntityChimneyBase { + + @Override + public void spawnParticles() { + + if(worldObj.getTotalWorldTime() % 2 == 0) { + NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "tower"); + fx.setFloat("lift", 10F); + fx.setFloat("base", 0.75F); + fx.setFloat("max", 3F); + fx.setInteger("life", 250 + worldObj.rand.nextInt(50)); + fx.setInteger("color",0x404040); + fx.setDouble("posX", xCoord + 0.5); + fx.setDouble("posY", yCoord + 22); + fx.setDouble("posZ", zCoord + 0.5); + MainRegistry.proxy.effectNT(fx); + } + } + + @Override + public double getPollutionMod() { + return 0.1D; + } + + @Override + public boolean cpaturesSoot() { + return true; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 23, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index fdc95bc0e..d1a9abd64 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.fluid.FluidType; @@ -22,15 +23,20 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver, IFluidStandardTransceiver { +public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent { public long power; public static final long maxPower = 100000000000L; @@ -81,7 +87,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc this.sendPower(worldObj, xCoord - dir.offsetX * 11, yCoord, zCoord - dir.offsetZ * 11, dir.getOpposite()); for(DirPos pos : this.getConPos()) { - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } @@ -275,6 +281,36 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc this.power = power; } + @Override + public String getComponentName() { + return "ntm_turbine"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[1].getFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return CompatHandler.steamTypeToInt(tanks[1].getTankType()); + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setType(Context context, Arguments args) { + tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); + return new Object[] {true}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())}; + } + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] {tanks[1]}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java index 20f0d3915..3e4df7177 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java @@ -42,35 +42,45 @@ public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidA age = 0; } - if(this.waterTimer > 0) - this.waterTimer--; - - int convert = Math.min(tanks[0].getFill(), tanks[1].getMaxFill() - tanks[1].getFill()); - tanks[0].setFill(tanks[0].getFill() - convert); - - if(convert > 0) - this.waterTimer = 20; - - int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); - - if(TomSaveData.forWorld(worldObj).fire > 1e-5 && light > 7) { // Make both steam and water evaporate during firestorms... - tanks[1].setFill(tanks[1].getFill() - convert); - } else { - tanks[1].setFill(tanks[1].getFill() + convert); - } - - this.subscribeToAllAround(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); - - fillFluidInit(tanks[1].getTankType()); - NBTTagCompound data = new NBTTagCompound(); this.tanks[0].writeToNBT(data, "0"); + + if(this.waterTimer > 0) + this.waterTimer--; + + int convert = Math.min(tanks[0].getFill(), tanks[1].getMaxFill() - tanks[1].getFill()); + if(extraCondition(convert)) { + tanks[0].setFill(tanks[0].getFill() - convert); + + if(convert > 0) + this.waterTimer = 20; + + int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); + + if(TomSaveData.forWorld(worldObj).fire > 1e-5 && light > 7) { // Make both steam and water evaporate during firestorms... + tanks[1].setFill(tanks[1].getFill() - convert); + } else { + tanks[1].setFill(tanks[1].getFill() + convert); + } + + postConvert(convert); + } + this.tanks[1].writeToNBT(data, "1"); + + this.subscribeToAllAround(tanks[0].getTankType(), this); + this.sendFluidToAll(tanks[1], this); + + fillFluidInit(tanks[1].getTankType()); data.setByte("timer", (byte) this.waterTimer); + packExtra(data); INBTPacketReceiver.networkPack(this, data, 150); } } + + public void packExtra(NBTTagCompound data) { } + public boolean extraCondition(int convert) { return true; } + public void postConvert(int convert) { } @Override public void networkUnpack(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java new file mode 100644 index 000000000..7bd58cf0a --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java @@ -0,0 +1,165 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyUser; +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; + +public class TileEntityCondenserPowered extends TileEntityCondenser implements IEnergyUser { + + public long power; + public static final long maxPower = 10_000_000; + public float spin; + public float lastSpin; + + public TileEntityCondenserPowered() { + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(Fluids.SPENTSTEAM, 100_000); + tanks[1] = new FluidTank(Fluids.WATER, 100_000); + } + + @Override + public void updateEntity() { + super.updateEntity(); + + if(worldObj.isRemote) { + + this.lastSpin = this.spin; + + if(this.waterTimer > 0) { + this.spin += 30F; + + if(this.spin >= 360F) { + this.spin -= 360F; + this.lastSpin -= 360F; + } + + if(worldObj.getTotalWorldTime() % 4 == 0) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + worldObj.spawnParticle("cloud", xCoord + 0.5 + dir.offsetX * 1.5, yCoord + 1.5, zCoord + 0.5 + dir.offsetZ * 1.5, dir.offsetX * 0.1, 0, dir.offsetZ * 0.1); + worldObj.spawnParticle("cloud", xCoord + 0.5 - dir.offsetX * 1.5, yCoord + 1.5, zCoord + 0.5 - dir.offsetZ * 1.5, dir.offsetX * -0.1, 0, dir.offsetZ * -0.1); + } + } + } + } + + @Override + public void packExtra(NBTTagCompound data) { + data.setLong("power", power); + } + + @Override + public boolean extraCondition(int convert) { + return power >= convert * 10; + } + + @Override + public void postConvert(int convert) { + this.power -= convert * 10; + if(this.power < 0) this.power = 0; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.tanks[0].readFromNBT(nbt, "0"); + this.tanks[1].readFromNBT(nbt, "1"); + this.waterTimer = nbt.getByte("timer"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.power = nbt.getLong("power"); + tanks[0].readFromNBT(nbt, "water"); + tanks[1].readFromNBT(nbt, "steam"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + tanks[0].writeToNBT(nbt, "water"); + tanks[1].writeToNBT(nbt, "steam"); + } + + @Deprecated @Override public void fillFluidInit(FluidType type) { } + + @Override + public void subscribeToAllAround(FluidType type, TileEntity te) { + for(DirPos pos : getConPos()) { + this.trySubscribe(this.tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + @Override + public void sendFluidToAll(FluidTank tank, TileEntity te) { + for(DirPos pos : getConPos()) { + this.sendFluid(this.tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + public DirPos[] getConPos() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new DirPos[] { + new DirPos(xCoord + rot.offsetX * 4, yCoord + 1, zCoord + rot.offsetZ * 4, rot), + new DirPos(xCoord - rot.offsetX * 4, yCoord + 1, zCoord - rot.offsetZ * 4, rot.getOpposite()), + new DirPos(xCoord + dir.offsetX * 2 - rot.offsetX, yCoord + 1, zCoord + dir.offsetZ * 2 - rot.offsetZ, dir), + new DirPos(xCoord + dir.offsetX * 2 + rot.offsetX, yCoord + 1, zCoord + dir.offsetZ * 2 + rot.offsetZ, dir), + new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX, yCoord + 1, zCoord - dir.offsetZ * 2 - rot.offsetZ, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX, yCoord + 1, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite()) + }; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 3, + yCoord, + zCoord - 3, + xCoord + 4, + yCoord + 3, + zCoord + 4 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public long getPower() { + return this.power; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getMaxPower() { + return this.maxPower; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java new file mode 100644 index 000000000..c4f7eaf9f --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java @@ -0,0 +1,269 @@ +package com.hbm.tileentity.machine; + +import java.util.List; + +import com.hbm.entity.item.EntityMovingItem; +import com.hbm.inventory.recipes.PressRecipes; +import com.hbm.items.machine.ItemStamp; +import com.hbm.lib.Library; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyUser; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityConveyorPress extends TileEntityMachineBase implements IEnergyUser { + + public int usage = 100; + public long power = 0; + public final static long maxPower = 50000; + + public double speed = 0.125; + public double press; + public double renderPress; + public double lastPress; + private double syncPress; + private int turnProgress; + protected boolean isRetracting = false; + private int delay; + + public ItemStack syncStack; + + public TileEntityConveyorPress() { + super(1); + } + + @Override + public String getName() { + return ""; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.updateConnections(); + + if(delay <= 0) { + + if(isRetracting) { + + if(this.canRetract()) { + this.press -= speed; + this.power -= this.usage; + + if(press <= 0) { + press = 0; + this.isRetracting = false; + delay = 0; + } + } + + } else { + + if(this.canExtend()) { + this.press += speed; + this.power -= this.usage; + + if(press >= 1) { + press = 1; + this.isRetracting = true; + delay = 5; + this.process(); + } + } + } + + } else { + delay--; + } + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setDouble("press", press); + if(slots[0] != null) { + NBTTagCompound stack = new NBTTagCompound(); + slots[0].writeToNBT(stack); + data.setTag("stack", stack); + } + + this.networkPack(data, 50); + } else { + + // approach-based interpolation, GO! + this.lastPress = this.renderPress; + + if(this.turnProgress > 0) { + this.renderPress = this.renderPress + ((this.syncPress - this.renderPress) / (double) this.turnProgress); + --this.turnProgress; + } else { + this.renderPress = this.syncPress; + } + } + } + + protected void updateConnections() { + for(DirPos pos : getConPos()) this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + protected DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 1, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 1, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord, zCoord + 1, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 1, Library.NEG_Z), + }; + } + + public boolean canExtend() { + + if(this.power < usage) return false; + if(slots[0] == null) return false; + + List items = worldObj.getEntitiesWithinAABB(EntityMovingItem.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord + 1, zCoord, xCoord + 1, yCoord + 1.5, zCoord + 1)); + if(items.isEmpty()) return false; + + for(EntityMovingItem item : items) { + ItemStack stack = item.getItemStack(); + if(PressRecipes.getOutput(stack, slots[0]) != null && stack.stackSize == 1) { + + double d0 = 0.35; + double d1 = 0.65; + if(item.posX > xCoord + d0 && item.posX < xCoord + d1 && item.posZ > zCoord + d0 && item.posZ < zCoord + d1) { + item.setPosition(xCoord + 0.5, item.posY, zCoord + 0.5); + } + + return true; + } + } + + return false; + } + + public void process() { + + List items = worldObj.getEntitiesWithinAABB(EntityMovingItem.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord + 1, zCoord, xCoord + 1, yCoord + 1.5, zCoord + 1)); + + for(EntityMovingItem item : items) { + ItemStack stack = item.getItemStack(); + ItemStack output = PressRecipes.getOutput(stack, slots[0]); + + if(output != null && stack.stackSize == 1) { + item.setDead(); + EntityMovingItem out = new EntityMovingItem(worldObj); + out.setPosition(item.posX, item.posY, item.posZ); + out.setItemStack(output.copy()); + worldObj.spawnEntityInWorld(out); + } + } + + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.pressOperate", 1.5F, 1.0F); + + if(slots[0].getMaxDamage() != 0) { + slots[0].setItemDamage(slots[0].getItemDamage() + 1); + if(slots[0].getItemDamage() >= slots[0].getMaxDamage()) { + slots[0] = null; + } + } + } + + public boolean canRetract() { + if(this.power < usage) return false; + return true; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.syncPress = nbt.getInteger("press"); + + if(nbt.hasKey("stack")) { + NBTTagCompound stack = nbt.getCompoundTag("stack"); + this.syncStack = ItemStack.loadItemStackFromNBT(stack); + } else { + this.syncStack = null; + } + + this.turnProgress = 2; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + return stack.getItem() instanceof ItemStamp; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] { 0 }; + } + + @Override + public boolean canInsertItem(int i, ItemStack itemStack, int j) { + return this.isItemValidForSlot(i, itemStack); + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public boolean canConnect(ForgeDirection dir) { + return dir != ForgeDirection.DOWN; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.power = nbt.getLong("power"); + this.press = nbt.getDouble("press"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + nbt.setDouble("press", press); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 3, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 5dd663165..92a83d81b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -1,20 +1,15 @@ package com.hbm.tileentity.machine; -import java.util.List; - -import com.hbm.interfaces.IFluidAcceptor; +import api.hbm.block.ILaserable; +import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardReceiver; import com.hbm.inventory.container.ContainerCoreEmitter; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUICoreEmitter; import com.hbm.lib.ModDamageSource; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; - -import api.hbm.block.ILaserable; -import api.hbm.energy.IEnergyUser; -import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -35,8 +30,10 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider { +public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyUser, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider { public long power; public static final long maxPower = 1000000000L; @@ -69,8 +66,6 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne watts = MathHelper.clamp_int(watts, 1, 100); long demand = maxPower * watts / 2000; - - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); beam = 0; @@ -113,13 +108,11 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne TileEntity te = worldObj.getTileEntity(x, y, z); if(block instanceof ILaserable) { - ((ILaserable)block).addEnergy(worldObj, x, y, z, out * 98 / 100, dir); break; } if(te instanceof ILaserable) { - ((ILaserable)te).addEnergy(worldObj, x, y, z, out * 98 / 100, dir); break; } @@ -131,7 +124,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne Block b = worldObj.getBlock(x, y, z); - if(b != Blocks.air) { + if(!b.isAir(worldObj, x, y, z)) { if(b.getMaterial().isLiquid()) { worldObj.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "random.fizz", 1.0F, 1.0F); @@ -178,6 +171,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne data.setLong("prev", prev); data.setInteger("beam", beam); data.setBoolean("isOn", isOn); + tank.writeToNBT(data, "tank"); this.networkPack(data, 250); } } @@ -189,6 +183,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne prev = data.getLong("prev"); beam = data.getInteger("beam"); isOn = data.getBoolean("isOn"); + tank.readFromNBT(data, "tank"); } public long getPowerScaled(long i) { @@ -199,38 +194,6 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne return (watts * i) / 100; } - @Override - public void setFluidFill(int i, FluidType type) { - if(type.name().equals(tank.getTankType().name())) - tank.setFill(i); - } - - @Override - public int getFluidFill(FluidType type) { - if(type.name().equals(tank.getTankType().name())) - return tank.getFill(); - else - return 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - if(type.name().equals(tank.getTankType().name())) - return tank.getMaxFill(); - else - return 0; - } - - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - @Override public void setPower(long i) { this.power = i; @@ -311,59 +274,48 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne return "dfc_emitter"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") - public Object[] getEnergyStored(Context context, Arguments args) { - return new Object[] {getPower()}; + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; } - @Callback - @Optional.Method(modid = "OpenComputers") - public Object[] getMaxEnergy(Context context, Arguments args) { - return new Object[] {getMaxPower()}; - } - - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCryogel(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInput(Context context, Arguments args) { return new Object[] {watts}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower(), tank.getFill(), watts, isOn}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] isActive(Context context, Arguments args) { return new Object[] {isOn}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setActive(Context context, Arguments args) { isOn = args.checkBoolean(0); return new Object[] {}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); - if (newOutput > 100) { - newOutput = 100; - } else if (newOutput < 0) { - newOutput = 0; - } - watts = newOutput; + watts = MathHelper.clamp_int(newOutput, 0, 100); return new Object[] {}; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java index 5b7e90266..b0fb0c484 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -19,7 +19,6 @@ 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.init.Blocks; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -97,7 +96,7 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl break; } - if(worldObj.getBlock(x, y, z) != Blocks.air) + if(!worldObj.getBlock(x, y, z).isAir(worldObj, x, y, z)) break; } @@ -200,22 +199,22 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl return "dfc_injector"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") - public Object[] getFirstFuel(Context context, Arguments args) { - return new Object[] {tanks[0].getFill()}; + public Object[] getFuel(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") - public Object[] getSecondFuel(Context context, Arguments args) { - return new Object[] {tanks[1].getFill()}; + public Object[] getTypes(Context context, Arguments args) { + return new Object[] {tanks[0].getTankType().getName(), tanks[1].getTankType().getName()}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; + return new Object[] {tanks[0].getFill(), tanks[0].getTankType().getName(), tanks[1].getFill(), tanks[1].getTankType().getName()}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index d3e203e67..c3fbf28d6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -191,28 +191,22 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn return "dfc_receiver"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") - public Object[] getInput(Context context, Arguments args) { - return new Object[] {joules}; + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {joules, getPower()}; //literally only doing this for the consistency between components } - @Callback - @Optional.Method(modid = "OpenComputers") - public Object[] getOutput(Context context, Arguments args) { - return new Object[] {power}; - } - - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCryogel(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {joules, power, tank.getFill()}; + return new Object[] {joules, getPower(), tank.getFill()}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 27f060d89..6e6413032 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -17,7 +17,6 @@ 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.init.Blocks; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -86,7 +85,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I break; } - if(worldObj.getBlock(x, y, z) != Blocks.air) + if(!worldObj.getBlock(x, y, z).isAir(worldObj, x, y, z)) break; } } @@ -173,25 +172,19 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return "dfc_stabilizer"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") - public Object[] getEnergyStored(Context context, Arguments args) { - return new Object[] {power}; + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; } - @Callback - @Optional.Method(modid = "OpenComputers") - public Object[] getMaxEnergy(Context context, Arguments args) { - return new Object[] {maxPower}; - } - - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInput(Context context, Arguments args) { return new Object[] {watts}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getDurability(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() == ModItems.ams_lens && ItemLens.getLensDamage(slots[0]) < ((ItemLens)ModItems.ams_lens).maxDamage) { @@ -200,7 +193,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { Object lens_damage_buf; @@ -212,16 +205,11 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return new Object[] {power, maxPower, watts, lens_damage_buf}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); - if (newOutput > 100) { - newOutput = 100; - } else if (newOutput < 0) { - newOutput = 0; - } - watts = newOutput; + watts = MathHelper.clamp_int(newOutput, 0, 100); return new Object[] {}; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index 3581d35b4..a6ee9501c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -7,6 +7,8 @@ import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.container.ContainerCrucible; import com.hbm.inventory.gui.GUICrucible; import com.hbm.inventory.material.MaterialShapes; @@ -169,6 +171,8 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord, zCoord + 0.5D + dir.offsetZ * 1.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); } + + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 2F); } /* pour recipe stack */ @@ -207,6 +211,8 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord, zCoord + 0.5D + dir.offsetZ * 1.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); } + + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 2F); } /* clean up stacks */ diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java new file mode 100644 index 000000000..9c906623d --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java @@ -0,0 +1,498 @@ +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.config.CustomMachineConfigJSON; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration.ComponentDefinition; +import com.hbm.inventory.container.ContainerMachineCustom; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIMachineCustom; +import com.hbm.inventory.recipes.CustomMachineRecipes; +import com.hbm.inventory.recipes.CustomMachineRecipes.CustomMachineRecipe; +import com.hbm.lib.Library; +import com.hbm.module.ModulePatternMatcher; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityProxyBase; +import com.hbm.util.Compat; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityCustomMachine extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyUser, IGUIProvider { + + public String machineType; + public MachineConfiguration config; + + public long power; + public int progress; + public int maxProgress = 1; + public FluidTank[] inputTanks; + public FluidTank[] outputTanks; + public ModulePatternMatcher matcher; + public int structureCheckDelay; + public boolean structureOK = false; + public CustomMachineRecipe cachedRecipe; + + public List connectionPos = new ArrayList(); + + public TileEntityCustomMachine() { + /* + * 0: Battery + * 1-3: Fluid IDs + * 4-9: Inputs + * 10-15: Template + * 16-21: Output + */ + super(22); + } + + public void init() { + MachineConfiguration config = CustomMachineConfigJSON.customMachines.get(this.machineType); + + if(config != null) { + this.config = config; + + inputTanks = new FluidTank[config.fluidInCount]; + for(int i = 0; i < inputTanks.length; i++) inputTanks[i] = new FluidTank(Fluids.NONE, config.fluidInCap); + outputTanks = new FluidTank[config.fluidOutCount]; + for(int i = 0; i < outputTanks.length; i++) outputTanks[i] = new FluidTank(Fluids.NONE, config.fluidOutCap); + + matcher = new ModulePatternMatcher(config.itemInCount); + + } else { + worldObj.func_147480_a(xCoord, yCoord, zCoord, false); + } + } + + @Override + public String getName() { + return config != null ? config.localizedName : "INVALID"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(config == null) { + worldObj.func_147480_a(xCoord, yCoord, zCoord, false); + return; + } + + this.power = Library.chargeTEFromItems(slots, 0, power, this.config.maxPower); + + if(this.inputTanks.length > 0) this.inputTanks[0].setType(1, slots); + if(this.inputTanks.length > 1) this.inputTanks[1].setType(2, slots); + if(this.inputTanks.length > 2) this.inputTanks[2].setType(3, slots); + + this.structureCheckDelay--; + if(this.structureCheckDelay <= 0) this.checkStructure(); + + if(this.worldObj.getTotalWorldTime() % 20 == 0) { + for(DirPos pos : this.connectionPos) { + for(FluidTank tank : this.inputTanks) { + this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + if(!config.generatorMode) this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + for(DirPos pos : this.connectionPos) { + if(config.generatorMode && power > 0) this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + for(FluidTank tank : this.outputTanks) if(tank.getFill() > 0) this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + if(this.structureOK) { + + if(config.generatorMode) { + if(this.cachedRecipe == null) { + CustomMachineRecipe recipe = this.getMatchingRecipe(); + if(recipe != null && this.hasRequiredQuantities(recipe) && this.hasSpace(recipe)) { + this.cachedRecipe = recipe; + this.useUpInput(recipe); + } + } + + if(this.cachedRecipe != null) { + this.maxProgress = (int) Math.max(cachedRecipe.duration / this.config.recipeSpeedMult, 1); + int powerReq = (int) Math.max(cachedRecipe.consumptionPerTick * this.config.recipeConsumptionMult, 1); + + this.progress++; + this.power += powerReq; + if(power > config.maxPower) power = config.maxPower; + + if(progress >= this.maxProgress) { + this.progress = 0; + this.processRecipe(cachedRecipe); + this.cachedRecipe = null; + } + } + + } else { + CustomMachineRecipe recipe = this.getMatchingRecipe(); + + if(recipe != null) { + this.maxProgress = (int) Math.max(recipe.duration / this.config.recipeSpeedMult, 1); + int powerReq = (int) Math.max(recipe.consumptionPerTick * this.config.recipeConsumptionMult, 1); + + if(this.power >= powerReq && this.hasRequiredQuantities(recipe) && this.hasSpace(recipe)) { + this.progress++; + this.power -= powerReq; + + if(progress >= this.maxProgress) { + this.progress = 0; + this.useUpInput(recipe); + this.processRecipe(recipe); + } + } + } else { + this.progress = 0; + } + } + } else { + this.progress = 0; + } + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", this.machineType); + data.setLong("power", power); + data.setBoolean("structureOK", structureOK); + data.setInteger("progress", progress); + data.setInteger("maxProgress", maxProgress); + for(int i = 0; i < inputTanks.length; i++) inputTanks[i].writeToNBT(data, "i" + i); + for(int i = 0; i < outputTanks.length; i++) outputTanks[i].writeToNBT(data, "o" + i); + this.matcher.writeToNBT(data); + this.networkPack(data, 50); + } + } + + /** Only accepts inputs in a fixed order, saves a ton of performance because there's no permutations to check for */ + public CustomMachineRecipe getMatchingRecipe() { + List recipes = CustomMachineRecipes.recipes.get(this.config.recipeKey); + if(recipes == null || recipes.isEmpty()) return null; + + outer: + for(CustomMachineRecipe recipe : recipes) { + for(int i = 0; i < recipe.inputFluids.length; i++) { + if(this.inputTanks[i].getTankType() != recipe.inputFluids[i].type || this.inputTanks[i].getPressure() != recipe.inputFluids[i].pressure) continue outer; + } + + for(int i = 0; i < recipe.inputItems.length; i++) { + if(recipe.inputItems[i] != null && slots[i + 4] == null) continue outer; + if(!recipe.inputItems[i].matchesRecipe(slots[i + 4], true)) continue outer; + } + + return recipe; + } + + return null; + } + + public boolean hasRequiredQuantities(CustomMachineRecipe recipe) { + + for(int i = 0; i < recipe.inputFluids.length; i++) { + if(this.inputTanks[i].getFill() < recipe.inputFluids[i].fill) return false; + } + + for(int i = 0; i < recipe.inputItems.length; i++) { + if(slots[i + 4] != null && slots[i + 4].stackSize < recipe.inputItems[i].stacksize) return false; + } + + return true; + } + + public boolean hasSpace(CustomMachineRecipe recipe) { + + for(int i = 0; i < recipe.outputFluids.length; i++) { + if(this.outputTanks[i].getTankType() == recipe.outputFluids[i].type && this.outputTanks[i].getFill() + recipe.outputFluids[i].fill > this.outputTanks[i].getMaxFill()) return false; + } + + for(int i = 0; i < recipe.outputItems.length; i++) { + if(slots[i + 16] != null && (slots[i + 16].getItem() != recipe.outputItems[i].key.getItem() || slots[i + 16].getItemDamage() != recipe.outputItems[i].key.getItemDamage())) return false; + if(slots[i + 16] != null && slots[16 + i].stackSize + recipe.outputItems[i].key.stackSize > slots[i + 16].getMaxStackSize()) return false; + } + + return true; + } + + public void useUpInput(CustomMachineRecipe recipe) { + + for(int i = 0; i < recipe.inputFluids.length; i++) { + this.inputTanks[i].setFill(this.inputTanks[i].getFill() - recipe.inputFluids[i].fill); + } + + for(int i = 0; i < recipe.inputItems.length; i++) { + this.decrStackSize(i + 4, recipe.inputItems[i].stacksize); + } + } + + public void processRecipe(CustomMachineRecipe recipe) { + + for(int i = 0; i < recipe.outputFluids.length; i++) { + if(this.outputTanks[i].getTankType() != recipe.outputFluids[i].type) this.outputTanks[i].setTankType(recipe.outputFluids[i].type); + this.outputTanks[i].setFill(this.outputTanks[i].getFill() + recipe.outputFluids[i].fill); + } + + for(int i = 0; i < recipe.outputItems.length; i++) { + + if(worldObj.rand.nextFloat() < recipe.outputItems[i].value) { + if(slots[i + 16] == null) { + slots[i + 16] = recipe.outputItems[i].key.copy(); + } else { + slots[i + 16].stackSize += recipe.outputItems[i].key.stackSize; + } + } + } + } + + public boolean checkStructure() { + + this.connectionPos.clear(); + this.structureCheckDelay = 300; + this.structureOK = false; + if(this.config == null) return false; + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + for(ComponentDefinition comp : config.components) { + + /* vvv precisely the same method used for defining ports vvv */ + int x = xCoord - dir.offsetX * comp.x + rot.offsetX * comp.x; + int y = yCoord + comp.y; + int z = zCoord - dir.offsetZ * comp.z + rot.offsetZ * comp.z; + /* but for EW directions it just stops working entirely */ + /* there is absolutely zero reason why this should be required */ + if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { + x = xCoord + dir.offsetZ * comp.z - rot.offsetZ * comp.z; + z = zCoord + dir.offsetX * comp.x - rot.offsetX * comp.x; + } + /* i wholeheartedly believe it is the computer who is wrong here */ + + Block b = worldObj.getBlock(x, y, z); + if(b != comp.block) return false; + + int meta = worldObj.getBlockMetadata(x, y, z); + if(!comp.allowedMetas.contains(meta)) return false; + + TileEntity tile = Compat.getTileStandard(worldObj, x, y, z); + if(tile instanceof TileEntityProxyBase) { + TileEntityProxyBase proxy = (TileEntityProxyBase) tile; + proxy.cachedPosition = new BlockPos(xCoord, yCoord, zCoord); + proxy.markDirty(); + + for(ForgeDirection facing : ForgeDirection.VALID_DIRECTIONS) { + this.connectionPos.add(new DirPos(x + facing.offsetX, y + facing.offsetY, z + facing.offsetZ, facing)); + } + } + } + + for(ForgeDirection facing : ForgeDirection.VALID_DIRECTIONS) { + this.connectionPos.add(new DirPos(xCoord + facing.offsetX, yCoord + facing.offsetY, zCoord + facing.offsetZ, facing)); + } + + this.structureOK = true; + return true; + } + + public void buildStructure() { + + if(this.config == null) return; + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + for(ComponentDefinition comp : config.components) { + + int x = xCoord - dir.offsetX * comp.x + rot.offsetX * comp.x; + int y = yCoord + comp.y; + int z = zCoord - dir.offsetZ * comp.z + rot.offsetZ * comp.z; + if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { + x = xCoord + dir.offsetZ * comp.z - rot.offsetZ * comp.z; + z = zCoord + dir.offsetX * comp.x - rot.offsetX * comp.x; + } + + worldObj.setBlock(x, y, z, comp.block, (int) comp.allowedMetas.toArray()[0], 3); + } + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + if(this.config == null) return new int[] { }; + if(this.config.itemInCount > 5) return new int[] { 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21 }; + if(this.config.itemInCount > 4) return new int[] { 4, 5, 6, 7, 8, 16, 17, 18, 19, 20, 21 }; + if(this.config.itemInCount > 3) return new int[] { 4, 5, 6, 7, 16, 17, 18, 19, 20, 21 }; + if(this.config.itemInCount > 2) return new int[] { 4, 5, 6, 16, 17, 18, 19, 20, 21 }; + if(this.config.itemInCount > 1) return new int[] { 4, 5, 16, 17, 18, 19, 20, 21 }; + if(this.config.itemInCount > 0) return new int[] { 4, 16, 17, 18, 19, 20, 21 }; + return new int[] { }; + } + + @Override + public boolean canExtractItem(int i, ItemStack stack, int j) { + return i >= 16 && i <= 21; + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + if(slot < 4 || slot > 9) return false; + + int index = slot - 4; + int filterSlot = slot + 6; + + if(slots[filterSlot] == null) return true; + + return matcher.isValidForFilter(slots[filterSlot], index, stack); + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.machineType = nbt.getString("type"); + if(this.config == null) this.init(); + + this.power = nbt.getLong("power"); + this.progress = nbt.getInteger("progress"); + this.structureOK = nbt.getBoolean("structureOK"); + this.maxProgress = nbt.getInteger("maxProgress"); + for(int i = 0; i < inputTanks.length; i++) inputTanks[i].readFromNBT(nbt, "i" + i); + for(int i = 0; i < outputTanks.length; i++) outputTanks[i].readFromNBT(nbt, "o" + i); + + this.matcher.readFromNBT(nbt); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + + this.machineType = nbt.getString("machineType"); + this.init(); + + super.readFromNBT(nbt); + + if(this.config != null) { + + for(int i = 0; i < inputTanks.length; i++) inputTanks[i].readFromNBT(nbt, "i" + i); + for(int i = 0; i < outputTanks.length; i++) outputTanks[i].readFromNBT(nbt, "o" + i); + + this.matcher.readFromNBT(nbt); + + int index = nbt.getInteger("cachedIndex"); + if(index != -1) { + this.cachedRecipe = CustomMachineRecipes.recipes.get(this.config.recipeKey).get(index); + } + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + + if(machineType == null || this.config == null) { + super.writeToNBT(nbt); + return; + } + + nbt.setString("machineType", machineType); + + super.writeToNBT(nbt); + + for(int i = 0; i < inputTanks.length; i++) inputTanks[i].writeToNBT(nbt, "i" + i); + for(int i = 0; i < outputTanks.length; i++) outputTanks[i].writeToNBT(nbt, "o" + i); + + this.matcher.writeToNBT(nbt); + + if(this.cachedRecipe != null) { + int index = CustomMachineRecipes.recipes.get(this.config.recipeKey).indexOf(this.cachedRecipe); + nbt.setInteger("cachedIndex", index); + } else { + nbt.setInteger("cachedIndex", -1); + } + } + + @Override + public FluidTank[] getAllTanks() { + + FluidTank[] all = new FluidTank[inputTanks.length + outputTanks.length]; + + for(int i = 0; i < inputTanks.length; i++) all[i] = inputTanks[i]; + for(int i = 0; i < outputTanks.length; i++) all[inputTanks.length + i] = outputTanks[i]; + + return all; + } + + @Override + public FluidTank[] getSendingTanks() { + return outputTanks != null ? outputTanks : new FluidTank[0]; + } + + @Override + public FluidTank[] getReceivingTanks() { + return inputTanks != null ? inputTanks : new FluidTank[0]; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + if(this.config == null) return null; + return new ContainerMachineCustom(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + if(this.config == null) return null; + return new GUIMachineCustom(player.inventory, this); + } + + @Override + public long getPower() { + return this.power; + } + + @Override + public long getMaxPower() { + return this.config != null ? this.config.maxPower : 1; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long transferPower(long power) { + if(this.config != null && this.config.generatorMode) return power; + + this.setPower(this.getPower() + power); + + if(this.getPower() > this.getMaxPower()) { + + long overshoot = this.getPower() - this.getMaxPower(); + this.setPower(this.getMaxPower()); + return overshoot; + } + + return 0; + } + + @Override + public long getTransferWeight() { + if(this.config != null && this.config.generatorMode) return 0; + + return Math.max(getMaxPower() - getPower(), 0); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java index 6258575a7..b902dfd3e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java @@ -1,14 +1,7 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; - -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; -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.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyUser; @@ -16,17 +9,16 @@ import api.hbm.fluid.IFluidStandardTransceiver; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, IEnergyUser, IFluidStandardTransceiver { +public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implements IEnergyUser, IFluidStandardTransceiver { public long power = 0; public FluidTank[] tanks; - public List list = new ArrayList(); public TileEntityDeuteriumExtractor() { super(0); tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.WATER, 1000, 0); - tanks[1] = new FluidTank(Fluids.HEAVYWATER, 100, 1); + tanks[0] = new FluidTank(Fluids.WATER, 1000); + tanks[1] = new FluidTank(Fluids.HEAVYWATER, 100); } @Override @@ -51,8 +43,7 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen } this.subscribeToAllAround(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); - fillFluidInit(tanks[1].getTankType()); + this.sendFluidToAll(tanks[1], this); NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); @@ -99,66 +90,6 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen tanks[1].writeToNBT(nbt, "heavyWater"); } - - @Override - public void fillFluidInit(FluidType type) { - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - fillFluid(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, getTact(), type); - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return worldObj.getTotalWorldTime() % 20 < 10; - } - - @Override - public void setFluidFill(int i, FluidType type) { - if(type == tanks[0].getTankType()) - tanks[0].setFill(i); - else if(type == tanks[1].getTankType()) - tanks[1].setFill(i); - } - - @Override - public int getFluidFill(FluidType type) { - if(type == tanks[0].getTankType()) - return tanks[0].getFill(); - else if(type == tanks[1].getTankType()) - return tanks[1].getFill(); - - return 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - if(type == tanks[0].getTankType()) - return tanks[0].getMaxFill(); - - return 0; - } - - @Override - public void setFillForSync(int fill, int index) { } - - @Override - public void setTypeForSync(FluidType type, int index) { } - - @Override - public List getFluidList(FluidType type) { - return list; - } - - @Override - public void clearFluidList(FluidType type) { - list.clear(); - } - @Override public void setPower(long i) { power = i; @@ -171,7 +102,7 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen @Override public long getMaxPower() { - return 100000; + return 10_000; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumTower.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumTower.java index 3afa73370..a05b6fe01 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumTower.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumTower.java @@ -21,56 +21,7 @@ public class TileEntityDeuteriumTower extends TileEntityDeuteriumExtractor { tanks[1] = new FluidTank(Fluids.HEAVYWATER, 5000, 1); } - public void fillFluidInit(FluidType type) { - - int offsetX = 0; - int offsetZ = 0; - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - offsetX = -dir.offsetX; - offsetZ = -rot.offsetZ; - - if(dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH) { - offsetX = rot.offsetX; - offsetZ = dir.offsetZ; - } - - /*fillFluid(this.xCoord + rot.offsetX * 2, this.yCoord, this.zCoord - dir.offsetZ * 1, getTact(), type); - fillFluid(this.xCoord + rot.offsetX * 2, this.yCoord, this.zCoord - dir.offsetZ * 0, getTact(), type); - fillFluid(this.xCoord + rot.offsetX * 1, this.yCoord, this.zCoord - dir.offsetZ * 2, getTact(), type); - fillFluid(this.xCoord + rot.offsetX * 0, this.yCoord, this.zCoord - dir.offsetZ * 2, getTact(), type); - fillFluid(this.xCoord + rot.offsetX * 1, this.yCoord, this.zCoord + dir.offsetZ * 1, getTact(), type); - fillFluid(this.xCoord + rot.offsetX * 0, this.yCoord, this.zCoord + dir.offsetZ * 1, getTact(), type); - fillFluid(this.xCoord - rot.offsetX * 1, this.yCoord, this.zCoord + dir.offsetZ * 0, getTact(), type); - fillFluid(this.xCoord - rot.offsetX * 1, this.yCoord, this.zCoord - dir.offsetZ * 1, getTact(), type);*/ - - /*worldObj.setBlock(this.xCoord + rot.offsetX * 2, this.yCoord, this.zCoord - dir.offsetZ * 1, Blocks.dirt); - worldObj.setBlock(this.xCoord + rot.offsetX * 2, this.yCoord, this.zCoord - dir.offsetZ * 0, Blocks.dirt); - worldObj.setBlock(this.xCoord + rot.offsetX * 1, this.yCoord, this.zCoord - dir.offsetZ * 2, Blocks.dirt); - worldObj.setBlock(this.xCoord + rot.offsetX * 0, this.yCoord, this.zCoord - dir.offsetZ * 2, Blocks.dirt); - worldObj.setBlock(this.xCoord + rot.offsetX * 1, this.yCoord, this.zCoord + dir.offsetZ * 1, Blocks.dirt); - worldObj.setBlock(this.xCoord + rot.offsetX * 0, this.yCoord, this.zCoord + dir.offsetZ * 1, Blocks.dirt); - worldObj.setBlock(this.xCoord - rot.offsetX * 1, this.yCoord, this.zCoord + dir.offsetZ * 0, Blocks.dirt); - worldObj.setBlock(this.xCoord - rot.offsetX * 1, this.yCoord, this.zCoord - dir.offsetZ * 1, Blocks.dirt);*/ - - /* I'm never doing an even sided fluid machine ever again - * - * this was pain - * - * - pheo */ - - - fillFluid(this.xCoord + offsetX * 2, this.yCoord, this.zCoord - offsetZ * 1, getTact(), type); - fillFluid(this.xCoord + offsetX * 2, this.yCoord, this.zCoord - offsetZ * 0, getTact(), type); - fillFluid(this.xCoord + offsetX * 1, this.yCoord, this.zCoord - offsetZ * 2, getTact(), type); - fillFluid(this.xCoord + offsetX * 0, this.yCoord, this.zCoord - offsetZ * 2, getTact(), type); - fillFluid(this.xCoord + offsetX * 1, this.yCoord, this.zCoord + offsetZ * 1, getTact(), type); - fillFluid(this.xCoord + offsetX * 0, this.yCoord, this.zCoord + offsetZ * 1, getTact(), type); - fillFluid(this.xCoord - offsetX * 1, this.yCoord, this.zCoord + offsetZ * 0, getTact(), type); - fillFluid(this.xCoord - offsetX * 1, this.yCoord, this.zCoord - offsetZ * 1, getTact(), type); - } - + @Override protected void updateConnections() { for(DirPos pos : getConPos()) { @@ -78,17 +29,19 @@ public class TileEntityDeuteriumTower extends TileEntityDeuteriumExtractor { } } + @Override public void subscribeToAllAround(FluidType type, World world, int x, int y, int z) { for(DirPos pos : getConPos()) { this.trySubscribe(type, world, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - - public void sendFluidToAll(FluidType type, TileEntity te) { + + @Override + public void sendFluidToAll(FluidTank tank, TileEntity te) { for(DirPos pos : getConPos()) { - this.sendFluid(type, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -139,6 +92,6 @@ public class TileEntityDeuteriumTower extends TileEntityDeuteriumExtractor { @Override public long getMaxPower() { - return 1000000; + return 100_000; } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java index a2da04057..4e5cf6c3b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java @@ -2,14 +2,18 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.MachineDiFurnace; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.container.ContainerDiFurnace; +import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIDiFurnace; import com.hbm.inventory.recipes.BlastFurnaceRecipes; import com.hbm.items.ModItems; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.INBTPacketReceiver; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; +import api.hbm.fluid.IFluidStandardSender; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -21,8 +25,9 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIProvider { +public class TileEntityDiFurnace extends TileEntityMachinePolluting implements IFluidStandardSender, IGUIProvider { public int progress; public int fuel; @@ -35,7 +40,7 @@ public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIPr public byte sideLower = 1; public TileEntityDiFurnace() { - super(4); + super(4, 50); } @Override @@ -127,32 +132,19 @@ public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIPr } public boolean canProcess() { - if(slots[0] == null || slots[1] == null) { - return false; - } + if(slots[0] == null || slots[1] == null) return false; + if(!this.hasPower()) return false; - if(!this.hasPower()) { - return false; - } - - ItemStack itemStack = BlastFurnaceRecipes.getOutput(slots[0], slots[1]); - if(itemStack == null) { - return false; - } + ItemStack output = BlastFurnaceRecipes.getOutput(slots[0], slots[1]); + if(output == null) return false; + if(slots[3] == null) return true; + if(!slots[3].isItemEqual(output)) return false; - if(slots[3] == null) { + if(slots[3].stackSize + output.stackSize <= slots[3].getMaxStackSize()) { return true; } - - if(!slots[3].isItemEqual(itemStack)) { - return false; - } - - if(slots[3].stackSize < getInventoryStackLimit() && slots[3].stackSize < slots[3].getMaxStackSize()) { - return true; - } else { - return slots[3].stackSize < itemStack.getMaxStackSize(); - } + + return false; } private void processItem() { @@ -181,6 +173,14 @@ public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIPr public void updateEntity() { if(!worldObj.isRemote) { + + boolean extension = worldObj.getBlock(xCoord, yCoord + 1, zCoord) == ModBlocks.machine_difurnace_extension; + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + this.sendSmoke(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + } + + if(extension) this.sendSmoke(xCoord, yCoord + 2, zCoord, ForgeDirection.UP); boolean markDirty = false; @@ -196,7 +196,6 @@ public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIPr } if(canProcess()) { - boolean extension = worldObj.getBlock(xCoord, yCoord + 1, zCoord) == ModBlocks.machine_difurnace_extension; //fuel -= extension ? 2 : 1; fuel -= 1; //switch it up on me, fuel efficiency, on fumes i'm running - running - running - running @@ -211,6 +210,8 @@ public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIPr if(fuel < 0) { fuel = 0; } + + if(worldObj.getTotalWorldTime() % 20 == 0) this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * (extension ? 3 : 1)); } else { progress = 0; @@ -259,4 +260,14 @@ public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIPr public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIDiFurnace(player.inventory, this); } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[0]; + } + + @Override + public FluidTank[] getSendingTanks() { + return this.getSmokeTanks(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java index 7b5d5e485..7c7891802 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java @@ -4,6 +4,7 @@ import com.hbm.blocks.machine.MachineDiFurnaceRTG; import com.hbm.inventory.container.ContainerMachineDiFurnaceRTG; import com.hbm.inventory.gui.GUIMachineDiFurnaceRTG; import com.hbm.inventory.recipes.BlastFurnaceRecipes; +import com.hbm.items.machine.ItemRTGPellet; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.RTGUtil; @@ -25,6 +26,8 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU private static final short timeRequired = 1200; private static final int[] rtgIn = new int[] {3, 4, 5, 6, 7, 8}; private String name; + public byte sideUpper = 1; + public byte sideLower = 1; public TileEntityDiFurnaceRTG() { super(9); @@ -70,6 +73,7 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU NBTTagCompound data = new NBTTagCompound(); data.setShort("progress", progress); data.setShort("speed", processSpeed); + data.setByteArray("modes", new byte[] {(byte) sideUpper, (byte) sideLower}); networkPack(data, 10); } @@ -77,6 +81,9 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU public void networkUnpack(NBTTagCompound nbt) { progress = nbt.getShort("progress"); processSpeed = nbt.getShort("speed"); + byte[] modes = nbt.getByteArray("modes"); + this.sideUpper = modes[0]; + this.sideLower = modes[1]; } private void processItem() { @@ -105,6 +112,10 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU super.readFromNBT(nbt); progress = nbt.getShort("progress"); processSpeed = nbt.getShort("speed"); + + byte[] modes = nbt.getByteArray("modes"); + this.sideUpper = modes[0]; + this.sideLower = modes[1]; } @Override @@ -112,6 +123,7 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU super.writeToNBT(nbt); nbt.setShort("progress", progress); nbt.setShort("speed", processSpeed); + nbt.setByteArray("modes", new byte[] {(byte) sideUpper, (byte) sideLower}); } public int getDiFurnaceProgressScaled(int i) { @@ -159,21 +171,33 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU return 64; } + @Override + public boolean canInsertItem(int i, ItemStack itemStack, int j) { + if(i == 0 && this.sideUpper != j) return false; + if(i == 1 && this.sideLower != j) return false; + + return this.isItemValidForSlot(i, itemStack); + } + @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - if(i == 2) { - return false; - } - return true; + if(i == 2) return false; + if(stack.getItem() instanceof ItemRTGPellet) return i > 2; + return !(stack.getItem() instanceof ItemRTGPellet); } @Override public int[] getAccessibleSlotsFromSide(int side) { - return side == 0 ? new int[] {2} : side == 1 ? new int[] {0} : new int[] {1}; + return new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8}; } @Override public boolean canExtractItem(int slot, ItemStack stack, int side) { + + if(slot > 2) { + return !(stack.getItem() instanceof ItemRTGPellet); + } + return slot == 2; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index c2eb12a1a..04b147c79 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -4,29 +4,52 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.BlockDummyable; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; -import com.hbm.inventory.container.ContainerElectrolyser; -import com.hbm.inventory.fluid.FluidType; +import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.container.ContainerElectrolyserFluid; +import com.hbm.inventory.container.ContainerElectrolyserMetal; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.gui.GUIElectrolyser; +import com.hbm.inventory.gui.GUIElectrolyserFluid; +import com.hbm.inventory.gui.GUIElectrolyserMetal; +import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.recipes.ElectrolyserFluidRecipes; +import com.hbm.inventory.recipes.ElectrolyserFluidRecipes.ElectrolysisRecipe; +import com.hbm.inventory.recipes.ElectrolyserMetalRecipes; +import com.hbm.inventory.recipes.ElectrolyserMetalRecipes.ElectrolysisMetalRecipe; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.CrucibleUtil; +import com.hbm.util.I18nUtil; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor, IGUIProvider /* TODO: new fluid API */ { +public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyUser, IFluidStandardTransceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 20000000; @@ -39,15 +62,45 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn public int progressOre; public static final int processOreTimeBase = 1000; public int processOreTime; + + public MaterialStack leftStack; + public MaterialStack rightStack; + public int maxMaterial = MaterialShapes.BLOCK.q(16); public FluidTank[] tanks; public TileEntityElectrolyser() { - super(24); - tanks = new FluidTank[3]; - tanks[0] = new FluidTank(Fluids.WATER, 16000, 0); - tanks[1] = new FluidTank(Fluids.HYDROGEN, 16000, 1); - tanks[2] = new FluidTank(Fluids.OXYGEN, 16000, 2); + //0: Battery + //1-2: Upgrades + //// FLUID + //3-4: Fluid ID + //5-10: Fluid IO + //11-13: Byproducts + //// METAL + //14: Crystal + //15-20: Outputs + super(21); + tanks = new FluidTank[4]; + tanks[0] = new FluidTank(Fluids.WATER, 16000); + tanks[1] = new FluidTank(Fluids.HYDROGEN, 16000); + tanks[2] = new FluidTank(Fluids.OXYGEN, 16000); + tanks[3] = new FluidTank(Fluids.NITRIC_ACID, 16000); + } + + @Override + public int[] getAccessibleSlotsFromSide(int meta) { + return new int[] { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + if(i == 14) return ElectrolyserMetalRecipes.getRecipe(itemStack) != null; + return false; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return i != 14; } @Override @@ -60,8 +113,98 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn if(!worldObj.isRemote) { - this.tanks[0].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); + this.tanks[0].setType(3, 4, slots); + this.tanks[0].loadTank(5, 6, slots); + this.tanks[1].unloadTank(7, 8, slots); + this.tanks[2].unloadTank(9, 10, slots); + if(worldObj.getTotalWorldTime() % 20 == 0) { + for(DirPos pos : this.getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[3].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + UpgradeManager.eval(slots, 1, 2); + int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); + + processFluidTime = processFluidTimeBase - processFluidTimeBase * speedLevel / 4; + processOreTime = processOreTimeBase - processOreTimeBase * speedLevel / 4; + usage = usageBase - usageBase * powerLevel / 4; + + if(this.canProcessFluid()) { + this.progressFluid++; + this.power -= this.usage; + + if(this.progressFluid >= this.processFluidTime) { + this.processFluids(); + this.progressFluid = 0; + this.markChanged(); + } + } + + if(this.canProcesMetal()) { + this.progressOre++; + this.power -= this.usage; + + if(this.progressOre >= this.processOreTime) { + this.processMetal(); + this.progressOre = 0; + this.markChanged(); + } + } + + if(this.leftStack != null) { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); + List toCast = new ArrayList(); + toCast.add(this.leftStack); + + Vec3 impact = Vec3.createVectorHelper(0, 0, 0); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(1), impact); + + if(didPour != null) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "foundry"); + data.setInteger("color", didPour.material.moltenColor); + data.setByte("dir", (byte) dir.ordinal()); + data.setFloat("off", 0.625F); + data.setFloat("base", 0.625F); + data.setFloat("len", Math.max(1F, yCoord - (float) (Math.ceil(impact.yCoord) - 0.875) + 2)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2, zCoord + 0.5D + dir.offsetZ * 5.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); + + if(this.leftStack.amount <= 0) this.leftStack = null; + } + } + + if(this.rightStack != null) { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + List toCast = new ArrayList(); + toCast.add(this.rightStack); + + Vec3 impact = Vec3.createVectorHelper(0, 0, 0); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(1), impact); + + if(didPour != null) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "foundry"); + data.setInteger("color", didPour.material.moltenColor); + data.setByte("dir", (byte) dir.ordinal()); + data.setFloat("off", 0.625F); + data.setFloat("base", 0.625F); + data.setFloat("len", Math.max(1F, yCoord - (float) (Math.ceil(impact.yCoord) - 0.875) + 2)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2, zCoord + 0.5D + dir.offsetZ * 5.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); + + if(this.rightStack.amount <= 0) this.rightStack = null; + } + } NBTTagCompound data = new NBTTagCompound(); data.setLong("power", this.power); @@ -70,25 +213,202 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn data.setInteger("usage", this.usage); data.setInteger("processFluidTime", this.processFluidTime); data.setInteger("processOreTime", this.processOreTime); + if(this.leftStack != null) { + data.setInteger("leftType", leftStack.material.id); + data.setInteger("leftAmount", leftStack.amount); + } + if(this.rightStack != null) { + data.setInteger("rightType", rightStack.material.id); + data.setInteger("rightAmount", rightStack.amount); + } + for(int i = 0; i < 4; i++) tanks[i].writeToNBT(data, "t" + i); this.networkPack(data, 50); - - fillFluidInit(tanks[1].getTankType()); - fillFluidInit(tanks[2].getTankType()); } + } + + public DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new DirPos[] { + new DirPos(xCoord - dir.offsetX * 6, yCoord, zCoord - dir.offsetZ * 6, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 6 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 6 + rot.offsetZ, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 6 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 6 - rot.offsetZ, dir.getOpposite()), + new DirPos(xCoord + dir.offsetX * 6, yCoord, zCoord + dir.offsetZ * 6, dir), + new DirPos(xCoord + dir.offsetX * 6 + rot.offsetX, yCoord, zCoord + dir.offsetZ * 6 + rot.offsetZ, dir), + new DirPos(xCoord + dir.offsetX * 6 - rot.offsetX, yCoord, zCoord + dir.offsetZ * 6 - rot.offsetZ, dir) + }; + } + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.progressFluid = nbt.getInteger("progressFluid"); + this.progressOre = nbt.getInteger("progressOre"); + this.usage = nbt.getInteger("usage"); + this.processFluidTime = nbt.getInteger("processFluidTime"); + this.processOreTime = nbt.getInteger("processOreTime"); + if(nbt.hasKey("leftType")) this.leftStack = new MaterialStack(Mats.matById.get(nbt.getInteger("leftType")), nbt.getInteger("leftAmount")); + else this.leftStack = null; + if(nbt.hasKey("rightType")) this.rightStack = new MaterialStack(Mats.matById.get(nbt.getInteger("rightType")), nbt.getInteger("rightAmount")); + else this.rightStack = null; + for(int i = 0; i < 4; i++) tanks[i].readFromNBT(nbt, "t" + i); + } + + public boolean canProcessFluid() { + + if(this.power < usage) return false; + + ElectrolysisRecipe recipe = ElectrolyserFluidRecipes.recipes.get(tanks[0].getTankType()); + + if(recipe == null) return false; + if(recipe.amount > tanks[0].getFill()) return false; + if(recipe.output1.type == tanks[1].getTankType() && recipe.output1.fill + tanks[1].getFill() > tanks[1].getMaxFill()) return false; + if(recipe.output2.type == tanks[2].getTankType() && recipe.output2.fill + tanks[2].getFill() > tanks[2].getMaxFill()) return false; + + if(recipe.byproduct != null) { + + for(int i = 0; i < recipe.byproduct.length; i++) { + ItemStack slot = slots[11 + i]; + ItemStack byproduct = recipe.byproduct[i]; + + if(slot == null) continue; + if(!slot.isItemEqual(byproduct)) return false; + if(slot.stackSize + byproduct.stackSize > slot.getMaxStackSize()) return false; + } + } + + return true; + } + + public void processFluids() { + + ElectrolysisRecipe recipe = ElectrolyserFluidRecipes.recipes.get(tanks[0].getTankType()); + tanks[0].setFill(tanks[0].getFill() - recipe.amount); + tanks[1].setTankType(recipe.output1.type); + tanks[2].setTankType(recipe.output2.type); + tanks[1].setFill(tanks[1].getFill() + recipe.output1.fill); + tanks[2].setFill(tanks[2].getFill() + recipe.output2.fill); + + if(recipe.byproduct != null) { + + for(int i = 0; i < recipe.byproduct.length; i++) { + ItemStack slot = slots[11 + i]; + ItemStack byproduct = recipe.byproduct[i]; + + if(slot == null) { + slots[11 + i] = byproduct.copy(); + } else { + slots[11 + i].stackSize += byproduct.stackSize; + } + } + } + } + + public boolean canProcesMetal() { + + if(slots[14] == null) return false; + if(this.power < usage) return false; + if(this.tanks[3].getFill() < 100) return false; + + ElectrolysisMetalRecipe recipe = ElectrolyserMetalRecipes.getRecipe(slots[14]); + if(recipe == null) return false; + + if(leftStack != null) { + if(recipe.output1.material != leftStack.material) return false; + if(recipe.output1.amount + leftStack.amount > this.maxMaterial) return false; + } + + if(rightStack != null) { + if(recipe.output2.material != rightStack.material) return false; + if(recipe.output2.amount + rightStack.amount > this.maxMaterial) return false; + } + + if(recipe.byproduct != null) { + + for(int i = 0; i < recipe.byproduct.length; i++) { + ItemStack slot = slots[15 + i]; + ItemStack byproduct = recipe.byproduct[i]; + + if(slot == null) continue; + if(!slot.isItemEqual(byproduct)) return false; + if(slot.stackSize + byproduct.stackSize > slot.getMaxStackSize()) return false; + } + } + + return true; + } + + public void processMetal() { + + ElectrolysisMetalRecipe recipe = ElectrolyserMetalRecipes.getRecipe(slots[14]); + + if(leftStack == null) { + leftStack = new MaterialStack(recipe.output1.material, recipe.output1.amount); + } else { + leftStack.amount += recipe.output1.amount; + } + + if(rightStack == null) { + rightStack = new MaterialStack(recipe.output2.material, recipe.output2.amount); + } else { + rightStack.amount += recipe.output2.amount; + } + + if(recipe.byproduct != null) { + + for(int i = 0; i < recipe.byproduct.length; i++) { + ItemStack slot = slots[15 + i]; + ItemStack byproduct = recipe.byproduct[i]; + + if(slot == null) { + slots[15 + i] = byproduct.copy(); + } else { + slots[15 + i].stackSize += byproduct.stackSize; + } + } + } + + this.tanks[3].setFill(this.tanks[3].getFill() - 100); + this.decrStackSize(14, 1); } @Override - public void fillFluidInit(FluidType type) { + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.power = nbt.getLong("power"); + this.progressFluid = nbt.getInteger("progressFluid"); + this.progressOre = nbt.getInteger("progressOre"); + this.usage = nbt.getInteger("usage"); + this.processFluidTime = nbt.getInteger("processFluidTime"); + this.processOreTime = nbt.getInteger("processOreTime"); + if(nbt.hasKey("leftType")) this.leftStack = new MaterialStack(Mats.matById.get(nbt.getInteger("leftType")), nbt.getInteger("leftAmount")); + else this.leftStack = null; + if(nbt.hasKey("rightType")) this.rightStack = new MaterialStack(Mats.matById.get(nbt.getInteger("rightType")), nbt.getInteger("rightAmount")); + else this.rightStack = null; + for(int i = 0; i < 4; i++) tanks[i].readFromNBT(nbt, "t" + i); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - - fillFluid(xCoord + dir.offsetX * 5 + rot.offsetX * -1, yCoord-1, zCoord + dir.offsetZ * 5 + rot.offsetZ * -1, getTact(), type); - fillFluid(xCoord + dir.offsetX * 5 + rot.offsetX * -1, yCoord-1, zCoord + dir.offsetZ * 5 + rot.offsetZ * 1, getTact(), type); - fillFluid(xCoord + dir.offsetX * -5 + rot.offsetX * -1, yCoord-1, zCoord + dir.offsetZ * 5 + rot.offsetZ * -1, getTact(), type); - fillFluid(xCoord + dir.offsetX * -5 + rot.offsetX * -1, yCoord-1, zCoord + dir.offsetZ * 5 + rot.offsetZ * 1, getTact(), type); - + nbt.setLong("power", this.power); + nbt.setInteger("progressFluid", this.progressFluid); + nbt.setInteger("progressOre", this.progressOre); + nbt.setInteger("usage", this.usage); + nbt.setInteger("processFluidTime", this.processFluidTime); + nbt.setInteger("processOreTime", this.processOreTime); + if(this.leftStack != null) { + nbt.setInteger("leftType", leftStack.material.id); + nbt.setInteger("leftAmount", leftStack.amount); + } + if(this.rightStack != null) { + nbt.setInteger("rightType", rightStack.material.id); + nbt.setInteger("rightAmount", rightStack.amount); + } + for(int i = 0; i < 4; i++) tanks[i].writeToNBT(nbt, "t" + i); } AxisAlignedBB bb = null; @@ -98,12 +418,12 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn if(bb == null) { bb = AxisAlignedBB.getBoundingBox( - xCoord - 3, + xCoord - 5, yCoord - 0, - zCoord - 4, - xCoord + 3, + zCoord - 5, + xCoord + 6, yCoord + 4, - zCoord + 4 + zCoord + 6 ); } @@ -126,79 +446,74 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn return maxPower; } - @Override - public void setFillForSync(int fill, int index) { - tanks[index].setFill(fill); - - } - - @Override - public void setFluidFill(int fill, FluidType type) { - for(int i = 0; i < 3; i++) { - if(type == tanks[i].getTankType()) - tanks[i].setFill(fill); - } - - } - - @Override - public void setTypeForSync(FluidType type, int index) { - tanks[index].setTankType(type); - - } - - @Override - public int getFluidFill(FluidType type) { - for(int i = 0; i < 3; i++) { - if(type == tanks[i].getTankType() && tanks[i].getFill() != 0) - return tanks[i].getFill(); - } - return 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - for(int i = 0; i < 3; i++) { - if(type == tanks[i].getTankType() && tanks[i].getMaxFill() != 0) - return tanks[i].getMaxFill(); - } - return 0; - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return worldObj.getTotalWorldTime() % 20 < 10; - } - - @Override - public List getFluidList(FluidType type) { - return new ArrayList(); - } - - @Override - public void clearFluidList(FluidType type) { - return; - } - @Override public void setPower(long power) { this.power = power; } + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[1], tanks[2]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0], tanks[3]}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerElectrolyser(player.inventory, this); + if(ID == 0) return new ContainerElectrolyserFluid(player.inventory, this); + return new ContainerElectrolyserMetal(player.inventory, this); } @Override @SideOnly(Side.CLIENT) public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIElectrolyser(player.inventory, this); + if(ID == 0) return new GUIElectrolyserFluid(player.inventory, this); + return new GUIElectrolyserMetal(player.inventory, this); } + @Override + public void receiveControl(NBTTagCompound data) { } + + @Override + public void receiveControl(EntityPlayer player, NBTTagCompound data) { + + if(data.hasKey("sgm")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 1, worldObj, xCoord, yCoord, zCoord); + if(data.hasKey("sgf")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, worldObj, xCoord, yCoord, zCoord); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electrolyser)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java index 8fe8b6f4d..40b8b27e3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java @@ -68,7 +68,7 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyUser, if(!worldObj.isRemote) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - this.trySubscribe(worldObj, xCoord + dir.offsetX * -5, yCoord + 1, zCoord + dir.offsetZ * -5, dir); + this.trySubscribe(worldObj, xCoord + dir.offsetX * -5, yCoord + 1, zCoord + dir.offsetZ * -5, dir.getOpposite()); this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); if(this.isOn && !(this.slots[1] == null)) { @@ -160,7 +160,7 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyUser, } float hardness = b.getExplosionResistance(null); - if(hardness < 2400 && worldObj.rand.nextInt(5) == 0) { + if(hardness < 75 && worldObj.rand.nextInt(5) == 0) { worldObj.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "random.fizz", 1.0F, 1.0F); Block block = (this.mode != EnumWavelengths.DRX) ? Blocks.fire : (MainRegistry.polaroidID == 11) ? ModBlocks.digamma_matter : ModBlocks.fire_digamma; worldObj.setBlock(x, y, z, block); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java index 9fb40234e..5a52abb70 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java @@ -1,20 +1,30 @@ package com.hbm.tileentity.machine; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.module.ModuleBurnTime; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; +import com.hbm.util.ItemStackUtil; +import api.hbm.fluid.IFluidStandardSender; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraftforge.common.util.ForgeDirection; -public abstract class TileEntityFireboxBase extends TileEntityMachineBase implements IGUIProvider, IHeatSource { +public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting implements IFluidStandardSender, IGUIProvider, IHeatSource { public int maxBurnTime; public int burnTime; @@ -29,7 +39,7 @@ public abstract class TileEntityFireboxBase extends TileEntityMachineBase implem public TileEntityFireboxBase() { - super(2); + super(2, 50); } @Override @@ -47,6 +57,15 @@ public abstract class TileEntityFireboxBase extends TileEntityMachineBase implem if(!worldObj.isRemote) { + for(int i = 2; i < 6; i++) { + ForgeDirection dir = ForgeDirection.getOrientation(i); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + for(int j = -1; j <= 1; j++) { + this.sendSmoke(xCoord + dir.offsetX * 2 + rot.offsetX * j, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * j, dir); + } + } + wasOn = false; if(burnTime <= 0) { @@ -54,9 +73,21 @@ public abstract class TileEntityFireboxBase extends TileEntityMachineBase implem for(int i = 0; i < 2; i++) { if(slots[i] != null) { - int fuel = (int) (getModule().getBurnTime(slots[i]) * getTimeMult()); + int baseTime = getModule().getBurnTime(slots[i]); - if(fuel > 0) { + if(baseTime > 0) { + int fuel = (int) (baseTime * getTimeMult()); + + TileEntity below = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); + + if(below instanceof TileEntityAshpit) { + TileEntityAshpit ashpit = (TileEntityAshpit) below; + EnumAshType type = this.getAshFromFuel(slots[i]); + if(type == EnumAshType.WOOD) ashpit.ashLevelWood += baseTime; + if(type == EnumAshType.COAL) ashpit.ashLevelCoal += baseTime; + if(type == EnumAshType.MISC) ashpit.ashLevelMisc += baseTime; + } + this.maxBurnTime = this.burnTime = fuel; this.burnHeat = getModule().getBurnHeat(getBaseHeat(), slots[i]); slots[i].stackSize--; @@ -74,6 +105,7 @@ public abstract class TileEntityFireboxBase extends TileEntityMachineBase implem if(this.heatEnergy < getMaxHeat()) { burnTime--; + if(worldObj.getTotalWorldTime() % 20 == 0) this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 3); } this.wasOn = true; @@ -118,6 +150,22 @@ public abstract class TileEntityFireboxBase extends TileEntityMachineBase implem } } } + + public static EnumAshType getAshFromFuel(ItemStack stack) { + + List names = ItemStackUtil.getOreDictNames(stack); + + for(String name : names) { + if(name.contains("Coke")) return EnumAshType.COAL; + if(name.contains("Coal")) return EnumAshType.COAL; + if(name.contains("Lignite")) return EnumAshType.COAL; + if(name.startsWith("log")) return EnumAshType.WOOD; + if(name.contains("Wood")) return EnumAshType.WOOD; + if(name.contains("Sapling")) return EnumAshType.WOOD; + } + + return EnumAshType.MISC; + } public abstract ModuleBurnTime getModule(); public abstract int getBaseHeat(); @@ -198,4 +246,19 @@ public abstract class TileEntityFireboxBase extends TileEntityMachineBase implem public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[0]; + } + + @Override + public FluidTank[] getSendingTanks() { + return this.getSmokeTanks(); + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + return dir != ForgeDirection.UNKNOWN && dir != ForgeDirection.DOWN; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java new file mode 100644 index 000000000..ef09f7257 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java @@ -0,0 +1,115 @@ +package com.hbm.tileentity.machine; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockDynamicSlag.TileEntitySlag; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.util.Compat; + +import api.hbm.block.ICrucibleAcceptor; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.block.Block; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityFoundrySlagtap extends TileEntity implements ICrucibleAcceptor { + + @Override + public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { + + Vec3 start = Vec3.createVectorHelper(x + 0.5, y - 0.125, z + 0.5); + Vec3 end = Vec3.createVectorHelper(x + 0.5, y + 0.125 - 15, z + 0.5); + + MovingObjectPosition mop = world.func_147447_a(start, end, true, true, true); + + if(mop == null || mop.typeOfHit != mop.typeOfHit.BLOCK) { + return false; + } + + return true; + } + + @Override + public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { + + if(stack == null || stack.material == null || stack.amount <= 0) { + return null; + } + + Vec3 start = Vec3.createVectorHelper(x + 0.5, y - 0.125, z + 0.5); + Vec3 end = Vec3.createVectorHelper(x + 0.5, y + 0.125 - 15, z + 0.5); + + MovingObjectPosition mop = world.func_147447_a(start, end, true, true, true); + + if(mop == null || mop.typeOfHit != mop.typeOfHit.BLOCK) { + return null; + } + + Block hit = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); + Block above = world.getBlock(mop.blockX, mop.blockY + 1, mop.blockZ); + + boolean didFlow = false; + + if(hit == ModBlocks.slag) { + TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, mop.blockX, mop.blockY, mop.blockZ); + if(tile.mat == stack.material) { + int transfer = Math.min(tile.maxAmount - tile.amount, stack.amount); + tile.amount += transfer; + stack.amount -= transfer; + didFlow = didFlow || transfer > 0; + world.markBlockForUpdate(mop.blockX, mop.blockY, mop.blockZ); + world.scheduleBlockUpdate(mop.blockX, mop.blockY, mop.blockZ, ModBlocks.slag, 1); + } + } else if(hit.isReplaceable(world, mop.blockX, mop.blockY, mop.blockZ)) { + world.setBlock(mop.blockX, mop.blockY, mop.blockZ, ModBlocks.slag); + TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, mop.blockX, mop.blockY, mop.blockZ); + tile.mat = stack.material; + int transfer = Math.min(tile.maxAmount, stack.amount); + tile.amount += transfer; + stack.amount -= transfer; + didFlow = didFlow || transfer > 0; + world.markBlockForUpdate(mop.blockX, mop.blockY, mop.blockZ); + world.scheduleBlockUpdate(mop.blockX, mop.blockY, mop.blockZ, ModBlocks.slag, 1); + } + + if(stack.amount > 0 && above.isReplaceable(world, mop.blockX, mop.blockY + 1, mop.blockZ)) { + world.setBlock(mop.blockX, mop.blockY + 1, mop.blockZ, ModBlocks.slag); + TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, mop.blockX, mop.blockY + 1, mop.blockZ); + tile.mat = stack.material; + int transfer = Math.min(tile.maxAmount, stack.amount); + tile.amount += transfer; + stack.amount -= transfer; + didFlow = didFlow || transfer > 0; + world.markBlockForUpdate(mop.blockX, mop.blockY + 1, mop.blockZ); + world.scheduleBlockUpdate(mop.blockX, mop.blockY + 1, mop.blockZ, ModBlocks.slag, 1); + } + + if(didFlow) { + ForgeDirection dir = side.getOpposite(); + double hitY = mop.blockY; + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "foundry"); + data.setInteger("color", stack.material.moltenColor); + data.setByte("dir", (byte) dir.ordinal()); + data.setFloat("off", 0.375F); + data.setFloat("base", 0F); + data.setFloat("len", Math.max(1F, yCoord - (float) (Math.ceil(hitY)))); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D - dir.offsetX * 0.125, yCoord + 0.125, zCoord + 0.5D - dir.offsetZ * 0.125), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord, zCoord + 0.5, 50)); + } + + if(stack.amount <= 0) { + stack = null; + } + + return stack; + } + + @Override public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { return false; } + @Override public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { return stack; } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java index 3295b6b0c..4b6c42214 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java @@ -2,6 +2,8 @@ package com.hbm.tileentity.machine; import java.util.List; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.FluidStack; import com.hbm.inventory.container.ContainerFurnaceCombo; import com.hbm.inventory.fluid.Fluids; @@ -9,7 +11,7 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIFurnaceCombo; import com.hbm.inventory.recipes.CombinationRecipes; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.util.Tuple.Pair; import api.hbm.fluid.IFluidStandardSender; @@ -27,7 +29,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityFurnaceCombination extends TileEntityMachineBase implements IFluidStandardSender, IGUIProvider { +public class TileEntityFurnaceCombination extends TileEntityMachinePolluting implements IFluidStandardSender, IGUIProvider { public boolean wasOn; public int progress; @@ -40,7 +42,7 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen public FluidTank tank; public TileEntityFurnaceCombination() { - super(4); + super(4, 50); this.tank = new FluidTank(Fluids.NONE, 24_000); } @@ -62,14 +64,16 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen for(int y = yCoord; y <= yCoord + 1; y++) { for(int j = -1; j <= 1; j++) { - if(tank.getFill() > 0) this.sendFluid(tank.getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * j, y, zCoord + dir.offsetZ * 2 + rot.offsetZ * j, dir); + if(tank.getFill() > 0) this.sendFluid(tank, worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * j, y, zCoord + dir.offsetZ * 2 + rot.offsetZ * j, dir); + this.sendSmoke(xCoord + dir.offsetX * 2 + rot.offsetX * j, y, zCoord + dir.offsetZ * 2 + rot.offsetZ * j, dir); } } } for(int x = xCoord - 1; x <= xCoord + 1; x++) { for(int z = zCoord - 1; z <= zCoord + 1; z++) { - if(tank.getFill() > 0) this.sendFluid(tank.getTankType(), worldObj, x, yCoord + 2, z, ForgeDirection.UP); + if(tank.getFill() > 0) this.sendFluid(tank, worldObj, x, yCoord + 2, z, ForgeDirection.UP); + this.sendSmoke(x, yCoord + 2, z, ForgeDirection.UP); } } } @@ -118,6 +122,7 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen for(Entity e : entities) e.setFire(5); if(worldObj.getTotalWorldTime() % 10 == 0) this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 1, this.zCoord, "hbm:weapon.flamethrowerShoot", 0.25F, 0.5F); + if(worldObj.getTotalWorldTime() % 20 == 0) this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 3); } } else { this.progress = 0; @@ -270,6 +275,6 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen @Override public FluidTank[] getSendingTanks() { - return new FluidTank[] {tank}; + return new FluidTank[] {tank, smoke, smoke_leaded, smoke_poison}; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java index 2fde9b86e..9a00a9bba 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java @@ -1,12 +1,19 @@ package com.hbm.tileentity.machine; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerFurnaceIron; import com.hbm.inventory.gui.GUIFurnaceIron; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.module.ModuleBurnTime; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -17,10 +24,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUIProvider { +public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUIProvider, IUpgradeInfoProvider { public int maxBurnTime; public int burnTime; @@ -65,7 +73,6 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI if(slots[i] != null) { int fuel = burnModule.getBurnTime(slots[i]); - //int fuel = TileEntityFurnace.getItemBurnTime(slots[i]); if(fuel > 0) { this.maxBurnTime = this.burnTime = fuel; @@ -104,6 +111,7 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI this.progress = 0; this.markDirty(); } + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); } else { this.progress = 0; } @@ -232,4 +240,23 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.furnace_iron)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 50 / 3) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java index ff6bffa73..77d212d9e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java @@ -2,6 +2,8 @@ package com.hbm.tileentity.machine; import java.util.List; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.container.ContainerFurnaceSteel; import com.hbm.inventory.gui.GUIFurnaceSteel; import com.hbm.tileentity.IGUIProvider; @@ -67,6 +69,7 @@ public class TileEntityFurnaceSteel extends TileEntityMachineBase implements IGU progress[i] += burn; this.heat -= burn; this.wasOn = true; + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 2); } lastItems[i] = slots[i]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java index e9b9e17db..4c43bf5fc 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java @@ -4,9 +4,15 @@ import java.util.ArrayList; import java.util.List; import com.hbm.handler.radiation.ChunkRadiationManager; +import cpw.mods.fml.common.Optional; +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.tileentity.TileEntity; -public class TileEntityGeiger extends TileEntity { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityGeiger extends TileEntity implements SimpleComponent { int timer = 0; int ticker = 0; @@ -57,5 +63,15 @@ public class TileEntityGeiger extends TileEntity { int rads = (int)Math.ceil(ChunkRadiationManager.proxy.getRadiation(worldObj, xCoord, yCoord, zCoord)); return rads; } + @Override + public String getComponentName() { + return "ntm_geiger"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getRads(Context context, Arguments args) { + return new Object[] {check()}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java index 215f5d766..fed73cb60 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java @@ -43,7 +43,10 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs public boolean isOn = false; public boolean analysisOnly = false; - public boolean hopperMode = false; + public int ioMode = 0; + public static final int MODE_DEFAULT = 0; + public static final int MODE_HOPPER = 1; + public static final int MODE_SINGLE = 2; private int delay; public EnumHadronState state = EnumHadronState.IDLE; @@ -71,8 +74,8 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs @Override public int[] getAccessibleSlotsFromSide(int side) { - return access; - } + return access; + } @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { @@ -81,7 +84,19 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - return i == 0 || i == 1; + if(i != 0 && i != 1) return false; + + if(this.ioMode == MODE_SINGLE) { + return slots[i] == null; + } + + //makes sure that equal items like the antimatter capsules are spread out evenly + if(slots[0] != null && slots[1] != null && slots[0].getItem() == slots[1].getItem() && slots[0].getItemDamage() == slots[1].getItemDamage()) { + if(i == 0) return slots[1].stackSize - slots[0].stackSize >= 0; + if(i == 1) return slots[0].stackSize - slots[1].stackSize >= 0; + } + + return true; } @Override @@ -94,7 +109,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs if(delay <= 0 && this.isOn && particles.size() < maxParticles && slots[0] != null && slots[1] != null && power >= maxPower * 0.75) { - if(!hopperMode || (slots[0].stackSize > 1 && slots[1].stackSize > 1)) { + if(ioMode != MODE_HOPPER || (slots[0].stackSize > 1 && slots[1].stackSize > 1)) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); particles.add(new Particle(slots[0], slots[1], dir, xCoord, yCoord, zCoord)); this.decrStackSize(0, 1); @@ -123,7 +138,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs data.setBoolean("isOn", isOn); data.setLong("power", power); data.setBoolean("analysis", analysisOnly); - data.setBoolean("hopperMode", hopperMode); + data.setInteger("ioMode", ioMode); data.setByte("state", (byte) state.ordinal()); data.setBoolean("stat_success", stat_success); @@ -181,7 +196,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs this.isOn = data.getBoolean("isOn"); this.power = data.getLong("power"); this.analysisOnly = data.getBoolean("analysis"); - this.hopperMode = data.getBoolean("hopperMode"); + this.ioMode = data.getInteger("ioMode"); this.state = EnumHadronState.values()[data.getByte("state")]; this.stat_success = data.getBoolean("stat_success"); @@ -199,8 +214,12 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs this.isOn = !this.isOn; if(meta == 1) this.analysisOnly = !this.analysisOnly; - if(meta == 2) - this.hopperMode = !this.hopperMode; + if(meta == 2) { + this.ioMode++; + if(ioMode > 2) ioMode = 0; + } + + this.markChanged(); } private void drawPower() { @@ -254,7 +273,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs this.isOn = nbt.getBoolean("isOn"); this.power = nbt.getLong("power"); this.analysisOnly = nbt.getBoolean("analysis"); - this.hopperMode = nbt.getBoolean("hopperMode"); + this.ioMode = nbt.getInteger("ioMode"); } @Override @@ -264,7 +283,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs nbt.setBoolean("isOn", isOn); nbt.setLong("power", power); nbt.setBoolean("analysis", analysisOnly); - nbt.setBoolean("hopperMode", hopperMode); + nbt.setInteger("ioMode", ioMode); } public int getPowerScaled(int i) { @@ -322,6 +341,8 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs int charge; int analysis; boolean isCheckExempt = false; + int cl0 = 0; + int cl1 = 0; boolean expired = false; @@ -375,6 +396,34 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs if(charge < 0) this.expire(EnumHadronState.ERROR_NO_CHARGE); + + if(cl0 > 0) cl0--; + if(cl1 > 0) cl1--; + } + + public void incrementCharge(Block block, int meta, int coilVal) { + + if(block == ModBlocks.hadron_cooler) { + if(meta == 0) cl0 += 10; + if(meta == 1) cl1 += 5; + } + + //not the best code ever made but it works, dammit + if(cl1 > 0) { + + double mult = 2D - (cl1 - 15D) * (cl1 - 15D) / 225D; + mult = Math.max(mult, 0.1D); + coilVal *= mult; + + } else if(cl0 > 0) { + if(cl0 > 10) { + coilVal *= 0.75; + } else { + coilVal *= 1.10; + } + } + + this.momentum += coilVal; } } @@ -414,7 +463,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs if(block == ModBlocks.hadron_diode) p.isCheckExempt = true; - if(coilValue(worldObj.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ)) > 0) + if(isValidCoil(worldObj.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ))) p.isCheckExempt = true; } @@ -445,6 +494,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs for(int c = z - dZ * 2; c <= z + dZ * 2;c++) { Block block = worldObj.getBlock(a, b, c); + int meta = worldObj.getBlockMetadata(a, b, c); /** ignore the center for now */ if(a == x && b == y && c == z) { @@ -479,11 +529,11 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs int coilVal = coilValue(block); //not a valid coil: kablam! - if(coilVal == 0) { + if(!isValidCoil(block)) { p.expire(EnumHadronState.ERROR_EXPECTED_COIL); } else { - p.momentum += coilVal; p.charge -= coilVal; + p.incrementCharge(block, meta, coilVal); } continue; @@ -641,7 +691,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs return; //so, the next block is most certainly a wall. not good. perhaps we could try turning? - if(coilValue(next) > 0) { + if(isValidCoil(next)) { ForgeDirection validDir = ForgeDirection.UNKNOWN; @@ -692,6 +742,14 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs return dirs; } + public boolean isValidCoil(Block b) { + if(coilValue(b) > 0) return true; + + if(b == ModBlocks.hadron_cooler) return true; + + return false; + } + public int coilValue(Block b) { if(b instanceof BlockHadronCoil) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java index a2325f6af..39b72b06c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java @@ -20,7 +20,9 @@ import com.hbm.inventory.fluid.trait.FT_Heatable; import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingStep; import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; import com.hbm.saveddata.TomSaveData; +import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; @@ -41,18 +43,22 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid public int heat; public FluidTank[] tanks; public List list = new ArrayList(); + public boolean isOn; public boolean hasExploded = false; + private AudioWrapper audio; + private int audioTime; + /* CONFIGURABLE */ - public static int maxHeat = 12_800_000; //the heat required to turn 64k of water into steam + public static int maxHeat = 3_200_000; public static double diffusion = 0.1D; public static boolean canExplode = true; public TileEntityHeatBoiler() { this.tanks = new FluidTank[2]; - this.tanks[0] = new FluidTank(Fluids.WATER, 64_000, 0); - this.tanks[1] = new FluidTank(Fluids.STEAM, 64_000 * 100, 1); + this.tanks[0] = new FluidTank(Fluids.WATER, 16_000); + this.tanks[1] = new FluidTank(Fluids.STEAM, 16_000 * 100); } @Override @@ -76,6 +82,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid data.setInteger("heat", lastHeat); tanks[0].writeToNBT(data, "0"); + this.isOn = false; this.tryConvert(); tanks[1].writeToNBT(data, "1"); @@ -84,9 +91,59 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid fillFluidInit(tanks[1].getTankType()); } } - + data.setBoolean("exploded", this.hasExploded); + data.setBoolean("isOn", this.isOn); INBTPacketReceiver.networkPack(this, data, 25); + } else { + + if(this.isOn) audioTime = 20; + + if(audioTime > 0) { + + audioTime--; + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + } + } + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.125F, 10F, 1.0F, 20); + } + + @Override + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; } } @@ -96,6 +153,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid this.heat = nbt.getInteger("heat"); this.tanks[0].readFromNBT(nbt, "0"); this.tanks[1].readFromNBT(nbt, "1"); + this.isOn = nbt.getBoolean("isOn"); } protected void tryPullHeat() { @@ -159,6 +217,10 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.boilerGroan", 0.5F, 1.0F); } + if(ops > 0) { + this.isOn = true; + } + if(outputOps == 0 && canExplode) { this.hasExploded = true; BlockDummyable.safeRem = true; @@ -193,7 +255,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java new file mode 100644 index 000000000..fa447da65 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java @@ -0,0 +1,303 @@ +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.inventory.fluid.trait.FT_Heatable; +import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingStep; +import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.saveddata.TomSaveData; +import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IConfigurableMachine; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.fluid.IFluidStandardTransceiver; +import api.hbm.tile.IHeatSource; +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.minecraft.world.EnumSkyBlock; + +public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine { + + public int heat; + public FluidTank[] tanks; + public boolean isOn; + + private AudioWrapper audio; + private int audioTime; + + /* CONFIGURABLE */ + public static int maxHeat = 12_800_000; + public static double diffusion = 0.1D; + + public TileEntityHeatBoilerIndustrial() { + this.tanks = new FluidTank[2]; + + this.tanks[0] = new FluidTank(Fluids.WATER, 64_000, 0); + this.tanks[1] = new FluidTank(Fluids.STEAM, 64_000 * 100, 1); + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + NBTTagCompound data = new NBTTagCompound(); + this.setupTanks(); + this.updateConnections(); + this.tryPullHeat(); + int lastHeat = this.heat; + + int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); + if(light > 7 && TomSaveData.forWorld(worldObj).fire > 1e-5) { + this.heat += ((maxHeat - heat) * 0.000005D); //constantly heat up 0.0005% of the remaining heat buffer for rampant but diminishing heating + } + + data.setInteger("heat", lastHeat); + + tanks[0].writeToNBT(data, "0"); + this.isOn = false; + this.tryConvert(); + tanks[1].writeToNBT(data, "1"); + + if(this.tanks[1].getFill() > 0) { + this.sendFluid(); + } + + data.setBoolean("isOn", this.isOn); + INBTPacketReceiver.networkPack(this, data, 25); + } else { + + if(this.isOn) audioTime = 20; + + if(audioTime > 0) { + + audioTime--; + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + } + } + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.125F, 10F, 1.0F, 20); + } + + @Override + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.heat = nbt.getInteger("heat"); + this.tanks[0].readFromNBT(nbt, "0"); + this.tanks[1].readFromNBT(nbt, "1"); + this.isOn = nbt.getBoolean("isOn"); + } + + protected void tryPullHeat() { + TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); + + if(con instanceof IHeatSource) { + IHeatSource source = (IHeatSource) con; + int diff = source.getHeatStored() - this.heat; + + if(diff == 0) { + return; + } + + if(diff > 0) { + diff = (int) Math.ceil(diff * diffusion); + source.useUpHeat(diff); + this.heat += diff; + if(this.heat > this.maxHeat) + this.heat = this.maxHeat; + return; + } + } + + this.heat = Math.max(this.heat - Math.max(this.heat / 1000, 1), 0); + } + + protected void setupTanks() { + + if(tanks[0].getTankType().hasTrait(FT_Heatable.class)) { + FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); + if(trait.getEfficiency(HeatingType.BOILER) > 0) { + HeatingStep entry = trait.getFirstStep(); + tanks[1].setTankType(entry.typeProduced); + tanks[1].changeTankSize(tanks[0].getMaxFill() * entry.amountProduced / entry.amountReq); + return; + } + } + + tanks[0].setTankType(Fluids.NONE); + tanks[1].setTankType(Fluids.NONE); + } + + protected void tryConvert() { + + if(tanks[0].getTankType().hasTrait(FT_Heatable.class)) { + FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); + if(trait.getEfficiency(HeatingType.BOILER) > 0) { + + HeatingStep entry = trait.getFirstStep(); + int inputOps = this.tanks[0].getFill() / entry.amountReq; + int outputOps = (this.tanks[1].getMaxFill() - this.tanks[1].getFill()) / entry.amountProduced; + int heatOps = this.heat / entry.heatReq; + + int ops = Math.min(inputOps, Math.min(outputOps, heatOps)); + + this.tanks[0].setFill(this.tanks[0].getFill() - entry.amountReq * ops); + this.tanks[1].setFill(this.tanks[1].getFill() + entry.amountProduced * ops); + this.heat -= entry.heatReq * ops; + + if(ops > 0 && worldObj.rand.nextInt(400) == 0) { + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.boilerGroan", 0.5F, 1.0F); + } + + if(ops > 0) { + this.isOn = true; + } + } + } + } + + private void updateConnections() { + + for(DirPos pos : getConPos()) { + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + private void sendFluid() { + + for(DirPos pos : getConPos()) { + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite()); + } + } + + private DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z), + new DirPos(xCoord, yCoord + 5, zCoord, Library.POS_Y), + }; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + tanks[0].readFromNBT(nbt, "water"); + tanks[1].readFromNBT(nbt, "steam"); + heat = nbt.getInteger("heat"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + tanks[0].writeToNBT(nbt, "water"); + tanks[1].writeToNBT(nbt, "steam"); + nbt.setInteger("heat", heat); + } + + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[1]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0]}; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 5, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public String getConfigName() { + return "boilerIndustrial"; + } + + @Override + public void readIfPresent(JsonObject obj) { + maxHeat = IConfigurableMachine.grab(obj, "I:maxHeat", maxHeat); + diffusion = IConfigurableMachine.grab(obj, "D:diffusion", diffusion); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:maxHeat").value(maxHeat); + writer.name("D:diffusion").value(diffusion); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java index 7a3dacf54..35569da50 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java @@ -1,6 +1,8 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; @@ -17,7 +19,10 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH public long power; public int heatEnergy; + public boolean isOn; protected int setting = 0; + + private AudioWrapper audio; @Override public void updateEntity() { @@ -32,16 +37,64 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH this.heatEnergy *= 0.999; this.tryPullHeat(); - + + this.isOn = false; if(setting > 0 && this.power >= this.getConsumption()) { this.power -= this.getConsumption(); this.heatEnergy += getHeatGen(); + this.isOn = true; } NBTTagCompound data = new NBTTagCompound(); data.setByte("s", (byte) this.setting); data.setInteger("h", this.heatEnergy); + data.setBoolean("o", isOn); INBTPacketReceiver.networkPack(this, data, 25); + } else { + + if(isOn) { + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + } + } + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.electricHum", xCoord, yCoord, zCoord, 0.25F, 7.5F, 1.0F, 20); + } + + @Override + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; } } @@ -49,6 +102,7 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH public void networkUnpack(NBTTagCompound nbt) { this.setting = nbt.getByte("s"); this.heatEnergy = nbt.getInteger("h"); + this.isOn = nbt.getBoolean("o"); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java index 7d0656c7e..e1dffc2b1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java @@ -65,7 +65,7 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe INBTPacketReceiver.networkPack(this, data, 25); for(DirPos pos : getConPos()) { - if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java index 535d5939b..964ef74fd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java @@ -1,18 +1,20 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; -import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.container.ContainerOilburner; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Leaded; import com.hbm.inventory.gui.GUIOilburner; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; +import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.fluid.IFluidStandardReceiver; +import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -23,7 +25,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -public class TileEntityHeaterOilburner extends TileEntityMachineBase implements IGUIProvider, IFluidStandardReceiver, IHeatSource, IControlReceiver, IFluidAcceptor { +public class TileEntityHeaterOilburner extends TileEntityMachinePolluting implements IGUIProvider, IFluidStandardTransceiver, IHeatSource, IControlReceiver { public boolean isOn = false; public FluidTank tank; @@ -33,14 +35,23 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements public static final int maxHeatEnergy = 100_000; public TileEntityHeaterOilburner() { - super(3); - tank = new FluidTank(Fluids.HEATINGOIL, 16000, 0); + super(3, 100); + tank = new FluidTank(Fluids.HEATINGOIL, 16000); } @Override public String getName() { return "container.heaterOilburner"; } + + public DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z) + }; + } @Override public void updateEntity() { @@ -50,10 +61,10 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements tank.loadTank(0, 1, slots); tank.setType(2, slots); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.trySubscribe(tank.getTankType(), worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - this.trySubscribe(tank.getTankType(), worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); - this.trySubscribe(tank.getTankType(), worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); + for(DirPos pos : this.getConPos()) { + this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendSmoke(pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } boolean shouldCool = true; @@ -70,6 +81,11 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements int heat = (int)(type.getHeatEnergy() / 1000); this.heatEnergy += heat * toBurn; + + if(worldObj.getTotalWorldTime() % 20 == 0 && toBurn > 0) { + this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * burnRate * 0.5F); + if(tank.getTankType().hasTrait(FT_Leaded.class)) this.pollute(PollutionType.HEAVYMETAL, PollutionHandler.HEAVY_METAL_PER_SECOND * burnRate * 0.5F); + } shouldCool = false; } @@ -149,28 +165,6 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements this.heatEnergy = Math.max(0, this.heatEnergy - heat); } - @Override - public void setFillForSync(int fill, int index) { } - - @Override - public void setFluidFill(int fill, FluidType type) { - if(type == tank.getTankType()) - tank.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { } - - @Override - public int getFluidFill(FluidType type) { - return type == tank.getTankType() ? tank.getFill() : 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - return type == tank.getTankType() ? tank.getMaxFill() : 0; - } - @Override public boolean hasPermission(EntityPlayer player) { return player.getDistanceSq(xCoord, yCoord, zCoord) <= 256; @@ -213,4 +207,9 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements public FluidTank[] getAllTanks() { return new FluidTank[] { tank }; } + + @Override + public FluidTank[] getSendingTanks() { + return this.getSmokeTanks(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index fe47229b1..f7a078115 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -156,7 +156,7 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser for(DirPos pos : getConPos()) { if(tanks[1].getFill() > 0) { - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -293,6 +293,8 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser if(progress > this.duration) { + this.progress = 0; + if(slots[2] != null) { slots[2].stackSize++; } else { @@ -542,7 +544,7 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser int b = layout[ly][x][z]; switch(b) { - case 1: worldObj.setBlock(xCoord - width + x, yCoord + y - 2, zCoord - width + z, ModBlocks.fusion_conductor); break; + case 1: worldObj.setBlock(xCoord - width + x, yCoord + y - 2, zCoord - width + z, ModBlocks.fusion_conductor, 1, 3); break; case 2: worldObj.setBlock(xCoord - width + x, yCoord + y - 2, zCoord - width + z, ModBlocks.fusion_center); break; case 3: worldObj.setBlock(xCoord - width + x, yCoord + y - 2, zCoord - width + z, ModBlocks.fusion_motor); break; case 4: worldObj.setBlock(xCoord - width + x, yCoord + y - 2, zCoord - width + z, ModBlocks.reinforced_glass); break; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java index 530de6de6..901cc4195 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java @@ -151,9 +151,10 @@ public class TileEntityITERStruct extends TileEntity { int b = layout[ly][x][z]; Block block = worldObj.getBlock(xCoord + x - width, yCoord + y, zCoord + z - width); + int meta = worldObj.getBlockMetadata(xCoord + x - width, yCoord + y, zCoord + z - width); switch(b) { - case 1: if(block != ModBlocks.fusion_conductor) { return; } break; + case 1: if(block != ModBlocks.fusion_conductor || meta != 1) { return; } break; case 2: if(block != ModBlocks.fusion_center) { return; } break; case 3: if(block != ModBlocks.fusion_motor) { return; } break; case 4: if(block != ModBlocks.reinforced_glass) { return; } break; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java new file mode 100644 index 000000000..d6211169b --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -0,0 +1,374 @@ +package com.hbm.tileentity.machine; + +import java.util.List; + +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.container.ContainerMachineArcWelder; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIMachineArcWelder; +import com.hbm.inventory.recipes.ArcWelderRecipes; +import com.hbm.inventory.recipes.ArcWelderRecipes.ArcWelderRecipe; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.lib.Library; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IConditionalInvAccess; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardReceiver; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityMachineArcWelder extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IConditionalInvAccess, IGUIProvider, IUpgradeInfoProvider { + + public long power; + public long maxPower = 2_000; + public long consumption; + + public int progress; + public int processTime = 1; + + public FluidTank tank; + public ItemStack display; + + public TileEntityMachineArcWelder() { + super(8); + this.tank = new FluidTank(Fluids.NONE, 24_000); + } + + @Override + public String getName() { + return "container.machineArcWelder"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.power = Library.chargeTEFromItems(slots, 4, this.getPower(), this.getMaxPower()); + this.tank.setType(5, slots); + + if(worldObj.getTotalWorldTime() % 20 == 0) { + for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tank.getTankType() != Fluids.NONE) this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + ArcWelderRecipe recipe = ArcWelderRecipes.getRecipe(slots[0], slots[1], slots[2]); + long intendedMaxPower; + + UpgradeManager.eval(slots, 6, 7); + int redLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + int blueLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); + + if(recipe != null) { + this.processTime = recipe.duration - (recipe.duration * redLevel / 6) + (recipe.duration * blueLevel / 3); + this.consumption = recipe.consumption + (recipe.consumption * redLevel) - (recipe.consumption * blueLevel / 6); + intendedMaxPower = recipe.consumption * 20; + + if(canProcess(recipe)) { + this.progress++; + this.power -= this.consumption; + + if(progress >= processTime) { + this.progress = 0; + this.consumeItems(recipe); + + if(slots[3] == null) { + slots[3] = recipe.output.copy(); + } else { + slots[3].stackSize += recipe.output.stackSize; + } + + this.markDirty(); + } + + if(worldObj.getTotalWorldTime() % 2 == 0) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + NBTTagCompound dPart = new NBTTagCompound(); + dPart.setString("type", worldObj.getTotalWorldTime() % 20 == 0 ? "tau" : "hadron"); + dPart.setByte("count", (byte) 5); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(dPart, xCoord + 0.5 - dir.offsetX * 0.5, yCoord + 1.25, zCoord + 0.5 - dir.offsetZ * 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 25)); + } + + } else { + this.progress = 0; + } + + } else { + this.progress = 0; + this.consumption = 100; + intendedMaxPower = 2000; + } + + this.maxPower = Math.max(intendedMaxPower, power); + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setLong("maxPower", maxPower); + data.setLong("consumption", consumption); + data.setInteger("progress", progress); + data.setInteger("processTime", processTime); + if(recipe != null) { + data.setInteger("display", Item.getIdFromItem(recipe.output.getItem())); + data.setInteger("displayMeta", recipe.output.getItemDamage()); + } + this.tank.writeToNBT(data, "t"); + this.networkPack(data, 25); + } + } + + public boolean canProcess(ArcWelderRecipe recipe) { + + if(this.power < recipe.consumption) return false; + + if(recipe.fluid != null) { + if(this.tank.getTankType() != recipe.fluid.type) return false; + if(this.tank.getFill() < recipe.fluid.fill) return false; + } + + if(slots[3] != null) { + if(slots[3].getItem() != recipe.output.getItem()) return false; + if(slots[3].getItemDamage() != recipe.output.getItemDamage()) return false; + if(slots[3].stackSize + recipe.output.stackSize > slots[3].getMaxStackSize()) return false; + } + + return true; + } + + public void consumeItems(ArcWelderRecipe recipe) { + + for(AStack aStack : recipe.ingredients) { + + for(int i = 0; i < 3; i++) { + ItemStack stack = slots[i]; + if(aStack.matchesRecipe(stack, true) && stack.stackSize >= aStack.stacksize) { + this.decrStackSize(i, aStack.stacksize); + break; + } + } + } + + if(recipe.fluid != null) { + this.tank.setFill(tank.getFill() - recipe.fluid.fill); + } + } + + protected DirPos[] getConPos() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new DirPos[] { + new DirPos(xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ, dir), + new DirPos(xCoord + dir.offsetX + rot.offsetX, yCoord, zCoord + dir.offsetZ + rot.offsetZ, dir), + new DirPos(xCoord + dir.offsetX - rot.offsetX, yCoord, zCoord + dir.offsetZ - rot.offsetZ, dir), + new DirPos(xCoord - dir.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ, dir.getOpposite()), + new DirPos(xCoord + rot.offsetX * 2, yCoord, zCoord + rot.offsetZ * 2, rot), + new DirPos(xCoord - dir.offsetX + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ + rot.offsetZ * 2, rot), + new DirPos(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()), + new DirPos(xCoord - dir.offsetX - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ - rot.offsetZ * 2, rot.getOpposite()) + }; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.maxPower = nbt.getLong("maxPower"); + this.consumption = nbt.getLong("consumption"); + this.progress = nbt.getInteger("progress"); + this.processTime = nbt.getInteger("processTime"); + + if(nbt.hasKey("display")) { + this.display = new ItemStack(Item.getItemById(nbt.getInteger("display")), 1, nbt.getInteger("displayMeta")); + } else { + this.display = null; + } + + this.tank.readFromNBT(nbt, "t"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.power = nbt.getLong("power"); + this.maxPower = nbt.getLong("maxPower"); + this.progress = nbt.getInteger("progress"); + this.processTime = nbt.getInteger("processTime"); + tank.readFromNBT(nbt, "t"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setLong("power", power); + nbt.setLong("maxPower", maxPower); + nbt.setInteger("progress", progress); + nbt.setInteger("processTime", processTime); + tank.writeToNBT(nbt, "t"); + } + + @Override + public long getPower() { + return Math.max(Math.min(power, maxPower), 0); + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] {tank}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tank}; + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + return slot < 3; + } + + @Override + public boolean canExtractItem(int slot, ItemStack stack, int side) { + return slot == 3; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] { 1, 3 }; + } + + @Override + public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack) { + return slot < 3; + } + + @Override + public boolean canInsertItem(int x, int y, int z, int slot, ItemStack stack, int side) { + return slot < 3; + } + + @Override + public boolean canExtractItem(int x, int y, int z, int slot, ItemStack stack, int side) { + return slot == 3; + } + + @Override + public int[] getAccessibleSlotsFromSide(int x, int y, int z, int side) { + BlockPos pos = new BlockPos(x, y, z); + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + BlockPos core = new BlockPos(xCoord, yCoord, zCoord); + + //Red + if(pos.equals(core.clone().offset(rot)) || pos.equals(core.clone().offset(rot.getOpposite()).offset(dir.getOpposite()))) + return new int[] { 0, 3 }; + + //Yellow + if(pos.equals(core.clone().offset(dir.getOpposite()))) + return new int[] { 1, 3 }; + + //Green + if(pos.equals(core.clone().offset(rot.getOpposite())) || pos.equals(core.clone().offset(rot).offset(dir.getOpposite()))) + return new int[] { 2, 3 }; + + return new int[] { }; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerMachineArcWelder(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIMachineArcWelder(player.inventory, this); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 3, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electric_furnace_off)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 100 / 6) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 100 / 6) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 100 / 3) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + return 0; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java index 826bf7ffd..b549a6335 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java @@ -1,60 +1,42 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; import java.util.List; import java.util.Random; +import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.handler.MultiblockHandlerXR; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMachineAssembler; import com.hbm.inventory.gui.GUIMachineAssembler; import com.hbm.inventory.recipes.AssemblerRecipes; -import com.hbm.items.ModItems; import com.hbm.items.machine.ItemAssemblyTemplate; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; -import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; -import com.hbm.tileentity.machine.storage.TileEntityCrateBase; -import com.hbm.tileentity.machine.storage.TileEntityCrateIron; -import com.hbm.tileentity.machine.storage.TileEntityCrateSteel; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityChest; -import net.minecraft.tileentity.TileEntityHopper; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineAssembler extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase implements IUpgradeInfoProvider { + + public int recipe = -1; - public long power; - public static final long maxPower = 100000; - public int progress; - public int maxProgress = 100; - public boolean isProgressing; - int age = 0; - int consumption = 100; - int speed = 100; - - @SideOnly(Side.CLIENT) - public int recipe; - - private AudioWrapper audio; - Random rand = new Random(); public TileEntityMachineAssembler() { @@ -78,55 +60,33 @@ public class TileEntityMachineAssembler extends TileEntityMachineBase implements return false; } - @Override - public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { - slots[i] = null; - } - - return itemStack1; - } else { - return null; - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - this.power = nbt.getLong("powerTime"); - this.progress = nbt.getInteger("progress"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setLong("powerTime", power); - nbt.setInteger("progress", progress); - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } - - public int getProgressScaled(int i) { - return (progress * i) / maxProgress; - } - @Override public void updateEntity() { + super.updateEntity(); if(!worldObj.isRemote) { + //meta below 12 means that it's an old multiblock configuration + if(this.getBlockMetadata() < 12) { + int meta = this.getBlockMetadata(); + if(meta == 2 || meta == 14) meta = 4; + else if(meta == 4 || meta == 13) meta = 3; + else if(meta == 3 || meta == 15) meta = 5; + else if(meta == 5 || meta == 12) meta = 2; + //get old direction + ForgeDirection dir = ForgeDirection.getOrientation(meta); + //remove tile from the world to prevent inventory dropping + worldObj.removeTileEntity(xCoord, yCoord, zCoord); + //use fillspace to create a new multiblock configuration + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.machine_assembler, dir.ordinal() + 10, 3); + MultiblockHandlerXR.fillSpace(worldObj, xCoord, yCoord, zCoord, ((BlockDummyable) ModBlocks.machine_assembler).getDimensions(), ModBlocks.machine_assembler, dir); + //load the tile data to restore the old values + NBTTagCompound data = new NBTTagCompound(); + this.writeToNBT(data); + worldObj.getTileEntity(xCoord, yCoord, zCoord).readFromNBT(data); + return; + } + this.updateConnections(); this.consumption = 100; @@ -145,77 +105,6 @@ public class TileEntityMachineAssembler extends TileEntityMachineBase implements speed /= (overLevel + 1); consumption *= (overLevel + 1); - isProgressing = false; - power = Library.chargeTEFromItems(slots, 0, power, maxPower); - - if(AssemblerRecipes.getOutputFromTempate(slots[4]) != null && AssemblerRecipes.getRecipeFromTempate(slots[4]) != null) { - this.maxProgress = (ItemAssemblyTemplate.getProcessTime(slots[4]) * speed) / 100; - - if(power >= consumption && removeItems(AssemblerRecipes.getRecipeFromTempate(slots[4]), cloneItemStackProper(slots))) { - - if(slots[5] == null || (slots[5] != null && slots[5].getItem() == AssemblerRecipes.getOutputFromTempate(slots[4]).copy().getItem()) && slots[5].stackSize + AssemblerRecipes.getOutputFromTempate(slots[4]).copy().stackSize <= slots[5].getMaxStackSize()) { - progress++; - isProgressing = true; - - if(progress >= maxProgress) { - progress = 0; - if(slots[5] == null) { - slots[5] = AssemblerRecipes.getOutputFromTempate(slots[4]).copy(); - } else { - slots[5].stackSize += AssemblerRecipes.getOutputFromTempate(slots[4]).copy().stackSize; - } - - removeItems(AssemblerRecipes.getRecipeFromTempate(slots[4]), slots); - - if(slots[0] != null && slots[0].getItem() == ModItems.meteorite_sword_alloyed) - slots[0] = new ItemStack(ModItems.meteorite_sword_machined); - } - - power -= consumption; - } - } else - progress = 0; - } else - progress = 0; - - int meta = worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); - - TileEntity te1 = null; - TileEntity te2 = null; - - if(meta == 2) { - te1 = worldObj.getTileEntity(xCoord - 2, yCoord, zCoord); - te2 = worldObj.getTileEntity(xCoord + 3, yCoord, zCoord - 1); - } - if(meta == 3) { - te1 = worldObj.getTileEntity(xCoord + 2, yCoord, zCoord); - te2 = worldObj.getTileEntity(xCoord - 3, yCoord, zCoord + 1); - } - if(meta == 4) { - te1 = worldObj.getTileEntity(xCoord, yCoord, zCoord + 2); - te2 = worldObj.getTileEntity(xCoord - 1, yCoord, zCoord - 3); - } - if(meta == 5) { - te1 = worldObj.getTileEntity(xCoord, yCoord, zCoord - 2); - te2 = worldObj.getTileEntity(xCoord + 1, yCoord, zCoord + 3); - } - - tryExchangeTemplates(te1, te2); - - //OUTPUT - if(te1 instanceof TileEntityCrateBase || te1 instanceof TileEntityChest) { - IInventory chest = (IInventory)te1; - tryFillContainer(chest, 5); - } - - if(te2 instanceof TileEntityCrateBase || te2 instanceof TileEntityChest) { - IInventory chest = (IInventory)te2; - - for(int i = 0; i < chest.getSizeInventory(); i++) - if(tryFillAssembler(chest, i)) - break; - } - int rec = -1; if(AssemblerRecipes.getOutputFromTempate(slots[4]) != null) { ComparableStack comp = ItemAssemblyTemplate.readType(slots[4]); @@ -224,8 +113,8 @@ public class TileEntityMachineAssembler extends TileEntityMachineBase implements NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); - data.setInteger("progress", progress); - data.setInteger("maxProgress", maxProgress); + data.setIntArray("progress", this.progress); + data.setIntArray("maxProgress", this.maxProgress); data.setBoolean("isProgressing", isProgressing); data.setInteger("recipe", rec); this.networkPack(data, 150); @@ -253,341 +142,99 @@ public class TileEntityMachineAssembler extends TileEntityMachineBase implements } } } - + @Override - public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:block.assemblerOperate", xCoord, yCoord, zCoord, 1.0F, 1.0F); - } - - private void updateConnections() { - this.getBlockMetadata(); - - if(this.blockMetadata == 5) { - this.trySubscribe(worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - this.trySubscribe(worldObj, xCoord - 2, yCoord, zCoord + 1, Library.NEG_X); - this.trySubscribe(worldObj, xCoord + 3, yCoord, zCoord, Library.POS_X); - this.trySubscribe(worldObj, xCoord + 3, yCoord, zCoord + 1, Library.POS_X); - - } else if(this.blockMetadata == 3) { - this.trySubscribe(worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); - this.trySubscribe(worldObj, xCoord - 1, yCoord, zCoord - 2, Library.NEG_Z); - this.trySubscribe(worldObj, xCoord, yCoord, zCoord + 3, Library.POS_Z); - this.trySubscribe(worldObj, xCoord - 1, yCoord, zCoord + 3, Library.POS_Z); - - } else if(this.blockMetadata == 4) { - this.trySubscribe(worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.trySubscribe(worldObj, xCoord + 2, yCoord, zCoord - 1, Library.POS_X); - this.trySubscribe(worldObj, xCoord - 3, yCoord, zCoord, Library.NEG_X); - this.trySubscribe(worldObj, xCoord - 3, yCoord, zCoord - 1, Library.NEG_X); - - } else if(this.blockMetadata == 2) { - this.trySubscribe(worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); - this.trySubscribe(worldObj, xCoord + 1, yCoord, zCoord + 2, Library.POS_Z); - this.trySubscribe(worldObj, xCoord, yCoord, zCoord - 3, Library.NEG_Z); - this.trySubscribe(worldObj, xCoord + 1, yCoord, zCoord - 3, Library.NEG_Z); - } - } - - public void onChunkUnload() { - - if(audio != null) { - audio.stopSound(); - audio = null; - } - } - - public void invalidate() { - - super.invalidate(); - - if(audio != null) { - audio.stopSound(); - audio = null; - } - } - public void networkUnpack(NBTTagCompound nbt) { this.power = nbt.getLong("power"); - this.progress = nbt.getInteger("progress"); - this.maxProgress = nbt.getInteger("maxProgress"); + this.progress = nbt.getIntArray("progress"); + this.maxProgress = nbt.getIntArray("maxProgress"); this.isProgressing = nbt.getBoolean("isProgressing"); this.recipe = nbt.getInteger("recipe"); } - private boolean removeItems(List stack, ItemStack[] array) { - - if(stack == null) - return false; - - for(int i = 0; i < stack.size(); i++) { - for(int j = 0; j < stack.get(i).stacksize; j++) { - AStack sta = stack.get(i).copy(); - sta.stacksize = 1; - - if(!canRemoveItemFromArray(sta, array)) - return false; - } - } - - return true; - } - - public boolean canRemoveItemFromArray(AStack stack, ItemStack[] array) { - - AStack st = stack.copy(); - - if(st == null) - return true; - - for(int i = 6; i < 18; i++) { - - if(array[i] != null) { - - ItemStack sta = array[i].copy(); - sta.stackSize = 1; - - if(sta != null && st.isApplicable(sta) && array[i].stackSize > 0) { - array[i].stackSize--; - - if(array[i].stackSize <= 0) - array[i] = null; - - return true; - } - } - } - - return false; - } - - public boolean tryExchangeTemplates(TileEntity te1, TileEntity te2) { - //validateTe sees if it's a valid inventory tile entity - boolean te1Valid = validateTe(te1); - boolean te2Valid = validateTe(te2); - - if(te1Valid && te2Valid){ - IInventory iTe1 = (IInventory)te1; - IInventory iTe2 = (IInventory)te2; - boolean openSlot = false; - boolean existingTemplate = false; - boolean filledContainer = false; - //Check if there's an existing template and an open slot - for(int i = 0; i < iTe1.getSizeInventory(); i++){ - if(iTe1.getStackInSlot(i) == null){ - openSlot = true; - - } - - } - if(this.slots[4] != null){ - existingTemplate = true; - } - //Check if there's a template in input - for(int i = 0; i < iTe2.getSizeInventory(); i++){ - if(iTe2.getStackInSlot(i) != null && iTe2.getStackInSlot(i).getItem() instanceof ItemAssemblyTemplate){ - if(openSlot && existingTemplate){ - filledContainer = tryFillContainer(iTe1, 4); - - } - if(filledContainer){ - ItemStack copy = iTe2.getStackInSlot(i).copy(); - iTe2.setInventorySlotContents(i, null); - this.slots[4] = copy; - } - } - - } - - - } - return false; - - } - - private boolean validateTe(TileEntity te) { - if(te instanceof TileEntityChest) { - return true; - } - - if(te instanceof TileEntityHopper) { - return true; - } - - if(te instanceof TileEntityCrateIron) { - return true; - } - - if(te instanceof TileEntityCrateSteel) { - return true; - } - - return false; - } - - //I can't believe that worked. - public ItemStack[] cloneItemStackProper(ItemStack[] array) { - ItemStack[] stack = new ItemStack[array.length]; - - for(int i = 0; i < array.length; i++) - if(array[i] != null) - stack[i] = array[i].copy(); - else - stack[i] = null; - - return stack; - } - - //Unloads output into chests - public boolean tryFillContainer(IInventory inventory, int slot) { - - int size = inventory.getSizeInventory(); - - for(int i = 0; i < size; i++) { - if(inventory.getStackInSlot(i) != null) { - - if(slots[slot] == null) - return false; - - ItemStack sta1 = inventory.getStackInSlot(i).copy(); - ItemStack sta2 = slots[slot].copy(); - if(sta1 != null && sta2 != null) { - sta1.stackSize = 1; - sta2.stackSize = 1; - - if(ItemStack.areItemStacksEqual(sta1, sta2) && ItemStack.areItemStackTagsEqual(sta1, sta2) && inventory.getStackInSlot(i).stackSize < inventory.getStackInSlot(i).getMaxStackSize()) { - slots[slot].stackSize--; - - if(slots[slot].stackSize <= 0) - slots[slot] = null; - - ItemStack sta3 = inventory.getStackInSlot(i).copy(); - sta3.stackSize++; - inventory.setInventorySlotContents(i, sta3); - - return true; - } - } - } - } - for(int i = 0; i < size; i++) { - - if(slots[slot] == null) - return false; - - ItemStack sta2 = slots[slot].copy(); - if(inventory.getStackInSlot(i) == null && sta2 != null) { - sta2.stackSize = 1; - slots[slot].stackSize--; - - if(slots[slot].stackSize <= 0) - slots[slot] = null; - - inventory.setInventorySlotContents(i, sta2); - - return true; - } - } - - return false; - } - - public boolean tryFillAssembler(IInventory inventory, int slot) { - - if(AssemblerRecipes.getOutputFromTempate(slots[4]) == null || AssemblerRecipes.getRecipeFromTempate(slots[4]) == null) - return false; - else { - List list = copyItemStackList(AssemblerRecipes.getRecipeFromTempate(slots[4])); - - for(int i = 0; i < list.size(); i++) - list.get(i).stacksize = 1; - - - if(inventory.getStackInSlot(slot) == null) - return false; - - ItemStack stack = inventory.getStackInSlot(slot).copy(); - stack.stackSize = 1; - - boolean flag = false; - - for(int i = 0; i < list.size(); i++) - if(list.get(i).isApplicable(stack)) - flag = true; - - if(!flag) - return false; - - } - - for(int i = 6; i < 18; i++) { - - if(slots[i] != null) { - - ItemStack sta1 = inventory.getStackInSlot(slot).copy(); - ItemStack sta2 = slots[i].copy(); - if(sta1 != null && sta2 != null) { - sta1.stackSize = 1; - sta2.stackSize = 1; - - if(sta1.isItemEqual(sta2) && slots[i].stackSize < slots[i].getMaxStackSize()) { - ItemStack sta3 = inventory.getStackInSlot(slot).copy(); - sta3.stackSize--; - if(sta3.stackSize <= 0) - sta3 = null; - inventory.setInventorySlotContents(slot, sta3); - - slots[i].stackSize++; - return true; - } - } - } - } - - for(int i = 6; i < 18; i++) { - - ItemStack sta2 = inventory.getStackInSlot(slot).copy(); - if(slots[i] == null && sta2 != null) { - sta2.stackSize = 1; - slots[i] = sta2.copy(); - - ItemStack sta3 = inventory.getStackInSlot(slot).copy(); - sta3.stackSize--; - if(sta3.stackSize <= 0) - sta3 = null; - inventory.setInventorySlotContents(slot, sta3); - - return true; - } - } - - return false; - } - - public static List copyItemStackList(List list){ - List newList = new ArrayList(); - if(list == null || list.isEmpty()) - return newList; - for(AStack stack : list){ - newList.add(stack.copy()); - } - return newList; - } - @Override - public void setPower(long i) { - power = i; + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.assemblerOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); + } + + private void updateConnections() { + for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + public DirPos[] getConPos() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + return new DirPos[] { + new DirPos(xCoord + rot.offsetX * 3, yCoord, zCoord + rot.offsetZ * 3, rot), + new DirPos(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()), + new DirPos(xCoord + rot.offsetX * 3 + dir.offsetX, yCoord, zCoord + rot.offsetZ * 3 + dir.offsetZ, rot), + new DirPos(xCoord - rot.offsetX * 2 + dir.offsetX, yCoord, zCoord - rot.offsetZ * 2 + dir.offsetZ, rot.getOpposite()) + }; } @Override - public long getPower() { - return power; - + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + private AudioWrapper audio; + + @Override + public int getRecipeCount() { + return 1; + } + + @Override + public int getTemplateIndex(int index) { + return 4; + } + + @Override + public int[] getSlotIndicesFromIndex(int index) { + return new int[] {6, 17, 5}; + } + + @Override + public DirPos[] getInputPositions() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + return new DirPos[] {new DirPos(xCoord - dir.offsetX * 3 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 3 + rot.offsetZ, dir.getOpposite())}; + } + + @Override + public DirPos[] getOutputPositions() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + return new DirPos[] {new DirPos(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2, dir)}; + } + + @Override + public int getPowerSlot() { + return 0; } @Override public long getMaxPower() { - return maxPower; + return 100_000; } @Override @@ -623,4 +270,33 @@ public class TileEntityMachineAssembler extends TileEntityMachineBase implements public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineAssembler(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 5) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 9; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java index 587b14e85..836b03f1d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java @@ -9,14 +9,16 @@ import com.hbm.items.machine.ItemAssemblyTemplate; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.machine.storage.TileEntityCrateTemplate; import com.hbm.util.InventoryUtil; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChunkCoordinates; public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { @@ -24,6 +26,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa public int[] progress; public int[] maxProgress; public boolean isProgressing; + public boolean[] needsTemplateSwitch; int consumption = 100; int speed = 100; @@ -35,6 +38,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa progress = new int[count]; maxProgress = new int[count]; + needsTemplateSwitch = new boolean[count]; } @Override @@ -45,11 +49,11 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa int count = this.getRecipeCount(); this.isProgressing = false; - this.power = Library.chargeTEFromItems(slots, 0, power, this.getMaxPower()); + this.power = Library.chargeTEFromItems(slots, getPowerSlot(), power, this.getMaxPower()); for(int i = 0; i < count; i++) { - loadItems(i); unloadItems(i); + loadItems(i); } @@ -114,6 +118,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa consumeItems(recipe, index); produceItems(output, index); this.progress[index] = 0; + this.needsTemplateSwitch[index] = true; this.markDirty(); } } @@ -140,53 +145,79 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa private void loadItems(int index) { int template = getTemplateIndex(index); - if(slots[template] == null || slots[template].getItem() != ModItems.assembly_template) - return; - List recipe = AssemblerRecipes.getRecipeFromTempate(slots[template]); - - if(recipe != null) { - - ChunkCoordinates[] positions = getInputPositions(); - int[] indices = getSlotIndicesFromIndex(index); - - for(ChunkCoordinates coord : positions) { + DirPos[] positions = getInputPositions(); + int[] indices = getSlotIndicesFromIndex(index); + + for(DirPos coord : positions) { + + TileEntity te = worldObj.getTileEntity(coord.getX(), coord.getY(), coord.getZ()); - TileEntity te = worldObj.getTileEntity(coord.posX, coord.posY, coord.posZ); - - if(te instanceof IInventory) { + if(te instanceof IInventory) { + + IInventory inv = (IInventory) te; + ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + int[] access = sided != null ? sided.getAccessibleSlotsFromSide(coord.getDir().ordinal()) : null; + boolean templateCrate = te instanceof TileEntityCrateTemplate; + + if(templateCrate && slots[template] == null) { + + for(int i = 0; i < (access != null ? access.length : inv.getSizeInventory()); i++) { + int slot = access != null ? access[i] : i; + ItemStack stack = inv.getStackInSlot(slot); + + if(stack != null && stack.getItem() == ModItems.assembly_template && (sided == null || sided.canExtractItem(slot, stack, 0))) { + slots[template] = stack.copy(); + sided.setInventorySlotContents(slot, null); + this.needsTemplateSwitch[index] = false; + break; + } + } + } - IInventory inv = (IInventory) te; - ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; - - for(AStack ingredient : recipe) { - - if(!InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], ingredient)) { - - for(int i = 0; i < inv.getSizeInventory(); i++) { - - ItemStack stack = inv.getStackInSlot(i); - if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(i, stack, 0))) { + boolean noTemplate = slots[template] == null || slots[template].getItem() != ModItems.assembly_template; + + if(!noTemplate) { + + List recipe = AssemblerRecipes.getRecipeFromTempate(slots[template]); + + if(recipe != null) { + + for(AStack ingredient : recipe) { + + outer: while(!InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], ingredient)) { + + boolean found = false; + + for(int i = 0; i < (access != null ? access.length : inv.getSizeInventory()); i++) { - for(int j = indices[0]; j <= indices[1]; j++) { - - if(slots[j] != null && slots[j].stackSize < slots[j].getMaxStackSize() & InventoryUtil.doesStackDataMatch(slots[j], stack)) { - inv.decrStackSize(i, 1); - slots[j].stackSize++; - return; + int slot = access != null ? access[i] : i; + ItemStack stack = inv.getStackInSlot(slot); + if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(slot, stack, 0))) { + found = true; + + for(int j = indices[0]; j <= indices[1]; j++) { + + if(slots[j] != null && slots[j].stackSize < slots[j].getMaxStackSize() & InventoryUtil.doesStackDataMatch(slots[j], stack)) { + inv.decrStackSize(slot, 1); + slots[j].stackSize++; + continue outer; + } } - } - - for(int j = indices[0]; j <= indices[1]; j++) { - - if(slots[j] == null) { - slots[j] = stack.copy(); - slots[j].stackSize = 1; - inv.decrStackSize(i, 1); - return; + + for(int j = indices[0]; j <= indices[1]; j++) { + + if(slots[j] == null) { + slots[j] = stack.copy(); + slots[j].stackSize = 1; + inv.decrStackSize(slot, 1); + continue outer; + } } } } + + if(!found) break outer; } } } @@ -197,29 +228,38 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa private void unloadItems(int index) { - ChunkCoordinates[] positions = getOutputPositions(); + DirPos[] positions = getOutputPositions(); int[] indices = getSlotIndicesFromIndex(index); - for(ChunkCoordinates coord : positions) { + for(DirPos coord : positions) { - TileEntity te = worldObj.getTileEntity(coord.posX, coord.posY, coord.posZ); + TileEntity te = worldObj.getTileEntity(coord.getX(), coord.getY(), coord.getZ()); if(te instanceof IInventory) { IInventory inv = (IInventory) te; + ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + int[] access = sided != null ? sided.getAccessibleSlotsFromSide(coord.getDir().ordinal()) : null; int i = indices[2]; - ItemStack out = slots[i]; + + int template = getTemplateIndex(index); + if(this.needsTemplateSwitch[index] && te instanceof TileEntityCrateTemplate && slots[template] != null) { + out = slots[template]; + i = template; + } if(out != null) { - for(int j = 0; j < inv.getSizeInventory(); j++) { + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(j, out)) + if(!(sided != null ? sided.canInsertItem(slot, out, coord.getDir().ordinal()) : inv.isItemValidForSlot(slot, out))) continue; - ItemStack target = inv.getStackInSlot(j); + ItemStack target = inv.getStackInSlot(slot); if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize() && target.stackSize < inv.getInventoryStackLimit()) { this.decrStackSize(i, 1); @@ -228,15 +268,17 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa } } - for(int j = 0; j < inv.getSizeInventory(); j++) { + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(j, out)) + if(!inv.isItemValidForSlot(slot, out)) continue; - if(inv.getStackInSlot(j) == null && inv.isItemValidForSlot(j, out)) { + if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, coord.getDir().ordinal()) : inv.isItemValidForSlot(slot, out))) { ItemStack copy = out.copy(); copy.stackSize = 1; - inv.setInventorySlotContents(j, copy); + inv.setInventorySlotContents(slot, copy); this.decrStackSize(i, 1); return; } @@ -245,6 +287,24 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa } } } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.power = nbt.getLong("power"); + if(nbt.hasKey("progress")) this.progress = nbt.getIntArray("progress"); + if(nbt.hasKey("maxProgress")) this.maxProgress = nbt.getIntArray("maxProgress"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setLong("power", power); + nbt.setIntArray("progress", progress); + nbt.setIntArray("maxProgress", maxProgress); + } @Override public long getPower() { @@ -264,6 +324,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa * @return A size 3 int array containing min input, max input and output indices in that order. */ public abstract int[] getSlotIndicesFromIndex(int index); - public abstract ChunkCoordinates[] getInputPositions(); - public abstract ChunkCoordinates[] getOutputPositions(); + public abstract DirPos[] getInputPositions(); + public abstract DirPos[] getOutputPositions(); + public abstract int getPowerSlot(); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java index 9dd81d815..009bc53e7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java @@ -1,21 +1,20 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerAssemfac; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIAssemfac; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; -import com.hbm.lib.Library; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; @@ -27,11 +26,11 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase implements IFluidStandardTransceiver, IFluidAcceptor, IFluidSource { +public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase implements IFluidStandardTransceiver, IUpgradeInfoProvider { public AssemblerArm[] arms; @@ -46,8 +45,8 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im arms[i] = new AssemblerArm(i % 3 == 1 ? 1 : 0); //the second of every group of three becomes a welder } - water = new FluidTank(Fluids.WATER, 64_000, 0); - steam = new FluidTank(Fluids.SPENTSTEAM, 64_000, 1); + water = new FluidTank(Fluids.WATER, 64_000); + steam = new FluidTank(Fluids.SPENTSTEAM, 64_000); } @Override @@ -91,11 +90,7 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im this.consumption *= (overLevel + 1); for(DirPos pos : getConPos()) { - this.sendFluid(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - } - - if(steam.getFill() > 0) { - this.fillFluidInit(steam.getTankType()); + this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } NBTTagCompound data = new NBTTagCompound(); @@ -361,11 +356,11 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im return new int[] { 5 + index * 14, 16 + index * 14, 18 + index * 14}; } - ChunkCoordinates[] inpos; - ChunkCoordinates[] outpos; + DirPos[] inpos; + DirPos[] outpos; @Override - public ChunkCoordinates[] getInputPositions() { + public DirPos[] getInputPositions() { if(inpos != null) return inpos; @@ -373,18 +368,18 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - inpos = new ChunkCoordinates[] { - new ChunkCoordinates(xCoord + dir.offsetX * 4 - rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 1), - new ChunkCoordinates(xCoord - dir.offsetX * 5 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 5 + rot.offsetZ * 2), - new ChunkCoordinates(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4), - new ChunkCoordinates(xCoord + dir.offsetX * 1 + rot.offsetX * 5, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 5) + inpos = new DirPos[] { + new DirPos(xCoord + dir.offsetX * 4 - rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 1, dir), + new DirPos(xCoord - dir.offsetX * 5 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 5 + rot.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4, rot.getOpposite()), + new DirPos(xCoord + dir.offsetX * 1 + rot.offsetX * 5, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 5, rot) }; return inpos; } @Override - public ChunkCoordinates[] getOutputPositions() { + public DirPos[] getOutputPositions() { if(outpos != null) return outpos; @@ -392,16 +387,21 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - outpos = new ChunkCoordinates[] { - new ChunkCoordinates(xCoord + dir.offsetX * 4 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 + rot.offsetZ * 2), - new ChunkCoordinates(xCoord - dir.offsetX * 5 - rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 5 - rot.offsetZ * 1), - new ChunkCoordinates(xCoord + dir.offsetX * 1 - rot.offsetX * 4, yCoord, zCoord + dir.offsetZ * 1 - rot.offsetZ * 4), - new ChunkCoordinates(xCoord - dir.offsetX * 2 + rot.offsetX * 5, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 5) + outpos = new DirPos[] { + new DirPos(xCoord + dir.offsetX * 4 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 + rot.offsetZ * 2, dir), + new DirPos(xCoord - dir.offsetX * 5 - rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 5 - rot.offsetZ * 1, dir.getOpposite()), + new DirPos(xCoord + dir.offsetX * 1 - rot.offsetX * 4, yCoord, zCoord + dir.offsetZ * 1 - rot.offsetZ * 4, rot.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX * 5, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 5, rot) }; return outpos; } + @Override + public int getPowerSlot() { + return 0; + } + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] { steam }; @@ -412,59 +412,6 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im return new FluidTank[] { water }; } - @Override - public void setFillForSync(int fill, int index) { } - - @Override - public void setFluidFill(int fill, FluidType type) { - if(type == water.getTankType()) water.setFill(fill); - if(type == steam.getTankType()) steam.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { } - - @Override - public int getFluidFill(FluidType type) { - if(type == water.getTankType()) return water.getFill(); - if(type == steam.getTankType()) return steam.getFill(); - return 0; - } - - @Override - public void fillFluidInit(FluidType type) { - for(DirPos pos : getConPos()) { - this.fillFluid(pos.getX(), pos.getY(), pos.getZ(), this.getTact(), type); - } - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return worldObj.getTotalWorldTime() % 2 == 0; - } - - private List list = new ArrayList(); - - @Override - public List getFluidList(FluidType type) { - return type == steam.getTankType() ? this.list : new ArrayList(); - } - - @Override - public void clearFluidList(FluidType type) { - this.list.clear(); - } - - @Override - public int getMaxFluidFill(FluidType type) { - return type == water.getTankType() ? water.getMaxFill() : 0; - } - @Override public FluidTank[] getAllTanks() { return new FluidTank[] { water, steam }; @@ -480,4 +427,33 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIAssemfac(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assemfac)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 15) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 5) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 6; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 12; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java index 2ca86eb13..3ec39159b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java @@ -1,9 +1,11 @@ package com.hbm.tileentity.machine; +import java.util.HashSet; import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockTallPlant.EnumTallFlower; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.ModDamageSource; @@ -29,6 +31,15 @@ import net.minecraft.util.Vec3; public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardReceiver { + public static final HashSet acceptedFuels = new HashSet(); + + static { + acceptedFuels.add(Fluids.WOODOIL); + acceptedFuels.add(Fluids.ETHANOL); + acceptedFuels.add(Fluids.FISHOIL); + acceptedFuels.add(Fluids.HEAVYOIL); + } + public FluidTank tank; public boolean isOn; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java index 50571797e..3323f4bce 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java @@ -5,6 +5,8 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.MachineBoiler; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; @@ -218,7 +220,7 @@ public class TileEntityMachineBoiler extends TileEntityLoadedBase implements ISi if(!worldObj.isRemote) { this.subscribeToAllAround(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[1], this); age++; if(age >= 20) @@ -253,6 +255,7 @@ public class TileEntityMachineBoiler extends TileEntityLoadedBase implements ISi if(burnTime > 0) { burnTime--; + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); heat += 50; flag1 = true; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java index 38616f5a8..e29757724 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java @@ -233,7 +233,7 @@ public class TileEntityMachineBoilerElectric extends TileEntityLoadedBase implem { this.updateConnections(); this.subscribeToAllAround(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[1], this); age++; if(age >= 20) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java index b35ad6c76..835324307 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.machine; +import java.util.List; + +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerCentrifuge; import com.hbm.inventory.gui.GUIMachineCentrifuge; @@ -9,7 +12,10 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.relauncher.Side; @@ -20,10 +26,11 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class TileEntityMachineCentrifuge extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +public class TileEntityMachineCentrifuge extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, IUpgradeInfoProvider { public int progress; public long power; @@ -223,15 +230,17 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement } } } - + + @Override public void networkUnpack(NBTTagCompound data) { this.power = data.getLong("power"); this.progress = data.getInteger("progress"); this.isProgressing = data.getBoolean("isProgressing"); } - + + @Override public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:block.centrifugeOperate", xCoord, yCoord, zCoord, 2.0F, 1.0F); + return MainRegistry.proxy.getLoopedSound("hbm:block.centrifugeOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); } @Override @@ -305,4 +314,32 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineCentrifuge(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_centrifuge)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 100) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 3; + return 0; + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java index 69215202a..7f8a84d03 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java @@ -1,21 +1,22 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; -import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerChemfac; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIChemfac; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.relauncher.Side; @@ -26,11 +27,11 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { +public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase implements IUpgradeInfoProvider { float rotSpeed; public float rot; @@ -76,7 +77,7 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { for(DirPos pos : getConPos()) for(FluidTank tank : outTanks()) { if(tank.getTankType() != Fluids.NONE && tank.getFill() > 0) { - this.sendFluid(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -92,7 +93,7 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { this.speed -= speedLevel * 15; this.consumption += speedLevel * 300; this.speed += powerLevel * 5; - this.consumption -= powerLevel * 30; + this.consumption -= powerLevel * 20; this.speed /= (overLevel + 1); this.consumption *= (overLevel + 1); @@ -217,58 +218,6 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { return conPos; } - @Override - public void fillFluidInit(FluidType type) { - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - - for(int i = 0; i < 6; i++) { - fillFluid(xCoord + dir.offsetX * (2 - i) + rot.offsetX * 3, yCoord + 4, zCoord + dir.offsetZ * (2 - i) + rot.offsetZ * 3, this.getTact(), type); - fillFluid(xCoord + dir.offsetX * (2 - i) - rot.offsetX * 2, yCoord + 4, zCoord + dir.offsetZ * (2 - i) - rot.offsetZ * 2, this.getTact(), type); - - for(int j = 0; j < 2; j++) { - fillFluid(xCoord + dir.offsetX * (2 - i) + rot.offsetX * 5, yCoord + 1 + j, zCoord + dir.offsetZ * (2 - i) + rot.offsetZ * 5, this.getTact(), type); - fillFluid(xCoord + dir.offsetX * (2 - i) - rot.offsetX * 4, yCoord + 1 + j, zCoord + dir.offsetZ * (2 - i) - rot.offsetZ * 4, this.getTact(), type); - } - } - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return this.worldObj.getTotalWorldTime() % 20 < 10; - } - - private HashMap> fluidMap = new HashMap(); - - @Override - public List getFluidList(FluidType type) { - - List list = fluidMap.get(type); - - if(list == null) { - list = new ArrayList(); - fluidMap.put(type, list); - } - - return list; - } - - @Override - public void clearFluidList(FluidType type) { - - List list = fluidMap.get(type); - - if(list != null) { - list.clear(); - } - } - @Override public int getRecipeCount() { return 8; @@ -289,11 +238,11 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { return new int[] {5 + index * 9, 8 + index * 9, 9 + index * 9, 12 + index * 9}; } - ChunkCoordinates[] inpos; - ChunkCoordinates[] outpos; + DirPos[] inpos; + DirPos[] outpos; @Override - public ChunkCoordinates[] getInputPositions() { + public DirPos[] getInputPositions() { if(inpos != null) return inpos; @@ -301,18 +250,18 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - inpos = new ChunkCoordinates[] { - new ChunkCoordinates(xCoord + dir.offsetX * 4 - rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 1), - new ChunkCoordinates(xCoord - dir.offsetX * 5 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 5 + rot.offsetZ * 2), - new ChunkCoordinates(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4), - new ChunkCoordinates(xCoord + dir.offsetX * 1 + rot.offsetX * 5, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 5) + inpos = new DirPos[] { + new DirPos(xCoord + dir.offsetX * 4 - rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 1, dir), + new DirPos(xCoord - dir.offsetX * 5 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 5 + rot.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4, rot.getOpposite()), + new DirPos(xCoord + dir.offsetX * 1 + rot.offsetX * 5, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 5, rot) }; return inpos; } @Override - public ChunkCoordinates[] getOutputPositions() { + public DirPos[] getOutputPositions() { if(outpos != null) return outpos; @@ -320,11 +269,11 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - outpos = new ChunkCoordinates[] { - new ChunkCoordinates(xCoord + dir.offsetX * 4 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 + rot.offsetZ * 2), - new ChunkCoordinates(xCoord - dir.offsetX * 5 - rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 5 - rot.offsetZ * 1), - new ChunkCoordinates(xCoord + dir.offsetX * 1 - rot.offsetX * 4, yCoord, zCoord + dir.offsetZ * 1 - rot.offsetZ * 4), - new ChunkCoordinates(xCoord - dir.offsetX * 2 + rot.offsetX * 5, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 5) + outpos = new DirPos[] { + new DirPos(xCoord + dir.offsetX * 4 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 + rot.offsetZ * 2, dir), + new DirPos(xCoord - dir.offsetX * 5 - rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 5 - rot.offsetZ * 1, dir.getOpposite()), + new DirPos(xCoord + dir.offsetX * 1 - rot.offsetX * 4, yCoord, zCoord + dir.offsetZ * 1 - rot.offsetZ * 4, rot.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX * 5, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 5, rot) }; return outpos; @@ -366,11 +315,6 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { return outTanks; } - - @Override - public int getMaxFluidFillForReceive(FluidType type) { - return super.getMaxFluidFillForReceive(type); - } AxisAlignedBB bb = null; @@ -407,4 +351,33 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIChemfac(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_chemfac)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 15) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 5) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 6; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 12; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index a1b29e28e..00523e45b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.RecipesCommon.AStack; @@ -21,7 +22,10 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.InventoryUtil; import com.hbm.util.fauxpointtwelve.DirPos; @@ -38,10 +42,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineChemplant extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineChemplant extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 100000; @@ -93,8 +98,8 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements this.isProgressing = false; this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); - if(!tanks[0].loadTank(17, 19, slots)) tanks[0].unloadTank(17, 19, slots); - if(!tanks[1].loadTank(18, 20, slots)) tanks[1].unloadTank(18, 20, slots); + if(!tanks[0].loadTank(17, 19, slots) && (slots[17] == null || slots[17].getItem() != ModItems.fluid_barrel_infinite)) tanks[0].unloadTank(17, 19, slots); + if(!tanks[1].loadTank(18, 20, slots) && (slots[18] == null || slots[18].getItem() != ModItems.fluid_barrel_infinite)) tanks[1].unloadTank(18, 20, slots); tanks[2].unloadTank(9, 11, slots); tanks[3].unloadTank(10, 12, slots); @@ -111,8 +116,8 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } for(DirPos pos : getConPos()) { - if(tanks[2].getFill() > 0) this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(tanks[3].getFill() > 0) this.sendFluid(tanks[3].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[3].getFill() > 0) this.sendFluid(tanks[3], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } UpgradeManager.eval(slots, 1, 3); @@ -124,7 +129,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements this.speed -= speedLevel * 25; this.consumption += speedLevel * 300; this.speed += powerLevel * 5; - this.consumption -= powerLevel * 30; + this.consumption -= powerLevel * 20; this.speed /= (overLevel + 1); this.consumption *= (overLevel + 1); @@ -162,7 +167,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements worldObj.spawnParticle("cloud", x, y, z, 0.0, 0.1, 0.0); } - float volume = this.getVolume(2); + float volume = 1;//this.getVolume(2); if(isProgressing && volume > 0) { @@ -187,7 +192,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements @Override public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:block.chemplantOperate", xCoord, yCoord, zCoord, 1.0F, 1.0F); + return MainRegistry.proxy.getLoopedSound("hbm:block.chemplantOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); } @Override @@ -266,10 +271,10 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } private void setupTanks(ChemRecipe recipe) { - if(recipe.inputFluids[0] != null) tanks[0].setTankType(recipe.inputFluids[0].type); else tanks[0].setTankType(Fluids.NONE); - if(recipe.inputFluids[1] != null) tanks[1].setTankType(recipe.inputFluids[1].type); else tanks[1].setTankType(Fluids.NONE); - if(recipe.outputFluids[0] != null) tanks[2].setTankType(recipe.outputFluids[0].type); else tanks[2].setTankType(Fluids.NONE); - if(recipe.outputFluids[1] != null) tanks[3].setTankType(recipe.outputFluids[1].type); else tanks[3].setTankType(Fluids.NONE); + if(recipe.inputFluids[0] != null) tanks[0].withPressure(recipe.inputFluids[0].pressure).setTankType(recipe.inputFluids[0].type); else tanks[0].setTankType(Fluids.NONE); + if(recipe.inputFluids[1] != null) tanks[1].withPressure(recipe.inputFluids[1].pressure).setTankType(recipe.inputFluids[1].type); else tanks[1].setTankType(Fluids.NONE); + if(recipe.outputFluids[0] != null) tanks[2].withPressure(recipe.outputFluids[0].pressure).setTankType(recipe.outputFluids[0].type); else tanks[2].setTankType(Fluids.NONE); + if(recipe.outputFluids[1] != null) tanks[3].withPressure(recipe.outputFluids[1].pressure).setTankType(recipe.outputFluids[1].type); else tanks[3].setTankType(Fluids.NONE); } private boolean hasRequiredFluids(ChemRecipe recipe) { @@ -304,6 +309,8 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements this.maxProgress = recipe.getDuration() * this.speed / 100; + if(maxProgress <= 0) maxProgress = 1; + if(this.progress >= this.maxProgress) { consumeFluids(recipe); produceFluids(recipe); @@ -361,22 +368,28 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements IInventory inv = (IInventory) te; ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + int[] access = sided != null ? sided.getAccessibleSlotsFromSide(dir.ordinal()) : null; for(AStack ingredient : recipe.inputs) { - if(!InventoryUtil.doesArrayHaveIngredients(slots, 13, 16, ingredient)) { + outer: + while(!InventoryUtil.doesArrayHaveIngredients(slots, 13, 16, ingredient)) { - for(int i = 0; i < inv.getSizeInventory(); i++) { + boolean found = false; + + for(int i = 0; i < (access != null ? access.length : inv.getSizeInventory()); i++) { + + int slot = access != null ? access[i] : i; + ItemStack stack = inv.getStackInSlot(slot); - ItemStack stack = inv.getStackInSlot(i); - if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(i, stack, 0))) { + if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(slot, stack, 0))) { for(int j = 13; j <= 16; j++) { if(slots[j] != null && slots[j].stackSize < slots[j].getMaxStackSize() & InventoryUtil.doesStackDataMatch(slots[j], stack)) { - inv.decrStackSize(i, 1); + inv.decrStackSize(slot, 1); slots[j].stackSize++; - return; + continue outer; } } @@ -385,12 +398,14 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements if(slots[j] == null) { slots[j] = stack.copy(); slots[j].stackSize = 1; - inv.decrStackSize(i, 1); - return; + inv.decrStackSize(slot, 1); + continue outer; } } } } + + if(!found) break outer; } } } @@ -410,6 +425,8 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements if(te instanceof IInventory) { IInventory inv = (IInventory) te; + ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + int[] access = sided != null ? sided.getAccessibleSlotsFromSide(dir.ordinal()) : null; for(int i = 5; i <= 8; i++) { @@ -417,12 +434,14 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements if(out != null) { - for(int j = 0; j < inv.getSizeInventory(); j++) { + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(j, out)) + if(!inv.isItemValidForSlot(slot, out)) continue; - ItemStack target = inv.getStackInSlot(j); + ItemStack target = inv.getStackInSlot(slot); if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize()) { this.decrStackSize(i, 1); @@ -431,15 +450,17 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } } - for(int j = 0; j < inv.getSizeInventory(); j++) { + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(j, out)) + if(!inv.isItemValidForSlot(slot, out)) continue; - if(inv.getStackInSlot(j) == null && inv.isItemValidForSlot(j, out)) { + if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, dir.ordinal()) : inv.isItemValidForSlot(slot, out))) { ItemStack copy = out.copy(); copy.stackSize = 1; - inv.setInventorySlotContents(j, copy); + inv.setInventorySlotContents(slot, copy); this.decrStackSize(i, 1); return; } @@ -638,4 +659,33 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineChemplant(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_chemplant)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 5) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 9; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java index 1a32bf626..129a665fd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java @@ -3,8 +3,6 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -16,6 +14,7 @@ import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.InventoryUtil; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; import api.hbm.fluid.IFluidUser; @@ -24,7 +23,6 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChunkCoordinates; /** * Base class for single and multi chemplants. @@ -34,7 +32,7 @@ import net.minecraft.util.ChunkCoordinates; * Tanks follow the order R1(I1, I2, O1, O2), R2(I1, I2, O1, O2) ... * @author hbm */ -public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor, IFluidUser, IGUIProvider { +public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBase implements IEnergyUser, IFluidUser, IGUIProvider { public long power; public int[] progress; @@ -74,15 +72,6 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa loadItems(i); unloadItems(i); } - - if(worldObj.getTotalWorldTime() % 10 == 0) { - - for(FluidTank tank : this.outTanks()) { - if(tank.getTankType() != Fluids.NONE && tank.getFill() > 0) { - this.fillFluidInit(tank.getTankType()); - } - } - } for(int i = 0; i < count; i++) { @@ -120,10 +109,10 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } private void setupTanks(ChemRecipe recipe, int index) { - if(recipe.inputFluids[0] != null) tanks[index * 4].setTankType(recipe.inputFluids[0].type); - if(recipe.inputFluids[1] != null) tanks[index * 4 + 1].setTankType(recipe.inputFluids[1].type); - if(recipe.outputFluids[0] != null) tanks[index * 4 + 2].setTankType(recipe.outputFluids[0].type); - if(recipe.outputFluids[1] != null) tanks[index * 4 + 3].setTankType(recipe.outputFluids[1].type); + if(recipe.inputFluids[0] != null) tanks[index * 4].withPressure(recipe.inputFluids[0].pressure).setTankType(recipe.inputFluids[0].type); else tanks[index * 4].setTankType(Fluids.NONE); + if(recipe.inputFluids[1] != null) tanks[index * 4 + 1].withPressure(recipe.inputFluids[1].pressure).setTankType(recipe.inputFluids[1].type); else tanks[index * 4 + 1].setTankType(Fluids.NONE); + if(recipe.outputFluids[0] != null) tanks[index * 4 + 2].withPressure(recipe.outputFluids[0].pressure).setTankType(recipe.outputFluids[0].type); else tanks[index * 4 + 2].setTankType(Fluids.NONE); + if(recipe.outputFluids[1] != null) tanks[index * 4 + 3].withPressure(recipe.outputFluids[1].pressure).setTankType(recipe.outputFluids[1].type); else tanks[index * 4 + 3].setTankType(Fluids.NONE); } private boolean hasRequiredFluids(ChemRecipe recipe, int index) { @@ -161,6 +150,8 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa this.maxProgress[index] = recipe.getDuration() * this.speed / 100; + if(maxProgress[index] <= 0) maxProgress[index] = 1; + if(this.progress[index] >= this.maxProgress[index]) { consumeFluids(recipe, index); produceFluids(recipe, index); @@ -211,33 +202,38 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa if(recipe != null) { - ChunkCoordinates[] positions = getInputPositions(); + DirPos[] positions = getInputPositions(); int[] indices = getSlotIndicesFromIndex(index); - for(ChunkCoordinates coord : positions) { - - TileEntity te = worldObj.getTileEntity(coord.posX, coord.posY, coord.posZ); + for(DirPos coord : positions) { + + TileEntity te = worldObj.getTileEntity(coord.getX(), coord.getY(), coord.getZ()); if(te instanceof IInventory) { IInventory inv = (IInventory) te; ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + int[] access = sided != null ? sided.getAccessibleSlotsFromSide(coord.getDir().ordinal()) : null; for(AStack ingredient : recipe.inputs) { - if(!InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], ingredient)) { + outer: + while(!InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], ingredient)) { - for(int i = 0; i < inv.getSizeInventory(); i++) { - - ItemStack stack = inv.getStackInSlot(i); - if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(i, stack, 0))) { + boolean found = false; + + for(int i = 0; i < (access != null ? access.length : inv.getSizeInventory()); i++) { + + int slot = access != null ? access[i] : i; + ItemStack stack = inv.getStackInSlot(slot); + if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(slot, stack, 0))) { for(int j = indices[0]; j <= indices[1]; j++) { if(slots[j] != null && slots[j].stackSize < slots[j].getMaxStackSize() & InventoryUtil.doesStackDataMatch(slots[j], stack)) { - inv.decrStackSize(i, 1); + inv.decrStackSize(slot, 1); slots[j].stackSize++; - return; + continue outer; } } @@ -246,12 +242,14 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa if(slots[j] == null) { slots[j] = stack.copy(); slots[j].stackSize = 1; - inv.decrStackSize(i, 1); - return; + inv.decrStackSize(slot, 1); + continue outer; } } } } + + if(!found) break outer; } } } @@ -261,17 +259,18 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa private void unloadItems(int index) { - ChunkCoordinates[] positions = getOutputPositions(); + DirPos[] positions = getOutputPositions(); int[] indices = getSlotIndicesFromIndex(index); - for(ChunkCoordinates coord : positions) { - - TileEntity te = worldObj.getTileEntity(coord.posX, coord.posY, coord.posZ); + for(DirPos coord : positions) { + + TileEntity te = worldObj.getTileEntity(coord.getX(), coord.getY(), coord.getZ()); if(te instanceof IInventory) { IInventory inv = (IInventory) te; - //ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + int[] access = sided != null ? sided.getAccessibleSlotsFromSide(coord.getDir().ordinal()) : null; for(int i = indices[2]; i <= indices[3]; i++) { @@ -279,12 +278,14 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa if(out != null) { - for(int j = 0; j < inv.getSizeInventory(); j++) { + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(j, out)) + if(!inv.isItemValidForSlot(slot, out)) continue; - ItemStack target = inv.getStackInSlot(j); + ItemStack target = inv.getStackInSlot(slot); if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize() && target.stackSize < inv.getInventoryStackLimit()) { this.decrStackSize(i, 1); @@ -293,15 +294,17 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } } - for(int j = 0; j < inv.getSizeInventory(); j++) { + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(j, out)) + if(!inv.isItemValidForSlot(slot, out)) continue; - if(inv.getStackInSlot(j) == null && inv.isItemValidForSlot(j, out)) { + if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, coord.getDir().ordinal()) : inv.isItemValidForSlot(slot, out))) { ItemStack copy = out.copy(); copy.stackSize = 1; - inv.setInventorySlotContents(j, copy); + inv.setInventorySlotContents(slot, copy); this.decrStackSize(i, 1); return; } @@ -322,17 +325,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa this.power = power; } - @Override - public void setFillForSync(int fill, int index) { } - - @Override - public void setFluidFill(int fill, FluidType type) { } - - @Override - public void setTypeForSync(FluidType type, int index) { } - - @Override - public int getFluidFill(FluidType type) { + /*public int getFluidFill(FluidType type) { int fill = 0; @@ -349,10 +342,9 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } return fill; - } + }*/ /* For input only! */ - @Override public int getMaxFluidFill(FluidType type) { int maxFill = 0; @@ -365,20 +357,6 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa return maxFill; } - - @Override - public int getFluidFillForReceive(FluidType type) { - - int fill = 0; - - for(FluidTank tank : inTanks()) { - if(tank.getTankType() == type) { - fill += tank.getFill(); - } - } - - return fill; - } protected List inTanks() { @@ -394,8 +372,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa return inTanks; } - @Override - public void receiveFluid(int amount, FluidType type) { + /*public void receiveFluid(int amount, FluidType type) { if(amount <= 0) return; @@ -431,15 +408,14 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa tank.setFill(tank.getFill() + part); } - } + }*/ - @Override - public int getFluidFillForTransfer(FluidType type) { + public int getFluidFillForTransfer(FluidType type, int pressure) { int fill = 0; for(FluidTank tank : outTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { fill += tank.getFill(); } } @@ -447,8 +423,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa return fill; } - @Override - public void transferFluid(int amount, FluidType type) { + public void transferFluid(int amount, FluidType type, int pressure) { /* * this whole new fluid mumbo jumbo extra abstraction layer might just be a bandaid @@ -462,7 +437,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa List send = new ArrayList(); for(FluidTank tank : outTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { send.add(tank); } } @@ -524,7 +499,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } @Override - public long transferFluid(FluidType type, long fluid) { + public long transferFluid(FluidType type, int pressure, long fluid) { int amount = (int) fluid; if(amount <= 0) @@ -533,7 +508,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa List rec = new ArrayList(); for(FluidTank tank : inTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { rec.add(tank); } } @@ -567,18 +542,18 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } @Override - public long getDemand(FluidType type) { - return getMaxFluidFill(type) - getFluidFillForTransfer(type); + public long getDemand(FluidType type, int pressure) { + return getMaxFluidFill(type) - getFluidFillForTransfer(type, pressure); } @Override - public long getTotalFluidForSend(FluidType type) { - return getFluidFillForTransfer(type); + public long getTotalFluidForSend(FluidType type, int pressure) { + return getFluidFillForTransfer(type, pressure); } @Override - public void removeFluidForTransfer(FluidType type, long amount) { - this.transferFluid((int) amount, type); + public void removeFluidForTransfer(FluidType type, int pressure, long amount) { + this.transferFluid((int) amount, type, pressure); } @Override @@ -617,6 +592,6 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa * @return A size 4 int array containing min input, max input, min output and max output indices in that order. */ public abstract int[] getSlotIndicesFromIndex(int index); - public abstract ChunkCoordinates[] getInputPositions(); - public abstract ChunkCoordinates[] getOutputPositions(); + public abstract DirPos[] getInputPositions(); + public abstract DirPos[] getOutputPositions(); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java index 3abf74d1f..c616c9afc 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java @@ -1,394 +1,33 @@ package com.hbm.tileentity.machine; -import java.io.IOException; +import com.hbm.blocks.ModBlocks; +import com.hbm.tileentity.TileEntityMachineBase; -import com.google.gson.JsonObject; -import com.google.gson.stream.JsonWriter; -import com.hbm.blocks.machine.MachineCoal; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidContainer; -import com.hbm.inventory.FluidContainerRegistry; -import com.hbm.inventory.container.ContainerMachineCoal; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.gui.GUIMachineCoal; -import com.hbm.items.ModItems; -import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.AuxGaugePacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IConfigurableMachine; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityLoadedBase; - -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyGenerator; -import api.hbm.fluid.IFluidStandardReceiver; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; -import net.minecraft.inventory.Container; +import net.minecraft.entity.item.EntityItem; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntityFurnace; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IConfigurableMachine, IGUIProvider { - - private ItemStack slots[]; - - public long power; - public int burnTime; - public static final long maxPower = 100000; - public FluidTank tank; - - private static final int[] slots_top = new int[] {1}; - private static final int[] slots_bottom = new int[] {0, 2}; - private static final int[] slots_side = new int[] {0, 2}; - - private String customName; - - /* CONFIGURABLE CONSTANTS */ - public static int waterCap = 5000; - public static int genRate = 25; - public static double fuelMod = 0.5D; +@Deprecated +public class TileEntityMachineCoal extends TileEntityMachineBase implements ISidedInventory { public TileEntityMachineCoal() { - slots = new ItemStack[4]; - tank = new FluidTank(Fluids.WATER, waterCap, 0); + super(4); } @Override - public int getSizeInventory() { - return slots.length; - } - - @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } else { - return null; - } - } - - @Override - public void setInventorySlotContents(int i, ItemStack itemStack) { - slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.machineCoal"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } - - @Override - public int getInventoryStackLimit() { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { - return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; - } - } - - //You scrubs aren't needed for anything (right now) - @Override - public void openInventory() {} - @Override - public void closeInventory() {} - - @Override - public boolean isItemValidForSlot(int i, ItemStack stack) { - if(i == 0) - if(FluidContainerRegistry.getFluidContent(stack, Fluids.WATER) > 0) - return true; - if(i == 2) - if(stack.getItem() instanceof IBatteryItem) - return true; - if(i == 1) - if(TileEntityFurnace.getItemBurnTime(stack) > 0) - return true; - - return false; - } - - @Override - public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { - slots[i] = null; - } - - return itemStack1; - } else { - return null; - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); - - this.power = nbt.getLong("powerTime"); - tank.readFromNBT(nbt, "water"); - slots = new ItemStack[getSizeInventory()]; - - for(int i = 0; i < list.tagCount(); i++) - { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setLong("powerTime", power); - tank.writeToNBT(nbt, "water"); - NBTTagList list = new NBTTagList(); - - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - nbt.setTag("items", list); - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) - { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); - } - - @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); - } - - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - if(i == 0) - if(itemStack.getItem() == Items.bucket || itemStack.getItem() == ModItems.rod_empty || itemStack.getItem() == ModItems.rod_dual_empty || itemStack.getItem() == ModItems.rod_quad_empty) - return true; - if(i == 2) - if (itemStack.getItem() instanceof IBatteryItem && ((IBatteryItem)itemStack.getItem()).getCharge(itemStack) == ((IBatteryItem)itemStack.getItem()).getMaxCharge()) - return true; - - return false; - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; + public String getName() { + return "container.machineCoal"; } @Override public void updateEntity() { if(!worldObj.isRemote) { - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); - - this.subscribeToAllAround(Fluids.WATER, this); - - //Water - tank.loadTank(0, 3, slots); - - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - - //Battery Item - power = Library.chargeItemsFromTE(slots, 2, power, maxPower); - - boolean trigger = true; - - if(isItemValid() && this.burnTime == 0) - { - trigger = false; - } - - if(trigger) - { - MachineCoal.updateBlockState(this.burnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); - } - - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, burnTime, 0), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - - generate(); + worldObj.setBlockToAir(xCoord, yCoord, zCoord); + EntityItem drop = new EntityItem(worldObj); + drop.setEntityItemStack(new ItemStack(ModBlocks.machine_wood_burner)); + drop.setPosition(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); + worldObj.spawnEntityInWorld(drop); } } - - public void generate() { - - if(slots[1] != null && TileEntityFurnace.getItemBurnTime(slots[1]) > 0 && burnTime <= 0) - { - burnTime = (int) (TileEntityFurnace.getItemBurnTime(slots[1]) * fuelMod); - slots[1].stackSize -= 1; - if(slots[1].stackSize == 0) - { - if(slots[1].getItem().getContainerItem() != null) - slots[1] = new ItemStack(slots[1].getItem().getContainerItem()); - else - slots[1] = null; - } - } - - if(burnTime > 0) { - burnTime--; - - if(tank.getFill() > 0) { - tank.setFill(tank.getFill() - 1); - - power += genRate; - - if(power > maxPower) - power = maxPower; - } - } - } - - public boolean isItemValid() { - - if(slots[1] != null && TileEntityFurnace.getItemBurnTime(slots[1]) > 0) - { - return true; - } - - return false; - } - - @Override - public long getPower() { - return power; - } - - @Override - public void setPower(long i) { - this.power = i; - } - - @Override - public long getMaxPower() { - return this.maxPower; - } - - @Override - public void setFluidFill(int i, FluidType type) { - if(type.name().equals(tank.getTankType().name())) - tank.setFill(i); - } - - @Override - public int getFluidFill(FluidType type) { - return type.name().equals(this.tank.getTankType().name()) ? tank.getFill() : 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - return type.name().equals(this.tank.getTankType().name()) ? tank.getMaxFill() : 0; - } - - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - - @Override - public FluidTank[] getReceivingTanks() { - return new FluidTank[] {tank}; - } - - @Override - public FluidTank[] getAllTanks() { - return new FluidTank[] { tank }; - } - - @Override - public String getConfigName() { - return "combustiongen"; - } - - @Override - public void readIfPresent(JsonObject obj) { - waterCap = IConfigurableMachine.grab(obj, "I:waterCapacity", waterCap); - genRate = IConfigurableMachine.grab(obj, "I:powerGen", genRate); - fuelMod = IConfigurableMachine.grab(obj, "D:burnTimeMod", fuelMod); - } - - @Override - public void writeConfig(JsonWriter writer) throws IOException { - writer.name("I:waterCapacity").value(waterCap); - writer.name("I:powerGen").value(genRate); - writer.name("D:burnTimeMod").value(fuelMod); - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerMachineCoal(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineCoal(player.inventory, this); - } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java index 592854660..38fce4e2a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java @@ -1,12 +1,15 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerCombustionEngine; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Combustible; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Leaded; import com.hbm.inventory.gui.GUICombustionEngine; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemPistons.EnumPistonType; @@ -14,12 +17,12 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.util.EnumUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; -import api.hbm.fluid.IFluidStandardReceiver; +import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -31,7 +34,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCombustionEngine extends TileEntityMachineBase implements IEnergyGenerator, IFluidStandardReceiver, IControlReceiver, IGUIProvider { +public class TileEntityMachineCombustionEngine extends TileEntityMachinePolluting implements IEnergyGenerator, IFluidStandardTransceiver, IControlReceiver, IGUIProvider { public boolean isOn = false; public static long maxPower = 2_500_000; @@ -49,7 +52,7 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp public int tenth = 0; public TileEntityMachineCombustionEngine() { - super(5); + super(5, 50); this.tank = new FluidTank(Fluids.DIESEL, 24_000, 0); } @@ -84,6 +87,11 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp this.power += toBurn * (trait.getCombustionEnergy() / 10_000D) * eff; fill -= toBurn; + if(worldObj.getTotalWorldTime() % 20 == 0) { + this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * setting * 0.1F); + if(tank.getTankType().hasTrait(FT_Leaded.class)) this.pollute(PollutionType.HEAVYMETAL, PollutionHandler.HEAVY_METAL_PER_SECOND * setting * 0.1F); + } + if(toBurn > 0) { wasOn = true; } @@ -101,6 +109,7 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp for(DirPos pos : getConPos()) { this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendSmoke(pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } if(power > maxPower) @@ -134,6 +143,8 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp audio = rebootAudio(audio); } + audio.keepAlive(); + } else { if(audio != null) { @@ -157,7 +168,7 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp } public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:block.igeneratorOperate", xCoord, yCoord, zCoord, 2.0F, 1.0F); + return MainRegistry.proxy.getLoopedSound("hbm:block.igeneratorOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F, 20); } @Override @@ -265,6 +276,11 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; } + + @Override + public FluidTank[] getSendingTanks() { + return this.getSmokeTanks(); + } AxisAlignedBB bb = null; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java new file mode 100644 index 000000000..9a05a00b5 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java @@ -0,0 +1,367 @@ +package com.hbm.tileentity.machine; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.container.ContainerCompressor; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUICompressor; +import com.hbm.inventory.recipes.CompressorRecipes; +import com.hbm.inventory.recipes.CompressorRecipes.CompressorRecipe; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; +import com.hbm.util.Tuple.Pair; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityMachineCompressor extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IEnergyUser, IFluidStandardTransceiver, IUpgradeInfoProvider { + + public FluidTank[] tanks; + public long power; + public static final long maxPower = 100_000; + public boolean isOn; + public int progress; + public int processTime = 100; + public static final int processTimeBase = 100; + public int powerRequirement; + public static final int powerRequirementBase = 2_500; + + public float fanSpin; + public float prevFanSpin; + public float piston; + public float prevPiston; + public boolean pistonDir; + + public TileEntityMachineCompressor() { + super(4); + this.tanks = new FluidTank[2]; + this.tanks[0] = new FluidTank(Fluids.NONE, 16_000); + this.tanks[1] = new FluidTank(Fluids.NONE, 16_000).withPressure(1); + } + + @Override + public String getName() { + return "container.machineCompressor"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 20 == 0) { + this.updateConnections(); + } + + this.power = Library.chargeTEFromItems(slots, 1, power, maxPower); + this.tanks[0].setType(0, slots); + this.setupTanks(); + + UpgradeManager.eval(slots, 1, 3); + + int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); + int overLevel = UpgradeManager.getLevel(UpgradeType.OVERDRIVE); + + CompressorRecipe rec = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), tanks[0].getPressure())); + int timeBase = this.processTimeBase; + if(rec != null) timeBase = rec.duration; + + //there is a reason to do this but i'm not telling you + // ^ a few months later i have to wonder what the fuck this guy was on about, and if i ever see him i will punch him in the nuts + if(rec == null) this.processTime = speedLevel == 3 ? 10 : speedLevel == 2 ? 20 : speedLevel == 1 ? 60 : timeBase; + else this.processTime = timeBase / (speedLevel + 1); + this.powerRequirement = this.powerRequirementBase / (powerLevel + 1); + this.processTime = this.processTime / (overLevel + 1); + this.powerRequirement = this.powerRequirement * ((overLevel * 2) + 1); + + if(processTime <= 0) processTime = 1; + + if(canProcess()) { + this.progress++; + this.isOn = true; + this.power -= powerRequirement; + + if(progress >= this.processTime) { + progress = 0; + this.process(); + this.markChanged(); + } + + } else { + this.progress = 0; + this.isOn = false; + } + + for(DirPos pos : getConPos()) { + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("progress", progress); + data.setInteger("processTime", processTime); + data.setInteger("powerRequirement", powerRequirement); + data.setLong("power", power); + tanks[0].writeToNBT(data, "0"); + tanks[1].writeToNBT(data, "1"); + data.setBoolean("isOn", isOn); + this.networkPack(data, 100); + + } else { + + this.prevFanSpin = this.fanSpin; + this.prevPiston = this.piston; + + if(this.isOn) { + this.fanSpin += 15; + + if(this.fanSpin >= 360) { + this.prevFanSpin -= 360; + this.fanSpin -= 360; + } + + if(this.pistonDir) { + this.piston -= randSpeed; + if(this.piston <= 0) { + MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:item.boltgun", 0.5F, 0.75F); + this.pistonDir = !this.pistonDir; + } + } else { + this.piston += 0.05F; + if(this.piston >= 1) { + this.randSpeed = 0.085F + worldObj.rand.nextFloat() * 0.03F; + this.pistonDir = !this.pistonDir; + } + } + + this.piston = MathHelper.clamp_float(this.piston, 0F, 1F); + } + } + } + + private float randSpeed = 0.1F; + + public void networkUnpack(NBTTagCompound nbt) { + this.progress = nbt.getInteger("progress"); + this.processTime = nbt.getInteger("processTime"); + this.powerRequirement = nbt.getInteger("powerRequirement"); + this.power = nbt.getLong("power"); + tanks[0].readFromNBT(nbt, "0"); + tanks[1].readFromNBT(nbt, "1"); + this.isOn = nbt.getBoolean("isOn"); + } + + private void updateConnections() { + for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + public DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new DirPos[] { + new DirPos(xCoord + rot.offsetX * 2, yCoord, zCoord + rot.offsetZ * 2, rot), + new DirPos(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2, dir.getOpposite()), + }; + } + + public boolean canProcess() { + + if(this.power <= powerRequirement) return false; + + CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), tanks[0].getPressure())); + + if(recipe == null) { + return tanks[0].getFill() >= 1000 && tanks[1].getFill() + 1000 <= tanks[1].getMaxFill(); + } + + return tanks[0].getFill() > recipe.inputAmount && tanks[1].getFill() + recipe.output.fill <= tanks[1].getMaxFill(); + } + + public void process() { + + CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), tanks[0].getPressure())); + + if(recipe == null) { + tanks[0].setFill(tanks[0].getFill() - 1_000); + tanks[1].setFill(tanks[1].getFill() + 1_000); + } else { + tanks[0].setFill(tanks[0].getFill() - recipe.inputAmount); + tanks[1].setFill(tanks[1].getFill() + recipe.output.fill); + } + } + + protected void setupTanks() { + + CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), tanks[0].getPressure())); + + if(recipe == null) { + tanks[1].withPressure(tanks[0].getPressure() + 1).setTankType(tanks[0].getTankType()); + } else { + tanks[1].withPressure(recipe.output.pressure).setTankType(recipe.output.type); + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + power = nbt.getLong("power"); + progress = nbt.getInteger("progress"); + tanks[0].readFromNBT(nbt, "0"); + tanks[1].readFromNBT(nbt, "1"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + nbt.setInteger("progress", progress); + tanks[0].writeToNBT(nbt, "0"); + tanks[1].writeToNBT(nbt, "1"); + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerCompressor(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUICompressor(player.inventory, this); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + int compression = data.getInteger("compression"); + + if(compression != tanks[0].getPressure()) { + tanks[0].withPressure(compression); + + CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), compression)); + + if(recipe == null) { + tanks[1].withPressure(compression + 1); + } else { + tanks[1].withPressure(recipe.output.pressure).setTankType(recipe.output.type); + } + + this.markChanged(); + } + } + + @Override + public long getPower() { + return power; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[1]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0]}; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 2, + yCoord, + zCoord - 2, + xCoord + 3, + yCoord + 9, + zCoord + 3 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_compressor)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + "Recipe: "+ I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level == 3 ? 90 : level == 2 ? 80 : level == 1 ? 40 : 0) + "%")); + info.add(EnumChatFormatting.GREEN + "Generic compression: "+ I18nUtil.resolveKey(this.KEY_DELAY, "-" + (100 - 100 / (level + 1)) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 9; + return 0; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 7c19d40bb..18acf6556 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -1,17 +1,24 @@ package com.hbm.tileentity.machine; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerCrystallizer; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUICrystallizer; import com.hbm.inventory.recipes.CrystallizerRecipes; import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; -import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IBatteryItem; @@ -26,10 +33,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCrystallizer extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IGUIProvider { +public class TileEntityMachineCrystallizer extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 1000000; @@ -63,6 +71,8 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme tank.setType(7, slots); tank.loadTank(3, 4, slots); + UpgradeManager.eval(slots, 5, 6); + for(int i = 0; i < getCycleCount(); i++) { if(canProcess()) { @@ -156,7 +166,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme else if(slots[2].stackSize + stack.stackSize <= slots[2].getMaxStackSize()) slots[2].stackSize += stack.stackSize; - tank.setFill(tank.getFill() - result.acidAmount); + tank.setFill(tank.getFill() - getRequiredAcid(result.acidAmount)); float freeChance = this.getFreeChance(); @@ -183,7 +193,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme if(slots[0].stackSize < result.itemAmount) return false; - if(tank.getFill() < result.acidAmount) return false; + if(tank.getFill() < getRequiredAcid(result.acidAmount)) return false; ItemStack stack = result.output.copy(); @@ -199,89 +209,39 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme } public int getRequiredAcid(int base) { - - for(int i = 5; i <= 6; i++) { - - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_1) - base *= 3; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_2) - base *= 4; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_3) - base *= 5; + int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); + if(efficiency > 0) { + return base * (efficiency + 2); } - return base; } public float getFreeChance() { - - float chance = 0.0F; - - for(int i = 5; i <= 6; i++) { - - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_1) - chance += 0.05F; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_2) - chance += 0.1F; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_3) - chance += 0.15F; + int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); + if(efficiency > 0) { + return Math.min(efficiency * 0.05F, 0.15F); } - - return Math.min(chance, 0.15F); + return 0; } public short getDuration() { - - float durationMod = 1; CrystallizerRecipe result = CrystallizerRecipes.getOutput(slots[0], tank.getTankType()); - int base = result != null ? result.duration : 600; - - for(int i = 5; i <= 6; i++) { - - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_speed_1) - durationMod -= 0.25F; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_speed_2) - durationMod -= 0.50F; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_speed_3) - durationMod -= 0.75F; + int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + if(speed > 0) { + return (short) Math.ceil((base * Math.max(1F - 0.25F * speed, 0.25F))); } - - return (short) Math.ceil((base * Math.max(durationMod, 0.25F))); + return (short) base; } public int getPowerRequired() { - - int consumption = 0; - - for(int i = 5; i <= 6; i++) { - - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_speed_1) - consumption += 1000; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_speed_2) - consumption += 2000; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_speed_3) - consumption += 3000; - } - - return (int) (demand + Math.min(consumption, 3000)); + int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + return (int) (demand + Math.min(speed * 1000, 3000)); } public float getCycleCount() { - - int cycles = 1; - - for(int i = 5; i <= 6; i++) { - - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_overdrive_1) - cycles += 2; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_overdrive_2) - cycles += 4; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_overdrive_3) - cycles += 6; - } - - return Math.min(cycles, 4); + int speed = UpgradeManager.getLevel(UpgradeType.OVERDRIVE); + return Math.min(1 + speed * 2, 7); } public long getPowerScaled(int i) { @@ -388,4 +348,33 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICrystallizer(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.EFFECT || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.turret_maxwell)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.EFFECT) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "+" + (level * 5) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_ACID, "+" + (level * 100 + 100) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.EFFECT) return 3; + if(type == UpgradeType.OVERDRIVE) return 2; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java index 05459da78..9d30a9f22 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java @@ -1,7 +1,7 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; import java.util.List; +import java.util.Map.Entry; import com.hbm.config.BombConfig; import com.hbm.entity.effect.EntityBlackHole; @@ -11,6 +11,8 @@ import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionThermo; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerMachineCyclotron; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -22,8 +24,10 @@ import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.lib.Library; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IConditionalInvAccess; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; @@ -39,8 +43,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IFluidSource, IFluidAcceptor, IEnergyUser, IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IFluidSource, IFluidAcceptor, IEnergyUser, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess { public long power; public static final long maxPower = 100000000; @@ -58,8 +63,6 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements public FluidTank coolant; public FluidTank amat; - - public List list = new ArrayList(); public TileEntityMachineCyclotron() { super(16); @@ -173,7 +176,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(amat.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(amat, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -408,39 +411,11 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements return 0; } - @Override - public void fillFluidInit(FluidType type) { - - fillFluid(xCoord + 3, yCoord, zCoord + 1, getTact(), type); - fillFluid(xCoord + 3, yCoord, zCoord - 1, getTact(), type); - fillFluid(xCoord - 3, yCoord, zCoord + 1, getTact(), type); - fillFluid(xCoord - 3, yCoord, zCoord - 1, getTact(), type); - - fillFluid(xCoord + 1, yCoord, zCoord + 3, getTact(), type); - fillFluid(xCoord - 1, yCoord, zCoord + 3, getTact(), type); - fillFluid(xCoord + 1, yCoord, zCoord - 3, getTact(), type); - fillFluid(xCoord - 1, yCoord, zCoord - 3, getTact(), type); - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return age >= 0 && age < 10; - } - - @Override - public List getFluidList(FluidType type) { - return list; - } - - @Override - public void clearFluidList(FluidType type) { - list.clear(); - } + @Override public void fillFluidInit(FluidType type) { } + @Override public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { } + @Override public boolean getTact() { return false; } + @Override public List getFluidList(FluidType type) { return null; } + @Override public void clearFluidList(FluidType type) { } @Override public int getMaxFluidFill(FluidType type) { @@ -559,4 +534,46 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineCyclotron(player.inventory, this); } + + @Override + public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack) { + + if(slot < 3) { + for(Entry, Pair> entry : CyclotronRecipes.recipes.entrySet()) { + if(entry.getKey().getKey().matchesRecipe(stack, true)) return true; + } + } else if(slot < 6) { + + for(Entry, Pair> entry : CyclotronRecipes.recipes.entrySet()) { + if(entry.getKey().getValue().matchesRecipe(stack, true)) return true; + } + } + + return false; + } + + @Override + public boolean canInsertItem(int x, int y, int z, int slot, ItemStack stack, int side) { + return this.isItemValidForSlot(x, y, z, slot, stack); + } + + @Override + public boolean canExtractItem(int x, int y, int z, int slot, ItemStack stack, int side) { + return slot >= 6 && slot <= 8; + } + + @Override + public int[] getAccessibleSlotsFromSide(int x, int y, int z, int side) { + + for(int i = 2; i < 6; i++) { + ForgeDirection dir = ForgeDirection.getOrientation(i); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + if(x == xCoord + dir.offsetX * 2 + rot.offsetX && z == zCoord + dir.offsetZ * 2 + rot.offsetZ) return new int[] {0, 3, 6, 7, 8}; + if(x == xCoord + dir.offsetX * 2 && z == zCoord + dir.offsetZ * 2) return new int[] {1, 4, 6, 7, 8}; + if(x == xCoord + dir.offsetX * 2 - rot.offsetX && z == zCoord + dir.offsetZ * 2 - rot.offsetZ) return new int[] {2, 5, 6, 7, 8}; + } + + return new int[] {6, 7, 8}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java index e71df5eab..8f62d9f47 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java @@ -52,4 +52,9 @@ public class TileEntityMachineDetector extends TileEntityLoadedBase implements I return 5; } + @Override + public ConnectionPriority getPriority() { + return ConnectionPriority.HIGH; + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java index 1ec212628..f1c7097e7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java @@ -6,6 +6,8 @@ import java.util.HashMap; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.inventory.FluidContainerRegistry; @@ -15,16 +17,17 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Combustible; import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Leaded; import com.hbm.inventory.gui.GUIMachineDiesel; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; -import api.hbm.fluid.IFluidStandardReceiver; +import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -35,7 +38,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineDiesel extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IConfigurableMachine, IGUIProvider { +public class TileEntityMachineDiesel extends TileEntityMachinePolluting implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider { public long power; public int soundCycle = 0; @@ -58,7 +61,7 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE private static final int[] slots_side = new int[] { 2 }; public TileEntityMachineDiesel() { - super(5); + super(5, 100); tank = new FluidTank(Fluids.DIESEL, 4_000, 0); } @@ -127,8 +130,10 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE if(!worldObj.isRemote) { - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + this.sendSmoke(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + } //Tank Management FluidType last = tank.getTankType(); @@ -203,6 +208,9 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE tank.setFill(tank.getFill() - 1); if(tank.getFill() < 0) tank.setFill(0); + + this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 0.5F); + if(tank.getTankType().hasTrait(FT_Leaded.class)) this.pollute(PollutionType.HEAVYMETAL, PollutionHandler.HEAVY_METAL_PER_SECOND * 0.5F); if(power + getHEFromFuel() <= powerCap) { power += getHEFromFuel(); @@ -312,4 +320,9 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineDiesel(player.inventory, this); } + + @Override + public FluidTank[] getSendingTanks() { + return this.getSmokeTanks(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java index c99db935b..7e6b2c4cb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.machine; +import java.util.List; + +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMachineEPress; import com.hbm.inventory.gui.GUIMachineEPress; @@ -8,7 +11,9 @@ import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemStamp; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.relauncher.Side; @@ -19,10 +24,11 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineEPress extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +public class TileEntityMachineEPress extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, IUpgradeInfoProvider { public long power = 0; public final static long maxPower = 50000; @@ -171,8 +177,8 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - if(stack.getItem() instanceof ItemStamp && i == 1) - return true; + if(stack.getItem() instanceof ItemStamp) + return i == 1; return i == 2; } @@ -254,4 +260,23 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineEPress(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_epress)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (50 * level / 3) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 3a51328b0..8626dcf6c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.machine; +import java.util.List; + +import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.MachineElectricFurnace; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerElectricFurnace; @@ -7,7 +10,9 @@ import com.hbm.inventory.gui.GUIMachineElectricFurnace; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -20,10 +25,11 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineElectricFurnace extends TileEntityMachineBase implements ISidedInventory, IEnergyUser, IGUIProvider { +public class TileEntityMachineElectricFurnace extends TileEntityMachineBase implements ISidedInventory, IEnergyUser, IGUIProvider, IUpgradeInfoProvider { // HOLY FUCKING SHIT I SPENT 5 DAYS ON THIS SHITFUCK CLASS FILE // thanks Martin, vaer and Bob for the help @@ -166,7 +172,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl power = Library.chargeTEFromItems(slots, 0, power, maxPower); - this.updateConnections(); + if(worldObj.getTotalWorldTime() % 40 == 0) this.updateConnections(); this.consumption = 50; this.maxProgress = 100; @@ -263,4 +269,29 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineElectricFurnace(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electric_furnace_off)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 10) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + return 0; + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java index 5ea2a2cbd..ac3095dd3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java @@ -24,9 +24,11 @@ import com.hbm.items.machine.ItemDrillbit.EnumDrillType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Compat; import com.hbm.util.EnumUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.ItemStackUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; @@ -50,11 +52,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineExcavator extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IControlReceiver, IGUIProvider { +public class TileEntityMachineExcavator extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { public static final long maxPower = 1_000_000; public long power; @@ -839,4 +842,28 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (100 - 100 / (level / 2 + 1)) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java new file mode 100644 index 000000000..e8f98a245 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java @@ -0,0 +1,330 @@ +package com.hbm.tileentity.machine; + +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.container.ContainerMachineExposureChamber; +import com.hbm.inventory.gui.GUIMachineExposureChamber; +import com.hbm.inventory.recipes.ExposureChamberRecipes; +import com.hbm.inventory.recipes.ExposureChamberRecipes.ExposureChamberRecipe; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.lib.Library; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyUser; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityMachineExposureChamber extends TileEntityMachineBase implements IGUIProvider, IEnergyUser, IUpgradeInfoProvider { + + public long power; + public static final long maxPower = 1_000_000; + + public int progress; + public static final int processTimeBase = 200; + public int processTime = processTimeBase; + public static final int consumptionBase = 10_000; + public int consumption = consumptionBase; + public int savedParticles; + public static final int maxParticles = 8; + public boolean isOn = false; + public float rotation; + public float prevRotation; + + public TileEntityMachineExposureChamber() { + /* + * 0: Particle + * 1: Particle internal + * 2: Particle container + * 3: Ingredient + * 4: Output + * 5: Battery + * 6-7: Upgrades + */ + super(8); + } + + @Override + public String getName() { + return "container.exposureChamber"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.isOn = false; + this.power = Library.chargeTEFromItems(slots, 5, power, maxPower); + + if(worldObj.getTotalWorldTime() % 20 == 0) { + for(DirPos pos : getConPos()) this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + UpgradeManager.eval(slots, 6, 7); + int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); + int overdriveLevel = Math.min(UpgradeManager.getLevel(UpgradeType.OVERDRIVE), 3); + + this.consumption = this.consumptionBase; + + this.processTime = this.processTimeBase - this.processTimeBase / 4 * speedLevel; + this.consumption *= (speedLevel / 2 + 1); + this.processTime *= (powerLevel / 2 + 1); + this.consumption /= (powerLevel + 1); + this.processTime /= (overdriveLevel + 1); + this.consumption *= (overdriveLevel * 2 + 1); + + if(slots[1] == null && slots[0] != null && slots[3] != null && this.savedParticles <= 0) { + ExposureChamberRecipe recipe = this.getRecipe(slots[0], slots[3]); + + if(recipe != null) { + + ItemStack container = slots[0].getItem().getContainerItem(slots[0]); + + boolean canStore = false; + + if(container == null) { + canStore = true; + } else if(slots[2] == null) { + slots[2] = container.copy(); + canStore = true; + } else if(slots[2].getItem() == container.getItem() && slots[2].getItemDamage() == container.getItemDamage() && slots[2].stackSize < slots[2].getMaxStackSize()) { + slots[2].stackSize++; + canStore = true; + } + + if(canStore) { + slots[1] = slots[0].copy(); + slots[1].stackSize = 0; + this.decrStackSize(0, 1); + this.savedParticles = this.maxParticles; + } + } + } + + if(slots[1] != null && this.savedParticles > 0 && this.power >= this.consumption) { + ExposureChamberRecipe recipe = this.getRecipe(slots[1], slots[3]); + + if(recipe != null && (slots[4] == null || (slots[4].getItem() == recipe.output.getItem() && slots[4].getItemDamage() == recipe.output.getItemDamage() && slots[4].stackSize + recipe.output.stackSize <= slots[4].getMaxStackSize()))) { + this.progress++; + this.power -= this.consumption; + this.isOn = true; + + if(this.progress >= this.processTime) { + this.progress = 0; + this.savedParticles--; + this.decrStackSize(3, 1); + + if(slots[4] == null) { + slots[4] = recipe.output.copy(); + } else { + slots[4].stackSize += recipe.output.stackSize; + } + } + + } else { + this.progress = 0; + } + } else { + this.progress = 0; + } + + if(this.savedParticles <= 0) { + slots[1] = null; + } + + this.networkPackNT(50); + } else { + + this.prevRotation = this.rotation; + + if(this.isOn) { + + this.rotation += 10D; + + if(this.rotation >= 720D) { + this.rotation -= 720D; + this.prevRotation -= 720D; + } + } + } + } + + public DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP).getOpposite(); + return new DirPos[] { + new DirPos(xCoord + rot.offsetX * 7 + dir.offsetX * 2, yCoord, zCoord + rot.offsetZ * 7 + dir.offsetZ * 2, dir), + new DirPos(xCoord + rot.offsetX * 7 - dir.offsetX * 2, yCoord, zCoord + rot.offsetZ * 7 - dir.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord + rot.offsetX * 8 + dir.offsetX * 2, yCoord, zCoord + rot.offsetZ * 8 + dir.offsetZ * 2, dir), + new DirPos(xCoord + rot.offsetX * 8 - dir.offsetX * 2, yCoord, zCoord + rot.offsetZ * 8 - dir.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord + rot.offsetX * 9, yCoord, zCoord + rot.offsetZ * 9, rot) + }; + } + + public ExposureChamberRecipe getRecipe(ItemStack particle, ItemStack ingredient) { + return ExposureChamberRecipes.getRecipe(particle, ingredient); + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + + //will only load new capsules if there's no cached particles, this should prevent clogging + + //accept items when the slots are already partially filled, i.e. applicable + if(i == 0 && slots[0] != null) return true; + if(i == 3 && slots[3] != null) return true; + + //if there's no particle stored, use the un-consumed capsule for reference + ItemStack particle = slots[1] != null ? slots[1] : slots[0]; + + //if no particle is loaded and an ingot is present + if(i == 0 && particle == null && slots[3] != null) { + ExposureChamberRecipe recipe = getRecipe(stack, slots[3]); + return recipe != null; + } + + //if a particle is loaded but no ingot present + if(i == 3 && particle != null && slots[3] == null) { + ExposureChamberRecipe recipe = getRecipe(slots[0], stack); + return recipe != null; + } + + //if there's nothing at all, find a reference recipe and see if the item matches anything + if(particle == null && slots[3] == null) { + + for(ExposureChamberRecipe recipe : ExposureChamberRecipes.recipes) { + if(i == 0 && recipe.particle.matchesRecipe(stack, true)) return true; + if(i == 3 && recipe.ingredient.matchesRecipe(stack, true)) return true; + } + } + + return false; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return i == 2 || i == 4; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] {0, 2, 3, 4}; + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeBoolean(this.isOn); + buf.writeInt(this.progress); + buf.writeInt(this.processTime); + buf.writeInt(this.consumption); + buf.writeLong(this.power); + buf.writeByte((byte) this.savedParticles); + } + + @Override + public void deserialize(ByteBuf buf) { + this.isOn = buf.readBoolean(); + this.progress = buf.readInt(); + this.processTime = buf.readInt(); + this.consumption = buf.readInt(); + this.power = buf.readLong(); + this.savedParticles = buf.readByte(); + } + + @Override + public long getPower() { + return power; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 8, + yCoord, + zCoord - 8, + xCoord + 9, + yCoord + 5, + zCoord + 9 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerMachineExposureChamber(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIMachineExposureChamber(player.inventory, this); + } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_exposure_chamber)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 50) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 50) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 3; + return 0; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java index ac797a691..eb993e4f7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java @@ -1,14 +1,12 @@ package com.hbm.tileentity.machine; -import java.util.HashMap; - import com.hbm.blocks.BlockDummyable; -import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.container.ContainerMachineGasCent; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineGasCent; +import com.hbm.inventory.recipes.GasCentrifugeRecipes; import com.hbm.inventory.recipes.GasCentrifugeRecipes.PseudoFluidType; import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; @@ -36,7 +34,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; //epic! -public class TileEntityMachineGasCent extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider { +public class TileEntityMachineGasCent extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IGUIProvider { public long power; public int progress; @@ -50,17 +48,9 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I private static final int[] slots_io = new int[] { 0, 1, 2, 3 }; - private static HashMap fluidConversions = new HashMap(); - - static { - fluidConversions.put(Fluids.UF6, PseudoFluidType.NUF6); - fluidConversions.put(Fluids.PUF6, PseudoFluidType.PF6); - fluidConversions.put(Fluids.WATZ, PseudoFluidType.MUD); - } - public TileEntityMachineGasCent() { super(7); - tank = new FluidTank(Fluids.UF6, 2000, 0); + tank = new FluidTank(Fluids.UF6, 2000); inputTank = new PseudoFluidTank(PseudoFluidType.NUF6, 8000); outputTank = new PseudoFluidTank(PseudoFluidType.LEUF6, 8000); } @@ -180,10 +170,11 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I this.power = data.getLong("power"); this.progress = data.getInteger("progress"); this.isProgressing = data.getBoolean("isProgressing"); - this.inputTank.setTankType(PseudoFluidType.valueOf(data.getString("inputType"))); - this.outputTank.setTankType(PseudoFluidType.valueOf(data.getString("outputType"))); + this.inputTank.setTankType(PseudoFluidType.types.get(data.getString("inputType"))); + this.outputTank.setTankType(PseudoFluidType.types.get(data.getString("outputType"))); this.inputTank.setFill(data.getInteger("inputFill")); this.outputTank.setFill(data.getInteger("outputFill")); + this.tank.readFromNBT(data, "t"); } @Override @@ -195,9 +186,8 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I power = Library.chargeTEFromItems(slots, 4, power, maxPower); setTankType(5); - tank.updateTank(this); - if(fluidConversions.containsValue(inputTank.getTankType())) { + if(GasCentrifugeRecipes.fluidConversions.containsValue(inputTank.getTankType())) { attemptConversion(); } @@ -246,8 +236,9 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I data.setBoolean("isProgressing", isProgressing); data.setInteger("inputFill", inputTank.getFill()); data.setInteger("outputFill", outputTank.getFill()); - data.setString("inputType", inputTank.getTankType().toString()); - data.setString("outputType", outputTank.getTankType().toString()); + data.setString("inputType", inputTank.getTankType().name); + data.setString("outputType", outputTank.getTankType().name); + tank.writeToNBT(data, "t"); this.networkPack(data, 50); PacketDispatcher.wrapper.sendToAllAround(new LoopedSoundPacket(xCoord, yCoord, zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); @@ -258,7 +249,7 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(fluidConversions.containsValue(inputTank.getTankType())) { + if(GasCentrifugeRecipes.fluidConversions.containsValue(inputTank.getTankType())) { this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -301,10 +292,10 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I if(slots[in] != null && slots[in].getItem() instanceof IItemFluidIdentifier) { IItemFluidIdentifier id = (IItemFluidIdentifier) slots[in].getItem(); - FluidType newType = id.getType(null, 0, 0, 0, slots[in]); + FluidType newType = id.getType(worldObj, xCoord, yCoord, zCoord, slots[in]); if(tank.getTankType() != newType) { - PseudoFluidType pseudo = fluidConversions.get(newType); + PseudoFluidType pseudo = GasCentrifugeRecipes.fluidConversions.get(newType); if(pseudo != null) { inputTank.setTankType(pseudo); @@ -316,32 +307,6 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I } } - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } - - @Override - public void setFluidFill(int fill, FluidType type) { - if(type == tank.getTankType()) - tank.setFill(fill); - } - - @Override - public int getFluidFill(FluidType type) { - return tank.getTankType() == type ? tank.getFill() : 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - return tank.getTankType() == type ? tank.getMaxFill() : 0; - } - @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] { tank }; @@ -413,16 +378,16 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I public void writeToNBT(NBTTagCompound nbt, String s) { nbt.setInteger(s, fluid); nbt.setInteger(s + "_max", maxFluid); - nbt.setString(s + "_type", type.toString()); + nbt.setString(s + "_type", type.name); } //Called by TE to load fillstate public void readFromNBT(NBTTagCompound nbt, String s) { fluid = nbt.getInteger(s); int max = nbt.getInteger(s + "_max"); - if(max > 0) - maxFluid = nbt.getInteger(s + "_max"); - type = PseudoFluidType.valueOf(nbt.getString(s + "_type")); + if(max > 0) maxFluid = nbt.getInteger(s + "_max"); + type = PseudoFluidType.types.get(nbt.getString(s + "_type")); + if(type == null) type = PseudoFluidType.NONE; } /* ______ ______ diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java index 242d316cd..f629c577b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java @@ -72,7 +72,7 @@ public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements if(output.getFill() > 0) { for(DirPos pos : getConPos()) { - this.sendFluid(output.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(output, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } data.setInteger("heat", this.getTotalHeat()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java index dd49bbf75..141c16d38 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java @@ -64,11 +64,11 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement public static int coalGenRate = 20; public static double rtgHeatMult = 0.15D; public static double waterPowerMult = 1.0D; - public static double lubePowerMult = 1.0D; - public static double heatExponent = 1.1D; + public static double lubePowerMult = 1.5D; + public static double heatExponent = 1.15D; public static int waterRate = 10; public static int lubeRate = 1; - public static long fluidHeatDiv = 5_000L; + public static long fluidHeatDiv = 1_000L; @Override public String getConfigName() { @@ -124,6 +124,9 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); return new DirPos[] { new DirPos(xCoord + dir.offsetX * -4, yCoord, zCoord + dir.offsetZ * -4, dir.getOpposite()), + new DirPos(xCoord + dir.offsetX * -2, yCoord - 1, zCoord + dir.offsetZ * -2, ForgeDirection.DOWN), + new DirPos(xCoord + dir.offsetX * -1, yCoord - 1, zCoord + dir.offsetZ * -1, ForgeDirection.DOWN), + new DirPos(xCoord, yCoord - 1, zCoord, ForgeDirection.DOWN), new DirPos(xCoord + dir.offsetX * 3, yCoord, zCoord + dir.offsetZ * 3, dir), }; } @@ -275,7 +278,7 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement public int getPowerFromFuel(boolean con) { FluidType type = tanks[1].getTankType(); - return type.hasTrait(FT_Flammable.class) ? (int)(type.getTrait(FT_Flammable.class).getHeatEnergy() / (con ? 1000L : fluidHeatDiv)) : 0; + return type.hasTrait(FT_Flammable.class) ? (int)(type.getTrait(FT_Flammable.class).getHeatEnergy() / (con ? 5000L : fluidHeatDiv)) : 0; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index 4e43bfcb0..acdc7ee38 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; @@ -21,8 +22,13 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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; @@ -32,7 +38,8 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider, SimpleComponent { public long power; public static final long maxPower = 100000000; @@ -74,7 +81,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); this.sendPower(worldObj, xCoord + dir.offsetX * -4, yCoord, zCoord + dir.offsetZ * -4, dir.getOpposite()); for(DirPos pos : getConPos()) this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - for(DirPos pos : getConPos()) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + for(DirPos pos : getConPos()) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); tanks[0].setType(0, 1, slots); tanks[0].loadTank(2, 3, slots); @@ -280,6 +287,36 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme return new FluidTank[] {tanks[0]}; } + @Override + public String getComponentName() { + return "ntm_turbine"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return CompatHandler.steamTypeToInt(tanks[1].getTankType()); + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setType(Context context, Arguments args) { + tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); + return new Object[] {true}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineLargeTurbine(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index b8d708c5e..d40bac866 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -23,7 +23,10 @@ import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.InventoryUtil; import api.hbm.block.IDrillInteraction; @@ -47,10 +50,11 @@ import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineMiningLaser extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IMiningDrill, IFluidStandardSender, IGUIProvider { +public class TileEntityMachineMiningLaser extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IMiningDrill, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider { public long power; public int age = 0; @@ -99,10 +103,10 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen if (age == 9 || age == 19) fillFluidInit(tank.getTankType()); - this.sendFluid(tank.getTankType(), worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.sendFluid(tank.getTankType(), worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord + 2, zCoord, Library.POS_Z); - this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord - 2, zCoord, Library.NEG_Z); + this.sendFluid(tank, worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); + this.sendFluid(tank, worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); + this.sendFluid(tank, worldObj, xCoord, yCoord + 2, zCoord, Library.POS_Z); + this.sendFluid(tank, worldObj, xCoord, yCoord - 2, zCoord, Library.NEG_Z); power = Library.chargeTEFromItems(slots, 0, power, maxPower); tank.updateTank(xCoord, yCoord, zCoord, this.worldObj.provider.dimensionId); @@ -262,7 +266,9 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen if(hasCrystallizer()) { CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack, Fluids.ACID); - if(result != null && result.output.getItem() != ModItems.scrap) { + if(result == null) result = CrystallizerRecipes.getOutput(stack, Fluids.SULFURIC_ACID); + + if(result != null) { worldObj.spawnEntityInWorld(new EntityItem(worldObj, targetX + 0.5, targetY + 0.5, targetZ + 0.5, result.output.copy())); normal = false; } @@ -712,4 +718,40 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMiningLaser(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE || type == UpgradeType.EFFECT || type == UpgradeType.FORTUNE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (100 - 100 / (level + 1)) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (100 * level / 16) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 * level / 16) + "%")); + } + if(type == UpgradeType.EFFECT) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_RANGE, "+" + (2 * level) + "m")); + } + if(type == UpgradeType.FORTUNE) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_FORTUNE, "+" + level)); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 12; + if(type == UpgradeType.POWER) return 12; + if(type == UpgradeType.EFFECT) return 12; + if(type == UpgradeType.FORTUNE) return 3; + if(type == UpgradeType.OVERDRIVE) return 9; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index d92976d5f..ae5054b00 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -1,5 +1,9 @@ package com.hbm.tileentity.machine; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMixer; import com.hbm.inventory.fluid.Fluids; @@ -11,7 +15,10 @@ import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; @@ -24,14 +31,16 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineMixer extends TileEntityMachineBase implements INBTPacketReceiver, IGUIProvider, IEnergyUser, IFluidStandardTransceiver { +public class TileEntityMachineMixer extends TileEntityMachineBase implements INBTPacketReceiver, IControlReceiver, IGUIProvider, IEnergyUser, IFluidStandardTransceiver, IUpgradeInfoProvider { public long power; public static final long maxPower = 10_000; public int progress; public int processTime; + public int recipeIndex; public float rotation; public float prevRotation; @@ -100,13 +109,14 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB } for(DirPos pos : getConPos()) { - if(tanks[2].getFill() > 0) this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); data.setInteger("processTime", processTime); data.setInteger("progress", progress); + data.setInteger("recipe", recipeIndex); data.setBoolean("wasOn", wasOn); for(int i = 0; i < 3; i++) { tanks[i].writeToNBT(data, i + ""); @@ -133,6 +143,7 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB this.power = nbt.getLong("power"); this.processTime = nbt.getInteger("processTime"); this.progress = nbt.getInteger("progress"); + this.recipeIndex = nbt.getInteger("recipe"); this.wasOn = nbt.getBoolean("wasOn"); for(int i = 0; i < 3; i++) { tanks[i].readFromNBT(nbt, i + ""); @@ -140,10 +151,19 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB } public boolean canProcess() { + + MixerRecipe[] recipes = MixerRecipes.getOutput(tanks[2].getTankType()); + if(recipes == null || recipes.length <= 0) { + this.recipeIndex = 0; + return false; + } - MixerRecipe recipe = MixerRecipes.getOutput(tanks[2].getTankType()); - - if(recipe == null) return false; + this.recipeIndex = this.recipeIndex % recipes.length; + MixerRecipe recipe = recipes[this.recipeIndex]; + if(recipe == null) { + this.recipeIndex = 0; + return false; + } tanks[0].setTankType(recipe.input1 != null ? recipe.input1.type : Fluids.NONE); tanks[1].setTankType(recipe.input2 != null ? recipe.input2.type : Fluids.NONE); @@ -169,7 +189,8 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB protected void process() { - MixerRecipe recipe = MixerRecipes.getOutput(tanks[2].getTankType()); + MixerRecipe[] recipes = MixerRecipes.getOutput(tanks[2].getTankType()); + MixerRecipe recipe = recipes[this.recipeIndex % recipes.length]; if(recipe.input1 != null) tanks[0].setFill(tanks[0].getFill() - recipe.input1.fill); if(recipe.input2 != null) tanks[1].setFill(tanks[1].getFill() - recipe.input2.fill); @@ -199,8 +220,10 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - MixerRecipe recipe = MixerRecipes.getOutput(tanks[2].getTankType()); + MixerRecipe[] recipes = MixerRecipes.getOutput(tanks[2].getTankType()); + if(recipes == null || recipes.length <= 0) return false; + MixerRecipe recipe = recipes[this.recipeIndex % recipes.length]; if(recipe == null || recipe.solidInput == null) return false; return recipe.solidInput.matchesRecipe(itemStack, true); @@ -213,6 +236,7 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB this.power = nbt.getLong("power"); this.progress = nbt.getInteger("progress"); this.processTime = nbt.getInteger("processTime"); + this.recipeIndex = nbt.getInteger("recipe"); for(int i = 0; i < 3; i++) this.tanks[i].readFromNBT(nbt, i + ""); } @@ -223,6 +247,7 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB nbt.setLong("power", power); nbt.setInteger("progress", progress); nbt.setInteger("processTime", processTime); + nbt.setInteger("recipe", recipeIndex); for(int i = 0; i < 3; i++) this.tanks[i].writeToNBT(nbt, i + ""); } @@ -284,4 +309,42 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public boolean hasPermission(EntityPlayer player) { + return player.getDistance(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) <= 16; + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("toggle")) this.recipeIndex++; + } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 6; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java index 0f91fdfb6..2ddf52c34 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java @@ -69,7 +69,7 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme int powerReq = 10000; int convert = Math.min(tanks[0].getFill(), tanks[1].getFill()); - convert = Math.min(convert, (plasma.getMaxFill() - plasma.getFill())); + convert = Math.min(convert, (plasma.getMaxFill() - plasma.getFill()) / 2); convert = Math.min(convert, maxConv); convert = (int) Math.min(convert, power / powerReq); convert = Math.max(0, convert); @@ -174,7 +174,7 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme plasma.setTankType(Fluids.PLASMA_HT); return; } - if(types.contains(Fluids.XENON) && types.contains(Fluids.MERCURY)) { + if(types.contains(Fluids.HELIUM4) && types.contains(Fluids.OXYGEN)) { plasma.setTankType(Fluids.PLASMA_XM); return; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java index 354fef320..c049d696e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java @@ -124,7 +124,12 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU if(slots[0] != null && burnTime < 200 && TileEntityFurnace.getItemBurnTime(slots[0]) > 0) { // less than one operation stored? burn more fuel! burnTime += TileEntityFurnace.getItemBurnTime(slots[0]); - this.decrStackSize(0, 1); + + if(slots[0].stackSize == 1 && slots[0].getItem().hasContainerItem(slots[0])) { + slots[0] = slots[0].getItem().getContainerItem(slots[0]).copy(); + } else { + this.decrStackSize(0, 1); + } this.markChanged(); } @@ -186,8 +191,8 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - if(stack.getItem() instanceof ItemStamp && i == 1) - return true; + if(stack.getItem() instanceof ItemStamp) + return i == 1; if(TileEntityFurnace.getItemBurnTime(stack) > 0 && i == 0) return true; @@ -197,7 +202,7 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU @Override public int[] getAccessibleSlotsFromSide(int side) { - return side == 0 ? new int[] { 3 } : new int[] { 0, 1, 2 }; + return new int[] { 0, 1, 2, 3 }; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java new file mode 100644 index 000000000..653064658 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java @@ -0,0 +1,203 @@ +package com.hbm.tileentity.machine; + +import java.io.IOException; +import java.util.HashSet; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IConfigurableMachine; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; + +public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver, IConfigurableMachine { + + public static final HashSet validBlocks = new HashSet(); + + static { + validBlocks.add(Blocks.grass); + validBlocks.add(Blocks.dirt); + validBlocks.add(Blocks.sand); + validBlocks.add(Blocks.mycelium); + validBlocks.add(ModBlocks.waste_earth); + validBlocks.add(ModBlocks.dirt_dead); + validBlocks.add(ModBlocks.dirt_oily); + validBlocks.add(ModBlocks.sand_dirty); + validBlocks.add(ModBlocks.sand_dirty_red); + } + + public FluidTank water; + + public boolean isOn = false; + public float rotor; + public float lastRotor; + public boolean onGround = false; + public int groundCheckDelay = 0; + + public static int groundHeight = 70; + public static int groundDepth = 4; + public static int steamSpeed = 1_000; + public static int electricSpeed = 10_000; + + @Override + public String getConfigName() { + return "waterpump"; + } + + @Override + public void readIfPresent(JsonObject obj) { + groundHeight = IConfigurableMachine.grab(obj, "I:groundHeight", groundHeight); + groundDepth = IConfigurableMachine.grab(obj, "I:groundDepth", groundDepth); + steamSpeed = IConfigurableMachine.grab(obj, "I:steamSpeed", steamSpeed); + electricSpeed = IConfigurableMachine.grab(obj, "I:electricSpeed", electricSpeed); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:groundHeight").value(groundHeight); + writer.name("I:groundDepth").value(groundDepth); + writer.name("I:steamSpeed").value(steamSpeed); + writer.name("I:electricSpeed").value(electricSpeed); + } + + public void updateEntity() { + + if(!worldObj.isRemote) { + + for(DirPos pos : getConPos()) { + if(water.getFill() > 0) this.sendFluid(water, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + if(groundCheckDelay > 0) { + groundCheckDelay--; + } else { + onGround = this.checkGround(); + } + + this.isOn = false; + if(this.canOperate() && yCoord <= groundHeight && onGround) { + this.isOn = true; + this.operate(); + } + + NBTTagCompound data = this.getSync(); + INBTPacketReceiver.networkPack(this, data, 150); + + } else { + + this.lastRotor = this.rotor; + if(this.isOn) this.rotor += 10F; + + if(this.rotor >= 360F) { + this.rotor -= 360F; + this.lastRotor -= 360F; + + MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:block.steamEngineOperate", 0.5F, 0.75F); + MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "game.neutral.swim.splash", 1F, 0.5F); + } + } + } + + protected boolean checkGround() { + + if(worldObj.provider.hasNoSky) return false; + + int validBlocks = 0; + int invalidBlocks = 0; + + for(int x = -1; x <= 1; x++) { + for(int y = -1; y >= -groundDepth; y--) { + for(int z = -1; z <= 1; z++) { + + Block b = worldObj.getBlock(xCoord + x, yCoord + y, zCoord + z); + + if(y == -1 && !b.isNormalCube()) return false; // first layer has to be full solid + + if(this.validBlocks.contains(b)) validBlocks++; + else invalidBlocks ++; + } + } + } + + return validBlocks >= invalidBlocks; // valid block count has to be at least 50% + } + + protected NBTTagCompound getSync() { + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("isOn", isOn); + data.setBoolean("onGround", onGround); + water.writeToNBT(data, "w"); + return data; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.isOn = nbt.getBoolean("isOn"); + this.onGround = nbt.getBoolean("onGround"); + water.readFromNBT(nbt, "w"); + } + + protected abstract boolean canOperate(); + protected abstract void operate(); + + protected DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z) + }; + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] {water}; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {water}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[0]; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 5, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java new file mode 100644 index 000000000..25b22372d --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java @@ -0,0 +1,69 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyUser; +import net.minecraft.nbt.NBTTagCompound; + +public class TileEntityMachinePumpElectric extends TileEntityMachinePumpBase implements IEnergyUser { + + public long power; + public static final long maxPower = 10_000; + + public TileEntityMachinePumpElectric() { + super(); + water = new FluidTank(Fluids.WATER, electricSpeed * 100); + } + + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 20 == 0) for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + super.updateEntity(); + } + + protected NBTTagCompound getSync() { + NBTTagCompound data = super.getSync(); + data.setLong("power", power); + return data; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); + } + + @Override + protected boolean canOperate() { + return power >= 1_000 && water.getFill() < water.getMaxFill(); + } + + @Override + protected void operate() { + this.power -= 1_000; + water.setFill(Math.min(water.getFill() + electricSpeed, water.getMaxFill())); + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public void setPower(long power) { + this.power = power; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java new file mode 100644 index 000000000..d935cfbf4 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java @@ -0,0 +1,76 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.util.fauxpointtwelve.DirPos; + +import net.minecraft.nbt.NBTTagCompound; + +public class TileEntityMachinePumpSteam extends TileEntityMachinePumpBase { + + public FluidTank steam; + public FluidTank lps; + + public TileEntityMachinePumpSteam() { + super(); + water = new FluidTank(Fluids.WATER, steamSpeed * 100); + steam = new FluidTank(Fluids.STEAM, 1_000); + lps = new FluidTank(Fluids.SPENTSTEAM, 10); + } + + public void updateEntity() { + + if(!worldObj.isRemote) { + + for(DirPos pos : getConPos()) { + this.trySubscribe(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(lps.getFill() > 0) { + this.sendFluid(lps, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + } + + super.updateEntity(); + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] {water, steam, lps}; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {water, lps}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {steam}; + } + + protected NBTTagCompound getSync() { + NBTTagCompound data = super.getSync(); + steam.writeToNBT(data, "s"); + lps.writeToNBT(data, "l"); + return data; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + steam.readFromNBT(nbt, "s"); + lps.readFromNBT(nbt, "l"); + } + + @Override + protected boolean canOperate() { + return steam.getFill() >= 100 && lps.getMaxFill() - lps.getFill() > 0 && water.getFill() < water.getMaxFill(); + } + + @Override + protected void operate() { + steam.setFill(steam.getFill() - 100); + lps.setFill(lps.getFill() + 1); + water.setFill(Math.min(water.getFill() + steamSpeed, water.getMaxFill())); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java index b770c4111..4e386f468 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java @@ -139,7 +139,7 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided super.readFromNBT(nbt); NBTTagList list = nbt.getTagList("items", 10); - power = nbt.getInteger("power"); + power = nbt.getLong("power"); heat = nbt.getInteger("heat"); slots = new ItemStack[getSizeInventory()]; @@ -157,16 +157,14 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - nbt.setInteger("power", (short) (power)); - nbt.setInteger("heat", (short) (heat)); + nbt.setLong("power", power); + nbt.setInteger("heat", heat); NBTTagList list = new NBTTagList(); - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { + for(int i = 0; i < slots.length; i++) { + if(slots[i] != null) { NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); + nbt1.setByte("slot", (byte) i); slots[i].writeToNBT(nbt1); list.appendTag(nbt1); } @@ -175,9 +173,9 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided } @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_){ - return slot_io; - } + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return slot_io; + } @Override public boolean canInsertItem(int i, ItemStack itemStack, int j) { @@ -211,7 +209,7 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided if(!worldObj.isRemote) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir.getOpposite()); + this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); heat = RTGUtil.updateRTGs(slots, slot_io); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java deleted file mode 100644 index fb3d4b4e0..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java +++ /dev/null @@ -1,342 +0,0 @@ -package com.hbm.tileentity.machine; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.WeaponConfig; -import com.hbm.extprop.HbmLivingProps; -import com.hbm.inventory.container.ContainerMachineRadar; -import com.hbm.inventory.gui.GUIMachineRadar; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityTickingBase; - -import api.hbm.energy.IEnergyUser; -import api.hbm.entity.IRadarDetectable; -import api.hbm.entity.IRadarDetectable.RadarTargetType; -import cpw.mods.fml.common.Optional; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -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; - -@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineRadar extends TileEntityTickingBase implements IEnergyUser, IGUIProvider, SimpleComponent { - - public List entList = new ArrayList(); - public List nearbyMissiles = new ArrayList(); - int pingTimer = 0; - int lastPower; - final static int maxTimer = 80; - - public boolean scanMissiles = true; - public boolean scanPlayers = true; - public boolean smartMode = true; - public boolean redMode = true; - - public boolean jammed = false; - - public float prevRotation; - public float rotation; - - public long power = 0; - public static final int maxPower = 100000; - - @Override - public String getInventoryName() { - return ""; - } - - @Override - public void updateEntity() { - - if(this.yCoord < WeaponConfig.radarAltitude) - return; - - if(!worldObj.isRemote) { - - this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); - - nearbyMissiles.clear(); - - if(power > 0) { - - allocateMissiles(); - - power -= 500; - - if(power < 0) - power = 0; - } - - if(this.lastPower != getRedPower()) - worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); - - sendMissileData(); - lastPower = getRedPower(); - - if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) != ModBlocks.muffler) { - - pingTimer++; - - if(power > 0 && pingTimer >= maxTimer) { - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.sonarPing", 5.0F, 1.0F); - pingTimer = 0; - } - } - } else { - - prevRotation = rotation; - - if(power > 0) { - rotation += 5F; - } - - if(rotation >= 360) { - rotation -= 360F; - prevRotation -= 360F; - } - } - } - - public void handleButtonPacket(int value, int meta) { - - switch(meta) { - case 0: this.scanMissiles = !this.scanMissiles; break; - case 1: this.scanPlayers = !this.scanPlayers; break; - case 2: this.smartMode = !this.smartMode; break; - case 3: this.redMode = !this.redMode; break; - } - } - - private void allocateMissiles() { - - nearbyMissiles.clear(); - entList.clear(); - jammed = false; - - List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5 - WeaponConfig.radarRange, 0, zCoord + 0.5 - WeaponConfig.radarRange, xCoord + 0.5 + WeaponConfig.radarRange, 5000, zCoord + 0.5 + WeaponConfig.radarRange)); - - for(Entity e : list) { - - if(e.posY < yCoord + WeaponConfig.radarBuffer) - continue; - - if(e instanceof EntityLivingBase && HbmLivingProps.getDigamma((EntityLivingBase) e) > 0.001) { - this.jammed = true; - nearbyMissiles.clear(); - entList.clear(); - return; - } - - if(e instanceof EntityPlayer && this.scanPlayers) { - nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, RadarTargetType.PLAYER.ordinal(), (int)e.posY }); - entList.add(e); - } - - if(e instanceof IRadarDetectable && this.scanMissiles) { - nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, ((IRadarDetectable)e).getTargetType().ordinal(), (int)e.posY }); - - if(!this.smartMode || e.motionY <= 0) - entList.add(e); - } - } - } - - public int getRedPower() { - - if(!entList.isEmpty()) { - - /// PROXIMITY /// - if(redMode) { - - double maxRange = WeaponConfig.radarRange * Math.sqrt(2D); - - int power = 0; - - for(int i = 0; i < entList.size(); i++) { - - Entity e = entList.get(i); - double dist = Math.sqrt(Math.pow(e.posX - xCoord, 2) + Math.pow(e.posZ - zCoord, 2)); - int p = 15 - (int)Math.floor(dist / maxRange * 15); - - if(p > power) - power = p; - } - - return power; - - /// TIER /// - } else { - - int power = 0; - - for(int i = 0; i < nearbyMissiles.size(); i++) { - - if(nearbyMissiles.get(i)[3] + 1 > power) { - power = nearbyMissiles.get(i)[3] + 1; - } - } - - return power; - } - } - - return 0; - } - - private void sendMissileData() { - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setBoolean("scanMissiles", scanMissiles); - data.setBoolean("scanPlayers", scanPlayers); - data.setBoolean("smartMode", smartMode); - data.setBoolean("redMode", redMode); - data.setBoolean("jammed", jammed); - data.setInteger("count", this.nearbyMissiles.size()); - - for(int i = 0; i < this.nearbyMissiles.size(); i++) { - data.setInteger("x" + i, this.nearbyMissiles.get(i)[0]); - data.setInteger("z" + i, this.nearbyMissiles.get(i)[1]); - data.setInteger("type" + i, this.nearbyMissiles.get(i)[2]); - data.setInteger("y" + i, this.nearbyMissiles.get(i)[3]); - } - - this.networkPack(data, 15); - } - - public void networkUnpack(NBTTagCompound data) { - - this.nearbyMissiles.clear(); - this.power = data.getLong("power"); - this.scanMissiles = data.getBoolean("scanMissiles"); - this.scanPlayers = data.getBoolean("scanPlayers"); - this.smartMode = data.getBoolean("smartMode"); - this.redMode = data.getBoolean("redMode"); - this.jammed = data.getBoolean("jammed"); - - int count = data.getInteger("count"); - - for(int i = 0; i < count; i++) { - - int x = data.getInteger("x" + i); - int z = data.getInteger("z" + i); - int type = data.getInteger("type" + i); - int y = data.getInteger("y" + i); - - this.nearbyMissiles.add(new int[] {x, z, type, y}); - } - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } - - @Override - public void setPower(long i) { - power = i; - } - - @Override - public long getPower() { - return power; - } - - @Override - public long getMaxPower() { - return maxPower; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - this.power = nbt.getLong("power"); - this.scanMissiles = nbt.getBoolean("scanMissiles"); - this.scanPlayers = nbt.getBoolean("scanPlayers"); - this.smartMode = nbt.getBoolean("smartMode"); - this.redMode = nbt.getBoolean("redMode"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setLong("power", power); - nbt.setBoolean("scanMissiles", scanMissiles); - nbt.setBoolean("scanPlayers", scanPlayers); - nbt.setBoolean("smartMode", smartMode); - nbt.setBoolean("redMode", redMode); - } - - @Override - public AxisAlignedBB getRenderBoundingBox() { - return TileEntity.INFINITE_EXTENT_AABB; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { - return 65536.0D; - } - - // do some opencomputer stuff - - @Override - public String getComponentName() { - return "ntm_radar"; - } - - @Callback - @Optional.Method(modid = "OpenComputers") - public Object[] getPower(Context context, Arguments args) { - return new Object[] {power}; - } - - @Callback - @Optional.Method(modid = "OpenComputers") - public Object[] isJammed(Context context, Arguments args) { - return new Object[] {jammed}; - } - - @Callback - @Optional.Method(modid = "OpenComputers") - public Object[] getEntities(Context context, Arguments args) { - int index = args.checkInteger(0); - boolean raw = args.checkBoolean(1); - if(!raw && !jammed) { - Entity e = entList.get(index); - double a = (e.posX); - double b = (e.posY); - double c = (e.posZ); - boolean d = (e instanceof EntityPlayer); - return new Object[] {a, b, c, d}; - } else if (!jammed) { - return new Object[] {entList}; - } else { - return new Object[] {"Radar jammed!"}; - } - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerMachineRadar(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineRadar(player.inventory, this); - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java new file mode 100644 index 000000000..9e9061ff1 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -0,0 +1,549 @@ +package com.hbm.tileentity.machine; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ModBlocks; +import com.hbm.config.WeaponConfig; +import com.hbm.extprop.HbmLivingProps; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.container.ContainerMachineRadarNT; +import com.hbm.inventory.gui.GUIMachineRadarNT; +import com.hbm.inventory.gui.GUIMachineRadarNTSlots; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemCoordinateBase; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IConfigurableMachine; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IRadarCommandReceiver; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Tuple.Triplet; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.world.WorldUtil; + +import api.hbm.energy.IEnergyUser; +import api.hbm.entity.IRadarDetectable; +import api.hbm.entity.IRadarDetectableNT; +import api.hbm.entity.IRadarDetectableNT.RadarScanParams; +import api.hbm.entity.RadarEntry; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.server.MinecraftServer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; + +/** + * Now with SmЯt™ lag-free entity detection! (patent pending) + * @author hbm + */ +public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, IConfigurableMachine, IControlReceiver { + + public boolean scanMissiles = true; + public boolean scanShells = true; + public boolean scanPlayers = true; + public boolean smartMode = true; + public boolean redMode = true; + public boolean showMap = false; + + public boolean jammed = false; + + public float prevRotation; + public float rotation; + + public long power = 0; + + protected int pingTimer = 0; + protected int lastPower; + protected final static int maxTimer = 80; + + public static int maxPower = 100_000; + public static int consumption = 500; + public static int radarRange = 1_000; + public static int radarBuffer = 30; + public static int radarAltitude = 55; + public static int chunkLoadCap = 10; + public static boolean generateChunks = false; + + public byte[] map = new byte[40_000]; + public boolean clearFlag = false; + + public List entries = new ArrayList(); + + @Override + public String getConfigName() { + return "radar"; + } + + @Override + public void readIfPresent(JsonObject obj) { + maxPower = IConfigurableMachine.grab(obj, "L:powerCap", maxPower); + consumption = IConfigurableMachine.grab(obj, "L:consumption", consumption); + radarRange = IConfigurableMachine.grab(obj, "I:radarRange", radarRange); + radarBuffer = IConfigurableMachine.grab(obj, "I:radarBuffer", radarBuffer); + radarAltitude = IConfigurableMachine.grab(obj, "I:radarAltitude", radarAltitude); + chunkLoadCap = IConfigurableMachine.grab(obj, "I:chunkLoadCap", chunkLoadCap); + generateChunks = IConfigurableMachine.grab(obj, "B:generateChunks", generateChunks); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("L:powerCap").value(maxPower); + writer.name("L:consumption").value(consumption); + writer.name("I:radarRange").value(radarRange); + writer.name("I:radarBuffer").value(radarBuffer); + writer.name("I:radarAltitude").value(radarAltitude); + writer.name("B:generateChunks").value(generateChunks); + } + + public TileEntityMachineRadarNT() { + super(10); + } + + @Override + public String getName() { + return "container.radar"; + } + + @Override + public void updateEntity() { + + if(this.map == null || this.map.length != 40_000) this.map = new byte[40_000]; + + if(!worldObj.isRemote) { + + this.power = Library.chargeTEFromItems(slots, 9, power, maxPower); + + if(worldObj.getTotalWorldTime() % 20 == 0) this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); + + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); + this.jammed = false; + allocateTargets(); + + if(this.lastPower != getRedPower()) { + this.markDirty(); + } + lastPower = getRedPower(); + + if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) != ModBlocks.muffler) { + + pingTimer++; + + if(power > 0 && pingTimer >= maxTimer) { + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.sonarPing", 5.0F, 1.0F); + pingTimer = 0; + } + } + + if(this.showMap) { + int chunkLoads = 0; + for(int i = 0; i < 100; i++) { + int index = (int) (worldObj.getTotalWorldTime() % 400) * 100 + i; + int iX = (index % 200) * radarRange * 2 / 200; + int iZ = index / 200 * radarRange * 2 / 200; + + int x = xCoord - radarRange + iX; + int z = zCoord - radarRange + iZ; + + if(worldObj.getChunkProvider().chunkExists(x >> 4, z >> 4)) { + this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); + } else { + if(this.map[index] == 0 && chunkLoads < chunkLoadCap) { + if(this.generateChunks) { + worldObj.getChunkFromChunkCoords(x >> 4, z >> 4); + this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); + chunkLoads++; + } else { + WorldUtil.provideChunk((WorldServer) worldObj, x >> 4, z >> 4); + this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); + if(worldObj.getChunkProvider().chunkExists(x >> 4, z >> 4)) chunkLoads++; + } + } + } + } + } + + if(slots[8] != null && slots[8].getItem() == ModItems.radar_linker) { + BlockPos pos = ItemCoordinateBase.getPosition(slots[8]); + if(pos != null) { + TileEntity tile = worldObj.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); + if(tile instanceof TileEntityMachineRadarScreen) { + TileEntityMachineRadarScreen screen = (TileEntityMachineRadarScreen) tile; + screen.entries.clear(); + screen.entries.addAll(this.entries); + screen.refX = xCoord; + screen.refY = yCoord; + screen.refZ = zCoord; + screen.linked = true; + } + } + } + + this.networkPackNT(50); + if(this.clearFlag) { + this.map = new byte[40_000]; + this.clearFlag = false; + } + } else { + prevRotation = rotation; + if(power > 0) rotation += 5F; + + if(rotation >= 360) { + rotation -= 360F; + prevRotation -= 360F; + } + } + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeLong(this.power); + buf.writeBoolean(this.scanMissiles); + buf.writeBoolean(this.scanShells); + buf.writeBoolean(this.scanPlayers); + buf.writeBoolean(this.smartMode); + buf.writeBoolean(this.redMode); + buf.writeBoolean(this.showMap); + buf.writeBoolean(this.jammed); + buf.writeInt(entries.size()); + for(RadarEntry entry : entries) entry.toBytes(buf); + if(this.clearFlag) { + buf.writeBoolean(true); + } else { + buf.writeBoolean(false); + if(this.showMap) { + buf.writeBoolean(true); + short index = (short) (worldObj.getTotalWorldTime() % 400); + buf.writeShort(index); + for(int i = index * 100; i < (index + 1) * 100; i++) { + buf.writeByte(this.map[i]); + } + } else { + buf.writeBoolean(false); + } + } + } + + @Override + public void deserialize(ByteBuf buf) { + this.power = buf.readLong(); + this.scanMissiles = buf.readBoolean(); + this.scanShells = buf.readBoolean(); + this.scanPlayers = buf.readBoolean(); + this.smartMode = buf.readBoolean(); + this.redMode = buf.readBoolean(); + this.showMap = buf.readBoolean(); + this.jammed = buf.readBoolean(); + int count = buf.readInt(); + this.entries.clear(); + for(int i = 0; i < count; i++) { + RadarEntry entry = new RadarEntry(); + entry.fromBytes(buf); + this.entries.add(entry); + } + if(buf.readBoolean()) { // clear flag + this.map = new byte[40_000]; + } else { + if(buf.readBoolean()) { // map enabled + int index = buf.readShort(); + for(int i = index * 100; i < (index + 1) * 100; i++) { + this.map[i] = buf.readByte(); + } + } + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.power = nbt.getLong("power"); + this.scanMissiles = nbt.getBoolean("scanMissiles"); + this.scanShells = nbt.getBoolean("scanShells"); + this.scanPlayers = nbt.getBoolean("scanPlayers"); + this.smartMode = nbt.getBoolean("smartMode"); + this.redMode = nbt.getBoolean("redMode"); + this.showMap = nbt.getBoolean("showMap"); + if(nbt.hasKey("map")) this.map = nbt.getByteArray("map"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + nbt.setBoolean("scanMissiles", scanMissiles); + nbt.setBoolean("scanShells", scanShells); + nbt.setBoolean("scanPlayers", scanPlayers); + nbt.setBoolean("smartMode", smartMode); + nbt.setBoolean("redMode", redMode); + nbt.setBoolean("showMap", showMap); + nbt.setByteArray("map", map); + } + + protected void allocateTargets() { + this.entries.clear(); + + if(this.yCoord < radarAltitude) return; + if(this.power < consumption) return; + this.power -= consumption; + + int scan = this.scanRange(); + + RadarScanParams params = new RadarScanParams(this.scanMissiles, this.scanShells, this.scanPlayers, this.smartMode); + + for(Entity e : matchingEntities) { + + if(e.dimension == worldObj.provider.dimensionId && Math.abs(e.posX - (xCoord + 0.5)) <= scan && Math.abs(e.posZ - (zCoord + 0.5)) <= scan && e.posY - yCoord > radarBuffer) { + + if(e instanceof EntityLivingBase && HbmLivingProps.getDigamma((EntityLivingBase) e) > 0.001) { + this.jammed = true; + entries.clear(); + return; + } + + for(Function, RadarEntry> converter : converters) { + + RadarEntry entry = converter.apply(new Triplet(e, this, params)); + if(entry != null) { + this.entries.add(entry); + break; + } + } + } + } + } + + public int getRedPower() { + + if(!entries.isEmpty()) { + + /// PROXIMITY /// + if(redMode) { + + double maxRange = WeaponConfig.radarRange * Math.sqrt(2D); + int power = 0; + + for(int i = 0; i < entries.size(); i++) { + RadarEntry e = entries.get(i); + if(!e.redstone) continue; + double dist = Math.sqrt(Math.pow(e.posX - xCoord, 2) + Math.pow(e.posZ - zCoord, 2)); + int p = 15 - (int)Math.floor(dist / maxRange * 15); + + if(p > power) power = p; + } + + return power; + + /// TIER /// + } else { + + int power = 0; + + for(int i = 0; i < entries.size(); i++) { + RadarEntry e = entries.get(i); + if(!e.redstone) continue; + if(e.blipLevel + 1 > power) { + power = e.blipLevel + 1; + } + } + + return power; + } + } + + return 0; + } + + protected int scanRange() { + return radarRange; + } + + @Override + public void setPower(long i) { + power = i; + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override public void receiveControl(NBTTagCompound data) { } + + @Override + public void receiveControl(EntityPlayer player, NBTTagCompound data) { + + if(data.hasKey("missiles")) this.scanMissiles = !this.scanMissiles; + if(data.hasKey("shells")) this.scanShells = !this.scanShells; + if(data.hasKey("players")) this.scanPlayers = !this.scanPlayers; + if(data.hasKey("smart")) this.smartMode = !this.smartMode; + if(data.hasKey("red")) this.redMode = !this.redMode; + if(data.hasKey("map")) this.showMap = !this.showMap; + if(data.hasKey("clear")) this.clearFlag = true; + + if(data.hasKey("gui1")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 1, worldObj, xCoord, yCoord, zCoord); + + if(data.hasKey("link")) { + int id = data.getInteger("link"); + ItemStack link = slots[id]; + + if(link != null && link.getItem() == ModItems.radar_linker) { + BlockPos pos = ItemCoordinateBase.getPosition(link); + + if(pos != null) { + TileEntity tile = worldObj.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); + if(tile instanceof IRadarCommandReceiver) { + IRadarCommandReceiver rec = (IRadarCommandReceiver) tile; + + if(data.hasKey("launchEntity")) { + Entity entity = worldObj.getEntityByID(data.getInteger("launchEntity")); + if(entity != null) { + if(rec.sendCommandEntity(entity)) { + worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + } + } + } else if(data.hasKey("launchPosX")) { + int x = data.getInteger("launchPosX"); + int z = data.getInteger("launchPosZ"); + if(rec.sendCommandPosition(x, yCoord, z)) { + worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + } + } + } + } + } + } + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 3, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { + return false; + } else { + return player.getDistance(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128; + } + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + if(ID == 1) return new ContainerMachineRadarNT(player.inventory, this); + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + if(ID == 0) return new GUIMachineRadarNT(this); + if(ID == 1) return new GUIMachineRadarNTSlots(player.inventory, this); + return null; + } + + /** List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry + The converters coming first have the highest priority */ + public static List, RadarEntry>> converters = new ArrayList(); + public static List classes = new ArrayList(); + public static List matchingEntities = new ArrayList(); + + /** + * Iterates over every entity in the world and add them to the matchingEntities list if the class is in the detectable list + * From this compiled list, radars can easily grab the required entities since we can assume that the total amount of detectable entities is comparatively low + */ + public static void updateSystem() { + matchingEntities.clear(); + + for(WorldServer world : MinecraftServer.getServer().worldServers) { + for(Object entity : world.loadedEntityList) { + for(Class clazz : classes) { + if(clazz.isAssignableFrom(entity.getClass())) { + matchingEntities.add((Entity) entity); + break; + } + } + } + } + } + + /** Registers a class that if an entity inherits that class, it is picked up by the system */ + public static void registerEntityClasses() { + classes.add(IRadarDetectableNT.class); + classes.add(IRadarDetectable.class); + classes.add(EntityPlayer.class); + } + + /** Registers converters. Converters are used to go over the list of detected entities and turn them into a RadarEntry using the entity instance and the radar's instance. */ + public static void registerConverters() { + //IRadarDetectableNT + converters.add(x -> { + Entity e = x.getX(); + if(e instanceof IRadarDetectableNT) { + IRadarDetectableNT detectable = (IRadarDetectableNT) e; + if(detectable.canBeSeenBy(x.getY()) && detectable.paramsApplicable(x.getZ())) return new RadarEntry(detectable, e, detectable.suppliesRedstone(x.getZ())); + } + return null; + }); + //IRadarDetectable, Legacy + converters.add(x -> { + Entity e = x.getX(); + RadarScanParams params = x.getZ(); + if(e instanceof IRadarDetectable && params.scanMissiles) { + return new RadarEntry((IRadarDetectable) e, e); + } + return null; + }); + //Players + converters.add(x -> { + if(x.getX() instanceof EntityPlayer && x.getZ().scanPlayers) return new RadarEntry((EntityPlayer) x.getX()); + return null; + }); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java new file mode 100644 index 000000000..663b6835a --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java @@ -0,0 +1,89 @@ +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.packet.BufPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IBufPacketReceiver; + +import api.hbm.entity.RadarEntry; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityMachineRadarScreen extends TileEntity implements IBufPacketReceiver { + + public List entries = new ArrayList(); + public int refX; + public int refY; + public int refZ; + public boolean linked; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + this.networkPackNT(100); + entries.clear(); + this.linked = false; + } + } + + public void networkPackNT(int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeBoolean(linked); + buf.writeInt(refX); + buf.writeInt(refY); + buf.writeInt(refZ); + buf.writeInt(entries.size()); + for(RadarEntry entry : entries) entry.toBytes(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + linked = buf.readBoolean(); + refX = buf.readInt(); + refY = buf.readInt(); + refZ = buf.readInt(); + int count = buf.readInt(); + this.entries.clear(); + for(int i = 0; i < count; i++) { + RadarEntry entry = new RadarEntry(); + entry.fromBytes(buf); + this.entries.add(entry); + } + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 2, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java index 12ec35a76..1cbe50ab4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java @@ -142,8 +142,8 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement for(DirPos pos : getConPos()) { this.sendPower(worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); - if(tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); - if(tanks[2].getFill() > 0) this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); } NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java index ee0e824d8..9cfafeb0d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java @@ -771,7 +771,7 @@ public class TileEntityMachineReactorLarge extends TileEntityLoadedBase implemen if(worldObj.getBlock(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2) == ModBlocks.reactor_hatch) { fillFluid(this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, getTact(), type); for(int i = 0; i < 2; i++) this.trySubscribe(tanks[i].getTankType(), worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, Library.NEG_X); - this.sendFluid(tanks[2].getTankType(), worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, Library.NEG_X); + this.sendFluid(tanks[2], worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, Library.NEG_X); } else { for(int i = 0; i < 2; i++) this.tryUnsubscribe(tanks[i].getTankType(), worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3); } @@ -780,8 +780,8 @@ public class TileEntityMachineReactorLarge extends TileEntityLoadedBase implemen fillFluid(this.xCoord, this.yCoord + height + 1, this.zCoord, getTact(), type); fillFluid(this.xCoord, this.yCoord - depth - 1, this.zCoord, getTact(), type); - this.sendFluid(tanks[2].getTankType(), worldObj, this.xCoord, this.yCoord + height + 1, this.zCoord, Library.POS_Y); - this.sendFluid(tanks[2].getTankType(), worldObj, this.xCoord, this.yCoord - depth - 1, this.zCoord, Library.NEG_Y); + this.sendFluid(tanks[2], worldObj, this.xCoord, this.yCoord + height + 1, this.zCoord, Library.POS_Y); + this.sendFluid(tanks[2], worldObj, this.xCoord, this.yCoord - depth - 1, this.zCoord, Library.NEG_Y); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java index 47dd95969..0fd248320 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java @@ -1,8 +1,5 @@ package com.hbm.tileentity.machine; -import java.util.List; -import java.util.Random; - import com.hbm.entity.missile.EntityMinerRocket; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.inventory.container.ContainerSatDock; @@ -11,14 +8,11 @@ import com.hbm.items.ISatChip; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.SatelliteMiner; -import com.hbm.saveddata.satellites.SatelliteMinerCargoRegistry; import com.hbm.tileentity.IGUIProvider; import com.hbm.util.WeightedRandomObject; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; @@ -31,355 +25,323 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.WeightedRandom; import net.minecraft.world.World; +import java.util.List; + public class TileEntityMachineSatDock extends TileEntity implements ISidedInventory, IGUIProvider { + private ItemStack[] slots; - private ItemStack[] slots; - - private static final int[] access = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }; - - private String customName; - - public TileEntityMachineSatDock() { - slots = new ItemStack[16]; + private static final int[] access = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; + + private String customName; + + private AxisAlignedBB renderBoundingBox; + + public TileEntityMachineSatDock() { + slots = new ItemStack[16]; + } + + @Override + public int getSizeInventory() { + return slots.length; + } + + @Override + public ItemStack getStackInSlot(int i) { + return slots[i]; + } + + @Override + public ItemStack getStackInSlotOnClosing(int i) { + if (slots[i] != null) { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } else { + return null; + } + } + + @Override + public void setInventorySlotContents(int i, ItemStack itemStack) { + slots[i] = itemStack; + if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { + itemStack.stackSize = getInventoryStackLimit(); + } + } + + @Override + public String getInventoryName() { + return this.hasCustomInventoryName() ? this.customName : "container.satDock"; + } + + @Override + public boolean hasCustomInventoryName() { + return this.customName != null && this.customName.length() > 0; + } + + public void setCustomName(String name) { + this.customName = name; + } + + @Override + public int getInventoryStackLimit() { + return 64; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + if (worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { + return false; + } else { + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64; + } + } + + //You scrubs aren't needed for anything (right now) + @Override + public void openInventory() { + } + + @Override + public void closeInventory() { + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + return i != 2 && i != 3 && i != 4 && i != 5; } - @Override - public int getSizeInventory() { - return slots.length; - } + @Override + public ItemStack decrStackSize(int i, int j) { + if (slots[i] != null) { + if (slots[i].stackSize <= j) { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } + ItemStack itemStack1 = slots[i].splitStack(j); + if (slots[i].stackSize == 0) { + slots[i] = null; + } - @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } + return itemStack1; + } else { + return null; + } + } - @Override - public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } else { - return null; - } - } + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + NBTTagList list = nbt.getTagList("items", 10); - @Override - public void setInventorySlotContents(int i, ItemStack itemStack) { - slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { - itemStack.stackSize = getInventoryStackLimit(); - } - } + slots = new ItemStack[getSizeInventory()]; - @Override - public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.satDock"; - } + for (int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + byte b0 = nbt1.getByte("slot"); + if (b0 >= 0 && b0 < slots.length) { + slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); + } + } + } - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + NBTTagList list = new NBTTagList(); - @Override - public int getInventoryStackLimit() { - return 64; - } + for (int i = 0; i < slots.length; i++) { + if (slots[i] != null) { + NBTTagCompound nbt1 = new NBTTagCompound(); + nbt1.setByte("slot", (byte) i); + slots[i].writeToNBT(nbt1); + list.appendTag(nbt1); + } + } + nbt.setTag("items", list); + } - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { - return false; - } else { - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64; - } - } - - //You scrubs aren't needed for anything (right now) - @Override - public void openInventory() {} - @Override - public void closeInventory() {} + @Override + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return access; + } - @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { - if(i == 2 || i == 3 || i == 4 || i == 5) { - return false; - } + @Override + public boolean canInsertItem(int i, ItemStack itemStack, int j) { + return this.isItemValidForSlot(i, itemStack); + } - return true; - } + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return true; + } - @Override - public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) { - if(slots[i].stackSize <= j) { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if(slots[i].stackSize == 0) { - slots[i] = null; - } + @Override + public void updateEntity() { + if (!worldObj.isRemote) { + SatelliteSavedData data = SatelliteSavedData.getData(worldObj); - return itemStack1; - } else { - return null; - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); + if (slots[15] != null) { + int freq = ISatChip.getFreqS(slots[15]); - slots = new ItemStack[getSizeInventory()]; + Satellite sat = data.getSatFromFreq(freq); - for(int i = 0; i < list.tagCount(); i++) { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - NBTTagList list = new NBTTagList(); + int delay = 10 * 60 * 1000; - for(int i = 0; i < slots.length; i++) { - if(slots[i] != null) { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte) i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - nbt.setTag("items", list); - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) { - return access; - } + if (sat instanceof SatelliteMiner) { + SatelliteMiner miner = (SatelliteMiner) sat; - @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); - } + if (miner.lastOp + delay < System.currentTimeMillis()) { + EntityMinerRocket rocket = new EntityMinerRocket(worldObj); + rocket.posX = xCoord + 0.5; + rocket.posY = 300; + rocket.posZ = zCoord + 0.5; - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return true; - } - - SatelliteSavedData data = null; - - @Override - public void updateEntity() { + rocket.getDataWatcher().updateObject(17, freq); + worldObj.spawnEntityInWorld(rocket); + miner.lastOp = System.currentTimeMillis(); + data.markDirty(); + } + } + } - if(!worldObj.isRemote) { + @SuppressWarnings("unchecked") + List list = worldObj.getEntitiesWithinAABBExcludingEntity( + null, + AxisAlignedBB.getBoundingBox(xCoord - 0.25 + 0.5, yCoord + 0.75, zCoord - 0.25 + 0.5, xCoord + 0.25 + 0.5, yCoord + 2, zCoord + 0.25 + 0.5), + entity -> entity instanceof EntityMinerRocket + ); - if(data == null) - data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); + for (EntityMinerRocket rocket : list) { + if (slots[15] != null && ISatChip.getFreqS(slots[15]) != rocket.getDataWatcher().getWatchableObjectInt(17)) { + rocket.setDead(); + ExplosionNukeSmall.explode(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, ExplosionNukeSmall.PARAMS_TOTS); + break; + } - if(data == null) { - worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData()); - data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - } - data.markDirty(); + if (rocket.getDataWatcher().getWatchableObjectInt(16) == 1 && rocket.timer == 50) { + Satellite sat = data.getSatFromFreq(ISatChip.getFreqS(slots[15])); + unloadCargo((SatelliteMiner) sat); + } + } - if(data != null && slots[15] != null) { - int freq = ISatChip.getFreqS(slots[15]); + ejectInto(xCoord + 2, yCoord, zCoord); + ejectInto(xCoord - 2, yCoord, zCoord); + ejectInto(xCoord, yCoord, zCoord + 2); + ejectInto(xCoord, yCoord, zCoord - 2); + } + } - Satellite sat = data.getSatFromFreq(freq); + private void unloadCargo(SatelliteMiner satellite) { + int itemAmount = worldObj.rand.nextInt(6) + 10; - int delay = 10 * 60 * 1000; + WeightedRandomObject[] cargo = satellite.getCargo(); - if(sat instanceof SatelliteMiner) { + for (int i = 0; i < itemAmount; i++) { + ItemStack stack = ((WeightedRandomObject) WeightedRandom.getRandomItem(worldObj.rand, cargo)).asStack(); + addToInv(stack.copy()); + } + } - SatelliteMiner miner = (SatelliteMiner) sat; + private void addToInv(ItemStack stack) { + for (int i = 0; i < 15; i++) { + if (slots[i] != null && slots[i].getItem() == stack.getItem() && slots[i].getItemDamage() == stack.getItemDamage() && slots[i].stackSize < slots[i].getMaxStackSize()) { + int toAdd = Math.min(slots[i].getMaxStackSize() - slots[i].stackSize, stack.stackSize); - if(miner.lastOp + delay < System.currentTimeMillis()) { + slots[i].stackSize += toAdd; + stack.stackSize -= toAdd; - EntityMinerRocket rocket = new EntityMinerRocket(worldObj); - rocket.posX = xCoord + 0.5; - rocket.posY = 300; - rocket.posZ = zCoord + 0.5; + if (stack.stackSize <= 0) return; + } + } - rocket.satelliteClassName = miner.getClass().getName(); + for (int i = 0; i < 15; i++) { + if (slots[i] == null) { + slots[i] = new ItemStack(stack.getItem(), 1, stack.getItemDamage()); + return; + } + } + } - rocket.getDataWatcher().updateObject(17, freq); - worldObj.spawnEntityInWorld(rocket); - miner.lastOp = System.currentTimeMillis(); - data.markDirty(); - } - } - } + private void ejectInto(int x, int y, int z) { + TileEntity te = worldObj.getTileEntity(x, y, z); - List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord - 0.25 + 0.5, yCoord + 0.75, zCoord - 0.25 + 0.5, xCoord + 0.25 + 0.5, yCoord + 2, zCoord + 0.25 + 0.5)); + if (te instanceof IInventory) { + IInventory chest = (IInventory) te; - for(Entity e : list) { + for (int i = 0; i < 15; i++) { + if (slots[i] != null) { + for (int j = 0; j < chest.getSizeInventory(); j++) { + ItemStack sta = slots[i].copy(); + sta.stackSize = 1; - if(e instanceof EntityMinerRocket) { + if (chest.getStackInSlot(j) != null && chest.getStackInSlot(j).isItemEqual(slots[i]) && ItemStack.areItemStackTagsEqual(chest.getStackInSlot(j), slots[i]) && + chest.getStackInSlot(j).stackSize < chest.getStackInSlot(j).getMaxStackSize()) { - EntityMinerRocket rocket = (EntityMinerRocket) e; + slots[i].stackSize--; - if(slots[15] != null && ISatChip.getFreqS(slots[15]) != rocket.getDataWatcher().getWatchableObjectInt(17)) { - rocket.setDead(); - ExplosionNukeSmall.explode(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, ExplosionNukeSmall.PARAMS_TOTS); - break; - } + if (slots[i].stackSize <= 0) + slots[i] = null; - if(rocket.getDataWatcher().getWatchableObjectInt(16) == 1 && rocket.timer == 50) { - unloadCargo(rocket.satelliteClassName); - } - } - } + chest.getStackInSlot(j).stackSize++; + return; + } + } + } + } - ejectInto(xCoord + 2, yCoord, zCoord); - ejectInto(xCoord - 2, yCoord, zCoord); - ejectInto(xCoord, yCoord, zCoord + 2); - ejectInto(xCoord, yCoord, zCoord - 2); - } - } - - static Random rand = new Random(); - - private void unloadCargo(String satelliteClassName) { - int items = rand.nextInt(6) + 10; + for (int i = 0; i < 15; i++) { + if (slots[i] != null) { + for (int j = 0; j < chest.getSizeInventory(); j++) { + ItemStack sta = slots[i].copy(); + sta.stackSize = 1; - WeightedRandomObject[] cargo = SatelliteMinerCargoRegistry.getCargo(satelliteClassName); + if (chest.getStackInSlot(j) == null && chest.isItemValidForSlot(j, sta)) { + slots[i].stackSize--; - for(int i = 0; i < items; i++) { + if (slots[i].stackSize <= 0) + slots[i] = null; - ItemStack stack = ((WeightedRandomObject)WeightedRandom.getRandomItem(rand, cargo)).asStack(); - addToInv(stack.copy()); - } - } - - private void addToInv(ItemStack stack) { - - for(int i = 0; i < 15; i++) { - - if(slots[i] != null && slots[i].getItem() == stack.getItem() && slots[i].getItemDamage() == stack.getItemDamage() && slots[i].stackSize < slots[i].getMaxStackSize()) { - - int toAdd = Math.min(slots[i].getMaxStackSize() - slots[i].stackSize, stack.stackSize); - - slots[i].stackSize += toAdd; - stack.stackSize -= toAdd; - - if(stack.stackSize <= 0) return; - } - } - - for(int i = 0; i < 15; i++) { - - if(slots[i] == null) { - slots[i] = new ItemStack(stack.getItem(), 1, stack.getItemDamage()); - return; - } - } - } - - private void ejectInto(int x, int y, int z) { + chest.setInventorySlotContents(j, sta); + return; + } + } + } + } + } + } - TileEntity te = worldObj.getTileEntity(x, y, z); - - if(te instanceof IInventory) { - - IInventory chest = (IInventory)te; - - for(int i = 0; i < 15; i++) { - - if(slots[i] != null) { - - for(int j = 0; j < chest.getSizeInventory(); j++) { - - ItemStack sta = slots[i].copy(); - sta.stackSize = 1; - - if(chest.getStackInSlot(j) != null && chest.getStackInSlot(j).isItemEqual(slots[i]) && ItemStack.areItemStackTagsEqual(chest.getStackInSlot(j), slots[i]) && - chest.getStackInSlot(j).stackSize < chest.getStackInSlot(j).getMaxStackSize()) { - - slots[i].stackSize--; - - if(slots[i].stackSize <= 0) - slots[i] = null; - - chest.getStackInSlot(j).stackSize++; - return; - } - } - } - } - - for(int i = 0; i < 15; i++) { - - if(slots[i] != null) { - - for(int j = 0; j < chest.getSizeInventory(); j++) { - - ItemStack sta = slots[i].copy(); - sta.stackSize = 1; - - if(chest.getStackInSlot(j) == null && chest.isItemValidForSlot(j, sta)) { - - slots[i].stackSize--; - - if(slots[i].stackSize <= 0) - slots[i] = null; - - chest.setInventorySlotContents(j, sta); - return; - } - } - } - } - } - } - - AxisAlignedBB bb = null; - - @Override - public AxisAlignedBB getRenderBoundingBox() { - - if(bb == null) { - bb = AxisAlignedBB.getBoundingBox( - xCoord - 1, - yCoord, - zCoord - 1, - xCoord + 2, - yCoord + 1, - zCoord + 2 - ); - } - - return bb; - } + @Override + public AxisAlignedBB getRenderBoundingBox() { + if (renderBoundingBox == null) { + renderBoundingBox = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 1, + zCoord + 2 + ); + } - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() { - return 65536.0D; - } + return renderBoundingBox; + } - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerSatDock(player.inventory, this); - } + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUISatDock(player.inventory, this); - } + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerSatDock(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUISatDock(player.inventory, this); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java index 2fd404480..8c3583106 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import com.hbm.inventory.container.ContainerMachineSatLinker; import com.hbm.inventory.gui.GUIMachineSatLinker; import com.hbm.items.ISatChip; +import com.hbm.saveddata.SatelliteSavedData; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.relauncher.Side; @@ -18,8 +19,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class TileEntityMachineSatLinker extends TileEntity implements ISidedInventory, IGUIProvider { - - private ItemStack slots[]; + private ItemStack[] slots; //public static final int maxFill = 64 * 3; @@ -45,21 +45,19 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve @Override public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { + if(slots[i] != null) { ItemStack itemStack = slots[i]; slots[i] = null; return itemStack; } else { - return null; + return null; } } @Override public void setInventorySlotContents(int i, ItemStack itemStack) { slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { + if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { itemStack.stackSize = getInventoryStackLimit(); } } @@ -85,11 +83,10 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve @Override public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; + } else { + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64; } } @@ -105,17 +102,14 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve @Override public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { + if(slots[i] != null) { + if(slots[i].stackSize <= j) { ItemStack itemStack = slots[i]; slots[i] = null; return itemStack; } ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { + if (slots[i].stackSize == 0) { slots[i] = null; } @@ -132,12 +126,10 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve slots = new ItemStack[getSizeInventory()]; - for(int i = 0; i < list.tagCount(); i++) - { + for(int i = 0; i < list.tagCount(); i++) { NBTTagCompound nbt1 = list.getCompoundTagAt(i); byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { + if(b0 >= 0 && b0 < slots.length) { slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } @@ -148,10 +140,8 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve super.writeToNBT(nbt); NBTTagList list = new NBTTagList(); - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { + for(int i = 0; i < slots.length; i++) { + if(slots[i] != null) { NBTTagCompound nbt1 = new NBTTagCompound(); nbt1.setByte("slot", (byte)i); slots[i].writeToNBT(nbt1); @@ -162,8 +152,7 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve } @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) - { + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); } @@ -179,15 +168,17 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve @Override public void updateEntity() { - - if(!worldObj.isRemote) - { + if(!worldObj.isRemote) { if(slots[0] != null && slots[1] != null && slots[0].getItem() instanceof ISatChip && slots[1].getItem() instanceof ISatChip) { ISatChip.setFreqS(slots[1], ISatChip.getFreqS(slots[0])); } if(slots[2] != null && slots[2].getItem() instanceof ISatChip) { - ISatChip.setFreqS(slots[2], worldObj.rand.nextInt(100000)); + SatelliteSavedData satelliteData = SatelliteSavedData.getData(worldObj); + int newId = worldObj.rand.nextInt(100000); + if(!satelliteData.isFreqTaken(newId)) { + ISatChip.setFreqS(slots[2], newId); + } } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java index d6e7d9e1a..bed920b68 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java @@ -6,7 +6,6 @@ import com.hbm.inventory.container.ContainerMachineSchrabidiumTransmutator; import com.hbm.inventory.gui.GUIMachineSchrabidiumTransmutator; import com.hbm.inventory.recipes.MachineRecipes; import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemCapacitor; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; @@ -55,7 +54,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB return true; break; case 2: - if (stack.getItem() == ModItems.redcoil_capacitor) + if (stack.getItem() == ModItems.redcoil_capacitor || stack.getItem() == ModItems.euphemium_capacitor) return true; break; case 3: @@ -89,7 +88,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB @Override public boolean canExtractItem(int i, ItemStack stack, int j) { - if (i == 2 && stack.getItem() != null && stack.getItem() == ModItems.redcoil_capacitor && ItemCapacitor.getDura(stack) <= 0) { + if (i == 2 && stack.getItem() != null && (stack.getItem() == ModItems.redcoil_capacitor && stack.getItemDamage() == stack.getMaxDamage()) || stack.getItem() == ModItems.euphemium_capacitor) { return true; } @@ -115,8 +114,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB public boolean canProcess() { if (power >= 4990000 && slots[0] != null && MachineRecipes.mODE(slots[0], OreDictManager.U.ingot()) && slots[2] != null - && slots[2].getItem() == ModItems.redcoil_capacitor - && ItemCapacitor.getDura(slots[2]) > 0 + && (slots[2].getItem() == ModItems.redcoil_capacitor && slots[2].getItemDamage() < slots[2].getMaxDamage() || slots[2].getItem() == ModItems.euphemium_capacitor) && (slots[1] == null || (slots[1] != null && slots[1].getItem() == VersatileConfig.getTransmutatorItem() && slots[1].stackSize < slots[1].getMaxStackSize()))) { return true; @@ -146,8 +144,8 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB } else { slots[1].stackSize++; } - if (slots[2] != null) { - ItemCapacitor.setDura(slots[2], ItemCapacitor.getDura(slots[2]) - 1); + if (slots[2] != null && slots[2].getItem() == ModItems.redcoil_capacitor) { + slots[2].setItemDamage(slots[2].getItemDamage() + 1); } this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "ambient.weather.thunder", 10000.0F, @@ -195,8 +193,9 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB } } + @Override public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop", xCoord, yCoord, zCoord, 1.0F, 1.0F); + return MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); } private void updateConnections() { @@ -205,6 +204,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } + @Override public void onChunkUnload() { if(audio != null) { @@ -213,6 +213,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB } } + @Override public void invalidate() { super.invalidate(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index 2a9f08a8b..1845c5e72 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; @@ -22,9 +23,14 @@ import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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 +41,8 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider, SimpleComponent { private ItemStack slots[]; @@ -261,7 +268,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS if(!valid) tanks[1].setTankType(Fluids.NONE); if(power > maxPower) power = maxPower; - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[1], this); tanks[1].unloadTank(5, 6, slots); @@ -376,6 +383,36 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS return tanks; } + @Override + public String getComponentName() { + return "ntm_turbine"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[1].getFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return CompatHandler.steamTypeToInt(tanks[1].getTankType()); + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setType(Context context, Arguments args) { + tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); + return new Object[] {true}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineTurbine(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index 79334c4b6..21bb03777 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -3,6 +3,8 @@ package com.hbm.tileentity.machine; import java.util.HashMap; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Combustible; @@ -20,8 +22,13 @@ import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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; @@ -31,7 +38,8 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyGenerator, IControlReceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyGenerator, IControlReceiver, IGUIProvider, SimpleComponent { public long power; public static final long maxPower = 1000000L; @@ -60,6 +68,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement fuelMaxCons.put(Fluids.GAS, 50D); // natgas doesn't burn well so it burns faster to compensate fuelMaxCons.put(Fluids.SYNGAS, 10D); // syngas just fucks fuelMaxCons.put(Fluids.OXYHYDROGEN, 100D); // oxyhydrogen is terrible so it needs to burn a ton for the bare minimum + fuelMaxCons.put(Fluids.REFORMGAS, 2.5D); // halved because it's too powerful // default to 5 if not in list } @@ -121,7 +130,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement ForgeDirection rot = dir.getRotation(ForgeDirection.UP); NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); //set first to get an unmodified view of how much power was generated before deductions from the net + data.setLong("power", Math.min(this.power, this.maxPower)); //set first to get an unmodified view of how much power was generated before deductions from the net //do net/battery deductions first... power = Library.chargeItemsFromTE(slots, 0, power, maxPower); @@ -139,10 +148,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement this.trySubscribe(tanks[2].getTankType(), worldObj, xCoord - dir.offsetX * 2 + rot.offsetX * -4, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * -4, dir.getOpposite()); this.trySubscribe(tanks[2].getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -4, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -4, dir); //steam - this.sendFluid(tanks[3].getTankType(), worldObj, xCoord + dir.offsetZ * 6, yCoord + 1, zCoord - dir.offsetX * 6, rot.getOpposite()); - - //if(audio != null) // audio shouldn't even exist serverside - // audio.updatePitch((float) (0.45 + 0.05 * rpm / 10)); + this.sendFluid(tanks[3], worldObj, xCoord + dir.offsetZ * 6, yCoord + 1, zCoord - dir.offsetX * 6, rot.getOpposite()); data.setInteger("rpm", this.rpm); data.setInteger("temp", this.temp); @@ -170,12 +176,12 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement if(audio == null) { //if there is no sound playing, start it - audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 1.0F); + audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 20F, 1.0F); audio.startSound(); } else if(!audio.isPlaying()) { audio.stopSound(); - audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 1.0F); + audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 20F, 1.0F); audio.startSound(); } @@ -300,6 +306,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement } double consumption = fuelMaxCons.containsKey(tanks[0].getTankType()) ? fuelMaxCons.get(tanks[0].getTankType()) : 5D; + if(worldObj.getTotalWorldTime() % 20 == 0 && tanks[0].getTankType() != Fluids.OXYHYDROGEN) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 3); makePower(consumption, throttle); } @@ -545,6 +552,92 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement return dir != ForgeDirection.DOWN; } + @Override + public String getComponentName() { + return "ntm_gas_turbine"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] { + tanks[0].getFill(), tanks[0].getMaxFill(), + tanks[1].getFill(), tanks[1].getMaxFill(), + tanks[2].getFill(), tanks[2].getMaxFill(), + tanks[3].getFill(), tanks[3].getMaxFill() + }; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return new Object[] {tanks[0].getTankType().getName()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getPower(Context context, Arguments args) { + return new Object[] {power}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getThrottle(Context context, Arguments args) { + return new Object[] {throttle}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getState(Context context, Arguments args) { + return new Object[] {state}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getAuto(Context context, Arguments args) { + return new Object[] {autoMode}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setThrottle(Context context, Arguments args) { + throttle = args.checkInteger(0); + return new Object[] {true}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setAuto(Context context, Arguments args) { + autoMode = args.checkBoolean(0); + return new Object[] {true}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] start(Context context, Arguments args) { + stopIfNotReady(); + startup(); + return new Object[] {true}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] stop(Context context, Arguments args) { + shutdown(); + return new Object[] {true}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + + return new Object[] {throttle, state, + tanks[0].getFill(), tanks[0].getMaxFill(), + tanks[1].getFill(), tanks[1].getMaxFill(), + tanks[2].getFill(), tanks[2].getMaxFill(), + tanks[3].getFill(), tanks[3].getMaxFill()}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineTurbineGas(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index 262bfb654..414d273a4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -5,6 +5,8 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.inventory.UpgradeManager; @@ -24,7 +26,9 @@ import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.tileentity.TileEntityMachinePolluting; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; @@ -41,10 +45,11 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbofan extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 1_000_000; @@ -62,7 +67,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements private AudioWrapper audio; public TileEntityMachineTurbofan() { - super(5); + super(5, 150); tank = new FluidTank(Fluids.KEROSENE, 24000); blood = new FluidTank(Fluids.BLOOD, 24000); } @@ -160,7 +165,9 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements if(amountToBurn > 0) { this.wasOn = true; this.tank.setFill(this.tank.getFill() - amountToBurn); - this.power += burnValue * amountToBurn; + this.power += burnValue * amountToBurn * (1 + Math.min(this.afterburner / 3D, 4)); + + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * amountToBurn); } power = Library.chargeItemsFromTE(slots, 3, power, power); @@ -168,7 +175,8 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements for(DirPos pos : getConPos()) { this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(this.blood.getFill() > 0) this.sendFluid(blood.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.blood.getFill() > 0) this.sendFluid(blood, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendSmoke(pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } if(burnValue > 0 && amountToBurn > 0) { @@ -309,6 +317,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements audio = rebootAudio(audio); } + audio.keepAlive(); audio.updateVolume(momentum); audio.updatePitch(momentum / 200F + 0.5F + this.afterburner * 0.16F); @@ -325,9 +334,9 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements * Otherwise this could lead to desync since the motion is never sent form the server */ if(tank.getFill() > 0 && !MainRegistry.proxy.me().capabilities.isCreativeMode) { - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.UP); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + double minX = this.xCoord + 0.5 - dir.offsetX * 3.5 - rot.offsetX * 1.5; double maxX = this.xCoord + 0.5 - dir.offsetX * 19.5 + rot.offsetX * 1.5; double minZ = this.zCoord + 0.5 - dir.offsetZ * 3.5 - rot.offsetZ * 1.5; @@ -382,7 +391,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements } public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:block.turbofanOperate", xCoord, yCoord, zCoord, 5.0F, 1.0F); + return MainRegistry.proxy.getLoopedSound("hbm:block.turbofanOperate", xCoord, yCoord, zCoord, 1.0F, 50F, 1.0F, 20); } @Override @@ -469,7 +478,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements @Override public FluidTank[] getAllTanks() { - return new FluidTank[] { tank, blood }; + return new FluidTank[] { tank, blood, smoke, smoke_leaded, smoke_poison }; } @Override @@ -482,4 +491,24 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineTurbofan(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.AFTERBURN; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.AFTERBURN) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "+" + (int)(level * 100 * (1 + Math.min(level / 3D, 4D))) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.AFTERBURN) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java new file mode 100644 index 000000000..42510532f --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -0,0 +1,303 @@ +package com.hbm.tileentity.machine; + +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.container.ContainerMachineWoodBurner; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.inventory.gui.GUIMachineWoodBurner; +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumAshType; +import com.hbm.lib.Library; +import com.hbm.module.ModuleBurnTime; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyGenerator; +import api.hbm.fluid.IFluidStandardReceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityMachineWoodBurner extends TileEntityMachineBase implements IFluidStandardReceiver, IControlReceiver, IEnergyGenerator, IGUIProvider { + + public long power; + public static final long maxPower = 100_000; + public int burnTime; + public int maxBurnTime; + public boolean liquidBurn = false; + public boolean isOn = false; + + public FluidTank tank; + + public static ModuleBurnTime burnModule = new ModuleBurnTime().setLogTimeMod(4).setWoodTimeMod(2); + + public int ashLevelWood; + public int ashLevelCoal; + public int ashLevelMisc; + + public TileEntityMachineWoodBurner() { + super(6); + this.tank = new FluidTank(Fluids.WOODOIL, 16_000); + } + + @Override + public String getName() { + return "container.machineWoodBurner"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.tank.setType(2, slots); + this.tank.loadTank(3, 4, slots); + this.power = Library.chargeItemsFromTE(slots, 5, power, maxPower); + + for(DirPos pos : getConPos()) { + if(power > 0) this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(worldObj.getTotalWorldTime() % 20 == 0) this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + if(!liquidBurn) { + + if(this.burnTime <= 0) { + + if(slots[0] != null) { + int burn = this.burnModule.getBurnTime(slots[0]); + if(burn > 0) { + EnumAshType type = TileEntityFireboxBase.getAshFromFuel(slots[0]); + if(type == EnumAshType.WOOD) ashLevelWood += burn; + if(type == EnumAshType.COAL) ashLevelCoal += burn; + if(type == EnumAshType.MISC) ashLevelMisc += burn; + 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; + + this.maxBurnTime = this.burnTime = burn; + this.decrStackSize(0, 1); + this.markChanged(); + } + } + + } else if(this.power < this.maxPower && isOn){ + this.burnTime--; + this.power += 100; + if(power > maxPower) this.power = this.maxPower; + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); + } + + } else { + + if(this.power < this.maxPower && tank.getFill() > 0 && isOn) { + FT_Flammable trait = tank.getTankType().getTrait(FT_Flammable.class); + + if(trait != null) { + + int toBurn = Math.min(tank.getFill(), 2); + + if(toBurn > 0) { + this.power += trait.getHeatEnergy() * toBurn / 2_000L; + this.tank.setFill(this.tank.getFill() - toBurn); + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * toBurn / 2F); + } + } + } + } + + if(this.power > this.maxPower) this.power = this.maxPower; + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setInteger("burnTime", burnTime); + data.setInteger("maxBurnTime", maxBurnTime); + data.setBoolean("isOn", isOn); + data.setBoolean("liquidBurn", liquidBurn); + tank.writeToNBT(data, "t"); + this.networkPack(data, 25); + } else { + + if(this.isOn && ((!this.liquidBurn && this.burnTime > 0) || (this.liquidBurn && this.tank.getTankType().hasTrait(FT_Flammable.class) && tank.getFill() > 0))) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + worldObj.spawnParticle("smoke", xCoord + 0.5 - dir.offsetX + rot.offsetX, yCoord + 4, zCoord + 0.5 - dir.offsetZ + rot.offsetZ, 0, 0.05, 0); + } + } + } + + private DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + return new DirPos[] { + new DirPos(xCoord - dir.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetX, dir.getOpposite()) + }; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.burnTime = nbt.getInteger("burnTime"); + this.maxBurnTime = nbt.getInteger("maxBurnTime"); + this.isOn = nbt.getBoolean("isOn"); + this.liquidBurn = nbt.getBoolean("liquidBurn"); + tank.readFromNBT(nbt, "t"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.power = nbt.getLong("power"); + this.burnTime = nbt.getInteger("burnTime"); + this.maxBurnTime = nbt.getInteger("maxBurnTime"); + this.isOn = nbt.getBoolean("isOn"); + this.liquidBurn = nbt.getBoolean("liquidBurn"); + tank.readFromNBT(nbt, "t"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + nbt.setInteger("burnTime", burnTime); + nbt.setInteger("maxBurnTime", maxBurnTime); + nbt.setBoolean("isOn", isOn); + nbt.setBoolean("liquidBurn", liquidBurn); + tank.writeToNBT(nbt, "t"); + } + + protected boolean processAsh(int level, EnumAshType type, int threshold) { + + if(level >= threshold) { + if(slots[1] == null) { + slots[1] = DictFrame.fromOne(ModItems.powder_ash, type); + ashLevelWood -= threshold; + return true; + } else if(slots[1].stackSize < slots[1].getMaxStackSize() && slots[1].getItem() == ModItems.powder_ash && slots[1].getItemDamage() == type.ordinal()) { + slots[1].stackSize++; + return true; + } + } + + return false; + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("toggle")) { + this.isOn = !this.isOn; + this.markChanged(); + } + if(data.hasKey("switch")) { + this.liquidBurn = !this.liquidBurn; + this.markChanged(); + } + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerMachineWoodBurner(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIMachineWoodBurner(player.inventory, this); + } + + @Override + public int[] getAccessibleSlotsFromSide(int meta) { + return new int[] { 0, 1 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + return i == 0 && burnModule.getBurnTime(itemStack) > 0; + } + + @Override + public boolean canExtractItem(int slot, ItemStack itemStack, int side) { + return slot == 1; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public boolean canConnect(ForgeDirection dir) { + ForgeDirection rot = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + return dir == rot.getOpposite(); + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + ForgeDirection rot = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + return dir == rot.getOpposite(); + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] {tank}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tank}; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 6, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java index 6b5846286..5253e4aec 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java @@ -7,8 +7,13 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyUser; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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; @@ -19,7 +24,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, SimpleComponent { public long power; public static final long maxPower = 50000; @@ -209,6 +215,17 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg nbt.setInteger("speed", speed); } + @Override + public String getComponentName() { + return "microwave"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] test(Context context, Arguments args) { + return new Object[] {"This is a testing device for everything OC."}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMicrowave(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java new file mode 100644 index 000000000..09ca138b6 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -0,0 +1,592 @@ +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.container.ContainerPWR; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.fluid.trait.FT_Heatable; +import com.hbm.inventory.fluid.trait.FT_PWRModerator; +import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingStep; +import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; +import com.hbm.inventory.gui.GUIPWR; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.EnumUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.block.Block; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; +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 TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, SimpleComponent, IFluidStandardTransceiver { + + public FluidTank[] tanks; + public int coreHeat; + public static final int coreHeatCapacity = 10_000_000; + public int hullHeat; + public static final int hullHeatCapacity = 10_000_000; + public double flux; + + public int rodLevel = 100; + public int rodTarget = 100; + + public int typeLoaded; + public int amountLoaded; + public double progress; + public double processTime; + + public int rodCount; + public int connections; + public int connectionsControlled; + public int heatexCount; + public int channelCount; + public int sourceCount; + + public int unloadDelay = 0; + public boolean assembled; + + private AudioWrapper audio; + + protected List ports = new ArrayList(); + protected List rods = new ArrayList(); + + public TileEntityPWRController() { + super(3); + + this.tanks = new FluidTank[2]; + this.tanks[0] = new FluidTank(Fluids.COOLANT, 128_000); + this.tanks[1] = new FluidTank(Fluids.COOLANT_HOT, 128_000); + } + + /** The initial creation of the reactor, does all the pre-calculation and whatnot */ + public void setup(HashMap partMap, HashMap rodMap) { + + rodCount = 0; + connections = 0; + connectionsControlled = 0; + heatexCount = 0; + channelCount = 0; + sourceCount = 0; + ports.clear(); + rods.clear(); + + int connectionsDouble = 0; + int connectionsControlledDouble = 0; + + for(Entry entry : partMap.entrySet()) { + Block block = entry.getValue(); + + if(block == ModBlocks.pwr_fuel) rodCount++; + if(block == ModBlocks.pwr_heatex) heatexCount++; + if(block == ModBlocks.pwr_channel) channelCount++; + if(block == ModBlocks.pwr_neutron_source) sourceCount++; + if(block == ModBlocks.pwr_port) ports.add(entry.getKey()); + } + + for(Entry entry : rodMap.entrySet()) { + BlockPos fuelPos = entry.getKey(); + + rods.add(fuelPos); + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + boolean controlled = false; + + for(int i = 1; i < 16; i++) { + BlockPos checkPos = fuelPos.offset(dir, i); + Block atPos = partMap.get(checkPos); + if(atPos == null || atPos == ModBlocks.pwr_casing) break; + if(atPos == ModBlocks.pwr_control) controlled = true; + if(atPos == ModBlocks.pwr_fuel) { + if(controlled) { + connectionsControlledDouble++; + } else { + connectionsDouble++; + } + break; + } + if(atPos == ModBlocks.pwr_reflector) { + if(controlled) { + connectionsControlledDouble += 2; + } else { + connectionsDouble += 2; + } + break; + } + } + } + } + + connections = connectionsDouble / 2; + connectionsControlled = connectionsControlledDouble / 2; + + /*System.out.println("Finalized nuclear reactor!"); + System.out.println("Rods: " + rodCount); + System.out.println("Connections: " + connections); + System.out.println("Controlled connections: " + connectionsControlled); + System.out.println("Heatex: " + heatexCount); + System.out.println("Channels: " + channelCount); + System.out.println("Sources: " + sourceCount);*/ + } + + @Override + public String getName() { + return "container.pwrController"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.tanks[0].setType(2, slots); + setupTanks(); + + if(unloadDelay > 0) unloadDelay--; + + int chunkX = xCoord >> 4; + int chunkZ = zCoord >> 4; + + //since fluid sources are often not within 1 chunk, we just do 2 chunks distance and call it a day + if(!worldObj.getChunkProvider().chunkExists(chunkX, chunkZ) || + !worldObj.getChunkProvider().chunkExists(chunkX + 2, chunkZ + 2) || + !worldObj.getChunkProvider().chunkExists(chunkX + 2, chunkZ - 2) || + !worldObj.getChunkProvider().chunkExists(chunkX - 2, chunkZ + 2) || + !worldObj.getChunkProvider().chunkExists(chunkX - 2, chunkZ - 2)) { + this.unloadDelay = 40; + } + + if(this.assembled) { + for(BlockPos pos : ports) { + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + BlockPos portPos = pos.offset(dir); + + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, portPos.getX(), portPos.getY(), portPos.getZ(), dir); + if(worldObj.getTotalWorldTime() % 20 == 0) this.trySubscribe(tanks[0].getTankType(), worldObj, portPos.getX(), portPos.getY(), portPos.getZ(), dir); + } + } + + //only perform fission if the area has been loaded for 40 ticks or more + if(this.unloadDelay <= 0) { + + if((typeLoaded == -1 || amountLoaded <= 0) && slots[0] != null && slots[0].getItem() == ModItems.pwr_fuel) { + typeLoaded = slots[0].getItemDamage(); + amountLoaded++; + this.decrStackSize(0, 1); + this.markChanged(); + } else if(slots[0] != null && slots[0].getItem() == ModItems.pwr_fuel && slots[0].getItemDamage() == typeLoaded && amountLoaded < rodCount){ + amountLoaded++; + this.decrStackSize(0, 1); + this.markChanged(); + } + + if(this.rodTarget > this.rodLevel) this.rodLevel++; + if(this.rodTarget < this.rodLevel) this.rodLevel--; + + int newFlux = this.sourceCount * 20; + + if(typeLoaded != -1 && amountLoaded > 0) { + + EnumPWRFuel fuel = EnumUtil.grabEnumSafely(EnumPWRFuel.class, typeLoaded); + double usedRods = getTotalProcessMultiplier(); + double fluxPerRod = this.flux / this.rodCount; + double outputPerRod = fuel.function.effonix(fluxPerRod); + double totalOutput = outputPerRod * amountLoaded * usedRods; + double totalHeatOutput = totalOutput * fuel.heatEmission; + + this.coreHeat += totalHeatOutput; + newFlux += totalOutput; + + this.processTime = (int) fuel.yield; + this.progress += totalOutput; + + if(this.progress >= this.processTime) { + this.progress -= this.processTime; + + if(slots[1] == null) { + slots[1] = new ItemStack(ModItems.pwr_fuel_hot, 1, typeLoaded); + } else if(slots[1].getItem() == ModItems.pwr_fuel_hot && slots[1].getItemDamage() == typeLoaded && slots[1].stackSize < slots[1].getMaxStackSize()) { + slots[1].stackSize++; + } + + this.amountLoaded--; + this.markChanged(); + } + } + + if(this.amountLoaded <= 0) { + this.typeLoaded = -1; + } + + if(amountLoaded > rodCount) amountLoaded = rodCount; + + /* CORE COOLING */ + double coreCoolingApproachNum = getXOverE((double) this.heatexCount * 5 / (double) this.rodCount, 2) / 2D; + int averageCoreHeat = (this.coreHeat + this.hullHeat) / 2; + this.coreHeat -= (coreHeat - averageCoreHeat) * coreCoolingApproachNum; + this.hullHeat -= (hullHeat - averageCoreHeat) * coreCoolingApproachNum; + + updateCoolant(); + + this.coreHeat *= 0.999D; + this.hullHeat *= 0.999D; + + this.flux = newFlux; + + if(tanks[0].getTankType().hasTrait(FT_PWRModerator.class) && tanks[0].getFill() > 0) { + this.flux *= tanks[0].getTankType().getTrait(FT_PWRModerator.class).getMultiplier(); + } + + if(this.coreHeat > this.coreHeatCapacity) { + meltDown(); + } + } + } + + NBTTagCompound data = new NBTTagCompound(); + tanks[0].writeToNBT(data, "t0"); + tanks[1].writeToNBT(data, "t1"); + data.setInteger("rodCount", rodCount); + data.setInteger("coreHeat", coreHeat); + data.setInteger("hullHeat", hullHeat); + data.setDouble("flux", flux); + data.setDouble("processTime", processTime); + data.setDouble("progress", progress); + data.setInteger("typeLoaded", typeLoaded); + data.setInteger("amountLoaded", amountLoaded); + data.setInteger("rodLevel", rodLevel); + data.setInteger("rodTarget", rodTarget); + this.networkPack(data, 150); + } else { + + if(amountLoaded > 0) { + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + } + } + + protected void meltDown() { + + worldObj.func_147480_a(xCoord, yCoord, zCoord, false); + + double x = 0; + double y = 0; + double z = 0; + + for(BlockPos pos : this.rods) { + Block b = worldObj.getBlock(pos.getX(), pos.getY(), pos.getZ()); + b.breakBlock(worldObj, pos.getX(), pos.getY(), pos.getZ(), b, worldObj.getBlockMetadata(pos.getX(), pos.getY(), pos.getZ())); + worldObj.setBlock(pos.getX(), pos.getY(), pos.getZ(), ModBlocks.corium_block, 5, 3); + + x += pos.getX() + 0.5; + y += pos.getY() + 0.5; + z += pos.getZ() + 0.5; + } + + x /= rods.size(); + y /= rods.size(); + z /= rods.size(); + + worldObj.newExplosion(null, x, y, z, 15F, true, true); + } + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.reactorLoop", xCoord, yCoord, zCoord, 1F, 10F, 1.0F, 20); + } + + @Override + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + protected void updateCoolant() { + + FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); + if(trait == null || trait.getEfficiency(HeatingType.PWR) <= 0) return; + + double coolingEff = (double) this.channelCount / (double) this.rodCount * 0.1D; //10% cooling if numbers match + if(coolingEff > 1D) coolingEff = 1D; + + int heatToUse = Math.min(this.hullHeat, (int) (this.hullHeat * coolingEff * trait.getEfficiency(HeatingType.PWR))); + HeatingStep step = trait.getFirstStep(); + int coolCycles = tanks[0].getFill() / step.amountReq; + int hotCycles = (tanks[1].getMaxFill() - tanks[1].getFill()) / step.amountProduced; + int heatCycles = heatToUse / step.heatReq; + int cycles = Math.min(coolCycles, Math.min(hotCycles, heatCycles)); + + this.hullHeat -= step.heatReq * cycles; + this.tanks[0].setFill(tanks[0].getFill() - step.amountReq * cycles); + this.tanks[1].setFill(tanks[1].getFill() + step.amountProduced * cycles); + } + + public void networkUnpack(NBTTagCompound nbt) { + tanks[0].readFromNBT(nbt, "t0"); + tanks[1].readFromNBT(nbt, "t1"); + rodCount = nbt.getInteger("rodCount"); + coreHeat = nbt.getInteger("coreHeat"); + hullHeat = nbt.getInteger("hullHeat"); + flux = nbt.getDouble("flux"); + processTime = nbt.getDouble("processTime"); + progress = nbt.getDouble("progress"); + typeLoaded = nbt.getInteger("typeLoaded"); + amountLoaded = nbt.getInteger("amountLoaded"); + rodLevel = nbt.getInteger("rodLevel"); + rodTarget = nbt.getInteger("rodTarget"); + } + + protected void setupTanks() { + + FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); + + if(trait == null || trait.getEfficiency(HeatingType.PWR) <= 0) { + tanks[0].setTankType(Fluids.NONE); + tanks[1].setTankType(Fluids.NONE); + return; + } + + tanks[1].setTankType(trait.getFirstStep().typeProduced); + } + + public double getTotalProcessMultiplier() { + double totalConnections = this.connections + this.connectionsControlled * (1D - (this.rodLevel / 100D)); + double connectionsEff = connectinFunc(totalConnections); + return connectionsEff; + } + + public double connectinFunc(double connections) { + return connections / 10D * (1D - getXOverE(connections, 300D)) + connections / 150D * getXOverE(connections, 300D); + } + + public double getXOverE(double x, double d) { + return 1 - Math.pow(Math.E, -x / d); + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + if(slot == 0) return stack.getItem() == ModItems.pwr_fuel; + return false; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] {0, 1}; + } + + @Override + public boolean canExtractItem(int slot, ItemStack itemStack, int side) { + return slot == 1; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + tanks[0].readFromNBT(nbt, "t0"); + tanks[1].readFromNBT(nbt, "t1"); + + this.assembled = nbt.getBoolean("assembled"); + this.coreHeat = nbt.getInteger("coreHeat"); + this.hullHeat = nbt.getInteger("hullHeat"); + this.flux = nbt.getDouble("flux"); + this.rodLevel = nbt.getInteger("rodLevel"); + this.rodTarget = nbt.getInteger("rodTarget"); + this.typeLoaded = nbt.getInteger("typeLoaded"); + this.amountLoaded = nbt.getInteger("amountLoaded"); + this.progress = nbt.getDouble("progress"); + this.processTime = nbt.getDouble("processTime"); + + this.rodCount = nbt.getInteger("rodCount"); + this.connections = nbt.getInteger("connections"); + this.connectionsControlled = nbt.getInteger("connectionsControlled"); + this.heatexCount = nbt.getInteger("heatexCount"); + this.channelCount = nbt.getInteger("channelCount"); + this.sourceCount = nbt.getInteger("sourceCount"); + + ports.clear(); + int portCount = nbt.getInteger("portCount"); + for(int i = 0; i < portCount; i++) { + int[] port = nbt.getIntArray("p" + i); + ports.add(new BlockPos(port[0], port[1], port[2])); + } + + rods.clear(); + int rodCount = nbt.getInteger("rodCount"); + for(int i = 0; i < rodCount; i++) { + if(nbt.hasKey("r" + i)) { + int[] port = nbt.getIntArray("r" + i); + rods.add(new BlockPos(port[0], port[1], port[2])); + } + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + tanks[0].writeToNBT(nbt, "t0"); + tanks[1].writeToNBT(nbt, "t1"); + + nbt.setBoolean("assembled", assembled); + nbt.setInteger("coreHeat", coreHeat); + nbt.setInteger("hullHeat", hullHeat); + nbt.setDouble("flux", flux); + nbt.setInteger("rodLevel", rodLevel); + nbt.setInteger("rodTarget", rodTarget); + nbt.setInteger("typeLoaded", typeLoaded); + nbt.setInteger("amountLoaded", amountLoaded); + nbt.setDouble("progress", progress); + nbt.setDouble("processTime", processTime); + + nbt.setInteger("rodCount", rodCount); + nbt.setInteger("connections", connections); + nbt.setInteger("connectionsControlled", connectionsControlled); + nbt.setInteger("heatexCount", heatexCount); + nbt.setInteger("channelCount", channelCount); + nbt.setInteger("sourceCount", sourceCount); + + nbt.setInteger("portCount", ports.size()); + for(int i = 0; i < ports.size(); i++) { + BlockPos pos = ports.get(i); + nbt.setIntArray("p" + i, new int[] { pos.getX(), pos.getY(), pos.getZ() }); + } + + nbt.setInteger("rodCount", rods.size()); + for(int i = 0; i < rods.size(); i++) { + BlockPos pos = rods.get(i); + nbt.setIntArray("r" + i, new int[] { pos.getX(), pos.getY(), pos.getZ() }); + } + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + + if(data.hasKey("control")) { + this.rodTarget = MathHelper.clamp_int(data.getInteger("control"), 0, 100); + this.markChanged(); + } + } + + + public String getComponentName() { + return "ntm_pwr_control"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {coreHeat, hullHeat}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFlux(Context context, Arguments args) { + return new Object[] {flux}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getLevel(Context context, Arguments args) { + return new Object[] {rodTarget}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {coreHeat, hullHeat, flux, rodTarget}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setLevel(Context context, Arguments args) { + rodTarget = MathHelper.clamp_int(args.checkInteger(0), 0, 100); + this.markChanged(); + return new Object[] {true}; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerPWR(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIPWR(player.inventory, this); + } + + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] { tanks[1] }; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] { tanks[0] }; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java index b2ca2d267..8a513a99b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java @@ -2,6 +2,8 @@ package com.hbm.tileentity.machine; import java.util.List; +import com.hbm.entity.mob.EntityFBI; +import com.hbm.entity.mob.EntityFBIDrone; import com.hbm.inventory.container.ContainerRadiobox; import com.hbm.lib.ModDamageSource; import com.hbm.tileentity.IGUIProvider; @@ -42,8 +44,13 @@ public class TileEntityRadiobox extends TileEntityLoadedBase implements IEnergyU int range = 15; List entities = worldObj.getEntitiesWithinAABB(IMob.class, AxisAlignedBB.getBoundingBox(xCoord - range, yCoord - range, zCoord - range, xCoord + range, yCoord + range, zCoord + range)); - for(IMob entity : entities) + + for(IMob entity : entities) { + + if(entity instanceof EntityFBI || entity instanceof EntityFBIDrone) continue; + ((Entity)entity).attackEntityFrom(ModDamageSource.enervation, 20.0F); + } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java index fb48aebab..63ea4818e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java @@ -9,8 +9,13 @@ import com.hbm.items.ModItems; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -23,7 +28,8 @@ import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class TileEntityReactorControl extends TileEntityMachineBase implements IControlReceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityReactorControl extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent { public TileEntityReactorControl() { super(1); @@ -101,9 +107,9 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + isLinked = establishLink(); if(isLinked) { @@ -244,6 +250,46 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I LOG } + // do some opencomputer stuff + @Override + public String getComponentName() { + return "reactor_control"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] isLinked(Context context, Arguments args) { + return new Object[] {isLinked}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getReactor(Context context, Arguments args) { + return new Object[] {getDisplayData()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setParams(Context context, Arguments args) { //i hate my life + int newFunction = args.checkInteger(0); + double newMaxHeat = args.checkDouble(1); + double newMinHeat = args.checkDouble(2); + double newMaxLevel = args.checkDouble(3)/100.0; + double newMinLevel = args.checkDouble(4)/100.0; + function = RodFunction.values()[MathHelper.clamp_int(newFunction, 0, 2)]; + heatUpper = MathHelper.clamp_double(newMaxHeat, 0, 9999); + heatLower = MathHelper.clamp_double(newMinHeat, 0, 9999); + levelUpper = MathHelper.clamp_double(newMaxLevel, 0, 1); + levelLower = MathHelper.clamp_double(newMinLevel, 0, 1); + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getParams(Context context, Arguments args) { + return new Object[] {function.ordinal(), heatUpper, heatLower, levelUpper, levelLower}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerReactorControl(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index aae6849e0..0bc646eee 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -26,11 +26,13 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -211,6 +213,9 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements Block b = worldObj.getBlock(x, y, z); + if((b == Blocks.water || b == Blocks.flowing_water) && worldObj.getBlockMetadata(x, y, z) == 0) + return true; + if(b == ModBlocks.block_lead || b == ModBlocks.block_desh || b == ModBlocks.reactor_research || b == ModBlocks.machine_reactor_breeding) return true; @@ -391,46 +396,41 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements return "research_reactor"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTemp(Context context, Arguments args) { // or getHeat, whatever. return new Object[] {heat}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getLevel(Context context, Arguments args) { - return new Object[] {level}; + return new Object[] {level * 100}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTargetLevel(Context context, Arguments args) { return new Object[] {targetLevel}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFlux(Context context, Arguments args) { return new Object[] {totalFlux}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, level, targetLevel, totalFlux}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { double newLevel = args.checkDouble(0)/100.0; - if (newLevel > 1.0) { - newLevel = 1.0; - } else if (newLevel < 0.0) { - newLevel = 0.0; - } - targetLevel = newLevel; + targetLevel = MathHelper.clamp_double(newLevel, 0, 100.0); return new Object[] {}; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index 143795070..43536fedb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -230,7 +230,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF } for(DirPos pos : getConPos()) { - this.sendFluid(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } checkIfMeltdown(); @@ -545,49 +545,49 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF return "zirnox_reactor"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTemp(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getPressure(Context context, Arguments args) { return new Object[] {pressure}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getWater(Context context, Arguments args) { return new Object[] {water.getFill()}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSteam(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCarbonDioxide(Context context, Arguments args) { return new Object[] {carbonDioxide.getFill()}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] isActive(Context context, Arguments args) { return new Object[] {isOn}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, pressure, water.getFill(), steam.getFill(), carbonDioxide.getFill(), isOn}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setActive(Context context, Arguments args) { isOn = args.checkBoolean(0); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java index f89d0660f..454714695 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java @@ -158,10 +158,26 @@ public class TileEntitySILEX extends TileEntityMachineBase implements IFluidAcce if(current != null && current.equals(conv)) { - int toFill = Math.min(10, Math.min(maxFill - currentFill, tank.getFill())); + int toFill = Math.min(50, Math.min(maxFill - currentFill, tank.getFill())); currentFill += toFill; tank.setFill(tank.getFill() - toFill); } + } else { + ComparableStack direct = new ComparableStack(ModItems.fluid_icon, 1, tank.getTankType().getID()); + + if(SILEXRecipes.getOutput(direct.toStack()) != null) { + + if(currentFill == 0) { + current = (ComparableStack) direct.copy(); + } + + if(current != null && current.equals(direct)) { + + int toFill = Math.min(50, Math.min(maxFill - currentFill, tank.getFill())); + currentFill += toFill; + tank.setFill(tank.getFill() - toFill); + } + } } loadDelay++; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java index e906bc154..f0b6a5500 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java @@ -273,7 +273,7 @@ public class TileEntitySawmill extends TileEntityMachineBase { } if(names.contains("plankWood")) { - return new ItemStack(Items.stick, 4); + return new ItemStack(Items.stick, 6); } if(names.contains("treeSapling")) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java index 2ceec4118..ab91d87c3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java @@ -56,8 +56,8 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui water.setFill(water.getFill() - process); steam.setFill(steam.getFill() + process * 100); - this.sendFluid(steam.getTankType(), worldObj, xCoord, yCoord + 3, zCoord, Library.POS_Y); - this.sendFluid(steam.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); + this.sendFluid(steam, worldObj, xCoord, yCoord + 3, zCoord, Library.POS_Y); + this.sendFluid(steam, worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); heat = 0; } else { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java index 20204ca0d..6f85b34fd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java @@ -171,7 +171,7 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS @Override public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:block.soyuzReady", xCoord, yCoord, zCoord, 1.0F, 1.0F); + return MainRegistry.proxy.getLoopedSound("hbm:block.soyuzReady", xCoord, yCoord, zCoord, 2.0F, 100F, 1.0F); } public void onChunkUnload() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java index f3c99b090..2d70dc4c6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java @@ -120,7 +120,7 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFlui if(this.powerBuffer > 0) this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } if(tanks[1].getFill() > 0) fillFluidInit(tanks[1].getTankType()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java b/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java index 19ecdf379..fc2560845 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java @@ -48,12 +48,12 @@ public class TileEntityStirling extends TileEntityLoadedBase implements INBTPack if(hasCog) { tryPullHeat(); - this.powerBuffer = (long) (this.heat * this.efficiency); + this.powerBuffer = (long) (this.heat * (this.isCreative() ? 1 : this.efficiency)); if(warnCooldown > 0) warnCooldown--; - if(heat > maxHeat()) { + if(heat > maxHeat() && !isCreative()) { this.overspeed++; @@ -109,6 +109,8 @@ public class TileEntityStirling extends TileEntityLoadedBase implements INBTPack float momentum = powerBuffer * 50F / ((float) maxHeat()); + if(this.isCreative()) momentum = Math.min(momentum, 45F); + this.lastSpin = this.spin; this.spin += momentum; @@ -120,13 +122,17 @@ public class TileEntityStirling extends TileEntityLoadedBase implements INBTPack } public int getGeatMeta() { - return this.getBlockType() == ModBlocks.machine_stirling ? 0 : 1; + return this.getBlockType() == ModBlocks.machine_stirling ? 0 : this.getBlockType() == ModBlocks.machine_stirling_creative ? 2 : 1; } public int maxHeat() { return this.getBlockType() == ModBlocks.machine_stirling ? 300 : 1500; } + public boolean isCreative() { + return this.getBlockType() == ModBlocks.machine_stirling_creative; + } + protected DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java b/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java index e157188be..151c61c12 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java @@ -107,19 +107,26 @@ public class TileEntityStorageDrum extends TileEntityMachineBase implements IFlu slots[i] = new ItemStack(ModItems.nuclear_waste_short_depleted_tiny, 1, meta); } - if(item == ModItems.ingot_au198 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 100) == 0) { + if(item == ModItems.ingot_au198 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 20) == 0) { slots[i] = new ItemStack(ModItems.ingot_mercury, 1, meta); } - if(item == ModItems.ingot_au198 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 20) == 0) { + if(item == ModItems.nugget_au198 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 100) == 0) { slots[i] = new ItemStack(ModItems.nugget_mercury, 1, meta); } - if(item == ModItems.ingot_pb209 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 50) == 0) { + if(item == ModItems.ingot_pb209 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 10) == 0) { slots[i] = new ItemStack(ModItems.ingot_bismuth, 1, meta); } - if(item == ModItems.nugget_pb209 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 10) == 0) { + if(item == ModItems.nugget_pb209 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 50) == 0) { slots[i] = new ItemStack(ModItems.nugget_bismuth, 1, meta); } + + if(item == ModItems.powder_sr90 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 10) == 0) { + slots[i] = new ItemStack(ModItems.powder_zirconium, 1, meta); + } + if(item == ModItems.nugget_sr90 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 50) == 0) { + slots[i] = new ItemStack(ModItems.nugget_zirconium, 1, meta); + } } } @@ -148,8 +155,8 @@ public class TileEntityStorageDrum extends TileEntityMachineBase implements IFlu fillFluidInit(tanks[1].getTankType()); } - this.sendFluidToAll(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[0], this); + this.sendFluidToAll(tanks[1], this); tanks[0].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); tanks[1].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java index fcab378f7..f3c930d3e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java @@ -125,14 +125,16 @@ public class TileEntityTesla extends TileEntityMachineBase implements IEnergyUse continue; } + if(e instanceof EntityCreeper) { + ((EntityCreeper)e).getDataWatcher().updateObject(17, Byte.valueOf((byte)1)); + ret.add(new double[] {e.posX, e.posY + e.height / 2, e.posZ}); + continue; + } + if(!(e instanceof EntityPlayer && ArmorUtil.checkForFaraday((EntityPlayer)e))) if(e.attackEntityFrom(ModDamageSource.electricity, MathHelper.clamp_float(e.getMaxHealth() * 0.5F, 3, 20) / (float)targets.size())) worldObj.playSoundAtEntity(e, "hbm:weapon.tesla", 1.0F, 1.0F); - if(e instanceof EntityCreeper) { - ((EntityCreeper)e).getDataWatcher().updateObject(17, Byte.valueOf((byte)1)); - } - double offset = 0; if(source != null && e instanceof EntityPlayer && worldObj.isRemote) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java index 5fd40bbe0..03b16cf88 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java @@ -68,14 +68,14 @@ public class TileEntityTowerLarge extends TileEntityCondenser { } @Override - public void sendFluidToAll(FluidType type, TileEntity te) { + public void sendFluidToAll(FluidTank tank, TileEntity te) { for(int i = 2; i < 6; i++) { ForgeDirection dir = ForgeDirection.getOrientation(i); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord + dir.offsetX * 5, yCoord, zCoord + dir.offsetZ * 5, dir); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord + dir.offsetX * 5 + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ * 5 + rot.offsetZ * 3, dir); - this.sendFluid(this.tanks[1].getTankType(),worldObj, xCoord + dir.offsetX * 5 + rot.offsetX * -3, yCoord, zCoord + dir.offsetZ * 5 + rot.offsetZ * -3, dir); + this.sendFluid(this.tanks[1], worldObj, xCoord + dir.offsetX * 5, yCoord, zCoord + dir.offsetZ * 5, dir); + this.sendFluid(this.tanks[1], worldObj, xCoord + dir.offsetX * 5 + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ * 5 + rot.offsetZ * 3, dir); + this.sendFluid(this.tanks[1], worldObj, xCoord + dir.offsetX * 5 + rot.offsetX * -3, yCoord, zCoord + dir.offsetZ * 5 + rot.offsetZ * -3, dir); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java index 05849023a..7dbb010bb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java @@ -53,11 +53,11 @@ public class TileEntityTowerSmall extends TileEntityCondenser { } @Override - public void sendFluidToAll(FluidType type, TileEntity te) { - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord + 3, yCoord, zCoord, Library.POS_X); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord - 3, yCoord, zCoord, Library.NEG_X); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord, yCoord, zCoord + 3, Library.POS_Z); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord, yCoord, zCoord - 3, Library.NEG_Z); + public void sendFluidToAll(FluidTank tank, TileEntity te) { + this.sendFluid(this.tanks[1], worldObj, xCoord + 3, yCoord, zCoord, Library.POS_X); + this.sendFluid(this.tanks[1], worldObj, xCoord - 3, yCoord, zCoord, Library.NEG_X); + this.sendFluid(this.tanks[1], worldObj, xCoord, yCoord, zCoord + 3, Library.POS_Z); + this.sendFluid(this.tanks[1], worldObj, xCoord, yCoord, zCoord - 3, Library.NEG_Z); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index 4f1124f8e..a1f6d8b65 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -318,8 +318,8 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand protected void sendOutBottom() { for(DirPos pos : getSendingPos()) { - if(tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(tanks[2].getFill() > 0) this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -443,6 +443,12 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand return bb; } + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + private void disassemble() { int count = 20; @@ -494,6 +500,12 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand setBrokenColumn(1, ModBlocks.watz_end, 1, 2, -2); setBrokenColumn(1, ModBlocks.watz_end, 1, -2, 2); setBrokenColumn(1, ModBlocks.watz_end, 1, -2, -2); + + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(50, 50, 50)); + + for(EntityPlayer player : players) { + player.triggerAchievement(MainRegistry.achWatzBoom); + } } private void setBrokenColumn(int minHeight, Block b, int meta, int x, int z) { @@ -509,12 +521,6 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand } } } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() { - return 65536.0D; - } @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java index 8411a1c76..ad410410b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java @@ -18,8 +18,8 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIWatzCore; import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemCapacitor; import com.hbm.items.special.WatzFuel; +import com.hbm.items.tool.ItemTitaniumFilter; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxElectricityPacket; @@ -504,7 +504,7 @@ public class TileEntityWatzCore extends TileEntityLoadedBase implements ISidedIn @Override public boolean hasFuse() { - return slots[38] != null && slots[38].getItem() == ModItems.titanium_filter && ItemCapacitor.getDura(slots[38]) > 0; + return slots[38] != null && slots[38].getItem() == ModItems.titanium_filter && ItemTitaniumFilter.getDura(slots[38]) > 0; } @Override @@ -565,10 +565,10 @@ public class TileEntityWatzCore extends TileEntityLoadedBase implements ISidedIn this.sendPower(worldObj, xCoord, yCoord + 7, zCoord, ForgeDirection.UP); this.sendPower(worldObj, xCoord, yCoord - 7, zCoord, ForgeDirection.DOWN); - this.sendFluid(tank.getTankType(), worldObj, xCoord + 4, yCoord, zCoord, Library.POS_X); - this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord, zCoord + 4, Library.POS_Z); - this.sendFluid(tank.getTankType(), worldObj, xCoord - 4, yCoord, zCoord, Library.NEG_X); - this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord, zCoord - 4, Library.NEG_Z); + this.sendFluid(tank, worldObj, xCoord + 4, yCoord, zCoord, Library.POS_X); + this.sendFluid(tank, worldObj, xCoord, yCoord, zCoord + 4, Library.POS_Z); + this.sendFluid(tank, worldObj, xCoord - 4, yCoord, zCoord, Library.NEG_X); + this.sendFluid(tank, worldObj, xCoord, yCoord, zCoord - 4, Library.NEG_Z); if (age == 9 || age == 19) { fillFluidInit(tank.getTankType()); @@ -576,7 +576,7 @@ public class TileEntityWatzCore extends TileEntityLoadedBase implements ISidedIn //Only damages filter when heat is present (thus waste being created) if (heatList > 0) { - ItemCapacitor.setDura(slots[38], ItemCapacitor.getDura(slots[38]) - 1); + ItemTitaniumFilter.setDura(slots[38], ItemTitaniumFilter.getDura(slots[38]) - 1); } heatList *= heatMultiplier; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java index e04bef058..37f9f4fb0 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java @@ -49,7 +49,7 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl for(DirPos pos : getConPos()) { for(int i = 2; i <= 4; i++) { - if(tanks[i].getFill() > 0) this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[i].getFill() > 0) this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java index 7aaf0ed3a..04e534de5 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java @@ -69,7 +69,7 @@ public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase im for(DirPos pos : getConPos()) { for(int i = 1; i < 4; i++) { if(tanks[i].getFill() > 0) { - this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java index fa5ee1a72..f2adcb771 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java @@ -1,5 +1,7 @@ package com.hbm.tileentity.machine.oil; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.FluidStack; import com.hbm.inventory.container.ContainerMachineCoker; import com.hbm.inventory.fluid.Fluids; @@ -98,10 +100,12 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl tanks[0].setFill(tanks[0].getFill() - fillReq); } } + + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 20); } for(DirPos pos : getConPos()) { - if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java index 13fb8015b..06911f404 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.oil; import java.io.IOException; +import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; @@ -11,8 +12,12 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineOilWell; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IConfigurableMachine; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.world.feature.OilSpot; @@ -22,6 +27,7 @@ import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; public class TileEntityMachineFrackingTower extends TileEntityOilDrillBase implements IFluidAcceptor { @@ -221,4 +227,23 @@ public class TileEntityMachineFrackingTower extends TileEntityOilDrillBase imple public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineOilWell(player.inventory, this); } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_fracking_tower)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 25) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 10) + "%")); + } + if(type == UpgradeType.AFTERBURN) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_BURN, level * 10, level * 50)); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java index c963381a2..19ed18ecd 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java @@ -104,8 +104,8 @@ public class TileEntityMachineFractionTower extends TileEntityLoadedBase impleme private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index e340df841..25d5f4029 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -2,6 +2,9 @@ package com.hbm.tileentity.machine.oil; import java.util.List; +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -13,13 +16,17 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous_ART; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Leaded; import com.hbm.inventory.gui.GUIMachineGasFlare; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import com.hbm.util.ParticleUtil; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardReceiver; @@ -33,9 +40,10 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineGasFlare extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IControlReceiver, IGUIProvider { +public class TileEntityMachineGasFlare extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 100000; @@ -92,15 +100,10 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements if(!worldObj.isRemote) { - this.sendPower(worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.sendPower(worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - this.sendPower(worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); - this.sendPower(worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); - - this.trySubscribe(tank.getTankType(), worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.trySubscribe(tank.getTankType(), worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - this.trySubscribe(tank.getTankType(), worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); - this.trySubscribe(tank.getTankType(), worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); + for(DirPos pos : getConPos()) { + this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } tank.setType(3, slots); tank.loadTank(1, 2, slots); @@ -134,7 +137,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements int eject = Math.min(maxBurn, tank.getFill()); tank.setFill(tank.getFill() - eject); - int penalty = 2; + int penalty = 5; if(!tank.getTankType().hasTrait(FT_Gaseous.class) && !tank.getTankType().hasTrait(FT_Gaseous_ART.class)) penalty = 10; @@ -157,6 +160,11 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements if(worldObj.getTotalWorldTime() % 3 == 0) this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 11, this.zCoord, "hbm:weapon.flamethrowerShoot", 1.5F, 0.75F); + + if(worldObj.getTotalWorldTime() % 20 == 0) { + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 5); + if(tank.getTankType().hasTrait(FT_Leaded.class)) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.HEAVYMETAL, PollutionHandler.HEAVY_METAL_PER_SECOND * 5); + } } } } @@ -213,7 +221,15 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements } } } - + } + + public DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z) + }; } @Override @@ -295,4 +311,27 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineGasFlare(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.EFFECT; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_flare)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.EFFECT) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "+" + (100 * level / 3) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.EFFECT) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java index 2092b4805..4aa306854 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.oil; import java.util.ArrayList; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.FluidStack; @@ -16,7 +17,10 @@ import com.hbm.inventory.recipes.LiquefactionRecipes; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; @@ -29,9 +33,10 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineLiquefactor extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidStandardSender, IGUIProvider { +public class TileEntityMachineLiquefactor extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 100000; @@ -67,7 +72,7 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen int power = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); this.processTime = processTimeBase - (processTimeBase / 4) * speed; - this.usage = (usageBase + (usageBase * speed)) / (power + 1); + this.usage = (usageBase + (usageBase * speed)) / (power + 1); if(this.canProcess()) this.process(); @@ -97,7 +102,7 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -296,4 +301,28 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUILiquefactor(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineOilWell.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineOilWell.java index 3e0c19f8b..798d41873 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineOilWell.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineOilWell.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.oil; import java.io.IOException; +import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; @@ -9,8 +10,12 @@ import com.hbm.explosion.ExplosionLarge; import com.hbm.inventory.container.ContainerMachineOilWell; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.gui.GUIMachineOilWell; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IConfigurableMachine; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.relauncher.Side; @@ -21,6 +26,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.oredict.OreDictionary; @@ -174,4 +180,23 @@ public class TileEntityMachineOilWell extends TileEntityOilDrillBase { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineOilWell(player.inventory, this); } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_well)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 25) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 10) + "%")); + } + if(type == UpgradeType.AFTERBURN) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_BURN, level * 10, level * 50)); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } } 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 fb2a78c4f..dd11a3431 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.oil; import java.io.IOException; +import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; @@ -9,7 +10,11 @@ import com.hbm.blocks.ModBlocks; import com.hbm.inventory.container.ContainerMachineOilWell; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.gui.GUIMachineOilWell; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.tileentity.IConfigurableMachine; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.relauncher.Side; @@ -21,6 +26,7 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.oredict.OreDictionary; @@ -224,4 +230,23 @@ public class TileEntityMachinePumpjack extends TileEntityOilDrillBase { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineOilWell(player.inventory, this); } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_pumpjack)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 25) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 10) + "%")); + } + if(type == UpgradeType.AFTERBURN) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_BURN, level * 10, level * 50)); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java index a345a43d4..27e48d4a1 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java @@ -7,6 +7,8 @@ import java.util.Random; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -24,6 +26,8 @@ import com.hbm.inventory.gui.GUIMachineRefinery; import com.hbm.inventory.recipes.RefineryRecipes; import com.hbm.items.ModItems; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IOverpressurable; import com.hbm.tileentity.IPersistentNBT; @@ -65,6 +69,10 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements public boolean hasExploded = false; public boolean onFire = false; public Explosion lastExplosion = null; + + private AudioWrapper audio; + private int audioTime; + public boolean isOn; private static final int[] slot_access = new int[] {11}; @@ -138,6 +146,8 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements if(!worldObj.isRemote) { + this.isOn = false; + if(this.getBlockMetadata() < 12) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getRotation(ForgeDirection.DOWN); worldObj.removeTileEntity(xCoord, yCoord, zCoord); @@ -174,7 +184,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements for(DirPos pos : getConPos()) { for(int i = 1; i < 5; i++) { if(tanks[i].getFill() > 0) { - this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } @@ -193,6 +203,10 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements for(Entity e : affected) e.setFire(5); Random rand = worldObj.rand; ParticleUtil.spawnGasFlame(worldObj, xCoord + rand.nextDouble(), yCoord + 1.5 + rand.nextDouble() * 3, zCoord + rand.nextDouble(), rand.nextGaussian() * 0.05, 0.1, rand.nextGaussian() * 0.05); + + if(worldObj.getTotalWorldTime() % 20 == 0) { + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 70); + } } } @@ -201,7 +215,57 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements for(int i = 0; i < 5; i++) tanks[i].writeToNBT(data, "" + i); data.setBoolean("exploded", hasExploded); data.setBoolean("onFire", onFire); + data.setBoolean("isOn", this.isOn); this.networkPack(data, 150); + } else { + + if(this.isOn) audioTime = 20; + + if(audioTime > 0) { + + audioTime--; + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + } + } + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.25F, 15F, 1.0F, 20); + } + + @Override + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; } } @@ -211,6 +275,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i); this.hasExploded = nbt.getBoolean("exploded"); this.onFire = nbt.getBoolean("onFire"); + this.isOn = nbt.getBoolean("isOn"); } private void refine() { @@ -233,6 +298,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements } } + this.isOn = true; tanks[0].setFill(tanks[0].getFill() - 100); for(int i = 0; i < stacks.length; i++) @@ -259,6 +325,8 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements this.markDirty(); } + + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 5); this.power -= 5; } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java index c40e904ca..2846293e3 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.machine.oil; +import java.util.List; + +import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerSolidifier; @@ -11,7 +14,9 @@ import com.hbm.inventory.recipes.SolidificationRecipes; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; @@ -25,9 +30,10 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineSolidifier extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider { +public class TileEntityMachineSolidifier extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 100000; @@ -270,4 +276,28 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUISolidifier(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java index 400e5c98f..9fc45de36 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java @@ -7,6 +7,8 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineVacuumDistill; import com.hbm.inventory.recipes.RefineryRecipes; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; @@ -30,12 +32,16 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem public static final long maxPower = 1_000_000; public FluidTank[] tanks; + + private AudioWrapper audio; + private int audioTime; + public boolean isOn; public TileEntityMachineVacuumDistill() { super(11); this.tanks = new FluidTank[5]; - this.tanks[0] = new FluidTank(Fluids.OIL, 64_000); + this.tanks[0] = new FluidTank(Fluids.OIL, 64_000).withPressure(2); this.tanks[1] = new FluidTank(Fluids.HEAVYOIL_VACUUM, 24_000); this.tanks[2] = new FluidTank(Fluids.REFORMATE, 24_000); this.tanks[3] = new FluidTank(Fluids.LIGHTOIL_VACUUM, 24_000); @@ -52,6 +58,8 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem if(!worldObj.isRemote) { + this.isOn = false; + this.updateConnections(); power = Library.chargeTEFromItems(slots, 0, power, maxPower); tanks[0].loadTank(1, 2, slots); @@ -66,21 +74,72 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem for(DirPos pos : getConPos()) { for(int i = 1; i < 5; i++) { if(tanks[i].getFill() > 0) { - this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } NBTTagCompound data = new NBTTagCompound(); data.setLong("power", this.power); + data.setBoolean("isOn", this.isOn); for(int i = 0; i < 5; i++) tanks[i].writeToNBT(data, "" + i); this.networkPack(data, 150); + } else { + + if(this.isOn) audioTime = 20; + + if(audioTime > 0) { + + audioTime--; + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + } + } + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.25F, 15F, 1.0F, 20); + } + + @Override + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; } } @Override public void networkUnpack(NBTTagCompound nbt) { this.power = nbt.getLong("power"); + this.isOn = nbt.getBoolean("isOn"); for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i); } @@ -92,7 +151,8 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem if(tanks[2].getFill() + RefineryRecipes.vac_frac_reform > tanks[2].getMaxFill()) return; if(tanks[3].getFill() + RefineryRecipes.vac_frac_light > tanks[3].getMaxFill()) return; if(tanks[4].getFill() + RefineryRecipes.vac_frac_sour > tanks[4].getMaxFill()) return; - + + this.isOn = true; power -= 10_000; tanks[0].setFill(tanks[0].getFill() - 100); tanks[1].setFill(tanks[1].getFill() + RefineryRecipes.vac_frac_heavy); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java index 7ac708861..4c785a486 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java @@ -17,6 +17,7 @@ import com.hbm.lib.Library; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.BobMathUtil; import com.hbm.util.Tuple; @@ -34,7 +35,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public abstract class TileEntityOilDrillBase extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidStandardTransceiver, IConfigurableMachine, IPersistentNBT, IGUIProvider { +public abstract class TileEntityOilDrillBase extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidStandardTransceiver, IConfigurableMachine, IPersistentNBT, IGUIProvider, IUpgradeInfoProvider { public int indicator = 0; @@ -132,8 +133,8 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple this.fillFluidInit(tanks[1].getTankType()); for(DirPos pos : getConPos()) { - if(tanks[0].getFill() > 0) this.sendFluid(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[0].getFill() > 0) this.sendFluid(tanks[0], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } if(this.power >= this.getPowerReqEff() && this.tanks[0].getFill() < this.tanks[0].getMaxFill() && this.tanks[1].getFill() < this.tanks[1].getMaxFill()) { @@ -382,4 +383,18 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE || type == UpgradeType.AFTERBURN; + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.AFTERBURN) return 3; + if(type == UpgradeType.OVERDRIVE) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java index 90d3cd483..8c06fd658 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java @@ -21,11 +21,8 @@ public abstract class TileEntityPileBase extends TileEntity { public abstract void updateEntity(); protected void castRay(int flux, int range) { - Random rand = worldObj.rand; - int[] vecVals = { 0, 0, 0,}; - vecVals[rand.nextInt(3)] = 1; - Vec3 vec = Vec3.createVectorHelper(vecVals[0], vecVals[1], vecVals[2]); + Vec3 vec = Vec3.createVectorHelper(1, 0, 0); vec.rotateAroundZ((float)(rand.nextDouble() * Math.PI * 2D)); vec.rotateAroundY((float)(rand.nextDouble() * Math.PI * 2D)); vec.rotateAroundX((float)(rand.nextDouble() * Math.PI * 2D)); @@ -47,13 +44,14 @@ public abstract class TileEntityPileBase extends TileEntity { prevY = y; prevZ = z; - /*if(i == range) { + /*if(i == range || i == 1) { NBTTagCompound data2 = new NBTTagCompound(); data2.setString("type", "vanillaExt"); - data2.setString("mode", "greendust"); - data2.setDouble("posX", xCoord + 0.5 + vec.xCoord * range); - data2.setDouble("posY", yCoord + 0.5 + vec.yCoord * range); - data2.setDouble("posZ", zCoord + 0.5 + vec.zCoord * range); + data2.setString("mode", i == range ? "greendust" : + i == 1 ? "reddust" : "bluedust"); + data2.setDouble("posX", xCoord + 0.5 + vec.xCoord * i); + data2.setDouble("posY", yCoord + 0.5 + vec.yCoord * i); + data2.setDouble("posZ", zCoord + 0.5 + vec.zCoord * i); MainRegistry.proxy.effectNT(data2); }*/ @@ -91,7 +89,7 @@ public abstract class TileEntityPileBase extends TileEntity { if(entities != null) for(EntityLivingBase e : entities) { - ContaminationUtil.contaminate(e, HazardType.RADIATION, ContaminationType.CREATIVE, flux / 2); + ContaminationUtil.contaminate(e, HazardType.RADIATION, ContaminationType.CREATIVE, flux / 4F); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java index 7a48e4f83..15233ad0c 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java @@ -2,9 +2,14 @@ package com.hbm.tileentity.machine.pile; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; +import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import api.hbm.block.IPileNeutronReceiver; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutronReceiver { @@ -13,14 +18,14 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr public int neutrons; public int lastNeutrons; public int progress; - public static final int maxProgress = GeneralConfig.enable528 ? 75000 : 50000; + public static final int maxProgress = GeneralConfig.enable528 ? 75000 : 50000; //might double to reduce compact setup's effectiveness @Override public void updateEntity() { if(!worldObj.isRemote) { dissipateHeat(); - react(); + checkRedstone(react()); transmute(); if(this.heat >= this.maxHeat) { @@ -28,32 +33,54 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.gas_radon_dense); } + if(worldObj.rand.nextFloat() * 2F <= this.heat / (float)this.maxHeat) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", "smoke"); + data.setDouble("mY", 0.05); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, yCoord + 1, zCoord + 0.25 + worldObj.rand.nextDouble() * 0.5), + new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 20)); + MainRegistry.proxy.effectNT(data); + } + if(this.progress >= this.maxProgress) { worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.block_graphite_plutonium, this.getBlockMetadata() & 7, 3); } } + } private void dissipateHeat() { this.heat -= (this.getBlockMetadata() & 4) == 4 ? heat * 0.065 : heat * 0.05; //remove 5% of the stored heat per tick; 6.5% for windscale } - private void react() { + private int react() { int reaction = (int) (this.neutrons * (1D - ((double)this.heat / (double)this.maxHeat) * 0.5D)); //max heat reduces reaction by 50% due to thermal expansion this.lastNeutrons = this.neutrons; this.neutrons = 0; + int lastProgress = this.progress; + this.progress += reaction; if(reaction <= 0) - return; + return lastProgress; this.heat += reaction; for(int i = 0; i < 12; i++) this.castRay((int) Math.max(reaction * 0.25, 1), 5); + + return lastProgress; + } + + private void checkRedstone(int lastProgress) { + int lastLevel = MathHelper.clamp_int((lastProgress * 16) / maxProgress, 0, 15); + int newLevel = MathHelper.clamp_int((progress * 16) / maxProgress, 0, 15); + if(lastLevel != newLevel) + worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, this.getBlockType()); } private void transmute() { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java index 344464db8..823259e3d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -65,7 +65,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece @Override public void updateEntity() { - + if(worldObj.isRemote) { lastTiltFront = tiltFront; lastTiltLeft = tiltLeft; @@ -339,13 +339,13 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return "rbmk_crane"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true, limit = 2) //yknow computers are more efficient than humans, lets give an incentive to use OC @Optional.Method(modid = "OpenComputers") public Object[] move(Context context, Arguments args) { - if(setUpCrane == true) { - String textbruh = args.checkString(0); - - switch(textbruh) { + if(setUpCrane) { + String direction = args.checkString(0); + + switch(direction) { case "up": tiltFront = 30; if(!worldObj.isRemote) posFront += speed; @@ -369,17 +369,17 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return new Object[] {"Crane not found"}; } - @Callback(direct = true, limit = 4) + @Callback @Optional.Method(modid = "OpenComputers") public Object[] load(Context context, Arguments args) { - if (setUpCrane == true) { + if (setUpCrane) { goesDown = true; return new Object[] {}; } return new Object[] {"Crane not found"}; } - - @Callback(direct = true, limit = 4) + + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getDepletion(Context context, Arguments args) { if(loadedItem != null && loadedItem.getItem() instanceof ItemRBMKRod) { @@ -388,7 +388,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getXenonPoison(Context context, Arguments args) { if(loadedItem != null && loadedItem.getItem() instanceof ItemRBMKRod) { @@ -396,4 +396,14 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece } return new Object[] {"N/A"}; } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") //if this doesnt work im going to die + public Object[] getCranePos(Context context, Arguments args) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + ForgeDirection left = dir.getRotation(ForgeDirection.DOWN); + int x = (int)Math.floor(this.centerX - dir.offsetX * this.posFront - left.offsetX * this.posLeft + 0.5D); + int z = (int)Math.floor(this.centerZ - dir.offsetZ * this.posFront - left.offsetZ * this.posLeft + 0.5D); + return new Object[] {x, z}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java index 69610b38f..20512c206 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java @@ -2,14 +2,8 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; -import cpw.mods.fml.common.Optional; -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; -@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKAbsorber extends TileEntityRBMKBase implements SimpleComponent { +public class TileEntityRBMKAbsorber extends TileEntityRBMKBase { @Override public void onMelt(int reduce) { @@ -23,24 +17,6 @@ public class TileEntityRBMKAbsorber extends TileEntityRBMKBase implements Simple super.onMelt(reduce); } - @Override - public String getComponentName() { - return "rbmk_absorber_rod"; - } - - @Callback(direct = true, limit = 4) - @Optional.Method(modid = "OpenComputers") - public Object[] getHeat(Context context, Arguments args) { - return new Object[] {heat}; - } - - - @Callback(direct = true, limit = 4) - @Optional.Method(modid = "OpenComputers") - public Object[] getCoordinates(Context context, Arguments args) { - return new Object[] {xCoord, yCoord, zCoord}; - } - @Override public ColumnType getConsoleType() { return ColumnType.ABSORBER; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index bd46536de..c0a883300 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -5,6 +5,7 @@ import api.hbm.fluid.IFluidUser; import api.hbm.fluid.IPipeNet; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; @@ -95,7 +96,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I this.trySubscribe(feed.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); for(DirPos pos : getOutputPos()) { - if(this.steam.getFill() > 0) this.sendFluid(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.steam.getFill() > 0) this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -263,17 +264,21 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I public void receiveControl(NBTTagCompound data) { if(data.hasKey("compression")) { - - FluidType type = steam.getTankType(); - if(type == Fluids.STEAM) { steam.setTankType(Fluids.HOTSTEAM); steam.setFill(steam.getFill() / 10); } - if(type == Fluids.HOTSTEAM) { steam.setTankType(Fluids.SUPERHOTSTEAM); steam.setFill(steam.getFill() / 10); } - if(type == Fluids.SUPERHOTSTEAM) { steam.setTankType(Fluids.ULTRAHOTSTEAM); steam.setFill(steam.getFill() / 10); } - if(type == Fluids.ULTRAHOTSTEAM) { steam.setTankType(Fluids.STEAM); steam.setFill(Math.min(steam.getFill() * 1000, steam.getMaxFill())); } - - this.markDirty(); + this.cyceCompressor(); } } + public void cyceCompressor() { + + FluidType type = steam.getTankType(); + if(type == Fluids.STEAM) { steam.setTankType(Fluids.HOTSTEAM); steam.setFill(steam.getFill() / 10); } + if(type == Fluids.HOTSTEAM) { steam.setTankType(Fluids.SUPERHOTSTEAM); steam.setFill(steam.getFill() / 10); } + if(type == Fluids.SUPERHOTSTEAM) { steam.setTankType(Fluids.ULTRAHOTSTEAM); steam.setFill(steam.getFill() / 10); } + if(type == Fluids.ULTRAHOTSTEAM) { steam.setTankType(Fluids.STEAM); steam.setFill(Math.min(steam.getFill() * 1000, steam.getMaxFill())); } + + this.markDirty(); + } + @Override public void onMelt(int reduce) { @@ -331,87 +336,60 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I public String getComponentName() { return "rbmk_boiler"; } - - @Callback(direct = true, limit = 8) + + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSteam(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSteamMax(Context context, Arguments args) { return new Object[] {steam.getMaxFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getWater(Context context, Arguments args) { return new Object[] {feed.getFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getWaterMax(Context context, Arguments args) { return new Object[] {feed.getMaxFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - FluidType type = steam.getTankType(); - Object type_1; - if(type == Fluids.STEAM) {type_1 = "0";} - else if(type == Fluids.HOTSTEAM) {type_1 = "1";} - else if(type == Fluids.SUPERHOTSTEAM) {type_1 = "2";} - else if(type == Fluids.ULTRAHOTSTEAM) {type_1 = "3";} - else {type_1 = "Steam out-of-bounds";} + int type_1 = (int) CompatHandler.steamTypeToInt(steam.getTankType())[0]; return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill(), type_1, xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSteamType(Context context, Arguments args) { - FluidType type = steam.getTankType(); - if(type == Fluids.STEAM) {return new Object[] {"0"};} - else if(type == Fluids.HOTSTEAM) {return new Object[] {"1"};} - else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {"2"};} - else if(type == Fluids.ULTRAHOTSTEAM) {return new Object[] {"3"};} - else {return new Object[] {"Unknown Error"};} + return CompatHandler.steamTypeToInt(steam.getTankType()); } - @Callback(direct = true, limit = 8) + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setSteamType(Context context, Arguments args) { int type = args.checkInteger(0); - if(type > 3) { - type = 3; - } else if(type < 0) { - type = 0; - } - if(type == 0) { - steam.setTankType(Fluids.STEAM); - return new Object[] {"true"}; - } else if(type == 1) { - steam.setTankType(Fluids.HOTSTEAM); - return new Object[] {"true"}; - } else if(type == 2) { - steam.setTankType(Fluids.SUPERHOTSTEAM); - return new Object[] {"true"}; - } else { - steam.setTankType(Fluids.ULTRAHOTSTEAM); - return new Object[] {"true"}; - } + steam.setTankType(CompatHandler.intToSteamType(type)); + return new Object[] {true}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index f44cfb151..ee5690703 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.rbmk; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; import java.util.Set; import com.hbm.interfaces.IControlReceiver; @@ -11,6 +12,7 @@ import com.hbm.inventory.gui.GUIRBMKConsole; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual.RBMKColor; +import com.hbm.util.EnumUtil; import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; @@ -32,7 +34,8 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon private int targetY; private int targetZ; - public int[] fluxBuffer = new int[20]; + public static final int fluxDisplayBuffer = 60; + public int[] fluxBuffer = new int[fluxDisplayBuffer]; //made this one-dimensional because it's a lot easier to serialize public RBMKColumn[] columns = new RBMKColumn[15 * 15]; @@ -103,7 +106,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon this.fluxBuffer[i] = this.fluxBuffer[i + 1]; } - this.fluxBuffer[19] = (int) flux; + this.fluxBuffer[this.fluxBuffer.length - 1] = (int) flux; } @SuppressWarnings("incomplete-switch") //shut up @@ -286,6 +289,40 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon Integer[] cols = list.toArray(new Integer[0]); this.screens[slot].columns = cols; } + + if(data.hasKey("assignColor")) { + int color = data.getByte("assignColor"); + int[] cols = data.getIntArray("cols"); + + for(int i : cols) { + int x = i % 15 - 7; + int z = i / 15 - 7; + + TileEntity te = worldObj.getTileEntity(targetX + x, targetY, targetZ + z); + + if(te instanceof TileEntityRBMKControlManual) { + TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; + rod.color = EnumUtil.grabEnumSafely(RBMKColor.class, color); + te.markDirty(); + } + } + } + + if(data.hasKey("compressor")) { + int[] cols = data.getIntArray("cols"); + + for(int i : cols) { + int x = i % 15 - 7; + int z = i / 15 - 7; + + TileEntity te = worldObj.getTileEntity(targetX + x, targetY, targetZ + z); + + if(te instanceof TileEntityRBMKBoiler) { + TileEntityRBMKBoiler rod = (TileEntityRBMKBoiler) te; + rod.cyceCompressor(); + } + } + } } @Override @@ -381,7 +418,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon case BOILER: stats.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("rbmk.boiler.water", this.data.getInteger("water"), this.data.getInteger("maxWater"))); stats.add(EnumChatFormatting.WHITE + I18nUtil.resolveKey("rbmk.boiler.steam", this.data.getInteger("steam"), this.data.getInteger("maxSteam"))); - stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.boiler.type", I18nUtil.resolveKey(Fluids.fromID(this.data.getShort("type")).getUnlocalizedName()))); + stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.boiler.type", Fluids.fromID(this.data.getShort("type")).getLocalizedName())); break; case CONTROL: @@ -389,7 +426,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon short col = this.data.getShort("color"); if(col >= 0 && col < RBMKColor.values().length) - stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.control." + RBMKColor.values()[col].name().toLowerCase())); + stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.control." + RBMKColor.values()[col].name().toLowerCase(Locale.US))); } case CONTROL_AUTO: @@ -397,10 +434,10 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon break; case HEATEX: - stats.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey(I18nUtil.resolveKey(Fluids.fromID(this.data.getShort("type")).getUnlocalizedName()) + " " + - this.data.getInteger("water") + "/" + this.data.getInteger("maxWater") + "mB")); - stats.add(EnumChatFormatting.RED + I18nUtil.resolveKey(I18nUtil.resolveKey(Fluids.fromID(this.data.getShort("hottype")).getUnlocalizedName()) + " " + - this.data.getInteger("steam") + "/" + this.data.getInteger("maxSteam") + "mB")); + stats.add(EnumChatFormatting.BLUE + Fluids.fromID(this.data.getShort("type")).getLocalizedName() + " " + + this.data.getInteger("water") + "/" + this.data.getInteger("maxWater") + "mB"); + stats.add(EnumChatFormatting.RED + Fluids.fromID(this.data.getShort("hottype")).getLocalizedName() + " " + + this.data.getInteger("steam") + "/" + this.data.getInteger("maxSteam") + "mB"); break; } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java index 8f23e5555..076e5afc6 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -9,6 +9,7 @@ import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.SimpleComponent; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent { @@ -126,46 +127,41 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im return "rbmk_control_rod"; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getLevel(Context context, Arguments args) { return new Object[] {getMult() * 100}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTargetLevel(Context context, Arguments args) { return new Object[] {targetLevel * 100}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, getMult() * 100, targetLevel * 100, xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { double newLevel = args.checkDouble(0)/100.0; - if (newLevel > 1.0) { - newLevel = 1.0; - } else if (newLevel < 0.0) { - newLevel = 0.0; - } - targetLevel = newLevel; + targetLevel = MathHelper.clamp_double(newLevel, 0, 1); return new Object[] {}; } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java index d9fb3bfe0..1afb0cc8d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java @@ -133,7 +133,7 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement return data; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getColor(Context context, Arguments args) { return new Object[] {this.color}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java index b82bc546b..715eba42f 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -149,31 +149,31 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc return "rbmk_cooler"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[]{heat}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCryo(Context context, Arguments args) { return new Object[]{tank.getFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCryoMax(Context context, Arguments args) { return new Object[]{tank.getMaxFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[]{heat, tank.getFill(), tank.getMaxFill(), xCoord, yCoord, zCoord}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java index 3ddb02d04..f74401c8c 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -65,9 +65,10 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I HeatingStep step = trait.getFirstStep(); steam.setTankType(step.typeProduced); double tempRange = this.heat - steam.getTankType().temperature; + double eff = trait.getEfficiency(HeatingType.HEATEXCHANGER); - if(tempRange > 0) { - double TU_PER_DEGREE = 2_000D; //based on 1mB of water absorbing 200 TU as well as 0.1°C from an RBMK column + if(tempRange > 0 && eff > 0) { + double TU_PER_DEGREE = 2_000D * eff; //based on 1mB of water absorbing 200 TU as well as 0.1°C from an RBMK column int inputOps = feed.getFill() / step.amountReq; int outputOps = (steam.getMaxFill() - steam.getFill()) / step.amountProduced; int tempOps = (int) Math.floor((tempRange * TU_PER_DEGREE) / step.heatReq); @@ -86,7 +87,7 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I this.trySubscribe(feed.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); for(DirPos pos : getOutputPos()) { - if(this.steam.getFill() > 0) this.sendFluid(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.steam.getFill() > 0) this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -280,54 +281,54 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I return "rbmk_heater"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFill(Context context, Arguments args) { return new Object[] {feed.getFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFillMax(Context context, Arguments args) { return new Object[] {feed.getMaxFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getExport(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getExportMax(Context context, Arguments args) { return new Object[] {steam.getMaxFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFillType(Context context, Arguments args) { - return new Object[] {feed.getTankType().getID()}; + return new Object[] {feed.getTankType().getName()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getExportType(Context context, Arguments args) { - return new Object[] {steam.getTankType().getID()}; + return new Object[] {steam.getTankType().getName()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getID(), steam.getTankType().getID(), xCoord, yCoord, zCoord}; + return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getName(), steam.getTankType().getName(), xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java index ddd96c7de..be66e767d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java @@ -2,8 +2,6 @@ package com.hbm.tileentity.machine.rbmk; import api.hbm.fluid.IFluidStandardReceiver; import com.hbm.blocks.machine.rbmk.RBMKBase; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.tileentity.TileEntityLoadedBase; @@ -13,12 +11,12 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityRBMKInlet extends TileEntityLoadedBase implements IFluidAcceptor, IFluidStandardReceiver { +public class TileEntityRBMKInlet extends TileEntityLoadedBase implements IFluidStandardReceiver { public FluidTank water; public TileEntityRBMKInlet() { - water = new FluidTank(Fluids.WATER, 32000, 0); + water = new FluidTank(Fluids.WATER, 32000); } @Override @@ -63,33 +61,6 @@ public class TileEntityRBMKInlet extends TileEntityLoadedBase implements IFluidA this.water.writeToNBT(nbt, "tank"); } - @Override - public void setFillForSync(int fill, int index) { - if(index == 0) water.setFill(fill); - } - - @Override - public void setFluidFill(int fill, FluidType type) { - if(type == Fluids.WATER) water.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - if(index == 0) water.setTankType(type); - } - - @Override - public int getFluidFill(FluidType type) { - if(type == Fluids.WATER) return water.getFill(); - return 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - if(type == Fluids.WATER) return water.getMaxFill(); - return 0; - } - @Override public FluidTank[] getAllTanks() { return new FluidTank[] {water}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java index bbb5ff2e0..1b74e6e92 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -54,7 +54,7 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement } for(DirPos pos : getOutputPos()) { - if(this.gas.getFill() > 0) this.sendFluid(gas.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.gas.getFill() > 0) this.sendFluid(gas, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -226,34 +226,40 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement return "rbmk_outgasser"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getGas(Context context, Arguments args) { return new Object[] {gas.getFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getGasMax(Context context, Arguments args) { return new Object[] {gas.getMaxFill()}; } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getGasType(Context context, Arguments args) { + return new Object[] {gas.getTankType().getID()}; + } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getProgress(Context context, Arguments args) { return new Object[] {progress}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {gas.getFill(), gas.getMaxFill(), progress, xCoord, yCoord, zCoord}; + return new Object[] {gas.getFill(), gas.getMaxFill(), progress, gas.getTankType().getID(), xCoord, yCoord, zCoord}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java index f852e31bd..259ac0b4c 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java @@ -1,16 +1,9 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.ArrayList; -import java.util.List; - import api.hbm.fluid.IFluidStandardSender; import com.hbm.blocks.machine.rbmk.RBMKBase; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; -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.tileentity.TileEntityLoadedBase; import net.minecraft.block.Block; @@ -18,13 +11,12 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluidSource, IFluidStandardSender { +public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluidStandardSender { - public List list = new ArrayList(); public FluidTank steam; public TileEntityRBMKOutlet() { - steam = new FluidTank(Fluids.SUPERHOTSTEAM, 32000, 0); + steam = new FluidTank(Fluids.SUPERHOTSTEAM, 32000); } @Override @@ -53,8 +45,7 @@ public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluid } } - fillFluidInit(this.steam.getTankType()); - this.sendFluidToAll(steam.getTankType(), this); + fillFluidInit(); } } @@ -70,49 +61,9 @@ public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluid this.steam.writeToNBT(nbt, "tank"); } - @Override - public void setFillForSync(int fill, int index) { - steam.setFill(fill); - } - - @Override - public void setFluidFill(int fill, FluidType type) { - steam.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - steam.setTankType(type); - } - - @Override - public int getFluidFill(FluidType type) { - return steam.getFill(); - } - - @Override - public void fillFluidInit(FluidType type) { + public void fillFluidInit() { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - fillFluid(this.xCoord + dir.offsetX, this.yCoord + dir.offsetY, this.zCoord + dir.offsetZ, getTact(), type); - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - @Deprecated - public boolean getTact() { return worldObj.getTotalWorldTime() % 2 == 0; } - - @Override - public List getFluidList(FluidType type) { - return this.list; - } - - @Override - public void clearFluidList(FluidType type) { - this.list.clear(); + this.sendFluid(steam, worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java index 91ab94a89..ed5b1afc0 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java @@ -2,14 +2,8 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; -import cpw.mods.fml.common.Optional; -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; -@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKReflector extends TileEntityRBMKBase implements SimpleComponent { +public class TileEntityRBMKReflector extends TileEntityRBMKBase { @Override public void onMelt(int reduce) { @@ -22,22 +16,6 @@ public class TileEntityRBMKReflector extends TileEntityRBMKBase implements Simpl super.onMelt(reduce); } - @Override - public String getComponentName() { - return "rbmk_reflector_rod"; - } - - @Callback(direct = true, limit = 4) - @Optional.Method(modid = "OpenComputers") - public Object[] getHeat(Context context, Arguments args) { - return new Object[] {heat}; - } - - @Callback(direct = true, limit = 4) - @Optional.Method(modid = "OpenComputers") - public Object[] getCoordinates(Context context, Arguments args) { - return new Object[] {xCoord, yCoord, zCoord}; - } @Override public ColumnType getConsoleType() { 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 7c161a15e..e1a0e3384 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -11,6 +11,8 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.Compat; +import com.hbm.util.ParticleUtil; + import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -20,7 +22,6 @@ 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.init.Blocks; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -83,11 +84,20 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM super.updateEntity(); - if(this.heat > this.maxHeat() && !RBMKDials.getMeltdownsDisabled(worldObj)) { - this.meltdown(); + if(this.heat > this.maxHeat()) { + + if(RBMKDials.getMeltdownsDisabled(worldObj)) { + ParticleUtil.spawnGasFlame(worldObj, xCoord + 0.5, yCoord + RBMKDials.getColumnHeight(worldObj) + 0.5, zCoord + 0.5, 0, 0.2, 0); + } else { + this.meltdown(); + } + this.fluxFast = 0; + this.fluxSlow = 0; return; } + if(this.heat > 10_000) this.heat = 10_000; + //for spreading, we want the buffered flux to be 0 because we want to know exactly how much gets reflected back this.fluxFast = 0; this.fluxSlow = 0; @@ -296,12 +306,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM if(corium) { for(int i = h; i >= 0; i--) { - - if(i <= h + 1 - reduce) { - worldObj.setBlock(xCoord, yCoord + i, zCoord, ModBlocks.corium_block); - } else { - worldObj.setBlock(xCoord, yCoord + i, zCoord, Blocks.air); - } + worldObj.setBlock(xCoord, yCoord + i, zCoord, ModBlocks.corium_block, 5, 3); worldObj.markBlockForUpdate(xCoord, yCoord + i, zCoord); } @@ -384,25 +389,25 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return "rbmk_fuel_rod"; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluxSlow(Context context, Arguments args) { return new Object[] {fluxSlow}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluxFast(Context context, Arguments args) { return new Object[] {fluxFast}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getDepletion(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -411,7 +416,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getXenonPoison(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -420,7 +425,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoreHeat(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -429,7 +434,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSkinHeat(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -438,28 +443,46 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { + return new Object[] {slots[0].getItem().getUnlocalizedName()}; + } + return new Object[] {"N/A"}; + } + + @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; 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, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; + 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}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getModerated(Context context, Arguments args) { return new Object[] {((RBMKRod)this.getBlockType()).moderated}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java index 11fba927a..a670b6c09 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java @@ -4,21 +4,15 @@ import com.hbm.inventory.container.ContainerRBMKStorage; import com.hbm.inventory.gui.GUIRBMKStorage; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; -import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -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; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements IRBMKLoadable, SimpleComponent { +public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements IRBMKLoadable { public TileEntityRBMKStorage() { super(12); @@ -91,35 +85,6 @@ public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements slots[0] = null; } - @Override - public String getComponentName() { - return "rbmk_storage_rod"; - } - @Callback(direct = true, limit = 4) - @Optional.Method(modid = "OpenComputers") - public Object[] getCoordinates(Context context, Arguments args) { - return new Object[] {xCoord, yCoord, zCoord}; - } - - @Callback(direct = true, limit = 4) - @Optional.Method(modid = "OpenComputers") - public Object[] getHeat(Context context, Arguments args) { - return new Object[] {heat}; - } - - - @Callback(direct = true, limit = 4) - @Optional.Method(modid = "OpenComputers") - public Object[] getStored(Context context, Arguments args) { - return new Object[] {slots[0], slots[1], slots[2], slots[3], slots[4], slots[5], slots[6], slots[7], slots[8], slots[9], slots[10], slots[11]}; - } - - @Callback(direct = true, limit = 4) - @Optional.Method(modid = "OpenComputers") - public Object[] getInfo(Context context, Arguments args) { - return new Object[] {heat, slots[0], slots[1], slots[2], slots[3], slots[4], slots[5], slots[6], slots[7], slots[8], slots[9], slots[10], slots[11], xCoord, yCoord, zCoord}; - } - @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKStorage(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 9c26e28d9..66ea25fcb 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -1,10 +1,6 @@ package com.hbm.tileentity.machine.storage; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - +import api.hbm.fluid.*; import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; @@ -21,14 +17,13 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.fauxpointtwelve.DirPos; - -import api.hbm.fluid.IFluidConductor; -import api.hbm.fluid.IFluidConnector; -import api.hbm.fluid.IFluidStandardTransceiver; -import api.hbm.fluid.IPipeNet; -import api.hbm.fluid.PipeNet; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -36,10 +31,17 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.World; -public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) +public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, SimpleComponent, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { public FluidTank tank; public short mode = 0; @@ -47,6 +49,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc public int age = 0; public List list = new ArrayList(); protected boolean sendingBrake = false; + public byte lastRedstone = 0; public TileEntityBarrel() { super(6); @@ -63,23 +66,54 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc return "container.barrel"; } + public byte getComparatorPower() { + if(tank.getFill() == 0) return 0; + double frac = (double) tank.getFill() / (double) tank.getMaxFill() * 15D; + return (byte) (MathHelper.clamp_int((int) frac + 1, 0, 15)); + } + + @Override + public long getDemand(FluidType type, int pressure) { + + if(this.mode == 2 || this.mode == 3 || this.sendingBrake) + return 0; + + if(tank.getPressure() != pressure) return 0; + + return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0; + } + + @Override + public long transferFluid(FluidType type, int pressure, long fluid) { + long toTransfer = Math.min(getDemand(type, pressure), fluid); + tank.setFill(tank.getFill() + (int) toTransfer); + return fluid - toTransfer; + } + @Override public void updateEntity() { if(!worldObj.isRemote) { - + + byte comp = this.getComparatorPower(); //do comparator shenanigans + if(comp != this.lastRedstone) + this.markDirty(); + this.lastRedstone = comp; + tank.setType(0, 1, slots); tank.loadTank(2, 3, slots); tank.unloadTank(4, 5, slots); tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); this.sendingBrake = true; - tank.setFill(transmitFluidFairly(worldObj, tank.getTankType(), this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); + tank.setFill(transmitFluidFairly(worldObj, tank, this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); this.sendingBrake = false; age++; - if(age >= 20) + if(age >= 20) { age = 0; + this.markChanged(); + } if((mode == 1 || mode == 2) && (age == 9 || age == 19)) fillFluidInit(tank.getTankType()); @@ -105,10 +139,12 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc }; } - protected static int transmitFluidFairly(World world, FluidType type, IFluidConnector that, int fill, boolean connect, boolean send, DirPos[] connections) { + protected static int transmitFluidFairly(World world, FluidTank tank, IFluidConnector that, int fill, boolean connect, boolean send, DirPos[] connections) { Set nets = new HashSet(); Set consumers = new HashSet(); + FluidType type = tank.getTankType(); + int pressure = tank.getPressure(); for(DirPos pos : connections) { @@ -133,6 +169,8 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc if(fill > 0 && send) { List con = new ArrayList(); con.addAll(consumers); + + con.removeIf(x -> x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid()); if(PipeNet.trackingInstances == null) { PipeNet.trackingInstances = new ArrayList(); @@ -143,7 +181,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc if(x instanceof PipeNet) PipeNet.trackingInstances.add((PipeNet) x); }); - fill = (int) PipeNet.fairTransfer(con, type, fill); + fill = (int) PipeNet.fairTransfer(con, type, pressure, fill); } //resubscribe to buffered nets, if necessary @@ -349,4 +387,33 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIBarrel(player.inventory, this); } + + @Override + public String getComponentName() { + return "ntm_fluid_tank"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluidStored(Context context, Arguments args) { + return new Object[] {tank.getFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxStored(Context context, Arguments args) { + return new Object[] {tank.getMaxFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getTypeStored(Context context, Arguments args) { + return new Object[] {tank.getTankType().getName()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateIron.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateIron.java index aec9bf3f2..23e079344 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateIron.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateIron.java @@ -31,6 +31,4 @@ public class TileEntityCrateIron extends TileEntityCrateBase { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICrateIron(player.inventory, this); } - - } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateSteel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateSteel.java index 940f689c6..abb9cf0cb 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateSteel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateSteel.java @@ -8,10 +8,9 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.ISidedInventory; import net.minecraft.world.World; -public class TileEntityCrateSteel extends TileEntityCrateBase implements ISidedInventory { +public class TileEntityCrateSteel extends TileEntityCrateBase { public TileEntityCrateSteel() { super(54); diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTemplate.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTemplate.java new file mode 100644 index 000000000..c22a6e669 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTemplate.java @@ -0,0 +1,34 @@ +package com.hbm.tileentity.machine.storage; + +import com.hbm.inventory.container.ContainerCrateTemplate; +import com.hbm.inventory.gui.GUICrateTemplate; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.world.World; + +public class TileEntityCrateTemplate extends TileEntityCrateBase { + + public TileEntityCrateTemplate() { + super(27); + } + + @Override + public String getInventoryName() { + return this.hasCustomInventoryName() ? this.customName : "container.crateTemplate"; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerCrateTemplate(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUICrateTemplate(player.inventory, this); + } +} 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 1043fb572..c27670d37 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -1,24 +1,14 @@ package com.hbm.tileentity.machine.storage; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - +import api.hbm.energy.*; import com.hbm.blocks.machine.MachineBattery; +import com.hbm.config.GeneralConfig; import com.hbm.inventory.container.ContainerMachineBattery; import com.hbm.inventory.gui.GUIMachineBattery; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; - -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyConductor; -import api.hbm.energy.IEnergyConnector; -import api.hbm.energy.IEnergyUser; -import api.hbm.energy.IPowerNet; -import api.hbm.energy.PowerNet; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -36,12 +26,19 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyUser, IPersistentNBT, SimpleComponent, IGUIProvider { public long[] log = new long[20]; public long delta = 0; public long power = 0; + public long prevPowerState = 0; + public int pingPongTicks = 0; //0: input only //1: buffer @@ -186,8 +183,23 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I this.log[i - 1] = this.log[i]; } + if(GeneralConfig.enable528) { + long threshold = this.getMaxPower() / 3; + if(Math.abs(prevPower - power) > threshold && Math.abs(prevPower - prevPowerState) > threshold) { + this.pingPongTicks++; + if(this.pingPongTicks > 10) { + worldObj.func_147480_a(xCoord, yCoord, zCoord, false); + worldObj.newExplosion(null, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 10F, false, false); + } + } else { + if(this.pingPongTicks > 0) this.pingPongTicks--; + } + } + this.log[19] = avg; + prevPowerState = power; + NBTTagCompound nbt = new NBTTagCompound(); nbt.setLong("power", avg); nbt.setLong("delta", delta); @@ -233,7 +245,19 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I if(this.power > 0 && (mode == mode_buffer || mode == mode_output)) { List con = new ArrayList(); con.addAll(consumers); - this.power = PowerNet.fairTransfer(con, this.power); + + if(PowerNet.trackingInstances == null) { + PowerNet.trackingInstances = new ArrayList(); + } + PowerNet.trackingInstances.clear(); + + nets.forEach(x -> { + if(x instanceof PowerNet) PowerNet.trackingInstances.add((PowerNet) x); + }); + + long toSend = Math.min(this.power, this.getMaxTransfer()); + long powerRemaining = this.power - toSend; + this.power = PowerNet.fairTransfer(con, toSend) + powerRemaining; } //resubscribe to buffered nets, if necessary @@ -242,7 +266,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I } } - protected void transmitPower() { + @Deprecated protected void transmitPower() { short mode = (short) this.getRelevantMode(); @@ -262,9 +286,17 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I if(mode == mode_buffer || mode == mode_output) { if(te instanceof IEnergyConnector) { IEnergyConnector con = (IEnergyConnector) te; + + long max = getMaxTransfer(); + long toTransfer = Math.min(max, this.power); + long remainder = this.power - toTransfer; + this.power = toTransfer; + long oldPower = this.power; long transfer = this.power - con.transferPower(this.power); this.power = oldPower - transfer; + + power += remainder; } } @@ -284,6 +316,10 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I } } } + + public long getMaxTransfer() { + return this.getMaxPower() / 20; + } @Override public void networkUnpack(NBTTagCompound nbt) { @@ -326,24 +362,29 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I */ @Override public long transferPower(long power) { - - int mode = this.getRelevantMode(); - if(mode == mode_output || mode == mode_none) { - return power; + long overshoot = 0; + + // if power exceeds our transfer limit, truncate + if(power > getMaxTransfer()) { + overshoot += power - getMaxTransfer(); + power = getMaxTransfer(); } - this.power += power; + // this check is in essence the same as the default implementation, but re-arranged to never overflow the int64 range + // if the remaining power exceeds the power cap, truncate again + long freespace = this.getMaxPower() - this.getPower(); + + if(freespace < power) { + overshoot += power - freespace; + power = freespace; + } + + // what remains is sure to not exceed the transfer limit and the power cap (and therefore the int64 range) + this.setPower(this.getPower() + power); this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); - if(this.power > this.getMaxPower()) { - - long overshoot = this.power - this.getMaxPower(); - this.power = this.getMaxPower(); - return overshoot; - } - - return 0; + return overshoot; } @Override @@ -355,7 +396,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I return 0; } - return Math.max(getMaxPower() - getPower(), 0); + return Math.min(Math.max(getMaxPower() - getPower(), 0), this.getMaxTransfer()); } @Override @@ -376,22 +417,16 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I // do some opencomputer stuff @Override public String getComponentName() { - return "ntm_energy_storage"; // need a way to somehow detect the first word of the energy storage block so people wont get confused when it comes to multiple energy storage blocks + return "ntm_energy_storage"; //ok if someone else can figure out how to do this that'd be nice (change the component name based on the type of storage block) } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") - public Object[] getEnergyStored(Context context, Arguments args) { - return new Object[] {getPower()}; + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; } - @Callback - @Optional.Method(modid = "OpenComputers") - public Object[] getMaxEnergy(Context context, Arguments args) { - return new Object[] {getMaxPower()}; - } - - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; @@ -401,6 +436,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I public void writeNBT(NBTTagCompound nbt) { NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); + data.setLong("prevPowerState", prevPowerState); data.setShort("redLow", redLow); data.setShort("redHigh", redHigh); data.setInteger("priority", this.priority.ordinal()); @@ -411,6 +447,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I public void readNBT(NBTTagCompound nbt) { NBTTagCompound data = nbt.getCompoundTag(NBT_PERSISTENT_KEY); this.power = data.getLong("power"); + this.prevPowerState = data.getLong("prevPowerState"); this.redLow = data.getShort("redLow"); this.redHigh = data.getShort("redHigh"); this.priority = ConnectionPriority.values()[data.getInteger("priority")]; 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 541e4c9ad..3ece44aca 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java @@ -1,9 +1,16 @@ package com.hbm.tileentity.machine.storage; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import com.hbm.lib.Library; import api.hbm.energy.IEnergyConductor; import api.hbm.energy.IEnergyConnector; +import api.hbm.energy.IPowerNet; +import api.hbm.energy.PowerNet; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; @@ -23,18 +30,40 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { if(!worldObj.isRemote) { - this.transmitPower(); + long prevPower = this.power; - power = Library.chargeTEFromItems(slots, 0, power, getMaxPower()); power = Library.chargeItemsFromTE(slots, 1, power, getMaxPower()); + ////////////////////////////////////////////////////////////////////// + this.transmitPowerFairly(); + ////////////////////////////////////////////////////////////////////// + + byte comp = this.getComparatorPower(); + if(comp != this.lastRedstone) + this.markDirty(); + this.lastRedstone = comp; + + power = Library.chargeTEFromItems(slots, 0, power, getMaxPower()); + + long avg = (power / 2 + prevPower / 2); + this.delta = avg - this.log[0]; + + for(int i = 1; i < this.log.length; i++) { + this.log[i - 1] = this.log[i]; + } + + this.log[19] = avg; + NBTTagCompound nbt = new NBTTagCompound(); - nbt.setLong("power", power); + 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, 250); - } else { + this.networkPack(nbt, 20); + } + + if(worldObj.isRemote) { this.prevRotation = this.rotation; this.rotation += this.getSpeed(); @@ -42,67 +71,68 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { rotation -= 360; prevRotation -= 360; } - - for(int i = 1; i < this.log.length; i++) { - this.log[i - 1] = this.log[i]; - } - - this.log[19] = this.power; } } - protected void transmitPower() { + @Deprecated protected void transmitPower() { short mode = (short) this.getRelevantMode(); - ForgeDirection dir = ForgeDirection.DOWN; + //HasSets to we don'T have any duplicates + Set nets = new HashSet(); + Set consumers = new HashSet(); + + //iterate over all sides + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - - if(te instanceof IEnergyConductor) { - IEnergyConductor con = (IEnergyConductor) te; - - if(con.getPowerNet() != null && con.getPowerNet().isSubscribed(this)) - con.getPowerNet().unsubscribe(this); - } - - if(mode == 1 || mode == 2) { - if(te instanceof IEnergyConnector) { + TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + + //if it's a cable, buffer both the network and all subscribers of the net + if(te instanceof IEnergyConductor) { + IEnergyConductor con = (IEnergyConductor) te; + if(con.canConnect(dir.getOpposite()) && con.getPowerNet() != null) { + nets.add(con.getPowerNet()); + con.getPowerNet().unsubscribe(this); + consumers.addAll(con.getPowerNet().getSubscribers()); + } + + //if it's just a consumer, buffer it as a subscriber + } else if(te instanceof IEnergyConnector) { IEnergyConnector con = (IEnergyConnector) te; - - long max = maxTransfer; - long toTransfer = Math.min(max, this.power); - long remainder = this.power - toTransfer; - this.power = toTransfer; - - long oldPower = this.power; - long transfer = this.power - con.transferPower(this.power); - this.power = oldPower - transfer; - - power += remainder; - } - } - - if(te instanceof IEnergyConductor) { - IEnergyConductor con = (IEnergyConductor) te; - - if(con.getPowerNet() != null) { - if(mode == 2 || mode == 3) { - if(con.getPowerNet().isSubscribed(this)) { - con.getPowerNet().unsubscribe(this); - } - } else if(!con.getPowerNet().isSubscribed(this)) { - con.getPowerNet().subscribe(this); + if(con.canConnect(dir.getOpposite())) { + consumers.add((IEnergyConnector) te); } } } + + //send power to buffered consumers, independent of nets + if(this.power > 0 && (mode == mode_buffer || mode == mode_output)) { + List con = new ArrayList(); + con.addAll(consumers); + + if(PowerNet.trackingInstances == null) { + PowerNet.trackingInstances = new ArrayList(); + } + PowerNet.trackingInstances.clear(); + + nets.forEach(x -> { + if(x instanceof PowerNet) PowerNet.trackingInstances.add((PowerNet) x); + }); + + long toSend = Math.min(this.power, maxTransfer); + long powerRemaining = this.power - toSend; + this.power = PowerNet.fairTransfer(con, toSend) + powerRemaining; + } + + //resubscribe to buffered nets, if necessary + if(mode == mode_buffer || mode == mode_input) { + nets.forEach(x -> x.subscribe(this)); + } } @Override public long getPowerRemainingScaled(long i) { - double powerScaled = (double)power / (double)getMaxPower(); - return (long)(i * powerScaled); } @@ -112,8 +142,8 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { } @Override - public long getTransferWeight() { - return Math.min(Math.max(this.getMaxPower() - getPower(), 0), maxTransfer); + public long getMaxTransfer() { + return maxTransfer; } public float getSpeed() { @@ -127,8 +157,33 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { @Override @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { + public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public long transferPower(long power) { + + long overshoot = 0; + + // if power exceeds our transfer limit, truncate + if(power > maxTransfer) { + overshoot += power - maxTransfer; + power = maxTransfer; + } + + // this check is in essence the same as the default implementation, but re-arranged to never overflow the int64 range + // if the remaining power exceeds the power cap, truncate again + long freespace = this.getMaxPower() - this.getPower(); + + if(freespace < power) { + overshoot += power - freespace; + power = freespace; + } + + // what remains is sure to not exceed the transfer limit and the power cap (and therefore the int64 range) + this.setPower(this.getPower() + power); + + return overshoot; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 0036b77d2..3b4e8d261 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -1,13 +1,12 @@ package com.hbm.tileentity.machine.storage; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - +import api.hbm.fluid.IFluidStandardTransceiver; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; @@ -21,6 +20,7 @@ import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Amat; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous_ART; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Leaded; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; import com.hbm.inventory.gui.GUIMachineFluidTank; import com.hbm.inventory.fluid.Fluids; @@ -35,22 +35,31 @@ import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.DirPos; - -import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.world.Explosion; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable { +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) +public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, SimpleComponent, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable { public FluidTank tank; public short mode = 0; @@ -58,7 +67,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements public boolean hasExploded = false; protected boolean sendingBrake = false; public boolean onFire = false; - + public byte lastRedstone = 0; public Explosion lastExplosion = null; public int age = 0; @@ -73,7 +82,13 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements public String getName() { return "container.fluidtank"; } - + + public byte getComparatorPower() { + if(tank.getFill() == 0) return 0; + double frac = (double) tank.getFill() / (double) tank.getMaxFill() * 15D; + return (byte) (MathHelper.clamp_int((int) frac + 1, 0, 15)); + } + @Override public void updateEntity() { @@ -98,11 +113,13 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements if(!hasExploded) { age++; - if(age >= 20) + if(age >= 20) { age = 0; + this.markChanged(); + } this.sendingBrake = true; - tank.setFill(TileEntityBarrel.transmitFluidFairly(worldObj, tank.getTankType(), this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); + tank.setFill(TileEntityBarrel.transmitFluidFairly(worldObj, tank, this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); this.sendingBrake = false; if((mode == 1 || mode == 2) && (age == 9 || age == 19)) @@ -111,7 +128,12 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements tank.loadTank(2, 3, slots); tank.setType(0, 1, slots); } - + + byte comp = this.getComparatorPower(); //comparator shit + if(comp != this.lastRedstone) + this.markDirty(); + this.lastRedstone = comp; + if(tank.getFill() > 0) { if(tank.getTankType().isAntimatter()) { new ExplosionVNT(worldObj, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 5F).makeAmat().setBlockAllocator(null).setBlockProcessor(null).explode(); @@ -174,6 +196,11 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements Random rand = worldObj.rand; ParticleUtil.spawnGasFlame(worldObj, xCoord + rand.nextDouble(), yCoord + 0.5 + rand.nextDouble(), zCoord + rand.nextDouble(), rand.nextGaussian() * 0.2, 0.1, rand.nextGaussian() * 0.2); + if(worldObj.getTotalWorldTime() % 20 == 0) { + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 50); + if(type.hasTrait(FT_Leaded.class)) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.HEAVYMETAL, PollutionHandler.HEAVY_METAL_PER_SECOND * 50); + } + } else if(type.hasTrait(FT_Gaseous.class) || type.hasTrait(FT_Gaseous_ART.class)) { if(worldObj.getTotalWorldTime() % 5 == 0) { @@ -354,18 +381,20 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements } @Override - public long transferFluid(FluidType type, long fluid) { - long toTransfer = Math.min(getDemand(type), fluid); + public long transferFluid(FluidType type, int pressure, long fluid) { + long toTransfer = Math.min(getDemand(type, pressure), fluid); tank.setFill(tank.getFill() + (int) toTransfer); return fluid - toTransfer; } @Override - public long getDemand(FluidType type) { + public long getDemand(FluidType type, int pressure) { if(this.mode == 2 || this.mode == 3 || this.sendingBrake) return 0; + if(tank.getPressure() != pressure) return 0; + return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0; } @@ -438,4 +467,33 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements this.hasExploded = false; this.markChanged(); } -} + + @Override + public String getComponentName() { + return "ntm_fluid_tank"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluidStored(Context context, Arguments args) { + return new Object[] {tank.getFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxStored(Context context, Arguments args) { + return new Object[] {tank.getMaxFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getTypeStored(Context context, Arguments args) { + return new Object[] {tank.getTankType().getName()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java index 2b38ee9a0..61af46838 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java @@ -21,6 +21,7 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa private int stack = 0; public boolean output = false; private int capacity; + public int redstone = 0; @SideOnly(Side.CLIENT) public ItemStack type; @@ -43,6 +44,13 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa if(!worldObj.isRemote) { + int newRed = this.getStockpile() * 15 / this.capacity; + + if(newRed != this.redstone) { + this.redstone = newRed; + this.markDirty(); + } + if(slots[0] != null && slots[0].getItem() == ModItems.fluid_barrel_infinite) { this.stack = this.getCapacity(); } @@ -132,6 +140,7 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa this.stack = nbt.getInteger("stack"); this.output = nbt.getBoolean("output"); this.capacity = nbt.getInteger("capacity"); + this.redstone = nbt.getByte("redstone"); if(this.capacity <= 0) { this.capacity = 10_000; @@ -144,6 +153,7 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa nbt.setInteger("stack", stack); nbt.setBoolean("output", output); nbt.setInteger("capacity", capacity); + nbt.setByte("redstone", (byte) redstone); } @Override diff --git a/src/main/java/com/hbm/tileentity/network/IDroneLinkable.java b/src/main/java/com/hbm/tileentity/network/IDroneLinkable.java new file mode 100644 index 000000000..eae54d23e --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/IDroneLinkable.java @@ -0,0 +1,9 @@ +package com.hbm.tileentity.network; + +import com.hbm.util.fauxpointtwelve.BlockPos; + +public interface IDroneLinkable { + + public BlockPos getPoint(); + public void setNextTarget(int x, int y, int z); +} diff --git a/src/main/java/com/hbm/tileentity/network/RequestNetwork.java b/src/main/java/com/hbm/tileentity/network/RequestNetwork.java new file mode 100644 index 000000000..8f98a9eb6 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/RequestNetwork.java @@ -0,0 +1,116 @@ +package com.hbm.tileentity.network; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; + +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.util.HashedSet; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.item.ItemStack; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; + +public class RequestNetwork { + + private static int timer = 0; + public static HashMap>> activeWaypoints = new HashMap(); + public static final int maxAge = 2_000; + + public static void updateEntries() { + + if(timer < 0) { + timer--; + return; + } + + timer = 20; + + Iterator worldIt = activeWaypoints.entrySet().iterator(); + + // iterate over each dim + while(worldIt.hasNext()) { + Entry>> worldEntry = (Entry) worldIt.next(); + Iterator chunkIt = worldEntry.getValue().entrySet().iterator(); + + // iterate over each chunk + while(chunkIt.hasNext()) { + + Entry> chunkEntry = (Entry) chunkIt.next(); + Iterator pathIt = chunkEntry.getValue().iterator(); + + // iterate over each path node + while(pathIt.hasNext()) { + PathNode node = pathIt.next(); + + // if the lease timestamp is too far back, time out the node + if(node.lease < System.currentTimeMillis() - maxAge) { + node.reachableNodes.clear(); // just to be sure there's no cyclical references happening creating memory leaks + pathIt.remove(); + } + } + + // if no more nodes exist, delete the chunk entry + if(chunkEntry.getValue().size() == 0) chunkIt.remove(); + } + + // if no more chunk entries exist, delete the world entry + if(worldEntry.getValue().size() == 0) worldIt.remove(); + + // cleaning up all the entries if the lists are empty ensures that even if a different save is loaded, + // the positions will eventually time out leading to all the old save crap being deleted, preventing a memory leak. + // it's probably an inconsequential memory leak but i'd rather we don't + } + + } + + /** Generic path node, contains nothing but a position and a timestamp */ + public static class PathNode { + public BlockPos pos; + public long lease; + public HashedSet reachableNodes = new HashedSet(); + public PathNode(BlockPos pos, HashedSet reachableNodes) { + this.pos = pos; + this.reachableNodes = new HashedSet(reachableNodes); + this.lease = System.currentTimeMillis(); + } + + @Override public int hashCode() { return pos.hashCode(); } + @Override public boolean equals(Object toCompare) { + if(this == toCompare) { + return true; + } else if(!(toCompare instanceof PathNode)) { + return false; + } else { + PathNode node = (PathNode) toCompare; + if(this.pos.getX() != node.pos.getX()) { + return false; + } else if(this.pos.getY() != node.pos.getY()) { + return false; + } else { + return this.pos.getZ() == node.pos.getZ(); + } + } + } + } + + /** Node created by providers, lists available items */ + public static class OfferNode extends PathNode { + public List offer; + public OfferNode(BlockPos pos, HashedSet reachableNodes, List offer) { + super(pos, reachableNodes); + this.offer = offer; + } + } + + /** Node created by requesters, lists requested AStacks */ + public static class RequestNode extends PathNode { + public List request; + public RequestNode(BlockPos pos, HashedSet reachableNodes, List request) { + super(pos, reachableNodes); + this.request = request; + } + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java index 0949504e7..7346c5066 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java @@ -40,7 +40,7 @@ public class TileEntityConverterRfHe extends TileEntityLoadedBase implements IEn return 0; if(simulate) - return 0; + return maxReceive; recursionBrake = true; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneBase.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBase.java new file mode 100644 index 000000000..2158d0fe7 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBase.java @@ -0,0 +1,104 @@ +package com.hbm.tileentity.network; + +import com.hbm.tileentity.TileEntityMachineBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraftforge.common.util.Constants; +import net.minecraftforge.common.util.ForgeDirection; + +public abstract class TileEntityCraneBase extends TileEntityMachineBase { + + public TileEntityCraneBase(int scount) { + super(scount); + } + + // extension to the meta system + // for compatibility purposes, normal meta values are still used by default + private ForgeDirection outputOverride = ForgeDirection.UNKNOWN; + + // for extra stability in case the screwdriver action doesn't get synced to + // other clients + private ForgeDirection cachedOutputOverride = ForgeDirection.UNKNOWN; + + @Override + public void updateEntity() { + if(hasWorldObj() && worldObj.isRemote) { + if(cachedOutputOverride != outputOverride) { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + cachedOutputOverride = outputOverride; + } + } + } + + public ForgeDirection getInputSide() { + return ForgeDirection.getOrientation(getBlockMetadata()); + } + + public ForgeDirection getOutputSide() { + ForgeDirection override = getOutputOverride(); + return override != ForgeDirection.UNKNOWN ? override : ForgeDirection.getOrientation(getBlockMetadata()).getOpposite(); + } + + public ForgeDirection getOutputOverride() { + return outputOverride; + } + + public void setOutputOverride(ForgeDirection direction) { + ForgeDirection oldSide = getOutputSide(); + if(oldSide == direction) direction = direction.getOpposite(); + + outputOverride = direction; + + if(direction == getInputSide()) + setInput(oldSide); + else + onBlockChanged(); + } + + public void setInput(ForgeDirection direction) { + outputOverride = getOutputSide(); // save the current output, if it isn't saved yet + + ForgeDirection oldSide = getInputSide(); + if(oldSide == direction) direction = direction.getOpposite(); + + boolean needSwapOutput = direction == getOutputSide(); + worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, direction.ordinal(), needSwapOutput ? 4 : 3); + + if(needSwapOutput) + setOutputOverride(oldSide); + } + + protected void onBlockChanged() { + if(!hasWorldObj()) return; + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + worldObj.notifyBlockChange(xCoord, yCoord, zCoord, getBlockType()); + markDirty(); + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + writeToNBT(nbt); + return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + readFromNBT(pkt.func_148857_g()); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + if(nbt.hasKey("CraneOutputOverride", Constants.NBT.TAG_BYTE)) + outputOverride = ForgeDirection.getOrientation(nbt.getByte("CraneOutputOverride")); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setByte("CraneOutputOverride", (byte) outputOverride.ordinal()); + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java index bca0a3f22..2996d102a 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java @@ -1,13 +1,11 @@ package com.hbm.tileentity.network; +import api.hbm.conveyor.IConveyorBelt; import com.hbm.entity.item.EntityMovingPackage; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerCraneBoxer; import com.hbm.inventory.gui.GUICraneBoxer; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; - -import api.hbm.conveyor.IConveyorBelt; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -20,7 +18,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCraneBoxer extends TileEntityMachineBase implements IGUIProvider, IControlReceiver { +public class TileEntityCraneBoxer extends TileEntityCraneBase implements IGUIProvider, IControlReceiver { public byte mode = 0; public static final byte MODE_4 = 0; @@ -42,15 +40,15 @@ public class TileEntityCraneBoxer extends TileEntityMachineBase implements IGUIP @Override public void updateEntity() { - + super.updateEntity(); if(!worldObj.isRemote) { boolean redstone = worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord); if(mode == MODE_REDSTONE && redstone && !lastRedstone) { - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite(); - Block b = worldObj.getBlock(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + ForgeDirection outputSide = getOutputSide(); + Block b = worldObj.getBlock(xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ); IConveyorBelt belt = null; if(b instanceof IConveyorBelt) { @@ -58,7 +56,7 @@ public class TileEntityCraneBoxer extends TileEntityMachineBase implements IGUIP } int pack = 0; - + for(int i = 0; i < slots.length; i++) { if(slots[i] != null) { pack++; @@ -79,8 +77,8 @@ public class TileEntityCraneBoxer extends TileEntityMachineBase implements IGUIP } EntityMovingPackage moving = new EntityMovingPackage(worldObj); - Vec3 pos = Vec3.createVectorHelper(xCoord + 0.5 + dir.offsetX * 0.55, yCoord + 0.5 + dir.offsetY * 0.55, zCoord + 0.5 + dir.offsetZ * 0.55); - Vec3 snap = belt.getClosestSnappingPosition(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, pos); + Vec3 pos = Vec3.createVectorHelper(xCoord + 0.5 + outputSide.offsetX * 0.55, yCoord + 0.5 + outputSide.offsetY * 0.55, zCoord + 0.5 + outputSide.offsetZ * 0.55); + Vec3 snap = belt.getClosestSnappingPosition(worldObj, xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ, pos); moving.setPosition(snap.xCoord, snap.yCoord, snap.zCoord); moving.setItemStacks(box); worldObj.spawnEntityInWorld(moving); @@ -116,8 +114,8 @@ public class TileEntityCraneBoxer extends TileEntityMachineBase implements IGUIP } } - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite(); - Block b = worldObj.getBlock(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + ForgeDirection outputSide = getOutputSide(); + Block b = worldObj.getBlock(xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ); IConveyorBelt belt = null; if(b instanceof IConveyorBelt) { @@ -138,8 +136,8 @@ public class TileEntityCraneBoxer extends TileEntityMachineBase implements IGUIP } EntityMovingPackage moving = new EntityMovingPackage(worldObj); - Vec3 pos = Vec3.createVectorHelper(xCoord + 0.5 + dir.offsetX * 0.55, yCoord + 0.5 + dir.offsetY * 0.55, zCoord + 0.5 + dir.offsetZ * 0.55); - Vec3 snap = belt.getClosestSnappingPosition(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, pos); + Vec3 pos = Vec3.createVectorHelper(xCoord + 0.5 + outputSide.offsetX * 0.55, yCoord + 0.5 + outputSide.offsetY * 0.55, zCoord + 0.5 + outputSide.offsetZ * 0.55); + Vec3 snap = belt.getClosestSnappingPosition(worldObj, xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ, pos); moving.setPosition(snap.xCoord, snap.yCoord, snap.zCoord); moving.setItemStacks(box); worldObj.spawnEntityInWorld(moving); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java index 1da88ce44..d947f9922 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.network; +import api.hbm.conveyor.IConveyorBelt; import com.hbm.entity.item.EntityMovingItem; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerCraneExtractor; @@ -7,9 +8,6 @@ import com.hbm.inventory.gui.GUICraneExtractor; import com.hbm.items.ModItems; import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; - -import api.hbm.conveyor.IConveyorBelt; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -26,7 +24,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCraneExtractor extends TileEntityMachineBase implements IGUIProvider, IControlReceiver { +public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGUIProvider, IControlReceiver { public boolean isWhitelist = false; public ModulePatternMatcher matcher; @@ -55,7 +53,7 @@ public class TileEntityCraneExtractor extends TileEntityMachineBase implements I @Override public void updateEntity() { - + super.updateEntity(); if(!worldObj.isRemote) { int delay = 20; @@ -78,10 +76,11 @@ public class TileEntityCraneExtractor extends TileEntityMachineBase implements I case 2: amount = 64; break; } } - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); - TileEntity te = worldObj.getTileEntity(xCoord - dir.offsetX, yCoord - dir.offsetY, zCoord - dir.offsetZ); - Block b = worldObj.getBlock(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + + ForgeDirection inputSide = getOutputSide(); // note the switcheroo! + ForgeDirection outputSide = getInputSide(); + TileEntity te = worldObj.getTileEntity(xCoord + inputSide.offsetX, yCoord + inputSide.offsetY, zCoord + inputSide.offsetZ); + Block b = worldObj.getBlock(xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ); int[] access = null; ISidedInventory sided = null; @@ -89,7 +88,7 @@ public class TileEntityCraneExtractor extends TileEntityMachineBase implements I if(te instanceof ISidedInventory) { sided = (ISidedInventory) te; //access = sided.getAccessibleSlotsFromSide(dir.ordinal()); - access = masquerade(sided, dir.ordinal()); + access = masquerade(sided, inputSide.getOpposite().ordinal()); } boolean hasSent = false; @@ -108,7 +107,7 @@ public class TileEntityCraneExtractor extends TileEntityMachineBase implements I int index = access == null ? i : access[i]; ItemStack stack = inv.getStackInSlot(index); - if(stack != null && (sided == null || sided.canExtractItem(index, stack, dir.ordinal()))){ + if(stack != null && (sided == null || sided.canExtractItem(index, stack, inputSide.getOpposite().ordinal()))){ boolean match = this.matchesFilter(stack); @@ -119,8 +118,8 @@ public class TileEntityCraneExtractor extends TileEntityMachineBase implements I stack.stackSize = toSend; EntityMovingItem moving = new EntityMovingItem(worldObj); - Vec3 pos = Vec3.createVectorHelper(xCoord + 0.5 + dir.offsetX * 0.55, yCoord + 0.5 + dir.offsetY * 0.55, zCoord + 0.5 + dir.offsetZ * 0.55); - Vec3 snap = belt.getClosestSnappingPosition(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, pos); + Vec3 pos = Vec3.createVectorHelper(xCoord + 0.5 + outputSide.offsetX * 0.55, yCoord + 0.5 + outputSide.offsetY * 0.55, zCoord + 0.5 + outputSide.offsetZ * 0.55); + Vec3 snap = belt.getClosestSnappingPosition(worldObj, xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ, pos); moving.setPosition(snap.xCoord, snap.yCoord, snap.zCoord); moving.setItemStack(stack); worldObj.spawnEntityInWorld(moving); @@ -144,8 +143,8 @@ public class TileEntityCraneExtractor extends TileEntityMachineBase implements I stack.stackSize = toSend; EntityMovingItem moving = new EntityMovingItem(worldObj); - Vec3 pos = Vec3.createVectorHelper(xCoord + 0.5 + dir.offsetX * 0.55, yCoord + 0.5 + dir.offsetY * 0.55, zCoord + 0.5 + dir.offsetZ * 0.55); - Vec3 snap = belt.getClosestSnappingPosition(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, pos); + Vec3 pos = Vec3.createVectorHelper(xCoord + 0.5 + outputSide.offsetX * 0.55, yCoord + 0.5 + outputSide.offsetY * 0.55, zCoord + 0.5 + outputSide.offsetZ * 0.55); + Vec3 snap = belt.getClosestSnappingPosition(worldObj, xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ, pos); moving.setPosition(snap.xCoord, snap.yCoord, snap.zCoord); moving.setItemStack(stack); worldObj.spawnEntityInWorld(moving); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java index ba50abcea..e6dc6b48b 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java @@ -1,7 +1,5 @@ package com.hbm.tileentity.network; -import java.util.List; - import com.hbm.blocks.ModBlocks; import com.hbm.blocks.network.CraneInserter; import com.hbm.entity.item.EntityMovingItem; @@ -11,8 +9,6 @@ import com.hbm.inventory.gui.GUICraneGrabber; import com.hbm.items.ModItems; import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -29,7 +25,9 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCraneGrabber extends TileEntityMachineBase implements IGUIProvider, IControlReceiver { +import java.util.List; + +public class TileEntityCraneGrabber extends TileEntityCraneBase implements IGUIProvider, IControlReceiver { public boolean isWhitelist = false; public ModulePatternMatcher matcher; @@ -50,7 +48,7 @@ public class TileEntityCraneGrabber extends TileEntityMachineBase implements IGU @Override public void updateEntity() { - + super.updateEntity(); if(!worldObj.isRemote) { int delay = 20; @@ -74,15 +72,16 @@ public class TileEntityCraneGrabber extends TileEntityMachineBase implements IGU } } - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); - TileEntity te = worldObj.getTileEntity(xCoord - dir.offsetX, yCoord - dir.offsetY, zCoord - dir.offsetZ); + ForgeDirection inputSide = getInputSide(); + ForgeDirection outputSide = getOutputSide(); + TileEntity te = worldObj.getTileEntity(xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ); int[] access = null; ISidedInventory sided = null; if(te instanceof ISidedInventory) { sided = (ISidedInventory) te; - access = CraneInserter.masquerade(sided, dir.ordinal()); + access = CraneInserter.masquerade(sided, outputSide.getOpposite().ordinal()); } if(te instanceof IInventory) { @@ -95,14 +94,14 @@ public class TileEntityCraneGrabber extends TileEntityMachineBase implements IGU */ double reach = 1D; if(this.getBlockMetadata() > 1) { //ignore if pointing up or down - Block b = worldObj.getBlock(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + Block b = worldObj.getBlock(xCoord + inputSide.offsetX, yCoord + inputSide.offsetY, zCoord + inputSide.offsetZ); if(b == ModBlocks.conveyor_double) reach = 0.5D; if(b == ModBlocks.conveyor_triple) reach = 0.33D; } - double x = xCoord + dir.offsetX * reach; - double y = yCoord + dir.offsetY * reach; - double z = zCoord + dir.offsetZ * reach; + double x = xCoord + inputSide.offsetX * reach; + double y = yCoord + inputSide.offsetY * reach; + double z = zCoord + inputSide.offsetZ * reach; List items = worldObj.getEntitiesWithinAABB(EntityMovingItem.class, AxisAlignedBB.getBoundingBox(x + 0.1875D, y + 0.1875D, z + 0.1875D, x + 0.8125D, y + 0.8125D, z + 0.8125D)); for(EntityMovingItem item : items) { @@ -113,7 +112,7 @@ public class TileEntityCraneGrabber extends TileEntityMachineBase implements IGU ItemStack copy = stack.copy(); int toAdd = Math.min(stack.stackSize, amount); copy.stackSize = toAdd; - ItemStack ret = CraneInserter.addToInventory((IInventory) te, access, copy, dir.ordinal()); + ItemStack ret = CraneInserter.addToInventory((IInventory) te, access, copy, outputSide.getOpposite().ordinal()); int didAdd = toAdd - (ret != null ? ret.stackSize : 0); stack.stackSize -= didAdd; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java index 205fe3115..9de4fb7fc 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java @@ -4,8 +4,6 @@ import com.hbm.blocks.network.CraneInserter; import com.hbm.inventory.container.ContainerCraneInserter; import com.hbm.inventory.gui.GUICraneInserter; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -18,7 +16,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCraneInserter extends TileEntityMachineBase implements IGUIProvider { +public class TileEntityCraneInserter extends TileEntityCraneBase implements IGUIProvider { public static final int[] access = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }; @@ -33,18 +31,18 @@ public class TileEntityCraneInserter extends TileEntityMachineBase implements IG @Override public void updateEntity() { - + super.updateEntity(); if(!worldObj.isRemote) { - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); - TileEntity te = worldObj.getTileEntity(xCoord - dir.offsetX, yCoord - dir.offsetY, zCoord - dir.offsetZ); + ForgeDirection outputSide = getOutputSide(); + TileEntity te = worldObj.getTileEntity(xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ); int[] access = null; if(te instanceof ISidedInventory) { ISidedInventory sided = (ISidedInventory) te; //access = sided.getAccessibleSlotsFromSide(dir.ordinal()); - access = CraneInserter.masquerade(sided, dir.ordinal()); + access = CraneInserter.masquerade(sided, outputSide.getOpposite().ordinal()); } if(te instanceof IInventory) { @@ -53,7 +51,7 @@ public class TileEntityCraneInserter extends TileEntityMachineBase implements IG ItemStack stack = slots[i]; if(stack != null) { - ItemStack ret = CraneInserter.addToInventory((IInventory) te, access, stack.copy(), dir.ordinal()); + ItemStack ret = CraneInserter.addToInventory((IInventory) te, access, stack.copy(), outputSide.getOpposite().ordinal()); if(ret == null || ret.stackSize != stack.stackSize) { slots[i] = ret; @@ -72,7 +70,7 @@ public class TileEntityCraneInserter extends TileEntityMachineBase implements IG if(stack != null) { stack = stack.copy(); stack.stackSize = 1; - ItemStack ret = CraneInserter.addToInventory((IInventory) te, access, stack.copy(), dir.ordinal()); + ItemStack ret = CraneInserter.addToInventory((IInventory) te, access, stack.copy(), outputSide.getOpposite().ordinal()); if(ret == null || ret.stackSize != stack.stackSize) { this.decrStackSize(i, 1); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneUnboxer.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneUnboxer.java index 3cd1aa7da..31dd46c1e 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneUnboxer.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneUnboxer.java @@ -1,13 +1,11 @@ package com.hbm.tileentity.network; +import api.hbm.conveyor.IConveyorBelt; import com.hbm.entity.item.EntityMovingItem; import com.hbm.inventory.container.ContainerCraneUnboxer; import com.hbm.inventory.gui.GUICraneUnboxer; import com.hbm.items.ModItems; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; - -import api.hbm.conveyor.IConveyorBelt; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -19,7 +17,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCraneUnboxer extends TileEntityMachineBase implements IGUIProvider { +public class TileEntityCraneUnboxer extends TileEntityCraneBase implements IGUIProvider { public TileEntityCraneUnboxer() { super(23); @@ -32,7 +30,7 @@ public class TileEntityCraneUnboxer extends TileEntityMachineBase implements IGU @Override public void updateEntity() { - + super.updateEntity(); if(!worldObj.isRemote) { int delay = 20; @@ -65,8 +63,8 @@ public class TileEntityCraneUnboxer extends TileEntityMachineBase implements IGU } } - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); - Block b = worldObj.getBlock(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + ForgeDirection outputSide = getInputSide(); // note the switcheroo! + Block b = worldObj.getBlock(xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ); if(b instanceof IConveyorBelt) { @@ -82,8 +80,8 @@ public class TileEntityCraneUnboxer extends TileEntityMachineBase implements IGU stack.stackSize = toSend; EntityMovingItem moving = new EntityMovingItem(worldObj); - Vec3 pos = Vec3.createVectorHelper(xCoord + 0.5 + dir.offsetX * 0.55, yCoord + 0.5 + dir.offsetY * 0.55, zCoord + 0.5 + dir.offsetZ * 0.55); - Vec3 snap = belt.getClosestSnappingPosition(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, pos); + Vec3 pos = Vec3.createVectorHelper(xCoord + 0.5 + outputSide.offsetX * 0.55, yCoord + 0.5 + outputSide.offsetY * 0.55, zCoord + 0.5 + outputSide.offsetZ * 0.55); + Vec3 snap = belt.getClosestSnappingPosition(worldObj, xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ, pos); moving.setPosition(snap.xCoord, snap.yCoord, snap.zCoord); moving.setItemStack(stack); worldObj.spawnEntityInWorld(moving); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java new file mode 100644 index 000000000..8a304914c --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java @@ -0,0 +1,276 @@ +package com.hbm.tileentity.network; + +import java.util.List; + +import com.hbm.entity.item.EntityDeliveryDrone; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.container.ContainerDroneCrate; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIDroneCrate; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIProvider, INBTPacketReceiver, IControlReceiver, IDroneLinkable, IFluidStandardTransceiver { + + public FluidTank tank; + + public int nextX = -1; + public int nextY = -1; + public int nextZ = -1; + + public boolean sendingMode = false; + public boolean itemType = true; + + public TileEntityDroneCrate() { + super(19); + this.tank = new FluidTank(Fluids.NONE, 64_000); + } + + @Override + public String getName() { + return "container.droneCrate"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.tank.setType(18, slots); + + if(sendingMode && !itemType && worldObj.getTotalWorldTime() % 20 == 0) { + this.subscribeToAllAround(tank.getTankType(), this); + } + + if(!sendingMode && !itemType && worldObj.getTotalWorldTime() % 20 == 0) { + this.sendFluidToAll(tank, this); + } + + if(nextY != -1) { + + List drones = worldObj.getEntitiesWithinAABB(EntityDeliveryDrone.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord + 1, zCoord, xCoord + 1, yCoord + 2, zCoord + 1)); + for(EntityDeliveryDrone drone : drones) { + if(Vec3.createVectorHelper(drone.motionX, drone.motionY, drone.motionZ).lengthVector() < 0.05) { + drone.setTarget(nextX + 0.5, nextY, nextZ + 0.5); + + if(sendingMode && itemType) loadItems(drone); + if(!sendingMode && itemType) unloadItems(drone); + if(sendingMode && !itemType) loadFluid(drone); + if(!sendingMode && !itemType) unloadFluid(drone); + } + } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setIntArray("pos", new int[] {nextX, nextY, nextZ}); + data.setBoolean("mode", sendingMode); + data.setBoolean("type", itemType); + tank.writeToNBT(data, "t"); + INBTPacketReceiver.networkPack(this, data, 25); + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + int[] pos = nbt.getIntArray("pos"); + this.nextX = pos[0]; + this.nextY = pos[1]; + this.nextZ = pos[2]; + this.sendingMode = nbt.getBoolean("mode"); + this.itemType = nbt.getBoolean("type"); + tank.readFromNBT(nbt, "t"); + } + + protected void loadItems(EntityDeliveryDrone drone) { + + if(drone.getAppearance() != 0) return; + + boolean loaded = false; + + for(int i = 0; i < 18; i++) { + if(this.slots[i] != null) { + loaded = true; + drone.setInventorySlotContents(i, this.slots[i].copy()); + this.slots[i] = null; + } + } + + if(loaded) { + this.markDirty(); + drone.setAppearance(1); + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.unpack", 0.5F, 0.75F); + } + } + + protected void unloadItems(EntityDeliveryDrone drone) { + + if(drone.getAppearance() != 1) return; + + boolean emptied = true; + + for(int i = 0; i < 18; i++) { + ItemStack droneSlot = drone.getStackInSlot(i); + + if(this.slots[i] == null && droneSlot != null) { + this.slots[i] = droneSlot.copy(); + drone.setInventorySlotContents(i, null); + } else if(this.slots[i] != null && droneSlot != null) { + emptied = false; + } + } + + this.markDirty(); + + if(emptied) { + drone.setAppearance(0); + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.unpack", 0.5F, 0.75F); + } + } + + protected void loadFluid(EntityDeliveryDrone drone) { + + if(drone.getAppearance() != 0) return; + + if(this.tank.getFill() > 0) { + drone.fluid = new FluidStack(tank.getTankType(), tank.getFill()); + this.tank.setFill(0); + drone.setAppearance(2); + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.unpack", 0.5F, 0.75F); + + this.markDirty(); + } + } + + protected void unloadFluid(EntityDeliveryDrone drone) { + + if(drone.getAppearance() != 2) return; + + if(drone.fluid != null && drone.fluid.type == tank.getTankType()) { + + if(drone.fluid.fill + tank.getFill() <= tank.getMaxFill()) { + tank.setFill(tank.getFill() + drone.fluid.fill); + drone.fluid = null; + drone.setAppearance(0); + } else { + int overshoot = drone.fluid.fill + tank.getFill() - tank.getMaxFill(); + tank.setFill(tank.getMaxFill()); + drone.fluid.fill = overshoot; + } + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.unpack", 0.5F, 0.75F); + + this.markDirty(); + } + } + + @Override + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + return true; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return true; + } + + @Override + public BlockPos getPoint() { + return new BlockPos(xCoord, yCoord + 1, zCoord); + } + + @Override + public void setNextTarget(int x, int y, int z) { + this.nextX = x; + this.nextY = y; + this.nextZ = z; + this.markDirty(); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + int[] pos = nbt.getIntArray("pos"); + this.nextX = pos[0]; + this.nextY = pos[1]; + this.nextZ = pos[2]; + this.sendingMode = nbt.getBoolean("mode"); + this.itemType = nbt.getBoolean("type"); + tank.readFromNBT(nbt, "t"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setIntArray("pos", new int[] {nextX, nextY, nextZ}); + nbt.setBoolean("mode", sendingMode); + nbt.setBoolean("type", itemType); + tank.writeToNBT(nbt, "t"); + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerDroneCrate(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIDroneCrate(player.inventory, this); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + + if(data.hasKey("mode")) { + this.sendingMode = !this.sendingMode; + this.markChanged(); + } + + if(data.hasKey("type")) { + this.itemType = !this.itemType; + this.markChanged(); + } + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] { tank }; + } + + @Override + public FluidTank[] getSendingTanks() { + return !sendingMode && !itemType ? new FluidTank[] { tank } : new FluidTank[0]; + } + + @Override + public FluidTank[] getReceivingTanks() { + return sendingMode && !itemType ? new FluidTank[] { tank } : new FluidTank[0]; + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java new file mode 100644 index 000000000..82b6b93f0 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java @@ -0,0 +1,193 @@ +package com.hbm.tileentity.network; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import com.hbm.entity.item.EntityRequestDrone; +import com.hbm.entity.item.EntityRequestDrone.DroneProgram; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.container.ContainerDroneDock; +import com.hbm.inventory.gui.GUIDroneDock; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemDrone.EnumDroneType; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.network.RequestNetwork.OfferNode; +import com.hbm.tileentity.network.RequestNetwork.PathNode; +import com.hbm.tileentity.network.RequestNetwork.RequestNode; +import com.hbm.util.HashedSet; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class TileEntityDroneDock extends TileEntityRequestNetworkContainer implements IGUIProvider { + + public static final int pathingDepth = 10; + + public TileEntityDroneDock() { + super(9); + } + + @Override + public String getName() { + return "container.droneDock"; + } + + @Override + public void updateEntity() { + super.updateEntity(); + + if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 100 == 0 && this.hasDrone()) { + + // grab all nodes in a 5 chunk radius + HashedSet localNodes = this.getAllLocalNodes(worldObj, xCoord, zCoord, 5); + List requests = new ArrayList(); + List offers = new ArrayList(); + + for(PathNode local : localNodes) { + if(local instanceof RequestNode) requests.add((RequestNode) local); + if(local instanceof OfferNode) offers.add((OfferNode) local); + } + + attempt: for(int i = 0; i < 5; i++) { + + // randomize! + Collections.shuffle(requests); + Collections.shuffle(offers); + RequestNode firstRequest = null; + + // simply pick the first request node that has unfulfilled requests + for(RequestNode request : requests) { + if(!request.request.isEmpty()) { + firstRequest = request; + break; + } + } + + if(firstRequest != null) { + + PathNode own = localNodes.getMap().get(new BlockPos(xCoord, yCoord + 1, zCoord).hashCode()); + AStack request = firstRequest.request.get(worldObj.rand.nextInt(firstRequest.request.size())); + + outer: for(OfferNode offer : offers) { + + for(ItemStack stack : offer.offer) { + if(stack != null && request.matchesRecipe(stack, true)) { + if(tryEmbark(own, firstRequest, offer, request, localNodes)) break attempt; // if the drone can be pathed and spawned, stop doing more attempts + break outer; // if not, simply continue iterating over offer nodes + } + } + } + } + } + } + } + + public boolean tryEmbark(PathNode dock, RequestNode request, OfferNode offer, AStack item, HashedSet localNodes) { + + List dockToOffer = generatePath(dock, offer, localNodes); + if(dockToOffer == null) return false; + List offerToRequest = generatePath(offer, request, localNodes); + if(offerToRequest == null) return false; + List requestToDock = generatePath(request, dock, localNodes); + if(requestToDock == null) return false; + + + for(int i = 0; i < this.slots.length; i++) { + ItemStack stack = slots[i]; + if(stack != null && stack.getItem() == ModItems.drone && stack.getItemDamage() == EnumDroneType.REQUEST.ordinal()) { + this.decrStackSize(i, 1); + break; + } + } + + EntityRequestDrone drone = new EntityRequestDrone(worldObj); + drone.setPosition(xCoord + 0.5, yCoord + 1, zCoord + 0.5); + + // write programming + for(PathNode node : dockToOffer) drone.program.add(node.pos); + drone.program.add(offer.pos); + drone.program.add(item); + for(PathNode node : offerToRequest) drone.program.add(node.pos); + drone.program.add(request.pos); + drone.program.add(DroneProgram.UNLOAD); + for(PathNode node : requestToDock) drone.program.add(node.pos); + drone.program.add(dock.pos); + drone.program.add(DroneProgram.DOCK); + + worldObj.spawnEntityInWorld(drone); + this.worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:block.storageOpen", 2.0F, 1.0F); + + return true; + } + + public List generatePath(PathNode start, PathNode end, HashedSet localNodes) { + + List> paths = new ArrayList(); + List init = new ArrayList(); + init.add(start); + paths.add(init); + + // breadth-first search + for(int i = 0; i < pathingDepth; i++) { + + List> newPaths = new ArrayList(); + + for(List oldPath : paths) { + for(PathNode connectedUnsafe : oldPath.get(oldPath.size() - 1).reachableNodes) { + + PathNode connectedSafe = localNodes.getMap().get(connectedUnsafe.hashCode()); // lookup to translate potentially outdated nodes into current ones + if(connectedSafe != null) { + + List newPath = new ArrayList(); + newPath.addAll(oldPath); + + if(connectedSafe.hashCode() == end.hashCode()) { + newPath.remove(0); // we only want the in-betweens + return newPath; + } + + newPath.add(connectedSafe); + newPaths.add(newPath); + } + } + } + + paths = newPaths; + } + + return null; + } + + public boolean hasDrone() { + + for(int i = 0; i < this.slots.length; i++) { + ItemStack stack = slots[i]; + if(stack != null && stack.getItem() == ModItems.drone && stack.getItemDamage() == EnumDroneType.REQUEST.ordinal()) return true; + } + + return false; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerDroneDock(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIDroneDock(player.inventory, this); + } + + @Override + public PathNode createNode(BlockPos pos) { + return new PathNode(pos, this.reachableNodes); + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java new file mode 100644 index 000000000..0b32073e6 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java @@ -0,0 +1,64 @@ +package com.hbm.tileentity.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.inventory.container.ContainerDroneProvider; +import com.hbm.inventory.gui.GUIDroneProvider; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.network.RequestNetwork.OfferNode; +import com.hbm.tileentity.network.RequestNetwork.PathNode; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class TileEntityDroneProvider extends TileEntityRequestNetworkContainer implements IGUIProvider { + + public TileEntityDroneProvider() { + super(9); + } + + @Override + public String getName() { + return "container.droneProvider"; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + return true; + } + + @Override + public boolean canExtractItem(int i, ItemStack stack, int j) { + return false; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerDroneProvider(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIDroneProvider(player.inventory, this); + } + + @Override + public PathNode createNode(BlockPos pos) { + List offer = new ArrayList(); + for(ItemStack stack : slots) if(stack != null) offer.add(stack.copy()); + return new OfferNode(pos, this.reachableNodes, offer); + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java new file mode 100644 index 000000000..75ff11bf5 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java @@ -0,0 +1,125 @@ +package com.hbm.tileentity.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.container.ContainerDroneRequester; +import com.hbm.inventory.gui.GUIDroneRequester; +import com.hbm.module.ModulePatternMatcher; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.network.RequestNetwork.PathNode; +import com.hbm.tileentity.network.RequestNetwork.RequestNode; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; + +public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer implements INBTPacketReceiver, IGUIProvider { + + public ModulePatternMatcher matcher; + + public TileEntityDroneRequester() { + super(18); + this.matcher = new ModulePatternMatcher(9); + } + + @Override + public String getName() { + return "container.droneRequester"; + } + + @Override + public void updateEntity() { + super.updateEntity(); + + if(!worldObj.isRemote) { + + NBTTagCompound data = new NBTTagCompound(); + this.matcher.writeToNBT(data); + INBTPacketReceiver.networkPack(this, data, 15); + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.matcher.readFromNBT(nbt); + } + + public void nextMode(int i) { + this.matcher.nextMode(worldObj, slots[i], i); + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 17 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + return false; + } + + @Override + public boolean canExtractItem(int i, ItemStack stack, int j) { + return true; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.matcher.readFromNBT(nbt); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + this.matcher.writeToNBT(nbt); + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerDroneRequester(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIDroneRequester(player.inventory, this); + } + + @Override + public PathNode createNode(BlockPos pos) { + List request = new ArrayList(); + for(int i = 0; i < 9; i++) { + ItemStack filter = slots[i]; + ItemStack stock = slots[i + 9]; + if(filter == null) continue; + String mode = this.matcher.modes[i]; + AStack aStack = null; + + if(ModulePatternMatcher.MODE_EXACT.equals(mode)) { + aStack = new ComparableStack(filter).makeSingular(); + } else if(ModulePatternMatcher.MODE_WILDCARD.equals(mode)) { + aStack = new ComparableStack(filter.getItem(), 1, OreDictionary.WILDCARD_VALUE); + } else if(mode != null) { + aStack = new OreDictStack(mode); + } + + if(aStack == null) continue; + + if(stock == null || !this.matcher.isValidForFilter(filter, i, stock)) request.add(aStack); + } + return new RequestNode(pos, this.reachableNodes, request); + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java new file mode 100644 index 000000000..f14fb0f99 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java @@ -0,0 +1,101 @@ +package com.hbm.tileentity.network; + +import java.util.List; + +import com.hbm.entity.item.EntityDeliveryDrone; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketReceiver, IDroneLinkable { + + public int height = 5; + public int nextX = -1; + public int nextY = -1; + public int nextZ = -1; + + @Override + public void updateEntity() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + + if(!worldObj.isRemote) { + + if(nextY != -1) { + List drones = worldObj.getEntitiesWithinAABB(EntityDeliveryDrone.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 1, zCoord + 1).offset(dir.offsetX * height, dir.offsetY * height, dir.offsetZ * height)); + for(EntityDeliveryDrone drone : drones) { + if(Vec3.createVectorHelper(drone.motionX, drone.motionY, drone.motionZ).lengthVector() < 0.05) { + drone.setTarget(nextX + 0.5, nextY, nextZ + 0.5); + } + } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("height", height); + data.setIntArray("pos", new int[] {nextX, nextY, nextZ}); + INBTPacketReceiver.networkPack(this, data, 15); + } else { + + if(nextY != -1 && worldObj.getTotalWorldTime() % 2 == 0) { + double x = xCoord + height * dir.offsetX + 0.5; + double y = yCoord + height * dir.offsetY + 0.5; + double z = zCoord + height * dir.offsetZ + 0.5; + + worldObj.spawnParticle("reddust", x, y, z, 0, 0, 0); + } + } + } + + @Override + public BlockPos getPoint() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + return new BlockPos(xCoord, yCoord, zCoord).offset(dir, height); + } + + @Override + public void setNextTarget(int x, int y, int z) { + this.nextX = x; + this.nextY = y; + this.nextZ = z; + this.markDirty(); + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.height = nbt.getInteger("height"); + int[] pos = nbt.getIntArray("pos"); + this.nextX = pos[0]; + this.nextY = pos[1]; + this.nextZ = pos[2]; + } + + public void addHeight(int h) { + height += h; + height = MathHelper.clamp_int(height, 1, 15); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.height = nbt.getInteger("height"); + int[] pos = nbt.getIntArray("pos"); + this.nextX = pos[0]; + this.nextY = pos[1]; + this.nextZ = pos[2]; + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setInteger("height", height); + nbt.setIntArray("pos", new int[] {nextX, nextY, nextZ}); + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java new file mode 100644 index 000000000..677078341 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java @@ -0,0 +1,43 @@ +package com.hbm.tileentity.network; + +import com.hbm.tileentity.network.RequestNetwork.PathNode; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityDroneWaypointRequest extends TileEntityRequestNetwork { + + public int height = 5; + + @Override + public BlockPos getCoord() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + return new BlockPos(xCoord + dir.offsetX * height, yCoord + dir.offsetY * height, zCoord + dir.offsetZ * height); + } + + public void addHeight(int h) { + height += h; + height = MathHelper.clamp_int(height, 1, 15); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.height = nbt.getInteger("height"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setInteger("height", height); + } + + @Override + public PathNode createNode(BlockPos pos) { + return new PathNode(pos, this.reachableNodes); + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java b/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java new file mode 100644 index 000000000..6e1a226dd --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java @@ -0,0 +1,27 @@ +package com.hbm.tileentity.network; + +import api.hbm.fluid.PipeNet; + +public class TileEntityFluidValve extends TileEntityPipeBaseNT { + + @Override + public boolean canUpdate() { + return this.worldObj != null && this.getBlockMetadata() == 1 && super.canUpdate(); + } + + public void updateState() { + + if(this.getBlockMetadata() == 0 && this.network != null) { + this.network.destroy(); + this.network = null; + } + + if(this.getBlockMetadata() == 1) { + this.connect(); + + if(this.getPipeNet(type) == null) { + new PipeNet(type).joinLink(this); + } + } + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java b/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java index 71e0c0104..c238da297 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java @@ -107,16 +107,16 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor } @Override - public long transferFluid(FluidType type, long fluid) { + public long transferFluid(FluidType type, int pressure, long fluid) { if(this.network == null) return fluid; - return this.network.transferFluid(fluid); + return this.network.transferFluid(fluid, pressure); } @Override - public long getDemand(FluidType type) { + public long getDemand(FluidType type, int pressure) { return 0; } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPipeExhaust.java b/src/main/java/com/hbm/tileentity/network/TileEntityPipeExhaust.java new file mode 100644 index 000000000..992aca682 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPipeExhaust.java @@ -0,0 +1,115 @@ +package com.hbm.tileentity.network; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.util.Compat; + +import api.hbm.fluid.IFluidConductor; +import api.hbm.fluid.IPipeNet; +import api.hbm.fluid.PipeNet; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityPipeExhaust extends TileEntity implements IFluidConductor { + + public IPipeNet[] nets = new IPipeNet[3]; + + public FluidType[] getSmokes() { + return new FluidType[] {Fluids.SMOKE, Fluids.SMOKE_LEADED, Fluids.SMOKE_POISON}; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote && canUpdate()) { + + for(int i = 0; i < 3; i++) nets[i] = null; + + for(FluidType type : getSmokes()) { + this.connect(type); + + if(this.getPipeNet(type) == null) { + this.setPipeNet(type, new PipeNet(type).joinLink(this)); + } + } + } + } + + protected void connect(FluidType type) { + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + TileEntity te = Compat.getTileStandard(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + + if(te instanceof IFluidConductor) { + + IFluidConductor conductor = (IFluidConductor) te; + + if(!conductor.canConnect(type, dir.getOpposite())) + continue; + + if(this.getPipeNet(type) == null && conductor.getPipeNet(type) != null) { + conductor.getPipeNet(type).joinLink(this); + } + + if(this.getPipeNet(type) != null && conductor.getPipeNet(type) != null && this.getPipeNet(type) != conductor.getPipeNet(type)) { + conductor.getPipeNet(type).joinNetworks(this.getPipeNet(type)); + } + } + } + } + + @Override + public void invalidate() { + super.invalidate(); + + if(!worldObj.isRemote) { + + for(int i = 0; i < 3; i++) { + if(nets[i] != null) { + nets[i].destroy(); + } + } + } + } + @Override + public boolean canUpdate() { + + if(this.isInvalid()) return false; + + for(IPipeNet net : nets) { + if(net == null || !net.isValid()) { + return true; + } + } + + return false; + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + return dir != ForgeDirection.UNKNOWN && (type == Fluids.SMOKE || type == Fluids.SMOKE_LEADED || type == Fluids.SMOKE_POISON); + } + + @Override + public long getDemand(FluidType type, int pressure) { + return 0; + } + + @Override + public IPipeNet getPipeNet(FluidType type) { + + if(type == Fluids.SMOKE) return nets[0]; + if(type == Fluids.SMOKE_LEADED) return nets[1]; + if(type == Fluids.SMOKE_POISON) return nets[2]; + return null; + } + + @Override + public void setPipeNet(FluidType type, IPipeNet network) { + + if(type == Fluids.SMOKE) nets[0] = network; + if(type == Fluids.SMOKE_LEADED) nets[1] = network; + if(type == Fluids.SMOKE_POISON) nets[2] = network; + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java b/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java index c55fe51d7..09e335094 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java @@ -19,13 +19,13 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { public List connected = new ArrayList(); - public static boolean canConnect(TileEntityPylonBase first, TileEntityPylonBase second) { + public static int canConnect(TileEntityPylonBase first, TileEntityPylonBase second) { if(first.getConnectionType() != second.getConnectionType()) - return false; + return 1; if(first == second) - return false; + return 2; double len = Math.min(first.getMaxWireLength(), second.getMaxWireLength()); @@ -38,7 +38,7 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { (secondPos.zCoord) - (firstPos.zCoord) ); - return len >= delta.lengthVector(); + return len >= delta.lengthVector() ? 0 : 3; } public void addConnection(int x, int y, int z) { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java new file mode 100644 index 000000000..5f2e68975 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java @@ -0,0 +1,253 @@ +package com.hbm.tileentity.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.gui.GuiScreenRadioTelex; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.network.RTTYSystem.RTTYChannel; +import com.hbm.util.ItemStackUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiver, IControlReceiver, IGUIProvider { + + public static final int lineWidth = 33; + public String txChannel = ""; + public String rxChannel = ""; + public String[] txBuffer = new String[] {"", "", "", "", ""}; + public String[] rxBuffer = new String[] {"", "", "", "", ""}; + public int sendingLine = 0; + public int sendingIndex = 0; + public boolean isSending = false; + public int sendingWait = 0; + public int writingLine = 0; + public boolean printAfterRx = false; + public boolean deleteOnReceive = true; + public char sendingChar = ' '; + + public static final char eol = '\n'; + public static final char eot = '\u0004'; + public static final char bell = '\u0007'; + public static final char print = '\u000c'; + public static final char pause = '\u0016'; + public static final char clear = '\u007f'; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.sendingChar = ' '; + + if(this.isSending && this.txChannel.isEmpty()) this.isSending = false; + + if(this.isSending) { + + if(sendingWait > 0) { + sendingWait--; + } else { + + String line = txBuffer[sendingLine]; + + if(line.length() > sendingIndex) { + char c = line.charAt(sendingIndex); + sendingIndex++; + if(c == pause) { + sendingWait = 20; + } else { + RTTYSystem.broadcast(worldObj, this.txChannel, c); + this.sendingChar = c; + } + } else { + + if(sendingLine >= 4) { + this.isSending = false; + RTTYSystem.broadcast(worldObj, this.txChannel, eot); + this.sendingLine = 0; + this.sendingIndex = 0; + } else { + RTTYSystem.broadcast(worldObj, this.txChannel, eol); + this.sendingLine++; + this.sendingIndex = 0; + } + } + } + } + + if(!this.rxChannel.isEmpty()) { + RTTYChannel chan = RTTYSystem.listen(worldObj, this.rxChannel); + + if(chan != null && chan.signal instanceof Character && (chan.timeStamp > worldObj.getTotalWorldTime() - 2 && chan.timeStamp != -1)) { + char c = (char) chan.signal; + + if(this.deleteOnReceive) { + this.deleteOnReceive = false; + for(int i = 0; i < 5; i++) this.rxBuffer[i] = ""; + this.writingLine = 0; + } + + if(c == eot) { + if(this.printAfterRx) { + this.printAfterRx = false; + this.print(); + } + this.deleteOnReceive = true; + } else if(c == eol) { + if(this.writingLine < 4) this.writingLine++; + this.markDirty(); + } else if(c == bell) { + worldObj.playSoundEffect(xCoord, yCoord, zCoord, "random.orb", 2F, 0.5F); + } else if(c == print) { + this.printAfterRx = true; + } else if(c == clear) { + for(int i = 0; i < 5; i++) this.rxBuffer[i] = ""; + this.writingLine = 0; + } else { + this.rxBuffer[this.writingLine] += c; + this.markDirty(); + } + } + } + + NBTTagCompound data = new NBTTagCompound(); + for(int i = 0; i < 5; i++) { + data.setString("tx" + i, txBuffer[i]); + data.setString("rx" + i, rxBuffer[i]); + } + data.setString("txChan", txChannel); + data.setString("rxChan", rxChannel); + data.setInteger("sending", sendingChar); + INBTPacketReceiver.networkPack(this, data, 16); + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + + for(int i = 0; i < 5; i++) { + txBuffer[i] = nbt.getString("tx" + i); + rxBuffer[i] = nbt.getString("rx" + i); + } + this.txChannel = nbt.getString("txChan"); + this.rxChannel = nbt.getString("rxChan"); + this.sendingChar = (char) nbt.getInteger("sending"); + } + + @Override + public void receiveControl(NBTTagCompound data) { + + for(int i = 0; i < 5; i++) { + if(data.hasKey("tx" + i)) this.txBuffer[i] = data.getString("tx" + i); + } + + String cmd = data.getString("cmd"); + + if("snd".equals(cmd) && !this.isSending) { + this.isSending = true; + this.sendingLine = 0; + this.sendingIndex = 0; + } + + if("rxprt".equals(cmd)) { + print(); + } + + if("rxcls".equals(cmd)) { + for(int i = 0; i < 5; i++) this.rxBuffer[i] = ""; + this.writingLine = 0; + } + + if("sve".equals(cmd)) { + this.txChannel = data.getString("txChan"); + this.rxChannel = data.getString("rxChan"); + this.markDirty(); + } + } + + public void print() { + ItemStack stack = new ItemStack(Items.paper); + List text = new ArrayList(); + for(int i = 0; i < 5; i++) { + if(!rxBuffer[i].isEmpty()) text.add(rxBuffer[i]); + } + ItemStackUtil.addTooltipToStack(stack, text.toArray(new String[0])); + stack.setStackDisplayName("Message"); + worldObj.spawnEntityInWorld(new EntityItem(worldObj, xCoord + 0.5, yCoord + 1, zCoord + 0.5, stack)); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 16 * 16; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + for(int i = 0; i < 5; i++) { + txBuffer[i] = nbt.getString("tx" + i); + rxBuffer[i] = nbt.getString("rx" + i); + } + this.txChannel = nbt.getString("txChan"); + this.rxChannel = nbt.getString("rxChan"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + for(int i = 0; i < 5; i++) { + nbt.setString("tx" + i, txBuffer[i]); + nbt.setString("rx" + i, rxBuffer[i]); + } + nbt.setString("txChan", txChannel); + nbt.setString("rxChan", rxChannel); + } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GuiScreenRadioTelex(this); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 2, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java new file mode 100644 index 000000000..809fec28f --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java @@ -0,0 +1,125 @@ +package com.hbm.tileentity.network; + +import com.hbm.interfaces.IControlReceiver; +import com.hbm.module.ModulePatternMatcher; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Compat; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityRadioTorchCounter extends TileEntityMachineBase implements IControlReceiver { + + public String[] channel; + public int[] lastCount; + public boolean polling = false; + public ModulePatternMatcher matcher; + + public TileEntityRadioTorchCounter() { + super(3); + this.channel = new String[3]; + for(int i = 0; i < 3; i++) this.channel[i] = ""; + this.lastCount = new int[3]; + this.matcher = new ModulePatternMatcher(3); + } + + @Override + public String getName() { + return "container.rttyCounter"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite(); + + TileEntity tile = Compat.getTileStandard(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + if(tile instanceof IInventory) { + IInventory inv = (IInventory) tile; + ItemStack[] invSlots = new ItemStack[inv.getSizeInventory()]; + for(int i = 0; i < invSlots.length; i++) invSlots[i] = inv.getStackInSlot(i); + + for(int i = 0; i < 3; i++) { + if(channel[i].isEmpty()) continue; + if(slots[i] == null) continue; + ItemStack pattern = slots[i]; + + int count = 0; + + for(int j = 0; j < invSlots.length; j++) { + if(invSlots[j] != null && matcher.isValidForFilter(pattern, i, invSlots[j])) { + count += invSlots[j].stackSize; + } + } + + if(this.polling || this.lastCount[i] != count) { + RTTYSystem.broadcast(worldObj, this.channel[i], count); + } + + this.lastCount[i] = count; + } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("polling", polling); + data.setIntArray("last", lastCount); + this.matcher.writeToNBT(data); + for(int i = 0; i < 3; i++) if(channel[i] != null) data.setString("c" + i, channel[i]); + this.networkPack(data, 15); + } + } + + public void networkUnpack(NBTTagCompound nbt) { + this.polling = nbt.getBoolean("polling"); + this.lastCount = nbt.getIntArray("last"); + this.matcher.modes = new String[this.matcher.modes.length]; + this.matcher.readFromNBT(nbt); + for(int i = 0; i < 3; i++) this.channel[i] = nbt.getString("c" + i); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.polling = nbt.getBoolean("p"); + for(int i = 0; i < 3; i++) { + this.channel[i] = nbt.getString("c" + i); + this.lastCount[i] = nbt.getInteger("l" + i); + } + this.matcher.readFromNBT(nbt); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("p", polling); + for(int i = 0; i < 3; i++) { + if(channel[i] != null) nbt.setString("c" + i, channel[i]); + nbt.setInteger("l" + i, lastCount[i]); + } + this.matcher.writeToNBT(nbt); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("polling")) { + this.polling = !this.polling; + this.markChanged(); + } else { + System.out.println("guh"); + for(int i = 0; i < 3; i++) { + this.channel[i] = data.getString("c" + i); + } + this.markChanged(); + } + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java new file mode 100644 index 000000000..645374a1e --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java @@ -0,0 +1,189 @@ +package com.hbm.tileentity.network; + +import java.util.HashMap; +import java.util.Iterator; + +import com.hbm.tileentity.network.RequestNetwork.PathNode; +import com.hbm.util.HashedSet; +import com.hbm.util.ParticleUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; + +/** + * i can see it clearly + * this simple idea, this concept of 4 individually acting objects performing basic tasks + * it is all spiraling out of control + * in a giant mess of nested generics, magic numbers and static global variables + * may god have mercy on my soul + * + * @author hbm + * + */ +public abstract class TileEntityRequestNetwork extends TileEntity { + + public HashedSet reachableNodes = new HashedSet(); + public HashedSet knownNodes = new HashedSet(); + public static final int maxRange = 24; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 20 == 0) { + BlockPos pos = getCoord(); + // push new node + push(worldObj, createNode(pos)); + + // remove known nodes that no longer exist + // since we can assume a sane number of nodes to exist at any given time, we can run this check in full every second + Iterator it = knownNodes.iterator(); + HashedSet localNodes = this.getAllLocalNodes(worldObj, xCoord, zCoord, 2); // this bit may spiral into multiple nested hashtable lookups but it's limited to only a few chunks so it shouldn't be an issue + localNodes.remove(pos); + while(it.hasNext()) { + PathNode node = it.next(); + if(!localNodes.contains(node)) { + reachableNodes.remove(node); + it.remove(); + } + } + + // draw debug crap + for(PathNode known : knownNodes) { + if(reachableNodes.contains(known)) ParticleUtil.spawnDroneLine(worldObj, + pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, + (known.pos.getX() - pos.getX()) / 2D, (known.pos.getY() - pos.getY()) / 2D, (known.pos.getZ() - pos.getZ()) / 2D, + reachableNodes.contains(known) ? 0x00ff00 : 0xff0000); + } + + /*NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "debug"); + data.setInteger("color", 0x0000ff); + data.setFloat("scale", 1.5F); + data.setString("text", knownNodes.size() + " / " + reachableNodes.size() + " / " + localNodes.size()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + */ + + //both following checks run the `hasPath` function which is costly, so it only runs one op at a time + + //rescan known nodes + for(PathNode known : knownNodes) { + + if(!hasPath(worldObj, pos, known.pos)) { + reachableNodes.remove(known); + } else { + reachableNodes.add(known); + } + } + + //discover new nodes + int newNodeLimit = 5; + for(PathNode node : localNodes) { + + if(!knownNodes.contains(node) && !node.equals(pos)) { + newNodeLimit--; + knownNodes.add(node); + if(hasPath(worldObj, pos, node.pos)) reachableNodes.add(node); + } + + if(newNodeLimit <= 0) break; + } + } + } + } + + public abstract PathNode createNode(BlockPos pos); + + public BlockPos getCoord() { + return new BlockPos(xCoord, yCoord + 1, zCoord); + } + + /** + * Performs a bidirectional scan to see if the nodes have line of sight + * @param world + * @param pos1 + * @param pos2 + * @return + */ + public static boolean hasPath(World world, BlockPos pos1, BlockPos pos2) { + Vec3 vec1 = Vec3.createVectorHelper(pos1.getX() + 0.5, pos1.getY() + 0.5, pos1.getZ() + 0.5); + Vec3 vec2 = Vec3.createVectorHelper(pos2.getX() + 0.5, pos2.getY() + 0.5, pos2.getZ() + 0.5); + Vec3 vec3 = vec1.subtract(vec2); + if(vec3.lengthVector() > maxRange) return false; + //for some fucking reason beyond any human comprehension, this function will randomly yield incorrect results but only from one side + //therefore we just run the stupid fucking thing twice and then compare the results + //thanks for this marvelous piece of programming, mojang + MovingObjectPosition mop0 = world.func_147447_a(vec1, vec2, false, true, false); + MovingObjectPosition mop2 = world.func_147447_a(vec2, vec1, false, true, false); + return (mop0 == null || mop0.typeOfHit == mop0.typeOfHit.MISS) && (mop2 == null || mop2.typeOfHit == mop2.typeOfHit.MISS); + } + + /** + * Adds the position to that chunk's node list. + * @param world + * @param x + * @param y + * @param z + */ + public static void push(World world, PathNode node) { + + HashMap> coordMap = RequestNetwork.activeWaypoints.get(world); + + if(coordMap == null) { + coordMap = new HashMap(); + RequestNetwork.activeWaypoints.put(world, coordMap); + } + + ChunkCoordIntPair chunkPos = new ChunkCoordIntPair(node.pos.getX() >> 4, node.pos.getZ() >> 4); + HashedSet posList = coordMap.get(chunkPos); + + if(posList == null) { + posList = new HashedSet(); + coordMap.put(chunkPos, posList); + } + + posList.add(node); + } + + /** + * Gets all active nodes in a 5x5 chunk area, centered around the given position. + * Used for finding neighbors to check connections to. + * @param world + * @param x + * @param z + * @return + */ + public static HashedSet getAllLocalNodes(World world, int x, int z, int range) { + + HashedSet nodes = new HashedSet(); + HashedSet pos = new HashedSet(); + + x >>= 4; + z >>= 4; + + HashMap> coordMap = RequestNetwork.activeWaypoints.get(world); + + if(coordMap == null) return nodes; + + for(int i = -range; i <= range; i++) { + for(int j = -range; j <= range; j++) { + + HashedSet nodeList = coordMap.get(new ChunkCoordIntPair(x + i, z + j)); + + if(nodeList != null) for(PathNode node : nodeList) { + if(!pos.contains(node.pos)) { + nodes.add(node); + //pos.add(node.pos); + } + } + } + } + + return nodes; + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java new file mode 100644 index 000000000..71fc659f9 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java @@ -0,0 +1,147 @@ +package com.hbm.tileentity.network; + +import com.hbm.packet.NBTPacket; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; + +/** + * "Multiple inheritance is bad because...uhhhh...i guess if you do it wrong then it can lead to bad things" + * ~ genuinely retarded people on StackOverflow + * like yeah, doing things wrong can lead to bad things + * no shit + * just like how java operates already + * you fucking dork + * + * this class has to extend TileEntityRequestNetwork for all the network stuff to work + * but it also needs slots and all the container boilerplate crap + * since multiple inheritance is a sin punishable by stoning, i had to cram the entire contents of TileEntityMachineBase into this class + * is this good code? is this what you wanted? was it worth avoiding those hypothetical scenarios where multiple inheritance is le bad? + * i believe that neither heaven nor hell awaits me when all is said and done + * saint peter will send me to southend + * + * @author hbm + */ +public abstract class TileEntityRequestNetworkContainer extends TileEntityRequestNetwork implements ISidedInventory { + + public ItemStack slots[]; + + private String customName; + + public TileEntityRequestNetworkContainer(int scount) { + slots = new ItemStack[scount]; + } + + @Override public int getSizeInventory() { return slots.length; } + @Override public ItemStack getStackInSlot(int i) { return slots[i]; } + @Override public void openInventory() { } + @Override public void closeInventory() { } + @Override public boolean isItemValidForSlot(int slot, ItemStack itemStack) { return false; } + @Override public boolean canInsertItem(int slot, ItemStack itemStack, int side) { return this.isItemValidForSlot(slot, itemStack); } + @Override public boolean canExtractItem(int slot, ItemStack itemStack, int side) { return false; } + @Override public int[] getAccessibleSlotsFromSide(int side) { return new int[] { }; } + + public void markChanged() { + this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); + } + + @Override + public ItemStack getStackInSlotOnClosing(int i) { + if(slots[i] != null) + { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } else { + return null; + } + } + + @Override + public void setInventorySlotContents(int i, ItemStack itemStack) { + slots[i] = itemStack; + if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) + { + itemStack.stackSize = getInventoryStackLimit(); + } + } + + @Override public String getInventoryName() { return this.hasCustomInventoryName() ? this.customName : getName(); } + public abstract String getName(); + @Override public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } + public void setCustomName(String name) { this.customName = name; } + @Override public int getInventoryStackLimit() { return 64; } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { + return false; + } else { + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128; + } + } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + if(slots[slot] != null) { + + if(slots[slot].stackSize <= amount) { + ItemStack itemStack = slots[slot]; + slots[slot] = null; + return itemStack; + } + + ItemStack itemStack1 = slots[slot].splitStack(amount); + if(slots[slot].stackSize == 0) { + slots[slot] = null; + } + + return itemStack1; + } else { + return null; + } + } + + public void networkPack(NBTTagCompound nbt, int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + NBTTagList list = nbt.getTagList("items", 10); + + for(int i = 0; i < list.tagCount(); i++) + { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + byte b0 = nbt1.getByte("slot"); + if(b0 >= 0 && b0 < slots.length) + { + slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); + } + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + NBTTagList list = new NBTTagList(); + + for(int i = 0; i < slots.length; i++) + { + if(slots[i] != null) + { + NBTTagCompound nbt1 = new NBTTagCompound(); + nbt1.setByte("slot", (byte)i); + slots[i].writeToNBT(nbt1); + list.appendTag(nbt1); + } + } + nbt.setTag("items", list); + } +} diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index a32914fc3..c479982db 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -303,13 +303,14 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen if(tPos != null) this.alignTurret(); } else { - this.target = null; this.tPos = null; } if(!worldObj.isRemote) { + if(!isOn()) this.targetQueue.clear(); + if(this.target != null && !target.isEntityAlive()) { this.target = null; this.tPos = null; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java index 35d211872..4257d55b6 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java @@ -3,12 +3,24 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; +import com.hbm.tileentity.IRadarCommandReceiver; + import net.minecraft.entity.Entity; import net.minecraft.util.Vec3; -public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBaseNT { +public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBaseNT implements IRadarCommandReceiver { protected List targetQueue = new ArrayList(); + + public boolean sendCommandPosition(int x, int y, int z) { + this.enqueueTarget(x + 0.5, y, z + 0.5); + return true; + } + + public boolean sendCommandEntity(Entity target) { + this.enqueueTarget(target.posX, target.posY, target.posZ); + return true; + } public void enqueueTarget(double x, double y, double z) { diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index ef43786c1..fa55c200b 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -3,13 +3,15 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.function.BiFunction; import com.hbm.blocks.BlockDummyable; import com.hbm.entity.logic.EntityBomber; -import com.hbm.entity.missile.EntityMissileBaseAdvanced; +import com.hbm.entity.missile.EntityMissileBaseNT; import com.hbm.entity.missile.EntityMissileCustom; import com.hbm.entity.missile.EntitySiegeDropship; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.train.EntityRailCarBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; @@ -24,6 +26,7 @@ import com.hbm.packet.PacketDispatcher; import com.hbm.particle.SpentCasing; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.CompatExternal; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -353,7 +356,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - EntityBulletBase proj = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.getKey(bullet)); + EntityBulletBaseNT proj = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.getKey(bullet)); proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); proj.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, bullet.velocity, bullet.spread); @@ -592,8 +595,20 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(e.isDead || !e.isEntityAlive()) return false; - + for(Class c : CompatExternal.turretTargetBlacklist) if(c.isAssignableFrom(e.getClass())) return false; + + for(Class c : CompatExternal.turretTargetCondition.keySet()) { + if(c.isAssignableFrom(e.getClass())) { + BiFunction lambda = CompatExternal.turretTargetCondition.get(c); + if(lambda != null) { + int result = lambda.apply(e, this); + if(result == -1) return false; + if(result == 1) return true; + } + } + } + List wl = getWhitelist(); if(wl != null) { @@ -613,6 +628,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(e instanceof IAnimals) return true; if(e instanceof INpc) return true; + for(Class c : CompatExternal.turretTargetFriendly) if(c.isAssignableFrom(e.getClass())) return true; } if(targetMobs) { @@ -621,23 +637,27 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(e instanceof EntityDragon) return false; if(e instanceof EntityDragonPart) return true; if(e instanceof IMob) return true; + for(Class c : CompatExternal.turretTargetHostile) if(c.isAssignableFrom(e.getClass())) return true; } if(targetMachines) { - if(e instanceof EntityMissileBaseAdvanced) return true; + if(e instanceof EntityMissileBaseNT) return true; if(e instanceof EntityMissileCustom) return true; if(e instanceof EntityMinecart) return true; + if(e instanceof EntityRailCarBase) return true; if(e instanceof EntityBomber) return true; if(e instanceof EntitySiegeDropship) return true; + for(Class c : CompatExternal.turretTargetMachine) if(c.isAssignableFrom(e.getClass())) return true; } - if(targetPlayers && e instanceof EntityPlayer) { + if(targetPlayers ) { if(e instanceof FakePlayer) return false; - return true; + if(e instanceof EntityPlayer) return true; + for(Class c : CompatExternal.turretTargetPlayer) if(c.isAssignableFrom(e.getClass())) return true; } return false; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java index 3121134f9..01a63ffab 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.BlockDummyable; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.interfaces.IFluidAcceptor; @@ -113,7 +113,7 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - EntityBulletBase proj = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.getKey(conf)); + EntityBulletBaseNT proj = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.getKey(conf)); proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); proj.overrideDamage = (float) (trait.getHeatEnergy() / 500_000F); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java index 0b0718d44..050040197 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java @@ -222,6 +222,8 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem if(!worldObj.isRemote) { + if(!isOn()) this.targetQueue.clear(); + if(this.target != null && !target.isEntityAlive()) { this.target = null; this.tPos = null; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java index ea00c1637..91dc3e9ab 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java @@ -3,13 +3,18 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.gui.GUITurretMaxwell; import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.ModDamageSource; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; import com.hbm.util.EntityDamageUtil; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -21,10 +26,11 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT { +public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT implements IUpgradeInfoProvider { @Override public String getName() { @@ -64,6 +70,41 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT { return ammoStacks; } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.EFFECT || type == UpgradeType.POWER || type == UpgradeType.AFTERBURN || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.turret_maxwell)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + "Damage +0." + (level * 25) + "/t"); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 3) + "%")); + } + if(type == UpgradeType.EFFECT) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_RANGE, "+" + (level * 3) + "m")); + } + if(type == UpgradeType.AFTERBURN) { + info.add(EnumChatFormatting.GREEN + "Afterburn +3s"); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 27; + if(type == UpgradeType.POWER) return 27; + if(type == UpgradeType.EFFECT) return 27; + if(type == UpgradeType.AFTERBURN) return 27; + if(type == UpgradeType.OVERDRIVE) return 27; + return 0; + } @Override public double getAcceptableInaccuracy() { diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java index c23f2595e..f6c95d847 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java @@ -3,7 +3,7 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -155,7 +155,7 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - EntityBulletBase proj = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.getKey(bullet)); + EntityBulletBaseNT proj = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.getKey(bullet)); proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); proj.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, bullet.velocity * 0.75F, bullet.spread); diff --git a/src/main/java/com/hbm/util/AchievementHandler.java b/src/main/java/com/hbm/util/AchievementHandler.java new file mode 100644 index 000000000..3d395a43e --- /dev/null +++ b/src/main/java/com/hbm/util/AchievementHandler.java @@ -0,0 +1,67 @@ +package com.hbm.util; + +import java.util.HashMap; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums; +import com.hbm.items.ModItems; +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.Achievement; + +public class AchievementHandler { + + public static HashMap craftingAchievements = new HashMap(); + + public static void register() { + craftingAchievements.put(new ComparableStack(ModItems.gun_mp40), MainRegistry.achFreytag); + craftingAchievements.put(new ComparableStack(ModItems.piston_selenium), MainRegistry.achSelenium); + craftingAchievements.put(new ComparableStack(ModItems.gun_b92), MainRegistry.achSelenium); + craftingAchievements.put(new ComparableStack(ModItems.battery_potatos), MainRegistry.achPotato); + craftingAchievements.put(new ComparableStack(ModItems.gun_revolver_pip), MainRegistry.achC44); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_press), MainRegistry.achBurnerPress); + craftingAchievements.put(new ComparableStack(ModItems.rbmk_fuel_empty), MainRegistry.achRBMK); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_chemplant), MainRegistry.achChemplant); + craftingAchievements.put(new ComparableStack(ModBlocks.concrete_smooth), MainRegistry.achConcrete); + craftingAchievements.put(new ComparableStack(ModBlocks.concrete_asbestos), MainRegistry.achConcrete); + craftingAchievements.put(new ComparableStack(ModItems.ingot_polymer), MainRegistry.achPolymer); + craftingAchievements.put(new ComparableStack(ModItems.ingot_desh), MainRegistry.achDesh); + craftingAchievements.put(new ComparableStack(ModItems.gem_tantalium), MainRegistry.achTantalum); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_gascent), MainRegistry.achGasCent); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_centrifuge), MainRegistry.achCentrifuge); + craftingAchievements.put(new ComparableStack(ModItems.ingot_schrabidium), MainRegistry.achSchrab); + craftingAchievements.put(new ComparableStack(ModItems.nugget_schrabidium), MainRegistry.achSchrab); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_crystallizer), MainRegistry.achAcidizer); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_silex), MainRegistry.achSILEX); + craftingAchievements.put(new ComparableStack(ModItems.nugget_technetium), MainRegistry.achTechnetium); + craftingAchievements.put(new ComparableStack(ModBlocks.struct_watz_core), MainRegistry.achWatz); + craftingAchievements.put(new ComparableStack(ModItems.nugget_bismuth), MainRegistry.achBismuth); + craftingAchievements.put(new ComparableStack(ModItems.nugget_am241), MainRegistry.achBreeding); + craftingAchievements.put(new ComparableStack(ModItems.nugget_am242), MainRegistry.achBreeding); + craftingAchievements.put(new ComparableStack(ModItems.missile_nuclear), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.missile_nuclear_cluster), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.missile_doomsday), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.mp_warhead_10_nuclear), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.mp_warhead_10_nuclear_large), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.mp_warhead_15_nuclear), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.mp_warhead_15_nuclear_shark), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.mp_warhead_15_boxcar), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModBlocks.struct_iter_core), MainRegistry.achFusion); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_difurnace_off), MainRegistry.achBlastFurnace); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_assembler), MainRegistry.achAssembly); + craftingAchievements.put(new ComparableStack(ModItems.billet_pu_mix), MainRegistry.achChicagoPile); + craftingAchievements.put(new ComparableStack(ModItems.ammo_4gauge, 1, ItemAmmoEnums.Ammo4Gauge.VAMPIRE.ordinal()), MainRegistry.achWitchtaunter); + } + + public static void fire(EntityPlayer player, ItemStack stack) { + if(player.worldObj.isRemote) return; + ComparableStack comp = new ComparableStack(stack).makeSingular(); + Achievement achievement = craftingAchievements.get(comp); + if(achievement != null) { + player.triggerAchievement(achievement); + } + } +} diff --git a/src/main/java/com/hbm/util/ArmorUtil.java b/src/main/java/com/hbm/util/ArmorUtil.java index 21bba6f78..33272462b 100644 --- a/src/main/java/com/hbm/util/ArmorUtil.java +++ b/src/main/java/com/hbm/util/ArmorUtil.java @@ -2,6 +2,7 @@ package com.hbm.util; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.handler.ArmorModHandler; import com.hbm.handler.HazmatRegistry; @@ -61,6 +62,7 @@ public class ArmorUtil { ArmorRegistry.registerHazard(ModItems.schrabidium_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.euphemium_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.rpa_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.envsuit_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); //Ob ihr wirklich richtig steht, seht ihr wenn das Licht angeht! registerIfExists(Compat.MOD_GT6, "gt.armor.hazmat.universal.head", HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); @@ -241,7 +243,7 @@ public class ArmorUtil { for(String metal : metals) { - if(name.toLowerCase().contains(metal)) + if(name.toLowerCase(Locale.US).contains(metal)) return true; } diff --git a/src/main/java/com/hbm/util/BobMathUtil.java b/src/main/java/com/hbm/util/BobMathUtil.java index bfb8cc6f6..dde5fe762 100644 --- a/src/main/java/com/hbm/util/BobMathUtil.java +++ b/src/main/java/com/hbm/util/BobMathUtil.java @@ -1,5 +1,6 @@ package com.hbm.util; +import java.lang.reflect.Field; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.NumberFormat; @@ -9,6 +10,7 @@ import java.util.List; import javax.annotation.Nonnegative; +import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; @@ -193,4 +195,15 @@ public class BobMathUtil { public static double squirt(double x) { return Math.sqrt(x + 1D / ((x + 2D) * (x + 2D))) - 1D / (x + 2D); } + + /** A convenient way to re-define the value of pi, should the laws of nature change. */ + public static void setPi(double pi) { + Field field = ReflectionHelper.findField(Math.class, "PI"); + try { field.setDouble(null, pi); } catch(Exception e) { } + } + + public static double angularDifference(double alpha, double beta) { + double delta = (beta - alpha + 180) % 360 - 180; + return delta < -180 ? delta + 360 : delta; + } } diff --git a/src/main/java/com/hbm/util/ChatBuilder.java b/src/main/java/com/hbm/util/ChatBuilder.java index 0140af364..9fc0c6169 100644 --- a/src/main/java/com/hbm/util/ChatBuilder.java +++ b/src/main/java/com/hbm/util/ChatBuilder.java @@ -1,10 +1,15 @@ package com.hbm.util; +import java.util.ArrayList; +import java.util.List; +import java.util.ListIterator; + import net.minecraft.util.ChatComponentStyle; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IChatComponent; public class ChatBuilder { @@ -46,6 +51,24 @@ public class ChatBuilder { return this; } + /** Will recursively go over all IChatComponents added to the root and then set the style */ + public ChatBuilder colorAll(EnumChatFormatting format) { + + List list = new ArrayList(); + list.add(text); + + ListIterator it = list.listIterator(); + + while(it.hasNext()) { + Object o = it.next(); + IChatComponent component = (IChatComponent) o; + component.getChatStyle().setColor(format); + for(Object s : component.getSiblings()) it.add(s); + } + + return this; + } + public ChatComponentText flush() { return this.text; } diff --git a/src/main/java/com/hbm/util/Compat.java b/src/main/java/com/hbm/util/Compat.java index ff7da1c9d..3a8a4a9a6 100644 --- a/src/main/java/com/hbm/util/Compat.java +++ b/src/main/java/com/hbm/util/Compat.java @@ -100,24 +100,25 @@ public class Compat { public static List scrapeItemFromME(ItemStack meDrive) { List stacks = new ArrayList(); - if(meDrive != null && meDrive.hasTagCompound()) { - NBTTagCompound nbt = meDrive.getTagCompound(); - int types = nbt.getShort("it"); //ITEM_TYPE_TAG - - for(int i = 0; i < types; i++) { - NBTBase stackTag = nbt.getTag("#" + i); + try { + if(meDrive != null && meDrive.hasTagCompound()) { + NBTTagCompound nbt = meDrive.getTagCompound(); + int types = nbt.getShort("it"); //ITEM_TYPE_TAG - if(stackTag instanceof NBTTagCompound) { - NBTTagCompound compound = (NBTTagCompound) stackTag; - ItemStack stack = ItemStack.loadItemStackFromNBT(compound); + for(int i = 0; i < types; i++) { + NBTBase stackTag = nbt.getTag("#" + i); - int count = nbt.getInteger("@" + i); - stack.stackSize = count; - - stacks.add(stack); + if(stackTag instanceof NBTTagCompound) { + NBTTagCompound compound = (NBTTagCompound) stackTag; + ItemStack stack = ItemStack.loadItemStackFromNBT(compound); + + int count = nbt.getInteger("@" + i); + stack.stackSize = count; + stacks.add(stack); + } } } - } + } catch(Exception ex) { } return stacks; } diff --git a/src/main/java/com/hbm/util/CompatExternal.java b/src/main/java/com/hbm/util/CompatExternal.java index 00d1425ee..46f1fab61 100644 --- a/src/main/java/com/hbm/util/CompatExternal.java +++ b/src/main/java/com/hbm/util/CompatExternal.java @@ -1,15 +1,24 @@ package com.hbm.util; import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; +import java.util.function.BiFunction; import com.hbm.blocks.BlockDummyable; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.tileentity.machine.TileEntityDummy; +import com.hbm.tileentity.turret.TileEntityTurretSentry; import api.hbm.energy.IEnergyUser; import api.hbm.fluid.IFluidUser; import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.passive.EntityChicken; +import net.minecraft.entity.passive.EntityCow; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -125,4 +134,60 @@ public class CompatExternal { return list; } + + public static Set turretTargetPlayer = new HashSet(); + public static Set turretTargetFriendly = new HashSet(); + public static Set turretTargetHostile = new HashSet(); + public static Set turretTargetMachine = new HashSet(); + + /** + * Registers a class for turret targeting + * @param clazz is the class that should be targeted. + * @param type determines what setting the turret needs to have enabled to target this class. 0 is player, 1 is friendly, 2 is hostile and 3 is machine. + */ + public static void registerTurretTargetSimple(Class clazz, int type) { + + switch(type) { + case 0: turretTargetPlayer.add(clazz); break; + case 1: turretTargetFriendly.add(clazz); break; + case 2: turretTargetHostile.add(clazz); break; + case 3: turretTargetMachine.add(clazz); break; + } + } + + public static Set turretTargetBlacklist = new HashSet(); + + /** + * Registers a class to be fully ignored by turrets + * @param clazz is the class that should be ignored. + */ + public static void registerTurretTargetBlacklist(Class clazz) { + turretTargetBlacklist.add(clazz); + } + + public static HashMap> turretTargetCondition = new HashMap(); + + /** + * Registers a BiFunction lambda for more complex targeting compatibility + * @param clazz is the class that this rule should apply to + * @param bi is the lambda. The function should return 0 to continue with other targeting checks (i.e. do nothing), -1 to ignore this entity or 1 to target it. + * The params for this lambda are the entity and the turret in question. The type for the turret is omitted on purpose as to not require any reference of the tile entity + * class on the side of whoever is adding compat, allowing the compat class to be used entirely with reflection. + */ + public static void registerTurretTargetingCondition(Class clazz, BiFunction bi) { + turretTargetBlacklist.add(clazz); + } + + public static void compatExamples() { + // Makes all cows be targeted by turrets if player mode is active in addition to the existing rules. Applies to all entities that inherit EntityCow. + CompatExternal.registerTurretTargetSimple(EntityCow.class, 0); + // Makes all chickens ignored by turrets, also applies to entities that inherit EntityChicken like ducks. + CompatExternal.registerTurretTargetBlacklist(EntityChicken.class); + // An example for more complex turret behavior. Turrets will always target players named "Target Practice", and sentry turrets will never target players. + CompatExternal.registerTurretTargetingCondition(EntityPlayer.class, (entity, turret) -> { + if(entity.getCommandSenderName().equals("Target Practice")) return 1; + if(turret instanceof TileEntityTurretSentry) return -1; + return 0; + }); + } } diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index f7cb5d36e..c86fb2ee9 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -1,48 +1,24 @@ package com.hbm.util; -import java.lang.reflect.Field; +import java.lang.reflect.Method; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; import cpw.mods.fml.relauncher.ReflectionHelper; +import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; import net.minecraft.util.DamageSource; import net.minecraft.util.EntityDamageSource; +import net.minecraftforge.common.ForgeHooks; public class EntityDamageUtil { - public static boolean attackEntityFromIgnoreIFrame(Entity victim, DamageSource src, float damage) { - - if(!victim.attackEntityFrom(src, damage)) { - try { - Field lastDamage = ReflectionHelper.findField(EntityLivingBase.class, "lastDamage", "field_110153_bc"); - - float dmg = (float) damage + lastDamage.getFloat(victim); - - return victim.attackEntityFrom(src, dmg); - } catch (Exception x) { - return false; - } - } else { - return true; - } - } - - public static float getLastDamage(Entity victim) { - - try { - Field lastDamage = ReflectionHelper.findField(EntityLivingBase.class, "lastDamage", "field_110153_bc"); - - return lastDamage.getFloat(victim); - } catch(Exception x) { - return 0F; - } - } - public static boolean wasAttackedByV1(DamageSource source) { if(source instanceof EntityDamageSource) { @@ -64,4 +40,242 @@ public class EntityDamageUtil { return false; } + + /** + * Attacks the given entity twice, based on a piecring percentage. The second hit sets the damage source to bypass armor. + * The damage source is modified, so you can't reuse damage source instances. + */ + public static boolean attackEntityFromArmorPiercing(Entity victim, DamageSource src, float damage, float piercing) { + + if(src.isUnblockable() || piercing == 0) return victim.attackEntityFrom(src, damage); + + if(piercing == 1) { + src.setDamageBypassesArmor(); + return victim.attackEntityFrom(src, damage); + } + + boolean ret = false; + + ret |= victim.attackEntityFrom(src, damage * (1F - piercing)); + src.setDamageBypassesArmor(); + ret |= victim.attackEntityFrom(src, damage * piercing); + return ret; + } + + public static boolean attackEntityFromIgnoreIFrame(Entity victim, DamageSource src, float damage) { + + if(!victim.attackEntityFrom(src, damage)) { + + if(victim instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) victim; + + if(living.hurtResistantTime > living.maxHurtResistantTime / 2.0F) { + damage += living.lastDamage; + } + } + return victim.attackEntityFrom(src, damage); + } else { + return true; + } + } + + /** Currently just a copy of the vanilla damage code */ + public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount) { + + if(ForgeHooks.onLivingAttack(living, source, amount)) + return false; + if(living.isEntityInvulnerable()) { + return false; + } else if(living.worldObj.isRemote) { + return false; + } else { + living.entityAge = 0; + + if(living.getHealth() <= 0.0F) { + return false; + } else if(source.isFireDamage() && living.isPotionActive(Potion.fireResistance)) { + return false; + } else { + if((source == DamageSource.anvil || source == DamageSource.fallingBlock) && living.getEquipmentInSlot(4) != null) { + living.getEquipmentInSlot(4).damageItem((int) (amount * 4.0F + living.getRNG().nextFloat() * amount * 2.0F), living); + amount *= 0.75F; + } + + living.limbSwingAmount = 1.5F; + boolean flag = true; + + if((float) living.hurtResistantTime > (float) living.maxHurtResistantTime / 2.0F) { + if(amount <= living.lastDamage) { + return false; + } + + damageEntity(living, source, amount - living.lastDamage); //# + living.lastDamage = amount; + flag = false; + } else { + living.lastDamage = amount; + living.prevHealth = living.getHealth(); + living.hurtResistantTime = living.maxHurtResistantTime; + damageEntity(living, source, amount); //# + living.hurtTime = living.maxHurtTime = 10; + } + + living.attackedAtYaw = 0.0F; + Entity entity = source.getEntity(); + + if(entity != null) { + if(entity instanceof EntityLivingBase) { + living.setRevengeTarget((EntityLivingBase) entity); + } + + if(entity instanceof EntityPlayer) { + living.recentlyHit = 100; + living.attackingPlayer = (EntityPlayer) entity; + } else if(entity instanceof net.minecraft.entity.passive.EntityTameable) { + net.minecraft.entity.passive.EntityTameable entitywolf = (net.minecraft.entity.passive.EntityTameable) entity; + + if(entitywolf.isTamed()) { + living.recentlyHit = 100; + living.attackingPlayer = null; + } + } + } + + if(flag) { + living.worldObj.setEntityState(living, (byte) 2); + + if(source != DamageSource.drown) { + setBeenAttacked(living); //# + } + + if(entity != null) { + double d1 = entity.posX - living.posX; + double d0; + + for(d0 = entity.posZ - living.posZ; d1 * d1 + d0 * d0 < 1.0E-4D; d0 = (Math.random() - Math.random()) * 0.01D) { + d1 = (Math.random() - Math.random()) * 0.01D; + } + + living.attackedAtYaw = (float) (Math.atan2(d0, d1) * 180.0D / Math.PI) - living.rotationYaw; + living.knockBack(entity, amount, d1, d0); + } else { + living.attackedAtYaw = (float) ((int) (Math.random() * 2.0D) * 180); + } + } + + String s; + + if(living.getHealth() <= 0.0F) { + s = getDeathSound(living); //# + + if(flag && s != null) { + living.playSound(s, getSoundVolume(living), getSoundPitch(living)); //# + } + + living.onDeath(source); + } else { + s = getHurtSound(living); //# + + if(flag && s != null) { + living.playSound(s, getSoundVolume(living), getSoundPitch(living)); //# + } + } + + return true; + } + } + } + + // in this household we drink gasoline and sniff glue + public static String getDeathSound(EntityLivingBase living) { + Method m = ReflectionHelper.findMethod(EntityLivingBase.class, living, new String[] {"func_70673_aS", "getDeathSound"}); + try { return (String) m.invoke(living); } catch(Exception e) { } return "game.neutral.die"; + } + + public static String getHurtSound(EntityLivingBase living) { + Method m = ReflectionHelper.findMethod(EntityLivingBase.class, living, new String[] {"func_70621_aR", "getHurtSound"}); + try { return (String) m.invoke(living); } catch(Exception e) { } return "game.neutral.hurt"; + } + + public static float getSoundVolume(EntityLivingBase living) { + Method m = ReflectionHelper.findMethod(EntityLivingBase.class, living, new String[] {"func_70599_aP", "getSoundVolume"}); + try { return (float) m.invoke(living); } catch(Exception e) { } return 1F; + } + + public static float getSoundPitch(EntityLivingBase living) { + Method m = ReflectionHelper.findMethod(EntityLivingBase.class, living, new String[] {"func_70647_i", "getSoundPitch"}); + try { return (float) m.invoke(living); } catch(Exception e) { } return 1F; + } + + public static void damageEntity(EntityLivingBase living, DamageSource source, float amount) { + if(!living.isEntityInvulnerable()) { + amount = ForgeHooks.onLivingHurt(living, source, amount); + if(amount <= 0) + return; + amount = applyArmorCalculations(living, source, amount); //# + amount = applyPotionDamageCalculations(living, source, amount); //# + float f1 = amount; + amount = Math.max(amount - living.getAbsorptionAmount(), 0.0F); + living.setAbsorptionAmount(living.getAbsorptionAmount() - (f1 - amount)); + + if(amount != 0.0F) { + float f2 = living.getHealth(); + living.setHealth(f2 - amount); + living.func_110142_aN().func_94547_a(source, f2, amount); + living.setAbsorptionAmount(living.getAbsorptionAmount() - amount); + } + } + } + + public static float applyArmorCalculations(EntityLivingBase living, DamageSource source, float amount) { + if(!source.isUnblockable()) { + int i = 25 - living.getTotalArmorValue(); + float armor = amount * (float) i; + //living.damageArmor(p_70655_2_); //unused + amount = armor / 25.0F; + } + + return amount; + } + + public static float applyPotionDamageCalculations(EntityLivingBase living, DamageSource source, float amount) { + if(source.isDamageAbsolute()) { + return amount; + } else { + + int resistance; + int j; + float f1; + + if(living.isPotionActive(Potion.resistance) && source != DamageSource.outOfWorld) { + resistance = (living.getActivePotionEffect(Potion.resistance).getAmplifier() + 1) * 5; + j = 25 - resistance; + f1 = amount * (float) j; + amount = f1 / 25.0F; + } + + if(amount <= 0.0F) { + return 0.0F; + } else { + + resistance = EnchantmentHelper.getEnchantmentModifierDamage(living.getLastActiveItems(), source); + + if(resistance > 20) { + resistance = 20; + } + + if(resistance > 0 && resistance <= 20) { + j = 25 - resistance; + f1 = amount * (float) j; + amount = f1 / 25.0F; + } + + return amount; + } + } + } + + public static void setBeenAttacked(EntityLivingBase living) { + living.velocityChanged = living.getRNG().nextDouble() >= living.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).getAttributeValue(); + } } diff --git a/src/main/java/com/hbm/util/HashedSet.java b/src/main/java/com/hbm/util/HashedSet.java new file mode 100644 index 000000000..6a45c952b --- /dev/null +++ b/src/main/java/com/hbm/util/HashedSet.java @@ -0,0 +1,143 @@ +package com.hbm.util; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map.Entry; +import java.util.Set; + +import org.apache.commons.lang3.NotImplementedException; + +/** + * A crude implementation of the HashSet with a few key differences: + * - instead of being stored as the key, the objects are stored as values in the underlying HashMap with the hash being the key + * - consequently, things with matching hash are considered the same, skipping the equals check + * - no equals check means that collisions are possible, so be careful + * - the underlying HashMap is accessible, which means that the instances can be grabbed out of the HashedSet if a hash is supplied + * + * This sack of crap was only intended for the drone request network code + * + * @author hbm + * + * @param + */ +public class HashedSet implements Set { + + HashMap map = new HashMap(); + + public static class HashedIterator implements Iterator { + + private Iterator> iterator; + + public HashedIterator(HashedSet set) { + this.iterator = set.map.entrySet().iterator(); + } + + @Override + public boolean hasNext() { + return this.iterator.hasNext(); + } + + @Override + public Object next() { + return this.iterator.next().getValue(); + } + + @Override + public void remove() { + this.iterator.remove(); + } + } + + public HashedSet() { } + + public HashedSet(Set reachableNodes) { + this.addAll(reachableNodes); + } + + public HashMap getMap() { + return this.map; + } + + @Override + public boolean add(Object e) { + boolean contains = this.contains(e); + this.map.put(e.hashCode(), (T) e); + return contains; + } + + @Override + public boolean addAll(Collection c) { + boolean ret = false; + for(Object o : c) if(add(o)) ret = true; + return ret; + } + + @Override + public void clear() { + this.map.clear(); + } + + @Override + public boolean contains(Object o) { + return this.map.containsKey(o.hashCode()); + } + + @Override + public boolean containsAll(Collection c) { + + for(Object o : c) { + if(!this.contains(o)) return false; + } + + return true; + } + + @Override + public boolean isEmpty() { + return this.map.isEmpty(); + } + + @Override + public Iterator iterator() { + return new HashedIterator(this); + } + + @Override + public boolean remove(Object o) { + T obj = this.map.get(o.hashCode()); + boolean rem = false; + + if(obj != null) { + rem = true; + this.map.remove(o.hashCode()); + } + + return rem; + } + + @Override + public boolean removeAll(Collection c) { + return false; + } + + @Override + public boolean retainAll(Collection c) { + throw new NotImplementedException("Fuck you"); + } + + @Override + public int size() { + return this.map.size(); + } + + @Override + public Object[] toArray() { + throw new NotImplementedException("Fuck you"); + } + + @Override + public Object[] toArray(Object[] a) { + throw new NotImplementedException("Fuck you"); + } +} diff --git a/src/main/java/com/hbm/util/InventoryUtil.java b/src/main/java/com/hbm/util/InventoryUtil.java index 8efc4be37..4e6a27661 100644 --- a/src/main/java/com/hbm/util/InventoryUtil.java +++ b/src/main/java/com/hbm/util/InventoryUtil.java @@ -375,6 +375,10 @@ public class InventoryUtil { return stacks; } + if(o instanceof ItemStack[][]) { + return (ItemStack[][]) o; + } + if(o instanceof AStack) { AStack astack = (AStack) o; ItemStack[] ext = astack.extractForNEI().toArray(new ItemStack[0]); diff --git a/src/main/java/com/hbm/util/LootGenerator.java b/src/main/java/com/hbm/util/LootGenerator.java index fd95b1c4c..69b0af7f5 100644 --- a/src/main/java/com/hbm/util/LootGenerator.java +++ b/src/main/java/com/hbm/util/LootGenerator.java @@ -5,6 +5,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBookLore; import com.hbm.items.ItemAmmoEnums.AmmoFatman; import net.minecraft.item.Item; @@ -21,6 +22,15 @@ public class LootGenerator { loot.addItem(stack, x + rand.nextGaussian() * 0.02, y, z + rand.nextGaussian() * 0.02); } + public static void lootBooklet(World world, int x, int y, int z) { + + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); + + if(loot != null && loot.items.isEmpty()) { + loot.addItem(ItemBookLore.createBook("beacon", 12, 0x404040, 0xD637B3), 0, 0, 0);; + } + } + public static void lootCapNuke(World world, int x, int y, int z) { TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); diff --git a/src/main/java/com/hbm/util/ParticleUtil.java b/src/main/java/com/hbm/util/ParticleUtil.java index 0428ec19b..45898c14d 100644 --- a/src/main/java/com/hbm/util/ParticleUtil.java +++ b/src/main/java/com/hbm/util/ParticleUtil.java @@ -27,4 +27,22 @@ public class ParticleUtil { PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 150)); } } + + public static void spawnDroneLine(World world, double x, double y, double z, double x0, double y0, double z0, int color) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "debugdrone"); + data.setDouble("mX", x0); + data.setDouble("mY", y0); + data.setDouble("mZ", z0); + data.setInteger("color", color); + if(world.isRemote) { + data.setDouble("posX", x); + data.setDouble("posY", y); + data.setDouble("posZ", z); + MainRegistry.proxy.effectNT(data); + } else { + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 150)); + } + } } diff --git a/src/main/java/com/hbm/util/TimeAnalyzer.java b/src/main/java/com/hbm/util/TimeAnalyzer.java index 6cb4f53ec..ec856e301 100644 --- a/src/main/java/com/hbm/util/TimeAnalyzer.java +++ b/src/main/java/com/hbm/util/TimeAnalyzer.java @@ -3,6 +3,7 @@ package com.hbm.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map.Entry; import com.hbm.util.Tuple.Pair; @@ -44,11 +45,11 @@ public class TimeAnalyzer { for(Entry entry : milliTime.entrySet()) { total += entry.getValue(); - String time = String.format("%,d", entry.getValue()); + String time = String.format(Locale.US, "%,d", entry.getValue()); System.out.println(entry.getKey() + ": " + time + "ns"); } - System.out.println("Total time passed: " + String.format("%,d", total) + "ns (" + (total / 1_000_000_000) + "s)"); + System.out.println("Total time passed: " + String.format(Locale.US, "%,d", total) + "ns (" + (total / 1_000_000_000) + "s)"); currentSection = ""; sectionStartTime = 0; diff --git a/src/main/java/com/hbm/util/TrackerUtil.java b/src/main/java/com/hbm/util/TrackerUtil.java new file mode 100644 index 000000000..62140046e --- /dev/null +++ b/src/main/java/com/hbm/util/TrackerUtil.java @@ -0,0 +1,53 @@ +package com.hbm.util; + +import cpw.mods.fml.relauncher.ReflectionHelper; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityTracker; +import net.minecraft.entity.EntityTrackerEntry; +import net.minecraft.network.play.server.S18PacketEntityTeleport; +import net.minecraft.util.IntHashMap; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; + +/** + * This absolute fucking mess of a class is the direct consequence of mojank's terrible entity tracker that allows for 0 flexibility with how entities are synced. + * + * @author hbm + */ +public class TrackerUtil { + + /** Grabs the tracker entry from the given entity */ + public static EntityTrackerEntry getTrackerEntry(WorldServer world, int entityId) { + EntityTracker entitytracker = world.getEntityTracker(); + IntHashMap map = ReflectionHelper.getPrivateValue(EntityTracker.class, entitytracker, "trackedEntityIDs", "field_72794_c"); + EntityTrackerEntry entry = (EntityTrackerEntry) map.lookup(entityId); + return entry; + } + + /** Force-teleports the given entity using the tracker, resetting the tick count to 0 to prevent movement during this tick */ + public static void sendTeleport(World world, Entity e) { + + if(world instanceof WorldServer) { + WorldServer server = (WorldServer) world; + EntityTrackerEntry entry = getTrackerEntry(server, e.getEntityId()); + int xScaled = e.myEntitySize.multiplyBy32AndRound(e.posX); + int yScaled = MathHelper.floor_double(e.posY * 32.0D); + int zScaled = e.myEntitySize.multiplyBy32AndRound(e.posZ); + int yaw = MathHelper.floor_float(e.rotationYaw * 256.0F / 360.0F); + int pitch = MathHelper.floor_float(e.rotationPitch * 256.0F / 360.0F); + entry.func_151259_a(new S18PacketEntityTeleport(e.getEntityId(), xScaled, yScaled, zScaled, (byte)yaw, (byte)pitch)); + //this prevents the tracker from sending movement updates in the same tick + entry.ticks = 0; + } + } + + public static void setTrackingRange(World world, Entity e, int range) { + + if(world instanceof WorldServer) { + WorldServer server = (WorldServer) world; + EntityTrackerEntry entry = getTrackerEntry(server, e.getEntityId()); + entry.blocksDistanceThreshold = range; + } + } +} diff --git a/src/main/java/com/hbm/util/WeightedRandomGeneric.java b/src/main/java/com/hbm/util/WeightedRandomGeneric.java new file mode 100644 index 000000000..e72a7e6e8 --- /dev/null +++ b/src/main/java/com/hbm/util/WeightedRandomGeneric.java @@ -0,0 +1,17 @@ +package com.hbm.util; + +import net.minecraft.util.WeightedRandom; + +public class WeightedRandomGeneric extends WeightedRandom.Item { + + T item; + + public WeightedRandomGeneric(T o, int weight) { + super(weight); + item = o; + } + + public T get() { + return item; + } +} diff --git a/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java b/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java index c09a2dcc6..4b2c6a1c8 100644 --- a/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java +++ b/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java @@ -7,7 +7,7 @@ import net.minecraftforge.common.util.ForgeDirection; /** * Adjusted code from MC 1.12 (com.minecraft.util.math.BlockPos) */ -public class BlockPos { +public class BlockPos implements Cloneable { private final int x; private final int y; @@ -69,10 +69,10 @@ public class BlockPos { return this.z; } - /** 1.12 vanilla implementation */ + /** modified 1.12 vanilla implementation */ @Override public int hashCode() { - return (this.getY() + this.getZ() * 31) * 31 + this.getX(); + return (this.getY() + this.getZ() * 27644437) * 27644437 + this.getX(); } @Override @@ -92,4 +92,12 @@ public class BlockPos { } } } + + @Override + public BlockPos clone() { + try { + return (BlockPos) super.clone(); + } catch(Exception x) { } + return null; + } } diff --git a/src/main/java/com/hbm/util/function/Function.java b/src/main/java/com/hbm/util/function/Function.java index 544328e5c..9dd32272c 100644 --- a/src/main/java/com/hbm/util/function/Function.java +++ b/src/main/java/com/hbm/util/function/Function.java @@ -1,5 +1,7 @@ package com.hbm.util.function; +import java.util.Locale; + import com.hbm.util.BobMathUtil; import net.minecraft.util.EnumChatFormatting; @@ -15,6 +17,7 @@ public abstract class Function { protected double div = 1D; protected double off = 0; + //the german prononciation of f(x) - "F von X", tee hee public abstract double effonix(double x); public abstract String getLabelForFuel(); public abstract String getDangerFromFuel(); @@ -27,8 +30,8 @@ public abstract class Function { public String getXName(boolean brackets) { String x = "x"; boolean mod = false; - if(div != 1D) x += " / " + String.format("%,.1f", div); - if(off != 0D) x += " + " + String.format("%,.1f", off); + if(div != 1D) x += " / " + String.format(Locale.US, "%,.1f", div); + if(off != 0D) x += " + " + String.format(Locale.US, "%,.1f", off); if(mod && brackets) x = "(" + x + ")"; return x; } @@ -46,21 +49,21 @@ public abstract class Function { public static class FunctionLogarithmic extends FunctionSingleArg { public FunctionLogarithmic(double level) { super(level); this.withOff(1D); } @Override public double effonix(double x) { return Math.log10(getX(x)) * level; } - @Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + String.format("%,.1f", this.level); } + @Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + String.format(Locale.US, "%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"; } } public static class FunctionPassive extends FunctionSingleArg { public FunctionPassive(double level) { super(level); } @Override public double effonix(double x) { return this.level; } - @Override public String getLabelForFuel() { return "" + String.format("%,.1f", this.level); } + @Override public String getLabelForFuel() { return "" + String.format(Locale.US, "%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"; } } public static class FunctionSqrt extends FunctionSingleArg { public FunctionSqrt(double level) { super(level); } @Override public double effonix(double x) { return BobMathUtil.squirt(getX(x)) * this.level; } - @Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + String.format("%,.3f", this.level); } //not entirely correct but good enough + @Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + String.format(Locale.US, "%,.3f", this.level); } //not entirely correct but good enough @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"; } } @@ -74,7 +77,7 @@ public abstract class Function { public static class FunctionLinear extends FunctionSingleArg { public FunctionLinear(double level) { super(level); } @Override public double effonix(double x) { return getX(x) * this.level; } - @Override public String getLabelForFuel() { return getXName(true) + " * " + String.format("%,.1f", this.level); } + @Override public String getLabelForFuel() { return getXName(true) + " * " + String.format(Locale.US, "%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / LINEAR"; } } @@ -82,7 +85,7 @@ public abstract class Function { public FunctionQuadratic(double level) { super(level, 0D); } public FunctionQuadratic(double level, double vOff) { super(level, vOff); } @Override public double effonix(double x) { return getX(x) * getX(x) * this.level + this.vOff; } - @Override public String getLabelForFuel() { return getXName(true) + "² * " + String.format("%,.1f", this.level) + (vOff != 0 ? (" + " + String.format("%,.1f", vOff)) : ""); } + @Override public String getLabelForFuel() { return getXName(true) + "² * " + String.format(Locale.US, "%,.1f", this.level) + (vOff != 0 ? (" + " + String.format(Locale.US, "%,.1f", vOff)) : ""); } @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"; } } } diff --git a/src/main/java/com/hbm/wiaj/cannery/Dummies.java b/src/main/java/com/hbm/wiaj/cannery/Dummies.java index adbc22ee6..879a3fd3a 100644 --- a/src/main/java/com/hbm/wiaj/cannery/Dummies.java +++ b/src/main/java/com/hbm/wiaj/cannery/Dummies.java @@ -11,8 +11,8 @@ public class Dummies { public static class JarDummyConnector extends TileEntity implements IEnergyConnector, IFluidConnector { @Override public boolean isLoaded() { return false; } - @Override public long transferFluid(FluidType type, long fluid) { return 0; } - @Override public long getDemand(FluidType type) { return 0; } + @Override public long transferFluid(FluidType type, int pressure, long fluid) { return 0; } + @Override public long getDemand(FluidType type, int pressure) { return 0; } @Override public long transferPower(long power) { return 0; } @Override public long getPower() { return 0; } @Override public long getMaxPower() { return 0; } diff --git a/src/main/java/com/hbm/world/WorldUtil.java b/src/main/java/com/hbm/world/WorldUtil.java index 89f1db25e..f8667dad7 100644 --- a/src/main/java/com/hbm/world/WorldUtil.java +++ b/src/main/java/com/hbm/world/WorldUtil.java @@ -2,12 +2,19 @@ package com.hbm.world; import com.hbm.packet.BiomeSyncPacket; import com.hbm.packet.PacketDispatcher; - import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; +import net.minecraft.world.WorldServer; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.storage.AnvilChunkLoader; +import net.minecraft.world.gen.ChunkProviderServer; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.chunkio.ChunkIOExecutor; +import net.minecraftforge.event.entity.EntityJoinWorldEvent; public class WorldUtil { @@ -31,9 +38,65 @@ public class WorldUtil { PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(coord.chunkXPos, coord.chunkZPos, chunk.getBiomeArray()), new TargetPoint(world.provider.dimensionId, coord.getCenterXPos(), 128, coord.getCenterZPosition() /* who named you? */, 1024D)); } + /**Chunkloads the chunk the entity is going to spawn in and then spawns it + * @param entity The entity to be spawned**/ + + /*fun fact: this is based off of joinEntityInSurroundings in World + however, since mojang is staffed by field mice, that function is client side only and half-baked + */ + public static void loadAndSpawnEntityInWorld(Entity entity) { + + World world = entity.worldObj; + int chunkX = MathHelper.floor_double(entity.posX / 16.0D); + int chunkZ = MathHelper.floor_double(entity.posZ / 16.0D); + byte loadRadius = 2; + + for (int k = chunkX - loadRadius; k <= chunkX + loadRadius; ++k) + { + for (int l = chunkZ - loadRadius; l <= chunkZ + loadRadius; ++l) + { + world.getChunkFromChunkCoords(k, l); + } + } + + if (!world.loadedEntityList.contains(entity)) + { + if (!MinecraftForge.EVENT_BUS.post(new EntityJoinWorldEvent(entity, world))) + { + world.getChunkFromChunkCoords(chunkX, chunkZ).addEntity(entity); + world.loadedEntityList.add(entity); + world.onEntityAdded(entity); + } + } + } + public static void syncBiomeChange(World world, int x, int z) { Chunk chunk = world.getChunkFromBlockCoords(x, z); - byte biome = chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)]; + //byte biome = chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)]; PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x, z, chunk.getBiomeArray()), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); } + + public static Chunk provideChunk(WorldServer world, int chunkX, int chunkZ) { + ChunkProviderServer provider = world.theChunkProviderServer; + Chunk chunk = (Chunk) provider.loadedChunkHashMap.getValueByKey(ChunkCoordIntPair.chunkXZ2Int(chunkX, chunkZ)); + if(chunk != null) return chunk; + return loadChunk(world, provider, chunkX, chunkZ); + } + + private static Chunk loadChunk(WorldServer world, ChunkProviderServer provider, int chunkX, int chunkZ) { + long chunkCoord = ChunkCoordIntPair.chunkXZ2Int(chunkX, chunkZ); + provider.chunksToUnload.remove(Long.valueOf(chunkCoord)); + Chunk chunk = (Chunk) provider.loadedChunkHashMap.getValueByKey(chunkCoord); + AnvilChunkLoader loader = null; + + if(provider.currentChunkLoader instanceof AnvilChunkLoader) { + loader = (AnvilChunkLoader) provider.currentChunkLoader; + } + + if(chunk == null && loader != null && loader.chunkExists(world, chunkX, chunkZ)) { + chunk = ChunkIOExecutor.syncChunkLoad(world, loader, provider, chunkX, chunkZ); + } + + return chunk; + } } diff --git a/src/main/java/com/hbm/world/dungeon/Bunker.java b/src/main/java/com/hbm/world/dungeon/Bunker.java deleted file mode 100644 index 3290d5ebd..000000000 --- a/src/main/java/com/hbm/world/dungeon/Bunker.java +++ /dev/null @@ -1,1596 +0,0 @@ -//Schematic to java Structure by jajo_11 | inspired by "MITHION'S .SCHEMATIC TO JAVA CONVERTINGTOOL" - -package com.hbm.world.dungeon; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.generic.BlockBobble.BobbleType; -import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; -import com.hbm.config.GeneralConfig; -import com.hbm.lib.HbmChestContents; -import com.hbm.lib.Library; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemDoor; -import net.minecraft.tileentity.TileEntityChest; -import net.minecraft.util.WeightedRandomChestContent; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class Bunker extends WorldGenerator { - Block Block1 = ModBlocks.reinforced_brick; - Block Block3 = ModBlocks.reinforced_light; - Block Block4 = ModBlocks.deco_steel; - Block Block5 = ModBlocks.deco_tungsten; - - protected Block[] GetValidSpawnBlocks() { - return new Block[] { Blocks.grass, Blocks.dirt, Blocks.stone, Blocks.sand, Blocks.sandstone, }; - } - - @Override - public boolean generate(World world, Random rand, int x, int y, int z) { - int i = rand.nextInt(1); - - if(i == 0) { - generate_r0(world, rand, x, y, z); - } - - return true; - - } - - public boolean LocationIsValidSpawn(World world, int x, int y, int z) { - - Block checkBlock = world.getBlock(x, y - 1, z); - Block blockAbove = world.getBlock(x, y, z); - Block blockBelow = world.getBlock(x, y - 2, z); - - for(Block i : GetValidSpawnBlocks()) { - if(blockAbove != Blocks.air) { - return false; - } - if(checkBlock == i) { - return true; - } else if(checkBlock == Blocks.snow_layer && blockBelow == i) { - return true; - } else if(checkBlock.getMaterial() == Material.plants && blockBelow == i) { - return true; - } - } - return false; - } - - public boolean generate_r0(World world, Random rand, int x, int y, int z) { - y += 1; - - if(!LocationIsValidSpawn(world, x + 9, y, z + 9)) { - return false; - } - - if(!LocationIsValidSpawn(world, x, y, z)) - { - return false; - } - - for(int i = 0; i < 11; i++) { - for(int j = 0; j < 9; j++) { - for(int k = 0; k < 15; k++) { - world.setBlock(x + i, y + j - 25, z + k, Blocks.air, 0, 3); - } - } - } - - world.setBlock(x + 0, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -24, z + 1, Blocks.chest, 3, 3); - world.setBlockMetadataWithNotify(x + 2, y + -24, z + 1, 3, 3); - if(world.getBlock(x + 2, y + -24, z + 1) == Blocks.chest) { - WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.expensive, (TileEntityChest) world.getTileEntity(x + 2, y + -24, z + 1), rand.nextInt(2) + 6); - } - - if(world.rand.nextInt(10) > 0) { - world.setBlock(x + 2, y + -23, z + 1, ModBlocks.geiger, 2, 3); - } else { - world.setBlock(x + 2, y + -23, z + 1, ModBlocks.bobblehead, 0, 3); - TileEntityBobble bobble = (TileEntityBobble) world.getTileEntity(x + 2, y + -23, z + 1); - - if(bobble != null) { - bobble.type = BobbleType.values()[world.rand.nextInt(BobbleType.values().length - 1) + 1]; - bobble.markDirty(); - } - } - - world.setBlock(x + 3, y + -24, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -24, z + 1, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 2, Blocks.chest, 5, 3); - world.setBlockMetadataWithNotify(x + 1, y + -24, z + 5, 3, 3); - if(world.getBlock(x + 2, y + -24, z + 1) == Blocks.chest) { - WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.modGeneric, (TileEntityChest) world.getTileEntity(x + 1, y + -24, z + 2), 8); - } - world.setBlock(x + 3, y + -24, z + 2, Blocks.chest, 4, 3); - world.setBlockMetadataWithNotify(x + 3, y + -24, z + 2, 4, 3); - if(world.getBlock(x + 3, y + -24, z + 2) == Blocks.chest) { - WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.modGeneric, (TileEntityChest) world.getTileEntity(x + 3, y + -24, z + 2), 8); - } - world.setBlock(x + 4, y + -24, z + 2, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 3, Blocks.chest, 5, 3); - world.setBlockMetadataWithNotify(x + 1, y + -24, z + 3, 5, 3); - if(world.getBlock(x + 1, y + -24, z + 3) == Blocks.chest) { - WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.modGeneric, (TileEntityChest) world.getTileEntity(x + 1, y + -24, z + 3), 8); - } - world.setBlock(x + 3, y + -24, z + 3, Blocks.chest, 4, 3); - world.setBlockMetadataWithNotify(x + 3, y + -24, z + 3, 5, 3); - if(world.getBlock(x + 3, y + -24, z + 3) == Blocks.chest) { - WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.modGeneric, (TileEntityChest) world.getTileEntity(x + 3, y + -24, z + 3), 8); - } - world.setBlock(x + 4, y + -24, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -24, z + 3, Block1, 0, 3); - world.setBlock(x + 9, y + -24, z + 3, Blocks.iron_door, 5, 3); - ItemDoor.placeDoorBlock(world, x + 9, y + -24, z + 3, 5, Blocks.iron_door); - world.setBlock(x + 10, y + -24, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -24, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -24, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 4, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 4, Blocks.cauldron, 0, 3); - world.setBlock(x + 11, y + -24, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + -24, z + 5, Blocks.iron_door, 3, 3); - ItemDoor.placeDoorBlock(world, x + 2, y + -24, z + 5, 3, Blocks.iron_door); - world.setBlock(x + 3, y + -24, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -24, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 5, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 11, y + -24, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 6, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 6, Blocks.cauldron, 0, 3); - world.setBlock(x + 11, y + -24, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 7, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 7, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 11, y + -24, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 8, Blocks.cauldron, 0, 3); - world.setBlock(x + 11, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 9, Block1, 0, 3); - world.setBlock(x + 3, y + -24, z + 9, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 9, Blocks.iron_door, 1, 3); - ItemDoor.placeDoorBlock(world, x + 7, y + -24, z + 9, 1, Blocks.iron_door); - world.setBlock(x + 10, y + -24, z + 9, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 11, y + -24, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -24, z + 10, Block1, 0, 3); - world.setBlock(x + 4, y + -24, z + 10, Blocks.hopper, 4, 3); - world.setBlock(x + 6, y + -24, z + 10, Blocks.cauldron, 0, 3); - world.setBlock(x + 7, y + -24, z + 10, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 10, Blocks.cauldron, 0, 3); - world.setBlock(x + 11, y + -24, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 13, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -23, z + 0, Block3, 0, 3); - world.setBlock(x + 7, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -23, z + 0, Block3, 0, 3); - world.setBlock(x + 10, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -23, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -23, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + -23, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -23, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -23, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 2, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -23, z + 3, Block1, 0, 3); - // world.setBlock(x + 9, y + -23, z + 3, Blocks.iron_door, 8, 3); - world.setBlock(x + 10, y + -23, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -23, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -23, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 5, Block1, 0, 3); - // world.setBlock(x + 2, y + -23, z + 5, Blocks.iron_door, 8, 3); - world.setBlock(x + 3, y + -23, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 5, Block3, 0, 3); - world.setBlock(x + 7, y + -23, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 6, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 7, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 9, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 9, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -23, z + 9, Block3, 0, 3); - // world.setBlock(x + 7, y + -23, z + 9, Blocks.iron_door, 8, 3); - world.setBlock(x + 11, y + -23, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -23, z + 10, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 10, Blocks.trapdoor, 7, 3); - world.setBlock(x + 7, y + -23, z + 10, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 13, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -23, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 14, Block1, 0, 3); - // prevent geiger displacement - // world.setBlock(x + 2, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 14, Block3, 0, 3); - world.setBlock(x + 5, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 14, Block3, 0, 3); - world.setBlock(x + 8, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -22, z + 1, Block3, 0, 3); - world.setBlock(x + 3, y + -22, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -22, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 6, y + -22, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 9, y + -22, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -22, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 2, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 2, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -22, z + 2, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -22, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 9, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -22, z + 4, Block3, 0, 3); - world.setBlock(x + 3, y + -22, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -22, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 4, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -22, z + 4, Block3, 0, 3); - world.setBlock(x + 11, y + -22, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 6, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 6, Blocks.web, 0, 3); - world.setBlock(x + 6, y + -22, z + 6, Blocks.web, 0, 3); - world.setBlock(x + 7, y + -22, z + 6, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 6, Block3, 0, 3); - world.setBlock(x + 11, y + -22, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 7, Blocks.web, 0, 3); - world.setBlock(x + 6, y + -22, z + 7, Blocks.web, 0, 3); - world.setBlock(x + 7, y + -22, z + 7, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 7, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -22, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 8, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 8, Block3, 0, 3); - world.setBlock(x + 11, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + -22, z + 9, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -22, z + 9, Block1, 0, 3); - world.setBlock(x + 6, y + -22, z + 9, Blocks.web, 0, 3); - world.setBlock(x + 7, y + -22, z + 9, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 9, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -22, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 10, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 10, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -22, z + 10, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 10, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 10, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -22, z + 10, Block3, 0, 3); - world.setBlock(x + 11, y + -22, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 12, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 12, Blocks.web, 0, 3); - world.setBlock(x + 5, y + -22, z + 12, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -22, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 13, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 2, y + -22, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -22, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 6, y + -22, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 7, y + -22, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 8, y + -22, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -22, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 1, Block1, 0, 3); - world.setBlock(x + 4, y + -20, z + 1, Blocks.chest, 5, 3); - world.setBlockMetadataWithNotify(x + 4, y + -20, z + 1, 5, 3); - if(world.getBlock(x + 4, y + -20, z + 1) == Blocks.chest) { - WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.modGeneric, (TileEntityChest) world.getTileEntity(x + 4, y + -20, z + 1), 12); - } - world.setBlock(x + 8, y + -20, z + 1, Block4, 0, 3); - world.setBlock(x + 9, y + -20, z + 1, Block4, 0, 3); - world.setBlock(x + 10, y + -20, z + 1, Block4, 0, 3); - world.setBlock(x + 11, y + -20, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 2, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 2, Block4, 0, 3); - world.setBlock(x + 9, y + -20, z + 2, Block4, 0, 3); - world.setBlock(x + 10, y + -20, z + 2, Block4, 0, 3); - world.setBlock(x + 11, y + -20, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 3, Block4, 0, 3); - world.setBlock(x + 9, y + -20, z + 3, Block4, 0, 3); - world.setBlock(x + 10, y + -20, z + 3, Block4, 0, 3); - world.setBlock(x + 11, y + -20, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + -20, z + 4, Blocks.iron_door, 3, 3); - ItemDoor.placeDoorBlock(world, x + 5, y + -20, z + 4, 3, Blocks.iron_door); - world.setBlock(x + 6, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 9, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 10, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 6, Blocks.iron_door, 0, 3); - ItemDoor.placeDoorBlock(world, x + 3, y + -20, z + 6, 0, Blocks.iron_door); - world.setBlock(x + 11, y + -20, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 7, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 7, Blocks.iron_door, 1, 3); - ItemDoor.placeDoorBlock(world, x + 8, y + -20, z + 7, 1, Blocks.iron_door); - world.setBlock(x + 10, y + -20, z + 7, Blocks.iron_door, 1, 3); - ItemDoor.placeDoorBlock(world, x + 10, y + -20, z + 7, 1, Blocks.iron_door); - world.setBlock(x + 11, y + -20, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -20, z + 8, Blocks.iron_door, 3, 3); - ItemDoor.placeDoorBlock(world, x + 4, y + -20, z + 8, 3, Blocks.iron_door); - world.setBlock(x + 6, y + -20, z + 8, Blocks.iron_door, 3, 3); - ItemDoor.placeDoorBlock(world, x + 6, y + -20, z + 8, 3, Blocks.iron_door); - world.setBlock(x + 8, y + -20, z + 8, Blocks.iron_door, 3, 3); - ItemDoor.placeDoorBlock(world, x + 8, y + -20, z + 8, 3, Blocks.iron_door); - world.setBlock(x + 10, y + -20, z + 8, Blocks.iron_door, 3, 3); - ItemDoor.placeDoorBlock(world, x + 10, y + -20, z + 8, 3, Blocks.iron_door); - world.setBlock(x + 11, y + -20, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 9, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 9, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 10, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 13, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -19, z + 0, Block3, 0, 3); - world.setBlock(x + 7, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -19, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -19, z + 1, Block1, 0, 3); - world.setBlock(x + 8, y + -19, z + 1, Block4, 0, 3); - world.setBlock(x + 9, y + -19, z + 1, Block4, 0, 3); - world.setBlock(x + 10, y + -19, z + 1, Block4, 0, 3); - world.setBlock(x + 11, y + -19, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 2, Block1, 0, 3); - world.setBlock(x + 7, y + -19, z + 2, Block5, 0, 3); - world.setBlock(x + 8, y + -19, z + 2, Block5, 0, 3); - world.setBlock(x + 9, y + -19, z + 2, Block5, 0, 3); - world.setBlock(x + 10, y + -19, z + 2, Block5, 0, 3); - world.setBlock(x + 11, y + -19, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + -19, z + 3, Blocks.web, 0, 3); - world.setBlock(x + 8, y + -19, z + 3, Block4, 0, 3); - world.setBlock(x + 9, y + -19, z + 3, Block4, 0, 3); - world.setBlock(x + 10, y + -19, z + 3, Block4, 0, 3); - world.setBlock(x + 11, y + -19, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + -19, z + 4, Block1, 0, 3); - // world.setBlock(x + 5, y + -19, z + 4, Blocks.iron_door, 8, 3); - world.setBlock(x + 6, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 9, y + -19, z + 4, Block3, 0, 3); - world.setBlock(x + 10, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 6, Block1, 0, 3); - // world.setBlock(x + 3, y + -19, z + 6, Blocks.iron_door, 8, 3); - world.setBlock(x + 11, y + -19, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 7, Block3, 0, 3); - // world.setBlock(x + 8, y + -19, z + 7, Blocks.iron_door, 8, 3); - // world.setBlock(x + 10, y + -19, z + 7, Blocks.iron_door, 8, 3); - world.setBlock(x + 11, y + -19, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 8, Block1, 0, 3); - // world.setBlock(x + 4, y + -19, z + 8, Blocks.iron_door, 8, 3); - // world.setBlock(x + 6, y + -19, z + 8, Blocks.iron_door, 8, 3); - // world.setBlock(x + 8, y + -19, z + 8, Blocks.iron_door, 8, 3); - // world.setBlock(x + 10, y + -19, z + 8, Blocks.iron_door, 9, 3); - world.setBlock(x + 11, y + -19, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 9, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 9, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 10, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -19, z + 11, Block3, 0, 3); - world.setBlock(x + 6, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -19, z + 11, Block3, 0, 3); - world.setBlock(x + 10, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 13, Block1, 0, 3); - world.setBlock(x + 1, y + -19, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -19, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -18, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 2, y + -18, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -18, z + 1, Block1, 0, 3); - world.setBlock(x + 9, y + -18, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -18, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 2, Blocks.web, 0, 3); - world.setBlock(x + 8, y + -18, z + 2, Block4, 0, 3); - world.setBlock(x + 9, y + -18, z + 2, Block4, 0, 3); - world.setBlock(x + 10, y + -18, z + 2, Block4, 0, 3); - world.setBlock(x + 11, y + -18, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 3, Block1, 0, 3); - world.setBlock(x + 5, y + -18, z + 3, Blocks.web, 0, 3); - world.setBlock(x + 8, y + -18, z + 3, Blocks.web, 0, 3); - world.setBlock(x + 9, y + -18, z + 3, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -18, z + 3, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 9, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 10, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 5, Blocks.web, 0, 3); - world.setBlock(x + 9, y + -18, z + 5, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -18, z + 5, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 6, Block1, 0, 3); - world.setBlock(x + 10, y + -18, z + 6, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 7, Block1, 0, 3); - world.setBlock(x + 2, y + -18, z + 7, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -18, z + 7, Block1, 0, 3); - world.setBlock(x + 11, y + -18, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + -18, z + 8, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -18, z + 8, Block1, 0, 3); - world.setBlock(x + 11, y + -18, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + -18, z + 9, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -18, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 9, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + -18, z + 10, Blocks.web, 0, 3); - world.setBlock(x + 8, y + -18, z + 10, Blocks.web, 0, 3); - world.setBlock(x + 9, y + -18, z + 10, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 12, Block1, 0, 3); - world.setBlock(x + 1, y + -18, z + 12, Blocks.web, 0, 3); - world.setBlock(x + 7, y + -18, z + 12, Blocks.web, 0, 3); - world.setBlock(x + 8, y + -18, z + 12, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -18, z + 12, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 13, Block1, 0, 3); - world.setBlock(x + 2, y + -18, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -16, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -16, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -16, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -16, z + 2, Block3, 0, 3); - world.setBlock(x + 3, y + -16, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -16, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -16, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -16, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -15, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -15, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -15, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -15, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -15, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -15, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -15, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -15, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -14, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -14, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -14, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -14, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -14, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -14, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -14, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -14, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -13, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -13, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -13, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -13, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -13, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -13, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -13, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -13, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -12, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -12, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -12, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -12, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -12, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -12, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -12, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -12, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -11, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -11, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -11, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -11, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -11, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -11, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -11, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -11, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -10, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -10, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -10, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -10, z + 2, Block3, 0, 3); - world.setBlock(x + 3, y + -10, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -10, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -10, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -10, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -9, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -9, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -9, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -9, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -9, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -9, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -9, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -9, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -8, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -8, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -8, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -8, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -8, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -8, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -8, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -8, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -7, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -7, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -7, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -7, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -7, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -7, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -7, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -7, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -6, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -6, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -6, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -6, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -6, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -6, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -6, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -6, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -5, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -5, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -5, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -5, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -5, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -5, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -5, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -5, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -4, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -4, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -4, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -4, z + 2, Block3, 0, 3); - world.setBlock(x + 3, y + -4, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -4, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -4, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -4, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -3, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -3, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -3, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -3, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -3, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -3, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -3, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -3, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -3, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -3, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -3, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -3, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -3, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -3, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -3, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -3, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -3, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -3, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -3, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -3, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -3, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -3, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -2, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -2, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -2, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -1, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -1, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -1, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -1, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -1, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -1, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -1, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 0, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 0, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 0, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 0, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 0, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 0, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 0, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 0, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 0, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 0, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 0, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 0, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 0, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 0, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 0, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 0, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 0, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 1, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 1, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 2, z + 2, Block3, 0, 3); - world.setBlock(x + 3, y + 2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 2, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 2, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 2, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 3, z + 1, Blocks.trapdoor, 1, 3); - - generate_r02_last(world, rand, x, y, z); - return true; - - } - - public boolean generate_r02_last(World world, Random rand, int x, int y, int z) { - - world.setBlock(x + 10, y + -24, z + 12, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -24, z + 13, Blocks.ladder, 4, 3); - world.setBlock(x + 8, y + -23, z + 2, Blocks.lever, 12, 3); - world.setBlock(x + 10, y + -23, z + 4, Blocks.lever, 10, 3); - world.setBlock(x + 10, y + -23, z + 6, Blocks.lever, 10, 3); - world.setBlock(x + 10, y + -23, z + 8, Blocks.lever, 10, 3); - world.setBlock(x + 6, y + -23, z + 10, Blocks.lever, 12, 3); - world.setBlock(x + 10, y + -23, z + 10, Blocks.lever, 10, 3); - world.setBlock(x + 10, y + -23, z + 12, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -23, z + 13, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -22, z + 12, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -22, z + 13, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -21, z + 12, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -21, z + 13, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -20, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -20, z + 12, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -20, z + 13, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -19, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -19, z + 5, Blocks.lever, 2, 3); - world.setBlock(x + 5, y + -19, z + 5, Blocks.wall_sign, 3, 3); - world.setBlock(x + 2, y + -18, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -17, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -16, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -15, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -14, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -13, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -12, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -11, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -10, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -9, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -8, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -7, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -6, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -5, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -4, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -3, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -2, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -1, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + 0, z + 1, Blocks.ladder, 3, 3); - world.setBlock(x + 2, y + 0, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + 1, z + 1, Blocks.ladder, 3, 3); - world.setBlock(x + 2, y + 2, z + 1, Blocks.ladder, 3, 3); - world.setBlock(x + 8, y + -20, z + 5, Blocks.bed, 10, 3); - world.setBlock(x + 10, y + -20, z + 5, Blocks.bed, 10, 3); - world.setBlock(x + 8, y + -20, z + 6, Blocks.bed, 2, 3); - world.setBlock(x + 10, y + -20, z + 6, Blocks.bed, 2, 3); - world.setBlock(x + 4, y + -20, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 6, y + -20, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 8, y + -20, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 10, y + -20, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 4, y + -20, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 6, y + -20, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 8, y + -20, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 10, y + -20, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 8, y + -19, z + 5, Blocks.bed, 10, 3); - world.setBlock(x + 10, y + -19, z + 5, Blocks.bed, 10, 3); - world.setBlock(x + 8, y + -19, z + 6, Blocks.bed, 2, 3); - world.setBlock(x + 10, y + -19, z + 6, Blocks.bed, 2, 3); - world.setBlock(x + 4, y + -19, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 6, y + -19, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 8, y + -19, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 10, y + -19, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 4, y + -19, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 6, y + -19, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 8, y + -19, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 10, y + -19, z + 10, Blocks.bed, 8, 3); - if(GeneralConfig.enableDebugMode) - System.out.print("[Debug] Successfully spawned bunker at " + x + " " + y + " " + z + "\n"); - return true; - - } - -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/feature/BedrockOre.java b/src/main/java/com/hbm/world/feature/BedrockOre.java index 71cd87a12..98bbd0c48 100644 --- a/src/main/java/com/hbm/world/feature/BedrockOre.java +++ b/src/main/java/com/hbm/world/feature/BedrockOre.java @@ -1,17 +1,67 @@ package com.hbm.world.feature; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre; +import com.hbm.config.WorldConfig; import com.hbm.inventory.FluidStack; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; +import com.hbm.util.WeightedRandomGeneric; import net.minecraft.block.Block; import net.minecraft.init.Blocks; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class BedrockOre { + public static List> weightedOres = new ArrayList(); + public static List> weightedOresNether = new ArrayList(); + + public static HashMap replacements = new HashMap(); + + public static void init() { + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.IRON, 1), WorldConfig.bedrockIronSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.COPPER, 1), WorldConfig.bedrockCopperSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.BORAX, 3, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockBoraxSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.CHLOROCALCITE, 3, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockChlorocalciteSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.ASBESTOS, 2), WorldConfig.bedrockAsbestosSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.NIOBIUM, 2, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockNiobiumSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.TITANIUM, 2, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockTitaniumSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.TUNGSTEN, 2, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockTungstenSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.GOLD, 1), WorldConfig.bedrockGoldSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.URANIUM, 4, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockUraniumSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.THORIUM, 4, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockThoriumSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.FLUORITE, 1), WorldConfig.bedrockFluoriteSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.coal, 8), 1, 0x202020), WorldConfig.bedrockCoalSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(ModItems.niter, 4), 2, 0x808080, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockNiterSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.redstone, 4), 1, 0xd01010), WorldConfig.bedrockRedstoneSpawn); + + registerBedrockOre(weightedOresNether, new BedrockOreDefinition(new ItemStack(Items.glowstone_dust, 4), 1, 0xF9FF4D), WorldConfig.bedrockGlowstoneSpawn); + registerBedrockOre(weightedOresNether, new BedrockOreDefinition(new ItemStack(ModItems.powder_fire, 4), 1, 0xD7341F), WorldConfig.bedrockPhosphorusSpawn); + registerBedrockOre(weightedOresNether, new BedrockOreDefinition(new ItemStack(Items.quartz, 4), 1, 0xF0EFDD), WorldConfig.bedrockQuartzSpawn); + + replacements.put(EnumBedrockOre.IRON.oreName, new BedrockOreDefinition(EnumBedrockOre.HEMATITE, 1)); + replacements.put(EnumBedrockOre.COPPER.oreName, new BedrockOreDefinition(EnumBedrockOre.MALACHITE, 1)); + } + + public static void registerBedrockOre(List list, BedrockOreDefinition def, int weight) { + WeightedRandomGeneric weighted = new WeightedRandomGeneric(def, weight); + list.add(weighted); + } + public static void generate(World world, int x, int z, ItemStack stack, FluidStack acid, int color, int tier) { + generate(world, x, z, stack, acid, color, tier, ModBlocks.stone_depth); + } + + public static void generate(World world, int x, int z, ItemStack stack, FluidStack acid, int color, int tier, Block depthRock) { for(int ix = x - 1; ix <= x + 1; ix++) { for(int iz = z - 1; iz <= z + 1; iz++) { @@ -42,11 +92,43 @@ public class BedrockOre { Block b = world.getBlock(ix, iy, iz); if(b.isReplaceableOreGen(world, ix, iy, iz, Blocks.stone) || b.isReplaceableOreGen(world, ix, iy, iz, Blocks.bedrock)) { - world.setBlock(ix, iy, iz, ModBlocks.stone_depth); + world.setBlock(ix, iy, iz, depthRock); } } } } } } + + public static class BedrockOreDefinition { + public ItemStack stack; + public FluidStack acid; + public String id; + public int tier; + public int color; + + public BedrockOreDefinition(ItemStack stack, int tier, int color) { + this(stack, tier, color, null); + } + + public BedrockOreDefinition(ItemStack stack, int tier, int color, FluidStack acid) { + this.stack = stack; + this.id = stack.toString(); + this.tier = tier; + this.color = color; + this.acid = acid; + } + + public BedrockOreDefinition(EnumBedrockOre type, int tier) { + this(type, tier, null); + } + + public BedrockOreDefinition(EnumBedrockOre type, int tier, FluidStack acid) { + this.stack = DictFrame.fromOne(ModItems.ore_bedrock, type); + this.id = "ore" + type.oreName; + this.color = type.color; + this.tier = tier; + this.acid = acid; + } + } } diff --git a/src/main/java/com/hbm/world/feature/BiomeCave.java b/src/main/java/com/hbm/world/feature/BiomeCave.java new file mode 100644 index 000000000..1dc57bd73 --- /dev/null +++ b/src/main/java/com/hbm/world/feature/BiomeCave.java @@ -0,0 +1,125 @@ +package com.hbm.world.feature; + +import java.util.Random; + +import com.hbm.blocks.BlockEnums.EnumBiomeType; +import com.hbm.world.generator.DungeonToolbox; +import com.hbm.blocks.ModBlocks; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.biome.BiomeGenBase.TempCategory; +import net.minecraft.world.gen.NoiseGeneratorPerlin; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.terraingen.DecorateBiomeEvent; + +public class BiomeCave { + + private NoiseGeneratorPerlin noise; + /** The number that is being deducted flat from the result of the perlin noise before all other processing. Increase this to make strata rarer. */ + private double threshold = 2D; + /** The mulitplier for the remaining bit after the threshold has been deducted. Increase to make strata wavier. */ + private int rangeMult = 3; + /** The maximum range after multiplying - anything above this will be subtracted from (maxRange * 2) to yield the proper range. Increase this to make strata thicker. */ + private int maxRange = 4; + /** The y-level around which the stratum is centered. */ + private int yLevel = 30; + + public BiomeCave() { + MinecraftForge.EVENT_BUS.register(this); + } + + public BiomeCave setThreshold(double threshold) { + this.threshold = threshold; + return this; + } + + public BiomeCave setRangeMult(int rangeMult) { + this.rangeMult = rangeMult; + return this; + } + + public BiomeCave setMaxRange(int maxRange) { + this.maxRange = maxRange; + return this; + } + + public BiomeCave setYLevel(int yLevel) { + this.yLevel = yLevel; + return this; + } + + @SubscribeEvent + public void onDecorate(DecorateBiomeEvent.Pre event) { + + World world = event.world; + + if(world.provider == null || world.provider.dimensionId != 0) return; + + if(this.noise == null) { + this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed() - 1916169 + yLevel), 2); + } + + int cX = event.chunkX; + int cZ = event.chunkZ; + + double scale = 0.01D; + + for(int x = cX + 8; x < cX + 24; x++) { + for(int z = cZ + 8; z < cZ + 24; z++) { + + BiomeGenBase biome = world.getBiomeGenForCoords(x, z); + EnumBiomeType type = getTypeFromBiome(biome); + + double n = noise.func_151601_a(x * scale, z * scale); + + if(type != null && n > threshold) { + int range = (int)((n - threshold) * rangeMult); + + if(range > maxRange) + range = (maxRange * 2) - range; + + if(range < 0) + continue; + + for(int y = yLevel - range; y <= yLevel + range; y++) { + handleBiome(world, x, y, z, type); + } + } + } + } + } + + private static void handleBiome(World world, int x, int y, int z, EnumBiomeType type) { + Block target = world.getBlock(x, y, z); + + if(target.isNormalCube() && DungeonToolbox.allowedToReplace(target)) { + + boolean shouldGen = false; + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).isAir(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ)) { + shouldGen = true; break; + } + if(world.getBlock(x + dir.offsetX * 2, y + dir.offsetY * 2, z + dir.offsetZ * 2).isAir(world, x + dir.offsetX * 2, y + dir.offsetY * 2, z + dir.offsetZ * 2)) { + shouldGen = true; break; + } + } + + if(shouldGen) { + world.setBlock(x, y, z, ModBlocks.stone_biome, type.ordinal(), 2); + } + } + } + + private static EnumBiomeType getTypeFromBiome(BiomeGenBase biome) { + + if(biome.temperature >= 1 && biome.rainfall < 0.25) return EnumBiomeType.DESERT; + if(biome.temperature >= 0.5 && biome.rainfall > 0.25 && biome.getTempCategory() != TempCategory.OCEAN) return EnumBiomeType.WOODLAND; + + return null; + } +} diff --git a/src/main/java/com/hbm/world/feature/DeepLayer.java b/src/main/java/com/hbm/world/feature/DeepLayer.java index b8f29cf41..69216034d 100644 --- a/src/main/java/com/hbm/world/feature/DeepLayer.java +++ b/src/main/java/com/hbm/world/feature/DeepLayer.java @@ -3,11 +3,11 @@ package com.hbm.world.feature; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.NoiseGeneratorPerlin; import net.minecraftforge.common.util.ForgeDirection; @@ -51,7 +51,7 @@ public class DeepLayer { Block target = world.getBlock(x, y, z); - if(target.isNormalCube() && target.getMaterial() == Material.rock && target != Blocks.bedrock) { + if(target.isNormalCube() && target.getMaterial() == Material.rock && DungeonToolbox.allowedToReplace(target)) { boolean lava = false; diff --git a/src/main/java/com/hbm/world/feature/GlyphidHive.java b/src/main/java/com/hbm/world/feature/GlyphidHive.java new file mode 100644 index 000000000..5c60e3ff2 --- /dev/null +++ b/src/main/java/com/hbm/world/feature/GlyphidHive.java @@ -0,0 +1,128 @@ +package com.hbm.world.feature; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; + +import net.minecraft.init.Blocks; +import net.minecraft.world.World; + +public class GlyphidHive { + + public static final int[][][] schematic = new int[][][] { + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + }, + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,1,1,9,1,1,0,0,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,0,1,9,9,9,9,9,1,0,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,0,0,1,1,9,1,1,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + }, + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,4,4,4,0,0,0,0}, + {0,0,0,1,1,9,1,1,0,0,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,3,1,9,9,9,9,9,1,5,0}, + {0,3,9,9,9,9,9,9,9,5,0}, + {0,3,1,9,9,9,9,9,1,5,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,0,0,1,1,9,1,1,0,0,0}, + {0,0,0,0,2,2,2,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + }, + { + {0,0,0,0,0,4,0,0,0,0,0}, + {0,0,0,0,4,4,4,0,0,0,0}, + {0,0,0,1,4,9,4,1,0,0,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,3,3,9,9,9,9,9,5,5,0}, + {3,3,9,9,9,9,9,9,9,5,5}, + {0,3,3,9,9,9,9,9,5,5,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,0,0,1,2,9,2,1,0,0,0}, + {0,0,0,0,2,2,2,0,0,0,0}, + {0,0,0,0,0,2,0,0,0,0,0}, + }, + { + {0,0,0,0,4,4,4,0,0,0,0}, + {0,0,0,1,4,4,4,1,0,0,0}, + {0,0,1,1,4,9,4,1,1,0,0}, + {0,1,1,1,9,9,0,1,1,1,0}, + {3,3,3,9,9,9,9,9,5,5,5}, + {3,3,9,9,9,9,9,9,9,5,5}, + {3,3,3,9,9,9,9,9,5,5,5}, + {0,1,1,1,9,9,9,1,1,1,0}, + {0,0,1,1,2,9,2,1,1,0,0}, + {0,0,0,1,2,2,2,1,0,0,0}, + {0,0,0,0,2,2,2,0,0,0,0}, + }, + { + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,1,1,1,1,1,1,1,1,1,0}, + {1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1}, + {0,1,1,1,1,1,1,1,1,1,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + }, + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,1,1,1,1,1,1,1,1,1,0}, + {0,1,1,1,1,1,1,1,1,1,0}, + {0,1,1,1,1,1,1,1,1,1,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + } + }; + + public static void generate(World world, int x, int y, int z, Random rand) { + + int orientation = rand.nextInt(4) + 2; + + for(int i = 0; i < 11; i++) { + for(int j = 0; j < 7; j++) { + for(int k = 0; k < 11; k++) { + + int block = schematic[6 - j][i][k]; + + if(block == 1 || (block != orientation && block > 1 && block < 6)) { + world.setBlock(x + i - 5, y + j - 2, z + k - 5, ModBlocks.glyphid_base); + } + if(block == 9) { + world.setBlock(x + i - 5, y + j - 2, z + k - 5, Blocks.air); + } + } + } + } + + world.setBlock(x, y - 1, z, ModBlocks.glyphid_spawner); + } +} diff --git a/src/main/java/com/hbm/world/feature/Meteorite.java b/src/main/java/com/hbm/world/feature/Meteorite.java index c383eefa0..b561d4451 100644 --- a/src/main/java/com/hbm/world/feature/Meteorite.java +++ b/src/main/java/com/hbm/world/feature/Meteorite.java @@ -8,7 +8,6 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.config.WorldConfig; import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.interfaces.Spaghetti; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; @@ -121,11 +120,6 @@ public class Meteorite { generateSphere5x5(world, rand, x, y, z, list10); setBlock(world, x, y, z, ModBlocks.taint, 9, 2); return; - case 11: - // Atomic meteorite - - ExplosionNukeSmall.explode(world, x + 0.5, y + 0.5, z + 0.5, safe ? ExplosionNukeSmall.PARAMS_SAFE : ExplosionNukeSmall.PARAMS_MEDIUM); - return; case 12: // Star Blaster world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 10F, !safe); diff --git a/src/main/java/com/hbm/world/feature/OilSpot.java b/src/main/java/com/hbm/world/feature/OilSpot.java index bcd746638..7b02e5263 100644 --- a/src/main/java/com/hbm/world/feature/OilSpot.java +++ b/src/main/java/com/hbm/world/feature/OilSpot.java @@ -80,7 +80,7 @@ public class OilSpot { world.setBlock(rX, y, rZ, ModBlocks.stone_cracked); break; - } else if(ground.getMaterial() == Material.leaves) { + } else if(ground.getMaterial() == Material.leaves && (meta & 8) != 0 && (meta & 4) == 0) { world.setBlockToAir(rX, y, rZ); break; } diff --git a/src/main/java/com/hbm/world/feature/OreCave.java b/src/main/java/com/hbm/world/feature/OreCave.java index eed1cdfdc..7f879866b 100644 --- a/src/main/java/com/hbm/world/feature/OreCave.java +++ b/src/main/java/com/hbm/world/feature/OreCave.java @@ -5,6 +5,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockStalagmite; import com.hbm.inventory.RecipesCommon.MetaBlock; +import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; @@ -103,7 +104,7 @@ public class OreCave { for(int y = yLevel - range; y <= yLevel + range; y++) { Block genTarget = world.getBlock(x, y, z); - if(genTarget.isNormalCube() && (genTarget.getMaterial() == Material.rock || genTarget.getMaterial() == Material.ground)) { + if(genTarget.isNormalCube() && (genTarget.getMaterial() == Material.rock || genTarget.getMaterial() == Material.ground) && DungeonToolbox.allowedToReplace(genTarget)) { boolean shouldGen = false; boolean canGenFluid = event.rand.nextBoolean(); diff --git a/src/main/java/com/hbm/world/feature/OreLayer.java b/src/main/java/com/hbm/world/feature/OreLayer.java index b0411b147..aacf1c416 100644 --- a/src/main/java/com/hbm/world/feature/OreLayer.java +++ b/src/main/java/com/hbm/world/feature/OreLayer.java @@ -3,6 +3,7 @@ package com.hbm.world.feature; import java.util.Random; import com.hbm.inventory.RecipesCommon.MetaBlock; +import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; @@ -99,7 +100,7 @@ public class OreLayer { if(event.rand.nextFloat() < density) { Block genTarget = world.getBlock(x, y, z); - if(genTarget.isReplaceableOreGen(world, x, y, z, target)) { + if(genTarget.isReplaceableOreGen(world, x, y, z, target) && DungeonToolbox.allowedToReplace(genTarget)) { world.setBlock(x, y, z, ore.block, ore.meta, 2); } } diff --git a/src/main/java/com/hbm/world/feature/OreLayer3D.java b/src/main/java/com/hbm/world/feature/OreLayer3D.java index 67fecb388..50fba58b3 100644 --- a/src/main/java/com/hbm/world/feature/OreLayer3D.java +++ b/src/main/java/com/hbm/world/feature/OreLayer3D.java @@ -2,6 +2,8 @@ package com.hbm.world.feature; import java.util.Random; +import com.hbm.world.generator.DungeonToolbox; + import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -16,6 +18,10 @@ public class OreLayer3D { NoiseGeneratorPerlin noiseY; NoiseGeneratorPerlin noiseZ; + double scaleH; + double scaleV; + double threshold; + Block block; int meta; int dim = 0; @@ -30,6 +36,21 @@ public class OreLayer3D { this.dim = dim; return this; } + + public OreLayer3D setScaleH(double scale) { + this.scaleH = scale; + return this; + } + + public OreLayer3D setScaleV(double scale) { + this.scaleV = scale; + return this; + } + + public OreLayer3D setThreshold(double threshold) { + this.threshold = threshold; + return this; + } @SubscribeEvent public void onDecorate(DecorateBiomeEvent.Pre event) { @@ -44,9 +65,6 @@ public class OreLayer3D { int cX = event.chunkX; int cZ = event.chunkZ; - - double scaleH = 0.04D; - double scaleV = 0.25D; for(int x = cX + 8; x < cX + 24; x++) { for(int z = cZ + 8; z < cZ + 24; z++) { @@ -55,10 +73,10 @@ public class OreLayer3D { double nY = this.noiseY.func_151601_a(x * scaleH, z * scaleH); double nZ = this.noiseZ.func_151601_a(x * scaleH, y * scaleV); - if(nX * nY * nZ > 220) { + if(nX * nY * nZ > threshold) { Block target = world.getBlock(x, y, z); - if(target.isNormalCube() && target.getMaterial() == Material.rock) { + if(target.isNormalCube() && target.getMaterial() == Material.rock && DungeonToolbox.allowedToReplace(target)) { world.setBlock(x, y, z, block, meta, 2); } } diff --git a/src/main/java/com/hbm/world/feature/SchistStratum.java b/src/main/java/com/hbm/world/feature/SchistStratum.java index f16f4b93a..d83ec528e 100644 --- a/src/main/java/com/hbm/world/feature/SchistStratum.java +++ b/src/main/java/com/hbm/world/feature/SchistStratum.java @@ -3,6 +3,7 @@ package com.hbm.world.feature; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; @@ -51,7 +52,7 @@ public class SchistStratum { Block target = world.getBlock(x, y, z); - if(target.isNormalCube() && target.getMaterial() == Material.rock) { + if(target.isNormalCube() && target.getMaterial() == Material.rock && DungeonToolbox.allowedToReplace(target)) { world.setBlock(x, y, z, ModBlocks.stone_gneiss, 0, 2); } } diff --git a/src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java b/src/main/java/com/hbm/world/gen/MapGenNTMFeatures.java similarity index 90% rename from src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java rename to src/main/java/com/hbm/world/gen/MapGenNTMFeatures.java index 4bb3ea17b..c5383cca0 100644 --- a/src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java +++ b/src/main/java/com/hbm/world/gen/MapGenNTMFeatures.java @@ -1,4 +1,4 @@ -package com.hbm.world.worldgen; +package com.hbm.world.gen; import java.util.Arrays; import java.util.Iterator; @@ -7,9 +7,10 @@ import java.util.Random; import com.hbm.config.GeneralConfig; import com.hbm.config.StructureConfig; -import com.hbm.world.worldgen.components.CivilianFeatures.*; -import com.hbm.world.worldgen.components.OfficeFeatures.*; -import com.hbm.world.worldgen.components.RuinFeatures.*; +import com.hbm.world.gen.component.BunkerComponents.BunkerStart; +import com.hbm.world.gen.component.CivilianFeatures.*; +import com.hbm.world.gen.component.OfficeFeatures.*; +import com.hbm.world.gen.component.RuinFeatures.*; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; @@ -89,6 +90,9 @@ public class MapGenNTMFeatures extends MapGenStructure { /** Returns new StructureStart if structure can be spawned at coords */ @Override protected StructureStart getStructureStart(int chunkX, int chunkZ) { + if(this.rand.nextInt(15) == 0) { //eh might as well, they'll already be prettty rare anyway + return new BunkerStart(this.worldObj, this.rand, chunkX, chunkZ); + } return new MapGenNTMFeatures.Start(this.worldObj, this.rand, chunkX, chunkZ); } @@ -99,10 +103,8 @@ public class MapGenNTMFeatures extends MapGenStructure { public Start(World world, Random rand, int chunkX, int chunkZ) { super(chunkX, chunkZ); - BiomeGenBase biome = world.getBiomeGenForCoords(chunkX * 16 + 8, chunkZ * 16 + 8); - int posY = world.getHeightValue(chunkX * 16 + 8, chunkZ * 16 + 8); - if(posY == 0) - posY = world.getTopSolidOrLiquidBlock(chunkX * 16 + 8, chunkZ * 16 + 8); + BiomeGenBase biome = world.getBiomeGenForCoords(chunkX * 16 + 8, chunkZ * 16 + 8); //Only gets the biome in the corner of the chunk. + final int posY = 64; // Terrain *does not exist* at this stage - at least, for vanilla. Here it has to be called after, but better safe than sorry. /* * Probably want to use nextInt() to increase the structures of rarity here. As a fallback, you could have generic stone brick/useless block ruins that will always be chosen if the diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java new file mode 100644 index 000000000..a672e32a3 --- /dev/null +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -0,0 +1,123 @@ +package com.hbm.world.gen; + +import java.util.Random; + +import com.hbm.config.StructureConfig; + +import cpw.mods.fml.common.IWorldGenerator; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.IChunkProvider; +import static net.minecraftforge.common.BiomeDictionary.*; +import net.minecraftforge.event.terraingen.InitMapGenEvent.EventType; +import net.minecraftforge.event.terraingen.PopulateChunkEvent; +import static net.minecraftforge.event.terraingen.TerrainGen.*; +import net.minecraftforge.event.world.WorldEvent; + +public class NTMWorldGenerator implements IWorldGenerator { + + private MapGenNTMFeatures scatteredFeatureGenerator = new MapGenNTMFeatures(); + + private final Random rand = new Random(); //A central random, used to cleanly generate our stuff without affecting vanilla or modded seeds. + + /** Inits all MapGen upon the loading of a new world. Hopefully clears out structureMaps and structureData when a different world is loaded. */ + @SubscribeEvent + public void onLoad(WorldEvent.Load event) { + scatteredFeatureGenerator = (MapGenNTMFeatures) getModdedMapGen(new MapGenNTMFeatures(), EventType.CUSTOM); + hasPopulationEvent = false; + } + + /** Called upon the initial population of a chunk. Called in the pre-population event first; called again if pre-population didn't occur (flatland) */ + private void setRandomSeed(World world, int chunkX, int chunkZ) { + rand.setSeed(world.getSeed()); + final long i = rand.nextLong() / 2L * 2L + 1L; + final long j = rand.nextLong() / 2L * 2L + 1L; + rand.setSeed((long)chunkX * i + (long)chunkZ * j ^ world.getSeed()); + } + + /* + * Pre-population Events / Structure Generation + * Used to generate structures without unnecessary intrusion by biome decoration, like trees. + */ + + private boolean hasPopulationEvent = false; // Does the given chunkGenerator have a population event? If not (flatlands), default to using generate. + + @SubscribeEvent + public void generateStructures(PopulateChunkEvent.Pre event) { + setRandomSeed(event.world, event.chunkX, event.chunkZ); //Set random for population down the line. + hasPopulationEvent = true; + + if(!StructureConfig.enableStructures) return; + + switch (event.world.provider.dimensionId) { + case -1: + break; + case 0: + generateOverworldStructures(event.world, event.chunkProvider, event.chunkX, event.chunkZ); + break; + case 1: + break; + } + } + + protected void generateOverworldStructures(World world, IChunkProvider chunkProvider, int chunkX, int chunkZ) { + Block[] ablock = new Block[65536]; //ablock isn't actually used for anything in MapGenStructure + + this.scatteredFeatureGenerator.func_151539_a(chunkProvider, world, chunkX, chunkZ, ablock); + this.scatteredFeatureGenerator.generateStructuresInChunk(world, rand, chunkX, chunkZ); + } + + /* + * Post-Vanilla / Modded Generation + * Used to generate features that don't care about intrusions (ores, craters, caves, etc.) + */ + + @Override + public void generate(Random rand, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { + + switch (world.provider.dimensionId) { + case -1: + generateNether(world, rand, chunkGenerator, chunkX, chunkZ); break; + case 0: + generateSurface(world, rand, chunkGenerator, chunkProvider, chunkX, chunkZ); break; + case 1: + generateEnd(world, rand, chunkGenerator, chunkX, chunkZ); break; + } + } + + private void generateNether(World world, Random rand, IChunkProvider chunkGenerator, int chunkX, int chunkZ) { } + + /* Overworld Generation */ + + private void generateSurface(World world, Random rand, IChunkProvider chunkGenerator, IChunkProvider chunkProvider, int chunkX, int chunkZ) { + if(!hasPopulationEvent) { //If we've failed to generate any structures (flatlands) + setRandomSeed(world, chunkX, chunkZ); //Reset the random seed to compensate + if(StructureConfig.enableStructures) generateOverworldStructures(world, chunkGenerator, chunkX, chunkZ); //Do it through the post-population generation directly + } + + final int posX = (chunkX << 4) + 8; + final int posZ = (chunkZ << 4) + 8; + BiomeGenBase biome = world.getBiomeGenForCoords(posX, posZ); + + /* biome dictionary my beloved <3 + * no check for tom here because the event handler already checks for decoration events, + this way they won't become permanently extinct. + */ + + /* Biome check, followed by chance, followed by event (for compat, both intra- and inter- (in the case of Tom). */ + + + } + + private void generateEnd(World world, Random rand, IChunkProvider chunkGenerator, int chunkX, int chunkZ) { } + + /** Utility method for biome checking multiple types exclusively. Not sure why it wasn't already present. */ + public static boolean isBiomeOfTypes(BiomeGenBase biome, Type... types) { //If new biomes are implemented, move this to any biome-related utility class. + for(Type type : types) { + if(!isBiomeOfType(biome, type)) return false; + } + + return true; + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/ProceduralStructureStart.java b/src/main/java/com/hbm/world/gen/ProceduralStructureStart.java new file mode 100644 index 000000000..f5dcc1446 --- /dev/null +++ b/src/main/java/com/hbm/world/gen/ProceduralStructureStart.java @@ -0,0 +1,247 @@ +package com.hbm.world.gen; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Random; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraft.world.gen.structure.StructureBoundingBox; +import net.minecraft.world.gen.structure.StructureComponent; +import net.minecraft.world.gen.structure.StructureStart; + +/** This makes so much more sense! OOP wasn't confusing sometimes, you were just retarded! */ +public class ProceduralStructureStart extends StructureStart { + /** List of queued components to call buildComponent on randomly. Iterated over until hard limits reached. */ + public List queuedComponents = new ArrayList(); + /** List of the component weights for this particular structure -- weights removed as components are 'used up.' */ + protected List componentWeightList; //Make sure to initialize the array list to the weight array size, since might as well + + public ProceduralStructureStart() { } + + public ProceduralStructureStart(int chunkX, int chunkZ) { + super(chunkX, chunkZ); + } + + /** 'starter' is just the starting component, so like a village well. meant to be nice and convenient and not needing a super necessarily. */ + public ProceduralStructureStart buildStart(World world, Random rand, StructureComponent starter, Weight...weights) { + prepareWeights(weights); + + components.add(starter); + queuedComponents.add(starter); + while(!queuedComponents.isEmpty()) { + final int i = rand.nextInt(queuedComponents.size()); + StructureComponent component = queuedComponents.remove(i); + if(component instanceof ProceduralComponent) + ((ProceduralComponent) component).buildComponent(this, rand); //additional components are added to the list; the 'last component' is the caller already. + } + + this.updateBoundingBox(); + return this; + } + + public void prepareWeights(Weight...weights) { + componentWeightList = new ArrayList(weights.length); + + for(int i = 0; i < weights.length; i++) { + weights[i].instancesSpawned = 0; + componentWeightList.add(weights[i]); + } + } + + /** Reads from NBT. */ + @Override + public void func_143017_b(NBTTagCompound nbt) { + + } + + /** Writes to NBT. */ + @Override + public void func_143022_a(NBTTagCompound nbt) { + + } + + protected int getTotalWeight() { + boolean flag = false; + int totalWeight = 0; + Weight weight; + + for(Iterator iterator = componentWeightList.iterator(); iterator.hasNext(); totalWeight += weight.weight) { //Iterates over the entire list to find the total weight + weight = (Weight) iterator.next(); + + if(weight.instanceLimit >= 0 && weight.instancesSpawned < weight.instanceLimit) //can more structure pieces be added, in general? + flag = true; + } + + return flag ? totalWeight : -1; + } + + protected StructureComponent getWeightedComponent(StructureComponent last, Random rand, int minX, int minY, int minZ, int coordMode, int componentType) { + int totalWeight = getTotalWeight(); + + if(totalWeight < 0) + return null; + + for(int i = 0; i < 5; i++) { + int value = rand.nextInt(totalWeight); //Pick a random value, based on how many parts there are already + Iterator iterator = componentWeightList.iterator(); + + while(iterator.hasNext()) { + Weight weight = (Weight)iterator.next(); + value -= weight.weight; //Iterate over the list until the value is less than 0 + + if(value < 0) { + if(!weight.canSpawnStructure(componentType, coordMode, last)) //Additional checks based on game state info preventing spawn? start from beginning + break; + + StructureComponent component = weight.lambda.findValidPlacement(components, rand, minX, minY, minZ, coordMode, componentType); //Construct the chosen component + + if(component != null) { //If it has been constructed, add it + weight.instancesSpawned++; + + if(!weight.canSpawnMoreStructures()) //Structure can no longer be spawned regardless of game state? remove as an option + componentWeightList.remove(weight); + + return component; + } + + } + } + } + + return null; + } + + //might remove these, add hard limits so subclasses can create their own implementations + protected int sizeLimit = 50; + protected int distanceLimit = 64; + + /** Gets the next valid component based on the structure start's members */ + protected StructureComponent getNextValidComponent(StructureComponent last, Random rand, int minX, int minY, int minZ, int coordMode, int componentType) { + + if(components.size() > sizeLimit) //Hard limit on amount of components + return null; + + if(Math.abs(minX - (func_143019_e() * 16 + 8)) <= distanceLimit && Math.abs(minZ - (func_143018_f() * 16 + 8)) <= distanceLimit) { //Hard limit on spread of structure + + StructureComponent structure = getWeightedComponent(last, rand, minX, minY, minZ, coordMode, componentType + 1); //Returns null if all checks fail + + if(structure != null) { + this.components.add(structure); //Adds component to structure start list + this.queuedComponents.add(structure); //Add it to the list of queued components waiting to be built + } + + return structure; + } + + return null; + } + + /** Useful utility method to automatically construct the appropriate structure bounding box; based on the getNextComponents below!
+ * posX, posY, posZ represent the original anchor point of the structurecomponent (minX, minY, minZ).
+ * offsetX, offsetY, offsetZ all add onto that point, meaning that offsets will always move that anchor towards +x, +y, +z (in terms of south).
+ * maxX, maxY, maxZ additionally are added to get the maximum x, y, z (obviously) in terms of south. An offset of 1 is subtracted, so these do not start at 0, and + * refer to the ACTUAL dimensions of the component.
+ * The initial anchor point is kind of arbitrary based on where it is in the door, so what really matters is keeping it consistent. + */ + public static StructureBoundingBox getComponentToAddBoundingBox(int posX, int posY, int posZ, int offsetX, int offsetY, int offsetZ, int maxX, int maxY, int maxZ, int coordMode) { + switch(coordMode) { + default: + case 0: return new StructureBoundingBox(posX + offsetX, posY + offsetY, posZ + offsetZ, posX + maxX - 1 + offsetX, posY + maxY - 1 + offsetY, posZ + maxZ - 1 + offsetZ); //South + case 1: return new StructureBoundingBox(posX - maxZ + 1 - offsetZ, posY + offsetY, posZ + offsetX, posX - offsetZ, posY + maxY - 1 + offsetY, posZ + maxX - 1 + offsetX); //West + case 2: return new StructureBoundingBox(posX - maxX + 1 - offsetX, posY + offsetY, posZ - maxZ + 1 - offsetZ, posX - offsetX, posY + maxY - 1 + offsetY, posZ + offsetZ); //North + case 3: return new StructureBoundingBox(posX + offsetZ, posY + offsetY, posZ - maxX + 1 - offsetX, posX + maxZ - 1 + offsetZ, posY + maxY - 1 + offsetY, posZ - offsetX); //East + } + } + + /** no class-based multiple inheritance? */ + public static interface ProceduralComponent { + + public default void buildComponent(ProceduralStructureStart start, Random rand) { } //no class-based multiple inheritance? + + /** Gets next component in the direction this component is facing.
'original' refers to the initial starting component (hard distance limits), 'components' refers to the StructureStart list.
+ * offset and offsetY are added to the anchor point of the new component
, referring to the minX and minY respectively (in terms of south).
+ * An offset of 1 is added to the minZ anchor point, relative to south. + */ + public default StructureComponent getNextComponentNormal(ProceduralStructureStart start, StructureComponent caller, int coordMode, Random rand, int offset, int offsetY) { + StructureBoundingBox box = caller.getBoundingBox(); + switch(coordMode) { + case 0: return start.getNextValidComponent(caller, rand, box.minX + offset, box.minY + offsetY, box.maxZ + 1, coordMode, caller.getComponentType()); //South + case 1: return start.getNextValidComponent(caller, rand, box.minX - 1, box.minY + offsetY, box.minZ + offset, coordMode, caller.getComponentType()); //West + case 2: return start.getNextValidComponent(caller, rand, box.maxX - offset, box.minY + offsetY, box.minZ - 1, coordMode, caller.getComponentType()); //North + case 3: return start.getNextValidComponent(caller, rand, box.maxX + 1, box.minY + offsetY, box.maxZ - offset, coordMode, caller.getComponentType()); //East + default: return null; + } + } + + /** Gets next component in the opposite direction this component is facing. */ + public default StructureComponent getNextComponentAntiNormal(ProceduralStructureStart start, StructureComponent caller, int coordMode, Random rand, int offset, int offsetY) { + StructureBoundingBox box = caller.getBoundingBox(); + switch(coordMode) { + case 0: return start.getNextValidComponent(caller, rand, box.maxX - offset, box.minY + offsetY, box.minZ - 1, 2, caller.getComponentType()); //South + case 1: return start.getNextValidComponent(caller, rand, box.maxX + 1, box.minY + offsetY, box.maxZ - offset, 3, caller.getComponentType()); //West + case 2: return start.getNextValidComponent(caller, rand, box.minX + offset, box.minY + offsetY, box.maxZ + 1, 0, caller.getComponentType()); //North + case 3: return start.getNextValidComponent(caller, rand, box.minX - 1, box.minY + offsetY, box.minZ + offset, 1, caller.getComponentType()); //East + default: return null; + } + } + + //Keep in mind for these methods: a given room would have its *actual entrance* opposite the side it is facing. + /** Gets next component, to the West (-X) relative to this component. */ + public default StructureComponent getNextComponentWest(ProceduralStructureStart start, StructureComponent caller, int coordMode, Random rand, int offset, int offsetY) { + StructureBoundingBox box = caller.getBoundingBox(); + switch(coordMode) { + case 0: return start.getNextValidComponent(caller, rand, box.minX - 1, box.minY + offsetY, box.minZ + offset, 1, caller.getComponentType()); //South + case 1: return start.getNextValidComponent(caller, rand, box.maxX - offset, box.minY + offsetY, box.minZ - 1, 2, caller.getComponentType()); //West + case 2: return start.getNextValidComponent(caller, rand, box.maxX + 1, box.minY + offsetY, box.maxZ - offset, 3, caller.getComponentType()); //North + case 3: return start.getNextValidComponent(caller, rand, box.minX + offset, box.minY + offsetY, box.maxZ + 1, 0, caller.getComponentType()); //East + default: return null; + } + } + + /** Gets next component, to the East (+X) relative to this component. */ + public default StructureComponent getNextComponentEast(ProceduralStructureStart start, StructureComponent caller, int coordMode, Random rand, int offset, int offsetY) { + StructureBoundingBox box = caller.getBoundingBox(); + switch(coordMode) { + case 0: return start.getNextValidComponent(caller, rand, box.maxX + 1, box.minY + offsetY, box.maxZ - offset, 3, caller.getComponentType()); //South + case 1: return start.getNextValidComponent(caller, rand, box.minX + offset, box.minY + offsetY, box.maxZ + 1, 0, caller.getComponentType()); //West + case 2: return start.getNextValidComponent(caller, rand, box.minX - 1, box.minY + offsetY, box.minZ + offset, 1, caller.getComponentType()); //North + case 3: return start.getNextValidComponent(caller, rand, box.maxX - offset, box.minY + offsetY, box.minZ - 1, 2, caller.getComponentType()); //East + default: return null; + } + } + } + + /** Returns a new instance of this structureComponent, or null if not able to be placed.
Based on bounding box checks. Please use a method reference in the component. */ + @FunctionalInterface + protected static interface instantiateStructure { + StructureComponent findValidPlacement(List components, Random rand, int minX, int minY, int minZ, int coordMode, int componentType); + } + + protected static class Weight { + + public final instantiateStructure lambda; //Read above + + public final int weight; //Weight of this component + public int instancesSpawned; //How many components spawned? + public int instanceLimit; //Limit on amount of components: -1 for no limit + + public Weight(int weight, int limit, instantiateStructure lambda) { + this.weight = weight; + this.instanceLimit = limit; + this.lambda = lambda; + } + + //Checks if another structure can be spawned based on input data + public boolean canSpawnStructure(int componentAmount, int coordMode, StructureComponent component) { + return this.instanceLimit < 0 || this.instancesSpawned < this.instanceLimit; + } + + //Checks if another structure can be spawned at all (used to flag for removal from the list) + public boolean canSpawnMoreStructures() { + return this.instanceLimit < 0 || this.instancesSpawned < this.instanceLimit; + } + + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/component/BunkerComponents.java b/src/main/java/com/hbm/world/gen/component/BunkerComponents.java new file mode 100644 index 000000000..286687203 --- /dev/null +++ b/src/main/java/com/hbm/world/gen/component/BunkerComponents.java @@ -0,0 +1,924 @@ +package com.hbm.world.gen.component; + +import java.util.List; +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.HbmChestContents; +import com.hbm.world.gen.ProceduralStructureStart; +import com.hbm.world.gen.ProceduralStructureStart.ProceduralComponent; +import com.hbm.world.gen.component.Component.ConcreteBricks; + +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraft.world.gen.structure.MapGenStructureIO; +import net.minecraft.world.gen.structure.StructureBoundingBox; +import net.minecraft.world.gen.structure.StructureComponent; + +public class BunkerComponents { + + public static class BunkerStart extends ProceduralStructureStart { + + public BunkerStart() {} + + public BunkerStart(World world, Random rand, int chunkX, int chunkZ) { + super(chunkX, chunkZ); + + this.sizeLimit = 7 + rand.nextInt(6); + this.distanceLimit = 40; + + final int x = chunkX * 16 + 8; + final int z = chunkZ * 16 + 8; + + Weight[] weights = new Weight[] { + new Weight(6, 3, Corridor::findValidPlacement), + new Weight(5, 4, BedroomL::findValidPlacement), + new Weight(10, 3, FunJunction::findValidPlacement), + new Weight(5, 2, BathroomL::findValidPlacement), + new Weight(7, 2, Laboratory::findValidPlacement), + new Weight(5, 1, PowerRoom::findValidPlacement), + }; + + StructureComponent starter = new StartingHub(rand, x, z); + + buildStart(world, rand, starter, weights); + + this.markAvailableHeight(world, rand, 20); + } + + } + + public static void registerComponents() { + MapGenStructureIO.func_143031_a(StartingHub.class, "NTMBStartingHub"); + MapGenStructureIO.func_143031_a(Corridor.class, "NTMBCorridor"); + MapGenStructureIO.func_143031_a(BedroomL.class, "NTMBBedroomL"); + MapGenStructureIO.func_143031_a(FunJunction.class, "NTMBFunJunction"); + MapGenStructureIO.func_143031_a(BathroomL.class, "NTMBBathroomL"); + MapGenStructureIO.func_143031_a(Laboratory.class, "NTMBLaboratory"); + MapGenStructureIO.func_143031_a(PowerRoom.class, "NTMBPowerRoom"); + //TODO more rooms for more variety + } + + //why are we still doing this? + private static ConcreteBricks ConcreteBricks = new ConcreteBricks(); + + public static class StartingHub extends Component implements ProceduralComponent { + + private boolean[] paths = new boolean[3]; + + public StartingHub() { } + + public StartingHub(Random rand, int x, int z) { + super(rand, x, 64, z, 7, 5, 7); + } + + public StartingHub(int componentType, StructureBoundingBox box, int coordMode) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + for(int i = 0; i < paths.length; i++) + nbt.setBoolean("p" + i, paths[i]); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + for(int i = 0; i < paths.length; i++) + paths[i] = nbt.getBoolean("p" + i); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + paths[0] = this.getNextComponentEast(start, this, coordBaseMode, rand, 5, 1) != null; + paths[1] = this.getNextComponentAntiNormal(start, this, coordBaseMode, rand, 4, 1) != null; + paths[2] = this.getNextComponentWest(start, this, coordBaseMode, rand, 3, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 1, 1, 1, 6, 3, 6); + //floor + fillWithMetadataBlocks(world, box, 1, 0, 1, 6, 0, 6, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 1, 4, 1, 6, 4, 6, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 1, 4, 4, 3, 4, 6, ModBlocks.reinforced_stone); + fillWithBlocks(world, box, 0, 5, 0, 7, 5, 7, ModBlocks.reinforced_stone); + //walls + fillWithRandomizedBlocks(world, box, 0, 0, 0, 0, 4, 7, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 7, 6, 4, 7, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 7, 0, 0, 7, 4, 7, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 0, 6, 4, 0, rand, ConcreteBricks); + //meh, fix the area later + final int hpos = Component.getAverageHeight(world, boundingBox, box, boundingBox.maxY) - boundingBox.minY; + //top hatch + placeBlockAtCurrentPosition(world, ModBlocks.concrete_slab, 1, 0, hpos, 5, box); + fillWithMetadataBlocks(world, box, 1, hpos, 4, 1, hpos, 6, ModBlocks.concrete_smooth_stairs, getStairMeta(0)); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_slab, 1, 2, hpos, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(2), 2, hpos, 4, box); + placeBlockAtCurrentPosition(world, Blocks.trapdoor, getDecoModelMeta(8) >> 2, 2, hpos, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(3), 2, hpos, 6, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_slab, 1, 2, hpos, 7, box); + fillWithMetadataBlocks(world, box, 3, hpos, 4, 3, hpos, 6, ModBlocks.concrete_smooth_stairs, getStairMeta(1)); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_slab, 1, 4, hpos, 5, box); + //tunnel downwards + fillWithBlocks(world, box, 1, 6, 4, 1, hpos - 1, 6, ModBlocks.reinforced_stone); + fillWithBlocks(world, box, 2, 1, 6, 2, hpos - 1, 6, ModBlocks.reinforced_stone); + fillWithBlocks(world, box, 3, 6, 4, 3, hpos - 1, 6, ModBlocks.reinforced_stone); + fillWithBlocks(world, box, 2, 6, 4, 2, hpos - 1, 4, ModBlocks.reinforced_stone); + fillWithMetadataBlocks(world, box, 2, 1, 5, 2, hpos - 1, 5, ModBlocks.ladder_sturdy, getDecoMeta(2)); //double check meta + + /* DECO */ + //lamps + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 2, 5, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 5, 5, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 5, 5, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 2, 4, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 5, 4, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 5, 4, 5, box); + //machine + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 3, 1, 6, box); + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(3), 4, 1, 6, HbmChestContents.antenna/*TODO change */, 5); + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 5, 1, 6, box); + fillWithMetadataBlocks(world, box, 3, 2, 6, 5, 2, 6, ModBlocks.concrete_smooth_stairs, getStairMeta(2) | 4); + fillWithMetadataBlocks(world, box, 3, 3, 6, 5, 3, 6, ModBlocks.tape_recorder, getDecoMeta(2)); + //desk + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(1) | 4, 3, 1, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(3) | 4, 4, 1, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(0) | 4, 5, 1, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), 4, 2, 4, box); + //clear out entryways based on path + if(paths[0]) fillWithAir(world, box, 7, 1, 2, 7, 2, 3); + if(paths[1]) fillWithAir(world, box, 3, 1, 0, 4, 2, 0); + if(paths[2]) fillWithAir(world, box, 0, 1, 2, 0, 2, 3); + + return true; + } + } + + public static class Corridor extends Component implements ProceduralComponent { + + private boolean path; + private int[] decorations = new int[2]; + + public Corridor() { } + + public Corridor(int componentType, StructureBoundingBox box, int coordMode, Random rand) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + + decorations[0] = rand.nextInt(6); + decorations[1] = rand.nextInt(6); + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + nbt.setBoolean("p", path); + nbt.setIntArray("d", decorations); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + path = nbt.getBoolean("p"); + decorations = nbt.getIntArray("d"); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + path = this.getNextComponentNormal(start, this, coordBaseMode, rand, 3, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 1, 1, 1, 4, 3, 5); + //floor + fillWithMetadataBlocks(world, box, 1, 0, 1, 4, 0, 5, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 1, 4, 1, 4, 4, 5, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 0, 5, 0, 5, 5, 6, ModBlocks.reinforced_stone); + //walls + fillWithRandomizedBlocks(world, box, 0, 0, 0, 0, 4, 6, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 6, 4, 4, 6, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 5, 0, 0, 5, 4, 6, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 0, 4, 4, 0, rand, ConcreteBricks); + + //TODO different deco types? maybe plants or vending machines? + //save it to nbt either way + /* DECO */ + //lamps + fillWithBlocks(world, box, 2, 5, 3, 3, 5, 3, ModBlocks.reinforced_lamp_off); + fillWithBlocks(world, box, 2, 4, 3, 3, 4, 3, ModBlocks.fan); + //deco misc + final int stairMetaW = getStairMeta(0); + final int stairMetaE = getStairMeta(1); + final int stairMetaN = getStairMeta(2); + final int stairMetaS = getStairMeta(3); + final int decoMetaE = getDecoMeta(4); + final int decoMetaW = getDecoMeta(5); + + for(int i = 0; i <= 1; i++) { + final int x = 1 + i * 3; + switch (decorations[i]) { + default: //table w/ chairs + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, x, 1, 2, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, x, 1, 4, box); + placeBlockAtCurrentPosition(world, Blocks.fence, 0, x, 1, 3, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 1, x, 2, 3, box); + break; + case 1://desk w/ computer + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, x, 1, 2, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, x, 1, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), x, 2, 2, box); + break; + case 2: //couch + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, x, 1, 2, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, i < 1 ? stairMetaE : stairMetaW, x, 1, 3, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, x, 1, 4, box); + break; + case 3: + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, x, 1, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, (i < 1 ? stairMetaE : stairMetaW) | 4, x, 1, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaN | 4, x, 1, 4, box); + placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, x, 2, 2, box); + break; + case 4: + fillWithBlocks(world, box, x, 1, 1, x, 3, 1, ModBlocks.deco_tungsten); + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, x, 1, 3, box); + fillWithMetadataBlocks(world, box, x, 3, 2, x, 3, 4, ModBlocks.concrete_smooth_stairs, i < 1 ? stairMetaE : stairMetaW); + fillWithBlocks(world, box, x, 1, 5, x, 3, 5, ModBlocks.deco_tungsten); + fillWithMetadataBlocks(world, box, x, 1, 2, x, 2, 2, ModBlocks.tape_recorder, i < 1 ? decoMetaW : decoMetaE); //don't ask me + fillWithMetadataBlocks(world, box, x, 1, 4, x, 2, 4, ModBlocks.tape_recorder, i < 1 ? decoMetaW : decoMetaE); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, i < 1 ? getDecoModelMeta(3) : getDecoModelMeta(2), x, 2, 3, box); + break; + case 5: + placeBlockAtCurrentPosition(world, Blocks.fence, 0, x, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 0, x, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, x, 1, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaN | 4, x, 1, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.radiorec, i < 1 ? decoMetaE : decoMetaW, x, 2, 3, box); + break; + } + } + //doors + placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 2, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 3, 1, 0); + if(path) fillWithAir(world, box, 2, 1, 6, 3, 2, 6); + + return true; + } + + public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) { + StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -3, -1, 0, 6, 6, 7, coordMode); + return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new Corridor(type, box, coordMode, rand) : null; + } + } + + public static class BedroomL extends Component implements ProceduralComponent { + + private boolean path; + + public BedroomL() { } + + public BedroomL(int componentType, StructureBoundingBox box, int coordMode) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + nbt.setBoolean("p", path); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + path = nbt.getBoolean("p"); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + path = this.getNextComponentWest(start, this, coordBaseMode, rand, 9, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 4, 1, 1, 8, 3, 4); + fillWithAir(world, box, 1, 1, 5, 8, 3, 9); + //floor + fillWithMetadataBlocks(world, box, 4, 0, 1, 8, 0, 4, ModBlocks.vinyl_tile, 1); + fillWithMetadataBlocks(world, box, 1, 0, 5, 8, 0, 9, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 4, 4, 1, 8, 4, 4, ModBlocks.vinyl_tile); + fillWithBlocks(world, box, 1, 4, 5, 8, 4, 9, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 3, 5, 0, 9, 5, 3, ModBlocks.reinforced_stone); + fillWithBlocks(world, box, 0, 5, 4, 9, 5, 10, ModBlocks.reinforced_stone); + //walls + fillWithRandomizedBlocks(world, box, 0, 0, 4, 0, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 10, 8, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 9, 0, 0, 9, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 4, 0, 0, 8, 4, 0, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 3, 0, 0, 3, 4, 4, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 4, 2, 4, 4, rand, ConcreteBricks); + + /* DECO */ + //lamps + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 3, 5, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 6, 5, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 6, 5, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 3, 4, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 6, 4, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 6, 4, 3, box); + //Beds w/ table + final int stairMetaW = getStairMeta(0); + final int stairMetaE = getStairMeta(1); + final int stairMetaN = getStairMeta(2); + final int stairMetaS = getStairMeta(3); + placeBed(world, box, 1, 5, 1, 1); + placeBed(world, box, 1, 5, 1, 3); + placeBed(world, box, 2, 3, 1, 6); + placeBed(world, box, 2, 1, 1, 6); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaE | 4, 4, 1, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaE | 4, 4, 1, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, 4, 1, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, 2, 1, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.radiorec, getDecoMeta(4), 4, 2, 4, box); + //table w/ microwave + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, 8, 1, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaN | 4, 8, 1, 4, box); + placeBlockAtCurrentPosition(world, Blocks.noteblock, 0, 8, 1, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.machine_microwave, getDecoMeta(4), 8, 2, 4, box); + //desk w/ computer + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaW | 4, 6, 1, 9, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaN | 4, 5, 1, 9, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaE | 4, 4, 1, 9, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, 5, 1, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(0), 5, 2, 9, box); + generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 3, 1, 9, HbmChestContents.filingCabinet, 5); + //lockers + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(4), 8, 1, 7, HbmChestContents.lockersVault, 3); + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(4), 8, 2, 7, HbmChestContents.lockersVault, 5); + fillWithBlocks(world, box, 8, 1, 8, 8, 2, 8, ModBlocks.deco_tungsten); + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(4), 8, 1, 9, HbmChestContents.lockersVault, 4); + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(4), 8, 2, 9, HbmChestContents.lockersVault, 5); + fillWithMetadataBlocks(world, box, 8, 3, 7, 8, 3, 9, Blocks.trapdoor, getDecoModelMeta(2) >> 2); + //doors + placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 7, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 8, 1, 0); + if(path) fillWithAir(world, box, 0, 1, 8, 0, 2, 9); + + return true; + } + + public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) { + StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -8, -1, 0, 10, 6, 11, coordMode); + return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new BedroomL(type, box, coordMode) : null; + } + } + + public static class FunJunction extends Component implements ProceduralComponent { + + private boolean[] paths = new boolean[2]; + + public FunJunction() { } + + public FunJunction(int componentType, StructureBoundingBox box, int coordMode) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + for(int i = 0; i < paths.length; i++) + nbt.setBoolean("p" + i, paths[i]); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + for(int i = 0; i < paths.length; i++) + paths[i] = nbt.getBoolean("p" + i); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + paths[0] = this.getNextComponentEast(start, this, coordBaseMode, rand, 6, 1) != null; + paths[1] = this.getNextComponentNormal(start, this, coordBaseMode, rand, 5, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 1, 1, 1, 6, 3, 10); + //floor + fillWithMetadataBlocks(world, box, 1, 0, 1, 6, 0, 10, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 1, 4, 1, 6, 4, 10, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 0, 5, 0, 7, 5, 11, ModBlocks.reinforced_stone); + //walls + fillWithRandomizedBlocks(world, box, 0, 0, 0, 0, 4, 11, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 11, 6, 4, 11, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 7, 0, 0, 7, 4, 11, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 0, 6, 4, 0, rand, ConcreteBricks); + + /* DECO */ + //lamps + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 2, 5, 3, box); + fillWithBlocks(world, box, 5, 5, 5, 5, 5, 6, ModBlocks.reinforced_lamp_off); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 2, 5, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 2, 4, 3, box); + fillWithBlocks(world, box, 5, 4, 5, 5, 4, 6, ModBlocks.fan); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 2, 4, 8, box); + //couches w/ tables + final int stairMetaW = getStairMeta(0); + final int stairMetaE = getStairMeta(1); + final int stairMetaN = getStairMeta(2); + final int stairMetaS = getStairMeta(3); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaE, 1, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, 2, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaW, 3, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, 1, 1, 4, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaE, 1, 1, 5, box); + fillWithMetadataBlocks(world, box, 1, 1, 6, 2, 1, 6, Blocks.oak_stairs, stairMetaN); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaW, 3, 1, 6, box); + placeBlockAtCurrentPosition(world, Blocks.fence, 0, 1, 1, 3, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 0, 1, 2, 3, box); + placeBlockAtCurrentPosition(world, Blocks.fence, 0, 3, 1, 4, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 0, 3, 2, 4, box); + //table & chest + placeBlockAtCurrentPosition(world, Blocks.fence, 0, 6, 1, 2, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 0, 6, 2, 2, box); + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(4), 6, 1, 3, HbmChestContents.lockersVault, 8); + //desk w/ computer + bobblehead + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, 1, 1, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaE | 4, 1, 1, 9, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaN | 4, 1, 1, 10, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, 2, 1, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(3), 1, 2, 9, box); + if(rand.nextBoolean()) placeRandomBobble(world, box, rand, 1, 2, 8); + //jukebox + fillWithBlocks(world, box, 6, 1, 8, 6, 2, 8, Blocks.noteblock); + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 6, 1, 9, box); + placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, getDecoMeta(4), 6, 2, 9, box); + fillWithBlocks(world, box, 6, 3, 8, 6, 3, 9, ModBlocks.concrete_slab); + placeLever(world, box, 2, rand.nextBoolean(), 5, 1, 9); + //doors + placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 4, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 5, 1, 0); + if(paths[0]) fillWithAir(world, box, 7, 1, 5, 7, 2, 6); + if(paths[1]) fillWithAir(world, box, 4, 1, 11, 5, 2, 11); + + return true; + } + + public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) { + StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -5, -1, 0, 8, 6, 12, coordMode); + return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new FunJunction(type, box, coordMode) : null; + } + } + + public static class BathroomL extends Component implements ProceduralComponent { + + private boolean path; + + public BathroomL() { } + + public BathroomL(int componentType, StructureBoundingBox box, int coordMode) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + nbt.setBoolean("p", path); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + path = nbt.getBoolean("p"); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + path = this.getNextComponentEast(start, this, coordBaseMode, rand, 3, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 1, 1, 1, 7, 3, 9); + //floor + fillWithMetadataBlocks(world, box, 1, 0, 1, 7, 0, 9, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 1, 4, 1, 7, 4, 9, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 0, 5, 0, 8, 5, 10, ModBlocks.reinforced_stone); + //walls + fillWithRandomizedBlocks(world, box, 0, 0, 0, 0, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 10, 7, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 8, 0, 0, 8, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 0, 7, 4, 0, rand, ConcreteBricks); + + /* DECO */ + //lamps + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 2, 5, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 2, 5, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 5, 5, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 5, 5, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 2, 4, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 2, 4, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 5, 4, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 5, 4, 3, box); + //sinks + for(int i = 2; i <= 8; i += 2) { + placeBlockAtCurrentPosition(world, Blocks.cauldron, rand.nextInt(4), 1, 1, i, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_slab, 8, 1, 1, i + 1, box); + placeBlockAtCurrentPosition(world, Blocks.tripwire_hook, getTripwireMeta(3), 1, 2, i, box); + } + //hand-dryers (industrial-strength) + placeBlockAtCurrentPosition(world, ModBlocks.steel_beam, 3, 4, 1, 9, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, getDecoMeta(2), 4, 2, 9, box); + placeBlockAtCurrentPosition(world, Blocks.stone_button, getButtonMeta(2), 3, 2, 9, box); //TODO button meta + placeBlockAtCurrentPosition(world, ModBlocks.steel_beam, 3, 6, 1, 9, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, getDecoMeta(2), 6, 2, 9, box); + placeBlockAtCurrentPosition(world, Blocks.stone_button, getButtonMeta(1), 7, 2, 9, box); + //stalls w/ toilets + for(int i = 1; i <= 5; i += 2) { + placeDoor(world, box, ModBlocks.door_metal, 0, false, rand.nextBoolean(), 5, 1, i); + fillWithMetadataBlocks(world, box, 5, 1, i + 1, 5, 2, i + 1, ModBlocks.steel_corner, getDecoMeta(2)); + fillWithMetadataBlocks(world, box, 6, 1, i + 1, 7, 2, i + 1, ModBlocks.steel_wall, getDecoMeta(2)); + placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_rim, 0, 7, 1, i, box); + placeBlockAtCurrentPosition(world, Blocks.trapdoor, getDecoModelMeta(2) >> 2, 7, 2, i, box); + } + //doors + placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 2, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 3, 1, 0); + if(path) fillWithAir(world, box, 8, 1, 7, 8, 2, 8); + + return true; + } + + public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) { + StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -3, -1, 0, 9, 6, 11, coordMode); + return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new BathroomL(type, box, coordMode) : null; + } + } + + public static class Laboratory extends Component implements ProceduralComponent { + + private boolean[] paths = new boolean[2]; + + public Laboratory() { } + + public Laboratory(int componentType, StructureBoundingBox box, int coordMode) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + for(int i = 0; i < paths.length; i++) + nbt.setBoolean("p" + i, paths[i]); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + for(int i = 0; i < paths.length; i++) + paths[i] = nbt.getBoolean("p" + i); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + paths[0] = this.getNextComponentWest(start, this, coordBaseMode, rand, 3, 1) != null; + paths[1] = this.getNextComponentNormal(start, this, coordBaseMode, rand, 6, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 1, 1, 1, 7, 3, 11); + //floor + fillWithMetadataBlocks(world, box, 1, 0, 1, 7, 0, 11, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 1, 4, 1, 7, 4, 11, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 0, 5, 0, 8, 5, 12, ModBlocks.reinforced_stone); + //walls + fillWithBlocks(world, box, 0, 0, 0, 0, 4, 12, ModBlocks.brick_concrete); + fillWithBlocks(world, box, 1, 0, 12, 7, 4, 12, ModBlocks.brick_concrete); + fillWithBlocks(world, box, 8, 0, 0, 8, 4, 12, ModBlocks.brick_concrete); + fillWithBlocks(world, box, 1, 0, 0, 7, 4, 0, ModBlocks.brick_concrete); + + /* DECO */ + //lamps + for(int x = 3; x <= 5; x += 2) { + for(int z = 3; z <= 9; z += 3) { + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, x, 5, z, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, x, 4, z, box); + } + } + //couch w/ table + final int stairMetaW = getStairMeta(0); + final int stairMetaE = getStairMeta(1); + final int stairMetaN = getStairMeta(2); + final int stairMetaS = getStairMeta(3); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaE, 1, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, 2, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaW, 3, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.fence, 0, 4, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 0, 4, 2, 1, box); + //big ole wall machine + final int decoMetaE = getDecoMeta(4); + final int decoMetaW = getDecoMeta(5); + final int decoModelMetaW = getDecoModelMeta(2); + final int decoModelMetaE = getDecoModelMeta(3); + fillWithBlocks(world, box, 1, 1, 5, 1, 3, 5, ModBlocks.deco_tungsten); + placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 1, 1, 6, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, decoModelMetaE, 1, 2, 6, box); + placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, decoMetaW, 1, 3, 6, box); + fillWithMetadataBlocks(world, box, 1, 1, 7, 1, 3, 7, ModBlocks.tape_recorder, decoMetaW); + fillWithBlocks(world, box, 1, 1, 8, 1, 3, 8, ModBlocks.deco_tungsten); + fillWithMetadataBlocks(world, box, 1, 1, 9, 1, 1, 10, ModBlocks.tape_recorder, decoMetaW); + fillWithMetadataBlocks(world, box, 1, 2, 9, 1, 2, 10, ModBlocks.concrete_smooth_stairs, stairMetaE | 4); + fillWithMetadataBlocks(world, box, 1, 3, 9, 1, 3, 10, ModBlocks.tape_recorder, decoMetaW); + fillWithBlocks(world, box, 1, 1, 11, 1, 3, 11, ModBlocks.deco_tungsten); + //desks w/ computers + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(2), 3, 1, 4, HbmChestContents.machineParts, 6); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, 3, 1, 5, box); + fillWithMetadataBlocks(world, box, 4, 1, 5, 4, 1, 7, ModBlocks.concrete_smooth_stairs, stairMetaW | 4); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, 3, 1, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, 3, 1, 9, box); + fillWithMetadataBlocks(world, box, 4, 1, 9, 4, 1, 11, ModBlocks.concrete_smooth_stairs, stairMetaW | 4); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, 3, 1, 11, box); + placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, 3, 2, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, decoModelMetaW, 4, 2, 6, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, decoModelMetaW, 4, 2, 10, box); + //lever wall machine + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaW | 4, 7, 1, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 7, 2, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaW, 7, 3, 3, box); + placeLever(world, box, 2, rand.nextBoolean(), 6, 2, 3); + fillWithMetadataBlocks(world, box, 7, 1, 4, 7, 2, 4, ModBlocks.steel_poles, decoMetaE); + placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 7, 3, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 7, 1, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, decoMetaE, 7, 1, 6, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 7, 1, 7, box); + fillWithMetadataBlocks(world, box, 7, 2, 5, 7, 2, 7, ModBlocks.concrete_smooth_stairs, stairMetaW | 4); + fillWithMetadataBlocks(world, box, 7, 3, 5, 7, 3, 7, ModBlocks.tape_recorder, decoMetaE); + //table w/ chest + placeBlockAtCurrentPosition(world, Blocks.fence, 0, 7, 1, 9, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 0, 7, 2, 9, box); + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(4), 7, 1, 10, HbmChestContents.labVault, 8); + //doors + placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 5, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 6, 1, 0); + if(paths[0]) fillWithAir(world, box, 0, 1, 2, 0, 2, 3); + if(paths[1]) fillWithAir(world, box, 5, 1, 12, 6, 2, 12); + + return true; + } + + public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) { + StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -6, -1, 0, 9, 6, 12, coordMode); + return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new Laboratory(type, box, coordMode) : null; + } + } + + public static class PowerRoom extends Component implements ProceduralComponent { + + private boolean path; + + private int powerType; + + public PowerRoom() { } + + public PowerRoom(int componentType, StructureBoundingBox box, int coordMode, Random rand) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + + float chance = rand.nextFloat(); + powerType = chance < 0.2 ? 2 : chance < 0.6 ? 1 : 0; + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + nbt.setBoolean("p", path); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + path = nbt.getBoolean("p"); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + path = this.getNextComponentEast(start, this, coordBaseMode, rand, 4, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 1, 1, 1, 10, 3, 10); + //floor + fillWithMetadataBlocks(world, box, 1, 0, 1, 10, 0, 10, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 1, 4, 1, 10, 4, 10, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 0, 5, 0, 11, 5, 11, ModBlocks.reinforced_stone); + //walls + fillWithRandomizedBlocks(world, box, 0, 0, 0, 11, 4, 0, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 0, 0, 1, 0, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 0, 0, 11, 11, 4, 11, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 11, 0, 1, 11, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 5, 1, 1, 5, 3, 6, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 6, 1, 6, 10, 3, 6, rand, ConcreteBricks); + + /* DECO */ + //lamps + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 3, 5, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 3, 5, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 3, 5, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 6, 5, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 9, 5, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 3, 4, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 3, 4, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 3, 4, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 6, 4, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 9, 4, 8, box); + //power room stuff + fillWithBlocks(world, box, 7, 2, 6, 9, 2, 6, ModBlocks.reinforced_glass); + int decoMetaE = getDecoMeta(5); + int decoMetaW = getDecoMeta(4); + int decoMetaN = getDecoMeta(3); + int decoMetaS = getDecoMeta(2); + + int stairMetaS = getStairMeta(3); + int stairMetaN = getStairMeta(2); + int stairMetaW = getStairMeta(1); + int stairMetaE = getStairMeta(0); + + switch(this.powerType) { + default: + fillWithBlocks(world, box, 6, 1, 1, 6, 3, 1, ModBlocks.deco_pipe_framed_rusted); + for(int i = 7; i <= 9; i += 2) { + placeBlockAtCurrentPosition(world, ModBlocks.machine_electric_furnace_off, decoMetaN, i, 1, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.steel_beam, 2, i, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.machine_electric_furnace_off, decoMetaN, i, 3, 1, box); + } + placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 8, 1, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 8, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 8, 3, 1, box); + placeLever(world, box, 3, rand.nextBoolean(), 8, 2, 2); + for(int i = 1; i <= 3; i += 2) { + placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 10, i, 1, box); + fillWithMetadataBlocks(world, box, 10, i, 2, 10, i, 4, ModBlocks.deco_pipe_quad_rusted, getPillarMeta(8)); + placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 10, i, 5, box); + } + placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_framed_rusted, 0, 10, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.fluid_duct_gauge, decoMetaW, 10, 2, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.barrel_plastic, 0, 6, 1, 5, box); + //chests + generateInvContents(world, box, rand, Blocks.chest, decoMetaS, 7, 1, 5, HbmChestContents.solidFuel, 5); + generateInvContents(world, box, rand, Blocks.chest, decoMetaS, 9, 1, 5, HbmChestContents.solidFuel, 6); + break; + case 1: + placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 6, 1, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.cable_detector, 0, 6, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 6, 3, 1, box); + placeLever(world, box, 3, false, 6, 2, 2); + for(int i = 7; i <= 9; i += 2) { + placeBlockAtCurrentPosition(world, ModBlocks.steel_scaffold, 8, i, 1, 1, box); //i'm not making another fucking meta method + placeBlockAtCurrentPosition(world, ModBlocks.machine_diesel, decoMetaE, i, 2, 1, box); + } + placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_rim_rusted, getPillarMeta(4), 8, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_rim_rusted, getPillarMeta(4), 8, 2, 1, box); + fillWithMetadataBlocks(world, box, 7, 3, 1, 9, 3, 1, ModBlocks.concrete_smooth_stairs, stairMetaS); + fillWithBlocks(world, box, 10, 1, 1, 10, 1, 3, ModBlocks.deco_steel); + placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 10, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 10, 3, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.steel_grate, 7, 10, 2, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(2), 10, 3, 2, box); + fillWithMetadataBlocks(world, box, 10, 2, 3, 10, 3, 3, ModBlocks.tape_recorder, decoMetaW); + fillWithMetadataBlocks(world, box, 9, 1, 2, 9, 1, 3, ModBlocks.steel_grate, 7); + fillWithBlocks(world, box, 9, 1, 5, 10, 1, 5, ModBlocks.barrel_iron); + placeBlockAtCurrentPosition(world, ModBlocks.barrel_iron, 0, 10, 2, 5, box); + fillWithBlocks(world, box, 6, 1, 5, 6, 2, 5, ModBlocks.barrel_iron); + placeBlockAtCurrentPosition(world, ModBlocks.barrel_iron, 0, 6, 1, 2, box); + break; + case 2: + for(int i = 7; i <= 9; i += 2) { + fillWithBlocks(world, box, i, 1, 2, i, 1, 4, ModBlocks.deco_lead); + fillWithBlocks(world, box, i, 2, 2, i, 2, 4, ModBlocks.block_lead); + fillWithBlocks(world, box, i, 3, 2, i, 3, 4, ModBlocks.deco_lead); + } + placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 8, 1, 4, box); + placeBlockAtCurrentPosition(world, Blocks.redstone_lamp, 0, 8, 2, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 8, 3, 4, box); + placeLever(world, box, 3, rand.nextBoolean(), 8, 2, 5); + placeBlockAtCurrentPosition(world, ModBlocks.pwr_fuel, 0, 8, 1, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.pwr_control, 0, 8, 2, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.pwr_fuel, 0, 8, 3, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.block_copper, 0, 8, 1, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.block_lead, 0, 8, 2, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.block_copper, 0, 8, 3, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.pwr_channel, 0, 8, 1, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.machine_turbine, 0, 8, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.pwr_channel, 0, 8, 3, 1, box); + fillWithBlocks(world, box, 9, 1, 1, 9, 3, 1, ModBlocks.deco_steel); + placeBlockAtCurrentPosition(world, ModBlocks.steel_grate, 7, 10, 1, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), 10, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, decoMetaN, 10, 3, 1, box); + fillWithMetadataBlocks(world, box, 6, 1, 1, 7, 1, 1, ModBlocks.deco_pipe_quad_rusted, getPillarMeta(4)); + placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_quad_rusted, getPillarMeta(4), 7, 3, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.fluid_duct_gauge, decoMetaN, 6, 3, 1, box); + //chest + generateInvContents(world, box, rand, Blocks.chest, decoMetaN, 6, 1, 2, HbmChestContents.nuclearFuel, 8); + break; + } + //transformer + fillWithMetadataBlocks(world, box, 1, 1, 1, 1, 1, 5, ModBlocks.concrete_smooth_stairs, stairMetaW | 4); + fillWithBlocks(world, box, 1, 1, 6, 1, 3, 6, ModBlocks.concrete_pillar); + fillWithMetadataBlocks(world, box, 1, 3, 1, 1, 3, 5, ModBlocks.concrete_smooth_stairs, stairMetaW); + placeBlockAtCurrentPosition(world, ModBlocks.machine_transformer_20, 0, 1, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.cable_diode, decoMetaN, 1, 2, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.machine_battery, decoMetaE, 1, 2, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 1, 2, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.cable_switch, 0, 1, 2, 5, box); + //machine + for(int i = 1; i <= 5; i += 4) { + placeBlockAtCurrentPosition(world, ModBlocks.deco_beryllium, 0, i, 1, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.steel_scaffold, 0, i, 2, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_beryllium, 0, i, 3, 10, box); + } + placeBlockAtCurrentPosition(world, ModBlocks.steel_scaffold, 0, 2, 1, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 3, 1, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.steel_scaffold, 0, 4, 1, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, decoMetaS, 2, 2, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(0), 3, 2, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, decoMetaS, 4, 2, 10, box); + fillWithMetadataBlocks(world, box, 2, 3, 10, 4, 3, 10, ModBlocks.tape_recorder, decoMetaS); + //desk + fillWithMetadataBlocks(world, box, 8, 1, 10, 10, 1, 10, ModBlocks.concrete_smooth_stairs, stairMetaN | 4); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaE | 4, 10, 1, 9, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs,stairMetaS, 9, 1, 9, box); + placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, 8, 2, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(0), 9, 2, 10, box); + //loot + generateInvContents(world, box, rand, Blocks.chest, decoMetaE, 1, 1, 7, HbmChestContents.machineParts, 6); + generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 7, 1, 10, HbmChestContents.filingCabinet, 4); + //doors + placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 3, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 4, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 0, false, false, 5, 1, 3); + if(path) fillWithAir(world, box, 11, 1, 7, 11, 2, 8); + + return true; + } + + public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) { + StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -4, -1, 0, 12, 6, 12, coordMode); + return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new PowerRoom(type, box, coordMode, rand) : null; + } + } +} diff --git a/src/main/java/com/hbm/world/worldgen/components/CivilianFeatures.java b/src/main/java/com/hbm/world/gen/component/CivilianFeatures.java similarity index 99% rename from src/main/java/com/hbm/world/worldgen/components/CivilianFeatures.java rename to src/main/java/com/hbm/world/gen/component/CivilianFeatures.java index 958313bd7..26d7faaba 100644 --- a/src/main/java/com/hbm/world/worldgen/components/CivilianFeatures.java +++ b/src/main/java/com/hbm/world/gen/component/CivilianFeatures.java @@ -1,4 +1,4 @@ -package com.hbm.world.worldgen.components; +package com.hbm.world.gen.component; import java.util.Random; @@ -568,7 +568,8 @@ public class CivilianFeatures { this.fillWithBlocks(world, box, sizeX - 4, 3, sizeZ - 2, sizeX - 2, 3, sizeZ - 2, ModBlocks.steel_roof, Blocks.air, false); if(!hasPlacedLoot[1]) { this.hasPlacedLoot[1] = this.generateInvContents(world, box, rand, ModBlocks.crate_iron, sizeX - 2, 1, 3, HbmChestContents.nukeTrash, 9); - generateLoreBook(world, box, rand, sizeX - 2, 1, 3, 1, HbmChestContents.books_office_sch); + if(rand.nextInt(2) == 0) + generateLoreBook(world, box, sizeX - 2, 1, 3, 1, HbmChestContents.generateOfficeBook(rand)); } return true; diff --git a/src/main/java/com/hbm/world/worldgen/components/Component.java b/src/main/java/com/hbm/world/gen/component/Component.java similarity index 88% rename from src/main/java/com/hbm/world/worldgen/components/Component.java rename to src/main/java/com/hbm/world/gen/component/Component.java index 9c6c8e527..8ffa1292e 100644 --- a/src/main/java/com/hbm/world/worldgen/components/Component.java +++ b/src/main/java/com/hbm/world/gen/component/Component.java @@ -1,4 +1,4 @@ -package com.hbm.world.worldgen.components; +package com.hbm.world.gen.component; import java.util.Random; @@ -8,15 +8,13 @@ import com.hbm.blocks.generic.BlockBobble.BobbleType; import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.config.StructureConfig; import com.hbm.handler.MultiblockHandlerXR; -import com.hbm.items.ModItems; -import com.hbm.items.special.ItemBookLore.BookLoreType; import com.hbm.tileentity.machine.TileEntityLockableBase; + import net.minecraft.block.Block; import net.minecraft.block.BlockWeb; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemDoor; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -108,6 +106,26 @@ abstract public class Component extends StructureComponent { return true; } + protected static int getAverageHeight(World world, StructureBoundingBox area, StructureBoundingBox box, int y) { + + int total = 0; + int iterations = 0; + + for(int z = area.minZ; z <= area.maxZ; z++) { + for(int x = area.minX; x <= area.maxX; x++) { + if(box.isVecInside(x, y, z)) { + total += Math.max(world.getTopSolidOrLiquidBlock(x, z), world.provider.getAverageGroundLevel()); + iterations++; + } + } + } + + if(iterations == 0) + return -1; + + return total / iterations; + } + public int getCoordMode() { return this.coordBaseMode; } @@ -224,35 +242,83 @@ abstract public class Component extends StructureComponent { return metadata; } - /* For Later: - * 0/S: S->S; W->W; N->N; E->E - * 1/W: S->W; W->N; N->E; E->S - * 2/N: S->N; W->E; N->S; E->W - * 3/E: S->E; W->S; N->W; E->N - * 0/b00/W, 1/b01/N, 2/b10/E, 3/b11/S - */ - /** - * Places door at specified location with orientation-adjusted meta - * 0 = West, 1 = North, 2 = East, 3 = South + /* + * Assuming door is on opposite side of block from direction: East: 0, South: 1, West: 2, North: 3
+ * Doors cleverly take advantage of the use of two blocks to get around the 16 value limit on metadata, with the top and bottom blocks essentially relying on eachother for everything.
+ *
  • The 4th bit (0b1000 or 8) indicates whether it is the top block: on for yes, off for no. + *
  • When the 4th bit is on, the 1st bit indicates whether the door opens to the right or not: on (0b1001) for yes, off (0b1000) for no. + *
  • The bits 1 & 2 (0b0011 or 3) indicate the direction the door is facing. + *
  • When the 4th bit is off, the 3rd bit (0b0100 or 4) indicates whether the door is open or not: on for yes, off for no. Used for doors' interactions with redstone power. + *
  • */ - protected void placeDoor(World world, StructureBoundingBox box, Block door, int meta, int featureX, int featureY, int featureZ) { - switch(this.coordBaseMode) { - default: - break; - case 1: - meta = (meta + 1) % 4; break; - case 2: - meta = meta ^ 2; break; //Flip second bit - case 3: - meta = (meta - 1) % 4; break; - } - + protected void placeDoor(World world, StructureBoundingBox box, Block door, int dirMeta, boolean opensRight, boolean isOpen, int featureX, int featureY, int featureZ) { //isOpen for randomly opened doors int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - this.placeBlockAtCurrentPosition(world, door, meta, featureX, featureY, featureZ, box); - ItemDoor.placeDoorBlock(world, posX, posY, posZ, meta, door); + if(!box.isVecInside(posX, posY, posZ)) return; + + switch(this.coordBaseMode) { + default: //South + break; + case 1: //West + dirMeta = (dirMeta + 1) % 4; break; + case 2: //North + dirMeta ^= 2; break; //Flip second bit + case 3: //East + dirMeta = (dirMeta + 3) % 4; break; //fuck you modulo + } + + //hee hoo + int metaTop = opensRight ? 0b1001 : 0b1000; + int metaBottom = dirMeta | (isOpen ? 0b100 : 0); + + if(world.doesBlockHaveSolidTopSurface(world, posX, posY - 1, posZ)) { + world.setBlock(posX, posY, posZ, door, metaBottom, 2); + world.setBlock(posX, posY + 1, posZ, door, metaTop, 2); + } + } + /** 1 for west face, 2 for east face, 3 for north, 4 for south*/ + protected void placeLever(World world, StructureBoundingBox box, int dirMeta, boolean on, int featureX, int featureY, int featureZ) { + int posX = this.getXWithOffset(featureX, featureZ); + int posY = this.getYWithOffset(featureY); + int posZ = this.getZWithOffset(featureX, featureZ); + + if(!box.isVecInside(posX, posY, posZ)) return; + + if(dirMeta <= 0 || dirMeta >= 7) { //levers suck ass + switch(this.coordBaseMode) { + case 1: case 3: //west / east + dirMeta ^= 0b111; + } + } else if(dirMeta >= 5) { + switch(this.coordBaseMode) { + case 1: case 3: //west / east + dirMeta = (dirMeta + 1) % 2 + 5; + } + } else { + dirMeta = getButtonMeta(dirMeta); + } + + world.setBlock(posX, posY, posZ, Blocks.lever, on ? dirMeta | 8 : dirMeta, 2); + } + + /** pain. works for side-facing levers as well */ + protected int getButtonMeta(int dirMeta) { + switch(this.coordBaseMode) { //are you ready for the pain? + case 1: //West + if(dirMeta <= 2) return dirMeta + 2; + else if(dirMeta < 4) return dirMeta - 1; + else return dirMeta - 3;// this shit sucks ass + case 2: //North + return dirMeta + (dirMeta % 2 == 0 ? -1 : 1); + case 3: //East + if(dirMeta <= 1) return dirMeta + 3; + else if(dirMeta <= 2) return dirMeta + 1; + else return dirMeta - 2; + default: //South + return dirMeta; + } } /**N:0 W:1 S:2 E:3 */ @@ -316,7 +382,7 @@ abstract public class Component extends StructureComponent { int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - if(world.getBlock(posX, posY, posZ) == block) //replacement for hasPlacedLoot checks + if(!box.isVecInside(posX, posY, posZ) || world.getBlock(posX, posY, posZ) == block) //replacement for hasPlacedLoot checks return true; this.placeBlockAtCurrentPosition(world, block, meta, featureX, featureY, featureZ, box); @@ -347,7 +413,7 @@ abstract public class Component extends StructureComponent { int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - if(world.getBlock(posX, posY, posZ) == block) //replacement for hasPlacedLoot checks + if(!box.isVecInside(posX, posY, posZ) || world.getBlock(posX, posY, posZ) == block) //replacement for hasPlacedLoot checks return false; this.placeBlockAtCurrentPosition(world, block, meta, featureX, featureY, featureZ, box); @@ -368,19 +434,17 @@ abstract public class Component extends StructureComponent { return false; } - protected void generateLoreBook(World world, StructureBoundingBox box, Random rand, int featureX, int featureY, int featureZ, int slot, BookLoreType[] books) { + protected void generateLoreBook(World world, StructureBoundingBox box, int featureX, int featureY, int featureZ, int slot, ItemStack stack) { //kept for compat int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); + if(!box.isVecInside(posX, posY, posZ)) return; + IInventory inventory = (IInventory) world.getTileEntity(posX, posY, posZ); if(inventory != null) { - ItemStack book = new ItemStack(ModItems.book_lore); - int i = rand.nextInt(books.length); - - BookLoreType.setTypeForStack(book, books[i]); - inventory.setInventorySlotContents(slot, book); + inventory.setInventorySlotContents(slot, stack); } } diff --git a/src/main/java/com/hbm/world/worldgen/components/OfficeFeatures.java b/src/main/java/com/hbm/world/gen/component/OfficeFeatures.java similarity index 96% rename from src/main/java/com/hbm/world/worldgen/components/OfficeFeatures.java rename to src/main/java/com/hbm/world/gen/component/OfficeFeatures.java index 22ad5fead..e4a96eabb 100644 --- a/src/main/java/com/hbm/world/worldgen/components/OfficeFeatures.java +++ b/src/main/java/com/hbm/world/gen/component/OfficeFeatures.java @@ -1,4 +1,4 @@ -package com.hbm.world.worldgen.components; +package com.hbm.world.gen.component; import java.util.Random; @@ -200,16 +200,17 @@ public class OfficeFeatures { randomlyFillWithBlocks(world, box, rand, 0.25F, 6, 3, 1, sizeX - 1, 3, 6, Blocks.web); randomlyFillWithBlocks(world, box, rand, 0.25F, 10, 3, 7, sizeX - 1, 3, sizeZ - 1, Blocks.web); //Doors - placeDoor(world, box, ModBlocks.door_office, 3, 2, 1, 7); - placeDoor(world, box, ModBlocks.door_office, 3, 3, 1, 7); - placeDoor(world, box, ModBlocks.door_office, 0, 5, 1, 6); + placeDoor(world, box, ModBlocks.door_office, 3, false, rand.nextBoolean(), 2, 1, 7); + placeDoor(world, box, ModBlocks.door_office, 3, true, rand.nextBoolean(), 3, 1, 7); + placeDoor(world, box, ModBlocks.door_office, 0, false, rand.nextBoolean(), 5, 1, 6); //Woot if(!this.hasPlacedLoot[0]) this.hasPlacedLoot[0] = generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), sizeX - 4, 1, sizeZ - 1, HbmChestContents.officeTrash, 8); if(!this.hasPlacedLoot[1]) { this.hasPlacedLoot[1] = generateLockableContents(world, box, rand, ModBlocks.safe, getDecoMeta(3), 6, 1, 1, HbmChestContents.machineParts, 10, 0.5D); - generateLoreBook(world, box, rand, 6, 1, 1, 7, HbmChestContents.books_office_sch); + if(rand.nextInt(2) == 0) + generateLoreBook(world, box, 6, 1, 1, 7, HbmChestContents.generateOfficeBook(rand)); } //0b00/0 West, 0b01/1 East, 0b10/2 North, 0b11/3 South, 0b100/4 West UD, 0b101 East UD, 0b110 North UD, 0b111 South UD @@ -427,16 +428,16 @@ public class OfficeFeatures { fillWithRandomizedBlocks(world, box, 2, 11, 10, 3, 11, 10, rand, ConcreteBricks); fillWithRandomizedBlocks(world, box, 2, 9, 10, 2, 10, 10, rand, ConcreteBricks); //Doors - placeDoor(world, box, Blocks.wooden_door, 3, 1, 1, 14); - placeDoor(world, box, Blocks.wooden_door, 3, 2, 1, 14); - placeDoor(world, box, Blocks.wooden_door, 0, 0, 1, 12); - placeDoor(world, box, Blocks.wooden_door, 0, 0, 1, 13); - placeDoor(world, box, ModBlocks.door_office, 0, 6, 1, 3); - placeDoor(world, box, ModBlocks.door_office, 0, 5, 5, 3); - placeDoor(world, box, ModBlocks.door_office, 2, 4, 5, 11); - placeDoor(world, box, ModBlocks.door_office, 0, 10, 9, 3); - placeDoor(world, box, ModBlocks.door_office, 1, 3, 9, 10); - placeDoor(world, box, ModBlocks.door_metal, 0, 5, 13, 3); + placeDoor(world, box, Blocks.wooden_door, 3, false, rand.nextBoolean(), 1, 1, 14); + placeDoor(world, box, Blocks.wooden_door, 3, true, rand.nextBoolean(), 2, 1, 14); + placeDoor(world, box, Blocks.wooden_door, 0, false, rand.nextBoolean(), 0, 1, 12); + placeDoor(world, box, Blocks.wooden_door, 0, true, rand.nextBoolean(), 0, 1, 13); + placeDoor(world, box, ModBlocks.door_office, 3, false, rand.nextBoolean(), 6, 1, 3); + placeDoor(world, box, ModBlocks.door_office, 3, false, rand.nextBoolean(), 5, 5, 3); + placeDoor(world, box, ModBlocks.door_office, 2, false, rand.nextBoolean(), 4, 5, 11); + placeDoor(world, box, ModBlocks.door_office, 3, false, rand.nextBoolean(), 10, 9, 3); + placeDoor(world, box, ModBlocks.door_office, 1, false, rand.nextBoolean(), 3, 9, 10); + placeDoor(world, box, ModBlocks.door_metal, 3, false, rand.nextBoolean(), 5, 13, 3); //Furniture //Floor 1 int NorthStairMeta = getStairMeta(2); @@ -533,7 +534,8 @@ public class OfficeFeatures { generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 2, 9, 5, HbmChestContents.filingCabinet, 4); generateLockableContents(world, box, rand, ModBlocks.safe, getDecoMeta(2), 1, 9, 13, HbmChestContents.officeTrash, 10, 1.0D); - generateLoreBook(world, box, rand, 1, 9, 13, 7, HbmChestContents.books_office_sch); + if(rand.nextInt(2) == 0) + generateLoreBook(world, box, 1, 9, 13, 7, HbmChestContents.generateOfficeBook(rand)); generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 2, 9, 13, HbmChestContents.filingCabinet, 4); generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 3, 9, 13, HbmChestContents.filingCabinet, 4); diff --git a/src/main/java/com/hbm/world/worldgen/components/RuinFeatures.java b/src/main/java/com/hbm/world/gen/component/RuinFeatures.java similarity index 99% rename from src/main/java/com/hbm/world/worldgen/components/RuinFeatures.java rename to src/main/java/com/hbm/world/gen/component/RuinFeatures.java index a04e2ca2c..b5f5d141d 100644 --- a/src/main/java/com/hbm/world/worldgen/components/RuinFeatures.java +++ b/src/main/java/com/hbm/world/gen/component/RuinFeatures.java @@ -1,4 +1,4 @@ -package com.hbm.world.worldgen.components; +package com.hbm.world.gen.component; import java.util.Random; diff --git a/src/main/java/com/hbm/world/generator/DungeonToolbox.java b/src/main/java/com/hbm/world/generator/DungeonToolbox.java index f8a739378..b5ab4499c 100644 --- a/src/main/java/com/hbm/world/generator/DungeonToolbox.java +++ b/src/main/java/com/hbm/world/generator/DungeonToolbox.java @@ -3,15 +3,10 @@ package com.hbm.world.generator; import java.util.List; import java.util.Random; -import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.MetaBlock; -import com.hbm.items.ModItems; -import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; -import com.hbm.world.feature.BedrockOre; import net.minecraft.block.Block; import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenFlowers; @@ -25,11 +20,8 @@ public class DungeonToolbox { return; for(int i = x; i < x + sx; i++) { - for(int j = y; j < y + sy; j++) { - for(int k = z; k < z + sz; k++) { - MetaBlock b = getRandom(blocks, world.rand); world.setBlock(i, j, k, b.block, b.meta, 2); } @@ -93,24 +85,6 @@ public class DungeonToolbox { (new WorldGenMinable(ore, meta, amount, target)).generate(world, rand, x, y, z); } } - - public static void generateBedrockOreWithChance(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, int tier, int chance) { - if(chance > 0 && rand.nextInt(chance) == 0) generateBedrockOre(world, rand, chunkX, chunkZ, ore, null, tier); - } - - public static void generateBedrockOreWithChance(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, FluidStack stack, int tier, int chance) { - if(chance > 0 && rand.nextInt(chance) == 0) generateBedrockOre(world, rand, chunkX, chunkZ, ore, stack, tier); - } - - public static void generateBedrockOre(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, int tier) { - generateBedrockOre(world, rand, chunkX, chunkZ, ore, null, tier); - } - - public static void generateBedrockOre(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, FluidStack stack, int tier) { - int randPosX = chunkX + rand.nextInt(16) + 8; - int randPosZ = chunkZ + rand.nextInt(16) + 8; - BedrockOre.generate(world, randPosX, randPosZ, new ItemStack(ModItems.ore_bedrock, 1, ore.ordinal()), stack, ore.color, tier); - } private static WorldGenFlowers genFlowers = new WorldGenFlowers(null); public static void generateFlowers(World world, Random rand, int chunkX, int chunkZ, Block flower, int meta) { @@ -120,4 +94,12 @@ public class DungeonToolbox { genFlowers.func_150550_a(flower, meta); genFlowers.generate(world, rand, x, y, z); } + + public static boolean allowedToReplace(Block block) { + + if(block == Blocks.end_portal_frame) return false; + if(block == Blocks.bedrock) return false; + + return true; + } } diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java index 59d68d846..e69db5214 100644 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java +++ b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java @@ -3,7 +3,7 @@ package com.hbm.world.generator.room; import com.hbm.blocks.ModBlocks; import com.hbm.crafting.handlers.MKUCraftingHandler; import com.hbm.items.ModItems; -import com.hbm.items.special.ItemBookLore.BookLoreType; +import com.hbm.items.special.ItemBookLore; import com.hbm.tileentity.machine.storage.TileEntitySafe; import com.hbm.world.generator.CellularDungeon; import com.hbm.world.generator.CellularDungeonRoom; @@ -50,68 +50,69 @@ public class TestDungeonRoom8 extends CellularDungeonRoom { int r = world.rand.nextInt(10); - if(r == 0) + if(r == 0) { ((TileEntitySafe)world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2)).setInventorySlotContents(7, new ItemStack(ModItems.book_of_)); - else if(r < 4) - ((TileEntitySafe)world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2)).setInventorySlotContents(7, generateMKU(world)); - else - ((TileEntitySafe)world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2)).setInventorySlotContents(7, new ItemStack(Items.book)); + } else if(r < 4) { + TileEntitySafe safe = (TileEntitySafe) world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2); + safe.setInventorySlotContents(5, generateBook(world)); + safe.setInventorySlotContents(7, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); + safe.setInventorySlotContents(9, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); + } else { + TileEntitySafe safe = (TileEntitySafe) world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2); + safe.setInventorySlotContents(5, new ItemStack(Items.book)); + safe.setInventorySlotContents(7, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); + safe.setInventorySlotContents(9, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); + } } break; } } - public static ItemStack generateMKU(World world) { - ItemStack book = new ItemStack(ModItems.book_lore); - int i = world.rand.nextInt(books.length); - - BookLoreType.setTypeForStack(book, books[i]); - book.stackTagCompound.setInteger("mku_slot", getSlot(world, books[i])); - - return book; - } - - public static int getSlot(World world, BookLoreType type) { - + public static ItemStack generateBook(World world) { MKUCraftingHandler.generateRecipe(world); ItemStack[] recipe = MKUCraftingHandler.MKURecipe; + if(recipe == null) return new ItemStack(ModItems.flame_pony); + + String key; + int pages; Item item; - //fucking kill me - switch(type) { - case BOOK_DUST: - item = ModItems.dust; break; - case BOOK_FLOWER: - item = ModItems.morning_glory; break; - case BOOK_IODINE: + switch(world.rand.nextInt(6)) { + case 0: + key = "book_iodine"; pages = 3; item = ModItems.powder_iodine; break; - case BOOK_MERCURY: - item = ModItems.ingot_mercury; break; - case BOOK_PHOSPHOROUS: + case 1: + key = "book_phosphorous"; pages = 2; item = ModItems.powder_fire; break; - case BOOK_SYRINGE: + case 2: + key = "book_dust"; pages = 3; + item = ModItems.dust; break; + case 3: + key = "book_mercury"; pages = 2; + item = ModItems.ingot_mercury; break; + case 4: + key = "book_flower"; pages = 2; + item = ModItems.morning_glory; break; + case 5: + key = "book_syringe"; pages = 2; item = ModItems.syringe_metal_empty; break; default: - item = ModItems.nothing; break; + return new ItemStack(ModItems.flame_pony); } - if(recipe == null) //take no chances - return -2; - + int s = 1; for(int i = 0; i < 9; i++) { - if(recipe[i] != null && recipe[i].getItem() == item) { - return i + 1; + s = i + 1; break; } } - return -1; + ItemStack book = ItemBookLore.createBook(key, pages, 0x271E44, 0xFBFFF4); + ItemBookLore.addArgs(book, pages - 1, String.valueOf(s)); + + return book; } - private final static BookLoreType[] books = new BookLoreType[] { - BookLoreType.BOOK_IODINE, BookLoreType.BOOK_PHOSPHOROUS, BookLoreType.BOOK_DUST, BookLoreType.BOOK_MERCURY, BookLoreType.BOOK_FLOWER, BookLoreType.BOOK_SYRINGE - }; - /*public static ItemStack genetateMKU(World world) { ItemStack book = new ItemStack(Items.written_book); diff --git a/src/main/java/com/hbm/world/worldgen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/worldgen/NTMWorldGenerator.java deleted file mode 100644 index 01c7b7acc..000000000 --- a/src/main/java/com/hbm/world/worldgen/NTMWorldGenerator.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.hbm.world.worldgen; - -import java.util.Random; - -import com.hbm.config.StructureConfig; - -import cpw.mods.fml.common.IWorldGenerator; -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.chunk.IChunkProvider; -import net.minecraftforge.event.terraingen.InitMapGenEvent.EventType; -import net.minecraftforge.event.terraingen.TerrainGen; - -public class NTMWorldGenerator implements IWorldGenerator { - - private MapGenNTMFeatures NTMFeatureGenerator = new MapGenNTMFeatures(); - - { - NTMFeatureGenerator = (MapGenNTMFeatures) TerrainGen.getModdedMapGen(NTMFeatureGenerator, EventType.CUSTOM); - } - - @Override - public void generate(Random rand, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { - - switch (world.provider.dimensionId) { - case -1: - generateNether(world, rand, chunkGenerator, chunkX, chunkZ); break; - case 0: - generateSurface(world, rand, chunkGenerator, chunkX, chunkZ); break; - case 1: - generateEnd(world, rand, chunkGenerator, chunkX, chunkZ); break; - } - } - - private void generateNether(World world, Random rand, IChunkProvider chunkGenerator, int chunkX, int chunkZ) { } - - private void generateSurface(World world, Random rand, IChunkProvider chunkGenerator, int chunkX, int chunkZ) { - Block[] ablock = new Block[65536]; - - //WorldConfig.enableStructures - /** Spawns structure starts. Utilizes canSpawnStructureAtCoords() + if else checks in Start constructor */ - if(StructureConfig.enableStructures) { - this.NTMFeatureGenerator.func_151539_a(chunkGenerator, world, chunkX, chunkZ, ablock); - } - - /** Actually generates structures in a given chunk. */ - if(StructureConfig.enableStructures) { - this.NTMFeatureGenerator.generateStructuresInChunk(world, rand, chunkX, chunkZ); - } - } - - private void generateEnd(World world, Random rand, IChunkProvider chunkGenerator, int chunkX, int chunkZ) { } -} diff --git a/src/main/java/com/hbm/world/worldgen/components/ProceduralComponents.java b/src/main/java/com/hbm/world/worldgen/components/ProceduralComponents.java deleted file mode 100644 index 4bf1f4801..000000000 --- a/src/main/java/com/hbm/world/worldgen/components/ProceduralComponents.java +++ /dev/null @@ -1,240 +0,0 @@ -package com.hbm.world.worldgen.components; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Random; - -import net.minecraft.world.gen.structure.StructureBoundingBox; - -public abstract class ProceduralComponents { - - protected List componentWeightList; - - protected static Weight[] weightArray = new Weight[] { }; - - public void prepareComponents() { - componentWeightList = new ArrayList(); - - for(int i = 0; i < weightArray.length; i++) { - weightArray[i].instancesSpawned = 0; - componentWeightList.add(weightArray[i]); - } - } - - protected int getTotalWeight() { - boolean flag = false; - int totalWeight = 0; - Weight weight; - - for(Iterator iterator = componentWeightList.iterator(); iterator.hasNext(); totalWeight += weight.weight) { //Iterates over the entire list to find the total weight - weight = (Weight) iterator.next(); - - if(weight.instanceLimit >= 0 && weight.instancesSpawned < weight.instanceLimit) //can more structure pieces be added, in general? - flag = true; - } - - return flag ? totalWeight : -1; - } - - protected ProceduralComponent getWeightedComponent(ControlComponent original, List components, Random rand, int minX, int minY, int minZ, int coordMode, int componentType) { - int totalWeight = getTotalWeight(); - - if(totalWeight < 0) - return null; - - for(int i = 0; i < 5; i++) { - int value = rand.nextInt(totalWeight); //Pick a random value, based on how many parts there are already - Iterator iterator = componentWeightList.iterator(); - - while(iterator.hasNext()) { - Weight weight = (Weight)iterator.next(); - value -= weight.weight; //Iterate over the list until the value is less than 0 - - if(value < 0) { - if(!weight.canSpawnStructure(componentType, coordMode, original.lastComponent)) //Additional checks based on game state info preventing spawn? start from beginning - break; - - ProceduralComponent component = (ProceduralComponent) weight.lambda.findValidPlacement(components, rand, minX, minY, minZ, coordMode, componentType); //Construct the chosen component - - if(component != null) { //If it has been constructed, add it - weight.instancesSpawned++; - - if(!weight.canSpawnMoreStructures()) //Structure can no longer be spawned regardless of game state? remove as an option - componentWeightList.remove(weight); - - return component; - } - - } - } - } - - return null; - } - - protected int sizeLimit = 50; - protected int distanceLimit = 64; - - protected ProceduralComponent getNextValidComponent(ControlComponent original, List components, Random rand, int minX, int minY, int minZ, int coordMode, int componentType) { - - if(components.size() > sizeLimit) //Hard limit on amount of components - return null; - - if(Math.abs(minX - original.getBoundingBox().minX) <= distanceLimit && Math.abs(minZ - original.getBoundingBox().minZ) <= distanceLimit) { //Hard limit on spread of structure - - ProceduralComponent structure = getWeightedComponent(original, components, rand, minX, minY, minZ, coordMode, componentType + 1); //Returns null if all checks fail - - if(structure != null) { - components.add(structure); //Adds component to structure start list - original.queuedComponents.add(structure); //Add it to the list of queued components waiting to be built - } - - return structure; - } - - return null; - } - - public static StructureBoundingBox getComponentToAddBoundingBox(int posX, int posY, int posZ, int offsetX, int offsetY, int offsetZ, int maxX, int maxY, int maxZ, int coordMode) { - switch(coordMode) { - case 0: //South - return new StructureBoundingBox(posX + offsetX, posY + offsetY, posZ + offsetZ, posX + maxX - 1 + offsetX, posY + maxY - 1 + offsetY, posZ + maxZ - 1 + offsetZ); - case 1: //West - return new StructureBoundingBox(posX - maxZ + 1 - offsetZ, posY + offsetY, posZ + offsetX, posX - offsetZ, posY + maxY - 1 + offsetY, posZ + maxX - 1 + offsetX); - case 2: //North - return new StructureBoundingBox(posX - maxX + 1 - offsetX, posY + offsetY, posZ - maxZ + 1 - offsetZ, posX - offsetX, posY + maxY - 1 + offsetY, posZ + offsetZ); - case 3: //East - return new StructureBoundingBox(posX + offsetZ, posY + offsetY, posZ - maxX + 1 - offsetX, posX + maxZ - 1 + offsetZ, posY + maxY - 1 + offsetY, posZ - offsetX); - default: - return new StructureBoundingBox(posX + offsetX, posY + offsetY, posZ + offsetZ, posX + maxX - 1 + offsetX, posY + maxY - 1 + offsetY, posZ + maxZ - 1 + offsetZ); - } - } - - /** StructureComponent that supports procedural generation */ - public abstract static class ProceduralComponent extends Component { - - public ProceduralComponent() { } - - public ProceduralComponent(int componentType) { - super(componentType); //Important to carry over. - } - - public void buildComponent(ProceduralComponents instance, ControlComponent original, List components, Random rand) { } - - /** Gets next component in the direction this component is facing.
    'original' refers to the initial starting component (hard distance limits), 'components' refers to the StructureStart list. */ - protected ProceduralComponent getNextComponentNormal(ProceduralComponents instance, ControlComponent original, List components, Random rand, int offset, int offsetY) { - switch(this.coordBaseMode) { - case 0: //South - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX + offset, this.boundingBox.minY + offsetY, this.boundingBox.maxZ + 1, this.coordBaseMode, this.getComponentType()); - case 1: //West - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX - 1, this.boundingBox.minY + offsetY, this.boundingBox.minZ + offset, this.coordBaseMode, this.getComponentType()); - case 2: //North - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX - offset, this.boundingBox.minY + offsetY, this.boundingBox.minZ - 1, this.coordBaseMode, this.getComponentType()); - case 3: //East - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX + 1, this.boundingBox.minY + offsetY, this.boundingBox.maxZ - offset, this.coordBaseMode, this.getComponentType()); - default: - return null; - } - } - - /** Gets next component in the opposite direction this component is facing. */ - protected ProceduralComponent getNextComponentAntiNormal(ProceduralComponents instance, ControlComponent original, List components, Random rand, int offset, int offsetY) { - switch(this.coordBaseMode) { - case 0: //South - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX - offset, this.boundingBox.minY + offsetY, this.boundingBox.minZ - 1, 2, this.getComponentType()); - case 1: //West - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX + 1, this.boundingBox.minY + offsetY, this.boundingBox.maxZ - offset, 3, this.getComponentType()); - case 2: //North - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX + offset, this.boundingBox.minY + offsetY, this.boundingBox.maxZ + 1, 0, this.getComponentType()); - case 3: //East - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX - 1, this.boundingBox.minY + offsetY, this.boundingBox.minZ + offset, 1, this.getComponentType()); - default: - return null; - } - } - - //Keep in mind for these methods: a given room would have its *actual entrance* opposite the side it is facing. - /** Gets next component, to the West (-X) relative to this component. */ - protected ProceduralComponent getNextComponentNX(ProceduralComponents instance, ControlComponent original, List components, Random rand, int offset, int offsetY) { - switch(this.coordBaseMode) { - case 0: //South - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX - 1, this.boundingBox.minY + offsetY, this.boundingBox.minZ + offset, 1, this.getComponentType()); - case 1: //West - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX - offset, this.boundingBox.minY + offsetY, this.boundingBox.minZ - 1, 2, this.getComponentType()); - case 2: //North - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX + 1, this.boundingBox.minY + offsetY, this.boundingBox.maxZ - offset, 3, this.getComponentType()); - case 3: //East - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX + offset, this.boundingBox.minY + offsetY, this.boundingBox.maxZ + 1, 0, this.getComponentType()); - default: - return null; - } - } - - /** Gets next component, to the East (+X) relative to this component. */ - protected ProceduralComponent getNextComponentPX(ProceduralComponents instance, ControlComponent original, List components, Random rand, int offset, int offsetY) { - switch(this.coordBaseMode) { - case 0: //South - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX + 1, this.boundingBox.minY + offsetY, this.boundingBox.maxZ - offset, 3, this.getComponentType() + 1); - case 1: //West - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX + offset, this.boundingBox.minY + offsetY, this.boundingBox.maxZ + 1, 0, this.getComponentType() + 1); - case 2: //North - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX - 1, this.boundingBox.minY + offsetY, this.boundingBox.minZ + offset, 1, this.getComponentType() + 1); - case 3: //East - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX - offset, this.boundingBox.minY + offsetY, this.boundingBox.minZ - 1, 2, this.getComponentType() + 1); - default: - return null; - } - } - - /** Finds valid placement, using input information. Should be passed as a method reference to its respective Weight. */ - //Static so no override (cringe!) - //public static ProceduralComponent findValidPlacement(List components, Random rand, int minX, int minY, int minZ, int coordMode, int componentType) { return null; } - } - - /** ProceduralComponent that can serve as a master "control component" for procedural generation and building of components. */ - public abstract static class ControlComponent extends ProceduralComponent { - - public List queuedComponents = new ArrayList(); //List of all queued ProceduralComponents waiting to be built. Randomly iterated over until limits like component amt or dist are reached. - public ProceduralComponent lastComponent = this; //Last component to be built. Used as input for the random selection's checks for specific components. - - public ControlComponent() { } - - public ControlComponent(int componentType) { - super(componentType); - } - } - - /** Returns a new instance of this structureComponent, or null if not able to be placed.
    Based on bounding box checks. */ - @FunctionalInterface - interface instantiateStructure { - ProceduralComponent findValidPlacement(List components, Random rand, int minX, int minY, int minZ, int coordMode, int componentType); - } - - protected static class Weight { - - public final instantiateStructure lambda; //Read above - - public final int weight; //Weight of this component - public int instancesSpawned; //How many components spawned? - public int instanceLimit; //Limit on amount of components: -1 for no limit - - public Weight(int weight, int limit, instantiateStructure lambda) { - this.weight = weight; - this.instanceLimit = limit; - this.lambda = lambda; - } - - //Checks if another structure can be spawned based on input data - public boolean canSpawnStructure(int componentAmount, int coordMode, ProceduralComponent component) { - return this.instanceLimit < 0 || this.instancesSpawned < this.instanceLimit; - } - - //Checks if another structure can be spawned at all (used to flag for removal from the list) - public boolean canSpawnMoreStructures() { - return this.instanceLimit < 0 || this.instancesSpawned < this.instanceLimit; - } - - } - -} diff --git a/src/main/resources/META-INF/HBM_at.cfg b/src/main/resources/META-INF/HBM_at.cfg index 1cc05d2b5..1fc5c2ec2 100644 --- a/src/main/resources/META-INF/HBM_at.cfg +++ b/src/main/resources/META-INF/HBM_at.cfg @@ -2,9 +2,32 @@ # Cracks open stupid as shit keywords that are being used wrong because Mojang shouldn't be entrusted with computers. # After changing anything here, run `./gradlew clean setupDecompWorkspace`, this should scrap all the cached nonsense and patch the src to reflect changes made. +# EntityLivingBase +public net.minecraft.entity.EntityLivingBase * # everything because fuck i'm not doing 500 of these by hand +# public net.minecraft.entity.EntityLivingBase *() # ditto + # EntityCreeper public net.minecraft.entity.monster.EntityCreeper field_82225_f # fuseTime public net.minecraft.entity.monster.EntityCreeper func_146077_cc()V # explode # RenderCreeper public net.minecraft.client.renderer.entity.RenderCreeper field_77064_a # creeperModel + +# KeyBinding +public net.minecraft.client.settings.KeyBinding field_74516_a # keybindArray +public net.minecraft.client.settings.KeyBinding field_74514_b # hash +public net.minecraft.client.settings.KeyBinding field_151473_c # keybindSet +public net.minecraft.client.settings.KeyBinding field_74513_e # pressed +public net.minecraft.client.settings.KeyBinding field_151474_i # pressTime + +# GuiMainMenu +public net.minecraft.client.gui.GuiMainMenu field_73975_c # splashText + +# EntityLivingBase +public net.minecraft.entity.EntityLivingBase field_82180_bT # previousEquipment + +# ChunkProviderFlat +public net.minecraft.world.gen.ChunkProviderFlat field_82702_h # hasDungeons + +# ChunkProviderServer +public net.minecraft.world.gen.ChunkProviderServer field_73248_b # chunksToUnload diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 5e7a1b6f3..34cd14145 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -18,22 +18,24 @@ achievement.c44.desc=Galvanisch verzinkt! ...das macht in der Übersetzung sowas achievement.c44=Kapitel 44 achievement.chemistry.desc=Bobmazon Level 3 (Betonziegel) achievement.chemistry=Chemie -achievement.digammaFeel.desc=the hollow within. -achievement.digammaFeel=The Terror of Feeling +achievement.digammaFeel.desc=Meine Augen bluten +achievement.digammaFeel=SEWAGE-INFUSED GARBAGE WORLD achievement.digammaKauaiMoho.desc=Alles ist schrecklich, hier ist etwas heiße Schoki. -achievement.digammaKauaiMoho=Sing, sing mir das Lied der Kauai Moho +achievement.digammaKauaiMoho=SING, SING ME THE SONG OF THE KAUAI MOHO achievement.digammaKnow.desc=what this world is about. -achievement.digammaKnow=The Terror of Knowing -achievement.digammaSee.desc=into the abyss. -achievement.digammaSee=The Terror of Seeing -achievement.digammaUpOnTop.desc=Bewundere meinen Sohn, er ist mein Klon. -achievement.digammaUpOnTop=Bewundere mich, bewundere mein Heim +achievement.digammaKnow=THE TERROR OF KNOWING +achievement.digammaSee.desc=Es ist Dunkel, bring eine Taschenlampe. +achievement.digammaSee=ENTER THE ABYSS +achievement.digammaUpOnTop.desc=Admire my son, he's my clone. +achievement.digammaUpOnTop=ADMIRE ME, ADMIRE MY HOME achievement.fiend.desc=Sei gemein. achievement.fiend2.desc=Sei gemeiner. achievement.fiend2=Unhold 2: Noch unholdiger achievement.fiend=Unhold achievement.freytag.desc=Leibgarde Herold achievement.freytag=Freytag +achievement.goFish.desc=Kreuzigung auf See +achievement.goFish=Go Fish achievement.hidden.desc=Töte einen Enderman mit einem fallenden GÃŒterwagon wÀrend du brennst und mehr als 250 RADs hast. achievement.hidden=Versteckter Katalog achievement.horizonsBonus.desc=junge was ist denn mit dir verkehrt @@ -86,6 +88,7 @@ armor.cap=Schadensobergrenze: %s armor.damageModifier=Modifikator: %s (%s) armor.electricJetpack=Ionentriebwerke armor.explosionImmune=Kann nur Schaden durch Explosionen nehmen +armor.fasterReload=Schnelleres Nachladen armor.fastFall=Schneller Fall armor.fireproof=Feuerfest armor.fullSetBonus=Set-Bonus: @@ -96,10 +99,12 @@ armor.gravity=Schwerkraftsmodifikator: %s armor.hardLanding=Harte Landung armor.ignoreLimit=Resistenz ist nicht limitiert armor.modifier=Genereller Schadensmodifikator: %s +armor.moreAmmo=Mehr Munition armor.nullDamage=Nichtet Schaden von %s armor.projectileProtection=Projektilmodifikator: %s armor.rocketBoots=Rocket boots armor.sprintBoost=VerstÀrkter Sprint +armor.stepSize=Schritthöhe: %s armor.thermal=WÀrmebildkamera armor.threshold=Schadensschwelle: %s armor.vats=Feinde-HUD @@ -176,6 +181,8 @@ chem.BALEFIRE=BF-Raketentreibstoffherstellung chem.BP_BIOFUEL=Biodieselumesterung chem.BP_BIOGAS=Biogasherstellung chem.C4=C4-Synthese +chem.CC_CENTRIFUGE=Chlorokalzitspaltung +chem.CC_ELECTROLYSIS=Kalziumchloridelektrolyse chem.CC_HEATING=Fortgeschrittene KohleverflÃŒssigung chem.CC_HEAVY=Einfache KohleverflÃŒssigung chem.CC_I=Erweiterte KohleverflÃŒssigung @@ -223,6 +230,7 @@ chem.NITAN=NITAN-Supertreibstoff mischen chem.NITRIC_ACID=SalpetersÀureherstellung chem.OIL_SAND=Teersand-Extraktion chem.OSMIRIDIUM_DEATH=Osmiridiumlösung-Herstellung +chem.PC_ELECTROLYSIS=Kaliumchloridelektrolyse chem.PEROXIDE=Wasserstoffperoxidherstellung chem.PET=PET-Synthese chem.PETROIL_LEADED=Bleigemisch mischen @@ -255,6 +263,7 @@ chem.SULFURIC_ACID=SchwefelsÀureherstellung chem.TATB=TATB-Synthese chem.TEL=TEL mischen chem.TEST=Test +chem.THORIUM_SALT=Thoriumsalz-Anreicherung chem.TNT=TNT-Synthese chem.UF6=Uranhexafluoridproduktion chem.VIT_GAS=Gas-AtommÃŒllvitrifizierung @@ -269,6 +278,7 @@ container.amsLimiter=AMS-Stabilisator (Deko) container.anvil=Stufe %s Amboss container.arcFurnace=Lichtbogenofen container.armorTable=RÃŒstungsmodifikationstisch +container.ashpit=Aschekasten container.assembler=Fertigungsmaschine container.autocrafter=Automatische Werkbank container.barrel=Fass @@ -288,6 +298,7 @@ container.craneUnboxer=Förderband-Entpacker container.crateDesh=Deshkiste container.crateIron=Eisenkiste container.crateSteel=Stahlkiste +container.crateTemplate=Vorlagenkiste container.crateTungsten=Wolframkiste container.crystallizer=Erzauflöser container.cyclotron=Zyklotron @@ -298,8 +309,13 @@ container.dfcStabilizer=DFC-Stabilisator container.dfc_core=Dunkler Fusionskern container.diFurnace=Hochofen container.diFurnaceRTG=Atomarer Hochofen +container.droneCrate=Transportdronen-Kiste +container.droneDock=Dock +container.droneProvider=Anbieter +container.droneRequester=Abnehmer container.electricFurnace=Elektrischer Ofen container.epress=Hydraulische Presse +container.exposureChamber=Bestrahlungskammer container.factoryAdvanced=Fortgeschrittene Fabrik container.factoryTitanium=Einfache Fabrik container.fluidtank=Tank @@ -323,13 +339,16 @@ container.keyForge=Schlossertisch container.launchPad=Raketenabschussrampe container.launchTable=Große Startrampe container.leadBox=SicherheitsbehÀlter +container.machineArcWelder=Lichtbogenschweißer container.machineBoiler=ÖlwÀrmer container.machineCMB=CMB-Stahl Hochofen container.machineCoal=Verbrennungsgenerator container.machineCoker=Koker-Anlage +container.machineCompressor=Kompressor container.machineCrucible=Schmelztiegel container.machineDiesel=Dieselgenerator container.machineElectricBoiler=Elektrischer ÖlwÀrmer +container.machineElectrolyser=ElectrolysegerÀt container.machineFEL=FEL container.machineITER=Kernfusionsreaktor container.machineLargeTurbine=Industrielle Dampfturbine @@ -342,6 +361,7 @@ container.machineSILEX=SILEX container.machineSolidifier=Verfestiger container.machineTurbine=Dampfturbine container.machineTurbofan=Turbofan +container.machineWoodBurner=Brennholzgenerator container.machine_schrabidium_transmutator=Schrabidium-TransmutationsgerÀt container.massStorage=Speicher container.microwave=Mikrowelle @@ -386,6 +406,7 @@ container.reactorSmall=Atomreaktor container.reix=Rei-X Hauptrechner container.rtg=Radioisotopengenerator container.rtgFurnace=RTG-Ofen +container.rttyCounter=Redstone-over-Radio ItemzÀhler container.rttyReceiver=Redstone-over-Radio EmpfÀnger container.rttySender=Redstone-over-Radio Sender container.safe=Panzerschrank @@ -397,6 +418,7 @@ container.soyuzLauncher=Soyuz-Startplatform container.storageDrum=AtommÃŒll-Lagertrommel container.teleLinker=TelLink-GerÀt container.teleporter=Teleporter +container.trainTram=Elektrischer Flachwagen container.turbinegas=Kombizyklus-Gasturbine container.turretArty=Greg container.turretChekhov=Tschechows Gewehr @@ -499,14 +521,27 @@ digamma.title=DIGAMMA-DIAGNOSEGERÄT entity.entity_cyber_crab.name=Cyber-Krabbe entity.entity_elder_one.name=Quackos der Älteste entity.entity_fucc_a_ducc.name=Ente +entity.entity_glyphid.name=Glyphid +entity.entity_glyphid_behemoth.name=Glyphid-Behemoth +entity.entity_glyphid_blaster.name=Glyphid-Blaster +entity.entity_glyphid_bombardier.name=Glyphid-Bombardierer +entity.entity_glyphid_brawler.name=Glyphid-SchlÀger +entity.entity_glyphid_brenda.name=Brenda +entity.entity_glyphid_nuclear.name=Der dicke Johnson +entity.entity_glyphid_scout.name=Glyphid-SpÀher entity.entity_ntm_fbi.name=FBI Agent +entity.entity_ntm_fbi_drone.name=FBI Drone entity.entity_ntm_radiation_blaze.name=Kernschmelze-Elementar entity.hbm.entity_ntm_ufo.name=Marsianisches Invasionsschiff entity.entity_mob_hunter_chopper.name=Jagdschrauber entity.entity_mob_mask_man.name=Maskenmann +entity.entity_mob_gold_creeper.name=Goldener Creeper entity.entity_mob_nuclear_creeper.name=Nuklearer Creeper entity.entity_mob_phosgene_creeper.name=Phosgen-Creeper entity.entity_mob_tainted_creeper.name=Verseuchter Creeper +entity.entity_mob_volatile_creeper.name=Instabiler Creeper +entity.entity_pigeon.name=Taube +entity.entity_plastic_bag.name=PlastiktÃŒte entity.entity_taint_crab.name=Verseuchte Krabbe entity.entity_tesla_crab.name=Tesla-Krabbe entity.hbm.entity_balls_o_tron.name=Balls-O-Tron Prime @@ -515,6 +550,12 @@ entity.hbm.entity_bullet.name=Patrone entity.hbm.entity_rocket.name=Rakete entity.hbm.entity_schrabnel.name=Schrabnel +excavator.crusher=Brecher +excavator.drill=Bohrer +excavator.silktouch=Behutsamkeit +excavator.veinminer=Erzadern-Miner +excavator.walling=Verschalung + flare.ignition=ZÃŒndung flare.valve=Flussventil @@ -552,6 +593,7 @@ hadron.error_diode_collision=Fehler 0x08 [DC] hadron.error_branching_turn=Fehler 0x09 [BT] hadron.hopper0=§eNormalmodus:$Alle Items werden beschleunigt. hadron.hopper1=§eTrichtermodus:$Ein Item bleibt immer ÃŒbrig. +hadron.hopper1=§eEinzelmodus:$Erlaubt nur ein Item pro Slot. hadron.idle=Leerlauf hadron.modeCircular=§eRingbeschleuniger:$Magnete bilden eine Schleife.$Schaltet mehr Rezepte frei. hadron.modeLine=§eLinearbeschleuniger:$Beschleuniger ended mit Analysekammer.$Weniger Rezepte. @@ -600,8 +642,13 @@ hbmfluid.biogas=Biogas hbmfluid.bitumen=Bitumen hbmfluid.blood=Blut hbmfluid.blood_hot=Heißes Blut +hbmfluid.calcium_chloride=Kalziumchlorid-Lösung +hbmfluid.calcium_solution=Kalzium-Lösung hbmfluid.carbondioxide=Kohlenstoffdioxid hbmfluid.chlorine=Chlorgas +hbmfluid.chlorocalcite_cleaned=Gereinigten Chlorokalzit-Lösung +hbmfluid.chlorocalcite_mix=Gemischte Chlorokalzit-Lösung +hbmfluid.chlorocalcite_solution=Chlorokalzit-Lösung hbmfluid.cholesterol=Cholesterinlösung hbmfluid.coalcreosote=Kohleteer-Kreosot hbmfluid.coalgas=Kohlebenzin @@ -622,7 +669,9 @@ hbmfluid.egg=Gelöstes Ei hbmfluid.estradiol=Estradiollösung hbmfluid.ethanol=Ethanol hbmfluid.enderjuice=Endersaft +hbmfluid.fishoil=Fischöl hbmfluid.fracksol=Frackinglösung +hbmfluid.fullerene=Fullerenlösung hbmfluid.gas=Erdgas hbmfluid.gas_coker=Koker-Gas hbmfluid.gasoline=Benzin @@ -632,7 +681,9 @@ hbmfluid.heatingoil_vacuum=Schweres Heizöl hbmfluid.heavyoil=Schweröl hbmfluid.heavyoil_vacuum=Vakuum-Schweröl hbmfluid.heavywater=Schweres Wasser +hbmfluid.heavywater_hot=Heißes Schweres Wasser hbmfluid.helium3=Helium-3 +hbmfluid.helium4=Helium-4 hbmfluid.hotcrackoil=Heißes Crack-Öl hbmfluid.hotoil=Heißes Rohöl hbmfluid.hotsteam=Dichter Dampf @@ -655,6 +706,7 @@ hbmfluid.naphtha_coker=Koker-Naphtha hbmfluid.naphtha_crack=Crack-Mitteldestillat hbmfluid.nitan=NITAN© 100 Oktan Supertreibstoff hbmfluid.nitric_acid=SalpetersÀure +hbmfluid.nitroglycerin=Nitroglycerin hbmfluid.none=Nichts hbmfluid.oil=Rohöl hbmfluid.oil_coker=Koker-Öl @@ -670,10 +722,12 @@ hbmfluid.plasma_dh3=Deuterium-Helium-3-Plasma hbmfluid.plasma_dt=Deuterium-Tritium-Plasma hbmfluid.plasma_hd=Wasserstoff-Deuterium-Plasma hbmfluid.plasma_ht=Wasserstoff-Tritium-Plasma -hbmfluid.plasma_xm=Xenon-Quecksilber-Plasma +hbmfluid.plasma_xm=Helium-4-Sauerstoff-Plasma +hbmfluid.potassium_chloride=Kaliumchlorid-Lösung hbmfluid.puf6=Plutoniumhexafluorid hbmfluid.radiosolvent=Hochleistungs-Lösungsmittel hbmfluid.reclaimed=Wiederaufbetreitetes Industrieöl +hbmfluid.redmud=Rotschlamm hbmfluid.reformate=Reformat hbmfluid.reformgas=Reformatgas hbmfluid.salient=Saftiges GrÃŒn @@ -681,13 +735,22 @@ hbmfluid.sas3=Schrabidiumtrisulfat hbmfluid.schrabidic=Schrabidische SÀure hbmfluid.seedslurry=Saatgemisch hbmfluid.smear=Industrieöl +hbmfluid.smoke=Abgas +hbmfluid.smoke_leaded=Bleiabgas +hbmfluid.smoke_poison=Giftige Abgase +hbmfluid.sodium=FlÃŒssiges Natrium +hbmfluid.sodium_hot=Heißes flÃŒssiges Natrium hbmfluid.solvent=Lösungsmittel hbmfluid.sourgas=Saures Gas hbmfluid.spentsteam=Niedrigdruckdampf hbmfluid.steam=Dampf hbmfluid.sulfuric_acid=SchwefelsÀure +hbmfluid.sunfloweroil=Sonnenblumenkernöl hbmfluid.superhotsteam=Superverdichteter Dampf hbmfluid.syngas=Synthesegas +hbmfluid.thorium_salt=FlÃŒssiges Thoriumsalz +hbmfluid.thorium_salt_depleted=Erschöpftes flÃŒssiges Thoriumsalz +hbmfluid.thorium_salt_hot=Heißes flÃŒssiges Thoriumsalz hbmfluid.tritium=Tritium hbmfluid.uf6=Uranhexafluorid hbmfluid.ultrahotsteam=Ultraverdichteter Dampf @@ -750,6 +813,7 @@ hbmmat.magnetizedtungsten=Magnetisierter Wolfram hbmmat.malachite=Malachit hbmmat.meteoriciron=Meteoriteneisen hbmmat.mingrade=Minecraft-Kupfer +hbmmat.neodymium=Neodym hbmmat.neptunium237=Neptunium-237 hbmmat.niobium=Niob hbmmat.obsidian=Obsidian @@ -793,6 +857,7 @@ hbmmat.watzmud=Giftiger Schlamm hbmmat.whitephosphorus=Weißer Phosphor hbmmat.workersalloy=Desh hbmmat.wroughtiron=Schmiedeeisen +hbmmat.zirconium=Zirkonium matshape.block=%s Block matshape.blocks=%s Blöcke @@ -933,14 +998,20 @@ item.ammo_9mm_du.name=9mm Patrone (DU) item.ammo_9mm_rocket.name=9mm Rakete item.ammo_arty.name=16" Artilleriegranate item.ammo_arty_cargo.name=16" Artilleriegranate (Expresslieferung) +item.ammo_arty_chlorine.name=16" Artilleriegranate (Chlorgas) item.ammo_arty_classic.name=16" Artilleriegranate (Das Factorio-Spezial) item.ammo_arty_he.name=16" Artilleriegranate (HE) item.ammo_arty_mini_nuke.name=16" Mikroatomgranate item.ammo_arty_mini_nuke_multi.name=16" Mehrfach-Mikroatomgranate +item.ammo_arty_mustard_gas.name=16" Artilleriegranate (Senfgas) item.ammo_arty_nuke.name=16" Atomare Artilleriegranate +item.ammo_arty_phosgene.name=16" Artilleriegranate (Phosgen) item.ammo_arty_phosphorus.name=16" Phosphor-Artilleriegranate item.ammo_arty_phosphorus_multi.name=16" Mehrfach-Phosphor-Artilleriegranate item.ammo_cell.name=Energiezelle +item.ammo_coilgun.name=Wolframkugel +item.ammo_coilgun_du.name=Ferrourankugel +item.ammo_coilgun_rubber.name=Gummikugel item.ammo_container.name=MunitionsbehÀlter item.ammo_dart.name=Plastikdart (Withernd) item.ammo_dart_nerf.name=NERF-Dart @@ -963,6 +1034,7 @@ item.ammo_grenade_finned.name=40mm Granate (GeflÃŒgelt) item.ammo_grenade_he.name=40mm Granate (HE) item.ammo_grenade_incendiary.name=40mm Granate (Brand) item.ammo_grenade_kampf.name=40mm Rakete +item.ammo_grenade_leadburster.name=40mm Leadburster item.ammo_grenade_nuclear.name=40mm Granate (ПрОвет) item.ammo_grenade_phosphorus.name=40mm Granate (WP) item.ammo_grenade_sleek.name=40mm Granate (IF-F&E) @@ -970,6 +1042,7 @@ item.ammo_grenade_toxic.name=40mm Granate (Chemisch) item.ammo_grenade_tracer.name=40mm Übungsgranate item.ammo_himars_standard.name=227mm gelenkte Artillerierakete item.ammo_himars_standard_he.name=227mm Artillerielenkrakete (HE) +item.ammo_himars_standard_lava.name=227mm Artillerielenkrakete (Lava) item.ammo_himars_standard_mini_nuke.name=227mm Artillerielenkrakete (Miniatombombe) item.ammo_himars_standard_tb.name=227mm Artillerielenkrakete (Thermobarisch) item.ammo_himars_standard_wp.name=227mm Artillerielenkrakete (WP) @@ -1085,6 +1158,7 @@ item.balefire_and_steel.name=Balefire-Zeug item.balefire_scrambled.name=RÃŒhr-Balefire-Ei item.ball_dynamite.name=Dynamit item.ball_fireclay.name=Schamott +item.ball_resin.name=Kautschuk item.ball_tatb.name=TATB item.ball_tnt.name=TNT item.ballistic_gauntlet.name=Ballistischer Panzerhandschuh @@ -1131,6 +1205,7 @@ item.battery_steam_large.name=Großer dampfbetriebener Energiespeichertank item.battery_su.name=Einwegbatterie item.battery_su_l.name=Große Einwegbatterie item.battery_trixite.name=Billige Spark-Batterie-Nachmache +item.bdcl.name=BDCL item.beta.name=Beta-Features item.big_sword.name=Großes Schwert item.billet_am_mix.name=ReaktorfÀhiges Americiumbillet @@ -1206,6 +1281,7 @@ item.blades_steel.name=StahlsÀgeblatt item.blades_titanium.name=TitansÀgeblatt item.blowtorch.name=Lötlampe item.board_copper.name=Kupfertafel +item.boat_rubber.name=Schlauchboot item.bobmazon_hidden.name=Versteckter Katalog item.bobmazon_machines.name=Bobmazon: Blöcke und Maschinen item.bobmazon_materials.name=Bobmazon: Ressourcen @@ -1334,11 +1410,11 @@ item.cape_vertice.name=Lord Vertices Cape item.cart.crate.name=Stahlkistenlore item.cart.destroyer.name=Schuttzerstörende Lore item.cart.empty.name=Lore -item.casing_357.name=.357 Magnum-HÃŒlse (x24) -item.casing_44.name=.44 Magnum-HÃŒlse (x24) -item.casing_50.name=GroßkaliberhÃŒlse (x12) -item.casing_9.name=KleinkaliberhÃŒlse (x32) -item.casing_buckshot.name=SchrothÃŒlse (x12) +item.casing_357.name=.357 Magnum-HÃŒlsen +item.casing_44.name=.44 Magnum-HÃŒlsen +item.casing_50.name=GroßkaliberhÃŒlsen +item.casing_9.name=KleinkaliberhÃŒlsen +item.casing_buckshot.name=SchrothÃŒlsen item.catalyst_clay.name=Tonerde-Katalysator item.catalytic_converter.name=Katalytischer Konverter item.cbt_device.name=CBT-GerÀt @@ -1398,7 +1474,7 @@ item.circuit_bismuth_raw.name=Bismuth-Schaltkreisrohling item.circuit_copper.name=Erweiterter Schaltkreis item.circuit_gold.name=Übertakteter Schaltkreis item.circuit_raw.name=Schaltkreisrohling -item.circuit_red_copper.name=Forgeschrittener Schaltkreis +item.circuit_red_copper.name=Fortgeschrittener Schaltkreis item.circuit_schrabidium.name=Leistungsstarker Schaltkreis item.circuit_star.name=StarControl Schalttafel item.circuit_star_component.chipset.name=StarControl Chipset @@ -1642,6 +1718,12 @@ item.drillbit_steel_diamond.name=Stahl-Bohrspitze (Diamantbeschichtung) item.drillbit_tcalloy.name=Technetiumstahl-Bohrspitze item.drillbit_tcalloy_diamond.name=Technetiumstahl-Bohrspitze (Diamantbeschichtung) item.drill_titanium.name=Titanbohrer +item.drone.patrol.name=Transportdrone +item.drone.patrol_chunkloading.name=Chunkladende Transportdrone +item.drone.patrol_express.name=Express-Transportdrone +item.drone.patrol_express_chunkloading.name=Chunkladende Express-Transportdrone +item.drone.request.name=Logistikdrone +item.drone_linker.name=Transportdronen-Linker item.ducttape.name=Klebeband item.dust.name=Staub item.dynosphere_base.name=Blanke Dynosphere @@ -1657,12 +1739,17 @@ item.dysfunctional_reactor.name=FunktionsunfÀhiger Atomreaktor item.egg_balefire.name=Balefire-Ei item.egg_balefire.desc=Was fÃŒr ein Vogel legt denn ein radioaktives Ei? item.egg_balefire_shard.name=Balefire-Scherbe +item.egg_glyphid.name=Glyphid-Ei item.elec_axe.name=Elektrische KettensÀge item.elec_pickaxe.name=Schlagbohrmaschine item.elec_shovel.name=Spiralbohrer item.elec_sword.name=Elektroimpulswaffe item.energy_core.name=Selbstgebauter Energiekern item.entanglement_kit.name=VerschrÀnkungskit +item.envsuit_boots.name=M1TTY Umgebungsanzug Stiefel +item.envsuit_helmet.name=M1TTY Umgebungsanzug Helm +item.envsuit_legs.name=M1TTY Umgebungsanzug Hose +item.envsuit_plate.name=M1TTY Umgebungsanzug Brustplatte item.euphemium_boots.name=Euphemiumstiefel item.euphemium_helmet.name=Euphemiumstiefel item.euphemium_kit.name=Euphemium Kit @@ -1760,12 +1847,15 @@ item.gear_large.name=Großes Zahnrad item.gear_large_steel.name=Großes Stahlzahnrad item.geiger_counter.name=Mobiler GeigerzÀhler item.gem_alexandrite.name=Alexandrit +item.gem_sodalite.name=Sodalith item.gem_tantalium.name=Tantal-Polykristall item.gem_volcanic.name=Vulkanischer Edelstein item.generator_front.name=Generatorfront item.generator_steel.name=Generator item.glitch.name=Glitch item.glowing_stew.name=Leuchtende Pilzsuppe +item.glyphid_meat.name=Glyphidfleisch +item.glyphid_meat_grilled.name=Gegrilltes Glyphidfleisch item.goggles.name=Schutzbrille item.grenade_aschrab.name=Werfbare Antischrabidiumzelle item.grenade_black_hole.name=Schwarzes-Loch-Granate @@ -1828,6 +1918,8 @@ item.gun_calamity.name=KnochensÀge item.gun_calamity_ammo.name=.50 BMG Patrone (LEGACY) item.gun_calamity_dual.name=Sattelkanone item.gun_chemthrower.name=Chemowerfer +item.gun_coilgun.name=Gaußpistole +item.gun_cryocannon.name=Kyro-Kanone item.gun_cryolator.name=Der Cryolator item.gun_cryolator_ammo.name=Kryozelle item.gun_dampfmaschine.name=Garantiert keine Scherzwaffe @@ -1918,6 +2010,7 @@ item.gun_stinger_ammo.name=Stinger-Rakete (LEGACY) item.gun_super_shotgun.name=Super Shotgun item.gun_supershotgun.name=Super Shotgun item.gun_thompson.name=Thompson Maschinenpistole +item.gun_uac_pistol.name=UAC .45 Pistole item.gun_uboinik.name=Ubojnik item.gun_uboinik_ammo.name=12x70 Schrotmunition (LEGACY) item.gun_uzi.name=IMI Uzi @@ -1956,6 +2049,7 @@ item.heart_booster.name=Herzbooster item.heart_container.name=Herzcontainer item.heart_fab.name=Fab Herz item.heart_piece.name=Herzteil +item.heavy_component.name=Schwere %skomponente item.hev_battery.name=Anzugs-Batterie item.hev_boots.name=HEV Mark IV Stiefel item.hev_plate.name=HEV Mark IV Brustpanzer @@ -1993,12 +2087,14 @@ item.ingot_au198.name=Gold-198-Barren item.ingot_australium.name=Australiumbarren item.ingot_bakelite.name=Bakelittafel item.ingot_beryllium.name=Berylliumbarren +item.ingot_biorubber.name=Latextafel item.ingot_bismuth.name=Bismutbarren item.ingot_boron.name=Borbarren item.ingot_c4.name=C4-Tafel item.ingot_cadmium.name=Cadmiumbarren item.ingot_calcium.name=Kalziumbarren item.ingot_cdalloy.name=Cadmiumstahlbarren +item.ingot_cft.name=Kristallines Fullerit item.ingot_chainsteel.name=Schwerer Kettenstahl item.ingot_co60.name=Kobalt-60-Barren item.ingot_cobalt.name=Kobaltbarren @@ -2197,6 +2293,7 @@ item.missile_carrier.name=HTR-01 TrÀgerrakete item.missile_cluster.name=Streurakete item.missile_cluster_strong.name=Starke Streurakete item.missile_custom.name=Spezialgefertigte Rakete +item.missile_decoy.name=Köderflugkörper item.missile_doomsday.name=Doomsday Rakete item.missile_drill.name=Der Betonbrecher item.missile_emp.name=EMP-Rakete @@ -2233,6 +2330,7 @@ item.mold_base.name=Blanke Gussform item.mold.name=Gussform item.morning_glory.name=Zaunwinde item.motor.name=Motor +item.motor_bismuth.name=Bismuth-Motor item.motor_desh.name=Desh-Motor item.mp_c_1.name=Stufe 1 Zielsucher-Schaltkreis item.mp_c_2.name=Stufe 2 Zielsucher-Schaltkreis @@ -2372,6 +2470,8 @@ item.n2_charge.name=Große Sprengladung item.neutrino_lens.name=Neutrinolinse item.neutron_reflector.name=Neutronenreflektor item.niter.name=Salpeter +item.nitra.name=Nitra +item.nitra_small.name=Kleines StÃŒck Nitra item.no9.name=Bergbauhelm item.nossy_hat.name=Fabulöser Hut item.nothing.name=Leer @@ -2453,7 +2553,6 @@ item.oil_detector.bullseye=Ölvorkommen direkt untertage! item.oil_detector.detected=Ölvorkommen in der NÀhe! item.oil_detector.noOil=Kein Öl gefunden. item.oil_tar.coal.name=Kohleteer -item.oil_tar.name=Ölteer item.oil_tar.crude.name=Erdölteer item.oil_tar.crack.name=Crackölteer item.oil_tar.paraffin.name=Paraffinwachs @@ -2461,12 +2560,18 @@ item.oil_tar.wax.name=Chloriertes Petroleumwachs item.oil_tar.wood.name=Holzteer item.ore.asbestos=Asbest item.ore.borax=Borax +item.ore.chlorocalcite=Chlorokalzit item.ore.copper=Kupfer +item.ore.fluorite=Fluorit item.ore.gold=Gold +item.ore.hematite=Hematit item.ore.iron=Eisen +item.ore.malachite=Malachit item.ore.niobium=Niob item.ore.titanium=Titan item.ore.tungsten=Wolfram +item.ore.thorium232=Thorium +item.ore.uranium=Uran item.ore_bedrock.name=Bedrock-%serz item.ore_byproduct.b_aluminium.name=Kristallines Aluminiumfragment item.ore_byproduct.b_bismuth.name=Kristallines Bismutfragment @@ -2475,9 +2580,13 @@ item.ore_byproduct.b_copper.name=Kristallines Kupferfragment item.ore_byproduct.b_iron.name=Kristallines Eisenfragment item.ore_byproduct.b_lead.name=Kristallines Bleifragment item.ore_byproduct.b_lithium.name=Kristallines Lithiumfragment +item.ore_byproduct.b_polonium.name=Kristallines Poloniumfragment +item.ore_byproduct.b_radium.name=Kristallines Radiumfragment item.ore_byproduct.b_silicon.name=Kristallines Siliziumfragment item.ore_byproduct.b_sulfur.name=Kristallines Schwefelfragment +item.ore_byproduct.b_technetium.name=Kristallines Technetiumfragment item.ore_byproduct.b_titanium.name=Kristallines Titanfragment +item.ore_byproduct.b_uranium.name=Kristallines Uranfragment item.ore_centrifuged.name=Zentrifugiertes %serz item.ore_cleaned.name=Gereinigtes %serz item.ore_deepcleaned.name=Tiefengereinigtes %serz @@ -2485,7 +2594,7 @@ item.ore_enriched.name=Reiches %serz item.ore_nitrated.name=Nitriertes %serz item.ore_nitrocrystalline.name=Nitrokristallines %serz item.ore_purified.name=Pures %serz -item.ore_radcleaaned.name=Strahlengereinigtes %serz +item.ore_radcleaned.name=Strahlengereinigtes %serz item.ore_seared.name=GeÀtztes %serz item.ore_separated.name=Separiertes %serz item.overfuse.name=SingularitÀtsschraubenzieher @@ -2500,6 +2609,14 @@ item.padlock_unbreakable.name=Unzerstörbares VorhÀngeschloss item.pads_rubber.name=Gummischuhsohlen item.pads_slime.name=Schleimschuhsohlen item.pads_static.name=Statische Schuhsolen +item.page_of_.page1.name=Seite 1 +item.page_of_.page2.name=Seite 2 +item.page_of_.page3.name=Seite 3 +item.page_of_.page4.name=Seite 4 +item.page_of_.page5.name=Seite 5 +item.page_of_.page6.name=Seite 6 +item.page_of_.page7.name=Seite 7 +item.page_of_.page8.name=Seite 8 item.pancake.name=Pfannkuchen aus Altmetall, NÀgeln und Edelsteinpulver item.part_beryllium.name=Berylliumstaubkiste item.part_carbon.name=Kohlenstoffstaubkiste @@ -2578,6 +2695,7 @@ item.plan_c.name=Plan C item.plant_item.mustardwillow.name=Senf-Weidenblatt item.plant_item.rope.name=Seil item.plant_item.tobacco.name=Tabak +item.plastic_bag.name=PlastiktÃŒte item.plate_advanced_alloy.name=Fortgeschrittene Legierungsplatte item.plate_aluminium.name=Aluminiumplatte item.plate_armor_ajr.name=Eisenbeschlagene Panzerplatte @@ -2604,12 +2722,20 @@ item.plate_saturnite.name=Saturnitplatte item.plate_schrabidium.name=Schrabidiumplatte item.plate_steel.name=Stahlplatte item.plate_titanium.name=Titanplatte +item.plate_welded.name=Geschweißte %splatte item.polaroid.name=Das Polaroid +item.pollution_detector.name=Verschmutzungsdetektor item.powder_actinium.name=Actiniumstaub item.powder_actinium_tiny.name=Kleiner Haufen Actiniumstaub item.powder_advanced_alloy.name=Fortgeschrittener Legierungsstaub item.powder_aluminium.name=Aluminiumstaub item.powder_asbestos.name=Asbeststaub +item.powder_ash.coal.name=Kohleasche +item.powder_ash.fly.name=Flugasche +item.powder_ash.fullerene.name=Fulleren +item.powder_ash.misc.name=Asche +item.powder_ash.soot.name=Feiner Ruß +item.powder_ash.wood.name=Holzasche item.powder_astatine.name=Astatstaub item.powder_at209.name=Astat-209-Staub item.powder_au198.name=Gold-198-Staub @@ -2627,6 +2753,7 @@ item.powder_caesium.name=Caesiumstaub item.powder_calcium.name=Kalziumstaub item.powder_cerium.name=Cerstaub item.powder_cerium_tiny.name=Kleiner Haufen Cerstaub +item.powder_chlorocalcite.name=Chlorokalzit item.powder_chlorophyte.name=GrÃŒnalgenstaub item.powder_cloud.name=WolkenrÃŒckstÀnde item.powder_co60.name=Kobalt-60-Staub @@ -2690,6 +2817,7 @@ item.powder_sawdust.name=SÀgespÀne item.powder_schrabidate.name=Eisenschrabidatstaub item.powder_schrabidium.name=Schrabidiumstaub item.powder_semtex_mix.name=Semtexmischung +item.powder_sodium.name=Natrium item.powder_spark_mix.name=Sparkmischung item.powder_steel.name=Stahlstaub item.powder_steel_tiny.name=Kleiner Haufen Stahlstaub @@ -2720,6 +2848,7 @@ item.protection_charm.name=Schutzamulett item.prototype_kit.name=Prototyp Kit item.pudding.name=Pudding item.quartz_plutonium.name=Plutonisches Quarz +item.radar_linker.name=Radar-Linker item.radaway.name=RadAway item.radaway_flush.name=Elite-RadAway item.radaway_strong.name=Starkes RadAway @@ -3038,6 +3167,14 @@ item.stamp_357.name=.357 Magnum-Stempel item.stamp_44.name=.44 Magnum-Stempel item.stamp_50.name=Großkaliberstempel item.stamp_9.name=Kleinkaliberstempel +item.stamp_book.printing1.name=Druckpressstempel (Teil 1) +item.stamp_book.printing2.name=Druckpressstempel (Teil 2) +item.stamp_book.printing3.name=Druckpressstempel (Teil 3) +item.stamp_book.printing4.name=Druckpressstempel (Teil 4) +item.stamp_book.printing5.name=Druckpressstempel (Teil 5) +item.stamp_book.printing6.name=Druckpressstempel (Teil 6) +item.stamp_book.printing7.name=Druckpressstempel (Teil 7) +item.stamp_book.printing8.name=Druckpressstempel (Teil 8) item.stamp_desh_circuit.name=Schaltkreisstempel (Desh) item.stamp_desh_flat.name=Flacher Stempe (Desh) item.stamp_desh_plate.name=Plattenstempel (Desh) @@ -3092,6 +3229,7 @@ item.steel_shovel.name=Stahlschaufel item.steel_sword.name=Stahlschwert item.stick_c4.name=Stange C4 item.stick_dynamite.name=Stange Dynamit +item.stick_dynamite_fishing.name=Stange Fischerei-Dynamit item.stick_semtex.name=Stange Semtex item.stick_tnt.name=Stange TNT item.stopsign.name=Stopschild-Streitaxt @@ -3154,6 +3292,11 @@ item.titanium_plate.name=Titanbrustpanzer item.titanium_shovel.name=Titanschaufel item.titanium_sword.name=Titanschwert item.toothpicks.name=Zahnstocher +item.train.cargo_tram.name=Elektrischer Flachwagen +item.trenchmaster_boots.name=Stiefel des Trenchmasters +item.trenchmaster_helmet.name=Helm des Trenchmasters +item.trenchmaster_legs.name=Hose des Trenchmasters +item.trenchmaster_plate.name=Brustpanzer des Trenchmasters item.trinitite.name=Trinitit item.tritium_deuterium_cake.name=Tritium-Deuterium-Kuchen item.tsar_core.name=Fusionskern @@ -3279,6 +3422,7 @@ item.wings_murk.name=TrÃŒbe FlÃŒgel item.wire_advanced_alloy.name=Supraleiter item.wire_aluminium.name=Aluminiumdraht item.wire_copper.name=Kupferdraht +item.wire_dense.name=Dichter %sdraht item.wire_gold.name=Golddraht item.wire_magnetized_tungsten.name=4000K Hochtemperaturensupraleiter item.wire_red_copper.name=Roter Kupferdraht @@ -3316,10 +3460,14 @@ potion.hbm_stability=StabilitÀt potion.hbm_taint=Verdorben potion.hbm_telekinesis=! ! ! +radar.clearMap=Karte zurÃŒcksetzen radar.detectMissiles=Raketen erkennen radar.detectPlayers=Spieler erkennen +radar.detectShells=Geschosse erkennen radar.redMode=Redstone Mode$Ein: Redstonesignal basiert auf NÀhe$Aus: Redstonesignal basiert auf Größe +radar.showMap=Karte anzeigen radar.smartMode=Smart Mode$Redstonesignal ignoriert aufsteigende Raketen +radar.toggleGui=Ansicht umschalten rbmk.heat=Komponententemperatur: %s rbmk.boiler.water=Wasser: %s / %s @@ -3353,6 +3501,8 @@ shape.plate=Platte shape.plateTriple=Gussplatte shape.stamp=Stempel shape.wire=Draht +shape.wireDense=Dichter Draht +shape.wiresDense=Dichte DrÀhte soundCategory.ntmMachines=NTM Maschinen @@ -3412,6 +3562,7 @@ tile.block_beryllium.name=Berylliumblock tile.block_bismuth.name=Bismutblock tile.block_boron.name=Borblock tile.block_c4.name=C4-Block +tile.block_cadmium.name=Cadmiumblock tile.block_cap_fritz.name=Fritz-Kola Kronkorkenblock tile.block_cap_korl.name=Korl Kronkorkenblock tile.block_cap_nuka.name=Nuka Kronkorkenblock @@ -3420,6 +3571,7 @@ tile.block_cap_rad.name=S~Cola RAD Kronkorkenblock tile.block_cap_sparkle.name=S~Cola Kronkorkenblock tile.block_cap_star.name=Sunset Sarsaparilla Kronkorkenblock tile.block_cap_sunset.name=Sunset Sarsaparilla Sternkronkorkenblock +tile.block_cdalloy.name=Cadmiumstahlblock tile.block_cobalt.name=Kobaltblock tile.block_coke.coal.name=Kohlekoksblock tile.block_coke.lignite.name=Braunkohlekoksblock @@ -3487,6 +3639,7 @@ tile.block_starmetal.name=§9Sternenmetallblock§r tile.block_steel.name=Stahlblock tile.block_sulfur.name=Schwefelblock tile.block_tantalium.name=Tantalblock +tile.block_tcalloy.name=Technetiumstahlblock tile.block_thorium.name=Thorium-232-Block tile.block_thorium_fuel.name=Thoriumkernbrennstoffblock tile.block_titanium.name=Titanblock @@ -3560,6 +3713,14 @@ tile.c4.name=C4 tile.cable_detector.name=Redstone-Stromschalter tile.cable_diode.name=Rote Kupferdiode tile.cable_switch.name=Stromschalter +tile.capacitor_bus.name=Kondensator-Bus +tile.capacitor_bus.desc=Output fÃŒr Kondensatoren$Kann in einer geraden Linie aneinandergereit werden +tile.capacitor_copper.name=Kupferkondensator +tile.capacitor_gold.name=Goldkondensator +tile.capacitor_niobium.name=Niobkondensator +tile.capacitor_schrabidate.name=Schrabidatkondensator +tile.capacitor_tantalium.name=Tantalkondensator +tile.capacitor.desc=Input: Oben$Output: Unten, ÃŒber Kondensator-Bus tile.charge_c4.name=Abrissladung tile.charge_dynamite.name=Zeitbombe tile.charge_miner.name=Bergbauladung mit ZeitzÃŒnder @@ -3567,6 +3728,10 @@ tile.charge_semtex.name=Semtex-Bergbauladung tile.charger.name=Ladestation tile.cheater_virus.name=Geliertes Euphemium tile.cheater_virus_seed.name=Instabiler Euphemiumschrabid-Block +tile.chimney_brick.name=Schornstein +tile.chimney_brick.desc=Kann mit Abgasrohren verbunden werden$Reduziert Abgas um 75%% +tile.chimney_industrial.name=Industrieschornstein +tile.chimney_industrial.desc=Kann mit Abgasrohren verbunden werden$Reduziert Abgas um 90%% tile.chlorine_gas.name=Chlorgas tile.cluster_aluminium.name=Aluminiumerzcluster tile.cluster_copper.name=Kupfererzcluster @@ -3586,22 +3751,28 @@ tile.concrete_brick_slab.brick_concrete_broken.name=Rissige Betonziegelstufe tile.concrete_brick_slab.brick_concrete_cracked.name=Gebrochene Betonziegelstufe tile.concrete_brick_slab.brick_concrete_mossy.name=Bemooste Betonziegelstufe tile.concrete_brick_slab.brick_ducrete.name=Ducreteziegelstufe -tile.concrete_colored.black.name=Schwarzer Beton -tile.concrete_colored.blue.name=Blauer Beton -tile.concrete_colored.brown.name=Brauner Beton -tile.concrete_colored.cyan.name=TÃŒrkiser Beton -tile.concrete_colored.gray.name=Grauer Beton -tile.concrete_colored.green.name=GrÃŒner Beton -tile.concrete_colored.lightBlue.name=Hellblauer Beton -tile.concrete_colored.lime.name=HellgrÃŒner Beton -tile.concrete_colored.magenta.name=Magenta Beton -tile.concrete_colored.orange.name=Oranger Beton -tile.concrete_colored.pink.name=Rosa Beton -tile.concrete_colored.purple.name=Lila Beton -tile.concrete_colored.red.name=Roter Beton +tile.concrete_colored.black.name=Schwarzer Beton +tile.concrete_colored.blue.name=Blauer Beton +tile.concrete_colored.brown.name=Brauner Beton +tile.concrete_colored.cyan.name=TÃŒrkiser Beton +tile.concrete_colored.gray.name=Grauer Beton +tile.concrete_colored.green.name=GrÃŒner Beton +tile.concrete_colored.lightBlue.name=Hellblauer Beton +tile.concrete_colored.lime.name=HellgrÃŒner Beton +tile.concrete_colored.magenta.name=Magenta Beton +tile.concrete_colored.orange.name=Oranger Beton +tile.concrete_colored.pink.name=Rosa Beton +tile.concrete_colored.purple.name=Lila Beton +tile.concrete_colored.red.name=Roter Beton tile.concrete_colored.silver.name=Hellgrauer Beton -tile.concrete_colored.white.name=Weißer Beton -tile.concrete_colored.yellow.name=Gelber Beton +tile.concrete_colored.white.name=Weißer Beton +tile.concrete_colored.yellow.name=Gelber Beton +tile.concrete_colored_ext.hazard.name=Builder's Choice Concrete - Gefahrenstreifen +tile.concrete_colored_ext.indigo.name=Builder's Choice Concrete - Tiefes Indigo +tile.concrete_colored_ext.machine.name=Builder's Choice Concrete - Industrieller Ton +tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Industrieller Streifen +tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - MÀnnliches Pink +tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysteriöses Lila tile.concrete_pillar.name=StahlbetonsÀule tile.concrete_slab.concrete.name=Betonfliesenstufe tile.concrete_slab.concrete_asbestos.name=Asbestbetonstufe @@ -3614,18 +3785,32 @@ tile.concrete_stairs.name=Betonfliesentreppe tile.concrete_super.name=Super Beton tile.concrete_super_broken.name=Schimmliger Schutt tile.conveyor.name=Förderband +tile.conveyor.desc=Bewegt Items$Kann mit Schraubenzieher im Uhrzeigersinn gedreht werden$Shiftclick umdas Band zu biegen tile.conveyor_chute.name=FörderschÃŒtte +tile.conveyor_chute.desc=Bewegt Items nach unten$Die unterste SchÃŒtte verhÀlt sich wie ein normales Förderband tile.conveyor_double.name=Zweispuriges Förderband +tile.conveyor_double.desc=Bewegt Items$Kann mit Schraubenzieher im Uhrzeigersinn gedreht werden$Shiftclick umdas Band zu biegen +tile.conveyor_express.name=Expressförderband +tile.conveyor_express.desc=Bewegt Items sehr schnell$Kann mit Schraubenzieher im Uhrzeigersinn gedreht werden$Shiftclick umdas Band zu biegen tile.conveyor_lift.name=Kettenaufzug +tile.conveyor_lift.desc=Bewegt Items nach oben$Benötigt mindestens zwei AufzÃŒge ÃŒbereinander um richtig zu funktionieren tile.conveyor_triple.name=Dreispuriges Förderband +tile.conveyor_triple.desc=Bewegt Items$Kann mit Schraubenzieher im Uhrzeigersinn gedreht werden$Shiftclick umdas Band zu biegen tile.corium_block.name=Corium tile.crane_boxer.name=Förderband-Verpacker +tile.crane_boxer.desc=LÀdt eine konfigurierbare Menge Stacks in Boxen$Rechstclick mit Schraubenzieher um Eingang zu definieren$Shiftclick mit Schraubenzieher um Ausgang zu definieren$Zweimal clicken, um gegenÃŒberliegende Seite zu definieren tile.crane_extractor.name=Förderband-Auswerfer +tile.crane_extractor.desc=Nimmt Items aus behÀltern und legt sie auf FörderbÀnder$Hat bis zu 9 Filterslots mit Black- und Whitelist$Rechstclick mit Schraubenzieher um Ausgang zu definieren$Shiftclick mit Schraubenzieher um Eingang zu definieren$Zweimal clicken, um gegenÃŒberliegende Seite zu definieren tile.crane_grabber.name=Förderband-Greifer +tile.crane_grabber.desc=Nimmt Items von vorbeilaufenden FörderbÀndern und legt sie in BehÀlter$Nimmt nur Items von der nÀhesten Spur$Hat bis zu 9 Filterslots mit Black- und Whitelist$Rechstclick mit Schraubenzieher um Eingang zu definieren$Shiftclick mit Schraubenzieher um Ausgang zu definieren$Zweimal clicken, um gegenÃŒberliegende Seite zu definieren tile.crane_inserter.name=Förderband-Einsetzer +tile.crane_inserter.desc=Akzeptiert Items von FörderbÀndern und legt sie in BehÀlter$Rechstclick mit Schraubenzieher um Eingang zu definieren$Shiftclick mit Schraubenzieher um Ausgang zu definieren$Zweimal clicken, um gegenÃŒberliegende Seite zu definieren tile.crane_router.name=Förderband-Sortierer +tile.crane_router.desc=Sortiert Items basierend auf eingestellte Kriterien$Seiten können als Blacklist, Whitelist oder Wildcard eingestellt werden$Widlcard-Seiten werden nur verwendet, wenn kein anderer Filter zutrifft tile.crate_splitter.name=Förderband-Teiler +tile.crane_splitter.desc=Teilt Items und Stacks gleichmÀßig auf zwei FörderbÀnder$ZÀhlt selbst als Förderband, kann also direkt in Einsetzer und Sortierer fÃŒhren tile.crane_unboxer.name=Förderband-Entpacker +tile.crane_unboxer.desc=Öffnet boxen$Rechstclick mit Schraubenzieher um Ausgang zu definieren$Shiftclick mit Schraubenzieher um Eingang zu definieren$Zweimal clicken, um gegenÃŒberliegende Seite zu definieren tile.crashed_bomb.name=BlindgÀnger tile.crate.name=Vorratskiste tile.crate_ammo.name=Sternenmetallkiste @@ -3637,6 +3822,7 @@ tile.crate_lead.name=Gefahrenstoffkiste tile.crate_metal.name=Maschinenkiste tile.crate_red.name=Rote Kiste tile.crate_steel.name=Stahlkiste +tile.crate_template.name=Vorlagenkiste tile.crate_tungsten.name=Wolframkiste tile.crate_weapon.name=Waffenkiste tile.crystal_hardened.name=GehÀrteter Dunkler Kristall @@ -3695,6 +3881,12 @@ tile.dfc_stabilizer.name=DFC-Stabilisator tile.dirt_dead.name=Tote Erde tile.dirt_oily.name=Ölige Erde tile.drill_pipe.name=BohrgestÀnge +tile.drone_crate.name=Transportdronen-Kiste +tile.drone_crate_provider.name=Logistik-Anbieterkiste +tile.drone_crate_requester.name=Logistik-Abnehmerkiste +tile.drone_dock.name=Logistikdronen-Dock +tile.drone_waypoint.name=Transportdronen-Wegpunkt +tile.drone_waypoint_request.name=Logistikdronen-Wegpunkt tile.door_bunker.name=BunkertÃŒr tile.door_metal.name=MetalltÃŒr tile.door_office.name=BÃŒrotÃŒr @@ -3717,6 +3909,7 @@ tile.factory_titanium_furnace.name=Einfache Fabrikzugriffsluke tile.factory_titanium_hull.name=Fabrikblock tile.fallout.name=Fallout tile.fan.name=Ventilator +tile.fan.desc=Kann mit Redstone aktiviert werden$Bewegt Entities bis zu 10 Blöcke$Rechtsclick mit Schraubenzieher um den Ventilator umzudrehen tile.fence_metal.name=Maschendrahtzaun tile.field_disturber.name=Hochenergiefeld-Jammer tile.fire_digamma.name=Verweilendes Digamma @@ -3730,17 +3923,21 @@ tile.flame_war.name=Flamewar aus der Box tile.float_bomb.name=Schwebebombe tile.fluid_duct.name=Universelles FlÃŒssigkeitsrohr (Veraltet) tile.fluid_duct_box.name=Universelles FlÃŒssigkeitsrohr (Boxrohr) +tile.fluid_duct_exhaust.name=Abgasrohr tile.fluid_duct_gauge.name=Flussmessrohr tile.fluid_duct_gauge.desc=Rohr welches anzeight, wie viel FlÃŒssigkeit$sich pro Tick im Netzwerk bewegt.$Geteilte Netzwerke die ÃŒber FÀsser oder Tanks$verbunden sind, werden als ein einzelnes gezÀhlt. tile.fluid_duct_neo.name=Universelles FlÃŒssigkeitsrohr tile.fluid_duct_paintable.name=Geschirmtes universelles FlÃŒssigkeitsrohr (FÀrbbar) tile.fluid_duct_solid.name=Geschirmtes universelles FlÃŒssigkeitsrohr (Veraltet) +tile.fluid_switch.name=Redstone-Ventil +tile.fluid_valve.name=Ventil tile.foam_layer.name=Schaumdecke tile.foundry_basin.name=Gussbecken tile.foundry_channel.name=Gusskanal tile.foundry_tank.name=Gießerei-Lagerbecken tile.foundry_mold.name=Seichtes Gussbecken tile.foundry_outlet.name=Ausguss +tile.foundry_slagtap.name=Schlackeausguss tile.fraction_spacer.name=Fraktionierungsturm-Teiler tile.frozen_dirt.name=Gefrorene Erde tile.frozen_grass.name=Gefrorenes Gras @@ -3754,6 +3951,7 @@ tile.furnace_steel.name=Stahlofen tile.furnace_steel.desc=Sehr großer Ofen mit Produktionsboni.$Benötigt externe Hitzequelle.$WÀrmetransferrate: ΔT*0.05 TU/t$(Δ heißt Differenz, T heißt Temparatur) tile.fusion_center.name=ZentralmagnetstÃŒck tile.fusion_conductor.name=Supraleiter-Magnet +tile.fusion_conductor_welded.name=Supraleiter-Magnet (Verschweißt) tile.fusion_core.name=Fusionsreaktorsteuerung tile.fusion_hatch.name=Fusionsreaktorzugriffsluke tile.fusion_heater.name=Plasmaerhitzer-Komponente @@ -3785,6 +3983,8 @@ tile.glass_polonium.name=Poloniumglas tile.glass_quartz.name=Quarzglas tile.glass_trinitite.name=Trinity-Glas tile.glass_uranium.name=Uranglas +tile.glyphid_base.name=Glyphidnest +tile.glyphid_spawner.name=Glyphidnest-Spawner tile.gneiss_brick.name=Schieferziegel tile.gneiss_chiseled.name=Gemeißelter Schiefer tile.gneiss_tile.name=Schieferfliese @@ -3802,6 +4002,8 @@ tile.hadron_coil_neodymium.name=Dichte Neodymspule tile.hadron_coil_schrabidate.name=Dichte Schrabidatspule tile.hadron_coil_schrabidium.name=Dichte Schrabidiumspule tile.hadron_coil_starmetal.name=Dichte Sternenmetallspule +tile.hadron_cooler.name=Teilchenbeschleuniger-KÃŒhlungseinheit +tile.hadron_cooler_mk2.nameTeilchenbeschleuniger-KÃŒhlungseinheit - Das Palindrome-Spezial tile.hadron_core.name=Teilchenbeschleuniger-Kernkomponente tile.hadron_diode.name=Schottky-Partikeldiode tile.hadron_plating.name=Teilchenbeschleuniger-Außenwand @@ -3845,6 +4047,8 @@ tile.lamp_tritium_blue_off.name=Blaue Tritiumlampe tile.lamp_tritium_blue_on.name=Blaue Tritiumlampe tile.lamp_tritium_green_off.name=GrÃŒne Tritiumlampe tile.lamp_tritium_green_on.name=GrÃŒne Tritiumlampe +tile.lantern.name=Laterne +tile.lantern_behemoth.name=Alte Laterne tile.launch_pad.name=Raketenabschussrampe tile.launch_table.name=Große Startrampe tile.leaves_layer.name=Totes Laub @@ -3852,11 +4056,15 @@ tile.lox_barrel.name=LOX-Fass tile.machine_amgen.name=Umgebungsstrahlungs-Generator tile.machine_arc_furnace_off.name=Lichtbogenofen tile.machine_arc_furnace_on.name=Lichtbogenofen +tile.machine_arc_welder.name=Lichtbogenschweißer tile.machine_armor_table.name=RÃŒstungsmodifikationstisch +tile.machine_ashpit.name=Aschekasten +tile.machine_ashpit.desc=Sammelt Asche von FeuerbÃŒchsen und Heizöfen tile.machine_assembler.name=Fertigungsmaschine tile.machine_assemfac.name=Fertigungsfabrik tile.machine_autocrafter.name=Automatische Werkbank tile.machine_autosaw.name=Automatische KreissÀge +tile.machine_autosaw.desc=Schneidet Pflanzen nieder, pflanzt BÀume nach$Akzeptiert:$-Holzöl$-Ethanol$-Fischöl$-Schweröl tile.machine_bat9000.name=Big-Ass Tank 9000 tile.machine_battery.name=Energiespeicherblock tile.machine_battery_potato.name=Kartoffelbatterieblock @@ -3879,10 +4087,14 @@ tile.machine_coker.name=Koker-Anlage tile.machine_coker.desc=Verkokt Öl, erzeugt fluides Nebenprodukt.$Benötigt externe Hitzequelle.$WÀrmestransferrate: ΔT*0.025 TU/t tile.machine_combine_factory.name=CMB-Stahl Hochofen tile.machine_combustion_engine.name=Industrieller Verbrennungsmotor +tile.machine_compressor.name=Kompressor tile.machine_condenser.name=Dampfkondensierer +tile.machine_condenser_powered.name=Hochleistungs-Dampfkondensierer tile.machine_controller.name=Reaktorfernsteuerung tile.machine_converter_he_rf.name=HE zu RF Konverter tile.machine_converter_rf_he.name=RF zu HE Konverter +tile.machine_conveyor_press.name=Förderband-Presse +tile.machine_conveyor_press.desc=Band bewegt sich von links nach rechts$Rechtsclick um Stempel zu montieren$Stempel kann mit Schraubenzieher entfernt werden tile.machine_crucible.name=Schmelztiegel tile.machine_crystallizer.name=Erzauflöser tile.machine_cyclotron.name=Zyklotron @@ -3899,7 +4111,9 @@ tile.machine_dineutronium_battery.name=Spark Energiespeicherblock tile.machine_drill.name=Automatischer Minenbohrer tile.machine_electric_furnace_off.name=Elektrischer Ofen tile.machine_electric_furnace_on.name=Elektrischer Ofen +tile.machine_electrolyser.name=ElectrolysegerÀt tile.machine_epress.name=Hydraulische Presse +tile.machine_exposure_chamber.name=Bestrahlungskammer tile.machine_excavator.name=Großer Minenbohrer tile.machine_fel.name=FEL tile.machine_fensu.name=FEnSU @@ -3912,6 +4126,8 @@ tile.machine_gascent.name=Gaszentrifuge tile.machine_generator.name=Atomreaktor (Alt) tile.machine_geo.name=Geothermiegenerator tile.machine_hephaestus.name=Geothermischer WÀrmetauscher +tile.machine_industrial_boiler.name=Industrieller Boiler +tile.machine_industrial_boiler.desc=Großer Boiler zum Verdampfen von Wasser oder$Erhitzen von Öl. Benötigt externe Hitzequelle.$WÀrmestransferrate: ΔT*0.01 TU/t$Überdrucksicher tile.machine_industrial_generator.name=Industrieller Generator tile.machine_keyforge.name=Schlossertisch tile.machine_large_turbine.name=Industrielle Dampfturbine @@ -3963,6 +4179,8 @@ tile.machine_steam_engine.name=Dampfmaschine tile.machine_steam_engine.desc=Effizienz: 85%% tile.machine_stirling.name=Stirlingmotor tile.machine_stirling.desc=Erzeugt Energie aus WÀrme. Benötigt externe Hitzequelle.$WÀrmestransferrate: T*0.1 TU/t$Maximalaufnahme: 300 TU/t$Effizienz: 50%% +tile.machine_stirling_creative.name=Kreativer Stirlingmotor +tile.machine_stirling_creative.desc=Erzeugt Energie aus WÀrme. Benötigt externe Hitzequelle.$WÀrmestransferrate: T*0.1 TU/t$Keine Maximalaufnahme/t$Effizienz: 100%% tile.machine_stirling_steel.name=Schwerer Stirlingmotor tile.machine_stirling_steel.desc=Erzeugt Energie aus WÀrme. Benötigt externe Hitzequelle.$Verwendet ein schwereres Zahnrad und vertrÀgt höhere Temparaturen.$WÀrmestransferrate: T*0.1 TU/t$Maximalaufnahme: 1500 TU/t$Effizienz: 50%% tile.machine_storage_drum.name=AtommÃŒll-Lagertrommel @@ -3981,6 +4199,8 @@ tile.machine_turbofan.name=Turbofan tile.machine_uf6_tank.name=Uranhexafluorid-Tank tile.machine_vacuum_distill.name=Vakuumraffinerie tile.machine_waste_drum.name=Abklingbecken-Trommel +tile.machine_wood_burner.name=Brennholzgenerator +tile.machine_wood_burner.desc=Erzeugt 100HE/t aus Items$Sammelt Asche$Kann 40mB/s FlÃŒssigkeiten mit 50%% Effizienz verbrennen tile.machine_well.name=Ölbohrturm tile.machine_zirnox.name=ZIRNOX Atomreaktor tile.marker_structure.name=Multiblock-Strukturvorlage @@ -4094,6 +4314,8 @@ tile.pink_log.name=Pinkes Holz tile.pink_planks.name=Pinke Holzbretter tile.pink_slab.name=Pinke Holzstufe tile.pink_stairs.name=Pinke Holztreppen +tile.piston_inserter.name=Einsetzer-Kolben +tile.piston_inserter.desc=Kann ein Item halten$Wenn mit Redstone aktiviert, setzt das Item in gebohrten Graphit ein$Alle Items in gebohrten Graphitblöcken in der Linie werden einen Block verschoben$Benötigt einen Luftblock zwischen sich selbst und dem Graphit tile.plant_dead.name=Tote Pflanze tile.plant_flower.cd0.name=Senf-Weide tile.plant_flower.cd1.name=Senf-Weide @@ -4115,6 +4337,33 @@ tile.pribris.name=RBMK-Schutt tile.pribris_burning.name=Flammender RBMK-Schutt tile.pribris_digamma.name=GeschwÀrzter RBMK-Schutt tile.pribris_radiating.name=GlÃŒhender RBMK-Schutt +tile.pump_electric.name=Elektrische Grundwasserpumpe +tile.pump_electric.desc=Nutzt Strom um Grundwasser hochzupumpen$Erzeugt bis zu 10.000mB/t$Muss unter Y:70 platziert werden +tile.pump_steam.name=Dampfbetriebene Grundwasserpumpe +tile.pump_steam.desc=Nutzt Dampf um Grundwasser hochzupumpen$Erzeugt bis zu 1.000mB/t$Muss unter Y:70 platziert werden +tile.pwr_block.name=PWR +tile.pwr_casing.name=PWR DruckbehÀlter +tile.pwr_casing.desc=Muss alle internen Teile des PWRs abdecken$Platzierung: HÃŒlle +tile.pwr_channel.name=PWR KÃŒhlmittelkanal +tile.pwr_channel.desc=Nutzt Hitze aus der HÃŒlle um KÃŒhlmittle zu erhitzen$Platzierung: Egal +tile.pwr_control.name=PWR SteuerstÀbe +tile.pwr_control.desc=Reguliert verbundene BrennstÀbe$Platzierung: Gitter, zwischen BrennstÀben +tile.pwr_controller.name=PWR Controller +tile.pwr_controller.desc=Zugangsterminal zum PWR$Platzierung: HÃŒlle, nur eines pro Reaktor$Rechtsclick um Reaktor zusammenzubauen +tile.pwr_fuel.name=PWR BrennstÀbe +tile.pwr_fuel.desc=Erhöht die KapazitÀt fÃŒr Brennelemente$Platzierung: Gitter, fÃŒr höhere ReaktivitÀt +tile.pwr_heatex.name=PWR WaÀrmetauscher +tile.pwr_heatex.desc=Gleicht Kerntemparatur mit HÃŒlltemparatur aus$Platzierung: Egal +tile.pwr_neutron_source.name=PWR Neutronenquelle +tile.pwr_neutron_source.desc=FÃŒgt dem Kern 20 Flux hinzu$Platzierung: Egal$Flux erreicht den Kern nur, wenn SteuerstÀbe offen sind +tile.pwr_port.name=PWR Zugangsport +tile.pwr_port.desc=Erlaubt IO fÃŒr Items und FlÃŒssigkeiten$Platzierung: HÃŒlle +tile.pwr_reflector.name=PWR Neutronenreflektor +tile.pwr_reflector.desc=Reflektier Neutronen auf BrennstÀbe zurÃŒck$Platzierung: HÃŒlle, fÃŒr höhere ReaktivitÀt$GÃŒltiger Block fÃŒr HÃŒlle +tile.radar_screen.name=Radarbildschirm +tile.radio_telex.name=Telex-Maschine +tile.radio_torch_counter.name=Redstone-over-Radio ItemzÀhler +tile.radio_torch_counter.desc=Kann auf ebenen FlÀchen oder Komparator-kompatiblen Blöcken platziert werden$Signal basiert auf Anzahl passender Items tile.radio_torch_receiver.name=Redstone-over-Radio EmpfÀnger tile.radio_torch_receiver.desc=Kann auf ebenen FlÀchen oder Komparator-kompatiblen Blöcken platziert werden tile.radio_torch_sender.name=Redstone-over-Radio Sender @@ -4157,6 +4406,8 @@ tile.reactor_inserter.name=Reaktor-Brennstoffeinlass tile.red_barrel.name=Explosives Fass tile.red_cable.name=Rotes Kupferkabel tile.red_cable_classic.name=Rotes Kupferkabel (Klassisch) +tile.red_cable_gauge.name=StrommessgerÀt +tile.red_cable_gauge.desc=Kabel welches anzeight, wie viel Strom$sich pro Tick im Netzwerk bewegt.$Geteilte Netzwerke die ÃŒber Energiespeicherblöcke$verbunden sind, werden als ein einzelnes gezÀhlt. tile.red_cable_paintable.name=Geschirmtes rotes Kupferkabel (FÀrbbar) tile.red_connector.name=StromverbindungsstÃŒck tile.red_pylon.name=Strommasten @@ -4227,6 +4478,7 @@ tile.stone_depth_nether.name=Nether-Tiefenfels tile.stone_gneiss.name=Graphitschiefer tile.stone_porous.name=Poröser Stein tile.stone_resource.asbestos.name=Chrysotil +tile.stone_resource.bauxite.name=Bauxit tile.stone_resource.hematite.name=HÀmatit tile.stone_resource.limestone.name=Kalkstein tile.stone_resource.malachite.name=Malachit @@ -4383,6 +4635,9 @@ turret.off=AUS turret.on=AN turret.players=Spieler anzielen: %s +upgrade.consumption=Verbrauch %s +upgrade.speed=Verarbeitungszeit %s + wavelengths.name.ir=Infrarot wavelengths.name.visible=Sichtbares Licht wavelengths.name.uv=Ultraviolett diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index c35075e33..a1282dcae 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -36,16 +36,16 @@ achievement.concrete.desc=A Bolshevik's favorite. achievement.concrete=Old Reliable achievement.desh.desc="Come on then, you lot. Places to go!" achievement.desh=Le Verrier -achievement.digammaFeel.desc=the hollow within. -achievement.digammaFeel=The Terror of Feeling +achievement.digammaFeel.desc=My eyes are bleeding +achievement.digammaFeel=SEWAGE-INFUSED GARBAGE WORLD achievement.digammaKauaiMoho.desc=Everything is awful, here's some hot choccy. -achievement.digammaKauaiMoho=Sing, sing me the song of the Kauai Moho +achievement.digammaKauaiMoho=SING, SING ME THE SONG OF THE KAUAI MOHO achievement.digammaKnow.desc=what this world is about. -achievement.digammaKnow=The Terror of Knowing -achievement.digammaSee.desc=into the abyss. -achievement.digammaSee=The Terror of Seeing +achievement.digammaKnow=THE TERROR OF KNOWING +achievement.digammaSee.desc=It's a bit dark, bring a flashlight. +achievement.digammaSee=ENTER THE ABYSS achievement.digammaUpOnTop.desc=Admire my son, he's my clone. -achievement.digammaUpOnTop=Admire Me, Admire my Home +achievement.digammaUpOnTop=ADMIRE ME, ADMIRE MY HOME achievement.fiend.desc=Be mean. achievement.fiend2.desc=Be meaner. achievement.fiend2=Delinquent 2: Delinquent Harder @@ -56,6 +56,8 @@ achievement.fusion.desc=A dance of deuterons, tritons, and energy. achievement.fusion=Fusion achievement.gasCent.desc=Unenriched Uranium hates him! achievement.gasCent=The Zippe Style +achievement.goFish.desc=Nautical Crucifixion +achievement.goFish=Go Fish achievement.hidden.desc=Kill a tainted creeper with a falling boxcar. achievement.hidden=Hidden Catalog achievement.horizonsBonus.desc=honest to god what the hell is wrong with you @@ -133,6 +135,7 @@ armor.damageModifier=Damage modifier of %s against %s armor.dash=Grants %s dashes armor.electricJetpack=Ion Jetpack armor.explosionImmune=Cannot take any damage except from explosions +armor.fasterReload=Faster Reload armor.fastFall=Fast Fall armor.fireproof=Fireproof armor.fullSetBonus=Full Set Bonus: @@ -143,10 +146,12 @@ armor.gravity=Gravity modifier of %s armor.hardLanding=Hard Landing armor.ignoreLimit=Resistance is not affected by resistance limit armor.modifier=General damage modifier of %s +armor.moreAmmo=More Ammo armor.nullDamage=Nullifies all damage from %s armor.projectileProtection=Damage modifier of %s against projectiles armor.rocketBoots=Rocket Boots armor.sprintBoost=Boosted Sprint +armor.stepSize=Stepsize: %s armor.thermal=Thermal Sight armor.threshold=Damage threshold of %s armor.vats=Enemy HUD @@ -319,70 +324,130 @@ book.starter.page18=vÊr is just a guy who has been trapped in the grey void fea #book.rbmk.page16=§4§lAvoid. book_lore.author=By %s -book_lore.test.name=Test -book_lore.test.author=the dude -book_lore.test.page.1=>hello anons before i begin let me clarify that i'm not gay. >Be me >This night >18 > At hanging out with my best friend with my parents gone for a few days >We've been best friends for a year now >Been drinking a bit and playing lots of video games and ordered a pizza >We were having a blast >At a certain point in the night like around 9:00 he makes a really funny joke that I don't remember but I know that it made us both laugh really hard > With out thinking I brush my right hand through his semi-curly black hair and call him a funny boy >He blushes >I realize I'm feeling flustered >We're kinda close >All of the sudden he kisses me and for some reason I kiss him back >We make love >Cuddle together and fall asleep >Wake up in the middle of the night with his head snuggled up on my chest and neck area >It feels nice but I'm not a homosexual -book_lore.test.page.2=I'm typing this as he's asleep in my arms. How do I let my best friend down nicely? I don't want to be a [redacted] /b/ -book_lore.test.page.3=3 -book_lore.test.page.4=4 -book_lore.test.page.5=5 +book_lore.test.name=this book doesn't work... +book_lore.test.author=me i trolled you hehe :3c +book_lore.test.page.0=>hello anons before i begin let me clarify that i'm not gay. >Be me >This night >18 > At hanging out with my best friend with my parents gone for a few days >We've been best friends for a year now >Been drinking a bit and playing lots of video games and ordered a pizza >We were having a blast >At a certain point in the night like around 9:00 he makes a really funny joke that I don't remember but I know that it made us both laugh really hard > With out thinking I brush my right hand through his semi-curly black hair and call him a funny boy >He blushes >I realize I'm feeling flustered >We're kinda close >All of the sudden he kisses me and for some reason I kiss him back >We make love >Cuddle together and fall asleep >Wake up in the middle of the night with his head snuggled up on my chest and neck area >It feels nice but I'm not a homosexual +book_lore.test.page.1=I'm typing this as he's asleep in my arms. How do I let my best friend down nicely? I don't want to be a [redacted] /b/ +book_lore.test.page.2=3 +book_lore.test.page.3=4 +book_lore.test.page.4=5 book_lore.book_iodine.name=Note book_lore.book_iodine.author=Dave -book_lore.book_iodine.page.1=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: -book_lore.book_iodine.page.2=apparently the morons from R&D discovered a compound that is mostly inorganic, pretty much like a toxin in nature, but get this: the dying cells will reproduce said toxin and excrete it through the skin, creating an aerosol that is highly contagious. -book_lore.book_iodine.page.3=it's just like a virus, but not a virus. the composition is weird, you can mix it in any household bottle but you do have to get the order right. the doc told me that the first ingredient which is just powdered iodine crystals goes into slot %d +book_lore.book_iodine.page.0=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: +book_lore.book_iodine.page.1=apparently the morons from R&D discovered a compound that is mostly inorganic, pretty much like a toxin in nature, but get this: the dying cells will reproduce said toxin and excrete it through the skin, creating an aerosol that is highly contagious. +book_lore.book_iodine.page.2=it's just like a virus, but not a virus. the composition is weird, you can mix it in any household bottle but you do have to get the order right. the doc told me that the first ingredient which is just powdered iodine crystals goes into slot %d book_lore.book_phosphorous.name=Note book_lore.book_phosphorous.author=Dave -book_lore.book_phosphorous.page.1=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second -book_lore.book_phosphorous.page.2=ingredient is red phosphorous, whihc has to be mixed into slot %d +book_lore.book_phosphorous.page.0=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second +book_lore.book_phosphorous.page.1=ingredient is red phosphorous, whihc has to be mixed into slot %d book_lore.book_dust.name=Note book_lore.book_dust.author=Dave -book_lore.book_dust.page.1=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not -book_lore.book_dust.page.2=that he has much blood left to begin with. one of the R&D morons slipped some more info into last week's circular, they call their little concoction \"MKU\" whatever that means, and that it contains actual household lint. can you believe that? one of the most -book_lore.book_dust.page.3=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d +book_lore.book_dust.page.0=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not +book_lore.book_dust.page.1=that he has much blood left to begin with. one of the R&D morons slipped some more info into last week's circular, they call their little concoction \"MKU\" whatever that means, and that it contains actual household lint. can you believe that? one of the most +book_lore.book_dust.page.2=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d book_lore.book_mercury.name=Note book_lore.book_mercury.author=Dave -book_lore.book_mercury.page.1=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being -book_lore.book_mercury.page.2=replicated by the body? whatever, the mercury goes into slot %d +book_lore.book_mercury.page.0=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being +book_lore.book_mercury.page.1=replicated by the body? whatever, the mercury goes into slot %d book_lore.book_flower.name=Note book_lore.book_flower.author=Dave -book_lore.book_flower.page.1=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case, -book_lore.book_flower.page.2=it does not work with other flowers. the morning glory goes into slot %d +book_lore.book_flower.page.0=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case, +book_lore.book_flower.page.1=it does not work with other flowers. the morning glory goes into slot %d book_lore.book_syringe.name=Note book_lore.book_syringe.author=Dave -book_lore.book_syringe.page.1=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal -book_lore.book_syringe.page.2=syringe goes into slot %d +book_lore.book_syringe.page.0=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal +book_lore.book_syringe.page.1=syringe goes into slot %d book_lore.resignation_note.name=Letter of Resignation book_lore.resignation_note.author=Kosma -book_lore.resignation_note.page.1=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and -book_lore.resignation_note.page.2=it's ME who's the one out of a job now. I'M the one being asked to resign. I hope you asshats finally learn from your overabundance of mistakes and take that stick out of your ass. -book_lore.resignation_note.page.3=I'm not coming back on Friday. Just send the paycheck. +book_lore.resignation_note.page.0=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and +book_lore.resignation_note.page.1=it's ME who's the one out of a job now. I'M the one being asked to resign. I hope you asshats finally learn from your overabundance of mistakes and take that stick out of your ass. +book_lore.resignation_note.page.2=I'm not coming back on Friday. Just send the paycheck. book_lore.memo_stocks.name=Intracorporate Memorandum -book_lore.memo_stocks.page.1=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern. +book_lore.memo_stocks.page.0=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern. book_lore.memo_schrab_gsa.name=Internal Memorandum -book_lore.memo_schrab_gsa.page.1=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum -book_lore.memo_schrab_gsa.page.2=a 40%% profit on related operations, let alone the possibility of future contracts. Due to the confidential nature, all fiscal evidence is to remain private. +book_lore.memo_schrab_gsa.page.0=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum +book_lore.memo_schrab_gsa.page.1=a 40%% profit on related operations, let alone the possibility of future contracts. Due to the confidential nature, all fiscal evidence is to remain private. book_lore.memo_schrab_rd.name=Internal Memorandum -book_lore.memo_schrab_rd.page.1=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. -book_lore.memo_schrab_rd.page.2=Doctor Schrabauer, however, has discovered a new interaction - called "Strange Lepton Oscillation" - that could significantly reduce costs. Through a not entirely understood process, supplied electrons are transmuted into extremely -book_lore.memo_schrab_rd.page.3=high-energy photons, through a strange charm. This is an extreme exception to many established particle conversion laws, but preliminary experiments have proved that these protons transmute into up and down quarks, eventually creating saralloy. -book_lore.memo_schrab_rd.page.4=Strangely, the prototype requires Tungsten alloyed with small amounts of saralloy. In addition, a special capacitor is required to negate the leftover positive charge. +book_lore.memo_schrab_rd.page.0=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. +book_lore.memo_schrab_rd.page.1=Doctor Schrabauer, however, has discovered a new interaction - called "Strange Lepton Oscillation" - that could significantly reduce costs. Through a not entirely understood process, supplied electrons are transmuted into extremely +book_lore.memo_schrab_rd.page.2=high-energy photons, through a strange charm. This is an extreme exception to many established particle conversion laws, but preliminary experiments have proved that these protons transmute into up and down quarks, eventually creating saralloy. +book_lore.memo_schrab_rd.page.3=Strangely, the prototype requires Tungsten alloyed with small amounts of saralloy. In addition, a special capacitor is required to negate the leftover positive charge. book_lore.memo_schrab_nuke.name=Research Report book_lore.memo_schrab_nuke.author=Doctor Schrabauer -book_lore.memo_schrab_nuke.page.1=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. -book_lore.memo_schrab_nuke.page.2=Only our cyclotron has actually created saralloy previously. However, at our underground shot at Everwerpen, miniscule traces of saralloy were found in uranium ore at the site. All pure, metallic uranium nearby had fissioned. -book_lore.memo_schrab_nuke.page.3=As such, given enough uranium ore concentrated around an explosive, or perhaps even a dirty bomb rich in waste containing fissionable material, one could hypothetically create enough saralloy to collect manually. +book_lore.memo_schrab_nuke.page.0=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. +book_lore.memo_schrab_nuke.page.1=Only our cyclotron has actually created saralloy previously. However, at our underground shot at Everwerpen, miniscule traces of saralloy were found in uranium ore at the site. All pure, metallic uranium nearby had fissioned. +book_lore.memo_schrab_nuke.page.2=As such, given enough uranium ore concentrated around an explosive, or perhaps even a dirty bomb rich in waste containing fissionable material, one could hypothetically create enough saralloy to collect manually. + +book_lore.bf_bomb_1.name=Private Notes +book_lore.bf_bomb_1.author=M. Porter +book_lore.bf_bomb_1.page.0=Took long enough, but my transfer was accepted. Those new grads were already hard to handle, let alone all the unprofessionalism of the lead. $ Not all good news - this lab was withholding further detail, and I didn't need more chaos over another magic new discovery. +book_lore.bf_bomb_1.page.1=Of course that was the case. The alumni had their doubts (surprising, considering how bright-eyed they were), but my only... competent? colleague actually got his hands on the primer hand-out. Must have more connections than I thought. His memo is discouraging: +book_lore.bf_bomb_1.page.2=apparently, there's yet ANOTHER miracle material that they prodded out of some concoction of antimatter and a fringe isotope. The brochure calls it "SWIRLMAT" - hell if I know - and that's it. No wonder they wanted a theoretical physicist, +book_lore.bf_bomb_1.page.3=they don't even know what it is yet. Either way, practically any job would be better than my old position, so I can't complain much about sketchiness. + +book_lore.bf_bomb_2.name=Private Notes +book_lore.bf_bomb_2.author=M. Porter +book_lore.bf_bomb_2.page.0=Despite the absence of information in that primer, I still had some hope they knew a bit more. Not at all. Every other senior researcher has a blind faith in this material; their propositions were practically biblical. I was near speechless. +book_lore.bf_bomb_2.page.1=And yet I can't even blame them. Swirlmat makes no goddamn sense - it is completely unlike any other substance I've seen before. Its appearance was near frightening, a literal mass of swirling colors, with darker lines permeating through the neon green surface. +book_lore.bf_bomb_2.page.2=Even worse, this thing is an energy source. The existence of our sample is a violation of ALARA: the lab was vacated when it arrived, and the only person brave enough (one Dr. Melfyn) donned a level A hazmat just to carry it 20 meters. +book_lore.bf_bomb_2.page.3=The empirical data isn't better, as we're breaking the first law of thermodynamics with how much energy it radiates. Being anywhere near that thing - even behind a meter of lead - was terrifying. We sprinted out of the chamber upon conclusion of the spectroscopy +book_lore.bf_bomb_2.page.4=and we got nothing new out of it. Those idiots in the science team, god, did not even waver after all that. Sitting through those "discussions" was horrible; that quack of a head researcher even rumored that the test ban would be lifted, that we could be +book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison. + +book_lore.bf_bomb_3.name=Private Notes +book_lore.bf_bomb_3.author=M. Porter +book_lore.bf_bomb_3.page.0=The team and I have made some breakthroughs. Emphasis on the separation - isolating myself from the more devout has made working there so much more bearable. While we still have no idea about the actual properties of balefire (it's difficult to analyze +book_lore.bf_bomb_3.page.1=a sample that fries your equipment) its interactions with other matter has proved fruitful. Notably, they synthesized a "gaseous" form: Andrew, of all people, informed me that it was really a colloid consisting of microscopic balefire particles, suspended in some +book_lore.bf_bomb_3.page.2=noble gas. Each particle is enveloped by a positively-charged 'bubble' of ionized gas, preventing it from settling. Who could've guessed that fatal gamma radiation had a benefit? Not me. $ I'm choosing not to think about how they transformed the sample into +book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off. +book_lore.bf_bomb_3.page.4=He decided to get "dirty" by letting a cell of our new colloid interact directly with some very expensive antimatter: the resulting explosion turned the table it was on into a piece of radiation-bleached slag, carved a near-perfect hemisphere through +book_lore.bf_bomb_3.page.5=the top, and gave the head a healthy dose of ARS. I guess we know how to make it explode now, but god, some people... + +book_lore.bf_bomb_4.name=Private Notes +book_lore.bf_bomb_4.author=M. Porter +book_lore.bf_bomb_4.page.0=I just can't escape my old work. They're the only place that's hiring despite all this godforsaken turmoil, but I'm not going back into that hole. $ They only tempted me because I need out, fast. Remember that atmospheric testing treaty we withdrew from a week ago? +book_lore.bf_bomb_4.page.1=Well, the dipshit in charge of our lab got something right for once. The denunciation came with a flurry of new "scientists" joining, just so we could weaponize balefire. The lack of critical thought here is honestly baffling - bless him, Andrew even jumped ship the +book_lore.bf_bomb_4.page.2=second the first fucking BOMB DESIGN was drafted. That ass Melfyn looked so happy with his little mechanism - perhaps he got brainworms from carrying that sample? - which involved some stupid shit using the solidified, base balefire and an HV +book_lore.bf_bomb_4.page.3=battery. $ Apparently, the form matters for energy output and activation method or whatever, kind of like uranium versus plutonium in regular nukes, but the end result is an initial shock starting the explosion. I find it funny, hilarious even. +book_lore.bf_bomb_4.page.4=All of them place such emphasis on the activation; they ignore the actual mechanism of it all because they don't have a single clue how it works! It may as well be magic at this point, and yet they're still trying to twist and bend it - just for more weapons of war. + +book_lore.bf_bomb_5.name=Private Notes +book_lore.bf_bomb_5.author=M. Porter +book_lore.bf_bomb_5.page.0=I just... can't come to grips with it, even days after. It was a foregone conclusion, really, with how flippant the science team was with safety. $ $ Doctor Melfyn, M.S., is gone. Dead, maybe. I saw it happen before my own eyes, in their test chamber. +book_lore.bf_bomb_5.page.1=We had just gotten another batch of pure balefire, and he had recovered electrical equipment and an energy source to test his proposal. I don't know what caused it (was the power on? had he begun too soon?), but it seemingly progressed in agonizingly slow motion, +book_lore.bf_bomb_5.page.2=as the green-tinted light consumed the table, the battery, and Dr. Melfyn standing only a meter away. Even when the table had degraded into a pool of broiling metal on the floor, he did not burn. I don't know what I saw in his eyes... $ $ Terror, or awe +book_lore.bf_bomb_5.page.3=over his continued survival, maybe? Whatever our "miracle" material was, it didn't care. With a bright blaze of light, he disappeared in the next moment. Was he evaporated? incinerated? annihilated? sent to fucking hell itself, I don't know anymore! +book_lore.bf_bomb_5.page.4=The head researcher sickens me. Said we could be more careful, keep trucking, whatever other morale-improving filth he spewed. That dipshit won't ever figure out that playing with fire will get you burned. $ I didn't bother +book_lore.bf_bomb_5.page.5=resigning, I just grabbed my shit and ran for the hills. Not like it matters, anyway; considering the lack of calls, and the mushroom cloud that rose over my (now former) workplace, they've either blown everything up or entered full-on military jurisdiction. +book_lore.bf_bomb_5.page.6=There's a vital distinction to be made between dissection and VIVISECTION, one which was clearly lost on them. They can dissect metal or atoms as much as they like, but tearing into, vivisecting reality itself is only going to end in more Dr. Melfyns. Who knows! +book_lore.bf_bomb_5.page.7=The government wants to put this shit into bombs after all, maybe we'll see a couple more wars, couple more million resigned to a fate worse than death. They can't hide this forever. $ $ I don't care. Not anymore. Please, god, let me go back +book_lore.bf_bomb_5.page.8=to actual science. $ $ Goddamnit, Mae, get ahold of yourself... + +book_lore.beacon.name=Signal Beacon Instruction Booklet +book_lore.beacon.author=Flim Flam Industries +book_lore.beacon.page.0=Thank you for your purchase of a Mk.2 Illuminated Signal Beacon (rev. 1.3)! This small booklet will provide a short introduction in the operation of the beacon, as well as its inner workings. +book_lore.beacon.page.1=Chapter 1: Architecture $ Each unit is composed of four main parts: The control circuit, a lantern, a fog horn and the casing which houses the other parts. For a detailed explanation of the main circuit, please +book_lore.beacon.page.2=refer to the circuit diagram found on the inside of the maintenance lid of the casing. The lantern is made up of a polycarbonate case containing a dual-color 250 Watt halogen bulb with a standard 200mm socket, replacements +book_lore.beacon.page.3=for the bulb can be ordered from our stores. Third party bulbs are not recommended, as we cannot ensure safe operation. The case is made from a specialized zinc-coated stainless steel and is resistant to weathering. +book_lore.beacon.page.4=Chapter 2: Lantern $ The lantern's primary uses are providing light for ease of maintenance in harsh weather conditions as well as a status indicator. Should the power-on self test (POST) fail, the lantern will +book_lore.beacon.page.5=light up red, otherwise it will light up green. Note that colors can vary depending on the replacement bulb. +book_lore.beacon.page.6=Chapter 3: Fog Horn $ The fog horn is the primary communication device of the beacon. The beacon is designed for peer-to-peer (P2P) communication as well as for message broadcasting. +book_lore.beacon.page.7=Chapter 4: Peer-to-Peer $ For details on communication, refer to the communications handbook. A short rundown of establishing a P2P connection follows: First, the beacon has to give the "START CONNECTION" signal, +book_lore.beacon.page.8=being a single long tone. All available peers should respond with a single long tone as well (order specified by proximity, as well as the communication guidelines outlined in the handbook, section "Responding to a Connection") +book_lore.beacon.page.9=Once the desired peer has responded, give the "ACCEPT CONNECTION" signal, being two long tones, the peer will then also respond with two long tones. All communication afterwards has to happen using pre-negotiated signals, most commonly +book_lore.beacon.page.10=using the FAR-5M standard. Communication will end immediately if no standard has been negotiated, serving as a "ping". Should communication continue, the connection can be ended using another long single tone "END CONNECTION". +book_lore.beacon.page.11=Chapter 5: Warranty $ [ page intentionally left blank ] cannery.f1=[ Press F1 for help ] @@ -463,6 +528,8 @@ chem.BALEFIRE=BF Rocket Fuel Mixing chem.BP_BIOFUEL=Biofuel Transesterification chem.BP_BIOGAS=Biogas Production chem.C4=C-4 Synthesis +chem.CC_CENTRIFUGE=Chlorocalcite Separation +chem.CC_ELECTROLYSIS=Calcium Chloride Electrolysis chem.CC_HEATING=Advanced Coal Liquefaction chem.CC_HEAVY=Basic Coal Liquefaction chem.CC_I=Enhanced Coal Liquefaction @@ -514,6 +581,7 @@ chem.NITAN=NITAN Super Fuel Mixing chem.NITRIC_ACID=Nitric Acid Production chem.OIL_SAND=Tar Sand Extraction chem.OSMIRIDIUM_DEATH=Osmiridic Solution Production +chem.PC_ELECTROLYSIS=Potassium Chloride Electrolysis chem.PEROXIDE=Hydrogen Peroxide Production chem.PET=PET Synthesis chem.PETROIL_LEADED=Leaded Petroil Mixing @@ -546,6 +614,7 @@ chem.SULFURIC_ACID=Sulfuric Acid Production chem.TATB=TATB Synthesis chem.TEL=TEL Mixing chem.TEST=Test +chem.THORIUM_SALT=Thorium Salt Enrichment chem.TNT=TNT Synthesis chem.UF6=Uranium Hexafluoride Production chem.VIT_GAS=Gaseous Nuclear Waste Vitrification @@ -554,12 +623,19 @@ chem.XENON=Linde Xenon Cycle chem.XENON_OXY=Boosted Linde Xenon Cycle chem.YELLOWCAKE=Yellowcake Production +commands.satellite.no_satellite=No satellite using this frequency found! +commands.satellite.not_a_satellite=The held item is not a satellite! +commands.satellite.satellite_descended=Satellite successfully descended. +commands.satellite.satellite_orbited=Satellite launched. +commands.satellite.should_be_run_as_player=This command should be run by a player! + container.amsBase=AMS Base (Deco) container.amsEmitter=AMS Emitter (Deco) container.amsLimiter=AMS Stabilizer (Deco) container.anvil=Tier %s Anvil container.arcFurnace=Arc Furnace container.armorTable=Armor Modification Table +container.ashpit=Ashpit container.assembler=Assembly Machine container.autocrafter=Automatic Crafting Table container.barrel=Barrel @@ -579,6 +655,7 @@ container.craneUnboxer=Conveyor Unboxer container.crateDesh=Desh Crate container.crateIron=Iron Crate container.crateSteel=Steel Crate +container.crateTemplate=Template Crate container.crateTungsten=Tungsten Crate container.crystallizer=Ore Acidizer container.cyclotron=Cyclotron @@ -589,8 +666,13 @@ container.dfcReceiver=DFC Receiver container.dfcStabilizer=DFC Stabilizer container.diFurnace=Blast Furnace container.diFurnaceRTG=Nuclear Blast Furnace +container.droneCrate=Transport Drone Crate +container.droneDock=Dock +container.droneProvider=Provider +container.droneRequester=Requester container.electricFurnace=Electric Furnace container.epress=Electric Press +container.exposureChamber=Exposure Chamber container.factoryAdvanced=Advanced Factory container.factoryTitanium=Basic Factory container.fluidtank=Tank @@ -615,13 +697,16 @@ container.keyForge=Locksmith Table container.launchPad=Missile Launch Pad container.launchTable=Large Launch Pad container.leadBox=Containment Box +container.machineArcWelder=Arc Welder container.machineBoiler=Oil Heater container.machineCMB=CMB Steel Furnace container.machineCoal=Combustion Generator container.machineCoker=Coker Unit +container.machineCompressor=Compressor container.machineCrucible=Crucible container.machineDiesel=Diesel Generator container.machineElectricBoiler=Electric Oil Heater +container.machineElectrolyser=Electrolysis Machine container.machineFEL=FEL container.machineITER=Fusion Reactor container.machineLargeTurbine=Industrial Steam Turbine @@ -634,6 +719,7 @@ container.machineSILEX=SILEX container.machineSolidifier=Solidifier container.machineTurbine=Steam Turbine container.machineTurbofan=Turbofan +container.machineWoodBurner=Wood-Burner container.machine_schrabidium_transmutator=Schrabidium Transmutation Device container.massStorage=Storage container.microwave=Microwave @@ -679,6 +765,7 @@ container.reactorResearch=Research Reactor container.reix=Rei-X Mainframe container.rtg=RT Generator container.rtgFurnace=RTG Furnace +container.rttyCounter=Redstone-over-Radio Item Counter container.rttyReceiver=Redstone-over-Radio Receiver container.rttySender=Redstone-over-Radio Transmitter container.safe=Safe @@ -690,6 +777,7 @@ container.soyuzLauncher=Soyuz Launch Platform container.storageDrum=Nuclear Waste Disposal Drum container.teleLinker=TelLink Device container.teleporter=Teleporter +container.trainTram=Electric Flat Bed Tram container.turbinegas=Combined Cycle Gas Turbine container.turretArty=Greg container.turretChekhov=Chekhov's Gun @@ -798,16 +886,11 @@ desc.gui.template=§9Templates§r$Templates can be made by$using the Machine Tem desc.gui.turbinegas.automode=§2Automatic Turbine Throttling Mode§r$By clicking the "AUTO" button, the turbine$will automatically adjust the power production$based on the power required from the network desc.gui.turbinegas.fuels=§6Accepted fuels:§r desc.gui.turbinegas.warning=§cFuel or lubricant level low!§r -desc.gui.upgrade=§lAcceptable Upgrades:§r -desc.gui.upgrade.afterburner= * §dAfterburner§r: Stacks to level 3 -desc.gui.upgrade.effectiveness= * §aEffectiveness§r: Stacks to level 3 -desc.gui.upgrade.overdrive= * §7Overdrive§r: Stacks to level 3 -desc.gui.upgrade.power= * §1Power-Saving§r: Stacks to level 3 -desc.gui.upgrade.speed= * §4Speed§r: Stacks to level 3 desc.gui.zirnox.coolant=§3Coolant§r$CO2 transfers heat from the core to the water.$This will boil it into super dense steam.$The efficiency of cooling and steam production$is based on pressure. desc.gui.zirnox.pressure=§6Pressure§r$Pressure can be reduced by venting CO2.$However, too low a pressure, and cooling$efficiency and steam production will be reduced.$Look out for meltdowns! desc.gui.zirnox.warning1=§cError:§r Water is required for$the reactor to function properly! desc.gui.zirnox.warning2=§cError:§r CO2 is required for$the reactor to function properly! + desc.item.ammo.con_accuracy2=- Highly decreased accuracy desc.item.ammo.con_damage=- Highly decreased damage desc.item.ammo.con_heavy_wear=- Highly increased wear @@ -838,6 +921,7 @@ desc.item.ammo.neu_fun=* Fun for the whole family! desc.item.ammo.neu_heavy_metal=* Heavy Metal desc.item.ammo.neu_homing=* Homing desc.item.ammo.neu_jolt=* Jolt +desc.item.ammo.neu_leadburster=* Attaches to surfaces and sprays bullets desc.item.ammo.neu_less_bouncy=* Less bouncy desc.item.ammo.neu_maskman_flechette=* Fires a tracer which summons a storm of DU-flechettes desc.item.ammo.neu_maskman_meteorite=* Fires a high-damage round that summons a small meteorite @@ -945,14 +1029,27 @@ digamma.title=DIGAMMA DIAGNOSTIC entity.entity_cyber_crab.name=Cyber Crab entity.entity_elder_one.name=Quackos The Elder One entity.entity_fucc_a_ducc.name=Duck +entity.entity_glyphid.name=Glyphid +entity.entity_glyphid_behemoth.name=Glyphid Behemoth +entity.entity_glyphid_blaster.name=Glyphid Blaster +entity.entity_glyphid_bombardier.name=Glyphid Bombardier +entity.entity_glyphid_brawler.name=Glyphid Brawler +entity.entity_glyphid_brenda.name=Brenda +entity.entity_glyphid_nuclear.name=Big Man Johnson +entity.entity_glyphid_scout.name=Glyphid Scout entity.entity_ntm_fbi.name=FBI Agent +entity.entity_ntm_fbi_drone.name=FBI Drone entity.entity_ntm_radiation_blaze.name=Meltdown Elemental entity.hbm.entity_ntm_ufo.name=Martian Invasion Ship entity.entity_mob_hunter_chopper.name=Hunter Chopper entity.entity_mob_mask_man.name=Mask Man +entity.entity_mob_gold_creeper.name=Golden Creeper entity.entity_mob_nuclear_creeper.name=Nuclear Creeper entity.entity_mob_phosgene_creeper.name=Phosgene Creeper entity.entity_mob_tainted_creeper.name=Tainted Creeper +entity.entity_mob_volatile_creeper.name=Volatile Creeper +entity.entity_pigeon.name=Pigeon +entity.entity_plastic_bag.name=Plastic Bag entity.entity_taint_crab.name=Taint Crab entity.entity_tesla_crab.name=Tesla Crab entity.hbm.entity_balls_o_tron.name=Balls-O-Tron Prime @@ -961,6 +1058,12 @@ entity.hbm.entity_bullet.name=Bullet entity.hbm.entity_rocket.name=Rocket entity.hbm.entity_schrabnel.name=Schrabnel +excavator.crusher=Toggle Crusher +excavator.drill=Toggle Drill +excavator.silktouch=Toggle Silk Touch +excavator.veinminer=Toggle Vein Miner +excavator.walling=Toggle Walling + flare.ignition=Ignition flare.valve=Flow Valve @@ -992,6 +1095,7 @@ gun.make.CERIX=Cerix Magnus gun.make.COLT=Colt's Manufacturing Company gun.make.COMBINE=The Universal Union gun.make.CUBE=Cube 2: Sauerbraten +gun.make.DRG=Deep Rock Galactic gun.make.ENZINGER=Enzinger Union gun.make.EQUESTRIA=Equestria Missile Systems gun.make.FLIMFLAM=FlimFlam Industries @@ -1010,7 +1114,8 @@ gun.make.MANN=Open Mann Co. gun.make.MAXIM=Hiram Maxim gun.make.METRO=Metro Gunsmiths gun.make.MWT=MWT Prototype Labs -gun.make.NAZI=Erfurter Maschinenfabrik Geipel +gun.make.NAWS=Kayarm Industries +gun.make.ERFURT=Erfurter Maschinenfabrik Geipel gun.make.NONE=- gun.make.RAYTHEON=Raytheon Missile Systems gun.make.REMINGTON=Remington Arms @@ -1034,6 +1139,7 @@ gun.name.benelli=Benelli M4 Super 90 gun.name.benelliDrum=Benelli M4 Super 90 (Drum Magazine Modification) gun.name.bio=RI No. 2 Mark 1 gun.name.bolter=Manticora Pattern Boltgun +gun.name.congoLake=Congo Lake Pump-Action Grenade Launcher gun.name.cPython=Colt Python gun.name.cz53=CZ53 Personal Minigun gun.name.cz57=CZ57 Avenger Minigun @@ -1123,6 +1229,7 @@ hadron.error_diode_collision=Error 0x08 [DC] hadron.error_branching_turn=Error 0x09 [BT] hadron.hopper0=§eNormal Mode:$All items will be used. hadron.hopper1=§eHopper Mode:$One item will always remain. +hadron.hopper2=§eSingle Mode:$Only allows one item per slot. hadron.idle=Idle hadron.modeCircular=§eCircular Accelerator Mode:$Magnets must loop back into core.$Unlocks more recipes. hadron.modeLine=§eLinear Accelerator Mode:$Accelerator ends with analysis chamber.$Fewer Recipes. @@ -1172,8 +1279,13 @@ hbmfluid.biogas=Biogas hbmfluid.bitumen=Bitumen hbmfluid.blood=Blood hbmfluid.blood_hot=Hot Blood +hbmfluid.calcium_chloride=Calciumchloride Solution +hbmfluid.calcium_solution=Calcium Solution hbmfluid.carbondioxide=Carbon Dioxide hbmfluid.chlorine=Chlorine Gas +hbmfluid.chlorocalcite_cleaned=Cleaned Chlorocalcite Solution +hbmfluid.chlorocalcite_mix=Mixed Chlorocalcite Solution +hbmfluid.chlorocalcite_solution=Chlorocalcite Solution hbmfluid.cholesterol=Cholesterol Solution hbmfluid.coalcreosote=Coal Tar Creosote hbmfluid.coalgas=Coal Gasoline @@ -1194,7 +1306,9 @@ hbmfluid.egg=Dissolved Egg hbmfluid.estradiol=Estradiol Solution hbmfluid.ethanol=Ethanol hbmfluid.enderjuice=Ender Juice +hbmfluid.fishoil=Fish Oil hbmfluid.fracksol=Fracking Solution +hbmfluid.fullerene=Fullerene Solution hbmfluid.gas=Natural Gas hbmfluid.gas_coker=Coker Gas hbmfluid.gasoline=Gasoline @@ -1204,7 +1318,9 @@ hbmfluid.heatingoil_vacuum=Heavy Heating Oil hbmfluid.heavyoil=Heavy Oil hbmfluid.heavyoil_vacuum=Vacuum Heavy Oil hbmfluid.heavywater=Heavy Water +hbmfluid.heavywater_hot=Hot Heavy Water hbmfluid.helium3=Helium-3 +hbmfluid.helium4=Helium-4 hbmfluid.hotcrackoil=Hot Cracked Oil hbmfluid.hotoil=Hot Crude Oil hbmfluid.hotsteam=Dense Steam @@ -1227,6 +1343,7 @@ hbmfluid.naphtha_coker=Coker Naphtha hbmfluid.naphtha_crack=Cracked Naphtha hbmfluid.nitan=NITAN© 100 Octane Super Fuel hbmfluid.nitric_acid=Nitric Acid +hbmfluid.nitroglycerin=Nitroglycerin hbmfluid.none=None hbmfluid.oil=Crude Oil hbmfluid.oil_coker=Coker Oil @@ -1242,10 +1359,12 @@ hbmfluid.plasma_dh3=Deuterium-Helium-3 Plasma hbmfluid.plasma_dt=Deuterium-Tritium Plasma hbmfluid.plasma_hd=Hydrogen-Deuterium Plasma hbmfluid.plasma_ht=Hydrogen-Tritium Plasma -hbmfluid.plasma_xm=Xenon-Mercury Plasma +hbmfluid.plasma_xm=Helium-4-Oxygen Plasma +hbmfluid.potassium_chloride=Potassiumchloride Solution hbmfluid.puf6=Plutonium Hexafluoride hbmfluid.radiosolvent=High-Performance Solvent hbmfluid.reclaimed=Reclaimed Industrial Oil +hbmfluid.redmud=Red Mud hbmfluid.reformate=Reformate hbmfluid.reformgas=Reformate Gas hbmfluid.salient=Salient Green @@ -1253,13 +1372,22 @@ hbmfluid.sas3=Schrabidium Trisulfide hbmfluid.schrabidic=Schrabidic Acid hbmfluid.seedslurry=Seeding Slurry hbmfluid.smear=Industrial Oil +hbmfluid.smoke=Smoke +hbmfluid.smoke_leaded=Leaded Smoke +hbmfluid.smoke_poison=Poison Smoke +hbmfluid.sodium=Liquid Sodium +hbmfluid.sodium_hot=Hot Liquid Sodium hbmfluid.solvent=Solvent hbmfluid.sourgas=Sour Gas hbmfluid.spentsteam=Low-Pressure Steam hbmfluid.steam=Steam hbmfluid.sulfuric_acid=Sulfuric Acid +hbmfluid.sunfloweroil=Sunflower Seed Oil hbmfluid.superhotsteam=Super Dense Steam hbmfluid.syngas=Syngas +hbmfluid.thorium_salt=Liquid Thorium Salt +hbmfluid.thorium_salt_depleted=Depleted Liquid Thorium Salt +hbmfluid.thorium_salt_hot=Hot Liquid Thorium Salt hbmfluid.tritium=Tritium hbmfluid.uf6=Uranium Hexafluoride hbmfluid.ultrahotsteam=Ultra Dense Steam @@ -1330,6 +1458,7 @@ hbmmat.magnetizedtungsten=Magnetized Tungsten hbmmat.malachite=Malachite hbmmat.meteoriciron=Meteoric Iron hbmmat.mingrade=Minecraft Grade Copper +hbmmat.neodymium=Neodymium hbmmat.neptunium237=Neptunium-237 hbmmat.niobium=Niobium hbmmat.obsidian=Obsidian @@ -1373,6 +1502,7 @@ hbmmat.watzmud=Poisonous Mud hbmmat.whitephosphorus=White Phosphorus hbmmat.workersalloy=Desh hbmmat.wroughtiron=Wroght Iron +hbmmat.zirconium=Zirconium matshape.block=%s Block matshape.blocks=%s Blocks @@ -1513,14 +1643,20 @@ item.ammo_9mm_du.name=9mm Round (DU) item.ammo_9mm_rocket.name=9mm Rocket item.ammo_arty.name=16" Artillery Shell item.ammo_arty_cargo.name=16" Express Delivery Artillery Shell +item.ammo_arty_chlorine.name=16" Chlorine Gas Artillery Shell item.ammo_arty_classic.name=16" Artillery Shell (The Factorio Special) item.ammo_arty_he.name=16" High Explosive Artillery Shell item.ammo_arty_mini_nuke.name=16" Micro Nuclear Artillery Shell item.ammo_arty_mini_nuke_multi.name=16" Multi Micro Nuclear Artillery Shell +item.ammo_arty_mustard_gas.name=16" Mustard Gas Artillery Shell item.ammo_arty_nuke.name=16" Nuclear Artillery Shell +item.ammo_arty_phosgene.name=16" Phosgene Artillery Shell item.ammo_arty_phosphorus.name=16" Phosphorus Shell item.ammo_arty_phosphorus_multi.name=16" Multi Phosphorus Shell item.ammo_cell.name=Energy Cell +item.ammo_coilgun.name=Coilgun Tungsten Ball +item.ammo_coilgun_du.name=Coilgun Ferrouranium Ball +item.ammo_coilgun_rubber.name=Coilgun Rubber Ball item.ammo_container.name=Ammo Container item.ammo_dart.name=Plastic Dart (Withering) item.ammo_dart_nerf.name=NERF Dart @@ -1543,6 +1679,7 @@ item.ammo_grenade_finned.name=40mm Grenade (Finned) item.ammo_grenade_he.name=40mm Grenade (HE) item.ammo_grenade_incendiary.name=40mm Grenade (Incendiary) item.ammo_grenade_kampf.name=40mm Rocket +item.ammo_grenade_leadburster.name=40mm Leadburster item.ammo_grenade_nuclear.name=40mm Grenade (ПрОвет) item.ammo_grenade_phosphorus.name=40mm Grenade (WP) item.ammo_grenade_sleek.name=40mm Grenade (IF-R&D) @@ -1550,6 +1687,7 @@ item.ammo_grenade_toxic.name=40mm Grenade (Chemical) item.ammo_grenade_tracer.name=40mm Training Grenade item.ammo_himars_standard.name=227mm Guided Artillery Rocket Pod item.ammo_himars_standard_he.name=227mm Guided Artillery Rocket Pod (HE) +item.ammo_himars_standard_lava.name=227mm Guided Artillery Rocket Pod (Lava) item.ammo_himars_standard_mini_nuke.name=227mm Guided Artillery Rocket Pod (Mini Nuke) item.ammo_himars_standard_tb.name=227mm Guided Artillery Rocket Pod (Thermobaric) item.ammo_himars_standard_wp.name=227mm Guided Artillery Rocket Pod (WP) @@ -1621,6 +1759,7 @@ item.ams_focus_limiter.desc=Maximum performance for restriction field:$Standard item.ams_lens.name=Stabilizer Lens item.ams_muzzle.name=Ray-Emission Muzzle item.ams_muzzle.desc=...it emits an energy-beam thingy. +item.analysis_tool.name=Analysis Tool item.analyzer.name=Analyzer item.anchor_remote.name=Recall Device item.antiknock.name=Tetraethyllead Antiknock Agent @@ -1668,6 +1807,7 @@ item.balefire_and_steel.name=Balefire and Steel item.balefire_scrambled.name=Scrambled Balefire Egg item.ball_dynamite.name=Dynamite item.ball_fireclay.name=Fireclay +item.ball_resin.name=Latex item.ball_tatb.name=TATB item.ball_tnt.name=TNT item.ballistic_gauntlet.name=Ballistic Gauntlet @@ -1714,6 +1854,7 @@ item.battery_steam_large.name=Large Steam Powered Energy Storage Tank item.battery_su.name=SU-Battery item.battery_su_l.name=Large SU-Battery item.battery_trixite.name=Off-Brand Spark Battery +item.bdcl.name=BDCL item.beta.name=Beta Features item.big_sword.name=Great Sword item.billet_actinium.name=Actinium-227 Billet @@ -1796,6 +1937,7 @@ item.blades_steel.name=Steel Shredder Blades item.blades_titanium.name=Titanium Shredder Blades item.blowtorch.name=Blowtorch item.board_copper.name=Copper Panel +item.boat_rubber.name=Rubber Boat item.bobmazon_hidden.name=Hidden Catalog item.bobmazon_machines.name=Bobmazon: Blocks and Machines item.bobmazon_materials.name=Bobmazon: Materials @@ -1952,11 +2094,11 @@ item.cape_vertice.name=Lord Vertice's Cape item.cart.crate.name=Crate Cart item.cart.destroyer.name=Scrap Destroying Cart item.cart.empty.name=Minecart -item.casing_357.name=.357 Magnum Casing (x24) -item.casing_44.name=.44 Magnum Casing (x24) -item.casing_50.name=Large Caliber Casing (x12) -item.casing_9.name=Small Caliber Casing (x32) -item.casing_buckshot.name=Buckshot Casing (x12) +item.casing_357.name=.357 Magnum Casings +item.casing_44.name=.44 Magnum Casings +item.casing_50.name=Large Caliber Casings +item.casing_9.name=Small Caliber Casings +item.casing_buckshot.name=Buckshot Casings item.catalyst_clay.name=Clay Catalyst item.catalytic_converter.name=Catalytic Converter item.cbt_device.name=CBT Device @@ -2254,6 +2396,9 @@ item.door_bunker.name=Bunker Door item.door_metal.name=Metal Door item.door_office.name=Office Door item.dosimeter.name=Dosimeter +item.drax.name=Terra Drill +item.drax_mk2.name=Hardened Terra Drill +item.drax_mk3.name=Schrabidic Terra Drill item.drillbit_desh.name=Desh Drillbit item.drillbit_desh_diamond.name=Desh Drillbit (Diamond-Tipped) item.drillbit_ferro.name=Ferrouranium Drillbit @@ -2265,9 +2410,12 @@ item.drillbit_steel_diamond.name=Steel Drillbit (Diamond-Tipped) item.drillbit_tcalloy.name=Technetium Steel Drillbit item.drillbit_tcalloy_diamond.name=Technetium Steel Drillbit (Diamond-Tipped) item.drill_titanium.name=Titanium Drill -item.drax.name=Terra Drill -item.drax_mk2.name=Hardened Terra Drill -item.drax_mk3.name=Schrabidic Terra Drill +item.drone.patrol.name=Transport Drone +item.drone.patrol_chunkloading.name=Chunkloading Transport Drone +item.drone.patrol_express.name=Express Transport Drone +item.drone.patrol_express_chunkloading.name=Chunkloading Express Transport Drone +item.drone.request.name=Logistics Drone +item.drone_linker.name=Transport Drone Linker item.ducttape.name=Duct Tape item.dust.name=Dust item.dust.desc=I hate dust! @@ -2288,6 +2436,7 @@ item.early_explosive_lenses.desc=Assembly of 8 high-explosive lenses with an alu item.egg_balefire.name=Balefire Egg item.egg_balefire.desc=What kind of bird lays a radioactive egg? item.egg_balefire_shard.name=Balefire Shard +item.egg_glyphid.name=Glyphid Egg item.elec_axe.name=Electric Chainsaw item.elec_pickaxe.name=Impact Drill item.elec_shovel.name=Spiral Drill @@ -2295,7 +2444,13 @@ item.elec_sword.name=Stunstick item.energy_core.name=Makeshift Energy Core item.entanglement_kit.name=Entanglement Kit item.entanglement_kit.desc=Teleporter crafting item.$Enables dimension-shifting via a$beryllium-enhanced resource scanner. +item.envsuit_boots.name=M1TTY Environment Suit Boots +item.envsuit_helmet.name=M1TTY Environment Suit Helmet +item.envsuit_legs.name=M1TTY Environment Suit Leggings +item.envsuit_plate.name=M1TTY Environment Suit Chestplate item.euphemium_boots.name=Euphemium Boots +item.euphemium_capacitor.name=Euphemium Capacitor +item.euphemium_capacitor.desc=Permits passive dispersion of accumulated positive energy. item.euphemium_helmet.name=Euphemium Helmet item.euphemium_kit.name=Euphemium Kit item.euphemium_legs.name=Euphemium Leggings @@ -2399,6 +2554,7 @@ item.gear_large.name=Large Gear item.gear_large_steel.name=Large Steel Gear item.geiger_counter.name=Handheld Geiger Counter item.gem_alexandrite.name=Alexandrite +item.gem_sodalite.name=Sodalite item.gem_tantalium.name=Tantalium Polycrystal item.gem_tantalium.desc='Tantalum' item.gem_tantalium.desc.P11=AKA Tantalum. @@ -2407,11 +2563,14 @@ item.generator_front.name=Generator Front item.generator_steel.name=Generator Body item.glitch.name=Glitch item.glowing_stew.name=Glowing Mushroom Stew +item.glyphid_meat.name=Glyphid Meat +item.glyphid_meat_grilled.name=Grilled Glyphid Meat item.goggles.name=Protection Goggles item.grenade_aschrab.name=Tossable Antischrabidium Cell item.grenade_black_hole.name=Black Hole Grenade item.grenade_breach.name=Breaching Grenade item.grenade_burst.name=Digger Grenade +item.grenate_cats.name=Grenade of Cats item.grenade_cloud.name=Jar of Cloud item.grenade_cluster.name=Cluster Bomb item.grenade_electric.name=Lightning Bomb @@ -2456,6 +2615,7 @@ item.gun_avenger.name=CZ57 Avenger Minigun item.gun_b92.name=§9B92 Energy Pistol§r item.gun_b92_ammo.name=§9B92 Energy Cell§r item.gun_b93.name=§cB93 Energy Mod§r +item.gun_benelli.name=Benelli Autoshotgun (Drum Mod) item.gun_bf.name=BEL item.gun_bf_ammo.name=Balefire Shell item.gun_bio_revolver.name=Atlas @@ -2469,6 +2629,9 @@ item.gun_calamity.name=Buzzsaw item.gun_calamity_ammo.name=.50 BMG Round (LEGACY) item.gun_calamity_dual.name=Saddle Gun item.gun_chemthrower.name=Chemthrower +item.gun_coilgun.name=Coilgun +item.gun_congolake.name=Congo Lake +item.gun_cryocannon.name=Cryo Cannon item.gun_cryolator.name=The Cryolator item.gun_cryolator_ammo.name=Cryo Cell item.gun_dampfmaschine.name=Totally Not a Joke Weapon @@ -2562,6 +2725,7 @@ item.gun_super_shotgun.name=Super Shotgun item.gun_super_shotgun.desc=It's super broken! item.gun_supershotgun.name=Super Shotgun item.gun_thompson.name=Thompson Submachine Gun +item.gun_uac_pistol.name=UAC .45 Pistol item.gun_uboinik.name=Uboinik item.gun_uboinik_ammo.name=12x70 Buckshot (LEGACY) item.gun_uzi.name=IMI Uzi @@ -2600,6 +2764,7 @@ item.heart_booster.name=Heart Booster item.heart_container.name=Heart Container item.heart_fab.name=Fab Heart item.heart_piece.name=Heart Piece +item.heavy_component.name=Heavy %s Component item.hev_battery.name=Suit Battery item.hev_boots.name=HEV Mark IV Boots item.hev_plate.name=HEV Mark IV Chestplate @@ -2640,12 +2805,14 @@ item.ingot_au198.name=Gold-198 Ingot item.ingot_australium.name=Australium Ingot item.ingot_bakelite.name=Bakelite Bar item.ingot_beryllium.name=Beryllium Ingot +item.ingot_biorubber.name=Latex Bar item.ingot_bismuth.name=Bismuth Ingot item.ingot_boron.name=Boron Ingot item.ingot_c4.name=Bar of Composition C-4 item.ingot_cadmium.name=Cadmium Ingot item.ingot_calcium.name=Calcium Ingot item.ingot_cdalloy.name=Cadmium Steel Ingot +item.ingot_cft.name=Crystalline Fullerite item.ingot_chainsteel.name=Heavy Chainsteel item.ingot_co60.name=Cobalt-60 Ingot item.ingot_cobalt.name=Cobalt Ingot @@ -2848,7 +3015,7 @@ item.mike_kit.name=Ivy Mike Kit item.mirror_tool.name=Mirror Adjustment Tool item.mirror_tool.linked=Alignment position set! item.mirror_tool.desc=Right-click boiler to memorize the position.$Click on mirrors to turn them towards the boiler. -item.missile_anti_ballistic.name=Anti Ballistic Missile +item.missile_anti_ballistic.name=Anti-Ballistic Missile item.missile_assembly.name=Small Missile Assembly item.missile_bhole.name=Black Hole Missile item.missile_burst.name=Spare Missile @@ -2858,6 +3025,7 @@ item.missile_carrier.name=HTR-01 Carrier Rocket item.missile_cluster.name=Cluster Missile item.missile_cluster_strong.name=Strong Cluster Missile item.missile_custom.name=Custom Missile +item.missile_decoy.name=Decoy Missile item.missile_doomsday.name=Doomsday Missile item.missile_drill.name=The Concrete Cracker item.missile_emp.name=EMP Missile @@ -2904,6 +3072,7 @@ item.mold_base.name=Blank Foundry Mold item.mold.name=Foundry Mold item.morning_glory.name=Morning Glory item.motor.name=Motor +item.motor_bismuth.name=Bismuth Motor item.motor_desh.name=Desh Motor item.mp_c_1.name=Tier 1 Missile Targeting Circuit item.mp_c_2.name=Tier 2 Missile Targeting Circuit @@ -3042,7 +3211,12 @@ item.mysteryshovel.name=Brittle Spade item.n2_charge.name=Large Explosive Charge item.neutrino_lens.name=Neutrino Lens item.neutron_reflector.name=Neutron Reflector +item.night_vision.name=Night Vision Goggles +item.night_vision.description.item=Grants you night vision (requires full electric set) +item.night_vision.description.in_armor=%s (grants night vision) item.niter.name=Niter +item.nitra.name=Nitra +item.nitra_small.name=Small Pile of Nitra item.no9.name=Mining Helmet item.nossy_hat.name=Fabulous Hat item.nothing.name=Nothing @@ -3140,12 +3314,18 @@ item.oil_tar.wax.name=Chlorinated Petroleum Wax item.oil_tar.wood.name=Wood Tar item.ore.asbestos=Asbestos item.ore.borax=Borax +item.ore.chlorocalcite=Chlorocalcite item.ore.copper=Copper +item.ore.fluorite=Fluorite item.ore.gold=Gold +item.ore.hematite=Hematite item.ore.iron=Iron +item.ore.malachite=Malachite item.ore.niobium=Niobium item.ore.titanium=Titanium item.ore.tungsten=Tungsten +item.ore.thorium232=Thorium +item.ore.uranium=Uranium item.ore_bedrock.name=%s Bedrock Ore item.ore_byproduct.b_aluminium.name=Crystalline Aluminium Fragment item.ore_byproduct.b_bismuth.name=Crystalline Bismuth Fragment @@ -3154,9 +3334,13 @@ item.ore_byproduct.b_copper.name=Crystalline Copper Fragment item.ore_byproduct.b_iron.name=Crystalline Iron Fragment item.ore_byproduct.b_lead.name=Crystalline Lead Fragment item.ore_byproduct.b_lithium.name=Crystalline Lithium Fragment +item.ore_byproduct.b_polonium.name=Crystalline Polonium Fragment +item.ore_byproduct.b_radium.name=Crystalline Radium Fragment item.ore_byproduct.b_silicon.name=Crystalline Silicon Fragment item.ore_byproduct.b_sulfur.name=Crystalline Sulfur Fragment +item.ore_byproduct.b_technetium.name=Crystalline Technetium Fragment item.ore_byproduct.b_titanium.name=Crystalline Titanium Fragment +item.ore_byproduct.b_uranium.name=Crystalline Uranium Fragment item.ore_centrifuged.name=Centrifuged %s Ore item.ore_cleaned.name=Cleaned %s Ore item.ore_deepcleaned.name=Deep Cleaned %s Ore @@ -3164,7 +3348,7 @@ item.ore_enriched.name=Enriched %s Ore item.ore_nitrated.name=Nitrated %s Ore item.ore_nitrocrystalline.name=Nitrocrystalline %s Ore item.ore_purified.name=Purified %s Ore -item.ore_raadcleaned.name=Radiation-Cleaned %s Ore +item.ore_radcleaned.name=Radiation-Cleaned %s Ore item.ore_seared.name=Seared %s Ore item.ore_separated.name=Separated %s Ore item.overfuse.name=Singularity Screwdriver @@ -3180,6 +3364,14 @@ item.padlock_unbreakable.name=Unbreakable Padlock item.pads_rubber.name=Rubber Pads item.pads_slime.name=Slime Pads item.pads_static.name=Static Pads +item.page_of_.page1.name=Page 1 +item.page_of_.page2.name=Page 2 +item.page_of_.page3.name=Page 3 +item.page_of_.page4.name=Page 4 +item.page_of_.page5.name=Page 5 +item.page_of_.page6.name=Page 6 +item.page_of_.page7.name=Page 7 +item.page_of_.page8.name=Page 8 item.pancake.name=Pancake made from Scrap Metal, Nails and Gem Dust item.part_beryllium.name=Box of Beryllium Dust item.part_carbon.name=Box of Carbon Dust @@ -3293,6 +3485,7 @@ item.plan_c.desc=Deadly item.plant_item.mustardwillow.name=Mustard Willow Leaf item.plant_item.rope.name=Rope item.plant_item.tobacco.name=Tobacco +item.plastic_bag.name=Plastic Bag item.plate_advanced_alloy.name=Advanced Alloy Plate item.plate_aluminium.name=Aluminium Plate item.plate_armor_ajr.name=Iron-Shod Armor Plating @@ -3328,13 +3521,21 @@ item.plate_saturnite.name=Saturnite Plate item.plate_schrabidium.name=Schrabidium Plate item.plate_steel.name=Steel Plate item.plate_titanium.name=Titanium Plate +item.plate_welded.name=Welded %s Plate item.polaroid.name=The Polaroid +item.pollution_detector.name=Pollution Detector item.powder_actinium.name=Actinium Powder item.powder_actinium_tiny.name=Tiny Pile of Actinium Powder item.powder_advanced_alloy.name=Advanced Alloy Powder item.powder_aluminium.name=Aluminium Powder item.powder_asbestos.name=Asbestos Powder item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r +item.powder_ash.coal.name=Coal Ash +item.powder_ash.fly.name=Fly Ash +item.powder_ash.fullerene.name=Fullerene +item.powder_ash.misc.name=Ash +item.powder_ash.soot.name=Fine Soot +item.powder_ash.wood.name=Wood Ash item.powder_astatine.name=Astatine Powder item.powder_at209.name=Astatine-209 Powder item.powder_au198.name=Gold-198 Powder @@ -3352,6 +3553,7 @@ item.powder_caesium.name=Caesium Powder item.powder_calcium.name=Calcium Powder item.powder_cerium.name=Cerium Powder item.powder_cerium_tiny.name=Tiny Pile of Cerium Powder +item.powder_chlorocalcite.name=Chlorocalcite item.powder_chlorophyte.name=Chlorophyte Powder item.powder_cloud.name=Cloud Residue item.powder_co60.name=Cobalt-60 Powder @@ -3419,6 +3621,7 @@ item.powder_sawdust.name=Sawdust item.powder_schrabidate.name=Ferric Schrabidate Powder item.powder_schrabidium.name=Schrabidium Powder item.powder_semtex_mix.name=Semtex Blend +item.powder_sodium.name=Sodium item.powder_spark_mix.name=Spark Blend item.powder_sr90.name=Strontium-90 Powder item.powder_sr90_tiny.name=Tiny Pile of Strontium-90 Powder @@ -3452,7 +3655,53 @@ item.primer_buckshot.name=Buckshot Primer (x12) item.protection_charm.name=Charm of Protection item.prototype_kit.name=Prototype Kit item.pudding.name=Pudding +item.pwr_fuel.bfb_am_mix.name=Fuel Grade Americium PWR BFB Rod +item.pwr_fuel.bfb_pu241.name=Plutonium-241 PWR BFB Rod +item.pwr_fuel.hea242.name=HEA-242 PWR Fuel Rod +item.pwr_fuel.hen237.name=HEN-237 PWR Fuel Rod +item.pwr_fuel.hep239.name=HEP-239 PWR Fuel Rod +item.pwr_fuel.hep241.name=HEP-241 PWR Fuel Rod +item.pwr_fuel.hes326.name=HES-326 PWR Fuel Rod +item.pwr_fuel.hes327.name=HES-327 PWR Fuel Rod +item.pwr_fuel.heu233.name=HEU-233 PWR Fuel Rod +item.pwr_fuel.heu235.name=HEU-235 PWR Fuel Rod +item.pwr_fuel.mea.name=MEA PWR Fuel Rod +item.pwr_fuel.men.name=MEN PWR Fuel Rod +item.pwr_fuel.mep.name=MEP PWR Fuel Rod +item.pwr_fuel.meu.name=MEU PWR Fuel Rod +item.pwr_fuel.mox.name=MOX PWR Fuel Rod +item.pwr_fuel_depleted.bfb_am_mix.name=Depleted Fuel Grade Americium PWR ZFB Rod +item.pwr_fuel_depleted.bfb_pu241.name=Depleted Plutonium-241 PWR ZFB Rod +item.pwr_fuel_depleted.hea242.name=Depleted HEA-242 PWR Fuel Rod +item.pwr_fuel_depleted.hen237.name=Depleted HEN-237 PWR Fuel Rod +item.pwr_fuel_depleted.hep239.name=Depleted HEP-239 PWR Fuel Rod +item.pwr_fuel_depleted.hep241.name=Depleted HEP-241 PWR Fuel Rod +item.pwr_fuel_depleted.hes326.name=Depleted HES-326 PWR Fuel Rod +item.pwr_fuel_depleted.hes327.name=Depleted HES-327 PWR Fuel Rod +item.pwr_fuel_depleted.heu233.name=Depleted HEU-233 PWR Fuel Rod +item.pwr_fuel_depleted.heu235.name=Depleted HEU-235 PWR Fuel Rod +item.pwr_fuel_depleted.mea.name=Depleted MEA PWR Fuel Rod +item.pwr_fuel_depleted.men.name=Depleted MEN PWR Fuel Rod +item.pwr_fuel_depleted.mep.name=Depleted MEP PWR Fuel Rod +item.pwr_fuel_depleted.meu.name=Depleted MEU PWR Fuel Rod +item.pwr_fuel_depleted.mox.name=Depleted MOX PWR Fuel Rod +item.pwr_fuel_hot.bfb_am_mix.name=Hot Fuel Grade Americium PWR ZFB Rod +item.pwr_fuel_hot.bfb_pu241.name=Hot Plutonium-241 PWR ZFB Rod +item.pwr_fuel_hot.hea242.name=Hot HEA-242 PWR Fuel Rod +item.pwr_fuel_hot.hen237.name=Hot HEN-237 PWR Fuel Rod +item.pwr_fuel_hot.hep239.name=Hot HEP-239 PWR Fuel Rod +item.pwr_fuel_hot.hep241.name=Hot HEP-241 PWR Fuel Rod +item.pwr_fuel_hot.hes326.name=Hot HES-326 PWR Fuel Rod +item.pwr_fuel_hot.hes327.name=Hot HES-327 PWR Fuel Rod +item.pwr_fuel_hot.heu233.name=Hot HEU-233 PWR Fuel Rod +item.pwr_fuel_hot.heu235.name=Hot HEU-235 PWR Fuel Rod +item.pwr_fuel_hot.mea.name=Hot MEA PWR Fuel Rod +item.pwr_fuel_hot.men.name=Hot MEN PWR Fuel Rod +item.pwr_fuel_hot.mep.name=Hot MEP PWR Fuel Rod +item.pwr_fuel_hot.meu.name=Hot MEU PWR Fuel Rod +item.pwr_fuel_hot.mox.name=Hot MOX PWR Fuel Rod item.quartz_plutonium.name=Plutonic Quartz +item.radar_linker.name=Radar Linker item.radaway.name=RadAway item.radaway_flush.name=Elite RadAway item.radaway_strong.name=Strong RadAway @@ -3805,6 +4054,9 @@ item.singularity_super_heated.name=Superheated Resonating Singularity item.siox.name=SiOX Cancer Medication item.siox.desc=Reverses mesothelioma with the power of Asbestos! item.siren_track.name=Siren Track +item.sliding_blast_door_skin.0.name=Sliding Blast Door Skin: Default +item.sliding_blast_door_skin.1.name=Sliding Blast Door Skin: Variant 1 +item.sliding_blast_door_skin.2.name=Sliding Blast Door Skin: Variant 2 item.smashing_hammer.name=Smashing Hammer item.solid_fuel.name=Solid Fuel item.solid_fuel_bf.name=Solid Fuel (Balefire) @@ -3827,10 +4079,22 @@ item.stamp_357.name=.357 Magnum Stamp item.stamp_44.name=.44 Magnum Stamp item.stamp_50.name=Large Caliber Stamp item.stamp_9.name=Small Caliber Stamp +item.stamp_book.printing1.name=Printing Press Stamp (Part 1) +item.stamp_book.printing2.name=Printing Press Stamp (Part 2) +item.stamp_book.printing3.name=Printing Press Stamp (Part 3) +item.stamp_book.printing4.name=Printing Press Stamp (Part 4) +item.stamp_book.printing5.name=Printing Press Stamp (Part 5) +item.stamp_book.printing6.name=Printing Press Stamp (Part 6) +item.stamp_book.printing7.name=Printing Press Stamp (Part 7) +item.stamp_book.printing8.name=Printing Press Stamp (Part 8) item.stamp_desh_circuit.name=Circuit Stamp (Desh) item.stamp_desh_flat.name=Flat Stamp (Desh) item.stamp_desh_plate.name=Plate Stamp (Desh) item.stamp_desh_wire.name=Wire Stamp (Desh) +item.stamp_desh_357.name=.357 Magnum Stamp (Desh) +item.stamp_desh_44.name=.44 Magnum Stamp (Desh) +item.stamp_desh_50.name=Large Caliber Stamp (Desh) +item.stamp_desh_9.name=Small Caliber Stamp (Desh) item.stamp_iron_circuit.name=Circuit Stamp (Iron) item.stamp_iron_flat.name=Flat Stamp (Iron) item.stamp_iron_plate.name=Plate Stamp (Iron) @@ -3877,6 +4141,7 @@ item.steel_shovel.name=Steel Shovel item.steel_sword.name=Steel Sword item.stick_c4.name=Stick of C-4 item.stick_dynamite.name=Stick of Dynamite +item.stick_dynamite_fishing.name=Stick of Fishing Dynamite item.stick_semtex.name=Stick of Semtex item.stick_tnt.name=Stick of TNT item.stopsign.name=Stop Sign Battle Axe @@ -3939,6 +4204,11 @@ item.titanium_plate.name=Titanium Chestplate item.titanium_shovel.name=Titanium Shovel item.titanium_sword.name=Titanium Sword item.toothpicks.name=Toothpicks +item.train.cargo_tram.name=Electric Flat Bed Tram +item.trenchmaster_boots.name=Trenchmaster's Boots +item.trenchmaster_helmet.name=Trenchmaster's Helmet +item.trenchmaster_legs.name=Trenchmaster's Leggings +item.trenchmaster_plate.name=Trenchmaster's Chestplate item.trinitite.name=Trinitite item.tritium_deuterium_cake.name=Tritium-Deuterium-Cake item.tritium_deuterium_cake.desc=Not actual cake, but great$universal fusion fuel! @@ -4000,6 +4270,7 @@ item.volcanic_pickaxe.name=Molten Pickaxe item.wand_d.name=Debug Wand item.wand_k.name=Construction Wand item.wand_s.name=Structure Wand +item.structure_custommachine.name=Custom Machine Structure Output Wand item.warhead_buster_large.name=Large Bunker Buster Warhead item.warhead_buster_medium.name=Medium Bunker Buster Warhead item.warhead_buster_small.name=Small Bunker Buster Warhead @@ -4074,6 +4345,7 @@ item.wings_murk.name=Murky Wings item.wire_advanced_alloy.name=Super Conductor item.wire_aluminium.name=Aluminium Wire item.wire_copper.name=Copper Wire +item.wire_dense.name=Dense %s Wire item.wire_gold.name=Gold Wire item.wire_magnetized_tungsten.name=4000K High Temperature Super Conductor item.wire_red_copper.name=Red Copper Wire @@ -4112,10 +4384,28 @@ potion.hbm_stability=Stability potion.hbm_taint=Tainted potion.hbm_telekinesis=! ! ! +radar.clearMap=Clear Map radar.detectMissiles=Detect Missiles radar.detectPlayers=Detect Players +radar.detectShells=Detect Shells radar.redMode=Redstone Mode$On: Redstone output based on range$Off: Redstone output based on tier +radar.showMap=Show Map radar.smartMode=Smart Mode$Redstone output ignores ascending missiles +radar.toggleGui=Switch View + +radar.target.abm=Anti-Ballsitic Missile +radar.target.custom10=Size 10 Custom Missile +radar.target.custom1015=Size 10/15 Custom Missile +radar.target.custom15=Size 15 Custom Missile +radar.target.custom1520=Size 15/20 Custom Missile +radar.target.custom20=Size 20 Custom Missile +radar.target.doomsday=Doomsday Missile +radar.target.shuttle=Reliant Robin Space Shuttle +radar.target.tier0=Tier 0 Missile +radar.target.tier1=Tier 1 Missile +radar.target.tier2=Tier 2 Missile +radar.target.tier3=Tier 3 Missile +radar.target.tier4=Tier 4 Missile rbmk.heat=Column temperature: %s rbmk.boiler.water=Feedwater: %s / %s @@ -4161,6 +4451,8 @@ shape.plate=Plate shape.plateTriple=Cast Plate shape.stamp=Press Stamp shape.wire=Wire +shape.wireDense=Dense Wire +shape.wiresDense=Dense Wires soundCategory.ntmMachines=NTM Machines @@ -4220,6 +4512,7 @@ tile.block_beryllium.name=Block of Beryllium tile.block_bismuth.name=Block of Bismuth tile.block_boron.name=Block of Boron tile.block_c4.name=Block of C-4 +tile.block_cadmium.name=Block of Cadmium tile.block_cap_fritz.name=Block of Fritz Cola Bottle Caps tile.block_cap_korl.name=Block of Korl Bottle Caps tile.block_cap_nuka.name=Block of Nuka Cola Bottle Caps @@ -4228,6 +4521,7 @@ tile.block_cap_rad.name=Block of S~Cola RAD Bottle Caps tile.block_cap_sparkle.name=Block of S~Cola Bottle Caps tile.block_cap_star.name=Block of Sunset Sarsaparilla Star Caps tile.block_cap_sunset.name=Block of Sunset Sarsaparilla Bottle Caps +tile.block_cdalloy.name=Block of Cadmium Steel tile.block_cobalt.name=Block of Cobalt tile.block_coke.coal.name=Block of Coal Coke tile.block_coke.lignite.name=Block of Lignite Coke @@ -4299,6 +4593,7 @@ tile.block_starmetal.name=§9Block of Starmetal§r tile.block_steel.name=Block of Steel tile.block_sulfur.name=Block of Sulfur tile.block_tantalium.name=Block of Tantalium +tile.block_tcalloy.name=Block of Technetium Steel tile.block_thorium.name=Block of Thorium-232 tile.block_thorium_fuel.name=Block of Thorium Fuel tile.block_titanium.name=Block of Titanium @@ -4372,6 +4667,14 @@ tile.c4.name=C-4 tile.cable_detector.name=Redstone Power Switch tile.cable_diode.name=Red Copper Diode tile.cable_switch.name=Power Switch +tile.capacitor_bus.name=Capacitor Bus +tile.capacitor_bus.desc=Output block for capacitors$Can be chained up in a straight line +tile.capacitor_copper.name=Copper Capacitor +tile.capacitor_gold.name=Golden Capacitor +tile.capacitor_niobium.name=Niobium Capacitor +tile.capacitor_schrabidate.name=Schrabidate Capacitor +tile.capacitor_tantalium.name=Tantalium Capacitor +tile.capacitor.desc=Input: Top$Output: Bottom, via Capacitor Bus tile.charge_c4.name=Demolition Charge tile.charge_dynamite.name=Time Bomb tile.charge_miner.name=Timed Mining Charge @@ -4379,6 +4682,10 @@ tile.charge_semtex.name=Semtex Mining Charge tile.charger.name=Charging Station tile.cheater_virus.name=Gelid Euphemium tile.cheater_virus_seed.name=Unstable Euphemium Schrabide Block +tile.chimney_brick.name=Smokestack +tile.chimney_brick.desc=Connect using exhaust pipes to polluting machines$Reduces pollution emission by 75%% +tile.chimney_industrial.name=Industrial Smokestack +tile.chimney_industrial.desc=Connect using exhaust pipes to polluting machines$Reduces pollution emission by 90%% tile.chlorine_gas.name=Chlorine Gas tile.cluster_aluminium.name=Aluminium Ore Cluster tile.cluster_copper.name=Copper Ore Cluster @@ -4387,6 +4694,31 @@ tile.cluster_depth_titanium.name=Depth Titanium Ore Cluster tile.cluster_depth_tungsten.name=Depth Tungsten Ore Cluster tile.cluster_iron.name=Iron Ore Cluster tile.cluster_titanium.name=Titanium Ore Cluster +tile.custom_machine_anchor.name=Custom Machine Structure Positioning Anchor +tile.cm_block.alloy.name=Advanced Alloy Machine Casing +tile.cm_block.desh.name=Desh Machine Casing +tile.cm_block.steel.name=Steel Machine Casing +tile.cm_block.tcalloy.name=Technetium Steel Machine Casing +tile.cm_circuit.aluminium.name=Tier 1 Circuit Block +tile.cm_circuit.copper.name=Tier 2 Circuit Block +tile.cm_circuit.gold.name=Tier 4 Circuit Block +tile.cm_circuit.red_copper.name=Tier 3 Circuit Block +tile.cm_circuit.schrabidium.name=Tier 5 Circuit Block +tile.cm_engine.bismuth.name=Bismuth Motor Block +tile.cm_engine.desh.name=Desh Motor Block +tile.cm_engine.standard.name=Motor Block +tile.cm_port.alloy.name=Advanced Alloy Port +tile.cm_port.desh.name=Desh Port +tile.cm_port.steel.name=Steel Port +tile.cm_port.tcalloy.name=Technetium Steel Port +tile.cm_sheet.alloy.name=Advanced Alloy Sheet +tile.cm_sheet.desh.name=Desh Sheet +tile.cm_sheet.steel.name=Steel Sheet +tile.cm_sheet.tcalloy.name=Technetium Steel Sheet +tile.cm_tank.alloy.name=Advanced Alloy Tank +tile.cm_tank.desh.name=Desh Tank +tile.cm_tank.steel.name=Steel Tank +tile.cm_tank.tcalloy.name=Technetium Steel Tank tile.cmb_brick.name=CMB Steel Tile tile.cmb_brick_reinforced.name=Reinforced CMB Bricks tile.compact_launcher.name=Compact Launch Pad @@ -4414,6 +4746,12 @@ tile.concrete_colored.red.name=Red Concrete tile.concrete_colored.silver.name=Light Gray Concrete tile.concrete_colored.white.name=White Concrete tile.concrete_colored.yellow.name=Yellow Concrete +tile.concrete_colored_ext.hazard.name=Builder's Choice Concrete - Hazard Stripe +tile.concrete_colored_ext.indigo.name=Builder's Choice Concrete - Deep Indigo +tile.concrete_colored_ext.machine.name=Builder's Choice Concrete - Industrial Tinge +tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Industrial Stripe +tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - Manly Pink +tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysterious Purple tile.concrete_pillar.name=Rebar Reinforced Concrete Pillar tile.concrete_slab.concrete.name=Concrete Tile Slab tile.concrete_slab.concrete_asbestos.name=Asbestos Concrete Slab @@ -4426,18 +4764,32 @@ tile.concrete_stairs.name=Concrete Tile Stairs tile.concrete_super.name=Über Concrete tile.concrete_super_broken.name=Moldy Debris tile.conveyor.name=Conveyor Belt +tile.conveyor.desc=Moves items dropped on it$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend tile.conveyor_chute.name=Conveyor Chute +tile.conveyor_chute.desc=Moves items down$The bottom-most chute will act like a regular conveyor belt tile.conveyor_double.name=Double-Lane Conveyor Belt +tile.conveyor_double.desc=Moves items dropped on it$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend +tile.conveyor_express.name=Express Conveyor Belt +tile.conveyor_express.desc=Moves items dropped on it very fast$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend tile.conveyor_lift.name=Conveyor Chain Lift +tile.conveyor_lift.desc=Moves items up$Requires at least two blocks on top of each other to work properly tile.conveyor_triple.name=Triple-Lane Conveyor Belt +tile.conveyor_triple.desc=Moves items dropped on it$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend tile.corium_block.name=Corium tile.crane_boxer.name=Conveyor Boxer +tile.crane_boxer.desc=Loads a configurable amount of stacks into boxes which move along conveyor belts$Right-click with screwdriver to set input side$Shift-click with screwdriver to set the output side$Click twice to set the opposite side tile.crane_extractor.name=Conveyor Ejector +tile.crane_extractor.desc=Takes items from inventories and places them on covneyor belts$Has up to 9 filter slots with black and whitelist$Right-click with screwdriver to set output side$Shift-click with screwdriver to set the input side$Click twice to set the opposite side tile.crane_grabber.name=Conveyor Grabber +tile.crane_grabber.desc=Takes items from passing conveyors and places them into containers$Will only take items from the closest lane$Has up to 9 filter slots with black and whitelist$Right-click with screwdriver to set input side$Shift-click with screwdriver to set the output side$Click twice to set the opposite side tile.crane_inserter.name=Conveyor Inserter +tile.crane_inserter.desc=Accepts items from conveyors and places them into containers$Right-click with screwdriver to set input side$Shift-click with screwdriver to set the output side$Click twice to set the opposite side tile.crane_router.name=Conveyor Sorter +tile.crane_router.desc=Sorts item based on defined criteria$Sides can be defined as blacklist, whitelist or wildcard$Wildcard sides are only chosen if no other filter matches tile.crane_splitter.name=Conveyor Splitter +tile.crane_splitter.desc=Splits items and stacks evenly onto two conveyor belts$Is a conveyor belt itself, so it can directly input into an inserter or sorter tile.crane_unboxer.name=Conveyor Unboxer +tile.crane_unboxer.desc=Receives boxes and extracts their contents$Right-click with screwdriver to set output side$Shift-click with screwdriver to set the input side$Click twice to set the opposite side tile.crashed_bomb.name=Dud tile.crate.name=Supply Crate tile.crate_ammo.name=Starmetal Crate @@ -4449,6 +4801,7 @@ tile.crate_lead.name=Hazmat Crate tile.crate_metal.name=Machine Crate tile.crate_red.name=Red Crate tile.crate_steel.name=Steel Crate +tile.crate_template.name=Template Crate tile.crate_tungsten.name=Tungsten Crate tile.crate_weapon.name=Weapon Crate tile.crystal_hardened.name=Hardened Dark Crystal @@ -4459,7 +4812,6 @@ tile.deco_asbestos.name=Asbestos Roof tile.deco_beryllium.name=Beryllium Deco Block tile.deco_computer.ibm_300pl.name=IBM Personal Computer 300PL tile.deco_emitter.name=Deco Light Emitter -tile.part_emitter.name=Deco Particle Emitter tile.deco_lead.name=Lead Deco Block tile.deco_rbmk.name=RBMK Deco Block tile.deco_rbmk_smooth.name=Smooth RBMK Deco Block @@ -4509,6 +4861,13 @@ tile.dfc_stabilizer.name=DFC Stabilizer tile.dirt_dead.name=Dead Dirt tile.dirt_oily.name=Oily Dirt tile.drill_pipe.name=Drill Pipe +tile.drone_crate.name=Transport Drone Crate +tile.drone_crate_provider.name=Logistics Provider Crate +tile.drone_crate_requester.name=Logistics Requester Crate +tile.drone_dock.name=Logistics Drone Dock +tile.drone_waypoint.name=Transport Drone Waypoint +tile.drone_waypoint.desc=Waypoint for transport drones$Use a transport drone linker to set the path$Click on each waypoint and crate in sequence to create the path,$then shift-click to clear the saved position$Right-click or shift-click the waypoint to change the waypoint's offset +tile.drone_waypoint_request.name=Logistics Drone Waypoint tile.door_bunker.name=Bunker Door tile.door_metal.name=Metal Door tile.door_office.name=Office Door @@ -4531,6 +4890,7 @@ tile.factory_titanium_furnace.name=Basic Factory Access Hatch tile.factory_titanium_hull.name=Factory Block tile.fallout.name=Fallout tile.fan.name=Fan +tile.fan.desc=Activates using redstone$Will push entities up to 10 blocks$Right-click with screwdriver to flip tile.fence_metal.name=Chainlink Fence tile.field_disturber.name=High Energy Field Jammer tile.filing_cabinet.green.name=Dusty Filing Cabinet @@ -4546,17 +4906,21 @@ tile.flame_war.name=Flame War in a Box tile.float_bomb.name=Levitation Bomb tile.fluid_duct.name=Universal Fluid Duct (Deprecated) tile.fluid_duct_box.name=Universal Fluid Duct (Boxduct) +tile.fluid_duct_exhaust.name=Exhaust Pipe tile.fluid_duct_gauge.name=Flow Gauge Pipe tile.fluid_duct_gauge.desc=Pipe that displays how much fluid$moves within the network per tick.$Split networks connected by barrels$or tanks are considered as one shared network. tile.fluid_duct_neo.name=Universal Fluid Duct tile.fluid_duct_paintable.name=Paintable Coated Universal Fluid Duct tile.fluid_duct_solid.name=Coated Universal Fluid Duct (Deprecated) +tile.fluid_switch.name=Redstone Fluid Valve +tile.fluid_valve.name=Fluid Valve tile.foam_layer.name=Foam layer tile.foundry_basin.name=Foundry Basin tile.foundry_channel.name=Foundry Channel tile.foundry_tank.name=Foundry Storage Basin tile.foundry_mold.name=Shallow Foundry Basin tile.foundry_outlet.name=Foundry Outlet +tile.foundry_slagtap.name=Foundry Slag Outlet tile.fraction_spacer.name=Fractioning Tower Separator tile.frozen_dirt.name=Frozen Dirt tile.frozen_grass.name=Frozen Grass @@ -4570,6 +4934,7 @@ tile.furnace_steel.name=Steel Furnace tile.furnace_steel.desc=Very large furnace that can provide bonus items$when smelting ores. Requires external heat source.$Heat transfer rate: ΔT*0.05 TU/t$(Δ means difference and T means temperature) tile.fusion_center.name=Central Magnet Piece tile.fusion_conductor.name=Superconducting Magnet +tile.fusion_conductor_welded.name=Superconducting Magnet (Welded) tile.fusion_core.name=Fusion Reactor Control tile.fusion_hatch.name=Duct Deco Block tile.fusion_heater.name=Plasma Heater Component @@ -4601,6 +4966,8 @@ tile.glass_polonium.name=Polonium Glass tile.glass_quartz.name=Quartz Glass tile.glass_trinitite.name=Trinity Glass tile.glass_uranium.name=Uranium Glass +tile.glyphid_base.name=Glyphid Hive Block +tile.glyphid_spawner.name=Glyphid Hive Spawner tile.gneiss_brick.name=Schist Brick tile.gneiss_chiseled.name=Chiseled Schist tile.gneiss_tile.name=Schist Tile @@ -4618,6 +4985,10 @@ tile.hadron_coil_neodymium.name=Dense Neodymium Coil tile.hadron_coil_schrabidate.name=Dense Schrabidate Coil tile.hadron_coil_schrabidium.name=Dense Schrabidic Coil tile.hadron_coil_starmetal.name=Dense Starmetal Coil +tile.hadron_cooler.name=Particle Accelerator Cooling Unit +tile.hadron_cooler.desc=Cooling power: 10$Overcooling threshold: 10$Cooling bonus: +10%%$Overcooling penalty: -25%% +tile.hadron_cooler_mk2.name=Particle Accelerator Cooling Unit - The Palindrome Special +tile.hadron_cooler_mk2.desc=Cooling power: 5$Efficiency function: 2-(cooling-15)²/225$Maximum penalty: -90%% tile.hadron_core.name=Particle Accelerator Core Component tile.hadron_diode.name=Schottky Particle Diode tile.hadron_plating.name=Particle Accelerator Plating @@ -4661,6 +5032,8 @@ tile.lamp_tritium_blue_off.name=Blue Tritium Lamp tile.lamp_tritium_blue_on.name=Blue Tritium Lamp tile.lamp_tritium_green_off.name=Green Tritium Lamp tile.lamp_tritium_green_on.name=Green Tritium Lamp +tile.lantern.name=Lantern +tile.lantern_behemoth.name=Old Lantern tile.launch_pad.name=Missile Launch Pad tile.launch_table.name=Large Launch Pad tile.leaves_layer.name=Fallen Leaves @@ -4668,11 +5041,15 @@ tile.lox_barrel.name=LOX Barrel tile.machine_amgen.name=Ambience Radiation Generator tile.machine_arc_furnace_off.name=Arc Furnace tile.machine_arc_furnace_on.name=Arc Furnace +tile.machine_arc_welder.name=Arc Welder tile.machine_armor_table.name=Armor Modification Table +tile.machine_ashpit.name=Ashpit +tile.machine_ashpit.desc=Collects ashes from fireboxes and heating ovens tile.machine_assembler.name=Assembly Machine tile.machine_assemfac.name=Assembly Factory tile.machine_autocrafter.name=Automatic Crafting Table tile.machine_autosaw.name=Automatic Buzz Saw +tile.machine_autosaw.desc=Cuts down nearby plants, re-plants trees$Accepts:$-Wood oil$-Ethanol$-Fish oil$-Heavy oil tile.machine_bat9000.name=Big-Ass Tank 9000 tile.machine_battery.name=Energy Storage Block tile.machine_battery_potato.name=Potato Battery Block @@ -4695,10 +5072,14 @@ tile.machine_coker.name=Coker Unit tile.machine_coker.desc=Cokes oil, creating fluid byproducts.$Requires external heat source.$Heat transfer rate: ΔT*0.025 TU/t tile.machine_combine_factory.name=CMB Steel Furnace tile.machine_combustion_engine.name=Industrial Combustion Engine +tile.machine_compressor.name=Compressor tile.machine_condenser.name=Steam Condenser +tile.machine_condenser_powered.name=High-Power Steam Condenser tile.machine_controller.name=Reactor Remote Control Block tile.machine_converter_he_rf.name=HE to RF Converter tile.machine_converter_rf_he.name=RF to HE Converter +tile.machine_conveyor_press.name=Conveyor Press +tile.machine_conveyor_press.desc=Conveyor moves left to right$Right click stamp to install$Use screwdriver to remove stamp tile.machine_crucible.name=Crucible tile.machine_crystallizer.name=Ore Acidizer tile.machine_cyclotron.name=Cyclotron @@ -4715,8 +5096,10 @@ tile.machine_dineutronium_battery.name=Spark Energy Storage Block tile.machine_drill.name=Automatic Mining Drill tile.machine_electric_furnace_off.name=Electric Furnace tile.machine_electric_furnace_on.name=Electric Furnace +tile.machine_electrolyser.name=Electrolysis Machine tile.machine_epress.name=Electric Press tile.machine_excavator.name=Large Mining Drill +tile.machine_exposure_chamber.name=Exposure Chamber tile.machine_fel.name=FEL tile.machine_fensu.name=FEnSU tile.machine_flare.name=Flare Stack @@ -4728,6 +5111,8 @@ tile.machine_gascent.name=Gas Centrifuge tile.machine_generator.name=Nuclear Reactor (Old) tile.machine_geo.name=Geothermal Electric Generator tile.machine_hephaestus.name=Geothermal Heat Exchanger +tile.machine_industrial_boiler.name=Industrial Boiler +tile.machine_industrial_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t$Cannot explode tile.machine_industrial_generator.name=Industrial Generator tile.machine_keyforge.name=Locksmith Table tile.machine_large_turbine.name=Industrial Steam Turbine @@ -4782,6 +5167,8 @@ tile.machine_steam_engine.name=Steam Engine tile.machine_steam_engine.desc=Efficiency: 85%% tile.machine_stirling.name=Stirling Engine tile.machine_stirling.desc=Turns heat into energy. Requires external heat source.$Heat transfer rate: T*0.1 TU/t$Max intake: 300 TU/t$Efficiency: 50%% +tile.machine_stirling_creative.name=Creative Stirling Engine +tile.machine_stirling_creative.desc=Turns heat into energy. Requires external heat source.$Heat transfer rate: T*0.1 TU/t$Infinite intake/t$Efficiency: 100%% tile.machine_stirling_steel.name=Heavy Stirling Engine tile.machine_stirling_steel.desc=Turns heat into energy. Requires external heat source.$Uses a much heavier gear to support higher temperatures.$Heat transfer rate: T*0.1 TU/t$Max intake: 1500 TU/t$Efficiency: 50%% tile.machine_storage_drum.name=Nuclear Waste Disposal Drum @@ -4800,6 +5187,8 @@ tile.machine_turbofan.name=Turbofan tile.machine_uf6_tank.name=Uranium Hexafluoride Tank tile.machine_vacuum_distill.name=Vacuum Refinery tile.machine_waste_drum.name=Spent Fuel Pool Drum +tile.machine_wood_burner.name=Wood-Burning Generator +tile.machine_wood_burner.desc=Generates 100HE/t when burning items$Collects ashes$Can burn fluids at 50%% efficiency at 40mB/s tile.machine_well.name=Oil Derrick tile.machine_zirnox.name=ZIRNOX Nuclear Reactor tile.marker_structure.name=Multiblock Structure Marker @@ -4908,11 +5297,14 @@ tile.ore_uranium_scorched.name=Scorched Uranium Ore tile.ore_verticium.name=Dollar Green Mineral tile.ore_volcano.name=Geothermal Vent tile.ore_weidanium.name=Weidite +tile.part_emitter.name=Deco Particle Emitter tile.pink_barrel.name=Kerosene Barrel tile.pink_log.name=Pink Log tile.pink_planks.name=Pink Wood Planks tile.pink_slab.name=Pink Wood Slab tile.pink_stairs.name=Pink Wood Stairs +tile.piston_inserter.name=Inserter +tile.piston_inserter.desc=Can receive one item using automation$Using redstone, it will insert the item into drilled graphite$All drilled graphite in the chain will have their items pushed by one block$Needs one block of air between the graphite tile.plant_dead.name=Dead Plant tile.plant_flower.cd0.name=Mustard Willow tile.plant_flower.cd1.name=Mustard Willow @@ -4934,6 +5326,33 @@ tile.pribris.name=RBMK Debris tile.pribris_burning.name=Flaming RBMK Debris tile.pribris_digamma.name=Blackened RBMK Debris tile.pribris_radiating.name=Smoldering RBMK Debris +tile.pump_electric.name=Electric Groundwater Pump +tile.pump_electric.desc=Uses electricity to pump up groundwater$Generates up to 10,000mB/t$Needs to be placed below Y:70 +tile.pump_steam.name=Steam-Powered Groundwater Pump +tile.pump_steam.desc=Uses steam to pump up groundwater$Generates up to 1,000mB/t$Needs to be placed below Y:70 +tile.pwr_block.name=PWR +tile.pwr_casing.name=PWR Pressure Vessel +tile.pwr_casing.desc=Needs to cover all internal parts for the reactor to form$Placement: Casing +tile.pwr_channel.name=PWR Coolant Channel +tile.pwr_channel.desc=Uses hull heat to heat up coolant$Placement: Any +tile.pwr_control.name=PWR Control Rod +tile.pwr_control.desc=Allows connected fuel rods to be controlled$Placement: Grid, between fuel rods +tile.pwr_controller.name=PWR Controller +tile.pwr_controller.desc=Access terminal for the PWR$Placement: Casing, only one per reactor$Right-click to assemble the reactor +tile.pwr_fuel.name=PWR Fuel Rod +tile.pwr_fuel.desc=Increases PWR fuel capacity$Placement: Grid, for increased reactivity +tile.pwr_heatex.name=PWR Heat Exchanger +tile.pwr_heatex.desc=Moves core heat to the hull$Placement: Any +tile.pwr_neutron_source.name=PWR Neutron Source +tile.pwr_neutron_source.desc=Adds 20 flux to the core$Placement: Any$Flux only reaches fuel rods if connections are open +tile.pwr_port.name=PWR Access Port +tile.pwr_port.desc=Allows item and fluid IO$Placement: Casing +tile.pwr_reflector.name=PWR Neutron Reflector +tile.pwr_reflector.desc=Reflects neutrons back to fuel rods$Placement: Grid, for increased reactivity$Valid casing material +tile.radar_screen.name=Radar Screen +tile.radio_telex.name=Telex Machine +tile.radio_torch_counter.name=Redstone-over-Radio Item Counter +tile.radio_torch_counter.desc=Placable on flat surfaces or comparator-compatible blocks$Bases signal on the amount of matching items tile.radio_torch_receiver.name=Redstone-over-Radio Receiver tile.radio_torch_receiver.desc=Placable on flat surfaces or comparator-compatible blocks tile.radio_torch_sender.name=Redstone-over-Radio Transmitter @@ -4976,6 +5395,8 @@ tile.reactor_inserter.name=Reactor Fuel Inserter tile.red_barrel.name=Explosive Barrel tile.red_cable.name=Red Copper Cable tile.red_cable_classic.name=Red Copper Cable (Classic) +tile.red_cable_gauge.name=Power Gauge +tile.red_cable_gauge.desc=Cable that displays how much power$moves within the network per tick.$Split networks connected by energy$stroage blocks are considered as one shared network. tile.red_cable_paintable.name=Paintable Red Copper Cable tile.red_connector.name=Electricity Connector tile.red_pylon.name=Electricity Pole @@ -4985,12 +5406,15 @@ tile.reinforced_brick.name=Reinforced Stone tile.reinforced_brick_stairs.name=Reinforced Stone Stairs tile.reinforced_ducrete.name=Reinforced Ducrete tile.reinforced_glass.name=Reinforced Glass +tile.reinforced_glass_pane.name=Reinforced Glass Pane tile.reinforced_lamp_off.name=Reinforced Lamp tile.reinforced_lamp_on.name=Reinforced Lamp tile.reinforced_light.name=Reinforced Glowstone tile.reinforced_sand.name=Reinforced Sandstone tile.reinforced_stone.name=Dense Stone tile.reinforced_stone_stairs.name=Dense Stone Stairs +tile.reinforced_laminate.name=Reinforced Laminate +tile.reinforced_laminate_pane.name=Reinforced Laminate Pane tile.rejuvinator.name=Rejuvination Device tile.residue.name=Cloud Residue tile.safe.name=Safe @@ -5023,6 +5447,7 @@ tile.sellafield.4.name=Infernal Sellafite tile.sellafield.5.name=Sellafite-Corium tile.sellafield_slaked.name=Slaked Sellafite tile.semtex.name=Semtex +tile.sliding_blast_door.name=Sliding Blast Door tile.solar_mirror.name=Heliostat Mirror tile.soyuz_capsule.name=Cargo Landing Capsule tile.soyuz_launcher.name=Soyuz Launch Platform @@ -5046,6 +5471,7 @@ tile.stone_depth_nether.name=Nether Depth Rock tile.stone_gneiss.name=Graphitic Schist tile.stone_porous.name=Porous Stone tile.stone_resource.asbestos.name=Chrysotile +tile.stone_resource.bauxite.name=Bauxite tile.stone_resource.hematite.name=Hematite tile.stone_resource.limestone.name=Limestone tile.stone_resource.malachite.name=Malachite @@ -5124,7 +5550,15 @@ tile.watz_end_bolted.name=Watz Reactor Stability Element (Riveted) tile.watz_hatch.name=Watz Reactor Access Hatch tile.watz_pump.name=Watz Pressure Pump tile.yellow_barrel.name=Radioactive Barrel -tile.zirnox_destroyed.name=Destroyed ZINROX +tile.zirnox_destroyed.name=Destroyed ZIRNOX + +tile.large_vehicle_door.name=Large Vehicle Door +tile.water_door.name=Water Door +tile.qe_containment.name=QE Containment Door +tile.qe_sliding_door.name=QE Sliding Door +tile.round_airlock_door.name=Round Airlock Door +tile.secure_access_door.name=Secure Access Door +tile.sliding_seal_door.name=Sliding Seal Door trait.asbestos=Asbestos trait.blinding=Blinding @@ -5203,6 +5637,21 @@ turret.off=OFF turret.on=ON turret.players=Target Players: %s +upgrade.acid=Acid required %s +upgrade.burn=Burn %smb/t for %sHE +upgrade.consumption=Consumption %s +upgrade.delay=Process time %s +upgrade.efficiency=Efficiency %s +upgrade.fortune=Fortune %s +upgrade.range=Range %s + +upgrade.gui.title=§lAcceptable Upgrades:§r +upgrade.gui.afterburner= * §dAfterburner§r: Stacks to level %s +upgrade.gui.effectiveness= * §aEffectiveness§r: Stacks to level %s +upgrade.gui.overdrive= * §7Overdrive§r: Stacks to level %s +upgrade.gui.power= * §9Power-Saving§r: Stacks to level %s +upgrade.gui.speed= * §4Speed§r: Stacks to level %s + wavelengths.name.ir=Infrared wavelengths.name.visible=Visible Light wavelengths.name.uv=Ultraviolet @@ -5230,4 +5679,4 @@ weapon.elecGun.glass_cannon.ir=Infrared weapon.elecGun.glass_cannon.visible=Visible Light weapon.elecGun.glass_cannon.uv=Ultraviolet Light weapon.elecGun.glass_cannon.xray=X-rays -weapon.elecGun.glass_cannon.gamma=Gamma rays \ No newline at end of file +weapon.elecGun.glass_cannon.gamma=Gamma rays diff --git a/src/main/resources/assets/hbm/lang/fr_FR.lang b/src/main/resources/assets/hbm/lang/fr_FR.lang index 0635ab9d1..9b13a0db9 100644 --- a/src/main/resources/assets/hbm/lang/fr_FR.lang +++ b/src/main/resources/assets/hbm/lang/fr_FR.lang @@ -477,6 +477,9 @@ item.plate_titanium.name=Plaque en titane item.plate_aluminium.name=Plaque d'aluminium item.wire_red_copper.name=Fil de cuivre rouge item.neutron_reflector.name=Reflecteur neutronique +item.night_vision.name=Lunettes de vision nocturne +item.night_vision.description.item=Donne la vision nocturne (nécessite un set électrique complet) +item.night_vision.description.in_armor=%s (donne la vision nocturne) item.nugget_beryllium.name=Pépite de béryllium item.wire_aluminium.name=Fil d'aluminium @@ -913,6 +916,7 @@ item.grenade_strong.name=Grenade ameliorée item.grenade_frag.name=Grenade Frag item.grenade_fire.name=Grenade Frag incendiaire item.grenade_shrapnel.name=Grenade à fragmentation +item.grenate_cats.name=Grenade à chats item.grenade_cluster.name=Grenade à fragmentation item.grenade_flare.name=Flare item.grenade_electric.name=Grenade à éclairs diff --git a/src/main/resources/assets/hbm/lang/pl_PL.lang b/src/main/resources/assets/hbm/lang/pl_PL.lang new file mode 100644 index 000000000..0fd01861e --- /dev/null +++ b/src/main/resources/assets/hbm/lang/pl_PL.lang @@ -0,0 +1,5444 @@ +achievement.acidizer.desc=ała moja skóra ;( +achievement.acidizer=Kwaśno +achievement.assembly.desc=Czekaj, to juÅŒ 1:00? +achievement.assembly=Fabryka się rozrasta +achievement.FOEQ.desc=Wyślij przekaźnik na marsjańską... Mam na myśli dunajską orbitę. +achievement.FOEQ=Pegazy i silosy rakietowe +achievement.breeding.desc=Dziękuję, niech Bóg cię błogosławi, i niech Bóg błogosławi Stany Zjednoczone. Albo i Polskę. W oryginalnym tłumaczeniu były Stany Zjednoczone, ale patriotyzm mówi mi, ÅŒeby pobłogosławił Polskę. +achievement.breeding=Ironiczne. +achievement.bismuth.desc=Pamiętasz, kiedy ludzie narzekali na to przez miesiąc? Ja pamiętam. +achievement.bismuth=Bizmut +achievement.blastFurnace.desc=Uratowali zatopiony pancernik dla Explorer 1. +achievement.blastFurnace=Węgiel i ÅŒelazo +achievement.bossCreeper.desc='Są atomowe creepery? Takie istnieją?!' +achievement.bossCreeper=Bomba na czterech nogach +achievement.bossMaskman.desc=Walnij duÅŒego chłopa. +achievement.bossMaskman=6 miesięcy obowiązkowej słuÅŒby i dostałem tylko marną koszulkę +achievement.bossMeltdown.desc=Bardziej okropne niÅŒ wspaniałe, ale biorę, co mogę. +achievement.bossMeltdown=3.6 Rentgenów +achievement.bossWorm.desc=Fabstaff. Moje dupsko. Wykonaj działanie. +achievement.bossWorm=DemontaÅŒ Jądro-Trona +achievement.bossUFO.desc=Joł, co my tu mamy? Ogromny statek kosmiczny zbliÅŒający się do statku blokowego? +achievement.bossUFO=Ayy Lmao +achievement.burnerPress.desc='Pressure pushing down on me, on you' +achievement.burnerPress=Pod ciśnieniem +achievement.c20_5.desc=??? +achievement.c20_5=Rozdział [DWADZIEŚCIA KOMA PIĘĆ] +achievement.c44.desc=Ocynkowany! Znaczy, cynk! +achievement.c44=Rozdział 44 +achievement.centrifuge.desc=siła odśrodkowa jest prawdziwa nie @ mnie +achievement.centrifuge=Siła odśrodkowa +achievement.chemplant.desc=Teraz myślisz chemikaliami! +achievement.chemplant=Fabryka się rozrasta: część 2 +achievement.chicagoPile.desc="Jak zachowywali się tubylcy?" / "Bardzo przyjaźnie." +achievement.chicagoPile=Nawigator wylądował w Nowym Świecie +achievement.concrete.desc=Faworyt Bolszewika. +achievement.concrete=Stary niezawodny +achievement.desh.desc="No, dalej. DuÅŒo miejsc do odwiedzenia!" +achievement.desh=Le Verrier +achievement.digammaFeel.desc=wewnętrznej pustki. +achievement.digammaFeel=Terror odczuwania +achievement.digammaKauaiMoho.desc=Wszystko jest okropne, trzymaj gorącą czekoladę. +achievement.digammaKauaiMoho=Zaśpiewaj, zaśpiewaj mi pieśń Kauai Moho +achievement.digammaKnow.desc=o czym jest ten świat. +achievement.digammaKnow=Terror wiedzy +achievement.digammaSee.desc=prosto w otchłań. +achievement.digammaSee=Terror widzenia +achievement.digammaUpOnTop.desc=Podziwiaj mojego syna, to mój klon. +achievement.digammaUpOnTop=Podziwiaj mnie, podziwiaj mój dom +achievement.fiend.desc=Bądź wredny. +achievement.fiend2.desc=Bądź wredniejszy. +achievement.fiend2=Przestępca 2: Przestępować Jeszcze Bardziej +achievement.fiend=Przestępca +achievement.freytag.desc=Ratownicy Herolda +achievement.freytag=Piątek +achievement.fusion.desc=Taniec deuteru, trytonu i energii. +achievement.fusion=Fuzja +achievement.gasCent.desc=Niewzbogacony uran go nienawidzi! +achievement.gasCent=Styl Zippe +achievement.hidden.desc=Zabij skaÅŒonego creepera spadającym wagonem towarowym. +achievement.hidden=Ukryty Katalog +achievement.horizonsBonus.desc=szczerze mówiąc, co do diabła jest z tobą nie tak +achievement.horizonsBonus=Wsad Biegunki +achievement.horizonsEnd.desc=Wyślij Tomasza do domu. +achievement.horizonsEnd=Horyzonty +achievement.horizonsStart.desc=Wyślij chłopaka do domu. +achievement.horizonsStart=Apogeum +achievement.impossible.desc=Nie moÅŒesz dostać tego osiągnięcia. +achievement.impossible=Dosłownie niemoÅŒliwe +achievement.inferno.desc="Obróć to w popiół! To nie wystarczy! Zrzuć więcej bomb!" +achievement.inferno=Operacja Kanibal +achievement.manhattan.desc=8:15; 6 Sierpnia, 1945 +achievement.manhattan=Projekt Manhattan +achievement.meltdown.desc=Zaszedłeś tak daleko, jak mogłeś to zepsuć? +achievement.meltdown=Szybki nieplanowany demontaÅŒ +achievement.no9.desc=„Mam nadzieję, ÅŒe ołów, który wydobywam, zostanie uÅŒyty w twojej farbie” +achievement.no9=Stara dziewiątka +achievement.omega12.desc=RozwiÄ…ÅŒ problem dalszego ÅŒycia na tej nędznej planecie. +achievement.omega12=Omega-12 Akcelerator Cząsteczek +achievement.polymer.desc=Mniam mniam. Smaczne mikroplastiki. Kocham je. +achievement.polymer=Teflon +achievement.potato.desc=Dźgnąłeś mnie! Co jest z tobą nie ta-ŁOOOO +achievement.potato=Zbuntowane AI +achievement.radDeath.desc=Maria Curie wynalazła teorię radioaktywności, leczenia radioaktywności i umierania z powodu radioaktywności. +achievement.radDeath=Ała, promieniowanie! +achievement.radium.desc=JESTEŚ ZWOLNIONY ZA WLEWANIE RADU DO MOJEJ KAWY! +achievement.radium=PAN INIEMAMOCNY +achievement.radPoison.desc=Ponieś skutki zatrucia promieniowaniem. +achievement.radPoison=Jej, promieniowanie! +achievement.RBMKBoom.desc=Co jest kosztem kłamstw? +achievement.RBMKBoom=15,000. +achievement.RBMK.desc=Ma urojenia, zabierz go do szpitala. +achievement.RBMK=3.6 Rentegena? +achievement.redBalloons.desc="To jest to, na co czekaliśmy. To jest to, koledzy, to jest wojna." +achievement.redBalloons=99 Czerwonych Balonów +achievement.sacrifice.desc=Zmierz się z ogniem i ÅŒyj. +achievement.sacrifice=Sorobójstwo +achievement.schrab.desc=Mimo wszystko nie patrzyłbym na to zbyt długo. +achievement.schrab=Wyspa Stabilności +achievement.selenium.desc=Ta. +achievement.selenium=XVIII KsięŌyc +achievement.SILEX.desc=To jest fajniejsze niÅŒ to brzmi, obiecuję. +achievement.SILEX=Rozdzielanie Izotopów Za Pomocą Wzbudzenia Laserowego +achievement.slimeball.desc= +achievement.slimeball=Powinienem zanurzyć me jaja w kwasie siarkowym. +achievement.stratum.desc=Naciśnij hamulec, Mitts. +achievement.stratum=Nawarstwienie +achievement.someWounds.desc=Przygotuj się +achievement.someWounds=Niektóre rany nigdy się nie goją. +achievement.soyuz.desc=Stań się chrupiący. +achievement.soyuz=Pieczony ziemniak +achievement.space.desc=Ponieś poraÅŒkę w kaÅŒdy moÅŒliwy sposób i zmarnuj fundusze warte 90 milionów dolarów. +achievement.space=Ostatni Front- a dobra, zapomnij +achievement.sulfuric.desc= +achievement.sulfuric=Nie powinienem był zanurzać mych jaj w kwasie siarkowym. +achievement.tantalum.desc=Nieuchwytny, ale zawsze potrzebny element. +achievement.tantalum="Tantal" +achievement.tasteofblood.desc=nie jest częścią ÅŒadnego protokołu testowego. +achievement.tasteofblood=Smak krwi +achievement.technetium.desc=To jest lekarstwo, to jest lekarstwo! +achievement.technetium=DuÅŒy człowiek, świński człowiek +achievement.watzBoom.desc=OpróŌnij szambo następnym razem. +achievement.watzBoom=Obrzydliwe +achievement.watz.desc=MoÅŒliwe uwzględnienie pól Fólkvangr. +achievement.watz=Moc Elementu-126 +achievement.witchtaunter.desc=Te zwariowane kreatury nic na ciebie nie mają! +achievement.witchtaunter=Szyderca Czarownic +achievement.ZIRNOXBoom.desc=xdxdxd +achievement.ZIRNOXBoom=CIRNOX + +armor.blastProtection=Modyfikator obraÅŒeń %s przeciwko eksplozjom +armor.cap=Twardy limit obraÅŒeń %s +armor.damageModifier=Modyfikator obraÅŒeń %s przeciwko %s +armor.dash=Daje %s susów +armor.electricJetpack=Jonowy plecak odrzutowy +armor.explosionImmune=Nie moÅŒe otrzymać ÅŒadnych obraÅŒeń z wyjątkiem eksplozji +armor.fastFall=Szybki Upadek +armor.fireproof=Ognioodporny +armor.fullSetBonus=Bonus pełnego zestawu: +armor.geigerHUD=Wbudowane HUD licznika Geigera +armor.geigerSound=Słuchowy licznik Geigera +armor.glider=Skradnij się aby szybować +armor.gravity=Modyfikator grawitacji %s +armor.hardLanding=Twarde Lądowanie +armor.ignoreLimit=Limit rezystancji nie ma wpływu na rezystancję +armor.modifier=Ogólny modyfikator obraÅŒeń %s +armor.nullDamage=Anuluje wszystkie obraÅŒenia od %s +armor.projectileProtection=Modyfikator obraÅŒeń %s przeciwko pociskom +armor.rocketBoots=Buty Rakietowe +armor.sprintBoost=Wzmocniony Sprint +armor.thermal=Wzrok Termiczny +armor.threshold=Próg obraÅŒeń %s +armor.vats=HUD Przeciwników +armor.yield=Ochrona dotyczy obraÅŒeń <%s + +armorMod.all=Wszystkiego +armorMod.applicableTo=Stosuje się do: +armorMod.boots=Butów +armorMod.chestplates=Napierśników +armorMod.helmets=Hełmów +armorMod.insertHere=Wstaw zbroję, aby zmodyfikować... +armorMod.leggings=Legginsów +armorMod.type.boots=Buty +armorMod.type.chestplate=Napierśnik +armorMod.type.cladding=Okładziny +armorMod.type.helmet=Hełm +armorMod.type.insert=Wkładka +armorMod.type.leggings=Legginsy +armorMod.type.servo=Serwa +armorMod.type.special=Specjalne + +battery.mode.buffer=Tryb Wejścia/Wyjścia +battery.mode.input=Tryb Wejścia +battery.mode.off=WyłączonyW +battery.mode.output=Tryb Wyjścia +battery.priority.high=Charge Priority: Wysoki +battery.priority.high.desc=Bufory awaryjne, które$zawsze muszą być pełne +battery.priority.low=Charge Priority: Niski +battery.priority.low.desc=Większość przypadków uÅŒycia, w których nadmiar$energii musi być przechowywany bez$wpływu na wydajność maszyny +battery.priority.normal=Charge Priority: Normalny +battery.priority.normal.desc=Mniejsze sieci energetyczne, w których priorytet nie ma znaczenia +battery.priority.recommended=Polecane dla: +battery.redstone.off=Redstone WYŁ +battery.redstone.on=Redstone WŁ + +bomb.detonated=Zdetonowano pomyślnie! +bomb.incompatible=Urządzenie nie moÅŒe zostać uruchomione! +bomb.launched=Wystrzelono pomyślnie! +bomb.missingComponent=Brakujący komponent! +bomb.nobomb=Połączona pozycja niekompatybilna lub niezaładowana! +bomb.triggered=Uruchomiono pomyślnie! + +book.test.cover=JAK SEXOWAĆ +book.test.page1=Test Strony 1 + +book.error.cover=Zderzacz Hadronów:$rozwiązywanie problemów +book.error.title1=Błąd 0x01 [NC] +book.error.page1=§lNazwa:§r "ERROR_NO_CHARGE" §lOpis:§r Cząstka dotarła do segmentu o niewystarczającym ładunku. §lPotencjalna poprawka:§r Albo wymień jedną ze wtyczek, przez które cząsteczka pomyślnie przechodzi na wtyczki wyÅŒszego poziomu, albo dodaj kolejną wtyczkę nieco przed segmentem, w którym cząsteczka wygasa. +book.error.title2=Błąd 0x02 [NA] +book.error.page2=§lNazwa:§r "ERROR_NO_ANALYSIS" §lOpis:§r Cząstka dotarła do rdzenia, mimo ÅŒe nie przeszła przez komorę analityczną. §lPotencjalna poprawka:§r Upewnij się, ÅŒe twój akcelerator ma komorę analityczną i dwukrotnie sprawdź tryb pracy (liniowy/kołowy). +book.error.title3=Błąd 0x03 [OC] +book.error.page3=§lNazwa:§r "ERROR_OBSTRUCTED_CHANNEL" §lOpis:§r Cząstka zderzyła się z blokiem wewnątrz kanału zderzacza. §lPotencjalna poprawka::§r Upewnij się, ÅŒe wnętrze zderzacza cząstek jest wolne od jakichkolwiek przeszkód, z wyjątkiem diod cząsteczkowych i bloków rdzenia. +book.error.title4=Błąd 0x04 [EC] +book.error.page4=§lNazwa:§r "ERROR_EXPECTED_COIL" §lOpis:§r Cząstka przeszła przez segment, w którym brakuje jednej lub wielu cewek. §lPotencjalna poprawka:§r Usuń osłonę zderzacza w obszarze naruszenia i sprawdź, czy są tam wszystkie cewki. Ten błąd wystąpi równieÅŒ w przypadku skrzyÅŒowań T, które są zbudowane bez diod. +book.error.title5=Błąd 0x05 [MS] +book.error.page5=§lNazwa:§r "ERROR_MALFORMED_SEGMENT" §lOpis:§r Cząstka minęła segment, który został zbudowany nieprawidłowo (ale nie jest zablokowany ani nie ma brakujących cewek). §lPotencjalna poprawka:§r Upewnij się, ÅŒe błędny segment ma osłonę we wszystkich wymaganych miejscach, nie pozostawiając odsłoniętych cewek. +book.error.title6=Błąd 0x06 [ATL] +book.error.page6=§lNazwa:§r "ERROR_ANALYSIS_TOO_LONG" §lOpis:§r Cząstka przeszła więcej niÅŒ trzy wymagane poprawne segmenty komory analitycznej.§lPotencjalna poprawka:§r Upewnij się, ÅŒe komora analityczna ma dokładnie 3 bloki długości dla akceleratora kołowego i co najmniej 2 bloki długości dla akceleratora liniowego. Sprawdź równieÅŒ, czy cząstka nie przechodzi przez wiele komór analitycznych w rozgałęzionym i/lub zapętlonym akceleratorze. +book.error.title7=Błąd 0x07 [ATS] +book.error.page7=§lNazwa:§r "ERROR_ANALYSIS_TOO_SHORT" §lOpis:§r Cząstka opuściła komorę analityczną, mimo ÅŒe nie spełniała wymagań dotyczących długości. §lPotencjalna poprawka:§r Upewnij się, ÅŒe komora analityczna twojego akceleratora kołowego ma dokładnie 3 bloki długości. Prawidłowe segmenty analityczne nie mają cewek, a osłona składa się w całości ze ścian/okien komory analitycznej. Komory analityczne z cewkami w nich liczą się jako zwykłe segmenty. +book.error.title8=Błąd 0x08 [DC] +book.error.page8=§lNazwa:§r "ERROR_DIODE_COLLISION" §lOpis:§r Cząstka zderzyła się z niewejściową stroną diody Schottky'ego. §lPotencjalna poprawka:§r Sprawdź, czy diody są poprawnie skonfigurowane. Cząsteczki mogą dostać się do diody tylko z boków oznaczonych zielonymi strzałkami skierowanymi do wewnątrz. +book.error.title9=Błąd 0x09 [BT] +book.error.page9=§lNazwa:§r "ERROR_BRANCHING_TURN" §lOpis:§r Cząstka osiągnęła zakręt z wieloma wyjściami. §lPotencjalna poprawka:§r Jeśli twój zakręt jest normalny, sprawdź, czy są wszystkie wymagane cewki (tj. czy nie ma dziur w warstwie cewki). Jeśli zakręt ma być rozgałęziony, wymaga prawidłowo skonfigurowanej diody cząstek Schottky'ego. + +book.rbmk.cover=Moje Pierwsze RBMK:$Podstawy Budowy$Reaktora +book.rbmk.title1=Wstęp +book.rbmk.page1=§lRBMK§r jest w pełni modułowym reaktorem jądrowym. W przeciwieństwie do większości innych reaktorów, nie ma „rdzenia” ani ograniczeń wielkości, a zachowanie i wydajność reaktora zaleÅŒy od tego, jak jest zbudowany i jak poszczególne części współdziałają ze sobą. +book.rbmk.title2=Ciepło +book.rbmk.page2=Podczas pracy reaktor będzie generował §lciepło§r. Ciepło będzie rozprzestrzeniać się między częściami, powoli zmniejszając się w trakcie. Celem jest wygenerowanie jak największej ilości ciepła bez stopienia reaktora i przekazanie ciepła do kanałów parowych, które chłodzą reaktor i wytwarzają parę. +book.rbmk.title3=Pręt paliwowy +book.rbmk.page3=§lPręt paliwowy§r wychwyci strumień neutronów, powodując reakcję paliwa wewnątrz pręta, uwalniając neutrony w procesie. Neutrony są uwalniane we wszystkich czterech głównych kierunkach z maksymalnym zasięgiem 5 bloków. Ilość uwolnionych neutronów zaleÅŒy od uÅŒytego paliwa. +book.rbmk.title4=Pręt regulacyjny +book.rbmk.page4=§lPręt regulacyjny§r zmniejszy liczbę przechodzących neutronów. Całkowicie włoÅŒony zablokuje wszystkie neutrony; po włoÅŒeniu do połowy zablokuje tylko połowę. Pręty regulacyjne słuŌą do regulacji pracy reaktora i jego wyłączania. +book.rbmk.title5=Pręty regulacyjne — zastosowanie +book.rbmk.title5.scale=0.9 +book.rbmk.page5=BieŌące wstawienie pręta zostanie wyświetlone na środku GUI. Kolorowe przyciski po lewej stronie dodadzą pasek sterowania do grupy kolorów, co jest przydatne do szybkiego wybierania zgrupowanych pasków na konsoli §lRBMK§r. Przyciski po prawej stronie umoÅŒliwiają ręczne wstawianie po 25%%. +book.rbmk.title6=Automatyczny pręt regulacyjny +book.rbmk.page6=§lAutomatyczne pręty regulacyjne§r są prawie identyczne jak zwykłe pręty regulacyjne, ale nie moÅŒna ich regulować ręcznie, zamiast tego dostosują połoÅŒenie pręta w oparciu o aktualną temperaturę. Którą funkcję uÅŒyć i jak głęboko włoÅŒyć i w jakiej temperaturze naleÅŒy najpierw ustalić. +book.rbmk.title7=Kanał parowy +book.rbmk.page7=§lKanał parowy§r jest jedyną częścią, która będzie regularnie obniÅŒać poziom ciepła w reaktorze. Jeśli element ma temperaturę powyÅŒej wrzenia określonego rodzaju pary, będzie próbował zuÅŒywać tyle wody i wytwarzać tyle pary, ile potrzeba do schłodzenia poniÅŒej temperatury wrzenia. +book.rbmk.title8=Reflektor neutronów +book.rbmk.page8=§lReflektor neutronów§r zablokuje przejście neutronów, zamiast tego neutrony zostaną odbite z powrotem na pręt paliwowy, z którego pochodzą. Jest on przydatny do wykorzystania neutronów, które w przeciwnym razie zostałyby zmarnowane po prostu przez opuszczenie reaktora. +book.rbmk.title9=Pochłaniacz neutronów +book.rbmk.page9=§lPochłaniacz neutronów§r po prostu blokuje neutrony. Zaabsorbowane neutrony nie będą generować ciepła i zostaną skutecznie zniszczone. Jest to przydatne do zapobiegania reakcji prętów paliwowych, które w przeciwnym razie byłyby w swoim zasięgu. +book.rbmk.title10=Opóźniacz grafitowy +book.rbmk.page10=§lModerator grafitowy§r (lub opóźniacz grafitowy) przekształca przechodzące przez niego neutrony prędkie w neutrony powolne. Większość paliw jest rozkładana na neutrony prędkie, podczas gdy neutrony powolne są potrzebne do rozszczepienia, dlatego zalecane jest stosowanie moderatorów. +book.rbmk.title11=Kolumna strukturalna +book.rbmk.page11=§lKolumna strukturalna§r nie wpływa w ÅŒaden sposób na neutrony i nie ma specjalnego zastosowania. Zaleca się wypełnienie reaktora słupami strukturalnymi tam, gdzie nie ma innych części, poniewaÅŒ słupy strukturalne są zdolne do przenoszenia ciepła. +book.rbmk.title12=Konsola +book.rbmk.page12=§lKonsola RBMK§r pozwala sterować reaktorem z daleka. UÅŒywając §lurządzenia do podłączania konsoli RBMK§r na części RBMK a następnie na konsoli połączymy reaktor i konsolę. Konsola moÅŒe sterować tylko częściami 15x15, w przypadku duÅŒych reaktorów moÅŒna uÅŒyć wielu konsol. +book.rbmk.title13=UÅŒywanie konsoli +book.rbmk.page13=Klikanie na części spowoduje ich zaznaczenie i odznaczenie. Za pomocą kolorowych przycisków moÅŒesz szybko wybrać wszystkie pręty regulacyjne w danej grupie kolorów. Przycisk „A” zaznaczy wszystkie drÄ…ÅŒki sterujące, „X” odznaczy wszystkie. +book.rbmk.page14=Wpisanie liczby od 0 do 100 w zielone pole, a następnie naciśnięcie przycisku obok niego spowoduje ustawienie wszystkich wybranych drÄ…ÅŒków sterujących w tej pozycji. Przycisk „AZ-5” doprowadzi do pełnego włoÅŒenia wszystkich drÄ…ÅŒków sterujących. +book.rbmk.title15=Paliwo +book.rbmk.page15=Reakcja §lpaliwa§r zaleÅŒy od wielu czynników. Główne z nich to §lfortyfikacja§r, §zatrucie ksenonem§r oraz liczba przychodzących §neutronów§r. Ksenon gromadzi się, gdy paliwo ma niską zawartość neutronów i spala się podczas normalnej pracy. Wydajność neutronów zaleÅŒy od rodzaju, większość paliw §lnajlepiej rozdziela się przez §r §lwolne neutrony§r. +book.rbmk.title16=Stapianie +book.rbmk.page16=§4§lUNIKAJ. + +book.starter.cover=Przewodnik przemysłowcy$do odbudowy$społeczeństwa +book.starter.title1=Wstęp +book.starter.page1=Jeśli to czytasz, jest to bardzo prawdopodobne, ÅŒe społeczeństwo, w taki czy inny sposób, całkowicie się rozpadło. Rządy, kraje i władza to koncepcje przeszłości – wraz ze wszystkimi wygodami cywilizowanego ÅŒycia. W związku z tym, w tym przewodniku dowiesz się, jak to zmienić, odtwarzając przemysł i technologię z przeszłości w celu poprawy własnego ÅŒycia. +book.starter.title2=Węgiel i gaz musztardowy +book.starter.page2=ChociaÅŒ niemoÅŒliwe jest przewidzenie faktycznego stanu świata w czasach postapokaliptycznych, nie jest wykluczone, ÅŒe wojna i przemysł w ich obecnej formie nie zakończyły się. Aby chronić własne płuca, skutecznym i tanim sposobem jest oddanie moczu na jakieś §lpłótno§r, aby zrobić §lmaskę okopową§r, aby chronić się przed pyłem węglowym lub gazem musztardowym, jeśli kiedykolwiek się z nimi spotkasz. +book.starter.title3=Kowadła i prasy +book.starter.page3=Kwintesencją rozpoczęcia rewitalizacji przemysłu jest §lkowadło§r i §lprasa spalinowa§r. Kowadło pozwoli ci ręcznie tworzyć wczesne maszyny, takie jak monter, podczas gdy prasa spalinowa pozwoli ci tworzyć płyty, druty i obwody, których nie moÅŒna połączyć razem w kowadle. +book.starter.title4=Szablony +book.starter.page4.scale=0.9 +book.starter.page4=Aby wytłaczać metal w uÅŒyteczne kształty, składać maszynę i przeprowadzać reakcje chemiczne, musisz stworzyć §lFolder szablonów maszyn§r, aby utworzyć róŌne stemple i szablony pokazane po prawej stronie. +book.starter.title5=Odzyskiwanie +book.starter.page5=W zaleÅŒności od tego, jak złe było początkowe wydarzenie apokaliptyczne dla istniejących struktur świata, istnieje prawdopodobieństwo, ÅŒe moÅŒna z nich bezpośrednio odzyskać wiele przydatnych materiałów i maszyn. Stopy metali, takie jak stal, części, takie jak obwody, a nawet materiały rozszczepialne z elektrowni jądrowej mogą na ciebie czekać. UwaÅŒaj jednak na niektóre ruiny, poniewaÅŒ moÅŒe tam czaić się nadmiar niebezpieczeństw jak wÄ…ÅŒ w trawie; czekając, by powalić cię promieniowaniem, pułapkami lub nieopisywalnymi horrorami... +book.starter.title6=Wczesne maszyny +book.starter.page6a=Dwie z pierwszych maszyn, które powinieneś zmontować, to §lpiec hutniczy§r i §lmaszyna montaÅŒowa§r (lub monter/asembler). Ta pierwsza pozwoli na tworzenie stopów, takich jak §lstal§r, §lmiedź klasy minecraft§r i §lzaawansowany stop§r; będziesz musiał uÅŒyć tych metali do budowy korpusów maszyn, okablowania obwodów, zaawansowanych elektromagnesów i nie tylko. +book.starter.page6b=Asembler posłuÅŒy do stworzenia praktycznie kaÅŒdej innej maszyny opisanej w tym poradniku. Będziesz potrzebował źródła zasilania, takiego jak §lgenerator§r §lspalinowy§r lub §lbojler słoneczny§r. +book.starter.page7a=§lNiszczarka§r wraz z parą ostrzy niszczarki będzie bardzo przydatna do podwojenia ilości większości rud poprzez rozdrabnianie na nadające się do wytapiania proszki. Te proszki są równieÅŒ niezbędne do rozpoczęcia tworzenia obwodów dla róŌnych maszyn, takie jak §lwzmocnione§r i §lprzetaktowane§r obwody. +book.starter.page7b=Korzystając z nowych maszyn, moÅŒesz stworzyć §1zakłady chemiczne§r, uÅŒywane do syntezy lepszych obwodów, betonu, przetwarzania produktów petrochemicznych i nie tylko. +book.starter.title8=Czarne złoto +book.starter.page8a=UÅŒywając §ldetektora §lzbiorników§r §lropy§r, moÅŒesz znaleźć podziemne złoÅŒa ropy, aby umieścić na nich §lkiwon§r lub §lwieŌę wiertniczą§r poprzez badanie terenu. Pamiętaj, ÅŒe złoÅŒa ropy z czasem się wyczerpią. +book.starter.page8b=Zanim ropa będzie mógła być rafinowana i rozdzielona na części składowe w §lrafinerii ropy naftowej§r, naleÅŒy podgrzać ropę do 300°C w §lbojlerze§r. +book.starter.title9=Produkty petrochemiczne +book.starter.page9=UÅŒywając §lzakładu chemicznego§r, §lwieŌ§r §lfrakcjonujących§r i §lwieÅŒ do krakingu§r §lkataliktycznego§r, moÅŒesz przekształcić oddzieloną ropę w róŌnorodne przydatne produkty. Na przykład: §lpolimer§r lub §lbakelit§r, trwałe i elastyczne tworzywa sztuczne; §ldesh§r, niezwykle trwały i odporny na wysoką temperaturę stop metali ziem rzadkich; §lpaliwo stałe§r, które moÅŒna spalić w celu uzyskania energii; a nawet §lpaliwa płynne§r, takie jak §lbenzyna§r, §lolej napędowy§r, §lbenzyna cięŌka§r i inne. +book.starter.title10=Zaawansowane maszyny +book.starter.page10=Mając juÅŒ za sobą przetwarzanie ropy, moÅŒesz stworzyć §lwirówkę§r, która potroi wydobycie rudy; §lzakwaszacz §lrud§r, który krystalizuje rudy, zwiększając wydajność; oraz §lSILEX + §lFEL§r, dwa cuda nowoczesnej inÅŒynierii, które z łatwością oddzielają izotopy materiałów. Będziesz potrzebował znacznie więcej energii, aby je zasilić; które moÅŒna uzyskać ze źródeł takich jak §lgenerator dieslowy§r, §lgenerator przemysłowy§r, a nawet reaktor jądrowy. +book.starter.title11=Nawarstwienia +book.starter.page11=Pod ziemią, po której idziesz, znajduje się kilka naturalnie występujących §lnawarstwień§r, czyli specjalnych warstw i formacji mineralnych. §lNawarstwienie łupkowe§r to niebieskie, zawierające lit warstwy wypełnione uranem, ÅŒelazem, miedzią, azbestem i innymi rudami na własny uÅŒytek. §lGłęboka skała§r zawiera duÅŒe ilości rzadszych minerałów, takich jak §lcyrkon§r i §lboron§r, ale wymaga materiałów wybuchowych do prawidłowego zebrania. +book.starter.title12=Promieniowanie +book.starter.page12a=Pozostała część tej ksiÄ…ÅŒki dotyczy spraw związanych z promieniowaniem. Dla bezpieczeństwa ciebie i innych dam radę, jak złagodzić i radzić sobie z naraÅŒeniem na nie. +book.starter.page12b=Wystarczająca ekspozycja na promieniowanie moÅŒe i spowoduje uszkodzenie ciała. Pierwszym krokiem jest zapobieganie; pamiętaj o ograniczeniu ekspozycji i noś sprzęt ochronny, taki jak §lkombinezon ochronny§r, lub zastosuj §lokładzinę§r na ubraniu lub zbroi; moÅŒesz równieÅŒ wziąć §lRad-X§r, aby ograniczyć przyjmowanie. Dzięki nowoczesnej medycynie drugim krokiem moÅŒe być usunięcie w razie potrzeby; na przykład §ldekontaminator §lgraczy§r będzie powoli zmniejszał promieniowanie pochłaniane przez twoje ciało. §lRad-Away§r moÅŒe być równieÅŒ stosowany jako profilaktyka poekspozycyjna, szybko i skutecznie odwraca szkody wyrządzone organizmowi przez promieniowanie jonizujące. +book.starter.title13=Wzbogacanie uranu +book.starter.page13=Istnieje kilka łatwych opcji paliw do wykorzystania w reaktorze jądrowym; na przykład §luran naturalny§r lub §lpaliwo torowe§r. Jeśli jednak szukasz czegoś mocniejszego, moÅŒesz stworzyć kaskadę wzbogacania poprzez dwie §lwirówki wzbogacające§r, aby produkować §lpaliwo uranowe§r z resztek §luranu-238§r. Aby to zrobić, będziesz musiał przemienić naturalny uran w §lŌółte ciasto§r, a następnie §lheksafluorek §luranu§r. +book.starter.title14=Chicago Pile +book.starter.page14=Alternatywnie, moÅŒesz stworzyć §lpluton klasy reaktorowej§r, czyli mocniejsze paliwo, z naturalnego uranu przy uÅŒyciu §lChicago Pile§r. Układając bloki grafitu i wiercąc w nich, moÅŒna włoÅŒyć pręty paliwowe w celu zamienienia się w pręty źródłowe plutonu i neutronów, takie jak §lrad-beryl§r, aby rozpocząć reakcję. Pamiętaj, aby przetestować swoje projekty; odstępy lub ograniczenie liczby bloków moÅŒe być konieczne, aby zapobiec przegrzaniu. +book.starter.title15=ZIRNOX GCR +book.starter.page15=Na koniec moÅŒesz stworzyć swoje pierwsze §orealne§r źródło energii: Reaktor Jądrowy §lZIRNOX§r. Reaktory jądrowe wymagają więcej konfiguracji niÅŒ inne źródła zasilania; po pierwsze, będziesz chciał mieć dobre źródło wody, takie jak §lnieskończone źrodło §lcięŌkiej wody§r. Aby usunąć ciepło z rdzenia reaktora i zagotować wodę w parę, potrzebujesz odpowiedniej ilości §ldwutlenku węgla§r. Chcesz mieć wystarczające ciśnienie, ale nie §oza§r duÅŒe. Będziesz takÅŒe potrzebował trzech turbin parowych, aby wykorzystać wytworzoną parę do wytwarzania energii; §lTurbina §lparowa§r lub §lprzemysłowa §lturbina parowa§r będzie optymalna. Wreszcie §lskraplacz§r lub §lpomocnicza wieÅŒa chłodnicza§r jest potrzebna do skraplania pozostałej pary w wodę, gdzie moÅŒna ją usunąć lub poddać recyklingowi w pętli chłodzącej. +book.starter.title16=Wniosek +book.starter.page16=Jeśli dotarłeś tak daleko, jesteś na dobrej drodze do odbudowy cywilizacji. Udało ci się odtworzyć zaawansowaną maszynerię sprzed apokalipsy - z energią jądrową, petrochemią i nie tylko. Nie wiem, w jaki sposób wykorzystasz te nowo odkryte korzyści, ale mam osobistą nadzieję, ÅŒe wykorzystasz je dla dobra własnego i innych - a przynajmniej w samoobronie. Au revoir! +book.starter.title18=O autorze +book.starter.page18=vÊr to po prostu gostek, który zbyt długo był uwięziony w szarej pustce w §oOnce In A Lifetime§r Talking Head'a. Kiedyś znalazł drzwi do studia, ale ku swemu przeraÅŒeniu odkrył, ÅŒe to wycinka z kartonu. + +#book.rbmk.cover=JAK RBMK:$Podstawy$konstrukcji$keaktora +#book.rbmk.title1=Wstęp +#book.rbmk.page1=§lRBMK§r jest w pełni modułowym reaktorem jądrowym. W przeciwieństwie do większości innych reaktorów, nie ma „rdzenia” ani ograniczeń wielkości, a zachowanie i wydajność reaktora zaleÅŒy od tego, jak jest zbudowany i jak poszczególne części współdziałają ze sobą. +#book.rbmk.title2=Ciepło +#book.rbmk.page2=Podczas pracy reaktor będzie generował §lciepło§r. Ciepło będzie rozprzestrzeniać się między częściami, powoli zmniejszając się w trakcie. Celem jest wygenerowanie jak największej ilości ciepła bez stopienia reaktora i przekazanie ciepła do kanałów parowych, które chłodzą reaktor i wytwarzają parę. +#book.rbmk.title3=Pręt paliwowy +#book.rbmk.page3=§lPręt paliwowy§r wychwyci strumień neutronów, powodując reakcję paliwa wewnątrz pręta, uwalniając neutrony w procesie. Neutrony są uwalniane we wszystkich czterech głównych kierunkach z maksymalnym zasięgiem 5 bloków. Ilość uwolnionych neutronów zaleÅŒy od uÅŒytego paliwa. +#book.rbmk.title4=Pręt regulacyjny +#book.rbmk.page4=§lPręt regulacyjny§r zmniejszy liczbę przechodzących neutronów. Całkowicie włoÅŒony zablokuje wszystkie neutrony; po włoÅŒeniu do połowy zablokuje tylko połowę. Pręty regulacyjne słuŌą do regulacji pracy reaktora i jego wyłączania. +#book.rbmk.title5=Pręty regulacyjne - zastosowanie +#book.rbmk.page5=BieŌące wstawienie pręta zostanie wyświetlone na środku GUI. Kolorowe przyciski po lewej stronie dodadzą pasek sterowania do grupy kolorów, co jest przydatne do szybkiego wybierania zgrupowanych pasków na konsoli §lRBMK§r. Przyciski po prawej stronie umoÅŒliwiają ręczne wstawianie po 25%%. +#book.rbmk.title6=Automatyczny pręt regulacyjny +#book.rbmk.page6=§lAutomatyczne pręty regulacyjne§r są prawie identyczne jak zwykłe pręty regulacyjne, ale nie moÅŒna ich regulować ręcznie, zamiast tego dostosują połoÅŒenie pręta w oparciu o aktualną temperaturę. Którą funkcję uÅŒyć i jak głęboko włoÅŒyć i w jakiej temperaturze naleÅŒy najpierw ustalić. +#book.rbmk.title7=Kanał parowy +#book.rbmk.page7=§lKanał parowy§r jest jedyną częścią, która będzie regularnie obniÅŒać poziom ciepła w reaktorze. Jeśli element ma temperaturę powyÅŒej wrzenia określonego rodzaju pary, będzie próbował zuÅŒywać tyle wody i wytwarzać tyle pary, ile potrzeba do schłodzenia poniÅŒej temperatury wrzenia. +#book.rbmk.title8=Reflektor neutronów +#book.rbmk.page8=§lReflektor neutronów§r zablokuje przejście neutronów, zamiast tego neutrony zostaną odbite z powrotem na pręt paliwowy, z którego pochodzą. Jest on przydatny do wykorzystania neutronów, które w przeciwnym razie zostałyby zmarnowane po prostu przez opuszczenie reaktora. +#book.rbmk.title9=Pochłaniacz neutronów +#book.rbmk.page9=§lPochłaniacz neutronów§r po prostu blokuje neutrony. Zaabsorbowane neutrony nie będą generować ciepła i zostaną skutecznie zniszczone. Jest to przydatne do zapobiegania reakcji prętów paliwowych, które w przeciwnym razie byłyby w swoim zasięgu. +#book.rbmk.title10=Opóźniacz grafitowy +#book.rbmk.page10=§lModerator grafitowy§r (lub opóźniacz grafitowy) przekształca przechodzące przez niego neutrony prędkie w neutrony powolne. Większość paliw jest rozkładana na neutrony prędkie, podczas gdy neutrony powolne są potrzebne do rozszczepienia, dlatego zalecane jest stosowanie moderatorów. +#book.rbmk.title11=Kolumna strukturalna +#book.rbmk.page11=§lKolumna strukturalna§r nie wpływa w ÅŒaden sposób na neutrony i nie ma specjalnego zastosowania. Zaleca się wypełnienie reaktora słupami strukturalnymi tam, gdzie nie ma innych części, poniewaÅŒ słupy strukturalne są zdolne do przenoszenia ciepła. +#book.rbmk.title12=Konsola +#book.rbmk.page12=§lKonsola RBMK§r pozwala sterować reaktorem z daleka. UÅŒywając §lurządzenia do podłączania konsoli RBMK§r na części RBMK a następnie na konsoli połączymy reaktor i konsolę. Konsola moÅŒe sterować tylko częściami 15x15, w przypadku duÅŒych reaktorów moÅŒna uÅŒyć wielu konsol. +#book.rbmk.title13=UÅŒywanie Konsoli +#book.rbmk.page13=Klikanie na części spowoduje ich zaznaczenie i odznaczenie. Za pomocą kolorowych przycisków moÅŒesz szybko wybrać wszystkie pręty regulacyjne w danej grupie kolorów. Przycisk „A” zaznaczy wszystkie drÄ…ÅŒki sterujące, „X” odznaczy wszystkie. +#book.rbmk.page14=Wpisanie liczby od 0 do 100 w zielone pole, a następnie naciśnięcie przycisku obok niego spowoduje ustawienie wszystkich wybranych drÄ…ÅŒków sterujących w tej pozycji. Przycisk „AZ-5” doprowadzi do pełnego włoÅŒenia wszystkich drÄ…ÅŒków sterujących. +#book.rbmk.title15=Paliwo +#book.rbmk.page15=Reakcja §lpaliwa§r zaleÅŒy od wielu czynników. Główne z nich to §lfortyfikacja§r, §zatrucie ksenonem§r oraz liczba przychodzących §neutronów§r. Ksenon gromadzi się, gdy paliwo ma niską zawartość neutronów i spala się podczas normalnej pracy. Wydajność neutronów zaleÅŒy od rodzaju, większość paliw §lnajlepiej rozdziela się przez §r §lwolne neutrony§r. +#book.rbmk.title16=Stapianie +#book.rbmk.page16=§4§lUNIKAJ. + +book_lore.author=Przez % +book_lore.test.name=Test +book_lore.test.author=gostek +book_lore.test.page.1=>czesc anony zanim zaczne pozwolcie mi wyjasnic ze nie jestem gejem. >Bądź mną >W tej nocy >18 > Spędzam czas z moim najlepszym przyjacielem, gdy moi rodzice wyjechali na kilka dni >Byliśmy najlepszymi przyjaciółmi juÅŒ przez rok >Trochę piliśmy, graliśmy w wiele gier i zamówiliśmy pizzę >Świetnie się bawiliśmy >W pewnym momencie, około 21:00, opowiada naprawdę zabawny ÅŒart, którego nie pamiętam, ale wiem, ÅŒe bardzo nas to rozśmieszyło >Bez zastanowienia przeczesuję prawą dłonią jego na wpół kręcone czarne włosy i nazywam go zabawnym chłopem >Rumieni się >Zdaję sobie sprawę, ÅŒe jestem zdenerwowany >Jesteśmy trochę blisko >Nagle mnie całuje i z jakiegoś powodu całuję go z powrotem >Robimy miłość >Przytulamy się do siebie i zasypiamy >Obudź się w środku nocy z głową przytuloną do mojej klatki piersiowej i szyi >To jest przyjemne uczucie ale nie jestem homoseksualistą +book_lore.test.page.2=Piszę to, gdy on śpi w moich ramionach. Jak ładnie zawieść mojego najlepszego przyjaciela? Nie chcę być [ZREDAGOWANO] /b/ +book_lore.test.page.3=3 +book_lore.test.page.4=4 +book_lore.test.page.5=5 + +book_lore.book_iodine.name=Notatka +book_lore.book_iodine.author=Dave +book_lore.book_iodine.page.1=dobra, nie uwierzysz, ale stary weathervane w końcu się ponownie pojawił, odkąd wyjechał dwa tygodnie temu, a co bardziej zaskakujące, to fakt, ÅŒe faktycznie zdecydował się powiedzieć, co robili w kanionie: +book_lore.book_iodine.page.2=najwyraźniej kretyni z R&D odkryli związek, który jest w większości nieorganiczny, prawie jak toksyna z natury, ale zrozum to: umierające komórki będą reprodukować tę toksynę i wydalać ją przez skórę, tworząc wysoce zaraźliwy aerozol. +book_lore.book_iodine.page.3=to jest jak wirus, ale nie wirus. skład jest dziwny, moÅŒna go zmieszać w dowolnej domowej butelce, ale trzeba zachować odpowiednią kolejność. doktor powiedział mi, ÅŒe pierwszy składnik, który jest po prostu sproszkowanymi kryształkami jodu, trafia do slotu %d + +book_lore.book_phosphorous.name=Notatka +book_lore.book_phosphorous.author=Dave +book_lore.book_phosphorous.page.1=hej, to znowu ja. zakładam, ÅŒe dostałeś moją ostatnią notatkę, doktor nie był z tego zadowolony. muszę to zrobić szybko, głupki z R&D obecnie znowu jęczą, prawdopodobnie nad pieniędzmi. znowu. w kaÅŒdym razie doktor weathervane +book_lore.book_phosphorous.page.2=odkrył, ÅŒe drugim składnikiem jest czerwony fosfor, który naleÅŒy wmieszać w slot %d + +book_lore.book_dust.name=Notatka +book_lore.book_dust.author=Dave +book_lore.book_dust.page.1=doktor był wściekły, gdy dowiedział się, ÅŒe głupcy z R&D zatrzymali jedyną pozostałą próbkę, narzekając na raŌące zaniedbanie to i czarny scenariusz tamto. powiedziałem mu, ÅŒeby się wyluzował przez minutę, stresowanie się nie jest dobre +book_lore.book_dust.page.2=dla jego ciśnienia krwi, nie ÅŒeby na początek zostało mu duÅŒo krwi. jeden z kretynów się R&D wrzucił trochę więcej informacji do zeszłotygodniowego biuletynu, nazywają swoją małą miksturę \„MKU”\, cokolwiek to znaczy, i ÅŒe zawiera ona +book_lore.book_dust.page.3=prawdziwe domowe kłaczki. czy moÅŒesz w to uwierzyć to? jeden z najniebezpieczniejszych ich wynalazków i zawiera kurz. dziwnie wspomnieli równieÅŒ, ÅŒe trafia do slotu %d + +book_lore.book_mercury.name=Notatka +book_lore.book_mercury.author=Dave +book_lore.book_mercury.page.1=no to załatwia sprawę. nie licząc wymiotującej części krwi, raport toksykologiczny w większości przypomina zatrucie rtęcią. Dlaczego? poniewaÅŒ nasza mała mieszanka zawiera równieÅŒ rtęć! Zastanawiam się tylko, skąd biorą się te +book_lore.book_mercury.page.2=wszystkie rzeczy, kiedy są replikowane przez ciało? cokolwiek, rtęć trafia do slotu %d + +book_lore.book_flower.name=Notatka +book_lore.book_flower.author=Dave +book_lore.book_flower.page.1=pamiętasz, jak wspomniałem w mojej pierwszej notatce, ÅŒe związek jest w większości nieorganiczny? zgadnij co, starzec podzielił się czwartym składnikiem: ipomoea nil, rodzaj kwiatu. powój! moÅŒe to być spowodowane niską zawartością +book_lore.book_flower.page.2=siarki, cokolwiek by nie było, nie działa z innymi kwiatami. Powój trafia do slotu %d + +book_lore.book_syringe.name=Notatka +book_lore.book_syringe.author=Dave +book_lore.book_syringe.page.1=małe uzupełnienie do mojej piątej wiadomości, oczywiście musisz przechowywać te rzeczy MKU w pojemniku. głupki z R&D uÅŒywały zwykłych metalowych strzykawek, które dostali od lekarza. nadwyÅŒki towarów, jak przypuszczam, mają +book_lore.book_syringe.page.2=tysiące igieł leŌących wokół. metalowa strzykawka trafia do gniazda %d + +book_lore.resignation_note.name=List rezygnacyjny +book_lore.resignation_note.author=Kosma +book_lore.resignation_note.page.1=Kierownictwo ponownie zmniejszyło wczoraj nasz dział. Ci idioci są sami sobie winni, nie wiem czego oczekiwali po tym fiasku. Kto kurna ujawnia takie informacje? Tracimy miliony i +book_lore.resignation_note.page.2=to JA jestem teraz bez pracy. To ja jestem proszony o rezygnację. Mam nadzieję, ÅŒe wy, dupki, w końcu nauczycie się na nadmiarze swoich błędów i wyciągniecie ten kij z dupy. +book_lore.resignation_note.page.3=Nie wracam w piątek. Po prostu wyślijcie wypłatę. + +book_lore.memo_stocks.name=Memorandum wewnątrzkorporacyjne +book_lore.memo_stocks.page.1=Relacje inwestorskie - $ $ W liczbach przedstawionych w ostatnim raporcie kwartalnym pojawiły się raŌące rozbieÅŒności. Byłoby rozsądne, ÅŒeby dział finansowy dokonał pewnych korekt, aby nie było ÅŒadnych obaw. + +book_lore.memo_schrab_gsa.name=Memorandum wewnętrzne +book_lore.memo_schrab_gsa.page.1=Zarządzanie umowami — $ $ Dział prawny dokonał przełomu dzięki DLA. Nagrodzili nas harmonogramem 45 MILIARDÓW GSA na dalsze zakupy i badania saralloju. Przy obecnych szacunkach byłoby to co +book_lore.memo_schrab_gsa.page.2=co najmniej 40% zysku z powiązanych operacji, nie mówiąc juÅŒ o moÅŒliwości przyszłych kontraktów. Ze względu na poufny charakter wszelkie dowody fiskalne mają pozostać prywatne. + +book_lore.memo_schrab_rd.name=Memorandum wewnętrzne +book_lore.memo_schrab_rd.page.1=Działalność badawczo-rozwojowa — $ $ Naszą główną metodą produkcji saralloju jest nowy akcelerator cząstek. Jednak koszty energii są niebotycznie wysokie w porównaniu do wielkości produkcji. +book_lore.memo_schrab_rd.page.2=Doktor Schrabauer odkrył jednak nową interakcję – zwaną „Dziwną Oscylacją Leptona” – która moÅŒe znacznie obniÅŒyć koszty. W wyniku nie do końca poznanego procesu dostarczane elektrony są przekształcane +book_lore.memo_schrab_rd.page.3=w fotony o niezwykle wysokiej energii, poprzez dziwny magnes. Jest to skrajny wyjątek od wielu ustalonych praw konwersji cząstek, ale wstępne eksperymenty wykazały, ÅŒe te protony przekształcają się w kwarki +book_lore.memo_schrab_rd.page.4=górne i dolne, ostatecznie tworząc saralloj. Co dziwne, prototyp wymaga stopu wolframu z niewielką ilością saralloju. Ponadto wymagany jest specjalny kondensator, aby zanegować pozostały ładunek dodatni. + +book_lore.memo_schrab_nuke.name=Raport z badań +book_lore.memo_schrab_nuke.author=Doktor Schrabauer +book_lore.memo_schrab_nuke.page.1=Nasze ostatnie badania doprowadziły nas do wpływu wybuchów jądrowych na materiały. Dzięki naszych przyznanych pieniędzy *przypadkowo* przetestowaliśmy naszą teorię na temat bezpośredniej syntezy saralloju z uranu. Tylko nasz cyklotron +book_lore.memo_schrab_nuke.page.2=faktycznie stworzył wcześniej saralloj. Jednak podczas naszego podziemnego ujęcia w Everwerpen w rudzie uranu znaleziono maleńkie ślady saralloju. Cały czysty, metaliczny uran w pobliÅŒu uległ rozszczepieniu. W związku z tym, mając +book_lore.memo_schrab_nuke.page.3=wystarczającą ilość rudy uranu skoncentrowanego wokół materiału wybuchowego, a moÅŒe nawet brudną bombę bogatą w odpady zawierające materiał rozszczepialny, moÅŒna hipotetycznie stworzyć wystarczającą ilość saralloju, aby zebrać go ręcznie. + +book_lore.bf_bomb_1.name=Prywatne notatki +book_lore.bf_bomb_1.author=M. Porter +book_lore.bf_bomb_1.page.0=Trwało to wystarczająco długo, ale mój transfer został zaakceptowany. Z tymi nowymi absolwentami było juÅŒ trudno sobie poradzić, nie mówiąc juÅŒ o całym nieprofesjonalizmie prowadzącego. $ Nie wszystkie są dobre wieści – to laboratorium ukrywało dalsze szczegóły, a ja nie potrzebowałem więcej chaosu do kolejnego magicznego nowego odkrycia. +book_lore.bf_bomb_1.page.1=Oczywiście tak było. Absolwenci mieli wątpliwości (zaskakujące, zwaÅŒywszy na ich bystre oczy), ale mój jedyny... kompetentny? kolega faktycznie dostał w swoje ręce rozdawanie elementarzów. Musi mieć więcej połączeń, niÅŒ myślałem. Jego notatka jest zniechęcająca: +book_lore.bf_bomb_1.page.2=najwyraźniej istnieje jeszcze KOLEJNY cudowny materiał, który wydobyli z jakiejś mikstury antymaterii i izotopu brzegowego. Broszura nazywa to „SWIRLMAT” – do diabła, jeśli wiem – i to wszystko. Nic dziwnego, ÅŒe chcieli fizyka teoretyka, +book_lore.bf_bomb_1.page.3=jeszcze nawet nie wiedzą, co to jest. Tak czy inaczej, praktycznie kaÅŒda praca byłaby lepsza niÅŒ moje stare stanowisko, więc nie mogę narzekać na szkicowość. + +ook_lore.bf_bomb_2.name=Prywatne notatki +book_lore.bf_bomb_2.author=M. Porter +book_lore.bf_bomb_2.page.0=Pomimo braku informacji w tym elementarzu, wciÄ…ÅŒ miałem nadzieję, ÅŒe wiedzą nieco więcej. Zupełnie nie. Co drugi starszy badacz ma ślepą wiarę w ten materiał; ich propozycje były praktycznie biblijne. Prawie zaniemówiłem. +book_lore.bf_bomb_2.page.1=A jednak nie mogę ich nawet winić. Swirlmat nie ma cholernego sensu - jest zupełnie inny niÅŒ jakakolwiek inna substancja, którą wcześniej widziałem. Jego wygląd był niemal przeraÅŒający, dosłowna masa wirujących kolorów, z ciemniejszymi liniami przenikającymi przez neonowozieloną powierzchnię. +book_lore.bf_bomb_2.page.2=Co gorsza, to coś jest źródłem energii. Istnienie naszej próbki jest pogwałceniem ALARA: laboratorium zostało opuszczone, kiedy przybyła, a jedyna osoba na tyle odwaÅŒna (niejaki dr Melfyn) przywdziała hazmat poziomu A tylko po to, by przenieść go na 20 metrów. +book_lore.bf_bomb_2.page.3=Dane empiryczne nie są lepsze, poniewaÅŒ łamiemy pierwszą zasadę termodynamiki, określając ilość emitowanej energii. Bycie w pobliÅŒu tego czegoś - nawet za metrem ołowiu - było przeraÅŒające. Po zakończeniu spektroskopii wybiegliśmy z komory +book_lore.bf_bomb_2.page.4=i nie uzyskaliśmy z niej nic nowego. Ci idioci z zespołu naukowego, BoÅŒe, nawet się nie wahali po tym wszystkim. Siedzenie podczas tych „dyskusji” było okropne; ten znachor naczelny badacz nawet plotkował, ÅŒe zakaz testów zostanie zniesiony, ÅŒe w nadchodzących tygodniach +book_lore.bf_bomb_2.page.5=moÅŒemy budować bomby z gówna, kto przy zdrowych zmysłach by nad tym pracował? Do diabła, jedyny zdrowy na umyśle asystent (Andrew) nazwał to „balefire” – poniewaÅŒ spalenie na stosie pogrzebowym byłoby w porównaniu z tym bezbolesne. + +book_lore.bf_bomb_3.name=Prywatne notatki +book_lore.bf_bomb_3.author=M. Porter +book_lore.bf_bomb_3.page.0=Wraz z zespołem dokonaliśmy kilku przełomów. Nacisk na separację - odizolowanie się od bardziej poboÅŒnych sprawiło, ÅŒe praca tam była o wiele bardziej znośna. ChociaÅŒ nadal nie mamy pojęcia o rzeczywistych właściwościach balefire (trudno jest przeanalizować +book_lore.bf_bomb_3.page.1=próbkę, która smaÅŒy twój sprzęt), jego interakcje z inną materią okazały się owocne. Warto zauwaÅŒyć, ÅŒe zsyntetyzowali formę „gazową”: ze wszystkich ludzi Andrew poinformował mnie, ÅŒe tak naprawdę był to koloid składający się z mikroskopijnych cząsteczek ognia zawieszonych w jakimś +book_lore.bf_bomb_3.page.2=szlachetnym gazie. KaÅŒda cząsteczka jest otoczona przez dodatnio naładowany „bąbel” zjonizowanego gazu, który zapobiega jego osiadaniu. Kto mógł przypuszczać, ÅŒe śmiertelne promieniowanie gamma przynosi korzyści? Nie ja. $ Wolę nie myśleć o tym, jak +book_lore.bf_bomb_3.page.3=przekształcili próbkę w cząsteczkę, ale nie mogę nie docenić uÅŒyteczności tego gazowego balefire — znacznie bezpieczniej jest na nim eksperymentować. $ Mówiąc o bezpieczeństwie, główny badacz (w akcie bezdusznego lekcewaÅŒenia) dokonał odkrycia, które równieÅŒ prawie urwało mu głowę. +book_lore.bf_bomb_3.page.4=Postanowił „zabrudzić” komórkę naszego nowego koloidu bezpośrednią interakcją z jakąś bardzo kosztowną antymaterią: wynikająca z tego eksplozja zamieniła stół, na którym stał, w kawałek wybielonego promieniowaniem ÅŒuÅŒla, wyrzeźbiła prawie idealną półkulę na górze i +book_lore.bf_bomb_3.page.5=dał głowie zdrową dawkę ARS. Chyba juÅŒ wiemy, jak sprawić, by wybuchła, ale BoÅŒe, niektórzy ludzie... + +book_lore.bf_bomb_4.name=Prywatne notatki +book_lore.bf_bomb_4.author=M. Porter +book_lore.bf_bomb_4.page.0=Po prostu nie mogę uciec od mojej starej pracy. To jedyne miejsce, które zatrudnia pomimo całego tego zapomnianego przez Boga zamieszania, ale nie wrócę do tej dziury. $ Kusili mnie tylko dlatego, ÅŒe muszę wyjść, i to szybko. Pamiętasz traktat o testach atmosferycznych, z którego wycofaliśmy się tydzień temu? +book_lore.bf_bomb_4.page.1=CóŌ, ten dupek odpowiedzialny za nasze laboratorium, chociaÅŒ raz coś załatwił. Potępienie przyszło wraz z falą nowych „naukowców”, którzy dołączyli tylko po to, abyśmy mogli uÅŒyć balefire jako broni. Brak krytycznej myśli tutaj jest naprawdę zdumiewający – niech go Bóg błogosławi, Andrew nawet wyskoczył z zespołu +book_lore.bf_bomb_4.page.2=w chwili, gdy powstał pierwszy pierdolony PROJEKT BOMBY. Ten dupek Melfyn wyglądał na bardzo zadowolonego ze swojego małego mechanizmu – moÅŒe zaraził się robakami mózgowymi od noszenia tej próbki? – co wiązało się z jakimś głupim gównem, uÅŒywając zestalonego, podstawowego balefire i baterii HV. +book_lore.bf_bomb_4.page.3=Najwyraźniej forma ma znaczenie dla produkcji energii i metody aktywacji czy czegokolwiek, trochę jak uran kontra pluton w zwykłych bombach atomowych, ale końcowym rezultatem jest początkowy szok rozpoczynający eksplozję. Wydaje mi się to zabawne, śmieszne nawet. +book_lore.bf_bomb_4.page.4=Wszyscy kładą taki nacisk na aktywację; ignorują rzeczywisty mechanizm tego wszystkiego, poniewaÅŒ nie mają pojęcia, jak to działa! W tym momencie równie dobrze moÅŒe to być magia, a mimo to wciÄ…ÅŒ próbują ją przekręcać i naginać – tylko po to, by uzyskać więcej broni wojennej. + +book_lore.bf_bomb_5.name=Prywatne notatki +book_lore.bf_bomb_5.author=M. Porter +book_lore.bf_bomb_5.page.0=Po prostu... nie mogę się z tym pogodzić, nawet kilka dni później. To było z góry przesądzone, biorąc pod uwagę to, jak lekcewaŌący był zespół naukowy w kwestii bezpieczeństwa. $ $ Doktor Melfyn, MS, odszedł. Martwy, być moÅŒe. Widziałem to na własne oczy, w ich komorze testowej. +book_lore.bf_bomb_5.page.1=Właśnie dostaliśmy kolejną partię czystego balefire, a on odzyskał sprzęt elektryczny i źródło energii, aby przetestować swoją propozycję. Nie wiem, co to spowodowało (czy zasilanie było włączone? czy zaczął za wcześnie?), ale wydawało się, ÅŒe postępowało to w boleśnie zwolnionym tempie, +book_lore.bf_bomb_5.page.2=gdy zielone światło pochłonęło stół, baterię i stojącego tylko doktora Melfyna metr dalej. Nawet kiedy stół zamienił się w kałuŌę płonącego metalu na podłodze, nie płonął. Nie wiem, co widziałem w jego oczach... $ $ PrzeraÅŒenie, czy podziw +book_lore.bf_bomb_5.page.3=dla jego dalszego przetrwania? Czymkolwiek był nasz „cudowny” materiał, nie obchodziło go to. Z jasnym blaskiem światła zniknął w następnej chwili. Czy został odparowany? spalony? unicestwiony? wysłany do samego jebanego piekła, sam juÅŒ nie wiem! +book_lore.bf_bomb_5.page.4=Główny badacz mnie wkurza. Powiedział, ÅŒe moglibyśmy być bardziej ostroÅŒni, dalej jeździć cięŌarówkami, niezaleÅŒnie od innych poprawiających morale brudów, które wypluł. Ten dupek nigdy się nie domyśli, ÅŒe przez igranie z ogniem moÅŒe się poparzyć. $ $ Nie zawracałem sobie głowy +book_lore.bf_bomb_5.page.5=rezygnacją, po prostu złapałem swoje pierdoły i odszedłem. W kaÅŒdym razie nie ma to znaczenia; biorąc pod uwagę brak telefonów i chmurę grzybową, która unosiła się nad moim (teraz byłym) miejscem pracy, albo wszystko wysadzili w powietrze, albo wkroczyli w pełną jurysdykcję wojskową. +book_lore.bf_bomb_5.page.6=NaleÅŒy dokonać istotnego rozróŌnienia między sekcją a WISEKCJĄ, które najwyraźniej zostało przez nich pominięte. Mogą przeprowadzać sekcję metalu lub atomów, ile chcą, ale wdzieranie się w rzeczywistość i wiwisekcja samej rzeczywistości zakończy się tylko większą liczbą doktorów Melfynów. Kto wie! +book_lore.bf_bomb_5.page.7=Rząd chce w końcu wpakować to gówno w bomby, moÅŒe zobaczymy jeszcze parę wojen, parę milionów pogodzonych z losem gorszym od śmierci. Nie mogą tego wiecznie ukrywać. $ $ Nie obchodzi mnie to. Nigdy więcej. Proszę, BoÅŒe, pozwól mi wrócić +book_lore.bf_bomb_5.page.8=do prawdziwej nauki. $ $ Do diabła, Mae, weź się w garść... + +book_lore.beacon.name=Instrukcja obsługi sygnalizatora świetlnego +book_lore.beacon.author=Flim Flam Industries +book_lore.beacon.page.0=Dziękujemy za zakup Podświetlanego Sygnalizatora Świetlnego Mk.2 (wer. 1.3)! Ta niewielka ksiÄ…ÅŒeczka zawiera krótkie wprowadzenie do działania sygnalizatora, a takÅŒe jego wewnętrznego działania. +book_lore.beacon.page.1=Rozdział 1: Architektura $ KaÅŒda jednostka składa się z czterech głównych części: Obwodu sterującego, latarni, syreny mgłowej oraz obudowy, w której znajdują się pozostałe części. Szczegółowe objaśnienie obwodu głównego +book_lore.beacon.page.2=znajduje się na schemacie obwodu znajdującym się po wewnętrznej stronie pokrywy serwisowej obudowy. Latarnia składa się z poliwęglanowej obudowy zawierającej dwukolorową ÅŒarówkę halogenową o mocy 250 W ze standardowym gniazdem 200 mm, zamienniki +book_lore.beacon.page.3=ÅŒarówki moÅŒna zamówić w naszych sklepach. Å»arówki innych firm nie są zalecane, poniewaÅŒ nie moÅŒemy zapewnić bezpiecznego działania. Obudowa wykonana jest ze specjalistycznej stali nierdzewnej ocynkowanej i jest odporna na warunki atmosferyczne. +book_lore.beacon.page.4=Rozdział 2: Latarnia $ Podstawowym zastosowaniem latarni jest zapewnienie światła w celu ułatwienia konserwacji w trudnych warunkach pogodowych oraz wskaźnik stanu. Jeśli autotest po włączeniu zasilania (POST) zakończy się niepowodzeniem, latarnia +book_lore.beacon.page.5=zaświeci się na czerwono, w przeciwnym razie zaświeci się na zielono. NaleÅŒy pamiętać, ÅŒe kolory mogą się róŌnić w zaleÅŒności od ÅŒarówki zastępczej. +book_lore.beacon.page.6=Rozdział 3: Syrena mgłowa $ Syrena mgłowa jest głównym urządzeniem komunikacyjnym sygnalizatora. Sygnalizator jest przeznaczony do komunikacji peer-to-peer (P2P), jak równieÅŒ do rozgłaszania wiadomości. +book_lore.beacon.page.7=Rozdział 4: Peer-to-Peer $ Szczegółowe informacje na temat komunikacji moÅŒna znaleźć w podręczniku komunikacji. Krótki opis nawiązywania połączenia P2P jest następujący: Najpierw sygnalizator musi dać sygnał „ROZPOCZNIJ POŁĄCZENIE”, +book_lore.beacon.page.8=w postaci pojedynczego, długiego dźwięku. Wszyscy dostępni partnerzy równieÅŒ powinni odpowiedzieć jednym długim tonem (kolejność określona przez odległość, a takÅŒe wytyczne dotyczące komunikacji opisane w podręczniku, sekcja „Odpowiadanie na połączenie”) +book_lore.beacon.page.9=Gdy Ōądany peer odpowie, daj „AKCEPTUJ POŁĄCZENIE”. sygnału, składającego się z dwóch długich tonów, peer równieÅŒ odpowie dwoma długimi tonami. Cała późniejsza komunikacja musi odbywać się przy uÅŒyciu wstępnie wynegocjowanych sygnałów, +book_lore.beacon.page.10=najczęściej przy uÅŒyciu standardu FAR-5M. Komunikacja zakończy się natychmiast, jeśli nie wynegocjowano ÅŒadnego standardu, słuŌąc jako „ping”. Jeśli komunikacja będzie kontynuowana, połączenie moÅŒna zakończyć kolejnym długim pojedynczym tonem „KONIEC POŁĄCZENIA”. +book_lore.beacon.page.11=Rozdział 5: Gwarancja $ [ strona celowo pozostawiona pusta ] + +cannery.f1=[ Naciśnij F1 aby uzyskać pomoc ] +cannery.centrifuge=Wirówka wzbogacająca +cannery.centrifuge.0=Wirówki wzbogacające mogą być uzupełnione gazem za pomocą zwykłych przewodów płynowych. +cannery.centrifuge.1=Większość receptur wymaga wielu wirówek. Produkty pośrednie nie mogą być transportowane rurami. +cannery.centrifuge.2=Ta strona działa jak łącznik, który wyprowadza produkt pośredni do sąsiedniej wirówki. +cannery.centrifuge.3=Heksafluorek uranu moÅŒna przetwarzać za pomocą zaledwie dwóch wirówek, co jednak spowoduje wytworzenie paliwa uranowego i uranu-238. +cannery.centrifuge.4=Pełne przetworzenie go na uran-235 i uran-238 wymaga łącznie czterech wirówek. +cannery.centrifuge.5=Niektóre przepisy wymagają równieÅŒ ulepszenia przetaktowywania wirówki. +cannery.crucible=Tygiel +cannery.crucible.0=Tygiel słuÅŒy do wytapiania rud, sztabek lub innych metalowych przedmiotów do stopowania i odlewania ich w róŌne kształty. +cannery.crucible.1=Wymaga zewnętrznego źródła ciepła podłączonego od dołu, takiego jak palenisko. +cannery.crucible.2=Po podgrzaniu tygla moÅŒna uÅŒywać na dwa sposoby, z szablonem receptury lub bez niego. +cannery.crucible.3=Tygiel posiada dwa bufory do przechowywania materiału: +cannery.crucible.4=Bufor po lewej stronie przeznaczony jest na §aprodukty uboczne§r, wszystkie materiały wytopione bez szablonu receptury wylądują tutaj. +cannery.crucible.5=Jeśli umieszczony jest przepis, w tym miejscu będą równieÅŒ przechowywane materiały niezgodne z recepturą. +cannery.crucible.6=Materiały w tym buforze nie będą ze sobą reagowały, moÅŒna je tylko wyprowadzać z zielonego wylotu do odlewania. +cannery.crucible.7=Bufor po prawej stronie jest przeznaczony na §cprzepisy§r, jeśli receptura jest zainstalowana i dany materiał jest odpowiedni dla tej receptury, wyląduje tutaj. +cannery.crucible.8=Materiały będą powoli łączyć się w materiał wyjściowy, który jest automatycznie wyprowadzany z czerwonego wylotu. +cannery.crucible.9=ZauwaÅŒ, ÅŒe tylko ten bufor obsługuje receptury. Jeśli szablon zostanie umieszczony wstecz, materiały w buforze produktów ubocznych nie będą się łączyć ani przenosić do bufora receptur. +cannery.crucible.10=Wylot automatycznie wyprowadza materiał, jeśli cel jest prawidłowy, na przykład kanał odlewniczy lub forma. +cannery.crucible.11=Podobnie jak w przypadku wszystkich bloków odlewniczych, do usunięcia całego materiału z tygla moÅŒna uÅŒyć łopaty. + +cannery.fensu=FEnSU +cannery.fensu.0=FEnSU jest w stanie przechowywać absurdalne ilości energii, ponad 9EHE (to jest dziewiątka i 18 zer). +cannery.fensu.1=Jest tylko jedno złącze zasilania, które się znajduje na spodzie. +cannery.fensu.2=Jest to równieÅŒ jedyne miejsce, w którym FEnSU moÅŒe odbierać sygnał z czerwonego kamienia. + +cannery.firebox=Palenisko +cannery.firebox.0=Palenisko spala łatwopalne przedmioty w celu wytworzenia ciepła. +cannery.firebox.1=MoÅŒe spalić kaÅŒdy łatwopalny przedmiot, chociaÅŒ paliwa wyÅŒszej jakości, takie jak węgiel, koks i paliwo stałe, palą się dłuÅŒej i mają wyÅŒszą temperaturę. +cannery.firebox.2=Ciepło jest oddawane przez miedziany styk w górnej części paleniska. Maszyny z identycznym stykiem na spodzie mogą odbierać ciepło po umieszczeniu na górze paleniska. +cannery.firebox.3=Jeśli ciepło nie jest zuÅŒywane, a bufor ciepła się zapełni, palenisko wyłączy się, aby zapobiec marnowaniu paliwa. +cannery.firebox.4=Jedną z takich maszyn jest silnik Stirlinga, który zamienia ciepło bezpośrednio w energię. + +cannery.foundryChannel=Kanał odlewniczy +cannery.foundryChannel.0=Kanały odlewnicze słuŌą do transportu stopionego materiału z tygla lub zbiornika magazynowego do form. +cannery.foundryChannel.1=Kanały mogą przyjmować materiał zarówno od góry - przez wylot lub bezpośrednio z tygla - lub z boku z innych kanałów. +cannery.foundryChannel.2=Podczas transportu materiałów kanały będą priorytetowały bloki takie jak wyloty i płytkie formy. +cannery.foundryChannel.3=Gdy nie moÅŒe dostarczyć wylotu lub formy, materiał popłynie do sąsiedniego kanału. +cannery.foundryChannel.4=Pozostałości moÅŒna usunąć za pomocą łopaty. + +cannery.silex=FEL i SILEX +cannery.silex.0=Laser na swobodnych elektronach (FEL) wykorzystuje energię i kryształ lasera do wytworzenia potęŌnej wiązki laserowej. +cannery.silex.1=UwaÅŒaj, bo laser będzie palić/topić słabsze bloki... +cannery.silex.2=...ale nie przeciwwybuchowe. +cannery.silex.3=FEL słuÅŒy do zasilania laserowej komory separacji izotopów (SILEX). FEL i SILEX muszą być oddalone od siebie o co najmniej dwa bloki. +cannery.silex.4=Laser musi wejść przez szklane otwory SILEX. Niepoprawne wycelowanie moÅŒe go zniszczyć. +cannery.silex.5=Otwory po bokach moÅŒna wykorzystać do podłączenia przewodów płynowych do SILEX. +cannery.silex.6=Oprócz dwóch złączy po bokach, na dole znajduje się trzecie ukryte złącze, z którego moÅŒna wyciągać przedmioty. +cannery.silex.7=KaÅŒda receptura wymaga określonego typu lasera. UÅŒycie mocniejszego typu niÅŒ wymagany spowoduje szybsze przetwarzanie elementów. +cannery.silex.8=Jeden FEL moÅŒe zasilać do 5 SILEX. KaÅŒdy SILEX musi być oddalony od siebie o jeden blok. + +cannery.stirling=Silnik Stirlinga +cannery.stirling.0=Silnik Stirlinga wykorzystuje energię cieplną z zewnętrznych źródeł do wytwarzania mocy. +cannery.stirling.1=Musi być umieszczony na maszynie wytwarzającej ciepło, takiej jak palenisko. +cannery.stirling.2=Ilość ciepła, którą moÅŒe wykorzystać, jest jednak ograniczona, nadmierne kręcenie moÅŒe prowadzić do katastrofalnej awarii. +cannery.stirling.3=Ulepszona wersja moÅŒe wytrzymać znacznie więcej ciepła bez psucia się. + +cannery.willow=Wierzba musztardowa +cannery.willow.0=Wierzba musztarda to roślina, która umoÅŒliwia pozyskiwanie kadmu metalicznego. +cannery.willow.1=Wierzby moÅŒna sadzić na ziemi, trawie, a nawet martwej/oleistej ziemi, ale do wzrostu potrzebują wody. +cannery.willow.2=Wierzby moÅŒna nawozić mączką kostną lub nawozem przemysłowym. Nie potrzebują światła do wzrostu. +cannery.willow.3=Po drugim etapie wzrostu będą potrzebować dodatkowego bloku przestrzeni nad nimi, aby dalej rosnąć. +cannery.willow.4=Po czwartej fazie wzrostu wymagają pod nimi martwej lub oleistej ziemi. +cannery.willow.5=MoÅŒna to zrobić albo ręcznie sadząc wierzby na martwej/oleistej glebie, albo mając w pobliÅŒu wieŌę do szczelinowania hydraulicznego, która stale zanieczyszcza ziemię. +cannery.willow.6=Po osiągnięciu ostatniego etapu wierzba usunie zanieczyszczenia z ziemi, zamieniając martwą/oleistą ziemię z powrotem w zwykłą ziemię. +cannery.willow.7=Teraz moÅŒna zbierać liście wierzby. Złamanie górnego bloku spowoduje upuszczenie małej wierzby, 3-6 liści i zachowanie dolnej części rośliny w nienaruszonym stanie. +cannery.willow.8=Wkrótce roślina zacznie ponownie rosnąć, wydając więcej liści, jeśli ziemia zostanie zastąpiona oleistą ziemią. Liście moÅŒna przetwarzać na proszek kadmu za pomocą zakwaszacza rud. +cannery.willow.9=Zbiór liści wierzby moÅŒna zautomatyzować za pomocą automatycznej piły tarczowej, która łamie tylko rośliny gotowe do zbioru. + +chem.ARSENIC=Ekstrakcja arsenu +chem.ASPHALT=Produkcja asfaltu +chem.BAKELITE=Produkcja bakelitu +chem.BALEFIRE=Mieszanie Paliwa Rakietowego BF +chem.BP_BIOFUEL=Transestryfikacja biopaliw +chem.BP_BIOGAS=Produkcja biogazu +chem.C4=Synteza C-4 +chem.CC_CENTRIFUGE=Separacja chlorokalcytu +chem.CC_ELECTROLYSIS=Elektroliza chlorku wapnia +chem.CC_HEATING=Zaawansowane upłynnianie węgla +chem.CC_HEAVY=Podstawowe upłynnianie węgla +chem.CC_I=Ulepszone upłynnianie węgla +chem.CC_NAPHTHA=Upłynnianie węgla naftowego +chem.CC_OIL=Upłynnianie węgla +chem.CIRCUIT_4=Produkcja obwodów przetaktowanych +chem.CIRCUIT_5=Produkcja obwodów wysokiej wydajności +chem.CO2=Produkcja dwutlenku węgla +chem.COALGAS_LEADED=Mieszanie benzyny z węglem ołowiowym +chem.COLTAN_CLEANING=Oczyszczanie koltanu +chem.COLTAN_CRYSTAL=Krystalizacja tantalu +chem.COLTAN_PAIN=Produkcja tantalitu pandemonium(III). +chem.CONCRETE=Produkcja betonu +chem.CONCRETE_ASBESTOS=Produkcja betonu azbestowego +chem.COOLANT=Mieszanie chłodziwa +chem.CORDITE=Produkcja kordytu +chem.CRYOGEL=Mieszanie krioÅŒeli +chem.DESH=Produkcja Deshu +chem.DEUTERIUM=Ekstrakcja deuteru +chem.DUCRETE=Produkcja dukretu +chem.DYN_DNT=Dynosynteza dineutronium +chem.DYN_EUPH=Dynosynteza eufemu +chem.DYN_SCHRAB=Dynosynteza schrabidu +chem.DYNAMITE=Synteza dynamitu +chem.ELECTROLYSIS=Krioelektroliza +chem.EPEARL=Synteza perły Kresu +chem.ETHANOL=Produkcja etanolu +chem.FC_BITUMEN=Kraking asphaltu +chem.FC_DIESEL_KEROSENE=Kraking oleju napędowego +chem.FC_GAS_PETROLEUM=Kraking gazowy +chem.FC_I_NAPHTHA=Kraking oleju przemysłowego +chem.FC_KEROSENE_PETROLEUM=Kraking kerozyny +chem.FP_HEAVYOIL=Przetwarzanie oleju cięŌkiego +chem.FP_LIGHTOIL=Przetwarzanie oleju lekkiego +chem.FP_NAPHTHA=Przetwarzanie nafty +chem.FP_SMEAR=Przetwarzanie oleju przemysłowego +chem.FR_PETROIL=Mieszanie benzyny cięŌkiej +chem.FR_REOIL=Ponowne przetwarzanie oleju +chem.FRACKSOL=Produkcja roztworu do szczelinowania +chem.GASOLINE=Produkcja gazoliny +chem.GASOLINE_LEADED=Mieszanie gazoliny ołowiowej +chem.HEAVY_ELECTROLYSIS=Krioelektroliza cięŌkiej wody +chem.HELIUM3=Ekstrakcja helu-3 z murawy księŌycowej +chem.KEVLAR=Produkcja mieszanki kevlarowej +chem.LPG=Skraplanie gazu ziemnego +chem.LUBRICANT=Mieszanie smaru +chem.METH=Synteza metamfetaminy +chem.NITAN=Mieszanie superpaliwa NITAN +chem.NITRIC_ACID=Produkcja kwasu azotowego +chem.OIL_SAND=Ekstrakcja piasku smołowego +chem.OSMIRIDIUM_DEATH=Produkcja roztworu osmirydowego +chem.PC_ELECTROLYSIS=Elektroliza chlorku potasu +chem.PEROXIDE=Produkcja nadtlenku wodoru +chem.PET=Synteza PET +chem.PETROIL_LEADED=Mieszanie benzyny ołowiowej +chem.POLYMER=Polimeryzacja +chem.PUF6=Produkcja sześciofluorku plutonu +chem.RUBBER=Produkcja gumy +chem.SAS3=Produkcja trisiarczku schrabidu +chem.SATURN=Produkcja saturnytu +chem.SCHRABIDATE=Produkcja schrabidanu ÅŒelaza +chem.SCHRABIDIC=Mieszanie kwasu schrabidowego +chem.SF_BIOFUEL=Solidyfikacja biopaliw +chem.SF_BIOGAS=Solidyfikacja biogazu +chem.SF_DIESEL=Solidyfikacja oleju napędowego +chem.SF_GAS=Solidyfikacja gazu ziemnego +chem.SF_HEATINGOIL=Solidyfikacja oleju opałowego +chem.SF_HEAVYOIL=Solidyfikacja oleju cięŌkiego +chem.SF_KEROSENE=Solidyfikacja kerozyny +chem.SF_LIGHTOIL=Solidyfikacja oleju lekkiego +chem.SF_LUBRICANT=Solidyfikacja smaru +chem.SF_NAPHTHA=Solidyfikacja nafty +chem.SF_OIL=Solidyfikacja ropy naftowej +chem.SF_PETROIL=Solidyfikacja benzyny +chem.SF_PETROLEUM=Solidyfikacja gazu ziemnego +chem.SF_RECLAIMED=Solidyfikacja oleju z odzysku +chem.SF_SMEAR=Solidyfikacja oleju przemysłowego +chem.SOLID_FUEL=Produkcja stałego paliwa rakietowego +chem.SOLVENT=Mieszanie rozpuszczalników organicznych +chem.STEAM=Gotowanie wody +chem.SULFURIC_ACID=Produkcja kwasu siarkowego +chem.TATB=Synteza TATB +chem.TEL=Mieszanie TEL +chem.TEST=Test +chem.TNT=Synteza TNT +chem.UF6=Produkcja sześciofluorku uranu +chem.VIT_GAS=Zeszklenie gazowych odpadów jądrowych +chem.VIT_LIQUID=Zeszklenie płynnych odpadów jądrowych +chem.XENON=Cykl ksenonowy Linde +chem.XENON_OXY=Wzmocniony cykl ksenonowy Linde +chem.YELLOWCAKE=Produkcja Ōółtego ciasta + +commands.satellite.no_satellite=Nie znaleziono satelity o tej częstotliwości! +commands.satellite.not_a_satellite=Trzymany przedmiot nie jest satelitą! +commands.satellite.satellite_descended=Satelita zszedł pomyślnie. +commands.satellite.satellite_orbited=Satelita wystrzelony. +commands.satellite.should_be_run_as_player=Ta komenda powinna być uruchomiona przez gracza! +container.amsBase=Podstawa AMS (Dekoracja) +container.amsEmitter=AMS Emitter (Dekoracja) +container.amsLimiter=AMS Stabilizer (Dekoracja) +container.anvil=Kowadło poziomu %s +container.arcFurnace=Piec łukowy +container.armorTable=Stół modyfikacji zbroi +container.assembler=Maszyna MontaÅŒowa +container.autocrafter=Automatyczny stół rzemieślniczy +container.barrel=Beczka +container.bat9000=Wielki Walony Zbiornik 9000 +container.battery=Magazyn energii +container.bombMulti=Bomba wielozadaniowa +container.catalyticReformer=Reformator katalityczny +container.centrifuge=Wirówka +container.chemplant=Zakład chemiczny +container.compactLauncher=Kompaktowa platforma startowa +container.craneBoxer=Pakowacz konwejerowy +container.craneExtractor=Ejektor konwejerowy +container.craneGrabber=Chwytak konwejerowy +container.craneInserter=Wprowadzacz konwejerowy +container.craneRouter=Ruter konwejerowy +container.craneUnboxer=Rozpakowywacz konwejerowy +container.crateDesh=Deshowa skrzynia +container.crateIron=Å»elazna skrzynia +container.crateSteel=Stalowa skrzynia +container.crateTemplate=Skrzynia szablonowa +container.crateTungsten=Tungstenowa skrzynia +container.crystallizer=Zakwaszacz rud +container.cyclotron=Cyklotron +container.dfcCore=Rdzeń Mrocznej Fuzji (DFC) +container.dfcEmitter=Emiter DFC +container.dfcInjector=Wtryskiwacz paliwa DFC +container.dfcReceiver=Odbiornik DFC +container.dfcStabilizer=Stabilizator DFC +container.diFurnace=Piec hutniczy +container.diFurnaceRTG=Jądrowy piec hutniczy +container.electricFurnace=Piec elektryczny +container.epress=Prasa elektryczna +container.factoryAdvanced=Zaawansowana fabryka +container.factoryTitanium=Podstawowa fabryka +container.fluidtank=Zbiornik +container.fileCabinet=Szafka na akta +container.forceField=Emiter pola siłowego +container.frackingTower=WieÅŒa do szczelinowania hydraulicznego +container.furnaceCombination=Piec kombinowany +container.furnaceIron=Å»elazny piec +container.furnaceSteel=Stalowy piec +container.fusionMultiblock=DuÅŒy reaktor fuzyjny +container.fusionaryWatzPlant=Fuzjonaryczna fabryka Watz +container.gasCentrifuge=Wirówka gazowa +container.gasFlare=Pochodnia gazowa +container.generator=Reaktor jądrowy +container.hadron=Akcelerator cząsteczek +container.heaterFirebox=Palenisko +container.heaterHeatex=Wymiennik ciepła +container.heaterOilburner=Palnik płynów +container.heaterOven=Piekarnik grzewczy +container.iGenerator=Generator przemysłowy +container.keyForge=Stół ślusarski +container.launchPad=Platforma startowa rakiet +container.launchTable=DuÅŒa platforma startowa +container.leadBox=Skrzynia przechowawcza +container.machineBoiler=Podgrzewacz oleju +container.machineCMB=Piec stali CMB +container.machineCoal=Generator spalinowy +container.machineCoker=Jednostka koksownicza +container.machineCompressor=Kompresor +container.machineCrucible=Tygiel +container.machineDiesel=Generator olejowo napędowy +container.machineElectricBoiler=Elektryczny podgrzewacz oleju +container.machineElectrolyser=Maszyna do elektrolizy +container.machineFEL=FEL +container.machineITER=Reaktor fuzyjny +container.machineLargeTurbine=Przemysłowa turbina parowa +container.machineLiquefactor=Upłynniacz +container.machineMixer=Mikser przemysłowy +container.machineRefinery=Rafineria ropy +container.machineSelenium=Silnik radialny +container.machineShredder=Niszczarka +container.machineSILEX=SILEX +container.machineSolidifier=Utwardzacz +container.machineTurbine=Turbina parowa +container.machineTurbofan=Turbofan +container.machine_schrabidium_transmutator=Urządzenie do transmutacji schrabidu +container.massStorage=Magazyn +container.microwave=Mikrofalówka +container.miningDrill=Automatyczne wiertło górnicze +container.miningLaser=Laser górniczy +container.missileAssembly=Stacja montaÅŒu rakiet +container.nukeBoy=Little Boy +container.nukeCustom=Niestandardowa atomówka +container.nukeFleija=F.L.E.I.J.A. +container.nukeFstbmb=Bomba balefire +container.nukeFurnace=Piec o napędzie atomowym +container.nukeGadget=GadÅŒet +container.nukeMan=Fat Man +container.nukeMike=Ivy Mike +container.nukeN2=Mina N² +container.nukeN45=Mina morska N45 +container.nukePrototype=Prototyp +container.nukeSolinium=Niebieska Płukanka +container.nukeTsar=Car-bomba +container.oilWell=Wiertnica naftowa +container.orbus=CięŌki magazyn antymaterii +container.plasmaHeater=Podgrzewacz plazmowy +container.press=Prasa spalinowa +container.puf6_tank=Zbiornik PuF6 +container.pumpjack=Kiwon +container.radGen=Silnik zasilany promieniowaniem +container.radar=Radar +container.radiobox=Nadajnik FM +container.radiolysis=Komora RTG i radiolizy +container.radiorec=Radio FM +container.rbmkBoiler=Kanał parowy RBMK +container.rbmkControl=Pręty kontrolne RBMK +container.rbmkControlAuto=Automatyczne pręty kontrolne RBMK +container.rbmkHeater=Podgrzewacz płynów RBMK +container.rbmkOutgasser=Kanał napromieniania RBMK +container.rbmkReaSim=Pręt paliwowy RBMK (ReaSim) +container.rbmkRod=Pręt paliwowy RBMK +container.rbmkStorage=Kolumna magazynowa RBMK +container.reactorBreeding=Reaktor prędki powielający +container.reactorControl=Blok zdalnego sterowania reaktoru +container.reactorLarge=DuÅŒy reaktor jądrowy +container.reactorResearch=Reaktor badawczy +container.reix=Komputer główny Rei-X +container.rtg=Generator RT +container.rtgFurnace=Piec RTG +container.rttyCounter=Redstone'owy radiowy licznik przedmiotów +container.rttyReceiver=Redstone'owy odbiornik radiowy +container.rttySender=Redstone'owy nadajnik radiowy +container.safe=Sejf +container.satDock=Lądowisko ładunkowe +container.satLinker=Urządzenie SatLink +container.siren=Syrena +container.soyuzCapsule=Kapsuła do lądowania ładunku +container.soyuzLauncher=Platforma startowa Sojuza +container.storageDrum=Bęben do usuwania odpadów jądrowych +container.teleLinker=Urządzenie TelLink +container.teleporter=Teleporter +container.trainTram=Elektryczny tramwaj platformowy +container.turbinegas=Turbina gazowa o cyklu kombinowanym +container.turretArty=Greg +container.turretChekhov=Pistolet Czechowa +container.turretFriendly=Pan Przyjazny +container.turretFritz=Fritz +container.turretHIMARS=Henry +container.turretHoward=Howard +container.turretJeremy=Jeremiasz +container.turretMaxwell=Maxwell +container.turretRichard=Ryszard +container.turretSentry=Brown +container.turretTauon=Taon +container.uf6_tank=Zbiornik UF6 +container.vacuumDistill=Rafineria próŌniowa +container.wasteDrum=Bęben po zuÅŒytym paliwie +container.watzPowerplant=Elektrownia Watz +container.zirnox=Reaktor jądrowy ZIRNOX + +crucible.aa=Produkcja zaawansowanych stopów +crucible.cdalloy=Produkcja stali kadmowej +crucible.cmb=Produkcja stali CMB +crucible.ferro=Produkcja ferrouranu +crucible.hematite=Produkcja ÅŒelaza z hematytu +crucible.hss=Produkcja stali szybkotnącej +crucible.malachite=Produkcja miedzi z malachitu +crucible.redcopper=Produkcja czerwonej miedzi +crucible.steel=Produkcja stali +crucible.steelMeteoric=Produkcja stali z ÅŒelaza meteorytowego +crucible.steelPig=Produkcja stali z surówki hutniczej +crucible.steelWrought=Produkcja stali z kutego ÅŒelaza +crucible.tcalloy=Produkcja stali technetowej + +death.attack.acid=%1$s wpadł w kwas. +death.attack.acidPlayer=%1$s został rozpuszczony przez %2$s. +death.attack.ams=%1$s był skąpany w cząsteczkach, które jeszcze nie zostały nazwane przez ludzką naukę. +death.attack.amsCore=%1$s wyparował w ogniu osobliwości. +death.attack.asbestos=%1$s ma obecnie prawo do rekompensaty finansowej. +death.attack.bang=%1$s został rozerwany na kawałki wielkości kęsa. +death.attack.blackhole=%1$s został spaghettizowany. +death.attack.blender=%1$s został posiekany na małe kawałki wielkości kęsa. +death.attack.boat=%1$s został potrącony przez łódkę. +death.attack.boil=%1$s został ugotowany ÅŒywcem przez %2$s. +death.attack.boxcar=%1$s został zmiaÅŒdÅŒony przez spadający wagon. No cóŌ. +death.attack.broadcast=%1$s'owi roztopił się mózg. +death.attack.building=%1$s został lekko pacnięty przez spadający budynek. +death.attack.cheater=Jelita %1$s zamieniły się w owies. (???) +death.attack.chopperBullet=%1$s został rozwalony przez %2$s. +death.attack.cloud=%1$s roztopił się jak lody na słońcu. +death.attack.cmb=%1$s został wygazowany przez %2$s. +death.attack.digamma=%1$s wszedł w przepaść. +death.attack.electricity=%1$s został poraÅŒony prądem. +death.attack.electrified=%1$s został zelektryfikowany przez %2$s. +death.attack.euthanized=%1$s został poddany eutanazji przez %2$s. +death.attack.euthanizedSelf2=%1$s zdobywa nagrodę Darwina. +death.attack.euthanizedSelf=%1$s dokonał eutanazji na samym sobie. Kretyn. +death.attack.exhaust=%1$s został zamieniony w szaszłyk przez startującą rakietę. +death.attack.flamethrower=%1$s został skremowany przez %2$s. +death.attack.flamethrower.item=%1$s został skremowany przez %2$s za pomocą %3$s. +death.attack.ice=%1$s został zamieniony w loda na patyku przez %2$s. +death.attack.laser=%1$s został obrócony w popiół przez %2$s. +death.attack.laser.item=%1$s został obrócony w popiół przez %2$s za pomocą %3$s. +death.attack.lead=%1$s zmarł od zatrucia ołowiem. +death.attack.lunar=%1$s zapomniał naładować swoje narządy witalne. +death.attack.meteorite=%1$s został uderzony przez spadający kamyk z kosmosu. +death.attack.microwave=%1$s eksplodował promieniowaniem mikrofalowym. +death.attack.mku=%1$s zmarł z nieznanych przyczyn. +death.attack.monoxide=%1$s zapomniał wymienić baterie w czujniku czadu. +death.attack.mudPoisoning=%1$s zmarł w trującym błocie. +death.attack.nuclearBlast=%1$s został wysadzony w powietrze przez wybuch atomowy. +death.attack.overdose=%1$s przedawkował i udusił się. +death.attack.pc=%1$s został zredukowany do kałuÅŒy w róŌowej chmurze. +death.attack.plasma=%1$s został spalony przez %2$s. +death.attack.radiation=%1$s zmarł w wyniku zatrucia popromiennego. +death.attack.revolverBullet=%1$s został postrzelony w głowę przez %2$s. +death.attack.revolverBullet.item=%1$s został postrzelony w głowę przez %2$s za pomocą %3$s. +death.attack.rubble=%1$s został przygnieciony gruzem. +death.attack.shrapnel=%1$s został poszarpany odłamkiem. +death.attack.spikes=%1$s został wbity w pal. +death.attack.subAtomic1=Atomy %1$s zostały zniszczone przez %2$s. +death.attack.subAtomic2=%1$s był źle wyrównany z QPU, poniewaÅŒ %2$s majstrował przy ich faktycznej prędkości. +death.attack.subAtomic3=Dywergencja %1$s'a spadła poniÅŒej 1 procent z powodu %2$s'a. +death.attack.subAtomic4=%1$s został podzielony przez zero przez %2$s. +death.attack.subAtomic5=%1$s został uniewaÅŒniony przez %2$s. +death.attack.suicide=%1$s odstrzelił sobie głowę. +death.attack.taint=%1$s zmarł z powodu guzów strumieniowych. +death.attack.tau=%1$s został podziurawiony przez %2$s za pomocą ujemnie naładowanych taonów. +death.attack.tauBlast=%1$s ładował XVL1456 zbyt długo i został rozerwany na kawałki. +death.attack.teleporter=%1$s został teleportowany w nicość. + +desc.gui.assembler.warning=§cBłąd:§r Ta maszyna wymaga szablonu montaÅŒowego! +desc.gui.chemplant.warning=§cBłąd:§r Ta maszyna wymaga szablonu chemicznego! +desc.gui.gasCent.enrichment=§2Wzbogacanie§r$Wzbogacanie uranu wymaga kaskad.$Kaskady z dwiema wirówkami dadzą$paliwo uranowe, kaskady z czterema wirówkami$dadzą całkowitą separację. +desc.gui.gasCent.output=§6Transfer płynu§r$Płyn moÅŒna przenieść do innej wirówki$przez port wyjściowy w celu dalszego przetwarzania. +desc.gui.nukeBoy.desc=§1Wymagane:§r$ * Osłona neutronowa$ * Pocisk U235$ * Cel podkrytyczny U235$ * Materiał miotający$ * Zapalnik bomby +desc.gui.nukeGadget.desc=§1Wymagania:§r$ * 4 matryce soczewek odłamkowo$-burzących pierwszej generacji$ * CięŌki rdzeń plutonowy$ * Okablowanie +desc.gui.nukeMan.desc=§1Wymagane:§r$ * 4 zestawy soczewek$odłamkowo-burzących pierwszej generacji$ * Rdzeń plutonowy$ * Jednostka strzelająca bombami +desc.gui.nukeMike.desc=§1Wymagane:§r$ * 4 układy soczewek$odłamkowo-burzących$ * Rdzeń plutonowy$ * Deuterowy układ chłodzący$ * Zbiornik deuteru pokryty uranem$ * Zbiornik deuteru +desc.gui.nukeTsar.desc=§1Wymagane:§r$ * 4 układy soczewek$odłamkowo-burzących$ * Rdzeń plutonowy$§9Opcjonalnie:§r$ * Rdzeń car-bomby +desc.gui.radiolysis.desc=§9Opis§r$Ten RTG jest wydajniejszy od innych$i jest wyposaÅŒony w komorę radiolizy$do krakingu i sterylizacji. +desc.gui.rtgBFurnace.desc=Wymaga co najmniej 15 ciepła do przetworzenia$Im więcej ciepła, tym szybciej działa$Ciepło przekraczające maksymalną prędkość nie będzie miało ÅŒadnego efektu$KrótkoÅŒyciowe pelety mogą się zepsuć +desc.gui.rtg.heat=§eAktualny poziom ciepła: %s +desc.gui.rtg.pellets=Akceptowane pellety: +desc.gui.rtg.pelletHeat=%s (%s ciepła) +desc.gui.rtg.pelletPower=%s (%s HE/tick) +desc.gui.template=§9Szablony§r$Szablony moÅŒna tworzyć$za pomocą folderu szablonów maszyn. +desc.gui.turbinegas.automode=§2Automatyczny tryb ograniczania turbiny§r$Klikając przycisk „AUTO”, turbina$automatycznie dostosuje produkcję energii$w oparciu o moc wymaganą z sieci +desc.gui.turbinegas.fuels=§6Dozwolone paliwa:§r +desc.gui.turbinegas.warning=§cNiski poziom paliwa lub smaru!§r +desc.gui.upgrade=§lDozwolone ulepszenia:§r +desc.gui.upgrade.afterburner= * §dDopalacz§r: Kumuluje się do poziomu 3 +desc.gui.upgrade.effectiveness= * §aWydajność§r: Kumuluje się do poziomu 3 +desc.gui.upgrade.overdrive= * §7Nadbieg§r: Kumuluje się do poziomu 3 +desc.gui.upgrade.power= * §1Oszczędzanie energii§r: kumuluje się do poziomu 3 +desc.gui.upgrade.speed= * §4Szybkość§r: kumuluje się do poziomu 3 +desc.gui.zirnox.coolant=§3Chłodziwo§r$CO2 przenosi ciepło z rdzenia do wody.$Spowoduje to zagotowanie bardzo gęstej pary.$Wydajność chłodzenia i produkcji pary$opiera się na ciśnieniu. +desc.gui.zirnox.pressure=§6Ciśnienie§r$Ciśnienie moÅŒna zmniejszyć poprzez wywietrzanie CO2.$Jednak zbyt niskie ciśnienie spowoduje zmniejszenie wydajności chłodzenia i wytwarzania pary.$UwaÅŒaj na stapianie! +desc.gui.zirnox.warning1=§cBłąd:§r Do prawidłowego działania reaktora potrzebna jest woda! +desc.gui.zirnox.warning2=§cBłąd:§r CO2 jest wymagany do prawidłowego działania reaktora! +desc.item.ammo.con_accuracy2=- Znacznie zmniejszona celność +desc.item.ammo.con_damage=- Znacznie zmniejszone obraÅŒenia +desc.item.ammo.con_heavy_wear=- Znacznie zwiększone zuÅŒycie +desc.item.ammo.con_ling_fire=- Brak ciągłego ognia +desc.item.ammo.con_nn=- Nawet nie atomówka +desc.item.ammo.con_no_damage=- Brak obraÅŒeń +desc.item.ammo.con_no_explode1=- Niewybuchowy +desc.item.ammo.con_no_explode2=- Brak uszkodzeń bloków +desc.item.ammo.con_no_explode3=- Brak rozbryzgowych obraÅŒeń +desc.item.ammo.con_no_fire=- Nie zapalający +desc.item.ammo.con_no_mirv=- Niezalecane dla Proto MIRV +desc.item.ammo.con_no_projectile=- Brak pocisku +desc.item.ammo.con_penetration=- Nie penetrujący +desc.item.ammo.con_radius=- Zmniejszony promień wybuchu +desc.item.ammo.con_range2=- Znacznie zmniejszony zasięg +desc.item.ammo.con_sing_projectile=- Pojedynczy pocisk +desc.item.ammo.con_speed=- Zmniejszona prędkość pocisku +desc.item.ammo.con_super_wear=- Bardzo znacznie zwiększone zuÅŒycie +desc.item.ammo.con_wear=- Zwiększone zuÅŒycie +desc.item.ammo.neu_40mm=* To granat 40 mm, który wcisnęliśmy w lufę! +desc.item.ammo.neu_blank=* To jest ślepak +desc.item.ammo.neu_boat=* Łódka +desc.item.ammo.neu_boxcar=* Wagon +desc.item.ammo.neu_building=* Budynek +desc.item.ammo.neu_chlorophyte=* Chlorofit +desc.item.ammo.neu_eraser=* Do usuwania duÅŒych błędów +desc.item.ammo.neu_fun=* Świetna zabawa dla całej rodziny! +desc.item.ammo.neu_heavy_metal=* Heavy Metal +desc.item.ammo.neu_homing=* Naprowadzający +desc.item.ammo.neu_jolt=* Wstrząsający +desc.item.ammo.neu_less_bouncy=* Mniej spręŌysty +desc.item.ammo.neu_maskman_flechette=* Wystrzeliwuje smugę, która przywołuje burzę pocisków DU +desc.item.ammo.neu_maskman_meteorite=* Wystrzeliwuje pocisk zadający duÅŒe obraÅŒenia, który przywołuje mały meteoryt +desc.item.ammo.neu_more_bouncy=* Ekstra spręŌysty +desc.item.ammo.neu_no_bounce=* Nie spręŌysty +desc.item.ammo.neu_no_con=* nie ma ÅŒadnych wad lul +desc.item.ammo.neu_starmetal=* Starmetal +desc.item.ammo.neu_tracer=* Smugowy +desc.item.ammo.neu_uhh=* Emmm +desc.item.ammo.neu_warcrime1=* Technicznie zbrodnia wojenna +desc.item.ammo.neu_warcrime2=* Dwa razy więcej zbrodni wojennych w jednym pocisku! +desc.item.ammo.pro_accurate1=+ Zwiększona dokładność +desc.item.ammo.pro_accurate2=+ Prawie idealna dokładność +desc.item.ammo.pro_balefire=+ Balefire +desc.item.ammo.pro_bomb_count=+ Zwiększona liczba bomb +desc.item.ammo.pro_caustic=+ Å»rący +desc.item.ammo.pro_chainsaw=+ Piła łańcuchowa +desc.item.ammo.pro_chlorine=+ Gazowy chlor +desc.item.ammo.pro_damage=+ Zwiększone obraÅŒenia +desc.item.ammo.pro_damage_slight=+ Ponadprzeciętne obraÅŒenia +desc.item.ammo.pro_emp=+ EMP +desc.item.ammo.pro_explosive=+ Wybuchowy +desc.item.ammo.pro_fallout=+ Opad +desc.item.ammo.pro_fit_357=+ Pasuje do kaÅŒdego modelu .357 +desc.item.ammo.pro_flames=+ Zwiększona liczba płomieni +desc.item.ammo.pro_gravity=+ Zmniejszona grawitacja +desc.item.ammo.pro_heavy_damage=+ Znacznie zwiększone obraÅŒenia +desc.item.ammo.pro_incendiary=+ Zapalający +desc.item.ammo.pro_lunatic=+ Lunatyczny +desc.item.ammo.pro_marauder=+ Natychmiast usuwa irytujących i niezbalansowanych wrogów +desc.item.ammo.pro_mining=+ Eksplozja upuszcza wszystkie bloki +desc.item.ammo.pro_no_gravity=+ Brak wpływu grawitacji +desc.item.ammo.pro_nuclear=+ Jądrowy +desc.item.ammo.pro_penetration=+ Penetrujący +desc.item.ammo.pro_percussion=+ PotęŌny wybuch +desc.item.ammo.pro_phosphorus=+ Powoduje poparzenia fosforem +desc.item.ammo.pro_phosphorus_splash=+ Miotany fosfor +desc.item.ammo.pro_poison_gas=+ Miotana trucizna +desc.item.ammo.pro_radius=+ Zwiększony promień wybuchu +desc.item.ammo.pro_radius_high=+ Znacznie zwiększony promień wybuchu +desc.item.ammo.pro_range=+ Zwiększony zasięg +desc.item.ammo.pro_rocket=+ Rakieta +desc.item.ammo.pro_rocket_propelled=+ Napęd rakietowy +desc.item.ammo.pro_shrapnel=+ Odłamki +desc.item.ammo.pro_speed=+ Zwiększona prędkość pocisku +desc.item.ammo.pro_stunning=+ Oszałamiający +desc.item.ammo.pro_toxic=+ Toksyczny +desc.item.ammo.pro_wear=+ Zmniejszone zuÅŒycie +desc.item.ammo.pro_withering=+ Więdnięcie +desc.item.armorMod.display=aby wyświetlić zainstalowane mody pancerza +desc.item.battery.charge=Naładowanie: %s / %sHE +desc.item.battery.chargePerc=Naładowanie: %s%% +desc.item.battery.chargeRate=Szybkość ładowania: %sHE/tick +desc.item.battery.dischargeRate=Szybkość rozładowania: %sHE/tick +desc.item.durability=Wytrzymałość: %s +desc.item.grenade.fuse=Lont: %s +desc.item.grenade.fuseImpact=Zderzeniowy +desc.item.grenade.fuseInstant=Natychmiastowy +desc.item.gun.ammo=Amunicja %s +desc.item.gun.ammoBelt=Pas +desc.item.gun.ammoEnergy=Energia; %sHE za strzał +desc.item.gun.ammoEnergyAlt=%sHE za alt. strzał +desc.item.gun.ammoMag=%s / %s +desc.item.gun.ammoType=Rodzaj amunicji: %s +desc.item.gun.ammoTypeAlt=Amunicja dodatkowa: %s +desc.item.gun.damage=Damage: %s - %s +desc.item.gun.damageAlt=ObraÅŒenia: %s +desc.item.gun.lore=aby zobaczyć dogłębną wiedzę +desc.item.gun.loreFunc=aby wyświetlić szczegółową funkcjonalność +desc.item.gun.manufacturer=Producent: %s +desc.item.gun.name=Nazwa: %s +desc.item.gun.penetration=Wartość penetracji pancerza: %s +desc.item.kitArmor=Pancerz zostanie zastąpiony nowym zestawem. +desc.item.kitHaz=Pancerz zostanie zastąpiony kombinezonem ochronnym. +desc.item.kitPack=Ale okazja! +desc.item.kitPool=Proszę opróŌnić ekwipunek przed otwarciem! +desc.item.pileRod=§eUÅŒyj na wywierconym graficie, aby włoÅŒyć$§eUÅŒyj śrubokręta, aby wyjąć$ +desc.item.rtgDecay=Rozkłada się na: %s +desc.item.rtgHeat=Poziom mocy: %s +desc.item.storage.capacity=Pojemność %s%%s +desc.item.storage.proscons=aby wyświetlić listę zalet i wad +desc.misc.357=.357 Magnum +desc.misc.556=.223 Remington +desc.misc.762=.308 Winchester +desc.misc.func=§n-- Funkcja -- +desc.misc.lanthanum="Lantan" +desc.misc.lctrl=§8Przytrzymaj <§e§oLCTRL§8§o> %s +desc.misc.lore=§n-- Fabuła -- +desc.misc.lshift=§8Przytrzymaj <§e§oLSHIFT§8§o> %s +desc.misc.luna=§o20x155mm Lunatyczny +desc.misc.meltPoint=Temperatura topnienia: §c%s +desc.misc.noPos=Brak ustawionej pozycji! +desc.misc.pos=Ustawiono pozycję na: %s, %s, %s +desc.misc.posSet=Pozycja ustawiona! +desc.item.wasteCooling=Schłodzić w bębnie po zuÅŒytym paliwie +desc.item.zirnoxBreedingRod=§2[Pręt do powielania ZIRNOX]$§eUmieść obok prętów paliwowych aby powielać$§eTrwa %d ticków +desc.item.zirnoxRod=§a[Pręt paliwowy ZIRNOX]$§eGeneruje %1$d ciepła na tick$§eTrwa %2$d ticków + +digamma.playerDigamma=Ekspozycja Digammy: +digamma.playerHealth=Wpływ Digammy: +digamma.playerRes=Odporność na digamę: +digamma.title=DIAGNOSTYKA DIGAMMY + +entity.entity_cyber_crab.name=Cyberkrab +entity.entity_elder_one.name=Quackos Starszy +entity.entity_fucc_a_ducc.name=Kaczka +entity.entity_glyphid.name=Glyfid +entity.entity_glyphid_behemoth.name=Glyfid Behemot +entity.entity_glyphid_blaster.name=Glyfid Blaster +entity.entity_glyphid_bombardier.name=Glyfid Bombardier +entity.entity_glyphid_brawler.name=Glyfid Awanturnik +entity.entity_glyphid_brenda.name=Brenda +entity.entity_glyphid_nuclear.name=Big Men DÅŒonson +entity.entity_glyphid_scout.name=Glyfid Skaut +entity.entity_ntm_fbi.name=Agent FBI +entity.entity_ntm_radiation_blaze.name=Å»ywiołak stopienia +entity.hbm.entity_ntm_ufo.name=Statek Inwazji Marsjan +entity.entity_mob_hunter_chopper.name=Chopper Myśliwy +entity.entity_mob_mask_man.name=Pan w Masce +entity.entity_mob_gold_creeper.name=Złoty Creeper +entity.entity_mob_nuclear_creeper.name=Jądrowy creeper +entity.entity_mob_phosgene_creeper.name=Fosgenowy Creeper +entity.entity_mob_tainted_creeper.name=SkaÅŒony creeper +entity.entity_mob_volatile_creeper.name=Lotny Creeper +entity.entity_taint_crab.name=SkaÅŒony krab +entity.entity_tesla_crab.name=Krab Tesli +entity.hbm.entity_balls_o_tron.name=Jądro-Tron +entity.hbm.entity_balls_o_tron_seg.name=Segment Jądro-Trona +entity.hbm.entity_bullet.name=Pocisk +entity.hbm.entity_rocket.name=Rakieta +entity.hbm.entity_schrabnel.name=Schrabłamek + +excavator.crusher=Przełącz kruszarkę +excavator.drill=Przełącz wiertło +excavator.silktouch=Przełącz Jedwabny dotyk +excavator.veinminer=Przełącz kopacza ÅŒył +excavator.walling=Przełącz murowanie + +flare.ignition=Zapłon +flare.valve=Zawór przepływowy + + +fluid.acid_fluid=Kwas +fluid.corium_fluid=Korium +fluid.mud_fluid=Trujące błoto +fluid.schrabidic_fluid=kwas schrabidowy +fluid.toxic_fluid=Stereotypowy zielony szlam +fluid.volcanic_lava_fluid=Lawa wulkaniczna + +foundry.filter=Filtr: %s +foundry.inverted=Redstone odwrócony +foundry.invertFilter=Filtr odwrócony +foundry.noCast=Brak zainstalowanej formy! + +geiger.chunkRad=BieŌące promieniowanie chunka: +geiger.envRad=Całkowite promieniowanie środowiskowe: +geiger.playerRad=SkaÅŒenie gracza: +geiger.playerRes=Odporność gracza: +geiger.title=LICZNIK GEIGERA +geiger.title.dosimeter=DOZYMETR +gun.make.ARMALITE=Armalite +gun.make.AUTO_ORDINANCE=Auto-Ordnance Corporation +gun.make.BAE=BAE Systems plc +gun.make.BENELLI=Benelli Armi SpA +gun.make.BLACK_MESA=Black Mesa Research Facility +gun.make.CERIX=Cerix Magnus +gun.make.COLT=Colt's Manufacturing Company +gun.make.COMBINE=The Universal Union +gun.make.CUBE=Cube 2: Sauerbraten +gun.make.ENZINGER=Enzinger Union +gun.make.EQUESTRIA=Equestria Missile Systems +gun.make.FLIMFLAM=FlimFlam Industries +gun.make.F_STRONG=Fort Strong +gun.make.GLORIA=Gloria GmbH +gun.make.HASBRO=Hasbro +gun.make.H_AND_K=Heckler & Koch +gun.make.H_AND_R=Harrington & Richardson +gun.make.IF=Ironshod Firearms +gun.make.IMI=Israel Military Industries +gun.make.IMI_BIGMT=IMI / Big MT +gun.make.LANGFORD=Langford Research Laboratories +gun.make.LUNA=Lunar Defense Corp +gun.make.MAGNUM_R_IMI=Magnum Research / Israel Military Industries +gun.make.MANN=Open Mann Co. +gun.make.MAXIM=Hiram Maxim +gun.make.METRO=Metro Gunsmiths +gun.make.MWT=MWT Prototype Labs +gun.make.NAZI=Erfurter Maschinenfabrik Geipel +gun.make.NONE=- +gun.make.RAYTHEON=Raytheon Missile Systems +gun.make.ROCKWELL=Rockwell International Corporation +gun.make.ROCKWELL_U=Rockwell International Corporation? +gun.make.RYAN=Ryan Industries +gun.make.SAAB=Saab Bofors Dynamics +gun.make.SACO=Saco Defense / US Ordnance +gun.make.TULSKY=Tulsky Oruzheiny Zavod +gun.make.UAC=Union Aerospace Corporation +gun.make.UNKNOWN=??? +gun.make.WESTTEK=WestTek +gun.make.WGW=Wilhelm-Gustloff-Werke +gun.make.WINCHESTER=Winchester Repeating Arms Company +gun.make.WINCHESTER_BIGMT=Winchester Repeating Arms Company / Big MT + +gun.name.ar15_50=Mod. AR-15 .50 BMG +gun.name.baeAR=Brytyjski standardowy karabin szturmowy +gun.name.bel=Wyrzutnia jaj balefire +gun.name.benelli=Benelli M4 Super 90 +gun.name.benelliDrum=Benelli M4 Super 90 (Modyfikacja magazynka bębnowego) +gun.name.bio=RI No. 2 Mark 1 +gun.name.bolter=Boltgun wzoru Manticora +gun.name.cPython=Colt Python +gun.name.cz53=CZ53 Osobisty Minigun +gun.name.cz57=CZ57 Avenger Minigun +gun.name.dart=Spluwa igłowa +gun.name.deagle=IMI Desert Eagle +gun.name.emp=Projektor kul EMP +gun.name.extinguisher=Gaśnica PROTEX 6kg +gun.name.ffiV=FFI Viper +gun.name.ffiVInox=FFI Viper Inox +gun.name.ffiVLead=FFI Viper Lead +gun.name.ffiVN1=FFI Viper N1 +gun.name.ffiVN2=FFI Viper N2 +gun.name.ffiVUltra=FFI Viper Ultra +gun.name.ffivBling=FFI Viper Bling +gun.name.ffivSatur=FFI Viper D-25A +gun.name.g36=Heckler & Koch Gewehr 36 +gun.name.gPistol=Granatpistole HK69 +gun.name.gustav=Karabin bezodrzutowy Carl Gustav M1 +gun.name.ifHorseshoe=IF-18 Podkowa +gun.name.ifPit=IF-18 Podkowa Studnia Bez Dna +gun.name.ifScope=IF-18 Podkowa Luneta +gun.name.ifStorm=IF-18 Podkowa Srebrna Burza +gun.name.ifVanity=IF-18 Podkowa PróŌność +gun.name.karl=M1 Karl-GerÀt +gun.name.ks23=KS-23 +gun.name.lacunae=Ciocia Lacunae +gun.name.lasetDet=Detonator laserowy Hopeville +gun.name.lunaAR=Karabin szturmowy typu 1986 Bishamonten +gun.name.lunaGun=Standardowa broń boczna typu 1978 Rāhula (Rewizja 2) +gun.name.lunaHLR=Lekki karabin maszynowy typu 1944 Chang'e +gun.name.lunaShotty=Dubeltówka typu 1978 Guan Yu (wersja 1) +gun.name.lunaSMG=Pistolet maszynowy typu 1956 Ananda +gun.name.lunaSniper=Karabin przeciwmaterialny typu 1915 Hou Yi +gun.name.lunaTWR=Karabin Zakrzywiający Czas +gun.name.m2=Karabin maszynowy Browning, kal. .50, M2, HB +gun.name.m42=Taktyczna katapulta nuklearna M-42 +gun.name.m42MIRV=M-42 Eksperymentalny MIRV +gun.name.m60=Karabin maszynowy, kaliber 7,62 mm, M60 +gun.name.maxim=Karabin maszynowy Maxim +gun.name.maximDouble=Podwójny karabin maszynowy Maxim +gun.name.mg3=Universal-Maschinengewehr Modell 3 +gun.name.mp40=Maschinenpistole 40 +gun.name.nerf=Blaster NERF o nieznanej konstrukcji +gun.name.osipr=Standardowy karabin pulsacyjny Overwatch +gun.name.panz=RaketenpanzerbÃŒchse 54 +gun.name.quadro=Przenośna wyrzutnia rakiet z przewodnikiem OpenQuadro +gun.name.revolverCursed=Zmotoryzowany pistolet Britannia Standard Issue +gun.name.sauer=Strzelba Sauera +gun.name.spas12=Franchi SPAS-12 +gun.name.spiw=H&R SPIW +gun.name.stinger=FIM-92 Stinger przenośny system przeciwlotniczy +gun.name.stingerOneSky=Stinger Jednego Nieba +gun.name.supershotty=Dwulufowa strzelba bojowa +gun.name.tau=Działo XVL1456 Tau +gun.name.tommy9=Pistolet maszynowy M1A1 mod. 9mm +gun.name.tommy=Pistolet maszynowy M1A1 +gun.name.topaz=Wytrzymały miotacz ognia +gun.name.uacCarbine=Karabin UAC-41 +gun.name.uacDeagle=UAC-H54 „Marsjański Raptor” Automag +gun.name.uacDMR=Wyznaczony karabin wyborowy UAC-30 +gun.name.uacLMG=Lekki karabin maszynowy UAC-49 +gun.name.uacPistol=Pistolet standardowy UAC-B950 .45 +gun.name.uacSMG=Kompaktowy pistolet maszynowy UAC-17 +gun.name.uboinik=Strzelba obrotowa Uboinik +gun.name.uzi=IMI Uzi +gun.name.uziSatur=IMI Uzi D-25A +gun.name.win1887=Winchester Model 1887 +gun.name.win1887Inox=Winchester Model 1887 Inox +gun.name.win20Inox=Winchester Model 20 Inox +gun.name.win20Poly=Winchester Model 20 Polymer +gun.name.win20Satur=Winchester Model 20 D-25A +gun.name.zomg=EMC101 Pryzmatyczne Działko Energii Ujemnej + +hadron.analysis=Analizowanie... +hadron.buttonOn=Komora analityczna (jeśli jest obecna) jest WŁĄCZONA +hadron.buttonOff=Komora analityczna jest WYŁĄCZONA +hadron.error_generic=Błąd! +hadron.error_no_charge=Błąd 0x01 [NC] +hadron.error_no_analysis=Błąd 0x02 [NA] +hadron.error_obstructed_channel=Błąd 0x03 [OC] +hadron.error_expected_coil=Błąd 0x04 [EC] +hadron.error_malformed_segment=Błąd 0x05 [MS] +hadron.error_analysis_too_long=Błąd 0x06 [ATL] +hadron.error_analysis_too_short=Błąd 0x07 [ATS] +hadron.error_diode_collision=Błąd 0x08 [DC] +hadron.error_branching_turn=Błąd 0x09 [BT] +hadron.hopper0=§eTryb normalny: $Zostaną uÅŒyte wszystkie przedmioty. +hadron.hopper1=§eTryb lejka: $Jeden przedmiot zawsze zostanie. +hadron.idle=Bezczynny +hadron.modeCircular=§eTryb akceleratora kołowego:$Magnesy muszą zapętlić się z powrotem do rdzenia.$Odblokowuje więcej przepisów. +hadron.modeLine=§eTryb akceleratora liniowego:$Akcelerator kończy się komorą analityczną.$Mniej przepisów. +hadron.noresult=Brak rezultatu. +hadron.noresult_too_slow=Niewyst. rozpęd! +hadron.noresult_wrong_ingredient=Nieprawidłowy przepis! +hadron.noresult_wrong_mode=Zły tryb! +hadron.progress=W toku... +hadron.stats=Poprzednie rezultaty: +hadron.stats_coord=Błędna pozycja: %s / %s / %s +hadron.stats_momentum=Rozpęd: %s +hadron.success=Ukończono! + +hazard.prot=Chroni przed: +hazard.noprot=NIE chroni przed: +hazard.bacteria=Bakteriami / Aerozolami +hazard.corrosive=Å»rącymi oparami +hazard.gasChlorine=Gazem chemicznym +hazard.gasInert=Gazem obojętnym / Środkami duszącymi +hazard.gasMonoxide=Tlenkiem węgla +hazard.light=Jasnym światłem +hazard.nerveAgent=Środkami nerwowymi +hazard.neverProtects=Nigdy nie chroni przed: +hazard.particleCoarse=Cząsteczkami unoszącymi się w powietrzu +hazard.particleFine=Cząstkami stałymi +hazard.sand=Substancjami draÅŒniących dla oczu + +hbm.key=Skróty klawiszowe NTM +hbm.key.calculator=Kalkulator +hbm.key.craneLoad=Załaduj/rozładuj dźwig +hbm.key.craneMoveDown=Przesuń dźwig do tyłu +hbm.key.craneMoveLeft=Przesuń dźwig w lewo +hbm.key.craneMoveRight=Przesuń dźwig w prawo +hbm.key.craneMoveUp=Przesuń dźwig do przodu +hbm.key.dash=Sus (Odłącz od Kucania w konfiguracji) +hbm.key.toggleBack=Włącz/wyłącz plecak +hbm.key.toggleHUD=Włącz/wyłącz HUD +hbm.key.reload=Przeładuj + +hbmfluid.acid=Nadtlenek wodoru +hbmfluid.amat=Antymateria +hbmfluid.aromatics=Węglowodory aromatyczne +hbmfluid.aschrab=Antyschrabid +hbmfluid.balefire=Paliwo rakietowe BF +hbmfluid.biofuel=Biopaliwo +hbmfluid.biogas=Biogaz +hbmfluid.bitumen=Bitum +hbmfluid.blood=Krew +hbmfluid.blood_hot=Gorąca krew +hbmfluid.calcium_chloride=Roztwór chlorku wapnia +hbmfluid.calcium_solution=Roztwór wapnia +hbmfluid.carbondioxide=Dwutlenek węgla +hbmfluid.chlorine=Gazowy chlor +hbmfluid.chlorocalcite_cleaned=Oczyszczony roztwór chlorokalcytu +hbmfluid.chlorocalcite_mix=Mieszany roztwór chlorokalcytu +hbmfluid.chlorocalcite_solution=Roztwór chlorokalcytu +hbmfluid.cholesterol=Roztwór cholesterolu +hbmfluid.coalcreosote=Kreozot ze smoły węglowej +hbmfluid.coalgas=Gazolina węglowa +hbmfluid.coalgas_leaded=Gazolina węglowa z ołowiem +hbmfluid.coaloil=Olej węglowy +hbmfluid.colloid=Koloid +hbmfluid.coolant=Chłodziwo +hbmfluid.coolant_hot=Gorące chłodziwo +hbmfluid.crackoil=Krakowany olej +hbmfluid.cryogel=KrioÅŒel +hbmfluid.death=Roztwór osmirydowy +hbmfluid.deuterium=Deuter +hbmfluid.diesel=Diesel +hbmfluid.diesel_crack=Krakowany diesel +hbmfluid.diesel_crack_reform=Wysokooktanowy krakowany diesel +hbmfluid.diesel_reform=Wysokooktanowy diesel +hbmfluid.egg=Rozpuszczone jajko +hbmfluid.estradiol=Roztwór estradiolu +hbmfluid.ethanol=Etanol +hbmfluid.enderjuice=Sok kresowy +hbmfluid.fracksol=Roztwór do szczelinowania +hbmfluid.fishoil=Olej rybny +hbmfluid.gas_coker=Gaz koksowniczy +hbmfluid.gas=Gaz ziemny +hbmfluid.gasoline=Gazolina +hbmfluid.gasoline_leaded=Gazolina ołowiowa +hbmfluid.heatingoil=Olej grzewczy +hbmfluid.heatingoil_vacuum=CięŌki olej grzewczy +hbmfluid.heavyoil=CięŌka ropa naftowa +hbmfluid.heavyoil_vacuum=PróŌniowa cięŌka ropa naftowa +hbmfluid.heavywater=CięŌka woda +hbmfluid.helium3=Hel-3 +hbmfluid.helium4=Hel-4 +hbmfluid.hotcrackoil=Gorący krakowany olej +hbmfluid.hotoil=Gorąca ropa naftowa +hbmfluid.hotsteam=Gęsta para +hbmfluid.hydrogen=Ciekły wodór +hbmfluid.iongel=Å»el jonowy +hbmfluid.kerosene=Kerozyna +hbmfluid.kerosene_reform=Paliwo odrzutowe +hbmfluid.lava=Lawa +hbmfluid.lightoil=Lekki olej +hbmfluid.lightoil_crack=Krakowany lekki olej +hbmfluid.lightoil_vacuum=PróŌniowy lekki olej +hbmfluid.lpg=LPG +hbmfluid.lubricant=Smar do silnika +hbmfluid.mercury=Rtęć +hbmfluid.mug=Piwo korzenne Mug +hbmfluid.mug_hot=Gorące piwo korzenne Mug +hbmfluid.mustardgas=Gaz musztardowy +hbmfluid.naphtha=Nafta +hbmfluid.naphtha_coker=Nafta koksownicza +hbmfluid.naphtha_crack=Krakowana nafta +hbmfluid.nitan=100-Oktanowe Superpaliwo NITAN© +hbmfluid.nitric_acid=Kwas azotowy +hbmfluid.nitroglycerin=Nitrogliceryna +hbmfluid.none=Nic +hbmfluid.oil=Ropa naftowa +hbmfluid.oil_coker=Olej koksowniczy +hbmfluid.oxygen=Ciekły tlen +hbmfluid.oxyhydrogen=Tlenowodór +hbmfluid.pain=Roztwór tantalitu pandemonium(III). +hbmfluid.petroil=Benzyna +hbmfluid.petroil_leaded=Benzyna ołowiowa +hbmfluid.petroleum=Gaz z ropy naftowej +hbmfluid.phosgene=Fosgen +hbmfluid.plasma_bf=Plazma balefire +hbmfluid.plasma_dh3=Plazma deuterowo-helowa-3 +hbmfluid.plasma_dt=Plazma deuterowo-trytowa +hbmfluid.plasma_hd=Plazma wodorowo-deuterowa +hbmfluid.plasma_ht=Plazma wodorowo-trytowa +hbmfluid.plasma_xm=Plazma ksenonowo-rtęciowa +hbmfluid.potassium_chloride=Roztwór chlorku potasu +hbmfluid.puf6=Heksafluorek plutonu +hbmfluid.radiosolvent=Rozpuszczalnik o wysokiej wydajności +hbmfluid.reclaimed=Olej przemysłowy z odzysku +hbmfluid.redmud=Czerwone błoto +hbmfluid.reformate=Reformat +hbmfluid.reformgas=Gaz reformowany +hbmfluid.salient=Wyrazista zieleń +hbmfluid.sas3=Trisiarczek schrabidu +hbmfluid.schrabidic=Kwas schrabidowy +hbmfluid.seedslurry=Gnojowica siewna +hbmfluid.smear=Olej przemysłowy +hbmfluid.smoke=Dym +hbmfluid.smoke_leaded=Ołowiany dym +hbmfluid.smoke_poison=Trujący dym +hbmfluid.solvent=Rozpuszczalnik +hbmfluid.sourgas=Kwaśny gaz +hbmfluid.spentsteam=Para niskociśnieniowa +hbmfluid.steam=Para +hbmfluid.sulfuric_acid=Kwas siarkowy +hbmfluid.sunfloweroil=Olej słonecznikowy +hbmfluid.superhotsteam=Supergęsta para +hbmfluid.syngas=Gaz syntezowy +hbmfluid.tritium=Tryt +hbmfluid.uf6=Heksafluorek uranu +hbmfluid.ultrahotsteam=Ultragęsta para +hbmfluid.unsaturateds=Węglowodory nienasycone +hbmfluid.wastefluid=Płynne odpady jądrowe +hbmfluid.wastegas=Gazowe odpady jądrowe +hbmfluid.water=Woda +hbmfluid.watz=Trujące błoto +hbmfluid.woodoil=Olej drzewny +hbmfluid.xenon=Gaz ksenonowy +hbmfluid.xpjuice=Sok doświadczenia +hbmfluid.xylene=BTX +hbmpseudofluid.none=Puste +hbmpseudofluid.heuf6=Silnie wzbogacony UF6 +hbmpseudofluid.meuf6=Średnio wzbogacony UF6 +hbmpseudofluid.leuf6=Nisko wzbogacony UF6 +hbmpseudofluid.nuf6=Naturalny UF6 +hbmpseudofluid.pf6=Heksafluorek plutonu +hbmpseudofluid.mud_heavy=Frakcja osadów cięŌkich +hbmpseudofluid.mud=Trujący gaz szlamowy + +hbmmat.actinium227=Aktyn-227 +hbmmat.advancedalloy=Zaawansowany stop +hbmmat.aluminum=Glin +hbmmat.americiumrg=Ameryk klasy reaktora +hbmmat.americium241=Ameryk-241 +hbmmat.americium242=Ameryk-242 +hbmmat.arsenic=Arsen +hbmmat.asbestos=Asbest +hbmmat.bakelite=Bakelit +hbmmat.beryllium=Beryl +hbmmat.bismuth=Bizmut +hbmmat.borax=Boraks +hbmmat.boron=Boron +hbmmat.cadmium=Kadm +hbmmat.carbon=Karbon +hbmmat.cdalloy=Stal kadmowa +hbmmat.cinnabar=Cynober +hbmmat.cmbsteel=Stal Kombajnowa +hbmmat.coal=Węgiel +hbmmat.coalcoke=Koks węglowy +hbmmat.cobalt=Kobalt +hbmmat.cobalt60=Kobalt-60 +hbmmat.coltan=Koltan +hbmmat.copper=Miedź +hbmmat.desh=Desh +hbmmat.dineutronium=Dineutron +hbmmat.durasteel=Stal szybkotnąca +hbmmat.euphemium=Eufem +hbmmat.ferrouranium=Ferrouran +hbmmat.fiberglass=Włókno szklane +hbmmat.fluorite=Fluoryt +hbmmat.flux=Topnik +hbmmat.ghiorsium336=Giors-336 +hbmmat.gold=Złoto +hbmmat.gold198=Złoto-198 +hbmmat.graphene=Grafen +hbmmat.graphite=Grafit +hbmmat.hematite=Hematyt +hbmmat.iron=Å»elazo +hbmmat.lapis=Lazuryt +hbmmat.lead=Ołów +hbmmat.lead209=Ołów-209 +hbmmat.lignitecoke=Koks brunatny +hbmmat.lignite=Węgiel brunatny +hbmmat.lithium=Lit +hbmmat.magnetizedtungsten=Namagnesowany wolfram +hbmmat.malachite=Malachit +hbmmat.meteoriciron=Å»elazo meteorytowe +hbmmat.mingrade=Miedź klasy Minecraft +hbmmat.neptunium237=Neptun-237 +hbmmat.niobium=Niob +hbmmat.obsidian=Obsydian +hbmmat.osmiridium=Osmiryd +hbmmat.petcoke=Koks naftowy +hbmmat.pigiron=Surówka ÅŒelazna +hbmmat.plutonium=Pluton +hbmmat.plutonium238=Pluton-238 +hbmmat.plutonium239=Pluton-239 +hbmmat.plutonium240=Pluton-240 +hbmmat.plutonium241=Pluton-241 +hbmmat.plutoniumrg=Pluton klasy reaktora +hbmmat.polonium210=Polon-210 +hbmmat.polymer=Polimer +hbmmat.radium226=Rad-226 +hbmmat.redphosphorus=Czerwony fosfor +hbmmat.redstone=Redstone +hbmmat.rubber=Guma +hbmmat.saltpeter=Saletra +hbmmat.saturnite=Saturnyt +hbmmat.schrabidate=Schrabidan ÅŒelazowy +hbmmat.schrabidium=Schrabid +hbmmat.schraranium=Schraran +hbmmat.slag=Å»uÅŒel +hbmmat.solinium=Solyn +hbmmat.starmetal=Starmetal +hbmmat.steel=Stal +hbmmat.stone=Kamień +hbmmat.sulfur=Siarka +hbmmat.tantalum=Tantal +hbmmat.tcalloy=Stal technetowa +hbmmat.technetium99=Technet-99 +hbmmat.titanium=Tytan +hbmmat.thorium232=Tor-232 +hbmmat.tungsten=Wolfram +hbmmat.uranium=Uran +hbmmat.uranium233=Uran-233 +hbmmat.uranium235=Uran-235 +hbmmat.uranium238=Uran-238 +hbmmat.watzmud=Trujące błoto +hbmmat.whitephosphorus=Biały fosfor +hbmmat.workersalloy=Desh +hbmmat.wroughtiron=Kute ÅŒelazo +hbmmat.zirconium=Cyrkon + +matshape.block=Blok %sa +matshape.blocks=Bloki %sa +matshape.ingot=Sztabka %sa +matshape.ingots=Sztabki %sa +matshape.nugget=Samorodek %sa +matshape.nuggets=Samorodki %sa +matshape.quantum=Kwant %sa +matshape.quanta=Kwanty %sa + +info.asbestos=Moje płuca płoną. +info.coaldust=Trudno tu oddychać. +info.coil=Siłą zwoju +info.templatefolder=Utworzono za pomocą %s +info.template_in=Wejście: +info.template_in_p=Wejścia: +info.template_out=Wyjście: +info.template_out_p=Wyjścia: +info.template_seconds=sekund +info.template_time=Czas produkcji: + +item.acetylene_torch.name=Palnik acetylenowy +item.ajr_boots.name=Buty Stalowego Rangera +item.ajr_helmet.name=Hełm Stalowego Rangera +item.ajr_legs.name=Legginsy Stalowego Rangera +item.ajr_plate.name=Napierśnik Stalowego Rangera +item.ajro_boots.name=Buty pancerza wspomaganego AJR +item.ajro_helmet.name=Hełm pancerza wspomaganego AJR +item.ajro_legs.name=Legginsy pancerza wspomaganego AJR +item.ajro_plate.name=Napierśnik pancerza wspomaganego AJR +item.alloy_axe.name=Siekiera ze stopu zaawansowanego +item.alloy_boots.name=Buty ze stopu zaawansowanego +item.alloy_helmet.name=Hełm ze stopu zaawansowanego +item.alloy_hoe.name=Motyka ze stopu zaawansowanego +item.alloy_legs.name=Legginsy ze stopu zaawansowanego +item.alloy_pickaxe.name=Kilof ze stopu zaawansowanego +item.alloy_plate.name=Napierśnik ze stopu zaawansowanego +item.alloy_shovel.name=Łopata ze stopu zaawansowanego +item.alloy_sword.name=Miecz ze stopu zaawansowanego +item.ammo_12gauge.name=Śrut kalibru 12 +item.ammo_12gauge_du.name=Śrut kalibru 12 (Pokryty uranem) +item.ammo_12gauge_incendiary.name=Śrut kalibru 12 (Zapalający) +item.ammo_12gauge_marauder.name=Pocisk taktyczny anty-korsarzowy kalibru 12 +item.ammo_12gauge_percussion.name=Kapiszon kalibru 12 +item.ammo_12gauge_shrapnel.name=Śrut kalibru 12 (Szrapnel) +item.ammo_12gauge_sleek.name=Śrut kalibru 12 (IF-R&D) +item.ammo_20gauge.name=Śrut kalibru 20 +item.ammo_20gauge_caustic.name=Śrut kalibru 20 (ÅŒrący) +item.ammo_20gauge_explosive.name=Śrut kalibru 20 (Wybuchowy) +item.ammo_20gauge_flechette.name=Flechette kalibru 20 +item.ammo_20gauge_incendiary.name=Śrut kalibru 20 (Zapalający) +item.ammo_20gauge_shock.name=Śrut kalibru 20 (Wstrząsający) +item.ammo_20gauge_shrapnel.name=Śrut kalibru 20 (Szrapnel) +item.ammo_20gauge_sleek.name=Śrut kalibru 20 (IF-R&D) +item.ammo_20gauge_slug.name=Slug Brenneke kalibru 20 +item.ammo_20gauge_wither.name=Śrut kaliber 20 (Wiednący) +item.ammo_22lr.name=.22 LR +item.ammo_22lr_ap.name=.22 LR (Przeciwpancerny) +item.ammo_22lr_chlorophyte.name=.22 LR (Chlorofitowy) +item.ammo_357_desh.name=.357 Magnum Desh +item.ammo_44.name=.44 Magnum +item.ammo_44_ap.name=.44 Magnum (Przeciwpancerny) +item.ammo_44_bj.name=.44 Magnum (Łódka) +item.ammo_44_chlorophyte.name=.44 Magnum (Chlorofitowy) +item.ammo_44_du.name=.44 Magnum (DU) +item.ammo_44_phosphorus.name=.44 Magnum (WP) +item.ammo_44_pip.name=.44 Magnum (Wagon) +item.ammo_44_rocket.name=.44 Magnum Rocket +item.ammo_44_silver.name=.44 Magnum Bullet (Building) +item.ammo_44_star.name=.44 Magnum Bullet (Starmetal) +item.ammo_45.name=.45 ACP Bullet +item.ammo_45_ap.name=.45 ACP Bullet (AP) +item.ammo_45_du.name=.45 ACP Bullet (DU) +item.ammo_4gauge.name=4 Gauge Buckshot +item.ammo_4gauge_balefire.name=23mm Balefire Grenade +item.ammo_4gauge_canister.name=23mm Rocket (Canister Shot) +item.ammo_4gauge_claw.name=4 Gauge Claw Shell +item.ammo_4gauge_explosive.name=23mm Grenade +item.ammo_4gauge_flechette.name=4 Gauge Flechette Shell +item.ammo_4gauge_flechette_phosphorus.name=4 Gauge Flechette Shell (WP) +item.ammo_4gauge_kampf.name=23mm Rocket +item.ammo_4gauge_semtex.name=23mm Mining Charge +item.ammo_4gauge_sleek.name=4 Gauge Buckshot (IF-R&D) +item.ammo_4gauge_slug.name=4 Gauge Solid Steel Slug +item.ammo_4gauge_titan.name=4 Gauge Quacker Round +item.ammo_4gauge_vampire.name=4 Gauge Wooden Stake Shell +item.ammo_4gauge_void.name=4 Gauge Void Shell +item.ammo_50ae.name=.50 AE Round +item.ammo_50ae_ap.name=.50 AE Round (Armor Piercing) +item.ammo_50ae_chlorophyte.name=.50 AE Round (Chlorophyte) +item.ammo_50ae_du.name=.50 AE Round (DU) +item.ammo_50ae_star.name=.50 AE Round (Starmetal) +item.ammo_50bmg.name=.50 BMG Round +item.ammo_50bmg_ap.name=.50 BMG Round (Armor Piercing) +item.ammo_50bmg_chlorophyte.name=.50 BMG Round (Chlorophyte) +item.ammo_50bmg_du.name=.50 BMG Round (DU) +item.ammo_50bmg_explosive.name=.50 BMG Round (Explosive) +item.ammo_50bmg_flechette.name=.50 BMG Flechette Round +item.ammo_50bmg_flechette_am.name=.50 BMG Flechette Round (Americium) +item.ammo_50bmg_flechette_po.name=.50 BMG Flechette Round (Polonium) +item.ammo_50bmg_incendiary.name=.50 BMG Round (Incendiary) +item.ammo_50bmg_phosphorus.name=.50 BMG Round (WP) +item.ammo_50bmg_sleek.name=.50 BMG Round (IF-R&D) +item.ammo_50bmg_star.name=.50 BMG Round (Starmetal) +item.ammo_556.name=5.56mm Round +item.ammo_556_ap.name=5.56mm Round (Armor Piercing) +item.ammo_556_chlorophyte.name=5.56mm Round (Chlorophyte) +item.ammo_556_du.name=5.56mm Round (DU) +item.ammo_556_flechette.name=5.56mm Flechette Round +item.ammo_556_flechette_chlorophyte.name=5.56mm Flechette Round (Chlorophyte) +item.ammo_556_flechette_du.name=5.56mm Flechette Round (Uranium Penetrator) +item.ammo_556_flechette_incendiary.name=5.56mm Flechette Round (Incendiary) +item.ammo_556_flechette_phosphorus.name=5.56mm Flechette Round (Phosphorus-Tipped) +item.ammo_556_flechette_sleek.name=5.56mm Flechette Round (IF-R&D) +item.ammo_556_k.name=5.56mm K-Round +item.ammo_556_phosphorus.name=5.56mm Round (WP) +item.ammo_556_sleek.name=5.56mm Round (IF-R&D) +item.ammo_556_star.name=5.56mm Round (Starmetal) +item.ammo_556_tracer.name=5.56mm Round (Tracer) +item.ammo_5mm.name=5mm Round +item.ammo_5mm_chlorophyte.name=5mm Round (Chlorophyte) +item.ammo_5mm_du.name=5mm Round (DU) +item.ammo_5mm_explosive.name=5mm Round (Explosive) +item.ammo_5mm_star.name=5mm Round (Starmetal) +item.ammo_75bolt.name=.75 Bolt Magazine (30rnd) +item.ammo_75bolt_incendiary.name=.75 Incendiary Bolt Magazine (30rnd) +item.ammo_75bolt_he.name=.75 Bolt High-Explosive Magazine (30rnd) +item.ammo_762.name=7.62mm Round +item.ammo_762_ap.name=7.62mm Round (AP) +item.ammo_762_du.name=7.62mm Round (DU) +item.ammo_762_k.name=7.62mm K-Round +item.ammo_762_phosphorus.name=7.62mm Round (WP) +item.ammo_762_tracer.name=7.62mm Round (Tracer) +item.ammo_9mm.name=9mm Round +item.ammo_9mm_ap.name=9mm Round (Armor Piercing) +item.ammo_9mm_chlorophyte.name=9mm Round (Chlorophyte) +item.ammo_9mm_du.name=9mm Round (DU) +item.ammo_9mm_rocket.name=9mm Rocket +item.ammo_arty.name=16" Artillery Shell +item.ammo_arty_cargo.name=16" Express Delivery Artillery Shell +item.ammo_arty_chlorine.name=16" Chlorine Gas Artil +item.ammo_arty_classic.name=16" Artillery Shell (The Factorio Special) +item.ammo_arty_he.name=16" High Explosive Artillery Shell +item.ammo_arty_mini_nuke.name=16" Micro Nuclear Artillery Shell +item.ammo_arty_mini_nuke_multi.name=16" Multi Micro Nuclear Artillery Shell +item.ammo_arty_mustard_gas.name=16" Mustard Gas Artillery Shell +item.ammo_arty_nuke.name=16" Nuclear Artillery Shell +item.ammo_arty_phosgene.name=16" Phosgene Artillery Shell +item.ammo_arty_phosphorus.name=16" Phosphorus Shell +item.ammo_arty_phosphorus_multi.name=16" Multi Phosphorus Shell +item.ammo_cell.name=Energy Cell +item.ammo_coilgun.name=Coilgun Tungsten Ball +item.ammo_coilgun_du.name=Coilgun Ferrouranium Ball +item.ammo_coilgun_rubber.name=Coilgun Rubber Ball +item.ammo_container.name=Ammo Container +item.ammo_dart.name=Plastic Dart (Withering) +item.ammo_dart_nerf.name=NERF Dart +item.ammo_dart_nuclear.name=Plastic Dart (Timed Explosive) +item.ammo_dgk.name=Goalkeeper Twin CIWS 200 Round Belt +item.ammo_fireext.name=Fire Extinguisher Water Tank +item.ammo_fireext_foam.name=Fire Extinguisher Foam Tank +item.ammo_fireext_sand.name=Fire Extinguisher Sand Tank +item.ammo_folly.name=Silver Bullet (Original) +item.ammo_folly_du.name=Silver Bullet (DU, Non-Explosive) +item.ammo_folly_nuclear.name=Silver Bullet (Nuclear) +item.ammo_fuel.name=Diesel Tank +item.ammo_fuel_gas.name=Gas Tank +item.ammo_fuel_napalm.name=Napalm Tank +item.ammo_fuel_phosphorus.name=WP Tank +item.ammo_fuel_vaporizer.name=Vaporizer Tank +item.ammo_grenade.name=40mm Grenade +item.ammo_grenade_concussion.name=40mm Grenade (Concussion) +item.ammo_grenade_finned.name=40mm Grenade (Finned) +item.ammo_grenade_he.name=40mm Grenade (HE) +item.ammo_grenade_incendiary.name=40mm Grenade (Incendiary) +item.ammo_grenade_kampf.name=40mm Rocket +item.ammo_grenade_nuclear.name=40mm Grenade (ПрОвет) +item.ammo_grenade_phosphorus.name=40mm Grenade (WP) +item.ammo_grenade_sleek.name=40mm Grenade (IF-R&D) +item.ammo_grenade_toxic.name=40mm Grenade (Chemical) +item.ammo_grenade_tracer.name=40mm Training Grenade +item.ammo_himars_standard.name=227mm Guided Artillery Rocket Pod +item.ammo_himars_standard_he.name=227mm Guided Artillery Rocket Pod (HE) +item.ammo_himars_standard_lava.name=227mm Guided Artillery Rocket Pod (Lava) +item.ammo_himars_standard_mini_nuke.name=227mm Guided Artillery Rocket Pod (Mini Nuke) +item.ammo_himars_standard_tb.name=227mm Guided Artillery Rocket Pod (Thermobaric) +item.ammo_himars_standard_wp.name=227mm Guided Artillery Rocket Pod (WP) +item.ammo_himars_single.name=610mm Guided Artillery Rocket Pod +item.ammo_himars_single_tb.name=610mm Guided Artillery Rocket Pod (Thermobaric) +item.ammo_luna.name=Lunatic Sniper Sabot Round +item.ammo_luna_explosive.name=Lunatic Sniper Explosive Round +item.ammo_luna_incendiary.name=Lunatic Sniper Incendiary Round +item.ammo_mirv.name=Mini MIRV +item.ammo_mirv_high.name=Mini MIRV (High Yield) +item.ammo_mirv_low.name=Mini MIRV (Low Yield) +item.ammo_mirv_safe.name=Mini MIRV (Safe) +item.ammo_mirv_special.name=Mini MILV +item.ammo_nuke.name=Mini Nuke +item.ammo_nuke_barrel.name=Mini Nuclear Waste Barrel +item.ammo_nuke_high.name=Mini Nuke (High Yield) +item.ammo_nuke_low.name=Mini Nuke (Low Yield) +item.ammo_nuke_pumpkin.name=Pumpkin Bomb +item.ammo_nuke_safe.name=Mini Nuke (Safe) +item.ammo_nuke_tots.name=Mini Nuke (Tiny Tots) +item.ammo_rocket.name=84mm Rocket +item.ammo_rocket_canister.name=84mm Rocket (Canister Shot) +item.ammo_rocket_digamma.name=null +item.ammo_rocket_emp.name=84mm Rocket (Pulse) +item.ammo_rocket_glare.name=84mm Rocket (Red Glare) +item.ammo_rocket_he.name=84mm Rocket (HE) +item.ammo_rocket_incendiary.name=84mm Rocket (Incendiary) +item.ammo_rocket_nuclear.name=84mm Rocket (ПрОвет) +item.ammo_rocket_phosphorus.name=84mm Rocket (WP) +item.ammo_rocket_rpc.name=84mm Rocket Propelled Chainsaw +item.ammo_rocket_shrapnel.name=84mm Rocket (Shrapnel) +item.ammo_rocket_sleek.name=84mm Rocket (IF-R&D) +item.ammo_rocket_toxic.name=84mm Rocket (Chemical) +item.ammo_shell.name=240mm Shell +item.ammo_shell_apfsds_du.name=240mm APFSDS-DU +item.ammo_shell_apfsds_t.name=240mm APFSDS-T +item.ammo_shell_explosive.name=240mm HE Shell +item.ammo_shell_w9.name=240mm W9 Nuclear Shell +item.ammo_stinger_rocket.name=Stinger Rocket +item.ammo_stinger_rocket_he.name=Stinger Rocket (HE) +item.ammo_stinger_rocket_incendiary.name=Stinger Rocket (Incendiary) +item.ammo_stinger_rocket_nuclear.name=Stinger Rocket (ПрОвет) +item.ammo_stinger_rocket_bones.name=Stinger Rocket (Bone-Seeking) +item.ams_catalyst_aluminium.name=Aluminium Reaction Catalyst +item.ams_catalyst_beryllium.name=Beryllium Reaction Catalyst +item.ams_catalyst_blank.name=Blank Reaction Catalyst +item.ams_catalyst_caesium.name=Caeseium Reaction Catalyst +item.ams_catalyst_cerium.name=Cerium Reaction Catalyst +item.ams_catalyst_cobalt.name=Cobalt Reaction Catalyst +item.ams_catalyst_copper.name=Copper Reaction Catalyst +item.ams_catalyst_dineutronium.name=Dineutronium Reaction Catalyst +item.ams_catalyst_euphemium.name=Euphemium Reaction Catalyst +item.ams_catalyst_iron.name=Iron Reaction Catalyst +item.ams_catalyst_lithium.name=Lithium Reaction Catalyst +item.ams_catalyst_niobium.name=Niobium Reaction Catalyst +item.ams_catalyst_schrabidium.name=Schrabidium Reaction Catalyst +item.ams_catalyst_strontium.name=Strontium Reaction Catalyst +item.ams_catalyst_thorium.name=Thorium Reaction Catalyst +item.ams_catalyst_tungsten.name=Tungsten Reaction Catalyst +item.ams_core_eyeofharmony.name=Eye of Harmony (AMS/DFC Core) +item.ams_core_sing.name=Vibrant Singularity (AMS/DFC Core) +item.ams_core_thingy.name=Thingy (AMS/DFC Core) +item.ams_core_wormhole.name=Tiny Wormhole (AMS/DFC Core) +item.ams_focus_blank.name=Blank Stabilizer Focus +item.ams_focus_booster.name=Boosting Stabilizer Focus +item.ams_focus_booster.desc=Weaker restriction field and core energy injection:$More heat generation, extra energy. +item.ams_focus_limiter.name=Limiting Stabilizer Focus +item.ams_focus_limiter.desc=Maximum performance for restriction field:$Standard cooling, no energy bonus. +item.ams_lens.name=Stabilizer Lens +item.ams_muzzle.name=Ray-Emission Muzzle +item.ams_muzzle.desc=...it emits an energy-beam thingy. +item.analyzer.name=Analyzer +item.anchor_remote.name=Recall Device +item.antiknock.name=Tetraethyllead Antiknock Agent +item.apple_euphemium.name=Euphemium Apple +item.apple_lead.name=Lead Apple +item.apple_schrabidium.name=Schrabidium Apple +item.arc_electrode.name=Graphite Electrode +item.arc_electrode_burnt.name=Molten Electrode +item.arc_electrode_desh.name=Desh Electrode +item.armor_polish.name=ShiningArmor™ Armor Polish +item.asbestos_boots.name=Fire Proximity Boots +item.asbestos_cloth.name=Fire Proximity Cloth +item.asbestos_helmet.name=Fire Proximity Helmet +item.asbestos_legs.name=Fire Proximity Leggings +item.asbestos_plate.name=Fire Proximity Chestplate +item.ashglasses.name=Ash Goggles +item.assembly_45.name=.45 ACP Assembly +item.assembly_556.name=5.56mm Assembly +item.assembly_762.name=7.62mm Assembly +item.assembly_actionexpress.name=.50 AE Assembly +item.assembly_calamity.name=.50 BMG Assembly +item.assembly_desh.name=Desh Bullet Assembly +item.assembly_gold.name=Gold Bullet Assembly +item.assembly_iron.name=Iron Bullet Assembly +item.assembly_lacunae.name=.5mm Assembly +item.assembly_lead.name=Glass Bullet Assembly +item.assembly_luna.name=Lunatic Sniper Bullet Assembly +item.assembly_nightmare.name=Nightmare Bullet Assembly +item.assembly_nopip.name=.44 Magnum Assembly +item.assembly_nuke.name=Mini Nuke Shell +item.assembly_pip.name=Tainted Bullet Assembly +item.assembly_schrabidium.name=Schrabidium Bullet Assembly +item.assembly_smg.name=9mm Assembly +item.assembly_steel.name=Lead Bullet Assembly +item.assembly_template.name=Assembly Template: +item.assembly_uzi.name=.22 LR Assembly +item.attachment_mask.name=Gas Mask Attachable +item.attachment_mask_mono.name=Half Mask Attachable +item.australium_iii.name=Mark III Life Extender +item.australium_iv.name=Mark IV Life Extender +item.australium_v.name=Mark V Life Extender +item.back_tesla.name=Back-Mounted Tesla Coil +item.balefire_and_ham.name=Ham and Balefire Eggs +item.balefire_and_steel.name=Balefire and Steel +item.balefire_scrambled.name=Scrambled Balefire Egg +item.ball_dynamite.name=Dynamite +item.ball_fireclay.name=Fireclay +item.ball_tatb.name=TATB +item.ball_tnt.name=TNT +item.ballistic_gauntlet.name=Ballistic Gauntlet +item.ballistite.name=Ballistite +item.bandaid.name=Velvet Band-Aid +item.bathwater.name=Toxic Soapy Water +item.bathwater_mk2.name=Toxic Soapy Water (Horse Scented) +item.battery_advanced.name=Advanced Battery +item.battery_advanced_cell.name=Advanced Power Cell +item.battery_advanced_cell_12.name=Twelvefold Advanced Power Cell +item.battery_advanced_cell_4.name=Quadruple Advanced Power Cell +item.battery_creative.name=Infinite Battery +item.battery_generic.name=Battery +item.battery_lithium.name=Lithium-Ion Battery +item.battery_lithium_cell.name=Lithium-Ion Power Cell +item.battery_lithium_cell_3.name=Triple Lithium-Ion Power Cell +item.battery_lithium_cell_6.name=Sixfold Lithium-Ion Power Cell +item.battery_potato.name=Potato Battery +item.battery_potatos.name=PotatOS +item.battery_red_cell.name=Redstone Power Cell +item.battery_red_cell_24.name=24-Fold Redstone Power Cell +item.battery_red_cell_6.name=Sixfold Redstone Power Cell +item.battery_sc_americium.name=Self-Charging Americium-241 Battery +item.battery_sc_gold.name=Self-Charging Gold-198 Battery +item.battery_sc_lead.name=Self-Charging Lead-209 Battery +item.battery_sc_plutonium.name=Self-Charging Plutonium-238 Battery +item.battery_sc_polonium.name=Self-Charging Polonium-210 Battery +item.battery_sc_technetium.name=Self-Charging Technetium-99 Battery +item.battery_sc_uranium.name=Self-Charging Uranium-238 Battery +item.battery_schrabidium.name=Schrabidium Battery +item.battery_schrabidium_cell.name=Schrabidium Power Cell +item.battery_schrabidium_cell_2.name=Double Schrabidium Power Cell +item.battery_schrabidium_cell_4.name=Quadruple Schrabidium Power Cell +item.battery_spark.name=Spark Battery +item.battery_spark_cell_100.name=Spark Arcane Energy Storage Array +item.battery_spark_cell_1000.name=Spark Arcane Mass-Energy Void +item.battery_spark_cell_10000.name=Spark Solid Space-Time Crystal +item.battery_spark_cell_25.name=Spark Arcane Car Battery +item.battery_spark_cell_2500.name=Spark Arcane Dirac Sea +item.battery_spark_cell_6.name=Spark Power Cell +item.battery_spark_cell_power.name=Spark Ludicrous Physics-Defying Energy Storage Unit +item.battery_steam.name=Steam Powered Energy Storage Tank +item.battery_steam_large.name=Large Steam Powered Energy Storage Tank +item.battery_su.name=SU-Battery +item.battery_su_l.name=Large SU-Battery +item.battery_trixite.name=Off-Brand Spark Battery +item.bdcl.name=BDCL +item.beta.name=Beta Features +item.big_sword.name=Great Sword +item.billet_actinium.name=Actinium-227 Billet +item.billet_am_mix.name=Reactor Grade Americium Billet +item.billet_am241.name=Americium-241 Billet +item.billet_am242.name=Americium-242 Billet +item.billet_americium_fuel.name=Americium Fuel Billet +item.billet_au198.name=Gold-198 Billet +item.billet_australium.name=Australium Billet +item.billet_australium_greater.name=Greater Australium Billet +item.billet_australium_lesser.name=Lesser Australium Billet +item.billet_balefire_gold.name=Flashgold Billet +item.billet_beryllium.name=Beryllium Billet +item.billet_bismuth.name=Bismuth Billet +item.billet_co60.name=Cobalt-60 Billet +item.billet_cobalt.name=Cobalt Billet +item.billet_flashlead.name=Flashlead Billet +item.billet_flashlead.desc=The lattice decays, causing antimatter-matter$annihilation reactions, causing the release of$pions, decaying into muons, catalyzing fusion of$the nuclei, creating the new element.$Please try to keep up. +item.billet_gh336.name=Ghiorsium-336 Billet +item.billet_gh336.desc=Seaborgium's colleague. +item.billet_hes.name=Highly Enriched Schrabidium Fuel Billet +item.billet_les.name=Low Enriched Schrabidium Fuel Billet +item.billet_mox_fuel.name=MOX Fuel Billet +item.billet_mox_fuel.desc=Pocket-Moxie! +item.billet_neptunium.name=Neptunium Billet +item.billet_neptunium_fuel.name=Neptunium Fuel Billet +item.billet_nuclear_waste.name=Nuclear Waste Billet +item.billet_pb209.name=Lead-209 Billet +item.billet_po210be.name=Po210Be Billet +item.billet_polonium.name=Polonium-210 Billet +item.billet_pu_mix.name=Reactor Grade Plutonium Billet +item.billet_pu238.name=Plutonium-238 Billet +item.billet_pu238be.name=Pu238Be Billet +item.billet_pu239.name=Plutonium-239 Billet +item.billet_pu240.name=Plutonium-240 Billet +item.billet_pu241.name=Plutonium-241 Billet +item.billet_plutonium.name=Plutonium Billet +item.billet_plutonium_fuel.name=Plutonium Fuel Billet +item.billet_ra226.name=Radium-226 Billet +item.billet_ra226be.name=Ra226Be Billet +item.billet_schrabidium.name=Schrabidium Billet +item.billet_schrabidium_fuel.name=Schrabidium Fuel Billet +item.billet_solinium.name=Solinium Billet +item.billet_sr90.name=Strontium-90 Billet +item.billet_technetium.name=Technetium-99 Billet +item.billet_th232.name=Thorium-232 Billet +item.billet_thorium_fuel.name=Thorium Fuel Billet +item.billet_u233.name=Uranium-233 Billet +item.billet_u235.name=Uranium-235 Billet +item.billet_u238.name=Uranium-238 Billet +item.billet_uranium.name=Uranium Billet +item.billet_uranium_fuel.name=Uranium Fuel Billet +item.billet_yharonite.name=Yharonite Billet +item.billet_zfb_am_mix.name=Reactor Grade Americium ZFB Billet +item.billet_zfb_bismuth.name=Bismuth ZFB Billet +item.billet_zfb_pu241.name=Pu-241 ZFB Billet +item.billet_zirconium.name=Zirconium Billet +item.bio_wafer.name=Algae Wafer +item.biomass.name=Biomass +item.biomass_compressed.name=Compressed Biomass +item.bismuth_boots.name=Bismuth Sandals +item.bismuth_helmet.name=Bismuth Headdress +item.bismuth_legs.name=Bismuth Kneeguards +item.bismuth_pickaxe.name=Bismuth Pickaxe +item.bismuth_plate.name=Bismuth Shoulderpads, Necklace & Loincloth +item.bismuth_tool.name=Magnetic Extractor +item.bj_boots.name=Lunar Studded Boots +item.bj_helmet.name=Eyepatch with Thermal Sensor +item.bj_legs.name=Lunar Cybernetic Leg Replacements +item.bj_plate.name=Lunar Cybernetic Plating +item.bj_plate_jetpack.name=Lunar Cybernetic Plating (Winged) +item.black_diamond.name=Black Diamond +item.black_hole.name=Miniature Black Hole +item.blade_meteorite.name=Meteorite Blade +item.blade_titanium.name=Titanium Blade +item.blade_tungsten.name=Tungsten Reinforced Blade +item.blades_advanced_alloy.name=Advanced Shredder Blades +item.blades_desh.name=Desh Shredder Blades +item.blades_steel.name=Steel Shredder Blades +item.blades_titanium.name=Titanium Shredder Blades +item.blowtorch.name=Blowtorch +item.board_copper.name=Copper Panel +item.bobmazon_hidden.name=Hidden Catalog +item.bobmazon_machines.name=Bobmazon: Blocks and Machines +item.bobmazon_materials.name=Bobmazon: Materials +item.bobmazon_tools.name=Bobmazon: Tools +item.bobmazon_weapons.name=Bobmazon: Weapons and Explosives +item.bolt_compound.name=Reinforced Turbine Shaft +item.bolt_dura_steel.name=High-Speed Steel Bolt +item.bolt_tungsten.name=Tungsten Bolt +item.boltgun.name=Pneumatic Rivet Gun +item.bomb_caller.name=Airstrike Designator +item.bomb_waffle.name=Waffle of Mass Destruction +item.book_guide.name=Guide Book +item.book_of_.name=The Book of Boxcars +item.book_secret.name=3-596-50802-9 +item.bottle2_empty.name=Empty Bottle +item.bottle2_fritz.name=Fritz Cola +item.bottle2_fritz_special.name=The First Fritz Cola +item.bottle2_korl.name=Korl +item.bottle2_korl_special.name=The First Korl +item.bottle2_sunset.name=Sunset Sarsaparilla +item.bottle_cherry.name=Bottle of Nuka Cherry +item.bottle_empty.name=Empty Bomb-Shaped Bottle +item.bottle_mercury.name=Bottle of Mercury +item.bottle_nuka.name=Bottle of Nuka Cola +item.bottle_opener.name=Hbm's Own Self-Made Bottle Opener +item.bottle_quantum.name=Bottle of Nuka Cola Quantum +item.bottle_rad.name=Bottle of S~Cola RAD +item.bottle_sparkle.name=Bottle of S~Cola +item.boy_bullet.name=U235 Projectile +item.boy_igniter.name=Bomb Igniter +item.boy_kit.name=Little Boy Kit +item.boy_propellant.name=Propellant +item.boy_shielding.name=Neutron Shielding +item.boy_target.name=Subcritical U235 Target +item.briquette.coal.name=Coal Briquette +item.briquette.lignite.name=Lignite Briquette +item.briquette.wood.name=Sawdust Briquette +item.bucket_acid.name=Bucket of Acid +item.bucket_mud.name=Bucket of Poisonous Mud +item.bucket_schrabidic_acid.name=Bucket of Schrabidic Acid +item.bucket_sulfuric_acid.name=Bucket of Sulfuric Acid +item.bucket_toxic.name=Bucket of Stereotypical Green Ooze +item.burnt_bark.name=Burnt Bark +item.burnt_bark.desc=A piece of bark from an exploded golden oak tree. +item.can_bepis.name=Bepis +item.can_breen.name=Dr>Breens Private Reserve +item.can_creature.name='Creature' Energy Drink +item.can_empty.name=Empty Can +item.can_key.name=Winding Key +item.can_luna.name=Black Mesa Luna - Dark Cola +item.can_mrsugar.name='Dr. Sugar' Soft Drink +item.can_mug.name=MUG Root Beer +item.can_overcharge.name=Overcharge Delirium XT +item.can_redbomb.name='Red Bomb' Energy Drink +item.can_smart.name='Smart' Energy Drink +item.canister_NITAN.name=NITAN© 100 Octane Super Fuel (LEGACY) +item.canister_biofuel.name=Biofuel Canister (LEGACY) +item.canister_bitumen.name=Bitumen Canister (LEGACY) +item.canister_canola.name=Engine Lubricant (LEGACY) +item.canister_empty.name=Empty Canister +item.canister_ethanol.name=Ethanol Canister (LEGACY) +item.canister_fracksol.name=Fracking Solution Canister (LEGACY) +item.canister_fuel.name=Diesel Canister (LEGACY) +item.canister_fuel.desc=All hail the spout! +item.canister_full.name=Canister: +item.canister_gasoline.name=Leaded Gasoline Canister (LEGACY) +item.canister_gasoline.desc=lead is friend$let friend into your blood stream$*cocks gun* do it now. +item.canister_heatingoil.name=Heating Oil Canister (LEGACY) +item.canister_heavyoil.name=Heavy Oil Canister (LEGACY) +item.canister_kerosene.name=Kerosene Canister (LEGACY) +item.canister_lightoil.name=Light Oil Canister (LEGACY) +item.canister_napalm.name=Napalm B +item.canister_naphtha.name=Naphtha Canister (LEGACY) +item.canister_oil.name=Crude Oil Canister (LEGACY) +item.canister_petroil.name=Petroil Canister (LEGACY) +item.canister_reoil.name=Canister of Reclaimed Industrial Oil (LEGACY) +item.canister_smear.name=Industrial Oil Canister (LEGACY) +item.canned_asbestos.name=Canned Asbestos +item.canned_asbestos.desc=TASTE the asbestosis! +item.canned_ass.name=Canned Ass +item.canned_ass.desc=100%% quality donkey meat!* +item.canned_bark.name=Canned Pine Bark Jerky +item.canned_bark.desc=Extra cronchy! +item.canned_beef.name=Canned Beef +item.canned_beef.desc=A few centuries ago, a cow died for this. +item.canned_bhole.name=Canned Black Hole +item.canned_bhole.desc=Singularity is yum yum in my tum tum! +item.canned_cheese.name=Canned Melted Cheese +item.canned_cheese.desc=Is it cheese? Is it rubber cement? Who knows, who cares. +item.canned_chinese.name=Canned Chinese Food +item.canned_chinese.desc=In China, Chinese food is just called food. +item.canned_diesel.name=Canned Diesel +item.canned_diesel.desc=I'm slowly running out of jokes for these. +item.canned_fist.name=Canned Fist +item.canned_fist.desc=Yowser! +item.canned_fried.name=Canned Fried Chicken +item.canned_fried.desc=Even the can is deep fried! +item.canned_hotdogs.name=Canned Hotdogs +item.canned_hotdogs.desc=Not to be confused with cool cats. +item.canned_jizz.name=FlimFlam Industries Canned Stallion Milk™ +item.canned_jizz.desc=Wait wh- +item.canned_kerosene.name=Canned Kerosene +item.canned_kerosene.desc=Just imagine a witty line here. +item.canned_leftovers.name=Leftover Conserve +item.canned_leftovers.desc=ur 2 slow +item.canned_milk.name=Canned Evaporated Milk +item.canned_milk.desc=Milk 2: More solid than ever before! +item.canned_mystery.name=Canned Mystery Meat +item.canned_mystery.desc=What's inside? Only one way to find out! +item.canned_napalm.name=Canned Napalm +item.canned_napalm.desc=I love the smell of old memes in the morning! +item.canned_oil.name=Canned Engine Oil +item.canned_oil.desc=It makes motors go, so why not humans? +item.canned_pashtet.name=Паштет +item.canned_pashtet.desc=услугО перевПЎа МеЎПступМы! +item.canned_pizza.name=Canned Pepperoni Pizza +item.canned_pizza.desc=A crime against humanity. +item.canned_recursion.name=Canned Recursion +item.canned_recursion.desc=Canned Recursion +item.canned_spam.name=Canned Spam +item.canned_spam.desc=The three-and-a-half-minute sketch is set in the fictional Green Midget Cafe in Bromley.$An argument develops between the waitress, who recites a menu in which nearly$every dish contains Spam, and Mrs. Bun, who does not like Spam. She asks for a$dish without Spam, much to the amazement of her Spam-loving husband. The waitress$responds to this request with disgust. Mr. Bun offers to take her Spam instead,$and asks for a dish containing a lot of Spam and baked beans. The waitress says$no since they are out of baked beans; when Mr. Bun asks for a substitution of Spam,$the waitress again responds with disgust. At several points, a group of Vikings in$the restaurant interrupts conversation by loudly singing about Spam.$The irate waitress orders them to shut up, but they resume singing more loudly.$A Hungarian tourist comes to the counter, trying to order by using a wholly$inaccurate Hungarian/English phrasebook (a reference to a previous sketch).$He is rapidly escorted away by a police constable. The sketch abruptly cuts to a$historian in a television studio talking about the origin of the Vikings in the café.$As he goes on, he begins to increasingly insert the word \"Spam\" into every$sentence, and the backdrop is raised to reveal the restaurant set behind.$The historian joins the Vikings in their song, and Mr. and Mrs. Bun are lifted by$wires out of the scene while the singing continues. In the original televised performance,$the closing credits begin to scroll with the singing still audible in the background. +item.canned_stew.name=Canned "Mushroom Stew" +item.canned_stew.desc=... +item.canned_tomato.name=Canned Tomato Soup +item.canned_tomato.desc=Who wants some thick red paste? +item.canned_tube.name=Astronaut Food Tube +item.canned_tube.desc=Tasty mush. +item.canned_tuna.name=Canned Tuna +item.canned_tuna.desc=I can't tell if that's actually tuna or dried cement. +item.canned_yogurt.name=Canned Yogurt +item.canned_yogurt.desc=Probably spoiled, but whatever. +item.canteen_13.name=Vault 13 Canteen +item.canteen_fab.name=Fabulous Vodka +item.canteen_vodka.name=Stylish Flask +item.cap_fritz.name=Fritz Cola Bottle Cap +item.cap_korl.name=Korl Bottle Cap +item.cap_nuka.name=Nuka Cola Bottle Cap +item.cap_quantum.name=Nuka Cola Quantum Bottle Cap +item.cap_rad.name=S~Cola RAD Bottle Cap +item.cap_sparkle.name=S~Cola Bottle Cap +item.cap_star.name=Sunset Sarsaparilla Star Cap +item.cap_sunset.name=Sunset Sarsaparilla Bottle Cap +item.cape_ayy.name=Ayy's Cape +item.cape_codered_.name=codered_'s Cape +item.cape_dafnik.name=Dafnik's Cape +item.cape_gasmask.name=Cape (Gas Mask) +item.cape_hbm.name=Hbm's Cape +item.cape_hidden.name=Hidden Cape +item.cape_lpkukin.name=LPkukin's Cape +item.cape_nostalgia.name=DrNostalgia's Cape +item.cape_radiation.name=Cape (Radiation) +item.cape_schrabidium.name=Cape (Schrabidic) +item.cape_vertice.name=Lord Vertice's Cape +item.cart.crate.name=Crate Cart +item.cart.destroyer.name=Scrap Destroying Cart +item.cart.empty.name=Minecart +item.casing_357.name=.357 Magnum Casing (x24) +item.casing_44.name=.44 Magnum Casing (x24) +item.casing_50.name=Large Caliber Casing (x12) +item.casing_9.name=Small Caliber Casing (x32) +item.casing_buckshot.name=Buckshot Casing (x12) +item.catalyst_clay.name=Clay Catalyst +item.catalytic_converter.name=Catalytic Converter +item.cbt_device.name=CBT Device +item.cell_anti_schrabidium.name=Antischrabidium Cell +item.cell_antimatter.name=Antimatter Cell +item.cell_balefire.name=Gaseous Balefire Cell +item.cell_deuterium.name=Deuterium Cell +item.cell_empty.name=Empty Cell +item.cell_puf6.name=Plutonium Hexafluoride Cell +item.cell_sas3.name=Schrabidium Trisulfide Cell +item.cell_tritium.name=Tritium Cell +item.cell_uf6.name=Uranium Hexafluoride Cell +item.centri_stick.name=Centrifuge on a Stick +item.centrifuge_element.name=Centrifuge Element +item.centrifuge_tower.name=Centrifuge Tower +item.chainsaw.name=Chainsaw +item.cheese.name=Cheese +item.cheese_quesadilla.name=Cheese Quesadilla +item.chemical_dye.black.name=Chemical Dye (Black) +item.chemical_dye.blue.name=Chemical Dye (Blue) +item.chemical_dye.brown.name=Chemical Dye (Brown) +item.chemical_dye.cyan.name=Chemical Dye (Cyan) +item.chemical_dye.gray.name=Chemical Dye (Gray) +item.chemical_dye.green.name=Chemical Dye (Green) +item.chemical_dye.lightblue.name=Chemical Dye (Light Blue) +item.chemical_dye.lime.name=Chemical Dye (Lime) +item.chemical_dye.magenta.name=Chemical Dye (Magenta) +item.chemical_dye.orange.name=Chemical Dye (Orange) +item.chemical_dye.pink.name=Chemical Dye (Pink) +item.chemical_dye.purple.name=Chemical Dye (Purple) +item.chemical_dye.red.name=Chemical Dye (Red) +item.chemical_dye.silver.name=Chemical Dye (Light Gray) +item.chemical_dye.white.name=Chemical Dye (White) +item.chemical_dye.yellow.name=Chemical Dye (Yellow) +item.chemistry_set.name=Laboratory Glassware +item.chemistry_set_boron.name=Laboratory Glassware (Boron Glass) +item.chemistry_template.name=Chemistry Template: +item.chernobylsign.name=Chernobyl Warning Sign Battle Axe +item.chlorine_pinwheel.name=Chlorine Pinwheel +item.chlorophyte_pickaxe.name=Chlorophyte Pickaxe +item.chocolate.name=Ithis-Brand Radium Chocolate +item.chocolate.desc=Radium Chocolate? Pretty sure this is just meth. +item.chocolate_milk.name=Chocolate Milk +item.chopper.name=Hunter Chopper +item.chopper_blades.name=Hunter Chopper Rotor Blades +item.chopper_gun.name=Emplacement Gun +item.chopper_head.name=Hunter Chopper Cockpit +item.chopper_tail.name=Hunter Chopper Tail +item.chopper_torso.name=Hunter Chopper Body +item.chopper_wing.name=Hunter Chopper Wing +item.cigarette.name=FFI-Brand Cigarette +item.cinnebar.name=Cinnabar +item.circuit_aluminium.name=Basic Circuit +item.circuit_arsenic.name=Adaptable Circuit +item.circuit_arsenic_raw.name=Adaptable Circuit Assembly +item.circuit_bismuth.name=Versatile Chipset +item.circuit_bismuth_raw.name=Versatile Chipset Assembly +item.circuit_copper.name=Enhanced Circuit +item.circuit_gold.name=Overclocked Circuit +item.circuit_raw.name=Basic Circuit Assembly +item.circuit_red_copper.name=Advanced Circuit +item.circuit_schrabidium.name=High Performance Circuit +item.circuit_star.name=StarControl Circuit Board +item.circuit_star.desc=Currently unused, for it lacks an operating system. +item.circuit_star_component.chipset.name=StarControl Chipset +item.circuit_star_component.cpu.name=StarControl CPU +item.circuit_star_component.ram.name=StarControl RAM +item.circuit_star_piece.board_blank.name=SC - Printed Circuit Board +item.circuit_star_piece.board_transistor.name=SC - Transistors +item.circuit_star_piece.bridge_bios.name=SC- BIOS Chip +item.circuit_star_piece.bridge_bus.name=SC - BUS +item.circuit_star_piece.bridge_chipset.name=SC - Chipset +item.circuit_star_piece.bridge_cmos.name=SC - CMOS RAM +item.circuit_star_piece.bridge_io.name=SC - IO Chip +item.circuit_star_piece.bridge_north.name=SC - North Bridge +item.circuit_star_piece.bridge_south.name=SC - South Bridge +item.circuit_star_piece.cpu_cache.name=SC - CPU Cache +item.circuit_star_piece.cpu_clock.name=SC - CPU Clock +item.circuit_star_piece.cpu_ext.name=SC - Arsenic Semi Conductor Extension +item.circuit_star_piece.cpu_logic.name=SC - Arithmetic Logic Unit +item.circuit_star_piece.cpu_register.name=SC - CPU Register +item.circuit_star_piece.cpu_socket.name=SC - CPU Socket +item.circuit_star_piece.mem_socket.name=SC - Memory Socket +item.circuit_star_piece.mem_16k_a.name=SC - 16k Memory Stick Slot A +item.circuit_star_piece.mem_16k_b.name=SC - 16k Memory Stick Slot B +item.circuit_star_piece.mem_16k_c.name=SC - 16k Memory Stick Slot C +item.circuit_star_piece.mem_16k_d.name=SC - 16k Memory Stick Slot D +item.circuit_tantalium.name=Capacitor Board +item.circuit_tantalium_raw.name=Capacitor Board Assembly +item.circuit_targeting_tier1.name=Military Grade Circuit Board (Tier 1) +item.circuit_targeting_tier2.name=Military Grade Circuit Board (Tier 2) +item.circuit_targeting_tier3.name=Military Grade Circuit Board (Tier 3) +item.circuit_targeting_tier4.name=Military Grade Circuit Board (Tier 4) +item.circuit_targeting_tier5.name=Military Grade Circuit Board (Tier 5) +item.circuit_targeting_tier6.name=Military Grade Circuit Board (Tier 6) +item.cladding_desh.name=Desh Cladding +item.cladding_ghiorsium.name=Ghiorsium Cladding +item.cladding_iron.name=Iron Cladding +item.cladding_lead.name=Lead Cladding +item.cladding_obsidian.name=Obsidian Skin +item.cladding_paint.name=Lead Paint +item.cladding_rubber.name=Rubber Cladding +item.clip_bf.name=BF-Shell Double Pack +item.clip_bolt_action.name=Box of 12x74 Slugs +item.clip_cryolator.name=Tank of Cryolator Fuel +item.clip_defabricator.name=Belt with Defabricator Energy Cells +item.clip_emp.name=Small Pack of Energy Cells +item.clip_euthanasia.name=Last Aid Kit +item.clip_fatman.name=Six Pack of Mini Nukes +item.clip_hp.name=Ink Tanks +item.clip_immolator.name=Tank of Immolator Fuel +item.clip_jack.name=Box of Quadruple 12x70 Buckshot Rounds +item.clip_lever_action.name=Box of 12x74 Buckshot Rounds +item.clip_mirv.name=Three-In-One Pack of Mini MIRVs +item.clip_mp.name=Britannia Military Standard Issue Assault Rifle Magazine +item.clip_mp40.name=9mm SMG Magazine +item.clip_osipr.name=AR2 Magazine +item.clip_revolver.name=Box of .357 Rounds +item.clip_revolver_cursed.name=Britannia Military Standard Issue Pistol Magazine +item.clip_revolver_gold.name=Small Coffer of Golden Bullets +item.clip_revolver_iron.name=Box of Iron Rounds +item.clip_revolver_lead.name=Box of Nuclear Bullets +item.clip_revolver_nightmare.name=Bag of Bullets +item.clip_revolver_nightmare2.name=Belt with Laser Buckshot +item.clip_revolver_nopip.name=Box of .44 Rounds +item.clip_revolver_pip.name=Speedloader with Tainted Bullets +item.clip_revolver_schrabidium.name=Schrabidium Ammo Container +item.clip_rpg.name=Rocket Container +item.clip_spark.name=Large Electromagnetic Cartridge +item.clip_stinger.name=Pack of Stinger Rockets +item.clip_uboinik.name=Box of 12x70 Buckshot Rounds +item.clip_uzi.name=32rnd .22 LR Magazine +item.clip_xvl1456.name=Large Isotope Box +item.cmb_axe.name=CMB Steel Axe +item.cmb_boots.name=CMB Steel Boots +item.cmb_helmet.name=CMB Steel Helmet +item.cmb_hoe.name=CMB Steel Hoe +item.cmb_legs.name=CMB Steel Leggings +item.cmb_pickaxe.name=CMB Steel Pickaxe +item.cmb_plate.name=CMB Steel Chestplate +item.cmb_shovel.name=CMB Steel Shovel +item.cmb_sword.name=CMB Steel Sword +item.coal_infernal.name=Infernal Coal +item.cobalt_axe.name=Cobalt Axe +item.cobalt_boots.name=Cobalt Boots +item.cobalt_decorated_axe.name=Decorated Cobalt Axe +item.cobalt_decorated_hoe.name=Decorated Cobalt Hoe +item.cobalt_decorated_pickaxe.name=Decorated Cobalt Pickaxe +item.cobalt_decorated_shovel.name=Decorated Cobalt Shovel +item.cobalt_decorated_sword.name=Decorated Cobalt Sword +item.cobalt_helmet.name=Cobalt Helmet +item.cobalt_hoe.name=Cobalt Hoe +item.cobalt_legs.name=Cobalt Leggings +item.cobalt_pickaxe.name=Cobalt Pickaxe +item.cobalt_plate.name=Cobalt Chestplate +item.cobalt_shovel.name=Cobalt Shovel +item.cobalt_sword.name=Cobalt Sword +item.coffee.name=Coffee +item.coffee_radium.name=Radium Coffee +item.coil_advanced_alloy.name=Super Conducting Coil +item.coil_advanced_torus.name=Super Conducting Ring Coil +item.coil_copper.name=Copper Coil +item.coil_copper_torus.name=Ring Coil +item.coil_gold.name=Gold Coil +item.coil_gold_torus.name=Golden Ring Coil +item.coil_magnetized_tungsten.name=4000K High Temperature Super Conducting Coil +item.coil_tungsten.name=Heating Coil +item.coin_creeper.name=Nuclear Creeper Coin +item.coin_maskman.name=Maskman Coin +item.coin_radiation.name=Radiation Coin +item.coin_siege.name=Siege Coin +item.coin_ufo.name=UFO Coin +item.coin_worm.name=Balls-O-Tron Coin +item.coke.coal.name=Coal Coke +item.coke.lignite.name=Lignite Coke +item.coke.petroleum.name=Petroleum Coke +item.coltan_tool.name=Coltass +item.combine_scrap.name=CMB Scrap Metal +item.component_emitter.name=Emitter Component +item.component_limiter.name=Stabilizer Component +item.containment_box.name=Containment Box +item.cordite.name=Cordite +item.cotton_candy.name=Radioactive Cotton Candy +item.crackpipe.name=Health Pipe +item.crate_caller.name=Supply Drop Requester +item.crayon.black.name=Black Crayon +item.crayon.blue.name=Blue Crayon +item.crayon.brown.name=Brown Crayon +item.crayon.cyan.name=Cyan Crayon +item.crayon.gray.name=Gray Crayon +item.crayon.green.name=Green Crayon +item.crayon.lightblue.name=Light Blue Crayon +item.crayon.lime.name=Lime Crayon +item.crayon.magenta.name=Magenta Crayon +item.crayon.orange.name=Orange Crayon +item.crayon.pink.name=Pink Crayon +item.crayon.purple.name=Purple Crayon +item.crayon.red.name=Red Crayon +item.crayon.silver.name=Light Gray Crayon +item.crayon.white.name=White Crayon +item.crayon.yellow.name=Yellow Crayon +item.crowbar.name=Mk.V Crate Opening Device "Crowbar" +item.crucible.name=Crucible +item.crucible_template.name=Crucible Template: +item.crystal_aluminium.name=Aluminium Crystals +item.crystal_beryllium.name=Beryllium Crystals +item.crystal_charred.name=Charred Crystal +item.crystal_charred.desc=High quality silicate, slightly burned. +item.crystal_charred.desc.P11=Also a real horn. Weird, right? +item.crystal_coal.name=Coal Crystals +item.crystal_cobalt.name=Cobalt Crystals +item.crystal_copper.name=Copper Crystals +item.crystal_cinnebar.name=Cinnabar Crystals +item.crystal_diamond.name=Diamond Crystals +item.crystal_energy.name=Energy Crystal +item.crystal_fluorite.name=Fluorite Crystals +item.crystal_gold.name=Gold Crystals +item.crystal_horn.name=Crystal Horn +item.crystal_horn.desc=Not an actual horn. +item.crystal_horn.desc.P11=An actual horn. +item.crystal_iron.name=Iron Crystals +item.crystal_lead.name=Lead Crystals +item.crystal_lapis.name=Lapis Crystals +item.crystal_lithium.name=Lithium Crystals +item.crystal_niter.name=Niter Crystals +item.crystal_osmiridium.name=Osmiridium Crystals +item.crystal_phosphorus.name=Phosphorus Crystals +item.crystal_plutonium.name=Plutonium Crystals +item.crystal_rare.name=Rare Earth Crystals +item.crystal_redstone.name=Redstone Crystals +item.crystal_schrabidium.name=Schrabidium Crystals +item.crystal_schraranium.name=Schraranium Crystals +item.crystal_starmetal.name=Starmetal Crystals +item.crystal_sulfur.name=Sulfur Crystals +item.crystal_thorium.name=Thorium Crystals +item.crystal_titanium.name=Titanium Crystals +item.crystal_trixite.name=Trixite Crystals +item.crystal_tungsten.name=Tungsten Crystals +item.crystal_uranium.name=Uranium Crystals +item.crystal_xen.name=Artificial Xen Crystal +item.crt_display.name= Cathode Ray Tube +item.cube_power.name=Electronium Cube +item.custom_amat.name=Custom Nuke Antimatter Rod +item.custom_dirty.name=Custom Nuke Dirty Rod +item.custom_fall.name=Custom Nuke Drop Upgrade +item.custom_fall.desc=That's what you've aaaaaaall been waiting for!$Makes bomb drop upon activation +item.custom_hydro.name=Custom Nuke Hydrogen Rod +item.custom_kit.name=Custom Nuke Kit +item.custom_nuke.name=Custom Nuke Nuclear Rod +item.custom_schrab.name=Custom Nuke Schrabidium Rod +item.custom_tnt.name=Custom Nuke Explosive Charge +item.cyclotron_tower.name=Cyclotron Tower +item.debris_concrete.name=Broken Concrete +item.debris_element.name=Broken ZIRNOX Fuel Element +item.debris_exchanger.name=Heat Exchanger Piece +item.debris_fuel.name=RBMK Fuel Chunk +item.debris_graphite.name=Hot Graphite Chunk +item.debris_metal.name=Broken Metal Bar +item.debris_shrapnel.name=Walkway Shrapnel +item.definitelyfood.name=TotallyNotDirt-Brand MRE +item.defuser.name=High-Tech Bomb Defusing Device +item.defuser_gold.name=Golden Wire Cutter +item.demon_core_closed.name=Closed Demon Core +item.demon_core_open.name=Suspended Demon Core +item.desh_axe.name=Worker's Alloy Axe +item.desh_hoe.name=Worker's Alloy Hoe +item.desh_pickaxe.name=Worker's Alloy Pickaxe +item.desh_shovel.name=Worker's Alloy Shovel +item.desh_sword.name=Worker's Alloy Sword +item.designator.name=Short Range Target Designator +item.designator_arty_range.name=Long Range Artillery Remote +item.designator_manual.name=Manual Target Designator +item.designator_range.name=Long Range Target Designator +item.detonator.name=Detonator +item.detonator_de.name=Dead Man's Explosive +item.detonator_deadman.name=Dead Man's Detonator +item.detonator_laser.name=Laser Detonator +item.detonator_multi.name=Multi Detonator +item.deuterium_filter.name=Deuterium Filter +item.diamond_gavel.name=Diamond Gavel +item.dieselsuit_boots.name=Diesel-Powered High Heels +item.dieselsuit_helmet.name=Diesel-Powered Head-Mounted Environmental Sensor +item.dieselsuit_legs.name=Diesel-Powered Leg Servos +item.dieselsuit_plate.name=Diesel-Powered Cybernetics +item.digamma_diagnostic.name=Digamma Diagnostic +item.dns_boots.name=DNT Nano Suit Boots +item.dns_legs.name=DNT Nano Suit Leggings +item.dns_helmet.name=DNT Nano Suit Helmet +item.dns_plate.name=DNT Nano Suit Chestplate +item.dnt_boots.name=dienautronium boots +item.dnt_legs.name=dineuterium legs +item.dnt_helmet.name=dinotroniumu helmet +item.dnt_plate.name=dineutrom chestplate +item.door_bunker.name=Bunker Door +item.door_metal.name=Metal Door +item.door_office.name=Office Door +item.dosimeter.name=Dosimeter +item.drillbit_desh.name=Desh Drillbit +item.drillbit_desh_diamond.name=Desh Drillbit (Diamond-Tipped) +item.drillbit_ferro.name=Ferrouranium Drillbit +item.drillbit_ferro_diamond.name=Ferrouranium Drillbit (Diamond-Tipped) +item.drillbit_hss.name=High-Speed Steel Drillbit +item.drillbit_hss_diamond.name=High-Speed Steel Drillbit (Diamond-Tipped) +item.drillbit_steel.name=Steel Drillbit +item.drillbit_steel_diamond.name=Steel Drillbit (Diamond-Tipped) +item.drillbit_tcalloy.name=Technetium Steel Drillbit +item.drillbit_tcalloy_diamond.name=Technetium Steel Drillbit (Diamond-Tipped) +item.drill_titanium.name=Titanium Drill +item.drax.name=Terra Drill +item.drax_mk2.name=Hardened Terra Drill +item.drax_mk3.name=Schrabidic Terra Drill +item.ducttape.name=Duct Tape +item.dust.name=Dust +item.dust.desc=I hate dust! +item.dust.desc.P11=Another one bites the dust! +item.dust_tiny.name=Tiny Pile of Dust +item.dynosphere_base.name=Blank Dynosphere +item.dynosphere_desh.name=Desh Dynosphere +item.dynosphere_desh_charged.name=Desh Dynosphere (Charged) +item.dynosphere_dineutronium.name=Dineutronium Dynosphere +item.dynosphere_dineutronium_charged.name=Dineutronium Dynosphere (Charged) +item.dynosphere_euphemium.name=Euphemium Dynosphere +item.dynosphere_euphemium_charged.name=Euphemium Dynosphere (Charged) +item.dynosphere_schrabidium.name=Schrabidium Dynosphere +item.dynosphere_schrabidium_charged.name=Schrabidium Dynosphere (Charged) +item.dysfunctional_reactor.name=Dysfunctional Nuclear Reactor +item.early_explosive_lenses.name=Array of First-Generation High-Explosive Lenses +item.early_explosive_lenses.desc=Assembly of 8 high-explosive lenses with an aluminium$pusher, duraluminium shell, and bridgewire detonators. +item.egg_balefire.name=Balefire Egg +item.egg_balefire.desc=What kind of bird lays a radioactive egg? +item.egg_balefire_shard.name=Balefire Shard +item.egg_glyphid.name=Glyphid Egg +item.elec_axe.name=Electric Chainsaw +item.elec_pickaxe.name=Impact Drill +item.elec_shovel.name=Spiral Drill +item.elec_sword.name=Stunstick +item.energy_core.name=Makeshift Energy Core +item.entanglement_kit.name=Entanglement Kit +item.entanglement_kit.desc=Teleporter crafting item.$Enables dimension-shifting via a$beryllium-enhanced resource scanner. +item.envsuit_boots.name=M1TTY Environment Suit Boots +item.envsuit_helmet.name=M1TTY Environment Suit Helmet +item.envsuit_legs.name=M1TTY Environment Suit Leggings +item.envsuit_plate.name=M1TTY Environment Suit Chestplate +item.euphemium_boots.name=Euphemium Boots +item.euphemium_capacitor.name=Euphemium Capacitor +item.euphemium_capacitor.desc=Permits passive dispersion of accumulated positive energy. +item.euphemium_helmet.name=Euphemium Helmet +item.euphemium_kit.name=Euphemium Kit +item.euphemium_legs.name=Euphemium Leggings +item.euphemium_plate.name=Euphemium Chestplate +item.euphemium_stopper.name=Stopper +item.explosive_lenses.name=Array of High-Explosive Lenses +item.explosive_lenses.desc=Assembly of 8 PBX lenses with a thin$aluminium pusher, duraluminium shell, and$miniaturized bridgewire detonators. +item.fabsols_vodka.name=Fabsol's Vodka +item.factory_core_advanced.name=Advanced Factory Energy Cluster +item.factory_core_titanium.name=Basic Factory Energy Cluster +item.fallout.name=Pile of Fallout +item.fau_boots.name=Fau Boots +item.fau_helmet.name=Fau Helmet +item.fau_legs.name=Fau Leggins +item.fau_plate.name=Fau Chestplate +item.filter_coal.name=Activated Carbon Filter +item.fins_big_steel.name=Big Steel Grid Fins +item.fins_flat.name=Flat Steel Casing +item.fins_quad_titanium.name=Small Titanium Fins +item.fins_small_steel.name=Small Steel Grid Fins +item.fins_tri_steel.name=Large Steel Fins +item.five_htp.name=Enteramine Pills +item.five_htp.desc=Removes all DRX, Stability for 10 minutes +item.flame_conspiracy.name=Conspiracy Theory +item.flame_conspiracy.desc=Steel beams can't melt jet fuel! +item.flame_opinion.name=Own Opinion +item.flame_opinion.desc=Well, I like it... +item.flame_politics.name=Political Topic +item.flame_politics.desc=Donald Duck will build the wall! +item.flame_pony.name=Painting of a Cartoon Pony +item.flame_pony.desc=Yellow horse beats blue horse, that's a proven fact! +item.flask_infusion.shield.name=Shield Infusion +item.fleija_core.name=F.L.E.I.J.A. Uranium 235 Charge +item.fleija_igniter.name=Pulse Igniter +item.fleija_kit.name=F.L.E.I.J.A. Kit +item.fleija_propellant.name=Schrabidium Propellant +item.fluid_barrel_empty.name=Empty Fluid Barrel +item.fluid_barrel_full.name=Fluid Barrel: +item.fluid_barrel_infinite.name=Infinite Fluid Barrel +item.fluid_duct.name=Fluid Duct: +item.fluid_identifier.name=Fluid Identifier +item.fluid_identifier.info=Universal fluid identifier for: +item.fluid_identifier.usage0=Right click fluid ducts to designate them for that fluid. +item.fluid_identifier.usage1=Shift right click fluid ducts to designate adjacent ducts +item.fluid_identifier.usage2=up to a maximum range of 64 ducts. +item.fluid_identifier_multi.name=Multi Fluid Identifier +item.fluid_identifier_multi.info=Universal fluid identifier for: +item.fluid_identifier_multi.info2=Secondary type: +item.fluid_tank_empty.name=Empty Universal Fluid Tank +item.fluid_tank_full.name=Universal Fluid Tank: +item.fluid_tank_lead_empty.name=Empty Hazardous Material Tank +item.fluid_tank_lead_full.name=Hazardous Material Tank: +item.fluorite.name=Fluorite +item.flywheel_beryllium.name=Beryllium Flywheel +item.fmn.name=Flunitrazepam Tablet +item.fmn.desc=Removes all DRX above 2,000mDRX +item.folly_bullet.name=12.8cm Starmetal High-Energy Shell +item.folly_bullet_du.name=12.8cm DU-Shell +item.folly_bullet_nuclear.name=12.8cm Nuclear Shell +item.folly_shell.name=Silver Bullet Casing +item.fooditem.name=food item +item.fragment_actinium.name=Actinium-227 Fragment +item.fragment_boron.name=Boron Fragment +item.fragment_cerium.name=Cerium Fragment +item.fragment_cobalt.name=Cobalt Fragment +item.fragment_coltan.name=Coltan +item.fragment_lanthanium.name=Lanthanium Fragment +item.fragment_meteorite.name=Meteorite Fragment +item.fragment_neodymium.name=Neodymium Fragment +item.fragment_niobium.name=Niobium Fragment +item.fuel_tank_large.name=Large Fuel Tank +item.fuel_tank_medium.name=Medium Fuel Tank +item.fuel_tank_small.name=Small Fuel Tank +item.fuse.name=Fuse +item.fusion_core.name=Fusion Core +item.fusion_core_infinite.name=Infinite Fusion Core +item.fusion_shield_chlorophyte.name=Chlorophyte-Metallized Fusion Reactor Blanket +item.fusion_shield_desh.name=Desh Fusion Reactor Blanket +item.fusion_shield_tungsten.name=Tungsten Fusion Reactor Blanket +item.fusion_shield_vaporwave.name=Vaporwave Fusion Reactor Blanket +item.gadget_core.name=Large Plutonium Core +item.gadget_explosive.name=First Generation Explosive Lens +item.gadget_kit.name=The Gadget Kit +item.gadget_wireing.name=Wiring +item.gas_biogas.name=Biogas Tank +item.gas_empty.name=Empty Gas Tank +item.gas_full.name=Gas Tank: +item.gas_lpg.name=LPG Tank +item.gas_mask.name=Gas Mask +item.gas_mask_filter.name=Gas Mask Filter +item.gas_mask_filter_combo.name=Gas Mask Combo Filter +item.gas_mask_filter_mono.name=Catalytic Mask Filter +item.gas_mask_filter_piss.name=Advanced Makeshift Gas Mask Filter +item.gas_mask_filter_rag.name=Makeshift Gas Mask Filter +item.gas_mask_m65.name=M65-Z Gas Mask +item.gas_mask_mono.name=Half Mask +item.gas_mask_olde.name=Leather Gas Mask +item.gas_petroleum.name=Petroleum Gas Tank +item.gas_tester.name=Gas Sensor +item.gear_large.name=Large Gear +item.gear_large_steel.name=Large Steel Gear +item.geiger_counter.name=Handheld Geiger Counter +item.gem_alexandrite.name=Alexandrite +item.gem_tantalium.name=Tantalium Polycrystal +item.gem_tantalium.desc='Tantalum' +item.gem_tantalium.desc.P11=AKA Tantalum. +item.gem_volcanic.name=Volcanic Gem +item.generator_front.name=Generator Front +item.generator_steel.name=Generator Body +item.glitch.name=Glitch +item.glowing_stew.name=Glowing Mushroom Stew +item.glyphid_meat.name=Glyphid Meat +item.glyphid_meat_grilled.name=Grilled Glyphid Meat +item.goggles.name=Protection Goggles +item.grenade_aschrab.name=Tossable Antischrabidium Cell +item.grenade_black_hole.name=Black Hole Grenade +item.grenade_breach.name=Breaching Grenade +item.grenade_burst.name=Digger Grenade +item.grenate_cats.name=Grenade of Cats +item.grenade_cloud.name=Jar of Cloud +item.grenade_cluster.name=Cluster Bomb +item.grenade_electric.name=Lightning Bomb +item.grenade_fire.name=Flame Frag Grenade +item.grenade_flare.name=Signal Flare +item.grenade_frag.name=Frag Grenade +item.grenade_gas.name=Gas Grenade +item.grenade_gascan.name=Tossable Gas Can +item.grenade_generic.name=Grenade +item.grenade_if_bouncy.name=IF - Bouncy Grenade +item.grenade_if_brimstone.name=IF - Tossable Brimstone Mine +item.grenade_if_concussion.name=IF - Concussion Grenade +item.grenade_if_generic.name=IF - Grenade +item.grenade_if_he.name=IF - HE Grenade +item.grenade_if_hopwire.name=IF - Vortex Hopwire +item.grenade_if_impact.name=IF - Impact Grenade +item.grenade_if_incendiary.name=IF - Incendiary Grenade +item.grenade_if_mystery.name=IF - M.-Grenade +item.grenade_if_null.name=IF - Null Grenade +item.grenade_if_spark.name=IF - S.-Grenade +item.grenade_if_sticky.name=IF - Sticky Grenade +item.grenade_if_toxic.name=IF - Toxic Grenade +item.grenade_kit.name=Grenade Kit +item.grenade_kyiv.name=The Kyiv Special +item.grenade_lemon.name=Combustible Lemon +item.grenade_mirv.name=MIRV Grenade +item.grenade_mk2.name=Mk 2 Grenade "Ambassador Pineapple" +item.grenade_nuclear.name=Nuka Grenade +item.grenade_nuke.name=Mark VI Drill Grenade +item.grenade_pink_cloud.name=Jar of Pink Cloud +item.grenade_plasma.name=Plasma Grenade +item.grenade_poison.name=Poison Grenade +item.grenade_pulse.name=Impulse Grenade +item.grenade_schrabidium.name=Schrabidium Grenade +item.grenade_shrapnel.name=Shrapnel Grenade +item.grenade_smart.name=Smart Grenade +item.grenade_strong.name=Enhanced Grenade +item.grenade_tau.name=Tau Grenade +item.grenade_zomg.name=Negative Energy Pair Annihilation Grenade +item.gun_ar15.name=Josh +item.gun_avenger.name=CZ57 Avenger Minigun +item.gun_b92.name=§9B92 Energy Pistol§r +item.gun_b92_ammo.name=§9B92 Energy Cell§r +item.gun_b93.name=§cB93 Energy Mod§r +item.gun_benelli.name=Benelli Autoshotgun (Drum Mod) +item.gun_bf.name=BEL +item.gun_bf_ammo.name=Balefire Shell +item.gun_bio_revolver.name=Atlas +item.gun_bolt_action.name=Dream Bolt-Action Rifle (Original) +item.gun_bolt_action_ammo.name=12x74 Slug (LEGACY) +item.gun_bolt_action_green.name=Dream Bolt-Action Rifle (Green) +item.gun_bolt_action_saturnite.name=Saturnite Rifle +item.gun_bolter.name=Bolter +item.gun_bolter_digamma.name=Digamma Gun +item.gun_calamity.name=Buzzsaw +item.gun_calamity_ammo.name=.50 BMG Round (LEGACY) +item.gun_calamity_dual.name=Saddle Gun +item.gun_chemthrower.name=Chemthrower +item.gun_coilgun.name=Coilgun +item.gun_cryolator.name=The Cryolator +item.gun_cryolator_ammo.name=Cryo Cell +item.gun_dampfmaschine.name=Totally Not a Joke Weapon +item.gun_darter.name=Dart Gun +item.gun_deagle.name=Big Iron +item.gun_defabricator.name=Defabricator +item.gun_defabricator_ammo.name=Defabricator Energy Cell +item.gun_detonator.name=Laser Detonator +item.gun_emp.name=EMP Gun +item.gun_emp_ammo.name=Energy Cell +item.gun_euthanasia.name=Euthanasia +item.gun_euthanasia_ammo.name=Syringe +item.gun_fatman.name=M42 Nuclear Catapult "Fat Man" +item.gun_fatman_ammo.name=Mini Nuke (LEGACY) +item.gun_fireext.name=Fire Extinguisher +item.gun_flamer.name=Mister Topaz +item.gun_flechette.name=Flechette Rifle +item.gun_folly.name=Prototype Digamma "Folly" +item.gun_glass_cannon.name=The Glass Cannon +item.gun_hk69.name=Grenade Pistol +item.gun_hp.name=HPP Lazerjet +item.gun_hp_ammo.name=Ink Cartridge +item.gun_immolator.name=The Immolator +item.gun_immolator_ammo.name=Immolator Fuel +item.gun_jack.name=Jackhammer +item.gun_jack_ammo.name=Quadruple Shotgun Shell +item.gun_karl.name=Karl +item.gun_kit_1.name=Gun Oil +item.gun_kit_2.name=Gun Repair Kit +item.gun_ks23.name=Samuel the Big Shotgun +item.gun_lacunae.name=CZ33 Abaddon +item.gun_lacunae_ammo.name=5mm Round (LEGACY) +item.gun_lever_action.name=Mare's Leg (Original) +item.gun_lever_action_ammo.name=12x74 Buckshot (LEGACY) +item.gun_lever_action_dark.name=Mare's Leg (Dark) +item.gun_lever_action_sonata.name=Flipped Mare's Leg +item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r +item.gun_lunatic_marksman.name=Lunatic Sniper Rifle +item.gun_m2.name=Ma Deuce +item.gun_minigun.name=CZ53 Personal Minigun +item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" +item.gun_mirv_ammo.name=Eightfold MIRV (LEGACY) +item.gun_moist_nugget.name=Mosin-Nagant +item.gun_mp.name=Pacifist's Machine Gun +item.gun_mp40.name=Submachine Gun +item.gun_mp40_ammo.name=Submachine Gun Round (LEGACY) +item.gun_pm_ammo.name=Small Propellantless Machine Gun Round +item.gun_mymy.name=Nietes +item.gun_osipr.name=Overwatch Standard Issue Pulse Rifle +item.gun_osipr_ammo.name=Dark Energy Pulse Plug +item.gun_osipr_ammo2.name=Combine Ball +item.gun_panzerschreck.name=Panzerschreck +item.gun_proto.name=M42 Nuclear Catapult "Proto MIRV" +item.gun_quadro.name=Quattro Formaggi +item.gun_remington.name=バむデン ブラスト [BIDEN BLAST] +item.gun_revolver.name=Enhanced Revolver +item.gun_revolver_ammo.name=Lead Bullet +item.gun_revolver_blackjack.name=Blackjack Five-Shooter +item.gun_revolver_cursed.name=Cursed Revolver +item.gun_revolver_cursed_ammo.name=Steel Bullet +item.gun_revolver_gold.name=Golden Revolver +item.gun_revolver_gold_ammo.name=Golden Bullet +item.gun_revolver_inverted.name=Flipped Revolver +item.gun_revolver_iron.name=Simple Revolver +item.gun_revolver_iron_ammo.name=Bullet +item.gun_revolver_lead.name=Nuka Revolver +item.gun_revolver_lead_ammo.name=Glass Covered Nuclear Bullet +item.gun_revolver_nightmare.name=Nightmare Revolver (Original) +item.gun_revolver_nightmare2.name=Nightmare Revolver (Dark) +item.gun_revolver_nightmare2_ammo.name=Laser Buckshot +item.gun_revolver_nightmare_ammo.name=Nightmare Bullet +item.gun_revolver_nopip.name=Novac +item.gun_revolver_nopip_ammo.name=.44 Magnum Bullet (LEGACY) +item.gun_revolver_pip.name=Lil' Pipsqueak +item.gun_revolver_pip_ammo.name=Tainted Bullet (LEGACY) +item.gun_revolver_red.name=Red Key Revolver +item.gun_revolver_saturnite.name=Saturnite Shooter +item.gun_revolver_schrabidium.name=Schrabidium Revolver +item.gun_revolver_schrabidium_ammo.name=Schrabidium Bullet +item.gun_revolver_silver.name=Lent Gun +item.gun_rpg.name=Carl Gustav Recoilless Rifle +item.gun_rpg_ammo.name=Rocket (LEGACY) +item.gun_sauer.name=Stan Sauer's Shotgun +item.gun_skystinger.name=The One Sky Stinger +item.gun_spark.name=Spark Plug +item.gun_spark_ammo.name=Electromagnetic Cartridge +item.gun_spas12.name=SPAS-12 Shotgun +item.gun_stinger.name=FIM-92 Stinger +item.gun_stinger_ammo.name=Stinger Rocket (LEGACY) +item.gun_super_shotgun.name=Super Shotgun +item.gun_super_shotgun.desc=It's super broken! +item.gun_supershotgun.name=Super Shotgun +item.gun_thompson.name=Thompson Submachine Gun +item.gun_uac_pistol.name=UAC .45 Pistol +item.gun_uboinik.name=Uboinik +item.gun_uboinik_ammo.name=12x70 Buckshot (LEGACY) +item.gun_uzi.name=IMI Uzi +item.gun_uzi_ammo.name=.22 LR Round (LEGACY) +item.gun_uzi_saturnite.name=Saturnite Uzi +item.gun_uzi_saturnite_silencer.name=Saturnite Uzi with Silencer +item.gun_uzi_silencer.name=IMI Uzi with Silencer +item.gun_xvl1456.name=XVL1456 Tau Cannon Prototype +item.gun_xvl1456_ammo.name=Depleted Uranium-235 Box +item.gun_zomg.name=ZOMG Cannon +item.hand_drill.name=Hand Drill +item.hand_drill_desh.name=Desh Hand Drill +item.hazmat_boots.name=Hazmat Boots +item.hazmat_boots_grey.name=High-Performance Hazmat Boots +item.hazmat_boots_red.name=Advanced Hazmat Boots +item.hazmat_cloth.name=Hazmat Cloth +item.hazmat_cloth_grey.name=Lead-Reinforced Hazmat Cloth +item.hazmat_cloth_red.name=Advanced Hazmat Cloth +item.hazmat_grey_kit.name=High-Performance Hazmat Kit +item.hazmat_helmet.name=Hazmat Helmet +item.hazmat_helmet_grey.name=High-Performance Hazmat Helmet +item.hazmat_helmet_red.name=Advanced Hazmat Helmet +item.hazmat_kit.name=Hazmat Kit +item.hazmat_legs.name=Hazmat Leggings +item.hazmat_legs_grey.name=High-Performance Hazmat Leggings +item.hazmat_legs_red.name=Advanced Hazmat Leggings +item.hazmat_paa_boots.name=PaA Battle Hazmat Suit Boots +item.hazmat_paa_helmet.name=PaA Battle Hazmat Suit Helmet +item.hazmat_paa_legs.name=PaA Battle Hazmat Suit Leggings +item.hazmat_paa_plate.name=PaA Battle Hazmat Suit Chestplate +item.hazmat_plate.name=Hazmat Chestplate +item.hazmat_plate_grey.name=High-Performance Hazmat Chestplate +item.hazmat_plate_red.name=Advanced Hazmat Chestplate +item.hazmat_red_kit.name=Advanced Hazmat Kit +item.heart_booster.name=Heart Booster +item.heart_container.name=Heart Container +item.heart_fab.name=Fab Heart +item.heart_piece.name=Heart Piece +item.hev_battery.name=Suit Battery +item.hev_boots.name=HEV Mark IV Boots +item.hev_plate.name=HEV Mark IV Chestplate +item.hev_helmet.name=HEV Mark IV Helmet +item.hev_legs.name=HEV Mark IV Leggings +item.holotape_damaged.name=Damaged Holotape +item.holotape_image.name=Holotape +item.horseshoe_magnet.name=Horseshoe Magnet +item.hull_big_aluminium.name=Big Aluminium Shell +item.hull_big_steel.name=Big Steel Shell +item.hull_big_titanium.name=Big Titanium Shell +item.hull_small_aluminium.name=Small Aluminium Shell +item.hull_small_aluminium.desc=Can be inserted into drilled graphite +item.hull_small_steel.name=Small Steel Shell +item.igniter.name=Igniter +item.igniter.desc=(Used by right-clicking the Prototype)$It's a green metal handle with a$bright red button and a small lid.$At the bottom, the initials N.E. are$engraved. Whoever N.E. was, he had$a great taste in shades of green. +item.industrial_magnet.name=Industrial Magnet +item.inf_antimatter.name=Infinite Antimatter Tank +item.inf_antischrabidium.name=Infinite Antischrabidium Tank +item.inf_coolant.name=Infinite Coolant Tank +item.inf_deuterium.name=Infinite Deuterium Tank +item.inf_diesel.name=Infinite Diesel Tank +item.inf_sulfur.name=Infinite Sulfur Tank +item.inf_tritium.name=Infinite Tritium Tank +item.inf_water.name=Infinite Water Tank +item.inf_water_mk2.name=Heavy Infinite Water Tank +item.ingot_actinium.name=Actinium-227 Ingot +item.ingot_advanced_alloy.name=Advanced Alloy Ingot +item.ingot_aluminium.name=Aluminium Ingot +item.ingot_am_mix.name=Reactor Grade Americium Ingot +item.ingot_am241.name=Americium-241 Ingot +item.ingot_am242.name=Americium-242 Ingot +item.ingot_americium_fuel.name=Ingot of Americium Fuel +item.ingot_arsenic.name=Arsenic Ingot +item.ingot_asbestos.name=Asbestos Sheet +item.ingot_asbestos.desc=§o"Filled with life, self-doubt and asbestos. That comes with the air."§r +item.ingot_au198.name=Gold-198 Ingot +item.ingot_australium.name=Australium Ingot +item.ingot_bakelite.name=Bakelite Bar +item.ingot_beryllium.name=Beryllium Ingot +item.ingot_bismuth.name=Bismuth Ingot +item.ingot_boron.name=Boron Ingot +item.ingot_c4.name=Bar of Composition C-4 +item.ingot_cadmium.name=Cadmium Ingot +item.ingot_calcium.name=Calcium Ingot +item.ingot_cdalloy.name=Cadmium Steel Ingot +item.ingot_chainsteel.name=Heavy Chainsteel +item.ingot_co60.name=Cobalt-60 Ingot +item.ingot_cobalt.name=Cobalt Ingot +item.ingot_combine_steel.name=CMB Steel Ingot +item.ingot_combine_steel.desc=*insert Civil Protection reference here* +item.ingot_copper.name=Industrial Grade Copper +item.ingot_daffergon.name=Daffergon Ingot +item.ingot_desh.name=Desh Ingot +item.ingot_dineutronium.name=Dineutronium Ingot +item.ingot_dura_steel.name=High-Speed Steel Ingot +item.ingot_electronium.name=Electronium Ingot +item.ingot_euphemium.name=Euphemium Ingot +item.ingot_euphemium.desc=A very special and yet strange element. +item.ingot_ferrouranium.name=Ferrouranium Ingot +item.ingot_fiberglass.name=Fiberglass Bar +item.ingot_fiberglass.desc=High in fiber, high in glass. Everything the body needs. +item.ingot_firebrick.name=Firebrick +item.ingot_gh336.name=Ghiorsium-336 Ingot +item.ingot_gh336.desc=Seaborgium's colleague. +item.ingot_graphite.name=Graphite Ingot +item.ingot_hes.name=Highly Enriched Schrabidium Fuel Ingot +item.ingot_lanthanium.name=Semi-Stable Lanthanium Ingot +item.ingot_lanthanium.desc='Lanthanum' +item.ingot_lanthanium.desc.P11=Actually Lanthanum, but whatever. +item.ingot_lead.name=Lead Ingot +item.ingot_les.name=Low Enriched Schrabidium Fuel Ingot +item.ingot_magnetized_tungsten.name=Magnetized Tungsten Ingot +item.ingot_meteorite.name=Meteorite Ingot +item.ingot_meteorite_forged.name=Forged Meteorite Ingot +item.ingot_mox_fuel.name=Ingot of MOX Fuel +item.ingot_mud.name=Solid Mud Brick +item.ingot_neptunium.name=Neptunium Ingot +item.ingot_neptunium.desc=That one's my favourite! +item.ingot_neptunium.desc.P11=Woo, scary! +item.ingot_neptunium_fuel.name=Neptunium Fuel Ingot +item.ingot_niobium.name=Niobium Ingot +item.ingot_osmiridium.name=Osmiridium Ingot +item.ingot_pb209.name=Lead-209 Ingot +item.ingot_pc.name=Hard Plastic Bar +item.ingot_pet.name=Aluminium-Metallized PET Bar +item.ingot_phosphorus.name=Bar of White Phosphorus +item.ingot_plutonium.name=Plutonium Ingot +item.ingot_plutonium_fuel.name=Ingot of Plutonium Fuel +item.ingot_polonium.name=Polonium-210 Ingot +item.ingot_polymer.name=Polymer Bar +item.ingot_pu_mix.name=Reactor Grade Plutonium Ingot +item.ingot_pu238.name=Plutonium-238 Ingot +item.ingot_pu239.name=Plutonium-239 Ingot +item.ingot_pu240.name=Plutonium-240 Ingot +item.ingot_pu241.name=Plutonium-241 Ingot +item.ingot_pvc.name=PVC Bar +item.ingot_ra226.name=Radium-226 Ingot +item.ingot_red_copper.name=Minecraft Grade Copper +item.ingot_reiium.name=Reiium Ingot +item.ingot_rubber.name=Rubber Bar +item.ingot_saturnite.name=Saturnite Ingot +item.ingot_schrabidate.name=Ferric Schrabidate Ingot +item.ingot_schrabidium.name=Schrabidium Ingot +item.ingot_schrabidium_fuel.name=Ingot of Schrabidium Fuel +item.ingot_schraranium.name=Schraranium Ingot +item.ingot_schraranium.desc=Made from uranium in a schrabidium transmutator +item.ingot_semtex.name=Bar of Semtex +item.ingot_smore.name=S'more Ingot +item.ingot_solinium.name=Solinium Ingot +item.ingot_sr90.name=Strontium-90 Ingot +item.ingot_starmetal.name=§9Starmetal Ingot§r +item.ingot_steel.name=Steel Ingot +item.ingot_steel_dusted.name=Dusted Steel Ingot +item.ingot_tantalium.name=Tantalium Ingot +item.ingot_tantalium.desc='Tantalum' +item.ingot_tantalium.desc.P11=AKA Tantalum. +item.ingot_tcalloy.name=Technetium Steel Ingot +item.ingot_technetium.name=Technetium-99 Ingot +item.ingot_th232.name=Thorium-232 Ingot +item.ingot_thorium_fuel.name=Ingot of Thorium Fuel +item.ingot_titanium.name=Titanium Ingot +item.ingot_tungsten.name=Tungsten Ingot +item.ingot_u233.name=Uranium-233 Ingot +item.ingot_u235.name=Uranium-235 Ingot +item.ingot_u238.name=Uranium-238 Ingot +item.ingot_u238m2.name=Metastable Uranium-238M2 Ingot +item.ingot_unobtainium.name=Unobtainium Ingot +item.ingot_uranium.name=Uranium Ingot +item.ingot_uranium_fuel.name=Ingot of Uranium Fuel +item.ingot_verticium.name=Verticium Ingot +item.ingot_weidanium.name=Weidanium Ingot +item.ingot_zirconium.name=Zirconium Cube +item.injector_5htp.name=5-HTP Autoinjector +item.injector_knife.name=8 Inch Blade Autoinjector +item.ink.name=林 Ink +item.insert_doxium.name=Astolfium-Doped Doxium Insert +item.insert_du.name=DU Insert +item.insert_era.name=Explosive Reactive Armor Insert +item.insert_esapi.name=ESAPI Insert +item.insert_ghiorsium.name=Ghiorsium Insert +item.insert_kevlar.name=Kevlar Insert +item.insert_sapi.name=SAPI Insert +item.insert_polonium.name=Polonium Insert +item.insert_steel.name=Heavy Steel Insert +item.insert_xsapi.name=XSAPI Insert +item.insert_yharonite.name=Yharonite Insert +item.iv_blood.name=Blood Bag +item.iv_empty.name=IV Bag +item.iv_xp.name=Experience Bag +item.iv_xp_empty.name=Empty Experience Bag +item.jackt.name=Damn Stylish Ballistic Jacket +item.jackt2.name=Damn Stylish Ballistic Jacket 2: Tokyo Drift +item.jetpack_boost.name=Boostpack +item.jetpack_break.name=Builder's Jetpack +item.jetpack_fly.name=Jetpack +item.jetpack_tank.name=Jetpack Reserve Fuel Tank +item.jetpack_vector.name=Vectored Jetpack +item.journal_bj.name=Whiskey Drenched Notebook +item.journal_pip.name=Survivalist's Journal +item.journal_silver.name=Contractor's Notes +item.key.name=Key +item.key_fake.name=Counterfeit Key +item.key_kit.name=Key Imitation Kit +item.key_red.name=Red Key +item.key_red.desc=Explore the other side. +item.key_red.desc.P11=§4e§r +item.kit_toolbox.name=Toolbox +item.kit_toolbox_empty.name=Empty Toolbox +item.laser_crystal_bismuth.desc=Bismuth-Samarium-Uranium-Thorium crystal matrix +item.laser_crystal_bismuth.name=BiSmUTh Laser Crystal +item.laser_crystal_cmb.desc=Antischrabidium Suspended in a CMB-Schrabidate Alloy Lattice +item.laser_crystal_cmb.name=CMB-Schrabidate Antimatter Laser Crystal +item.laser_crystal_co2.desc=Carbon Dioxide encased in Crystalline Desh +item.laser_crystal_co2.name=CO2-Desh Laser Crystal +item.laser_crystal_digamma.name=Digamma Laser Crystal +item.laser_crystal_dnt.desc=Dineutronium-Spark Fermion Supercrystal +item.laser_crystal_dnt.name=Spark Laser Crystal +item.lead_gavel.name=Leaden Gavel +item.lemon.name="Lemon" +item.letter.name=Express Mail +item.levitation_unit.name=Gravity Manipulator +item.lignite.name=Lignite +item.limiter.name=Generator Limiter +item.linker.name=Telelinker +item.liquidator_boots.name=Liquidator Suit Boots +item.liquidator_helmet.name=Liquidator Suit Helmet +item.liquidator_legs.name=Liquidator Suit Leggins +item.liquidator_plate.name=Liquidator Suit Chestplate +item.lithium.name=Lithium Cube +item.lodestone.name=Lodestone +item.loop_stew.name=IT Breakfast +item.loops.name=Lööps +item.loot_10.name=Size 10 Missile Loot Crate +item.loot_15.name=Size 15 Missile Loot Crate +item.loot_misc.name=General Missile Loot Crate +item.magnet_circular.name=Flat Magnet +item.magnet_dee.name=Dee Magnets +item.magnetron.name=Magnetron +item.man_core.name=Plutonium Core +item.man_explosive.name=Explosive Lens +item.man_igniter.name=Bomb Firing Unit +item.man_kit.name=Fat Man Kit +item.marshmallow.name=Marshmallow on a Stick +item.mask_of_infamy.name=Mask of Infamy +item.mask_piss.name=Trench Mask +item.mask_rag.name=Crude Protective Mask +item.matchstick.name=Matchstick +item.mech_key.name=Large Silver Key +item.mech_key.desc=It pulses with power. +item.mechanism_launcher_1.name=Launcher Mechanism +item.mechanism_launcher_2.name=Advanced Launcher Mechanism +item.mechanism_revolver_1.name=Revolver Mechanism +item.mechanism_revolver_2.name=Advanced Revolver Mechanism +item.mechanism_rifle_1.name=Rifle Mechanism +item.mechanism_rifle_2.name=Advanced Rifle Mechanism +item.mechanism_special.name=High-Tech Weapon Mechanism +item.med_bag.name=Doctor's Bag +item.med_ipecac.name=Ipecac Syrup +item.med_ptsd.name=PTSD Medication +item.med_schiziphrenia.name=Schizophrenia Medication +item.medal_liquidator.name=Liquidator Medal +item.meltdown_tool.name=Dyatlov Instant Meltdown Applicator +item.memespoon.name=§eMarket Gardener +item.memory.name=item.null.name +item.mese_gavel.name=Mese Gavel +item.mese_pickaxe.name=Mese Pickaxe +item.meteor_charm.name=Meteor Charm +item.meteor_remote.name=Meteorite Remote +item.meteorite_sword.name=Meteorite Sword +item.meteorite_sword_seared.name=Meteorite Sword (Seared) +item.meteorite_sword_reforged.name=Meteorite Sword (Reforged) +item.meteorite_sword_hardened.name=Meteorite Sword (Hardened) +item.meteorite_sword_alloyed.name=Meteorite Sword (Alloyed) +item.meteorite_sword_machined.name=Meteorite Sword (Machined) +item.meteorite_sword_treated.name=Meteorite Sword (Treated) +item.meteorite_sword_etched.name=Meteorite Sword (Etched) +item.meteorite_sword_bred.name=Meteorite Sword (Bred) +item.meteorite_sword_irradiated.name=Meteorite Sword (Irradiated) +item.meteorite_sword_fused.name=Meteorite Sword (Fused) +item.meteorite_sword_baleful.name=Meteorite Sword (Baleful) +item.mike_cooling_unit.name=Deuterium Cooling Unit +item.mike_core.name=Uranium Coated Deuterium Tank +item.mike_deut.name=Deuterium Tank +item.mike_kit.name=Ivy Mike Kit +item.mirror_tool.name=Mirror Adjustment Tool +item.mirror_tool.linked=Alignment position set! +item.mirror_tool.desc=Right-click boiler to memorize the position.$Click on mirrors to turn them towards the boiler. +item.missile_anti_ballistic.name=Anti Ballistic Missile +item.missile_assembly.name=Small Missile Assembly +item.missile_bhole.name=Black Hole Missile +item.missile_burst.name=Spare Missile +item.missile_buster.name=Bunker Buster +item.missile_buster_strong.name=Enhanced Bunker Buster +item.missile_carrier.name=HTR-01 Carrier Rocket +item.missile_cluster.name=Cluster Missile +item.missile_cluster_strong.name=Strong Cluster Missile +item.missile_custom.name=Custom Missile +item.missile_doomsday.name=Doomsday Missile +item.missile_drill.name=The Concrete Cracker +item.missile_emp.name=EMP Missile +item.missile_emp_strong.name=Strong EMP Missile +item.missile_endo.name=Endothermic Missile +item.missile_exo.name=Exothermic Missile +item.missile_generic.name=High Explosive Missile +item.missile_incendiary.name=Incendiary Missile +item.missile_incendiary_strong.name=Strong Incendiary Missile +item.missile_inferno.name=Inferno Missile G.R.N. Mk.II +item.missile_kit.name=Missile Kit +item.missile_micro.name=Micro-Nuclear Missile +item.missile_nuclear.name=Nuclear Missile +item.missile_nuclear_cluster.name=Thermonuclear Missile +item.missile_rain.name=Bomblet Rain +item.missile_schrabidium.name=Schrabidium Missile +item.missile_shuttle.name=Reliant Robin Space Shuttle +item.missile_skin_camo.name=Missile Skin: Camo +item.missile_skin_color.desc=I can't find my missile anymore! +item.missile_skin_desert.name=Missile Skin: Desert Camo +item.missile_skin_desert.desc=Looks like sand, tastes like metal. +item.missile_skin_flames.name=Missile Skin: Sick Flames +item.missile_skin_flames.desc=Radical! +item.missile_skin_manly_pink.name=Missile Skin: Manly Pink +item.missile_skin_manly_pink.desc=Pink, the manliest color of them all. +item.missile_skin_metal.name=Missile Skin: Metal +item.missile_skin_metal.desc=Metal sheets and metal bolts, reinforced with metal. +item.missile_skin_orange_insulation.name=Missile Skin: Orange Insulation +item.missile_skin_orange_insulation.desc=Not an orange juice bottle;$do not attempt to drink contents. +item.missile_skin_sleek.name=Missile Skin: IF-R&D +item.missile_skin_sleek.desc=Chevrons are cool! +item.missile_skin_soviet_glory.name=Missile Skin: Soviet Glory +item.missile_skin_soviet_glory.desc=услуга перевПЎа МеЎПступМа +item.missile_skin_soviet_stank.name=Missile Skin: Soviet Stank +item.missile_skin_soviet_stank.desc=This one's got the real 60's stank to it. +item.missile_soyuz.name=Soyuz-FG +item.missile_soyuz_lander.name=Orbital Module +item.missile_soyuz_lander.desc=Doubles as a crappy lander! +item.missile_strong.name=Strong HE Missile +item.missile_taint.name=Taint-Tipped Missile +item.missile_volcano.name=Tectonic Missile +item.missile_volcano.desc=Using the power of nuclear explosives, we can summon a volcano! +item.mold_base.name=Blank Foundry Mold +item.mold.name=Foundry Mold +item.morning_glory.name=Morning Glory +item.motor.name=Motor +item.motor_bismuth.name=Bismuth Motor +item.motor_desh.name=Desh Motor +item.mp_c_1.name=Tier 1 Missile Targeting Circuit +item.mp_c_2.name=Tier 2 Missile Targeting Circuit +item.mp_c_3.name=Tier 3 Missile Targeting Circuit +item.mp_c_4.name=Tier 4 Missile Targeting Circuit +item.mp_c_5.name=Tier 5 Missile Targeting Circuit +item.mp_fuselage_10_15_balefire.name=Size 10/15 BF Fuselage +item.mp_fuselage_10_15_hydrogen.name=Size 10/15 Hydrogen Fuselage +item.mp_fuselage_10_15_kerosene.name=Size 10/15 Kerosene Fuselage +item.mp_fuselage_10_15_solid.name=Size 10/15 Solid Fuel Fuselage +item.mp_fuselage_10_kerosene.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_camo.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_desert.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_flames.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_insulation.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_metal.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_sky.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_sleek.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_taint.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_long_kerosene.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_camo.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_dash.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_desert.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_flames.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_insulation.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_metal.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_sky.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_sleek.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_taint.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_vap.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_solid.name=Size 10 Long Solid Fuel Fuselage +item.mp_fuselage_10_long_solid_bullet.name=Size 10 Long Solid Fuselage +item.mp_fuselage_10_long_solid_flames.name=Size 10 Long Solid Fuel Fuselage +item.mp_fuselage_10_long_solid_insulation.name=Size 10 Long Solid Fuel Fuselage +item.mp_fuselage_10_long_solid_silvermoonlight.name=Size 10 Long Solid Fuselage +item.mp_fuselage_10_long_solid_sleek.name=Size 10 Long Solid Fuel Fuselage +item.mp_fuselage_10_long_solid_soviet_glory.name=Size 10 Long Solid Fuselage +item.mp_fuselage_10_solid.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_battery.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_cathedral.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_duracell.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_flames.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_insulation.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_moonlit.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_sleek.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_soviet_glory.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_xenon.name=Size 10 Xenon Fuselage +item.mp_fuselage_10_xenon_bhole.name=Size 10 Xenon Fuselage +item.mp_fuselage_15_20_kerosene.name=Size 15/20 Kerosene Fuselage +item.mp_fuselage_15_20_kerosene_magnusson.name=Size 15/20 Kerosene Fuselage +item.mp_fuselage_15_20_solid.name=Size 15/20 Solid Fuel Fuselage +item.mp_fuselage_15_balefire.name=Size 15 BF Fuselage +item.mp_fuselage_15_hydrogen.name=Size 15 Hydrogen Fuselage +item.mp_fuselage_15_hydrogen_cathedral.name=Size 15 Hydrogen Fuselage +item.mp_fuselage_15_kerosene.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_blackjack.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_camo.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_decorated.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_desert.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_insulation.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_lambda.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_metal.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_minuteman.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_pip.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_polite.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_sky.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_steampunk.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_taint.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_yuck.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_solid.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_desh.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_faust.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_insulation.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_mimi.name=Size 15 Solid Fuel Mimi-chan's Body +item.mp_fuselage_15_solid_panorama.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_roses.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_silvermoonlight.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_snowy.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_soviet_glory.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_soviet_stank.name=Size 15 Solid Fuel Fuselage +item.mp_stability_10_cruise.name=Size 10 Cruise Fins +item.mp_stability_10_flat.name=Size 10 Flat Fins +item.mp_stability_10_space.name=Size 10 Space Fins +item.mp_stability_15_flat.name=Size 15 Flat Fins +item.mp_stability_15_soyuz.name=Size 15 Pointy Fins +item.mp_stability_15_thin.name=Size 15 Thin Fins +item.mp_thruster_10_kerosene.name=Size 10 Liquid Fuel Thruster +item.mp_thruster_10_solid.name=Size 10 Solid Fuel Thruster +item.mp_thruster_10_xenon.name=Size 10 Ion Thruster +item.mp_thruster_15_balefire.name=Size 15 BF Thruster with Nuclear Preheater +item.mp_thruster_15_balefire_large.name=Size 15 BF Thruster with Nuclear Preheater (Heavy Duty Nozzle) +item.mp_thruster_15_balefire_large_rad.name=Size 15 BF Thruster with Nuclear Preheater (Heavy Duty Nozzle) +item.mp_thruster_15_balefire_short.name=Size 15 BF Thruster with Nuclear Preheater (Shortened) +item.mp_thruster_15_hydrogen.name=Size 15 Hydrogen Thruster +item.mp_thruster_15_hydrogen_dual.name=Size 15 Hydrogen Twin Thrusters +item.mp_thruster_15_kerosene.name=Size 15 Liquid Fuel Thruster +item.mp_thruster_15_kerosene_dual.name=Size 15 Liquid Fuel Twin Thrusters +item.mp_thruster_15_kerosene_triple.name=Size 15 Liquid Fuel Triple Thrusters +item.mp_thruster_15_solid.name=Size 15 Solid Fuel Thruster +item.mp_thruster_15_solid_hexdecuple.name=Size 15 Solid Fuel Hexdecuple Thrusters +item.mp_thruster_20_kerosene.name=Size 20 Liquid Fuel Thruster +item.mp_thruster_20_kerosene_dual.name=Size 20 Liquid Fuel Twin Thrusters +item.mp_thruster_20_kerosene_triple.name=Size 20 Liquid Fuel Triple Thrusters +item.mp_thruster_20_solid.name=Size 20 Solid Fuel Thruster +item.mp_thruster_20_solid_multi.name=Size 20 Solid Fuel 30-Fold Thrusters +item.mp_thruster_20_solid_multier.name=Size 20 Solid Fuel 47-Fold Thrusters +item.mp_warhead_10_buster.name=Size 10 Bunker Buster Warhead +item.mp_warhead_10_cloud.name=Size 10 Pink Cloud Warhead +item.mp_warhead_10_he.name=Size 10 HE Warhead +item.mp_warhead_10_incendiary.name=Size 10 Incendiary Warhead +item.mp_warhead_10_nuclear.name=Size 10 Micro Nuclear Warhead +item.mp_warhead_10_nuclear_large.name=Size 10 Nuclear Warhead +item.mp_warhead_10_taint.name=Size 10 Tainted Warhead +item.mp_warhead_15_balefire.name=Size 15 BF Warhead +item.mp_warhead_15_boxcar.name=Size 15 Boxcar? +item.mp_warhead_15_he.name=Size 15 HE Warhead +item.mp_warhead_15_incendiary.name=Size 15 Incendiary Warhead +item.mp_warhead_15_n2.name=Size 15 N² Mine +item.mp_warhead_15_nuclear.name=Size 15 Nuclear Warhead +item.mp_warhead_15_nuclear_mimi.name=Size 15 Mimi-chan's Head +item.mp_warhead_15_nuclear_shark.name=Size 15 Nuclear Warhead +item.mp_warhead_15_turbine.name=Size 15 Jet Engine +item.mucho_mango.name=AriZona Mucho Mango +item.multi_kit.name=Multi Purpose Bomb Kit +item.multitool_beam.name=Power Fist (Zapper) +item.multitool_decon.name=Power Fist (Decontaminator) +item.multitool_dig.name=Power Fist (Digging Claw) +item.multitool_ext.name=Power Fist (Ore Extractor) +item.multitool_hit.name=Power Fist (Fist) +item.multitool_joule.name=Power Fist (Giga Joule) +item.multitool_mega.name=Power Fist (Super Punch) +item.multitool_miner.name=Power Fist (Extracting Mining Laser) +item.multitool_silk.name=Power Fist (Silk Touch Claw) +item.multitool_sky.name=Power Fist (Crack the Sky) +item.mysteryshovel.name=Brittle Spade +item.n2_charge.name=Large Explosive Charge +item.neutrino_lens.name=Neutrino Lens +item.neutron_reflector.name=Neutron Reflector +item.night_vision.name=Night Vision Goggles +item.night_vision.description.item=Grants you night vision (requires full electric set) +item.night_vision.description.in_armor=%s (grants night vision) +item.niter.name=Niter +item.no9.name=Mining Helmet +item.nossy_hat.name=Fabulous Hat +item.nothing.name=Nothing +item.nuclear_waste.name=Nuclear Waste +item.nuclear_waste_pearl.name=Nuclear Waste Pearl +item.nuclear_waste_tiny.name=Tiny Pile of Nuclear Waste +item.nuclear_waste_long.name=Long-Lived Nuclear Waste +item.nuclear_waste_long_tiny.name=Tiny Pile of Long-Lived Nuclear Waste +item.nuclear_waste_long_depleted.name=Decayed Long-Lived Nuclear Waste +item.nuclear_waste_long_depleted_tiny.name=Tiny Pile of Decayed Long-Lived Nuclear Waste +item.nuclear_waste_short.name=Short-Lived Nuclear Waste +item.nuclear_waste_short_tiny.name=Tiny Pile of Short-Lived Nuclear Waste +item.nuclear_waste_short_depleted.name=Decayed Short-Lived Nuclear Waste +item.nuclear_waste_short_depleted_tiny.name=Tiny Pile of Decayed Short-Lived Nuclear Waste +item.nuclear_waste_vitrified.name=Vitrified Nuclear Waste +item.nuclear_waste_vitrified_tiny.name=Tiny Pile of Vitrified Nuclear Waste +item.nugget.name=Chicken Nugget +item.nugget_actinium.name=Actinium-227 Nugget +item.nugget_am_mix.name=Reactor Grade Americium Nugget +item.nugget_am241.name=Americium-241 Nugget +item.nugget_am242.name=Americium-242 Nugget +item.nugget_americium_fuel.name=Americium Fuel Nugget +item.nugget_arsenic.name=Arsenic Nugget +item.nugget_au198.name=Gold-198 Nugget +item.nugget_australium.name=Australium Nugget +item.nugget_australium_greater.name=Greater Australium Nugget +item.nugget_australium_lesser.name=Lesser Australium Nugget +item.nugget_beryllium.name=Beryllium Nugget +item.nugget_bismuth.name=Bismuth Nugget +item.nugget_co60.name=Cobalt-60 Nugget +item.nugget_cobalt.name=Cobalt Nugget +item.nugget_daffergon.name=Daffergon Nugget +item.nugget_desh.name=Desh Nugget +item.nugget_dineutronium.name=Dineutronium Nugget +item.nugget_euphemium.name=Euphemium Nugget +item.nugget_euphemium.desc=A small piece of a pink metal.$It's properties are still unknown,$DEAL WITH IT carefully. +item.nugget_gh336.name=Ghiorsium-336 Nugget +item.nugget_gh336.desc=Seaborgium's colleague. +item.nugget_hes.name=Highly Enriched Schrabidium Fuel Nugget +item.nugget_lead.name=Lead Nugget +item.nugget_les.name=Low Enriched Schrabidium Fuel Nugget +item.nugget_mercury_tiny.name=Tiny Drop of Mercury +item.nugget_mercury.name=Drop of Mercury +item.nugget_mox_fuel.name=Nugget of MOX Fuel +item.nugget_mox_fuel.desc=Moxie says: §lTAX EVASION.§r +item.nugget_neptunium.name=Neptunium Nugget +item.nugget_neptunium_fuel.name=Neptunium Fuel Nugget +item.nugget_osmiridium.name=Osmiridium Nugget +item.nugget_pb209.name=Lead-209 Nugget +item.nugget_plutonium.name=Plutonium Nugget +item.nugget_plutonium_fuel.name=Nugget of Plutonium Fuel +item.nugget_polonium.name=Polonium-210 Nugget +item.nugget_pu_mix.name=Reactor Grade Plutonium Nugget +item.nugget_pu238.name=Plutonium-238 Nugget +item.nugget_pu239.name=Plutonium-239 Nugget +item.nugget_pu240.name=Plutonium-240 Nugget +item.nugget_pu241.name=Plutonium-241 Nugget +item.nugget_ra226.name=Radium-226 Nugget +item.nugget_reiium.name=Reiium Nugget +item.nugget_schrabidium.name=Schrabidium Nugget +item.nugget_schrabidium_fuel.name=Nugget of Schrabidium Fuel +item.nugget_solinium.name=Solinium Nugget +item.nugget_sr90.name=Strontium-90 Nugget +item.nugget_tantalium.name=Tantalium Nugget +item.nugget_tantalium.desc='Tantalum' +item.nugget_tantalium.desc.P11=AKA Tantalum. +item.nugget_technetium.name=Technetium-99 Nugget +item.nugget_th232.name=Thorium-232 Nugget +item.nugget_thorium_fuel.name=Nugget of Thorium Fuel +item.nugget_u233.name=Uranium-233 Nugget +item.nugget_u235.name=Uranium-235 Nugget +item.nugget_u238.name=Uranium-238 Nugget +item.nugget_unobtainium.name=Unobtainium Nugget +item.nugget_uranium.name=Uranium Nugget +item.nugget_uranium_fuel.name=Nugget of Uranium Fuel +item.nugget_verticium.name=Verticium Nugget +item.nugget_weidanium.name=Weidanium Nugget +item.nugget_zirconium.name=Zirconium Splinter +item.nuke_advanced_kit.name=Atomic Science Advanced Kit +item.nuke_commercially_kit.name=Atomic Science Kit for Commercial Uses +item.nuke_electric_kit.name=Electronic Engineer's Kit +item.nuke_starter_kit.name=Atomic Science Starter Kit +item.oil_canola.name=Raw Canola Oil +item.oil_detector.name=Oil Reservoir Detector +item.oil_detector.desc1=Right-click to scan for oil. +item.oil_detector.desc2=Detector will only find larger deposits. +item.oil_detector.bullseye=Oil deposit directly below! +item.oil_detector.detected=Oil detected nearby. +item.oil_detector.noOil=No oil detected. +item.oil_tar.coal.name=Coal Tar +item.oil_tar.crude.name=Oil Tar +item.oil_tar.crack.name=Crack Oil Tar +item.oil_tar.paraffin.name=Paraffin Wax +item.oil_tar.wax.name=Chlorinated Petroleum Wax +item.oil_tar.wood.name=Wood Tar +item.ore.asbestos=Asbestos +item.ore.borax=Borax +item.ore.chlorocalcite=Chlorocalcite +item.ore.copper=Copper +item.ore.gold=Gold +item.ore.iron=Iron +item.ore.niobium=Niobium +item.ore.titanium=Titanium +item.ore.tungsten=Tungsten +item.ore.thorium=Thorium +item.ore.uranium=Uranium +item.ore_bedrock.name=%s Bedrock Ore +item.ore_byproduct.b_aluminium.name=Crystalline Aluminium Fragment +item.ore_byproduct.b_bismuth.name=Crystalline Bismuth Fragment +item.ore_byproduct.b_calcium.name=Crystalline Calcium Fragment +item.ore_byproduct.b_copper.name=Crystalline Copper Fragment +item.ore_byproduct.b_iron.name=Crystalline Iron Fragment +item.ore_byproduct.b_lead.name=Crystalline Lead Fragment +item.ore_byproduct.b_lithium.name=Crystalline Lithium Fragment +item.ore_byproduct.b_polonium.name=Crystalline Polonium Fragment +item.ore_byproduct.b_radium.name=Crystalline Radium Fragment +item.ore_byproduct.b_silicon.name=Crystalline Silicon Fragment +item.ore_byproduct.b_sulfur.name=Crystalline Sulfur Fragment +item.ore_byproduct.b_technetium.name=Crystalline Technetium Fragment +item.ore_byproduct.b_titanium.name=Crystalline Titanium Fragment +item.ore_byproduct.b_uranium.name=Crystalline Uranium Fragment +item.ore_centrifuged.name=Centrifuged %s Ore +item.ore_cleaned.name=Cleaned %s Ore +item.ore_deepcleaned.name=Deep Cleaned %s Ore +item.ore_enriched.name=Enriched %s Ore +item.ore_nitrated.name=Nitrated %s Ore +item.ore_nitrocrystalline.name=Nitrocrystalline %s Ore +item.ore_purified.name=Purified %s Ore +item.ore_radcleaned.name=Radiation-Cleaned %s Ore +item.ore_seared.name=Seared %s Ore +item.ore_separated.name=Separated %s Ore +item.overfuse.name=Singularity Screwdriver +item.overfuse.desc=Say what? +item.oxy_mask.name=Oxygen Mask +item.paa_boots.name=PaA "good ol' shoes" +item.paa_legs.name=PaA Leg Reinforcements +item.paa_plate.name=PaA Chest Protection Plate +item.padlock.name=Padlock +item.padlock_reinforced.name=Reinforced Padlock +item.padlock_rusty.name=Rusty Padlock +item.padlock_unbreakable.name=Unbreakable Padlock +item.pads_rubber.name=Rubber Pads +item.pads_slime.name=Slime Pads +item.pads_static.name=Static Pads +item.pancake.name=Pancake made from Scrap Metal, Nails and Gem Dust +item.part_beryllium.name=Box of Beryllium Dust +item.part_carbon.name=Box of Carbon Dust +item.part_copper.name=Box of Copper Dust +item.part_generic.piston_electric.name=Electric Piston +item.part_generic.piston_hydraulic.name=Hydraulic Piston +item.part_generic.piston_pneumatic.name=Pneumatic Piston +item.part_lithium.name=Box of Lithium Dust +item.part_plutonium.name=Box of Plutonium Dust +item.particle_aelectron.name=Positron Capsule +item.particle_amat.name=Antimatter Capsule +item.particle_aproton.name=Antiproton Capsule +item.particle_aschrab.name=Antischrabidium Capsule +item.particle_copper.name=Copper Ion Capsule +item.particle_dark.name=Dark Matter Capsule +item.particle_digamma.name=§cThe Digamma Particle§r +item.particle_empty.name=Empty Particle Capsule +item.particle_higgs.name=Higgs Boson Capsule +item.particle_hydrogen.name=Hydrogen Ion Capsule +item.particle_lead.name=Lead Ion Capsule +item.particle_lutece.name=Lutece Quasiparticle +item.particle_muon.name=Muon Capsule +item.particle_sparkticle.name=Sparkticle Capsule +item.particle_strange.name=Strange Quark Capsule +item.particle_tachyon.name=Tachyon Capsule +item.parts_legendary.name=Legendary Parts +item.peas.name=Peas +item.pedestal_steel.name=Steel Pedestal +item.pellet_advanced.name=Advanced Watz Performance Improver +item.pellet_antimatter.name=Antimatter Cluster +item.pellet_beryllium.name=Beryllium Moderator Pellet +item.pellet_buckshot.name=Lead Pellets +item.pellet_canister.name=Canister Shot +item.pellet_charged.name=Ionized Particles +item.pellet_chlorophyte.name=Chlorophyte Rounds +item.pellet_claws.name=Sharp Metal Claws +item.pellet_cluster.name=Explosive Pellets +item.pellet_cluster.desc=Used in multi purpose bombs:$Adds some extra boom! +item.pellet_coal.name=Dense Coal Cluster +item.pellet_coolant.name=Coolant Cluster +item.pellet_flechette.name=Flechettes +item.pellet_gas.name=Poison Gas Cartridge +item.pellet_gas.desc=Used in multi purpose bombs:$*cough cough* Halp pls! +item.pellet_hes.name=HES Watz Pellet +item.pellet_lead.name=Lead Reflector Pellet +item.pellet_les.name=LES Watz Pellet +item.pellet_mercury.name=Mercury Rounds +item.pellet_mes.name=MES Watz Pellet +item.pellet_meteorite.name=Meteorite Rounds +item.pellet_neptunium.name=Neptunium Watz Pellet +item.pellet_rtg.name=Plutonium-238 RTG Pellet +item.pellet_rtg.desc=RTG fuel pellet for infinite energy! (almost) +item.pellet_rtg_actinium.name=Actinium-227 RTG Pellet +item.pellet_rtg_actinium.desc=A glow of blue light and beta rays. +item.pellet_rtg_americium.name=Americium-241 RTG Pellet +item.pellet_rtg_americium.desc=Rare and reliable, good old Americium! +item.pellet_rtg_berkelium.name=Berkelium RTG Pellet +item.pellet_rtg_berkelium.desc= +item.pellet_rtg_cobalt.name=Cobalt-60 RTG Pellet +item.pellet_rtg_cobalt.desc=Not the best as an RTG, but great for gamma radiation! +item.pellet_rtg_depleted.bismuth.name=Decayed Bismuth RTG Pellet +item.pellet_rtg_depleted.lead.name=Decayed Lead RTG Pellet +item.pellet_rtg_depleted.neptunium.name=Decayed Neptunium RTG Pellet +item.pellet_rtg_depleted.mercury.name=Decayed Mercury RTG Pellet +item.pellet_rtg_depleted.nickel.name=Decayed Nickel RTG Pellet +item.pellet_rtg_depleted.zirconium.name=Decayed Zirconium RTG Pellet +item.pellet_rtg_lead.name=Lead-209 RTG Pellet +item.pellet_rtg_lead.desc=Exposure will result in immediate death. +item.pellet_rtg_gold.name=Gold-198 RTG Pellet +item.pellet_rtg_gold.desc=Made from a rare, highly unstable gold isotope. +item.pellet_rtg_polonium.name=Polonium-210 RTG Pellet +item.pellet_rtg_polonium.desc=More powerful RTG pellet, made from finest polonium! +item.pellet_rtg_strontium.name=Strontium-90 RTG Pellet +item.pellet_rtg_strontium.desc=Known to the State of California... +item.pellet_rtg_radium.name=Radium-226 RTG Pellet +item.pellet_rtg_radium.desc=Great starter pellet, sourced from all-natural radium! +item.pellet_rtg_weak.name=Weak Uranium RTG Pellet +item.pellet_rtg_weak.desc=Cheaper and weaker pellet, now with more U238! +item.pellet_schrabidium.name=Pure Schrabidium Watz Pellet +item.photo_panel.name=Photovoltaic Panel +item.pile_rod_boron.name=Chicago Pile Control Rod +item.pile_rod_boron.desc=§9[Neutron Absorber]$§eClick to toggle +item.pile_rod_detector.name=Chicago Pile Control & Detector Rod +item.pile_rod_detector.desc=§9[Neutron Detector/Absorber]$§eUse defuser to increase/decrease neutron limit$§eUse screwdriver w/o sneaking to inspect flux +item.pile_rod_lithium.name=Chicago Pile Lithium Cell +item.pile_rod_lithium.desc=§a[Breedable Fuel]$§eUse hand drill to inspect core +item.pile_rod_plutonium.name=Chicago Pile Plutonium Rod +item.pile_rod_plutonium.desc=§d[Neutron Source] +item.pile_rod_pu239.name=Chicago Pile Bred Uranium Rod +item.pile_rod_pu239.desc=§a[Reactive Fuel]$§eRich in Plutonium-239. +item.pile_rod_source.name=Chicago Pile Ra226Be Neutron Source +item.pile_rod_source.desc=§d[Neutron Source] +item.pile_rod_uranium.name=Chicago Pile Uranium Rod +item.pile_rod_uranium.desc=§a[Reactive Fuel]$§eUse hand drill to take core sample +item.pill_iodine.name=Iodine Pill +item.pill_iodine.desc=Removes negative effects +item.pill_herbal.name=Herbal Paste +item.pill_herbal.desc=Effective treatment against lung disease and mild radiation poisoning$Comes with side effects +item.pill_red.name=Red Pill +item.pin.name=Bobby Pin +item.pin.desc=Standard success rate of picking a regular lock is ~10%%. +item.pipes_steel.name=Steel Pipes +item.pipes_steel.desc=Uncrafting was omitted due to tax evasion. +item.piston_selenium.name=Combustion Engine Piston +item.piston_set_desh.name=Desh Piston Set +item.piston_set_dura.name=High-Speed Steel Piston Set +item.piston_set_starmetal.name=Starmetal Piston Set +item.piston_set_steel.name=Steel Piston Set +item.plan_c.name=Plan C +item.plan_c.desc=Deadly +item.plant_item.mustardwillow.name=Mustard Willow Leaf +item.plant_item.rope.name=Rope +item.plant_item.tobacco.name=Tobacco +item.plate_advanced_alloy.name=Advanced Alloy Plate +item.plate_aluminium.name=Aluminium Plate +item.plate_armor_ajr.name=Iron-Shod Armor Plating +item.plate_armor_dnt.name=DNT Armor Plating +item.plate_armor_fau.name=Fau Armor Plating +item.plate_armor_hev.name=Reactive Armor Plating +item.plate_armor_lunar.name=Lunar Plating +item.plate_armor_titanium.name=Titanium Armor Plate +item.plate_bismuth.name=Bismuth Compound Plate +item.plate_bismuth.desc=Guys, It's Bismuth's alchemical symbol, I swear. +item.plate_cast.name=Cast %s Plate +item.plate_combine_steel.name=CMB Steel Plate +item.plate_copper.name=Copper Plate +item.plate_dalekanium.name=Angry Metal +item.plate_desh.name=Desh Compound Plate +item.plate_dineutronium.name=Dineutronium Compound Plate +item.plate_euphemium.name=Euphemium Compound Plate +item.plate_fuel_mox.name=MOX Plate Fuel +item.plate_fuel_pu238be.name=Pu238Be Plate Fuel +item.plate_fuel_pu239.name=HEP-239 Plate Fuel +item.plate_fuel_ra226be.name=Ra226Be Plate Fuel +item.plate_fuel_sa326.name=HES-326 Plate Fuel +item.plate_fuel_u233.name=HEU-233 Plate Fuel +item.plate_fuel_u235.name=HEU-235 Plate Fuel +item.plate_gold.name=Gold Plate +item.plate_iron.name=Iron Plate +item.plate_kevlar.name=Kevlar-Ceramic Compound +item.plate_lead.name=Lead Plate +item.plate_mixed.name=Mixed Plate +item.plate_paa.name=PaA Alloy Plate +item.plate_polymer.name=Insulator +item.plate_saturnite.name=Saturnite Plate +item.plate_schrabidium.name=Schrabidium Plate +item.plate_steel.name=Steel Plate +item.plate_titanium.name=Titanium Plate +item.polaroid.name=The Polaroid +item.pollution_detector.name=Pollution Detector +item.powder_actinium.name=Actinium Powder +item.powder_actinium_tiny.name=Tiny Pile of Actinium Powder +item.powder_advanced_alloy.name=Advanced Alloy Powder +item.powder_aluminium.name=Aluminium Powder +item.powder_asbestos.name=Asbestos Powder +item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r +item.powder_astatine.name=Astatine Powder +item.powder_at209.name=Astatine-209 Powder +item.powder_au198.name=Gold-198 Powder +item.powder_australium.name=Australium Powder +item.powder_bakelite.name=Bakelite Powder +item.powder_balefire.name=Thermonuclear Ashes +item.powder_beryllium.name=Beryllium Powder +item.powder_bismuth.name=Bismuth Powder +item.powder_borax.name=Borax +item.powder_boron.name=Boron Powder +item.powder_boron_tiny.name=Tiny Pile of Boron Powder +item.powder_bromine.name=Bromine Powder +item.powder_cadmium.name=Cadmium Powder +item.powder_caesium.name=Caesium Powder +item.powder_calcium.name=Calcium Powder +item.powder_cerium.name=Cerium Powder +item.powder_cerium_tiny.name=Tiny Pile of Cerium Powder +item.powder_chlorocalcite.name=Chlorocalcite +item.powder_chlorophyte.name=Chlorophyte Powder +item.powder_cloud.name=Cloud Residue +item.powder_co60.name=Cobalt-60 Powder +item.powder_coal.name=Coal Powder +item.powder_coal_tiny.name=Tiny Pile of Coal Powder +item.powder_cobalt.name=Cobalt Powder +item.powder_cobalt_tiny.name=Tiny Pile of Cobalt Powder +item.powder_coltan.name=Purified Tantalite +item.powder_coltan_ore.name=Crushed Coltan +item.powder_combine_steel.name=CMB Steel Powder +item.powder_copper.name=Copper Powder +item.powder_cs137.name=Caesium-137 Powder +item.powder_cs137_tiny.name=Tiny Pile of Caesium-137 Powder +item.powder_daffergon.name=Daffergon Powder +item.powder_desh.name=Desh Powder +item.powder_desh_mix.name=Desh Blend +item.powder_desh_ready.name=DeshReady™ Blend +item.powder_diamond.name=Diamond Powder +item.powder_dineutronium.name=Dineutronium Powder +item.powder_dura_steel.name=High-Speed Steel Powder +item.powder_emerald.name=Emerald Powder +item.powder_euphemium.name=Euphemium Powder +item.powder_euphemium.desc=Pulverized pink.$Tastes like strawberries. +item.powder_fertilizer.name=Industrial Fertilizer +item.powder_fire.name=Red Phosphorus +item.powder_fire.desc=Used in multi purpose bombs:$Incendiary bombs are fun! +item.powder_flux.name=Flux +item.powder_gold.name=Gold Powder +item.powder_i131.name=Iodine-131 Powder +item.powder_i131_tiny.name=Tiny Pile of Iodine-131 Powder +item.powder_ice.name=Cryo Powder +item.powder_impure_osmiridium.name=Impure Osmiridium Powder +item.powder_iodine.name=Iodine Powder +item.powder_iron.name=Iron Powder +item.powder_lanthanium.name=Lanthanium Powder +item.powder_lanthanium_tiny.name=Tiny Pile of Lanthanium Powder +item.powder_lapis.name=Lapis Lazuli Powder +item.powder_lead.name=Lead Powder +item.powder_lignite.name=Lignite Powder +item.powder_lithium.name=Lithium Powder +item.powder_lithium_tiny.name=Tiny Pile of Lithium Powder +item.powder_magic.name=Pulverized Enchantment +item.powder_magnetized_tungsten.name=Magnetized Tungsten Powder +item.powder_meteorite.name=Meteorite Powder +item.powder_meteorite_tiny.name=Tiny Pile of Meteorite Powder +item.powder_neodymium.name=Neodymium Powder +item.powder_neodymium_tiny.name=Tiny Pile of Neodymium Powder +item.powder_neptunium.name=Neptunium Powder +item.powder_niobium.name=Niobium Powder +item.powder_niobium_tiny.name=Tiny Pile of Niobium Powder +item.powder_nitan_mix.name=Nitanium Blend +item.powder_paleogenite.name=Paleogenite Powder +item.powder_paleogenite_tiny.name=Tiny Pile of Paleogenite Powder +item.powder_plutonium.name=Plutonium Powder +item.powder_poison.name=Poison Powder +item.powder_poison.desc=Used in multi purpose bombs:$Warning: Poisonous! +item.powder_polonium.name=Polonium-210 Powder +item.powder_polymer.name=Polymer Powder +item.powder_power.name=Energy Powder +item.powder_quartz.name=Quartz Powder +item.powder_ra226.name=Radium-226 Powder +item.powder_red_copper.name=Red Copper Powder +item.powder_reiium.name=Reiium Powder +item.powder_sawdust.name=Sawdust +item.powder_schrabidate.name=Ferric Schrabidate Powder +item.powder_schrabidium.name=Schrabidium Powder +item.powder_semtex_mix.name=Semtex Blend +item.powder_spark_mix.name=Spark Blend +item.powder_sr90.name=Strontium-90 Powder +item.powder_sr90_tiny.name=Tiny Pile of Strontium-90 Powder +item.powder_steel.name=Steel Powder +item.powder_steel_tiny.name=Tiny Pile of Steel Powder +item.powder_strontium.name=Strontium Powder +item.powder_tantalium.name=Tantalium Powder +item.powder_tantalium.desc='Tantalum' +item.powder_tantalium.desc.P11=AKA Tantalum. +item.powder_tcalloy.name=Technetium Steel Powder +item.powder_tektite.name=Tektite Powder +item.powder_tennessine.name=Tennessine Powder +item.powder_thermite.name=Thermite +item.powder_thorium.name=Thorium Powder +item.powder_titanium.name=Titanium Powder +item.powder_tungsten.name=Tungsten Powder +item.powder_unobtainium.name=Unobtainium Powder +item.powder_uranium.name=Uranium Powder +item.powder_verticium.name=Verticium Powder +item.powder_weidanium.name=Weidanium Powder +item.powder_xe135.name=Xenon-135 Powder +item.powder_xe135_tiny.name=Tiny Pile of Xenon-135 Powder +item.powder_yellowcake.name=Yellowcake +item.powder_zirconium.name=Zirconium Powder +item.power_net_tool.name=Cable Network Analysis Tool +item.primer_357.name=.357 Magnum Primer (x24) +item.primer_44.name=.44 Magnum Primer (x24) +item.primer_50.name=Large Caliber Primer (x12) +item.primer_9.name=Small Caliber Primer (x32) +item.primer_buckshot.name=Buckshot Primer (x12) +item.protection_charm.name=Charm of Protection +item.prototype_kit.name=Prototype Kit +item.pudding.name=Pudding +item.quartz_plutonium.name=Plutonic Quartz +item.radaway.name=RadAway +item.radaway_flush.name=Elite RadAway +item.radaway_strong.name=Strong RadAway +item.radx.name=Rad-X +item.radx.desc=Increases radiation resistance by 0.2 (37%%) for 3 minutes +item.rag.name=Cloth +item.rag_damp.name=Damp Cloth +item.rag_piss.name=Piss-Soaked Rag +item.rbmk_fuel_balefire.name=Balefire RBMK Fuel Rod +item.rbmk_fuel_balefire_gold.name=Flashgold RBMK Fuel Rod +item.rbmk_fuel_drx.name=§cDigamma RBMK Fuel Rod§r +item.rbmk_fuel_empty.name=Empty RBMK Fuel Rod +item.rbmk_fuel_flashlead.name=Flashlead RBMK Fuel Rod +item.rbmk_fuel_hea241.name=HEA-241 RBMK Fuel Rod +item.rbmk_fuel_hea242.name=HEA-242 RBMK Fuel Rod +item.rbmk_fuel_heaus.name=HEAus RBMK Fuel Rod +item.rbmk_fuel_hen.name=HEN RBMK Fuel Rod +item.rbmk_fuel_hes.name=HES RBMK Fuel Rod +item.rbmk_fuel_hep.name=HEP-239 RBMK Fuel Rod +item.rbmk_fuel_hep241.name=HEP-241 RBMK Fuel Rod +item.rbmk_fuel_heu233.name=HEU-233 RBMK Fuel Rod +item.rbmk_fuel_heu235.name=HEU-235 RBMK Fuel Rod +item.rbmk_fuel_lea.name=LEA RBMK Fuel Rod +item.rbmk_fuel_leaus.name=LEAus RBMK Fuel Rod +item.rbmk_fuel_lep.name=LEP-239 RBMK Fuel Rod +item.rbmk_fuel_les.name=LES RBMK Fuel Rod +item.rbmk_fuel_mea.name=MEA RBMK Fuel Rod +item.rbmk_fuel_men.name=MEN RBMK Fuel Rod +item.rbmk_fuel_mep.name=MEP-239 RBMK Fuel Rod +item.rbmk_fuel_mes.name=MES RBMK Fuel Rod +item.rbmk_fuel_meu.name=MEU RBMK Fuel Rod +item.rbmk_fuel_mox.name=MOX RBMK Fuel Rod +item.rbmk_fuel_po210be.name=Po210Be RBMK Neutron Source +item.rbmk_fuel_pu238be.name=Pu238Be RBMK Neutron Source +item.rbmk_fuel_ra226be.name=Ra226Be RBMK Neutron Source +item.rbmk_fuel_thmeu.name=ThMEU RBMK Fuel Rod +item.rbmk_fuel_ueu.name=NU RBMK Fuel Rod +item.rbmk_fuel_zfb_am_mix.name=Fuel Grade Americium RBMK ZFB Rod +item.rbmk_fuel_zfb_bismuth.name=Bismuth RBMK ZFB Rod +item.rbmk_fuel_zfb_pu241.name=Pu-241 RBMK ZFB Rod +item.rbmk_lid.name=RBMK Cover Panel +item.rbmk_lid_glass.name=RBMK Glass Cover Panel +item.rbmk_pellet_balefire.name=Balefire Fuel Pellet +item.rbmk_pellet_balefire_gold.name=Flashgold Fuel Pellet +item.rbmk_pellet_drx.name=§cDigamma Fuel Pellet§r +item.rbmk_pellet_flashlead.name=Flashlead Fuel Pellet +item.rbmk_pellet_hea241.name=HEA-241 Fuel Pellet +item.rbmk_pellet_hea242.name=HEA-242 Fuel Pellet +item.rbmk_pellet_heaus.name=HEAus Fuel Pellet +item.rbmk_pellet_hen.name=HEN Fuel Pellet +item.rbmk_pellet_hep239.name=HEP-239 Fuel Pellet +item.rbmk_pellet_hep241.name=HEP-241 Fuel Pellet +item.rbmk_pellet_heu233.name=HEU-233 Fuel Pellet +item.rbmk_pellet_heu235.name=HEU-235 Fuel Pellet +item.rbmk_pellet_hes.name=HES Fuel Pellet +item.rbmk_pellet_lea.name=LEA Fuel Pellet +item.rbmk_pellet_leaus.name=LEAus Fuel Pellet +item.rbmk_pellet_lep.name=LEP Fuel Pellet +item.rbmk_pellet_les.name=LES Fuel Pellet +item.rbmk_pellet_mea.name=MEA Fuel Pellet +item.rbmk_pellet_men.name=MEN Fuel Pellet +item.rbmk_pellet_mep.name=MEP Fuel Pellet +item.rbmk_pellet_mes.name=MES Fuel Pellet +item.rbmk_pellet_meu.name=MEU Fuel Pellet +item.rbmk_pellet_mox.name=MOX Fuel Pellet +item.rbmk_pellet_po210be.name=Po210Be Neutron Source Pellet +item.rbmk_pellet_pu238be.name=Pu238Be Neutron Source Pellet +item.rbmk_pellet_ra226be.name=Ra226Be Neutron Source Pellet +item.rbmk_pellet_thmeu.name=ThMEU Fuel Pellet +item.rbmk_pellet_ueu.name=NU Fuel Pellet +item.rbmk_pellet_zfb_am_mix.name=Fuel Grade Americium ZFB Pellet +item.rbmk_pellet_zfb_bismuth.name=Bismuth ZFB Pellet +item.rbmk_pellet_zfb_pu241.name=Pu-241 ZFB Pellet +item.rbmk_tool.name=RBMK Console Linking Device +item.rbmk_tool.desc=Sneak and right-click RBMK to save the position,$sneak and right-click console to link! +item.rbmk_tool.linked=Position set! +item.rbmk_tool.set=RBMK linked! +item.reacher.name=Tungsten Reacher +item.reactor_core.name=Breeding Reactor Core +item.reactor_sensor.name=Reactor Remote Sensor +item.record.glass.desc=? ? ? +item.record.lc.desc=Valve - Diabolic Adrenaline Guitar/Lambda Core +item.record.ss.desc=Valve - Sector Sweep +item.record.vc.desc=Valve - Vortal Combat +item.redcoil_capacitor.name=Redcoil Capacitor +item.redstone_depleted.name=Desaturated Redstone Dust +item.redstone_sword.name=Redstone Sword +item.reer_graar.name=The Reer Graar +item.remote.name=Broken Remote +item.ring_pull.name=Ring Pull +item.ring_starmetal.name=§9Starmetal Ring§r +item.robes_boots.name=Field Boots +item.robes_helmet.name=Casual Hoodie +item.robes_legs.name=Casual Pants +item.robes_plate.name=Casual Sweater +item.rocket_fuel.name=Solid Fuel (Rocket Propellant) +item.rod_empty.name=Empty Rod +item.rod.lithium.name=Lithium Rod +item.rod.tritium.name=Tritium Rod +item.rod.co.name=Cobalt Rod +item.rod.co60.name=Cobalt-60 Rod +item.rod.ra226.name=Radium-226 Rod +item.rod.ac227.name=Actinium-227 Rod +item.rod.th232.name=Thorium-232 Rod +item.rod.thf.name=Thorium Fuel Rod +item.rod.u235.name=Uranium-235 Rod +item.rod.np237.name=Neptunium-237 Rod +item.rod.u238.name=Uranium-238 Rod +item.rod.pu238.name=Plutonium-238 Rod +item.rod.pu239.name=Plutonium-239 Rod +item.rod.rgp.name=Reactor-Grade Plutonium Rod +item.rod.waste.name=Nuclear Waste Rod +item.rod.lead.name=Lead Rod +item.rod.uranium.name=Uranium Rod +item.rod_dual_empty.name=Empty Dual Rod +item.rod_dual.lithium.name=Lithium Dual Rod +item.rod_dual.tritium.name=Tritium Dual Rod +item.rod_dual.co.name=Cobalt Dual Rod +item.rod_dual.co60.name=Cobalt-60 Dual Rod +item.rod_dual.ra226.name=Radium-226 Dual Rod +item.rod_dual.ac227.name=Actinium-227 Dual Rod +item.rod_dual.th232.name=Thorium-232 Dual Rod +item.rod_dual.thf.name=Thorium Fuel Dual Rod +item.rod_dual.u235.name=Uranium-235 Dual Rod +item.rod_dual.np237.name=Neptunium-237 Dual Rod +item.rod_dual.u238.name=Uranium-238 Dual Rod +item.rod_dual.pu238.name=Plutonium-238 Dual Rod +item.rod_dual.pu239.name=Plutonium-239 Dual Rod +item.rod_dual.rgp.name=Reactor-Grade Plutonium Dual Rod +item.rod_dual.waste.name=Nuclear Waste Dual Rod +item.rod_dual.lead.name=Lead Dual Rod +item.rod_dual.uranium.name=Uranium Dual Rod +item.rod_quad_empty.name=Empty Quad Rod +item.rod_quad.lithium.name=Lithium Quad Rod +item.rod_quad.tritium.name=Tritium Quad Rod +item.rod_quad.co.name=Cobalt Quad Rod +item.rod_quad.co60.name=Cobalt-60 Quad Rod +item.rod_quad.ra226.name=Radium-226 Quad Rod +item.rod_quad.ac227.name=Actinium-227 Quad Rod +item.rod_quad.th232.name=Thorium-232 Quad Rod +item.rod_quad.thf.name=Thorium Fuel Quad Rod +item.rod_quad.u235.name=Uranium-235 Quad Rod +item.rod_quad.np237.name=Neptunium-237 Quad Rod +item.rod_quad.u238.name=Uranium-238 Quad Rod +item.rod_quad.pu238.name=Plutonium-238 Quad Rod +item.rod_quad.pu239.name=Plutonium-239 Quad Rod +item.rod_quad.rgp.name=Reactor-Grade Plutonium Quad Rod +item.rod_quad.waste.name=Nuclear Waste Quad Rod +item.rod_quad.lead.name=Lead Quad Rod +item.rod_quad.uranium.name=Uranium Quad Rod +item.rod_australium.name=Australium Rod +item.rod_balefire.name=Balefire Rod +item.rod_balefire_blazing.name=Blazing Balefire Rod +item.rod_coolant.name=Coolant Cell +item.rod_daffergon.name=Daffergon Rod +item.rod_dual_balefire.name=Balefire Dual Rod +item.rod_dual_balefire_blazing.name=Blazing Balefire Dual Rod +item.rod_dual_coolant.name=Dual Coolant Cell +item.rod_dual_lead.name=Lead Dual Rod +item.rod_dual_lithium.name=Dual Lithium Rod +item.rod_dual_mox_fuel.name=MOX Dual Fuel Rod +item.rod_dual_mox_fuel_depleted.name=Depleted MOX Dual Fuel Rod +item.rod_dual_neptunium.name=Neptunium Dual Rod +item.rod_dual_plutonium.name=Plutonium Dual Rod +item.rod_dual_plutonium_fuel.name=Plutonium Dual Fuel Rod +item.rod_dual_plutonium_fuel_depleted.name=Depleted Plutonium Dual Fuel Rod +item.rod_dual_polonium.name=Polonium-210 Dual Rod +item.rod_dual_pu238.name=Plutonium-238 Dual Rod +item.rod_dual_pu239.name=Plutonium-239 Dual Rod +item.rod_dual_pu240.name=Plutonium-240 Dual Rod +item.rod_dual_schrabidium.name=Schrabidium-326 Dual Rod +item.rod_dual_schrabidium_fuel.name=Schrabidium Dual Fuel Rod +item.rod_dual_schrabidium_fuel_depleted.name=Depleted Schrabidium Dual Fuel Rod +item.rod_dual_solinium.name=Schrabidium-327 Dual Rod +item.rod_dual_th232.name=Thorium-232 Dual Rod +item.rod_dual_thorium_fuel.name=Thorium Dual Fuel Rod +item.rod_dual_thorium_fuel_depleted.name=Depleted Thorium Dual Fuel Rod +item.rod_dual_tritium.name=Dual Tritium Cell +item.rod_dual_u233.name=Uranium-233 Dual Rod +item.rod_dual_u235.name=Uranium-235 Dual Rod +item.rod_dual_u238.name=Uranium-238 Dual Rod +item.rod_dual_uranium.name=Uranium Dual Rod +item.rod_dual_uranium_fuel.name=Uranium Dual Fuel Rod +item.rod_dual_uranium_fuel_depleted.name=Depleted Uranium Dual Fuel Rod +item.rod_dual_waste.name=Nuclear Waste Dual Rod +item.rod_dual_water.name=Dual Water Cell +item.rod_euphemium.name=Euphemium Rod +item.rod_lead.name=Lead Rod +item.rod_lithium.name=Lithium Rod +item.rod_mox_fuel.name=MOX Fuel Rod +item.rod_mox_fuel_depleted.name=Depleted MOX Fuel Rod +item.rod_neptunium.name=Neptunium Rod +item.rod_of_discord.name=Rod of Discord +item.rod_plutonium.name=Plutonium Rod +item.rod_plutonium_fuel.name=Plutonium Fuel Rod +item.rod_plutonium_fuel_depleted.name=Depleted Plutonium Fuel Rod +item.rod_polonium.name=Polonium-210 Rod +item.rod_pu238.name=Plutonium-238 Rod +item.rod_pu239.name=Plutonium-239 Rod +item.rod_pu240.name=Plutonium-240 Rod +item.rod_quad_balefire.name=Balefire Quad Rod +item.rod_quad_balefire_blazing.name=Blazing Balefire Quad Rod +item.rod_quad_coolant.name=Quad Coolant Cell +item.rod_quad_euphemium.name=Burned Out Quad Schrabidium Rod +item.rod_quad_lead.name=Lead Quad Rod +item.rod_quad_lithium.name=Quad Lithium Rod +item.rod_quad_mox_fuel.name=MOX Quad Fuel Rod +item.rod_quad_mox_fuel_depleted.name=Depleted MOX Quad Fuel Rod +item.rod_quad_neptunium.name=Neptunium Quad Rod +item.rod_quad_plutonium.name=Plutonium Quad Rod +item.rod_quad_plutonium_fuel.name=Plutonium Quad Fuel Rod +item.rod_quad_plutonium_fuel_depleted.name=Depleted Plutonium Quad Fuel Rod +item.rod_quad_polonium.name=Polonium-210 Quad Rod +item.rod_quad_pu238.name=Plutonium-238 Quad Rod +item.rod_quad_pu239.name=Plutonium-239 Quad Rod +item.rod_quad_pu240.name=Plutonium-240 Quad Rod +item.rod_quad_schrabidium.name=Schrabidium-326 Quad Rod +item.rod_quad_schrabidium_fuel.name=Schrabidium Quad Fuel Rod +item.rod_quad_schrabidium_fuel_depleted.name=Depleted Schrabidium Quad Fuel Rod +item.rod_quad_solinium.name=Schrabidium-327 Quad Rod +item.rod_quad_th232.name=Thorium-232 Quad Rod +item.rod_quad_thorium_fuel.name=Thorium Quad Fuel Rod +item.rod_quad_thorium_fuel_depleted.name=Depleted Thorium Quad Fuel Rod +item.rod_quad_tritium.name=Quad Tritium Cell +item.rod_quad_u233.name=Uranium-233 Quad Rod +item.rod_quad_u235.name=Uranium-235 Quad Rod +item.rod_quad_u238.name=Uranium-238 Quad Rod +item.rod_quad_uranium.name=Uranium Quad Rod +item.rod_quad_uranium_fuel.name=Uranium Quad Fuel Rod +item.rod_quad_uranium_fuel_depleted.name=Depleted Uranium Quad Fuel Rod +item.rod_quad_waste.name=Nuclear Waste Quad Rod +item.rod_quad_water.name=Quad Water Cell +item.rod_reiium.name=Reiium Rod +item.rod_schrabidium.name=Schrabidium-326 Rod +item.rod_schrabidium_fuel.name=Schrabidium Fuel Rod +item.rod_schrabidium_fuel_depleted.name=Depleted Schrabidium Fuel Rod +item.rod_solinium.name=Schrabidium-327 Rod +item.rod_th232.name=Thorium-232 Rod +item.rod_thorium_fuel.name=Thorium Fuel Rod +item.rod_thorium_fuel_depleted.name=Depleted Thorium Fuel Rod +item.rod_tritium.name=Tritium Cell +item.rod_u233.name=Uranium-233 Rod +item.rod_u235.name=Uranium-235 Rod +item.rod_u238.name=Uranium-238 Rod +item.rod_unobtainium.name=Unobtainium Rod +item.rod_uranium.name=Uranium Rod +item.rod_uranium_fuel.name=Uranium Fuel Rod +item.rod_uranium_fuel_depleted.name=Depleted Uranium Fuel Rod +item.rod_verticium.name=Verticium Rod +item.rod_waste.name=Nuclear Waste Rod +item.rod_water.name=Water Cell +item.rod_weidanium.name=Weidanium Rod +item.rod_zirnox_empty.name=Empty ZIRNOX Rod +item.rod_zirnox_natural_uranium_fuel.name=ZIRNOX Natural Uranium Fuel Rod +item.rod_zirnox_uranium_fuel.name=ZIRNOX Uranium Fuel Rod +item.rod_zirnox_th232.name=ZIRNOX Thorium-232 Rod +item.rod_zirnox_thorium_fuel.name=ZIRNOX Thorium Fuel Rod +item.rod_zirnox_mox_fuel.name=ZIRNOX MOX Fuel Rod +item.rod_zirnox_plutonium_fuel.name=ZIRNOX Plutonium Fuel Rod +item.rod_zirnox_u233_fuel.name=ZIRNOX Uranium-233 Fuel Rod +item.rod_zirnox_u235_fuel.name=ZIRNOX Uranium-235 Fuel Rod +item.rod_zirnox_les_fuel.name=ZIRNOX LES Fuel Rod +item.rod_zirnox_lithium.name=ZIRNOX Lithium Rod +item.rod_zirnox_tritium.name=ZIRNOX Tritium Rod +item.rod_zirnox_zfb_mox.name=ZIRNOX ZFB MOX Fuel Rod +item.rod_zirnox_natural_uranium_fuel_depleted.name=Depleted ZIRNOX Natural Uranium Fuel Rod +item.rod_zirnox_uranium_fuel_depleted.name= Depleted ZIRNOX Uranium Fuel Rod +item.rod_zirnox_thorium_fuel_depleted.name= Depleted ZIRNOX Thorium Fuel Rod +item.rod_zirnox_mox_fuel_depleted.name=Depleted ZIRNOX MOX Fuel Rod +item.rod_zirnox_plutonium_fuel_depleted.name=Depleted ZIRNOX Plutonium Fuel Rod +item.rod_zirnox_u233_fuel_depleted.name=Depleted ZIRNOX Uranium-233 Fuel Rod +item.rod_zirnox_u235_fuel_depleted.name=Depleted ZIRNOX Uranium-235 Fuel Rod +item.rod_zirnox_les_fuel_depleted.name=Depleted ZIRNOX LES Fuel Rod +item.rod_zirnox_zfb_mox_depleted.name=Depleted ZIRNOX ZFB MOX Fuel Rod +item.rotor_steel.name=Large Steel Rotor +item.rpa_boots.name=Remnants Power Armor Boots +item.rpa_helmet.name=Remnants Power Armor Helmet +item.rpa_legs.name=Remnants Power Armor Leggings +item.rpa_plate.name=Remnants Power Armor Chestplate +item.rtg_unit.name=RTG Unit +item.rubber_gloves.name=Thick Rubber Gloves +item.rune_blank.name=Blank Catalyst Matrix +item.rune_dagaz.name=Balanced Catalyst Matrix +item.rune_hagalaz.name=Rough Catalyst Matrix +item.rune_isa.name=Cool Catalyst Matrix +item.rune_jera.name=Multiplicative Catalyst Matrix +item.rune_thurisaz.name=Additive Catalyst Matrix +item.safety_fuse.name=Safety Fuse +item.sat_base.name=Satellite Base +item.sat_chip.name=Satellite ID-Chip +item.sat_coord.name=Satellite Designator +item.sat_designator.name=Satellite Laser Designator +item.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion +item.sat_gerald.name=Gerald The Construction Android +item.sat_head_laser.name=Death Ray +item.sat_head_mapper.name=High-Gain Optical Camera +item.sat_head_radar.name=Radar Dish +item.sat_head_resonator.name=Xenium Resonator +item.sat_head_scanner.name=M700 Survey Scanner +item.sat_interface.name=Satellite Control Interface +item.sat_laser.name=Orbital Death Ray +item.sat_lunar_miner.name=Lunar Mining Ship +item.sat_mapper.name=Surface Mapping Satellite +item.sat_miner.name=Asteroid Mining Ship +item.sat_radar.name=Radar Survey Satellite +item.sat_resonator.name=Xenium Resonator Satellite +item.sat_scanner.name=Satellite with Depth-Resource Scanning Module +item.sawblade.name=Sawblade +item.schnitzel_vegan.name=Vegan Schnitzel +item.schrabidium_axe.name=Schrabidium Axe +item.schrabidium_boots.name=Schrabidium Boots +item.schrabidium_hammer.name=Schrabidium Hammer +item.schrabidium_helmet.name=Schrabidium Helmet +item.schrabidium_hoe.name=Schrabidium Hoe +item.schrabidium_legs.name=Schrabidium Leggings +item.schrabidium_pickaxe.name=Schrabidium Pickaxe +item.schrabidium_plate.name=Schrabidium Chestplate +item.schrabidium_shovel.name=Schrabidium Shovel +item.schrabidium_sword.name=Schrabidium Sword +item.scrap.name=Scrap +item.scrap_nuclear.name=Radioactive Scraps +item.scrap_oil.name=Oily Scraps +item.scrap_plastic.name=Plastic Scraps +item.scraps.name=Foundry Scraps +item.screwdriver.name=Screwdriver +item.screwdriver.desc=Could be used instead of a fuse... +item.screwdriver_desh.name=Desh Screwdriver +item.scrumpy.name=Bottle of Scrumpy +item.security_boots.name=Security Boots +item.security_helmet.name=Security Helmet +item.security_legs.name=Security Leggings +item.security_plate.name=Security Chestplate +item.seg_10.name=Size 10 Connector +item.seg_15.name=Size 15 Connector +item.seg_20.name=Size 20 Connector +item.serum.name=Serum +item.servo_set.name=Servo Set +item.servo_set_desh.name=Desh Servo Set +item.shackles.name=Shackles +item.shimmer_axe.name=Shimmer Axe +item.shimmer_axe_head.name=Heavy Axe Head +item.shimmer_handle.name=Reinforced Polymer Handle +item.shimmer_head.name=Heavy Hammer Head +item.shimmer_sledge.name=Shimmer Sledge +item.singularity.name=Singularity +item.singularity_counter_resonant.name=Contained Counter-Resonant Singularity +item.singularity_micro.name=Micro Singularity +item.singularity_spark.name=Spark Singularity +item.singularity_super_heated.name=Superheated Resonating Singularity +item.siox.name=SiOX Cancer Medication +item.siox.desc=Reverses mesothelioma with the power of Asbestos! +item.siren_track.name=Siren Track +item.sliding_blast_door_skin.0.name=Sliding Blast Door Skin: Default +item.sliding_blast_door_skin.1.name=Sliding Blast Door Skin: Variant 1 +item.sliding_blast_door_skin.2.name=Sliding Blast Door Skin: Variant 2 +item.smashing_hammer.name=Smashing Hammer +item.solid_fuel.name=Solid Fuel +item.solid_fuel_bf.name=Solid Fuel (Balefire) +item.solid_fuel_presto.name=Presto Log +item.solid_fuel_presto_bf.name=Presto Log (Balefire) +item.solid_fuel_presto_triplet.name=Boosted Presto Logs +item.solid_fuel_presto_triplet_bf.name=Boosted Presto Logs (Balefire) +item.solinium_core.name=Semi-Stable Solinium Core +item.solinium_igniter.name=SOL Pulse Igniter +item.solinium_kit.name=Solinium Kit +item.solinium_propellant.name=SOL Compression Charge +item.sopsign.name=Sop Sign Battle Axe +item.spawn_duck.name=Golden Egg +item.spawn_ufo.name=Martian Invasion Ship +item.spawn_worm.name=Balls-O-Tron Prime +item.sphere_steel.name=Steel Sphere +item.spider_milk.name=Bottle of Spider Milk +item.spongebob_macaroni.name=Spongebob Macaroni +item.stamp_357.name=.357 Magnum Stamp +item.stamp_44.name=.44 Magnum Stamp +item.stamp_50.name=Large Caliber Stamp +item.stamp_9.name=Small Caliber Stamp +item.stamp_desh_circuit.name=Circuit Stamp (Desh) +item.stamp_desh_flat.name=Flat Stamp (Desh) +item.stamp_desh_plate.name=Plate Stamp (Desh) +item.stamp_desh_wire.name=Wire Stamp (Desh) +item.stamp_desh_357.name=.357 Magnum Stamp (Desh) +item.stamp_desh_44.name=.44 Magnum Stamp (Desh) +item.stamp_desh_50.name=Large Caliber Stamp (Desh) +item.stamp_desh_9.name=Small Caliber Stamp (Desh) +item.stamp_iron_circuit.name=Circuit Stamp (Iron) +item.stamp_iron_flat.name=Flat Stamp (Iron) +item.stamp_iron_plate.name=Plate Stamp (Iron) +item.stamp_iron_wire.name=Wire Stamp (Iron) +item.stamp_obsidian_circuit.name=Circuit Stamp (Obsidian) +item.stamp_obsidian_flat.name=Flat Stamp (Obsidian) +item.stamp_obsidian_plate.name=Plate Stamp (Obsidian) +item.stamp_obsidian_wire.name=Wire Stamp (Obsidian) +item.stamp_steel_circuit.name=Circuit Stamp (Steel) +item.stamp_steel_flat.name=Flat Stamp (Steel) +item.stamp_steel_plate.name=Plate Stamp (Steel) +item.stamp_steel_wire.name=Wire Stamp (Steel) +item.stamp_stone_circuit.name=Circuit Stamp (Stone) +item.stamp_stone_flat.name=Flat Stamp (Stone) +item.stamp_stone_plate.name=Plate Stamp (Stone) +item.stamp_stone_wire.name=Wire Stamp (Stone) +item.stamp_titanium_circuit.name=Circuit Stamp (Titanium) +item.stamp_titanium_flat.name=Flat Stamp (Titanium) +item.stamp_titanium_plate.name=Plate Stamp (Titanium) +item.stamp_titanium_wire.name=Wire Stamp (Titanium) +item.starmetal_axe.name=Starmetal Axe +item.starmetal_boots.name=Starmetal Boots +item.starmetal_helmet.name=Starmetal Helmet +item.starmetal_hoe.name=Starmetal Hoe +item.starmetal_legs.name=Starmetal Leggings +item.starmetal_pickaxe.name=Starmetal Pickaxe +item.starmetal_plate.name=Starmetal Chestplate +item.starmetal_shovel.name=Starmetal Shovel +item.starmetal_sword.name=Starmetal Sword +item.static_sandwich.name=Sandwich Garnished with TV Static +item.stealth_boy.name=Stealth Device +item.steamsuit_boots.name=Steam Suit Boots +item.steamsuit_helmet.name=Steam Suit Respirator Helmet +item.steamsuit_legs.name=Steam Suit Leggings +item.steamsuit_plate.name=Steam Suit Chestplate +item.steel_axe.name=Steel Axe +item.steel_boots.name=Steel Boots +item.steel_helmet.name=Steel Helmet +item.steel_hoe.name=Steel Hoe +item.steel_legs.name=Steel Leggings +item.steel_pickaxe.name=Steel Pickaxe +item.steel_plate.name=Steel Chestplate +item.steel_shovel.name=Steel Shovel +item.steel_sword.name=Steel Sword +item.stick_c4.name=Stick of C-4 +item.stick_dynamite.name=Stick of Dynamite +item.stick_dynamite_fishing.name=Stick of Fishing Dynamite +item.stick_semtex.name=Stick of Semtex +item.stick_tnt.name=Stick of TNT +item.stopsign.name=Stop Sign Battle Axe +item.sulfur.name=Sulfur +item.survey_scanner.name=Survey Scanner +item.syringe_antidote.name=Antidote +item.syringe_awesome.name=AWESOME +item.syringe_empty.name=Empty Syringe +item.syringe_metal_empty.name=Metal Syringe +item.syringe_metal_medx.name=Med-X +item.syringe_metal_psycho.name=Psycho +item.syringe_metal_stimpak.name=Stimpak +item.syringe_metal_super.name=Super Stimpak +item.syringe_mkunicorn.name=MKUNICORN +item.syringe_poison.name=Poisonous Injection +item.syringe_taint.name=Watery Taint Injection +item.t45_boots.name=T45 Power Armor Boots +item.t45_helmet.name=T45 Power Armor Helmet +item.t45_kit.name=T45 Power Armor Kit +item.t45_legs.name=T45 Power Armor Leggings +item.t45_plate.name=T45 Power Armor Chestplate +item.tank_steel.name=Steel Tank +item.tank_waste_0.name=Mud Container +item.tank_waste_1.name=Mud Container +item.tank_waste_2.name=Mud Container +item.tank_waste_3.name=Mud Container +item.tank_waste_4.name=Mud Container +item.tank_waste_5.name=Mud Container +item.tank_waste_6.name=Mud Container +item.tank_waste_7.name=Mud Container +item.tank_waste_8.name=Mud Container +item.telepad.name=Telepad +item.tem_flakes.name=Tem Flakes +item.template_folder.name=Machine Template Folder +item.template_folder.desc=Machine Templates: Paper + Dye$Fluid IDs: Iron Plate + Dye$Press Stamps: Flat Stamp$Siren Tracks: Insulator + Steel Plate +item.test_nuke_igniter.name=Igniter +item.test_nuke_propellant.name=Propellant +item.test_nuke_tier1_bullet.name=U235 Projectile (Tier 1) +item.test_nuke_tier1_shielding.name=Neutron Reflector (Tier 1) +item.test_nuke_tier1_target.name=Subcritical U235 Target (Tier 1) +item.test_nuke_tier2_bullet.name=MOX Projectile (Tier 2) +item.test_nuke_tier2_shielding.name=Neutron Reflector (Tier 2) +item.test_nuke_tier2_target.name=Subcritical MOX Target (Tier 2) +item.thermo_element.name=Thermoelectric Element +item.thermo_unit_empty.name=Thermic Distribution Unit +item.thermo_unit_endo.name=Coldness Distribution Unit +item.thermo_unit_exo.name=Heat Distribution Unit +item.thruster_large.name=Large Thruster +item.thruster_medium.name=Medium Thruster +item.thruster_nuclear.name=LV-N Nuclear Rocket Engine +item.thruster_small.name=Small Thruster +item.titanium_axe.name=Titanium Axe +item.titanium_boots.name=Titanium Boots +item.titanium_filter.name=Titanium Filter +item.titanium_helmet.name=Titanium Helmet +item.titanium_hoe.name=Titanium Hoe +item.titanium_legs.name=Titanium Leggings +item.titanium_pickaxe.name=Titanium Pickaxe +item.titanium_plate.name=Titanium Chestplate +item.titanium_shovel.name=Titanium Shovel +item.titanium_sword.name=Titanium Sword +item.toothpicks.name=Toothpicks +item.train.cargo_tram.name=Electric Flat Bed Tram +item.trinitite.name=Trinitite +item.tritium_deuterium_cake.name=Tritium-Deuterium-Cake +item.tritium_deuterium_cake.desc=Not actual cake, but great$universal fusion fuel! +item.tsar_core.name=Tsar Bomba Core +item.tsar_kit.name=Tsar Bomba Kit +item.turbine_titanium.name=Titanium Steam Turbine +item.turbine_tungsten.name=Reinforced Turbofan Blades +item.turret_biometry.name=Turret Telemetry Card +item.turret_cheapo_ammo.name=6x24 Cheapo Turret Ammunition +item.turret_chip.name=Turret AI-Chip +item.turret_control.name=Turret Controller +item.turret_cwis_ammo.name=CIWS 20mm Ammo Drum +item.turret_flamer_ammo.name=Flamer Turret Fuel Tanks +item.turret_heavy_ammo.name=Heavy MG Turret Ammunition +item.turret_light_ammo.name=Light MG Turret Ammo Box +item.turret_rocket_ammo.name=Rocket Turret 2x4 Ammunition +item.turret_spitfire_ammo.name=AA-Shell +item.turret_tau_ammo.name=Tau Turret Uranium Ammo +item.twinkie.name=Twinkie +item.ullapool_caber.name=Ullapool Caber +item.undefined.name=Undefined +item.upgrade_5g.name=5G Radiation Emitter Upgrade +item.upgrade_afterburn_1.name=Afterburner Upgrade Mk.I +item.upgrade_afterburn_2.name=Afterburner Upgrade Mk.II +item.upgrade_afterburn_3.name=Afterburner Upgrade Mk.III +item.upgrade_centrifuge.name=Centrifuge Upgrade +item.upgrade_crystallizer.name=Crystallizer Upgrade +item.upgrade_effect_1.name=Effectiveness Upgrade Mk.I +item.upgrade_effect_2.name=Effectiveness Upgrade Mk.II +item.upgrade_effect_3.name=Effectiveness Upgrade Mk.III +item.upgrade_ejector_1.name=Ejection Speed Upgrade Mk.I +item.upgrade_ejector_2.name=Ejection Speed Upgrade Mk.II +item.upgrade_ejector_3.name=Ejection Speed Upgrade Mk.III +item.upgrade_fortune_1.name=Fortune Upgrade Mk.I +item.upgrade_fortune_2.name=Fortune Upgrade Mk.II +item.upgrade_fortune_3.name=Fortune Upgrade Mk.III +item.upgrade_gc_speed.name=Gas Centrifuge Overclocking Upgrade +item.upgrade_health.name=Emitter Health Upgrade +item.upgrade_nullifier.name=Scrap Destroyer Upgrade +item.upgrade_overdrive_1.name=Overdrive Upgrade Mk.I +item.upgrade_overdrive_2.name=Overdrive Upgrade Mk.II +item.upgrade_overdrive_3.name=Overdrive Upgrade Mk.III +item.upgrade_power_1.name=Power Saving Upgrade Mk.I +item.upgrade_power_2.name=Power Saving Upgrade Mk.II +item.upgrade_power_3.name=Power Saving Upgrade Mk.III +item.upgrade_radius.name=Emitter Radius Upgrade +item.upgrade_screm.name=Screaming Scientist Upgrade +item.upgrade_shredder.name=Shredder Upgrade +item.upgrade_smelter.name=Smelter Upgrade +item.upgrade_speed_1.name=Speed Upgrade Mk.I +item.upgrade_speed_2.name=Speed Upgrade Mk.II +item.upgrade_speed_3.name=Speed Upgrade Mk.III +item.upgrade_stack_1.name=Stack Ejection Upgrade Mk.I +item.upgrade_stack_2.name=Stack Ejection Upgrade Mk.II +item.upgrade_stack_3.name=Stack Ejection Upgrade Mk.III +item.upgrade_template.name=Machine Upgrade Template +item.v1.name=V1 +item.volcanic_pickaxe.name=Molten Pickaxe +item.wand_d.name=Debug Wand +item.wand_k.name=Construction Wand +item.wand_s.name=Structure Wand +item.warhead_buster_large.name=Large Bunker Buster Warhead +item.warhead_buster_medium.name=Medium Bunker Buster Warhead +item.warhead_buster_small.name=Small Bunker Buster Warhead +item.warhead_cluster_large.name=Large Cluster Warhead +item.warhead_cluster_medium.name=Medium Cluster Warhead +item.warhead_cluster_small.name=Small Cluster Warhead +item.warhead_generic_large.name=Large Warhead +item.warhead_generic_medium.name=Medium Warhead +item.warhead_generic_small.name=Small Warhead +item.warhead_incendiary_large.name=Large Incendiary Warhead +item.warhead_incendiary_medium.name=Medium Incendiary Warhead +item.warhead_incendiary_small.name=Small Incendiary Warhead +item.warhead_mirv.name=Thermonuclear Warhead +item.warhead_mirvlet.name=MIRV +item.warhead_nuclear.name=Nuclear Warhead +item.warhead_thermo_endo.name=Endothermic Warhead +item.warhead_thermo_exo.name=Exothermic Warhead +item.warhead_volcano.name=Tectonic Warhead +item.waste_mox.name=Depleted MOX Fuel +item.waste_natural_uranium.name=Depleted Natural Uranium Fuel +item.waste_plate_mox.name=Depleted MOX Plate Fuel +item.waste_plate_pu238be.name=Depleted Pu238Be Plate Fuel +item.waste_plate_pu239.name=Depleted HEP-239 Plate Fuel +item.waste_plate_ra226be.name=Depleted Ra226Be Plate Fuel +item.waste_plate_sa326.name=Depleted HES-326 Plate Fuel +item.waste_plate_u233.name=Depleted HEU-233 Plate Fuel +item.waste_plate_u235.name=Depleted HEU-235 Plate Fuel +item.waste_plutonium.name=Depleted Plutonium Fuel +item.waste_schrabidium.name=Depleted Schrabidium Fuel +item.waste_thorium.name=Depleted Thorium Fuel +item.waste_u235.name=Depleted Uranium-235 Fuel +item.waste_u233.name=Depleted Uranium-233 Fuel +item.waste_uranium.name=Depleted Uranium Fuel +item.waste_zfb_mox.name=Depleted ZFB MOX Fuel +item.watch.name=Broken Pocket Watch +item.watch.desc=A small blue pocket watch.$It's glass has a few cracks in it, $and some shards are missing.$It stopped ticking at 2:34. +item.watz_pellet.boron.name=Boron Absorber Pellet +item.watz_pellet.du.name=Depleted Uranium Absorber Pellet +item.watz_pellet.hes.name=HES Watz Pellet +item.watz_pellet.lead.name=Lead Absorber Pellet +item.watz_pellet.les.name=LES Watz Pellet +item.watz_pellet.mes.name=MES Watz Pellet +item.watz_pellet.mep.name=MEP Watz Pellet +item.watz_pellet.meu.name=MEU Watz Pellet +item.watz_pellet.nqd.name=Enriched Naquadah Watz Pellet +item.watz_pellet.nqr.name=Naquadria Watz Pellet +item.watz_pellet.hen.name=HEN Watz Pellet +item.watz_pellet.schrabidium.name=Schrabidium Watz Pellet +item.watz_pellet_depleted.boron.name=Boron Absorber Pellet (Depleted) +item.watz_pellet_depleted.du.name=Depleted Uranium Absorber Pellet (Depleted) +item.watz_pellet_depleted.hes.name=HES Watz Pellet (Depleted) +item.watz_pellet_depleted.lead.name=Lead Absorber Pellet (Depleted) +item.watz_pellet_depleted.les.name=LES Watz Pellet (Depleted) +item.watz_pellet_depleted.mes.name=MES Watz Pellet (Depleted) +item.watz_pellet_depleted.mep.name=MEP Watz Pellet (Depleted) +item.watz_pellet_depleted.meu.name=MEU Watz Pellet (Depleted) +item.watz_pellet_depleted.nqd.name=Enriched Naquadah Watz Pellet (Depleted) +item.watz_pellet_depleted.nqr.name=Naquadria Watz Pellet (Depleted) +item.watz_pellet_depleted.hen.name=HEN Watz Pellet (Depleted) +item.watz_pellet_depleted.schrabidium.name=Schrabidium Watz Pellet (Depleted) + +item.weapon_bat.name=Richard's Default +item.weapon_bat_nail.name=The Cliché +item.weapon_golf_club.name=Russian Mobster's Club +item.weapon_pipe_lead.name=The Manual Override +item.weapon_pipe_rusty.name=The Attitude Adjuster +item.weapon_saw.name=Doctor Assisted Homicide +item.weaponized_starblaster_cell.name=§cRigged Star Blaster Energy Cell§r +item.wd40.name=VT-40 +item.wild_p.name=Wild Pegasus Dry Whiskey +item.wings_limp.name=Limp Wings +item.wings_murk.name=Murky Wings +item.wire_advanced_alloy.name=Super Conductor +item.wire_aluminium.name=Aluminium Wire +item.wire_copper.name=Copper Wire +item.wire_gold.name=Gold Wire +item.wire_magnetized_tungsten.name=4000K High Temperature Super Conductor +item.wire_red_copper.name=Red Copper Wire +item.wire_schrabidium.name=Schrabidium Wire +item.wire_tungsten.name=Tungsten Wire +item.wiring_red_copper.name=Cable Drum +item.wood_gavel.name=Wooden Gavel +item.wrench.name=Pipe Wrench +item.wrench_archineer.name=Archineer's Wrench +item.wrench_flipped.name=Blade on a Wrench +item.xanax.name=NAXA Anti-Digamma Medication +item.xanax.desc=Removes 500mDRX +item.zirconium_legs.name=Zirconium Pants + +itemGroup.tabBlocks=NTM Ores and Blocks +itemGroup.tabConsumable=NTM Consumables and Gear +itemGroup.tabControl=NTM Machine Items and Fuel +itemGroup.tabMachine=NTM Machines +itemGroup.tabMissile=NTM Missiles and Satellites +itemGroup.tabNuke=NTM Bombs +itemGroup.tabParts=NTM Resources and Parts +itemGroup.tabTemplate=NTM Templates +itemGroup.tabTest=Nuclear Tech Mod Test Tab +itemGroup.tabWeapon=NTM Weapons and Turrets + +potion.hbm_bang=! ! ! +potion.hbm_death=Astolfization +potion.hbm_lead=Lead Poisoning +potion.hbm_mutation=Tainted Heart +potion.hbm_phosphorus=Phosphorus Burns +potion.hbm_potionsickness=Potion Sickness +potion.hbm_radaway=Radaway +potion.hbm_radiation=Contaminated +potion.hbm_radx=Rad-X +potion.hbm_stability=Stability +potion.hbm_taint=Tainted +potion.hbm_telekinesis=! ! ! + +radar.detectMissiles=Detect Missiles +radar.detectPlayers=Detect Players +radar.redMode=Redstone Mode$On: Redstone output based on range$Off: Redstone output based on tier +radar.smartMode=Smart Mode$Redstone output ignores ascending missiles + +rbmk.heat=Column temperature: %s +rbmk.boiler.water=Feedwater: %s / %s +rbmk.boiler.steam=Steam: %s / %s +rbmk.boiler.type=Compressor: %s +rbmk.console.assign=Assign selected columns to screen #%s +rbmk.console.none=Off +rbmk.console.col_temp=Monitor average column temperature +rbmk.console.rod_extraction=Monitor average control rod extraction +rbmk.console.fuel_depletion=Monitor average fuel depletion +rbmk.console.fuel_poison=Monitor average xenon poisoning +rbmk.console.fuel_temp=Monitor average fuel temperature +rbmk.control.level=%s +rbmk.control.red=§cRed Group +rbmk.control.yellow=§eYellow Group +rbmk.control.green=§aGreen Group +rbmk.control.blue=§1Blue Group +rbmk.control.purple=§5Purple Group +rbmk.moderated=Moderated +rbmk.rod.depletion=Depletion: %s +rbmk.rod.xenon=Xenon poison: %s +rbmk.rod.coreTemp=Core temperature: %s +rbmk.rod.skinTemp=Skin temperature: %s / %s +rbmk.screen.core=Core: %s +rbmk.screen.depletion=Depl: %s +rbmk.screen.rod=Control: %s +rbmk.screen.temp=Temp: %s +rbmk.screen.xenon=Xenon: %s + +shape.billet=Billet +shape.blade=Blade +shape.blades=Shredder Blades +shape.block=Block +shape.dust=Dust +shape.dusttiny=Tiny Dust +shape.hull_big=Big Shell +shape.hull_small=Small Shell +shape.ingot=Ingot +shape.nugget=Nugget +shape.quantum=Quantum +shape.quart=Quarter Block +shape.plate=Plate +shape.plateTriple=Cast Plate +shape.stamp=Press Stamp +shape.wire=Wire + +soundCategory.ntmMachines=NTM Machines + +tile.absorber.name=Radiation Absorber +tile.absorber_green.name=Advanced Radiation Absorber +tile.absorber_pink.name=Elite Radiation Absorber +tile.absorber_red.name=Enhanced Radiation Absorber +tile.acid_block.name=Acid +tile.ams_base.name=AMS Base (Dekoracja) +tile.ams_emitter.name=AMS Emitter (Dekoracja) +tile.ams_limiter.name=AMS Stabilizer (Dekoracja) +tile.ancient_scrap.name=Ancient Scrap Metal +tile.anvil_bismuth.name=Bismuth Anvil +tile.anvil_dnt.name=Dineutronium Anvil +tile.anvil_ferrouranium.name=Ferrouranium Anvil +tile.anvil_iron.name=Iron Anvil +tile.anvil_lead.name=Lead Anvil +tile.anvil_meteorite.name=Meteorite Anvil +tile.anvil_murky.name=Murky Anvil +tile.anvil_osmiridium.name=Osmiridium Anvil +tile.anvil_schrabidate.name=Ferric Schrabidate Anvil +tile.anvil_starmetal.name=Starmetal Anvil +tile.anvil_steel.name=Steel Anvil +tile.ash_digamma.name=Ash +tile.asphalt.name=Asphalt +tile.asphalt_light.name=Glowing Asphalt +tile.barbed_wire.name=Barbed Wire +tile.barbed_wire_acid.name=Caustic Barbed Wire +tile.barbed_wire_fire.name=Flaming Barbed Wire +tile.barbed_wire_poison.name=Poisoned Barbed Wire +tile.barbed_wire_ultradeath.name=Cloud Barbed Wire +tile.barbed_wire_wither.name=Withered Barbed Wire +tile.barrel_antimatter.name=Magnetic Antimatter Container +tile.barrel_corroded.name=Corroded Barrel +tile.barrel_iron.name=Iron Barrel +tile.barrel_plastic.name=Safe Barrel™ +tile.barrel_steel.name=Steel Barrel +tile.barrel_tcalloy.name=Technetium Steel Barrel +tile.barricade.name=Sand Bags +tile.basalt.name=Basalt +tile.basalt_asbestos.name=Asbestos-Rich Basalt +tile.basalt_brick.name=Basalt Bricks +tile.basalt_fluorite.name=Fluorite-Rich Basalt +tile.basalt_gem.name=Gem-Rich Basalt +tile.basalt_polished.name=Polished Basalt +tile.basalt_smooth.name=Smooth Basalt +tile.basalt_sulfur.name=Sulfur-Rich Basalt +tile.basalt_tiles.name=Basalt Tiles +tile.blast_door.name=Sliding Blast Door +tile.block_actinium.name=Block of Actinium +tile.block_advanced_alloy.name=Block of Advanced Alloy +tile.block_aluminium.name=Block of Aluminium +tile.block_asbestos.name=Block of Asbestos +tile.block_australium.name=Block of Australium +tile.block_bakelite.name=Block of Bakelite +tile.block_beryllium.name=Block of Beryllium +tile.block_bismuth.name=Block of Bismuth +tile.block_boron.name=Block of Boron +tile.block_c4.name=Block of C-4 +tile.block_cadmium.name=Block of Cadmium +tile.block_cap_fritz.name=Block of Fritz Cola Bottle Caps +tile.block_cap_korl.name=Block of Korl Bottle Caps +tile.block_cap_nuka.name=Block of Nuka Cola Bottle Caps +tile.block_cap_quantum.name=Block of Nuka Cola Quantum Bottle Caps +tile.block_cap_rad.name=Block of S~Cola RAD Bottle Caps +tile.block_cap_sparkle.name=Block of S~Cola Bottle Caps +tile.block_cap_star.name=Block of Sunset Sarsaparilla Star Caps +tile.block_cap_sunset.name=Block of Sunset Sarsaparilla Bottle Caps +tile.block_cdalloy.name=Block of Cadmium Steel +tile.block_cobalt.name=Block of Cobalt +tile.block_coke.coal.name=Block of Coal Coke +tile.block_coke.lignite.name=Block of Lignite Coke +tile.block_coke.petroleum.name=Block of Petroleum Coke +tile.block_coltan.name=Block of Coltan +tile.block_combine_steel.name=Block of CMB Steel +tile.block_copper.name=Block of Copper +tile.block_corium.name=Corium +tile.block_corium_cobble.name=Corebblestone +tile.block_daffergon.name=Block of Daffergon +tile.block_desh.name=Reinforced Block of Desh +tile.block_dineutronium.name=Block of Dineutronium +tile.block_dura_steel.name=Reinforced Block of High-Speed Steel +tile.block_electrical_scrap.name=Block of Electrical Scrap +tile.block_euphemium.name=Block of Euphemium +tile.block_euphemium_cluster.name=Euphemium-Etched Schrabidium Cluster +tile.block_fallout.name=Block of Fallout +tile.block_fiberglass.name=Roll of Fiberglass +tile.block_fluorite.name=Block of Fluorite +tile.block_foam.name=Foam +tile.block_insulator.name=Roll of Insulation +tile.block_graphite.name=Block of Graphite +tile.block_graphite_detector.name=Pile Neutron Detector +tile.block_graphite_drilled.name=Drilled Graphite +tile.block_graphite_fuel.name=Pile Fuel +tile.block_graphite_lithium.name=Pile Lithium Fuel +tile.block_graphite_plutonium.name=Pile Fuel (Bred) +tile.block_graphite_rod.name=Pile Control Rod +tile.block_graphite_source.name=Pile Neutron Source +tile.block_graphite_tritium.name=Pile Lithium Fuel (Bred) +tile.block_lead.name=Block of Lead +tile.block_lanthanium.name=Block of Lanthanium +tile.block_lithium.name=Block of Lithium +tile.block_magnetized_tungsten.name=Block of Magnetized Tungsten +tile.block_meteor.name=Meteorite Block +tile.block_meteor_broken.name=Broken Meteorite Block +tile.block_meteor_cobble.name=Meteorite Cobblestone +tile.block_meteor_molten.name=Hot Meteorite Cobblestone +tile.block_meteor_treasure.name=Meteorite Treasure Block +tile.block_mox_fuel.name=Block of MOX Fuel +tile.block_neptunium.name=Block of Neptunium +tile.block_niter.name=Block of Niter +tile.block_niter_reinforced.name=Reinforced Block of Niter +tile.block_niobium.name=Block of Niobium +tile.block_plutonium.name=Block of Plutonium +tile.block_plutonium_fuel.name=Block of Plutonium Fuel +tile.block_polonium.name=Block of Polonium-210 +tile.block_polymer.name=Block of Polymer +tile.block_pu_mix.name=Block of Reactor Grade Plutonium +tile.block_pu238.name=Block of Plutonium-238 +tile.block_pu239.name=Block of Plutonium-239 +tile.block_pu240.name=Block of Plutonium-240 +tile.block_ra226.name=Block of Radium-226 +tile.block_red_copper.name=Block of Red Copper +tile.block_red_phosphorus.name=Block of Red Phosphorus +tile.block_reiium.name=Block of Reiium +tile.block_rubber.name=Block of Rubber +tile.block_schrabidate.name=Block of Ferric Schrabidate +tile.block_schrabidium.name=Block of Schrabidium +tile.block_schrabidium_cluster.name=Schrabidium Cluster +tile.block_schrabidium_fuel.name=Block of Schrabidium Fuel +tile.block_schraranium.name=Block of Schraranium +tile.block_scrap.name=Block of Scrap +tile.block_semtex.name=Block of Semtex +tile.block_slag.name=Block of Slag +tile.block_smore.name=Block of S'more +tile.block_solinium.name=Block of Solinium +tile.block_starmetal.name=§9Block of Starmetal§r +tile.block_steel.name=Block of Steel +tile.block_sulfur.name=Block of Sulfur +tile.block_tantalium.name=Block of Tantalium +tile.block_tcalloy.name=Block of Technetium Steel +tile.block_thorium.name=Block of Thorium-232 +tile.block_thorium_fuel.name=Block of Thorium Fuel +tile.block_titanium.name=Block of Titanium +tile.block_trinitite.name=Block of Trinitite +tile.block_tritium.name=Block of Tritium Cells +tile.block_tungsten.name=Block of Tungsten +tile.block_u233.name=Block of Uranium-233 +tile.block_u235.name=Block of Uranium-235 +tile.block_u238.name=Block of Uranium-238 +tile.block_unobtainium.name=Block of Unobtainium +tile.block_uranium.name=Block of Uranium +tile.block_uranium_fuel.name=Block of Uranium Fuel +tile.block_verticium.name=Block of Verticium +tile.block_waste.name=Block of Nuclear Waste +tile.block_waste_painted.name=Painted Block of Nuclear Waste +tile.block_waste_vitrified.name=Vitrified Block of Nuclear Waste +tile.block_weidanium.name=Block of Weidanium +tile.block_white_phosphorus.name=Block of White Phosphorus +tile.block_yellowcake.name=Block of Yellowcake +tile.block_zirconium.name=Block of Zirconium +tile.boat.name=Boat +tile.bobblehead.name=Bobblehead +tile.bomb_multi.name=Multi Purpose Bomb +tile.bomber.name=Crashed Bomber +tile.book_guide.name=Hbm's Nuclear Tech Mod Manual [LEGACY] +tile.boxcar.name=Boxcar +tile.brick_asbestos.name=Asbestos Bricks +tile.brick_asbestos_stairs.name=Asbestos Brick Stairs +tile.brick_compound.name=Compound Mesh +tile.brick_compound_stairs.name=Compound Mesh Stairs +tile.brick_concrete.name=Concrete Bricks +tile.brick_concrete_stairs.name=Concrete Brick Stairs +tile.brick_concrete_broken.name=Broken Concrete Bricks +tile.brick_concrete_broken_stairs.name=Broken Concrete Brick Stairs +tile.brick_concrete_cracked.name=Cracked Concrete Bricks +tile.brick_concrete_cracked_stairs.name=Cracked Concrete Brick Stairs +tile.brick_concrete_marked.name=Marked Concrete Bricks +tile.brick_concrete_mossy.name=Mossy Concrete Bricks +tile.brick_concrete_mossy_stairs.name=Mossy Concrete Brick Stairs +tile.brick_ducrete.name=Ducrete Bricks +tile.brick_ducrete_stairs.name=Ducrete Brick Stairs +tile.brick_dungeon.name=Berzelianite Bricks +tile.brick_dungeon_circle.name=Berzelianite Cirlce +tile.brick_dungeon_flat.name=Berzelianite Block +tile.brick_dungeon_tile.name=Berzelianite Tile +tile.brick_fire.name=Firebricks +tile.brick_fire_stairs.name=Firebrick Stairs +tile.brick_jungle.name=Enargite Bricks +tile.brick_jungle_circle.name=Mechanist's Circle +tile.brick_jungle_cracked.name=Cracked Enargite Bricks +tile.brick_jungle_fragile.name=Brittle Enargite Bricks +tile.brick_jungle_glyph.name=Enargite Glyph Bricks +tile.brick_jungle_lava.name=Magmatic Enargite Bricks +tile.brick_jungle_mystic.name=Arcane Enargite Bricks +tile.brick_jungle_ooze.name=Radioactive Enargite Bricks +tile.brick_jungle_trap.name=Trapped Enargite Bricks +tile.brick_light.name=Light Bricks +tile.brick_light_stairs.name=Light Bricks Stairs +tile.brick_obsidian.name=Obsidian Bricks +tile.brick_obsidian_stairs.name=Obsidian Brick Stairs +tile.brick_slab.brick_asbestos.name=Asbestos Brick Slab +tile.brick_slab.brick_compound.name=Compound Mesh Slab +tile.brick_slab.brick_fire.name=Firebrick Slab +tile.brick_slab.brick_light.name=Light Brick Slab +tile.brick_slab.brick_obsidian.name=Obsidian Brick Slab +tile.brick_slab.reinforced_brick.name=Reinforced Stone Slab +tile.brick_slab.reinforced_stone.name=Dense Stone Slab +tile.broadcaster_pc.name=Corrupted Broadcaster +tile.burning_earth.name=Burning Grass +tile.c4.name=C-4 +tile.cable_detector.name=Redstone Power Switch +tile.cable_diode.name=Red Copper Diode +tile.cable_switch.name=Power Switch +tile.capacitor_bus.name=Capacitor Bus +tile.capacitor_bus.desc=Output block for capacitors$Can be chained up in a straight line +tile.capacitor_copper.name=Copper Capacitor +tile.capacitor_gold.name=Golden Capacitor +tile.capacitor_niobium.name=Niobium Capacitor +tile.capacitor_tantalium.name=Tantalium Capacitor +tile.capacitor.desc=Input: Top$Output: Bottom, via Capacitor Bus +tile.charge_c4.name=Demolition Charge +tile.charge_dynamite.name=Time Bomb +tile.charge_miner.name=Timed Mining Charge +tile.charge_semtex.name=Semtex Mining Charge +tile.charger.name=Charging Station +tile.cheater_virus.name=Gelid Euphemium +tile.cheater_virus_seed.name=Unstable Euphemium Schrabide Block +tile.chimney_brick.name=Smokestack +tile.chlorine_gas.name=Chlorine Gas +tile.cluster_aluminium.name=Aluminium Ore Cluster +tile.cluster_copper.name=Copper Ore Cluster +tile.cluster_depth_iron.name=Depth Iron Ore Cluster +tile.cluster_depth_titanium.name=Depth Titanium Ore Cluster +tile.cluster_depth_tungsten.name=Depth Tungsten Ore Cluster +tile.cluster_iron.name=Iron Ore Cluster +tile.cluster_titanium.name=Titanium Ore Cluster +tile.cm_block.alloy.name=Advanced Alloy Machine Casing +tile.cm_block.desh.name=Desh Machine Casing +tile.cm_block.steel.name=Steel Machine Casing +tile.cm_block.tcalloy.name=Technetium Steel Machine Casing +tile.cm_circuit.aluminium.name=Tier 1 Circuit Block +tile.cm_circuit.copper.name=Tier 2 Circuit Block +tile.cm_circuit.gold.name=Tier 4 Circuit Block +tile.cm_circuit.red_copper.name=Tier 3 Circuit Block +tile.cm_circuit.schrabidium.name=Tier 5 Circuit Block +tile.cm_engine.bismuth.name=Bismuth Motor Block +tile.cm_engine.desh.name=Desh Motor Block +tile.cm_engine.standard.name=Motor Block +tile.cm_port.alloy.name=Advanced Alloy Port +tile.cm_port.desh.name=Desh Port +tile.cm_port.steel.name=Steel Port +tile.cm_port.tcalloy.name=Technetium Steel Port +tile.cm_sheet.alloy.name=Advanced Alloy Sheet +tile.cm_sheet.desh.name=Desh Sheet +tile.cm_sheet.steel.name=Steel Sheet +tile.cm_sheet.tcalloy.name=Technetium Steel Sheet +tile.cm_tank.alloy.name=Advanced Alloy Tank +tile.cm_tank.desh.name=Desh Tank +tile.cm_tank.steel.name=Steel Tank +tile.cm_tank.tcalloy.name=Technetium Steel Tank +tile.cmb_brick.name=CMB Steel Tile +tile.cmb_brick_reinforced.name=Reinforced CMB Bricks +tile.compact_launcher.name=Compact Launch Pad +tile.concrete.name=Concrete Tile +tile.concrete_asbestos.name=Asbestos Concrete +tile.concrete_asbestos_stairs.name=Asbestos Concrete Stairs +tile.concrete_brick_slab.brick_concrete.name=Concrete Brick Slab +tile.concrete_brick_slab.brick_concrete_broken.name=Broken Concrete Brick Slab +tile.concrete_brick_slab.brick_concrete_cracked.name=Cracked Concrete Brick Slab +tile.concrete_brick_slab.brick_concrete_mossy.name=Mossy Concrete Brick Slab +tile.concrete_brick_slab.brick_ducrete.name=Ducrete Brick Slab +tile.concrete_colored.black.name=Black Concrete +tile.concrete_colored.blue.name=Blue Concrete +tile.concrete_colored.brown.name=Brown Concrete +tile.concrete_colored.cyan.name=Cyan Concrete +tile.concrete_colored.gray.name=Gray Concrete +tile.concrete_colored.green.name=Green Concrete +tile.concrete_colored.lightBlue.name=Light Blue Concrete +tile.concrete_colored.lime.name=Lime Concrete +tile.concrete_colored.magenta.name=Magenta Concrete +tile.concrete_colored.orange.name=Orange Concrete +tile.concrete_colored.pink.name=Pink Concrete +tile.concrete_colored.purple.name=Purple Concrete +tile.concrete_colored.red.name=Red Concrete +tile.concrete_colored.silver.name=Light Gray Concrete +tile.concrete_colored.white.name=White Concrete +tile.concrete_colored.yellow.name=Yellow Concrete +tile.concrete_colored_ext.hazard.name=Builder's Choice Concrete - Hazard Stripe +tile.concrete_colored_ext.indigo.name=Builder's Choice Concrete - Deep Indigo +tile.concrete_colored_ext.machine.name=Builder's Choice Concrete - Industrial Tinge +tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Industrial Stripe +tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - Manly Pink +tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysterious Purple +tile.concrete_pillar.name=Rebar Reinforced Concrete Pillar +tile.concrete_slab.concrete.name=Concrete Tile Slab +tile.concrete_slab.concrete_asbestos.name=Asbestos Concrete Slab +tile.concrete_slab.concrete_smooth.name=Concrete Slab +tile.concrete_slab.ducrete.name=Ducrete Tile Slab +tile.concrete_slab.ducrete_smooth.name=Ducrete Slab +tile.concrete_smooth.name=Concrete +tile.concrete_smooth_stairs.name=Concrete Stairs +tile.concrete_stairs.name=Concrete Tile Stairs +tile.concrete_super.name=Über Concrete +tile.concrete_super_broken.name=Moldy Debris +tile.conveyor.name=Conveyor Belt +tile.conveyor_chute.name=Conveyor Chute +tile.conveyor_double.name=Double-Lane Conveyor Belt +tile.conveyor_lift.name=Conveyor Chain Lift +tile.conveyor_triple.name=Triple-Lane Conveyor Belt +tile.corium_block.name=Corium +tile.crane_boxer.name=Conveyor Boxer + +tile.crane_extractor.name=Conveyor Ejector +tile.crane_grabber.name=Conveyor Grabber +tile.crane_inserter.name=Conveyor Inserter + +tile.crane_router.name=Conveyor Sorter +tile.crane_splitter.name=Conveyor Splitter +tile.crane_unboxer.name=Conveyor Unboxer +tile.crashed_bomb.name=Dud +tile.crate.name=Supply Crate +tile.crate_ammo.name=Starmetal Crate +tile.crate_can.name=Conserve Crate +tile.crate_desh.name=Desh Crate +tile.crate_iron.name=Iron Crate +tile.crate_jungle.name=Enargite Crate +tile.crate_lead.name=Hazmat Crate +tile.crate_metal.name=Machine Crate +tile.crate_red.name=Red Crate +tile.crate_steel.name=Steel Crate +tile.crate_template.name=Template Crate +tile.crate_tungsten.name=Tungsten Crate +tile.crate_weapon.name=Weapon Crate +tile.crystal_hardened.name=Hardened Dark Crystal +tile.crystal_pulsar.name=Pulsating Crystal +tile.crystal_virus.name=Dark Crystal +tile.deco_aluminium.name=Aluminium Deco Block +tile.deco_asbestos.name=Asbestos Roof +tile.deco_beryllium.name=Beryllium Deco Block +tile.deco_computer.ibm_300pl.name=IBM Personal Computer 300PL +tile.deco_emitter.name=Deco Light Emitter +tile.part_emitter.name=Deco Particle Emitter +tile.piston_inserter.name=Inserter +tile.deco_lead.name=Lead Deco Block +tile.deco_rbmk.name=RBMK Deco Block +tile.deco_rbmk_smooth.name=Smooth RBMK Deco Block +tile.deco_red_copper.name=Red Copper Deco Block +tile.deco_pipe.name=Steel Pipe +tile.deco_pipe_rusted.name=Rusty Steel Pipe +tile.deco_pipe_green.name=Green Steel Pipe +tile.deco_pipe_green_rusted.name=Rusty Green Steel Pipe +tile.deco_pipe_red.name=Red Steel Pipe +tile.deco_pipe_marked.name=Gas Pipe +tile.deco_pipe_framed.name=Steel Pipe (Framed) +tile.deco_pipe_framed_rusted.name=Rusty Steel Pipe (Framed) +tile.deco_pipe_framed_green.name=Green Steel Pipe (Framed) +tile.deco_pipe_framed_green_rusted.name=Rusty Green Steel Pipe (Framed) +tile.deco_pipe_framed_red.name=Red Steel Pipe (Framed) +tile.deco_pipe_framed_marked.name=Gas Pipe (Framed) +tile.deco_pipe_quad.name=Steel Pipes +tile.deco_pipe_quad_rusted.name=Rusty Steel Pipes +tile.deco_pipe_quad_green.name=Green Steel Pipes +tile.deco_pipe_quad_green_rusted.name=Rusty Green Steel Pipes +tile.deco_pipe_quad_red.name=Red Steel Pipes +tile.deco_pipe_quad_marked.name=Gas Pipes +tile.deco_pipe_rim.name=Steel Pipe (Rimmed) +tile.deco_pipe_rim_rusted.name=Rusty Steel Pipe (Rimmed) +tile.deco_pipe_rim_green.name=Green Steel Pipe (Rimmed) +tile.deco_pipe_rim_green_rusted.name=Rusty Green Steel Pipe (Rimmed) +tile.deco_pipe_rim_red.name=Red Steel Pipe (Rimmed) +tile.deco_pipe_rim_marked.name=Gas Pipe (Rimmed) +tile.deco_steel.name=Steel Deco Block +tile.deco_titanium.name=Titanium Deco Block +tile.deco_tungsten.name=Tungsten Deco Block +tile.decon.name=Player Decontaminator +tile.depth_brick.name=Depth Bricks +tile.depth_dnt.name=DNT-Reinforced Depth Bricks +tile.depth_nether_brick.name=Nether Depth Bricks +tile.depth_nether_tiles.name=Nether Depth Tiles +tile.depth_tiles.name=Depth Tiles +tile.det_charge.name=Explosive Charge +tile.det_cord.name=Det Cord +tile.det_miner.name=Mining Charge +tile.det_nuke.name=Nuclear Charge +tile.dfc_core.name=Dark Fusion Core +tile.dfc_emitter.name=DFC Emitter +tile.dfc_injector.name=DFC Fuel Injector +tile.dfc_receiver.name=DFC Receiver +tile.dfc_stabilizer.name=DFC Stabilizer +tile.dirt_dead.name=Dead Dirt +tile.dirt_oily.name=Oily Dirt +tile.drill_pipe.name=Drill Pipe +tile.door_bunker.name=Bunker Door +tile.door_metal.name=Metal Door +tile.door_office.name=Office Door +tile.ducrete.name=Ducrete Tile +tile.ducrete_stairs.name=Ducrete Tile Stairs +tile.ducrete_smooth.name=Ducrete +tile.ducrete_smooth_stairs.name=Ducrete Stairs +tile.dummy_block.name=Dummy Block +tile.dummy_port.name=Dummy Block (Electricity Port) +tile.dungeon_chain.name=Metal Chain +tile.dynamite.name=Dynamite +tile.emp_bomb.name=EMP Device +tile.factory_advanced_conductor.name=Advanced Factory Electricity Port +tile.factory_advanced_core.name=Advanced Factory Core Component +tile.factory_advanced_furnace.name=Advanced Factory Access Hatch +tile.factory_advanced_hull.name=Factory Block +tile.factory_titanium_conductor.name=Basic Factory Electricity Port +tile.factory_titanium_core.name=Basic Factory Core Component +tile.factory_titanium_furnace.name=Basic Factory Access Hatch +tile.factory_titanium_hull.name=Factory Block +tile.fallout.name=Fallout +tile.fan.name=Fan +tile.fence_metal.name=Chainlink Fence +tile.field_disturber.name=High Energy Field Jammer +tile.filing_cabinet.green.name=Dusty Filing Cabinet +tile.filing_cabinet.steel.name=Steel Filing Cabinet +tile.fire_digamma.name=Lingering Digamma +tile.fire_door.name=Fire Door +tile.fireworks.name=Firework Battery +tile.fireworks.charges=Charges Loaded: %s +tile.fireworks.message=Message: %s +tile.fireworks.color=Color: %s +tile.fissure_bomb.name=Fissure Bomb +tile.flame_war.name=Flame War in a Box +tile.float_bomb.name=Levitation Bomb +tile.fluid_duct.name=Universal Fluid Duct (Deprecated) +tile.fluid_duct_box.name=Universal Fluid Duct (Boxduct) +tile.fluid_duct_exhaust.name=Exhaust Pipe +tile.fluid_duct_gauge.name=Flow Gauge Pipe +tile.fluid_duct_gauge.desc=Pipe that displays how much fluid$moves within the network per tick.$Split networks connected by barrels$or tanks are considered as one shared network. +tile.fluid_duct_neo.name=Universal Fluid Duct +tile.fluid_duct_paintable.name=Paintable Coated Universal Fluid Duct +tile.fluid_duct_solid.name=Coated Universal Fluid Duct (Deprecated) +tile.fluid_switch.name=Redstone Fluid Valve +tile.fluid_valve.name=Fluid Valve +tile.foam_layer.name=Foam layer +tile.foundry_basin.name=Foundry Basin +tile.foundry_channel.name=Foundry Channel +tile.foundry_tank.name=Foundry Storage Basin +tile.foundry_mold.name=Shallow Foundry Basin +tile.foundry_outlet.name=Foundry Outlet +tile.foundry_slagtap.name=Foundry Slag Outlet +tile.fraction_spacer.name=Fractioning Tower Separator +tile.frozen_dirt.name=Frozen Dirt +tile.frozen_grass.name=Frozen Grass +tile.frozen_log.name=Frozen Log +tile.frozen_planks.name=Frozen Planks +tile.furnace_combination.name=Combination Oven +tile.furnace_combination.desc=A large furnace that can produce charcoal and coal coke.$Produces fluid byproducts.$Heat transfer rate: ΔT*0.25 TU/t +tile.furnace_iron.name=Iron Furnace +tile.furnace_iron.desc=Larger and more efficient furnace,$does not waste fuel when idle. +tile.furnace_steel.name=Steel Furnace +tile.furnace_steel.desc=Very large furnace that can provide bonus items$when smelting ores. Requires external heat source.$Heat transfer rate: ΔT*0.05 TU/t$(Δ means difference and T means temperature) +tile.fusion_center.name=Central Magnet Piece +tile.fusion_conductor.name=Superconducting Magnet +tile.fusion_conductor_welded.name=Superconducting Magnet (Welded) +tile.fusion_core.name=Fusion Reactor Control +tile.fusion_hatch.name=Duct Deco Block +tile.fusion_heater.name=Plasma Heater Component +tile.fusion_motor.name=Magnet Motor Piece +tile.fwatz_computer.name=Fusionary Watz Reactor Calculation Matrix +tile.fwatz_conductor.name=4000K Superconducting Magnet +tile.fwatz_cooler.name=Regenerative Coolant Fluid Tank Shell +tile.fwatz_core.name=Fusionary Watz Reactor Control +tile.fwatz_hatch.name=Fusionary Watz Plant Access Hatch +tile.fwatz_plasma.name=Destabilized Antischrabidium Plasma +tile.fwatz_scaffold.name=Fusionary Watz Plant Structural Support +tile.fwatz_tank.name=Regenerative Coolant Fluid Tank +tile.gas_asbestos.name=Airborne Asbestos Particles +tile.gas_coal.name=Airborne Coal Dust +tile.gas_duct.name=Gas Pipe +tile.gas_duct_solid.name=Coated Gas Pipe +tile.gas_explosive.name=Explosive Gas +tile.gas_flammable.name=Flammable Gas +tile.gas_meltdown.name=Meltdown Gas +tile.gas_monoxide.name=Carbon Monoxide +tile.gas_radon.name=Radon Gas +tile.gas_radon_dense.name=Dense Radon Gas +tile.gas_radon_tomb.name=Tomb Gas +tile.geiger.name=Geiger Counter +tile.glass_ash.name=Ash Glass +tile.glass_boron.name=Boron Glass +tile.glass_lead.name=Lead Glass +tile.glass_polonium.name=Polonium Glass +tile.glass_quartz.name=Quartz Glass +tile.glass_trinitite.name=Trinity Glass +tile.glass_uranium.name=Uranium Glass +tile.glyphid_base.name=Glyphid Hive Block +tile.glyphid_spawner.name=Glyphid Hive Spawner +tile.gneiss_brick.name=Schist Brick +tile.gneiss_chiseled.name=Chiseled Schist +tile.gneiss_tile.name=Schist Tile +tile.gravel_diamond.name=Diamond Gravel +tile.gravel_obsidian.name=Crushed Obsidian +tile.hadron_access.name=Particle Accelerator Access Terminal +tile.hadron_analysis.name=Particle Accelerator Analysis Chamber Wall +tile.hadron_analysis_glass.name=Particle Accelerator Analysis Chamber Window +tile.hadron_coil_alloy.name=Dense Superconducting Coil +tile.hadron_coil_chlorophyte.name=Dense Chlorophyte Coil +tile.hadron_coil_gold.name=Dense Gold Coil +tile.hadron_coil_magtung.name=Dense 4000K Superconductor Coil +tile.hadron_coil_mese.name=Dense Mese Coil +tile.hadron_coil_neodymium.name=Dense Neodymium Coil +tile.hadron_coil_schrabidate.name=Dense Schrabidate Coil +tile.hadron_coil_schrabidium.name=Dense Schrabidic Coil +tile.hadron_coil_starmetal.name=Dense Starmetal Coil +tile.hadron_cooler.name=Particle Accelerator Cooling Unit +tile.hadron_cooler.desc=Cooling power: 10$Overcooling threshold: 10$Cooling bonus: +10%%$Overcooling penalty: -25%% +tile.hadron_cooler_mk2.name=Particle Accelerator Cooling Unit - The Palindrome Special +tile.hadron_cooler_mk2.desc=Cooling power: 5$Efficiency function: 2-(cooling-15)²/225$Maximum penalty: -90%% +tile.hadron_core.name=Particle Accelerator Core Component +tile.hadron_diode.name=Schottky Particle Diode +tile.hadron_plating.name=Particle Accelerator Plating +tile.hadron_plating_black.name=Particle Accelerator Plating (Black) +tile.hadron_plating_blue.name=Particle Accelerator Plating (Blue) +tile.hadron_plating_glass.name=Particle Accelerator Plating (Window) +tile.hadron_plating_striped.name=Particle Accelerator Plating (Cool Hazard Stripes) +tile.hadron_plating_voltz.name=Particle Accelerator Plating (VOLTZ) +tile.hadron_plating_yellow.name=Particle Accelerator Plating (YelloDye) +tile.hadron_power.name=Particle Accelerator Power Plug (1MHE) +tile.hadron_power_10m.name=Particle Accelerator Power Plug (10MHE) +tile.hadron_power_100m.name=Particle Accelerator Power Plug (100MHE) +tile.hadron_power_1g.name=Particle Accelerator Power Plug (1GHE) +tile.hadron_power_10g.name=Particle Accelerator Power Plug (10GHE) +tile.hazmat.name=Hazmat Cloth Block +tile.heater_electric.name=Electric Heater +tile.heater_electric.desc=Uses energy to produce heat.$Accepts heat from the bottom with 85%% efficiency.$Can be configured with a screwdriver. +tile.heater_firebox.name=Firebox +tile.heater_firebox.desc=Burns solid fuel to produce heat. +tile.heater_heatex.name=Heat Exchanging Heater +tile.heater_heatex.desc=Produces heat from hot fluids. +tile.heater_oilburner.name=Fluid Burner +tile.heater_oilburner.desc=Burns fluids to produce heat.$Can be configured with a screwdriver. +tile.heater_oven.name=Heating Oven +tile.heater_oven.desc=Burns solid fuel to produce heat.$Accepts heat from the bottom with 50%% efficiency. +tile.hev_battery.name=Suit Battery +tile.impact_dirt.name=Scorched Dirt +tile.iter.name=Fusion Reactor +tile.ladder_aluminium.name=Aluminium Ladder +tile.ladder_cobalt.name=Cobalt Ladder +tile.ladder_copper.name=Copper Ladder +tile.ladder_gold.name=Golden Ladder +tile.ladder_iron.name=Iron Ladder +tile.ladder_lead.name=Lead Ladder +tile.ladder_steel.name=Steel Ladder +tile.ladder_sturdy.name=Sturdy Wooden Ladder +tile.ladder_titanium.name=Titanium Ladder +tile.ladder_tungsten.name=Tungsten Ladder +tile.lamp_demon.name=Demon Core Lamp +tile.lamp_tritium_blue_off.name=Blue Tritium Lamp +tile.lamp_tritium_blue_on.name=Blue Tritium Lamp +tile.lamp_tritium_green_off.name=Green Tritium Lamp +tile.lamp_tritium_green_on.name=Green Tritium Lamp +tile.launch_pad.name=Missile Launch Pad +tile.launch_table.name=Large Launch Pad +tile.leaves_layer.name=Fallen Leaves +tile.lox_barrel.name=LOX Barrel +tile.machine_amgen.name=Ambience Radiation Generator +tile.machine_arc_furnace_off.name=Arc Furnace +tile.machine_arc_furnace_on.name=Arc Furnace +tile.machine_armor_table.name=Armor Modification Table +tile.machine_assembler.name=Assembly Machine +tile.machine_assemfac.name=Assembly Factory +tile.machine_autocrafter.name=Automatic Crafting Table +tile.machine_autosaw.name=Automatic Buzz Saw +tile.machine_bat9000.name=Big-Ass Tank 9000 +tile.machine_battery.name=Energy Storage Block +tile.machine_battery_potato.name=Potato Battery Block +tile.machine_boiler.name=Boiler +tile.machine_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t +tile.machine_boiler_electric_off.name=Electric Oil Heater +tile.machine_boiler_electric_on.name=Electric Oil Heater +tile.machine_boiler_off.name=Oil Heater +tile.machine_boiler_on.name=Oil Heater +tile.machine_catalytic_cracker.name=Catalytic Cracking Tower +tile.machine_catalytic_reformer.name=Catalytic Reformer +tile.machine_centrifuge.name=Centrifuge +tile.machine_chemfac.name=Chemical Factory +tile.machine_chemplant.name=Chemical Plant +tile.machine_chungus.name=Leviathan Steam Turbine +tile.machine_chungus.desc=Efficiency: 85%% +tile.machine_coal_off.name=Combustion Generator +tile.machine_coal_on.name=Combustion Generator +tile.machine_coker.name=Coker Unit +tile.machine_coker.desc=Cokes oil, creating fluid byproducts.$Requires external heat source.$Heat transfer rate: ΔT*0.025 TU/t +tile.machine_combine_factory.name=CMB Steel Furnace +tile.machine_combustion_engine.name=Industrial Combustion Engine +tile.machine_compressor.name=Compressor +tile.machine_condenser.name=Steam Condenser +tile.machine_controller.name=Reactor Remote Control Block +tile.machine_converter_he_rf.name=HE to RF Converter +tile.machine_converter_rf_he.name=RF to HE Converter +tile.machine_crucible.name=Crucible +tile.machine_crystallizer.name=Ore Acidizer +tile.machine_cyclotron.name=Cyclotron +tile.machine_detector.name=Power Detector +tile.machine_deuterium_extractor.name=Deuterium Extractor +tile.machine_deuterium_tower.name=Deuterium Extraction Tower +tile.machine_diesel.name=Diesel Generator +tile.machine_difurnace_extension.name=Blast Furnace Extension +tile.machine_difurnace_off.name=Blast Furnace +tile.machine_difurnace_on.name=Blast Furnace +tile.machine_difurnace_rtg_off.name=Nuclear Blast Furnace +tile.machine_difurnace_rtg_on.name=Nuclear Blast Furnace +tile.machine_dineutronium_battery.name=Spark Energy Storage Block +tile.machine_drill.name=Automatic Mining Drill +tile.machine_electric_furnace_off.name=Electric Furnace +tile.machine_electric_furnace_on.name=Electric Furnace +tile.machine_electrolyser.name=Electrolysis Machine +tile.machine_epress.name=Electric Press +tile.machine_excavator.name=Large Mining Drill +tile.machine_fel.name=FEL +tile.machine_fensu.name=FEnSU +tile.machine_flare.name=Flare Stack +tile.machine_fluidtank.name=Tank +tile.machine_forcefield.name=Forcefield Emitter +tile.machine_fraction_tower.name=Fractioning Tower +tile.machine_fracking_tower.name=Hydraulic Fracking Tower +tile.machine_gascent.name=Gas Centrifuge +tile.machine_generator.name=Nuclear Reactor (Old) +tile.machine_geo.name=Geothermal Electric Generator +tile.machine_hephaestus.name=Geothermal Heat Exchanger +tile.machine_industrial_boiler.name=Industrial Boiler +tile.machine_industrial_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t$Cannot explode +tile.machine_industrial_generator.name=Industrial Generator +tile.machine_keyforge.name=Locksmith Table +tile.machine_large_turbine.name=Industrial Steam Turbine +tile.machine_large_turbine.desc=Efficiency: 100%% +tile.machine_liquefactor.name=Industrial Liquefaction Machine +tile.machine_liquefactor.desc=Powerful universal machine to turn items into fluids.$Comes with versatile catalytic components, heating elements$and a built-in hydrator for petrochemical liquefaction. +tile.machine_lithium_battery.name=Li-Ion Energy Storage Block +tile.machine_microwave.name=Microwave +tile.machine_mining_laser.name=Mining Laser +tile.machine_minirtg.name=Radio Isotope Cell +tile.machine_missile_assembly.name=Missile Assembly Station +tile.machine_mixer.name=Industrial Mixer +tile.machine_nuke_furnace_off.name=Nuclear Furnace +tile.machine_nuke_furnace_on.name=Nuclear Furnace +tile.machine_orbus.name=Heavy Magnetic Storage Tank +tile.machine_powerrtg.name=PT Isotope Cell +tile.machine_press.name=Burner Press +tile.machine_puf6_tank.name=Plutonium Hexafluoride Tank +tile.machine_pumpjack.name=Pumpjack +tile.machine_radar.name=Radar +tile.machine_radgen.name=Radiation-Powered Engine +tile.machine_radiolysis.name=Radioisotope Thermoelectric Generator and Radiolysis Chamber +tile.machine_reactor.name=Breeding Reactor +tile.machine_reactor_small.name=Research Reactor +tile.machine_refinery.name=Oil Refinery +tile.machine_reix_mainframe.name=Rei-X Mainframe (WIP) +tile.machine_rtg_blue.name=Convection Generator +tile.machine_rtg_cyan.name=Schrabidium Decay Generator (WIP) +tile.machine_rtg_furnace_off.name=RTG Furnace +tile.machine_rtg_furnace_on.name=RTG Furnace +tile.machine_rtg_green.name=Verticium Wealth Generator +tile.machine_rtg_grey.name=RT Generator +tile.machine_rtg_orange.name=Strong RT Generator +tile.machine_rtg_purple.name=Antimatter Annihilation Generator +tile.machine_rtg_red.name=Fulmination Generator +tile.machine_rtg_yellow.name=Australium Superfuel Reactor +tile.machine_satlinker.name=Satellite ID Manager +tile.machine_sawmill.name=Stirling Sawmill +tile.machine_sawmill.desc=Requires external heat source.$Heat transfer rate: T*0.1 TU/t$Min intake: 100 TU/t, Max intake: 300 TU/t +tile.machine_schrabidium_battery.name=Schrabidium Energy Storage Block +tile.machine_schrabidium_transmutator.name=Schrabidium Transmutation Device +tile.machine_selenium.name=Radial Performance Engine +tile.machine_shredder.name=Shredder +tile.machine_silex.name=Laser Isotope Separation Chamber (SILEX) +tile.machine_siren.name=Siren +tile.machine_solar_boiler.name=Solar Tower Boiler +tile.machine_solidifier.name=Industrial Solidification Machine +tile.machine_solidifier.desc=A universal machine fitted with cooling systems and other$versatile tools for turning fluids solid using various$processes such as freezing and petrochemical polymerization. +tile.machine_spp_bottom.name=ZPE Potential Generator (Bottom) +tile.machine_spp_top.name=ZPE Potential Generator (Top) +tile.machine_steam_engine.name=Steam Engine +tile.machine_steam_engine.desc=Efficiency: 85%% +tile.machine_stirling.name=Stirling Engine +tile.machine_stirling.desc=Turns heat into energy. Requires external heat source.$Heat transfer rate: T*0.1 TU/t$Max intake: 300 TU/t$Efficiency: 50%% +tile.machine_stirling_steel.name=Heavy Stirling Engine +tile.machine_stirling_steel.desc=Turns heat into energy. Requires external heat source.$Uses a much heavier gear to support higher temperatures.$Heat transfer rate: T*0.1 TU/t$Max intake: 1500 TU/t$Efficiency: 50%% +tile.machine_storage_drum.name=Nuclear Waste Disposal Drum +tile.machine_telelinker.name=Turret Telemetry Linker +tile.machine_teleporter.name=Teleporter +tile.machine_tower_large.name=Cooling Tower +tile.machine_tower_small.name=Auxiliary Cooling Tower +tile.machine_transformer.name=10k-20Hz Transformer +tile.machine_transformer_20.name=10k-1Hz Transformer +tile.machine_transformer_dnt.name=DNT-20Hz Transformer +tile.machine_transformer_dnt_20.name=DNT-1Hz Transformer +tile.machine_turbine.name=Steam Turbine +tile.machine_turbine.desc=Efficiency: 85%% +tile.machine_turbinegas.name=Combined Cycle Gas Turbine +tile.machine_turbofan.name=Turbofan +tile.machine_uf6_tank.name=Uranium Hexafluoride Tank +tile.machine_vacuum_distill.name=Vacuum Refinery +tile.machine_waste_drum.name=Spent Fuel Pool Drum +tile.machine_well.name=Oil Derrick +tile.machine_zirnox.name=ZIRNOX Nuclear Reactor +tile.marker_structure.name=Multiblock Structure Marker +tile.mass_storage.name=Mass Storage Unit +tile.meteor_battery.name=Starmetal Static Electricity Generator +tile.meteor_brick.name=Meteor Bricks +tile.meteor_brick_chiseled.name=Chiseled Meteor Bricks +tile.meteor_brick_cracked.name=Cracked Meteor Bricks +tile.meteor_brick_mossy.name=Mossy Meteor Bricks +tile.meteor_pillar.name=Meteor Pillar +tile.meteor_polished.name=Polished Meteor Block +tile.meteor_spawner.name=Cyber Crab Assembler +tile.mine_ap.name=Anti-Personell Mine +tile.mine_fat.name=Fat Mine +tile.mine_he.name=Anti-Tank Mine +tile.mine_shrap.name=Shrapnel Mine +tile.moon_turf.name=Moon Turf +tile.mud_block.name=Poisonous Mud +tile.muffler.name=Muffler +tile.mush.name=Glowing Mushroom +tile.ntm_dirt.name=Dirt +tile.nuke_boy.name=Little Boy +tile.nuke_custom.name=Custom Nuke +tile.nuke_fleija.name=F.L.E.I.J.A. +tile.nuke_fstbmb.name=Balefire Bomb +tile.nuke_gadget.name=The Gadget +tile.nuke_man.name=Fat Man +tile.nuke_mike.name=Ivy Mike +tile.nuke_n2.name=N² Mine +tile.nuke_n45.name=N45 Naval Mine +tile.nuke_prototype.name=The Prototype +tile.nuke_solinium.name=The Blue Rinse +tile.nuke_tsar.name=Tsar Bomba +tile.oil_duct.name=Oil Pipe +tile.oil_duct_solid.name=Coated Oil Pipe +tile.oil_pipe.name=Crude Oil Extraction Pipe +tile.ore_alexandrite.name=Alexandrite Ore +tile.ore_aluminium.name=Aluminium Ore +tile.ore_asbestos.name=Asbestos Ore +tile.ore_australium.name=Australian Ore +tile.ore_bedrock.name=Bedrock Ore +tile.ore_bedrock_coltan.name=Bedrock Coltan Ore +tile.ore_bedrock_oil.name=Bedrock Oil Deposit +tile.ore_beryllium.name=Beryllium Ore +tile.ore_cinnebar.name=Cinnabar Ore +tile.ore_coal_oil.name=Oily Coal Ore +tile.ore_coal_oil_burning.name=Burning Oily Coal Ore +tile.ore_cobalt.name=Cobalt Ore +tile.ore_coltan.name=Coltan Ore +tile.ore_copper.name=Copper Ore +tile.ore_daffergon.name=Dellite +tile.ore_depth_borax.name=Depth Borax Ore +tile.ore_depth_cinnebar.name=Depth Cinnabar Ore +tile.ore_depth_nether_neodymium.name=Nether Depth Neodymium Ore +tile.ore_depth_zirconium.name=Depth Zirconium Ore +tile.ore_fluorite.name=Fluorite Ore +tile.ore_gneiss_asbestos.name=Schist Asbestos Ore +tile.ore_gneiss_copper.name=Schist Copper Ore +tile.ore_gneiss_gas.name=Gas Shale +tile.ore_gneiss_gold.name=Schist Gold Ore +tile.ore_gneiss_iron.name=Schist Iron Ore +tile.ore_gneiss_lithium.name=Schist Lithium Ore +tile.ore_gneiss_rare.name=Schist Rare Earth Ore +tile.ore_gneiss_schrabidium.name=Schist Schrabidium Ore +tile.ore_gneiss_uranium.name=Schist Uranium Ore +tile.ore_gneiss_uranium_scorched.name=Scorched Schist Uranium Ore +tile.ore_lead.name=Lead Ore +tile.ore_lignite.name=Lignite Ore +tile.ore_meteor_aluminium.name=Meteor Aluminium Ore +tile.ore_meteor_copper.name=Meteor Copper Ore +tile.ore_meteor_lead.name=Meteor Lead Ore +tile.ore_meteor_lithium.name=Meteor Lithium Ore +tile.ore_meteor_starmetal.name=Starmetal Ore +tile.ore_meteor_sulfur.name=Meteor Sulfur Ore +tile.ore_meteor_thorium.name=Meteor Thorium Ore +tile.ore_meteor_titanium.name=Meteor Titanium Ore +tile.ore_meteor_tungsten.name=Meteor Tungsten Ore +tile.ore_meteor_uranium.name=Meteor Uranium Ore +tile.ore_nether_coal.name=Burning Nether Coal Ore +tile.ore_nether_cobalt.name=Nether Cobalt Ore +tile.ore_nether_fire.name=Nether Phosphorus Ore +tile.ore_nether_plutonium.name=Nether Plutonium Ore +tile.ore_nether_schrabidium.name=Nether Schrabidium Ore +tile.ore_nether_smoldering.name=Smoldering Netherrack +tile.ore_nether_sulfur.name=Nether Sulfur Ore +tile.ore_nether_tungsten.name=Nether Tungsten Ore +tile.ore_nether_uranium.name=Nether Uranium Ore +tile.ore_nether_uranium_scorched.name=Scorched Nether Uranium Ore +tile.ore_niter.name=Niter Ore +tile.ore_oil.name=Oil Deposit +tile.ore_oil_empty.name=Empty Oil Deposit +tile.ore_oil_sand.name=Tar Sand +tile.ore_random.name=%s Ore +tile.ore_rare.name=Rare Earth Ore +tile.ore_reiium.name=Reiite +tile.ore_schrabidium.name=Schrabidium Ore +tile.ore_sulfur.name=Sulfur Ore +tile.ore_tektite_osmiridium.name=Osmiridium-Infused Tektite +tile.ore_thorium.name=Thorium Ore +tile.ore_tikite.name=Trixite +tile.ore_titanium.name=Titanium Ore +tile.ore_tungsten.name=Tungsten Ore +tile.ore_unobtainium.name=Brightblende Ore +tile.ore_uranium.name=Uranium Ore +tile.ore_uranium_scorched.name=Scorched Uranium Ore +tile.ore_verticium.name=Dollar Green Mineral +tile.ore_volcano.name=Geothermal Vent +tile.ore_weidanium.name=Weidite +tile.pink_barrel.name=Kerosene Barrel +tile.pink_log.name=Pink Log +tile.pink_planks.name=Pink Wood Planks +tile.pink_slab.name=Pink Wood Slab +tile.pink_stairs.name=Pink Wood Stairs +tile.plant_dead.name=Dead Plant +tile.plant_flower.cd0.name=Mustard Willow +tile.plant_flower.cd1.name=Mustard Willow +tile.plant_flower.foxglove.name=Foxglove +tile.plant_flower.nightshade.name=Deadly Nightshade +tile.plant_flower.tobacco.name=Tobacco Plant +tile.plant_flower.weed.name=Hemp +tile.plant_reeds.name=Reeds +tile.plant_tall.cd2.name=Mustard Willow +tile.plant_tall.cd3.name=Mustard Willow +tile.plant_tall.cd4.name=Mustard Willow (Mature) +tile.plant_tall.weed.name=Hemp +tile.plasma.name=Plasma +tile.plasma_heater.name=Plasma Heater +tile.pole_satellite_receiver.name=Satellite Dish +tile.pole_top.name=Antenna Top +tile.press_preheater.name=Burner Press Preheater +tile.pribris.name=RBMK Debris +tile.pribris_burning.name=Flaming RBMK Debris +tile.pribris_digamma.name=Blackened RBMK Debris +tile.pribris_radiating.name=Smoldering RBMK Debris +tile.radio_torch_counter.name=Redstone-over-Radio Item Counter +tile.radio_torch_counter.desc=Placable on flat surfaces or comparator-compatible blocks$Bases signal on the amount of matching items +tile.radio_torch_receiver.name=Redstone-over-Radio Receiver +tile.radio_torch_receiver.desc=Placable on flat surfaces or comparator-compatible blocks +tile.radio_torch_sender.name=Redstone-over-Radio Transmitter +tile.radio_torch_sender.desc=Placable on flat surfaces or comparator-compatible blocks$Reads redstone signals or comparator input +tile.radiobox.name=Rosenberg Pest Control Box +tile.radiorec.name=FM Radio +tile.rail_booster.name=High Speed Booster Rail +tile.rail_highspeed.name=High Speed Rail +tile.rail_narrow.name=Narrow Gauge Cart Rail +tile.rail_wood.name=Wooden Tracks +tile.rbmk_absorber.name=RBMK Boron Neutron Absorber +tile.rbmk_blank.name=RBMK Structural Column +tile.rbmk_boiler.name=RBMK Steam Channel +tile.rbmk_console.name=RBMK Console +tile.rbmk_cooler.name=RBMK Cooler +tile.rbmk_control.name=RBMK Control Rods +tile.rbmk_control_auto.name=RBMK Automatic Control Rods +tile.rbmk_control_mod.name=RBMK Moderated Control Rods +tile.rbmk_crane_console.name=RBMK Crane Console +tile.rbmk_heater.name=RBMK Fluid Heater +tile.rbmk_heatex.name=RBMK Heat Exchanger +tile.rbmk_loader.name=RBMK Steam Connector +tile.rbmk_moderator.name=RBMK Graphite Moderator +tile.rbmk_outgasser.name=RBMK Irradiation Channel +tile.rbmk_reflector.name=RBMK Tungsten Carbide Neutron Reflector +tile.rbmk_rod.name=RBMK Fuel Rod +tile.rbmk_rod_mod.name=RBMK Moderated Fuel Rod +tile.rbmk_rod_reasim.name=RBMK Fuel Rod (ReaSim) +tile.rbmk_rod_reasim_mod.name=RBMK Moderated Fuel Rod (ReaSim) +tile.rbmk_steam_inlet.name=RBMK ReaSim Water Inlet +tile.rbmk_steam_outlet.name=RBMK ReaSim Steam Outlet +tile.rbmk_storage.name=RBMK Storage Column +tile.reactor_computer.name=Reactor Control +tile.reactor_conductor.name=Reactor Boiler +tile.reactor_control.name=Control Rods +tile.reactor_ejector.name=Reactor Waste Ejector +tile.reactor_element.name=Reactor Chamber +tile.reactor_hatch.name=Reactor Access Hatch +tile.reactor_inserter.name=Reactor Fuel Inserter +tile.red_barrel.name=Explosive Barrel +tile.red_cable.name=Red Copper Cable +tile.red_cable_classic.name=Red Copper Cable (Classic) +tile.red_cable_paintable.name=Paintable Red Copper Cable +tile.red_connector.name=Electricity Connector +tile.red_pylon.name=Electricity Pole +tile.red_pylon_large.name=Large Electricity Pylon +tile.red_wire_coated.name=Coated Red Copper Cable +tile.reinforced_brick.name=Reinforced Stone +tile.reinforced_brick_stairs.name=Reinforced Stone Stairs +tile.reinforced_ducrete.name=Reinforced Ducrete +tile.reinforced_glass.name=Reinforced Glass +tile.reinforced_glass_pane.name=Reinforced Glass Pane +tile.reinforced_lamp_off.name=Reinforced Lamp +tile.reinforced_lamp_on.name=Reinforced Lamp +tile.reinforced_light.name=Reinforced Glowstone +tile.reinforced_sand.name=Reinforced Sandstone +tile.reinforced_stone.name=Dense Stone +tile.reinforced_stone_stairs.name=Dense Stone Stairs +tile.reinforced_laminate.name=Reinforced Laminate +tile.reinforced_laminate_pane.name=Reinforced Laminate Pane +tile.rejuvinator.name=Rejuvination Device +tile.residue.name=Cloud Residue +tile.safe.name=Safe +tile.sand_boron.name=Boron Sand +tile.sand_boron_layer.name=Boron Sand Layer +tile.sand_dirty.name=Oily Sand +tile.sand_dirty_red.name=Red Oily Sand +tile.sand_gold.name=Gold Sand +tile.sand_gold198.name=Gold-198 Sand +tile.sand_lead.name=Lead Sand +tile.sand_polonium.name=Polonium Sand +tile.sand_quartz.name=Quartz Sand +tile.sand_uranium.name=Uranium Sand +tile.sat_dock.name=Cargo Landing Pad +tile.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion (Deco Block) +tile.sat_laser.name=Orbital Death Ray (Deco Block) +tile.sat_mapper.name=Surface Mapping Satellite (Deco Block) +tile.sat_radar.name=Radar Survey Satellite (Deco Block) +tile.sat_resonator.name=Xenium Resonator Satellite (Deco Block) +tile.sat_scanner.name=Satellite with Depth-Resource Scanning Module (Deco Block) +tile.schrabidic_block.name=Schrabidic Acid +tile.seal_controller.name=Silo Hatch Opener +tile.seal_frame.name=Silo Hatch Frame +tile.seal_hatch.name=Silo Hatch +tile.sellafield.0.name=Sellafite +tile.sellafield.1.name=Hot Sellafite +tile.sellafield.2.name=Boiling Sellafite +tile.sellafield.3.name=Blazing Sellafite +tile.sellafield.4.name=Infernal Sellafite +tile.sellafield.5.name=Sellafite-Corium +tile.sellafield_slaked.name=Slaked Sellafite +tile.semtex.name=Semtex +tile.sliding_blast_door.name=Sliding Blast Door +tile.solar_mirror.name=Heliostat Mirror +tile.soyuz_capsule.name=Cargo Landing Capsule +tile.soyuz_launcher.name=Soyuz Launch Platform +tile.spikes.name=Spikes +tile.stalactite.asbestos.name=Asbestos Stalactite +tile.stalactite.sulfur.name=Sulfurous Stalactite +tile.stalagmite.asbestos.name=Asbestos Stalagmite +tile.stalagmite.sulfur.name=Sulfurous Stalagmite +tile.steel_beam.name=Steel Beam +tile.steel_corner.name=Steel Wall Corner +tile.steel_grate.name=Steel Grate +tile.steel_grate_wide.name=Item Grate +tile.steel_grate_wide.desc=Lets dropped items and XP fall through +tile.steel_poles.name=Steel Pole +tile.steel_roof.name=Flat Steel Roof +tile.steel_scaffold.name=Steel Scaffold +tile.steel_wall.name=Steel Wall +tile.stone_cracked.name=Cracked Stone +tile.stone_depth.name=Depth Rock +tile.stone_depth_nether.name=Nether Depth Rock +tile.stone_gneiss.name=Graphitic Schist +tile.stone_porous.name=Porous Stone +tile.stone_resource.asbestos.name=Chrysotile +tile.stone_resource.bauxite.name=Bauxite +tile.stone_resource.hematite.name=Hematite +tile.stone_resource.limestone.name=Limestone +tile.stone_resource.malachite.name=Malachite +tile.stone_resource.sulfur.name=Sulfurous Stone +tile.struct_iter_core.name=Fusion Reactor Core Component +tile.struct_launcher.name=Launch Pad Component Block +tile.struct_launcher_core.name=Compact Launcher Core Component +tile.struct_launcher_core_large.name=Launch Table Core Component +tile.struct_plasma_core.name=Plasma Heater Core Component +tile.struct_scaffold.name=Launch Pad Scaffold Block +tile.struct_soyuz_core.name=Soyuz Launcher Core Component +tile.struct_watz_core.name=Watz Powerplant Core Component +tile.substation.name=Substation +tile.sulfuric_acid_block.name=Sulfuric Acid +tile.taint.name=Taint +tile.taint_barrel.name=IMP Residue Barrel +tile.tape_recorder.name=Tape Recorder +tile.tektite.name=Tektite +tile.teleanchor.name=Teleportation Anchor +tile.tesla.name=Tesla Coil +tile.test_nuke.name=Test Nuke +tile.therm_endo.name=Endothermic Bomb +tile.therm_exo.name=Exothermic Bomb +tile.tile_lab.name=Laboratory Tiles +tile.tile_lab_broken.name=Broken Laboratory Tiles +tile.tile_lab_cracked.name=Cracked Laboratory Tiles +tile.tnt_ntm.name=Actual TNT +tile.toxic_block.name=Stereotypical Green Ooze +tile.transition_seal.name=Transition Seal +tile.turret_arty.name=Artillery Turret "Greg" +tile.turret_cheapo.name=Cheapo Gatling Sentry +tile.turret_chekhov.name=Heavy Machine Gun Turret "Chekhov's Gun" +tile.turret_cwis.name=Phalanx Mk-15 CIWS +tile.turret_flamer.name=Flamethrower Turret +tile.turret_friendly.name=Chaingun Turret "Mister Friendly" +tile.turret_fritz.name=Heavy Flamethrower Turret "Fritz" +tile.turret_heavy.name=Heavy Machine Gun Turret +tile.turret_himars.name=Rocket Artillery Turret "Henry" +tile.turret_howard.name=Goalkeeper Twin Chaingun CIWS "Howard" +tile.turret_howard_damaged.name=Goalkeeper Twin Chaingun CIWS "Methusalem" +tile.turret_jeremy.name=Autocannon Turret "Jeremy" +tile.turret_light.name=Light Machine Gun Turret +tile.turret_maxwell.name=High-Energy MASER Turret "Maxwell" +tile.turret_rocket.name=Rocket Turret +tile.turret_richard.name=Rocket Launcher Turret "Richard" +tile.turret_spitfire.name=Turret I have no name for right now [WIP] +tile.turret_sentry.name=Sentry Turret "Brown" +tile.turret_tau.name=Tauon Turret +tile.turret_tauon.name=XVL1456 Prototype Turret "Tauon" +tile.vacuum.name=Vacuum +tile.vault_door.name=Vault-Tec Blast Door +tile.vent_chlorine.name=Chlorine Vent +tile.vent_chlorine_seal.name=Chlorine Seal +tile.vent_cloud.name=Cloud Vent +tile.vent_pink_cloud.name=Pink Cloud Vent +tile.vinyl_tile.large.name=Large Vinyl Tile +tile.vinyl_tile.small.name=Small Vinyl Tiles +tile.vitrified_barrel.name=Vitrified Nuclear Waste Drum +tile.volcanic_lava_block.name=Volcanic Lava +tile.volcano_core.name=Volcano Core +tile.waste_earth.name=Dead Grass +tile.waste_leaves.name=Dead Leaves +tile.waste_log.name=Charred Log +tile.waste_mycelium.name=Glowing Mycelium +tile.waste_planks.name=Charred Wooden Planks +tile.waste_trinitite.name=Trinitite Ore +tile.waste_trinitite_red.name=Red Trinitite Ore +tile.watz.name=Watz Powerplant +tile.watz_conductor.name=Watz Electricity Port +tile.watz_control.name=Reinforced Control Rods +tile.watz_cooler.name=Watz Reactor Supercooler +tile.watz_core.name=Watz Reactor Control +tile.watz_element.name=Watz Reaction Chamber +tile.watz_end.name=Watz Reactor Stability Element +tile.watz_end_bolted.name=Watz Reactor Stability Element (Riveted) +tile.watz_hatch.name=Watz Reactor Access Hatch +tile.watz_pump.name=Watz Pressure Pump +tile.yellow_barrel.name=Radioactive Barrel +tile.zirnox_destroyed.name=Destroyed ZINROX + +trait.asbestos=Asbestos +trait.blinding=Blinding +trait.coal=Coal Dust +trait.digamma=Digamma Radiation +trait.drop=Dangerous Drop +trait.explosive=Flammable / Explosive +trait.furnace=Worth %s operations in nuclear furnace +trait.heat=Provides %s HEAT +trait.hlParticle=Particle Half-Life: %s +trait.hlPlayer=Player Half-Life: %s +trait.hot=Pyrophoric / Hot +trait.hydro=Hydroreactive +trait.radioactive=Radioactive +trait.radResistance=Radiation resistance: %s + +trait.rbmk.coreTemp=Core temp: %s +trait.rbmk.depletion=Depletion: %s +trait.rbmk.diffusion=Diffusion: %s +trait.rbmk.fluxFunc=Flux function: %s +trait.rbmk.funcType=Function type: %s +trait.rbmk.heat=Heat per flux: %s +trait.rbmk.melt=Melting point: %s +trait.rbmk.neutron.any=All Neutrons +trait.rbmk.neutron.fast=Fast Neutrons +trait.rbmk.neutron.slow=Slow Neutrons +trait.rbmk.skinTemp=Skin temp: %s +trait.rbmk.source=Self-igniting +trait.rbmk.splitsInto=Splits into: %s +trait.rbmk.splitsWith=Splits with: %s +trait.rbmk.xenon=Xenon poison: %s +trait.rbmk.xenonBurn=Xenon burn function: %s +trait.rbmk.xenonGen=Xenon gen function: %s + +trait.rbmx.coreTemp=Core entropy: %s +trait.rbmx.depletion=Crustyness: %s +trait.rbmx.diffusion=Flow: %s +trait.rbmx.fluxFunc=Doom function: %s +trait.rbmx.funcType=Function specification: %s +trait.rbmx.heat=Crust per tick at full power: %s +trait.rbmx.melt=Crush depth: %s +trait.rbmk.neutron.any.x=All non-euclidean shapes +trait.rbmk.neutron.fast.x=Elliptic non-euclidean shapes +trait.rbmk.neutron.slow.x=Hyperbolic non-euclidean shapes +trait.rbmx.skinTemp=Skin entropy: %s +trait.rbmx.source=Self-combusting +trait.rbmx.splitsInto=Departs to: %s +trait.rbmx.splitsWith=Arrives from: %s +trait.rbmx.xenon=Lead poison: %s +trait.rbmx.xenonBurn=Lead destruction function: %s +trait.rbmx.xenonGen=Lead creation function: %s + +trait.tile.cluster=Drops only when broken by a player +trait.tile.depth=Can only be destroyed by explosions + +tool.ability.centrifuge=Auto-Centrifuge +tool.ability.crystallizer=Auto-Crystallizer +tool.ability.explosion=Explosion +tool.ability.hammer=AoE +tool.ability.luck=Fortune +tool.ability.mercury=Mercury Touch +tool.ability.midas=Midas Touch +tool.ability.recursion=Vein Miner +tool.ability.shredder=Auto-Shredder +tool.ability.silktouch=Silk Touch +tool.ability.smelter=Auto-Smelter + +turret.animals=Target Passive: %s +turret.arty.artillery=§eArtillery Mode$Grace: 250m$Range: 3,000m +turret.arty.cannon=§eCannon Mode$Grace: 32m$Range: 250m +turret.arty.manual=§eManual Mode$Range: 3,000m +turret.machines=Target Machines: %s +turret.mobs=Target Mobs: %s +turret.none=None +turret.off=OFF +turret.on=ON +turret.players=Target Players: %s + +wavelengths.name.ir=Infrared +wavelengths.name.visible=Visible Light +wavelengths.name.uv=Ultraviolet +wavelengths.name.gamma=Gamma +wavelengths.name.drx=Digamma +wavelengths.waveRange.ir=780nm-1mm +wavelengths.waveRange.visible=400nm-780nm +wavelengths.waveRange.uv=100nm-400nm +wavelengths.waveRange.gamma=<100pm +wavelengths.waveRange.drx=1916169 planck lengths + +weapon.ability.beheader=Decapitator +weapon.ability.bobble=Luck of the Collector +# Should rhyme with the translation for "chainsaw" +weapon.ability.chainsaw=Painsaw +weapon.ability.fire=Flaming +weapon.ability.radiation=Radioactive Blade +weapon.ability.phosphorus=Phosphorus Tip +weapon.ability.stun=Stunning +weapon.ability.vampire=Vampire +weapon.elecGun.modeChange=Firing Mode Changed to: +weapon.elecGun.glass_cannon.radio=Radio Waves +weapon.elecGun.glass_cannon.micro=Microwaves +weapon.elecGun.glass_cannon.ir=Infrared +weapon.elecGun.glass_cannon.visible=Visible Light +weapon.elecGun.glass_cannon.uv=Ultraviolet Light +weapon.elecGun.glass_cannon.xray=X-rays +weapon.elecGun.glass_cannon.gamma=Gamma rays \ No newline at end of file diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 502127659..c65b70448 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -2840,6 +2840,9 @@ item.plate_titanium.name=ТОтаМПвая пластОМа item.plate_aluminium.name=АлюЌОМОевая пластОМа item.wire_red_copper.name=ПрПвПЎ Оз красМПй ЌеЎО item.neutron_reflector.name=Отражатель МейтрПМПв +item.night_vision.name=ОчкО МПчМПгП зреМОя +item.night_vision.description.item=Даёт МПчМПе зреМОе (МужЎается в пПлМПЌ электрОческПЌ сете) +item.night_vision.description.in_armor=%s (Ўаёт МПчМПе зреМОе) item.nugget_beryllium.name=БерОллОевый саЌПрПЎПк item.nugget_bismuth.name=СаЌПрПЎПк вОсЌута item.nugget_tantalium.name=СаЌПрПЎПк таМтала @@ -4163,6 +4166,7 @@ item.grenade_strong.name=УсПвершеМствПваММая граМата item.grenade_frag.name=ОскПлПчМая граМата item.grenade_fire.name=ОгМеММая ПскПлПчМая граМата item.grenade_shrapnel.name=ГраМата сП шрапМелью +item.grenate_cats.name=ГраМата с кПтаЌО item.grenade_cluster.name=КластерМая бПЌба item.grenade_flare.name=СОгМальМая ракета item.grenade_electric.name=ЭлектрПграМата diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 643e529db..4bd5871e0 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -8,7 +8,7 @@ achievement.breeding.desc=谢谢䜠们䞊垝保䜑䜠们䞊垝保䜑矎利 achievement.breeding=反话 achievement.bismuth.desc=还记埗有人抱怚了䞀䞪月吗我愿意。 achievement.bismuth=铋 -achievement.blastFurnace.desc=他们䞺制造探险家1号去打捞了䞀艘沉没的无畏舰。 +achievement.blastFurnace.desc=他们䞺制造探险者1号去打捞了䞀艘沉没的无畏舰。 achievement.blastFurnace=煀和铁 achievement.bossCreeper.desc=栞爆爬行者? 那是䞪什么玩意?! achievement.bossCreeper=四条腿的行走栞匹 @@ -56,6 +56,8 @@ achievement.fusion.desc=氘栞、海卫䞀䞎胜量的舞蹈。 achievement.fusion=聚合 achievement.gasCent.desc=莫铀讚厌他 achievement.gasCent=铟匏 +achievement.goFish.desc=航海十字架 +achievement.goFish=去钓鱌 achievement.hidden.desc=䜿甚䞀节坠萜的蜊厢杀死䞀只污染苊力怕 achievement.hidden=隐藏目圕 achievement.horizonsBonus.desc=诎实话䜠到底怎么了 @@ -132,6 +134,7 @@ armor.damageModifier=修正 %s 对 %s 的䌀害 armor.dash=给予 %s 冲刺 armor.electricJetpack=犻子喷射背包 armor.explosionImmune=免疫陀爆炞䌀害倖的䞀切䌀害 +armor.fasterReload=快速装填 armor.fastFall=快速降萜 armor.fireproof=防火 armor.fullSetBonus=党套效果: @@ -142,10 +145,12 @@ armor.gravity=重力修正 %s armor.hardLanding=硬着陆 armor.ignoreLimit=防埡倌䞍受防埡䞊限的圱响 armor.modifier=䌀害修正 %s +armor.moreAmmo=曎倚匹药 armor.nullDamage=免疫 %s 䌀害 armor.projectileProtection=免疫 %s 的匹射物䌀害 armor.rocketBoots=火箭靎 armor.sprintBoost=冲刺蟅助加速 +armor.stepSize=步长%s armor.thermal=热成像 armor.threshold=䌀害阈倌 %s armor.vats=敌对生物HUD @@ -308,60 +313,118 @@ book.starter.page18=v?r只是䞀䞪被困圚"䌠声倎像"的§o《䞀生䞀次 #book.rbmk.page15=The §lfuel§r's reactivity is based on multiple factors. The main ones are the §lenrichment§r, §lxenon poison§r and the amount of incoming §lneutrons§r. Xenon builds up when the fuel receives few neutrons and burns away during normal operation. The effectivity of neutrons depends on the type, most fuels §lsplit best with slow neutrons§r. #book.rbmk.title16=Meltdown #book.rbmk.page16=§4§lAvoid. -book_lore.author=By %s +book_lore.author=由%s book_lore.test.name=测试 book_lore.test.author=那䞪家䌙 +book_lore.test.page.0=>hello anons before i begin let me clarify that i'm not gay. >Be me >This night >18 > At hanging out with my best friend with my parents gone for a few days >We've been best friends for a year now >Been drinking a bit and playing lots of video games and ordered a pizza >We were having a blast >At a certain point in the night like around 9:00 he makes a really funny joke that I don't remember but I know that it made us both laugh really hard > With out thinking I brush my right hand through his semi-curly black hair and call him a funny boy >He blushes >I realize I'm feeling flustered >We're kinda close >All of the sudden he kisses me and for some reason I kiss him back >We make love >Cuddle together and fall asleep >Wake up in the middle of the night with his head snuggled up on my chest and neck area >It feels nice but I'm not a homosexual book_lore.test.page.1=>䜠奜圚我匀始之前让我柄枅我䞍是同性恋。>做我>今倩晚䞊>18>和我最奜的朋友和我的父母出去玩了几倩>我们已经是最奜的朋友䞀幎了>喝了点酒玩了埈倚电子枞戏还点了䞀仜披萚>我们玩埗埈匀心>圚晚䞊的某䞪时候比劂9点巊右他匀了䞀䞪非垞有趣的玩笑我䞍记埗了䜆我知道这让我们俩郜笑埗埈厉害>没有我想我甚右手摞了摞他那半卷曲的黑发然后叫他䞀䞪有趣的男孩>他脞红了>我意识到我埈慌匠>我们有点亲密>突然他吻了我出于某种原因我又吻了他>我们做爱>拥抱圚䞀起睡着了>半倜醒来时他的倎莎圚我的胞郚和颈郚>感觉埈奜䜆我䞍是同性恋 book_lore.test.page.2=他圚我怀里睡着时我正圚打字。我怎么才胜让我最奜的朋友倱望呢我䞍想成䞺[猖蟑]/b/ book_lore.test.page.3=3 book_lore.test.page.4=4 -book_lore.test.page.5=5 book_lore.book_iodine.name=笔记 book_lore.book_iodine.author=戎倫 +book_lore.book_iodine.page.0=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: book_lore.book_iodine.page.1=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: book_lore.book_iodine.page.2=apparently the morons from R&D discovered a compound that is mostly inorganic, pretty much like a toxin in nature, but get this: the dying cells will reproduce said toxin and excrete it through the skin, creating an aerosol that is highly contagious. -book_lore.book_iodine.page.3=it's just like a virus, but not a virus. the composition is weird, you can mix it in any household bottle but you do have to get the order right. the doc told me that the first ingredient which is just powdered iodine crystals goes into slot %d book_lore.book_phosphorous.name=笔记 book_lore.book_phosphorous.author=戎倫 +book_lore.book_phosphorous.page.0=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second book_lore.book_phosphorous.page.1=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second -book_lore.book_phosphorous.page.2=ingredient is red phosphorous, whihc has to be mixed into slot %d book_lore.book_dust.name=笔记 book_lore.book_dust.author=戎倫 +book_lore.book_dust.page.0=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not book_lore.book_dust.page.1=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not book_lore.book_dust.page.2=that he has much blood left to begin with. one of the R&D morons slipped some more info into last week's circular, they call their little concoction \"MKU\" whatever that means, and that it contains actual household lint. can you believe that? one of the most -book_lore.book_dust.page.3=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d book_lore.book_mercury.name=笔记 book_lore.book_mercury.author=戎倫 +book_lore.book_mercury.page.0=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being book_lore.book_mercury.page.1=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being -book_lore.book_mercury.page.2=replicated by the body? whatever, the mercury goes into slot %d book_lore.book_flower.name=笔记 book_lore.book_flower.author=戎倫 +book_lore.book_flower.page.0=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case, book_lore.book_flower.page.1=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case, -book_lore.book_flower.page.2=it does not work with other flowers. the morning glory goes into slot %d book_lore.book_syringe.name=笔记 book_lore.book_syringe.author=戎倫 +book_lore.book_syringe.page.0=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal book_lore.book_syringe.page.1=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal -book_lore.book_syringe.page.2=syringe goes into slot %d book_lore.resignation_note.name=蟞职信 book_lore.resignation_note.author=科斯马 +book_lore.resignation_note.page.0=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and book_lore.resignation_note.page.1=管理层昚倩又对我们的郚闚进行裁员了。那矀癜痎芁怪只胜怪他们自己我郜䞍知道他们圚那场惚莥后还圚期埅什么。到底是谁他劈泄露了那种皋床的信息 book_lore.resignation_note.page.2=我们损倱了几癟䞇而䞔现圚倱䞚的还是爷。老子垌望䜠们这垮混蛋最后胜从䜠们的䞀堆问题䞭孊到点教训然后给爷滚去自闭。 -book_lore.resignation_note.page.3=我呚五䞍回来了。工资寄过来就行。 book_lore.memo_stocks.name=公叞内郚倇忘圕 -book_lore.memo_stocks.page.1=投资者报告 - $$最新的季床报告䞭提䟛的数据存圚䞀些明星的差匂。莢政郚所䜜出䞀些调敎是明智的因歀䞍必有任䜕担忧。 +book_lore.memo_stocks.page.0=投资者关系 - $ $ 最新季床报告提䟛的数据存圚䞀些明星差匂。莢务郚闚做出䞀些调敎是谚慎的所以䞍必有任䜕担忧。 book_lore.memo_schrab_gsa.name=内郚倇忘圕 +book_lore.memo_schrab_gsa.page.0=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum book_lore.memo_schrab_gsa.page.1=合同管理记圕 - 法务郚圚䞎矎囜囜防郚后勀局的谈刀䞭取埗了突砎。他们批准了450亿的联邊采莭服务总眲投资资金甚于匂变金属的采莭䞎研究。 -book_lore.memo_schrab_gsa.page.2=就目前预期来看这将至少产生40%的利涊曎䞍必诎以后行劚所产生的利涊同时这将䜿我们未来有机䌚筟订曎倚合同。鉎于歀事的保密性莚所有莢政证据郜将䞺机密级别 book_lore.memo_schrab_rd.name=内郚倇忘圕 +book_lore.memo_schrab_rd.page.0=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. book_lore.memo_schrab_rd.page.1=研发 - 目前我们䞻芁生产方法是䜿甚新型粒子加速噚。然而䞎产出量盞比胜源成本高埗惊人。 book_lore.memo_schrab_rd.page.2=然而Schrabauer博士发现了䞀种党新的盞互䜜甚——暂称䞺“奇匂蜻子振荡”——该䜜甚可以星著降䜎生产成本。通过䞀䞪目前未被完党理解的的过皋提䟛的电子被䞀种奇特的“魔力”蜬化䞺极高胜量的光子。 book_lore.memo_schrab_rd.page.3=这是讞倚已明确的粒子蜬换定埋的极端䟋倖。䜆初步实验证明这些莚子先蜬变䞺䞊䞋倞克最终圢成了匂变金属。奇怪的是原型机䞭需芁钚䞎少量匂变金属合金化所埗到的合金。 -book_lore.memo_schrab_rd.page.4=陀歀之倖还需芁䞀䞪特殊的电容噚甚来抵消掉倚䜙的正电荷。 book_lore.memo_schrab_nuke.name=研究报告 book_lore.memo_schrab_nuke.author=Schrabauer博士 +book_lore.memo_schrab_nuke.page.0=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. book_lore.memo_schrab_nuke.page.1=最近的调查䜿我们了解了栞爆炞对材料造成的圱响。倚亏倖界给我们的赠欟我们*意倖地*测试了铀盎接合成匂变金属的理论。 book_lore.memo_schrab_nuke.page.2=而歀前我们只圚回旋加速噚䞭制䜜出匂变金属。䜆这次我们圚对Everwerpen的地䞋拍摄䞭圚该地点的铀矿石䞭发现了埮量的匂变金属。其附近所有的纯金属铀则郜发生了裂变。 -book_lore.memo_schrab_nuke.page.3=因歀劂果有足借倚的铀矿石集䞭圚栞匹呚囎甚至可胜只需芁䞀䞪富含裂变物莚废料的脏匹就有可胜制造出莚量倧到可以被盎接收集的匂变金属。 +book_lore.bf_bomb_1.name=私人笔记 +book_lore.bf_bomb_1.author=M. 波特 +book_lore.bf_bomb_1.page.0=Took long enough, but my transfer was accepted. Those new grads were already hard to handle, let alone all the unprofessionalism of the lead. $ Not all good news - this lab was withholding further detail, and I didn't need more chaos over another magic new discovery. +book_lore.bf_bomb_1.page.1=Of course that was the case. The alumni had their doubts (surprising, considering how bright-eyed they were), but my only... competent? colleague actually got his hands on the primer hand-out. Must have more connections than I thought. His memo is discouraging: +book_lore.bf_bomb_1.page.2=apparently, there's yet ANOTHER miracle material that they prodded out of some concoction of antimatter and a fringe isotope. The brochure calls it "SWIRLMAT" - hell if I know - and that's it. No wonder they wanted a theoretical physicist, +book_lore.bf_bomb_1.page.3=they don't even know what it is yet. Either way, practically any job would be better than my old position, so I can't complain much about sketchiness. +book_lore.bf_bomb_2.name=私人笔记 +book_lore.bf_bomb_2.author=M. 波特 +book_lore.bf_bomb_2.page.0=Despite the absence of information in that primer, I still had some hope they knew a bit more. Not at all. Every other senior researcher has a blind faith in this material; their propositions were practically biblical. I was near speechless. +book_lore.bf_bomb_2.page.1=And yet I can't even blame them. Swirlmat makes no goddamn sense - it is completely unlike any other substance I've seen before. Its appearance was near frightening, a literal mass of swirling colors, with darker lines permeating through the neon green surface. +book_lore.bf_bomb_2.page.2=Even worse, this thing is an energy source. The existence of our sample is a violation of ALARA: the lab was vacated when it arrived, and the only person brave enough (one Dr. Melfyn) donned a level A hazmat just to carry it 20 meters. +book_lore.bf_bomb_2.page.3=The empirical data isn't better, as we're breaking the first law of thermodynamics with how much energy it radiates. Being anywhere near that thing - even behind a meter of lead - was terrifying. We sprinted out of the chamber upon conclusion of the spectroscopy +book_lore.bf_bomb_2.page.4=and we got nothing new out of it. Those idiots in the science team, god, did not even waver after all that. Sitting through those "discussions" was horrible; that quack of a head researcher even rumored that the test ban would be lifted, that we could be +book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison. + + +book_lore.bf_bomb_3.name=私人笔记 +book_lore.bf_bomb_3.author=M. 波特 +book_lore.bf_bomb_3.page.0=The team and I have made some breakthroughs. Emphasis on the separation - isolating myself from the more devout has made working there so much more bearable. While we still have no idea about the actual properties of balefire (it's difficult to analyze +book_lore.bf_bomb_3.page.1=a sample that fries your equipment) its interactions with other matter has proved fruitful. Notably, they synthesized a "gaseous" form: Andrew, of all people, informed me that it was really a colloid consisting of microscopic balefire particles, suspended in some +book_lore.bf_bomb_3.page.2=noble gas. Each particle is enveloped by a positively-charged 'bubble' of ionized gas, preventing it from settling. Who could've guessed that fatal gamma radiation had a benefit? Not me. $ I'm choosing not to think about how they transformed the sample into +book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off. + + +book_lore.bf_bomb_3.page.4=He decided to get "dirty" by letting a cell of our new colloid interact directly with some very expensive antimatter: the resulting explosion turned the table it was on into a piece of radiation-bleached slag, carved a near-perfect hemisphere through +book_lore.bf_bomb_3.page.5=the top, and gave the head a healthy dose of ARS. I guess we know how to make it explode now, but god, some people... +book_lore.bf_bomb_4.name=私人笔记 +book_lore.bf_bomb_4.author=M. 波特 +book_lore.bf_bomb_4.page.0=I just can't escape my old work. They're the only place that's hiring despite all this godforsaken turmoil, but I'm not going back into that hole. $ They only tempted me because I need out, fast. Remember that atmospheric testing treaty we withdrew from a week ago? +book_lore.bf_bomb_4.page.1=Well, the dipshit in charge of our lab got something right for once. The denunciation came with a flurry of new "scientists" joining, just so we could weaponize balefire. The lack of critical thought here is honestly baffling - bless him, Andrew even jumped ship the +book_lore.bf_bomb_4.page.2=second the first fucking BOMB DESIGN was drafted. That ass Melfyn looked so happy with his little mechanism - perhaps he got brainworms from carrying that sample? - which involved some stupid shit using the solidified, base balefire and an HV +book_lore.bf_bomb_4.page.3=battery. $ Apparently, the form matters for energy output and activation method or whatever, kind of like uranium versus plutonium in regular nukes, but the end result is an initial shock starting the explosion. I find it funny, hilarious even. +book_lore.bf_bomb_4.page.4=All of them place such emphasis on the activation; they ignore the actual mechanism of it all because they don't have a single clue how it works! It may as well be magic at this point, and yet they're still trying to twist and bend it - just for more weapons of war. +book_lore.bf_bomb_5.name=私人笔记 +book_lore.bf_bomb_5.author=M. 波特 +book_lore.bf_bomb_5.page.0=I just... can't come to grips with it, even days after. It was a foregone conclusion, really, with how flippant the science team was with safety. $ $ Doctor Melfyn, M.S., is gone. Dead, maybe. I saw it happen before my own eyes, in their test chamber. +book_lore.bf_bomb_5.page.1=We had just gotten another batch of pure balefire, and he had recovered electrical equipment and an energy source to test his proposal. I don't know what caused it (was the power on? had he begun too soon?), but it seemingly progressed in agonizingly slow motion, +book_lore.bf_bomb_5.page.2=as the green-tinted light consumed the table, the battery, and Dr. Melfyn standing only a meter away. Even when the table had degraded into a pool of broiling metal on the floor, he did not burn. I don't know what I saw in his eyes... $ $ Terror, or awe +book_lore.bf_bomb_5.page.3=over his continued survival, maybe? Whatever our "miracle" material was, it didn't care. With a bright blaze of light, he disappeared in the next moment. Was he evaporated? incinerated? annihilated? sent to fucking hell itself, I don't know anymore! +book_lore.bf_bomb_5.page.4=The head researcher sickens me. Said we could be more careful, keep trucking, whatever other morale-improving filth he spewed. That dipshit won't ever figure out that playing with fire will get you burned. $ I didn't bother +book_lore.bf_bomb_5.page.5=resigning, I just grabbed my shit and ran for the hills. Not like it matters, anyway; considering the lack of calls, and the mushroom cloud that rose over my (now former) workplace, they've either blown everything up or entered full-on military jurisdiction. +book_lore.bf_bomb_5.page.6=There's a vital distinction to be made between dissection and VIVISECTION, one which was clearly lost on them. They can dissect metal or atoms as much as they like, but tearing into, vivisecting reality itself is only going to end in more Dr. Melfyns. Who knows! +book_lore.bf_bomb_5.page.7=The government wants to put this shit into bombs after all, maybe we'll see a couple more wars, couple more million resigned to a fate worse than death. They can't hide this forever. $ $ I don't care. Not anymore. Please, god, let me go back +book_lore.bf_bomb_5.page.8=to actual science. $ $ Goddamnit, Mae, get ahold of yourself... +book_lore.beacon.name=信号信标诎明乊 +book_lore.beacon.author=Flim Flam工䞚 +book_lore.beacon.page.0=感谢悚莭买Mk.2照明信号信标版本1.3这本小册子将简芁介绍信标的操䜜及其内郚工䜜原理。 +book_lore.beacon.page.1=第1章建筑$每䞪单元由四䞪䞻芁郚分组成控制电路、灯笌、雟灯和容纳其他郚分的倖壳。有关䞻电路的诊细诎明请 +book_lore.beacon.page.2=灯笌由聚碳酞酯倖壳组成倖壳内有䞀䞪标准200mm的双色250瓊區玠灯泡因歀灯泡可以从我们的商店订莭。 +book_lore.beacon.page.3=䞍建议䜿甚第䞉方灯泡因䞺我们无法确保安党操䜜。倖壳由䞓闚的镀锌䞍锈钢制成具有耐甚性。 +book_lore.beacon.page.4=第2章灯笌$灯笌的䞻芁甚途是圚恶劣的倩气条件䞋提䟛照明䟿于绎技以及状态指瀺噚。劂果匀机自检POST倱莥指瀺灯将 +book_lore.beacon.page.5=亮起红色吊则就䌚亮起绿色。请泚意颜色可胜因曎换灯泡的䞍同而有所䞍同。 +book_lore.beacon.page.6=第3章雟灯$雟灯是信标的䞻芁通信讟倇。该信标被讟计甚于对等P2P通信以及消息广播。 +book_lore.beacon.page.7=第4章对等$有关通信的诊细信息请参阅通信手册。建立P2P连接的简芁介绍劂䞋銖先信标必须给出“START connection”信号 +book_lore.beacon.page.8=是单䞀的长音。所有可甚的对等端也应䜿甚䞀䞪长音进行响应由接近床指定的顺序以及手册“响应连接”䞀节䞭抂述的通信指南 +book_lore.beacon.page.9=䞀旊所需对等端做出响应则给出“ACCEPT CONNECTION”信号即䞀䞪长音然后对等端也将甚䞀䞪长音调进行响应。之后的所有通信郜必须䜿甚预先协商的信号来进行 +book_lore.beacon.page.10=最垞甚的是FAR-5M标准。劂果没有协商标准沟通将立即结束起到“ping”的䜜甚。劂果通信继续可以䜿甚及䞀䞪长单音“END connection”结束连接。 +book_lore.beacon.page.11=第5章保修$[页面故意留空] cannery.f1=[按F1键获取垮助] cannery.centrifuge=气䜓犻心机 cannery.centrifuge.0=气䜓犻心机可以䜿甚通甚流䜓管道䌠蟓流䜓。 @@ -392,7 +455,7 @@ cannery.firebox.0=燃烧宀通过燃烧可燃物品产生热量。 cannery.firebox.1=它可以燃烧任䜕可燃物品䜆曎高莚量的燃料劂煀、焊炭和固䜓燃料燃烧时闎曎长枩床曎高。 cannery.firebox.2=燃烧宀顶郚的铜觊点可以䌠富热量。底郚具有盞同觊点的机噚可以通过攟眮圚燃烧宀顶郚来接收热量。 cannery.firebox.3=劂果热量没有甚完䞔热量猓冲噚变满燃烧宀将暂停运行以防止燃料浪莹。 -cannery.firebox.4=䞀种这样的机噚是斯特林发劚机它将热量盎接蜬化䞺胜量。 +cannery.firebox.4=䞀种这样的机噚是斯特林发电机它将热量盎接蜬化䞺胜量。 cannery.foundryChannel=链造通道 cannery.foundryChannel.0=铞造通道甚于将熔融材料从坩埚或傚眐蟓送到暡具䞭。 cannery.foundryChannel.1=通道可以通过从顶郚通过出口或盎接连接坩埚或从其他通道的䟧面借倒来接收材料。 @@ -410,7 +473,7 @@ cannery.silex.6=陀了䟧面的䞀䞪连接口之倖底郚还有第䞉䞪隐 cannery.silex.7=每䞪配方郜需芁特定的激光类型。䜿甚比所需类型曎区的激光将曎快地倄理项目。 cannery.silex.8=䞀台FEL最倚可以䞺5台SILEX䟛胜。每䞪SILEX之闎必须闎隔䞀䞪方块。 cannery.stirling=斯特林发电机 -cannery.stirling.0=斯特林发劚机䜿甚来自倖郚的热胜来产生胜量。 +cannery.stirling.0=斯特林发电机䜿甚来自倖郚的热胜来产生胜量。 cannery.stirling.1=它需芁攟眮圚发热机噚的顶郚劂燃烧宀。 cannery.stirling.2=然而它可以利甚的热量有限过旋蜬可胜富臎灟隟性故障。 cannery.stirling.3=升级版可以圚䞍损坏的情况䞋承受曎倚热量。 @@ -432,6 +495,8 @@ chem.BALEFIRE=野火火箭燃料混合 chem.BP_BIOFUEL=生物燃料酯化 chem.BP_BIOGAS=沌气生产 chem.C4=C-4合成 +chem.CC_CENTRIFUGE=氯方解石分犻 +chem.CC_ELECTROLYSIS=氯化钙电解 chem.CC_HEATING=高级煀液化 chem.CC_HEAVY=初级煀液化 chem.CC_I=区化煀液化 @@ -483,6 +548,7 @@ chem.NITAN=NITAN牌超级燃料混合 chem.NITRIC_ACID=硝酞生产 chem.OIL_SAND=沥青砂提取 chem.OSMIRIDIUM_DEATH=锇酞溶液生产 +chem.PC_ELECTROLYSIS=氯化钟电解 chem.PEROXIDE=过氧化氢生产 chem.PET=PET合成 chem.PETROIL_LEADED=含铅石油混合 @@ -515,6 +581,7 @@ chem.SULFURIC_ACID=硫酞生产 chem.TATB=TATB合成 chem.TEL=四乙基铅混合 chem.TEST=测试 +chem.THORIUM_SALT=钍盐富集 chem.TNT=TNT合成 chem.UF6=六氟化铀生产 chem.VIT_GAS=气态栞废料玻璃化 @@ -522,12 +589,18 @@ chem.VIT_LIQUID=液态栞废料玻璃化 chem.XENON=林執埪环制氙 chem.XENON_OXY=增区林執埪环制氙 chem.YELLOWCAKE=黄饌生产 +commands.satellite.no_satellite=未扟到䜿甚歀频率的卫星 +commands.satellite.not_a_satellite=持有的物品䞍是卫星 +commands.satellite.satellite_descended=卫星成功降萜。 +commands.satellite.satellite_orbited=卫星发射。 +commands.satellite.should_be_run_as_player=歀呜什应该由玩家运行 container.amsBase=AMS基座(装饰) container.amsEmitter=AMS发射极(装饰) container.amsLimiter=AMS皳胜噚(装饰) container.anvil=ç § container.arcFurnace=电匧炉 container.armorTable=装甲改装台 +container.ashpit=傚灰槜 container.assembler=装配机 container.autocrafter=自劚工䜜台 container.barrel=æ¡¶ @@ -547,6 +620,7 @@ container.craneUnboxer=蟓送垊解包机 container.crateDesh=Deshç®± container.crateIron=铁箱 container.crateSteel=钢箱 +container.crateTemplate=暡板箱 container.crateTungsten=é’šç®± container.crystallizer=矿物酞化噚 container.cyclotron=回旋加速噚 @@ -557,6 +631,10 @@ container.dfcReceiver=DFC接收噚 container.dfcStabilizer=DFC皳定噚 container.diFurnace=高炉 container.diFurnaceRTG=栞高炉 +container.droneCrate=运蟓无人机坞 +container.droneDock=船坞 +container.droneProvider=提䟛 +container.droneRequester=请求 container.electricFurnace=电炉 container.epress=电劚锻压机 container.factoryAdvanced=高级工厂 @@ -586,10 +664,13 @@ container.leadBox=安党盒 container.machineBoiler=锅炉 container.machineCMB=CMB炌钢炉 container.machineCoal=火力发电机 +container.machineCoker=焊化装眮 +container.machineCompressor=压猩机 container.machineCrucible=坩埚 container.machineDiesel=柎油发电机 container.machineElectricBoiler=电锅炉 -container.machineFEL=FEL自由电子激光噚 +container.machineElectrolyser=电解机 +container.machineFEL=FEL container.machineITER=聚变反应堆 container.machineLargeTurbine=工䞚汜蜮机 container.machineLiquefactor=液化机 @@ -597,7 +678,7 @@ container.machineMixer=工䞚搅拌机 container.machineRefinery=炌油厂 container.machineSelenium=星型发劚机 container.machineShredder=粉碎机 -container.machineSILEX=SILEX激光同䜍玠分犻宀 +container.machineSILEX=激光同䜍玠分犻宀 container.machineSolidifier=固化机 container.machineTurbine=汜蜮机 container.machineTurbofan=涡扇发劚机 @@ -646,6 +727,7 @@ container.reactorResearch=研究型反应堆 container.reix=Rei-X䞻机 container.rtg=攟射性同䜍玠发电机 container.rtgFurnace=攟射性同䜍玠热力炉[RTG] +container.rttyCounter=红石无线项目计数噚 container.rttyReceiver=无线红石接收噚 container.rttySender=无线红石发射噚 container.safe=保险箱 @@ -657,6 +739,7 @@ container.soyuzLauncher=联盟号发射平台 container.storageDrum=栞废料倄理桶 container.teleLinker=炮塔ID管理 container.teleporter=䌠送机 +container.trainTram=平板蜜莧电蜊 container.turbinegas=联合埪环燃气蜮机 container.turretArty=重炮炮塔“栌雷栌” container.turretChekhov=重机枪炮塔“契诃倫的枪” @@ -802,6 +885,7 @@ desc.item.ammo.neu_fun=* 党家其乐无穷 desc.item.ammo.neu_heavy_metal=* 重金属 desc.item.ammo.neu_homing=* 远螪 desc.item.ammo.neu_jolt=* 震荡 +desc.item.ammo.neu_leadburster=* 附着圚衚面并喷射子匹 desc.item.ammo.neu_less_bouncy=* 匹性曎小 desc.item.ammo.neu_maskman_flechette=* 曳光匹同时匕发䞀场莫铀飞镖匹风暎 desc.item.ammo.neu_maskman_meteorite=* 高䌀害同时召唀小陚石 @@ -873,12 +957,15 @@ desc.item.gun.lore=查看深入的知识 desc.item.gun.loreFunc=查看深入功胜 desc.item.gun.manufacturer=制造商: %s desc.item.gun.name=名称: %s +desc.item.gun.pellets=匹䞞数%s-%s desc.item.gun.penetration=装甲穿透倌: %s desc.item.kitArmor=装甲将被新的装倇取代。 desc.item.kitHaz=装甲将被防技服取代。 desc.item.kitPack=真䟿宜 desc.item.kitPool=请圚打匀前枅空背包库存 -desc.item.pileRod=§e䜿甚钻孔石墚插入$§E䜿甚螺䞝刀拔出$ +desc.item.pileRod=§e䜿甚钻孔石墚插入$§E䜿甚螺䞝刀拔出$ + + desc.item.rtgDecay=衰变䞺%s desc.item.rtgHeat=功率级别%s desc.item.storage.capacity=容量 %s%%s @@ -906,14 +993,24 @@ digamma.title=玩家F-迪䌜马蟐射自检噚 entity.entity_cyber_crab.name=赛博螃蟹 entity.entity_elder_one.name=䞊叀鞭神 entity.entity_fucc_a_ducc.name=鞭子 +entity.entity_glyphid.name=匂虫 +entity.entity_glyphid_behemoth.name=巚兜匂虫 +entity.entity_glyphid_blaster.name=爆砎匂虫 +entity.entity_glyphid_bombardier.name=投匹手匂虫 +entity.entity_glyphid_brawler.name=狂战士匂虫 +entity.entity_glyphid_brenda.name=垃䌊蟟 +entity.entity_glyphid_nuclear.name=倧䞪子区森 +entity.entity_glyphid_scout.name=䟊察匂虫 entity.entity_ntm_fbi.name=FBI探员 entity.entity_ntm_radiation_blaze.name=栞融元玠 entity.hbm.entity_ntm_ufo.name=火星入䟵者飞船 entity.entity_mob_hunter_chopper.name=猎人盎升机 entity.entity_mob_mask_man.name=面具人 +entity.entity_mob_gold_creeper.name=黄金爬行者 entity.entity_mob_nuclear_creeper.name=栞爆爬行者 entity.entity_mob_phosgene_creeper.name=光气爬行者 entity.entity_mob_tainted_creeper.name=污染爬行者 +entity.entity_mob_volatile_creeper.name=䞍皳定爬行者 entity.entity_taint_crab.name=污染螃蟹 entity.entity_tesla_crab.name=磁暎螃蟹 entity.hbm.entity_balls_o_tron.name=机械蠕虫 @@ -921,6 +1018,11 @@ entity.hbm.entity_balls_o_tron_seg.name=机械蠕虫 entity.hbm.entity_bullet.name=子匹 entity.hbm.entity_rocket.name=火箭匹 entity.hbm.entity_schrabnel.name=Schrabnel +excavator.crusher=粉碎匀关 +excavator.drill=挖掘匀关 +excavator.silktouch=粟准采集匀关 +excavator.veinminer=连锁挖矿匀关 +excavator.walling=填充匀关 flare.ignition=点火装眮 flare.valve=流量阀 fluid.acid_fluid=酾 @@ -948,6 +1050,7 @@ gun.make.CERIX=赛里克斯·马栌努斯锻造䞖界 gun.make.COLT=柯尔特制造公叞 gun.make.COMBINE=䞖界工䌚 gun.make.CUBE=Cube 2: Sauerbraten +gun.make.DRG=深岩银河 gun.make.ENZINGER=Enzinger工䌚 gun.make.EQUESTRIA=小马囜富匹系统 gun.make.FLIMFLAM=FlimFlam“欺骗”工䞚 @@ -966,9 +1069,11 @@ gun.make.MANN=Open Mann公叞 gun.make.MAXIM=海勒姆·马克沁 gun.make.METRO=地铁枪手 gun.make.MWT=MWT原型实验宀 -gun.make.NAZI=埃尔犏特机械制造厂 +gun.make.NAWS=Kayarm Industries +gun.make.ERFURT=埃尔犏特机械制造厂 gun.make.NONE=- gun.make.RAYTHEON=富匹系统公叞 +gun.make.REMINGTON=雷明登歊噚公叞 gun.make.ROCKWELL=眗克韊尔囜际公叞 gun.make.ROCKWELL_U=眗克韊尔囜际公叞 gun.make.RYAN=莱恩工䞚 @@ -988,6 +1093,7 @@ gun.name.benelli=䌯奈利M4 Super 90霰匹枪 gun.name.benelliDrum=䌯奈利M4 Super 90霰匹枪 (泵劚䟛匹改进型) gun.name.bio=RI No. 2 Mark 1 gun.name.bolter=Manticora Pattern爆匹枪 +gun.name.congoLake=刚果湖氎泵劚抎匹发射噚 gun.name.cPython=柯尔特蟒蛇 gun.name.cz53=CZ53 单兵蜬蜮机枪 gun.name.cz57=CZ57 倍仇者机枪 @@ -1009,7 +1115,7 @@ gun.name.gustav=卡尔·叀斯塔倫M1无后坐力炮 gun.name.ifHorseshoe=IF-18 蹄铁 gun.name.ifPit=IF-18 蹄铁 Bottomless Pit gun.name.ifScope=IF-18 蹄铁 Scoped -gun.name.ifStorm=IF-18 蹄铁 Silver Storm +gun.name.ifStorm=IF-18 蹄铁 银色风暎 gun.name.ifVanity=IF-18 蹄铁 Vanity gun.name.karl=M1 卡尔·叀斯塔倫 gun.name.ks23=KS-23霰匹枪 @@ -1034,6 +1140,7 @@ gun.name.nerf=某些无良记者県䞭的倧规暡杀䌀性歊噚 gun.name.osipr=守望标准型脉冲步枪 gun.name.panz=反坊克火箭来倍枪 54 gun.name.quadro=OpenQuadro䟿携匏富匹发射噚 +gun.name.remington870=雷明顿870 gun.name.revolverCursed=䞍列颠标准问题电劚手枪 gun.name.sauer=绍尔猎枪 gun.name.spas12=北兰基SPAS-12匏12号霰匹枪 @@ -1046,11 +1153,11 @@ gun.name.tommy9=M1A1冲锋枪9毫米型 gun.name.tommy=M1A1冲锋枪 gun.name.topaz=重型火焰燃烧噚 gun.name.uacCarbine=UAC-41卡実枪 -gun.name.uacDeagle=UAC-H54 "Martian Raptor" Automag -gun.name.uacDMR=UAC-30 Designated Marksman Rifle -gun.name.uacLMG=UAC-49 Light Machine Gun -gun.name.uacPistol=UAC-B950 .45 Standard Issue Handgun -gun.name.uacSMG=UAC-17 Compact Sub-Machine Gun +gun.name.uacDeagle=UAC-H54“火星猛犜”倧容量手枪 +gun.name.uacDMR=UAC-30 粟确射手步枪 +gun.name.uacLMG=UAC-49蜻机枪 +gun.name.uacPistol=UAC-B950 .45 标准型手枪 +gun.name.uacSMG=UAC-17小型冲锋枪 gun.name.uboinik=Uboinik蜬蜮霰匹枪 gun.name.uzi=IMI Uzi gun.name.uziSatur=IMI Uzi D-25A @@ -1121,8 +1228,14 @@ hbmfluid.biogas=沌气 hbmfluid.bitumen=沥青 hbmfluid.blood=血 hbmfluid.blood_hot=热的血 +hbmfluid.calcium_chloride=氯化钙溶液 +hbmfluid.calcium_solution=钙溶液 hbmfluid.carbondioxide=二氧化碳 hbmfluid.chlorine=氯气 +hbmfluid.chlorocalcite_cleaned=纯净氯方解石溶液 +hbmfluid.chlorocalcite_mix=混合氯方解石溶液 +hbmfluid.chlorocalcite_solution=氯方解石溶液 +hbmfluid.cholesterol=胆固醇溶液 hbmfluid.coalcreosote=煀焊杂酚油 hbmfluid.coalgas=煀汜油 hbmfluid.coalgas_leaded=含铅煀汜油 @@ -1136,12 +1249,16 @@ hbmfluid.death=锇酞溶液 hbmfluid.deuterium=氘 hbmfluid.diesel=柎油 hbmfluid.diesel_crack=裂化柎油 -hbmfluid.diesel_crack_reform=高蟛烷倌裂解柎油 +hbmfluid.diesel_crack_reform=高蟛烷倌裂化柎油 hbmfluid.diesel_reform=高蟛烷倌柎油 +hbmfluid.egg=蛋溶解液 +hbmfluid.estradiol=雌二醇溶液 hbmfluid.ethanol=乙醇 hbmfluid.enderjuice=末圱果汁 +hbmfluid.fishoil=鱌油 hbmfluid.fracksol=压裂液 hbmfluid.gas=倩然气 +hbmfluid.gas_coker=焊化气 hbmfluid.gasoline=含铅汜油基油 hbmfluid.gasoline_leaded=含铅汜油 hbmfluid.heatingoil=燃油 @@ -1149,7 +1266,9 @@ hbmfluid.heatingoil_vacuum=重莚燃油 hbmfluid.heavyoil=重油 hbmfluid.heavyoil_vacuum=减压重油 hbmfluid.heavywater=重氎 +hbmfluid.heavywater_hot=高枩重氎 hbmfluid.helium3=æ°Š-3 +hbmfluid.helium4=æ°Š-4 hbmfluid.hotcrackoil=热裂化油 hbmfluid.hotoil=热原油 hbmfluid.hotsteam=热蒞汜 @@ -1168,11 +1287,14 @@ hbmfluid.mug=Mug牌树根饮料 hbmfluid.mug_hot=热的Mug牌树根饮料 hbmfluid.mustardgas=芥子气 hbmfluid.naphtha=石脑油 +hbmfluid.naphtha_coker=焊化石脑油 hbmfluid.naphtha_crack=裂化石脑油 hbmfluid.nitan=NITAN牌100号超级燃料 hbmfluid.nitric_acid=硝酞 +hbmfluid.nitroglycerin=硝酞甘油 hbmfluid.none=无 hbmfluid.oil=原油 +hbmfluid.oil_coker=焊化油 hbmfluid.oxygen=液氧 hbmfluid.oxyhydrogen=氢氧混合气 hbmfluid.pain=Pn(III) 钜铁溶液 @@ -1185,10 +1307,12 @@ hbmfluid.plasma_dh3=氘-æ°Š3 等犻子䜓 hbmfluid.plasma_dt=氘-氚等犻子䜓 hbmfluid.plasma_hd=æ°¢-氘等犻子䜓 hbmfluid.plasma_ht=æ°¢-氚等犻子䜓 -hbmfluid.plasma_xm=氙-汞等犻子䜓 +hbmfluid.plasma_xm=液氧-æ°Š-4等犻子䜓 +hbmfluid.potassium_chloride=氯化钟溶液 hbmfluid.puf6=六氟化钚 hbmfluid.radiosolvent=高性胜溶剂 hbmfluid.reclaimed=再生油 +hbmfluid.redmud=红色泥浆 hbmfluid.reformate=重敎油 hbmfluid.reformgas=重敎气 hbmfluid.salient=绿色液䜓 @@ -1196,13 +1320,22 @@ hbmfluid.sas3=䞉硫化Sa hbmfluid.schrabidic=Sa酾 hbmfluid.seedslurry=播种浆料 hbmfluid.smear=工䞚油 +hbmfluid.smoke=烟雟 +hbmfluid.smoke_leaded=含铅烟雟 +hbmfluid.smoke_poison=有毒烟雟 +hbmfluid.sodium=液态钠 +hbmfluid.sodium_hot=高枩液态钠 hbmfluid.solvent=有机溶剂 hbmfluid.sourgas=高硫倩然气 hbmfluid.spentsteam=䜎压蒞汜 hbmfluid.steam=蒞汜 hbmfluid.sulfuric_acid=ç¡«é…ž +hbmfluid.sunfloweroil=葵花籜油 hbmfluid.superhotsteam=超热蒞汜 hbmfluid.syngas=合成气 +hbmfluid.thorium_salt=液态钍盐 +hbmfluid.thorium_salt_depleted=莫化液态钍盐 +hbmfluid.thorium_salt_hot=高枩液态钍盐 hbmfluid.tritium=氚 hbmfluid.uf6=六氟化铀 hbmfluid.ultrahotsteam=超浓密蒞汜 @@ -1221,8 +1354,8 @@ hbmpseudofluid.meuf6=䞭浓猩六氟化铀 hbmpseudofluid.leuf6=䜎浓猩六氟化铀 hbmpseudofluid.nuf6=倩然浓床六氟化铀 hbmpseudofluid.pf6=六氟化钚 -hbmpseudofluid.mud_heavy=重毒泥浆銏分 -hbmpseudofluid.mud=有毒泥浆气䜓 +hbmpseudofluid.mud_heavy=毒泥浆重銏分 +hbmpseudofluid.mud=毒泥浆气态物 hbmmat.actinium227=锕-227 hbmmat.advancedalloy=高级合金 hbmmat.aluminum=铝 @@ -1271,7 +1404,7 @@ hbmmat.lithium=锂 hbmmat.magnetizedtungsten=磁化钚 hbmmat.malachite=孔雀石 hbmmat.meteoriciron=陹铁 -hbmmat.mingrade=工䞚级铜 +hbmmat.mingrade=玫铜 hbmmat.neptunium237=镎-237 hbmmat.niobium=铌 hbmmat.obsidian=黑曜岩 @@ -1315,6 +1448,7 @@ hbmmat.watzmud=毒泥浆 hbmmat.whitephosphorus=癜磷 hbmmat.workersalloy=Desh hbmmat.wroughtiron=锻铁 +hbmmat.zirconium=锆 matshape.block=%s 块 matshape.blocks=%s 块 matshape.ingot=%s 锭 @@ -1452,14 +1586,20 @@ item.ammo_9mm_du.name=9mm子匹[莫铀] item.ammo_9mm_rocket.name=9mm火箭匹 item.ammo_arty.name=16英寞炮匹 item.ammo_arty_cargo.name=16英寞快递炮匹 +item.ammo_arty_chlorine.name=16英寞氯气炮匹 item.ammo_arty_classic.name=16英寞炮匹 (特制) item.ammo_arty_he.name=16英寞高爆炮匹 item.ammo_arty_mini_nuke.name=16英寞埮型栞炮匹 item.ammo_arty_mini_nuke_multi.name=16英寞倚匹倎埮型栞炮匹 +item.ammo_arty_mustard_gas.name=16英寞芥子气炮炮匹 item.ammo_arty_nuke.name=16英寞栞炮匹 +item.ammo_arty_phosgene.name=16英寞光气炮匹 item.ammo_arty_phosphorus.name=16英寞磷炮匹 item.ammo_arty_phosphorus_multi.name=16英寞倚匹倎磷炮匹 item.ammo_cell.name=胜量单元 +item.ammo_coilgun.name=钚制线圈枪子匹 +item.ammo_coilgun_du.name=铀铁合金制线圈枪子匹 +item.ammo_coilgun_rubber.name=橡胶制线圈枪子匹 item.ammo_container.name=䞇胜匹药盒 item.ammo_dart.name=塑料镖[凋零] item.ammo_dart_nerf.name=NERF 飞镖 @@ -1482,6 +1622,7 @@ item.ammo_grenade_finned.name=40mm抎匹[尟翌皳定] item.ammo_grenade_he.name=40mm抎匹[HE] item.ammo_grenade_incendiary.name=40mm抎匹[燃烧] item.ammo_grenade_kampf.name=40mm战术抎匹 +item.ammo_grenade_leadburster.name=40mm 匀路先锋 item.ammo_grenade_nuclear.name=40mm抎匹[栞子] item.ammo_grenade_phosphorus.name=40mm抎匹[癜磷] item.ammo_grenade_sleek.name=40mm抎匹[IF-R&D] @@ -1489,6 +1630,7 @@ item.ammo_grenade_toxic.name=40mm抎匹[化孊] item.ammo_grenade_tracer.name=40mm训练抎匹 item.ammo_himars_standard.name=M28制富火箭炮系统火箭匹舱 item.ammo_himars_standard_he.name=227毫米制富火箭炮系统火箭吊舱HE +item.ammo_himars_standard_lava.name=227毫米制富火箭炮系统火箭吊舱熔岩 item.ammo_himars_standard_mini_nuke.name=227毫米制富火箭炮系统火箭吊舱迷䜠栞匹 item.ammo_himars_standard_tb.name=227毫米制富火箭炮系统火箭吊舱枩压匹 item.ammo_himars_standard_wp.name=227毫米制富火箭炮系统火箭吊舱癜磷 @@ -1560,6 +1702,7 @@ item.ams_focus_limiter.desc=限制领域的最高性胜$标准冷华无胜 item.ams_lens.name=皳定透镜 item.ams_muzzle.name=激掻射线发射极 item.ams_muzzle.desc=...它可以发出䞀束胜量束。 +item.analysis_tool.name=分析工具 item.analyzer.name=分析仪 item.anchor_remote.name=召回讟倇 item.antiknock.name=四乙基铅抗爆剂 @@ -1653,6 +1796,7 @@ item.battery_steam_large.name=倧型蒞汜劚力傚胜眐 item.battery_su.name=SU-电池 item.battery_su_l.name=倧型SU-电池 item.battery_trixite.name=杂牌Spark电池 +item.bdcl.name=BDCL item.beta.name=Bata测试版功胜 item.big_sword.name=倧剑 item.billet_actinium.name=锕-227坯料 @@ -1799,7 +1943,7 @@ item.canister_ethanol.name=桶装乙醇 item.canister_fracksol.name=桶装压裂液 item.canister_fuel.name=桶装柎油 item.canister_fuel.desc=倧家欢呌吧 -item.canister_full.name=容噚 +item.canister_full.name=油桶 item.canister_gasoline.name=桶装含铅汜油 item.canister_gasoline.desc=铅就是朋友$让朋友进入䜠的血液$*䞊膛声*现圚就做 item.canister_heatingoil.name=桶装燃油 @@ -1922,7 +2066,7 @@ item.chemical_dye.gray.name=化孊染料灰色 item.chemical_dye.green.name=化孊染料绿色 item.chemical_dye.lightblue.name=化孊染料浅蓝色 item.chemical_dye.lime.name=化孊染料石灰 -item.chemical_dye.magenta.name=化孊染料掋红色 +item.chemical_dye.magenta.name=化孊染料品红色 item.chemical_dye.orange.name=化孊染料橙色 item.chemical_dye.pink.name=化孊染料粉色 item.chemical_dye.purple.name=化孊染料玫色 @@ -2057,8 +2201,8 @@ item.coffee.name=咖啡 item.coffee_radium.name=加镭咖啡 item.coil_advanced_alloy.name=超富线圈 item.coil_advanced_torus.name=超富环圢线圈 -item.coil_copper.name=铜线圈 -item.coil_copper_torus.name=铜环圢线圈 +item.coil_copper.name=玫铜线圈 +item.coil_copper_torus.name=玫铜环圢线圈 item.coil_gold.name=金线圈 item.coil_gold_torus.name=金环圢线圈 item.coil_magnetized_tungsten.name=4000K高枩超富线圈 @@ -2089,7 +2233,7 @@ item.crayon.gray.name=灰色蜡笔 item.crayon.green.name=绿色蜡笔 item.crayon.lightblue.name=浅蓝色蜡笔 item.crayon.lime.name=青色蜡笔 -item.crayon.magenta.name=掋红蜡笔 +item.crayon.magenta.name=品红蜡笔 item.crayon.orange.name=橙色蜡笔 item.crayon.pink.name=粉红蜡笔 item.crayon.purple.name=玫色蜡笔 @@ -2126,8 +2270,8 @@ item.crystal_phosphorus.name=磷晶䜓 item.crystal_plutonium.name=钚晶䜓 item.crystal_rare.name=皀土晶䜓 item.crystal_redstone.name=红石晶䜓 -item.crystal_schrabidium.name=䜎䞰床Sa326晶䜓 -item.crystal_schraranium.name=Sa326晶䜓 +item.crystal_schrabidium.name=Sa326晶䜓 +item.crystal_schraranium.name=䜎䞰床Sa326晶䜓 item.crystal_starmetal.name=星蟉晶䜓 item.crystal_sulfur.name=硫晶䜓 item.crystal_thorium.name=钍晶䜓 @@ -2193,6 +2337,9 @@ item.door_bunker.name=仓闚 item.door_metal.name=金属闚 item.door_office.name=办公宀闚 item.dosimeter.name=剂量计 +item.drax.name=采掘钻 +item.drax_mk2.name=区化型采掘钻 +item.drax_mk3.name=Sa326采掘钻 item.drillbit_desh.name=Desh钻倎 item.drillbit_desh_diamond.name=Desh钻倎(镶钻) item.drillbit_ferro.name=铀铁合金钻倎 @@ -2204,9 +2351,12 @@ item.drillbit_steel_diamond.name=钢钻倎(镶钻) item.drillbit_tcalloy.name=锝钢钻倎 item.drillbit_tcalloy_diamond.name=锝钢钻倎(镶钻) item.drill_titanium.name=钛钻倎 -item.drax.name=采掘钻 -item.drax_mk2.name=区化型采掘钻 -item.drax_mk3.name=Sa326采掘钻 +item.drone.patrol.name=运蟓无人机 +item.drone.patrol_chunkloading.name=区块加蜜无人机 +item.drone.patrol_express.name=快递无人机 +item.drone.patrol_express_chunkloading.name=区块加蜜快递无人机 +item.drone.request.name=物流无人机 +item.drone_linker.name=运蟓无人机铟接噚 item.ducttape.name=胶垊 item.dust.name=灰尘 item.dust.desc=我讚厌灰尘 @@ -2227,6 +2377,7 @@ item.early_explosive_lenses.desc=8䞪炞药透镜的组装垊有铝合金掚 item.egg_balefire.name=野火蛋 item.egg_balefire.desc=什么样的鞟儿才䌚䞋垊有攟射性的蛋? item.egg_balefire_shard.name=野火蛋碎片 +item.egg_glyphid.name=匂虫蛋 item.elec_axe.name=电锯 item.elec_pickaxe.name=冲击钻 item.elec_shovel.name=螺旋钻 @@ -2234,7 +2385,13 @@ item.elec_sword.name=电棍 item.energy_core.name=䞎时胜源栞心 item.entanglement_kit.name=纠猠郚件 item.entanglement_kit.desc=䌠送机制䜜零件$通过$铍增区型资源扫描仪实现尺寞蜬换。 +item.envsuit_boots.name=M1TTY环保套装靎子 +item.envsuit_helmet.name=M1TTY环保套装倎盔 +item.envsuit_legs.name=M1TTY环保套装技腿 +item.envsuit_plate.name=M1TTY环保套装胞甲 item.euphemium_boots.name=Ep靎子 +item.euphemium_capacitor.name=Ep电容 +item.euphemium_capacitor.desc=允讞被劚分散环积的正胜量。 item.euphemium_helmet.name=Ep倎盔 item.euphemium_kit.name=Ep工具箱 item.euphemium_legs.name=Ep技腿 @@ -2321,7 +2478,7 @@ item.gadget_kit.name=小玩意 套件 item.gadget_wireing.name=线路 item.gas_biogas.name=沌气眐 item.gas_empty.name=空气眐 -item.gas_full.name=倩然气眐 +item.gas_full.name=气䜓眐 item.gas_lpg.name=液化石油气眐 item.gas_mask.name=防毒面具 item.gas_mask_filter.name=防毒面具过滀噚 @@ -2338,6 +2495,7 @@ item.gear_large.name=倧型霿蜮 item.gear_large_steel.name=倧型钢霿蜮 item.geiger_counter.name=手持盖革计数噚 item.gem_alexandrite.name=亚历山倧变石 +item.gem_sodalite.name=方钠石 item.gem_tantalium.name=钜晶䜓 item.gem_tantalium.desc=“钜” item.gem_tantalium.desc.P11=又名钜。 @@ -2346,11 +2504,14 @@ item.generator_front.name=发电机前郚 item.generator_steel.name=发电机䞻䜓 item.glitch.name=故障 item.glowing_stew.name=发光真菌煲 +item.glyphid_meat.name=匂虫肉 +item.glyphid_meat_grilled.name=熟匂虫肉 item.goggles.name=技目镜 item.grenade_aschrab.name=可抛反Sa326 item.grenade_black_hole.name=黑掞手抎匹 item.grenade_breach.name=砎甲手抎匹 item.grenade_burst.name=挖掘手抎匹 +item.grenate_cats.name=猫猫手抎匹 item.grenade_cloud.name=䞀眐云 item.grenade_cluster.name=集束手抎匹 item.grenade_electric.name=闪电炞匹 @@ -2395,6 +2556,7 @@ item.gun_avenger.name=CZ57倍仇者机枪 item.gun_b92.name=§9B92胜量手枪§r item.gun_b92_ammo.name=§9B92胜量单元§r item.gun_b93.name=§cB93胜量手枪§r +item.gun_benelli.name=䌯奈利自劚霰匹枪Drum Mod item.gun_bf.name=BEL item.gun_bf_ammo.name=Mk.V小型AMAT-炮匹 –野火型 item.gun_bio_revolver.name=Atlas @@ -2408,6 +2570,9 @@ item.gun_calamity.name=垌特勒的电锯 item.gun_calamity_ammo.name=.50BMG子匹 item.gun_calamity_dual.name=马鞍枪 item.gun_chemthrower.name=化孊喷射噚 +item.gun_coilgun.name=线圈枪 +item.gun_congolake.name=刚果湖 +item.gun_cryocannon.name=䜎枩炮 item.gun_cryolator.name=冻结者 item.gun_cryolator_ammo.name=急冻单元 item.gun_dampfmaschine.name=绝对䞍是匀玩笑的歊噚 @@ -2462,6 +2627,7 @@ item.gun_osipr_ammo2.name=融合球 item.gun_panzerschreck.name=战蜊噩梊 item.gun_proto.name=M42栞匹发射噚 "原始MIRV" item.gun_quadro.name=四喜䞞子 +item.gun_remington.name=バむデン ブラスト [拜登冲击波] item.gun_revolver.name=区化巊蜮手枪 item.gun_revolver_ammo.name=铅巊蜮子匹 item.gun_revolver_blackjack.name=黑杰克五发装巊蜮枪 @@ -2500,6 +2666,7 @@ item.gun_super_shotgun.name="超级"猎枪 item.gun_super_shotgun.desc=超级烂 item.gun_supershotgun.name=超级猎枪 item.gun_thompson.name=汀姆森冲锋枪 +item.gun_uac_pistol.name=UAC .45手枪 item.gun_uboinik.name=Uboinik item.gun_uboinik_ammo.name=12x70 鹿匹 item.gun_uzi.name=Uzi冲锋枪 @@ -2538,6 +2705,7 @@ item.heart_booster.name=心之增区噚 item.heart_container.name=心之容噚 item.heart_fab.name=心脏抗原结合噚 item.heart_piece.name=心之碎片 +item.heavy_component.name=重型%s组件 item.hev_battery.name=套装电池 item.hev_boots.name=HEV Mk.IV 靎子 item.hev_plate.name=HEV Mk.IV 胞甲 @@ -2589,7 +2757,7 @@ item.ingot_co60.name=钮-60锭 item.ingot_cobalt.name=钮锭 item.ingot_combine_steel.name=CMB钢锭 item.ingot_combine_steel.desc=*圚歀倄插入民事保技参考* -item.ingot_copper.name=工䞚级铜 +item.ingot_copper.name=工䞚级铜锭 item.ingot_daffergon.name=蟟倫莡锭 item.ingot_desh.name=Desh锭 item.ingot_dineutronium.name=双聚䞭子态玠锭 @@ -2636,7 +2804,7 @@ item.ingot_pu240.name=钚-240锭 item.ingot_pu241.name=钚-241锭 item.ingot_pvc.name=聚氯乙烯锭PVC item.ingot_ra226.name=镭-226锭 -item.ingot_red_copper.name=玫铜 +item.ingot_red_copper.name=玫铜锭 item.ingot_reiium.name=雷恩锭 item.ingot_rubber.name=橡胶锭 item.ingot_saturnite.name=土星锭 @@ -2842,6 +3010,7 @@ item.mold_base.name=毛坯铞造暡具 item.mold.name=铞造暡具 item.morning_glory.name=牵牛花 item.motor.name=马蟟 +item.motor_bismuth.name=铋马蟟 item.motor_desh.name=Desh马蟟 item.mp_c_1.name=1级富匹制富芯片 item.mp_c_2.name=2级富匹制富芯片 @@ -2980,6 +3149,9 @@ item.mysteryshovel.name=易碎锹 item.n2_charge.name=倧型炞药 item.neutrino_lens.name=䞭子透镜 item.neutron_reflector.name=䞭子反射板 +item.night_vision.name=倜视県镜 +item.night_vision.description.item=提䟛倜视功胜需芁党套电劚讟倇 +item.night_vision.description.in_armor=%s允讞倜视 item.niter.name=硝石粉 item.no9.name=矿工倎盔 item.nossy_hat.name=华䞜的垜子 @@ -3073,16 +3245,21 @@ item.oil_detector.noOil=未发现油田 item.oil_tar.coal.name=煀焊油 item.oil_tar.crude.name=焊油 item.oil_tar.crack.name=裂化焊油 +item.oil_tar.paraffin.name=石蜡 item.oil_tar.wax.name=氯化石蜡 item.oil_tar.wood.name=朚銏油 item.ore.asbestos=石棉 item.ore.borax=硌砂 +item.ore.chlorocalcite=氯方解石 item.ore.copper=铜 +item.ore.fluorite=氟石 item.ore.gold=金 item.ore.iron=铁 item.ore.niobium=铌 item.ore.titanium=钛 item.ore.tungsten=钹 +item.ore.thorium=钍 +item.ore.uranium=铀 item.ore_bedrock.name=基岩%s矿 item.ore_byproduct.b_aluminium.name=铝晶䜓碎片 item.ore_byproduct.b_bismuth.name=铋晶䜓碎片 @@ -3091,9 +3268,13 @@ item.ore_byproduct.b_copper.name=铜晶䜓碎片 item.ore_byproduct.b_iron.name=铁晶䜓碎片 item.ore_byproduct.b_lead.name=铅晶䜓碎片 item.ore_byproduct.b_lithium.name=锂晶䜓碎片 +item.ore_byproduct.b_polonium.name=钋晶䜓碎片 +item.ore_byproduct.b_radium.name=镭晶䜓碎片 item.ore_byproduct.b_silicon.name=硅晶䜓碎片 item.ore_byproduct.b_sulfur.name=硫晶䜓碎片 +item.ore_byproduct.b_technetium.name=锝晶䜓碎片 item.ore_byproduct.b_titanium.name=钛晶䜓碎片 +item.ore_byproduct.b_uranium.name=铀晶䜓碎片 item.ore_centrifuged.name=犻心%s矿 item.ore_cleaned.name=枅掁%s矿 item.ore_deepcleaned.name=深枅掁%s矿 @@ -3101,9 +3282,9 @@ item.ore_enriched.name=富集%s矿 item.ore_nitrated.name=硝化%s矿 item.ore_nitrocrystalline.name=亚硝基结晶%s矿 item.ore_purified.name=净化%s矿 -item.ore_raadcleaned.name=蟐射净化的%s矿 +item.ore_radcleaned.name=经蟐射枅掁的%s矿 item.ore_seared.name=灌热的%s矿 -item.ore_separated.name=犻心%s矿 +item.ore_separated.name=分犻的%s矿 item.overfuse.name=奇匂螺䞝刀 item.overfuse.desc=诎啥 item.oxy_mask.name=氧气面眩 @@ -3215,6 +3396,7 @@ item.pill_iodine.name=碘䞞 item.pill_iodine.desc=消陀莟面buff item.pill_herbal.name=草药膏 item.pill_herbal.desc=有效治疗肺郚疟病和蜻床蟐射䞭毒$有副䜜甚 +item.pill_red.name=红色药䞞 item.pin.name=发倹 item.pin.desc=“*未修改*撬匀标准锁的成功率纊䞺10%。 item.pipes_steel.name=钢管 @@ -3265,12 +3447,18 @@ item.plate_schrabidium.name=Sa326板 item.plate_steel.name=钢板 item.plate_titanium.name=钛板 item.polaroid.name=偏光片 +item.pollution_detector.name=污染探测噚 item.powder_actinium.name=锕粉 item.powder_actinium_tiny.name=小撮锕粉 item.powder_advanced_alloy.name=高级合金粉 item.powder_aluminium.name=铝粉 item.powder_asbestos.name=石棉粉 item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r +item.powder_ash.coal.name=煀灰 +item.powder_ash.fly.name=飞尘 +item.powder_ash.misc.name=灰尘 +item.powder_ash.soot.name=细烟灰 +item.powder_ash.wood.name=朚灰 item.powder_astatine.name=砹粉 item.powder_at209.name=ç ¹-209粉 item.powder_au198.name=金-198粉 @@ -3288,6 +3476,7 @@ item.powder_caesium.name=铯粉 item.powder_calcium.name=钙粉 item.powder_cerium.name=铈粉 item.powder_cerium_tiny.name=小撮铈粉 +item.powder_chlorocalcite.name=氯方解石 item.powder_chlorophyte.name=叶绿粉 item.powder_cloud.name=云粉末 item.powder_co60.name=钮-60粉 @@ -3355,6 +3544,7 @@ item.powder_sawdust.name=锯末 item.powder_schrabidate.name=Sa酞铁粉 item.powder_schrabidium.name=Sa326粉 item.powder_semtex_mix.name=塞姆汀塑胶炞药混合物 +item.powder_sodium.name=Sodium item.powder_spark_mix.name=Spark闪闪奥术混合物 item.powder_sr90.name=锶-90粉 item.powder_sr90_tiny.name=小撮锶-90粉末 @@ -3388,6 +3578,51 @@ item.primer_buckshot.name=鹿匹底火[x12] item.protection_charm.name=守技项铟 item.prototype_kit.name=原型 套件 item.pudding.name=垃䞁 +item.pwr_fuel.bfb_am_mix.name=燃料级镅压氎堆BFB燃料棒 +item.pwr_fuel.bfb_pu241.name=钚-241压氎堆BFB棒 +item.pwr_fuel.hea242.name=HEA-242 高浓猩床镅-242压氎堆燃料棒 +item.pwr_fuel.hen237.name=HEN-237 高浓猩床镎-237压氎堆燃料棒 +item.pwr_fuel.hep239.name=HEP-239 高浓猩床钚-239压氎堆燃料棒 +item.pwr_fuel.hep241.name=HEP-241 高浓猩床钚-241压氎堆燃料棒 +item.pwr_fuel.hes326.name=HES-326 高浓猩床Sa326压氎堆燃料棒 +item.pwr_fuel.hes327.name=HES-327 高浓猩床Sa327压氎堆燃料棒 +item.pwr_fuel.heu233.name=HEU-233 高浓猩床铀-233压氎堆燃料棒 +item.pwr_fuel.heu235.name=HEU-235 高浓猩床铀-235压氎堆燃料棒 +item.pwr_fuel.mea.name=MEA 䞭浓猩床镅压氎堆燃料棒 +item.pwr_fuel.men.name=MEN 䞭浓猩床镎压氎堆燃料棒 +item.pwr_fuel.mep.name=MEP 䞭浓猩床钚压氎堆燃料棒 +item.pwr_fuel.meu.name=MEU 䞭浓猩床铀压氎堆燃料棒 +item.pwr_fuel.mox.name=MOX 压氎堆燃料棒 +item.pwr_fuel_depleted.bfb_am_mix.name=枯竭燃料级镅压氎堆BFB燃料棒 +item.pwr_fuel_depleted.bfb_pu241.name=枯竭钚-241压氎堆BFB棒 +item.pwr_fuel_depleted.hea242.name=枯竭 HEA-242 高浓猩床镅-242压氎堆燃料棒 +item.pwr_fuel_depleted.hen237.name=枯竭 HEN-237 高浓猩床镎-237压氎堆燃料棒 +item.pwr_fuel_depleted.hep239.name=枯竭 HEP-239 高浓猩床钚-239压氎堆燃料棒 +item.pwr_fuel_depleted.hep241.name=枯竭 HEP-241 高浓猩床钚-241压氎堆燃料棒 +item.pwr_fuel_depleted.hes326.name=枯竭 HES-326 高浓猩床Sa326压氎堆燃料棒 +item.pwr_fuel_depleted.hes327.name=枯竭 HES-327 高浓猩床Sa327压氎堆燃料棒 +item.pwr_fuel_depleted.heu233.name=枯竭 HEU-233 高浓猩床铀-233压氎堆燃料棒 +item.pwr_fuel_depleted.heu235.name=枯竭 HEU-235 高浓猩床铀-235压氎堆燃料棒 +item.pwr_fuel_depleted.mea.name=枯竭 MEA 䞭浓猩床镅压氎堆燃料棒 +item.pwr_fuel_depleted.men.name=枯竭 MEN 䞭浓猩床镎压氎堆燃料棒 +item.pwr_fuel_depleted.mep.name=枯竭 MEP 䞭浓猩床钚压氎堆燃料棒 +item.pwr_fuel_depleted.meu.name=枯竭 MEU 䞭浓猩床铀压氎堆燃料棒 +item.pwr_fuel_depleted.mox.name=枯竭 MOX 压氎堆燃料棒 +item.pwr_fuel_hot.bfb_am_mix.name=高枩 燃料级镅压氎堆BFB燃料棒 +item.pwr_fuel_hot.bfb_pu241.name=高枩 钚-241压氎堆BFB棒 +item.pwr_fuel_hot.hea242.name=高枩 HEA-242 高浓猩床镅-242压氎堆燃料棒 +item.pwr_fuel_hot.hen237.name=高枩 HEN-237 高浓猩床镎-237压氎堆燃料棒 +item.pwr_fuel_hot.hep239.name=高枩 HEP-239 高浓猩床钚-239压氎堆燃料棒 +item.pwr_fuel_hot.hep241.name=高枩 HEP-241 高浓猩床钚-241压氎堆燃料棒 +item.pwr_fuel_hot.hes326.name=高枩 HES-326 高浓猩床Sa326压氎堆燃料棒 +item.pwr_fuel_hot.hes327.name=高枩 HES-327 高浓猩床Sa327压氎堆燃料棒 +item.pwr_fuel_hot.heu233.name=高枩 HEU-233 高浓猩床铀-233压氎堆燃料棒 +item.pwr_fuel_hot.heu235.name=高枩 HEU-235 高浓猩床铀-235压氎堆燃料棒 +item.pwr_fuel_hot.mea.name=高枩 MEA 䞭浓猩床镅压氎堆燃料棒 +item.pwr_fuel_hot.men.name=高枩 MEN 䞭浓猩床镎压氎堆燃料棒 +item.pwr_fuel_hot.mep.name=高枩 MEP 䞭浓猩床钚压氎堆燃料棒 +item.pwr_fuel_hot.meu.name=高枩 MEU 䞭浓猩床铀压氎堆燃料棒 +item.pwr_fuel_hot.mox.name=高枩 MOX压氎堆燃料棒 item.quartz_plutonium.name=深成石英 item.radaway.name=消蟐宁 item.radaway_flush.name=超级消蟐宁 @@ -3424,7 +3659,7 @@ item.rbmk_fuel_mox.name=MOX RBMK反应堆燃料棒 item.rbmk_fuel_po210be.name=钋210-铍 RBMK反应堆䞭子源 item.rbmk_fuel_pu238be.name=钚238-铍 RBMK反应堆䞭子源 item.rbmk_fuel_ra226be.name=镭226-铍 RBMK反应堆䞭子源 -item.rbmk_fuel_thmeu.name=ThMEU RBMK反应堆䞭浓猩床铀-235富向钍燃料棒 +item.rbmk_fuel_thmeu.name=ThMEU RBMK反应堆䞭浓猩床铀-233富向钍燃料棒 item.rbmk_fuel_ueu.name=NU RBMK反应堆未浓猩铀燃料棒 item.rbmk_fuel_zfb_am_mix.name=ZFB 燃料级镅RBMK反应堆燃料棒 item.rbmk_fuel_zfb_bismuth.name=ZFB 铋RBMK反应堆燃料棒 @@ -3741,6 +3976,9 @@ item.singularity_super_heated.name=超热共振奇点 item.siox.name=SiOX抗癌药物 item.siox.desc=䜿甚石棉的力量逆蜬闎皮瘀 item.siren_track.name=譊报声蜚 +item.sliding_blast_door_skin.0.name=滑劚防爆闚 皮肀默讀 +item.sliding_blast_door_skin.1.name=滑劚防爆闚 皮肀变型1 +item.sliding_blast_door_skin.2.name=滑劚防爆闚 皮肀变型2 item.smashing_hammer.name=粉碎销 item.solid_fuel.name=固䜓燃料 item.solid_fuel_bf.name=固䜓燃料野火 @@ -3761,12 +3999,16 @@ item.spider_milk.name=䞀瓶蜘蛛奶 item.spongebob_macaroni.name=海绵宝宝通心粉 item.stamp_357.name=.357马栌南锻暡 item.stamp_44.name=.44马栌南锻暡 -item.stamp_50.name=倧口埄锻暡 -item.stamp_9.name=小口埄锻暡 +item.stamp_50.name=倧口埄匹壳锻暡 +item.stamp_9.name=小口埄匹壳锻暡 item.stamp_desh_circuit.name=Desh电路板锻暡 item.stamp_desh_flat.name=Desh锻暡 item.stamp_desh_plate.name=Desh板锻暡 item.stamp_desh_wire.name=Desh电线锻暡 +item.stamp_desh_357.name=.357马栌南锻暡 (Desh) +item.stamp_desh_44.name=.44马栌南锻暡 (Desh) +item.stamp_desh_50.name=倧口埄匹壳锻暡Desh +item.stamp_desh_9.name=小口埄匹壳锻暡Desh item.stamp_iron_circuit.name=铁莚电路板锻暡 item.stamp_iron_flat.name=铁莚锻暡 item.stamp_iron_plate.name=铁莚板锻暡 @@ -3813,6 +4055,7 @@ item.steel_shovel.name=钢锹 item.steel_sword.name=钢剑 item.stick_c4.name=C-4炞药棒 item.stick_dynamite.name=炞药棒 +item.stick_dynamite_fishing.name=捕鱌炞药棒 item.stick_semtex.name=塞姆汀塑胶炞药棒 item.stick_tnt.name=TNT棒 item.stopsign.name=停蜊标志战斧 @@ -3875,6 +4118,11 @@ item.titanium_plate.name=钛胞甲 item.titanium_shovel.name=钛锹 item.titanium_sword.name=钛剑 item.toothpicks.name=牙筟 +item.train.cargo_tram.name=平板蜜莧电蜊 +item.trenchmaster_boots.name=Trenchmaster的靎子 +item.trenchmaster_helmet.name=Trenchmaster的倎盔 +item.trenchmaster_legs.name=Trenchmaster的技腿 +item.trenchmaster_plate.name=Trenchmaster的胞甲 item.trinitite.name=玻璃石 item.tritium_deuterium_cake.name=氚氘饌 item.tritium_deuterium_cake.desc=䞍是真正的蛋糕而是埈棒的$聚变燃料 @@ -4077,7 +4325,7 @@ rbmk.screen.rod=控制%s rbmk.screen.temp=枩床%s rbmk.screen.xenon=氙%s shape.billet=钢坯 -shape.blade=刀身 +shape.blade=扇叶 shape.blades=切碎机刀片 shape.block=块 shape.dust=粉末 @@ -4149,6 +4397,7 @@ tile.block_beryllium.name=铍块 tile.block_bismuth.name=铋块 tile.block_boron.name=硌块 tile.block_c4.name=C-4块 +tile.block_cadmium.name=镉块 tile.block_cap_fritz.name=北里茚瓶盖方块 tile.block_cap_korl.name=Korl瓶盖方块 tile.block_cap_nuka.name=栞子可乐瓶盖方块 @@ -4157,6 +4406,7 @@ tile.block_cap_rad.name=蟐射 S~栞子可乐瓶盖方块 tile.block_cap_sparkle.name=栞子可乐瓶盖方块 tile.block_cap_star.name=倕阳沙士星星瓶盖方块 tile.block_cap_sunset.name=倕阳沙士瓶盖方块 +tile.block_cdalloy.name=镉钢块 tile.block_cobalt.name=钎块 tile.block_coke.coal.name=煀焊炭块 tile.block_coke.lignite.name=耐煀焊炭块 @@ -4228,6 +4478,7 @@ tile.block_starmetal.name=星蟉块 tile.block_steel.name=钢块 tile.block_sulfur.name=硫磺块 tile.block_tantalium.name=钜块 +tile.block_tcalloy.name=锝钢块 tile.block_thorium.name=钍块 tile.block_thorium_fuel.name=钍燃料块 tile.block_titanium.name=钛块 @@ -4301,13 +4552,25 @@ tile.c4.name=C-4 tile.cable_detector.name=红石电源匀关 tile.cable_diode.name=玫铜二极管 tile.cable_switch.name=电源匀关 +tile.capacitor_bus.name=电容总线 +tile.capacitor_bus.desc=电容噚的蟓出方块$可以连成䞀条盎线 +tile.capacitor_copper.name=铜电容 +tile.capacitor_gold.name=金电容 +tile.capacitor_niobium.name=铌电容 +tile.capacitor_schrabidate.name=Sa酞铁电容噚 +tile.capacitor_tantalium.name=钜电容 +tile.capacitor.desc=蟓入顶郚$蟓出底郚通过电容总线 tile.charge_c4.name=炞药包 tile.charge_dynamite.name=定时炞匹 tile.charge_miner.name=定时采矿炞药 -tile.charge_semtex.name=Semtex采矿炞药 +tile.charge_semtex.name=塞姆汀采矿炞药 tile.charger.name=充电站 tile.cheater_virus.name=冻结Ep tile.cheater_virus_seed.name=䞍皳定Ep Schrabide块 +tile.chimney_brick.name=烟囱 +tile.chimney_brick.desc=䜿甚排气管连接污染机噚$减少75%的污染排攟 +tile.chimney_industrial.name=工䞚烟囱 +tile.chimney_industrial.desc=䜿甚排气管连接污染机噚$减少90%的污染排攟 tile.chlorine_gas.name=氯气 tile.cluster_aluminium.name=铝矿簇 tile.cluster_copper.name=铜矿簇 @@ -4316,6 +4579,30 @@ tile.cluster_depth_titanium.name=深层钛矿簇 tile.cluster_depth_tungsten.name=深层钚矿簇 tile.cluster_iron.name=铁矿簇 tile.cluster_titanium.name=钛矿簇 +tile.cm_block.alloy.name=高级合金机噚倖壳 +tile.cm_block.desh.name=Desh机噚倖壳 +tile.cm_block.steel.name=钢制机噚倖壳 +tile.cm_block.tcalloy.name=锝钢机噚倖壳 +tile.cm_circuit.aluminium.name=䞀级电路块 +tile.cm_circuit.copper.name=二级电路块 +tile.cm_circuit.gold.name=四级电路块 +tile.cm_circuit.red_copper.name=䞉级电路块 +tile.cm_circuit.schrabidium.name=五级电路块 +tile.cm_engine.bismuth.name=铋电机组 +tile.cm_engine.desh.name=DESH电机组 +tile.cm_engine.standard.name=电机组 +tile.cm_port.alloy.name=高级合金端口 +tile.cm_port.desh.name=Desh端口 +tile.cm_port.steel.name=钢制端口 +tile.cm_port.tcalloy.name=锝钢端口 +tile.cm_sheet.alloy.name=高级合金建筑板 +tile.cm_sheet.desh.name=Desh建筑板 +tile.cm_sheet.steel.name=钢建筑板 +tile.cm_sheet.tcalloy.name=锝钢建筑板 +tile.cm_tank.alloy.name=高级合金傚眐 +tile.cm_tank.desh.name=Desh傚眐 +tile.cm_tank.steel.name=钢制傚眐 +tile.cm_tank.tcalloy.name=锝钢傚眐 tile.cmb_brick.name=CMB钢瓊块 tile.cmb_brick_reinforced.name=加固CMB钢砖块 tile.compact_launcher.name=玧凑型发射台 @@ -4343,6 +4630,12 @@ tile.concrete_colored.red.name=红色混凝土 tile.concrete_colored.silver.name=淡灰色混凝土 tile.concrete_colored.white.name=癜色混凝土 tile.concrete_colored.yellow.name=黄色混凝土 +tile.concrete_colored_ext.hazard.name=建筑商指定混凝土-危险地垊 +tile.concrete_colored_ext.indigo.name=建筑商指定混凝土-深靛蓝 +tile.concrete_colored_ext.machine.name=建筑商指定混凝土-工䞚风 +tile.concrete_colored_ext.machine_stripe.name=建筑商指定混凝土-工䞚条纹 +tile.concrete_colored_ext.pink.name=建筑商指定混凝土-猛男粉 +tile.concrete_colored_ext.purple.name=建筑商指定混凝土-神秘玫 tile.concrete_pillar.name=钢筋混凝土柱 tile.concrete_slab.concrete.name=混凝土瓷砖板 tile.concrete_slab.concrete_asbestos.name=石棉混凝土板 @@ -4355,18 +4648,32 @@ tile.concrete_stairs.name=混凝土瓷砖楌梯 tile.concrete_super.name=ÃŒber混凝土 tile.concrete_super_broken.name=发霉的碎片 tile.conveyor.name=蟓送垊 +tile.conveyor.desc=移劚掉圚䞊面的物品$可以甚螺䞝刀顺时针旋蜬$甚螺䞝刀按䜏Shift键单击以蜬匯 tile.conveyor_chute.name=蟓送垊滑槜 +tile.conveyor_chute.desc=向䞋移劚物品$最底郚的滑槜将起到普通䌠送垊的䜜甚 tile.conveyor_double.name=双蜚道蟓送垊 +tile.conveyor_double.desc=移劚掉圚䞊面的物品$可以甚螺䞝刀顺时针旋蜬$甚螺䞝刀按䜏Shift键单击以蜬匯 +tile.conveyor_express.name=快速蟓送垊 +tile.conveyor_express.desc=快速移劚掉圚䞊面的物品$可以甚螺䞝刀顺时针旋蜬$甚螺䞝刀按Shift键蜬匯 tile.conveyor_lift.name=垂盎蟓送垊 +tile.conveyor_lift.desc=向䞊移劚物品$至少需芁䞀䞪块才胜正垞工䜜 tile.conveyor_triple.name=䞉蜚道蟓送垊 +tile.conveyor_triple.desc=移劚掉圚䞊面的物品$可以甚螺䞝刀顺时针旋蜬$甚螺䞝刀按䜏Shift键单击以蜬匯 tile.corium_block.name=堆芯熔融物 tile.crane_boxer.name=蟓送垊打包机 +tile.crane_boxer.desc=将可配眮数量的堆叠装蜜到沿着䌠送垊移劚的箱子䞭$甚螺䞝刀右键单击以讟眮蟓入䟧$甚螺䞝起子平移单击以讟眮蟓出䟧$单击䞀次以讟眮盞反䟧 tile.crane_extractor.name=蟓送垊提取噚 +tile.crane_extractor.desc=从库存䞭取出物品并将其攟眮圚䌠送垊䞊$最倚有9䞪垊黑癜名单的过滀噚插槜$甚螺䞝刀右键单击以讟眮蟓出䟧$手持螺䞝刀按䜏Shift单击以讟眮蟓入䟧$单击䞀次以讟眮盞反䟧 tile.crane_grabber.name=蟓送垊抓斗 +tile.crane_grabber.desc=从经过的蟓送垊䞭取出物品并将其攟入容噚$将只从最近的通道䞭取出物品$最倚有9䞪垊黑癜名单的过滀槜$甚螺䞝刀右键单击以讟眮蟓入䟧$甚螺䞝起子平移单击以讟眮蟓出䟧$单击䞀次以讟眮对䟧 tile.crane_inserter.name=蟓送垊富入噚 +tile.crane_inserter.desc=接受蟓送垊䞊的物品并将其攟入容噚䞭$甚螺䞝刀右键单击以讟眮蟓入䟧$甚螺䞝刀单击以讟眮蟓出䟧$单击䞀次以讟眮盞反䟧 tile.crane_router.name=蟓送垊分拣机 +tile.crane_router.desc=根据定义的条件对项目排序$䟧面可以定义䞺黑名单、癜名单或通配笊$只有圚没有其他筛选噚匹配的情况䞋才选择通配笊䟧面 tile.crane_splitter.name=蟓送垊分犻噚 +tile.crane_splitter.desc=将物品分匀并均匀堆攟圚䞀条䌠送垊䞊$其本身就是䞀条䌠送垊因歀它可以盎接蟓入到插入噚或分拣噚䞭 tile.crane_unboxer.name=蟓送垊解包机 +tile.crane_unboxer.desc=接收打包奜的物品并解包$甚螺䞝刀右键单击以讟眮蟓出䟧$手持螺䞝刀按䜏Shift单击以讟眮蟓入䟧$单击䞀次以讟眮盞反䟧 tile.crashed_bomb.name=哑匹 tile.crate.name=补给箱 tile.crate_ammo.name=星蟉补给箱 @@ -4378,6 +4685,7 @@ tile.crate_lead.name=危险品补给箱 tile.crate_metal.name=机噚补给箱 tile.crate_red.name=红色补给箱 tile.crate_steel.name=钢箱 +tile.crate_template.name=暡板箱 tile.crate_tungsten.name=é’šç®± tile.crate_weapon.name=歊噚补给箱 tile.crystal_hardened.name=硬化黑氎晶 @@ -4388,7 +4696,6 @@ tile.deco_asbestos.name=石棉瓊 tile.deco_beryllium.name=铍装饰块 tile.deco_computer.ibm_300pl.name=IBM䞪人电脑300PL tile.deco_emitter.name=Deco发光䜓 -tile.part_emitter.name=Deco粒子发射噚 tile.deco_lead.name=铅装饰块 tile.deco_rbmk.name=RBMK装饰块 tile.deco_rbmk_smooth.name=平滑RBMK装饰块 @@ -4438,6 +4745,13 @@ tile.dfc_stabilizer.name=DFC皳定噚 tile.dirt_dead.name=泥枣 tile.dirt_oily.name=油泥 tile.drill_pipe.name=钻杆 +tile.drone_crate.name=运蟓无人机坞 +tile.drone_crate_provider.name=物流䟛应箱 +tile.drone_crate_requester.name=物流请求箱 +tile.drone_dock.name=物流无人机码倎 +tile.drone_waypoint.name=运蟓无人机航路点 +tile.drone_waypoint.desc=运蟓无人机的航路点$䜿甚运蟓无人机铟接噚讟眮路埄$按顺序单击每䞪航路点和板条箱以创建路埄$然后平移单击以枅陀保存的䜍眮$右键单击或平移单击航路点以曎改航路点的偏移 +tile.drone_waypoint_request.name=物流无人机航路点 tile.door_bunker.name=仓闚 tile.door_metal.name=金属闚 tile.door_office.name=办公宀闚 @@ -4460,6 +4774,7 @@ tile.factory_titanium_furnace.name=工厂端口 tile.factory_titanium_hull.name=工厂倖壳 tile.fallout.name=蟐射尘 tile.fan.name=风扇 +tile.fan.desc=䜿甚红石激掻$将实䜓掚至最倚10䞪方块倖$甚螺䞝刀右键点击即可翻蜬 tile.fence_metal.name=铁䞝眑囎栏 tile.field_disturber.name=高胜场干扰机 tile.filing_cabinet.green.name=蒙尘的文件柜 @@ -4475,17 +4790,21 @@ tile.flame_war.name=盒䞭论战 tile.float_bomb.name=悬浮炞匹 tile.fluid_duct.name=通甚流䜓管道 tile.fluid_duct_box.name=通甚流䜓管道方圢 +tile.fluid_duct_exhaust.name=排气管 tile.fluid_duct_gauge.name=流量计管 tile.fluid_duct_gauge.desc=星瀺每䞪枞戏刻圚管眑有倚少流䜓移劚的管道$由桶或眐连接的分犻眑络被视䞺䞀䞪共享眑络。 tile.fluid_duct_neo.name=通甚流䜓管道 tile.fluid_duct_paintable.name=可喷挆涂层通甚流䜓富管 tile.fluid_duct_solid.name=垊涂层的通甚流䜓富管 +tile.fluid_switch.name=红石流䜓阀 +tile.fluid_valve.name=流䜓阀 tile.foam_layer.name=泡沫层 tile.foundry_basin.name=链造盘 tile.foundry_channel.name=铞造浇道 tile.foundry_tank.name=铞造池 tile.foundry_mold.name=浅铞造池 -tile.foundry_outlet.name=铞造出口 +tile.foundry_outlet.name=浇筑出口 +tile.foundry_slagtap.name=炉枣出口 tile.fraction_spacer.name=分銏塔分隔噚 tile.frozen_dirt.name=冰冻土 tile.frozen_grass.name=冰冻草 @@ -4499,6 +4818,7 @@ tile.furnace_steel.name=钢炉 tile.furnace_steel.desc=非垞倧的熔炉冶炌矿石时可提䟛加成。$这需芁倖郚热源$䌠热率ΔT*0.05tu/T$Δ衚瀺差倌T衚瀺枩床 tile.fusion_center.name=䞭心磁铁 tile.fusion_conductor.name=超富磁䜓 +tile.fusion_conductor_welded.name=超富磁䜓焊接 tile.fusion_core.name=聚变反应堆控制噚 tile.fusion_hatch.name=聚变反应堆端口 tile.fusion_heater.name=等犻子加热噚 @@ -4530,6 +4850,8 @@ tile.glass_polonium.name=钋玻璃 tile.glass_quartz.name=石英玻璃 tile.glass_trinitite.name=栞融玻璃 tile.glass_uranium.name=铀玻璃 +tile.glyphid_base.name=匂虫蜂巢块 +tile.glyphid_spawner.name=匂虫蜂巢繁殖方块 tile.gneiss_brick.name=页岩砖 tile.gneiss_chiseled.name=錟制页岩砖 tile.gneiss_tile.name=页岩瓷砖 @@ -4547,6 +4869,10 @@ tile.hadron_coil_neodymium.name=臎密钕线圈 tile.hadron_coil_schrabidate.name=臎密Sa酞铁线圈 tile.hadron_coil_schrabidium.name=密集Sa326线圈 tile.hadron_coil_starmetal.name=密集星蟉线圈 +tile.hadron_cooler.name=粒子加速噚冷华装眮 +tile.hadron_cooler.desc=冷华功率10$过冷阈倌10$冷华加成+10%%$过冷惩眚-25%% +tile.hadron_cooler_mk2.name=粒子加速噚冷华装眮-回文特制 +tile.hadron_cooler_mk2.desc=冷华功率5$效率功胜2-冷华-152/225$最高惩眚-90%% tile.hadron_core.name=粒子加速噚栞心组件 tile.hadron_diode.name=肖基特二极管 tile.hadron_plating.name=粒子加速噚镀层 @@ -4590,6 +4916,8 @@ tile.lamp_tritium_blue_off.name=蓝色氚灯 tile.lamp_tritium_blue_on.name=蓝色氚灯 tile.lamp_tritium_green_off.name=绿色氚灯 tile.lamp_tritium_green_on.name=绿色氚灯 +tile.lantern.name=灯笌 +tile.lantern_behemoth.name=旧灯笌 tile.launch_pad.name=富匹发射台 tile.launch_table.name=倧型发射台 tile.leaves_layer.name=萜叶 @@ -4598,10 +4926,13 @@ tile.machine_amgen.name=环境蟐射发电机 tile.machine_arc_furnace_off.name=电匧炉 tile.machine_arc_furnace_on.name=电匧炉 tile.machine_armor_table.name=装甲改装台 +tile.machine_ashpit.name=傚灰槜 +tile.machine_ashpit.desc=收集来自燃烧宀和加热炉的灰烬 tile.machine_assembler.name=装配机 tile.machine_assemfac.name=装配厂 tile.machine_autocrafter.name=自劚工䜜台 tile.machine_autosaw.name=自劚嗡嗡锯 +tile.machine_autosaw.desc=砍䌐附近的怍物重新种怍树朚$接受$-朚油$-乙醇$-鱌油$-重油 tile.machine_bat9000.name=å·šå°»-9000 傚眐 tile.machine_battery.name=蓄电池 tile.machine_battery_potato.name=马铃薯电池组 @@ -4620,12 +4951,18 @@ tile.machine_chungus.name=“利绎坊”巚型汜蜮机 tile.machine_chungus.desc=效率: 85%% tile.machine_coal_off.name=火力发电机 tile.machine_coal_on.name=火力发电机 +tile.machine_coker.name=焊化装眮 +tile.machine_coker.desc=炌焊并产生各类流䜓副产品$需芁倖郚热源$䌠热速率ΔT*0.025 TU/T tile.machine_combine_factory.name=CMB炌钢炉 tile.machine_combustion_engine.name=工䞚内燃机 +tile.machine_compressor.name=压猩机 tile.machine_condenser.name=蒞汜冷凝噚 +tile.machine_condenser_powered.name=倧功率蒞汜冷凝噚 tile.machine_controller.name=反应堆遥控暡块 tile.machine_converter_he_rf.name=HE→RF蜬换噚 tile.machine_converter_rf_he.name=RF→HE蜬换噚 +tile.machine_conveyor_press.name=蟓送垊锻压机 +tile.machine_conveyor_press.desc=䌠送垊从巊向右移劚$手持锻暡右键单击以安装$䜿甚螺䞝刀移陀锻暡 tile.machine_crucible.name=坩埚 tile.machine_crystallizer.name=矿物酞化噚 tile.machine_cyclotron.name=回旋加速噚 @@ -4642,6 +4979,7 @@ tile.machine_dineutronium_battery.name=Spark蓄电池 tile.machine_drill.name=自劚采矿钻机 tile.machine_electric_furnace_off.name=电炉 tile.machine_electric_furnace_on.name=电炉 +tile.machine_electrolyser.name=电解机 tile.machine_epress.name=电劚锻压机 tile.machine_excavator.name=倧型采矿钻机 tile.machine_fel.name=FEL自由电子激光噚 @@ -4655,6 +4993,8 @@ tile.machine_gascent.name=气䜓犻心机 tile.machine_generator.name=栞反应堆[旧] tile.machine_geo.name=地热发电机 tile.machine_hephaestus.name=地热换热噚 +tile.machine_industrial_boiler.name=工䞚锅炉 +tile.machine_industrial_boiler.desc=可以烧氎或加热油的倧型锅炉$需芁倖郚热源$䌠热率ΔT*0.01 TU/T$䞍䌚爆炞 tile.machine_industrial_generator.name=工䞚发电机 tile.machine_keyforge.name=锁匠桌 tile.machine_large_turbine.name=工䞚汜蜮机 @@ -4678,7 +5018,7 @@ tile.machine_radar.name=雷蟟 tile.machine_radgen.name=蟐射胜量发电机 tile.machine_radiolysis.name=攟射性同䜍玠热电机和蟐射裂解宀 tile.machine_reactor.name=增殖反应堆 -tile.machine_reactor_small.name=栞反应堆 +tile.machine_reactor_small.name=研究型反应堆 tile.machine_refinery.name=炌油厂 tile.machine_reix_mainframe.name=Rei-X䞻机[匀发䞭] tile.machine_rtg_blue.name=对流发电机 @@ -4698,7 +5038,7 @@ tile.machine_schrabidium_battery.name=Sa326蓄电池 tile.machine_schrabidium_transmutator.name=Sa326嬗变装眮 tile.machine_selenium.name=星型发劚机 tile.machine_shredder.name=粉碎机 -tile.machine_silex.name=激光同䜍玠分犻宀 +tile.machine_silex.name=SILEX激光同䜍玠分犻宀 tile.machine_siren.name=譊报噚 tile.machine_solar_boiler.name=倪阳胜锅炉 tile.machine_solidifier.name=工䞚固化机 @@ -4709,7 +5049,9 @@ tile.machine_steam_engine.name=蒞汜机 tile.machine_steam_engine.desc=效率85% tile.machine_stirling.name=斯特林发电机 tile.machine_stirling.desc=它将热量蜬化䞺胜量。这需芁倖郚热源$䌠热率T*0.1 TU/T$最倧进气量300 TU/T$效率50% -tile.machine_stirling_steel.name=重型斯特林发劚机 +tile.machine_stirling_creative.name=创造斯特林发劚机 +tile.machine_stirling_creative.desc=将热量蜬化䞺胜量。需芁倖郚热源$䌠热率T*0.1 TU/T$无限吞热/T$效率100% +tile.machine_stirling_steel.name=重型斯特林发电机 tile.machine_stirling_steel.desc=它将热量蜬化䞺胜量。这需芁倖郚热源$䜿甚曎重的霿蜮来支持曎高的枩床$䌠热率T*0.1 TU/T$最倧进气量1500 TU/T$效率50% tile.machine_storage_drum.name=栞废料倄理桶 tile.machine_telelinker.name=炮塔ID管理噚 @@ -4835,11 +5177,14 @@ tile.ore_uranium_scorched.name=烧焊的铀矿石 tile.ore_verticium.name=韊執赛矿石 tile.ore_volcano.name=地热裂猝 tile.ore_weidanium.name=魏䞹矿石 +tile.part_emitter.name=Deco粒子发射噚 tile.pink_barrel.name=煀油桶 tile.pink_log.name=粉色原朚 tile.pink_planks.name=粉色朚板 tile.pink_slab.name=粉色朚半砖 tile.pink_stairs.name=粉色朚台阶 +tile.piston_inserter.name=插入噚 +tile.piston_inserter.desc=可以䜿甚自劚化接收䞀件物品$䜿甚红石它䌚将物品插入钻孔石墚䞭$钻孔石墚的物品郜䌚被掚出䞀栌$插入噚䞎钻孔石墚之闎需芁有䞀栌空气 tile.plant_dead.name=死亡怍物 tile.plant_flower.cd0.name=芥子柳 tile.plant_flower.cd1.name=芥子柳 @@ -4861,9 +5206,35 @@ tile.pribris.name=RBMK石墚匏反应堆残骞 tile.pribris_burning.name=燃烧的RBMK反应堆残骞 tile.pribris_digamma.name=发黑的RBMK反应堆残骞 tile.pribris_radiating.name=阮燃的RBMK反应堆残骞 -tile.radio_torch_receiver.name=无线电接收噚䞊的红石 +tile.pump_electric.name=电劚地䞋氎泵 +tile.pump_electric.desc=甚电力抜取地䞋氎$产氎量高蟟10000mB/t$需芁攟眮圚Y:70以䞋 +tile.pump_steam.name=蒞汜劚力地䞋氎泵 +tile.pump_steam.desc=䜿甚蒞汜抜取地䞋氎$产氎量高蟟1000mB/t$需芁攟眮圚Y:70以䞋 +tile.pwr_block.name=PWR压氎反应堆 +tile.pwr_casing.name=PWR压力容噚 +tile.pwr_casing.desc=需芁芆盖反应堆的所有内郚零件以圢成$䜍眮:倖壳 +tile.pwr_channel.name=PWR冷华剂通道 +tile.pwr_channel.desc=䌠富热量以加热冷华剂$䜍眮任意 +tile.pwr_control.name=PWR控制棒 +tile.pwr_control.desc=允讞控制连接的燃料棒$攟眮各燃料棒连线眑栌之闎 +tile.pwr_controller.name=PWR控制噚 +tile.pwr_controller.desc=PWR的接入终端$䜍眮倖壳每䞪反应堆只芁䞀䞪$右键单击以组装反应堆 +tile.pwr_fuel.name=PWR燃料棒 +tile.pwr_fuel.desc=增加压氎堆燃料容量$䜍眮眑栌甚于增加反应效率 +tile.pwr_heatex.name=PWR换热噚 +tile.pwr_heatex.desc=将栞心热量蜬移到倖壳$䜍眮任意 +tile.pwr_neutron_source.name=PWR䞭子源 +tile.pwr_neutron_source.desc=向堆芯添加20䞪䞭子通量$䜍眮任意$䞭子通量只有圚连接打匀时才胜到蟟燃料棒 +tile.pwr_port.name=PWR接入端口 +tile.pwr_port.desc=允讞物品和液䜓亀换$䜍眮组件 +tile.pwr_reflector.name=PWR䞭子反射噚 +tile.pwr_reflector.desc=将䞭子通量反射回燃料棒$䜍眮眑栌甚于增加反应速率$可䜜䞺倖壳材料 +tile.radio_telex.name=Telex Machine +tile.radio_torch_counter.name=红石无线项目计数噚 +tile.radio_torch_counter.desc=平面或比蟃噚兌容块䞊的标牌$根据匹配项目的数量发出信号 +tile.radio_torch_receiver.name=无线红石信号接收噚 tile.radio_torch_receiver.desc=可圚平坊衚面或䞎比蟃噚兌容的方块䞊攟眮 -tile.radio_torch_sender.name=无线电发射机䞊的红石 +tile.radio_torch_sender.name=无线红石信号发射噚 tile.radio_torch_sender.desc=可圚平坊衚面或比蟃噚兌容的方块䞊攟眮$读取红石信号或比蟃噚蟓入 tile.radiobox.name=无线怪物枅陀箱 tile.radiorec.name=坏掉的收音机 @@ -4903,6 +5274,8 @@ tile.reactor_inserter.name=反应堆燃料插入噚 tile.red_barrel.name=炞药桶 tile.red_cable.name=玫铜电线 tile.red_cable_classic.name=玫铜电猆经兞型 +tile.red_cable_gauge.name=功率计 +tile.red_cable_gauge.desc=星瀺每刻圚眑络䞭流劚的电力$的电猆$由傚胜方块连接的拆分眑络被视䞺䞀䞪共享眑络。 tile.red_cable_paintable.name=可涂挆玫铜线 tile.red_connector.name=电力连接噚 tile.red_pylon.name=电线杆 @@ -4912,12 +5285,15 @@ tile.reinforced_brick.name=区化石倎 tile.reinforced_brick_stairs.name=钢筋石楌梯 tile.reinforced_ducrete.name=加固高密床莫铀混凝土 tile.reinforced_glass.name=区化玻璃 +tile.reinforced_glass_pane.name=区化玻璃窗 tile.reinforced_lamp_off.name=区化红石灯 tile.reinforced_lamp_on.name=区化红石灯 tile.reinforced_light.name=区化萀石 tile.reinforced_sand.name=区化砂石 tile.reinforced_stone.name=臎密石倎 tile.reinforced_stone_stairs.name=臎密石倎楌梯 +tile.reinforced_laminate.name=区化倹层玻璃 +tile.reinforced_laminate_pane.name=区化倹层隔板 tile.rejuvinator.name=再生装眮 tile.residue.name=云残留 tile.safe.name=保险箱 @@ -4950,6 +5326,7 @@ tile.sellafield.4.name=地狱般的攟射性熔融凝固物 tile.sellafield.5.name=攟射性熔融凝固物栞心 tile.sellafield_slaked.name=消沉的攟射性熔融凝固物 tile.semtex.name=塞姆汀塑胶炞药 +tile.sliding_blast_door.name=滑劚防爆闚 tile.solar_mirror.name=定日镜 tile.soyuz_capsule.name=莧物着陆舱 tile.soyuz_launcher.name=联盟号发射平台 @@ -4962,7 +5339,7 @@ tile.steel_beam.name=钢梁 tile.steel_corner.name=钢墙角 tile.steel_grate.name=钢栌栅 tile.steel_grate_wide.name=物品栌栅 -tile.steel_grate_wide.desc=让物品和经验球掉萜䞋去 +tile.steel_grate_wide.desc=只䌚让物品和经验球掉萜䞋去 tile.steel_poles.name=钢杆 tile.steel_roof.name=钢倩花顶 tile.steel_scaffold.name=钢脚手架 @@ -4973,6 +5350,7 @@ tile.stone_depth_nether.name=䞋界深层岩石 tile.stone_gneiss.name=石墚页岩 tile.stone_porous.name=倚孔石 tile.stone_resource.asbestos.name=枩石棉 +tile.stone_resource.bauxite.name=铝土矿 tile.stone_resource.hematite.name=赀铁矿 tile.stone_resource.limestone.name=石灰石 tile.stone_resource.malachite.name=孔雀石 diff --git a/src/main/resources/assets/hbm/models/TsarBomba.obj b/src/main/resources/assets/hbm/models/TsarBomba.obj deleted file mode 100644 index e74a3094e..000000000 --- a/src/main/resources/assets/hbm/models/TsarBomba.obj +++ /dev/null @@ -1,799 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'tsarBomb.blend' -# www.blender.org -o Cylinder -v -1.000000 0.999999 -1.000000 -v 1.000000 1.000001 -1.000000 -v -1.000000 0.617316 -0.923880 -v 1.000000 0.617317 -0.923880 -v -0.999999 0.292892 -0.707107 -v 1.000001 0.292894 -0.707107 -v -0.999999 0.076120 -0.382683 -v 1.000001 0.076121 -0.382683 -v -0.999999 -0.000001 0.000000 -v 1.000001 0.000001 0.000000 -v -0.999999 0.076120 0.382684 -v 1.000001 0.076121 0.382684 -v -0.999999 0.292892 0.707107 -v 1.000001 0.292894 0.707107 -v -1.000000 0.617316 0.923880 -v 1.000000 0.617317 0.923880 -v -1.000000 0.999999 1.000000 -v 1.000000 1.000001 1.000000 -v -1.000000 1.382682 0.923880 -v 1.000000 1.382684 0.923880 -v -1.000001 1.707106 0.707107 -v 0.999999 1.707108 0.707107 -v -1.000001 1.923879 0.382684 -v 0.999999 1.923880 0.382684 -v -1.000001 1.999999 -0.000000 -v 0.999999 2.000001 -0.000000 -v -1.000001 1.923878 -0.382684 -v 0.999999 1.923880 -0.382684 -v -1.000001 1.707106 -0.707107 -v 0.999999 1.707108 -0.707107 -v -1.000000 1.382682 -0.923880 -v 1.000000 1.382684 -0.923880 -v 2.000000 0.674719 -0.785298 -v 2.000000 0.398959 -0.601041 -v 1.999999 0.214702 -0.325281 -v 1.999999 0.150000 -0.000000 -v 1.999999 0.214702 0.325281 -v 2.000000 0.398959 0.601041 -v 2.000000 0.674719 0.785298 -v 2.000000 1.000000 0.850000 -v 2.000000 1.325281 0.785298 -v 2.000000 1.601041 0.601041 -v 2.000001 1.785298 0.325281 -v 2.000001 1.850000 0.000000 -v 2.000001 1.785298 -0.325281 -v 2.000000 1.601041 -0.601041 -v 2.000000 1.325281 -0.785298 -v 2.000000 1.000000 -0.850000 -v -3.500000 1.000000 -0.600000 -v -3.500000 1.229610 -0.554328 -v -3.499999 1.424264 -0.424264 -v -3.499999 1.554328 -0.229610 -v -3.499999 1.600000 0.000000 -v -3.499999 1.554328 0.229610 -v -3.499999 1.424264 0.424264 -v -3.500000 1.229610 0.554328 -v -3.500000 1.000000 0.600000 -v -3.500000 0.770390 0.554328 -v -3.500000 0.575736 0.424264 -v -3.500000 0.445672 0.229610 -v -3.500000 0.400000 -0.000000 -v -3.500000 0.445672 -0.229610 -v -3.500000 0.575736 -0.424264 -v -3.500000 0.770390 -0.554328 -v -5.000000 1.000000 -0.600000 -v -5.000000 1.229610 -0.554328 -v -5.000000 1.424264 -0.424264 -v -5.000000 1.554328 -0.229610 -v -4.999999 1.600000 0.000000 -v -5.000000 1.554328 0.229610 -v -5.000000 1.424264 0.424264 -v -5.000000 1.229610 0.554328 -v -5.000000 1.000000 0.600000 -v -5.000000 0.770390 0.554328 -v -5.000000 0.575736 0.424264 -v -5.000000 0.445672 0.229610 -v -5.000000 0.400000 -0.000000 -v -5.000000 0.445672 -0.229610 -v -5.000000 0.575736 -0.424264 -v -5.000000 0.770390 -0.554328 -v 2.700000 1.000000 -0.600000 -v 2.700000 1.229610 -0.554328 -v 2.700001 1.424264 -0.424264 -v 2.700001 1.554328 -0.229610 -v 2.700001 1.600000 0.000000 -v 2.700001 1.554328 0.229610 -v 2.700001 1.424264 0.424264 -v 2.700000 1.229610 0.554328 -v 2.700000 1.000000 0.600000 -v 2.700000 0.770390 0.554328 -v 2.700000 0.575736 0.424264 -v 2.699999 0.445672 0.229610 -v 2.699999 0.400000 -0.000000 -v 2.699999 0.445672 -0.229610 -v 2.700000 0.575736 -0.424264 -v 2.700000 0.770390 -0.554328 -v 3.000000 1.000000 -0.000000 -v -4.250000 0.289964 -1.196548 -v -4.250000 0.318774 -1.213181 -v -4.250000 1.391259 0.016633 -v -3.500000 1.391259 0.016633 -v -4.250000 1.391259 -0.016633 -v -3.500000 1.391259 -0.016633 -v -4.250000 2.391259 -0.016637 -v -4.250000 1.891259 0.016631 -v -4.250000 0.289968 1.196550 -v -4.250000 0.789966 0.330524 -v -3.500000 0.789966 0.330524 -v -4.250000 0.818775 0.347157 -v -3.500000 0.818775 0.347157 -v -4.250000 1.891259 -0.016635 -v -4.250000 0.818775 -0.347157 -v -3.500000 0.818775 -0.347157 -v -4.250000 0.789966 -0.330524 -v -3.500000 0.789966 -0.330524 -v -4.250000 2.391259 0.016629 -v -4.250000 0.318777 1.213183 -v -5.000000 2.391259 -0.016637 -v -5.000000 1.891259 0.016631 -v -5.000000 1.891259 -0.016635 -v -5.000000 2.391259 0.016629 -v -4.250000 2.057926 -0.016636 -v -4.250000 2.224592 -0.016636 -v -3.500000 2.224592 -0.016636 -v -3.750000 2.391259 -0.016637 -v -3.750000 2.391259 0.016629 -v -4.250000 2.057926 0.016630 -v -4.250000 2.224592 0.016630 -v -3.500000 2.224592 0.016630 -v -4.250000 0.568774 -0.780169 -v -4.250000 0.539965 -0.763536 -v -4.250000 0.568776 0.780170 -v -4.250000 0.539967 0.763537 -v -5.000000 0.289964 -1.196548 -v -5.000000 0.318773 -1.213181 -v -5.000000 0.568774 -0.780169 -v -5.000000 0.539965 -0.763536 -v -5.000000 0.289968 1.196550 -v -5.000000 0.318777 1.213183 -v -5.000000 0.568776 0.780170 -v -5.000000 0.539967 0.763537 -v -3.750000 0.289965 -1.196548 -v -3.500000 0.373298 -1.052211 -v -3.750000 0.318774 -1.213181 -v -3.500000 0.402107 -1.068844 -v -3.750000 0.318777 1.213183 -v -3.500000 0.402110 1.068846 -v -3.750000 0.289968 1.196550 -v -3.500000 0.373301 1.052213 -vt 0.160468 0.428574 -vt 0.125244 0.428574 -vt 0.125245 0.248024 -vt 0.090021 0.428574 -vt 0.090021 0.248023 -vt 0.054797 0.428574 -vt 0.054798 0.248023 -vt 0.019573 0.428574 -vt 0.019574 0.248023 -vt 0.583153 0.428576 -vt 0.547929 0.428576 -vt 0.547929 0.248025 -vt 0.512705 0.428576 -vt 0.512706 0.248025 -vt 0.477481 0.428575 -vt 0.477482 0.248025 -vt 0.442258 0.428575 -vt 0.442258 0.248025 -vt 0.407034 0.428575 -vt 0.407035 0.248025 -vt 0.371810 0.428575 -vt 0.371811 0.248024 -vt 0.336587 0.428575 -vt 0.336587 0.248024 -vt 0.301363 0.428575 -vt 0.301363 0.248024 -vt 0.266139 0.428575 -vt 0.266140 0.248024 -vt 0.230915 0.428575 -vt 0.195692 0.428575 -vt 0.160469 0.248024 -vt 0.195692 0.248024 -vt 0.308409 0.019574 -vt 0.329543 0.019574 -vt 0.343633 0.019575 -vt 0.364767 0.019575 -vt 0.378856 0.019574 -vt 0.399991 0.019574 -vt 0.414080 0.019575 -vt 0.435214 0.019575 -vt 0.449303 0.019574 -vt 0.470438 0.019574 -vt 0.484527 0.019575 -vt 0.505661 0.019575 -vt 0.519751 0.019574 -vt 0.540885 0.019574 -vt 0.554975 0.019575 -vt 0.576109 0.019575 -vt 0.583153 0.248025 -vt 0.026620 0.019573 -vt 0.047754 0.019573 -vt 0.061843 0.019574 -vt 0.082977 0.019574 -vt 0.097067 0.019574 -vt 0.118201 0.019574 -vt 0.132291 0.019574 -vt 0.153425 0.019574 -vt 0.167514 0.019573 -vt 0.188649 0.019573 -vt 0.202738 0.019575 -vt 0.223872 0.019575 -vt 0.230916 0.248024 -vt 0.237962 0.019573 -vt 0.259096 0.019574 -vt 0.273185 0.019574 -vt 0.294320 0.019574 -vt 0.980421 0.146384 -vt 0.980421 0.167518 -vt 0.845008 0.167513 -vt 0.980420 0.188653 -vt 0.980419 0.209787 -vt 0.845006 0.209781 -vt 0.980418 0.230921 -vt 0.845005 0.230915 -vt 0.980417 0.252055 -vt 0.845004 0.252050 -vt 0.980416 0.273189 -vt 0.845003 0.273184 -vt 0.980415 0.294324 -vt 0.845002 0.294318 -vt 0.980415 0.315458 -vt 0.845002 0.315452 -vt 0.980414 0.336592 -vt 0.845001 0.336587 -vt 0.980413 0.357726 -vt 0.845000 0.357721 -vt 0.845014 0.019573 -vt 0.980427 0.019579 -vt 0.980426 0.040713 -vt 0.845013 0.040707 -vt 0.980425 0.061847 -vt 0.845012 0.061842 -vt 0.980424 0.082982 -vt 0.845011 0.082976 -vt 0.980423 0.104116 -vt 0.845010 0.104110 -vt 0.980422 0.125250 -vt 0.845009 0.125244 -vt 0.062131 0.791805 -vt 0.027661 0.768773 -vt 0.042605 0.693644 -vt 0.052155 0.519821 -vt 0.047751 0.586778 -vt 0.026617 0.586778 -vt 0.580511 0.519823 -vt 0.576108 0.586780 -vt 0.554973 0.586780 -vt 0.515347 0.519823 -vt 0.545287 0.519823 -vt 0.540884 0.586780 -vt 0.480123 0.519822 -vt 0.510063 0.519822 -vt 0.505660 0.586780 -vt 0.444899 0.519822 -vt 0.474840 0.519822 -vt 0.470437 0.586780 -vt 0.409676 0.519822 -vt 0.439616 0.519822 -vt 0.435213 0.586780 -vt 0.374452 0.519822 -vt 0.404392 0.519822 -vt 0.399989 0.586780 -vt 0.097065 0.586779 -vt 0.118199 0.586779 -vt 0.107632 0.646408 -vt 0.339228 0.519822 -vt 0.369168 0.519822 -vt 0.364765 0.586780 -vt 0.304004 0.519822 -vt 0.333945 0.519822 -vt 0.329541 0.586780 -vt 0.298721 0.519822 -vt 0.294318 0.586779 -vt 0.273183 0.586779 -vt 0.263497 0.519822 -vt 0.259094 0.586779 -vt 0.237960 0.586779 -vt 0.228273 0.519822 -vt 0.223870 0.586779 -vt 0.202736 0.586779 -vt 0.193050 0.519822 -vt 0.188646 0.586779 -vt 0.167512 0.586779 -vt 0.519750 0.586780 -vt 0.530317 0.646409 -vt 0.484526 0.586780 -vt 0.495093 0.646409 -vt 0.449302 0.586780 -vt 0.459869 0.646409 -vt 0.414079 0.586780 -vt 0.424645 0.646409 -vt 0.378855 0.586780 -vt 0.389422 0.646409 -vt 0.343631 0.586780 -vt 0.354198 0.646409 -vt 0.308407 0.586780 -vt 0.318974 0.646409 -vt 0.283750 0.646409 -vt 0.248526 0.646409 -vt 0.213303 0.646409 -vt 0.178079 0.646408 -vt 0.132288 0.586779 -vt 0.153423 0.586779 -vt 0.142855 0.646408 -vt 0.061841 0.586778 -vt 0.082975 0.586779 -vt 0.072408 0.646408 -vt 0.037184 0.646408 -vt 0.565540 0.646410 -vt 0.087378 0.519821 -vt 0.122602 0.519821 -vt 0.157826 0.519822 -vt 0.233557 0.519822 -vt 0.268781 0.519822 -vt 0.550570 0.519823 -vt 0.164969 0.753263 -vt 0.164971 0.685556 -vt 0.167974 0.685556 -vt 0.207121 0.753262 -vt 0.207121 0.685556 -vt 0.210124 0.685556 -vt 0.249270 0.685556 -vt 0.252274 0.685556 -vt 0.252274 0.753264 -vt 0.249271 0.753264 -vt 0.252274 0.798401 -vt 0.715578 0.663671 -vt 0.712575 0.663671 -vt 0.712576 0.618535 -vt 0.712576 0.878866 -vt 0.712575 0.803639 -vt 0.715578 0.803639 -vt 0.712575 0.731377 -vt 0.715578 0.731377 -vt 0.712575 0.776515 -vt 0.667437 0.731377 -vt 0.667438 0.663671 -vt 0.697529 0.799084 -vt 0.622299 0.799084 -vt 0.760716 0.663671 -vt 0.760716 0.731377 -vt 0.715578 0.776515 -vt 0.730624 0.799084 -vt 0.164969 0.798401 -vt 0.167973 0.753263 -vt 0.712575 0.177554 -vt 0.715578 0.177554 -vt 0.715578 0.204678 -vt 0.207120 0.798401 -vt 0.210124 0.753262 -vt 0.715578 0.579388 -vt 0.712575 0.579388 -vt 0.712575 0.504161 -vt 0.715578 0.019573 -vt 0.715578 0.064710 -vt 0.712575 0.064710 -vt 0.760716 0.064710 -vt 0.760716 0.132416 -vt 0.715578 0.132416 -vt 0.712575 0.132416 -vt 0.667437 0.132416 -vt 0.667437 0.064710 -vt 0.712575 0.319054 -vt 0.715578 0.319054 -vt 0.715578 0.364192 -vt 0.712575 0.477036 -vt 0.715578 0.477036 -vt 0.760716 0.364192 -vt 0.760716 0.431899 -vt 0.715578 0.431899 -vt 0.712575 0.431899 -vt 0.667437 0.431899 -vt 0.667437 0.364192 -vt 0.697529 0.200123 -vt 0.622299 0.200123 -vt 0.730624 0.200123 -vt 0.712575 0.204678 -vt 0.715578 0.279908 -vt 0.697529 0.499605 -vt 0.622300 0.499605 -vt 0.730624 0.499605 -vt 0.845008 0.146379 -vt 0.845007 0.188647 -vt 0.062131 0.685556 -vt 0.083265 0.685556 -vt 0.102790 0.693644 -vt 0.117734 0.708588 -vt 0.125822 0.728113 -vt 0.125822 0.749248 -vt 0.117734 0.768773 -vt 0.102790 0.783717 -vt 0.083265 0.791805 -vt 0.042605 0.783717 -vt 0.019573 0.749248 -vt 0.019573 0.728114 -vt 0.027661 0.708588 -vt 0.022215 0.519821 -vt 0.198333 0.519822 -vt 0.163109 0.519822 -vt 0.057438 0.519821 -vt 0.092662 0.519821 -vt 0.127886 0.519821 -vt 0.249271 0.798401 -vt 0.715579 0.618535 -vt 0.715579 0.878866 -vt 0.622300 0.731377 -vt 0.805854 0.799084 -vt 0.805854 0.731377 -vt 0.167972 0.798401 -vt 0.210123 0.798401 -vt 0.715578 0.504161 -vt 0.712575 0.019573 -vt 0.712575 0.364192 -vt 0.622300 0.132416 -vt 0.805853 0.132416 -vt 0.805853 0.200123 -vt 0.712575 0.279908 -vt 0.622299 0.431899 -vt 0.805853 0.499605 -vt 0.805853 0.431899 -vn 0.000000 -0.195100 -0.980800 -vn 0.000000 -0.555600 -0.831500 -vn 0.000000 -0.831500 -0.555600 -vn 0.000000 -0.980800 -0.195100 -vn 0.000000 -0.980800 0.195100 -vn 0.000000 -0.831500 0.555600 -vn 0.000000 -0.555600 0.831500 -vn 0.000000 -0.195100 0.980800 -vn -0.000000 0.195100 0.980800 -vn -0.000000 0.555600 0.831500 -vn -0.000000 0.831500 0.555600 -vn -0.000000 0.980800 0.195100 -vn -0.000000 0.980800 -0.195100 -vn -0.000000 0.831500 -0.555600 -vn -0.000000 0.195100 -0.980800 -vn -0.000000 0.555600 -0.831500 -vn -0.155000 0.968900 0.192700 -vn -0.155000 0.821400 0.548900 -vn -0.155000 0.548900 0.821400 -vn -0.155000 0.192700 0.968900 -vn -0.155000 -0.192700 0.968900 -vn -0.155000 -0.548900 0.821400 -vn -0.155000 -0.821400 0.548900 -vn -0.155000 -0.968900 0.192700 -vn -0.155000 -0.968900 -0.192700 -vn -0.155000 -0.821400 -0.548900 -vn -0.155000 -0.548900 -0.821400 -vn -0.155000 -0.192700 -0.968900 -vn -0.155000 0.192700 -0.968900 -vn -0.155000 0.548900 -0.821400 -vn -0.155000 0.821400 -0.548900 -vn -0.155000 0.968900 -0.192700 -vn -1.000000 0.000000 0.000000 -vn 0.330600 -0.925600 -0.184100 -vn 0.330600 -0.925600 0.184100 -vn 0.330600 -0.784700 0.524300 -vn 0.330600 -0.524300 0.784700 -vn 0.330600 -0.184100 0.925600 -vn 0.330600 0.184100 0.925600 -vn 0.330600 0.524300 0.784700 -vn 0.890900 -0.252300 -0.377600 -vn 0.330600 0.784700 0.524300 -vn 0.330600 0.925600 0.184100 -vn 0.330600 0.925600 -0.184100 -vn 0.330600 0.784700 -0.524300 -vn 0.330600 0.524300 -0.784700 -vn 0.330600 0.184100 -0.925600 -vn 0.890900 -0.377600 0.252300 -vn 0.890900 -0.252300 0.377600 -vn 0.890900 -0.088600 0.445500 -vn 0.890900 0.088600 0.445500 -vn 0.890900 0.252300 0.377600 -vn 0.890900 0.377600 0.252300 -vn 0.890900 0.445500 0.088600 -vn 0.890900 0.445500 -0.088600 -vn 0.890900 0.377600 -0.252300 -vn 0.890900 0.252300 -0.377600 -vn 0.890900 0.088600 -0.445500 -vn 0.890900 -0.088600 -0.445500 -vn 0.890900 -0.377600 -0.252300 -vn 0.890900 -0.445500 -0.088600 -vn 0.890900 -0.445500 0.088600 -vn 0.330600 -0.784700 -0.524300 -vn 0.330600 -0.524300 -0.784700 -vn 0.330600 -0.184100 -0.925600 -vn 0.145600 -0.193000 -0.970300 -vn 0.145600 0.193000 -0.970300 -vn 0.145600 0.549700 -0.822600 -vn 0.145600 0.822600 -0.549700 -vn 0.145600 0.970300 -0.193000 -vn 0.145600 0.970300 0.193000 -vn 0.145600 0.822600 0.549700 -vn 0.145600 0.549700 0.822600 -vn 0.145600 0.193000 0.970300 -vn 0.145600 -0.193000 0.970300 -vn 0.145600 -0.549700 0.822600 -vn 0.145600 -0.822600 0.549700 -vn 0.145600 -0.970300 0.193000 -vn 0.145600 -0.970300 -0.193000 -vn 0.145600 -0.822600 -0.549700 -vn 0.145600 -0.549700 -0.822600 -vn 0.000000 0.500000 0.866000 -vn 0.000000 0.500000 -0.866000 -vn 0.000000 -1.000000 0.000000 -vn 1.000000 -0.000000 0.000000 -vn -0.000000 1.000000 -0.000000 -vn 0.554700 0.832100 0.000000 -vn 0.000000 -0.000000 -1.000000 -vn 0.000000 0.000000 1.000000 -vn 0.554700 -0.416000 -0.720600 -vn -0.000000 0.866000 -0.500000 -vn 0.000000 -0.866000 0.500000 -vn 0.554700 -0.416000 0.720600 -vn 0.000000 -0.866000 -0.500000 -vn -0.000000 0.866000 0.500000 -vn 0.000000 -0.500000 -0.866000 -vn -0.000000 -0.500000 0.866000 -vn 0.554700 0.832000 0.000000 -s off -f 2/1/1 4/2/1 3/3/1 -f 4/2/2 6/4/2 5/5/2 -f 6/4/3 8/6/3 7/7/3 -f 8/6/4 10/8/4 9/9/4 -f 10/10/5 12/11/5 11/12/5 -f 12/11/6 14/13/6 13/14/6 -f 14/13/7 16/15/7 15/16/7 -f 16/15/8 18/17/8 17/18/8 -f 18/17/9 20/19/9 19/20/9 -f 20/19/10 22/21/10 21/22/10 -f 22/21/11 24/23/11 23/24/11 -f 24/23/12 26/25/12 25/26/12 -f 25/26/13 26/25/13 28/27/13 -f 27/28/14 28/27/14 30/29/14 -f 32/30/15 2/1/15 1/31/15 -f 30/29/16 32/30/16 31/32/16 -f 53/33/17 54/34/17 23/24/17 -f 23/24/18 54/35/18 55/36/18 -f 55/37/19 56/38/19 19/20/19 -f 19/20/20 56/39/20 57/40/20 -f 17/18/21 57/41/21 58/42/21 -f 58/43/22 59/44/22 13/14/22 -f 59/45/23 60/46/23 11/12/23 -f 60/47/24 61/48/24 9/49/24 -f 61/50/25 62/51/25 7/7/25 -f 62/52/26 63/53/26 5/5/26 -f 63/54/27 64/55/27 3/3/27 -f 64/56/28 49/57/28 1/31/28 -f 1/31/29 49/58/29 50/59/29 -f 50/60/30 51/61/30 29/62/30 -f 51/63/31 52/64/31 27/28/31 -f 52/65/32 53/66/32 25/26/32 -f 67/67/14 68/68/14 52/69/14 -f 52/69/13 68/68/13 69/70/13 -f 69/70/12 70/71/12 54/72/12 -f 70/71/11 71/73/11 55/74/11 -f 71/73/10 72/75/10 56/76/10 -f 72/75/9 73/77/9 57/78/9 -f 73/77/8 74/79/8 58/80/8 -f 74/79/7 75/81/7 59/82/7 -f 75/81/6 76/83/6 60/84/6 -f 76/83/5 77/85/5 61/86/5 -f 61/87/4 77/88/4 78/89/4 -f 62/90/3 78/89/3 79/91/3 -f 63/92/2 79/91/2 80/93/2 -f 64/94/1 80/93/1 65/95/1 -f 49/96/15 65/95/15 66/97/15 -f 50/98/16 66/97/16 67/67/16 -f 73/99/33 71/100/33 67/101/33 -f 35/102/34 94/103/34 93/104/34 -f 36/105/35 93/106/35 92/107/35 -f 38/108/36 37/109/36 92/110/36 -f 39/111/37 38/112/37 91/113/37 -f 40/114/38 39/115/38 90/116/38 -f 41/117/39 40/118/39 89/119/39 -f 42/120/40 41/121/40 88/122/40 -f 95/123/41 96/124/41 97/125/41 -f 43/126/42 42/127/42 87/128/42 -f 44/129/43 43/130/43 86/131/43 -f 44/132/44 85/133/44 84/134/44 -f 45/135/45 84/136/45 83/137/45 -f 46/138/46 83/139/46 82/140/46 -f 47/141/47 82/142/47 81/143/47 -f 91/144/48 92/110/48 97/145/48 -f 90/146/49 91/113/49 97/147/49 -f 89/148/50 90/116/50 97/149/50 -f 88/150/51 89/119/51 97/151/51 -f 87/152/52 88/122/52 97/153/52 -f 86/154/53 87/128/53 97/155/53 -f 85/156/54 86/131/54 97/157/54 -f 84/134/55 85/133/55 97/158/55 -f 83/137/56 84/136/56 97/159/56 -f 82/140/57 83/139/57 97/160/57 -f 81/143/58 82/142/58 97/161/58 -f 96/162/59 81/163/59 97/164/59 -f 94/165/60 95/166/60 97/167/60 -f 93/104/61 94/103/61 97/168/61 -f 93/106/62 97/169/62 92/107/62 -f 34/170/63 95/166/63 94/165/63 -f 33/171/64 96/124/64 95/123/64 -f 48/172/65 81/163/65 96/162/65 -f 4/2/66 2/1/66 48/172/66 -f 2/1/67 32/30/67 47/141/67 -f 32/30/68 30/29/68 46/138/68 -f 28/27/69 45/135/69 46/173/69 -f 26/25/70 44/132/70 45/174/70 -f 24/23/71 43/130/71 44/129/71 -f 22/21/72 42/127/72 43/126/72 -f 20/19/73 41/121/73 42/120/73 -f 18/17/74 40/118/74 41/117/74 -f 16/15/75 39/115/75 40/114/75 -f 14/13/76 38/112/76 39/111/76 -f 12/11/77 37/109/77 38/108/77 -f 10/10/78 36/105/78 37/175/78 -f 10/8/79 8/6/79 35/102/79 -f 8/6/80 6/4/80 34/170/80 -f 6/4/81 4/2/81 33/171/81 -f 130/176/82 136/177/82 137/178/82 -f 133/179/83 141/180/83 140/181/83 -f 119/182/84 120/183/84 111/184/84 -f 105/185/33 111/184/33 102/186/33 -f 121/187/33 118/188/33 120/189/33 -f 103/190/85 124/191/85 129/192/85 -f 104/193/86 121/187/86 116/194/86 -f 129/192/87 124/191/87 125/195/87 -f 104/193/88 111/196/88 120/197/88 -f 111/196/88 124/198/88 103/199/88 -f 119/200/89 105/201/89 116/194/89 -f 126/202/89 105/201/89 129/203/89 -f 112/204/33 130/176/33 131/205/33 -f 142/206/90 144/207/90 145/208/90 -f 107/209/33 133/179/33 132/210/33 -f 108/211/85 110/212/85 147/213/85 -f 136/214/33 135/215/33 134/216/33 -f 136/217/91 130/218/91 99/219/91 -f 98/220/92 131/221/92 137/222/92 -f 140/223/33 141/224/33 138/225/33 -f 147/213/93 146/226/93 148/227/93 -f 141/228/94 133/229/94 106/230/94 -f 117/231/95 132/232/95 140/233/95 -f 131/221/92 143/234/92 115/235/92 -f 145/236/91 144/207/91 130/218/91 -f 98/220/96 99/219/96 144/207/96 -f 143/237/85 145/208/85 113/238/85 -f 117/231/97 138/225/97 106/230/97 -f 132/232/95 147/239/95 110/240/95 -f 148/227/94 133/229/94 149/241/94 -f 1/31/1 2/1/1 3/3/1 -f 3/3/2 4/2/2 5/5/2 -f 5/5/3 6/4/3 7/7/3 -f 7/7/4 8/6/4 9/9/4 -f 9/49/5 10/10/5 11/12/5 -f 11/12/6 12/11/6 13/14/6 -f 13/14/7 14/13/7 15/16/7 -f 15/16/8 16/15/8 17/18/8 -f 17/18/9 18/17/9 19/20/9 -f 19/20/10 20/19/10 21/22/10 -f 21/22/11 22/21/11 23/24/11 -f 23/24/12 24/23/12 25/26/12 -f 27/28/13 25/26/13 28/27/13 -f 29/62/14 27/28/14 30/29/14 -f 31/32/15 32/30/15 1/31/15 -f 29/62/16 30/29/16 31/32/16 -f 25/26/17 53/33/17 23/24/17 -f 21/22/18 23/24/18 55/36/18 -f 21/22/19 55/37/19 19/20/19 -f 17/18/20 19/20/20 57/40/20 -f 15/16/21 17/18/21 58/42/21 -f 15/16/22 58/43/22 13/14/22 -f 13/14/23 59/45/23 11/12/23 -f 11/12/24 60/47/24 9/49/24 -f 9/9/25 61/50/25 7/7/25 -f 7/7/26 62/52/26 5/5/26 -f 5/5/27 63/54/27 3/3/27 -f 3/3/28 64/56/28 1/31/28 -f 31/32/29 1/31/29 50/59/29 -f 31/32/30 50/60/30 29/62/30 -f 29/62/31 51/63/31 27/28/31 -f 27/28/32 52/65/32 25/26/32 -f 51/242/14 67/67/14 52/69/14 -f 53/243/13 52/69/13 69/70/13 -f 53/243/12 69/70/12 54/72/12 -f 54/72/11 70/71/11 55/74/11 -f 55/74/10 71/73/10 56/76/10 -f 56/76/9 72/75/9 57/78/9 -f 57/78/8 73/77/8 58/80/8 -f 58/80/7 74/79/7 59/82/7 -f 59/82/6 75/81/6 60/84/6 -f 60/84/5 76/83/5 61/86/5 -f 62/90/4 61/87/4 78/89/4 -f 63/92/3 62/90/3 79/91/3 -f 64/94/2 63/92/2 80/93/2 -f 49/96/1 64/94/1 65/95/1 -f 50/98/15 49/96/15 66/97/15 -f 51/242/16 50/98/16 67/67/16 -f 67/101/33 66/244/33 65/245/33 -f 65/245/33 80/246/33 79/247/33 -f 79/247/33 78/248/33 77/249/33 -f 77/249/33 76/250/33 75/251/33 -f 75/251/33 74/252/33 73/99/33 -f 73/99/33 72/253/33 71/100/33 -f 71/100/33 70/254/33 69/255/33 -f 69/255/33 68/256/33 71/100/33 -f 67/101/33 65/245/33 75/251/33 -f 79/247/33 77/249/33 75/251/33 -f 75/251/33 73/99/33 67/101/33 -f 71/100/33 68/256/33 67/101/33 -f 65/245/33 79/247/33 75/251/33 -f 36/257/34 35/102/34 93/104/34 -f 37/175/35 36/105/35 92/107/35 -f 91/144/36 38/108/36 92/110/36 -f 90/146/37 39/111/37 91/113/37 -f 89/148/38 40/114/38 90/116/38 -f 88/150/39 41/117/39 89/119/39 -f 87/152/40 42/120/40 88/122/40 -f 86/154/42 43/126/42 87/128/42 -f 85/156/43 44/129/43 86/131/43 -f 45/174/44 44/132/44 84/134/44 -f 46/173/45 45/135/45 83/137/45 -f 47/258/46 46/138/46 82/140/46 -f 48/259/47 47/141/47 81/143/47 -f 35/260/63 34/170/63 94/165/63 -f 34/261/64 33/171/64 95/123/64 -f 33/262/65 48/172/65 96/162/65 -f 33/262/66 4/2/66 48/172/66 -f 48/259/67 2/1/67 47/141/67 -f 47/258/68 32/30/68 46/138/68 -f 30/29/69 28/27/69 46/173/69 -f 28/27/70 26/25/70 45/174/70 -f 26/25/71 24/23/71 44/129/71 -f 24/23/72 22/21/72 43/126/72 -f 22/21/73 20/19/73 42/120/73 -f 20/19/74 18/17/74 41/117/74 -f 18/17/75 16/15/75 40/114/75 -f 16/15/76 14/13/76 39/111/76 -f 14/13/77 12/11/77 38/108/77 -f 12/11/78 10/10/78 37/175/78 -f 36/257/79 10/8/79 35/102/79 -f 35/260/80 8/6/80 34/170/80 -f 34/261/81 6/4/81 33/171/81 -f 131/205/82 130/176/82 137/178/82 -f 132/210/83 133/179/83 140/181/83 -f 105/185/84 119/182/84 111/184/84 -f 100/263/33 105/185/33 102/186/33 -f 119/264/33 121/187/33 120/189/33 -f 101/265/85 103/190/85 129/192/85 -f 126/202/86 125/195/86 104/193/86 -f 104/193/86 118/188/86 121/187/86 -f 116/194/86 126/202/86 104/193/86 -f 126/202/98 129/192/98 125/195/98 -f 118/188/88 104/193/88 120/197/88 -f 103/199/88 102/266/88 111/196/88 -f 111/196/88 104/193/88 125/195/88 -f 125/195/88 124/198/88 111/196/88 -f 121/187/89 119/200/89 116/194/89 -f 101/267/89 129/203/89 105/201/89 -f 126/202/89 116/194/89 105/201/89 -f 105/201/89 100/268/89 101/267/89 -f 114/269/33 112/204/33 131/205/33 -f 143/237/90 142/206/90 145/208/90 -f 109/270/33 107/209/33 132/210/33 -f 149/271/85 108/211/85 147/213/85 -f 137/272/33 136/214/33 134/216/33 -f 135/215/91 136/217/91 99/219/91 -f 134/216/92 98/220/92 137/222/92 -f 139/273/33 140/223/33 138/225/33 -f 149/271/93 147/213/93 148/227/93 -f 138/225/94 141/228/94 106/230/94 -f 139/273/95 117/231/95 140/233/95 -f 115/235/92 114/274/92 131/221/92 -f 131/221/92 98/220/92 142/206/92 -f 142/206/92 143/234/92 131/221/92 -f 130/218/91 112/275/91 113/276/91 -f 113/276/91 145/236/91 130/218/91 -f 144/207/91 99/219/91 130/218/91 -f 144/207/96 142/206/96 98/220/96 -f 98/220/96 134/216/96 135/215/96 -f 135/215/96 99/219/96 98/220/96 -f 115/277/85 143/237/85 113/238/85 -f 148/227/97 146/226/97 117/231/97 -f 117/231/97 139/273/97 138/225/97 -f 106/230/97 148/227/97 117/231/97 -f 110/240/95 109/278/95 132/232/95 -f 132/232/95 117/231/95 146/226/95 -f 146/226/95 147/239/95 132/232/95 -f 108/279/94 149/241/94 133/229/94 -f 148/227/94 106/230/94 133/229/94 -f 133/229/94 107/280/94 108/279/94 diff --git a/src/main/resources/assets/hbm/models/armor/envsuit.obj b/src/main/resources/assets/hbm/models/armor/envsuit.obj new file mode 100644 index 000000000..d3df05777 --- /dev/null +++ b/src/main/resources/assets/hbm/models/armor/envsuit.obj @@ -0,0 +1,3643 @@ +# Blender v2.79 (sub 0) OBJ File: 'envsuit_scaled.blend' +# www.blender.org +o LeftFoot +v -0.100000 23.250000 -3.675000 +v 4.100000 23.250000 -3.675000 +v -0.100000 24.299999 -3.675000 +v 4.100000 24.299999 -3.675000 +v 4.100000 22.199999 -2.625000 +v -0.100000 22.200001 -2.625000 +v -0.625000 22.200001 -2.100000 +v 4.625000 22.199999 -2.100000 +v -0.625000 22.200001 2.100000 +v 4.625000 22.199999 2.100000 +v 4.100000 22.199999 2.625000 +v -0.100000 22.200001 2.625000 +v -0.100000 22.200001 2.100000 +v 4.100000 22.199999 2.100000 +v -0.100000 22.200001 -2.100000 +v 4.100000 22.199999 -2.100000 +v 4.100000 24.299999 -2.625000 +v 4.625000 24.299999 -2.100000 +v -0.100000 24.299999 -2.625000 +v -0.625000 24.299999 -2.100000 +v 4.625000 24.299999 2.100000 +v 4.100000 24.299999 2.625000 +v -0.625000 24.299999 2.100000 +v -0.100000 24.299999 2.625000 +v 1.475000 20.110407 -3.209024 +v 2.525000 20.110407 -3.209024 +v 1.475000 20.469528 -4.195702 +v 2.525000 20.469528 -4.195702 +v 0.425000 23.070438 -2.131661 +v 3.575000 23.070438 -2.131661 +v 0.425000 23.429560 -3.118338 +v 3.575000 23.429560 -3.118338 +v 2.525000 23.070438 -2.131661 +v 2.525000 23.429560 -3.118338 +v 1.475000 23.070438 -2.131661 +v 1.475000 23.429560 -3.118338 +v 2.000000 21.097084 -2.849903 +v 2.000000 21.456205 -3.836581 +vt 0.979167 0.025000 +vt 0.791667 -0.000000 +vt 0.770833 0.225000 +vt 0.791667 0.300000 +vt 0.958333 0.250000 +vt 0.791667 0.250000 +vt 0.958333 0.300000 +vt 0.791667 0.350000 +vt 0.958333 0.350000 +vt 0.791667 0.400000 +vt 0.958333 0.400000 +vt 0.750000 0.300000 +vt 1.000000 0.300000 +vt 0.562500 0.100000 +vt 0.395833 0.125000 +vt 0.562500 0.125000 +vt 0.208333 0.100000 +vt 0.375000 0.125000 +vt 0.375000 0.100000 +vt 0.375000 0.125000 +vt 0.395833 0.100000 +vt 0.187500 0.100000 +vt 0.020833 0.125000 +vt 0.187500 0.125000 +vt 0.187500 0.125000 +vt 0.208333 0.125000 +vt 0.583333 0.100000 +vt 0.562500 0.125000 +vt 0.583333 0.125000 +vt 0.020833 0.100000 +vt -0.000000 0.125000 +vt 0.750000 0.125000 +vt 0.750000 0.100000 +vt 0.583333 0.000000 +vt 0.750000 0.000000 +vt 0.187500 0.000000 +vt 0.208333 -0.000000 +vt 0.395833 -0.000000 +vt 0.375000 -0.000000 +vt 0.020833 0.000000 +vt -0.000000 0.100000 +vt 0.729167 0.900000 +vt 0.687500 0.950000 +vt 0.729167 0.950000 +vt 0.562500 0.900000 +vt 0.687500 0.900000 +vt 0.854167 0.950000 +vt 0.645833 0.850000 +vt 0.562500 0.800000 +vt 0.562500 0.850000 +vt 0.854167 0.850000 +vt 0.770833 0.800000 +vt 0.770833 0.850000 +vt 0.562500 0.950000 +vt 0.645833 1.000000 +vt 0.770833 1.000000 +vt 0.708333 1.000000 +vt 0.854167 0.900000 +vt 0.708333 0.850000 +vt 0.979167 0.225000 +vt 0.958333 -0.000000 +vt 0.770833 0.025000 +vt 0.750000 0.400000 +vt 1.000000 0.400000 +vt 0.562500 0.000000 +vt -0.000000 0.000000 +vt 0.645833 0.800000 +vt 0.854167 0.800000 +vt 0.562500 1.000000 +vt 0.854167 1.000000 +vn 0.0000 1.0000 -0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 -0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.0000 -0.9397 -0.3420 +vn 0.9487 -0.2972 -0.1082 +vn -0.9487 -0.2972 -0.1082 +vn -0.9701 0.2279 0.0830 +vn 0.9701 0.2279 0.0830 +vn 0.0000 -0.3420 0.9397 +vn -0.0000 0.3420 -0.9397 +s off +f 23/1/1 22/2/1 18/3/1 +f 4/4/1 19/5/1 17/6/1 +f 3/7/2 2/8/2 1/9/2 +f 1/9/3 5/10/3 6/11/3 +f 17/12/4 2/8/4 4/4/4 +f 1/9/5 19/13/5 3/7/5 +f 6/14/6 16/15/6 15/16/6 +f 10/17/6 16/18/6 8/19/6 +f 8/20/6 16/15/6 5/21/6 +f 11/22/6 13/23/6 14/24/6 +f 11/25/6 14/26/6 10/17/6 +f 7/27/6 6/28/6 15/29/6 +f 12/30/6 9/31/6 13/23/6 +f 7/27/6 13/32/6 9/33/6 +f 20/34/7 6/14/7 7/27/7 +f 23/35/5 7/27/5 9/33/5 +f 22/36/8 12/30/8 11/22/8 +f 21/37/9 11/22/9 10/17/9 +f 17/38/10 8/19/10 5/21/10 +f 18/39/4 10/17/4 8/19/4 +f 24/40/11 9/41/11 12/30/11 +f 27/42/12 26/43/12 25/44/12 +f 32/45/13 26/43/13 28/46/13 +f 29/47/14 27/42/14 25/44/14 +f 38/48/15 33/49/15 34/50/15 +f 36/51/16 37/52/16 38/53/16 +f 30/54/17 37/55/17 26/43/17 +f 37/56/17 29/47/17 25/44/17 +f 26/43/17 37/57/17 25/44/17 +f 31/58/18 38/53/18 27/42/18 +f 32/45/18 38/48/18 34/50/18 +f 27/42/18 38/59/18 28/46/18 +f 18/3/1 17/6/1 19/5/1 +f 19/5/1 20/60/1 23/1/1 +f 23/1/1 24/61/1 22/2/1 +f 22/2/1 21/62/1 18/3/1 +f 18/3/1 19/5/1 23/1/1 +f 4/4/1 3/7/1 19/5/1 +f 3/7/2 4/4/2 2/8/2 +f 1/9/3 2/8/3 5/10/3 +f 17/12/4 5/63/4 2/8/4 +f 1/9/5 6/64/5 19/13/5 +f 6/14/6 5/21/6 16/15/6 +f 10/17/6 14/26/6 16/18/6 +f 11/22/6 12/30/6 13/23/6 +f 7/27/6 15/29/6 13/32/6 +f 20/34/7 19/65/7 6/14/7 +f 23/35/5 20/34/5 7/27/5 +f 22/36/8 24/40/8 12/30/8 +f 21/37/9 22/36/9 11/22/9 +f 17/38/10 18/39/10 8/19/10 +f 18/39/4 21/37/4 10/17/4 +f 24/40/11 23/66/11 9/41/11 +f 27/42/12 28/46/12 26/43/12 +f 32/45/13 30/54/13 26/43/13 +f 29/47/14 31/58/14 27/42/14 +f 38/48/15 37/67/15 33/49/15 +f 36/51/16 35/68/16 37/52/16 +f 30/54/17 33/69/17 37/55/17 +f 37/56/17 35/70/17 29/47/17 +f 31/58/18 36/51/18 38/53/18 +f 32/45/18 28/46/18 38/48/18 +o RightFoot +v 0.100000 23.250000 -3.675000 +v -4.100000 23.250000 -3.675000 +v 0.100000 24.299999 -3.675000 +v -4.100000 24.299999 -3.675000 +v -4.100000 22.200001 -2.625000 +v 0.100000 22.200001 -2.625000 +v 0.625000 22.200001 -2.100000 +v -4.625000 22.200001 -2.100000 +v 0.625000 22.200001 2.100000 +v -4.625000 22.200001 2.100000 +v -4.100000 22.200001 2.625000 +v 0.100000 22.200001 2.625000 +v 0.100000 22.200001 2.100000 +v -4.100000 22.200001 2.100000 +v 0.100000 22.200001 -2.100000 +v -4.100000 22.200001 -2.100000 +v -4.100000 24.299999 -2.625000 +v -4.625000 24.299999 -2.100000 +v 0.100000 24.299999 -2.625000 +v 0.625000 24.299999 -2.100000 +v -4.625000 24.299999 2.100000 +v -4.100000 24.299999 2.625000 +v 0.625000 24.299999 2.100000 +v 0.100000 24.299999 2.625000 +v -1.475000 20.110409 -3.209024 +v -2.525000 20.110409 -3.209024 +v -1.475000 20.469528 -4.195702 +v -2.525000 20.469528 -4.195702 +v -0.425000 23.070438 -2.131661 +v -3.575000 23.070440 -2.131661 +v -0.425000 23.429560 -3.118338 +v -3.575000 23.429560 -3.118338 +v -2.525000 23.070440 -2.131661 +v -2.525000 23.429560 -3.118338 +v -1.475000 23.070440 -2.131661 +v -1.475000 23.429560 -3.118338 +v -2.000000 21.097086 -2.849903 +v -2.000000 21.456205 -3.836581 +vt 0.791667 -0.000000 +vt 0.979167 0.025000 +vt 0.958333 0.250000 +vt 0.791667 0.300000 +vt 0.791667 0.250000 +vt 0.791667 0.350000 +vt 0.958333 0.300000 +vt 0.958333 0.350000 +vt 0.791667 0.400000 +vt 0.958333 0.400000 +vt 0.750000 0.300000 +vt 1.000000 0.300000 +vt 0.395833 0.125000 +vt 0.562500 0.100000 +vt 0.562500 0.125000 +vt 0.375000 0.125000 +vt 0.208333 0.100000 +vt 0.375000 0.100000 +vt 0.375000 0.125000 +vt 0.395833 0.100000 +vt 0.020833 0.125000 +vt 0.187500 0.100000 +vt 0.187500 0.125000 +vt 0.187500 0.125000 +vt 0.208333 0.125000 +vt 0.583333 0.100000 +vt 0.583333 0.125000 +vt 0.562500 0.125000 +vt 0.020833 0.100000 +vt -0.000000 0.125000 +vt 0.750000 0.125000 +vt 0.750000 0.100000 +vt 0.562500 0.000000 +vt 0.583333 0.000000 +vt 0.750000 0.000000 +vt 0.187500 0.000000 +vt 0.208333 -0.000000 +vt 0.395833 -0.000000 +vt 0.375000 -0.000000 +vt -0.000000 0.100000 +vt 0.020833 0.000000 +vt 0.687500 0.950000 +vt 0.729167 0.900000 +vt 0.729167 0.950000 +vt 0.562500 0.900000 +vt 0.687500 0.900000 +vt 0.854167 0.900000 +vt 0.854167 0.950000 +vt 0.562500 0.850000 +vt 0.645833 0.800000 +vt 0.645833 0.850000 +vt 0.854167 0.850000 +vt 0.770833 0.800000 +vt 0.854167 0.800000 +vt 0.645833 1.000000 +vt 0.562500 0.950000 +vt 0.770833 1.000000 +vt 0.708333 1.000000 +vt 0.770833 0.850000 +vt 0.708333 0.850000 +vt 0.770833 0.225000 +vt 0.770833 0.025000 +vt 0.958333 -0.000000 +vt 0.979167 0.225000 +vt 0.750000 0.400000 +vt 1.000000 0.400000 +vt -0.000000 0.000000 +vt 0.562500 0.800000 +vt 0.562500 1.000000 +vt 0.854167 1.000000 +vn 0.0000 1.0000 -0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn -1.0000 0.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 -0.0000 -0.7071 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 -0.0000 0.7071 +vn 0.0000 -0.9397 -0.3420 +vn -0.9487 -0.2972 -0.1082 +vn 0.9487 -0.2972 -0.1082 +vn 0.9701 0.2279 0.0830 +vn -0.9701 0.2279 0.0830 +vn -0.0000 -0.3420 0.9397 +vn 0.0000 0.3420 -0.9397 +s off +f 60/71/19 61/72/19 57/73/19 +f 57/73/19 42/74/19 55/75/19 +f 40/76/20 41/77/20 39/78/20 +f 43/79/21 39/78/21 44/80/21 +f 40/76/22 55/81/22 42/74/22 +f 57/82/23 39/78/23 41/77/23 +f 54/83/24 44/84/24 53/85/24 +f 54/86/24 48/87/24 46/88/24 +f 46/89/24 43/90/24 54/83/24 +f 51/91/24 49/92/24 52/93/24 +f 49/94/24 48/87/24 52/95/24 +f 45/96/24 53/97/24 44/98/24 +f 50/99/24 51/91/24 47/100/24 +f 51/101/24 45/96/24 47/102/24 +f 45/96/25 57/103/25 58/104/25 +f 45/96/23 61/105/23 47/102/23 +f 50/99/26 60/106/26 49/92/26 +f 49/92/27 59/107/27 48/87/27 +f 46/88/28 55/108/28 43/90/28 +f 48/87/22 56/109/22 46/88/22 +f 47/110/29 62/111/29 50/99/29 +f 64/112/30 65/113/30 63/114/30 +f 64/112/31 70/115/31 66/116/31 +f 63/114/32 69/117/32 67/118/32 +f 72/119/33 75/120/33 76/121/33 +f 74/122/34 75/123/34 73/124/34 +f 75/125/35 68/126/35 64/112/35 +f 67/118/35 75/127/35 63/114/35 +f 64/112/35 63/114/35 75/128/35 +f 76/129/36 69/117/36 65/113/36 +f 70/115/36 76/121/36 66/116/36 +f 65/113/36 66/116/36 76/130/36 +f 57/73/19 55/75/19 56/131/19 +f 56/131/19 59/132/19 60/71/19 +f 60/71/19 62/133/19 61/72/19 +f 61/72/19 58/134/19 57/73/19 +f 57/73/19 56/131/19 60/71/19 +f 57/73/19 41/77/19 42/74/19 +f 40/76/20 42/74/20 41/77/20 +f 43/79/21 40/76/21 39/78/21 +f 40/76/22 43/135/22 55/81/22 +f 57/82/23 44/136/23 39/78/23 +f 54/83/24 43/90/24 44/84/24 +f 54/86/24 52/95/24 48/87/24 +f 51/91/24 50/99/24 49/92/24 +f 51/101/24 53/97/24 45/96/24 +f 45/96/25 44/84/25 57/103/25 +f 45/96/23 58/104/23 61/105/23 +f 50/99/26 62/111/26 60/106/26 +f 49/92/27 60/106/27 59/107/27 +f 46/88/28 56/109/28 55/108/28 +f 48/87/22 59/107/22 56/109/22 +f 47/110/29 61/137/29 62/111/29 +f 64/112/30 66/116/30 65/113/30 +f 64/112/31 68/126/31 70/115/31 +f 63/114/32 65/113/32 69/117/32 +f 72/119/33 71/138/33 75/120/33 +f 74/122/34 76/129/34 75/123/34 +f 75/125/35 71/139/35 68/126/35 +f 67/118/35 73/140/35 75/127/35 +f 76/129/36 74/122/36 69/117/36 +f 70/115/36 72/119/36 76/121/36 +o Lamps +v 4.199997 -9.250000 -2.625000 +v 2.099997 -9.250000 -2.625000 +v 3.674997 -10.825001 -3.150000 +v 2.624997 -10.825001 -3.150000 +v -2.100003 -9.250000 -2.625000 +v -4.200003 -9.250000 -2.625000 +v -2.625003 -10.825001 -3.150000 +v -3.675003 -10.825001 -3.150000 +vt 0.401810 0.000103 +vt 0.000103 0.499897 +vt 0.134006 0.000103 +vt 0.134006 0.500103 +vt 0.535712 0.999897 +vt 0.000103 0.999897 +vt 0.535712 0.499897 +vt 0.401809 0.500103 +vn 0.0000 0.3162 -0.9487 +s off +f 80/141/37 77/142/37 79/143/37 +f 83/144/37 82/145/37 81/146/37 +f 80/141/37 78/147/37 77/142/37 +f 83/144/37 84/148/37 82/145/37 +o Chest +v 4.199999 12.299999 2.100000 +v -4.200001 12.299999 2.100000 +v 4.199999 12.299999 -2.100000 +v -4.200001 12.299999 -2.100000 +v -3.150002 0.750000 2.625000 +v 3.149997 0.750000 2.625000 +v -3.150001 9.150000 2.625000 +v 3.149998 9.150000 2.625000 +v 4.199998 6.000000 2.100000 +v -4.200002 6.000000 2.100000 +v 4.199998 6.000000 -2.100000 +v -4.200002 6.000000 -2.100000 +v 4.199998 6.000000 -2.625000 +v -4.200002 6.000000 -2.625000 +v 4.199998 6.000000 2.625000 +v -4.200002 6.000000 2.625000 +v 4.724999 6.000000 2.100000 +v 4.724999 6.000000 -2.100000 +v -4.725001 6.000000 2.100000 +v -4.725001 6.000000 -2.100000 +v 4.199998 -0.299999 -2.625000 +v -4.200002 -0.299999 -2.625000 +v 4.199998 -0.299999 2.625000 +v -4.200002 -0.299999 2.625000 +v 4.724998 -0.299999 2.100000 +v 4.724998 -0.299999 -2.100000 +v -4.725002 -0.299999 2.100000 +v -4.725002 -0.299999 -2.100000 +v 4.199998 -0.825001 -2.100000 +v 4.199998 -0.825001 2.100000 +v -4.200002 -0.825001 2.100000 +v -4.200002 -0.825001 -2.100000 +v -0.000002 -0.299999 -3.675000 +v -2.100002 -0.299999 -2.625000 +v -0.000002 1.799999 -3.675000 +v -2.100002 1.799999 -2.625000 +v 2.099998 -0.299999 -2.625000 +v 2.099998 1.799999 -2.625000 +v -0.000002 3.900000 -2.625000 +v -2.100001 10.200000 2.625000 +v 2.099999 10.200000 2.625000 +v -3.150002 0.750000 6.825000 +v 3.149997 0.750000 6.825000 +v -3.150001 9.150000 6.825000 +v 3.149998 9.150000 6.825000 +v 2.099999 10.200000 6.825000 +v -2.100001 10.200000 6.825000 +v 3.149997 0.750000 5.775000 +v -3.150002 0.750000 5.775000 +v 3.149997 0.750000 3.675000 +v -3.150002 0.750000 3.675000 +v 3.149997 -0.299999 3.675000 +v 3.149997 -0.299999 5.775000 +v -3.150002 -0.299999 5.775000 +v -3.150002 -0.299999 3.675000 +v 3.149998 3.900000 5.775000 +v -3.150001 3.900000 5.775000 +v 3.149998 3.900000 3.675000 +v -3.150001 3.900000 3.675000 +v 4.199998 2.850000 5.775000 +v -4.200002 2.850000 5.775000 +v 4.199998 2.850000 3.675000 +v -4.200002 2.850000 3.675000 +v 4.199998 0.750000 5.775000 +v -4.200002 0.750000 5.775000 +v 4.199998 0.750000 3.675000 +v -4.200002 0.750000 3.675000 +v 2.624998 3.900000 6.825000 +v -2.625002 3.900000 6.825000 +v 2.624998 1.799999 6.825000 +v -2.625002 1.799999 6.825000 +v 2.624998 1.799999 7.875000 +v 2.624998 3.900000 7.875000 +v -2.625002 3.900000 7.875000 +v -2.625002 1.799999 7.875000 +v -4.200002 5.475000 -2.625000 +v 4.199998 5.475000 -2.625000 +v -3.150001 3.900000 -4.200000 +v 3.149998 3.900000 -4.200000 +v -4.200002 0.750000 -2.625000 +v 4.199998 0.750000 -2.625000 +vt 0.478261 0.181818 +vt 0.304348 -0.000000 +vt 0.478261 0.000000 +vt 0.695652 0.590909 +vt 0.565217 0.227273 +vt 0.695652 0.227273 +vt 0.304348 0.454545 +vt 0.217391 0.181818 +vt 0.304348 0.181818 +vt 0.478261 0.454545 +vt 0.565217 0.181818 +vt 0.043478 0.454545 +vt 0.043478 0.181818 +vt 0.467391 0.477273 +vt 0.293478 0.454545 +vt 0.467391 0.454545 +vt 0.184783 0.477273 +vt 0.010870 0.454545 +vt 0.184783 0.454545 +vt 0.565217 0.477273 +vt 0.565217 0.454545 +vt 0.478261 0.477273 +vt 0.467391 0.454545 +vt 0.010870 0.477273 +vt 0.000000 0.454545 +vt 0.282609 0.454545 +vt 0.195652 0.477273 +vt 0.195652 0.454545 +vt 0.184783 0.454545 +vt 0.293478 0.477273 +vt 0.282609 0.454545 +vt 0.467391 0.750000 +vt 0.293478 0.750000 +vt 0.282609 0.477273 +vt 0.282609 0.750000 +vt 0.010870 0.750000 +vt -0.000000 0.477273 +vt 0.565217 0.750000 +vt 0.195652 0.750000 +vt 0.184783 0.750000 +vt 0.293478 0.954545 +vt 0.467391 0.772727 +vt 0.467391 0.954545 +vt 0.565217 0.772727 +vt 0.478261 0.750000 +vt 0.184783 0.772727 +vt 0.282609 0.772727 +vt 0.195652 0.772727 +vt 0.293478 0.772727 +vt 0.478261 0.772727 +vt -0.000000 0.750000 +vt 0.010870 0.772727 +vt 0.467391 0.954545 +vt 0.510870 0.863636 +vt 0.510870 0.954545 +vt 0.554348 0.954545 +vt 0.554348 1.000000 +vt 0.467391 1.000000 +vt 0.467391 0.863636 +vt 0.510870 0.772727 +vt 0.554348 0.863636 +vt 0.586957 0.181818 +vt 0.913043 0.227273 +vt 0.782609 0.590909 +vt 0.782609 0.227273 +vt 0.891304 0.181818 +vt 0.782609 0.772727 +vt 0.913043 0.590909 +vt 0.913043 0.772727 +vt 0.695652 0.181818 +vt 0.891304 0.000000 +vt 0.804348 0.181818 +vt 0.804348 -0.000000 +vt 1.000000 0.590909 +vt 1.000000 0.227273 +vt 0.913043 0.181818 +vt 1.000000 0.181818 +vt 0.782609 0.818182 +vt 0.652174 0.909091 +vt 0.652174 0.818182 +vt 0.652174 0.954545 +vt 0.782609 0.909091 +vt 0.782609 0.954545 +vt 0.782609 0.772727 +vt 0.652174 0.772727 +vt 0.804348 0.909091 +vt 0.847826 0.909091 +vt 0.869565 0.818182 +vt 0.869565 0.909091 +vt 0.586957 0.818182 +vt 0.565217 0.909091 +vt 0.565217 0.818182 +vt 0.847826 0.818182 +vt 0.630435 0.818182 +vt 0.586957 0.909091 +vt 0.793478 0.772727 +vt 0.804348 0.818182 +vt 0.804348 0.772727 +vt 0.869565 0.772727 +vt 0.793478 0.954545 +vt 0.804348 0.954545 +vt 0.641304 0.954545 +vt 0.630435 0.909091 +vt 0.630435 0.954545 +vt 0.565217 0.954545 +vt 0.641304 0.772727 +vt 0.630435 0.772727 +vt 0.782609 0.045455 +vt 0.673913 0.136364 +vt 0.673913 0.045455 +vt 0.673913 0.181818 +vt 0.782609 0.136364 +vt 0.782609 0.181818 +vt 0.782609 -0.000000 +vt 0.673913 -0.000000 +vt 0.804348 0.136364 +vt 0.804348 0.045455 +vt 0.652174 0.045455 +vt 0.652174 0.136364 +vt 0.086957 0.840909 +vt 0.054348 0.977273 +vt 0.054348 0.772727 +vt 0.293478 0.772727 +vt 0.293478 0.977273 +vt 0.260870 0.840909 +vt 0.260870 0.977273 +vt 0.108696 0.840909 +vt 0.239130 0.840909 +vt 0.086957 0.772727 +vt 0.260870 0.772727 +vt 0.565217 0.590909 +vt 0.217391 0.454545 +vt 0.673913 0.181818 +vt 0.782609 0.181818 +vt 0.869565 0.954545 +vt 0.565217 0.772727 +vt 0.086957 0.977273 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -0.7071 0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.5774 -0.5773 0.5774 +vn -0.5774 -0.5773 -0.5774 +vn 0.5774 -0.5773 -0.5774 +vn 0.5774 -0.5773 0.5774 +vn -0.4472 0.0000 -0.8944 +vn 0.4472 -0.0000 -0.8944 +vn -0.4082 0.4082 -0.8165 +vn 0.4082 0.4082 -0.8165 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.8321 0.0000 -0.5547 +vn 0.8321 0.0000 -0.5547 +vn 0.0000 -0.4472 -0.8944 +vn 0.0000 0.7071 -0.7071 +s off +f 87/149/38 86/150/38 85/151/38 +f 90/152/39 91/153/39 92/154/39 +f 96/155/40 86/156/40 88/157/40 +f 95/158/39 88/157/39 87/149/39 +f 85/159/41 95/158/41 87/149/41 +f 86/156/42 93/160/42 85/161/42 +f 97/162/38 96/163/38 95/164/38 +f 100/165/38 93/166/38 94/167/38 +f 101/168/38 95/158/38 93/169/38 +f 95/158/38 102/170/38 97/171/38 +f 93/166/38 99/172/38 101/173/38 +f 96/174/38 103/175/38 94/176/38 +f 94/176/38 103/175/38 100/177/38 +f 98/178/38 104/179/38 96/163/38 +f 102/170/43 105/180/43 97/162/43 +f 106/181/44 104/182/44 98/178/44 +f 112/183/40 103/175/40 104/182/40 +f 107/184/45 101/185/45 99/172/45 +f 105/180/39 98/178/39 97/162/39 +f 109/186/41 102/170/41 101/168/41 +f 111/187/46 100/165/46 103/175/46 +f 108/188/42 99/172/42 100/165/42 +f 115/189/47 113/190/47 114/191/47 +f 113/190/48 106/181/48 105/180/48 +f 114/192/49 110/193/49 109/186/49 +f 115/194/50 107/184/50 108/188/50 +f 116/195/51 111/187/51 112/183/51 +f 111/187/52 115/196/52 108/188/52 +f 112/183/53 106/181/53 116/197/53 +f 110/193/54 113/198/54 105/180/54 +f 109/199/55 107/184/55 114/200/55 +f 118/201/56 119/202/56 117/203/56 +f 119/202/57 121/204/57 117/203/57 +f 117/203/47 121/205/47 118/206/47 +f 119/202/58 120/207/58 123/208/58 +f 122/209/59 119/202/59 123/208/59 +f 124/210/39 92/154/39 91/153/39 +f 128/211/42 127/212/42 129/213/42 +f 129/213/42 131/214/42 128/211/42 +f 90/215/47 126/216/47 89/217/47 +f 125/218/60 129/213/60 92/154/60 +f 124/219/38 130/220/38 125/221/38 +f 92/154/41 127/212/41 90/152/41 +f 89/222/40 128/211/40 91/223/40 +f 91/223/61 131/224/61 124/225/61 +f 138/226/47 136/227/47 137/228/47 +f 134/229/39 139/230/39 135/231/39 +f 133/232/42 137/228/42 132/233/42 +f 138/226/51 151/234/51 139/230/51 +f 147/235/61 141/236/61 143/237/61 +f 144/238/60 142/239/60 140/240/60 +f 151/234/40 145/241/40 147/235/40 +f 148/242/41 146/243/41 144/238/41 +f 138/226/42 133/244/42 149/245/42 +f 145/241/42 133/246/42 141/247/42 +f 135/248/39 139/230/39 151/234/39 +f 147/235/39 135/249/39 151/234/39 +f 136/227/49 148/242/49 137/228/49 +f 136/227/39 134/250/39 150/251/39 +f 146/243/39 134/252/39 142/253/39 +f 132/254/42 137/228/42 148/242/42 +f 144/238/42 132/255/42 148/242/42 +f 158/256/42 156/257/42 157/258/42 +f 154/259/47 159/260/47 155/261/47 +f 153/262/38 157/258/38 152/263/38 +f 155/264/40 158/256/40 153/265/40 +f 152/266/41 156/257/41 154/267/41 +f 162/268/62 164/269/62 160/270/62 +f 161/271/63 165/272/63 163/273/63 +f 165/274/64 162/275/64 163/276/64 +f 163/276/65 160/277/65 161/278/65 +f 87/149/38 88/157/38 86/150/38 +f 90/152/39 89/279/39 91/153/39 +f 96/155/40 94/280/40 86/156/40 +f 95/158/39 96/155/39 88/157/39 +f 85/159/41 93/169/41 95/158/41 +f 86/156/42 94/280/42 93/160/42 +f 97/162/38 98/178/38 96/163/38 +f 100/165/38 99/172/38 93/166/38 +f 101/168/38 102/170/38 95/158/38 +f 96/174/38 104/182/38 103/175/38 +f 102/170/43 110/193/43 105/180/43 +f 106/181/44 112/183/44 104/182/44 +f 112/183/40 111/187/40 103/175/40 +f 107/184/45 109/199/45 101/185/45 +f 105/180/39 106/181/39 98/178/39 +f 109/186/41 110/193/41 102/170/41 +f 111/187/46 108/188/46 100/165/46 +f 108/188/42 107/184/42 99/172/42 +f 115/189/47 116/197/47 113/190/47 +f 113/190/48 116/197/48 106/181/48 +f 114/192/49 113/198/49 110/193/49 +f 115/194/50 114/200/50 107/184/50 +f 116/195/51 115/196/51 111/187/51 +f 118/201/56 120/207/56 119/202/56 +f 119/202/57 122/209/57 121/204/57 +f 124/210/39 125/281/39 92/154/39 +f 128/211/42 126/216/42 127/212/42 +f 129/213/42 130/220/42 131/214/42 +f 90/215/47 127/212/47 126/216/47 +f 125/218/60 130/282/60 129/213/60 +f 124/219/38 131/214/38 130/220/38 +f 92/154/41 129/213/41 127/212/41 +f 89/222/40 126/216/40 128/211/40 +f 91/223/61 128/211/61 131/224/61 +f 138/226/47 139/230/47 136/227/47 +f 134/229/39 136/227/39 139/230/39 +f 133/232/42 138/226/42 137/228/42 +f 138/226/51 149/245/51 151/234/51 +f 147/235/61 145/241/61 141/236/61 +f 144/238/60 146/243/60 142/239/60 +f 151/234/40 149/245/40 145/241/40 +f 148/242/41 150/251/41 146/243/41 +f 145/241/42 149/245/42 133/246/42 +f 147/235/39 143/283/39 135/249/39 +f 136/227/49 150/251/49 148/242/49 +f 146/243/39 150/251/39 134/252/39 +f 144/238/42 140/284/42 132/255/42 +f 158/256/42 159/260/42 156/257/42 +f 154/259/47 156/257/47 159/260/47 +f 153/262/38 158/256/38 157/258/38 +f 155/264/40 159/260/40 158/256/40 +f 152/266/41 157/258/41 156/257/41 +f 165/274/64 164/285/64 162/275/64 +f 163/276/65 162/275/65 160/277/65 +o LeftArm +v 3.899999 12.299999 2.100000 +v 3.899999 12.299999 -2.100000 +v 8.100000 12.299999 -2.100000 +v 8.100000 12.299999 2.100000 +v 3.899998 5.475000 -2.100000 +v 3.899998 5.475000 2.100000 +v 8.099998 5.475000 -2.100000 +v 8.099998 5.475000 2.100000 +v 3.899998 5.475000 -2.625000 +v 8.099998 5.475000 -2.625000 +v 3.899998 5.475000 2.625000 +v 8.099998 5.475000 2.625000 +v 8.624998 5.475000 -2.100000 +v 8.624998 5.475000 2.100000 +v 3.374998 5.475000 -2.100000 +v 3.374998 5.475000 2.100000 +v 3.899998 -0.299999 -2.625000 +v 8.099998 -0.299999 -2.625000 +v 3.899998 -0.299999 2.625000 +v 8.099998 -0.299999 2.625000 +v 8.624998 -0.299999 -2.100000 +v 8.624998 -0.299999 2.100000 +v 3.374998 -0.299999 -2.100000 +v 3.374998 -0.299999 2.100000 +v 3.899998 -0.825001 -2.100000 +v 3.899998 -0.825001 2.100000 +v 8.099998 -0.825001 -2.100000 +v 8.099998 -0.825001 2.100000 +v 3.899999 6.525000 -2.100000 +v 3.899999 6.525000 2.100000 +v 8.099998 6.525000 -2.100000 +v 8.099998 6.525000 2.100000 +v 3.899999 6.525000 -2.625000 +v 8.099998 6.525000 -2.625000 +v 3.899999 6.525000 2.625000 +v 8.099998 6.525000 2.625000 +v 8.624998 6.525000 -2.100000 +v 8.624998 6.525000 2.100000 +v 3.374999 6.525000 -2.100000 +v 3.374999 6.525000 2.100000 +v 2.849999 7.575001 2.100000 +v 2.849999 7.575001 -2.100000 +v 8.099998 7.575001 3.150000 +v 3.899999 7.575001 3.150000 +v 8.099998 7.575001 -2.625000 +v 3.899999 7.575001 -2.625000 +v 3.899999 7.575001 2.625000 +v 8.099998 7.575001 2.625000 +v 8.624998 7.575001 -2.100000 +v 8.624998 7.575001 2.100000 +v 3.374999 7.575001 -2.100000 +v 3.374999 7.575001 2.100000 +v 8.099998 7.575001 -3.150000 +v 3.899999 7.575001 -3.150000 +v 9.149998 7.575001 -2.100000 +v 9.149998 7.575001 2.100000 +v 2.849999 8.625000 2.100000 +v 2.849999 8.625000 -2.100000 +v 8.100000 8.625000 3.150000 +v 3.899999 8.625000 3.150000 +v 8.100000 8.625000 -3.150000 +v 3.899999 8.625000 -3.150000 +v 9.150000 8.625000 -2.100000 +v 9.150000 8.625000 2.100000 +v 8.100000 8.625000 -2.625000 +v 3.899999 8.625000 -2.625000 +v 3.899999 8.625000 2.625000 +v 8.100000 8.625000 2.625000 +v 8.625000 8.625000 -2.100000 +v 8.625000 8.625000 2.100000 +v 3.374999 8.625000 -2.100000 +v 3.374999 8.625000 2.100000 +v 8.100000 9.150000 -2.625000 +v 3.899999 9.150000 -2.625000 +v 3.899999 9.150000 2.625000 +v 8.100000 9.150000 2.625000 +v 8.625000 9.150000 -2.100000 +v 8.625000 9.150000 2.100000 +v 3.374999 9.150000 -2.100000 +v 3.374999 9.150000 2.100000 +v 2.849999 9.150000 2.100000 +v 2.849999 9.150000 -2.100000 +v 8.100000 9.150000 3.150000 +v 3.899999 9.150000 3.150000 +v 8.100000 9.150000 -3.150000 +v 3.899999 9.150000 -3.150000 +v 9.150000 9.150000 -2.100000 +v 9.150000 9.150000 2.100000 +v 2.849999 10.200000 2.100000 +v 2.849999 10.200000 -2.100000 +v 8.100000 10.199998 3.150000 +v 3.899999 10.200000 3.150000 +v 8.100000 10.199998 -3.150000 +v 3.899999 10.200000 -3.150000 +v 9.150000 10.199998 -2.100000 +v 9.150000 10.199998 2.100000 +v 8.100000 10.199998 -2.625000 +v 3.899999 10.200000 -2.625000 +v 3.899999 10.200000 2.625000 +v 8.100000 10.199998 2.625000 +v 8.625000 10.199998 -2.100000 +v 8.625000 10.199998 2.100000 +v 3.374999 10.200000 -2.100000 +v 3.374999 10.200000 2.100000 +v 8.100000 11.775000 -2.625000 +v 3.899999 11.775000 -2.625000 +v 3.899999 11.775000 2.625000 +v 8.100000 11.775000 2.625000 +v 8.625000 11.775000 -2.100000 +v 8.625000 11.775000 2.100000 +v 3.374999 11.775000 -2.100000 +v 3.374999 11.775000 2.100000 +v 8.625000 11.512498 1.050000 +v 8.625000 10.462500 1.050000 +v 8.625000 11.512498 -1.050000 +v 8.625000 10.462500 -1.050000 +v 9.150000 11.512498 -1.050000 +v 9.150000 11.512498 1.050000 +v 9.150000 10.462500 1.050000 +v 9.150000 10.462500 -1.050000 +v 8.554661 6.787500 0.525000 +v 8.099998 6.525000 0.525000 +v 8.554661 6.787500 -0.525000 +v 8.099998 6.525000 -0.525000 +v 9.604660 4.968847 -0.525000 +v 9.604660 4.968847 0.525000 +v 9.149998 4.706348 0.525000 +v 9.149998 4.706348 -0.525000 +vt 0.275000 0.191489 +vt 0.300000 0.191489 +vt 0.275000 0.170213 +vt 0.250000 0.191489 +vt 0.050000 0.170213 +vt 0.050000 0.191489 +vt 0.525000 0.191489 +vt 0.550000 0.191489 +vt 0.525000 0.170213 +vt 0.750000 0.000000 +vt 0.550000 0.170213 +vt 0.750000 0.170213 +vt 0.500000 0.170213 +vt 0.300000 0.170213 +vt 0.750000 0.191489 +vt 0.550000 0.553191 +vt 0.750000 0.574468 +vt 0.750000 0.553191 +vt 0.050000 0.553191 +vt 0.250000 0.574468 +vt 0.250000 0.553191 +vt 0.300000 0.553191 +vt 0.500000 0.574468 +vt 0.500000 0.553191 +vt 0.800000 0.574468 +vt 1.000000 0.553191 +vt 0.800000 0.553191 +vt 0.050000 0.574468 +vt 0.025000 0.553191 +vt 0.025000 0.574468 +vt 0.775000 0.553191 +vt 0.775000 0.574468 +vt 0.525000 0.553191 +vt 0.525000 0.574468 +vt 0.550000 0.574468 +vt 0.275000 0.553191 +vt 0.275000 0.574468 +vt 0.300000 0.574468 +vt 0.500000 0.808511 +vt 0.300000 0.808511 +vt 0.800000 0.808511 +vt 0.750000 0.808511 +vt 1.000000 0.574468 +vt 0.550000 0.808511 +vt 0.050000 0.808511 +vt 0.250000 0.808511 +vt 0.750000 0.829787 +vt 0.550000 1.000000 +vt 0.750000 1.000000 +vt 0.300000 0.829787 +vt 0.525000 0.808511 +vt 0.525000 0.829787 +vt 0.250000 0.829787 +vt 0.275000 0.808511 +vt 0.275000 0.829787 +vt 1.000000 0.829787 +vt 1.000000 0.808511 +vt 0.025000 0.808511 +vt 0.025000 0.829787 +vt 0.775000 0.808511 +vt 0.775000 0.829787 +vt 0.750000 0.489362 +vt 0.550000 0.510638 +vt 0.750000 0.510638 +vt 0.250000 0.489362 +vt 0.050000 0.510638 +vt 0.250000 0.510638 +vt 0.500000 0.489362 +vt 0.300000 0.510638 +vt 0.500000 0.510638 +vt 1.000000 0.510638 +vt 0.800000 0.489362 +vt 0.800000 0.510638 +vt 0.050000 0.489362 +vt 0.025000 0.489362 +vt 0.025000 0.510638 +vt 0.775000 0.510638 +vt 0.775000 0.489362 +vt 0.525000 0.510638 +vt 0.550000 0.489362 +vt 0.525000 0.489362 +vt 0.275000 0.510638 +vt 0.300000 0.489362 +vt 0.275000 0.489362 +vt 0.250000 0.425532 +vt 0.050000 0.382979 +vt 0.050000 0.425532 +vt 0.550000 0.425532 +vt 0.750000 0.382979 +vt 0.550000 0.382979 +vt 0.500000 0.425532 +vt 0.300000 0.382979 +vt 0.300000 0.425532 +vt 0.500000 0.382979 +vt 0.275000 0.446809 +vt 0.300000 0.446809 +vt 0.550000 0.446809 +vt 0.500000 0.446809 +vt 0.750000 0.425532 +vt 0.800000 0.446809 +vt 0.800000 0.425532 +vt 0.050000 0.446809 +vt 0.750000 0.446809 +vt 0.025000 0.446809 +vt 1.000000 0.489362 +vt 0.775000 0.446809 +vt 0.000000 0.425532 +vt 0.525000 0.446809 +vt 1.000000 0.446809 +vt 0.250000 0.446809 +vt 1.000000 0.425532 +vt 0.800000 0.382979 +vt 0.250000 0.382979 +vt 0.000000 0.382979 +vt 0.750000 0.361702 +vt 0.550000 0.361702 +vt 0.525000 0.361702 +vt 0.300000 0.361702 +vt 0.275000 0.361702 +vt 0.250000 0.361702 +vt 0.025000 0.361702 +vt 1.000000 0.361702 +vt 1.000000 0.382979 +vt 0.800000 0.361702 +vt 0.050000 0.361702 +vt 0.025000 0.340426 +vt 0.500000 0.361702 +vt 0.300000 0.340426 +vt 0.750000 0.340426 +vt 0.550000 0.340426 +vt 0.275000 0.340426 +vt 0.775000 0.361702 +vt 0.800000 0.340426 +vt 0.775000 0.340426 +vt 0.050000 0.340426 +vt 0.525000 0.340426 +vt 0.750000 0.319149 +vt 0.500000 0.319149 +vt 0.500000 0.340426 +vt 0.300000 0.319149 +vt 0.250000 0.319149 +vt 0.250000 0.340426 +vt 0.050000 0.319149 +vt 1.000000 0.319149 +vt 1.000000 0.340426 +vt 0.800000 0.319149 +vt 0.750000 0.276596 +vt 0.550000 0.319149 +vt 0.500000 0.276596 +vt 0.000000 0.276596 +vt 0.000000 0.319149 +vt 0.800000 0.276596 +vt 0.300000 0.276596 +vt 0.250000 0.276596 +vt 0.550000 0.276596 +vt 0.050000 0.276596 +vt 0.750000 0.255319 +vt 0.550000 0.255319 +vt 0.525000 0.255319 +vt 0.300000 0.255319 +vt 0.275000 0.255319 +vt 0.250000 0.255319 +vt 0.025000 0.255319 +vt 1.000000 0.255319 +vt 1.000000 0.276596 +vt 0.800000 0.255319 +vt 0.050000 0.255319 +vt 0.025000 0.191489 +vt 0.500000 0.255319 +vt 0.775000 0.191489 +vt 0.775000 0.255319 +vt 0.800000 0.191489 +vt 0.800000 0.170213 +vt 1.000000 0.191489 +vt 1.000000 0.170213 +vt 0.025000 0.170213 +vt 0.775000 0.170213 +vt 0.150000 0.893617 +vt 0.250000 0.851064 +vt 0.150000 0.851064 +vt 0.275000 0.851064 +vt 0.250000 0.893617 +vt 0.275000 0.893617 +vt 0.125000 0.893617 +vt 0.125000 0.851064 +vt 0.250000 0.914894 +vt 0.150000 0.914894 +vt 0.150000 0.829787 +vt 0.250000 0.829787 +vt 0.300000 0.936170 +vt 0.350000 0.914894 +vt 0.300000 0.914894 +vt 0.300000 0.829787 +vt 0.350000 0.829787 +vt 0.375000 0.829787 +vt 0.375000 0.914894 +vt 0.275000 0.829787 +vt 0.425000 0.914894 +vt 0.425000 0.829787 +vt 0.250000 0.170213 +vt 0.550000 0.000000 +vt 0.500000 0.191489 +vt 0.550000 0.829787 +vt 0.500000 0.829787 +vt 0.050000 0.829787 +vt 0.800000 0.829787 +vt 0.350000 0.936170 +vt 0.275000 0.914894 +vn 0.5774 0.5774 0.5773 +vn 0.0000 0.7071 0.7071 +vn 0.5774 0.5774 -0.5773 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.7071 -0.7071 0.0000 +vn 0.5774 -0.5773 -0.5774 +vn 0.0000 -0.7071 0.7071 +vn 0.5774 -0.5773 0.5774 +vn -0.7071 -0.7071 0.0000 +vn -0.5774 -0.5773 0.5774 +vn -0.5774 -0.5773 -0.5774 +vn -0.7071 0.7071 0.0000 +vn -0.5774 0.5774 0.5774 +vn -0.5774 0.5774 -0.5774 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.8660 -0.5000 0.0000 +s off +f 273/286/66 275/287/66 169/288/66 +f 273/289/67 166/290/67 272/291/67 +f 274/292/68 270/293/68 168/294/68 +f 166/295/69 168/296/69 167/297/69 +f 275/287/70 168/298/70 169/299/70 +f 167/297/71 270/293/71 271/300/71 +f 172/301/69 174/302/69 170/303/69 +f 171/304/69 177/305/69 173/306/69 +f 173/307/69 178/308/69 172/309/69 +f 180/310/69 171/311/69 170/312/69 +f 176/313/69 171/314/69 181/315/69 +f 170/316/69 174/317/69 180/310/69 +f 172/318/69 178/319/69 175/320/69 +f 173/321/69 177/322/69 179/323/69 +f 179/323/72 186/324/72 178/308/72 +f 177/322/73 187/325/73 179/323/73 +f 174/317/74 188/326/74 180/310/74 +f 175/320/75 182/327/75 174/302/75 +f 188/326/76 181/328/76 180/310/76 +f 178/319/77 183/329/77 175/320/77 +f 181/315/78 184/330/78 176/313/78 +f 176/313/79 185/331/79 177/305/79 +f 190/332/80 193/333/80 191/334/80 +f 183/329/81 190/332/81 182/327/81 +f 193/335/82 186/324/82 187/325/82 +f 186/336/83 192/337/83 183/329/83 +f 184/330/84 193/338/84 185/331/84 +f 187/325/85 185/339/85 193/340/85 +f 188/326/86 191/341/86 189/342/86 +f 189/343/87 191/344/87 184/330/87 +f 188/326/88 182/345/88 190/346/88 +f 198/347/80 196/348/80 194/349/80 +f 201/350/80 195/351/80 197/352/80 +f 202/353/80 197/354/80 196/355/80 +f 195/356/80 204/357/80 194/358/80 +f 200/359/80 205/360/80 195/361/80 +f 194/362/80 204/357/80 198/363/80 +f 196/364/80 199/365/80 202/366/80 +f 197/367/80 203/368/80 201/369/80 +f 208/370/79 225/371/79 209/372/79 +f 218/373/75 227/374/75 226/375/75 +f 220/376/72 229/377/72 221/378/72 +f 220/376/77 226/375/77 228/379/77 +f 221/378/80 213/380/80 215/381/80 +f 220/376/80 210/382/80 218/373/80 +f 214/383/80 221/378/80 215/381/80 +f 219/384/80 216/385/80 207/386/80 +f 201/350/79 212/387/79 200/359/79 +f 203/368/73 213/380/73 201/369/73 +f 198/347/75 210/382/75 199/365/75 +f 211/388/80 218/373/80 210/382/80 +f 200/359/78 217/389/78 205/360/78 +f 205/390/76 216/385/76 204/357/76 +f 202/353/72 215/381/72 203/368/72 +f 204/357/74 211/391/74 198/363/74 +f 217/389/80 209/372/80 206/392/80 +f 199/365/77 214/393/77 202/366/77 +f 217/394/80 207/386/80 216/385/80 +f 213/395/80 209/372/80 212/387/80 +f 206/396/76 223/397/76 207/386/76 +f 221/378/73 224/398/73 208/370/73 +f 207/386/74 227/374/74 219/384/74 +f 209/372/78 222/399/78 206/392/78 +f 231/400/69 226/375/69 227/374/69 +f 228/379/69 230/401/69 234/402/69 +f 228/379/69 235/403/69 229/377/69 +f 229/377/69 233/404/69 224/398/69 +f 233/405/69 225/371/69 224/398/69 +f 225/371/69 237/406/69 222/399/69 +f 237/407/69 223/397/69 222/408/69 +f 236/409/69 227/374/69 223/397/69 +f 232/410/78 245/411/78 237/406/78 +f 234/412/72 243/413/72 235/403/72 +f 230/401/75 239/414/75 238/415/75 +f 235/403/73 241/416/73 233/404/73 +f 231/417/74 244/418/74 239/419/74 +f 237/407/76 244/418/76 236/409/76 +f 233/405/79 240/420/79 232/410/79 +f 230/401/77 242/421/77 234/402/77 +f 251/422/80 238/415/80 239/414/80 +f 238/415/80 252/423/80 242/421/80 +f 242/424/80 253/425/80 243/413/80 +f 241/416/80 253/425/80 248/426/80 +f 248/426/80 240/420/80 241/427/80 +f 249/428/80 245/411/80 240/420/80 +f 246/429/80 244/418/80 245/430/80 +f 244/418/80 251/422/80 239/419/80 +f 247/431/74 259/432/74 251/422/74 +f 250/433/77 260/434/77 252/423/77 +f 249/428/78 254/435/78 246/436/78 +f 246/429/76 255/437/76 247/431/76 +f 252/423/72 261/438/72 253/425/72 +f 253/425/73 256/439/73 248/426/73 +f 251/422/75 258/440/75 250/433/75 +f 248/426/79 257/441/79 249/428/79 +f 263/442/69 258/440/69 259/432/69 +f 260/434/69 262/443/69 266/444/69 +f 260/434/69 267/445/69 261/438/69 +f 261/438/69 265/446/69 256/439/69 +f 265/447/69 257/441/69 256/439/69 +f 257/441/69 269/448/69 254/435/69 +f 269/449/69 255/437/69 254/450/69 +f 268/451/69 259/432/69 255/437/69 +f 262/443/77 274/292/77 266/444/77 +f 264/452/78 277/453/78 269/448/78 +f 266/454/72 275/287/72 267/445/72 +f 263/442/75 270/293/75 262/443/75 +f 267/445/73 273/286/73 265/446/73 +f 268/451/74 271/455/74 263/456/74 +f 269/449/76 276/457/76 268/451/76 +f 265/447/79 272/291/79 264/452/79 +f 167/458/89 277/459/89 166/460/89 +f 277/453/90 272/291/90 166/461/90 +f 276/457/91 167/462/91 271/455/91 +f 194/349/75 172/301/75 170/303/75 +f 172/309/72 197/354/72 173/307/72 +f 173/306/79 195/351/79 171/304/79 +f 195/356/76 170/312/76 171/311/76 +f 284/463/72 282/464/72 283/465/72 +f 280/466/75 285/467/75 281/468/75 +f 279/469/79 283/465/79 278/470/79 +f 281/471/80 284/463/80 279/472/80 +f 278/473/69 282/464/69 280/474/69 +f 292/475/92 290/476/92 291/477/92 +f 286/478/93 290/476/93 288/479/93 +f 289/480/75 290/476/75 293/481/75 +f 287/482/79 291/477/79 286/478/79 +f 289/480/94 292/483/94 287/484/94 +f 273/289/67 169/485/67 166/290/67 +f 166/295/69 169/486/69 168/296/69 +f 275/287/70 274/487/70 168/298/70 +f 167/297/71 168/296/71 270/293/71 +f 172/301/69 175/320/69 174/302/69 +f 171/304/69 176/313/69 177/305/69 +f 173/307/69 179/323/69 178/308/69 +f 180/310/69 181/328/69 171/311/69 +f 179/323/72 187/325/72 186/324/72 +f 177/322/73 185/339/73 187/325/73 +f 174/317/74 182/345/74 188/326/74 +f 175/320/75 183/329/75 182/327/75 +f 188/326/76 189/342/76 181/328/76 +f 178/319/77 186/336/77 183/329/77 +f 181/315/78 189/343/78 184/330/78 +f 176/313/79 184/330/79 185/331/79 +f 190/332/80 192/488/80 193/333/80 +f 183/329/81 192/488/81 190/332/81 +f 193/335/82 192/489/82 186/324/82 +f 184/330/84 191/490/84 193/338/84 +f 188/326/86 190/491/86 191/341/86 +f 198/347/80 199/365/80 196/348/80 +f 201/350/80 200/359/80 195/351/80 +f 202/353/80 203/368/80 197/354/80 +f 195/356/80 205/390/80 204/357/80 +f 208/370/79 224/398/79 225/371/79 +f 218/373/75 219/384/75 227/374/75 +f 220/376/72 228/379/72 229/377/72 +f 220/376/77 218/373/77 226/375/77 +f 221/378/80 208/370/80 213/380/80 +f 220/376/80 214/393/80 210/382/80 +f 214/383/80 220/376/80 221/378/80 +f 219/384/80 211/391/80 216/385/80 +f 201/350/79 213/395/79 212/387/79 +f 203/368/73 215/381/73 213/380/73 +f 198/347/75 211/388/75 210/382/75 +f 211/388/80 219/384/80 218/373/80 +f 200/359/78 212/387/78 217/389/78 +f 205/390/76 217/394/76 216/385/76 +f 202/353/72 214/383/72 215/381/72 +f 204/357/74 216/385/74 211/391/74 +f 217/389/80 212/387/80 209/372/80 +f 199/365/77 210/382/77 214/393/77 +f 217/394/80 206/396/80 207/386/80 +f 213/395/80 208/370/80 209/372/80 +f 206/396/76 222/408/76 223/397/76 +f 221/378/73 229/377/73 224/398/73 +f 207/386/74 223/397/74 227/374/74 +f 209/372/78 225/371/78 222/399/78 +f 231/400/69 230/401/69 226/375/69 +f 228/379/69 226/375/69 230/401/69 +f 228/379/69 234/412/69 235/403/69 +f 229/377/69 235/403/69 233/404/69 +f 233/405/69 232/410/69 225/371/69 +f 225/371/69 232/410/69 237/406/69 +f 237/407/69 236/409/69 223/397/69 +f 236/409/69 231/417/69 227/374/69 +f 232/410/78 240/420/78 245/411/78 +f 234/412/72 242/424/72 243/413/72 +f 230/401/75 231/400/75 239/414/75 +f 235/403/73 243/413/73 241/416/73 +f 231/417/74 236/409/74 244/418/74 +f 237/407/76 245/430/76 244/418/76 +f 233/405/79 241/427/79 240/420/79 +f 230/401/77 238/415/77 242/421/77 +f 251/422/80 250/433/80 238/415/80 +f 238/415/80 250/433/80 252/423/80 +f 242/424/80 252/423/80 253/425/80 +f 241/416/80 243/413/80 253/425/80 +f 248/426/80 249/428/80 240/420/80 +f 249/428/80 246/436/80 245/411/80 +f 246/429/80 247/431/80 244/418/80 +f 244/418/80 247/431/80 251/422/80 +f 247/431/74 255/437/74 259/432/74 +f 250/433/77 258/440/77 260/434/77 +f 249/428/78 257/441/78 254/435/78 +f 246/429/76 254/450/76 255/437/76 +f 252/423/72 260/434/72 261/438/72 +f 253/425/73 261/438/73 256/439/73 +f 251/422/75 259/432/75 258/440/75 +f 248/426/79 256/439/79 257/441/79 +f 263/442/69 262/443/69 258/440/69 +f 260/434/69 258/440/69 262/443/69 +f 260/434/69 266/454/69 267/445/69 +f 261/438/69 267/445/69 265/446/69 +f 265/447/69 264/452/69 257/441/69 +f 257/441/69 264/452/69 269/448/69 +f 269/449/69 268/451/69 255/437/69 +f 268/451/69 263/456/69 259/432/69 +f 262/443/77 270/293/77 274/292/77 +f 264/452/78 272/291/78 277/453/78 +f 266/454/72 274/487/72 275/287/72 +f 263/442/75 271/300/75 270/293/75 +f 267/445/73 275/287/73 273/286/73 +f 268/451/74 276/457/74 271/455/74 +f 269/449/76 277/459/76 276/457/76 +f 265/447/79 273/289/79 272/291/79 +f 167/458/89 276/457/89 277/459/89 +f 194/349/75 196/348/75 172/301/75 +f 172/309/72 196/355/72 197/354/72 +f 173/306/79 197/352/79 195/351/79 +f 195/356/76 194/358/76 170/312/76 +f 284/463/72 285/467/72 282/464/72 +f 280/466/75 282/464/75 285/467/75 +f 279/469/79 284/463/79 283/465/79 +f 281/471/80 285/467/80 284/463/80 +f 278/473/69 283/465/69 282/464/69 +f 292/475/92 293/492/92 290/476/92 +f 286/478/93 291/477/93 290/476/93 +f 289/480/75 288/479/75 290/476/75 +f 287/482/79 292/493/79 291/477/79 +f 289/480/94 293/481/94 292/483/94 +o RightArm +v -3.900001 12.299999 2.100000 +v -3.900001 12.299999 -2.100000 +v -8.100000 12.299999 -2.100000 +v -8.100000 12.299999 2.100000 +v -3.900002 5.475000 -2.100000 +v -3.900002 5.475000 2.100000 +v -8.100002 5.475000 -2.100000 +v -8.100002 5.475000 2.100000 +v -3.900002 5.475000 -2.625000 +v -8.100002 5.475000 -2.625000 +v -3.900002 5.475000 2.625000 +v -8.100002 5.475000 2.625000 +v -8.625002 5.475000 -2.100000 +v -8.625002 5.475000 2.100000 +v -3.375002 5.475000 -2.100000 +v -3.375002 5.475000 2.100000 +v -3.900002 -0.299999 -2.625000 +v -8.100002 -0.299999 -2.625000 +v -3.900002 -0.299999 2.625000 +v -8.100002 -0.299999 2.625000 +v -8.625002 -0.299999 -2.100000 +v -8.625002 -0.299999 2.100000 +v -3.375002 -0.299999 -2.100000 +v -3.375002 -0.299999 2.100000 +v -3.900002 -0.825001 -2.100000 +v -3.900002 -0.825001 2.100000 +v -8.100002 -0.825001 -2.100000 +v -8.100002 -0.825001 2.100000 +v -3.900002 6.525000 -2.100000 +v -3.900002 6.525000 2.100000 +v -8.100002 6.525000 -2.100000 +v -8.100002 6.525000 2.100000 +v -3.900002 6.525000 -2.625000 +v -8.100002 6.525000 -2.625000 +v -3.900002 6.525000 2.625000 +v -8.100002 6.525000 2.625000 +v -8.625002 6.525000 -2.100000 +v -8.625002 6.525000 2.100000 +v -3.375001 6.525000 -2.100000 +v -3.375001 6.525000 2.100000 +v -2.850002 7.575001 2.100000 +v -2.850002 7.575001 -2.100000 +v -8.100002 7.575001 3.150000 +v -3.900002 7.575001 3.150000 +v -8.100002 7.575001 -2.625000 +v -3.900002 7.575001 -2.625000 +v -3.900002 7.575001 2.625000 +v -8.100002 7.575001 2.625000 +v -8.625002 7.575001 -2.100000 +v -8.625002 7.575001 2.100000 +v -3.375001 7.575001 -2.100000 +v -3.375001 7.575001 2.100000 +v -8.100002 7.575001 -3.150000 +v -3.900002 7.575001 -3.150000 +v -9.150002 7.575001 -2.100000 +v -9.150002 7.575001 2.100000 +v -2.850002 8.625000 2.100000 +v -2.850002 8.625000 -2.100000 +v -8.100000 8.625000 3.150000 +v -3.900002 8.625000 3.150000 +v -8.100000 8.625000 -3.150000 +v -3.900002 8.625000 -3.150000 +v -9.150000 8.625000 -2.100000 +v -9.150000 8.625000 2.100000 +v -8.100000 8.625000 -2.625000 +v -3.900002 8.625000 -2.625000 +v -3.900002 8.625000 2.625000 +v -8.100000 8.625000 2.625000 +v -8.625000 8.625000 -2.100000 +v -8.625000 8.625000 2.100000 +v -3.375001 8.625000 -2.100000 +v -3.375001 8.625000 2.100000 +v -8.100000 9.150000 -2.625000 +v -3.900001 9.150000 -2.625000 +v -3.900001 9.150000 2.625000 +v -8.100000 9.150000 2.625000 +v -8.625000 9.150000 -2.100000 +v -8.625000 9.150000 2.100000 +v -3.375001 9.150000 -2.100000 +v -3.375001 9.150000 2.100000 +v -2.850002 9.150000 2.100000 +v -2.850002 9.150000 -2.100000 +v -8.100000 9.150000 3.150000 +v -3.900001 9.150000 3.150000 +v -8.100000 9.150000 -3.150000 +v -3.900001 9.150000 -3.150000 +v -9.150000 9.150000 -2.100000 +v -9.150000 9.150000 2.100000 +v -2.850002 10.200000 2.100000 +v -2.850002 10.200000 -2.100000 +v -8.100000 10.200002 3.150000 +v -3.900001 10.200000 3.150000 +v -8.100000 10.200002 -3.150000 +v -3.900001 10.200000 -3.150000 +v -9.150000 10.200002 -2.100000 +v -9.150000 10.200002 2.100000 +v -8.100000 10.200002 -2.625000 +v -3.900001 10.200000 -2.625000 +v -3.900001 10.200000 2.625000 +v -8.100000 10.200002 2.625000 +v -8.625000 10.200002 -2.100000 +v -8.625000 10.200002 2.100000 +v -3.375001 10.200000 -2.100000 +v -3.375001 10.200000 2.100000 +v -8.100000 11.775000 -2.625000 +v -3.900001 11.775000 -2.625000 +v -3.900001 11.775000 2.625000 +v -8.100000 11.775000 2.625000 +v -8.625000 11.775000 -2.100000 +v -8.625000 11.775000 2.100000 +v -3.375001 11.775000 -2.100000 +v -3.375001 11.775000 2.100000 +v -8.625000 11.512502 1.050000 +v -8.625000 10.462500 1.050000 +v -8.625000 11.512502 -1.050000 +v -8.625000 10.462500 -1.050000 +v -9.150000 11.512502 -1.050000 +v -9.150000 11.512502 1.050000 +v -9.150000 10.462500 1.050000 +v -9.150000 10.462500 -1.050000 +v -8.554665 6.787500 0.525000 +v -8.100002 6.525000 0.525000 +v -8.554665 6.787500 -0.525000 +v -8.100002 6.525000 -0.525000 +v -9.604664 4.968847 -0.525000 +v -9.604664 4.968847 0.525000 +v -9.150002 4.706348 0.525000 +v -9.150002 4.706348 -0.525000 +vt 0.275000 0.191489 +vt 0.275000 0.170213 +vt 0.300000 0.191489 +vt 0.050000 0.170213 +vt 0.250000 0.191489 +vt 0.050000 0.191489 +vt 0.525000 0.191489 +vt 0.525000 0.170213 +vt 0.550000 0.191489 +vt 0.550000 0.170213 +vt 0.750000 0.000000 +vt 0.750000 0.170213 +vt 0.500000 0.170213 +vt 0.300000 0.170213 +vt 0.750000 0.191489 +vt 0.750000 0.574468 +vt 0.550000 0.553191 +vt 0.750000 0.553191 +vt 0.250000 0.574468 +vt 0.050000 0.553191 +vt 0.250000 0.553191 +vt 0.500000 0.574468 +vt 0.300000 0.553191 +vt 0.500000 0.553191 +vt 1.000000 0.553191 +vt 0.800000 0.574468 +vt 0.800000 0.553191 +vt 0.050000 0.574468 +vt 0.025000 0.574468 +vt 0.025000 0.553191 +vt 0.775000 0.553191 +vt 0.775000 0.574468 +vt 0.525000 0.553191 +vt 0.550000 0.574468 +vt 0.525000 0.574468 +vt 0.275000 0.553191 +vt 0.300000 0.574468 +vt 0.275000 0.574468 +vt 0.500000 0.808511 +vt 0.300000 0.808511 +vt 0.800000 0.808511 +vt 0.750000 0.808511 +vt 1.000000 0.574468 +vt 0.550000 0.808511 +vt 0.050000 0.808511 +vt 0.250000 0.808511 +vt 0.550000 1.000000 +vt 0.750000 0.829787 +vt 0.750000 1.000000 +vt 0.300000 0.829787 +vt 0.525000 0.808511 +vt 0.525000 0.829787 +vt 0.250000 0.829787 +vt 0.275000 0.829787 +vt 0.275000 0.808511 +vt 1.000000 0.829787 +vt 1.000000 0.808511 +vt 0.025000 0.808511 +vt 0.025000 0.829787 +vt 0.775000 0.829787 +vt 0.775000 0.808511 +vt 0.550000 0.510638 +vt 0.750000 0.489362 +vt 0.750000 0.510638 +vt 0.050000 0.510638 +vt 0.250000 0.489362 +vt 0.250000 0.510638 +vt 0.300000 0.510638 +vt 0.500000 0.489362 +vt 0.500000 0.510638 +vt 0.800000 0.489362 +vt 1.000000 0.510638 +vt 0.800000 0.510638 +vt 0.050000 0.489362 +vt 0.025000 0.510638 +vt 0.025000 0.489362 +vt 0.775000 0.510638 +vt 0.775000 0.489362 +vt 0.525000 0.510638 +vt 0.525000 0.489362 +vt 0.550000 0.489362 +vt 0.275000 0.510638 +vt 0.275000 0.489362 +vt 0.300000 0.489362 +vt 0.050000 0.425532 +vt 0.250000 0.382979 +vt 0.250000 0.425532 +vt 0.550000 0.382979 +vt 0.750000 0.425532 +vt 0.550000 0.425532 +vt 0.300000 0.382979 +vt 0.500000 0.425532 +vt 0.300000 0.425532 +vt 0.500000 0.382979 +vt 0.275000 0.446809 +vt 0.550000 0.446809 +vt 0.525000 0.446809 +vt 0.500000 0.446809 +vt 0.300000 0.446809 +vt 0.800000 0.446809 +vt 0.800000 0.425532 +vt 0.050000 0.446809 +vt 0.750000 0.446809 +vt 0.025000 0.446809 +vt 1.000000 0.489362 +vt 0.775000 0.446809 +vt 0.000000 0.425532 +vt 1.000000 0.446809 +vt 0.250000 0.446809 +vt 0.800000 0.382979 +vt 1.000000 0.425532 +vt 0.750000 0.382979 +vt 0.000000 0.382979 +vt 0.750000 0.361702 +vt 0.550000 0.361702 +vt 0.300000 0.361702 +vt 0.275000 0.361702 +vt 0.050000 0.382979 +vt 0.250000 0.361702 +vt 0.025000 0.361702 +vt 1.000000 0.361702 +vt 1.000000 0.382979 +vt 0.800000 0.361702 +vt 0.050000 0.340426 +vt 0.050000 0.361702 +vt 0.300000 0.340426 +vt 0.500000 0.361702 +vt 0.550000 0.340426 +vt 0.275000 0.340426 +vt 0.775000 0.340426 +vt 0.775000 0.361702 +vt 0.800000 0.340426 +vt 0.250000 0.340426 +vt 0.525000 0.340426 +vt 0.525000 0.361702 +vt 0.750000 0.319149 +vt 0.750000 0.340426 +vt 0.500000 0.319149 +vt 0.550000 0.319149 +vt 0.300000 0.319149 +vt 0.500000 0.340426 +vt 0.250000 0.319149 +vt 0.025000 0.340426 +vt 0.050000 0.319149 +vt 1.000000 0.319149 +vt 1.000000 0.340426 +vt 0.750000 0.276596 +vt 0.800000 0.319149 +vt 0.500000 0.276596 +vt 0.000000 0.276596 +vt 0.000000 0.319149 +vt 0.800000 0.276596 +vt 0.300000 0.276596 +vt 0.250000 0.276596 +vt 0.550000 0.276596 +vt 0.050000 0.276596 +vt 0.750000 0.255319 +vt 0.550000 0.255319 +vt 0.300000 0.255319 +vt 0.275000 0.255319 +vt 0.250000 0.255319 +vt 0.025000 0.255319 +vt 1.000000 0.255319 +vt 1.000000 0.276596 +vt 0.800000 0.255319 +vt 0.525000 0.255319 +vt 0.025000 0.191489 +vt 0.050000 0.255319 +vt 0.500000 0.255319 +vt 0.775000 0.191489 +vt 0.775000 0.255319 +vt 0.800000 0.191489 +vt 1.000000 0.191489 +vt 0.800000 0.170213 +vt 1.000000 0.170213 +vt 0.025000 0.170213 +vt 0.775000 0.170213 +vt 0.250000 0.851064 +vt 0.150000 0.893617 +vt 0.150000 0.851064 +vt 0.250000 0.893617 +vt 0.275000 0.851064 +vt 0.275000 0.893617 +vt 0.125000 0.893617 +vt 0.125000 0.851064 +vt 0.250000 0.914894 +vt 0.150000 0.914894 +vt 0.150000 0.829787 +vt 0.250000 0.829787 +vt 0.350000 0.914894 +vt 0.300000 0.936170 +vt 0.300000 0.914894 +vt 0.300000 0.829787 +vt 0.350000 0.829787 +vt 0.375000 0.829787 +vt 0.275000 0.829787 +vt 0.425000 0.914894 +vt 0.425000 0.829787 +vt 0.250000 0.170213 +vt 0.550000 0.000000 +vt 0.500000 0.191489 +vt 0.550000 0.829787 +vt 0.500000 0.829787 +vt 0.050000 0.829787 +vt 0.800000 0.829787 +vt 0.350000 0.936170 +vt 0.375000 0.914894 +vt 0.275000 0.914894 +vn -0.5774 0.5774 0.5773 +vn 0.0000 0.7071 0.7071 +vn -0.5774 0.5774 -0.5773 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.5774 -0.5773 -0.5774 +vn 0.0000 -0.7071 0.7071 +vn -0.5774 -0.5773 0.5774 +vn 0.7071 -0.7071 0.0000 +vn 0.5774 -0.5773 0.5774 +vn 0.5774 -0.5773 -0.5774 +vn 0.7071 0.7071 0.0000 +vn 0.5774 0.5774 0.5774 +vn 0.5774 0.5774 -0.5774 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 -0.5000 0.0000 +s off +f 401/494/95 297/495/95 403/496/95 +f 294/497/96 401/498/96 400/499/96 +f 402/500/97 296/501/97 398/502/97 +f 296/503/98 294/504/98 295/505/98 +f 296/506/99 403/496/99 297/507/99 +f 398/502/100 295/505/100 399/508/100 +f 302/509/98 300/510/98 298/511/98 +f 305/512/98 299/513/98 301/514/98 +f 306/515/98 301/516/98 300/517/98 +f 299/518/98 308/519/98 298/520/98 +f 304/521/98 309/522/98 299/523/98 +f 298/524/98 308/519/98 302/525/98 +f 300/526/98 303/527/98 306/528/98 +f 301/529/98 307/530/98 305/531/98 +f 314/532/101 307/530/101 306/515/101 +f 315/533/102 305/531/102 307/530/102 +f 316/534/103 302/525/103 308/519/103 +f 310/535/104 303/527/104 302/509/104 +f 309/536/105 316/534/105 308/519/105 +f 311/537/106 306/528/106 303/527/106 +f 312/538/107 309/522/107 304/521/107 +f 313/539/108 304/521/108 305/512/108 +f 321/540/109 318/541/109 319/542/109 +f 318/541/110 311/537/110 310/535/110 +f 314/532/111 321/543/111 315/533/111 +f 314/544/112 311/537/112 320/545/112 +f 321/546/113 312/538/113 313/539/113 +f 315/533/114 321/547/114 313/548/114 +f 319/549/115 316/534/115 317/550/115 +f 317/551/116 312/538/116 319/552/116 +f 316/534/117 318/553/117 310/554/117 +f 324/555/109 326/556/109 322/557/109 +f 323/558/109 329/559/109 325/560/109 +f 325/561/109 330/562/109 324/563/109 +f 332/564/109 323/565/109 322/566/109 +f 328/567/109 323/568/109 333/569/109 +f 322/570/109 326/571/109 332/564/109 +f 324/572/109 330/573/109 327/574/109 +f 325/575/109 329/576/109 331/577/109 +f 337/578/108 352/579/108 336/580/108 +f 354/581/104 347/582/104 346/583/104 +f 357/584/101 348/585/101 349/586/101 +f 356/587/106 346/583/106 348/585/106 +f 349/586/109 341/588/109 336/580/109 +f 348/585/109 338/589/109 342/590/109 +f 349/586/109 342/591/109 343/592/109 +f 344/593/109 347/582/109 335/594/109 +f 340/595/108 329/559/108 328/567/108 +f 341/588/102 331/577/102 329/576/102 +f 338/589/104 326/556/104 327/574/104 +f 346/583/109 339/596/109 338/589/109 +f 345/597/107 328/567/107 333/569/107 +f 344/593/105 333/598/105 332/564/105 +f 343/592/101 330/562/101 331/577/101 +f 339/599/103 332/564/103 326/571/103 +f 337/578/109 345/597/109 334/600/109 +f 342/590/106 327/574/106 330/573/106 +f 335/594/109 345/601/109 344/593/109 +f 337/578/109 341/602/109 340/595/109 +f 351/603/105 334/604/105 335/594/105 +f 336/580/102 357/584/102 349/586/102 +f 355/605/103 335/594/103 347/582/103 +f 350/606/107 337/578/107 334/600/107 +f 354/581/98 359/607/98 355/605/98 +f 356/587/98 358/608/98 354/581/98 +f 363/609/98 356/587/98 357/584/98 +f 357/584/98 361/610/98 363/609/98 +f 353/611/98 361/612/98 352/579/98 +f 365/613/98 353/611/98 350/606/98 +f 351/603/98 365/614/98 350/615/98 +f 355/605/98 364/616/98 351/603/98 +f 365/613/107 368/617/107 360/618/107 +f 371/619/101 362/620/101 363/609/101 +f 366/621/104 359/607/104 358/608/104 +f 369/622/102 363/609/102 361/610/102 +f 367/623/103 364/616/103 359/624/103 +f 372/625/105 365/614/105 364/616/105 +f 360/618/108 369/626/108 361/612/108 +f 370/627/106 358/608/106 362/628/106 +f 366/621/109 379/629/109 367/630/109 +f 366/621/109 380/631/109 378/632/109 +f 381/633/109 370/634/109 371/619/109 +f 369/622/109 381/633/109 371/619/109 +f 368/617/109 376/635/109 369/626/109 +f 373/636/109 377/637/109 368/617/109 +f 372/625/109 374/638/109 373/639/109 +f 379/629/109 372/625/109 367/623/109 +f 387/640/103 375/641/103 379/629/103 +f 388/642/106 378/632/106 380/631/106 +f 382/643/107 377/637/107 374/644/107 +f 383/645/105 374/638/105 375/641/105 +f 389/646/101 380/631/101 381/633/101 +f 384/647/102 381/633/102 376/635/102 +f 386/648/104 379/629/104 378/632/104 +f 385/649/108 376/635/108 377/637/108 +f 386/648/98 391/650/98 387/640/98 +f 388/642/98 390/651/98 386/648/98 +f 395/652/98 388/642/98 389/646/98 +f 389/646/98 393/653/98 395/652/98 +f 385/649/98 393/654/98 384/647/98 +f 397/655/98 385/649/98 382/643/98 +f 383/645/98 397/656/98 382/657/98 +f 387/640/98 396/658/98 383/645/98 +f 402/500/106 390/651/106 394/659/106 +f 405/660/107 392/661/107 397/655/107 +f 403/496/101 394/662/101 395/652/101 +f 390/651/104 399/508/104 391/650/104 +f 401/494/102 395/652/102 393/653/102 +f 399/663/103 396/658/103 391/664/103 +f 404/665/105 397/656/105 396/658/105 +f 400/499/108 393/654/108 392/661/108 +f 405/666/118 295/667/118 294/668/118 +f 405/660/119 294/669/119 400/499/119 +f 404/665/120 399/663/120 295/670/120 +f 300/510/104 322/557/104 298/511/104 +f 325/561/101 300/517/101 301/516/101 +f 299/513/108 325/560/108 301/514/108 +f 298/520/105 323/565/105 299/518/105 +f 410/671/101 412/672/101 411/673/101 +f 413/674/104 408/675/104 409/676/104 +f 411/673/108 407/677/108 406/678/108 +f 412/672/109 409/679/109 407/680/109 +f 410/671/98 406/681/98 408/682/98 +f 418/683/121 420/684/121 419/685/121 +f 418/683/122 414/686/122 416/687/122 +f 417/688/104 418/683/104 416/687/104 +f 419/685/108 415/689/108 414/686/108 +f 420/690/123 417/688/123 415/691/123 +f 294/497/96 297/692/96 401/498/96 +f 296/503/98 297/693/98 294/504/98 +f 296/506/99 402/694/99 403/496/99 +f 398/502/100 296/503/100 295/505/100 +f 302/509/98 303/527/98 300/510/98 +f 305/512/98 304/521/98 299/513/98 +f 306/515/98 307/530/98 301/516/98 +f 299/518/98 309/536/98 308/519/98 +f 314/532/101 315/533/101 307/530/101 +f 315/533/102 313/548/102 305/531/102 +f 316/534/103 310/554/103 302/525/103 +f 310/535/104 311/537/104 303/527/104 +f 309/536/105 317/550/105 316/534/105 +f 311/537/106 314/544/106 306/528/106 +f 312/538/107 317/551/107 309/522/107 +f 313/539/108 312/538/108 304/521/108 +f 321/540/109 320/695/109 318/541/109 +f 318/541/110 320/695/110 311/537/110 +f 314/532/111 320/696/111 321/543/111 +f 321/546/113 319/697/113 312/538/113 +f 319/549/115 318/698/115 316/534/115 +f 324/555/109 327/574/109 326/556/109 +f 323/558/109 328/567/109 329/559/109 +f 325/561/109 331/577/109 330/562/109 +f 332/564/109 333/598/109 323/565/109 +f 337/578/108 353/611/108 352/579/108 +f 354/581/104 355/605/104 347/582/104 +f 357/584/101 356/587/101 348/585/101 +f 356/587/106 354/581/106 346/583/106 +f 349/586/109 343/592/109 341/588/109 +f 348/585/109 346/583/109 338/589/109 +f 349/586/109 348/585/109 342/591/109 +f 344/593/109 339/599/109 347/582/109 +f 340/595/108 341/602/108 329/559/108 +f 341/588/102 343/592/102 331/577/102 +f 338/589/104 339/596/104 326/556/104 +f 346/583/109 347/582/109 339/596/109 +f 345/597/107 340/595/107 328/567/107 +f 344/593/105 345/601/105 333/598/105 +f 343/592/101 342/591/101 330/562/101 +f 339/599/103 344/593/103 332/564/103 +f 337/578/109 340/595/109 345/597/109 +f 342/590/106 338/589/106 327/574/106 +f 335/594/109 334/604/109 345/601/109 +f 337/578/109 336/580/109 341/602/109 +f 351/603/105 350/615/105 334/604/105 +f 336/580/102 352/579/102 357/584/102 +f 355/605/103 351/603/103 335/594/103 +f 350/606/107 353/611/107 337/578/107 +f 354/581/98 358/608/98 359/607/98 +f 356/587/98 362/628/98 358/608/98 +f 363/609/98 362/620/98 356/587/98 +f 357/584/98 352/579/98 361/610/98 +f 353/611/98 360/618/98 361/612/98 +f 365/613/98 360/618/98 353/611/98 +f 351/603/98 364/616/98 365/614/98 +f 355/605/98 359/624/98 364/616/98 +f 365/613/107 373/636/107 368/617/107 +f 371/619/101 370/634/101 362/620/101 +f 366/621/104 367/630/104 359/607/104 +f 369/622/102 371/619/102 363/609/102 +f 367/623/103 372/625/103 364/616/103 +f 372/625/105 373/639/105 365/614/105 +f 360/618/108 368/617/108 369/626/108 +f 370/627/106 366/621/106 358/608/106 +f 366/621/109 378/632/109 379/629/109 +f 366/621/109 370/627/109 380/631/109 +f 381/633/109 380/631/109 370/634/109 +f 369/622/109 376/635/109 381/633/109 +f 368/617/109 377/637/109 376/635/109 +f 373/636/109 374/644/109 377/637/109 +f 372/625/109 375/641/109 374/638/109 +f 379/629/109 375/641/109 372/625/109 +f 387/640/103 383/645/103 375/641/103 +f 388/642/106 386/648/106 378/632/106 +f 382/643/107 385/649/107 377/637/107 +f 383/645/105 382/657/105 374/638/105 +f 389/646/101 388/642/101 380/631/101 +f 384/647/102 389/646/102 381/633/102 +f 386/648/104 387/640/104 379/629/104 +f 385/649/108 384/647/108 376/635/108 +f 386/648/98 390/651/98 391/650/98 +f 388/642/98 394/659/98 390/651/98 +f 395/652/98 394/662/98 388/642/98 +f 389/646/98 384/647/98 393/653/98 +f 385/649/98 392/661/98 393/654/98 +f 397/655/98 392/661/98 385/649/98 +f 383/645/98 396/658/98 397/656/98 +f 387/640/98 391/664/98 396/658/98 +f 402/500/106 398/502/106 390/651/106 +f 405/660/107 400/499/107 392/661/107 +f 403/496/101 402/694/101 394/662/101 +f 390/651/104 398/502/104 399/508/104 +f 401/494/102 403/496/102 395/652/102 +f 399/663/103 404/665/103 396/658/103 +f 404/665/105 405/666/105 397/656/105 +f 400/499/108 401/498/108 393/654/108 +f 405/666/118 404/665/118 295/667/118 +f 300/510/104 324/555/104 322/557/104 +f 325/561/101 324/563/101 300/517/101 +f 299/513/108 323/558/108 325/560/108 +f 298/520/105 322/566/105 323/565/105 +f 410/671/101 413/674/101 412/672/101 +f 413/674/104 410/671/104 408/675/104 +f 411/673/108 412/672/108 407/677/108 +f 412/672/109 413/674/109 409/679/109 +f 410/671/98 411/673/98 406/681/98 +f 418/683/121 421/699/121 420/684/121 +f 418/683/122 419/685/122 414/686/122 +f 417/688/104 421/700/104 418/683/104 +f 419/685/108 420/701/108 415/689/108 +f 420/690/123 421/700/123 417/688/123 +o Tail +v -2.100001 9.150000 13.650000 +v 2.099998 9.150000 13.650000 +v -2.100001 9.150000 9.450000 +v 2.099998 9.150000 9.450000 +v 2.099999 15.450000 7.349999 +v -2.100000 15.450000 7.349999 +v 2.099998 11.250000 7.349999 +v -2.100001 11.250000 7.349999 +v -1.050001 10.200000 2.100000 +v 1.049999 10.200000 2.100000 +v -1.050001 12.299999 2.100000 +v 1.049999 12.299999 2.100000 +v -3.150002 0.750000 14.699999 +v 3.149997 0.750000 14.699999 +v -3.150002 0.750000 8.400000 +v 3.149997 0.750000 8.400000 +v -4.200002 -2.400000 15.749999 +v 4.199996 -2.400000 15.749999 +v -3.150002 -4.500000 8.400000 +v 3.149997 -4.500000 8.400000 +v -4.200002 -8.699997 12.599999 +v 4.199996 -8.699997 12.599999 +v -4.200002 -8.699997 17.849998 +v 4.199996 -8.699997 17.849998 +v -3.150002 -4.500000 22.049999 +v 3.149997 -4.500000 22.049999 +v 3.149997 0.750000 22.049999 +v -3.150002 0.750000 22.049999 +v 2.099998 7.049999 14.699999 +v -2.100001 7.049999 14.699999 +v -3.150002 0.750000 16.799999 +v 3.149997 0.750000 16.799999 +vt 0.576923 0.192308 +vt 0.730769 0.153846 +vt 0.730769 0.192308 +vt 0.730769 0.000000 +vt 0.615385 0.096154 +vt 0.653846 -0.000000 +vt 0.346154 -0.000000 +vt 0.461538 0.096154 +vt 0.307692 0.096154 +vt 0.500000 -0.000000 +vt 0.269231 -0.000000 +vt 0.153846 0.096154 +vt 0.192308 -0.000000 +vt 0.461538 0.250000 +vt 0.576923 0.153846 +vt 0.307692 0.250000 +vt 0.192308 0.192308 +vt 0.461538 0.250000 +vt 0.269231 0.403846 +vt 0.307692 0.250000 +vt 0.961538 0.250000 +vt 0.769231 0.403846 +vt 0.807692 0.250000 +vt 0.538462 0.250000 +vt 0.730769 0.403846 +vt 0.500000 0.403846 +vt 0.076923 0.250000 +vt 0.038462 0.403846 +vt 0.500000 0.788462 +vt 0.692308 0.826923 +vt 0.500000 0.884615 +vt 0.269231 0.500000 +vt 0.076923 0.884615 +vt 0.076923 0.826923 +vt 0.269231 0.884615 +vt 0.500000 0.500000 +vt 0.230769 0.596154 +vt 0.538462 0.500000 +vt 0.769231 0.548077 +vt 0.538462 0.596154 +vt 0.230769 0.500000 +vt -0.000000 0.548077 +vt 0.230769 0.692308 +vt 0.538462 0.692308 +vt 0.269231 0.788462 +vt 1.000000 0.403846 +vt 0.769231 0.500000 +vt 0.923077 0.826923 +vt 0.730769 0.942308 +vt 0.769231 0.826923 +vt 0.730769 0.500000 +vt 0.769231 0.740385 +vt 0.538462 0.788462 +vt 0.307692 1.000000 +vt 0.230769 0.788462 +vt -0.000000 0.740385 +vt 0.769231 0.644231 +vt -0.000000 0.644231 +vt 1.000000 1.000000 +vt 0.692308 1.000000 +vt 0.076923 1.000000 +vt 0.692308 1.000000 +vt 0.692308 0.884615 +vt -0.000000 0.500000 +vt 0.769231 0.096154 +vt 0.423077 0.000000 +vt 0.576923 -0.000000 +vt 0.192308 0.153846 +vt 0.692308 0.250000 +vt 0.230769 0.250000 +vt 1.000000 0.500000 +vt 0.961538 0.942308 +vt 0.461538 1.000000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.9806 0.1961 +vn 0.0000 0.8575 -0.5145 +vn -0.9806 0.0000 -0.1961 +vn 0.9806 0.0000 -0.1961 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.7071 0.7071 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.1240 -0.9923 +vn 0.0000 0.1240 0.9923 +vn 0.9923 0.1240 0.0000 +vn -0.9923 0.1240 0.0000 +vn 0.9864 0.0000 0.1644 +vn 0.0000 0.0000 -1.0000 +vn -0.9487 0.3162 0.0000 +vn 0.9831 0.0819 -0.1638 +vn -0.9831 0.0819 -0.1638 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.3162 0.9487 +vn 0.0000 -0.3162 -0.9487 +vn 0.9487 0.3162 0.0000 +vn 0.9810 0.0613 0.1839 +vn 0.0000 0.7593 0.6508 +vn 0.0000 0.0000 1.0000 +vn -0.9810 0.0613 0.1839 +vn 0.0000 0.3162 -0.9487 +vn -0.9864 0.1644 0.0000 +vn 0.9864 0.1644 0.0000 +vn 0.9899 0.0000 -0.1414 +vn -0.9899 0.0000 -0.1414 +vn -0.9864 0.0000 0.1644 +s off +f 424/702/124 428/703/124 425/704/124 +f 431/705/125 429/706/125 430/707/125 +f 433/708/126 427/709/126 426/710/126 +f 432/711/127 429/706/127 427/709/127 +f 433/712/128 428/713/128 431/714/128 +f 422/715/129 429/716/129 424/702/129 +f 423/717/130 427/709/130 422/715/130 +f 425/718/131 426/710/131 423/717/131 +f 425/719/132 436/720/132 424/721/132 +f 422/722/133 435/723/133 423/724/133 +f 425/725/134 435/726/134 437/727/134 +f 422/728/135 436/720/135 434/729/135 +f 447/730/136 439/731/136 448/732/136 +f 437/727/137 440/733/137 436/720/137 +f 452/734/138 438/735/138 449/736/138 +f 441/737/124 442/738/124 440/733/124 +f 441/739/139 439/740/139 443/741/139 +f 440/742/140 442/738/140 438/743/140 +f 443/741/141 444/744/141 442/738/141 +f 445/745/142 446/746/142 444/744/142 +f 434/747/143 439/748/143 435/723/143 +f 450/749/144 452/750/144 451/751/144 +f 435/726/145 439/752/145 437/727/145 +f 445/745/146 439/753/146 447/754/146 +f 448/732/147 451/755/147 449/736/147 +f 447/730/148 449/736/148 446/746/148 +f 444/744/149 446/756/149 438/757/149 +f 443/741/131 439/758/131 445/745/131 +f 442/738/129 444/744/129 438/759/129 +f 452/750/150 439/760/150 438/761/150 +f 449/736/151 451/762/151 452/734/151 +f 450/763/152 448/732/152 453/764/152 +f 434/729/138 436/720/138 438/765/138 +f 448/732/145 439/731/145 453/764/145 +f 437/727/153 439/752/153 441/737/153 +f 438/765/154 436/720/154 440/733/154 +f 449/736/155 438/735/155 446/746/155 +f 424/702/124 429/716/124 428/703/124 +f 431/705/125 428/766/125 429/706/125 +f 433/708/126 432/767/126 427/709/126 +f 432/711/127 430/768/127 429/706/127 +f 433/712/128 426/710/128 428/713/128 +f 422/715/129 427/709/129 429/716/129 +f 423/717/130 426/710/130 427/709/130 +f 425/718/131 428/769/131 426/710/131 +f 425/719/132 437/727/132 436/720/132 +f 422/722/133 434/747/133 435/723/133 +f 425/725/134 423/770/134 435/726/134 +f 422/728/135 424/771/135 436/720/135 +f 437/727/137 441/737/137 440/733/137 +f 441/737/124 443/741/124 442/738/124 +f 443/741/141 445/745/141 444/744/141 +f 445/745/142 447/730/142 446/746/142 +f 434/747/143 438/772/143 439/748/143 +f 450/749/144 453/773/144 452/750/144 +f 448/732/147 450/774/147 451/755/147 +f 447/730/148 448/732/148 449/736/148 +f 452/750/150 453/773/150 439/760/150 +o RightLeg +v 0.099999 11.700001 2.100000 +v -4.100001 11.700001 2.100000 +v 0.099999 11.700001 -2.100000 +v -4.100001 11.700001 -2.100000 +v -0.950001 16.950001 -2.100000 +v -3.050000 16.950001 -2.100000 +v -1.475001 19.049999 -2.100000 +v -2.525001 19.049999 -2.100000 +v -0.950001 18.000000 -2.100000 +v -3.050000 18.000000 -2.100000 +v -1.475000 19.575001 -2.100000 +v -2.525001 19.575001 -2.100000 +v -1.475001 19.049999 -2.625000 +v -0.950001 16.950001 -2.625000 +v -3.050000 16.950001 -2.625000 +v -2.525001 19.049999 -2.625000 +v -4.100001 18.000000 -2.100000 +v 0.099999 18.000000 -2.100000 +v -4.100001 18.000000 0.000000 +v 0.099999 18.000000 0.000000 +v -4.100001 19.049999 2.100000 +v 0.099999 19.049999 2.100000 +v -0.950001 18.000000 -2.625000 +v -3.050000 18.000000 -2.625000 +v -1.475000 19.575001 -2.625000 +v -2.525001 19.575001 -2.625000 +v -4.100001 18.000000 -2.625000 +v 0.099999 18.000000 -2.625000 +v 0.625000 18.000000 -2.100000 +v 0.625000 18.000000 0.000000 +v 0.625000 19.049999 2.100000 +v -4.625000 18.000000 -2.100000 +v -4.625000 18.000000 0.000000 +v -4.625000 19.049999 2.100000 +v -4.100001 19.049999 2.625000 +v 0.099999 19.049999 2.625000 +v -4.100001 16.424999 -2.100000 +v 0.099999 16.424999 -2.100000 +v -4.100001 16.424999 -2.625000 +v 0.099999 16.424999 -2.625000 +v 0.624999 16.424999 -2.100000 +v -4.625000 16.424999 -2.100000 +v -4.100001 16.424999 2.100000 +v 0.099999 16.424999 2.100000 +v 0.624999 16.424999 2.100000 +v -4.625000 16.424999 2.100000 +v -4.100001 16.424999 2.625000 +v 0.099999 16.424999 2.625000 +v 0.099999 13.275000 -2.625000 +v 0.099999 13.275000 -2.100000 +v -4.100001 13.275000 -2.100000 +v -4.100001 13.275000 -2.625000 +v 0.624999 13.275000 -2.100000 +v -4.625001 13.275000 -2.100000 +v 0.099999 13.275000 2.100000 +v 0.624999 13.275000 2.100000 +v -4.625001 13.275000 2.100000 +v -4.100001 13.275000 2.100000 +v -4.100001 13.275000 2.625000 +v 0.099999 13.275000 2.625000 +v -4.100000 21.674999 -2.625000 +v 0.100000 21.674999 -2.625000 +v 0.625000 21.674999 -2.100000 +v -4.625000 21.674999 -2.100000 +v 0.625000 21.674999 2.100000 +v -4.625000 21.674999 2.100000 +v -4.100000 21.674999 2.625000 +v 0.100000 21.674999 2.625000 +v 0.100000 21.674999 2.100000 +v -4.100000 21.674999 2.100000 +v 0.100000 21.674999 -2.100000 +v -4.100000 21.674999 -2.100000 +v 0.100000 22.200001 2.100000 +v -4.100000 22.200001 2.100000 +v 0.100000 22.200001 -2.100000 +v -4.100000 22.200001 -2.100000 +vt 0.395833 1.000000 +vt 0.562500 0.800000 +vt 0.562500 1.000000 +vt 0.375000 0.150000 +vt 0.208333 0.125000 +vt 0.375000 0.125000 +vt 0.770833 0.525000 +vt 0.833333 0.425000 +vt 0.854167 0.525000 +vt 0.833333 0.400000 +vt 0.791667 0.425000 +vt 0.791667 0.400000 +vt 0.770833 0.550000 +vt 0.854167 0.550000 +vt 0.750000 0.425000 +vt 0.750000 0.525000 +vt 0.875000 0.525000 +vt 0.854167 0.425000 +vt 0.875000 0.425000 +vt 0.520833 0.375000 +vt 0.562500 0.350000 +vt 0.562500 0.375000 +vt 0.437500 0.375000 +vt 0.458333 0.350000 +vt 0.458333 0.375000 +vt 0.500000 0.350000 +vt 0.500000 0.375000 +vt 0.520833 0.350000 +vt 0.395833 0.375000 +vt 0.437500 0.350000 +vt 0.666667 0.375000 +vt 0.750000 0.350000 +vt 0.750000 0.375000 +vt 0.583333 0.375000 +vt 0.666667 0.350000 +vt 0.208333 0.375000 +vt 0.291667 0.350000 +vt 0.291667 0.375000 +vt 0.375000 0.350000 +vt 0.375000 0.375000 +vt 0.020833 0.300000 +vt 0.187500 0.325000 +vt 0.020833 0.325000 +vt 0.208333 0.350000 +vt 0.187500 0.375000 +vt 0.000000 0.325000 +vt 0.375000 0.375000 +vt 0.395833 0.350000 +vt 0.562500 0.375000 +vt 0.583333 0.350000 +vt 0.395833 0.525000 +vt 0.395833 0.550000 +vt 0.375000 0.525000 +vt 0.583333 0.525000 +vt 0.583333 0.550000 +vt 0.562500 0.525000 +vt 0.562500 0.525000 +vt 0.562500 0.550000 +vt 0.208333 0.550000 +vt 0.375000 0.525000 +vt 0.375000 0.550000 +vt 0.750000 0.525000 +vt 0.187500 0.550000 +vt 0.020833 0.525000 +vt 0.187500 0.525000 +vt 0.208333 0.525000 +vt 0.187500 0.525000 +vt -0.000000 0.525000 +vt 0.020833 0.550000 +vt 0.395833 0.725000 +vt 0.375000 0.725000 +vt 0.395833 0.700000 +vt 0.583333 0.725000 +vt 0.562500 0.725000 +vt 0.583333 0.700000 +vt 0.562500 0.725000 +vt 0.562500 0.700000 +vt 0.375000 0.725000 +vt 0.208333 0.700000 +vt 0.375000 0.700000 +vt 0.750000 0.725000 +vt 0.020833 0.725000 +vt 0.187500 0.700000 +vt 0.187500 0.725000 +vt 0.208333 0.725000 +vt 0.187500 0.725000 +vt 0.000000 0.725000 +vt 0.020833 0.700000 +vt -0.000000 0.700000 +vt -0.000000 0.550000 +vt 0.750000 0.550000 +vt 0.583333 0.175000 +vt 0.375000 0.175000 +vt 0.395833 0.175000 +vt 0.458333 0.275000 +vt 0.562500 0.175000 +vt -0.000000 0.300000 +vt 0.020833 0.175000 +vt 0.187500 0.300000 +vt 0.208333 0.175000 +vt 0.208333 0.300000 +vt 0.750000 0.175000 +vt 0.750000 0.300000 +vt 0.187500 0.175000 +vt 0.395833 0.150000 +vt 0.562500 0.150000 +vt 0.375000 0.150000 +vt 0.020833 0.150000 +vt 0.187500 0.150000 +vt 0.208333 0.150000 +vt 0.562500 0.150000 +vt 0.583333 0.150000 +vt -0.000000 0.150000 +vt 0.750000 0.150000 +vt 0.562500 0.125000 +vt 0.395833 0.125000 +vt 0.750000 0.125000 +vt 0.020833 0.125000 +vt 0.187500 0.125000 +vt 0.187500 0.400000 +vt 0.020833 0.400000 +vt 0.208333 0.400000 +vt 0.291667 0.450000 +vt 0.666667 0.450000 +vt 0.520833 0.450000 +vt 0.437500 0.450000 +vt 0.395833 0.800000 +vt 0.375000 0.800000 +vt 0.208333 0.800000 +vt 0.187500 0.800000 +vt 0.020833 0.800000 +vt 0.750000 0.800000 +vt 0.583333 0.800000 +vt 0.770833 0.425000 +vt 0.750000 0.700000 +vt 0.500000 0.275000 +vt 0.000000 0.175000 +vt 0.583333 0.125000 +vt 0.375000 0.450000 +vt 0.583333 0.450000 +vt 0.750000 0.400000 +vt 0.395833 0.450000 +vt 0.562500 0.450000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn -0.9701 0.2425 0.0000 +vn 0.9701 0.2425 0.0000 +vn 0.9487 -0.3162 0.0000 +vn -0.9487 -0.3162 0.0000 +vn 0.0000 -0.8944 0.4472 +vn -0.7071 0.0000 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.7071 -0.0000 -0.7071 +vn 0.7071 -0.0000 0.7071 +vn 1.0000 -0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +s off +f 455/775/156 456/776/156 454/777/156 +f 525/778/157 527/779/157 529/780/157 +f 468/781/158 466/782/158 467/783/158 +f 460/784/159 469/785/159 461/786/159 +f 459/787/156 467/783/156 458/788/156 +f 461/789/160 468/781/160 459/790/160 +f 458/791/161 466/792/161 460/793/161 +f 462/794/156 481/795/156 471/796/156 +f 463/797/162 479/798/162 465/799/162 +f 465/799/156 478/800/156 464/801/156 +f 464/801/163 476/802/163 462/794/163 +f 470/803/156 477/804/156 463/797/156 +f 473/805/164 484/806/164 475/807/164 +f 471/808/156 483/809/156 473/805/156 +f 474/810/164 486/811/164 472/812/164 +f 472/812/156 485/813/156 470/814/156 +f 489/815/156 474/816/156 475/817/156 +f 487/818/156 474/810/156 488/819/156 +f 475/817/156 484/820/156 489/815/156 +f 470/803/156 485/821/156 480/822/156 +f 471/808/156 481/823/156 482/824/156 +f 490/825/159 492/826/159 495/827/159 +f 491/828/159 494/829/159 493/830/159 +f 492/826/159 491/831/159 493/832/159 +f 499/833/159 490/834/159 495/835/159 +f 497/836/159 494/829/159 491/828/159 +f 500/837/159 497/838/159 496/839/159 +f 496/840/159 499/833/159 500/841/159 +f 498/842/159 497/838/159 501/843/159 +f 504/844/156 507/845/156 505/846/156 +f 503/847/156 502/848/156 506/849/156 +f 503/850/156 505/846/156 502/851/156 +f 504/852/156 510/853/156 507/854/156 +f 506/849/156 508/855/156 503/847/156 +f 508/856/156 512/857/156 511/858/156 +f 511/859/156 512/860/156 510/853/156 +f 509/861/156 513/862/156 508/856/156 +f 499/833/165 512/857/165 500/837/165 +f 500/837/166 513/862/166 501/843/166 +f 493/832/167 506/849/167 502/851/167 +f 501/843/168 509/863/168 498/864/168 +f 493/832/158 505/846/158 492/826/158 +f 498/865/169 506/849/169 494/829/169 +f 495/835/157 510/853/157 499/833/157 +f 492/826/170 507/854/170 495/835/170 +f 481/795/167 516/866/167 482/824/167 +f 480/822/170 517/867/170 514/868/170 +f 479/869/158 514/868/158 515/870/158 +f 484/871/168 521/872/168 489/815/168 +f 488/873/165 519/874/165 487/875/165 +f 518/876/169 484/877/169 483/809/169 +f 489/815/166 520/878/166 488/873/166 +f 517/867/157 486/811/157 519/874/157 +f 515/870/159 525/879/159 524/880/159 +f 519/874/159 525/778/159 517/867/159 +f 517/881/159 525/879/159 514/868/159 +f 520/878/159 522/882/159 523/883/159 +f 520/878/159 523/884/159 519/874/159 +f 516/866/159 515/885/159 524/886/159 +f 521/872/159 518/887/159 522/882/159 +f 516/866/159 522/888/159 518/876/159 +f 528/889/158 525/879/158 529/890/158 +f 524/886/169 526/891/169 522/888/169 +f 523/883/166 526/892/166 527/893/166 +f 474/894/166 497/838/166 475/895/166 +f 496/840/157 474/896/157 472/897/157 +f 473/898/169 497/836/169 491/828/169 +f 462/899/158 465/799/158 464/801/158 +f 463/900/158 462/899/158 491/831/158 +f 504/844/158 456/776/158 457/901/158 +f 511/859/157 457/902/157 455/903/157 +f 508/856/166 455/904/166 454/905/166 +f 503/847/169 454/906/169 456/907/169 +f 455/775/156 457/901/156 456/776/156 +f 525/778/157 523/884/157 527/779/157 +f 468/781/158 469/785/158 466/782/158 +f 460/784/159 466/782/159 469/785/159 +f 459/787/156 468/781/156 467/783/156 +f 461/789/160 469/908/160 468/781/160 +f 458/791/161 467/783/161 466/792/161 +f 462/794/156 476/802/156 481/795/156 +f 463/797/162 477/804/162 479/798/162 +f 465/799/156 479/798/156 478/800/156 +f 464/801/163 478/800/163 476/802/163 +f 470/803/156 480/822/156 477/804/156 +f 473/805/164 483/809/164 484/806/164 +f 471/808/156 482/824/156 483/809/156 +f 474/810/164 487/818/164 486/811/164 +f 472/812/156 486/811/156 485/813/156 +f 489/815/156 488/873/156 474/816/156 +f 492/826/159 490/825/159 491/831/159 +f 499/833/159 496/840/159 490/834/159 +f 497/836/159 498/865/159 494/829/159 +f 500/837/159 501/843/159 497/838/159 +f 503/850/156 504/844/156 505/846/156 +f 504/852/156 511/859/156 510/853/156 +f 506/849/156 509/909/156 508/855/156 +f 508/856/156 513/862/156 512/857/156 +f 499/833/165 510/853/165 512/857/165 +f 500/837/166 512/857/166 513/862/166 +f 493/832/167 494/829/167 506/849/167 +f 501/843/168 513/862/168 509/863/168 +f 493/832/158 502/851/158 505/846/158 +f 498/865/169 509/909/169 506/849/169 +f 495/835/157 507/854/157 510/853/157 +f 492/826/170 505/846/170 507/854/170 +f 481/795/167 515/870/167 516/866/167 +f 480/822/170 485/813/170 517/867/170 +f 479/869/158 477/804/158 480/822/158 +f 515/870/158 481/795/158 478/910/158 +f 481/795/158 476/802/158 478/910/158 +f 479/869/158 480/822/158 514/868/158 +f 515/870/158 478/910/158 479/869/158 +f 484/871/168 518/911/168 521/872/168 +f 488/873/165 520/878/165 519/874/165 +f 483/809/169 482/824/169 516/866/169 +f 516/866/169 518/876/169 483/809/169 +f 489/815/166 521/872/166 520/878/166 +f 485/813/157 486/811/157 517/867/157 +f 486/811/157 487/875/157 519/874/157 +f 515/870/159 514/868/159 525/879/159 +f 519/874/159 523/884/159 525/778/159 +f 520/878/159 521/872/159 522/882/159 +f 516/866/159 524/886/159 522/888/159 +f 528/889/158 524/880/158 525/879/158 +f 524/886/169 528/912/169 526/891/169 +f 523/883/166 522/882/166 526/892/166 +f 474/894/166 496/839/166 497/838/166 +f 472/897/157 470/913/157 490/834/157 +f 490/834/157 496/840/157 472/897/157 +f 491/828/169 471/914/169 473/898/169 +f 473/898/169 475/915/169 497/836/169 +f 462/899/158 463/900/158 465/799/158 +f 490/825/158 470/916/158 463/900/158 +f 462/899/158 471/917/158 491/831/158 +f 490/825/158 463/900/158 491/831/158 +f 504/844/158 503/850/158 456/776/158 +f 511/859/157 504/852/157 457/902/157 +f 508/856/166 511/858/166 455/904/166 +f 503/847/169 508/855/169 454/906/169 +o LeftLeg +v -0.100001 11.700001 2.100000 +v 4.099999 11.700001 2.100000 +v -0.100001 11.700001 -2.100000 +v 4.099999 11.700001 -2.100000 +v 0.949999 16.950001 -2.100000 +v 3.049999 16.950001 -2.100000 +v 1.475000 19.049999 -2.100000 +v 2.525000 19.049999 -2.100000 +v 0.950000 18.000000 -2.100000 +v 3.049999 18.000000 -2.100000 +v 1.475000 19.575001 -2.100000 +v 2.525000 19.575001 -2.100000 +v 1.475000 19.049999 -2.625000 +v 0.949999 16.950001 -2.625000 +v 3.049999 16.950001 -2.625000 +v 2.525000 19.049999 -2.625000 +v 4.099999 18.000000 -2.100000 +v -0.100000 18.000000 -2.100000 +v 4.099999 18.000000 0.000000 +v -0.100000 18.000000 0.000000 +v 4.099999 19.049999 2.100000 +v -0.100000 19.049999 2.100000 +v 0.950000 18.000000 -2.625000 +v 3.049999 18.000000 -2.625000 +v 1.475000 19.575001 -2.625000 +v 2.525000 19.575001 -2.625000 +v 4.099999 18.000000 -2.625000 +v -0.100000 18.000000 -2.625000 +v -0.625000 18.000000 -2.100000 +v -0.625000 18.000000 0.000000 +v -0.625000 19.049999 2.100000 +v 4.625000 18.000000 -2.100000 +v 4.625000 18.000000 0.000000 +v 4.625000 19.049999 2.100000 +v 4.099999 19.049999 2.625000 +v -0.100000 19.049999 2.625000 +v 4.099999 16.424999 -2.100000 +v -0.100001 16.424999 -2.100000 +v 4.099999 16.424999 -2.625000 +v -0.100001 16.424999 -2.625000 +v -0.625001 16.424999 -2.100000 +v 4.625000 16.424999 -2.100000 +v 4.099999 16.424999 2.100000 +v -0.100001 16.424999 2.100000 +v -0.625001 16.424999 2.100000 +v 4.625000 16.424999 2.100000 +v 4.099999 16.424999 2.625000 +v -0.100001 16.424999 2.625000 +v -0.100001 13.275000 -2.625000 +v -0.100001 13.275000 -2.100000 +v 4.099999 13.275000 -2.100000 +v 4.099999 13.275000 -2.625000 +v -0.625001 13.275000 -2.100000 +v 4.624999 13.275000 -2.100000 +v -0.100001 13.275000 2.100000 +v -0.625001 13.275000 2.100000 +v 4.624999 13.275000 2.100000 +v 4.099999 13.275000 2.100000 +v 4.099999 13.275000 2.625000 +v -0.100001 13.275000 2.625000 +v 4.100000 21.674999 -2.625000 +v -0.100000 21.674999 -2.625000 +v -0.625000 21.674999 -2.100000 +v 4.625000 21.674999 -2.100000 +v -0.625000 21.674999 2.100000 +v 4.625000 21.674999 2.100000 +v 4.100000 21.674999 2.625000 +v -0.100000 21.674999 2.625000 +v -0.100000 21.674999 2.100000 +v 4.100000 21.674999 2.100000 +v -0.100000 21.674999 -2.100000 +v 4.100000 21.674999 -2.100000 +v -0.100000 22.200001 2.100000 +v 4.100000 22.199999 2.100000 +v -0.100000 22.200001 -2.100000 +v 4.100000 22.199999 -2.100000 +vt 0.562500 0.800000 +vt 0.395833 1.000000 +vt 0.562500 1.000000 +vt 0.208333 0.125000 +vt 0.375000 0.150000 +vt 0.375000 0.125000 +vt 0.833333 0.425000 +vt 0.770833 0.525000 +vt 0.854167 0.525000 +vt 0.791667 0.425000 +vt 0.833333 0.400000 +vt 0.791667 0.400000 +vt 0.770833 0.550000 +vt 0.854167 0.550000 +vt 0.750000 0.425000 +vt 0.750000 0.525000 +vt 0.854167 0.425000 +vt 0.875000 0.525000 +vt 0.875000 0.425000 +vt 0.562500 0.350000 +vt 0.520833 0.375000 +vt 0.562500 0.375000 +vt 0.458333 0.350000 +vt 0.437500 0.375000 +vt 0.458333 0.375000 +vt 0.500000 0.350000 +vt 0.500000 0.375000 +vt 0.520833 0.350000 +vt 0.437500 0.350000 +vt 0.395833 0.375000 +vt 0.750000 0.350000 +vt 0.666667 0.375000 +vt 0.750000 0.375000 +vt 0.666667 0.350000 +vt 0.583333 0.375000 +vt 0.291667 0.350000 +vt 0.208333 0.375000 +vt 0.291667 0.375000 +vt 0.375000 0.350000 +vt 0.375000 0.375000 +vt 0.187500 0.325000 +vt 0.020833 0.300000 +vt 0.020833 0.325000 +vt 0.208333 0.350000 +vt 0.187500 0.375000 +vt 0.000000 0.325000 +vt 0.395833 0.350000 +vt 0.375000 0.375000 +vt 0.583333 0.350000 +vt 0.562500 0.375000 +vt 0.395833 0.525000 +vt 0.375000 0.525000 +vt 0.395833 0.550000 +vt 0.583333 0.525000 +vt 0.562500 0.525000 +vt 0.583333 0.550000 +vt 0.562500 0.525000 +vt 0.562500 0.550000 +vt 0.375000 0.525000 +vt 0.208333 0.550000 +vt 0.375000 0.550000 +vt 0.750000 0.525000 +vt 0.020833 0.525000 +vt 0.187500 0.550000 +vt 0.187500 0.525000 +vt 0.208333 0.525000 +vt 0.187500 0.525000 +vt -0.000000 0.525000 +vt 0.020833 0.550000 +vt 0.395833 0.725000 +vt 0.395833 0.700000 +vt 0.375000 0.725000 +vt 0.583333 0.725000 +vt 0.583333 0.700000 +vt 0.562500 0.725000 +vt 0.562500 0.725000 +vt 0.562500 0.700000 +vt 0.208333 0.700000 +vt 0.375000 0.725000 +vt 0.375000 0.700000 +vt 0.750000 0.725000 +vt 0.187500 0.700000 +vt 0.020833 0.725000 +vt 0.187500 0.725000 +vt 0.208333 0.725000 +vt 0.187500 0.725000 +vt 0.000000 0.725000 +vt 0.020833 0.700000 +vt -0.000000 0.550000 +vt 0.750000 0.550000 +vt 0.583333 0.175000 +vt 0.395833 0.175000 +vt 0.500000 0.275000 +vt 0.562500 0.175000 +vt 0.020833 0.175000 +vt -0.000000 0.300000 +vt 0.208333 0.300000 +vt 0.187500 0.175000 +vt 0.187500 0.300000 +vt 0.750000 0.175000 +vt 0.208333 0.175000 +vt 0.375000 0.175000 +vt 0.395833 0.150000 +vt 0.562500 0.150000 +vt 0.375000 0.150000 +vt 0.020833 0.150000 +vt 0.187500 0.150000 +vt 0.208333 0.150000 +vt 0.583333 0.150000 +vt 0.562500 0.150000 +vt -0.000000 0.150000 +vt 0.750000 0.150000 +vt 0.562500 0.125000 +vt 0.395833 0.125000 +vt 0.750000 0.125000 +vt 0.020833 0.125000 +vt 0.187500 0.125000 +vt 0.187500 0.400000 +vt 0.020833 0.400000 +vt 0.375000 0.450000 +vt 0.291667 0.450000 +vt 0.750000 0.400000 +vt 0.666667 0.450000 +vt 0.520833 0.450000 +vt 0.437500 0.450000 +vt 0.395833 0.800000 +vt 0.375000 0.800000 +vt 0.208333 0.800000 +vt 0.187500 0.800000 +vt 0.020833 0.800000 +vt 0.750000 0.800000 +vt 0.583333 0.800000 +vt 0.770833 0.425000 +vt 0.750000 0.700000 +vt -0.000000 0.700000 +vt 0.458333 0.275000 +vt 0.000000 0.175000 +vt 0.750000 0.300000 +vt 0.583333 0.125000 +vt 0.208333 0.400000 +vt 0.583333 0.450000 +vt 0.395833 0.450000 +vt 0.562500 0.450000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.9701 0.2425 0.0000 +vn -0.9701 0.2425 0.0000 +vn -0.9487 -0.3162 0.0000 +vn 0.9487 -0.3162 0.0000 +vn 0.0000 -0.8944 0.4472 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn -1.0000 0.0000 0.0000 +vn 0.7071 0.0000 -0.7071 +s off +f 532/918/171 531/919/171 530/920/171 +f 603/921/172 601/922/172 605/923/172 +f 542/924/173 544/925/173 543/926/173 +f 545/927/174 536/928/174 537/929/174 +f 543/926/171 535/930/171 534/931/171 +f 544/925/175 537/932/175 535/933/175 +f 542/934/176 534/935/176 536/936/176 +f 557/937/171 538/938/171 547/939/171 +f 555/940/177 539/941/177 541/942/177 +f 554/943/171 541/942/171 540/944/171 +f 552/945/178 540/944/178 538/938/178 +f 553/946/171 546/947/171 539/941/171 +f 560/948/179 549/949/179 551/950/179 +f 559/951/171 547/952/171 549/949/171 +f 562/953/179 550/954/179 548/955/179 +f 561/956/171 548/955/171 546/957/171 +f 550/958/171 565/959/171 551/960/171 +f 563/961/171 564/962/171 550/954/171 +f 551/960/171 565/959/171 560/963/171 +f 546/947/171 556/964/171 561/965/171 +f 547/952/171 558/966/171 557/967/171 +f 566/968/174 571/969/174 568/970/174 +f 567/971/174 569/972/174 570/973/174 +f 567/974/174 568/970/174 569/975/174 +f 566/976/174 575/977/174 571/978/174 +f 570/973/174 573/979/174 567/971/174 +f 573/980/174 576/981/174 572/982/174 +f 572/983/174 576/984/174 575/977/174 +f 574/985/174 577/986/174 573/980/174 +f 580/987/171 581/988/171 583/989/171 +f 579/990/171 582/991/171 578/992/171 +f 581/988/171 579/993/171 578/994/171 +f 586/995/171 580/996/171 583/997/171 +f 584/998/171 582/991/171 579/990/171 +f 588/999/171 584/1000/171 587/1001/171 +f 587/1002/171 586/995/171 588/1003/171 +f 585/1004/171 584/1000/171 589/1005/171 +f 588/999/180 575/977/180 576/981/180 +f 589/1005/181 576/981/181 577/986/181 +f 578/994/182 570/973/182 569/975/182 +f 574/1006/183 589/1005/183 577/986/183 +f 581/988/173 569/975/173 568/970/173 +f 582/991/184 574/1007/184 570/973/184 +f 586/995/172 571/978/172 575/977/172 +f 583/997/185 568/970/185 571/978/185 +f 592/1008/182 557/937/182 558/966/182 +f 590/1009/185 561/956/185 556/964/185 +f 554/1010/173 591/1011/173 590/1009/173 +f 597/1012/183 560/1013/183 565/959/183 +f 563/1014/180 596/1015/180 564/1016/180 +f 559/951/184 594/1017/184 592/1008/184 +f 564/1016/181 597/1012/181 565/959/181 +f 595/1018/172 562/953/172 593/1019/172 +f 601/1020/174 591/1011/174 600/1021/174 +f 601/922/174 595/1018/174 593/1019/174 +f 593/1022/174 590/1009/174 601/1020/174 +f 598/1023/174 596/1015/174 599/1024/174 +f 596/1015/174 595/1018/174 599/1025/174 +f 592/1008/174 600/1026/174 591/1027/174 +f 597/1012/174 598/1023/174 594/1028/174 +f 598/1029/174 592/1008/174 594/1017/174 +f 601/1020/173 604/1030/173 605/1031/173 +f 602/1032/184 600/1026/184 598/1029/184 +f 602/1033/181 599/1024/181 603/1034/181 +f 573/980/181 550/1035/181 551/1036/181 +f 566/976/172 546/1037/172 548/1038/172 +f 573/979/184 551/1039/184 549/1040/184 +f 541/942/173 538/1041/173 540/944/173 +f 538/1041/173 539/1042/173 566/968/173 +f 532/918/173 580/987/173 533/1043/173 +f 533/1044/172 587/1002/172 531/1045/172 +f 531/1046/181 584/1000/181 530/1047/181 +f 530/1048/184 579/990/184 532/1049/184 +f 532/918/171 533/1043/171 531/919/171 +f 603/921/172 599/1025/172 601/922/172 +f 542/924/173 545/927/173 544/925/173 +f 545/927/174 542/924/174 536/928/174 +f 543/926/171 544/925/171 535/930/171 +f 544/925/175 545/1050/175 537/932/175 +f 542/934/176 543/926/176 534/935/176 +f 557/937/171 552/945/171 538/938/171 +f 555/940/177 553/946/177 539/941/177 +f 554/943/171 555/940/171 541/942/171 +f 552/945/178 554/943/178 540/944/178 +f 553/946/171 556/964/171 546/947/171 +f 560/948/179 559/951/179 549/949/179 +f 559/951/171 558/966/171 547/952/171 +f 562/953/179 563/961/179 550/954/179 +f 561/956/171 562/953/171 548/955/171 +f 550/958/171 564/1016/171 565/959/171 +f 567/974/174 566/968/174 568/970/174 +f 566/976/174 572/983/174 575/977/174 +f 570/973/174 574/1007/174 573/979/174 +f 573/980/174 577/986/174 576/981/174 +f 581/988/171 580/987/171 579/993/171 +f 586/995/171 587/1002/171 580/996/171 +f 584/998/171 585/1051/171 582/991/171 +f 588/999/171 589/1005/171 584/1000/171 +f 588/999/180 586/995/180 575/977/180 +f 589/1005/181 588/999/181 576/981/181 +f 578/994/182 582/991/182 570/973/182 +f 574/1006/183 585/1052/183 589/1005/183 +f 581/988/173 578/994/173 569/975/173 +f 582/991/184 585/1051/184 574/1007/184 +f 586/995/172 583/997/172 571/978/172 +f 583/997/185 581/988/185 568/970/185 +f 592/1008/182 591/1011/182 557/937/182 +f 590/1009/185 593/1019/185 561/956/185 +f 554/1010/173 552/945/173 557/937/173 +f 590/1009/173 556/964/173 555/1053/173 +f 556/964/173 553/946/173 555/1053/173 +f 554/1010/173 557/937/173 591/1011/173 +f 590/1009/173 555/1053/173 554/1010/173 +f 597/1012/183 594/1054/183 560/1013/183 +f 563/1014/180 595/1018/180 596/1015/180 +f 592/1008/184 558/966/184 559/951/184 +f 559/951/184 560/1055/184 594/1017/184 +f 564/1016/181 596/1015/181 597/1012/181 +f 563/1014/172 562/953/172 595/1018/172 +f 562/953/172 561/956/172 593/1019/172 +f 601/1020/174 590/1009/174 591/1011/174 +f 601/922/174 599/1025/174 595/1018/174 +f 598/1023/174 597/1012/174 596/1015/174 +f 598/1029/174 600/1026/174 592/1008/174 +f 601/1020/173 600/1021/173 604/1030/173 +f 602/1032/184 604/1056/184 600/1026/184 +f 602/1033/181 598/1023/181 599/1024/181 +f 573/980/181 572/982/181 550/1035/181 +f 548/1038/172 550/1057/172 572/983/172 +f 572/983/172 566/976/172 548/1038/172 +f 549/1040/184 547/1058/184 567/971/184 +f 567/971/184 573/979/184 549/1040/184 +f 541/942/173 539/1042/173 538/1041/173 +f 539/1042/173 546/1059/173 566/968/173 +f 566/968/173 567/974/173 538/1041/173 +f 567/974/173 547/1060/173 538/1041/173 +f 532/918/173 579/993/173 580/987/173 +f 533/1044/172 580/996/172 587/1002/172 +f 531/1046/181 587/1001/181 584/1000/181 +f 530/1048/184 584/998/184 579/990/184 +o Helmet +v -4.725003 -2.950001 -4.725000 +v 25.451866 4.962900 4.881973 +v 4.199998 -3.475000 0.000000 +v 4.199998 -2.687500 1.363986 +v 4.199998 -1.112499 1.363986 +v 4.199998 -0.325001 0.000000 +v 4.199998 -1.112499 -1.363986 +v 4.199998 -2.687500 -1.363986 +v 5.512498 -2.950001 0.000000 +v 5.512498 -2.424999 0.909325 +v 5.512498 -1.375000 0.909325 +v 5.512498 -0.850000 -0.000000 +v 5.512498 -1.375000 -0.909325 +v 5.512498 -2.424999 -0.909325 +v 5.774998 -3.475000 0.000000 +v 5.774998 -2.687500 1.363986 +v 5.774998 -1.112499 1.363986 +v 5.774998 -0.325001 0.000000 +v 5.774998 -1.112499 -1.363986 +v 5.774998 -2.687500 -1.363986 +v 5.774998 -2.950001 0.000000 +v 5.774998 -2.424999 0.909325 +v 5.774998 -1.375000 0.909325 +v 5.774998 -0.850000 -0.000000 +v 5.774998 -1.375000 -0.909325 +v 5.774998 -2.424999 -0.909325 +v 4.199998 1.250000 0.000000 +v -4.200002 1.250000 0.000000 +v 4.199998 0.200001 0.000000 +v -4.200002 0.200001 0.000000 +v 4.199998 -0.325001 0.000000 +v -4.200002 -3.475000 0.000000 +v 5.249998 0.200001 0.000000 +v 5.249998 -0.325001 0.000000 +v -4.200002 -2.687500 1.363986 +v -4.200002 -1.112499 1.363986 +v -4.200002 -0.325001 0.000000 +v -4.200002 -1.112499 -1.363986 +v -4.200002 -2.687500 -1.363986 +v -5.512502 -2.950001 0.000000 +v -5.512502 -2.424999 0.909325 +v -5.512502 -1.375000 0.909325 +v -5.512502 -0.850000 0.000000 +v -5.512502 -1.375000 -0.909325 +v -5.512502 -2.424999 -0.909325 +v -5.775002 -3.475000 0.000000 +v -5.775002 -2.687500 1.363986 +v -5.775002 -1.112499 1.363986 +v -5.775002 -0.325001 0.000000 +v -5.775002 -1.112499 -1.363986 +v -5.775002 -2.687500 -1.363986 +v -5.775002 -2.950001 0.000000 +v -5.775002 -2.424999 0.909325 +v -5.775002 -1.375000 0.909325 +v -5.775002 -0.850000 0.000000 +v -5.775002 -1.375000 -0.909325 +v -5.775002 -2.424999 -0.909325 +v -5.250002 0.200001 0.000000 +v -5.250002 -0.325001 0.000000 +v -4.200002 -0.325001 0.000000 +v -4.200002 -4.525000 0.000000 +v -4.200003 -6.100000 -4.200000 +v 4.199997 -6.100000 -4.200000 +v -4.200003 -7.150000 -5.250000 +v 4.199997 -7.150000 -5.250000 +v -5.250002 -4.525000 0.000000 +v -5.250003 -6.100000 -4.200000 +v -4.200003 -8.200001 -5.250000 +v 4.199997 -8.200001 -5.250000 +v -4.200003 -9.250000 -4.200000 +v 4.199997 -9.250000 -4.200000 +v -4.200003 -9.250000 4.200000 +v 4.199997 -9.250000 4.200000 +v -4.200003 -8.200001 5.250000 +v 4.199997 -8.200001 5.250000 +v -4.200002 0.200001 5.250000 +v 4.199998 0.200001 5.250000 +v -4.200002 1.250000 4.200000 +v 4.199998 1.250000 4.200000 +v -5.250003 -8.200001 4.200000 +v -5.250003 -8.200001 -4.200000 +v -5.250002 0.200001 4.200000 +v -4.200002 -3.475000 0.000000 +v -5.250002 -3.475000 0.000000 +v 5.249998 -4.525000 0.000000 +v 5.249998 -3.475000 0.000000 +v 4.199998 -4.525000 0.000000 +v 4.199998 -3.475000 0.000000 +v 5.249997 -8.200001 -4.200000 +v 5.249997 -8.200001 4.200000 +v 5.249998 0.200001 4.200000 +v 5.249997 -6.100000 -4.200000 +v 4.199998 0.200001 -4.725000 +v -4.200002 0.200001 -4.725000 +v 4.199997 -6.625000 -4.725000 +v -4.200003 -6.625000 -4.725000 +v 4.199998 0.725000 -4.200000 +v -4.200002 0.725000 -4.200000 +v 4.199998 0.725000 0.000000 +v -4.200002 0.725000 0.000000 +v 4.724998 0.200001 -4.200000 +v 4.724998 0.200001 0.000000 +v 4.724997 -6.100000 -4.200000 +v 4.724997 -4.525000 0.000000 +v -4.725002 0.200001 -4.200000 +v -4.725002 0.200001 0.000000 +v -4.725003 -6.100000 -4.200000 +v -4.725003 -4.525000 0.000000 +v 4.199998 -2.950001 -5.250000 +v -4.200002 -2.950001 -5.250000 +v 4.724997 -2.950001 -4.725000 +v 6.824998 -3.475000 -1.363986 +v 4.724997 -3.475000 -1.363986 +v 6.824998 -0.325001 -1.363986 +v 4.724998 -0.325001 -1.363986 +v 6.824998 -0.325001 -2.413986 +v 6.824998 -3.475000 -2.413986 +v 4.724997 -3.475000 -2.413986 +v 4.724998 -0.325001 -2.413986 +v 3.674997 -11.349998 -1.575000 +v 2.624997 -11.349998 -1.575000 +v 3.674997 -11.349998 -3.675000 +v 2.624997 -11.349998 -3.675000 +v 4.199997 -9.250000 0.525000 +v 2.099997 -9.250000 0.525000 +v 4.199997 -9.250000 -2.625000 +v 2.099997 -9.250000 -2.625000 +v 3.674997 -10.825001 -3.150000 +v 2.624997 -10.825001 -3.150000 +v -2.625003 -11.349998 -1.575000 +v -3.675003 -11.349998 -1.575000 +v -2.625003 -11.349998 -3.675000 +v -3.675003 -11.349998 -3.675000 +v -2.100003 -9.250000 0.525000 +v -4.200003 -9.250000 0.525000 +v -2.100003 -9.250000 -2.625000 +v -4.200003 -9.250000 -2.625000 +v -2.625003 -10.825001 -3.150000 +v -3.675003 -10.825001 -3.150000 +v -4.987503 -9.512501 -4.725000 +v -4.987503 -9.512501 -0.525000 +v -5.358734 -9.358730 -4.725000 +v -5.358734 -9.358730 -0.525000 +v -5.512503 -8.987499 -4.725000 +v -5.512503 -8.987499 -0.525000 +v -5.358734 -8.616268 -4.725000 +v -5.358734 -8.616268 -0.525000 +v -4.987503 -8.462502 -4.725000 +v -4.987503 -8.462502 -0.525000 +v -4.616271 -8.616268 -4.725000 +v -4.616271 -8.616268 -0.525000 +v -4.462502 -8.987499 -4.725000 +v -4.462502 -8.987499 -0.525000 +v -4.616271 -9.358730 -4.725000 +v -4.616271 -9.358730 -0.525000 +vt 0.208333 0.540984 +vt 0.166667 0.491803 +vt 0.208333 0.491803 +vt 0.041667 0.540984 +vt -0.000000 0.491803 +vt 0.041667 0.491803 +vt 0.125000 0.540984 +vt 0.083333 0.491803 +vt 0.125000 0.491803 +vt 0.166667 0.540984 +vt 0.250000 0.540984 +vt 0.250000 0.491803 +vt 0.083333 0.540984 +vt 0.180556 0.573770 +vt 0.208333 0.557377 +vt 0.208333 0.573770 +vt 0.013889 0.573770 +vt 0.041667 0.557377 +vt 0.041667 0.573770 +vt 0.097222 0.573770 +vt 0.125000 0.557377 +vt 0.125000 0.573770 +vt 0.138889 0.573770 +vt 0.166667 0.557377 +vt 0.166667 0.573770 +vt 0.222222 0.573770 +vt 0.250000 0.557377 +vt 0.250000 0.573770 +vt 0.055556 0.573770 +vt 0.083333 0.557377 +vt 0.083333 0.573770 +vt 0.138889 0.557377 +vt 0.013889 0.557377 +vt -0.000000 0.540984 +vt 0.003825 0.590235 +vt 0.027778 0.573912 +vt 0.051730 0.590235 +vt 0.027778 0.032787 +vt 0.250000 0.000000 +vt 0.250000 0.032787 +vt 0.250000 0.491803 +vt 0.208333 0.540984 +vt 0.208333 0.491803 +vt 0.861111 0.196721 +vt 0.888889 0.213115 +vt 0.861111 0.213115 +vt 0.083333 0.491803 +vt 0.041667 0.540984 +vt 0.041667 0.491803 +vt 0.861111 0.163934 +vt 0.888889 0.196721 +vt 0.166667 0.491803 +vt 0.125000 0.540984 +vt 0.125000 0.491803 +vt 0.083333 0.540984 +vt -0.000000 0.540984 +vt -0.000000 0.491803 +vt 0.166667 0.540984 +vt 0.055556 0.557377 +vt 0.083333 0.573770 +vt 0.055556 0.573770 +vt 0.222222 0.557377 +vt 0.250000 0.573770 +vt 0.222222 0.573770 +vt 0.138889 0.557377 +vt 0.166667 0.573770 +vt 0.138889 0.573770 +vt 0.097222 0.557377 +vt 0.125000 0.573770 +vt 0.097222 0.573770 +vt 0.013889 0.557377 +vt 0.041667 0.573770 +vt 0.013889 0.573770 +vt 0.180556 0.557377 +vt 0.208333 0.573770 +vt 0.180556 0.573770 +vt 0.125000 0.557377 +vt 0.250000 0.557377 +vt 0.051730 0.590235 +vt 0.051730 0.622880 +vt 0.027778 0.639203 +vt 0.388889 0.196721 +vt 0.416667 0.213115 +vt 0.388889 0.213115 +vt 0.027778 0.163934 +vt 0.416667 0.196721 +vt 0.416667 0.163934 +vt 0.750000 0.393443 +vt 0.527778 0.426230 +vt 0.527778 0.393443 +vt 0.500000 0.393443 +vt 0.527778 0.262295 +vt 0.750000 0.426230 +vt 0.527778 0.459016 +vt 0.750000 0.459016 +vt 0.527778 0.491803 +vt 0.750000 0.491803 +vt 0.527778 0.754098 +vt 0.027778 0.491803 +vt 0.250000 0.459016 +vt 0.250000 0.491803 +vt 0.027778 0.459016 +vt 0.250000 0.196721 +vt 0.027778 0.196721 +vt 0.250000 0.163934 +vt 0.277778 0.491803 +vt 0.500000 0.459016 +vt 0.500000 0.491803 +vt 0.277778 0.459016 +vt 0.277778 0.196721 +vt 0.277778 0.163934 +vt 0.388889 0.163934 +vt 0.388889 0.344262 +vt 0.416667 0.311475 +vt 0.416667 0.344262 +vt 0.888889 0.344262 +vt 0.861111 0.311475 +vt 0.888889 0.311475 +vt 0.777778 0.491803 +vt 1.000000 0.459016 +vt 1.000000 0.491803 +vt 0.777778 0.459016 +vt -0.000000 0.459016 +vt 0.888889 0.163934 +vt 1.000000 0.196721 +vt 0.000000 0.196721 +vt 0.777778 0.393443 +vt 0.750000 0.262295 +vt 0.777778 0.262295 +vt 0.361111 1.000000 +vt 0.138889 0.885246 +vt 0.361111 0.885246 +vt 0.138889 0.770492 +vt 0.361111 0.786885 +vt 0.138889 0.786885 +vt 0.138889 0.639344 +vt 0.361111 0.770492 +vt 0.500000 0.786885 +vt 0.388889 0.770492 +vt 0.500000 0.770492 +vt 0.375000 0.786885 +vt 0.500000 0.934426 +vt 0.388889 0.983607 +vt 0.375000 0.885246 +vt 0.375000 0.983607 +vt 0.111111 0.786885 +vt -0.000000 0.770492 +vt 0.111111 0.770492 +vt 0.125000 0.786885 +vt 0.125000 0.885246 +vt -0.000000 0.934426 +vt -0.000000 0.786885 +vt 0.861111 0.622951 +vt 0.916667 0.524590 +vt 0.916667 0.622951 +vt 0.125000 0.983607 +vt 0.833333 0.622951 +vt 0.777778 0.524590 +vt 0.833333 0.524590 +vt 0.833333 0.491803 +vt 0.777778 0.491803 +vt 0.777778 0.655738 +vt 0.833333 0.655738 +vt 0.750000 0.524590 +vt 0.777778 0.622951 +vt 0.750000 0.622951 +vt 0.861111 0.524590 +vt 0.805556 0.737705 +vt 0.833333 0.672131 +vt 0.833333 0.737705 +vt 0.750000 0.688525 +vt 0.805556 0.672131 +vt 0.888889 0.688525 +vt 0.888889 0.803279 +vt 0.847222 0.803279 +vt 0.833333 0.655738 +vt 0.791667 0.655738 +vt 0.847222 0.655738 +vt 0.805556 0.737705 +vt 0.833333 0.672131 +vt 0.833333 0.737705 +vt 0.750000 0.688525 +vt 0.805556 0.672131 +vt 0.888889 0.688525 +vt 0.888889 0.803279 +vt 0.791667 0.803279 +vt 0.833333 0.655738 +vt 0.791667 0.655738 +vt 0.847222 0.655738 +vt 0.388889 0.557377 +vt 0.500000 0.540984 +vt 0.500000 0.557377 +vt 0.388889 0.540984 +vt 0.500000 0.524590 +vt 0.388889 0.524590 +vt 0.500000 0.508197 +vt 0.388889 0.508197 +vt 0.500000 0.491803 +vt 0.388889 0.622951 +vt 0.500000 0.606557 +vt 0.500000 0.622951 +vt 0.388889 0.606557 +vt 0.500000 0.590164 +vt 0.361789 0.501738 +vt 0.380472 0.492604 +vt 0.388211 0.514655 +vt 0.388889 0.590164 +vt 0.500000 0.573770 +vt 0.388889 0.573770 +vt 0.501476 0.514266 +vt 0.501476 0.502128 +vt 0.508747 0.493545 +vt 0.180556 0.557377 +vt 0.097222 0.557377 +vt 0.222222 0.557377 +vt 0.055556 0.557377 +vt 0.051730 0.622880 +vt 0.027778 0.639203 +vt 0.003825 0.622880 +vt 0.027778 -0.000000 +vt 0.250000 0.540984 +vt 0.083333 0.557377 +vt 0.166667 0.557377 +vt 0.041667 0.557377 +vt 0.208333 0.557377 +vt 0.003825 0.622880 +vt 0.003825 0.590235 +vt 0.027778 0.573912 +vt 0.500000 0.262295 +vt 0.750000 0.754098 +vt 0.388889 0.311475 +vt 0.861111 0.344262 +vt 1.000000 0.163934 +vt 0.138889 1.000000 +vt 0.361111 0.639344 +vt 0.388889 0.786885 +vt 0.111111 0.983607 +vt 0.750000 0.803279 +vt 0.791667 0.803279 +vt 0.805556 0.655738 +vt 0.750000 0.803279 +vt 0.847222 0.803279 +vt 0.805556 0.655738 +vt 0.388889 0.491803 +vt 0.380472 0.523790 +vt 0.369528 0.523790 +vt 0.361789 0.514656 +vt 0.369528 0.492604 +vt 0.388211 0.501738 +vt 0.519031 0.493545 +vt 0.526302 0.502128 +vt 0.526302 0.514266 +vt 0.519031 0.522848 +vt 0.508747 0.522848 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.8660 0.5000 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 -0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.9363 -0.3511 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.5774 -0.5774 0.5773 +vn -0.5774 -0.5774 -0.5773 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.5774 0.5774 0.5774 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.5774 -0.5774 -0.5773 +vn 0.5774 -0.5774 0.5773 +vn 0.7071 0.7071 0.0000 +vn 0.5774 0.5774 0.5773 +vn 0.7071 -0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 -0.1414 -0.9899 +vn 0.5773 0.5774 -0.5774 +vn 0.7493 -0.0937 -0.6556 +vn -0.5774 0.5774 -0.5774 +vn -0.7022 0.1170 -0.7022 +vn 0.0000 0.1644 -0.9864 +vn 0.7022 0.1170 -0.7022 +vn -0.7022 -0.1170 -0.7022 +vn -0.9701 -0.2425 0.0000 +vn 0.9701 -0.2425 0.0000 +vn 0.8165 0.4082 -0.4082 +vn -0.8165 0.4082 -0.4082 +vn -0.3827 -0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -0.9239 0.3827 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.9239 -0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.7022 -0.1170 -0.7022 +vn -0.7493 -0.0937 -0.6556 +s off +f 624/1061/186 613/1062/186 612/1063/186 +f 622/1064/187 611/1065/187 610/1066/187 +f 620/1067/188 609/1068/188 608/1069/188 +f 625/1070/189 608/1069/189 613/1062/189 +f 623/1071/190 612/1063/190 611/1072/190 +f 621/1073/191 610/1066/191 609/1068/191 +f 619/1074/191 630/1075/191 618/1076/191 +f 617/1077/189 628/1078/189 616/1079/189 +f 615/1080/190 626/1081/190 614/1082/190 +f 614/1083/187 631/1084/187 619/1085/187 +f 618/1086/188 629/1087/188 617/1088/188 +f 616/1089/186 627/1090/186 615/1091/186 +f 625/1070/192 626/1092/192 620/1067/192 +f 626/1081/192 621/1073/192 620/1067/192 +f 627/1090/192 622/1064/192 621/1073/192 +f 622/1064/192 629/1093/192 623/1094/192 +f 629/1087/192 624/1061/192 623/1071/192 +f 630/1075/192 625/1070/192 624/1061/192 +f 618/1095/192 617/1096/192 616/1097/192 +f 632/1098/186 635/1099/186 633/1100/186 +f 642/1101/187 653/1102/187 641/1103/187 +f 634/1104/186 639/1105/186 636/1106/186 +f 644/1107/186 655/1108/186 643/1109/186 +f 634/1104/186 632/1110/186 638/1111/186 +f 640/1112/188 651/1113/188 637/1114/188 +f 637/1114/189 656/1115/189 644/1107/189 +f 643/1109/190 654/1116/190 642/1117/190 +f 641/1103/191 652/1118/191 640/1112/191 +f 661/1119/191 650/1120/191 649/1121/191 +f 659/1122/189 648/1123/189 647/1124/189 +f 657/1125/190 646/1126/190 645/1127/190 +f 662/1128/187 645/1129/187 650/1130/187 +f 660/1131/188 649/1132/188 648/1133/188 +f 658/1134/186 647/1135/186 646/1136/186 +f 656/1115/193 657/1137/193 662/1128/193 +f 652/1118/193 657/1125/193 651/1113/193 +f 653/1102/193 658/1134/193 652/1118/193 +f 653/1102/193 660/1138/193 659/1122/193 +f 655/1108/193 660/1131/193 654/1116/193 +f 656/1115/193 661/1119/193 655/1108/193 +f 649/1139/193 650/1140/193 645/1141/193 +f 663/1142/186 665/1143/186 664/1144/186 +f 633/1100/194 684/1145/194 632/1098/194 +f 635/1146/186 663/1142/186 633/1147/186 +f 668/1148/195 669/1149/195 667/1150/195 +f 672/1151/196 666/1152/196 667/1150/196 +f 667/1150/195 669/1149/195 672/1151/195 +f 670/1153/186 673/1154/186 669/1149/186 +f 674/1155/197 675/1156/197 673/1154/197 +f 676/1157/198 677/1158/198 675/1156/198 +f 678/1159/199 679/1160/199 677/1161/199 +f 680/1162/191 681/1163/191 679/1160/191 +f 682/1164/200 683/1165/200 681/1163/200 +f 677/1166/201 686/1167/201 675/1168/201 +f 677/1166/202 679/1160/202 685/1169/202 +f 673/1154/203 675/1168/203 686/1167/203 +f 669/1149/204 686/1167/204 672/1151/204 +f 685/1169/205 681/1163/205 687/1170/205 +f 681/1163/206 683/1171/206 687/1170/206 +f 687/1170/207 633/1172/207 663/1142/207 +f 671/1173/186 688/1174/186 666/1175/186 +f 671/1173/193 685/1169/193 687/1170/193 +f 690/1176/186 693/1177/186 691/1178/186 +f 676/1179/208 695/1180/208 678/1181/208 +f 676/1179/209 674/1155/209 694/1182/209 +f 678/1159/210 695/1183/210 680/1162/210 +f 632/1184/211 696/1185/211 638/1111/211 +f 684/1145/212 682/1164/212 696/1186/212 +f 680/1162/213 696/1186/213 682/1164/213 +f 670/1153/195 668/1148/195 697/1187/195 +f 670/1153/214 694/1182/214 674/1155/214 +f 697/1187/196 692/1188/196 690/1189/196 +f 695/1180/192 690/1176/192 691/1178/192 +f 700/1190/215 715/1191/215 714/1192/215 +f 703/1193/195 698/1194/195 699/1195/195 +f 705/1196/194 702/1197/194 703/1193/194 +f 707/1198/211 702/1199/211 704/1200/211 +f 702/1197/216 706/1201/216 698/1194/216 +f 709/1202/192 708/1203/192 716/1204/192 +f 714/1192/217 708/1205/217 700/1190/217 +f 710/1206/207 705/1207/207 703/1208/207 +f 703/1193/218 699/1195/218 710/1209/218 +f 606/1210/193 713/1211/193 711/1212/193 +f 699/1195/219 606/1210/219 710/1209/219 +f 714/1192/220 699/1195/220 698/1194/220 +f 717/1213/191 720/1214/191 718/1215/191 +f 716/1204/221 698/1194/221 706/1201/221 +f 715/1191/222 712/1216/222 606/1210/222 +f 722/1217/186 724/1218/186 721/1219/186 +f 719/1220/194 724/1218/194 720/1221/194 +f 718/1222/198 722/1217/198 717/1223/198 +f 720/1224/193 723/1225/193 718/1226/193 +f 717/1213/192 721/1219/192 719/1227/192 +f 726/1228/198 727/1229/198 725/1230/198 +f 726/1228/223 732/1231/223 728/1232/223 +f 725/1230/224 731/1233/224 729/1234/224 +f 729/1235/199 726/1228/199 725/1230/199 +f 728/1232/195 733/1236/195 727/1229/195 +f 728/1232/225 732/1231/225 734/1237/225 +f 727/1229/226 733/1238/226 731/1233/226 +f 736/1239/198 737/1240/198 735/1241/198 +f 736/1239/223 742/1242/223 738/1243/223 +f 735/1241/224 741/1244/224 739/1245/224 +f 735/1241/199 740/1246/199 736/1239/199 +f 738/1243/195 743/1247/195 737/1240/195 +f 738/1243/225 742/1242/225 744/1248/225 +f 737/1240/226 743/1249/226 741/1244/226 +f 746/1250/227 747/1251/227 745/1252/227 +f 748/1253/228 749/1254/228 747/1251/228 +f 750/1255/229 751/1256/229 749/1254/229 +f 752/1257/230 753/1258/230 751/1256/230 +f 754/1259/231 755/1260/231 753/1261/231 +f 756/1262/232 757/1263/232 755/1260/232 +f 758/1264/191 754/1265/191 750/1266/191 +f 758/1267/233 759/1268/233 757/1263/233 +f 760/1269/234 745/1252/234 759/1268/234 +f 755/1270/186 757/1271/186 759/1272/186 +f 624/1061/186 625/1070/186 613/1062/186 +f 622/1064/187 623/1094/187 611/1065/187 +f 620/1067/188 621/1073/188 609/1068/188 +f 625/1070/189 620/1067/189 608/1069/189 +f 623/1071/190 624/1061/190 612/1063/190 +f 621/1073/191 622/1064/191 610/1066/191 +f 619/1074/191 631/1273/191 630/1075/191 +f 617/1077/189 629/1093/189 628/1078/189 +f 615/1080/190 627/1274/190 626/1081/190 +f 614/1083/187 626/1092/187 631/1084/187 +f 618/1086/188 630/1275/188 629/1087/188 +f 616/1089/186 628/1276/186 627/1090/186 +f 625/1070/192 631/1084/192 626/1092/192 +f 626/1081/192 627/1274/192 621/1073/192 +f 627/1090/192 628/1276/192 622/1064/192 +f 622/1064/192 628/1078/192 629/1093/192 +f 629/1087/192 630/1275/192 624/1061/192 +f 630/1075/192 631/1273/192 625/1070/192 +f 616/1097/192 615/1277/192 618/1095/192 +f 615/1277/192 614/1278/192 618/1095/192 +f 614/1278/192 619/1279/192 618/1095/192 +f 632/1098/186 634/1280/186 635/1099/186 +f 642/1101/187 654/1281/187 653/1102/187 +f 634/1104/186 638/1111/186 639/1105/186 +f 644/1107/186 656/1115/186 655/1108/186 +f 640/1112/188 652/1118/188 651/1113/188 +f 637/1114/189 651/1113/189 656/1115/189 +f 643/1109/190 655/1108/190 654/1116/190 +f 641/1103/191 653/1102/191 652/1118/191 +f 661/1119/191 662/1282/191 650/1120/191 +f 659/1122/189 660/1138/189 648/1123/189 +f 657/1125/190 658/1283/190 646/1126/190 +f 662/1128/187 657/1137/187 645/1129/187 +f 660/1131/188 661/1284/188 649/1132/188 +f 658/1134/186 659/1285/186 647/1135/186 +f 656/1115/193 651/1113/193 657/1137/193 +f 652/1118/193 658/1283/193 657/1125/193 +f 653/1102/193 659/1285/193 658/1134/193 +f 653/1102/193 654/1281/193 660/1138/193 +f 655/1108/193 661/1284/193 660/1131/193 +f 656/1115/193 662/1282/193 661/1119/193 +f 645/1141/193 646/1286/193 649/1139/193 +f 646/1286/193 647/1287/193 649/1139/193 +f 647/1287/193 648/1288/193 649/1139/193 +f 663/1142/186 635/1146/186 665/1143/186 +f 633/1100/194 683/1165/194 684/1145/194 +f 668/1148/195 670/1153/195 669/1149/195 +f 672/1151/196 671/1289/196 666/1152/196 +f 670/1153/186 674/1155/186 673/1154/186 +f 674/1155/197 676/1157/197 675/1156/197 +f 676/1157/198 678/1290/198 677/1158/198 +f 678/1159/199 680/1162/199 679/1160/199 +f 680/1162/191 682/1164/191 681/1163/191 +f 682/1164/200 684/1145/200 683/1165/200 +f 677/1166/201 685/1169/201 686/1167/201 +f 669/1149/204 673/1154/204 686/1167/204 +f 685/1169/205 679/1160/205 681/1163/205 +f 687/1170/207 683/1171/207 633/1172/207 +f 671/1173/186 689/1291/186 688/1174/186 +f 687/1170/193 663/1142/193 664/1144/193 +f 687/1170/193 664/1144/193 689/1291/193 +f 672/1151/193 686/1167/193 671/1173/193 +f 686/1167/193 685/1169/193 671/1173/193 +f 687/1170/193 689/1291/193 671/1173/193 +f 690/1176/186 692/1292/186 693/1177/186 +f 676/1179/208 694/1182/208 695/1180/208 +f 632/1184/211 684/1293/211 696/1185/211 +f 680/1162/213 695/1183/213 696/1186/213 +f 670/1153/214 697/1187/214 694/1182/214 +f 697/1187/196 668/1148/196 692/1188/196 +f 691/1178/192 639/1105/192 696/1185/192 +f 639/1105/192 638/1111/192 696/1185/192 +f 691/1178/192 696/1185/192 695/1180/192 +f 695/1180/192 694/1182/192 690/1176/192 +f 694/1182/192 697/1187/192 690/1176/192 +f 700/1190/215 701/1294/215 715/1191/215 +f 703/1193/195 702/1197/195 698/1194/195 +f 705/1196/194 704/1295/194 702/1197/194 +f 707/1198/211 706/1296/211 702/1199/211 +f 706/1296/192 707/1198/192 716/1204/192 +f 707/1198/192 709/1202/192 716/1204/192 +f 714/1192/235 716/1204/235 708/1205/235 +f 710/1206/207 711/1212/207 705/1207/207 +f 711/1212/193 710/1206/193 606/1210/193 +f 606/1210/193 712/1297/193 713/1211/193 +f 699/1195/219 715/1191/219 606/1210/219 +f 714/1192/220 715/1191/220 699/1195/220 +f 717/1213/191 719/1227/191 720/1214/191 +f 716/1204/221 714/1192/221 698/1194/221 +f 715/1191/236 701/1294/236 712/1216/236 +f 722/1217/186 723/1225/186 724/1218/186 +f 719/1220/194 721/1219/194 724/1218/194 +f 718/1222/198 723/1225/198 722/1217/198 +f 720/1224/193 724/1218/193 723/1225/193 +f 717/1213/192 722/1217/192 721/1219/192 +f 726/1228/198 728/1232/198 727/1229/198 +f 726/1228/223 730/1298/223 732/1231/223 +f 725/1230/224 727/1229/224 731/1233/224 +f 729/1235/199 730/1299/199 726/1228/199 +f 728/1232/195 734/1300/195 733/1236/195 +f 736/1239/198 738/1243/198 737/1240/198 +f 736/1239/223 740/1301/223 742/1242/223 +f 735/1241/224 737/1240/224 741/1244/224 +f 735/1241/199 739/1302/199 740/1246/199 +f 738/1243/195 744/1303/195 743/1247/195 +f 746/1250/227 748/1253/227 747/1251/227 +f 748/1253/228 750/1255/228 749/1254/228 +f 750/1255/229 752/1257/229 751/1256/229 +f 752/1257/230 754/1304/230 753/1258/230 +f 754/1259/231 756/1262/231 755/1260/231 +f 756/1262/232 758/1267/232 757/1263/232 +f 750/1266/191 748/1305/191 746/1306/191 +f 746/1306/191 760/1307/191 750/1266/191 +f 760/1307/191 758/1264/191 750/1266/191 +f 758/1264/191 756/1308/191 754/1265/191 +f 754/1265/191 752/1309/191 750/1266/191 +f 758/1267/233 760/1269/233 759/1268/233 +f 760/1269/234 746/1250/234 745/1252/234 +f 759/1272/186 745/1310/186 747/1311/186 +f 747/1311/186 749/1312/186 759/1272/186 +f 749/1312/186 751/1313/186 759/1272/186 +f 751/1313/186 753/1314/186 759/1272/186 +f 753/1314/186 755/1270/186 759/1272/186 diff --git a/src/main/resources/assets/hbm/models/armor/steamsuit.obj b/src/main/resources/assets/hbm/models/armor/steamsuit.obj index 099bfddd6..c36978b0e 100644 --- a/src/main/resources/assets/hbm/models/armor/steamsuit.obj +++ b/src/main/resources/assets/hbm/models/armor/steamsuit.obj @@ -1,5 +1,231 @@ # Blender v2.79 (sub 0) OBJ File: 'steamsuit.blend' # www.blender.org +o RightBoot +v -5.000000 24.500002 3.000000 +v -5.000000 24.500002 -3.000000 +v 1.000000 24.500000 3.000000 +v 1.000000 24.500000 -3.000000 +v -4.000000 24.500002 -4.000000 +v 0.000000 24.500000 -4.000000 +v -0.000001 21.500000 -4.000000 +v -4.000001 21.500002 -4.000000 +v -4.500001 20.500002 2.000000 +v -4.500001 20.500002 -2.000000 +v -5.000001 20.500002 -2.000000 +v -5.000001 20.500002 2.000000 +v -5.000001 20.500002 3.000000 +v -5.000001 20.500002 -3.000000 +v -4.000001 20.500002 3.000000 +v -4.000001 20.500002 -3.000000 +v -4.000001 20.500002 2.500000 +v -4.000001 20.500002 -2.500000 +v -0.000001 20.500000 2.500000 +v -0.000001 20.500000 -2.500000 +v 0.999999 20.500000 -2.000000 +v 0.999999 20.500000 2.000000 +v 0.999999 20.500000 3.000000 +v 0.999999 20.500000 -3.000000 +v 0.499999 20.500000 -2.000000 +v 0.499999 20.500000 2.000000 +v -0.000001 20.500000 3.000000 +v -0.000001 20.500000 -3.000000 +vt -0.000000 0.425926 +vt 0.142857 0.407407 +vt -0.000000 0.407407 +vt 0.250000 0.425926 +vt 0.392857 0.407407 +vt 0.250000 0.407407 +vt 0.500000 0.425926 +vt 0.642857 0.407407 +vt 0.500000 0.407407 +vt 0.750000 0.407407 +vt 0.892857 0.425926 +vt 0.892857 0.407407 +vt 0.642857 0.259259 +vt 0.678571 0.407407 +vt 0.821429 0.407407 +vt 0.428571 0.259259 +vt 0.464286 0.407407 +vt 0.607143 0.407407 +vt 0.178571 0.407407 +vt 0.214286 0.407407 +vt 0.214286 0.259259 +vt 0.250000 0.370370 +vt 0.392857 0.259259 +vt 0.250000 0.259259 +vt 0.392857 0.370370 +vt 0.214286 0.222222 +vt 0.142857 0.425926 +vt 0.392857 0.425926 +vt 0.642857 0.425926 +vt 0.750000 0.425926 +vt 0.857143 0.407407 +vt 0.857143 0.259259 +vt 0.642857 0.407407 +vt 0.428571 0.407407 +vt 0.000000 0.259259 +vt 0.035714 0.407407 +vt -0.000000 0.407407 +vt 0.428571 0.222222 +vt 0.428571 0.000000 +vt 0.214286 -0.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 -0.7071 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 1.0000 0.0000 +s off +f 26/1/1 21/2/1 22/3/1 +f 20/4/1 16/5/1 28/6/1 +f 10/7/1 12/8/1 11/9/1 +f 15/10/1 19/11/1 27/12/1 +f 1/13/2 15/14/2 27/15/2 +f 2/16/3 11/17/3 12/18/3 +f 21/19/4 24/20/4 4/21/4 +f 7/22/5 5/23/5 6/24/5 +f 7/22/6 28/6/6 16/5/6 +f 4/21/7 7/22/7 6/24/7 +f 8/25/8 2/16/8 5/23/8 +f 4/26/9 6/24/9 5/23/9 +f 26/1/1 25/27/1 21/2/1 +f 20/4/1 18/28/1 16/5/1 +f 10/7/1 9/29/1 12/8/1 +f 15/10/1 17/30/1 19/11/1 +f 23/31/2 3/32/2 27/15/2 +f 3/32/2 1/13/2 27/15/2 +f 1/13/2 13/33/2 15/14/2 +f 13/33/3 1/13/3 12/18/3 +f 1/13/3 2/16/3 12/18/3 +f 2/16/3 14/34/3 11/17/3 +f 4/21/4 3/35/4 22/36/4 +f 3/35/4 23/37/4 22/36/4 +f 22/36/4 21/19/4 4/21/4 +f 7/22/5 8/25/5 5/23/5 +f 14/34/6 8/25/6 16/5/6 +f 8/25/6 7/22/6 16/5/6 +f 7/22/6 24/20/6 28/6/6 +f 4/21/7 24/20/7 7/22/7 +f 8/25/8 14/34/8 2/16/8 +f 5/23/9 2/38/9 4/26/9 +f 2/38/9 1/39/9 4/26/9 +f 1/39/9 3/40/9 4/26/9 +o LeftBoot +v 5.000000 24.499998 3.000000 +v 5.000000 24.499998 -3.000000 +v -1.000000 24.500000 3.000000 +v -1.000000 24.500000 -3.000000 +v 4.000000 24.499998 -4.000000 +v 0.000000 24.500000 -4.000000 +v -0.000001 21.500000 -4.000000 +v 3.999999 21.499998 -4.000000 +v 4.499999 20.499998 2.000000 +v 4.499999 20.499998 -2.000000 +v 4.999999 20.499998 -2.000000 +v 4.999999 20.499998 2.000000 +v 4.999999 20.499998 3.000000 +v 4.999999 20.499998 -3.000000 +v 3.999999 20.499998 3.000000 +v 3.999999 20.499998 -3.000000 +v 3.999999 20.499998 2.500000 +v 3.999999 20.499998 -2.500000 +v -0.000001 20.500000 2.500000 +v -0.000001 20.500000 -2.500000 +v -1.000001 20.500000 -2.000000 +v -1.000001 20.500000 2.000000 +v -1.000001 20.500000 3.000000 +v -1.000001 20.500000 -3.000000 +v -0.500001 20.500000 -2.000000 +v -0.500001 20.500000 2.000000 +v -0.000001 20.500000 3.000000 +v -0.000001 20.500000 -3.000000 +vt 0.142857 0.407407 +vt -0.000000 0.425926 +vt -0.000000 0.407407 +vt 0.392857 0.407407 +vt 0.250000 0.425926 +vt 0.250000 0.407407 +vt 0.642857 0.407407 +vt 0.500000 0.425926 +vt 0.500000 0.407407 +vt 0.892857 0.425926 +vt 0.750000 0.407407 +vt 0.892857 0.407407 +vt 0.678571 0.407407 +vt 0.642857 0.407407 +vt 0.642857 0.259259 +vt 0.464286 0.407407 +vt 0.428571 0.407407 +vt 0.428571 0.259259 +vt 0.214286 0.259259 +vt 0.178571 0.407407 +vt 0.035714 0.407407 +vt 0.392857 0.259259 +vt 0.250000 0.370370 +vt 0.250000 0.259259 +vt 0.214286 0.407407 +vt 0.392857 0.370370 +vt 0.214286 0.222222 +vt 0.214286 -0.000000 +vt 0.428571 0.000000 +vt 0.142857 0.425926 +vt 0.392857 0.425926 +vt 0.642857 0.425926 +vt 0.750000 0.425926 +vt 0.857143 0.259259 +vt 0.821429 0.407407 +vt 0.857143 0.407407 +vt 0.607143 0.407407 +vt -0.000000 0.407407 +vt 0.000000 0.259259 +vt 0.428571 0.222222 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 -0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn 0.0000 1.0000 0.0000 +s off +f 49/41/10 54/42/10 50/43/10 +f 44/44/10 48/45/10 56/46/10 +f 40/47/10 38/48/10 39/49/10 +f 47/50/10 43/51/10 55/52/10 +f 43/53/11 41/54/11 29/55/11 +f 39/56/12 42/57/12 30/58/12 +f 32/59/13 49/60/13 50/61/13 +f 33/62/14 35/63/14 34/64/14 +f 56/46/15 52/65/15 35/63/15 +f 35/63/16 32/59/16 34/64/16 +f 30/58/17 36/66/17 33/62/17 +f 32/67/18 31/68/18 29/69/18 +f 49/41/10 53/70/10 54/42/10 +f 44/44/10 46/71/10 48/45/10 +f 40/47/10 37/72/10 38/48/10 +f 47/50/10 45/73/10 43/51/10 +f 29/55/11 31/74/11 55/75/11 +f 31/74/11 51/76/11 55/75/11 +f 55/75/11 43/53/11 29/55/11 +f 30/58/12 29/55/12 40/77/12 +f 29/55/12 41/54/12 40/77/12 +f 40/77/12 39/56/12 30/58/12 +f 51/78/13 31/79/13 50/61/13 +f 31/79/13 32/59/13 50/61/13 +f 32/59/13 52/65/13 49/60/13 +f 33/62/14 36/66/14 35/63/14 +f 35/63/15 36/66/15 44/44/15 +f 36/66/15 42/57/15 44/44/15 +f 44/44/15 56/46/15 35/63/15 +f 35/63/16 52/65/16 32/59/16 +f 30/58/17 42/57/17 36/66/17 +f 29/69/18 30/80/18 32/67/18 +f 30/80/18 33/62/18 32/67/18 +f 33/62/18 34/64/18 32/67/18 o RightArm v -4.000008 0.000002 -2.500000 v -4.000004 12.000001 -2.500000 @@ -833,451 +1059,443 @@ vn 0.0000 0.7071 -0.7071 vn 0.7071 0.7071 0.0000 vn -0.2425 0.9701 0.0000 s off -f 3/1/1 28/2/1 23/3/1 -f 17/4/2 19/5/2 42/6/2 -f 12/7/3 9/8/3 10/9/3 -f 14/10/4 15/11/4 13/12/4 -f 20/13/5 17/14/5 18/15/5 -f 22/16/4 19/17/4 20/13/4 -f 14/10/3 22/16/3 16/18/3 -f 18/15/6 1/19/6 2/20/6 -f 35/21/7 44/22/7 4/23/7 -f 25/24/6 5/25/6 7/26/6 -f 35/21/1 26/27/1 44/22/1 -f 27/28/1 1/19/1 17/4/1 -f 32/29/4 11/30/4 12/7/4 -f 29/31/6 10/9/6 9/8/6 -f 34/32/3 31/33/3 32/29/3 -f 36/34/6 33/35/6 34/32/6 -f 5/25/5 36/34/5 7/26/5 -f 38/36/5 13/37/5 15/38/5 -f 40/39/4 37/40/4 38/36/4 -f 29/31/3 40/39/3 30/41/3 -f 42/6/8 43/42/8 4/23/8 -f 27/43/5 23/3/5 28/2/5 -f 23/3/6 44/44/6 49/45/6 -f 11/46/1 29/47/1 9/48/1 -f 37/49/1 14/50/1 13/51/1 -f 37/49/9 41/52/9 42/6/9 -f 27/43/4 6/53/4 8/54/4 -f 49/45/3 26/55/3 25/24/3 -f 29/47/10 31/56/10 43/42/10 -f 54/57/4 45/58/4 46/59/4 -f 50/60/1 22/16/1 20/13/1 -f 18/15/1 50/61/1 20/13/1 -f 8/54/5 2/20/5 1/19/5 -f 3/62/1 49/45/1 25/63/1 -f 51/64/1 36/34/1 34/32/1 -f 32/29/1 51/65/1 34/32/1 -f 52/66/1 38/36/1 15/67/1 -f 30/41/1 52/68/1 10/69/1 -f 47/70/11 51/71/11 12/7/11 -f 47/72/12 48/73/12 25/24/12 -f 46/74/13 50/75/13 2/20/13 -f 45/58/14 52/76/14 15/11/14 -f 47/72/15 54/77/15 48/73/15 -f 46/74/5 48/78/5 54/79/5 -f 45/80/3 53/81/3 47/70/3 -f 59/82/5 61/83/5 60/84/5 -f 62/85/1 57/86/1 58/87/1 -f 60/84/8 56/88/8 55/89/8 -f 61/83/4 58/90/4 56/91/4 -f 59/82/6 55/92/6 57/93/6 -f 66/94/6 70/95/6 68/96/6 -f 64/97/4 67/98/4 69/99/4 -f 65/100/8 69/101/8 70/102/8 -f 63/103/1 68/104/1 67/105/1 -f 66/94/5 64/97/5 65/100/5 -f 74/106/6 78/107/6 76/108/6 -f 72/109/4 75/110/4 77/111/4 -f 73/112/8 77/113/8 78/114/8 -f 71/115/1 76/116/1 75/117/1 -f 74/106/5 72/109/5 73/112/5 -f 83/118/5 85/119/5 84/120/5 -f 86/121/1 81/122/1 82/123/1 -f 84/120/8 80/124/8 79/125/8 -f 85/119/4 82/126/4 80/127/4 -f 83/118/6 79/128/6 81/129/6 -f 90/130/6 94/131/6 92/132/6 -f 88/133/4 91/134/4 93/135/4 -f 89/136/8 93/137/8 94/138/8 -f 87/139/1 92/140/1 91/141/1 -f 90/130/5 88/133/5 89/136/5 -f 99/142/5 101/143/5 100/144/5 -f 102/145/1 97/146/1 98/147/1 -f 100/144/8 96/148/8 95/149/8 -f 101/143/4 98/150/4 96/151/4 -f 99/142/6 95/152/6 97/153/6 -f 107/154/5 109/155/5 108/156/5 -f 110/157/1 105/158/1 106/159/1 -f 108/156/8 104/160/8 103/161/8 -f 109/155/4 106/162/4 104/163/4 -f 107/154/6 103/164/6 105/165/6 -f 115/166/5 117/167/5 116/168/5 -f 118/169/1 113/170/1 114/171/1 -f 116/168/8 112/172/8 111/173/8 -f 117/167/4 114/174/4 112/175/4 -f 115/166/6 111/176/6 113/177/6 -f 122/178/6 126/179/6 124/180/6 -f 120/181/4 123/182/4 125/183/4 -f 121/184/8 125/185/8 126/186/8 -f 119/187/1 124/188/1 123/189/1 -f 122/178/5 120/181/5 121/184/5 -f 130/190/6 134/191/6 132/192/6 -f 128/193/4 131/194/4 133/195/4 -f 129/196/8 133/197/8 134/198/8 -f 127/199/1 132/200/1 131/201/1 -f 130/190/5 128/193/5 129/196/5 -f 138/202/6 142/203/6 140/204/6 -f 136/205/4 139/206/4 141/207/4 -f 137/208/8 141/209/8 142/210/8 -f 135/211/1 140/212/1 139/213/1 -f 138/202/5 136/205/5 137/208/5 -f 147/214/5 149/215/5 148/216/5 -f 150/217/1 145/218/1 146/219/1 -f 148/216/8 144/220/8 143/221/8 -f 149/215/4 146/222/4 144/223/4 -f 147/214/6 143/224/6 145/225/6 -f 155/226/3 157/227/3 156/228/3 -f 158/229/1 153/230/1 154/231/1 -f 156/228/8 152/232/8 151/233/8 -f 157/227/6 154/234/6 152/235/6 -f 155/226/4 151/236/4 153/237/4 -f 162/238/4 166/239/4 164/240/4 -f 160/241/6 163/242/6 165/243/6 -f 161/244/8 165/245/8 166/246/8 -f 159/247/1 164/248/1 163/249/1 -f 162/238/3 160/241/3 161/244/3 -f 170/250/4 174/251/4 172/252/4 -f 168/253/6 171/254/6 173/255/6 -f 169/256/8 173/257/8 174/258/8 -f 167/259/1 172/260/1 171/261/1 -f 170/250/3 168/253/3 169/256/3 -f 179/262/3 181/263/3 180/264/3 -f 182/265/1 177/266/1 178/267/1 -f 180/264/8 176/268/8 175/269/8 -f 181/263/6 178/270/6 176/271/6 -f 179/262/4 175/272/4 177/273/4 -f 187/274/3 189/275/3 188/276/3 -f 190/277/1 185/278/1 186/279/1 -f 188/276/8 184/280/8 183/281/8 -f 189/275/6 186/282/6 184/283/6 -f 187/274/4 183/284/4 185/285/4 -f 194/286/4 198/287/4 196/288/4 -f 192/289/6 195/290/6 197/291/6 -f 193/292/8 197/293/8 198/294/8 -f 191/295/1 196/296/1 195/297/1 -f 194/286/3 192/289/3 193/292/3 -f 202/298/4 206/299/4 204/300/4 -f 200/301/6 203/302/6 205/303/6 -f 201/304/8 205/305/8 206/306/8 -f 199/307/1 204/308/1 203/309/1 -f 202/298/3 200/301/3 201/304/3 -f 211/310/3 213/311/3 212/312/3 -f 214/313/1 209/314/1 210/315/1 -f 212/312/8 208/316/8 207/317/8 -f 213/311/6 210/318/6 208/319/6 -f 211/310/4 207/320/4 209/321/4 -f 218/322/3 222/323/3 220/324/3 -f 216/325/5 219/326/5 221/327/5 -f 217/328/8 221/329/8 222/330/8 -f 215/331/1 220/332/1 219/333/1 -f 218/322/6 216/325/6 217/328/6 -f 227/334/6 229/335/6 228/336/6 -f 230/337/1 225/338/1 226/339/1 -f 228/336/8 224/340/8 223/341/8 -f 229/335/5 226/342/5 224/343/5 -f 227/334/3 223/344/3 225/345/3 -f 235/346/6 237/347/6 236/348/6 -f 238/349/1 233/350/1 234/351/1 -f 236/348/8 232/352/8 231/353/8 -f 237/347/5 234/354/5 232/355/5 -f 235/346/3 231/356/3 233/357/3 -f 243/358/6 245/359/6 244/360/6 -f 246/361/1 241/362/1 242/363/1 -f 244/360/8 240/364/8 239/365/8 -f 245/359/5 242/366/5 240/367/5 -f 243/358/3 239/368/3 241/369/3 -f 250/370/3 254/371/3 252/372/3 -f 248/373/5 251/374/5 253/375/5 -f 249/376/8 253/377/8 254/378/8 -f 247/379/1 252/380/1 251/381/1 -f 250/370/6 248/373/6 249/376/6 -f 258/382/3 262/383/3 260/384/3 -f 256/385/5 259/386/5 261/387/5 -f 257/388/8 261/389/8 262/390/8 -f 255/391/1 260/392/1 259/393/1 -f 258/382/6 256/385/6 257/388/6 -f 270/394/3 274/395/3 272/396/3 -f 268/397/5 271/398/5 273/399/5 -f 269/400/8 273/401/8 274/402/8 -f 267/403/1 272/404/1 271/405/1 -f 270/394/6 268/397/6 269/400/6 -f 279/406/6 281/407/6 280/408/6 -f 282/409/1 277/410/1 278/411/1 -f 280/408/8 276/412/8 275/413/8 -f 281/407/5 278/414/5 276/415/5 -f 279/406/3 275/416/3 277/417/3 -f 286/418/3 290/419/3 288/420/3 -f 284/421/5 287/422/5 289/423/5 -f 285/424/8 289/425/8 290/426/8 -f 283/427/1 288/428/1 287/429/1 -f 286/418/6 284/421/6 285/424/6 -f 295/430/6 297/431/6 296/432/6 -f 298/433/1 293/434/1 294/435/1 -f 296/432/8 292/436/8 291/437/8 -f 297/431/5 294/438/5 292/439/5 -f 295/430/3 291/440/3 293/441/3 -f 265/442/8 302/443/8 266/444/8 -f 265/445/6 264/446/6 263/447/6 -f 300/448/4 301/449/4 299/450/4 -f 299/451/1 264/446/1 300/448/1 -f 300/448/3 266/444/3 302/443/3 -f 307/452/6 309/453/6 308/454/6 -f 310/455/1 305/456/1 306/457/1 -f 308/454/8 304/458/8 303/459/8 -f 309/453/5 306/460/5 304/461/5 -f 307/452/3 303/462/3 305/463/3 -f 314/464/3 318/465/3 316/466/3 -f 312/467/5 315/468/5 317/469/5 -f 313/470/8 317/471/8 318/472/8 -f 311/473/1 316/474/1 315/475/1 -f 314/464/6 312/467/6 313/470/6 -f 3/1/1 6/476/1 28/2/1 -f 42/6/2 4/23/2 27/28/2 -f 4/23/2 24/477/2 27/28/2 -f 27/28/2 17/4/2 42/6/2 -f 12/7/3 11/30/3 9/8/3 -f 14/10/4 16/18/4 15/11/4 -f 20/13/5 19/17/5 17/14/5 -f 22/16/4 21/478/4 19/17/4 -f 14/10/3 21/478/3 22/16/3 -f 18/15/6 17/14/6 1/19/6 -f 44/22/7 24/477/7 4/23/7 -f 4/23/7 43/42/7 35/21/7 -f 43/42/7 33/479/7 35/21/7 -f 25/24/6 26/55/6 5/25/6 -f 35/21/1 5/480/1 26/27/1 -f 27/28/1 8/54/1 1/19/1 -f 32/29/4 31/33/4 11/30/4 -f 29/31/6 30/41/6 10/9/6 -f 34/32/3 33/35/3 31/33/3 -f 36/34/6 35/481/6 33/35/6 -f 5/25/5 35/481/5 36/34/5 -f 38/36/5 37/40/5 13/37/5 -f 40/39/4 39/482/4 37/40/4 -f 29/31/3 39/482/3 40/39/3 -f 42/6/8 41/52/8 43/42/8 -f 27/43/5 24/483/5 23/3/5 -f 23/3/6 24/483/6 44/44/6 -f 11/46/1 31/56/1 29/47/1 -f 37/49/1 21/484/1 14/50/1 -f 42/6/9 19/5/9 21/484/9 -f 37/49/9 39/485/9 41/52/9 -f 42/6/9 21/484/9 37/49/9 -f 27/43/4 28/2/4 6/53/4 -f 49/45/3 44/44/3 26/55/3 -f 31/56/10 33/479/10 43/42/10 -f 43/42/10 41/52/10 29/47/10 -f 41/52/10 39/485/10 29/47/10 -f 54/57/4 53/486/4 45/58/4 -f 50/60/1 16/487/1 22/16/1 -f 18/15/1 2/488/1 50/61/1 -f 8/54/5 6/53/5 2/20/5 -f 3/62/1 23/3/1 49/45/1 -f 51/64/1 7/489/1 36/34/1 -f 32/29/1 12/490/1 51/65/1 -f 52/66/1 40/39/1 38/36/1 -f 30/41/1 40/39/1 52/68/1 -f 12/7/11 10/9/11 47/70/11 -f 10/9/11 52/491/11 45/80/11 -f 47/70/11 10/9/11 45/80/11 -f 3/492/12 25/24/12 48/73/12 -f 25/24/12 7/26/12 47/72/12 -f 7/26/12 51/493/12 47/72/12 -f 2/20/13 6/53/13 46/74/13 -f 6/53/13 3/494/13 48/78/13 -f 46/74/13 6/53/13 48/78/13 -f 15/11/14 16/18/14 45/58/14 -f 16/18/14 50/495/14 46/59/14 -f 45/58/14 16/18/14 46/59/14 -f 47/72/15 53/496/15 54/77/15 -f 59/82/5 62/85/5 61/83/5 -f 62/85/1 59/82/1 57/86/1 -f 60/84/8 61/83/8 56/88/8 -f 61/83/4 62/85/4 58/90/4 -f 59/82/6 60/84/6 55/92/6 -f 66/94/6 65/100/6 70/95/6 -f 64/97/4 63/103/4 67/98/4 -f 65/100/8 64/97/8 69/101/8 -f 63/103/1 66/94/1 68/104/1 -f 66/94/5 63/103/5 64/97/5 -f 74/106/6 73/112/6 78/107/6 -f 72/109/4 71/115/4 75/110/4 -f 73/112/8 72/109/8 77/113/8 -f 71/115/1 74/106/1 76/116/1 -f 74/106/5 71/115/5 72/109/5 -f 83/118/5 86/121/5 85/119/5 -f 86/121/1 83/118/1 81/122/1 -f 84/120/8 85/119/8 80/124/8 -f 85/119/4 86/121/4 82/126/4 -f 83/118/6 84/120/6 79/128/6 -f 90/130/6 89/136/6 94/131/6 -f 88/133/4 87/139/4 91/134/4 -f 89/136/8 88/133/8 93/137/8 -f 87/139/1 90/130/1 92/140/1 -f 90/130/5 87/139/5 88/133/5 -f 99/142/5 102/145/5 101/143/5 -f 102/145/1 99/142/1 97/146/1 -f 100/144/8 101/143/8 96/148/8 -f 101/143/4 102/145/4 98/150/4 -f 99/142/6 100/144/6 95/152/6 -f 107/154/5 110/157/5 109/155/5 -f 110/157/1 107/154/1 105/158/1 -f 108/156/8 109/155/8 104/160/8 -f 109/155/4 110/157/4 106/162/4 -f 107/154/6 108/156/6 103/164/6 -f 115/166/5 118/169/5 117/167/5 -f 118/169/1 115/166/1 113/170/1 -f 116/168/8 117/167/8 112/172/8 -f 117/167/4 118/169/4 114/174/4 -f 115/166/6 116/168/6 111/176/6 -f 122/178/6 121/184/6 126/179/6 -f 120/181/4 119/187/4 123/182/4 -f 121/184/8 120/181/8 125/185/8 -f 119/187/1 122/178/1 124/188/1 -f 122/178/5 119/187/5 120/181/5 -f 130/190/6 129/196/6 134/191/6 -f 128/193/4 127/199/4 131/194/4 -f 129/196/8 128/193/8 133/197/8 -f 127/199/1 130/190/1 132/200/1 -f 130/190/5 127/199/5 128/193/5 -f 138/202/6 137/208/6 142/203/6 -f 136/205/4 135/211/4 139/206/4 -f 137/208/8 136/205/8 141/209/8 -f 135/211/1 138/202/1 140/212/1 -f 138/202/5 135/211/5 136/205/5 -f 147/214/5 150/217/5 149/215/5 -f 150/217/1 147/214/1 145/218/1 -f 148/216/8 149/215/8 144/220/8 -f 149/215/4 150/217/4 146/222/4 -f 147/214/6 148/216/6 143/224/6 -f 155/226/3 158/229/3 157/227/3 -f 158/229/1 155/226/1 153/230/1 -f 156/228/8 157/227/8 152/232/8 -f 157/227/6 158/229/6 154/234/6 -f 155/226/4 156/228/4 151/236/4 -f 162/238/4 161/244/4 166/239/4 -f 160/241/6 159/247/6 163/242/6 -f 161/244/8 160/241/8 165/245/8 -f 159/247/1 162/238/1 164/248/1 -f 162/238/3 159/247/3 160/241/3 -f 170/250/4 169/256/4 174/251/4 -f 168/253/6 167/259/6 171/254/6 -f 169/256/8 168/253/8 173/257/8 -f 167/259/1 170/250/1 172/260/1 -f 170/250/3 167/259/3 168/253/3 -f 179/262/3 182/265/3 181/263/3 -f 182/265/1 179/262/1 177/266/1 -f 180/264/8 181/263/8 176/268/8 -f 181/263/6 182/265/6 178/270/6 -f 179/262/4 180/264/4 175/272/4 -f 187/274/3 190/277/3 189/275/3 -f 190/277/1 187/274/1 185/278/1 -f 188/276/8 189/275/8 184/280/8 -f 189/275/6 190/277/6 186/282/6 -f 187/274/4 188/276/4 183/284/4 -f 194/286/4 193/292/4 198/287/4 -f 192/289/6 191/295/6 195/290/6 -f 193/292/8 192/289/8 197/293/8 -f 191/295/1 194/286/1 196/296/1 -f 194/286/3 191/295/3 192/289/3 -f 202/298/4 201/304/4 206/299/4 -f 200/301/6 199/307/6 203/302/6 -f 201/304/8 200/301/8 205/305/8 -f 199/307/1 202/298/1 204/308/1 -f 202/298/3 199/307/3 200/301/3 -f 211/310/3 214/313/3 213/311/3 -f 214/313/1 211/310/1 209/314/1 -f 212/312/8 213/311/8 208/316/8 -f 213/311/6 214/313/6 210/318/6 -f 211/310/4 212/312/4 207/320/4 -f 218/322/3 217/328/3 222/323/3 -f 216/325/5 215/331/5 219/326/5 -f 217/328/8 216/325/8 221/329/8 -f 215/331/1 218/322/1 220/332/1 -f 218/322/6 215/331/6 216/325/6 -f 227/334/6 230/337/6 229/335/6 -f 230/337/1 227/334/1 225/338/1 -f 228/336/8 229/335/8 224/340/8 -f 229/335/5 230/337/5 226/342/5 -f 227/334/3 228/336/3 223/344/3 -f 235/346/6 238/349/6 237/347/6 -f 238/349/1 235/346/1 233/350/1 -f 236/348/8 237/347/8 232/352/8 -f 237/347/5 238/349/5 234/354/5 -f 235/346/3 236/348/3 231/356/3 -f 243/358/6 246/361/6 245/359/6 -f 246/361/1 243/358/1 241/362/1 -f 244/360/8 245/359/8 240/364/8 -f 245/359/5 246/361/5 242/366/5 -f 243/358/3 244/360/3 239/368/3 -f 250/370/3 249/376/3 254/371/3 -f 248/373/5 247/379/5 251/374/5 -f 249/376/8 248/373/8 253/377/8 -f 247/379/1 250/370/1 252/380/1 -f 250/370/6 247/379/6 248/373/6 -f 258/382/3 257/388/3 262/383/3 -f 256/385/5 255/391/5 259/386/5 -f 257/388/8 256/385/8 261/389/8 -f 255/391/1 258/382/1 260/392/1 -f 258/382/6 255/391/6 256/385/6 -f 270/394/3 269/400/3 274/395/3 -f 268/397/5 267/403/5 271/398/5 -f 269/400/8 268/397/8 273/401/8 -f 267/403/1 270/394/1 272/404/1 -f 270/394/6 267/403/6 268/397/6 -f 279/406/6 282/409/6 281/407/6 -f 282/409/1 279/406/1 277/410/1 -f 280/408/8 281/407/8 276/412/8 -f 281/407/5 282/409/5 278/414/5 -f 279/406/3 280/408/3 275/416/3 -f 286/418/3 285/424/3 290/419/3 -f 284/421/5 283/427/5 287/422/5 -f 285/424/8 284/421/8 289/425/8 -f 283/427/1 286/418/1 288/428/1 -f 286/418/6 283/427/6 284/421/6 -f 295/430/6 298/433/6 297/431/6 -f 298/433/1 295/430/1 293/434/1 -f 296/432/8 297/431/8 292/436/8 -f 297/431/5 298/433/5 294/438/5 -f 295/430/3 296/432/3 291/440/3 -f 265/442/8 301/497/8 302/443/8 -f 265/445/6 266/444/6 264/446/6 -f 300/448/4 302/443/4 301/449/4 -f 299/451/1 263/498/1 264/446/1 -f 300/448/3 264/446/3 266/444/3 -f 307/452/6 310/455/6 309/453/6 -f 310/455/1 307/452/1 305/456/1 -f 308/454/8 309/453/8 304/458/8 -f 309/453/5 310/455/5 306/460/5 -f 307/452/3 308/454/3 303/462/3 -f 314/464/3 313/470/3 318/465/3 -f 312/467/5 311/473/5 315/468/5 -f 313/470/8 312/467/8 317/471/8 -f 311/473/1 314/464/1 316/474/1 -f 314/464/6 311/473/6 312/467/6 +f 59/81/19 84/82/19 79/83/19 +f 73/84/20 75/85/20 98/86/20 +f 68/87/21 65/88/21 66/89/21 +f 70/90/22 71/91/22 69/92/22 +f 76/93/23 73/94/23 74/95/23 +f 78/96/22 75/97/22 76/93/22 +f 70/90/21 78/96/21 72/98/21 +f 74/95/24 57/99/24 58/100/24 +f 91/101/25 100/102/25 60/103/25 +f 81/104/24 61/105/24 63/106/24 +f 91/101/19 82/107/19 100/102/19 +f 83/108/19 57/99/19 73/84/19 +f 88/109/22 67/110/22 68/87/22 +f 85/111/24 66/89/24 65/88/24 +f 90/112/21 87/113/21 88/109/21 +f 92/114/24 89/115/24 90/112/24 +f 61/105/23 92/114/23 63/106/23 +f 94/116/23 69/117/23 71/118/23 +f 96/119/22 93/120/22 94/116/22 +f 85/111/21 96/119/21 86/121/21 +f 98/86/26 99/122/26 60/103/26 +f 83/123/23 79/83/23 84/82/23 +f 79/83/24 100/124/24 105/125/24 +f 67/126/19 85/127/19 65/128/19 +f 93/129/19 70/130/19 69/131/19 +f 93/129/27 97/132/27 98/86/27 +f 83/123/22 62/133/22 64/134/22 +f 105/125/21 82/135/21 81/104/21 +f 85/127/28 87/136/28 99/122/28 +f 110/137/22 101/138/22 102/139/22 +f 106/140/19 78/96/19 76/93/19 +f 74/95/19 106/141/19 76/93/19 +f 64/134/23 58/100/23 57/99/23 +f 59/142/19 105/125/19 81/143/19 +f 107/144/19 92/114/19 90/112/19 +f 88/109/19 107/145/19 90/112/19 +f 108/146/19 94/116/19 71/147/19 +f 86/121/19 108/148/19 66/149/19 +f 103/150/29 107/151/29 68/87/29 +f 103/152/30 104/153/30 81/104/30 +f 102/154/31 106/155/31 58/100/31 +f 101/138/32 108/156/32 71/91/32 +f 103/152/33 110/157/33 104/153/33 +f 102/154/23 104/158/23 110/159/23 +f 101/160/21 109/161/21 103/150/21 +f 115/162/23 117/163/23 116/164/23 +f 118/165/19 113/166/19 114/167/19 +f 116/164/26 112/168/26 111/169/26 +f 117/163/22 114/170/22 112/171/22 +f 115/162/24 111/172/24 113/173/24 +f 122/174/24 126/175/24 124/176/24 +f 120/177/22 123/178/22 125/179/22 +f 121/180/26 125/181/26 126/182/26 +f 119/183/19 124/184/19 123/185/19 +f 122/174/23 120/177/23 121/180/23 +f 130/186/24 134/187/24 132/188/24 +f 128/189/22 131/190/22 133/191/22 +f 129/192/26 133/193/26 134/194/26 +f 127/195/19 132/196/19 131/197/19 +f 130/186/23 128/189/23 129/192/23 +f 139/198/23 141/199/23 140/200/23 +f 142/201/19 137/202/19 138/203/19 +f 140/200/26 136/204/26 135/205/26 +f 141/199/22 138/206/22 136/207/22 +f 139/198/24 135/208/24 137/209/24 +f 146/210/24 150/211/24 148/212/24 +f 144/213/22 147/214/22 149/215/22 +f 145/216/26 149/217/26 150/218/26 +f 143/219/19 148/220/19 147/221/19 +f 146/210/23 144/213/23 145/216/23 +f 155/222/23 157/223/23 156/224/23 +f 158/225/19 153/226/19 154/227/19 +f 156/224/26 152/228/26 151/229/26 +f 157/223/22 154/230/22 152/231/22 +f 155/222/24 151/232/24 153/233/24 +f 163/234/23 165/235/23 164/236/23 +f 166/237/19 161/238/19 162/239/19 +f 164/236/26 160/240/26 159/241/26 +f 165/235/22 162/242/22 160/243/22 +f 163/234/24 159/244/24 161/245/24 +f 171/246/23 173/247/23 172/248/23 +f 174/249/19 169/250/19 170/251/19 +f 172/248/26 168/252/26 167/253/26 +f 173/247/22 170/254/22 168/255/22 +f 171/246/24 167/256/24 169/257/24 +f 178/258/24 182/259/24 180/260/24 +f 176/261/22 179/262/22 181/263/22 +f 177/264/26 181/265/26 182/266/26 +f 175/267/19 180/268/19 179/269/19 +f 178/258/23 176/261/23 177/264/23 +f 186/270/24 190/271/24 188/272/24 +f 184/273/22 187/274/22 189/275/22 +f 185/276/26 189/277/26 190/278/26 +f 183/279/19 188/280/19 187/281/19 +f 186/270/23 184/273/23 185/276/23 +f 194/282/24 198/283/24 196/284/24 +f 192/285/22 195/286/22 197/287/22 +f 193/288/26 197/289/26 198/290/26 +f 191/291/19 196/292/19 195/293/19 +f 194/282/23 192/285/23 193/288/23 +f 203/294/23 205/295/23 204/296/23 +f 206/297/19 201/298/19 202/299/19 +f 204/296/26 200/300/26 199/301/26 +f 205/295/22 202/302/22 200/303/22 +f 203/294/24 199/304/24 201/305/24 +f 211/306/21 213/307/21 212/308/21 +f 214/309/19 209/310/19 210/311/19 +f 212/308/26 208/312/26 207/313/26 +f 213/307/24 210/314/24 208/315/24 +f 211/306/22 207/316/22 209/317/22 +f 218/318/22 222/319/22 220/320/22 +f 216/321/24 219/322/24 221/323/24 +f 217/324/26 221/325/26 222/326/26 +f 215/327/19 220/328/19 219/329/19 +f 218/318/21 216/321/21 217/324/21 +f 226/330/22 230/331/22 228/332/22 +f 224/333/24 227/334/24 229/335/24 +f 225/336/26 229/337/26 230/338/26 +f 223/339/19 228/340/19 227/341/19 +f 226/330/21 224/333/21 225/336/21 +f 235/342/21 237/343/21 236/344/21 +f 238/345/19 233/346/19 234/347/19 +f 236/344/26 232/348/26 231/349/26 +f 237/343/24 234/350/24 232/351/24 +f 235/342/22 231/352/22 233/353/22 +f 243/354/21 245/355/21 244/356/21 +f 246/357/19 241/358/19 242/359/19 +f 244/356/26 240/360/26 239/361/26 +f 245/355/24 242/362/24 240/363/24 +f 243/354/22 239/364/22 241/365/22 +f 250/366/22 254/367/22 252/368/22 +f 248/369/24 251/370/24 253/371/24 +f 249/372/26 253/373/26 254/374/26 +f 247/375/19 252/376/19 251/377/19 +f 250/366/21 248/369/21 249/372/21 +f 258/378/22 262/379/22 260/380/22 +f 256/381/24 259/382/24 261/383/24 +f 257/384/26 261/385/26 262/386/26 +f 255/387/19 260/388/19 259/389/19 +f 258/378/21 256/381/21 257/384/21 +f 267/390/21 269/391/21 268/392/21 +f 270/393/19 265/394/19 266/395/19 +f 268/392/26 264/396/26 263/397/26 +f 269/391/24 266/398/24 264/399/24 +f 267/390/22 263/400/22 265/401/22 +f 274/402/21 278/403/21 276/404/21 +f 272/405/23 275/406/23 277/407/23 +f 273/408/26 277/409/26 278/410/26 +f 271/411/19 276/412/19 275/413/19 +f 274/402/24 272/405/24 273/408/24 +f 283/414/24 285/415/24 284/416/24 +f 286/417/19 281/418/19 282/419/19 +f 284/416/26 280/420/26 279/421/26 +f 285/415/23 282/422/23 280/423/23 +f 283/414/21 279/424/21 281/425/21 +f 291/426/24 293/427/24 292/428/24 +f 294/429/19 289/430/19 290/431/19 +f 292/428/26 288/432/26 287/433/26 +f 293/427/23 290/434/23 288/435/23 +f 291/426/21 287/436/21 289/437/21 +f 299/438/24 301/439/24 300/440/24 +f 302/441/19 297/442/19 298/443/19 +f 300/440/26 296/444/26 295/445/26 +f 301/439/23 298/446/23 296/447/23 +f 299/438/21 295/448/21 297/449/21 +f 306/450/21 310/451/21 308/452/21 +f 304/453/23 307/454/23 309/455/23 +f 305/456/26 309/457/26 310/458/26 +f 303/459/19 308/460/19 307/461/19 +f 306/450/24 304/453/24 305/456/24 +f 314/462/21 318/463/21 316/464/21 +f 312/465/23 315/466/23 317/467/23 +f 313/468/26 317/469/26 318/470/26 +f 311/471/19 316/472/19 315/473/19 +f 314/462/24 312/465/24 313/468/24 +f 326/474/21 330/475/21 328/476/21 +f 324/477/23 327/478/23 329/479/23 +f 325/480/26 329/481/26 330/482/26 +f 323/483/19 328/484/19 327/485/19 +f 326/474/24 324/477/24 325/480/24 +f 335/486/24 337/487/24 336/488/24 +f 338/489/19 333/490/19 334/491/19 +f 336/488/26 332/492/26 331/493/26 +f 337/487/23 334/494/23 332/495/23 +f 335/486/21 331/496/21 333/497/21 +f 342/498/21 346/499/21 344/500/21 +f 340/501/23 343/502/23 345/503/23 +f 341/504/26 345/505/26 346/506/26 +f 339/507/19 344/508/19 343/509/19 +f 342/498/24 340/501/24 341/504/24 +f 351/510/24 353/511/24 352/512/24 +f 354/513/19 349/514/19 350/515/19 +f 352/512/26 348/516/26 347/517/26 +f 353/511/23 350/518/23 348/519/23 +f 351/510/21 347/520/21 349/521/21 +f 321/522/26 358/523/26 322/524/26 +f 321/525/24 320/526/24 319/527/24 +f 356/528/22 357/529/22 355/530/22 +f 355/531/19 320/526/19 356/528/19 +f 356/528/21 322/524/21 358/523/21 +f 363/532/24 365/533/24 364/534/24 +f 366/535/19 361/536/19 362/537/19 +f 364/534/26 360/538/26 359/539/26 +f 365/533/23 362/540/23 360/541/23 +f 363/532/21 359/542/21 361/543/21 +f 370/544/21 374/545/21 372/546/21 +f 368/547/23 371/548/23 373/549/23 +f 369/550/26 373/551/26 374/552/26 +f 367/553/19 372/554/19 371/555/19 +f 370/544/24 368/547/24 369/550/24 +f 59/81/19 62/556/19 84/82/19 +f 98/86/20 60/103/20 83/108/20 +f 60/103/20 80/557/20 83/108/20 +f 83/108/20 73/84/20 98/86/20 +f 68/87/21 67/110/21 65/88/21 +f 70/90/22 72/98/22 71/91/22 +f 76/93/23 75/97/23 73/94/23 +f 78/96/22 77/558/22 75/97/22 +f 70/90/21 77/558/21 78/96/21 +f 74/95/24 73/94/24 57/99/24 +f 100/102/25 80/557/25 60/103/25 +f 60/103/25 99/122/25 91/101/25 +f 99/122/25 89/559/25 91/101/25 +f 81/104/24 82/135/24 61/105/24 +f 91/101/19 61/560/19 82/107/19 +f 83/108/19 64/134/19 57/99/19 +f 88/109/22 87/113/22 67/110/22 +f 85/111/24 86/121/24 66/89/24 +f 90/112/21 89/115/21 87/113/21 +f 92/114/24 91/561/24 89/115/24 +f 61/105/23 91/561/23 92/114/23 +f 94/116/23 93/120/23 69/117/23 +f 96/119/22 95/562/22 93/120/22 +f 85/111/21 95/562/21 96/119/21 +f 98/86/26 97/132/26 99/122/26 +f 83/123/23 80/563/23 79/83/23 +f 79/83/24 80/563/24 100/124/24 +f 67/126/19 87/136/19 85/127/19 +f 93/129/19 77/564/19 70/130/19 +f 98/86/27 75/85/27 77/564/27 +f 93/129/27 95/565/27 97/132/27 +f 98/86/27 77/564/27 93/129/27 +f 83/123/22 84/82/22 62/133/22 +f 105/125/21 100/124/21 82/135/21 +f 87/136/28 89/559/28 99/122/28 +f 99/122/28 97/132/28 85/127/28 +f 97/132/28 95/565/28 85/127/28 +f 110/137/22 109/566/22 101/138/22 +f 106/140/19 72/567/19 78/96/19 +f 74/95/19 58/568/19 106/141/19 +f 64/134/23 62/133/23 58/100/23 +f 59/142/19 79/83/19 105/125/19 +f 107/144/19 63/569/19 92/114/19 +f 88/109/19 68/570/19 107/145/19 +f 108/146/19 96/119/19 94/116/19 +f 86/121/19 96/119/19 108/148/19 +f 68/87/29 66/89/29 103/150/29 +f 66/89/29 108/571/29 101/160/29 +f 103/150/29 66/89/29 101/160/29 +f 59/572/30 81/104/30 104/153/30 +f 81/104/30 63/106/30 103/152/30 +f 63/106/30 107/573/30 103/152/30 +f 58/100/31 62/133/31 102/154/31 +f 62/133/31 59/574/31 104/158/31 +f 102/154/31 62/133/31 104/158/31 +f 71/91/32 72/98/32 101/138/32 +f 72/98/32 106/575/32 102/139/32 +f 101/138/32 72/98/32 102/139/32 +f 103/152/33 109/576/33 110/157/33 +f 115/162/23 118/165/23 117/163/23 +f 118/165/19 115/162/19 113/166/19 +f 116/164/26 117/163/26 112/168/26 +f 117/163/22 118/165/22 114/170/22 +f 115/162/24 116/164/24 111/172/24 +f 122/174/24 121/180/24 126/175/24 +f 120/177/22 119/183/22 123/178/22 +f 121/180/26 120/177/26 125/181/26 +f 119/183/19 122/174/19 124/184/19 +f 122/174/23 119/183/23 120/177/23 +f 130/186/24 129/192/24 134/187/24 +f 128/189/22 127/195/22 131/190/22 +f 129/192/26 128/189/26 133/193/26 +f 127/195/19 130/186/19 132/196/19 +f 130/186/23 127/195/23 128/189/23 +f 139/198/23 142/201/23 141/199/23 +f 142/201/19 139/198/19 137/202/19 +f 140/200/26 141/199/26 136/204/26 +f 141/199/22 142/201/22 138/206/22 +f 139/198/24 140/200/24 135/208/24 +f 146/210/24 145/216/24 150/211/24 +f 144/213/22 143/219/22 147/214/22 +f 145/216/26 144/213/26 149/217/26 +f 143/219/19 146/210/19 148/220/19 +f 146/210/23 143/219/23 144/213/23 +f 155/222/23 158/225/23 157/223/23 +f 158/225/19 155/222/19 153/226/19 +f 156/224/26 157/223/26 152/228/26 +f 157/223/22 158/225/22 154/230/22 +f 155/222/24 156/224/24 151/232/24 +f 163/234/23 166/237/23 165/235/23 +f 166/237/19 163/234/19 161/238/19 +f 164/236/26 165/235/26 160/240/26 +f 165/235/22 166/237/22 162/242/22 +f 163/234/24 164/236/24 159/244/24 +f 171/246/23 174/249/23 173/247/23 +f 174/249/19 171/246/19 169/250/19 +f 172/248/26 173/247/26 168/252/26 +f 173/247/22 174/249/22 170/254/22 +f 171/246/24 172/248/24 167/256/24 +f 178/258/24 177/264/24 182/259/24 +f 176/261/22 175/267/22 179/262/22 +f 177/264/26 176/261/26 181/265/26 +f 175/267/19 178/258/19 180/268/19 +f 178/258/23 175/267/23 176/261/23 +f 186/270/24 185/276/24 190/271/24 +f 184/273/22 183/279/22 187/274/22 +f 185/276/26 184/273/26 189/277/26 +f 183/279/19 186/270/19 188/280/19 +f 186/270/23 183/279/23 184/273/23 +f 194/282/24 193/288/24 198/283/24 +f 192/285/22 191/291/22 195/286/22 +f 193/288/26 192/285/26 197/289/26 +f 191/291/19 194/282/19 196/292/19 +f 194/282/23 191/291/23 192/285/23 +f 203/294/23 206/297/23 205/295/23 +f 206/297/19 203/294/19 201/298/19 +f 204/296/26 205/295/26 200/300/26 +f 205/295/22 206/297/22 202/302/22 +f 203/294/24 204/296/24 199/304/24 +f 211/306/21 214/309/21 213/307/21 +f 214/309/19 211/306/19 209/310/19 +f 212/308/26 213/307/26 208/312/26 +f 213/307/24 214/309/24 210/314/24 +f 211/306/22 212/308/22 207/316/22 +f 218/318/22 217/324/22 222/319/22 +f 216/321/24 215/327/24 219/322/24 +f 217/324/26 216/321/26 221/325/26 +f 215/327/19 218/318/19 220/328/19 +f 218/318/21 215/327/21 216/321/21 +f 226/330/22 225/336/22 230/331/22 +f 224/333/24 223/339/24 227/334/24 +f 225/336/26 224/333/26 229/337/26 +f 223/339/19 226/330/19 228/340/19 +f 226/330/21 223/339/21 224/333/21 +f 235/342/21 238/345/21 237/343/21 +f 238/345/19 235/342/19 233/346/19 +f 236/344/26 237/343/26 232/348/26 +f 237/343/24 238/345/24 234/350/24 +f 235/342/22 236/344/22 231/352/22 +f 243/354/21 246/357/21 245/355/21 +f 246/357/19 243/354/19 241/358/19 +f 244/356/26 245/355/26 240/360/26 +f 245/355/24 246/357/24 242/362/24 +f 243/354/22 244/356/22 239/364/22 +f 250/366/22 249/372/22 254/367/22 +f 248/369/24 247/375/24 251/370/24 +f 249/372/26 248/369/26 253/373/26 +f 247/375/19 250/366/19 252/376/19 +f 250/366/21 247/375/21 248/369/21 +f 258/378/22 257/384/22 262/379/22 +f 256/381/24 255/387/24 259/382/24 +f 257/384/26 256/381/26 261/385/26 +f 255/387/19 258/378/19 260/388/19 +f 258/378/21 255/387/21 256/381/21 +f 267/390/21 270/393/21 269/391/21 +f 270/393/19 267/390/19 265/394/19 +f 268/392/26 269/391/26 264/396/26 +f 269/391/24 270/393/24 266/398/24 +f 267/390/22 268/392/22 263/400/22 +f 274/402/21 273/408/21 278/403/21 +f 272/405/23 271/411/23 275/406/23 +f 273/408/26 272/405/26 277/409/26 +f 271/411/19 274/402/19 276/412/19 +f 274/402/24 271/411/24 272/405/24 +f 283/414/24 286/417/24 285/415/24 +f 286/417/19 283/414/19 281/418/19 +f 284/416/26 285/415/26 280/420/26 +f 285/415/23 286/417/23 282/422/23 +f 283/414/21 284/416/21 279/424/21 +f 291/426/24 294/429/24 293/427/24 +f 294/429/19 291/426/19 289/430/19 +f 292/428/26 293/427/26 288/432/26 +f 293/427/23 294/429/23 290/434/23 +f 291/426/21 292/428/21 287/436/21 +f 299/438/24 302/441/24 301/439/24 +f 302/441/19 299/438/19 297/442/19 +f 300/440/26 301/439/26 296/444/26 +f 301/439/23 302/441/23 298/446/23 +f 299/438/21 300/440/21 295/448/21 +f 306/450/21 305/456/21 310/451/21 +f 304/453/23 303/459/23 307/454/23 +f 305/456/26 304/453/26 309/457/26 +f 303/459/19 306/450/19 308/460/19 +f 306/450/24 303/459/24 304/453/24 +f 314/462/21 313/468/21 318/463/21 +f 312/465/23 311/471/23 315/466/23 +f 313/468/26 312/465/26 317/469/26 +f 311/471/19 314/462/19 316/472/19 +f 314/462/24 311/471/24 312/465/24 +f 326/474/21 325/480/21 330/475/21 +f 324/477/23 323/483/23 327/478/23 +f 325/480/26 324/477/26 329/481/26 +f 323/483/19 326/474/19 328/484/19 +f 326/474/24 323/483/24 324/477/24 +f 335/486/24 338/489/24 337/487/24 +f 338/489/19 335/486/19 333/490/19 +f 336/488/26 337/487/26 332/492/26 +f 337/487/23 338/489/23 334/494/23 +f 335/486/21 336/488/21 331/496/21 +f 342/498/21 341/504/21 346/499/21 +f 340/501/23 339/507/23 343/502/23 +f 341/504/26 340/501/26 345/505/26 +f 339/507/19 342/498/19 344/508/19 +f 342/498/24 339/507/24 340/501/24 +f 351/510/24 354/513/24 353/511/24 +f 354/513/19 351/510/19 349/514/19 +f 352/512/26 353/511/26 348/516/26 +f 353/511/23 354/513/23 350/518/23 +f 351/510/21 352/512/21 347/520/21 +f 321/522/26 357/577/26 358/523/26 +f 321/525/24 322/524/24 320/526/24 +f 356/528/22 358/523/22 357/529/22 +f 355/531/19 319/578/19 320/526/19 +f 356/528/21 320/526/21 322/524/21 +f 363/532/24 366/535/24 365/533/24 +f 366/535/19 363/532/19 361/536/19 +f 364/534/26 365/533/26 360/538/26 +f 365/533/23 366/535/23 362/540/23 +f 363/532/21 364/534/21 359/542/21 +f 370/544/21 369/550/21 374/545/21 +f 368/547/23 367/553/23 371/548/23 +f 369/550/26 368/547/26 373/551/26 +f 367/553/19 370/544/19 372/554/19 +f 370/544/24 367/553/24 368/547/24 o RightLeg -v -5.000000 24.500002 3.000000 -v -5.000000 24.500002 -3.000000 -v 1.000000 24.500000 3.000000 -v 1.000000 24.500000 -3.000000 -v -4.000000 24.500002 -4.000000 -v 0.000000 24.500000 -4.000000 v -4.000004 11.000001 -2.000000 v -4.000004 11.000001 2.000000 -v -0.000001 21.500000 -4.000000 -v -4.000001 21.500002 -4.000000 v -4.500004 12.000002 2.000000 v -4.500004 12.000002 -2.000000 v -5.000004 12.000002 -2.000000 @@ -1501,18 +1719,10 @@ vt 0.392857 0.796296 vt 0.392857 0.759259 vt 0.250000 0.759259 vt 0.250000 0.796296 -vt -0.000000 0.425926 -vt 0.142857 0.407407 -vt -0.000000 0.407407 -vt 0.250000 0.425926 -vt 0.392857 0.407407 -vt 0.250000 0.407407 -vt 0.500000 0.425926 -vt 0.642857 0.407407 -vt 0.500000 0.407407 vt 0.750000 0.740741 vt 0.732143 0.425926 vt 0.732143 0.740741 +vt 0.500000 0.425926 vt 0.482143 0.740741 vt 0.500000 0.740741 vt 0.946429 0.425926 @@ -1531,6 +1741,7 @@ vt 0.250000 0.740741 vt 0.392857 0.740741 vt 0.482143 0.425926 vt 0.446429 0.740741 +vt 0.250000 0.425926 vt 0.160714 0.425926 vt 0.160714 0.740741 vt 0.696429 0.740741 @@ -1547,23 +1758,8 @@ vt 1.000000 0.740741 vt 0.410714 0.425926 vt 0.642857 0.425926 vt 0.000000 0.740741 -vt 0.750000 0.407407 -vt 0.892857 0.407407 -vt 0.642857 0.259259 -vt 0.678571 0.407407 -vt 0.821429 0.407407 -vt 0.428571 0.259259 -vt 0.464286 0.407407 -vt 0.607143 0.407407 -vt 0.178571 0.407407 -vt 0.214286 0.407407 -vt 0.214286 0.259259 -vt 0.250000 0.370370 -vt 0.392857 0.259259 -vt 0.250000 0.259259 vt 0.250000 0.981481 vt 0.392857 1.000000 -vt 0.392857 0.370370 vt 0.196429 0.796296 vt 0.214286 0.944444 vt 0.214286 0.796296 @@ -1824,361 +2020,315 @@ vt 0.071429 0.759259 vt 0.017857 0.796296 vt -0.000000 0.759259 vt -0.000000 0.796296 -vt 0.214286 0.222222 vt 0.214286 0.981481 vt 0.428571 0.981481 vt 0.214286 0.759259 vt 0.910714 0.425926 vt 0.232143 0.425926 -vt 0.857143 0.407407 -vt 0.857143 0.259259 -vt 0.642857 0.407407 -vt 0.428571 0.407407 -vt 0.000000 0.259259 -vt 0.035714 0.407407 -vt -0.000000 0.407407 +vt -0.000000 0.425926 vt 0.250000 1.000000 vt 0.196429 0.944444 vt 0.589286 0.740741 vt 0.446429 0.759259 -vt 0.428571 0.222222 -vt 0.428571 0.000000 -vt 0.214286 -0.000000 vn -0.0000 -0.7071 0.7071 vn -0.7071 -0.7071 0.0000 vn -0.0000 -0.7071 -0.7071 -vn 0.0000 -1.0000 0.0000 vn 1.0000 -0.0000 0.0000 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 0.7071 -0.0000 -0.7071 -vn -0.7071 0.0000 -0.7071 +vn -0.0000 -1.0000 0.0000 vn 0.7071 -0.7071 0.0000 vn 0.0000 0.4472 -0.8944 vn -0.4472 0.0000 -0.8944 vn -0.0000 -0.4472 -0.8944 vn 0.4472 -0.0000 -0.8944 s off -f 335/499/16 326/500/16 369/501/16 -f 331/502/17 334/503/17 325/504/17 -f 336/505/18 348/506/18 370/507/18 -f 366/508/19 361/509/19 362/510/19 -f 360/511/19 356/512/19 368/513/19 -f 350/514/19 352/515/19 351/516/19 -f 337/517/20 355/518/20 335/519/20 -f 350/514/21 331/520/21 330/521/21 -f 363/522/21 347/523/21 343/524/21 -f 339/525/21 357/526/21 337/517/21 -f 352/527/22 329/528/22 332/529/22 -f 348/530/22 364/531/22 344/532/22 -f 358/533/22 340/534/22 338/535/22 -f 351/536/23 334/537/23 331/520/23 -f 360/511/23 348/530/23 340/534/23 -f 344/532/20 361/538/20 341/539/20 -f 333/540/23 352/527/23 332/529/23 -f 347/523/23 359/541/23 339/525/23 -f 362/542/20 343/524/20 342/543/20 -f 335/519/21 353/544/21 333/540/21 -f 341/539/21 365/545/21 345/546/21 -f 354/547/22 336/548/22 334/537/22 -f 366/549/22 342/543/22 346/550/22 -f 356/551/20 338/535/20 336/548/20 -f 349/552/23 330/521/23 329/528/23 -f 365/545/20 346/553/20 345/546/20 -f 355/554/19 359/541/19 367/555/19 -f 319/556/21 355/557/21 367/558/21 -f 320/559/23 351/560/23 352/561/23 -f 361/562/20 364/563/20 322/564/20 -f 327/565/22 323/566/22 324/567/22 -f 327/565/18 368/513/18 356/512/18 -f 347/568/24 337/569/24 335/499/24 -f 338/535/24 348/506/24 336/505/24 -f 322/564/25 327/565/25 324/567/25 -f 328/570/26 320/559/26 323/566/26 -f 345/571/24 342/572/24 341/573/24 -f 330/574/24 332/575/24 329/576/24 -f 369/501/19 325/504/19 370/507/19 -f 370/507/27 341/573/27 342/572/27 -f 383/577/22 385/578/22 384/579/22 -f 375/580/22 377/581/22 376/582/22 -f 377/581/20 374/583/20 372/584/20 -f 375/580/23 371/585/23 373/586/23 -f 378/587/24 373/588/24 374/589/24 -f 376/582/19 372/590/19 371/591/19 -f 385/578/20 382/592/20 380/593/20 -f 383/577/23 379/594/23 381/595/23 -f 386/596/24 381/597/24 382/598/24 -f 384/579/19 380/599/19 379/600/19 -f 389/601/19 393/602/19 394/603/19 -f 387/604/24 392/605/24 391/606/24 -f 390/607/23 394/608/23 392/609/23 -f 388/610/20 391/611/20 393/612/20 -f 397/613/19 401/614/19 402/615/19 -f 395/616/24 400/617/24 399/618/24 -f 398/619/23 402/620/23 400/621/23 -f 396/622/20 399/623/20 401/624/20 -f 398/619/22 396/622/22 397/613/22 -f 390/607/22 388/610/22 389/601/22 -f 405/625/19 404/626/19 403/627/19 -f 414/628/22 412/629/22 413/630/22 -f 413/630/28 411/631/28 408/632/28 -f 412/629/29 406/633/29 411/631/29 -f 410/634/30 404/626/30 406/633/30 -f 411/631/24 407/635/24 408/632/24 -f 414/628/31 408/632/31 404/626/31 -f 411/631/23 405/636/23 409/637/23 -f 408/632/20 403/638/20 404/626/20 -f 427/639/23 429/640/23 428/641/23 -f 419/642/23 421/643/23 420/644/23 -f 421/643/22 418/645/22 416/646/22 -f 419/642/21 415/647/21 417/648/21 -f 422/649/24 417/650/24 418/651/24 -f 420/644/19 416/652/19 415/653/19 -f 429/640/22 426/654/22 424/655/22 -f 427/639/21 423/656/21 425/657/21 -f 430/658/24 425/659/24 426/660/24 -f 428/641/19 424/661/19 423/662/19 -f 443/663/23 445/664/23 444/665/23 -f 435/666/23 437/667/23 436/668/23 -f 437/667/22 434/669/22 432/670/22 -f 435/666/21 431/671/21 433/672/21 -f 438/673/24 433/674/24 434/675/24 -f 436/668/19 432/676/19 431/677/19 -f 445/664/22 442/678/22 440/679/22 -f 443/663/21 439/680/21 441/681/21 -f 446/682/24 441/683/24 442/684/24 -f 444/665/19 440/685/19 439/686/19 -f 449/687/19 453/688/19 454/689/19 -f 447/690/24 452/691/24 451/692/24 -f 450/693/21 454/694/21 452/695/21 -f 448/696/22 451/697/22 453/698/22 -f 457/699/19 461/700/19 462/701/19 -f 455/702/24 460/703/24 459/704/24 -f 458/705/21 462/706/21 460/707/21 -f 456/708/22 459/709/22 461/710/22 -f 458/705/23 456/708/23 457/699/23 -f 450/693/23 448/696/23 449/687/23 -f 465/711/19 469/712/19 470/713/19 -f 463/714/24 468/715/24 467/716/24 -f 466/717/21 470/718/21 468/719/21 -f 464/720/22 467/721/22 469/722/22 -f 473/723/19 477/724/19 478/725/19 -f 471/726/24 476/727/24 475/728/24 -f 474/729/21 478/730/21 476/731/21 -f 472/732/22 475/733/22 477/734/22 -f 474/729/23 472/732/23 473/723/23 -f 466/717/23 464/720/23 465/711/23 -f 491/735/21 493/736/21 492/737/21 -f 483/738/21 485/739/21 484/740/21 -f 485/739/23 482/741/23 480/742/23 -f 483/738/20 479/743/20 481/744/20 -f 486/745/24 481/746/24 482/747/24 -f 484/740/19 480/748/19 479/749/19 -f 493/736/23 490/750/23 488/751/23 -f 491/735/20 487/752/20 489/753/20 -f 494/754/24 489/755/24 490/756/24 -f 492/737/19 488/757/19 487/758/19 -f 507/759/21 509/760/21 508/761/21 -f 499/762/21 501/763/21 500/764/21 -f 501/763/23 498/765/23 496/766/23 -f 499/762/20 495/767/20 497/768/20 -f 502/769/24 497/770/24 498/771/24 -f 500/764/19 496/772/19 495/773/19 -f 509/760/23 506/774/23 504/775/23 -f 507/759/20 503/776/20 505/777/20 -f 510/778/24 505/779/24 506/780/24 -f 508/761/19 504/781/19 503/782/19 -f 513/783/19 517/784/19 518/785/19 -f 511/786/24 516/787/24 515/788/24 -f 514/789/20 518/790/20 516/791/20 -f 512/792/23 515/793/23 517/794/23 -f 521/795/19 525/796/19 526/797/19 -f 519/798/24 524/799/24 523/800/24 -f 522/801/20 526/802/20 524/803/20 -f 520/804/23 523/805/23 525/806/23 -f 522/801/21 520/804/21 521/795/21 -f 514/789/21 512/792/21 513/783/21 -f 529/807/19 533/808/19 534/809/19 -f 527/810/24 532/811/24 531/812/24 -f 530/813/20 534/814/20 532/815/20 -f 528/816/23 531/817/23 533/818/23 -f 537/819/19 541/820/19 542/821/19 -f 535/822/24 540/823/24 539/824/24 -f 538/825/20 542/826/20 540/827/20 -f 536/828/23 539/829/23 541/830/23 -f 538/825/21 536/828/21 537/819/21 -f 530/813/21 528/816/21 529/807/21 -f 322/831/24 324/567/24 323/566/24 -f 369/501/16 343/832/16 347/568/16 -f 335/499/16 333/833/16 326/500/16 -f 369/501/16 347/568/16 335/499/16 -f 325/504/17 326/500/17 332/575/17 -f 326/500/17 333/833/17 332/575/17 -f 332/575/17 331/502/17 325/504/17 -f 348/506/18 344/834/18 370/507/18 -f 370/507/18 325/504/18 336/505/18 -f 325/504/18 334/503/18 336/505/18 -f 366/508/19 365/545/19 361/509/19 -f 360/511/19 358/533/19 356/512/19 -f 350/514/19 349/552/19 352/515/19 -f 337/517/20 357/526/20 355/518/20 -f 350/514/21 351/536/21 331/520/21 -f 363/522/21 367/835/21 347/523/21 -f 339/525/21 359/541/21 357/526/21 -f 352/527/22 349/552/22 329/528/22 -f 348/530/22 368/836/22 364/531/22 -f 358/533/22 360/511/22 340/534/22 -f 351/536/23 354/547/23 334/537/23 -f 360/511/23 368/836/23 348/530/23 -f 344/532/20 364/531/20 361/538/20 -f 333/540/23 353/544/23 352/527/23 -f 347/523/23 367/835/23 359/541/23 -f 362/542/20 363/522/20 343/524/20 -f 335/519/21 355/518/21 353/544/21 -f 341/539/21 361/538/21 365/545/21 -f 354/547/22 356/551/22 336/548/22 -f 366/549/22 362/542/22 342/543/22 -f 356/551/20 358/533/20 338/535/20 -f 349/552/23 350/514/23 330/521/23 -f 365/545/20 366/508/20 346/553/20 -f 355/554/19 357/526/19 359/541/19 -f 363/837/21 321/838/21 367/558/21 -f 321/838/21 319/556/21 367/558/21 -f 319/556/21 353/839/21 355/557/21 -f 353/839/23 319/556/23 352/561/23 -f 319/556/23 320/559/23 352/561/23 -f 320/559/23 354/840/23 351/560/23 -f 322/564/20 321/841/20 362/842/20 -f 321/841/20 363/843/20 362/842/20 -f 362/842/20 361/562/20 322/564/20 -f 327/565/22 328/570/22 323/566/22 -f 354/840/18 328/570/18 356/512/18 -f 328/570/18 327/565/18 356/512/18 -f 327/565/18 364/563/18 368/513/18 -f 347/568/24 339/844/24 337/569/24 -f 338/535/24 340/534/24 348/506/24 -f 322/564/25 364/563/25 327/565/25 -f 328/570/26 354/840/26 320/559/26 -f 345/571/24 346/845/24 342/572/24 -f 330/574/24 331/502/24 332/575/24 -f 369/501/19 326/500/19 325/504/19 -f 343/832/27 369/501/27 342/572/27 -f 369/501/27 370/507/27 342/572/27 -f 370/507/27 344/834/27 341/573/27 -f 383/577/22 386/596/22 385/578/22 -f 375/580/22 378/587/22 377/581/22 -f 377/581/20 378/587/20 374/583/20 -f 375/580/23 376/582/23 371/585/23 -f 378/587/24 375/580/24 373/588/24 -f 376/582/19 377/581/19 372/590/19 -f 385/578/20 386/596/20 382/592/20 -f 383/577/23 384/579/23 379/594/23 -f 386/596/24 383/577/24 381/597/24 -f 384/579/19 385/578/19 380/599/19 -f 389/601/19 388/610/19 393/602/19 -f 387/604/24 390/607/24 392/605/24 -f 390/607/23 389/601/23 394/608/23 -f 388/610/20 387/604/20 391/611/20 -f 397/613/19 396/622/19 401/614/19 -f 395/616/24 398/619/24 400/617/24 -f 398/619/23 397/613/23 402/620/23 -f 396/622/20 395/616/20 399/623/20 -f 398/619/22 395/616/22 396/622/22 -f 390/607/22 387/604/22 388/610/22 -f 405/625/19 406/633/19 404/626/19 -f 414/628/22 410/634/22 412/629/22 -f 413/630/28 412/629/28 411/631/28 -f 412/629/29 410/634/29 406/633/29 -f 410/634/30 414/628/30 404/626/30 -f 411/631/24 409/846/24 407/635/24 -f 414/628/31 413/630/31 408/632/31 -f 411/631/23 406/633/23 405/636/23 -f 408/632/20 407/847/20 403/638/20 -f 427/639/23 430/658/23 429/640/23 -f 419/642/23 422/649/23 421/643/23 -f 421/643/22 422/649/22 418/645/22 -f 419/642/21 420/644/21 415/647/21 -f 422/649/24 419/642/24 417/650/24 -f 420/644/19 421/643/19 416/652/19 -f 429/640/22 430/658/22 426/654/22 -f 427/639/21 428/641/21 423/656/21 -f 430/658/24 427/639/24 425/659/24 -f 428/641/19 429/640/19 424/661/19 -f 443/663/23 446/682/23 445/664/23 -f 435/666/23 438/673/23 437/667/23 -f 437/667/22 438/673/22 434/669/22 -f 435/666/21 436/668/21 431/671/21 -f 438/673/24 435/666/24 433/674/24 -f 436/668/19 437/667/19 432/676/19 -f 445/664/22 446/682/22 442/678/22 -f 443/663/21 444/665/21 439/680/21 -f 446/682/24 443/663/24 441/683/24 -f 444/665/19 445/664/19 440/685/19 -f 449/687/19 448/696/19 453/688/19 -f 447/690/24 450/693/24 452/691/24 -f 450/693/21 449/687/21 454/694/21 -f 448/696/22 447/690/22 451/697/22 -f 457/699/19 456/708/19 461/700/19 -f 455/702/24 458/705/24 460/703/24 -f 458/705/21 457/699/21 462/706/21 -f 456/708/22 455/702/22 459/709/22 -f 458/705/23 455/702/23 456/708/23 -f 450/693/23 447/690/23 448/696/23 -f 465/711/19 464/720/19 469/712/19 -f 463/714/24 466/717/24 468/715/24 -f 466/717/21 465/711/21 470/718/21 -f 464/720/22 463/714/22 467/721/22 -f 473/723/19 472/732/19 477/724/19 -f 471/726/24 474/729/24 476/727/24 -f 474/729/21 473/723/21 478/730/21 -f 472/732/22 471/726/22 475/733/22 -f 474/729/23 471/726/23 472/732/23 -f 466/717/23 463/714/23 464/720/23 -f 491/735/21 494/754/21 493/736/21 -f 483/738/21 486/745/21 485/739/21 -f 485/739/23 486/745/23 482/741/23 -f 483/738/20 484/740/20 479/743/20 -f 486/745/24 483/738/24 481/746/24 -f 484/740/19 485/739/19 480/748/19 -f 493/736/23 494/754/23 490/750/23 -f 491/735/20 492/737/20 487/752/20 -f 494/754/24 491/735/24 489/755/24 -f 492/737/19 493/736/19 488/757/19 -f 507/759/21 510/778/21 509/760/21 -f 499/762/21 502/769/21 501/763/21 -f 501/763/23 502/769/23 498/765/23 -f 499/762/20 500/764/20 495/767/20 -f 502/769/24 499/762/24 497/770/24 -f 500/764/19 501/763/19 496/772/19 -f 509/760/23 510/778/23 506/774/23 -f 507/759/20 508/761/20 503/776/20 -f 510/778/24 507/759/24 505/779/24 -f 508/761/19 509/760/19 504/781/19 -f 513/783/19 512/792/19 517/784/19 -f 511/786/24 514/789/24 516/787/24 -f 514/789/20 513/783/20 518/790/20 -f 512/792/23 511/786/23 515/793/23 -f 521/795/19 520/804/19 525/796/19 -f 519/798/24 522/801/24 524/799/24 -f 522/801/20 521/795/20 526/802/20 -f 520/804/23 519/798/23 523/805/23 -f 522/801/21 519/798/21 520/804/21 -f 514/789/21 511/786/21 512/792/21 -f 529/807/19 528/816/19 533/808/19 -f 527/810/24 530/813/24 532/811/24 -f 530/813/20 529/807/20 534/814/20 -f 528/816/23 527/810/23 531/817/23 -f 537/819/19 536/828/19 541/820/19 -f 535/822/24 538/825/24 540/823/24 -f 538/825/20 537/819/20 542/826/20 -f 536/828/23 535/822/23 539/829/23 -f 538/825/21 535/822/21 536/828/21 -f 530/813/21 527/810/21 528/816/21 -f 323/566/24 320/848/24 322/831/24 -f 320/848/24 319/849/24 322/831/24 -f 319/849/24 321/850/24 322/831/24 +f 383/579/34 376/580/34 417/581/34 +f 379/582/35 382/583/35 375/584/35 +f 384/585/36 396/586/36 418/587/36 +f 385/588/37 403/589/37 383/590/37 +f 398/591/38 379/592/38 378/593/38 +f 411/594/38 395/595/38 391/596/38 +f 387/597/38 405/598/38 385/588/38 +f 400/599/39 377/600/39 380/601/39 +f 396/602/39 412/603/39 392/604/39 +f 406/605/39 388/606/39 386/607/39 +f 399/608/40 382/609/40 379/592/40 +f 408/610/40 396/602/40 388/606/40 +f 392/604/37 409/611/37 389/612/37 +f 381/613/40 400/599/40 380/601/40 +f 395/595/40 407/614/40 387/597/40 +f 410/615/37 391/596/37 390/616/37 +f 383/590/38 401/617/38 381/613/38 +f 389/612/38 413/618/38 393/619/38 +f 402/620/39 384/621/39 382/609/39 +f 414/622/39 390/616/39 394/623/39 +f 404/624/37 386/607/37 384/621/37 +f 397/625/40 378/593/40 377/600/40 +f 413/618/37 394/626/37 393/619/37 +f 395/627/41 385/628/41 383/579/41 +f 386/607/41 396/586/41 384/585/41 +f 393/629/41 390/630/41 389/631/41 +f 378/632/41 380/633/41 377/634/41 +f 417/581/42 375/584/42 418/587/42 +f 418/587/43 389/631/43 390/630/43 +f 431/635/39 433/636/39 432/637/39 +f 423/638/39 425/639/39 424/640/39 +f 425/639/37 422/641/37 420/642/37 +f 423/638/40 419/643/40 421/644/40 +f 426/645/41 421/646/41 422/647/41 +f 424/640/42 420/648/42 419/649/42 +f 433/636/37 430/650/37 428/651/37 +f 431/635/40 427/652/40 429/653/40 +f 434/654/41 429/655/41 430/656/41 +f 432/637/42 428/657/42 427/658/42 +f 437/659/42 441/660/42 442/661/42 +f 435/662/41 440/663/41 439/664/41 +f 438/665/40 442/666/40 440/667/40 +f 436/668/37 439/669/37 441/670/37 +f 445/671/42 449/672/42 450/673/42 +f 443/674/41 448/675/41 447/676/41 +f 446/677/40 450/678/40 448/679/40 +f 444/680/37 447/681/37 449/682/37 +f 446/677/39 444/680/39 445/671/39 +f 438/665/39 436/668/39 437/659/39 +f 453/683/42 452/684/42 451/685/42 +f 462/686/39 460/687/39 461/688/39 +f 461/688/44 459/689/44 456/690/44 +f 460/687/45 454/691/45 459/689/45 +f 458/692/46 452/684/46 454/691/46 +f 459/689/41 455/693/41 456/690/41 +f 462/686/47 456/690/47 452/684/47 +f 459/689/40 453/694/40 457/695/40 +f 456/690/37 451/696/37 452/684/37 +f 475/697/40 477/698/40 476/699/40 +f 467/700/40 469/701/40 468/702/40 +f 469/701/39 466/703/39 464/704/39 +f 467/700/38 463/705/38 465/706/38 +f 470/707/41 465/708/41 466/709/41 +f 468/702/42 464/710/42 463/711/42 +f 477/698/39 474/712/39 472/713/39 +f 475/697/38 471/714/38 473/715/38 +f 478/716/41 473/717/41 474/718/41 +f 476/699/42 472/719/42 471/720/42 +f 491/721/40 493/722/40 492/723/40 +f 483/724/40 485/725/40 484/726/40 +f 485/725/39 482/727/39 480/728/39 +f 483/724/38 479/729/38 481/730/38 +f 486/731/41 481/732/41 482/733/41 +f 484/726/42 480/734/42 479/735/42 +f 493/722/39 490/736/39 488/737/39 +f 491/721/38 487/738/38 489/739/38 +f 494/740/41 489/741/41 490/742/41 +f 492/723/42 488/743/42 487/744/42 +f 497/745/42 501/746/42 502/747/42 +f 495/748/41 500/749/41 499/750/41 +f 498/751/38 502/752/38 500/753/38 +f 496/754/39 499/755/39 501/756/39 +f 505/757/42 509/758/42 510/759/42 +f 503/760/41 508/761/41 507/762/41 +f 506/763/38 510/764/38 508/765/38 +f 504/766/39 507/767/39 509/768/39 +f 506/763/40 504/766/40 505/757/40 +f 498/751/40 496/754/40 497/745/40 +f 513/769/42 517/770/42 518/771/42 +f 511/772/41 516/773/41 515/774/41 +f 514/775/38 518/776/38 516/777/38 +f 512/778/39 515/779/39 517/780/39 +f 521/781/42 525/782/42 526/783/42 +f 519/784/41 524/785/41 523/786/41 +f 522/787/38 526/788/38 524/789/38 +f 520/790/39 523/791/39 525/792/39 +f 522/787/40 520/790/40 521/781/40 +f 514/775/40 512/778/40 513/769/40 +f 539/793/38 541/794/38 540/795/38 +f 531/796/38 533/797/38 532/798/38 +f 533/797/40 530/799/40 528/800/40 +f 531/796/37 527/801/37 529/802/37 +f 534/803/41 529/804/41 530/805/41 +f 532/798/42 528/806/42 527/807/42 +f 541/794/40 538/808/40 536/809/40 +f 539/793/37 535/810/37 537/811/37 +f 542/812/41 537/813/41 538/814/41 +f 540/795/42 536/815/42 535/816/42 +f 555/817/38 557/818/38 556/819/38 +f 547/820/38 549/821/38 548/822/38 +f 549/821/40 546/823/40 544/824/40 +f 547/820/37 543/825/37 545/826/37 +f 550/827/41 545/828/41 546/829/41 +f 548/822/42 544/830/42 543/831/42 +f 557/818/40 554/832/40 552/833/40 +f 555/817/37 551/834/37 553/835/37 +f 558/836/41 553/837/41 554/838/41 +f 556/819/42 552/839/42 551/840/42 +f 561/841/42 565/842/42 566/843/42 +f 559/844/41 564/845/41 563/846/41 +f 562/847/37 566/848/37 564/849/37 +f 560/850/40 563/851/40 565/852/40 +f 569/853/42 573/854/42 574/855/42 +f 567/856/41 572/857/41 571/858/41 +f 570/859/37 574/860/37 572/861/37 +f 568/862/40 571/863/40 573/864/40 +f 570/859/38 568/862/38 569/853/38 +f 562/847/38 560/850/38 561/841/38 +f 577/865/42 581/866/42 582/867/42 +f 575/868/41 580/869/41 579/870/41 +f 578/871/37 582/872/37 580/873/37 +f 576/874/40 579/875/40 581/876/40 +f 585/877/42 589/878/42 590/879/42 +f 583/880/41 588/881/41 587/882/41 +f 586/883/37 590/884/37 588/885/37 +f 584/886/40 587/887/40 589/888/40 +f 586/883/38 584/886/38 585/877/38 +f 578/871/38 576/874/38 577/865/38 +f 417/581/34 391/889/34 395/627/34 +f 383/579/34 381/890/34 376/580/34 +f 417/581/34 395/627/34 383/579/34 +f 375/584/35 376/580/35 380/633/35 +f 376/580/35 381/890/35 380/633/35 +f 380/633/35 379/582/35 375/584/35 +f 396/586/36 392/891/36 418/587/36 +f 418/587/36 375/584/36 384/585/36 +f 375/584/36 382/583/36 384/585/36 +f 385/588/37 405/598/37 403/589/37 +f 398/591/38 399/608/38 379/592/38 +f 411/594/38 415/892/38 395/595/38 +f 387/597/38 407/614/38 405/598/38 +f 400/599/39 397/625/39 377/600/39 +f 396/602/39 416/893/39 412/603/39 +f 406/605/39 408/610/39 388/606/39 +f 399/608/40 402/620/40 382/609/40 +f 408/610/40 416/893/40 396/602/40 +f 392/604/37 412/603/37 409/611/37 +f 381/613/40 401/617/40 400/599/40 +f 395/595/40 415/892/40 407/614/40 +f 410/615/37 411/594/37 391/596/37 +f 383/590/38 403/589/38 401/617/38 +f 389/612/38 409/611/38 413/618/38 +f 402/620/39 404/624/39 384/621/39 +f 414/622/39 410/615/39 390/616/39 +f 404/624/37 406/605/37 386/607/37 +f 397/625/40 398/591/40 378/593/40 +f 413/618/37 414/894/37 394/626/37 +f 395/627/41 387/895/41 385/628/41 +f 386/607/41 388/606/41 396/586/41 +f 393/629/41 394/896/41 390/630/41 +f 378/632/41 379/582/41 380/633/41 +f 417/581/42 376/580/42 375/584/42 +f 391/889/43 417/581/43 390/630/43 +f 417/581/43 418/587/43 390/630/43 +f 418/587/43 392/891/43 389/631/43 +f 431/635/39 434/654/39 433/636/39 +f 423/638/39 426/645/39 425/639/39 +f 425/639/37 426/645/37 422/641/37 +f 423/638/40 424/640/40 419/643/40 +f 426/645/41 423/638/41 421/646/41 +f 424/640/42 425/639/42 420/648/42 +f 433/636/37 434/654/37 430/650/37 +f 431/635/40 432/637/40 427/652/40 +f 434/654/41 431/635/41 429/655/41 +f 432/637/42 433/636/42 428/657/42 +f 437/659/42 436/668/42 441/660/42 +f 435/662/41 438/665/41 440/663/41 +f 438/665/40 437/659/40 442/666/40 +f 436/668/37 435/662/37 439/669/37 +f 445/671/42 444/680/42 449/672/42 +f 443/674/41 446/677/41 448/675/41 +f 446/677/40 445/671/40 450/678/40 +f 444/680/37 443/674/37 447/681/37 +f 446/677/39 443/674/39 444/680/39 +f 438/665/39 435/662/39 436/668/39 +f 453/683/42 454/691/42 452/684/42 +f 462/686/39 458/692/39 460/687/39 +f 461/688/44 460/687/44 459/689/44 +f 460/687/45 458/692/45 454/691/45 +f 458/692/46 462/686/46 452/684/46 +f 459/689/41 457/897/41 455/693/41 +f 462/686/47 461/688/47 456/690/47 +f 459/689/40 454/691/40 453/694/40 +f 456/690/37 455/898/37 451/696/37 +f 475/697/40 478/716/40 477/698/40 +f 467/700/40 470/707/40 469/701/40 +f 469/701/39 470/707/39 466/703/39 +f 467/700/38 468/702/38 463/705/38 +f 470/707/41 467/700/41 465/708/41 +f 468/702/42 469/701/42 464/710/42 +f 477/698/39 478/716/39 474/712/39 +f 475/697/38 476/699/38 471/714/38 +f 478/716/41 475/697/41 473/717/41 +f 476/699/42 477/698/42 472/719/42 +f 491/721/40 494/740/40 493/722/40 +f 483/724/40 486/731/40 485/725/40 +f 485/725/39 486/731/39 482/727/39 +f 483/724/38 484/726/38 479/729/38 +f 486/731/41 483/724/41 481/732/41 +f 484/726/42 485/725/42 480/734/42 +f 493/722/39 494/740/39 490/736/39 +f 491/721/38 492/723/38 487/738/38 +f 494/740/41 491/721/41 489/741/41 +f 492/723/42 493/722/42 488/743/42 +f 497/745/42 496/754/42 501/746/42 +f 495/748/41 498/751/41 500/749/41 +f 498/751/38 497/745/38 502/752/38 +f 496/754/39 495/748/39 499/755/39 +f 505/757/42 504/766/42 509/758/42 +f 503/760/41 506/763/41 508/761/41 +f 506/763/38 505/757/38 510/764/38 +f 504/766/39 503/760/39 507/767/39 +f 506/763/40 503/760/40 504/766/40 +f 498/751/40 495/748/40 496/754/40 +f 513/769/42 512/778/42 517/770/42 +f 511/772/41 514/775/41 516/773/41 +f 514/775/38 513/769/38 518/776/38 +f 512/778/39 511/772/39 515/779/39 +f 521/781/42 520/790/42 525/782/42 +f 519/784/41 522/787/41 524/785/41 +f 522/787/38 521/781/38 526/788/38 +f 520/790/39 519/784/39 523/791/39 +f 522/787/40 519/784/40 520/790/40 +f 514/775/40 511/772/40 512/778/40 +f 539/793/38 542/812/38 541/794/38 +f 531/796/38 534/803/38 533/797/38 +f 533/797/40 534/803/40 530/799/40 +f 531/796/37 532/798/37 527/801/37 +f 534/803/41 531/796/41 529/804/41 +f 532/798/42 533/797/42 528/806/42 +f 541/794/40 542/812/40 538/808/40 +f 539/793/37 540/795/37 535/810/37 +f 542/812/41 539/793/41 537/813/41 +f 540/795/42 541/794/42 536/815/42 +f 555/817/38 558/836/38 557/818/38 +f 547/820/38 550/827/38 549/821/38 +f 549/821/40 550/827/40 546/823/40 +f 547/820/37 548/822/37 543/825/37 +f 550/827/41 547/820/41 545/828/41 +f 548/822/42 549/821/42 544/830/42 +f 557/818/40 558/836/40 554/832/40 +f 555/817/37 556/819/37 551/834/37 +f 558/836/41 555/817/41 553/837/41 +f 556/819/42 557/818/42 552/839/42 +f 561/841/42 560/850/42 565/842/42 +f 559/844/41 562/847/41 564/845/41 +f 562/847/37 561/841/37 566/848/37 +f 560/850/40 559/844/40 563/851/40 +f 569/853/42 568/862/42 573/854/42 +f 567/856/41 570/859/41 572/857/41 +f 570/859/37 569/853/37 574/860/37 +f 568/862/40 567/856/40 571/863/40 +f 570/859/38 567/856/38 568/862/38 +f 562/847/38 559/844/38 560/850/38 +f 577/865/42 576/874/42 581/866/42 +f 575/868/41 578/871/41 580/869/41 +f 578/871/37 577/865/37 582/872/37 +f 576/874/40 575/868/40 579/875/40 +f 585/877/42 584/886/42 589/878/42 +f 583/880/41 586/883/41 588/881/41 +f 586/883/37 585/877/37 590/884/37 +f 584/886/40 583/880/40 587/887/40 +f 586/883/38 583/880/38 584/886/38 +f 578/871/38 575/868/38 576/874/38 o Body v -4.500008 0.000002 -2.500000 v 4.499992 -0.000002 -2.500000 @@ -2822,320 +2972,312 @@ vn 0.0000 -0.9239 0.3827 vn -0.7071 -0.1830 0.6830 vn 0.7071 0.1830 -0.6830 s off -f 545/851/32 571/852/32 583/853/32 -f 543/854/32 576/855/32 581/856/32 -f 543/857/32 567/858/32 555/859/32 -f 544/860/32 572/861/32 552/862/32 -f 544/863/32 568/864/32 579/865/32 -f 545/866/32 564/867/32 560/868/32 -f 547/869/33 549/870/33 548/871/33 -f 552/872/34 553/873/34 551/874/34 -f 555/875/35 558/876/35 556/877/35 -f 560/878/36 561/879/36 559/880/36 -f 561/879/34 563/881/34 559/880/34 -f 560/878/33 566/882/33 562/883/33 -f 555/875/34 569/884/34 557/885/34 -f 558/876/33 568/864/33 556/877/33 -f 552/872/36 574/886/36 554/887/36 -f 553/873/35 571/852/35 551/874/35 -f 549/870/36 576/855/36 548/871/36 -f 547/888/35 578/889/35 550/890/35 -f 577/891/33 581/856/33 576/855/33 -f 572/861/34 580/892/34 574/886/34 -f 575/893/33 586/894/33 578/889/33 -f 573/895/34 583/853/34 571/852/34 -f 565/896/36 585/897/36 563/881/36 -f 564/867/36 584/898/36 566/882/36 -f 567/858/35 582/899/35 569/884/35 -f 580/892/35 568/864/35 570/900/35 -f 588/901/32 589/902/32 587/903/32 -f 593/904/37 591/905/37 592/906/37 -f 546/907/32 563/881/32 585/897/32 -f 546/908/32 575/893/32 547/909/32 -f 548/910/38 588/901/38 587/903/38 -f 555/911/39 556/912/39 590/913/39 -f 552/914/40 551/915/40 589/902/40 -f 560/916/41 559/917/41 587/903/41 -f 596/918/37 573/895/37 553/919/37 -f 566/882/37 596/920/37 562/921/37 -f 578/889/37 595/922/37 550/923/37 -f 595/924/37 565/896/37 561/925/37 -f 597/926/37 577/891/37 549/927/37 -f 574/886/37 598/928/37 554/929/37 -f 598/930/37 570/900/37 558/931/37 -f 569/884/37 597/932/37 557/933/37 -f 592/906/42 595/934/42 561/935/42 -f 593/904/43 596/936/43 553/937/43 -f 591/905/44 594/938/44 558/939/44 -f 591/905/45 597/940/45 549/941/45 -f 599/942/32 602/943/32 600/944/32 -f 601/945/35 604/946/35 602/943/35 -f 603/947/46 606/948/46 604/946/46 -f 599/949/33 603/947/33 601/945/33 -f 604/946/34 600/950/34 602/943/34 -f 607/951/35 610/952/35 608/953/35 -f 625/954/35 623/955/35 624/956/35 -f 617/957/35 615/958/35 616/959/35 -f 611/960/34 615/958/34 613/961/34 -f 613/962/37 618/963/37 614/964/37 -f 612/965/32 616/959/32 611/966/32 -f 614/967/33 617/957/33 612/968/33 -f 619/969/34 623/955/34 621/970/34 -f 621/971/37 626/972/37 622/973/37 -f 620/974/32 624/956/32 619/975/32 -f 622/976/33 625/954/33 620/977/33 -f 641/978/35 639/979/35 640/980/35 -f 633/981/35 631/982/35 632/983/35 -f 627/984/34 631/982/34 629/985/34 -f 629/986/37 634/987/37 630/988/37 -f 628/989/32 632/983/32 627/990/32 -f 630/991/33 633/981/33 628/992/33 -f 635/993/34 639/979/34 637/994/34 -f 637/995/37 642/996/37 638/997/37 -f 636/998/32 640/980/32 635/999/32 -f 638/1000/33 641/978/33 636/1001/33 -f 645/1002/47 650/1003/47 646/1004/47 -f 648/1005/32 643/1006/32 644/1007/32 -f 650/1003/48 647/1008/48 648/1005/48 -f 652/1009/34 646/1010/34 650/1003/34 -f 649/1011/33 645/1012/33 651/1013/33 -f 662/1014/33 660/1015/33 658/1016/33 -f 657/1017/34 659/1018/34 661/1019/34 -f 661/1019/36 663/1020/36 653/1021/36 -f 654/1022/36 666/1023/36 662/1014/36 -f 665/1024/33 670/1025/33 666/1023/33 -f 664/1026/34 667/1027/34 663/1020/34 -f 668/1028/32 664/1026/32 661/1029/32 -f 653/1030/37 667/1031/37 669/1032/37 -f 693/1033/49 691/1034/49 689/1035/49 -f 684/1036/50 685/1037/50 686/1038/50 -f 677/1039/50 678/1040/50 679/1041/50 -f 701/1042/49 696/1043/49 697/1044/49 -f 704/1045/50 705/1046/50 703/1047/50 -f 707/1048/49 709/1049/49 708/1050/49 -f 710/1051/51 705/1052/51 706/1053/51 -f 708/1050/52 704/1045/52 703/1047/52 -f 704/1054/53 710/1051/53 706/1055/53 -f 707/1048/54 703/1056/54 705/1057/54 -f 545/851/32 551/1058/32 571/852/32 -f 543/854/32 548/1059/32 576/855/32 -f 543/857/32 581/856/32 567/858/32 -f 544/860/32 579/865/32 572/861/32 -f 544/863/32 556/1060/32 568/864/32 -f 545/866/32 583/853/32 564/867/32 -f 547/869/33 550/1061/33 549/870/33 -f 552/872/34 554/887/34 553/873/34 -f 555/875/35 557/885/35 558/876/35 -f 560/878/36 562/883/36 561/879/36 -f 561/879/34 565/896/34 563/881/34 -f 560/878/33 564/867/33 566/882/33 -f 555/875/34 567/858/34 569/884/34 -f 558/876/33 570/900/33 568/864/33 -f 552/872/36 572/861/36 574/886/36 -f 553/873/35 573/895/35 571/852/35 -f 549/870/36 577/891/36 576/855/36 -f 547/888/35 575/893/35 578/889/35 -f 577/891/33 582/899/33 581/856/33 -f 572/861/34 579/865/34 580/892/34 -f 575/893/33 585/897/33 586/894/33 -f 573/895/34 584/898/34 583/853/34 -f 565/896/36 586/894/36 585/897/36 -f 564/867/36 583/853/36 584/898/36 -f 567/858/35 581/856/35 582/899/35 -f 580/892/35 579/865/35 568/864/35 -f 588/901/32 590/913/32 589/902/32 -f 593/904/37 594/938/37 591/905/37 -f 546/907/32 559/1062/32 563/881/32 -f 546/908/32 585/897/32 575/893/32 -f 587/903/38 546/1063/38 547/1064/38 -f 548/910/38 543/1065/38 588/901/38 -f 587/903/38 547/1064/38 548/910/38 -f 556/912/39 544/1066/39 590/913/39 -f 590/913/39 588/901/39 555/911/39 -f 588/901/39 543/1067/39 555/911/39 -f 551/915/40 545/1068/40 589/902/40 -f 589/902/40 590/913/40 552/914/40 -f 590/913/40 544/1069/40 552/914/40 -f 559/917/41 546/1070/41 587/903/41 -f 587/903/41 589/902/41 560/916/41 -f 589/902/41 545/1071/41 560/916/41 -f 596/918/37 584/898/37 573/895/37 -f 566/882/37 584/898/37 596/920/37 -f 578/889/37 586/894/37 595/922/37 -f 595/924/37 586/894/37 565/896/37 -f 597/926/37 582/899/37 577/891/37 -f 574/886/37 580/892/37 598/928/37 -f 598/930/37 580/892/37 570/900/37 -f 569/884/37 582/899/37 597/932/37 -f 561/935/42 562/1072/42 592/906/42 -f 562/1072/42 596/1073/42 593/904/42 -f 592/906/42 562/1072/42 593/904/42 -f 553/937/43 554/1074/43 593/904/43 -f 554/1074/43 598/1075/43 594/938/43 -f 593/904/43 554/1074/43 594/938/43 -f 598/1076/44 558/939/44 594/938/44 -f 558/939/44 557/1077/44 591/905/44 -f 557/1077/44 597/1078/44 591/905/44 -f 549/941/45 550/1079/45 591/905/45 -f 550/1079/45 595/1080/45 592/906/45 -f 591/905/45 550/1079/45 592/906/45 -f 599/942/32 601/945/32 602/943/32 -f 601/945/35 603/947/35 604/946/35 -f 603/947/46 605/1081/46 606/948/46 -f 599/949/33 605/1082/33 603/947/33 -f 604/946/34 606/1083/34 600/950/34 -f 607/951/35 609/1084/35 610/952/35 -f 625/954/35 626/972/35 623/955/35 -f 617/957/35 618/963/35 615/958/35 -f 611/960/34 616/959/34 615/958/34 -f 613/962/37 615/958/37 618/963/37 -f 612/965/32 617/957/32 616/959/32 -f 614/967/33 618/963/33 617/957/33 -f 619/969/34 624/956/34 623/955/34 -f 621/971/37 623/955/37 626/972/37 -f 620/974/32 625/954/32 624/956/32 -f 622/976/33 626/972/33 625/954/33 -f 641/978/35 642/996/35 639/979/35 -f 633/981/35 634/987/35 631/982/35 -f 627/984/34 632/983/34 631/982/34 -f 629/986/37 631/982/37 634/987/37 -f 628/989/32 633/981/32 632/983/32 -f 630/991/33 634/987/33 633/981/33 -f 635/993/34 640/980/34 639/979/34 -f 637/995/37 639/979/37 642/996/37 -f 636/998/32 641/978/32 640/980/32 -f 638/1000/33 642/996/33 641/978/33 -f 645/1002/47 649/1011/47 650/1003/47 -f 648/1005/32 647/1008/32 643/1006/32 -f 650/1003/48 649/1011/48 647/1008/48 -f 648/1085/34 644/1086/34 650/1003/34 -f 644/1086/34 652/1009/34 650/1003/34 -f 651/1013/33 643/1087/33 649/1011/33 -f 643/1087/33 647/1088/33 649/1011/33 -f 658/1016/33 656/1089/33 654/1022/33 -f 654/1022/33 662/1014/33 658/1016/33 -f 661/1019/34 653/1021/34 655/1090/34 -f 655/1090/34 657/1017/34 661/1019/34 -f 661/1019/36 664/1026/36 663/1020/36 -f 654/1022/36 665/1024/36 666/1023/36 -f 665/1024/33 669/1091/33 670/1025/33 -f 664/1026/34 668/1028/34 667/1027/34 -f 661/1029/32 662/1092/32 668/1028/32 -f 662/1092/32 666/1023/32 670/1025/32 -f 668/1028/32 662/1092/32 670/1025/32 -f 669/1032/37 665/1093/37 654/1094/37 -f 653/1030/37 663/1095/37 667/1031/37 -f 669/1032/37 654/1094/37 653/1030/37 -f 689/1035/49 687/1096/49 688/1097/49 -f 688/1097/49 694/1098/49 689/1035/49 -f 694/1098/49 693/1033/49 689/1035/49 -f 693/1033/49 692/1099/49 691/1034/49 -f 691/1034/49 690/1100/49 689/1035/49 -f 686/1038/50 671/1101/50 682/1102/50 -f 671/1101/50 680/1103/50 682/1102/50 -f 680/1103/50 681/1104/50 682/1102/50 -f 682/1102/50 683/1105/50 686/1038/50 -f 683/1105/50 684/1036/50 686/1038/50 -f 679/1041/50 672/1106/50 675/1107/50 -f 672/1106/50 673/1108/50 675/1107/50 -f 673/1108/50 674/1109/50 675/1107/50 -f 675/1107/50 676/1110/50 679/1041/50 -f 676/1110/50 677/1039/50 679/1041/50 -f 697/1044/49 698/1111/49 700/1112/49 -f 700/1112/49 702/1113/49 697/1044/49 -f 702/1113/49 701/1042/49 697/1044/49 -f 701/1042/49 695/1114/49 696/1043/49 -f 696/1043/49 699/1115/49 697/1044/49 -f 704/1045/50 706/1116/50 705/1046/50 -f 707/1048/49 710/1051/49 709/1049/49 -f 710/1051/51 707/1048/51 705/1052/51 -f 708/1050/52 709/1049/52 704/1045/52 -f 704/1054/53 709/1049/53 710/1051/53 -f 707/1048/54 708/1050/54 703/1056/54 +f 593/899/48 619/900/48 631/901/48 +f 591/902/48 624/903/48 629/904/48 +f 591/905/48 615/906/48 603/907/48 +f 592/908/48 620/909/48 600/910/48 +f 592/911/48 616/912/48 627/913/48 +f 593/914/48 612/915/48 608/916/48 +f 595/917/49 597/918/49 596/919/49 +f 600/920/50 601/921/50 599/922/50 +f 603/923/51 606/924/51 604/925/51 +f 608/926/52 609/927/52 607/928/52 +f 609/927/50 611/929/50 607/928/50 +f 608/926/49 614/930/49 610/931/49 +f 603/923/50 617/932/50 605/933/50 +f 606/924/49 616/912/49 604/925/49 +f 600/920/52 622/934/52 602/935/52 +f 601/921/51 619/900/51 599/922/51 +f 597/918/52 624/903/52 596/919/52 +f 595/936/51 626/937/51 598/938/51 +f 625/939/49 629/904/49 624/903/49 +f 620/909/50 628/940/50 622/934/50 +f 623/941/49 634/942/49 626/937/49 +f 621/943/50 631/901/50 619/900/50 +f 613/944/52 633/945/52 611/929/52 +f 612/915/52 632/946/52 614/930/52 +f 615/906/51 630/947/51 617/932/51 +f 628/940/51 616/912/51 618/948/51 +f 636/949/48 637/950/48 635/951/48 +f 641/952/53 639/953/53 640/954/53 +f 594/955/48 611/929/48 633/945/48 +f 594/956/48 623/941/48 595/957/48 +f 596/958/54 636/949/54 635/951/54 +f 603/959/55 604/960/55 638/961/55 +f 600/962/56 599/963/56 637/950/56 +f 608/964/57 607/965/57 635/951/57 +f 644/966/53 621/943/53 601/967/53 +f 614/930/53 644/968/53 610/969/53 +f 626/937/53 643/970/53 598/971/53 +f 643/972/53 613/944/53 609/973/53 +f 645/974/53 625/939/53 597/975/53 +f 622/934/53 646/976/53 602/977/53 +f 646/978/53 618/948/53 606/979/53 +f 617/932/53 645/980/53 605/981/53 +f 640/954/58 643/982/58 609/983/58 +f 641/952/59 644/984/59 601/985/59 +f 639/953/60 642/986/60 606/987/60 +f 639/953/61 645/988/61 597/989/61 +f 647/990/48 650/991/48 648/992/48 +f 649/993/51 652/994/51 650/991/51 +f 651/995/62 654/996/62 652/994/62 +f 647/997/49 651/995/49 649/993/49 +f 652/994/50 648/998/50 650/991/50 +f 655/999/51 658/1000/51 656/1001/51 +f 673/1002/51 671/1003/51 672/1004/51 +f 665/1005/51 663/1006/51 664/1007/51 +f 659/1008/50 663/1006/50 661/1009/50 +f 661/1010/53 666/1011/53 662/1012/53 +f 660/1013/48 664/1007/48 659/1014/48 +f 662/1015/49 665/1005/49 660/1016/49 +f 667/1017/50 671/1003/50 669/1018/50 +f 669/1019/53 674/1020/53 670/1021/53 +f 668/1022/48 672/1004/48 667/1023/48 +f 670/1024/49 673/1002/49 668/1025/49 +f 689/1026/51 687/1027/51 688/1028/51 +f 681/1029/51 679/1030/51 680/1031/51 +f 675/1032/50 679/1030/50 677/1033/50 +f 677/1034/53 682/1035/53 678/1036/53 +f 676/1037/48 680/1031/48 675/1038/48 +f 678/1039/49 681/1029/49 676/1040/49 +f 683/1041/50 687/1027/50 685/1042/50 +f 685/1043/53 690/1044/53 686/1045/53 +f 684/1046/48 688/1028/48 683/1047/48 +f 686/1048/49 689/1026/49 684/1049/49 +f 693/1050/63 698/1051/63 694/1052/63 +f 696/1053/48 691/1054/48 692/1055/48 +f 698/1051/64 695/1056/64 696/1053/64 +f 700/1057/50 694/1058/50 698/1051/50 +f 697/1059/49 693/1060/49 699/1061/49 +f 710/1062/49 708/1063/49 706/1064/49 +f 705/1065/50 707/1066/50 709/1067/50 +f 709/1067/52 711/1068/52 701/1069/52 +f 702/1070/52 714/1071/52 710/1062/52 +f 713/1072/49 718/1073/49 714/1071/49 +f 712/1074/50 715/1075/50 711/1068/50 +f 716/1076/48 712/1074/48 709/1077/48 +f 701/1078/53 715/1079/53 717/1080/53 +f 741/1081/65 739/1082/65 737/1083/65 +f 732/1084/66 733/1085/66 734/1086/66 +f 725/1087/66 726/1088/66 727/1089/66 +f 749/1090/65 744/1091/65 745/1092/65 +f 752/1093/66 753/1094/66 751/1095/66 +f 755/1096/65 757/1097/65 756/1098/65 +f 758/1099/67 753/1100/67 754/1101/67 +f 756/1098/68 752/1093/68 751/1095/68 +f 752/1102/69 758/1099/69 754/1103/69 +f 755/1096/70 751/1104/70 753/1105/70 +f 593/899/48 599/1106/48 619/900/48 +f 591/902/48 596/1107/48 624/903/48 +f 591/905/48 629/904/48 615/906/48 +f 592/908/48 627/913/48 620/909/48 +f 592/911/48 604/1108/48 616/912/48 +f 593/914/48 631/901/48 612/915/48 +f 595/917/49 598/1109/49 597/918/49 +f 600/920/50 602/935/50 601/921/50 +f 603/923/51 605/933/51 606/924/51 +f 608/926/52 610/931/52 609/927/52 +f 609/927/50 613/944/50 611/929/50 +f 608/926/49 612/915/49 614/930/49 +f 603/923/50 615/906/50 617/932/50 +f 606/924/49 618/948/49 616/912/49 +f 600/920/52 620/909/52 622/934/52 +f 601/921/51 621/943/51 619/900/51 +f 597/918/52 625/939/52 624/903/52 +f 595/936/51 623/941/51 626/937/51 +f 625/939/49 630/947/49 629/904/49 +f 620/909/50 627/913/50 628/940/50 +f 623/941/49 633/945/49 634/942/49 +f 621/943/50 632/946/50 631/901/50 +f 613/944/52 634/942/52 633/945/52 +f 612/915/52 631/901/52 632/946/52 +f 615/906/51 629/904/51 630/947/51 +f 628/940/51 627/913/51 616/912/51 +f 636/949/48 638/961/48 637/950/48 +f 641/952/53 642/986/53 639/953/53 +f 594/955/48 607/1110/48 611/929/48 +f 594/956/48 633/945/48 623/941/48 +f 635/951/54 594/1111/54 595/1112/54 +f 596/958/54 591/1113/54 636/949/54 +f 635/951/54 595/1112/54 596/958/54 +f 604/960/55 592/1114/55 638/961/55 +f 638/961/55 636/949/55 603/959/55 +f 636/949/55 591/1115/55 603/959/55 +f 599/963/56 593/1116/56 637/950/56 +f 637/950/56 638/961/56 600/962/56 +f 638/961/56 592/1117/56 600/962/56 +f 607/965/57 594/1118/57 635/951/57 +f 635/951/57 637/950/57 608/964/57 +f 637/950/57 593/1119/57 608/964/57 +f 644/966/53 632/946/53 621/943/53 +f 614/930/53 632/946/53 644/968/53 +f 626/937/53 634/942/53 643/970/53 +f 643/972/53 634/942/53 613/944/53 +f 645/974/53 630/947/53 625/939/53 +f 622/934/53 628/940/53 646/976/53 +f 646/978/53 628/940/53 618/948/53 +f 617/932/53 630/947/53 645/980/53 +f 609/983/58 610/1120/58 640/954/58 +f 610/1120/58 644/1121/58 641/952/58 +f 640/954/58 610/1120/58 641/952/58 +f 601/985/59 602/1122/59 641/952/59 +f 602/1122/59 646/1123/59 642/986/59 +f 641/952/59 602/1122/59 642/986/59 +f 646/1124/60 606/987/60 642/986/60 +f 606/987/60 605/1125/60 639/953/60 +f 605/1125/60 645/1126/60 639/953/60 +f 597/989/61 598/1127/61 639/953/61 +f 598/1127/61 643/1128/61 640/954/61 +f 639/953/61 598/1127/61 640/954/61 +f 647/990/48 649/993/48 650/991/48 +f 649/993/51 651/995/51 652/994/51 +f 651/995/62 653/1129/62 654/996/62 +f 647/997/49 653/1130/49 651/995/49 +f 652/994/50 654/1131/50 648/998/50 +f 655/999/51 657/1132/51 658/1000/51 +f 673/1002/51 674/1020/51 671/1003/51 +f 665/1005/51 666/1011/51 663/1006/51 +f 659/1008/50 664/1007/50 663/1006/50 +f 661/1010/53 663/1006/53 666/1011/53 +f 660/1013/48 665/1005/48 664/1007/48 +f 662/1015/49 666/1011/49 665/1005/49 +f 667/1017/50 672/1004/50 671/1003/50 +f 669/1019/53 671/1003/53 674/1020/53 +f 668/1022/48 673/1002/48 672/1004/48 +f 670/1024/49 674/1020/49 673/1002/49 +f 689/1026/51 690/1044/51 687/1027/51 +f 681/1029/51 682/1035/51 679/1030/51 +f 675/1032/50 680/1031/50 679/1030/50 +f 677/1034/53 679/1030/53 682/1035/53 +f 676/1037/48 681/1029/48 680/1031/48 +f 678/1039/49 682/1035/49 681/1029/49 +f 683/1041/50 688/1028/50 687/1027/50 +f 685/1043/53 687/1027/53 690/1044/53 +f 684/1046/48 689/1026/48 688/1028/48 +f 686/1048/49 690/1044/49 689/1026/49 +f 693/1050/63 697/1059/63 698/1051/63 +f 696/1053/48 695/1056/48 691/1054/48 +f 698/1051/64 697/1059/64 695/1056/64 +f 696/1133/50 692/1134/50 698/1051/50 +f 692/1134/50 700/1057/50 698/1051/50 +f 699/1061/49 691/1135/49 697/1059/49 +f 691/1135/49 695/1136/49 697/1059/49 +f 706/1064/49 704/1137/49 702/1070/49 +f 702/1070/49 710/1062/49 706/1064/49 +f 709/1067/50 701/1069/50 703/1138/50 +f 703/1138/50 705/1065/50 709/1067/50 +f 709/1067/52 712/1074/52 711/1068/52 +f 702/1070/52 713/1072/52 714/1071/52 +f 713/1072/49 717/1139/49 718/1073/49 +f 712/1074/50 716/1076/50 715/1075/50 +f 709/1077/48 710/1140/48 716/1076/48 +f 710/1140/48 714/1071/48 718/1073/48 +f 716/1076/48 710/1140/48 718/1073/48 +f 717/1080/53 713/1141/53 702/1142/53 +f 701/1078/53 711/1143/53 715/1079/53 +f 717/1080/53 702/1142/53 701/1078/53 +f 737/1083/65 735/1144/65 736/1145/65 +f 736/1145/65 742/1146/65 737/1083/65 +f 742/1146/65 741/1081/65 737/1083/65 +f 741/1081/65 740/1147/65 739/1082/65 +f 739/1082/65 738/1148/65 737/1083/65 +f 734/1086/66 719/1149/66 730/1150/66 +f 719/1149/66 728/1151/66 730/1150/66 +f 728/1151/66 729/1152/66 730/1150/66 +f 730/1150/66 731/1153/66 734/1086/66 +f 731/1153/66 732/1084/66 734/1086/66 +f 727/1089/66 720/1154/66 723/1155/66 +f 720/1154/66 721/1156/66 723/1155/66 +f 721/1156/66 722/1157/66 723/1155/66 +f 723/1155/66 724/1158/66 727/1089/66 +f 724/1158/66 725/1087/66 727/1089/66 +f 745/1092/65 746/1159/65 748/1160/65 +f 748/1160/65 750/1161/65 745/1092/65 +f 750/1161/65 749/1090/65 745/1092/65 +f 749/1090/65 743/1162/65 744/1091/65 +f 744/1091/65 747/1163/65 745/1092/65 +f 752/1093/66 754/1164/66 753/1094/66 +f 755/1096/65 758/1099/65 757/1097/65 +f 758/1099/67 755/1096/67 753/1100/67 +f 756/1098/68 757/1097/68 752/1093/68 +f 752/1102/69 757/1097/69 758/1099/69 +f 755/1096/70 756/1098/70 751/1104/70 s 1 -f 745/1117/52 748/1118/55 747/1119/55 -f 726/1120/56 727/1121/33 725/1122/56 -f 748/1118/55 749/1123/34 747/1119/55 -f 724/1124/51 725/1122/56 723/1125/51 -f 753/1126/57 784/1127/58 782/1128/57 -f 765/1129/59 781/1130/60 778/1131/59 -f 763/1132/61 781/1133/60 764/1134/60 -f 768/1135/58 783/1136/62 784/1137/58 -f 753/1138/57 780/1139/63 762/1140/63 -f 766/1141/64 783/1142/62 767/1143/62 -f 763/1132/61 780/1144/63 779/1145/61 -f 760/1146/62 776/1147/58 761/1148/58 -f 756/1149/61 772/1150/60 757/1151/60 -f 754/1152/57 769/1153/63 755/1154/63 -f 758/1155/59 774/1156/64 759/1157/64 -f 758/1155/59 772/1158/60 773/1159/59 -f 754/1160/57 776/1161/58 770/1162/57 -f 759/1157/64 775/1163/62 760/1146/62 -f 765/1129/59 777/1164/64 766/1141/64 -f 755/1154/63 771/1165/61 756/1149/61 -f 712/1166/65 713/1167/42 711/1168/65 -f 714/1169/42 715/1170/36 713/1167/42 -f 716/1171/36 717/1172/41 715/1170/36 -f 718/1173/41 719/1174/66 717/1172/41 -f 727/1121/33 730/1175/67 729/1176/67 -f 744/1177/67 745/1117/52 743/1178/67 -f 730/1175/67 731/1179/52 729/1176/67 -f 741/1180/33 744/1177/67 743/1178/67 -f 731/1179/52 734/1181/55 733/1182/55 -f 752/1183/68 722/1184/51 751/1185/68 -f 739/1186/56 742/1187/33 741/1180/33 -f 734/1181/55 735/1188/34 733/1182/55 -f 722/1189/51 740/1190/56 739/1186/56 -f 736/1191/34 737/1192/68 735/1188/34 -f 750/1193/34 751/1185/68 749/1123/34 -f 738/1194/68 723/1195/51 737/1192/68 -f 745/1117/52 746/1196/52 748/1118/55 -f 726/1120/56 728/1197/33 727/1121/33 -f 748/1118/55 750/1193/34 749/1123/34 -f 724/1124/51 726/1120/56 725/1122/56 -f 753/1126/57 768/1135/58 784/1127/58 -f 765/1129/59 764/1134/60 781/1130/60 -f 763/1132/61 779/1198/61 781/1133/60 -f 768/1135/58 767/1143/62 783/1136/62 -f 753/1138/57 782/1199/57 780/1139/63 -f 766/1141/64 777/1200/64 783/1142/62 -f 763/1132/61 762/1140/63 780/1144/63 -f 760/1146/62 775/1201/62 776/1147/58 -f 756/1149/61 771/1202/61 772/1150/60 -f 754/1152/57 770/1203/57 769/1153/63 -f 758/1155/59 773/1204/59 774/1156/64 -f 758/1155/59 757/1151/60 772/1158/60 -f 754/1160/57 761/1148/58 776/1161/58 -f 759/1157/64 774/1205/64 775/1163/62 -f 765/1129/59 778/1206/59 777/1164/64 -f 755/1154/63 769/1207/63 771/1165/61 -f 712/1166/65 714/1169/42 713/1167/42 -f 714/1169/42 716/1171/36 715/1170/36 -f 716/1171/36 718/1173/41 717/1172/41 -f 718/1173/41 720/1208/66 719/1174/66 -f 727/1121/33 728/1197/33 730/1175/67 -f 744/1177/67 746/1196/52 745/1117/52 -f 730/1175/67 732/1209/52 731/1179/52 -f 741/1180/33 742/1187/33 744/1177/67 -f 731/1179/52 732/1209/52 734/1181/55 -f 752/1183/68 721/1210/51 722/1184/51 -f 739/1186/56 740/1190/56 742/1187/33 -f 734/1181/55 736/1191/34 735/1188/34 -f 722/1189/51 721/1211/51 740/1190/56 -f 736/1191/34 738/1194/68 737/1192/68 -f 750/1193/34 752/1183/68 751/1185/68 -f 738/1194/68 724/1212/51 723/1195/51 +f 793/1165/68 796/1166/71 795/1167/71 +f 774/1168/72 775/1169/49 773/1170/72 +f 796/1166/71 797/1171/50 795/1167/71 +f 772/1172/67 773/1170/72 771/1173/67 +f 801/1174/73 832/1175/74 830/1176/73 +f 813/1177/75 829/1178/76 826/1179/75 +f 811/1180/77 829/1181/76 812/1182/76 +f 816/1183/74 831/1184/78 832/1185/74 +f 801/1186/73 828/1187/79 810/1188/79 +f 814/1189/80 831/1190/78 815/1191/78 +f 811/1180/77 828/1192/79 827/1193/77 +f 808/1194/78 824/1195/74 809/1196/74 +f 804/1197/77 820/1198/76 805/1199/76 +f 802/1200/73 817/1201/79 803/1202/79 +f 806/1203/75 822/1204/80 807/1205/80 +f 806/1203/75 820/1206/76 821/1207/75 +f 802/1208/73 824/1209/74 818/1210/73 +f 807/1205/80 823/1211/78 808/1194/78 +f 813/1177/75 825/1212/80 814/1189/80 +f 803/1202/79 819/1213/77 804/1197/77 +f 760/1214/81 761/1215/58 759/1216/81 +f 762/1217/58 763/1218/52 761/1215/58 +f 764/1219/52 765/1220/57 763/1218/52 +f 766/1221/57 767/1222/82 765/1220/57 +f 775/1169/49 778/1223/83 777/1224/83 +f 792/1225/83 793/1165/68 791/1226/83 +f 778/1223/83 779/1227/68 777/1224/83 +f 789/1228/49 792/1225/83 791/1226/83 +f 779/1227/68 782/1229/71 781/1230/71 +f 800/1231/84 770/1232/67 799/1233/84 +f 787/1234/72 790/1235/49 789/1228/49 +f 782/1229/71 783/1236/50 781/1230/71 +f 770/1237/67 788/1238/72 787/1234/72 +f 784/1239/50 785/1240/84 783/1236/50 +f 798/1241/50 799/1233/84 797/1171/50 +f 786/1242/84 771/1243/67 785/1240/84 +f 793/1165/68 794/1244/68 796/1166/71 +f 774/1168/72 776/1245/49 775/1169/49 +f 796/1166/71 798/1241/50 797/1171/50 +f 772/1172/67 774/1168/72 773/1170/72 +f 801/1174/73 816/1183/74 832/1175/74 +f 813/1177/75 812/1182/76 829/1178/76 +f 811/1180/77 827/1246/77 829/1181/76 +f 816/1183/74 815/1191/78 831/1184/78 +f 801/1186/73 830/1247/73 828/1187/79 +f 814/1189/80 825/1248/80 831/1190/78 +f 811/1180/77 810/1188/79 828/1192/79 +f 808/1194/78 823/1249/78 824/1195/74 +f 804/1197/77 819/1250/77 820/1198/76 +f 802/1200/73 818/1251/73 817/1201/79 +f 806/1203/75 821/1252/75 822/1204/80 +f 806/1203/75 805/1199/76 820/1206/76 +f 802/1208/73 809/1196/74 824/1209/74 +f 807/1205/80 822/1253/80 823/1211/78 +f 813/1177/75 826/1254/75 825/1212/80 +f 803/1202/79 817/1255/79 819/1213/77 +f 760/1214/81 762/1217/58 761/1215/58 +f 762/1217/58 764/1219/52 763/1218/52 +f 764/1219/52 766/1221/57 765/1220/57 +f 766/1221/57 768/1256/82 767/1222/82 +f 775/1169/49 776/1245/49 778/1223/83 +f 792/1225/83 794/1244/68 793/1165/68 +f 778/1223/83 780/1257/68 779/1227/68 +f 789/1228/49 790/1235/49 792/1225/83 +f 779/1227/68 780/1257/68 782/1229/71 +f 800/1231/84 769/1258/67 770/1232/67 +f 787/1234/72 788/1238/72 790/1235/49 +f 782/1229/71 784/1239/50 783/1236/50 +f 770/1237/67 769/1259/67 788/1238/72 +f 784/1239/50 786/1242/84 785/1240/84 +f 798/1241/50 800/1231/84 799/1233/84 +f 786/1242/84 772/1260/67 771/1243/67 o LeftLeg -v 5.000000 24.499998 3.000000 -v 5.000000 24.499998 -3.000000 -v -1.000000 24.500000 3.000000 -v -1.000000 24.500000 -3.000000 -v 4.000000 24.499998 -4.000000 -v 0.000000 24.500000 -4.000000 v 3.999996 10.999999 -2.000000 v 3.999996 10.999999 2.000000 -v -0.000001 21.500000 -4.000000 -v 3.999999 21.499998 -4.000000 v 4.499996 11.999998 2.000000 v 4.499996 11.999998 -2.000000 v 4.999996 11.999998 -2.000000 @@ -3358,19 +3500,11 @@ vt 0.428571 0.796296 vt 0.428571 0.944444 vt 0.392857 0.759259 vt 0.250000 0.796296 -vt 0.142857 0.407407 -vt -0.000000 0.425926 -vt -0.000000 0.407407 -vt 0.392857 0.407407 -vt 0.250000 0.425926 -vt 0.250000 0.407407 -vt 0.642857 0.407407 -vt 0.500000 0.425926 -vt 0.500000 0.407407 vt 0.732143 0.425926 vt 0.750000 0.740741 vt 0.732143 0.740741 vt 0.482143 0.740741 +vt 0.500000 0.425926 vt 0.500000 0.740741 vt 0.910714 0.740741 vt 0.946429 0.425926 @@ -3388,6 +3522,7 @@ vt 0.392857 0.425926 vt 0.392857 0.740741 vt 0.446429 0.740741 vt 0.482143 0.425926 +vt 0.250000 0.425926 vt 0.160714 0.425926 vt 0.160714 0.740741 vt 0.696429 0.740741 @@ -3404,24 +3539,8 @@ vt 1.000000 0.740741 vt 0.410714 0.425926 vt 0.642857 0.425926 vt 0.000000 0.740741 -vt 0.750000 0.407407 -vt 0.892857 0.407407 -vt 0.678571 0.407407 -vt 0.642857 0.407407 -vt 0.642857 0.259259 -vt 0.464286 0.407407 -vt 0.428571 0.407407 -vt 0.428571 0.259259 -vt 0.214286 0.259259 -vt 0.178571 0.407407 -vt 0.035714 0.407407 -vt 0.392857 0.259259 -vt 0.250000 0.370370 -vt 0.250000 0.259259 -vt 0.214286 0.407407 vt 0.392857 1.000000 vt 0.250000 0.759259 -vt 0.392857 0.370370 vt 0.214286 0.944444 vt 0.196429 0.796296 vt 0.214286 0.796296 @@ -3682,361 +3801,316 @@ vt 0.071429 0.759259 vt -0.000000 0.759259 vt 0.017857 0.796296 vt -0.000000 0.796296 -vt 0.214286 0.222222 -vt 0.214286 -0.000000 -vt 0.428571 0.000000 vt 0.214286 0.981481 vt 0.392857 0.944444 vt 0.428571 0.981481 vt 0.428571 0.759259 vt 0.910714 0.425926 vt 0.232143 0.425926 -vt 0.857143 0.259259 -vt 0.821429 0.407407 -vt 0.857143 0.407407 -vt 0.607143 0.407407 -vt -0.000000 0.407407 -vt 0.000000 0.259259 +vt -0.000000 0.425926 vt 0.250000 1.000000 vt 0.196429 0.944444 vt 0.589286 0.740741 vt 0.446429 0.759259 -vt 0.428571 0.222222 vn -0.0000 -0.7071 0.7071 vn 0.7071 -0.7071 0.0000 vn -0.0000 -0.7071 -0.7071 -vn 0.0000 -1.0000 0.0000 vn -1.0000 0.0000 0.0000 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 -0.7071 0.0000 -0.7071 -vn 0.7071 -0.0000 -0.7071 +vn -0.0000 -1.0000 0.0000 vn -0.7071 -0.7071 0.0000 vn 0.0000 0.4472 -0.8944 vn 0.4472 -0.0000 -0.8944 vn -0.0000 -0.4472 -0.8944 vn -0.4472 0.0000 -0.8944 s off -f 801/1213/69 813/1214/69 835/1215/69 -f 791/1216/70 797/1217/70 798/1218/70 -f 802/1219/71 791/1216/71 836/1220/71 -f 827/1221/72 832/1222/72 828/1223/72 -f 822/1224/72 826/1225/72 834/1226/72 -f 818/1227/72 816/1228/72 817/1229/72 -f 821/1230/73 803/1231/73 801/1232/73 -f 797/1233/74 816/1228/74 796/1234/74 -f 813/1235/74 829/1236/74 809/1237/74 -f 823/1238/74 805/1239/74 803/1231/74 -f 795/1240/75 818/1241/75 798/1242/75 -f 830/1243/75 814/1244/75 810/1245/75 -f 806/1246/75 824/1247/75 804/1248/75 -f 800/1249/76 817/1250/76 797/1233/76 -f 814/1244/76 826/1225/76 806/1246/76 -f 827/1251/73 810/1245/73 807/1252/73 -f 818/1241/76 799/1253/76 798/1242/76 -f 825/1254/76 813/1235/76 805/1239/76 -f 809/1237/73 828/1255/73 808/1256/73 -f 819/1257/74 801/1232/74 799/1253/74 -f 831/1258/74 807/1252/74 811/1259/74 -f 802/1260/75 820/1261/75 800/1249/75 -f 808/1256/75 832/1262/75 812/1263/75 -f 804/1248/73 822/1264/73 802/1260/73 -f 796/1234/76 815/1265/76 795/1240/76 -f 812/1266/73 831/1258/73 811/1259/73 -f 825/1254/72 821/1267/72 833/1268/72 -f 821/1269/74 819/1270/74 785/1271/74 -f 817/1272/76 820/1273/76 786/1274/76 -f 788/1275/73 827/1276/73 828/1277/73 -f 789/1278/75 793/1279/75 790/1280/75 -f 834/1226/71 830/1281/71 793/1279/71 -f 803/1282/77 813/1214/77 801/1213/77 -f 814/1283/77 804/1248/77 802/1219/77 -f 793/1279/78 788/1275/78 790/1280/78 -f 786/1274/79 794/1284/79 789/1278/79 -f 808/1285/77 811/1286/77 807/1287/77 -f 798/1218/77 796/1288/77 795/1289/77 -f 791/1216/72 835/1215/72 836/1220/72 -f 807/1287/80 810/1290/80 836/1220/80 -f 851/1291/75 849/1292/75 850/1293/75 -f 843/1294/75 841/1295/75 842/1296/75 -f 840/1297/73 843/1294/73 838/1298/73 -f 837/1299/76 841/1295/76 839/1300/76 -f 839/1301/77 844/1302/77 840/1303/77 -f 838/1304/72 842/1296/72 837/1305/72 -f 848/1306/73 851/1291/73 846/1307/73 -f 845/1308/76 849/1292/76 847/1309/76 -f 847/1310/77 852/1311/77 848/1312/77 -f 846/1313/72 850/1293/72 845/1314/72 -f 859/1315/72 855/1316/72 860/1317/72 -f 858/1318/77 853/1319/77 857/1320/77 -f 860/1321/76 856/1322/76 858/1323/76 -f 857/1324/73 854/1325/73 859/1326/73 -f 867/1327/72 863/1328/72 868/1329/72 -f 866/1330/77 861/1331/77 865/1332/77 -f 868/1333/76 864/1334/76 866/1335/76 -f 865/1336/73 862/1337/73 867/1338/73 -f 862/1337/75 864/1334/75 863/1328/75 -f 854/1325/75 856/1322/75 855/1316/75 -f 870/1339/72 871/1340/72 869/1341/72 -f 878/1342/75 880/1343/75 879/1344/75 -f 877/1345/81 879/1344/81 874/1346/81 -f 872/1347/82 878/1342/82 877/1345/82 -f 870/1339/83 876/1348/83 872/1347/83 -f 873/1349/77 877/1345/77 874/1346/77 -f 874/1346/84 880/1343/84 870/1339/84 -f 871/1350/76 877/1345/76 875/1351/76 -f 869/1352/73 874/1346/73 870/1339/73 -f 895/1353/76 893/1354/76 894/1355/76 -f 887/1356/76 885/1357/76 886/1358/76 -f 884/1359/75 887/1356/75 882/1360/75 -f 881/1361/74 885/1357/74 883/1362/74 -f 883/1363/77 888/1364/77 884/1365/77 -f 882/1366/72 886/1358/72 881/1367/72 -f 892/1368/75 895/1353/75 890/1369/75 -f 889/1370/74 893/1354/74 891/1371/74 -f 891/1372/77 896/1373/77 892/1374/77 -f 890/1375/72 894/1355/72 889/1376/72 -f 911/1377/76 909/1378/76 910/1379/76 -f 903/1380/76 901/1381/76 902/1382/76 -f 900/1383/75 903/1380/75 898/1384/75 -f 897/1385/74 901/1381/74 899/1386/74 -f 899/1387/77 904/1388/77 900/1389/77 -f 898/1390/72 902/1382/72 897/1391/72 -f 908/1392/75 911/1377/75 906/1393/75 -f 905/1394/74 909/1378/74 907/1395/74 -f 907/1396/77 912/1397/77 908/1398/77 -f 906/1399/72 910/1379/72 905/1400/72 -f 919/1401/72 915/1402/72 920/1403/72 -f 918/1404/77 913/1405/77 917/1406/77 -f 920/1407/74 916/1408/74 918/1409/74 -f 917/1410/75 914/1411/75 919/1412/75 -f 927/1413/72 923/1414/72 928/1415/72 -f 926/1416/77 921/1417/77 925/1418/77 -f 928/1419/74 924/1420/74 926/1421/74 -f 925/1422/75 922/1423/75 927/1424/75 -f 922/1423/76 924/1420/76 923/1414/76 -f 914/1411/76 916/1408/76 915/1402/76 -f 935/1425/72 931/1426/72 936/1427/72 -f 934/1428/77 929/1429/77 933/1430/77 -f 936/1431/74 932/1432/74 934/1433/74 -f 933/1434/75 930/1435/75 935/1436/75 -f 943/1437/72 939/1438/72 944/1439/72 -f 942/1440/77 937/1441/77 941/1442/77 -f 944/1443/74 940/1444/74 942/1445/74 -f 941/1446/75 938/1447/75 943/1448/75 -f 938/1447/76 940/1444/76 939/1438/76 -f 930/1435/76 932/1432/76 931/1426/76 -f 959/1449/74 957/1450/74 958/1451/74 -f 951/1452/74 949/1453/74 950/1454/74 -f 948/1455/76 951/1452/76 946/1456/76 -f 945/1457/73 949/1453/73 947/1458/73 -f 947/1459/77 952/1460/77 948/1461/77 -f 946/1462/72 950/1454/72 945/1463/72 -f 956/1464/76 959/1449/76 954/1465/76 -f 953/1466/73 957/1450/73 955/1467/73 -f 955/1468/77 960/1469/77 956/1470/77 -f 954/1471/72 958/1451/72 953/1472/72 -f 975/1473/74 973/1474/74 974/1475/74 -f 967/1476/74 965/1477/74 966/1478/74 -f 964/1479/76 967/1476/76 962/1480/76 -f 961/1481/73 965/1477/73 963/1482/73 -f 963/1483/77 968/1484/77 964/1485/77 -f 962/1486/72 966/1478/72 961/1487/72 -f 972/1488/76 975/1473/76 970/1489/76 -f 969/1490/73 973/1474/73 971/1491/73 -f 971/1492/77 976/1493/77 972/1494/77 -f 970/1495/72 974/1475/72 969/1496/72 -f 983/1497/72 979/1498/72 984/1499/72 -f 982/1500/77 977/1501/77 981/1502/77 -f 984/1503/73 980/1504/73 982/1505/73 -f 981/1506/76 978/1507/76 983/1508/76 -f 991/1509/72 987/1510/72 992/1511/72 -f 990/1512/77 985/1513/77 989/1514/77 -f 992/1515/73 988/1516/73 990/1517/73 -f 989/1518/76 986/1519/76 991/1520/76 -f 986/1519/74 988/1516/74 987/1510/74 -f 978/1507/74 980/1504/74 979/1498/74 -f 999/1521/72 995/1522/72 1000/1523/72 -f 998/1524/77 993/1525/77 997/1526/77 -f 1000/1527/73 996/1528/73 998/1529/73 -f 997/1530/76 994/1531/76 999/1532/76 -f 1007/1533/72 1003/1534/72 1008/1535/72 -f 1006/1536/77 1001/1537/77 1005/1538/77 -f 1008/1539/73 1004/1540/73 1006/1541/73 -f 1005/1542/76 1002/1543/76 1007/1544/76 -f 1002/1543/74 1004/1540/74 1003/1534/74 -f 994/1531/74 996/1528/74 995/1522/74 -f 788/1545/77 787/1546/77 785/1547/77 -f 813/1214/69 809/1548/69 835/1215/69 -f 835/1215/69 792/1549/69 801/1213/69 -f 792/1549/69 799/1550/69 801/1213/69 -f 799/1550/70 792/1549/70 798/1218/70 -f 792/1549/70 791/1216/70 798/1218/70 -f 791/1216/70 800/1551/70 797/1217/70 -f 836/1220/71 810/1290/71 814/1283/71 -f 802/1219/71 800/1551/71 791/1216/71 -f 836/1220/71 814/1283/71 802/1219/71 -f 827/1221/72 831/1258/72 832/1222/72 -f 822/1224/72 824/1247/72 826/1225/72 -f 818/1227/72 815/1265/72 816/1228/72 -f 821/1230/73 823/1238/73 803/1231/73 -f 797/1233/74 817/1250/74 816/1228/74 -f 813/1235/74 833/1552/74 829/1236/74 -f 823/1238/74 825/1254/74 805/1239/74 -f 795/1240/75 815/1265/75 818/1241/75 -f 830/1243/75 834/1553/75 814/1244/75 -f 806/1246/75 826/1225/75 824/1247/75 -f 800/1249/76 820/1261/76 817/1250/76 -f 814/1244/76 834/1553/76 826/1225/76 -f 827/1251/73 830/1243/73 810/1245/73 -f 818/1241/76 819/1257/76 799/1253/76 -f 825/1254/76 833/1552/76 813/1235/76 -f 809/1237/73 829/1236/73 828/1255/73 -f 819/1257/74 821/1230/74 801/1232/74 -f 831/1258/74 827/1251/74 807/1252/74 -f 802/1260/75 822/1264/75 820/1261/75 -f 808/1256/75 828/1255/75 832/1262/75 -f 804/1248/73 824/1247/73 822/1264/73 -f 796/1234/76 816/1228/76 815/1265/76 -f 812/1266/73 832/1222/73 831/1258/73 -f 825/1254/72 823/1238/72 821/1267/72 -f 785/1271/74 787/1554/74 833/1555/74 -f 787/1554/74 829/1556/74 833/1555/74 -f 833/1555/74 821/1269/74 785/1271/74 -f 786/1274/76 785/1271/76 818/1557/76 -f 785/1271/76 819/1270/76 818/1557/76 -f 818/1557/76 817/1272/76 786/1274/76 -f 829/1558/73 787/1559/73 828/1277/73 -f 787/1559/73 788/1275/73 828/1277/73 -f 788/1275/73 830/1281/73 827/1276/73 -f 789/1278/75 794/1284/75 793/1279/75 -f 793/1279/71 794/1284/71 822/1224/71 -f 794/1284/71 820/1273/71 822/1224/71 -f 822/1224/71 834/1226/71 793/1279/71 -f 803/1282/77 805/1560/77 813/1214/77 -f 814/1283/77 806/1246/77 804/1248/77 -f 793/1279/78 830/1281/78 788/1275/78 -f 786/1274/79 820/1273/79 794/1284/79 -f 808/1285/77 812/1561/77 811/1286/77 -f 798/1218/77 797/1217/77 796/1288/77 -f 791/1216/72 792/1549/72 835/1215/72 -f 836/1220/80 835/1215/80 808/1285/80 -f 835/1215/80 809/1548/80 808/1285/80 -f 808/1285/80 807/1287/80 836/1220/80 -f 851/1291/75 852/1311/75 849/1292/75 -f 843/1294/75 844/1302/75 841/1295/75 -f 840/1297/73 844/1302/73 843/1294/73 -f 837/1299/76 842/1296/76 841/1295/76 -f 839/1301/77 841/1295/77 844/1302/77 -f 838/1304/72 843/1294/72 842/1296/72 -f 848/1306/73 852/1311/73 851/1291/73 -f 845/1308/76 850/1293/76 849/1292/76 -f 847/1310/77 849/1292/77 852/1311/77 -f 846/1313/72 851/1291/72 850/1293/72 -f 859/1315/72 854/1325/72 855/1316/72 -f 858/1318/77 856/1322/77 853/1319/77 -f 860/1321/76 855/1316/76 856/1322/76 -f 857/1324/73 853/1319/73 854/1325/73 -f 867/1327/72 862/1337/72 863/1328/72 -f 866/1330/77 864/1334/77 861/1331/77 -f 868/1333/76 863/1328/76 864/1334/76 -f 865/1336/73 861/1331/73 862/1337/73 -f 862/1337/75 861/1331/75 864/1334/75 -f 854/1325/75 853/1319/75 856/1322/75 -f 870/1339/72 872/1347/72 871/1340/72 -f 878/1342/75 876/1348/75 880/1343/75 -f 877/1345/81 878/1342/81 879/1344/81 -f 872/1347/82 876/1348/82 878/1342/82 -f 870/1339/83 880/1343/83 876/1348/83 -f 873/1349/77 875/1562/77 877/1345/77 -f 874/1346/84 879/1344/84 880/1343/84 -f 871/1350/76 872/1347/76 877/1345/76 -f 869/1352/73 873/1563/73 874/1346/73 -f 895/1353/76 896/1373/76 893/1354/76 -f 887/1356/76 888/1364/76 885/1357/76 -f 884/1359/75 888/1364/75 887/1356/75 -f 881/1361/74 886/1358/74 885/1357/74 -f 883/1363/77 885/1357/77 888/1364/77 -f 882/1366/72 887/1356/72 886/1358/72 -f 892/1368/75 896/1373/75 895/1353/75 -f 889/1370/74 894/1355/74 893/1354/74 -f 891/1372/77 893/1354/77 896/1373/77 -f 890/1375/72 895/1353/72 894/1355/72 -f 911/1377/76 912/1397/76 909/1378/76 -f 903/1380/76 904/1388/76 901/1381/76 -f 900/1383/75 904/1388/75 903/1380/75 -f 897/1385/74 902/1382/74 901/1381/74 -f 899/1387/77 901/1381/77 904/1388/77 -f 898/1390/72 903/1380/72 902/1382/72 -f 908/1392/75 912/1397/75 911/1377/75 -f 905/1394/74 910/1379/74 909/1378/74 -f 907/1396/77 909/1378/77 912/1397/77 -f 906/1399/72 911/1377/72 910/1379/72 -f 919/1401/72 914/1411/72 915/1402/72 -f 918/1404/77 916/1408/77 913/1405/77 -f 920/1407/74 915/1402/74 916/1408/74 -f 917/1410/75 913/1405/75 914/1411/75 -f 927/1413/72 922/1423/72 923/1414/72 -f 926/1416/77 924/1420/77 921/1417/77 -f 928/1419/74 923/1414/74 924/1420/74 -f 925/1422/75 921/1417/75 922/1423/75 -f 922/1423/76 921/1417/76 924/1420/76 -f 914/1411/76 913/1405/76 916/1408/76 -f 935/1425/72 930/1435/72 931/1426/72 -f 934/1428/77 932/1432/77 929/1429/77 -f 936/1431/74 931/1426/74 932/1432/74 -f 933/1434/75 929/1429/75 930/1435/75 -f 943/1437/72 938/1447/72 939/1438/72 -f 942/1440/77 940/1444/77 937/1441/77 -f 944/1443/74 939/1438/74 940/1444/74 -f 941/1446/75 937/1441/75 938/1447/75 -f 938/1447/76 937/1441/76 940/1444/76 -f 930/1435/76 929/1429/76 932/1432/76 -f 959/1449/74 960/1469/74 957/1450/74 -f 951/1452/74 952/1460/74 949/1453/74 -f 948/1455/76 952/1460/76 951/1452/76 -f 945/1457/73 950/1454/73 949/1453/73 -f 947/1459/77 949/1453/77 952/1460/77 -f 946/1462/72 951/1452/72 950/1454/72 -f 956/1464/76 960/1469/76 959/1449/76 -f 953/1466/73 958/1451/73 957/1450/73 -f 955/1468/77 957/1450/77 960/1469/77 -f 954/1471/72 959/1449/72 958/1451/72 -f 975/1473/74 976/1493/74 973/1474/74 -f 967/1476/74 968/1484/74 965/1477/74 -f 964/1479/76 968/1484/76 967/1476/76 -f 961/1481/73 966/1478/73 965/1477/73 -f 963/1483/77 965/1477/77 968/1484/77 -f 962/1486/72 967/1476/72 966/1478/72 -f 972/1488/76 976/1493/76 975/1473/76 -f 969/1490/73 974/1475/73 973/1474/73 -f 971/1492/77 973/1474/77 976/1493/77 -f 970/1495/72 975/1473/72 974/1475/72 -f 983/1497/72 978/1507/72 979/1498/72 -f 982/1500/77 980/1504/77 977/1501/77 -f 984/1503/73 979/1498/73 980/1504/73 -f 981/1506/76 977/1501/76 978/1507/76 -f 991/1509/72 986/1519/72 987/1510/72 -f 990/1512/77 988/1516/77 985/1513/77 -f 992/1515/73 987/1510/73 988/1516/73 -f 989/1518/76 985/1513/76 986/1519/76 -f 986/1519/74 985/1513/74 988/1516/74 -f 978/1507/74 977/1501/74 980/1504/74 -f 999/1521/72 994/1531/72 995/1522/72 -f 998/1524/77 996/1528/77 993/1525/77 -f 1000/1527/73 995/1522/73 996/1528/73 -f 997/1530/76 993/1525/76 994/1531/76 -f 1007/1533/72 1002/1543/72 1003/1534/72 -f 1006/1536/77 1004/1540/77 1001/1537/77 -f 1008/1539/73 1003/1534/73 1004/1540/73 -f 1005/1542/76 1001/1537/76 1002/1543/76 -f 1002/1543/74 1001/1537/74 1004/1540/74 -f 994/1531/74 993/1525/74 996/1528/74 -f 785/1547/77 786/1564/77 788/1545/77 -f 786/1564/77 789/1278/77 788/1545/77 -f 789/1278/77 790/1280/77 788/1545/77 +f 841/1261/85 853/1262/85 875/1263/85 +f 833/1264/86 837/1265/86 838/1266/86 +f 842/1267/87 833/1264/87 876/1268/87 +f 861/1269/88 843/1270/88 841/1271/88 +f 837/1272/89 856/1273/89 836/1274/89 +f 853/1275/89 869/1276/89 849/1277/89 +f 863/1278/89 845/1279/89 843/1270/89 +f 835/1280/90 858/1281/90 838/1282/90 +f 870/1283/90 854/1284/90 850/1285/90 +f 846/1286/90 864/1287/90 844/1288/90 +f 840/1289/91 857/1290/91 837/1272/91 +f 854/1284/91 866/1291/91 846/1286/91 +f 867/1292/88 850/1285/88 847/1293/88 +f 858/1281/91 839/1294/91 838/1282/91 +f 865/1295/91 853/1275/91 845/1279/91 +f 849/1277/88 868/1296/88 848/1297/88 +f 859/1298/89 841/1271/89 839/1294/89 +f 871/1299/89 847/1293/89 851/1300/89 +f 842/1301/90 860/1302/90 840/1289/90 +f 848/1297/90 872/1303/90 852/1304/90 +f 844/1288/88 862/1305/88 842/1301/88 +f 836/1274/91 855/1306/91 835/1280/91 +f 852/1307/88 871/1299/88 851/1300/88 +f 843/1308/92 853/1262/92 841/1261/92 +f 854/1309/92 844/1288/92 842/1267/92 +f 848/1310/92 851/1311/92 847/1312/92 +f 838/1266/92 836/1313/92 835/1314/92 +f 833/1264/93 875/1263/93 876/1268/93 +f 847/1312/94 850/1315/94 876/1268/94 +f 891/1316/90 889/1317/90 890/1318/90 +f 883/1319/90 881/1320/90 882/1321/90 +f 880/1322/88 883/1319/88 878/1323/88 +f 877/1324/91 881/1320/91 879/1325/91 +f 879/1326/92 884/1327/92 880/1328/92 +f 878/1329/93 882/1321/93 877/1330/93 +f 888/1331/88 891/1316/88 886/1332/88 +f 885/1333/91 889/1317/91 887/1334/91 +f 887/1335/92 892/1336/92 888/1337/92 +f 886/1338/93 890/1318/93 885/1339/93 +f 899/1340/93 895/1341/93 900/1342/93 +f 898/1343/92 893/1344/92 897/1345/92 +f 900/1346/91 896/1347/91 898/1348/91 +f 897/1349/88 894/1350/88 899/1351/88 +f 907/1352/93 903/1353/93 908/1354/93 +f 906/1355/92 901/1356/92 905/1357/92 +f 908/1358/91 904/1359/91 906/1360/91 +f 905/1361/88 902/1362/88 907/1363/88 +f 902/1362/90 904/1359/90 903/1353/90 +f 894/1350/90 896/1347/90 895/1341/90 +f 910/1364/93 911/1365/93 909/1366/93 +f 918/1367/90 920/1368/90 919/1369/90 +f 917/1370/95 919/1369/95 914/1371/95 +f 912/1372/96 918/1367/96 917/1370/96 +f 910/1364/97 916/1373/97 912/1372/97 +f 913/1374/92 917/1370/92 914/1371/92 +f 914/1371/98 920/1368/98 910/1364/98 +f 911/1375/91 917/1370/91 915/1376/91 +f 909/1377/88 914/1371/88 910/1364/88 +f 935/1378/91 933/1379/91 934/1380/91 +f 927/1381/91 925/1382/91 926/1383/91 +f 924/1384/90 927/1381/90 922/1385/90 +f 921/1386/89 925/1382/89 923/1387/89 +f 923/1388/92 928/1389/92 924/1390/92 +f 922/1391/93 926/1383/93 921/1392/93 +f 932/1393/90 935/1378/90 930/1394/90 +f 929/1395/89 933/1379/89 931/1396/89 +f 931/1397/92 936/1398/92 932/1399/92 +f 930/1400/93 934/1380/93 929/1401/93 +f 951/1402/91 949/1403/91 950/1404/91 +f 943/1405/91 941/1406/91 942/1407/91 +f 940/1408/90 943/1405/90 938/1409/90 +f 937/1410/89 941/1406/89 939/1411/89 +f 939/1412/92 944/1413/92 940/1414/92 +f 938/1415/93 942/1407/93 937/1416/93 +f 948/1417/90 951/1402/90 946/1418/90 +f 945/1419/89 949/1403/89 947/1420/89 +f 947/1421/92 952/1422/92 948/1423/92 +f 946/1424/93 950/1404/93 945/1425/93 +f 959/1426/93 955/1427/93 960/1428/93 +f 958/1429/92 953/1430/92 957/1431/92 +f 960/1432/89 956/1433/89 958/1434/89 +f 957/1435/90 954/1436/90 959/1437/90 +f 967/1438/93 963/1439/93 968/1440/93 +f 966/1441/92 961/1442/92 965/1443/92 +f 968/1444/89 964/1445/89 966/1446/89 +f 965/1447/90 962/1448/90 967/1449/90 +f 962/1448/91 964/1445/91 963/1439/91 +f 954/1436/91 956/1433/91 955/1427/91 +f 975/1450/93 971/1451/93 976/1452/93 +f 974/1453/92 969/1454/92 973/1455/92 +f 976/1456/89 972/1457/89 974/1458/89 +f 973/1459/90 970/1460/90 975/1461/90 +f 983/1462/93 979/1463/93 984/1464/93 +f 982/1465/92 977/1466/92 981/1467/92 +f 984/1468/89 980/1469/89 982/1470/89 +f 981/1471/90 978/1472/90 983/1473/90 +f 978/1472/91 980/1469/91 979/1463/91 +f 970/1460/91 972/1457/91 971/1451/91 +f 999/1474/89 997/1475/89 998/1476/89 +f 991/1477/89 989/1478/89 990/1479/89 +f 988/1480/91 991/1477/91 986/1481/91 +f 985/1482/88 989/1478/88 987/1483/88 +f 987/1484/92 992/1485/92 988/1486/92 +f 986/1487/93 990/1479/93 985/1488/93 +f 996/1489/91 999/1474/91 994/1490/91 +f 993/1491/88 997/1475/88 995/1492/88 +f 995/1493/92 1000/1494/92 996/1495/92 +f 994/1496/93 998/1476/93 993/1497/93 +f 1015/1498/89 1013/1499/89 1014/1500/89 +f 1007/1501/89 1005/1502/89 1006/1503/89 +f 1004/1504/91 1007/1501/91 1002/1505/91 +f 1001/1506/88 1005/1502/88 1003/1507/88 +f 1003/1508/92 1008/1509/92 1004/1510/92 +f 1002/1511/93 1006/1503/93 1001/1512/93 +f 1012/1513/91 1015/1498/91 1010/1514/91 +f 1009/1515/88 1013/1499/88 1011/1516/88 +f 1011/1517/92 1016/1518/92 1012/1519/92 +f 1010/1520/93 1014/1500/93 1009/1521/93 +f 1023/1522/93 1019/1523/93 1024/1524/93 +f 1022/1525/92 1017/1526/92 1021/1527/92 +f 1024/1528/88 1020/1529/88 1022/1530/88 +f 1021/1531/91 1018/1532/91 1023/1533/91 +f 1031/1534/93 1027/1535/93 1032/1536/93 +f 1030/1537/92 1025/1538/92 1029/1539/92 +f 1032/1540/88 1028/1541/88 1030/1542/88 +f 1029/1543/91 1026/1544/91 1031/1545/91 +f 1026/1544/89 1028/1541/89 1027/1535/89 +f 1018/1532/89 1020/1529/89 1019/1523/89 +f 1039/1546/93 1035/1547/93 1040/1548/93 +f 1038/1549/92 1033/1550/92 1037/1551/92 +f 1040/1552/88 1036/1553/88 1038/1554/88 +f 1037/1555/91 1034/1556/91 1039/1557/91 +f 1047/1558/93 1043/1559/93 1048/1560/93 +f 1046/1561/92 1041/1562/92 1045/1563/92 +f 1048/1564/88 1044/1565/88 1046/1566/88 +f 1045/1567/91 1042/1568/91 1047/1569/91 +f 1042/1568/89 1044/1565/89 1043/1559/89 +f 1034/1556/89 1036/1553/89 1035/1547/89 +f 853/1262/85 849/1570/85 875/1263/85 +f 875/1263/85 834/1571/85 841/1261/85 +f 834/1571/85 839/1572/85 841/1261/85 +f 839/1572/86 834/1571/86 838/1266/86 +f 834/1571/86 833/1264/86 838/1266/86 +f 833/1264/86 840/1573/86 837/1265/86 +f 876/1268/87 850/1315/87 854/1309/87 +f 842/1267/87 840/1573/87 833/1264/87 +f 876/1268/87 854/1309/87 842/1267/87 +f 861/1269/88 863/1278/88 843/1270/88 +f 837/1272/89 857/1290/89 856/1273/89 +f 853/1275/89 873/1574/89 869/1276/89 +f 863/1278/89 865/1295/89 845/1279/89 +f 835/1280/90 855/1306/90 858/1281/90 +f 870/1283/90 874/1575/90 854/1284/90 +f 846/1286/90 866/1291/90 864/1287/90 +f 840/1289/91 860/1302/91 857/1290/91 +f 854/1284/91 874/1575/91 866/1291/91 +f 867/1292/88 870/1283/88 850/1285/88 +f 858/1281/91 859/1298/91 839/1294/91 +f 865/1295/91 873/1574/91 853/1275/91 +f 849/1277/88 869/1276/88 868/1296/88 +f 859/1298/89 861/1269/89 841/1271/89 +f 871/1299/89 867/1292/89 847/1293/89 +f 842/1301/90 862/1305/90 860/1302/90 +f 848/1297/90 868/1296/90 872/1303/90 +f 844/1288/88 864/1287/88 862/1305/88 +f 836/1274/91 856/1273/91 855/1306/91 +f 852/1307/88 872/1576/88 871/1299/88 +f 843/1308/92 845/1577/92 853/1262/92 +f 854/1309/92 846/1286/92 844/1288/92 +f 848/1310/92 852/1578/92 851/1311/92 +f 838/1266/92 837/1265/92 836/1313/92 +f 833/1264/93 834/1571/93 875/1263/93 +f 876/1268/94 875/1263/94 848/1310/94 +f 875/1263/94 849/1570/94 848/1310/94 +f 848/1310/94 847/1312/94 876/1268/94 +f 891/1316/90 892/1336/90 889/1317/90 +f 883/1319/90 884/1327/90 881/1320/90 +f 880/1322/88 884/1327/88 883/1319/88 +f 877/1324/91 882/1321/91 881/1320/91 +f 879/1326/92 881/1320/92 884/1327/92 +f 878/1329/93 883/1319/93 882/1321/93 +f 888/1331/88 892/1336/88 891/1316/88 +f 885/1333/91 890/1318/91 889/1317/91 +f 887/1335/92 889/1317/92 892/1336/92 +f 886/1338/93 891/1316/93 890/1318/93 +f 899/1340/93 894/1350/93 895/1341/93 +f 898/1343/92 896/1347/92 893/1344/92 +f 900/1346/91 895/1341/91 896/1347/91 +f 897/1349/88 893/1344/88 894/1350/88 +f 907/1352/93 902/1362/93 903/1353/93 +f 906/1355/92 904/1359/92 901/1356/92 +f 908/1358/91 903/1353/91 904/1359/91 +f 905/1361/88 901/1356/88 902/1362/88 +f 902/1362/90 901/1356/90 904/1359/90 +f 894/1350/90 893/1344/90 896/1347/90 +f 910/1364/93 912/1372/93 911/1365/93 +f 918/1367/90 916/1373/90 920/1368/90 +f 917/1370/95 918/1367/95 919/1369/95 +f 912/1372/96 916/1373/96 918/1367/96 +f 910/1364/97 920/1368/97 916/1373/97 +f 913/1374/92 915/1579/92 917/1370/92 +f 914/1371/98 919/1369/98 920/1368/98 +f 911/1375/91 912/1372/91 917/1370/91 +f 909/1377/88 913/1580/88 914/1371/88 +f 935/1378/91 936/1398/91 933/1379/91 +f 927/1381/91 928/1389/91 925/1382/91 +f 924/1384/90 928/1389/90 927/1381/90 +f 921/1386/89 926/1383/89 925/1382/89 +f 923/1388/92 925/1382/92 928/1389/92 +f 922/1391/93 927/1381/93 926/1383/93 +f 932/1393/90 936/1398/90 935/1378/90 +f 929/1395/89 934/1380/89 933/1379/89 +f 931/1397/92 933/1379/92 936/1398/92 +f 930/1400/93 935/1378/93 934/1380/93 +f 951/1402/91 952/1422/91 949/1403/91 +f 943/1405/91 944/1413/91 941/1406/91 +f 940/1408/90 944/1413/90 943/1405/90 +f 937/1410/89 942/1407/89 941/1406/89 +f 939/1412/92 941/1406/92 944/1413/92 +f 938/1415/93 943/1405/93 942/1407/93 +f 948/1417/90 952/1422/90 951/1402/90 +f 945/1419/89 950/1404/89 949/1403/89 +f 947/1421/92 949/1403/92 952/1422/92 +f 946/1424/93 951/1402/93 950/1404/93 +f 959/1426/93 954/1436/93 955/1427/93 +f 958/1429/92 956/1433/92 953/1430/92 +f 960/1432/89 955/1427/89 956/1433/89 +f 957/1435/90 953/1430/90 954/1436/90 +f 967/1438/93 962/1448/93 963/1439/93 +f 966/1441/92 964/1445/92 961/1442/92 +f 968/1444/89 963/1439/89 964/1445/89 +f 965/1447/90 961/1442/90 962/1448/90 +f 962/1448/91 961/1442/91 964/1445/91 +f 954/1436/91 953/1430/91 956/1433/91 +f 975/1450/93 970/1460/93 971/1451/93 +f 974/1453/92 972/1457/92 969/1454/92 +f 976/1456/89 971/1451/89 972/1457/89 +f 973/1459/90 969/1454/90 970/1460/90 +f 983/1462/93 978/1472/93 979/1463/93 +f 982/1465/92 980/1469/92 977/1466/92 +f 984/1468/89 979/1463/89 980/1469/89 +f 981/1471/90 977/1466/90 978/1472/90 +f 978/1472/91 977/1466/91 980/1469/91 +f 970/1460/91 969/1454/91 972/1457/91 +f 999/1474/89 1000/1494/89 997/1475/89 +f 991/1477/89 992/1485/89 989/1478/89 +f 988/1480/91 992/1485/91 991/1477/91 +f 985/1482/88 990/1479/88 989/1478/88 +f 987/1484/92 989/1478/92 992/1485/92 +f 986/1487/93 991/1477/93 990/1479/93 +f 996/1489/91 1000/1494/91 999/1474/91 +f 993/1491/88 998/1476/88 997/1475/88 +f 995/1493/92 997/1475/92 1000/1494/92 +f 994/1496/93 999/1474/93 998/1476/93 +f 1015/1498/89 1016/1518/89 1013/1499/89 +f 1007/1501/89 1008/1509/89 1005/1502/89 +f 1004/1504/91 1008/1509/91 1007/1501/91 +f 1001/1506/88 1006/1503/88 1005/1502/88 +f 1003/1508/92 1005/1502/92 1008/1509/92 +f 1002/1511/93 1007/1501/93 1006/1503/93 +f 1012/1513/91 1016/1518/91 1015/1498/91 +f 1009/1515/88 1014/1500/88 1013/1499/88 +f 1011/1517/92 1013/1499/92 1016/1518/92 +f 1010/1520/93 1015/1498/93 1014/1500/93 +f 1023/1522/93 1018/1532/93 1019/1523/93 +f 1022/1525/92 1020/1529/92 1017/1526/92 +f 1024/1528/88 1019/1523/88 1020/1529/88 +f 1021/1531/91 1017/1526/91 1018/1532/91 +f 1031/1534/93 1026/1544/93 1027/1535/93 +f 1030/1537/92 1028/1541/92 1025/1538/92 +f 1032/1540/88 1027/1535/88 1028/1541/88 +f 1029/1543/91 1025/1538/91 1026/1544/91 +f 1026/1544/89 1025/1538/89 1028/1541/89 +f 1018/1532/89 1017/1526/89 1020/1529/89 +f 1039/1546/93 1034/1556/93 1035/1547/93 +f 1038/1549/92 1036/1553/92 1033/1550/92 +f 1040/1552/88 1035/1547/88 1036/1553/88 +f 1037/1555/91 1033/1550/91 1034/1556/91 +f 1047/1558/93 1042/1568/93 1043/1559/93 +f 1046/1561/92 1044/1565/92 1041/1562/92 +f 1048/1564/88 1043/1559/88 1044/1565/88 +f 1045/1567/91 1041/1562/91 1042/1568/91 +f 1042/1568/89 1041/1562/89 1044/1565/89 +f 1034/1556/89 1033/1550/89 1036/1553/89 o LeftArm v 3.999992 -0.000002 -2.500000 v 3.999996 11.999999 -2.500000 @@ -4870,440 +4944,440 @@ vn 0.0000 0.7071 -0.7071 vn -0.7071 0.7071 0.0000 vn 0.2425 0.9701 0.0000 s off -f 1036/1565/85 1011/1566/85 1031/1567/85 -f 1050/1568/86 1025/1569/86 1035/1570/86 -f 1017/1571/87 1020/1572/87 1018/1573/87 -f 1023/1574/88 1022/1575/88 1021/1576/88 -f 1025/1577/89 1028/1578/89 1026/1579/89 -f 1027/1580/88 1030/1581/88 1028/1578/88 -f 1030/1581/87 1022/1575/87 1024/1582/87 -f 1009/1583/90 1026/1579/90 1010/1584/90 -f 1043/1585/91 1051/1586/91 1012/1587/91 -f 1013/1588/90 1033/1589/90 1015/1590/90 -f 1034/1591/85 1043/1585/85 1052/1592/85 -f 1009/1583/85 1035/1570/85 1025/1569/85 -f 1019/1593/88 1040/1594/88 1020/1572/88 -f 1018/1573/90 1037/1595/90 1017/1571/90 -f 1039/1596/87 1042/1597/87 1040/1594/87 -f 1041/1598/90 1044/1599/90 1042/1597/90 -f 1044/1599/89 1013/1588/89 1015/1590/89 -f 1021/1600/89 1046/1601/89 1023/1602/89 -f 1045/1603/88 1048/1604/88 1046/1601/88 -f 1048/1604/87 1037/1595/87 1038/1605/87 -f 1051/1586/92 1050/1568/92 1012/1587/92 -f 1031/1567/89 1035/1606/89 1036/1565/89 -f 1052/1607/90 1031/1567/90 1057/1608/90 -f 1037/1609/85 1019/1610/85 1017/1611/85 -f 1022/1612/85 1045/1613/85 1021/1614/85 -f 1045/1613/93 1029/1615/93 1050/1568/93 -f 1014/1616/88 1035/1606/88 1016/1617/88 -f 1034/1618/87 1057/1608/87 1033/1589/87 -f 1037/1609/94 1049/1619/94 1051/1586/94 -f 1053/1620/88 1062/1621/88 1054/1622/88 -f 1058/1623/85 1030/1581/85 1024/1624/85 -f 1058/1625/85 1026/1579/85 1028/1578/85 -f 1010/1584/89 1016/1617/89 1009/1583/89 -f 1011/1626/85 1057/1608/85 1031/1567/85 -f 1059/1627/85 1044/1599/85 1015/1628/85 -f 1040/1594/85 1059/1629/85 1020/1630/85 -f 1060/1631/85 1046/1601/85 1048/1604/85 -f 1038/1605/85 1060/1632/85 1048/1604/85 -f 1055/1633/95 1053/1634/95 1018/1573/95 -f 1055/1635/96 1059/1636/96 1015/1590/96 -f 1054/1637/97 1056/1638/97 1014/1616/97 -f 1053/1620/98 1054/1622/98 1024/1582/98 -f 1062/1639/99 1055/1635/99 1056/1640/99 -f 1054/1637/89 1062/1641/89 1056/1638/89 -f 1053/1634/87 1055/1633/87 1061/1642/87 -f 1069/1643/89 1067/1644/89 1068/1645/89 -f 1065/1646/85 1070/1647/85 1066/1648/85 -f 1064/1649/92 1068/1645/92 1063/1650/92 -f 1066/1651/88 1069/1643/88 1064/1652/88 -f 1063/1653/90 1067/1644/90 1065/1654/90 -f 1078/1655/90 1074/1656/90 1076/1657/90 -f 1075/1658/88 1072/1659/88 1077/1660/88 -f 1077/1661/92 1073/1662/92 1078/1663/92 -f 1076/1664/85 1071/1665/85 1075/1666/85 -f 1072/1659/89 1074/1656/89 1073/1662/89 -f 1086/1667/90 1082/1668/90 1084/1669/90 -f 1083/1670/88 1080/1671/88 1085/1672/88 -f 1085/1673/92 1081/1674/92 1086/1675/92 -f 1084/1676/85 1079/1677/85 1083/1678/85 -f 1080/1671/89 1082/1668/89 1081/1674/89 -f 1093/1679/89 1091/1680/89 1092/1681/89 -f 1089/1682/85 1094/1683/85 1090/1684/85 -f 1088/1685/92 1092/1681/92 1087/1686/92 -f 1090/1687/88 1093/1679/88 1088/1688/88 -f 1087/1689/90 1091/1680/90 1089/1690/90 -f 1102/1691/90 1098/1692/90 1100/1693/90 -f 1099/1694/88 1096/1695/88 1101/1696/88 -f 1101/1697/92 1097/1698/92 1102/1699/92 -f 1100/1700/85 1095/1701/85 1099/1702/85 -f 1096/1695/89 1098/1692/89 1097/1698/89 -f 1109/1703/89 1107/1704/89 1108/1705/89 -f 1105/1706/85 1110/1707/85 1106/1708/85 -f 1104/1709/92 1108/1705/92 1103/1710/92 -f 1106/1711/88 1109/1703/88 1104/1712/88 -f 1103/1713/90 1107/1704/90 1105/1714/90 -f 1117/1715/89 1115/1716/89 1116/1717/89 -f 1113/1718/85 1118/1719/85 1114/1720/85 -f 1112/1721/92 1116/1717/92 1111/1722/92 -f 1114/1723/88 1117/1715/88 1112/1724/88 -f 1111/1725/90 1115/1716/90 1113/1726/90 -f 1125/1727/89 1123/1728/89 1124/1729/89 -f 1121/1730/85 1126/1731/85 1122/1732/85 -f 1120/1733/92 1124/1729/92 1119/1734/92 -f 1122/1735/88 1125/1727/88 1120/1736/88 -f 1119/1737/90 1123/1728/90 1121/1738/90 -f 1134/1739/90 1130/1740/90 1132/1741/90 -f 1131/1742/88 1128/1743/88 1133/1744/88 -f 1133/1745/92 1129/1746/92 1134/1747/92 -f 1132/1748/85 1127/1749/85 1131/1750/85 -f 1128/1743/89 1130/1740/89 1129/1746/89 -f 1142/1751/90 1138/1752/90 1140/1753/90 -f 1139/1754/88 1136/1755/88 1141/1756/88 -f 1141/1757/92 1137/1758/92 1142/1759/92 -f 1140/1760/85 1135/1761/85 1139/1762/85 -f 1136/1755/89 1138/1752/89 1137/1758/89 -f 1150/1763/90 1146/1764/90 1148/1765/90 -f 1147/1766/88 1144/1767/88 1149/1768/88 -f 1149/1769/92 1145/1770/92 1150/1771/92 -f 1148/1772/85 1143/1773/85 1147/1774/85 -f 1144/1767/89 1146/1764/89 1145/1770/89 -f 1157/1775/89 1155/1776/89 1156/1777/89 -f 1153/1778/85 1158/1779/85 1154/1780/85 -f 1152/1781/92 1156/1777/92 1151/1782/92 -f 1154/1783/88 1157/1775/88 1152/1784/88 -f 1151/1785/90 1155/1776/90 1153/1786/90 -f 1165/1787/87 1163/1788/87 1164/1789/87 -f 1161/1790/85 1166/1791/85 1162/1792/85 -f 1160/1793/92 1164/1789/92 1159/1794/92 -f 1162/1795/90 1165/1787/90 1160/1796/90 -f 1159/1797/88 1163/1788/88 1161/1798/88 -f 1174/1799/88 1170/1800/88 1172/1801/88 -f 1171/1802/90 1168/1803/90 1173/1804/90 -f 1173/1805/92 1169/1806/92 1174/1807/92 -f 1172/1808/85 1167/1809/85 1171/1810/85 -f 1168/1803/87 1170/1800/87 1169/1806/87 -f 1182/1811/88 1178/1812/88 1180/1813/88 -f 1179/1814/90 1176/1815/90 1181/1816/90 -f 1181/1817/92 1177/1818/92 1182/1819/92 -f 1180/1820/85 1175/1821/85 1179/1822/85 -f 1176/1815/87 1178/1812/87 1177/1818/87 -f 1189/1823/87 1187/1824/87 1188/1825/87 -f 1185/1826/85 1190/1827/85 1186/1828/85 -f 1184/1829/92 1188/1825/92 1183/1830/92 -f 1186/1831/90 1189/1823/90 1184/1832/90 -f 1183/1833/88 1187/1824/88 1185/1834/88 -f 1197/1835/87 1195/1836/87 1196/1837/87 -f 1193/1838/85 1198/1839/85 1194/1840/85 -f 1192/1841/92 1196/1837/92 1191/1842/92 -f 1194/1843/90 1197/1835/90 1192/1844/90 -f 1191/1845/88 1195/1836/88 1193/1846/88 -f 1206/1847/88 1202/1848/88 1204/1849/88 -f 1203/1850/90 1200/1851/90 1205/1852/90 -f 1205/1853/92 1201/1854/92 1206/1855/92 -f 1204/1856/85 1199/1857/85 1203/1858/85 -f 1200/1851/87 1202/1848/87 1201/1854/87 -f 1214/1859/88 1210/1860/88 1212/1861/88 -f 1211/1862/90 1208/1863/90 1213/1864/90 -f 1213/1865/92 1209/1866/92 1214/1867/92 -f 1212/1868/85 1207/1869/85 1211/1870/85 -f 1208/1863/87 1210/1860/87 1209/1866/87 -f 1221/1871/87 1219/1872/87 1220/1873/87 -f 1217/1874/85 1222/1875/85 1218/1876/85 -f 1216/1877/92 1220/1873/92 1215/1878/92 -f 1218/1879/90 1221/1871/90 1216/1880/90 -f 1215/1881/88 1219/1872/88 1217/1882/88 -f 1230/1883/87 1226/1884/87 1228/1885/87 -f 1227/1886/89 1224/1887/89 1229/1888/89 -f 1229/1889/92 1225/1890/92 1230/1891/92 -f 1228/1892/85 1223/1893/85 1227/1894/85 -f 1224/1887/90 1226/1884/90 1225/1890/90 -f 1237/1895/90 1235/1896/90 1236/1897/90 -f 1233/1898/85 1238/1899/85 1234/1900/85 -f 1232/1901/92 1236/1897/92 1231/1902/92 -f 1234/1903/89 1237/1895/89 1232/1904/89 -f 1231/1905/87 1235/1896/87 1233/1906/87 -f 1245/1907/90 1243/1908/90 1244/1909/90 -f 1241/1910/85 1246/1911/85 1242/1912/85 -f 1240/1913/92 1244/1909/92 1239/1914/92 -f 1242/1915/89 1245/1907/89 1240/1916/89 -f 1239/1917/87 1243/1908/87 1241/1918/87 -f 1253/1919/90 1251/1920/90 1252/1921/90 -f 1249/1922/85 1254/1923/85 1250/1924/85 -f 1248/1925/92 1252/1921/92 1247/1926/92 -f 1250/1927/89 1253/1919/89 1248/1928/89 -f 1247/1929/87 1251/1920/87 1249/1930/87 -f 1262/1931/87 1258/1932/87 1260/1933/87 -f 1259/1934/89 1256/1935/89 1261/1936/89 -f 1261/1937/92 1257/1938/92 1262/1939/92 -f 1260/1940/85 1255/1941/85 1259/1942/85 -f 1256/1935/90 1258/1932/90 1257/1938/90 -f 1270/1943/87 1266/1944/87 1268/1945/87 -f 1267/1946/89 1264/1947/89 1269/1948/89 -f 1269/1949/92 1265/1950/92 1270/1951/92 -f 1268/1952/85 1263/1953/85 1267/1954/85 -f 1264/1947/90 1266/1944/90 1265/1950/90 -f 1282/1955/87 1278/1956/87 1280/1957/87 -f 1279/1958/89 1276/1959/89 1281/1960/89 -f 1281/1961/92 1277/1962/92 1282/1963/92 -f 1280/1964/85 1275/1965/85 1279/1966/85 -f 1276/1959/90 1278/1956/90 1277/1962/90 -f 1289/1967/90 1287/1968/90 1288/1969/90 -f 1285/1970/85 1290/1971/85 1286/1972/85 -f 1284/1973/92 1288/1969/92 1283/1974/92 -f 1286/1975/89 1289/1967/89 1284/1976/89 -f 1283/1977/87 1287/1968/87 1285/1978/87 -f 1298/1979/87 1294/1980/87 1296/1981/87 -f 1295/1982/89 1292/1983/89 1297/1984/89 -f 1297/1985/92 1293/1986/92 1298/1987/92 -f 1296/1988/85 1291/1989/85 1295/1990/85 -f 1292/1983/90 1294/1980/90 1293/1986/90 -f 1305/1991/90 1303/1992/90 1304/1993/90 -f 1301/1994/85 1306/1995/85 1302/1996/85 -f 1300/1997/92 1304/1993/92 1299/1998/92 -f 1302/1999/89 1305/1991/89 1300/2000/89 -f 1299/2001/87 1303/1992/87 1301/2002/87 -f 1310/2003/92 1273/2004/92 1274/2005/92 -f 1272/2006/90 1273/2007/90 1271/2008/90 -f 1309/2009/88 1308/2010/88 1307/2011/88 -f 1272/2006/85 1307/2012/85 1308/2010/85 -f 1274/2005/87 1308/2010/87 1310/2003/87 -f 1317/2013/90 1315/2014/90 1316/2015/90 -f 1313/2016/85 1318/2017/85 1314/2018/85 -f 1312/2019/92 1316/2015/92 1311/2020/92 -f 1314/2021/89 1317/2013/89 1312/2022/89 -f 1311/2023/87 1315/2014/87 1313/2024/87 -f 1326/2025/87 1322/2026/87 1324/2027/87 -f 1323/2028/89 1320/2029/89 1325/2030/89 -f 1325/2031/92 1321/2032/92 1326/2033/92 -f 1324/2034/85 1319/2035/85 1323/2036/85 -f 1320/2029/90 1322/2026/90 1321/2032/90 -f 1036/1565/85 1014/2037/85 1011/1566/85 -f 1032/2038/86 1012/1587/86 1035/1570/86 -f 1012/1587/86 1050/1568/86 1035/1570/86 -f 1050/1568/86 1027/2039/86 1025/1569/86 -f 1017/1571/87 1019/1593/87 1020/1572/87 -f 1023/1574/88 1024/1582/88 1022/1575/88 -f 1025/1577/89 1027/1580/89 1028/1578/89 -f 1027/1580/88 1029/2040/88 1030/1581/88 -f 1030/1581/87 1029/2040/87 1022/1575/87 -f 1009/1583/90 1025/1577/90 1026/1579/90 -f 1012/1587/91 1032/2038/91 1052/1592/91 -f 1043/1585/91 1041/2041/91 1051/1586/91 -f 1012/1587/91 1052/1592/91 1043/1585/91 -f 1013/1588/90 1034/1618/90 1033/1589/90 -f 1034/1591/85 1013/2042/85 1043/1585/85 -f 1009/1583/85 1016/1617/85 1035/1570/85 -f 1019/1593/88 1039/1596/88 1040/1594/88 -f 1018/1573/90 1038/1605/90 1037/1595/90 -f 1039/1596/87 1041/1598/87 1042/1597/87 -f 1041/1598/90 1043/2043/90 1044/1599/90 -f 1044/1599/89 1043/2043/89 1013/1588/89 -f 1021/1600/89 1045/1603/89 1046/1601/89 -f 1045/1603/88 1047/2044/88 1048/1604/88 -f 1048/1604/87 1047/2044/87 1037/1595/87 -f 1051/1586/92 1049/1619/92 1050/1568/92 -f 1031/1567/89 1032/2045/89 1035/1606/89 -f 1052/1607/90 1032/2045/90 1031/1567/90 -f 1037/1609/85 1039/2046/85 1019/1610/85 -f 1022/1612/85 1029/1615/85 1045/1613/85 -f 1029/1615/93 1027/2039/93 1050/1568/93 -f 1050/1568/93 1049/1619/93 1045/1613/93 -f 1049/1619/93 1047/2047/93 1045/1613/93 -f 1014/1616/88 1036/1565/88 1035/1606/88 -f 1034/1618/87 1052/1607/87 1057/1608/87 -f 1051/1586/94 1041/2041/94 1039/2046/94 -f 1037/1609/94 1047/2047/94 1049/1619/94 -f 1051/1586/94 1039/2046/94 1037/1609/94 -f 1053/1620/88 1061/2048/88 1062/1621/88 -f 1058/1623/85 1028/1578/85 1030/1581/85 -f 1058/1625/85 1010/2049/85 1026/1579/85 -f 1010/1584/89 1014/1616/89 1016/1617/89 -f 1011/1626/85 1033/2050/85 1057/1608/85 -f 1059/1627/85 1042/1597/85 1044/1599/85 -f 1040/1594/85 1042/1597/85 1059/1629/85 -f 1060/1631/85 1023/2051/85 1046/1601/85 -f 1038/1605/85 1018/2052/85 1060/1632/85 -f 1060/2053/95 1018/1573/95 1053/1634/95 -f 1018/1573/95 1020/1572/95 1055/1633/95 -f 1020/1572/95 1059/2054/95 1055/1633/95 -f 1015/1590/96 1033/1589/96 1055/1635/96 -f 1033/1589/96 1011/2055/96 1056/1640/96 -f 1055/1635/96 1033/1589/96 1056/1640/96 -f 1011/2056/97 1014/1616/97 1056/1638/97 -f 1014/1616/97 1010/1584/97 1054/1637/97 -f 1010/1584/97 1058/2057/97 1054/1637/97 -f 1058/2058/98 1024/1582/98 1054/1622/98 -f 1024/1582/98 1023/1574/98 1053/1620/98 -f 1023/1574/98 1060/2059/98 1053/1620/98 -f 1062/1639/99 1061/2060/99 1055/1635/99 -f 1069/1643/89 1070/1647/89 1067/1644/89 -f 1065/1646/85 1067/1644/85 1070/1647/85 -f 1064/1649/92 1069/1643/92 1068/1645/92 -f 1066/1651/88 1070/1647/88 1069/1643/88 -f 1063/1653/90 1068/1645/90 1067/1644/90 -f 1078/1655/90 1073/1662/90 1074/1656/90 -f 1075/1658/88 1071/1665/88 1072/1659/88 -f 1077/1661/92 1072/1659/92 1073/1662/92 -f 1076/1664/85 1074/1656/85 1071/1665/85 -f 1072/1659/89 1071/1665/89 1074/1656/89 -f 1086/1667/90 1081/1674/90 1082/1668/90 -f 1083/1670/88 1079/1677/88 1080/1671/88 -f 1085/1673/92 1080/1671/92 1081/1674/92 -f 1084/1676/85 1082/1668/85 1079/1677/85 -f 1080/1671/89 1079/1677/89 1082/1668/89 -f 1093/1679/89 1094/1683/89 1091/1680/89 -f 1089/1682/85 1091/1680/85 1094/1683/85 -f 1088/1685/92 1093/1679/92 1092/1681/92 -f 1090/1687/88 1094/1683/88 1093/1679/88 -f 1087/1689/90 1092/1681/90 1091/1680/90 -f 1102/1691/90 1097/1698/90 1098/1692/90 -f 1099/1694/88 1095/1701/88 1096/1695/88 -f 1101/1697/92 1096/1695/92 1097/1698/92 -f 1100/1700/85 1098/1692/85 1095/1701/85 -f 1096/1695/89 1095/1701/89 1098/1692/89 -f 1109/1703/89 1110/1707/89 1107/1704/89 -f 1105/1706/85 1107/1704/85 1110/1707/85 -f 1104/1709/92 1109/1703/92 1108/1705/92 -f 1106/1711/88 1110/1707/88 1109/1703/88 -f 1103/1713/90 1108/1705/90 1107/1704/90 -f 1117/1715/89 1118/1719/89 1115/1716/89 -f 1113/1718/85 1115/1716/85 1118/1719/85 -f 1112/1721/92 1117/1715/92 1116/1717/92 -f 1114/1723/88 1118/1719/88 1117/1715/88 -f 1111/1725/90 1116/1717/90 1115/1716/90 -f 1125/1727/89 1126/1731/89 1123/1728/89 -f 1121/1730/85 1123/1728/85 1126/1731/85 -f 1120/1733/92 1125/1727/92 1124/1729/92 -f 1122/1735/88 1126/1731/88 1125/1727/88 -f 1119/1737/90 1124/1729/90 1123/1728/90 -f 1134/1739/90 1129/1746/90 1130/1740/90 -f 1131/1742/88 1127/1749/88 1128/1743/88 -f 1133/1745/92 1128/1743/92 1129/1746/92 -f 1132/1748/85 1130/1740/85 1127/1749/85 -f 1128/1743/89 1127/1749/89 1130/1740/89 -f 1142/1751/90 1137/1758/90 1138/1752/90 -f 1139/1754/88 1135/1761/88 1136/1755/88 -f 1141/1757/92 1136/1755/92 1137/1758/92 -f 1140/1760/85 1138/1752/85 1135/1761/85 -f 1136/1755/89 1135/1761/89 1138/1752/89 -f 1150/1763/90 1145/1770/90 1146/1764/90 -f 1147/1766/88 1143/1773/88 1144/1767/88 -f 1149/1769/92 1144/1767/92 1145/1770/92 -f 1148/1772/85 1146/1764/85 1143/1773/85 -f 1144/1767/89 1143/1773/89 1146/1764/89 -f 1157/1775/89 1158/1779/89 1155/1776/89 -f 1153/1778/85 1155/1776/85 1158/1779/85 -f 1152/1781/92 1157/1775/92 1156/1777/92 -f 1154/1783/88 1158/1779/88 1157/1775/88 -f 1151/1785/90 1156/1777/90 1155/1776/90 -f 1165/1787/87 1166/1791/87 1163/1788/87 -f 1161/1790/85 1163/1788/85 1166/1791/85 -f 1160/1793/92 1165/1787/92 1164/1789/92 -f 1162/1795/90 1166/1791/90 1165/1787/90 -f 1159/1797/88 1164/1789/88 1163/1788/88 -f 1174/1799/88 1169/1806/88 1170/1800/88 -f 1171/1802/90 1167/1809/90 1168/1803/90 -f 1173/1805/92 1168/1803/92 1169/1806/92 -f 1172/1808/85 1170/1800/85 1167/1809/85 -f 1168/1803/87 1167/1809/87 1170/1800/87 -f 1182/1811/88 1177/1818/88 1178/1812/88 -f 1179/1814/90 1175/1821/90 1176/1815/90 -f 1181/1817/92 1176/1815/92 1177/1818/92 -f 1180/1820/85 1178/1812/85 1175/1821/85 -f 1176/1815/87 1175/1821/87 1178/1812/87 -f 1189/1823/87 1190/1827/87 1187/1824/87 -f 1185/1826/85 1187/1824/85 1190/1827/85 -f 1184/1829/92 1189/1823/92 1188/1825/92 -f 1186/1831/90 1190/1827/90 1189/1823/90 -f 1183/1833/88 1188/1825/88 1187/1824/88 -f 1197/1835/87 1198/1839/87 1195/1836/87 -f 1193/1838/85 1195/1836/85 1198/1839/85 -f 1192/1841/92 1197/1835/92 1196/1837/92 -f 1194/1843/90 1198/1839/90 1197/1835/90 -f 1191/1845/88 1196/1837/88 1195/1836/88 -f 1206/1847/88 1201/1854/88 1202/1848/88 -f 1203/1850/90 1199/1857/90 1200/1851/90 -f 1205/1853/92 1200/1851/92 1201/1854/92 -f 1204/1856/85 1202/1848/85 1199/1857/85 -f 1200/1851/87 1199/1857/87 1202/1848/87 -f 1214/1859/88 1209/1866/88 1210/1860/88 -f 1211/1862/90 1207/1869/90 1208/1863/90 -f 1213/1865/92 1208/1863/92 1209/1866/92 -f 1212/1868/85 1210/1860/85 1207/1869/85 -f 1208/1863/87 1207/1869/87 1210/1860/87 -f 1221/1871/87 1222/1875/87 1219/1872/87 -f 1217/1874/85 1219/1872/85 1222/1875/85 -f 1216/1877/92 1221/1871/92 1220/1873/92 -f 1218/1879/90 1222/1875/90 1221/1871/90 -f 1215/1881/88 1220/1873/88 1219/1872/88 -f 1230/1883/87 1225/1890/87 1226/1884/87 -f 1227/1886/89 1223/1893/89 1224/1887/89 -f 1229/1889/92 1224/1887/92 1225/1890/92 -f 1228/1892/85 1226/1884/85 1223/1893/85 -f 1224/1887/90 1223/1893/90 1226/1884/90 -f 1237/1895/90 1238/1899/90 1235/1896/90 -f 1233/1898/85 1235/1896/85 1238/1899/85 -f 1232/1901/92 1237/1895/92 1236/1897/92 -f 1234/1903/89 1238/1899/89 1237/1895/89 -f 1231/1905/87 1236/1897/87 1235/1896/87 -f 1245/1907/90 1246/1911/90 1243/1908/90 -f 1241/1910/85 1243/1908/85 1246/1911/85 -f 1240/1913/92 1245/1907/92 1244/1909/92 -f 1242/1915/89 1246/1911/89 1245/1907/89 -f 1239/1917/87 1244/1909/87 1243/1908/87 -f 1253/1919/90 1254/1923/90 1251/1920/90 -f 1249/1922/85 1251/1920/85 1254/1923/85 -f 1248/1925/92 1253/1919/92 1252/1921/92 -f 1250/1927/89 1254/1923/89 1253/1919/89 -f 1247/1929/87 1252/1921/87 1251/1920/87 -f 1262/1931/87 1257/1938/87 1258/1932/87 -f 1259/1934/89 1255/1941/89 1256/1935/89 -f 1261/1937/92 1256/1935/92 1257/1938/92 -f 1260/1940/85 1258/1932/85 1255/1941/85 -f 1256/1935/90 1255/1941/90 1258/1932/90 -f 1270/1943/87 1265/1950/87 1266/1944/87 -f 1267/1946/89 1263/1953/89 1264/1947/89 -f 1269/1949/92 1264/1947/92 1265/1950/92 -f 1268/1952/85 1266/1944/85 1263/1953/85 -f 1264/1947/90 1263/1953/90 1266/1944/90 -f 1282/1955/87 1277/1962/87 1278/1956/87 -f 1279/1958/89 1275/1965/89 1276/1959/89 -f 1281/1961/92 1276/1959/92 1277/1962/92 -f 1280/1964/85 1278/1956/85 1275/1965/85 -f 1276/1959/90 1275/1965/90 1278/1956/90 -f 1289/1967/90 1290/1971/90 1287/1968/90 -f 1285/1970/85 1287/1968/85 1290/1971/85 -f 1284/1973/92 1289/1967/92 1288/1969/92 -f 1286/1975/89 1290/1971/89 1289/1967/89 -f 1283/1977/87 1288/1969/87 1287/1968/87 -f 1298/1979/87 1293/1986/87 1294/1980/87 -f 1295/1982/89 1291/1989/89 1292/1983/89 -f 1297/1985/92 1292/1983/92 1293/1986/92 -f 1296/1988/85 1294/1980/85 1291/1989/85 -f 1292/1983/90 1291/1989/90 1294/1980/90 -f 1305/1991/90 1306/1995/90 1303/1992/90 -f 1301/1994/85 1303/1992/85 1306/1995/85 -f 1300/1997/92 1305/1991/92 1304/1993/92 -f 1302/1999/89 1306/1995/89 1305/1991/89 -f 1299/2001/87 1304/1993/87 1303/1992/87 -f 1310/2003/92 1309/2061/92 1273/2004/92 -f 1272/2006/90 1274/2005/90 1273/2007/90 -f 1309/2009/88 1310/2003/88 1308/2010/88 -f 1272/2006/85 1271/2062/85 1307/2012/85 -f 1274/2005/87 1272/2006/87 1308/2010/87 -f 1317/2013/90 1318/2017/90 1315/2014/90 -f 1313/2016/85 1315/2014/85 1318/2017/85 -f 1312/2019/92 1317/2013/92 1316/2015/92 -f 1314/2021/89 1318/2017/89 1317/2013/89 -f 1311/2023/87 1316/2015/87 1315/2014/87 -f 1326/2025/87 1321/2032/87 1322/2026/87 -f 1323/2028/89 1319/2035/89 1320/2029/89 -f 1325/2031/92 1320/2029/92 1321/2032/92 -f 1324/2034/85 1322/2026/85 1319/2035/85 -f 1320/2029/90 1319/2035/90 1322/2026/90 +f 1076/1581/99 1051/1582/99 1071/1583/99 +f 1090/1584/100 1065/1585/100 1075/1586/100 +f 1057/1587/101 1060/1588/101 1058/1589/101 +f 1063/1590/102 1062/1591/102 1061/1592/102 +f 1065/1593/103 1068/1594/103 1066/1595/103 +f 1067/1596/102 1070/1597/102 1068/1594/102 +f 1070/1597/101 1062/1591/101 1064/1598/101 +f 1049/1599/104 1066/1595/104 1050/1600/104 +f 1083/1601/105 1091/1602/105 1052/1603/105 +f 1053/1604/104 1073/1605/104 1055/1606/104 +f 1074/1607/99 1083/1601/99 1092/1608/99 +f 1049/1599/99 1075/1586/99 1065/1585/99 +f 1059/1609/102 1080/1610/102 1060/1588/102 +f 1058/1589/104 1077/1611/104 1057/1587/104 +f 1079/1612/101 1082/1613/101 1080/1610/101 +f 1081/1614/104 1084/1615/104 1082/1613/104 +f 1084/1615/103 1053/1604/103 1055/1606/103 +f 1061/1616/103 1086/1617/103 1063/1618/103 +f 1085/1619/102 1088/1620/102 1086/1617/102 +f 1088/1620/101 1077/1611/101 1078/1621/101 +f 1091/1602/106 1090/1584/106 1052/1603/106 +f 1071/1583/103 1075/1622/103 1076/1581/103 +f 1092/1623/104 1071/1583/104 1097/1624/104 +f 1077/1625/99 1059/1626/99 1057/1627/99 +f 1062/1628/99 1085/1629/99 1061/1630/99 +f 1085/1629/107 1069/1631/107 1090/1584/107 +f 1054/1632/102 1075/1622/102 1056/1633/102 +f 1074/1634/101 1097/1624/101 1073/1605/101 +f 1077/1625/108 1089/1635/108 1091/1602/108 +f 1093/1636/102 1102/1637/102 1094/1638/102 +f 1098/1639/99 1070/1597/99 1064/1640/99 +f 1098/1641/99 1066/1595/99 1068/1594/99 +f 1050/1600/103 1056/1633/103 1049/1599/103 +f 1051/1642/99 1097/1624/99 1071/1583/99 +f 1099/1643/99 1084/1615/99 1055/1644/99 +f 1080/1610/99 1099/1645/99 1060/1646/99 +f 1100/1647/99 1086/1617/99 1088/1620/99 +f 1078/1621/99 1100/1648/99 1088/1620/99 +f 1095/1649/109 1093/1650/109 1058/1589/109 +f 1095/1651/110 1099/1652/110 1055/1606/110 +f 1094/1653/111 1096/1654/111 1054/1632/111 +f 1093/1636/112 1094/1638/112 1064/1598/112 +f 1102/1655/113 1095/1651/113 1096/1656/113 +f 1094/1653/103 1102/1657/103 1096/1654/103 +f 1093/1650/101 1095/1649/101 1101/1658/101 +f 1109/1659/103 1107/1660/103 1108/1661/103 +f 1105/1662/99 1110/1663/99 1106/1664/99 +f 1104/1665/106 1108/1661/106 1103/1666/106 +f 1106/1667/102 1109/1659/102 1104/1668/102 +f 1103/1669/104 1107/1660/104 1105/1670/104 +f 1118/1671/104 1114/1672/104 1116/1673/104 +f 1115/1674/102 1112/1675/102 1117/1676/102 +f 1117/1677/106 1113/1678/106 1118/1679/106 +f 1116/1680/99 1111/1681/99 1115/1682/99 +f 1112/1675/103 1114/1672/103 1113/1678/103 +f 1126/1683/104 1122/1684/104 1124/1685/104 +f 1123/1686/102 1120/1687/102 1125/1688/102 +f 1125/1689/106 1121/1690/106 1126/1691/106 +f 1124/1692/99 1119/1693/99 1123/1694/99 +f 1120/1687/103 1122/1684/103 1121/1690/103 +f 1133/1695/103 1131/1696/103 1132/1697/103 +f 1129/1698/99 1134/1699/99 1130/1700/99 +f 1128/1701/106 1132/1697/106 1127/1702/106 +f 1130/1703/102 1133/1695/102 1128/1704/102 +f 1127/1705/104 1131/1696/104 1129/1706/104 +f 1142/1707/104 1138/1708/104 1140/1709/104 +f 1139/1710/102 1136/1711/102 1141/1712/102 +f 1141/1713/106 1137/1714/106 1142/1715/106 +f 1140/1716/99 1135/1717/99 1139/1718/99 +f 1136/1711/103 1138/1708/103 1137/1714/103 +f 1149/1719/103 1147/1720/103 1148/1721/103 +f 1145/1722/99 1150/1723/99 1146/1724/99 +f 1144/1725/106 1148/1721/106 1143/1726/106 +f 1146/1727/102 1149/1719/102 1144/1728/102 +f 1143/1729/104 1147/1720/104 1145/1730/104 +f 1157/1731/103 1155/1732/103 1156/1733/103 +f 1153/1734/99 1158/1735/99 1154/1736/99 +f 1152/1737/106 1156/1733/106 1151/1738/106 +f 1154/1739/102 1157/1731/102 1152/1740/102 +f 1151/1741/104 1155/1732/104 1153/1742/104 +f 1165/1743/103 1163/1744/103 1164/1745/103 +f 1161/1746/99 1166/1747/99 1162/1748/99 +f 1160/1749/106 1164/1745/106 1159/1750/106 +f 1162/1751/102 1165/1743/102 1160/1752/102 +f 1159/1753/104 1163/1744/104 1161/1754/104 +f 1174/1755/104 1170/1756/104 1172/1757/104 +f 1171/1758/102 1168/1759/102 1173/1760/102 +f 1173/1761/106 1169/1762/106 1174/1763/106 +f 1172/1764/99 1167/1765/99 1171/1766/99 +f 1168/1759/103 1170/1756/103 1169/1762/103 +f 1182/1767/104 1178/1768/104 1180/1769/104 +f 1179/1770/102 1176/1771/102 1181/1772/102 +f 1181/1773/106 1177/1774/106 1182/1775/106 +f 1180/1776/99 1175/1777/99 1179/1778/99 +f 1176/1771/103 1178/1768/103 1177/1774/103 +f 1190/1779/104 1186/1780/104 1188/1781/104 +f 1187/1782/102 1184/1783/102 1189/1784/102 +f 1189/1785/106 1185/1786/106 1190/1787/106 +f 1188/1788/99 1183/1789/99 1187/1790/99 +f 1184/1783/103 1186/1780/103 1185/1786/103 +f 1197/1791/103 1195/1792/103 1196/1793/103 +f 1193/1794/99 1198/1795/99 1194/1796/99 +f 1192/1797/106 1196/1793/106 1191/1798/106 +f 1194/1799/102 1197/1791/102 1192/1800/102 +f 1191/1801/104 1195/1792/104 1193/1802/104 +f 1205/1803/101 1203/1804/101 1204/1805/101 +f 1201/1806/99 1206/1807/99 1202/1808/99 +f 1200/1809/106 1204/1805/106 1199/1810/106 +f 1202/1811/104 1205/1803/104 1200/1812/104 +f 1199/1813/102 1203/1804/102 1201/1814/102 +f 1214/1815/102 1210/1816/102 1212/1817/102 +f 1211/1818/104 1208/1819/104 1213/1820/104 +f 1213/1821/106 1209/1822/106 1214/1823/106 +f 1212/1824/99 1207/1825/99 1211/1826/99 +f 1208/1819/101 1210/1816/101 1209/1822/101 +f 1222/1827/102 1218/1828/102 1220/1829/102 +f 1219/1830/104 1216/1831/104 1221/1832/104 +f 1221/1833/106 1217/1834/106 1222/1835/106 +f 1220/1836/99 1215/1837/99 1219/1838/99 +f 1216/1831/101 1218/1828/101 1217/1834/101 +f 1229/1839/101 1227/1840/101 1228/1841/101 +f 1225/1842/99 1230/1843/99 1226/1844/99 +f 1224/1845/106 1228/1841/106 1223/1846/106 +f 1226/1847/104 1229/1839/104 1224/1848/104 +f 1223/1849/102 1227/1840/102 1225/1850/102 +f 1237/1851/101 1235/1852/101 1236/1853/101 +f 1233/1854/99 1238/1855/99 1234/1856/99 +f 1232/1857/106 1236/1853/106 1231/1858/106 +f 1234/1859/104 1237/1851/104 1232/1860/104 +f 1231/1861/102 1235/1852/102 1233/1862/102 +f 1246/1863/102 1242/1864/102 1244/1865/102 +f 1243/1866/104 1240/1867/104 1245/1868/104 +f 1245/1869/106 1241/1870/106 1246/1871/106 +f 1244/1872/99 1239/1873/99 1243/1874/99 +f 1240/1867/101 1242/1864/101 1241/1870/101 +f 1254/1875/102 1250/1876/102 1252/1877/102 +f 1251/1878/104 1248/1879/104 1253/1880/104 +f 1253/1881/106 1249/1882/106 1254/1883/106 +f 1252/1884/99 1247/1885/99 1251/1886/99 +f 1248/1879/101 1250/1876/101 1249/1882/101 +f 1261/1887/101 1259/1888/101 1260/1889/101 +f 1257/1890/99 1262/1891/99 1258/1892/99 +f 1256/1893/106 1260/1889/106 1255/1894/106 +f 1258/1895/104 1261/1887/104 1256/1896/104 +f 1255/1897/102 1259/1888/102 1257/1898/102 +f 1270/1899/101 1266/1900/101 1268/1901/101 +f 1267/1902/103 1264/1903/103 1269/1904/103 +f 1269/1905/106 1265/1906/106 1270/1907/106 +f 1268/1908/99 1263/1909/99 1267/1910/99 +f 1264/1903/104 1266/1900/104 1265/1906/104 +f 1277/1911/104 1275/1912/104 1276/1913/104 +f 1273/1914/99 1278/1915/99 1274/1916/99 +f 1272/1917/106 1276/1913/106 1271/1918/106 +f 1274/1919/103 1277/1911/103 1272/1920/103 +f 1271/1921/101 1275/1912/101 1273/1922/101 +f 1285/1923/104 1283/1924/104 1284/1925/104 +f 1281/1926/99 1286/1927/99 1282/1928/99 +f 1280/1929/106 1284/1925/106 1279/1930/106 +f 1282/1931/103 1285/1923/103 1280/1932/103 +f 1279/1933/101 1283/1924/101 1281/1934/101 +f 1293/1935/104 1291/1936/104 1292/1937/104 +f 1289/1938/99 1294/1939/99 1290/1940/99 +f 1288/1941/106 1292/1937/106 1287/1942/106 +f 1290/1943/103 1293/1935/103 1288/1944/103 +f 1287/1945/101 1291/1936/101 1289/1946/101 +f 1302/1947/101 1298/1948/101 1300/1949/101 +f 1299/1950/103 1296/1951/103 1301/1952/103 +f 1301/1953/106 1297/1954/106 1302/1955/106 +f 1300/1956/99 1295/1957/99 1299/1958/99 +f 1296/1951/104 1298/1948/104 1297/1954/104 +f 1310/1959/101 1306/1960/101 1308/1961/101 +f 1307/1962/103 1304/1963/103 1309/1964/103 +f 1309/1965/106 1305/1966/106 1310/1967/106 +f 1308/1968/99 1303/1969/99 1307/1970/99 +f 1304/1963/104 1306/1960/104 1305/1966/104 +f 1322/1971/101 1318/1972/101 1320/1973/101 +f 1319/1974/103 1316/1975/103 1321/1976/103 +f 1321/1977/106 1317/1978/106 1322/1979/106 +f 1320/1980/99 1315/1981/99 1319/1982/99 +f 1316/1975/104 1318/1972/104 1317/1978/104 +f 1329/1983/104 1327/1984/104 1328/1985/104 +f 1325/1986/99 1330/1987/99 1326/1988/99 +f 1324/1989/106 1328/1985/106 1323/1990/106 +f 1326/1991/103 1329/1983/103 1324/1992/103 +f 1323/1993/101 1327/1984/101 1325/1994/101 +f 1338/1995/101 1334/1996/101 1336/1997/101 +f 1335/1998/103 1332/1999/103 1337/2000/103 +f 1337/2001/106 1333/2002/106 1338/2003/106 +f 1336/2004/99 1331/2005/99 1335/2006/99 +f 1332/1999/104 1334/1996/104 1333/2002/104 +f 1345/2007/104 1343/2008/104 1344/2009/104 +f 1341/2010/99 1346/2011/99 1342/2012/99 +f 1340/2013/106 1344/2009/106 1339/2014/106 +f 1342/2015/103 1345/2007/103 1340/2016/103 +f 1339/2017/101 1343/2008/101 1341/2018/101 +f 1350/2019/106 1313/2020/106 1314/2021/106 +f 1312/2022/104 1313/2023/104 1311/2024/104 +f 1349/2025/102 1348/2026/102 1347/2027/102 +f 1312/2022/99 1347/2028/99 1348/2026/99 +f 1314/2021/101 1348/2026/101 1350/2019/101 +f 1357/2029/104 1355/2030/104 1356/2031/104 +f 1353/2032/99 1358/2033/99 1354/2034/99 +f 1352/2035/106 1356/2031/106 1351/2036/106 +f 1354/2037/103 1357/2029/103 1352/2038/103 +f 1351/2039/101 1355/2030/101 1353/2040/101 +f 1366/2041/101 1362/2042/101 1364/2043/101 +f 1363/2044/103 1360/2045/103 1365/2046/103 +f 1365/2047/106 1361/2048/106 1366/2049/106 +f 1364/2050/99 1359/2051/99 1363/2052/99 +f 1360/2045/104 1362/2042/104 1361/2048/104 +f 1076/1581/99 1054/2053/99 1051/1582/99 +f 1072/2054/100 1052/1603/100 1075/1586/100 +f 1052/1603/100 1090/1584/100 1075/1586/100 +f 1090/1584/100 1067/2055/100 1065/1585/100 +f 1057/1587/101 1059/1609/101 1060/1588/101 +f 1063/1590/102 1064/1598/102 1062/1591/102 +f 1065/1593/103 1067/1596/103 1068/1594/103 +f 1067/1596/102 1069/2056/102 1070/1597/102 +f 1070/1597/101 1069/2056/101 1062/1591/101 +f 1049/1599/104 1065/1593/104 1066/1595/104 +f 1052/1603/105 1072/2054/105 1092/1608/105 +f 1083/1601/105 1081/2057/105 1091/1602/105 +f 1052/1603/105 1092/1608/105 1083/1601/105 +f 1053/1604/104 1074/1634/104 1073/1605/104 +f 1074/1607/99 1053/2058/99 1083/1601/99 +f 1049/1599/99 1056/1633/99 1075/1586/99 +f 1059/1609/102 1079/1612/102 1080/1610/102 +f 1058/1589/104 1078/1621/104 1077/1611/104 +f 1079/1612/101 1081/1614/101 1082/1613/101 +f 1081/1614/104 1083/2059/104 1084/1615/104 +f 1084/1615/103 1083/2059/103 1053/1604/103 +f 1061/1616/103 1085/1619/103 1086/1617/103 +f 1085/1619/102 1087/2060/102 1088/1620/102 +f 1088/1620/101 1087/2060/101 1077/1611/101 +f 1091/1602/106 1089/1635/106 1090/1584/106 +f 1071/1583/103 1072/2061/103 1075/1622/103 +f 1092/1623/104 1072/2061/104 1071/1583/104 +f 1077/1625/99 1079/2062/99 1059/1626/99 +f 1062/1628/99 1069/1631/99 1085/1629/99 +f 1069/1631/107 1067/2055/107 1090/1584/107 +f 1090/1584/107 1089/1635/107 1085/1629/107 +f 1089/1635/107 1087/2063/107 1085/1629/107 +f 1054/1632/102 1076/1581/102 1075/1622/102 +f 1074/1634/101 1092/1623/101 1097/1624/101 +f 1091/1602/108 1081/2057/108 1079/2062/108 +f 1077/1625/108 1087/2063/108 1089/1635/108 +f 1091/1602/108 1079/2062/108 1077/1625/108 +f 1093/1636/102 1101/2064/102 1102/1637/102 +f 1098/1639/99 1068/1594/99 1070/1597/99 +f 1098/1641/99 1050/2065/99 1066/1595/99 +f 1050/1600/103 1054/1632/103 1056/1633/103 +f 1051/1642/99 1073/2066/99 1097/1624/99 +f 1099/1643/99 1082/1613/99 1084/1615/99 +f 1080/1610/99 1082/1613/99 1099/1645/99 +f 1100/1647/99 1063/2067/99 1086/1617/99 +f 1078/1621/99 1058/2068/99 1100/1648/99 +f 1100/2069/109 1058/1589/109 1093/1650/109 +f 1058/1589/109 1060/1588/109 1095/1649/109 +f 1060/1588/109 1099/2070/109 1095/1649/109 +f 1055/1606/110 1073/1605/110 1095/1651/110 +f 1073/1605/110 1051/2071/110 1096/1656/110 +f 1095/1651/110 1073/1605/110 1096/1656/110 +f 1051/2072/111 1054/1632/111 1096/1654/111 +f 1054/1632/111 1050/1600/111 1094/1653/111 +f 1050/1600/111 1098/2073/111 1094/1653/111 +f 1098/2074/112 1064/1598/112 1094/1638/112 +f 1064/1598/112 1063/1590/112 1093/1636/112 +f 1063/1590/112 1100/2075/112 1093/1636/112 +f 1102/1655/113 1101/2076/113 1095/1651/113 +f 1109/1659/103 1110/1663/103 1107/1660/103 +f 1105/1662/99 1107/1660/99 1110/1663/99 +f 1104/1665/106 1109/1659/106 1108/1661/106 +f 1106/1667/102 1110/1663/102 1109/1659/102 +f 1103/1669/104 1108/1661/104 1107/1660/104 +f 1118/1671/104 1113/1678/104 1114/1672/104 +f 1115/1674/102 1111/1681/102 1112/1675/102 +f 1117/1677/106 1112/1675/106 1113/1678/106 +f 1116/1680/99 1114/1672/99 1111/1681/99 +f 1112/1675/103 1111/1681/103 1114/1672/103 +f 1126/1683/104 1121/1690/104 1122/1684/104 +f 1123/1686/102 1119/1693/102 1120/1687/102 +f 1125/1689/106 1120/1687/106 1121/1690/106 +f 1124/1692/99 1122/1684/99 1119/1693/99 +f 1120/1687/103 1119/1693/103 1122/1684/103 +f 1133/1695/103 1134/1699/103 1131/1696/103 +f 1129/1698/99 1131/1696/99 1134/1699/99 +f 1128/1701/106 1133/1695/106 1132/1697/106 +f 1130/1703/102 1134/1699/102 1133/1695/102 +f 1127/1705/104 1132/1697/104 1131/1696/104 +f 1142/1707/104 1137/1714/104 1138/1708/104 +f 1139/1710/102 1135/1717/102 1136/1711/102 +f 1141/1713/106 1136/1711/106 1137/1714/106 +f 1140/1716/99 1138/1708/99 1135/1717/99 +f 1136/1711/103 1135/1717/103 1138/1708/103 +f 1149/1719/103 1150/1723/103 1147/1720/103 +f 1145/1722/99 1147/1720/99 1150/1723/99 +f 1144/1725/106 1149/1719/106 1148/1721/106 +f 1146/1727/102 1150/1723/102 1149/1719/102 +f 1143/1729/104 1148/1721/104 1147/1720/104 +f 1157/1731/103 1158/1735/103 1155/1732/103 +f 1153/1734/99 1155/1732/99 1158/1735/99 +f 1152/1737/106 1157/1731/106 1156/1733/106 +f 1154/1739/102 1158/1735/102 1157/1731/102 +f 1151/1741/104 1156/1733/104 1155/1732/104 +f 1165/1743/103 1166/1747/103 1163/1744/103 +f 1161/1746/99 1163/1744/99 1166/1747/99 +f 1160/1749/106 1165/1743/106 1164/1745/106 +f 1162/1751/102 1166/1747/102 1165/1743/102 +f 1159/1753/104 1164/1745/104 1163/1744/104 +f 1174/1755/104 1169/1762/104 1170/1756/104 +f 1171/1758/102 1167/1765/102 1168/1759/102 +f 1173/1761/106 1168/1759/106 1169/1762/106 +f 1172/1764/99 1170/1756/99 1167/1765/99 +f 1168/1759/103 1167/1765/103 1170/1756/103 +f 1182/1767/104 1177/1774/104 1178/1768/104 +f 1179/1770/102 1175/1777/102 1176/1771/102 +f 1181/1773/106 1176/1771/106 1177/1774/106 +f 1180/1776/99 1178/1768/99 1175/1777/99 +f 1176/1771/103 1175/1777/103 1178/1768/103 +f 1190/1779/104 1185/1786/104 1186/1780/104 +f 1187/1782/102 1183/1789/102 1184/1783/102 +f 1189/1785/106 1184/1783/106 1185/1786/106 +f 1188/1788/99 1186/1780/99 1183/1789/99 +f 1184/1783/103 1183/1789/103 1186/1780/103 +f 1197/1791/103 1198/1795/103 1195/1792/103 +f 1193/1794/99 1195/1792/99 1198/1795/99 +f 1192/1797/106 1197/1791/106 1196/1793/106 +f 1194/1799/102 1198/1795/102 1197/1791/102 +f 1191/1801/104 1196/1793/104 1195/1792/104 +f 1205/1803/101 1206/1807/101 1203/1804/101 +f 1201/1806/99 1203/1804/99 1206/1807/99 +f 1200/1809/106 1205/1803/106 1204/1805/106 +f 1202/1811/104 1206/1807/104 1205/1803/104 +f 1199/1813/102 1204/1805/102 1203/1804/102 +f 1214/1815/102 1209/1822/102 1210/1816/102 +f 1211/1818/104 1207/1825/104 1208/1819/104 +f 1213/1821/106 1208/1819/106 1209/1822/106 +f 1212/1824/99 1210/1816/99 1207/1825/99 +f 1208/1819/101 1207/1825/101 1210/1816/101 +f 1222/1827/102 1217/1834/102 1218/1828/102 +f 1219/1830/104 1215/1837/104 1216/1831/104 +f 1221/1833/106 1216/1831/106 1217/1834/106 +f 1220/1836/99 1218/1828/99 1215/1837/99 +f 1216/1831/101 1215/1837/101 1218/1828/101 +f 1229/1839/101 1230/1843/101 1227/1840/101 +f 1225/1842/99 1227/1840/99 1230/1843/99 +f 1224/1845/106 1229/1839/106 1228/1841/106 +f 1226/1847/104 1230/1843/104 1229/1839/104 +f 1223/1849/102 1228/1841/102 1227/1840/102 +f 1237/1851/101 1238/1855/101 1235/1852/101 +f 1233/1854/99 1235/1852/99 1238/1855/99 +f 1232/1857/106 1237/1851/106 1236/1853/106 +f 1234/1859/104 1238/1855/104 1237/1851/104 +f 1231/1861/102 1236/1853/102 1235/1852/102 +f 1246/1863/102 1241/1870/102 1242/1864/102 +f 1243/1866/104 1239/1873/104 1240/1867/104 +f 1245/1869/106 1240/1867/106 1241/1870/106 +f 1244/1872/99 1242/1864/99 1239/1873/99 +f 1240/1867/101 1239/1873/101 1242/1864/101 +f 1254/1875/102 1249/1882/102 1250/1876/102 +f 1251/1878/104 1247/1885/104 1248/1879/104 +f 1253/1881/106 1248/1879/106 1249/1882/106 +f 1252/1884/99 1250/1876/99 1247/1885/99 +f 1248/1879/101 1247/1885/101 1250/1876/101 +f 1261/1887/101 1262/1891/101 1259/1888/101 +f 1257/1890/99 1259/1888/99 1262/1891/99 +f 1256/1893/106 1261/1887/106 1260/1889/106 +f 1258/1895/104 1262/1891/104 1261/1887/104 +f 1255/1897/102 1260/1889/102 1259/1888/102 +f 1270/1899/101 1265/1906/101 1266/1900/101 +f 1267/1902/103 1263/1909/103 1264/1903/103 +f 1269/1905/106 1264/1903/106 1265/1906/106 +f 1268/1908/99 1266/1900/99 1263/1909/99 +f 1264/1903/104 1263/1909/104 1266/1900/104 +f 1277/1911/104 1278/1915/104 1275/1912/104 +f 1273/1914/99 1275/1912/99 1278/1915/99 +f 1272/1917/106 1277/1911/106 1276/1913/106 +f 1274/1919/103 1278/1915/103 1277/1911/103 +f 1271/1921/101 1276/1913/101 1275/1912/101 +f 1285/1923/104 1286/1927/104 1283/1924/104 +f 1281/1926/99 1283/1924/99 1286/1927/99 +f 1280/1929/106 1285/1923/106 1284/1925/106 +f 1282/1931/103 1286/1927/103 1285/1923/103 +f 1279/1933/101 1284/1925/101 1283/1924/101 +f 1293/1935/104 1294/1939/104 1291/1936/104 +f 1289/1938/99 1291/1936/99 1294/1939/99 +f 1288/1941/106 1293/1935/106 1292/1937/106 +f 1290/1943/103 1294/1939/103 1293/1935/103 +f 1287/1945/101 1292/1937/101 1291/1936/101 +f 1302/1947/101 1297/1954/101 1298/1948/101 +f 1299/1950/103 1295/1957/103 1296/1951/103 +f 1301/1953/106 1296/1951/106 1297/1954/106 +f 1300/1956/99 1298/1948/99 1295/1957/99 +f 1296/1951/104 1295/1957/104 1298/1948/104 +f 1310/1959/101 1305/1966/101 1306/1960/101 +f 1307/1962/103 1303/1969/103 1304/1963/103 +f 1309/1965/106 1304/1963/106 1305/1966/106 +f 1308/1968/99 1306/1960/99 1303/1969/99 +f 1304/1963/104 1303/1969/104 1306/1960/104 +f 1322/1971/101 1317/1978/101 1318/1972/101 +f 1319/1974/103 1315/1981/103 1316/1975/103 +f 1321/1977/106 1316/1975/106 1317/1978/106 +f 1320/1980/99 1318/1972/99 1315/1981/99 +f 1316/1975/104 1315/1981/104 1318/1972/104 +f 1329/1983/104 1330/1987/104 1327/1984/104 +f 1325/1986/99 1327/1984/99 1330/1987/99 +f 1324/1989/106 1329/1983/106 1328/1985/106 +f 1326/1991/103 1330/1987/103 1329/1983/103 +f 1323/1993/101 1328/1985/101 1327/1984/101 +f 1338/1995/101 1333/2002/101 1334/1996/101 +f 1335/1998/103 1331/2005/103 1332/1999/103 +f 1337/2001/106 1332/1999/106 1333/2002/106 +f 1336/2004/99 1334/1996/99 1331/2005/99 +f 1332/1999/104 1331/2005/104 1334/1996/104 +f 1345/2007/104 1346/2011/104 1343/2008/104 +f 1341/2010/99 1343/2008/99 1346/2011/99 +f 1340/2013/106 1345/2007/106 1344/2009/106 +f 1342/2015/103 1346/2011/103 1345/2007/103 +f 1339/2017/101 1344/2009/101 1343/2008/101 +f 1350/2019/106 1349/2077/106 1313/2020/106 +f 1312/2022/104 1314/2021/104 1313/2023/104 +f 1349/2025/102 1350/2019/102 1348/2026/102 +f 1312/2022/99 1311/2078/99 1347/2028/99 +f 1314/2021/101 1312/2022/101 1348/2026/101 +f 1357/2029/104 1358/2033/104 1355/2030/104 +f 1353/2032/99 1355/2030/99 1358/2033/99 +f 1352/2035/106 1357/2029/106 1356/2031/106 +f 1354/2037/103 1358/2033/103 1357/2029/103 +f 1351/2039/101 1356/2031/101 1355/2030/101 +f 1366/2041/101 1361/2048/101 1362/2042/101 +f 1363/2044/103 1359/2051/103 1360/2045/103 +f 1365/2047/106 1360/2045/106 1361/2048/106 +f 1364/2050/99 1362/2042/99 1359/2051/99 +f 1360/2045/104 1359/2051/104 1362/2042/104 o Head v -4.000008 0.000002 -5.000000 v 3.999992 -0.000002 -5.000000 @@ -5851,248 +5925,248 @@ vn 0.1445 0.9063 -0.3971 vn 0.8917 0.2418 -0.3825 vn -0.3068 -0.0904 -0.9474 s off -f 1328/2063/100 1329/2064/100 1327/2065/100 -f 1331/2066/101 1334/2067/101 1332/2068/101 -f 1335/2069/102 1338/2070/102 1336/2071/102 -f 1340/2072/103 1342/2073/103 1339/2074/103 -f 1343/2075/104 1345/2076/104 1344/2077/104 -f 1349/2078/105 1348/2079/105 1347/2080/105 -f 1327/2065/106 1350/2081/106 1328/2063/106 -f 1350/2082/107 1331/2066/107 1332/2068/107 -f 1332/2068/108 1330/2083/108 1328/2063/108 -f 1350/2084/109 1332/2068/109 1328/2063/109 -f 1336/2071/110 1333/2085/110 1331/2066/110 -f 1349/2086/111 1335/2069/111 1336/2071/111 -f 1349/2087/112 1336/2071/112 1331/2066/112 -f 1339/2088/113 1337/2089/113 1335/2069/113 -f 1347/2090/114 1340/2072/114 1339/2074/114 -f 1347/2091/115 1339/2088/115 1335/2069/115 -f 1341/2092/116 1327/2065/116 1329/2064/116 -f 1348/2093/117 1327/2065/117 1340/2072/117 -f 1333/2085/118 1346/2094/118 1334/2067/118 -f 1346/2095/119 1329/2064/119 1330/2083/119 -f 1334/2067/120 1346/2096/120 1330/2083/120 -f 1337/2089/121 1345/2097/121 1338/2070/121 -f 1338/2070/122 1345/2098/122 1333/2085/122 -f 1341/2092/123 1344/2099/123 1342/2073/123 -f 1342/2100/124 1344/2101/124 1337/2089/124 -f 1341/2092/125 1329/2064/125 1343/2102/125 -f 1353/2103/100 1393/2104/100 1391/2105/100 -f 1352/2106/116 1358/2107/116 1354/2108/116 -f 1353/2103/108 1355/2109/108 1351/2110/108 -f 1356/2111/103 1363/2112/103 1362/2113/103 -f 1364/2114/101 1355/2109/101 1361/2115/101 -f 1360/2116/104 1369/2117/104 1370/2118/104 -f 1352/2106/104 1369/2119/104 1356/2111/104 -f 1366/2120/104 1352/2106/104 1351/2110/104 -f 1368/2121/104 1351/2110/104 1355/2109/104 -f 1368/2122/104 1359/2123/104 1367/2124/104 -f 1361/2115/105 1374/2125/105 1373/2126/105 -f 1353/2103/105 1374/2127/105 1357/2128/105 -f 1354/2108/105 1372/2129/105 1353/2103/105 -f 1376/2130/105 1354/2108/105 1358/2107/105 -f 1376/2131/105 1362/2113/105 1375/2132/105 -f 1367/2133/102 1364/2114/102 1377/2134/102 -f 1361/2135/126 1377/2134/126 1364/2114/126 -f 1360/2116/102 1378/2136/102 1363/2112/102 -f 1378/2136/126 1362/2137/126 1363/2112/126 -f 1387/2138/104 1390/2139/104 1388/2140/104 -f 1381/2141/103 1388/2140/103 1382/2142/103 -f 1390/2139/101 1385/2143/101 1386/2144/101 -f 1385/2143/101 1389/2145/101 1383/2146/101 -f 1381/2141/103 1379/2147/103 1387/2138/103 -f 1379/2147/127 1389/2145/127 1387/2138/127 -f 1386/2144/101 1384/2148/101 1390/2139/101 -f 1382/2142/103 1388/2140/103 1380/2149/103 -f 1390/2139/128 1380/2149/128 1388/2140/128 -f 1391/2105/100 1354/2108/100 1353/2103/100 -f 1398/2150/103 1391/2151/103 1393/2152/103 -f 1396/2153/104 1392/2154/104 1391/2155/104 -f 1395/2156/101 1394/2157/101 1392/2158/101 -f 1397/2159/105 1393/2160/105 1394/2161/105 -f 1352/2106/100 1393/2104/100 1351/2110/100 -f 1354/2108/100 1394/2162/100 1352/2106/100 -f 1398/2150/100 1395/2156/100 1396/2153/100 -f 1429/2163/129 1434/2164/129 1432/2165/129 -f 1465/2166/130 1470/2167/130 1468/2168/130 -f 1477/2169/100 1478/2170/100 1479/2171/100 -f 1480/2172/100 1482/2173/100 1481/2174/100 -f 1472/2175/105 1477/2169/105 1471/2176/105 -f 1475/2177/107 1482/2178/107 1476/2179/107 -f 1474/2180/104 1481/2174/104 1475/2177/104 -f 1471/2176/123 1479/2181/123 1473/2182/123 -f 1476/2183/114 1480/2172/114 1474/2180/114 -f 1473/2184/118 1478/2170/118 1472/2175/118 -f 1328/2063/100 1330/2083/100 1329/2064/100 -f 1331/2066/101 1333/2085/101 1334/2067/101 -f 1335/2069/102 1337/2089/102 1338/2070/102 -f 1340/2072/103 1341/2092/103 1342/2073/103 -f 1343/2075/104 1346/2095/104 1345/2076/104 -f 1349/2078/105 1350/2081/105 1348/2079/105 -f 1327/2065/106 1348/2079/106 1350/2081/106 -f 1350/2082/107 1349/2185/107 1331/2066/107 -f 1332/2068/108 1334/2067/108 1330/2083/108 -f 1336/2071/110 1338/2070/110 1333/2085/110 -f 1349/2086/111 1347/2186/111 1335/2069/111 -f 1339/2088/113 1342/2100/113 1337/2089/113 -f 1347/2090/114 1348/2187/114 1340/2072/114 -f 1341/2092/116 1340/2072/116 1327/2065/116 -f 1333/2085/118 1345/2188/118 1346/2094/118 -f 1346/2095/119 1343/2075/119 1329/2064/119 -f 1337/2089/121 1344/2189/121 1345/2097/121 -f 1341/2092/123 1343/2190/123 1344/2099/123 -f 1353/2103/100 1351/2110/100 1393/2104/100 -f 1352/2106/116 1356/2111/116 1358/2107/116 -f 1353/2103/108 1357/2128/108 1355/2109/108 -f 1362/2113/103 1358/2107/103 1356/2111/103 -f 1356/2111/103 1360/2116/103 1363/2112/103 -f 1359/2123/101 1355/2109/101 1364/2114/101 -f 1355/2109/101 1357/2128/101 1361/2115/101 -f 1360/2116/104 1356/2111/104 1369/2117/104 -f 1352/2106/104 1365/2191/104 1369/2119/104 -f 1366/2120/104 1365/2192/104 1352/2106/104 -f 1368/2121/104 1366/2193/104 1351/2110/104 -f 1368/2122/104 1355/2109/104 1359/2123/104 -f 1361/2115/105 1357/2128/105 1374/2125/105 -f 1353/2103/105 1372/2194/105 1374/2127/105 -f 1354/2108/105 1371/2195/105 1372/2129/105 -f 1376/2130/105 1371/2196/105 1354/2108/105 -f 1376/2131/105 1358/2107/105 1362/2113/105 -f 1367/2133/102 1359/2123/102 1364/2114/102 -f 1361/2135/126 1373/2197/126 1377/2134/126 -f 1360/2116/102 1370/2198/102 1378/2136/102 -f 1378/2136/126 1375/2199/126 1362/2137/126 -f 1387/2138/104 1389/2145/104 1390/2139/104 -f 1381/2141/103 1387/2138/103 1388/2140/103 -f 1390/2139/101 1389/2145/101 1385/2143/101 -f 1379/2147/127 1383/2146/127 1389/2145/127 -f 1390/2139/128 1384/2148/128 1380/2149/128 -f 1391/2105/100 1392/2200/100 1354/2108/100 -f 1398/2150/103 1396/2153/103 1391/2151/103 -f 1396/2153/104 1395/2156/104 1392/2154/104 -f 1395/2156/101 1397/2159/101 1394/2157/101 -f 1397/2159/105 1398/2150/105 1393/2160/105 -f 1352/2106/100 1394/2162/100 1393/2104/100 -f 1354/2108/100 1392/2200/100 1394/2162/100 -f 1398/2150/100 1397/2159/100 1395/2156/100 -f 1425/2201/129 1424/2202/129 1423/2203/129 -f 1423/2203/129 1434/2164/129 1425/2201/129 -f 1434/2164/129 1433/2204/129 1432/2165/129 -f 1425/2201/129 1434/2164/129 1429/2163/129 -f 1432/2165/129 1431/2205/129 1429/2163/129 -f 1431/2205/129 1430/2206/129 1429/2163/129 -f 1429/2163/129 1428/2207/129 1427/2208/129 -f 1427/2208/129 1426/2209/129 1429/2163/129 -f 1426/2209/129 1425/2201/129 1429/2163/129 -f 1461/2210/130 1460/2211/130 1459/2212/130 -f 1459/2212/130 1470/2167/130 1461/2210/130 -f 1470/2167/130 1469/2213/130 1468/2168/130 -f 1461/2210/130 1470/2167/130 1465/2166/130 -f 1468/2168/130 1467/2214/130 1465/2166/130 -f 1467/2214/130 1466/2215/130 1465/2166/130 -f 1465/2166/130 1464/2216/130 1463/2217/130 -f 1463/2217/130 1462/2218/130 1465/2166/130 -f 1462/2218/130 1461/2210/130 1465/2166/130 -f 1472/2175/105 1478/2170/105 1477/2169/105 -f 1475/2177/107 1481/2174/107 1482/2178/107 -f 1474/2180/104 1480/2172/104 1481/2174/104 -f 1471/2176/123 1477/2169/123 1479/2181/123 -f 1476/2183/114 1482/2219/114 1480/2172/114 -f 1473/2184/118 1479/2220/118 1478/2170/118 +f 1368/2079/114 1369/2080/114 1367/2081/114 +f 1371/2082/115 1374/2083/115 1372/2084/115 +f 1375/2085/116 1378/2086/116 1376/2087/116 +f 1380/2088/117 1382/2089/117 1379/2090/117 +f 1383/2091/118 1385/2092/118 1384/2093/118 +f 1389/2094/119 1388/2095/119 1387/2096/119 +f 1367/2081/120 1390/2097/120 1368/2079/120 +f 1390/2098/121 1371/2082/121 1372/2084/121 +f 1372/2084/122 1370/2099/122 1368/2079/122 +f 1390/2100/123 1372/2084/123 1368/2079/123 +f 1376/2087/124 1373/2101/124 1371/2082/124 +f 1389/2102/125 1375/2085/125 1376/2087/125 +f 1389/2103/126 1376/2087/126 1371/2082/126 +f 1379/2104/127 1377/2105/127 1375/2085/127 +f 1387/2106/128 1380/2088/128 1379/2090/128 +f 1387/2107/129 1379/2104/129 1375/2085/129 +f 1381/2108/130 1367/2081/130 1369/2080/130 +f 1388/2109/131 1367/2081/131 1380/2088/131 +f 1373/2101/132 1386/2110/132 1374/2083/132 +f 1386/2111/133 1369/2080/133 1370/2099/133 +f 1374/2083/134 1386/2112/134 1370/2099/134 +f 1377/2105/135 1385/2113/135 1378/2086/135 +f 1378/2086/136 1385/2114/136 1373/2101/136 +f 1381/2108/137 1384/2115/137 1382/2089/137 +f 1382/2116/138 1384/2117/138 1377/2105/138 +f 1381/2108/139 1369/2080/139 1383/2118/139 +f 1393/2119/114 1433/2120/114 1431/2121/114 +f 1392/2122/130 1398/2123/130 1394/2124/130 +f 1393/2119/122 1395/2125/122 1391/2126/122 +f 1396/2127/117 1403/2128/117 1402/2129/117 +f 1404/2130/115 1395/2125/115 1401/2131/115 +f 1400/2132/118 1409/2133/118 1410/2134/118 +f 1392/2122/118 1409/2135/118 1396/2127/118 +f 1406/2136/118 1392/2122/118 1391/2126/118 +f 1408/2137/118 1391/2126/118 1395/2125/118 +f 1408/2138/118 1399/2139/118 1407/2140/118 +f 1401/2131/119 1414/2141/119 1413/2142/119 +f 1393/2119/119 1414/2143/119 1397/2144/119 +f 1394/2124/119 1412/2145/119 1393/2119/119 +f 1416/2146/119 1394/2124/119 1398/2123/119 +f 1416/2147/119 1402/2129/119 1415/2148/119 +f 1407/2149/116 1404/2130/116 1417/2150/116 +f 1401/2151/140 1417/2150/140 1404/2130/140 +f 1400/2132/116 1418/2152/116 1403/2128/116 +f 1418/2152/140 1402/2153/140 1403/2128/140 +f 1427/2154/118 1430/2155/118 1428/2156/118 +f 1421/2157/117 1428/2156/117 1422/2158/117 +f 1430/2155/115 1425/2159/115 1426/2160/115 +f 1425/2159/115 1429/2161/115 1423/2162/115 +f 1421/2157/117 1419/2163/117 1427/2154/117 +f 1419/2163/141 1429/2161/141 1427/2154/141 +f 1426/2160/115 1424/2164/115 1430/2155/115 +f 1422/2158/117 1428/2156/117 1420/2165/117 +f 1430/2155/142 1420/2165/142 1428/2156/142 +f 1431/2121/114 1394/2124/114 1393/2119/114 +f 1438/2166/117 1431/2167/117 1433/2168/117 +f 1436/2169/118 1432/2170/118 1431/2171/118 +f 1435/2172/115 1434/2173/115 1432/2174/115 +f 1437/2175/119 1433/2176/119 1434/2177/119 +f 1392/2122/114 1433/2120/114 1391/2126/114 +f 1394/2124/114 1434/2178/114 1392/2122/114 +f 1438/2166/114 1435/2172/114 1436/2169/114 +f 1469/2179/143 1474/2180/143 1472/2181/143 +f 1505/2182/144 1510/2183/144 1508/2184/144 +f 1517/2185/114 1518/2186/114 1519/2187/114 +f 1520/2188/114 1522/2189/114 1521/2190/114 +f 1512/2191/119 1517/2185/119 1511/2192/119 +f 1515/2193/121 1522/2194/121 1516/2195/121 +f 1514/2196/118 1521/2190/118 1515/2193/118 +f 1511/2192/137 1519/2197/137 1513/2198/137 +f 1516/2199/128 1520/2188/128 1514/2196/128 +f 1513/2200/132 1518/2186/132 1512/2191/132 +f 1368/2079/114 1370/2099/114 1369/2080/114 +f 1371/2082/115 1373/2101/115 1374/2083/115 +f 1375/2085/116 1377/2105/116 1378/2086/116 +f 1380/2088/117 1381/2108/117 1382/2089/117 +f 1383/2091/118 1386/2111/118 1385/2092/118 +f 1389/2094/119 1390/2097/119 1388/2095/119 +f 1367/2081/120 1388/2095/120 1390/2097/120 +f 1390/2098/121 1389/2201/121 1371/2082/121 +f 1372/2084/122 1374/2083/122 1370/2099/122 +f 1376/2087/124 1378/2086/124 1373/2101/124 +f 1389/2102/125 1387/2202/125 1375/2085/125 +f 1379/2104/127 1382/2116/127 1377/2105/127 +f 1387/2106/128 1388/2203/128 1380/2088/128 +f 1381/2108/130 1380/2088/130 1367/2081/130 +f 1373/2101/132 1385/2204/132 1386/2110/132 +f 1386/2111/133 1383/2091/133 1369/2080/133 +f 1377/2105/135 1384/2205/135 1385/2113/135 +f 1381/2108/137 1383/2206/137 1384/2115/137 +f 1393/2119/114 1391/2126/114 1433/2120/114 +f 1392/2122/130 1396/2127/130 1398/2123/130 +f 1393/2119/122 1397/2144/122 1395/2125/122 +f 1402/2129/117 1398/2123/117 1396/2127/117 +f 1396/2127/117 1400/2132/117 1403/2128/117 +f 1399/2139/115 1395/2125/115 1404/2130/115 +f 1395/2125/115 1397/2144/115 1401/2131/115 +f 1400/2132/118 1396/2127/118 1409/2133/118 +f 1392/2122/118 1405/2207/118 1409/2135/118 +f 1406/2136/118 1405/2208/118 1392/2122/118 +f 1408/2137/118 1406/2209/118 1391/2126/118 +f 1408/2138/118 1395/2125/118 1399/2139/118 +f 1401/2131/119 1397/2144/119 1414/2141/119 +f 1393/2119/119 1412/2210/119 1414/2143/119 +f 1394/2124/119 1411/2211/119 1412/2145/119 +f 1416/2146/119 1411/2212/119 1394/2124/119 +f 1416/2147/119 1398/2123/119 1402/2129/119 +f 1407/2149/116 1399/2139/116 1404/2130/116 +f 1401/2151/140 1413/2213/140 1417/2150/140 +f 1400/2132/116 1410/2214/116 1418/2152/116 +f 1418/2152/140 1415/2215/140 1402/2153/140 +f 1427/2154/118 1429/2161/118 1430/2155/118 +f 1421/2157/117 1427/2154/117 1428/2156/117 +f 1430/2155/115 1429/2161/115 1425/2159/115 +f 1419/2163/141 1423/2162/141 1429/2161/141 +f 1430/2155/142 1424/2164/142 1420/2165/142 +f 1431/2121/114 1432/2216/114 1394/2124/114 +f 1438/2166/117 1436/2169/117 1431/2167/117 +f 1436/2169/118 1435/2172/118 1432/2170/118 +f 1435/2172/115 1437/2175/115 1434/2173/115 +f 1437/2175/119 1438/2166/119 1433/2176/119 +f 1392/2122/114 1434/2178/114 1433/2120/114 +f 1394/2124/114 1432/2216/114 1434/2178/114 +f 1438/2166/114 1437/2175/114 1435/2172/114 +f 1465/2217/143 1464/2218/143 1463/2219/143 +f 1463/2219/143 1474/2180/143 1465/2217/143 +f 1474/2180/143 1473/2220/143 1472/2181/143 +f 1465/2217/143 1474/2180/143 1469/2179/143 +f 1472/2181/143 1471/2221/143 1469/2179/143 +f 1471/2221/143 1470/2222/143 1469/2179/143 +f 1469/2179/143 1468/2223/143 1467/2224/143 +f 1467/2224/143 1466/2225/143 1469/2179/143 +f 1466/2225/143 1465/2217/143 1469/2179/143 +f 1501/2226/144 1500/2227/144 1499/2228/144 +f 1499/2228/144 1510/2183/144 1501/2226/144 +f 1510/2183/144 1509/2229/144 1508/2184/144 +f 1501/2226/144 1510/2183/144 1505/2182/144 +f 1508/2184/144 1507/2230/144 1505/2182/144 +f 1507/2230/144 1506/2231/144 1505/2182/144 +f 1505/2182/144 1504/2232/144 1503/2233/144 +f 1503/2233/144 1502/2234/144 1505/2182/144 +f 1502/2234/144 1501/2226/144 1505/2182/144 +f 1512/2191/119 1518/2186/119 1517/2185/119 +f 1515/2193/121 1521/2190/121 1522/2194/121 +f 1514/2196/118 1520/2188/118 1521/2190/118 +f 1511/2192/137 1517/2185/137 1519/2197/137 +f 1516/2199/128 1522/2235/128 1520/2188/128 +f 1513/2200/132 1519/2236/132 1518/2186/132 s 1 -f 1401/2221/131 1414/2222/132 1402/2223/132 -f 1420/2224/133 1409/2225/134 1408/2226/133 -f 1405/2227/135 1418/2228/136 1406/2229/136 -f 1402/2223/132 1415/2230/137 1403/2231/137 -f 1421/2232/134 1410/2233/138 1409/2225/134 -f 1411/2234/139 1400/2235/140 1399/2236/139 -f 1418/2228/136 1407/2237/141 1406/2229/136 -f 1415/2230/137 1404/2238/142 1403/2231/137 -f 1410/2233/138 1411/2234/139 1399/2236/139 -f 1412/2239/140 1401/2221/131 1400/2235/140 -f 1419/2240/141 1408/2226/133 1407/2237/141 -f 1416/2241/142 1405/2242/135 1404/2238/142 -f 1507/2243/143 1520/2244/144 1508/2245/144 -f 1529/2246/145 1518/2247/146 1517/2248/145 -f 1522/2249/147 1511/2250/148 1510/2251/147 -f 1525/2252/149 1514/2253/150 1513/2254/149 -f 1516/2255/151 1529/2246/145 1517/2248/145 -f 1521/2256/152 1510/2251/147 1509/2257/152 -f 1524/2258/153 1513/2259/149 1512/2260/153 -f 1515/2261/154 1528/2262/151 1516/2255/151 -f 1508/2245/144 1521/2256/152 1509/2257/152 -f 1518/2247/146 1519/2263/143 1507/2243/143 -f 1523/2264/148 1512/2260/153 1511/2250/148 -f 1514/2253/150 1527/2265/154 1515/2261/154 -f 1437/2266/155 1450/2267/156 1438/2268/156 -f 1456/2269/157 1445/2270/158 1444/2271/157 -f 1441/2272/159 1454/2273/160 1442/2274/160 -f 1438/2268/156 1451/2275/161 1439/2276/161 -f 1457/2277/158 1446/2278/162 1445/2270/158 -f 1447/2279/163 1436/2280/164 1435/2281/163 -f 1442/2274/160 1455/2282/165 1443/2283/165 -f 1439/2276/161 1452/2284/166 1440/2285/166 -f 1446/2278/162 1447/2279/163 1435/2281/163 -f 1448/2286/164 1437/2266/155 1436/2280/164 -f 1455/2282/165 1444/2271/157 1443/2283/165 -f 1452/2284/166 1441/2287/159 1440/2285/166 -f 1490/2288/167 1503/2289/168 1491/2290/168 -f 1499/2291/169 1488/2292/170 1487/2293/169 -f 1494/2294/171 1495/2295/172 1483/2296/172 -f 1484/2297/173 1497/2298/174 1485/2299/174 -f 1491/2290/168 1504/2300/175 1492/2301/175 -f 1500/2302/170 1489/2303/176 1488/2292/170 -f 1497/2298/174 1486/2304/177 1485/2299/174 -f 1492/2301/175 1505/2305/178 1493/2306/178 -f 1489/2307/176 1502/2308/167 1490/2288/167 -f 1498/2309/177 1487/2293/169 1486/2304/177 -f 1505/2305/178 1494/2294/171 1493/2306/178 -f 1495/2295/172 1484/2297/173 1483/2296/172 -f 1401/2221/131 1413/2310/131 1414/2222/132 -f 1420/2224/133 1421/2232/134 1409/2225/134 -f 1405/2227/135 1417/2311/135 1418/2228/136 -f 1402/2223/132 1414/2222/132 1415/2230/137 -f 1421/2232/134 1422/2312/138 1410/2233/138 -f 1411/2234/139 1412/2239/140 1400/2235/140 -f 1418/2228/136 1419/2240/141 1407/2237/141 -f 1415/2230/137 1416/2241/142 1404/2238/142 -f 1410/2233/138 1422/2312/138 1411/2234/139 -f 1412/2239/140 1413/2310/131 1401/2221/131 -f 1419/2240/141 1420/2224/133 1408/2226/133 -f 1416/2241/142 1417/2313/135 1405/2242/135 -f 1507/2243/143 1519/2263/143 1520/2244/144 -f 1529/2246/145 1530/2314/146 1518/2247/146 -f 1522/2249/147 1523/2264/148 1511/2250/148 -f 1525/2252/149 1526/2315/150 1514/2253/150 -f 1516/2255/151 1528/2262/151 1529/2246/145 -f 1521/2256/152 1522/2249/147 1510/2251/147 -f 1524/2258/153 1525/2316/149 1513/2259/149 -f 1515/2261/154 1527/2265/154 1528/2262/151 -f 1508/2245/144 1520/2244/144 1521/2256/152 -f 1518/2247/146 1530/2314/146 1519/2263/143 -f 1523/2264/148 1524/2258/153 1512/2260/153 -f 1514/2253/150 1526/2315/150 1527/2265/154 -f 1437/2266/155 1449/2317/155 1450/2267/156 -f 1456/2269/157 1457/2277/158 1445/2270/158 -f 1441/2272/159 1453/2318/159 1454/2273/160 -f 1438/2268/156 1450/2267/156 1451/2275/161 -f 1457/2277/158 1458/2319/162 1446/2278/162 -f 1447/2279/163 1448/2286/164 1436/2280/164 -f 1442/2274/160 1454/2273/160 1455/2282/165 -f 1439/2276/161 1451/2275/161 1452/2284/166 -f 1446/2278/162 1458/2319/162 1447/2279/163 -f 1448/2286/164 1449/2317/155 1437/2266/155 -f 1455/2282/165 1456/2269/157 1444/2271/157 -f 1452/2284/166 1453/2320/159 1441/2287/159 -f 1490/2288/167 1502/2308/167 1503/2289/168 -f 1499/2291/169 1500/2302/170 1488/2292/170 -f 1494/2294/171 1506/2321/171 1495/2295/172 -f 1484/2297/173 1496/2322/173 1497/2298/174 -f 1491/2290/168 1503/2289/168 1504/2300/175 -f 1500/2302/170 1501/2323/176 1489/2303/176 -f 1497/2298/174 1498/2309/177 1486/2304/177 -f 1492/2301/175 1504/2300/175 1505/2305/178 -f 1489/2307/176 1501/2324/176 1502/2308/167 -f 1498/2309/177 1499/2291/169 1487/2293/169 -f 1505/2305/178 1506/2321/171 1494/2294/171 -f 1495/2295/172 1496/2322/173 1484/2297/173 +f 1441/2237/145 1454/2238/146 1442/2239/146 +f 1460/2240/147 1449/2241/148 1448/2242/147 +f 1445/2243/149 1458/2244/150 1446/2245/150 +f 1442/2239/146 1455/2246/151 1443/2247/151 +f 1461/2248/148 1450/2249/152 1449/2241/148 +f 1451/2250/153 1440/2251/154 1439/2252/153 +f 1458/2244/150 1447/2253/155 1446/2245/150 +f 1455/2246/151 1444/2254/156 1443/2247/151 +f 1450/2249/152 1451/2250/153 1439/2252/153 +f 1452/2255/154 1441/2237/145 1440/2251/154 +f 1459/2256/155 1448/2242/147 1447/2253/155 +f 1456/2257/156 1445/2258/149 1444/2254/156 +f 1547/2259/157 1560/2260/158 1548/2261/158 +f 1569/2262/159 1558/2263/160 1557/2264/159 +f 1562/2265/161 1551/2266/162 1550/2267/161 +f 1565/2268/163 1554/2269/164 1553/2270/163 +f 1556/2271/165 1569/2262/159 1557/2264/159 +f 1561/2272/166 1550/2267/161 1549/2273/166 +f 1564/2274/167 1553/2275/163 1552/2276/167 +f 1555/2277/168 1568/2278/165 1556/2271/165 +f 1548/2261/158 1561/2272/166 1549/2273/166 +f 1558/2263/160 1559/2279/157 1547/2259/157 +f 1563/2280/162 1552/2276/167 1551/2266/162 +f 1554/2269/164 1567/2281/168 1555/2277/168 +f 1477/2282/169 1490/2283/170 1478/2284/170 +f 1496/2285/171 1485/2286/172 1484/2287/171 +f 1481/2288/173 1494/2289/174 1482/2290/174 +f 1478/2284/170 1491/2291/175 1479/2292/175 +f 1497/2293/172 1486/2294/176 1485/2286/172 +f 1487/2295/177 1476/2296/178 1475/2297/177 +f 1482/2290/174 1495/2298/179 1483/2299/179 +f 1479/2292/175 1492/2300/180 1480/2301/180 +f 1486/2294/176 1487/2295/177 1475/2297/177 +f 1488/2302/178 1477/2282/169 1476/2296/178 +f 1495/2298/179 1484/2287/171 1483/2299/179 +f 1492/2300/180 1481/2303/173 1480/2301/180 +f 1530/2304/181 1543/2305/182 1531/2306/182 +f 1539/2307/183 1528/2308/184 1527/2309/183 +f 1534/2310/185 1535/2311/186 1523/2312/186 +f 1524/2313/187 1537/2314/188 1525/2315/188 +f 1531/2306/182 1544/2316/189 1532/2317/189 +f 1540/2318/184 1529/2319/190 1528/2308/184 +f 1537/2314/188 1526/2320/191 1525/2315/188 +f 1532/2317/189 1545/2321/192 1533/2322/192 +f 1529/2323/190 1542/2324/181 1530/2304/181 +f 1538/2325/191 1527/2309/183 1526/2320/191 +f 1545/2321/192 1534/2310/185 1533/2322/192 +f 1535/2311/186 1524/2313/187 1523/2312/186 +f 1441/2237/145 1453/2326/145 1454/2238/146 +f 1460/2240/147 1461/2248/148 1449/2241/148 +f 1445/2243/149 1457/2327/149 1458/2244/150 +f 1442/2239/146 1454/2238/146 1455/2246/151 +f 1461/2248/148 1462/2328/152 1450/2249/152 +f 1451/2250/153 1452/2255/154 1440/2251/154 +f 1458/2244/150 1459/2256/155 1447/2253/155 +f 1455/2246/151 1456/2257/156 1444/2254/156 +f 1450/2249/152 1462/2328/152 1451/2250/153 +f 1452/2255/154 1453/2326/145 1441/2237/145 +f 1459/2256/155 1460/2240/147 1448/2242/147 +f 1456/2257/156 1457/2329/149 1445/2258/149 +f 1547/2259/157 1559/2279/157 1560/2260/158 +f 1569/2262/159 1570/2330/160 1558/2263/160 +f 1562/2265/161 1563/2280/162 1551/2266/162 +f 1565/2268/163 1566/2331/164 1554/2269/164 +f 1556/2271/165 1568/2278/165 1569/2262/159 +f 1561/2272/166 1562/2265/161 1550/2267/161 +f 1564/2274/167 1565/2332/163 1553/2275/163 +f 1555/2277/168 1567/2281/168 1568/2278/165 +f 1548/2261/158 1560/2260/158 1561/2272/166 +f 1558/2263/160 1570/2330/160 1559/2279/157 +f 1563/2280/162 1564/2274/167 1552/2276/167 +f 1554/2269/164 1566/2331/164 1567/2281/168 +f 1477/2282/169 1489/2333/169 1490/2283/170 +f 1496/2285/171 1497/2293/172 1485/2286/172 +f 1481/2288/173 1493/2334/173 1494/2289/174 +f 1478/2284/170 1490/2283/170 1491/2291/175 +f 1497/2293/172 1498/2335/176 1486/2294/176 +f 1487/2295/177 1488/2302/178 1476/2296/178 +f 1482/2290/174 1494/2289/174 1495/2298/179 +f 1479/2292/175 1491/2291/175 1492/2300/180 +f 1486/2294/176 1498/2335/176 1487/2295/177 +f 1488/2302/178 1489/2333/169 1477/2282/169 +f 1495/2298/179 1496/2285/171 1484/2287/171 +f 1492/2300/180 1493/2336/173 1481/2303/173 +f 1530/2304/181 1542/2324/181 1543/2305/182 +f 1539/2307/183 1540/2318/184 1528/2308/184 +f 1534/2310/185 1546/2337/185 1535/2311/186 +f 1524/2313/187 1536/2338/187 1537/2314/188 +f 1531/2306/182 1543/2305/182 1544/2316/189 +f 1540/2318/184 1541/2339/190 1529/2319/190 +f 1537/2314/188 1538/2325/191 1526/2320/191 +f 1532/2317/189 1544/2316/189 1545/2321/192 +f 1529/2323/190 1541/2340/190 1542/2324/181 +f 1538/2325/191 1539/2307/183 1527/2309/183 +f 1545/2321/192 1546/2337/185 1534/2310/185 +f 1535/2311/186 1536/2338/187 1524/2313/187 diff --git a/src/main/resources/assets/hbm/models/armor/test.obj b/src/main/resources/assets/hbm/models/armor/test.obj new file mode 100644 index 000000000..614588e3e --- /dev/null +++ b/src/main/resources/assets/hbm/models/armor/test.obj @@ -0,0 +1,219 @@ +# Blender v2.79 (sub 0) OBJ File: 'test.blend' +# www.blender.org +o Chest +v -4.000000 12.000000 2.000000 +v 4.000000 12.000000 2.000000 +v -4.000000 12.000000 -2.000000 +v 4.000000 12.000000 -2.000000 +v 4.000000 0.000000 -2.000000 +v -4.000000 0.000000 -2.000000 +v 4.000000 0.000000 2.000000 +v -4.000000 0.000000 2.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 5/1/1 2/2/1 7/3/1 +f 8/4/2 3/5/2 6/6/2 +f 6/6/3 4/7/3 5/1/3 +f 7/3/4 1/8/4 8/4/4 +f 2/2/5 3/5/5 1/8/5 +f 6/6/6 7/3/6 8/4/6 +f 5/1/1 4/7/1 2/2/1 +f 8/4/2 1/8/2 3/5/2 +f 6/6/3 3/5/3 4/7/3 +f 7/3/4 2/2/4 1/8/4 +f 2/2/5 4/7/5 3/5/5 +f 6/6/6 5/1/6 7/3/6 +o LeftArm +v 4.000000 12.000000 2.000000 +v 8.000000 12.000000 2.000000 +v 4.000000 12.000000 -2.000000 +v 8.000000 12.000000 -2.000000 +v 8.000000 0.000000 -2.000000 +v 4.000000 0.000000 -2.000000 +v 8.000000 0.000000 2.000000 +v 4.000000 0.000000 2.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 13/9/7 10/10/7 15/11/7 +f 16/12/8 11/13/8 14/14/8 +f 14/14/9 12/15/9 13/9/9 +f 15/11/10 9/16/10 16/12/10 +f 10/10/11 11/13/11 9/16/11 +f 14/14/12 15/11/12 16/12/12 +f 13/9/7 12/15/7 10/10/7 +f 16/12/8 9/16/8 11/13/8 +f 14/14/9 11/13/9 12/15/9 +f 15/11/10 10/10/10 9/16/10 +f 10/10/11 12/15/11 11/13/11 +f 14/14/12 13/9/12 15/11/12 +o RightArm +v -8.000000 12.000000 2.000000 +v -4.000000 12.000000 2.000000 +v -8.000000 12.000000 -2.000000 +v -4.000000 12.000000 -2.000000 +v -4.000000 0.000000 -2.000000 +v -8.000000 0.000000 -2.000000 +v -4.000000 0.000000 2.000000 +v -8.000000 0.000000 2.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 21/17/13 18/18/13 23/19/13 +f 24/20/14 19/21/14 22/22/14 +f 22/22/15 20/23/15 21/17/15 +f 23/19/16 17/24/16 24/20/16 +f 18/18/17 19/21/17 17/24/17 +f 22/22/18 23/19/18 24/20/18 +f 21/17/13 20/23/13 18/18/13 +f 24/20/14 17/24/14 19/21/14 +f 22/22/15 19/21/15 20/23/15 +f 23/19/16 18/18/16 17/24/16 +f 18/18/17 20/23/17 19/21/17 +f 22/22/18 21/17/18 23/19/18 +o RightLeg +v -4.000000 24.000000 2.000000 +v 0.000000 24.000000 2.000000 +v -4.000000 24.000000 -2.000000 +v 0.000000 24.000000 -2.000000 +v 0.000000 12.000000 -2.000000 +v -4.000000 12.000000 -2.000000 +v 0.000000 12.000000 2.000000 +v -4.000000 12.000000 2.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 29/25/19 26/26/19 31/27/19 +f 32/28/20 27/29/20 30/30/20 +f 30/30/21 28/31/21 29/25/21 +f 31/27/22 25/32/22 32/28/22 +f 26/26/23 27/29/23 25/32/23 +f 30/30/24 31/27/24 32/28/24 +f 29/25/19 28/31/19 26/26/19 +f 32/28/20 25/32/20 27/29/20 +f 30/30/21 27/29/21 28/31/21 +f 31/27/22 26/26/22 25/32/22 +f 26/26/23 28/31/23 27/29/23 +f 30/30/24 29/25/24 31/27/24 +o LeftLeg +v 0.000000 24.000000 2.000000 +v 4.000000 24.000000 2.000000 +v 0.000000 24.000000 -2.000000 +v 4.000000 24.000000 -2.000000 +v 4.000000 12.000000 -2.000000 +v 0.000000 12.000000 -2.000000 +v 4.000000 12.000000 2.000000 +v 0.000000 12.000000 2.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 37/33/25 34/34/25 39/35/25 +f 40/36/26 35/37/26 38/38/26 +f 38/38/27 36/39/27 37/33/27 +f 39/35/28 33/40/28 40/36/28 +f 34/34/29 35/37/29 33/40/29 +f 38/38/30 39/35/30 40/36/30 +f 37/33/25 36/39/25 34/34/25 +f 40/36/26 33/40/26 35/37/26 +f 38/38/27 35/37/27 36/39/27 +f 39/35/28 34/34/28 33/40/28 +f 34/34/29 36/39/29 35/37/29 +f 38/38/30 37/33/30 39/35/30 +o Helmet +v 25.451866 -3.037100 4.881973 +v -4.000000 0.000000 4.000000 +v 4.000000 0.000000 4.000000 +v -4.000000 0.000000 -4.000000 +v 4.000000 0.000000 -4.000000 +v 4.000000 -8.000000 -4.000000 +v -4.000000 -8.000000 -4.000000 +v 4.000000 -8.000000 4.000000 +v -4.000000 -8.000000 4.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 46/41/31 43/42/31 48/43/31 +f 49/44/32 44/45/32 47/46/32 +f 47/46/33 45/47/33 46/41/33 +f 48/43/34 42/48/34 49/44/34 +f 43/42/35 44/45/35 42/48/35 +f 47/46/36 48/43/36 49/44/36 +f 46/41/31 45/47/31 43/42/31 +f 49/44/32 42/48/32 44/45/32 +f 47/46/33 44/45/33 45/47/33 +f 48/43/34 43/42/34 42/48/34 +f 43/42/35 45/47/35 44/45/35 +f 47/46/36 46/41/36 48/43/36 diff --git a/src/main/resources/assets/hbm/models/armor/trenchmaster.obj b/src/main/resources/assets/hbm/models/armor/trenchmaster.obj new file mode 100644 index 000000000..afb0242b7 --- /dev/null +++ b/src/main/resources/assets/hbm/models/armor/trenchmaster.obj @@ -0,0 +1,3533 @@ +# Blender v2.79 (sub 0) OBJ File: 'trenchmaster_scaled.blend' +# www.blender.org +o LeftBoot +v 4.625000 24.299997 2.625000 +v -0.625000 24.299999 2.625000 +v 4.625000 24.299997 -2.625000 +v -0.625000 24.299999 -2.625000 +v 3.575000 24.299999 -3.675000 +v 0.425000 24.299999 -3.675000 +v 3.574999 22.199999 -3.675000 +v 0.424999 22.199999 -3.675000 +v 3.574999 21.149998 -2.625000 +v 0.424999 21.150000 -2.625000 +v 4.625000 22.199999 -2.625000 +v -0.625001 22.200001 -2.625000 +v -0.100001 20.100000 -2.100000 +v 4.099998 20.099998 -2.100000 +v -0.100001 20.100000 2.100000 +v 4.099998 20.099998 2.100000 +v 4.624999 20.099998 2.625000 +v -0.625001 20.100000 2.625000 +v 4.624999 20.099998 -2.625000 +v -0.625001 20.100000 -2.625000 +vt 0.250000 0.000000 +vt 0.000000 0.222222 +vt 0.000000 -0.000000 +vt 0.500000 0.000000 +vt 0.300000 0.044444 +vt 0.250000 0.000000 +vt 0.450000 0.044444 +vt 0.300000 0.133333 +vt 0.450000 0.133333 +vt 0.300000 0.177778 +vt 0.750000 0.400000 +vt 0.525000 0.422222 +vt 0.500000 0.400000 +vt 0.500000 0.311111 +vt 0.275000 0.422222 +vt 0.250000 0.400000 +vt 0.500000 0.133333 +vt 0.500000 0.044444 +vt 0.250000 0.133333 +vt 0.250000 0.044444 +vt 0.450000 0.177778 +vt 0.300000 0.355556 +vt 0.450000 0.355556 +vt 1.000000 0.400000 +vt 0.775000 0.422222 +vt 0.025000 0.422222 +vt 0.000000 0.400000 +vt 0.250000 0.311111 +vt 1.000000 0.222222 +vt 0.750000 0.222222 +vt 0.250000 0.222222 +vt 0.725000 0.422222 +vt 0.500000 0.222222 +vt 0.475000 0.422222 +vt 0.975000 0.422222 +vt 0.225000 0.422222 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.7071 -0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.5774 -0.5774 -0.5773 +vn -0.5773 -0.5773 -0.5774 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 3/4/1 6/5/1 4/6/1 +f 5/7/2 8/8/2 6/5/2 +f 7/9/3 10/10/3 8/8/3 +f 17/11/4 14/12/4 19/13/4 +f 17/11/5 19/13/5 11/14/5 +f 19/13/4 13/15/4 20/16/4 +f 11/17/6 5/7/6 3/18/6 +f 6/5/7 12/19/7 4/20/7 +f 9/21/8 7/9/8 11/17/8 +f 10/22/2 9/23/2 19/13/2 +f 8/8/9 10/10/9 12/19/9 +f 18/24/4 16/25/4 17/11/4 +f 20/16/4 15/26/4 18/27/4 +f 2/2/10 12/28/10 18/27/10 +f 2/29/11 17/11/11 1/30/11 +f 3/1/1 4/31/1 2/2/1 +f 3/4/1 5/7/1 6/5/1 +f 5/7/2 7/9/2 8/8/2 +f 7/9/3 9/21/3 10/10/3 +f 17/11/4 16/32/4 14/12/4 +f 3/33/5 1/30/5 11/14/5 +f 1/30/5 17/11/5 11/14/5 +f 19/13/4 14/34/4 13/15/4 +f 11/17/6 7/9/6 5/7/6 +f 6/5/7 8/8/7 12/19/7 +f 20/16/2 12/28/2 10/22/2 +f 9/23/2 11/14/2 19/13/2 +f 20/16/2 10/22/2 19/13/2 +f 18/24/4 15/35/4 16/25/4 +f 20/16/4 13/36/4 15/26/4 +f 4/31/10 12/28/10 2/2/10 +f 12/28/10 20/16/10 18/27/10 +f 2/29/11 18/24/11 17/11/11 +o RightBoot +v -4.625000 24.300001 2.625000 +v 0.625000 24.299999 2.625000 +v -4.625000 24.300001 -2.625000 +v 0.625000 24.299999 -2.625000 +v -3.575000 24.300001 -3.675000 +v -0.425000 24.299999 -3.675000 +v -3.575000 22.200001 -3.675000 +v -0.425001 22.200001 -3.675000 +v -3.575001 21.150002 -2.625000 +v -0.425001 21.150000 -2.625000 +v -4.625000 22.200001 -2.625000 +v 0.624999 22.199999 -2.625000 +v 0.099999 20.100000 -2.100000 +v -4.100001 20.100002 -2.100000 +v 0.099999 20.100000 2.100000 +v -4.100001 20.100002 2.100000 +v -4.625001 20.100002 2.625000 +v 0.624999 20.100000 2.625000 +v -4.625001 20.100002 -2.625000 +v 0.624999 20.100000 -2.625000 +vt 0.000000 0.222222 +vt 0.250000 0.000000 +vt 0.000000 -0.000000 +vt 0.300000 0.044444 +vt 0.500000 0.000000 +vt 0.250000 0.000000 +vt 0.300000 0.133333 +vt 0.450000 0.044444 +vt 0.300000 0.177778 +vt 0.450000 0.133333 +vt 0.525000 0.422222 +vt 0.750000 0.400000 +vt 0.500000 0.400000 +vt 0.500000 0.311111 +vt 0.275000 0.422222 +vt 0.250000 0.400000 +vt 0.500000 0.133333 +vt 0.500000 0.044444 +vt 0.250000 0.133333 +vt 0.250000 0.044444 +vt 0.450000 0.177778 +vt 0.450000 0.355556 +vt 0.300000 0.355556 +vt 0.775000 0.422222 +vt 1.000000 0.400000 +vt 0.025000 0.422222 +vt 0.000000 0.400000 +vt 0.250000 0.311111 +vt 0.750000 0.222222 +vt 1.000000 0.222222 +vt 0.250000 0.222222 +vt 0.725000 0.422222 +vt 0.500000 0.222222 +vt 0.475000 0.422222 +vt 0.975000 0.422222 +vt 0.225000 0.422222 +vn 0.0000 1.0000 0.0000 +vn -0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn -0.5773 -0.5774 -0.5774 +vn 0.5773 -0.5773 -0.5774 +vn 1.0000 -0.0000 -0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 22/37/12 23/38/12 21/39/12 +f 26/40/12 23/41/12 24/42/12 +f 28/43/13 25/44/13 26/40/13 +f 30/45/14 27/46/14 28/43/14 +f 34/47/15 37/48/15 39/49/15 +f 31/50/16 39/49/16 37/48/16 +f 33/51/15 39/49/15 40/52/15 +f 25/44/17 31/53/17 23/54/17 +f 32/55/18 26/40/18 24/56/18 +f 29/57/19 31/53/19 27/46/19 +f 29/58/13 30/59/13 40/52/13 +f 28/43/20 32/55/20 30/45/20 +f 36/60/15 38/61/15 37/48/15 +f 35/62/15 40/52/15 38/63/15 +f 38/63/21 32/64/21 22/37/21 +f 21/65/22 38/61/22 22/66/22 +f 22/37/12 24/67/12 23/38/12 +f 26/40/12 25/44/12 23/41/12 +f 28/43/13 27/46/13 25/44/13 +f 30/45/14 29/57/14 27/46/14 +f 34/47/15 36/68/15 37/48/15 +f 37/48/16 21/65/16 31/50/16 +f 21/65/16 23/69/16 31/50/16 +f 33/51/15 34/70/15 39/49/15 +f 25/44/17 27/46/17 31/53/17 +f 32/55/18 28/43/18 26/40/18 +f 39/49/13 31/50/13 29/58/13 +f 30/59/13 32/64/13 40/52/13 +f 39/49/13 29/58/13 40/52/13 +f 36/60/15 35/71/15 38/61/15 +f 35/62/15 33/72/15 40/52/15 +f 40/52/21 32/64/21 38/63/21 +f 32/64/21 24/67/21 22/37/21 +f 21/65/22 37/48/22 38/61/22 +o Light +v 2.099990 -5.575001 -5.250000 +v 3.463980 -4.787502 -5.250000 +v 3.463981 -3.212502 -5.250000 +v 2.099991 -2.424999 -5.250000 +v 0.736001 -3.212500 -5.250000 +v 0.736001 -4.787500 -5.250000 +v -2.100009 -5.575001 -5.250000 +v -0.736019 -4.787500 -5.250000 +v -0.736019 -3.212500 -5.250000 +v -2.100008 -2.424999 -5.250000 +v -3.463999 -3.212498 -5.250000 +v -3.463999 -4.787498 -5.250000 +v 1.574989 -10.825001 -7.349999 +v 1.574990 -7.674999 -7.349999 +v -1.575010 -7.674999 -7.349999 +v -1.575011 -10.825001 -7.349999 +v 1.049989 -10.299999 -7.875000 +v 1.049989 -8.200001 -7.875000 +v -1.050010 -8.200001 -7.875000 +v -1.050011 -10.299999 -7.875000 +vt 0.770035 0.472036 +vt 0.770035 0.411685 +vt 0.859930 0.441860 +vt 0.770035 0.411685 +vt 0.829965 0.411685 +vt 0.859930 0.441860 +vt 0.320000 0.372093 +vt 0.420000 0.360465 +vt 0.440000 0.372093 +vt 0.340000 0.313953 +vt 0.420000 0.313953 +vt 0.440000 0.302326 +vt 0.320000 0.302326 +vt 0.340000 0.360465 +vt 0.829965 0.472036 +vt 0.740070 0.441860 +vt 0.829965 0.411685 +vt 0.829965 0.472036 +vt 0.770035 0.472036 +vt 0.740070 0.441860 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.7071 0.0000 -0.7071 +s off +f 41/73/23 45/74/23 43/75/23 +f 51/76/23 50/77/23 49/78/23 +f 56/79/24 57/80/24 53/81/24 +f 57/80/23 59/82/23 58/83/23 +f 53/81/25 58/83/25 54/84/25 +f 54/84/26 59/82/26 55/85/26 +f 55/85/27 60/86/27 56/79/27 +f 43/75/23 42/87/23 41/73/23 +f 41/73/23 46/88/23 45/74/23 +f 45/74/23 44/89/23 43/75/23 +f 49/78/23 48/90/23 51/76/23 +f 48/90/23 47/91/23 51/76/23 +f 47/91/23 52/92/23 51/76/23 +f 56/79/24 60/86/24 57/80/24 +f 57/80/23 60/86/23 59/82/23 +f 53/81/25 57/80/25 58/83/25 +f 54/84/26 58/83/26 59/82/26 +f 55/85/27 59/82/27 60/86/27 +o RightLeg +v -4.100004 11.700002 2.100000 +v 0.099996 11.700001 2.100000 +v -4.100004 11.700002 -2.100000 +v 0.099996 11.700001 -2.100000 +v 0.099999 20.100000 -2.100000 +v -4.100001 20.100002 -2.100000 +v 0.099999 20.100000 2.100000 +v -4.100001 20.100002 2.100000 +v -4.100001 19.050001 2.100000 +v 0.099998 19.049999 2.100000 +v -4.100001 19.050001 -2.100000 +v 0.099998 19.049999 -2.100000 +v -4.625001 19.050001 2.625000 +v 0.624998 19.049999 2.625000 +v -4.625001 19.050001 -2.625000 +v 0.624998 19.049999 -2.625000 +v -4.625003 15.900002 2.625000 +v 0.624997 15.900000 2.625000 +v -4.625003 15.900002 -2.625000 +v 0.624997 15.900000 -2.625000 +v -4.100003 15.900001 2.100000 +v 0.099997 15.900000 2.100000 +v -4.100003 15.900001 -2.100000 +v 0.099997 15.900000 -2.100000 +vt 0.225000 1.000000 +vt 0.025000 0.822222 +vt 0.025000 1.000000 +vt 0.525000 0.422222 +vt 0.725000 0.466667 +vt 0.725000 0.422222 +vt 0.275000 0.422222 +vt 0.475000 0.466667 +vt 0.475000 0.422222 +vt 0.025000 0.422222 +vt 0.225000 0.466667 +vt 0.225000 0.422222 +vt 0.750000 0.488889 +vt 0.975000 0.466667 +vt 0.775000 0.466667 +vt 0.000000 0.488889 +vt 0.025000 0.466667 +vt 0.250000 0.488889 +vt 0.275000 0.466667 +vt 0.500000 0.488889 +vt 0.525000 0.466667 +vt 0.750000 0.622222 +vt 1.000000 0.488889 +vt 0.500000 0.622222 +vt 0.250000 0.622222 +vt 0.000000 0.622222 +vt 0.525000 0.644444 +vt 0.275000 0.644444 +vt 0.025000 0.644444 +vt 0.975000 0.644444 +vt 1.000000 0.622222 +vt 0.975000 0.822222 +vt 0.775000 0.644444 +vt 0.775000 0.822222 +vt 0.725000 0.644444 +vt 0.525000 0.822222 +vt 0.725000 0.822222 +vt 0.475000 0.644444 +vt 0.275000 0.822222 +vt 0.475000 0.822222 +vt 0.225000 0.644444 +vt 0.225000 0.822222 +vt 0.775000 0.422222 +vt 0.975000 0.422222 +vn -0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 63/93/28 62/94/28 61/95/28 +f 66/96/29 69/97/29 68/98/29 +f 65/99/30 71/100/30 66/101/30 +f 67/102/31 72/103/31 65/104/31 +f 73/105/32 70/106/32 69/107/32 +f 74/108/32 72/103/32 70/109/32 +f 76/110/32 71/100/32 72/111/32 +f 75/112/32 69/97/32 71/113/32 +f 77/114/33 74/115/33 73/105/33 +f 79/116/29 73/105/29 75/112/29 +f 80/117/30 75/112/30 76/110/30 +f 78/118/31 76/110/31 74/108/31 +f 83/119/28 77/114/28 79/116/28 +f 84/120/28 79/116/28 80/117/28 +f 82/121/28 80/117/28 78/118/28 +f 77/114/28 82/122/28 78/123/28 +f 62/124/33 81/125/33 61/126/33 +f 81/127/29 63/128/29 61/129/29 +f 83/130/30 64/131/30 63/132/30 +f 84/133/31 62/94/31 64/134/31 +f 68/135/33 70/106/33 67/136/33 +f 63/93/28 64/134/28 62/94/28 +f 66/96/29 71/113/29 69/97/29 +f 65/99/30 72/111/30 71/100/30 +f 67/102/31 70/109/31 72/103/31 +f 73/105/32 74/115/32 70/106/32 +f 74/108/32 76/110/32 72/103/32 +f 76/110/32 75/112/32 71/100/32 +f 75/112/32 73/105/32 69/97/32 +f 77/114/33 78/123/33 74/115/33 +f 79/116/29 77/114/29 73/105/29 +f 80/117/30 79/116/30 75/112/30 +f 78/118/31 80/117/31 76/110/31 +f 83/119/28 81/127/28 77/114/28 +f 84/120/28 83/130/28 79/116/28 +f 82/121/28 84/133/28 80/117/28 +f 77/114/28 81/125/28 82/122/28 +f 62/124/33 82/122/33 81/125/33 +f 81/127/29 83/119/29 63/128/29 +f 83/130/30 84/120/30 64/131/30 +f 84/133/31 82/121/31 62/94/31 +f 68/135/33 69/107/33 70/106/33 +o LeftLeg +v 4.099996 11.700000 2.100000 +v -0.100004 11.700001 2.100000 +v 4.099996 11.700000 -2.100000 +v -0.100004 11.700001 -2.100000 +v -0.100001 20.100000 -2.100000 +v 4.099998 20.099998 -2.100000 +v -0.100001 20.100000 2.100000 +v 4.099998 20.099998 2.100000 +v 4.099998 19.049999 2.100000 +v -0.100002 19.049999 2.100000 +v 4.099998 19.049999 -2.100000 +v -0.100002 19.049999 -2.100000 +v 4.624999 19.049999 2.625000 +v -0.625002 19.049999 2.625000 +v 4.624999 19.049999 -2.625000 +v -0.625002 19.049999 -2.625000 +v 4.624997 15.899998 2.625000 +v -0.625003 15.900000 2.625000 +v 4.624997 15.899998 -2.625000 +v -0.625003 15.900000 -2.625000 +v 4.099997 15.899999 2.100000 +v -0.100003 15.900000 2.100000 +v 4.099997 15.899999 -2.100000 +v -0.100003 15.900000 -2.100000 +vt 0.025000 0.822222 +vt 0.225000 1.000000 +vt 0.025000 1.000000 +vt 0.725000 0.466667 +vt 0.525000 0.422222 +vt 0.725000 0.422222 +vt 0.475000 0.466667 +vt 0.275000 0.422222 +vt 0.475000 0.422222 +vt 0.225000 0.466667 +vt 0.025000 0.422222 +vt 0.225000 0.422222 +vt 0.975000 0.466667 +vt 0.750000 0.488889 +vt 0.775000 0.466667 +vt 0.000000 0.488889 +vt 0.025000 0.466667 +vt 0.250000 0.488889 +vt 0.275000 0.466667 +vt 0.500000 0.488889 +vt 0.525000 0.466667 +vt 1.000000 0.622222 +vt 0.750000 0.622222 +vt 0.500000 0.622222 +vt 0.250000 0.622222 +vt 0.000000 0.622222 +vt 0.525000 0.644444 +vt 0.275000 0.644444 +vt 0.025000 0.644444 +vt 0.775000 0.644444 +vt 0.775000 0.822222 +vt 0.975000 0.644444 +vt 0.975000 0.822222 +vt 0.525000 0.822222 +vt 0.725000 0.644444 +vt 0.725000 0.822222 +vt 0.275000 0.822222 +vt 0.475000 0.644444 +vt 0.475000 0.822222 +vt 0.225000 0.644444 +vt 0.225000 0.822222 +vt 0.775000 0.422222 +vt 0.975000 0.422222 +vt 1.000000 0.488889 +vn -0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 86/137/34 87/138/34 85/139/34 +f 93/140/35 90/141/35 92/142/35 +f 95/143/36 89/144/36 90/145/36 +f 96/146/37 91/147/37 89/148/37 +f 94/149/38 97/150/38 93/151/38 +f 96/146/38 98/152/38 94/153/38 +f 95/143/38 100/154/38 96/155/38 +f 93/140/38 99/156/38 95/157/38 +f 97/150/39 102/158/39 101/159/39 +f 97/150/35 103/160/35 99/156/35 +f 99/156/36 104/161/36 100/154/36 +f 100/154/37 102/162/37 98/152/37 +f 101/159/34 107/163/34 103/160/34 +f 103/160/34 108/164/34 104/161/34 +f 104/161/34 106/165/34 102/162/34 +f 102/158/34 105/166/34 101/159/34 +f 85/167/39 106/168/39 86/169/39 +f 87/170/35 105/171/35 85/172/35 +f 88/173/36 107/174/36 87/175/36 +f 86/137/37 108/176/37 88/177/37 +f 94/149/39 92/178/39 91/179/39 +f 86/137/34 88/177/34 87/138/34 +f 93/140/35 95/157/35 90/141/35 +f 95/143/36 96/155/36 89/144/36 +f 96/146/37 94/153/37 91/147/37 +f 94/149/38 98/180/38 97/150/38 +f 96/146/38 100/154/38 98/152/38 +f 95/143/38 99/156/38 100/154/38 +f 93/140/38 97/150/38 99/156/38 +f 97/150/39 98/180/39 102/158/39 +f 97/150/35 101/159/35 103/160/35 +f 99/156/36 103/160/36 104/161/36 +f 100/154/37 104/161/37 102/162/37 +f 101/159/34 105/171/34 107/163/34 +f 103/160/34 107/174/34 108/164/34 +f 104/161/34 108/176/34 106/165/34 +f 102/158/34 106/168/34 105/166/34 +f 85/167/39 105/166/39 106/168/39 +f 87/170/35 107/163/35 105/171/35 +f 88/173/36 108/164/36 107/174/36 +f 86/137/37 106/165/37 108/176/37 +f 94/149/39 93/151/39 92/178/39 +o RightArm +v -8.625008 1.275002 0.525000 +v -8.625007 2.325003 0.525000 +v -8.625008 1.275002 -0.525000 +v -8.625007 2.325003 -0.525000 +v -9.150007 1.275003 -0.525000 +v -9.150007 1.275003 0.525000 +v -9.150006 2.325005 0.525000 +v -9.150006 2.325005 -0.525000 +v -9.150007 1.800003 -1.050000 +v -9.150007 1.057541 -0.742462 +v -9.150007 0.750004 0.000000 +v -9.150007 1.057541 0.742462 +v -9.150007 1.800003 1.050000 +v -9.150006 2.542467 0.742462 +v -9.150006 2.850004 -0.000000 +v -9.150006 2.542467 -0.742462 +v -9.412508 1.057541 -0.742462 +v -9.412508 1.800003 -1.050000 +v -9.412508 0.750004 0.000000 +v -9.412508 1.057541 0.742462 +v -9.412508 1.800003 1.050000 +v -9.412507 2.542467 0.742462 +v -9.412507 2.850004 -0.000000 +v -9.412507 2.542467 -0.742462 +v -8.625008 1.537502 0.525000 +v -8.625007 2.062502 0.525000 +v -8.625008 1.537502 2.625000 +v -8.625007 2.062502 2.625000 +v -8.887507 1.537504 0.525000 +v -8.887506 2.062504 0.525000 +v -8.887507 1.537504 2.625000 +v -8.887506 2.062504 2.625000 +v -8.887507 0.750004 0.525000 +v -8.887506 2.850004 0.525000 +v -8.887507 0.750004 -0.525000 +v -8.887506 2.850004 -0.525000 +v -8.625008 0.225002 0.525000 +v -8.625008 0.225002 -0.525000 +v -8.625007 3.375002 0.525000 +v -8.625007 3.375002 -0.525000 +v -8.100007 3.900002 2.100000 +v -8.100007 3.900002 -2.100000 +v -3.900007 3.900002 -2.100000 +v -3.900007 3.900002 2.100000 +v -3.375006 3.900002 -2.625000 +v -3.375006 3.900002 2.625000 +v -8.625007 3.900002 -2.625000 +v -8.625007 3.900002 2.625000 +v -3.375008 -0.299997 -2.625000 +v -3.375008 -0.299997 2.625000 +v -8.625008 -0.299997 -2.625000 +v -8.625008 -0.299997 2.625000 +v -4.950008 -2.399998 -2.625000 +v -4.950008 -2.399998 2.625000 +v -8.100006 6.000002 2.100000 +v -3.900006 6.000002 2.100000 +v -3.900006 6.000002 -2.100000 +v -8.100006 6.000002 -2.100000 +v -8.625006 6.000002 -2.625000 +v -8.625006 6.000002 2.625000 +v -3.375006 6.000002 -2.625000 +v -3.375006 6.000002 2.625000 +v -8.625005 10.200003 -2.625000 +v -8.625005 10.200003 2.625000 +v -3.375005 10.200001 -2.625000 +v -3.375005 10.200001 2.625000 +v -3.900005 10.200001 2.100000 +v -3.900005 10.200001 -2.100000 +v -8.100005 10.200003 -2.100000 +v -8.100005 10.200003 2.100000 +v -3.900004 11.250001 -2.100000 +v -3.900004 11.250001 2.100000 +v -8.100004 11.250003 -2.100000 +v -8.100004 11.250003 2.100000 +v -3.375004 11.250001 -2.625000 +v -3.375004 11.250001 2.625000 +v -8.625004 11.250003 -2.625000 +v -8.625004 11.250003 2.625000 +v -3.375004 13.350000 -2.625000 +v -3.375004 13.350000 2.625000 +v -8.100004 13.350002 -2.625000 +v -8.100004 13.350002 2.625000 +v -8.625009 -2.399998 0.525000 +v -5.475008 -2.399998 0.525000 +v -8.625009 -2.399998 -0.525000 +v -5.475008 -2.399998 -0.525000 +v -7.575008 -0.299997 -0.525000 +v -7.575008 -0.299997 0.525000 +v -5.475008 -0.299997 0.525000 +v -5.475008 -0.299997 -0.525000 +vt 0.650000 0.827586 +vt 0.700000 0.810345 +vt 0.700000 0.827586 +vt 0.725000 0.810345 +vt 0.700000 0.844828 +vt 0.700000 0.810345 +vt 0.725000 0.913793 +vt 0.700000 0.879310 +vt 0.725000 0.879310 +vt 0.725000 0.948276 +vt 0.700000 0.913793 +vt 0.725000 0.844828 +vt 0.601300 0.034483 +vt 0.650000 0.000897 +vt 0.698699 0.034483 +vt 0.476300 0.034483 +vt 0.525000 0.000897 +vt 0.573700 0.034483 +vt 0.575000 0.034483 +vt 0.600000 0.017241 +vt 0.600000 0.034483 +vt 0.575000 0.051724 +vt 0.600000 0.068966 +vt 0.575000 0.068966 +vt 0.575000 0.086207 +vt 0.600000 0.103448 +vt 0.575000 0.103448 +vt 0.600000 0.120690 +vt 0.575000 0.120690 +vt 0.575000 -0.000000 +vt 0.575000 0.017241 +vt 0.600000 0.051724 +vt 0.600000 0.086207 +vt 0.600000 0.137931 +vt 0.575000 0.137931 +vt 0.700000 0.896552 +vt 0.650000 0.913793 +vt 0.650000 0.896552 +vt 0.775000 0.810345 +vt 0.750000 0.879310 +vt 0.750000 0.810345 +vt 0.725000 0.810345 +vt 0.725000 0.879310 +vt 0.800000 0.879310 +vt 0.800000 0.810345 +vt 0.750000 0.896552 +vt 0.775000 0.879310 +vt 0.775000 0.896552 +vt 0.750000 0.448276 +vt 0.525000 0.465517 +vt 0.725000 0.465517 +vt 0.250000 0.551724 +vt 0.025000 0.534483 +vt -0.000000 0.551724 +vt 0.975000 0.534483 +vt 0.750000 0.551724 +vt 1.000000 0.551724 +vt 0.525000 0.534483 +vt 0.500000 0.551724 +vt 0.725000 0.534483 +vt 0.475000 0.534483 +vt 0.250000 0.689655 +vt 0.325000 0.758621 +vt 0.500000 0.689655 +vt -0.000000 0.689655 +vt 0.750000 0.689655 +vt 1.000000 0.689655 +vt 0.925000 0.758621 +vt -0.000000 0.758621 +vt 0.750000 0.810345 +vt 0.475000 0.465517 +vt 0.275000 0.534483 +vt 0.775000 0.465517 +vt 0.775000 0.534483 +vt 0.225000 0.465517 +vt 0.225000 0.534483 +vt 0.250000 0.310345 +vt 0.000000 0.448276 +vt 0.250000 0.448276 +vt 0.025000 0.465517 +vt 0.975000 0.465517 +vt 0.500000 0.448276 +vt 0.275000 0.465517 +vt 0.475000 0.293103 +vt 0.500000 0.310345 +vt 1.000000 0.448276 +vt 0.750000 0.310345 +vt 0.975000 0.258621 +vt 0.775000 0.293103 +vt 0.975000 0.293103 +vt 0.525000 0.293103 +vt 1.000000 0.310345 +vt 0.025000 0.293103 +vt -0.000000 0.310345 +vt 0.750000 0.241379 +vt 0.525000 0.258621 +vt 0.725000 0.258621 +vt 0.725000 0.293103 +vt 0.275000 0.258621 +vt 0.275000 0.293103 +vt 0.225000 0.258621 +vt 0.225000 0.293103 +vt 0.475000 0.172414 +vt 0.250000 0.241379 +vt 0.500000 0.241379 +vt 0.475000 0.258621 +vt 0.025000 0.258621 +vt 0.775000 0.258621 +vt 0.250000 -0.000000 +vt 0.250000 0.172414 +vt -0.000000 0.241379 +vt 1.000000 0.241379 +vt 0.775000 0.172414 +vt 0.750000 0.172414 +vt 0.150000 0.931035 +vt 0.100000 0.827586 +vt 0.100000 0.931035 +vt 0.250000 0.896552 +vt 0.150000 0.827586 +vt 0.000000 0.896552 +vt 0.150000 0.758621 +vt 0.100000 1.000000 +vt 0.650000 0.810345 +vt 0.700000 0.948276 +vt 0.650000 0.068069 +vt 0.615564 0.058232 +vt 0.615564 0.010734 +vt 0.684436 0.010734 +vt 0.684436 0.058232 +vt 0.559436 0.058232 +vt 0.525000 0.068069 +vt 0.490564 0.058232 +vt 0.490564 0.010734 +vt 0.559436 0.010734 +vt 0.600000 -0.000000 +vt 0.700000 0.913793 +vt 0.250000 0.758621 +vt 0.500000 0.810345 +vt 0.475000 0.000000 +vt -0.000000 0.172414 +vt 1.000000 0.172414 +vt 0.500000 0.172414 +vt 0.250000 0.827586 +vt 0.000000 0.827586 +vt 0.100000 0.758621 +vt 0.150000 1.000000 +vn -0.8944 0.4472 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn -0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.3827 0.9239 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 0.3827 -0.9239 +vn 0.0000 0.9239 0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 -0.9239 -0.3827 +vn 0.0000 0.9239 -0.3827 +vn -0.8944 -0.4472 0.0000 +vn 0.8000 -0.6000 0.0000 +vn -0.4961 -0.8682 0.0000 +vn -0.9701 0.2425 0.0000 +s off +f 142/181/40 148/182/40 144/183/40 +f 112/184/41 113/185/41 116/186/41 +f 110/187/42 114/188/42 109/189/42 +f 112/190/43 115/191/43 110/187/43 +f 109/189/44 113/185/44 111/192/44 +f 117/193/45 123/194/45 121/195/45 +f 129/196/46 131/197/46 126/198/46 +f 121/199/47 130/200/47 129/201/47 +f 120/202/48 127/203/48 119/204/48 +f 118/205/49 126/206/49 117/207/49 +f 117/207/50 132/208/50 124/209/50 +f 123/210/51 130/200/51 122/211/51 +f 121/199/52 128/212/52 120/202/52 +f 119/204/53 125/213/53 118/205/53 +f 124/209/54 131/214/54 123/215/54 +f 143/216/55 145/217/55 141/218/55 +f 137/219/46 140/220/46 138/221/46 +f 134/222/43 140/220/43 136/223/43 +f 142/181/46 143/216/46 141/218/46 +f 135/224/44 137/219/44 133/225/44 +f 136/226/42 139/227/42 135/228/42 +f 168/229/44 166/230/44 163/231/44 +f 153/232/43 152/233/43 154/234/43 +f 152/235/43 156/236/43 154/237/43 +f 156/236/43 150/238/43 155/239/43 +f 163/231/46 150/238/46 149/240/46 +f 150/241/43 153/232/43 155/239/43 +f 157/242/41 161/243/41 159/244/41 +f 157/242/41 155/239/41 153/232/41 +f 158/245/45 153/232/45 154/234/45 +f 160/246/42 154/237/42 156/236/42 +f 159/244/46 156/236/46 155/239/46 +f 158/247/42 160/246/42 162/248/42 +f 162/249/56 157/242/56 158/245/56 +f 159/244/57 162/250/57 160/246/57 +f 166/251/41 151/252/41 150/241/41 +f 152/235/42 163/253/42 149/254/42 +f 165/255/45 152/233/45 151/256/45 +f 173/257/45 170/258/45 169/259/45 +f 169/259/44 164/260/44 165/255/44 +f 164/261/44 168/229/44 163/253/44 +f 167/262/44 165/263/44 166/251/44 +f 177/264/43 173/257/43 171/265/43 +f 167/262/41 173/257/41 169/259/41 +f 170/266/42 172/267/42 168/229/42 +f 172/267/46 167/262/46 168/229/46 +f 180/268/42 178/269/42 175/270/42 +f 172/267/43 177/271/43 171/265/43 +f 174/272/43 178/269/43 172/267/43 +f 173/257/43 175/273/43 174/274/43 +f 186/275/44 181/276/44 182/277/44 +f 182/277/46 177/271/46 178/278/46 +f 177/264/41 179/279/41 176/280/41 +f 179/281/45 175/273/45 176/282/45 +f 189/283/41 183/284/41 185/285/41 +f 185/285/44 179/279/44 181/286/44 +f 183/284/44 180/287/44 179/281/44 +f 180/268/44 186/275/44 182/288/44 +f 189/283/43 188/289/43 187/290/43 +f 187/290/45 184/291/45 183/284/45 +f 184/292/42 190/293/42 186/275/42 +f 190/294/58 185/285/58 186/275/58 +f 193/295/44 192/296/44 191/297/44 +f 195/298/41 194/299/41 193/295/41 +f 192/296/42 196/300/42 191/297/42 +f 198/301/45 192/296/45 194/299/45 +f 196/302/40 193/295/40 191/297/40 +f 142/181/40 147/303/40 148/182/40 +f 112/184/41 111/192/41 113/185/41 +f 110/187/42 115/191/42 114/188/42 +f 112/190/43 116/304/43 115/191/43 +f 109/189/44 114/188/44 113/185/44 +f 119/305/45 118/306/45 117/193/45 +f 117/193/45 124/307/45 123/194/45 +f 123/194/45 122/308/45 121/195/45 +f 121/195/45 120/309/45 119/305/45 +f 119/305/45 117/193/45 121/195/45 +f 126/198/46 125/310/46 127/311/46 +f 127/311/46 128/312/46 129/196/46 +f 129/196/46 130/313/46 131/197/46 +f 131/197/46 132/314/46 126/198/46 +f 126/198/46 127/311/46 129/196/46 +f 121/199/47 122/211/47 130/200/47 +f 120/202/48 128/212/48 127/203/48 +f 118/205/49 125/213/49 126/206/49 +f 117/207/50 126/206/50 132/208/50 +f 123/210/51 131/315/51 130/200/51 +f 121/199/52 129/201/52 128/212/52 +f 119/204/53 127/203/53 125/213/53 +f 124/209/54 132/208/54 131/214/54 +f 143/216/55 146/316/55 145/217/55 +f 137/219/46 139/227/46 140/220/46 +f 134/222/43 138/221/43 140/220/43 +f 142/181/46 144/183/46 143/216/46 +f 135/224/44 139/227/44 137/219/44 +f 136/226/42 140/220/42 139/227/42 +f 168/229/44 167/262/44 166/230/44 +f 153/232/43 151/256/43 152/233/43 +f 152/235/43 149/254/43 156/236/43 +f 156/236/43 149/240/43 150/238/43 +f 163/231/46 166/230/46 150/238/46 +f 150/241/43 151/252/43 153/232/43 +f 157/242/41 159/244/41 155/239/41 +f 158/245/45 157/242/45 153/232/45 +f 160/246/42 158/247/42 154/237/42 +f 159/244/46 160/246/46 156/236/46 +f 162/249/56 161/317/56 157/242/56 +f 159/244/57 161/318/57 162/250/57 +f 166/251/41 165/263/41 151/252/41 +f 152/235/42 164/261/42 163/253/42 +f 165/255/45 164/260/45 152/233/45 +f 173/257/45 174/274/45 170/258/45 +f 169/259/44 170/258/44 164/260/44 +f 164/261/44 170/266/44 168/229/44 +f 167/262/44 169/259/44 165/263/44 +f 177/264/43 176/280/43 173/257/43 +f 167/262/41 171/265/41 173/257/41 +f 170/266/42 174/272/42 172/267/42 +f 172/267/46 171/265/46 167/262/46 +f 180/268/42 182/288/42 178/269/42 +f 172/267/43 178/278/43 177/271/43 +f 174/272/43 175/270/43 178/269/43 +f 173/257/43 176/282/43 175/273/43 +f 186/275/44 185/285/44 181/276/44 +f 182/277/46 181/276/46 177/271/46 +f 177/264/41 181/286/41 179/279/41 +f 179/281/45 180/287/45 175/273/45 +f 189/283/41 187/290/41 183/284/41 +f 185/285/44 183/284/44 179/279/44 +f 183/284/44 184/291/44 180/287/44 +f 180/268/44 184/292/44 186/275/44 +f 189/283/43 190/319/43 188/289/43 +f 187/290/45 188/320/45 184/291/45 +f 184/292/42 188/321/42 190/293/42 +f 190/294/58 189/322/58 185/285/58 +f 193/295/44 194/299/44 192/296/44 +f 195/298/41 198/323/41 194/299/41 +f 192/296/42 197/324/42 196/300/42 +f 198/301/45 197/325/45 192/296/45 +f 196/302/40 195/326/40 193/295/40 +o LeftArm +v 8.099994 3.899998 2.100000 +v 8.099994 3.899998 -2.100000 +v 3.899994 3.899998 -2.100000 +v 3.899994 3.899998 2.100000 +v 3.374994 3.899998 -2.625000 +v 3.374994 3.899998 2.625000 +v 8.624993 3.899998 -2.625000 +v 8.624993 3.899998 2.625000 +v 3.374992 -0.300001 -2.625000 +v 3.374992 -0.300001 2.625000 +v 8.624992 -0.300001 -2.625000 +v 8.624992 -0.300001 2.625000 +v 4.949991 -2.400002 -2.625000 +v 4.949991 -2.400002 2.625000 +v 8.099995 5.999998 2.100000 +v 3.899994 5.999998 2.100000 +v 3.899994 5.999998 -2.100000 +v 8.099995 5.999998 -2.100000 +v 8.624994 5.999998 -2.625000 +v 8.624994 5.999998 2.625000 +v 3.374994 5.999998 -2.625000 +v 3.374994 5.999998 2.625000 +v 8.624995 10.199997 -2.625000 +v 8.624995 10.199997 2.625000 +v 3.374995 10.199999 -2.625000 +v 3.374995 10.199999 2.625000 +v 3.899996 10.199999 2.100000 +v 3.899996 10.199999 -2.100000 +v 8.099996 10.199997 -2.100000 +v 8.099996 10.199997 2.100000 +v 3.899996 11.249999 -2.100000 +v 3.899996 11.249999 2.100000 +v 8.099997 11.249997 -2.100000 +v 8.099997 11.249997 2.100000 +v 3.374996 11.249999 -2.625000 +v 3.374996 11.249999 2.625000 +v 8.624996 11.249997 -2.625000 +v 8.624996 11.249997 2.625000 +v 3.374996 13.349998 -2.625000 +v 3.374996 13.349998 2.625000 +v 8.099997 13.349997 -2.625000 +v 8.099997 13.349997 2.625000 +v 9.149992 1.274996 1.575000 +v 9.149993 2.324997 1.575000 +v 9.149992 1.274996 -0.525000 +v 9.149993 2.324997 -0.525000 +v 8.624992 0.224998 1.575000 +v 8.624993 3.374998 1.575000 +v 8.624992 0.224998 -0.525000 +v 8.624993 3.374998 -0.525000 +v 8.756243 1.274998 3.150000 +v 8.756244 2.324999 2.100000 +v 8.756243 1.274998 -1.050000 +v 8.756244 2.324999 -1.050000 +v 9.018743 1.274996 -1.050000 +v 9.018743 1.274996 3.150000 +v 9.018744 2.324997 2.100000 +v 9.018744 2.324997 -1.050000 +v 8.624992 1.012499 -1.050000 +v 8.624993 2.587498 -1.050000 +v 9.149992 1.012497 -1.050000 +v 9.149993 2.587496 -1.050000 +v 8.624993 2.587498 -1.575000 +v 8.624992 1.012499 -1.575000 +v 9.149993 2.587496 -1.575000 +v 9.149992 1.012497 -1.575000 +v 9.149993 2.062496 -1.575000 +v 8.624993 2.062498 -1.575000 +v 9.149992 1.537497 -1.575000 +v 8.624992 1.537498 -1.575000 +v 9.149992 1.537497 -2.625000 +v 9.149993 2.062496 -2.625000 +v 8.624993 2.062498 -2.625000 +v 8.624992 1.537498 -2.625000 +v 8.624991 -2.400002 0.525000 +v 5.474991 -2.400002 0.525000 +v 8.624991 -2.400002 -0.525000 +v 5.474991 -2.400002 -0.525000 +v 7.574992 -0.300001 -0.525000 +v 7.574992 -0.300001 0.525000 +v 5.474992 -0.300001 0.525000 +v 5.474992 -0.300001 -0.525000 +vt 0.525000 0.465517 +vt 0.750000 0.448276 +vt 0.725000 0.465517 +vt 0.025000 0.534483 +vt 0.250000 0.551724 +vt -0.000000 0.551724 +vt 0.750000 0.551724 +vt 0.975000 0.534483 +vt 1.000000 0.551724 +vt 0.500000 0.551724 +vt 0.725000 0.534483 +vt 0.525000 0.534483 +vt 0.275000 0.534483 +vt 0.475000 0.534483 +vt 0.250000 0.689655 +vt 0.500000 0.689655 +vt 0.325000 0.758621 +vt -0.000000 0.689655 +vt 0.750000 0.689655 +vt 1.000000 0.689655 +vt 0.925000 0.758621 +vt -0.000000 0.758621 +vt 0.750000 0.810345 +vt 0.275000 0.465517 +vt 0.475000 0.465517 +vt 0.775000 0.534483 +vt 0.975000 0.465517 +vt 0.225000 0.465517 +vt 0.225000 0.534483 +vt 0.000000 0.448276 +vt 0.250000 0.310345 +vt 0.250000 0.448276 +vt 0.025000 0.465517 +vt 1.000000 0.448276 +vt 0.500000 0.448276 +vt 0.500000 0.310345 +vt 0.275000 0.293103 +vt 0.475000 0.293103 +vt 1.000000 0.310345 +vt 0.750000 0.310345 +vt 0.775000 0.293103 +vt 0.975000 0.258621 +vt 0.975000 0.293103 +vt 0.725000 0.293103 +vt 0.025000 0.293103 +vt -0.000000 0.310345 +vt 0.525000 0.258621 +vt 0.750000 0.241379 +vt 0.725000 0.258621 +vt 0.525000 0.293103 +vt 0.475000 0.258621 +vt 0.225000 0.258621 +vt 0.225000 0.293103 +vt 0.250000 0.241379 +vt 0.475000 0.172414 +vt 0.500000 0.241379 +vt 0.275000 0.258621 +vt 0.025000 0.258621 +vt 1.000000 0.241379 +vt 0.250000 -0.000000 +vt 0.250000 0.172414 +vt -0.000000 0.241379 +vt 0.775000 0.172414 +vt 1.000000 0.172414 +vt 0.750000 0.172414 +vt 0.250000 0.827586 +vt 0.350000 0.793103 +vt 0.350000 0.827586 +vt 0.250000 0.793103 +vt 0.350000 0.758621 +vt 0.250000 0.862069 +vt 0.500000 0.913793 +vt 0.550000 0.810345 +vt 0.550000 0.948276 +vt 0.575000 0.810345 +vt 0.625000 0.913793 +vt 0.575000 0.948276 +vt 0.650000 0.948276 +vt 0.650000 0.913793 +vt 0.625000 0.810345 +vt 0.650000 0.810345 +vt 0.375000 0.862069 +vt 0.450000 0.844828 +vt 0.450000 0.862069 +vt 0.375000 0.810345 +vt 0.450000 0.827586 +vt 0.375000 0.827586 +vt 0.350000 0.844828 +vt 0.375000 0.844828 +vt 0.475000 0.827586 +vt 0.475000 0.844828 +vt 0.400000 0.775862 +vt 0.375000 0.758621 +vt 0.400000 0.758621 +vt 0.375000 0.810345 +vt 0.400000 0.810345 +vt 0.350000 0.810345 +vt 0.375000 0.775862 +vt 0.425000 0.775862 +vt 0.425000 0.810345 +vt 0.100000 0.827586 +vt 0.150000 0.931035 +vt 0.100000 0.931035 +vt 0.150000 0.827586 +vt 0.250000 0.896552 +vt 0.000000 0.896552 +vt 0.000000 0.827586 +vt 0.150000 0.758621 +vt 0.100000 1.000000 +vt 0.250000 0.758621 +vt 0.500000 0.810345 +vt 0.775000 0.465517 +vt 0.775000 0.258621 +vt 0.475000 0.000000 +vt -0.000000 0.172414 +vt 0.500000 0.172414 +vt 0.250000 0.758621 +vt 0.350000 0.862069 +vt 0.500000 0.810345 +vt 0.625000 0.948276 +vt 0.450000 0.810345 +vt 0.350000 0.827586 +vt 0.350000 0.775862 +vt 0.250000 0.827586 +vt 0.100000 0.758621 +vt 0.150000 1.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.8000 -0.6000 0.0000 +vn 0.4961 -0.8682 0.0000 +vn 0.9701 0.2425 0.0000 +vn 0.8944 0.4472 0.0000 +vn 0.8944 -0.4472 0.0000 +vn 0.0000 0.7071 0.7071 +s off +f 216/327/59 218/328/59 213/329/59 +f 202/330/60 203/331/60 204/332/60 +f 206/333/60 202/334/60 204/335/60 +f 205/336/60 199/337/60 206/333/60 +f 200/338/61 213/329/61 199/337/61 +f 205/336/60 201/339/60 200/340/60 +f 207/341/62 209/342/62 211/343/62 +f 203/331/62 209/342/62 207/341/62 +f 203/331/63 208/344/63 204/332/63 +f 204/335/64 210/345/64 206/333/64 +f 206/333/61 209/342/61 205/336/61 +f 208/346/64 212/347/64 210/345/64 +f 207/341/65 212/348/65 208/344/65 +f 212/349/66 209/342/66 210/345/66 +f 200/340/62 215/350/62 216/351/62 +f 199/352/64 214/353/64 202/334/64 +f 202/330/63 215/354/63 201/355/63 +f 220/356/63 223/357/63 219/358/63 +f 214/359/59 219/358/59 215/354/59 +f 214/353/59 218/328/59 220/360/59 +f 215/350/59 217/361/59 216/351/59 +f 221/362/60 226/363/60 227/364/60 +f 219/358/62 221/362/62 217/361/62 +f 218/328/64 224/365/64 220/360/64 +f 217/361/61 222/366/61 218/328/61 +f 228/367/64 230/368/64 225/369/64 +f 221/362/60 228/370/60 222/366/60 +f 222/366/60 225/369/60 224/365/60 +f 225/371/60 223/357/60 224/372/60 +f 231/373/59 236/374/59 232/375/59 +f 227/376/61 232/375/61 228/370/61 +f 226/363/62 231/377/62 227/364/62 +f 225/371/63 229/378/63 226/379/63 +f 233/380/62 239/381/62 235/382/62 +f 229/383/59 235/382/59 231/377/59 +f 230/384/59 233/380/59 229/378/59 +f 230/368/59 236/374/59 234/385/59 +f 238/386/60 239/381/60 237/387/60 +f 234/388/63 237/387/63 233/380/63 +f 234/385/64 240/389/64 238/390/64 +f 235/382/67 240/391/67 236/374/67 +f 243/392/61 242/393/61 241/394/61 +f 244/395/68 246/396/68 242/393/68 +f 241/394/69 247/397/69 243/392/69 +f 250/398/63 251/399/63 249/400/63 +f 253/401/61 255/402/61 254/403/61 +f 249/404/70 255/402/70 250/405/70 +f 250/405/60 256/406/60 252/407/60 +f 251/399/59 254/403/59 249/400/59 +f 257/408/64 260/409/64 258/410/64 +f 262/411/62 263/412/62 264/413/62 +f 257/414/59 264/413/59 259/415/59 +f 259/415/61 263/412/61 260/409/61 +f 260/409/60 261/416/60 258/417/60 +f 270/418/62 272/419/62 271/420/62 +f 267/421/61 270/418/61 265/422/61 +f 268/423/59 269/424/59 267/421/59 +f 265/422/60 271/425/60 266/426/60 +f 274/427/59 275/428/59 273/429/59 +f 276/430/62 277/431/62 275/428/62 +f 274/427/64 278/432/64 279/433/64 +f 274/427/63 280/434/63 276/430/63 +f 275/428/68 278/435/68 273/429/68 +f 216/327/59 217/361/59 218/328/59 +f 202/330/60 201/355/60 203/331/60 +f 206/333/60 199/352/60 202/334/60 +f 205/336/60 200/338/60 199/337/60 +f 200/338/61 216/327/61 213/329/61 +f 205/336/60 203/331/60 201/339/60 +f 203/331/62 205/336/62 209/342/62 +f 203/331/63 207/341/63 208/344/63 +f 204/335/64 208/346/64 210/345/64 +f 206/333/61 210/345/61 209/342/61 +f 207/341/65 211/436/65 212/348/65 +f 212/349/66 211/437/66 209/342/66 +f 200/340/62 201/339/62 215/350/62 +f 199/352/64 213/438/64 214/353/64 +f 202/330/63 214/359/63 215/354/63 +f 220/356/63 224/372/63 223/357/63 +f 214/359/59 220/356/59 219/358/59 +f 214/353/59 213/438/59 218/328/59 +f 215/350/59 219/358/59 217/361/59 +f 221/362/60 223/357/60 226/363/60 +f 219/358/62 223/357/62 221/362/62 +f 218/328/64 222/366/64 224/365/64 +f 217/361/61 221/362/61 222/366/61 +f 228/367/64 232/439/64 230/368/64 +f 221/362/60 227/376/60 228/370/60 +f 222/366/60 228/367/60 225/369/60 +f 225/371/60 226/379/60 223/357/60 +f 231/373/59 235/382/59 236/374/59 +f 227/376/61 231/373/61 232/375/61 +f 226/363/62 229/383/62 231/377/62 +f 225/371/63 230/384/63 229/378/63 +f 233/380/62 237/387/62 239/381/62 +f 229/383/59 233/380/59 235/382/59 +f 230/384/59 234/388/59 233/380/59 +f 230/368/59 232/439/59 236/374/59 +f 238/386/60 240/440/60 239/381/60 +f 234/388/63 238/441/63 237/387/63 +f 234/385/64 236/374/64 240/389/64 +f 235/382/67 239/442/67 240/391/67 +f 243/392/61 244/395/61 242/393/61 +f 244/395/68 248/443/68 246/396/68 +f 241/394/69 245/444/69 247/397/69 +f 250/398/63 252/445/63 251/399/63 +f 253/401/61 256/406/61 255/402/61 +f 249/404/70 254/446/70 255/402/70 +f 250/405/60 255/402/60 256/406/60 +f 251/399/59 253/401/59 254/403/59 +f 257/408/64 259/415/64 260/409/64 +f 262/411/62 261/447/62 263/412/62 +f 257/414/59 262/448/59 264/413/59 +f 259/415/61 264/413/61 263/412/61 +f 260/409/60 263/412/60 261/416/60 +f 270/418/62 269/424/62 272/419/62 +f 267/421/61 269/424/61 270/418/61 +f 268/423/59 272/449/59 269/424/59 +f 265/422/60 270/418/60 271/425/60 +f 274/427/59 276/430/59 275/428/59 +f 276/430/62 280/450/62 277/431/62 +f 274/427/64 273/429/64 278/432/64 +f 274/427/63 279/451/63 280/434/63 +f 275/428/68 277/452/68 278/435/68 +o Helmet +v 5.249990 -8.200001 -4.200000 +v 5.249990 -8.200001 4.200000 +v -4.200010 -8.200001 5.250000 +v 4.199989 -8.200001 5.250000 +v -4.200010 -8.200001 -5.250000 +v 4.199989 -8.200001 -5.250000 +v -5.250010 -8.200001 4.200000 +v -5.250010 -8.200001 -4.200000 +v 5.249990 -6.100002 -4.200000 +v 5.249990 -6.100002 4.200000 +v -4.200010 -6.099998 5.250000 +v 4.199990 -6.100002 5.250000 +v -4.200010 -6.099998 -5.250000 +v 4.199990 -6.100002 -5.250000 +v -5.250010 -6.099998 4.200000 +v -5.250010 -6.099998 -4.200000 +v 7.349990 -5.050001 -4.200000 +v 7.349990 -5.050001 4.200000 +v -4.200009 -5.049997 7.349999 +v 4.199990 -5.050001 7.349999 +v -4.200009 -5.049997 -7.349999 +v 4.199990 -5.050001 -7.349999 +v -7.350009 -5.049997 4.200000 +v -7.350009 -5.049997 -4.200000 +v -3.150011 -10.299999 3.150000 +v -3.150011 -10.299999 -3.150000 +v 3.149989 -10.299999 -3.150000 +v 3.149989 -10.299999 3.150000 +v 4.724989 -8.200001 -3.675000 +v 4.724989 -8.200001 3.675000 +v -3.675010 -8.200001 4.725000 +v 3.674989 -8.200001 4.725000 +v -3.675010 -8.200001 -4.725000 +v 3.674989 -8.200001 -4.725000 +v -4.725010 -8.200001 3.675000 +v -4.725010 -8.200001 -3.675000 +v 4.724992 0.199999 -3.675000 +v 4.724992 0.199999 3.675000 +v -3.675008 0.200003 4.725000 +v 3.674992 0.199999 4.725000 +v -3.675008 0.200003 -4.725000 +v 3.674992 0.199999 -4.725000 +v -4.725008 0.200003 3.675000 +v -4.725008 0.200003 -3.675000 +v -3.675007 1.250002 3.675000 +v -3.675007 1.250002 -3.675000 +v 3.674992 1.249998 -3.675000 +v 3.674992 1.249998 3.675000 +v 1.574991 -2.950001 -4.725000 +v -1.575009 -2.950001 -4.725000 +v 1.574992 0.200001 -4.725000 +v -1.575008 0.200001 -4.725000 +v 1.574992 0.200001 -5.775000 +v 1.574991 -1.900000 -5.775000 +v -1.575008 -1.900000 -5.775000 +v -1.575008 0.200001 -5.775000 +v -2.100009 -5.575001 -4.725000 +v -0.736019 -4.787500 -4.725000 +v -0.736019 -3.212500 -4.725000 +v -2.100008 -2.424999 -4.725000 +v -3.463999 -3.212498 -4.725000 +v -3.463999 -4.787498 -4.725000 +v 2.099990 -5.575001 -4.725000 +v 3.463980 -4.787502 -4.725000 +v 3.463981 -3.212502 -4.725000 +v 2.099991 -2.424999 -4.725000 +v 0.736001 -3.212500 -4.725000 +v 0.736001 -4.787500 -4.725000 +v 2.099990 -5.575001 -5.250000 +v 3.463980 -4.787502 -5.250000 +v 3.463981 -3.212502 -5.250000 +v 2.099991 -2.424999 -5.250000 +v 0.736001 -3.212500 -5.250000 +v 0.736001 -4.787500 -5.250000 +v -2.100009 -5.575001 -5.250000 +v -0.736019 -4.787500 -5.250000 +v -0.736019 -3.212500 -5.250000 +v -2.100008 -2.424999 -5.250000 +v -3.463999 -3.212498 -5.250000 +v -3.463999 -4.787498 -5.250000 +v 0.524990 -6.100000 -4.200000 +v 1.049990 -6.100000 -4.725000 +v 1.049989 -10.299999 -4.725000 +v 0.524989 -10.299999 -4.200000 +v 1.049990 -6.100000 -5.775000 +v 0.524990 -6.100000 -6.300000 +v 0.524989 -10.299999 -6.300000 +v 1.049989 -10.299999 -5.775000 +v -1.050010 -6.100000 -4.725000 +v -0.525010 -6.100000 -4.200000 +v -0.525011 -10.299999 -4.200000 +v -1.050011 -10.299999 -4.725000 +v -0.525010 -6.100000 -6.300000 +v -1.050010 -6.100000 -5.775000 +v -1.050011 -10.299999 -5.775000 +v -0.525011 -10.299999 -6.300000 +v 1.049989 -8.200001 -6.300000 +v -1.050010 -8.200001 -6.300000 +v 1.049989 -10.299999 -6.300000 +v -1.050011 -10.299999 -6.300000 +v 2.099988 -11.349998 -7.349999 +v 2.099990 -7.150000 -7.349999 +v -2.100010 -7.150000 -7.349999 +v -2.100011 -11.349998 -7.349999 +v -4.725009 -4.524998 2.100000 +v -4.725008 -1.374998 2.100000 +v -4.725009 -4.524998 -2.100000 +v -4.725008 -1.374998 -2.100000 +v -5.775009 -4.524998 -2.100000 +v -5.775009 -4.524998 2.100000 +v -5.775008 -1.374998 2.100000 +v -5.775008 -1.374998 -2.100000 +v -5.775009 -3.999998 1.575000 +v -5.775008 -1.899998 1.575000 +v -5.775009 -3.999998 -1.575000 +v -5.775008 -1.899998 -1.575000 +v -6.300009 -3.999998 -1.575000 +v -6.300009 -3.999998 1.575000 +v -6.300008 -1.899998 1.575000 +v -6.300008 -1.899998 -1.575000 +v -7.087509 -5.049997 0.262500 +v -7.612509 -5.049997 0.262500 +v -7.087509 -5.049997 -0.262500 +v -7.612509 -5.049997 -0.262500 +v -7.087511 -11.349995 -0.262500 +v -7.087511 -11.349995 0.262500 +v -7.612511 -11.349995 0.262500 +v -7.612511 -11.349995 -0.262500 +v -5.512508 -2.949999 -0.262500 +v -5.512508 -2.949999 0.262500 +v -6.037508 -2.949999 0.262500 +v -6.037508 -2.949999 -0.262500 +v 1.574993 1.377384 -5.467462 +v 1.049993 1.748615 -5.096232 +v -1.050007 1.748615 -5.096232 +v -1.575007 1.377384 -5.467462 +v 1.049992 -0.478769 -7.323617 +v 1.574992 -0.107536 -6.952385 +v -1.575008 -0.107536 -6.952385 +v -1.050008 -0.478769 -7.323617 +v 1.574993 1.377388 -8.437310 +v 1.049992 1.006157 -8.808541 +v 1.049993 3.233541 -6.581155 +v 1.574993 2.862312 -6.952386 +v -1.575007 2.862312 -6.952386 +v -1.050007 3.233541 -6.581155 +v -1.050007 1.006157 -8.808541 +v -1.575007 1.377388 -8.437310 +v 1.049992 -0.478769 -4.353768 +v 0.524992 -0.107536 -3.982538 +v -0.525008 -0.107536 -3.982538 +v -1.050008 -0.478769 -4.353768 +v 0.524992 -1.592463 -5.467462 +v 1.049992 -1.221231 -5.096231 +v -1.050008 -1.221231 -5.096231 +v -0.525008 -1.592463 -5.467462 +v 1.049992 0.263695 -6.581154 +v 0.524992 -0.107536 -6.952386 +v 0.524993 1.377384 -5.467462 +v 1.049992 1.006153 -5.838693 +v -1.050007 1.006153 -5.838693 +v -0.525007 1.377384 -5.467462 +v -0.525008 -0.107536 -6.952386 +v -1.050008 0.263695 -6.581154 +v 5.774991 -4.525002 -2.100000 +v 5.774991 -4.525002 2.100000 +v 5.774992 -1.375002 2.100000 +v 5.774992 -1.375002 -2.100000 +v 4.724991 -4.525002 -2.100000 +v 4.724991 -4.525002 2.100000 +v 4.724992 -1.375002 2.100000 +v 4.724992 -1.375002 -2.100000 +v 6.824991 -1.900002 3.150000 +v 6.824991 -4.000002 5.250000 +v 6.824991 -1.900002 1.050000 +v 6.824991 -4.000002 1.050000 +v 5.774991 -1.900002 0.000000 +v 5.774991 -4.000002 0.000000 +v 5.354990 -6.100002 -1.443750 +v 5.354990 -8.200001 -1.443750 +v 5.354990 -6.100002 -2.756250 +v 5.354990 -8.200001 -2.756250 +v 5.459991 -6.100002 -0.393750 +v 5.459990 -8.200001 -0.393750 +v 5.459991 -6.100002 -1.706250 +v 5.459990 -8.200001 -1.706250 +v 5.564991 -6.625002 0.000000 +v 5.564991 -6.100002 0.000000 +v 5.564991 -6.100002 -3.150000 +v 5.564991 -6.625002 -3.150000 +v 5.249990 -6.100002 -4.200000 +v 5.249990 -6.625002 -4.200000 +v 5.249990 -6.625002 1.050000 +v 5.249990 -6.100002 1.050000 +vt 0.280000 0.093023 +vt 0.600000 0.046512 +vt 0.600000 0.093023 +vt 0.280000 0.093023 +vt 0.600000 0.046512 +vt 0.600000 0.093023 +vt 0.280000 0.093023 +vt 0.600000 0.046512 +vt 0.600000 0.093023 +vt 0.280000 0.093023 +vt 0.600000 0.046512 +vt 0.600000 0.093023 +vt 0.720000 0.046512 +vt 0.640000 0.093023 +vt 0.640000 0.046512 +vt 0.640000 0.093023 +vt 0.720000 0.046512 +vt 0.720000 0.093023 +vt 0.720000 0.046512 +vt 0.640000 0.093023 +vt 0.640000 0.046512 +vt 0.640000 0.093023 +vt 0.720000 0.046512 +vt 0.720000 0.093023 +vt 0.600000 0.000000 +vt 0.760000 0.000000 +vt 0.760000 0.000000 +vt 0.280000 0.000000 +vt 0.600000 0.000000 +vt 0.280000 0.046512 +vt 0.600000 -0.000000 +vt 0.640000 0.046512 +vt 0.760000 0.000000 +vt 0.280000 0.046512 +vt 0.760000 0.000000 +vt 0.280000 -0.000000 +vt 0.280000 0.046512 +vt 0.560000 0.162791 +vt 0.320000 0.302326 +vt 0.320000 0.162791 +vt 0.560000 0.162791 +vt 0.320000 0.162791 +vt 0.560000 0.162791 +vt 0.720000 0.093023 +vt 0.680000 0.162791 +vt 0.680000 0.162791 +vt 0.720000 0.093023 +vt 0.680000 0.162791 +vt 0.680000 0.162791 +vt 0.280000 0.372093 +vt 0.320000 0.186047 +vt 0.320000 0.372093 +vt -0.000000 0.372093 +vt 0.280000 0.186047 +vt 0.000000 0.372093 +vt 0.280000 0.186047 +vt 0.280000 0.372093 +vt 0.280000 0.186047 +vt 0.320000 0.372093 +vt 0.280000 0.372093 +vt 0.320000 0.372093 +vt 0.000000 0.372093 +vt 0.000000 0.186047 +vt 0.280000 0.372093 +vt 0.000000 0.372093 +vt 0.320000 0.186047 +vt 0.320000 0.372093 +vt -0.000000 -0.000000 +vt 0.280000 0.162791 +vt -0.000000 0.162791 +vt -0.000000 0.186047 +vt 0.000000 0.186047 +vt 0.280000 0.162791 +vt 0.300000 0.162791 +vt 0.320000 0.186047 +vt 0.000000 0.186047 +vt 0.280000 0.162791 +vt 0.300000 0.162791 +vt 0.000000 0.162791 +vt 0.280000 0.186047 +vt 0.300000 0.162791 +vt 0.320000 0.186047 +vt 0.300000 0.162791 +vt 0.160000 0.441860 +vt 0.040000 0.395349 +vt 0.160000 0.395349 +vt 0.160000 0.372093 +vt 0.040000 0.372093 +vt 0.160000 0.465116 +vt 0.040000 0.441860 +vt -0.000000 0.395349 +vt -0.000000 0.465116 +vt 0.200000 0.395349 +vt 0.280000 0.372093 +vt 0.320000 0.418605 +vt 0.280000 0.418605 +vt 0.400000 0.418605 +vt 0.440000 0.372093 +vt 0.440000 0.418605 +vt 0.220000 0.372093 +vt 0.260000 0.418605 +vt 0.220000 0.418605 +vt 0.660000 0.465116 +vt 0.740000 0.418605 +vt 0.740000 0.465116 +vt 0.440000 0.360465 +vt 0.460000 0.348837 +vt 0.540000 0.418605 +vt 0.360000 0.465116 +vt 0.440000 0.418605 +vt 0.440000 0.465116 +vt 0.540000 0.465116 +vt 0.460000 0.418605 +vt 0.460000 0.465116 +vt 0.560000 0.476744 +vt 0.800000 0.406977 +vt 0.740000 0.395349 +vt 0.800000 0.395349 +vt 0.920000 0.406977 +vt 0.860000 0.395349 +vt 0.920000 0.395349 +vt 0.680000 0.406977 +vt 0.620000 0.395349 +vt 0.680000 0.395349 +vt 0.860000 0.406977 +vt 0.620000 0.406977 +vt 0.560000 0.395349 +vt 0.740000 0.406977 +vt 0.620000 0.406977 +vt 0.560000 0.395349 +vt 0.620000 0.395349 +vt 0.740000 0.406977 +vt 0.680000 0.395349 +vt 0.740000 0.395349 +vt 0.800000 0.406977 +vt 0.800000 0.395349 +vt 0.920000 0.406977 +vt 0.860000 0.395349 +vt 0.920000 0.395349 +vt 0.680000 0.406977 +vt 0.860000 0.406977 +vt 1.000000 0.046512 +vt 0.960000 0.139535 +vt 0.960000 0.046512 +vt 0.820000 0.139535 +vt 0.780000 0.046512 +vt 0.820000 0.046512 +vt 0.880000 0.186047 +vt 0.840000 0.186047 +vt 0.820000 0.174419 +vt 0.940000 0.139535 +vt 0.900000 0.046512 +vt 0.940000 0.046512 +vt 0.880000 0.139535 +vt 0.840000 0.046512 +vt 0.880000 0.046512 +vt 0.900000 0.139535 +vt 0.840000 0.139535 +vt 0.760000 0.139535 +vt 0.780000 0.139535 +vt 0.840000 0.000000 +vt 0.880000 0.000000 +vt 0.900000 0.011628 +vt 0.800000 0.279070 +vt 0.880000 0.232558 +vt 0.880000 0.279070 +vt 0.920000 0.395349 +vt 0.760000 0.302326 +vt 0.920000 0.302326 +vt 0.880000 0.279070 +vt 0.760000 0.302326 +vt 0.800000 0.279070 +vt 0.800000 0.279070 +vt 0.920000 0.302326 +vt 0.760000 0.302326 +vt 0.880000 0.279070 +vt 0.760000 0.302326 +vt 0.800000 0.279070 +vt 0.600000 0.186047 +vt 0.760000 0.255814 +vt 0.600000 0.255814 +vt 0.760000 0.162791 +vt 0.600000 0.162791 +vt 0.600000 0.279070 +vt 0.760000 0.279070 +vt 0.800000 0.255814 +vt 0.760000 0.186047 +vt 0.800000 0.186047 +vt 0.560000 0.255814 +vt 0.580000 0.290698 +vt 0.700000 0.337209 +vt 0.580000 0.337209 +vt 0.720000 0.337209 +vt 0.700000 0.290698 +vt 0.720000 0.290698 +vt 0.560000 0.337209 +vt 0.700000 0.279070 +vt 0.580000 0.279070 +vt 0.580000 0.348837 +vt 0.700000 0.348837 +vt 0.940000 0.290698 +vt 0.960000 0.232558 +vt 0.960000 0.290698 +vt 0.940000 0.430233 +vt 0.960000 0.441860 +vt 0.940000 0.441860 +vt 1.000000 0.290698 +vt 0.980000 0.430233 +vt 0.980000 0.290698 +vt 0.960000 0.430233 +vt 0.920000 0.430233 +vt 0.920000 0.290698 +vt 1.000000 0.232558 +vt 0.980000 0.232558 +vt 0.940000 0.232558 +vt 0.560000 0.418605 +vt 0.640000 0.418605 +vt 0.640000 0.465116 +vt 0.340000 0.418605 +vt 0.360000 0.418605 +vt 0.260000 0.372093 +vt 0.200000 0.418605 +vt 0.200000 0.372093 +vt 0.380000 0.418605 +vt 0.400000 0.372093 +vt 0.340000 0.418605 +vt 0.320000 0.372093 +vt 0.340000 0.372093 +vt 0.380000 0.372093 +vt 0.600000 0.255814 +vt 0.760000 0.186047 +vt 0.760000 0.255814 +vt 0.560000 0.186047 +vt 0.600000 0.186047 +vt 0.800000 0.186047 +vt 0.800000 0.255814 +vt 0.760000 0.162791 +vt 0.600000 0.279070 +vt 0.920000 0.186047 +vt 0.840000 0.232558 +vt 0.840000 0.186047 +vt 0.800000 0.186047 +vt 0.500000 1.000000 +vt 0.000000 0.534884 +vt 0.500000 0.534884 +vt 1.000000 1.000000 +vt 0.500000 0.534884 +vt 1.000000 0.534884 +vt 0.160000 0.476744 +vt 0.040000 0.465116 +vt 0.160000 0.465116 +vt 0.040000 0.476744 +vt -0.000000 0.465116 +vt 0.200000 0.476744 +vt 0.280000 0.046512 +vt 0.640000 0.046512 +vt 0.600000 0.000000 +vt 0.280000 -0.000000 +vt 0.280000 -0.000000 +vt 0.560000 0.302326 +vt 0.320000 0.162791 +vt 0.560000 0.162791 +vt 0.320000 0.162791 +vt 0.280000 -0.000000 +vt 0.000000 0.162791 +vt 0.000000 0.162791 +vt 0.280000 0.162791 +vt 0.040000 0.465116 +vt 0.200000 0.465116 +vt 0.660000 0.418605 +vt 0.540000 0.348837 +vt 0.560000 0.360465 +vt 0.560000 0.406977 +vt 0.440000 0.406977 +vt 0.560000 0.523256 +vt 0.540000 0.534884 +vt 0.460000 0.534884 +vt 0.440000 0.523256 +vt 0.440000 0.476744 +vt 0.560000 0.406977 +vt 0.560000 0.406977 +vt 1.000000 0.139535 +vt 0.820000 0.151163 +vt 0.900000 0.151163 +vt 0.900000 0.174419 +vt 0.760000 0.046512 +vt 0.900000 0.034884 +vt 0.820000 0.034884 +vt 0.820000 0.011628 +vt 0.800000 0.232558 +vt 0.760000 0.395349 +vt 0.920000 0.302326 +vt 0.880000 0.279070 +vt 0.920000 0.302326 +vt 0.560000 0.186047 +vt 0.560000 0.290698 +vt 1.000000 0.430233 +vt 0.920000 0.232558 +vt 0.560000 0.465116 +vt 0.340000 0.465116 +vt 0.560000 0.255814 +vt 0.600000 0.162791 +vt 0.760000 0.279070 +vt 1.000000 0.232558 +vt 0.800000 0.232558 +vt 0.000000 1.000000 +vt 0.500000 1.000000 +vt -0.000000 0.476744 +vt 0.200000 0.465116 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 -0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.4082 -0.8165 -0.4082 +vn -0.4082 -0.8165 0.4082 +vn -0.0000 -0.8944 -0.4472 +vn 0.4472 -0.8944 0.0000 +vn 0.4082 -0.8165 0.4082 +vn -0.4472 -0.8944 0.0000 +vn 0.4082 -0.8165 -0.4082 +vn -0.0000 -0.8944 0.4472 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -0.7071 0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.4851 -0.7276 0.4851 +vn -0.4851 -0.7276 -0.4851 +vn 0.4851 -0.7276 -0.4851 +vn 0.4851 -0.7276 0.4851 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.7071 0.7071 0.0000 +vn -0.5774 0.5774 -0.5774 +vn 0.7071 0.7071 0.0000 +vn 0.5773 0.5774 -0.5774 +vn 0.0000 0.7071 0.7071 +vn 0.5773 0.5774 0.5774 +vn -0.5774 0.5774 0.5774 +vn -0.5000 -0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.8000 0.6000 0.0000 +vn 0.8000 -0.6000 0.0000 +vn -0.7071 -0.5000 -0.5000 +vn 0.7071 -0.5000 -0.5000 +vn 0.7071 0.5000 0.5000 +vn -0.7071 0.5000 0.5000 +vn 0.9578 0.0000 -0.2873 +vn 0.9578 0.0000 0.2873 +s off +f 284/453/71 291/454/71 283/455/71 +f 285/456/72 294/457/72 286/458/72 +f 281/459/73 290/460/73 282/461/73 +f 287/462/74 296/463/74 288/464/74 +f 289/465/75 286/466/75 294/467/75 +f 282/468/76 292/469/76 284/470/76 +f 295/471/77 283/472/77 291/473/77 +f 288/474/78 293/475/78 285/476/78 +f 293/475/79 304/477/79 301/478/79 +f 291/473/80 303/479/80 295/471/80 +f 294/457/81 301/480/81 302/481/81 +f 289/482/82 298/483/82 290/460/82 +f 290/484/83 300/485/83 292/469/83 +f 295/486/84 304/477/84 296/463/84 +f 294/467/85 297/487/85 289/465/85 +f 300/488/86 291/454/86 292/489/86 +f 307/490/87 305/491/87 306/492/87 +f 307/490/88 285/456/88 286/458/88 +f 308/493/89 281/459/89 282/461/89 +f 283/455/90 308/494/90 284/453/90 +f 306/495/91 287/462/91 288/464/91 +f 287/496/92 305/497/92 283/472/92 +f 288/474/93 285/476/93 306/498/93 +f 281/499/94 307/500/94 286/466/94 +f 282/468/95 284/470/95 308/501/95 +f 314/502/75 317/503/75 309/504/75 +f 313/505/72 322/506/72 314/502/72 +f 309/507/73 318/508/73 310/509/73 +f 324/510/78 313/511/78 316/512/78 +f 318/508/76 312/513/76 310/509/76 +f 315/514/74 324/510/74 316/512/74 +f 320/515/71 311/516/71 312/517/71 +f 311/516/77 323/518/77 315/519/77 +f 325/520/96 327/521/96 326/522/96 +f 321/523/97 327/521/97 322/506/97 +f 323/524/98 326/525/98 324/510/98 +f 324/510/99 326/526/99 321/527/99 +f 317/528/100 328/529/100 318/508/100 +f 317/503/101 322/506/101 327/530/101 +f 328/531/102 319/532/102 320/515/102 +f 318/508/103 328/533/103 320/534/103 +f 323/518/104 319/532/104 325/535/104 +f 334/536/72 336/537/72 333/538/72 +f 331/539/96 336/537/96 332/540/96 +f 329/541/88 335/542/88 334/536/88 +f 332/543/74 335/542/74 330/544/74 +f 331/545/73 334/536/73 333/538/73 +f 443/546/88 433/547/88 436/548/88 +f 430/549/102 442/550/102 431/551/102 +f 441/552/74 435/553/74 432/554/74 +f 414/555/102 426/556/102 415/557/102 +f 425/558/97 426/559/97 422/560/97 +f 416/561/74 428/562/74 419/563/74 +f 417/564/88 427/565/88 422/560/88 +f 420/566/90 417/564/90 418/567/90 +f 354/568/105 343/569/105 348/570/105 +f 352/571/106 347/572/106 346/573/106 +f 350/574/73 345/575/73 344/576/73 +f 353/577/74 348/570/74 347/572/74 +f 351/578/107 346/579/107 345/575/107 +f 349/580/108 344/576/108 343/569/108 +f 357/581/107 340/582/107 339/583/107 +f 355/584/108 338/585/108 337/586/108 +f 360/587/105 337/586/105 342/588/105 +f 358/589/106 341/590/106 340/591/106 +f 356/592/73 339/583/73 338/585/73 +f 359/593/74 342/588/74 341/590/74 +f 370/594/71 364/595/71 361/596/71 +f 375/597/74 369/598/74 374/599/74 +f 364/600/87 371/601/87 372/602/87 +f 363/603/73 365/604/73 362/605/73 +f 367/606/72 373/607/72 366/608/72 +f 364/595/76 362/605/76 361/596/76 +f 366/608/75 368/609/75 367/606/75 +f 374/599/78 376/610/78 375/597/78 +f 371/611/77 369/598/77 372/612/77 +f 370/613/96 361/614/96 362/615/96 +f 378/616/71 379/617/71 377/618/71 +f 381/619/72 383/620/72 382/621/72 +f 378/622/77 384/623/77 380/624/77 +f 377/625/76 381/626/76 382/627/76 +f 380/628/90 381/629/90 379/630/90 +f 377/618/102 383/620/102 378/616/102 +f 391/631/74 389/632/74 390/633/74 +f 388/634/96 391/631/96 386/635/96 +f 385/636/87 389/632/87 387/637/87 +f 387/638/72 392/639/72 388/640/72 +f 385/641/71 391/631/71 390/633/71 +f 399/642/74 397/643/74 398/644/74 +f 395/645/72 400/646/72 396/647/72 +f 393/648/71 399/642/71 398/644/71 +f 396/649/96 399/642/96 394/650/96 +f 393/651/87 397/643/87 395/652/87 +f 402/653/109 412/654/109 404/655/109 +f 407/656/87 405/657/87 406/658/87 +f 404/655/74 407/656/74 402/653/74 +f 401/659/73 405/660/73 403/661/73 +f 403/661/72 408/662/72 404/655/72 +f 402/653/71 406/663/71 401/664/71 +f 403/661/110 410/665/110 401/659/110 +f 403/661/72 412/654/72 409/666/72 +f 401/664/71 411/667/71 402/653/71 +f 428/562/111 420/566/111 419/563/111 +f 421/668/112 417/564/112 422/560/112 +f 424/669/113 414/555/113 413/670/113 +f 416/561/114 426/671/114 425/672/114 +f 413/670/73 421/668/73 424/669/73 +f 444/673/111 436/548/111 435/553/111 +f 441/552/114 431/674/114 442/675/114 +f 429/676/113 439/677/113 430/549/113 +f 434/678/112 438/679/112 437/680/112 +f 434/678/73 440/681/73 429/676/73 +f 445/682/73 447/683/73 446/684/73 +f 445/682/72 452/685/72 448/686/72 +f 446/684/71 451/687/71 450/688/71 +f 448/686/96 451/689/96 447/683/96 +f 446/684/87 449/690/87 445/682/87 +f 453/691/73 456/692/73 455/693/73 +f 456/692/75 457/694/75 455/693/75 +f 460/695/73 461/696/73 459/697/73 +f 464/698/73 465/699/73 463/700/73 +f 467/701/73 469/702/73 468/703/73 +f 470/704/115 471/705/115 469/702/115 +f 468/703/116 473/706/116 467/701/116 +f 284/453/71 292/489/71 291/454/71 +f 285/456/72 293/707/72 294/457/72 +f 281/459/73 289/482/73 290/460/73 +f 287/462/74 295/486/74 296/463/74 +f 289/465/75 281/499/75 286/466/75 +f 282/468/76 290/484/76 292/469/76 +f 295/471/77 287/496/77 283/472/77 +f 288/474/78 296/708/78 293/475/78 +f 293/475/79 296/708/79 304/477/79 +f 291/473/80 299/709/80 303/479/80 +f 294/457/81 293/707/81 301/480/81 +f 289/482/82 297/710/82 298/483/82 +f 290/484/83 298/483/83 300/485/83 +f 295/486/84 303/711/84 304/477/84 +f 294/467/85 302/481/85 297/487/85 +f 300/488/86 299/709/86 291/454/86 +f 307/490/87 308/712/87 305/491/87 +f 307/490/88 306/492/88 285/456/88 +f 308/493/89 307/713/89 281/459/89 +f 283/455/90 305/714/90 308/494/90 +f 306/495/91 305/715/91 287/462/91 +f 314/502/75 322/506/75 317/503/75 +f 313/505/72 321/523/72 322/506/72 +f 309/507/73 317/528/73 318/508/73 +f 324/510/78 321/527/78 313/511/78 +f 318/508/76 320/534/76 312/513/76 +f 315/514/74 323/524/74 324/510/74 +f 320/515/71 319/532/71 311/516/71 +f 311/516/77 319/532/77 323/518/77 +f 325/520/96 328/716/96 327/521/96 +f 321/523/97 326/522/97 327/521/97 +f 323/524/98 325/717/98 326/525/98 +f 317/528/100 327/718/100 328/529/100 +f 328/531/102 325/719/102 319/532/102 +f 334/536/72 335/542/72 336/537/72 +f 331/539/96 333/538/96 336/537/96 +f 329/541/88 330/720/88 335/542/88 +f 332/543/74 336/537/74 335/542/74 +f 331/545/73 329/721/73 334/536/73 +f 443/546/88 438/679/88 433/547/88 +f 430/549/102 439/677/102 442/550/102 +f 441/552/74 444/673/74 435/553/74 +f 414/555/102 423/722/102 426/556/102 +f 426/559/97 423/723/97 424/724/97 +f 424/724/97 421/725/97 426/559/97 +f 421/725/97 422/560/97 426/559/97 +f 422/560/97 427/565/97 428/726/97 +f 428/726/97 425/558/97 422/560/97 +f 416/561/74 425/672/74 428/562/74 +f 417/564/88 420/566/88 427/565/88 +f 418/567/90 413/727/90 414/728/90 +f 414/728/90 415/729/90 418/567/90 +f 415/729/90 416/730/90 418/567/90 +f 416/730/90 419/731/90 418/567/90 +f 419/731/90 420/566/90 418/567/90 +f 354/568/105 349/580/105 343/569/105 +f 352/571/106 353/577/106 347/572/106 +f 350/574/73 351/578/73 345/575/73 +f 353/577/74 354/568/74 348/570/74 +f 351/578/107 352/732/107 346/579/107 +f 349/580/108 350/574/108 344/576/108 +f 357/581/107 358/733/107 340/582/107 +f 355/584/108 356/592/108 338/585/108 +f 360/587/105 355/584/105 337/586/105 +f 358/589/106 359/593/106 341/590/106 +f 356/592/73 357/581/73 339/583/73 +f 359/593/74 360/587/74 342/588/74 +f 370/594/71 371/734/71 364/595/71 +f 375/597/74 372/612/74 369/598/74 +f 372/602/87 375/735/87 368/736/87 +f 375/735/87 376/610/87 368/736/87 +f 376/610/87 367/606/87 368/736/87 +f 368/736/87 363/737/87 372/602/87 +f 363/737/87 364/600/87 372/602/87 +f 363/603/73 368/609/73 365/604/73 +f 367/606/72 376/610/72 373/607/72 +f 364/595/76 363/603/76 362/605/76 +f 366/608/75 365/604/75 368/609/75 +f 374/599/78 373/607/78 376/610/78 +f 371/611/77 370/738/77 369/598/77 +f 362/615/96 365/739/96 374/740/96 +f 365/739/96 366/608/96 374/740/96 +f 366/608/96 373/607/96 374/740/96 +f 374/740/96 369/741/96 362/615/96 +f 369/741/96 370/613/96 362/615/96 +f 378/616/71 380/742/71 379/617/71 +f 381/619/72 384/743/72 383/620/72 +f 378/622/77 383/744/77 384/623/77 +f 377/625/76 379/745/76 381/626/76 +f 380/628/90 384/746/90 381/629/90 +f 377/618/102 382/621/102 383/620/102 +f 391/631/74 392/639/74 389/632/74 +f 388/634/96 392/639/96 391/631/96 +f 385/636/87 390/633/87 389/632/87 +f 387/638/72 389/632/72 392/639/72 +f 385/641/71 386/747/71 391/631/71 +f 399/642/74 400/646/74 397/643/74 +f 395/645/72 397/643/72 400/646/72 +f 393/648/71 394/748/71 399/642/71 +f 396/649/96 400/646/96 399/642/96 +f 393/651/87 398/644/87 397/643/87 +f 402/653/109 411/667/109 412/654/109 +f 407/656/87 408/662/87 405/657/87 +f 404/655/74 408/662/74 407/656/74 +f 401/659/73 406/749/73 405/660/73 +f 403/661/72 405/660/72 408/662/72 +f 402/653/71 407/656/71 406/663/71 +f 403/661/110 409/666/110 410/665/110 +f 403/661/72 404/655/72 412/654/72 +f 401/664/71 410/750/71 411/667/71 +f 428/562/111 427/565/111 420/566/111 +f 421/668/112 418/751/112 417/564/112 +f 424/669/113 423/722/113 414/555/113 +f 416/561/114 415/752/114 426/671/114 +f 413/670/73 418/751/73 421/668/73 +f 444/673/111 443/546/111 436/548/111 +f 441/552/114 432/554/114 431/674/114 +f 429/676/113 440/681/113 439/677/113 +f 434/678/112 433/547/112 438/679/112 +f 434/678/73 437/680/73 440/681/73 +f 445/682/73 448/686/73 447/683/73 +f 445/682/72 449/753/72 452/685/72 +f 446/684/71 447/683/71 451/687/71 +f 448/686/96 452/754/96 451/689/96 +f 446/684/87 450/755/87 449/690/87 +f 453/691/73 454/756/73 456/692/73 +f 456/692/75 458/757/75 457/694/75 +f 460/695/73 462/758/73 461/696/73 +f 464/698/73 466/759/73 465/699/73 +f 467/701/73 470/704/73 469/702/73 +f 470/704/115 472/760/115 471/705/115 +f 468/703/116 474/761/116 473/706/116 +o Chest +v 4.199992 -0.300001 2.100000 +v 4.199992 -0.300001 -2.100000 +v -4.200008 -0.299997 -2.100000 +v -1.575008 -0.299999 -2.100000 +v -1.575008 -0.299999 2.100000 +v -3.675008 -0.299997 2.100000 +v -3.675008 -0.299997 -2.100000 +v -4.200008 -0.299997 2.100000 +v 4.199994 7.994997 -2.100000 +v -4.200005 7.995001 -2.100000 +v 4.199995 10.094998 -2.100000 +v -4.200004 10.095000 -2.100000 +v 4.199995 10.094998 -2.625000 +v 4.199994 7.994997 -2.625000 +v -4.200005 7.995001 -2.625000 +v -4.200004 10.095000 -2.625000 +v 4.199994 7.994997 2.100000 +v -4.200005 7.995001 2.100000 +v 4.199995 10.094998 2.100000 +v -4.200004 10.095000 2.100000 +v 4.199994 7.994997 2.625000 +v -4.200005 7.995001 2.625000 +v 4.199995 10.094998 2.625000 +v -4.200004 10.095000 2.625000 +v -4.725005 7.995001 -2.100000 +v -4.725005 10.095001 -2.100000 +v -4.725005 7.995001 2.100000 +v -4.725005 10.095001 2.100000 +v 4.724995 7.994997 -2.100000 +v 4.724995 10.094997 -2.100000 +v 4.724995 7.994997 2.100000 +v 4.724995 10.094997 2.100000 +v -4.200005 9.150001 2.100000 +v -4.200005 9.150001 -2.100000 +v 4.199995 9.149999 2.100000 +v 4.199995 9.149999 -2.100000 +v -4.200000 22.800001 5.250000 +v 4.199999 22.799997 5.250000 +v 5.249998 17.549997 2.100000 +v 5.249998 17.549997 -2.100000 +v -5.250002 17.550001 2.100000 +v -5.250002 17.550001 -2.100000 +v -0.000005 9.150000 -2.100000 +v -4.200003 15.450001 -3.150000 +v -2.100003 15.450001 -3.150000 +v 4.199997 15.449999 -3.150000 +v 2.099997 15.449999 -3.150000 +v 4.199996 12.299998 2.100000 +v 4.199996 12.299998 -2.100000 +v -4.200004 12.300000 -2.100000 +v -4.200004 12.300000 2.100000 +v 3.674992 -0.300001 -2.100000 +v 3.674992 -0.300001 2.100000 +v 1.574992 -0.299999 2.100000 +v 1.574992 -0.299999 -2.100000 +v -1.575007 1.799999 -2.100000 +v -1.575007 1.799999 2.100000 +v -3.675007 1.800001 2.100000 +v -3.675007 1.800001 -2.100000 +v 3.674993 1.799997 -2.100000 +v 3.674993 1.799997 2.100000 +v 1.574993 1.799999 2.100000 +v 1.574993 1.799999 -2.100000 +v -4.200007 1.800001 2.100000 +v -4.200007 1.800001 -2.100000 +v 4.199993 1.799997 -2.100000 +v 4.199993 1.799997 2.100000 +v -1.575008 -0.299999 -3.150000 +v -3.675008 -0.299997 -3.150000 +v 3.674992 -0.300001 -3.150000 +v 1.574992 -0.299999 -3.150000 +v -1.575007 1.799999 -3.150000 +v -3.675007 1.800001 -3.150000 +v 3.674993 1.799997 -3.150000 +v 1.574993 1.799999 -3.150000 +v -4.200007 1.800001 -3.150000 +v 4.199993 1.799997 -3.150000 +v -5.250007 1.800001 2.100000 +v -5.250007 1.800001 -2.100000 +v 5.249993 1.799997 -2.100000 +v 5.249993 1.799997 2.100000 +v -1.575008 -0.299999 3.150000 +v -3.675008 -0.299997 3.150000 +v 3.674992 -0.300001 3.150000 +v 1.574992 -0.299999 3.150000 +v -1.575007 1.799999 3.150000 +v -3.675007 1.800001 3.150000 +v 3.674993 1.799997 3.150000 +v 1.574993 1.799999 3.150000 +v -4.200007 1.800001 3.150000 +v 4.199993 1.799997 3.150000 +v -4.200006 6.000002 -3.150000 +v 4.199994 5.999998 -3.150000 +v -5.250006 7.050001 2.100000 +v -5.250006 7.050001 -2.100000 +v 5.249994 7.049997 -2.100000 +v 5.249994 7.049997 2.100000 +v -4.200006 6.000002 3.150000 +v 4.199994 5.999998 3.150000 +v -4.200006 7.050001 2.100000 +v -4.200006 7.050001 -2.100000 +v 4.199994 7.049997 -2.100000 +v 4.199994 7.049997 2.100000 +v -1.575008 -1.349998 -2.100000 +v -1.575008 -1.349998 2.100000 +v -3.675008 -1.349997 2.100000 +v -3.675008 -1.349997 -2.100000 +v 3.674991 -1.350000 -2.100000 +v 3.674991 -1.350000 2.100000 +v 1.574992 -1.349998 2.100000 +v 1.574992 -1.349998 -2.100000 +v 3.149996 11.249999 3.150000 +v -3.150004 11.250001 3.150000 +v 3.149992 0.749998 3.150000 +v -3.150007 0.750002 3.150000 +v 3.149992 0.749998 5.250000 +v -3.150007 0.750002 5.250000 +v 3.149993 2.849998 7.349999 +v 3.149996 11.249999 7.349999 +v -3.150004 11.250001 7.349999 +v -3.150007 2.850002 7.349999 +v 4.199993 4.949999 6.300000 +v 4.199995 10.199999 6.300000 +v 2.624996 12.824999 4.200000 +v -2.625004 12.825001 4.200000 +v 2.624996 14.309922 4.815076 +v -2.625003 14.309924 4.815076 +v 2.624997 14.924998 6.300000 +v -2.625002 14.925000 6.300000 +v 2.624996 14.309922 7.784924 +v -2.625003 14.309924 7.784924 +v 2.624996 12.824999 8.400000 +v -2.625004 12.825001 8.400000 +v 2.624995 11.340075 7.784924 +v -2.625004 11.340077 7.784924 +v 2.624995 10.724999 6.300000 +v -2.625004 10.725001 6.300000 +v 2.624995 11.340075 4.815076 +v -2.625004 11.340077 4.815076 +v 4.199995 10.199999 4.200000 +v 4.199993 4.949999 4.200000 +v 3.149996 11.249999 6.300000 +v 3.149993 4.949999 6.300000 +v 3.149996 11.249999 4.200000 +v 3.149993 4.949999 4.200000 +v 3.937494 4.949999 5.512500 +v 3.412494 4.949999 5.512500 +v 3.937494 4.949999 4.987500 +v 3.412494 4.949999 4.987500 +v 3.412493 3.899998 4.987500 +v 3.937493 3.899998 4.987500 +v 3.412493 3.899998 5.512500 +v 3.937493 3.899998 5.512500 +v 4.199993 3.899998 6.300000 +v 4.199993 3.899998 4.200000 +v 3.149993 3.899998 6.300000 +v 3.149993 3.899998 4.200000 +v 4.199992 1.799997 4.200000 +v 3.674992 1.799997 4.200000 +v 3.674992 1.799997 6.300000 +v 4.199992 1.799997 6.300000 +v 3.674993 3.899998 6.825000 +v 4.199993 3.899998 6.825000 +v 3.674993 2.849998 6.825000 +v 4.199993 2.849998 6.825000 +v 4.199993 3.899998 3.675000 +v 3.674993 3.899998 3.675000 +v 4.199993 2.849998 3.675000 +v 3.674993 2.849998 3.675000 +v -4.200006 4.950003 6.300000 +v -4.200004 10.200001 6.300000 +v -4.200004 10.200001 4.200000 +v -4.200006 4.950003 4.200000 +v -3.150006 4.950003 4.200000 +v -3.150004 11.250001 4.200000 +v -3.150006 4.950003 6.300000 +v -3.150004 11.250001 6.300000 +v -3.412506 4.950003 5.512500 +v -3.937506 4.950003 5.512500 +v -3.412506 4.950003 4.987500 +v -3.937506 4.950003 4.987500 +v -3.412507 1.800001 4.987500 +v -3.412507 1.800001 5.512500 +v -3.937507 1.800001 5.512500 +v -3.937507 1.800001 4.987500 +v -3.150007 2.325003 4.725000 +v -3.150007 2.325003 5.775000 +v -4.200007 2.325003 5.775000 +v -4.200007 2.325003 4.725000 +v -3.150006 3.900002 4.725000 +v -3.150006 3.900002 5.775000 +v -4.200006 3.900002 5.775000 +v -4.200006 3.900002 4.725000 +v -3.412507 2.587502 5.775000 +v -3.937507 2.587502 5.775000 +v -3.412507 3.637503 5.775000 +v -3.937506 3.637503 5.775000 +v -3.412507 3.112501 6.825000 +v -3.937507 3.112501 6.825000 +v -3.412507 3.637503 6.825000 +v -3.937506 3.637503 6.825000 +v -3.412507 3.637503 7.875000 +v -3.937506 3.637503 7.875000 +v -3.412506 4.162502 7.875000 +v -3.937506 4.162502 7.875000 +v -3.412507 2.587502 4.725000 +v -3.937507 2.587502 4.725000 +v -3.412507 3.637503 4.725000 +v -3.937506 3.637503 4.725000 +v -3.412507 3.112501 3.675000 +v -3.937507 3.112501 3.675000 +v -3.412507 3.637503 3.675000 +v -3.937506 3.637503 3.675000 +v -3.412507 3.637503 2.625000 +v -3.937506 3.637503 2.625000 +v -3.412506 4.162502 2.625000 +v -3.937506 4.162502 2.625000 +v 4.199992 0.749998 6.300000 +v -4.200007 0.750002 6.300000 +v 4.199993 2.234922 6.915076 +v -4.200006 2.234926 6.915076 +v 4.199994 2.849998 8.400000 +v -4.200006 2.850002 8.400000 +v 4.199993 2.234922 9.884923 +v -4.200006 2.234926 9.884923 +v 4.199992 0.749998 10.500000 +v -4.200007 0.750002 10.500000 +v 4.199991 -0.734926 9.884923 +v -4.200008 -0.734922 9.884923 +v 4.199991 -1.350000 8.400000 +v -4.200008 -1.349997 8.400000 +v 4.199991 -0.734926 6.915076 +v -4.200008 -0.734922 6.915076 +v 2.099995 10.199999 7.349999 +v -2.100004 10.200001 7.349999 +v 2.099994 6.000000 7.349999 +v -2.100006 6.000000 7.349999 +v 2.099994 6.000000 9.450000 +v 2.099995 10.199999 9.450000 +v -2.100004 10.200001 9.450000 +v -2.100006 6.000000 9.450000 +v -1.312506 6.000000 8.662499 +v -1.837506 6.000000 8.662499 +v -1.312506 6.000000 8.137500 +v -1.837506 6.000000 8.137500 +v -0.262506 6.000000 8.662499 +v -0.787506 6.000000 8.662499 +v -0.262506 6.000000 8.137500 +v -0.787506 6.000000 8.137500 +v -1.312506 4.950001 8.137500 +v -1.312506 4.950001 8.662499 +v -1.837506 4.950001 8.662499 +v -1.837506 4.950001 8.137500 +v -0.262506 4.950001 8.137500 +v -0.262506 4.950001 8.662499 +v -0.787506 4.950001 8.662499 +v -0.787506 4.950001 8.137500 +v -1.312507 1.799999 11.287499 +v -1.312507 1.799999 11.812499 +v -1.837507 1.799999 11.812499 +v -1.837507 1.799999 11.287499 +v -0.262507 1.799999 11.287499 +v -0.262507 1.799999 11.812499 +v -0.787507 1.799999 11.812499 +v -0.787507 1.799999 11.287499 +v -1.312509 -4.500000 11.287499 +v -1.312509 -4.500000 11.812499 +v -1.837509 -4.500000 11.812499 +v -1.837509 -4.500000 11.287499 +v -0.262508 -0.299999 11.287499 +v -0.262508 -0.299999 11.812499 +v -0.787508 -0.299999 11.812499 +v -0.787508 -0.299999 11.287499 +v 2.957832 11.899478 6.163495 +v 3.412495 11.874217 5.902212 +v 3.412496 11.899478 6.163495 +v 3.412495 8.764097 6.466626 +v 3.185164 11.912108 6.294134 +v 3.185163 8.776729 6.597267 +v 3.185164 11.937369 6.555416 +v 3.185163 8.801990 6.858547 +v 3.412496 11.950000 6.686055 +v 3.412495 8.814620 6.989188 +v 3.639827 11.937369 6.555416 +v 3.639826 8.801990 6.858547 +v 3.639827 11.912108 6.294134 +v 3.639826 8.776729 6.597267 +v 2.957832 11.950000 6.686055 +v 3.412496 11.975261 6.947338 +v 3.867159 11.950000 6.686055 +v 3.867158 11.899478 6.163495 +v 4.094490 12.931973 5.931808 +v 3.412496 12.894082 5.539885 +v 4.094490 13.007758 6.715653 +v 3.412496 13.045648 7.107575 +v 2.730501 13.007758 6.715653 +v 2.730501 12.931973 5.931808 +v 4.094491 13.977101 5.830763 +v 3.412496 13.939210 5.438842 +v 4.094491 14.052884 6.614610 +v 3.412496 14.090775 7.006532 +v 2.730501 14.052884 6.614610 +v 2.730501 13.977101 5.830763 +v 2.957832 12.447959 7.446981 +v 3.412496 12.491173 7.188064 +v 3.412496 12.447959 7.446981 +v 3.412495 9.340938 6.928412 +v 3.185164 12.426353 7.576441 +v 3.185163 9.319330 7.057871 +v 3.185164 12.383138 7.835360 +v 3.185163 9.276116 7.316791 +v 3.412496 12.361531 7.964818 +v 3.412495 9.254509 7.446248 +v 3.639827 12.383138 7.835360 +v 3.639826 9.276116 7.316791 +v 3.639827 12.426353 7.576441 +v 3.639826 9.319330 7.057871 +v 2.957832 12.361531 7.964818 +v 3.412496 12.318316 8.223737 +v 3.867159 12.361531 7.964818 +v 3.867159 12.447959 7.446981 +v 4.094491 13.505240 7.490378 +v 3.412496 13.570062 7.102001 +v 4.094491 13.375598 8.267134 +v 3.412496 13.310778 8.655512 +v 2.730501 13.375598 8.267134 +v 2.730501 13.505240 7.490378 +v 4.094491 14.540915 7.663234 +v 3.412496 14.605736 7.274856 +v 4.094491 14.411272 8.439990 +v 3.412496 14.346450 8.828368 +v 2.730502 14.411272 8.439990 +v 2.730502 14.540915 7.663234 +vt 0.629630 0.225000 +vt 0.611111 0.175000 +vt 0.629630 0.175000 +vt 0.620370 0.175000 +vt 0.675926 0.150000 +vt 0.675926 0.175000 +vt 0.648148 0.175000 +vt 0.629630 0.225000 +vt 0.629630 0.175000 +vt 0.712963 0.175000 +vt 0.722222 0.150000 +vt 0.722222 0.175000 +vt 0.333333 0.400000 +vt 0.481481 0.387500 +vt 0.481481 0.400000 +vt 0.240741 0.387500 +vt 0.092593 0.337500 +vt 0.240741 0.337500 +vt 0.240741 0.325000 +vt 0.092593 0.325000 +vt 0.092593 0.400000 +vt 0.240741 0.400000 +vt 0.092593 0.325000 +vt 0.166667 0.125000 +vt 0.166667 0.325000 +vt 0.203704 0.325000 +vt 0.351852 0.000000 +vt 0.351852 0.325000 +vt 0.481481 0.325000 +vt 0.333333 0.337500 +vt 0.333333 0.325000 +vt 0.481481 0.337500 +vt 0.333333 0.387500 +vt 0.009259 0.400000 +vt 0.083333 0.387500 +vt 0.083333 0.400000 +vt 0.083333 0.325000 +vt 0.009259 0.337500 +vt 0.009259 0.325000 +vt 0.250000 0.400000 +vt 0.324074 0.387500 +vt 0.324074 0.400000 +vt 0.324074 0.325000 +vt 0.250000 0.337500 +vt 0.250000 0.325000 +vt 0.324074 0.337500 +vt 0.083333 0.337500 +vt 0.092593 0.387500 +vt 0.083333 0.400000 +vt 0.083333 0.325000 +vt 0.000000 0.325000 +vt -0.000000 0.337500 +vt 0.009259 0.387500 +vt -0.000000 0.387500 +vt 0.000000 0.400000 +vt 0.324074 0.325000 +vt 0.324074 0.400000 +vt 0.240741 0.325000 +vt 0.250000 0.387500 +vt 0.240741 0.400000 +vt 0.388889 0.325000 +vt 0.462963 0.125000 +vt 0.462963 0.325000 +vt 0.203704 0.000000 +vt 0.388889 0.125000 +vt 0.481481 0.325000 +vt 0.518519 0.175000 +vt 0.555556 0.325000 +vt 0.074074 0.325000 +vt 0.037037 0.175000 +vt 0.074074 0.175000 +vt 0.481481 0.175000 +vt 0.092593 0.125000 +vt 0.296296 0.700000 +vt 0.444444 0.400000 +vt 0.444444 0.700000 +vt 0.222222 0.700000 +vt 0.296296 0.400000 +vt 0.074074 0.700000 +vt 0.222222 0.400000 +vt 0.000000 0.700000 +vt 0.074074 0.400000 +vt 0.703704 0.225000 +vt 0.685185 0.175000 +vt 0.703704 0.175000 +vt 0.574074 0.175000 +vt 0.555556 0.225000 +vt 0.555556 0.175000 +vt 0.574074 0.150000 +vt 0.583333 0.175000 +vt 0.574074 0.175000 +vt 0.574074 0.225000 +vt 0.648148 0.225000 +vt 0.481481 0.175000 +vt 0.555556 0.150000 +vt 0.555556 0.175000 +vt 0.740741 0.175000 +vt 0.814815 0.150000 +vt 0.814815 0.175000 +vt 0.574074 0.375000 +vt 0.555556 0.425000 +vt 0.555556 0.375000 +vt 0.972222 0.150000 +vt 0.981481 0.175000 +vt 0.972222 0.175000 +vt 0.833333 0.175000 +vt 0.842593 0.150000 +vt 0.842593 0.175000 +vt 0.648148 0.375000 +vt 0.629630 0.425000 +vt 0.629630 0.375000 +vt 0.629630 0.425000 +vt 0.611111 0.375000 +vt 0.629630 0.375000 +vt 0.879630 0.150000 +vt 0.935185 0.175000 +vt 0.879630 0.175000 +vt 0.703704 0.425000 +vt 0.685185 0.375000 +vt 0.703704 0.375000 +vt 1.000000 0.175000 +vt 0.981481 0.150000 +vt 0.814815 0.175000 +vt 0.833333 0.150000 +vt 0.740741 0.175000 +vt 0.555556 0.175000 +vt 1.000000 0.150000 +vt 0.981481 0.050000 +vt 1.000000 0.025000 +vt 0.574074 0.050000 +vt 0.833333 0.050000 +vt 0.481481 0.150000 +vt 0.555556 0.025000 +vt 0.740741 0.150000 +vt 0.722222 0.050000 +vt 0.740741 0.025000 +vt 0.814815 0.025000 +vt 0.620370 0.150000 +vt 0.583333 0.150000 +vt 0.685185 0.425000 +vt 0.611111 0.425000 +vt 0.574074 0.425000 +vt 0.814815 -0.000000 +vt 0.481481 0.025000 +vt 0.555556 0.000000 +vt 0.574074 0.025000 +vt 0.722222 0.025000 +vt 0.833333 0.025000 +vt 0.981481 0.025000 +vt 0.574074 0.250000 +vt 0.555556 0.350000 +vt 0.555556 0.250000 +vt 0.703704 0.350000 +vt 0.685185 0.250000 +vt 0.703704 0.250000 +vt 0.629630 0.350000 +vt 0.611111 0.250000 +vt 0.629630 0.250000 +vt 0.648148 0.250000 +vt 0.629630 0.350000 +vt 0.629630 0.250000 +vt 0.611111 0.350000 +vt 0.648148 0.350000 +vt 0.611111 0.225000 +vt 0.685185 0.225000 +vt 0.685185 0.350000 +vt 0.574074 0.350000 +vt 0.629630 0.350000 +vt 0.703704 0.350000 +vt 0.629630 0.350000 +vt 0.555556 0.350000 +vt 0.555556 0.250000 +vt 0.629630 0.250000 +vt 0.629630 0.250000 +vt 0.703704 0.250000 +vt 0.222222 0.800000 +vt 0.555556 0.525000 +vt 0.444444 0.775000 +vt 0.444444 0.525000 +vt 0.629630 0.825000 +vt 0.740741 0.775000 +vt 0.740741 0.825000 +vt 0.740741 0.725000 +vt 0.814815 0.525000 +vt 0.814815 0.775000 +vt 0.740741 0.525000 +vt 0.629630 0.425000 +vt 0.740741 0.425000 +vt 0.629630 0.525000 +vt 0.629630 0.725000 +vt 0.592593 0.775000 +vt 0.555556 0.775000 +vt 0.537037 0.850000 +vt 0.500000 0.900000 +vt 0.500000 0.850000 +vt 0.546296 0.900000 +vt 0.555556 0.875000 +vt 0.555556 0.900000 +vt 0.222222 0.925000 +vt 0.314815 0.962500 +vt 0.222222 0.962500 +vt 0.500000 0.775000 +vt 0.500000 0.825000 +vt 0.490741 0.800000 +vt 0.018519 0.850000 +vt 0.055556 0.875000 +vt 0.018519 0.875000 +vt 0.222222 1.000000 +vt 0.453704 0.775000 +vt 0.444444 0.800000 +vt 0.444444 0.775000 +vt 0.018519 0.700000 +vt 0.055556 0.725000 +vt 0.018519 0.725000 +vt 0.314815 0.700000 +vt 0.222222 0.737500 +vt 0.222222 0.700000 +vt 0.462963 0.775000 +vt 0.453704 0.800000 +vt 0.074074 0.850000 +vt 0.074074 0.700000 +vt 0.314815 0.775000 +vt 0.222222 0.775000 +vt 0.472222 0.775000 +vt 0.462963 0.800000 +vt 0.537037 0.912500 +vt 0.500000 0.912500 +vt 0.314815 0.812500 +vt 0.222222 0.812500 +vt 0.481481 0.775000 +vt 0.472222 0.800000 +vt 0.000000 0.850000 +vt 0.000000 0.700000 +vt 0.222222 0.850000 +vt 0.315778 0.750000 +vt 0.326344 0.715564 +vt 0.351852 0.701301 +vt 0.055556 0.850000 +vt 0.314815 0.850000 +vt 0.222222 0.887500 +vt 0.537037 0.825000 +vt 0.537037 0.775000 +vt 0.314815 0.887500 +vt 0.377360 0.815565 +vt 0.377360 0.884436 +vt 0.326344 0.884436 +vt 0.555556 0.850000 +vt 0.546296 0.875000 +vt 0.546296 0.850000 +vt 0.546296 0.837500 +vt 0.537037 0.900000 +vt 0.546296 0.800000 +vt 0.546296 0.825000 +vt 0.490741 0.850000 +vt 0.481481 0.875000 +vt 0.481481 0.850000 +vt 0.490741 0.900000 +vt 0.490741 0.875000 +vt 0.490741 0.837500 +vt 0.055556 0.725000 +vt 0.018519 0.850000 +vt 0.018519 0.725000 +vt 0.611111 0.887500 +vt 0.629630 0.912500 +vt 0.611111 0.912500 +vt 0.000000 0.850000 +vt 0.000000 0.700000 +vt 0.074074 0.850000 +vt 0.055556 0.850000 +vt 0.055556 0.700000 +vt 0.018519 0.875000 +vt 0.564815 0.850000 +vt 0.574074 0.862500 +vt 0.564815 0.862500 +vt 0.583333 0.775000 +vt 0.574074 0.850000 +vt 0.574074 0.775000 +vt 0.564815 0.775000 +vt 0.555556 0.850000 +vt 0.555556 0.775000 +vt 0.592593 0.775000 +vt 0.583333 0.850000 +vt 0.629630 0.825000 +vt 0.611111 0.850000 +vt 0.611111 0.825000 +vt 0.629630 0.887500 +vt 0.648148 0.850000 +vt 0.666667 0.887500 +vt 0.648148 0.887500 +vt 0.629630 0.850000 +vt 0.592593 0.887500 +vt 0.666667 0.862500 +vt 0.675926 0.837500 +vt 0.675926 0.862500 +vt 0.666667 0.887500 +vt 0.675926 0.887500 +vt 0.694444 0.887500 +vt 0.703704 0.862500 +vt 0.703704 0.887500 +vt 0.685185 0.862500 +vt 0.694444 0.862500 +vt 0.685185 0.887500 +vt 0.685185 0.825000 +vt 0.685185 0.837500 +vt 0.703704 0.837500 +vt 0.694444 0.837500 +vt 0.694444 0.862500 +vt 0.685185 0.837500 +vt 0.694444 0.837500 +vt 0.694444 0.887500 +vt 0.685185 0.862500 +vt 0.703704 0.862500 +vt 0.703704 0.887500 +vt 0.666667 0.887500 +vt 0.675926 0.862500 +vt 0.675926 0.887500 +vt 0.685185 0.887500 +vt 0.675926 0.825000 +vt 0.685185 0.825000 +vt 0.703704 0.837500 +vt 0.666667 0.862500 +vt 0.675926 0.837500 +vt 0.814815 0.662500 +vt 0.962963 0.700000 +vt 0.814815 0.700000 +vt 0.962963 0.737500 +vt 0.814815 0.737500 +vt 0.962963 0.437500 +vt 0.814815 0.475000 +vt 0.814815 0.437500 +vt 0.962963 0.475000 +vt 0.814815 0.512500 +vt 0.962963 0.512500 +vt 0.814815 0.550000 +vt 0.962963 0.550000 +vt 0.814815 0.587500 +vt 0.937455 0.253064 +vt 0.962963 0.238801 +vt 0.962963 0.336199 +vt 0.962963 0.587500 +vt 0.814815 0.625000 +vt 0.962963 0.662500 +vt 0.937455 0.421935 +vt 0.937455 0.353064 +vt 0.988471 0.353064 +vt 0.814815 0.225000 +vt 0.740741 0.325000 +vt 0.740741 0.225000 +vt 0.740741 0.375000 +vt 0.814815 0.325000 +vt 0.814815 0.375000 +vt 0.814815 0.175000 +vt 0.740741 0.175000 +vt 0.851852 0.325000 +vt 0.851852 0.225000 +vt 0.703704 0.225000 +vt 0.703704 0.325000 +vt 0.916667 0.200000 +vt 0.925926 0.275000 +vt 0.916667 0.275000 +vt 0.861111 0.200000 +vt 0.851852 0.275000 +vt 0.851852 0.200000 +vt 0.916667 0.175000 +vt 0.907407 0.200000 +vt 0.907407 0.175000 +vt 0.898148 0.175000 +vt 0.888889 0.200000 +vt 0.888889 0.175000 +vt 0.879630 0.175000 +vt 0.870370 0.200000 +vt 0.870370 0.175000 +vt 0.861111 0.175000 +vt 0.851852 0.175000 +vt 0.925926 0.200000 +vt 0.898148 0.200000 +vt 0.888889 0.200000 +vt 0.879630 0.200000 +vt 0.898148 0.275000 +vt 0.888889 0.325000 +vt 0.888889 0.275000 +vt 0.907407 0.325000 +vt 0.907407 0.275000 +vt 0.879630 0.275000 +vt 0.861111 0.275000 +vt 0.870370 0.275000 +vt 0.870370 0.425000 +vt 0.861111 0.437500 +vt 0.861111 0.425000 +vt 0.898148 0.337500 +vt 0.898148 0.325000 +vt 0.851852 0.425000 +vt 0.925926 0.325000 +vt 0.916667 0.325000 +vt 0.888889 0.275000 +vt 0.879630 0.425000 +vt 0.425926 0.800000 +vt 0.435185 0.825000 +vt 0.425926 0.825000 +vt 0.398148 0.787500 +vt 0.388889 0.800000 +vt 0.388889 0.787500 +vt 0.398148 0.712500 +vt 0.407407 0.800000 +vt 0.416667 0.825000 +vt 0.407407 0.825000 +vt 0.425926 0.787500 +vt 0.435185 0.800000 +vt 0.407407 0.787500 +vt 0.444444 0.800000 +vt 0.435185 0.787500 +vt 0.416667 0.712500 +vt 0.416667 0.787500 +vt 0.398148 0.850000 +vt 0.398148 0.825000 +vt 0.416667 0.800000 +vt 0.425926 0.712500 +vt 0.397836 0.706250 +vt 0.391360 0.711298 +vt 0.391360 0.701202 +vt 0.388889 0.825000 +vt 0.435185 0.712500 +vt 0.398148 0.800000 +vt 0.444444 0.787500 +vt 0.390314 0.856394 +vt 0.398148 0.850287 +vt 0.405982 0.856394 +vt 0.416667 0.850000 +vt 0.444444 0.850000 +vt 0.435185 0.850000 +vt 0.388889 0.850000 +vt 0.407407 0.850000 +vt 0.425926 0.850000 +vt 0.425926 0.800000 +vt 0.435185 0.825000 +vt 0.425926 0.825000 +vt 0.398148 0.787500 +vt 0.388889 0.800000 +vt 0.388889 0.787500 +vt 0.388889 0.712500 +vt 0.416667 0.800000 +vt 0.407407 0.825000 +vt 0.407407 0.800000 +vt 0.435185 0.787500 +vt 0.425926 0.787500 +vt 0.407407 0.712500 +vt 0.407407 0.787500 +vt 0.444444 0.800000 +vt 0.435185 0.800000 +vt 0.444444 0.787500 +vt 0.416667 0.787500 +vt 0.398148 0.825000 +vt 0.407407 0.850000 +vt 0.398148 0.850000 +vt 0.425926 0.712500 +vt 0.389201 0.706250 +vt 0.391360 0.701202 +vt 0.397836 0.706250 +vt 0.388889 0.825000 +vt 0.416667 0.825000 +vt 0.398148 0.800000 +vt 0.435185 0.712500 +vt 0.393625 0.851924 +vt 0.402671 0.851924 +vt 0.402671 0.873076 +vt 0.416667 0.850000 +vt 0.444444 0.850000 +vt 0.435185 0.850000 +vt 0.388889 0.850000 +vt 0.425926 0.850000 +vt 0.490741 0.825000 +vt 0.712963 0.150000 +vt -0.000000 0.325000 +vt 0.000000 0.400000 +vt 0.648148 0.425000 +vt 0.935185 0.150000 +vt 0.740741 -0.000000 +vt 0.481481 0.000000 +vt 0.074074 0.800000 +vt 0.629630 0.775000 +vt 0.777778 0.775000 +vt 0.314815 0.925000 +vt 0.314815 1.000000 +vt 0.055556 0.700000 +vt 0.314815 0.737500 +vt 0.481481 0.800000 +vt 0.377360 0.715564 +vt 0.351852 0.798699 +vt 0.387925 0.750000 +vt 0.377360 0.784436 +vt 0.326344 0.784436 +vt 0.315778 0.850000 +vt 0.326344 0.815564 +vt 0.351852 0.801301 +vt 0.387925 0.850000 +vt 0.351852 0.898699 +vt 0.481481 0.900000 +vt 0.074074 0.700000 +vt 0.018519 0.700000 +vt 0.055556 0.875000 +vt 0.592593 0.850000 +vt 0.666667 0.850000 +vt 0.592593 0.850000 +vt 0.666667 0.837500 +vt 0.675926 0.825000 +vt 0.666667 0.837500 +vt 0.988471 0.253064 +vt 0.999037 0.287500 +vt 0.988471 0.321936 +vt 0.937455 0.321936 +vt 0.926890 0.287500 +vt 0.962963 0.625000 +vt 0.926889 0.387500 +vt 0.962963 0.338801 +vt 0.999036 0.387500 +vt 0.988471 0.421936 +vt 0.962963 0.436199 +vt 0.925926 0.175000 +vt 0.888889 0.175000 +vt 0.870370 0.437500 +vt 0.907407 0.337500 +vt 0.888889 0.425000 +vt 0.388889 0.712500 +vt 0.407407 0.712500 +vt 0.444444 0.825000 +vt 0.395677 0.701202 +vt 0.395677 0.711298 +vt 0.389201 0.706250 +vt 0.444444 0.712500 +vt 0.405982 0.868606 +vt 0.398148 0.874712 +vt 0.390314 0.868606 +vt 0.398148 0.712500 +vt 0.444444 0.825000 +vt 0.416667 0.712500 +vt 0.395677 0.701202 +vt 0.395677 0.711298 +vt 0.391360 0.711298 +vt 0.444444 0.712500 +vt 0.407194 0.862500 +vt 0.393625 0.873076 +vt 0.389102 0.862500 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.9923 -0.1240 0.0000 +vn -0.0000 -0.2249 0.9744 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.7071 -0.0000 -0.7071 +vn -0.9923 -0.1240 0.0000 +vn 0.8740 -0.1093 0.4734 +vn -0.8740 -0.1093 0.4734 +vn 0.0000 -0.1644 -0.9864 +vn -0.7960 -0.0995 -0.5970 +vn 0.7960 -0.0995 -0.5970 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn -0.0000 -0.7071 -0.7071 +vn -0.0000 -0.7071 0.7071 +vn 0.0000 -0.4472 0.8944 +vn 0.0000 0.3827 -0.9239 +vn -0.8729 -0.2182 -0.4364 +vn 0.0000 0.9239 -0.3827 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.3827 0.9239 +vn -0.0000 -0.3827 0.9239 +vn -0.0000 -0.9239 0.3827 +vn -0.0000 -0.9239 -0.3827 +vn -0.9701 -0.2425 0.0000 +vn -0.0000 -0.3827 -0.9239 +vn 0.0000 -0.4472 -0.8944 +vn -0.7071 0.7071 0.0000 +vn 0.0000 -0.8944 0.4472 +vn 0.0000 0.8944 -0.4472 +vn 0.0000 -0.8944 -0.4472 +vn 0.0000 0.8944 0.4472 +vn 0.9774 -0.2106 0.0204 +vn -0.0000 -0.9954 0.0962 +vn -0.5000 -0.0833 -0.8620 +vn -0.4887 -0.1292 0.8628 +vn 0.4887 -0.2921 -0.8221 +vn -0.5000 0.0833 0.8620 +vn 0.5000 0.0833 0.8620 +vn -0.4887 -0.2921 -0.8221 +vn 0.4887 -0.1292 0.8628 +vn 0.5000 -0.0833 -0.8620 +vn -0.9774 -0.2106 0.0204 +vn 0.0000 0.9954 -0.0962 +vn 0.9774 -0.2087 -0.0348 +vn -0.0000 -0.9864 -0.1646 +vn -0.5000 0.1426 -0.8542 +vn -0.4887 -0.3481 0.8000 +vn 0.4887 -0.0694 -0.8697 +vn -0.5000 -0.1426 0.8542 +vn 0.5000 -0.1426 0.8542 +vn -0.4887 -0.0694 -0.8697 +vn 0.4887 -0.3481 0.8000 +vn 0.5000 0.1426 -0.8542 +vn -0.9774 -0.2087 -0.0348 +vn 0.0000 0.9864 0.1646 +vn -0.8729 -0.2182 0.4364 +s off +f 478/762/117 546/763/117 530/764/117 +f 530/765/118 549/766/118 537/767/118 +f 549/768/119 529/769/119 537/770/119 +f 534/771/118 551/772/118 540/773/118 +f 491/774/118 496/775/118 492/776/118 +f 488/777/120 490/778/120 487/779/120 +f 485/780/121 490/778/121 486/781/121 +f 484/782/118 488/777/118 483/783/118 +f 510/784/122 513/785/122 509/786/122 +f 509/787/123 511/788/123 507/789/123 +f 494/790/121 497/791/121 493/792/121 +f 498/793/124 495/794/124 497/791/124 +f 492/795/118 499/796/118 484/797/118 +f 486/798/121 502/799/121 494/800/121 +f 483/801/118 505/802/118 491/803/118 +f 493/804/121 504/805/121 485/806/121 +f 505/802/117 504/805/117 506/807/117 +f 499/796/119 502/799/119 500/808/119 +f 499/796/125 490/778/125 489/809/125 +f 484/782/118 499/810/118 489/809/118 +f 486/781/121 490/778/121 500/811/121 +f 494/800/121 502/799/121 498/812/121 +f 498/813/126 501/814/126 496/815/126 +f 492/795/118 496/816/118 501/814/118 +f 493/792/121 497/791/121 506/817/121 +f 495/794/127 506/807/127 497/791/127 +f 491/774/118 505/818/118 495/794/118 +f 485/806/121 504/805/121 487/819/121 +f 488/777/128 504/805/128 503/820/128 +f 483/801/118 488/821/118 503/820/118 +f 507/822/129 516/823/129 508/824/129 +f 509/787/130 513/785/130 512/825/130 +f 507/789/131 511/788/131 515/826/131 +f 508/827/132 519/828/132 517/829/132 +f 510/830/132 521/831/132 520/832/132 +f 508/824/133 516/823/133 518/833/133 +f 510/784/134 520/832/134 514/834/134 +f 475/835/124 525/836/124 482/837/124 +f 476/838/117 522/839/117 475/835/117 +f 477/840/120 523/841/120 476/838/120 +f 482/842/119 524/843/119 477/840/119 +f 526/844/117 548/845/117 534/846/117 +f 547/847/119 481/848/119 533/849/119 +f 550/850/118 533/851/118 539/852/118 +f 546/763/120 543/853/120 547/847/120 +f 548/845/120 545/854/120 549/768/120 +f 538/855/118 553/856/118 539/857/118 +f 540/858/118 555/859/118 541/860/118 +f 557/861/119 532/862/119 480/863/119 +f 561/864/118 538/865/118 532/866/118 +f 541/867/118 562/868/118 535/869/118 +f 559/870/119 536/871/119 528/872/119 +f 531/873/117 556/874/117 479/875/117 +f 563/876/118 531/877/118 536/878/118 +f 535/879/117 558/880/117 527/881/117 +f 552/882/118 538/865/118 564/883/118 +f 541/867/118 555/884/118 565/885/118 +f 540/773/118 551/772/118 554/886/118 +f 539/852/118 553/887/118 550/850/118 +f 552/888/126 572/889/126 568/890/126 +f 553/856/125 566/891/125 550/850/125 +f 555/859/127 573/892/127 565/885/127 +f 552/893/119 569/894/119 553/856/119 +f 554/895/128 567/896/128 570/897/128 +f 554/895/117 571/898/117 555/859/117 +f 546/899/120 547/900/120 566/891/120 +f 562/901/124 559/870/124 558/880/124 +f 557/861/124 560/902/124 561/903/124 +f 572/889/124 564/883/124 561/864/124 +f 570/897/121 577/904/121 571/898/121 +f 568/905/121 575/906/121 569/894/121 +f 569/894/135 575/907/135 566/891/135 +f 570/897/135 567/896/135 576/908/135 +f 566/891/135 576/908/135 567/896/135 +f 573/892/136 571/898/136 577/909/136 +f 572/889/136 574/910/136 568/890/136 +f 572/889/136 577/909/136 574/910/136 +f 581/911/119 480/912/119 481/913/119 +f 527/914/117 582/915/117 526/916/117 +f 479/917/117 578/918/117 478/919/117 +f 585/920/119 528/921/119 529/922/119 +f 579/923/118 581/911/118 578/918/118 +f 582/915/118 584/924/118 585/920/118 +f 542/925/137 581/911/137 543/853/137 +f 544/926/137 585/920/137 545/854/137 +f 558/880/138 584/924/138 583/927/138 +f 580/928/138 556/874/138 557/861/138 +f 479/875/117 556/874/117 579/929/117 +f 527/881/117 558/880/117 583/930/117 +f 528/872/119 584/931/119 559/870/119 +f 480/863/119 580/932/119 557/861/119 +f 481/848/119 543/853/119 581/933/119 +f 478/762/117 578/934/117 542/925/117 +f 529/769/119 545/854/119 585/935/119 +f 526/844/117 582/936/117 544/926/117 +f 475/937/118 477/840/118 476/838/118 +f 586/938/120 589/939/120 587/940/120 +f 588/941/118 591/942/118 589/943/118 +f 595/944/119 587/945/119 589/946/119 +f 594/947/121 586/948/121 587/949/121 +f 593/950/124 595/944/124 592/951/124 +f 591/942/138 592/951/138 595/944/138 +f 592/951/117 590/952/117 588/953/117 +f 628/954/117 632/955/117 629/956/117 +f 635/957/139 638/958/139 634/959/139 +f 598/960/140 601/961/140 600/962/140 +f 633/963/141 631/964/141 643/965/141 +f 615/966/118 617/967/118 619/968/118 +f 601/961/142 602/969/142 600/962/142 +f 622/970/120 624/971/120 623/972/120 +f 618/973/143 597/974/143 614/975/143 +f 603/976/144 604/977/144 602/978/144 +f 620/979/117 625/980/117 622/970/117 +f 617/981/124 597/974/124 616/982/124 +f 604/977/145 607/983/145 606/984/145 +f 621/985/124 627/986/124 620/979/124 +f 632/955/118 634/987/118 633/988/118 +f 606/984/146 609/989/146 608/990/146 +f 623/991/119 626/992/119 621/985/119 +f 614/975/120 619/993/120 618/994/120 +f 609/989/147 610/995/147 608/990/147 +f 607/996/119 605/997/119 603/998/119 +f 596/999/117 614/975/117 597/974/117 +f 611/1000/148 612/1001/148 610/995/148 +f 630/1002/121 629/956/121 631/964/121 +f 631/964/149 634/1003/149 630/1002/149 +f 613/1004/150 598/960/150 612/1001/150 +f 604/1005/117 608/1006/117 612/1007/117 +f 636/1008/124 639/1009/124 637/1010/124 +f 628/954/121 636/1011/121 637/1010/121 +f 628/954/117 639/1009/117 635/1012/117 +f 630/1002/126 638/1013/126 636/1014/126 +f 640/1015/120 643/1016/120 641/1017/120 +f 632/1018/151 643/1016/151 642/1019/151 +f 629/956/121 641/1020/121 631/964/121 +f 629/956/117 642/1019/117 640/1015/117 +f 646/1021/119 644/1022/119 645/1023/119 +f 662/1024/118 660/1025/118 661/1026/118 +f 645/1023/124 650/1027/124 651/1028/124 +f 646/1021/120 648/1029/120 647/1030/120 +f 645/1023/152 649/1031/152 646/1021/152 +f 647/1030/118 650/1032/118 644/1022/118 +f 658/1033/118 656/1034/118 657/1035/118 +f 654/1036/120 659/1037/120 655/1038/120 +f 653/1039/124 657/1040/124 652/1041/124 +f 655/1038/119 658/1033/119 653/1039/119 +f 652/1042/117 656/1043/117 654/1036/117 +f 664/1044/121 666/1045/121 665/1046/121 +f 666/1045/119 663/1047/119 662/1024/119 +f 664/1048/117 661/1049/117 660/1050/117 +f 667/1051/120 660/1050/120 663/1047/120 +f 661/1052/124 666/1045/124 662/1024/124 +f 674/1053/117 676/1054/117 672/1055/117 +f 670/1056/117 672/1055/117 668/1057/117 +f 671/1058/121 674/1059/121 670/1060/121 +f 671/1058/119 673/1061/119 675/1062/119 +f 668/1057/153 673/1061/153 669/1063/153 +f 676/1054/124 679/1064/124 677/1065/124 +f 675/1062/154 678/1066/154 674/1059/154 +f 675/1062/119 677/1065/119 679/1067/119 +f 672/1055/153 677/1065/153 673/1061/153 +f 686/1068/117 688/1069/117 690/1070/117 +f 682/1071/117 684/1072/117 686/1068/117 +f 682/1071/121 687/1073/121 683/1074/121 +f 683/1075/119 685/1076/119 681/1077/119 +f 681/1077/155 684/1072/155 680/1078/155 +f 688/1069/120 691/1079/120 690/1080/120 +f 686/1068/156 691/1081/156 687/1073/156 +f 687/1082/119 689/1083/119 685/1076/119 +f 684/1072/155 689/1083/155 688/1069/155 +f 692/1084/140 695/1085/140 694/1086/140 +f 694/1086/142 697/1087/142 696/1088/142 +f 697/1089/144 698/1090/144 696/1091/144 +f 699/1092/145 700/1093/145 698/1090/145 +f 701/1094/146 702/1095/146 700/1093/146 +f 703/1096/147 704/1097/147 702/1095/147 +f 699/1098/119 697/1099/119 705/1100/119 +f 705/1101/148 706/1102/148 704/1097/148 +f 706/1102/150 693/1103/150 692/1084/150 +f 706/1104/117 694/1105/117 698/1106/117 +f 714/1107/124 712/1108/124 713/1109/124 +f 710/1110/118 715/1111/118 711/1112/118 +f 709/1113/121 713/1109/121 708/1114/121 +f 711/1115/119 714/1107/119 709/1116/119 +f 708/1117/117 712/1108/117 710/1118/117 +f 731/1119/137 736/1120/137 739/1121/137 +f 725/1122/117 732/1123/117 724/1124/117 +f 723/1125/119 730/1126/119 721/1127/119 +f 720/1128/117 728/1129/117 722/1130/117 +f 719/1131/119 726/1132/119 717/1133/119 +f 716/1134/117 724/1124/117 718/1135/117 +f 723/1125/120 728/1136/120 731/1119/120 +f 721/1127/124 729/1137/124 720/1128/124 +f 719/1131/120 724/1138/120 727/1139/120 +f 717/1133/124 725/1122/124 716/1134/124 +f 737/1140/117 744/1141/117 736/1142/117 +f 739/1121/119 746/1143/119 738/1144/119 +f 729/1137/136 738/1144/136 737/1140/136 +f 724/1138/137 735/1145/137 727/1139/137 +f 726/1132/136 733/1146/136 725/1122/136 +f 730/1126/119 739/1121/119 738/1144/119 +f 729/1137/117 736/1142/117 728/1129/117 +f 726/1132/119 735/1145/119 734/1147/119 +f 742/1148/118 740/1149/118 741/1150/118 +f 746/1143/118 744/1151/118 745/1152/118 +f 735/1145/119 742/1148/119 734/1147/119 +f 733/1146/117 740/1153/117 732/1123/117 +f 739/1121/120 744/1154/120 747/1155/120 +f 738/1144/124 745/1152/124 737/1140/124 +f 732/1156/120 743/1157/120 735/1145/120 +f 734/1147/124 741/1150/124 733/1146/124 +f 764/1158/157 766/1159/157 768/1160/157 +f 752/1161/158 749/1162/158 750/1163/158 +f 750/1163/159 753/1164/159 752/1161/159 +f 762/1165/160 769/1166/160 770/1167/160 +f 758/1168/158 765/1169/158 764/1158/158 +f 753/1164/119 754/1170/119 752/1161/119 +f 749/1171/161 766/1159/161 765/1169/161 +f 760/1172/158 749/1171/158 765/1169/158 +f 754/1170/162 757/1173/162 756/1174/162 +f 770/1167/119 777/1175/119 771/1176/119 +f 758/1168/158 763/1177/158 756/1174/158 +f 756/1174/163 759/1178/163 758/1168/163 +f 751/1179/158 759/1180/158 755/1181/158 +f 749/1162/164 771/1176/164 767/1182/164 +f 758/1168/117 761/1183/117 760/1172/117 +f 763/1177/165 768/1160/165 769/1166/165 +f 752/1161/158 762/1165/158 748/1184/158 +f 761/1183/166 750/1185/166 760/1172/166 +f 754/1170/158 763/1177/158 762/1165/158 +f 762/1165/167 771/1176/167 748/1184/167 +f 775/1186/168 774/1187/168 772/1188/168 +f 768/1160/163 775/1189/163 769/1166/163 +f 766/1159/166 773/1190/166 772/1191/166 +f 767/1182/159 777/1175/159 773/1192/159 +f 769/1166/162 776/1193/162 770/1167/162 +f 768/1160/117 772/1191/117 774/1194/117 +f 794/1195/169 796/1196/169 798/1197/169 +f 782/1198/170 779/1199/170 780/1200/170 +f 781/1201/171 782/1198/171 780/1200/171 +f 793/1202/172 800/1203/172 792/1204/172 +f 790/1205/170 794/1195/170 788/1206/170 +f 782/1198/119 785/1207/119 784/1208/119 +f 779/1209/173 796/1196/173 795/1210/173 +f 780/1211/170 795/1210/170 790/1205/170 +f 785/1207/174 786/1212/174 784/1208/174 +f 801/1213/119 806/1214/119 807/1215/119 +f 788/1206/170 793/1202/170 786/1212/170 +f 786/1212/175 789/1216/175 788/1206/175 +f 787/1217/170 785/1218/170 781/1219/170 +f 779/1199/176 801/1213/176 797/1220/176 +f 789/1216/117 790/1205/117 788/1206/117 +f 793/1202/177 798/1197/177 799/1221/177 +f 782/1198/170 792/1204/170 778/1222/170 +f 791/1223/178 780/1211/178 790/1205/178 +f 784/1208/170 793/1202/170 792/1204/170 +f 792/1204/179 801/1213/179 778/1222/179 +f 804/1224/180 802/1225/180 807/1226/180 +f 798/1197/175 805/1227/175 799/1221/175 +f 796/1196/178 803/1228/178 802/1229/178 +f 797/1220/171 807/1215/171 803/1230/171 +f 799/1221/174 806/1214/174 800/1203/174 +f 798/1197/117 802/1229/117 804/1231/117 +f 638/1013/181 630/1002/181 634/1003/181 +f 643/965/125 631/964/125 641/1232/125 +f 478/762/117 542/925/117 546/763/117 +f 530/765/118 546/899/118 549/766/118 +f 549/768/119 545/854/119 529/769/119 +f 534/771/118 548/1233/118 551/772/118 +f 491/774/118 495/794/118 496/775/118 +f 488/777/120 489/809/120 490/778/120 +f 485/780/121 487/779/121 490/778/121 +f 484/782/118 489/809/118 488/777/118 +f 510/784/122 514/834/122 513/785/122 +f 509/787/123 512/825/123 511/788/123 +f 494/790/121 498/793/121 497/791/121 +f 498/793/124 496/775/124 495/794/124 +f 492/795/118 501/814/118 499/796/118 +f 486/798/121 500/808/121 502/799/121 +f 483/801/118 503/820/118 505/802/118 +f 493/804/121 506/807/121 504/805/121 +f 505/802/117 503/820/117 504/805/117 +f 499/796/119 501/814/119 502/799/119 +f 499/796/125 500/808/125 490/778/125 +f 498/813/126 502/799/126 501/814/126 +f 495/794/127 505/802/127 506/807/127 +f 488/777/128 487/779/128 504/805/128 +f 507/822/129 515/826/129 516/823/129 +f 508/827/132 518/833/132 519/828/132 +f 510/830/132 517/1234/132 521/831/132 +f 475/835/124 522/839/124 525/836/124 +f 476/838/117 523/841/117 522/839/117 +f 477/840/120 524/843/120 523/841/120 +f 482/842/119 525/1235/119 524/843/119 +f 526/844/117 544/926/117 548/845/117 +f 547/847/119 543/853/119 481/848/119 +f 550/850/118 547/900/118 533/851/118 +f 546/763/120 542/925/120 543/853/120 +f 548/845/120 544/926/120 545/854/120 +f 538/855/118 552/893/118 553/856/118 +f 540/858/118 554/895/118 555/859/118 +f 557/861/119 561/903/119 532/862/119 +f 561/864/118 564/883/118 538/865/118 +f 541/867/118 565/885/118 562/868/118 +f 559/870/119 563/1236/119 536/871/119 +f 531/873/117 560/902/117 556/874/117 +f 563/876/118 560/1237/118 531/877/118 +f 535/879/117 562/901/117 558/880/117 +f 552/888/126 564/883/126 572/889/126 +f 553/856/125 569/894/125 566/891/125 +f 555/859/127 571/898/127 573/892/127 +f 552/893/119 568/905/119 569/894/119 +f 554/895/128 551/772/128 567/896/128 +f 554/895/117 570/897/117 571/898/117 +f 547/900/120 550/850/120 566/891/120 +f 566/891/120 567/896/120 549/766/120 +f 567/896/120 551/772/120 548/1233/120 +f 549/766/120 567/896/120 548/1233/120 +f 549/766/120 546/899/120 566/891/120 +f 562/901/124 563/1236/124 559/870/124 +f 557/861/124 556/874/124 560/902/124 +f 561/864/124 560/1237/124 572/889/124 +f 560/1237/124 563/876/124 572/889/124 +f 563/876/124 562/868/124 573/892/124 +f 562/868/124 565/885/124 573/892/124 +f 573/892/124 572/889/124 563/876/124 +f 570/897/121 576/1238/121 577/904/121 +f 568/905/121 574/1239/121 575/906/121 +f 566/891/135 575/907/135 576/908/135 +f 572/889/136 573/892/136 577/909/136 +f 581/911/119 580/928/119 480/912/119 +f 527/914/117 583/927/117 582/915/117 +f 479/917/117 579/923/117 578/918/117 +f 585/920/119 584/924/119 528/921/119 +f 579/923/118 580/928/118 581/911/118 +f 582/915/118 583/927/118 584/924/118 +f 542/925/137 578/918/137 581/911/137 +f 544/926/137 582/915/137 585/920/137 +f 558/880/138 559/870/138 584/924/138 +f 580/928/138 579/923/138 556/874/138 +f 475/937/118 482/1240/118 477/840/118 +f 586/938/120 588/953/120 589/939/120 +f 588/941/118 590/1241/118 591/942/118 +f 589/946/119 591/1242/119 595/944/119 +f 595/944/119 594/947/119 587/945/119 +f 594/947/121 593/950/121 586/948/121 +f 593/950/124 594/947/124 595/944/124 +f 591/942/138 590/1241/138 592/951/138 +f 588/953/117 586/938/117 592/951/117 +f 586/938/117 593/950/117 592/951/117 +f 628/954/117 635/1012/117 632/955/117 +f 635/957/139 639/1009/139 638/958/139 +f 598/960/140 599/1243/140 601/961/140 +f 615/966/118 596/999/118 617/967/118 +f 601/961/142 603/1244/142 602/969/142 +f 622/970/120 625/980/120 624/971/120 +f 618/973/143 616/1245/143 597/974/143 +f 603/976/144 605/1246/144 604/977/144 +f 620/979/117 627/986/117 625/980/117 +f 617/981/124 596/999/124 597/974/124 +f 604/977/145 605/1246/145 607/983/145 +f 621/985/124 626/992/124 627/986/124 +f 632/955/118 635/1012/118 634/987/118 +f 606/984/146 607/983/146 609/989/146 +f 623/991/119 624/1247/119 626/992/119 +f 614/975/120 615/966/120 619/993/120 +f 609/989/147 611/1000/147 610/995/147 +f 603/998/119 601/1248/119 611/1249/119 +f 601/1248/119 599/1250/119 611/1249/119 +f 599/1250/119 613/1251/119 611/1249/119 +f 611/1249/119 609/1252/119 603/998/119 +f 609/1252/119 607/996/119 603/998/119 +f 596/999/117 615/966/117 614/975/117 +f 611/1000/148 613/1004/148 612/1001/148 +f 630/1002/121 628/954/121 629/956/121 +f 631/964/149 633/963/149 634/1003/149 +f 613/1004/150 599/1243/150 598/960/150 +f 612/1007/117 598/1253/117 600/1254/117 +f 600/1254/117 602/1255/117 604/1005/117 +f 604/1005/117 606/1256/117 608/1006/117 +f 608/1006/117 610/1257/117 612/1007/117 +f 612/1007/117 600/1254/117 604/1005/117 +f 636/1008/124 638/958/124 639/1009/124 +f 628/954/121 630/1002/121 636/1011/121 +f 628/954/117 637/1010/117 639/1009/117 +f 640/1015/120 642/1019/120 643/1016/120 +f 632/1018/151 633/1258/151 643/1016/151 +f 629/956/121 640/1015/121 641/1020/121 +f 629/956/117 632/955/117 642/1019/117 +f 646/1021/119 647/1030/119 644/1022/119 +f 662/1024/118 663/1047/118 660/1025/118 +f 645/1023/124 644/1022/124 650/1027/124 +f 646/1021/120 649/1259/120 648/1029/120 +f 645/1023/152 651/1260/152 649/1031/152 +f 647/1030/118 648/1261/118 650/1032/118 +f 658/1033/118 659/1037/118 656/1034/118 +f 654/1036/120 656/1043/120 659/1037/120 +f 653/1039/124 658/1033/124 657/1040/124 +f 655/1038/119 659/1037/119 658/1033/119 +f 652/1042/117 657/1262/117 656/1043/117 +f 664/1044/121 667/1051/121 666/1045/121 +f 666/1045/119 667/1051/119 663/1047/119 +f 664/1048/117 665/1263/117 661/1049/117 +f 667/1051/120 664/1048/120 660/1050/120 +f 661/1052/124 665/1264/124 666/1045/124 +f 674/1053/117 678/1265/117 676/1054/117 +f 670/1056/117 674/1053/117 672/1055/117 +f 671/1058/121 675/1062/121 674/1059/121 +f 671/1058/119 669/1063/119 673/1061/119 +f 668/1057/153 672/1055/153 673/1061/153 +f 676/1054/124 678/1266/124 679/1064/124 +f 675/1062/154 679/1067/154 678/1066/154 +f 675/1062/119 673/1061/119 677/1065/119 +f 672/1055/153 676/1054/153 677/1065/153 +f 686/1068/117 684/1072/117 688/1069/117 +f 682/1071/117 680/1078/117 684/1072/117 +f 682/1071/121 686/1068/121 687/1073/121 +f 683/1075/119 687/1082/119 685/1076/119 +f 681/1077/155 685/1076/155 684/1072/155 +f 688/1069/120 689/1083/120 691/1079/120 +f 686/1068/156 690/1070/156 691/1081/156 +f 687/1082/119 691/1267/119 689/1083/119 +f 684/1072/155 685/1076/155 689/1083/155 +f 692/1084/140 693/1103/140 695/1085/140 +f 694/1086/142 695/1085/142 697/1087/142 +f 697/1089/144 699/1092/144 698/1090/144 +f 699/1092/145 701/1094/145 700/1093/145 +f 701/1094/146 703/1096/146 702/1095/146 +f 703/1096/147 705/1101/147 704/1097/147 +f 697/1099/119 695/1268/119 705/1100/119 +f 695/1268/119 693/1269/119 705/1100/119 +f 693/1269/119 707/1270/119 705/1100/119 +f 705/1100/119 703/1271/119 701/1272/119 +f 701/1272/119 699/1098/119 705/1100/119 +f 705/1101/148 707/1273/148 706/1102/148 +f 706/1102/150 707/1273/150 693/1103/150 +f 706/1104/117 692/1274/117 694/1105/117 +f 694/1105/117 696/1275/117 698/1106/117 +f 698/1106/117 700/1276/117 702/1277/117 +f 702/1277/117 704/1278/117 698/1106/117 +f 704/1278/117 706/1104/117 698/1106/117 +f 714/1107/124 715/1111/124 712/1108/124 +f 710/1110/118 712/1108/118 715/1111/118 +f 709/1113/121 714/1107/121 713/1109/121 +f 711/1115/119 715/1111/119 714/1107/119 +f 708/1117/117 713/1109/117 712/1108/117 +f 731/1119/137 728/1136/137 736/1120/137 +f 725/1122/117 733/1146/117 732/1123/117 +f 723/1125/119 731/1119/119 730/1126/119 +f 720/1128/117 729/1137/117 728/1129/117 +f 719/1131/119 727/1139/119 726/1132/119 +f 716/1134/117 725/1122/117 724/1124/117 +f 723/1125/120 722/1279/120 728/1136/120 +f 721/1127/124 730/1126/124 729/1137/124 +f 719/1131/120 718/1280/120 724/1138/120 +f 717/1133/124 726/1132/124 725/1122/124 +f 737/1140/117 745/1152/117 744/1141/117 +f 739/1121/119 747/1155/119 746/1143/119 +f 729/1137/136 730/1126/136 738/1144/136 +f 724/1138/137 732/1156/137 735/1145/137 +f 726/1132/136 734/1147/136 733/1146/136 +f 730/1126/119 731/1119/119 739/1121/119 +f 729/1137/117 737/1140/117 736/1142/117 +f 726/1132/119 727/1139/119 735/1145/119 +f 742/1148/118 743/1281/118 740/1149/118 +f 746/1143/118 747/1282/118 744/1151/118 +f 735/1145/119 743/1157/119 742/1148/119 +f 733/1146/117 741/1150/117 740/1153/117 +f 739/1121/120 736/1120/120 744/1154/120 +f 738/1144/124 746/1143/124 745/1152/124 +f 732/1156/120 740/1283/120 743/1157/120 +f 734/1147/124 742/1148/124 741/1150/124 +f 764/1158/157 765/1169/157 766/1159/157 +f 752/1161/158 748/1184/158 749/1162/158 +f 750/1163/159 751/1284/159 753/1164/159 +f 762/1165/160 763/1177/160 769/1166/160 +f 758/1168/158 760/1172/158 765/1169/158 +f 753/1164/119 755/1285/119 754/1170/119 +f 749/1171/161 767/1286/161 766/1159/161 +f 760/1172/158 750/1185/158 749/1171/158 +f 754/1170/162 755/1285/162 757/1173/162 +f 770/1167/119 776/1193/119 777/1175/119 +f 758/1168/158 764/1158/158 763/1177/158 +f 756/1174/163 757/1173/163 759/1178/163 +f 755/1181/158 753/1287/158 751/1179/158 +f 751/1179/158 761/1288/158 759/1180/158 +f 759/1180/158 757/1289/158 755/1181/158 +f 749/1162/164 748/1184/164 771/1176/164 +f 758/1168/117 759/1178/117 761/1183/117 +f 763/1177/165 764/1158/165 768/1160/165 +f 752/1161/158 754/1170/158 762/1165/158 +f 761/1183/166 751/1290/166 750/1185/166 +f 754/1170/158 756/1174/158 763/1177/158 +f 762/1165/167 770/1167/167 771/1176/167 +f 772/1188/168 773/1291/168 775/1186/168 +f 773/1291/168 777/1292/168 775/1186/168 +f 777/1292/168 776/1293/168 775/1186/168 +f 768/1160/163 774/1194/163 775/1189/163 +f 766/1159/166 767/1286/166 773/1190/166 +f 767/1182/159 771/1176/159 777/1175/159 +f 769/1166/162 775/1189/162 776/1193/162 +f 768/1160/117 766/1159/117 772/1191/117 +f 794/1195/169 795/1210/169 796/1196/169 +f 782/1198/170 778/1222/170 779/1199/170 +f 781/1201/171 783/1294/171 782/1198/171 +f 793/1202/172 799/1221/172 800/1203/172 +f 790/1205/170 795/1210/170 794/1195/170 +f 782/1198/119 783/1294/119 785/1207/119 +f 779/1209/173 797/1295/173 796/1196/173 +f 780/1211/170 779/1209/170 795/1210/170 +f 785/1207/174 787/1296/174 786/1212/174 +f 801/1213/119 800/1203/119 806/1214/119 +f 788/1206/170 794/1195/170 793/1202/170 +f 786/1212/175 787/1296/175 789/1216/175 +f 785/1218/170 783/1297/170 781/1219/170 +f 781/1219/170 791/1298/170 789/1299/170 +f 789/1299/170 787/1217/170 781/1219/170 +f 779/1199/176 778/1222/176 801/1213/176 +f 789/1216/117 791/1223/117 790/1205/117 +f 793/1202/177 794/1195/177 798/1197/177 +f 782/1198/170 784/1208/170 792/1204/170 +f 791/1223/178 781/1300/178 780/1211/178 +f 784/1208/170 786/1212/170 793/1202/170 +f 792/1204/179 800/1203/179 801/1213/179 +f 802/1225/180 803/1301/180 807/1226/180 +f 807/1226/180 806/1302/180 805/1303/180 +f 805/1303/180 804/1224/180 807/1226/180 +f 798/1197/175 804/1231/175 805/1227/175 +f 796/1196/178 797/1295/178 803/1228/178 +f 797/1220/171 801/1213/171 807/1215/171 +f 799/1221/174 805/1227/174 806/1214/174 +f 798/1197/117 796/1196/117 802/1229/117 diff --git a/src/main/resources/assets/hbm/models/blocks/capacitor.obj b/src/main/resources/assets/hbm/models/blocks/capacitor.obj new file mode 100644 index 000000000..81f79da44 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/capacitor.obj @@ -0,0 +1,128 @@ +# Blender v2.79 (sub 0) OBJ File: 'capacitor.blend' +# www.blender.org +o InnerSide +v -0.437500 -0.250000 0.437500 +v -0.437500 -0.250000 -0.437500 +v 0.437500 -0.250000 0.437500 +v 0.437500 -0.250000 -0.437500 +v -0.437500 0.437500 0.437500 +v -0.437500 0.437500 -0.437500 +v 0.437500 0.437500 -0.437500 +v 0.437500 0.437500 0.437500 +vt 0.937500 0.250000 +vt 0.062500 0.937500 +vt 0.062500 0.250000 +vt 0.062500 0.937500 +vt 0.937500 0.250000 +vt 0.937500 0.937500 +vt 0.937500 0.250000 +vt 0.062500 0.937500 +vt 0.062500 0.250000 +vt 0.062500 0.937500 +vt 0.937500 0.250000 +vt 0.937500 0.937500 +vt 0.937500 0.937500 +vt 0.062500 0.250000 +vt 0.937500 0.937500 +vt 0.062500 0.250000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 3/1/1 5/2/1 1/3/1 +f 2/4/2 7/5/2 4/6/2 +f 4/7/3 8/8/3 3/9/3 +f 1/10/4 6/11/4 2/12/4 +f 3/1/1 8/13/1 5/2/1 +f 2/4/2 6/14/2 7/5/2 +f 4/7/3 7/15/3 8/8/3 +f 1/10/4 5/16/4 6/11/4 +o InnerTop +v -0.437500 0.437500 0.437500 +v -0.437500 0.437500 -0.437500 +v 0.437500 0.437500 -0.437500 +v 0.437500 0.437500 0.437500 +vt 0.937500 0.937500 +vt 0.062500 0.062500 +vt 0.937500 0.062500 +vt 0.062500 0.937500 +vn 0.0000 1.0000 0.0000 +s off +f 10/17/5 12/18/5 11/19/5 +f 10/17/5 9/20/5 12/18/5 +o Side +v -0.500000 -0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 14/21/6 15/22/6 13/23/6 +f 16/24/7 19/25/7 15/26/7 +f 20/27/8 17/28/8 19/29/8 +f 18/30/9 13/31/9 17/32/9 +f 14/21/6 16/33/6 15/22/6 +f 16/24/7 20/34/7 19/25/7 +f 20/27/8 18/35/8 17/28/8 +f 18/30/9 14/36/9 13/31/9 +o Top +v -0.500000 0.500000 0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 0.500000 -0.500000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vn 0.0000 1.0000 0.0000 +s off +f 22/37/10 23/38/10 24/39/10 +f 22/37/10 21/40/10 23/38/10 +o Bottom +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v -0.500000 -0.250000 0.500000 +v -0.500000 -0.250000 -0.500000 +v 0.500000 -0.250000 0.500000 +v 0.500000 -0.250000 -0.500000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 1.000000 0.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 28/41/11 25/42/11 26/43/11 +f 30/44/12 31/45/12 32/46/12 +f 28/41/11 27/47/11 25/42/11 +f 30/44/12 29/48/12 31/45/12 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_narrow.obj b/src/main/resources/assets/hbm/models/blocks/rail_narrow.obj new file mode 100644 index 000000000..ae0ae0946 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_narrow.obj @@ -0,0 +1,314 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_narrow.blend' +# www.blender.org +o Plane +v 0.500000 0.125000 0.375000 +v -0.500000 0.125000 0.375000 +v -0.500000 0.125000 -0.375000 +v 0.500000 0.125000 -0.375000 +v -0.500000 0.000000 0.375000 +v 0.500000 0.000000 0.375000 +v -0.500000 0.000000 -0.437500 +v 0.500000 0.000000 -0.437500 +v -0.500000 0.000000 0.437500 +v 0.500000 0.000000 0.437500 +v -0.500000 0.000000 -0.375000 +v 0.500000 0.000000 -0.375000 +v -0.500000 0.125000 0.437500 +v 0.500000 0.125000 0.437500 +v 0.500000 0.125000 -0.437500 +v -0.500000 0.125000 -0.437500 +v 0.187500 0.000000 0.375000 +v 0.312500 0.000000 0.375000 +v 0.187500 0.000000 -0.375000 +v 0.312500 0.000000 -0.375000 +v 0.187500 0.062500 -0.375000 +v 0.187500 0.062500 0.375000 +v 0.312500 0.062500 0.375000 +v 0.312500 0.062500 -0.375000 +v 0.187500 0.000000 -0.437500 +v 0.312500 0.000000 -0.437500 +v 0.187500 0.062500 -0.437500 +v 0.312500 0.062500 -0.437500 +v 0.187500 0.000000 -0.500000 +v 0.312500 0.000000 -0.500000 +v 0.187500 0.062500 -0.500000 +v 0.312500 0.062500 -0.500000 +v 0.187500 0.000000 0.437500 +v 0.312500 0.000000 0.437500 +v 0.187500 0.062500 0.437500 +v 0.312500 0.062500 0.437500 +v 0.187500 0.000000 0.500000 +v 0.312500 0.000000 0.500000 +v 0.187500 0.062500 0.500000 +v 0.312500 0.062500 0.500000 +v -0.312500 0.000000 0.375000 +v -0.187500 0.000000 0.375000 +v -0.312500 0.000000 -0.375000 +v -0.187500 0.000000 -0.375000 +v -0.312500 0.062500 -0.375000 +v -0.312500 0.062500 0.375000 +v -0.187500 0.062500 0.375000 +v -0.187500 0.062500 -0.375000 +v -0.312500 0.000000 -0.437500 +v -0.187500 0.000000 -0.437500 +v -0.312500 0.062500 -0.437500 +v -0.187500 0.062500 -0.437500 +v -0.312500 0.000000 -0.500000 +v -0.187500 0.000000 -0.500000 +v -0.312500 0.062500 -0.500000 +v -0.187500 0.062500 -0.500000 +v -0.312500 0.000000 0.437500 +v -0.187500 0.000000 0.437500 +v -0.312500 0.062500 0.437500 +v -0.187500 0.062500 0.437500 +v -0.312500 0.000000 0.500000 +v -0.187500 0.000000 0.500000 +v -0.312500 0.062500 0.500000 +v -0.187500 0.062500 0.500000 +vt 0.125000 0.000000 +vt 0.062500 1.000000 +vt 0.062500 0.000000 +vt 0.937500 1.000000 +vt 0.875000 0.000000 +vt 0.937500 0.000000 +vt 0.062500 1.000000 +vt 0.125000 0.000000 +vt 0.125000 1.000000 +vt 0.875000 0.000000 +vt 0.937500 1.000000 +vt 0.875000 1.000000 +vt 0.125000 -0.000000 +vt 0.062500 0.125000 +vt 0.062500 -0.000000 +vt 1.000000 0.000000 +vt -0.000000 0.125000 +vt -0.000000 0.000000 +vt 1.000000 0.000000 +vt -0.000000 0.125000 +vt -0.000000 0.000000 +vt 0.937500 -0.000000 +vt 0.875000 0.125000 +vt 0.875000 -0.000000 +vt 0.937500 0.000000 +vt 0.875000 0.125000 +vt 0.875000 0.000000 +vt 1.000000 -0.000000 +vt -0.000000 0.125000 +vt -0.000000 -0.000000 +vt 1.000000 -0.000000 +vt -0.000000 0.125000 +vt -0.000000 -0.000000 +vt 0.125000 0.000000 +vt 0.062500 0.125000 +vt 0.062500 0.000000 +vt 0.875000 0.687500 +vt 0.125000 0.812500 +vt 0.125000 0.687500 +vt 0.875000 0.812500 +vt 0.125000 0.687500 +vt 0.875000 0.687500 +vt 0.875000 0.000000 +vt 0.125000 0.062500 +vt 0.125000 0.000000 +vt 0.875000 -0.000000 +vt 0.125000 0.062500 +vt 0.125000 -0.000000 +vt 0.062500 0.812500 +vt 0.000000 0.687500 +vt 0.062500 0.687500 +vt 0.062500 0.062500 +vt -0.000000 -0.000000 +vt 0.062500 -0.000000 +vt 0.937500 0.000000 +vt 1.000000 0.062500 +vt 0.937500 0.062500 +vt 1.000000 0.687500 +vt 0.937500 0.812500 +vt 0.937500 0.687500 +vt 0.312500 0.062500 +vt 0.187500 -0.000000 +vt 0.312500 -0.000000 +vt 0.062500 0.062500 +vt 0.000000 0.000000 +vt 0.062500 0.000000 +vt 0.000000 0.812500 +vt 0.062500 0.687500 +vt 0.062500 0.812500 +vt 0.937500 -0.000000 +vt 1.000000 0.062500 +vt 0.937500 0.062500 +vt 0.937500 0.687500 +vt 1.000000 0.812500 +vt 0.937500 0.812500 +vt 0.812500 0.062500 +vt 0.687500 0.000000 +vt 0.812500 0.000000 +vt 0.875000 0.187500 +vt 0.125000 0.312500 +vt 0.125000 0.187500 +vt 0.875000 0.312500 +vt 0.125000 0.187500 +vt 0.875000 0.187500 +vt 0.875000 0.000000 +vt 0.125000 0.062500 +vt 0.125000 0.000000 +vt 0.875000 -0.000000 +vt 0.125000 0.062500 +vt 0.125000 -0.000000 +vt 0.062500 0.312500 +vt 0.000000 0.187500 +vt 0.062500 0.187500 +vt 0.062500 0.062500 +vt -0.000000 -0.000000 +vt 0.062500 -0.000000 +vt 0.937500 0.000000 +vt 1.000000 0.062500 +vt 0.937500 0.062500 +vt 1.000000 0.187500 +vt 0.937500 0.312500 +vt 0.937500 0.187500 +vt 0.812500 0.062500 +vt 0.687500 -0.000000 +vt 0.812500 -0.000000 +vt 0.062500 0.062500 +vt 0.000000 0.000000 +vt 0.062500 0.000000 +vt 0.000000 0.312500 +vt 0.062500 0.187500 +vt 0.062500 0.312500 +vt 0.937500 -0.000000 +vt 1.000000 0.062500 +vt 0.937500 0.062500 +vt 0.937500 0.187500 +vt 1.000000 0.312500 +vt 0.937500 0.312500 +vt 0.312500 0.062500 +vt 0.187500 0.000000 +vt 0.312500 0.000000 +vt 0.125000 1.000000 +vt 0.875000 1.000000 +vt 0.062500 0.000000 +vt 0.937500 0.000000 +vt 0.125000 0.125000 +vt 1.000000 0.125000 +vt 1.000000 0.125000 +vt 0.937500 0.125000 +vt 0.937500 0.125000 +vt 1.000000 0.125000 +vt 1.000000 0.125000 +vt 0.125000 0.125000 +vt 0.875000 0.812500 +vt 0.125000 0.812500 +vt 0.875000 0.062500 +vt 0.875000 0.062500 +vt 0.000000 0.812500 +vt -0.000000 0.062500 +vt 1.000000 0.000000 +vt 1.000000 0.812500 +vt 0.187500 0.062500 +vt 0.000000 0.062500 +vt 0.000000 0.687500 +vt 1.000000 -0.000000 +vt 1.000000 0.687500 +vt 0.687500 0.062500 +vt 0.875000 0.312500 +vt 0.125000 0.312500 +vt 0.875000 0.062500 +vt 0.875000 0.062500 +vt 0.000000 0.312500 +vt -0.000000 0.062500 +vt 1.000000 0.000000 +vt 1.000000 0.312500 +vt 0.687500 0.062500 +vt 0.000000 0.062500 +vt 0.000000 0.187500 +vt 1.000000 -0.000000 +vt 1.000000 0.187500 +vt 0.187500 0.062500 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 3/1/1 15/2/1 16/3/1 +f 8/4/2 11/5/2 7/6/2 +f 10/7/2 5/8/2 6/9/2 +f 2/10/1 14/11/1 1/12/1 +f 11/13/3 16/14/3 7/15/3 +f 10/16/4 13/17/4 9/18/4 +f 12/19/4 3/20/4 11/21/4 +f 9/22/3 2/23/3 5/24/3 +f 8/25/5 4/26/5 12/27/5 +f 7/28/6 15/29/6 8/30/6 +f 5/31/6 1/32/6 6/33/6 +f 6/34/5 14/35/5 10/36/5 +f 19/37/2 18/38/2 17/39/2 +f 23/40/1 21/41/1 22/42/1 +f 20/43/5 23/44/5 18/45/5 +f 17/46/3 21/47/3 19/48/3 +f 28/49/1 31/50/1 27/51/1 +f 27/52/3 29/53/3 25/54/3 +f 26/55/5 32/56/5 28/57/5 +f 29/58/2 26/59/2 25/60/2 +f 31/61/6 30/62/6 29/63/6 +f 36/64/5 38/65/5 34/66/5 +f 38/67/2 33/68/2 34/69/2 +f 33/70/3 39/71/3 35/72/3 +f 35/73/1 40/74/1 36/75/1 +f 40/76/4 37/77/4 38/78/4 +f 43/79/2 42/80/2 41/81/2 +f 47/82/1 45/83/1 46/84/1 +f 44/85/5 47/86/5 42/87/5 +f 41/88/3 45/89/3 43/90/3 +f 52/91/1 55/92/1 51/93/1 +f 51/94/3 53/95/3 49/96/3 +f 50/97/5 56/98/5 52/99/5 +f 53/100/2 50/101/2 49/102/2 +f 55/103/6 54/104/6 53/105/6 +f 60/106/5 62/107/5 58/108/5 +f 62/109/2 57/110/2 58/111/2 +f 57/112/3 63/113/3 59/114/3 +f 59/115/1 64/116/1 60/117/1 +f 64/118/4 61/119/4 62/120/4 +f 3/1/1 4/121/1 15/2/1 +f 8/4/2 12/122/2 11/5/2 +f 10/7/2 9/123/2 5/8/2 +f 2/10/1 13/124/1 14/11/1 +f 11/13/3 3/125/3 16/14/3 +f 10/16/4 14/126/4 13/17/4 +f 12/19/4 4/127/4 3/20/4 +f 9/22/3 13/128/3 2/23/3 +f 8/25/5 15/129/5 4/26/5 +f 7/28/6 16/130/6 15/29/6 +f 5/31/6 2/131/6 1/32/6 +f 6/34/5 1/132/5 14/35/5 +f 19/37/2 20/133/2 18/38/2 +f 23/40/1 24/134/1 21/41/1 +f 20/43/5 24/135/5 23/44/5 +f 17/46/3 22/136/3 21/47/3 +f 28/49/1 32/137/1 31/50/1 +f 27/52/3 31/138/3 29/53/3 +f 26/55/5 30/139/5 32/56/5 +f 29/58/2 30/140/2 26/59/2 +f 31/61/6 32/141/6 30/62/6 +f 36/64/5 40/142/5 38/65/5 +f 38/67/2 37/143/2 33/68/2 +f 33/70/3 37/144/3 39/71/3 +f 35/73/1 39/145/1 40/74/1 +f 40/76/4 39/146/4 37/77/4 +f 43/79/2 44/147/2 42/80/2 +f 47/82/1 48/148/1 45/83/1 +f 44/85/5 48/149/5 47/86/5 +f 41/88/3 46/150/3 45/89/3 +f 52/91/1 56/151/1 55/92/1 +f 51/94/3 55/152/3 53/95/3 +f 50/97/5 54/153/5 56/98/5 +f 53/100/2 54/154/2 50/101/2 +f 55/103/6 56/155/6 54/104/6 +f 60/106/5 64/156/5 62/107/5 +f 62/109/2 61/157/2 57/110/2 +f 57/112/3 61/158/3 63/113/3 +f 59/115/1 63/159/1 64/116/1 +f 64/118/4 63/160/4 61/119/4 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_narrow_bend.obj b/src/main/resources/assets/hbm/models/blocks/rail_narrow_bend.obj new file mode 100644 index 000000000..426e32d48 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_narrow_bend.obj @@ -0,0 +1,681 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_narrow_bend.blend' +# www.blender.org +o Plane +v 0.500000 0.125000 0.375000 +v 0.500000 0.125000 -0.375000 +v 0.500000 0.000000 0.375000 +v 0.500000 0.000000 -0.437500 +v -0.463258 0.125000 -0.342627 +v 0.500000 0.000000 0.437500 +v -0.292554 0.125000 0.515560 +v 0.500000 0.000000 -0.375000 +v -0.451065 0.000000 -0.281328 +v 0.500000 0.125000 0.437500 +v 0.500000 0.125000 -0.437500 +v -0.292554 0.000000 0.515560 +v -3.325402 0.062500 1.279721 +v -3.404702 0.062500 1.376347 +v -3.325402 0.000000 1.279721 +v -3.404702 0.000000 1.376347 +v -3.057147 0.000000 2.669533 +v -2.998222 0.000000 2.559293 +v -3.057147 0.062500 2.669533 +v -2.998222 0.062500 2.559293 +v -0.601330 0.062500 0.654096 +v -0.720948 0.062500 0.690382 +v -0.601330 0.000000 0.654096 +v -0.720948 0.000000 0.690382 +v -0.052285 0.000000 -0.469798 +v 0.072113 0.000000 -0.482049 +v -0.052285 0.062500 -0.469798 +v 0.072113 0.062500 -0.482049 +v -0.891615 0.062500 -0.302844 +v -1.011232 0.062500 -0.266559 +v -0.891615 0.000000 -0.302844 +v -1.011232 0.000000 -0.266559 +v 0.045732 0.000000 0.525387 +v 0.170130 0.000000 0.513135 +v 0.045732 0.062500 0.525387 +v 0.170130 0.062500 0.513135 +v -0.463258 0.000000 -0.342627 +v -0.304748 0.000000 0.454261 +v -0.451065 0.125000 -0.281328 +v -0.304748 0.125000 0.454261 +v -3.605381 0.125000 1.756872 +v -2.877845 0.125000 2.242996 +v -3.553414 0.000000 1.791595 +v -2.877845 0.000000 2.242996 +v -3.605381 0.000000 1.756872 +v -2.929812 0.000000 2.208273 +v -3.553414 0.125000 1.791595 +v -2.929812 0.125000 2.208273 +v -2.243128 0.125000 0.394619 +v -1.757004 0.125000 1.122155 +v -2.208405 0.000000 0.446586 +v -1.757004 0.000000 1.122155 +v -2.243128 0.000000 0.394619 +v -1.791727 0.000000 1.070188 +v -2.208405 0.125000 0.446586 +v -1.791727 0.125000 1.070188 +v -4.342627 0.125000 3.536741 +v -3.484440 0.125000 3.707446 +v -4.281328 0.000000 3.548935 +v -3.484440 0.000000 3.707446 +v -4.342627 0.000000 3.536741 +v -3.545739 0.000000 3.695252 +v -4.281328 0.125000 3.548935 +v -3.545739 0.125000 3.695252 +v 0.500000 0.000000 4.500000 +v -3.625000 0.125000 4.500000 +v -4.375000 0.125000 4.500000 +v -3.625000 0.000000 4.500000 +v -4.437500 0.000000 4.500000 +v -3.562500 0.000000 4.500000 +v -4.375000 0.000000 4.500000 +v -3.562500 0.125000 4.500000 +v -4.437500 0.125000 4.500000 +v -2.416816 0.125000 1.583184 +v -2.947145 0.125000 1.052855 +v -2.416816 0.000000 1.583184 +v -2.991340 0.000000 1.008660 +v -2.372621 0.000000 1.627379 +v -2.947145 0.000000 1.052855 +v -2.372621 0.125000 1.627379 +v -2.991340 0.125000 1.008660 +v -3.311003 0.125000 2.921431 +v -4.003912 0.125000 2.634418 +v -3.311003 0.000000 2.921431 +v -4.061655 0.000000 2.610501 +v -3.253261 0.000000 2.945349 +v -4.003912 0.000000 2.634418 +v -3.253261 0.125000 2.945349 +v -4.061655 0.125000 2.610501 +v -1.078569 0.125000 0.688997 +v -1.365582 0.125000 -0.003912 +v -1.078569 0.000000 0.688997 +v -1.389499 0.000000 -0.061655 +v -1.054651 0.000000 0.746740 +v -1.365582 0.000000 -0.003912 +v -1.054651 0.125000 0.746740 +v -1.389499 0.125000 -0.061655 +v -3.880144 0.062500 2.087896 +v -3.939068 0.062500 2.198136 +v -3.880144 0.000000 2.087896 +v -3.939068 0.000000 2.198136 +v -2.631691 0.000000 2.010740 +v -2.552392 0.000000 1.914114 +v -2.631691 0.062500 2.010740 +v -2.552392 0.062500 1.914114 +v -4.266559 0.062500 2.988768 +v -4.302845 0.062500 3.108386 +v -4.266559 0.000000 2.988768 +v -4.302845 0.000000 3.108386 +v -3.486865 0.000000 4.170131 +v -3.474612 0.000000 4.045732 +v -3.486865 0.062500 4.170131 +v -3.474612 0.062500 4.045732 +v -1.989260 0.062500 1.368309 +v -2.085886 0.062500 1.447608 +v -1.989260 0.000000 1.368309 +v -2.085886 0.000000 1.447608 +v -1.912104 0.000000 0.119856 +v -1.801864 0.000000 0.060932 +v -1.912104 0.062500 0.119856 +v -1.801864 0.062500 0.060932 +v -2.623653 0.062500 0.595299 +v -2.720279 0.062500 0.674598 +v -2.623653 0.000000 0.595299 +v -2.720279 0.000000 0.674598 +v -1.440707 0.000000 1.001778 +v -1.330467 0.000000 0.942852 +v -1.440707 0.062500 1.001778 +v -1.330467 0.062500 0.942852 +v -4.469797 0.062500 3.947715 +v -4.482049 0.062500 4.072114 +v -4.469797 0.000000 3.947715 +v -4.482049 0.000000 4.072114 +v -3.345904 0.000000 3.398670 +v -3.309618 0.000000 3.279053 +v -3.345904 0.062500 3.398670 +v -3.309618 0.062500 3.279053 +vt 0.615249 0.562500 +vt 0.726069 0.437500 +vt 0.615249 0.437500 +vt 0.678003 0.453027 +vt 0.764947 0.316851 +vt 0.688434 0.459997 +vt 0.613503 0.437500 +vt 0.722644 0.562500 +vt 0.613503 0.562500 +vt 0.828202 0.562500 +vt 0.828202 0.437500 +vt 0.812063 0.161529 +vt 0.753357 0.312051 +vt 0.799759 0.159082 +vt 0.823229 0.437500 +vt 0.823229 0.562500 +vt 0.812063 0.161529 +vt 0.753357 0.312051 +vt 0.764947 0.316851 +vt 0.678003 0.453027 +vt 0.688434 0.459997 +vt 1.000000 0.437500 +vt 0.993671 0.562500 +vt 0.993671 0.437500 +vt 0.576594 0.576594 +vt 0.585465 0.585465 +vt 0.459997 0.688434 +vt 0.917722 0.437500 +vt 0.911392 0.562500 +vt 0.911392 0.437500 +vt 0.777932 0.500000 +vt 0.762144 0.437500 +vt 0.777932 0.437500 +vt 0.283574 0.500000 +vt 0.325146 0.437500 +vt 0.325146 0.500000 +vt 0.342277 0.500000 +vt 0.342277 0.437500 +vt 0.626982 0.783754 +vt 0.519041 0.612678 +vt 0.499646 0.628595 +vt 0.829653 0.500000 +vt 0.762144 0.500000 +vt 0.797787 0.091181 +vt 1.000000 0.085886 +vt 0.800246 0.066212 +vt 0.845441 0.437500 +vt 0.829653 0.437500 +vt 0.964030 0.279326 +vt 0.764669 0.245069 +vt 0.771952 0.221060 +vt 0.947343 0.500000 +vt 0.961181 0.437500 +vt 0.947343 0.437500 +vt 0.856491 0.437500 +vt 0.856491 0.500000 +vt 1.000000 0.085886 +vt 0.797787 0.091181 +vt 0.800246 0.066212 +vt 0.956746 0.303335 +vt 0.771952 0.221060 +vt 0.764669 0.245069 +vt 0.870329 0.500000 +vt 0.870329 0.437500 +vt 0.312050 0.753357 +vt 0.316851 0.764947 +vt 0.159082 0.799759 +vt 0.161529 0.812063 +vt 0.171798 0.437501 +vt 0.273931 0.562500 +vt 0.273931 0.437500 +vt 0.161529 0.812063 +vt 0.312050 0.753357 +vt 0.316851 0.764947 +vt 0.176771 0.562500 +vt 0.277356 0.437500 +vt 0.277356 0.562500 +vt 0.107153 0.562500 +vt 0.000000 0.437501 +vt 0.000000 0.562500 +vt 0.000000 0.991058 +vt 0.190898 0.959711 +vt 0.193346 0.972015 +vt 0.006329 0.437501 +vt 0.112125 0.562500 +vt 0.006329 0.562500 +vt 0.000000 0.991058 +vt 0.190898 0.959711 +vt 0.000000 0.978513 +vt 0.171798 0.562500 +vt 0.082278 0.437501 +vt 0.082278 0.562500 +vt 0.000000 0.815428 +vt 0.000000 0.827972 +vt 0.088607 0.437501 +vt 0.088607 0.562500 +vt 0.000000 0.827972 +vt 0.000000 0.815428 +vt 0.892847 0.562499 +vt 1.000000 0.562499 +vt 0.991058 0.000000 +vt 0.959711 0.190898 +vt 0.978513 0.000000 +vt 0.887875 0.562499 +vt 0.959711 0.190898 +vt 0.991058 0.000000 +vt 0.978513 0.000000 +vt 0.917722 0.562500 +vt 0.827972 0.000000 +vt 0.815427 0.000000 +vt 0.827972 0.000000 +vt 0.799759 0.159082 +vt 0.500000 0.562500 +vt 0.585465 0.585465 +vt 0.500000 0.437500 +vt 0.386497 0.437500 +vt 0.500000 0.437500 +vt 0.453027 0.678003 +vt 0.459997 0.688434 +vt 0.384751 0.437500 +vt 0.500000 0.562500 +vt 0.193346 0.972015 +vt 0.374461 0.904028 +vt 0.550602 0.824035 +vt 0.543633 0.813604 +vt 0.691913 0.691913 +vt 0.824035 0.550602 +vt 0.813604 0.543633 +vt 0.915618 0.379261 +vt 0.904028 0.374461 +vt 0.972015 0.193346 +vt 0.767173 0.562499 +vt 0.887875 0.437500 +vt 0.915618 0.379261 +vt 0.904028 0.374461 +vt 0.892847 0.437500 +vt 0.770598 0.562499 +vt 0.636203 0.437500 +vt 0.636203 0.562500 +vt 0.813604 0.543633 +vt 0.824035 0.550602 +vt 0.637950 0.437500 +vt 0.637950 0.562499 +vt 0.500000 0.562500 +vt 0.691913 0.691913 +vt 0.500000 0.562500 +vt 0.363797 0.437500 +vt 0.363797 0.562500 +vt 0.550602 0.824035 +vt 0.543633 0.813604 +vt 0.362050 0.437500 +vt 0.362050 0.562500 +vt 0.232827 0.562500 +vt 0.374461 0.904028 +vt 0.229402 0.562500 +vt 0.112125 0.437501 +vt 0.107153 0.437501 +vt 0.300705 0.437500 +vt 0.283574 0.437500 +vt 0.484159 0.879185 +vt 0.367412 0.713993 +vt 0.389540 0.702165 +vt 0.420906 0.500000 +vt 0.438722 0.437500 +vt 0.420906 0.437500 +vt 0.434944 0.437500 +vt 0.434944 0.500000 +vt 0.646376 0.767837 +vt 0.499646 0.628595 +vt 0.519041 0.612678 +vt 0.367412 0.713993 +vt 0.484159 0.879185 +vt 0.389540 0.702165 +vt 0.452759 0.500000 +vt 0.452759 0.437500 +vt 0.565056 0.500000 +vt 0.547241 0.437500 +vt 0.565056 0.437500 +vt 0.038819 0.500001 +vt 0.129671 0.437501 +vt 0.129671 0.500001 +vt 0.143509 0.500001 +vt 0.143509 0.437501 +vt 0.221060 0.771952 +vt 0.303335 0.956746 +vt 0.245069 0.764669 +vt 0.561278 0.500000 +vt 0.547241 0.500000 +vt 0.879185 0.484159 +vt 0.713993 0.367412 +vt 0.702165 0.389540 +vt 0.579094 0.437500 +vt 0.561278 0.437500 +vt 0.628595 0.499646 +vt 0.767837 0.646376 +vt 0.612678 0.519041 +vt 0.699295 0.500000 +vt 0.716426 0.437500 +vt 0.699295 0.437500 +vt 0.657723 0.437500 +vt 0.657723 0.500000 +vt 0.713993 0.367412 +vt 0.879185 0.484159 +vt 0.702165 0.389540 +vt 0.767837 0.646376 +vt 0.628595 0.499646 +vt 0.612678 0.519041 +vt 0.674854 0.500000 +vt 0.674854 0.437500 +vt 0.052657 0.437501 +vt 0.038819 0.437501 +vt 0.110855 0.997541 +vt 0.066211 0.800246 +vt 0.091181 0.797787 +vt 0.154559 0.500000 +vt 0.170347 0.437500 +vt 0.154559 0.437500 +vt 0.222068 0.437501 +vt 0.222068 0.500000 +vt 0.303335 0.956746 +vt 0.221060 0.771952 +vt 0.245069 0.764669 +vt 0.085886 1.000000 +vt 0.091181 0.797787 +vt 0.066211 0.800246 +vt 0.237856 0.500000 +vt 0.237856 0.437501 +vt 0.726069 0.562500 +vt 0.722644 0.437500 +vt 0.453027 0.678003 +vt 0.646376 0.767837 +vt 0.997541 0.110855 +vt 0.845441 0.500000 +vt 0.956746 0.303335 +vt 0.961181 0.500000 +vt 0.997541 0.110855 +vt 0.964030 0.279326 +vt 0.159082 0.799759 +vt 0.176771 0.437501 +vt 0.000000 0.978513 +vt 0.972015 0.193346 +vt 0.815427 0.000000 +vt 0.576594 0.576594 +vt 0.386497 0.562500 +vt 0.384751 0.562500 +vt 0.379261 0.915618 +vt 0.700784 0.700784 +vt 0.767173 0.437500 +vt 0.770598 0.437500 +vt 0.500000 0.437500 +vt 0.700784 0.700784 +vt 0.500000 0.437500 +vt 0.232827 0.437500 +vt 0.379261 0.915618 +vt 0.229402 0.437500 +vt 0.300705 0.500000 +vt 0.462031 0.891012 +vt 0.438722 0.500000 +vt 0.626982 0.783754 +vt 0.462031 0.891012 +vt 0.279326 0.964030 +vt 0.891012 0.462031 +vt 0.579094 0.500000 +vt 0.783754 0.626981 +vt 0.716426 0.500000 +vt 0.891012 0.462031 +vt 0.783754 0.626981 +vt 0.052657 0.500000 +vt 0.085886 1.000000 +vt 0.170347 0.500000 +vt 0.279326 0.964030 +vt 0.110855 0.997541 +vn -0.4714 0.0000 -0.8819 +vn 0.0000 1.0000 0.0000 +vn 0.4714 0.0000 0.8819 +vn -0.2903 0.0000 -0.9569 +vn 0.2903 0.0000 0.9569 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.4714 0.0000 0.8819 +vn 0.8819 0.0000 0.4714 +vn -0.9569 0.0000 0.2903 +vn -0.0980 0.0000 -0.9952 +vn -0.9952 0.0000 0.0980 +vn 0.9952 0.0000 -0.0980 +vn 0.0980 0.0000 0.9952 +vn -0.9569 0.0000 -0.2903 +vn 0.9569 0.0000 0.2903 +vn -0.9952 0.0000 -0.0980 +vn 0.9952 0.0000 0.0980 +vn 0.0000 0.0000 1.0000 +vn 0.6344 0.0000 0.7730 +vn -0.6344 0.0000 -0.7730 +vn 0.7730 0.0000 0.6344 +vn -0.7730 0.0000 -0.6344 +vn -0.8819 0.0000 -0.4714 +vn 0.9569 0.0000 -0.2903 +vn -0.6344 0.0000 0.7730 +vn 0.6344 0.0000 -0.7730 +vn 0.4714 0.0000 -0.8819 +vn -0.0980 0.0000 0.9952 +vn -0.7730 0.0000 0.6344 +vn -0.8819 0.0000 0.4714 +vn 0.8819 0.0000 -0.4714 +vn 0.7730 0.0000 -0.6344 +vn -0.2903 0.0000 0.9569 +vn 0.2903 0.0000 -0.9569 +vn 0.0980 0.0000 -0.9952 +s off +f 56/1/1 92/2/1 54/3/1 +f 50/4/2 90/5/2 56/6/2 +f 52/7/3 96/8/3 50/9/3 +f 92/2/4 40/10/4 38/11/4 +f 40/12/2 96/13/2 7/14/2 +f 96/8/5 12/15/5 7/16/5 +f 38/17/6 94/18/6 92/19/6 +f 92/19/6 52/20/6 54/21/6 +f 4/22/7 2/23/7 8/24/7 +f 54/21/6 78/25/6 76/26/6 +f 78/25/6 46/27/6 76/26/6 +f 3/28/7 10/29/7 6/30/7 +f 21/31/5 24/32/5 23/33/5 +f 99/34/8 17/35/8 19/36/8 +f 20/37/9 17/35/9 18/38/9 +f 16/39/6 103/40/6 102/41/6 +f 30/42/10 24/32/10 22/43/10 +f 33/44/6 26/45/6 34/46/6 +f 30/42/4 31/47/4 32/48/4 +f 29/49/2 22/50/2 21/51/2 +f 27/52/11 26/53/11 25/54/11 +f 27/52/12 33/55/12 35/56/12 +f 28/57/2 35/58/2 36/59/2 +f 32/60/6 23/61/6 24/62/6 +f 26/53/13 36/63/13 34/64/13 +f 36/63/14 33/55/14 34/64/14 +f 46/27/6 86/65/6 84/66/6 +f 84/66/6 60/67/6 62/68/6 +f 62/69/15 82/70/15 84/71/15 +f 64/72/2 88/73/2 82/74/2 +f 58/75/16 86/76/16 88/77/16 +f 57/78/17 69/79/17 73/80/17 +f 73/81/2 63/82/2 57/83/2 +f 71/84/18 63/85/18 67/86/18 +f 69/87/6 59/88/6 71/89/6 +f 64/90/17 68/91/17 66/92/17 +f 72/93/2 64/72/2 66/94/2 +f 70/95/18 58/75/18 72/96/18 +f 68/97/6 60/67/6 70/98/6 +f 4/22/11 5/99/11 11/100/11 +f 11/101/2 39/102/2 2/103/2 +f 67/86/19 69/79/19 71/84/19 +f 72/96/19 68/91/19 70/95/19 +f 39/104/14 8/24/14 2/23/14 +f 9/105/6 4/106/6 8/107/6 +f 38/11/11 1/108/11 3/28/11 +f 1/109/2 7/14/2 10/110/2 +f 7/16/14 6/30/14 10/29/14 +f 3/111/6 12/112/6 38/17/6 +f 80/113/20 52/7/20 50/9/20 +f 74/114/2 50/4/2 56/6/2 +f 76/115/21 56/1/21 54/3/21 +f 80/113/22 44/116/22 78/117/22 +f 42/118/2 74/114/2 48/119/2 +f 46/120/23 74/121/23 76/115/23 +f 44/116/9 88/77/9 86/76/9 +f 82/74/2 42/118/2 48/119/2 +f 82/70/24 46/120/24 84/71/24 +f 61/122/6 87/123/6 59/88/6 +f 87/123/6 45/124/6 43/125/6 +f 45/124/6 79/126/6 43/125/6 +f 79/126/6 53/127/6 51/128/6 +f 51/128/6 93/129/6 95/130/6 +f 95/130/6 37/131/6 9/105/6 +f 91/132/5 9/133/5 39/104/5 +f 39/102/2 97/134/2 91/135/2 +f 37/136/4 97/137/4 5/99/4 +f 51/138/3 91/132/3 55/139/3 +f 55/140/2 97/134/2 49/141/2 +f 97/137/1 53/142/1 49/143/1 +f 75/144/20 51/138/20 55/139/20 +f 49/141/2 75/145/2 55/140/2 +f 53/142/21 81/146/21 49/143/21 +f 43/147/22 75/144/22 47/148/22 +f 75/145/2 41/149/2 47/150/2 +f 81/146/23 45/151/23 41/152/23 +f 83/153/9 43/147/9 47/148/9 +f 41/149/2 83/154/2 47/150/2 +f 45/151/24 89/155/24 41/152/24 +f 59/156/16 83/153/16 63/85/16 +f 83/154/2 57/83/2 63/82/2 +f 89/155/15 61/157/15 57/78/15 +f 31/47/25 21/31/25 23/33/25 +f 99/34/24 100/158/24 101/159/24 +f 98/160/2 19/161/2 20/162/2 +f 14/163/23 15/164/23 16/165/23 +f 14/163/26 102/166/26 104/167/26 +f 13/168/2 104/169/2 105/170/2 +f 17/171/6 100/172/6 18/173/6 +f 15/164/27 105/174/27 103/175/27 +f 105/174/22 102/166/22 103/175/22 +f 100/158/28 20/37/28 18/38/28 +f 114/176/20 117/177/20 116/178/20 +f 131/179/29 110/180/29 112/181/29 +f 113/182/18 110/180/18 111/183/18 +f 134/184/6 108/185/6 135/186/6 +f 123/187/30 117/177/30 115/188/30 +f 118/189/6 127/190/6 126/191/6 +f 123/187/21 124/192/21 125/193/21 +f 114/194/2 123/195/2 115/196/2 +f 120/197/1 119/198/1 118/199/1 +f 120/197/31 126/200/31 128/201/31 +f 129/202/2 120/203/2 128/204/2 +f 125/205/6 116/206/6 117/207/6 +f 119/198/32 129/208/32 127/209/32 +f 129/208/3 126/200/3 127/209/3 +f 124/192/33 114/176/33 116/178/33 +f 131/179/17 132/210/17 133/211/17 +f 130/212/2 112/213/2 113/214/2 +f 107/215/15 108/216/15 109/217/15 +f 107/215/34 134/218/34 136/219/34 +f 106/220/2 136/221/2 137/222/2 +f 133/223/6 111/224/6 110/225/6 +f 108/216/35 137/226/35 135/227/35 +f 137/226/16 134/218/16 135/227/16 +f 132/210/36 113/182/36 111/183/36 +f 56/1/1 90/228/1 92/2/1 +f 50/4/2 96/13/2 90/5/2 +f 52/7/3 94/229/3 96/8/3 +f 92/2/4 90/228/4 40/10/4 +f 40/12/2 90/5/2 96/13/2 +f 96/8/5 94/229/5 12/15/5 +f 38/17/6 12/112/6 94/18/6 +f 92/19/6 94/18/6 52/20/6 +f 4/22/7 11/100/7 2/23/7 +f 54/21/6 52/20/6 78/25/6 +f 78/25/6 44/230/6 46/27/6 +f 3/28/7 1/108/7 10/29/7 +f 21/31/5 22/43/5 24/32/5 +f 99/34/8 101/159/8 17/35/8 +f 20/37/9 19/36/9 17/35/9 +f 16/39/6 15/231/6 103/40/6 +f 30/42/10 32/48/10 24/32/10 +f 33/44/6 25/232/6 26/45/6 +f 30/42/4 29/233/4 31/47/4 +f 29/49/2 30/234/2 22/50/2 +f 27/52/11 28/235/11 26/53/11 +f 27/52/12 25/54/12 33/55/12 +f 28/57/2 27/236/2 35/58/2 +f 32/60/6 31/237/6 23/61/6 +f 26/53/13 28/235/13 36/63/13 +f 36/63/14 35/56/14 33/55/14 +f 46/27/6 44/230/6 86/65/6 +f 84/66/6 86/65/6 60/67/6 +f 62/69/15 64/90/15 82/70/15 +f 64/72/2 58/238/2 88/73/2 +f 58/75/16 60/239/16 86/76/16 +f 57/78/17 61/157/17 69/79/17 +f 73/81/2 67/240/2 63/82/2 +f 71/84/18 59/156/18 63/85/18 +f 69/87/6 61/122/6 59/88/6 +f 64/90/17 62/69/17 68/91/17 +f 72/93/2 58/238/2 64/72/2 +f 70/95/18 60/239/18 58/75/18 +f 68/97/6 62/68/6 60/67/6 +f 4/22/11 37/136/11 5/99/11 +f 11/101/2 5/241/2 39/102/2 +f 67/86/19 73/80/19 69/79/19 +f 72/96/19 66/92/19 68/91/19 +f 39/104/14 9/133/14 8/24/14 +f 9/105/6 37/131/6 4/106/6 +f 38/11/11 40/10/11 1/108/11 +f 1/109/2 40/12/2 7/14/2 +f 7/16/14 12/15/14 6/30/14 +f 3/111/6 6/242/6 12/112/6 +f 80/113/20 78/117/20 52/7/20 +f 74/114/2 80/243/2 50/4/2 +f 76/115/21 74/121/21 56/1/21 +f 80/113/22 42/244/22 44/116/22 +f 42/118/2 80/243/2 74/114/2 +f 46/120/23 48/245/23 74/121/23 +f 44/116/9 42/244/9 88/77/9 +f 82/74/2 88/73/2 42/118/2 +f 82/70/24 48/245/24 46/120/24 +f 61/122/6 85/246/6 87/123/6 +f 87/123/6 85/246/6 45/124/6 +f 45/124/6 77/247/6 79/126/6 +f 79/126/6 77/247/6 53/127/6 +f 51/128/6 53/127/6 93/129/6 +f 95/130/6 93/129/6 37/131/6 +f 91/132/5 95/248/5 9/133/5 +f 39/102/2 5/241/2 97/134/2 +f 37/136/4 93/249/4 97/137/4 +f 51/138/3 95/248/3 91/132/3 +f 55/140/2 91/135/2 97/134/2 +f 97/137/1 93/249/1 53/142/1 +f 75/144/20 79/250/20 51/138/20 +f 49/141/2 81/251/2 75/145/2 +f 53/142/21 77/252/21 81/146/21 +f 43/147/22 79/250/22 75/144/22 +f 75/145/2 81/251/2 41/149/2 +f 81/146/23 77/252/23 45/151/23 +f 83/153/9 87/253/9 43/147/9 +f 41/149/2 89/254/2 83/154/2 +f 45/151/24 85/255/24 89/155/24 +f 59/156/16 87/253/16 83/153/16 +f 83/154/2 89/254/2 57/83/2 +f 89/155/15 85/255/15 61/157/15 +f 31/47/25 29/233/25 21/31/25 +f 99/34/24 98/256/24 100/158/24 +f 98/160/2 99/257/2 19/161/2 +f 14/163/23 13/258/23 15/164/23 +f 14/163/26 16/165/26 102/166/26 +f 13/168/2 14/259/2 104/169/2 +f 17/171/6 101/260/6 100/172/6 +f 15/164/27 13/258/27 105/174/27 +f 105/174/22 104/167/22 102/166/22 +f 100/158/28 98/256/28 20/37/28 +f 114/176/20 115/188/20 117/177/20 +f 131/179/29 133/211/29 110/180/29 +f 113/182/18 112/181/18 110/180/18 +f 134/184/6 109/261/6 108/185/6 +f 123/187/30 125/193/30 117/177/30 +f 118/189/6 119/262/6 127/190/6 +f 123/187/21 122/263/21 124/192/21 +f 114/194/2 122/264/2 123/195/2 +f 120/197/1 121/265/1 119/198/1 +f 120/197/31 118/199/31 126/200/31 +f 129/202/2 121/266/2 120/203/2 +f 125/205/6 124/267/6 116/206/6 +f 119/198/32 121/265/32 129/208/32 +f 129/208/3 128/201/3 126/200/3 +f 124/192/33 122/263/33 114/176/33 +f 131/179/17 130/268/17 132/210/17 +f 130/212/2 131/269/2 112/213/2 +f 107/215/15 106/270/15 108/216/15 +f 107/215/34 109/217/34 134/218/34 +f 106/220/2 107/271/2 136/221/2 +f 133/223/6 132/272/6 111/224/6 +f 108/216/35 106/270/35 137/226/35 +f 137/226/16 136/219/16 134/218/16 +f 132/210/36 130/268/36 113/182/36 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard.obj new file mode 100644 index 000000000..0323332c5 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard.obj @@ -0,0 +1,757 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_straight.blend' +# www.blender.org +o Plane.001 +v 1.000000 0.062500 -0.187500 +v 1.000000 0.062500 0.187500 +v -1.000000 0.062500 0.187500 +v -1.000000 0.062500 -0.187500 +v -1.000000 0.000000 0.187500 +v 1.000000 0.000000 0.187500 +v -1.000000 0.000000 -0.187500 +v 1.000000 0.000000 -0.187500 +v -1.000000 0.000000 -0.812500 +v 1.000000 0.000000 -0.812500 +v -1.000000 0.000000 -1.187500 +v 1.000000 0.000000 -1.187500 +v -1.000000 0.000000 -1.812500 +v 1.000000 0.000000 -1.812500 +v -1.000000 0.000000 -2.187500 +v 1.000000 0.000000 -2.187500 +v -1.000000 0.000000 2.187500 +v 1.000000 0.000000 2.187500 +v -1.000000 0.000000 1.812500 +v 1.000000 0.000000 1.812500 +v -1.000000 0.000000 1.187500 +v 1.000000 0.000000 1.187500 +v -1.000000 0.000000 0.812500 +v 1.000000 0.000000 0.812500 +v -1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -2.187500 +v -1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -2.187500 +v -1.000000 0.062500 1.812500 +v -1.000000 0.062500 2.187500 +v 1.000000 0.062500 2.187500 +v 1.000000 0.062500 1.812500 +v -1.000000 0.062500 0.812500 +v -1.000000 0.062500 1.187500 +v 1.000000 0.062500 1.187500 +v 1.000000 0.062500 0.812500 +v -0.812500 0.062500 2.500000 +v 0.812500 0.062500 2.500000 +v -0.812500 0.062500 -2.500000 +v 0.812500 0.062500 -2.500000 +v -0.812500 0.187500 2.500000 +v 0.812500 0.187500 2.500000 +v -0.812500 0.187500 -2.500000 +v 0.812500 0.187500 -2.500000 +v 0.750000 0.062500 2.500000 +v 0.750000 0.062500 -2.500000 +v 0.750000 0.187500 2.500000 +v 0.750000 0.187500 -2.500000 +v -0.750000 0.062500 -2.500000 +v -0.750000 0.062500 2.500000 +v -0.750000 0.187500 -2.500000 +v -0.750000 0.187500 2.500000 +v 0.625000 0.062500 2.062500 +v 0.937500 0.062500 2.062500 +v 0.625000 0.062500 1.937500 +v 0.937500 0.062500 1.937500 +v 0.625000 0.125000 2.062500 +v 0.937500 0.125000 2.062500 +v 0.625000 0.125000 1.937500 +v 0.937500 0.125000 1.937500 +v -0.937500 0.062500 2.062500 +v -0.625000 0.062500 2.062500 +v -0.937500 0.062500 1.937500 +v -0.625000 0.062500 1.937500 +v -0.937500 0.125000 2.062500 +v -0.625000 0.125000 2.062500 +v -0.937500 0.125000 1.937500 +v -0.625000 0.125000 1.937500 +v 0.625000 0.062500 1.062500 +v 0.937500 0.062500 1.062500 +v 0.625000 0.062500 0.937500 +v 0.937500 0.062500 0.937500 +v 0.625000 0.125000 1.062500 +v 0.937500 0.125000 1.062500 +v 0.625000 0.125000 0.937500 +v 0.937500 0.125000 0.937500 +v -0.937500 0.062500 1.062500 +v -0.625000 0.062500 1.062500 +v -0.937500 0.062500 0.937500 +v -0.625000 0.062500 0.937500 +v -0.937500 0.125000 1.062500 +v -0.625000 0.125000 1.062500 +v -0.937500 0.125000 0.937500 +v -0.625000 0.125000 0.937500 +v 0.625000 0.062500 0.062500 +v 0.937500 0.062500 0.062500 +v 0.625000 0.062500 -0.062500 +v 0.937500 0.062500 -0.062500 +v 0.625000 0.125000 0.062500 +v 0.937500 0.125000 0.062500 +v 0.625000 0.125000 -0.062500 +v 0.937500 0.125000 -0.062500 +v -0.937500 0.062500 0.062500 +v -0.625000 0.062500 0.062500 +v -0.937500 0.062500 -0.062500 +v -0.625000 0.062500 -0.062500 +v -0.937500 0.125000 0.062500 +v -0.625000 0.125000 0.062500 +v -0.937500 0.125000 -0.062500 +v -0.625000 0.125000 -0.062500 +v 0.625000 0.062500 -0.937500 +v 0.937500 0.062500 -0.937500 +v 0.625000 0.062500 -1.062500 +v 0.937500 0.062500 -1.062500 +v 0.625000 0.125000 -0.937500 +v 0.937500 0.125000 -0.937500 +v 0.625000 0.125000 -1.062500 +v 0.937500 0.125000 -1.062500 +v -0.937500 0.062500 -0.937500 +v -0.625000 0.062500 -0.937500 +v -0.937500 0.062500 -1.062500 +v -0.625000 0.062500 -1.062500 +v -0.937500 0.125000 -0.937500 +v -0.625000 0.125000 -0.937500 +v -0.937500 0.125000 -1.062500 +v -0.625000 0.125000 -1.062500 +v 0.625000 0.062500 -1.937500 +v 0.937500 0.062500 -1.937500 +v 0.625000 0.062500 -2.062500 +v 0.937500 0.062500 -2.062500 +v 0.625000 0.125000 -1.937500 +v 0.937500 0.125000 -1.937500 +v 0.625000 0.125000 -2.062500 +v 0.937500 0.125000 -2.062500 +v -0.937500 0.062500 -1.937500 +v -0.625000 0.062500 -1.937500 +v -0.937500 0.062500 -2.062500 +v -0.625000 0.062500 -2.062500 +v -0.937500 0.125000 -1.937500 +v -0.625000 0.125000 -1.937500 +v -0.937500 0.125000 -2.062500 +v -0.625000 0.125000 -2.062500 +v -0.812500 0.062500 -1.500000 +v -0.812500 0.062500 -0.500000 +v -0.812500 0.062500 0.500000 +v -0.812500 0.062500 1.500000 +v 0.812500 0.062500 1.500000 +v 0.812500 0.062500 0.500000 +v 0.812500 0.062500 -0.500000 +v 0.812500 0.062500 -1.500000 +v -0.812500 0.187500 -1.500000 +v -0.812500 0.187500 -0.500000 +v -0.812500 0.187500 0.500000 +v -0.812500 0.187500 1.500000 +v 0.812500 0.187500 1.500000 +v 0.812500 0.187500 0.500000 +v 0.812500 0.187500 -0.500000 +v 0.812500 0.187500 -1.500000 +v 0.750000 0.062500 1.500000 +v 0.750000 0.062500 0.500000 +v 0.750000 0.062500 -0.500000 +v 0.750000 0.062500 -1.500000 +v 0.750000 0.187500 1.500000 +v 0.750000 0.187500 0.500000 +v 0.750000 0.187500 -0.500000 +v 0.750000 0.187500 -1.500000 +v -0.750000 0.062500 -1.500000 +v -0.750000 0.062500 -0.500000 +v -0.750000 0.062500 0.500000 +v -0.750000 0.062500 1.500000 +v -0.750000 0.187500 -1.500000 +v -0.750000 0.187500 -0.500000 +v -0.750000 0.187500 0.500000 +v -0.750000 0.187500 1.500000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.500000 0.718750 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 2/1/1 4/2/1 3/3/1 +f 7/4/2 6/5/2 5/6/2 +f 11/7/2 10/8/2 9/9/2 +f 15/10/2 14/11/2 13/12/2 +f 19/13/2 18/14/2 17/15/2 +f 23/16/2 22/17/2 21/18/2 +f 27/19/1 25/20/1 26/21/1 +f 31/22/1 29/23/1 30/24/1 +f 35/25/1 33/26/1 34/27/1 +f 39/28/1 37/29/1 38/30/1 +f 17/31/3 33/32/3 19/33/3 +f 10/34/4 26/35/4 9/36/4 +f 18/37/4 34/38/4 17/39/4 +f 12/40/5 27/41/5 10/8/5 +f 20/42/5 35/43/5 18/14/5 +f 11/7/6 28/44/6 12/45/6 +f 5/46/3 4/47/3 7/48/3 +f 19/13/6 36/49/6 20/50/6 +f 13/51/3 29/52/3 15/53/3 +f 6/54/4 3/55/4 5/56/4 +f 21/57/3 37/58/3 23/59/3 +f 14/60/4 30/61/4 13/62/4 +f 8/63/5 2/64/5 6/5/5 +f 22/65/4 38/66/4 21/67/4 +f 16/68/5 31/69/5 14/11/5 +f 7/4/6 1/70/6 8/71/6 +f 24/72/5 39/73/5 22/17/5 +f 15/10/6 32/74/6 16/75/6 +f 9/76/3 25/77/3 11/78/3 +f 23/16/6 40/79/6 24/80/6 +f 149/81/5 42/82/5 141/83/5 +f 145/84/3 43/85/3 137/86/3 +f 49/87/3 157/88/3 153/89/3 +f 46/90/4 49/91/4 42/92/4 +f 48/93/1 160/94/1 152/95/1 +f 42/82/2 153/96/2 141/83/2 +f 44/97/6 52/98/6 48/99/6 +f 53/100/5 165/101/5 161/102/5 +f 45/103/1 168/104/1 148/105/1 +f 43/106/2 161/102/2 137/107/2 +f 47/108/6 53/109/6 43/110/6 +f 41/111/4 56/112/4 45/113/4 +f 61/114/3 59/115/3 57/116/3 +f 63/117/6 60/118/6 59/119/6 +f 62/120/4 57/121/4 58/122/4 +f 64/123/5 58/124/5 60/125/5 +f 61/114/1 64/123/1 63/117/1 +f 69/126/3 67/127/3 65/128/3 +f 71/129/6 68/130/6 67/131/6 +f 70/132/4 65/133/4 66/134/4 +f 72/135/5 66/136/5 68/137/5 +f 69/126/1 72/135/1 71/129/1 +f 77/138/3 75/139/3 73/140/3 +f 79/141/6 76/142/6 75/143/6 +f 78/144/4 73/145/4 74/146/4 +f 80/147/5 74/148/5 76/149/5 +f 77/138/1 80/147/1 79/141/1 +f 85/150/3 83/151/3 81/152/3 +f 87/153/6 84/154/6 83/155/6 +f 86/156/4 81/157/4 82/158/4 +f 88/159/5 82/160/5 84/161/5 +f 85/150/1 88/159/1 87/153/1 +f 93/162/3 91/163/3 89/164/3 +f 95/165/6 92/166/6 91/167/6 +f 94/168/4 89/169/4 90/170/4 +f 96/171/5 90/172/5 92/173/5 +f 93/162/1 96/171/1 95/165/1 +f 101/174/3 99/175/3 97/176/3 +f 103/177/6 100/178/6 99/179/6 +f 102/180/4 97/181/4 98/182/4 +f 104/183/5 98/184/5 100/185/5 +f 101/174/1 104/183/1 103/177/1 +f 109/186/3 107/187/3 105/188/3 +f 111/189/6 108/190/6 107/191/6 +f 110/192/4 105/193/4 106/194/4 +f 112/195/5 106/196/5 108/197/5 +f 109/186/1 112/195/1 111/189/1 +f 117/198/3 115/199/3 113/200/3 +f 119/201/6 116/202/6 115/203/6 +f 118/204/4 113/205/4 114/206/4 +f 120/207/5 114/208/5 116/209/5 +f 117/198/1 120/207/1 119/201/1 +f 125/210/3 123/211/3 121/212/3 +f 127/213/6 124/214/6 123/215/6 +f 126/216/4 121/217/4 122/218/4 +f 128/219/5 122/220/5 124/221/5 +f 125/210/1 128/219/1 127/213/1 +f 133/222/3 131/223/3 129/224/3 +f 135/225/6 132/226/6 131/227/6 +f 134/228/4 129/229/4 130/230/4 +f 136/231/5 130/232/5 132/233/5 +f 133/222/1 136/231/1 135/225/1 +f 140/234/2 54/235/2 41/236/2 +f 139/237/2 164/238/2 140/239/2 +f 138/240/2 163/241/2 139/242/2 +f 137/243/2 162/244/2 138/245/2 +f 145/84/1 55/246/1 47/247/1 +f 146/248/1 165/249/1 145/250/1 +f 147/251/1 166/252/1 146/253/1 +f 148/254/1 167/255/1 147/256/1 +f 164/257/5 56/258/5 54/235/5 +f 163/259/5 168/260/5 164/238/5 +f 162/261/5 167/262/5 163/241/5 +f 161/263/5 166/264/5 162/244/5 +f 144/265/2 50/266/2 44/267/2 +f 143/268/2 156/269/2 144/270/2 +f 142/271/2 155/272/2 143/273/2 +f 141/274/2 154/275/2 142/276/2 +f 149/81/1 51/277/1 46/278/1 +f 150/279/1 157/280/1 149/281/1 +f 151/282/1 158/283/1 150/284/1 +f 152/285/1 159/286/1 151/287/1 +f 156/288/3 52/289/3 50/290/3 +f 155/291/3 160/292/3 156/293/3 +f 154/294/3 159/295/3 155/296/3 +f 153/297/3 158/298/3 154/299/3 +f 45/103/3 140/300/3 41/301/3 +f 148/254/3 139/302/3 140/303/3 +f 147/251/3 138/304/3 139/305/3 +f 146/248/3 137/306/3 138/307/3 +f 48/93/5 144/265/5 44/267/5 +f 152/285/5 143/268/5 144/270/5 +f 151/282/5 142/271/5 143/273/5 +f 150/279/5 141/274/5 142/276/5 +f 2/1/1 1/70/1 4/2/1 +f 7/4/2 8/71/2 6/5/2 +f 11/7/2 12/45/2 10/8/2 +f 15/10/2 16/75/2 14/11/2 +f 19/13/2 20/50/2 18/14/2 +f 23/16/2 24/80/2 22/17/2 +f 27/19/1 28/44/1 25/20/1 +f 31/22/1 32/74/1 29/23/1 +f 35/25/1 36/49/1 33/26/1 +f 39/28/1 40/79/1 37/29/1 +f 17/31/3 34/308/3 33/32/3 +f 10/34/4 27/309/4 26/35/4 +f 18/37/4 35/310/4 34/38/4 +f 12/40/5 28/311/5 27/41/5 +f 20/42/5 36/312/5 35/43/5 +f 11/7/6 25/20/6 28/44/6 +f 5/46/3 3/313/3 4/47/3 +f 19/13/6 33/26/6 36/49/6 +f 13/51/3 30/314/3 29/52/3 +f 6/54/4 2/315/4 3/55/4 +f 21/57/3 38/316/3 37/58/3 +f 14/60/4 31/317/4 30/61/4 +f 8/63/5 1/318/5 2/64/5 +f 22/65/4 39/319/4 38/66/4 +f 16/68/5 32/320/5 31/69/5 +f 7/4/6 4/2/6 1/70/6 +f 24/72/5 40/321/5 39/73/5 +f 15/10/6 29/23/6 32/74/6 +f 9/76/3 26/322/3 25/77/3 +f 23/16/6 37/29/6 40/79/6 +f 149/81/5 46/278/5 42/82/5 +f 145/84/3 47/247/3 43/85/3 +f 49/87/3 51/277/3 157/88/3 +f 46/90/4 51/323/4 49/91/4 +f 48/93/1 52/289/1 160/94/1 +f 42/82/2 49/324/2 153/96/2 +f 44/97/6 50/325/6 52/98/6 +f 53/100/5 55/246/5 165/101/5 +f 45/103/1 56/258/1 168/104/1 +f 43/106/2 53/100/2 161/102/2 +f 47/108/6 55/326/6 53/109/6 +f 41/111/4 54/327/4 56/112/4 +f 61/114/3 63/117/3 59/115/3 +f 63/117/6 64/123/6 60/118/6 +f 62/120/4 61/114/4 57/121/4 +f 64/123/5 62/120/5 58/124/5 +f 61/114/1 62/120/1 64/123/1 +f 69/126/3 71/129/3 67/127/3 +f 71/129/6 72/135/6 68/130/6 +f 70/132/4 69/126/4 65/133/4 +f 72/135/5 70/132/5 66/136/5 +f 69/126/1 70/132/1 72/135/1 +f 77/138/3 79/141/3 75/139/3 +f 79/141/6 80/147/6 76/142/6 +f 78/144/4 77/138/4 73/145/4 +f 80/147/5 78/144/5 74/148/5 +f 77/138/1 78/144/1 80/147/1 +f 85/150/3 87/153/3 83/151/3 +f 87/153/6 88/159/6 84/154/6 +f 86/156/4 85/150/4 81/157/4 +f 88/159/5 86/156/5 82/160/5 +f 85/150/1 86/156/1 88/159/1 +f 93/162/3 95/165/3 91/163/3 +f 95/165/6 96/171/6 92/166/6 +f 94/168/4 93/162/4 89/169/4 +f 96/171/5 94/168/5 90/172/5 +f 93/162/1 94/168/1 96/171/1 +f 101/174/3 103/177/3 99/175/3 +f 103/177/6 104/183/6 100/178/6 +f 102/180/4 101/174/4 97/181/4 +f 104/183/5 102/180/5 98/184/5 +f 101/174/1 102/180/1 104/183/1 +f 109/186/3 111/189/3 107/187/3 +f 111/189/6 112/195/6 108/190/6 +f 110/192/4 109/186/4 105/193/4 +f 112/195/5 110/192/5 106/196/5 +f 109/186/1 110/192/1 112/195/1 +f 117/198/3 119/201/3 115/199/3 +f 119/201/6 120/207/6 116/202/6 +f 118/204/4 117/198/4 113/205/4 +f 120/207/5 118/204/5 114/208/5 +f 117/198/1 118/204/1 120/207/1 +f 125/210/3 127/213/3 123/211/3 +f 127/213/6 128/219/6 124/214/6 +f 126/216/4 125/210/4 121/217/4 +f 128/219/5 126/216/5 122/220/5 +f 125/210/1 126/216/1 128/219/1 +f 133/222/3 135/225/3 131/223/3 +f 135/225/6 136/231/6 132/226/6 +f 134/228/4 133/222/4 129/229/4 +f 136/231/5 134/228/5 130/232/5 +f 133/222/1 134/228/1 136/231/1 +f 140/234/2 164/257/2 54/235/2 +f 139/237/2 163/259/2 164/238/2 +f 138/240/2 162/261/2 163/241/2 +f 137/243/2 161/263/2 162/244/2 +f 145/84/1 165/101/1 55/246/1 +f 146/248/1 166/264/1 165/249/1 +f 147/251/1 167/262/1 166/252/1 +f 148/254/1 168/260/1 167/255/1 +f 164/257/5 168/104/5 56/258/5 +f 163/259/5 167/255/5 168/260/5 +f 162/261/5 166/252/5 167/262/5 +f 161/263/5 165/249/5 166/264/5 +f 144/265/2 156/328/2 50/266/2 +f 143/268/2 155/329/2 156/269/2 +f 142/271/2 154/330/2 155/272/2 +f 141/274/2 153/331/2 154/275/2 +f 149/81/1 157/88/1 51/277/1 +f 150/279/1 158/298/1 157/280/1 +f 151/282/1 159/295/1 158/283/1 +f 152/285/1 160/292/1 159/286/1 +f 156/288/3 160/94/3 52/289/3 +f 155/291/3 159/286/3 160/292/3 +f 154/294/3 158/283/3 159/295/3 +f 153/297/3 157/280/3 158/298/3 +f 45/103/3 148/105/3 140/300/3 +f 148/254/3 147/256/3 139/302/3 +f 147/251/3 146/253/3 138/304/3 +f 146/248/3 145/250/3 137/306/3 +f 48/93/5 152/95/5 144/265/5 +f 152/285/5 151/287/5 143/268/5 +f 151/282/5 150/284/5 142/271/5 +f 150/279/5 149/281/5 141/274/5 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard_bend.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard_bend.obj new file mode 100644 index 000000000..23702e62b --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard_bend.obj @@ -0,0 +1,982 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_curve.blend' +# www.blender.org +o Plane.001 +v -1.312500 0.062500 0.500000 +v -1.141243 0.062500 -2.858757 +v -1.312500 0.187500 0.500000 +v -1.141243 0.187500 -2.858757 +v -1.097049 0.062500 -2.902951 +v -1.097049 0.187500 -2.902951 +v -1.250000 0.062500 0.500000 +v -1.250000 0.187500 0.500000 +v -4.500000 0.062500 -2.687500 +v -4.500000 0.062500 -4.312500 +v -4.500000 0.187500 -2.687500 +v -4.500000 0.187500 -4.312500 +v -4.500000 0.062500 -4.250000 +v -4.500000 0.187500 -4.250000 +v -4.500000 0.062500 -2.750000 +v -4.500000 0.187500 -2.750000 +v -2.246097 0.062500 -1.753903 +v -0.550519 0.187500 -2.138958 +v -2.246097 0.187500 -1.753903 +v -0.498553 0.187500 -2.173681 +v -0.498553 0.062500 -2.173681 +v -0.550519 0.062500 -2.138958 +v -2.201903 0.062500 -1.798097 +v -2.201903 0.187500 -1.798097 +v -3.675014 0.062500 -2.578888 +v -3.675014 0.187500 -2.578888 +v -3.658838 0.062500 -2.639259 +v -3.658838 0.187500 -2.639259 +v -2.906250 0.062500 -2.260456 +v -2.906250 0.187500 -2.260456 +v -2.875000 0.062500 -2.314582 +v -2.875000 0.187500 -2.314582 +v -1.739544 0.062500 -1.093750 +v -1.739544 0.187500 -1.093750 +v -1.685418 0.062500 -1.125000 +v -1.685418 0.187500 -1.125000 +v -1.421111 0.062500 -0.324986 +v -1.421111 0.187500 -0.324986 +v -1.360741 0.062500 -0.341162 +v -1.360741 0.187500 -0.341162 +v -3.561128 0.187500 -4.220029 +v -3.561128 0.062500 -4.220029 +v -3.573321 0.187500 -4.158730 +v -3.573321 0.062500 -4.158730 +v -2.658336 0.187500 -3.946170 +v -2.658336 0.062500 -3.946170 +v -2.682254 0.187500 -3.888428 +v -2.682254 0.062500 -3.888428 +v -1.826319 0.187500 -3.501447 +v -1.826319 0.062500 -3.501447 +v -1.861041 0.187500 -3.449481 +v -1.861041 0.062500 -3.449481 +v -0.111573 0.062500 -1.317746 +v -0.053831 0.062500 -1.341664 +v -0.053831 0.187500 -1.341664 +v -0.111573 0.187500 -1.317746 +v 0.158730 0.062500 -0.426678 +v 0.220028 0.062500 -0.438872 +v 0.220028 0.187500 -0.438872 +v 0.158730 0.187500 -0.426678 +v 0.250000 0.062500 0.500000 +v 0.312499 0.062500 0.500000 +v 0.312499 0.187500 0.500000 +v 0.250000 0.187500 0.500000 +v -1.501192 0.000000 0.294317 +v 0.481698 0.000000 0.033265 +v -1.550139 0.000000 -0.077475 +v 0.432751 0.000000 -0.338527 +v -1.550139 0.062500 -0.077475 +v -1.501192 0.062500 0.294317 +v 0.481698 0.062500 0.033265 +v 0.432751 0.062500 -0.338527 +v -1.656608 0.000000 -0.474823 +v 0.191151 0.000000 -1.240190 +v -1.800115 0.000000 -0.821278 +v 0.047645 0.000000 -1.586645 +v -1.800115 0.062500 -0.821278 +v -1.656608 0.062500 -0.474823 +v 0.191151 0.062500 -1.240190 +v 0.047645 0.062500 -1.586645 +v -2.005797 0.000000 -1.177531 +v -0.419090 0.000000 -2.395053 +v -2.234083 0.000000 -1.475038 +v -0.647376 0.000000 -2.692561 +v -2.234083 0.062500 -1.475038 +v -2.005797 0.062500 -1.177531 +v -0.419090 0.062500 -2.395053 +v -0.647376 0.062500 -2.692561 +v -2.524962 0.000000 -1.765917 +v -1.307439 0.000000 -3.352624 +v -2.822469 0.000000 -1.994203 +v -1.604947 0.000000 -3.580910 +v -2.822469 0.062500 -1.994203 +v -2.524962 0.062500 -1.765917 +v -1.307439 0.062500 -3.352624 +v -1.604947 0.062500 -3.580910 +v -3.178722 0.000000 -2.199886 +v -2.413356 0.000000 -4.047645 +v -3.525177 0.000000 -2.343392 +v -2.759810 0.000000 -4.191151 +v -3.525177 0.062500 -2.343392 +v -3.178722 0.062500 -2.199886 +v -2.413356 0.062500 -4.047645 +v -2.759810 0.062500 -4.191151 +v -3.922526 0.000000 -2.449861 +v -3.661473 0.000000 -4.432751 +v -4.294317 0.000000 -2.498808 +v -4.033265 0.000000 -4.481698 +v -4.294317 0.062500 -2.498808 +v -3.922526 0.062500 -2.449861 +v -3.661473 0.062500 -4.432751 +v -4.033265 0.062500 -4.481698 +v 0.387101 0.125000 -0.206438 +v 0.077275 0.125000 -0.165649 +v 0.403417 0.125000 -0.082508 +v 0.093590 0.125000 -0.041718 +v 0.387101 0.062500 -0.206438 +v 0.077275 0.062500 -0.165649 +v 0.403417 0.062500 -0.082508 +v 0.093590 0.062500 -0.041718 +v -1.455542 0.062500 0.162229 +v -1.145715 0.062500 0.121439 +v -1.471858 0.062500 0.038298 +v -1.162031 0.062500 -0.002491 +v -1.455542 0.125000 0.162229 +v -1.145715 0.125000 0.121439 +v -1.471858 0.125000 0.038298 +v -1.162031 0.125000 -0.002491 +v 0.037737 0.125000 -1.447242 +v -0.250975 0.125000 -1.327653 +v 0.085573 0.125000 -1.331757 +v -0.203139 0.125000 -1.212168 +v 0.037737 0.062500 -1.447242 +v -0.250975 0.062500 -1.327653 +v 0.085573 0.062500 -1.331757 +v -0.203139 0.062500 -1.212168 +v -1.646701 0.062500 -0.614226 +v -1.357989 0.062500 -0.733814 +v -1.694537 0.062500 -0.729711 +v -1.405824 0.062500 -0.849299 +v -1.646701 0.125000 -0.614226 +v -1.357989 0.125000 -0.733814 +v -1.694537 0.125000 -0.729711 +v -1.405824 0.125000 -0.849299 +v -0.620866 0.125000 -2.555344 +v -0.868788 0.125000 -2.365106 +v -0.544770 0.125000 -2.456175 +v -0.792693 0.125000 -2.265937 +v -0.620866 0.062500 -2.555344 +v -0.868788 0.062500 -2.365106 +v -0.544770 0.062500 -2.456175 +v -0.792693 0.062500 -2.265937 +v -2.032308 0.062500 -1.314747 +v -1.784385 0.062500 -1.504985 +v -2.108403 0.062500 -1.413917 +v -1.860480 0.062500 -1.604154 +v -2.032308 0.125000 -1.314747 +v -1.784385 0.125000 -1.504985 +v -2.108403 0.125000 -1.413917 +v -1.860480 0.125000 -1.604154 +v -1.543825 0.125000 -3.455230 +v -1.734063 0.125000 -3.207307 +v -1.444656 0.125000 -3.379134 +v -1.634893 0.125000 -3.131212 +v -1.543825 0.062500 -3.455230 +v -1.734063 0.062500 -3.207307 +v -1.444656 0.062500 -3.379134 +v -1.634893 0.062500 -3.131212 +v -2.586083 0.062500 -1.891597 +v -2.395845 0.062500 -2.139520 +v -2.685253 0.062500 -1.967692 +v -2.495015 0.062500 -2.215615 +v -2.586083 0.125000 -1.891597 +v -2.395845 0.125000 -2.139520 +v -2.685253 0.125000 -1.967692 +v -2.495015 0.125000 -2.215615 +v -2.668243 0.125000 -4.085573 +v -2.787832 0.125000 -3.796861 +v -2.552758 0.125000 -4.037737 +v -2.672346 0.125000 -3.749025 +v -2.668243 0.062500 -4.085573 +v -2.787832 0.062500 -3.796861 +v -2.552758 0.062500 -4.037737 +v -2.672346 0.062500 -3.749025 +v -3.270289 0.062500 -2.305463 +v -3.150701 0.062500 -2.594176 +v -3.385775 0.062500 -2.353299 +v -3.266186 0.062500 -2.642011 +v -3.270289 0.125000 -2.305463 +v -3.150701 0.125000 -2.594176 +v -3.385775 0.125000 -2.353299 +v -3.266186 0.125000 -2.642011 +v -3.917492 0.125000 -4.403417 +v -3.958282 0.125000 -4.093591 +v -3.793562 0.125000 -4.387100 +v -3.834351 0.125000 -4.077275 +v -3.917492 0.062500 -4.403417 +v -3.958282 0.062500 -4.093591 +v -3.793562 0.062500 -4.387100 +v -3.834351 0.062500 -4.077275 +v -4.038298 0.062500 -2.528142 +v -3.997509 0.062500 -2.837969 +v -4.162229 0.062500 -2.544458 +v -4.121440 0.062500 -2.854284 +v -4.038298 0.125000 -2.528142 +v -3.997509 0.125000 -2.837969 +v -4.162229 0.125000 -2.544458 +v -4.121440 0.125000 -2.854284 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.500000 0.718750 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt -0.000000 1.000000 +vt 0.187500 0.000000 +vt 0.187500 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.500000 0.718750 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.406250 0.156250 +vt 0.406250 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.156250 +vt 0.593750 0.656250 +vt 0.406250 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.531250 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt -0.000000 0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vn 0.7730 0.0000 -0.6344 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.6344 0.0000 -0.7730 +vn 0.0000 -1.0000 0.0000 +vn -0.1305 0.0000 0.9914 +vn 0.0000 1.0000 0.0000 +vn 0.1305 0.0000 -0.9914 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 0.9239 +vn 0.6088 0.0000 -0.7934 +vn -0.6088 0.0000 0.7934 +vn 0.7934 0.0000 -0.6088 +vn -0.7934 0.0000 0.6088 +vn 0.9914 0.0000 -0.1305 +vn 0.9239 0.0000 -0.3827 +vn -0.9239 0.0000 0.3827 +vn -0.9914 0.0000 0.1305 +vn -0.0980 0.0000 0.9952 +vn 0.0980 0.0000 -0.9952 +vn 0.2903 0.0000 -0.9569 +vn -0.2903 0.0000 0.9569 +vn -0.4714 0.0000 0.8819 +vn 0.4714 0.0000 -0.8819 +vn -0.6344 0.0000 0.7730 +vn -0.7730 0.0000 0.6344 +vn 0.9569 0.0000 -0.2903 +vn 0.8819 0.0000 -0.4714 +vn -0.8819 0.0000 0.4714 +vn -0.9952 0.0000 0.0980 +vn -0.9569 0.0000 0.2903 +vn 0.9952 0.0000 -0.0980 +vn 0.1305 0.0000 0.9914 +vn -0.1305 0.0000 -0.9914 +vn 0.3827 0.0000 0.9239 +vn -0.3827 0.0000 -0.9239 +vn 0.6088 0.0000 0.7934 +vn -0.6088 0.0000 -0.7934 +vn 0.7934 0.0000 0.6088 +vn -0.7934 0.0000 -0.6088 +vn 0.9239 0.0000 0.3827 +vn -0.9239 0.0000 -0.3827 +vn 0.9914 0.0000 0.1305 +vn -0.9914 0.0000 -0.1305 +s off +f 20/1/1 5/2/1 6/3/1 +f 7/4/2 3/5/2 1/6/2 +f 10/7/3 14/8/3 12/9/3 +f 11/10/3 15/11/3 9/12/3 +f 6/13/4 50/14/4 49/15/4 +f 35/16/5 17/17/5 23/18/5 +f 31/19/5 25/20/5 27/21/5 +f 25/22/6 11/23/6 9/24/6 +f 11/23/7 28/25/7 16/26/7 +f 27/27/5 9/28/5 15/29/5 +f 28/25/8 15/29/8 16/26/8 +f 23/30/5 29/31/5 31/32/5 +f 32/33/9 27/21/9 28/34/9 +f 30/35/7 28/34/7 26/36/7 +f 29/37/10 26/36/10 25/38/10 +f 23/30/11 32/39/11 24/40/11 +f 24/40/7 30/41/7 19/42/7 +f 30/41/12 17/43/12 19/42/12 +f 39/44/5 33/45/5 35/46/5 +f 36/47/13 23/18/13 24/48/13 +f 33/49/14 19/50/14 17/51/14 +f 19/50/7 36/47/7 24/48/7 +f 7/52/15 40/53/15 8/54/15 +f 40/55/16 35/46/16 36/56/16 +f 34/57/7 40/55/7 36/56/7 +f 37/58/17 34/57/17 33/59/17 +f 8/54/7 38/60/7 3/61/7 +f 38/60/18 1/62/18 3/61/18 +f 1/63/5 39/64/5 7/52/5 +f 43/65/7 45/66/7 41/67/7 +f 14/68/7 41/69/7 12/70/7 +f 42/71/5 13/72/5 10/73/5 +f 44/74/19 14/68/19 13/75/19 +f 41/69/20 10/73/20 12/70/20 +f 50/76/5 48/77/5 46/78/5 +f 45/66/21 42/79/21 41/67/21 +f 46/80/5 44/81/5 42/79/5 +f 48/82/22 43/65/22 44/83/22 +f 51/84/7 6/13/7 49/15/7 +f 52/85/23 47/86/23 48/87/23 +f 47/86/7 49/88/7 45/89/7 +f 49/88/24 46/78/24 45/89/24 +f 5/90/5 52/91/5 50/14/5 +f 2/92/25 51/84/25 52/93/25 +f 54/94/5 22/95/5 21/96/5 +f 4/97/7 20/1/7 6/3/7 +f 21/98/5 2/99/5 5/2/5 +f 22/100/26 4/97/26 2/101/26 +f 59/102/27 54/103/27 55/104/27 +f 55/105/28 21/96/28 20/106/28 +f 18/107/7 55/105/7 20/106/7 +f 53/108/29 18/107/29 22/109/29 +f 61/110/30 60/111/30 57/112/30 +f 56/113/7 59/102/7 55/104/7 +f 57/114/31 56/113/31 53/115/31 +f 58/116/5 53/117/5 54/103/5 +f 64/118/2 62/119/2 63/120/2 +f 62/121/5 57/122/5 58/123/5 +f 63/124/32 58/123/32 59/125/32 +f 60/111/7 63/124/7 59/125/7 +f 67/126/5 66/127/5 65/128/5 +f 71/129/7 69/130/7 70/131/7 +f 65/132/18 69/133/18 67/134/18 +f 66/135/33 70/136/33 65/137/33 +f 68/138/15 71/139/15 66/127/15 +f 67/126/34 72/140/34 68/141/34 +f 75/142/5 74/143/5 73/144/5 +f 79/145/7 77/146/7 78/147/7 +f 73/148/17 77/149/17 75/150/17 +f 74/151/35 78/152/35 73/153/35 +f 76/154/16 79/155/16 74/143/16 +f 75/142/36 80/156/36 76/157/36 +f 81/158/5 84/159/5 82/160/5 +f 87/161/7 85/162/7 86/163/7 +f 81/164/14 85/165/14 83/166/14 +f 82/167/37 86/168/37 81/169/37 +f 84/170/13 87/171/13 82/160/13 +f 83/172/38 88/173/38 84/159/38 +f 91/174/5 90/175/5 89/176/5 +f 95/177/7 93/178/7 94/179/7 +f 89/180/12 93/181/12 91/182/12 +f 90/183/39 94/184/39 89/185/39 +f 92/186/11 95/187/11 90/175/11 +f 91/174/40 96/188/40 92/189/40 +f 97/190/5 100/191/5 98/192/5 +f 102/193/7 104/194/7 101/195/7 +f 97/196/10 101/197/10 99/198/10 +f 98/199/41 102/200/41 97/201/41 +f 100/202/9 103/203/9 98/192/9 +f 99/204/42 104/194/42 100/191/42 +f 107/205/5 106/206/5 105/207/5 +f 111/208/7 109/209/7 110/210/7 +f 105/211/6 109/212/6 107/213/6 +f 106/214/43 110/215/43 105/216/43 +f 108/217/8 111/218/8 106/206/8 +f 107/205/44 112/219/44 108/220/44 +f 125/221/18 123/222/18 121/223/18 +f 114/224/7 115/225/7 113/226/7 +f 113/226/15 119/227/15 117/228/15 +f 115/225/33 120/229/33 119/230/33 +f 114/224/34 117/231/34 118/232/34 +f 116/233/18 118/234/18 120/235/18 +f 127/236/34 124/237/34 123/238/34 +f 126/239/33 121/240/33 122/241/33 +f 128/242/15 122/243/15 124/244/15 +f 125/221/7 128/242/7 127/236/7 +f 141/245/17 139/246/17 137/247/17 +f 130/248/7 131/249/7 129/250/7 +f 129/250/16 135/251/16 133/252/16 +f 131/249/35 136/253/35 135/254/35 +f 130/248/36 133/255/36 134/256/36 +f 132/257/17 134/258/17 136/259/17 +f 143/260/36 140/261/36 139/262/36 +f 142/263/35 137/264/35 138/265/35 +f 144/266/16 138/267/16 140/268/16 +f 141/245/7 144/266/7 143/260/7 +f 157/269/14 155/270/14 153/271/14 +f 148/272/7 145/273/7 146/274/7 +f 145/273/13 151/275/13 149/276/13 +f 147/277/37 152/278/37 151/279/37 +f 146/274/38 149/280/38 150/281/38 +f 148/272/14 150/282/14 152/283/14 +f 159/284/38 156/285/38 155/286/38 +f 158/287/37 153/288/37 154/289/37 +f 160/290/13 154/291/13 156/292/13 +f 157/269/7 160/290/7 159/284/7 +f 173/293/12 171/294/12 169/295/12 +f 162/296/7 163/297/7 161/298/7 +f 161/298/11 167/299/11 165/300/11 +f 163/297/39 168/301/39 167/302/39 +f 162/296/40 165/303/40 166/304/40 +f 164/305/12 166/306/12 168/307/12 +f 175/308/40 172/309/40 171/310/40 +f 174/311/39 169/312/39 170/313/39 +f 176/314/11 170/315/11 172/316/11 +f 173/293/7 176/314/7 175/308/7 +f 189/317/10 187/318/10 185/319/10 +f 178/320/7 179/321/7 177/322/7 +f 177/322/9 183/323/9 181/324/9 +f 179/321/41 184/325/41 183/326/41 +f 178/320/42 181/327/42 182/328/42 +f 180/329/10 182/330/10 184/331/10 +f 191/332/42 188/333/42 187/334/42 +f 190/335/41 185/336/41 186/337/41 +f 192/338/9 186/339/9 188/340/9 +f 191/332/7 190/335/7 192/338/7 +f 205/341/6 203/342/6 201/343/6 +f 194/344/7 195/345/7 193/346/7 +f 193/346/8 199/347/8 197/348/8 +f 195/345/43 200/349/43 199/350/43 +f 194/344/44 197/351/44 198/352/44 +f 196/353/6 198/354/6 200/355/6 +f 207/356/44 204/357/44 203/358/44 +f 206/359/43 201/360/43 202/361/43 +f 208/362/8 202/363/8 204/364/8 +f 207/356/7 206/359/7 208/362/7 +f 20/1/1 21/98/1 5/2/1 +f 7/4/2 8/365/2 3/5/2 +f 10/7/3 13/366/3 14/8/3 +f 11/10/3 16/367/3 15/11/3 +f 6/13/4 5/90/4 50/14/4 +f 35/16/5 33/368/5 17/17/5 +f 31/19/5 29/369/5 25/20/5 +f 25/22/6 26/370/6 11/23/6 +f 11/23/7 26/370/7 28/25/7 +f 27/27/5 25/371/5 9/28/5 +f 28/25/8 27/27/8 15/29/8 +f 23/30/5 17/372/5 29/31/5 +f 32/33/9 31/19/9 27/21/9 +f 30/35/7 32/33/7 28/34/7 +f 29/37/10 30/35/10 26/36/10 +f 23/30/11 31/32/11 32/39/11 +f 24/40/7 32/39/7 30/41/7 +f 30/41/12 29/373/12 17/43/12 +f 39/44/5 37/374/5 33/45/5 +f 36/47/13 35/16/13 23/18/13 +f 33/49/14 34/375/14 19/50/14 +f 19/50/7 34/375/7 36/47/7 +f 7/52/15 39/64/15 40/53/15 +f 40/55/16 39/44/16 35/46/16 +f 34/57/7 38/376/7 40/55/7 +f 37/58/17 38/376/17 34/57/17 +f 8/54/7 40/53/7 38/60/7 +f 38/60/18 37/377/18 1/62/18 +f 1/63/5 37/378/5 39/64/5 +f 43/65/7 47/379/7 45/66/7 +f 14/68/7 43/380/7 41/69/7 +f 42/71/5 44/381/5 13/72/5 +f 44/74/19 43/380/19 14/68/19 +f 41/69/20 42/71/20 10/73/20 +f 50/76/5 52/382/5 48/77/5 +f 45/66/21 46/80/21 42/79/21 +f 46/80/5 48/383/5 44/81/5 +f 48/82/22 47/379/22 43/65/22 +f 51/84/7 4/384/7 6/13/7 +f 52/85/23 51/385/23 47/86/23 +f 47/86/7 51/385/7 49/88/7 +f 49/88/24 50/76/24 46/78/24 +f 5/90/5 2/386/5 52/91/5 +f 2/92/25 4/384/25 51/84/25 +f 54/94/5 53/387/5 22/95/5 +f 4/97/7 18/388/7 20/1/7 +f 21/98/5 22/389/5 2/99/5 +f 22/100/26 18/388/26 4/97/26 +f 59/102/27 58/116/27 54/103/27 +f 55/105/28 54/94/28 21/96/28 +f 18/107/7 56/390/7 55/105/7 +f 53/108/29 56/390/29 18/107/29 +f 61/110/30 64/391/30 60/111/30 +f 56/113/7 60/392/7 59/102/7 +f 57/114/31 60/392/31 56/113/31 +f 58/116/5 57/393/5 53/117/5 +f 64/118/2 61/394/2 62/119/2 +f 62/121/5 61/395/5 57/122/5 +f 63/124/32 62/121/32 58/123/32 +f 60/111/7 64/391/7 63/124/7 +f 67/126/5 68/141/5 66/127/5 +f 71/129/7 72/140/7 69/130/7 +f 65/132/18 70/396/18 69/133/18 +f 66/135/33 71/397/33 70/136/33 +f 68/138/15 72/398/15 71/139/15 +f 67/126/34 69/130/34 72/140/34 +f 75/142/5 76/157/5 74/143/5 +f 79/145/7 80/156/7 77/146/7 +f 73/148/17 78/399/17 77/149/17 +f 74/151/35 79/400/35 78/152/35 +f 76/154/16 80/401/16 79/155/16 +f 75/142/36 77/146/36 80/156/36 +f 81/158/5 83/172/5 84/159/5 +f 87/161/7 88/173/7 85/162/7 +f 81/164/14 86/402/14 85/165/14 +f 82/167/37 87/403/37 86/168/37 +f 84/170/13 88/404/13 87/171/13 +f 83/172/38 85/162/38 88/173/38 +f 91/174/5 92/189/5 90/175/5 +f 95/177/7 96/188/7 93/178/7 +f 89/180/12 94/405/12 93/181/12 +f 90/183/39 95/406/39 94/184/39 +f 92/186/11 96/407/11 95/187/11 +f 91/174/40 93/178/40 96/188/40 +f 97/190/5 99/204/5 100/191/5 +f 102/193/7 103/408/7 104/194/7 +f 97/196/10 102/409/10 101/197/10 +f 98/199/41 103/410/41 102/200/41 +f 100/202/9 104/411/9 103/203/9 +f 99/204/42 101/195/42 104/194/42 +f 107/205/5 108/220/5 106/206/5 +f 111/208/7 112/219/7 109/209/7 +f 105/211/6 110/412/6 109/212/6 +f 106/214/43 111/413/43 110/215/43 +f 108/217/8 112/414/8 111/218/8 +f 107/205/44 109/209/44 112/219/44 +f 125/221/18 127/236/18 123/222/18 +f 114/224/7 116/233/7 115/225/7 +f 113/226/15 115/225/15 119/227/15 +f 115/225/33 116/233/33 120/229/33 +f 114/224/34 113/226/34 117/231/34 +f 116/233/18 114/224/18 118/234/18 +f 127/236/34 128/242/34 124/237/34 +f 126/239/33 125/221/33 121/240/33 +f 128/242/15 126/239/15 122/243/15 +f 125/221/7 126/239/7 128/242/7 +f 141/245/17 143/260/17 139/246/17 +f 130/248/7 132/257/7 131/249/7 +f 129/250/16 131/249/16 135/251/16 +f 131/249/35 132/257/35 136/253/35 +f 130/248/36 129/250/36 133/255/36 +f 132/257/17 130/248/17 134/258/17 +f 143/260/36 144/266/36 140/261/36 +f 142/263/35 141/245/35 137/264/35 +f 144/266/16 142/263/16 138/267/16 +f 141/245/7 142/263/7 144/266/7 +f 157/269/14 159/284/14 155/270/14 +f 148/272/7 147/277/7 145/273/7 +f 145/273/13 147/277/13 151/275/13 +f 147/277/37 148/272/37 152/278/37 +f 146/274/38 145/273/38 149/280/38 +f 148/272/14 146/274/14 150/282/14 +f 159/284/38 160/290/38 156/285/38 +f 158/287/37 157/269/37 153/288/37 +f 160/290/13 158/287/13 154/291/13 +f 157/269/7 158/287/7 160/290/7 +f 173/293/12 175/308/12 171/294/12 +f 162/296/7 164/305/7 163/297/7 +f 161/298/11 163/297/11 167/299/11 +f 163/297/39 164/305/39 168/301/39 +f 162/296/40 161/298/40 165/303/40 +f 164/305/12 162/296/12 166/306/12 +f 175/308/40 176/314/40 172/309/40 +f 174/311/39 173/293/39 169/312/39 +f 176/314/11 174/311/11 170/315/11 +f 173/293/7 174/311/7 176/314/7 +f 189/317/10 191/332/10 187/318/10 +f 178/320/7 180/329/7 179/321/7 +f 177/322/9 179/321/9 183/323/9 +f 179/321/41 180/329/41 184/325/41 +f 178/320/42 177/322/42 181/327/42 +f 180/329/10 178/320/10 182/330/10 +f 191/332/42 192/338/42 188/333/42 +f 190/335/41 189/317/41 185/336/41 +f 192/338/9 190/335/9 186/339/9 +f 191/332/7 189/317/7 190/335/7 +f 205/341/6 207/356/6 203/342/6 +f 194/344/7 196/353/7 195/345/7 +f 193/346/8 195/345/8 199/347/8 +f 195/345/43 196/353/43 200/349/43 +f 194/344/44 193/346/44 197/351/44 +f 196/353/6 194/344/6 198/354/6 +f 207/356/44 208/362/44 204/357/44 +f 206/359/43 205/341/43 201/360/43 +f 208/362/8 206/359/8 202/363/8 +f 207/356/7 205/341/7 206/359/7 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard_buffer.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard_buffer.obj new file mode 100644 index 000000000..d56bd4b9b --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard_buffer.obj @@ -0,0 +1,1143 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_stop.blend' +# www.blender.org +o Plane.001 +v 1.000000 0.062500 -0.187500 +v 1.000000 0.062500 0.187500 +v -1.000000 0.062500 0.187500 +v -1.000000 0.062500 -0.187500 +v -1.000000 0.000000 0.187500 +v 1.000000 0.000000 0.187500 +v -1.000000 0.000000 -0.187500 +v 1.000000 0.000000 -0.187500 +v -1.000000 0.000000 -0.812500 +v 1.000000 0.000000 -0.812500 +v -1.000000 0.000000 -1.187500 +v 1.000000 0.000000 -1.187500 +v -1.000000 0.000000 -1.812500 +v 1.000000 0.000000 -1.812500 +v -1.000000 0.000000 -2.187500 +v 1.000000 0.000000 -2.187500 +v -1.000000 0.000000 2.187500 +v 1.000000 0.000000 2.187500 +v -1.000000 0.000000 1.812500 +v 1.000000 0.000000 1.812500 +v -1.000000 0.000000 1.187500 +v 1.000000 0.000000 1.187500 +v -1.000000 0.000000 0.812500 +v 1.000000 0.000000 0.812500 +v -1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -2.187500 +v -1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -2.187500 +v -1.000000 0.062500 1.812500 +v -1.000000 0.062500 2.187500 +v 1.000000 0.062500 2.187500 +v 1.000000 0.062500 1.812500 +v -1.000000 0.062500 0.812500 +v -1.000000 0.062500 1.187500 +v 1.000000 0.062500 1.187500 +v 1.000000 0.062500 0.812500 +v -0.812500 0.062500 2.500000 +v 0.812500 0.062500 2.500000 +v -0.812500 0.062500 -2.500000 +v 0.812500 0.062500 -2.500000 +v -0.812500 0.187500 2.500000 +v 0.812500 0.187500 2.500000 +v -0.812500 0.187500 -2.500000 +v 0.812500 0.187500 -2.500000 +v 0.750000 0.062500 2.500000 +v 0.750000 0.062500 -2.500000 +v 0.750000 0.187500 2.500000 +v 0.750000 0.187500 -2.500000 +v -0.750000 0.062500 -2.500000 +v -0.750000 0.062500 2.500000 +v -0.750000 0.187500 -2.500000 +v -0.750000 0.187500 2.500000 +v 0.625000 0.062500 2.062500 +v 0.937500 0.062500 2.062500 +v 0.625000 0.062500 1.937500 +v 0.937500 0.062500 1.937500 +v 0.625000 0.125000 2.062500 +v 0.937500 0.125000 2.062500 +v 0.625000 0.125000 1.937500 +v 0.937500 0.125000 1.937500 +v -0.937500 0.062500 2.062500 +v -0.625000 0.062500 2.062500 +v -0.937500 0.062500 1.937500 +v -0.625000 0.062500 1.937500 +v -0.937500 0.125000 2.062500 +v -0.625000 0.125000 2.062500 +v -0.937500 0.125000 1.937500 +v -0.625000 0.125000 1.937500 +v 0.625000 0.062500 1.062500 +v 0.937500 0.062500 1.062500 +v 0.625000 0.062500 0.937500 +v 0.937500 0.062500 0.937500 +v 0.625000 0.125000 1.062500 +v 0.937500 0.125000 1.062500 +v 0.625000 0.125000 0.937500 +v 0.937500 0.125000 0.937500 +v -0.937500 0.062500 1.062500 +v -0.625000 0.062500 1.062500 +v -0.937500 0.062500 0.937500 +v -0.625000 0.062500 0.937500 +v -0.937500 0.125000 1.062500 +v -0.625000 0.125000 1.062500 +v -0.937500 0.125000 0.937500 +v -0.625000 0.125000 0.937500 +v 0.625000 0.062500 0.062500 +v 0.937500 0.062500 0.062500 +v 0.625000 0.062500 -0.062500 +v 0.937500 0.062500 -0.062500 +v 0.625000 0.125000 0.062500 +v 0.937500 0.125000 0.062500 +v 0.625000 0.125000 -0.062500 +v 0.937500 0.125000 -0.062500 +v -0.937500 0.062500 0.062500 +v -0.625000 0.062500 0.062500 +v -0.937500 0.062500 -0.062500 +v -0.625000 0.062500 -0.062500 +v -0.937500 0.125000 0.062500 +v -0.625000 0.125000 0.062500 +v -0.937500 0.125000 -0.062500 +v -0.625000 0.125000 -0.062500 +v 0.625000 0.062500 -0.937500 +v 0.937500 0.062500 -0.937500 +v 0.625000 0.062500 -1.062500 +v 0.937500 0.062500 -1.062500 +v 0.625000 0.125000 -0.937500 +v 0.937500 0.125000 -0.937500 +v 0.625000 0.125000 -1.062500 +v 0.937500 0.125000 -1.062500 +v -0.937500 0.062500 -0.937500 +v -0.625000 0.062500 -0.937500 +v -0.937500 0.062500 -1.062500 +v -0.625000 0.062500 -1.062500 +v -0.937500 0.125000 -0.937500 +v -0.625000 0.125000 -0.937500 +v -0.937500 0.125000 -1.062500 +v -0.625000 0.125000 -1.062500 +v 0.625000 0.062500 -1.937500 +v 0.937500 0.062500 -1.937500 +v 0.625000 0.062500 -2.062500 +v 0.937500 0.062500 -2.062500 +v 0.625000 0.125000 -1.937500 +v 0.937500 0.125000 -1.937500 +v 0.625000 0.125000 -2.062500 +v 0.937500 0.125000 -2.062500 +v -0.937500 0.062500 -1.937500 +v -0.625000 0.062500 -1.937500 +v -0.937500 0.062500 -2.062500 +v -0.625000 0.062500 -2.062500 +v -0.937500 0.125000 -1.937500 +v -0.625000 0.125000 -1.937500 +v -0.937500 0.125000 -2.062500 +v -0.625000 0.125000 -2.062500 +v -0.812500 0.062500 -1.500000 +v -0.812500 0.062500 -0.500000 +v -0.812500 0.062500 0.500000 +v -0.812500 0.062500 1.500000 +v 0.812500 0.062500 1.500000 +v 0.812500 0.062500 0.500000 +v 0.812500 0.062500 -0.500000 +v 0.812500 0.062500 -1.500000 +v -0.812500 0.187500 -1.500000 +v -0.812500 0.187500 -0.500000 +v -0.812500 0.187500 0.500000 +v -0.812500 0.187500 1.500000 +v 0.812500 0.187500 1.500000 +v 0.812500 0.187500 0.500000 +v 0.812500 0.187500 -0.500000 +v 0.812500 0.187500 -1.500000 +v 0.750000 0.062500 1.500000 +v 0.750000 0.062500 0.500000 +v 0.750000 0.062500 -0.500000 +v 0.750000 0.062500 -1.500000 +v 0.750000 0.187500 1.500000 +v 0.750000 0.187500 0.500000 +v 0.750000 0.187500 -0.500000 +v 0.750000 0.187500 -1.500000 +v -0.750000 0.062500 -1.500000 +v -0.750000 0.062500 -0.500000 +v -0.750000 0.062500 0.500000 +v -0.750000 0.062500 1.500000 +v -0.750000 0.187500 -1.500000 +v -0.750000 0.187500 -0.500000 +v -0.750000 0.187500 0.500000 +v -0.750000 0.187500 1.500000 +v -1.000000 1.500000 -1.000000 +v 1.000000 1.500000 -1.000000 +v -1.000000 1.500000 -1.375000 +v 1.000000 1.500000 -1.375000 +v -1.000000 0.875000 -1.375000 +v -1.000000 0.875000 -1.000000 +v 1.000000 0.875000 -1.000000 +v 1.000000 0.875000 -1.375000 +v 0.687500 1.062500 -1.000000 +v 0.937500 1.062500 -1.000000 +v 0.687500 1.312500 -1.000000 +v 0.937500 1.312500 -1.000000 +v 0.687500 1.312500 -0.625000 +v 0.687500 1.062500 -0.625000 +v 0.937500 1.062500 -0.625000 +v 0.937500 1.312500 -0.625000 +v 0.562500 1.312500 -0.625000 +v 0.687500 1.437500 -0.625000 +v 0.687500 0.937500 -0.625000 +v 0.562500 1.062500 -0.625000 +v 1.062500 1.062500 -0.625000 +v 0.937500 0.937500 -0.625000 +v 0.937500 1.437500 -0.625000 +v 1.062500 1.312500 -0.625000 +v 0.687500 1.437500 -0.500000 +v 0.562500 1.312500 -0.500000 +v 0.562500 1.062500 -0.500000 +v 0.687500 0.937500 -0.500000 +v 0.937500 0.937500 -0.500000 +v 1.062500 1.062500 -0.500000 +v 1.062500 1.312500 -0.500000 +v 0.937500 1.437500 -0.500000 +v 0.625000 0.875000 -1.062500 +v 0.875000 0.875000 -1.062500 +v 0.625000 0.875000 -1.312500 +v 0.875000 0.875000 -1.312500 +v 0.625000 0.000000 -1.312500 +v 0.625000 0.000000 -1.062500 +v 0.875000 0.000000 -1.062500 +v 0.875000 0.000000 -1.312500 +v -0.875000 0.875000 -1.062500 +v -0.625000 0.875000 -1.062500 +v -0.875000 0.875000 -1.312500 +v -0.625000 0.875000 -1.312500 +v -0.875000 0.000000 -1.312500 +v -0.875000 0.000000 -1.062500 +v -0.625000 0.000000 -1.062500 +v -0.625000 0.000000 -1.312500 +v 0.625000 0.000000 -2.687500 +v 0.625000 0.000000 -2.437500 +v 0.875000 0.000000 -2.437500 +v 0.875000 0.000000 -2.687500 +v -0.875000 0.000000 -2.687500 +v -0.875000 0.000000 -2.437500 +v -0.625000 0.000000 -2.437500 +v -0.625000 0.000000 -2.687500 +v 0.625000 1.062500 -1.375000 +v 0.875000 1.062500 -1.375000 +v -0.875000 1.062500 -1.375000 +v -0.625000 1.062500 -1.375000 +v 0.625000 1.312500 -1.375000 +v 0.875000 1.312500 -1.375000 +v -0.875000 1.312500 -1.375000 +v -0.625000 1.312500 -1.375000 +v -0.937500 1.062500 -1.000000 +v -0.687500 1.062500 -1.000000 +v -0.937500 1.312500 -1.000000 +v -0.687500 1.312500 -1.000000 +v -0.937500 1.312500 -0.625000 +v -0.937500 1.062500 -0.625000 +v -0.687500 1.062500 -0.625000 +v -0.687500 1.312500 -0.625000 +v -1.062500 1.312500 -0.625000 +v -0.937500 1.437500 -0.625000 +v -0.937500 0.937500 -0.625000 +v -1.062500 1.062500 -0.625000 +v -0.562500 1.062500 -0.625000 +v -0.687500 0.937500 -0.625000 +v -0.687500 1.437500 -0.625000 +v -0.562500 1.312500 -0.625000 +v -0.937500 1.437500 -0.500000 +v -1.062500 1.312500 -0.500000 +v -1.062500 1.062500 -0.500000 +v -0.937500 0.937500 -0.500000 +v -0.687500 0.937500 -0.500000 +v -0.562500 1.062500 -0.500000 +v -0.562500 1.312500 -0.500000 +v -0.687500 1.437500 -0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.250000 0.078125 +vt 0.218750 0.328125 +vt 0.218750 0.078125 +vt 0.265625 0.328125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.265625 0.359375 +vt 0.250000 0.328125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.203125 0.078125 +vt 0.250000 0.328125 +vt 0.265625 0.359375 +vt 0.250000 0.359375 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.328125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.203125 0.078125 +vt 0.203125 0.328125 +vt 0.265625 0.359375 +vt 0.250000 0.328125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.265625 0.359375 +vt 0.250000 0.359375 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.203125 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.467018 0.000041 +vt 0.560886 0.500669 +vt 0.467018 0.500669 +vt 0.562500 -0.000000 +vt 0.468750 0.500000 +vt 0.468750 -0.000000 +vt 0.312500 0.500000 +vt 0.468750 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.500000 +vt 0.468750 0.593750 +vt 0.312500 0.593750 +vt 0.312500 -0.000000 +vt 0.468750 0.500000 +vt 0.312500 -0.000000 +vt 0.656250 0.187500 +vt 0.562500 0.125000 +vt 0.656250 0.125000 +vt 0.656250 0.062500 +vt 0.562500 0.000000 +vt 0.656250 0.000000 +vt 0.562500 0.062500 +vt 0.656250 0.250000 +vt 0.562500 0.187500 +vt 0.625000 0.437500 +vt 0.687500 0.406250 +vt 0.687500 0.437500 +vt 0.718750 0.312500 +vt 0.593750 0.375000 +vt 0.687500 0.406250 +vt 0.593750 0.375000 +vt 0.625000 0.281250 +vt 0.687500 0.250000 +vt 0.625000 0.281250 +vt 0.625000 0.250000 +vt 0.750000 0.375000 +vt 0.750000 0.312500 +vt 0.718750 0.437500 +vt 0.718750 0.281250 +vt 0.687500 0.281250 +vt 0.593750 0.250000 +vt 0.593750 0.406250 +vt 0.625000 0.406250 +vt 0.562500 0.312500 +vt 0.562500 0.375000 +vt 0.781250 0.000000 +vt 0.718750 0.062500 +vt 0.718750 0.000000 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.781250 0.000000 +vt 0.718750 0.062500 +vt 0.718750 0.000000 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.250000 0.500000 +vt 0.312500 0.562500 +vt 0.250000 0.562500 +vt 0.250000 0.500000 +vt 0.312500 0.562500 +vt 0.250000 0.562500 +vt 0.187500 0.921875 +vt 0.250000 0.546875 +vt 0.250000 0.921875 +vt 0.187500 0.921875 +vt 0.250000 0.546875 +vt 0.250000 0.921875 +vt 0.000000 0.546875 +vt 0.062500 0.968750 +vt 0.000000 0.921875 +vt 0.125000 0.500000 +vt 0.125000 0.968750 +vt 0.000000 0.546875 +vt 0.062500 0.968750 +vt 0.000000 0.921875 +vt 0.125000 0.500000 +vt 0.125000 0.968750 +vt 0.656250 0.187500 +vt 0.562500 0.125000 +vt 0.656250 0.125000 +vt 0.656250 0.062500 +vt 0.562500 0.000000 +vt 0.656250 0.000000 +vt 0.562500 0.062500 +vt 0.656250 0.250000 +vt 0.562500 0.187500 +vt 0.625000 0.437500 +vt 0.687500 0.406250 +vt 0.687500 0.437500 +vt 0.718750 0.312500 +vt 0.593750 0.375000 +vt 0.687500 0.406250 +vt 0.593750 0.375000 +vt 0.625000 0.281250 +vt 0.687500 0.250000 +vt 0.625000 0.281250 +vt 0.625000 0.250000 +vt 0.750000 0.375000 +vt 0.750000 0.312500 +vt 0.718750 0.437500 +vt 0.718750 0.281250 +vt 0.687500 0.281250 +vt 0.593750 0.250000 +vt 0.593750 0.406250 +vt 0.625000 0.406250 +vt 0.562500 0.312500 +vt 0.562500 0.375000 +vt 0.203125 0.000000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.296875 0.015625 +vt 0.296875 0.015625 +vt 0.203125 0.000000 +vt 0.203125 0.000000 +vt 0.093750 0.500000 +vt 0.203125 0.000000 +vt 0.093750 0.500000 +vt 0.296875 0.015625 +vt 0.093750 0.500000 +vt 0.296875 0.015625 +vt 0.296875 0.015625 +vt 0.203125 0.000000 +vt 0.250000 0.359375 +vt 0.203125 0.328125 +vt 0.265625 0.328125 +vt 0.250000 0.359375 +vt 0.265625 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.328125 +vt 0.560886 0.000041 +vt 0.562500 0.500000 +vt 0.468750 -0.000000 +vt 0.562500 0.250000 +vt 0.593750 0.312500 +vt 0.718750 0.375000 +vt 0.687500 0.281250 +vt 0.718750 0.312500 +vt 0.718750 0.375000 +vt 0.625000 0.406250 +vt 0.593750 0.312500 +vt 0.718750 0.406250 +vt 0.718750 0.250000 +vt 0.593750 0.281250 +vt 0.593750 0.437500 +vt 0.781250 0.062500 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.781250 0.062500 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.187500 0.546875 +vt 0.187500 0.546875 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.562500 0.250000 +vt 0.593750 0.312500 +vt 0.718750 0.375000 +vt 0.687500 0.281250 +vt 0.718750 0.312500 +vt 0.718750 0.375000 +vt 0.625000 0.406250 +vt 0.593750 0.312500 +vt 0.718750 0.406250 +vt 0.718750 0.250000 +vt 0.593750 0.281250 +vt 0.593750 0.437500 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 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 +s off +f 2/1/1 4/2/1 3/3/1 +f 7/4/2 6/5/2 5/6/2 +f 11/7/2 10/8/2 9/9/2 +f 15/10/2 14/11/2 13/12/2 +f 19/13/2 18/14/2 17/15/2 +f 23/16/2 22/17/2 21/18/2 +f 27/19/1 25/20/1 26/21/1 +f 31/22/1 29/23/1 30/24/1 +f 35/25/1 33/26/1 34/27/1 +f 39/28/1 37/29/1 38/30/1 +f 17/31/3 33/32/3 19/33/3 +f 10/34/4 26/35/4 9/36/4 +f 18/37/4 34/38/4 17/39/4 +f 12/40/5 27/41/5 10/8/5 +f 20/42/5 35/43/5 18/14/5 +f 11/7/6 28/44/6 12/45/6 +f 5/46/3 4/47/3 7/48/3 +f 19/13/6 36/49/6 20/50/6 +f 13/51/3 29/52/3 15/53/3 +f 6/54/4 3/55/4 5/56/4 +f 21/57/3 37/58/3 23/59/3 +f 14/60/4 30/61/4 13/62/4 +f 8/63/5 2/64/5 6/5/5 +f 22/65/4 38/66/4 21/67/4 +f 16/68/5 31/69/5 14/11/5 +f 7/4/6 1/70/6 8/71/6 +f 24/72/5 39/73/5 22/17/5 +f 15/10/6 32/74/6 16/75/6 +f 9/76/3 25/77/3 11/78/3 +f 23/16/6 40/79/6 24/80/6 +f 149/81/5 42/82/5 141/83/5 +f 145/84/3 43/85/3 137/86/3 +f 49/87/3 157/88/3 153/89/3 +f 46/90/4 49/91/4 42/92/4 +f 48/93/1 160/94/1 152/95/1 +f 42/82/2 153/96/2 141/83/2 +f 44/97/6 52/98/6 48/99/6 +f 53/100/5 165/101/5 161/102/5 +f 45/103/1 168/104/1 148/105/1 +f 43/106/2 161/102/2 137/107/2 +f 47/108/6 53/109/6 43/110/6 +f 41/111/4 56/112/4 45/113/4 +f 61/114/3 59/115/3 57/116/3 +f 63/117/6 60/118/6 59/119/6 +f 62/120/4 57/121/4 58/122/4 +f 64/123/5 58/124/5 60/125/5 +f 61/114/1 64/123/1 63/117/1 +f 69/126/3 67/127/3 65/128/3 +f 71/129/6 68/130/6 67/131/6 +f 70/132/4 65/133/4 66/134/4 +f 72/135/5 66/136/5 68/137/5 +f 69/126/1 72/135/1 71/129/1 +f 77/138/3 75/139/3 73/140/3 +f 79/141/6 76/142/6 75/143/6 +f 78/144/4 73/145/4 74/146/4 +f 80/147/5 74/148/5 76/149/5 +f 77/138/1 80/147/1 79/141/1 +f 85/150/3 83/151/3 81/152/3 +f 87/153/6 84/154/6 83/155/6 +f 86/156/4 81/157/4 82/158/4 +f 88/159/5 82/160/5 84/161/5 +f 85/150/1 88/159/1 87/153/1 +f 93/162/3 91/163/3 89/164/3 +f 95/165/6 92/166/6 91/167/6 +f 94/168/4 89/169/4 90/170/4 +f 96/171/5 90/172/5 92/173/5 +f 93/162/1 96/171/1 95/165/1 +f 101/174/3 99/175/3 97/176/3 +f 103/177/6 100/178/6 99/179/6 +f 102/180/4 97/181/4 98/182/4 +f 104/183/5 98/184/5 100/185/5 +f 101/174/1 104/183/1 103/177/1 +f 109/186/3 107/187/3 105/188/3 +f 111/189/6 108/190/6 107/191/6 +f 110/192/4 105/193/4 106/194/4 +f 112/195/5 106/196/5 108/197/5 +f 109/186/1 112/195/1 111/189/1 +f 117/198/3 115/199/3 113/200/3 +f 119/201/6 116/202/6 115/203/6 +f 118/204/4 113/205/4 114/206/4 +f 120/207/5 114/208/5 116/209/5 +f 117/198/1 120/207/1 119/201/1 +f 125/210/3 123/211/3 121/212/3 +f 127/213/6 124/214/6 123/215/6 +f 126/216/4 121/217/4 122/218/4 +f 128/219/5 122/220/5 124/221/5 +f 125/210/1 128/219/1 127/213/1 +f 133/222/3 131/223/3 129/224/3 +f 135/225/6 132/226/6 131/227/6 +f 134/228/4 129/229/4 130/230/4 +f 136/231/5 130/232/5 132/233/5 +f 133/222/1 136/231/1 135/225/1 +f 140/234/2 54/235/2 41/236/2 +f 139/237/2 164/238/2 140/239/2 +f 138/240/2 163/241/2 139/242/2 +f 137/243/2 162/244/2 138/245/2 +f 145/84/1 55/246/1 47/247/1 +f 146/248/1 165/249/1 145/250/1 +f 147/251/1 166/252/1 146/253/1 +f 148/254/1 167/255/1 147/256/1 +f 164/257/5 56/258/5 54/235/5 +f 163/259/5 168/260/5 164/238/5 +f 162/261/5 167/262/5 163/241/5 +f 161/263/5 166/264/5 162/244/5 +f 144/265/2 50/266/2 44/267/2 +f 143/268/2 156/269/2 144/270/2 +f 142/271/2 155/272/2 143/273/2 +f 141/274/2 154/275/2 142/276/2 +f 149/81/1 51/277/1 46/278/1 +f 150/279/1 157/280/1 149/281/1 +f 151/282/1 158/283/1 150/284/1 +f 152/285/1 159/286/1 151/287/1 +f 156/288/3 52/289/3 50/290/3 +f 155/291/3 160/292/3 156/293/3 +f 154/294/3 159/295/3 155/296/3 +f 153/297/3 158/298/3 154/299/3 +f 45/103/3 140/300/3 41/301/3 +f 148/254/3 139/302/3 140/303/3 +f 147/251/3 138/304/3 139/305/3 +f 146/248/3 137/306/3 138/307/3 +f 48/93/5 144/265/5 44/267/5 +f 152/285/5 143/268/5 144/270/5 +f 151/282/5 142/271/5 143/273/5 +f 150/279/5 141/274/5 142/276/5 +f 170/308/1 171/309/1 169/310/1 +f 173/311/2 175/312/2 174/313/2 +f 170/314/5 176/315/5 172/316/5 +f 171/317/3 174/318/3 169/319/3 +f 172/320/6 173/321/6 171/317/6 +f 169/322/4 175/312/4 170/314/4 +f 179/323/1 184/324/1 180/325/1 +f 178/326/2 182/327/2 177/328/2 +f 180/325/5 183/329/5 178/326/5 +f 177/330/3 181/331/3 179/323/3 +f 186/332/1 200/333/1 191/334/1 +f 198/335/4 200/333/4 194/336/4 +f 186/337/6 192/338/6 190/339/6 +f 190/340/2 196/341/2 187/342/2 +f 192/343/5 198/335/5 189/344/5 +f 200/333/7 192/345/7 191/334/7 +f 190/340/8 198/346/8 197/347/8 +f 196/341/9 188/348/9 187/342/9 +f 186/332/10 194/349/10 193/350/10 +f 188/351/3 194/336/3 185/352/3 +f 205/353/2 207/354/2 206/355/2 +f 202/356/5 208/357/5 204/358/5 +f 203/359/3 206/355/3 201/360/3 +f 204/361/6 205/362/6 203/363/6 +f 201/364/4 207/365/4 202/366/4 +f 213/367/2 215/368/2 214/369/2 +f 210/370/5 216/371/5 212/372/5 +f 211/373/3 214/369/3 209/374/3 +f 212/375/6 213/376/6 211/377/6 +f 209/378/4 215/379/4 210/380/4 +f 217/381/2 219/382/2 218/383/2 +f 221/384/2 223/385/2 222/386/2 +f 223/387/11 227/388/11 222/389/11 +f 219/390/11 225/391/11 218/392/11 +f 225/393/3 217/394/3 218/395/3 +f 217/394/12 230/396/12 220/397/12 +f 230/396/5 219/390/5 220/397/5 +f 227/398/3 221/399/3 222/400/3 +f 221/399/12 232/401/12 224/402/12 +f 232/401/5 223/387/5 224/402/5 +f 235/403/1 240/404/1 236/405/1 +f 234/406/2 238/407/2 233/408/2 +f 236/405/5 239/409/5 234/406/5 +f 233/410/3 237/411/3 235/403/3 +f 242/412/1 256/413/1 247/414/1 +f 254/415/4 256/413/4 250/416/4 +f 242/417/6 248/418/6 246/419/6 +f 246/420/2 252/421/2 243/422/2 +f 248/423/5 254/415/5 245/424/5 +f 256/413/7 248/425/7 247/414/7 +f 246/420/8 254/426/8 253/427/8 +f 252/421/9 244/428/9 243/422/9 +f 242/412/10 250/429/10 249/430/10 +f 244/431/3 250/416/3 241/432/3 +f 2/1/1 1/70/1 4/2/1 +f 7/4/2 8/71/2 6/5/2 +f 11/7/2 12/45/2 10/8/2 +f 15/10/2 16/75/2 14/11/2 +f 19/13/2 20/50/2 18/14/2 +f 23/16/2 24/80/2 22/17/2 +f 27/19/1 28/44/1 25/20/1 +f 31/22/1 32/74/1 29/23/1 +f 35/25/1 36/49/1 33/26/1 +f 39/28/1 40/79/1 37/29/1 +f 17/31/3 34/433/3 33/32/3 +f 10/34/4 27/434/4 26/35/4 +f 18/37/4 35/435/4 34/38/4 +f 12/40/5 28/436/5 27/41/5 +f 20/42/5 36/437/5 35/43/5 +f 11/7/6 25/20/6 28/44/6 +f 5/46/3 3/438/3 4/47/3 +f 19/13/6 33/26/6 36/49/6 +f 13/51/3 30/439/3 29/52/3 +f 6/54/4 2/440/4 3/55/4 +f 21/57/3 38/441/3 37/58/3 +f 14/60/4 31/442/4 30/61/4 +f 8/63/5 1/443/5 2/64/5 +f 22/65/4 39/444/4 38/66/4 +f 16/68/5 32/445/5 31/69/5 +f 7/4/6 4/2/6 1/70/6 +f 24/72/5 40/446/5 39/73/5 +f 15/10/6 29/23/6 32/74/6 +f 9/76/3 26/447/3 25/77/3 +f 23/16/6 37/29/6 40/79/6 +f 149/81/5 46/278/5 42/82/5 +f 145/84/3 47/247/3 43/85/3 +f 49/87/3 51/277/3 157/88/3 +f 46/90/4 51/448/4 49/91/4 +f 48/93/1 52/289/1 160/94/1 +f 42/82/2 49/449/2 153/96/2 +f 44/97/6 50/450/6 52/98/6 +f 53/100/5 55/246/5 165/101/5 +f 45/103/1 56/258/1 168/104/1 +f 43/106/2 53/100/2 161/102/2 +f 47/108/6 55/451/6 53/109/6 +f 41/111/4 54/452/4 56/112/4 +f 61/114/3 63/117/3 59/115/3 +f 63/117/6 64/123/6 60/118/6 +f 62/120/4 61/114/4 57/121/4 +f 64/123/5 62/120/5 58/124/5 +f 61/114/1 62/120/1 64/123/1 +f 69/126/3 71/129/3 67/127/3 +f 71/129/6 72/135/6 68/130/6 +f 70/132/4 69/126/4 65/133/4 +f 72/135/5 70/132/5 66/136/5 +f 69/126/1 70/132/1 72/135/1 +f 77/138/3 79/141/3 75/139/3 +f 79/141/6 80/147/6 76/142/6 +f 78/144/4 77/138/4 73/145/4 +f 80/147/5 78/144/5 74/148/5 +f 77/138/1 78/144/1 80/147/1 +f 85/150/3 87/153/3 83/151/3 +f 87/153/6 88/159/6 84/154/6 +f 86/156/4 85/150/4 81/157/4 +f 88/159/5 86/156/5 82/160/5 +f 85/150/1 86/156/1 88/159/1 +f 93/162/3 95/165/3 91/163/3 +f 95/165/6 96/171/6 92/166/6 +f 94/168/4 93/162/4 89/169/4 +f 96/171/5 94/168/5 90/172/5 +f 93/162/1 94/168/1 96/171/1 +f 101/174/3 103/177/3 99/175/3 +f 103/177/6 104/183/6 100/178/6 +f 102/180/4 101/174/4 97/181/4 +f 104/183/5 102/180/5 98/184/5 +f 101/174/1 102/180/1 104/183/1 +f 109/186/3 111/189/3 107/187/3 +f 111/189/6 112/195/6 108/190/6 +f 110/192/4 109/186/4 105/193/4 +f 112/195/5 110/192/5 106/196/5 +f 109/186/1 110/192/1 112/195/1 +f 117/198/3 119/201/3 115/199/3 +f 119/201/6 120/207/6 116/202/6 +f 118/204/4 117/198/4 113/205/4 +f 120/207/5 118/204/5 114/208/5 +f 117/198/1 118/204/1 120/207/1 +f 125/210/3 127/213/3 123/211/3 +f 127/213/6 128/219/6 124/214/6 +f 126/216/4 125/210/4 121/217/4 +f 128/219/5 126/216/5 122/220/5 +f 125/210/1 126/216/1 128/219/1 +f 133/222/3 135/225/3 131/223/3 +f 135/225/6 136/231/6 132/226/6 +f 134/228/4 133/222/4 129/229/4 +f 136/231/5 134/228/5 130/232/5 +f 133/222/1 134/228/1 136/231/1 +f 140/234/2 164/257/2 54/235/2 +f 139/237/2 163/259/2 164/238/2 +f 138/240/2 162/261/2 163/241/2 +f 137/243/2 161/263/2 162/244/2 +f 145/84/1 165/101/1 55/246/1 +f 146/248/1 166/264/1 165/249/1 +f 147/251/1 167/262/1 166/252/1 +f 148/254/1 168/260/1 167/255/1 +f 164/257/5 168/104/5 56/258/5 +f 163/259/5 167/255/5 168/260/5 +f 162/261/5 166/252/5 167/262/5 +f 161/263/5 165/249/5 166/264/5 +f 144/265/2 156/453/2 50/266/2 +f 143/268/2 155/454/2 156/269/2 +f 142/271/2 154/455/2 155/272/2 +f 141/274/2 153/456/2 154/275/2 +f 149/81/1 157/88/1 51/277/1 +f 150/279/1 158/298/1 157/280/1 +f 151/282/1 159/295/1 158/283/1 +f 152/285/1 160/292/1 159/286/1 +f 156/288/3 160/94/3 52/289/3 +f 155/291/3 159/286/3 160/292/3 +f 154/294/3 158/283/3 159/295/3 +f 153/297/3 157/280/3 158/298/3 +f 45/103/3 148/105/3 140/300/3 +f 148/254/3 147/256/3 139/302/3 +f 147/251/3 146/253/3 138/304/3 +f 146/248/3 145/250/3 137/306/3 +f 48/93/5 152/95/5 144/265/5 +f 152/285/5 151/287/5 143/268/5 +f 151/282/5 150/284/5 142/271/5 +f 150/279/5 149/281/5 141/274/5 +f 170/308/1 172/457/1 171/309/1 +f 173/311/2 176/458/2 175/312/2 +f 170/314/5 175/312/5 176/315/5 +f 171/317/3 173/321/3 174/318/3 +f 172/320/6 176/459/6 173/321/6 +f 169/322/4 174/313/4 175/312/4 +f 179/323/1 181/331/1 184/324/1 +f 178/326/2 183/329/2 182/327/2 +f 180/325/5 184/324/5 183/329/5 +f 177/330/3 182/460/3 181/331/3 +f 186/332/1 193/350/1 200/333/1 +f 194/336/4 195/461/4 196/341/4 +f 196/341/4 197/347/4 198/335/4 +f 198/335/4 199/462/4 200/333/4 +f 200/333/4 193/350/4 194/336/4 +f 194/336/4 196/341/4 198/335/4 +f 190/339/6 187/463/6 188/464/6 +f 188/464/6 185/465/6 186/337/6 +f 186/337/6 191/466/6 192/338/6 +f 192/338/6 189/467/6 190/339/6 +f 190/339/6 188/464/6 186/337/6 +f 190/340/2 197/347/2 196/341/2 +f 192/343/5 199/462/5 198/335/5 +f 200/333/7 199/468/7 192/345/7 +f 190/340/8 189/469/8 198/346/8 +f 196/341/9 195/470/9 188/348/9 +f 186/332/10 185/471/10 194/349/10 +f 188/351/3 195/461/3 194/336/3 +f 205/353/2 208/472/2 207/354/2 +f 202/356/5 207/473/5 208/357/5 +f 203/359/3 205/474/3 206/355/3 +f 204/361/6 208/475/6 205/362/6 +f 201/364/4 206/476/4 207/365/4 +f 213/367/2 216/477/2 215/368/2 +f 210/370/5 215/478/5 216/371/5 +f 211/373/3 213/479/3 214/369/3 +f 212/375/6 216/480/6 213/376/6 +f 209/378/4 214/481/4 215/379/4 +f 217/381/2 220/482/2 219/382/2 +f 221/384/2 224/483/2 223/385/2 +f 223/387/11 228/484/11 227/388/11 +f 219/390/11 226/485/11 225/391/11 +f 225/393/3 229/486/3 217/394/3 +f 217/394/12 229/486/12 230/396/12 +f 230/396/5 226/485/5 219/390/5 +f 227/398/3 231/487/3 221/399/3 +f 221/399/12 231/487/12 232/401/12 +f 232/401/5 228/484/5 223/387/5 +f 235/403/1 237/411/1 240/404/1 +f 234/406/2 239/409/2 238/407/2 +f 236/405/5 240/404/5 239/409/5 +f 233/410/3 238/488/3 237/411/3 +f 242/412/1 249/430/1 256/413/1 +f 250/416/4 251/489/4 252/421/4 +f 252/421/4 253/427/4 254/415/4 +f 254/415/4 255/490/4 256/413/4 +f 256/413/4 249/430/4 250/416/4 +f 250/416/4 252/421/4 254/415/4 +f 246/419/6 243/491/6 244/492/6 +f 244/492/6 241/493/6 242/417/6 +f 242/417/6 247/494/6 248/418/6 +f 248/418/6 245/495/6 246/419/6 +f 246/419/6 244/492/6 242/417/6 +f 246/420/2 253/427/2 252/421/2 +f 248/423/5 255/490/5 254/415/5 +f 256/413/7 255/496/7 248/425/7 +f 246/420/8 245/497/8 254/426/8 +f 252/421/9 251/498/9 244/428/9 +f 242/412/10 241/499/10 250/429/10 +f 244/431/3 251/489/3 250/416/3 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard_ramp.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard_ramp.obj new file mode 100644 index 000000000..f1667d19b --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard_ramp.obj @@ -0,0 +1,1139 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_ramp.blend' +# www.blender.org +o Plane.001 +v 1.000000 0.562500 -0.187500 +v 1.000000 0.562500 0.187500 +v -1.000000 0.562500 0.187500 +v -1.000000 0.562500 -0.187500 +v -1.000000 0.500000 0.187500 +v 1.000000 0.500000 0.187500 +v -1.000000 0.500000 -0.187500 +v 1.000000 0.500000 -0.187500 +v -1.000000 0.700000 -0.812500 +v 1.000000 0.700000 -0.812500 +v -1.000000 0.700000 -1.187500 +v 1.000000 0.700000 -1.187500 +v -1.000000 0.900000 -1.812500 +v 1.000000 0.900000 -1.812500 +v -1.000000 0.900000 -2.187500 +v 1.000000 0.900000 -2.187500 +v -1.000000 0.100000 2.187500 +v 1.000000 0.100000 2.187500 +v -1.000000 0.100000 1.812500 +v 1.000000 0.100000 1.812500 +v -1.000000 0.300000 1.187500 +v 1.000000 0.300000 1.187500 +v -1.000000 0.300000 0.812500 +v 1.000000 0.300000 0.812500 +v -1.000000 0.762500 -1.187500 +v -1.000000 0.762500 -0.812500 +v 1.000000 0.762500 -0.812500 +v 1.000000 0.762500 -1.187500 +v -1.000000 0.962500 -2.187500 +v -1.000000 0.962500 -1.812500 +v 1.000000 0.962500 -1.812500 +v 1.000000 0.962500 -2.187500 +v -1.000000 0.162500 1.812500 +v -1.000000 0.162500 2.187500 +v 1.000000 0.162500 2.187500 +v 1.000000 0.162500 1.812500 +v -1.000000 0.362500 0.812500 +v -1.000000 0.362500 1.187500 +v 1.000000 0.362500 1.187500 +v 1.000000 0.362500 0.812500 +v -0.812500 0.062500 2.500000 +v 0.812500 0.062500 2.500000 +v -0.812500 1.062500 -2.500000 +v 0.812500 1.062500 -2.500000 +v -0.812500 0.187500 2.500000 +v 0.812500 0.187500 2.500000 +v -0.812500 1.187500 -2.500000 +v 0.812500 1.187500 -2.500000 +v 0.750000 0.062500 2.500000 +v 0.750000 1.062500 -2.500000 +v 0.750000 0.187500 2.500000 +v 0.750000 1.187500 -2.500000 +v -0.750000 1.062500 -2.500000 +v -0.750000 0.062500 2.500000 +v -0.750000 1.187500 -2.500000 +v -0.750000 0.187500 2.500000 +v 0.625000 0.162500 2.062500 +v 0.937500 0.162500 2.062500 +v 0.625000 0.162500 1.937500 +v 0.937500 0.162500 1.937500 +v 0.625000 0.225000 2.062500 +v 0.937500 0.225000 2.062500 +v 0.625000 0.225000 1.937500 +v 0.937500 0.225000 1.937500 +v -0.937500 0.162500 2.062500 +v -0.625000 0.162500 2.062500 +v -0.937500 0.162500 1.937500 +v -0.625000 0.162500 1.937500 +v -0.937500 0.225000 2.062500 +v -0.625000 0.225000 2.062500 +v -0.937500 0.225000 1.937500 +v -0.625000 0.225000 1.937500 +v 0.625000 0.362500 1.062500 +v 0.937500 0.362500 1.062500 +v 0.625000 0.362500 0.937500 +v 0.937500 0.362500 0.937500 +v 0.625000 0.425000 1.062500 +v 0.937500 0.425000 1.062500 +v 0.625000 0.425000 0.937500 +v 0.937500 0.425000 0.937500 +v -0.937500 0.362500 1.062500 +v -0.625000 0.362500 1.062500 +v -0.937500 0.362500 0.937500 +v -0.625000 0.362500 0.937500 +v -0.937500 0.425000 1.062500 +v -0.625000 0.425000 1.062500 +v -0.937500 0.425000 0.937500 +v -0.625000 0.425000 0.937500 +v 0.625000 0.562500 0.062500 +v 0.937500 0.562500 0.062500 +v 0.625000 0.562500 -0.062500 +v 0.937500 0.562500 -0.062500 +v 0.625000 0.625000 0.062500 +v 0.937500 0.625000 0.062500 +v 0.625000 0.625000 -0.062500 +v 0.937500 0.625000 -0.062500 +v -0.937500 0.562500 0.062500 +v -0.625000 0.562500 0.062500 +v -0.937500 0.562500 -0.062500 +v -0.625000 0.562500 -0.062500 +v -0.937500 0.625000 0.062500 +v -0.625000 0.625000 0.062500 +v -0.937500 0.625000 -0.062500 +v -0.625000 0.625000 -0.062500 +v 0.625000 0.762500 -0.937500 +v 0.937500 0.762500 -0.937500 +v 0.625000 0.762500 -1.062500 +v 0.937500 0.762500 -1.062500 +v 0.625000 0.825000 -0.937500 +v 0.937500 0.825000 -0.937500 +v 0.625000 0.825000 -1.062500 +v 0.937500 0.825000 -1.062500 +v -0.937500 0.762500 -0.937500 +v -0.625000 0.762500 -0.937500 +v -0.937500 0.762500 -1.062500 +v -0.625000 0.762500 -1.062500 +v -0.937500 0.825000 -0.937500 +v -0.625000 0.825000 -0.937500 +v -0.937500 0.825000 -1.062500 +v -0.625000 0.825000 -1.062500 +v 0.625000 0.962500 -1.937500 +v 0.937500 0.962500 -1.937500 +v 0.625000 0.962500 -2.062500 +v 0.937500 0.962500 -2.062500 +v 0.625000 1.025000 -1.937500 +v 0.937500 1.025000 -1.937500 +v 0.625000 1.025000 -2.062500 +v 0.937500 1.025000 -2.062500 +v -0.937500 0.962500 -1.937500 +v -0.625000 0.962500 -1.937500 +v -0.937500 0.962500 -2.062500 +v -0.625000 0.962500 -2.062500 +v -0.937500 1.025000 -1.937500 +v -0.625000 1.025000 -1.937500 +v -0.937500 1.025000 -2.062500 +v -0.625000 1.025000 -2.062500 +v -0.812500 0.862500 -1.500000 +v -0.812500 0.662500 -0.500000 +v -0.812500 0.462500 0.500000 +v -0.812500 0.262500 1.500000 +v 0.812500 0.262500 1.500000 +v 0.812500 0.462500 0.500000 +v 0.812500 0.662500 -0.500000 +v 0.812500 0.862500 -1.500000 +v -0.812500 0.987500 -1.500000 +v -0.812500 0.787500 -0.500000 +v -0.812500 0.587500 0.500000 +v -0.812500 0.387500 1.500000 +v 0.812500 0.387500 1.500000 +v 0.812500 0.587500 0.500000 +v 0.812500 0.787500 -0.500000 +v 0.812500 0.987500 -1.500000 +v 0.750000 0.262500 1.500000 +v 0.750000 0.462500 0.500000 +v 0.750000 0.662500 -0.500000 +v 0.750000 0.862500 -1.500000 +v 0.750000 0.387500 1.500000 +v 0.750000 0.587500 0.500000 +v 0.750000 0.787500 -0.500000 +v 0.750000 0.987500 -1.500000 +v -0.750000 0.862500 -1.500000 +v -0.750000 0.662500 -0.500000 +v -0.750000 0.462500 0.500000 +v -0.750000 0.262500 1.500000 +v -0.750000 0.987500 -1.500000 +v -0.750000 0.787500 -0.500000 +v -0.750000 0.587500 0.500000 +v -0.750000 0.387500 1.500000 +v 0.625000 0.900000 -1.875000 +v 0.875000 0.900000 -1.875000 +v 0.625000 0.900000 -2.125000 +v 0.875000 0.900000 -2.125000 +v 0.625000 -0.037500 -2.125000 +v 0.625000 -0.037500 -1.875000 +v 0.875000 -0.037500 -1.875000 +v 0.875000 -0.037500 -2.125000 +v -0.875000 0.900000 -1.875000 +v -0.625000 0.900000 -1.875000 +v -0.875000 0.900000 -2.125000 +v -0.625000 0.900000 -2.125000 +v -0.875000 -0.037500 -2.125000 +v -0.875000 -0.037500 -1.875000 +v -0.625000 -0.037500 -1.875000 +v -0.625000 -0.037500 -2.125000 +v 0.625000 0.700000 -0.875000 +v 0.875000 0.700000 -0.875000 +v 0.625000 0.700000 -1.125000 +v 0.875000 0.700000 -1.125000 +v 0.625000 -0.050000 -1.125000 +v 0.625000 -0.050000 -0.875000 +v 0.875000 -0.050000 -0.875000 +v 0.875000 -0.050000 -1.125000 +v -0.875000 0.700000 -0.875000 +v -0.625000 0.700000 -0.875000 +v -0.875000 0.700000 -1.125000 +v -0.625000 0.700000 -1.125000 +v -0.875000 -0.050000 -1.125000 +v -0.875000 -0.050000 -0.875000 +v -0.625000 -0.050000 -0.875000 +v -0.625000 -0.050000 -1.125000 +v 0.625000 0.500000 0.125000 +v 0.875000 0.500000 0.125000 +v 0.625000 0.500000 -0.125000 +v 0.875000 0.500000 -0.125000 +v 0.625000 0.000000 -0.125000 +v 0.625000 0.000000 0.125000 +v 0.875000 0.000000 0.125000 +v 0.875000 0.000000 -0.125000 +v -0.875000 0.500000 0.125000 +v -0.625000 0.500000 0.125000 +v -0.875000 0.500000 -0.125000 +v -0.625000 0.500000 -0.125000 +v -0.875000 0.000000 -0.125000 +v -0.875000 0.000000 0.125000 +v -0.625000 0.000000 0.125000 +v -0.625000 0.000000 -0.125000 +v 0.625000 0.300000 1.125000 +v 0.875000 0.300000 1.125000 +v 0.625000 0.300000 0.875000 +v 0.875000 0.300000 0.875000 +v 0.625000 -0.012500 0.875000 +v 0.625000 -0.012500 1.125000 +v 0.875000 -0.012500 1.125000 +v 0.875000 -0.012500 0.875000 +v -0.875000 0.300000 1.125000 +v -0.625000 0.300000 1.125000 +v -0.875000 0.300000 0.875000 +v -0.625000 0.300000 0.875000 +v -0.875000 -0.012500 0.875000 +v -0.875000 -0.012500 1.125000 +v -0.625000 -0.012500 1.125000 +v -0.625000 -0.012500 0.875000 +v 0.625000 0.100000 2.125000 +v 0.875000 0.100000 2.125000 +v 0.625000 0.100000 1.875000 +v 0.875000 0.100000 1.875000 +v 0.625000 -0.025000 1.875000 +v 0.625000 -0.025000 2.125000 +v 0.875000 -0.025000 2.125000 +v 0.875000 -0.025000 1.875000 +v -0.875000 0.100000 2.125000 +v -0.625000 0.100000 2.125000 +v -0.875000 0.100000 1.875000 +v -0.625000 0.100000 1.875000 +v -0.875000 -0.025000 1.875000 +v -0.875000 -0.025000 2.125000 +v -0.625000 -0.025000 2.125000 +v -0.625000 -0.025000 1.875000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.593750 0.656250 +vt 0.500000 0.718750 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.156250 0.968750 +vt 0.156250 0.968750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.156250 0.968750 +vt 0.156250 0.968750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.156250 0.968750 +vt 0.156250 0.968750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.156250 0.968750 +vt 0.156250 0.968750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.156250 0.968750 +vt 0.156250 0.968750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.9806 0.1961 +vn 0.0000 -0.9806 -0.1961 +s off +f 2/1/1 4/2/1 3/3/1 +f 7/4/2 6/5/2 5/6/2 +f 11/7/2 10/8/2 9/9/2 +f 15/10/2 14/11/2 13/12/2 +f 19/13/2 18/14/2 17/15/2 +f 23/16/2 22/17/2 21/18/2 +f 27/19/1 25/20/1 26/21/1 +f 31/22/1 29/23/1 30/24/1 +f 35/25/1 33/26/1 34/27/1 +f 39/28/1 37/29/1 38/30/1 +f 17/31/3 33/32/3 19/33/3 +f 10/34/4 26/35/4 9/36/4 +f 18/37/4 34/38/4 17/39/4 +f 12/40/5 27/41/5 10/8/5 +f 20/42/5 35/43/5 18/14/5 +f 11/7/6 28/44/6 12/45/6 +f 5/46/3 4/47/3 7/48/3 +f 19/13/6 36/49/6 20/50/6 +f 13/51/3 29/52/3 15/53/3 +f 6/54/4 3/55/4 5/56/4 +f 21/57/3 37/58/3 23/59/3 +f 14/60/4 30/61/4 13/62/4 +f 8/63/5 2/64/5 6/5/5 +f 22/65/4 38/66/4 21/67/4 +f 16/68/5 31/69/5 14/11/5 +f 7/4/6 1/70/6 8/71/6 +f 24/72/5 39/73/5 22/17/5 +f 15/10/6 32/74/6 16/75/6 +f 9/76/3 25/77/3 11/78/3 +f 23/16/6 40/79/6 24/80/6 +f 141/81/5 46/82/5 42/83/5 +f 145/84/3 43/85/3 137/86/3 +f 153/87/3 51/88/3 157/89/3 +f 46/90/4 49/91/4 42/92/4 +f 48/93/7 160/94/7 152/95/7 +f 42/83/8 153/96/8 141/81/8 +f 44/97/6 52/98/6 48/99/6 +f 53/100/5 165/101/5 161/102/5 +f 45/103/7 168/104/7 148/105/7 +f 43/106/8 161/102/8 137/107/8 +f 47/108/6 53/109/6 43/110/6 +f 41/111/4 56/112/4 45/113/4 +f 61/114/3 59/115/3 57/116/3 +f 63/117/6 60/118/6 59/119/6 +f 62/120/4 57/121/4 58/122/4 +f 64/123/5 58/124/5 60/125/5 +f 61/114/1 64/123/1 63/117/1 +f 69/126/3 67/127/3 65/128/3 +f 71/129/6 68/130/6 67/131/6 +f 70/132/4 65/133/4 66/134/4 +f 72/135/5 66/136/5 68/137/5 +f 69/126/1 72/135/1 71/129/1 +f 77/138/3 75/139/3 73/140/3 +f 79/141/6 76/142/6 75/143/6 +f 78/144/4 73/145/4 74/146/4 +f 80/147/5 74/148/5 76/149/5 +f 77/138/1 80/147/1 79/141/1 +f 85/150/3 83/151/3 81/152/3 +f 87/153/6 84/154/6 83/155/6 +f 86/156/4 81/157/4 82/158/4 +f 88/159/5 82/160/5 84/161/5 +f 85/150/1 88/159/1 87/153/1 +f 93/162/3 91/163/3 89/164/3 +f 95/165/6 92/166/6 91/167/6 +f 94/168/4 89/169/4 90/170/4 +f 96/171/5 90/172/5 92/173/5 +f 93/162/1 96/171/1 95/165/1 +f 101/174/3 99/175/3 97/176/3 +f 103/177/6 100/178/6 99/179/6 +f 102/180/4 97/181/4 98/182/4 +f 104/183/5 98/184/5 100/185/5 +f 101/174/1 104/183/1 103/177/1 +f 109/186/3 107/187/3 105/188/3 +f 111/189/6 108/190/6 107/191/6 +f 110/192/4 105/193/4 106/194/4 +f 112/195/5 106/196/5 108/197/5 +f 109/186/1 112/195/1 111/189/1 +f 117/198/3 115/199/3 113/200/3 +f 119/201/6 116/202/6 115/203/6 +f 118/204/4 113/205/4 114/206/4 +f 120/207/5 114/208/5 116/209/5 +f 117/198/1 120/207/1 119/201/1 +f 125/210/3 123/211/3 121/212/3 +f 127/213/6 124/214/6 123/215/6 +f 126/216/4 121/217/4 122/218/4 +f 128/219/5 122/220/5 124/221/5 +f 125/210/1 128/219/1 127/213/1 +f 133/222/3 131/223/3 129/224/3 +f 135/225/6 132/226/6 131/227/6 +f 134/228/4 129/229/4 130/230/4 +f 136/231/5 130/232/5 132/233/5 +f 133/222/1 136/231/1 135/225/1 +f 140/234/8 54/235/8 41/236/8 +f 139/237/8 164/238/8 140/239/8 +f 138/240/8 163/241/8 139/242/8 +f 137/243/8 162/244/8 138/245/8 +f 145/84/7 55/246/7 47/247/7 +f 146/248/7 165/249/7 145/250/7 +f 147/251/7 166/252/7 146/253/7 +f 148/254/7 167/255/7 147/256/7 +f 164/257/5 56/258/5 54/235/5 +f 163/259/5 168/260/5 164/238/5 +f 162/261/5 167/262/5 163/241/5 +f 161/263/5 166/264/5 162/244/5 +f 144/265/8 50/266/8 44/267/8 +f 143/268/8 156/269/8 144/270/8 +f 142/271/8 155/272/8 143/273/8 +f 141/274/8 154/275/8 142/276/8 +f 149/277/7 51/88/7 46/82/7 +f 150/278/7 157/279/7 149/280/7 +f 151/281/7 158/282/7 150/283/7 +f 152/284/7 159/285/7 151/286/7 +f 50/287/3 160/94/3 52/288/3 +f 156/289/3 159/285/3 160/290/3 +f 155/291/3 158/282/3 159/292/3 +f 154/293/3 157/279/3 158/294/3 +f 45/103/3 140/295/3 41/296/3 +f 148/254/3 139/297/3 140/298/3 +f 147/251/3 138/299/3 139/300/3 +f 146/248/3 137/301/3 138/302/3 +f 44/267/5 152/95/5 144/265/5 +f 144/270/5 151/286/5 143/268/5 +f 143/273/5 150/283/5 142/271/5 +f 142/276/5 149/280/5 141/274/5 +f 181/303/2 183/304/2 182/305/2 +f 173/306/2 175/307/2 174/308/2 +f 176/309/6 171/310/6 172/311/6 +f 174/312/4 170/313/4 169/314/4 +f 175/315/5 172/316/5 170/317/5 +f 173/318/3 169/319/3 171/320/3 +f 184/321/6 179/322/6 180/323/6 +f 182/324/4 178/325/4 177/326/4 +f 183/327/5 180/328/5 178/329/5 +f 181/330/3 177/331/3 179/332/3 +f 197/333/2 199/334/2 198/335/2 +f 189/336/2 191/337/2 190/338/2 +f 192/339/6 187/340/6 188/341/6 +f 190/342/4 186/343/4 185/344/4 +f 191/345/5 188/346/5 186/347/5 +f 189/348/3 185/349/3 187/350/3 +f 200/351/6 195/352/6 196/353/6 +f 198/354/4 194/355/4 193/356/4 +f 199/357/5 196/358/5 194/359/5 +f 197/360/3 193/361/3 195/362/3 +f 213/363/2 215/364/2 214/365/2 +f 205/366/2 207/367/2 206/368/2 +f 208/369/6 203/370/6 204/371/6 +f 206/372/4 202/373/4 201/374/4 +f 207/375/5 204/376/5 202/377/5 +f 205/378/3 201/379/3 203/380/3 +f 216/381/6 211/382/6 212/383/6 +f 214/384/4 210/385/4 209/386/4 +f 215/387/5 212/388/5 210/389/5 +f 213/390/3 209/391/3 211/392/3 +f 229/393/2 231/394/2 230/395/2 +f 221/396/2 223/397/2 222/398/2 +f 224/399/6 219/400/6 220/401/6 +f 222/402/4 218/403/4 217/404/4 +f 223/405/5 220/406/5 218/407/5 +f 221/408/3 217/409/3 219/410/3 +f 232/411/6 227/412/6 228/413/6 +f 230/414/4 226/415/4 225/416/4 +f 231/417/5 228/418/5 226/419/5 +f 229/420/3 225/421/3 227/422/3 +f 245/423/2 247/424/2 246/425/2 +f 237/426/2 239/427/2 238/428/2 +f 240/429/6 235/430/6 236/431/6 +f 238/432/4 234/433/4 233/434/4 +f 239/435/5 236/436/5 234/437/5 +f 237/438/3 233/439/3 235/440/3 +f 248/441/6 243/442/6 244/443/6 +f 246/444/4 242/445/4 241/446/4 +f 247/447/5 244/448/5 242/449/5 +f 245/450/3 241/451/3 243/452/3 +f 2/1/1 1/70/1 4/2/1 +f 7/4/2 8/71/2 6/5/2 +f 11/7/2 12/45/2 10/8/2 +f 15/10/2 16/75/2 14/11/2 +f 19/13/2 20/50/2 18/14/2 +f 23/16/2 24/80/2 22/17/2 +f 27/19/1 28/44/1 25/20/1 +f 31/22/1 32/74/1 29/23/1 +f 35/25/1 36/49/1 33/26/1 +f 39/28/1 40/79/1 37/29/1 +f 17/31/3 34/453/3 33/32/3 +f 10/34/4 27/454/4 26/35/4 +f 18/37/4 35/455/4 34/38/4 +f 12/40/5 28/456/5 27/41/5 +f 20/42/5 36/457/5 35/43/5 +f 11/7/6 25/20/6 28/44/6 +f 5/46/3 3/458/3 4/47/3 +f 19/13/6 33/26/6 36/49/6 +f 13/51/3 30/459/3 29/52/3 +f 6/54/4 2/460/4 3/55/4 +f 21/57/3 38/461/3 37/58/3 +f 14/60/4 31/462/4 30/61/4 +f 8/63/5 1/463/5 2/64/5 +f 22/65/4 39/464/4 38/66/4 +f 16/68/5 32/465/5 31/69/5 +f 7/4/6 4/2/6 1/70/6 +f 24/72/5 40/466/5 39/73/5 +f 15/10/6 29/23/6 32/74/6 +f 9/76/3 26/467/3 25/77/3 +f 23/16/6 37/29/6 40/79/6 +f 141/81/5 149/277/5 46/82/5 +f 145/84/3 47/247/3 43/85/3 +f 153/87/3 49/468/3 51/88/3 +f 46/90/4 51/469/4 49/91/4 +f 48/93/7 52/288/7 160/94/7 +f 42/83/8 49/470/8 153/96/8 +f 44/97/6 50/471/6 52/98/6 +f 53/100/5 55/246/5 165/101/5 +f 45/103/7 56/258/7 168/104/7 +f 43/106/8 53/100/8 161/102/8 +f 47/108/6 55/472/6 53/109/6 +f 41/111/4 54/473/4 56/112/4 +f 61/114/3 63/117/3 59/115/3 +f 63/117/6 64/123/6 60/118/6 +f 62/120/4 61/114/4 57/121/4 +f 64/123/5 62/120/5 58/124/5 +f 61/114/1 62/120/1 64/123/1 +f 69/126/3 71/129/3 67/127/3 +f 71/129/6 72/135/6 68/130/6 +f 70/132/4 69/126/4 65/133/4 +f 72/135/5 70/132/5 66/136/5 +f 69/126/1 70/132/1 72/135/1 +f 77/138/3 79/141/3 75/139/3 +f 79/141/6 80/147/6 76/142/6 +f 78/144/4 77/138/4 73/145/4 +f 80/147/5 78/144/5 74/148/5 +f 77/138/1 78/144/1 80/147/1 +f 85/150/3 87/153/3 83/151/3 +f 87/153/6 88/159/6 84/154/6 +f 86/156/4 85/150/4 81/157/4 +f 88/159/5 86/156/5 82/160/5 +f 85/150/1 86/156/1 88/159/1 +f 93/162/3 95/165/3 91/163/3 +f 95/165/6 96/171/6 92/166/6 +f 94/168/4 93/162/4 89/169/4 +f 96/171/5 94/168/5 90/172/5 +f 93/162/1 94/168/1 96/171/1 +f 101/174/3 103/177/3 99/175/3 +f 103/177/6 104/183/6 100/178/6 +f 102/180/4 101/174/4 97/181/4 +f 104/183/5 102/180/5 98/184/5 +f 101/174/1 102/180/1 104/183/1 +f 109/186/3 111/189/3 107/187/3 +f 111/189/6 112/195/6 108/190/6 +f 110/192/4 109/186/4 105/193/4 +f 112/195/5 110/192/5 106/196/5 +f 109/186/1 110/192/1 112/195/1 +f 117/198/3 119/201/3 115/199/3 +f 119/201/6 120/207/6 116/202/6 +f 118/204/4 117/198/4 113/205/4 +f 120/207/5 118/204/5 114/208/5 +f 117/198/1 118/204/1 120/207/1 +f 125/210/3 127/213/3 123/211/3 +f 127/213/6 128/219/6 124/214/6 +f 126/216/4 125/210/4 121/217/4 +f 128/219/5 126/216/5 122/220/5 +f 125/210/1 126/216/1 128/219/1 +f 133/222/3 135/225/3 131/223/3 +f 135/225/6 136/231/6 132/226/6 +f 134/228/4 133/222/4 129/229/4 +f 136/231/5 134/228/5 130/232/5 +f 133/222/1 134/228/1 136/231/1 +f 140/234/8 164/257/8 54/235/8 +f 139/237/8 163/259/8 164/238/8 +f 138/240/8 162/261/8 163/241/8 +f 137/243/8 161/263/8 162/244/8 +f 145/84/7 165/101/7 55/246/7 +f 146/248/7 166/264/7 165/249/7 +f 147/251/7 167/262/7 166/252/7 +f 148/254/7 168/260/7 167/255/7 +f 164/257/5 168/104/5 56/258/5 +f 163/259/5 167/255/5 168/260/5 +f 162/261/5 166/252/5 167/262/5 +f 161/263/5 165/249/5 166/264/5 +f 144/265/8 156/474/8 50/266/8 +f 143/268/8 155/475/8 156/269/8 +f 142/271/8 154/476/8 155/272/8 +f 141/274/8 153/477/8 154/275/8 +f 149/277/7 157/89/7 51/88/7 +f 150/278/7 158/294/7 157/279/7 +f 151/281/7 159/292/7 158/282/7 +f 152/284/7 160/290/7 159/285/7 +f 50/287/3 156/478/3 160/94/3 +f 156/289/3 155/479/3 159/285/3 +f 155/291/3 154/480/3 158/282/3 +f 154/293/3 153/481/3 157/279/3 +f 45/103/3 148/105/3 140/295/3 +f 148/254/3 147/256/3 139/297/3 +f 147/251/3 146/253/3 138/299/3 +f 146/248/3 145/250/3 137/301/3 +f 44/267/5 48/93/5 152/95/5 +f 144/270/5 152/284/5 151/286/5 +f 143/273/5 151/281/5 150/283/5 +f 142/276/5 150/278/5 149/280/5 +f 181/303/2 184/482/2 183/304/2 +f 173/306/2 176/483/2 175/307/2 +f 176/309/6 173/484/6 171/310/6 +f 174/312/4 175/485/4 170/313/4 +f 175/315/5 176/486/5 172/316/5 +f 173/318/3 174/487/3 169/319/3 +f 184/321/6 181/488/6 179/322/6 +f 182/324/4 183/489/4 178/325/4 +f 183/327/5 184/490/5 180/328/5 +f 181/330/3 182/491/3 177/331/3 +f 197/333/2 200/492/2 199/334/2 +f 189/336/2 192/493/2 191/337/2 +f 192/339/6 189/494/6 187/340/6 +f 190/342/4 191/495/4 186/343/4 +f 191/345/5 192/496/5 188/346/5 +f 189/348/3 190/497/3 185/349/3 +f 200/351/6 197/498/6 195/352/6 +f 198/354/4 199/499/4 194/355/4 +f 199/357/5 200/500/5 196/358/5 +f 197/360/3 198/501/3 193/361/3 +f 213/363/2 216/502/2 215/364/2 +f 205/366/2 208/503/2 207/367/2 +f 208/369/6 205/504/6 203/370/6 +f 206/372/4 207/505/4 202/373/4 +f 207/375/5 208/506/5 204/376/5 +f 205/378/3 206/507/3 201/379/3 +f 216/381/6 213/508/6 211/382/6 +f 214/384/4 215/509/4 210/385/4 +f 215/387/5 216/510/5 212/388/5 +f 213/390/3 214/511/3 209/391/3 +f 229/393/2 232/512/2 231/394/2 +f 221/396/2 224/513/2 223/397/2 +f 224/399/6 221/514/6 219/400/6 +f 222/402/4 223/515/4 218/403/4 +f 223/405/5 224/516/5 220/406/5 +f 221/408/3 222/517/3 217/409/3 +f 232/411/6 229/518/6 227/412/6 +f 230/414/4 231/519/4 226/415/4 +f 231/417/5 232/520/5 228/418/5 +f 229/420/3 230/521/3 225/421/3 +f 245/423/2 248/522/2 247/424/2 +f 237/426/2 240/523/2 239/427/2 +f 240/429/6 237/524/6 235/430/6 +f 238/432/4 239/525/4 234/433/4 +f 239/435/5 240/526/5 236/436/5 +f 237/438/3 238/527/3 233/439/3 +f 248/441/6 245/528/6 243/442/6 +f 246/444/4 247/529/4 242/445/4 +f 247/447/5 248/530/5 244/448/5 +f 245/450/3 246/531/3 241/451/3 diff --git a/src/main/resources/assets/hbm/models/bombs/tsar.obj b/src/main/resources/assets/hbm/models/bombs/tsar.obj new file mode 100644 index 000000000..b40b0a192 --- /dev/null +++ b/src/main/resources/assets/hbm/models/bombs/tsar.obj @@ -0,0 +1,10781 @@ +# Blender v2.79 (sub 0) OBJ File: 'tsar.blend' +# www.blender.org +o Cylinder.004_Cylinder.007 +v -2.620922 1.635705 0.578094 +v -2.855725 1.642531 0.571237 +v -2.857056 1.618167 0.619268 +v -2.621934 1.617162 0.614649 +v -2.854581 1.570805 0.644821 +v -2.620051 1.581115 0.634097 +v -2.848963 1.513135 0.641050 +v -2.615775 1.537224 0.631227 +v -2.842643 1.466264 0.614492 +v -2.611261 1.503337 0.612760 +v -2.563446 1.585110 0.537187 +v -2.564632 1.589535 0.547590 +v -2.566141 1.591165 0.565786 +v -2.566561 1.583473 0.580950 +v -2.565780 1.568521 0.589017 +v -2.564006 1.550314 0.587826 +v -2.562723 1.539821 0.583649 +v -2.617283 1.631775 0.534227 +v -2.850945 1.637368 0.513600 +v -2.613003 1.612516 0.500754 +v -2.585983 1.617706 0.539960 +v -2.582817 1.603788 0.514795 +v -2.588855 1.620807 0.574583 +v -2.589654 1.606172 0.603435 +v -2.588167 1.577722 0.618784 +v -2.584792 1.543080 0.616519 +v -2.581442 1.517618 0.603197 +v -2.844932 1.609716 0.467325 +v -2.898388 1.597308 0.470969 +v -2.903679 1.621500 0.511863 +v -2.919393 1.564240 0.501247 +v -2.921673 1.574001 0.519696 +v -2.907963 1.626127 0.563514 +v -2.923886 1.576390 0.546373 +v -2.909156 1.604294 0.606555 +v -2.924502 1.565114 0.568603 +v -2.906938 1.561851 0.629454 +v -2.923356 1.543193 0.580430 +v -2.901903 1.510171 0.626075 +v -2.920756 1.516501 0.578685 +v -2.896337 1.468756 0.602850 +v -2.918334 1.497845 0.569361 +v 0.197844 1.759225 0.642473 +v 0.197845 1.827974 0.671655 +v 0.197844 1.912615 0.553176 +v 0.197844 2.031451 0.273215 +v 0.197844 2.057882 0.130027 +v 0.197844 1.989133 0.100845 +v 0.351714 2.057882 0.130027 +v 0.351714 1.989133 0.100845 +v 0.351714 2.031451 0.273215 +v 0.351714 1.912615 0.553176 +v 0.351714 1.827974 0.671655 +v 0.351714 1.759225 0.642473 +v 0.324833 2.031451 0.273215 +v 0.224726 2.031451 0.273215 +v 0.224726 2.090056 0.353570 +v 0.324833 2.090056 0.353570 +v 0.224726 2.082111 0.505154 +v 0.324832 2.082111 0.505154 +v 0.224726 1.912615 0.553176 +v 0.324832 1.912615 0.553176 +v 0.324833 2.071492 0.382580 +v 0.324833 2.008010 0.328440 +v 0.224726 2.071492 0.382581 +v 0.224726 2.008010 0.328439 +v 0.324833 2.066682 0.474362 +v 0.324833 1.936056 0.497951 +v 0.224726 1.936056 0.497951 +v 0.224726 2.066682 0.474362 +v -0.757311 1.000000 -1.032090 +v 1.306870 1.000000 -1.032090 +v 1.306870 0.681067 -0.981576 +v -0.757311 0.681066 -0.981576 +v 1.306869 0.393353 -0.834979 +v -0.757311 0.393352 -0.834979 +v 1.306870 0.165022 -0.606647 +v -0.757311 0.165021 -0.606647 +v 1.306870 0.018424 -0.318933 +v -0.757311 0.018424 -0.318933 +v 1.306870 -0.032090 -0.000000 +v -0.757311 -0.032090 -0.000000 +v 1.306870 0.018424 0.318934 +v -0.757311 0.018424 0.318933 +v 1.306870 0.165022 0.606647 +v -0.757311 0.165021 0.606647 +v 1.306870 0.393353 0.834979 +v -0.757311 0.393353 0.834979 +v 1.306870 0.681067 0.981576 +v -0.757311 0.681066 0.981576 +v 1.306870 1.000000 1.032090 +v -0.757311 1.000000 1.032090 +v 1.306870 1.318934 0.981576 +v -0.757311 1.318933 0.981576 +v -0.757311 1.606647 0.834979 +v 1.306870 1.606648 0.834979 +v 1.306869 1.834979 0.606647 +v -0.757311 1.834979 0.606647 +v 1.306869 1.981576 0.318934 +v -0.757311 1.981576 0.318934 +v 1.306869 2.032090 0.000000 +v -0.757311 2.032090 0.000000 +v 1.306870 1.981576 -0.318933 +v -0.757311 1.981576 -0.318933 +v 1.306870 1.834979 -0.606647 +v -0.757311 1.834978 -0.606647 +v 1.306870 1.606647 -0.834978 +v -0.757311 1.606647 -0.834978 +v 2.054217 0.490209 -0.701667 +v 2.054217 0.298333 -0.509791 +v -0.757311 1.318933 -0.981576 +v 1.306870 1.318933 -0.981576 +v -3.225221 0.299680 -0.227548 +v -3.225221 0.404272 -0.432822 +v 2.054217 0.490209 0.701667 +v 2.054217 0.298333 0.509791 +v 2.521168 0.480886 0.377158 +v 2.521168 0.622842 0.519114 +v 2.054217 1.000000 -0.867308 +v 2.054217 0.731987 -0.824859 +v 2.054217 1.509791 0.701667 +v 2.054217 1.701667 0.509791 +v 2.054217 1.701667 -0.509791 +v 2.054217 1.509791 -0.701667 +v 2.054217 0.132692 -0.000000 +v 2.054217 0.175141 0.268013 +v 2.054217 1.000000 0.867308 +v 2.054217 1.268013 0.824859 +v 2.054217 1.867308 0.000000 +v 2.054217 1.824859 -0.268013 +v 2.054217 0.175141 -0.268013 +v 2.054217 0.731987 0.824859 +v 2.054217 1.824859 0.268013 +v 2.054217 1.268013 -0.824859 +v 2.521168 0.358340 -0.000000 +v 2.521168 0.389745 -0.198284 +v 2.772793 0.679104 -0.104265 +v 2.772793 0.662590 -0.000000 +v 2.521168 1.000000 -0.641660 +v 2.521168 0.801716 -0.610255 +v 2.521168 1.641660 0.000000 +v 2.521168 1.610255 -0.198284 +v 2.521168 0.801716 0.610255 +v 2.521168 0.622842 -0.519114 +v 2.521168 1.519114 -0.377158 +v 2.521168 1.000000 0.641660 +v 2.521168 0.480886 -0.377158 +v 2.521168 1.377158 -0.519114 +v 2.521168 1.198284 0.610255 +v 2.521168 1.198284 -0.610255 +v 2.521168 1.377159 0.519114 +v 2.521168 1.519114 0.377158 +v 2.521168 0.389745 0.198284 +v 2.521168 1.610255 0.198284 +v 2.772792 1.337410 0.000000 +v 2.772792 1.320896 0.104265 +v 2.836521 1.161198 0.052376 +v 2.836520 1.169494 0.000000 +v 2.772792 1.104266 -0.320896 +v 2.772792 1.000000 -0.337410 +v 2.772793 1.198325 0.272970 +v 2.772793 1.272971 0.198325 +v 2.772792 0.679104 0.104265 +v 2.772793 0.727030 0.198325 +v 2.772793 0.801676 0.272971 +v 2.772793 0.895735 -0.320896 +v 2.772793 1.320896 -0.104266 +v 2.772793 0.895735 0.320896 +v 2.772793 0.801676 -0.272971 +v 2.772792 1.272971 -0.198325 +v 2.772792 1.000000 0.337410 +v 2.772792 0.727030 -0.198325 +v 2.772792 1.198325 -0.272970 +v 2.772792 1.104266 0.320896 +v 2.836521 0.947624 -0.161198 +v 2.836521 1.000000 -0.169493 +v 2.836520 1.052377 -0.161198 +v 2.836521 1.099626 -0.137123 +v 2.836521 1.137123 -0.099626 +v 2.836521 1.161198 -0.052376 +v 2.836521 1.137123 0.099626 +v 2.836521 1.099626 0.137123 +v 2.836521 1.052377 0.161198 +v 2.836521 1.000000 0.169493 +v 2.836521 0.947624 0.161198 +v 2.836520 0.900375 0.137123 +v 2.836521 0.862877 0.099626 +v 2.836521 0.838803 0.052376 +v 2.836521 0.830507 -0.000000 +v 2.836521 0.838803 -0.052376 +v 2.836521 0.862877 -0.099626 +v 2.836521 0.900375 -0.137123 +v -3.225221 1.700320 0.227548 +v -3.225221 1.736360 0.000000 +v -5.250397 1.736359 0.000000 +v -5.250397 1.700319 0.227548 +v -3.225221 0.772452 0.700320 +v -3.225221 0.567178 0.595728 +v -3.225221 1.595728 0.432822 +v -3.225221 1.227548 -0.700320 +v -3.225221 1.432822 -0.595728 +v -3.225221 0.567178 -0.595728 +v -3.225221 0.772452 -0.700320 +v -3.225221 0.404272 0.432822 +v -3.225221 0.299680 0.227548 +v -3.225221 1.432822 0.595728 +v -3.225221 1.227548 0.700320 +v -3.225221 1.595728 -0.432821 +v -3.225221 1.700320 -0.227548 +v -3.225221 0.263640 -0.000000 +v -3.225221 1.000000 0.736360 +v -3.225221 1.000000 -0.736360 +v -5.250397 1.700319 -0.227548 +v -5.250396 1.595727 -0.432821 +v -5.250396 1.534429 -0.388286 +v -5.250397 1.628259 -0.204134 +v -5.250397 0.567177 0.595728 +v -5.250396 0.404271 0.432822 +v -5.250397 0.772451 -0.700320 +v -5.250396 0.999999 -0.736360 +v -5.250397 0.772451 0.700320 +v -5.250397 0.567177 -0.595728 +v -5.250397 0.999999 0.736360 +v -5.250397 0.404271 -0.432822 +v -5.250397 1.432821 -0.595728 +v -5.250397 1.227547 0.700320 +v -5.250397 0.299679 -0.227548 +v -5.250397 1.227547 -0.700320 +v -5.250397 1.432821 0.595728 +v -5.250396 0.263639 -0.000000 +v -5.250397 1.595727 0.432822 +v -5.250396 0.299679 0.227548 +v -5.250397 1.388285 -0.534430 +v -5.250397 1.204133 -0.628260 +v -3.225221 1.204133 -0.628260 +v -3.225221 1.388285 -0.534430 +v -5.250397 0.999999 0.660592 +v -5.250397 0.795865 0.628260 +v -5.250397 0.465569 -0.388286 +v -5.250397 0.611713 -0.534430 +v -5.250397 1.204133 0.628260 +v -5.250396 0.371739 -0.204134 +v -5.250397 1.388285 0.534430 +v -5.250397 0.339407 -0.000000 +v -5.250397 0.999999 -0.660592 +v -5.250396 1.534429 0.388286 +v -5.250396 0.371739 0.204134 +v -5.250397 1.628259 0.204134 +v -5.250397 0.465569 0.388286 +v -5.250397 1.660591 0.000000 +v -5.250397 0.611713 0.534430 +v -5.250397 0.795865 -0.628260 +v -3.225221 0.999999 -0.660592 +v -3.225221 0.795865 -0.628260 +v -3.225221 0.611713 -0.534430 +v -3.225221 0.465569 -0.388286 +v -3.225221 0.371739 -0.204134 +v -3.225221 0.339407 -0.000000 +v -3.225221 0.371739 0.204134 +v -3.225221 0.465569 0.388286 +v -3.225221 0.611713 0.534430 +v -3.225221 0.795865 0.628260 +v -3.225221 0.999999 0.660592 +v -3.225221 1.204133 0.628260 +v -3.225221 1.388285 0.534430 +v -3.225221 1.534429 0.388286 +v -3.225221 1.628259 0.204134 +v -3.225221 1.660591 0.000000 +v -3.225221 1.628259 -0.204134 +v -3.225221 1.534429 -0.388286 +v 2.588751 1.000000 -0.551802 +v 2.764493 1.000000 -0.551802 +v 2.764494 0.935086 -0.524914 +v 2.588751 0.935086 -0.524914 +v 2.802250 1.000000 -0.533620 +v 2.816855 1.000000 -0.500856 +v 2.816855 0.971110 -0.488889 +v 2.802250 0.947943 -0.512057 +v 2.764493 0.908198 -0.460000 +v 2.588750 0.908198 -0.460000 +v 2.816855 0.959144 -0.460000 +v 2.802250 0.926380 -0.460000 +v 2.764493 0.935086 -0.395086 +v 2.588751 0.935086 -0.395086 +v 2.816855 0.971110 -0.431111 +v 2.802250 0.947943 -0.407943 +v 2.764493 1.000000 -0.368198 +v 2.588750 1.000000 -0.368198 +v 2.816855 1.000000 -0.419144 +v 2.802250 1.000000 -0.386380 +v 2.802250 1.052057 -0.407943 +v 2.764493 1.064914 -0.395086 +v 2.588750 1.064914 -0.395086 +v 2.816855 1.028889 -0.431110 +v 2.802250 1.073620 -0.460000 +v 2.764493 1.091802 -0.460000 +v 2.588751 1.091802 -0.460000 +v 2.816855 1.040856 -0.460000 +v 2.802250 1.052057 -0.512057 +v 2.764493 1.064914 -0.524914 +v 2.816855 1.028889 -0.488889 +v 2.588751 1.064914 -0.524914 +v 2.588751 1.000000 0.368198 +v 2.764493 1.000000 0.368198 +v 2.764493 0.935086 0.395086 +v 2.588751 0.935086 0.395086 +v 2.802250 1.000000 0.386380 +v 2.816855 1.000000 0.419144 +v 2.816855 0.971110 0.431111 +v 2.802250 0.947943 0.407943 +v 2.764493 0.908198 0.460000 +v 2.588751 0.908198 0.460000 +v 2.816855 0.959144 0.460000 +v 2.802250 0.926380 0.460000 +v 2.764494 0.935086 0.524914 +v 2.588751 0.935086 0.524914 +v 2.816855 0.971111 0.488889 +v 2.802250 0.947943 0.512057 +v 2.764493 1.000000 0.551802 +v 2.588751 1.000000 0.551802 +v 2.816854 1.000000 0.500856 +v 2.802250 1.000000 0.533620 +v 2.802250 1.052057 0.512057 +v 2.764493 1.064914 0.524914 +v 2.588750 1.064914 0.524914 +v 2.816855 1.028889 0.488889 +v 2.802250 1.073620 0.460000 +v 2.764494 1.091802 0.460000 +v 2.588751 1.091802 0.460000 +v 2.816855 1.040856 0.460000 +v 2.802250 1.052057 0.407943 +v 2.764494 1.064914 0.395086 +v 2.816855 1.028889 0.431111 +v 2.588751 1.064914 0.395086 +v 0.197845 1.759225 -0.642473 +v 0.197845 1.989133 -0.100845 +v 0.197844 2.057882 -0.130027 +v 0.197844 2.031451 -0.273215 +v 0.197845 1.912615 -0.553176 +v 0.197844 1.827974 -0.671655 +v 0.351714 1.989133 -0.100845 +v 0.351714 2.057882 -0.130027 +v 0.351714 1.759225 -0.642473 +v 0.351714 1.827974 -0.671655 +v 0.351714 1.912615 -0.553176 +v 0.351714 2.031451 -0.273215 +v 0.324833 2.031451 -0.273215 +v 0.324832 2.090055 -0.353570 +v 0.224726 2.090055 -0.353570 +v 0.224726 2.031451 -0.273215 +v 0.324833 2.082111 -0.505154 +v 0.224726 2.082111 -0.505154 +v 0.224726 1.912615 -0.553176 +v 0.324833 1.912615 -0.553176 +v 0.324833 2.008010 -0.328439 +v 0.324833 2.071492 -0.382581 +v 0.224726 2.008010 -0.328439 +v 0.224726 2.071492 -0.382580 +v 0.324833 2.066682 -0.474362 +v 0.324833 1.936056 -0.497951 +v 0.224726 2.066682 -0.474362 +v 0.224726 1.936056 -0.497951 +v 0.274779 1.028989 1.006440 +v 0.274779 0.957612 1.079144 +v 0.338506 0.940748 1.076465 +v 0.368048 1.004307 1.002519 +v 0.385156 0.894675 1.069146 +v 0.436326 0.936875 0.991806 +v 0.402232 0.831738 1.059147 +v 0.461318 0.844761 0.977173 +v 0.385156 0.768801 1.049149 +v 0.436327 0.752646 0.962539 +v 0.338506 0.722728 1.041829 +v 0.368049 0.685214 0.951826 +v 0.274779 0.705864 1.039150 +v 0.274779 0.660532 0.947905 +v 0.211053 0.722727 1.041829 +v 0.181510 0.685214 0.951826 +v 0.164402 0.768801 1.049149 +v 0.113232 0.752646 0.962539 +v 0.147327 0.831738 1.059147 +v 0.088241 0.844761 0.977173 +v 0.164402 0.894675 1.069146 +v 0.113232 0.936875 0.991806 +v 0.197515 0.787682 1.052148 +v 0.185562 0.831738 1.059147 +v 0.211053 0.940748 1.076465 +v 0.181510 1.004307 1.002519 +v 0.319388 0.908045 1.071270 +v 0.274779 0.919849 1.073145 +v 0.274779 0.925524 1.037426 +v 0.319387 0.913719 1.035550 +v 0.230171 0.755431 1.047024 +v 0.274779 0.743626 1.045149 +v 0.319388 0.755431 1.047024 +v 0.352043 0.787682 1.052148 +v 0.363996 0.831738 1.059147 +v 0.230171 0.908045 1.071270 +v 0.352043 0.875793 1.066146 +v 0.197515 0.875793 1.066146 +v 0.230171 0.913719 1.035550 +v 0.197515 0.881468 1.030426 +v 0.185562 0.837412 1.023427 +v 0.197515 0.793356 1.016428 +v 0.230171 0.761105 1.011305 +v 0.274779 0.749300 1.009429 +v 0.319388 0.761105 1.011305 +v 0.352043 0.793356 1.016428 +v 0.363996 0.837412 1.023427 +v 0.352043 0.881468 1.030427 +v 0.274779 1.028989 -1.006440 +v 0.368049 1.004307 -1.002519 +v 0.338505 0.940748 -1.076465 +v 0.274779 0.957612 -1.079144 +v 0.436327 0.936875 -0.991807 +v 0.385156 0.894675 -1.069146 +v 0.461318 0.844761 -0.977173 +v 0.402232 0.831738 -1.059147 +v 0.436327 0.752647 -0.962539 +v 0.385156 0.768801 -1.049149 +v 0.368049 0.685215 -0.951826 +v 0.338506 0.722728 -1.041829 +v 0.274779 0.660533 -0.947905 +v 0.274779 0.705864 -1.039150 +v 0.181510 0.685215 -0.951826 +v 0.211053 0.722728 -1.041829 +v 0.113232 0.752647 -0.962539 +v 0.164402 0.768801 -1.049149 +v 0.088241 0.844761 -0.977173 +v 0.147327 0.831738 -1.059147 +v 0.113232 0.936875 -0.991806 +v 0.164402 0.894675 -1.069146 +v 0.185563 0.831738 -1.059147 +v 0.197515 0.787682 -1.052148 +v 0.181510 1.004307 -1.002519 +v 0.211053 0.940748 -1.076465 +v 0.319388 0.908045 -1.071270 +v 0.319388 0.913720 -1.035550 +v 0.274779 0.925524 -1.037425 +v 0.274779 0.919850 -1.073145 +v 0.230171 0.755431 -1.047025 +v 0.274779 0.743626 -1.045149 +v 0.319388 0.755431 -1.047025 +v 0.352043 0.787682 -1.052148 +v 0.363996 0.831738 -1.059147 +v 0.230171 0.908045 -1.071270 +v 0.352043 0.875794 -1.066146 +v 0.197515 0.875794 -1.066146 +v 0.352043 0.881469 -1.030427 +v 0.363996 0.837413 -1.023427 +v 0.352043 0.793357 -1.016429 +v 0.319387 0.761106 -1.011305 +v 0.274779 0.749301 -1.009430 +v 0.230171 0.761106 -1.011305 +v 0.197515 0.793357 -1.016429 +v 0.185563 0.837413 -1.023427 +v 0.197515 0.881468 -1.030427 +v 0.230171 0.913720 -1.035550 +v -5.245664 1.724600 0.143804 +v -5.194486 1.806213 0.165672 +v -5.178945 1.806213 0.165672 +v -5.127767 1.724600 0.143804 +v -5.127767 1.699425 0.237762 +v -5.178945 1.781037 0.259629 +v -5.194487 1.781037 0.259629 +v -5.245664 1.699425 0.237762 +v -5.194486 1.789429 0.228310 +v -5.245664 1.707816 0.206443 +v -5.127767 1.707816 0.206443 +v -5.178945 1.789429 0.228310 +v -5.194486 1.780201 0.262749 +v -5.194487 1.657673 0.284806 +v -5.178945 1.657673 0.284806 +v -5.178945 1.780201 0.262749 +v -5.178945 1.807048 0.162553 +v -5.178945 1.711965 0.082187 +v -5.194486 1.711965 0.082187 +v -5.194486 1.807048 0.162553 +v -5.245664 1.716209 0.175123 +v -5.127767 1.716209 0.175123 +v -5.178945 1.797821 0.196991 +v -5.194486 1.797821 0.196991 +v -5.194487 1.680623 0.199156 +v -5.178945 1.680623 0.199156 +v -5.178945 1.689015 0.167837 +v -5.194487 1.689015 0.167837 +v -5.245664 1.676589 0.231643 +v -5.127767 1.676589 0.231643 +v -5.245664 1.693372 0.169004 +v -5.127767 1.693372 0.169004 +v -5.127767 1.684980 0.200324 +v -5.245664 1.684980 0.200324 +v -5.245664 1.701764 0.137685 +v -5.127767 1.701764 0.137685 +v -5.254691 1.721862 0.168034 +v -5.254690 1.709168 0.215409 +v -5.297078 1.734766 0.222269 +v -5.297078 1.747460 0.174893 +v -5.254690 1.809059 0.242176 +v -5.254690 1.821754 0.194800 +v -5.296170 1.782376 0.235026 +v -5.303239 1.758633 0.228664 +v -5.303239 1.771327 0.181288 +v -5.296170 1.795070 0.187649 +v -4.735427 1.756607 0.186990 +v -5.258313 1.800607 0.198463 +v -5.258313 1.792577 0.228430 +v -4.735427 1.748737 0.216365 +v -4.735427 1.714383 0.207160 +v -5.258312 1.727160 0.210900 +v -5.258312 1.735189 0.180934 +v -4.735427 1.722255 0.177786 +v -4.738048 1.775154 0.227643 +v -4.738048 1.685866 0.203718 +v -4.703030 1.716621 0.211958 +v -4.703030 1.747569 0.220251 +v -4.713286 1.767075 0.225477 +v -4.738048 1.695836 0.166508 +v -4.738048 1.785124 0.190433 +v -4.713286 1.777045 0.188268 +v -4.703029 1.757539 0.183041 +v -4.703030 1.726591 0.174749 +v -4.755419 1.709252 0.136762 +v -4.755419 1.754777 0.148961 +v -4.747920 1.774392 0.154217 +v -4.723568 1.784320 0.156877 +v -4.699216 1.774392 0.154217 +v -4.691718 1.754777 0.148961 +v -4.691718 1.709252 0.136762 +v -4.723568 1.766025 0.225158 +v -4.723568 1.757680 0.256300 +v -4.699217 1.747751 0.253640 +v -4.699216 1.756096 0.222498 +v -4.755419 1.700907 0.167905 +v -4.755419 1.746433 0.180104 +v -4.691718 1.690956 0.205043 +v -4.691718 1.736482 0.217242 +v -4.691718 1.728137 0.248385 +v -4.691718 1.682611 0.236187 +v -4.723568 1.775976 0.188019 +v -4.747920 1.766048 0.185359 +v -4.755419 1.736482 0.217242 +v -4.755419 1.728137 0.248385 +v -4.747920 1.747751 0.253640 +v -4.747920 1.756096 0.222498 +v -4.691718 1.746433 0.180104 +v -4.699217 1.766048 0.185359 +v -4.755419 1.682611 0.236187 +v -4.691718 1.700907 0.167905 +v -4.755418 1.690956 0.205043 +v -4.798187 1.751698 0.243955 +v -4.761486 1.751697 0.243955 +v -4.761486 1.751643 -0.243955 +v -4.798187 1.751643 -0.243955 +v -4.798187 1.569596 0.550618 +v -4.761486 1.569596 0.550619 +v -4.798186 1.248075 0.750550 +v -4.761485 1.248075 0.750550 +v -4.798187 0.878909 0.779609 +v -4.761485 0.878909 0.779609 +v -4.797982 0.536913 0.638658 +v -4.761280 0.536913 0.638658 +v -4.798189 0.295753 0.357419 +v -4.761487 0.295753 0.357419 +v -4.798187 0.210817 -0.000000 +v -4.761485 0.210817 -0.000000 +v -4.798189 0.295753 -0.355937 +v -4.761488 0.295753 -0.355937 +v -4.798189 0.537259 -0.641050 +v -4.761488 0.537259 -0.641050 +v -4.798187 0.878909 -0.780850 +v -4.761485 0.878909 -0.780850 +v -4.798187 1.248075 -0.750708 +v -4.761486 1.248075 -0.750708 +v -4.798186 1.557471 -0.558672 +v -4.761486 1.557471 -0.558672 +v -3.764244 1.624065 0.401704 +v -3.764243 1.604246 0.391606 +v -3.715309 1.604246 0.391606 +v -3.715310 1.624065 0.401704 +v -3.790732 1.674196 0.303318 +v -3.790732 1.654377 0.293219 +v -3.790732 1.621852 0.357052 +v -3.790732 1.641671 0.367150 +v -3.688820 1.654377 0.293219 +v -3.688820 1.674196 0.303318 +v -3.688820 1.641671 0.367150 +v -3.688820 1.621852 0.357052 +v -3.715309 1.691802 0.268764 +v -3.715309 1.671983 0.258666 +v -3.764243 1.671983 0.258666 +v -3.764243 1.691802 0.268764 +v -3.715309 2.365680 0.068327 +v -3.715309 2.365680 0.046084 +v -3.764244 2.365680 0.046084 +v -3.764243 2.365680 0.068327 +v -3.688820 2.255258 0.068327 +v -3.688820 2.255258 0.046084 +v -3.688820 2.326899 0.046084 +v -3.688820 2.326899 0.068327 +v -3.790732 2.255258 0.046083 +v -3.790732 2.255258 0.068327 +v -3.790732 2.326899 0.068327 +v -3.790732 2.326899 0.046084 +v -3.764243 2.216478 0.068327 +v -3.764244 2.216478 0.046084 +v -3.715309 2.216478 0.046084 +v -3.715309 2.216478 0.068327 +v -3.746801 2.291079 0.068327 +v -3.732751 2.291079 0.068327 +v -3.732750 1.657933 0.335234 +v -3.746801 1.657933 0.335234 +v -4.064243 1.624065 0.401704 +v -4.064243 1.604246 0.391606 +v -4.015309 1.604246 0.391606 +v -4.015309 1.624065 0.401704 +v -4.090732 1.674196 0.303318 +v -4.090733 1.654377 0.293219 +v -4.090732 1.621852 0.357052 +v -4.090732 1.641671 0.367150 +v -3.988820 1.654376 0.293219 +v -3.988820 1.674196 0.303318 +v -3.988820 1.641671 0.367150 +v -3.988820 1.621852 0.357052 +v -4.015309 1.691802 0.268764 +v -4.015309 1.671983 0.258666 +v -4.064243 1.671982 0.258666 +v -4.064243 1.691802 0.268764 +v -4.015309 2.365680 0.068327 +v -4.015309 2.365680 0.046083 +v -4.064244 2.365680 0.046084 +v -4.064244 2.365680 0.068327 +v -3.988821 2.255258 0.068327 +v -3.988821 2.255258 0.046084 +v -3.988821 2.326899 0.046084 +v -3.988820 2.326899 0.068327 +v -4.090732 2.255258 0.046084 +v -4.090732 2.255258 0.068327 +v -4.090732 2.326899 0.068327 +v -4.090732 2.326899 0.046084 +v -4.064244 2.216478 0.068327 +v -4.064244 2.216478 0.046084 +v -4.015309 2.216478 0.046084 +v -4.015309 2.216478 0.068327 +v -4.046802 2.291079 0.068327 +v -4.032752 2.291079 0.068327 +v -4.032751 1.657933 0.335234 +v -4.046801 1.657933 0.335234 +v -4.364244 1.624065 0.401704 +v -4.364244 1.604246 0.391606 +v -4.315310 1.604246 0.391606 +v -4.315310 1.624065 0.401704 +v -4.390733 1.674195 0.303318 +v -4.390733 1.654376 0.293219 +v -4.390733 1.621852 0.357052 +v -4.390733 1.641671 0.367150 +v -4.288821 1.654376 0.293219 +v -4.288821 1.674195 0.303318 +v -4.288821 1.641671 0.367150 +v -4.288821 1.621852 0.357052 +v -4.315310 1.691801 0.268764 +v -4.315310 1.671982 0.258666 +v -4.364244 1.671982 0.258666 +v -4.364243 1.691801 0.268764 +v -4.315309 2.365680 0.068327 +v -4.315310 2.365680 0.046084 +v -4.364244 2.365680 0.046084 +v -4.364244 2.365680 0.068327 +v -4.288821 2.255258 0.068327 +v -4.288821 2.255258 0.046084 +v -4.288821 2.326899 0.046084 +v -4.288821 2.326899 0.068327 +v -4.390733 2.255258 0.046083 +v -4.390733 2.255258 0.068327 +v -4.390733 2.326899 0.068327 +v -4.390733 2.326899 0.046084 +v -4.364244 2.216478 0.068327 +v -4.364244 2.216477 0.046084 +v -4.315310 2.216478 0.046083 +v -4.315309 2.216478 0.068327 +v -4.346802 2.291079 0.068327 +v -4.346802 1.657933 0.335234 +v -4.332751 1.657933 0.335234 +v -4.332752 2.291079 0.068327 +v -3.764244 1.624065 -0.401704 +v -3.715309 1.624065 -0.401704 +v -3.715309 1.604246 -0.391606 +v -3.764244 1.604246 -0.391606 +v -3.790732 1.674196 -0.303318 +v -3.790732 1.641671 -0.367150 +v -3.790732 1.621852 -0.357052 +v -3.790732 1.654377 -0.293219 +v -3.688820 1.654377 -0.293219 +v -3.688820 1.621852 -0.357052 +v -3.688821 1.641671 -0.367150 +v -3.688820 1.674196 -0.303318 +v -3.715309 1.691802 -0.268764 +v -3.715309 1.671982 -0.258666 +v -3.764244 1.671982 -0.258666 +v -3.764244 1.691801 -0.268764 +v -3.715310 2.365680 -0.068327 +v -3.764244 2.365680 -0.068327 +v -3.764244 2.365680 -0.046083 +v -3.715310 2.365680 -0.046083 +v -3.688821 2.255258 -0.068327 +v -3.688821 2.326899 -0.068327 +v -3.688821 2.326899 -0.046083 +v -3.688821 2.255258 -0.046084 +v -3.790733 2.255258 -0.046083 +v -3.790732 2.326899 -0.046083 +v -3.790733 2.326899 -0.068327 +v -3.790732 2.255258 -0.068327 +v -3.764244 2.216478 -0.068327 +v -3.764244 2.216478 -0.046083 +v -3.715310 2.216478 -0.046083 +v -3.715310 2.216478 -0.068327 +v -3.746802 2.291079 -0.068327 +v -3.732752 2.291079 -0.068327 +v -3.732751 1.657933 -0.335234 +v -3.746801 1.657933 -0.335234 +v -4.064244 1.624065 -0.401704 +v -4.015310 1.624065 -0.401704 +v -4.015310 1.604246 -0.391606 +v -4.064244 1.604246 -0.391606 +v -4.090733 1.674195 -0.303318 +v -4.090733 1.641671 -0.367150 +v -4.090733 1.621852 -0.357052 +v -4.090733 1.654376 -0.293219 +v -3.988821 1.654376 -0.293219 +v -3.988821 1.621852 -0.357052 +v -3.988820 1.641671 -0.367150 +v -3.988821 1.674195 -0.303318 +v -4.015309 1.691801 -0.268764 +v -4.015310 1.671982 -0.258666 +v -4.064243 1.671982 -0.258666 +v -4.064244 1.691801 -0.268764 +v -4.015310 2.365680 -0.068327 +v -4.064244 2.365680 -0.068327 +v -4.064244 2.365680 -0.046083 +v -4.015309 2.365680 -0.046084 +v -3.988821 2.255258 -0.068327 +v -3.988821 2.326899 -0.068327 +v -3.988821 2.326899 -0.046083 +v -3.988821 2.255258 -0.046084 +v -4.090733 2.255258 -0.046084 +v -4.090733 2.326899 -0.046083 +v -4.090733 2.326899 -0.068327 +v -4.090733 2.255258 -0.068327 +v -4.064244 2.216478 -0.068327 +v -4.064244 2.216478 -0.046083 +v -4.015309 2.216478 -0.046083 +v -4.015310 2.216478 -0.068327 +v -4.046802 2.291079 -0.068327 +v -4.046802 1.657933 -0.335234 +v -4.032751 1.657933 -0.335234 +v -4.032752 2.291079 -0.068327 +v -4.364244 1.624065 -0.401704 +v -4.315310 1.624065 -0.401704 +v -4.315310 1.604246 -0.391606 +v -4.364244 1.604246 -0.391606 +v -4.390733 1.674195 -0.303318 +v -4.390733 1.641671 -0.367150 +v -4.390733 1.621852 -0.357052 +v -4.390733 1.654376 -0.293219 +v -4.288821 1.654376 -0.293219 +v -4.288821 1.621852 -0.357052 +v -4.288821 1.641671 -0.367150 +v -4.288821 1.674195 -0.303318 +v -4.315310 1.691801 -0.268764 +v -4.315310 1.671982 -0.258666 +v -4.364244 1.671982 -0.258666 +v -4.364244 1.691801 -0.268764 +v -4.315310 2.365680 -0.068327 +v -4.364244 2.365680 -0.068327 +v -4.364244 2.365680 -0.046083 +v -4.315310 2.365680 -0.046084 +v -4.288821 2.255258 -0.068327 +v -4.288821 2.326899 -0.068327 +v -4.288821 2.326899 -0.046083 +v -4.288821 2.255258 -0.046083 +v -4.390733 2.255258 -0.046083 +v -4.390733 2.326899 -0.046083 +v -4.390733 2.326899 -0.068327 +v -4.390734 2.255258 -0.068327 +v -4.364244 2.216477 -0.068327 +v -4.364244 2.216478 -0.046083 +v -4.315310 2.216478 -0.046083 +v -4.315310 2.216477 -0.068327 +v -4.346802 2.291079 -0.068327 +v -4.332752 2.291079 -0.068327 +v -4.332752 1.657933 -0.335234 +v -4.346802 1.657933 -0.335234 +v -5.204793 2.553267 0.054916 +v -5.204793 1.948851 0.054916 +v -5.007714 1.696526 0.054916 +v -4.801618 1.696526 0.054916 +v -4.801618 1.993642 0.054916 +v -4.511972 1.993641 0.054916 +v -4.511972 1.696526 0.054916 +v -3.522396 1.696526 0.054916 +v -3.522397 2.356017 0.054916 +v -3.580169 2.495494 0.054916 +v -3.719646 2.553267 0.054916 +v -3.522396 1.696526 -0.054916 +v -3.522396 2.356017 -0.054916 +v -3.719646 2.553267 -0.054916 +v -3.580169 2.495494 -0.054916 +v -5.204792 2.553267 -0.054916 +v -5.204793 1.948851 -0.054916 +v -4.511971 1.696526 -0.054916 +v -4.511972 1.993642 -0.054916 +v -4.801618 1.993641 -0.054916 +v -5.007713 1.696526 -0.054916 +v -4.801618 1.696526 -0.054916 +v -2.620651 1.578781 -0.635644 +v -2.855374 1.570747 -0.643818 +v -2.857096 1.618464 -0.618870 +v -2.621962 1.615098 -0.616657 +v -2.855011 1.643442 -0.571184 +v -2.620375 1.634108 -0.580363 +v -2.849679 1.638988 -0.513535 +v -2.616317 1.630718 -0.536488 +v -2.843465 1.611886 -0.466963 +v -2.611883 1.611857 -0.502809 +v -2.563223 1.537561 -0.585249 +v -2.564442 1.548011 -0.589552 +v -2.566041 1.566218 -0.590966 +v -2.566585 1.581282 -0.583090 +v -2.565927 1.589168 -0.568035 +v -2.564244 1.587762 -0.549835 +v -2.562994 1.583461 -0.539387 +v -2.616795 1.534889 -0.632237 +v -2.850307 1.513076 -0.639342 +v -2.612434 1.501203 -0.613370 +v -2.585602 1.540616 -0.617930 +v -2.582372 1.515298 -0.604307 +v -2.588645 1.575259 -0.620619 +v -2.589679 1.603922 -0.605633 +v -2.588427 1.618926 -0.576988 +v -2.585224 1.616250 -0.542359 +v -2.581937 1.602633 -0.517045 +v -2.844189 1.466496 -0.612232 +v -2.897730 1.469698 -0.600068 +v -2.903115 1.510860 -0.623781 +v -2.919075 1.499452 -0.566742 +v -2.921404 1.518007 -0.576286 +v -2.907656 1.562540 -0.627793 +v -2.923749 1.544699 -0.578358 +v -2.909199 1.605301 -0.605436 +v -2.924546 1.566785 -0.566811 +v -2.907331 1.627685 -0.562703 +v -2.923581 1.578345 -0.544740 +v -2.902553 1.623693 -0.511042 +v -2.921113 1.576284 -0.518058 +v -2.897081 1.599987 -0.469888 +v -2.918740 1.566743 -0.499506 +v -2.620680 0.362780 -0.576979 +v -2.855411 0.354758 -0.569034 +v -2.857095 0.379520 -0.616850 +v -2.621962 0.381625 -0.613370 +v -2.854974 0.427107 -0.642012 +v -2.620347 0.417844 -0.632521 +v -2.849615 0.484770 -0.637781 +v -2.616268 0.461729 -0.629301 +v -2.843390 0.531445 -0.610858 +v -2.611826 0.495480 -0.610569 +v -2.563247 0.413306 -0.535926 +v -2.564463 0.408962 -0.546360 +v -2.566054 0.407479 -0.564562 +v -2.566586 0.415296 -0.579657 +v -2.565916 0.430320 -0.587602 +v -2.564224 0.448524 -0.586266 +v -2.562971 0.458988 -0.582005 +v -2.616845 0.366356 -0.533098 +v -2.850372 0.359457 -0.511379 +v -2.612492 0.385353 -0.499484 +v -2.585641 0.380625 -0.538865 +v -2.582418 0.394345 -0.513599 +v -2.588668 0.377802 -0.573498 +v -2.589680 0.392677 -0.602221 +v -2.588405 0.421262 -0.617336 +v -2.585186 0.455900 -0.614794 +v -2.581892 0.481265 -0.601274 +v -2.844264 0.386746 -0.464902 +v -2.897797 0.398925 -0.468179 +v -2.903173 0.375053 -0.509250 +v -2.919109 0.432145 -0.498074 +v -2.921433 0.422530 -0.516593 +v -2.907689 0.370842 -0.560917 +v -2.923766 0.420355 -0.543278 +v -2.909198 0.393032 -0.603766 +v -2.924546 0.431815 -0.565409 +v -2.907297 0.435677 -0.626315 +v -2.923563 0.453841 -0.577055 +v -2.902494 0.487350 -0.622523 +v -2.921083 0.480529 -0.575096 +v -2.897013 0.528594 -0.598975 +v -2.918705 0.499117 -0.565627 +v -2.620900 0.420081 0.634087 +v -2.855697 0.427027 0.641053 +v -2.857063 0.379093 0.616503 +v -2.621940 0.383600 0.615402 +v -2.854623 0.353723 0.569040 +v -2.620083 0.364291 0.579279 +v -2.849031 0.357716 0.511382 +v -2.615827 0.367330 0.535397 +v -2.842721 0.384454 0.464613 +v -2.611320 0.385928 0.501580 +v -2.563428 0.461157 0.583624 +v -2.564617 0.450738 0.588009 +v -2.566134 0.432536 0.589569 +v -2.566566 0.417403 0.581818 +v -2.565795 0.409394 0.566834 +v -2.564030 0.410654 0.548631 +v -2.562750 0.414872 0.538154 +v -2.617242 0.463962 0.630327 +v -2.850890 0.484682 0.636113 +v -2.612954 0.497508 0.611196 +v -2.585951 0.458268 0.616220 +v -2.582779 0.483486 0.602399 +v -2.588838 0.423635 0.619187 +v -2.589659 0.394841 0.604440 +v -2.588193 0.379602 0.575930 +v -2.584834 0.382001 0.541295 +v -2.581490 0.395420 0.515883 +v -2.844868 0.531061 0.608639 +v -2.898332 0.527492 0.596243 +v -2.903632 0.486507 0.620278 +v -2.919367 0.497353 0.563067 +v -2.921652 0.478868 0.572757 +v -2.907938 0.434840 0.624705 +v -2.923877 0.452183 0.575043 +v -2.909163 0.391885 0.602705 +v -2.924509 0.429997 0.563680 +v -2.906977 0.369150 0.560172 +v -2.923380 0.418255 0.541713 +v -2.901966 0.372729 0.508503 +v -2.920792 0.420104 0.515027 +v -2.896408 0.396113 0.467176 +v -2.918374 0.429498 0.496407 +v -0.694283 1.367351 -0.956906 +v -0.694283 1.558230 -0.859648 +v -0.643300 1.583064 -0.908389 +v -0.643300 1.392185 -1.005646 +v 1.243842 1.367351 0.956906 +v -0.694283 1.367351 0.956906 +v 1.243842 1.558230 0.859648 +v -0.694283 1.558230 0.859648 +v -0.643300 1.583064 0.908389 +v 1.192858 1.583065 0.908389 +v 1.243842 1.558230 -0.859648 +v 1.243842 1.367351 -0.956906 +v -0.643300 1.392185 1.005647 +v 1.192858 1.392185 1.005646 +v 1.192858 1.583065 -0.908389 +v 1.192858 1.392185 -1.005646 +v -3.764244 0.340080 0.339605 +v -3.764243 0.358734 0.327490 +v -3.715309 0.358734 0.327490 +v -3.715310 0.340080 0.339605 +v -3.790732 0.400219 0.432213 +v -3.790732 0.418874 0.420099 +v -3.790732 0.379856 0.360015 +v -3.790732 0.361201 0.372129 +v -3.688820 0.418874 0.420099 +v -3.688820 0.400219 0.432213 +v -3.688820 0.361201 0.372129 +v -3.688820 0.379856 0.360015 +v -3.715309 0.421341 0.464737 +v -3.715309 0.439995 0.452622 +v -3.764243 0.439995 0.452622 +v -3.764243 0.421341 0.464737 +v -3.715309 0.257985 1.148551 +v -3.715309 0.277248 1.159673 +v -3.764244 0.277248 1.159673 +v -3.764243 0.257985 1.148551 +v -3.688820 0.313196 1.052923 +v -3.688820 0.332459 1.064044 +v -3.688820 0.296639 1.126087 +v -3.688820 0.277376 1.114966 +v -3.790732 0.332460 1.064045 +v -3.790732 0.313196 1.052923 +v -3.790732 0.277376 1.114966 +v -3.790732 0.296639 1.126087 +v -3.764243 0.332586 1.019338 +v -3.764244 0.351849 1.030460 +v -3.715309 0.351849 1.030460 +v -3.715309 0.332586 1.019338 +v -3.746801 0.295286 1.083945 +v -3.732751 0.295286 1.083945 +v -3.732750 0.380710 0.402171 +v -3.746801 0.380710 0.402171 +v -4.064243 0.340080 0.339605 +v -4.064243 0.358734 0.327490 +v -4.015309 0.358734 0.327490 +v -4.015309 0.340080 0.339605 +v -4.090732 0.400219 0.432213 +v -4.090733 0.418874 0.420099 +v -4.090732 0.379856 0.360015 +v -4.090732 0.361201 0.372129 +v -3.988820 0.418875 0.420098 +v -3.988820 0.400219 0.432213 +v -3.988820 0.361201 0.372129 +v -3.988820 0.379856 0.360015 +v -4.015309 0.421341 0.464737 +v -4.015309 0.439995 0.452622 +v -4.064243 0.439996 0.452622 +v -4.064243 0.421341 0.464737 +v -4.015309 0.257985 1.148551 +v -4.015309 0.277249 1.159673 +v -4.064244 0.277248 1.159673 +v -4.064244 0.257985 1.148551 +v -3.988821 0.313196 1.052923 +v -3.988821 0.332459 1.064044 +v -3.988821 0.296639 1.126087 +v -3.988820 0.277376 1.114966 +v -4.090732 0.332459 1.064044 +v -4.090732 0.313196 1.052923 +v -4.090732 0.277376 1.114966 +v -4.090732 0.296639 1.126087 +v -4.064244 0.332586 1.019338 +v -4.064244 0.351849 1.030460 +v -4.015309 0.351849 1.030460 +v -4.015309 0.332586 1.019338 +v -4.046802 0.295286 1.083945 +v -4.032752 0.295286 1.083945 +v -4.032751 0.380710 0.402171 +v -4.046801 0.380710 0.402171 +v -4.364244 0.340080 0.339605 +v -4.364244 0.358734 0.327490 +v -4.315310 0.358734 0.327490 +v -4.315310 0.340080 0.339605 +v -4.390733 0.400219 0.432212 +v -4.390733 0.418875 0.420098 +v -4.390733 0.379856 0.360015 +v -4.390733 0.361201 0.372129 +v -4.288821 0.418875 0.420098 +v -4.288821 0.400219 0.432212 +v -4.288821 0.361201 0.372129 +v -4.288821 0.379856 0.360015 +v -4.315310 0.421341 0.464736 +v -4.315310 0.439996 0.452622 +v -4.364244 0.439996 0.452622 +v -4.364243 0.421341 0.464736 +v -4.315309 0.257985 1.148551 +v -4.315310 0.277248 1.159673 +v -4.364244 0.277248 1.159673 +v -4.364244 0.257985 1.148551 +v -4.288821 0.313196 1.052923 +v -4.288821 0.332459 1.064044 +v -4.288821 0.296639 1.126087 +v -4.288821 0.277376 1.114966 +v -4.390733 0.332460 1.064045 +v -4.390733 0.313196 1.052923 +v -4.390733 0.277376 1.114966 +v -4.390733 0.296639 1.126087 +v -4.364244 0.332586 1.019338 +v -4.364244 0.351850 1.030459 +v -4.315310 0.351850 1.030460 +v -4.315309 0.332586 1.019338 +v -4.346802 0.295286 1.083945 +v -4.346802 0.380710 0.402171 +v -4.332751 0.380710 0.402171 +v -4.332752 0.295286 1.083945 +v -3.764244 1.035851 0.741309 +v -3.715309 1.035851 0.741309 +v -3.715309 1.037016 0.719097 +v -3.764244 1.037016 0.719097 +v -3.790732 0.925581 0.735531 +v -3.790732 0.997124 0.739279 +v -3.790732 0.998288 0.717067 +v -3.790732 0.926745 0.713318 +v -3.688820 0.926745 0.713318 +v -3.688820 0.998288 0.717067 +v -3.688821 0.997124 0.739279 +v -3.688820 0.925581 0.735531 +v -3.715309 0.886853 0.733501 +v -3.715309 0.888018 0.711288 +v -3.764244 0.888018 0.711288 +v -3.764244 0.886854 0.733500 +v -3.715310 0.376331 1.216878 +v -3.764244 0.376331 1.216878 +v -3.764244 0.357067 1.205756 +v -3.715310 0.357067 1.205756 +v -3.688821 0.431542 1.121250 +v -3.688821 0.395721 1.183293 +v -3.688821 0.376458 1.172171 +v -3.688821 0.412279 1.110128 +v -3.790733 0.412278 1.110128 +v -3.790732 0.376458 1.172171 +v -3.790733 0.395721 1.183293 +v -3.790732 0.431542 1.121250 +v -3.764244 0.450932 1.087665 +v -3.764244 0.431668 1.076543 +v -3.715310 0.431668 1.076543 +v -3.715310 0.450932 1.087665 +v -3.746802 0.413631 1.152272 +v -3.732752 0.413631 1.152272 +v -3.732751 0.961353 0.737405 +v -3.746801 0.961353 0.737405 +v -4.064244 1.035851 0.741309 +v -4.015310 1.035851 0.741309 +v -4.015310 1.037016 0.719097 +v -4.064244 1.037016 0.719097 +v -4.090733 0.925582 0.735530 +v -4.090733 0.997124 0.739279 +v -4.090733 0.998288 0.717067 +v -4.090733 0.926745 0.713317 +v -3.988821 0.926745 0.713317 +v -3.988821 0.998288 0.717067 +v -3.988820 0.997124 0.739279 +v -3.988821 0.925582 0.735530 +v -4.015309 0.886854 0.733500 +v -4.015310 0.888018 0.711288 +v -4.064243 0.888018 0.711288 +v -4.064244 0.886854 0.733500 +v -4.015310 0.376331 1.216878 +v -4.064244 0.376331 1.216878 +v -4.064244 0.357067 1.205756 +v -4.015309 0.357068 1.205757 +v -3.988821 0.431542 1.121250 +v -3.988821 0.395721 1.183293 +v -3.988821 0.376458 1.172171 +v -3.988821 0.412279 1.110128 +v -4.090733 0.412279 1.110128 +v -4.090733 0.376458 1.172171 +v -4.090733 0.395721 1.183293 +v -4.090733 0.431542 1.121250 +v -4.064244 0.450932 1.087665 +v -4.064244 0.431668 1.076543 +v -4.015309 0.431668 1.076543 +v -4.015310 0.450932 1.087665 +v -4.046802 0.413631 1.152272 +v -4.046802 0.961353 0.737405 +v -4.032751 0.961353 0.737405 +v -4.032752 0.413631 1.152272 +v -4.364244 1.035851 0.741309 +v -4.315310 1.035851 0.741309 +v -4.315310 1.037016 0.719097 +v -4.364244 1.037016 0.719097 +v -4.390733 0.925582 0.735530 +v -4.390733 0.997124 0.739279 +v -4.390733 0.998288 0.717067 +v -4.390733 0.926745 0.713317 +v -4.288821 0.926745 0.713317 +v -4.288821 0.998288 0.717067 +v -4.288821 0.997124 0.739279 +v -4.288821 0.925582 0.735530 +v -4.315310 0.886854 0.733500 +v -4.315310 0.888018 0.711288 +v -4.364244 0.888018 0.711288 +v -4.364244 0.886854 0.733500 +v -4.315310 0.376331 1.216878 +v -4.364244 0.376331 1.216878 +v -4.364244 0.357067 1.205756 +v -4.315310 0.357068 1.205757 +v -4.288821 0.431542 1.121250 +v -4.288821 0.395721 1.183293 +v -4.288821 0.376458 1.172171 +v -4.288821 0.412278 1.110128 +v -4.390733 0.412278 1.110128 +v -4.390733 0.376458 1.172171 +v -4.390733 0.395721 1.183293 +v -4.390734 0.431542 1.121250 +v -4.364244 0.450932 1.087664 +v -4.364244 0.431668 1.076543 +v -4.315310 0.431668 1.076543 +v -4.315310 0.450932 1.087664 +v -4.346802 0.413631 1.152272 +v -4.332752 0.413631 1.152272 +v -4.332752 0.961353 0.737405 +v -4.346802 0.961353 0.737405 +v -5.204793 0.175806 1.317712 +v -5.204793 0.478014 0.794272 +v -5.007714 0.604176 0.575752 +v -4.801618 0.604176 0.575752 +v -4.801618 0.455618 0.833062 +v -4.511972 0.455619 0.833061 +v -4.511972 0.604176 0.575752 +v -3.522396 0.604176 0.575752 +v -3.522397 0.274431 1.146888 +v -3.580169 0.204692 1.267679 +v -3.719646 0.175806 1.317712 +v -3.522396 0.699294 0.630668 +v -3.522396 0.369548 1.201804 +v -3.719646 0.270923 1.372628 +v -3.580169 0.299810 1.322595 +v -5.204792 0.270923 1.372628 +v -5.204793 0.573131 0.849188 +v -4.511971 0.699294 0.630668 +v -4.511972 0.550736 0.887978 +v -4.801618 0.550736 0.887977 +v -5.007713 0.699294 0.630668 +v -4.801618 0.699294 0.630668 +v -3.764244 1.035852 -0.741309 +v -3.764243 1.037016 -0.719097 +v -3.715309 1.037016 -0.719097 +v -3.715310 1.035852 -0.741309 +v -3.790732 0.925581 -0.735531 +v -3.790732 0.926745 -0.713318 +v -3.790732 0.998288 -0.717067 +v -3.790732 0.997124 -0.739280 +v -3.688820 0.926745 -0.713318 +v -3.688820 0.925581 -0.735531 +v -3.688820 0.997124 -0.739280 +v -3.688820 0.998288 -0.717067 +v -3.715309 0.886854 -0.733501 +v -3.715309 0.888018 -0.711288 +v -3.764243 0.888018 -0.711288 +v -3.764243 0.886854 -0.733501 +v -3.715309 0.376331 -1.216878 +v -3.715309 0.357068 -1.205757 +v -3.764244 0.357068 -1.205757 +v -3.764243 0.376331 -1.216878 +v -3.688820 0.431542 -1.121250 +v -3.688820 0.412279 -1.110128 +v -3.688820 0.376459 -1.172171 +v -3.688820 0.395722 -1.183293 +v -3.790732 0.412278 -1.110128 +v -3.790732 0.431542 -1.121250 +v -3.790732 0.395722 -1.183293 +v -3.790732 0.376459 -1.172171 +v -3.764243 0.450932 -1.087665 +v -3.764244 0.431669 -1.076544 +v -3.715309 0.431669 -1.076544 +v -3.715309 0.450932 -1.087665 +v -3.746801 0.413632 -1.152272 +v -3.732751 0.413632 -1.152272 +v -3.732750 0.961353 -0.737405 +v -3.746801 0.961353 -0.737405 +v -4.064243 1.035852 -0.741309 +v -4.064243 1.037016 -0.719097 +v -4.015309 1.037016 -0.719097 +v -4.015309 1.035852 -0.741309 +v -4.090732 0.925581 -0.735531 +v -4.090733 0.926745 -0.713318 +v -4.090732 0.998288 -0.717067 +v -4.090732 0.997124 -0.739280 +v -3.988820 0.926745 -0.713317 +v -3.988820 0.925581 -0.735531 +v -3.988820 0.997124 -0.739280 +v -3.988820 0.998288 -0.717067 +v -4.015309 0.886854 -0.733501 +v -4.015309 0.888018 -0.711288 +v -4.064243 0.888019 -0.711288 +v -4.064243 0.886854 -0.733501 +v -4.015309 0.376331 -1.216878 +v -4.015309 0.357067 -1.205756 +v -4.064244 0.357068 -1.205757 +v -4.064244 0.376331 -1.216878 +v -3.988821 0.431542 -1.121250 +v -3.988821 0.412279 -1.110128 +v -3.988821 0.376459 -1.172171 +v -3.988820 0.395722 -1.183293 +v -4.090732 0.412279 -1.110128 +v -4.090732 0.431542 -1.121250 +v -4.090732 0.395722 -1.183293 +v -4.090732 0.376459 -1.172171 +v -4.064244 0.450932 -1.087665 +v -4.064244 0.431669 -1.076544 +v -4.015309 0.431669 -1.076544 +v -4.015309 0.450932 -1.087665 +v -4.046802 0.413632 -1.152272 +v -4.032752 0.413632 -1.152272 +v -4.032751 0.961353 -0.737405 +v -4.046801 0.961353 -0.737405 +v -4.364244 1.035852 -0.741309 +v -4.364244 1.037016 -0.719097 +v -4.315310 1.037016 -0.719097 +v -4.315310 1.035852 -0.741309 +v -4.390733 0.925582 -0.735530 +v -4.390733 0.926745 -0.713317 +v -4.390733 0.998288 -0.717067 +v -4.390733 0.997124 -0.739280 +v -4.288821 0.926745 -0.713317 +v -4.288821 0.925582 -0.735530 +v -4.288821 0.997124 -0.739280 +v -4.288821 0.998288 -0.717067 +v -4.315310 0.886854 -0.733500 +v -4.315310 0.888019 -0.711288 +v -4.364244 0.888019 -0.711288 +v -4.364243 0.886854 -0.733500 +v -4.315309 0.376331 -1.216878 +v -4.315310 0.357068 -1.205757 +v -4.364244 0.357068 -1.205757 +v -4.364244 0.376331 -1.216878 +v -4.288821 0.431542 -1.121250 +v -4.288821 0.412279 -1.110128 +v -4.288821 0.376459 -1.172171 +v -4.288821 0.395722 -1.183293 +v -4.390733 0.412278 -1.110128 +v -4.390733 0.431542 -1.121250 +v -4.390733 0.395722 -1.183293 +v -4.390733 0.376459 -1.172171 +v -4.364244 0.450932 -1.087665 +v -4.364244 0.431670 -1.076543 +v -4.315310 0.431668 -1.076543 +v -4.315309 0.450932 -1.087665 +v -4.346802 0.413632 -1.152272 +v -4.346802 0.961353 -0.737405 +v -4.332751 0.961353 -0.737405 +v -4.332752 0.413632 -1.152272 +v -3.764244 0.340080 -0.339605 +v -3.715309 0.340080 -0.339605 +v -3.715309 0.358734 -0.327491 +v -3.764244 0.358734 -0.327491 +v -3.790732 0.400219 -0.432213 +v -3.790732 0.361202 -0.372129 +v -3.790732 0.379856 -0.360015 +v -3.790732 0.418875 -0.420099 +v -3.688820 0.418875 -0.420099 +v -3.688820 0.379856 -0.360015 +v -3.688821 0.361202 -0.372129 +v -3.688820 0.400219 -0.432213 +v -3.715309 0.421341 -0.464737 +v -3.715309 0.439996 -0.452622 +v -3.764244 0.439996 -0.452622 +v -3.764244 0.421341 -0.464736 +v -3.715310 0.257985 -1.148551 +v -3.764244 0.257985 -1.148551 +v -3.764244 0.277249 -1.159673 +v -3.715310 0.277249 -1.159673 +v -3.688821 0.313196 -1.052923 +v -3.688821 0.277376 -1.114966 +v -3.688821 0.296640 -1.126088 +v -3.688821 0.332459 -1.064044 +v -3.790733 0.332460 -1.064045 +v -3.790732 0.296640 -1.126088 +v -3.790733 0.277376 -1.114966 +v -3.790732 0.313196 -1.052923 +v -3.764244 0.332586 -1.019338 +v -3.764244 0.351850 -1.030460 +v -3.715310 0.351850 -1.030460 +v -3.715310 0.332586 -1.019338 +v -3.746802 0.295286 -1.083945 +v -3.732752 0.295286 -1.083945 +v -3.732751 0.380711 -0.402171 +v -3.746801 0.380711 -0.402171 +v -4.064244 0.340080 -0.339605 +v -4.015310 0.340080 -0.339605 +v -4.015310 0.358734 -0.327491 +v -4.064244 0.358734 -0.327491 +v -4.090733 0.400220 -0.432212 +v -4.090733 0.361202 -0.372129 +v -4.090733 0.379856 -0.360015 +v -4.090733 0.418875 -0.420098 +v -3.988821 0.418875 -0.420098 +v -3.988821 0.379856 -0.360015 +v -3.988820 0.361202 -0.372129 +v -3.988821 0.400220 -0.432212 +v -4.015309 0.421341 -0.464736 +v -4.015310 0.439996 -0.452622 +v -4.064243 0.439996 -0.452622 +v -4.064244 0.421341 -0.464736 +v -4.015310 0.257985 -1.148551 +v -4.064244 0.257985 -1.148551 +v -4.064244 0.277249 -1.159673 +v -4.015309 0.277248 -1.159673 +v -3.988821 0.313196 -1.052923 +v -3.988821 0.277376 -1.114966 +v -3.988821 0.296640 -1.126088 +v -3.988821 0.332459 -1.064044 +v -4.090733 0.332459 -1.064044 +v -4.090733 0.296640 -1.126088 +v -4.090733 0.277376 -1.114966 +v -4.090733 0.313196 -1.052923 +v -4.064244 0.332586 -1.019338 +v -4.064244 0.351850 -1.030460 +v -4.015309 0.351850 -1.030460 +v -4.015310 0.332586 -1.019338 +v -4.046802 0.295286 -1.083945 +v -4.046802 0.380711 -0.402171 +v -4.032751 0.380711 -0.402171 +v -4.032752 0.295286 -1.083945 +v -4.364244 0.340080 -0.339605 +v -4.315310 0.340080 -0.339605 +v -4.315310 0.358734 -0.327491 +v -4.364244 0.358734 -0.327491 +v -4.390733 0.400220 -0.432212 +v -4.390733 0.361202 -0.372129 +v -4.390733 0.379856 -0.360015 +v -4.390733 0.418875 -0.420098 +v -4.288821 0.418875 -0.420098 +v -4.288821 0.379856 -0.360015 +v -4.288821 0.361202 -0.372129 +v -4.288821 0.400220 -0.432212 +v -4.315310 0.421341 -0.464736 +v -4.315310 0.439996 -0.452622 +v -4.364244 0.439996 -0.452622 +v -4.364244 0.421341 -0.464736 +v -4.315310 0.257985 -1.148551 +v -4.364244 0.257985 -1.148551 +v -4.364244 0.277249 -1.159673 +v -4.315310 0.277248 -1.159673 +v -4.288821 0.313196 -1.052923 +v -4.288821 0.277376 -1.114966 +v -4.288821 0.296640 -1.126088 +v -4.288821 0.332460 -1.064045 +v -4.390733 0.332460 -1.064045 +v -4.390733 0.296640 -1.126088 +v -4.390733 0.277376 -1.114966 +v -4.390734 0.313196 -1.052923 +v -4.364244 0.332587 -1.019337 +v -4.364244 0.351850 -1.030460 +v -4.315310 0.351850 -1.030460 +v -4.315310 0.332587 -1.019337 +v -4.346802 0.295286 -1.083945 +v -4.332752 0.295286 -1.083945 +v -4.332752 0.380711 -0.402171 +v -4.346802 0.380711 -0.402171 +v -5.204793 0.270923 -1.372628 +v -5.204793 0.573131 -0.849188 +v -5.007714 0.699294 -0.630668 +v -4.801618 0.699294 -0.630668 +v -4.801618 0.550736 -0.887978 +v -4.511972 0.550736 -0.887978 +v -4.511972 0.699294 -0.630668 +v -3.522396 0.699294 -0.630668 +v -3.522397 0.369548 -1.201805 +v -3.580169 0.299810 -1.322595 +v -3.719646 0.270923 -1.372628 +v -3.522396 0.604176 -0.575752 +v -3.522396 0.274431 -1.146888 +v -3.719646 0.175806 -1.317712 +v -3.580169 0.204693 -1.267679 +v -5.204792 0.175806 -1.317712 +v -5.204793 0.478014 -0.794273 +v -4.511971 0.604176 -0.575752 +v -4.511972 0.455619 -0.833062 +v -4.801618 0.455619 -0.833062 +v -5.007713 0.604176 -0.575752 +v -4.801618 0.604176 -0.575752 +v -5.245664 1.555620 0.486839 +v -5.194486 1.615364 0.546583 +v -5.178945 1.615364 0.546583 +v -5.127767 1.555620 0.486839 +v -5.127767 1.486839 0.555621 +v -5.178945 1.546583 0.615365 +v -5.194487 1.546583 0.615365 +v -5.245664 1.486839 0.555621 +v -5.194486 1.569510 0.592438 +v -5.245664 1.509765 0.532693 +v -5.127767 1.509765 0.532693 +v -5.178945 1.569510 0.592438 +v -5.194486 1.544299 0.617649 +v -5.194487 1.427158 0.575487 +v -5.178945 1.427158 0.575487 +v -5.178945 1.544299 0.617649 +v -5.178945 1.617648 0.544300 +v -5.178945 1.575486 0.427159 +v -5.194486 1.575486 0.427159 +v -5.194486 1.617648 0.544300 +v -5.245664 1.532693 0.509766 +v -5.127767 1.532693 0.509766 +v -5.178945 1.592438 0.569510 +v -5.194486 1.592438 0.569510 +v -5.194487 1.489858 0.512786 +v -5.178945 1.489858 0.512786 +v -5.178945 1.512786 0.489859 +v -5.194487 1.512786 0.489859 +v -5.245664 1.470121 0.538903 +v -5.127767 1.470121 0.538903 +v -5.245664 1.515976 0.493049 +v -5.127767 1.515976 0.493049 +v -5.127767 1.493048 0.515976 +v -5.245664 1.493048 0.515976 +v -5.245664 1.538902 0.470121 +v -5.127767 1.538902 0.470121 +v -5.254691 1.541133 0.506453 +v -5.254690 1.506452 0.541134 +v -5.297078 1.525191 0.559874 +v -5.297078 1.559873 0.525192 +v -5.254690 1.579578 0.614261 +v -5.254690 1.614260 0.579579 +v -5.296170 1.560045 0.594727 +v -5.303239 1.542663 0.577345 +v -5.303239 1.577344 0.542664 +v -5.296170 1.594726 0.560045 +v -4.735427 1.561746 0.540243 +v -5.258313 1.594114 0.572178 +v -5.258313 1.572177 0.594115 +v -4.735427 1.540243 0.561746 +v -4.735427 1.515094 0.536598 +v -5.258312 1.524289 0.546226 +v -5.258312 1.546225 0.524289 +v -4.735427 1.536598 0.515095 +v -4.738048 1.557482 0.584722 +v -4.738048 1.492118 0.519358 +v -4.703030 1.514633 0.541873 +v -4.703030 1.537288 0.564528 +v -4.713286 1.551567 0.578807 +v -4.738048 1.519357 0.492119 +v -4.738048 1.584721 0.557482 +v -4.713286 1.578807 0.551568 +v -4.703029 1.564527 0.537288 +v -4.703030 1.541872 0.514633 +v -4.755419 1.545849 0.473066 +v -4.755419 1.579176 0.506393 +v -4.747920 1.593535 0.520752 +v -4.723568 1.600803 0.528020 +v -4.699216 1.593535 0.520752 +v -4.691718 1.579176 0.506393 +v -4.691718 1.545849 0.473066 +v -4.723568 1.550818 0.578005 +v -4.723568 1.528020 0.600803 +v -4.699217 1.520751 0.593535 +v -4.699216 1.543549 0.570737 +v -4.755419 1.523051 0.495865 +v -4.755419 1.556378 0.529191 +v -4.691718 1.495864 0.523051 +v -4.691718 1.529191 0.556379 +v -4.691718 1.506393 0.579177 +v -4.691718 1.473065 0.545850 +v -4.723568 1.578005 0.550818 +v -4.747920 1.570737 0.543550 +v -4.755419 1.529191 0.556379 +v -4.755419 1.506393 0.579177 +v -4.747920 1.520751 0.593535 +v -4.747920 1.543549 0.570737 +v -4.691718 1.556378 0.529191 +v -4.699217 1.570737 0.543550 +v -4.755419 1.473065 0.545850 +v -4.691718 1.523051 0.495865 +v -4.755418 1.495864 0.523051 +v -5.245664 1.237761 0.699426 +v -5.194486 1.259629 0.781038 +v -5.178945 1.259629 0.781038 +v -5.127767 1.237761 0.699426 +v -5.127767 1.143804 0.724602 +v -5.178945 1.165672 0.806214 +v -5.194487 1.165672 0.806214 +v -5.245664 1.143804 0.724602 +v -5.194486 1.196991 0.797822 +v -5.245664 1.175123 0.716209 +v -5.127767 1.175123 0.716209 +v -5.178945 1.196991 0.797822 +v -5.194486 1.162552 0.807050 +v -5.194487 1.082186 0.711966 +v -5.178945 1.082186 0.711966 +v -5.178945 1.162552 0.807050 +v -5.178945 1.262748 0.780202 +v -5.178945 1.284806 0.657674 +v -5.194486 1.284806 0.657674 +v -5.194486 1.262748 0.780202 +v -5.245664 1.206442 0.707818 +v -5.127767 1.206442 0.707818 +v -5.178945 1.228311 0.789430 +v -5.194486 1.228311 0.789430 +v -5.194487 1.167837 0.689015 +v -5.178945 1.167837 0.689015 +v -5.178945 1.199156 0.680624 +v -5.194487 1.199156 0.680624 +v -5.245664 1.137685 0.701765 +v -5.127767 1.137685 0.701765 +v -5.245664 1.200324 0.684981 +v -5.127767 1.200324 0.684981 +v -5.127767 1.169004 0.693373 +v -5.245664 1.169004 0.693373 +v -5.245664 1.231642 0.676589 +v -5.127767 1.231642 0.676589 +v -5.254691 1.215409 0.709169 +v -5.254690 1.168033 0.721863 +v -5.297078 1.174892 0.747461 +v -5.297078 1.222268 0.734766 +v -5.254690 1.194798 0.821755 +v -5.254690 1.242175 0.809061 +v -5.296170 1.187649 0.795072 +v -5.303239 1.181287 0.771328 +v -5.303239 1.228663 0.758634 +v -5.296170 1.235025 0.782377 +v -4.735427 1.216364 0.748737 +v -5.258313 1.228428 0.792579 +v -5.258313 1.198462 0.800608 +v -4.735427 1.186990 0.756609 +v -4.735427 1.177785 0.722255 +v -5.258312 1.180934 0.735191 +v -5.258312 1.210900 0.727160 +v -4.735427 1.207160 0.714385 +v -4.738048 1.190432 0.785125 +v -4.738048 1.166507 0.695837 +v -4.703030 1.174749 0.726592 +v -4.703030 1.183041 0.757540 +v -4.713286 1.188267 0.777046 +v -4.738048 1.203717 0.685867 +v -4.738048 1.227642 0.775155 +v -4.713286 1.225477 0.767076 +v -4.703029 1.220250 0.747570 +v -4.703030 1.211958 0.716622 +v -4.755419 1.236186 0.682612 +v -4.755419 1.248384 0.728138 +v -4.747920 1.253640 0.747753 +v -4.723568 1.256300 0.757681 +v -4.699216 1.253640 0.747753 +v -4.691718 1.248384 0.728138 +v -4.691718 1.236186 0.682612 +v -4.723568 1.188019 0.775977 +v -4.723568 1.156877 0.784321 +v -4.699217 1.154216 0.774393 +v -4.699216 1.185358 0.766048 +v -4.755419 1.205043 0.690957 +v -4.755419 1.217242 0.736483 +v -4.691718 1.167905 0.700908 +v -4.691718 1.180103 0.746434 +v -4.691718 1.148961 0.754779 +v -4.691718 1.136761 0.709253 +v -4.723568 1.225158 0.766025 +v -4.747920 1.222498 0.756097 +v -4.755419 1.180103 0.746434 +v -4.755419 1.148961 0.754779 +v -4.747920 1.154216 0.774393 +v -4.747920 1.185358 0.766048 +v -4.691718 1.217242 0.736483 +v -4.699217 1.222498 0.756097 +v -4.755419 1.136761 0.709253 +v -4.691718 1.205043 0.690957 +v -4.755418 1.167905 0.700908 +v -5.245664 0.856194 0.724602 +v -5.194486 0.834327 0.806214 +v -5.178945 0.834327 0.806214 +v -5.127767 0.856194 0.724602 +v -5.127767 0.762237 0.699426 +v -5.178945 0.740369 0.781038 +v -5.194487 0.740369 0.781038 +v -5.245664 0.762237 0.699426 +v -5.194486 0.771688 0.789430 +v -5.245664 0.793556 0.707818 +v -5.127767 0.793556 0.707818 +v -5.178945 0.771688 0.789430 +v -5.194486 0.737249 0.780203 +v -5.194487 0.715192 0.657674 +v -5.178945 0.715192 0.657674 +v -5.178945 0.737249 0.780203 +v -5.178945 0.837446 0.807050 +v -5.178945 0.917811 0.711966 +v -5.194486 0.917811 0.711966 +v -5.194486 0.837446 0.807050 +v -5.245664 0.824875 0.716210 +v -5.127767 0.824875 0.716210 +v -5.178945 0.803008 0.797822 +v -5.194486 0.803008 0.797822 +v -5.194487 0.800843 0.680624 +v -5.178945 0.800843 0.680624 +v -5.178945 0.832162 0.689016 +v -5.194487 0.832162 0.689016 +v -5.245664 0.768356 0.676590 +v -5.127767 0.768356 0.676590 +v -5.245664 0.830994 0.693374 +v -5.127767 0.830994 0.693374 +v -5.127767 0.799675 0.684981 +v -5.245664 0.799675 0.684981 +v -5.245664 0.862314 0.701765 +v -5.127767 0.862314 0.701765 +v -5.254691 0.831965 0.721863 +v -5.254690 0.784589 0.709169 +v -5.297078 0.777730 0.734767 +v -5.297078 0.825106 0.747461 +v -5.254690 0.757823 0.809060 +v -5.254690 0.805199 0.821755 +v -5.296170 0.764973 0.782378 +v -5.303239 0.771335 0.758634 +v -5.303239 0.818710 0.771328 +v -5.296170 0.812349 0.795072 +v -4.735427 0.813008 0.756608 +v -5.258313 0.801535 0.800608 +v -5.258313 0.771569 0.792579 +v -4.735427 0.783634 0.748738 +v -4.735427 0.792839 0.714384 +v -5.258312 0.789098 0.727162 +v -5.258312 0.819065 0.735190 +v -4.735427 0.822213 0.722256 +v -4.738048 0.772356 0.775155 +v -4.738048 0.796281 0.685867 +v -4.703030 0.788040 0.716622 +v -4.703030 0.779748 0.747570 +v -4.713286 0.774521 0.767076 +v -4.738048 0.833491 0.695837 +v -4.738048 0.809566 0.785126 +v -4.713286 0.811731 0.777046 +v -4.703029 0.816957 0.757540 +v -4.703030 0.825250 0.726593 +v -4.755419 0.863237 0.709253 +v -4.755419 0.851038 0.754779 +v -4.747920 0.845782 0.774394 +v -4.723568 0.843122 0.784322 +v -4.699216 0.845782 0.774394 +v -4.691718 0.851038 0.754779 +v -4.691718 0.863237 0.709253 +v -4.723568 0.774841 0.766026 +v -4.723568 0.743698 0.757681 +v -4.699217 0.746358 0.747753 +v -4.699216 0.777501 0.756097 +v -4.755419 0.832093 0.700908 +v -4.755419 0.819895 0.746434 +v -4.691718 0.794956 0.690957 +v -4.691718 0.782757 0.736483 +v -4.691718 0.751614 0.728139 +v -4.691718 0.763812 0.682613 +v -4.723568 0.811980 0.775977 +v -4.747920 0.814640 0.766049 +v -4.755419 0.782757 0.736483 +v -4.755419 0.751614 0.728139 +v -4.747920 0.746358 0.747753 +v -4.747920 0.777501 0.756097 +v -4.691718 0.819895 0.746434 +v -4.699217 0.814640 0.766049 +v -4.755419 0.763812 0.682613 +v -4.691718 0.832093 0.700908 +v -4.755418 0.794956 0.690957 +v -5.245664 0.513160 0.555621 +v -5.194486 0.453416 0.615365 +v -5.178945 0.453416 0.615365 +v -5.127767 0.513160 0.555621 +v -5.127767 0.444378 0.486840 +v -5.178945 0.384634 0.546584 +v -5.194487 0.384634 0.546584 +v -5.245664 0.444378 0.486840 +v -5.194486 0.407561 0.569511 +v -5.245664 0.467305 0.509767 +v -5.127767 0.467305 0.509767 +v -5.178945 0.407561 0.569511 +v -5.194486 0.382350 0.544301 +v -5.194487 0.424512 0.427159 +v -5.178945 0.424512 0.427159 +v -5.178945 0.382350 0.544301 +v -5.178945 0.455699 0.617649 +v -5.178945 0.572839 0.575487 +v -5.194486 0.572839 0.575487 +v -5.194486 0.455699 0.617649 +v -5.245664 0.490232 0.532694 +v -5.127767 0.490232 0.532694 +v -5.178945 0.430488 0.592439 +v -5.194486 0.430488 0.592439 +v -5.194487 0.487213 0.489860 +v -5.178945 0.487213 0.489860 +v -5.178945 0.510140 0.512787 +v -5.194487 0.510140 0.512787 +v -5.245664 0.461096 0.470123 +v -5.127767 0.461096 0.470123 +v -5.245664 0.506950 0.515977 +v -5.127767 0.506950 0.515977 +v -5.127767 0.484023 0.493049 +v -5.245664 0.484023 0.493049 +v -5.245664 0.529878 0.538904 +v -5.127767 0.529878 0.538904 +v -5.254691 0.493546 0.541135 +v -5.254690 0.458864 0.506454 +v -5.297078 0.440125 0.525192 +v -5.297078 0.474807 0.559874 +v -5.254690 0.385738 0.579579 +v -5.254690 0.420420 0.614261 +v -5.296170 0.405272 0.560046 +v -5.303239 0.422653 0.542664 +v -5.303239 0.457334 0.577346 +v -5.296170 0.439954 0.594727 +v -4.735427 0.459756 0.561747 +v -5.258313 0.427820 0.594115 +v -5.258313 0.405884 0.572178 +v -4.735427 0.438252 0.540244 +v -4.735427 0.463401 0.515095 +v -5.258312 0.453773 0.524290 +v -5.258312 0.475710 0.546226 +v -4.735427 0.484904 0.536599 +v -4.738048 0.415277 0.557483 +v -4.738048 0.480641 0.492119 +v -4.703030 0.458126 0.514634 +v -4.703030 0.435471 0.537289 +v -4.713286 0.421191 0.551568 +v -4.738048 0.507880 0.519359 +v -4.738048 0.442516 0.584722 +v -4.713286 0.448431 0.578808 +v -4.703029 0.462710 0.564528 +v -4.703030 0.485366 0.541873 +v -4.755419 0.526933 0.545850 +v -4.755419 0.493605 0.579177 +v -4.747920 0.479246 0.593536 +v -4.723568 0.471979 0.600804 +v -4.699216 0.479246 0.593536 +v -4.691718 0.493605 0.579177 +v -4.691718 0.526933 0.545850 +v -4.723568 0.421993 0.550819 +v -4.723568 0.399196 0.528021 +v -4.699217 0.406463 0.520752 +v -4.699216 0.429261 0.543550 +v -4.755419 0.504134 0.523052 +v -4.755419 0.470807 0.556379 +v -4.691718 0.476948 0.495865 +v -4.691718 0.443620 0.529192 +v -4.691718 0.420822 0.506394 +v -4.691718 0.454149 0.473067 +v -4.723568 0.449181 0.578006 +v -4.747920 0.456449 0.570738 +v -4.755419 0.443620 0.529192 +v -4.755419 0.420822 0.506394 +v -4.747920 0.406463 0.520752 +v -4.747920 0.429261 0.543550 +v -4.691718 0.470807 0.556379 +v -4.699217 0.456449 0.570738 +v -4.755419 0.454149 0.473067 +v -4.691718 0.504134 0.523052 +v -4.755418 0.476948 0.495865 +v -5.245664 0.300573 0.237762 +v -5.194486 0.218961 0.259631 +v -5.178945 0.218961 0.259631 +v -5.127767 0.300573 0.237762 +v -5.127767 0.275397 0.143805 +v -5.178945 0.193785 0.165673 +v -5.194487 0.193785 0.165673 +v -5.245664 0.275397 0.143805 +v -5.194486 0.202177 0.196992 +v -5.245664 0.283789 0.175124 +v -5.127767 0.283789 0.175124 +v -5.178945 0.202177 0.196992 +v -5.194486 0.192949 0.162554 +v -5.194487 0.288033 0.082188 +v -5.178945 0.288033 0.082188 +v -5.178945 0.192949 0.162554 +v -5.178945 0.219797 0.262750 +v -5.178945 0.342324 0.284807 +v -5.194486 0.342324 0.284807 +v -5.194486 0.219797 0.262750 +v -5.245664 0.292181 0.206444 +v -5.127767 0.292181 0.206444 +v -5.178945 0.210569 0.228312 +v -5.194486 0.210569 0.228312 +v -5.194487 0.310983 0.167838 +v -5.178945 0.310983 0.167838 +v -5.178945 0.319375 0.199157 +v -5.194487 0.319375 0.199157 +v -5.245664 0.298234 0.137686 +v -5.127767 0.298234 0.137686 +v -5.245664 0.315018 0.200325 +v -5.127767 0.315018 0.200325 +v -5.127767 0.306626 0.169005 +v -5.245664 0.306626 0.169005 +v -5.245664 0.323410 0.231644 +v -5.127767 0.323410 0.231644 +v -5.254691 0.290830 0.215410 +v -5.254690 0.278136 0.168035 +v -5.297078 0.252538 0.174893 +v -5.297078 0.265232 0.222269 +v -5.254690 0.178244 0.194800 +v -5.254690 0.190938 0.242176 +v -5.296170 0.204927 0.187651 +v -5.303239 0.228671 0.181288 +v -5.303239 0.241365 0.228664 +v -5.296170 0.217622 0.235027 +v -4.735427 0.251261 0.216366 +v -5.258313 0.207420 0.228430 +v -5.258313 0.199391 0.198463 +v -4.735427 0.243390 0.186992 +v -4.735427 0.277744 0.177786 +v -5.258312 0.264808 0.180936 +v -5.258312 0.272838 0.210902 +v -4.735427 0.285614 0.207161 +v -4.738048 0.214873 0.190433 +v -4.738048 0.304162 0.166509 +v -4.703030 0.273406 0.174750 +v -4.703030 0.242459 0.183042 +v -4.713286 0.222953 0.188269 +v -4.738048 0.314132 0.203718 +v -4.738048 0.224844 0.227643 +v -4.713286 0.232923 0.225479 +v -4.703029 0.252429 0.220252 +v -4.703030 0.283377 0.211960 +v -4.755419 0.317387 0.236187 +v -4.755419 0.271861 0.248385 +v -4.747920 0.252246 0.253641 +v -4.723568 0.242318 0.256301 +v -4.699216 0.252246 0.253641 +v -4.691718 0.271861 0.248385 +v -4.691718 0.317387 0.236187 +v -4.723568 0.224022 0.188020 +v -4.723568 0.215677 0.156878 +v -4.699217 0.225606 0.154217 +v -4.699216 0.233951 0.185360 +v -4.755419 0.309042 0.205044 +v -4.755419 0.263516 0.217243 +v -4.691718 0.299091 0.167906 +v -4.691718 0.253565 0.180104 +v -4.691718 0.245220 0.148962 +v -4.691718 0.290746 0.136763 +v -4.723568 0.233974 0.225159 +v -4.747920 0.243901 0.222499 +v -4.755419 0.253565 0.180104 +v -4.755419 0.245220 0.148962 +v -4.747920 0.225606 0.154217 +v -4.747920 0.233951 0.185360 +v -4.691718 0.263516 0.217243 +v -4.699217 0.243901 0.222499 +v -4.755419 0.290746 0.136763 +v -4.691718 0.309042 0.205044 +v -4.755418 0.299091 0.167906 +v -5.245664 0.275397 -0.143804 +v -5.194486 0.193785 -0.165672 +v -5.178945 0.193785 -0.165672 +v -5.127767 0.275397 -0.143804 +v -5.127767 0.300573 -0.237762 +v -5.178945 0.218960 -0.259630 +v -5.194487 0.218960 -0.259630 +v -5.245664 0.300573 -0.237762 +v -5.194486 0.210569 -0.228310 +v -5.245664 0.292181 -0.206443 +v -5.127767 0.292181 -0.206443 +v -5.178945 0.210569 -0.228310 +v -5.194486 0.219796 -0.262750 +v -5.194487 0.342325 -0.284806 +v -5.178945 0.342325 -0.284806 +v -5.178945 0.219796 -0.262750 +v -5.178945 0.192949 -0.162553 +v -5.178945 0.288033 -0.082187 +v -5.194486 0.288033 -0.082187 +v -5.194486 0.192949 -0.162553 +v -5.245664 0.283789 -0.175124 +v -5.127767 0.283789 -0.175124 +v -5.178945 0.202177 -0.196991 +v -5.194486 0.202177 -0.196991 +v -5.194487 0.319375 -0.199156 +v -5.178945 0.319375 -0.199156 +v -5.178945 0.310982 -0.167837 +v -5.194487 0.310982 -0.167837 +v -5.245664 0.323409 -0.231643 +v -5.127767 0.323409 -0.231643 +v -5.245664 0.306625 -0.169004 +v -5.127767 0.306625 -0.169004 +v -5.127767 0.315018 -0.200323 +v -5.245664 0.315018 -0.200323 +v -5.245664 0.298234 -0.137685 +v -5.127767 0.298234 -0.137685 +v -5.254691 0.278136 -0.168034 +v -5.254690 0.290830 -0.215409 +v -5.297078 0.265232 -0.222269 +v -5.297078 0.252538 -0.174893 +v -5.254690 0.190938 -0.242176 +v -5.254690 0.178244 -0.194800 +v -5.296170 0.217621 -0.235026 +v -5.303239 0.241365 -0.228664 +v -5.303239 0.228671 -0.181288 +v -5.296170 0.204927 -0.187649 +v -4.735427 0.243390 -0.186991 +v -5.258313 0.199391 -0.198463 +v -5.258313 0.207420 -0.228430 +v -4.735427 0.251261 -0.216365 +v -4.735427 0.285615 -0.207160 +v -5.258312 0.272837 -0.210900 +v -5.258312 0.264809 -0.180934 +v -4.735427 0.277743 -0.177786 +v -4.738048 0.224844 -0.227643 +v -4.738048 0.314132 -0.203718 +v -4.703030 0.283376 -0.211958 +v -4.703030 0.252429 -0.220251 +v -4.713286 0.232923 -0.225478 +v -4.738048 0.304162 -0.166508 +v -4.738048 0.214873 -0.190433 +v -4.713286 0.222953 -0.188268 +v -4.703029 0.242459 -0.183041 +v -4.703030 0.273406 -0.174749 +v -4.755419 0.290746 -0.136762 +v -4.755419 0.245220 -0.148961 +v -4.747920 0.225605 -0.154217 +v -4.723568 0.215677 -0.156877 +v -4.699216 0.225605 -0.154217 +v -4.691718 0.245220 -0.148961 +v -4.691718 0.290746 -0.136762 +v -4.723568 0.233973 -0.225158 +v -4.723568 0.242318 -0.256300 +v -4.699217 0.252246 -0.253640 +v -4.699216 0.243902 -0.222498 +v -4.755419 0.299090 -0.167905 +v -4.755419 0.253565 -0.180103 +v -4.691718 0.309041 -0.205043 +v -4.691718 0.263516 -0.217242 +v -4.691718 0.271860 -0.248385 +v -4.691718 0.317386 -0.236187 +v -4.723568 0.224022 -0.188019 +v -4.747920 0.233950 -0.185359 +v -4.755419 0.263516 -0.217242 +v -4.755419 0.271860 -0.248385 +v -4.747920 0.252246 -0.253640 +v -4.747920 0.243902 -0.222498 +v -4.691718 0.253565 -0.180103 +v -4.699217 0.233950 -0.185359 +v -4.755419 0.317386 -0.236187 +v -4.691718 0.299090 -0.167905 +v -4.755418 0.309041 -0.205043 +v -5.245664 0.444378 -0.486839 +v -5.194486 0.384633 -0.546583 +v -5.178945 0.384633 -0.546583 +v -5.127767 0.444378 -0.486839 +v -5.127767 0.513159 -0.555621 +v -5.178945 0.453414 -0.615365 +v -5.194487 0.453414 -0.615365 +v -5.245664 0.513159 -0.555621 +v -5.194486 0.430488 -0.592437 +v -5.245664 0.490232 -0.532693 +v -5.127767 0.490232 -0.532693 +v -5.178945 0.430488 -0.592437 +v -5.194486 0.455698 -0.617649 +v -5.194487 0.572839 -0.575487 +v -5.178945 0.572839 -0.575487 +v -5.178945 0.455698 -0.617649 +v -5.178945 0.382350 -0.544300 +v -5.178945 0.424512 -0.427159 +v -5.194486 0.424512 -0.427159 +v -5.194486 0.382350 -0.544300 +v -5.245664 0.467304 -0.509767 +v -5.127767 0.467304 -0.509767 +v -5.178945 0.407560 -0.569510 +v -5.194486 0.407560 -0.569510 +v -5.194487 0.510139 -0.512786 +v -5.178945 0.510139 -0.512786 +v -5.178945 0.487211 -0.489859 +v -5.194487 0.487211 -0.489859 +v -5.245664 0.529876 -0.538903 +v -5.127767 0.529876 -0.538903 +v -5.245664 0.484022 -0.493049 +v -5.127767 0.484022 -0.493049 +v -5.127767 0.506949 -0.515976 +v -5.245664 0.506949 -0.515976 +v -5.245664 0.461095 -0.470121 +v -5.127767 0.461095 -0.470121 +v -5.254691 0.458864 -0.506453 +v -5.254690 0.493545 -0.541134 +v -5.297078 0.474807 -0.559874 +v -5.297078 0.440125 -0.525192 +v -5.254690 0.420420 -0.614261 +v -5.254690 0.385738 -0.579579 +v -5.296170 0.439953 -0.594727 +v -5.303239 0.457334 -0.577346 +v -5.303239 0.422653 -0.542664 +v -5.296170 0.405271 -0.560045 +v -4.735427 0.438252 -0.540243 +v -5.258313 0.405884 -0.572178 +v -5.258313 0.427820 -0.594115 +v -4.735427 0.459755 -0.561746 +v -4.735427 0.484904 -0.536598 +v -5.258312 0.475709 -0.546226 +v -5.258312 0.453773 -0.524289 +v -4.735427 0.463400 -0.515095 +v -4.738048 0.442516 -0.584722 +v -4.738048 0.507879 -0.519358 +v -4.703030 0.485365 -0.541873 +v -4.703030 0.462710 -0.564528 +v -4.713286 0.448430 -0.578807 +v -4.738048 0.480640 -0.492119 +v -4.738048 0.415276 -0.557482 +v -4.713286 0.421191 -0.551568 +v -4.703029 0.435470 -0.537288 +v -4.703030 0.458125 -0.514633 +v -4.755419 0.454149 -0.473066 +v -4.755419 0.420822 -0.506393 +v -4.747920 0.406463 -0.520753 +v -4.723568 0.399195 -0.528020 +v -4.699216 0.406463 -0.520753 +v -4.691718 0.420822 -0.506393 +v -4.691718 0.454149 -0.473066 +v -4.723568 0.449180 -0.578005 +v -4.723568 0.471978 -0.600803 +v -4.699217 0.479246 -0.593535 +v -4.699216 0.456449 -0.570737 +v -4.755419 0.476947 -0.495865 +v -4.755419 0.443620 -0.529191 +v -4.691718 0.504134 -0.523051 +v -4.691718 0.470807 -0.556379 +v -4.691718 0.493604 -0.579177 +v -4.691718 0.526932 -0.545850 +v -4.723568 0.421993 -0.550818 +v -4.747920 0.429260 -0.543550 +v -4.755419 0.470807 -0.556379 +v -4.755419 0.493604 -0.579177 +v -4.747920 0.479246 -0.593535 +v -4.747920 0.456449 -0.570737 +v -4.691718 0.443620 -0.529191 +v -4.699217 0.429260 -0.543550 +v -4.755419 0.526932 -0.545850 +v -4.691718 0.476947 -0.495865 +v -4.755418 0.504134 -0.523051 +v -5.245664 0.762236 -0.699426 +v -5.194486 0.740368 -0.781038 +v -5.178945 0.740368 -0.781038 +v -5.127767 0.762236 -0.699426 +v -5.127767 0.856193 -0.724602 +v -5.178945 0.834325 -0.806214 +v -5.194487 0.834325 -0.806214 +v -5.245664 0.856193 -0.724602 +v -5.194486 0.803006 -0.797821 +v -5.245664 0.824875 -0.716209 +v -5.127767 0.824875 -0.716209 +v -5.178945 0.803006 -0.797821 +v -5.194486 0.837445 -0.807050 +v -5.194487 0.917811 -0.711966 +v -5.178945 0.917811 -0.711966 +v -5.178945 0.837445 -0.807050 +v -5.178945 0.737249 -0.780202 +v -5.178945 0.715192 -0.657674 +v -5.194486 0.715192 -0.657674 +v -5.194486 0.737249 -0.780202 +v -5.245664 0.793555 -0.707818 +v -5.127767 0.793555 -0.707818 +v -5.178945 0.771687 -0.789430 +v -5.194486 0.771687 -0.789430 +v -5.194487 0.832161 -0.689015 +v -5.178945 0.832161 -0.689015 +v -5.178945 0.800841 -0.680624 +v -5.194487 0.800841 -0.680624 +v -5.245664 0.862312 -0.701765 +v -5.127767 0.862312 -0.701765 +v -5.245664 0.799674 -0.684981 +v -5.127767 0.799674 -0.684981 +v -5.127767 0.830993 -0.693373 +v -5.245664 0.830993 -0.693373 +v -5.245664 0.768355 -0.676589 +v -5.127767 0.768355 -0.676589 +v -5.254691 0.784589 -0.709169 +v -5.254690 0.831964 -0.721863 +v -5.297078 0.825106 -0.747461 +v -5.297078 0.777730 -0.734766 +v -5.254690 0.805199 -0.821755 +v -5.254690 0.757823 -0.809061 +v -5.296170 0.812348 -0.795072 +v -5.303239 0.818710 -0.771328 +v -5.303239 0.771335 -0.758634 +v -5.296170 0.764972 -0.782377 +v -4.735427 0.783633 -0.748737 +v -5.258313 0.771569 -0.792579 +v -5.258313 0.801535 -0.800608 +v -4.735427 0.813007 -0.756608 +v -4.735427 0.822213 -0.722255 +v -5.258312 0.819063 -0.735191 +v -5.258312 0.789097 -0.727160 +v -4.735427 0.792838 -0.714385 +v -4.738048 0.809565 -0.785125 +v -4.738048 0.833490 -0.695837 +v -4.703030 0.825249 -0.726592 +v -4.703030 0.816957 -0.757540 +v -4.713286 0.811730 -0.777046 +v -4.738048 0.796280 -0.685866 +v -4.738048 0.772356 -0.775155 +v -4.713286 0.774520 -0.767076 +v -4.703029 0.779747 -0.747570 +v -4.703030 0.788039 -0.716622 +v -4.755419 0.763812 -0.682612 +v -4.755419 0.751613 -0.728138 +v -4.747920 0.746358 -0.747753 +v -4.723568 0.743697 -0.757681 +v -4.699216 0.746358 -0.747753 +v -4.691718 0.751613 -0.728138 +v -4.691718 0.763812 -0.682612 +v -4.723568 0.811978 -0.775977 +v -4.723568 0.843121 -0.784321 +v -4.699217 0.845782 -0.774393 +v -4.699216 0.814639 -0.766048 +v -4.755419 0.794955 -0.690957 +v -4.755419 0.782756 -0.736483 +v -4.691718 0.832093 -0.700908 +v -4.691718 0.819895 -0.746434 +v -4.691718 0.851037 -0.754779 +v -4.691718 0.863236 -0.709253 +v -4.723568 0.774840 -0.766025 +v -4.747920 0.777500 -0.756097 +v -4.755419 0.819895 -0.746434 +v -4.755419 0.851037 -0.754779 +v -4.747920 0.845782 -0.774393 +v -4.747920 0.814639 -0.766048 +v -4.691718 0.782756 -0.736483 +v -4.699217 0.777500 -0.756097 +v -4.755419 0.863236 -0.709253 +v -4.691718 0.794955 -0.690957 +v -4.755418 0.832093 -0.700908 +v -5.245664 1.143803 -0.724602 +v -5.194486 1.165671 -0.806214 +v -5.178945 1.165671 -0.806214 +v -5.127767 1.143803 -0.724602 +v -5.127767 1.237760 -0.699426 +v -5.178945 1.259628 -0.781038 +v -5.194487 1.259628 -0.781038 +v -5.245664 1.237760 -0.699426 +v -5.194486 1.228309 -0.789430 +v -5.245664 1.206441 -0.707817 +v -5.127767 1.206441 -0.707817 +v -5.178945 1.228309 -0.789430 +v -5.194486 1.262748 -0.780203 +v -5.194487 1.284805 -0.657674 +v -5.178945 1.284805 -0.657674 +v -5.178945 1.262748 -0.780203 +v -5.178945 1.162552 -0.807049 +v -5.178945 1.082186 -0.711966 +v -5.194486 1.082186 -0.711966 +v -5.194486 1.162552 -0.807049 +v -5.245664 1.175122 -0.716210 +v -5.127767 1.175122 -0.716210 +v -5.178945 1.196990 -0.797822 +v -5.194486 1.196990 -0.797822 +v -5.194487 1.199155 -0.680624 +v -5.178945 1.199155 -0.680624 +v -5.178945 1.167835 -0.689016 +v -5.194487 1.167835 -0.689016 +v -5.245664 1.231641 -0.676590 +v -5.127767 1.231641 -0.676590 +v -5.245664 1.169003 -0.693373 +v -5.127767 1.169003 -0.693373 +v -5.127767 1.200322 -0.684981 +v -5.245664 1.200322 -0.684981 +v -5.245664 1.137684 -0.701765 +v -5.127767 1.137684 -0.701765 +v -5.254691 1.168033 -0.721863 +v -5.254690 1.215408 -0.709169 +v -5.297078 1.222268 -0.734767 +v -5.297078 1.174891 -0.747461 +v -5.254690 1.242175 -0.809060 +v -5.254690 1.194798 -0.821755 +v -5.296170 1.235024 -0.782378 +v -5.303239 1.228662 -0.758634 +v -5.303239 1.181287 -0.771328 +v -5.296170 1.187648 -0.795071 +v -4.735427 1.186989 -0.756608 +v -5.258313 1.198462 -0.800608 +v -5.258313 1.228428 -0.792578 +v -4.735427 1.216363 -0.748738 +v -4.735427 1.207159 -0.714384 +v -5.258312 1.210899 -0.727162 +v -5.258312 1.180933 -0.735190 +v -4.735427 1.177784 -0.722256 +v -4.738048 1.227641 -0.775155 +v -4.738048 1.203717 -0.685867 +v -4.703030 1.211957 -0.716622 +v -4.703030 1.220250 -0.747570 +v -4.713286 1.225476 -0.767076 +v -4.738048 1.166507 -0.695837 +v -4.738048 1.190431 -0.785126 +v -4.713286 1.188266 -0.777046 +v -4.703029 1.183040 -0.757540 +v -4.703030 1.174747 -0.726593 +v -4.755419 1.136761 -0.709253 +v -4.755419 1.148960 -0.754779 +v -4.747920 1.154216 -0.774394 +v -4.723568 1.156876 -0.784322 +v -4.699216 1.154216 -0.774394 +v -4.691718 1.148960 -0.754779 +v -4.691718 1.136761 -0.709253 +v -4.723568 1.225157 -0.766026 +v -4.723568 1.256299 -0.757681 +v -4.699217 1.253639 -0.747752 +v -4.699216 1.222497 -0.756097 +v -4.755419 1.167904 -0.700908 +v -4.755419 1.180102 -0.746434 +v -4.691718 1.205042 -0.690957 +v -4.691718 1.217241 -0.736483 +v -4.691718 1.248383 -0.728139 +v -4.691718 1.236185 -0.682613 +v -4.723568 1.188018 -0.775977 +v -4.747920 1.185358 -0.766049 +v -4.755419 1.217241 -0.736483 +v -4.755419 1.248383 -0.728139 +v -4.747920 1.253639 -0.747752 +v -4.747920 1.222497 -0.756097 +v -4.691718 1.180102 -0.746434 +v -4.699217 1.185358 -0.766049 +v -4.755419 1.236185 -0.682613 +v -4.691718 1.167904 -0.700908 +v -4.755418 1.205042 -0.690957 +v -5.245664 1.486838 -0.555621 +v -5.194486 1.546582 -0.615365 +v -5.178945 1.546582 -0.615365 +v -5.127767 1.486838 -0.555621 +v -5.127767 1.555619 -0.486840 +v -5.178945 1.615364 -0.546584 +v -5.194487 1.615364 -0.546584 +v -5.245664 1.555619 -0.486840 +v -5.194486 1.592436 -0.569511 +v -5.245664 1.532692 -0.509767 +v -5.127767 1.532692 -0.509767 +v -5.178945 1.592436 -0.569511 +v -5.194486 1.617648 -0.544301 +v -5.194487 1.575485 -0.427159 +v -5.178945 1.575485 -0.427159 +v -5.178945 1.617648 -0.544301 +v -5.178945 1.544298 -0.617649 +v -5.178945 1.427158 -0.575487 +v -5.194486 1.427158 -0.575487 +v -5.194486 1.544298 -0.617649 +v -5.245664 1.509765 -0.532694 +v -5.127767 1.509765 -0.532694 +v -5.178945 1.569509 -0.592439 +v -5.194486 1.569509 -0.592439 +v -5.194487 1.512785 -0.489860 +v -5.178945 1.512785 -0.489860 +v -5.178945 1.489858 -0.512787 +v -5.194487 1.489858 -0.512787 +v -5.245664 1.538902 -0.470122 +v -5.127767 1.538902 -0.470122 +v -5.245664 1.493047 -0.515977 +v -5.127767 1.493047 -0.515977 +v -5.127767 1.515975 -0.493049 +v -5.245664 1.515975 -0.493049 +v -5.245664 1.470120 -0.538903 +v -5.127767 1.470120 -0.538903 +v -5.254691 1.506452 -0.541135 +v -5.254690 1.541133 -0.506454 +v -5.297078 1.559873 -0.525192 +v -5.297078 1.525191 -0.559874 +v -5.254690 1.614259 -0.579579 +v -5.254690 1.579578 -0.614261 +v -5.296170 1.594726 -0.560046 +v -5.303239 1.577344 -0.542664 +v -5.303239 1.542663 -0.577345 +v -5.296170 1.560044 -0.594727 +v -4.735427 1.540241 -0.561747 +v -5.258313 1.572177 -0.594115 +v -5.258313 1.594114 -0.572178 +v -4.735427 1.561745 -0.540244 +v -4.735427 1.536597 -0.515095 +v -5.258312 1.546225 -0.524290 +v -5.258312 1.524287 -0.546226 +v -4.735427 1.515094 -0.536599 +v -4.738048 1.584721 -0.557483 +v -4.738048 1.519357 -0.492119 +v -4.703030 1.541871 -0.514634 +v -4.703030 1.564527 -0.537289 +v -4.713286 1.578806 -0.551568 +v -4.738048 1.492117 -0.519359 +v -4.738048 1.557481 -0.584722 +v -4.713286 1.551566 -0.578808 +v -4.703029 1.537287 -0.564528 +v -4.703030 1.514632 -0.541873 +v -4.755419 1.473064 -0.545850 +v -4.755419 1.506392 -0.579177 +v -4.747920 1.520751 -0.593536 +v -4.723568 1.528019 -0.600804 +v -4.699216 1.520751 -0.593536 +v -4.691718 1.506392 -0.579177 +v -4.691718 1.473064 -0.545850 +v -4.723568 1.578004 -0.550819 +v -4.723568 1.600802 -0.528021 +v -4.699217 1.593534 -0.520752 +v -4.699216 1.570736 -0.543550 +v -4.755419 1.495863 -0.523052 +v -4.755419 1.529190 -0.556379 +v -4.691718 1.523050 -0.495865 +v -4.691718 1.556377 -0.529192 +v -4.691718 1.579175 -0.506394 +v -4.691718 1.545849 -0.473066 +v -4.723568 1.550817 -0.578006 +v -4.747920 1.543549 -0.570738 +v -4.755419 1.556377 -0.529192 +v -4.755419 1.579175 -0.506394 +v -4.747920 1.593534 -0.520752 +v -4.747920 1.570736 -0.543550 +v -4.691718 1.529190 -0.556379 +v -4.699217 1.543549 -0.570738 +v -4.755419 1.545849 -0.473066 +v -4.691718 1.495863 -0.523052 +v -4.755418 1.523050 -0.495865 +v -5.245664 1.699424 -0.237762 +v -5.194486 1.781036 -0.259631 +v -5.178945 1.781036 -0.259631 +v -5.127767 1.699424 -0.237762 +v -5.127767 1.724600 -0.143805 +v -5.178945 1.806212 -0.165673 +v -5.194487 1.806212 -0.165673 +v -5.245664 1.724600 -0.143805 +v -5.194486 1.797820 -0.196992 +v -5.245664 1.716208 -0.175124 +v -5.127767 1.716208 -0.175124 +v -5.178945 1.797820 -0.196992 +v -5.194486 1.807049 -0.162554 +v -5.194487 1.711964 -0.082188 +v -5.178945 1.711964 -0.082188 +v -5.178945 1.807049 -0.162554 +v -5.178945 1.780200 -0.262750 +v -5.178945 1.657673 -0.284807 +v -5.194486 1.657673 -0.284807 +v -5.194486 1.780200 -0.262750 +v -5.245664 1.707817 -0.206443 +v -5.127767 1.707817 -0.206443 +v -5.178945 1.789428 -0.228312 +v -5.194486 1.789428 -0.228312 +v -5.194487 1.689014 -0.167838 +v -5.178945 1.689014 -0.167838 +v -5.178945 1.680623 -0.199157 +v -5.194487 1.680623 -0.199157 +v -5.245664 1.701764 -0.137686 +v -5.127767 1.701764 -0.137686 +v -5.245664 1.684980 -0.200325 +v -5.127767 1.684980 -0.200325 +v -5.127767 1.693372 -0.169005 +v -5.245664 1.693372 -0.169005 +v -5.245664 1.676587 -0.231643 +v -5.127767 1.676587 -0.231643 +v -5.254691 1.709167 -0.215410 +v -5.254690 1.721861 -0.168034 +v -5.297078 1.747460 -0.174893 +v -5.297078 1.734765 -0.222269 +v -5.254690 1.821754 -0.194800 +v -5.254690 1.809059 -0.242176 +v -5.296170 1.795070 -0.187650 +v -5.303239 1.771327 -0.181288 +v -5.303239 1.758633 -0.228664 +v -5.296170 1.782376 -0.235027 +v -4.735427 1.748736 -0.216365 +v -5.258313 1.792577 -0.228430 +v -5.258313 1.800607 -0.198463 +v -4.735427 1.756607 -0.186992 +v -4.735427 1.722253 -0.177786 +v -5.258312 1.735189 -0.180936 +v -5.258312 1.727159 -0.210902 +v -4.735427 1.714383 -0.207161 +v -4.738048 1.785124 -0.190433 +v -4.738048 1.695836 -0.166509 +v -4.703030 1.726591 -0.174750 +v -4.703030 1.757539 -0.183042 +v -4.713286 1.777045 -0.188269 +v -4.738048 1.685865 -0.203718 +v -4.738048 1.775154 -0.227643 +v -4.713286 1.767074 -0.225478 +v -4.703029 1.747568 -0.220252 +v -4.703030 1.716621 -0.211960 +v -4.755419 1.682611 -0.236187 +v -4.755419 1.728137 -0.248385 +v -4.747920 1.747752 -0.253641 +v -4.723568 1.757680 -0.256301 +v -4.699216 1.747752 -0.253641 +v -4.691718 1.728137 -0.248385 +v -4.691718 1.682611 -0.236187 +v -4.723568 1.775975 -0.188020 +v -4.723568 1.784320 -0.156878 +v -4.699217 1.774391 -0.154217 +v -4.699216 1.766047 -0.185359 +v -4.755419 1.690956 -0.205044 +v -4.755419 1.736481 -0.217243 +v -4.691718 1.700907 -0.167906 +v -4.691718 1.746433 -0.180104 +v -4.691718 1.754778 -0.148962 +v -4.691718 1.709252 -0.136763 +v -4.723568 1.766024 -0.225159 +v -4.747920 1.756096 -0.222499 +v -4.755419 1.746433 -0.180104 +v -4.755419 1.754778 -0.148962 +v -4.747920 1.774391 -0.154217 +v -4.747920 1.766047 -0.185359 +v -4.691718 1.736481 -0.217243 +v -4.699217 1.756096 -0.222499 +v -4.755419 1.709252 -0.136763 +v -4.691718 1.690956 -0.205044 +v -4.755418 1.700907 -0.167906 +vt 0.854271 0.490000 +vt 0.844221 0.480000 +vt 0.844221 0.470000 +vt 0.844221 0.490000 +vt 0.839196 0.510000 +vt 0.839196 0.490000 +vt 0.874372 0.510000 +vt 0.884422 0.520000 +vt 0.884422 0.530000 +vt 0.889447 0.510000 +vt 0.884422 0.490000 +vt 0.889447 0.490000 +vt 0.874372 0.490000 +vt 0.839196 0.460000 +vt 0.849246 0.440000 +vt 0.839196 0.440000 +vt 0.849246 0.460000 +vt 0.864322 0.440000 +vt 0.879397 0.440000 +vt 0.864322 0.460000 +vt 0.879397 0.460000 +vt 0.839196 0.430000 +vt 0.849246 0.410000 +vt 0.839196 0.410000 +vt 0.864322 0.430000 +vt 0.879397 0.430000 +vt 0.864322 0.410000 +vt 0.849246 0.430000 +vt 0.864322 0.470000 +vt 0.879397 0.470000 +vt 0.839196 0.470000 +vt 0.844221 0.510000 +vt 0.854271 0.510000 +vt 0.673367 0.410000 +vt 0.678392 0.450000 +vt 0.673367 0.450000 +vt 0.673367 0.750000 +vt 0.678392 0.790000 +vt 0.673367 0.790000 +vt 0.673367 0.110000 +vt 0.678392 0.150000 +vt 0.673367 0.150000 +vt 0.673367 0.350000 +vt 0.678392 0.390000 +vt 0.673367 0.390000 +vt 0.678392 0.710000 +vt 0.678392 0.750000 +vt 0.673367 0.050000 +vt 0.678392 0.090000 +vt 0.673367 0.090000 +vt 0.673367 0.310000 +vt 0.678392 0.350000 +vt 0.673367 0.690000 +vt 0.678392 0.650000 +vt 0.678392 0.690000 +vt 0.673367 0.010000 +vt 0.678392 0.050000 +vt 0.673367 0.250000 +vt 0.678392 0.290000 +vt 0.673367 0.290000 +vt 0.673367 0.610000 +vt 0.673367 0.650000 +vt 0.673367 0.990000 +vt 0.678392 0.950000 +vt 0.678392 0.990000 +vt 0.673367 0.550000 +vt 0.678392 0.590000 +vt 0.673367 0.590000 +vt 0.673367 0.950000 +vt 0.678392 0.910000 +vt 0.673367 0.510000 +vt 0.678392 0.550000 +vt 0.673367 0.850000 +vt 0.678392 0.890000 +vt 0.673367 0.890000 +vt 0.678392 0.210000 +vt 0.678392 0.250000 +vt 0.673367 0.490000 +vt 0.678392 0.490000 +vt 0.673367 0.810000 +vt 0.678392 0.850000 +vt 0.673367 0.190000 +vt 0.678392 0.190000 +vt 0.941328 0.806921 +vt 0.891960 0.878298 +vt 0.842592 0.806921 +vt 0.874372 0.490000 +vt 0.854271 0.490000 +vt 0.844221 0.470000 +vt 0.889447 0.490000 +vt 0.884422 0.510000 +vt 0.884422 0.490000 +vt 0.854271 0.510000 +vt 0.874372 0.510000 +vt 0.884422 0.530000 +vt 0.839196 0.490000 +vt 0.844221 0.510000 +vt 0.839196 0.510000 +vt 0.844221 0.490000 +vt 0.849246 0.440000 +vt 0.839196 0.460000 +vt 0.839196 0.440000 +vt 0.864322 0.460000 +vt 0.849246 0.460000 +vt 0.879397 0.440000 +vt 0.879397 0.460000 +vt 0.839196 0.430000 +vt 0.849246 0.410000 +vt 0.849246 0.430000 +vt 0.864322 0.440000 +vt 0.864322 0.430000 +vt 0.879397 0.430000 +vt 0.864322 0.410000 +vt 0.864322 0.470000 +vt 0.879397 0.470000 +vt 0.839196 0.470000 +vt 0.889446 0.390000 +vt 0.884422 0.400000 +vt 0.884421 0.390000 +vt 0.894472 0.400000 +vt 0.889447 0.400000 +vt 0.894471 0.390000 +vt 0.899498 0.400000 +vt 0.839196 0.390000 +vt 0.844221 0.400000 +vt 0.839196 0.400000 +vt 0.849246 0.390000 +vt 0.844221 0.390000 +vt 0.854271 0.400000 +vt 0.849246 0.400000 +vt 0.869346 0.390000 +vt 0.874372 0.400000 +vt 0.869347 0.400000 +vt 0.864322 0.400000 +vt 0.864321 0.390000 +vt 0.854271 0.390000 +vt 0.859297 0.400000 +vt 0.879396 0.390000 +vt 0.874371 0.390000 +vt 0.859296 0.390000 +vt 0.879397 0.400000 +vt 0.853224 0.347841 +vt 0.853094 0.362605 +vt 0.840244 0.362159 +vt 0.854271 0.390000 +vt 0.849246 0.400000 +vt 0.849246 0.390000 +vt 0.844221 0.390000 +vt 0.839196 0.400000 +vt 0.839196 0.390000 +vt 0.899498 0.400000 +vt 0.894473 0.390000 +vt 0.899498 0.390000 +vt 0.894472 0.400000 +vt 0.889448 0.390000 +vt 0.884422 0.400000 +vt 0.884422 0.390000 +vt 0.869347 0.400000 +vt 0.864322 0.390000 +vt 0.869347 0.390000 +vt 0.874372 0.390000 +vt 0.879397 0.390000 +vt 0.859297 0.400000 +vt 0.859297 0.390000 +vt 0.874372 0.400000 +vt 0.840307 0.347617 +vt 0.853160 0.347617 +vt 0.846734 0.369767 +vt 0.892504 0.171358 +vt 0.887001 0.180001 +vt 0.887003 0.164722 +vt 0.892503 0.186632 +vt 0.887001 0.195279 +vt 0.887001 0.180000 +vt 0.893434 0.199481 +vt 0.893434 0.195279 +vt 0.893434 0.175798 +vt 0.887001 0.175798 +vt 0.892503 0.167152 +vt 0.892503 0.169166 +vt 0.892340 0.181007 +vt 0.884233 0.178993 +vt 0.892340 0.178993 +vt 0.888941 0.169623 +vt 0.889953 0.185757 +vt 0.888941 0.185757 +vt 0.894662 0.178993 +vt 0.894662 0.181007 +vt 0.887000 0.184202 +vt 0.892501 0.192852 +vt 0.886997 0.199481 +vt 0.893436 0.164726 +vt 0.887004 0.160520 +vt 0.893437 0.160524 +vt 0.889953 0.190377 +vt 0.893433 0.180005 +vt 0.886692 0.191404 +vt 0.893329 0.185188 +vt 0.886692 0.168596 +vt 0.883717 0.174516 +vt 0.886841 0.187724 +vt 0.895178 0.174516 +vt 0.889953 0.169623 +vt 0.885461 0.180000 +vt 0.885460 0.184201 +vt 0.885461 0.160520 +vt 0.887001 0.160520 +vt 0.885464 0.160519 +vt 0.885461 0.175798 +vt 0.887001 0.199480 +vt 0.885461 0.195279 +vt 0.885463 0.164721 +vt 0.885461 0.180000 +vt 0.886081 0.183178 +vt 0.882826 0.176822 +vt 0.886081 0.176822 +vt 0.892816 0.176822 +vt 0.892816 0.183178 +vt 0.891017 0.188554 +vt 0.887807 0.188671 +vt 0.887807 0.171329 +vt 0.889416 0.170530 +vt 0.891017 0.171446 +vt 0.879397 0.190000 +vt 0.839196 0.180000 +vt 0.879397 0.180000 +vt 0.839196 0.170000 +vt 0.879397 0.170000 +vt 0.879397 0.160000 +vt 0.839196 0.160000 +vt 0.839196 0.200000 +vt 0.879397 0.200000 +vt 0.896061 0.183178 +vt 0.897727 0.176822 +vt 0.897727 0.183178 +vt 0.881167 0.176822 +vt 0.882826 0.183178 +vt 0.881167 0.183178 +vt 0.887433 0.182496 +vt 0.889293 0.187034 +vt 0.885347 0.182496 +vt 0.889293 0.172966 +vt 0.887433 0.177504 +vt 0.885347 0.177504 +vt 0.890610 0.177504 +vt 0.888908 0.182496 +vt 0.888908 0.177504 +vt 0.882265 0.177504 +vt 0.882265 0.182496 +vt 0.896630 0.182496 +vt 0.890610 0.182496 +vt 0.889417 0.171745 +vt 0.891408 0.175873 +vt 0.889416 0.180000 +vt 0.889417 0.180000 +vt 0.891408 0.184128 +vt 0.889417 0.188255 +vt 0.889416 0.184178 +vt 0.891408 0.188306 +vt 0.889416 0.192433 +vt 0.889417 0.175822 +vt 0.889417 0.167567 +vt 0.891408 0.171694 +vt 0.839196 0.260000 +vt 0.844221 0.200000 +vt 0.844221 0.260000 +vt 0.839196 0.200000 +vt 0.844221 0.260000 +vt 0.839196 0.260000 +vt 0.839196 0.200000 +vt 0.844221 0.260000 +vt 0.839196 0.260000 +vt 0.844221 0.200000 +vt 0.839196 0.260000 +vt 0.839196 0.200000 +vt 0.839196 0.200000 +vt 0.844221 0.260000 +vt 0.839196 0.260000 +vt 0.844221 0.200000 +vt 0.839196 0.260000 +vt 0.839196 0.200000 +vt 0.839196 0.200000 +vt 0.844221 0.260000 +vt 0.839196 0.260000 +vt 0.844221 0.200000 +vt 0.839196 0.260000 +vt 0.839196 0.200000 +vt 0.844221 0.200000 +vt 0.839196 0.260000 +vt 0.839196 0.200000 +vt 0.839196 0.200000 +vt 0.844221 0.260000 +vt 0.839196 0.260000 +vt 0.844221 0.200000 +vt 0.839196 0.260000 +vt 0.839196 0.200000 +vt 0.839196 0.200000 +vt 0.844221 0.260000 +vt 0.839196 0.260000 +vt 0.839196 0.260000 +vt 0.844221 0.200000 +vt 0.844221 0.260000 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.909548 0.640000 +vt 0.909548 0.650000 +vt 0.894472 0.640000 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.984925 0.140000 +vt 0.929648 0.055312 +vt 0.866520 0.140313 +vt 0.849246 0.110000 +vt 0.839196 0.010000 +vt 0.849246 0.010000 +vt 0.864322 0.160000 +vt 0.854271 0.140000 +vt 0.864322 0.140000 +vt 0.849246 0.130000 +vt 0.839196 0.110000 +vt 0.984925 0.140000 +vt 0.994975 0.140000 +vt 0.984925 0.040000 +vt 0.994975 0.040000 +vt 0.929648 0.010000 +vt 0.919598 0.050000 +vt 0.929648 0.050000 +vt 0.949749 0.070000 +vt 0.949749 0.050000 +vt 0.969849 0.010000 +vt 0.949749 0.055312 +vt 0.949749 0.010000 +vt 0.959799 0.010000 +vt 0.959799 0.050000 +vt 0.994975 0.010000 +vt 0.984925 0.010000 +vt 1.000000 0.890000 +vt 0.994975 0.930000 +vt 0.994975 0.890000 +vt 0.839196 1.000000 +vt 0.994975 0.990000 +vt 1.000000 1.000000 +vt 0.994975 0.950000 +vt 0.844221 0.990000 +vt 0.844221 0.950000 +vt 0.844221 0.930000 +vt 0.839196 0.940000 +vt 0.839196 0.930000 +vt 0.844221 0.890000 +vt 0.839196 0.950000 +vt 0.839196 0.990000 +vt 1.000000 0.990000 +vt 1.000000 0.950000 +vt 1.000000 0.880000 +vt 0.839196 0.880000 +vt 1.000000 0.940000 +vt 0.929648 0.055312 +vt 0.866520 0.140313 +vt 0.984925 0.047500 +vt 0.949749 0.055312 +vt 0.969849 0.010000 +vt 0.949749 0.010000 +vt 0.984925 0.047500 +vt 0.849246 0.110000 +vt 0.854428 0.130313 +vt 0.849246 0.010000 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.909548 0.640000 +vt 0.909548 0.650000 +vt 0.894472 0.640000 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.500000 0.333333 +vt 0.500000 0.333333 +vt 0.500000 0.416667 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.984925 0.140000 +vt 0.929648 0.055312 +vt 0.866520 0.140313 +vt 0.849246 0.110000 +vt 0.839196 0.010000 +vt 0.849246 0.010000 +vt 0.864322 0.140000 +vt 0.854271 0.160000 +vt 0.854271 0.140000 +vt 0.849246 0.130000 +vt 0.839196 0.110000 +vt 0.984925 0.140000 +vt 0.864322 0.160000 +vt 0.994975 0.040000 +vt 0.984925 0.040000 +vt 0.929648 0.010000 +vt 0.919598 0.050000 +vt 0.929648 0.050000 +vt 0.949749 0.070000 +vt 0.949749 0.050000 +vt 0.969849 0.010000 +vt 0.949749 0.055312 +vt 0.949749 0.010000 +vt 0.959799 0.010000 +vt 0.959799 0.050000 +vt 0.994975 0.010000 +vt 0.984925 0.010000 +vt 0.929648 0.055312 +vt 0.866520 0.140313 +vt 0.984925 0.047500 +vt 0.949749 0.055312 +vt 0.969849 0.010000 +vt 0.949749 0.010000 +vt 0.984925 0.047500 +vt 0.849246 0.110000 +vt 0.854428 0.130313 +vt 0.849246 0.010000 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.909548 0.640000 +vt 0.909548 0.650000 +vt 0.894472 0.640000 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.894472 0.650000 +vt 0.894472 0.640000 +vt 0.909548 0.650000 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.500000 0.416667 +vt 0.500000 0.416667 +vt 0.500000 0.333333 +vt 0.909548 0.650000 +vt 0.904523 0.660000 +vt 0.894472 0.650000 +vt 0.984925 0.140000 +vt 0.929648 0.055312 +vt 0.866520 0.140313 +vt 0.849246 0.110000 +vt 0.839196 0.010000 +vt 0.849246 0.010000 +vt 0.864322 0.140000 +vt 0.854271 0.160000 +vt 0.854271 0.140000 +vt 0.849246 0.130000 +vt 0.839196 0.110000 +vt 0.984925 0.140000 +vt 0.864322 0.160000 +vt 0.994975 0.140000 +vt 0.984925 0.040000 +vt 0.994975 0.040000 +vt 0.929648 0.010000 +vt 0.919598 0.050000 +vt 0.929648 0.050000 +vt 0.949749 0.070000 +vt 0.949749 0.050000 +vt 0.969849 0.010000 +vt 0.949749 0.055312 +vt 0.949749 0.010000 +vt 0.959799 0.010000 +vt 0.959799 0.050000 +vt 0.994975 0.010000 +vt 0.984925 0.010000 +vt 0.929648 0.055312 +vt 0.866520 0.140313 +vt 0.984925 0.047500 +vt 0.949749 0.055312 +vt 0.969849 0.010000 +vt 0.949749 0.010000 +vt 0.984925 0.047500 +vt 0.849246 0.110000 +vt 0.854428 0.130313 +vt 0.849246 0.010000 +vt 0.892504 0.171358 +vt 0.887001 0.180001 +vt 0.887003 0.164722 +vt 0.892503 0.186632 +vt 0.887001 0.195279 +vt 0.887001 0.180000 +vt 0.893434 0.199481 +vt 0.893434 0.195279 +vt 0.893434 0.175798 +vt 0.887001 0.175798 +vt 0.892503 0.167152 +vt 0.892503 0.169166 +vt 0.892340 0.181007 +vt 0.884233 0.178993 +vt 0.892340 0.178993 +vt 0.888941 0.169623 +vt 0.889953 0.185757 +vt 0.888941 0.185757 +vt 0.894662 0.178993 +vt 0.894662 0.181007 +vt 0.887000 0.184202 +vt 0.892501 0.192852 +vt 0.886997 0.199481 +vt 0.893436 0.164726 +vt 0.887004 0.160520 +vt 0.893437 0.160524 +vt 0.889953 0.190377 +vt 0.893433 0.180005 +vt 0.886692 0.191404 +vt 0.893329 0.185188 +vt 0.886692 0.168596 +vt 0.883717 0.174516 +vt 0.886841 0.187724 +vt 0.895178 0.174516 +vt 0.889953 0.169623 +vt 0.885461 0.180000 +vt 0.885460 0.184201 +vt 0.885461 0.160520 +vt 0.887001 0.160520 +vt 0.885464 0.160519 +vt 0.885461 0.175798 +vt 0.887001 0.199480 +vt 0.885461 0.195279 +vt 0.885463 0.164721 +vt 0.885461 0.180000 +vt 0.886081 0.176822 +vt 0.882826 0.183178 +vt 0.882826 0.176822 +vt 0.886081 0.183178 +vt 0.892816 0.176822 +vt 0.892816 0.183178 +vt 0.891017 0.188554 +vt 0.887807 0.188671 +vt 0.887807 0.171329 +vt 0.889416 0.170530 +vt 0.891017 0.171446 +vt 0.879397 0.190000 +vt 0.839196 0.180000 +vt 0.879397 0.180000 +vt 0.839196 0.170000 +vt 0.879397 0.170000 +vt 0.839196 0.160000 +vt 0.839196 0.200000 +vt 0.879397 0.200000 +vt 0.896061 0.183178 +vt 0.897727 0.176822 +vt 0.897727 0.183178 +vt 0.881167 0.176822 +vt 0.881167 0.183178 +vt 0.887433 0.182496 +vt 0.889293 0.187034 +vt 0.885347 0.182496 +vt 0.889293 0.172966 +vt 0.887433 0.177504 +vt 0.885347 0.177504 +vt 0.890610 0.177504 +vt 0.888908 0.182496 +vt 0.888908 0.177504 +vt 0.882265 0.182496 +vt 0.896630 0.182496 +vt 0.890610 0.182496 +vt 0.889417 0.171745 +vt 0.891408 0.175873 +vt 0.889416 0.180000 +vt 0.889417 0.180000 +vt 0.891408 0.184128 +vt 0.889417 0.188255 +vt 0.889416 0.184178 +vt 0.891408 0.188306 +vt 0.889416 0.192433 +vt 0.889417 0.175822 +vt 0.889417 0.167567 +vt 0.891408 0.171694 +vt 0.892504 0.171358 +vt 0.887001 0.180001 +vt 0.887003 0.164722 +vt 0.892503 0.186632 +vt 0.887001 0.195279 +vt 0.887001 0.180000 +vt 0.893434 0.199481 +vt 0.893434 0.195279 +vt 0.893434 0.175798 +vt 0.887001 0.175798 +vt 0.892503 0.167152 +vt 0.892503 0.169166 +vt 0.892340 0.181007 +vt 0.884233 0.178993 +vt 0.892340 0.178993 +vt 0.888941 0.169623 +vt 0.889953 0.185757 +vt 0.888941 0.185757 +vt 0.894662 0.178993 +vt 0.894662 0.181007 +vt 0.887000 0.184202 +vt 0.892501 0.192852 +vt 0.886997 0.199481 +vt 0.893436 0.164726 +vt 0.887004 0.160520 +vt 0.893437 0.160524 +vt 0.889953 0.190377 +vt 0.893433 0.180005 +vt 0.886692 0.191404 +vt 0.893329 0.185188 +vt 0.886692 0.168596 +vt 0.883717 0.174516 +vt 0.886841 0.187724 +vt 0.895178 0.174516 +vt 0.889953 0.169623 +vt 0.885461 0.180000 +vt 0.885460 0.184201 +vt 0.885461 0.160520 +vt 0.887001 0.160520 +vt 0.885464 0.160519 +vt 0.885461 0.175798 +vt 0.887001 0.199480 +vt 0.885461 0.195279 +vt 0.885463 0.164721 +vt 0.885461 0.180000 +vt 0.886081 0.176822 +vt 0.882826 0.183178 +vt 0.882826 0.176822 +vt 0.892816 0.183178 +vt 0.892816 0.176822 +vt 0.891017 0.188554 +vt 0.887807 0.188671 +vt 0.886081 0.183178 +vt 0.887807 0.171329 +vt 0.889416 0.170530 +vt 0.891017 0.171446 +vt 0.839196 0.190000 +vt 0.879397 0.180000 +vt 0.879397 0.190000 +vt 0.839196 0.170000 +vt 0.879397 0.170000 +vt 0.879397 0.160000 +vt 0.839196 0.160000 +vt 0.839196 0.200000 +vt 0.879397 0.200000 +vt 0.896061 0.183178 +vt 0.897727 0.176822 +vt 0.897727 0.183178 +vt 0.881167 0.176822 +vt 0.881167 0.183178 +vt 0.887433 0.182496 +vt 0.889293 0.187034 +vt 0.885347 0.182496 +vt 0.889293 0.172966 +vt 0.887433 0.177504 +vt 0.885347 0.177504 +vt 0.890610 0.177504 +vt 0.888908 0.182496 +vt 0.888908 0.177504 +vt 0.882265 0.177504 +vt 0.882265 0.182496 +vt 0.896630 0.182496 +vt 0.890610 0.182496 +vt 0.889417 0.171745 +vt 0.891408 0.175873 +vt 0.889416 0.180000 +vt 0.889417 0.180000 +vt 0.891408 0.184128 +vt 0.889417 0.188255 +vt 0.889416 0.184178 +vt 0.891408 0.188306 +vt 0.889416 0.192433 +vt 0.889417 0.175822 +vt 0.889417 0.167567 +vt 0.891408 0.171694 +vt 0.892504 0.171358 +vt 0.887001 0.180001 +vt 0.887003 0.164722 +vt 0.892503 0.186632 +vt 0.887001 0.195279 +vt 0.887001 0.180000 +vt 0.893434 0.199481 +vt 0.893434 0.195279 +vt 0.893434 0.175798 +vt 0.887001 0.175798 +vt 0.892503 0.167152 +vt 0.892503 0.169166 +vt 0.892340 0.181007 +vt 0.884233 0.178993 +vt 0.892340 0.178993 +vt 0.888941 0.169623 +vt 0.889953 0.185757 +vt 0.888941 0.185757 +vt 0.894662 0.178993 +vt 0.894662 0.181007 +vt 0.887000 0.184202 +vt 0.892501 0.192852 +vt 0.886997 0.199481 +vt 0.893436 0.164726 +vt 0.887004 0.160520 +vt 0.893437 0.160524 +vt 0.889953 0.190377 +vt 0.893433 0.180005 +vt 0.886692 0.191404 +vt 0.893329 0.185188 +vt 0.886692 0.168596 +vt 0.883717 0.174516 +vt 0.886841 0.187724 +vt 0.895178 0.174516 +vt 0.889953 0.169623 +vt 0.885461 0.180000 +vt 0.885460 0.184201 +vt 0.885461 0.160520 +vt 0.887001 0.160520 +vt 0.885464 0.160519 +vt 0.885461 0.175798 +vt 0.887001 0.199480 +vt 0.885461 0.195279 +vt 0.885463 0.164721 +vt 0.885461 0.180000 +vt 0.886081 0.183178 +vt 0.882826 0.176822 +vt 0.886081 0.176822 +vt 0.892816 0.183178 +vt 0.892816 0.176822 +vt 0.891017 0.188554 +vt 0.887807 0.188671 +vt 0.887807 0.171329 +vt 0.889416 0.170530 +vt 0.891017 0.171446 +vt 0.879397 0.190000 +vt 0.839196 0.180000 +vt 0.879397 0.180000 +vt 0.839196 0.170000 +vt 0.879397 0.170000 +vt 0.879397 0.160000 +vt 0.839196 0.160000 +vt 0.839196 0.200000 +vt 0.879397 0.200000 +vt 0.896061 0.183178 +vt 0.897727 0.176822 +vt 0.897727 0.183178 +vt 0.881167 0.183178 +vt 0.882826 0.183178 +vt 0.887433 0.182496 +vt 0.889293 0.187034 +vt 0.885347 0.182496 +vt 0.889293 0.172966 +vt 0.887433 0.177504 +vt 0.885347 0.177504 +vt 0.890610 0.177504 +vt 0.888908 0.182496 +vt 0.888908 0.177504 +vt 0.882265 0.177504 +vt 0.882265 0.182496 +vt 0.896630 0.182496 +vt 0.890610 0.182496 +vt 0.889417 0.171745 +vt 0.891408 0.175873 +vt 0.889416 0.180000 +vt 0.889417 0.180000 +vt 0.891408 0.184128 +vt 0.889417 0.188255 +vt 0.889416 0.184178 +vt 0.891408 0.188306 +vt 0.889416 0.192433 +vt 0.889417 0.175822 +vt 0.889417 0.167567 +vt 0.891408 0.171694 +vt 0.892504 0.171358 +vt 0.887001 0.180001 +vt 0.887003 0.164722 +vt 0.892503 0.186632 +vt 0.887001 0.195279 +vt 0.887001 0.180000 +vt 0.893434 0.199481 +vt 0.893434 0.195279 +vt 0.893434 0.175798 +vt 0.887001 0.175798 +vt 0.892503 0.167152 +vt 0.892503 0.169166 +vt 0.892340 0.181007 +vt 0.884233 0.178993 +vt 0.892340 0.178993 +vt 0.888941 0.169623 +vt 0.889953 0.185757 +vt 0.888941 0.185757 +vt 0.894662 0.178993 +vt 0.894662 0.181007 +vt 0.887000 0.184202 +vt 0.892501 0.192852 +vt 0.886997 0.199481 +vt 0.893436 0.164726 +vt 0.887004 0.160520 +vt 0.893437 0.160524 +vt 0.889953 0.190377 +vt 0.893433 0.180005 +vt 0.886692 0.191404 +vt 0.893329 0.185188 +vt 0.886692 0.168596 +vt 0.883717 0.174516 +vt 0.886841 0.187724 +vt 0.895178 0.174516 +vt 0.889953 0.169623 +vt 0.885461 0.180000 +vt 0.885460 0.184201 +vt 0.885461 0.160520 +vt 0.887001 0.160520 +vt 0.885464 0.160519 +vt 0.885461 0.175798 +vt 0.887001 0.199480 +vt 0.885461 0.195279 +vt 0.885463 0.164721 +vt 0.885461 0.180000 +vt 0.886081 0.176822 +vt 0.882826 0.183178 +vt 0.882826 0.176822 +vt 0.892816 0.183178 +vt 0.892816 0.176822 +vt 0.891017 0.188554 +vt 0.887807 0.188671 +vt 0.886081 0.183178 +vt 0.887807 0.171329 +vt 0.889416 0.170530 +vt 0.891017 0.171446 +vt 0.879397 0.190000 +vt 0.839196 0.180000 +vt 0.879397 0.180000 +vt 0.839196 0.170000 +vt 0.879397 0.170000 +vt 0.879397 0.160000 +vt 0.839196 0.160000 +vt 0.839196 0.200000 +vt 0.879397 0.200000 +vt 0.896061 0.183178 +vt 0.897727 0.176822 +vt 0.897727 0.183178 +vt 0.881167 0.176822 +vt 0.881167 0.183178 +vt 0.887433 0.182496 +vt 0.889293 0.187034 +vt 0.885347 0.182496 +vt 0.889293 0.172966 +vt 0.887433 0.177504 +vt 0.885347 0.177504 +vt 0.890610 0.177504 +vt 0.888908 0.182496 +vt 0.888908 0.177504 +vt 0.882265 0.177504 +vt 0.882265 0.182496 +vt 0.896630 0.182496 +vt 0.890610 0.182496 +vt 0.889417 0.171745 +vt 0.891408 0.175873 +vt 0.889416 0.180000 +vt 0.889417 0.180000 +vt 0.891408 0.184128 +vt 0.889417 0.188255 +vt 0.889416 0.184178 +vt 0.891408 0.188306 +vt 0.889416 0.192433 +vt 0.889417 0.175822 +vt 0.889417 0.167567 +vt 0.891408 0.171694 +vt 0.892504 0.171358 +vt 0.887001 0.180001 +vt 0.887003 0.164722 +vt 0.892503 0.186632 +vt 0.887001 0.195279 +vt 0.887001 0.180000 +vt 0.893434 0.199481 +vt 0.893434 0.195279 +vt 0.893434 0.175798 +vt 0.887001 0.175798 +vt 0.892503 0.167152 +vt 0.892503 0.169166 +vt 0.892340 0.181007 +vt 0.884233 0.178993 +vt 0.892340 0.178993 +vt 0.888941 0.169623 +vt 0.889953 0.185757 +vt 0.888941 0.185757 +vt 0.894662 0.178993 +vt 0.894662 0.181007 +vt 0.887000 0.184202 +vt 0.892501 0.192852 +vt 0.886997 0.199481 +vt 0.893436 0.164726 +vt 0.887004 0.160520 +vt 0.893437 0.160524 +vt 0.889953 0.190377 +vt 0.893433 0.180005 +vt 0.886692 0.191404 +vt 0.893329 0.185188 +vt 0.886692 0.168596 +vt 0.883717 0.174516 +vt 0.886841 0.187724 +vt 0.895178 0.174516 +vt 0.889953 0.169623 +vt 0.885461 0.180000 +vt 0.885460 0.184201 +vt 0.885461 0.160520 +vt 0.887001 0.160520 +vt 0.885464 0.160519 +vt 0.885461 0.175798 +vt 0.887001 0.199480 +vt 0.885461 0.195279 +vt 0.885463 0.164721 +vt 0.885461 0.180000 +vt 0.886081 0.176822 +vt 0.882826 0.183178 +vt 0.882826 0.176822 +vt 0.892816 0.183178 +vt 0.892816 0.176822 +vt 0.891017 0.188554 +vt 0.887807 0.188671 +vt 0.886081 0.183178 +vt 0.887807 0.171329 +vt 0.889416 0.170530 +vt 0.891017 0.171446 +vt 0.839196 0.190000 +vt 0.879397 0.180000 +vt 0.879397 0.190000 +vt 0.839196 0.170000 +vt 0.879397 0.170000 +vt 0.839196 0.160000 +vt 0.839196 0.200000 +vt 0.879397 0.200000 +vt 0.896061 0.183178 +vt 0.897727 0.176822 +vt 0.897727 0.183178 +vt 0.881167 0.176822 +vt 0.881167 0.183178 +vt 0.887433 0.182496 +vt 0.889293 0.187034 +vt 0.885347 0.182496 +vt 0.889293 0.172966 +vt 0.887433 0.177504 +vt 0.885347 0.177504 +vt 0.890610 0.177504 +vt 0.888908 0.182496 +vt 0.888908 0.177504 +vt 0.882265 0.177504 +vt 0.882265 0.182496 +vt 0.896630 0.182496 +vt 0.890610 0.182496 +vt 0.889417 0.171745 +vt 0.891408 0.175873 +vt 0.889416 0.180000 +vt 0.889417 0.180000 +vt 0.891408 0.184128 +vt 0.889417 0.188255 +vt 0.889416 0.184178 +vt 0.891408 0.188306 +vt 0.889416 0.192433 +vt 0.889417 0.175822 +vt 0.889417 0.167567 +vt 0.891408 0.171694 +vt 0.892504 0.171358 +vt 0.887001 0.180001 +vt 0.887003 0.164722 +vt 0.892503 0.186632 +vt 0.887001 0.195279 +vt 0.887001 0.180000 +vt 0.887001 0.199480 +vt 0.893434 0.195279 +vt 0.893434 0.199481 +vt 0.893434 0.175798 +vt 0.887001 0.175798 +vt 0.892503 0.167152 +vt 0.892503 0.169166 +vt 0.892340 0.181007 +vt 0.884233 0.178993 +vt 0.892340 0.178993 +vt 0.888941 0.169623 +vt 0.889953 0.185757 +vt 0.888941 0.185757 +vt 0.894662 0.178993 +vt 0.894662 0.181007 +vt 0.887000 0.184202 +vt 0.892501 0.192852 +vt 0.886997 0.199481 +vt 0.893436 0.164726 +vt 0.887004 0.160520 +vt 0.893437 0.160524 +vt 0.889953 0.190377 +vt 0.893433 0.180005 +vt 0.886692 0.191404 +vt 0.893329 0.185188 +vt 0.886692 0.168596 +vt 0.883717 0.174516 +vt 0.886841 0.187724 +vt 0.895178 0.174516 +vt 0.889953 0.169623 +vt 0.885461 0.180000 +vt 0.885460 0.184201 +vt 0.885461 0.160520 +vt 0.887001 0.160520 +vt 0.885464 0.160519 +vt 0.885461 0.175798 +vt 0.885461 0.195279 +vt 0.885463 0.164721 +vt 0.885461 0.180000 +vt 0.886081 0.176822 +vt 0.882826 0.183178 +vt 0.882826 0.176822 +vt 0.892816 0.183178 +vt 0.892816 0.176822 +vt 0.891017 0.188554 +vt 0.887807 0.188671 +vt 0.886081 0.183178 +vt 0.887807 0.171329 +vt 0.889416 0.170530 +vt 0.891017 0.171446 +vt 0.879397 0.190000 +vt 0.839196 0.180000 +vt 0.879397 0.180000 +vt 0.839196 0.170000 +vt 0.879397 0.170000 +vt 0.879397 0.160000 +vt 0.839196 0.160000 +vt 0.839196 0.200000 +vt 0.879397 0.200000 +vt 0.896061 0.183178 +vt 0.897727 0.176822 +vt 0.897727 0.183178 +vt 0.881167 0.176822 +vt 0.881167 0.183178 +vt 0.887433 0.182496 +vt 0.889293 0.187034 +vt 0.885347 0.182496 +vt 0.889293 0.172966 +vt 0.887433 0.177504 +vt 0.885347 0.177504 +vt 0.890610 0.177504 +vt 0.888908 0.182496 +vt 0.888908 0.177504 +vt 0.882265 0.177504 +vt 0.882265 0.182496 +vt 0.896630 0.182496 +vt 0.890610 0.182496 +vt 0.889417 0.171745 +vt 0.891408 0.175873 +vt 0.889416 0.180000 +vt 0.889417 0.180000 +vt 0.891408 0.184128 +vt 0.889417 0.188255 +vt 0.889416 0.184178 +vt 0.891408 0.188306 +vt 0.889416 0.192433 +vt 0.889417 0.175822 +vt 0.889417 0.167567 +vt 0.891408 0.171694 +vt 0.892504 0.171358 +vt 0.887001 0.180001 +vt 0.887003 0.164722 +vt 0.892503 0.186632 +vt 0.887001 0.195279 +vt 0.887001 0.180000 +vt 0.893434 0.199481 +vt 0.893434 0.195279 +vt 0.893434 0.175798 +vt 0.887001 0.175798 +vt 0.892503 0.167152 +vt 0.892503 0.169166 +vt 0.892340 0.181007 +vt 0.884233 0.178993 +vt 0.892340 0.178993 +vt 0.888941 0.169623 +vt 0.889953 0.185757 +vt 0.888941 0.185757 +vt 0.894662 0.178993 +vt 0.894662 0.181007 +vt 0.887000 0.184202 +vt 0.892501 0.192852 +vt 0.886997 0.199481 +vt 0.893436 0.164726 +vt 0.887004 0.160520 +vt 0.893437 0.160524 +vt 0.889953 0.190377 +vt 0.893433 0.180005 +vt 0.886692 0.191404 +vt 0.893329 0.185188 +vt 0.886692 0.168596 +vt 0.883717 0.174516 +vt 0.886841 0.187724 +vt 0.895178 0.174516 +vt 0.889953 0.169623 +vt 0.885461 0.180000 +vt 0.885460 0.184201 +vt 0.885461 0.160520 +vt 0.887001 0.160520 +vt 0.885464 0.160519 +vt 0.885461 0.175798 +vt 0.887001 0.199480 +vt 0.885461 0.195279 +vt 0.885463 0.164721 +vt 0.885461 0.180000 +vt 0.886081 0.176822 +vt 0.882826 0.183178 +vt 0.882826 0.176822 +vt 0.892816 0.183178 +vt 0.892816 0.176822 +vt 0.891017 0.188554 +vt 0.887807 0.188671 +vt 0.886081 0.183178 +vt 0.887807 0.171329 +vt 0.889416 0.170530 +vt 0.891017 0.171446 +vt 0.839196 0.190000 +vt 0.879397 0.180000 +vt 0.879397 0.190000 +vt 0.839196 0.170000 +vt 0.879397 0.170000 +vt 0.839196 0.160000 +vt 0.839196 0.200000 +vt 0.879397 0.200000 +vt 0.896061 0.183178 +vt 0.897727 0.176822 +vt 0.897727 0.183178 +vt 0.881167 0.176822 +vt 0.881167 0.183178 +vt 0.887433 0.182496 +vt 0.889293 0.187034 +vt 0.885347 0.182496 +vt 0.889293 0.172966 +vt 0.887433 0.177504 +vt 0.885347 0.177504 +vt 0.890610 0.177504 +vt 0.888908 0.182496 +vt 0.888908 0.177504 +vt 0.882265 0.177504 +vt 0.882265 0.182496 +vt 0.896630 0.182496 +vt 0.890610 0.182496 +vt 0.889417 0.171745 +vt 0.891408 0.175873 +vt 0.889416 0.180000 +vt 0.889417 0.180000 +vt 0.891408 0.184128 +vt 0.889417 0.188255 +vt 0.889416 0.184178 +vt 0.891408 0.188306 +vt 0.889416 0.192433 +vt 0.889417 0.175822 +vt 0.889417 0.167567 +vt 0.891408 0.171694 +vt 0.892504 0.171358 +vt 0.887001 0.180001 +vt 0.887003 0.164722 +vt 0.892503 0.186632 +vt 0.887001 0.195279 +vt 0.887001 0.180000 +vt 0.887001 0.199480 +vt 0.893434 0.195279 +vt 0.893434 0.199481 +vt 0.893434 0.175798 +vt 0.887001 0.175798 +vt 0.892503 0.167152 +vt 0.892503 0.169166 +vt 0.892340 0.181007 +vt 0.884233 0.178993 +vt 0.892340 0.178993 +vt 0.888941 0.169623 +vt 0.889953 0.185757 +vt 0.888941 0.185757 +vt 0.894662 0.178993 +vt 0.894662 0.181007 +vt 0.887000 0.184202 +vt 0.892501 0.192852 +vt 0.886997 0.199481 +vt 0.893436 0.164726 +vt 0.887004 0.160520 +vt 0.893437 0.160524 +vt 0.889953 0.190377 +vt 0.893433 0.180005 +vt 0.886692 0.191404 +vt 0.893329 0.185188 +vt 0.886692 0.168596 +vt 0.883717 0.174516 +vt 0.886841 0.187724 +vt 0.895178 0.174516 +vt 0.889953 0.169623 +vt 0.885461 0.180000 +vt 0.885460 0.184201 +vt 0.885461 0.160520 +vt 0.887001 0.160520 +vt 0.885464 0.160519 +vt 0.885461 0.175798 +vt 0.885461 0.195279 +vt 0.885463 0.164721 +vt 0.885461 0.180000 +vt 0.886081 0.183178 +vt 0.882826 0.176822 +vt 0.886081 0.176822 +vt 0.892816 0.183178 +vt 0.892816 0.176822 +vt 0.891017 0.188554 +vt 0.887807 0.188671 +vt 0.887807 0.171329 +vt 0.889416 0.170530 +vt 0.891017 0.171446 +vt 0.879397 0.190000 +vt 0.839196 0.180000 +vt 0.879397 0.180000 +vt 0.839196 0.170000 +vt 0.879397 0.170000 +vt 0.879397 0.160000 +vt 0.839196 0.160000 +vt 0.839196 0.200000 +vt 0.879397 0.200000 +vt 0.896061 0.183178 +vt 0.897727 0.176822 +vt 0.897727 0.183178 +vt 0.881167 0.176822 +vt 0.882826 0.183178 +vt 0.881167 0.183178 +vt 0.887433 0.182496 +vt 0.889293 0.187034 +vt 0.885347 0.182496 +vt 0.889293 0.172966 +vt 0.887433 0.177504 +vt 0.885347 0.177504 +vt 0.890610 0.182496 +vt 0.888908 0.177504 +vt 0.890610 0.177504 +vt 0.882265 0.177504 +vt 0.882265 0.182496 +vt 0.896630 0.182496 +vt 0.889417 0.171745 +vt 0.891408 0.175873 +vt 0.889416 0.180000 +vt 0.889417 0.180000 +vt 0.891408 0.184128 +vt 0.889417 0.188255 +vt 0.889416 0.184178 +vt 0.891408 0.188306 +vt 0.889416 0.192433 +vt 0.889417 0.175822 +vt 0.889417 0.167567 +vt 0.891408 0.171694 +vt 0.892504 0.171358 +vt 0.887001 0.180001 +vt 0.887003 0.164722 +vt 0.892503 0.186632 +vt 0.887001 0.195279 +vt 0.887001 0.180000 +vt 0.893434 0.199481 +vt 0.893434 0.195279 +vt 0.893434 0.175798 +vt 0.887001 0.175798 +vt 0.892503 0.167152 +vt 0.892503 0.169166 +vt 0.892340 0.181007 +vt 0.884233 0.178993 +vt 0.892340 0.178993 +vt 0.888941 0.169623 +vt 0.889953 0.185757 +vt 0.888941 0.185757 +vt 0.894662 0.178993 +vt 0.894662 0.181007 +vt 0.887000 0.184202 +vt 0.892501 0.192852 +vt 0.886997 0.199481 +vt 0.893436 0.164726 +vt 0.887004 0.160520 +vt 0.893437 0.160524 +vt 0.889953 0.190377 +vt 0.893433 0.180005 +vt 0.886692 0.191404 +vt 0.893329 0.185188 +vt 0.886692 0.168596 +vt 0.883717 0.174516 +vt 0.886841 0.187724 +vt 0.895178 0.174516 +vt 0.889953 0.169623 +vt 0.885461 0.180000 +vt 0.885460 0.184201 +vt 0.885461 0.160520 +vt 0.887001 0.160520 +vt 0.885464 0.160519 +vt 0.885461 0.175798 +vt 0.887001 0.199480 +vt 0.885461 0.195279 +vt 0.885463 0.164721 +vt 0.885461 0.180000 +vt 0.886081 0.176822 +vt 0.882826 0.183178 +vt 0.882826 0.176822 +vt 0.892816 0.183178 +vt 0.892816 0.176822 +vt 0.891017 0.188554 +vt 0.887807 0.188671 +vt 0.886081 0.183178 +vt 0.887807 0.171329 +vt 0.889416 0.170530 +vt 0.891017 0.171446 +vt 0.879397 0.190000 +vt 0.839196 0.180000 +vt 0.879397 0.180000 +vt 0.839196 0.170000 +vt 0.879397 0.170000 +vt 0.839196 0.160000 +vt 0.839196 0.200000 +vt 0.879397 0.200000 +vt 0.896061 0.183178 +vt 0.897727 0.176822 +vt 0.897727 0.183178 +vt 0.881167 0.176822 +vt 0.881167 0.183178 +vt 0.887433 0.182496 +vt 0.889293 0.187034 +vt 0.885347 0.182496 +vt 0.889293 0.172966 +vt 0.887433 0.177504 +vt 0.885347 0.177504 +vt 0.890610 0.177504 +vt 0.888908 0.182496 +vt 0.888908 0.177504 +vt 0.882265 0.177504 +vt 0.882265 0.182496 +vt 0.896630 0.182496 +vt 0.890610 0.182496 +vt 0.889417 0.171745 +vt 0.891408 0.175873 +vt 0.889416 0.180000 +vt 0.889417 0.180000 +vt 0.891408 0.184128 +vt 0.889417 0.188255 +vt 0.889416 0.184178 +vt 0.891408 0.188306 +vt 0.889416 0.192433 +vt 0.889417 0.175822 +vt 0.889417 0.167567 +vt 0.891408 0.171694 +vt 0.892504 0.171358 +vt 0.887001 0.180001 +vt 0.887003 0.164722 +vt 0.892503 0.186632 +vt 0.887001 0.195279 +vt 0.887001 0.180000 +vt 0.893434 0.199481 +vt 0.893434 0.195279 +vt 0.893434 0.175798 +vt 0.887001 0.175798 +vt 0.892503 0.167152 +vt 0.892503 0.169166 +vt 0.892340 0.181007 +vt 0.884233 0.178993 +vt 0.892340 0.178993 +vt 0.888941 0.169623 +vt 0.889953 0.185757 +vt 0.888941 0.185757 +vt 0.894662 0.178993 +vt 0.894662 0.181007 +vt 0.886997 0.199481 +vt 0.892501 0.190838 +vt 0.892501 0.192852 +vt 0.893436 0.164726 +vt 0.887004 0.160520 +vt 0.893437 0.160524 +vt 0.889953 0.190377 +vt 0.893433 0.180005 +vt 0.887000 0.184202 +vt 0.886692 0.191404 +vt 0.893329 0.185188 +vt 0.886692 0.168596 +vt 0.883717 0.174516 +vt 0.886841 0.187724 +vt 0.895178 0.174516 +vt 0.889953 0.169623 +vt 0.885461 0.180000 +vt 0.885460 0.184201 +vt 0.885461 0.160520 +vt 0.887001 0.160520 +vt 0.885464 0.160519 +vt 0.885461 0.175798 +vt 0.887001 0.199480 +vt 0.885461 0.195279 +vt 0.885463 0.164721 +vt 0.885461 0.180000 +vt 0.886081 0.176822 +vt 0.882826 0.183178 +vt 0.882826 0.176822 +vt 0.892816 0.183178 +vt 0.892816 0.176822 +vt 0.891017 0.188554 +vt 0.887807 0.188671 +vt 0.886081 0.183178 +vt 0.887807 0.171329 +vt 0.889416 0.170530 +vt 0.891017 0.171446 +vt 0.839196 0.190000 +vt 0.879397 0.180000 +vt 0.879397 0.190000 +vt 0.839196 0.170000 +vt 0.879397 0.170000 +vt 0.879397 0.160000 +vt 0.839196 0.160000 +vt 0.839196 0.200000 +vt 0.879397 0.200000 +vt 0.896061 0.183178 +vt 0.897727 0.176822 +vt 0.897727 0.183178 +vt 0.881167 0.176822 +vt 0.881167 0.183178 +vt 0.887433 0.182496 +vt 0.889293 0.187034 +vt 0.885347 0.182496 +vt 0.889293 0.172966 +vt 0.887433 0.177504 +vt 0.885347 0.177504 +vt 0.890610 0.177504 +vt 0.888908 0.182496 +vt 0.888908 0.177504 +vt 0.882265 0.177504 +vt 0.882265 0.182496 +vt 0.896630 0.182496 +vt 0.890610 0.182496 +vt 0.889417 0.171745 +vt 0.891408 0.175873 +vt 0.889416 0.180000 +vt 0.889417 0.180000 +vt 0.891408 0.184128 +vt 0.889417 0.188255 +vt 0.889416 0.184178 +vt 0.891408 0.188306 +vt 0.889416 0.192433 +vt 0.889417 0.175822 +vt 0.889417 0.167567 +vt 0.891408 0.171694 +vt 0.892504 0.171358 +vt 0.887001 0.180001 +vt 0.887003 0.164722 +vt 0.892503 0.186632 +vt 0.887001 0.195279 +vt 0.887001 0.180000 +vt 0.893434 0.199481 +vt 0.893434 0.195279 +vt 0.887001 0.175798 +vt 0.893434 0.180000 +vt 0.892503 0.167152 +vt 0.892503 0.169166 +vt 0.892340 0.181007 +vt 0.884233 0.178993 +vt 0.892340 0.178993 +vt 0.888941 0.169623 +vt 0.889953 0.185757 +vt 0.888941 0.185757 +vt 0.894662 0.178993 +vt 0.894662 0.181007 +vt 0.886997 0.199481 +vt 0.892501 0.190838 +vt 0.892501 0.192852 +vt 0.893436 0.164726 +vt 0.887004 0.160520 +vt 0.893437 0.160524 +vt 0.889953 0.190377 +vt 0.893433 0.180005 +vt 0.887000 0.184202 +vt 0.886692 0.191404 +vt 0.893329 0.185188 +vt 0.886692 0.168596 +vt 0.883717 0.174516 +vt 0.886841 0.187724 +vt 0.895178 0.174516 +vt 0.889953 0.169623 +vt 0.885461 0.180000 +vt 0.885460 0.184201 +vt 0.885461 0.160520 +vt 0.887001 0.160520 +vt 0.885464 0.160519 +vt 0.885461 0.175798 +vt 0.887001 0.199480 +vt 0.885461 0.195279 +vt 0.885463 0.164721 +vt 0.885461 0.180000 +vt 0.886081 0.183178 +vt 0.882826 0.176822 +vt 0.886081 0.176822 +vt 0.892816 0.183178 +vt 0.892816 0.176822 +vt 0.891017 0.188554 +vt 0.887807 0.188671 +vt 0.887807 0.171329 +vt 0.889416 0.170530 +vt 0.891017 0.171446 +vt 0.839196 0.190000 +vt 0.879397 0.180000 +vt 0.879397 0.190000 +vt 0.839196 0.170000 +vt 0.879397 0.170000 +vt 0.879397 0.160000 +vt 0.839196 0.160000 +vt 0.839196 0.200000 +vt 0.879397 0.200000 +vt 0.896061 0.183178 +vt 0.897727 0.176822 +vt 0.897727 0.183178 +vt 0.881167 0.176822 +vt 0.882826 0.183178 +vt 0.881167 0.183178 +vt 0.887433 0.182496 +vt 0.889293 0.187034 +vt 0.885347 0.182496 +vt 0.889293 0.172966 +vt 0.887433 0.177504 +vt 0.885347 0.177504 +vt 0.890610 0.177504 +vt 0.888908 0.182496 +vt 0.888908 0.177504 +vt 0.882265 0.177504 +vt 0.882265 0.182496 +vt 0.896630 0.177504 +vt 0.890610 0.182496 +vt 0.889417 0.171745 +vt 0.891408 0.175873 +vt 0.889416 0.180000 +vt 0.889417 0.180000 +vt 0.891408 0.184128 +vt 0.889417 0.188255 +vt 0.889416 0.184178 +vt 0.891408 0.188306 +vt 0.889416 0.192433 +vt 0.889417 0.175822 +vt 0.889417 0.167567 +vt 0.891408 0.171694 +vt 0.884422 0.470000 +vt 0.884422 0.480000 +vt 0.844221 0.530000 +vt 0.844221 0.520000 +vt 0.884422 0.510000 +vt 0.879397 0.410000 +vt 0.849246 0.470000 +vt 0.678392 0.410000 +vt 0.678392 0.110000 +vt 0.673367 0.710000 +vt 0.678392 0.310000 +vt 0.678392 0.010000 +vt 0.678392 0.610000 +vt 0.673367 0.910000 +vt 0.678392 0.510000 +vt 0.673367 0.210000 +vt 0.678392 0.810000 +vt 0.840052 0.775000 +vt 0.842592 0.743079 +vt 0.849965 0.714283 +vt 0.861449 0.691430 +vt 0.875920 0.676758 +vt 0.922471 0.691430 +vt 0.891960 0.671702 +vt 0.908001 0.676758 +vt 0.933955 0.714283 +vt 0.941328 0.743079 +vt 0.943869 0.775000 +vt 0.933955 0.835717 +vt 0.922471 0.858570 +vt 0.908001 0.873242 +vt 0.875920 0.873242 +vt 0.861449 0.858570 +vt 0.849965 0.835717 +vt 0.844221 0.480000 +vt 0.884422 0.470000 +vt 0.884422 0.480000 +vt 0.889447 0.510000 +vt 0.884422 0.520000 +vt 0.844221 0.530000 +vt 0.844221 0.520000 +vt 0.839196 0.410000 +vt 0.879397 0.410000 +vt 0.849246 0.470000 +vt 0.899496 0.390000 +vt 0.850331 0.367915 +vt 0.846604 0.369764 +vt 0.842912 0.367657 +vt 0.839314 0.354742 +vt 0.840373 0.347395 +vt 0.843136 0.342085 +vt 0.846863 0.340235 +vt 0.850556 0.342342 +vt 0.854153 0.355258 +vt 0.854271 0.400000 +vt 0.844221 0.400000 +vt 0.889447 0.400000 +vt 0.864322 0.400000 +vt 0.879397 0.400000 +vt 0.843023 0.367788 +vt 0.840307 0.362383 +vt 0.839313 0.355000 +vt 0.843024 0.342212 +vt 0.846734 0.340233 +vt 0.850444 0.342212 +vt 0.854154 0.355000 +vt 0.853160 0.362383 +vt 0.850444 0.367788 +vt 0.892504 0.173372 +vt 0.892503 0.188646 +vt 0.893434 0.180000 +vt 0.884233 0.181007 +vt 0.892501 0.190838 +vt 0.888941 0.190377 +vt 0.893433 0.184206 +vt 0.893329 0.174812 +vt 0.892054 0.187724 +vt 0.885458 0.199480 +vt 0.885461 0.199481 +vt 0.889416 0.189470 +vt 0.839196 0.190000 +vt 0.896061 0.176822 +vt 0.888748 0.183825 +vt 0.883273 0.187034 +vt 0.883273 0.172966 +vt 0.888748 0.176175 +vt 0.896630 0.177504 +vt 0.886347 0.180000 +vt 0.886347 0.171745 +vt 0.890739 0.172717 +vt 0.890739 0.179029 +vt 0.886347 0.188255 +vt 0.886347 0.180000 +vt 0.890739 0.180972 +vt 0.890739 0.187283 +vt 0.890739 0.185150 +vt 0.890739 0.191462 +vt 0.886347 0.192433 +vt 0.886347 0.184178 +vt 0.890739 0.174850 +vt 0.886347 0.175822 +vt 0.886347 0.167567 +vt 0.890739 0.168539 +vt 0.839196 0.200000 +vt 0.844221 0.200000 +vt 0.844221 0.200000 +vt 0.844221 0.260000 +vt 0.844221 0.200000 +vt 0.844221 0.260000 +vt 0.844221 0.200000 +vt 0.844221 0.260000 +vt 0.844221 0.260000 +vt 0.844221 0.200000 +vt 0.844221 0.260000 +vt 0.844221 0.200000 +vt 0.839196 0.200000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.500000 0.333333 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.500000 0.333333 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.894472 0.650000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.500000 0.333333 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.500000 0.333333 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.500000 0.333333 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.500000 0.333333 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.854271 0.160000 +vt 0.839196 0.130000 +vt 0.984925 0.160000 +vt 0.919598 0.010000 +vt 0.929648 0.070000 +vt 1.000000 0.930000 +vt 1.000000 0.940000 +vt 0.839196 0.890000 +vt 0.839196 0.940000 +vt 0.854428 0.130313 +vt 0.929648 0.010000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.500000 0.333333 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.500000 0.333333 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.894472 0.650000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.500000 0.333333 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.500000 0.416667 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.500000 0.333333 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.500000 0.333333 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.839196 0.130000 +vt 0.984925 0.160000 +vt 0.994975 0.140000 +vt 0.919598 0.010000 +vt 0.929648 0.070000 +vt 0.854428 0.130313 +vt 0.929648 0.010000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.500000 0.333333 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.500000 0.333333 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.894472 0.650000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.500000 0.333333 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.909548 0.640000 +vt 0.904523 0.660000 +vt 0.899498 0.660000 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.500000 0.333333 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.500000 0.333333 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.500000 0.333333 +vt 0.899498 0.660000 +vt 0.894472 0.640000 +vt 0.909548 0.640000 +vt 0.899498 0.630000 +vt 0.904523 0.630000 +vt 0.839196 0.130000 +vt 0.984925 0.160000 +vt 0.919598 0.010000 +vt 0.929648 0.070000 +vt 0.854428 0.130313 +vt 0.929648 0.010000 +vt 0.892504 0.173372 +vt 0.892503 0.188646 +vt 0.893434 0.180000 +vt 0.884233 0.181007 +vt 0.892501 0.190838 +vt 0.888941 0.190377 +vt 0.893433 0.184206 +vt 0.893329 0.174812 +vt 0.892054 0.187724 +vt 0.885458 0.199480 +vt 0.885461 0.199481 +vt 0.889416 0.189470 +vt 0.839196 0.190000 +vt 0.879397 0.160000 +vt 0.896061 0.176822 +vt 0.888748 0.183825 +vt 0.883273 0.187034 +vt 0.883273 0.172966 +vt 0.888748 0.176175 +vt 0.882265 0.177504 +vt 0.896630 0.177504 +vt 0.886347 0.180000 +vt 0.886347 0.171745 +vt 0.890739 0.172717 +vt 0.890739 0.179029 +vt 0.886347 0.188255 +vt 0.886347 0.180000 +vt 0.890739 0.180972 +vt 0.890739 0.187283 +vt 0.890739 0.185150 +vt 0.890739 0.191462 +vt 0.886347 0.192433 +vt 0.886347 0.184178 +vt 0.890739 0.174850 +vt 0.886347 0.175822 +vt 0.886347 0.167567 +vt 0.890739 0.168539 +vt 0.892504 0.173372 +vt 0.892503 0.188646 +vt 0.893434 0.180000 +vt 0.884233 0.181007 +vt 0.892501 0.190838 +vt 0.888941 0.190377 +vt 0.893433 0.184206 +vt 0.893329 0.174812 +vt 0.892054 0.187724 +vt 0.885458 0.199480 +vt 0.885461 0.199481 +vt 0.889416 0.189470 +vt 0.839196 0.180000 +vt 0.896061 0.176822 +vt 0.888748 0.183825 +vt 0.883273 0.187034 +vt 0.883273 0.172966 +vt 0.888748 0.176175 +vt 0.896630 0.177504 +vt 0.886347 0.180000 +vt 0.886347 0.171745 +vt 0.890739 0.172717 +vt 0.890739 0.179029 +vt 0.886347 0.188255 +vt 0.886347 0.180000 +vt 0.890739 0.180972 +vt 0.890739 0.187283 +vt 0.890739 0.185150 +vt 0.890739 0.191462 +vt 0.886347 0.192433 +vt 0.886347 0.184178 +vt 0.890739 0.174850 +vt 0.886347 0.175822 +vt 0.886347 0.167567 +vt 0.890739 0.168539 +vt 0.892504 0.173372 +vt 0.892503 0.188646 +vt 0.893434 0.180000 +vt 0.884233 0.181007 +vt 0.892501 0.190838 +vt 0.888941 0.190377 +vt 0.893433 0.184206 +vt 0.893329 0.174812 +vt 0.892054 0.187724 +vt 0.885458 0.199480 +vt 0.885461 0.199481 +vt 0.889416 0.189470 +vt 0.839196 0.190000 +vt 0.896061 0.176822 +vt 0.881167 0.176822 +vt 0.888748 0.183825 +vt 0.883273 0.187034 +vt 0.883273 0.172966 +vt 0.888748 0.176175 +vt 0.896630 0.177504 +vt 0.886347 0.180000 +vt 0.886347 0.171745 +vt 0.890739 0.172717 +vt 0.890739 0.179029 +vt 0.886347 0.188255 +vt 0.886347 0.180000 +vt 0.890739 0.180972 +vt 0.890739 0.187283 +vt 0.890739 0.185150 +vt 0.890739 0.191462 +vt 0.886347 0.192433 +vt 0.886347 0.184178 +vt 0.890739 0.174850 +vt 0.886347 0.175822 +vt 0.886347 0.167567 +vt 0.890739 0.168539 +vt 0.892504 0.173372 +vt 0.892503 0.188646 +vt 0.893434 0.180000 +vt 0.884233 0.181007 +vt 0.892501 0.190838 +vt 0.888941 0.190377 +vt 0.893433 0.184206 +vt 0.893329 0.174812 +vt 0.892054 0.187724 +vt 0.885458 0.199480 +vt 0.885461 0.199481 +vt 0.889416 0.189470 +vt 0.839196 0.190000 +vt 0.896061 0.176822 +vt 0.888748 0.183825 +vt 0.883273 0.187034 +vt 0.883273 0.172966 +vt 0.888748 0.176175 +vt 0.896630 0.177504 +vt 0.886347 0.180000 +vt 0.886347 0.171745 +vt 0.890739 0.172717 +vt 0.890739 0.179029 +vt 0.886347 0.188255 +vt 0.886347 0.180000 +vt 0.890739 0.180972 +vt 0.890739 0.187283 +vt 0.890739 0.185150 +vt 0.890739 0.191462 +vt 0.886347 0.192433 +vt 0.886347 0.184178 +vt 0.890739 0.174850 +vt 0.886347 0.175822 +vt 0.886347 0.167567 +vt 0.890739 0.168539 +vt 0.892504 0.173372 +vt 0.892503 0.188646 +vt 0.893434 0.180000 +vt 0.884233 0.181007 +vt 0.892501 0.190838 +vt 0.888941 0.190377 +vt 0.893433 0.184206 +vt 0.893329 0.174812 +vt 0.892054 0.187724 +vt 0.885458 0.199480 +vt 0.885461 0.199481 +vt 0.889416 0.189470 +vt 0.839196 0.180000 +vt 0.879397 0.160000 +vt 0.896061 0.176822 +vt 0.888748 0.183825 +vt 0.883273 0.187034 +vt 0.883273 0.172966 +vt 0.888748 0.176175 +vt 0.896630 0.177504 +vt 0.886347 0.180000 +vt 0.886347 0.171745 +vt 0.890739 0.172717 +vt 0.890739 0.179029 +vt 0.886347 0.188255 +vt 0.886347 0.180000 +vt 0.890739 0.180972 +vt 0.890739 0.187283 +vt 0.890739 0.185150 +vt 0.890739 0.191462 +vt 0.886347 0.192433 +vt 0.886347 0.184178 +vt 0.890739 0.174850 +vt 0.886347 0.175822 +vt 0.886347 0.167567 +vt 0.890739 0.168539 +vt 0.892504 0.173372 +vt 0.892503 0.188646 +vt 0.893434 0.180000 +vt 0.884233 0.181007 +vt 0.892501 0.190838 +vt 0.888941 0.190377 +vt 0.893433 0.184206 +vt 0.893329 0.174812 +vt 0.892054 0.187724 +vt 0.885458 0.199480 +vt 0.885461 0.199481 +vt 0.889416 0.189470 +vt 0.839196 0.190000 +vt 0.896061 0.176822 +vt 0.888748 0.183825 +vt 0.883273 0.187034 +vt 0.883273 0.172966 +vt 0.888748 0.176175 +vt 0.896630 0.177504 +vt 0.886347 0.180000 +vt 0.886347 0.171745 +vt 0.890739 0.172717 +vt 0.890739 0.179029 +vt 0.886347 0.188255 +vt 0.886347 0.180000 +vt 0.890739 0.180972 +vt 0.890739 0.187283 +vt 0.890739 0.185150 +vt 0.890739 0.191462 +vt 0.886347 0.192433 +vt 0.886347 0.184178 +vt 0.890739 0.174850 +vt 0.886347 0.175822 +vt 0.886347 0.167567 +vt 0.890739 0.168539 +vt 0.892504 0.173372 +vt 0.892503 0.188646 +vt 0.893434 0.180000 +vt 0.884233 0.181007 +vt 0.892501 0.190838 +vt 0.888941 0.190377 +vt 0.893433 0.184206 +vt 0.893329 0.174812 +vt 0.892054 0.187724 +vt 0.885458 0.199480 +vt 0.885461 0.199481 +vt 0.889416 0.189470 +vt 0.839196 0.180000 +vt 0.879397 0.160000 +vt 0.896061 0.176822 +vt 0.888748 0.183825 +vt 0.883273 0.187034 +vt 0.883273 0.172966 +vt 0.888748 0.176175 +vt 0.896630 0.177504 +vt 0.886347 0.180000 +vt 0.886347 0.171745 +vt 0.890739 0.172717 +vt 0.890739 0.179029 +vt 0.886347 0.188255 +vt 0.886347 0.180000 +vt 0.890739 0.180972 +vt 0.890739 0.187283 +vt 0.890739 0.185150 +vt 0.890739 0.191462 +vt 0.886347 0.192433 +vt 0.886347 0.184178 +vt 0.890739 0.174850 +vt 0.886347 0.175822 +vt 0.886347 0.167567 +vt 0.890739 0.168539 +vt 0.892504 0.173372 +vt 0.892503 0.188646 +vt 0.893434 0.180000 +vt 0.884233 0.181007 +vt 0.892501 0.190838 +vt 0.888941 0.190377 +vt 0.893433 0.184206 +vt 0.893329 0.174812 +vt 0.892054 0.187724 +vt 0.885458 0.199480 +vt 0.885461 0.199481 +vt 0.889416 0.189470 +vt 0.839196 0.190000 +vt 0.896061 0.176822 +vt 0.888748 0.183825 +vt 0.883273 0.187034 +vt 0.883273 0.172966 +vt 0.888748 0.176175 +vt 0.888908 0.182496 +vt 0.896630 0.177504 +vt 0.886347 0.180000 +vt 0.886347 0.171745 +vt 0.890739 0.172717 +vt 0.890739 0.179029 +vt 0.886347 0.188255 +vt 0.886347 0.180000 +vt 0.890739 0.180972 +vt 0.890739 0.187283 +vt 0.890739 0.185150 +vt 0.890739 0.191462 +vt 0.886347 0.192433 +vt 0.886347 0.184178 +vt 0.890739 0.174850 +vt 0.886347 0.175822 +vt 0.886347 0.167567 +vt 0.890739 0.168539 +vt 0.892504 0.173372 +vt 0.892503 0.188646 +vt 0.893434 0.180000 +vt 0.884233 0.181007 +vt 0.892501 0.190838 +vt 0.888941 0.190377 +vt 0.893433 0.184206 +vt 0.893329 0.174812 +vt 0.892054 0.187724 +vt 0.885458 0.199480 +vt 0.885461 0.199481 +vt 0.889416 0.189470 +vt 0.839196 0.190000 +vt 0.879397 0.160000 +vt 0.896061 0.176822 +vt 0.888748 0.183825 +vt 0.883273 0.187034 +vt 0.883273 0.172966 +vt 0.888748 0.176175 +vt 0.896630 0.177504 +vt 0.886347 0.180000 +vt 0.886347 0.171745 +vt 0.890739 0.172717 +vt 0.890739 0.179029 +vt 0.886347 0.188255 +vt 0.886347 0.180000 +vt 0.890739 0.180972 +vt 0.890739 0.187283 +vt 0.890739 0.185150 +vt 0.890739 0.191462 +vt 0.886347 0.192433 +vt 0.886347 0.184178 +vt 0.890739 0.174850 +vt 0.886347 0.175822 +vt 0.886347 0.167567 +vt 0.890739 0.168539 +vt 0.892504 0.173372 +vt 0.892503 0.188646 +vt 0.893434 0.180000 +vt 0.884233 0.181007 +vt 0.888941 0.190377 +vt 0.893433 0.184206 +vt 0.893329 0.174812 +vt 0.892054 0.187724 +vt 0.885458 0.199480 +vt 0.885461 0.199481 +vt 0.889416 0.189470 +vt 0.839196 0.180000 +vt 0.896061 0.176822 +vt 0.888748 0.183825 +vt 0.883273 0.187034 +vt 0.883273 0.172966 +vt 0.888748 0.176175 +vt 0.896630 0.177504 +vt 0.886347 0.180000 +vt 0.886347 0.171745 +vt 0.890739 0.172717 +vt 0.890739 0.179029 +vt 0.886347 0.188255 +vt 0.886347 0.180000 +vt 0.890739 0.180972 +vt 0.890739 0.187283 +vt 0.890739 0.185150 +vt 0.890739 0.191462 +vt 0.886347 0.192433 +vt 0.886347 0.184178 +vt 0.890739 0.174850 +vt 0.886347 0.175822 +vt 0.886347 0.167567 +vt 0.890739 0.168539 +vt 0.892504 0.173372 +vt 0.892503 0.188646 +vt 0.893434 0.175798 +vt 0.884233 0.181007 +vt 0.888941 0.190377 +vt 0.893433 0.184206 +vt 0.893329 0.174812 +vt 0.892054 0.187724 +vt 0.885458 0.199480 +vt 0.885461 0.199481 +vt 0.889416 0.189470 +vt 0.839196 0.180000 +vt 0.896061 0.176822 +vt 0.888748 0.183825 +vt 0.883273 0.187034 +vt 0.883273 0.172966 +vt 0.888748 0.176175 +vt 0.896630 0.182496 +vt 0.886347 0.180000 +vt 0.886347 0.171745 +vt 0.890739 0.172717 +vt 0.890739 0.179029 +vt 0.886347 0.188255 +vt 0.886347 0.180000 +vt 0.890739 0.180972 +vt 0.890739 0.187283 +vt 0.890739 0.185150 +vt 0.890739 0.191462 +vt 0.886347 0.192433 +vt 0.886347 0.184178 +vt 0.890739 0.174850 +vt 0.886347 0.175822 +vt 0.886347 0.167567 +vt 0.890739 0.168539 +vt 0.869347 0.630000 +vt 0.849246 0.640000 +vt 0.849246 0.630000 +vt 0.869347 0.650000 +vt 0.849246 0.650000 +vt 0.869347 0.660000 +vt 0.849246 0.660000 +vt 0.869347 0.670000 +vt 0.849246 0.670000 +vt 0.880221 0.658724 +vt 0.886848 0.662880 +vt 0.881997 0.662880 +vt 0.869347 0.620000 +vt 0.849246 0.620000 +vt 0.849246 0.610000 +vt 0.844221 0.620000 +vt 0.844221 0.610000 +vt 0.839196 0.610000 +vt 0.844221 0.630000 +vt 0.839196 0.630000 +vt 0.839196 0.620000 +vt 0.844221 0.640000 +vt 0.839196 0.640000 +vt 0.844221 0.650000 +vt 0.844221 0.660000 +vt 0.839196 0.650000 +vt 0.839196 0.670000 +vt 0.839196 0.660000 +vt 0.869347 0.610000 +vt 0.874372 0.620000 +vt 0.874372 0.610000 +vt 0.879397 0.620000 +vt 0.874372 0.630000 +vt 0.879397 0.630000 +vt 0.874372 0.640000 +vt 0.869347 0.640000 +vt 0.879397 0.640000 +vt 0.874372 0.650000 +vt 0.879397 0.650000 +vt 0.874372 0.660000 +vt 0.879397 0.660000 +vt 0.874372 0.670000 +vt 0.879397 0.670000 +vt 0.886888 0.643403 +vt 0.884422 0.644949 +vt 0.881957 0.643403 +vt 0.145729 0.250000 +vt 0.311558 0.200000 +vt 0.311558 0.250000 +vt 0.145729 0.150000 +vt 0.311558 0.150000 +vt 0.311558 0.100000 +vt 0.145729 0.100000 +vt 0.311558 0.050000 +vt 0.145729 0.050000 +vt 0.311558 -0.000000 +vt 0.145729 1.000000 +vt 0.311558 0.950000 +vt 0.311558 1.000000 +vt 0.145729 0.950000 +vt 0.311558 0.900000 +vt 0.145729 0.900000 +vt 0.311558 0.850000 +vt 0.145729 0.800000 +vt 0.311558 0.800000 +vt 0.311558 0.750000 +vt 0.145729 0.700000 +vt 0.311558 0.700000 +vt 0.311558 0.650000 +vt 0.145729 0.600000 +vt 0.311558 0.600000 +vt 0.311558 0.550000 +vt 0.145729 0.550000 +vt 0.311558 0.500000 +vt 0.145729 0.500000 +vt 0.311558 0.450000 +vt 0.145729 0.400000 +vt 0.311558 0.400000 +vt 0.311558 0.350000 +vt 0.085427 0.150000 +vt 0.085427 0.110000 +vt 0.145729 0.300000 +vt 0.311558 0.300000 +vt 0.512563 0.050000 +vt 0.512563 0.090000 +vt 0.085427 0.890000 +vt 0.045226 0.850000 +vt 0.085427 0.850000 +vt 0.145729 0.850000 +vt 0.085427 0.210000 +vt 0.145729 0.200000 +vt 0.145729 0.650000 +vt 0.085427 0.610000 +vt 0.145729 0.350000 +vt 0.085427 0.390000 +vt 0.085427 0.350000 +vt 0.085427 0.950000 +vt 0.145729 0.750000 +vt 0.085427 0.710000 +vt 0.145729 0.450000 +vt 0.085427 0.490000 +vt 0.085427 0.450000 +vt 0.085427 0.050000 +vt 0.085427 0.810000 +vt 0.085427 0.550000 +vt 0.085427 0.310000 +vt 0.085427 0.910000 +vt 0.085427 0.650000 +vt 0.085427 0.410000 +vt 0.085427 0.010000 +vt 0.145729 -0.000000 +vt 0.085427 0.750000 +vt 0.085427 0.510000 +vt 0.085427 0.250000 +vt 0.045226 0.020000 +vt 0.015075 0.050000 +vt 0.015075 0.030000 +vt 0.045226 0.220000 +vt 0.045226 0.450000 +vt 0.045226 0.820000 +vt 0.085427 0.190000 +vt 0.045226 0.150000 +vt 0.045226 0.420000 +vt 0.085427 0.790000 +vt 0.045226 0.750000 +vt 0.045226 0.120000 +vt 0.045226 0.380000 +vt 0.045226 0.350000 +vt 0.045226 0.720000 +vt 0.045226 0.080000 +vt 0.045226 0.050000 +vt 0.045226 0.320000 +vt 0.085427 0.690000 +vt 0.045226 0.650000 +vt 0.085427 0.290000 +vt 0.045226 0.250000 +vt 0.045226 0.620000 +vt 0.085427 0.990000 +vt 0.045226 0.950000 +vt 0.085427 0.590000 +vt 0.045226 0.550000 +vt 0.045226 0.920000 +vt 0.045226 0.520000 +vt 0.015075 0.550000 +vt 0.000000 0.540000 +vt 0.015075 0.530000 +vt 0.045226 0.280000 +vt 0.015075 0.250000 +vt 0.015075 0.630000 +vt 0.045226 0.980000 +vt 0.015075 0.950000 +vt 0.015075 0.570000 +vt 0.015075 0.930000 +vt 0.015075 0.870000 +vt 0.015075 0.850000 +vt 0.015075 0.230000 +vt 0.015075 0.470000 +vt 0.015075 0.450000 +vt 0.015075 0.830000 +vt 0.045226 0.180000 +vt 0.015075 0.150000 +vt 0.015075 0.430000 +vt 0.045226 0.780000 +vt 0.015075 0.750000 +vt 0.015075 0.130000 +vt 0.015075 0.370000 +vt 0.015075 0.350000 +vt 0.015075 0.730000 +vt 0.015075 0.070000 +vt 0.015075 0.330000 +vt 0.015075 0.670000 +vt 0.015075 0.650000 +vt 0.953345 0.878086 +vt 0.945036 0.854673 +vt 0.953658 0.831713 +vt -0.000000 0.860000 +vt 0.000000 0.850000 +vt 0.000000 0.240000 +vt -0.000000 0.460000 +vt -0.000000 0.450000 +vt 0.000000 0.840000 +vt 0.000000 0.160000 +vt 0.000000 0.150000 +vt -0.000000 0.440000 +vt 0.000000 0.760000 +vt 0.000000 0.750000 +vt 0.000000 0.140000 +vt -0.000000 0.360000 +vt 0.000000 0.350000 +vt 0.000000 0.740000 +vt -0.000000 0.060000 +vt 0.000000 0.050000 +vt -0.000000 0.340000 +vt 0.000000 0.660000 +vt 0.000000 0.650000 +vt -0.000000 0.040000 +vt 0.000000 0.260000 +vt 0.000000 0.250000 +vt 0.000000 0.640000 +vt -0.000000 0.960000 +vt 0.000000 0.950000 +vt -0.000000 0.560000 +vt 0.000000 0.550000 +vt 0.000000 0.940000 +vt 0.512563 0.510000 +vt 0.512563 0.550000 +vt 0.512563 0.850000 +vt 0.512563 0.590000 +vt 0.512563 0.350000 +vt 0.512563 0.190000 +vt 0.512563 0.910000 +vt 0.512563 0.950000 +vt 0.512563 0.690000 +vt 0.512563 0.450000 +vt 0.512563 0.790000 +vt 0.512563 0.290000 +vt 0.512563 0.150000 +vt 0.512563 0.890000 +vt 0.512563 0.210000 +vt 0.512563 0.250000 +vt 0.512563 0.650000 +vt 0.512563 0.390000 +vt 0.512563 0.990000 +vt 0.512563 0.750000 +vt 0.512563 0.490000 +vt 0.512563 0.810000 +vt 0.512563 0.110000 +vt 0.512563 0.710000 +vt 0.512563 0.310000 +vt 0.839196 0.350000 +vt 0.839196 0.690000 +vt 0.839196 0.010000 +vt 0.839196 0.050000 +vt 0.839196 0.290000 +vt 0.839196 0.650000 +vt 0.839196 0.990000 +vt 0.839196 0.550000 +vt 0.839196 0.590000 +vt 0.839196 0.910000 +vt 0.839196 0.950000 +vt 0.839196 0.890000 +vt 0.839196 0.250000 +vt 0.839196 0.490000 +vt 0.839196 0.850000 +vt 0.839196 0.190000 +vt 0.839196 0.450000 +vt 0.839196 0.790000 +vt 0.839196 0.150000 +vt 0.839196 0.390000 +vt 0.839196 0.750000 +vt 0.839196 0.090000 +vt 0.849246 0.550000 +vt 0.864322 0.540000 +vt 0.864322 0.550000 +vt 0.839196 0.550000 +vt 0.844221 0.540000 +vt 0.844221 0.550000 +vt 0.849246 0.540000 +vt 0.849246 0.530000 +vt 0.864322 0.530000 +vt 0.839196 0.540000 +vt 0.844221 0.530000 +vt 0.849246 0.610000 +vt 0.864322 0.600000 +vt 0.864322 0.610000 +vt 0.844221 0.610000 +vt 0.839196 0.600000 +vt 0.844221 0.600000 +vt 0.849246 0.600000 +vt 0.849246 0.590000 +vt 0.864322 0.590000 +vt 0.839196 0.590000 +vt 0.844221 0.590000 +vt 0.844221 0.580000 +vt 0.849246 0.580000 +vt 0.864322 0.580000 +vt 0.839196 0.580000 +vt 0.849246 0.570000 +vt 0.864322 0.570000 +vt 0.839196 0.570000 +vt 0.844221 0.570000 +vt 0.844221 0.560000 +vt 0.849246 0.560000 +vt 0.864368 0.600000 +vt 0.865827 0.592995 +vt 0.869347 0.590093 +vt 0.864322 0.560000 +vt 0.849246 0.550000 +vt 0.864322 0.540000 +vt 0.864322 0.550000 +vt 0.839196 0.550000 +vt 0.844221 0.540000 +vt 0.844221 0.550000 +vt 0.849246 0.540000 +vt 0.864322 0.530000 +vt 0.839196 0.540000 +vt 0.844221 0.530000 +vt 0.849246 0.530000 +vt 0.849246 0.610000 +vt 0.864322 0.600000 +vt 0.864322 0.610000 +vt 0.839196 0.610000 +vt 0.844221 0.600000 +vt 0.844221 0.610000 +vt 0.849246 0.600000 +vt 0.849246 0.590000 +vt 0.864322 0.590000 +vt 0.839196 0.590000 +vt 0.844221 0.590000 +vt 0.849246 0.580000 +vt 0.864322 0.580000 +vt 0.844221 0.580000 +vt 0.849246 0.570000 +vt 0.864322 0.570000 +vt 0.839196 0.570000 +vt 0.844221 0.570000 +vt 0.844221 0.560000 +vt 0.849246 0.560000 +vt 0.864368 0.600000 +vt 0.865827 0.592995 +vt 0.869347 0.590093 +vt 0.864322 0.560000 +vt 0.864321 0.370000 +vt 0.869346 0.370000 +vt 0.859296 0.370000 +vt 0.854271 0.370000 +vt 0.849246 0.370000 +vt 0.844221 0.370000 +vt 0.839196 0.370000 +vt 0.899496 0.370000 +vt 0.894471 0.370000 +vt 0.889446 0.370000 +vt 0.884421 0.370000 +vt 0.879396 0.370000 +vt 0.874371 0.370000 +vt 0.864322 0.410000 +vt 0.889447 0.410000 +vt 0.849246 0.410000 +vt 0.844221 0.410000 +vt 0.869347 0.410000 +vt 0.859297 0.410000 +vt 0.884422 0.410000 +vt 0.839196 0.410000 +vt 0.854271 0.410000 +vt 0.879397 0.410000 +vt 0.894472 0.410000 +vt 0.874372 0.410000 +vt 0.869347 0.370000 +vt 0.874372 0.370000 +vt 0.879397 0.370000 +vt 0.889448 0.370000 +vt 0.884422 0.370000 +vt 0.899498 0.370000 +vt 0.894473 0.370000 +vt 0.839196 0.370000 +vt 0.849246 0.370000 +vt 0.844221 0.370000 +vt 0.854271 0.370000 +vt 0.864322 0.370000 +vt 0.859297 0.370000 +vt 0.874372 0.410000 +vt 0.844221 0.410000 +vt 0.889447 0.410000 +vt 0.864322 0.410000 +vt 0.879397 0.410000 +vt 0.849246 0.410000 +vt 0.894472 0.410000 +vt 0.884422 0.410000 +vt 0.859297 0.410000 +vt 0.839196 0.410000 +vt 0.892547 0.180000 +vt 0.890826 0.175822 +vt 0.892547 0.175822 +vt 0.886347 0.167567 +vt 0.892548 0.167567 +vt 0.890826 0.171745 +vt 0.890826 0.167567 +vt 0.890826 0.192433 +vt 0.889417 0.192433 +vt 0.890826 0.184178 +vt 0.890826 0.180000 +vt 0.892547 0.188255 +vt 0.890826 0.188255 +vt 0.886347 0.192433 +vt 0.892547 0.180000 +vt 0.890826 0.180000 +vt 0.904523 0.670000 +vt 0.914573 0.640000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.909548 0.630000 +vt 0.914573 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.650000 +vt 0.914573 0.660000 +vt 0.899498 0.620000 +vt 0.904523 0.670000 +vt 0.914573 0.640000 +vt 0.889447 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.630000 +vt 0.894472 0.630000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.909548 0.630000 +vt 0.914573 0.630000 +vt 0.914573 0.660000 +vt 0.909548 0.660000 +vt 0.904523 0.620000 +vt 0.904523 0.670000 +vt 0.914573 0.640000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.889447 0.630000 +vt 0.894472 0.630000 +vt 0.894472 0.660000 +vt 0.889447 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.650000 +vt 0.914573 0.660000 +vt 0.899498 0.620000 +vt 0.904523 0.620000 +vt 0.889447 0.650000 +vt 0.914573 0.640000 +vt 0.914573 0.650000 +vt 0.914573 0.660000 +vt 0.909548 0.660000 +vt 0.909548 0.630000 +vt 0.914573 0.630000 +vt 0.894472 0.660000 +vt 0.889447 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.640000 +vt 0.889447 0.630000 +vt 0.904523 0.670000 +vt 0.904523 0.670000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.889447 0.640000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.894472 0.660000 +vt 0.889447 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.899498 0.620000 +vt 0.904523 0.670000 +vt 0.914573 0.640000 +vt 0.889447 0.650000 +vt 0.889447 0.640000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.894472 0.660000 +vt 0.889447 0.660000 +vt 0.909548 0.630000 +vt 0.914573 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.650000 +vt 0.914573 0.660000 +vt 0.904523 0.620000 +vt 0.904523 0.620000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.894472 0.660000 +vt 0.889447 0.630000 +vt 0.889447 0.640000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.909548 0.630000 +vt 0.914573 0.640000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.914573 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.914573 0.640000 +vt 0.914573 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.909548 0.630000 +vt 0.899498 0.670000 +vt 0.899498 0.620000 +vt 0.904523 0.620000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.640000 +vt 0.889447 0.630000 +vt 0.914573 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.914573 0.640000 +vt 0.914573 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.909548 0.630000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.914573 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.914573 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.899498 0.670000 +vt 0.869347 0.630000 +vt 0.849246 0.640000 +vt 0.849246 0.630000 +vt 0.869347 0.650000 +vt 0.849246 0.650000 +vt 0.869347 0.660000 +vt 0.849246 0.660000 +vt 0.869347 0.670000 +vt 0.849246 0.670000 +vt 0.880221 0.658725 +vt 0.879571 0.655599 +vt 0.888623 0.658724 +vt 0.869347 0.620000 +vt 0.849246 0.620000 +vt 0.849246 0.610000 +vt 0.844221 0.620000 +vt 0.844221 0.610000 +vt 0.839196 0.610000 +vt 0.844221 0.630000 +vt 0.839196 0.630000 +vt 0.839196 0.620000 +vt 0.844221 0.640000 +vt 0.839196 0.640000 +vt 0.844221 0.650000 +vt 0.844221 0.660000 +vt 0.839196 0.650000 +vt 0.839196 0.670000 +vt 0.839196 0.660000 +vt 0.869347 0.610000 +vt 0.874372 0.620000 +vt 0.874372 0.610000 +vt 0.879397 0.620000 +vt 0.874372 0.630000 +vt 0.879397 0.630000 +vt 0.874372 0.640000 +vt 0.869347 0.640000 +vt 0.879397 0.640000 +vt 0.874372 0.650000 +vt 0.879397 0.650000 +vt 0.874372 0.660000 +vt 0.879397 0.660000 +vt 0.874372 0.670000 +vt 0.879397 0.670000 +vt 0.886888 0.643403 +vt 0.884422 0.644949 +vt 0.881957 0.643403 +vt 0.869347 0.630000 +vt 0.849246 0.640000 +vt 0.849246 0.630000 +vt 0.869347 0.650000 +vt 0.849246 0.650000 +vt 0.869347 0.660000 +vt 0.849246 0.660000 +vt 0.869347 0.670000 +vt 0.849246 0.670000 +vt 0.880221 0.658725 +vt 0.886848 0.662880 +vt 0.881997 0.662880 +vt 0.869347 0.620000 +vt 0.849246 0.620000 +vt 0.849246 0.610000 +vt 0.844221 0.620000 +vt 0.844221 0.610000 +vt 0.839196 0.610000 +vt 0.844221 0.630000 +vt 0.839196 0.630000 +vt 0.839196 0.620000 +vt 0.844221 0.640000 +vt 0.839196 0.640000 +vt 0.844221 0.650000 +vt 0.844221 0.660000 +vt 0.839196 0.650000 +vt 0.839196 0.670000 +vt 0.839196 0.660000 +vt 0.869347 0.610000 +vt 0.874372 0.620000 +vt 0.874372 0.610000 +vt 0.879397 0.620000 +vt 0.874372 0.630000 +vt 0.879397 0.630000 +vt 0.874372 0.640000 +vt 0.869347 0.640000 +vt 0.879397 0.640000 +vt 0.874372 0.650000 +vt 0.879397 0.650000 +vt 0.874372 0.660000 +vt 0.879397 0.660000 +vt 0.874372 0.670000 +vt 0.879397 0.670000 +vt 0.886888 0.643402 +vt 0.884422 0.644949 +vt 0.881957 0.643402 +vt 0.869347 0.630000 +vt 0.849246 0.640000 +vt 0.849246 0.630000 +vt 0.869347 0.650000 +vt 0.849246 0.650000 +vt 0.869347 0.660000 +vt 0.849246 0.660000 +vt 0.869347 0.670000 +vt 0.849246 0.670000 +vt 0.880221 0.658724 +vt 0.879571 0.655599 +vt 0.888623 0.658724 +vt 0.869347 0.620000 +vt 0.849246 0.620000 +vt 0.849246 0.610000 +vt 0.844221 0.620000 +vt 0.844221 0.610000 +vt 0.839196 0.610000 +vt 0.844221 0.630000 +vt 0.839196 0.630000 +vt 0.839196 0.620000 +vt 0.844221 0.640000 +vt 0.839196 0.640000 +vt 0.844221 0.650000 +vt 0.844221 0.660000 +vt 0.839196 0.650000 +vt 0.839196 0.670000 +vt 0.839196 0.660000 +vt 0.869347 0.610000 +vt 0.874372 0.620000 +vt 0.874372 0.610000 +vt 0.879397 0.620000 +vt 0.874372 0.630000 +vt 0.879397 0.630000 +vt 0.874372 0.640000 +vt 0.869347 0.640000 +vt 0.879397 0.640000 +vt 0.874372 0.650000 +vt 0.879397 0.650000 +vt 0.874372 0.660000 +vt 0.879397 0.660000 +vt 0.874372 0.670000 +vt 0.879397 0.670000 +vt 0.886888 0.643403 +vt 0.884422 0.644949 +vt 0.881957 0.643403 +vt 0.904523 0.670000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.889447 0.640000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.914573 0.640000 +vt 0.909548 0.630000 +vt 0.914573 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.899498 0.620000 +vt 0.904523 0.670000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.630000 +vt 0.894472 0.630000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.904523 0.620000 +vt 0.904523 0.670000 +vt 0.914573 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.889447 0.630000 +vt 0.894472 0.630000 +vt 0.894472 0.660000 +vt 0.889447 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.914573 0.660000 +vt 0.909548 0.660000 +vt 0.904523 0.620000 +vt 0.904523 0.620000 +vt 0.889447 0.640000 +vt 0.914573 0.640000 +vt 0.914573 0.650000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.904523 0.670000 +vt 0.904523 0.670000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.889447 0.640000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.894472 0.660000 +vt 0.889447 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.914573 0.660000 +vt 0.909548 0.660000 +vt 0.899498 0.620000 +vt 0.904523 0.670000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.889447 0.640000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.914573 0.640000 +vt 0.909548 0.630000 +vt 0.914573 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.904523 0.620000 +vt 0.904523 0.620000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.894472 0.660000 +vt 0.889447 0.630000 +vt 0.889447 0.640000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.909548 0.630000 +vt 0.914573 0.640000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.914573 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.909548 0.630000 +vt 0.914573 0.640000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.914573 0.640000 +vt 0.914573 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.909548 0.630000 +vt 0.899498 0.670000 +vt 0.899498 0.620000 +vt 0.904523 0.620000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.640000 +vt 0.889447 0.630000 +vt 0.914573 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.914573 0.640000 +vt 0.914573 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.909548 0.630000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.914573 0.640000 +vt 0.914573 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.914573 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.899498 0.670000 +vt 0.904523 0.670000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.889447 0.640000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.914573 0.640000 +vt 0.909548 0.630000 +vt 0.914573 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.899498 0.620000 +vt 0.904523 0.670000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.630000 +vt 0.894472 0.630000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.914573 0.640000 +vt 0.909548 0.630000 +vt 0.914573 0.630000 +vt 0.914573 0.660000 +vt 0.909548 0.660000 +vt 0.904523 0.620000 +vt 0.904523 0.670000 +vt 0.914573 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.889447 0.630000 +vt 0.894472 0.630000 +vt 0.894472 0.660000 +vt 0.889447 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.899498 0.620000 +vt 0.904523 0.620000 +vt 0.889447 0.640000 +vt 0.914573 0.640000 +vt 0.914573 0.650000 +vt 0.914573 0.660000 +vt 0.909548 0.660000 +vt 0.909548 0.630000 +vt 0.914573 0.630000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.904523 0.670000 +vt 0.904523 0.670000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.889447 0.640000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.894472 0.660000 +vt 0.889447 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.899498 0.620000 +vt 0.904523 0.670000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.889447 0.640000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.914573 0.640000 +vt 0.909548 0.630000 +vt 0.914573 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.904523 0.620000 +vt 0.904523 0.620000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.894472 0.660000 +vt 0.889447 0.630000 +vt 0.889447 0.640000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.909548 0.630000 +vt 0.914573 0.640000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.889447 0.660000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.640000 +vt 0.889447 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.909548 0.630000 +vt 0.914573 0.640000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.914573 0.640000 +vt 0.914573 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.909548 0.630000 +vt 0.899498 0.670000 +vt 0.899498 0.620000 +vt 0.904523 0.620000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.640000 +vt 0.889447 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.914573 0.640000 +vt 0.914573 0.650000 +vt 0.889447 0.640000 +vt 0.889447 0.650000 +vt 0.894472 0.660000 +vt 0.894472 0.630000 +vt 0.889447 0.630000 +vt 0.909548 0.660000 +vt 0.914573 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.914573 0.650000 +vt 0.889447 0.650000 +vt 0.894472 0.660000 +vt 0.889447 0.630000 +vt 0.889447 0.640000 +vt 0.914573 0.660000 +vt 0.914573 0.630000 +vt 0.909548 0.630000 +vt 0.899498 0.670000 +vt 0.892547 0.180000 +vt 0.890826 0.175822 +vt 0.892547 0.175822 +vt 0.886347 0.167567 +vt 0.892548 0.167567 +vt 0.890826 0.171745 +vt 0.890826 0.167567 +vt 0.890826 0.192433 +vt 0.889417 0.192433 +vt 0.890826 0.184178 +vt 0.890826 0.180000 +vt 0.892547 0.188255 +vt 0.890826 0.188255 +vt 0.886347 0.192433 +vt 0.892547 0.180000 +vt 0.890826 0.180000 +vt 0.892547 0.180000 +vt 0.890826 0.175822 +vt 0.892547 0.175822 +vt 0.886347 0.167567 +vt 0.892548 0.167567 +vt 0.890826 0.171745 +vt 0.890826 0.167567 +vt 0.890826 0.192433 +vt 0.889417 0.192433 +vt 0.890826 0.184178 +vt 0.890826 0.180000 +vt 0.892547 0.188255 +vt 0.890826 0.188255 +vt 0.886347 0.192433 +vt 0.892547 0.180000 +vt 0.890826 0.180000 +vt 0.892547 0.180000 +vt 0.890826 0.175822 +vt 0.892547 0.175822 +vt 0.886347 0.167567 +vt 0.892548 0.167567 +vt 0.890826 0.171745 +vt 0.890826 0.167567 +vt 0.890826 0.192433 +vt 0.889417 0.192433 +vt 0.890826 0.184178 +vt 0.890826 0.180000 +vt 0.892547 0.188255 +vt 0.890826 0.188255 +vt 0.886347 0.192433 +vt 0.892547 0.180000 +vt 0.890826 0.180000 +vt 0.892547 0.175822 +vt 0.890826 0.180000 +vt 0.890826 0.175822 +vt 0.886347 0.167567 +vt 0.892548 0.167567 +vt 0.890826 0.171745 +vt 0.890826 0.167567 +vt 0.890826 0.192433 +vt 0.889417 0.192433 +vt 0.890826 0.184178 +vt 0.892547 0.188255 +vt 0.890826 0.188255 +vt 0.886347 0.192433 +vt 0.892547 0.180000 +vt 0.890826 0.180000 +vt 0.892547 0.180000 +vt 0.890826 0.175822 +vt 0.892547 0.175822 +vt 0.886347 0.167567 +vt 0.892548 0.167567 +vt 0.890826 0.171745 +vt 0.890826 0.167567 +vt 0.890826 0.192433 +vt 0.889417 0.192433 +vt 0.890826 0.184178 +vt 0.890826 0.180000 +vt 0.892547 0.188255 +vt 0.890826 0.188255 +vt 0.886347 0.192433 +vt 0.892547 0.180000 +vt 0.890826 0.180000 +vt 0.892547 0.180000 +vt 0.890826 0.175822 +vt 0.892547 0.175822 +vt 0.886347 0.167567 +vt 0.892548 0.167567 +vt 0.890826 0.171745 +vt 0.890826 0.167567 +vt 0.890826 0.192433 +vt 0.889417 0.192433 +vt 0.890826 0.184178 +vt 0.890826 0.180000 +vt 0.892547 0.188255 +vt 0.890826 0.188255 +vt 0.886347 0.192433 +vt 0.892547 0.180000 +vt 0.890826 0.180000 +vt 0.892547 0.180000 +vt 0.890826 0.175822 +vt 0.892547 0.175822 +vt 0.886347 0.167567 +vt 0.892548 0.167567 +vt 0.890826 0.171745 +vt 0.890826 0.167567 +vt 0.890826 0.192433 +vt 0.889417 0.192433 +vt 0.890826 0.184178 +vt 0.890826 0.180000 +vt 0.892547 0.188255 +vt 0.890826 0.188255 +vt 0.886347 0.192433 +vt 0.892547 0.180000 +vt 0.890826 0.180000 +vt 0.892547 0.180000 +vt 0.890826 0.175822 +vt 0.892547 0.175822 +vt 0.886347 0.167567 +vt 0.892548 0.167567 +vt 0.890826 0.171745 +vt 0.890826 0.167567 +vt 0.890826 0.192433 +vt 0.889417 0.192433 +vt 0.890826 0.184178 +vt 0.890826 0.180000 +vt 0.892547 0.188255 +vt 0.890826 0.188255 +vt 0.886347 0.192433 +vt 0.892547 0.180000 +vt 0.890826 0.180000 +vt 0.892547 0.180000 +vt 0.890826 0.175822 +vt 0.892547 0.175822 +vt 0.886347 0.167567 +vt 0.892548 0.167567 +vt 0.890826 0.171745 +vt 0.890826 0.167567 +vt 0.890826 0.192433 +vt 0.889417 0.192433 +vt 0.890826 0.184178 +vt 0.890826 0.180000 +vt 0.892547 0.188255 +vt 0.890826 0.188255 +vt 0.886347 0.192433 +vt 0.892547 0.180000 +vt 0.890826 0.180000 +vt 0.892547 0.180000 +vt 0.890826 0.175822 +vt 0.892547 0.175822 +vt 0.886347 0.167567 +vt 0.892548 0.167567 +vt 0.890826 0.171745 +vt 0.890826 0.167567 +vt 0.890826 0.192433 +vt 0.889417 0.192433 +vt 0.890826 0.184178 +vt 0.890826 0.180000 +vt 0.892547 0.188255 +vt 0.890826 0.188255 +vt 0.886347 0.192433 +vt 0.892547 0.180000 +vt 0.890826 0.180000 +vt 0.892547 0.180000 +vt 0.890826 0.175822 +vt 0.892547 0.175822 +vt 0.886347 0.167567 +vt 0.892548 0.167567 +vt 0.890826 0.171745 +vt 0.890826 0.167567 +vt 0.890826 0.192433 +vt 0.889417 0.192433 +vt 0.890826 0.184178 +vt 0.890826 0.180000 +vt 0.892547 0.188255 +vt 0.890826 0.188255 +vt 0.886347 0.192433 +vt 0.892547 0.180000 +vt 0.890826 0.180000 +vt 0.879571 0.655599 +vt 0.889273 0.655599 +vt 0.888623 0.658724 +vt 0.884422 0.664401 +vt 0.844221 0.670000 +vt 0.879397 0.610000 +vt 0.880152 0.639179 +vt 0.888693 0.639179 +vt 0.879491 0.635051 +vt 0.889353 0.635051 +vt 0.045226 0.880000 +vt 0.085427 0.090000 +vt 0.045226 0.480000 +vt 0.045226 0.680000 +vt 0.045226 0.580000 +vt 0.015075 0.270000 +vt 0.015075 0.970000 +vt 0.015075 0.170000 +vt 0.015075 0.770000 +vt 0.967295 0.840936 +vt 0.968989 0.847779 +vt 0.969538 0.855329 +vt 0.968887 0.862846 +vt 0.967101 0.869596 +vt 0.964355 0.874917 +vt 0.960916 0.878289 +vt 0.957122 0.879380 +vt 0.949953 0.874532 +vt 0.947279 0.869066 +vt 0.945585 0.862223 +vt 0.945687 0.847156 +vt 0.947473 0.840406 +vt 0.950219 0.835085 +vt 0.957452 0.830621 +vt 0.961229 0.831916 +vt 0.964621 0.835470 +vt 0.512563 0.410000 +vt 0.512563 0.010000 +vt 0.512563 0.610000 +vt 0.839196 0.310000 +vt 0.839196 0.610000 +vt 0.839196 0.510000 +vt 0.839196 0.210000 +vt 0.839196 0.810000 +vt 0.839196 0.410000 +vt 0.839196 0.110000 +vt 0.839196 0.710000 +vt 0.839196 0.530000 +vt 0.839196 0.610000 +vt 0.872867 0.592995 +vt 0.874325 0.600000 +vt 0.872867 0.607005 +vt 0.869347 0.609907 +vt 0.865827 0.607005 +vt 0.839196 0.560000 +vt 0.839196 0.530000 +vt 0.839196 0.600000 +vt 0.839196 0.580000 +vt 0.872867 0.592994 +vt 0.874325 0.600000 +vt 0.872867 0.607005 +vt 0.869347 0.609907 +vt 0.865827 0.607005 +vt 0.839196 0.560000 +vt 0.899498 0.410000 +vt 0.869347 0.410000 +vt 0.854271 0.410000 +vt 0.899498 0.410000 +vt 0.889417 0.167567 +vt 0.892547 0.171745 +vt 0.892547 0.192433 +vt 0.892547 0.184178 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.899498 0.670000 +vt 0.914573 0.650000 +vt 0.899498 0.620000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.899498 0.620000 +vt 0.899498 0.670000 +vt 0.899498 0.670000 +vt 0.914573 0.640000 +vt 0.904523 0.620000 +vt 0.899498 0.670000 +vt 0.899498 0.620000 +vt 0.899498 0.620000 +vt 0.889447 0.660000 +vt 0.894472 0.630000 +vt 0.914573 0.630000 +vt 0.904523 0.670000 +vt 0.899498 0.620000 +vt 0.914573 0.640000 +vt 0.904523 0.670000 +vt 0.899498 0.620000 +vt 0.889447 0.660000 +vt 0.914573 0.630000 +vt 0.904523 0.670000 +vt 0.914573 0.640000 +vt 0.889447 0.660000 +vt 0.909548 0.660000 +vt 0.904523 0.670000 +vt 0.899498 0.620000 +vt 0.889447 0.660000 +vt 0.914573 0.630000 +vt 0.904523 0.670000 +vt 0.899498 0.620000 +vt 0.914573 0.640000 +vt 0.909548 0.660000 +vt 0.904523 0.670000 +vt 0.889273 0.655599 +vt 0.886848 0.662880 +vt 0.881997 0.662880 +vt 0.884422 0.664401 +vt 0.844221 0.670000 +vt 0.879397 0.610000 +vt 0.880152 0.639179 +vt 0.888693 0.639179 +vt 0.879491 0.635051 +vt 0.889353 0.635051 +vt 0.879571 0.655599 +vt 0.889273 0.655599 +vt 0.888623 0.658725 +vt 0.884422 0.664401 +vt 0.844221 0.670000 +vt 0.879397 0.610000 +vt 0.880152 0.639179 +vt 0.888692 0.639179 +vt 0.879491 0.635051 +vt 0.889353 0.635051 +vt 0.889273 0.655599 +vt 0.886848 0.662880 +vt 0.881997 0.662880 +vt 0.884422 0.664401 +vt 0.844221 0.670000 +vt 0.879397 0.610000 +vt 0.880152 0.639179 +vt 0.888693 0.639179 +vt 0.879491 0.635051 +vt 0.889353 0.635051 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.899498 0.670000 +vt 0.914573 0.640000 +vt 0.899498 0.620000 +vt 0.899498 0.670000 +vt 0.914573 0.640000 +vt 0.899498 0.620000 +vt 0.899498 0.620000 +vt 0.889447 0.650000 +vt 0.899498 0.670000 +vt 0.899498 0.670000 +vt 0.914573 0.640000 +vt 0.904523 0.620000 +vt 0.899498 0.670000 +vt 0.899498 0.620000 +vt 0.899498 0.620000 +vt 0.889447 0.660000 +vt 0.894472 0.630000 +vt 0.914573 0.630000 +vt 0.904523 0.670000 +vt 0.899498 0.620000 +vt 0.914573 0.630000 +vt 0.904523 0.670000 +vt 0.899498 0.620000 +vt 0.889447 0.660000 +vt 0.914573 0.630000 +vt 0.904523 0.670000 +vt 0.914573 0.640000 +vt 0.889447 0.660000 +vt 0.909548 0.660000 +vt 0.904523 0.670000 +vt 0.899498 0.620000 +vt 0.889447 0.660000 +vt 0.914573 0.630000 +vt 0.904523 0.670000 +vt 0.899498 0.620000 +vt 0.909548 0.660000 +vt 0.904523 0.670000 +vt 0.899498 0.670000 +vt 0.904523 0.620000 +vt 0.899498 0.670000 +vt 0.899498 0.620000 +vt 0.899498 0.670000 +vt 0.914573 0.640000 +vt 0.904523 0.620000 +vt 0.899498 0.620000 +vt 0.889447 0.650000 +vt 0.899498 0.670000 +vt 0.899498 0.670000 +vt 0.914573 0.640000 +vt 0.904523 0.620000 +vt 0.899498 0.670000 +vt 0.899498 0.620000 +vt 0.899498 0.620000 +vt 0.889447 0.660000 +vt 0.894472 0.630000 +vt 0.914573 0.630000 +vt 0.904523 0.670000 +vt 0.899498 0.620000 +vt 0.914573 0.630000 +vt 0.904523 0.670000 +vt 0.899498 0.620000 +vt 0.889447 0.660000 +vt 0.914573 0.630000 +vt 0.904523 0.670000 +vt 0.914573 0.640000 +vt 0.889447 0.660000 +vt 0.904523 0.670000 +vt 0.899498 0.620000 +vt 0.889447 0.660000 +vt 0.904523 0.670000 +vt 0.899498 0.620000 +vt 0.914573 0.640000 +vt 0.889447 0.660000 +vt 0.894472 0.630000 +vt 0.909548 0.660000 +vt 0.904523 0.670000 +vt 0.889417 0.167567 +vt 0.892547 0.171745 +vt 0.892547 0.192433 +vt 0.892547 0.184178 +vt 0.889417 0.167567 +vt 0.892547 0.171745 +vt 0.892547 0.192433 +vt 0.892547 0.184178 +vt 0.889417 0.167567 +vt 0.892547 0.171745 +vt 0.892547 0.192433 +vt 0.892547 0.184178 +vt 0.892547 0.180000 +vt 0.889417 0.167567 +vt 0.892547 0.171745 +vt 0.892547 0.192433 +vt 0.892547 0.184178 +vt 0.889417 0.167567 +vt 0.892547 0.171745 +vt 0.892547 0.192433 +vt 0.892547 0.184178 +vt 0.889417 0.167567 +vt 0.892547 0.171745 +vt 0.892547 0.192433 +vt 0.892547 0.184178 +vt 0.889417 0.167567 +vt 0.892547 0.171745 +vt 0.892547 0.192433 +vt 0.892547 0.184178 +vt 0.889417 0.167567 +vt 0.892547 0.171745 +vt 0.892547 0.192433 +vt 0.892547 0.184178 +vt 0.889417 0.167567 +vt 0.892547 0.171745 +vt 0.892547 0.192433 +vt 0.892547 0.184178 +vt 0.889417 0.167567 +vt 0.892547 0.171745 +vt 0.892547 0.192433 +vt 0.892547 0.184178 +vt 0.889417 0.167567 +vt 0.892547 0.171745 +vt 0.892547 0.192433 +vt 0.892547 0.184178 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 0.3907 -0.9205 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.3907 0.9205 +vn 0.0000 0.8137 0.5813 +vn 0.0000 0.8079 -0.5893 +vn 0.0000 0.9986 0.0523 +vn 0.0000 0.2726 0.9621 +vn -0.0000 -0.6489 0.7609 +vn 0.0000 -0.1777 -0.9841 +vn -0.0000 -0.9986 -0.0523 +vn 0.0000 0.9834 0.1815 +vn 0.0000 0.9205 0.3907 +vn 0.0000 0.3907 0.9205 +vn 0.0000 -0.3907 -0.9205 +vn 0.0000 0.8137 -0.5813 +vn 0.0000 0.8080 0.5892 +vn 0.0000 0.9986 -0.0523 +vn 0.0000 0.2726 -0.9621 +vn -0.0000 -0.6489 -0.7609 +vn 0.0000 -0.1777 0.9841 +vn 0.0000 -0.9986 0.0523 +vn 0.0000 0.9834 -0.1815 +vn 0.0000 0.9205 -0.3907 +vn 0.0000 -0.1569 0.9876 +vn 0.0000 -0.1569 -0.9876 +vn 0.0000 0.2588 -0.9659 +vn 0.0000 -0.2588 0.9659 +vn -0.8553 0.5004 0.1341 +vn 0.8553 0.5004 0.1341 +vn 0.0000 0.1772 0.9842 +vn 0.0000 0.6455 -0.7637 +vn 0.0000 0.9659 0.2588 +vn -0.5301 -0.8190 -0.2194 +vn -0.0001 0.2588 -0.9659 +vn 0.0866 0.9623 0.2578 +vn 0.0006 -0.2588 0.9659 +vn -0.0254 -0.9656 -0.2587 +vn 0.0006 0.2588 -0.9659 +vn -0.9611 0.2669 0.0715 +vn -0.9703 -0.2337 -0.0626 +vn -0.5543 0.8040 0.2154 +vn 0.3200 0.9151 0.2452 +vn 0.8916 0.4374 0.1172 +vn 0.6727 -0.7147 -0.1915 +vn 0.0000 1.0000 -0.0001 +vn -0.0000 0.8598 0.5106 +vn 0.0000 0.5281 0.8492 +vn 0.0000 0.0785 0.9969 +vn 0.0000 -0.3810 0.9246 +vn 0.0000 -0.7591 0.6510 +vn 0.0000 -0.9729 0.2312 +vn 0.0000 -0.9727 -0.2321 +vn 0.0000 -0.7630 -0.6463 +vn 0.0000 -0.3787 -0.9255 +vn 0.0000 0.0814 -0.9967 +vn 0.0000 0.5273 -0.8496 +vn 0.0000 0.8511 -0.5251 +vn 0.0000 0.8910 0.4540 +vn 0.0000 0.3885 0.9215 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 0.8910 -0.4540 +vn 0.0000 0.3884 -0.9215 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.3885 -0.9215 +vn 0.3827 0.9239 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.7881 -0.6156 -0.0000 +vn -0.7315 0.3095 -0.6075 +vn 0.0000 0.4540 0.8910 +vn -0.0000 0.4540 -0.8910 +vn 0.0000 -0.8910 0.4540 +vn 0.7315 0.3095 -0.6075 +vn -0.7315 0.3095 0.6075 +vn 0.7315 0.3095 0.6075 +vn 0.0000 -0.8910 -0.4540 +vn 0.0000 -0.8387 0.5446 +vn 0.0000 -0.9922 -0.1243 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.0524 0.9986 +vn 0.0000 0.6038 0.7972 +vn 0.0000 0.8660 0.5000 +vn 0.0000 -0.0523 0.9986 +vn 0.0000 0.6038 0.7971 +vn 0.3827 -0.4619 0.8001 +vn 0.9239 -0.1913 0.3314 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 0.5000 -0.8660 +vn -0.7881 0.3078 -0.5331 +vn 0.0000 -0.0523 -0.9986 +vn 0.0000 0.6038 -0.7971 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 -0.8387 -0.5447 +vn 0.0000 -0.9922 0.1243 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 -0.8387 -0.5446 +vn 0.3827 -0.4619 -0.8001 +vn 0.9239 -0.1913 -0.3314 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 0.5000 0.8660 +vn -0.7881 0.3078 0.5331 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn -0.8553 0.3664 0.3663 +vn 0.8553 0.3664 0.3663 +vn 0.0000 -0.3387 0.9409 +vn 0.0000 0.9409 -0.3387 +vn 0.0000 0.7071 0.7071 +vn -0.8553 0.3663 0.3663 +vn -0.5301 -0.5996 -0.5996 +vn -0.0001 0.7071 -0.7071 +vn 0.0866 0.7045 0.7044 +vn 0.0006 -0.7071 0.7071 +vn -0.0254 -0.7069 -0.7069 +vn 0.0006 0.7071 -0.7071 +vn -0.9610 0.1954 0.1954 +vn -0.9703 -0.1711 -0.1711 +vn -0.5543 0.5885 0.5885 +vn 0.3200 0.6699 0.6699 +vn 0.8916 0.3202 0.3202 +vn 0.6727 -0.5232 -0.5232 +vn 0.0000 0.9659 -0.2588 +vn 0.0000 -0.9659 0.2588 +vn -0.8553 0.1341 0.5004 +vn 0.8553 0.1341 0.5004 +vn 0.0000 -0.7637 0.6455 +vn 0.0000 0.9842 0.1772 +vn 0.0000 0.2588 0.9659 +vn -0.5301 -0.2195 -0.8190 +vn -0.0001 0.9659 -0.2588 +vn 0.0866 0.2579 0.9623 +vn 0.0006 -0.9659 0.2588 +vn -0.0254 -0.2588 -0.9656 +vn 0.0006 0.9659 -0.2588 +vn -0.9611 0.0715 0.2669 +vn -0.9703 -0.0626 -0.2337 +vn -0.5543 0.2154 0.8040 +vn 0.3200 0.2452 0.9151 +vn 0.8916 0.1172 0.4374 +vn 0.6727 -0.1915 -0.7147 +vn 0.0000 -0.9659 -0.2588 +vn -0.8553 -0.1341 0.5004 +vn 0.8553 -0.1341 0.5004 +vn 0.0000 -0.9842 0.1772 +vn 0.0000 0.7637 0.6455 +vn -0.5301 0.2194 -0.8190 +vn -0.0001 0.9659 0.2588 +vn 0.0866 -0.2578 0.9623 +vn 0.0006 -0.9659 -0.2588 +vn -0.0254 0.2587 -0.9656 +vn 0.0006 0.9659 0.2588 +vn -0.9611 -0.0715 0.2669 +vn -0.9703 0.0626 -0.2337 +vn -0.5543 -0.2154 0.8040 +vn 0.3200 -0.2452 0.9151 +vn 0.8916 -0.1172 0.4374 +vn 0.6727 0.1915 -0.7147 +vn 0.0000 -0.7071 -0.7071 +vn -0.8553 -0.3663 0.3664 +vn 0.8553 -0.3663 0.3664 +vn 0.0000 -0.9409 -0.3386 +vn 0.0000 0.3387 0.9409 +vn -0.8553 -0.3663 0.3663 +vn -0.5301 0.5996 -0.5996 +vn -0.0001 0.7071 0.7071 +vn 0.0866 -0.7044 0.7045 +vn 0.0006 -0.7071 -0.7071 +vn -0.0254 0.7069 -0.7069 +vn 0.0006 0.7071 0.7071 +vn -0.9611 -0.1954 0.1954 +vn -0.9703 0.1711 -0.1711 +vn -0.5543 -0.5885 0.5885 +vn 0.3200 -0.6699 0.6699 +vn 0.8916 -0.3202 0.3202 +vn 0.6727 0.5232 -0.5232 +vn 0.0000 -0.2588 -0.9659 +vn -0.8553 -0.5004 0.1341 +vn 0.8553 -0.5004 0.1341 +vn 0.0000 -0.6455 -0.7637 +vn 0.0000 -0.1772 0.9842 +vn -0.5301 0.8190 -0.2195 +vn -0.0001 0.2588 0.9659 +vn 0.0866 -0.9623 0.2579 +vn 0.0006 -0.2588 -0.9659 +vn -0.0254 0.9656 -0.2588 +vn 0.0006 0.2588 0.9659 +vn -0.9610 -0.2670 0.0715 +vn -0.9703 0.2337 -0.0626 +vn -0.5543 -0.8040 0.2154 +vn 0.3200 -0.9151 0.2452 +vn 0.8916 -0.4374 0.1172 +vn 0.6727 0.7147 -0.1915 +vn -0.8553 -0.5004 -0.1341 +vn 0.8553 -0.5004 -0.1341 +vn 0.0000 -0.1772 -0.9842 +vn 0.0000 -0.6455 0.7637 +vn -0.5301 0.8190 0.2195 +vn -0.0001 -0.2588 0.9659 +vn 0.0866 -0.9623 -0.2578 +vn -0.0254 0.9656 0.2587 +vn -0.9611 -0.2669 -0.0715 +vn -0.9703 0.2337 0.0626 +vn -0.5543 -0.8040 -0.2154 +vn 0.3200 -0.9151 -0.2452 +vn 0.8916 -0.4374 -0.1172 +vn 0.6727 0.7147 0.1915 +vn -0.8553 -0.3664 -0.3663 +vn 0.8553 -0.3663 -0.3663 +vn 0.0000 0.3387 -0.9409 +vn 0.0000 -0.9409 0.3386 +vn -0.5301 0.5996 0.5996 +vn -0.0001 -0.7071 0.7071 +vn 0.0866 -0.7045 -0.7044 +vn -0.0254 0.7069 0.7069 +vn -0.9611 -0.1954 -0.1954 +vn -0.9703 0.1711 0.1711 +vn -0.5543 -0.5885 -0.5885 +vn 0.3200 -0.6699 -0.6699 +vn 0.8916 -0.3202 -0.3202 +vn 0.6727 0.5232 0.5232 +vn -0.8553 -0.1341 -0.5004 +vn 0.8553 -0.1341 -0.5004 +vn 0.0000 0.7637 -0.6455 +vn 0.0000 -0.9842 -0.1772 +vn -0.5301 0.2195 0.8190 +vn -0.0001 -0.9659 0.2588 +vn 0.0866 -0.2579 -0.9623 +vn -0.0254 0.2588 0.9656 +vn -0.9611 -0.0715 -0.2669 +vn -0.9703 0.0626 0.2337 +vn -0.5543 -0.2154 -0.8040 +vn 0.3200 -0.2452 -0.9151 +vn 0.8916 -0.1172 -0.4374 +vn 0.6727 0.1915 0.7147 +vn -0.8553 0.1340 -0.5004 +vn 0.8553 0.1341 -0.5004 +vn 0.0000 0.9842 -0.1772 +vn 0.0000 -0.7637 -0.6455 +vn -0.8553 0.1341 -0.5004 +vn -0.5301 -0.2195 0.8190 +vn -0.0001 -0.9659 -0.2588 +vn 0.0866 0.2578 -0.9623 +vn -0.0254 -0.2587 0.9656 +vn -0.9611 0.0715 -0.2669 +vn -0.9703 -0.0626 0.2337 +vn -0.5543 0.2154 -0.8040 +vn 0.3200 0.2452 -0.9151 +vn 0.8916 0.1172 -0.4374 +vn 0.6727 -0.1915 0.7147 +vn -0.8553 0.3663 -0.3664 +vn 0.8553 0.3663 -0.3663 +vn 0.0000 0.9409 0.3386 +vn 0.0000 -0.3387 -0.9409 +vn -0.5301 -0.5996 0.5996 +vn -0.0001 -0.7071 -0.7071 +vn 0.0866 0.7044 -0.7045 +vn -0.0254 -0.7069 0.7069 +vn -0.9610 0.1954 -0.1954 +vn -0.9703 -0.1711 0.1711 +vn -0.5543 0.5886 -0.5885 +vn 0.3200 0.6699 -0.6699 +vn 0.8916 0.3202 -0.3202 +vn 0.6727 -0.5232 0.5232 +vn -0.8553 0.5004 -0.1341 +vn 0.8553 0.5004 -0.1341 +vn 0.0000 0.6455 0.7637 +vn 0.0000 0.1772 -0.9842 +vn -0.5301 -0.8190 0.2195 +vn -0.0001 -0.2588 -0.9659 +vn 0.0866 0.9623 -0.2579 +vn -0.0254 -0.9656 0.2588 +vn -0.9610 0.2670 -0.0715 +vn -0.9703 -0.2337 0.0626 +vn -0.5543 0.8040 -0.2154 +vn 0.3200 0.9151 -0.2452 +vn 0.8916 0.4374 -0.1172 +vn 0.6727 -0.7147 0.1915 +vn 0.0000 0.8080 0.5893 +vn -0.0254 -0.9656 -0.2588 +vn -0.9610 0.2670 0.0715 +vn -0.5543 0.8039 0.2154 +vn 0.0000 -0.7591 0.6509 +vn 0.0000 0.5274 -0.8496 +vn 0.0000 0.3884 0.9215 +vn -0.7881 -0.6155 0.0000 +vn 0.0000 -0.8387 0.5447 +vn 0.0000 0.6038 -0.7972 +vn 0.8553 0.3663 0.3663 +vn 0.0000 0.9409 -0.3386 +vn 0.0866 0.7044 0.7045 +vn -0.9611 0.1954 0.1954 +vn -0.0000 -0.9659 0.2589 +vn 0.0866 0.2578 0.9623 +vn -0.0254 -0.2587 -0.9656 +vn -0.5301 0.2195 -0.8190 +vn 0.0866 -0.2579 0.9623 +vn -0.0254 0.2588 -0.9656 +vn -0.9611 -0.0715 0.2670 +vn 0.8553 -0.3663 0.3663 +vn 0.0000 -0.9409 -0.3387 +vn 0.0866 -0.7045 0.7044 +vn -0.9610 -0.1954 0.1954 +vn -0.9703 0.1710 -0.1711 +vn 0.0866 -0.9623 0.2578 +vn -0.0254 0.9656 -0.2587 +vn -0.9611 -0.2669 0.0715 +vn -0.5301 0.8190 0.2194 +vn -0.0254 0.9656 0.2588 +vn -0.0000 0.2589 -0.9659 +vn 0.0000 -0.9409 0.3387 +vn -0.8553 -0.3663 -0.3663 +vn 0.0866 -0.7044 -0.7045 +vn -0.9610 -0.1954 -0.1954 +vn -0.0000 0.9659 -0.2589 +vn 0.0866 -0.2578 -0.9623 +vn -0.0254 0.2587 0.9656 +vn -0.9611 -0.0715 -0.2670 +vn -0.5301 -0.2194 0.8190 +vn 0.0866 0.2579 -0.9623 +vn -0.0254 -0.2588 0.9656 +vn -0.9611 0.0715 -0.2670 +vn -0.8553 0.3663 -0.3663 +vn 0.8553 0.3663 -0.3664 +vn 0.0000 0.9409 0.3387 +vn 0.0866 0.7045 -0.7044 +vn -0.9611 0.1954 -0.1954 +vn -0.9703 -0.1710 0.1711 +vn -0.5543 0.5885 -0.5885 +vn 0.0866 0.9623 -0.2578 +vn -0.0254 -0.9656 0.2587 +vn -0.9611 0.2669 -0.0715 +vn -0.1484 0.9718 0.1832 +vn 0.2193 0.7003 0.6793 +vn 0.2207 0.9548 0.1989 +vn -0.1362 0.2058 0.9691 +vn 0.2323 0.2268 0.9458 +vn -0.0878 -0.2912 0.9526 +vn 0.2563 -0.2412 0.9360 +vn -0.0599 -0.4966 0.8659 +vn 0.2606 -0.4321 0.8634 +vn 0.9315 0.0185 0.3634 +vn 0.9150 0.3857 0.1185 +vn 0.9188 0.1426 0.3680 +vn -0.1074 0.9434 -0.3139 +vn 0.2376 0.9334 -0.2690 +vn 0.2401 0.8559 -0.4580 +vn 0.6185 0.7666 -0.1725 +vn 0.6022 0.7283 -0.3270 +vn 0.9115 0.4026 -0.0841 +vn 0.6147 0.7680 0.1798 +vn 0.9257 0.3782 -0.0057 +vn 0.6179 0.5678 0.5439 +vn 0.9138 0.2979 0.2761 +vn 0.6236 0.2090 0.7533 +vn 0.6330 -0.1431 0.7608 +vn 0.9189 -0.0596 0.3901 +vn -0.0814 0.8519 -0.5174 +vn -0.6382 0.7109 -0.2955 +vn -0.5963 0.6564 -0.4621 +vn -0.9783 0.1436 -0.1493 +vn -0.6797 0.7264 0.1017 +vn -0.9889 0.1441 -0.0351 +vn -0.6959 0.5088 0.5068 +vn -0.1625 0.7053 0.6900 +vn -0.9933 0.0744 0.0879 +vn -0.6698 0.1098 0.7344 +vn -0.9859 -0.0467 0.1607 +vn -0.6223 -0.2870 0.7283 +vn -0.9735 -0.1608 0.1629 +vn -0.5786 -0.4543 0.6774 +vn -0.9610 -0.2130 0.1765 +vn 0.1072 0.0000 -0.9942 +vn -0.0592 -0.3085 -0.9494 +vn -0.0592 0.0000 -0.9982 +vn 0.1072 -0.5844 -0.8044 +vn -0.0592 -0.5868 -0.8076 +vn -0.0592 -0.8076 -0.5868 +vn 0.1072 -0.8044 -0.5844 +vn -0.0592 -0.9494 -0.3085 +vn 0.1072 -0.9456 -0.3072 +vn -0.0592 -0.9982 -0.0000 +vn 0.1072 -0.9942 -0.0000 +vn -0.0592 -0.9494 0.3085 +vn 0.1072 -0.9456 0.3072 +vn -0.0592 -0.8076 0.5868 +vn 0.1072 -0.8044 0.5844 +vn -0.0592 -0.5868 0.8076 +vn 0.1072 -0.3072 0.9456 +vn -0.0592 -0.3085 0.9494 +vn -0.0592 0.0000 0.9982 +vn 0.1072 0.3072 0.9456 +vn -0.0592 0.3085 0.9494 +vn -0.0592 0.5868 0.8076 +vn 0.1072 0.8044 0.5844 +vn -0.0592 0.8076 0.5868 +vn -0.0592 0.9494 0.3085 +vn 0.1072 0.9456 0.3072 +vn -0.0592 0.9982 0.0000 +vn 0.1072 0.9942 -0.0000 +vn -0.0592 0.9494 -0.3085 +vn 0.1072 0.8044 -0.5844 +vn -0.0592 0.8076 -0.5868 +vn -0.0592 0.5868 -0.8076 +vn 0.3239 -0.5561 -0.7654 +vn 0.3239 -0.7654 -0.5561 +vn 0.1072 0.3072 -0.9456 +vn -0.0592 0.3085 -0.9494 +vn -0.0600 -0.9493 -0.3085 +vn -0.0600 -0.8076 -0.5867 +vn 0.3239 -0.7654 0.5561 +vn 0.6069 -0.4672 0.6430 +vn 0.3239 -0.5561 0.7654 +vn 0.1072 -0.5844 0.8044 +vn 0.3239 -0.2924 -0.8998 +vn 0.1072 -0.3072 -0.9456 +vn 0.1072 0.5844 0.8044 +vn 0.3239 0.7654 0.5561 +vn 0.1072 0.5844 -0.8044 +vn 0.3239 0.7654 -0.5561 +vn 0.3239 0.5561 -0.7654 +vn 0.3239 -0.8998 0.2924 +vn 0.1072 -0.0000 0.9942 +vn 0.3239 0.2924 0.8998 +vn 0.1072 0.9456 -0.3072 +vn 0.3239 0.9461 0.0000 +vn 0.3239 0.8998 -0.2924 +vn 0.3239 -0.8998 -0.2924 +vn 0.3239 -0.2924 0.8998 +vn 0.3239 0.8998 0.2924 +vn 0.3239 0.2924 -0.8998 +vn 0.3239 0.5561 0.7654 +vn 0.3239 -0.9461 -0.0000 +vn 0.3239 -0.0000 0.9461 +vn 0.3239 0.0000 -0.9461 +vn 0.6069 -0.7948 0.0000 +vn 0.8573 -0.4896 -0.1591 +vn 0.8573 -0.5148 0.0000 +vn 0.6069 -0.2456 -0.7559 +vn 0.6069 0.7559 -0.2456 +vn 0.6069 -0.2456 0.7559 +vn 0.6069 -0.4672 -0.6430 +vn 0.6069 0.6430 -0.4672 +vn 0.6069 -0.0000 0.7948 +vn 0.6069 -0.6430 -0.4672 +vn 0.6069 0.4672 -0.6430 +vn 0.6069 0.2456 0.7559 +vn 0.6069 -0.7559 -0.2456 +vn 0.6069 0.2456 -0.7559 +vn 0.6069 0.4672 0.6430 +vn 0.6069 0.0000 -0.7948 +vn 0.6069 0.6430 0.4672 +vn 0.6069 -0.7559 0.2456 +vn 0.6069 0.7559 0.2456 +vn 0.6069 -0.6430 0.4672 +vn 0.6069 0.7948 -0.0000 +vn 0.8573 0.4896 0.1591 +vn 0.9802 0.1978 0.0000 +vn 0.8573 0.5148 0.0000 +vn 0.8573 0.0000 -0.5148 +vn 0.8573 0.4165 0.3026 +vn 0.8573 -0.4896 0.1591 +vn 0.8573 -0.4165 0.3026 +vn 0.8573 -0.3026 0.4165 +vn 0.8573 -0.1591 -0.4896 +vn 0.8573 0.4896 -0.1591 +vn 0.8573 -0.1591 0.4896 +vn 0.8573 -0.3026 -0.4165 +vn 0.8573 0.4165 -0.3026 +vn 0.8573 0.0000 0.5148 +vn 0.8573 -0.4165 -0.3026 +vn 0.8573 0.3026 -0.4165 +vn 0.8573 0.1591 0.4896 +vn 0.8573 0.1591 -0.4896 +vn 0.8573 0.3026 0.4165 +vn 0.9803 0.1880 0.0611 +vn 0.9803 -0.0000 0.1977 +vn 0.9803 -0.1880 0.0611 +vn 0.9803 -0.1599 0.1162 +vn 0.9803 -0.1162 0.1600 +vn 0.9803 -0.0611 -0.1880 +vn 0.9803 0.1880 -0.0611 +vn 0.9803 -0.0611 0.1880 +vn 0.9803 -0.1162 -0.1599 +vn 0.9803 0.1600 -0.1162 +vn 0.9803 -0.1600 -0.1162 +vn 0.9803 0.1162 -0.1600 +vn 0.9803 0.0611 0.1880 +vn 0.9803 -0.1880 -0.0611 +vn 0.9803 0.0611 -0.1881 +vn 0.9803 0.1162 0.1599 +vn 0.9803 -0.1977 0.0000 +vn 0.9803 0.0000 -0.1977 +vn 0.9803 0.1599 0.1162 +vn -0.0600 0.9982 -0.0000 +vn -0.0000 0.9511 0.3090 +vn -0.0600 0.9493 0.3085 +vn -0.0600 -0.5867 0.8076 +vn -0.0600 0.8076 0.5867 +vn -0.0600 0.5867 -0.8076 +vn -0.0600 -0.3085 -0.9493 +vn -0.0600 -0.8076 0.5867 +vn -0.0600 -0.9493 0.3085 +vn -0.0600 0.3085 0.9493 +vn -0.0600 0.9493 -0.3085 +vn -0.0600 -0.3085 0.9493 +vn -0.0600 0.3085 -0.9493 +vn -0.0600 -0.5867 -0.8076 +vn -0.0600 -0.0000 -0.9982 +vn -0.0600 0.5867 0.8076 +vn -0.0600 0.8076 -0.5867 +vn -0.0600 -0.9982 0.0000 +vn -0.0600 -0.0000 0.9982 +vn 0.0000 -0.8090 0.5878 +vn -0.0000 0.9511 -0.3090 +vn 0.0000 -0.5878 0.8090 +vn 0.0000 -0.3090 -0.9511 +vn -0.0000 0.8090 -0.5878 +vn 0.0000 -0.3090 0.9511 +vn 0.0000 -0.5878 -0.8090 +vn 0.0000 -0.8090 -0.5878 +vn -0.0000 0.5878 -0.8090 +vn -0.0000 0.5878 0.8090 +vn -0.0000 0.3090 0.9511 +vn 0.0000 -0.9511 -0.3090 +vn -0.0000 0.3090 -0.9511 +vn -0.0000 0.8090 0.5878 +vn 0.0000 -0.9511 0.3090 +vn 0.2116 0.0000 -0.9774 +vn 0.9665 0.0000 -0.2567 +vn 0.6774 -0.5201 -0.5201 +vn 0.6774 0.0000 -0.7356 +vn 0.2116 -0.6911 -0.6911 +vn 0.2116 -0.9774 0.0000 +vn 0.9665 -0.1815 -0.1815 +vn 0.6774 -0.7356 0.0000 +vn 0.9665 -0.1815 0.1815 +vn 0.6774 -0.5201 0.5201 +vn 0.2116 -0.6911 0.6911 +vn 0.2116 -0.0000 0.9774 +vn 0.9665 -0.0000 0.2567 +vn 0.6774 -0.0000 0.7356 +vn 0.6774 0.5201 0.5201 +vn 0.2116 0.6911 0.6911 +vn 0.9665 0.1815 0.1815 +vn 0.2116 0.9774 -0.0000 +vn 0.9665 0.2567 -0.0000 +vn 0.6774 0.7356 -0.0000 +vn 0.6774 0.5201 -0.5201 +vn 0.2116 0.6911 -0.6911 +vn 0.9665 -0.2567 0.0000 +vn -0.0000 0.7136 0.7006 +vn 0.4073 0.6058 0.6834 +vn 0.7055 0.3113 0.6367 +vn 0.8147 -0.0910 0.5727 +vn 0.7055 -0.4933 0.5088 +vn 0.4073 -0.7878 0.4621 +vn 0.0000 -0.8956 0.4449 +vn -0.4073 -0.7878 0.4621 +vn -0.4073 -0.7878 0.4620 +vn -0.7055 -0.4933 0.5088 +vn -0.8147 -0.0910 0.5727 +vn -0.7055 0.3113 0.6367 +vn -0.4073 0.6058 0.6834 +vn -0.0000 -0.9876 -0.1569 +vn -0.5000 -0.8553 -0.1359 +vn 0.5000 0.8553 0.1359 +vn 0.8660 0.4938 0.0784 +vn -0.5000 0.8553 0.1359 +vn -0.8660 0.4938 0.0784 +vn 0.5000 -0.8553 -0.1359 +vn -0.8660 -0.4938 -0.0784 +vn -0.8660 -0.4938 -0.0785 +vn 0.0000 0.9876 0.1569 +vn 0.8660 -0.4938 -0.0785 +vn -0.0000 0.7136 -0.7006 +vn 0.4073 0.6058 -0.6834 +vn 0.7055 0.3113 -0.6367 +vn 0.8147 -0.0910 -0.5727 +vn 0.7055 -0.4933 -0.5088 +vn 0.4073 -0.7878 -0.4620 +vn -0.0000 -0.8956 -0.4449 +vn -0.4073 -0.7878 -0.4620 +vn -0.7055 -0.4933 -0.5088 +vn -0.8147 -0.0910 -0.5727 +vn -0.7055 0.3113 -0.6367 +vn -0.4073 0.6058 -0.6834 +vn -0.5000 -0.8553 0.1359 +vn 0.0000 -0.9876 0.1569 +vn 0.8660 0.4938 -0.0785 +vn 0.5000 0.8553 -0.1359 +vn -0.5000 0.8553 -0.1359 +vn -0.8660 0.4938 -0.0785 +vn 0.5000 -0.8553 0.1359 +vn -0.8660 -0.4938 0.0785 +vn 0.0000 0.9876 -0.1569 +vn 0.8660 -0.4938 0.0784 +vn 0.7231 0.6672 0.1788 +vn -0.9844 0.1700 0.0455 +vn 0.9844 0.1699 0.0455 +vn -0.7230 0.6673 0.1788 +vn -0.7231 0.6673 0.1788 +vn -0.7231 0.6672 0.1788 +vn -0.9844 0.1699 0.0455 +vn 0.9844 0.1700 0.0455 +vn -0.4669 -0.4015 0.7879 +vn 0.4669 -0.4015 0.7880 +vn -0.9554 0.1340 -0.2630 +vn -0.9555 -0.1340 0.2630 +vn 0.9554 0.1340 -0.2630 +vn 0.9554 -0.1340 0.2630 +vn 0.4669 0.4015 -0.7879 +vn 0.4669 -0.4015 0.7879 +vn -0.4669 0.4015 -0.7879 +vn -0.9554 -0.1340 0.2630 +vn 0.4669 0.8843 -0.0000 +vn -0.4669 0.8843 0.0000 +vn 0.9554 -0.2952 0.0000 +vn 0.9554 0.2952 0.0000 +vn -0.9554 -0.2952 0.0000 +vn -0.9555 0.2952 0.0000 +vn -0.4669 -0.8843 0.0000 +vn -0.9554 0.2952 0.0000 +vn 0.4669 -0.8843 0.0000 +vn 0.9555 0.2951 0.0000 +vn 0.9555 -0.2952 0.0000 +vn 0.9555 0.2952 -0.0000 +vn 0.4669 -0.4015 -0.7879 +vn -0.4669 -0.4015 -0.7879 +vn -0.9555 -0.1340 -0.2630 +vn -0.9554 0.1340 0.2630 +vn -0.9555 0.1340 0.2630 +vn 0.9554 0.1340 0.2630 +vn 0.9554 -0.1340 -0.2630 +vn 0.9555 0.1340 0.2630 +vn 0.4669 0.4015 0.7879 +vn 0.9554 -0.1339 -0.2630 +vn -0.4669 0.4015 0.7879 +vn -0.4669 0.4014 0.7879 +vn -0.9554 -0.1340 -0.2630 +vn 0.4669 0.4014 0.7879 +vn -0.4669 0.4014 0.7880 +vn 0.4669 0.4014 0.7880 +vn -0.9554 -0.2952 0.0001 +vn -0.1442 0.1945 -0.9703 +vn 0.2193 0.6891 -0.6907 +vn 0.2247 0.2119 -0.9511 +vn -0.1404 0.9708 -0.1946 +vn 0.2284 0.9498 -0.2139 +vn -0.0945 0.9485 0.3025 +vn 0.2500 0.9343 0.2542 +vn -0.0672 0.8594 0.5069 +vn 0.2536 0.8593 0.4441 +vn 0.9295 0.3686 -0.0089 +vn 0.9164 0.3942 0.0693 +vn 0.9277 0.0040 -0.3732 +vn -0.1007 -0.3028 -0.9477 +vn 0.2441 -0.2561 -0.9353 +vn 0.2471 -0.4461 -0.8602 +vn 0.6235 -0.1596 -0.7654 +vn 0.6078 -0.3147 -0.7290 +vn 0.9141 -0.0743 -0.3987 +vn 0.6177 0.1926 -0.7624 +vn 0.9164 0.1282 -0.3793 +vn 0.6179 0.5542 -0.5577 +vn 0.9138 0.2847 -0.2895 +vn 0.6206 0.7592 -0.1964 +vn 0.6281 0.7624 0.1559 +vn 0.9176 0.3746 -0.1330 +vn -0.0740 -0.5073 -0.8586 +vn -0.6328 -0.2901 -0.7179 +vn -0.5903 -0.4572 -0.6653 +vn -0.9767 -0.1528 -0.1507 +vn -0.6763 0.1071 -0.7288 +vn -0.9880 -0.0386 -0.1498 +vn -0.6959 0.5093 -0.5063 +vn -0.1625 0.6978 -0.6976 +vn -0.9934 0.0835 -0.0786 +vn -0.6732 0.7321 -0.1043 +vn -0.9870 0.1548 0.0434 +vn -0.6278 0.7213 0.2926 +vn -0.9752 0.1557 0.1575 +vn -0.5846 0.6686 0.4596 +vn -0.9630 0.1687 0.2099 +vn -0.1446 -0.9709 -0.1907 +vn 0.2194 -0.6935 -0.6862 +vn 0.2243 -0.9520 -0.2081 +vn -0.1400 -0.1983 -0.9701 +vn 0.2287 -0.2177 -0.9488 +vn -0.0939 0.2988 -0.9497 +vn 0.2506 0.2504 -0.9352 +vn -0.0665 0.5036 -0.8614 +vn 0.2542 0.4406 -0.8609 +vn 0.9297 -0.0109 -0.3681 +vn 0.9162 -0.3803 -0.1262 +vn 0.9177 -0.1350 -0.3736 +vn -0.1013 -0.9465 0.3064 +vn 0.2434 -0.9344 0.2599 +vn 0.2464 -0.8586 0.4496 +vn 0.6230 -0.7650 0.1629 +vn 0.6073 -0.7281 0.3179 +vn 0.9138 -0.3989 0.0763 +vn 0.6175 -0.7635 -0.1893 +vn 0.9275 -0.3737 -0.0021 +vn 0.6179 -0.5602 -0.5517 +vn 0.9138 -0.2911 -0.2831 +vn 0.6209 -0.1996 -0.7581 +vn 0.6286 0.1526 -0.7626 +vn 0.9166 0.0673 -0.3940 +vn -0.0747 -0.8566 0.5106 +vn -0.6333 -0.7165 0.2926 +vn -0.5908 -0.6632 0.4595 +vn -0.9769 -0.1495 0.1529 +vn -0.6766 -0.7288 -0.1046 +vn -0.9881 -0.1492 0.0387 +vn -0.6959 -0.5079 -0.5077 +vn -0.1625 -0.7002 -0.6952 +vn -0.9934 -0.0784 -0.0837 +vn -0.6729 -0.1068 -0.7320 +vn -0.9869 0.0433 -0.1555 +vn -0.6272 0.2901 -0.7228 +vn -0.9750 0.1574 -0.1568 +vn -0.5841 0.4572 -0.6707 +vn -0.9628 0.2098 -0.1700 +vn -0.1480 -0.1870 0.9712 +vn 0.2193 -0.6821 0.6976 +vn 0.2211 -0.2028 0.9539 +vn -0.1366 -0.9698 0.2021 +vn 0.2320 -0.9468 0.2230 +vn -0.0884 -0.9514 -0.2949 +vn 0.2558 -0.9352 -0.2450 +vn -0.0606 -0.8639 -0.4999 +vn 0.2600 -0.8618 -0.4356 +vn 0.9313 -0.3639 0.0166 +vn 0.9186 -0.3903 -0.0616 +vn 0.9259 0.0037 0.3777 +vn -0.1068 0.3103 0.9446 +vn 0.2382 0.2653 0.9343 +vn 0.2407 0.4546 0.8576 +vn 0.6190 0.1692 0.7670 +vn 0.6027 0.3239 0.7293 +vn 0.9117 0.0821 0.4025 +vn 0.6150 -0.1831 0.7670 +vn 0.9151 -0.1204 0.3848 +vn 0.6179 -0.5464 0.5654 +vn 0.9138 -0.2778 0.2964 +vn 0.6233 -0.7544 0.2058 +vn 0.6326 -0.7605 -0.1463 +vn 0.9187 -0.3690 0.1407 +vn -0.0807 0.5141 0.8539 +vn -0.6377 0.2930 0.7124 +vn -0.5957 0.4599 0.6585 +vn -0.9782 0.1492 0.1446 +vn -0.6794 -0.1042 0.7264 +vn -0.9889 0.0350 0.1447 +vn -0.6959 -0.5084 0.5072 +vn -0.1625 -0.6927 0.7027 +vn -0.9934 -0.0877 0.0745 +vn -0.6701 -0.7345 0.1073 +vn -0.9860 -0.1600 -0.0469 +vn -0.6228 -0.7268 -0.2896 +vn -0.9736 -0.1618 -0.1609 +vn -0.5791 -0.6753 -0.4567 +vn -0.9612 -0.1752 -0.2132 +vn -0.4669 -0.4816 -0.7417 +vn 0.4669 -0.4817 -0.7416 +vn -0.4669 -0.4816 -0.7416 +vn -0.9554 0.1608 0.2475 +vn -0.9554 -0.1608 -0.2475 +vn 0.9554 0.1607 0.2475 +vn 0.9554 -0.1608 -0.2475 +vn 0.9554 0.1608 0.2476 +vn 0.4669 0.4816 0.7416 +vn 0.4669 0.4817 0.7416 +vn 0.4669 -0.4816 -0.7416 +vn -0.9554 0.1608 0.2476 +vn -0.4669 0.4816 0.7416 +vn 0.4669 -0.4422 0.7658 +vn -0.4669 -0.4422 0.7658 +vn 0.9554 0.1476 -0.2556 +vn 0.9554 -0.1476 0.2556 +vn -0.9554 0.1476 -0.2556 +vn -0.9555 -0.1476 0.2556 +vn -0.9555 0.1476 -0.2556 +vn -0.4669 0.4421 -0.7658 +vn -0.4669 0.4421 -0.7659 +vn -0.9554 -0.1476 0.2556 +vn 0.4669 0.4422 -0.7658 +vn -0.9554 0.1607 0.2476 +vn 0.9554 0.1608 0.2475 +vn -0.4669 0.4817 0.7416 +vn -0.4669 -0.4421 0.7658 +vn -0.4669 0.4422 -0.7658 +vn -0.4669 0.4816 0.7417 +vn 0.4669 -0.4421 0.7659 +vn 0.4669 -0.4421 0.7658 +vn 0.9555 0.1476 -0.2556 +vn 0.9555 -0.1476 0.2556 +vn 0.4669 0.8831 0.0463 +vn -0.4669 0.8831 0.0463 +vn -0.9555 0.2947 0.0155 +vn -0.9554 -0.2948 -0.0154 +vn -0.9554 -0.2947 -0.0154 +vn 0.9554 -0.2948 -0.0154 +vn 0.9554 0.2948 0.0155 +vn 0.4669 -0.8831 -0.0463 +vn -0.4669 -0.8831 -0.0463 +vn -0.9554 0.2948 0.0155 +vn 0.9554 0.2948 0.0154 +vn 0.9555 -0.2947 -0.0154 +vn -0.9554 0.1475 -0.2556 +vn -0.9554 0.1475 -0.2557 +vn 0.4669 0.4421 -0.7659 +vn -0.4669 0.8831 -0.0463 +vn 0.4669 0.8831 -0.0463 +vn -0.9554 -0.2948 0.0154 +vn -0.9554 0.2948 -0.0154 +vn -0.9555 0.2947 -0.0154 +vn 0.9554 -0.2948 0.0154 +vn 0.9554 0.2948 -0.0155 +vn 0.4669 -0.8831 0.0463 +vn -0.4669 -0.8831 0.0463 +vn 0.4669 -0.4422 -0.7658 +vn -0.4669 -0.4421 -0.7659 +vn 0.9554 0.1476 0.2556 +vn 0.9554 -0.1476 -0.2556 +vn -0.9554 0.1476 0.2556 +vn -0.9555 -0.1476 -0.2556 +vn -0.9555 0.1476 0.2556 +vn -0.4669 0.4422 0.7658 +vn -0.4669 -0.4421 -0.7658 +vn -0.9554 -0.1476 -0.2556 +vn 0.4669 0.4422 0.7658 +vn -0.9554 0.2948 -0.0155 +vn -0.4669 -0.4422 -0.7658 +vn 0.9555 -0.1476 -0.2556 +vn 0.4669 0.4421 0.7658 +vn 0.4669 0.4421 0.7659 +vn 0.4669 -0.4816 0.7416 +vn -0.4669 -0.4816 0.7416 +vn -0.9555 -0.1608 0.2475 +vn -0.9554 0.1608 -0.2475 +vn 0.9554 0.1607 -0.2476 +vn 0.9554 -0.1608 0.2475 +vn 0.9555 0.1607 -0.2475 +vn 0.4669 0.4817 -0.7416 +vn -0.4669 0.4816 -0.7416 +vn -0.9554 -0.1608 0.2475 +vn -0.9554 0.1475 0.2556 +vn -0.9554 -0.1475 -0.2556 +vn -0.9554 0.1475 0.2557 +vn -0.4669 0.4421 0.7658 +vn -0.9554 -0.1475 -0.2557 +vn -0.4669 -0.4817 0.7416 +vn -0.9554 0.1608 -0.2476 +vn 0.9554 -0.1607 0.2476 +vn 0.9554 0.1608 -0.2475 +vn -0.4669 0.4817 -0.7416 +vn 0.9554 0.1607 -0.2475 +vn 0.9554 0.1608 -0.2476 +vn 0.4669 0.4816 -0.7416 +vn 0.7231 0.4884 0.4884 +vn -0.9844 0.1244 0.1244 +vn 0.9844 0.1244 0.1244 +vn -0.7231 0.4885 0.4885 +vn 0.7231 0.4885 0.4885 +vn 0.7231 0.4884 0.4885 +vn 0.7231 0.1788 0.6672 +vn -0.9844 0.0455 0.1700 +vn 0.9844 0.0455 0.1700 +vn -0.7231 0.1788 0.6673 +vn -0.7231 0.1788 0.6672 +vn 0.9844 0.0455 0.1699 +vn 0.9844 0.0456 0.1700 +vn 0.7231 0.1787 0.6672 +vn 0.7231 -0.1788 0.6672 +vn -0.9844 -0.0455 0.1700 +vn 0.9844 -0.0455 0.1699 +vn -0.7231 -0.1788 0.6673 +vn -0.7231 -0.1788 0.6672 +vn 0.9844 -0.0455 0.1700 +vn 0.9844 -0.0456 0.1700 +vn 0.7231 -0.4885 0.4884 +vn -0.9844 -0.1244 0.1244 +vn 0.9844 -0.1244 0.1244 +vn -0.7231 -0.4885 0.4885 +vn 0.7231 -0.4885 0.4885 +vn 0.7231 -0.6672 0.1788 +vn -0.9844 -0.1700 0.0455 +vn 0.9844 -0.1700 0.0455 +vn -0.7231 -0.6673 0.1788 +vn -0.7231 -0.6672 0.1788 +vn -0.9844 -0.1699 0.0455 +vn 0.9844 -0.1699 0.0455 +vn 0.7231 -0.6672 -0.1788 +vn -0.9844 -0.1699 -0.0455 +vn 0.9844 -0.1699 -0.0455 +vn -0.7231 -0.6672 -0.1788 +vn -0.7231 -0.6673 -0.1788 +vn -0.9844 -0.1700 -0.0455 +vn 0.9844 -0.1700 -0.0455 +vn 0.7231 -0.4884 -0.4885 +vn -0.9844 -0.1244 -0.1244 +vn 0.9844 -0.1244 -0.1244 +vn -0.7231 -0.4885 -0.4885 +vn 0.7231 -0.4885 -0.4885 +vn 0.7231 -0.1788 -0.6672 +vn -0.9844 -0.0455 -0.1700 +vn 0.9844 -0.0455 -0.1699 +vn -0.7231 -0.1788 -0.6673 +vn -0.7231 -0.1788 -0.6672 +vn 0.9844 -0.0456 -0.1700 +vn 0.9844 -0.0455 -0.1700 +vn 0.7231 -0.1788 -0.6673 +vn 0.7231 -0.1787 -0.6672 +vn 0.7231 0.1788 -0.6672 +vn -0.9844 0.0455 -0.1700 +vn 0.9844 0.0456 -0.1699 +vn -0.7231 0.1788 -0.6673 +vn -0.7231 0.1788 -0.6672 +vn 0.9844 0.0455 -0.1699 +vn 0.9844 0.0455 -0.1700 +vn 0.9844 0.0456 -0.1700 +vn 0.7231 0.4885 -0.4884 +vn -0.9844 0.1244 -0.1244 +vn 0.9844 0.1244 -0.1244 +vn -0.7231 0.4885 -0.4885 +vn 0.7231 0.6672 -0.1788 +vn -0.9844 0.1700 -0.0455 +vn 0.9844 0.1699 -0.0455 +vn -0.7231 0.6673 -0.1788 +vn -0.7231 0.6672 -0.1788 +vn -0.9844 0.1699 -0.0455 +vn 0.9844 0.1700 -0.0455 +vn 0.6186 -0.2988 0.7267 +vn -0.9669 0.1561 -0.2020 +vn 0.9665 0.1815 -0.1815 +vn -0.9555 0.2952 0.0001 +vn 0.9554 -0.1341 -0.2630 +vn 0.6130 0.7263 0.3111 +vn -0.9649 -0.2053 -0.1637 +vn 0.6135 0.3079 -0.7272 +vn -0.9651 -0.1624 0.2054 +vn 0.6181 -0.7258 -0.3020 +vn -0.9667 0.2019 0.1573 +vn 0.9555 0.1476 0.2556 +vn 0.9554 -0.1607 0.2475 +s off +f 46/1/1 47/2/1 48/3/1 +f 47/4/2 50/5/2 48/6/2 +f 52/7/3 53/8/3 54/9/3 +f 54/10/4 44/11/4 43/12/4 +f 44/11/5 52/7/5 45/13/5 +f 56/14/6 58/15/6 55/16/6 +f 57/17/7 60/18/7 58/15/7 +f 62/19/8 59/20/8 61/21/8 +f 58/15/3 64/22/3 55/16/3 +f 64/22/9 65/23/9 66/24/9 +f 67/25/3 58/15/3 60/18/3 +f 60/18/3 68/26/3 67/25/3 +f 68/26/10 70/27/10 67/25/10 +f 67/25/11 65/23/11 63/28/11 +f 57/17/1 70/29/1 59/20/1 +f 59/20/1 69/30/1 61/21/1 +f 66/31/1 57/17/1 56/14/1 +f 46/1/12 49/32/12 47/4/12 +f 45/13/13 51/33/13 46/1/13 +f 214/34/1 216/35/1 213/36/1 +f 223/37/1 238/38/1 221/39/1 +f 224/40/1 240/41/1 222/42/1 +f 225/43/1 215/44/1 214/45/1 +f 223/37/1 241/46/1 237/47/1 +f 227/48/1 239/49/1 224/50/1 +f 228/51/1 233/52/1 225/43/1 +f 226/53/1 243/54/1 241/55/1 +f 230/56/1 242/57/1 227/48/1 +f 220/58/1 234/59/1 228/60/1 +f 231/61/1 243/54/1 229/62/1 +f 230/63/1 247/64/1 244/65/1 +f 196/66/1 246/67/1 231/68/1 +f 232/69/1 249/70/1 247/64/1 +f 195/71/1 248/72/1 196/66/1 +f 217/73/1 249/74/1 218/75/1 +f 220/58/1 252/76/1 245/77/1 +f 195/78/1 216/35/1 250/79/1 +f 221/80/1 251/81/1 217/73/1 +f 219/82/1 240/41/1 252/83/1 +f 264/84/1 268/85/1 235/86/1 +f 338/87/1 339/88/1 335/89/1 +f 336/90/14 342/91/14 337/92/14 +f 345/93/3 346/94/3 341/95/3 +f 335/96/15 344/97/15 343/98/15 +f 339/88/16 344/97/16 340/99/16 +f 348/100/17 350/101/17 347/102/17 +f 348/100/18 352/103/18 349/104/18 +f 352/103/19 354/105/19 353/106/19 +f 355/107/3 348/100/3 347/102/3 +f 355/107/20 358/108/20 356/109/20 +f 351/110/3 356/109/3 359/111/3 +f 351/110/3 360/112/3 354/105/3 +f 361/113/21 360/112/21 359/111/21 +f 356/109/22 361/113/22 359/111/22 +f 361/114/1 349/104/1 352/103/1 +f 352/103/1 362/115/1 361/114/1 +f 349/104/1 357/116/1 350/101/1 +f 342/91/23 338/87/23 337/92/23 +f 346/94/24 339/88/24 338/87/24 +f 379/117/25 386/118/25 381/119/25 +f 379/117/25 393/120/25 385/121/25 +f 377/122/25 394/123/25 393/120/25 +f 375/124/25 395/125/25 394/126/25 +f 371/127/25 395/125/25 373/128/25 +f 371/127/25 397/129/25 396/130/25 +f 364/131/25 398/132/25 390/133/25 +f 364/131/25 389/134/25 365/135/25 +f 369/136/25 399/137/25 397/129/25 +f 383/138/25 398/132/25 387/139/25 +f 367/140/25 389/134/25 399/137/25 +f 381/119/25 400/141/25 383/138/25 +f 408/142/25 410/143/25 402/144/25 +f 430/145/26 434/146/26 428/147/26 +f 434/146/26 426/148/26 428/147/26 +f 426/148/26 442/149/26 424/150/26 +f 442/151/26 422/152/26 424/153/26 +f 443/154/26 420/155/26 422/152/26 +f 420/155/26 445/156/26 418/157/26 +f 440/158/26 436/159/26 414/160/26 +f 413/161/26 440/158/26 414/160/26 +f 445/156/26 416/162/26 418/157/26 +f 436/159/26 448/163/26 432/164/26 +f 416/162/26 437/165/26 413/161/26 +f 448/163/26 430/145/26 432/164/26 +f 451/166/26 455/167/26 439/168/26 +f 460/169/27 462/170/27 459/171/27 +f 464/172/28 466/173/28 463/174/28 +f 467/175/29 466/173/29 465/176/29 +f 470/177/30 463/174/30 469/178/30 +f 469/178/27 467/179/27 470/180/27 +f 471/181/31 473/182/31 474/183/31 +f 476/184/32 478/185/32 475/186/32 +f 471/181/33 470/187/33 467/188/33 +f 480/189/28 482/190/28 479/191/28 +f 460/192/29 479/193/29 482/194/29 +f 482/195/33 475/186/33 478/185/33 +f 461/196/30 480/189/30 462/170/30 +f 483/197/1 471/181/1 467/198/1 +f 484/199/3 474/183/3 473/182/3 +f 485/200/3 475/186/3 481/201/3 +f 486/202/1 478/185/1 477/203/1 +f 466/173/28 488/204/28 463/174/28 +f 479/191/28 490/205/28 480/189/28 +f 469/178/27 492/206/27 468/207/27 +f 459/171/1 489/208/1 479/193/1 +f 469/178/3 488/204/3 491/209/3 +f 468/210/1 487/211/1 466/173/1 +f 462/170/27 493/212/27 459/171/27 +f 462/170/3 490/205/3 494/213/3 +f 496/214/34 498/215/34 495/216/34 +f 496/214/3 500/217/3 499/218/3 +f 501/219/28 497/220/28 496/214/28 +f 498/221/35 503/222/35 504/223/35 +f 505/224/36 507/225/36 508/226/36 +f 508/226/37 510/227/37 509/228/37 +f 512/229/38 510/227/38 511/230/38 +f 511/231/39 505/224/39 512/232/39 +f 501/233/40 503/234/40 502/235/40 +f 503/236/41 497/237/41 502/238/41 +f 500/217/42 501/233/42 499/218/42 +f 516/239/28 513/240/28 515/241/28 +f 519/242/27 521/243/27 522/244/27 +f 519/245/43 517/246/43 520/247/43 +f 517/246/44 521/243/44 520/247/44 +f 521/243/3 515/241/3 522/244/3 +f 518/248/45 515/241/45 514/249/45 +f 519/245/1 514/250/1 513/251/1 +f 524/252/27 526/253/27 528/254/27 +f 538/255/28 531/256/28 543/257/28 +f 546/258/28 540/259/28 535/260/28 +f 537/261/27 542/262/27 530/263/27 +f 552/264/46 554/265/46 551/266/46 +f 552/267/47 555/268/47 556/269/47 +f 556/270/48 557/271/48 558/272/48 +f 557/273/49 560/274/49 558/275/49 +f 560/276/50 561/277/50 562/278/50 +f 561/279/51 564/280/51 562/281/51 +f 564/282/52 565/283/52 566/284/52 +f 565/285/53 568/286/53 566/287/53 +f 567/288/54 570/289/54 568/290/54 +f 570/291/55 571/292/55 572/293/55 +f 571/294/56 574/295/56 572/296/56 +f 574/297/57 575/298/57 576/299/57 +f 553/300/58 575/301/58 554/302/58 +f 587/303/59 586/304/59 584/305/59 +f 612/306/60 610/307/60 609/308/60 +f 603/309/61 602/310/61 600/311/61 +f 623/312/59 622/313/59 620/314/59 +f 648/315/60 646/316/60 645/317/60 +f 639/318/61 638/319/61 636/320/61 +f 659/321/59 658/322/59 656/323/59 +f 682/324/60 684/325/60 681/326/60 +f 675/327/61 674/328/61 672/329/61 +f 689/330/62 700/331/62 696/332/62 +f 718/333/63 720/334/63 717/335/63 +f 705/336/64 716/337/64 712/338/64 +f 725/339/62 736/340/62 732/341/62 +f 756/342/65 754/343/65 753/344/65 +f 741/345/64 752/346/64 748/347/64 +f 761/348/62 772/349/62 768/350/62 +f 790/351/65 792/352/65 789/353/65 +f 777/354/64 788/355/64 784/356/64 +f 793/357/61 798/358/61 803/359/61 +f 805/360/3 800/361/3 804/362/3 +f 803/363/66 807/364/66 806/365/66 +f 807/366/67 801/367/67 805/360/67 +f 808/368/68 803/363/68 806/365/68 +f 793/369/1 809/370/1 794/371/1 +f 810/372/1 798/373/1 811/374/1 +f 811/374/69 797/375/69 812/376/69 +f 813/377/64 812/378/64 814/379/64 +f 796/380/3 812/376/3 797/381/3 +f 795/382/70 809/370/70 813/383/70 +f 941/384/71 943/385/71 944/386/71 +f 948/387/62 950/388/62 947/389/62 +f 954/390/72 949/391/72 953/392/72 +f 955/393/73 944/386/73 943/385/73 +f 946/394/74 954/390/74 953/392/74 +f 951/395/75 956/396/75 955/393/75 +f 946/397/76 949/391/76 948/398/76 +f 947/399/77 954/390/77 945/400/77 +f 941/401/78 956/396/78 952/402/78 +f 942/403/59 955/393/59 943/385/59 +f 811/404/64 804/362/64 810/372/64 +f 806/405/64 805/360/64 811/404/64 +f 808/368/64 811/404/64 812/378/64 +f 812/378/64 809/406/64 808/368/64 +f 797/407/61 795/408/61 796/409/61 +f 797/407/61 794/410/61 795/408/61 +f 803/359/61 801/411/61 802/412/61 +f 798/358/61 800/413/61 801/411/61 +f 967/414/79 966/415/79 964/416/79 +f 992/417/80 990/418/80 989/419/80 +f 983/420/81 982/421/81 980/422/81 +f 1003/423/79 1002/424/79 1000/425/79 +f 1028/426/80 1026/427/80 1025/428/80 +f 1019/429/81 1018/430/81 1016/431/81 +f 1039/432/79 1038/433/79 1036/434/79 +f 1062/435/80 1064/436/80 1061/437/80 +f 1055/438/81 1054/439/81 1052/440/81 +f 1069/441/82 1080/442/82 1076/443/82 +f 1097/444/83 1099/445/83 1100/446/83 +f 1085/447/84 1096/448/84 1092/449/84 +f 1105/450/85 1116/451/85 1112/452/85 +f 1136/453/86 1134/454/86 1133/455/86 +f 1121/456/84 1132/457/84 1128/458/84 +f 1141/459/85 1152/460/85 1148/461/85 +f 1170/462/86 1172/463/86 1169/464/86 +f 1157/465/84 1168/466/84 1164/467/84 +f 1173/468/81 1178/469/81 1183/470/81 +f 1185/471/3 1180/472/3 1184/473/3 +f 1186/474/87 1182/475/87 1187/476/87 +f 1187/477/88 1181/478/88 1185/471/88 +f 1188/479/89 1183/480/89 1186/474/89 +f 1174/481/1 1188/479/1 1189/482/1 +f 1190/483/1 1178/484/1 1191/485/1 +f 1191/485/90 1177/486/90 1192/487/90 +f 1193/488/84 1192/489/84 1194/490/84 +f 1176/491/3 1192/487/3 1177/492/3 +f 1175/493/91 1189/482/91 1193/494/91 +f 1191/495/84 1184/473/84 1190/483/84 +f 1186/496/84 1185/471/84 1191/495/84 +f 1188/479/84 1191/495/84 1192/489/84 +f 1192/489/84 1189/497/84 1188/479/84 +f 1177/498/81 1175/499/81 1176/500/81 +f 1177/498/81 1174/501/81 1175/499/81 +f 1183/470/81 1181/502/81 1182/503/81 +f 1178/469/81 1180/504/81 1181/502/81 +f 1205/505/92 1204/506/92 1202/507/92 +f 1230/508/93 1228/509/93 1227/510/93 +f 1221/511/94 1220/512/94 1218/513/94 +f 1241/514/92 1240/515/92 1238/516/92 +f 1266/517/93 1264/518/93 1263/519/93 +f 1257/520/94 1256/521/94 1254/522/94 +f 1277/523/92 1276/524/92 1274/525/92 +f 1300/526/93 1302/527/93 1299/528/93 +f 1293/529/94 1292/530/94 1290/531/94 +f 1307/532/95 1318/533/95 1314/534/95 +f 1336/535/96 1338/536/96 1335/537/96 +f 1323/538/97 1334/539/97 1330/540/97 +f 1343/541/98 1354/542/98 1350/543/98 +f 1374/544/96 1372/545/96 1371/546/96 +f 1359/547/97 1370/548/97 1366/549/97 +f 1379/550/98 1390/551/98 1386/552/98 +f 1408/553/96 1410/554/96 1407/555/96 +f 1395/556/97 1406/557/97 1402/558/97 +f 1411/559/94 1416/560/94 1421/561/94 +f 1423/562/3 1418/563/3 1422/564/3 +f 1424/565/99 1420/566/99 1425/567/99 +f 1425/568/100 1419/569/100 1423/562/100 +f 1426/570/101 1421/571/101 1424/565/101 +f 1411/572/1 1427/573/1 1412/574/1 +f 1428/575/1 1416/576/1 1429/577/1 +f 1429/577/102 1415/578/102 1430/579/102 +f 1431/580/97 1430/581/97 1432/582/97 +f 1414/583/3 1430/579/3 1415/584/3 +f 1413/585/103 1427/573/103 1431/586/103 +f 1429/587/97 1422/564/97 1428/575/97 +f 1424/588/97 1423/562/97 1429/587/97 +f 1426/570/97 1429/587/97 1430/581/97 +f 1430/581/97 1427/589/97 1426/570/97 +f 1415/590/94 1413/591/94 1414/592/94 +f 1415/590/94 1412/593/94 1413/591/94 +f 1421/561/94 1419/594/94 1420/595/94 +f 1416/560/94 1418/596/94 1419/594/94 +f 1434/597/104 1436/598/104 1433/599/104 +f 1438/600/105 1440/601/105 1437/602/105 +f 1441/603/106 1440/601/106 1439/604/106 +f 1444/605/107 1437/602/107 1443/606/107 +f 1443/606/104 1441/607/104 1444/608/104 +f 1445/609/108 1447/610/108 1448/611/108 +f 1450/612/109 1452/613/109 1449/614/109 +f 1445/609/110 1444/615/110 1441/616/110 +f 1454/617/105 1456/618/105 1453/619/105 +f 1434/620/111 1453/621/111 1456/622/111 +f 1456/623/110 1449/614/110 1452/613/110 +f 1435/624/107 1454/617/107 1436/598/107 +f 1457/625/1 1445/609/1 1441/626/1 +f 1458/627/3 1448/611/3 1447/610/3 +f 1459/628/3 1449/614/3 1455/629/3 +f 1460/630/1 1452/613/1 1451/631/1 +f 1440/601/105 1462/632/105 1437/602/105 +f 1453/619/105 1464/633/105 1454/617/105 +f 1443/606/104 1466/634/104 1442/635/104 +f 1433/599/1 1463/636/1 1453/621/1 +f 1443/606/3 1462/632/3 1465/637/3 +f 1442/638/1 1461/639/1 1440/601/1 +f 1436/598/104 1467/640/104 1433/599/104 +f 1436/598/3 1464/633/3 1468/641/3 +f 1469/642/112 1471/643/112 1472/644/112 +f 1470/645/3 1474/646/3 1473/647/3 +f 1475/648/105 1471/649/105 1470/645/105 +f 1472/650/113 1477/651/113 1478/652/113 +f 1479/653/114 1481/654/114 1482/655/114 +f 1482/655/115 1484/656/115 1483/657/115 +f 1485/658/116 1483/657/116 1484/656/116 +f 1485/659/117 1479/653/117 1486/660/117 +f 1475/661/118 1477/662/118 1476/663/118 +f 1477/664/119 1471/643/119 1476/665/119 +f 1474/646/120 1475/661/120 1473/647/120 +f 1490/666/105 1487/667/105 1489/668/105 +f 1493/669/104 1495/670/104 1496/671/104 +f 1493/672/121 1491/673/121 1494/674/121 +f 1494/674/122 1490/666/122 1495/670/122 +f 1495/670/3 1489/668/3 1496/671/3 +f 1488/675/123 1496/671/123 1489/668/123 +f 1493/672/1 1488/676/1 1487/677/1 +f 1498/678/104 1500/679/104 1502/680/104 +f 1512/681/105 1505/682/105 1517/683/105 +f 1520/684/105 1514/685/105 1509/686/105 +f 1511/687/104 1516/688/104 1504/689/104 +f 1526/690/124 1528/691/124 1525/692/124 +f 1530/693/125 1532/694/125 1529/695/125 +f 1533/696/126 1532/694/126 1531/697/126 +f 1536/698/127 1529/695/127 1535/699/127 +f 1535/699/124 1533/700/124 1536/701/124 +f 1537/702/128 1539/703/128 1540/704/128 +f 1542/705/129 1544/706/129 1541/707/129 +f 1537/702/130 1536/708/130 1533/709/130 +f 1546/710/125 1548/711/125 1545/712/125 +f 1526/713/126 1545/714/126 1548/715/126 +f 1548/716/130 1541/707/130 1544/706/130 +f 1527/717/127 1546/710/127 1528/691/127 +f 1549/718/1 1537/702/1 1533/719/1 +f 1550/720/3 1540/704/3 1539/703/3 +f 1551/721/3 1541/707/3 1547/722/3 +f 1552/723/1 1544/706/1 1543/724/1 +f 1532/694/125 1554/725/125 1529/695/125 +f 1545/712/125 1556/726/125 1546/710/125 +f 1535/699/124 1558/727/124 1534/728/124 +f 1525/692/1 1555/729/1 1545/714/1 +f 1535/699/3 1554/725/3 1557/730/3 +f 1534/731/1 1553/732/1 1532/694/1 +f 1528/691/124 1559/733/124 1525/692/124 +f 1528/691/3 1556/726/3 1560/734/3 +f 1561/735/131 1563/736/131 1564/737/131 +f 1565/738/3 1561/735/3 1566/739/3 +f 1567/740/125 1563/741/125 1562/742/125 +f 1564/743/132 1569/744/132 1570/745/132 +f 1572/746/133 1574/747/133 1571/748/133 +f 1574/747/134 1576/749/134 1575/750/134 +f 1578/751/135 1576/749/135 1577/752/135 +f 1577/753/136 1571/748/136 1578/754/136 +f 1567/755/137 1569/756/137 1568/757/137 +f 1569/758/138 1563/736/138 1568/759/138 +f 1566/739/139 1567/755/139 1565/738/139 +f 1582/760/125 1579/761/125 1581/762/125 +f 1585/763/124 1587/764/124 1588/765/124 +f 1585/766/140 1583/767/140 1586/768/140 +f 1583/767/141 1587/764/141 1586/768/141 +f 1587/764/3 1581/762/3 1588/765/3 +f 1584/769/142 1581/762/142 1580/770/142 +f 1585/766/1 1580/771/1 1579/772/1 +f 1590/773/124 1592/774/124 1594/775/124 +f 1604/776/125 1597/777/125 1609/778/125 +f 1612/779/125 1606/780/125 1601/781/125 +f 1603/782/124 1608/783/124 1596/784/124 +f 1618/785/33 1620/786/33 1617/787/33 +f 1622/788/143 1624/789/143 1621/790/143 +f 1625/791/144 1624/789/144 1623/792/144 +f 1628/793/145 1621/790/145 1627/794/145 +f 1627/794/33 1625/795/33 1628/796/33 +f 1629/797/146 1631/798/146 1632/799/146 +f 1634/800/147 1636/801/147 1633/802/147 +f 1629/797/28 1628/803/28 1625/804/28 +f 1638/805/143 1640/806/143 1637/807/143 +f 1618/808/144 1637/809/144 1640/810/144 +f 1640/811/28 1633/802/28 1636/801/28 +f 1619/812/145 1638/805/145 1620/786/145 +f 1641/813/1 1629/797/1 1625/814/1 +f 1642/815/3 1632/799/3 1631/798/3 +f 1643/816/3 1633/802/3 1639/817/3 +f 1644/818/1 1636/801/1 1635/819/1 +f 1624/789/143 1646/820/143 1621/790/143 +f 1637/807/143 1648/821/143 1638/805/143 +f 1627/794/33 1650/822/33 1626/823/33 +f 1617/787/1 1647/824/1 1637/809/1 +f 1627/794/3 1646/820/3 1649/825/3 +f 1626/826/1 1645/827/1 1624/789/1 +f 1620/786/33 1651/828/33 1617/787/33 +f 1620/786/3 1648/821/3 1652/829/3 +f 1654/830/148 1656/831/148 1653/832/148 +f 1657/833/3 1653/832/3 1658/834/3 +f 1659/835/143 1655/836/143 1654/830/143 +f 1656/837/149 1661/838/149 1662/839/149 +f 1663/840/150 1665/841/150 1666/842/150 +f 1666/842/151 1668/843/151 1667/844/151 +f 1670/845/152 1668/843/152 1669/846/152 +f 1669/847/153 1663/840/153 1670/848/153 +f 1659/849/154 1661/850/154 1660/851/154 +f 1660/852/155 1656/831/155 1655/853/155 +f 1658/834/156 1659/849/156 1657/833/156 +f 1674/854/143 1671/855/143 1673/856/143 +f 1677/857/33 1679/858/33 1680/859/33 +f 1677/860/157 1675/861/157 1678/862/157 +f 1675/861/158 1679/858/158 1678/862/158 +f 1679/858/3 1673/856/3 1680/859/3 +f 1676/863/159 1673/856/159 1672/864/159 +f 1677/860/1 1672/865/1 1671/866/1 +f 1682/867/33 1684/868/33 1686/869/33 +f 1696/870/143 1689/871/143 1701/872/143 +f 1704/873/143 1698/874/143 1693/875/143 +f 1695/876/33 1700/877/33 1688/878/33 +f 1710/879/110 1712/880/110 1709/881/110 +f 1714/882/160 1716/883/160 1713/884/160 +f 1717/885/161 1716/883/161 1715/886/161 +f 1720/887/162 1713/884/162 1719/888/162 +f 1719/888/110 1717/889/110 1720/890/110 +f 1721/891/163 1723/892/163 1724/893/163 +f 1726/894/164 1728/895/164 1725/896/164 +f 1721/891/105 1720/897/105 1717/898/105 +f 1730/899/160 1732/900/160 1729/901/160 +f 1710/902/165 1729/903/165 1732/904/165 +f 1732/905/105 1725/896/105 1728/895/105 +f 1711/906/162 1730/899/162 1712/880/162 +f 1733/907/1 1721/891/1 1717/908/1 +f 1734/909/3 1724/893/3 1723/892/3 +f 1735/910/3 1725/896/3 1731/911/3 +f 1736/912/1 1728/895/1 1727/913/1 +f 1716/883/160 1738/914/160 1713/884/160 +f 1729/901/160 1740/915/160 1730/899/160 +f 1719/888/110 1742/916/110 1718/917/110 +f 1709/881/1 1739/918/1 1729/903/1 +f 1719/888/3 1738/914/3 1741/919/3 +f 1718/920/1 1737/921/1 1716/883/1 +f 1712/880/110 1743/922/110 1709/881/110 +f 1712/880/3 1740/915/3 1744/923/3 +f 1745/924/166 1747/925/166 1748/926/166 +f 1749/927/3 1745/924/3 1750/928/3 +f 1751/929/160 1747/930/160 1746/931/160 +f 1748/932/167 1753/933/167 1754/934/167 +f 1755/935/168 1757/936/168 1758/937/168 +f 1758/937/169 1760/938/169 1759/939/169 +f 1762/940/170 1760/938/170 1761/941/170 +f 1761/942/171 1755/935/171 1762/943/171 +f 1751/944/172 1753/945/172 1752/946/172 +f 1753/947/173 1747/925/173 1752/948/173 +f 1750/928/174 1751/944/174 1749/927/174 +f 1766/949/160 1763/950/160 1765/951/160 +f 1769/952/110 1771/953/110 1772/954/110 +f 1769/955/175 1767/956/175 1770/957/175 +f 1770/957/176 1766/949/176 1771/953/176 +f 1771/953/3 1765/951/3 1772/954/3 +f 1768/958/177 1765/951/177 1764/959/177 +f 1769/955/1 1764/960/1 1763/961/1 +f 1774/962/110 1776/963/110 1778/964/110 +f 1788/965/160 1781/966/160 1793/967/160 +f 1796/968/160 1790/969/160 1785/970/160 +f 1787/971/110 1792/972/110 1780/973/110 +f 1802/974/130 1804/975/130 1801/976/130 +f 1806/977/178 1808/978/178 1805/979/178 +f 1809/980/179 1808/978/179 1807/981/179 +f 1812/982/180 1805/979/180 1811/983/180 +f 1811/983/130 1809/984/130 1812/985/130 +f 1813/986/181 1815/987/181 1816/988/181 +f 1818/989/182 1820/990/182 1817/991/182 +f 1813/986/125 1812/992/125 1809/993/125 +f 1822/994/178 1824/995/178 1821/996/178 +f 1802/997/179 1821/998/179 1824/999/179 +f 1824/1000/125 1817/991/125 1820/990/125 +f 1803/1001/180 1822/994/180 1804/975/180 +f 1825/1002/1 1813/986/1 1809/1003/1 +f 1826/1004/3 1816/988/3 1815/987/3 +f 1827/1005/3 1817/991/3 1823/1006/3 +f 1828/1007/1 1820/990/1 1819/1008/1 +f 1808/978/178 1830/1009/178 1805/979/178 +f 1821/996/178 1832/1010/178 1822/994/178 +f 1811/983/130 1834/1011/130 1810/1012/130 +f 1801/976/1 1831/1013/1 1821/998/1 +f 1811/983/3 1830/1009/3 1833/1014/3 +f 1810/1015/1 1829/1016/1 1808/978/1 +f 1804/975/130 1835/1017/130 1801/976/130 +f 1804/975/3 1832/1010/3 1836/1018/3 +f 1837/1019/183 1839/1020/183 1840/1021/183 +f 1841/1022/3 1837/1019/3 1842/1023/3 +f 1843/1024/178 1839/1025/178 1838/1026/178 +f 1840/1027/184 1845/1028/184 1846/1029/184 +f 1848/1030/185 1850/1031/185 1847/1032/185 +f 1850/1031/186 1852/1033/186 1851/1034/186 +f 1853/1035/187 1851/1034/187 1852/1033/187 +f 1853/1036/188 1847/1032/188 1854/1037/188 +f 1843/1038/189 1845/1039/189 1844/1040/189 +f 1845/1041/190 1839/1020/190 1844/1042/190 +f 1842/1023/191 1843/1038/191 1841/1022/191 +f 1858/1043/178 1855/1044/178 1857/1045/178 +f 1861/1046/130 1863/1047/130 1864/1048/130 +f 1861/1049/192 1859/1050/192 1862/1051/192 +f 1859/1050/193 1863/1047/193 1862/1051/193 +f 1863/1047/3 1857/1045/3 1864/1048/3 +f 1860/1052/194 1857/1045/194 1856/1053/194 +f 1861/1049/1 1856/1054/1 1855/1055/1 +f 1866/1056/130 1868/1057/130 1870/1058/130 +f 1880/1059/178 1873/1060/178 1885/1061/178 +f 1888/1062/178 1882/1063/178 1877/1064/178 +f 1879/1065/130 1884/1066/130 1872/1067/130 +f 1894/1068/28 1896/1069/28 1893/1070/28 +f 1898/1071/27 1900/1072/27 1897/1073/27 +f 1902/1074/195 1899/1075/195 1901/1076/195 +f 1904/1077/196 1897/1073/196 1903/1078/196 +f 1903/1078/28 1901/1079/28 1904/1080/28 +f 1905/1081/197 1907/1082/197 1908/1083/197 +f 1910/1084/198 1912/1085/198 1909/1086/198 +f 1905/1081/143 1904/1087/143 1901/1088/143 +f 1914/1089/27 1916/1090/27 1913/1091/27 +f 1894/1092/195 1913/1093/195 1916/1094/195 +f 1916/1095/143 1909/1086/143 1912/1085/143 +f 1895/1096/196 1914/1089/196 1896/1069/196 +f 1917/1097/1 1905/1081/1 1901/1098/1 +f 1918/1099/3 1908/1083/3 1907/1082/3 +f 1919/1100/3 1909/1086/3 1915/1101/3 +f 1920/1102/1 1912/1085/1 1911/1103/1 +f 1900/1072/27 1922/1104/27 1897/1073/27 +f 1913/1091/27 1924/1105/27 1914/1089/27 +f 1903/1078/28 1926/1106/28 1902/1107/28 +f 1893/1070/1 1923/1108/1 1913/1093/1 +f 1903/1078/3 1922/1104/3 1925/1109/3 +f 1902/1074/1 1921/1110/1 1900/1072/1 +f 1896/1069/28 1927/1111/28 1893/1070/28 +f 1896/1069/3 1924/1105/3 1928/1112/3 +f 1929/1113/199 1931/1114/199 1932/1115/199 +f 1933/1116/3 1929/1113/3 1934/1117/3 +f 1935/1118/27 1931/1119/27 1930/1120/27 +f 1932/1121/200 1937/1122/200 1938/1123/200 +f 1939/1124/201 1941/1125/201 1942/1126/201 +f 1942/1126/39 1944/1127/39 1943/1128/39 +f 1946/1129/202 1944/1127/202 1945/1130/202 +f 1945/1131/37 1939/1124/37 1946/1132/37 +f 1935/1133/203 1937/1134/203 1936/1135/203 +f 1937/1136/204 1931/1114/204 1936/1137/204 +f 1934/1117/205 1935/1133/205 1933/1116/205 +f 1950/1138/27 1947/1139/27 1949/1140/27 +f 1953/1141/28 1955/1142/28 1956/1143/28 +f 1953/1144/206 1951/1145/206 1954/1146/206 +f 1951/1145/207 1955/1142/207 1954/1146/207 +f 1955/1142/3 1949/1140/3 1956/1143/3 +f 1952/1147/208 1949/1140/208 1948/1148/208 +f 1953/1144/1 1948/1149/1 1947/1150/1 +f 1958/1151/28 1960/1152/28 1962/1153/28 +f 1972/1154/27 1965/1155/27 1977/1156/27 +f 1980/1157/27 1974/1158/27 1969/1159/27 +f 1971/1160/28 1976/1161/28 1964/1162/28 +f 1986/1163/105 1988/1164/105 1985/1165/105 +f 1990/1166/104 1992/1167/104 1989/1168/104 +f 1993/1169/209 1992/1167/209 1991/1170/209 +f 1996/1171/210 1989/1168/210 1995/1172/210 +f 1995/1172/105 1993/1173/105 1996/1174/105 +f 1997/1175/211 1999/1176/211 2000/1177/211 +f 2002/1178/212 2004/1179/212 2001/1180/212 +f 1997/1175/160 1996/1181/160 1993/1182/160 +f 2006/1183/104 2008/1184/104 2005/1185/104 +f 1986/1186/209 2005/1187/209 2008/1188/209 +f 2008/1189/160 2001/1180/160 2004/1179/160 +f 1987/1190/210 2006/1183/210 1988/1164/210 +f 2009/1191/1 1997/1175/1 1993/1192/1 +f 2010/1193/3 2000/1177/3 1999/1176/3 +f 2011/1194/3 2001/1180/3 2007/1195/3 +f 2012/1196/1 2004/1179/1 2003/1197/1 +f 1992/1167/104 2014/1198/104 1989/1168/104 +f 2005/1185/104 2016/1199/104 2006/1183/104 +f 1995/1172/105 2018/1200/105 1994/1201/105 +f 1985/1165/1 2015/1202/1 2005/1187/1 +f 1995/1172/3 2014/1198/3 2017/1203/3 +f 1994/1204/1 2013/1205/1 1992/1167/1 +f 1988/1164/105 2019/1206/105 1985/1165/105 +f 1988/1164/3 2016/1199/3 2020/1207/3 +f 2021/1208/213 2023/1209/213 2024/1210/213 +f 2025/1211/3 2021/1208/3 2026/1212/3 +f 2027/1213/104 2023/1214/104 2022/1215/104 +f 2024/1216/214 2029/1217/214 2030/1218/214 +f 2032/1219/215 2034/1220/215 2031/1221/215 +f 2034/1220/117 2036/1222/117 2035/1223/117 +f 2037/1224/216 2035/1223/216 2036/1222/216 +f 2037/1225/115 2031/1221/115 2038/1226/115 +f 2027/1227/217 2029/1228/217 2028/1229/217 +f 2029/1230/218 2023/1209/218 2028/1231/218 +f 2026/1212/219 2027/1227/219 2025/1211/219 +f 2042/1232/104 2039/1233/104 2041/1234/104 +f 2045/1235/105 2047/1236/105 2048/1237/105 +f 2045/1238/220 2043/1239/220 2046/1240/220 +f 2043/1239/221 2047/1236/221 2046/1240/221 +f 2047/1236/3 2041/1234/3 2048/1237/3 +f 2044/1241/222 2041/1234/222 2040/1242/222 +f 2045/1238/1 2040/1243/1 2039/1244/1 +f 2050/1245/105 2052/1246/105 2054/1247/105 +f 2064/1248/104 2057/1249/104 2069/1250/104 +f 2072/1251/104 2066/1252/104 2061/1253/104 +f 2063/1254/105 2068/1255/105 2056/1256/105 +f 2078/1257/125 2080/1258/125 2077/1259/125 +f 2082/1260/124 2084/1261/124 2081/1262/124 +f 2086/1263/223 2083/1264/223 2085/1265/223 +f 2088/1266/224 2081/1262/224 2087/1267/224 +f 2087/1267/125 2085/1268/125 2088/1269/125 +f 2089/1270/225 2091/1271/225 2092/1272/225 +f 2094/1273/226 2096/1274/226 2093/1275/226 +f 2089/1270/178 2088/1276/178 2085/1277/178 +f 2098/1278/124 2100/1279/124 2097/1280/124 +f 2078/1281/223 2097/1282/223 2100/1283/223 +f 2100/1284/178 2093/1275/178 2096/1274/178 +f 2079/1285/224 2098/1278/224 2080/1258/224 +f 2101/1286/1 2089/1270/1 2085/1287/1 +f 2102/1288/3 2092/1272/3 2091/1271/3 +f 2103/1289/3 2093/1275/3 2099/1290/3 +f 2104/1291/1 2096/1274/1 2095/1292/1 +f 2084/1261/124 2106/1293/124 2081/1262/124 +f 2097/1280/124 2108/1294/124 2098/1278/124 +f 2087/1267/125 2110/1295/125 2086/1296/125 +f 2077/1259/1 2107/1297/1 2097/1282/1 +f 2087/1267/3 2106/1293/3 2109/1298/3 +f 2086/1263/1 2105/1299/1 2084/1261/1 +f 2080/1258/125 2111/1300/125 2077/1259/125 +f 2080/1258/3 2108/1294/3 2112/1301/3 +f 2114/1302/227 2116/1303/227 2113/1304/227 +f 2117/1305/3 2113/1304/3 2118/1306/3 +f 2119/1307/124 2115/1308/124 2114/1302/124 +f 2116/1309/228 2121/1310/228 2122/1311/228 +f 2123/1312/229 2125/1313/229 2126/1314/229 +f 2126/1314/136 2128/1315/136 2127/1316/136 +f 2130/1317/230 2128/1315/230 2129/1318/230 +f 2129/1319/134 2123/1312/134 2130/1320/134 +f 2119/1321/231 2121/1322/231 2120/1323/231 +f 2121/1324/232 2115/1325/232 2120/1326/232 +f 2118/1306/233 2119/1321/233 2117/1305/233 +f 2134/1327/124 2131/1328/124 2133/1329/124 +f 2137/1330/125 2139/1331/125 2140/1332/125 +f 2131/1333/234 2138/1334/234 2137/1335/234 +f 2138/1334/235 2134/1327/235 2139/1331/235 +f 2139/1331/3 2133/1329/3 2140/1332/3 +f 2136/1336/236 2133/1329/236 2132/1337/236 +f 2137/1335/1 2132/1338/1 2131/1333/1 +f 2142/1339/125 2144/1340/125 2146/1341/125 +f 2156/1342/124 2149/1343/124 2161/1344/124 +f 2164/1345/124 2158/1346/124 2153/1347/124 +f 2155/1348/125 2160/1349/125 2148/1350/125 +f 2170/1351/143 2172/1352/143 2169/1353/143 +f 2174/1354/33 2176/1355/33 2173/1356/33 +f 2177/1357/237 2176/1355/237 2175/1358/237 +f 2180/1359/238 2173/1356/238 2179/1360/238 +f 2179/1360/143 2177/1361/143 2180/1362/143 +f 2181/1363/239 2183/1364/239 2184/1365/239 +f 2186/1366/240 2188/1367/240 2185/1368/240 +f 2181/1363/27 2180/1369/27 2177/1370/27 +f 2190/1371/33 2192/1372/33 2189/1373/33 +f 2170/1374/241 2189/1375/241 2192/1376/241 +f 2192/1377/27 2185/1368/27 2188/1367/27 +f 2171/1378/238 2190/1371/238 2172/1352/238 +f 2193/1379/1 2181/1363/1 2177/1380/1 +f 2194/1381/3 2184/1365/3 2183/1364/3 +f 2195/1382/3 2185/1368/3 2191/1383/3 +f 2196/1384/1 2188/1367/1 2187/1385/1 +f 2176/1355/33 2198/1386/33 2173/1356/33 +f 2189/1373/33 2200/1387/33 2190/1371/33 +f 2179/1360/143 2202/1388/143 2178/1389/143 +f 2169/1353/1 2199/1390/1 2189/1375/1 +f 2179/1360/3 2198/1386/3 2201/1391/3 +f 2178/1392/1 2197/1393/1 2176/1355/1 +f 2172/1352/143 2203/1394/143 2169/1353/143 +f 2172/1352/3 2200/1387/3 2204/1395/3 +f 2205/1396/242 2207/1397/242 2208/1398/242 +f 2209/1399/3 2205/1396/3 2210/1400/3 +f 2211/1401/33 2207/1402/33 2206/1403/33 +f 2208/1404/243 2213/1405/243 2214/1406/243 +f 2215/1407/244 2217/1408/244 2218/1409/244 +f 2218/1409/153 2220/1410/153 2219/1411/153 +f 2221/1412/245 2219/1411/245 2220/1410/245 +f 2221/1413/151 2215/1407/151 2222/1414/151 +f 2211/1415/246 2213/1416/246 2212/1417/246 +f 2213/1418/247 2207/1397/247 2212/1419/247 +f 2210/1400/248 2211/1415/248 2209/1399/248 +f 2226/1420/33 2223/1421/33 2225/1422/33 +f 2229/1423/143 2231/1424/143 2232/1425/143 +f 2229/1426/249 2227/1427/249 2230/1428/249 +f 2230/1428/250 2226/1420/250 2231/1424/250 +f 2231/1424/3 2225/1422/3 2232/1425/3 +f 2228/1429/251 2225/1422/251 2224/1430/251 +f 2229/1426/1 2224/1431/1 2223/1432/1 +f 2234/1433/143 2236/1434/143 2238/1435/143 +f 2248/1436/33 2241/1437/33 2253/1438/33 +f 2256/1439/33 2250/1440/33 2245/1441/33 +f 2247/1442/143 2252/1443/143 2240/1444/143 +f 2262/1445/160 2264/1446/160 2261/1447/160 +f 2266/1448/110 2268/1449/110 2265/1450/110 +f 2269/1451/252 2268/1449/252 2267/1452/252 +f 2272/1453/253 2265/1450/253 2271/1454/253 +f 2271/1454/160 2269/1455/160 2272/1456/160 +f 2273/1457/254 2275/1458/254 2276/1459/254 +f 2278/1460/255 2280/1461/255 2277/1462/255 +f 2273/1457/104 2272/1463/104 2269/1464/104 +f 2281/1465/110 2283/1466/110 2284/1467/110 +f 2262/1468/252 2281/1469/252 2284/1470/252 +f 2284/1471/104 2277/1462/104 2280/1461/104 +f 2263/1472/253 2282/1473/253 2264/1446/253 +f 2285/1474/1 2273/1457/1 2269/1475/1 +f 2286/1476/3 2276/1459/3 2275/1458/3 +f 2287/1477/3 2277/1462/3 2283/1478/3 +f 2288/1479/1 2280/1461/1 2279/1480/1 +f 2268/1449/110 2290/1481/110 2265/1450/110 +f 2281/1465/110 2292/1482/110 2282/1473/110 +f 2271/1454/160 2294/1483/160 2270/1484/160 +f 2261/1447/1 2291/1485/1 2281/1469/1 +f 2271/1454/3 2290/1481/3 2293/1486/3 +f 2270/1487/1 2289/1488/1 2268/1449/1 +f 2264/1446/160 2295/1489/160 2261/1447/160 +f 2264/1446/3 2292/1482/3 2296/1490/3 +f 2297/1491/256 2299/1492/256 2300/1493/256 +f 2301/1494/3 2297/1491/3 2302/1495/3 +f 2303/1496/110 2299/1497/110 2298/1498/110 +f 2300/1499/257 2305/1500/257 2306/1501/257 +f 2308/1502/258 2310/1503/258 2307/1504/258 +f 2310/1503/171 2312/1505/171 2311/1506/171 +f 2314/1507/259 2312/1505/259 2313/1508/259 +f 2313/1509/169 2307/1504/169 2314/1510/169 +f 2303/1511/260 2305/1512/260 2304/1513/260 +f 2305/1514/261 2299/1492/261 2304/1515/261 +f 2302/1495/262 2303/1511/262 2301/1494/262 +f 2318/1516/110 2315/1517/110 2317/1518/110 +f 2321/1519/160 2323/1520/160 2324/1521/160 +f 2321/1522/263 2319/1523/263 2322/1524/263 +f 2322/1524/264 2318/1516/264 2323/1520/264 +f 2323/1520/3 2317/1518/3 2324/1521/3 +f 2320/1525/265 2317/1518/265 2316/1526/265 +f 2321/1522/1 2316/1527/1 2315/1528/1 +f 2326/1529/160 2328/1530/160 2330/1531/160 +f 2340/1532/110 2333/1533/110 2345/1534/110 +f 2348/1535/110 2342/1536/110 2337/1537/110 +f 2339/1538/160 2344/1539/160 2332/1540/160 +f 2354/1541/178 2356/1542/178 2353/1543/178 +f 2358/1544/130 2360/1545/130 2357/1546/130 +f 2361/1547/266 2360/1545/266 2359/1548/266 +f 2363/1549/267 2358/1550/267 2357/1546/267 +f 2363/1549/178 2361/1551/178 2364/1552/178 +f 2365/1553/268 2367/1554/268 2368/1555/268 +f 2370/1556/269 2372/1557/269 2369/1558/269 +f 2365/1553/124 2364/1559/124 2361/1560/124 +f 2373/1561/130 2375/1562/130 2376/1563/130 +f 2354/1564/266 2373/1565/266 2376/1566/266 +f 2376/1567/124 2369/1558/124 2372/1557/124 +f 2355/1568/267 2374/1569/267 2356/1542/267 +f 2377/1570/1 2365/1553/1 2361/1571/1 +f 2378/1572/3 2368/1555/3 2367/1554/3 +f 2379/1573/3 2369/1558/3 2375/1574/3 +f 2380/1575/1 2372/1557/1 2371/1576/1 +f 2360/1545/130 2382/1577/130 2357/1546/130 +f 2373/1561/130 2384/1578/130 2374/1569/130 +f 2363/1549/178 2386/1579/178 2362/1580/178 +f 2353/1543/1 2383/1581/1 2373/1565/1 +f 2363/1549/3 2382/1577/3 2385/1582/3 +f 2362/1583/1 2381/1584/1 2360/1545/1 +f 2356/1542/178 2387/1585/178 2353/1543/178 +f 2356/1542/3 2384/1578/3 2388/1586/3 +f 2390/1587/270 2392/1588/270 2389/1589/270 +f 2393/1590/3 2389/1589/3 2394/1591/3 +f 2395/1592/130 2391/1593/130 2390/1587/130 +f 2392/1594/271 2397/1595/271 2398/1596/271 +f 2400/1597/272 2402/1598/272 2399/1599/272 +f 2402/1598/188 2404/1600/188 2403/1601/188 +f 2406/1602/273 2404/1600/273 2405/1603/273 +f 2405/1604/186 2399/1599/186 2406/1605/186 +f 2395/1606/274 2397/1607/274 2396/1608/274 +f 2397/1609/275 2391/1610/275 2396/1611/275 +f 2394/1591/276 2395/1606/276 2393/1590/276 +f 2410/1612/130 2407/1613/130 2409/1614/130 +f 2413/1615/178 2415/1616/178 2416/1617/178 +f 2413/1618/277 2411/1619/277 2414/1620/277 +f 2411/1619/278 2415/1616/278 2414/1620/278 +f 2415/1616/3 2409/1614/3 2416/1617/3 +f 2412/1621/279 2409/1614/279 2408/1622/279 +f 2412/1623/1 2407/1624/1 2413/1618/1 +f 2418/1625/178 2420/1626/178 2422/1627/178 +f 2432/1628/130 2425/1629/130 2437/1630/130 +f 2440/1631/130 2434/1632/130 2429/1633/130 +f 2431/1634/178 2436/1635/178 2424/1636/178 +f 48/3/1 43/1637/1 46/1/1 +f 43/1637/1 44/1638/1 45/13/1 +f 46/1/1 43/1637/1 45/13/1 +f 47/4/2 49/32/2 50/5/2 +f 54/9/3 50/1639/3 52/7/3 +f 50/1639/3 49/1640/3 51/33/3 +f 52/7/3 50/1639/3 51/33/3 +f 54/10/4 53/1641/4 44/11/4 +f 44/11/5 53/1641/5 52/7/5 +f 56/14/6 57/17/6 58/15/6 +f 57/17/7 59/20/7 60/18/7 +f 62/19/8 60/18/8 59/20/8 +f 58/15/3 63/28/3 64/22/3 +f 64/22/9 63/28/9 65/23/9 +f 67/25/3 63/28/3 58/15/3 +f 60/18/3 62/19/3 68/26/3 +f 68/26/10 69/1642/10 70/27/10 +f 67/25/11 70/27/11 65/23/11 +f 57/17/1 65/1643/1 70/29/1 +f 59/20/1 70/29/1 69/30/1 +f 66/31/1 65/1643/1 57/17/1 +f 46/1/12 51/33/12 49/32/12 +f 45/13/13 52/7/13 51/33/13 +f 214/34/1 215/1644/1 216/35/1 +f 223/37/1 237/47/1 238/38/1 +f 224/40/1 239/1645/1 240/41/1 +f 225/43/1 233/52/1 215/44/1 +f 223/37/1 226/1646/1 241/46/1 +f 227/48/1 242/57/1 239/49/1 +f 228/51/1 234/1647/1 233/52/1 +f 226/53/1 229/62/1 243/54/1 +f 230/56/1 244/1648/1 242/57/1 +f 220/58/1 245/77/1 234/59/1 +f 231/61/1 246/1649/1 243/54/1 +f 230/63/1 232/69/1 247/64/1 +f 196/66/1 248/72/1 246/67/1 +f 232/69/1 218/1650/1 249/70/1 +f 195/71/1 250/1651/1 248/72/1 +f 217/73/1 251/81/1 249/74/1 +f 220/58/1 219/1652/1 252/76/1 +f 195/78/1 213/36/1 216/35/1 +f 221/80/1 238/1653/1 251/81/1 +f 219/82/1 222/42/1 240/41/1 +f 235/86/1 253/1654/1 254/1655/1 +f 254/1655/1 255/1656/1 256/1657/1 +f 256/1657/1 257/1658/1 260/1659/1 +f 257/1658/1 258/1660/1 260/1659/1 +f 258/1660/1 259/1661/1 260/1659/1 +f 260/1659/1 261/1662/1 262/1663/1 +f 262/1663/1 263/1664/1 264/84/1 +f 264/84/1 265/1665/1 266/1666/1 +f 266/1666/1 267/1667/1 264/84/1 +f 267/1667/1 268/85/1 264/84/1 +f 268/85/1 269/1668/1 235/86/1 +f 269/1668/1 270/1669/1 235/86/1 +f 270/1669/1 236/1670/1 235/86/1 +f 235/86/1 254/1655/1 256/1657/1 +f 260/1659/1 262/1663/1 264/84/1 +f 235/86/1 256/1657/1 260/1659/1 +f 260/1659/1 264/84/1 235/86/1 +f 340/1671/1 335/89/1 339/88/1 +f 335/89/1 336/1672/1 338/87/1 +f 336/1672/1 337/1673/1 338/87/1 +f 336/90/14 341/1674/14 342/91/14 +f 342/1675/3 341/95/3 346/94/3 +f 341/95/3 343/1676/3 345/93/3 +f 343/1676/3 344/1677/3 345/93/3 +f 335/96/15 340/99/15 344/97/15 +f 339/88/16 345/93/16 344/97/16 +f 348/100/280 349/104/280 350/101/280 +f 348/100/18 351/110/18 352/103/18 +f 352/103/19 351/110/19 354/105/19 +f 355/107/3 356/109/3 348/100/3 +f 355/107/20 357/1678/20 358/108/20 +f 351/110/3 348/100/3 356/109/3 +f 351/110/3 359/111/3 360/112/3 +f 361/113/21 362/1679/21 360/112/21 +f 356/109/22 358/108/22 361/113/22 +f 361/114/1 358/1680/1 349/104/1 +f 352/103/1 353/106/1 362/115/1 +f 349/104/1 358/1680/1 357/116/1 +f 342/91/23 346/94/23 338/87/23 +f 346/94/24 345/93/24 339/88/24 +f 379/117/25 385/121/25 386/118/25 +f 379/117/25 377/122/25 393/120/25 +f 377/122/25 375/1681/25 394/123/25 +f 375/124/25 373/128/25 395/125/25 +f 371/127/25 396/130/25 395/125/25 +f 371/127/25 369/136/25 397/129/25 +f 364/131/25 387/139/25 398/132/25 +f 364/131/25 390/133/25 389/134/25 +f 369/136/25 367/140/25 399/137/25 +f 383/138/25 400/141/25 398/132/25 +f 367/140/25 365/135/25 389/134/25 +f 381/119/25 386/118/25 400/141/25 +f 410/143/25 392/1682/25 402/144/25 +f 392/1682/25 391/1683/25 402/144/25 +f 391/1683/25 401/1684/25 402/144/25 +f 402/144/25 403/1685/25 404/1686/25 +f 404/1686/25 405/1687/25 402/144/25 +f 405/1687/25 406/1688/25 402/144/25 +f 406/1688/25 407/1689/25 408/142/25 +f 408/142/25 409/1690/25 410/143/25 +f 406/1688/25 408/142/25 402/144/25 +f 430/145/26 433/1691/26 434/146/26 +f 434/146/26 441/1692/26 426/148/26 +f 426/148/26 441/1692/26 442/149/26 +f 442/151/26 443/154/26 422/152/26 +f 443/154/26 444/1693/26 420/155/26 +f 420/155/26 444/1693/26 445/156/26 +f 440/158/26 446/1694/26 436/159/26 +f 413/161/26 437/165/26 440/158/26 +f 445/156/26 447/1695/26 416/162/26 +f 436/159/26 446/1694/26 448/163/26 +f 416/162/26 447/1695/26 437/165/26 +f 448/163/26 433/1691/26 430/145/26 +f 439/168/26 438/1696/26 449/1697/26 +f 449/1697/26 450/1698/26 439/168/26 +f 450/1698/26 451/166/26 439/168/26 +f 451/166/26 452/1699/26 455/167/26 +f 452/1699/26 453/1700/26 455/167/26 +f 453/1700/26 454/1701/26 455/167/26 +f 455/167/26 456/1702/26 439/168/26 +f 456/1702/26 457/1703/26 439/168/26 +f 457/1703/26 458/1704/26 439/168/26 +f 460/169/27 461/1705/27 462/170/27 +f 464/172/28 465/1706/28 466/173/28 +f 467/175/29 468/210/29 466/173/29 +f 470/177/30 464/1707/30 463/174/30 +f 469/178/27 468/207/27 467/179/27 +f 471/181/31 472/1708/31 473/182/31 +f 476/184/32 477/203/32 478/185/32 +f 471/181/33 474/183/33 470/187/33 +f 480/189/28 481/1709/28 482/190/28 +f 460/192/29 459/171/29 479/193/29 +f 482/195/33 481/1710/33 475/186/33 +f 461/196/30 481/1711/30 480/189/30 +f 483/197/1 472/1708/1 471/181/1 +f 484/199/3 470/1712/3 474/183/3 +f 485/200/3 476/184/3 475/186/3 +f 486/202/1 482/1713/1 478/185/1 +f 466/173/28 487/211/28 488/204/28 +f 479/191/28 489/1714/28 490/205/28 +f 469/178/27 491/209/27 492/206/27 +f 459/171/1 493/212/1 489/208/1 +f 469/178/3 463/174/3 488/204/3 +f 468/210/1 492/1715/1 487/211/1 +f 462/170/27 494/213/27 493/212/27 +f 462/170/3 480/189/3 490/205/3 +f 496/214/34 497/237/34 498/215/34 +f 496/214/3 495/216/3 500/217/3 +f 496/214/28 499/218/28 501/219/28 +f 501/219/28 502/1716/28 497/220/28 +f 504/223/27 500/217/27 495/216/27 +f 495/216/27 498/221/27 504/223/27 +f 505/224/36 506/1717/36 507/225/36 +f 508/226/37 507/225/37 510/227/37 +f 512/229/281 509/228/281 510/227/281 +f 511/231/39 506/1717/39 505/224/39 +f 501/233/282 504/1718/282 503/234/282 +f 503/236/41 498/215/41 497/237/41 +f 500/217/283 504/1718/283 501/233/283 +f 517/1719/28 513/240/28 516/239/28 +f 513/240/28 514/1720/28 515/241/28 +f 522/244/27 518/1721/27 519/242/27 +f 519/242/27 520/1722/27 521/243/27 +f 519/245/43 513/251/43 517/246/43 +f 517/246/44 516/239/44 521/243/44 +f 521/243/3 516/239/3 515/241/3 +f 518/248/45 522/244/45 515/241/45 +f 519/245/1 518/1723/1 514/250/1 +f 529/1724/27 523/1725/27 524/252/27 +f 524/252/27 525/1726/27 526/253/27 +f 526/253/27 527/1727/27 528/254/27 +f 528/254/27 529/1724/27 524/252/27 +f 548/1728/28 539/1729/28 538/255/28 +f 538/255/28 532/1730/28 531/256/28 +f 531/256/28 544/1731/28 543/257/28 +f 543/257/28 548/1728/28 538/255/28 +f 546/258/28 547/1732/28 540/259/28 +f 540/259/28 541/1733/28 535/260/28 +f 535/260/28 534/1734/28 549/1735/28 +f 549/1735/28 546/258/28 535/260/28 +f 530/263/27 533/1736/27 537/261/27 +f 537/261/27 536/1737/27 550/1738/27 +f 550/1738/27 542/262/27 537/261/27 +f 542/262/27 545/1739/27 530/263/27 +f 552/264/46 553/1740/46 554/265/46 +f 552/267/47 551/1741/47 555/268/47 +f 556/270/48 555/1742/48 557/271/48 +f 557/273/49 559/1743/49 560/274/49 +f 560/276/50 559/1744/50 561/277/50 +f 561/279/284 563/1745/284 564/280/284 +f 564/282/52 563/1746/52 565/283/52 +f 565/285/53 567/1747/53 568/286/53 +f 567/288/54 569/1748/54 570/289/54 +f 570/291/55 569/1749/55 571/292/55 +f 571/294/56 573/1750/56 574/295/56 +f 574/297/285 573/1751/285 575/298/285 +f 553/300/58 576/1752/58 575/301/58 +f 586/304/59 589/1753/59 592/1754/59 +f 592/1754/59 581/1755/59 586/304/59 +f 581/1755/59 584/305/59 586/304/59 +f 584/305/59 577/1756/59 580/1757/59 +f 580/1757/59 587/303/59 584/305/59 +f 612/306/60 611/1758/60 610/307/60 +f 602/310/61 605/1759/61 608/1760/61 +f 608/1760/61 597/1761/61 602/310/61 +f 597/1761/61 600/311/61 602/310/61 +f 600/311/61 593/1762/61 596/1763/61 +f 596/1763/61 603/309/61 600/311/61 +f 622/313/59 625/1764/59 628/1765/59 +f 628/1765/59 617/1766/59 622/313/59 +f 617/1766/59 620/314/59 622/313/59 +f 620/314/59 613/1767/59 616/1768/59 +f 616/1768/59 623/312/59 620/314/59 +f 648/315/60 647/1769/60 646/316/60 +f 638/319/61 641/1770/61 644/1771/61 +f 644/1771/61 633/1772/61 638/319/61 +f 633/1772/61 636/320/61 638/319/61 +f 636/320/61 629/1773/61 632/1774/61 +f 632/1774/61 639/318/61 636/320/61 +f 658/322/59 661/1775/59 664/1776/59 +f 664/1776/59 653/1777/59 658/322/59 +f 653/1777/59 656/323/59 658/322/59 +f 656/323/59 649/1778/59 652/1779/59 +f 652/1779/59 659/321/59 656/323/59 +f 682/324/286 683/1780/286 684/325/286 +f 674/328/61 677/1781/61 680/1782/61 +f 680/1782/61 669/1783/61 674/328/61 +f 669/1783/61 672/329/61 674/328/61 +f 672/329/61 665/1784/61 668/1785/61 +f 668/1785/61 675/327/61 672/329/61 +f 700/331/62 697/1786/62 696/332/62 +f 696/332/62 695/1787/62 690/1788/62 +f 695/1787/62 686/1789/62 690/1788/62 +f 686/1789/62 685/1790/62 690/1788/62 +f 690/1788/62 689/330/62 696/332/62 +f 718/333/65 719/1791/65 720/334/65 +f 716/337/64 713/1792/64 712/338/64 +f 712/338/64 711/1793/64 706/1794/64 +f 711/1793/64 702/1795/64 706/1794/64 +f 702/1795/64 701/1796/64 706/1794/64 +f 706/1794/64 705/336/64 712/338/64 +f 736/340/62 733/1797/62 732/341/62 +f 732/341/62 731/1798/62 726/1799/62 +f 731/1798/62 722/1800/62 726/1799/62 +f 722/1800/62 721/1801/62 726/1799/62 +f 726/1799/62 725/339/62 732/341/62 +f 756/342/63 755/1802/63 754/343/63 +f 752/346/64 749/1803/64 748/347/64 +f 748/347/64 747/1804/64 742/1805/64 +f 747/1804/64 738/1806/64 742/1805/64 +f 738/1806/64 737/1807/64 742/1805/64 +f 742/1805/64 741/345/64 748/347/64 +f 772/349/62 769/1808/62 768/350/62 +f 768/350/62 767/1809/62 762/1810/62 +f 767/1809/62 758/1811/62 762/1810/62 +f 758/1811/62 757/1812/62 762/1810/62 +f 762/1810/62 761/348/62 768/350/62 +f 790/351/63 791/1813/63 792/352/63 +f 788/355/64 785/1814/64 784/356/64 +f 784/356/64 783/1815/64 778/1816/64 +f 783/1815/64 774/1817/64 778/1816/64 +f 774/1817/64 773/1818/64 778/1816/64 +f 778/1816/64 777/354/64 784/356/64 +f 793/357/61 797/407/61 798/358/61 +f 805/360/3 801/367/3 800/361/3 +f 803/363/66 802/1819/66 807/364/66 +f 807/366/67 802/1820/67 801/367/67 +f 808/368/68 793/1821/68 803/363/68 +f 793/369/1 808/368/1 809/370/1 +f 810/372/1 799/1822/1 798/373/1 +f 811/374/69 798/1823/69 797/375/69 +f 796/380/3 814/379/3 812/376/3 +f 795/382/287 794/371/287 809/370/287 +f 941/384/71 942/1824/71 943/385/71 +f 948/387/62 949/391/62 950/388/62 +f 954/390/72 950/388/72 949/391/72 +f 955/393/73 956/396/73 944/386/73 +f 946/394/74 945/1825/74 954/390/74 +f 951/395/75 952/1826/75 956/396/75 +f 946/397/76 953/392/76 949/391/76 +f 947/399/77 950/388/77 954/390/77 +f 941/401/78 944/386/78 956/396/78 +f 942/403/59 951/1827/59 955/393/59 +f 811/404/64 805/360/64 804/362/64 +f 806/405/64 807/1828/64 805/360/64 +f 808/368/64 806/405/64 811/404/64 +f 812/378/64 813/377/64 809/406/64 +f 797/407/61 793/357/61 794/410/61 +f 803/359/61 798/358/61 801/411/61 +f 798/358/61 799/1829/61 800/413/61 +f 966/415/79 969/1830/79 972/1831/79 +f 972/1831/79 961/1832/79 966/415/79 +f 961/1832/79 964/416/79 966/415/79 +f 964/416/79 957/1833/79 960/1834/79 +f 960/1834/79 967/414/79 964/416/79 +f 992/417/80 991/1835/80 990/418/80 +f 982/421/81 985/1836/81 988/1837/81 +f 988/1837/81 977/1838/81 982/421/81 +f 977/1838/81 980/422/81 982/421/81 +f 980/422/81 973/1839/81 976/1840/81 +f 976/1840/81 983/420/81 980/422/81 +f 1002/424/288 1005/1841/288 1008/1842/288 +f 1008/1842/79 997/1843/79 1002/424/79 +f 997/1843/79 1000/425/79 1002/424/79 +f 1000/425/79 993/1844/79 996/1845/79 +f 996/1845/79 1003/423/79 1000/425/79 +f 1028/426/80 1027/1846/80 1026/427/80 +f 1018/430/81 1021/1847/81 1024/1848/81 +f 1024/1848/81 1013/1849/81 1018/430/81 +f 1013/1849/81 1016/431/81 1018/430/81 +f 1016/431/81 1009/1850/81 1012/1851/81 +f 1012/1851/81 1019/429/81 1016/431/81 +f 1038/433/79 1041/1852/79 1044/1853/79 +f 1044/1853/79 1033/1854/79 1038/433/79 +f 1033/1854/79 1036/434/79 1038/433/79 +f 1036/434/79 1029/1855/79 1032/1856/79 +f 1032/1856/79 1039/432/79 1036/434/79 +f 1062/435/80 1063/1857/80 1064/436/80 +f 1054/439/81 1057/1858/81 1060/1859/81 +f 1060/1859/81 1049/1860/81 1054/439/81 +f 1049/1860/81 1052/440/81 1054/439/81 +f 1052/440/81 1045/1861/81 1048/1862/81 +f 1048/1862/81 1055/438/81 1052/440/81 +f 1080/442/85 1077/1863/85 1076/443/85 +f 1076/443/85 1075/1864/85 1070/1865/85 +f 1075/1864/85 1066/1866/85 1070/1865/85 +f 1066/1866/85 1065/1867/85 1070/1865/85 +f 1070/1865/85 1069/441/85 1076/443/85 +f 1097/444/86 1098/1868/86 1099/445/86 +f 1096/448/84 1093/1869/84 1092/449/84 +f 1092/449/84 1091/1870/84 1086/1871/84 +f 1091/1870/84 1082/1872/84 1086/1871/84 +f 1082/1872/84 1081/1873/84 1086/1871/84 +f 1086/1871/84 1085/447/84 1092/449/84 +f 1116/451/85 1113/1874/85 1112/452/85 +f 1112/452/85 1111/1875/85 1106/1876/85 +f 1111/1875/85 1102/1877/85 1106/1876/85 +f 1102/1877/85 1101/1878/85 1106/1876/85 +f 1106/1876/85 1105/450/85 1112/452/85 +f 1136/453/83 1135/1879/83 1134/454/83 +f 1132/457/84 1129/1880/84 1128/458/84 +f 1128/458/84 1127/1881/84 1122/1882/84 +f 1127/1881/84 1118/1883/84 1122/1882/84 +f 1118/1883/84 1117/1884/84 1122/1882/84 +f 1122/1882/84 1121/456/84 1128/458/84 +f 1152/460/85 1149/1885/85 1148/461/85 +f 1148/461/85 1147/1886/85 1142/1887/85 +f 1147/1886/85 1138/1888/85 1142/1887/85 +f 1138/1888/85 1137/1889/85 1142/1887/85 +f 1142/1887/85 1141/459/85 1148/461/85 +f 1170/462/83 1171/1890/83 1172/463/83 +f 1168/466/84 1165/1891/84 1164/467/84 +f 1164/467/84 1163/1892/84 1158/1893/84 +f 1163/1892/84 1154/1894/84 1158/1893/84 +f 1154/1894/84 1153/1895/84 1158/1893/84 +f 1158/1893/84 1157/465/84 1164/467/84 +f 1173/468/81 1177/498/81 1178/469/81 +f 1185/471/3 1181/478/3 1180/472/3 +f 1186/474/87 1183/480/87 1182/475/87 +f 1187/477/88 1182/1896/88 1181/478/88 +f 1188/479/89 1173/1897/89 1183/480/89 +f 1174/481/1 1173/1898/1 1188/479/1 +f 1190/483/1 1179/1899/1 1178/484/1 +f 1191/485/90 1178/1900/90 1177/486/90 +f 1176/491/3 1194/490/3 1192/487/3 +f 1175/493/91 1174/481/91 1189/482/91 +f 1191/495/84 1185/471/84 1184/473/84 +f 1186/496/84 1187/1901/84 1185/471/84 +f 1188/479/84 1186/496/84 1191/495/84 +f 1192/489/84 1193/488/84 1189/497/84 +f 1177/498/81 1173/468/81 1174/501/81 +f 1183/470/81 1178/469/81 1181/502/81 +f 1178/469/81 1179/1902/81 1180/504/81 +f 1204/506/92 1207/1903/92 1210/1904/92 +f 1210/1904/92 1199/1905/92 1204/506/92 +f 1199/1905/92 1202/507/92 1204/506/92 +f 1202/507/92 1195/1906/92 1198/1907/92 +f 1198/1907/92 1205/505/92 1202/507/92 +f 1230/508/289 1229/1908/289 1228/509/289 +f 1220/512/94 1223/1909/94 1226/1910/94 +f 1226/1910/94 1215/1911/94 1220/512/94 +f 1215/1911/94 1218/513/94 1220/512/94 +f 1218/513/94 1211/1912/94 1214/1913/94 +f 1214/1913/94 1221/511/94 1218/513/94 +f 1240/515/92 1243/1914/92 1246/1915/92 +f 1246/1915/92 1235/1916/92 1240/515/92 +f 1235/1916/92 1238/516/92 1240/515/92 +f 1238/516/92 1231/1917/92 1234/1918/92 +f 1234/1918/92 1241/514/92 1238/516/92 +f 1266/517/93 1265/1919/93 1264/518/93 +f 1256/521/94 1259/1920/94 1262/1921/94 +f 1262/1921/94 1251/1922/94 1256/521/94 +f 1251/1922/94 1254/522/94 1256/521/94 +f 1254/522/94 1247/1923/94 1250/1924/94 +f 1250/1924/94 1257/520/94 1254/522/94 +f 1276/524/92 1279/1925/92 1282/1926/92 +f 1282/1926/92 1271/1927/92 1276/524/92 +f 1271/1927/92 1274/525/92 1276/524/92 +f 1274/525/92 1267/1928/92 1270/1929/92 +f 1270/1929/92 1277/523/92 1274/525/92 +f 1300/526/289 1301/1930/289 1302/527/289 +f 1292/530/94 1295/1931/94 1298/1932/94 +f 1298/1932/94 1287/1933/94 1292/530/94 +f 1287/1933/94 1290/531/94 1292/530/94 +f 1290/531/94 1283/1934/94 1286/1935/94 +f 1286/1935/94 1293/529/94 1290/531/94 +f 1318/533/98 1315/1936/98 1314/534/98 +f 1314/534/98 1313/1937/98 1308/1938/98 +f 1313/1937/98 1304/1939/98 1308/1938/98 +f 1304/1939/98 1303/1940/98 1308/1938/98 +f 1308/1938/98 1307/532/98 1314/534/98 +f 1336/535/96 1337/1941/96 1338/536/96 +f 1334/539/97 1331/1942/97 1330/540/97 +f 1330/540/97 1329/1943/97 1324/1944/97 +f 1329/1943/97 1320/1945/97 1324/1944/97 +f 1320/1945/97 1319/1946/97 1324/1944/97 +f 1324/1944/97 1323/538/97 1330/540/97 +f 1354/542/98 1351/1947/98 1350/543/98 +f 1350/543/98 1349/1948/98 1344/1949/98 +f 1349/1948/98 1340/1950/98 1344/1949/98 +f 1340/1950/98 1339/1951/98 1344/1949/98 +f 1344/1949/98 1343/541/98 1350/543/98 +f 1374/544/96 1373/1952/96 1372/545/96 +f 1370/548/97 1367/1953/97 1366/549/97 +f 1366/549/97 1365/1954/97 1360/1955/97 +f 1365/1954/97 1356/1956/97 1360/1955/97 +f 1356/1956/97 1355/1957/97 1360/1955/97 +f 1360/1955/97 1359/547/97 1366/549/97 +f 1390/551/95 1387/1958/95 1386/552/95 +f 1386/552/98 1385/1959/98 1380/1960/98 +f 1385/1959/98 1376/1961/98 1380/1960/98 +f 1376/1961/95 1375/1962/95 1380/1960/95 +f 1380/1960/98 1379/550/98 1386/552/98 +f 1408/553/96 1409/1963/96 1410/554/96 +f 1406/557/97 1403/1964/97 1402/558/97 +f 1402/558/97 1401/1965/97 1396/1966/97 +f 1401/1965/97 1392/1967/97 1396/1966/97 +f 1392/1967/97 1391/1968/97 1396/1966/97 +f 1396/1966/97 1395/556/97 1402/558/97 +f 1411/559/94 1415/590/94 1416/560/94 +f 1423/562/3 1419/569/3 1418/563/3 +f 1424/565/99 1421/571/99 1420/566/99 +f 1425/568/100 1420/1969/100 1419/569/100 +f 1426/570/101 1411/1970/101 1421/571/101 +f 1411/572/1 1426/570/1 1427/573/1 +f 1428/575/1 1417/1971/1 1416/576/1 +f 1429/577/102 1416/1972/102 1415/578/102 +f 1414/583/3 1432/582/3 1430/579/3 +f 1413/585/103 1412/574/103 1427/573/103 +f 1429/587/97 1423/562/97 1422/564/97 +f 1424/588/97 1425/1973/97 1423/562/97 +f 1426/570/97 1424/588/97 1429/587/97 +f 1430/581/97 1431/580/97 1427/589/97 +f 1415/590/94 1411/559/94 1412/593/94 +f 1421/561/94 1416/560/94 1419/594/94 +f 1416/560/94 1417/1974/94 1418/596/94 +f 1434/597/104 1435/1975/104 1436/598/104 +f 1438/600/105 1439/1976/105 1440/601/105 +f 1441/603/106 1442/638/106 1440/601/106 +f 1444/605/290 1438/1977/290 1437/602/290 +f 1443/606/104 1442/635/104 1441/607/104 +f 1445/609/108 1446/1978/108 1447/610/108 +f 1450/612/291 1451/631/291 1452/613/291 +f 1445/609/110 1448/611/110 1444/615/110 +f 1454/617/105 1455/1979/105 1456/618/105 +f 1434/620/111 1433/599/111 1453/621/111 +f 1456/623/110 1455/1980/110 1449/614/110 +f 1435/624/107 1455/1981/107 1454/617/107 +f 1457/625/1 1446/1978/1 1445/609/1 +f 1458/627/3 1444/1982/3 1448/611/3 +f 1459/628/3 1450/612/3 1449/614/3 +f 1460/630/1 1456/1983/1 1452/613/1 +f 1440/601/105 1461/639/105 1462/632/105 +f 1453/619/105 1463/1984/105 1464/633/105 +f 1443/606/104 1465/637/104 1466/634/104 +f 1433/599/1 1467/640/1 1463/636/1 +f 1443/606/3 1437/602/3 1462/632/3 +f 1442/638/1 1466/1985/1 1461/639/1 +f 1436/598/104 1468/641/104 1467/640/104 +f 1436/598/3 1454/617/3 1464/633/3 +f 1469/642/112 1470/645/112 1471/643/112 +f 1470/645/3 1469/642/3 1474/646/3 +f 1470/645/105 1473/647/105 1475/648/105 +f 1475/648/214 1476/1986/214 1471/649/214 +f 1478/652/104 1474/646/104 1469/642/104 +f 1469/642/104 1472/650/104 1478/652/104 +f 1479/653/292 1480/1987/292 1481/654/292 +f 1482/655/115 1481/654/115 1484/656/115 +f 1485/658/116 1486/1988/116 1483/657/116 +f 1485/659/117 1480/1987/117 1479/653/117 +f 1475/661/293 1478/1989/293 1477/662/293 +f 1477/664/119 1472/644/119 1471/643/119 +f 1474/646/120 1478/1989/120 1475/661/120 +f 1491/1990/105 1487/667/105 1490/666/105 +f 1487/667/105 1488/1991/105 1489/668/105 +f 1496/671/104 1492/1992/104 1493/669/104 +f 1493/669/104 1494/1993/104 1495/670/104 +f 1493/672/121 1487/677/121 1491/673/121 +f 1494/674/122 1491/673/122 1490/666/122 +f 1495/670/3 1490/666/3 1489/668/3 +f 1488/675/123 1492/1994/123 1496/671/123 +f 1493/672/1 1492/1995/1 1488/676/1 +f 1503/1996/104 1497/1997/104 1498/678/104 +f 1498/678/104 1499/1998/104 1500/679/104 +f 1500/679/104 1501/1999/104 1502/680/104 +f 1502/680/104 1503/1996/104 1498/678/104 +f 1522/2000/105 1513/2001/105 1512/681/105 +f 1512/681/105 1506/2002/105 1505/682/105 +f 1505/682/105 1518/2003/105 1517/683/105 +f 1517/683/105 1522/2000/105 1512/681/105 +f 1520/684/105 1521/2004/105 1514/685/105 +f 1514/685/105 1515/2005/105 1509/686/105 +f 1509/686/105 1508/2006/105 1523/2007/105 +f 1523/2007/105 1520/684/105 1509/686/105 +f 1504/689/104 1507/2008/104 1511/687/104 +f 1511/687/104 1510/2009/104 1524/2010/104 +f 1524/2010/104 1516/688/104 1511/687/104 +f 1516/688/104 1519/2011/104 1504/689/104 +f 1526/690/124 1527/2012/124 1528/691/124 +f 1530/693/125 1531/2013/125 1532/694/125 +f 1533/696/126 1534/731/126 1532/694/126 +f 1536/698/127 1530/2014/127 1529/695/127 +f 1535/699/124 1534/728/124 1533/700/124 +f 1537/702/128 1538/2015/128 1539/703/128 +f 1542/705/129 1543/724/129 1544/706/129 +f 1537/702/130 1540/704/130 1536/708/130 +f 1546/710/125 1547/2016/125 1548/711/125 +f 1526/713/126 1525/692/126 1545/714/126 +f 1548/716/130 1547/2017/130 1541/707/130 +f 1527/717/127 1547/2018/127 1546/710/127 +f 1549/718/1 1538/2015/1 1537/702/1 +f 1550/720/3 1536/2019/3 1540/704/3 +f 1551/721/3 1542/705/3 1541/707/3 +f 1552/723/1 1548/2020/1 1544/706/1 +f 1532/694/125 1553/732/125 1554/725/125 +f 1545/712/125 1555/2021/125 1556/726/125 +f 1535/699/124 1557/730/124 1558/727/124 +f 1525/692/1 1559/733/1 1555/729/1 +f 1535/699/3 1529/695/3 1554/725/3 +f 1534/731/1 1558/2022/1 1553/732/1 +f 1528/691/124 1560/734/124 1559/733/124 +f 1528/691/3 1546/710/3 1556/726/3 +f 1561/735/131 1562/742/131 1563/736/131 +f 1565/738/3 1562/742/3 1561/735/3 +f 1562/742/125 1565/738/125 1567/740/125 +f 1567/740/294 1568/2023/294 1563/741/294 +f 1570/745/124 1566/739/124 1561/735/124 +f 1561/735/124 1564/743/124 1570/745/124 +f 1572/746/295 1573/2024/295 1574/747/295 +f 1574/747/134 1573/2024/134 1576/749/134 +f 1578/751/296 1575/750/296 1576/749/296 +f 1577/753/136 1572/746/136 1571/748/136 +f 1567/755/137 1570/2025/137 1569/756/137 +f 1569/758/138 1564/737/138 1563/736/138 +f 1566/739/139 1570/2025/139 1567/755/139 +f 1583/2026/125 1579/761/125 1582/760/125 +f 1579/761/125 1580/2027/125 1581/762/125 +f 1588/765/124 1584/2028/124 1585/763/124 +f 1585/763/124 1586/2029/124 1587/764/124 +f 1585/766/140 1579/772/140 1583/767/140 +f 1583/767/141 1582/760/141 1587/764/141 +f 1587/764/3 1582/760/3 1581/762/3 +f 1584/769/142 1588/765/142 1581/762/142 +f 1585/766/1 1584/2030/1 1580/771/1 +f 1595/2031/124 1589/2032/124 1590/773/124 +f 1590/773/124 1591/2033/124 1592/774/124 +f 1592/774/124 1593/2034/124 1594/775/124 +f 1594/775/124 1595/2031/124 1590/773/124 +f 1614/2035/125 1605/2036/125 1604/776/125 +f 1604/776/125 1598/2037/125 1597/777/125 +f 1597/777/125 1610/2038/125 1609/778/125 +f 1609/778/125 1614/2035/125 1604/776/125 +f 1612/779/125 1613/2039/125 1606/780/125 +f 1606/780/125 1607/2040/125 1601/781/125 +f 1601/781/125 1600/2041/125 1615/2042/125 +f 1615/2042/125 1612/779/125 1601/781/125 +f 1596/784/124 1599/2043/124 1603/782/124 +f 1603/782/124 1602/2044/124 1616/2045/124 +f 1616/2045/124 1608/783/124 1603/782/124 +f 1608/783/124 1611/2046/124 1596/784/124 +f 1618/785/33 1619/2047/33 1620/786/33 +f 1622/788/143 1623/2048/143 1624/789/143 +f 1625/791/144 1626/826/144 1624/789/144 +f 1628/793/145 1622/2049/145 1621/790/145 +f 1627/794/33 1626/823/33 1625/795/33 +f 1629/797/146 1630/2050/146 1631/798/146 +f 1634/800/147 1635/819/147 1636/801/147 +f 1629/797/28 1632/799/28 1628/803/28 +f 1638/805/143 1639/2051/143 1640/806/143 +f 1618/808/144 1617/787/144 1637/809/144 +f 1640/811/28 1639/2052/28 1633/802/28 +f 1619/812/145 1639/2053/145 1638/805/145 +f 1641/813/1 1630/2050/1 1629/797/1 +f 1642/815/3 1628/2054/3 1632/799/3 +f 1643/816/3 1634/800/3 1633/802/3 +f 1644/818/1 1640/2055/1 1636/801/1 +f 1624/789/143 1645/827/143 1646/820/143 +f 1637/807/143 1647/2056/143 1648/821/143 +f 1627/794/33 1649/825/33 1650/822/33 +f 1617/787/1 1651/828/1 1647/824/1 +f 1627/794/3 1621/790/3 1646/820/3 +f 1626/826/1 1650/2057/1 1645/827/1 +f 1620/786/33 1652/829/33 1651/828/33 +f 1620/786/3 1638/805/3 1648/821/3 +f 1654/830/297 1655/853/297 1656/831/297 +f 1657/833/3 1654/830/3 1653/832/3 +f 1654/830/143 1657/833/143 1659/835/143 +f 1659/835/143 1660/2058/143 1655/836/143 +f 1662/839/33 1658/834/33 1653/832/33 +f 1653/832/33 1656/837/33 1662/839/33 +f 1663/840/298 1664/2059/298 1665/841/298 +f 1666/842/151 1665/841/151 1668/843/151 +f 1670/845/299 1667/844/299 1668/843/299 +f 1669/847/153 1664/2059/153 1663/840/153 +f 1659/849/300 1662/2060/300 1661/850/300 +f 1660/852/155 1661/2061/155 1656/831/155 +f 1658/834/156 1662/2060/156 1659/849/156 +f 1675/2062/143 1671/855/143 1674/854/143 +f 1671/855/143 1672/2063/143 1673/856/143 +f 1680/859/33 1676/2064/33 1677/857/33 +f 1677/857/33 1678/2065/33 1679/858/33 +f 1677/860/157 1671/866/157 1675/861/157 +f 1675/861/158 1674/854/158 1679/858/158 +f 1679/858/3 1674/854/3 1673/856/3 +f 1676/863/159 1680/859/159 1673/856/159 +f 1677/860/1 1676/2066/1 1672/865/1 +f 1687/2067/33 1681/2068/33 1682/867/33 +f 1682/867/33 1683/2069/33 1684/868/33 +f 1684/868/33 1685/2070/33 1686/869/33 +f 1686/869/33 1687/2067/33 1682/867/33 +f 1706/2071/143 1697/2072/143 1696/870/143 +f 1696/870/143 1690/2073/143 1689/871/143 +f 1689/871/143 1702/2074/143 1701/872/143 +f 1701/872/143 1706/2071/143 1696/870/143 +f 1704/873/143 1705/2075/143 1698/874/143 +f 1698/874/143 1699/2076/143 1693/875/143 +f 1693/875/143 1692/2077/143 1707/2078/143 +f 1707/2078/143 1704/873/143 1693/875/143 +f 1688/878/33 1691/2079/33 1695/876/33 +f 1695/876/33 1694/2080/33 1708/2081/33 +f 1708/2081/33 1700/877/33 1695/876/33 +f 1700/877/33 1703/2082/33 1688/878/33 +f 1710/879/110 1711/2083/110 1712/880/110 +f 1714/882/160 1715/2084/160 1716/883/160 +f 1717/885/165 1718/920/165 1716/883/165 +f 1720/887/301 1714/2085/301 1713/884/301 +f 1719/888/110 1718/917/110 1717/889/110 +f 1721/891/302 1722/2086/302 1723/892/302 +f 1726/894/164 1727/913/164 1728/895/164 +f 1721/891/105 1724/893/105 1720/897/105 +f 1730/899/160 1731/2087/160 1732/900/160 +f 1710/902/161 1709/881/161 1729/903/161 +f 1732/905/105 1731/2088/105 1725/896/105 +f 1711/906/301 1731/2089/301 1730/899/301 +f 1733/907/1 1722/2086/1 1721/891/1 +f 1734/909/3 1720/2090/3 1724/893/3 +f 1735/910/3 1726/894/3 1725/896/3 +f 1736/912/1 1732/2091/1 1728/895/1 +f 1716/883/160 1737/921/160 1738/914/160 +f 1729/901/160 1739/2092/160 1740/915/160 +f 1719/888/110 1741/919/110 1742/916/110 +f 1709/881/1 1743/922/1 1739/918/1 +f 1719/888/3 1713/884/3 1738/914/3 +f 1718/920/1 1742/2093/1 1737/921/1 +f 1712/880/110 1744/923/110 1743/922/110 +f 1712/880/3 1730/899/3 1740/915/3 +f 1745/924/166 1746/931/166 1747/925/166 +f 1749/927/3 1746/931/3 1745/924/3 +f 1746/931/160 1749/927/160 1751/929/160 +f 1751/929/160 1752/2094/160 1747/930/160 +f 1754/934/110 1750/928/110 1745/924/110 +f 1745/924/110 1748/932/110 1754/934/110 +f 1755/935/303 1756/2095/303 1757/936/303 +f 1758/937/169 1757/936/169 1760/938/169 +f 1762/940/170 1759/939/170 1760/938/170 +f 1761/942/171 1756/2095/171 1755/935/171 +f 1751/944/304 1754/2096/304 1753/945/304 +f 1753/947/305 1748/926/305 1747/925/305 +f 1750/928/174 1754/2096/174 1751/944/174 +f 1767/2097/160 1763/950/160 1766/949/160 +f 1763/950/160 1764/2098/160 1765/951/160 +f 1772/954/110 1768/2099/110 1769/952/110 +f 1769/952/110 1770/2100/110 1771/953/110 +f 1769/955/175 1763/961/175 1767/956/175 +f 1770/957/176 1767/956/176 1766/949/176 +f 1771/953/3 1766/949/3 1765/951/3 +f 1768/958/177 1772/954/177 1765/951/177 +f 1769/955/1 1768/2101/1 1764/960/1 +f 1779/2102/110 1773/2103/110 1774/962/110 +f 1774/962/110 1775/2104/110 1776/963/110 +f 1776/963/110 1777/2105/110 1778/964/110 +f 1778/964/110 1779/2102/110 1774/962/110 +f 1798/2106/160 1789/2107/160 1788/965/160 +f 1788/965/160 1782/2108/160 1781/966/160 +f 1781/966/160 1794/2109/160 1793/967/160 +f 1793/967/160 1798/2106/160 1788/965/160 +f 1796/968/160 1797/2110/160 1790/969/160 +f 1790/969/160 1791/2111/160 1785/970/160 +f 1785/970/160 1784/2112/160 1799/2113/160 +f 1799/2113/160 1796/968/160 1785/970/160 +f 1780/973/110 1783/2114/110 1787/971/110 +f 1787/971/110 1786/2115/110 1800/2116/110 +f 1800/2116/110 1792/972/110 1787/971/110 +f 1792/972/110 1795/2117/110 1780/973/110 +f 1802/974/130 1803/2118/130 1804/975/130 +f 1806/977/178 1807/2119/178 1808/978/178 +f 1809/980/179 1810/1015/179 1808/978/179 +f 1812/982/180 1806/2120/180 1805/979/180 +f 1811/983/130 1810/1012/130 1809/984/130 +f 1813/986/181 1814/2121/181 1815/987/181 +f 1818/989/182 1819/1008/182 1820/990/182 +f 1813/986/294 1816/988/294 1812/992/294 +f 1822/994/178 1823/2122/178 1824/995/178 +f 1802/997/179 1801/976/179 1821/998/179 +f 1824/1000/125 1823/2123/125 1817/991/125 +f 1803/1001/180 1823/2124/180 1822/994/180 +f 1825/1002/1 1814/2121/1 1813/986/1 +f 1826/1004/3 1812/2125/3 1816/988/3 +f 1827/1005/3 1818/989/3 1817/991/3 +f 1828/1007/1 1824/2126/1 1820/990/1 +f 1808/978/178 1829/1016/178 1830/1009/178 +f 1821/996/178 1831/2127/178 1832/1010/178 +f 1811/983/130 1833/1014/130 1834/1011/130 +f 1801/976/1 1835/1017/1 1831/1013/1 +f 1811/983/3 1805/979/3 1830/1009/3 +f 1810/1015/1 1834/2128/1 1829/1016/1 +f 1804/975/130 1836/1018/130 1835/1017/130 +f 1804/975/3 1822/994/3 1832/1010/3 +f 1837/1019/183 1838/1026/183 1839/1020/183 +f 1841/1022/3 1838/1026/3 1837/1019/3 +f 1838/1026/178 1841/1022/178 1843/1024/178 +f 1843/1024/178 1844/2129/178 1839/1025/178 +f 1846/1029/130 1842/1023/130 1837/1019/130 +f 1837/1019/130 1840/1027/130 1846/1029/130 +f 1848/1030/306 1849/2130/306 1850/1031/306 +f 1850/1031/186 1849/2130/186 1852/1033/186 +f 1853/1035/307 1854/2131/307 1851/1034/307 +f 1853/1036/188 1848/1030/188 1847/1032/188 +f 1843/1038/308 1846/2132/308 1845/1039/308 +f 1845/1041/190 1840/1021/190 1839/1020/190 +f 1842/1023/191 1846/2132/191 1843/1038/191 +f 1859/2133/178 1855/1044/178 1858/1043/178 +f 1855/1044/178 1856/2134/178 1857/1045/178 +f 1864/1048/130 1860/2135/130 1861/1046/130 +f 1861/1046/130 1862/2136/130 1863/1047/130 +f 1861/1049/192 1855/1055/192 1859/1050/192 +f 1859/1050/193 1858/1043/193 1863/1047/193 +f 1863/1047/3 1858/1043/3 1857/1045/3 +f 1860/1052/194 1864/1048/194 1857/1045/194 +f 1861/1049/1 1860/2137/1 1856/1054/1 +f 1871/2138/130 1865/2139/130 1870/1058/130 +f 1865/2139/130 1866/1056/130 1870/1058/130 +f 1866/1056/130 1867/2140/130 1868/1057/130 +f 1868/1057/130 1869/2141/130 1870/1058/130 +f 1890/2142/178 1881/2143/178 1880/1059/178 +f 1880/1059/178 1874/2144/178 1873/1060/178 +f 1873/1060/178 1886/2145/178 1885/1061/178 +f 1885/1061/178 1890/2142/178 1880/1059/178 +f 1888/1062/178 1889/2146/178 1882/1063/178 +f 1882/1063/178 1883/2147/178 1877/1064/178 +f 1877/1064/178 1876/2148/178 1891/2149/178 +f 1891/2149/178 1888/1062/178 1877/1064/178 +f 1872/1067/130 1875/2150/130 1879/1065/130 +f 1879/1065/130 1878/2151/130 1892/2152/130 +f 1892/2152/130 1884/1066/130 1879/1065/130 +f 1884/1066/130 1887/2153/130 1872/1067/130 +f 1894/1068/28 1895/2154/28 1896/1069/28 +f 1898/1071/27 1899/2155/27 1900/1072/27 +f 1902/1074/195 1900/1072/195 1899/1075/195 +f 1904/1077/196 1898/2156/196 1897/1073/196 +f 1903/1078/28 1902/1107/28 1901/1079/28 +f 1905/1081/197 1906/2157/197 1907/1082/197 +f 1910/1084/198 1911/1103/198 1912/1085/198 +f 1905/1081/143 1908/1083/143 1904/1087/143 +f 1914/1089/27 1915/2158/27 1916/1090/27 +f 1894/1092/195 1893/1070/195 1913/1093/195 +f 1916/1095/143 1915/2159/143 1909/1086/143 +f 1895/1096/196 1915/2160/196 1914/1089/196 +f 1917/1097/1 1906/2157/1 1905/1081/1 +f 1918/1099/3 1904/2161/3 1908/1083/3 +f 1919/1100/3 1910/1084/3 1909/1086/3 +f 1920/1102/1 1916/2162/1 1912/1085/1 +f 1900/1072/27 1921/1110/27 1922/1104/27 +f 1913/1091/27 1923/2163/27 1924/1105/27 +f 1903/1078/28 1925/1109/28 1926/1106/28 +f 1893/1070/1 1927/1111/1 1923/1108/1 +f 1903/1078/3 1897/1073/3 1922/1104/3 +f 1902/1074/1 1926/2164/1 1921/1110/1 +f 1896/1069/28 1928/1112/28 1927/1111/28 +f 1896/1069/3 1914/1089/3 1924/1105/3 +f 1929/1113/309 1930/1120/309 1931/1114/309 +f 1933/1116/3 1930/1120/3 1929/1113/3 +f 1930/1120/27 1933/1116/27 1935/1118/27 +f 1935/1118/27 1936/2165/27 1931/1119/27 +f 1938/1123/28 1934/1117/28 1929/1113/28 +f 1929/1113/28 1932/1121/28 1938/1123/28 +f 1939/1124/201 1940/2166/201 1941/1125/201 +f 1942/1126/39 1941/1125/39 1944/1127/39 +f 1946/1129/310 1943/1128/310 1944/1127/310 +f 1945/1131/37 1940/2166/37 1939/1124/37 +f 1935/1133/203 1938/2167/203 1937/1134/203 +f 1937/1136/204 1932/1115/204 1931/1114/204 +f 1934/1117/205 1938/2167/205 1935/1133/205 +f 1951/2168/27 1947/1139/27 1950/1138/27 +f 1947/1139/27 1948/2169/27 1949/1140/27 +f 1956/1143/28 1952/2170/28 1953/1141/28 +f 1953/1141/28 1954/2171/28 1955/1142/28 +f 1953/1144/206 1947/1150/206 1951/1145/206 +f 1951/1145/207 1950/1138/207 1955/1142/207 +f 1955/1142/3 1950/1138/3 1949/1140/3 +f 1952/1147/208 1956/1143/208 1949/1140/208 +f 1953/1144/1 1952/2172/1 1948/1149/1 +f 1963/2173/28 1957/2174/28 1962/1153/28 +f 1957/2174/28 1958/1151/28 1962/1153/28 +f 1958/1151/28 1959/2175/28 1960/1152/28 +f 1960/1152/28 1961/2176/28 1962/1153/28 +f 1982/2177/27 1973/2178/27 1977/1156/27 +f 1973/2178/27 1972/1154/27 1977/1156/27 +f 1972/1154/311 1966/2179/311 1965/1155/311 +f 1965/1155/27 1978/2180/27 1977/1156/27 +f 1980/1157/27 1981/2181/27 1974/1158/27 +f 1974/1158/27 1975/2182/27 1969/1159/27 +f 1969/1159/27 1968/2183/27 1983/2184/27 +f 1983/2184/27 1980/1157/27 1969/1159/27 +f 1964/1162/28 1967/2185/28 1971/1160/28 +f 1971/1160/28 1970/2186/28 1984/2187/28 +f 1984/2187/28 1976/1161/28 1971/1160/28 +f 1976/1161/28 1979/2188/28 1964/1162/28 +f 1986/1163/105 1987/2189/105 1988/1164/105 +f 1990/1166/104 1991/2190/104 1992/1167/104 +f 1993/1169/209 1994/1204/209 1992/1167/209 +f 1996/1171/210 1990/2191/210 1989/1168/210 +f 1995/1172/105 1994/1201/105 1993/1173/105 +f 1997/1175/211 1998/2192/211 1999/1176/211 +f 2002/1178/312 2003/1197/312 2004/1179/312 +f 1997/1175/160 2000/1177/160 1996/1181/160 +f 2006/1183/104 2007/2193/104 2008/1184/104 +f 1986/1186/313 1985/1165/313 2005/1187/313 +f 2008/1189/160 2007/2194/160 2001/1180/160 +f 1987/1190/210 2007/2195/210 2006/1183/210 +f 2009/1191/1 1998/2192/1 1997/1175/1 +f 2010/1193/3 1996/2196/3 2000/1177/3 +f 2011/1194/3 2002/1178/3 2001/1180/3 +f 2012/1196/1 2008/2197/1 2004/1179/1 +f 1992/1167/104 2013/1205/104 2014/1198/104 +f 2005/1185/104 2015/2198/104 2016/1199/104 +f 1995/1172/105 2017/1203/105 2018/1200/105 +f 1985/1165/1 2019/1206/1 2015/1202/1 +f 1995/1172/3 1989/1168/3 2014/1198/3 +f 1994/1204/1 2018/2199/1 2013/1205/1 +f 1988/1164/105 2020/1207/105 2019/1206/105 +f 1988/1164/3 2006/1183/3 2016/1199/3 +f 2021/1208/213 2022/1215/213 2023/1209/213 +f 2025/1211/3 2022/1215/3 2021/1208/3 +f 2022/1215/104 2025/1211/104 2027/1213/104 +f 2027/1213/104 2028/2200/104 2023/1214/104 +f 2030/1218/105 2026/1212/105 2021/1208/105 +f 2021/1208/105 2024/1216/105 2030/1218/105 +f 2032/1219/314 2033/2201/314 2034/1220/314 +f 2034/1220/117 2033/2201/117 2036/1222/117 +f 2037/1224/216 2038/2202/216 2035/1223/216 +f 2037/1225/115 2032/1219/115 2031/1221/115 +f 2027/1227/315 2030/2203/315 2029/1228/315 +f 2029/1230/218 2024/1210/218 2023/1209/218 +f 2026/1212/219 2030/2203/219 2027/1227/219 +f 2043/2204/104 2039/1233/104 2042/1232/104 +f 2039/1233/104 2040/2205/104 2041/1234/104 +f 2048/1237/105 2044/2206/105 2045/1235/105 +f 2045/1235/105 2046/2207/105 2047/1236/105 +f 2045/1238/220 2039/1244/220 2043/1239/220 +f 2043/1239/221 2042/1232/221 2047/1236/221 +f 2047/1236/3 2042/1232/3 2041/1234/3 +f 2044/1241/222 2048/1237/222 2041/1234/222 +f 2045/1238/1 2044/2208/1 2040/1243/1 +f 2055/2209/105 2049/2210/105 2050/1245/105 +f 2050/1245/105 2051/2211/105 2052/1246/105 +f 2052/1246/105 2053/2212/105 2054/1247/105 +f 2054/1247/105 2055/2209/105 2050/1245/105 +f 2074/2213/104 2065/2214/104 2069/1250/104 +f 2065/2214/104 2064/1248/104 2069/1250/104 +f 2064/1248/104 2058/2215/104 2057/1249/104 +f 2057/1249/104 2070/2216/104 2069/1250/104 +f 2072/1251/104 2073/2217/104 2066/1252/104 +f 2066/1252/104 2067/2218/104 2061/1253/104 +f 2061/1253/104 2060/2219/104 2075/2220/104 +f 2075/2220/104 2072/1251/104 2061/1253/104 +f 2056/1256/105 2059/2221/105 2063/1254/105 +f 2063/1254/105 2062/2222/105 2076/2223/105 +f 2076/2223/105 2068/1255/105 2063/1254/105 +f 2068/1255/105 2071/2224/105 2056/1256/105 +f 2078/1257/125 2079/2225/125 2080/1258/125 +f 2082/1260/124 2083/2226/124 2084/1261/124 +f 2086/1263/223 2084/1261/223 2083/1264/223 +f 2088/1266/224 2082/2227/224 2081/1262/224 +f 2087/1267/125 2086/1296/125 2085/1268/125 +f 2089/1270/225 2090/2228/225 2091/1271/225 +f 2094/1273/226 2095/1292/226 2096/1274/226 +f 2089/1270/178 2092/1272/178 2088/1276/178 +f 2098/1278/124 2099/2229/124 2100/1279/124 +f 2078/1281/223 2077/1259/223 2097/1282/223 +f 2100/1284/178 2099/2230/178 2093/1275/178 +f 2079/1285/224 2099/2231/224 2098/1278/224 +f 2101/1286/1 2090/2228/1 2089/1270/1 +f 2102/1288/3 2088/2232/3 2092/1272/3 +f 2103/1289/3 2094/1273/3 2093/1275/3 +f 2104/1291/1 2100/2233/1 2096/1274/1 +f 2084/1261/124 2105/1299/124 2106/1293/124 +f 2097/1280/124 2107/2234/124 2108/1294/124 +f 2087/1267/125 2109/1298/125 2110/1295/125 +f 2077/1259/1 2111/1300/1 2107/1297/1 +f 2087/1267/3 2081/1262/3 2106/1293/3 +f 2086/1263/1 2110/2235/1 2105/1299/1 +f 2080/1258/125 2112/1301/125 2111/1300/125 +f 2080/1258/3 2098/1278/3 2108/1294/3 +f 2114/1302/227 2115/1325/227 2116/1303/227 +f 2117/1305/3 2114/1302/3 2113/1304/3 +f 2114/1302/124 2117/1305/124 2119/1307/124 +f 2119/1307/316 2120/2236/316 2115/1308/316 +f 2122/1311/125 2118/1306/125 2113/1304/125 +f 2113/1304/125 2116/1309/125 2122/1311/125 +f 2123/1312/317 2124/2237/317 2125/1313/317 +f 2126/1314/136 2125/1313/136 2128/1315/136 +f 2130/1317/318 2127/1316/318 2128/1315/318 +f 2129/1319/134 2124/2237/134 2123/1312/134 +f 2119/1321/319 2122/2238/319 2121/1322/319 +f 2121/1324/232 2116/1303/232 2115/1325/232 +f 2118/1306/233 2122/2238/233 2119/1321/233 +f 2135/2239/124 2131/1328/124 2134/1327/124 +f 2131/1328/124 2132/2240/124 2133/1329/124 +f 2140/1332/125 2136/2241/125 2137/1330/125 +f 2137/1330/125 2138/2242/125 2139/1331/125 +f 2131/1333/234 2135/2243/234 2138/1334/234 +f 2138/1334/235 2135/2243/235 2134/1327/235 +f 2139/1331/3 2134/1327/3 2133/1329/3 +f 2136/1336/236 2140/1332/236 2133/1329/236 +f 2137/1335/1 2136/2244/1 2132/1338/1 +f 2147/2245/125 2141/2246/125 2142/1339/125 +f 2142/1339/125 2143/2247/125 2144/1340/125 +f 2144/1340/125 2145/2248/125 2146/1341/125 +f 2146/1341/125 2147/2245/125 2142/1339/125 +f 2166/2249/124 2157/2250/124 2156/1342/124 +f 2156/1342/124 2150/2251/124 2149/1343/124 +f 2149/1343/124 2162/2252/124 2161/1344/124 +f 2161/1344/124 2166/2249/124 2156/1342/124 +f 2164/1345/124 2165/2253/124 2158/1346/124 +f 2158/1346/124 2159/2254/124 2153/1347/124 +f 2153/1347/124 2152/2255/124 2167/2256/124 +f 2167/2256/124 2164/1345/124 2153/1347/124 +f 2148/1350/125 2151/2257/125 2155/1348/125 +f 2155/1348/125 2154/2258/125 2168/2259/125 +f 2168/2259/125 2160/1349/125 2155/1348/125 +f 2160/1349/125 2163/2260/125 2148/1350/125 +f 2170/1351/143 2171/2261/143 2172/1352/143 +f 2174/1354/33 2175/2262/33 2176/1355/33 +f 2177/1357/241 2178/1392/241 2176/1355/241 +f 2180/1359/238 2174/2263/238 2173/1356/238 +f 2179/1360/143 2178/1389/143 2177/1361/143 +f 2181/1363/239 2182/2264/239 2183/1364/239 +f 2186/1366/240 2187/1385/240 2188/1367/240 +f 2181/1363/27 2184/1365/27 2180/1369/27 +f 2190/1371/33 2191/2265/33 2192/1372/33 +f 2170/1374/241 2169/1353/241 2189/1375/241 +f 2192/1377/27 2191/2266/27 2185/1368/27 +f 2171/1378/238 2191/2267/238 2190/1371/238 +f 2193/1379/1 2182/2264/1 2181/1363/1 +f 2194/1381/3 2180/2268/3 2184/1365/3 +f 2195/1382/3 2186/1366/3 2185/1368/3 +f 2196/1384/1 2192/2269/1 2188/1367/1 +f 2176/1355/33 2197/1393/33 2198/1386/33 +f 2189/1373/33 2199/2270/33 2200/1387/33 +f 2179/1360/143 2201/1391/143 2202/1388/143 +f 2169/1353/1 2203/1394/1 2199/1390/1 +f 2179/1360/3 2173/1356/3 2198/1386/3 +f 2178/1392/1 2202/2271/1 2197/1393/1 +f 2172/1352/143 2204/1395/143 2203/1394/143 +f 2172/1352/3 2190/1371/3 2200/1387/3 +f 2205/1396/320 2206/1403/320 2207/1397/320 +f 2209/1399/3 2206/1403/3 2205/1396/3 +f 2206/1403/33 2209/1399/33 2211/1401/33 +f 2211/1401/33 2212/2272/33 2207/1402/33 +f 2214/1406/143 2210/1400/143 2205/1396/143 +f 2205/1396/143 2208/1404/143 2214/1406/143 +f 2215/1407/321 2216/2273/321 2217/1408/321 +f 2218/1409/153 2217/1408/153 2220/1410/153 +f 2221/1412/322 2222/2274/322 2219/1411/322 +f 2221/1413/151 2216/2273/151 2215/1407/151 +f 2211/1415/323 2214/2275/323 2213/1416/323 +f 2213/1418/247 2208/1398/247 2207/1397/247 +f 2210/1400/248 2214/2275/248 2211/1415/248 +f 2227/2276/33 2223/1421/33 2226/1420/33 +f 2223/1421/33 2224/2277/33 2225/1422/33 +f 2232/1425/143 2228/2278/143 2229/1423/143 +f 2229/1423/143 2230/2279/143 2231/1424/143 +f 2229/1426/249 2223/1432/249 2227/1427/249 +f 2230/1428/250 2227/1427/250 2226/1420/250 +f 2231/1424/3 2226/1420/3 2225/1422/3 +f 2228/1429/251 2232/1425/251 2225/1422/251 +f 2229/1426/1 2228/2280/1 2224/1431/1 +f 2239/2281/143 2233/2282/143 2234/1433/143 +f 2234/1433/143 2235/2283/143 2236/1434/143 +f 2236/1434/143 2237/2284/143 2238/1435/143 +f 2238/1435/143 2239/2281/143 2234/1433/143 +f 2258/2285/33 2249/2286/33 2248/1436/33 +f 2248/1436/33 2242/2287/33 2241/1437/33 +f 2241/1437/33 2254/2288/33 2253/1438/33 +f 2253/1438/33 2258/2285/33 2248/1436/33 +f 2256/1439/33 2257/2289/33 2250/1440/33 +f 2250/1440/33 2251/2290/33 2245/1441/33 +f 2245/1441/33 2244/2291/33 2259/2292/33 +f 2259/2292/33 2256/1439/33 2245/1441/33 +f 2240/1444/143 2243/2293/143 2247/1442/143 +f 2247/1442/143 2246/2294/143 2260/2295/143 +f 2260/2295/143 2252/1443/143 2247/1442/143 +f 2252/1443/143 2255/2296/143 2240/1444/143 +f 2262/1445/160 2263/2297/160 2264/1446/160 +f 2266/1448/110 2267/2298/110 2268/1449/110 +f 2269/1451/324 2270/1487/324 2268/1449/324 +f 2272/1453/325 2266/2299/325 2265/1450/325 +f 2271/1454/160 2270/1484/160 2269/1455/160 +f 2273/1457/326 2274/2300/326 2275/1458/326 +f 2278/1460/255 2279/1480/255 2280/1461/255 +f 2273/1457/104 2276/1459/104 2272/1463/104 +f 2281/1465/110 2282/1473/110 2283/1466/110 +f 2262/1468/324 2261/1447/324 2281/1469/324 +f 2284/1471/104 2283/2301/104 2277/1462/104 +f 2263/1472/325 2283/2302/325 2282/1473/325 +f 2285/1474/1 2274/2300/1 2273/1457/1 +f 2286/1476/3 2272/2303/3 2276/1459/3 +f 2287/1477/3 2278/1460/3 2277/1462/3 +f 2288/1479/1 2284/2304/1 2280/1461/1 +f 2268/1449/110 2289/1488/110 2290/1481/110 +f 2281/1465/110 2291/2305/110 2292/1482/110 +f 2271/1454/160 2293/1486/160 2294/1483/160 +f 2261/1447/1 2295/1489/1 2291/1485/1 +f 2271/1454/3 2265/1450/3 2290/1481/3 +f 2270/1487/1 2294/2306/1 2289/1488/1 +f 2264/1446/160 2296/1490/160 2295/1489/160 +f 2264/1446/3 2282/1473/3 2292/1482/3 +f 2297/1491/256 2298/1498/256 2299/1492/256 +f 2301/1494/3 2298/1498/3 2297/1491/3 +f 2298/1498/110 2301/1494/110 2303/1496/110 +f 2303/1496/110 2304/2307/110 2299/1497/110 +f 2306/1501/160 2302/1495/160 2297/1491/160 +f 2297/1491/160 2300/1499/160 2306/1501/160 +f 2308/1502/327 2309/2308/327 2310/1503/327 +f 2310/1503/171 2309/2308/171 2312/1505/171 +f 2314/1507/259 2311/1506/259 2312/1505/259 +f 2313/1509/169 2308/1502/169 2307/1504/169 +f 2303/1511/328 2306/2309/328 2305/1512/328 +f 2305/1514/329 2300/1493/329 2299/1492/329 +f 2302/1495/330 2306/2309/330 2303/1511/330 +f 2319/2310/110 2315/1517/110 2318/1516/110 +f 2315/1517/110 2316/2311/110 2317/1518/110 +f 2324/1521/160 2320/2312/160 2321/1519/160 +f 2321/1519/160 2322/2313/160 2323/1520/160 +f 2321/1522/263 2315/1528/263 2319/1523/263 +f 2322/1524/264 2319/1523/264 2318/1516/264 +f 2323/1520/3 2318/1516/3 2317/1518/3 +f 2320/1525/265 2324/1521/265 2317/1518/265 +f 2321/1522/1 2320/2314/1 2316/1527/1 +f 2331/2315/160 2325/2316/160 2326/1529/160 +f 2326/1529/160 2327/2317/160 2328/1530/160 +f 2328/1530/160 2329/2318/160 2330/1531/160 +f 2330/1531/160 2331/2315/160 2326/1529/160 +f 2350/2319/110 2341/2320/110 2340/1532/110 +f 2340/1532/110 2334/2321/110 2333/1533/110 +f 2333/1533/110 2346/2322/110 2345/1534/110 +f 2345/1534/110 2350/2319/110 2340/1532/110 +f 2348/1535/110 2349/2323/110 2342/1536/110 +f 2342/1536/110 2343/2324/110 2337/1537/110 +f 2337/1537/110 2336/2325/110 2351/2326/110 +f 2351/2326/110 2348/1535/110 2337/1537/110 +f 2332/1540/160 2335/2327/160 2339/1538/160 +f 2339/1538/160 2338/2328/160 2352/2329/160 +f 2352/2329/160 2344/1539/160 2339/1538/160 +f 2344/1539/160 2347/2330/160 2332/1540/160 +f 2354/1541/178 2355/2331/178 2356/1542/178 +f 2358/1544/130 2359/2332/130 2360/1545/130 +f 2361/1547/266 2362/1583/266 2360/1545/266 +f 2363/1549/267 2364/2333/267 2358/1550/267 +f 2363/1549/178 2362/1580/178 2361/1551/178 +f 2365/1553/268 2366/2334/268 2367/1554/268 +f 2370/1556/269 2371/1576/269 2372/1557/269 +f 2365/1553/124 2368/1555/124 2364/1559/124 +f 2373/1561/130 2374/1569/130 2375/1562/130 +f 2354/1564/266 2353/1543/266 2373/1565/266 +f 2376/1567/124 2375/2335/124 2369/1558/124 +f 2355/1568/267 2375/2336/267 2374/1569/267 +f 2377/1570/1 2366/2334/1 2365/1553/1 +f 2378/1572/3 2364/2337/3 2368/1555/3 +f 2379/1573/3 2370/1556/3 2369/1558/3 +f 2380/1575/1 2376/2338/1 2372/1557/1 +f 2360/1545/130 2381/1584/130 2382/1577/130 +f 2373/1561/130 2383/2339/130 2384/1578/130 +f 2363/1549/178 2385/1582/178 2386/1579/178 +f 2353/1543/1 2387/1585/1 2383/1581/1 +f 2363/1549/3 2357/1546/3 2382/1577/3 +f 2362/1583/1 2386/2340/1 2381/1584/1 +f 2356/1542/178 2388/1586/178 2387/1585/178 +f 2356/1542/3 2374/1569/3 2384/1578/3 +f 2390/1587/270 2391/1610/270 2392/1588/270 +f 2393/1590/3 2390/1587/3 2389/1589/3 +f 2390/1587/130 2393/1590/130 2395/1592/130 +f 2395/1592/130 2396/2341/130 2391/1593/130 +f 2398/1596/178 2394/1591/178 2389/1589/178 +f 2389/1589/178 2392/1594/178 2398/1596/178 +f 2400/1597/331 2401/2342/331 2402/1598/331 +f 2402/1598/188 2401/2342/188 2404/1600/188 +f 2406/1602/332 2403/1601/332 2404/1600/332 +f 2405/1604/186 2400/1597/186 2399/1599/186 +f 2395/1606/333 2398/2343/333 2397/1607/333 +f 2397/1609/275 2392/1588/275 2391/1610/275 +f 2394/1591/276 2398/2343/276 2395/1606/276 +f 2411/2344/130 2407/1613/130 2410/1612/130 +f 2407/1613/130 2408/2345/130 2409/1614/130 +f 2416/1617/178 2412/2346/178 2413/1615/178 +f 2413/1615/178 2414/2347/178 2415/1616/178 +f 2413/1618/277 2407/1624/277 2411/1619/277 +f 2411/1619/278 2410/1612/278 2415/1616/278 +f 2415/1616/3 2410/1612/3 2409/1614/3 +f 2412/1621/279 2416/1617/279 2409/1614/279 +f 2412/1623/1 2408/2348/1 2407/1624/1 +f 2423/2349/178 2417/2350/178 2418/1625/178 +f 2418/1625/178 2419/2351/178 2420/1626/178 +f 2420/1626/178 2421/2352/178 2422/1627/178 +f 2422/1627/178 2423/2349/178 2418/1625/178 +f 2442/2353/130 2433/2354/130 2432/1628/130 +f 2432/1628/130 2426/2355/130 2425/1629/130 +f 2425/1629/130 2438/2356/130 2437/1630/130 +f 2437/1630/130 2442/2353/130 2432/1628/130 +f 2440/1631/130 2441/2357/130 2434/1632/130 +f 2434/1632/130 2435/2358/130 2429/1633/130 +f 2429/1633/130 2428/2359/130 2443/2360/130 +f 2443/2360/130 2440/1631/130 2429/1633/130 +f 2424/1636/178 2427/2361/178 2431/1634/178 +f 2431/1634/178 2430/2362/178 2444/2363/178 +f 2444/2363/178 2436/1635/178 2431/1634/178 +f 2436/1635/178 2439/2364/178 2424/1636/178 +s 1 +f 2/2365/334 4/2366/335 1/2367/336 +f 4/2366/335 5/2368/337 6/2369/338 +f 6/2369/338 7/2370/339 8/2371/340 +f 8/2371/340 9/2372/341 10/2373/342 +f 16/2374/343 13/2375/344 15/2376/345 +f 19/2377/346 1/2367/336 18/2378/347 +f 20/2379/348 21/2380/349 22/2381/350 +f 21/2380/349 11/2382/351 22/2381/350 +f 18/2378/347 23/2383/352 21/2380/349 +f 21/2380/349 13/2384/344 12/2385/353 +f 1/2367/336 24/2386/354 23/2383/352 +f 23/2383/352 14/2387/355 13/2384/344 +f 6/2369/338 24/2386/354 4/2366/335 +f 25/2388/356 14/2387/355 24/2386/354 +f 8/2371/340 25/2388/356 6/2369/338 +f 26/2389/357 15/2390/345 25/2388/356 +f 10/2373/342 26/2389/357 8/2371/340 +f 26/2389/357 17/2391/358 16/2392/343 +f 28/2393/359 18/2378/347 20/2379/348 +f 28/2393/359 30/2394/360 19/2377/346 +f 29/2395/361 32/2396/362 30/2394/360 +f 19/2377/346 33/2397/363 2/2365/334 +f 30/2394/360 34/2398/364 33/2397/363 +f 2/2365/334 35/2399/365 3/2400/366 +f 33/2397/363 36/2401/367 35/2399/365 +f 5/2368/337 35/2399/365 37/2402/368 +f 37/2402/368 36/2401/367 38/2403/369 +f 7/2370/339 37/2402/368 39/2404/370 +f 39/2404/370 38/2403/369 40/2405/371 +f 9/2372/341 39/2404/370 41/2406/372 +f 41/2406/372 40/2405/371 42/2407/373 +f 38/2408/369 36/2409/367 34/2410/364 +f 72/2411/374 74/2412/375 71/2413/376 +f 74/2412/375 75/2414/377 76/2415/378 +f 75/2414/377 78/2416/379 76/2415/378 +f 77/2417/380 80/2418/381 78/2416/379 +f 79/2419/382 82/2420/383 80/2418/381 +f 81/2421/384 84/2422/385 82/2423/383 +f 83/2424/386 86/2425/387 84/2422/385 +f 85/2426/388 88/2427/389 86/2425/387 +f 88/2427/389 89/2428/390 90/2429/391 +f 89/2428/390 92/2430/392 90/2429/391 +f 92/2430/392 93/2431/393 94/2432/394 +f 95/2433/395 97/2434/396 98/2435/397 +f 97/2434/396 100/2436/398 98/2435/397 +f 99/2437/399 102/2438/400 100/2436/398 +f 101/2439/401 104/2440/402 102/2438/400 +f 104/2440/402 105/2441/403 106/2442/404 +f 105/2441/403 108/2443/405 106/2442/404 +f 77/2417/380 109/2444/406 110/2445/407 +f 112/2446/408 71/2413/376 111/2447/409 +f 78/2416/379 113/2448/410 114/2449/411 +f 116/2450/412 118/2451/413 115/2452/414 +f 85/2426/388 115/2452/414 87/2453/415 +f 72/2411/374 120/2454/416 73/2455/417 +f 96/2456/418 122/2457/419 97/2434/396 +f 107/2458/420 123/2459/421 124/2460/422 +f 81/2421/384 126/2461/423 83/2424/386 +f 91/2462/424 128/2463/425 93/2431/393 +f 103/2464/426 129/2465/427 130/2466/428 +f 77/2417/380 131/2467/429 79/2419/382 +f 87/2453/415 132/2468/430 89/2428/390 +f 97/2434/396 133/2469/431 99/2437/399 +f 107/2458/420 134/2470/432 112/2446/408 +f 73/2455/417 109/2444/406 75/2414/377 +f 85/2426/388 126/2461/423 116/2471/412 +f 93/2431/393 121/2472/433 96/2456/418 +f 105/2441/403 130/2466/428 123/2473/421 +f 79/2419/382 125/2474/434 81/2475/384 +f 89/2428/390 127/2476/435 91/2462/424 +f 101/2439/401 133/2469/431 129/2477/427 +f 112/2446/408 119/2478/436 72/2411/374 +f 135/2479/437 137/2480/438 138/2481/439 +f 119/2478/436 140/2482/440 120/2454/416 +f 129/2465/427 142/2483/441 130/2466/428 +f 115/2452/414 143/2484/442 132/2468/430 +f 120/2485/416 144/2486/443 109/2444/406 +f 130/2466/428 145/2487/444 123/2473/421 +f 132/2488/430 146/2489/445 127/2476/435 +f 109/2444/406 147/2490/446 110/2445/407 +f 124/2460/422 145/2491/444 148/2492/447 +f 127/2476/435 149/2493/448 128/2463/425 +f 131/2467/429 147/2494/446 136/2495/449 +f 124/2460/422 150/2496/450 134/2470/432 +f 128/2497/425 151/2498/451 121/2472/433 +f 125/2474/434 136/2495/449 135/2479/437 +f 134/2499/432 139/2500/452 119/2478/436 +f 122/2457/419 151/2498/451 152/2501/453 +f 125/2502/434 153/2503/454 126/2461/423 +f 122/2504/419 154/2505/455 133/2469/431 +f 116/2471/412 153/2503/454 117/2506/456 +f 133/2469/431 141/2507/457 129/2477/427 +f 156/2508/458 158/2509/459 155/2510/460 +f 150/2511/450 160/2512/461 139/2500/452 +f 151/2498/451 162/2513/462 152/2501/453 +f 135/2514/437 163/2515/463 153/2503/454 +f 154/2505/455 162/2516/462 156/2508/458 +f 117/2506/456 163/2515/463 164/2517/464 +f 141/2507/457 156/2508/458 155/2510/460 +f 118/2451/413 164/2518/464 165/2519/465 +f 140/2482/440 160/2512/461 166/2520/466 +f 142/2483/441 155/2521/460 167/2522/467 +f 143/2484/442 165/2519/465 168/2523/468 +f 140/2524/440 169/2525/469 144/2486/443 +f 142/2483/441 170/2526/470 145/2487/444 +f 143/2527/442 171/2528/471 146/2489/445 +f 144/2486/443 172/2529/472 147/2490/446 +f 148/2492/447 170/2530/470 173/2531/473 +f 146/2489/445 174/2532/474 149/2493/448 +f 136/2495/449 172/2533/472 137/2480/438 +f 148/2492/447 159/2534/475 150/2496/450 +f 151/2498/451 174/2535/474 161/2536/476 +f 157/2537/477 184/2538/478 188/2539/479 +f 165/2519/465 187/2540/480 186/2541/481 +f 160/2512/461 175/2542/482 166/2520/466 +f 167/2522/467 158/2543/459 180/2544/483 +f 168/2523/468 186/2541/481 185/2545/484 +f 169/2525/469 175/2546/482 192/2547/485 +f 167/2522/467 179/2548/486 170/2526/470 +f 171/2528/471 185/2549/484 184/2550/478 +f 169/2525/469 191/2551/487 172/2529/472 +f 173/2531/473 179/2552/486 178/2553/488 +f 171/2528/471 183/2554/489 174/2532/474 +f 137/2480/438 191/2555/487 190/2556/490 +f 173/2531/473 177/2557/491 159/2534/475 +f 161/2536/476 183/2558/489 182/2559/492 +f 137/2480/438 189/2560/493 138/2481/439 +f 160/2512/461 177/2561/491 176/2562/494 +f 161/2536/476 181/2563/495 162/2513/462 +f 163/2515/463 189/2564/493 188/2565/479 +f 156/2508/458 181/2566/495 157/2567/477 +f 163/2515/463 187/2568/480 164/2517/464 +f 194/2569/496 196/66/497 193/2570/498 +f 90/2429/391 198/2571/499 88/2427/389 +f 100/2436/398 199/2572/500 98/2435/397 +f 111/2447/409 201/2573/501 108/2443/405 +f 76/2415/378 203/2574/502 74/2412/375 +f 84/2422/385 204/2575/503 205/2576/504 +f 95/2433/395 207/2577/505 94/2432/394 +f 106/2442/404 209/2578/506 104/2440/402 +f 82/2420/383 113/2448/410 80/2418/381 +f 92/2430/392 197/2579/507 90/2429/391 +f 102/2438/400 193/2570/498 100/2436/398 +f 71/2413/376 200/2580/508 111/2447/409 +f 78/2416/379 202/2581/509 76/2415/378 +f 88/2427/389 204/2582/503 86/2425/387 +f 71/2413/376 203/2583/502 212/2584/510 +f 98/2435/397 206/2585/511 95/2433/395 +f 108/2443/405 208/2586/512 106/2442/404 +f 84/2422/385 210/2587/513 82/2423/383 +f 94/2432/394 211/2588/514 92/2430/392 +f 104/2440/402 194/2589/496 102/2438/400 +f 198/2571/499 218/75/515 204/2582/503 +f 203/2583/502 220/58/64 212/2584/510 +f 194/2589/496 213/36/516 195/78/68 +f 197/2590/507 217/73/517 198/2571/499 +f 202/2581/509 219/82/518 203/2574/502 +f 209/2578/506 214/34/519 213/36/516 +f 197/2579/507 223/37/61 221/39/520 +f 114/2591/411 222/42/521 202/2581/509 +f 201/2573/501 214/45/519 208/2586/512 +f 207/2592/505 223/37/61 211/2588/514 +f 113/2448/410 224/50/522 114/2449/411 +f 200/2593/508 225/43/523 201/2573/501 +f 207/2577/505 229/62/524 226/53/525 +f 113/2448/410 230/56/69 227/48/526 +f 200/2580/508 220/58/64 228/60/527 +f 206/2585/511 231/61/528 229/62/524 +f 205/2576/504 230/63/69 210/2587/513 +f 193/2570/498 231/68/528 199/2572/500 +f 204/2575/503 232/69/529 205/2576/504 +f 112/2446/408 108/2443/405 107/2458/420 +f 96/2456/418 94/2432/394 93/2431/393 +f 234/1647/520 236/2594/517 233/52/517 +f 243/54/521 264/2595/518 241/55/518 +f 242/57/497 258/2596/68 257/2597/497 +f 245/77/61 235/2598/520 234/59/520 +f 246/1649/522 265/2599/521 243/54/521 +f 247/64/516 258/2600/68 244/65/68 +f 246/67/522 267/2601/526 266/2602/522 +f 247/64/516 260/2603/519 259/2604/516 +f 250/1651/69 267/2601/526 248/72/526 +f 251/81/523 260/2605/519 249/74/519 +f 252/76/525 253/2606/61 245/77/61 +f 216/35/529 268/2607/69 250/79/69 +f 238/1653/527 261/2608/523 251/81/523 +f 240/41/524 254/2609/525 252/83/525 +f 215/1644/515 269/2610/529 216/35/529 +f 237/47/64 262/2611/527 238/38/527 +f 239/1645/528 255/2612/524 240/41/524 +f 215/44/515 236/2594/517 270/2613/515 +f 241/46/518 263/2614/64 237/47/64 +f 242/57/497 256/2615/528 239/49/528 +f 272/2616/530 274/2617/160 271/2618/64 +f 276/2619/531 278/2620/532 275/2621/533 +f 272/2616/530 278/2620/532 273/2622/534 +f 274/2617/160 279/2623/535 280/2624/69 +f 277/2625/536 282/2626/537 278/2620/532 +f 273/2622/534 282/2626/537 279/2623/535 +f 279/2627/535 284/2628/105 280/2629/69 +f 282/2630/537 285/2631/538 286/2632/539 +f 279/2627/535 286/2632/539 283/2633/540 +f 284/2628/105 287/2634/541 288/2635/61 +f 286/2632/539 289/2636/542 290/2637/543 +f 286/2632/539 287/2634/541 283/2633/540 +f 287/2634/541 291/2638/544 292/2639/545 +f 287/2634/541 293/2640/110 288/2635/61 +f 290/2637/543 294/2641/546 291/2638/544 +f 291/2638/544 296/2642/547 292/2639/545 +f 292/2639/545 297/2643/68 293/2640/110 +f 291/2638/544 298/2644/548 295/2645/549 +f 296/2642/547 299/2646/550 300/2647/551 +f 289/2648/542 285/2649/538 281/2650/552 +f 296/2642/547 302/2651/104 297/2643/68 +f 298/2644/548 299/2646/550 295/2645/549 +f 300/2647/551 271/2618/64 302/2651/104 +f 299/2646/550 276/2619/531 275/2621/533 +f 299/2646/550 272/2616/530 300/2647/551 +f 304/2652/530 306/2653/160 303/2654/64 +f 308/2655/531 310/2656/532 307/2657/533 +f 304/2652/530 310/2656/532 305/2658/534 +f 305/2658/534 312/2659/69 306/2653/160 +f 309/2660/536 314/2661/537 310/2656/532 +f 310/2656/532 311/2662/535 305/2658/534 +f 311/2663/535 316/2664/105 312/2665/69 +f 313/2666/552 318/2667/539 314/2668/537 +f 314/2668/537 315/2669/540 311/2663/535 +f 316/2664/105 319/2670/541 320/2671/61 +f 318/2667/539 321/2672/542 322/2673/543 +f 315/2669/540 322/2673/543 319/2670/541 +f 322/2673/543 324/2674/545 319/2670/541 +f 320/2671/61 324/2674/545 325/2675/110 +f 321/2672/542 323/2676/544 322/2673/543 +f 323/2676/544 328/2677/547 324/2674/545 +f 324/2674/545 329/2678/68 325/2675/110 +f 323/2676/544 330/2679/548 327/2680/549 +f 328/2677/547 331/2681/550 332/2682/551 +f 321/2683/542 317/2684/538 313/2685/552 +f 328/2677/547 334/2686/104 329/2678/68 +f 330/2679/548 331/2681/550 327/2680/549 +f 334/2686/104 304/2652/530 303/2654/64 +f 331/2681/550 308/2655/531 307/2657/533 +f 332/2682/551 307/2657/533 304/2652/530 +f 364/131/553 366/2687/554 363/2688/553 +f 365/135/554 368/2689/555 366/2687/554 +f 368/2689/555 369/136/556 370/2690/556 +f 369/136/556 372/2691/557 370/2690/556 +f 372/2691/557 373/128/558 374/2692/558 +f 373/128/558 376/2693/559 374/2692/558 +f 376/2694/559 377/122/560 378/2695/561 +f 377/122/560 380/2696/562 378/2695/561 +f 379/117/562 382/2697/563 380/2696/562 +f 382/2697/563 383/138/564 384/2698/564 +f 383/138/564 388/2699/565 384/2698/564 +f 388/2699/565 364/131/553 363/2688/553 +f 390/133/566 392/2700/567 389/134/567 +f 393/120/568 404/2701/569 385/121/569 +f 395/125/570 408/2702/571 407/2703/570 +f 398/132/572 391/2704/566 390/133/566 +f 389/134/567 410/2705/573 399/137/574 +f 385/121/569 403/2706/3 386/118/3 +f 394/126/575 407/2703/570 406/2707/575 +f 397/129/1 410/2705/573 409/2708/1 +f 386/118/3 402/2709/576 400/141/576 +f 394/123/575 405/2710/568 393/120/568 +f 396/130/571 409/2708/1 408/2702/571 +f 400/141/576 401/2711/572 398/132/572 +f 411/2712/577 413/161/578 414/160/577 +f 412/2713/578 416/162/579 413/161/578 +f 415/2714/579 418/157/580 416/162/579 +f 419/2715/581 418/157/580 417/2716/580 +f 419/2715/581 422/152/582 420/155/581 +f 423/2717/583 422/152/582 421/2718/582 +f 423/2719/583 426/148/584 424/150/583 +f 427/2720/585 426/148/584 425/2721/584 +f 427/2720/585 430/145/586 428/147/585 +f 429/2722/586 432/164/587 430/145/586 +f 435/2723/588 432/164/587 431/2724/587 +f 435/2723/588 414/160/577 436/159/588 +f 438/2725/589 440/158/590 437/165/589 +f 434/146/591 454/2726/592 441/1692/592 +f 443/154/593 451/2727/594 444/1693/594 +f 440/158/590 458/2728/595 446/1694/595 +f 449/2729/596 437/165/589 447/1695/596 +f 433/1691/3 455/2730/591 434/146/591 +f 442/151/597 452/2731/593 443/154/593 +f 450/2732/1 447/1695/596 445/156/1 +f 457/2733/598 433/1691/3 448/163/598 +f 441/1692/592 453/2734/597 442/149/597 +f 451/2727/594 445/156/1 444/1693/594 +f 446/1694/595 457/2733/598 448/163/598 +f 531/2735/33 533/2736/599 530/2737/33 +f 534/2738/1 524/252/600 523/1725/1 +f 537/261/601 539/1729/3 536/1737/3 +f 540/2739/33 525/2740/602 541/2741/603 +f 543/257/600 545/2742/604 542/2743/605 +f 528/254/601 547/2744/599 546/258/606 +f 538/255/606 533/2736/599 532/2745/599 +f 524/252/600 541/2741/603 525/2740/602 +f 531/2746/33 545/2742/604 544/2747/604 +f 528/254/601 549/1735/3 529/1724/3 +f 548/1728/1 542/2743/605 550/2748/1 +f 526/2749/33 547/2744/599 527/2750/599 +f 578/2751/607 580/1757/608 577/1756/607 +f 582/2752/609 584/305/610 581/1755/609 +f 585/2753/611 587/303/612 588/2754/612 +f 589/2755/613 585/2753/611 590/2756/613 +f 579/2757/614 587/303/612 580/2758/608 +f 582/2752/609 592/2759/615 591/2760/615 +f 577/2761/607 583/2762/616 578/2763/607 +f 590/2764/613 592/1754/615 589/1753/613 +f 594/2765/617 596/1763/618 593/1762/617 +f 598/2766/619 600/311/620 597/1761/619 +f 602/310/621 604/2767/622 601/2768/621 +f 602/310/621 606/2769/623 605/2770/623 +f 595/2771/618 603/309/624 596/2772/618 +f 598/2766/619 608/2773/625 607/2774/625 +f 600/311/620 594/2775/617 593/2776/617 +f 605/1759/623 607/2777/625 608/1760/625 +f 614/2778/607 616/1768/614 613/1767/607 +f 618/2779/609 620/314/616 617/1766/609 +f 621/2780/611 623/312/612 624/2781/612 +f 622/313/611 626/2782/613 625/2783/613 +f 624/2781/612 616/2784/614 615/2785/614 +f 627/2786/615 617/1766/609 628/2787/615 +f 613/2788/607 619/2789/616 614/2790/607 +f 626/2791/613 628/1765/615 625/1764/613 +f 629/1773/617 631/2792/618 632/1774/618 +f 634/2793/619 636/320/620 633/1772/619 +f 638/319/621 640/2794/624 637/2795/621 +f 638/319/621 642/2796/623 641/2797/623 +f 640/2794/624 632/2798/618 631/2799/618 +f 634/2793/619 644/2800/625 643/2801/625 +f 629/2802/617 635/2803/620 630/2804/617 +f 642/2805/623 644/1771/625 641/1770/623 +f 650/2806/607 652/1779/614 649/1778/607 +f 653/1777/609 655/2807/616 656/323/616 +f 658/322/611 660/2808/612 657/2809/611 +f 661/2810/613 657/2809/611 662/2811/613 +f 660/2808/612 652/2812/614 651/2813/614 +f 663/2814/615 653/1777/609 664/2815/615 +f 649/2816/607 655/2807/616 650/2817/607 +f 662/2818/613 664/1776/615 661/1775/613 +f 666/2819/617 668/1785/618 665/1784/617 +f 670/2820/619 672/329/626 669/1783/627 +f 674/328/621 676/2821/624 673/2822/621 +f 677/2823/623 673/2822/621 678/2824/623 +f 676/2821/624 668/2825/618 667/2826/618 +f 670/2820/619 680/2827/625 679/2828/625 +f 665/2829/617 671/2830/628 666/2831/617 +f 677/1781/623 679/2832/625 680/1782/625 +f 686/1789/629 688/2833/630 685/1790/630 +f 690/1788/631 692/2834/632 689/330/633 +f 693/2835/634 695/1787/635 696/332/636 +f 697/2836/637 693/2835/634 696/332/636 +f 687/2837/629 695/1787/635 694/2838/638 +f 700/2839/639 692/2834/632 699/2840/640 +f 685/2841/630 691/2842/641 690/1788/631 +f 700/331/639 698/2843/642 697/1786/637 +f 702/1795/618 704/2844/617 701/1796/617 +f 706/1794/620 708/2845/619 705/336/619 +f 710/2846/624 712/338/621 709/2847/621 +f 714/2848/623 712/338/621 713/2849/623 +f 702/2850/618 710/2846/624 703/2851/618 +f 716/2852/625 708/2845/619 715/2853/625 +f 704/2854/617 706/1794/620 701/2855/617 +f 716/337/625 714/2856/623 713/1792/623 +f 722/1800/629 724/2857/630 721/1801/630 +f 725/339/632 727/2858/641 728/2859/632 +f 730/2860/635 732/341/636 729/2861/634 +f 733/2862/642 729/2861/634 732/341/636 +f 722/2863/629 730/2860/635 723/2864/629 +f 736/2865/640 728/2859/632 735/2866/643 +f 721/2867/630 727/2858/641 726/1799/641 +f 736/340/640 734/2868/644 733/1797/642 +f 737/1807/617 739/2869/618 740/2870/617 +f 742/1805/620 744/2871/619 741/345/619 +f 745/2872/621 747/1804/624 748/347/621 +f 749/2873/623 745/2872/621 748/347/621 +f 738/2874/618 746/2875/624 739/2876/618 +f 751/2877/625 741/345/619 744/2871/619 +f 740/2878/617 742/1805/620 737/2879/617 +f 752/346/625 750/2880/623 749/1803/623 +f 758/1811/629 760/2881/630 757/1812/630 +f 761/348/632 763/2882/641 764/2883/632 +f 766/2884/635 768/350/634 765/2885/634 +f 769/2886/637 765/2885/634 768/350/634 +f 758/2887/629 766/2884/635 759/2888/629 +f 772/2889/639 764/2883/632 771/2890/639 +f 757/2891/630 763/2882/641 762/1810/641 +f 772/349/639 770/2892/637 769/1808/637 +f 774/1817/618 776/2893/617 773/1818/617 +f 778/1816/620 780/2894/619 777/354/619 +f 782/2895/624 784/356/645 781/2896/645 +f 786/2897/623 784/356/645 785/2898/623 +f 774/2899/618 782/2895/624 775/2900/618 +f 787/2901/625 777/354/619 780/2894/619 +f 776/2902/617 778/1816/620 773/2903/617 +f 788/355/625 786/2904/623 785/1814/623 +f 816/2905/646 818/2906/647 815/2907/648 +f 818/2906/647 819/2908/649 820/2909/650 +f 820/2909/650 821/2910/651 822/2911/652 +f 822/2911/652 823/2912/653 824/2913/654 +f 830/2914/655 831/2915/656 826/2916/657 +f 833/2917/658 815/2907/648 832/2918/659 +f 834/2919/660 835/2920/661 836/2921/662 +f 835/2920/661 825/2922/663 836/2921/662 +f 832/2918/659 837/2923/664 835/2920/661 +f 835/2920/661 827/2924/665 826/2925/657 +f 815/2907/648 838/2926/666 837/2923/664 +f 837/2923/664 828/2927/667 827/2924/665 +f 820/2909/650 838/2926/666 818/2906/647 +f 839/2928/668 828/2927/667 838/2926/666 +f 822/2911/652 839/2928/668 820/2909/650 +f 840/2929/669 829/2930/670 839/2928/668 +f 824/2913/654 840/2929/669 822/2911/652 +f 840/2929/669 831/2931/656 830/2932/655 +f 842/2933/671 832/2918/659 834/2919/660 +f 842/2933/671 844/2934/672 833/2917/658 +f 843/2935/673 846/2936/674 844/2934/672 +f 833/2917/658 847/2937/675 816/2905/646 +f 844/2934/672 848/2938/676 847/2937/675 +f 816/2905/646 849/2939/677 817/2940/678 +f 847/2937/675 850/2941/679 849/2939/677 +f 819/2908/649 849/2939/677 851/2942/680 +f 851/2942/680 850/2941/679 852/2943/681 +f 821/2910/651 851/2942/680 853/2944/682 +f 853/2944/682 852/2943/681 854/2945/683 +f 823/2912/653 853/2944/682 855/2946/684 +f 855/2946/684 854/2945/683 856/2947/685 +f 852/2948/681 850/2949/679 848/2950/676 +f 858/2951/686 860/2952/687 857/2953/688 +f 860/2952/687 861/2954/689 862/2955/690 +f 862/2955/690 863/2956/691 864/2957/692 +f 864/2957/692 865/2958/693 866/2959/694 +f 872/2960/695 869/2961/696 871/2962/697 +f 875/2963/698 857/2953/688 874/2964/699 +f 876/2965/700 877/2966/701 878/2967/702 +f 877/2966/701 867/2968/703 878/2967/702 +f 874/2964/699 879/2969/704 877/2966/701 +f 877/2966/701 869/2970/696 868/2971/705 +f 857/2953/688 880/2972/706 879/2969/704 +f 879/2969/704 870/2973/707 869/2970/696 +f 862/2955/690 880/2972/706 860/2952/687 +f 881/2974/708 870/2973/707 880/2972/706 +f 864/2957/692 881/2974/708 862/2955/690 +f 882/2975/709 871/2976/697 881/2974/708 +f 866/2959/694 882/2975/709 864/2957/692 +f 882/2975/709 873/2977/710 872/2978/695 +f 884/2979/711 874/2964/699 876/2965/700 +f 884/2979/711 886/2980/712 875/2963/698 +f 885/2981/713 888/2982/714 886/2980/712 +f 875/2963/698 889/2983/715 858/2951/686 +f 886/2980/712 890/2984/716 889/2983/715 +f 858/2951/686 891/2985/717 859/2986/718 +f 889/2983/715 892/2987/719 891/2985/717 +f 861/2954/689 891/2985/717 893/2988/720 +f 893/2988/720 892/2987/719 894/2989/721 +f 863/2956/691 893/2988/720 895/2990/722 +f 895/2990/722 894/2989/721 896/2991/723 +f 865/2958/693 895/2990/722 897/2992/724 +f 897/2992/724 896/2991/723 898/2993/725 +f 894/2994/721 892/2995/719 890/2996/716 +f 900/2997/726 902/2998/727 899/2999/728 +f 902/2998/727 903/3000/729 904/3001/730 +f 904/3001/730 905/3002/731 906/3003/732 +f 906/3003/732 907/3004/733 908/3005/734 +f 914/3006/735 915/3007/736 910/3008/737 +f 917/3009/738 899/2999/728 916/3010/739 +f 918/3011/740 919/3012/741 920/3013/742 +f 919/3012/741 909/3014/743 920/3013/742 +f 916/3010/739 921/3015/744 919/3012/741 +f 919/3012/741 911/3016/745 910/3017/737 +f 899/2999/728 922/3018/746 921/3015/744 +f 921/3015/744 912/3019/747 911/3016/745 +f 904/3001/730 922/3018/746 902/2998/727 +f 923/3020/748 912/3019/747 922/3018/746 +f 906/3003/732 923/3020/748 904/3001/730 +f 924/3021/749 913/3022/750 923/3020/748 +f 908/3005/734 924/3021/749 906/3003/732 +f 924/3021/749 915/3023/736 914/3024/735 +f 926/3025/751 916/3010/739 918/3011/740 +f 926/3025/751 928/3026/752 917/3009/738 +f 927/3027/753 930/3028/754 928/3026/752 +f 917/3009/738 931/3029/755 900/2997/726 +f 928/3026/752 932/3030/756 931/3029/755 +f 900/2997/726 933/3031/757 901/3032/758 +f 931/3029/755 934/3033/759 933/3031/757 +f 903/3000/729 933/3031/757 935/3034/760 +f 935/3034/760 934/3033/759 936/3035/761 +f 905/3002/731 935/3034/760 937/3036/762 +f 937/3036/762 936/3035/761 938/3037/763 +f 907/3004/733 937/3036/762 939/3038/764 +f 939/3038/764 938/3037/763 940/3039/765 +f 936/3040/761 934/3041/759 932/3042/756 +f 958/3043/766 960/1834/767 957/1833/768 +f 961/1832/769 963/3044/770 964/416/770 +f 966/415/771 968/3045/772 965/3046/773 +f 969/3047/774 965/3046/773 970/3048/775 +f 959/3049/776 967/414/772 960/3050/767 +f 962/3051/777 972/3052/778 971/3053/778 +f 957/3054/768 963/3044/770 958/3055/766 +f 970/3056/775 972/1831/778 969/1830/774 +f 974/3057/779 976/1840/780 973/1839/779 +f 977/1838/781 979/3058/782 980/422/782 +f 982/421/783 984/3059/784 981/3060/785 +f 982/421/783 986/3061/786 985/3062/787 +f 975/3063/780 983/420/788 976/3064/780 +f 987/3065/789 977/1838/781 988/3066/789 +f 973/3067/779 979/3058/782 974/3068/779 +f 985/1836/787 987/3069/789 988/1837/789 +f 994/3070/768 996/1845/776 993/1844/768 +f 997/1843/790 999/3071/770 1000/425/770 +f 1001/3072/791 1003/423/772 1004/3073/772 +f 1002/424/791 1006/3074/774 1005/3075/774 +f 1004/3073/772 996/3076/776 995/3077/776 +f 1007/3078/778 997/1843/790 1008/3079/792 +f 1000/425/770 994/3080/768 993/3081/768 +f 1005/1841/774 1007/3082/778 1008/1842/792 +f 1009/1850/779 1011/3083/793 1012/1851/793 +f 1013/1849/781 1015/3084/782 1016/431/782 +f 1018/430/783 1020/3085/788 1017/3086/783 +f 1021/3087/794 1017/3086/783 1022/3088/794 +f 1011/3089/793 1019/429/788 1012/3090/793 +f 1023/3091/789 1013/1849/781 1024/3092/789 +f 1009/3093/779 1015/3084/782 1010/3094/779 +f 1022/3095/794 1024/1848/789 1021/1847/794 +f 1030/3096/768 1032/1856/776 1029/1855/768 +f 1033/1854/769 1035/3097/770 1036/434/770 +f 1038/433/791 1040/3098/772 1037/3099/773 +f 1041/3100/774 1037/3099/773 1042/3101/774 +f 1040/3098/772 1032/3102/776 1031/3103/776 +f 1043/3104/778 1033/1854/769 1044/3105/795 +f 1036/434/770 1030/3106/768 1029/3107/768 +f 1042/3108/774 1044/1853/795 1041/1852/774 +f 1046/3109/796 1048/1862/780 1045/1861/797 +f 1049/1860/798 1051/3110/799 1052/440/799 +f 1054/439/783 1056/3111/788 1053/3112/783 +f 1057/3113/787 1053/3112/783 1058/3114/787 +f 1047/3115/780 1055/438/788 1048/3116/780 +f 1050/3117/798 1060/3118/789 1059/3119/789 +f 1045/3120/797 1051/3110/799 1046/3121/796 +f 1057/1858/787 1059/3122/789 1060/1859/789 +f 1066/1866/800 1068/3123/801 1065/1867/801 +f 1070/1865/802 1072/3124/803 1069/441/804 +f 1073/3125/805 1075/1864/806 1076/443/805 +f 1077/3126/807 1073/3125/805 1076/443/805 +f 1067/3127/800 1075/1864/806 1074/3128/806 +f 1080/3129/808 1072/3124/803 1079/3130/808 +f 1065/3131/801 1071/3132/809 1070/1865/802 +f 1080/442/808 1078/3133/807 1077/1863/807 +f 1082/1872/780 1084/3134/779 1081/1873/779 +f 1086/1871/782 1088/3135/781 1085/447/781 +f 1090/3136/788 1092/449/783 1089/3137/783 +f 1094/3138/794 1092/449/783 1093/3139/794 +f 1082/3140/780 1090/3136/788 1083/3141/780 +f 1096/3142/789 1088/3135/781 1095/3143/789 +f 1081/3144/779 1087/3145/782 1086/1871/782 +f 1096/448/789 1094/3146/794 1093/1869/794 +f 1102/1877/800 1104/3147/801 1101/1878/801 +f 1105/450/803 1107/3148/809 1108/3149/803 +f 1110/3150/810 1112/452/811 1109/3151/805 +f 1113/3152/807 1109/3151/805 1112/452/811 +f 1102/3153/800 1110/3150/810 1103/3154/800 +f 1116/3155/808 1108/3149/803 1115/3156/808 +f 1101/3157/801 1107/3148/809 1106/1876/809 +f 1116/451/808 1114/3158/807 1113/1874/807 +f 1117/1884/796 1119/3159/793 1120/3160/797 +f 1122/1882/799 1124/3161/781 1121/456/781 +f 1125/3162/783 1127/1881/788 1128/458/783 +f 1129/3163/794 1125/3162/783 1128/458/783 +f 1118/3164/780 1126/3165/788 1119/3166/793 +f 1131/3167/789 1121/456/781 1124/3161/781 +f 1120/3168/797 1122/1882/799 1117/3169/796 +f 1132/457/789 1130/3170/794 1129/1880/794 +f 1138/1888/800 1140/3171/801 1137/1889/801 +f 1141/459/803 1143/3172/809 1144/3173/803 +f 1146/3174/806 1148/461/805 1145/3175/805 +f 1149/3176/807 1145/3175/805 1148/461/805 +f 1138/3177/800 1146/3174/806 1139/3178/800 +f 1152/3179/808 1144/3173/803 1151/3180/808 +f 1137/3181/801 1143/3172/809 1142/1887/809 +f 1152/460/808 1150/3182/807 1149/1885/807 +f 1154/1894/780 1156/3183/779 1153/1895/779 +f 1157/465/781 1159/3184/782 1160/3185/781 +f 1162/3186/788 1164/467/812 1161/3187/813 +f 1166/3188/787 1164/467/812 1165/3189/787 +f 1154/3190/780 1162/3186/788 1155/3191/780 +f 1167/3192/814 1157/465/781 1160/3185/781 +f 1156/3193/779 1158/1893/782 1153/3194/779 +f 1168/466/814 1166/3195/787 1165/1891/787 +f 1196/3196/815 1198/1907/816 1195/1906/815 +f 1199/1905/817 1201/3197/818 1202/507/819 +f 1204/506/820 1206/3198/821 1203/3199/820 +f 1207/3200/822 1203/3199/820 1208/3201/822 +f 1197/3202/816 1205/505/821 1198/3203/816 +f 1200/3204/817 1210/3205/823 1209/3206/823 +f 1195/3207/815 1201/3197/818 1196/3208/815 +f 1208/3209/822 1210/1904/823 1207/1903/822 +f 1212/3210/824 1214/1913/825 1211/1912/824 +f 1215/1911/826 1217/3211/827 1218/513/827 +f 1220/512/828 1222/3212/829 1219/3213/830 +f 1220/512/828 1224/3214/831 1223/3215/831 +f 1213/3216/832 1221/511/833 1214/3217/825 +f 1216/3218/826 1226/3219/834 1225/3220/834 +f 1218/513/827 1212/3221/824 1211/3222/824 +f 1223/1909/831 1225/3223/834 1226/1910/834 +f 1232/3224/815 1234/1918/816 1231/1917/815 +f 1235/1916/817 1237/3225/835 1238/516/818 +f 1239/3226/820 1241/514/821 1242/3227/821 +f 1240/515/820 1244/3228/822 1243/3229/822 +f 1242/3227/821 1234/3230/816 1233/3231/816 +f 1245/3232/823 1235/1916/817 1246/3233/823 +f 1231/3234/815 1237/3225/835 1232/3235/815 +f 1244/3236/822 1246/1915/823 1243/1914/822 +f 1247/1923/824 1249/3237/836 1250/1924/836 +f 1251/1922/826 1253/3238/837 1254/522/837 +f 1256/521/828 1258/3239/833 1255/3240/828 +f 1256/521/828 1260/3241/831 1259/3242/831 +f 1258/3239/833 1250/3243/836 1249/3244/836 +f 1261/3245/834 1251/1922/826 1262/3246/834 +f 1247/3247/824 1253/3238/837 1248/3248/824 +f 1260/3249/831 1262/1921/834 1259/1920/831 +f 1268/3250/815 1270/1929/816 1267/1928/815 +f 1271/1927/817 1273/3251/835 1274/525/835 +f 1276/524/820 1278/3252/821 1275/3253/820 +f 1279/3254/822 1275/3253/820 1280/3255/822 +f 1278/3252/821 1270/3256/816 1269/3257/816 +f 1281/3258/823 1271/1927/817 1282/3259/823 +f 1267/3260/815 1273/3251/835 1268/3261/815 +f 1280/3262/822 1282/1926/823 1279/1925/822 +f 1284/3263/824 1286/1935/836 1283/1934/824 +f 1287/1933/826 1289/3264/837 1290/531/837 +f 1292/530/828 1294/3265/833 1291/3266/828 +f 1295/3267/831 1291/3266/828 1296/3268/831 +f 1285/3269/836 1293/529/833 1286/3270/836 +f 1288/3271/826 1298/3272/838 1297/3273/839 +f 1283/3274/824 1289/3264/837 1284/3275/824 +f 1295/1931/831 1297/3276/839 1298/1932/838 +f 1304/1939/840 1306/3277/841 1303/1940/841 +f 1308/1938/842 1310/3278/843 1307/532/843 +f 1311/3279/844 1313/1937/845 1314/534/846 +f 1315/3280/847 1311/3279/844 1314/534/846 +f 1305/3281/840 1313/1937/845 1312/3282/845 +f 1318/3283/848 1310/3278/843 1317/3284/848 +f 1303/3285/841 1309/3286/849 1308/1938/842 +f 1318/533/848 1316/3287/847 1315/1936/847 +f 1320/1945/832 1322/3288/824 1319/1946/824 +f 1324/1944/827 1326/3289/826 1323/538/826 +f 1327/3290/850 1329/1943/851 1330/540/852 +f 1332/3291/853 1330/540/852 1331/3292/831 +f 1320/3293/832 1328/3294/854 1321/3295/836 +f 1334/3296/834 1326/3289/826 1333/3297/834 +f 1319/3298/824 1325/3299/827 1324/1944/827 +f 1334/539/834 1332/3300/853 1331/1942/831 +f 1340/1950/840 1342/3301/855 1339/1951/841 +f 1343/541/843 1345/3302/849 1346/3303/856 +f 1348/3304/857 1350/543/846 1347/3305/858 +f 1351/3306/847 1347/3305/858 1350/543/846 +f 1340/3307/840 1348/3304/857 1341/3308/840 +f 1354/3309/848 1346/3303/856 1353/3310/859 +f 1339/3311/841 1345/3302/849 1344/1949/849 +f 1354/542/848 1352/3312/847 1351/1947/847 +f 1355/1957/824 1357/3313/836 1358/3314/824 +f 1360/1955/827 1362/3315/826 1359/547/826 +f 1363/3316/828 1365/1954/833 1366/549/828 +f 1367/3317/853 1363/3316/828 1366/549/828 +f 1356/3318/836 1364/3319/833 1357/3320/836 +f 1370/3321/839 1362/3315/826 1369/3322/839 +f 1358/3323/824 1360/1955/827 1355/3324/824 +f 1370/548/839 1368/3325/853 1367/1953/853 +f 1376/1961/840 1378/3326/841 1375/1962/841 +f 1379/550/843 1381/3327/849 1382/3328/856 +f 1384/3329/845 1386/552/860 1383/3330/861 +f 1387/3331/862 1383/3330/861 1386/552/860 +f 1376/3332/840 1384/3329/845 1377/3333/840 +f 1390/3334/848 1382/3328/856 1389/3335/848 +f 1378/3336/841 1380/1960/849 1375/3337/841 +f 1390/551/848 1388/3338/862 1387/1958/862 +f 1392/1967/836 1394/3339/824 1391/1968/824 +f 1396/1966/827 1398/3340/826 1395/556/826 +f 1399/3341/828 1401/1965/833 1402/558/828 +f 1403/3342/831 1399/3341/828 1402/558/828 +f 1393/3343/836 1401/1965/833 1400/3344/833 +f 1405/3345/834 1395/556/826 1398/3340/826 +f 1394/3346/824 1396/1966/827 1391/3347/824 +f 1406/557/834 1404/3348/831 1403/1964/831 +f 1505/3349/110 1507/3350/863 1504/3351/110 +f 1508/3352/1 1498/678/864 1497/1997/1 +f 1511/687/865 1513/2001/3 1510/2009/3 +f 1514/3353/110 1499/3354/866 1515/3355/866 +f 1517/683/864 1519/3356/866 1516/3357/864 +f 1502/680/865 1521/3358/867 1520/684/865 +f 1512/681/865 1507/3350/863 1506/3359/868 +f 1498/678/864 1515/3355/866 1499/3354/866 +f 1505/3360/110 1519/3356/866 1518/3361/866 +f 1502/680/865 1523/2007/3 1503/1996/3 +f 1522/2000/1 1516/3357/864 1524/3362/1 +f 1500/3363/110 1521/3358/867 1501/3364/868 +f 1597/3365/130 1599/3366/869 1596/3367/130 +f 1600/3368/1 1590/773/870 1589/2032/1 +f 1602/2044/3 1604/776/871 1605/2036/3 +f 1606/3369/130 1591/3370/872 1607/3371/873 +f 1609/778/870 1611/3372/873 1608/3373/870 +f 1594/775/874 1613/3374/869 1612/779/875 +f 1604/776/871 1599/3366/869 1598/3375/869 +f 1590/773/870 1607/3371/873 1591/3370/872 +f 1597/3376/130 1611/3372/873 1610/3377/873 +f 1594/775/874 1615/2042/3 1595/2031/3 +f 1609/778/870 1616/3378/1 1614/2035/1 +f 1592/3379/130 1613/3374/869 1593/3380/876 +f 1689/3381/28 1691/3382/877 1688/3383/28 +f 1692/3384/1 1682/867/878 1681/2068/1 +f 1695/876/879 1697/2072/3 1694/2080/3 +f 1698/3385/28 1683/3386/880 1699/3387/880 +f 1701/872/878 1703/3388/881 1700/3389/878 +f 1686/869/879 1705/3390/877 1704/873/882 +f 1696/870/883 1691/3382/877 1690/3391/877 +f 1682/867/878 1699/3387/880 1683/3386/880 +f 1689/3392/28 1703/3388/881 1702/3393/881 +f 1686/869/879 1707/2078/3 1687/2067/3 +f 1706/2071/1 1700/3389/878 1708/3394/1 +f 1684/3395/28 1705/3390/877 1685/3396/877 +f 1780/3397/105 1782/3398/884 1783/3399/884 +f 1784/3400/1 1774/962/885 1773/2103/1 +f 1787/971/886 1789/2107/3 1786/2115/3 +f 1790/3401/105 1775/3402/887 1791/3403/887 +f 1793/967/885 1795/3404/887 1792/3405/885 +f 1778/964/886 1797/3406/888 1796/968/886 +f 1788/965/886 1783/3399/884 1782/3398/884 +f 1774/962/885 1791/3403/887 1775/3402/887 +f 1781/3407/105 1795/3404/887 1794/3408/887 +f 1778/964/886 1799/2113/3 1779/2102/3 +f 1798/2106/1 1792/3405/885 1800/3409/1 +f 1776/3410/105 1797/3406/888 1777/3411/884 +f 1873/3412/125 1875/3413/889 1872/3414/125 +f 1876/3415/1 1866/1056/890 1865/2139/1 +f 1879/1065/891 1881/2143/3 1878/2151/3 +f 1882/3416/125 1867/3417/892 1883/3418/892 +f 1885/1061/890 1887/3419/893 1884/3420/894 +f 1870/1058/895 1889/3421/889 1888/1062/891 +f 1880/1059/891 1875/3413/889 1874/3422/889 +f 1866/1056/890 1883/3418/892 1867/3417/892 +f 1873/3423/125 1887/3419/893 1886/3424/893 +f 1870/1058/895 1891/2149/3 1871/2138/3 +f 1890/2142/1 1884/3420/894 1892/3425/1 +f 1868/3426/125 1889/3421/889 1869/3427/889 +f 1965/3428/143 1967/3429/896 1964/3430/143 +f 1968/3431/1 1958/1151/897 1957/2174/1 +f 1971/1160/898 1973/2178/3 1970/2186/3 +f 1974/3432/143 1959/3433/899 1975/3434/900 +f 1977/1156/901 1979/3435/899 1976/3436/901 +f 1962/1153/898 1981/3437/896 1980/1157/902 +f 1972/1154/898 1967/3429/896 1966/3438/896 +f 1958/1151/897 1975/3434/900 1959/3433/899 +f 1965/3439/143 1979/3435/899 1978/3440/899 +f 1962/1153/898 1983/2184/3 1963/2173/3 +f 1982/2177/1 1976/3436/901 1984/3441/1 +f 1960/3442/143 1981/3437/896 1961/3443/896 +f 2057/3444/160 2059/3445/903 2056/3446/160 +f 2060/3447/1 2050/1245/904 2049/2210/1 +f 2063/1254/905 2065/2214/3 2062/2222/3 +f 2066/3448/160 2051/3449/906 2067/3450/906 +f 2069/1250/904 2071/3451/906 2068/3452/904 +f 2054/1247/905 2073/3453/907 2072/1251/905 +f 2064/1248/905 2059/3445/903 2058/3454/903 +f 2050/1245/904 2067/3450/906 2051/3449/906 +f 2057/3455/160 2071/3451/906 2070/3456/906 +f 2054/1247/905 2075/2220/3 2055/2209/3 +f 2074/2213/1 2068/3452/904 2076/3457/1 +f 2052/3458/160 2073/3453/907 2053/3459/903 +f 2149/3460/178 2151/3461/908 2148/3462/178 +f 2152/3463/1 2142/1339/909 2141/2246/1 +f 2155/1348/910 2157/2250/3 2154/2258/3 +f 2158/3464/178 2143/3465/911 2159/3466/911 +f 2161/1344/909 2163/3467/912 2160/3468/909 +f 2146/1341/910 2165/3469/908 2164/1345/913 +f 2156/1342/914 2151/3461/908 2150/3470/915 +f 2142/1339/909 2159/3466/911 2143/3465/911 +f 2149/3471/178 2163/3467/912 2162/3472/912 +f 2146/1341/910 2167/2256/3 2147/2245/3 +f 2166/2249/1 2160/3468/909 2168/3473/1 +f 2144/3474/178 2165/3469/908 2145/3475/916 +f 2241/3476/27 2243/3477/917 2240/3478/27 +f 2244/3479/1 2234/1433/918 2233/2282/1 +f 2247/1442/919 2249/2286/3 2246/2294/3 +f 2250/3480/27 2235/3481/920 2251/3482/920 +f 2253/1438/918 2255/3483/921 2252/3484/918 +f 2238/1435/922 2257/3485/917 2256/1439/923 +f 2248/1436/924 2243/3477/917 2242/3486/917 +f 2234/1433/918 2251/3482/920 2235/3481/920 +f 2241/3487/27 2255/3483/921 2254/3488/921 +f 2238/1435/922 2259/2292/3 2239/2281/3 +f 2258/2285/1 2252/3484/918 2260/3489/1 +f 2236/3490/27 2257/3485/917 2237/3491/917 +f 2333/3492/104 2335/3493/925 2332/3494/104 +f 2336/3495/1 2326/1529/926 2325/2316/1 +f 2339/1538/927 2341/2320/3 2338/2328/3 +f 2342/3496/104 2327/3497/928 2343/3498/928 +f 2345/1534/926 2347/3499/928 2344/3500/926 +f 2330/1531/927 2349/3501/925 2348/1535/927 +f 2340/1532/927 2335/3493/925 2334/3502/925 +f 2326/1529/926 2343/3498/928 2327/3497/928 +f 2333/3503/104 2347/3499/928 2346/3504/928 +f 2330/1531/927 2351/2326/3 2331/2315/3 +f 2350/2319/1 2344/3500/926 2352/3505/1 +f 2328/3506/104 2349/3501/925 2329/3507/925 +f 2425/3508/124 2427/3509/929 2424/3510/124 +f 2428/3511/1 2418/1625/930 2417/2350/1 +f 2431/1634/931 2433/2354/3 2430/2362/3 +f 2434/3512/124 2419/3513/932 2435/3514/932 +f 2437/1630/930 2439/3515/933 2436/3516/934 +f 2422/1627/931 2441/3517/929 2440/1631/935 +f 2432/1628/935 2427/3509/929 2426/3518/929 +f 2418/1625/930 2435/3514/932 2419/3513/932 +f 2425/3519/124 2439/3515/933 2438/3520/933 +f 2422/1627/931 2443/2360/3 2423/2349/3 +f 2442/2353/1 2436/3516/934 2444/3521/1 +f 2420/3522/124 2441/3517/929 2421/3523/929 +f 2/2365/334 3/2400/366 4/2366/335 +f 4/2366/335 3/2400/366 5/2368/337 +f 6/2369/338 5/2368/337 7/2370/339 +f 8/2371/340 7/2370/339 9/2372/341 +f 17/3524/358 11/3525/351 16/2374/343 +f 11/3525/351 12/3526/353 16/2374/343 +f 12/3526/353 13/2375/344 16/2374/343 +f 13/2375/344 14/3527/355 15/2376/345 +f 19/2377/346 2/2365/334 1/2367/336 +f 20/2379/348 18/2378/347 21/2380/349 +f 21/2380/349 12/2385/353 11/2382/351 +f 18/2378/347 1/2367/336 23/2383/352 +f 21/2380/349 23/2383/352 13/2384/344 +f 1/2367/336 4/2366/335 24/2386/354 +f 23/2383/352 24/2386/354 14/2387/355 +f 6/2369/338 25/2388/356 24/2386/354 +f 25/2388/356 15/2390/345 14/2387/355 +f 8/2371/340 26/2389/357 25/2388/356 +f 26/2389/357 16/2392/343 15/2390/345 +f 10/2373/342 27/3528/936 26/2389/357 +f 26/2389/357 27/3528/936 17/2391/358 +f 28/2393/359 19/2377/346 18/2378/347 +f 28/2393/359 29/2395/361 30/2394/360 +f 29/2395/361 31/3529/937 32/2396/362 +f 19/2377/346 30/2394/360 33/2397/363 +f 30/2394/360 32/2396/362 34/2398/364 +f 2/2365/334 33/2397/363 35/2399/365 +f 33/2397/363 34/2398/364 36/2401/367 +f 5/2368/337 3/2400/366 35/2399/365 +f 37/2402/368 35/2399/365 36/2401/367 +f 7/2370/339 5/2368/337 37/2402/368 +f 39/2404/370 37/2402/368 38/2403/369 +f 9/2372/341 7/2370/339 39/2404/370 +f 41/2406/372 39/2404/370 40/2405/371 +f 34/2410/364 32/3530/362 40/3531/371 +f 32/3530/362 31/3532/937 40/3531/371 +f 31/3532/937 42/3533/373 40/3531/371 +f 40/3531/371 38/2408/369 34/2410/364 +f 72/2411/374 73/2455/417 74/2412/375 +f 74/2412/375 73/2455/417 75/2414/377 +f 75/2414/377 77/2417/380 78/2416/379 +f 77/2417/380 79/2419/382 80/2418/381 +f 79/2419/382 81/2475/384 82/2420/383 +f 81/2421/384 83/2424/386 84/2422/385 +f 83/2424/386 85/2426/388 86/2425/387 +f 85/2426/388 87/2453/415 88/2427/389 +f 88/2427/389 87/2453/415 89/2428/390 +f 89/2428/390 91/2462/424 92/2430/392 +f 92/2430/392 91/2462/424 93/2431/393 +f 95/2433/395 96/2456/418 97/2434/396 +f 97/2434/396 99/2437/399 100/2436/398 +f 99/2437/399 101/2439/401 102/2438/400 +f 101/2439/401 103/2464/426 104/2440/402 +f 104/2440/402 103/2464/426 105/2441/403 +f 105/2441/403 107/2458/420 108/2443/405 +f 77/2417/380 75/2414/377 109/2444/406 +f 112/2446/408 72/2411/374 71/2413/376 +f 78/2416/379 80/2418/381 113/2448/410 +f 116/2450/412 117/3534/456 118/2451/413 +f 85/2426/388 116/2450/412 115/2452/414 +f 72/2411/374 119/2478/436 120/2454/416 +f 96/2456/418 121/2472/433 122/2457/419 +f 107/2458/420 105/2441/403 123/2459/421 +f 81/2421/384 125/2502/434 126/2461/423 +f 91/2462/424 127/2476/435 128/2463/425 +f 103/2464/426 101/2439/401 129/2465/427 +f 77/2417/380 110/3535/407 131/2467/429 +f 87/2453/415 115/2452/414 132/2468/430 +f 97/2434/396 122/2504/419 133/2469/431 +f 107/2458/420 124/2460/422 134/2470/432 +f 73/2455/417 120/2485/416 109/2444/406 +f 85/2426/388 83/2424/386 126/2461/423 +f 93/2431/393 128/2497/425 121/2472/433 +f 105/2441/403 103/2464/426 130/2466/428 +f 79/2419/382 131/2467/429 125/2474/434 +f 89/2428/390 132/2488/430 127/2476/435 +f 101/2439/401 99/2437/399 133/2469/431 +f 112/2446/408 134/2499/432 119/2478/436 +f 135/2479/437 136/2495/449 137/2480/438 +f 119/2478/436 139/2500/452 140/2482/440 +f 129/2465/427 141/3536/457 142/2483/441 +f 115/2452/414 118/2451/413 143/2484/442 +f 120/2485/416 140/2524/440 144/2486/443 +f 130/2466/428 142/2483/441 145/2487/444 +f 132/2488/430 143/2527/442 146/2489/445 +f 109/2444/406 144/2486/443 147/2490/446 +f 124/2460/422 123/2459/421 145/2491/444 +f 127/2476/435 146/2489/445 149/2493/448 +f 131/2467/429 110/3535/407 147/2494/446 +f 124/2460/422 148/2492/447 150/2496/450 +f 128/2497/425 149/3537/448 151/2498/451 +f 125/2474/434 131/2467/429 136/2495/449 +f 134/2499/432 150/2511/450 139/2500/452 +f 122/2457/419 121/2472/433 151/2498/451 +f 125/2502/434 135/2514/437 153/2503/454 +f 122/2504/419 152/3538/453 154/2505/455 +f 116/2471/412 126/2461/423 153/2503/454 +f 133/2469/431 154/2505/455 141/2507/457 +f 156/2508/458 157/2567/477 158/2509/459 +f 150/2511/450 159/3539/475 160/2512/461 +f 151/2498/451 161/2536/476 162/2513/462 +f 135/2514/437 138/3540/439 163/2515/463 +f 154/2505/455 152/3538/453 162/2516/462 +f 117/2506/456 153/2503/454 163/2515/463 +f 141/2507/457 154/2505/455 156/2508/458 +f 118/2451/413 117/3534/456 164/2518/464 +f 140/2482/440 139/2500/452 160/2512/461 +f 142/2483/441 141/3536/457 155/2521/460 +f 143/2484/442 118/2451/413 165/2519/465 +f 140/2524/440 166/3541/466 169/2525/469 +f 142/2483/441 167/2522/467 170/2526/470 +f 143/2527/442 168/3542/468 171/2528/471 +f 144/2486/443 169/2525/469 172/2529/472 +f 148/2492/447 145/2491/444 170/2530/470 +f 146/2489/445 171/2528/471 174/2532/474 +f 136/2495/449 147/2494/446 172/2533/472 +f 148/2492/447 173/2531/473 159/2534/475 +f 151/2498/451 149/3537/448 174/2535/474 +f 192/3543/485 175/3544/482 176/3545/494 +f 176/3545/494 177/3546/491 178/3547/488 +f 178/3547/488 179/3548/486 180/3549/483 +f 180/3549/483 158/3550/459 157/2537/477 +f 157/2537/477 181/3551/495 184/2538/478 +f 181/3551/495 182/3552/492 184/2538/478 +f 182/3552/492 183/3553/489 184/2538/478 +f 184/2538/478 185/3554/484 186/3555/481 +f 186/3555/481 187/3556/480 188/2539/479 +f 188/2539/479 189/3557/493 190/3558/490 +f 190/3558/490 191/3559/487 192/3543/485 +f 192/3543/485 176/3545/494 157/2537/477 +f 176/3545/494 178/3547/488 157/2537/477 +f 178/3547/488 180/3549/483 157/2537/477 +f 184/2538/478 186/3555/481 188/2539/479 +f 188/2539/479 190/3558/490 157/2537/477 +f 190/3558/490 192/3543/485 157/2537/477 +f 165/2519/465 164/2518/464 187/2540/480 +f 160/2512/461 176/2562/494 175/2542/482 +f 167/2522/467 155/2521/460 158/2543/459 +f 168/2523/468 165/2519/465 186/2541/481 +f 169/2525/469 166/3541/466 175/2546/482 +f 167/2522/467 180/2544/483 179/2548/486 +f 171/2528/471 168/3542/468 185/2549/484 +f 169/2525/469 192/2547/485 191/2551/487 +f 173/2531/473 170/2530/470 179/2552/486 +f 171/2528/471 184/2550/478 183/2554/489 +f 137/2480/438 172/2533/472 191/2555/487 +f 173/2531/473 178/2553/488 177/2557/491 +f 161/2536/476 174/2535/474 183/2558/489 +f 137/2480/438 190/2556/490 189/2560/493 +f 160/2512/461 159/3539/475 177/2561/491 +f 161/2536/476 182/2559/492 181/2563/495 +f 163/2515/463 138/3540/439 189/2564/493 +f 156/2508/458 162/2516/462 181/2566/495 +f 163/2515/463 188/2565/479 187/2568/480 +f 194/2569/496 195/71/68 196/66/497 +f 90/2429/391 197/2590/507 198/2571/499 +f 100/2436/398 193/2570/498 199/2572/500 +f 111/2447/409 200/2593/508 201/2573/501 +f 76/2415/378 202/2581/509 203/2574/502 +f 84/2422/385 86/2425/387 204/2575/503 +f 95/2433/395 206/2585/511 207/2577/505 +f 106/2442/404 208/3560/512 209/2578/506 +f 82/2420/383 210/3561/513 113/2448/410 +f 92/2430/392 211/2588/514 197/2579/507 +f 102/2438/400 194/2569/496 193/2570/498 +f 71/2413/376 212/2584/510 200/2580/508 +f 78/2416/379 114/2591/411 202/2581/509 +f 88/2427/389 198/2571/499 204/2582/503 +f 71/2413/376 74/2412/375 203/2583/502 +f 98/2435/397 199/3562/500 206/2585/511 +f 108/2443/405 201/2573/501 208/2586/512 +f 84/2422/385 205/2576/504 210/2587/513 +f 94/2432/394 207/2592/505 211/2588/514 +f 104/2440/402 209/2578/506 194/2589/496 +f 198/2571/499 217/73/517 218/75/515 +f 203/2583/502 219/1652/518 220/58/64 +f 194/2589/496 209/2578/506 213/36/516 +f 197/2590/507 221/80/520 217/73/517 +f 202/2581/509 222/42/521 219/82/518 +f 209/2578/506 208/3560/512 214/34/519 +f 197/2579/507 211/2588/514 223/37/61 +f 114/2591/411 224/40/522 222/42/521 +f 201/2573/501 225/43/523 214/45/519 +f 207/2592/505 226/1646/525 223/37/61 +f 113/2448/410 227/48/526 224/50/522 +f 200/2593/508 228/51/527 225/43/523 +f 207/2577/505 206/2585/511 229/62/524 +f 113/2448/410 210/3561/513 230/56/69 +f 200/2580/508 212/2584/510 220/58/64 +f 206/2585/511 199/3562/500 231/61/528 +f 205/2576/504 232/69/529 230/63/69 +f 193/2570/498 196/66/497 231/68/528 +f 204/2575/503 218/1650/515 232/69/529 +f 112/2446/408 111/2447/409 108/2443/405 +f 96/2456/418 95/2433/395 94/2432/394 +f 234/1647/520 235/3563/520 236/2594/517 +f 243/54/521 265/2599/521 264/2595/518 +f 242/57/497 244/1648/68 258/2596/68 +f 245/77/61 253/2606/61 235/2598/520 +f 246/1649/522 266/3564/522 265/2599/521 +f 247/64/516 259/2604/516 258/2600/68 +f 246/67/522 248/72/526 267/2601/526 +f 247/64/516 249/70/519 260/2603/519 +f 250/1651/69 268/3565/69 267/2601/526 +f 251/81/523 261/2608/523 260/2605/519 +f 252/76/525 254/3566/525 253/2606/61 +f 216/35/529 269/2610/529 268/2607/69 +f 238/1653/527 262/3567/527 261/2608/523 +f 240/41/524 255/2612/524 254/2609/525 +f 215/1644/515 270/3568/515 269/2610/529 +f 237/47/64 263/2614/64 262/2611/527 +f 239/1645/528 256/3569/528 255/2612/524 +f 215/44/515 233/52/517 236/2594/517 +f 241/46/518 264/3570/518 263/2614/64 +f 242/57/497 257/2597/497 256/2615/528 +f 272/2616/530 273/2622/534 274/2617/160 +f 276/2619/531 277/2625/536 278/2620/532 +f 272/2616/530 275/2621/533 278/2620/532 +f 274/2617/160 273/2622/534 279/2623/535 +f 277/2625/536 281/3571/552 282/2626/537 +f 273/2622/534 278/2620/532 282/2626/537 +f 279/2627/535 283/2633/540 284/2628/105 +f 282/2630/537 281/3572/552 285/2631/538 +f 279/2627/535 282/2630/537 286/2632/539 +f 284/2628/105 283/2633/540 287/2634/541 +f 286/2632/539 285/2631/538 289/2636/542 +f 286/2632/539 290/2637/543 287/2634/541 +f 287/2634/541 290/2637/543 291/2638/544 +f 287/2634/541 292/2639/545 293/2640/110 +f 290/2637/543 289/2636/542 294/2641/546 +f 291/2638/544 295/2645/549 296/2642/547 +f 292/2639/545 296/2642/547 297/2643/68 +f 291/2638/544 294/2641/546 298/2644/548 +f 296/2642/547 295/2645/549 299/2646/550 +f 281/2650/552 277/3573/536 276/3574/531 +f 276/3574/531 301/3575/938 281/2650/552 +f 301/3575/938 298/3576/548 281/2650/552 +f 298/3576/548 294/3577/546 281/2650/552 +f 294/3577/546 289/2648/542 281/2650/552 +f 296/2642/547 300/2647/551 302/2651/104 +f 298/2644/548 301/3578/938 299/2646/550 +f 300/2647/551 272/2616/530 271/2618/64 +f 299/2646/550 301/3578/938 276/2619/531 +f 299/2646/550 275/2621/533 272/2616/530 +f 304/2652/530 305/2658/534 306/2653/160 +f 308/2655/531 309/2660/536 310/2656/532 +f 304/2652/530 307/2657/533 310/2656/532 +f 305/2658/534 311/2662/535 312/2659/69 +f 309/2660/536 313/3579/552 314/2661/537 +f 310/2656/532 314/2661/537 311/2662/535 +f 311/2663/535 315/2669/540 316/2664/105 +f 313/2666/552 317/3580/538 318/2667/539 +f 314/2668/537 318/2667/539 315/2669/540 +f 316/2664/105 315/2669/540 319/2670/541 +f 318/2667/539 317/3580/538 321/2672/542 +f 315/2669/540 318/2667/539 322/2673/543 +f 322/2673/543 323/2676/544 324/2674/545 +f 320/2671/61 319/2670/541 324/2674/545 +f 321/2672/542 326/3581/546 323/2676/544 +f 323/2676/544 327/2680/549 328/2677/547 +f 324/2674/545 328/2677/547 329/2678/68 +f 323/2676/544 326/3581/546 330/2679/548 +f 328/2677/547 327/2680/549 331/2681/550 +f 313/2685/552 309/3582/536 308/3583/531 +f 308/3583/531 333/3584/938 313/2685/552 +f 333/3584/938 330/3585/548 313/2685/552 +f 330/3585/548 326/3586/546 313/2685/552 +f 326/3586/546 321/2683/542 313/2685/552 +f 328/2677/547 332/2682/551 334/2686/104 +f 330/2679/548 333/3587/938 331/2681/550 +f 334/2686/104 332/2682/551 304/2652/530 +f 331/2681/550 333/3587/938 308/2655/531 +f 332/2682/551 331/2681/550 307/2657/533 +f 364/131/553 365/135/554 366/2687/554 +f 365/135/554 367/140/555 368/2689/555 +f 368/2689/555 367/140/555 369/136/556 +f 369/136/556 371/127/557 372/2691/557 +f 372/2691/557 371/127/557 373/128/558 +f 373/128/558 375/124/559 376/2693/559 +f 376/2694/559 375/1681/559 377/122/560 +f 377/122/560 379/117/562 380/2696/562 +f 379/117/562 381/119/563 382/2697/563 +f 382/2697/563 381/119/563 383/138/564 +f 383/138/564 387/139/565 388/2699/565 +f 388/2699/565 387/139/565 364/131/553 +f 390/133/566 391/2704/566 392/2700/567 +f 393/120/568 405/2710/568 404/2701/569 +f 395/125/570 396/130/571 408/2702/571 +f 398/132/572 401/2711/572 391/2704/566 +f 389/134/567 392/2700/567 410/2705/573 +f 385/121/569 404/2701/569 403/2706/3 +f 394/126/575 395/125/570 407/2703/570 +f 397/129/1 399/137/574 410/2705/573 +f 386/118/3 403/2706/3 402/2709/576 +f 394/123/575 406/3588/575 405/2710/568 +f 396/130/571 397/129/1 409/2708/1 +f 400/141/576 402/2709/576 401/2711/572 +f 411/2712/577 412/2713/578 413/161/578 +f 412/2713/578 415/2714/579 416/162/579 +f 415/2714/579 417/2716/580 418/157/580 +f 419/2715/581 420/155/581 418/157/580 +f 419/2715/581 421/2718/582 422/152/582 +f 423/2717/583 424/153/583 422/152/582 +f 423/2719/583 425/2721/584 426/148/584 +f 427/2720/585 428/147/585 426/148/584 +f 427/2720/585 429/2722/586 430/145/586 +f 429/2722/586 431/2724/587 432/164/587 +f 435/2723/588 436/159/588 432/164/587 +f 435/2723/588 411/2712/577 414/160/577 +f 438/2725/589 439/3589/590 440/158/590 +f 434/146/591 455/2730/591 454/2726/592 +f 443/154/593 452/2731/593 451/2727/594 +f 440/158/590 439/3589/590 458/2728/595 +f 449/2729/596 438/2725/589 437/165/589 +f 433/1691/3 456/3590/3 455/2730/591 +f 442/151/597 453/3591/597 452/2731/593 +f 450/2732/1 449/2729/596 447/1695/596 +f 457/2733/598 456/3590/3 433/1691/3 +f 441/1692/592 454/2726/592 453/2734/597 +f 451/2727/594 450/2732/1 445/156/1 +f 446/1694/595 458/2728/595 457/2733/598 +f 531/2735/33 532/2745/599 533/2736/599 +f 534/2738/1 535/3592/600 524/252/600 +f 537/261/601 538/255/606 539/1729/3 +f 540/2739/33 526/3593/33 525/2740/602 +f 543/257/600 544/2747/604 545/2742/604 +f 528/254/601 527/2750/599 547/2744/599 +f 538/255/606 537/261/601 533/2736/599 +f 524/252/600 535/3592/600 541/2741/603 +f 531/2746/33 530/3594/33 545/2742/604 +f 528/254/601 546/258/606 549/1735/3 +f 548/1728/1 543/257/600 542/2743/605 +f 526/2749/33 540/3595/33 547/2744/599 +f 578/2751/607 579/3596/614 580/1757/608 +f 582/2752/609 583/2762/616 584/305/610 +f 585/2753/611 586/304/611 587/303/612 +f 589/2755/613 586/304/611 585/2753/611 +f 579/2757/614 588/2754/612 587/303/612 +f 582/2752/609 581/1755/609 592/2759/615 +f 577/2761/607 584/305/610 583/2762/616 +f 590/2764/613 591/3597/615 592/1754/615 +f 594/2765/617 595/3598/618 596/1763/618 +f 598/2766/619 599/3599/620 600/311/620 +f 602/310/621 603/309/624 604/2767/622 +f 602/310/621 601/2768/621 606/2769/623 +f 595/2771/618 604/2767/622 603/309/624 +f 598/2766/619 597/1761/619 608/2773/625 +f 600/311/620 599/3599/620 594/2775/617 +f 605/1759/623 606/3600/623 607/2777/625 +f 614/2778/607 615/3601/614 616/1768/614 +f 618/2779/609 619/2789/616 620/314/616 +f 621/2780/611 622/313/611 623/312/612 +f 622/313/611 621/2780/611 626/2782/613 +f 624/2781/612 623/312/612 616/2784/614 +f 627/2786/615 618/2779/609 617/1766/609 +f 613/2788/607 620/314/616 619/2789/616 +f 626/2791/613 627/3602/615 628/1765/615 +f 629/1773/617 630/3603/617 631/2792/618 +f 634/2793/619 635/2803/620 636/320/620 +f 638/319/621 639/318/624 640/2794/624 +f 638/319/621 637/2795/621 642/2796/623 +f 640/2794/624 639/318/624 632/2798/618 +f 634/2793/619 633/1772/619 644/2800/625 +f 629/2802/617 636/320/620 635/2803/620 +f 642/2805/623 643/3604/625 644/1771/625 +f 650/2806/607 651/3605/614 652/1779/614 +f 653/1777/609 654/3606/609 655/2807/616 +f 658/322/611 659/321/612 660/2808/612 +f 661/2810/613 658/322/611 657/2809/611 +f 660/2808/612 659/321/612 652/2812/614 +f 663/2814/615 654/3606/609 653/1777/609 +f 649/2816/607 656/323/616 655/2807/616 +f 662/2818/613 663/3607/615 664/1776/615 +f 666/2819/617 667/3608/618 668/1785/618 +f 670/2820/619 671/2830/628 672/329/626 +f 674/328/621 675/327/624 676/2821/624 +f 677/2823/623 674/328/621 673/2822/621 +f 676/2821/624 675/327/624 668/2825/618 +f 670/2820/619 669/1783/627 680/2827/625 +f 665/2829/617 672/329/626 671/2830/628 +f 677/1781/623 678/3609/623 679/2832/625 +f 686/1789/629 687/3610/629 688/2833/630 +f 690/1788/631 691/2842/641 692/2834/632 +f 693/2835/634 694/2838/638 695/1787/635 +f 697/2836/637 698/3611/642 693/2835/634 +f 687/2837/629 686/3612/629 695/1787/635 +f 700/2839/639 689/330/633 692/2834/632 +f 685/2841/630 688/3613/630 691/2842/641 +f 700/331/639 699/3614/640 698/2843/642 +f 702/1795/618 703/3615/618 704/2844/617 +f 706/1794/620 707/3616/620 708/2845/619 +f 710/2846/624 711/1793/939 712/338/621 +f 714/2848/623 709/2847/621 712/338/621 +f 702/2850/618 711/1793/939 710/2846/624 +f 716/2852/625 705/336/619 708/2845/619 +f 704/2854/617 707/3616/620 706/1794/620 +f 716/337/625 715/3617/625 714/2856/623 +f 722/1800/629 723/3618/629 724/2857/630 +f 725/339/632 726/1799/641 727/2858/641 +f 730/2860/635 731/1798/940 732/341/636 +f 733/2862/642 734/3619/644 729/2861/634 +f 722/2863/629 731/1798/940 730/2860/635 +f 736/2865/640 725/339/632 728/2859/632 +f 721/2867/630 724/3620/630 727/2858/641 +f 736/340/640 735/3621/643 734/2868/644 +f 737/1807/617 738/1806/618 739/2869/618 +f 742/1805/620 743/3622/626 744/2871/619 +f 745/2872/621 746/2875/624 747/1804/624 +f 749/2873/623 750/3623/623 745/2872/621 +f 738/2874/618 747/1804/624 746/2875/624 +f 751/2877/625 752/3624/625 741/345/619 +f 740/2878/617 743/3622/626 742/1805/620 +f 752/346/625 751/3625/625 750/2880/623 +f 758/1811/629 759/3626/629 760/2881/630 +f 761/348/632 762/1810/641 763/2882/641 +f 766/2884/635 767/1809/635 768/350/634 +f 769/2886/637 770/3627/637 765/2885/634 +f 758/2887/629 767/1809/635 766/2884/635 +f 772/2889/639 761/348/632 764/2883/632 +f 757/2891/630 760/3628/630 763/2882/641 +f 772/349/639 771/3629/639 770/2892/637 +f 774/1817/618 775/3630/618 776/2893/617 +f 778/1816/620 779/3631/620 780/2894/619 +f 782/2895/624 783/1815/624 784/356/645 +f 786/2897/623 781/2896/645 784/356/645 +f 774/2899/618 783/1815/624 782/2895/624 +f 787/2901/625 788/3632/625 777/354/619 +f 776/2902/617 779/3631/620 778/1816/620 +f 788/355/625 787/3633/625 786/2904/623 +f 816/2905/646 817/2940/678 818/2906/647 +f 818/2906/647 817/2940/678 819/2908/649 +f 820/2909/650 819/2908/649 821/2910/651 +f 822/2911/652 821/2910/651 823/2912/653 +f 831/2915/656 825/3634/663 826/2916/657 +f 826/2916/657 827/3635/665 829/3636/670 +f 827/3635/665 828/3637/667 829/3636/670 +f 829/3636/670 830/2914/655 826/2916/657 +f 833/2917/658 816/2905/646 815/2907/648 +f 834/2919/660 832/2918/659 835/2920/661 +f 835/2920/661 826/2925/657 825/2922/663 +f 832/2918/659 815/2907/648 837/2923/664 +f 835/2920/661 837/2923/664 827/2924/665 +f 815/2907/648 818/2906/647 838/2926/666 +f 837/2923/664 838/2926/666 828/2927/667 +f 820/2909/650 839/2928/668 838/2926/666 +f 839/2928/668 829/2930/670 828/2927/667 +f 822/2911/652 840/2929/669 839/2928/668 +f 840/2929/669 830/2932/655 829/2930/670 +f 824/2913/654 841/3638/941 840/2929/669 +f 840/2929/669 841/3638/941 831/2931/656 +f 842/2933/671 833/2917/658 832/2918/659 +f 842/2933/671 843/2935/673 844/2934/672 +f 843/2935/673 845/3639/942 846/2936/674 +f 833/2917/658 844/2934/672 847/2937/675 +f 844/2934/672 846/2936/674 848/2938/676 +f 816/2905/646 847/2937/675 849/2939/677 +f 847/2937/675 848/2938/676 850/2941/679 +f 819/2908/649 817/2940/678 849/2939/677 +f 851/2942/680 849/2939/677 850/2941/679 +f 821/2910/651 819/2908/649 851/2942/680 +f 853/2944/682 851/2942/680 852/2943/681 +f 823/2912/653 821/2910/651 853/2944/682 +f 855/2946/684 853/2944/682 854/2945/683 +f 848/2950/676 846/3640/674 854/3641/683 +f 846/3640/674 845/3642/942 854/3641/683 +f 845/3642/942 856/3643/685 854/3641/683 +f 854/3641/683 852/2948/681 848/2950/676 +f 858/2951/686 859/2986/718 860/2952/687 +f 860/2952/687 859/2986/718 861/2954/689 +f 862/2955/690 861/2954/689 863/2956/691 +f 864/2957/692 863/2956/691 865/2958/693 +f 873/3644/710 867/3645/703 872/2960/695 +f 867/3645/703 868/3646/705 872/2960/695 +f 868/3646/705 869/2961/696 872/2960/695 +f 869/2961/696 870/3647/707 871/2962/697 +f 875/2963/698 858/2951/686 857/2953/688 +f 876/2965/700 874/2964/699 877/2966/701 +f 877/2966/701 868/2971/705 867/2968/703 +f 874/2964/699 857/2953/688 879/2969/704 +f 877/2966/701 879/2969/704 869/2970/696 +f 857/2953/688 860/2952/687 880/2972/706 +f 879/2969/704 880/2972/706 870/2973/707 +f 862/2955/690 881/2974/708 880/2972/706 +f 881/2974/708 871/2976/697 870/2973/707 +f 864/2957/692 882/2975/709 881/2974/708 +f 882/2975/709 872/2978/695 871/2976/697 +f 866/2959/694 883/3648/943 882/2975/709 +f 882/2975/709 883/3648/943 873/2977/710 +f 884/2979/711 875/2963/698 874/2964/699 +f 884/2979/711 885/2981/713 886/2980/712 +f 885/2981/713 887/3649/944 888/2982/714 +f 875/2963/698 886/2980/712 889/2983/715 +f 886/2980/712 888/2982/714 890/2984/716 +f 858/2951/686 889/2983/715 891/2985/717 +f 889/2983/715 890/2984/716 892/2987/719 +f 861/2954/689 859/2986/718 891/2985/717 +f 893/2988/720 891/2985/717 892/2987/719 +f 863/2956/691 861/2954/689 893/2988/720 +f 895/2990/722 893/2988/720 894/2989/721 +f 865/2958/693 863/2956/691 895/2990/722 +f 897/2992/724 895/2990/722 896/2991/723 +f 890/2996/716 888/3650/714 896/3651/723 +f 888/3650/714 887/3652/944 896/3651/723 +f 887/3652/944 898/3653/725 896/3651/723 +f 896/3651/723 894/2994/721 890/2996/716 +f 900/2997/726 901/3032/758 902/2998/727 +f 902/2998/727 901/3032/758 903/3000/729 +f 904/3001/730 903/3000/729 905/3002/731 +f 906/3003/732 905/3002/731 907/3004/733 +f 915/3007/736 909/3654/743 910/3008/737 +f 910/3008/737 911/3655/745 913/3656/750 +f 911/3655/745 912/3657/747 913/3656/750 +f 913/3656/750 914/3006/735 910/3008/737 +f 917/3009/738 900/2997/726 899/2999/728 +f 918/3011/740 916/3010/739 919/3012/741 +f 919/3012/741 910/3017/737 909/3014/743 +f 916/3010/739 899/2999/728 921/3015/744 +f 919/3012/741 921/3015/744 911/3016/745 +f 899/2999/728 902/2998/727 922/3018/746 +f 921/3015/744 922/3018/746 912/3019/747 +f 904/3001/730 923/3020/748 922/3018/746 +f 923/3020/748 913/3022/750 912/3019/747 +f 906/3003/732 924/3021/749 923/3020/748 +f 924/3021/749 914/3024/735 913/3022/750 +f 908/3005/734 925/3658/945 924/3021/749 +f 924/3021/749 925/3658/945 915/3023/736 +f 926/3025/751 917/3009/738 916/3010/739 +f 926/3025/751 927/3027/753 928/3026/752 +f 927/3027/753 929/3659/946 930/3028/754 +f 917/3009/738 928/3026/752 931/3029/755 +f 928/3026/752 930/3028/754 932/3030/756 +f 900/2997/726 931/3029/755 933/3031/757 +f 931/3029/755 932/3030/756 934/3033/759 +f 903/3000/729 901/3032/758 933/3031/757 +f 935/3034/760 933/3031/757 934/3033/759 +f 905/3002/731 903/3000/729 935/3034/760 +f 937/3036/762 935/3034/760 936/3035/761 +f 907/3004/733 905/3002/731 937/3036/762 +f 939/3038/764 937/3036/762 938/3037/763 +f 932/3042/756 930/3660/754 938/3661/763 +f 930/3660/754 929/3662/946 938/3661/763 +f 929/3662/946 940/3663/765 938/3661/763 +f 938/3661/763 936/3040/761 932/3042/756 +f 958/3043/766 959/3664/776 960/1834/767 +f 961/1832/769 962/3051/777 963/3044/770 +f 966/415/771 967/414/772 968/3045/772 +f 969/3047/774 966/415/771 965/3046/773 +f 959/3049/776 968/3045/772 967/414/772 +f 962/3051/777 961/1832/769 972/3052/778 +f 957/3054/768 964/416/770 963/3044/770 +f 970/3056/775 971/3665/778 972/1831/778 +f 974/3057/779 975/3666/780 976/1840/780 +f 977/1838/781 978/3667/781 979/3058/782 +f 982/421/783 983/420/788 984/3059/784 +f 982/421/783 981/3060/785 986/3061/786 +f 975/3063/780 984/3059/784 983/420/788 +f 987/3065/789 978/3667/781 977/1838/781 +f 973/3067/779 980/422/782 979/3058/782 +f 985/1836/787 986/3668/786 987/3069/789 +f 994/3070/768 995/3669/776 996/1845/776 +f 997/1843/790 998/3670/790 999/3071/770 +f 1001/3072/791 1002/424/791 1003/423/772 +f 1002/424/791 1001/3072/791 1006/3074/774 +f 1004/3073/772 1003/423/772 996/3076/776 +f 1007/3078/778 998/3670/790 997/1843/790 +f 1000/425/770 999/3071/770 994/3080/768 +f 1005/1841/774 1006/3671/774 1007/3082/778 +f 1009/1850/779 1010/3672/779 1011/3083/793 +f 1013/1849/781 1014/3673/798 1015/3084/782 +f 1018/430/783 1019/429/788 1020/3085/788 +f 1021/3087/794 1018/430/783 1017/3086/783 +f 1011/3089/793 1020/3085/788 1019/429/788 +f 1023/3091/789 1014/3673/798 1013/1849/781 +f 1009/3093/779 1016/431/782 1015/3084/782 +f 1022/3095/794 1023/3674/789 1024/1848/789 +f 1030/3096/768 1031/3675/776 1032/1856/776 +f 1033/1854/769 1034/3676/777 1035/3097/770 +f 1038/433/791 1039/432/772 1040/3098/772 +f 1041/3100/774 1038/433/791 1037/3099/773 +f 1040/3098/772 1039/432/772 1032/3102/776 +f 1043/3104/778 1034/3676/777 1033/1854/769 +f 1036/434/770 1035/3097/770 1030/3106/768 +f 1042/3108/774 1043/3677/778 1044/1853/795 +f 1046/3109/796 1047/3678/780 1048/1862/780 +f 1049/1860/798 1050/3117/798 1051/3110/799 +f 1054/439/783 1055/438/788 1056/3111/788 +f 1057/3113/787 1054/439/783 1053/3112/783 +f 1047/3115/780 1056/3111/788 1055/438/788 +f 1050/3117/798 1049/1860/798 1060/3118/789 +f 1045/3120/797 1052/440/799 1051/3110/799 +f 1057/1858/787 1058/3679/787 1059/3122/789 +f 1066/1866/800 1067/3680/800 1068/3123/801 +f 1070/1865/802 1071/3132/809 1072/3124/803 +f 1073/3125/805 1074/3128/806 1075/1864/806 +f 1077/3126/807 1078/3681/807 1073/3125/805 +f 1067/3127/800 1066/3682/800 1075/1864/806 +f 1080/3129/808 1069/441/804 1072/3124/803 +f 1065/3131/801 1068/3683/801 1071/3132/809 +f 1080/442/808 1079/3684/808 1078/3133/807 +f 1082/1872/780 1083/3685/780 1084/3134/779 +f 1086/1871/782 1087/3145/782 1088/3135/781 +f 1090/3136/788 1091/1870/784 1092/449/783 +f 1094/3138/794 1089/3137/783 1092/449/783 +f 1082/3140/780 1091/1870/784 1090/3136/788 +f 1096/3142/789 1085/447/781 1088/3135/781 +f 1081/3144/779 1084/3686/779 1087/3145/782 +f 1096/448/789 1095/3687/789 1094/3146/794 +f 1102/1877/800 1103/3688/800 1104/3147/801 +f 1105/450/803 1106/1876/809 1107/3148/809 +f 1110/3150/810 1111/1875/810 1112/452/811 +f 1113/3152/807 1114/3689/807 1109/3151/805 +f 1102/3153/800 1111/1875/810 1110/3150/810 +f 1116/3155/808 1105/450/803 1108/3149/803 +f 1101/3157/801 1104/3690/801 1107/3148/809 +f 1116/451/808 1115/3691/808 1114/3158/807 +f 1117/1884/796 1118/1883/780 1119/3159/793 +f 1122/1882/799 1123/3692/799 1124/3161/781 +f 1125/3162/783 1126/3165/788 1127/1881/788 +f 1129/3163/794 1130/3693/794 1125/3162/783 +f 1118/3164/780 1127/1881/788 1126/3165/788 +f 1131/3167/789 1132/3694/789 1121/456/781 +f 1120/3168/797 1123/3692/799 1122/1882/799 +f 1132/457/789 1131/3695/789 1130/3170/794 +f 1138/1888/800 1139/3696/800 1140/3171/801 +f 1141/459/803 1142/1887/809 1143/3172/809 +f 1146/3174/806 1147/1886/806 1148/461/805 +f 1149/3176/807 1150/3697/807 1145/3175/805 +f 1138/3177/800 1147/1886/806 1146/3174/806 +f 1152/3179/808 1141/459/803 1144/3173/803 +f 1137/3181/801 1140/3698/801 1143/3172/809 +f 1152/460/808 1151/3699/808 1150/3182/807 +f 1154/1894/780 1155/3700/780 1156/3183/779 +f 1157/465/781 1158/1893/782 1159/3184/782 +f 1162/3186/788 1163/1892/788 1164/467/812 +f 1166/3188/787 1161/3187/813 1164/467/812 +f 1154/3190/780 1163/1892/788 1162/3186/788 +f 1167/3192/814 1168/3701/814 1157/465/781 +f 1156/3193/779 1159/3184/782 1158/1893/782 +f 1168/466/814 1167/3702/814 1166/3195/787 +f 1196/3196/815 1197/3703/816 1198/1907/816 +f 1199/1905/817 1200/3204/817 1201/3197/818 +f 1204/506/820 1205/505/821 1206/3198/821 +f 1207/3200/822 1204/506/820 1203/3199/820 +f 1197/3202/816 1206/3198/821 1205/505/821 +f 1200/3204/817 1199/1905/817 1210/3205/823 +f 1195/3207/815 1202/507/819 1201/3197/818 +f 1208/3209/822 1209/3704/823 1210/1904/823 +f 1212/3210/824 1213/3705/832 1214/1913/825 +f 1215/1911/826 1216/3218/826 1217/3211/827 +f 1220/512/828 1221/511/833 1222/3212/829 +f 1220/512/828 1219/3213/830 1224/3214/831 +f 1213/3216/832 1222/3212/829 1221/511/833 +f 1216/3218/826 1215/1911/826 1226/3219/834 +f 1218/513/827 1217/3211/827 1212/3221/824 +f 1223/1909/831 1224/3706/831 1225/3223/834 +f 1232/3224/815 1233/3707/816 1234/1918/816 +f 1235/1916/817 1236/3708/817 1237/3225/835 +f 1239/3226/820 1240/515/820 1241/514/821 +f 1240/515/820 1239/3226/820 1244/3228/822 +f 1242/3227/821 1241/514/821 1234/3230/816 +f 1245/3232/823 1236/3708/817 1235/1916/817 +f 1231/3234/815 1238/516/818 1237/3225/835 +f 1244/3236/822 1245/3709/823 1246/1915/823 +f 1247/1923/824 1248/3710/824 1249/3237/836 +f 1251/1922/826 1252/3711/947 1253/3238/837 +f 1256/521/828 1257/520/833 1258/3239/833 +f 1256/521/828 1255/3240/828 1260/3241/831 +f 1258/3239/833 1257/520/833 1250/3243/836 +f 1261/3245/834 1252/3711/947 1251/1922/826 +f 1247/3247/824 1254/522/837 1253/3238/837 +f 1260/3249/831 1261/3712/834 1262/1921/834 +f 1268/3250/815 1269/3713/816 1270/1929/816 +f 1271/1927/817 1272/3714/817 1273/3251/835 +f 1276/524/820 1277/523/821 1278/3252/821 +f 1279/3254/822 1276/524/820 1275/3253/820 +f 1278/3252/821 1277/523/821 1270/3256/816 +f 1281/3258/823 1272/3714/817 1271/1927/817 +f 1267/3260/815 1274/525/835 1273/3251/835 +f 1280/3262/822 1281/3715/823 1282/1926/823 +f 1284/3263/824 1285/3716/836 1286/1935/836 +f 1287/1933/826 1288/3271/826 1289/3264/837 +f 1292/530/828 1293/529/833 1294/3265/833 +f 1295/3267/831 1292/530/828 1291/3266/828 +f 1285/3269/836 1294/3265/833 1293/529/833 +f 1288/3271/826 1287/1933/826 1298/3272/838 +f 1283/3274/824 1290/531/837 1289/3264/837 +f 1295/1931/831 1296/3717/831 1297/3276/839 +f 1304/1939/840 1305/3718/840 1306/3277/841 +f 1308/1938/842 1309/3286/849 1310/3278/843 +f 1311/3279/844 1312/3282/845 1313/1937/845 +f 1315/3280/847 1316/3719/847 1311/3279/844 +f 1305/3281/840 1304/3720/840 1313/1937/845 +f 1318/3283/848 1307/532/843 1310/3278/843 +f 1303/3285/841 1306/3721/841 1309/3286/849 +f 1318/533/848 1317/3722/848 1316/3287/847 +f 1320/1945/832 1321/3723/836 1322/3288/824 +f 1324/1944/827 1325/3299/827 1326/3289/826 +f 1327/3290/850 1328/3294/854 1329/1943/851 +f 1332/3291/853 1327/3290/850 1330/540/852 +f 1320/3293/832 1329/1943/851 1328/3294/854 +f 1334/3296/834 1323/538/826 1326/3289/826 +f 1319/3298/824 1322/3724/824 1325/3299/827 +f 1334/539/834 1333/3725/834 1332/3300/853 +f 1340/1950/840 1341/3726/840 1342/3301/855 +f 1343/541/843 1344/1949/849 1345/3302/849 +f 1348/3304/857 1349/1948/857 1350/543/846 +f 1351/3306/847 1352/3727/847 1347/3305/858 +f 1340/3307/840 1349/1948/857 1348/3304/857 +f 1354/3309/848 1343/541/843 1346/3303/856 +f 1339/3311/841 1342/3728/855 1345/3302/849 +f 1354/542/848 1353/3729/859 1352/3312/847 +f 1355/1957/824 1356/1956/836 1357/3313/836 +f 1360/1955/827 1361/3730/827 1362/3315/826 +f 1363/3316/828 1364/3319/833 1365/1954/833 +f 1367/3317/853 1368/3731/853 1363/3316/828 +f 1356/3318/836 1365/1954/833 1364/3319/833 +f 1370/3321/839 1359/547/826 1362/3315/826 +f 1358/3323/824 1361/3730/827 1360/1955/827 +f 1370/548/839 1369/3732/839 1368/3325/853 +f 1376/1961/840 1377/3733/840 1378/3326/841 +f 1379/550/843 1380/1960/849 1381/3327/849 +f 1384/3329/845 1385/1959/948 1386/552/860 +f 1387/3331/862 1388/3734/862 1383/3330/861 +f 1376/3332/840 1385/1959/948 1384/3329/845 +f 1390/3334/848 1379/550/843 1382/3328/856 +f 1378/3336/841 1381/3327/849 1380/1960/849 +f 1390/551/848 1389/3735/848 1388/3338/862 +f 1392/1967/836 1393/3736/836 1394/3339/824 +f 1396/1966/827 1397/3737/827 1398/3340/826 +f 1399/3341/828 1400/3344/833 1401/1965/833 +f 1403/3342/831 1404/3738/831 1399/3341/828 +f 1393/3343/836 1392/3739/836 1401/1965/833 +f 1405/3345/834 1406/3740/834 1395/556/826 +f 1394/3346/824 1397/3737/827 1396/1966/827 +f 1406/557/834 1405/3741/834 1404/3348/831 +f 1505/3349/110 1506/3359/868 1507/3350/863 +f 1508/3352/1 1509/3742/864 1498/678/864 +f 1511/687/865 1512/681/865 1513/2001/3 +f 1514/3353/110 1500/3743/110 1499/3354/866 +f 1517/683/864 1518/3361/866 1519/3356/866 +f 1502/680/865 1501/3364/868 1521/3358/867 +f 1512/681/865 1511/687/865 1507/3350/863 +f 1498/678/864 1509/3742/864 1515/3355/866 +f 1505/3360/110 1504/3744/110 1519/3356/866 +f 1502/680/865 1520/684/865 1523/2007/3 +f 1522/2000/1 1517/683/864 1516/3357/864 +f 1500/3363/110 1514/3745/110 1521/3358/867 +f 1597/3365/130 1598/3375/869 1599/3366/869 +f 1600/3368/1 1601/3746/870 1590/773/870 +f 1602/2044/3 1603/782/874 1604/776/871 +f 1606/3369/130 1592/3747/130 1591/3370/872 +f 1609/778/870 1610/3377/873 1611/3372/873 +f 1594/775/874 1593/3380/876 1613/3374/869 +f 1604/776/871 1603/782/874 1599/3366/869 +f 1590/773/870 1601/3746/870 1607/3371/873 +f 1597/3376/130 1596/3748/130 1611/3372/873 +f 1594/775/874 1612/779/875 1615/2042/3 +f 1609/778/870 1608/3373/870 1616/3378/1 +f 1592/3379/130 1606/3749/130 1613/3374/869 +f 1689/3381/28 1690/3391/877 1691/3382/877 +f 1692/3384/1 1693/3750/878 1682/867/878 +f 1695/876/879 1696/870/883 1697/2072/3 +f 1698/3385/28 1684/3751/28 1683/3386/880 +f 1701/872/878 1702/3393/881 1703/3388/881 +f 1686/869/879 1685/3396/877 1705/3390/877 +f 1696/870/883 1695/876/879 1691/3382/877 +f 1682/867/878 1693/3750/878 1699/3387/880 +f 1689/3392/28 1688/3752/28 1703/3388/881 +f 1686/869/879 1704/873/882 1707/2078/3 +f 1706/2071/1 1701/872/878 1700/3389/878 +f 1684/3395/28 1698/3753/28 1705/3390/877 +f 1780/3397/105 1781/3754/105 1782/3398/884 +f 1784/3400/1 1785/3755/885 1774/962/885 +f 1787/971/886 1788/965/886 1789/2107/3 +f 1790/3401/105 1776/3756/105 1775/3402/887 +f 1793/967/885 1794/3408/887 1795/3404/887 +f 1778/964/886 1777/3411/884 1797/3406/888 +f 1788/965/886 1787/971/886 1783/3399/884 +f 1774/962/885 1785/3755/885 1791/3403/887 +f 1781/3407/105 1780/3757/105 1795/3404/887 +f 1778/964/886 1796/968/886 1799/2113/3 +f 1798/2106/1 1793/967/885 1792/3405/885 +f 1776/3410/105 1790/3758/105 1797/3406/888 +f 1873/3412/125 1874/3422/889 1875/3413/889 +f 1876/3415/1 1877/3759/890 1866/1056/890 +f 1879/1065/891 1880/1059/891 1881/2143/3 +f 1882/3416/125 1868/3760/125 1867/3417/892 +f 1885/1061/890 1886/3424/893 1887/3419/893 +f 1870/1058/895 1869/3427/889 1889/3421/889 +f 1880/1059/891 1879/1065/891 1875/3413/889 +f 1866/1056/890 1877/3759/890 1883/3418/892 +f 1873/3423/125 1872/3761/125 1887/3419/893 +f 1870/1058/895 1888/1062/891 1891/2149/3 +f 1890/2142/1 1885/1061/890 1884/3420/894 +f 1868/3426/125 1882/3762/125 1889/3421/889 +f 1965/3428/143 1966/3438/896 1967/3429/896 +f 1968/3431/1 1969/3763/897 1958/1151/897 +f 1971/1160/898 1972/1154/898 1973/2178/3 +f 1974/3432/143 1960/3764/143 1959/3433/899 +f 1977/1156/901 1978/3440/899 1979/3435/899 +f 1962/1153/898 1961/3443/896 1981/3437/896 +f 1972/1154/898 1971/1160/898 1967/3429/896 +f 1958/1151/897 1969/3763/897 1975/3434/900 +f 1965/3439/143 1964/3765/143 1979/3435/899 +f 1962/1153/898 1980/1157/902 1983/2184/3 +f 1982/2177/1 1977/1156/901 1976/3436/901 +f 1960/3442/143 1974/3766/143 1981/3437/896 +f 2057/3444/160 2058/3454/903 2059/3445/903 +f 2060/3447/1 2061/3767/904 2050/1245/904 +f 2063/1254/905 2064/1248/905 2065/2214/3 +f 2066/3448/160 2052/3768/160 2051/3449/906 +f 2069/1250/904 2070/3456/906 2071/3451/906 +f 2054/1247/905 2053/3459/903 2073/3453/907 +f 2064/1248/905 2063/1254/905 2059/3445/903 +f 2050/1245/904 2061/3767/904 2067/3450/906 +f 2057/3455/160 2056/3769/160 2071/3451/906 +f 2054/1247/905 2072/1251/905 2075/2220/3 +f 2074/2213/1 2069/1250/904 2068/3452/904 +f 2052/3458/160 2066/3770/160 2073/3453/907 +f 2149/3460/178 2150/3470/915 2151/3461/908 +f 2152/3463/1 2153/3771/909 2142/1339/909 +f 2155/1348/910 2156/1342/914 2157/2250/3 +f 2158/3464/178 2144/3772/178 2143/3465/911 +f 2161/1344/909 2162/3472/912 2163/3467/912 +f 2146/1341/910 2145/3475/916 2165/3469/908 +f 2156/1342/914 2155/1348/910 2151/3461/908 +f 2142/1339/909 2153/3771/909 2159/3466/911 +f 2149/3471/178 2148/3773/178 2163/3467/912 +f 2146/1341/910 2164/1345/913 2167/2256/3 +f 2166/2249/1 2161/1344/909 2160/3468/909 +f 2144/3474/178 2158/3774/178 2165/3469/908 +f 2241/3476/27 2242/3486/917 2243/3477/917 +f 2244/3479/1 2245/3775/918 2234/1433/918 +f 2247/1442/919 2248/1436/924 2249/2286/3 +f 2250/3480/27 2236/3776/27 2235/3481/920 +f 2253/1438/918 2254/3488/921 2255/3483/921 +f 2238/1435/922 2237/3491/917 2257/3485/917 +f 2248/1436/924 2247/1442/919 2243/3477/917 +f 2234/1433/918 2245/3775/918 2251/3482/920 +f 2241/3487/27 2240/3777/27 2255/3483/921 +f 2238/1435/922 2256/1439/923 2259/2292/3 +f 2258/2285/1 2253/1438/918 2252/3484/918 +f 2236/3490/27 2250/3778/27 2257/3485/917 +f 2333/3492/104 2334/3502/925 2335/3493/925 +f 2336/3495/1 2337/3779/926 2326/1529/926 +f 2339/1538/927 2340/1532/927 2341/2320/3 +f 2342/3496/104 2328/3780/104 2327/3497/928 +f 2345/1534/926 2346/3504/928 2347/3499/928 +f 2330/1531/927 2329/3507/925 2349/3501/925 +f 2340/1532/927 2339/1538/927 2335/3493/925 +f 2326/1529/926 2337/3779/926 2343/3498/928 +f 2333/3503/104 2332/3781/104 2347/3499/928 +f 2330/1531/927 2348/1535/927 2351/2326/3 +f 2350/2319/1 2345/1534/926 2344/3500/926 +f 2328/3506/104 2342/3782/104 2349/3501/925 +f 2425/3508/124 2426/3518/929 2427/3509/929 +f 2428/3511/1 2429/3783/930 2418/1625/930 +f 2431/1634/931 2432/1628/935 2433/2354/3 +f 2434/3512/124 2420/3784/124 2419/3513/932 +f 2437/1630/930 2438/3520/933 2439/3515/933 +f 2422/1627/931 2421/3523/929 2441/3517/929 +f 2432/1628/935 2431/1634/931 2427/3509/929 +f 2418/1625/930 2429/3783/930 2435/3514/932 +f 2425/3519/124 2424/3785/124 2439/3515/933 +f 2422/1627/931 2440/1631/935 2443/2360/3 +f 2442/2353/1 2437/1630/930 2436/3516/934 +f 2420/3522/124 2434/3786/124 2441/3517/929 diff --git a/src/main/resources/assets/hbm/models/chemplant_new_body.obj b/src/main/resources/assets/hbm/models/chemplant_new_body.obj index c2342adcd..e958c24e3 100644 --- a/src/main/resources/assets/hbm/models/chemplant_new_body.obj +++ b/src/main/resources/assets/hbm/models/chemplant_new_body.obj @@ -1,4 +1,4 @@ -# Blender v2.76 (sub 0) OBJ File: 'chemplant_new_body.blend' +# Blender v2.79 (sub 0) OBJ File: 'chemplant_new_body.blend' # www.blender.org o Cube_Cube.001 v -1.500000 0.000000 1.500000 @@ -282,715 +282,918 @@ v -0.500000 2.750000 -0.625000 v -0.516747 2.750000 -0.687500 v -0.562500 2.750000 -0.733253 vt 0.000000 0.317073 -vt 0.000000 0.292683 vt 0.292683 0.292683 -vt -0.000000 0.000000 +vt 0.292683 0.317073 +vt 0.000000 0.317073 +vt 0.292683 0.292683 +vt 0.292683 0.317073 +vt -0.000000 0.317073 +vt 0.292683 0.292683 +vt 0.292683 0.317073 +vt 0.000000 0.317073 +vt 0.292683 0.292683 +vt 0.292683 0.317073 +vt 0.000000 0.292683 vt 0.292683 -0.000000 vt 0.024390 0.353659 -vt 0.292683 0.317073 vt 0.268293 0.353659 +vt 0.268293 0.353659 +vt 0.024390 0.353659 +vt 0.268293 0.353659 +vt 0.024390 0.353659 +vt 0.024390 0.353659 vt 0.292683 0.207317 -vt 0.390244 0.207317 vt 0.390244 0.256098 +vt 0.292683 0.256098 vt 0.390244 0.109756 -vt 0.378049 0.121951 vt 0.304878 0.121951 +vt 0.292683 0.109756 vt 0.365854 0.310976 +vt 0.292683 0.256098 +vt 0.390244 0.256098 +vt 0.390244 0.207317 +vt 0.292683 0.256098 +vt 0.292683 0.207317 +vt 0.390244 0.256098 vt 0.317073 0.310976 vt 0.292683 0.256098 -vt 0.323171 0.140244 +vt 0.390244 0.207317 +vt 0.292683 0.207317 +vt 0.292683 0.207317 +vt 0.390244 0.207317 +vt 0.365854 0.310976 +vt 0.317073 0.310976 vt 0.323171 0.176829 vt 0.304878 0.195122 vt 0.378049 0.195122 -vt 0.292683 0.109756 +vt 0.378049 0.121951 vt 0.359756 0.140244 vt 0.359756 0.176829 +vt 0.323171 0.140244 +vt 0.292683 0.256098 +vt 0.390244 0.207317 +vt 0.390244 0.256098 +vt 0.304878 0.195122 +vt 0.390244 0.207317 +vt 0.292683 0.207317 +vt 0.390244 0.256098 +vt 0.317073 0.310976 +vt 0.292683 0.256098 +vt 0.390244 0.256098 +vt 0.292683 0.256098 +vt 0.365854 0.310976 +vt 0.292683 0.256098 +vt 0.390244 0.256098 +vt 0.292683 0.207317 +vt 0.390244 0.207317 +vt 0.390244 0.207317 +vt 0.292683 0.207317 +vt 0.317073 0.310976 +vt 0.365854 0.310976 +vt 0.323171 0.140244 +vt 0.304878 0.121951 +vt 0.378049 0.121951 +vt 0.292683 0.109756 +vt 0.390244 0.109756 +vt 0.378049 0.195122 +vt 0.359756 0.176829 +vt 0.359756 0.140244 +vt 0.323171 0.176829 vt 0.902439 0.262195 -vt 0.902439 0.335366 vt 0.871951 0.335366 -vt 0.841463 0.262195 -vt 0.841463 0.335366 -vt 0.810976 0.335366 vt 0.871951 0.262195 +vt 0.841463 0.262195 +vt 0.810976 0.335366 vt 0.810976 0.262195 +vt 0.841463 0.335366 vt 0.780488 0.335366 -vt 0.780488 0.365854 vt 0.780488 0.262195 +vt 0.780488 0.365854 vt 0.810976 0.365854 +vt 0.902439 0.262195 +vt 0.871951 0.335366 +vt 0.871951 0.262195 +vt 0.841463 0.262195 +vt 0.810976 0.335366 +vt 0.810976 0.262195 +vt 0.841463 0.335366 +vt 0.780488 0.335366 +vt 0.780488 0.262195 +vt 0.780488 0.365854 +vt 0.810976 0.365854 +vt 0.841463 0.335366 +vt 0.810976 0.262195 +vt 0.841463 0.262195 +vt 0.902439 0.335366 +vt 0.871951 0.262195 +vt 0.902439 0.262195 +vt 0.871951 0.335366 +vt 0.810976 0.335366 +vt 0.780488 0.262195 +vt 0.780488 0.335366 +vt 0.810976 0.365854 +vt 0.780488 0.365854 +vt 0.841463 0.335366 +vt 0.810976 0.262195 +vt 0.841463 0.262195 +vt 0.902439 0.335366 +vt 0.871951 0.262195 +vt 0.902439 0.262195 +vt 0.871951 0.335366 +vt 0.810976 0.335366 +vt 0.780488 0.262195 +vt 0.780488 0.335366 +vt 0.810976 0.365854 +vt 0.780488 0.365854 +vt 0.365854 0.359756 +vt 0.365854 0.310976 +vt 0.341463 0.335366 vt 0.365854 0.359756 vt 0.341463 0.335366 +vt 0.365854 0.310976 vt 0.341463 0.359756 vt 0.341463 0.310976 vt 0.317073 0.335366 +vt 0.341463 0.359756 +vt 0.317073 0.335366 +vt 0.341463 0.310976 vt 0.268293 0.378049 vt 0.024390 0.378049 +vt 0.024390 0.378049 +vt 0.268293 0.378049 +vt 0.268293 0.378049 +vt 0.024390 0.378049 +vt 0.268293 0.378049 vt 0.024390 0.621951 +vt 0.268293 0.621951 vt 0.292683 0.012195 -vt 0.390244 0.012195 +vt 0.390244 0.109756 +vt 0.292683 0.109756 vt 0.390244 -0.000000 +vt 0.292683 -0.000000 +vt 0.390244 0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.390244 0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.390244 -0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.292683 0.012195 +vt 0.390244 0.109756 +vt 0.292683 0.109756 +vt 0.390244 -0.000000 +vt 0.292683 -0.000000 +vt 0.390244 0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.390244 0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.390244 -0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 vt 0.487805 0.146341 -vt 0.585366 0.146341 vt 0.560976 0.182927 +vt 0.512195 0.182927 vt 0.487805 -0.000000 vt 0.390244 0.146341 +vt 0.390244 -0.000000 vt 0.585366 0.000000 vt 0.780488 -0.000000 -vt 0.780488 0.146341 vt 0.682927 0.146341 +vt 0.682927 0.000000 vt 0.707317 0.182927 -vt 0.756098 0.182927 vt 0.756098 0.231707 -vt 0.463415 0.182927 +vt 0.707317 0.231707 +vt 0.780488 0.146341 +vt 0.707317 0.182927 vt 0.414634 0.182927 +vt 0.585366 0.146341 vt 0.658537 0.182927 vt 0.609756 0.182927 -vt 0.682927 0.000000 +vt 0.292683 0.012195 +vt 0.390244 0.109756 +vt 0.292683 0.109756 +vt 0.390244 -0.000000 +vt 0.292683 -0.000000 +vt 0.390244 0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.390244 0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.390244 -0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 vt 0.847561 0.207317 -vt 0.786585 0.243902 +vt 0.786585 0.207317 vt 0.817073 0.262195 -vt 0.853659 0.164634 -vt 0.853659 0.189024 -vt 0.835366 0.189024 -vt 0.871951 0.164634 -vt 0.871951 0.189024 -vt 0.835366 0.164634 -vt 0.817073 0.189024 -vt 0.817073 0.164634 -vt 0.798781 0.189024 -vt 0.798781 0.164634 -vt 0.780488 0.189024 -vt 1.000000 0.164634 -vt 1.000000 0.189024 -vt 0.981707 0.189024 -vt 0.981707 0.164634 -vt 0.963415 0.189024 -vt 0.963415 0.164634 -vt 0.945122 0.189024 -vt 0.890244 0.164634 -vt 0.890244 0.189024 -vt 0.908537 0.164634 -vt 0.908537 0.189024 -vt 0.926829 0.164634 -vt 0.926829 0.189024 -vt 0.945122 0.164634 -vt 0.817073 0.146341 -vt 0.835366 0.146341 -vt 0.798781 0.146341 -vt 0.981707 0.146341 -vt 1.000000 0.146341 -vt 0.963415 0.146341 -vt 0.945122 0.146341 -vt 0.926829 0.146341 -vt 0.853659 0.146341 -vt 0.871951 0.146341 -vt 0.890244 0.146341 -vt 0.908537 0.146341 -vt 0.945122 -0.000000 -vt 0.908537 0.000000 -vt 0.926829 -0.000000 -vt 0.963415 0.000000 -vt 0.981707 0.000000 -vt 1.000000 0.000000 -vt 0.890244 -0.000000 -vt 0.798781 -0.000000 -vt 0.817073 0.000000 -vt 0.835366 -0.000000 -vt 0.853659 -0.000000 -vt 0.871951 -0.000000 -vt 0.908537 0.237805 -vt 0.908537 0.213415 -vt 0.914634 0.213415 vt 0.902439 0.237805 -vt 0.890244 0.237805 vt 0.890244 0.231707 -vt 0.865854 0.189024 -vt 0.865854 0.213415 -vt 0.853659 0.213415 -vt 0.975610 0.189024 -vt 0.975610 0.213415 -vt 0.963415 0.213415 -vt 0.914634 0.189024 -vt 0.902439 0.213415 -vt 0.939024 0.189024 -vt 0.939024 0.213415 -vt 0.926829 0.213415 -vt 0.878049 0.189024 -vt 0.878049 0.213415 -vt 0.987805 0.189024 -vt 0.987805 0.213415 -vt 0.951219 0.189024 -vt 0.951219 0.213415 -vt 0.890244 0.213415 -vt 1.000000 0.213415 -vt 0.902439 0.189024 +vt 0.896341 0.225610 vt 0.890244 0.256098 -vt 0.884146 0.250000 vt 0.890244 0.243902 -vt 0.878049 0.225610 +vt 0.896341 0.250000 +vt 0.878049 0.213415 vt 0.871951 0.225610 +vt 0.865854 0.219512 vt 0.853659 0.237805 -vt 0.865854 0.237805 vt 0.865854 0.243902 +vt 0.859756 0.250000 vt 0.878049 0.262195 +vt 0.884146 0.250000 +vt 0.884146 0.225610 +vt 0.878049 0.225610 +vt 0.859756 0.225610 +vt 0.865854 0.237805 +vt 0.865854 0.256098 vt 0.878049 0.250000 vt 0.890244 0.219512 -vt 0.884146 0.225610 -vt 0.859756 0.225610 +vt 0.890244 0.237805 vt 0.865854 0.231707 -vt 0.865854 0.256098 vt 0.871951 0.250000 -vt 0.896341 0.225610 -vt 0.896341 0.250000 -vt 0.865854 0.219512 -vt 0.859756 0.250000 -vt 0.939024 0.237805 -vt 0.945122 0.213415 -vt 0.926829 0.237805 -vt 0.932927 0.213415 -vt 0.957317 0.237805 -vt 0.957317 0.213415 -vt 0.920732 0.237805 -vt 0.920732 0.213415 -vt 0.951219 0.237805 -vt 0.969512 0.237805 -vt 0.969512 0.213415 -vt 0.914634 0.237805 -vt 0.945122 0.237805 -vt 0.932927 0.237805 -vt 0.963415 0.237805 -vt 0.341463 0.524390 vt 0.298781 0.548781 +vt 0.298781 0.597561 vt 0.341463 0.621951 -vt 0.463415 0.402439 -vt 0.487805 0.402439 -vt 0.487805 0.621951 -vt 0.512195 0.402439 -vt 0.512195 0.621951 -vt 0.536585 0.402439 -vt 0.536585 0.621951 -vt 0.560976 0.402439 -vt 0.585366 0.402439 -vt 0.585366 0.621951 -vt 0.609756 0.402439 -vt 0.609756 0.621951 -vt 0.634146 0.402439 -vt 0.634146 0.621951 -vt 0.414634 0.402439 -vt 0.439024 0.402439 -vt 0.439024 0.621951 -vt 0.390244 0.402439 -vt 0.414634 0.621951 -vt 0.658537 0.402439 -vt 0.682927 0.402439 -vt 0.682927 0.621951 -vt 0.658537 0.621951 -vt 0.560976 0.621951 -vt 0.463415 0.621951 -vt 0.341463 0.426829 vt 0.298781 0.451219 -vt 0.439024 0.182927 -vt 0.487805 0.182927 -vt 0.512195 0.182927 -vt 0.536585 0.182927 -vt 0.585366 0.182927 -vt 0.634146 0.182927 -vt 0.682927 0.182927 -vt 0.390244 0.182927 -vt 0.268293 0.621951 -vt 0.707317 0.231707 +vt 0.298781 0.500000 +vt 0.341463 0.524390 +vt 0.000000 0.292683 +vt -0.000000 0.292683 +vt 0.000000 0.292683 +vt -0.000000 0.000000 +vt 0.268293 0.353659 +vt 0.390244 0.207317 +vt 0.317073 0.310976 +vt 0.390244 0.256098 +vt 0.365854 0.310976 +vt 0.292683 0.207317 +vt 0.365854 0.310976 +vt 0.317073 0.310976 +vt 0.902439 0.335366 +vt 0.902439 0.335366 +vt 0.024390 0.378049 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.756098 0.182927 +vt 0.756098 0.182927 +vt 0.463415 0.182927 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 vt 0.835366 0.256098 vt 0.847561 0.243902 vt 0.853659 0.225610 vt 0.835366 0.195122 +vt 0.817073 0.189024 vt 0.798781 0.195122 -vt 0.786585 0.207317 vt 0.780488 0.225610 +vt 0.786585 0.243902 vt 0.798781 0.256098 -vt 0.780488 0.164634 -vt 0.975610 0.237805 vt 0.365854 0.615854 vt 0.384146 0.597561 vt 0.390244 0.573171 vt 0.384146 0.548781 vt 0.365854 0.530488 +vt 0.341463 0.524390 vt 0.317073 0.530488 vt 0.292683 0.573171 -vt 0.298781 0.597561 vt 0.317073 0.615854 -vt 0.390244 0.621951 vt 0.365854 0.518293 vt 0.384146 0.500000 vt 0.390244 0.475610 vt 0.384146 0.451219 vt 0.365854 0.432927 +vt 0.341463 0.426829 vt 0.317073 0.432927 vt 0.292683 0.475610 -vt 0.298781 0.500000 vt 0.317073 0.518293 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.707100 0.707100 0.000000 -vn -0.707100 0.707100 0.000000 -vn 0.000000 0.707100 -0.707100 -vn 0.000000 0.707100 0.707100 -vn -0.447200 0.000000 0.894400 -vn -0.447200 0.894400 0.000000 -vn 0.000000 1.000000 0.000000 -vn -0.447200 0.000000 -0.894400 -vn 0.351100 0.000000 -0.936300 -vn 0.351100 0.000000 0.936300 -vn 0.351100 0.936300 0.000000 -vn 0.351100 -0.936300 0.000000 -vn 0.447200 0.000000 0.894400 -vn 0.447200 0.894400 0.000000 -vn 0.447200 0.000000 -0.894400 -vn -0.351100 0.000000 -0.936300 -vn -0.351100 0.000000 0.936300 -vn -0.351100 0.936300 0.000000 -vn -0.351100 -0.936300 0.000000 -vn 0.965900 0.000000 -0.258800 -vn 0.707100 0.000000 -0.707100 -vn 0.965900 0.000000 0.258800 -vn 0.707100 0.000000 0.707100 -vn 0.258800 0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.707100 0.000000 0.707100 -vn -0.965900 0.000000 0.258800 -vn 0.258800 0.000000 -0.965900 -vn -0.258800 0.000000 -0.965900 -vn -0.707100 0.000000 -0.707100 -vn -0.965900 0.000000 -0.258800 -vn 0.694700 -0.694700 0.186200 -vn 0.508600 -0.694700 0.508600 -vn 0.186200 -0.694700 0.694700 -vn -0.186200 -0.694700 0.694700 -vn -0.508600 -0.694700 0.508600 -vn -0.694700 -0.694700 0.186200 -vn -0.694700 -0.694700 -0.186200 -vn 0.694700 -0.694700 -0.186200 -vn 0.508600 -0.694700 -0.508600 -vn 0.186200 -0.694700 -0.694700 -vn -0.186200 -0.694700 -0.694700 -vn -0.508600 -0.694700 -0.508600 -vn -0.962800 0.080200 -0.258000 -vn -0.704800 0.080200 -0.704800 -vn -0.962800 0.080200 0.258000 -vn -0.704800 0.080200 0.704800 -vn -0.258000 0.080200 0.962800 -vn -0.258000 0.080200 -0.962800 -vn 0.258000 0.080200 -0.962800 -vn 0.258000 0.080200 0.962800 -vn 0.704800 0.080200 0.704800 -vn 0.962800 0.080200 0.258000 -vn 0.962800 0.080200 -0.258000 -vn 0.704800 0.080200 -0.704800 +vt 0.853659 0.164634 +vt 0.835366 0.189024 +vt 0.835366 0.164634 +vt 0.871951 0.164634 +vt 0.853659 0.189024 +vt 0.817073 0.189024 +vt 0.817073 0.164634 +vt 0.798781 0.189024 +vt 0.798781 0.164634 +vt 0.780488 0.189024 +vt 0.780488 0.164634 +vt 1.000000 0.164634 +vt 0.981707 0.189024 +vt 0.981707 0.164634 +vt 0.963415 0.189024 +vt 0.963415 0.164634 +vt 0.945122 0.189024 +vt 0.945122 0.164634 +vt 0.890244 0.164634 +vt 0.871951 0.189024 +vt 0.908537 0.164634 +vt 0.890244 0.189024 +vt 0.926829 0.164634 +vt 0.908537 0.189024 +vt 0.926829 0.189024 +vt 0.817073 0.146341 +vt 0.780488 0.146341 +vt 0.981707 0.146341 +vt 0.945122 0.146341 +vt 0.926829 0.146341 +vt 0.835366 0.146341 +vt 0.853659 0.146341 +vt 0.871951 0.146341 +vt 0.890244 0.146341 +vt 0.908537 0.146341 +vt 0.945122 -0.000000 +vt 0.926829 -0.000000 +vt 0.908537 0.000000 +vt 0.963415 0.000000 +vt 0.981707 0.000000 +vt 0.963415 0.146341 +vt 1.000000 0.000000 +vt 0.890244 -0.000000 +vt 0.871951 -0.000000 +vt 0.798781 -0.000000 +vt 0.780488 -0.000000 +vt 0.817073 0.000000 +vt 0.798781 0.146341 +vt 0.853659 -0.000000 +vt 0.835366 -0.000000 +vt 0.908537 0.237805 +vt 0.914634 0.213415 +vt 0.914634 0.237805 +vt 0.865854 0.189024 +vt 0.853659 0.213415 +vt 0.853659 0.189024 +vt 0.975610 0.189024 +vt 0.963415 0.213415 +vt 0.963415 0.189024 +vt 0.902439 0.189024 +vt 0.914634 0.213415 +vt 0.902439 0.213415 +vt 0.926829 0.189024 +vt 0.939024 0.213415 +vt 0.926829 0.213415 +vt 0.878049 0.189024 +vt 0.865854 0.213415 +vt 0.987805 0.189024 +vt 0.975610 0.213415 +vt 0.914634 0.189024 +vt 0.939024 0.189024 +vt 0.951219 0.213415 +vt 0.890244 0.189024 +vt 0.878049 0.213415 +vt 1.000000 0.189024 +vt 0.987805 0.213415 +vt 0.951219 0.189024 +vt 0.890244 0.213415 +vt 0.939024 0.237805 +vt 0.945122 0.213415 +vt 0.945122 0.237805 +vt 0.926829 0.237805 +vt 0.932927 0.213415 +vt 0.932927 0.237805 +vt 0.957317 0.237805 +vt 0.963415 0.213415 +vt 0.963415 0.237805 +vt 0.902439 0.237805 +vt 0.908537 0.213415 +vt 0.920732 0.237805 +vt 0.926829 0.213415 +vt 0.951219 0.237805 +vt 0.957317 0.213415 +vt 0.969512 0.237805 +vt 0.975610 0.213415 +vt 0.975610 0.237805 +vt 0.920732 0.213415 +vt 0.951219 0.213415 +vt 0.939024 0.213415 +vt 0.969512 0.213415 +vt 0.463415 0.402439 +vt 0.487805 0.621951 +vt 0.463415 0.621951 +vt 0.487805 0.402439 +vt 0.512195 0.621951 +vt 0.512195 0.402439 +vt 0.536585 0.621951 +vt 0.560976 0.402439 +vt 0.585366 0.621951 +vt 0.560976 0.621951 +vt 0.585366 0.402439 +vt 0.609756 0.621951 +vt 0.609756 0.402439 +vt 0.634146 0.621951 +vt 0.414634 0.402439 +vt 0.439024 0.621951 +vt 0.414634 0.621951 +vt 0.390244 0.402439 +vt 0.390244 0.621951 +vt 0.658537 0.402439 +vt 0.682927 0.621951 +vt 0.658537 0.621951 +vt 0.634146 0.402439 +vt 0.536585 0.402439 +vt 0.439024 0.402439 +vt 0.439024 0.182927 +vt 0.463415 0.402439 +vt 0.439024 0.402439 +vt 0.463415 0.182927 +vt 0.487805 0.402439 +vt 0.487805 0.182927 +vt 0.512195 0.402439 +vt 0.512195 0.182927 +vt 0.536585 0.402439 +vt 0.536585 0.182927 +vt 0.560976 0.402439 +vt 0.560976 0.182927 +vt 0.585366 0.402439 +vt 0.585366 0.182927 +vt 0.609756 0.402439 +vt 0.609756 0.182927 +vt 0.634146 0.402439 +vt 0.634146 0.182927 +vt 0.658537 0.402439 +vt 0.658537 0.182927 +vt 0.682927 0.402439 +vt 0.390244 0.182927 +vt 0.414634 0.402439 +vt 0.390244 0.402439 +vt 0.414634 0.182927 +vt 1.000000 0.189024 +vt 1.000000 0.146341 +vt 1.000000 0.213415 +vt 0.902439 0.213415 +vt 0.682927 0.402439 +vt 0.682927 0.182927 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.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.4472 0.0000 0.8944 +vn -0.4472 0.8944 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.4472 0.0000 -0.8944 +vn 0.3511 0.0000 -0.9363 +vn 0.3511 0.0000 0.9363 +vn 0.3511 0.9363 0.0000 +vn 0.3511 -0.9363 0.0000 +vn 0.4472 0.0000 0.8944 +vn 0.4472 0.8944 0.0000 +vn 0.4472 0.0000 -0.8944 +vn -0.3511 0.0000 -0.9363 +vn -0.3511 0.0000 0.9363 +vn -0.3511 0.9363 0.0000 +vn -0.3511 -0.9363 0.0000 +vn 0.8660 0.0000 -0.5000 +vn 0.5000 0.0000 -0.8660 +vn 0.8660 0.0000 0.5000 +vn 0.5000 0.0000 0.8660 +vn -0.5000 0.0000 0.8660 +vn -0.8660 0.0000 0.5000 +vn -0.5000 0.0000 -0.8660 +vn -0.8660 0.0000 -0.5000 +vn 0.6124 -0.7071 0.3536 +vn 0.7071 -0.7071 0.0000 +vn 0.3536 -0.7071 0.6124 +vn -0.0000 -0.7071 0.7071 +vn -0.3536 -0.7071 0.6124 +vn -0.6124 -0.7071 0.3536 +vn -0.7071 -0.7071 -0.0000 +vn -0.6124 -0.7071 -0.3536 +vn 0.6124 -0.7071 -0.3536 +vn 0.3536 -0.7071 -0.6124 +vn 0.0000 -0.7071 -0.7071 +vn -0.3536 -0.7071 -0.6124 +vn -0.9965 0.0830 0.0000 +vn -0.8630 0.0830 -0.4983 +vn -0.4983 0.0830 -0.8630 +vn -0.8630 0.0830 0.4983 +vn -0.4983 0.0830 0.8630 +vn -0.0000 0.0830 0.9965 +vn 0.0000 0.0830 -0.9965 +vn 0.4983 0.0830 -0.8630 +vn 0.4983 0.0830 0.8630 +vn 0.8630 0.0830 0.4983 +vn 0.9965 0.0830 0.0000 +vn 0.8630 0.0830 -0.4983 s off -f 4/1/1 3/2/1 1/3/1 -f 8/1/2 7/2/2 3/3/2 -f 6/1/3 5/2/3 7/3/3 -f 2/1/4 1/2/4 5/3/4 -f 3/2/5 7/4/5 5/5/5 -f 12/6/6 6/1/6 8/7/6 -f 4/1/7 2/7/7 9/8/7 -f 8/1/8 4/7/8 10/8/8 -f 6/7/9 12/8/9 9/6/9 -f 20/9/2 19/10/2 22/11/2 -f 19/12/3 26/13/3 28/14/3 -f 14/15/10 13/16/10 24/17/10 -f 22/10/5 19/11/5 17/17/5 -f 21/11/11 16/15/11 14/16/11 -f 20/10/12 21/11/12 23/17/12 -f 23/11/4 24/17/4 17/9/4 -f 21/17/13 22/11/13 15/15/13 -f 28/14/14 32/18/14 31/19/14 -f 18/9/3 27/20/3 25/21/3 -f 20/10/3 25/21/3 26/13/3 -f 17/22/3 28/14/3 27/20/3 -f 31/19/3 32/18/3 30/23/3 -f 25/21/15 29/24/15 30/23/15 -f 26/13/16 30/23/16 32/18/16 -f 27/20/17 31/19/17 29/24/17 -f 42/17/2 39/9/2 40/10/2 -f 48/20/1 46/21/1 39/10/1 -f 44/11/18 33/15/18 34/16/18 -f 37/9/5 39/10/5 42/11/5 -f 34/15/19 36/16/19 41/17/19 -f 43/11/12 41/17/12 40/9/12 -f 37/10/4 44/11/4 43/17/4 -f 35/16/20 42/17/20 41/11/20 -f 51/18/21 52/19/21 48/20/21 -f 45/13/1 47/14/1 38/22/1 -f 46/21/1 45/13/1 40/12/1 -f 47/14/1 48/20/1 37/9/1 -f 50/24/1 52/19/1 51/18/1 -f 50/24/22 49/23/22 45/13/22 -f 52/19/23 50/24/23 46/21/23 -f 49/23/24 51/18/24 47/14/24 -f 59/25/3 53/26/3 54/27/3 -f 56/28/1 58/29/1 57/30/1 -f 60/31/12 54/27/12 58/29/12 -f 55/32/5 57/30/5 53/33/5 -f 54/34/2 53/33/2 57/30/2 -f 67/25/3 61/26/3 62/27/3 -f 64/28/1 66/29/1 65/30/1 -f 68/31/12 62/27/12 66/29/12 -f 63/32/5 65/30/5 61/33/5 -f 62/34/2 61/33/2 65/30/2 -f 70/29/3 69/30/3 75/32/3 -f 73/26/1 74/27/1 72/31/1 -f 74/27/12 70/29/12 76/28/12 -f 69/30/5 73/33/5 71/35/5 -f 73/33/4 69/30/4 70/36/4 -f 78/29/3 77/30/3 83/32/3 -f 81/26/1 82/27/1 80/31/1 -f 82/27/12 78/29/12 84/28/12 -f 77/30/5 81/33/5 79/35/5 -f 81/33/4 77/30/4 78/36/4 -f 86/37/2 85/15/2 87/38/2 -f 89/37/4 90/38/4 88/15/4 -f 92/39/2 91/40/2 93/41/2 -f 95/39/4 96/41/4 94/40/4 -f 10/6/1 9/8/1 98/42/1 -f 97/43/3 12/6/3 11/8/3 -f 9/6/4 12/8/4 97/42/4 -f 99/42/2 100/43/2 11/6/2 -f 98/44/12 97/43/12 100/42/12 -f 131/45/12 132/46/12 129/12/12 -f 128/47/3 132/46/3 131/45/3 -f 125/47/1 130/46/1 129/45/1 -f 127/47/2 129/46/2 132/45/2 -f 126/47/4 131/46/4 130/45/4 -f 163/45/12 164/46/12 161/12/12 -f 160/47/3 164/46/3 163/45/3 -f 157/47/1 162/46/1 161/45/1 -f 159/47/2 161/46/2 164/45/2 -f 158/47/4 163/46/4 162/45/4 -f 172/48/8 169/49/8 173/50/8 -f 168/51/3 172/48/3 171/52/3 -f 167/53/2 169/49/2 172/48/2 -f 166/54/4 171/55/4 170/56/4 -f 175/57/12 176/58/12 173/59/12 -f 171/55/9 175/58/9 174/57/9 -f 172/48/6 176/60/6 175/61/6 -f 170/56/7 174/62/7 173/63/7 -f 167/53/1 165/64/1 170/56/1 -f 207/45/12 208/46/12 205/12/12 -f 204/47/3 208/46/3 207/45/3 -f 201/47/1 206/46/1 205/45/1 -f 203/47/2 205/46/2 208/45/2 -f 202/47/4 207/46/4 206/45/4 -f 197/65/12 191/66/12 179/67/12 -f 215/68/25 194/69/25 195/70/25 -f 216/71/26 193/72/26 194/69/26 -f 214/73/27 195/70/27 196/74/27 -f 213/75/28 196/74/28 197/76/28 -f 212/77/29 197/76/29 198/78/29 -f 211/79/30 198/80/30 199/81/30 -f 210/82/31 199/81/31 200/83/31 -f 209/84/32 200/83/32 179/85/32 -f 217/86/33 192/87/33 193/72/33 -f 218/88/34 191/89/34 192/87/34 -f 219/90/35 180/91/35 191/89/35 -f 220/92/36 179/85/36 180/91/36 -f 229/93/37 230/94/37 214/73/37 -f 212/77/38 228/95/38 229/93/38 -f 227/55/39 228/95/39 212/77/39 -f 226/96/40 227/97/40 211/79/40 -f 209/84/41 225/98/41 226/96/41 -f 224/99/42 225/98/42 209/84/42 -f 223/100/43 224/99/43 220/92/43 -f 214/73/44 230/94/44 231/101/44 -f 231/101/45 232/102/45 216/71/45 -f 216/71/46 232/102/46 221/103/46 -f 221/103/47 222/104/47 218/88/47 -f 222/104/48 223/100/48 219/90/48 -f 190/105/49 224/99/49 223/100/49 -f 188/106/50 189/107/50 223/100/50 -f 190/105/51 177/108/51 225/98/51 -f 178/109/52 226/96/52 225/98/52 -f 181/110/53 227/97/53 226/96/53 -f 187/111/54 188/106/54 222/104/54 -f 187/111/55 221/103/55 232/102/55 -f 182/112/56 228/95/56 227/55/56 -f 183/113/57 229/93/57 228/95/57 -f 184/114/58 230/94/58 229/93/58 -f 185/115/59 231/101/59 230/94/59 -f 185/115/60 186/116/60 232/102/60 -f 262/117/26 274/118/26 273/119/26 -f 246/120/12 258/121/12 268/122/12 -f 240/123/29 252/124/29 251/125/29 -f 237/126/32 249/127/32 248/128/32 -f 244/129/26 256/119/26 255/130/26 -f 234/131/34 245/132/34 246/133/34 -f 241/134/28 253/135/28 252/124/28 -f 237/126/31 238/136/31 250/137/31 -f 233/91/33 246/133/33 256/119/33 -f 235/138/35 247/139/35 245/132/35 -f 242/87/27 254/140/27 253/135/27 -f 239/80/30 251/141/30 250/137/30 -f 236/83/36 248/128/36 247/139/36 -f 243/142/25 255/130/25 254/140/25 -f 247/143/12 259/144/12 257/145/12 -f 254/135/12 266/146/12 265/147/12 -f 251/148/12 263/149/12 262/150/12 -f 248/151/12 260/152/12 259/144/12 -f 254/135/12 255/153/12 267/154/12 -f 251/148/12 252/155/12 264/156/12 -f 249/157/12 261/158/12 260/152/12 -f 256/159/12 268/122/12 267/154/12 -f 245/160/12 257/145/12 258/121/12 -f 253/161/12 265/147/12 264/156/12 -f 250/162/12 262/150/12 261/158/12 -f 258/163/30 270/132/30 280/164/30 -f 259/165/28 271/133/28 269/166/28 -f 266/167/36 278/168/36 277/128/36 -f 263/120/33 275/130/33 274/118/33 -f 260/169/27 272/170/27 271/133/27 -f 267/171/32 279/139/32 278/168/32 -f 264/172/34 276/173/34 275/127/34 -f 261/174/25 273/119/25 272/170/25 -f 268/175/31 280/164/31 279/139/31 -f 257/176/29 269/166/29 270/132/29 -f 265/177/35 277/128/35 276/173/35 -f 107/178/12 109/179/12 101/180/12 -f 116/181/32 117/182/32 105/183/32 -f 117/182/31 118/184/31 106/185/31 -f 118/184/30 119/186/30 107/187/30 -f 120/188/28 121/189/28 109/190/28 -f 121/189/27 122/191/27 110/192/27 -f 122/191/25 123/193/25 111/194/25 -f 113/195/35 115/196/35 103/197/35 -f 114/198/34 113/195/34 102/199/34 -f 124/200/33 114/201/33 101/202/33 -f 123/193/26 124/200/26 112/203/26 -f 119/186/29 120/188/29 108/204/29 -f 115/196/36 116/181/36 104/205/36 -f 139/206/12 141/207/12 133/178/12 -f 147/208/36 148/60/36 136/181/36 -f 148/60/32 149/209/32 137/182/32 -f 149/209/31 150/210/31 138/184/31 -f 150/210/30 151/211/30 139/186/30 -f 151/211/29 152/50/29 140/188/29 -f 152/50/28 153/212/28 141/189/28 -f 153/212/27 154/63/27 142/191/27 -f 154/63/25 155/213/25 143/193/25 -f 155/213/26 156/62/26 144/200/26 -f 156/62/33 146/214/33 133/201/33 -f 146/215/34 145/61/34 134/195/34 -f 145/61/35 147/208/35 135/196/35 -f 2/7/1 4/1/1 1/3/1 -f 4/7/2 8/1/2 3/3/2 -f 8/7/3 6/1/3 7/3/3 -f 6/7/4 2/1/4 5/3/4 -f 1/3/5 3/2/5 5/5/5 -f 11/8/6 12/6/6 8/7/6 -f 10/6/7 4/1/7 9/8/7 -f 11/6/8 8/1/8 10/8/8 -f 2/1/9 6/7/9 9/6/9 -f 21/17/2 20/9/2 22/11/2 -f 17/22/3 19/12/3 28/14/3 -f 23/11/10 14/15/10 24/17/10 -f 24/9/5 22/10/5 17/17/5 -f 23/17/11 21/11/11 14/16/11 -f 18/9/12 20/10/12 23/17/12 -f 18/10/4 23/11/4 17/9/4 -f 16/16/13 21/17/13 15/15/13 -f 27/20/14 28/14/14 31/19/14 -f 20/10/3 18/9/3 25/21/3 -f 19/12/3 20/10/3 26/13/3 -f 18/9/3 17/22/3 27/20/3 -f 29/24/3 31/19/3 30/23/3 -f 26/13/15 25/21/15 30/23/15 -f 28/14/16 26/13/16 32/18/16 -f 25/21/17 27/20/17 29/24/17 -f 41/11/2 42/17/2 40/10/2 -f 37/9/1 48/20/1 39/10/1 -f 43/17/18 44/11/18 34/16/18 -f 44/17/5 37/9/5 42/11/5 -f 43/11/19 34/15/19 41/17/19 -f 38/10/12 43/11/12 40/9/12 -f 38/9/4 37/10/4 43/17/4 -f 36/15/20 35/16/20 41/11/20 -f 47/14/21 51/18/21 48/20/21 -f 40/12/1 45/13/1 38/22/1 -f 39/10/1 46/21/1 40/12/1 -f 38/22/1 47/14/1 37/9/1 -f 49/23/1 50/24/1 51/18/1 -f 46/21/22 50/24/22 45/13/22 -f 48/20/23 52/19/23 46/21/23 -f 45/13/24 49/23/24 47/14/24 -f 60/31/3 59/25/3 54/27/3 -f 55/32/1 56/28/1 57/30/1 -f 56/28/12 60/31/12 58/29/12 -f 59/35/5 55/32/5 53/33/5 -f 58/36/2 54/34/2 57/30/2 -f 68/31/3 67/25/3 62/27/3 -f 63/32/1 64/28/1 65/30/1 -f 64/28/12 68/31/12 66/29/12 -f 67/35/5 63/32/5 61/33/5 -f 66/36/2 62/34/2 65/30/2 -f 76/28/3 70/29/3 75/32/3 -f 71/25/1 73/26/1 72/31/1 -f 72/31/12 74/27/12 76/28/12 -f 75/32/5 69/30/5 71/35/5 -f 74/34/4 73/33/4 70/36/4 -f 84/28/3 78/29/3 83/32/3 -f 79/25/1 81/26/1 80/31/1 -f 80/31/12 82/27/12 84/28/12 -f 83/32/5 77/30/5 79/35/5 -f 82/34/4 81/33/4 78/36/4 -f 99/43/1 10/6/1 98/42/1 -f 100/42/3 97/43/3 11/8/3 -f 98/43/4 9/6/4 97/42/4 -f 10/8/2 99/42/2 11/6/2 -f 99/216/12 98/44/12 100/42/12 -f 130/22/12 131/45/12 129/12/12 -f 126/5/3 128/47/3 131/45/3 -f 127/5/1 125/47/1 129/45/1 -f 128/5/2 127/47/2 132/45/2 -f 125/5/4 126/47/4 130/45/4 -f 162/22/12 163/45/12 161/12/12 -f 158/5/3 160/47/3 163/45/3 -f 159/5/1 157/47/1 161/45/1 -f 160/5/2 159/47/2 164/45/2 -f 157/5/4 158/47/4 162/45/4 -f 176/210/8 172/48/8 173/50/8 -f 166/47/3 168/51/3 171/52/3 -f 168/51/2 167/53/2 172/48/2 -f 165/64/4 166/54/4 170/56/4 -f 174/217/12 175/57/12 173/59/12 -f 170/56/9 171/55/9 174/57/9 -f 171/52/6 172/48/6 175/61/6 -f 169/49/7 170/56/7 173/63/7 -f 169/49/1 167/53/1 170/56/1 -f 206/22/12 207/45/12 205/12/12 -f 202/5/3 204/47/3 207/45/3 -f 203/5/1 201/47/1 205/45/1 -f 204/5/2 203/47/2 208/45/2 -f 201/5/4 202/47/4 206/45/4 -f 179/67/12 200/218/12 199/219/12 -f 199/219/12 198/220/12 197/65/12 -f 197/65/12 196/221/12 195/74/12 -f 195/74/12 194/222/12 193/223/12 -f 193/223/12 192/224/12 191/66/12 -f 191/66/12 180/225/12 179/67/12 -f 179/67/12 199/219/12 197/65/12 -f 197/65/12 195/74/12 193/223/12 -f 193/223/12 191/66/12 197/65/12 -f 214/73/25 215/68/25 195/70/25 -f 215/68/26 216/71/26 194/69/26 -f 213/75/27 214/73/27 196/74/27 -f 212/77/28 213/75/28 197/76/28 -f 211/226/29 212/77/29 198/78/29 -f 210/82/30 211/79/30 199/81/30 -f 209/84/31 210/82/31 200/83/31 -f 220/92/32 209/84/32 179/85/32 -f 216/71/33 217/86/33 193/72/33 -f 217/86/34 218/88/34 192/87/34 -f 218/88/35 219/90/35 191/89/35 -f 219/90/36 220/92/36 180/91/36 -f 213/75/37 229/93/37 214/73/37 -f 213/75/38 212/77/38 229/93/38 -f 211/226/39 227/55/39 212/77/39 -f 210/82/40 226/96/40 211/79/40 -f 210/82/41 209/84/41 226/96/41 -f 220/92/42 224/99/42 209/84/42 -f 219/90/43 223/100/43 220/92/43 -f 215/68/44 214/73/44 231/101/44 -f 215/68/45 231/101/45 216/71/45 -f 217/86/46 216/71/46 221/103/46 -f 217/86/47 221/103/47 218/88/47 -f 218/88/48 222/104/48 219/90/48 -f 189/107/49 190/105/49 223/100/49 -f 222/104/50 188/106/50 223/100/50 -f 224/99/51 190/105/51 225/98/51 -f 177/108/52 178/109/52 225/98/52 -f 178/109/53 181/110/53 226/96/53 -f 221/103/54 187/111/54 222/104/54 -f 186/116/55 187/111/55 232/102/55 -f 181/54/56 182/112/56 227/55/56 -f 182/112/57 183/113/57 228/95/57 -f 183/113/58 184/114/58 229/93/58 -f 184/114/59 185/115/59 230/94/59 -f 231/101/60 185/115/60 232/102/60 -f 261/174/26 262/117/26 273/119/26 -f 256/159/12 246/120/12 268/122/12 -f 239/69/29 240/123/29 251/125/29 -f 236/83/32 237/126/32 248/128/32 -f 243/142/26 244/129/26 255/130/26 -f 233/91/34 234/131/34 246/133/34 -f 240/123/28 241/134/28 252/124/28 -f 249/127/31 237/126/31 250/137/31 -f 244/129/33 233/91/33 256/119/33 -f 234/131/35 235/138/35 245/132/35 -f 241/134/27 242/87/27 253/135/27 -f 238/136/30 239/80/30 250/137/30 -f 235/138/36 236/83/36 247/139/36 -f 242/87/25 243/142/25 254/140/25 -f 245/160/12 247/143/12 257/145/12 -f 253/161/12 254/135/12 265/147/12 -f 250/162/12 251/148/12 262/150/12 -f 247/143/12 248/151/12 259/144/12 -f 266/146/12 254/135/12 267/154/12 -f 263/149/12 251/148/12 264/156/12 -f 248/151/12 249/157/12 260/152/12 -f 255/153/12 256/159/12 267/154/12 -f 246/120/12 245/160/12 258/121/12 -f 252/155/12 253/161/12 264/156/12 -f 249/157/12 250/162/12 261/158/12 -f 268/175/30 258/163/30 280/164/30 -f 257/176/28 259/165/28 269/166/28 -f 265/177/36 266/167/36 277/128/36 -f 262/117/33 263/120/33 274/118/33 -f 259/165/27 260/169/27 271/133/27 -f 266/167/32 267/171/32 278/168/32 -f 263/227/34 264/172/34 275/127/34 -f 260/169/25 261/174/25 272/170/25 -f 267/171/31 268/175/31 279/139/31 -f 258/163/29 257/176/29 270/132/29 -f 264/172/35 265/177/35 276/173/35 -f 101/180/12 102/228/12 103/229/12 -f 103/229/12 104/230/12 105/231/12 -f 105/231/12 106/232/12 107/178/12 -f 107/178/12 108/233/12 109/179/12 -f 109/179/12 110/234/12 111/235/12 -f 111/235/12 112/236/12 101/180/12 -f 101/180/12 103/229/12 105/231/12 -f 105/231/12 107/178/12 101/180/12 -f 109/179/12 111/235/12 101/180/12 -f 104/205/32 116/181/32 105/183/32 -f 105/183/31 117/182/31 106/185/31 -f 106/185/30 118/184/30 107/187/30 -f 108/204/28 120/188/28 109/190/28 -f 109/190/27 121/189/27 110/192/27 -f 110/192/25 122/191/25 111/194/25 -f 102/199/35 113/195/35 103/197/35 -f 101/237/34 114/198/34 102/199/34 -f 112/203/33 124/200/33 101/202/33 -f 111/194/26 123/193/26 112/203/26 -f 107/187/29 119/186/29 108/204/29 -f 103/197/36 115/196/36 104/205/36 -f 133/178/12 134/238/12 135/239/12 -f 135/239/12 136/240/12 133/178/12 -f 137/241/12 138/242/12 139/206/12 -f 139/206/12 140/243/12 141/207/12 -f 141/207/12 142/244/12 143/245/12 -f 143/245/12 144/246/12 133/178/12 -f 133/178/12 136/240/12 137/241/12 -f 137/241/12 139/206/12 133/178/12 -f 141/207/12 143/245/12 133/178/12 -f 135/196/36 147/208/36 136/181/36 -f 136/181/32 148/60/32 137/182/32 -f 137/182/31 149/209/31 138/184/31 -f 138/184/30 150/210/30 139/186/30 -f 139/186/29 151/211/29 140/188/29 -f 140/188/28 152/50/28 141/189/28 -f 141/189/27 153/212/27 142/191/27 -f 142/191/25 154/63/25 143/193/25 -f 143/193/26 155/213/26 144/200/26 -f 144/200/33 156/62/33 133/201/33 -f 133/198/34 146/215/34 134/195/34 -f 134/195/35 145/61/35 135/196/35 +f 4/1/1 1/2/1 2/3/1 +f 8/4/2 3/5/2 4/6/2 +f 6/7/3 7/8/3 8/9/3 +f 2/10/4 5/11/4 6/12/4 +f 3/13/5 5/14/5 1/2/5 +f 12/15/6 8/9/6 11/16/6 +f 4/1/7 9/17/7 10/18/7 +f 8/4/8 10/19/8 11/20/8 +f 6/12/9 9/21/9 2/10/9 +f 20/22/2 22/23/2 21/24/2 +f 19/25/3 28/26/3 17/27/3 +f 14/28/10 24/29/10 23/30/10 +f 22/31/5 17/32/5 24/33/5 +f 21/34/11 14/35/11 23/36/11 +f 20/37/12 23/36/12 18/38/12 +f 23/30/4 17/39/4 18/40/4 +f 21/24/13 15/41/13 16/42/13 +f 28/26/14 31/43/14 27/44/14 +f 18/38/3 25/45/3 20/37/3 +f 20/37/3 26/46/3 19/25/3 +f 17/27/3 27/44/3 18/38/3 +f 31/43/3 30/47/3 29/48/3 +f 25/45/15 30/47/15 26/46/15 +f 26/46/16 32/49/16 28/26/16 +f 27/44/17 29/48/17 25/45/17 +f 42/50/2 40/51/2 41/52/2 +f 48/53/1 39/54/1 37/55/1 +f 44/56/18 34/57/18 43/58/18 +f 37/55/5 42/59/5 44/60/5 +f 34/61/19 41/62/19 43/63/19 +f 43/63/12 40/64/12 38/65/12 +f 37/66/4 43/58/4 38/67/4 +f 35/68/20 41/52/20 36/69/20 +f 51/70/21 48/53/21 47/71/21 +f 45/72/1 38/73/1 40/74/1 +f 46/75/1 40/74/1 39/54/1 +f 47/71/1 37/55/1 38/73/1 +f 50/76/1 51/70/1 49/77/1 +f 50/76/22 45/72/22 46/75/22 +f 52/78/23 46/75/23 48/53/23 +f 49/77/24 47/71/24 45/72/24 +f 59/79/3 54/80/3 60/81/3 +f 56/82/1 57/83/1 55/84/1 +f 60/81/12 58/85/12 56/82/12 +f 55/84/5 53/86/5 59/87/5 +f 54/88/2 57/83/2 58/89/2 +f 67/90/3 62/91/3 68/92/3 +f 64/93/1 65/94/1 63/95/1 +f 68/92/12 66/96/12 64/93/12 +f 63/95/5 61/97/5 67/98/5 +f 62/99/2 65/94/2 66/100/2 +f 70/101/3 75/102/3 76/103/3 +f 73/104/1 72/105/1 71/106/1 +f 74/107/12 76/103/12 72/105/12 +f 69/108/5 71/109/5 75/102/5 +f 73/110/4 70/111/4 74/112/4 +f 78/113/3 83/114/3 84/115/3 +f 81/116/1 80/117/1 79/118/1 +f 82/119/12 84/115/12 80/117/12 +f 77/120/5 79/121/5 83/114/5 +f 81/122/4 78/123/4 82/124/4 +f 86/125/2 85/126/2 87/127/2 +f 89/128/4 90/129/4 88/130/4 +f 92/131/2 91/132/2 93/133/2 +f 95/134/4 96/135/4 94/136/4 +f 10/18/1 98/137/1 99/138/1 +f 97/139/3 11/16/3 100/140/3 +f 9/21/4 97/141/4 98/142/4 +f 99/143/2 11/20/2 10/19/2 +f 98/144/12 100/140/12 99/145/12 +f 131/146/12 129/147/12 130/148/12 +f 128/149/3 131/146/3 126/150/3 +f 125/151/1 129/152/1 127/153/1 +f 127/154/2 132/155/2 128/156/2 +f 126/157/4 130/158/4 125/159/4 +f 163/160/12 161/161/12 162/162/12 +f 160/163/3 163/160/3 158/164/3 +f 157/165/1 161/166/1 159/167/1 +f 159/168/2 164/169/2 160/170/2 +f 158/171/4 162/172/4 157/173/4 +f 172/174/8 173/175/8 176/176/8 +f 168/177/3 171/178/3 166/179/3 +f 167/180/2 172/174/2 168/177/2 +f 166/181/4 170/182/4 165/183/4 +f 175/184/12 173/185/12 174/186/12 +f 171/187/9 174/188/9 170/182/9 +f 172/174/6 175/189/6 171/178/6 +f 169/190/7 174/191/7 173/192/7 +f 167/180/1 170/182/1 169/190/1 +f 207/193/12 205/194/12 206/195/12 +f 204/196/3 207/193/3 202/197/3 +f 201/198/1 205/199/1 203/200/1 +f 203/201/2 208/202/2 204/203/2 +f 202/204/4 206/205/4 201/206/4 +f 197/207/12 193/208/12 179/209/12 +f 246/210/12 268/211/12 256/212/12 +f 247/213/12 257/214/12 245/215/12 +f 254/216/12 265/217/12 253/218/12 +f 251/219/12 262/220/12 250/221/12 +f 248/222/12 259/223/12 247/213/12 +f 254/216/12 267/224/12 266/225/12 +f 252/226/12 263/227/12 251/219/12 +f 249/228/12 260/229/12 248/222/12 +f 256/212/12 267/224/12 255/230/12 +f 245/215/12 258/231/12 246/210/12 +f 253/218/12 264/232/12 252/226/12 +f 250/221/12 261/233/12 249/228/12 +f 109/234/12 111/235/12 101/236/12 +f 141/237/12 143/238/12 133/239/12 +f 4/1/1 3/13/1 1/2/1 +f 8/4/2 7/240/2 3/5/2 +f 6/7/3 5/241/3 7/8/3 +f 2/10/4 1/242/4 5/11/4 +f 3/13/5 7/243/5 5/14/5 +f 12/15/6 6/7/6 8/9/6 +f 4/1/7 2/3/7 9/17/7 +f 8/4/8 4/6/8 10/19/8 +f 6/12/9 12/244/9 9/21/9 +f 20/22/2 19/245/2 22/23/2 +f 19/25/3 26/46/3 28/26/3 +f 14/28/10 13/246/10 24/29/10 +f 22/31/5 19/247/5 17/32/5 +f 21/34/11 16/248/11 14/35/11 +f 20/37/12 21/34/12 23/36/12 +f 23/30/4 24/29/4 17/39/4 +f 21/24/13 22/23/13 15/41/13 +f 28/26/14 32/49/14 31/43/14 +f 18/38/3 27/44/3 25/45/3 +f 20/37/3 25/45/3 26/46/3 +f 17/27/3 28/26/3 27/44/3 +f 31/43/3 32/49/3 30/47/3 +f 25/45/15 29/48/15 30/47/15 +f 26/46/16 30/47/16 32/49/16 +f 27/44/17 31/43/17 29/48/17 +f 42/50/2 39/249/2 40/51/2 +f 48/53/1 46/75/1 39/54/1 +f 44/56/18 33/250/18 34/57/18 +f 37/55/5 39/54/5 42/59/5 +f 34/61/19 36/251/19 41/62/19 +f 43/63/12 41/62/12 40/64/12 +f 37/66/4 44/56/4 43/58/4 +f 35/68/20 42/50/20 41/52/20 +f 51/70/21 52/78/21 48/53/21 +f 45/72/1 47/71/1 38/73/1 +f 46/75/1 45/72/1 40/74/1 +f 47/71/1 48/53/1 37/55/1 +f 50/76/1 52/78/1 51/70/1 +f 50/76/22 49/77/22 45/72/22 +f 52/78/23 50/76/23 46/75/23 +f 49/77/24 51/70/24 47/71/24 +f 59/79/3 53/252/3 54/80/3 +f 56/82/1 58/85/1 57/83/1 +f 60/81/12 54/80/12 58/85/12 +f 55/84/5 57/83/5 53/86/5 +f 54/88/2 53/86/2 57/83/2 +f 67/90/3 61/253/3 62/91/3 +f 64/93/1 66/96/1 65/94/1 +f 68/92/12 62/91/12 66/96/12 +f 63/95/5 65/94/5 61/97/5 +f 62/99/2 61/97/2 65/94/2 +f 70/101/3 69/108/3 75/102/3 +f 73/104/1 74/107/1 72/105/1 +f 74/107/12 70/101/12 76/103/12 +f 69/108/5 73/110/5 71/109/5 +f 73/110/4 69/108/4 70/111/4 +f 78/113/3 77/120/3 83/114/3 +f 81/116/1 82/119/1 80/117/1 +f 82/119/12 78/113/12 84/115/12 +f 77/120/5 81/122/5 79/121/5 +f 81/122/4 77/120/4 78/123/4 +f 10/18/1 9/17/1 98/137/1 +f 97/139/3 12/15/3 11/16/3 +f 9/21/4 12/244/4 97/141/4 +f 99/143/2 100/254/2 11/20/2 +f 98/144/12 97/139/12 100/140/12 +f 131/146/12 132/255/12 129/147/12 +f 128/149/3 132/255/3 131/146/3 +f 125/151/1 130/256/1 129/152/1 +f 127/154/2 129/257/2 132/155/2 +f 126/157/4 131/258/4 130/158/4 +f 163/160/12 164/259/12 161/161/12 +f 160/163/3 164/259/3 163/160/3 +f 157/165/1 162/260/1 161/166/1 +f 159/168/2 161/261/2 164/169/2 +f 158/171/4 163/262/4 162/172/4 +f 172/174/8 169/190/8 173/175/8 +f 168/177/3 172/174/3 171/178/3 +f 167/180/2 169/190/2 172/174/2 +f 166/181/4 171/187/4 170/182/4 +f 175/184/12 176/263/12 173/185/12 +f 171/187/9 175/264/9 174/188/9 +f 172/174/6 176/265/6 175/189/6 +f 169/190/7 170/182/7 174/191/7 +f 167/180/1 165/183/1 170/182/1 +f 207/193/12 208/266/12 205/194/12 +f 204/196/3 208/266/3 207/193/3 +f 201/198/1 206/267/1 205/199/1 +f 203/201/2 205/268/2 208/202/2 +f 202/204/4 207/269/4 206/205/4 +f 179/209/12 200/270/12 199/271/12 +f 199/271/12 198/272/12 197/207/12 +f 197/207/12 196/273/12 195/274/12 +f 195/274/12 194/275/12 193/208/12 +f 193/208/12 192/276/12 191/277/12 +f 191/277/12 180/278/12 193/208/12 +f 180/278/12 179/209/12 193/208/12 +f 179/209/12 199/271/12 197/207/12 +f 197/207/12 195/274/12 193/208/12 +f 246/210/12 258/231/12 268/211/12 +f 247/213/12 259/223/12 257/214/12 +f 254/216/12 266/225/12 265/217/12 +f 251/219/12 263/227/12 262/220/12 +f 248/222/12 260/229/12 259/223/12 +f 254/216/12 255/230/12 267/224/12 +f 252/226/12 264/232/12 263/227/12 +f 249/228/12 261/233/12 260/229/12 +f 256/212/12 268/211/12 267/224/12 +f 245/215/12 257/214/12 258/231/12 +f 253/218/12 265/217/12 264/232/12 +f 250/221/12 262/220/12 261/233/12 +f 101/236/12 102/279/12 103/280/12 +f 103/280/12 104/281/12 105/282/12 +f 105/282/12 106/283/12 107/284/12 +f 107/284/12 108/285/12 109/234/12 +f 109/234/12 110/286/12 111/235/12 +f 111/235/12 112/287/12 101/236/12 +f 101/236/12 103/280/12 105/282/12 +f 105/282/12 107/284/12 101/236/12 +f 107/284/12 109/234/12 101/236/12 +f 133/239/12 134/288/12 135/289/12 +f 135/289/12 136/290/12 133/239/12 +f 136/290/12 137/291/12 133/239/12 +f 137/291/12 138/292/12 139/293/12 +f 139/293/12 140/294/12 141/237/12 +f 141/237/12 142/295/12 143/238/12 +f 143/238/12 144/296/12 133/239/12 +f 137/291/12 139/293/12 133/239/12 +f 139/293/12 141/237/12 133/239/12 +s 1 +f 215/297/25 195/298/3 214/299/3 +f 216/300/26 194/301/25 215/297/25 +f 214/299/3 196/302/27 213/303/27 +f 213/303/27 197/304/28 212/305/28 +f 212/305/28 198/306/4 211/307/4 +f 211/308/4 199/309/29 210/310/29 +f 210/310/29 200/311/30 209/312/30 +f 209/312/30 179/313/1 220/314/1 +f 217/315/2 193/316/26 216/300/26 +f 218/317/31 192/318/2 217/315/2 +f 219/319/32 191/320/31 218/317/31 +f 220/314/1 180/321/32 219/319/32 +f 229/322/33 214/299/34 213/303/33 +f 212/305/35 229/322/33 213/303/33 +f 227/323/36 212/305/35 211/307/36 +f 226/324/37 211/308/36 210/310/37 +f 209/312/38 226/324/37 210/310/37 +f 224/325/39 209/312/38 220/314/39 +f 223/326/40 220/314/39 219/319/40 +f 230/327/34 215/297/41 214/299/34 +f 231/328/41 216/300/42 215/297/41 +f 232/329/42 217/315/43 216/300/42 +f 221/330/43 218/317/44 217/315/43 +f 222/331/44 219/319/40 218/317/44 +f 190/332/45 223/326/46 189/333/46 +f 189/333/46 222/331/47 188/334/47 +f 177/335/48 224/325/45 190/332/45 +f 178/336/49 225/337/48 177/335/48 +f 181/338/50 226/324/49 178/336/49 +f 188/334/47 221/330/51 187/339/51 +f 187/339/51 232/329/52 186/340/52 +f 182/341/53 227/323/50 181/342/50 +f 183/343/54 228/344/53 182/341/53 +f 183/343/54 230/327/55 229/322/54 +f 185/345/56 230/327/55 184/346/55 +f 186/340/52 231/328/56 185/345/56 +f 262/347/26 273/348/25 261/349/25 +f 240/350/28 251/351/4 239/352/4 +f 237/353/30 248/354/1 236/355/1 +f 243/356/25 256/357/26 255/358/25 +f 233/359/2 245/360/31 246/361/2 +f 241/362/27 252/363/28 240/350/28 +f 238/364/29 249/365/30 237/353/30 +f 244/366/26 246/361/2 256/357/26 +f 234/367/31 247/368/32 245/360/31 +f 242/369/3 253/370/27 241/362/27 +f 239/371/4 250/372/29 238/364/29 +f 236/355/1 247/368/32 235/373/32 +f 243/356/25 254/374/3 242/369/3 +f 258/375/4 280/376/29 268/377/29 +f 259/378/27 269/379/28 257/380/28 +f 266/381/1 277/382/32 265/383/32 +f 263/384/2 274/385/26 262/347/26 +f 260/386/3 271/387/27 259/378/27 +f 267/388/30 278/389/1 266/381/1 +f 264/390/31 275/391/2 263/392/2 +f 261/349/25 272/393/3 260/386/3 +f 268/377/29 279/394/30 267/388/30 +f 257/380/28 270/395/4 258/375/4 +f 265/383/32 276/396/31 264/390/31 +f 116/397/1 105/398/30 104/399/1 +f 117/400/30 106/401/29 105/398/30 +f 118/402/29 107/403/4 106/401/29 +f 120/404/28 109/405/27 108/406/28 +f 121/407/27 110/408/3 109/405/27 +f 122/409/3 111/410/25 110/408/3 +f 113/411/31 103/412/32 102/413/31 +f 114/414/2 102/413/31 101/415/2 +f 124/416/26 101/417/2 112/418/26 +f 123/419/25 112/418/26 111/410/25 +f 119/420/4 108/406/28 107/403/4 +f 115/421/32 104/399/1 103/412/32 +f 147/422/32 136/423/1 135/424/32 +f 148/425/1 137/426/30 136/423/1 +f 149/427/30 138/428/29 137/426/30 +f 150/429/29 139/430/4 138/428/29 +f 151/431/4 140/432/28 139/430/4 +f 152/433/28 141/434/27 140/432/28 +f 153/435/27 142/436/3 141/434/27 +f 154/437/3 143/438/25 142/436/3 +f 155/439/25 144/440/26 143/438/25 +f 156/441/26 133/442/2 144/440/26 +f 146/443/2 134/444/31 133/445/2 +f 145/446/31 135/424/32 134/444/31 +f 215/297/25 194/301/25 195/298/3 +f 216/300/26 193/316/26 194/301/25 +f 214/299/3 195/298/3 196/302/27 +f 213/303/27 196/302/27 197/304/28 +f 212/305/28 197/304/28 198/306/4 +f 211/308/4 198/447/4 199/309/29 +f 210/310/29 199/309/29 200/311/30 +f 209/312/30 200/311/30 179/313/1 +f 217/315/2 192/318/2 193/316/26 +f 218/317/31 191/320/31 192/318/2 +f 219/319/32 180/321/32 191/320/31 +f 220/314/1 179/313/1 180/321/32 +f 229/322/33 230/327/34 214/299/34 +f 212/305/35 228/344/35 229/322/33 +f 227/323/36 228/344/35 212/305/35 +f 226/324/37 227/448/36 211/308/36 +f 209/312/38 225/337/38 226/324/37 +f 224/325/39 225/337/38 209/312/38 +f 223/326/40 224/325/39 220/314/39 +f 230/327/34 231/328/41 215/297/41 +f 231/328/41 232/329/42 216/300/42 +f 232/329/42 221/330/43 217/315/43 +f 221/330/43 222/331/44 218/317/44 +f 222/331/44 223/326/40 219/319/40 +f 190/332/45 224/325/45 223/326/46 +f 189/333/46 223/326/46 222/331/47 +f 177/335/48 225/337/48 224/325/45 +f 178/336/49 226/324/49 225/337/48 +f 181/338/50 227/448/50 226/324/49 +f 188/334/47 222/331/47 221/330/51 +f 187/339/51 221/330/51 232/329/52 +f 182/341/53 228/344/53 227/323/50 +f 183/343/54 229/322/54 228/344/53 +f 183/343/54 184/346/55 230/327/55 +f 185/345/56 231/328/56 230/327/55 +f 186/340/52 232/329/52 231/328/56 +f 262/347/26 274/385/26 273/348/25 +f 240/350/28 252/363/28 251/351/4 +f 237/353/30 249/365/30 248/354/1 +f 243/356/25 244/366/26 256/357/26 +f 233/359/2 234/367/31 245/360/31 +f 241/362/27 253/370/27 252/363/28 +f 238/364/29 250/372/29 249/365/30 +f 244/366/26 233/359/2 246/361/2 +f 234/367/31 235/373/32 247/368/32 +f 242/369/3 254/374/3 253/370/27 +f 239/371/4 251/449/4 250/372/29 +f 236/355/1 248/354/1 247/368/32 +f 243/356/25 255/358/25 254/374/3 +f 258/375/4 270/395/4 280/376/29 +f 259/378/27 271/387/27 269/379/28 +f 266/381/1 278/389/1 277/382/32 +f 263/384/2 275/450/2 274/385/26 +f 260/386/3 272/393/3 271/387/27 +f 267/388/30 279/394/30 278/389/1 +f 264/390/31 276/396/31 275/391/2 +f 261/349/25 273/348/25 272/393/3 +f 268/377/29 280/376/29 279/394/30 +f 257/380/28 269/379/28 270/395/4 +f 265/383/32 277/382/32 276/396/31 +f 116/397/1 117/400/30 105/398/30 +f 117/400/30 118/402/29 106/401/29 +f 118/402/29 119/420/4 107/403/4 +f 120/404/28 121/407/27 109/405/27 +f 121/407/27 122/409/3 110/408/3 +f 122/409/3 123/419/25 111/410/25 +f 113/411/31 115/421/32 103/412/32 +f 114/414/2 113/411/31 102/413/31 +f 124/416/26 114/451/2 101/417/2 +f 123/419/25 124/416/26 112/418/26 +f 119/420/4 120/404/28 108/406/28 +f 115/421/32 116/397/1 104/399/1 +f 147/422/32 148/425/1 136/423/1 +f 148/425/1 149/427/30 137/426/30 +f 149/427/30 150/429/29 138/428/29 +f 150/429/29 151/431/4 139/430/4 +f 151/431/4 152/433/28 140/432/28 +f 152/433/28 153/435/27 141/434/27 +f 153/435/27 154/437/3 142/436/3 +f 154/437/3 155/439/25 143/438/25 +f 155/439/25 156/441/26 144/440/26 +f 156/441/26 146/452/2 133/442/2 +f 146/443/2 145/446/31 134/444/31 +f 145/446/31 147/422/32 135/424/32 diff --git a/src/main/resources/assets/hbm/models/doors/large_vehicle_door.obj b/src/main/resources/assets/hbm/models/doors/large_vehicle_door.obj new file mode 100644 index 000000000..321a3e384 --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/large_vehicle_door.obj @@ -0,0 +1,6312 @@ +# Blender v2.92.0 OBJ File: 'large_vehicle_door.blend' +# www.blender.org +o doorLeft +v 0.299220 0.487402 3.251414 +v 0.299220 5.590070 1.004025 +v 0.299220 5.128570 1.909768 +v 0.299220 4.409768 2.628571 +v 0.299220 3.503919 3.090124 +v 0.299220 2.496066 3.251015 +v 0.299220 5.679564 0.438986 +v 0.299220 0.487402 0.438985 +v 0.149610 5.900837 0.125000 +v 0.149610 0.054715 0.125000 +v 0.299220 0.054715 3.440433 +v 0.299220 2.511072 3.439998 +v 0.299220 3.563152 3.272047 +v 0.299220 4.522236 2.783369 +v 0.299220 5.283369 2.022236 +v 0.299220 5.772047 1.063152 +v 0.299220 5.900837 0.250000 +v 0.299220 0.054715 0.250000 +v 0.231315 0.487402 3.251414 +v 0.231315 2.496066 3.251015 +v 0.231315 3.503919 3.090124 +v 0.231315 4.409768 2.628571 +v 0.231315 5.128570 1.909768 +v 0.231315 5.590070 1.004025 +v 0.231315 5.679564 0.438986 +v 0.231315 0.487402 0.438985 +v 0.204275 1.917457 1.651271 +v 0.204275 2.047506 1.651271 +v 0.204275 1.917457 1.142414 +v 0.204275 2.047506 1.142414 +v 0.261126 1.933194 1.635535 +v 0.245389 1.917457 1.651271 +v 0.245389 2.047506 1.651271 +v 0.261126 2.031770 1.635535 +v 0.261126 1.933194 1.158151 +v 0.245389 1.917457 1.142414 +v 0.261126 2.031770 1.158151 +v 0.245389 2.047506 1.142414 +v 0.215124 3.126893 0.898361 +v 0.215124 3.628286 0.898361 +v 0.215124 3.126893 0.736489 +v 0.215124 3.628286 0.736489 +v 0.294289 3.126893 0.898361 +v 0.247374 3.628286 0.898361 +v 0.294289 3.126893 0.736489 +v 0.247374 3.628286 0.736489 +v 0.215124 3.447602 0.898361 +v 0.215124 3.447602 0.736489 +v 0.294289 3.447602 0.736489 +v 0.294289 3.447602 0.898361 +v 0.215124 3.126893 1.339800 +v 0.215124 3.628286 1.339800 +v 0.215124 3.126893 1.177929 +v 0.215124 3.628286 1.177929 +v 0.294289 3.126893 1.339800 +v 0.247374 3.628286 1.339800 +v 0.294289 3.126893 1.177929 +v 0.247374 3.628286 1.177929 +v 0.215124 3.447602 1.339800 +v 0.215124 3.447602 1.177929 +v 0.294289 3.447602 1.177929 +v 0.294289 3.447602 1.339800 +v 0.110842 1.775868 3.124604 +v 0.110842 2.305447 3.124604 +v 0.110842 1.775868 1.892389 +v 0.110842 2.305447 1.892389 +v 0.303721 1.835501 3.064971 +v 0.303721 2.245814 3.064971 +v 0.303721 1.835501 1.952022 +v 0.303721 2.245814 1.952022 +v 0.303721 2.305447 1.892389 +v 0.303721 1.775868 1.892389 +v 0.303721 1.775868 3.124604 +v 0.303721 2.305447 3.124604 +v 0.237602 2.245814 1.952022 +v 0.237602 1.835501 1.952022 +v 0.237602 1.835501 3.064971 +v 0.237602 2.245814 3.064971 +v 0.185097 0.938915 3.260309 +v 0.185097 1.140242 3.260309 +v 0.185097 0.938915 0.391829 +v 0.185097 1.140242 0.391829 +v 0.250002 0.938915 3.260309 +v 0.279439 0.968351 3.260309 +v 0.279439 1.110806 3.260309 +v 0.250002 1.140242 3.260309 +v 0.279439 0.968351 0.391829 +v 0.250002 0.938915 0.391829 +v 0.250002 1.140242 0.391829 +v 0.279439 1.110806 0.391829 +v 0.185097 1.623428 3.260309 +v 0.185097 1.824755 3.260309 +v 0.185097 1.623428 0.391829 +v 0.185097 1.824755 0.391829 +v 0.250002 1.623428 3.260309 +v 0.279439 1.652864 3.260309 +v 0.279439 1.795319 3.260309 +v 0.250002 1.824755 3.260309 +v 0.279439 1.652864 0.391829 +v 0.250002 1.623428 0.391829 +v 0.250002 1.824755 0.391829 +v 0.279439 1.795319 0.391829 +v 0.185097 2.307941 3.260309 +v 0.185097 2.509268 3.260309 +v 0.185097 2.307941 0.391829 +v 0.185097 2.509268 0.391829 +v 0.250002 2.307941 3.260309 +v 0.279439 2.337377 3.260309 +v 0.279439 2.479832 3.260309 +v 0.250002 2.509268 3.260309 +v 0.279439 2.337377 0.391829 +v 0.250002 2.307941 0.391829 +v 0.250002 2.509268 0.391829 +v 0.279439 2.479832 0.391829 +v 0.185097 2.992454 3.260309 +v 0.185097 3.193781 3.260309 +v 0.185097 2.992454 0.391829 +v 0.185097 3.193781 0.391829 +v 0.250002 2.992454 3.260309 +v 0.279439 3.021890 3.260309 +v 0.279439 3.164345 3.260309 +v 0.250002 3.193781 3.260309 +v 0.279439 3.021890 0.391829 +v 0.250002 2.992454 0.391829 +v 0.250002 3.193781 0.391829 +v 0.279439 3.164345 0.391829 +v 0.185097 3.676967 3.079826 +v 0.185097 3.878294 3.079826 +v 0.185097 3.676967 0.391829 +v 0.185097 3.878294 0.391829 +v 0.250002 3.676967 3.079826 +v 0.279439 3.706403 3.079826 +v 0.279439 3.848858 3.079826 +v 0.250002 3.878294 3.079826 +v 0.279439 3.706403 0.391829 +v 0.250002 3.676967 0.391829 +v 0.250002 3.878294 0.391829 +v 0.279439 3.848858 0.391829 +v 0.185097 4.361480 2.726382 +v 0.185097 4.562807 2.726382 +v 0.185097 4.361480 0.391829 +v 0.185097 4.562807 0.391829 +v 0.250002 4.361480 2.726382 +v 0.279439 4.390916 2.726382 +v 0.279439 4.533370 2.726382 +v 0.250002 4.562807 2.726382 +v 0.279439 4.390916 0.391829 +v 0.250002 4.361480 0.391829 +v 0.250002 4.562807 0.391829 +v 0.279439 4.533370 0.391829 +v 0.185097 5.045993 2.044939 +v 0.185097 5.247320 2.044939 +v 0.185097 5.045993 0.391829 +v 0.185097 5.247320 0.391829 +v 0.250002 5.045993 2.044939 +v 0.279439 5.075429 2.044939 +v 0.279439 5.217884 2.044939 +v 0.250002 5.247320 2.044939 +v 0.279439 5.075429 0.391829 +v 0.250002 5.045993 0.391829 +v 0.250002 5.247320 0.391829 +v 0.279439 5.217884 0.391829 +v 0.315590 0.554430 1.179831 +v 0.315590 0.554430 0.490474 +v 0.381347 0.554430 1.179831 +v 0.381347 0.554430 0.490474 +v 0.427845 0.600927 1.179831 +v 0.427845 0.600927 0.490474 +v 0.427845 0.666685 1.179831 +v 0.427845 0.666685 0.490474 +v 0.381347 0.713183 1.179831 +v 0.381347 0.713183 0.490474 +v 0.315590 0.713183 1.179831 +v 0.315590 0.713183 0.490474 +v 0.269092 0.666685 1.179831 +v 0.269092 0.666685 0.490474 +v 0.269092 0.600927 1.179831 +v 0.269092 0.600927 0.490474 +v 0.212011 0.554430 1.179831 +v 0.212011 0.554430 0.490474 +v 0.212011 0.713183 0.490474 +v 0.212011 0.713183 1.179831 +v 0.212011 0.666685 1.179831 +v 0.212011 0.666685 0.490474 +v 0.212011 0.600927 1.179831 +v 0.212011 0.600927 0.490474 +v 0.323809 0.574274 3.311587 +v 0.373128 0.574274 3.311587 +v 0.408001 0.609147 3.311587 +v 0.408001 0.658465 3.311587 +v 0.373128 0.693339 3.311587 +v 0.323809 0.693339 3.311587 +v 0.288936 0.658465 3.311587 +v 0.288936 0.609147 3.311587 +v 0.373127 0.574274 0.452471 +v 0.408000 0.609147 0.452471 +v 0.323808 0.574274 0.452471 +v 0.408000 0.658465 0.452471 +v 0.373127 0.693339 0.452471 +v 0.323808 0.693339 0.452471 +v 0.288935 0.658465 0.452471 +v 0.288935 0.609147 0.452471 +v 0.299220 0.790051 0.250000 +v 0.299220 5.165501 0.250000 +v 0.299220 1.519293 0.250000 +v 0.299220 2.248535 0.250000 +v 0.299220 2.977776 0.250000 +v 0.299220 3.707018 0.250000 +v 0.299220 4.436259 0.250000 +v 0.149610 5.165501 0.125000 +v 0.149610 0.790051 0.125000 +v 0.149610 4.436259 0.125000 +v 0.149610 3.707017 0.125000 +v 0.149610 2.977776 0.125000 +v 0.149610 2.248534 0.125000 +v 0.149610 1.519293 0.125000 +v 0.149610 0.054715 -0.125000 +v 0.299220 0.054715 -0.000000 +v 0.149610 0.790051 -0.125000 +v 0.149610 1.519293 -0.125000 +v 0.149610 2.248534 -0.125000 +v 0.149610 2.977776 -0.125000 +v 0.149610 3.707017 -0.125000 +v 0.149610 4.436259 -0.125000 +v 0.149610 5.165501 -0.125000 +v 0.299220 0.790051 -0.000000 +v 0.299220 1.519293 -0.000000 +v 0.299220 2.248535 -0.000000 +v 0.299220 2.977776 -0.000000 +v 0.299220 3.707018 -0.000000 +v 0.299220 4.436259 -0.000000 +v 0.299220 5.165501 -0.000000 +v -0.299220 0.487402 3.251414 +v -0.299220 5.590070 1.004025 +v -0.299220 5.128570 1.909768 +v -0.299220 4.409768 2.628571 +v -0.299220 3.503919 3.090124 +v -0.299220 2.496066 3.251015 +v -0.299220 5.679564 0.438986 +v -0.299220 0.487402 0.438985 +v -0.149610 5.900837 0.125000 +v -0.149610 0.054715 0.125000 +v -0.299220 0.054715 3.440433 +v -0.299220 2.511072 3.439998 +v -0.299220 3.563152 3.272047 +v -0.299220 4.522236 2.783369 +v -0.299220 5.283369 2.022236 +v -0.299220 5.772047 1.063152 +v -0.299220 5.900837 0.250000 +v -0.299220 0.054715 0.250000 +v -0.231315 0.487402 3.251414 +v -0.231315 2.496066 3.251015 +v -0.231315 3.503919 3.090124 +v -0.231315 4.409768 2.628571 +v -0.231315 5.128570 1.909768 +v -0.231315 5.590070 1.004025 +v -0.231315 5.679564 0.438986 +v -0.231315 0.487402 0.438985 +v -0.204275 1.917457 1.651271 +v -0.204275 2.047506 1.651271 +v -0.204275 1.917457 1.142414 +v -0.204275 2.047506 1.142414 +v -0.261126 1.933194 1.635535 +v -0.245389 1.917457 1.651271 +v -0.245389 2.047506 1.651271 +v -0.261126 2.031770 1.635535 +v -0.261126 1.933194 1.158151 +v -0.245389 1.917457 1.142414 +v -0.261126 2.031770 1.158151 +v -0.245389 2.047506 1.142414 +v -0.215124 3.126893 0.898361 +v -0.215124 3.628286 0.898361 +v -0.215124 3.126893 0.736489 +v -0.215124 3.628286 0.736489 +v -0.294289 3.126893 0.898361 +v -0.247374 3.628286 0.898361 +v -0.294289 3.126893 0.736489 +v -0.247374 3.628286 0.736489 +v -0.215124 3.447602 0.898361 +v -0.215124 3.447602 0.736489 +v -0.294289 3.447602 0.736489 +v -0.294289 3.447602 0.898361 +v -0.215124 3.126893 1.339800 +v -0.215124 3.628286 1.339800 +v -0.215124 3.126893 1.177929 +v -0.215124 3.628286 1.177929 +v -0.294289 3.126893 1.339800 +v -0.247374 3.628286 1.339800 +v -0.294289 3.126893 1.177929 +v -0.247374 3.628286 1.177929 +v -0.215124 3.447602 1.339800 +v -0.215124 3.447602 1.177929 +v -0.294289 3.447602 1.177929 +v -0.294289 3.447602 1.339800 +v -0.110842 1.775868 3.124604 +v -0.110842 2.305447 3.124604 +v -0.110842 1.775868 1.892389 +v -0.110842 2.305447 1.892389 +v -0.303721 1.835501 3.064971 +v -0.303721 2.245814 3.064971 +v -0.303721 1.835501 1.952022 +v -0.303721 2.245814 1.952022 +v -0.303721 2.305447 1.892389 +v -0.303721 1.775868 1.892389 +v -0.303721 1.775868 3.124604 +v -0.303721 2.305447 3.124604 +v -0.237602 2.245814 1.952022 +v -0.237602 1.835501 1.952022 +v -0.237602 1.835501 3.064971 +v -0.237602 2.245814 3.064971 +v -0.185097 0.938915 3.260309 +v -0.185097 1.140242 3.260309 +v -0.185097 0.938915 0.391829 +v -0.185097 1.140242 0.391829 +v -0.250002 0.938915 3.260309 +v -0.279439 0.968351 3.260309 +v -0.279439 1.110806 3.260309 +v -0.250002 1.140242 3.260309 +v -0.279439 0.968351 0.391829 +v -0.250002 0.938915 0.391829 +v -0.250002 1.140242 0.391829 +v -0.279439 1.110806 0.391829 +v -0.185097 1.623428 3.260309 +v -0.185097 1.824755 3.260309 +v -0.185097 1.623428 0.391829 +v -0.185097 1.824755 0.391829 +v -0.250002 1.623428 3.260309 +v -0.279439 1.652864 3.260309 +v -0.279439 1.795319 3.260309 +v -0.250002 1.824755 3.260309 +v -0.279439 1.652864 0.391829 +v -0.250002 1.623428 0.391829 +v -0.250002 1.824755 0.391829 +v -0.279439 1.795319 0.391829 +v -0.185097 2.307941 3.260309 +v -0.185097 2.509268 3.260309 +v -0.185097 2.307941 0.391829 +v -0.185097 2.509268 0.391829 +v -0.250002 2.307941 3.260309 +v -0.279439 2.337377 3.260309 +v -0.279439 2.479832 3.260309 +v -0.250002 2.509268 3.260309 +v -0.279439 2.337377 0.391829 +v -0.250002 2.307941 0.391829 +v -0.250002 2.509268 0.391829 +v -0.279439 2.479832 0.391829 +v -0.185097 2.992454 3.260309 +v -0.185097 3.193781 3.260309 +v -0.185097 2.992454 0.391829 +v -0.185097 3.193781 0.391829 +v -0.250002 2.992454 3.260309 +v -0.279439 3.021890 3.260309 +v -0.279439 3.164345 3.260309 +v -0.250002 3.193781 3.260309 +v -0.279439 3.021890 0.391829 +v -0.250002 2.992454 0.391829 +v -0.250002 3.193781 0.391829 +v -0.279439 3.164345 0.391829 +v -0.185097 3.676967 3.079826 +v -0.185097 3.878294 3.079826 +v -0.185097 3.676967 0.391829 +v -0.185097 3.878294 0.391829 +v -0.250002 3.676967 3.079826 +v -0.279439 3.706403 3.079826 +v -0.279439 3.848858 3.079826 +v -0.250002 3.878294 3.079826 +v -0.279439 3.706403 0.391829 +v -0.250002 3.676967 0.391829 +v -0.250002 3.878294 0.391829 +v -0.279439 3.848858 0.391829 +v -0.185097 4.361480 2.726382 +v -0.185097 4.562807 2.726382 +v -0.185097 4.361480 0.391829 +v -0.185097 4.562807 0.391829 +v -0.250002 4.361480 2.726382 +v -0.279439 4.390916 2.726382 +v -0.279439 4.533370 2.726382 +v -0.250002 4.562807 2.726382 +v -0.279439 4.390916 0.391829 +v -0.250002 4.361480 0.391829 +v -0.250002 4.562807 0.391829 +v -0.279439 4.533370 0.391829 +v -0.185097 5.045993 2.044939 +v -0.185097 5.247320 2.044939 +v -0.185097 5.045993 0.391829 +v -0.185097 5.247320 0.391829 +v -0.250002 5.045993 2.044939 +v -0.279439 5.075429 2.044939 +v -0.279439 5.217884 2.044939 +v -0.250002 5.247320 2.044939 +v -0.279439 5.075429 0.391829 +v -0.250002 5.045993 0.391829 +v -0.250002 5.247320 0.391829 +v -0.279439 5.217884 0.391829 +v -0.315590 0.554430 1.179831 +v -0.315590 0.554430 0.490474 +v -0.381347 0.554430 1.179831 +v -0.381347 0.554430 0.490474 +v -0.427845 0.600927 1.179831 +v -0.427845 0.600927 0.490474 +v -0.427845 0.666685 1.179831 +v -0.427845 0.666685 0.490474 +v -0.381347 0.713183 1.179831 +v -0.381347 0.713183 0.490474 +v -0.315590 0.713183 1.179831 +v -0.315590 0.713183 0.490474 +v -0.269092 0.666685 1.179831 +v -0.269092 0.666685 0.490474 +v -0.269092 0.600927 1.179831 +v -0.269092 0.600927 0.490474 +v -0.212011 0.554430 1.179831 +v -0.212011 0.554430 0.490474 +v -0.212011 0.713183 0.490474 +v -0.212011 0.713183 1.179831 +v -0.212011 0.666685 1.179831 +v -0.212011 0.666685 0.490474 +v -0.212011 0.600927 1.179831 +v -0.212011 0.600927 0.490474 +v -0.323809 0.574274 3.311587 +v -0.373128 0.574274 3.311587 +v -0.408001 0.609147 3.311587 +v -0.408001 0.658465 3.311587 +v -0.373128 0.693339 3.311587 +v -0.323809 0.693339 3.311587 +v -0.288936 0.658465 3.311587 +v -0.288936 0.609147 3.311587 +v -0.373127 0.574274 0.452471 +v -0.408000 0.609147 0.452471 +v -0.323808 0.574274 0.452471 +v -0.408000 0.658465 0.452471 +v -0.373127 0.693339 0.452471 +v -0.323808 0.693339 0.452471 +v -0.288935 0.658465 0.452471 +v -0.288935 0.609147 0.452471 +v -0.299220 0.790051 0.250000 +v -0.299220 5.165501 0.250000 +v -0.299220 1.519293 0.250000 +v -0.299220 2.248535 0.250000 +v -0.299220 2.977776 0.250000 +v -0.299220 3.707018 0.250000 +v -0.299220 4.436259 0.250000 +v -0.149610 5.165501 0.125000 +v -0.149610 0.790051 0.125000 +v -0.149610 4.436259 0.125000 +v -0.149610 3.707017 0.125000 +v -0.149610 2.977776 0.125000 +v -0.149610 2.248534 0.125000 +v -0.149610 1.519293 0.125000 +v -0.149610 0.054715 -0.125000 +v -0.299220 0.054715 -0.000000 +v -0.149610 0.790051 -0.125000 +v -0.149610 1.519293 -0.125000 +v -0.149610 2.248534 -0.125000 +v -0.149610 2.977776 -0.125000 +v -0.149610 3.707017 -0.125000 +v -0.149610 4.436259 -0.125000 +v -0.149610 5.165501 -0.125000 +v -0.299220 0.790051 -0.000000 +v -0.299220 1.519293 -0.000000 +v -0.299220 2.248535 -0.000000 +v -0.299220 2.977776 -0.000000 +v -0.299220 3.707018 -0.000000 +v -0.299220 4.436259 -0.000000 +v -0.299220 5.165501 -0.000000 +v 0.000000 0.054715 3.440433 +v 0.000000 2.511072 3.439998 +v 0.000000 3.563152 3.272047 +v 0.000000 4.522236 2.783369 +v 0.000000 5.283369 2.022236 +v 0.000000 5.772047 1.063152 +v 0.000000 5.900837 0.250000 +v 0.000000 0.054715 0.250000 +v 0.000000 5.900837 0.125000 +v 0.000000 0.054715 0.125000 +v 0.000000 0.790051 0.125000 +v 0.000000 1.519293 0.125000 +v 0.000000 2.248534 0.125000 +v 0.000000 2.977776 0.125000 +v 0.000000 3.707017 0.125000 +v 0.000000 4.436259 0.125000 +v 0.000000 5.165501 0.125000 +v 0.000000 0.054715 -0.125000 +v 0.000000 0.790051 -0.125000 +v 0.000000 1.519293 -0.125000 +v 0.000000 2.248534 -0.125000 +v 0.000000 2.977776 -0.125000 +v 0.000000 3.707017 -0.125000 +v 0.000000 4.436259 -0.125000 +v 0.000000 5.165501 -0.125000 +v -0.236978 1.966246 2.101461 +v -0.236978 1.868288 2.101461 +v -0.271611 1.966246 2.115807 +v -0.271611 1.868288 2.115807 +v -0.285957 1.966246 2.150440 +v -0.285957 1.868288 2.150440 +v -0.271611 1.966246 2.185074 +v -0.271611 1.868288 2.185074 +v -0.236978 1.966246 2.199419 +v -0.236978 1.868289 2.199419 +v -0.261013 1.935379 2.738888 +v -0.243801 1.942508 2.738888 +v -0.243801 1.942508 2.168687 +v -0.261013 1.935379 2.168687 +v -0.268143 1.918167 2.168687 +v -0.261013 1.900955 2.168687 +v -0.243801 1.893826 2.168687 +v -0.226590 1.900955 2.168687 +v -0.219460 1.918167 2.168687 +v -0.226590 1.935379 2.168687 +v -0.268142 1.918167 2.738888 +v -0.261013 1.900955 2.738888 +v -0.243801 1.893826 2.738888 +v -0.226589 1.900955 2.738888 +v -0.219460 1.918167 2.738888 +v -0.226589 1.935379 2.738888 +v -0.243801 1.952222 2.738888 +v -0.267882 1.942248 2.738888 +v -0.277856 1.918167 2.738888 +v -0.243801 1.952222 2.956852 +v -0.267881 1.942248 2.956852 +v -0.267882 1.894087 2.738888 +v -0.277856 1.918167 2.956852 +v -0.243801 1.884113 2.738888 +v -0.267881 1.894087 2.956852 +v -0.219721 1.894087 2.738888 +v -0.243801 1.884113 2.956852 +v -0.209747 1.918167 2.738888 +v -0.219721 1.894087 2.956852 +v -0.219721 1.942248 2.738888 +v -0.209747 1.918167 2.956852 +v -0.219721 1.942248 2.956852 +v -0.234903 1.996067 2.602893 +v -0.234903 2.177792 2.602893 +v -0.234903 1.996067 2.957389 +v -0.234903 2.177792 2.957389 +v -0.248363 1.996858 2.604437 +v -0.248363 2.177001 2.604437 +v -0.248363 1.996858 2.955846 +v -0.248363 2.177001 2.955846 +v -0.239626 2.025193 2.631219 +v -0.239626 2.077102 2.631219 +v -0.239626 2.025193 2.683128 +v -0.239626 2.077102 2.683128 +v -0.264276 2.026531 2.632558 +v -0.264276 2.075763 2.632558 +v -0.264276 2.026531 2.681789 +v -0.264276 2.075763 2.681789 +v -0.239626 2.025193 2.713007 +v -0.239626 2.077102 2.713007 +v -0.239626 2.025193 2.764916 +v -0.239626 2.077102 2.764916 +v -0.264276 2.026531 2.714346 +v -0.264276 2.075763 2.714346 +v -0.264276 2.026531 2.763577 +v -0.264276 2.075763 2.763577 +v -0.239626 2.025193 2.794795 +v -0.239626 2.077102 2.794795 +v -0.239626 2.025193 2.846704 +v -0.239626 2.077102 2.846704 +v -0.264276 2.026531 2.796134 +v -0.264276 2.075763 2.796134 +v -0.264276 2.026531 2.845365 +v -0.264276 2.075763 2.845365 +v -0.239626 2.025193 2.876583 +v -0.239626 2.077102 2.876583 +v -0.239626 2.025193 2.928492 +v -0.239626 2.077102 2.928492 +v -0.264276 2.026531 2.877922 +v -0.264276 2.075763 2.877922 +v -0.264276 2.026531 2.927153 +v -0.264276 2.075763 2.927153 +v -0.257845 2.139290 2.641807 +v -0.231994 2.143135 2.641807 +v -0.215737 2.122669 2.641807 +v -0.225334 2.098358 2.641807 +v -0.251185 2.094513 2.641807 +v -0.254999 2.096865 2.641807 +v -0.267210 2.110033 2.641807 +v -0.267441 2.114980 2.641807 +v -0.267210 2.110033 2.673316 +v -0.267441 2.114980 2.673316 +v -0.268826 2.092032 2.641807 +v -0.268826 2.092032 2.673316 +v -0.274138 2.100425 2.673316 +v -0.274138 2.100425 2.641807 +v -0.254999 2.096865 2.673316 +v -0.231994 2.143135 2.673316 +v -0.257845 2.139290 2.673316 +v -0.251185 2.094513 2.673316 +v -0.225334 2.098358 2.673316 +v -0.215737 2.122669 2.673316 +v -0.231185 2.137330 2.805390 +v -0.214479 2.117230 2.805390 +v -0.223533 2.092711 2.805390 +v -0.249294 2.088294 2.805390 +v -0.265999 2.108394 2.805390 +v -0.265969 2.112875 2.805390 +v -0.261052 2.130147 2.805390 +v -0.256944 2.132912 2.805390 +v -0.261052 2.130147 2.836899 +v -0.256944 2.132912 2.836899 +v -0.277276 2.122184 2.805390 +v -0.277276 2.122184 2.836899 +v -0.272861 2.131080 2.836899 +v -0.272861 2.131080 2.805390 +v -0.265969 2.112875 2.836899 +v -0.214479 2.117230 2.836899 +v -0.231185 2.137330 2.836899 +v -0.265999 2.108394 2.836899 +v -0.249294 2.088294 2.836899 +v -0.223533 2.092711 2.836899 +v -0.222124 2.128488 2.723598 +v -0.215961 2.103088 2.723598 +v -0.234877 2.085051 2.723598 +v -0.259955 2.092414 2.723598 +v -0.266117 2.117813 2.723598 +v -0.264119 2.121824 2.723598 +v -0.252107 2.135173 2.723598 +v -0.247201 2.135850 2.723598 +v -0.252107 2.135173 2.755107 +v -0.247201 2.135850 2.755107 +v -0.270180 2.135158 2.723598 +v -0.270180 2.135158 2.755107 +v -0.262301 2.141205 2.755107 +v -0.262301 2.141205 2.723598 +v -0.264119 2.121824 2.755107 +v -0.215961 2.103088 2.755107 +v -0.222124 2.128488 2.755107 +v -0.266117 2.117813 2.755107 +v -0.259955 2.092414 2.755107 +v -0.234877 2.085051 2.755107 +v -0.241062 2.141376 2.887181 +v -0.218098 2.128895 2.887181 +v -0.217426 2.102767 2.887181 +v -0.239718 2.089121 2.887181 +v -0.262680 2.101603 2.887181 +v -0.264312 2.105776 2.887181 +v -0.266144 2.123641 2.887181 +v -0.263352 2.127731 2.887181 +v -0.266143 2.123641 2.918690 +v -0.263352 2.127731 2.918690 +v -0.278264 2.110234 2.887181 +v -0.278264 2.110234 2.918690 +v -0.277458 2.120133 2.918690 +v -0.277458 2.120133 2.887181 +v -0.264312 2.105776 2.918690 +v -0.218098 2.128895 2.918690 +v -0.241062 2.141376 2.918690 +v -0.262680 2.101603 2.918690 +v -0.239718 2.089121 2.918690 +v -0.217426 2.102767 2.918690 +v -0.266144 2.123641 2.887181 +v -0.263352 2.127731 2.887181 +v -0.266143 2.123641 2.918690 +v -0.263352 2.127731 2.918690 +vt 0.114995 0.927786 +vt 0.122324 0.928335 +vt 0.115027 0.928335 +vt 0.115027 0.942571 +vt 0.122324 0.942571 +vt 0.114995 0.943119 +vt 0.114481 0.928272 +vt 0.114481 0.942633 +vt 0.122871 0.928272 +vt 0.977830 0.045536 +vt 0.979878 0.044536 +vt 0.979932 0.045536 +vt 0.977884 0.044536 +vt 0.979878 0.042542 +vt 0.977884 0.042542 +vt 0.979932 0.041542 +vt 0.980878 0.044591 +vt 0.980878 0.042488 +vt 0.976884 0.044591 +vt 0.980878 0.062002 +vt 0.979878 0.059953 +vt 0.980878 0.059899 +vt 0.979878 0.061948 +vt 0.977884 0.059953 +vt 0.977884 0.061948 +vt 0.976884 0.059899 +vt 0.977829 0.058953 +vt 0.979932 0.058953 +vt 0.979932 0.062948 +vt 0.979932 0.076365 +vt 0.977884 0.077365 +vt 0.977829 0.076365 +vt 0.979878 0.077365 +vt 0.977884 0.079359 +vt 0.979878 0.079359 +vt 0.977829 0.080359 +vt 0.976884 0.079414 +vt 0.976884 0.077311 +vt 0.980878 0.079414 +vt 0.976884 0.096825 +vt 0.977884 0.094776 +vt 0.977884 0.096771 +vt 0.979878 0.096771 +vt 0.979878 0.094777 +vt 0.980878 0.096825 +vt 0.979932 0.097771 +vt 0.977829 0.097771 +vt 0.977830 0.093776 +vt 0.122356 0.927786 +vt 0.122356 0.943119 +vt 0.122871 0.942633 +vt 0.977830 0.041542 +vt 0.976884 0.042488 +vt 0.976884 0.062002 +vt 0.977829 0.062948 +vt 0.979932 0.080359 +vt 0.980878 0.077311 +vt 0.976884 0.094722 +vt 0.980878 0.094722 +vt 0.979932 0.093776 +vt 0.888428 0.294606 +vt 0.900550 0.394114 +vt 0.888429 0.394114 +vt 0.900550 0.437274 +vt 0.888429 0.437274 +vt 0.900550 0.480879 +vt 0.888429 0.480879 +vt 0.900550 0.524484 +vt 0.888429 0.524484 +vt 0.900550 0.568090 +vt 0.888429 0.568090 +vt 0.801760 0.796084 +vt 0.813882 0.666839 +vt 0.813882 0.796084 +vt 0.897588 0.747418 +vt 0.900339 0.861350 +vt 0.897588 0.861350 +vt 0.899184 0.935956 +vt 0.928726 0.925829 +vt 0.928726 0.935956 +vt 0.888429 0.601441 +vt 0.894489 0.606505 +vt 0.888429 0.606505 +vt 0.476557 0.585175 +vt 0.394577 0.577535 +vt 0.494085 0.577517 +vt 0.354357 0.591708 +vt 0.395185 0.585191 +vt 0.317661 0.610406 +vt 0.351957 0.584339 +vt 0.282271 0.634969 +vt 0.313105 0.604135 +vt 0.269847 0.676217 +vt 0.288542 0.639525 +vt 0.266221 0.699107 +vt 0.262475 0.673821 +vt 0.494085 0.706763 +vt 0.476557 0.699107 +vt 0.516594 0.667355 +vt 0.510076 0.626526 +vt 0.623992 0.545155 +vt 0.933712 0.486222 +vt 0.930761 0.461662 +vt 0.933677 0.461658 +vt 0.933835 0.573519 +vt 0.930857 0.529875 +vt 0.933773 0.529871 +vt 0.933959 0.660995 +vt 0.930981 0.617175 +vt 0.933896 0.617171 +vt 0.931165 0.294610 +vt 0.934080 0.294606 +vt 0.930796 0.486226 +vt 0.930919 0.573523 +vt 0.934080 0.747247 +vt 0.931043 0.660999 +vt 0.115673 0.891561 +vt 0.120941 0.889896 +vt 0.120941 0.891562 +vt 0.113743 0.912440 +vt 0.115409 0.891825 +vt 0.115409 0.912440 +vt 0.116310 0.911802 +vt 0.120303 0.892463 +vt 0.120303 0.911802 +vt 0.115673 0.914369 +vt 0.120941 0.912703 +vt 0.120941 0.914369 +vt 0.115673 0.912703 +vt 0.121205 0.912440 +vt 0.121205 0.891825 +vt 0.116310 0.892463 +vt 0.122871 0.891825 +vt 0.122871 0.912440 +vt 0.517321 0.983616 +vt 0.530057 0.979918 +vt 0.530177 0.983265 +vt 0.517124 0.992977 +vt 0.509923 0.990179 +vt 0.517491 0.989800 +vt 0.509916 0.983328 +vt 0.516908 0.980489 +vt 0.530177 0.990089 +vt 0.533514 0.983265 +vt 0.533514 0.990089 +vt 0.508558 0.990180 +vt 0.530099 0.993292 +vt 0.862038 0.983177 +vt 0.874774 0.979479 +vt 0.874894 0.982826 +vt 0.861840 0.992538 +vt 0.854639 0.989740 +vt 0.862208 0.989361 +vt 0.854633 0.982888 +vt 0.861624 0.980050 +vt 0.874894 0.989649 +vt 0.878231 0.982826 +vt 0.878231 0.989649 +vt 0.853274 0.989741 +vt 0.874816 0.992852 +vt 0.201844 0.802196 +vt 0.194030 0.780742 +vt 0.201844 0.780742 +vt 0.473107 0.953861 +vt 0.489729 0.951182 +vt 0.489729 0.953861 +vt 0.144113 0.802196 +vt 0.136299 0.780742 +vt 0.144113 0.780742 +vt 0.144113 0.772929 +vt 0.194030 0.772929 +vt 0.194030 0.810009 +vt 0.194030 0.802196 +vt 0.191614 0.783158 +vt 0.191614 0.799780 +vt 0.146529 0.799780 +vt 0.146529 0.783158 +vt 0.489729 0.906096 +vt 0.473107 0.951182 +vt 0.473107 0.906096 +vt 0.470428 0.906096 +vt 0.470428 0.951182 +vt 0.492407 0.951182 +vt 0.492407 0.906096 +vt 0.489729 0.903418 +vt 0.473107 0.903418 +vt 0.006709 0.937024 +vt 0.009278 0.823485 +vt 0.009278 0.937024 +vt 0.011259 0.937019 +vt 0.016898 0.823479 +vt 0.016898 0.937019 +vt 0.018880 0.937014 +vt 0.018880 0.823474 +vt 0.021449 0.823474 +vt 0.021449 0.937014 +vt 0.192614 0.936977 +vt 0.195183 0.823437 +vt 0.195183 0.936977 +vt 0.197165 0.936971 +vt 0.202803 0.823432 +vt 0.202803 0.936971 +vt 0.204785 0.936966 +vt 0.204785 0.823426 +vt 0.207354 0.823426 +vt 0.207354 0.936966 +vt 0.811263 0.938243 +vt 0.813832 0.824703 +vt 0.813832 0.938243 +vt 0.815814 0.938237 +vt 0.821453 0.824698 +vt 0.821453 0.938237 +vt 0.823434 0.938232 +vt 0.823434 0.824692 +vt 0.826003 0.824692 +vt 0.826003 0.938232 +vt 0.034866 0.937024 +vt 0.037435 0.823485 +vt 0.037435 0.937024 +vt 0.039417 0.937019 +vt 0.045055 0.823479 +vt 0.045055 0.937019 +vt 0.047037 0.937014 +vt 0.047037 0.823474 +vt 0.049606 0.823474 +vt 0.049606 0.937014 +vt 0.932252 0.241137 +vt 0.934844 0.133830 +vt 0.934844 0.241137 +vt 0.936717 0.241134 +vt 0.942404 0.133826 +vt 0.942403 0.241134 +vt 0.944276 0.241130 +vt 0.944277 0.133823 +vt 0.946868 0.133823 +vt 0.946868 0.241130 +vt 0.100157 0.851974 +vt 0.097527 0.946547 +vt 0.097528 0.851974 +vt 0.095841 0.851974 +vt 0.090070 0.946546 +vt 0.090070 0.851974 +vt 0.088384 0.851974 +vt 0.088384 0.946546 +vt 0.085754 0.946546 +vt 0.085755 0.851974 +vt 0.136299 0.950395 +vt 0.203267 0.953024 +vt 0.136299 0.953024 +vt 0.136299 0.954710 +vt 0.203267 0.960481 +vt 0.136299 0.960481 +vt 0.136299 0.962168 +vt 0.203267 0.962168 +vt 0.203267 0.964797 +vt 0.136299 0.964797 +vt 0.301908 0.982691 +vt 0.329834 0.980027 +vt 0.329834 0.982690 +vt 0.301908 0.980027 +vt 0.329834 0.977363 +vt 0.301908 0.977363 +vt 0.329834 0.974699 +vt 0.301908 0.974699 +vt 0.329834 0.972035 +vt 0.301908 0.972035 +vt 0.329834 0.969371 +vt 0.970662 0.802390 +vt 0.973326 0.800078 +vt 0.973326 0.802390 +vt 0.968778 0.826786 +vt 0.968778 0.824122 +vt 0.975209 0.826786 +vt 0.975209 0.824122 +vt 0.977522 0.822238 +vt 0.977522 0.824122 +vt 0.968778 0.800078 +vt 0.970662 0.800078 +vt 0.970662 0.808821 +vt 0.968778 0.804274 +vt 0.874581 0.121851 +vt 0.876591 0.006711 +vt 0.876591 0.121851 +vt 0.968778 0.906729 +vt 0.970191 0.903318 +vt 0.973601 0.904731 +vt 0.977522 0.828669 +vt 0.973326 0.828669 +vt 0.301908 0.969371 +vt 0.329834 0.965175 +vt 0.301908 0.986886 +vt 0.975209 0.800078 +vt 0.975209 0.804274 +vt 0.977522 0.826786 +vt 0.886640 0.006709 +vt 0.888649 0.121848 +vt 0.886640 0.121849 +vt 0.882620 0.006710 +vt 0.884630 0.121849 +vt 0.882620 0.121850 +vt 0.878601 0.006711 +vt 0.880610 0.121850 +vt 0.878601 0.121850 +vt 0.888649 0.006709 +vt 0.890659 0.121848 +vt 0.884630 0.006710 +vt 0.880610 0.006711 +vt 0.711814 0.977254 +vt 0.717875 0.972190 +vt 0.717875 0.982318 +vt 0.405212 0.706763 +vt 0.375671 0.706763 +vt 0.978906 0.626265 +vt 0.968778 0.620204 +vt 0.978906 0.620204 +vt 0.973842 0.632325 +vt 0.968778 0.626265 +vt 0.978906 0.701585 +vt 0.968778 0.695524 +vt 0.978906 0.695524 +vt 0.085754 0.959964 +vt 0.093652 0.989505 +vt 0.085754 0.989505 +vt 0.973842 0.707645 +vt 0.968778 0.701585 +vt 0.968182 0.245444 +vt 0.960285 0.274985 +vt 0.960285 0.245444 +vt 0.947497 0.992681 +vt 0.977039 0.984783 +vt 0.977039 0.992681 +vt 0.645374 0.953709 +vt 0.674916 0.943582 +vt 0.674916 0.953709 +vt 0.975414 0.951347 +vt 0.967516 0.921558 +vt 0.975414 0.921558 +vt 0.384226 0.941462 +vt 0.414014 0.933565 +vt 0.414014 0.941462 +vt 0.899184 0.925829 +vt 0.928726 0.917931 +vt 0.688333 0.943582 +vt 0.717875 0.935684 +vt 0.717875 0.943582 +vt 0.645374 0.943582 +vt 0.674916 0.935684 +vt 0.263318 0.975303 +vt 0.257257 0.970239 +vt 0.263318 0.965175 +vt 0.269379 0.965175 +vt 0.269379 0.975303 +vt 0.361433 0.970908 +vt 0.367494 0.965844 +vt 0.367494 0.975971 +vt 0.384226 0.951590 +vt 0.414014 0.951590 +vt 0.688333 0.953709 +vt 0.717875 0.953709 +vt 0.651435 0.977254 +vt 0.645374 0.972190 +vt 0.651435 0.967126 +vt 0.657496 0.967127 +vt 0.657496 0.977254 +vt 0.807821 0.801148 +vt 0.801760 0.806211 +vt 0.978906 0.651803 +vt 0.973842 0.645742 +vt 0.983970 0.645742 +vt 0.645374 0.929623 +vt 0.645374 0.935684 +vt 0.688333 0.929623 +vt 0.688333 0.935684 +vt 0.899184 0.911870 +vt 0.899184 0.917931 +vt 0.384226 0.933565 +vt 0.414014 0.927504 +vt 0.978906 0.657864 +vt 0.968778 0.651803 +vt 0.947497 0.978723 +vt 0.947497 0.984783 +vt 0.355372 0.970908 +vt 0.361433 0.960780 +vt 0.974243 0.245444 +vt 0.968182 0.274985 +vt 0.705753 0.977254 +vt 0.711814 0.967126 +vt 0.099713 0.959964 +vt 0.093652 0.959964 +vt 0.813882 0.801148 +vt 0.807821 0.811275 +vt 0.967516 0.951347 +vt 0.961456 0.921558 +vt 0.900550 0.601441 +vt 0.876307 0.394114 +vt 0.876307 0.437274 +vt 0.876307 0.480879 +vt 0.876307 0.524484 +vt 0.876307 0.568090 +vt 0.826003 0.796084 +vt 0.622483 0.966501 +vt 0.508551 0.963750 +vt 0.622483 0.963750 +vt 0.928726 0.897912 +vt 0.899184 0.887784 +vt 0.928726 0.887784 +vt 0.882368 0.606505 +vt 0.876307 0.601441 +vt 0.511219 0.226008 +vt 0.503579 0.144028 +vt 0.511235 0.144636 +vt 0.517753 0.103808 +vt 0.510383 0.101409 +vt 0.536450 0.067112 +vt 0.530179 0.062556 +vt 0.565569 0.037993 +vt 0.561013 0.031722 +vt 0.602261 0.019298 +vt 0.599866 0.011926 +vt 0.625151 0.015672 +vt 0.632807 0.243536 +vt 0.625151 0.226008 +vt 0.279578 0.779761 +vt 0.260883 0.743070 +vt 0.257257 0.720180 +vt 0.913967 0.580195 +vt 0.916923 0.555635 +vt 0.916883 0.580199 +vt 0.914077 0.511982 +vt 0.917064 0.468338 +vt 0.916993 0.511987 +vt 0.914218 0.424679 +vt 0.917205 0.380859 +vt 0.917134 0.424684 +vt 0.917344 0.747253 +vt 0.914007 0.555630 +vt 0.914148 0.468333 +vt 0.914289 0.380855 +vt 0.917344 0.294611 +vt 0.065127 0.861396 +vt 0.070396 0.863061 +vt 0.065127 0.863061 +vt 0.070660 0.863325 +vt 0.072325 0.883939 +vt 0.070660 0.883939 +vt 0.065765 0.863963 +vt 0.069758 0.883302 +vt 0.065765 0.883302 +vt 0.065127 0.884203 +vt 0.070396 0.885869 +vt 0.065127 0.885869 +vt 0.070396 0.884203 +vt 0.064863 0.883939 +vt 0.064863 0.863325 +vt 0.069758 0.863963 +vt 0.063198 0.863325 +vt 0.063198 0.883939 +vt 0.568438 0.993292 +vt 0.555701 0.989594 +vt 0.568557 0.989945 +vt 0.555504 0.980233 +vt 0.548303 0.983031 +vt 0.548041 0.981699 +vt 0.555872 0.983409 +vt 0.555288 0.992721 +vt 0.548296 0.989882 +vt 0.571895 0.989945 +vt 0.568557 0.983121 +vt 0.571895 0.983121 +vt 0.546938 0.983030 +vt 0.568480 0.979918 +vt 0.491677 0.993292 +vt 0.478941 0.989594 +vt 0.491797 0.989945 +vt 0.478743 0.980233 +vt 0.471542 0.983031 +vt 0.471281 0.981699 +vt 0.479111 0.983409 +vt 0.478527 0.992721 +vt 0.471536 0.989882 +vt 0.495134 0.989945 +vt 0.491797 0.983121 +vt 0.495134 0.983121 +vt 0.470177 0.983030 +vt 0.491719 0.979918 +vt 0.567791 0.850757 +vt 0.575605 0.829304 +vt 0.575605 0.850757 +vt 0.241162 0.906203 +vt 0.224540 0.903524 +vt 0.241162 0.903524 +vt 0.510060 0.850757 +vt 0.517874 0.829304 +vt 0.517874 0.850757 +vt 0.517874 0.858571 +vt 0.567791 0.858571 +vt 0.567791 0.821490 +vt 0.567791 0.829304 +vt 0.565375 0.848342 +vt 0.565375 0.831720 +vt 0.520290 0.848342 +vt 0.520290 0.831720 +vt 0.224540 0.906203 +vt 0.241162 0.951289 +vt 0.224540 0.951289 +vt 0.221861 0.951289 +vt 0.221861 0.906203 +vt 0.243840 0.906203 +vt 0.243840 0.951289 +vt 0.241162 0.953967 +vt 0.224540 0.953967 +vt 0.176628 0.823438 +vt 0.179197 0.936978 +vt 0.176628 0.936978 +vt 0.169007 0.823432 +vt 0.174646 0.936972 +vt 0.169008 0.936972 +vt 0.167026 0.936966 +vt 0.167026 0.823426 +vt 0.164457 0.823426 +vt 0.164457 0.936966 +vt 0.257269 0.850098 +vt 0.370809 0.847529 +vt 0.370809 0.850098 +vt 0.257263 0.857718 +vt 0.370803 0.852080 +vt 0.370803 0.857718 +vt 0.370797 0.859700 +vt 0.257257 0.859700 +vt 0.257257 0.862269 +vt 0.370797 0.862269 +vt 0.784658 0.821502 +vt 0.787227 0.935042 +vt 0.784658 0.935042 +vt 0.777038 0.821496 +vt 0.782677 0.935036 +vt 0.777038 0.935036 +vt 0.775056 0.935030 +vt 0.775056 0.821490 +vt 0.772487 0.821490 +vt 0.772487 0.935030 +vt 0.148471 0.823438 +vt 0.151040 0.936978 +vt 0.148471 0.936978 +vt 0.140850 0.823432 +vt 0.146489 0.936972 +vt 0.140850 0.936972 +vt 0.138869 0.936966 +vt 0.138869 0.823426 +vt 0.136299 0.823426 +vt 0.136300 0.936966 +vt 0.944276 0.006716 +vt 0.946868 0.114023 +vt 0.944277 0.114023 +vt 0.936717 0.006712 +vt 0.942404 0.114020 +vt 0.936717 0.114020 +vt 0.934844 0.114016 +vt 0.934844 0.006709 +vt 0.932252 0.006709 +vt 0.932253 0.114016 +vt 0.645374 0.880347 +vt 0.739946 0.877717 +vt 0.739946 0.880347 +vt 0.645374 0.887804 +vt 0.739946 0.882033 +vt 0.739946 0.887804 +vt 0.739946 0.889491 +vt 0.645374 0.889491 +vt 0.645374 0.892120 +vt 0.739946 0.892120 +vt 0.811263 0.954289 +vt 0.878231 0.951660 +vt 0.878231 0.954289 +vt 0.811263 0.961746 +vt 0.878231 0.955975 +vt 0.878231 0.961746 +vt 0.878231 0.963433 +vt 0.811263 0.963433 +vt 0.811263 0.966062 +vt 0.878231 0.966062 +vt 0.427431 0.979920 +vt 0.455358 0.982584 +vt 0.427431 0.982584 +vt 0.427431 0.977257 +vt 0.455358 0.979920 +vt 0.427431 0.974593 +vt 0.455358 0.977256 +vt 0.427431 0.971929 +vt 0.455358 0.974593 +vt 0.427431 0.969265 +vt 0.455358 0.971929 +vt 0.977522 0.843970 +vt 0.975209 0.846634 +vt 0.975209 0.843970 +vt 0.968778 0.784777 +vt 0.970662 0.780230 +vt 0.975209 0.782113 +vt 0.975209 0.784777 +vt 0.977522 0.786661 +vt 0.973326 0.786661 +vt 0.977522 0.848518 +vt 0.973326 0.848518 +vt 0.968778 0.846634 +vt 0.876591 0.135269 +vt 0.874581 0.250408 +vt 0.874581 0.135268 +vt 0.973602 0.865345 +vt 0.970191 0.866758 +vt 0.968778 0.863347 +vt 0.977522 0.780230 +vt 0.973326 0.780230 +vt 0.427431 0.965069 +vt 0.455358 0.969265 +vt 0.455358 0.986780 +vt 0.977522 0.842086 +vt 0.973326 0.842086 +vt 0.977522 0.782113 +vt 0.888649 0.135271 +vt 0.886640 0.250410 +vt 0.886640 0.135271 +vt 0.884630 0.135270 +vt 0.882620 0.250410 +vt 0.882620 0.135270 +vt 0.880610 0.135270 +vt 0.878601 0.250409 +vt 0.878601 0.135269 +vt 0.890659 0.135272 +vt 0.888649 0.250411 +vt 0.884630 0.250410 +vt 0.876591 0.250408 +vt 0.880610 0.250409 +vt 0.693632 0.972190 +vt 0.699693 0.977254 +vt 0.693632 0.982318 +vt 0.632807 0.213747 +vt 0.978906 0.614143 +vt 0.973842 0.608082 +vt 0.983970 0.608082 +vt 0.978906 0.689463 +vt 0.113671 0.959964 +vt 0.105773 0.989505 +vt 0.105773 0.959964 +vt 0.973842 0.683402 +vt 0.983970 0.683402 +vt 0.988201 0.274985 +vt 0.980304 0.245444 +vt 0.988201 0.245444 +vt 0.947497 0.964764 +vt 0.977039 0.972662 +vt 0.947497 0.972662 +vt 0.674916 0.915665 +vt 0.645374 0.905537 +vt 0.674916 0.905537 +vt 0.955395 0.921558 +vt 0.947497 0.951347 +vt 0.947497 0.921558 +vt 0.414014 0.921443 +vt 0.384226 0.913545 +vt 0.414014 0.913545 +vt 0.899184 0.897912 +vt 0.928726 0.905810 +vt 0.899184 0.905810 +vt 0.688333 0.915665 +vt 0.717875 0.923563 +vt 0.688333 0.923563 +vt 0.645374 0.915665 +vt 0.674916 0.923563 +vt 0.645374 0.923563 +vt 0.275440 0.975303 +vt 0.281500 0.970239 +vt 0.281500 0.980367 +vt 0.343251 0.965844 +vt 0.349312 0.970908 +vt 0.343251 0.975971 +vt 0.384226 0.903418 +vt 0.414014 0.903418 +vt 0.717875 0.915665 +vt 0.688333 0.905537 +vt 0.717875 0.905537 +vt 0.663556 0.977254 +vt 0.669617 0.972190 +vt 0.669617 0.982318 +vt 0.826003 0.806211 +vt 0.819943 0.801148 +vt 0.973842 0.669985 +vt 0.978906 0.663925 +vt 0.983970 0.669985 +vt 0.384226 0.921443 +vt 0.968778 0.663925 +vt 0.349312 0.960780 +vt 0.980304 0.274985 +vt 0.699693 0.967126 +vt 0.819943 0.811275 +vt 0.955395 0.951347 +vt 0.876307 0.937367 +vt 0.877826 0.933398 +vt 0.877826 0.937367 +vt 0.879344 0.937367 +vt 0.879344 0.933398 +vt 0.880863 0.937367 +vt 0.882381 0.933398 +vt 0.882381 0.937367 +vt 0.840001 0.746144 +vt 0.840001 0.743338 +vt 0.841404 0.742757 +vt 0.841404 0.764111 +vt 0.840001 0.763530 +vt 0.839420 0.762127 +vt 0.968778 0.725591 +vt 0.991877 0.724836 +vt 0.991877 0.725590 +vt 0.978536 0.159457 +vt 0.979433 0.159840 +vt 0.979069 0.159990 +vt 0.968778 0.724836 +vt 0.991877 0.724081 +vt 0.968778 0.724081 +vt 0.991877 0.723327 +vt 0.977247 0.160745 +vt 0.977630 0.161642 +vt 0.976884 0.160895 +vt 0.968778 0.723326 +vt 0.991877 0.722572 +vt 0.977630 0.159093 +vt 0.978686 0.159093 +vt 0.968778 0.722572 +vt 0.991877 0.721817 +vt 0.979069 0.160745 +vt 0.979433 0.160895 +vt 0.968778 0.721817 +vt 0.991877 0.721062 +vt 0.968778 0.727100 +vt 0.991877 0.726345 +vt 0.991877 0.727100 +vt 0.968778 0.726345 +vt 0.737627 0.942995 +vt 0.736571 0.934165 +vt 0.737627 0.934165 +vt 0.736571 0.942995 +vt 0.735515 0.934165 +vt 0.735515 0.942995 +vt 0.734459 0.934165 +vt 0.734459 0.942995 +vt 0.733404 0.934165 +vt 0.732348 0.942995 +vt 0.732348 0.934165 +vt 0.731292 0.934165 +vt 0.738683 0.942995 +vt 0.738683 0.934165 +vt 0.739739 0.942995 +vt 0.739739 0.934165 +vt 0.977247 0.159990 +vt 0.976884 0.159840 +vt 0.978686 0.161642 +vt 0.978536 0.161279 +vt 0.977630 0.145676 +vt 0.976884 0.143873 +vt 0.978686 0.143127 +vt 0.977781 0.159457 +vt 0.977781 0.161279 +vt 0.987094 0.328112 +vt 0.986494 0.328523 +vt 0.986294 0.328503 +vt 0.733610 0.979860 +vt 0.733409 0.978584 +vt 0.733610 0.978584 +vt 0.734492 0.979860 +vt 0.734090 0.978584 +vt 0.734492 0.978584 +vt 0.986494 0.342610 +vt 0.987205 0.342438 +vt 0.987094 0.343021 +vt 0.987211 0.344218 +vt 0.986294 0.344748 +vt 0.738443 0.978584 +vt 0.737385 0.979860 +vt 0.737385 0.978584 +vt 0.733409 0.979860 +vt 0.732351 0.978584 +vt 0.736326 0.979860 +vt 0.735267 0.978584 +vt 0.736326 0.978584 +vt 0.735086 0.979860 +vt 0.735086 0.978584 +vt 0.732351 0.979860 +vt 0.731292 0.978584 +vt 0.734090 0.979860 +vt 0.987205 0.328695 +vt 0.986837 0.328858 +vt 0.623574 0.981645 +vt 0.622974 0.982056 +vt 0.622774 0.982036 +vt 0.839420 0.689726 +vt 0.840697 0.689525 +vt 0.840697 0.689726 +vt 0.839420 0.690608 +vt 0.840697 0.690206 +vt 0.840697 0.690608 +vt 0.840539 0.920381 +vt 0.841251 0.920209 +vt 0.841140 0.920792 +vt 0.841256 0.921989 +vt 0.840340 0.922519 +vt 0.839420 0.694559 +vt 0.840697 0.693501 +vt 0.840697 0.694559 +vt 0.839420 0.689525 +vt 0.840697 0.688467 +vt 0.839420 0.692442 +vt 0.840697 0.691383 +vt 0.840697 0.692442 +vt 0.839420 0.691202 +vt 0.840697 0.691202 +vt 0.839420 0.687408 +vt 0.840697 0.687408 +vt 0.839420 0.693501 +vt 0.839420 0.691383 +vt 0.839420 0.690206 +vt 0.623685 0.982228 +vt 0.623317 0.982391 +vt 0.841137 0.905883 +vt 0.840537 0.906294 +vt 0.840337 0.906274 +vt 0.839420 0.669157 +vt 0.840697 0.668957 +vt 0.840697 0.669157 +vt 0.840697 0.670040 +vt 0.839420 0.669637 +vt 0.840697 0.669637 +vt 0.986494 0.294941 +vt 0.987205 0.294769 +vt 0.987094 0.295352 +vt 0.987211 0.296549 +vt 0.986294 0.297079 +vt 0.839420 0.673991 +vt 0.840697 0.672932 +vt 0.840697 0.673991 +vt 0.839420 0.668957 +vt 0.840697 0.667898 +vt 0.839420 0.671873 +vt 0.840697 0.670815 +vt 0.840697 0.671873 +vt 0.839420 0.670633 +vt 0.840697 0.670633 +vt 0.839420 0.667898 +vt 0.840697 0.666839 +vt 0.839420 0.670815 +vt 0.841249 0.906466 +vt 0.840881 0.906629 +vt 0.987094 0.312223 +vt 0.986494 0.312634 +vt 0.986294 0.312613 +vt 0.628006 0.949880 +vt 0.627604 0.948603 +vt 0.628006 0.948603 +vt 0.978000 0.186892 +vt 0.978712 0.186720 +vt 0.978601 0.187303 +vt 0.978718 0.188500 +vt 0.977801 0.189030 +vt 0.631957 0.949880 +vt 0.630898 0.948603 +vt 0.631957 0.948603 +vt 0.626923 0.949880 +vt 0.625864 0.948603 +vt 0.626923 0.948603 +vt 0.629840 0.949880 +vt 0.628781 0.948603 +vt 0.629840 0.948603 +vt 0.628599 0.948603 +vt 0.625864 0.949880 +vt 0.624806 0.948603 +vt 0.630898 0.949880 +vt 0.628781 0.949880 +vt 0.627124 0.948603 +vt 0.627604 0.949880 +vt 0.627124 0.949880 +vt 0.987205 0.312806 +vt 0.986837 0.312968 +vt 0.627124 0.949880 +vt 0.626923 0.948603 +vt 0.627124 0.948603 +vt 0.900550 0.294606 +vt 0.801760 0.666839 +vt 0.900339 0.747418 +vt 0.257257 0.706763 +vt 0.510060 0.545155 +vt 0.623992 0.755490 +vt 0.564411 0.733169 +vt 0.601102 0.751865 +vt 0.535292 0.704051 +vt 0.931165 0.747251 +vt 0.115673 0.889896 +vt 0.113743 0.891825 +vt 0.509661 0.991511 +vt 0.509641 0.982031 +vt 0.508551 0.983329 +vt 0.854378 0.991072 +vt 0.854357 0.981591 +vt 0.853268 0.982890 +vt 0.136299 0.802196 +vt 0.144113 0.810009 +vt 0.006709 0.823485 +vt 0.011260 0.823479 +vt 0.192614 0.823437 +vt 0.197165 0.823432 +vt 0.811263 0.824703 +vt 0.815814 0.824698 +vt 0.034866 0.823485 +vt 0.039417 0.823479 +vt 0.932253 0.133830 +vt 0.936717 0.133826 +vt 0.100157 0.946547 +vt 0.095841 0.946547 +vt 0.203267 0.950395 +vt 0.203267 0.954710 +vt 0.970662 0.822238 +vt 0.973326 0.822238 +vt 0.970662 0.828669 +vt 0.975209 0.806938 +vt 0.973326 0.808821 +vt 0.968778 0.806938 +vt 0.874581 0.006712 +vt 0.972189 0.908141 +vt 0.970191 0.908141 +vt 0.968778 0.904731 +vt 0.972189 0.903318 +vt 0.973601 0.906729 +vt 0.301908 0.965175 +vt 0.329834 0.986886 +vt 0.890659 0.006709 +vt 0.287046 0.706763 +vt 0.316588 0.706763 +vt 0.464296 0.706763 +vt 0.434754 0.706763 +vt 0.346130 0.706763 +vt 0.983970 0.632325 +vt 0.983970 0.707645 +vt 0.257257 0.980367 +vt 0.645374 0.982318 +vt 0.674916 0.929623 +vt 0.717875 0.929623 +vt 0.928726 0.911870 +vt 0.384226 0.927504 +vt 0.968778 0.657864 +vt 0.977039 0.978723 +vt 0.355372 0.960780 +vt 0.974243 0.274985 +vt 0.705753 0.967126 +vt 0.099713 0.989505 +vt 0.813882 0.811275 +vt 0.961456 0.951347 +vt 0.876307 0.294606 +vt 0.826003 0.666839 +vt 0.508551 0.966501 +vt 0.503562 0.243536 +vt 0.632807 0.006709 +vt 0.467593 0.720180 +vt 0.467593 0.834112 +vt 0.386221 0.834096 +vt 0.345393 0.827578 +vt 0.308697 0.808880 +vt 0.914428 0.747248 +vt 0.914429 0.294606 +vt 0.070396 0.861396 +vt 0.072325 0.863325 +vt 0.548021 0.991179 +vt 0.546931 0.989881 +vt 0.471260 0.991179 +vt 0.470171 0.989881 +vt 0.510060 0.829304 +vt 0.517874 0.821490 +vt 0.179197 0.823438 +vt 0.174646 0.823432 +vt 0.257269 0.847529 +vt 0.257263 0.852080 +vt 0.787227 0.821502 +vt 0.782677 0.821496 +vt 0.151040 0.823438 +vt 0.146489 0.823432 +vt 0.946868 0.006716 +vt 0.942403 0.006712 +vt 0.645374 0.877718 +vt 0.645374 0.882034 +vt 0.811263 0.951660 +vt 0.811263 0.955975 +vt 0.977522 0.846634 +vt 0.970662 0.786661 +vt 0.968778 0.782113 +vt 0.977522 0.784777 +vt 0.970662 0.842086 +vt 0.970662 0.848518 +vt 0.968778 0.843970 +vt 0.970191 0.861935 +vt 0.972189 0.861935 +vt 0.973602 0.863347 +vt 0.972189 0.866758 +vt 0.968778 0.865345 +vt 0.455358 0.965069 +vt 0.427431 0.986780 +vt 0.890659 0.250411 +vt 0.632807 0.125122 +vt 0.632807 0.036497 +vt 0.632807 0.066039 +vt 0.632807 0.095581 +vt 0.632807 0.154663 +vt 0.632807 0.184205 +vt 0.968778 0.614143 +vt 0.968778 0.689463 +vt 0.113671 0.989505 +vt 0.977039 0.964764 +vt 0.275440 0.965175 +vt 0.663556 0.967127 +vt 0.876307 0.933398 +vt 0.880863 0.933398 +vt 0.841404 0.746726 +vt 0.839420 0.744741 +vt 0.840001 0.760724 +vt 0.841404 0.760143 +vt 0.968778 0.721062 +vt 0.733404 0.942995 +vt 0.731292 0.942995 +vt 0.976884 0.144929 +vt 0.977630 0.143127 +vt 0.979433 0.143873 +vt 0.979433 0.144929 +vt 0.978686 0.145676 +vt 0.985377 0.327974 +vt 0.985377 0.326915 +vt 0.986294 0.326385 +vt 0.987211 0.326915 +vt 0.987211 0.327974 +vt 0.986837 0.342275 +vt 0.985377 0.344218 +vt 0.985377 0.343159 +vt 0.986294 0.342630 +vt 0.987211 0.343160 +vt 0.738443 0.979860 +vt 0.735267 0.979860 +vt 0.731292 0.979860 +vt 0.621857 0.981507 +vt 0.621857 0.980448 +vt 0.622774 0.979918 +vt 0.623691 0.980448 +vt 0.623691 0.981506 +vt 0.840883 0.920046 +vt 0.839423 0.921989 +vt 0.839423 0.920931 +vt 0.840340 0.920401 +vt 0.841256 0.920931 +vt 0.839420 0.688467 +vt 0.839420 0.905745 +vt 0.839420 0.904686 +vt 0.840337 0.904156 +vt 0.841254 0.904686 +vt 0.841254 0.905745 +vt 0.839420 0.670040 +vt 0.986837 0.294606 +vt 0.985377 0.296549 +vt 0.985377 0.295491 +vt 0.986294 0.294961 +vt 0.987211 0.295491 +vt 0.839420 0.672932 +vt 0.839420 0.666839 +vt 0.985377 0.312084 +vt 0.985377 0.311025 +vt 0.986294 0.310496 +vt 0.987211 0.311025 +vt 0.987211 0.312084 +vt 0.978344 0.186557 +vt 0.976884 0.188500 +vt 0.976884 0.187442 +vt 0.977801 0.186912 +vt 0.978718 0.187442 +vt 0.628599 0.949880 +vt 0.624806 0.949880 +vt 0.626923 0.949880 +vn -0.1139 0.0000 0.9935 +vn -1.0000 0.0000 0.0000 +vn -0.1139 -0.0000 -0.9935 +vn -0.0587 -0.9983 0.0000 +vn -0.0587 0.9983 0.0000 +vn -0.0542 0.0000 0.9985 +vn -0.0542 -0.0000 -0.9985 +vn -0.0542 -0.9985 0.0000 +vn -0.0542 0.9985 0.0000 +vn -0.0543 0.0000 -0.9985 +vn 0.0000 0.0002 1.0000 +vn 0.0000 0.0792 0.9969 +vn 0.0000 0.3096 0.9509 +vn 0.0000 0.5878 0.8090 +vn 0.0000 0.8090 0.5878 +vn 0.0000 0.9511 0.3090 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.9969 0.0785 +vn 0.0000 -0.9511 -0.3090 +vn 0.0000 -0.9877 -0.1564 +vn 0.0000 -0.5878 -0.8090 +vn 0.0000 -0.8090 -0.5878 +vn 0.0000 -0.0792 -0.9969 +vn 0.0000 -0.3096 -0.9509 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -0.0002 -1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 0.0000 0.7071 +vn 0.9679 0.2513 0.0000 +vn 0.9919 0.1267 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.9239 -0.3827 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.6412 0.0000 -0.7674 +vn 0.0000 0.9941 0.1087 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.9919 0.1267 0.0000 +vn -0.9679 0.2513 0.0000 +vn -0.6412 0.0000 -0.7674 +vn -0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 0.9239 +vn -0.9585 0.2850 0.0000 +vn -0.9865 0.1639 0.0000 +vn -0.8450 -0.5348 0.0000 +vn 0.7830 0.6220 -0.0000 +vn -0.9302 0.3672 0.0000 +vn 0.1471 -0.9891 -0.0000 +vn 0.3299 -0.9440 0.0000 +vn -0.1471 0.9891 0.0000 +vn 0.9302 -0.3672 0.0000 +vn -0.5247 -0.8513 0.0000 +vn -0.8112 0.5848 0.0000 +vn -0.2540 0.9672 0.0000 +vn -0.3720 0.9282 0.0000 +vn -0.8957 0.4446 0.0000 +vn 0.9381 -0.3464 0.0000 +vn -0.1690 0.9856 0.0000 +vn -0.7691 -0.6392 0.0000 +vn -0.6356 -0.7720 -0.0000 +vn 0.7690 0.6392 -0.0000 +vn 0.1690 -0.9856 0.0000 +vn -1.0000 0.0066 0.0000 +vn 0.0788 0.9969 0.0000 +vn 0.0001 -0.0000 -1.0000 +vn 0.1973 0.9803 0.0000 +vn 0.0742 0.9972 0.0000 +vn -0.6089 0.7932 0.0000 +vn -0.6089 0.7933 0.0000 +vn -0.0001 0.0000 1.0000 +vn 0.6901 -0.7237 0.0000 +vn 0.2817 0.9595 0.0000 +vn -0.9718 -0.2358 0.0000 +vn -0.9104 -0.4138 0.0000 +vn 0.9718 0.2358 -0.0000 +vn -0.2817 -0.9595 -0.0000 +vn -0.8951 0.4458 0.0000 +vn -0.8952 0.4458 0.0000 +vn 0.5092 0.8606 -0.0000 +vn -0.9967 0.0811 0.0000 +vn 0.9997 0.0257 -0.0000 +vn -0.5221 0.8529 0.0000 +vn -0.4776 -0.8786 0.0000 +vn -0.3044 -0.9525 -0.0000 +vn 0.4776 0.8786 -0.0000 +vn 0.5221 -0.8529 0.0000 +vn -0.9313 -0.3642 -0.0000 +vn -0.9313 -0.3643 -0.0000 +vn -0.2961 0.9552 0.0000 +vn -0.8260 0.5637 0.0000 +vn 0.0002 0.0000 1.0000 +s off +f 534/1/1 539/2/1 538/3/1 +f 539/2/2 536/4/2 538/3/2 +f 537/5/3 532/6/3 536/4/3 +f 534/7/4 536/4/4 532/8/4 +f 535/9/5 537/5/5 539/2/5 +f 543/10/6 546/11/6 542/12/6 +f 547/13/2 544/14/2 546/11/2 +f 545/15/7 540/16/7 544/14/7 +f 542/17/8 544/14/8 540/18/8 +f 543/19/9 545/15/9 547/13/9 +f 551/20/6 554/21/6 550/22/6 +f 555/23/2 552/24/2 554/21/2 +f 553/25/10 548/26/10 552/24/10 +f 554/21/8 548/27/8 550/28/8 +f 551/29/9 553/25/9 555/23/9 +f 559/30/6 562/31/6 558/32/6 +f 563/33/2 560/34/2 562/31/2 +f 561/35/7 556/36/7 560/34/7 +f 562/31/8 556/37/8 558/38/8 +f 563/33/9 557/39/9 561/35/9 +f 566/40/6 571/41/6 570/42/6 +f 571/41/2 568/43/2 570/42/2 +f 569/44/10 564/45/10 568/43/10 +f 570/42/8 564/46/8 566/47/8 +f 567/48/9 569/44/9 571/41/9 +f 534/1/1 535/49/1 539/2/1 +f 539/2/2 537/5/2 536/4/2 +f 537/5/3 533/50/3 532/6/3 +f 534/7/4 538/3/4 536/4/4 +f 535/9/5 533/51/5 537/5/5 +f 543/10/6 547/13/6 546/11/6 +f 547/13/2 545/15/2 544/14/2 +f 545/15/7 541/52/7 540/16/7 +f 542/17/8 546/11/8 544/14/8 +f 543/19/9 541/53/9 545/15/9 +f 551/20/6 555/23/6 554/21/6 +f 555/23/2 553/25/2 552/24/2 +f 553/25/7 549/54/7 548/26/7 +f 554/21/8 552/24/8 548/27/8 +f 551/29/9 549/55/9 553/25/9 +f 559/30/6 563/33/6 562/31/6 +f 563/33/2 561/35/2 560/34/2 +f 561/35/7 557/56/7 556/36/7 +f 562/31/8 560/34/8 556/37/8 +f 563/33/9 559/57/9 557/39/9 +f 566/40/6 567/58/6 571/41/6 +f 571/41/2 569/44/2 568/43/2 +f 569/44/7 565/59/7 564/45/7 +f 570/42/8 568/43/8 564/46/8 +f 567/48/9 565/60/9 569/44/9 +s 1 +f 465/61/11 12/62/12 466/63/12 +f 466/63/12 13/64/13 467/65/13 +f 467/65/13 14/66/14 468/67/14 +f 468/67/14 15/68/15 469/69/15 +f 469/69/15 16/70/16 470/71/16 +f 18/72/17 465/73/17 472/74/17 +f 8/75/18 19/76/18 1/77/18 +f 205/78/19 228/79/19 206/80/19 +f 471/81/20 9/82/18 473/83/18 +f 1/84/19 12/85/19 11/86/19 +f 5/87/19 12/85/19 6/88/19 +f 4/89/19 13/90/19 5/87/19 +f 4/89/19 15/91/19 14/92/19 +f 2/93/19 15/91/19 3/94/19 +f 7/95/19 16/96/19 2/93/19 +f 1/84/19 18/97/19 8/98/19 +f 21/99/19 20/100/19 26/101/19 +f 2/102/21 25/103/22 7/104/22 +f 4/105/23 23/106/24 3/107/24 +f 6/108/25 21/109/26 5/110/26 +f 7/104/27 26/111/27 8/112/27 +f 3/107/24 24/113/21 2/102/21 +f 5/110/26 22/114/23 4/105/23 +f 1/115/28 20/116/25 6/108/25 +f 33/117/27 27/118/27 32/119/27 +f 30/120/18 33/121/18 38/122/18 +f 37/123/19 31/124/19 35/125/19 +f 30/126/29 36/127/29 29/128/29 +f 35/125/30 38/129/30 37/123/30 +f 36/130/31 31/124/31 32/131/31 +f 33/121/32 37/123/32 38/122/32 +f 32/119/33 34/132/33 33/117/33 +f 36/130/17 27/133/17 29/134/17 +f 50/135/27 39/136/27 43/137/27 +f 48/138/29 46/139/29 49/140/29 +f 46/139/34 50/135/35 49/140/35 +f 44/141/27 47/142/27 50/135/27 +f 45/143/17 39/144/17 41/145/17 +f 42/146/18 44/141/18 46/139/18 +f 49/140/35 43/137/19 45/143/19 +f 48/138/29 45/143/29 41/147/29 +f 62/148/27 51/149/27 55/150/27 +f 60/151/29 58/152/29 61/153/29 +f 58/152/34 62/148/35 61/153/35 +f 56/154/27 59/155/27 62/148/27 +f 57/156/17 51/157/17 53/158/17 +f 54/159/18 56/154/18 58/152/18 +f 61/153/35 55/150/19 57/156/19 +f 60/151/29 57/156/29 53/160/29 +f 66/161/29 72/162/29 65/163/29 +f 67/164/29 78/165/29 68/166/29 +f 74/167/27 63/168/27 73/169/27 +f 72/162/17 63/170/17 65/171/17 +f 66/172/18 74/167/18 71/173/18 +f 69/174/19 71/173/19 70/175/19 +f 69/174/19 73/169/19 72/162/19 +f 68/176/19 71/173/19 74/167/19 +f 68/176/19 73/169/19 67/177/19 +f 75/178/19 77/179/19 76/180/19 +f 69/181/18 77/179/18 67/182/18 +f 68/183/17 75/178/17 70/184/17 +f 70/185/27 76/180/27 69/186/27 +f 82/187/18 86/188/18 89/189/18 +f 90/190/19 84/191/19 87/192/19 +f 88/193/31 84/191/31 83/194/31 +f 86/188/32 90/190/32 89/189/32 +f 88/193/17 79/195/17 81/196/17 +f 94/197/18 98/198/18 101/199/18 +f 102/200/19 96/201/19 99/202/19 +f 100/203/31 96/201/31 95/204/31 +f 98/198/32 102/200/32 101/199/32 +f 100/203/17 91/205/17 93/206/17 +f 106/207/18 110/208/18 113/209/18 +f 114/210/19 108/211/19 111/212/19 +f 112/213/31 108/211/31 107/214/31 +f 110/208/32 114/210/32 113/209/32 +f 112/213/17 103/215/17 105/216/17 +f 118/217/18 122/218/18 125/219/18 +f 126/220/19 120/221/19 123/222/19 +f 124/223/31 120/221/31 119/224/31 +f 122/218/32 126/220/32 125/219/32 +f 124/223/17 115/225/17 117/226/17 +f 130/227/18 134/228/18 137/229/18 +f 138/230/19 132/231/19 135/232/19 +f 136/233/31 132/231/31 131/234/31 +f 134/228/32 138/230/32 137/229/32 +f 136/233/17 127/235/17 129/236/17 +f 142/237/18 146/238/18 149/239/18 +f 150/240/19 144/241/19 147/242/19 +f 148/243/31 144/241/31 143/244/31 +f 146/238/32 150/240/32 149/239/32 +f 148/243/17 139/245/17 141/246/17 +f 154/247/18 158/248/18 161/249/18 +f 162/250/19 156/251/19 159/252/19 +f 160/253/31 156/251/31 155/254/31 +f 158/248/32 162/250/32 161/249/32 +f 160/253/17 151/255/17 153/256/17 +f 164/257/17 165/258/36 163/259/17 +f 166/260/36 167/261/37 165/258/36 +f 168/262/37 169/263/38 167/261/37 +f 170/264/38 171/265/39 169/263/38 +f 172/266/39 173/267/18 171/265/39 +f 175/268/27 185/269/27 177/270/27 +f 170/271/29 168/272/29 176/273/29 +f 178/274/29 180/275/29 186/276/29 +f 175/268/27 182/277/27 183/278/27 +f 169/279/27 173/280/27 177/270/27 +f 194/281/40 197/282/41 187/283/41 +f 202/284/29 200/285/29 198/286/29 +f 176/273/29 181/287/29 174/288/29 +f 174/289/18 182/290/18 173/267/18 +f 163/259/17 180/291/17 164/257/17 +f 177/270/27 179/292/27 163/293/27 +f 178/274/29 184/294/29 176/273/29 +f 200/295/42 193/296/43 192/297/42 +f 198/298/38 191/299/39 190/300/38 +f 195/301/36 189/302/37 188/303/36 +f 201/304/43 194/305/40 193/296/43 +f 199/306/39 192/297/42 191/299/39 +f 197/282/41 188/303/36 187/283/41 +f 196/307/37 190/300/38 189/302/37 +f 216/308/17 227/309/17 205/310/17 +f 206/311/19 207/312/19 8/98/19 +f 211/313/18 483/314/18 475/315/18 +f 211/313/18 226/316/18 219/317/18 +f 210/318/18 489/319/18 481/320/18 +f 203/321/44 216/322/44 205/323/44 +f 210/318/18 232/324/18 225/325/18 +f 215/326/44 207/327/44 206/328/44 +f 208/329/44 212/330/44 209/331/44 +f 209/332/19 232/333/19 204/334/19 +f 204/335/44 9/336/44 17/337/44 +f 218/338/44 219/339/44 226/340/44 +f 227/341/44 221/342/44 228/79/44 +f 229/343/44 223/344/44 230/345/44 +f 231/346/44 225/347/44 232/333/44 +f 215/348/18 228/349/18 221/350/18 +f 215/348/18 485/351/18 477/352/18 +f 214/353/17 229/354/17 207/355/17 +f 18/356/19 226/340/19 203/357/19 +f 207/358/19 230/345/19 208/359/19 +f 213/360/18 230/361/18 223/362/18 +f 213/360/18 487/363/18 479/364/18 +f 10/365/17 218/366/17 18/72/17 +f 212/367/17 231/368/17 209/369/17 +f 488/370/29 225/347/29 224/371/29 +f 486/372/29 223/344/29 222/373/29 +f 484/374/29 221/342/29 220/375/29 +f 217/376/29 483/377/29 219/339/29 +f 480/378/17 224/379/17 212/367/17 +f 479/380/29 212/330/29 213/381/29 +f 478/382/17 222/383/17 214/353/17 +f 477/384/29 214/385/29 215/326/29 +f 476/386/17 220/387/17 216/308/17 +f 475/388/29 216/322/29 211/389/29 +f 474/390/17 217/391/17 10/365/17 +f 210/392/29 473/393/29 9/336/29 +f 472/74/17 10/365/17 18/72/17 +f 471/81/20 16/70/16 17/394/45 +f 244/395/12 465/61/11 466/63/12 +f 245/396/13 466/63/12 467/65/13 +f 246/397/14 467/65/13 468/67/14 +f 247/398/15 468/67/14 469/69/15 +f 248/399/16 469/69/15 470/71/16 +f 465/73/17 250/400/17 472/74/17 +f 251/401/18 240/402/18 233/403/18 +f 460/404/2 437/405/2 438/406/2 +f 471/81/20 241/407/18 249/408/45 +f 233/409/2 244/410/2 238/411/2 +f 244/410/2 237/412/2 238/411/2 +f 245/413/2 236/414/2 237/412/2 +f 246/415/2 235/416/2 236/414/2 +f 247/417/2 234/418/2 235/416/2 +f 248/419/2 239/420/2 234/418/2 +f 250/421/2 233/409/2 240/422/2 +f 255/423/2 256/424/2 257/425/2 +f 257/426/22 234/427/21 239/428/22 +f 255/429/24 236/430/23 235/431/24 +f 253/432/26 238/433/25 237/434/26 +f 240/435/27 257/426/27 239/428/27 +f 256/436/21 235/431/24 234/427/21 +f 254/437/23 237/434/26 236/430/23 +f 252/438/25 233/439/28 238/433/25 +f 259/440/27 265/441/27 264/442/27 +f 265/443/18 262/444/18 270/445/18 +f 263/446/2 269/447/2 267/448/2 +f 268/449/29 262/450/29 261/451/29 +f 270/452/46 267/448/46 269/447/46 +f 263/446/47 268/453/47 264/454/47 +f 269/447/48 265/443/48 270/445/48 +f 266/455/49 264/442/49 265/441/49 +f 259/456/17 268/453/17 261/457/17 +f 271/458/27 282/459/27 275/460/27 +f 280/461/29 278/462/29 274/463/29 +f 282/459/50 278/462/51 281/464/50 +f 279/465/27 276/466/27 282/459/27 +f 271/467/17 277/468/17 273/469/17 +f 276/466/18 274/470/18 278/462/18 +f 275/460/2 281/464/50 277/468/2 +f 277/468/29 280/461/29 273/471/29 +f 283/472/27 294/473/27 287/474/27 +f 292/475/29 290/476/29 286/477/29 +f 294/473/50 290/476/51 293/478/50 +f 291/479/27 288/480/27 294/473/27 +f 283/481/17 289/482/17 285/483/17 +f 288/480/18 286/484/18 290/476/18 +f 287/474/2 293/478/50 289/482/2 +f 289/482/29 292/475/29 285/485/29 +f 304/486/29 298/487/29 297/488/29 +f 310/489/29 299/490/29 300/491/29 +f 295/492/27 306/493/27 305/494/27 +f 295/495/17 304/486/17 297/496/17 +f 306/493/18 298/497/18 303/498/18 +f 303/498/2 301/499/2 302/500/2 +f 304/486/2 299/501/2 301/499/2 +f 306/493/2 302/500/2 300/502/2 +f 305/494/2 300/502/2 299/501/2 +f 309/503/2 307/504/2 308/505/2 +f 309/503/18 301/506/18 299/507/18 +f 307/504/17 300/508/17 302/509/17 +f 308/505/27 302/510/27 301/511/27 +f 318/512/18 314/513/18 321/514/18 +f 316/515/2 322/516/2 319/517/2 +f 316/515/47 320/518/47 315/519/47 +f 322/516/48 318/512/48 321/514/48 +f 311/520/17 320/518/17 313/521/17 +f 330/522/18 326/523/18 333/524/18 +f 328/525/2 334/526/2 331/527/2 +f 328/525/47 332/528/47 327/529/47 +f 334/526/48 330/522/48 333/524/48 +f 323/530/17 332/528/17 325/531/17 +f 342/532/18 338/533/18 345/534/18 +f 340/535/2 346/536/2 343/537/2 +f 340/535/47 344/538/47 339/539/47 +f 346/536/48 342/532/48 345/534/48 +f 335/540/17 344/538/17 337/541/17 +f 354/542/18 350/543/18 357/544/18 +f 352/545/2 358/546/2 355/547/2 +f 352/545/47 356/548/47 351/549/47 +f 358/546/48 354/542/48 357/544/48 +f 347/550/17 356/548/17 349/551/17 +f 366/552/18 362/553/18 369/554/18 +f 364/555/2 370/556/2 367/557/2 +f 364/555/47 368/558/47 363/559/47 +f 370/556/48 366/552/48 369/554/48 +f 359/560/17 368/558/17 361/561/17 +f 378/562/18 374/563/18 381/564/18 +f 376/565/2 382/566/2 379/567/2 +f 376/565/47 380/568/47 375/569/47 +f 382/566/48 378/562/48 381/564/48 +f 371/570/17 380/568/17 373/571/17 +f 390/572/18 386/573/18 393/574/18 +f 388/575/2 394/576/2 391/577/2 +f 388/575/47 392/578/47 387/579/47 +f 394/576/48 390/572/48 393/574/48 +f 383/580/17 392/578/17 385/581/17 +f 397/582/41 396/583/17 395/584/17 +f 399/585/40 398/586/41 397/582/41 +f 401/587/43 400/588/40 399/585/40 +f 403/589/42 402/590/43 401/587/43 +f 405/591/18 404/592/42 403/589/42 +f 417/593/27 407/594/27 409/595/27 +f 400/596/29 404/597/29 408/598/29 +f 410/599/29 412/600/29 396/601/29 +f 407/594/27 414/602/27 405/603/27 +f 409/595/27 405/603/27 401/604/27 +f 419/605/36 434/606/37 426/607/37 +f 430/608/29 432/609/29 434/610/29 +f 413/611/29 408/598/29 406/612/29 +f 414/613/18 406/614/18 405/591/18 +f 412/615/17 395/584/17 396/583/17 +f 411/616/27 409/595/27 395/617/27 +f 416/618/29 410/599/29 408/598/29 +f 425/619/38 432/620/39 424/621/39 +f 423/622/42 430/623/43 422/624/43 +f 421/625/40 427/626/41 420/627/41 +f 426/628/37 433/629/38 425/619/38 +f 424/621/39 431/630/42 423/622/42 +f 420/627/41 429/631/36 419/605/36 +f 422/624/43 428/632/40 421/625/40 +f 459/633/17 448/634/17 437/635/17 +f 435/636/2 250/421/2 240/422/2 +f 483/314/18 443/637/18 475/315/18 +f 443/637/18 458/638/18 435/639/18 +f 489/319/18 442/640/18 481/320/18 +f 435/641/52 448/642/52 443/643/52 +f 442/640/18 464/644/18 436/645/18 +f 439/646/52 447/647/52 438/648/52 +f 440/649/52 444/650/52 445/651/52 +f 464/652/2 441/653/2 436/654/2 +f 241/655/52 436/656/52 249/657/52 +f 451/658/52 450/659/52 458/660/52 +f 459/661/52 453/662/52 452/663/52 +f 461/664/52 455/665/52 454/666/52 +f 463/667/52 457/668/52 456/669/52 +f 447/670/18 460/671/18 438/672/18 +f 485/351/18 447/670/18 477/352/18 +f 461/673/17 446/674/17 439/675/17 +f 458/660/2 250/676/2 435/677/2 +f 462/678/2 439/679/2 440/680/2 +f 445/681/18 462/682/18 440/683/18 +f 487/363/18 445/681/18 479/364/18 +f 450/684/17 242/685/17 250/400/17 +f 463/686/17 444/687/17 441/688/17 +f 457/668/29 488/370/29 456/669/29 +f 455/665/29 486/372/29 454/666/29 +f 453/662/29 484/374/29 452/663/29 +f 483/377/29 449/689/29 451/658/29 +f 456/690/17 480/378/17 444/687/17 +f 444/650/29 479/380/29 445/651/29 +f 454/691/17 478/382/17 446/674/17 +f 446/692/29 477/384/29 447/647/29 +f 452/693/17 476/386/17 448/634/17 +f 448/642/29 475/388/29 443/643/29 +f 449/694/17 474/390/17 242/685/17 +f 473/393/29 442/695/29 241/655/29 +f 242/685/17 472/74/17 250/400/17 +f 248/399/16 471/81/20 249/408/45 +f 490/696/53 493/697/46 492/698/46 +f 493/697/46 494/699/2 492/698/46 +f 495/700/2 496/701/49 494/699/2 +f 496/701/49 499/702/54 498/703/54 +f 492/704/18 496/705/18 498/706/18 +f 499/707/17 497/708/17 495/709/17 +f 502/710/18 500/711/48 501/712/18 +f 510/713/29 517/714/29 500/715/29 +f 503/716/48 510/717/2 500/711/48 +f 504/718/2 511/719/47 510/717/2 +f 513/720/29 527/721/29 525/722/29 +f 505/723/47 512/724/17 511/719/47 +f 510/713/29 521/725/29 518/726/29 +f 506/727/17 513/728/31 512/724/17 +f 501/729/29 517/714/29 516/730/29 +f 507/731/31 514/732/19 513/728/31 +f 508/733/19 515/734/32 514/735/19 +f 509/736/32 501/712/18 515/734/32 +f 516/737/18 520/738/48 519/739/18 +f 517/740/48 522/741/2 520/738/48 +f 518/742/2 524/743/47 522/741/2 +f 521/744/47 526/745/17 524/743/47 +f 526/745/17 525/746/31 528/747/31 +f 525/746/31 530/748/19 528/747/31 +f 529/749/32 519/739/18 531/750/32 +f 527/751/19 531/750/32 530/752/19 +f 512/753/29 525/722/29 523/754/29 +f 501/729/29 529/755/29 515/756/29 +f 531/757/27 520/758/27 524/759/27 +f 512/753/29 521/725/29 511/760/29 +f 515/756/29 527/721/29 514/761/29 +f 577/762/29 578/763/29 579/764/29 +f 580/765/55 579/766/56 578/767/55 +f 583/768/57 585/769/57 582/770/57 +f 580/771/27 583/772/27 586/773/27 +f 590/774/27 591/775/27 586/773/27 +f 573/776/58 591/777/58 574/778/58 +f 581/779/56 572/780/59 579/766/56 +f 590/781/60 576/782/60 575/783/60 +f 586/784/61 582/770/61 577/785/61 +f 588/786/62 573/787/62 572/780/62 +f 591/777/63 575/783/63 574/778/63 +f 576/782/64 586/784/64 577/785/64 +f 580/765/55 585/769/65 584/788/65 +f 578/763/29 582/789/29 585/790/29 +f 597/791/29 598/792/29 599/793/29 +f 600/794/66 599/795/67 598/796/66 +f 603/797/68 605/798/68 602/799/68 +f 600/800/27 603/801/27 606/802/27 +f 610/803/27 611/804/27 606/802/27 +f 607/805/69 594/806/69 593/807/69 +f 601/808/67 592/809/70 599/795/67 +f 610/810/71 596/811/71 595/812/71 +f 606/813/72 602/799/72 597/814/72 +f 592/809/73 607/815/73 593/816/73 +f 611/817/74 595/812/74 594/806/74 +f 609/818/75 597/814/75 596/811/75 +f 600/794/66 605/798/76 604/819/76 +f 598/792/29 602/820/29 605/821/29 +f 617/822/29 618/823/77 619/824/29 +f 620/825/78 619/826/79 618/827/78 +f 622/828/80 624/829/81 625/830/80 +f 620/831/82 623/832/27 626/833/27 +f 630/834/27 631/835/27 626/833/27 +f 627/836/83 614/837/83 613/838/83 +f 621/839/79 612/840/84 619/826/79 +f 630/841/85 616/842/85 615/843/85 +f 626/844/86 622/828/86 617/845/86 +f 628/846/87 613/847/87 612/840/87 +f 614/837/88 630/841/88 615/843/88 +f 629/848/89 617/845/90 616/842/90 +f 618/827/78 624/829/91 620/825/78 +f 618/823/77 622/849/29 625/850/29 +f 637/851/29 638/852/77 639/853/29 +f 643/854/92 645/855/92 642/856/92 +f 640/857/27 643/858/27 646/859/27 +f 650/860/27 651/861/27 646/859/27 +f 647/862/93 634/863/93 633/864/93 +f 641/865/94 632/866/94 639/867/94 +f 650/868/95 636/869/95 635/870/95 +f 637/871/96 643/854/96 642/856/96 +f 648/872/97 633/873/97 632/866/97 +f 651/874/98 635/870/98 634/863/98 +f 649/875/99 637/871/100 636/869/100 +f 638/876/101 644/877/101 640/878/101 +f 638/852/77 642/879/29 645/880/77 +f 654/881/102 653/882/102 652/883/102 +f 465/61/11 11/884/11 12/62/12 +f 466/63/12 12/62/12 13/64/13 +f 467/65/13 13/64/13 14/66/14 +f 468/67/14 14/66/14 15/68/15 +f 469/69/15 15/68/15 16/70/16 +f 18/72/17 11/885/17 465/73/17 +f 8/75/18 26/886/18 19/76/18 +f 205/78/19 227/341/19 228/79/19 +f 471/81/20 17/394/45 9/82/18 +f 1/84/19 6/88/19 12/85/19 +f 5/87/19 13/90/19 12/85/19 +f 4/89/19 14/92/19 13/90/19 +f 4/89/19 3/94/19 15/91/19 +f 2/93/19 16/96/19 15/91/19 +f 7/95/19 17/887/19 16/96/19 +f 1/84/19 11/86/19 18/97/19 +f 19/888/19 26/101/19 20/100/19 +f 26/101/19 25/889/19 23/890/19 +f 25/889/19 24/891/19 23/890/19 +f 23/890/19 22/892/19 26/101/19 +f 22/892/19 21/99/19 26/101/19 +f 2/102/21 24/113/21 25/103/22 +f 4/105/23 22/114/23 23/106/24 +f 6/108/25 20/116/25 21/109/26 +f 7/104/27 25/103/27 26/111/27 +f 3/107/24 23/106/24 24/113/21 +f 5/110/26 21/109/26 22/114/23 +f 1/115/28 19/893/28 20/116/25 +f 33/117/27 28/894/27 27/118/27 +f 30/120/18 28/895/18 33/121/18 +f 37/123/19 34/132/19 31/124/19 +f 30/126/29 38/129/29 36/127/29 +f 35/125/30 36/127/30 38/129/30 +f 36/130/31 35/125/31 31/124/31 +f 33/121/32 34/132/32 37/123/32 +f 32/119/33 31/124/33 34/132/33 +f 36/130/17 32/131/17 27/133/17 +f 50/135/27 47/142/27 39/136/27 +f 48/138/29 42/896/29 46/139/29 +f 46/139/34 44/141/34 50/135/35 +f 44/141/27 40/897/27 47/142/27 +f 45/143/17 43/137/17 39/144/17 +f 42/146/18 40/898/18 44/141/18 +f 49/140/35 50/135/35 43/137/19 +f 48/138/29 49/140/29 45/143/29 +f 62/148/27 59/155/27 51/149/27 +f 60/151/29 54/899/29 58/152/29 +f 58/152/34 56/154/34 62/148/35 +f 56/154/27 52/900/27 59/155/27 +f 57/156/17 55/150/17 51/157/17 +f 54/159/18 52/901/18 56/154/18 +f 61/153/35 62/148/35 55/150/19 +f 60/151/29 61/153/29 57/156/29 +f 66/161/29 71/173/29 72/162/29 +f 67/164/29 77/179/29 78/165/29 +f 74/167/27 64/902/27 63/168/27 +f 72/162/17 73/169/17 63/170/17 +f 66/172/18 64/903/18 74/167/18 +f 69/174/19 72/162/19 71/173/19 +f 69/174/19 67/177/19 73/169/19 +f 68/176/19 70/175/19 71/173/19 +f 68/176/19 74/167/19 73/169/19 +f 75/178/19 78/165/19 77/179/19 +f 69/181/18 76/180/18 77/179/18 +f 68/183/17 78/165/17 75/178/17 +f 70/185/27 75/178/27 76/180/27 +f 82/187/18 80/904/18 86/188/18 +f 90/190/19 85/905/19 84/191/19 +f 88/193/31 87/192/31 84/191/31 +f 86/188/32 85/905/32 90/190/32 +f 88/193/17 83/194/17 79/195/17 +f 94/197/18 92/906/18 98/198/18 +f 102/200/19 97/907/19 96/201/19 +f 100/203/31 99/202/31 96/201/31 +f 98/198/32 97/907/32 102/200/32 +f 100/203/17 95/204/17 91/205/17 +f 106/207/18 104/908/18 110/208/18 +f 114/210/19 109/909/19 108/211/19 +f 112/213/31 111/212/31 108/211/31 +f 110/208/32 109/909/32 114/210/32 +f 112/213/17 107/214/17 103/215/17 +f 118/217/18 116/910/18 122/218/18 +f 126/220/19 121/911/19 120/221/19 +f 124/223/31 123/222/31 120/221/31 +f 122/218/32 121/911/32 126/220/32 +f 124/223/17 119/224/17 115/225/17 +f 130/227/18 128/912/18 134/228/18 +f 138/230/19 133/913/19 132/231/19 +f 136/233/31 135/232/31 132/231/31 +f 134/228/32 133/913/32 138/230/32 +f 136/233/17 131/234/17 127/235/17 +f 142/237/18 140/914/18 146/238/18 +f 150/240/19 145/915/19 144/241/19 +f 148/243/31 147/242/31 144/241/31 +f 146/238/32 145/915/32 150/240/32 +f 148/243/17 143/244/17 139/245/17 +f 154/247/18 152/916/18 158/248/18 +f 162/250/19 157/917/19 156/251/19 +f 160/253/31 159/252/31 156/251/31 +f 158/248/32 157/917/32 162/250/32 +f 160/253/17 155/254/17 151/255/17 +f 164/257/17 166/260/36 165/258/36 +f 166/260/36 168/262/37 167/261/37 +f 168/262/37 170/264/38 169/263/38 +f 170/264/38 172/266/39 171/265/39 +f 172/266/39 174/289/18 173/267/18 +f 175/268/27 183/278/27 185/269/27 +f 168/272/29 166/918/29 164/919/29 +f 164/919/29 178/274/29 168/272/29 +f 178/274/29 176/273/29 168/272/29 +f 176/273/29 174/288/29 172/920/29 +f 172/920/29 170/271/29 176/273/29 +f 178/274/29 164/919/29 180/275/29 +f 175/268/27 173/280/27 182/277/27 +f 177/270/27 163/293/27 165/921/27 +f 165/921/27 167/922/27 177/270/27 +f 167/922/27 169/279/27 177/270/27 +f 169/279/27 171/923/27 173/280/27 +f 173/280/27 175/268/27 177/270/27 +f 194/281/40 202/924/40 197/282/41 +f 195/925/29 197/926/29 202/284/29 +f 202/284/29 201/927/29 200/285/29 +f 200/285/29 199/928/29 198/286/29 +f 198/286/29 196/929/29 195/925/29 +f 195/925/29 202/284/29 198/286/29 +f 176/273/29 184/294/29 181/287/29 +f 174/289/18 181/930/18 182/290/18 +f 163/259/17 179/931/17 180/291/17 +f 177/270/27 185/269/27 179/292/27 +f 178/274/29 186/276/29 184/294/29 +f 200/295/42 201/304/43 193/296/43 +f 198/298/38 199/306/39 191/299/39 +f 195/301/36 196/307/37 189/302/37 +f 201/304/43 202/932/40 194/305/40 +f 199/306/39 200/295/42 192/297/42 +f 197/282/41 195/301/36 188/303/36 +f 196/307/37 198/298/38 190/300/38 +f 216/308/17 220/387/17 227/309/17 +f 17/887/19 7/95/19 204/933/19 +f 7/95/19 8/98/19 207/312/19 +f 204/933/19 7/95/19 209/934/19 +f 8/98/19 18/97/19 203/935/19 +f 203/935/19 205/936/19 8/98/19 +f 205/936/19 206/311/19 8/98/19 +f 207/312/19 208/937/19 7/95/19 +f 208/937/19 209/934/19 7/95/19 +f 211/313/18 219/317/18 483/314/18 +f 211/313/18 203/938/18 226/316/18 +f 210/318/18 225/325/18 489/319/18 +f 203/321/44 211/389/44 216/322/44 +f 210/318/18 204/939/18 232/324/18 +f 215/326/44 214/385/44 207/327/44 +f 208/329/44 213/381/44 212/330/44 +f 209/332/19 231/346/19 232/333/19 +f 204/335/44 210/392/44 9/336/44 +f 218/338/44 217/376/44 219/339/44 +f 227/341/44 220/375/44 221/342/44 +f 229/343/44 222/373/44 223/344/44 +f 231/346/44 224/371/44 225/347/44 +f 215/348/18 206/940/18 228/349/18 +f 215/348/18 221/350/18 485/351/18 +f 214/353/17 222/383/17 229/354/17 +f 18/356/19 218/338/19 226/340/19 +f 207/358/19 229/343/19 230/345/19 +f 213/360/18 208/941/18 230/361/18 +f 213/360/18 223/362/18 487/363/18 +f 10/365/17 217/391/17 218/366/17 +f 212/367/17 224/379/17 231/368/17 +f 488/370/29 489/942/29 225/347/29 +f 486/372/29 487/943/29 223/344/29 +f 484/374/29 485/944/29 221/342/29 +f 217/376/29 482/945/29 483/377/29 +f 480/378/17 488/946/17 224/379/17 +f 479/380/29 480/947/29 212/330/29 +f 478/382/17 486/948/17 222/383/17 +f 477/384/29 478/949/29 214/385/29 +f 476/386/17 484/950/17 220/387/17 +f 475/388/29 476/951/29 216/322/29 +f 474/390/17 482/952/17 217/391/17 +f 210/392/29 481/953/29 473/393/29 +f 472/74/17 474/390/17 10/365/17 +f 471/81/20 470/71/16 16/70/16 +f 244/395/12 243/954/11 465/61/11 +f 245/396/13 244/395/12 466/63/12 +f 246/397/14 245/396/13 467/65/13 +f 247/398/15 246/397/14 468/67/14 +f 248/399/16 247/398/15 469/69/15 +f 465/73/17 243/955/17 250/400/17 +f 251/401/18 258/956/18 240/402/18 +f 460/404/2 459/661/2 437/405/2 +f 471/81/20 473/83/18 241/407/18 +f 233/409/2 243/957/2 244/410/2 +f 244/410/2 245/413/2 237/412/2 +f 245/413/2 246/415/2 236/414/2 +f 246/415/2 247/417/2 235/416/2 +f 247/417/2 248/419/2 234/418/2 +f 248/419/2 249/958/2 239/420/2 +f 250/421/2 243/957/2 233/409/2 +f 257/425/2 258/959/2 255/423/2 +f 258/959/2 251/960/2 252/961/2 +f 253/962/2 258/959/2 252/961/2 +f 253/962/2 254/963/2 258/959/2 +f 254/963/2 255/423/2 258/959/2 +f 257/426/22 256/436/21 234/427/21 +f 255/429/24 254/437/23 236/430/23 +f 253/432/26 252/438/25 238/433/25 +f 240/435/27 258/964/27 257/426/27 +f 256/436/21 255/429/24 235/431/24 +f 254/437/23 253/432/26 237/434/26 +f 252/438/25 251/965/28 233/439/28 +f 259/440/27 260/966/27 265/441/27 +f 265/443/18 260/967/18 262/444/18 +f 263/446/2 266/455/2 269/447/2 +f 268/449/29 270/452/29 262/450/29 +f 270/452/46 268/449/46 267/448/46 +f 263/446/47 267/448/47 268/453/47 +f 269/447/48 266/455/48 265/443/48 +f 266/455/49 263/446/49 264/442/49 +f 259/456/17 264/454/17 268/453/17 +f 271/458/27 279/465/27 282/459/27 +f 280/461/29 281/464/29 278/462/29 +f 282/459/50 276/466/51 278/462/51 +f 279/465/27 272/968/27 276/466/27 +f 271/467/17 275/460/17 277/468/17 +f 276/466/18 272/969/18 274/470/18 +f 275/460/2 282/459/50 281/464/50 +f 277/468/29 281/464/29 280/461/29 +f 283/472/27 291/479/27 294/473/27 +f 292/475/29 293/478/29 290/476/29 +f 294/473/50 288/480/51 290/476/51 +f 291/479/27 284/970/27 288/480/27 +f 283/481/17 287/474/17 289/482/17 +f 288/480/18 284/971/18 286/484/18 +f 287/474/2 294/473/50 293/478/50 +f 289/482/29 293/478/29 292/475/29 +f 304/486/29 303/498/29 298/487/29 +f 310/489/29 309/503/29 299/490/29 +f 295/492/27 296/972/27 306/493/27 +f 295/495/17 305/494/17 304/486/17 +f 306/493/18 296/973/18 298/497/18 +f 303/498/2 304/486/2 301/499/2 +f 304/486/2 305/494/2 299/501/2 +f 306/493/2 303/498/2 302/500/2 +f 305/494/2 306/493/2 300/502/2 +f 309/503/2 310/489/2 307/504/2 +f 309/503/18 308/505/18 301/506/18 +f 307/504/17 310/489/17 300/508/17 +f 308/505/27 307/504/27 302/510/27 +f 318/512/18 312/974/18 314/513/18 +f 316/515/2 317/975/2 322/516/2 +f 316/515/47 319/517/47 320/518/47 +f 322/516/48 317/975/48 318/512/48 +f 311/520/17 315/519/17 320/518/17 +f 330/522/18 324/976/18 326/523/18 +f 328/525/2 329/977/2 334/526/2 +f 328/525/47 331/527/47 332/528/47 +f 334/526/48 329/977/48 330/522/48 +f 323/530/17 327/529/17 332/528/17 +f 342/532/18 336/978/18 338/533/18 +f 340/535/2 341/979/2 346/536/2 +f 340/535/47 343/537/47 344/538/47 +f 346/536/48 341/979/48 342/532/48 +f 335/540/17 339/539/17 344/538/17 +f 354/542/18 348/980/18 350/543/18 +f 352/545/2 353/981/2 358/546/2 +f 352/545/47 355/547/47 356/548/47 +f 358/546/48 353/981/48 354/542/48 +f 347/550/17 351/549/17 356/548/17 +f 366/552/18 360/982/18 362/553/18 +f 364/555/2 365/983/2 370/556/2 +f 364/555/47 367/557/47 368/558/47 +f 370/556/48 365/983/48 366/552/48 +f 359/560/17 363/559/17 368/558/17 +f 378/562/18 372/984/18 374/563/18 +f 376/565/2 377/985/2 382/566/2 +f 376/565/47 379/567/47 380/568/47 +f 382/566/48 377/985/48 378/562/48 +f 371/570/17 375/569/17 380/568/17 +f 390/572/18 384/986/18 386/573/18 +f 388/575/2 389/987/2 394/576/2 +f 388/575/47 391/577/47 392/578/47 +f 394/576/48 389/987/48 390/572/48 +f 383/580/17 387/579/17 392/578/17 +f 397/582/41 398/586/41 396/583/17 +f 399/585/40 400/588/40 398/586/41 +f 401/587/43 402/590/43 400/588/40 +f 403/589/42 404/592/42 402/590/43 +f 405/591/18 406/614/18 404/592/42 +f 417/593/27 415/988/27 407/594/27 +f 396/601/29 398/989/29 400/596/29 +f 400/596/29 402/990/29 404/597/29 +f 404/597/29 406/612/29 408/598/29 +f 408/598/29 410/599/29 396/601/29 +f 396/601/29 400/596/29 408/598/29 +f 410/599/29 418/991/29 412/600/29 +f 407/594/27 415/988/27 414/602/27 +f 397/992/27 395/617/27 409/595/27 +f 409/595/27 407/594/27 405/603/27 +f 405/603/27 403/993/27 401/604/27 +f 401/604/27 399/994/27 397/992/27 +f 397/992/27 409/595/27 401/604/27 +f 419/605/36 429/631/36 434/606/37 +f 434/610/29 429/995/29 427/996/29 +f 427/996/29 428/997/29 434/610/29 +f 428/997/29 430/608/29 434/610/29 +f 430/608/29 431/998/29 432/609/29 +f 432/609/29 433/999/29 434/610/29 +f 413/611/29 416/618/29 408/598/29 +f 414/613/18 413/1000/18 406/614/18 +f 412/615/17 411/1001/17 395/584/17 +f 411/616/27 417/593/27 409/595/27 +f 416/618/29 418/991/29 410/599/29 +f 425/619/38 433/629/38 432/620/39 +f 423/622/42 431/630/42 430/623/43 +f 421/625/40 428/632/40 427/626/41 +f 426/628/37 434/1002/37 433/629/38 +f 424/621/39 432/620/39 431/630/42 +f 420/627/41 427/626/41 429/631/36 +f 422/624/43 430/623/43 428/632/40 +f 459/633/17 452/693/17 448/634/17 +f 240/422/2 239/420/2 439/1003/2 +f 239/420/2 249/958/2 436/1004/2 +f 441/1005/2 239/420/2 436/1004/2 +f 441/1005/2 440/1006/2 239/420/2 +f 440/1006/2 439/1003/2 239/420/2 +f 240/422/2 439/1003/2 438/1007/2 +f 438/1007/2 437/1008/2 240/422/2 +f 437/1008/2 435/636/2 240/422/2 +f 483/314/18 451/1009/18 443/637/18 +f 443/637/18 451/1009/18 458/638/18 +f 489/319/18 457/1010/18 442/640/18 +f 435/641/52 437/1011/52 448/642/52 +f 442/640/18 457/1010/18 464/644/18 +f 439/646/52 446/692/52 447/647/52 +f 440/649/52 441/1012/52 444/650/52 +f 464/652/2 463/667/2 441/653/2 +f 241/655/52 442/695/52 436/656/52 +f 451/658/52 449/689/52 450/659/52 +f 459/661/52 460/404/52 453/662/52 +f 461/664/52 462/678/52 455/665/52 +f 463/667/52 464/652/52 457/668/52 +f 447/670/18 453/1013/18 460/671/18 +f 485/351/18 453/1013/18 447/670/18 +f 461/673/17 454/691/17 446/674/17 +f 458/660/2 450/659/2 250/676/2 +f 462/678/2 461/664/2 439/679/2 +f 445/681/18 455/1014/18 462/682/18 +f 487/363/18 455/1014/18 445/681/18 +f 450/684/17 449/694/17 242/685/17 +f 463/686/17 456/690/17 444/687/17 +f 457/668/29 489/942/29 488/370/29 +f 455/665/29 487/943/29 486/372/29 +f 453/662/29 485/944/29 484/374/29 +f 483/377/29 482/945/29 449/689/29 +f 456/690/17 488/946/17 480/378/17 +f 444/650/29 480/947/29 479/380/29 +f 454/691/17 486/948/17 478/382/17 +f 446/692/29 478/949/29 477/384/29 +f 452/693/17 484/950/17 476/386/17 +f 448/642/29 476/951/29 475/388/29 +f 449/694/17 482/952/17 474/390/17 +f 473/393/29 481/953/29 442/695/29 +f 242/685/17 474/390/17 472/74/17 +f 248/399/16 470/71/16 471/81/20 +f 490/696/53 491/1015/53 493/697/46 +f 493/697/46 495/700/2 494/699/2 +f 495/700/2 497/1016/49 496/701/49 +f 496/701/49 497/1016/49 499/702/54 +f 498/706/18 490/1017/18 492/704/18 +f 492/704/18 494/1018/18 496/705/18 +f 495/709/17 493/1019/17 491/1020/17 +f 491/1020/17 499/707/17 495/709/17 +f 502/710/18 503/716/48 500/711/48 +f 510/713/29 518/726/29 517/714/29 +f 503/716/48 504/718/2 510/717/2 +f 504/718/2 505/723/47 511/719/47 +f 513/720/29 514/761/29 527/721/29 +f 505/723/47 506/727/17 512/724/17 +f 510/713/29 511/760/29 521/725/29 +f 506/727/17 507/731/31 513/728/31 +f 501/729/29 500/715/29 517/714/29 +f 507/731/31 508/1021/19 514/732/19 +f 508/733/19 509/736/32 515/734/32 +f 509/736/32 502/710/18 501/712/18 +f 516/737/18 517/740/48 520/738/48 +f 517/740/48 518/742/2 522/741/2 +f 518/742/2 521/744/47 524/743/47 +f 521/744/47 523/1022/17 526/745/17 +f 526/745/17 523/1022/17 525/746/31 +f 525/746/31 527/1023/19 530/748/19 +f 529/749/32 516/737/18 519/739/18 +f 527/751/19 529/749/32 531/750/32 +f 512/753/29 513/720/29 525/722/29 +f 501/729/29 516/730/29 529/755/29 +f 531/757/27 519/1024/27 520/758/27 +f 520/758/27 522/1025/27 524/759/27 +f 524/759/27 526/1026/27 531/757/27 +f 526/1026/27 528/1027/27 531/757/27 +f 528/1027/27 530/1028/27 531/757/27 +f 512/753/29 523/754/29 521/725/29 +f 515/756/29 529/755/29 527/721/29 +f 579/764/29 572/1029/29 577/762/29 +f 572/1029/29 573/1030/29 577/762/29 +f 573/1030/29 574/1031/29 577/762/29 +f 574/1031/29 575/1032/29 577/762/29 +f 575/1032/29 576/1033/29 577/762/29 +f 580/765/55 581/779/56 579/766/56 +f 583/768/57 584/788/57 585/769/57 +f 580/771/27 584/1034/27 583/772/27 +f 591/775/27 587/1035/27 586/773/27 +f 587/1035/27 588/1036/27 586/773/27 +f 588/1036/27 581/1037/27 586/773/27 +f 581/1037/27 580/771/27 586/773/27 +f 586/773/27 589/1038/27 590/774/27 +f 573/776/58 587/1039/58 591/777/58 +f 581/779/56 588/786/59 572/780/59 +f 590/781/60 589/1040/60 576/782/60 +f 586/784/61 583/768/61 582/770/61 +f 588/786/62 587/1041/62 573/787/62 +f 591/777/63 590/781/63 575/783/63 +f 576/782/64 589/1040/64 586/784/64 +f 580/765/55 578/767/55 585/769/65 +f 578/763/29 577/762/29 582/789/29 +f 599/793/29 592/1042/29 597/791/29 +f 592/1042/29 593/1043/29 597/791/29 +f 593/1043/29 594/1044/29 597/791/29 +f 594/1044/29 595/1045/29 597/791/29 +f 595/1045/29 596/1046/29 597/791/29 +f 600/794/66 601/808/67 599/795/67 +f 603/797/68 604/819/68 605/798/68 +f 600/800/27 604/1047/27 603/801/27 +f 611/804/27 607/1048/27 606/802/27 +f 607/1048/27 608/1049/27 606/802/27 +f 608/1049/27 601/1050/27 606/802/27 +f 601/1050/27 600/800/27 606/802/27 +f 606/802/27 609/1051/27 610/803/27 +f 607/805/69 611/817/69 594/806/69 +f 601/808/67 608/1052/70 592/809/70 +f 610/810/71 609/818/71 596/811/71 +f 606/813/72 603/797/72 602/799/72 +f 592/809/73 608/1052/73 607/815/73 +f 611/817/74 610/810/74 595/812/74 +f 609/818/75 606/813/75 597/814/75 +f 600/794/66 598/796/66 605/798/76 +f 598/792/29 597/791/29 602/820/29 +f 619/824/29 612/1053/29 617/822/29 +f 612/1053/29 613/1054/29 617/822/29 +f 613/1054/29 614/1055/29 617/822/29 +f 614/1055/29 615/1056/29 617/822/29 +f 615/1056/29 616/1057/29 617/822/29 +f 620/825/78 621/839/79 619/826/79 +f 622/828/80 623/1058/81 624/829/81 +f 620/831/82 624/1059/27 623/832/27 +f 631/835/27 627/1060/27 626/833/27 +f 627/1060/27 628/1061/27 626/833/27 +f 628/1061/27 621/1062/27 626/833/27 +f 621/1062/27 620/831/82 626/833/27 +f 626/833/27 629/1063/103 630/834/27 +f 627/836/83 631/1064/83 614/837/83 +f 621/839/79 628/846/84 612/840/84 +f 630/841/85 629/848/85 616/842/85 +f 626/844/86 623/1058/86 622/828/86 +f 628/846/87 627/1065/87 613/847/87 +f 614/837/88 631/1064/88 630/841/88 +f 629/848/89 626/844/89 617/845/90 +f 618/827/78 625/830/91 624/829/91 +f 618/823/77 617/822/29 622/849/29 +f 639/853/29 632/1066/29 637/851/29 +f 632/1066/29 633/1067/29 637/851/29 +f 633/1067/29 634/1068/29 637/851/29 +f 634/1068/29 635/1069/29 637/851/29 +f 635/1069/29 636/1070/29 637/851/29 +f 643/854/92 644/877/92 645/855/92 +f 640/857/27 644/1071/27 643/858/27 +f 651/861/27 647/1072/27 646/859/27 +f 647/1072/27 648/1073/27 646/859/27 +f 648/1073/27 641/1074/27 646/859/27 +f 641/1074/27 640/857/27 646/859/27 +f 646/859/27 649/1075/82 650/860/27 +f 647/862/93 651/874/93 634/863/93 +f 641/865/94 648/872/94 632/866/94 +f 650/868/95 649/875/95 636/869/95 +f 637/871/96 646/1076/96 643/854/96 +f 648/872/97 647/1077/97 633/873/97 +f 651/874/98 650/868/98 635/870/98 +f 649/875/99 646/1076/99 637/871/100 +f 638/876/101 645/855/101 644/877/101 +f 638/852/77 637/851/29 642/879/29 +f 654/881/102 655/1078/102 653/882/102 +o doorRight +v 0.299220 0.487402 -3.251414 +v 0.299220 5.590070 -1.004025 +v 0.299220 5.128570 -1.909768 +v 0.299220 4.409768 -2.628571 +v 0.299220 3.503919 -3.090124 +v 0.299220 2.496066 -3.251015 +v 0.299220 5.679564 -0.438986 +v 0.299220 0.487402 -0.438985 +v 0.149610 5.900837 -0.125000 +v 0.149610 0.054715 -0.125000 +v 0.299220 0.054715 -3.440433 +v 0.299220 2.511072 -3.439998 +v 0.299220 3.563152 -3.272047 +v 0.299220 4.522236 -2.783369 +v 0.299220 5.283369 -2.022236 +v 0.299220 5.772047 -1.063152 +v 0.299220 5.900837 -0.250000 +v 0.299220 0.054715 -0.250000 +v 0.231315 0.487402 -3.251414 +v 0.231315 2.496066 -3.251015 +v 0.231315 3.503919 -3.090124 +v 0.231315 4.409768 -2.628571 +v 0.231315 5.128570 -1.909768 +v 0.231315 5.590070 -1.004025 +v 0.231315 5.679564 -0.438986 +v 0.231315 0.487402 -0.438985 +v 0.204275 1.917457 -1.651271 +v 0.204275 2.047506 -1.651271 +v 0.204275 1.917457 -1.142414 +v 0.204275 2.047506 -1.142414 +v 0.261126 1.933194 -1.635535 +v 0.245389 1.917457 -1.651271 +v 0.245389 2.047506 -1.651271 +v 0.261126 2.031770 -1.635535 +v 0.261126 1.933194 -1.158151 +v 0.245389 1.917457 -1.142414 +v 0.261126 2.031770 -1.158151 +v 0.245389 2.047506 -1.142414 +v 0.215124 3.126893 -0.898361 +v 0.215124 3.628286 -0.898361 +v 0.215124 3.126893 -0.736489 +v 0.215124 3.628286 -0.736489 +v 0.294289 3.126893 -0.898361 +v 0.247374 3.628286 -0.898361 +v 0.294289 3.126893 -0.736489 +v 0.247374 3.628286 -0.736489 +v 0.215124 3.447602 -0.898361 +v 0.215124 3.447602 -0.736489 +v 0.294289 3.447602 -0.736489 +v 0.294289 3.447602 -0.898361 +v 0.215124 3.126893 -1.339800 +v 0.215124 3.628286 -1.339800 +v 0.215124 3.126893 -1.177929 +v 0.215124 3.628286 -1.177929 +v 0.294289 3.126893 -1.339800 +v 0.247374 3.628286 -1.339800 +v 0.294289 3.126893 -1.177929 +v 0.247374 3.628286 -1.177929 +v 0.215124 3.447602 -1.339800 +v 0.215124 3.447602 -1.177929 +v 0.294289 3.447602 -1.177929 +v 0.294289 3.447602 -1.339800 +v 0.110842 1.775868 -3.124604 +v 0.110842 2.305447 -3.124604 +v 0.110842 1.775868 -1.892389 +v 0.110842 2.305447 -1.892389 +v 0.303721 1.835501 -3.064971 +v 0.303721 2.245814 -3.064971 +v 0.303721 1.835501 -1.952022 +v 0.303721 2.245814 -1.952022 +v 0.303721 2.305447 -1.892389 +v 0.303721 1.775868 -1.892389 +v 0.303721 1.775868 -3.124604 +v 0.303721 2.305447 -3.124604 +v 0.237602 2.245814 -1.952022 +v 0.237602 1.835501 -1.952022 +v 0.237602 1.835501 -3.064971 +v 0.237602 2.245814 -3.064971 +v 0.185097 0.938915 -3.260309 +v 0.185097 1.140242 -3.260309 +v 0.185097 0.938915 -0.391829 +v 0.185097 1.140242 -0.391829 +v 0.250002 0.938915 -3.260309 +v 0.279439 0.968351 -3.260309 +v 0.279439 1.110806 -3.260309 +v 0.250002 1.140242 -3.260309 +v 0.279439 0.968351 -0.391829 +v 0.250002 0.938915 -0.391829 +v 0.250002 1.140242 -0.391829 +v 0.279439 1.110806 -0.391829 +v 0.185097 1.623428 -3.260309 +v 0.185097 1.824755 -3.260309 +v 0.185097 1.623428 -0.391829 +v 0.185097 1.824755 -0.391829 +v 0.250002 1.623428 -3.260309 +v 0.279439 1.652864 -3.260309 +v 0.279439 1.795319 -3.260309 +v 0.250002 1.824755 -3.260309 +v 0.279439 1.652864 -0.391829 +v 0.250002 1.623428 -0.391829 +v 0.250002 1.824755 -0.391829 +v 0.279439 1.795319 -0.391829 +v 0.185097 2.307941 -3.260309 +v 0.185097 2.509268 -3.260309 +v 0.185097 2.307941 -0.391829 +v 0.185097 2.509268 -0.391829 +v 0.250002 2.307941 -3.260309 +v 0.279439 2.337377 -3.260309 +v 0.279439 2.479832 -3.260309 +v 0.250002 2.509268 -3.260309 +v 0.279439 2.337377 -0.391829 +v 0.250002 2.307941 -0.391829 +v 0.250002 2.509268 -0.391829 +v 0.279439 2.479832 -0.391829 +v 0.185097 2.992454 -3.260309 +v 0.185097 3.193781 -3.260309 +v 0.185097 2.992454 -0.391829 +v 0.185097 3.193781 -0.391829 +v 0.250002 2.992454 -3.260309 +v 0.279439 3.021890 -3.260309 +v 0.279439 3.164345 -3.260309 +v 0.250002 3.193781 -3.260309 +v 0.279439 3.021890 -0.391829 +v 0.250002 2.992454 -0.391829 +v 0.250002 3.193781 -0.391829 +v 0.279439 3.164345 -0.391829 +v 0.185097 3.676967 -3.079826 +v 0.185097 3.878294 -3.079826 +v 0.185097 3.676967 -0.391829 +v 0.185097 3.878294 -0.391829 +v 0.250002 3.676967 -3.079826 +v 0.279439 3.706403 -3.079826 +v 0.279439 3.848858 -3.079826 +v 0.250002 3.878294 -3.079826 +v 0.279439 3.706403 -0.391829 +v 0.250002 3.676967 -0.391829 +v 0.250002 3.878294 -0.391829 +v 0.279439 3.848858 -0.391829 +v 0.185097 4.361480 -2.726382 +v 0.185097 4.562807 -2.726382 +v 0.185097 4.361480 -0.391829 +v 0.185097 4.562807 -0.391829 +v 0.250002 4.361480 -2.726382 +v 0.279439 4.390916 -2.726382 +v 0.279439 4.533370 -2.726382 +v 0.250002 4.562807 -2.726382 +v 0.279439 4.390916 -0.391829 +v 0.250002 4.361480 -0.391829 +v 0.250002 4.562807 -0.391829 +v 0.279439 4.533370 -0.391829 +v 0.185097 5.045993 -2.044939 +v 0.185097 5.247320 -2.044939 +v 0.185097 5.045993 -0.391829 +v 0.185097 5.247320 -0.391829 +v 0.250002 5.045993 -2.044939 +v 0.279439 5.075429 -2.044939 +v 0.279439 5.217884 -2.044939 +v 0.250002 5.247320 -2.044939 +v 0.279439 5.075429 -0.391829 +v 0.250002 5.045993 -0.391829 +v 0.250002 5.247320 -0.391829 +v 0.279439 5.217884 -0.391829 +v 0.315590 0.554430 -1.179831 +v 0.315590 0.554430 -0.490474 +v 0.381347 0.554430 -1.179831 +v 0.381347 0.554430 -0.490474 +v 0.427845 0.600927 -1.179831 +v 0.427845 0.600927 -0.490474 +v 0.427845 0.666685 -1.179831 +v 0.427845 0.666685 -0.490474 +v 0.381347 0.713183 -1.179831 +v 0.381347 0.713183 -0.490474 +v 0.315590 0.713183 -1.179831 +v 0.315590 0.713183 -0.490474 +v 0.269092 0.666685 -1.179831 +v 0.269092 0.666685 -0.490474 +v 0.269092 0.600927 -1.179831 +v 0.269092 0.600927 -0.490474 +v 0.212011 0.554430 -1.179831 +v 0.212011 0.554430 -0.490474 +v 0.212011 0.713183 -0.490474 +v 0.212011 0.713183 -1.179831 +v 0.212011 0.666685 -1.179831 +v 0.212011 0.666685 -0.490474 +v 0.212011 0.600927 -1.179831 +v 0.212011 0.600927 -0.490474 +v 0.323809 0.574274 -3.311587 +v 0.373128 0.574274 -3.311587 +v 0.408001 0.609147 -3.311587 +v 0.408001 0.658465 -3.311587 +v 0.373128 0.693339 -3.311587 +v 0.323809 0.693339 -3.311587 +v 0.288936 0.658465 -3.311587 +v 0.288936 0.609147 -3.311587 +v 0.373127 0.574274 -0.452471 +v 0.408000 0.609147 -0.452471 +v 0.323808 0.574274 -0.452471 +v 0.408000 0.658465 -0.452471 +v 0.373127 0.693339 -0.452471 +v 0.323808 0.693339 -0.452471 +v 0.288935 0.658465 -0.452471 +v 0.288935 0.609147 -0.452471 +v 0.149610 5.165501 -0.125000 +v 0.149610 0.790051 -0.125000 +v 0.149610 4.436259 -0.125000 +v 0.149610 3.707017 -0.125000 +v 0.149610 2.977776 -0.125000 +v 0.149610 2.248534 -0.125000 +v 0.149610 1.519293 -0.125000 +v 0.299220 5.165501 -0.250000 +v 0.299220 0.790051 -0.250000 +v 0.299220 4.436259 -0.250000 +v 0.299220 3.707017 -0.250000 +v 0.299220 2.977776 -0.250000 +v 0.299220 2.248534 -0.250000 +v 0.299220 1.519293 -0.250000 +v 0.149610 5.900837 0.125000 +v 0.299220 5.900837 0.000000 +v 0.149610 1.519293 0.125000 +v 0.149610 0.790051 0.125000 +v 0.299220 0.790051 0.000000 +v 0.299220 1.519293 0.000000 +v 0.299220 2.248534 0.000000 +v 0.149610 2.248534 0.125000 +v 0.149610 2.977776 0.125000 +v 0.299220 2.977776 0.000000 +v 0.299220 3.707017 0.000000 +v 0.149610 3.707017 0.125000 +v 0.149610 4.436259 0.125000 +v 0.299220 4.436259 0.000000 +v 0.299220 5.165501 0.000000 +v 0.149610 5.165501 0.125000 +v -0.299220 0.487402 -3.251414 +v -0.299220 5.590070 -1.004025 +v -0.299220 5.128570 -1.909768 +v -0.299220 4.409768 -2.628571 +v -0.299220 3.503919 -3.090124 +v -0.299220 2.496066 -3.251015 +v -0.299220 5.679564 -0.438986 +v -0.299220 0.487402 -0.438985 +v -0.149610 5.900837 -0.125000 +v -0.149610 0.054715 -0.125000 +v -0.299220 0.054715 -3.440433 +v -0.299220 2.511072 -3.439998 +v -0.299220 3.563152 -3.272047 +v -0.299220 4.522236 -2.783369 +v -0.299220 5.283369 -2.022236 +v -0.299220 5.772047 -1.063152 +v -0.299220 5.900837 -0.250000 +v -0.299220 0.054715 -0.250000 +v -0.231315 0.487402 -3.251414 +v -0.231315 2.496066 -3.251015 +v -0.231315 3.503919 -3.090124 +v -0.231315 4.409768 -2.628571 +v -0.231315 5.128570 -1.909768 +v -0.231315 5.590070 -1.004025 +v -0.231315 5.679564 -0.438986 +v -0.231315 0.487402 -0.438985 +v -0.204275 1.917457 -1.651271 +v -0.204275 2.047506 -1.651271 +v -0.204275 1.917457 -1.142414 +v -0.204275 2.047506 -1.142414 +v -0.261126 1.933194 -1.635535 +v -0.245389 1.917457 -1.651271 +v -0.245389 2.047506 -1.651271 +v -0.261126 2.031770 -1.635535 +v -0.261126 1.933194 -1.158151 +v -0.245389 1.917457 -1.142414 +v -0.261126 2.031770 -1.158151 +v -0.245389 2.047506 -1.142414 +v -0.215124 3.126893 -0.898361 +v -0.215124 3.628286 -0.898361 +v -0.215124 3.126893 -0.736489 +v -0.215124 3.628286 -0.736489 +v -0.294289 3.126893 -0.898361 +v -0.247374 3.628286 -0.898361 +v -0.294289 3.126893 -0.736489 +v -0.247374 3.628286 -0.736489 +v -0.215124 3.447602 -0.898361 +v -0.215124 3.447602 -0.736489 +v -0.294289 3.447602 -0.736489 +v -0.294289 3.447602 -0.898361 +v -0.215124 3.126893 -1.339800 +v -0.215124 3.628286 -1.339800 +v -0.215124 3.126893 -1.177929 +v -0.215124 3.628286 -1.177929 +v -0.294289 3.126893 -1.339800 +v -0.247374 3.628286 -1.339800 +v -0.294289 3.126893 -1.177929 +v -0.247374 3.628286 -1.177929 +v -0.215124 3.447602 -1.339800 +v -0.215124 3.447602 -1.177929 +v -0.294289 3.447602 -1.177929 +v -0.294289 3.447602 -1.339800 +v -0.110842 1.775868 -3.124604 +v -0.110842 2.305447 -3.124604 +v -0.110842 1.775868 -1.892389 +v -0.110842 2.305447 -1.892389 +v -0.303721 1.835501 -3.064971 +v -0.303721 2.245814 -3.064971 +v -0.303721 1.835501 -1.952022 +v -0.303721 2.245814 -1.952022 +v -0.303721 2.305447 -1.892389 +v -0.303721 1.775868 -1.892389 +v -0.303721 1.775868 -3.124604 +v -0.303721 2.305447 -3.124604 +v -0.237602 2.245814 -1.952022 +v -0.237602 1.835501 -1.952022 +v -0.237602 1.835501 -3.064971 +v -0.237602 2.245814 -3.064971 +v -0.185097 0.938915 -3.260309 +v -0.185097 1.140242 -3.260309 +v -0.185097 0.938915 -0.391829 +v -0.185097 1.140242 -0.391829 +v -0.250002 0.938915 -3.260309 +v -0.279439 0.968351 -3.260309 +v -0.279439 1.110806 -3.260309 +v -0.250002 1.140242 -3.260309 +v -0.279439 0.968351 -0.391829 +v -0.250002 0.938915 -0.391829 +v -0.250002 1.140242 -0.391829 +v -0.279439 1.110806 -0.391829 +v -0.185097 1.623428 -3.260309 +v -0.185097 1.824755 -3.260309 +v -0.185097 1.623428 -0.391829 +v -0.185097 1.824755 -0.391829 +v -0.250002 1.623428 -3.260309 +v -0.279439 1.652864 -3.260309 +v -0.279439 1.795319 -3.260309 +v -0.250002 1.824755 -3.260309 +v -0.279439 1.652864 -0.391829 +v -0.250002 1.623428 -0.391829 +v -0.250002 1.824755 -0.391829 +v -0.279439 1.795319 -0.391829 +v -0.185097 2.307941 -3.260309 +v -0.185097 2.509268 -3.260309 +v -0.185097 2.307941 -0.391829 +v -0.185097 2.509268 -0.391829 +v -0.250002 2.307941 -3.260309 +v -0.279439 2.337377 -3.260309 +v -0.279439 2.479832 -3.260309 +v -0.250002 2.509268 -3.260309 +v -0.279439 2.337377 -0.391829 +v -0.250002 2.307941 -0.391829 +v -0.250002 2.509268 -0.391829 +v -0.279439 2.479832 -0.391829 +v -0.185097 2.992454 -3.260309 +v -0.185097 3.193781 -3.260309 +v -0.185097 2.992454 -0.391829 +v -0.185097 3.193781 -0.391829 +v -0.250002 2.992454 -3.260309 +v -0.279439 3.021890 -3.260309 +v -0.279439 3.164345 -3.260309 +v -0.250002 3.193781 -3.260309 +v -0.279439 3.021890 -0.391829 +v -0.250002 2.992454 -0.391829 +v -0.250002 3.193781 -0.391829 +v -0.279439 3.164345 -0.391829 +v -0.185097 3.676967 -3.079826 +v -0.185097 3.878294 -3.079826 +v -0.185097 3.676967 -0.391829 +v -0.185097 3.878294 -0.391829 +v -0.250002 3.676967 -3.079826 +v -0.279439 3.706403 -3.079826 +v -0.279439 3.848858 -3.079826 +v -0.250002 3.878294 -3.079826 +v -0.279439 3.706403 -0.391829 +v -0.250002 3.676967 -0.391829 +v -0.250002 3.878294 -0.391829 +v -0.279439 3.848858 -0.391829 +v -0.185097 4.361480 -2.726382 +v -0.185097 4.562807 -2.726382 +v -0.185097 4.361480 -0.391829 +v -0.185097 4.562807 -0.391829 +v -0.250002 4.361480 -2.726382 +v -0.279439 4.390916 -2.726382 +v -0.279439 4.533370 -2.726382 +v -0.250002 4.562807 -2.726382 +v -0.279439 4.390916 -0.391829 +v -0.250002 4.361480 -0.391829 +v -0.250002 4.562807 -0.391829 +v -0.279439 4.533370 -0.391829 +v -0.185097 5.045993 -2.044939 +v -0.185097 5.247320 -2.044939 +v -0.185097 5.045993 -0.391829 +v -0.185097 5.247320 -0.391829 +v -0.250002 5.045993 -2.044939 +v -0.279439 5.075429 -2.044939 +v -0.279439 5.217884 -2.044939 +v -0.250002 5.247320 -2.044939 +v -0.279439 5.075429 -0.391829 +v -0.250002 5.045993 -0.391829 +v -0.250002 5.247320 -0.391829 +v -0.279439 5.217884 -0.391829 +v -0.315590 0.554430 -1.179831 +v -0.315590 0.554430 -0.490474 +v -0.381347 0.554430 -1.179831 +v -0.381347 0.554430 -0.490474 +v -0.427845 0.600927 -1.179831 +v -0.427845 0.600927 -0.490474 +v -0.427845 0.666685 -1.179831 +v -0.427845 0.666685 -0.490474 +v -0.381347 0.713183 -1.179831 +v -0.381347 0.713183 -0.490474 +v -0.315590 0.713183 -1.179831 +v -0.315590 0.713183 -0.490474 +v -0.269092 0.666685 -1.179831 +v -0.269092 0.666685 -0.490474 +v -0.269092 0.600927 -1.179831 +v -0.269092 0.600927 -0.490474 +v -0.212011 0.554430 -1.179831 +v -0.212011 0.554430 -0.490474 +v -0.212011 0.713183 -0.490474 +v -0.212011 0.713183 -1.179831 +v -0.212011 0.666685 -1.179831 +v -0.212011 0.666685 -0.490474 +v -0.212011 0.600927 -1.179831 +v -0.212011 0.600927 -0.490474 +v -0.323809 0.574274 -3.311587 +v -0.373128 0.574274 -3.311587 +v -0.408001 0.609147 -3.311587 +v -0.408001 0.658465 -3.311587 +v -0.373128 0.693339 -3.311587 +v -0.323809 0.693339 -3.311587 +v -0.288936 0.658465 -3.311587 +v -0.288936 0.609147 -3.311587 +v -0.373127 0.574274 -0.452471 +v -0.408000 0.609147 -0.452471 +v -0.323808 0.574274 -0.452471 +v -0.408000 0.658465 -0.452471 +v -0.373127 0.693339 -0.452471 +v -0.323808 0.693339 -0.452471 +v -0.288935 0.658465 -0.452471 +v -0.288935 0.609147 -0.452471 +v -0.149610 5.165501 -0.125000 +v -0.149610 0.790051 -0.125000 +v -0.149610 4.436259 -0.125000 +v -0.149610 3.707017 -0.125000 +v -0.149610 2.977776 -0.125000 +v -0.149610 2.248534 -0.125000 +v -0.149610 1.519293 -0.125000 +v -0.299220 5.165501 -0.250000 +v -0.299220 0.790051 -0.250000 +v -0.299220 4.436259 -0.250000 +v -0.299220 3.707017 -0.250000 +v -0.299220 2.977776 -0.250000 +v -0.299220 2.248534 -0.250000 +v -0.299220 1.519293 -0.250000 +v -0.149610 5.900837 0.125000 +v -0.299220 5.900837 0.000000 +v -0.149610 1.519293 0.125000 +v -0.149610 0.790051 0.125000 +v -0.299220 0.790051 0.000000 +v -0.299220 1.519293 0.000000 +v -0.299220 2.248534 0.000000 +v -0.149610 2.248534 0.125000 +v -0.149610 2.977776 0.125000 +v -0.299220 2.977776 0.000000 +v -0.299220 3.707017 0.000000 +v -0.149610 3.707017 0.125000 +v -0.149610 4.436259 0.125000 +v -0.299220 4.436259 0.000000 +v -0.299220 5.165501 0.000000 +v -0.149610 5.165501 0.125000 +v 0.000000 0.054715 -3.440433 +v 0.000000 2.511072 -3.439998 +v 0.000000 3.563152 -3.272047 +v 0.000000 4.522236 -2.783369 +v 0.000000 5.283369 -2.022236 +v 0.000000 5.772047 -1.063152 +v 0.000000 5.900837 -0.250000 +v 0.000000 0.054715 -0.250000 +v 0.000000 5.900837 -0.125000 +v 0.000000 0.054715 -0.125000 +v 0.000000 0.790051 -0.125000 +v 0.000000 1.519293 -0.125000 +v 0.000000 2.248534 -0.125000 +v 0.000000 2.977776 -0.125000 +v 0.000000 3.707017 -0.125000 +v 0.000000 4.436259 -0.125000 +v 0.000000 5.165501 -0.125000 +v 0.000000 5.900837 0.125000 +v 0.000000 0.790051 0.125000 +v 0.000000 1.519293 0.125000 +v 0.000000 2.248534 0.125000 +v 0.000000 2.977776 0.125000 +v 0.000000 3.707017 0.125000 +v 0.000000 4.436259 0.125000 +v 0.000000 5.165501 0.125000 +v 0.236978 1.966246 -2.101461 +v 0.236978 1.868289 -2.101461 +v 0.271611 1.966246 -2.115807 +v 0.271611 1.868289 -2.115807 +v 0.285957 1.966246 -2.150440 +v 0.285957 1.868289 -2.150440 +v 0.271611 1.966246 -2.185074 +v 0.271611 1.868289 -2.185074 +v 0.236978 1.966246 -2.199419 +v 0.236978 1.868289 -2.199419 +v 0.261013 1.935379 -2.738888 +v 0.243802 1.942508 -2.738888 +v 0.243802 1.942508 -2.168687 +v 0.261013 1.935379 -2.168687 +v 0.268143 1.918167 -2.168687 +v 0.261013 1.900955 -2.168687 +v 0.243802 1.893826 -2.168687 +v 0.226590 1.900955 -2.168687 +v 0.219460 1.918167 -2.168687 +v 0.226590 1.935379 -2.168687 +v 0.268143 1.918167 -2.738888 +v 0.261013 1.900955 -2.738888 +v 0.243802 1.893826 -2.738888 +v 0.226590 1.900955 -2.738888 +v 0.219460 1.918167 -2.738888 +v 0.226590 1.935379 -2.738888 +v 0.243802 1.952222 -2.738888 +v 0.267882 1.942248 -2.738888 +v 0.277856 1.918167 -2.738888 +v 0.243802 1.952222 -2.956852 +v 0.267882 1.942248 -2.956852 +v 0.267882 1.894087 -2.738888 +v 0.277856 1.918167 -2.956852 +v 0.243802 1.884113 -2.738888 +v 0.267882 1.894087 -2.956852 +v 0.219721 1.894087 -2.738888 +v 0.243802 1.884113 -2.956852 +v 0.209747 1.918167 -2.738888 +v 0.219721 1.894087 -2.956852 +v 0.219721 1.942248 -2.738888 +v 0.209747 1.918167 -2.956852 +v 0.219721 1.942248 -2.956852 +v 0.234904 1.996067 -2.602894 +v 0.234904 2.177792 -2.602893 +v 0.234904 1.996067 -2.957389 +v 0.234904 2.177792 -2.957389 +v 0.248364 1.996858 -2.604437 +v 0.248364 2.177001 -2.604437 +v 0.248364 1.996858 -2.955846 +v 0.248364 2.177001 -2.955846 +v 0.239626 2.025193 -2.631219 +v 0.239626 2.077102 -2.631219 +v 0.239626 2.025193 -2.683128 +v 0.239626 2.077102 -2.683128 +v 0.264276 2.026531 -2.632558 +v 0.264276 2.075763 -2.632558 +v 0.264276 2.026531 -2.681790 +v 0.264276 2.075763 -2.681790 +v 0.239626 2.025193 -2.713007 +v 0.239626 2.077102 -2.713007 +v 0.239626 2.025193 -2.764916 +v 0.239626 2.077102 -2.764916 +v 0.264276 2.026531 -2.714346 +v 0.264276 2.075763 -2.714346 +v 0.264276 2.026531 -2.763577 +v 0.264276 2.075763 -2.763577 +v 0.239626 2.025193 -2.794795 +v 0.239626 2.077102 -2.794795 +v 0.239626 2.025193 -2.846704 +v 0.239626 2.077102 -2.846704 +v 0.264276 2.026531 -2.796134 +v 0.264276 2.075763 -2.796134 +v 0.264276 2.026531 -2.845365 +v 0.264276 2.075763 -2.845365 +v 0.239626 2.025193 -2.876583 +v 0.239626 2.077102 -2.876583 +v 0.239626 2.025193 -2.928492 +v 0.239626 2.077102 -2.928492 +v 0.264276 2.026531 -2.877922 +v 0.264276 2.075763 -2.877922 +v 0.264276 2.026531 -2.927153 +v 0.264276 2.075763 -2.927153 +v 0.241062 2.141376 -2.887181 +v 0.218099 2.128895 -2.887181 +v 0.217427 2.102767 -2.887181 +v 0.239718 2.089121 -2.887181 +v 0.262680 2.101603 -2.887181 +v 0.264313 2.105776 -2.887181 +v 0.266144 2.123641 -2.887181 +v 0.263352 2.127731 -2.887181 +v 0.266144 2.123641 -2.918690 +v 0.263352 2.127731 -2.918690 +v 0.278264 2.110234 -2.887181 +v 0.278264 2.110234 -2.918690 +v 0.277458 2.120133 -2.918690 +v 0.277458 2.120133 -2.887181 +v 0.264313 2.105776 -2.918690 +v 0.218099 2.128895 -2.918690 +v 0.241062 2.141376 -2.918690 +v 0.262680 2.101603 -2.918690 +v 0.239718 2.089121 -2.918690 +v 0.217427 2.102767 -2.918690 +v 0.257846 2.139290 -2.641807 +v 0.231994 2.143135 -2.641807 +v 0.215738 2.122669 -2.641807 +v 0.225334 2.098358 -2.641807 +v 0.251185 2.094513 -2.641807 +v 0.255000 2.096865 -2.641807 +v 0.267210 2.110033 -2.641807 +v 0.267441 2.114980 -2.641807 +v 0.267210 2.110033 -2.673316 +v 0.267441 2.114980 -2.673316 +v 0.268826 2.092032 -2.641807 +v 0.268826 2.092032 -2.673316 +v 0.274138 2.100425 -2.673316 +v 0.274138 2.100425 -2.641807 +v 0.255000 2.096865 -2.673316 +v 0.231994 2.143135 -2.673316 +v 0.257846 2.139290 -2.673316 +v 0.251185 2.094513 -2.673316 +v 0.225334 2.098358 -2.673316 +v 0.215738 2.122669 -2.673316 +v 0.222125 2.128488 -2.723598 +v 0.215962 2.103088 -2.723598 +v 0.234877 2.085051 -2.723598 +v 0.259955 2.092414 -2.723598 +v 0.266117 2.117813 -2.723598 +v 0.264120 2.121824 -2.723598 +v 0.252107 2.135173 -2.723598 +v 0.247202 2.135850 -2.723598 +v 0.252107 2.135173 -2.755107 +v 0.247202 2.135850 -2.755107 +v 0.270180 2.135158 -2.723598 +v 0.270180 2.135158 -2.755107 +v 0.262302 2.141205 -2.755107 +v 0.262302 2.141205 -2.723598 +v 0.264120 2.121824 -2.755107 +v 0.215962 2.103088 -2.755107 +v 0.222125 2.128488 -2.755107 +v 0.266117 2.117813 -2.755107 +v 0.259955 2.092414 -2.755107 +v 0.234877 2.085051 -2.755107 +v 0.231185 2.137330 -2.805390 +v 0.214479 2.117230 -2.805390 +v 0.223533 2.092711 -2.805390 +v 0.249294 2.088294 -2.805390 +v 0.265999 2.108394 -2.805390 +v 0.265969 2.112875 -2.805390 +v 0.261052 2.130147 -2.805390 +v 0.256945 2.132912 -2.805390 +v 0.261052 2.130147 -2.836899 +v 0.256945 2.132912 -2.836899 +v 0.277277 2.122184 -2.805390 +v 0.277277 2.122184 -2.836899 +v 0.272861 2.131080 -2.836899 +v 0.272861 2.131080 -2.805390 +v 0.265969 2.112875 -2.836899 +v 0.214479 2.117230 -2.836899 +v 0.231185 2.137330 -2.836899 +v 0.265999 2.108394 -2.836899 +v 0.249294 2.088294 -2.836899 +v 0.223533 2.092711 -2.836899 +vt 0.071084 0.914639 +vt 0.063745 0.914089 +vt 0.071052 0.914089 +vt 0.071052 0.899835 +vt 0.063745 0.899835 +vt 0.071084 0.899286 +vt 0.071599 0.899773 +vt 0.071599 0.914152 +vt 0.063198 0.914152 +vt 0.980883 0.027178 +vt 0.979882 0.025127 +vt 0.980883 0.025072 +vt 0.979882 0.027124 +vt 0.977885 0.025127 +vt 0.977885 0.027124 +vt 0.976884 0.025072 +vt 0.977831 0.024125 +vt 0.979936 0.024125 +vt 0.979936 0.028125 +vt 0.010095 0.976613 +vt 0.012147 0.975612 +vt 0.012201 0.976613 +vt 0.010150 0.975612 +vt 0.012147 0.973615 +vt 0.010150 0.973615 +vt 0.012201 0.972613 +vt 0.013148 0.973560 +vt 0.013148 0.975666 +vt 0.009148 0.975666 +vt 0.977831 0.010708 +vt 0.979882 0.009707 +vt 0.979936 0.010708 +vt 0.977885 0.009707 +vt 0.979882 0.007710 +vt 0.977885 0.007710 +vt 0.979936 0.006709 +vt 0.980883 0.007656 +vt 0.980883 0.009761 +vt 0.976884 0.009761 +vt 0.969725 0.889901 +vt 0.971776 0.888900 +vt 0.971831 0.889901 +vt 0.969779 0.888900 +vt 0.971776 0.886903 +vt 0.969779 0.886903 +vt 0.971831 0.885901 +vt 0.972778 0.886849 +vt 0.972778 0.888954 +vt 0.968778 0.888954 +vt 0.063713 0.914639 +vt 0.063713 0.899286 +vt 0.063198 0.899773 +vt 0.976884 0.027178 +vt 0.977831 0.028125 +vt 0.010095 0.972613 +vt 0.009148 0.973560 +vt 0.977831 0.006709 +vt 0.976884 0.007656 +vt 0.969725 0.885901 +vt 0.968778 0.886849 +vt 0.838616 0.394242 +vt 0.850753 0.294606 +vt 0.850753 0.394242 +vt 0.838616 0.437457 +vt 0.850753 0.437457 +vt 0.838616 0.481118 +vt 0.850753 0.481118 +vt 0.838616 0.524780 +vt 0.850753 0.524779 +vt 0.838616 0.568441 +vt 0.850753 0.568441 +vt 0.816684 0.141189 +vt 0.804547 0.011779 +vt 0.816684 0.011779 +vt 0.637409 0.742651 +vt 0.751488 0.745406 +vt 0.637409 0.745406 +vt 0.850753 0.601835 +vt 0.844684 0.606906 +vt 0.838616 0.601835 +vt 0.623992 0.501911 +vt 0.623992 0.531738 +vt 0.616326 0.514187 +vt 0.502248 0.514187 +vt 0.494599 0.432102 +vt 0.502264 0.432711 +vt 0.508790 0.391831 +vt 0.501411 0.389428 +vt 0.527512 0.355087 +vt 0.521233 0.350525 +vt 0.556668 0.325931 +vt 0.552106 0.319652 +vt 0.593407 0.307212 +vt 0.591009 0.299830 +vt 0.616327 0.303582 +vt 0.691829 0.316956 +vt 0.728568 0.298236 +vt 0.751488 0.294606 +vt 0.861164 0.006709 +vt 0.858410 0.029913 +vt 0.858410 0.006709 +vt 0.861164 0.071146 +vt 0.858410 0.112380 +vt 0.858410 0.071146 +vt 0.861164 0.153618 +vt 0.858410 0.195017 +vt 0.858410 0.153618 +vt 0.963467 0.189030 +vt 0.960285 0.006709 +vt 0.963467 0.006723 +vt 0.861164 0.029913 +vt 0.861164 0.112380 +vt 0.861164 0.195017 +vt 0.858410 0.276493 +vt 0.070405 0.847979 +vt 0.065130 0.846311 +vt 0.070405 0.846311 +vt 0.064865 0.846046 +vt 0.063198 0.825406 +vt 0.064865 0.825406 +vt 0.069767 0.845408 +vt 0.065768 0.826044 +vt 0.069767 0.826044 +vt 0.070405 0.825142 +vt 0.065130 0.823474 +vt 0.070405 0.823474 +vt 0.065130 0.825142 +vt 0.070669 0.825406 +vt 0.070669 0.846046 +vt 0.065768 0.845408 +vt 0.072337 0.846046 +vt 0.072337 0.825406 +vt 0.832797 0.992869 +vt 0.820045 0.989167 +vt 0.832917 0.989519 +vt 0.819847 0.979794 +vt 0.812637 0.982596 +vt 0.812375 0.981262 +vt 0.820215 0.982975 +vt 0.819631 0.992298 +vt 0.812630 0.989456 +vt 0.836258 0.989519 +vt 0.832917 0.982686 +vt 0.836258 0.982686 +vt 0.811270 0.982595 +vt 0.832839 0.979479 +vt 0.157833 0.991605 +vt 0.145081 0.987902 +vt 0.157953 0.988254 +vt 0.144883 0.978529 +vt 0.137673 0.981331 +vt 0.137411 0.979997 +vt 0.145251 0.981710 +vt 0.144667 0.991033 +vt 0.137666 0.988191 +vt 0.161295 0.988254 +vt 0.157953 0.981421 +vt 0.161295 0.981421 +vt 0.136306 0.981330 +vt 0.157876 0.978214 +vt 0.115059 0.780752 +vt 0.093578 0.772929 +vt 0.115059 0.772929 +vt 0.767587 0.714665 +vt 0.784230 0.717347 +vt 0.767587 0.717347 +vt 0.115059 0.838557 +vt 0.093578 0.830734 +vt 0.115059 0.830734 +vt 0.122882 0.830734 +vt 0.122882 0.780752 +vt 0.085754 0.780752 +vt 0.093578 0.780752 +vt 0.112640 0.783171 +vt 0.095997 0.783171 +vt 0.112640 0.828315 +vt 0.095997 0.828315 +vt 0.784230 0.714665 +vt 0.767587 0.669521 +vt 0.784230 0.669521 +vt 0.786912 0.669521 +vt 0.786912 0.714665 +vt 0.764905 0.714665 +vt 0.764905 0.669521 +vt 0.767587 0.666839 +vt 0.784230 0.666839 +vt 0.493197 0.720191 +vt 0.495769 0.833877 +vt 0.493197 0.833877 +vt 0.485567 0.720186 +vt 0.491213 0.833871 +vt 0.485567 0.833871 +vt 0.483582 0.833865 +vt 0.483582 0.720180 +vt 0.481010 0.720180 +vt 0.481010 0.833865 +vt 0.916263 0.006720 +vt 0.918835 0.120406 +vt 0.916263 0.120406 +vt 0.908633 0.006714 +vt 0.914279 0.120400 +vt 0.908633 0.120400 +vt 0.906649 0.120394 +vt 0.906649 0.006709 +vt 0.904076 0.006709 +vt 0.904076 0.120394 +vt 0.916263 0.133834 +vt 0.918835 0.247520 +vt 0.916263 0.247520 +vt 0.908633 0.133829 +vt 0.914279 0.247514 +vt 0.908633 0.247514 +vt 0.906649 0.247508 +vt 0.906649 0.133823 +vt 0.904076 0.133823 +vt 0.904076 0.247508 +vt 0.926154 0.760682 +vt 0.928726 0.874367 +vt 0.926154 0.874367 +vt 0.918524 0.760676 +vt 0.924170 0.874361 +vt 0.918524 0.874361 +vt 0.916540 0.874356 +vt 0.916539 0.760670 +vt 0.913967 0.760670 +vt 0.913967 0.874356 +vt 0.491671 0.859568 +vt 0.384226 0.862163 +vt 0.384226 0.859568 +vt 0.491675 0.851999 +vt 0.384229 0.857693 +vt 0.384229 0.851999 +vt 0.384233 0.850123 +vt 0.491678 0.850123 +vt 0.491678 0.847529 +vt 0.384233 0.847529 +vt 0.478919 0.887368 +vt 0.384226 0.890001 +vt 0.384226 0.887368 +vt 0.478919 0.879901 +vt 0.384226 0.885680 +vt 0.384226 0.879901 +vt 0.384226 0.878213 +vt 0.478919 0.878213 +vt 0.478919 0.875580 +vt 0.384226 0.875580 +vt 0.874581 0.266461 +vt 0.941635 0.263828 +vt 0.941635 0.266461 +vt 0.874581 0.273928 +vt 0.941635 0.268150 +vt 0.941635 0.273928 +vt 0.941635 0.275616 +vt 0.874581 0.275616 +vt 0.874581 0.278249 +vt 0.941635 0.278249 +vt 0.751964 0.269991 +vt 0.779926 0.272658 +vt 0.751964 0.272658 +vt 0.751964 0.267324 +vt 0.779926 0.269991 +vt 0.751964 0.264657 +vt 0.779926 0.267324 +vt 0.751964 0.261989 +vt 0.779926 0.264657 +vt 0.751964 0.259322 +vt 0.779926 0.261989 +vt 0.011262 0.959196 +vt 0.008595 0.956881 +vt 0.011262 0.956881 +vt 0.977533 0.762259 +vt 0.975647 0.766813 +vt 0.971094 0.764927 +vt 0.971094 0.762259 +vt 0.968778 0.760373 +vt 0.972980 0.760373 +vt 0.006709 0.959196 +vt 0.006709 0.954995 +vt 0.008595 0.950441 +vt 0.239689 0.888219 +vt 0.241702 0.772932 +vt 0.241702 0.888219 +vt 0.758193 0.881133 +vt 0.754778 0.882547 +vt 0.753363 0.879132 +vt 0.968778 0.766813 +vt 0.972980 0.766813 +vt 0.751964 0.255121 +vt 0.779926 0.259322 +vt 0.779926 0.276860 +vt 0.013148 0.959196 +vt 0.013148 0.954995 +vt 0.968778 0.764927 +vt 0.227615 0.888217 +vt 0.229628 0.772930 +vt 0.229628 0.888217 +vt 0.231640 0.888217 +vt 0.233652 0.772930 +vt 0.233652 0.888218 +vt 0.235665 0.888218 +vt 0.237677 0.772931 +vt 0.237677 0.888219 +vt 0.225603 0.888216 +vt 0.227615 0.772929 +vt 0.231640 0.772930 +vt 0.239689 0.772932 +vt 0.235665 0.772931 +vt 0.757401 0.968504 +vt 0.787227 0.976412 +vt 0.757401 0.976412 +vt 0.978919 0.583929 +vt 0.968778 0.577860 +vt 0.978919 0.577860 +vt 0.838616 0.611976 +vt 0.899184 0.978953 +vt 0.907092 0.949373 +vt 0.907092 0.978953 +vt 0.034866 0.980021 +vt 0.042774 0.950441 +vt 0.042774 0.980021 +vt 0.973848 0.546238 +vt 0.978919 0.552306 +vt 0.968778 0.552306 +vt 0.960285 0.232027 +vt 0.968192 0.202447 +vt 0.968192 0.232027 +vt 0.913161 0.949373 +vt 0.913161 0.978953 +vt 0.300254 0.951758 +vt 0.329834 0.941618 +vt 0.329834 0.951758 +vt 0.048842 0.950441 +vt 0.048842 0.980021 +vt 0.974261 0.202447 +vt 0.974261 0.232027 +vt 0.737360 0.915678 +vt 0.743429 0.905537 +vt 0.743429 0.915678 +vt 0.973848 0.589997 +vt 0.968778 0.583929 +vt 0.510060 0.902173 +vt 0.539887 0.910081 +vt 0.510060 0.910081 +vt 0.457011 0.941511 +vt 0.427431 0.933603 +vt 0.457011 0.933603 +vt 0.329834 0.933710 +vt 0.300254 0.941618 +vt 0.300254 0.933710 +vt 0.286837 0.941618 +vt 0.257257 0.933710 +vt 0.286837 0.933710 +vt 0.427431 0.927535 +vt 0.457011 0.927535 +vt 0.300254 0.927641 +vt 0.329834 0.927641 +vt 0.257257 0.927641 +vt 0.286837 0.927641 +vt 0.349320 0.942293 +vt 0.343251 0.937222 +vt 0.349320 0.932152 +vt 0.355388 0.932152 +vt 0.355388 0.942293 +vt 0.257257 0.951758 +vt 0.286837 0.951758 +vt 0.731292 0.910608 +vt 0.737360 0.905537 +vt 0.978919 0.496410 +vt 0.973848 0.490341 +vt 0.983989 0.490341 +vt 0.427431 0.951652 +vt 0.457011 0.951652 +vt 0.769975 0.748970 +vt 0.775045 0.755038 +vt 0.764905 0.755038 +vt 0.349319 0.913665 +vt 0.355388 0.903524 +vt 0.355388 0.913665 +vt 0.343251 0.908594 +vt 0.349319 0.903524 +vt 0.510060 0.920222 +vt 0.539887 0.920222 +vt 0.510060 0.896105 +vt 0.539887 0.902173 +vt 0.978919 0.502478 +vt 0.968778 0.496410 +vt 0.973848 0.540169 +vt 0.983989 0.546238 +vt 0.769975 0.742901 +vt 0.780115 0.748970 +vt 0.757401 0.962435 +vt 0.787227 0.968504 +vt 0.850753 0.606906 +vt 0.844684 0.617046 +vt 0.810615 0.006709 +vt 0.862890 0.394242 +vt 0.862890 0.437457 +vt 0.862890 0.481118 +vt 0.862890 0.524780 +vt 0.862890 0.568441 +vt 0.828821 0.011779 +vt 0.897588 0.619922 +vt 0.900342 0.734001 +vt 0.897588 0.734001 +vt 0.856821 0.606906 +vt 0.066114 0.706928 +vt 0.036535 0.706928 +vt 0.015684 0.699263 +vt 0.226289 0.585184 +vt 0.144205 0.577535 +vt 0.243840 0.577517 +vt 0.103933 0.591727 +vt 0.144813 0.585201 +vt 0.067190 0.610448 +vt 0.101530 0.584348 +vt 0.031754 0.635043 +vt 0.062628 0.604169 +vt 0.019314 0.676344 +vt 0.038033 0.639605 +vt 0.011933 0.673945 +vt 0.243840 0.706929 +vt 0.226289 0.699263 +vt 0.643952 0.640985 +vt 0.637425 0.600105 +vt 0.751488 0.518629 +vt 0.844992 0.029914 +vt 0.842238 0.006709 +vt 0.844992 0.006709 +vt 0.844992 0.112379 +vt 0.842238 0.071146 +vt 0.844992 0.071146 +vt 0.844992 0.195014 +vt 0.842238 0.153615 +vt 0.844992 0.153615 +vt 0.971960 0.476912 +vt 0.968778 0.294618 +vt 0.971960 0.294606 +vt 0.842238 0.029914 +vt 0.842238 0.112379 +vt 0.844992 0.276493 +vt 0.842238 0.195014 +vt 0.120950 0.874811 +vt 0.115675 0.876479 +vt 0.115675 0.874811 +vt 0.122882 0.853906 +vt 0.121215 0.874547 +vt 0.121215 0.853906 +vt 0.120312 0.854545 +vt 0.116313 0.873908 +vt 0.116313 0.854545 +vt 0.120950 0.851974 +vt 0.115675 0.853642 +vt 0.115675 0.851974 +vt 0.120950 0.853642 +vt 0.115411 0.853906 +vt 0.115411 0.874547 +vt 0.120312 0.873908 +vt 0.113743 0.874547 +vt 0.113743 0.853906 +vt 0.227626 0.971087 +vt 0.240379 0.967384 +vt 0.240499 0.970735 +vt 0.227428 0.980459 +vt 0.220218 0.977658 +vt 0.227797 0.977279 +vt 0.220212 0.970798 +vt 0.227212 0.967956 +vt 0.240499 0.977568 +vt 0.243840 0.970735 +vt 0.243840 0.977568 +vt 0.218851 0.977659 +vt 0.240421 0.980775 +vt 0.183493 0.981917 +vt 0.196246 0.978214 +vt 0.196366 0.981565 +vt 0.183295 0.991289 +vt 0.176085 0.988488 +vt 0.183663 0.988109 +vt 0.176079 0.981628 +vt 0.183079 0.978786 +vt 0.196366 0.988398 +vt 0.199707 0.981565 +vt 0.199707 0.988398 +vt 0.174718 0.988489 +vt 0.196288 0.991605 +vt 0.006709 0.780752 +vt 0.014532 0.802233 +vt 0.006709 0.802233 +vt 0.572923 0.871988 +vt 0.556279 0.874670 +vt 0.556279 0.871988 +vt 0.064513 0.780752 +vt 0.072337 0.802233 +vt 0.064513 0.802233 +vt 0.064513 0.810057 +vt 0.014532 0.810057 +vt 0.014532 0.772929 +vt 0.014532 0.780752 +vt 0.016951 0.799814 +vt 0.016951 0.783171 +vt 0.062095 0.783171 +vt 0.062095 0.799814 +vt 0.556279 0.919814 +vt 0.572923 0.874670 +vt 0.572923 0.919814 +vt 0.575605 0.919814 +vt 0.575605 0.874670 +vt 0.553598 0.874670 +vt 0.553598 0.919814 +vt 0.556279 0.922495 +vt 0.572923 0.922495 +vt 0.617258 0.281189 +vt 0.503572 0.278617 +vt 0.617258 0.278617 +vt 0.617252 0.276633 +vt 0.503567 0.270987 +vt 0.617252 0.270987 +vt 0.617247 0.269002 +vt 0.503562 0.269002 +vt 0.503562 0.266430 +vt 0.617247 0.266430 +vt 0.589022 0.935186 +vt 0.591594 0.821501 +vt 0.591594 0.935186 +vt 0.593578 0.935181 +vt 0.599224 0.821496 +vt 0.599224 0.935181 +vt 0.601209 0.935176 +vt 0.601209 0.821490 +vt 0.603781 0.821490 +vt 0.603781 0.935176 +vt 0.759070 0.836249 +vt 0.645385 0.833677 +vt 0.759070 0.833677 +vt 0.759065 0.831693 +vt 0.645379 0.826047 +vt 0.759065 0.826047 +vt 0.759060 0.824063 +vt 0.645374 0.824063 +vt 0.645374 0.821490 +vt 0.759060 0.821490 +vt 0.617198 0.935186 +vt 0.619771 0.821501 +vt 0.619770 0.935186 +vt 0.621755 0.935181 +vt 0.627401 0.821496 +vt 0.627401 0.935181 +vt 0.629385 0.935176 +vt 0.629385 0.821490 +vt 0.631957 0.821490 +vt 0.631957 0.935176 +vt 0.752826 0.864300 +vt 0.645381 0.861706 +vt 0.752826 0.861706 +vt 0.752823 0.859831 +vt 0.645378 0.854136 +vt 0.752823 0.854136 +vt 0.752819 0.852261 +vt 0.645374 0.852261 +vt 0.645374 0.849667 +vt 0.752819 0.849667 +vt 0.351951 0.890107 +vt 0.257257 0.887474 +vt 0.351951 0.887474 +vt 0.351951 0.885786 +vt 0.257257 0.880008 +vt 0.351951 0.880007 +vt 0.351951 0.878319 +vt 0.257257 0.878319 +vt 0.257257 0.875686 +vt 0.351951 0.875686 +vt 0.508551 0.935913 +vt 0.575605 0.938545 +vt 0.508551 0.938545 +vt 0.508551 0.940234 +vt 0.575605 0.946012 +vt 0.508551 0.946012 +vt 0.508551 0.947701 +vt 0.575605 0.947701 +vt 0.575605 0.950333 +vt 0.508551 0.950333 +vt 0.384226 0.982545 +vt 0.412188 0.979878 +vt 0.412188 0.982545 +vt 0.384226 0.979878 +vt 0.412188 0.977210 +vt 0.384226 0.977210 +vt 0.412188 0.974543 +vt 0.384226 0.974543 +vt 0.412188 0.971876 +vt 0.384226 0.971876 +vt 0.412188 0.969209 +vt 0.975218 0.742403 +vt 0.977533 0.745070 +vt 0.975218 0.745070 +vt 0.733178 0.956412 +vt 0.735845 0.956412 +vt 0.733178 0.962851 +vt 0.735845 0.962851 +vt 0.737731 0.965167 +vt 0.735845 0.965167 +vt 0.977533 0.740517 +vt 0.977533 0.742403 +vt 0.968778 0.742403 +vt 0.973332 0.740517 +vt 0.804547 0.269897 +vt 0.806559 0.154609 +vt 0.806559 0.269897 +vt 0.368783 0.880516 +vt 0.365368 0.879101 +vt 0.366783 0.875686 +vt 0.731292 0.965167 +vt 0.731292 0.960966 +vt 0.384226 0.969208 +vt 0.412188 0.965007 +vt 0.384226 0.986746 +vt 0.977533 0.746956 +vt 0.973332 0.746956 +vt 0.733178 0.965167 +vt 0.816621 0.154607 +vt 0.818633 0.269894 +vt 0.816621 0.269895 +vt 0.812596 0.154608 +vt 0.814609 0.269895 +vt 0.812596 0.269895 +vt 0.808571 0.154609 +vt 0.810584 0.269896 +vt 0.808571 0.269896 +vt 0.818633 0.154607 +vt 0.820646 0.269894 +vt 0.814609 0.154608 +vt 0.810584 0.154608 +vt 0.787228 0.948459 +vt 0.757401 0.956367 +vt 0.757401 0.948459 +vt 0.978919 0.571792 +vt 0.862890 0.611976 +vt 0.862890 0.601835 +vt 0.919230 0.949373 +vt 0.927137 0.978953 +vt 0.919230 0.978953 +vt 0.054911 0.950441 +vt 0.062819 0.980021 +vt 0.054911 0.980021 +vt 0.978919 0.528032 +vt 0.973848 0.534101 +vt 0.968778 0.528032 +vt 0.980330 0.202447 +vt 0.988237 0.232027 +vt 0.980330 0.232027 +vt 0.329834 0.913665 +vt 0.300254 0.903524 +vt 0.329834 0.903524 +vt 0.749497 0.915678 +vt 0.973848 0.565723 +vt 0.983989 0.565723 +vt 0.539887 0.882128 +vt 0.510060 0.890036 +vt 0.510060 0.882128 +vt 0.427431 0.921466 +vt 0.457011 0.913558 +vt 0.457011 0.921466 +vt 0.329834 0.921573 +vt 0.300254 0.913665 +vt 0.257257 0.921573 +vt 0.286837 0.913665 +vt 0.286837 0.921573 +vt 0.361456 0.942293 +vt 0.367525 0.937222 +vt 0.367525 0.947363 +vt 0.257257 0.903524 +vt 0.286837 0.903524 +vt 0.755566 0.910608 +vt 0.755566 0.920748 +vt 0.973848 0.514615 +vt 0.978919 0.508547 +vt 0.983989 0.514615 +vt 0.427431 0.903418 +vt 0.457011 0.903418 +vt 0.775045 0.730764 +vt 0.769975 0.736832 +vt 0.764905 0.730764 +vt 0.361456 0.913665 +vt 0.367525 0.908595 +vt 0.367525 0.918735 +vt 0.510060 0.871988 +vt 0.539887 0.871988 +vt 0.539887 0.890036 +vt 0.968778 0.508547 +vt 0.983989 0.534101 +vt 0.780115 0.736832 +vt 0.787228 0.956367 +vt 0.856821 0.617046 +vt 0.822752 0.006709 +vt 0.492337 0.881662 +vt 0.496310 0.880141 +vt 0.496310 0.881662 +vt 0.492337 0.880141 +vt 0.496310 0.878621 +vt 0.492337 0.878621 +vt 0.496310 0.877100 +vt 0.492337 0.877100 +vt 0.496310 0.875580 +vt 0.840002 0.728758 +vt 0.840002 0.725949 +vt 0.841407 0.725367 +vt 0.841407 0.707976 +vt 0.841407 0.711950 +vt 0.840002 0.711368 +vt 0.608440 0.981430 +vt 0.585312 0.982185 +vt 0.585312 0.981430 +vt 0.977248 0.128811 +vt 0.977631 0.129710 +vt 0.976884 0.128962 +vt 0.608440 0.982185 +vt 0.585312 0.982941 +vt 0.608440 0.982941 +vt 0.585312 0.983697 +vt 0.979072 0.128056 +vt 0.978688 0.127157 +vt 0.979436 0.127905 +vt 0.608440 0.983697 +vt 0.585312 0.984452 +vt 0.978538 0.129346 +vt 0.977782 0.129346 +vt 0.608440 0.984452 +vt 0.585312 0.985208 +vt 0.977248 0.128056 +vt 0.976884 0.127905 +vt 0.608440 0.985208 +vt 0.585312 0.985964 +vt 0.608440 0.979918 +vt 0.585312 0.980674 +vt 0.585312 0.979918 +vt 0.608440 0.980674 +vt 0.063198 0.934399 +vt 0.072039 0.933342 +vt 0.072039 0.934399 +vt 0.063198 0.933342 +vt 0.072039 0.932285 +vt 0.063198 0.932285 +vt 0.072039 0.931228 +vt 0.063198 0.931228 +vt 0.072039 0.930170 +vt 0.063198 0.930170 +vt 0.072039 0.929113 +vt 0.063198 0.929113 +vt 0.072039 0.928056 +vt 0.063198 0.935456 +vt 0.072039 0.935456 +vt 0.063198 0.936514 +vt 0.072039 0.936514 +vt 0.979072 0.128811 +vt 0.979436 0.128962 +vt 0.977631 0.127157 +vt 0.977782 0.127521 +vt 0.978688 0.111188 +vt 0.979436 0.111936 +vt 0.976884 0.112993 +vt 0.978688 0.129710 +vt 0.978538 0.127521 +vt 0.841139 0.826421 +vt 0.840538 0.826833 +vt 0.840338 0.826812 +vt 0.839894 0.635303 +vt 0.838616 0.635504 +vt 0.838616 0.635303 +vt 0.839894 0.634419 +vt 0.838616 0.634822 +vt 0.838616 0.634419 +vt 0.840538 0.809135 +vt 0.841251 0.808962 +vt 0.841139 0.809546 +vt 0.841256 0.810745 +vt 0.840338 0.811275 +vt 0.839894 0.630463 +vt 0.838616 0.631523 +vt 0.838616 0.630463 +vt 0.839894 0.635504 +vt 0.838616 0.636564 +vt 0.839894 0.632583 +vt 0.838616 0.633644 +vt 0.838616 0.632583 +vt 0.839894 0.633825 +vt 0.838616 0.633825 +vt 0.839894 0.636564 +vt 0.838616 0.637624 +vt 0.839894 0.631523 +vt 0.839894 0.633644 +vt 0.839894 0.634822 +vt 0.841251 0.827005 +vt 0.840882 0.827168 +vt 0.841139 0.779257 +vt 0.840538 0.779669 +vt 0.840338 0.779648 +vt 0.494581 0.547476 +vt 0.495859 0.547275 +vt 0.495859 0.547476 +vt 0.494581 0.548359 +vt 0.495859 0.547956 +vt 0.495859 0.548359 +vt 0.631793 0.258471 +vt 0.632505 0.258299 +vt 0.632394 0.258882 +vt 0.632511 0.260081 +vt 0.631593 0.260611 +vt 0.494581 0.552316 +vt 0.495859 0.551255 +vt 0.495859 0.552316 +vt 0.494581 0.547275 +vt 0.495859 0.546215 +vt 0.494581 0.550195 +vt 0.495859 0.549135 +vt 0.495859 0.550195 +vt 0.494581 0.548953 +vt 0.495859 0.548953 +vt 0.494581 0.546215 +vt 0.495859 0.545155 +vt 0.494581 0.551255 +vt 0.494581 0.549135 +vt 0.494581 0.547956 +vt 0.841251 0.779841 +vt 0.840882 0.780004 +vt 0.841139 0.842314 +vt 0.840538 0.842726 +vt 0.840338 0.842705 +vt 0.630675 0.276350 +vt 0.631953 0.276149 +vt 0.631953 0.276350 +vt 0.630675 0.277233 +vt 0.631953 0.276830 +vt 0.631953 0.277233 +vt 0.840538 0.872706 +vt 0.841251 0.872534 +vt 0.841139 0.873117 +vt 0.841256 0.874317 +vt 0.840338 0.874847 +vt 0.630675 0.281189 +vt 0.631953 0.280129 +vt 0.631953 0.281189 +vt 0.630675 0.276149 +vt 0.631953 0.275089 +vt 0.630675 0.279069 +vt 0.631953 0.278009 +vt 0.631953 0.279069 +vt 0.630675 0.277827 +vt 0.631953 0.277827 +vt 0.630675 0.274028 +vt 0.631953 0.274028 +vt 0.630675 0.280129 +vt 0.630675 0.278009 +vt 0.630675 0.276830 +vt 0.841251 0.842898 +vt 0.840882 0.843061 +vt 0.841139 0.889993 +vt 0.840538 0.890404 +vt 0.840338 0.890384 +vt 0.591343 0.949881 +vt 0.591142 0.948603 +vt 0.591343 0.948603 +vt 0.592226 0.949881 +vt 0.591823 0.948603 +vt 0.592226 0.948603 +vt 0.840538 0.856813 +vt 0.841251 0.856641 +vt 0.841139 0.857225 +vt 0.841256 0.858424 +vt 0.840338 0.858954 +vt 0.596182 0.949881 +vt 0.595122 0.948603 +vt 0.596182 0.948603 +vt 0.591142 0.949881 +vt 0.590082 0.948603 +vt 0.594062 0.948603 +vt 0.593002 0.949881 +vt 0.593002 0.948603 +vt 0.592820 0.949881 +vt 0.592820 0.948603 +vt 0.590082 0.949881 +vt 0.589022 0.948603 +vt 0.595122 0.949881 +vt 0.591823 0.949881 +vt 0.841251 0.890576 +vt 0.840882 0.890739 +vt 0.838616 0.294606 +vt 0.804547 0.141189 +vt 0.751488 0.742652 +vt 0.623992 0.413172 +vt 0.623992 0.294606 +vt 0.623992 0.324433 +vt 0.623992 0.354013 +vt 0.623992 0.383592 +vt 0.623992 0.442751 +vt 0.623992 0.472331 +vt 0.494581 0.531738 +vt 0.751488 0.505212 +vt 0.637409 0.505212 +vt 0.637426 0.423736 +vt 0.643952 0.382855 +vt 0.662673 0.346112 +vt 0.960285 0.189016 +vt 0.861164 0.276493 +vt 0.065130 0.847979 +vt 0.063198 0.846046 +vt 0.812354 0.990755 +vt 0.811263 0.989455 +vt 0.137391 0.989490 +vt 0.136299 0.988190 +vt 0.093578 0.838557 +vt 0.085754 0.830734 +vt 0.495769 0.720191 +vt 0.491213 0.720186 +vt 0.918835 0.006720 +vt 0.914279 0.006714 +vt 0.918835 0.133834 +vt 0.914279 0.133829 +vt 0.928726 0.760682 +vt 0.924170 0.760676 +vt 0.491671 0.862163 +vt 0.491675 0.857693 +vt 0.478919 0.890001 +vt 0.478919 0.885680 +vt 0.874581 0.263828 +vt 0.874581 0.268150 +vt 0.008595 0.959196 +vt 0.975647 0.760373 +vt 0.977533 0.764927 +vt 0.968778 0.762259 +vt 0.013148 0.952327 +vt 0.006709 0.952327 +vt 0.011262 0.950441 +vt 0.754778 0.877717 +vt 0.756778 0.877717 +vt 0.758193 0.879132 +vt 0.756778 0.882547 +vt 0.753363 0.881133 +vt 0.779926 0.255121 +vt 0.751964 0.276860 +vt 0.225603 0.772929 +vt 0.899184 0.949373 +vt 0.034866 0.950441 +vt 0.960285 0.202447 +vt 0.983989 0.589997 +vt 0.427431 0.941511 +vt 0.257257 0.941618 +vt 0.343251 0.947363 +vt 0.731292 0.920748 +vt 0.343251 0.918735 +vt 0.539887 0.896105 +vt 0.968778 0.502478 +vt 0.983989 0.540169 +vt 0.780115 0.742901 +vt 0.787227 0.962435 +vt 0.850753 0.617046 +vt 0.816684 0.006709 +vt 0.862890 0.294606 +vt 0.828821 0.141189 +vt 0.900342 0.619922 +vt 0.006709 0.706928 +vt 0.125275 0.706929 +vt 0.095695 0.706929 +vt 0.214013 0.706929 +vt 0.184434 0.706929 +vt 0.154853 0.706929 +vt 0.637409 0.518629 +vt 0.751488 0.729234 +vt 0.691829 0.706885 +vt 0.728568 0.725604 +vt 0.662673 0.677729 +vt 0.968778 0.476924 +vt 0.842238 0.276493 +vt 0.120950 0.876479 +vt 0.122882 0.874547 +vt 0.219956 0.978992 +vt 0.219936 0.969499 +vt 0.218845 0.970799 +vt 0.175823 0.989822 +vt 0.175803 0.980329 +vt 0.174712 0.981629 +vt 0.072337 0.780752 +vt 0.064513 0.772929 +vt 0.503572 0.281189 +vt 0.503567 0.276632 +vt 0.589022 0.821501 +vt 0.593579 0.821496 +vt 0.645385 0.836249 +vt 0.645379 0.831693 +vt 0.617198 0.821501 +vt 0.621755 0.821496 +vt 0.645381 0.864300 +vt 0.645378 0.859830 +vt 0.257257 0.890107 +vt 0.257257 0.885786 +vt 0.575605 0.935912 +vt 0.575605 0.940234 +vt 0.737731 0.958298 +vt 0.737731 0.960966 +vt 0.731292 0.958298 +vt 0.970664 0.746956 +vt 0.968778 0.745070 +vt 0.970664 0.740517 +vt 0.804547 0.154610 +vt 0.370198 0.877100 +vt 0.370198 0.879101 +vt 0.366783 0.880516 +vt 0.365368 0.877100 +vt 0.368783 0.875686 +vt 0.384226 0.965007 +vt 0.412188 0.986746 +vt 0.820646 0.154606 +vt 0.968778 0.571792 +vt 0.927137 0.949373 +vt 0.062819 0.950441 +vt 0.988237 0.202447 +vt 0.749497 0.905537 +vt 0.427431 0.913558 +vt 0.300254 0.921573 +vt 0.257257 0.913665 +vt 0.361456 0.932152 +vt 0.361456 0.903524 +vt 0.492337 0.875580 +vt 0.841407 0.729340 +vt 0.839420 0.727354 +vt 0.839420 0.709963 +vt 0.840002 0.708558 +vt 0.608440 0.985964 +vt 0.063198 0.928056 +vt 0.979436 0.112993 +vt 0.978688 0.113740 +vt 0.977631 0.113740 +vt 0.976884 0.111936 +vt 0.977631 0.111188 +vt 0.839420 0.826282 +vt 0.839420 0.825222 +vt 0.840338 0.824692 +vt 0.841256 0.825222 +vt 0.841256 0.826282 +vt 0.840882 0.808799 +vt 0.839420 0.810745 +vt 0.839420 0.809685 +vt 0.840338 0.809155 +vt 0.841256 0.809685 +vt 0.839894 0.637624 +vt 0.839420 0.779118 +vt 0.839420 0.778058 +vt 0.840338 0.777528 +vt 0.841256 0.778058 +vt 0.841256 0.779118 +vt 0.632137 0.258136 +vt 0.630675 0.260081 +vt 0.630675 0.259021 +vt 0.631593 0.258491 +vt 0.632511 0.259021 +vt 0.494581 0.545155 +vt 0.839420 0.842175 +vt 0.839420 0.841115 +vt 0.840338 0.840585 +vt 0.841256 0.841115 +vt 0.841256 0.842175 +vt 0.840882 0.872371 +vt 0.839420 0.874316 +vt 0.839420 0.873256 +vt 0.840338 0.872726 +vt 0.841256 0.873256 +vt 0.630675 0.275089 +vt 0.839420 0.889854 +vt 0.839420 0.888794 +vt 0.840338 0.888264 +vt 0.841256 0.888794 +vt 0.841256 0.889854 +vt 0.840882 0.856478 +vt 0.839420 0.858424 +vt 0.839420 0.857364 +vt 0.840338 0.856833 +vt 0.841256 0.857364 +vt 0.594062 0.949881 +vt 0.589022 0.949881 +vn 0.1139 0.0000 -0.9935 +vn 1.0000 0.0000 0.0000 +vn 0.1139 0.0000 0.9935 +vn 0.0587 -0.9983 0.0000 +vn 0.0587 0.9983 0.0000 +vn 0.0542 0.0000 -0.9985 +vn 0.0542 0.0000 0.9985 +vn 0.0542 -0.9985 0.0000 +vn 0.0542 0.9985 0.0000 +vn 0.0543 0.0000 0.9985 +vn 0.1140 -0.0000 0.9935 +vn 0.0000 0.0792 -0.9969 +vn 0.0000 0.0002 -1.0000 +vn 0.0000 0.3096 -0.9509 +vn 0.0000 0.5878 -0.8090 +vn 0.0000 0.8090 -0.5878 +vn 0.0000 0.9511 -0.3090 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.9969 -0.0785 +vn 0.0000 0.9941 -0.1087 +vn 0.0000 -0.9877 0.1564 +vn 0.0000 -0.9511 0.3090 +vn 0.0000 -0.8090 0.5878 +vn 0.0000 -0.5878 0.8090 +vn 0.0000 -0.3096 0.9509 +vn 0.0000 -0.0792 0.9969 +vn 0.0000 -0.0000 -1.0000 +vn 0.0000 -0.0002 1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.7071 0.0000 0.7071 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.9919 0.1267 0.0000 +vn 0.9679 0.2513 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 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.9239 0.3827 -0.0000 +vn -0.3827 0.9239 -0.0000 +vn 0.6412 0.0000 0.7674 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.7071 0.0000 -0.7071 +vn -0.9679 0.2513 0.0000 +vn -0.9919 0.1267 0.0000 +vn -0.6412 0.0000 0.7674 +vn 0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn 0.5942 0.8043 0.0000 +vn 0.6894 0.7244 0.0000 +vn 0.9967 0.0811 0.0000 +vn -0.9997 0.0257 0.0000 +vn 0.5221 0.8529 0.0000 +vn 0.4776 -0.8786 0.0000 +vn 0.3044 -0.9525 0.0000 +vn -0.4776 0.8786 0.0000 +vn -0.5221 -0.8529 0.0000 +vn 0.9313 -0.3643 0.0000 +vn 0.2961 0.9552 0.0000 +vn 0.9585 0.2850 0.0000 +vn 0.9865 0.1639 0.0000 +vn 0.8450 -0.5348 0.0000 +vn -0.7830 0.6220 0.0000 +vn 0.9302 0.3672 0.0000 +vn -0.1471 -0.9891 0.0000 +vn -0.3299 -0.9440 0.0000 +vn 0.1471 0.9891 0.0000 +vn -0.9302 -0.3672 0.0000 +vn 0.5247 -0.8513 0.0000 +vn 0.8112 0.5848 0.0000 +vn -0.0001 0.0000 1.0000 +vn -0.1973 0.9803 0.0000 +vn -0.0742 0.9972 0.0000 +vn 0.6089 0.7932 0.0000 +vn 0.0001 0.0000 -1.0000 +vn -0.6901 -0.7237 0.0000 +vn -0.2817 0.9595 0.0000 +vn 0.9718 -0.2358 0.0000 +vn 0.9104 -0.4138 0.0000 +vn -0.9718 0.2358 0.0000 +vn 0.2817 -0.9595 0.0000 +vn 0.8952 0.4458 0.0000 +vn 0.8951 0.4458 0.0000 +vn -0.5092 0.8606 0.0000 +vn 0.2540 0.9672 0.0000 +vn 0.3720 0.9282 0.0000 +vn 0.8957 0.4446 0.0000 +vn -0.9381 -0.3464 0.0000 +vn 0.1690 0.9856 0.0000 +vn 0.7691 -0.6392 0.0000 +vn 0.6356 -0.7720 0.0000 +vn -0.7690 0.6392 0.0000 +vn -0.1690 -0.9856 0.0000 +vn 1.0000 0.0066 0.0000 +vn -0.0788 0.9969 0.0000 +vn -0.4775 0.8786 0.0000 +vn -0.0002 0.0000 -1.0000 +s off +f 1189/1079/104 1194/1080/104 1193/1081/104 +f 1194/1080/105 1191/1082/105 1193/1081/105 +f 1192/1083/106 1187/1084/106 1191/1082/106 +f 1193/1081/107 1187/1085/107 1189/1086/107 +f 1190/1087/108 1192/1083/108 1194/1080/108 +f 1198/1088/109 1201/1089/109 1197/1090/109 +f 1202/1091/105 1199/1092/105 1201/1089/105 +f 1200/1093/110 1195/1094/110 1199/1092/110 +f 1201/1089/111 1195/1095/111 1197/1096/111 +f 1198/1097/112 1200/1093/112 1202/1091/112 +f 1206/1098/109 1209/1099/109 1205/1100/109 +f 1210/1101/105 1207/1102/105 1209/1099/105 +f 1208/1103/113 1203/1104/113 1207/1102/113 +f 1209/1099/111 1203/1105/111 1205/1106/111 +f 1206/1107/112 1208/1103/112 1210/1101/112 +f 1214/1108/109 1217/1109/109 1213/1110/109 +f 1218/1111/105 1215/1112/105 1217/1109/105 +f 1216/1113/110 1211/1114/110 1215/1112/110 +f 1217/1109/111 1211/1115/111 1213/1116/111 +f 1214/1117/112 1216/1113/112 1218/1111/112 +f 1222/1118/109 1225/1119/109 1221/1120/109 +f 1226/1121/105 1223/1122/105 1225/1119/105 +f 1224/1123/113 1219/1124/113 1223/1122/113 +f 1225/1119/111 1219/1125/111 1221/1126/111 +f 1222/1127/112 1224/1123/112 1226/1121/112 +f 1189/1079/104 1190/1128/104 1194/1080/104 +f 1194/1080/105 1192/1083/105 1191/1082/105 +f 1192/1083/114 1188/1129/114 1187/1084/114 +f 1193/1081/107 1191/1082/107 1187/1085/107 +f 1190/1087/108 1188/1130/108 1192/1083/108 +f 1198/1088/109 1202/1091/109 1201/1089/109 +f 1202/1091/105 1200/1093/105 1199/1092/105 +f 1200/1093/110 1196/1131/110 1195/1094/110 +f 1201/1089/111 1199/1092/111 1195/1095/111 +f 1198/1097/112 1196/1132/112 1200/1093/112 +f 1206/1098/109 1210/1101/109 1209/1099/109 +f 1210/1101/105 1208/1103/105 1207/1102/105 +f 1208/1103/110 1204/1133/110 1203/1104/110 +f 1209/1099/111 1207/1102/111 1203/1105/111 +f 1206/1107/112 1204/1134/112 1208/1103/112 +f 1214/1108/109 1218/1111/109 1217/1109/109 +f 1218/1111/105 1216/1113/105 1215/1112/105 +f 1216/1113/110 1212/1135/110 1211/1114/110 +f 1217/1109/111 1215/1112/111 1211/1115/111 +f 1214/1117/112 1212/1136/112 1216/1113/112 +f 1222/1118/109 1226/1121/109 1225/1119/109 +f 1226/1121/105 1224/1123/105 1223/1122/105 +f 1224/1123/110 1220/1137/110 1219/1124/110 +f 1225/1119/111 1223/1122/111 1219/1125/111 +f 1222/1127/112 1220/1138/112 1224/1123/112 +s 1 +f 667/1139/115 1120/1140/116 1121/1141/115 +f 668/1142/117 1121/1141/115 1122/1143/117 +f 669/1144/118 1122/1143/117 1123/1145/118 +f 670/1146/119 1123/1145/118 1124/1147/119 +f 671/1148/120 1124/1147/119 1125/1149/120 +f 1120/1150/121 673/1151/121 1127/1152/121 +f 674/1153/122 663/1154/122 656/1155/122 +f 1126/1156/123 664/1157/122 672/1158/124 +f 866/1159/105 673/1160/105 663/1161/105 +f 656/1162/105 667/1163/105 661/1164/105 +f 667/1163/105 660/1165/105 661/1164/105 +f 668/1166/105 659/1167/105 660/1165/105 +f 669/1168/105 658/1169/105 659/1167/105 +f 670/1170/105 657/1171/105 658/1169/105 +f 671/1172/105 662/1173/105 657/1171/105 +f 673/1160/105 656/1162/105 663/1161/105 +f 678/1174/105 679/1175/105 680/1176/105 +f 680/1177/125 657/1178/126 662/1179/125 +f 678/1180/127 659/1181/128 658/1182/127 +f 676/1183/129 661/1184/130 660/1185/129 +f 663/1186/131 680/1187/131 662/1188/131 +f 679/1189/126 658/1182/127 657/1178/126 +f 677/1190/128 660/1185/129 659/1181/128 +f 675/1191/130 656/1192/132 661/1184/130 +f 682/1193/131 688/1194/131 687/1195/131 +f 688/1196/122 685/1197/122 693/1198/122 +f 686/1199/105 692/1200/105 690/1201/105 +f 691/1202/133 685/1203/133 684/1204/133 +f 693/1205/134 690/1201/134 692/1200/134 +f 686/1199/135 691/1206/135 687/1207/135 +f 692/1200/136 688/1196/136 693/1198/136 +f 689/1208/137 687/1195/137 688/1194/137 +f 682/1209/121 691/1206/121 684/1210/121 +f 694/1211/131 705/1212/131 698/1213/131 +f 703/1214/133 701/1215/133 697/1216/133 +f 705/1212/138 701/1215/139 704/1217/138 +f 702/1218/131 699/1219/131 705/1212/131 +f 694/1220/121 700/1221/121 696/1222/121 +f 699/1219/122 697/1223/122 701/1215/122 +f 698/1213/105 704/1217/138 700/1221/105 +f 700/1221/133 703/1214/133 696/1224/133 +f 706/1225/131 717/1226/131 710/1227/131 +f 715/1228/133 713/1229/133 709/1230/133 +f 717/1226/138 713/1229/139 716/1231/138 +f 714/1232/131 711/1233/131 717/1226/131 +f 706/1234/121 712/1235/121 708/1236/121 +f 711/1233/122 709/1237/122 713/1229/122 +f 710/1227/105 716/1231/138 712/1235/105 +f 712/1235/133 715/1228/133 708/1238/133 +f 727/1239/133 721/1240/133 720/1241/133 +f 733/1242/133 722/1243/133 723/1244/133 +f 718/1245/131 729/1246/131 728/1247/131 +f 718/1248/121 727/1239/121 720/1249/121 +f 729/1246/122 721/1250/122 726/1251/122 +f 726/1251/105 724/1252/105 725/1253/105 +f 727/1239/105 722/1254/105 724/1252/105 +f 729/1246/105 725/1253/105 723/1255/105 +f 728/1247/105 723/1255/105 722/1254/105 +f 732/1256/105 730/1257/105 731/1258/105 +f 732/1256/122 724/1259/122 722/1260/122 +f 730/1257/121 723/1261/121 725/1262/121 +f 731/1258/131 725/1263/131 724/1264/131 +f 741/1265/122 737/1266/122 744/1267/122 +f 739/1268/105 745/1269/105 742/1270/105 +f 739/1268/135 743/1271/135 738/1272/135 +f 745/1269/136 741/1265/136 744/1267/136 +f 734/1273/121 743/1271/121 736/1274/121 +f 753/1275/122 749/1276/122 756/1277/122 +f 751/1278/105 757/1279/105 754/1280/105 +f 751/1278/135 755/1281/135 750/1282/135 +f 757/1279/136 753/1275/136 756/1277/136 +f 746/1283/121 755/1281/121 748/1284/121 +f 765/1285/122 761/1286/122 768/1287/122 +f 763/1288/105 769/1289/105 766/1290/105 +f 763/1288/135 767/1291/135 762/1292/135 +f 769/1289/136 765/1285/136 768/1287/136 +f 758/1293/121 767/1291/121 760/1294/121 +f 777/1295/122 773/1296/122 780/1297/122 +f 775/1298/105 781/1299/105 778/1300/105 +f 775/1298/135 779/1301/135 774/1302/135 +f 781/1299/136 777/1295/136 780/1297/136 +f 770/1303/121 779/1301/121 772/1304/121 +f 789/1305/122 785/1306/122 792/1307/122 +f 787/1308/105 793/1309/105 790/1310/105 +f 787/1308/135 791/1311/135 786/1312/135 +f 793/1309/136 789/1305/136 792/1307/136 +f 782/1313/121 791/1311/121 784/1314/121 +f 801/1315/122 797/1316/122 804/1317/122 +f 799/1318/105 805/1319/105 802/1320/105 +f 799/1318/135 803/1321/135 798/1322/135 +f 805/1319/136 801/1315/136 804/1317/136 +f 794/1323/121 803/1321/121 796/1324/121 +f 813/1325/122 809/1326/122 816/1327/122 +f 811/1328/105 817/1329/105 814/1330/105 +f 811/1328/135 815/1331/135 810/1332/135 +f 817/1329/136 813/1325/136 816/1327/136 +f 806/1333/121 815/1331/121 808/1334/121 +f 820/1335/140 819/1336/121 818/1337/121 +f 822/1338/141 821/1339/140 820/1335/140 +f 824/1340/142 823/1341/141 822/1338/141 +f 826/1342/143 825/1343/142 824/1340/142 +f 828/1344/122 827/1345/143 826/1342/143 +f 840/1346/131 830/1347/131 832/1348/131 +f 823/1349/133 827/1350/133 831/1351/133 +f 833/1352/133 835/1353/133 819/1354/133 +f 830/1347/131 837/1355/131 828/1356/131 +f 832/1348/131 828/1356/131 824/1357/131 +f 842/1358/144 857/1359/145 849/1360/145 +f 853/1361/133 855/1362/133 857/1363/133 +f 836/1364/133 831/1351/133 829/1365/133 +f 837/1366/122 829/1367/122 828/1344/122 +f 835/1368/121 818/1337/121 819/1336/121 +f 834/1369/131 832/1348/131 818/1370/131 +f 839/1371/133 833/1352/133 831/1351/133 +f 848/1372/146 855/1373/147 847/1374/147 +f 846/1375/143 853/1376/142 845/1377/142 +f 844/1378/141 850/1379/140 843/1380/140 +f 849/1381/145 856/1382/146 848/1372/146 +f 847/1374/147 854/1383/143 846/1375/143 +f 843/1380/140 852/1384/144 842/1358/144 +f 845/1377/142 851/1385/141 844/1378/141 +f 859/1386/148 673/1387/148 866/1388/148 +f 863/1389/121 1140/1390/121 1132/1391/121 +f 664/1157/122 873/1392/122 672/1158/122 +f 871/1393/148 863/1394/148 864/1395/148 +f 869/1396/148 861/1397/148 862/1398/148 +f 862/1399/122 881/1400/122 869/1401/122 +f 867/1402/148 858/1403/148 860/1404/148 +f 864/1395/133 1132/1405/133 1131/1406/133 +f 869/1407/105 878/1408/105 870/1409/105 +f 862/1398/133 1134/1410/133 1133/1411/133 +f 860/1404/133 1136/1412/133 1135/1413/133 +f 859/1414/121 1138/1415/121 1130/1416/121 +f 863/1389/121 878/1417/121 879/1418/121 +f 872/1419/148 886/1420/148 873/1421/148 +f 876/1422/148 874/1423/148 875/1424/148 +f 879/1425/148 881/1426/148 880/1427/148 +f 882/1428/148 884/1429/148 883/1430/148 +f 875/1424/133 1139/1431/133 1138/1432/133 +f 879/1425/133 1141/1433/133 1140/1434/133 +f 883/1430/133 1143/1435/133 1142/1436/133 +f 861/1437/121 882/1438/121 883/1439/121 +f 861/1437/121 1142/1440/121 1134/1441/121 +f 867/1442/105 882/1428/105 868/1443/105 +f 859/1414/121 876/1444/121 875/1445/121 +f 860/1446/122 885/1447/122 867/1448/122 +f 871/1449/105 876/1422/105 866/1450/105 +f 864/1451/122 877/1452/122 871/1453/122 +f 858/1454/121 1144/1455/121 1136/1456/121 +f 858/1454/121 886/1457/121 887/1458/121 +f 672/1459/105 886/1420/105 865/1460/105 +f 1137/1461/133 887/1462/133 872/1419/133 +f 1135/1463/122 884/1464/122 860/1446/122 +f 1133/1465/122 880/1466/122 862/1399/122 +f 1131/1467/122 874/1468/122 864/1451/122 +f 1130/1469/133 665/1470/133 859/1386/133 +f 1128/1471/122 872/1472/122 664/1157/122 +f 665/1473/121 1127/1152/121 673/1151/121 +f 671/1148/120 1126/1156/123 672/1158/124 +f 1120/1140/116 899/1474/115 1121/1141/115 +f 1121/1141/115 900/1475/117 1122/1143/117 +f 1122/1143/117 901/1476/118 1123/1145/118 +f 1123/1145/118 902/1477/119 1124/1147/119 +f 1124/1147/119 903/1478/120 1125/1149/120 +f 905/1479/121 1120/1150/121 1127/1152/121 +f 895/1480/122 906/1481/122 888/1482/122 +f 1126/1156/123 896/1483/122 1128/1471/122 +f 1099/1484/149 1097/1485/149 894/1486/149 +f 888/1487/149 899/1488/149 898/1489/149 +f 892/1490/149 899/1488/149 893/1491/149 +f 891/1492/149 900/1493/149 892/1490/149 +f 891/1492/149 902/1494/149 901/1495/149 +f 889/1496/149 902/1494/149 890/1497/149 +f 894/1486/149 903/1498/149 889/1496/149 +f 888/1487/149 905/1499/149 895/1500/149 +f 908/1501/149 907/1502/149 913/1503/149 +f 889/1504/126 912/1505/125 894/1506/125 +f 891/1507/128 910/1508/127 890/1509/127 +f 893/1510/130 908/1511/129 892/1512/129 +f 894/1513/131 913/1514/131 895/1515/131 +f 890/1509/127 911/1516/126 889/1504/126 +f 892/1512/129 909/1517/128 891/1507/128 +f 888/1518/132 907/1519/130 893/1510/130 +f 920/1520/131 914/1521/131 919/1522/131 +f 917/1523/122 920/1524/122 925/1525/122 +f 924/1526/149 918/1527/149 922/1528/149 +f 917/1529/133 923/1530/133 916/1531/133 +f 922/1528/150 925/1532/150 924/1526/150 +f 923/1533/151 918/1527/151 919/1534/151 +f 920/1524/152 924/1526/152 925/1525/152 +f 919/1522/153 921/1535/153 920/1520/153 +f 923/1533/121 914/1536/121 916/1537/121 +f 937/1538/131 926/1539/131 930/1540/131 +f 935/1541/133 933/1542/133 936/1543/133 +f 933/1542/154 937/1538/155 936/1543/155 +f 931/1544/131 934/1545/131 937/1538/131 +f 932/1546/121 926/1547/121 928/1548/121 +f 929/1549/122 931/1544/122 933/1542/122 +f 936/1543/155 930/1540/149 932/1546/149 +f 935/1541/133 932/1546/133 928/1550/133 +f 949/1551/131 938/1552/131 942/1553/131 +f 947/1554/133 945/1555/133 948/1556/133 +f 945/1555/154 949/1551/155 948/1556/155 +f 943/1557/131 946/1558/131 949/1551/131 +f 944/1559/121 938/1560/121 940/1561/121 +f 941/1562/122 943/1557/122 945/1555/122 +f 948/1556/155 942/1553/149 944/1559/149 +f 947/1554/133 944/1559/133 940/1563/133 +f 953/1564/133 959/1565/133 952/1566/133 +f 954/1567/133 965/1568/133 955/1569/133 +f 961/1570/131 950/1571/131 960/1572/131 +f 959/1565/121 950/1573/121 952/1574/121 +f 953/1575/122 961/1570/122 958/1576/122 +f 956/1577/149 958/1576/149 957/1578/149 +f 956/1577/149 960/1572/149 959/1565/149 +f 955/1579/149 958/1576/149 961/1570/149 +f 955/1579/149 960/1572/149 954/1580/149 +f 962/1581/149 964/1582/149 963/1583/149 +f 956/1584/122 964/1582/122 954/1585/122 +f 955/1586/121 962/1581/121 957/1587/121 +f 957/1588/131 963/1583/131 956/1589/131 +f 969/1590/122 973/1591/122 976/1592/122 +f 977/1593/149 971/1594/149 974/1595/149 +f 975/1596/151 971/1594/151 970/1597/151 +f 973/1591/152 977/1593/152 976/1592/152 +f 975/1596/121 966/1598/121 968/1599/121 +f 981/1600/122 985/1601/122 988/1602/122 +f 989/1603/149 983/1604/149 986/1605/149 +f 987/1606/151 983/1604/151 982/1607/151 +f 985/1601/152 989/1603/152 988/1602/152 +f 987/1606/121 978/1608/121 980/1609/121 +f 993/1610/122 997/1611/122 1000/1612/122 +f 1001/1613/149 995/1614/149 998/1615/149 +f 999/1616/151 995/1614/151 994/1617/151 +f 997/1611/152 1001/1613/152 1000/1612/152 +f 999/1616/121 990/1618/121 992/1619/121 +f 1005/1620/122 1009/1621/122 1012/1622/122 +f 1013/1623/149 1007/1624/149 1010/1625/149 +f 1011/1626/151 1007/1624/151 1006/1627/151 +f 1009/1621/152 1013/1623/152 1012/1622/152 +f 1011/1626/121 1002/1628/121 1004/1629/121 +f 1017/1630/122 1021/1631/122 1024/1632/122 +f 1025/1633/149 1019/1634/149 1022/1635/149 +f 1023/1636/151 1019/1634/151 1018/1637/151 +f 1021/1631/152 1025/1633/152 1024/1632/152 +f 1023/1636/121 1014/1638/121 1016/1639/121 +f 1029/1640/122 1033/1641/122 1036/1642/122 +f 1037/1643/149 1031/1644/149 1034/1645/149 +f 1035/1646/151 1031/1644/151 1030/1647/151 +f 1033/1641/152 1037/1643/152 1036/1642/152 +f 1035/1646/121 1026/1648/121 1028/1649/121 +f 1041/1650/122 1045/1651/122 1048/1652/122 +f 1049/1653/149 1043/1654/149 1046/1655/149 +f 1047/1656/151 1043/1654/151 1042/1657/151 +f 1045/1651/152 1049/1653/152 1048/1652/152 +f 1047/1656/121 1038/1658/121 1040/1659/121 +f 1051/1660/121 1052/1661/144 1050/1662/121 +f 1053/1663/144 1054/1664/145 1052/1661/144 +f 1055/1665/145 1056/1666/146 1054/1664/145 +f 1057/1667/146 1058/1668/147 1056/1666/146 +f 1059/1669/147 1060/1670/122 1058/1668/147 +f 1062/1671/131 1072/1672/131 1064/1673/131 +f 1057/1674/133 1055/1675/133 1063/1676/133 +f 1065/1677/133 1067/1678/133 1073/1679/133 +f 1062/1671/131 1069/1680/131 1070/1681/131 +f 1056/1682/131 1060/1683/131 1064/1673/131 +f 1081/1684/141 1084/1685/140 1074/1686/140 +f 1089/1687/133 1087/1688/133 1085/1689/133 +f 1063/1676/133 1068/1690/133 1061/1691/133 +f 1061/1692/122 1069/1693/122 1060/1670/122 +f 1050/1662/121 1067/1694/121 1051/1660/121 +f 1064/1673/131 1066/1695/131 1050/1696/131 +f 1065/1677/133 1071/1697/133 1063/1676/133 +f 1087/1698/143 1080/1699/142 1079/1700/143 +f 1085/1701/146 1078/1702/147 1077/1703/146 +f 1082/1704/144 1076/1705/145 1075/1706/144 +f 1088/1707/142 1081/1708/141 1080/1699/142 +f 1086/1709/147 1079/1700/143 1078/1702/147 +f 1084/1685/140 1075/1706/144 1074/1686/140 +f 1083/1710/145 1077/1703/146 1076/1705/145 +f 905/1711/156 1091/1712/156 1098/1713/156 +f 1140/1390/121 1095/1714/121 1132/1391/121 +f 1105/1715/122 896/1483/122 904/1716/122 +f 1095/1717/156 1103/1718/156 1096/1719/156 +f 1093/1720/156 1101/1721/156 1094/1722/156 +f 1113/1723/122 1094/1724/122 1101/1725/122 +f 1090/1726/156 1099/1727/156 1092/1728/156 +f 1132/1405/133 1096/1719/133 1131/1406/133 +f 1110/1729/149 1101/1730/149 1102/1731/149 +f 1134/1410/133 1094/1722/133 1133/1411/133 +f 1136/1412/133 1092/1728/133 1135/1413/133 +f 1138/1415/121 1091/1732/121 1130/1416/121 +f 1095/1714/121 1110/1733/121 1102/1734/121 +f 1118/1735/156 1104/1736/156 1105/1737/156 +f 1106/1738/156 1108/1739/156 1107/1740/156 +f 1111/1741/156 1113/1742/156 1110/1729/156 +f 1116/1743/156 1114/1744/156 1115/1745/156 +f 1139/1431/133 1107/1740/133 1138/1432/133 +f 1141/1433/133 1111/1741/133 1140/1434/133 +f 1143/1435/133 1115/1745/133 1142/1436/133 +f 1093/1746/121 1114/1747/121 1100/1748/121 +f 1142/1440/121 1093/1746/121 1134/1441/121 +f 1114/1744/149 1099/1749/149 1100/1750/149 +f 1091/1732/121 1108/1751/121 1098/1752/121 +f 1117/1753/122 1092/1754/122 1099/1755/122 +f 1108/1739/149 1103/1756/149 1098/1757/149 +f 1109/1758/122 1096/1759/122 1103/1760/122 +f 1144/1455/121 1090/1761/121 1136/1456/121 +f 1090/1761/121 1118/1762/121 1097/1763/121 +f 1118/1735/149 904/1764/149 1097/1765/149 +f 1119/1766/133 1137/1461/133 1104/1736/133 +f 1116/1767/122 1135/1463/122 1092/1754/122 +f 1112/1768/122 1133/1465/122 1094/1724/122 +f 1106/1769/122 1131/1467/122 1096/1759/122 +f 897/1770/133 1130/1469/133 1091/1712/133 +f 1104/1771/122 1128/1471/122 896/1483/122 +f 1127/1152/121 897/1772/121 905/1479/121 +f 1126/1156/123 903/1478/120 904/1716/124 +f 1146/1773/157 1147/1774/134 1145/1775/157 +f 1148/1776/134 1149/1777/105 1147/1774/134 +f 1150/1778/105 1151/1779/137 1149/1777/105 +f 1152/1780/137 1153/1781/158 1151/1779/137 +f 1147/1782/122 1151/1783/122 1153/1784/122 +f 1146/1785/121 1154/1786/121 1152/1787/121 +f 1157/1788/122 1155/1789/136 1156/1790/122 +f 1155/1791/133 1173/1792/133 1172/1793/133 +f 1158/1794/136 1165/1795/105 1155/1789/136 +f 1159/1796/105 1166/1797/135 1165/1795/105 +f 1168/1798/133 1182/1799/133 1180/1800/133 +f 1160/1801/135 1167/1802/121 1166/1797/135 +f 1166/1803/133 1173/1792/133 1165/1804/133 +f 1161/1805/121 1168/1806/151 1167/1802/121 +f 1156/1807/133 1172/1793/133 1171/1808/133 +f 1162/1809/151 1169/1810/149 1168/1806/151 +f 1163/1811/149 1170/1812/152 1169/1813/149 +f 1164/1814/152 1156/1790/122 1170/1812/152 +f 1171/1815/122 1175/1816/136 1174/1817/122 +f 1172/1818/136 1177/1819/105 1175/1816/136 +f 1173/1820/105 1179/1821/135 1177/1819/105 +f 1176/1822/135 1181/1823/121 1179/1821/135 +f 1178/1824/121 1183/1825/151 1181/1823/121 +f 1180/1826/151 1185/1827/149 1183/1825/151 +f 1184/1828/152 1174/1817/122 1186/1829/152 +f 1182/1830/149 1186/1829/152 1185/1831/149 +f 1167/1832/133 1180/1800/133 1178/1833/133 +f 1156/1807/133 1184/1834/133 1170/1835/133 +f 1185/1836/131 1186/1837/131 1179/1838/131 +f 1167/1832/133 1176/1839/133 1166/1803/133 +f 1170/1835/133 1182/1799/133 1169/1840/133 +f 1232/1841/133 1233/1842/133 1234/1843/133 +f 1235/1844/159 1234/1845/160 1233/1846/159 +f 1238/1847/161 1240/1848/161 1237/1849/161 +f 1235/1850/131 1238/1851/131 1241/1852/131 +f 1245/1853/131 1246/1854/131 1241/1852/131 +f 1242/1855/162 1229/1856/162 1228/1857/162 +f 1236/1858/160 1227/1859/163 1234/1845/160 +f 1245/1860/164 1231/1861/164 1230/1862/164 +f 1241/1863/165 1237/1849/165 1232/1864/165 +f 1243/1865/166 1228/1866/166 1227/1859/166 +f 1246/1867/167 1230/1862/167 1229/1856/167 +f 1244/1868/168 1232/1864/168 1231/1861/168 +f 1233/1846/159 1239/1869/169 1235/1844/159 +f 1233/1842/133 1237/1870/133 1240/1871/133 +f 1252/1872/133 1253/1873/133 1254/1874/133 +f 1255/1875/170 1254/1876/171 1253/1877/170 +f 1258/1878/172 1260/1879/172 1257/1880/172 +f 1255/1881/131 1258/1882/131 1261/1883/131 +f 1265/1884/131 1266/1885/131 1261/1883/131 +f 1262/1886/173 1249/1887/173 1248/1888/173 +f 1256/1889/171 1247/1890/174 1254/1876/171 +f 1265/1891/175 1251/1892/175 1250/1893/175 +f 1261/1894/176 1257/1880/176 1252/1895/176 +f 1263/1896/177 1248/1897/177 1247/1890/177 +f 1266/1898/178 1250/1893/178 1249/1887/178 +f 1264/1899/179 1252/1895/179 1251/1892/179 +f 1255/1875/170 1260/1879/180 1259/1900/180 +f 1253/1873/133 1257/1901/133 1260/1902/133 +f 1272/1903/133 1273/1904/181 1274/1905/133 +f 1275/1906/182 1274/1907/183 1273/1908/182 +f 1278/1909/184 1280/1910/184 1277/1911/184 +f 1275/1912/185 1278/1913/131 1281/1914/131 +f 1285/1915/131 1286/1916/131 1281/1914/131 +f 1282/1917/186 1269/1918/186 1268/1919/186 +f 1276/1920/183 1267/1921/187 1274/1907/183 +f 1285/1922/188 1271/1923/188 1270/1924/188 +f 1281/1925/189 1277/1911/189 1272/1926/189 +f 1267/1921/190 1282/1927/190 1268/1928/190 +f 1286/1929/191 1270/1924/191 1269/1918/191 +f 1284/1930/192 1272/1926/193 1271/1923/193 +f 1273/1908/182 1279/1931/194 1275/1906/182 +f 1273/1904/181 1277/1932/133 1280/1933/133 +f 1292/1934/133 1293/1935/133 1294/1936/133 +f 1295/1937/195 1294/1938/196 1293/1939/195 +f 1298/1940/197 1300/1941/197 1297/1942/197 +f 1295/1943/131 1298/1944/131 1301/1945/131 +f 1305/1946/131 1306/1947/131 1301/1945/131 +f 1302/1948/198 1289/1949/198 1288/1950/198 +f 1296/1951/196 1287/1952/199 1294/1938/196 +f 1290/1953/200 1304/1954/200 1291/1955/200 +f 1301/1956/201 1297/1942/201 1292/1957/201 +f 1303/1958/202 1288/1959/202 1287/1952/202 +f 1306/1960/203 1290/1953/203 1289/1949/203 +f 1304/1954/204 1292/1957/204 1291/1955/204 +f 1293/1939/195 1299/1961/205 1295/1937/195 +f 1293/1935/133 1297/1962/133 1300/1963/133 +f 667/1139/115 666/1964/116 1120/1140/116 +f 668/1142/117 667/1139/115 1121/1141/115 +f 669/1144/118 668/1142/117 1122/1143/117 +f 670/1146/119 669/1144/118 1123/1145/118 +f 671/1148/120 670/1146/119 1124/1147/119 +f 1120/1150/121 666/1965/121 673/1151/121 +f 674/1153/122 681/1966/122 663/1154/122 +f 1126/1156/123 1128/1471/122 664/1157/122 +f 663/1161/105 662/1173/105 869/1967/105 +f 662/1173/105 672/1968/105 865/1969/105 +f 867/1970/105 662/1173/105 865/1969/105 +f 867/1970/105 868/1971/105 662/1173/105 +f 868/1971/105 869/1967/105 662/1173/105 +f 870/1972/105 871/1973/105 663/1161/105 +f 871/1973/105 866/1159/105 663/1161/105 +f 869/1967/105 870/1972/105 663/1161/105 +f 656/1162/105 666/1974/105 667/1163/105 +f 667/1163/105 668/1166/105 660/1165/105 +f 668/1166/105 669/1168/105 659/1167/105 +f 669/1168/105 670/1170/105 658/1169/105 +f 670/1170/105 671/1172/105 657/1171/105 +f 671/1172/105 672/1968/105 662/1173/105 +f 673/1160/105 666/1974/105 656/1162/105 +f 680/1176/105 681/1975/105 678/1174/105 +f 681/1975/105 674/1976/105 675/1977/105 +f 676/1978/105 681/1975/105 675/1977/105 +f 676/1978/105 677/1979/105 681/1975/105 +f 677/1979/105 678/1174/105 681/1975/105 +f 680/1177/125 679/1189/126 657/1178/126 +f 678/1180/127 677/1190/128 659/1181/128 +f 676/1183/129 675/1191/130 661/1184/130 +f 663/1186/131 681/1980/131 680/1187/131 +f 679/1189/126 678/1180/127 658/1182/127 +f 677/1190/128 676/1183/129 660/1185/129 +f 675/1191/130 674/1981/132 656/1192/132 +f 682/1193/131 683/1982/131 688/1194/131 +f 688/1196/122 683/1983/122 685/1197/122 +f 686/1199/105 689/1208/105 692/1200/105 +f 691/1202/133 693/1205/133 685/1203/133 +f 693/1205/134 691/1202/134 690/1201/134 +f 686/1199/135 690/1201/135 691/1206/135 +f 692/1200/136 689/1208/136 688/1196/136 +f 689/1208/137 686/1199/137 687/1195/137 +f 682/1209/121 687/1207/121 691/1206/121 +f 694/1211/131 702/1218/131 705/1212/131 +f 703/1214/133 704/1217/133 701/1215/133 +f 705/1212/138 699/1219/139 701/1215/139 +f 702/1218/131 695/1984/131 699/1219/131 +f 694/1220/121 698/1213/121 700/1221/121 +f 699/1219/122 695/1985/122 697/1223/122 +f 698/1213/105 705/1212/138 704/1217/138 +f 700/1221/133 704/1217/133 703/1214/133 +f 706/1225/131 714/1232/131 717/1226/131 +f 715/1228/133 716/1231/133 713/1229/133 +f 717/1226/138 711/1233/139 713/1229/139 +f 714/1232/131 707/1986/131 711/1233/131 +f 706/1234/121 710/1227/121 712/1235/121 +f 711/1233/122 707/1987/122 709/1237/122 +f 710/1227/105 717/1226/138 716/1231/138 +f 712/1235/133 716/1231/133 715/1228/133 +f 727/1239/133 726/1251/133 721/1240/133 +f 733/1242/133 732/1256/133 722/1243/133 +f 718/1245/131 719/1988/131 729/1246/131 +f 718/1248/121 728/1247/121 727/1239/121 +f 729/1246/122 719/1989/122 721/1250/122 +f 726/1251/105 727/1239/105 724/1252/105 +f 727/1239/105 728/1247/105 722/1254/105 +f 729/1246/105 726/1251/105 725/1253/105 +f 728/1247/105 729/1246/105 723/1255/105 +f 732/1256/105 733/1242/105 730/1257/105 +f 732/1256/122 731/1258/122 724/1259/122 +f 730/1257/121 733/1242/121 723/1261/121 +f 731/1258/131 730/1257/131 725/1263/131 +f 741/1265/122 735/1990/122 737/1266/122 +f 739/1268/105 740/1991/105 745/1269/105 +f 739/1268/135 742/1270/135 743/1271/135 +f 745/1269/136 740/1991/136 741/1265/136 +f 734/1273/121 738/1272/121 743/1271/121 +f 753/1275/122 747/1992/122 749/1276/122 +f 751/1278/105 752/1993/105 757/1279/105 +f 751/1278/135 754/1280/135 755/1281/135 +f 757/1279/136 752/1993/136 753/1275/136 +f 746/1283/121 750/1282/121 755/1281/121 +f 765/1285/122 759/1994/122 761/1286/122 +f 763/1288/105 764/1995/105 769/1289/105 +f 763/1288/135 766/1290/135 767/1291/135 +f 769/1289/136 764/1995/136 765/1285/136 +f 758/1293/121 762/1292/121 767/1291/121 +f 777/1295/122 771/1996/122 773/1296/122 +f 775/1298/105 776/1997/105 781/1299/105 +f 775/1298/135 778/1300/135 779/1301/135 +f 781/1299/136 776/1997/136 777/1295/136 +f 770/1303/121 774/1302/121 779/1301/121 +f 789/1305/122 783/1998/122 785/1306/122 +f 787/1308/105 788/1999/105 793/1309/105 +f 787/1308/135 790/1310/135 791/1311/135 +f 793/1309/136 788/1999/136 789/1305/136 +f 782/1313/121 786/1312/121 791/1311/121 +f 801/1315/122 795/2000/122 797/1316/122 +f 799/1318/105 800/2001/105 805/1319/105 +f 799/1318/135 802/1320/135 803/1321/135 +f 805/1319/136 800/2001/136 801/1315/136 +f 794/1323/121 798/1322/121 803/1321/121 +f 813/1325/122 807/2002/122 809/1326/122 +f 811/1328/105 812/2003/105 817/1329/105 +f 811/1328/135 814/1330/135 815/1331/135 +f 817/1329/136 812/2003/136 813/1325/136 +f 806/1333/121 810/1332/121 815/1331/121 +f 820/1335/140 821/1339/140 819/1336/121 +f 822/1338/141 823/1341/141 821/1339/140 +f 824/1340/142 825/1343/142 823/1341/141 +f 826/1342/143 827/1345/143 825/1343/142 +f 828/1344/122 829/1367/122 827/1345/143 +f 840/1346/131 838/2004/131 830/1347/131 +f 819/1354/133 821/2005/133 823/1349/133 +f 823/1349/133 825/2006/133 827/1350/133 +f 827/1350/133 829/1365/133 831/1351/133 +f 831/1351/133 833/1352/133 819/1354/133 +f 819/1354/133 823/1349/133 831/1351/133 +f 833/1352/133 841/2007/133 835/1353/133 +f 830/1347/131 838/2004/131 837/1355/131 +f 820/2008/131 818/1370/131 832/1348/131 +f 832/1348/131 830/1347/131 828/1356/131 +f 828/1356/131 826/2009/131 824/1357/131 +f 824/1357/131 822/2010/131 820/2008/131 +f 820/2008/131 832/1348/131 824/1357/131 +f 842/1358/144 852/1384/144 857/1359/145 +f 857/1363/133 852/2011/133 850/2012/133 +f 850/2012/133 851/2013/133 857/1363/133 +f 851/2013/133 853/1361/133 857/1363/133 +f 853/1361/133 854/2014/133 855/1362/133 +f 855/1362/133 856/2015/133 857/1363/133 +f 836/1364/133 839/1371/133 831/1351/133 +f 837/1366/122 836/2016/122 829/1367/122 +f 835/1368/121 834/2017/121 818/1337/121 +f 834/1369/131 840/1346/131 832/1348/131 +f 839/1371/133 841/2007/133 833/1352/133 +f 848/1372/146 856/1382/146 855/1373/147 +f 846/1375/143 854/1383/143 853/1376/142 +f 844/1378/141 851/1385/141 850/1379/140 +f 849/1381/145 857/2018/145 856/1382/146 +f 847/1374/147 855/1373/147 854/1383/143 +f 843/1380/140 850/1379/140 852/1384/144 +f 845/1377/142 853/1376/142 851/1385/141 +f 859/1386/148 665/1470/148 673/1387/148 +f 863/1389/121 879/1418/121 1140/1390/121 +f 664/1157/122 872/1472/122 873/1392/122 +f 871/1393/148 870/2019/148 863/1394/148 +f 869/1396/148 868/2020/148 861/1397/148 +f 862/1399/122 880/1466/122 881/1400/122 +f 867/1402/148 865/2021/148 858/1403/148 +f 864/1395/133 863/1394/133 1132/1405/133 +f 869/1407/105 881/1426/105 878/1408/105 +f 862/1398/133 861/1397/133 1134/1410/133 +f 860/1404/133 858/1403/133 1136/1412/133 +f 859/1414/121 875/1445/121 1138/1415/121 +f 863/1389/121 870/2022/121 878/1417/121 +f 872/1419/148 887/1462/148 886/1420/148 +f 876/1422/148 877/2023/148 874/1423/148 +f 879/1425/148 878/1408/148 881/1426/148 +f 882/1428/148 885/2024/148 884/1429/148 +f 875/1424/133 874/1423/133 1139/1431/133 +f 879/1425/133 880/1427/133 1141/1433/133 +f 883/1430/133 884/1429/133 1143/1435/133 +f 861/1437/121 868/2025/121 882/1438/121 +f 861/1437/121 883/1439/121 1142/1440/121 +f 867/1442/105 885/2024/105 882/1428/105 +f 859/1414/121 866/2026/121 876/1444/121 +f 860/1446/122 884/1464/122 885/1447/122 +f 871/1449/105 877/2023/105 876/1422/105 +f 864/1451/122 874/1468/122 877/1452/122 +f 858/1454/121 887/1458/121 1144/1455/121 +f 858/1454/121 865/2027/121 886/1457/121 +f 672/1459/105 873/1421/105 886/1420/105 +f 1137/1461/133 1144/2028/133 887/1462/133 +f 1135/1463/122 1143/2029/122 884/1464/122 +f 1133/1465/122 1141/2030/122 880/1466/122 +f 1131/1467/122 1139/2031/122 874/1468/122 +f 1130/1469/133 1129/2032/133 665/1470/133 +f 1128/1471/122 1137/2033/122 872/1472/122 +f 665/1473/121 1129/2034/121 1127/1152/121 +f 671/1148/120 1125/1149/120 1126/1156/123 +f 1120/1140/116 898/2035/116 899/1474/115 +f 1121/1141/115 899/1474/115 900/1475/117 +f 1122/1143/117 900/1475/117 901/1476/118 +f 1123/1145/118 901/1476/118 902/1477/119 +f 1124/1147/119 902/1477/119 903/1478/120 +f 905/1479/121 898/2036/121 1120/1150/121 +f 895/1480/122 913/2037/122 906/1481/122 +f 1126/1156/123 904/1716/124 896/1483/122 +f 904/2038/149 894/1486/149 1097/1485/149 +f 894/1486/149 895/1500/149 1101/2039/149 +f 1099/1484/149 894/1486/149 1100/2040/149 +f 895/1500/149 905/1499/149 1098/2041/149 +f 1098/2041/149 1103/2042/149 895/1500/149 +f 1103/2042/149 1102/2043/149 895/1500/149 +f 1101/2039/149 1100/2040/149 894/1486/149 +f 1102/2043/149 1101/2039/149 895/1500/149 +f 888/1487/149 893/1491/149 899/1488/149 +f 892/1490/149 900/1493/149 899/1488/149 +f 891/1492/149 901/1495/149 900/1493/149 +f 891/1492/149 890/1497/149 902/1494/149 +f 889/1496/149 903/1498/149 902/1494/149 +f 894/1486/149 904/2038/149 903/1498/149 +f 888/1487/149 898/1489/149 905/1499/149 +f 906/2044/149 913/1503/149 907/1502/149 +f 913/1503/149 912/2045/149 910/2046/149 +f 912/2045/149 911/2047/149 910/2046/149 +f 910/2046/149 909/2048/149 913/1503/149 +f 909/2048/149 908/1501/149 913/1503/149 +f 889/1504/126 911/1516/126 912/1505/125 +f 891/1507/128 909/1517/128 910/1508/127 +f 893/1510/130 907/1519/130 908/1511/129 +f 894/1513/131 912/2049/131 913/1514/131 +f 890/1509/127 910/1508/127 911/1516/126 +f 892/1512/129 908/1511/129 909/1517/128 +f 888/1518/132 906/2050/132 907/1519/130 +f 920/1520/131 915/2051/131 914/1521/131 +f 917/1523/122 915/2052/122 920/1524/122 +f 924/1526/149 921/1535/149 918/1527/149 +f 917/1529/133 925/1532/133 923/1530/133 +f 922/1528/150 923/1530/150 925/1532/150 +f 923/1533/151 922/1528/151 918/1527/151 +f 920/1524/152 921/1535/152 924/1526/152 +f 919/1522/153 918/1527/153 921/1535/153 +f 923/1533/121 919/1534/121 914/1536/121 +f 937/1538/131 934/1545/131 926/1539/131 +f 935/1541/133 929/2053/133 933/1542/133 +f 933/1542/154 931/1544/154 937/1538/155 +f 931/1544/131 927/2054/131 934/1545/131 +f 932/1546/121 930/1540/121 926/1547/121 +f 929/1549/122 927/2055/122 931/1544/122 +f 936/1543/155 937/1538/155 930/1540/149 +f 935/1541/133 936/1543/133 932/1546/133 +f 949/1551/131 946/1558/131 938/1552/131 +f 947/1554/133 941/2056/133 945/1555/133 +f 945/1555/154 943/1557/154 949/1551/155 +f 943/1557/131 939/2057/131 946/1558/131 +f 944/1559/121 942/1553/121 938/1560/121 +f 941/1562/122 939/2058/122 943/1557/122 +f 948/1556/155 949/1551/155 942/1553/149 +f 947/1554/133 948/1556/133 944/1559/133 +f 953/1564/133 958/1576/133 959/1565/133 +f 954/1567/133 964/1582/133 965/1568/133 +f 961/1570/131 951/2059/131 950/1571/131 +f 959/1565/121 960/1572/121 950/1573/121 +f 953/1575/122 951/2060/122 961/1570/122 +f 956/1577/149 959/1565/149 958/1576/149 +f 956/1577/149 954/1580/149 960/1572/149 +f 955/1579/149 957/1578/149 958/1576/149 +f 955/1579/149 961/1570/149 960/1572/149 +f 962/1581/149 965/1568/149 964/1582/149 +f 956/1584/122 963/1583/122 964/1582/122 +f 955/1586/121 965/1568/121 962/1581/121 +f 957/1588/131 962/1581/131 963/1583/131 +f 969/1590/122 967/2061/122 973/1591/122 +f 977/1593/149 972/2062/149 971/1594/149 +f 975/1596/151 974/1595/151 971/1594/151 +f 973/1591/152 972/2062/152 977/1593/152 +f 975/1596/121 970/1597/121 966/1598/121 +f 981/1600/122 979/2063/122 985/1601/122 +f 989/1603/149 984/2064/149 983/1604/149 +f 987/1606/151 986/1605/151 983/1604/151 +f 985/1601/152 984/2064/152 989/1603/152 +f 987/1606/121 982/1607/121 978/1608/121 +f 993/1610/122 991/2065/122 997/1611/122 +f 1001/1613/149 996/2066/149 995/1614/149 +f 999/1616/151 998/1615/151 995/1614/151 +f 997/1611/152 996/2066/152 1001/1613/152 +f 999/1616/121 994/1617/121 990/1618/121 +f 1005/1620/122 1003/2067/122 1009/1621/122 +f 1013/1623/149 1008/2068/149 1007/1624/149 +f 1011/1626/151 1010/1625/151 1007/1624/151 +f 1009/1621/152 1008/2068/152 1013/1623/152 +f 1011/1626/121 1006/1627/121 1002/1628/121 +f 1017/1630/122 1015/2069/122 1021/1631/122 +f 1025/1633/149 1020/2070/149 1019/1634/149 +f 1023/1636/151 1022/1635/151 1019/1634/151 +f 1021/1631/152 1020/2070/152 1025/1633/152 +f 1023/1636/121 1018/1637/121 1014/1638/121 +f 1029/1640/122 1027/2071/122 1033/1641/122 +f 1037/1643/149 1032/2072/149 1031/1644/149 +f 1035/1646/151 1034/1645/151 1031/1644/151 +f 1033/1641/152 1032/2072/152 1037/1643/152 +f 1035/1646/121 1030/1647/121 1026/1648/121 +f 1041/1650/122 1039/2073/122 1045/1651/122 +f 1049/1653/149 1044/2074/149 1043/1654/149 +f 1047/1656/151 1046/1655/151 1043/1654/151 +f 1045/1651/152 1044/2074/152 1049/1653/152 +f 1047/1656/121 1042/1657/121 1038/1658/121 +f 1051/1660/121 1053/1663/144 1052/1661/144 +f 1053/1663/144 1055/1665/145 1054/1664/145 +f 1055/1665/145 1057/1667/146 1056/1666/146 +f 1057/1667/146 1059/1669/147 1058/1668/147 +f 1059/1669/147 1061/1692/122 1060/1670/122 +f 1062/1671/131 1070/1681/131 1072/1672/131 +f 1055/1675/133 1053/2075/133 1051/2076/133 +f 1051/2076/133 1065/1677/133 1055/1675/133 +f 1065/1677/133 1063/1676/133 1055/1675/133 +f 1063/1676/133 1061/1691/133 1059/2077/133 +f 1059/2077/133 1057/1674/133 1063/1676/133 +f 1065/1677/133 1051/2076/133 1067/1678/133 +f 1062/1671/131 1060/1683/131 1069/1680/131 +f 1064/1673/131 1050/1696/131 1052/2078/131 +f 1052/2078/131 1054/2079/131 1064/1673/131 +f 1054/2079/131 1056/1682/131 1064/1673/131 +f 1056/1682/131 1058/2080/131 1060/1683/131 +f 1060/1683/131 1062/1671/131 1064/1673/131 +f 1081/1684/141 1089/2081/141 1084/1685/140 +f 1082/2082/133 1084/2083/133 1089/1687/133 +f 1089/1687/133 1088/2084/133 1087/1688/133 +f 1087/1688/133 1086/2085/133 1085/1689/133 +f 1085/1689/133 1083/2086/133 1082/2082/133 +f 1082/2082/133 1089/1687/133 1085/1689/133 +f 1063/1676/133 1071/1697/133 1068/1690/133 +f 1061/1692/122 1068/2087/122 1069/1693/122 +f 1050/1662/121 1066/2088/121 1067/1694/121 +f 1064/1673/131 1072/1672/131 1066/1695/131 +f 1065/1677/133 1073/1679/133 1071/1697/133 +f 1087/1698/143 1088/1707/142 1080/1699/142 +f 1085/1701/146 1086/1709/147 1078/1702/147 +f 1082/1704/144 1083/1710/145 1076/1705/145 +f 1088/1707/142 1089/2089/141 1081/1708/141 +f 1086/1709/147 1087/1698/143 1079/1700/143 +f 1084/1685/140 1082/1704/144 1075/1706/144 +f 1083/1710/145 1085/1701/146 1077/1703/146 +f 905/1711/156 897/1770/156 1091/1712/156 +f 1140/1390/121 1111/2090/121 1095/1714/121 +f 1105/1715/122 1104/1771/122 896/1483/122 +f 1095/1717/156 1102/2091/156 1103/1718/156 +f 1093/1720/156 1100/2092/156 1101/1721/156 +f 1113/1723/122 1112/1768/122 1094/1724/122 +f 1090/1726/156 1097/2093/156 1099/1727/156 +f 1132/1405/133 1095/1717/133 1096/1719/133 +f 1110/1729/149 1113/1742/149 1101/1730/149 +f 1134/1410/133 1093/1720/133 1094/1722/133 +f 1136/1412/133 1090/1726/133 1092/1728/133 +f 1138/1415/121 1107/2094/121 1091/1732/121 +f 1095/1714/121 1111/2090/121 1110/1733/121 +f 1118/1735/156 1119/1766/156 1104/1736/156 +f 1106/1738/156 1109/2095/156 1108/1739/156 +f 1111/1741/156 1112/2096/156 1113/1742/156 +f 1116/1743/156 1117/2097/156 1114/1744/156 +f 1139/1431/133 1106/1738/133 1107/1740/133 +f 1141/1433/133 1112/2096/133 1111/1741/133 +f 1143/1435/133 1116/1743/133 1115/1745/133 +f 1093/1746/121 1115/2098/121 1114/1747/121 +f 1142/1440/121 1115/2098/121 1093/1746/121 +f 1114/1744/149 1117/2097/149 1099/1749/149 +f 1091/1732/121 1107/2094/121 1108/1751/121 +f 1117/1753/122 1116/1767/122 1092/1754/122 +f 1108/1739/149 1109/2095/149 1103/1756/149 +f 1109/1758/122 1106/1769/122 1096/1759/122 +f 1144/1455/121 1119/2099/121 1090/1761/121 +f 1090/1761/121 1119/2099/121 1118/1762/121 +f 1118/1735/149 1105/1737/149 904/1764/149 +f 1119/1766/133 1144/2028/133 1137/1461/133 +f 1116/1767/122 1143/2029/122 1135/1463/122 +f 1112/1768/122 1141/2030/122 1133/1465/122 +f 1106/1769/122 1139/2031/122 1131/1467/122 +f 897/1770/133 1129/2032/133 1130/1469/133 +f 1104/1771/122 1137/2033/122 1128/1471/122 +f 1127/1152/121 1129/2034/121 897/1772/121 +f 1126/1156/123 1125/1149/120 903/1478/120 +f 1146/1773/157 1148/1776/134 1147/1774/134 +f 1148/1776/134 1150/1778/105 1149/1777/105 +f 1150/1778/105 1152/1780/137 1151/1779/137 +f 1152/1780/137 1154/2100/158 1153/1781/158 +f 1153/1784/122 1145/2101/122 1147/1782/122 +f 1147/1782/122 1149/2102/122 1151/1783/122 +f 1150/2103/121 1148/2104/121 1152/1787/121 +f 1148/2104/121 1146/1785/121 1152/1787/121 +f 1157/1788/122 1158/1794/136 1155/1789/136 +f 1155/1791/133 1165/1804/133 1173/1792/133 +f 1158/1794/136 1159/1796/105 1165/1795/105 +f 1159/1796/105 1160/1801/135 1166/1797/135 +f 1168/1798/133 1169/1840/133 1182/1799/133 +f 1160/1801/135 1161/1805/121 1167/1802/121 +f 1166/1803/133 1176/1839/133 1173/1792/133 +f 1161/1805/121 1162/1809/151 1168/1806/151 +f 1156/1807/133 1155/1791/133 1172/1793/133 +f 1162/1809/151 1163/2105/149 1169/1810/149 +f 1163/1811/149 1164/1814/152 1170/1812/152 +f 1164/1814/152 1157/1788/122 1156/1790/122 +f 1171/1815/122 1172/1818/136 1175/1816/136 +f 1172/1818/136 1173/1820/105 1177/1819/105 +f 1173/1820/105 1176/1822/135 1179/1821/135 +f 1176/1822/135 1178/1824/121 1181/1823/121 +f 1178/1824/121 1180/1826/151 1183/1825/151 +f 1180/1826/151 1182/2106/149 1185/1827/149 +f 1184/1828/152 1171/1815/122 1174/1817/122 +f 1182/1830/149 1184/1828/152 1186/1829/152 +f 1167/1832/133 1168/1798/133 1180/1800/133 +f 1156/1807/133 1171/1808/133 1184/1834/133 +f 1186/1837/131 1174/2107/131 1179/1838/131 +f 1174/2107/131 1175/2108/131 1179/1838/131 +f 1175/2108/131 1177/2109/131 1179/1838/131 +f 1179/1838/131 1181/2110/131 1183/2111/131 +f 1183/2111/131 1185/1836/131 1179/1838/131 +f 1167/1832/133 1178/1833/133 1176/1839/133 +f 1170/1835/133 1184/1834/133 1182/1799/133 +f 1234/1843/133 1227/2112/133 1232/1841/133 +f 1227/2112/133 1228/2113/133 1232/1841/133 +f 1228/2113/133 1229/2114/133 1232/1841/133 +f 1229/2114/133 1230/2115/133 1232/1841/133 +f 1230/2115/133 1231/2116/133 1232/1841/133 +f 1235/1844/159 1236/1858/160 1234/1845/160 +f 1238/1847/161 1239/1869/161 1240/1848/161 +f 1235/1850/131 1239/2117/131 1238/1851/131 +f 1246/1854/131 1242/2118/131 1241/1852/131 +f 1242/2118/131 1243/2119/131 1241/1852/131 +f 1243/2119/131 1236/2120/131 1241/1852/131 +f 1236/2120/131 1235/1850/131 1241/1852/131 +f 1241/1852/131 1244/2121/185 1245/1853/131 +f 1242/1855/162 1246/1867/162 1229/1856/162 +f 1236/1858/160 1243/1865/163 1227/1859/163 +f 1245/1860/164 1244/1868/164 1231/1861/164 +f 1241/1863/165 1238/1847/165 1237/1849/165 +f 1243/1865/166 1242/2122/206 1228/1866/166 +f 1246/1867/167 1245/1860/167 1230/1862/167 +f 1244/1868/168 1241/1863/168 1232/1864/168 +f 1233/1846/159 1240/1848/169 1239/1869/169 +f 1233/1842/133 1232/1841/133 1237/1870/133 +f 1254/1874/133 1247/2123/133 1252/1872/133 +f 1247/2123/133 1248/2124/133 1252/1872/133 +f 1248/2124/133 1249/2125/133 1252/1872/133 +f 1249/2125/133 1250/2126/133 1252/1872/133 +f 1250/2126/133 1251/2127/133 1252/1872/133 +f 1255/1875/170 1256/1889/171 1254/1876/171 +f 1258/1878/172 1259/1900/172 1260/1879/172 +f 1255/1881/131 1259/2128/131 1258/1882/131 +f 1266/1885/131 1262/2129/131 1261/1883/131 +f 1262/2129/131 1263/2130/131 1261/1883/131 +f 1263/2130/131 1256/2131/131 1261/1883/131 +f 1256/2131/131 1255/1881/131 1261/1883/131 +f 1261/1883/131 1264/2132/131 1265/1884/131 +f 1262/1886/173 1266/1898/173 1249/1887/173 +f 1256/1889/171 1263/1896/174 1247/1890/174 +f 1265/1891/175 1264/1899/175 1251/1892/175 +f 1261/1894/176 1258/1878/176 1257/1880/176 +f 1263/1896/177 1262/2133/177 1248/1897/177 +f 1266/1898/178 1265/1891/178 1250/1893/178 +f 1264/1899/179 1261/1894/179 1252/1895/179 +f 1255/1875/170 1253/1877/170 1260/1879/180 +f 1253/1873/133 1252/1872/133 1257/1901/133 +f 1274/1905/133 1267/2134/133 1272/1903/133 +f 1267/2134/133 1268/2135/133 1272/1903/133 +f 1268/2135/133 1269/2136/133 1272/1903/133 +f 1269/2136/133 1270/2137/133 1272/1903/133 +f 1270/2137/133 1271/2138/133 1272/1903/133 +f 1275/1906/182 1276/1920/183 1274/1907/183 +f 1278/1909/184 1279/1931/184 1280/1910/184 +f 1275/1912/185 1279/2139/131 1278/1913/131 +f 1286/1916/131 1282/2140/131 1281/1914/131 +f 1282/2140/131 1283/2141/131 1281/1914/131 +f 1283/2141/131 1276/2142/131 1281/1914/131 +f 1276/2142/131 1275/1912/185 1281/1914/131 +f 1281/1914/131 1284/2143/207 1285/1915/131 +f 1282/1917/186 1286/1929/186 1269/1918/186 +f 1276/1920/183 1283/2144/187 1267/1921/187 +f 1285/1922/188 1284/1930/188 1271/1923/188 +f 1281/1925/189 1278/1909/189 1277/1911/189 +f 1267/1921/190 1283/2144/190 1282/1927/190 +f 1286/1929/191 1285/1922/191 1270/1924/191 +f 1284/1930/192 1281/1925/192 1272/1926/193 +f 1273/1908/182 1280/1910/194 1279/1931/194 +f 1273/1904/181 1272/1903/133 1277/1932/133 +f 1294/1936/133 1287/2145/133 1292/1934/133 +f 1287/2145/133 1288/2146/133 1292/1934/133 +f 1288/2146/133 1289/2147/133 1292/1934/133 +f 1289/2147/133 1290/2148/133 1292/1934/133 +f 1290/2148/133 1291/2149/133 1292/1934/133 +f 1295/1937/195 1296/1951/196 1294/1938/196 +f 1298/1940/197 1299/1961/197 1300/1941/197 +f 1295/1943/131 1299/2150/131 1298/1944/131 +f 1306/1947/131 1302/2151/131 1301/1945/131 +f 1302/2151/131 1303/2152/131 1301/1945/131 +f 1303/2152/131 1296/2153/131 1301/1945/131 +f 1296/2153/131 1295/1943/131 1301/1945/131 +f 1301/1945/131 1304/2154/131 1305/1946/131 +f 1302/1948/198 1306/1960/198 1289/1949/198 +f 1296/1951/196 1303/1958/199 1287/1952/199 +f 1290/1953/200 1305/2155/200 1304/1954/200 +f 1301/1956/201 1298/1940/201 1297/1942/201 +f 1303/1958/202 1302/2156/202 1288/1959/202 +f 1306/1960/203 1305/2155/203 1290/1953/203 +f 1304/1954/204 1301/1956/204 1292/1957/204 +f 1293/1939/195 1300/1941/205 1299/1961/205 +f 1293/1935/133 1292/1934/133 1297/1962/133 +o frame +v 0.500000 0.000000 -3.500000 +v 0.500000 0.000000 3.500000 +v 0.500000 6.000000 3.500000 +v 0.500000 5.999982 -3.499982 +v 0.299220 0.054715 -3.299312 +v 0.299220 0.054715 3.299312 +v 0.299220 2.500000 -3.299312 +v 0.299220 3.519543 -3.137832 +v 0.299220 4.439287 -2.669199 +v 0.299220 5.169199 -1.939287 +v 0.299220 5.637832 -1.019543 +v 0.299220 5.799312 0.000000 +v 0.299220 5.637832 1.019543 +v 0.299220 5.169199 1.939287 +v 0.299220 4.439287 2.669199 +v 0.299220 3.519543 3.137832 +v 0.299220 2.500000 3.299312 +v 0.299220 0.054715 -3.440433 +v 0.299220 0.054715 3.440433 +v 0.299220 2.511072 -3.439998 +v 0.299220 3.563152 -3.439998 +v 0.299220 4.522236 -3.439998 +v 0.299220 5.283369 -3.439998 +v 0.299220 5.772047 -3.439998 +v 0.299220 5.940434 0.000000 +v 0.299220 5.772047 3.439998 +v 0.299220 5.283369 3.439998 +v 0.299220 4.522236 3.439998 +v 0.299220 3.563152 3.439998 +v 0.299220 2.511072 3.439998 +v 0.500000 0.000000 3.299312 +v 0.500000 0.000000 -3.299311 +v 0.509942 2.575847 3.433846 +v 0.500000 2.500000 3.299312 +v 0.500000 5.799312 0.000000 +v 0.500000 5.999991 0.000009 +v 0.500000 3.519543 3.137832 +v 0.509942 3.693161 3.215357 +v 0.500000 4.439287 2.669199 +v 0.509942 4.591897 2.756523 +v 0.500000 5.169199 1.939287 +v 0.509942 5.306234 2.042186 +v 0.500000 5.637832 1.019543 +v 0.509942 5.777302 1.066608 +v 0.500000 2.500000 -3.299312 +v 0.509942 2.562243 -3.433324 +v 0.509942 5.779282 -1.054175 +v 0.500000 5.637832 -1.019543 +v 0.500000 5.169199 -1.939287 +v 0.509942 5.306233 -2.042186 +v 0.500000 4.439287 -2.669199 +v 0.509942 4.591897 -2.756523 +v 0.500000 3.519543 -3.137832 +v 0.509942 3.637241 -3.226135 +v 0.500000 2.575847 3.500000 +v 0.500000 0.000000 3.433846 +v 0.500000 0.000000 -3.399656 +v -0.500000 0.000000 -3.500000 +v -0.500000 0.000000 3.500000 +v -0.500000 6.000000 3.500000 +v -0.500000 5.999982 -3.499982 +v -0.299220 0.054715 -3.299312 +v -0.299220 0.054715 3.299312 +v -0.299220 2.500000 -3.299312 +v -0.299220 3.519543 -3.137832 +v -0.299220 4.439287 -2.669199 +v -0.299220 5.169199 -1.939287 +v -0.299220 5.637832 -1.019543 +v -0.299220 5.799312 0.000000 +v -0.299220 5.637832 1.019543 +v -0.299220 5.169199 1.939287 +v -0.299220 4.439287 2.669199 +v -0.299220 3.519543 3.137832 +v -0.299220 2.500000 3.299312 +v -0.299220 0.054715 -3.440433 +v -0.299220 0.054715 3.440433 +v -0.299220 2.511072 -3.439998 +v -0.299220 3.563152 -3.439998 +v -0.299220 4.522236 -3.439998 +v -0.299220 5.283369 -3.439998 +v -0.299220 5.772047 -3.439998 +v -0.299220 5.940434 0.000000 +v -0.299220 5.772047 3.439998 +v -0.299220 5.283369 3.439998 +v -0.299220 4.522236 3.439998 +v -0.299220 3.563152 3.439998 +v -0.299220 2.511072 3.439998 +v -0.500000 0.000000 3.299312 +v -0.500000 0.000000 -3.299311 +v -0.509942 2.575847 3.433846 +v -0.500000 2.500000 3.299312 +v -0.500000 5.799312 0.000000 +v -0.500000 5.999991 0.000009 +v -0.500000 3.519543 3.137832 +v -0.509942 3.693161 3.215357 +v -0.500000 4.439287 2.669199 +v -0.509942 4.591897 2.756523 +v -0.500000 5.169199 1.939287 +v -0.509942 5.306234 2.042186 +v -0.500000 5.637832 1.019543 +v -0.509942 5.777302 1.066608 +v -0.500000 2.500000 -3.299312 +v -0.509942 2.562243 -3.433324 +v -0.509942 5.779282 -1.054175 +v -0.500000 5.637832 -1.019543 +v -0.500000 5.169199 -1.939287 +v -0.509942 5.306233 -2.042186 +v -0.500000 4.439287 -2.669199 +v -0.509942 4.591897 -2.756523 +v -0.500000 3.519543 -3.137832 +v -0.509942 3.637241 -3.226135 +v -0.500000 2.575847 3.500000 +v -0.500000 0.000000 3.433846 +v -0.500000 0.000000 -3.399656 +v 0.000000 0.000000 -3.500000 +v 0.000000 0.000000 3.500000 +v 0.000000 6.000000 3.500000 +v 0.000000 5.999982 -3.499982 +v 0.000000 0.054715 -3.299312 +v 0.000000 0.054715 3.299312 +v 0.000000 0.054715 -3.440433 +v 0.000000 0.054715 3.440433 +v 0.000000 2.511072 -3.439998 +v 0.000000 3.563152 -3.439998 +v 0.000000 4.522236 -3.439998 +v 0.000000 5.283369 -3.439998 +v 0.000000 5.772047 -3.439998 +v 0.000000 5.940434 0.000000 +v 0.000000 5.772047 3.439998 +v 0.000000 5.283369 3.439998 +v 0.000000 4.522236 3.439998 +v 0.000000 3.563152 3.439998 +v 0.000000 2.511072 3.439998 +vt 0.241702 0.739929 +vt 0.006709 0.759512 +vt 0.006709 0.739929 +vt 0.685390 0.273007 +vt 0.685390 0.278276 +vt 0.665807 0.280867 +vt 0.855026 0.768807 +vt 0.862890 0.728378 +vt 0.862890 0.768807 +vt 0.490115 0.143946 +vt 0.481472 0.102659 +vt 0.490145 0.006876 +vt 0.855026 0.728378 +vt 0.862890 0.632606 +vt 0.876307 0.622065 +vt 0.884171 0.717836 +vt 0.876307 0.717836 +vt 0.855026 0.930522 +vt 0.862890 0.890094 +vt 0.862890 0.930522 +vt 0.855026 0.849665 +vt 0.862890 0.809236 +vt 0.862890 0.849665 +vt 0.855026 0.890094 +vt 0.876307 0.758265 +vt 0.855026 0.809236 +vt 0.884171 0.798694 +vt 0.876307 0.839123 +vt 0.876307 0.798694 +vt 0.884171 0.758265 +vt 0.884171 0.839123 +vt 0.876307 0.879552 +vt 0.397594 0.017557 +vt 0.355501 0.009420 +vt 0.434984 0.035969 +vt 0.462955 0.063960 +vt 0.481394 0.185718 +vt 0.490145 0.281015 +vt 0.884171 0.879552 +vt 0.876307 0.919981 +vt 0.462955 0.223931 +vt 0.434983 0.251922 +vt 0.399781 0.269910 +vt 0.356032 0.278491 +vt 0.036915 0.353397 +vt 0.013305 0.294621 +vt 0.032444 0.294621 +vt 0.141455 0.558572 +vt 0.237228 0.564100 +vt 0.141022 0.564083 +vt 0.065501 0.533893 +vt 0.032442 0.564081 +vt 0.036914 0.505305 +vt 0.101525 0.306456 +vt 0.141023 0.294622 +vt 0.141456 0.300132 +vt 0.018561 0.389419 +vt 0.006709 0.429350 +vt 0.101524 0.552247 +vt 0.062252 0.564082 +vt 0.788343 0.516011 +vt 0.776624 0.557217 +vt 0.776624 0.516011 +vt 0.788343 0.478448 +vt 0.776624 0.478448 +vt 0.788343 0.448638 +vt 0.776624 0.448638 +vt 0.788343 0.429498 +vt 0.776624 0.429498 +vt 0.788343 0.294606 +vt 0.776624 0.294606 +vt 0.801760 0.429498 +vt 0.813480 0.294606 +vt 0.813480 0.429498 +vt 0.801760 0.448638 +vt 0.813480 0.448638 +vt 0.801760 0.478448 +vt 0.813480 0.478448 +vt 0.801760 0.516011 +vt 0.813480 0.516011 +vt 0.801760 0.557217 +vt 0.813480 0.557217 +vt 0.801760 0.653422 +vt 0.813480 0.653422 +vt 0.013302 0.564081 +vt 0.018560 0.469282 +vt 0.065503 0.324810 +vt 0.062254 0.294621 +vt 0.237228 0.294606 +vt 0.237228 0.300133 +vt 0.099816 0.564082 +vt 0.012236 0.429350 +vt 0.099818 0.294622 +vt 0.730396 0.270674 +vt 0.718677 0.276201 +vt 0.718677 0.270674 +vt 0.392975 0.266861 +vt 0.353056 0.273212 +vt 0.428998 0.248493 +vt 0.457578 0.219896 +vt 0.482256 0.143945 +vt 0.475920 0.183871 +vt 0.475919 0.104020 +vt 0.457578 0.067995 +vt 0.428998 0.039397 +vt 0.392978 0.021029 +vt 0.353057 0.014680 +vt 0.255157 0.010638 +vt 0.738547 0.270674 +vt 0.730396 0.012236 +vt 0.738547 0.012236 +vt 0.255142 0.278598 +vt 0.255136 0.273329 +vt 0.356034 0.281112 +vt 0.255161 0.006709 +vt 0.788343 0.653422 +vt 0.788343 0.557217 +vt 0.718677 0.012236 +vt 0.730396 0.006709 +vt 0.510060 0.788490 +vt 0.510060 0.768907 +vt 0.647140 0.768907 +vt 0.751964 0.140819 +vt 0.771547 0.006709 +vt 0.771547 0.241704 +vt 0.006709 0.720346 +vt 0.646224 0.278276 +vt 0.646224 0.273007 +vt 0.955361 0.496751 +vt 0.947497 0.456323 +vt 0.955361 0.456323 +vt 0.241689 0.143952 +vt 0.241719 0.281021 +vt 0.233046 0.185239 +vt 0.947497 0.496751 +vt 0.955361 0.592522 +vt 0.947497 0.594665 +vt 0.955361 0.610225 +vt 0.947497 0.705997 +vt 0.947497 0.608082 +vt 0.955361 0.335035 +vt 0.947497 0.294606 +vt 0.955361 0.294606 +vt 0.955361 0.415894 +vt 0.947497 0.375465 +vt 0.955361 0.375465 +vt 0.947497 0.335035 +vt 0.955361 0.746426 +vt 0.955361 0.705997 +vt 0.947497 0.415894 +vt 0.955361 0.827284 +vt 0.947497 0.786855 +vt 0.955361 0.786855 +vt 0.947497 0.746426 +vt 0.955361 0.867713 +vt 0.947497 0.827284 +vt 0.149169 0.270340 +vt 0.107075 0.278477 +vt 0.186559 0.251928 +vt 0.214530 0.223938 +vt 0.232968 0.102180 +vt 0.241719 0.006883 +vt 0.955361 0.908141 +vt 0.947497 0.867713 +vt 0.214529 0.063967 +vt 0.186557 0.035976 +vt 0.151355 0.017988 +vt 0.107605 0.009406 +vt 0.280851 0.505307 +vt 0.257240 0.564083 +vt 0.262497 0.469284 +vt 0.385392 0.300133 +vt 0.481164 0.294606 +vt 0.481164 0.300133 +vt 0.276379 0.294623 +vt 0.309438 0.324812 +vt 0.280851 0.353400 +vt 0.384959 0.564083 +vt 0.345461 0.552249 +vt 0.385392 0.558573 +vt 0.250645 0.429353 +vt 0.256172 0.429353 +vt 0.306190 0.294623 +vt 0.345461 0.306458 +vt 0.764905 0.516011 +vt 0.764905 0.478448 +vt 0.764905 0.448638 +vt 0.764905 0.429498 +vt 0.764905 0.294606 +vt 0.825199 0.429498 +vt 0.825199 0.448638 +vt 0.825199 0.478448 +vt 0.825199 0.516011 +vt 0.825199 0.557217 +vt 0.825199 0.653422 +vt 0.257240 0.294623 +vt 0.262496 0.389422 +vt 0.309438 0.533894 +vt 0.276379 0.564083 +vt 0.481164 0.564100 +vt 0.481164 0.558573 +vt 0.384958 0.294623 +vt 0.306190 0.564083 +vt 0.706958 0.270674 +vt 0.144548 0.021036 +vt 0.104629 0.014686 +vt 0.180571 0.039405 +vt 0.209152 0.068002 +vt 0.227494 0.104027 +vt 0.233830 0.143953 +vt 0.227494 0.183878 +vt 0.209152 0.219903 +vt 0.180573 0.248500 +vt 0.144552 0.266868 +vt 0.104632 0.273218 +vt 0.006731 0.277259 +vt 0.706958 0.012236 +vt 0.698807 0.270674 +vt 0.698807 0.012236 +vt 0.006715 0.009300 +vt 0.107607 0.006786 +vt 0.006735 0.281189 +vt 0.764905 0.653422 +vt 0.764905 0.557217 +vt 0.706958 0.006709 +vt 0.647140 0.808073 +vt 0.784220 0.788490 +vt 0.791130 0.006709 +vt 0.791130 0.140818 +vt 0.241702 0.759512 +vt 0.665807 0.006709 +vt 0.685390 0.014569 +vt 0.685390 0.006709 +vt 0.685390 0.010639 +vt 0.685390 0.280867 +vt 0.855026 0.630463 +vt 0.884171 0.619922 +vt 0.884171 0.919981 +vt 0.237228 0.558573 +vt 0.801760 0.294606 +vt 0.730396 0.276201 +vt 0.255152 0.014568 +vt 0.255144 0.281189 +vt 0.776624 0.653422 +vt 0.718677 0.006709 +vt 0.784220 0.768907 +vt 0.751964 0.241704 +vt 0.751964 0.006709 +vt 0.241702 0.720346 +vt 0.646224 0.006709 +vt 0.646224 0.010639 +vt 0.646224 0.014569 +vt 0.646224 0.280867 +vt 0.947497 0.908141 +vt 0.343753 0.564083 +vt 0.343753 0.294623 +vt 0.825199 0.294606 +vt 0.706958 0.276201 +vt 0.006727 0.273330 +vt 0.006709 0.014569 +vt 0.006717 0.006709 +vt 0.784220 0.808073 +vt 0.510060 0.808073 +vt 0.791130 0.241704 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.3090 -0.9511 +vn 0.0000 -0.0785 -0.9969 +vn 1.0000 0.0059 0.0000 +vn 0.9999 -0.0072 0.0088 +vn 1.0000 0.0070 -0.0070 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.0785 0.9969 +vn 0.0000 -0.9511 -0.3090 +vn 0.0000 -0.8090 -0.5878 +vn 0.0000 -0.5878 -0.8090 +vn 0.0000 -0.3090 0.9511 +vn 0.0000 -0.5878 0.8090 +vn 0.0000 -0.8090 0.5878 +vn 0.0000 -0.9511 0.3090 +vn 0.9996 -0.0118 0.0267 +vn 0.9992 -0.0037 -0.0401 +vn 0.9997 -0.0146 0.0182 +vn 0.9998 -0.0176 0.0132 +vn 0.9999 -0.0066 -0.0091 +vn 1.0000 0.0071 0.0070 +vn 0.9998 -0.0176 -0.0129 +vn 0.9997 -0.0148 -0.0183 +vn 0.9997 -0.0111 -0.0234 +vn 0.9991 -0.0049 0.0417 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -0.0001 -1.0000 +vn 0.0000 -0.9988 -0.0489 +vn 0.0000 -0.9988 0.0489 +vn 0.0000 -0.0001 1.0000 +vn 0.0000 -0.0002 1.0000 +vn 0.0883 0.9961 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.9966 -0.0205 -0.0804 +vn 0.9976 -0.0063 -0.0690 +vn 0.9980 -0.0347 -0.0530 +vn 0.9983 -0.0476 -0.0337 +vn 1.0000 -0.0054 0.0001 +vn 0.9977 -0.0641 -0.0207 +vn 0.9977 -0.0646 0.0206 +vn 0.9983 -0.0469 0.0340 +vn 0.9980 -0.0345 0.0539 +vn 0.9964 -0.0224 0.0812 +vn 0.9975 -0.0060 0.0703 +vn 1.0000 -0.0020 0.0012 +vn 0.2629 0.9648 0.0000 +vn 1.0000 -0.0001 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.9891 -0.0019 0.1474 +vn 1.0000 -0.0038 -0.0025 +vn 0.0000 -0.0002 -1.0000 +vn -1.0000 0.0059 0.0000 +vn -1.0000 0.0070 -0.0070 +vn -0.9999 -0.0072 0.0088 +vn -0.9996 -0.0118 0.0267 +vn -0.9992 -0.0037 -0.0401 +vn -0.9997 -0.0146 0.0182 +vn -0.9998 -0.0176 0.0132 +vn -0.9999 -0.0066 -0.0091 +vn -1.0000 0.0071 0.0070 +vn -0.9998 -0.0176 -0.0129 +vn -0.9997 -0.0148 -0.0183 +vn -0.9997 -0.0111 -0.0234 +vn -0.9991 -0.0049 0.0417 +vn -0.0883 0.9961 0.0000 +vn -0.9966 -0.0205 -0.0804 +vn -0.9976 -0.0063 -0.0690 +vn -0.9980 -0.0347 -0.0530 +vn -0.9983 -0.0476 -0.0337 +vn -0.9977 -0.0641 -0.0207 +vn -1.0000 -0.0054 0.0001 +vn -0.9977 -0.0646 0.0206 +vn -0.9983 -0.0469 0.0340 +vn -0.9980 -0.0345 0.0539 +vn -0.9964 -0.0224 0.0812 +vn -0.9975 -0.0060 0.0703 +vn -1.0000 -0.0020 0.0012 +vn -0.2629 0.9648 0.0000 +vn -1.0000 -0.0001 0.0000 +vn -0.9891 -0.0019 0.1474 +vn -1.0000 -0.0038 -0.0025 +s 1 +f 1424/2157/208 1307/2158/208 1421/2159/208 +f 1337/2160/209 1362/2161/209 1422/2162/209 +f 1343/2163/210 1323/2164/211 1322/2165/210 +f 1342/2166/212 1353/2167/213 1310/2168/214 +f 1340/2169/211 1312/2170/208 1323/2164/211 +f 1311/2171/215 1351/2172/216 1313/2173/216 +f 1341/2174/209 1319/2175/217 1318/2176/209 +f 1347/2177/218 1321/2178/219 1320/2179/218 +f 1349/2180/217 1320/2179/218 1319/2175/217 +f 1351/2172/216 1314/2181/220 1313/2173/216 +f 1345/2182/219 1322/2165/210 1321/2178/219 +f 1357/2183/221 1316/2184/222 1315/2185/221 +f 1359/2186/220 1315/2185/221 1314/2181/220 +f 1355/2187/222 1317/2188/223 1316/2184/222 +f 1360/2189/224 1352/2190/225 1310/2168/214 +f 1358/2191/226 1360/2189/224 1310/2168/214 +f 1356/2192/227 1358/2191/226 1310/2168/214 +f 1353/2167/213 1356/2192/227 1310/2168/214 +f 1350/2193/228 1342/2166/212 1309/2194/229 +f 1354/2195/223 1318/2196/209 1317/2188/223 +f 1348/2197/230 1350/2193/228 1309/2194/229 +f 1346/2198/231 1348/2197/230 1309/2194/229 +f 1344/2199/232 1346/2198/231 1309/2194/229 +f 1339/2200/233 1344/2199/232 1309/2194/229 +f 1316/2201/234 1330/2202/234 1329/2203/234 +f 1323/2204/234 1325/2205/234 1336/2206/234 +f 1321/2207/234 1333/2208/234 1320/2209/234 +f 1314/2210/234 1326/2211/234 1313/2212/234 +f 1317/2213/234 1331/2214/234 1330/2202/234 +f 1322/2215/234 1334/2216/234 1321/2207/234 +f 1335/2217/208 1439/2218/235 1438/2219/208 +f 1334/2220/208 1438/2219/208 1437/2221/208 +f 1333/2222/208 1437/2221/208 1436/2223/208 +f 1332/2224/208 1436/2223/208 1435/2225/208 +f 1331/2226/209 1435/2225/236 1434/2227/209 +f 1330/2228/237 1434/2229/209 1433/2230/237 +f 1329/2231/215 1433/2230/215 1432/2232/215 +f 1328/2233/215 1432/2232/215 1431/2234/215 +f 1327/2235/215 1431/2234/215 1430/2236/215 +f 1326/2237/238 1430/2236/215 1429/2238/238 +f 1324/2239/239 1429/2238/238 1427/2240/239 +f 1320/2209/234 1332/2241/234 1319/2242/234 +f 1315/2243/234 1329/2203/234 1328/2244/234 +f 1313/2212/234 1324/2245/234 1311/2246/234 +f 1322/2215/234 1336/2206/234 1335/2247/234 +f 1319/2242/234 1331/2214/234 1318/2248/234 +f 1314/2210/234 1328/2244/234 1327/2249/234 +f 1311/2250/240 1427/2251/241 1425/2252/241 +f 1343/2253/242 1339/2200/233 1340/2254/243 +f 1345/2255/244 1344/2199/232 1343/2253/242 +f 1347/2256/245 1346/2198/231 1345/2255/244 +f 1347/2256/245 1350/2193/228 1348/2197/230 +f 1341/2257/246 1350/2193/228 1349/2258/247 +f 1354/2259/248 1356/2192/227 1353/2167/213 +f 1355/2260/249 1358/2191/226 1356/2192/227 +f 1357/2261/250 1360/2189/224 1358/2191/226 +f 1359/2262/251 1352/2190/225 1360/2189/224 +f 1351/2263/252 1363/2264/253 1352/2190/225 +f 1341/2257/246 1353/2167/213 1342/2166/212 +f 1338/2265/254 1312/2266/240 1337/2267/254 +f 1340/2254/243 1362/2268/255 1337/2269/256 +f 1339/2200/233 1309/2194/229 1361/2270/257 +f 1352/2190/225 1307/2271/258 1310/2168/214 +f 1325/2272/259 1439/2218/235 1336/2273/235 +f 1426/2274/241 1325/2275/241 1312/2266/240 +f 1311/2250/240 1426/2274/241 1312/2266/240 +f 1423/2276/241 1309/2277/241 1342/2278/241 +f 1361/2279/215 1423/2280/215 1422/2281/215 +f 1364/2282/208 1424/2157/208 1421/2159/208 +f 1422/2162/209 1419/2283/209 1394/2284/209 +f 1380/2285/211 1400/2286/210 1379/2287/210 +f 1399/2288/260 1367/2289/261 1410/2290/262 +f 1397/2291/211 1369/2292/208 1394/2293/208 +f 1368/2294/215 1408/2295/216 1395/2296/215 +f 1376/2297/217 1398/2298/209 1375/2299/209 +f 1378/2300/219 1404/2301/218 1377/2302/218 +f 1377/2302/218 1406/2303/217 1376/2297/217 +f 1371/2304/220 1408/2295/216 1370/2305/216 +f 1379/2287/210 1402/2306/219 1378/2300/219 +f 1373/2307/222 1414/2308/221 1372/2309/221 +f 1372/2309/221 1416/2310/220 1371/2304/220 +f 1374/2311/223 1412/2312/222 1373/2307/222 +f 1417/2313/263 1367/2289/261 1409/2314/264 +f 1415/2315/265 1367/2289/261 1417/2313/263 +f 1413/2316/266 1367/2289/261 1415/2315/265 +f 1410/2290/262 1367/2289/261 1413/2316/266 +f 1407/2317/267 1366/2318/268 1399/2288/260 +f 1375/2319/209 1411/2320/223 1374/2311/223 +f 1405/2321/269 1366/2318/268 1407/2317/267 +f 1403/2322/270 1366/2318/268 1405/2321/269 +f 1401/2323/271 1366/2318/268 1403/2322/270 +f 1396/2324/272 1366/2318/268 1401/2323/271 +f 1373/2325/256 1387/2326/256 1374/2327/256 +f 1380/2328/256 1382/2329/256 1369/2330/256 +f 1390/2331/256 1378/2332/256 1377/2333/256 +f 1383/2334/256 1371/2335/256 1370/2336/256 +f 1374/2327/256 1388/2337/256 1375/2338/256 +f 1391/2339/256 1379/2340/256 1378/2332/256 +f 1439/2218/235 1392/2341/208 1438/2219/208 +f 1438/2219/208 1391/2342/208 1437/2221/208 +f 1437/2221/208 1390/2343/208 1436/2223/208 +f 1436/2223/208 1389/2344/208 1435/2225/208 +f 1435/2225/236 1388/2345/209 1434/2227/209 +f 1434/2229/209 1387/2346/237 1433/2230/237 +f 1433/2230/215 1386/2347/215 1432/2232/215 +f 1432/2232/215 1385/2348/215 1431/2234/215 +f 1431/2234/215 1384/2349/215 1430/2236/215 +f 1430/2236/215 1383/2350/238 1429/2238/238 +f 1429/2238/238 1381/2351/239 1427/2240/239 +f 1389/2352/256 1377/2333/256 1376/2353/256 +f 1372/2354/256 1386/2355/256 1373/2325/256 +f 1381/2356/256 1370/2336/256 1368/2357/256 +f 1379/2340/256 1393/2358/256 1380/2328/256 +f 1388/2337/256 1376/2353/256 1375/2338/256 +f 1371/2335/256 1385/2359/256 1372/2354/256 +f 1427/2251/241 1368/2360/273 1425/2252/241 +f 1396/2324/272 1400/2361/274 1397/2362/275 +f 1401/2323/271 1402/2363/276 1400/2361/274 +f 1403/2322/270 1404/2364/277 1402/2363/276 +f 1404/2364/277 1407/2317/267 1406/2365/278 +f 1407/2317/267 1398/2366/279 1406/2365/278 +f 1411/2367/280 1413/2316/266 1412/2368/281 +f 1412/2368/281 1415/2315/265 1414/2369/282 +f 1414/2369/282 1417/2313/263 1416/2370/283 +f 1416/2370/283 1409/2314/264 1408/2371/284 +f 1420/2372/285 1408/2371/284 1409/2314/264 +f 1398/2366/279 1410/2290/262 1411/2367/280 +f 1369/2373/273 1395/2374/286 1394/2375/286 +f 1397/2362/275 1419/2376/287 1396/2324/272 +f 1418/2377/288 1396/2324/272 1419/2376/287 +f 1409/2314/264 1364/2378/289 1420/2372/285 +f 1439/2218/235 1382/2379/259 1393/2380/235 +f 1382/2381/241 1426/2274/241 1369/2373/273 +f 1426/2274/241 1368/2360/273 1369/2373/273 +f 1399/2382/241 1423/2276/241 1424/2383/241 +f 1423/2280/215 1366/2384/215 1418/2385/215 +f 1424/2157/208 1310/2386/208 1307/2158/208 +f 1422/2162/209 1421/2387/209 1338/2388/209 +f 1421/2387/209 1307/2389/209 1363/2390/209 +f 1363/2390/209 1338/2388/209 1421/2387/209 +f 1338/2388/209 1337/2160/209 1422/2162/209 +f 1362/2161/209 1308/2391/209 1422/2162/209 +f 1343/2163/210 1340/2169/211 1323/2164/211 +f 1340/2169/211 1337/2392/208 1312/2170/208 +f 1311/2171/215 1338/2393/215 1351/2172/216 +f 1341/2174/209 1349/2180/217 1319/2175/217 +f 1347/2177/218 1345/2182/219 1321/2178/219 +f 1349/2180/217 1347/2177/218 1320/2179/218 +f 1351/2172/216 1359/2186/220 1314/2181/220 +f 1345/2182/219 1343/2163/210 1322/2165/210 +f 1357/2183/221 1355/2187/222 1316/2184/222 +f 1359/2186/220 1357/2183/221 1315/2185/221 +f 1355/2187/222 1354/2195/223 1317/2188/223 +f 1354/2195/223 1341/2394/209 1318/2196/209 +f 1316/2201/234 1317/2213/234 1330/2202/234 +f 1323/2204/234 1312/2395/234 1325/2205/234 +f 1321/2207/234 1334/2216/234 1333/2208/234 +f 1314/2210/234 1327/2249/234 1326/2211/234 +f 1317/2213/234 1318/2248/234 1331/2214/234 +f 1322/2215/234 1335/2247/234 1334/2216/234 +f 1335/2217/208 1336/2273/235 1439/2218/235 +f 1334/2220/208 1335/2217/208 1438/2219/208 +f 1333/2222/208 1334/2220/208 1437/2221/208 +f 1332/2224/208 1333/2222/208 1436/2223/208 +f 1331/2226/209 1332/2224/236 1435/2225/236 +f 1330/2228/237 1331/2396/209 1434/2229/209 +f 1329/2231/215 1330/2228/215 1433/2230/215 +f 1328/2233/215 1329/2231/215 1432/2232/215 +f 1327/2235/215 1328/2233/215 1431/2234/215 +f 1326/2237/238 1327/2235/215 1430/2236/215 +f 1324/2239/239 1326/2237/238 1429/2238/238 +f 1320/2209/234 1333/2208/234 1332/2241/234 +f 1315/2243/234 1316/2201/234 1329/2203/234 +f 1313/2212/234 1326/2211/234 1324/2245/234 +f 1322/2215/234 1323/2204/234 1336/2206/234 +f 1319/2242/234 1332/2241/234 1331/2214/234 +f 1314/2210/234 1315/2243/234 1328/2244/234 +f 1311/2250/240 1324/2397/241 1427/2251/241 +f 1343/2253/242 1344/2199/232 1339/2200/233 +f 1345/2255/244 1346/2198/231 1344/2199/232 +f 1347/2256/245 1348/2197/230 1346/2198/231 +f 1347/2256/245 1349/2258/247 1350/2193/228 +f 1341/2257/246 1342/2166/212 1350/2193/228 +f 1354/2259/248 1355/2260/249 1356/2192/227 +f 1355/2260/249 1357/2261/250 1358/2191/226 +f 1357/2261/250 1359/2262/251 1360/2189/224 +f 1359/2262/251 1351/2263/252 1352/2190/225 +f 1351/2263/252 1338/2398/256 1363/2264/253 +f 1341/2257/246 1354/2259/248 1353/2167/213 +f 1338/2265/254 1311/2250/240 1312/2266/240 +f 1340/2254/243 1339/2200/233 1362/2268/255 +f 1361/2270/257 1308/2399/256 1362/2268/255 +f 1362/2268/255 1339/2200/233 1361/2270/257 +f 1352/2190/225 1363/2264/253 1307/2271/258 +f 1325/2272/259 1428/2400/259 1439/2218/235 +f 1426/2274/241 1428/2401/241 1325/2275/241 +f 1311/2250/240 1425/2252/241 1426/2274/241 +f 1342/2278/241 1310/2402/241 1424/2383/241 +f 1424/2383/241 1423/2276/241 1342/2278/241 +f 1422/2281/215 1308/2403/215 1361/2279/215 +f 1361/2279/215 1309/2404/215 1423/2280/215 +f 1364/2282/208 1367/2405/208 1424/2157/208 +f 1364/2406/209 1421/2387/209 1420/2407/209 +f 1421/2387/209 1422/2162/209 1395/2408/209 +f 1420/2407/209 1421/2387/209 1395/2408/209 +f 1422/2162/209 1365/2409/209 1419/2283/209 +f 1394/2284/209 1395/2408/209 1422/2162/209 +f 1380/2285/211 1397/2291/211 1400/2286/210 +f 1397/2291/211 1380/2285/211 1369/2292/208 +f 1368/2294/215 1370/2305/216 1408/2295/216 +f 1376/2297/217 1406/2303/217 1398/2298/209 +f 1378/2300/219 1402/2306/219 1404/2301/218 +f 1377/2302/218 1404/2301/218 1406/2303/217 +f 1371/2304/220 1416/2310/220 1408/2295/216 +f 1379/2287/210 1400/2286/210 1402/2306/219 +f 1373/2307/222 1412/2312/222 1414/2308/221 +f 1372/2309/221 1414/2308/221 1416/2310/220 +f 1374/2311/223 1411/2320/223 1412/2312/222 +f 1375/2319/209 1398/2410/209 1411/2320/223 +f 1373/2325/256 1386/2355/256 1387/2326/256 +f 1380/2328/256 1393/2358/256 1382/2329/256 +f 1390/2331/256 1391/2339/256 1378/2332/256 +f 1383/2334/256 1384/2411/256 1371/2335/256 +f 1374/2327/256 1387/2326/256 1388/2337/256 +f 1391/2339/256 1392/2412/256 1379/2340/256 +f 1439/2218/235 1393/2380/235 1392/2341/208 +f 1438/2219/208 1392/2341/208 1391/2342/208 +f 1437/2221/208 1391/2342/208 1390/2343/208 +f 1436/2223/208 1390/2343/208 1389/2344/208 +f 1435/2225/236 1389/2344/236 1388/2345/209 +f 1434/2229/209 1388/2413/209 1387/2346/237 +f 1433/2230/215 1387/2346/215 1386/2347/215 +f 1432/2232/215 1386/2347/215 1385/2348/215 +f 1431/2234/215 1385/2348/215 1384/2349/215 +f 1430/2236/215 1384/2349/215 1383/2350/238 +f 1429/2238/238 1383/2350/238 1381/2351/239 +f 1389/2352/256 1390/2331/256 1377/2333/256 +f 1372/2354/256 1385/2359/256 1386/2355/256 +f 1381/2356/256 1383/2334/256 1370/2336/256 +f 1379/2340/256 1392/2412/256 1393/2358/256 +f 1388/2337/256 1389/2352/256 1376/2353/256 +f 1371/2335/256 1384/2411/256 1385/2359/256 +f 1427/2251/241 1381/2414/241 1368/2360/273 +f 1396/2324/272 1401/2323/271 1400/2361/274 +f 1401/2323/271 1403/2322/270 1402/2363/276 +f 1403/2322/270 1405/2321/269 1404/2364/277 +f 1404/2364/277 1405/2321/269 1407/2317/267 +f 1407/2317/267 1399/2288/260 1398/2366/279 +f 1411/2367/280 1410/2290/262 1413/2316/266 +f 1412/2368/281 1413/2316/266 1415/2315/265 +f 1414/2369/282 1415/2315/265 1417/2313/263 +f 1416/2370/283 1417/2313/263 1409/2314/264 +f 1420/2372/285 1395/2415/234 1408/2371/284 +f 1398/2366/279 1399/2288/260 1410/2290/262 +f 1369/2373/273 1368/2360/273 1395/2374/286 +f 1397/2362/275 1394/2416/234 1419/2376/287 +f 1419/2376/287 1365/2417/234 1418/2377/288 +f 1418/2377/288 1366/2318/268 1396/2324/272 +f 1409/2314/264 1367/2289/261 1364/2378/289 +f 1439/2218/235 1428/2400/259 1382/2379/259 +f 1382/2381/241 1428/2401/241 1426/2274/241 +f 1426/2274/241 1425/2252/241 1368/2360/273 +f 1424/2383/241 1367/2418/241 1399/2382/241 +f 1399/2382/241 1366/2419/241 1423/2276/241 +f 1418/2385/215 1365/2420/215 1422/2281/215 +f 1422/2281/215 1423/2280/215 1418/2385/215 diff --git a/src/main/resources/assets/hbm/models/doors/qe_containment.obj b/src/main/resources/assets/hbm/models/doors/qe_containment.obj new file mode 100644 index 000000000..d3c72a634 --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/qe_containment.obj @@ -0,0 +1,1601 @@ +# Blender v2.92.0 OBJ File: 'qe_lockdown_doorblend.blend' +# www.blender.org +o door +v 0.125956 2.428429 1.096965 +v 0.125956 0.142335 1.385726 +v 0.125956 0.142335 -1.385726 +v 0.125956 2.128096 1.397299 +v 0.125956 2.128096 -1.397299 +v 0.125956 2.428429 -1.096965 +v 0.125956 0.042149 -1.485400 +v 0.125956 2.169381 -1.497698 +v 0.125956 0.042149 1.485400 +v 0.125956 2.169381 1.497698 +v 0.125956 2.528616 -1.138464 +v 0.125956 2.528616 1.138464 +v 0.064985 0.142335 -1.385726 +v 0.064985 2.128096 -1.397299 +v 0.064985 0.142335 1.385726 +v 0.064985 2.128096 1.397299 +v 0.064985 2.428429 -1.096965 +v 0.064985 2.428429 1.096965 +v 0.040207 0.897613 1.390926 +v 0.040207 1.171400 1.391563 +v 0.040207 0.897613 -1.390926 +v 0.040207 1.171400 -1.391554 +v 0.092371 0.897613 1.390926 +v 0.092371 1.171400 1.391563 +v 0.092371 0.897613 -1.390926 +v 0.092371 1.171400 -1.391554 +v 0.125956 1.171400 1.392205 +v 0.125956 1.171400 -1.392233 +v 0.125956 0.897613 -1.390926 +v 0.125956 0.897613 1.390926 +v 0.090460 0.951001 -1.390926 +v 0.090460 1.118012 -1.390926 +v 0.090460 0.951001 1.390926 +v 0.090460 1.118012 1.390926 +v 0.125956 1.118012 -1.391606 +v 0.125956 1.118012 1.391568 +v 0.125956 0.951001 1.390926 +v 0.125956 0.951001 -1.390926 +v 0.029347 1.034506 -0.285639 +v 0.029347 0.925197 -0.263896 +v 0.029347 0.832529 -0.201977 +v 0.029347 0.770611 -0.109309 +v 0.029347 0.748868 0.000000 +v 0.029347 0.770611 0.109309 +v 0.029347 0.832529 0.201977 +v 0.029347 0.925197 0.263896 +v 0.029347 1.034506 0.285639 +v 0.029347 1.143816 0.263896 +v 0.029347 1.236483 0.201977 +v 0.029347 1.298402 0.109309 +v 0.029347 1.320145 0.000000 +v 0.029347 1.298402 -0.109309 +v 0.029347 1.236483 -0.201977 +v 0.029347 1.143815 -0.263896 +v 0.109739 1.034506 -0.250510 +v 0.075285 1.034506 -0.285639 +v 0.109739 0.938640 -0.231441 +v 0.075285 0.925197 -0.263896 +v 0.109739 0.857369 -0.177137 +v 0.075285 0.832529 -0.201977 +v 0.109739 0.803065 -0.095866 +v 0.075285 0.770611 -0.109309 +v 0.109739 0.783996 0.000000 +v 0.075285 0.748868 0.000000 +v 0.109739 0.803065 0.095866 +v 0.075285 0.770611 0.109309 +v 0.109739 0.857369 0.177137 +v 0.075285 0.832529 0.201977 +v 0.109739 0.938640 0.231441 +v 0.075285 0.925197 0.263896 +v 0.109739 1.034506 0.250510 +v 0.075285 1.034506 0.285639 +v 0.109739 1.130372 0.231441 +v 0.075285 1.143816 0.263896 +v 0.109739 1.211644 0.177137 +v 0.075285 1.236483 0.201977 +v 0.109739 1.265947 0.095866 +v 0.075285 1.298402 0.109309 +v 0.109739 1.285016 0.000000 +v 0.075285 1.320145 0.000000 +v 0.109739 1.265947 -0.095866 +v 0.075285 1.298402 -0.109309 +v 0.109739 1.211644 -0.177137 +v 0.075285 1.236483 -0.201977 +v 0.109739 1.130372 -0.231441 +v 0.075285 1.143815 -0.263896 +v 0.015982 0.142335 0.468209 +v 0.015982 2.428429 0.468209 +v 0.015982 0.142335 0.393815 +v 0.015982 2.428429 0.393815 +v 0.125956 0.142335 0.468209 +v 0.125956 2.428429 0.468209 +v 0.125956 0.142335 0.393815 +v 0.125956 2.428429 0.393815 +v 0.015982 1.171400 0.468209 +v 0.015982 1.171400 0.393815 +v 0.125956 1.171400 0.393815 +v 0.125956 1.171400 0.468209 +v 0.015982 0.897613 0.393815 +v 0.125956 0.897613 0.393815 +v 0.125956 0.897613 0.468209 +v 0.015982 0.897613 0.468209 +v 0.059135 1.138329 0.491282 +v 0.059135 2.143588 1.400841 +v 0.059135 1.193578 0.424240 +v 0.059135 2.198836 1.333799 +v 0.101822 1.138329 0.491282 +v 0.101822 2.143588 1.400841 +v 0.101822 1.193578 0.424240 +v 0.101822 2.198836 1.333799 +v 0.054672 0.167400 1.418743 +v 0.054672 0.948722 0.471243 +v 0.054672 0.096526 1.366685 +v 0.054672 0.877848 0.419185 +v 0.097593 0.167400 1.418743 +v 0.097593 0.948722 0.471243 +v 0.097593 0.096526 1.366685 +v 0.097593 0.877848 0.419185 +v 0.015982 0.142335 -0.468209 +v 0.015982 2.428429 -0.468209 +v 0.015982 0.142335 -0.393815 +v 0.015982 2.428429 -0.393815 +v 0.125956 0.142335 -0.468209 +v 0.125956 2.428429 -0.468209 +v 0.125956 0.142335 -0.393815 +v 0.125956 2.428429 -0.393815 +v 0.015982 1.171400 -0.468209 +v 0.015982 1.171400 -0.393815 +v 0.125956 1.171400 -0.393815 +v 0.125956 1.171400 -0.468209 +v 0.015982 0.897613 -0.393815 +v 0.125956 0.897613 -0.393815 +v 0.125956 0.897613 -0.468209 +v 0.015982 0.897613 -0.468209 +v 0.059135 1.138329 -0.491282 +v 0.059135 2.143588 -1.400841 +v 0.059135 1.193578 -0.424240 +v 0.059135 2.198836 -1.333799 +v 0.101822 1.138329 -0.491282 +v 0.101822 2.143588 -1.400841 +v 0.101822 1.193578 -0.424240 +v 0.101822 2.198836 -1.333799 +v 0.054672 0.167400 -1.418743 +v 0.054672 0.948722 -0.471243 +v 0.054672 0.096526 -1.366685 +v 0.054672 0.877848 -0.419185 +v 0.097593 0.167400 -1.418743 +v 0.097593 0.948722 -0.471243 +v 0.097593 0.096526 -1.366685 +v 0.097593 0.877848 -0.419185 +v 0.075121 0.042149 1.010166 +v 0.075121 0.042149 0.687434 +v 0.075121 0.042149 0.161366 +v 0.075121 0.042149 -0.161366 +v 0.075121 0.042149 -0.687434 +v 0.075121 0.042149 -1.010166 +v 0.125956 0.042149 1.061000 +v 0.125956 0.042149 0.636600 +v 0.125956 0.042149 0.212200 +v 0.125956 0.042149 -0.212200 +v 0.125956 0.042149 -0.636600 +v 0.125956 0.042149 -1.061000 +v 0.056341 -0.123867 0.969824 +v 0.056341 -0.123867 0.727776 +v 0.056341 -0.123867 0.121024 +v 0.056341 -0.123867 -0.121024 +v 0.056341 -0.123867 -0.727776 +v 0.056341 -0.123867 -0.969824 +v -0.125956 2.428429 1.096965 +v -0.125956 0.142335 1.385726 +v -0.125956 0.142335 -1.385726 +v -0.125956 2.128096 1.397299 +v -0.125956 2.128096 -1.397299 +v -0.125956 2.428429 -1.096965 +v -0.125956 0.042149 -1.485400 +v -0.125956 2.169381 -1.497698 +v -0.125956 0.042149 1.485400 +v -0.125956 2.169381 1.497698 +v -0.125956 2.528616 -1.138464 +v -0.125956 2.528616 1.138464 +v -0.064985 0.142335 -1.385726 +v -0.064985 2.128096 -1.397299 +v -0.064985 0.142335 1.385726 +v -0.064985 2.128096 1.397299 +v -0.064985 2.428429 -1.096965 +v -0.064985 2.428429 1.096965 +v -0.040207 0.897613 1.390926 +v -0.040207 1.171400 1.391563 +v -0.040207 0.897613 -1.390926 +v -0.040207 1.171400 -1.391554 +v -0.092371 0.897613 1.390926 +v -0.092371 1.171400 1.391563 +v -0.092371 0.897613 -1.390926 +v -0.092371 1.171400 -1.391554 +v -0.125956 1.171400 1.392205 +v -0.125956 1.171400 -1.392233 +v -0.125956 0.897613 -1.390926 +v -0.125956 0.897613 1.390926 +v -0.090460 0.951001 -1.390926 +v -0.090460 1.118012 -1.390926 +v -0.090460 0.951001 1.390926 +v -0.090460 1.118012 1.390926 +v -0.125956 1.118012 -1.391606 +v -0.125956 1.118012 1.391568 +v -0.125956 0.951001 1.390926 +v -0.125956 0.951001 -1.390926 +v -0.029347 1.034506 -0.285639 +v -0.029347 0.925197 -0.263896 +v -0.029347 0.832529 -0.201977 +v -0.029347 0.770611 -0.109309 +v -0.029347 0.748868 0.000000 +v -0.029347 0.770611 0.109309 +v -0.029347 0.832529 0.201977 +v -0.029347 0.925197 0.263896 +v -0.029347 1.034506 0.285639 +v -0.029347 1.143816 0.263896 +v -0.029347 1.236483 0.201977 +v -0.029347 1.298402 0.109309 +v -0.029347 1.320145 0.000000 +v -0.029347 1.298402 -0.109309 +v -0.029347 1.236483 -0.201977 +v -0.029347 1.143815 -0.263896 +v -0.109739 1.034506 -0.250510 +v -0.075285 1.034506 -0.285639 +v -0.109739 0.938640 -0.231441 +v -0.075285 0.925197 -0.263896 +v -0.109739 0.857369 -0.177137 +v -0.075285 0.832529 -0.201977 +v -0.109739 0.803065 -0.095866 +v -0.075285 0.770611 -0.109309 +v -0.109739 0.783996 0.000000 +v -0.075285 0.748868 0.000000 +v -0.109739 0.803065 0.095866 +v -0.075285 0.770611 0.109309 +v -0.109739 0.857369 0.177137 +v -0.075285 0.832529 0.201977 +v -0.109739 0.938640 0.231441 +v -0.075285 0.925197 0.263896 +v -0.109739 1.034506 0.250510 +v -0.075285 1.034506 0.285639 +v -0.109739 1.130372 0.231441 +v -0.075285 1.143816 0.263896 +v -0.109739 1.211644 0.177137 +v -0.075285 1.236483 0.201977 +v -0.109739 1.265947 0.095866 +v -0.075285 1.298402 0.109309 +v -0.109739 1.285016 0.000000 +v -0.075285 1.320145 0.000000 +v -0.109739 1.265947 -0.095866 +v -0.075285 1.298402 -0.109309 +v -0.109739 1.211644 -0.177137 +v -0.075285 1.236483 -0.201977 +v -0.109739 1.130372 -0.231441 +v -0.075285 1.143815 -0.263896 +v -0.015982 0.142335 0.468209 +v -0.015982 2.428429 0.468209 +v -0.015982 0.142335 0.393815 +v -0.015982 2.428429 0.393815 +v -0.125956 0.142335 0.468209 +v -0.125956 2.428429 0.468209 +v -0.125956 0.142335 0.393815 +v -0.125956 2.428429 0.393815 +v -0.015982 1.171400 0.468209 +v -0.015982 1.171400 0.393815 +v -0.125956 1.171400 0.393815 +v -0.125956 1.171400 0.468209 +v -0.015982 0.897613 0.393815 +v -0.125956 0.897613 0.393815 +v -0.125956 0.897613 0.468209 +v -0.015982 0.897613 0.468209 +v -0.059135 1.138329 0.491282 +v -0.059135 2.143588 1.400841 +v -0.059135 1.193578 0.424240 +v -0.059135 2.198836 1.333799 +v -0.101822 1.138329 0.491282 +v -0.101822 2.143588 1.400841 +v -0.101822 1.193578 0.424240 +v -0.101822 2.198836 1.333799 +v -0.054672 0.167400 1.418743 +v -0.054672 0.948722 0.471243 +v -0.054672 0.096526 1.366685 +v -0.054672 0.877848 0.419185 +v -0.097593 0.167400 1.418743 +v -0.097593 0.948722 0.471243 +v -0.097593 0.096526 1.366685 +v -0.097593 0.877848 0.419185 +v -0.015982 0.142335 -0.468209 +v -0.015982 2.428429 -0.468209 +v -0.015982 0.142335 -0.393815 +v -0.015982 2.428429 -0.393815 +v -0.125956 0.142335 -0.468209 +v -0.125956 2.428429 -0.468209 +v -0.125956 0.142335 -0.393815 +v -0.125956 2.428429 -0.393815 +v -0.015982 1.171400 -0.468209 +v -0.015982 1.171400 -0.393815 +v -0.125956 1.171400 -0.393815 +v -0.125956 1.171400 -0.468209 +v -0.015982 0.897613 -0.393815 +v -0.125956 0.897613 -0.393815 +v -0.125956 0.897613 -0.468209 +v -0.015982 0.897613 -0.468209 +v -0.059135 1.138329 -0.491282 +v -0.059135 2.143588 -1.400841 +v -0.059135 1.193578 -0.424240 +v -0.059135 2.198836 -1.333799 +v -0.101822 1.138329 -0.491282 +v -0.101822 2.143588 -1.400841 +v -0.101822 1.193578 -0.424240 +v -0.101822 2.198836 -1.333799 +v -0.054672 0.167400 -1.418743 +v -0.054672 0.948722 -0.471243 +v -0.054672 0.096526 -1.366685 +v -0.054672 0.877848 -0.419185 +v -0.097593 0.167400 -1.418743 +v -0.097593 0.948722 -0.471243 +v -0.097593 0.096526 -1.366685 +v -0.097593 0.877848 -0.419185 +v -0.075121 0.042149 1.010166 +v -0.075121 0.042149 0.687434 +v -0.075121 0.042149 0.161366 +v -0.075121 0.042149 -0.161366 +v -0.075121 0.042149 -0.687434 +v -0.075121 0.042149 -1.010166 +v -0.125956 0.042149 1.061000 +v -0.125956 0.042149 0.636600 +v -0.125956 0.042149 0.212200 +v -0.125956 0.042149 -0.212200 +v -0.125956 0.042149 -0.636600 +v -0.125956 0.042149 -1.061000 +v -0.056341 -0.123867 0.969824 +v -0.056341 -0.123867 0.727776 +v -0.056341 -0.123867 0.121024 +v -0.056341 -0.123867 -0.121024 +v -0.056341 -0.123867 -0.727776 +v -0.056341 -0.123867 -0.969824 +vt 0.895448 0.314338 +vt 0.901321 0.525639 +vt 0.895448 0.525639 +vt 0.273099 0.724653 +vt 0.053805 0.700391 +vt 0.273099 0.700391 +vt 0.788557 0.587648 +vt 0.812819 0.546774 +vt 0.812819 0.587648 +vt 0.004875 0.734403 +vt 0.209756 0.758666 +vt 0.004875 0.758666 +vt 0.322029 0.700391 +vt 0.322029 0.724653 +vt 0.937895 0.608456 +vt 0.947550 0.803744 +vt 0.937904 0.799712 +vt 0.866298 0.477800 +vt 0.856648 0.549952 +vt 0.866298 0.436927 +vt 0.932801 0.468721 +vt 0.942456 0.273431 +vt 0.942456 0.478314 +vt 0.778807 0.283695 +vt 0.740232 0.258767 +vt 0.749881 0.254770 +vt 0.740231 0.039474 +vt 0.749881 0.043471 +vt 0.778807 0.014545 +vt 0.774830 0.004875 +vt 0.425063 0.839089 +vt 0.425063 0.627788 +vt 0.645240 0.866900 +vt 0.515948 0.883638 +vt 0.707201 0.877765 +vt 0.707201 0.883638 +vt 0.978538 0.273431 +vt 0.984410 0.464685 +vt 0.978538 0.464685 +vt 0.895448 0.273431 +vt 0.901320 0.314338 +vt 0.901320 0.566546 +vt 0.895448 0.566546 +vt 0.922272 0.598863 +vt 0.928144 0.865781 +vt 0.922272 0.865781 +vt 0.711943 0.004974 +vt 0.716385 0.259410 +vt 0.711944 0.259428 +vt 0.721268 0.004956 +vt 0.721268 0.259410 +vt 0.725709 0.259390 +vt 0.730481 0.004936 +vt 0.730481 0.259390 +vt 0.678126 0.259489 +vt 0.682897 0.004936 +vt 0.682897 0.259488 +vt 0.696667 0.004974 +vt 0.696667 0.259428 +vt 0.687341 0.259571 +vt 0.692225 0.004934 +vt 0.692225 0.259514 +vt 0.687342 0.004875 +vt 0.725709 0.004936 +vt 0.004875 0.790146 +vt 0.015467 0.911212 +vt 0.004875 0.911212 +vt 0.015467 0.790146 +vt 0.022632 0.911212 +vt 0.022632 0.790146 +vt 0.033224 0.911212 +vt 0.173791 0.818495 +vt 0.246533 0.807903 +vt 0.246533 0.818494 +vt 0.173791 0.807903 +vt 0.246533 0.800738 +vt 0.173791 0.790146 +vt 0.246533 0.790146 +vt 0.937895 0.813881 +vt 0.942006 0.944448 +vt 0.937895 0.944448 +vt 0.942006 0.813881 +vt 0.950364 0.944061 +vt 0.950364 0.813495 +vt 0.954475 0.944061 +vt 0.980950 0.931775 +vt 0.976816 0.813495 +vt 0.980950 0.813495 +vt 0.976816 0.931775 +vt 0.968360 0.813969 +vt 0.968360 0.932249 +vt 0.964226 0.813969 +vt 0.164041 0.800738 +vt 0.042974 0.790146 +vt 0.164041 0.790146 +vt 0.164041 0.807903 +vt 0.042974 0.800738 +vt 0.164041 0.818495 +vt 0.042974 0.807903 +vt 0.254220 0.944448 +vt 0.264812 0.871705 +vt 0.264812 0.944448 +vt 0.247055 0.944448 +vt 0.254220 0.871705 +vt 0.236463 0.871705 +vt 0.247055 0.871705 +vt 0.964676 0.545087 +vt 0.968787 0.414521 +vt 0.968787 0.545087 +vt 0.956318 0.544701 +vt 0.964676 0.414521 +vt 0.952207 0.544701 +vt 0.956318 0.414135 +vt 0.969891 0.717617 +vt 0.974025 0.599337 +vt 0.974025 0.717617 +vt 0.961435 0.717142 +vt 0.969891 0.599337 +vt 0.957301 0.717142 +vt 0.961435 0.598863 +vt 0.788557 0.342401 +vt 0.812819 0.301526 +vt 0.812819 0.342401 +vt 0.278994 0.877789 +vt 0.295085 0.904987 +vt 0.278994 0.908872 +vt 0.788557 0.505899 +vt 0.807923 0.510795 +vt 0.793453 0.510795 +vt 0.788557 0.424150 +vt 0.807923 0.429046 +vt 0.793453 0.429046 +vt 0.807923 0.541878 +vt 0.812819 0.505899 +vt 0.812819 0.465024 +vt 0.807923 0.460128 +vt 0.807923 0.347297 +vt 0.812819 0.383275 +vt 0.807923 0.378379 +vt 0.053805 0.724653 +vt 0.004875 0.700391 +vt 0.812819 0.424150 +vt 0.441154 0.894220 +vt 0.453816 0.877765 +vt 0.452007 0.894220 +vt 0.305938 0.881675 +vt 0.295085 0.881675 +vt 0.199769 0.911472 +vt 0.210621 0.888160 +vt 0.210621 0.911472 +vt 0.293276 0.865220 +vt 0.307746 0.865220 +vt 0.441154 0.917532 +vt 0.453816 0.933986 +vt 0.439346 0.933986 +vt 0.226713 0.915357 +vt 0.226713 0.884275 +vt 0.468098 0.921417 +vt 0.468098 0.890334 +vt 0.212430 0.927926 +vt 0.197960 0.927926 +vt 0.199769 0.888160 +vt 0.212430 0.871705 +vt 0.305938 0.904987 +vt 0.293276 0.921441 +vt 0.793453 0.347297 +vt 0.788557 0.383275 +vt 0.788557 0.465024 +vt 0.788557 0.546774 +vt 0.822636 0.209756 +vt 0.846898 0.004875 +vt 0.846898 0.209756 +vt 0.906649 0.851070 +vt 0.912521 0.639770 +vt 0.912521 0.851070 +vt 0.950900 0.004875 +vt 0.941245 0.200163 +vt 0.941254 0.008907 +vt 0.885698 0.477803 +vt 0.885698 0.518678 +vt 0.876048 0.549953 +vt 0.921839 0.014469 +vt 0.931494 0.209758 +vt 0.921848 0.205726 +vt 0.691906 0.303921 +vt 0.730481 0.278991 +vt 0.701555 0.307917 +vt 0.691906 0.523212 +vt 0.701555 0.519216 +vt 0.730481 0.548141 +vt 0.875168 0.839089 +vt 0.846242 0.868015 +vt 0.654991 0.866900 +vt 0.987125 0.196128 +vt 0.992998 0.004875 +vt 0.992998 0.196128 +vt 0.989648 0.598863 +vt 0.983775 0.790116 +vt 0.983775 0.598863 +vt 0.906649 0.639770 +vt 0.912521 0.598863 +vt 0.906649 0.891977 +vt 0.912521 0.891977 +vt 0.342747 0.665374 +vt 0.336874 0.932293 +vt 0.336875 0.665374 +vt 0.366750 0.401078 +vt 0.362309 0.655506 +vt 0.362309 0.401057 +vt 0.371633 0.655527 +vt 0.371633 0.401078 +vt 0.380846 0.655551 +vt 0.376074 0.401102 +vt 0.380846 0.401102 +vt 0.333262 0.655585 +vt 0.328490 0.401010 +vt 0.333263 0.401010 +vt 0.347033 0.655506 +vt 0.347033 0.401057 +vt 0.342590 0.655566 +vt 0.337707 0.400920 +vt 0.342590 0.400977 +vt 0.337707 0.655624 +vt 0.376074 0.655551 +vt 0.370254 0.786441 +vt 0.380846 0.665374 +vt 0.380846 0.786441 +vt 0.363089 0.786441 +vt 0.370254 0.665374 +vt 0.352497 0.786441 +vt 0.363089 0.665374 +vt 0.495605 0.950507 +vt 0.506197 0.877765 +vt 0.506197 0.950507 +vt 0.488440 0.950507 +vt 0.495605 0.877765 +vt 0.477849 0.877765 +vt 0.488440 0.877765 +vt 0.173927 0.875817 +vt 0.043361 0.871705 +vt 0.173927 0.871705 +vt 0.173541 0.884175 +vt 0.043361 0.875816 +vt 0.173541 0.888286 +vt 0.042974 0.884174 +vt 0.973241 0.123629 +vt 0.977375 0.005350 +vt 0.977375 0.123629 +vt 0.964785 0.123155 +vt 0.973241 0.005350 +vt 0.960651 0.123155 +vt 0.964785 0.004875 +vt 0.322029 0.855470 +vt 0.311437 0.734403 +vt 0.322029 0.734403 +vt 0.311437 0.855470 +vt 0.304272 0.734403 +vt 0.304272 0.855470 +vt 0.293680 0.734403 +vt 0.911071 0.493804 +vt 0.921663 0.566546 +vt 0.911071 0.566546 +vt 0.921663 0.493804 +vt 0.928828 0.566546 +vt 0.939420 0.493804 +vt 0.939420 0.566546 +vt 0.968787 0.403998 +vt 0.964676 0.273431 +vt 0.968787 0.273431 +vt 0.964676 0.403998 +vt 0.956318 0.273818 +vt 0.956318 0.404384 +vt 0.952207 0.273818 +vt 0.977374 0.251660 +vt 0.973241 0.133380 +vt 0.977374 0.133380 +vt 0.973241 0.251660 +vt 0.964785 0.133855 +vt 0.964785 0.252134 +vt 0.960651 0.133855 +vt 0.322029 0.877789 +vt 0.322029 0.908872 +vt 0.793453 0.541878 +vt 0.793453 0.460128 +vt 0.793453 0.378379 +vt 0.183678 0.915357 +vt 0.183678 0.884275 +vt 0.425063 0.921417 +vt 0.425063 0.890334 +vt 0.452007 0.917532 +vt 0.209756 0.734404 +vt 0.947550 0.598863 +vt 0.866298 0.559552 +vt 0.866298 0.518676 +vt 0.856649 0.283031 +vt 0.866298 0.273431 +vt 0.866298 0.314306 +vt 0.866298 0.355180 +vt 0.866298 0.396055 +vt 0.932810 0.277463 +vt 0.774830 0.293365 +vt 0.453988 0.598863 +vt 0.645240 0.599977 +vt 0.453989 0.868015 +vt 0.515948 0.877765 +vt 0.984410 0.273431 +vt 0.901320 0.273431 +vt 0.928144 0.598863 +vt 0.716385 0.004956 +vt 0.678124 0.004936 +vt 0.033224 0.790146 +vt 0.173791 0.800738 +vt 0.954475 0.813495 +vt 0.964226 0.932249 +vt 0.042974 0.818495 +vt 0.236463 0.944447 +vt 0.952207 0.414135 +vt 0.957301 0.598863 +vt 0.788557 0.301526 +vt 0.004875 0.724653 +vt 0.439346 0.877765 +vt 0.197960 0.871705 +vt 0.307746 0.921441 +vt 0.822636 0.004875 +vt 0.950900 0.209756 +vt 0.876048 0.283031 +vt 0.885698 0.396057 +vt 0.885698 0.273431 +vt 0.885698 0.314306 +vt 0.885698 0.355181 +vt 0.885698 0.559553 +vt 0.885698 0.436928 +vt 0.931494 0.004875 +vt 0.726504 0.269322 +vt 0.726505 0.557811 +vt 0.654991 0.599977 +vt 0.875168 0.627788 +vt 0.846242 0.598863 +vt 0.987125 0.004875 +vt 0.989648 0.790116 +vt 0.906649 0.598863 +vt 0.342747 0.932293 +vt 0.366750 0.655527 +vt 0.328491 0.655585 +vt 0.352497 0.665374 +vt 0.477849 0.950507 +vt 0.042974 0.888286 +vt 0.960651 0.004875 +vt 0.293680 0.855470 +vt 0.928828 0.493804 +vt 0.952207 0.404384 +vt 0.960651 0.252134 +vt 0.774310 0.356785 +vt 0.778734 0.346051 +vt 0.778734 0.356785 +vt 0.774310 0.324583 +vt 0.778734 0.313849 +vt 0.778734 0.324583 +vt 0.774310 0.313849 +vt 0.778734 0.303115 +vt 0.774310 0.474859 +vt 0.778734 0.464125 +vt 0.778734 0.474859 +vt 0.774310 0.453391 +vt 0.778734 0.453391 +vt 0.774310 0.442657 +vt 0.778734 0.442657 +vt 0.774310 0.431923 +vt 0.778734 0.431923 +vt 0.774310 0.421189 +vt 0.778734 0.421189 +vt 0.778734 0.410455 +vt 0.774310 0.399721 +vt 0.778734 0.399721 +vt 0.778734 0.388987 +vt 0.774310 0.388987 +vt 0.778734 0.378253 +vt 0.774310 0.378253 +vt 0.778734 0.367519 +vt 0.774310 0.367519 +vt 0.774310 0.346051 +vt 0.778734 0.335317 +vt 0.774310 0.335317 +vt 0.380672 0.853280 +vt 0.389768 0.846563 +vt 0.391710 0.851049 +vt 0.397514 0.841314 +vt 0.401024 0.844732 +vt 0.402736 0.833547 +vt 0.407278 0.835359 +vt 0.409423 0.824311 +vt 0.404530 0.824367 +vt 0.407228 0.813279 +vt 0.402742 0.815203 +vt 0.400946 0.803966 +vt 0.397541 0.807463 +vt 0.389804 0.802292 +vt 0.391595 0.797762 +vt 0.380574 0.795668 +vt 0.380679 0.800538 +vt 0.371575 0.802462 +vt 0.369601 0.798003 +vt 0.363855 0.807771 +vt 0.360350 0.804352 +vt 0.354053 0.813669 +vt 0.358574 0.815517 +vt 0.351811 0.824674 +vt 0.356686 0.824637 +vt 0.358476 0.833755 +vt 0.354001 0.835677 +vt 0.363674 0.841469 +vt 0.360275 0.844968 +vt 0.371430 0.846637 +vt 0.369638 0.851175 +vt 0.380596 0.848390 +vt 0.990700 0.856431 +vt 0.995125 0.867165 +vt 0.990700 0.867165 +vt 0.990700 0.824229 +vt 0.995125 0.834963 +vt 0.990700 0.834963 +vt 0.990700 0.813495 +vt 0.995125 0.824229 +vt 0.990700 0.974504 +vt 0.995125 0.985238 +vt 0.990700 0.985238 +vt 0.990700 0.963771 +vt 0.995125 0.974504 +vt 0.995125 0.953036 +vt 0.995125 0.963771 +vt 0.990700 0.942302 +vt 0.990700 0.953037 +vt 0.990700 0.931569 +vt 0.995125 0.942302 +vt 0.990700 0.920835 +vt 0.995125 0.931569 +vt 0.995125 0.910101 +vt 0.995125 0.920835 +vt 0.990700 0.899367 +vt 0.990700 0.910101 +vt 0.990700 0.888633 +vt 0.995125 0.899367 +vt 0.990700 0.877899 +vt 0.995125 0.888633 +vt 0.995125 0.877899 +vt 0.990700 0.845697 +vt 0.995125 0.856431 +vt 0.995125 0.845697 +vt 0.358695 0.881542 +vt 0.352004 0.890628 +vt 0.354214 0.879611 +vt 0.363898 0.873817 +vt 0.360512 0.870301 +vt 0.371693 0.868708 +vt 0.369926 0.864155 +vt 0.380884 0.866994 +vt 0.380981 0.862102 +vt 0.392001 0.864382 +vt 0.401281 0.870726 +vt 0.390046 0.868860 +vt 0.402825 0.881899 +vt 0.407377 0.880158 +vt 0.409363 0.891190 +vt 0.402641 0.900280 +vt 0.407127 0.902214 +vt 0.397445 0.908018 +vt 0.400833 0.911528 +vt 0.391433 0.917673 +vt 0.380404 0.919707 +vt 0.389670 0.913130 +vt 0.371351 0.912975 +vt 0.369398 0.917446 +vt 0.363652 0.907727 +vt 0.360122 0.911100 +vt 0.358560 0.899918 +vt 0.354006 0.901666 +vt 0.356895 0.890716 +vt 0.404473 0.891090 +vt 0.380501 0.914823 +vt 0.774310 0.303115 +vt 0.774310 0.464125 +vt 0.774310 0.410455 +vt 0.995125 0.813495 +vt 0.397753 0.874096 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.0058 1.0000 +vn 0.0000 0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0058 -1.0000 +vn 0.0000 0.0058 1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.6709 -0.7415 +vn 0.0000 -0.6709 0.7415 +vn 0.0000 -0.7715 -0.6362 +vn 0.0000 0.7715 0.6362 +vn 0.0000 0.6709 0.7415 +vn 0.0000 -0.6709 -0.7415 +vn 0.0000 -0.7715 0.6362 +vn 0.0000 0.7715 -0.6362 +vn 0.9937 -0.1124 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.2361 -0.9717 +vn 0.0000 -0.2361 0.9717 +vn 0.0000 -0.0058 -1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.9937 -0.1124 0.0000 +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.3827 0.9239 +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.3827 -0.9239 +vn 0.7139 -0.0000 -0.7002 +vn 0.7139 -0.2680 -0.6469 +vn 0.7139 -0.4951 -0.4951 +vn 0.7139 -0.6469 -0.2680 +vn 0.7139 -0.7002 -0.0000 +vn 0.7139 -0.6469 0.2680 +vn 0.7139 -0.4951 0.4951 +vn 0.7139 -0.2680 0.6469 +vn 0.7139 0.0000 0.7002 +vn 0.7139 0.2680 0.6469 +vn 0.7139 0.4951 0.4951 +vn 0.7139 0.6469 0.2680 +vn 0.7139 0.7002 0.0000 +vn 0.7139 0.6469 -0.2680 +vn 0.7139 0.4951 -0.4951 +vn 0.7139 0.2680 -0.6469 +vn -0.7139 -0.2680 -0.6469 +vn -0.7139 -0.0000 -0.7002 +vn -0.7139 -0.4951 -0.4951 +vn -0.7139 -0.6469 -0.2680 +vn -0.7139 -0.7002 0.0000 +vn -0.7139 -0.6469 0.2680 +vn -0.7139 -0.4951 0.4951 +vn -0.7139 -0.2680 0.6469 +vn -0.7139 0.0000 0.7002 +vn -0.7139 0.2680 0.6469 +vn -0.7139 0.4951 0.4951 +vn -0.7139 0.6469 0.2680 +vn -0.7139 0.7002 0.0000 +vn -0.7139 0.6469 -0.2680 +vn -0.7139 0.4951 -0.4951 +vn -0.7139 0.2680 -0.6469 +s off +f 1/1/1 17/2/1 6/3/1 +f 179/4/2 12/5/2 11/6/2 +f 177/7/1 157/8/1 9/9/1 +f 178/10/3 9/11/3 10/12/3 +f 179/4/4 8/13/4 176/14/4 +f 3/15/5 8/16/5 5/17/5 +f 161/18/5 3/19/5 160/20/5 +f 2/21/5 10/22/5 9/23/5 +f 5/24/5 11/25/5 6/26/5 +f 6/26/5 12/27/5 1/28/5 +f 4/29/5 12/27/5 10/30/5 +f 17/31/5 18/32/5 13/33/5 +f 2/34/6 16/35/6 4/36/6 +f 5/37/7 13/38/7 3/39/7 +f 4/40/8 18/41/8 1/1/8 +f 6/3/9 14/42/9 5/43/9 +f 3/44/2 15/45/2 2/46/2 +f 33/47/2 38/48/2 31/49/2 +f 38/48/5 30/50/5 29/51/5 +f 25/52/1 19/53/1 21/54/1 +f 22/55/2 24/56/2 26/57/2 +f 34/58/5 31/49/5 32/59/5 +f 28/60/5 36/61/5 35/62/5 +f 26/57/2 27/63/2 28/60/2 +f 32/59/1 36/61/1 34/58/1 +f 25/52/1 30/50/1 23/64/1 +f 90/65/10 97/66/10 96/67/10 +f 94/68/5 98/69/5 97/66/5 +f 92/70/11 95/71/11 98/69/11 +f 99/72/10 93/73/10 89/74/10 +f 100/75/5 91/76/5 93/73/5 +f 91/76/11 102/77/11 87/78/11 +f 106/79/12 109/80/12 105/81/12 +f 110/82/5 107/83/5 109/80/5 +f 108/84/13 103/85/13 107/83/13 +f 114/86/14 117/87/14 113/88/14 +f 118/89/5 115/90/5 117/87/5 +f 116/91/15 111/92/15 115/90/15 +f 129/93/11 122/94/11 128/95/11 +f 130/96/5 126/97/5 129/93/5 +f 127/98/10 124/99/10 130/96/10 +f 125/100/11 131/101/11 121/102/11 +f 123/103/5 132/104/5 125/100/5 +f 123/103/10 134/105/10 133/106/10 +f 141/107/16 138/108/16 137/109/16 +f 139/110/5 142/111/5 141/107/5 +f 135/112/17 140/113/17 139/110/17 +f 149/114/18 146/115/18 145/116/18 +f 147/117/5 150/118/5 149/114/5 +f 143/119/19 148/120/19 147/117/19 +f 330/121/1 7/122/1 162/123/1 +f 151/124/20 164/125/20 152/126/20 +f 326/127/1 152/128/1 320/129/1 +f 328/130/1 154/131/1 322/132/1 +f 151/133/1 158/134/1 157/8/1 +f 154/131/1 159/135/1 153/136/1 +f 156/137/1 161/138/1 155/139/1 +f 180/140/21 10/141/21 12/5/21 +f 326/127/1 159/135/1 158/134/1 +f 328/130/1 161/138/1 160/142/1 +f 336/143/22 156/144/22 168/145/22 +f 331/146/1 164/125/1 163/147/1 +f 333/148/1 166/149/1 165/150/1 +f 331/146/23 151/151/23 319/152/23 +f 335/153/23 155/154/23 323/155/23 +f 153/156/20 166/149/20 154/157/20 +f 155/158/20 168/145/20 156/159/20 +f 333/148/23 153/160/23 321/161/23 +f 334/162/22 154/163/22 166/149/22 +f 332/164/22 152/165/22 164/125/22 +f 330/121/1 156/137/1 324/166/1 +f 329/167/1 155/139/1 161/138/1 +f 327/168/1 153/136/1 159/135/1 +f 325/169/1 151/133/1 157/8/1 +f 175/170/24 8/171/24 7/172/24 +f 185/173/1 169/174/1 174/175/1 +f 176/176/25 171/177/25 173/178/25 +f 326/179/25 325/180/25 170/181/25 +f 170/182/25 178/183/25 172/184/25 +f 179/185/25 173/186/25 174/187/25 +f 180/188/25 174/187/25 169/189/25 +f 172/190/25 180/188/25 169/189/25 +f 185/191/25 182/192/25 181/193/25 +f 184/194/6 170/195/6 172/196/6 +f 181/197/7 173/198/7 171/199/7 +f 186/200/8 172/201/8 169/174/8 +f 182/202/9 174/175/9 173/203/9 +f 183/204/2 171/205/2 170/206/2 +f 206/207/2 201/208/2 199/209/2 +f 198/210/25 206/207/25 197/211/25 +f 187/212/1 193/213/1 189/214/1 +f 192/215/2 190/216/2 194/217/2 +f 199/209/25 202/218/25 200/219/25 +f 204/220/25 196/221/25 203/222/25 +f 194/217/2 195/223/2 192/215/2 +f 204/220/1 200/219/1 202/218/1 +f 198/210/1 193/213/1 191/224/1 +f 265/225/10 258/226/10 264/227/10 +f 266/228/25 262/229/25 265/225/25 +f 263/230/11 260/231/11 266/228/11 +f 261/232/10 267/233/10 257/234/10 +f 259/235/25 268/236/25 261/232/25 +f 259/235/11 270/237/11 269/238/11 +f 277/239/12 274/240/12 273/241/12 +f 275/242/25 278/243/25 277/239/25 +f 271/244/13 276/245/13 275/242/13 +f 285/246/14 282/247/14 281/248/14 +f 283/249/25 286/250/25 285/246/25 +f 279/251/15 284/252/15 283/249/15 +f 290/253/11 297/254/11 296/255/11 +f 294/256/25 298/257/25 297/254/25 +f 292/258/10 295/259/10 298/257/10 +f 299/260/11 293/261/11 289/262/11 +f 300/263/25 291/264/25 293/261/25 +f 291/264/10 302/265/10 287/266/10 +f 306/267/16 309/268/16 305/269/16 +f 310/270/25 307/271/25 309/268/25 +f 308/272/17 303/273/17 307/271/17 +f 314/274/18 317/275/18 313/276/18 +f 318/277/25 315/278/25 317/275/25 +f 316/279/19 311/280/19 315/278/19 +f 332/164/26 319/281/26 320/282/26 +f 325/169/1 320/129/1 319/283/1 +f 327/168/1 322/132/1 321/284/1 +f 329/167/1 324/166/1 323/285/1 +f 334/162/26 321/286/26 322/287/26 +f 336/143/26 323/288/26 324/289/26 +f 335/153/1 168/145/1 167/290/1 +f 1/1/1 18/41/1 17/2/1 +f 179/4/2 180/140/2 12/5/2 +f 177/7/1 325/169/1 157/8/1 +f 178/10/3 177/291/3 9/11/3 +f 179/4/4 11/6/4 8/13/4 +f 3/15/5 7/292/5 8/16/5 +f 7/293/5 3/19/5 162/294/5 +f 3/19/5 2/295/5 160/20/5 +f 162/294/5 3/19/5 161/18/5 +f 2/295/5 9/296/5 157/297/5 +f 158/298/5 159/299/5 2/295/5 +f 159/299/5 160/20/5 2/295/5 +f 2/295/5 157/297/5 158/298/5 +f 2/21/5 4/300/5 10/22/5 +f 5/24/5 8/301/5 11/25/5 +f 6/26/5 11/25/5 12/27/5 +f 4/29/5 1/28/5 12/27/5 +f 16/302/5 15/303/5 18/32/5 +f 15/303/5 13/33/5 18/32/5 +f 13/33/5 14/304/5 17/31/5 +f 2/34/6 15/305/6 16/35/6 +f 5/37/7 14/306/7 13/38/7 +f 4/40/8 16/307/8 18/41/8 +f 6/3/9 17/2/9 14/42/9 +f 3/44/2 13/308/2 15/45/2 +f 33/47/2 37/309/2 38/48/2 +f 38/48/5 37/309/5 30/50/5 +f 25/52/1 23/64/1 19/53/1 +f 22/55/2 20/310/2 24/56/2 +f 34/58/5 33/47/5 31/49/5 +f 28/60/5 27/63/5 36/61/5 +f 26/57/2 24/56/2 27/63/2 +f 32/59/1 35/62/1 36/61/1 +f 25/52/1 29/51/1 30/50/1 +f 90/65/10 94/68/10 97/66/10 +f 94/68/5 92/70/5 98/69/5 +f 92/70/11 88/311/11 95/71/11 +f 99/72/10 100/75/10 93/73/10 +f 100/75/5 101/312/5 91/76/5 +f 91/76/11 101/312/11 102/77/11 +f 106/79/12 110/82/12 109/80/12 +f 110/82/5 108/84/5 107/83/5 +f 108/84/13 104/313/13 103/85/13 +f 114/86/14 118/89/14 117/87/14 +f 118/89/5 116/91/5 115/90/5 +f 116/91/15 112/314/15 111/92/15 +f 129/93/11 126/97/11 122/94/11 +f 130/96/5 124/99/5 126/97/5 +f 127/98/10 120/315/10 124/99/10 +f 125/100/11 132/104/11 131/101/11 +f 123/103/5 133/106/5 132/104/5 +f 123/103/10 119/316/10 134/105/10 +f 141/107/16 142/111/16 138/108/16 +f 139/110/5 140/113/5 142/111/5 +f 135/112/17 136/317/17 140/113/17 +f 149/114/18 150/118/18 146/115/18 +f 147/117/5 148/120/5 150/118/5 +f 143/119/19 144/318/19 148/120/19 +f 330/121/1 175/319/1 7/122/1 +f 151/124/20 163/147/20 164/125/20 +f 326/127/1 158/134/1 152/128/1 +f 328/130/1 160/142/1 154/131/1 +f 151/133/1 152/128/1 158/134/1 +f 154/131/1 160/142/1 159/135/1 +f 156/137/1 162/123/1 161/138/1 +f 180/140/21 178/320/21 10/141/21 +f 326/127/1 327/168/1 159/135/1 +f 328/130/1 329/167/1 161/138/1 +f 336/143/22 324/321/22 156/144/22 +f 331/146/1 332/164/1 164/125/1 +f 333/148/1 334/162/1 166/149/1 +f 331/146/23 163/147/23 151/151/23 +f 335/153/23 167/290/23 155/154/23 +f 153/156/20 165/150/20 166/149/20 +f 155/158/20 167/290/20 168/145/20 +f 333/148/23 165/150/23 153/160/23 +f 334/162/22 322/322/22 154/163/22 +f 332/164/22 320/323/22 152/165/22 +f 330/121/1 162/123/1 156/137/1 +f 329/167/1 323/285/1 155/139/1 +f 327/168/1 321/284/1 153/136/1 +f 325/169/1 319/283/1 151/133/1 +f 175/170/24 176/324/24 8/171/24 +f 185/173/1 186/200/1 169/174/1 +f 176/176/25 175/325/25 171/177/25 +f 170/181/25 171/326/25 328/327/25 +f 171/326/25 175/328/25 330/329/25 +f 330/329/25 329/330/25 171/326/25 +f 329/330/25 328/327/25 171/326/25 +f 325/180/25 177/331/25 170/181/25 +f 328/327/25 327/332/25 170/181/25 +f 327/332/25 326/179/25 170/181/25 +f 170/182/25 177/333/25 178/183/25 +f 179/185/25 176/334/25 173/186/25 +f 180/188/25 179/185/25 174/187/25 +f 172/190/25 178/335/25 180/188/25 +f 181/193/25 183/336/25 186/337/25 +f 183/336/25 184/338/25 186/337/25 +f 186/337/25 185/191/25 181/193/25 +f 184/194/6 183/339/6 170/195/6 +f 181/197/7 182/340/7 173/198/7 +f 186/200/8 184/341/8 172/201/8 +f 182/202/9 185/173/9 174/175/9 +f 183/204/2 181/342/2 171/205/2 +f 206/207/2 205/343/2 201/208/2 +f 198/210/25 205/343/25 206/207/25 +f 187/212/1 191/224/1 193/213/1 +f 192/215/2 188/344/2 190/216/2 +f 199/209/25 201/208/25 202/218/25 +f 204/220/25 195/223/25 196/221/25 +f 194/217/2 196/221/2 195/223/2 +f 204/220/1 203/222/1 200/219/1 +f 198/210/1 197/211/1 193/213/1 +f 265/225/10 262/229/10 258/226/10 +f 266/228/25 260/231/25 262/229/25 +f 263/230/11 256/345/11 260/231/11 +f 261/232/10 268/236/10 267/233/10 +f 259/235/25 269/238/25 268/236/25 +f 259/235/11 255/346/11 270/237/11 +f 277/239/12 278/243/12 274/240/12 +f 275/242/25 276/245/25 278/243/25 +f 271/244/13 272/347/13 276/245/13 +f 285/246/14 286/250/14 282/247/14 +f 283/249/25 284/252/25 286/250/25 +f 279/251/15 280/348/15 284/252/15 +f 290/253/11 294/256/11 297/254/11 +f 294/256/25 292/258/25 298/257/25 +f 292/258/10 288/349/10 295/259/10 +f 299/260/11 300/263/11 293/261/11 +f 300/263/25 301/350/25 291/264/25 +f 291/264/10 301/350/10 302/265/10 +f 306/267/16 310/270/16 309/268/16 +f 310/270/25 308/272/25 307/271/25 +f 308/272/17 304/351/17 303/273/17 +f 314/274/18 318/277/18 317/275/18 +f 318/277/25 316/279/25 315/278/25 +f 316/279/19 312/352/19 311/280/19 +f 332/164/26 331/146/26 319/281/26 +f 325/169/1 326/127/1 320/129/1 +f 327/168/1 328/130/1 322/132/1 +f 329/167/1 330/121/1 324/166/1 +f 334/162/26 333/148/26 321/286/26 +f 336/143/26 335/153/26 323/288/26 +f 335/153/1 336/143/1 168/145/1 +s 1 +f 86/353/27 39/354/10 54/355/27 +f 60/356/8 42/357/28 41/358/8 +f 62/359/28 43/360/1 42/357/28 +f 64/361/1 44/362/29 43/363/1 +f 44/362/29 68/364/9 45/365/9 +f 45/365/9 70/366/30 46/367/30 +f 46/367/30 72/368/11 47/369/11 +f 47/369/11 74/370/31 48/371/31 +f 74/370/31 49/372/21 48/371/31 +f 49/372/21 78/373/32 50/374/32 +f 78/373/32 51/375/2 50/374/32 +f 80/376/2 52/377/33 51/375/2 +f 82/378/33 53/379/4 52/377/33 +f 84/380/4 54/355/27 53/379/4 +f 56/381/10 40/382/34 39/354/10 +f 58/383/34 41/358/8 40/382/34 +f 56/384/35 57/385/36 58/386/36 +f 58/386/36 59/387/37 60/388/37 +f 60/388/37 61/389/38 62/390/38 +f 64/391/39 61/389/38 63/392/39 +f 66/393/40 63/392/39 65/394/40 +f 68/395/41 65/394/40 67/396/41 +f 68/395/41 69/397/42 70/398/42 +f 72/399/43 69/397/42 71/400/43 +f 72/399/43 73/401/44 74/402/44 +f 74/402/44 75/403/45 76/404/45 +f 78/405/46 75/403/45 77/406/46 +f 80/407/47 77/406/46 79/408/47 +f 80/407/47 81/409/48 82/410/48 +f 82/410/48 83/411/49 84/412/49 +f 84/412/49 85/413/50 86/414/50 +f 86/414/50 55/415/35 56/384/35 +f 63/392/5 59/387/5 75/403/5 +f 207/416/10 254/417/27 222/418/27 +f 210/419/28 228/420/8 209/421/8 +f 211/422/1 230/423/28 210/419/28 +f 212/424/29 232/425/1 211/426/1 +f 213/427/9 234/428/29 212/424/29 +f 213/427/9 238/429/30 236/430/9 +f 215/431/11 238/429/30 214/432/30 +f 216/433/31 240/434/11 215/431/11 +f 217/435/21 242/436/31 216/433/31 +f 217/435/21 246/437/32 244/438/21 +f 219/439/2 246/437/32 218/440/32 +f 220/441/33 248/442/2 219/439/2 +f 221/443/4 250/444/33 220/441/33 +f 222/418/27 252/445/4 221/443/4 +f 208/446/34 224/447/10 207/416/10 +f 209/421/8 226/448/34 208/446/34 +f 225/449/51 224/450/52 226/451/51 +f 227/452/53 226/451/51 228/453/53 +f 229/454/54 228/453/53 230/455/54 +f 231/456/55 230/455/54 232/457/55 +f 234/458/56 231/456/55 232/457/55 +f 236/459/57 233/460/56 234/458/56 +f 237/461/58 236/459/57 238/462/58 +f 240/463/59 237/461/58 238/462/58 +f 241/464/60 240/463/59 242/465/60 +f 243/466/61 242/465/60 244/467/61 +f 246/468/62 243/466/61 244/467/61 +f 248/469/63 245/470/62 246/468/62 +f 249/471/64 248/469/63 250/472/64 +f 251/473/65 250/472/64 252/474/65 +f 253/475/66 252/474/65 254/476/66 +f 223/477/52 254/476/66 224/450/52 +f 239/478/25 247/479/25 223/477/25 +f 86/353/27 56/381/10 39/354/10 +f 60/356/8 62/359/28 42/357/28 +f 62/359/28 64/480/1 43/360/1 +f 64/361/1 66/481/29 44/362/29 +f 44/362/29 66/481/29 68/364/9 +f 45/365/9 68/364/9 70/366/30 +f 46/367/30 70/366/30 72/368/11 +f 47/369/11 72/368/11 74/370/31 +f 74/370/31 76/482/21 49/372/21 +f 49/372/21 76/482/21 78/373/32 +f 78/373/32 80/376/2 51/375/2 +f 80/376/2 82/378/33 52/377/33 +f 82/378/33 84/380/4 53/379/4 +f 84/380/4 86/353/27 54/355/27 +f 56/381/10 58/383/34 40/382/34 +f 58/383/34 60/356/8 41/358/8 +f 56/384/35 55/415/35 57/385/36 +f 58/386/36 57/385/36 59/387/37 +f 60/388/37 59/387/37 61/389/38 +f 64/391/39 62/390/38 61/389/38 +f 66/393/40 64/391/39 63/392/39 +f 68/395/41 66/393/40 65/394/40 +f 68/395/41 67/396/41 69/397/42 +f 72/399/43 70/398/42 69/397/42 +f 72/399/43 71/400/43 73/401/44 +f 74/402/44 73/401/44 75/403/45 +f 78/405/46 76/404/45 75/403/45 +f 80/407/47 78/405/46 77/406/46 +f 80/407/47 79/408/47 81/409/48 +f 82/410/48 81/409/48 83/411/49 +f 84/412/49 83/411/49 85/413/50 +f 86/414/50 85/413/50 55/415/35 +f 59/387/5 57/385/5 55/415/5 +f 55/415/5 85/413/5 83/411/5 +f 83/411/5 81/409/5 79/408/5 +f 79/408/5 77/406/5 83/411/5 +f 77/406/5 75/403/5 83/411/5 +f 75/403/5 73/401/5 67/396/5 +f 73/401/5 71/400/5 67/396/5 +f 71/400/5 69/397/5 67/396/5 +f 67/396/5 65/394/5 63/392/5 +f 63/392/5 61/389/5 59/387/5 +f 59/387/5 55/415/5 75/403/5 +f 55/415/5 83/411/5 75/403/5 +f 67/396/5 63/392/5 75/403/5 +f 207/416/10 224/447/10 254/417/27 +f 210/419/28 230/423/28 228/420/8 +f 211/422/1 232/483/1 230/423/28 +f 212/424/29 234/428/29 232/425/1 +f 213/427/9 236/430/9 234/428/29 +f 213/427/9 214/432/30 238/429/30 +f 215/431/11 240/434/11 238/429/30 +f 216/433/31 242/436/31 240/434/11 +f 217/435/21 244/438/21 242/436/31 +f 217/435/21 218/440/32 246/437/32 +f 219/439/2 248/442/2 246/437/32 +f 220/441/33 250/444/33 248/442/2 +f 221/443/4 252/445/4 250/444/33 +f 222/418/27 254/417/27 252/445/4 +f 208/446/34 226/448/34 224/447/10 +f 209/421/8 228/420/8 226/448/34 +f 225/449/51 223/477/52 224/450/52 +f 227/452/53 225/449/51 226/451/51 +f 229/454/54 227/452/53 228/453/53 +f 231/456/55 229/454/54 230/455/54 +f 234/458/56 233/460/56 231/456/55 +f 236/459/57 235/484/57 233/460/56 +f 237/461/58 235/484/57 236/459/57 +f 240/463/59 239/478/59 237/461/58 +f 241/464/60 239/478/59 240/463/59 +f 243/466/61 241/464/60 242/465/60 +f 246/468/62 245/470/62 243/466/61 +f 248/469/63 247/479/63 245/470/62 +f 249/471/64 247/479/63 248/469/63 +f 251/473/65 249/471/64 250/472/64 +f 253/475/66 251/473/65 252/474/65 +f 223/477/52 253/475/66 254/476/66 +f 223/477/25 225/449/25 227/452/25 +f 227/452/25 229/454/25 223/477/25 +f 229/454/25 231/456/25 223/477/25 +f 231/456/25 233/460/25 239/478/25 +f 233/460/25 235/484/25 239/478/25 +f 235/484/25 237/461/25 239/478/25 +f 239/478/25 241/464/25 247/479/25 +f 241/464/25 243/466/25 247/479/25 +f 243/466/25 245/470/25 247/479/25 +f 247/479/25 249/471/25 251/473/25 +f 251/473/25 253/475/25 223/477/25 +f 247/479/25 251/473/25 223/477/25 +f 223/477/25 231/456/25 239/478/25 +o frame +v -0.250000 0.082265 1.245283 +v -0.250000 0.082265 -1.245283 +v 0.250000 0.082265 1.245283 +v 0.250000 0.082265 -1.245283 +v -0.250000 -0.250000 -1.500000 +v -0.250000 -0.250000 1.500000 +v -0.250000 3.000000 1.500000 +v -0.250000 3.000000 -1.500000 +v 0.250000 3.000000 -1.500000 +v 0.250000 -0.250000 -1.500000 +v 0.250000 -0.250000 1.500000 +v 0.250000 3.000000 1.500000 +v -0.250000 2.476200 0.916753 +v -0.250000 2.147670 1.245283 +v -0.250000 2.147670 -1.245283 +v -0.250000 2.476200 -0.916753 +v 0.250000 2.247670 1.245283 +v 0.250000 2.476200 1.016753 +v 0.250000 2.476200 -1.016753 +v 0.250000 2.247670 -1.245283 +v 0.125956 2.528616 1.138464 +v -0.125956 2.528616 1.138464 +v -0.125956 0.041706 1.485400 +v 0.125956 0.041706 1.485400 +v -0.125956 0.041706 -1.485400 +v 0.125956 0.041706 -1.485400 +v 0.125956 0.082265 -1.245283 +v -0.125956 0.082265 -1.245283 +v 0.125956 0.082265 1.245283 +v -0.125956 0.082265 1.245283 +v -0.125956 2.476200 0.916753 +v 0.125956 2.476200 1.016753 +v 0.125956 2.247670 1.245283 +v -0.125956 2.147670 1.245283 +v -0.125956 2.147670 -1.245283 +v 0.125956 2.247670 -1.245283 +v 0.125956 2.476200 -1.016753 +v -0.125956 2.476200 -0.916753 +v 0.125956 2.169381 1.490198 +v -0.125956 2.169381 1.490198 +v -0.125956 2.169381 -1.490198 +v 0.125956 2.169381 -1.490198 +v 0.125956 2.528616 -1.138464 +v -0.125956 2.528616 -1.138464 +vt 0.252094 0.849975 +vt 0.042974 0.861955 +vt 0.042974 0.849975 +vt 0.053162 0.391169 +vt 0.367026 0.342882 +vt 0.367026 0.391169 +vt 0.900109 0.004875 +vt 0.912088 0.204338 +vt 0.900109 0.204338 +vt 0.053162 0.053162 +vt 0.367026 0.004876 +vt 0.367026 0.053162 +vt 0.415312 0.053162 +vt 0.415313 0.342882 +vt 0.004875 0.342883 +vt 0.053162 0.342883 +vt 0.286651 0.425519 +vt 0.318739 0.690640 +vt 0.286651 0.666041 +vt 0.226812 0.768416 +vt 0.271682 0.780396 +vt 0.226812 0.780396 +vt 0.856649 0.036087 +vt 0.868628 0.232469 +vt 0.856648 0.232469 +vt 0.103747 0.099831 +vt 0.334938 0.077761 +vt 0.334938 0.318284 +vt 0.125817 0.077761 +vt 0.125817 0.318284 +vt 0.055461 0.457246 +vt 0.004875 0.690640 +vt 0.004875 0.400920 +vt 0.087188 0.425519 +vt 0.318739 0.400920 +vt 0.055460 0.634314 +vt 0.087188 0.666041 +vt 0.103747 0.296214 +vt 0.049744 0.780396 +vt 0.049744 0.768416 +vt 0.004875 0.768416 +vt 0.004875 0.780396 +vt 0.414924 0.449983 +vt 0.390596 0.400920 +vt 0.414924 0.400920 +vt 0.856648 0.263681 +vt 0.868628 0.263681 +vt 0.923050 0.472894 +vt 0.911071 0.273431 +vt 0.923050 0.273431 +vt 0.868628 0.004875 +vt 0.868628 0.036087 +vt 0.890358 0.245395 +vt 0.878378 0.004875 +vt 0.890358 0.004875 +vt 0.896898 0.839383 +vt 0.884919 0.598863 +vt 0.896898 0.598863 +vt 0.430107 0.236244 +vt 0.425246 0.039582 +vt 0.430253 0.060865 +vt 0.461883 0.029415 +vt 0.459928 0.004875 +vt 0.664327 0.329425 +vt 0.459896 0.302054 +vt 0.668618 0.304997 +vt 0.664320 0.561413 +vt 0.459690 0.589112 +vt 0.452012 0.564649 +vt 0.461669 0.267743 +vt 0.425063 0.257528 +vt 0.668618 0.585734 +vt 0.042974 0.840225 +vt 0.252094 0.828245 +vt 0.252094 0.840225 +vt 0.414924 0.718936 +vt 0.390596 0.669873 +vt 0.414924 0.669873 +vt 0.822570 0.301526 +vt 0.846898 0.507007 +vt 0.822570 0.507007 +vt 0.390596 0.449983 +vt 0.812885 0.291775 +vt 0.788557 0.004875 +vt 0.812885 0.004875 +vt 0.764559 0.508596 +vt 0.740232 0.303115 +vt 0.764559 0.303115 +vt 0.452216 0.326499 +vt 0.425247 0.336687 +vt 0.664083 0.032287 +vt 0.668374 0.288821 +vt 0.664077 0.264516 +vt 0.425063 0.554433 +vt 0.430094 0.542765 +vt 0.430257 0.348360 +vt 0.668374 0.007875 +vt 0.459720 0.292303 +vt 0.252094 0.861955 +vt 0.912088 0.004875 +vt 0.053162 0.004875 +vt 0.004875 0.053162 +vt 0.271682 0.768416 +vt 0.911071 0.472894 +vt 0.856649 0.004875 +vt 0.878379 0.245395 +vt 0.884919 0.839383 +vt 0.042974 0.828245 +vt 0.390596 0.718936 +vt 0.846898 0.301526 +vt 0.788557 0.291775 +vt 0.740231 0.508596 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.6996 0.7145 +vn 0.0000 -0.6996 -0.7145 +vn 0.0000 0.0023 -1.0000 +vn 0.0000 0.0023 1.0000 +s off +f 339/485/67 369/486/67 353/487/67 +f 344/488/67 346/489/67 341/490/67 +f 371/491/68 338/492/68 364/493/68 +f 348/494/68 342/495/68 347/496/68 +f 346/489/69 342/497/69 341/498/69 +f 344/499/70 348/494/70 345/500/70 +f 338/501/71 342/502/71 337/503/71 +f 367/504/72 350/505/72 349/506/72 +f 354/507/69 373/508/69 355/509/69 +f 354/510/73 345/500/73 348/494/73 +f 339/511/73 346/489/73 340/512/73 +f 353/513/73 347/496/73 339/511/73 +f 356/514/73 346/489/73 345/500/73 +f 352/515/71 343/516/71 344/517/71 +f 351/518/71 341/519/71 338/501/71 +f 349/520/71 350/521/71 343/516/71 +f 351/518/71 352/515/71 344/517/71 +f 353/513/73 354/510/73 348/494/73 +f 355/522/73 356/514/73 345/500/73 +f 367/504/69 352/523/69 374/524/69 +f 371/525/74 352/523/74 351/526/74 +f 350/521/71 342/502/71 343/516/71 +f 379/527/75 377/528/75 378/529/75 +f 356/530/74 373/508/74 372/531/74 +f 366/532/67 350/533/67 370/534/67 +f 354/507/72 369/535/72 368/536/72 +f 365/537/70 340/538/70 363/539/70 +f 337/540/70 364/541/70 338/542/70 +f 374/543/73 358/544/73 367/545/73 +f 370/546/73 358/544/73 376/547/73 +f 363/548/71 378/549/71 362/550/71 +f 365/551/71 375/552/71 369/553/71 +f 371/554/73 380/555/73 374/543/73 +f 363/548/71 360/556/71 365/551/71 +f 356/557/68 363/558/68 340/559/68 +f 375/560/76 358/561/76 357/562/76 +f 376/563/77 360/564/77 359/565/77 +f 380/566/69 357/562/69 358/561/69 +f 362/567/70 359/568/70 360/569/70 +f 361/570/78 378/571/78 377/572/78 +f 372/573/71 379/574/71 378/549/71 +f 366/575/73 361/576/73 364/577/73 +f 369/553/71 357/578/71 368/579/71 +f 373/580/71 357/578/71 379/574/71 +f 366/575/73 376/547/73 359/581/73 +f 364/577/73 377/582/73 371/554/73 +f 339/485/67 365/583/67 369/486/67 +f 344/488/67 345/500/67 346/489/67 +f 371/491/68 351/584/68 338/492/68 +f 348/494/68 343/585/68 342/495/68 +f 346/489/69 347/496/69 342/497/69 +f 344/499/70 343/586/70 348/494/70 +f 338/501/71 341/519/71 342/502/71 +f 367/504/72 370/587/72 350/505/72 +f 354/507/69 368/536/69 373/508/69 +f 354/510/73 355/522/73 345/500/73 +f 339/511/73 347/496/73 346/489/73 +f 353/513/73 348/494/73 347/496/73 +f 356/514/73 340/512/73 346/489/73 +f 352/515/71 349/520/71 343/516/71 +f 351/518/71 344/517/71 341/519/71 +f 367/504/69 349/506/69 352/523/69 +f 371/525/74 374/524/74 352/523/74 +f 350/521/71 337/503/71 342/502/71 +f 379/527/75 380/566/75 377/528/75 +f 356/530/74 355/509/74 373/508/74 +f 366/532/67 337/588/67 350/533/67 +f 354/507/72 353/589/72 369/535/72 +f 365/537/70 339/590/70 340/538/70 +f 337/540/70 366/591/70 364/541/70 +f 374/543/73 380/555/73 358/544/73 +f 370/546/73 367/545/73 358/544/73 +f 363/548/71 372/573/71 378/549/71 +f 365/551/71 360/556/71 375/552/71 +f 371/554/73 377/582/73 380/555/73 +f 363/548/71 362/550/71 360/556/71 +f 356/557/68 372/592/68 363/558/68 +f 375/560/76 376/593/76 358/561/76 +f 376/563/77 375/594/77 360/564/77 +f 380/566/69 379/527/69 357/562/69 +f 362/567/70 361/595/70 359/568/70 +f 361/570/78 362/596/78 378/571/78 +f 372/573/71 373/580/71 379/574/71 +f 366/575/73 359/581/73 361/576/73 +f 369/553/71 375/552/71 357/578/71 +f 373/580/71 368/579/71 357/578/71 +f 366/575/73 370/546/73 376/547/73 +f 364/577/73 361/576/73 377/582/73 +o decal +v -0.074985 1.303216 -0.467952 +v -0.074985 1.303216 0.467952 +v -0.074985 2.239120 -0.467952 +v -0.074985 2.239120 0.467952 +v 0.074985 1.303216 0.467952 +v 0.074985 1.303216 -0.467952 +v 0.074985 2.239120 0.467952 +v 0.074985 2.239120 -0.467952 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 1.000000 +vt 1.000000 1.000000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 -0.0000 +s off +f 382/597/79 383/598/79 381/599/79 +f 386/600/80 387/601/80 385/602/80 +f 382/597/79 384/603/79 383/598/79 +f 386/600/80 388/604/80 387/601/80 diff --git a/src/main/resources/assets/hbm/models/doors/qe_sliding_door.obj b/src/main/resources/assets/hbm/models/doors/qe_sliding_door.obj new file mode 100644 index 000000000..66bd1e8ce --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/qe_sliding_door.obj @@ -0,0 +1,2312 @@ +# Blender v2.92.0 OBJ File: 'qe_sliding_door.blend' +# www.blender.org +o leftDoor +v 0.030935 0.772401 0.150776 +v 0.030935 0.972661 0.150776 +v 0.075000 0.088688 0.911312 +v 0.075000 1.911312 0.911312 +v 0.075000 0.088688 0.088688 +v 0.075000 1.911312 0.088688 +v 0.075000 2.000000 1.000000 +v 0.075000 0.000000 1.000000 +v 0.012500 1.861312 0.861312 +v 0.012500 0.138688 0.861312 +v 0.012500 0.138688 0.138688 +v 0.012500 1.861312 0.138688 +v 0.012500 0.733440 0.267519 +v 0.012500 0.988637 0.267519 +v 0.075000 0.655676 0.088688 +v 0.075000 1.166712 0.088688 +v 0.012500 1.166712 0.138688 +v 0.012500 0.655676 0.138688 +v 0.075000 0.733440 0.217519 +v 0.075000 0.988637 0.217519 +v 0.026895 0.753307 0.256002 +v 0.023223 0.758010 0.253518 +v 0.026895 0.753307 0.872828 +v 0.023223 0.758010 0.875312 +v 0.026895 0.834000 0.872828 +v 0.023223 0.829297 0.875312 +v 0.026895 0.834000 0.256002 +v 0.023223 0.829297 0.253518 +v 0.012500 0.753307 0.861312 +v 0.011573 0.758010 0.866015 +v 0.012500 0.753307 0.267519 +v 0.011573 0.758010 0.262816 +v 0.012500 0.834000 0.861312 +v 0.011573 0.829297 0.866015 +v 0.012500 0.834000 0.267519 +v 0.011573 0.829297 0.262816 +v 0.026895 0.873731 0.256002 +v 0.023223 0.878434 0.253518 +v 0.026895 0.873731 0.872828 +v 0.023223 0.878434 0.875312 +v 0.026895 0.954424 0.872828 +v 0.023223 0.949722 0.875312 +v 0.026895 0.954424 0.256002 +v 0.023223 0.949722 0.253518 +v 0.012500 0.873731 0.861312 +v 0.011573 0.878434 0.866015 +v 0.012500 0.873731 0.267519 +v 0.011573 0.878434 0.262816 +v 0.012500 0.954424 0.861312 +v 0.011573 0.949722 0.866015 +v 0.012500 0.954424 0.267519 +v 0.011573 0.949722 0.262816 +v 0.023223 0.758010 0.252557 +v 0.023223 0.829297 0.252557 +v 0.023223 0.758010 0.880367 +v 0.023223 0.829297 0.880367 +v 0.023223 0.878434 0.252557 +v 0.023223 0.949722 0.252557 +v 0.023223 0.878434 0.880367 +v 0.023223 0.949722 0.880367 +v 0.075000 0.772401 0.150776 +v 0.075000 0.972661 0.150776 +v -0.030935 0.772401 0.150776 +v -0.030935 0.972661 0.150776 +v -0.075000 0.088688 0.911312 +v -0.075000 1.911312 0.911312 +v -0.075000 0.088688 0.088688 +v -0.075000 1.911312 0.088688 +v -0.075000 2.000000 1.000000 +v -0.075000 0.000000 1.000000 +v -0.012500 1.861312 0.861312 +v -0.012500 0.138688 0.861312 +v -0.012500 0.138688 0.138688 +v -0.012500 1.861312 0.138688 +v -0.012500 0.733440 0.267519 +v -0.012500 0.988637 0.267519 +v -0.075000 0.655676 0.088688 +v -0.075000 1.166712 0.088688 +v -0.012500 1.166712 0.138688 +v -0.012500 0.655676 0.138688 +v -0.075000 0.733440 0.217519 +v -0.075000 0.988637 0.217519 +v -0.026895 0.753307 0.256002 +v -0.023223 0.758010 0.253518 +v -0.026895 0.753307 0.872828 +v -0.023223 0.758010 0.875312 +v -0.026895 0.834000 0.872828 +v -0.023223 0.829297 0.875312 +v -0.026895 0.834000 0.256002 +v -0.023223 0.829297 0.253518 +v -0.012500 0.753307 0.861312 +v -0.011573 0.758010 0.866015 +v -0.012500 0.753307 0.267519 +v -0.011573 0.758010 0.262816 +v -0.012500 0.834000 0.861312 +v -0.011573 0.829297 0.866015 +v -0.012500 0.834000 0.267519 +v -0.011573 0.829297 0.262816 +v -0.026895 0.873731 0.256002 +v -0.023223 0.878434 0.253518 +v -0.026895 0.873731 0.872828 +v -0.023223 0.878434 0.875312 +v -0.026895 0.954424 0.872828 +v -0.023223 0.949722 0.875312 +v -0.026895 0.954424 0.256002 +v -0.023223 0.949722 0.253518 +v -0.012500 0.873731 0.861312 +v -0.011573 0.878434 0.866015 +v -0.012500 0.873731 0.267519 +v -0.011573 0.878434 0.262816 +v -0.012500 0.954424 0.861312 +v -0.011573 0.949722 0.866015 +v -0.012500 0.954424 0.267519 +v -0.011573 0.949722 0.262816 +v -0.023223 0.758010 0.252557 +v -0.023223 0.829297 0.252557 +v -0.023223 0.758010 0.880367 +v -0.023223 0.829297 0.880367 +v -0.023223 0.878434 0.252557 +v -0.023223 0.949722 0.252557 +v -0.023223 0.878434 0.880367 +v -0.023223 0.949722 0.880367 +v -0.075000 0.772401 0.150776 +v -0.075000 0.972661 0.150776 +v 0.065000 0.000000 0.000000 +v 0.075000 0.000000 0.010000 +v 0.065000 2.000000 0.000000 +v 0.075000 2.000000 0.010000 +v 0.065000 0.655676 0.000000 +v 0.075000 0.655676 0.010000 +v 0.065000 1.166712 0.000000 +v 0.075000 1.166712 0.010000 +v 0.065000 0.733440 0.000000 +v 0.075000 0.733440 0.010000 +v 0.065000 0.988637 0.000000 +v 0.075000 0.988637 0.010000 +v 0.065000 0.982661 0.000000 +v 0.075000 0.972661 0.010000 +v 0.065000 0.762401 0.000000 +v 0.075000 0.772401 0.010000 +v 0.020935 0.982661 0.000000 +v 0.030935 0.972661 0.010000 +v 0.020935 0.762401 0.000000 +v 0.030935 0.772401 0.010000 +v -0.065000 0.000000 0.000000 +v -0.075000 0.000000 0.010000 +v -0.065000 2.000000 0.000000 +v -0.075000 2.000000 0.010000 +v -0.065000 0.655676 0.000000 +v -0.075000 0.655676 0.010000 +v -0.065000 1.166712 0.000000 +v -0.075000 1.166712 0.010000 +v -0.065000 0.733440 0.000000 +v -0.075000 0.733440 0.010000 +v -0.065000 0.988637 0.000000 +v -0.075000 0.988637 0.010000 +v -0.065000 0.982661 0.000000 +v -0.075000 0.972661 0.010000 +v -0.065000 0.762401 0.000000 +v -0.075000 0.772401 0.010000 +v -0.020935 0.982661 0.000000 +v -0.030935 0.972661 0.010000 +v -0.020935 0.762401 0.000000 +v -0.030935 0.772401 0.010000 +v -0.075000 0.954424 0.911312 +v -0.075000 0.753307 0.911312 +v 0.075000 0.954424 0.911312 +v 0.075000 0.753307 0.911312 +v 0.075000 0.954424 1.000000 +v 0.075000 0.753307 1.000000 +v -0.075000 0.954424 1.000000 +v -0.075000 0.753307 1.000000 +v -0.053113 0.981602 0.127840 +v -0.053113 0.753528 0.127840 +v -0.066310 0.981602 0.120221 +v -0.066310 0.753528 0.120221 +v -0.066310 0.981602 0.104982 +v -0.066310 0.753528 0.104982 +v -0.053113 0.981602 0.097362 +v -0.053113 0.753528 0.097362 +v -0.039915 0.981602 0.104982 +v -0.039915 0.753528 0.104982 +v -0.039915 0.981602 0.120221 +v -0.039915 0.753528 0.120221 +v -0.032467 0.940925 -0.136816 +v -0.032467 0.927874 -0.136816 +v -0.032467 0.940925 0.131365 +v -0.032467 0.927874 0.131365 +v -0.073758 0.940925 -0.136816 +v -0.073758 0.927874 -0.136816 +v -0.073758 0.940925 0.131365 +v -0.073758 0.927874 0.131365 +v -0.032467 0.818858 -0.136816 +v -0.032467 0.805807 -0.136816 +v -0.032467 0.818858 0.131365 +v -0.032467 0.805807 0.131365 +v -0.073758 0.818858 -0.136816 +v -0.073758 0.805807 -0.136816 +v -0.073758 0.818858 0.131365 +v -0.073758 0.805807 0.131365 +v -0.053113 0.939957 -0.088549 +v -0.053113 0.813798 -0.088550 +v -0.071903 0.939957 -0.099398 +v -0.071903 0.813798 -0.099398 +v -0.071903 0.939957 -0.121096 +v -0.071903 0.813798 -0.121096 +v -0.053113 0.939957 -0.131945 +v -0.053113 0.813798 -0.131945 +v -0.034322 0.939957 -0.121096 +v -0.034322 0.813798 -0.121096 +v -0.034322 0.939957 -0.099398 +v -0.034322 0.813798 -0.099398 +v 0.012500 1.861312 0.861312 +v 0.012500 0.138688 0.861312 +v 0.012500 0.138688 0.138688 +v 0.012500 1.861312 0.138688 +v 0.012500 0.733440 0.267519 +v 0.012500 0.988637 0.267519 +v 0.012500 1.166712 0.138688 +v 0.012500 0.655676 0.138688 +v 0.012500 0.753307 0.861312 +v 0.011573 0.758010 0.866015 +v 0.012500 0.753307 0.267519 +v 0.011573 0.758010 0.262816 +v 0.012500 0.834000 0.861312 +v 0.011573 0.829297 0.866015 +v 0.012500 0.834000 0.267519 +v 0.011573 0.829297 0.262816 +v 0.012500 0.873731 0.861312 +v 0.011573 0.878434 0.866015 +v 0.012500 0.873731 0.267519 +v 0.011573 0.878434 0.262816 +v 0.012500 0.954424 0.861312 +v 0.011573 0.949722 0.866015 +v 0.012500 0.954424 0.267519 +v 0.011573 0.949722 0.262816 +v -0.012500 1.861312 0.861312 +v -0.012500 0.138688 0.861312 +v -0.012500 0.138688 0.138688 +v -0.012500 1.861312 0.138688 +v -0.012500 0.733440 0.267519 +v -0.012500 0.988637 0.267519 +v -0.012500 1.166712 0.138688 +v -0.012500 0.655676 0.138688 +v -0.012500 0.753307 0.861312 +v -0.011573 0.758010 0.866015 +v -0.012500 0.753307 0.267519 +v -0.011573 0.758010 0.262816 +v -0.012500 0.834000 0.861312 +v -0.011573 0.829297 0.866015 +v -0.012500 0.834000 0.267519 +v -0.011573 0.829297 0.262816 +v -0.012500 0.873731 0.861312 +v -0.011573 0.878434 0.866015 +v -0.012500 0.873731 0.267519 +v -0.011573 0.878434 0.262816 +v -0.012500 0.954424 0.861312 +v -0.011573 0.949722 0.866015 +v -0.012500 0.954424 0.267519 +v -0.011573 0.949722 0.262816 +vt 0.727731 0.909684 +vt 0.717217 0.861903 +vt 0.727731 0.861903 +vt 0.994311 0.103548 +vt 0.958521 0.339756 +vt 0.958521 0.103548 +vt 0.883586 0.940828 +vt 0.877670 0.942230 +vt 0.878053 0.940634 +vt 0.857471 0.136616 +vt 0.838387 0.302232 +vt 0.838387 0.124694 +vt 0.401117 0.005690 +vt 0.559691 0.026850 +vt 0.401117 0.026850 +vt 0.413762 0.782316 +vt 0.549042 0.763542 +vt 0.549042 0.782317 +vt 0.819625 0.302232 +vt 0.425692 0.801413 +vt 0.711314 0.382154 +vt 0.692217 0.566498 +vt 0.692217 0.370225 +vt 0.248180 0.728437 +vt 0.063836 0.709339 +vt 0.260109 0.709340 +vt 0.804820 0.331268 +vt 0.769031 0.580736 +vt 0.769031 0.331268 +vt 0.136754 0.051912 +vt 0.353132 0.045947 +vt 0.353132 0.051912 +vt 0.075766 0.734402 +vt 0.075766 0.728437 +vt 0.091858 0.900883 +vt 0.092397 0.931216 +vt 0.073304 0.931621 +vt 0.048047 0.923951 +vt 0.547761 0.045947 +vt 0.401117 0.051912 +vt 0.401117 0.045947 +vt 0.090428 0.866950 +vt 0.132915 0.885725 +vt 0.090428 0.885725 +vt 0.132915 0.836212 +vt 0.085677 0.848454 +vt 0.128164 0.817715 +vt 0.873687 0.631974 +vt 0.894191 0.606510 +vt 0.904705 0.631974 +vt 0.612014 0.873137 +vt 0.564233 0.873137 +vt 0.560421 0.857213 +vt 0.927871 0.057405 +vt 0.917358 0.090994 +vt 0.917358 0.057405 +vt 0.863432 0.302232 +vt 0.857471 0.302232 +vt 0.353132 0.041548 +vt 0.136754 0.045947 +vt 0.621310 0.857213 +vt 0.587837 0.842515 +vt 0.711314 0.554568 +vt 0.717279 0.382154 +vt 0.717279 0.554568 +vt 0.124668 0.812883 +vt 0.909280 0.919388 +vt 0.903479 0.920905 +vt 0.903374 0.919265 +vt 0.598908 0.941632 +vt 0.599882 0.924151 +vt 0.599882 0.942747 +vt 0.912069 0.938667 +vt 0.913157 0.921031 +vt 0.913157 0.939831 +vt 0.595651 0.923166 +vt 0.595950 0.921479 +vt 0.590064 0.923387 +vt 0.589668 0.921765 +vt 0.909011 0.940828 +vt 0.909311 0.942491 +vt 0.918708 0.873065 +vt 0.912874 0.871208 +vt 0.918408 0.871402 +vt 0.595840 0.942876 +vt 0.596024 0.944398 +vt 0.909105 0.920915 +vt 0.921466 0.869241 +vt 0.922554 0.851605 +vt 0.922554 0.870405 +vt 0.886645 0.938667 +vt 0.887733 0.921031 +vt 0.887733 0.939831 +vt 0.381864 0.045947 +vt 0.372385 0.051912 +vt 0.372385 0.045947 +vt 0.883680 0.920915 +vt 0.883856 0.919388 +vt 0.918502 0.851489 +vt 0.918677 0.849962 +vt 0.912876 0.851479 +vt 0.912771 0.849839 +vt 0.883887 0.942491 +vt 0.200475 0.935830 +vt 0.183466 0.786038 +vt 0.200475 0.786038 +vt 0.392602 0.916184 +vt 0.542394 0.899175 +vt 0.542394 0.916184 +vt 0.144294 0.786038 +vt 0.155376 0.935830 +vt 0.144294 0.935830 +vt 0.736376 0.566497 +vt 0.757536 0.351450 +vt 0.757536 0.587658 +vt 0.760166 0.808558 +vt 0.749652 0.842147 +vt 0.749652 0.808558 +vt 0.761319 0.909684 +vt 0.761319 0.861903 +vt 0.542394 0.860003 +vt 0.392602 0.871085 +vt 0.392602 0.860003 +vt 0.392602 0.888093 +vt 0.542394 0.888093 +vt 0.560421 0.838116 +vt 0.568584 0.832151 +vt 0.568584 0.838116 +vt 0.597317 0.838116 +vt 0.587837 0.832151 +vt 0.597317 0.832151 +vt 0.172385 0.935830 +vt 0.172385 0.786038 +vt 0.590227 0.942930 +vt 0.621310 0.838116 +vt 0.616570 0.832151 +vt 0.621310 0.832151 +vt 0.110951 0.900478 +vt 0.097503 0.934298 +vt 0.903477 0.940634 +vt 0.549042 0.801413 +vt 0.425692 0.807378 +vt 0.211854 0.900206 +vt 0.222368 0.852425 +vt 0.222368 0.900206 +vt 0.882516 0.302232 +vt 0.863432 0.136616 +vt 0.882516 0.124694 +vt 0.559691 0.071009 +vt 0.401117 0.092169 +vt 0.401117 0.071009 +vt 0.413762 0.826475 +vt 0.549042 0.845250 +vt 0.392602 0.845250 +vt 0.901278 0.302232 +vt 0.549042 0.826475 +vt 0.549042 0.807378 +vt 0.736376 0.370225 +vt 0.063837 0.753498 +vt 0.248180 0.734401 +vt 0.260109 0.753498 +vt 0.124594 0.920643 +vt 0.106040 0.951381 +vt 0.124594 0.970155 +vt 0.066099 0.833322 +vt 0.061559 0.787093 +vt 0.108586 0.802584 +vt 0.082180 0.843621 +vt 0.045062 0.774659 +vt 0.560421 0.813054 +vt 0.612014 0.797130 +vt 0.621310 0.813054 +vt 0.917358 0.005689 +vt 0.927871 0.039278 +vt 0.917358 0.039278 +vt 0.353132 0.071009 +vt 0.124824 0.071009 +vt 0.597317 0.827753 +vt 0.587837 0.827753 +vt 0.585860 0.943106 +vt 0.587029 0.925646 +vt 0.586842 0.941897 +vt 0.899112 0.920791 +vt 0.900475 0.938441 +vt 0.899407 0.939584 +vt 0.585893 0.924471 +vt 0.903094 0.942230 +vt 0.590140 0.944568 +vt 0.900106 0.921973 +vt 0.908509 0.851365 +vt 0.909872 0.869015 +vt 0.908804 0.870158 +vt 0.873687 0.920791 +vt 0.875051 0.938442 +vt 0.873983 0.939584 +vt 0.912492 0.872804 +vt 0.878055 0.920905 +vt 0.874681 0.921973 +vt 0.909503 0.852547 +vt 0.155376 0.786038 +vt 0.542394 0.871085 +vt 0.692387 0.083838 +vt 0.725975 0.073325 +vt 0.725975 0.083838 +vt 0.255956 0.852425 +vt 0.255956 0.900206 +vt 0.045062 0.688179 +vt 0.817642 0.952534 +vt 0.781852 0.716326 +vt 0.817642 0.716326 +vt 0.877950 0.919265 +vt 0.561847 0.910100 +vt 0.560421 0.906726 +vt 0.564233 0.906726 +vt 0.053706 0.941940 +vt 0.056692 0.940368 +vt 0.132915 0.889099 +vt 0.394988 0.760168 +vt 0.549042 0.760168 +vt 0.816200 0.302233 +vt 0.819626 0.103548 +vt 0.621310 0.906726 +vt 0.614400 0.910100 +vt 0.612014 0.906726 +vt 0.757780 0.845521 +vt 0.747266 0.845521 +vt 0.764693 0.859517 +vt 0.925485 0.054031 +vt 0.991925 0.343130 +vt 0.994311 0.339756 +vt 0.784238 0.712952 +vt 0.561847 0.760168 +vt 0.560421 0.763542 +vt 0.560421 0.760168 +vt 0.106040 0.970155 +vt 0.124594 0.973530 +vt 0.106040 0.973530 +vt 0.045062 0.826392 +vt 0.058354 0.786038 +vt 0.549042 0.848624 +vt 0.904705 0.105933 +vt 0.904705 0.302233 +vt 0.621310 0.763542 +vt 0.614400 0.760168 +vt 0.621310 0.760168 +vt 0.689012 0.075710 +vt 0.692387 0.073325 +vt 0.259330 0.850040 +vt 0.259330 0.902592 +vt 0.925485 0.042652 +vt 0.914972 0.042652 +vt 0.671057 0.351450 +vt 0.124824 0.026850 +vt 0.353132 0.005690 +vt 0.353132 0.026850 +vt 0.769031 0.283283 +vt 0.804820 0.283283 +vt 0.353132 0.092169 +vt 0.103663 0.092169 +vt 0.401117 0.056310 +vt 0.547761 0.051912 +vt 0.381864 0.056310 +vt 0.372385 0.056310 +vt 0.769031 0.103548 +vt 0.804820 0.103548 +vt 0.372385 0.041548 +vt 0.381864 0.041548 +vt 0.458081 0.526437 +vt 0.607011 0.526438 +vt 0.462895 0.670321 +vt 0.831325 0.715192 +vt 0.840009 0.715191 +vt 0.840030 0.844974 +vt 0.295376 0.106106 +vt 0.439436 0.106106 +vt 0.439436 0.114406 +vt 0.557651 0.368753 +vt 0.560208 0.513936 +vt 0.557674 0.512813 +vt 0.007994 0.658645 +vt 0.016699 0.788428 +vt 0.008015 0.788429 +vt 0.106169 0.527870 +vt 0.250053 0.527870 +vt 0.250053 0.532684 +vt 0.717217 0.909684 +vt 0.580852 0.005690 +vt 0.392602 0.763542 +vt 0.804820 0.580736 +vt 0.904705 0.510044 +vt 0.904705 0.552531 +vt 0.894191 0.553957 +vt 0.904705 0.553958 +vt 0.873688 0.313612 +vt 0.904705 0.313612 +vt 0.873687 0.553957 +vt 0.873687 0.552531 +vt 0.884201 0.553957 +vt 0.873687 0.510044 +vt 0.873687 0.613420 +vt 0.873687 0.606510 +vt 0.884201 0.606510 +vt 0.904705 0.606510 +vt 0.904705 0.613420 +vt 0.873687 0.786029 +vt 0.904705 0.786029 +vt 0.927871 0.090994 +vt 0.568584 0.842515 +vt 0.587837 0.838116 +vt 0.597317 0.842515 +vt 0.616570 0.838116 +vt 0.616570 0.842515 +vt 0.598757 0.925348 +vt 0.912182 0.922144 +vt 0.921579 0.852718 +vt 0.886758 0.922144 +vt 0.381864 0.051912 +vt 0.183466 0.935830 +vt 0.392602 0.899175 +vt 0.760166 0.842147 +vt 0.560421 0.832151 +vt 0.116057 0.903560 +vt 0.211854 0.852425 +vt 0.580852 0.092169 +vt 0.901278 0.103548 +vt 0.048267 0.827448 +vt 0.281270 0.774659 +vt 0.564233 0.797130 +vt 0.564233 0.763542 +vt 0.612014 0.763542 +vt 0.927871 0.005689 +vt 0.353132 0.056310 +vt 0.568584 0.827753 +vt 0.616570 0.827753 +vt 0.281270 0.688179 +vt 0.781852 0.952534 +vt 0.560421 0.910100 +vt 0.045062 0.925523 +vt 0.090428 0.889099 +vt 0.816199 0.105971 +vt 0.621310 0.910100 +vt 0.764693 0.912070 +vt 0.914972 0.054031 +vt 0.960907 0.343130 +vt 0.815256 0.712952 +vt 0.394988 0.848624 +vt 0.689012 0.086224 +vt 0.671057 0.587658 +vt 0.401117 0.041548 +vt 0.103663 0.005689 +vt 0.607011 0.701538 +vt 0.481738 0.701538 +vt 0.458081 0.670321 +vt 0.455526 0.672827 +vt 0.455550 0.525315 +vt 0.831346 0.844976 +vt 0.829021 0.847215 +vt 0.829021 0.714139 +vt 0.842335 0.712952 +vt 0.842335 0.846028 +vt 0.292867 0.103548 +vt 0.440560 0.103572 +vt 0.470692 0.326126 +vt 0.295376 0.326126 +vt 0.470692 0.157609 +vt 0.337654 0.512849 +vt 0.506142 0.337506 +vt 0.337625 0.337533 +vt 0.549350 0.368754 +vt 0.560208 0.366244 +vt 0.016678 0.658644 +vt 0.019004 0.656405 +vt 0.019004 0.789481 +vt 0.005690 0.790668 +vt 0.005689 0.657592 +vt 0.281270 0.551527 +vt 0.281270 0.676800 +vt 0.106169 0.676800 +vt 0.103663 0.525315 +vt 0.251175 0.525339 +vt 0.264782 0.924581 +vt 0.211854 0.921044 +vt 0.264782 0.921044 +vt 0.264782 0.928117 +vt 0.211854 0.924580 +vt 0.211854 0.931653 +vt 0.211854 0.928117 +vt 0.264782 0.935190 +vt 0.264782 0.931653 +vt 0.264782 0.917508 +vt 0.211854 0.913971 +vt 0.264782 0.913971 +vt 0.211854 0.917508 +vt 0.643612 0.591953 +vt 0.640583 0.529718 +vt 0.643612 0.529718 +vt 0.627972 0.591953 +vt 0.631001 0.601535 +vt 0.627972 0.601535 +vt 0.631001 0.529718 +vt 0.631001 0.591953 +vt 0.627972 0.520135 +vt 0.627972 0.529718 +vt 0.618390 0.529718 +vt 0.618390 0.591953 +vt 0.640583 0.591953 +vt 0.030911 0.873865 +vt 0.027882 0.811629 +vt 0.030911 0.811629 +vt 0.015272 0.873865 +vt 0.018300 0.883447 +vt 0.015272 0.883447 +vt 0.018300 0.811629 +vt 0.018300 0.873865 +vt 0.015272 0.802047 +vt 0.015272 0.811629 +vt 0.005689 0.811629 +vt 0.005689 0.873865 +vt 0.027883 0.873865 +vt 0.858298 0.868664 +vt 0.829021 0.863629 +vt 0.858298 0.863629 +vt 0.829021 0.873700 +vt 0.829021 0.868664 +vt 0.858298 0.878735 +vt 0.858298 0.873700 +vt 0.858298 0.883770 +vt 0.829021 0.878735 +vt 0.858298 0.888806 +vt 0.829021 0.883770 +vt 0.829021 0.858594 +vt 0.858298 0.858594 +vt 0.211854 0.935190 +vt 0.631001 0.520135 +vt 0.018300 0.802047 +vt 0.829021 0.888806 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.6247 0.0000 0.7809 +vn 1.0000 0.0000 0.0000 +vn 0.6247 0.7809 0.0000 +vn 0.6247 -0.7809 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.3821 -0.7912 0.4776 +vn 0.5439 0.4919 0.6799 +vn 0.6247 0.0000 -0.7809 +vn 0.0000 0.5862 0.8102 +vn 0.0000 -0.7071 -0.7071 +vn -0.5602 0.0000 0.8283 +vn -0.5602 0.0000 -0.8283 +vn 0.4634 0.6706 0.5793 +vn 0.0000 0.7071 0.7071 +vn 0.4634 0.6706 -0.5793 +vn 0.0000 0.7071 -0.7071 +vn 0.4634 -0.6706 0.5792 +vn 0.4634 -0.6706 -0.5792 +vn 0.4634 -0.6706 -0.5793 +vn 0.4634 -0.6706 0.5793 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.8561 0.5168 +vn -0.6247 0.0000 0.7809 +vn -0.6247 0.7809 0.0000 +vn -0.6247 -0.7809 0.0000 +vn -0.3821 -0.7912 0.4776 +vn -0.5439 0.4919 0.6799 +vn -0.6247 0.0000 -0.7809 +vn 0.5602 0.0000 0.8283 +vn 0.5602 0.0000 -0.8283 +vn -0.4637 0.6689 0.5810 +vn -0.4634 0.6706 -0.5793 +vn -0.4634 -0.6706 0.5792 +vn -0.4637 -0.6689 -0.5810 +vn -0.4634 -0.6706 0.5793 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.9811 -0.1935 0.0000 +vn 0.4637 0.6689 0.5810 +vn 0.4637 0.6689 -0.5810 +vn 0.4637 -0.6689 0.5810 +vn 0.4637 -0.6689 -0.5810 +vn -0.5603 0.0000 0.8283 +vn -0.4634 0.6706 0.5793 +vn -0.4637 0.6689 -0.5810 +vn -0.4637 -0.6689 0.5810 +vn -0.4634 -0.6706 -0.5792 +vn 0.5603 0.0000 0.8283 +vn -0.4634 -0.6706 -0.5793 +vn 0.9811 0.1935 0.0000 +vn 0.9811 -0.1935 0.0000 +vn -0.9811 0.1935 0.0000 +vn -0.8660 0.0000 0.5000 +vn -0.8660 0.0000 -0.5000 +vn 0.8660 0.0000 -0.5000 +vn 0.8660 0.0000 0.5000 +vn 0.5773 0.5773 0.5773 +vn 0.5773 -0.5773 -0.5773 +vn 0.5773 0.5773 -0.5773 +vn -0.5773 0.5773 0.5773 +vn 0.5773 -0.5773 0.5773 +vn -0.5773 -0.5773 -0.5773 +vn -0.5773 -0.5773 0.5773 +vn -0.5773 0.5773 -0.5773 +s off +f 2/1/1 61/2/1 1/3/1 +f 7/4/2 148/5/2 69/6/2 +f 52/7/3 113/8/3 114/9/3 +f 12/10/4 16/11/4 6/12/4 +f 170/13/5 3/14/5 168/15/5 +f 5/16/5 130/17/5 15/18/5 +f 132/19/5 6/12/5 16/11/5 +f 15/18/4 11/20/4 5/16/4 +f 11/21/6 3/22/6 5/23/6 +f 9/24/7 6/25/7 4/26/7 +f 169/27/8 69/28/8 171/29/8 +f 71/30/1 49/31/1 111/32/1 +f 9/24/9 74/33/9 12/34/9 +f 19/35/10 18/36/10 15/37/10 +f 15/37/5 134/38/5 19/35/5 +f 10/39/1 91/40/1 29/41/1 +f 16/42/5 136/43/5 132/44/5 +f 20/45/11 17/46/11 14/47/11 +f 149/48/1 143/49/1 129/50/1 +f 61/51/5 62/52/5 20/53/5 +f 138/54/9 2/55/9 142/56/9 +f 12/10/8 79/57/8 17/58/8 +f 41/59/12 49/31/12 9/60/12 +f 19/61/4 20/53/4 37/62/4 +f 10/63/2 73/64/2 72/65/2 +f 17/46/13 76/66/13 14/47/13 +f 33/67/14 96/68/14 95/69/14 +f 28/70/15 21/71/15 27/72/15 +f 24/73/16 25/74/16 23/75/16 +f 21/71/17 32/76/17 31/77/17 +f 31/77/18 94/78/18 93/79/18 +f 30/80/19 23/75/19 29/81/19 +f 45/82/20 108/83/20 46/84/20 +f 36/85/21 27/72/21 35/86/21 +f 25/74/22 34/87/22 33/67/22 +f 40/88/16 41/89/16 39/90/16 +f 44/91/15 37/92/15 43/93/15 +f 33/94/1 107/95/1 45/96/1 +f 46/84/19 39/90/19 45/82/19 +f 37/92/17 48/97/17 47/98/17 +f 41/89/23 50/99/23 49/100/23 +f 49/100/14 112/101/14 111/102/14 +f 52/7/24 43/93/24 51/103/24 +f 53/104/5 56/105/5 55/106/5 +f 57/107/5 60/108/5 59/109/5 +f 55/110/9 115/111/9 53/112/9 +f 65/113/25 146/114/25 70/115/25 +f 61/116/2 144/117/2 1/118/2 +f 142/119/5 1/3/5 144/120/5 +f 59/121/9 119/122/9 57/123/9 +f 60/108/2 120/124/2 122/125/2 +f 14/126/8 113/127/8 51/128/8 +f 35/129/8 109/130/8 97/131/8 +f 56/105/2 116/132/2 118/133/2 +f 35/86/3 98/134/3 36/85/3 +f 13/135/8 93/136/8 75/137/8 +f 13/138/26 80/139/26 18/36/26 +f 29/81/20 92/140/20 30/80/20 +f 18/141/8 73/142/8 11/20/8 +f 123/143/1 64/144/1 63/145/1 +f 78/146/27 74/147/27 68/148/27 +f 65/149/25 172/150/25 166/151/25 +f 67/152/25 150/153/25 146/154/25 +f 68/148/25 152/155/25 78/146/25 +f 77/156/27 73/142/27 80/157/27 +f 65/113/28 73/64/28 67/158/28 +f 68/159/29 71/160/29 66/161/29 +f 80/139/30 81/162/30 77/163/30 +f 154/164/25 77/163/25 81/162/25 +f 78/165/25 156/166/25 82/167/25 +f 82/167/31 79/168/31 78/165/31 +f 66/161/25 148/169/25 68/159/25 +f 82/170/25 123/171/25 81/172/25 +f 64/173/9 158/174/9 162/175/9 +f 165/176/32 66/177/32 71/30/32 +f 81/172/27 89/178/27 99/179/27 +f 89/180/33 84/181/33 90/182/33 +f 87/183/34 86/184/34 85/185/34 +f 83/186/35 94/78/35 84/181/35 +f 85/185/36 92/140/36 91/187/36 +f 89/180/37 98/134/37 97/188/37 +f 87/183/38 96/68/38 88/189/38 +f 103/190/34 102/191/34 101/192/34 +f 99/193/33 106/194/33 105/195/33 +f 101/192/36 108/83/36 107/196/36 +f 99/193/35 110/197/35 100/198/35 +f 103/190/38 112/101/38 104/199/38 +f 105/195/39 114/9/39 113/8/39 +f 118/133/25 115/111/25 117/200/25 +f 122/125/25 119/122/25 121/201/25 +f 164/202/2 123/203/2 63/204/2 +f 63/145/25 162/205/25 164/206/25 +f 128/207/5 4/26/5 6/25/5 +f 8/208/9 146/209/9 126/210/9 +f 47/98/18 110/197/18 109/211/18 +f 137/212/40 136/213/40 138/214/40 +f 129/215/40 134/38/40 130/216/40 +f 135/217/40 132/44/40 136/43/40 +f 130/17/40 125/218/40 129/219/40 +f 131/220/40 128/221/40 132/19/40 +f 134/222/40 139/223/40 140/224/40 +f 144/117/20 139/225/20 143/226/20 +f 143/227/40 142/119/40 144/120/40 +f 142/56/14 137/228/14 138/54/14 +f 127/229/2 148/5/2 128/230/2 +f 145/231/9 126/210/9 146/209/9 +f 157/232/41 156/233/41 155/234/41 +f 150/235/41 153/236/41 149/237/41 +f 156/166/41 151/238/41 155/239/41 +f 149/240/41 146/154/41 150/153/41 +f 152/155/41 147/241/41 151/242/41 +f 154/243/41 159/244/41 153/245/41 +f 164/202/20 159/246/20 160/247/20 +f 164/206/41 161/248/41 163/249/41 +f 162/175/14 157/250/14 161/251/14 +f 3/22/5 126/252/5 5/23/5 +f 168/15/12 3/14/12 10/39/12 +f 4/253/5 169/254/5 167/255/5 +f 169/27/8 172/256/8 170/257/8 +f 66/177/25 171/258/25 69/259/25 +f 85/260/32 91/40/32 72/261/32 +f 87/262/32 165/176/32 101/263/32 +f 166/151/25 171/258/25 165/176/25 +f 170/257/8 70/264/8 8/265/8 +f 169/254/5 168/15/5 167/255/5 +f 39/266/12 167/255/12 25/267/12 +f 221/268/5 214/269/5 217/270/5 +f 229/271/5 225/272/5 227/273/5 +f 233/274/5 235/275/5 218/276/5 +f 259/277/42 258/278/42 257/279/42 +f 255/280/25 249/281/25 253/282/25 +f 245/283/25 247/284/25 241/285/25 +f 2/1/1 62/286/1 61/2/1 +f 7/4/2 128/230/2 148/5/2 +f 52/7/3 51/103/3 113/8/3 +f 12/10/4 17/58/4 16/11/4 +f 170/13/5 8/287/5 3/14/5 +f 5/16/5 126/288/5 130/17/5 +f 132/19/5 128/221/5 6/12/5 +f 15/18/4 18/141/4 11/20/4 +f 11/21/6 10/63/6 3/22/6 +f 9/24/7 12/34/7 6/25/7 +f 169/27/8 7/289/8 69/28/8 +f 71/30/1 9/60/1 49/31/1 +f 9/24/9 71/160/9 74/33/9 +f 19/35/10 13/138/10 18/36/10 +f 15/37/5 130/216/5 134/38/5 +f 10/39/1 72/261/1 91/40/1 +f 16/42/5 20/45/5 136/43/5 +f 20/45/11 16/42/11 17/46/11 +f 131/290/1 135/291/1 141/292/1 +f 135/291/1 137/293/1 141/292/1 +f 147/294/1 127/295/1 131/290/1 +f 157/296/1 155/297/1 161/298/1 +f 155/297/1 151/299/1 161/298/1 +f 151/299/1 147/294/1 131/290/1 +f 151/299/1 131/290/1 141/292/1 +f 153/300/1 159/301/1 163/302/1 +f 161/298/1 151/299/1 141/292/1 +f 149/48/1 153/300/1 163/302/1 +f 163/302/1 161/298/1 141/292/1 +f 143/49/1 139/303/1 133/304/1 +f 163/302/1 141/292/1 143/49/1 +f 145/305/1 149/48/1 129/50/1 +f 149/48/1 163/302/1 143/49/1 +f 129/50/1 125/306/1 145/305/1 +f 143/49/1 133/304/1 129/50/1 +f 19/61/5 134/222/5 61/51/5 +f 134/222/5 140/224/5 61/51/5 +f 138/214/5 136/213/5 62/52/5 +f 136/213/5 20/53/5 62/52/5 +f 19/61/5 61/51/5 20/53/5 +f 138/54/9 62/307/9 2/55/9 +f 12/10/8 74/147/8 79/57/8 +f 4/253/12 167/255/12 9/60/12 +f 167/255/12 41/59/12 9/60/12 +f 14/126/4 51/128/4 43/308/4 +f 37/62/4 47/309/4 35/129/4 +f 20/53/4 14/126/4 43/308/4 +f 37/62/4 35/129/4 27/310/4 +f 20/53/4 43/308/4 37/62/4 +f 31/311/4 13/135/4 21/312/4 +f 13/135/4 19/61/4 21/312/4 +f 37/62/4 27/310/4 19/61/4 +f 27/310/4 21/312/4 19/61/4 +f 10/63/2 11/21/2 73/64/2 +f 17/46/13 79/168/13 76/66/13 +f 33/67/14 34/87/14 96/68/14 +f 28/70/15 22/313/15 21/71/15 +f 24/73/16 26/314/16 25/74/16 +f 21/71/43 22/313/43 32/76/43 +f 31/77/18 32/76/18 94/78/18 +f 30/80/44 24/73/44 23/75/44 +f 45/82/20 107/196/20 108/83/20 +f 36/85/45 28/70/45 27/72/45 +f 25/74/46 26/314/46 34/87/46 +f 40/88/16 42/315/16 41/89/16 +f 44/91/47 38/316/47 37/92/47 +f 33/94/1 95/317/1 107/95/1 +f 46/84/44 40/88/44 39/90/44 +f 37/92/43 38/316/43 48/97/43 +f 41/89/46 42/315/46 50/99/46 +f 49/100/14 50/99/14 112/101/14 +f 52/7/45 44/91/45 43/93/45 +f 53/104/5 54/318/5 56/105/5 +f 57/107/5 58/319/5 60/108/5 +f 55/110/9 117/200/9 115/111/9 +f 65/113/25 67/158/25 146/114/25 +f 61/116/2 140/320/2 144/117/2 +f 142/119/5 2/1/5 1/3/5 +f 59/121/9 121/201/9 119/122/9 +f 60/108/2 58/319/2 120/124/2 +f 14/126/8 76/321/8 113/127/8 +f 35/129/8 47/309/8 109/130/8 +f 56/105/2 54/318/2 116/132/2 +f 35/86/3 97/188/3 98/134/3 +f 13/135/8 31/311/8 93/136/8 +f 13/138/26 75/322/26 80/139/26 +f 29/81/20 91/187/20 92/140/20 +f 18/141/8 80/157/8 73/142/8 +f 123/143/1 124/323/1 64/144/1 +f 78/146/27 79/57/27 74/147/27 +f 65/149/25 70/324/25 172/150/25 +f 67/152/25 77/156/25 150/153/25 +f 68/148/25 148/325/25 152/155/25 +f 77/156/27 67/152/27 73/142/27 +f 65/113/28 72/65/28 73/64/28 +f 68/159/29 74/33/29 71/160/29 +f 80/139/30 75/322/30 81/162/30 +f 154/164/25 150/235/25 77/163/25 +f 78/165/25 152/326/25 156/166/25 +f 82/167/31 76/66/31 79/168/31 +f 66/161/25 69/327/25 148/169/25 +f 82/170/25 156/233/25 124/328/25 +f 156/233/25 158/329/25 124/328/25 +f 160/330/25 154/243/25 123/171/25 +f 154/243/25 81/172/25 123/171/25 +f 82/170/25 124/328/25 123/171/25 +f 64/173/9 124/331/9 158/174/9 +f 111/32/32 103/332/32 71/30/32 +f 103/332/32 165/176/32 71/30/32 +f 105/333/27 113/127/27 76/321/27 +f 81/172/27 75/137/27 83/334/27 +f 75/137/27 93/136/27 83/334/27 +f 105/333/27 76/321/27 82/170/27 +f 97/131/27 109/130/27 99/179/27 +f 99/179/27 105/333/27 82/170/27 +f 82/170/27 81/172/27 99/179/27 +f 81/172/27 83/334/27 89/178/27 +f 89/178/27 97/131/27 99/179/27 +f 89/180/33 83/186/33 84/181/33 +f 87/183/34 88/189/34 86/184/34 +f 83/186/48 93/79/48 94/78/48 +f 85/185/49 86/184/49 92/140/49 +f 89/180/50 90/182/50 98/134/50 +f 87/183/51 95/69/51 96/68/51 +f 103/190/34 104/199/34 102/191/34 +f 99/193/52 100/198/52 106/194/52 +f 101/192/49 102/191/49 108/83/49 +f 99/193/48 109/211/48 110/197/48 +f 103/190/53 111/102/53 112/101/53 +f 105/195/50 106/194/50 114/9/50 +f 118/133/25 116/132/25 115/111/25 +f 122/125/25 120/124/25 119/122/25 +f 164/202/2 160/247/2 123/203/2 +f 63/145/25 64/144/25 162/205/25 +f 128/207/5 7/335/5 4/26/5 +f 8/208/9 70/336/9 146/209/9 +f 47/98/18 48/97/18 110/197/18 +f 137/212/40 135/337/40 136/213/40 +f 129/215/40 133/338/40 134/38/40 +f 135/217/40 131/339/40 132/44/40 +f 130/17/40 126/288/40 125/218/40 +f 131/220/40 127/340/40 128/221/40 +f 134/222/40 133/341/40 139/223/40 +f 144/117/20 140/320/20 139/225/20 +f 143/227/40 141/342/40 142/119/40 +f 142/56/14 141/343/14 137/228/14 +f 127/229/2 147/344/2 148/5/2 +f 145/231/9 125/345/9 126/210/9 +f 157/232/41 158/329/41 156/233/41 +f 150/235/41 154/164/41 153/236/41 +f 156/166/41 152/326/41 151/238/41 +f 149/240/41 145/346/41 146/154/41 +f 152/155/41 148/325/41 147/241/41 +f 154/243/41 160/330/41 159/244/41 +f 164/202/20 163/347/20 159/246/20 +f 164/206/41 162/205/41 161/248/41 +f 162/175/14 158/174/14 157/250/14 +f 3/22/5 8/348/5 126/252/5 +f 29/41/12 23/349/12 10/39/12 +f 23/349/12 168/15/12 10/39/12 +f 4/253/5 7/350/5 169/254/5 +f 169/27/8 171/29/8 172/256/8 +f 66/177/25 165/176/25 171/258/25 +f 65/149/32 166/151/32 72/261/32 +f 166/151/32 85/260/32 72/261/32 +f 101/263/32 107/95/32 95/317/32 +f 87/262/32 85/260/32 166/151/32 +f 101/263/32 95/317/32 87/262/32 +f 165/176/32 103/332/32 101/263/32 +f 87/262/32 166/151/32 165/176/32 +f 166/151/25 172/150/25 171/258/25 +f 170/257/8 172/256/8 70/264/8 +f 169/254/5 170/13/5 168/15/5 +f 33/94/12 45/96/12 39/266/12 +f 39/266/12 41/59/12 167/255/12 +f 167/255/12 168/15/12 25/267/12 +f 168/15/12 23/349/12 25/267/12 +f 25/267/12 33/94/12 39/266/12 +f 215/351/5 220/352/5 217/270/5 +f 223/353/54 224/354/54 222/355/54 +f 214/269/5 215/351/5 217/270/5 +f 217/270/5 223/353/5 221/268/5 +f 223/353/54 222/355/54 221/268/54 +f 231/356/54 232/357/54 229/271/54 +f 232/357/54 230/358/54 229/271/54 +f 226/359/55 228/360/55 227/273/55 +f 227/273/5 231/356/5 229/271/5 +f 225/272/55 226/359/55 227/273/55 +f 233/274/55 234/361/55 236/362/55 +f 233/274/55 236/362/55 235/275/55 +f 216/363/5 213/364/5 219/365/5 +f 213/364/5 233/274/5 219/365/5 +f 219/365/5 233/274/5 218/276/5 +f 257/279/25 237/366/25 243/367/25 +f 237/366/25 240/368/25 243/367/25 +f 257/279/25 243/367/25 242/369/25 +f 259/277/42 260/370/42 258/278/42 +f 242/369/25 259/277/25 257/279/25 +f 251/371/42 252/372/42 249/281/42 +f 252/372/42 250/373/42 249/281/42 +f 254/374/56 256/375/56 255/280/56 +f 255/280/25 251/371/25 249/281/25 +f 253/282/56 254/374/56 255/280/56 +f 241/285/25 244/376/25 239/377/25 +f 239/377/25 238/378/25 241/285/25 +f 238/378/25 245/283/25 241/285/25 +f 245/283/56 246/379/56 248/380/56 +f 245/283/56 248/380/56 247/284/56 +s 1 +f 175/381/57 174/382/8 173/383/8 +f 177/384/58 176/385/57 175/381/57 +f 177/384/58 180/386/1 178/387/58 +f 181/388/59 180/386/1 179/389/1 +f 183/390/60 182/391/59 181/392/59 +f 173/383/8 184/393/60 183/390/60 +f 187/394/61 186/395/62 185/396/63 +f 191/397/64 188/398/65 187/399/61 +f 191/397/64 190/400/66 192/401/67 +f 185/402/63 190/400/66 189/403/68 +f 185/404/63 191/397/64 187/405/61 +f 190/400/66 188/406/65 192/401/67 +f 195/407/61 194/408/62 193/409/63 +f 199/410/64 196/411/65 195/412/61 +f 199/410/64 198/413/66 200/414/67 +f 193/415/63 198/413/66 197/416/68 +f 193/417/63 199/410/64 195/418/61 +f 198/413/66 196/419/65 200/414/67 +f 203/420/57 202/421/8 201/422/8 +f 203/420/57 206/423/58 204/424/57 +f 207/425/1 206/423/58 205/426/58 +f 209/427/59 208/428/1 207/425/1 +f 211/429/60 210/430/59 209/427/59 +f 201/422/8 212/431/60 211/432/60 +f 175/381/57 176/385/57 174/382/8 +f 177/384/58 178/387/58 176/385/57 +f 177/384/58 179/389/1 180/386/1 +f 181/388/59 182/433/59 180/386/1 +f 183/390/60 184/393/60 182/391/59 +f 173/383/8 174/382/8 184/393/60 +f 187/394/61 188/406/65 186/395/62 +f 191/397/64 192/401/67 188/398/65 +f 191/397/64 189/403/68 190/400/66 +f 185/402/63 186/434/62 190/400/66 +f 185/404/63 189/403/68 191/397/64 +f 190/400/66 186/395/62 188/406/65 +f 195/407/61 196/419/65 194/408/62 +f 199/410/64 200/414/67 196/411/65 +f 199/410/64 197/416/68 198/413/66 +f 193/415/63 194/435/62 198/413/66 +f 193/417/63 197/416/68 199/410/64 +f 198/413/66 194/408/62 196/419/65 +f 203/420/57 204/424/57 202/421/8 +f 203/420/57 205/426/58 206/423/58 +f 207/425/1 208/428/1 206/423/58 +f 209/427/59 210/430/59 208/428/1 +f 211/429/60 212/436/60 210/430/59 +f 201/422/8 202/421/8 212/431/60 +o rightDoor +v 0.030935 0.772401 -0.150776 +v 0.030935 0.972661 -0.150776 +v 0.075000 0.088688 -0.911312 +v 0.075000 1.911312 -0.911312 +v 0.075000 0.088688 -0.088688 +v 0.075000 1.911312 -0.088688 +v 0.075000 2.000000 -1.000000 +v 0.075000 0.000000 -1.000000 +v 0.012500 1.861312 -0.861312 +v 0.012500 0.138688 -0.861312 +v 0.012500 0.138688 -0.138688 +v 0.012500 1.861312 -0.138688 +v 0.012500 0.733440 -0.267519 +v 0.012500 0.988637 -0.267519 +v 0.075000 0.655676 -0.088688 +v 0.075000 1.166712 -0.088688 +v 0.012500 1.166712 -0.138688 +v 0.012500 0.655676 -0.138688 +v 0.075000 0.733440 -0.217519 +v 0.075000 0.988637 -0.217519 +v 0.026895 0.753307 -0.256002 +v 0.023223 0.758010 -0.253518 +v 0.026895 0.753307 -0.872828 +v 0.023223 0.758010 -0.875312 +v 0.026895 0.834000 -0.872828 +v 0.023223 0.829297 -0.875312 +v 0.026895 0.834000 -0.256002 +v 0.023223 0.829297 -0.253518 +v 0.012500 0.753307 -0.861312 +v 0.011573 0.758010 -0.866015 +v 0.012500 0.753307 -0.267519 +v 0.011573 0.758010 -0.262816 +v 0.012500 0.834000 -0.861312 +v 0.011573 0.829297 -0.866015 +v 0.012500 0.834000 -0.267519 +v 0.011573 0.829297 -0.262816 +v 0.026895 0.873731 -0.256002 +v 0.023223 0.878434 -0.253518 +v 0.026895 0.873731 -0.872828 +v 0.023223 0.878434 -0.875312 +v 0.026895 0.954424 -0.872828 +v 0.023223 0.949722 -0.875312 +v 0.026895 0.954424 -0.256002 +v 0.023223 0.949722 -0.253518 +v 0.012500 0.873731 -0.861312 +v 0.011573 0.878434 -0.866015 +v 0.012500 0.873731 -0.267519 +v 0.011573 0.878434 -0.262816 +v 0.012500 0.954424 -0.861312 +v 0.011573 0.949722 -0.866015 +v 0.012500 0.954424 -0.267519 +v 0.011573 0.949722 -0.262816 +v 0.023223 0.758010 -0.252557 +v 0.023223 0.829297 -0.252557 +v 0.023223 0.758010 -0.880367 +v 0.023223 0.829297 -0.880367 +v 0.023223 0.878434 -0.252557 +v 0.023223 0.949722 -0.252557 +v 0.023223 0.878434 -0.880367 +v 0.023223 0.949722 -0.880367 +v 0.075000 0.772401 -0.150776 +v 0.075000 0.972661 -0.150776 +v -0.030935 0.772401 -0.150776 +v -0.030935 0.972661 -0.150776 +v -0.075000 0.088688 -0.911312 +v -0.075000 1.911312 -0.911312 +v -0.075000 0.088688 -0.088688 +v -0.075000 1.911312 -0.088688 +v -0.075000 2.000000 -1.000000 +v -0.075000 0.000000 -1.000000 +v -0.012500 1.861312 -0.861312 +v -0.012500 0.138688 -0.861312 +v -0.012500 0.138688 -0.138688 +v -0.012500 1.861312 -0.138688 +v -0.012500 0.733440 -0.267519 +v -0.012500 0.988637 -0.267519 +v -0.075000 0.655676 -0.088688 +v -0.075000 1.166712 -0.088688 +v -0.012500 1.166712 -0.138688 +v -0.012500 0.655676 -0.138688 +v -0.075000 0.733440 -0.217519 +v -0.075000 0.988637 -0.217519 +v -0.026895 0.753307 -0.256002 +v -0.023223 0.758010 -0.253518 +v -0.026895 0.753307 -0.872828 +v -0.023223 0.758010 -0.875312 +v -0.026895 0.834000 -0.872828 +v -0.023223 0.829297 -0.875312 +v -0.026895 0.834000 -0.256002 +v -0.023223 0.829297 -0.253518 +v -0.012500 0.753307 -0.861312 +v -0.011573 0.758010 -0.866015 +v -0.012500 0.753307 -0.267519 +v -0.011573 0.758010 -0.262816 +v -0.012500 0.834000 -0.861312 +v -0.011573 0.829297 -0.866015 +v -0.012500 0.834000 -0.267519 +v -0.011573 0.829297 -0.262816 +v -0.026895 0.873731 -0.256002 +v -0.023223 0.878434 -0.253518 +v -0.026895 0.873731 -0.872828 +v -0.023223 0.878434 -0.875312 +v -0.026895 0.954424 -0.872828 +v -0.023223 0.949722 -0.875312 +v -0.026895 0.954424 -0.256002 +v -0.023223 0.949722 -0.253518 +v -0.012500 0.873731 -0.861312 +v -0.011573 0.878434 -0.866015 +v -0.012500 0.873731 -0.267519 +v -0.011573 0.878434 -0.262816 +v -0.012500 0.954424 -0.861312 +v -0.011573 0.949722 -0.866015 +v -0.012500 0.954424 -0.267519 +v -0.011573 0.949722 -0.262816 +v -0.023223 0.758010 -0.252557 +v -0.023223 0.829297 -0.252557 +v -0.023223 0.758010 -0.880367 +v -0.023223 0.829297 -0.880367 +v -0.023223 0.878434 -0.252557 +v -0.023223 0.949722 -0.252557 +v -0.023223 0.878434 -0.880367 +v -0.023223 0.949722 -0.880367 +v -0.075000 0.772401 -0.150776 +v -0.075000 0.972661 -0.150776 +v 0.065000 0.000000 0.000000 +v 0.075000 0.000000 -0.010000 +v 0.065000 2.000000 0.000000 +v 0.075000 2.000000 -0.010000 +v 0.065000 0.655676 0.000000 +v 0.075000 0.655676 -0.010000 +v 0.065000 1.166712 0.000000 +v 0.075000 1.166712 -0.010000 +v 0.065000 0.733440 0.000000 +v 0.075000 0.733440 -0.010000 +v 0.065000 0.988637 0.000000 +v 0.075000 0.988637 -0.010000 +v 0.065000 0.982661 0.000000 +v 0.075000 0.972661 -0.010000 +v 0.065000 0.762401 0.000000 +v 0.075000 0.772401 -0.010000 +v 0.020935 0.982661 0.000000 +v 0.030935 0.972661 -0.010000 +v 0.020935 0.762401 0.000000 +v 0.030935 0.772401 -0.010000 +v -0.065000 0.000000 0.000000 +v -0.075000 0.000000 -0.010000 +v -0.065000 2.000000 0.000000 +v -0.075000 2.000000 -0.010000 +v -0.065000 0.655676 0.000000 +v -0.075000 0.655676 -0.010000 +v -0.065000 1.166712 0.000000 +v -0.075000 1.166712 -0.010000 +v -0.065000 0.733440 0.000000 +v -0.075000 0.733440 -0.010000 +v -0.065000 0.988637 0.000000 +v -0.075000 0.988637 -0.010000 +v -0.065000 0.982661 0.000000 +v -0.075000 0.972661 -0.010000 +v -0.065000 0.762401 0.000000 +v -0.075000 0.772401 -0.010000 +v -0.020935 0.982661 0.000000 +v -0.030935 0.972661 -0.010000 +v -0.020935 0.762401 0.000000 +v -0.030935 0.772401 -0.010000 +v -0.075000 0.954424 -0.911312 +v -0.075000 0.753307 -0.911312 +v -0.075000 0.954424 -1.000000 +v -0.075000 0.753307 -1.000000 +v 0.075000 0.954424 -1.000000 +v 0.075000 0.753307 -1.000000 +v 0.075000 0.954424 -0.911312 +v 0.075000 0.753307 -0.911312 +v 0.053113 0.765130 -0.133291 +v 0.053113 0.993204 -0.133291 +v 0.066310 0.765130 -0.125672 +v 0.066310 0.993204 -0.125672 +v 0.066310 0.765130 -0.110433 +v 0.066310 0.993204 -0.110433 +v 0.053113 0.765130 -0.102813 +v 0.053113 0.993204 -0.102813 +v 0.039915 0.765130 -0.110433 +v 0.039915 0.993204 -0.110433 +v 0.039915 0.765130 -0.125672 +v 0.039915 0.993204 -0.125672 +v 0.032467 0.805807 0.131365 +v 0.032467 0.818858 0.131365 +v 0.032467 0.805807 -0.136816 +v 0.032467 0.818858 -0.136816 +v 0.073758 0.805807 0.131365 +v 0.073758 0.818858 0.131365 +v 0.073758 0.805807 -0.136816 +v 0.073758 0.818858 -0.136816 +v 0.032467 0.927874 0.131365 +v 0.032467 0.940925 0.131365 +v 0.032467 0.927874 -0.136816 +v 0.032467 0.940925 -0.136816 +v 0.073758 0.927874 0.131365 +v 0.073758 0.940925 0.131365 +v 0.073758 0.927874 -0.136816 +v 0.073758 0.940925 -0.136816 +v 0.053113 0.806775 0.083099 +v 0.053113 0.932934 0.083099 +v 0.071903 0.806775 0.093947 +v 0.071903 0.932934 0.093947 +v 0.071903 0.806775 0.115645 +v 0.071903 0.932934 0.115645 +v 0.053113 0.806775 0.126494 +v 0.053113 0.932934 0.126494 +v 0.034322 0.806775 0.115645 +v 0.034322 0.932934 0.115645 +v 0.034322 0.806775 0.093947 +v 0.034322 0.932934 0.093947 +v 0.012500 1.861312 -0.861312 +v 0.012500 0.138688 -0.861312 +v 0.012500 0.138688 -0.138688 +v 0.012500 1.861312 -0.138688 +v 0.012500 0.733440 -0.267519 +v 0.012500 0.988637 -0.267519 +v 0.012500 1.166712 -0.138688 +v 0.012500 0.655676 -0.138688 +v 0.012500 0.753307 -0.861312 +v 0.011573 0.758010 -0.866015 +v 0.012500 0.753307 -0.267519 +v 0.011573 0.758010 -0.262816 +v 0.012500 0.834000 -0.861312 +v 0.011573 0.829297 -0.866015 +v 0.012500 0.834000 -0.267519 +v 0.011573 0.829297 -0.262816 +v 0.012500 0.873731 -0.861312 +v 0.011573 0.878434 -0.866015 +v 0.012500 0.873731 -0.267519 +v 0.011573 0.878434 -0.262816 +v 0.012500 0.954424 -0.861312 +v 0.011573 0.949722 -0.866015 +v 0.012500 0.954424 -0.267519 +v 0.011573 0.949722 -0.262816 +v -0.012500 1.861312 -0.861312 +v -0.012500 0.138688 -0.861312 +v -0.012500 0.138688 -0.138688 +v -0.012500 1.861312 -0.138688 +v -0.012500 0.733440 -0.267519 +v -0.012500 0.988637 -0.267519 +v -0.012500 1.166712 -0.138688 +v -0.012500 0.655676 -0.138688 +v -0.012500 0.753307 -0.861312 +v -0.011573 0.758010 -0.866015 +v -0.012500 0.753307 -0.267519 +v -0.011573 0.758010 -0.262816 +v -0.012500 0.834000 -0.861312 +v -0.011573 0.829297 -0.866015 +v -0.012500 0.834000 -0.267519 +v -0.011573 0.829297 -0.262816 +v -0.012500 0.873731 -0.861312 +v -0.011573 0.878434 -0.866015 +v -0.012500 0.873731 -0.267519 +v -0.011573 0.878434 -0.262816 +v -0.012500 0.954424 -0.861312 +v -0.011573 0.949722 -0.866015 +v -0.012500 0.954424 -0.267519 +v -0.011573 0.949722 -0.262816 +vt 0.482071 0.316646 +vt 0.492599 0.268801 +vt 0.492599 0.316646 +vt 0.916084 0.591352 +vt 0.951921 0.827876 +vt 0.916084 0.827876 +vt 0.934488 0.940835 +vt 0.928582 0.942288 +vt 0.928948 0.940645 +vt 0.817339 0.635132 +vt 0.651502 0.654242 +vt 0.639564 0.635132 +vt 0.026878 0.462326 +vt 0.005689 0.303540 +vt 0.026878 0.303540 +vt 0.314827 0.781356 +vt 0.296028 0.916817 +vt 0.296028 0.760168 +vt 0.817339 0.616345 +vt 0.314827 0.916817 +vt 0.333950 0.793302 +vt 0.333949 0.916817 +vt 0.736463 0.318882 +vt 0.717341 0.134293 +vt 0.736463 0.122348 +vt 0.594271 0.285212 +vt 0.613394 0.469801 +vt 0.594271 0.481746 +vt 0.542450 0.748788 +vt 0.292649 0.712952 +vt 0.542450 0.712952 +vt 0.046001 0.255490 +vt 0.051973 0.038824 +vt 0.051973 0.255490 +vt 0.619366 0.297157 +vt 0.613394 0.297157 +vt 0.666555 0.886644 +vt 0.652881 0.859517 +vt 0.683660 0.878096 +vt 0.702460 0.859517 +vt 0.051973 0.303540 +vt 0.046001 0.450380 +vt 0.046001 0.303540 +vt 0.680036 0.827073 +vt 0.633746 0.831619 +vt 0.649257 0.784529 +vt 0.690349 0.810970 +vt 0.926611 0.283306 +vt 0.916084 0.257808 +vt 0.936615 0.283306 +vt 0.066659 0.592068 +vt 0.014998 0.608014 +vt 0.005690 0.592068 +vt 0.749656 0.760168 +vt 0.760183 0.793801 +vt 0.749656 0.793801 +vt 0.817339 0.660210 +vt 0.817339 0.654242 +vt 0.026878 0.255490 +vt 0.026878 0.026878 +vt 0.046001 0.038824 +vt 0.029715 0.577350 +vt 0.039207 0.577350 +vt 0.711368 0.134293 +vt 0.717341 0.306937 +vt 0.711368 0.306937 +vt 0.664409 0.764925 +vt 0.659570 0.768426 +vt 0.570526 0.921544 +vt 0.564753 0.923072 +vt 0.564622 0.921479 +vt 0.717217 0.945045 +vt 0.718388 0.927567 +vt 0.718195 0.943853 +vt 0.560421 0.922992 +vt 0.561787 0.940663 +vt 0.560713 0.941820 +vt 0.717245 0.926378 +vt 0.721467 0.925304 +vt 0.727061 0.925087 +vt 0.721087 0.923635 +vt 0.727381 0.923449 +vt 0.564833 0.942859 +vt 0.564468 0.944502 +vt 0.010061 0.896685 +vt 0.015903 0.894826 +vt 0.015602 0.896491 +vt 0.721550 0.944905 +vt 0.721435 0.946497 +vt 0.561410 0.924159 +vt 0.019754 0.916314 +vt 0.018664 0.898655 +vt 0.019754 0.897489 +vt 0.924536 0.920778 +vt 0.925902 0.938449 +vt 0.924828 0.939606 +vt 0.051973 0.274769 +vt 0.046001 0.284261 +vt 0.046001 0.274769 +vt 0.928868 0.920858 +vt 0.925525 0.921945 +vt 0.015696 0.916430 +vt 0.018777 0.915200 +vt 0.010063 0.916440 +vt 0.015871 0.917960 +vt 0.009957 0.918083 +vt 0.903593 0.022721 +vt 0.753601 0.005689 +vt 0.903593 0.005689 +vt 0.592231 0.044914 +vt 0.742222 0.061946 +vt 0.592231 0.061946 +vt 0.753601 0.050849 +vt 0.903593 0.061946 +vt 0.753601 0.061946 +vt 0.692245 0.318882 +vt 0.671057 0.103548 +vt 0.692246 0.122348 +vt 0.674255 0.075714 +vt 0.640621 0.086241 +vt 0.640621 0.075714 +vt 0.526232 0.268801 +vt 0.526232 0.316646 +vt 0.742222 0.016786 +vt 0.592231 0.005689 +vt 0.742222 0.005689 +vt 0.742222 0.033818 +vt 0.592231 0.033818 +vt 0.058485 0.566973 +vt 0.066659 0.572946 +vt 0.058485 0.572946 +vt 0.039207 0.566973 +vt 0.029715 0.572946 +vt 0.029715 0.566973 +vt 0.753601 0.033817 +vt 0.903593 0.033818 +vt 0.727149 0.944802 +vt 0.010436 0.566973 +vt 0.005689 0.572946 +vt 0.005689 0.566973 +vt 0.663468 0.891757 +vt 0.635775 0.868065 +vt 0.570373 0.943049 +vt 0.339922 0.793302 +vt 0.222382 0.836271 +vt 0.211854 0.788427 +vt 0.222382 0.788427 +vt 0.651502 0.660211 +vt 0.817339 0.679320 +vt 0.639564 0.679320 +vt 0.092284 0.303540 +vt 0.071096 0.462326 +vt 0.071096 0.303540 +vt 0.359045 0.781356 +vt 0.377844 0.916817 +vt 0.359045 0.916817 +vt 0.817339 0.698107 +vt 0.619367 0.469801 +vt 0.638489 0.285211 +vt 0.638489 0.481746 +vt 0.633095 0.892296 +vt 0.663874 0.910875 +vt 0.656193 0.936166 +vt 0.713709 0.802712 +vt 0.732509 0.760168 +vt 0.732509 0.802712 +vt 0.682930 0.760168 +vt 0.695188 0.807469 +vt 0.659678 0.266412 +vt 0.014998 0.531905 +vt 0.062842 0.531905 +vt 0.066659 0.547851 +vt 0.553906 0.269791 +vt 0.543379 0.303424 +vt 0.543379 0.269791 +vt 0.056378 0.255490 +vt 0.005690 0.547851 +vt 0.039207 0.562569 +vt 0.730271 0.943568 +vt 0.731254 0.926081 +vt 0.731254 0.944703 +vt 0.573397 0.940891 +vt 0.574481 0.923217 +vt 0.574481 0.942042 +vt 0.570696 0.944663 +vt 0.727318 0.946384 +vt 0.570366 0.923131 +vt 0.007055 0.898880 +vt 0.005689 0.916555 +vt 0.005985 0.897737 +vt 0.937512 0.938677 +vt 0.938596 0.921004 +vt 0.938596 0.939828 +vt 0.009677 0.895087 +vt 0.934481 0.920918 +vt 0.934641 0.919331 +vt 0.934811 0.942449 +vt 0.903593 0.050849 +vt 0.592231 0.016786 +vt 0.592231 0.073325 +vt 0.625864 0.083852 +vt 0.592231 0.083852 +vt 0.256015 0.836271 +vt 0.256015 0.788427 +vt 0.573083 0.266412 +vt 0.852036 0.316991 +vt 0.816199 0.553514 +vt 0.816199 0.316991 +vt 0.928736 0.919265 +vt 0.066659 0.641647 +vt 0.065231 0.645026 +vt 0.062842 0.641647 +vt 0.705838 0.878096 +vt 0.702460 0.878096 +vt 0.674154 0.844929 +vt 0.632689 0.834828 +vt 0.292649 0.762557 +vt 0.292649 0.916817 +vt 0.618390 0.616345 +vt 0.817340 0.612914 +vt 0.005690 0.641647 +vt 0.012609 0.645026 +vt 0.005690 0.645026 +vt 0.677633 0.083852 +vt 0.677633 0.073325 +vt 0.529611 0.319035 +vt 0.757794 0.797179 +vt 0.747266 0.797179 +vt 0.949531 0.587974 +vt 0.951921 0.591352 +vt 0.849647 0.313612 +vt 0.065231 0.494893 +vt 0.066659 0.498272 +vt 0.062842 0.498272 +vt 0.657767 0.939155 +vt 0.672632 0.927510 +vt 0.674207 0.930499 +vt 0.735888 0.802712 +vt 0.735888 0.760168 +vt 0.381223 0.762557 +vt 0.381223 0.916817 +vt 0.620816 0.701538 +vt 0.817340 0.701537 +vt 0.012609 0.494893 +vt 0.005690 0.498272 +vt 0.005690 0.494893 +vt 0.629242 0.075714 +vt 0.629242 0.086241 +vt 0.259394 0.838661 +vt 0.259394 0.786038 +vt 0.551517 0.266412 +vt 0.540990 0.266412 +vt 0.757652 0.103548 +vt 0.757652 0.340071 +vt 0.041596 0.303540 +vt 0.005689 0.255490 +vt 0.005690 0.005690 +vt 0.590499 0.748788 +vt 0.590499 0.712952 +vt 0.071096 0.026878 +vt 0.092284 0.255490 +vt 0.071096 0.255490 +vt 0.051973 0.450380 +vt 0.056378 0.274769 +vt 0.056378 0.284261 +vt 0.770473 0.748789 +vt 0.770473 0.712952 +vt 0.041596 0.284261 +vt 0.041596 0.274769 +vt 0.839729 0.699298 +vt 0.831045 0.699299 +vt 0.831024 0.569515 +vt 0.323689 0.368753 +vt 0.326247 0.513936 +vt 0.323712 0.512813 +vt 0.484577 0.106103 +vt 0.628460 0.106103 +vt 0.628460 0.110917 +vt 0.300041 0.670357 +vt 0.295227 0.670357 +vt 0.295227 0.526483 +vt 0.089048 0.626916 +vt 0.080343 0.497134 +vt 0.089027 0.497132 +vt 0.106172 0.106106 +vt 0.250233 0.114407 +vt 0.281488 0.157609 +vt 0.482071 0.268801 +vt 0.005689 0.483514 +vt 0.292649 0.748789 +vt 0.947142 0.335929 +vt 0.947142 0.337357 +vt 0.936615 0.335929 +vt 0.947142 0.379901 +vt 0.947142 0.576595 +vt 0.916084 0.576595 +vt 0.916084 0.379901 +vt 0.916084 0.337357 +vt 0.926611 0.335929 +vt 0.916084 0.335929 +vt 0.947142 0.276387 +vt 0.947142 0.283306 +vt 0.947142 0.257808 +vt 0.916084 0.283306 +vt 0.916084 0.276387 +vt 0.947142 0.103548 +vt 0.916084 0.103548 +vt 0.062842 0.608014 +vt 0.014998 0.641647 +vt 0.760183 0.760168 +vt 0.041596 0.255490 +vt 0.058485 0.577350 +vt 0.010436 0.577350 +vt 0.010436 0.572946 +vt 0.039207 0.572946 +vt 0.051973 0.284261 +vt 0.753601 0.022721 +vt 0.742222 0.044914 +vt 0.671057 0.340071 +vt 0.674255 0.086241 +vt 0.066659 0.566973 +vt 0.632689 0.873178 +vt 0.339922 0.916817 +vt 0.211854 0.836271 +vt 0.092284 0.483514 +vt 0.377844 0.760168 +vt 0.618390 0.698107 +vt 0.659678 0.502935 +vt 0.014998 0.498272 +vt 0.553906 0.303424 +vt 0.058485 0.562569 +vt 0.029715 0.562569 +vt 0.010436 0.562569 +vt 0.730133 0.927265 +vt 0.573497 0.924351 +vt 0.006685 0.915371 +vt 0.937612 0.922137 +vt 0.625864 0.073325 +vt 0.573082 0.502935 +vt 0.852036 0.553514 +vt 0.066659 0.645026 +vt 0.705838 0.859517 +vt 0.673097 0.848138 +vt 0.620778 0.612914 +vt 0.529611 0.266412 +vt 0.918473 0.587974 +vt 0.818588 0.313612 +vt 0.066659 0.494893 +vt 0.092284 0.005689 +vt 0.056378 0.303540 +vt 0.839707 0.569514 +vt 0.842033 0.567275 +vt 0.842033 0.700351 +vt 0.828719 0.701538 +vt 0.828719 0.568462 +vt 0.103692 0.512849 +vt 0.272181 0.337506 +vt 0.103663 0.337533 +vt 0.315389 0.368754 +vt 0.326247 0.366244 +vt 0.659678 0.129760 +vt 0.659678 0.255033 +vt 0.484577 0.255033 +vt 0.482071 0.103548 +vt 0.629582 0.103572 +vt 0.444147 0.526484 +vt 0.444147 0.701573 +vt 0.318883 0.701573 +vt 0.292649 0.672839 +vt 0.292673 0.525315 +vt 0.080364 0.626918 +vt 0.078038 0.629157 +vt 0.078038 0.496080 +vt 0.091352 0.494893 +vt 0.091352 0.627970 +vt 0.281488 0.326127 +vt 0.106172 0.326127 +vt 0.103663 0.103548 +vt 0.251356 0.103572 +vt 0.250233 0.106106 +vt 0.030383 0.669552 +vt 0.079577 0.666265 +vt 0.079577 0.669552 +vt 0.030383 0.666265 +vt 0.079577 0.662978 +vt 0.030383 0.662978 +vt 0.079577 0.659692 +vt 0.030383 0.659692 +vt 0.079577 0.656405 +vt 0.030383 0.676126 +vt 0.079577 0.672839 +vt 0.079577 0.676126 +vt 0.030383 0.672839 +vt 0.882594 0.884444 +vt 0.940438 0.887259 +vt 0.882594 0.887259 +vt 0.949344 0.898980 +vt 0.940438 0.896165 +vt 0.949344 0.896165 +vt 0.940438 0.898980 +vt 0.882594 0.896165 +vt 0.882594 0.898980 +vt 0.873687 0.896165 +vt 0.940438 0.907886 +vt 0.897130 0.806314 +vt 0.894315 0.864159 +vt 0.894315 0.806314 +vt 0.882594 0.873065 +vt 0.885409 0.864159 +vt 0.885409 0.873065 +vt 0.882594 0.864159 +vt 0.885409 0.806314 +vt 0.882594 0.806314 +vt 0.885409 0.797408 +vt 0.873687 0.864159 +vt 0.833701 0.900185 +vt 0.838381 0.927396 +vt 0.833701 0.927396 +vt 0.838381 0.900185 +vt 0.843061 0.927396 +vt 0.843061 0.900185 +vt 0.847741 0.927396 +vt 0.847741 0.900185 +vt 0.852421 0.927396 +vt 0.852421 0.900185 +vt 0.857101 0.927396 +vt 0.829021 0.900185 +vt 0.829021 0.927396 +vt 0.030383 0.656405 +vt 0.940438 0.884444 +vt 0.873687 0.898980 +vt 0.882594 0.907886 +vt 0.897130 0.864159 +vt 0.882594 0.797408 +vt 0.873687 0.806314 +vt 0.857101 0.900185 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.6247 0.0000 -0.7809 +vn 1.0000 0.0000 0.0000 +vn 0.6247 0.7809 0.0000 +vn 0.6247 -0.7809 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.3821 -0.7912 -0.4776 +vn 0.5439 0.4919 -0.6799 +vn 0.6247 0.0000 0.7809 +vn 0.0000 0.5862 -0.8102 +vn 0.0000 -0.7071 0.7071 +vn -0.5602 0.0000 -0.8283 +vn -0.5602 0.0000 0.8283 +vn 0.4637 0.6689 -0.5810 +vn 0.0000 0.7071 -0.7071 +vn 0.4634 0.6706 0.5793 +vn 0.0000 0.7071 0.7071 +vn 0.4634 -0.6706 -0.5792 +vn 0.4637 -0.6689 0.5810 +vn 0.4634 -0.6706 -0.5793 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.8561 -0.5168 +vn -0.6247 0.0000 -0.7809 +vn -0.6247 0.7809 0.0000 +vn -0.6247 -0.7809 0.0000 +vn -0.3821 -0.7912 -0.4776 +vn -0.5439 0.4919 -0.6799 +vn -0.6247 0.0000 0.7809 +vn 0.5602 0.0000 -0.8283 +vn 0.5602 0.0000 0.8283 +vn -0.4634 0.6706 -0.5793 +vn -0.4634 0.6706 0.5793 +vn -0.4634 -0.6706 -0.5792 +vn -0.4634 -0.6706 0.5792 +vn -0.4634 -0.6706 0.5793 +vn -0.4634 -0.6706 -0.5793 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.9811 -0.1935 0.0000 +vn 0.4634 0.6706 -0.5793 +vn 0.4637 0.6689 0.5810 +vn 0.4637 -0.6689 -0.5810 +vn 0.4634 -0.6706 0.5792 +vn -0.5603 0.0000 -0.8283 +vn 0.4634 -0.6706 0.5793 +vn -0.4637 0.6689 -0.5810 +vn -0.4637 0.6689 0.5810 +vn -0.4637 -0.6689 -0.5810 +vn -0.4637 -0.6689 0.5810 +vn 0.5603 0.0000 -0.8283 +vn 0.9811 0.1935 -0.0000 +vn -0.9811 0.1935 0.0000 +vn -0.9811 -0.1935 -0.0000 +vn 0.8660 0.0000 -0.5000 +vn 0.8660 0.0000 0.5000 +vn -0.8660 0.0000 0.5000 +vn -0.8660 0.0000 -0.5000 +vn -0.5773 0.5773 0.5773 +vn -0.5773 -0.5773 -0.5773 +vn -0.5773 -0.5773 0.5773 +vn -0.5773 0.5773 -0.5773 +vn 0.5773 -0.5773 -0.5773 +vn 0.5773 0.5773 -0.5773 +vn 0.5773 -0.5773 0.5773 +vn 0.5773 0.5773 0.5773 +s off +f 321/437/69 262/438/69 261/439/69 +f 408/440/70 267/441/70 329/442/70 +f 374/443/71 311/444/71 312/445/71 +f 276/446/72 272/447/72 266/448/72 +f 263/449/73 430/450/73 432/451/73 +f 265/452/73 390/453/73 386/454/73 +f 266/448/73 392/455/73 276/446/73 +f 275/456/72 271/457/72 278/458/72 +f 263/459/74 271/460/74 265/461/74 +f 266/462/75 269/463/75 264/464/75 +f 427/465/76 267/466/76 429/467/76 +f 309/468/69 331/469/69 371/470/69 +f 334/471/77 269/463/77 272/472/77 +f 278/473/78 279/474/78 275/475/78 +f 394/476/73 275/475/73 279/474/73 +f 351/477/69 270/478/69 289/479/69 +f 276/480/73 396/481/73 280/482/73 +f 280/482/79 277/483/79 276/480/79 +f 423/484/69 409/485/69 403/486/69 +f 280/487/73 321/488/73 279/489/73 +f 262/490/77 398/491/77 402/492/77 +f 339/493/76 272/447/76 277/494/76 +f 431/495/80 264/496/80 269/497/80 +f 279/489/72 287/498/72 297/499/72 +f 333/500/70 270/501/70 332/502/70 +f 336/503/81 277/483/81 274/504/81 +f 355/505/82 294/506/82 293/507/82 +f 287/508/83 282/509/83 288/510/83 +f 285/511/84 284/512/84 283/513/84 +f 281/514/85 292/515/85 282/509/85 +f 354/516/86 291/517/86 353/518/86 +f 283/513/87 290/519/87 289/520/87 +f 368/521/88 305/522/88 306/523/88 +f 287/508/89 296/524/89 295/525/89 +f 285/511/90 294/506/90 286/526/90 +f 301/527/84 300/528/84 299/529/84 +f 297/530/83 304/531/83 303/532/83 +f 367/533/69 293/534/69 305/535/69 +f 299/529/87 306/523/87 305/522/87 +f 297/530/85 308/536/85 298/537/85 +f 301/527/90 310/538/90 302/539/90 +f 372/540/82 309/541/82 371/542/82 +f 303/532/91 312/445/91 311/444/91 +f 316/543/73 313/544/73 315/545/73 +f 320/546/73 317/547/73 319/548/73 +f 375/549/77 315/550/77 313/551/77 +f 325/552/92 406/553/92 327/554/92 +f 404/555/70 321/556/70 261/557/70 +f 261/439/73 402/558/73 404/559/73 +f 379/560/77 319/561/77 317/562/77 +f 380/563/70 320/546/70 382/564/70 +f 373/565/76 274/566/76 311/567/76 +f 369/568/76 295/569/76 357/570/76 +f 376/571/70 316/543/70 378/572/70 +f 358/573/71 295/525/71 296/524/71 +f 353/574/76 273/575/76 335/576/76 +f 340/577/93 273/578/93 278/473/93 +f 352/579/88 289/520/88 290/519/88 +f 333/580/76 278/458/76 271/457/76 +f 324/581/69 383/582/69 323/583/69 +f 334/584/94 338/585/94 328/586/94 +f 428/587/92 325/588/92 426/589/92 +f 327/590/92 410/591/92 337/592/92 +f 412/593/92 328/586/92 338/585/92 +f 337/592/94 333/580/94 327/590/94 +f 333/500/95 325/552/95 327/554/95 +f 331/594/96 328/595/96 326/596/96 +f 341/597/97 340/577/97 337/598/97 +f 337/598/92 414/599/92 341/597/92 +f 338/600/92 416/601/92 412/602/92 +f 342/603/98 339/604/98 336/503/98 +f 408/605/92 326/596/92 328/595/92 +f 383/606/92 384/607/92 342/608/92 +f 418/609/77 324/610/77 422/611/77 +f 363/612/99 371/470/99 331/469/99 +f 341/613/94 342/608/94 359/614/94 +f 350/615/100 343/616/100 349/617/100 +f 346/618/101 347/619/101 345/620/101 +f 343/616/102 354/516/102 353/518/102 +f 352/579/103 345/620/103 351/621/103 +f 358/573/104 349/617/104 357/622/104 +f 347/619/105 356/623/105 355/505/105 +f 362/624/101 363/625/101 361/626/101 +f 366/627/100 359/628/100 365/629/100 +f 368/521/103 361/626/103 367/630/103 +f 359/628/102 370/631/102 369/632/102 +f 363/625/106 372/540/106 371/542/106 +f 374/443/107 365/629/107 373/633/107 +f 375/549/92 378/572/92 377/634/92 +f 379/560/92 382/564/92 381/635/92 +f 383/636/70 424/637/70 323/638/70 +f 422/639/92 323/583/92 424/640/92 +f 264/464/73 388/641/73 266/462/73 +f 406/642/77 268/643/77 386/644/77 +f 370/631/86 307/645/86 369/632/86 +f 396/646/108 397/647/108 398/648/108 +f 394/476/108 389/649/108 390/650/108 +f 392/651/108 395/652/108 396/481/108 +f 385/653/108 390/453/108 389/654/108 +f 388/655/108 391/656/108 392/455/108 +f 394/657/108 399/658/108 393/659/108 +f 399/660/88 404/555/88 403/661/88 +f 402/558/108 403/662/108 404/559/108 +f 402/492/82 397/663/82 401/664/82 +f 408/440/70 387/665/70 388/666/70 +f 386/644/77 405/667/77 406/642/77 +f 417/668/109 416/669/109 418/670/109 +f 413/671/109 410/672/109 409/673/109 +f 411/674/109 416/601/109 415/675/109 +f 410/591/109 405/676/109 409/677/109 +f 407/678/109 412/593/109 411/679/109 +f 419/680/109 414/681/109 413/682/109 +f 424/637/88 419/683/88 423/684/88 +f 421/685/109 424/640/109 423/686/109 +f 417/687/82 422/611/82 421/688/82 +f 263/459/73 386/689/73 268/690/73 +f 283/691/80 289/479/80 270/478/80 +f 264/496/73 429/692/73 267/693/73 +f 428/694/76 429/467/76 430/695/76 +f 326/696/92 427/697/92 425/698/92 +f 426/589/99 325/588/99 332/699/99 +f 361/700/99 425/698/99 347/701/99 +f 427/697/92 426/589/92 425/698/92 +f 330/702/76 430/695/76 268/703/76 +f 432/451/73 429/692/73 431/495/73 +f 285/704/80 431/495/80 299/705/80 +f 485/706/73 489/707/73 491/708/73 +f 495/709/110 494/710/110 493/711/110 +f 481/712/73 483/713/73 477/714/73 +f 501/715/92 507/716/92 505/717/92 +f 511/718/92 513/719/92 509/720/92 +f 517/721/92 502/722/92 503/723/92 +f 321/437/69 322/724/69 262/438/69 +f 408/440/70 388/666/70 267/441/70 +f 374/443/71 373/633/71 311/444/71 +f 276/446/72 277/494/72 272/447/72 +f 263/449/73 268/725/73 430/450/73 +f 265/452/73 275/456/73 390/453/73 +f 266/448/73 388/655/73 392/455/73 +f 275/456/72 265/452/72 271/457/72 +f 263/459/74 270/501/74 271/460/74 +f 266/462/75 272/472/75 269/463/75 +f 427/465/76 329/726/76 267/466/76 +f 309/468/69 269/497/69 331/469/69 +f 334/471/77 331/594/77 269/463/77 +f 278/473/78 273/578/78 279/474/78 +f 394/476/73 390/650/73 275/475/73 +f 351/477/69 332/699/69 270/478/69 +f 276/480/73 392/651/73 396/481/73 +f 280/482/79 274/504/79 277/483/79 +f 397/727/69 395/728/69 401/729/69 +f 395/728/69 391/730/69 401/729/69 +f 391/730/69 387/731/69 407/732/69 +f 411/733/69 415/734/69 421/735/69 +f 415/734/69 417/736/69 421/735/69 +f 391/730/69 407/732/69 411/733/69 +f 393/737/69 399/738/69 403/486/69 +f 401/729/69 391/730/69 411/733/69 +f 389/739/69 393/737/69 403/486/69 +f 423/484/69 419/740/69 413/741/69 +f 401/729/69 411/733/69 421/735/69 +f 423/484/69 413/741/69 409/485/69 +f 401/729/69 421/735/69 423/484/69 +f 385/742/69 389/739/69 405/743/69 +f 389/739/69 403/486/69 409/485/69 +f 405/743/69 389/739/69 409/485/69 +f 403/486/69 401/729/69 423/484/69 +f 280/487/73 396/646/73 322/744/73 +f 396/646/73 398/648/73 322/744/73 +f 400/745/73 394/657/73 321/488/73 +f 394/657/73 279/489/73 321/488/73 +f 280/487/73 322/744/73 321/488/73 +f 262/490/77 322/746/77 398/491/77 +f 339/493/76 334/584/76 272/447/76 +f 309/468/80 301/747/80 269/497/80 +f 301/747/80 431/495/80 269/497/80 +f 303/748/72 311/567/72 274/566/72 +f 279/489/72 273/575/72 281/749/72 +f 273/575/72 291/750/72 281/749/72 +f 303/748/72 274/566/72 280/487/72 +f 295/569/72 307/751/72 297/499/72 +f 297/499/72 303/748/72 280/487/72 +f 280/487/72 279/489/72 297/499/72 +f 279/489/72 281/749/72 287/498/72 +f 287/498/72 295/569/72 297/499/72 +f 333/500/70 271/460/70 270/501/70 +f 336/503/81 339/604/81 277/483/81 +f 355/505/82 356/623/82 294/506/82 +f 287/508/83 281/514/83 282/509/83 +f 285/511/84 286/526/84 284/512/84 +f 281/514/111 291/517/111 292/515/111 +f 354/516/86 292/515/86 291/517/86 +f 283/513/112 284/512/112 290/519/112 +f 368/521/88 367/630/88 305/522/88 +f 287/508/113 288/510/113 296/524/113 +f 285/511/114 293/507/114 294/506/114 +f 301/527/84 302/539/84 300/528/84 +f 297/530/115 298/537/115 304/531/115 +f 367/533/69 355/752/69 293/534/69 +f 299/529/112 300/528/112 306/523/112 +f 297/530/111 307/645/111 308/536/111 +f 301/527/116 309/541/116 310/538/116 +f 372/540/82 310/538/82 309/541/82 +f 303/532/113 304/531/113 312/445/113 +f 316/543/73 314/753/73 313/544/73 +f 320/546/73 318/754/73 317/547/73 +f 375/549/77 377/634/77 315/550/77 +f 325/552/92 330/755/92 406/553/92 +f 404/555/70 400/756/70 321/556/70 +f 261/439/73 262/438/73 402/558/73 +f 379/560/77 381/635/77 319/561/77 +f 380/563/70 318/754/70 320/546/70 +f 373/565/76 336/757/76 274/566/76 +f 369/568/76 307/751/76 295/569/76 +f 376/571/70 314/753/70 316/543/70 +f 358/573/71 357/622/71 295/525/71 +f 353/574/76 291/750/76 273/575/76 +f 340/577/93 335/758/93 273/578/93 +f 352/579/88 351/621/88 289/520/88 +f 333/580/76 340/759/76 278/458/76 +f 324/581/69 384/760/69 383/582/69 +f 334/584/94 339/493/94 338/585/94 +f 428/587/92 330/761/92 325/588/92 +f 327/590/92 406/762/92 410/591/92 +f 412/593/92 408/763/92 328/586/92 +f 337/592/94 340/759/94 333/580/94 +f 333/500/95 332/502/95 325/552/95 +f 331/594/96 334/471/96 328/595/96 +f 341/597/97 335/758/97 340/577/97 +f 337/598/92 410/672/92 414/599/92 +f 338/600/92 342/603/92 416/601/92 +f 342/603/98 338/600/98 339/604/98 +f 408/605/92 329/764/92 326/596/92 +f 341/613/92 414/681/92 383/606/92 +f 414/681/92 420/765/92 383/606/92 +f 418/670/92 416/669/92 384/607/92 +f 416/669/92 342/608/92 384/607/92 +f 341/613/92 383/606/92 342/608/92 +f 418/609/77 384/766/77 324/610/77 +f 326/696/99 425/698/99 331/469/99 +f 425/698/99 363/612/99 331/469/99 +f 336/757/94 373/565/94 365/767/94 +f 359/614/94 369/568/94 357/570/94 +f 342/608/94 336/757/94 365/767/94 +f 359/614/94 357/570/94 349/768/94 +f 342/608/94 365/767/94 359/614/94 +f 353/574/94 335/576/94 343/769/94 +f 335/576/94 341/613/94 343/769/94 +f 359/614/94 349/768/94 341/613/94 +f 349/768/94 343/769/94 341/613/94 +f 350/615/100 344/770/100 343/616/100 +f 346/618/101 348/771/101 347/619/101 +f 343/616/117 344/770/117 354/516/117 +f 352/579/118 346/618/118 345/620/118 +f 358/573/119 350/615/119 349/617/119 +f 347/619/120 348/771/120 356/623/120 +f 362/624/101 364/772/101 363/625/101 +f 366/627/121 360/773/121 359/628/121 +f 368/521/118 362/624/118 361/626/118 +f 359/628/117 360/773/117 370/631/117 +f 363/625/120 364/772/120 372/540/120 +f 374/443/119 366/627/119 365/629/119 +f 375/549/92 376/571/92 378/572/92 +f 379/560/92 380/563/92 382/564/92 +f 383/636/70 420/774/70 424/637/70 +f 422/639/92 324/581/92 323/583/92 +f 264/464/73 267/775/73 388/641/73 +f 406/642/77 330/776/77 268/643/77 +f 370/631/86 308/536/86 307/645/86 +f 396/646/108 395/777/108 397/647/108 +f 394/476/108 393/778/108 389/649/108 +f 392/651/108 391/779/108 395/652/108 +f 385/653/108 386/454/108 390/453/108 +f 388/655/108 387/780/108 391/656/108 +f 394/657/108 400/745/108 399/658/108 +f 399/660/88 400/756/88 404/555/88 +f 402/558/108 401/781/108 403/662/108 +f 402/492/82 398/491/82 397/663/82 +f 408/440/70 407/782/70 387/665/70 +f 386/644/77 385/783/77 405/667/77 +f 417/668/109 415/784/109 416/669/109 +f 413/671/109 414/599/109 410/672/109 +f 411/674/109 412/602/109 416/601/109 +f 410/591/109 406/762/109 405/676/109 +f 407/678/109 408/763/109 412/593/109 +f 419/680/109 420/765/109 414/681/109 +f 424/637/88 420/774/88 419/683/88 +f 421/685/109 422/639/109 424/640/109 +f 417/687/82 418/609/82 422/611/82 +f 263/459/73 265/461/73 386/689/73 +f 263/449/80 432/451/80 270/478/80 +f 432/451/80 283/691/80 270/478/80 +f 264/496/73 431/495/73 429/692/73 +f 428/694/76 427/465/76 429/467/76 +f 326/696/92 329/785/92 427/697/92 +f 351/477/99 345/786/99 332/699/99 +f 345/786/99 426/589/99 332/699/99 +f 355/752/99 367/533/99 361/700/99 +f 361/700/99 363/612/99 425/698/99 +f 425/698/99 426/589/99 347/701/99 +f 426/589/99 345/786/99 347/701/99 +f 347/701/99 355/752/99 361/700/99 +f 427/697/92 428/587/92 426/589/92 +f 330/702/76 428/694/76 430/695/76 +f 432/451/73 430/450/73 429/692/73 +f 299/705/80 305/535/80 293/534/80 +f 285/704/80 283/691/80 432/451/80 +f 299/705/80 293/534/80 285/704/80 +f 431/495/80 301/747/80 299/705/80 +f 285/704/80 432/451/80 431/495/80 +f 487/787/110 488/788/110 485/706/110 +f 488/788/110 486/789/110 485/706/110 +f 490/790/122 492/791/122 491/708/122 +f 491/708/73 487/787/73 485/706/73 +f 489/707/122 490/790/122 491/708/122 +f 493/711/73 473/792/73 479/793/73 +f 473/792/73 476/794/73 479/793/73 +f 493/711/73 479/793/73 478/795/73 +f 495/709/110 496/796/110 494/710/110 +f 478/795/73 495/709/73 493/711/73 +f 480/797/73 475/798/73 477/714/73 +f 475/798/73 474/799/73 477/714/73 +f 481/712/122 482/800/122 484/801/122 +f 474/799/73 481/712/73 477/714/73 +f 481/712/122 484/801/122 483/713/122 +f 498/802/92 499/803/92 501/715/92 +f 499/803/92 504/804/92 501/715/92 +f 508/805/123 506/806/123 505/717/123 +f 505/717/92 498/802/92 501/715/92 +f 507/716/123 508/805/123 505/717/123 +f 515/807/123 516/808/123 513/719/123 +f 516/808/123 514/809/123 513/719/123 +f 510/810/124 512/811/124 511/718/124 +f 511/718/92 515/807/92 513/719/92 +f 509/720/124 510/810/124 511/718/124 +f 500/812/92 497/813/92 503/723/92 +f 497/813/92 517/721/92 503/723/92 +f 517/721/124 518/814/124 520/815/124 +f 517/721/124 520/815/124 519/816/124 +f 517/721/92 519/816/92 502/722/92 +s 1 +f 434/817/76 435/818/125 433/819/76 +f 436/820/125 437/821/126 435/818/125 +f 438/822/126 439/823/69 437/821/126 +f 440/824/69 441/825/127 439/823/69 +f 442/826/127 443/827/128 441/828/127 +f 444/829/128 433/819/76 443/827/128 +f 446/830/129 447/831/130 445/832/131 +f 448/833/132 451/834/133 447/835/130 +f 452/836/134 449/837/135 451/834/133 +f 450/838/136 445/839/131 449/837/135 +f 451/834/133 445/832/131 447/831/130 +f 448/840/132 450/838/136 452/836/134 +f 454/841/129 455/842/130 453/843/131 +f 456/844/132 459/845/133 455/846/130 +f 460/847/134 457/848/135 459/845/133 +f 458/849/136 453/850/131 457/848/135 +f 459/845/133 453/843/131 455/842/130 +f 456/851/132 458/849/136 460/847/134 +f 462/852/76 463/853/125 461/854/76 +f 464/855/125 465/856/126 463/853/125 +f 466/857/126 467/858/69 465/856/126 +f 468/859/69 469/860/127 467/858/69 +f 470/861/127 471/862/128 469/860/127 +f 472/863/128 461/854/76 471/864/128 +f 434/817/76 436/820/125 435/818/125 +f 436/820/125 438/822/126 437/821/126 +f 438/822/126 440/824/69 439/823/69 +f 440/824/69 442/865/127 441/825/127 +f 442/826/127 444/829/128 443/827/128 +f 444/829/128 434/817/76 433/819/76 +f 446/830/129 448/866/132 447/831/130 +f 448/833/132 452/836/134 451/834/133 +f 452/836/134 450/838/136 449/837/135 +f 450/838/136 446/867/129 445/839/131 +f 451/834/133 449/837/135 445/832/131 +f 448/840/132 446/868/129 450/838/136 +f 454/841/129 456/869/132 455/842/130 +f 456/844/132 460/847/134 459/845/133 +f 460/847/134 458/849/136 457/848/135 +f 458/849/136 454/870/129 453/850/131 +f 459/845/133 457/848/135 453/843/131 +f 456/851/132 454/871/129 458/849/136 +f 462/852/76 464/855/125 463/853/125 +f 464/855/125 466/857/126 465/856/126 +f 466/857/126 468/859/69 467/858/69 +f 468/859/69 470/861/127 469/860/127 +f 470/861/127 472/872/128 471/862/128 +f 472/863/128 462/852/76 461/854/76 diff --git a/src/main/resources/assets/hbm/models/doors/round_airlock_door.obj b/src/main/resources/assets/hbm/models/doors/round_airlock_door.obj new file mode 100644 index 000000000..1a9ada200 --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/round_airlock_door.obj @@ -0,0 +1,3160 @@ +# Blender v2.92.0 OBJ File: 'airlock.blend' +# www.blender.org +o frame +v -0.500000 0.000000 2.000000 +v -0.500000 4.000000 2.000000 +v -0.500000 0.000000 -2.000000 +v -0.500000 4.000000 -2.000000 +v 0.500000 0.000000 2.000000 +v 0.500000 4.000000 2.000000 +v 0.500000 0.000000 -2.000000 +v 0.500000 4.000000 -2.000000 +v 0.500000 1.990837 -1.903622 +v -0.500000 1.990837 -1.903622 +v 0.500000 2.466150 -1.706741 +v -0.500000 2.466150 -1.706741 +v 0.500000 1.480763 -1.970774 +v -0.500000 1.480763 -1.970774 +v 0.500000 0.970688 -1.903621 +v -0.500000 0.970688 -1.903622 +v 0.500000 0.495375 -1.706740 +v -0.500000 0.495375 -1.706740 +v 0.500000 2.874311 -1.393548 +v -0.500000 2.874311 -1.393548 +v 0.500000 0.056024 -1.443547 +v -0.500000 0.056024 -1.443547 +v 0.500000 3.187504 -0.985387 +v -0.500000 3.187504 -0.985387 +v 0.500000 0.056026 1.443549 +v -0.500000 0.056026 1.443549 +v 0.500000 3.384384 -0.510074 +v -0.500000 3.384384 -0.510074 +v 0.500000 3.451537 -0.000000 +v -0.500000 3.451537 -0.000000 +v 0.500000 3.384385 0.510074 +v -0.500000 3.384385 0.510074 +v 0.500000 3.187504 0.985387 +v -0.500000 3.187504 0.985387 +v 0.500000 2.874311 1.393548 +v -0.500000 2.874311 1.393548 +v 0.500000 2.466151 1.706741 +v -0.500000 2.466151 1.706741 +v 0.500000 1.990837 1.903622 +v -0.500000 1.990837 1.903622 +v 0.500000 1.480764 1.970774 +v -0.500000 1.480763 1.970774 +v 0.500000 0.970690 1.903622 +v -0.500000 0.970690 1.903622 +v 0.500000 0.495377 1.706741 +v -0.500000 0.495376 1.706741 +v -0.533603 1.476714 -2.000000 +v -0.533603 1.994352 -1.931852 +v -0.533603 2.476714 -1.732051 +v -0.533603 2.890928 -1.414214 +v -0.533603 3.208765 -1.000000 +v -0.533603 3.408566 -0.517638 +v -0.533603 3.476714 -0.000000 +v -0.533603 3.408566 0.517638 +v -0.533603 3.208765 1.000000 +v -0.533603 2.890928 1.414213 +v -0.533603 2.476715 1.732051 +v -0.533603 1.994353 1.931852 +v -0.533603 1.476715 2.000000 +v -0.533603 0.959077 1.931852 +v -0.533603 0.476715 1.732051 +v -0.533603 0.062501 1.414214 +v -0.533603 0.062500 -1.414213 +v -0.533603 0.476713 -1.732050 +v -0.533603 0.959075 -1.931851 +v 0.533603 1.476714 -2.000000 +v 0.533603 1.994352 -1.931852 +v 0.533603 2.476714 -1.732051 +v 0.533603 2.890928 -1.414214 +v 0.533603 3.208765 -1.000000 +v 0.533603 3.408566 -0.517638 +v 0.533603 3.476714 -0.000000 +v 0.533603 3.408566 0.517638 +v 0.533603 3.208765 1.000000 +v 0.533603 2.890928 1.414213 +v 0.533603 2.476715 1.732051 +v 0.533603 1.994353 1.931852 +v 0.533603 1.476715 2.000000 +v 0.533603 0.959077 1.931852 +v 0.533603 0.476715 1.732051 +v 0.533603 0.062501 1.414214 +v 0.533603 0.062500 -1.414213 +v 0.533603 0.476713 -1.732050 +v 0.533603 0.959074 -1.931851 +v -0.533603 1.970088 -1.841296 +v -0.533603 1.476714 -1.906250 +v -0.533603 2.429839 -1.650861 +v -0.533603 2.824636 -1.347922 +v -0.533603 3.127575 -0.953125 +v -0.533603 3.318010 -0.493374 +v -0.533603 3.382964 -0.000000 +v -0.533603 3.318010 0.493374 +v -0.533603 3.127575 0.953125 +v -0.533603 2.824636 1.347922 +v -0.533603 2.429840 1.650861 +v -0.533603 1.970088 1.841296 +v -0.533603 1.476715 1.906250 +v -0.533603 0.983341 1.841296 +v -0.533603 0.523590 1.650861 +v -0.533603 0.523588 -1.650860 +v -0.533603 0.983339 -1.841296 +v 0.533603 1.970088 -1.841296 +v 0.533603 1.476714 -1.906250 +v 0.533603 2.429839 -1.650861 +v 0.533603 2.824636 -1.347922 +v 0.533603 3.127575 -0.953125 +v 0.533603 3.318010 -0.493374 +v 0.533603 3.382964 -0.000000 +v 0.533603 3.318010 0.493374 +v 0.533603 3.127575 0.953125 +v 0.533603 2.824637 1.347922 +v 0.533603 2.429840 1.650861 +v 0.533603 1.970088 1.841296 +v 0.533603 1.476715 1.906250 +v 0.533603 0.983341 1.841296 +v 0.533603 0.523590 1.650861 +v 0.533603 0.523588 -1.650860 +v 0.533603 0.983339 -1.841296 +v 0.533603 -0.000000 -1.414213 +v -0.533603 -0.000000 -1.414213 +v -0.533603 0.000001 1.414214 +v 0.533603 0.000001 1.414214 +v 0.166667 0.062500 -1.414213 +v -0.166667 0.062500 -1.414213 +v -0.166667 0.062501 1.414214 +v 0.166667 0.062501 1.414214 +v 0.166667 3.382964 -0.000000 +v -0.166667 3.382964 -0.000000 +v -0.166667 3.318010 0.493374 +v 0.166667 3.318010 0.493374 +v -0.166667 0.523588 -1.650860 +v 0.166667 0.523588 -1.650860 +v 0.166667 0.523590 1.650861 +v -0.166667 0.523590 1.650861 +v -0.166667 3.127575 0.953125 +v 0.166667 3.127575 0.953125 +v -0.166667 0.983339 -1.841296 +v 0.166667 0.983339 -1.841296 +v 0.166667 1.476714 -1.906250 +v -0.166667 1.476714 -1.906250 +v -0.166667 1.970088 -1.841296 +v 0.166667 1.970088 -1.841296 +v -0.166667 2.824637 1.347922 +v 0.166667 2.824637 1.347922 +v -0.166667 2.429839 -1.650861 +v 0.166667 2.429839 -1.650861 +v -0.166667 2.429840 1.650861 +v 0.166667 2.429840 1.650861 +v -0.166667 2.824636 -1.347922 +v 0.166667 2.824636 -1.347922 +v -0.166667 1.970088 1.841296 +v 0.166667 1.970088 1.841296 +v -0.166667 3.127575 -0.953125 +v 0.166667 3.127575 -0.953125 +v -0.166667 1.476715 1.906250 +v 0.166667 1.476715 1.906250 +v -0.166667 3.318010 -0.493374 +v 0.166667 3.318010 -0.493374 +v -0.166667 0.983341 1.841296 +v 0.166667 0.983341 1.841296 +v 0.500000 -0.000000 -1.414213 +v -0.500000 -0.000000 -1.414213 +v -0.500000 0.000001 1.414214 +v 0.500000 0.000001 1.414214 +v -0.166667 0.048000 1.923243 +v -0.166667 0.047998 -1.923243 +v 0.166667 0.048000 1.923243 +v 0.166667 0.047998 -1.923243 +v -0.166667 0.978943 1.923243 +v -0.166667 0.516453 1.923243 +v 0.166667 0.978943 1.923243 +v 0.166667 0.516453 1.923243 +v -0.166667 3.334424 -1.923243 +v -0.166667 3.399957 -0.000000 +v 0.166667 3.334424 -1.923243 +v 0.166667 3.399957 -0.000000 +v -0.166667 1.476715 1.923243 +v 0.166667 1.476715 1.923243 +v -0.166667 3.142291 -1.923243 +v 0.166667 3.142291 -1.923243 +v -0.166667 1.974486 1.923243 +v 0.166667 1.974486 1.923243 +v -0.166667 2.836652 -1.923243 +v 0.166667 2.836652 -1.923243 +v -0.166667 2.438336 1.923243 +v 0.166667 2.438336 1.923243 +v -0.166667 2.438335 -1.923243 +v 0.166667 2.438335 -1.923243 +v -0.166667 2.836652 1.923243 +v 0.166667 2.836653 1.923243 +v -0.166667 1.974486 -1.923243 +v 0.166667 1.974486 -1.923243 +v -0.166667 0.978941 -1.923243 +v -0.166667 1.476714 -1.923243 +v 0.166667 0.978941 -1.923243 +v 0.166667 1.476714 -1.923243 +v -0.166667 3.142291 1.923243 +v 0.166667 3.142291 1.923243 +v -0.166667 0.516451 -1.923243 +v 0.166667 0.516451 -1.923243 +v -0.166667 3.334424 1.923243 +v 0.166667 3.334424 1.923243 +v 0.500000 0.476715 1.732051 +v 0.500000 0.959077 1.931852 +v 0.500000 1.476715 2.000000 +v 0.500000 1.994353 1.931852 +v 0.500000 2.476715 1.732051 +v 0.500000 2.890928 1.414213 +v 0.500000 3.208765 1.000000 +v 0.500000 3.408566 0.517638 +v 0.500000 3.476714 -0.000000 +v 0.500000 3.408566 -0.517638 +v 0.500000 3.208765 -1.000000 +v 0.500000 2.890928 -1.414214 +v 0.500000 2.476714 -1.732051 +v 0.500000 1.994352 -1.931852 +v 0.500000 1.476714 -2.000000 +v 0.500000 0.959074 -1.931851 +v 0.500000 0.476713 -1.732050 +v -0.500000 0.476715 1.732051 +v -0.500000 0.959077 1.931852 +v -0.500000 1.476715 2.000000 +v -0.500000 1.994353 1.931852 +v -0.500000 2.476715 1.732051 +v -0.500000 2.890928 1.414213 +v -0.500000 3.208765 1.000000 +v -0.500000 3.408566 0.517638 +v -0.500000 3.476714 -0.000000 +v -0.500000 3.408566 -0.517638 +v -0.500000 3.208765 -1.000000 +v -0.500000 2.890928 -1.414214 +v -0.500000 2.476714 -1.732051 +v -0.500000 1.994352 -1.931852 +v -0.500000 1.476714 -2.000000 +v -0.500000 0.959075 -1.931851 +v -0.500000 0.476713 -1.732050 +vt 0.068980 0.323539 +vt 0.067373 0.076025 +vt 0.101951 0.199335 +vt 0.320032 0.005495 +vt 0.321765 0.069092 +vt 0.647589 0.225990 +vt 0.647578 0.043005 +vt 0.651413 0.005495 +vt 0.067840 0.386736 +vt 0.321765 0.328100 +vt 0.320625 0.391296 +vt 0.386516 0.069092 +vt 0.007101 0.323941 +vt 0.005495 0.076427 +vt 0.317926 0.106905 +vt 0.431125 0.134236 +vt 0.435293 0.166263 +vt 0.397517 0.258065 +vt 0.132225 0.655744 +vt 0.163488 0.645688 +vt 0.165025 0.651426 +vt 0.421694 0.342907 +vt 0.403923 0.370450 +vt 0.416559 0.339942 +vt 0.100963 0.645688 +vt 0.099425 0.651426 +vt 0.409650 0.371984 +vt 0.399613 0.403189 +vt 0.071831 0.633622 +vt 0.068860 0.638766 +vt 0.409650 0.434393 +vt 0.403923 0.435928 +vt 0.042614 0.618627 +vt 0.416560 0.466435 +vt 0.526107 0.529682 +vt 0.557311 0.519644 +vt 0.558846 0.525372 +vt 0.027618 0.589410 +vt 0.022474 0.592380 +vt 0.421695 0.463471 +vt 0.436662 0.492633 +vt 0.589354 0.512735 +vt 0.015551 0.560278 +vt 0.009813 0.561816 +vt 0.440855 0.488440 +vt 0.462860 0.512735 +vt 0.011435 0.529016 +vt 0.005495 0.529016 +vt 0.465825 0.507600 +vt 0.493368 0.525372 +vt 0.619504 0.313743 +vt 0.615551 0.492633 +vt 0.615551 0.313743 +vt 0.358254 0.687384 +vt 0.381505 0.655852 +vt 0.381505 0.687384 +vt 0.381505 0.972483 +vt 0.358254 0.939643 +vt 0.381505 0.939643 +vt 0.358254 0.435125 +vt 0.381505 0.402285 +vt 0.381505 0.435125 +vt 0.358254 0.655852 +vt 0.381505 0.624319 +vt 0.381505 0.908111 +vt 0.358254 0.876578 +vt 0.381505 0.845046 +vt 0.381505 0.876578 +vt 0.358254 0.624319 +vt 0.381505 0.592787 +vt 0.358254 0.813513 +vt 0.381505 0.813513 +vt 0.358254 0.592787 +vt 0.381505 0.561255 +vt 0.358254 0.781981 +vt 0.381505 0.781981 +vt 0.358254 0.561255 +vt 0.381505 0.529722 +vt 0.381505 0.750449 +vt 0.358254 0.498190 +vt 0.381505 0.498190 +vt 0.358254 0.750449 +vt 0.381505 0.718916 +vt 0.381505 0.466657 +vt 0.358254 0.718916 +vt 0.440854 0.317937 +vt 0.436662 0.313744 +vt 0.195590 0.638765 +vt 0.132223 0.408225 +vt 0.099423 0.406604 +vt 0.132223 0.402285 +vt 0.465824 0.298777 +vt 0.462859 0.293642 +vt 0.100960 0.412342 +vt 0.068858 0.419264 +vt 0.493367 0.281005 +vt 0.698707 0.252092 +vt 0.662402 0.254221 +vt 0.662402 0.252092 +vt 0.046812 0.443605 +vt 0.042612 0.439404 +vt 0.526106 0.276695 +vt 0.494902 0.286732 +vt 0.195588 0.419263 +vt 0.163486 0.412341 +vt 0.165023 0.406603 +vt 0.027617 0.468621 +vt 0.022472 0.465651 +vt 0.557310 0.286732 +vt 0.558845 0.281005 +vt 0.009812 0.496216 +vt 0.589353 0.293641 +vt 0.494902 0.519645 +vt 0.015550 0.497753 +vt 0.108173 0.933725 +vt 0.106043 0.897420 +vt 0.108173 0.897420 +vt 0.087859 0.930852 +vt 0.085729 0.963935 +vt 0.085729 0.930852 +vt 0.714219 0.524745 +vt 0.747302 0.526874 +vt 0.714219 0.526874 +vt 0.020742 0.931104 +vt 0.018613 0.964186 +vt 0.018613 0.931104 +vt 0.551923 0.901930 +vt 0.549793 0.935013 +vt 0.549793 0.901930 +vt 0.461565 0.291956 +vt 0.435368 0.312058 +vt 0.434975 0.312450 +vt 0.414873 0.338648 +vt 0.414596 0.339129 +vt 0.401959 0.369636 +vt 0.401816 0.370172 +vt 0.397506 0.402911 +vt 0.397506 0.403466 +vt 0.401816 0.436205 +vt 0.401960 0.436741 +vt 0.414596 0.467249 +vt 0.414874 0.467729 +vt 0.434976 0.493927 +vt 0.435368 0.494319 +vt 0.461566 0.514421 +vt 0.462047 0.514699 +vt 0.492555 0.527335 +vt 0.493090 0.527479 +vt 0.525829 0.531789 +vt 0.526384 0.531789 +vt 0.559123 0.527479 +vt 0.559659 0.527335 +vt 0.590167 0.514698 +vt 0.225797 0.618625 +vt 0.221836 0.439403 +vt 0.225797 0.439403 +vt 0.619504 0.492633 +vt 0.831188 0.746127 +vt 0.807937 0.925350 +vt 0.807937 0.746127 +vt 0.192618 0.424408 +vt 0.586388 0.298776 +vt 0.221836 0.618625 +vt 0.192620 0.633620 +vt 0.773697 0.746127 +vt 0.796948 0.925350 +vt 0.773697 0.925350 +vt 0.926346 0.069867 +vt 0.949597 0.038335 +vt 0.949597 0.069867 +vt 0.949597 0.322126 +vt 0.926346 0.290593 +vt 0.949597 0.290593 +vt 0.926346 0.101399 +vt 0.949597 0.101399 +vt 0.926346 0.353658 +vt 0.949597 0.353658 +vt 0.949597 0.132932 +vt 0.926346 0.385190 +vt 0.949597 0.385190 +vt 0.949597 0.164464 +vt 0.926346 0.132932 +vt 0.926346 0.416723 +vt 0.949597 0.416723 +vt 0.949597 0.195996 +vt 0.926346 0.164464 +vt 0.949597 0.448255 +vt 0.926346 0.511320 +vt 0.949597 0.479788 +vt 0.949597 0.511320 +vt 0.949597 0.227529 +vt 0.926346 0.195996 +vt 0.926346 0.479788 +vt 0.926346 0.542852 +vt 0.949597 0.542852 +vt 0.926346 0.259061 +vt 0.949597 0.259061 +vt 0.926346 0.038335 +vt 0.949597 0.005495 +vt 0.926346 0.575693 +vt 0.949597 0.575693 +vt 0.622626 0.313752 +vt 0.622626 0.492642 +vt 0.635215 0.820032 +vt 0.632634 0.967885 +vt 0.632634 0.820018 +vt 0.815877 0.291846 +vt 0.877345 0.278740 +vt 0.877345 0.290914 +vt 0.640163 0.633315 +vt 0.641239 0.601777 +vt 0.641240 0.633315 +vt 0.860085 0.456842 +vt 0.877344 0.486978 +vt 0.845090 0.486059 +vt 0.579768 0.737922 +vt 0.641240 0.751029 +vt 0.550636 0.749989 +vt 0.872152 0.365186 +vt 0.877345 0.335517 +vt 0.877345 0.364908 +vt 0.623981 0.572926 +vt 0.641239 0.542793 +vt 0.641239 0.572474 +vt 0.634692 0.396460 +vt 0.633615 0.428001 +vt 0.633615 0.396460 +vt 0.636047 0.664578 +vt 0.641240 0.694248 +vt 0.623980 0.693710 +vt 0.650875 0.456855 +vt 0.633615 0.486991 +vt 0.633615 0.457307 +vt 0.398583 0.633314 +vt 0.397506 0.601771 +vt 0.402699 0.602049 +vt 0.650876 0.336062 +vt 0.633615 0.310283 +vt 0.670072 0.311044 +vt 0.414766 0.572916 +vt 0.397506 0.542778 +vt 0.429762 0.543697 +vt 0.786746 0.279780 +vt 0.755485 0.274588 +vt 0.414766 0.693709 +vt 0.397506 0.719487 +vt 0.397506 0.694248 +vt 0.695090 0.291847 +vt 0.633615 0.278740 +vt 0.724224 0.279780 +vt 0.519374 0.755181 +vt 0.519374 0.754105 +vt 0.860086 0.336056 +vt 0.877345 0.310279 +vt 0.458978 0.737922 +vt 0.397506 0.751029 +vt 0.397506 0.738854 +vt 0.638808 0.427723 +vt 0.915357 0.920578 +vt 0.894235 0.676845 +vt 0.915357 0.676845 +vt 0.894235 0.005495 +vt 0.915357 0.035178 +vt 0.894235 0.035178 +vt 0.915357 0.064484 +vt 0.894235 0.064484 +vt 0.915357 0.096025 +vt 0.894235 0.096025 +vt 0.894235 0.127566 +vt 0.915357 0.127566 +vt 0.915357 0.156958 +vt 0.894235 0.156958 +vt 0.915357 0.182197 +vt 0.894235 0.182197 +vt 0.915357 0.201564 +vt 0.894235 0.201564 +vt 0.915357 0.213739 +vt 0.894235 0.213739 +vt 0.915357 0.335675 +vt 0.894235 0.335675 +vt 0.915357 0.457612 +vt 0.894235 0.457612 +vt 0.915357 0.469787 +vt 0.894235 0.469787 +vt 0.915357 0.489153 +vt 0.894235 0.489153 +vt 0.915357 0.514393 +vt 0.894235 0.514393 +vt 0.915357 0.543784 +vt 0.894235 0.543784 +vt 0.915357 0.575326 +vt 0.894235 0.575326 +vt 0.894235 0.606867 +vt 0.915357 0.606867 +vt 0.915357 0.636173 +vt 0.894235 0.636173 +vt 0.894235 0.665856 +vt 0.915357 0.665856 +vt 0.488111 0.749989 +vt 0.876268 0.396447 +vt 0.877345 0.427988 +vt 0.872152 0.427710 +vt 0.397506 0.664856 +vt 0.397506 0.633314 +vt 0.755485 0.275664 +vt 0.433962 0.718726 +vt 0.633615 0.364917 +vt 0.638808 0.365195 +vt 0.633615 0.290915 +vt 0.604785 0.718726 +vt 0.641240 0.738854 +vt 0.641240 0.664857 +vt 0.840892 0.311041 +vt 0.760850 0.958917 +vt 0.762194 0.823957 +vt 0.762194 0.969333 +vt 0.877345 0.396447 +vt 0.402699 0.664577 +vt 0.990032 0.493759 +vt 0.992233 0.561870 +vt 0.990889 0.551453 +vt 0.636047 0.602055 +vt 0.633615 0.335523 +vt 0.397506 0.572463 +vt 0.877345 0.457294 +vt 0.641240 0.719488 +vt 0.462046 0.291678 +vt 0.493090 0.278898 +vt 0.526383 0.274588 +vt 0.559658 0.279041 +vt 0.005495 0.931104 +vt 0.007624 0.964186 +vt 0.005495 0.964186 +vt 0.198058 0.922286 +vt 0.200187 0.955369 +vt 0.198058 0.955369 +vt 0.536675 0.901930 +vt 0.538804 0.935013 +vt 0.536675 0.935013 +vt 0.742779 0.252092 +vt 0.709696 0.254221 +vt 0.709696 0.252092 +vt 0.753769 0.254221 +vt 0.786851 0.252092 +vt 0.786851 0.254221 +vt 0.072611 0.930852 +vt 0.074740 0.963935 +vt 0.072611 0.963935 +vt 0.187069 0.955369 +vt 0.184940 0.922286 +vt 0.187069 0.922286 +vt 0.960586 0.538006 +vt 0.962716 0.571089 +vt 0.960586 0.571089 +vt 0.341384 0.897681 +vt 0.343513 0.930765 +vt 0.341384 0.930765 +vt 0.871547 0.531064 +vt 0.869418 0.497980 +vt 0.871547 0.497980 +vt 0.328265 0.897681 +vt 0.330395 0.930765 +vt 0.328265 0.930765 +vt 0.741558 0.930395 +vt 0.743688 0.963478 +vt 0.741558 0.963478 +vt 0.620683 0.494401 +vt 0.590532 0.514503 +vt 0.620683 0.311975 +vt 0.223103 0.324116 +vt 0.221951 0.074040 +vt 0.190475 0.078944 +vt 0.191904 0.319517 +vt 0.162864 0.306928 +vt 0.161326 0.091754 +vt 0.136494 0.111633 +vt 0.137910 0.287105 +vt 0.118657 0.261353 +vt 0.117599 0.137327 +vt 0.105823 0.167232 +vt 0.106317 0.231450 +vt 0.065640 0.012427 +vt 0.651413 0.263598 +vt 0.552691 0.259238 +vt 0.586679 0.255595 +vt 0.618394 0.243259 +vt 0.586883 0.013251 +vt 0.552820 0.009503 +vt 0.618445 0.025671 +vt 0.386516 0.328100 +vt 0.257044 0.320347 +vt 0.288698 0.307876 +vt 0.256415 0.077528 +vt 0.288704 0.089685 +vt 0.317917 0.290484 +vt 0.397506 0.010132 +vt 0.521402 0.014143 +vt 0.521401 0.254494 +vt 0.492084 0.026804 +vt 0.466891 0.046640 +vt 0.492220 0.241702 +vt 0.467071 0.221661 +vt 0.447526 0.072318 +vt 0.435314 0.102161 +vt 0.447526 0.196031 +vt 0.132225 0.649804 +vt 0.405542 0.403189 +vt 0.046814 0.614426 +vt 0.526107 0.523753 +vt 0.586389 0.507600 +vt 0.358254 0.972483 +vt 0.358254 0.402285 +vt 0.358254 0.908110 +vt 0.358254 0.845046 +vt 0.358254 0.529722 +vt 0.358254 0.466657 +vt 0.071828 0.424409 +vt 0.698707 0.254221 +vt 0.526106 0.282624 +vt 0.106043 0.933725 +vt 0.087859 0.963935 +vt 0.747302 0.524745 +vt 0.020742 0.964186 +vt 0.551923 0.935013 +vt 0.831188 0.925350 +vt 0.796948 0.746127 +vt 0.926346 0.322126 +vt 0.926346 0.448255 +vt 0.926346 0.227529 +vt 0.926346 0.005495 +vt 0.635215 0.967900 +vt 0.608988 0.543712 +vt 0.665870 0.486072 +vt 0.894235 0.920578 +vt 0.915357 0.005495 +vt 0.759993 0.901223 +vt 0.992233 0.416493 +vt 0.492554 0.279041 +vt 0.525828 0.274588 +vt 0.559122 0.278898 +vt 0.590166 0.291678 +vt 0.007624 0.931104 +vt 0.200187 0.922286 +vt 0.538804 0.901930 +vt 0.742779 0.254221 +vt 0.753769 0.252092 +vt 0.074740 0.930852 +vt 0.184940 0.955369 +vt 0.962716 0.538006 +vt 0.343513 0.897681 +vt 0.869418 0.531064 +vt 0.330395 0.897681 +vt 0.743688 0.930395 +vt 0.590532 0.291873 +vn -1.0000 -0.0000 -0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.9659 -0.2588 +vn 0.0000 0.4566 0.8897 +vn 0.0000 0.4200 0.9075 +vn -0.0000 0.4200 -0.9075 +vn -0.0000 0.4566 -0.8897 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 0.2588 0.9659 +vn -0.0000 -0.2588 0.9659 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.2588 -0.9659 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 -0.9659 0.2588 +vn -0.0000 0.2588 -0.9659 +vn 0.0000 -0.5547 -0.8320 +vn 0.0000 -0.4710 -0.8822 +vn 0.0000 -0.4710 0.8822 +vn 0.0000 -0.5547 0.8320 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.8660 0.5000 +vn 0.0000 0.9659 0.2588 +vn 0.0000 0.9659 -0.2588 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 -0.9994 0.0341 +vn 0.0000 -0.9994 -0.0341 +s 1 +f 2/1/1 4/2/1 30/3/1 +f 4/2/2 7/4/2 3/5/2 +f 21/6/3 25/7/3 5/8/3 +f 6/9/4 1/10/4 5/11/4 +f 7/12/5 1/10/5 3/5/5 +f 4/2/6 6/13/6 8/14/6 +f 22/15/1 3/5/1 1/10/1 +f 29/16/3 27/17/3 8/18/3 +f 59/19/1 98/20/1 60/21/1 +f 110/22/3 73/23/3 74/24/3 +f 96/25/1 59/19/1 58/26/1 +f 109/27/3 72/28/3 73/23/3 +f 95/29/1 58/26/1 57/30/1 +f 72/28/3 107/31/3 71/32/3 +f 56/33/1 95/29/1 57/30/1 +f 107/31/3 70/34/3 71/32/3 +f 66/35/3 118/36/3 84/37/3 +f 93/38/1 56/33/1 55/39/1 +f 106/40/3 69/41/3 70/34/3 +f 118/36/3 83/42/3 84/37/3 +f 92/43/1 55/39/1 54/44/1 +f 105/45/3 68/46/3 69/41/3 +f 91/47/1 54/44/1 53/48/1 +f 104/49/3 67/50/3 68/46/3 +f 122/51/3 82/52/3 81/53/3 +f 108/54/5 130/55/7 127/56/5 +f 123/57/8 117/58/9 132/59/9 +f 116/60/10 126/61/11 133/62/10 +f 109/63/7 136/64/12 130/55/7 +f 117/58/9 138/65/13 132/59/9 +f 103/66/4 142/67/14 139/68/4 +f 110/69/12 144/70/15 136/64/12 +f 138/65/13 103/66/4 139/68/4 +f 142/67/14 104/71/16 146/72/16 +f 111/73/15 148/74/17 144/70/15 +f 146/72/16 105/75/18 150/76/18 +f 112/77/17 152/78/19 148/74/17 +f 105/75/18 154/79/20 150/76/18 +f 152/78/19 114/80/2 156/81/2 +f 106/82/20 158/83/21 154/79/20 +f 114/80/2 160/84/22 156/81/2 +f 107/85/21 127/56/5 158/83/21 +f 160/84/22 116/60/10 133/62/10 +f 111/86/3 74/24/3 75/87/3 +f 98/20/1 61/88/1 60/21/1 +f 86/89/1 48/90/1 47/91/1 +f 112/92/3 75/87/3 76/93/3 +f 85/94/1 49/95/1 48/90/1 +f 77/96/3 112/92/3 76/93/3 +f 162/97/23 64/98/24 236/99/24 +f 49/95/1 88/100/1 50/101/1 +f 78/102/3 113/103/3 77/96/3 +f 64/104/1 101/105/1 65/106/1 +f 50/101/1 89/107/1 51/108/1 +f 115/109/3 78/102/3 79/110/3 +f 65/106/1 86/89/1 47/91/1 +f 89/107/1 52/111/1 51/108/1 +f 80/112/3 115/109/3 79/110/3 +f 102/113/3 66/35/3 67/50/3 +f 90/114/1 53/48/1 52/111/1 +f 220/115/25 121/116/26 163/117/26 +f 60/118/14 220/119/25 221/120/14 +f 59/121/4 221/122/14 222/123/4 +f 58/124/13 222/125/4 223/126/13 +f 57/127/27 223/128/13 224/129/27 +f 207/130/27 75/87/28 208/131/28 +f 208/132/28 74/24/29 209/133/29 +f 209/134/29 73/23/30 210/135/30 +f 210/136/30 72/28/6 211/137/6 +f 211/138/6 71/32/31 212/139/31 +f 212/140/31 70/34/32 213/141/32 +f 213/142/32 69/41/33 214/143/33 +f 214/144/33 68/46/34 215/145/34 +f 215/146/34 67/50/22 216/147/22 +f 216/148/22 66/35/2 217/149/2 +f 217/150/2 84/37/19 218/151/19 +f 218/152/19 83/42/24 219/153/24 +f 121/154/1 63/155/1 120/156/1 +f 83/42/3 82/52/3 119/157/3 +f 125/158/6 63/159/6 62/160/6 +f 64/104/1 63/155/1 100/161/1 +f 80/112/3 81/53/3 116/162/3 +f 62/163/1 61/88/1 99/164/1 +f 126/165/6 82/166/6 123/167/6 +f 159/168/22 99/169/10 98/170/22 +f 90/171/21 128/172/5 91/173/5 +f 155/174/2 98/170/22 97/175/2 +f 153/176/20 90/171/21 89/177/20 +f 96/178/19 155/174/2 97/175/2 +f 149/179/18 89/177/20 88/180/18 +f 95/181/17 151/182/19 96/178/19 +f 145/183/16 88/180/18 87/184/16 +f 94/185/15 147/186/17 95/181/17 +f 85/187/14 145/183/16 87/184/16 +f 137/188/13 86/189/4 101/190/13 +f 93/191/12 143/192/15 94/185/15 +f 140/193/4 85/187/14 86/189/4 +f 131/194/9 101/190/13 100/195/9 +f 129/196/7 93/191/12 92/197/7 +f 134/198/10 62/199/11 99/169/10 +f 124/200/8 100/195/9 63/201/8 +f 128/172/5 92/197/7 91/173/5 +f 119/157/5 164/202/5 161/203/5 +f 162/204/5 121/205/5 120/206/5 +f 154/207/1 175/208/1 180/209/1 +f 140/210/3 193/211/3 194/212/3 +f 132/213/1 168/214/1 123/215/1 +f 153/216/3 173/217/3 157/218/3 +f 142/219/1 188/220/1 192/221/1 +f 131/222/3 166/223/3 199/224/3 +f 156/225/1 171/226/1 178/227/1 +f 141/228/3 187/229/3 145/230/3 +f 133/231/1 167/232/1 172/233/1 +f 155/234/3 169/235/3 159/236/3 +f 148/237/1 190/238/1 144/239/1 +f 134/240/3 165/241/3 125/242/3 +f 158/243/1 176/244/1 175/208/1 +f 147/245/3 189/246/3 185/247/3 +f 136/248/1 202/249/1 130/250/1 +f 157/218/3 174/251/3 128/252/3 +f 146/253/1 184/254/1 188/220/1 +f 135/255/3 201/256/3 197/257/3 +f 160/258/1 172/233/1 171/226/1 +f 165/259/6 168/260/6 166/261/6 +f 166/262/4 200/263/4 199/264/4 +f 199/264/4 195/265/4 193/266/4 +f 193/266/4 196/267/4 194/268/4 +f 191/269/4 196/267/4 192/270/4 +f 191/269/4 188/271/4 187/272/4 +f 187/272/4 184/273/4 183/274/4 +f 183/274/4 180/275/4 179/276/4 +f 179/276/4 175/277/4 173/278/4 +f 173/278/35 176/279/5 174/280/5 +f 174/280/5 202/281/36 201/282/36 +f 201/282/2 198/283/2 197/284/2 +f 197/284/2 190/285/2 189/286/2 +f 189/286/2 186/287/2 185/288/2 +f 185/288/2 182/289/2 181/290/2 +f 181/290/2 178/291/2 177/292/2 +f 169/293/2 178/291/2 171/294/2 +f 169/293/2 172/295/2 170/296/2 +f 165/297/2 172/295/2 167/298/2 +f 129/299/3 174/251/3 201/256/3 +f 139/300/1 195/301/1 138/302/1 +f 155/234/3 181/303/3 177/304/3 +f 130/250/1 176/244/1 127/305/1 +f 143/306/3 197/257/3 189/246/3 +f 156/225/1 182/307/1 152/308/1 +f 144/239/1 198/309/1 136/248/1 +f 149/310/3 179/311/3 153/216/3 +f 140/210/3 191/312/3 141/228/3 +f 150/313/1 180/209/1 184/254/1 +f 124/314/3 165/315/3 166/316/3 +f 139/300/1 192/221/1 196/317/1 +f 151/318/3 185/247/3 181/303/3 +f 123/319/1 167/320/1 126/321/1 +f 137/322/3 199/224/3 193/211/3 +f 152/308/1 186/323/1 148/237/1 +f 159/236/3 170/324/3 134/240/3 +f 138/302/1 200/325/1 132/213/1 +f 145/230/3 183/326/3 149/310/3 +f 207/327/27 77/96/13 76/93/27 +f 206/328/13 78/102/4 77/96/13 +f 205/329/4 79/110/14 78/102/4 +f 204/330/14 80/112/25 79/110/14 +f 57/331/27 225/332/28 56/333/28 +f 56/334/28 226/335/29 55/336/29 +f 55/337/29 227/338/30 54/339/30 +f 54/340/30 228/341/6 53/342/6 +f 53/343/6 229/344/31 52/345/31 +f 52/346/31 230/347/32 51/348/32 +f 51/349/32 231/350/33 50/351/33 +f 50/352/33 232/353/34 49/354/34 +f 49/355/34 233/356/22 48/357/22 +f 48/358/22 234/359/2 47/360/2 +f 47/361/2 235/362/19 65/363/19 +f 65/364/19 236/365/24 64/366/24 +f 83/42/24 161/367/23 219/368/24 +f 80/112/25 164/369/26 122/51/26 +f 42/370/1 1/10/1 2/1/1 +f 4/2/1 3/5/1 14/371/1 +f 4/2/1 14/371/1 10/372/1 +f 40/373/1 42/370/1 2/1/1 +f 38/374/1 40/373/1 2/1/1 +f 4/2/1 10/372/1 12/375/1 +f 4/2/1 12/375/1 20/376/1 +f 36/377/1 38/374/1 2/1/1 +f 34/378/1 36/377/1 2/1/1 +f 4/2/1 20/376/1 24/379/1 +f 4/2/1 24/379/1 28/380/1 +f 32/381/1 34/378/1 2/1/1 +f 4/2/1 28/380/1 30/3/1 +f 30/3/1 32/381/1 2/1/1 +f 4/2/2 8/382/2 7/4/2 +f 7/383/3 13/384/3 15/385/3 +f 7/383/3 15/385/3 17/386/3 +f 43/387/3 41/388/3 5/8/3 +f 45/389/3 43/387/3 5/8/3 +f 7/383/3 17/386/3 21/6/3 +f 25/7/3 45/389/3 5/8/3 +f 7/383/3 21/6/3 5/8/3 +f 6/9/4 2/1/4 1/10/4 +f 7/12/5 5/390/5 1/10/5 +f 4/2/6 2/1/6 6/13/6 +f 1/10/1 42/370/1 44/391/1 +f 1/10/1 44/391/1 46/392/1 +f 16/393/1 14/371/1 3/5/1 +f 18/394/1 16/393/1 3/5/1 +f 1/10/1 46/392/1 26/395/1 +f 22/15/1 18/394/1 3/5/1 +f 1/10/1 26/395/1 22/15/1 +f 6/396/3 5/8/3 41/388/3 +f 6/396/3 41/388/3 39/397/3 +f 13/384/3 7/383/3 8/18/3 +f 9/398/3 13/384/3 8/18/3 +f 6/396/3 39/397/3 37/399/3 +f 6/396/3 37/399/3 35/400/3 +f 11/401/3 9/398/3 8/18/3 +f 19/402/3 11/401/3 8/18/3 +f 6/396/3 35/400/3 33/403/3 +f 6/396/3 33/403/3 31/404/3 +f 23/405/3 19/402/3 8/18/3 +f 27/17/3 23/405/3 8/18/3 +f 8/18/3 6/396/3 29/16/3 +f 6/396/3 31/404/3 29/16/3 +f 59/19/1 97/406/1 98/20/1 +f 110/22/3 109/27/3 73/23/3 +f 96/25/1 97/406/1 59/19/1 +f 109/27/3 108/407/3 72/28/3 +f 95/29/1 96/25/1 58/26/1 +f 72/28/3 108/407/3 107/31/3 +f 56/33/1 94/408/1 95/29/1 +f 107/31/3 106/40/3 70/34/3 +f 66/35/3 103/409/3 118/36/3 +f 93/38/1 94/408/1 56/33/1 +f 106/40/3 105/45/3 69/41/3 +f 118/36/3 117/410/3 83/42/3 +f 92/43/1 93/38/1 55/39/1 +f 105/45/3 104/49/3 68/46/3 +f 91/47/1 92/43/1 54/44/1 +f 104/49/3 102/113/3 67/50/3 +f 122/51/3 119/157/3 82/52/3 +f 108/54/5 109/63/7 130/55/7 +f 123/57/8 82/411/8 117/58/9 +f 116/60/10 81/412/11 126/61/11 +f 109/63/7 110/69/12 136/64/12 +f 117/58/9 118/413/13 138/65/13 +f 103/66/4 102/414/14 142/67/14 +f 110/69/12 111/73/15 144/70/15 +f 138/65/13 118/413/13 103/66/4 +f 142/67/14 102/414/14 104/71/16 +f 111/73/15 112/77/17 148/74/17 +f 146/72/16 104/71/16 105/75/18 +f 112/77/17 113/415/19 152/78/19 +f 105/75/18 106/82/20 154/79/20 +f 152/78/19 113/415/19 114/80/2 +f 106/82/20 107/85/21 158/83/21 +f 114/80/2 115/416/22 160/84/22 +f 107/85/21 108/54/5 127/56/5 +f 160/84/22 115/416/22 116/60/10 +f 111/86/3 110/22/3 74/24/3 +f 98/20/1 99/164/1 61/88/1 +f 86/89/1 85/94/1 48/90/1 +f 112/92/3 111/86/3 75/87/3 +f 85/94/1 87/417/1 49/95/1 +f 77/96/3 113/103/3 112/92/3 +f 162/97/23 120/418/23 64/98/24 +f 49/95/1 87/417/1 88/100/1 +f 78/102/3 114/419/3 113/103/3 +f 64/104/1 100/161/1 101/105/1 +f 50/101/1 88/100/1 89/107/1 +f 115/109/3 114/419/3 78/102/3 +f 65/106/1 101/105/1 86/89/1 +f 89/107/1 90/114/1 52/111/1 +f 80/112/3 116/162/3 115/109/3 +f 102/113/3 103/409/3 66/35/3 +f 90/114/1 91/47/1 53/48/1 +f 220/115/25 61/420/25 121/116/26 +f 60/118/14 61/421/25 220/119/25 +f 59/121/4 60/422/14 221/122/14 +f 58/124/13 59/423/4 222/125/4 +f 57/127/27 58/424/13 223/128/13 +f 207/130/27 76/93/27 75/87/28 +f 208/132/28 75/87/28 74/24/29 +f 209/134/29 74/24/29 73/23/30 +f 210/136/30 73/23/30 72/28/6 +f 211/138/6 72/28/6 71/32/31 +f 212/140/31 71/32/31 70/34/32 +f 213/142/32 70/34/32 69/41/33 +f 214/144/33 69/41/33 68/46/34 +f 215/146/34 68/46/34 67/50/22 +f 216/148/22 67/50/22 66/35/2 +f 217/150/2 66/35/2 84/37/19 +f 218/152/19 84/37/19 83/42/24 +f 121/154/1 62/163/1 63/155/1 +f 83/42/3 117/410/3 82/52/3 +f 125/158/6 124/425/6 63/159/6 +f 64/104/1 120/156/1 63/155/1 +f 80/112/3 122/51/3 81/53/3 +f 62/163/1 121/154/1 61/88/1 +f 126/165/6 81/426/6 82/166/6 +f 159/168/22 134/198/10 99/169/10 +f 90/171/21 157/427/21 128/172/5 +f 155/174/2 159/168/22 98/170/22 +f 153/176/20 157/427/21 90/171/21 +f 96/178/19 151/182/19 155/174/2 +f 149/179/18 153/176/20 89/177/20 +f 95/181/17 147/186/17 151/182/19 +f 145/183/16 149/179/18 88/180/18 +f 94/185/15 143/192/15 147/186/17 +f 85/187/14 141/428/14 145/183/16 +f 137/188/13 140/193/4 86/189/4 +f 93/191/12 135/429/12 143/192/15 +f 140/193/4 141/428/14 85/187/14 +f 131/194/9 137/188/13 101/190/13 +f 129/196/7 135/429/12 93/191/12 +f 134/198/10 125/430/11 62/199/11 +f 124/200/8 131/194/9 100/195/9 +f 128/172/5 129/196/7 92/197/7 +f 119/157/5 122/51/5 164/202/5 +f 162/204/5 163/431/5 121/205/5 +f 154/207/1 158/243/1 175/208/1 +f 140/210/3 137/322/3 193/211/3 +f 132/213/1 200/325/1 168/214/1 +f 153/216/3 179/311/3 173/217/3 +f 142/219/1 146/253/1 188/220/1 +f 131/222/3 124/432/3 166/223/3 +f 156/225/1 160/258/1 171/226/1 +f 141/228/3 191/312/3 187/229/3 +f 133/231/1 126/433/1 167/232/1 +f 155/234/3 177/304/3 169/235/3 +f 148/237/1 186/323/1 190/238/1 +f 134/240/3 170/324/3 165/241/3 +f 158/243/1 127/305/1 176/244/1 +f 147/245/3 143/306/3 189/246/3 +f 136/248/1 198/309/1 202/249/1 +f 157/218/3 173/217/3 174/251/3 +f 146/253/1 150/313/1 184/254/1 +f 135/255/3 129/299/3 201/256/3 +f 160/258/1 133/231/1 172/233/1 +f 165/259/6 167/434/6 168/260/6 +f 166/262/4 168/435/4 200/263/4 +f 199/264/4 200/263/4 195/265/4 +f 193/266/4 195/265/4 196/267/4 +f 191/269/4 194/268/4 196/267/4 +f 191/269/4 192/270/4 188/271/4 +f 187/272/4 188/271/4 184/273/4 +f 183/274/4 184/273/4 180/275/4 +f 179/276/4 180/275/4 175/277/4 +f 173/278/35 175/277/35 176/279/5 +f 174/280/5 176/279/5 202/281/36 +f 201/282/2 202/281/2 198/283/2 +f 197/284/2 198/283/2 190/285/2 +f 189/286/2 190/285/2 186/287/2 +f 185/288/2 186/287/2 182/289/2 +f 181/290/2 182/289/2 178/291/2 +f 169/293/2 177/292/2 178/291/2 +f 169/293/2 171/294/2 172/295/2 +f 165/297/2 170/296/2 172/295/2 +f 129/299/3 128/252/3 174/251/3 +f 139/300/1 196/317/1 195/301/1 +f 155/234/3 151/318/3 181/303/3 +f 130/250/1 202/249/1 176/244/1 +f 143/306/3 135/255/3 197/257/3 +f 156/225/1 178/227/1 182/307/1 +f 144/239/1 190/238/1 198/309/1 +f 149/310/3 183/326/3 179/311/3 +f 140/210/3 194/212/3 191/312/3 +f 150/313/1 154/207/1 180/209/1 +f 124/314/3 125/436/3 165/315/3 +f 139/300/1 142/219/1 192/221/1 +f 151/318/3 147/245/3 185/247/3 +f 123/319/1 168/437/1 167/320/1 +f 137/322/3 131/222/3 199/224/3 +f 152/308/1 182/307/1 186/323/1 +f 159/236/3 169/235/3 170/324/3 +f 138/302/1 195/301/1 200/325/1 +f 145/230/3 187/229/3 183/326/3 +f 207/327/27 206/438/13 77/96/13 +f 206/328/13 205/439/4 78/102/4 +f 205/329/4 204/440/14 79/110/14 +f 204/330/14 203/441/25 80/112/25 +f 57/331/27 224/442/27 225/332/28 +f 56/334/28 225/443/28 226/335/29 +f 55/337/29 226/444/29 227/338/30 +f 54/340/30 227/445/30 228/341/6 +f 53/343/6 228/446/6 229/344/31 +f 52/346/31 229/447/31 230/347/32 +f 51/349/32 230/448/32 231/350/33 +f 50/352/33 231/449/33 232/353/34 +f 49/355/34 232/450/34 233/356/22 +f 48/358/22 233/451/22 234/359/2 +f 47/361/2 234/452/2 235/362/19 +f 65/364/19 235/453/19 236/365/24 +f 83/42/24 119/157/23 161/367/23 +f 80/112/25 203/454/25 164/369/26 +o doorRight +v 0.166667 0.183059 -1.291355 +v 0.166667 0.574264 -1.541358 +v 0.166667 1.014811 -1.723840 +v 0.166667 1.476714 -1.784650 +v 0.166667 1.938615 -1.723840 +v 0.166667 2.369039 -1.545552 +v 0.166667 2.738652 -1.261938 +v 0.166667 3.022266 -0.892325 +v 0.166667 3.200554 -0.461901 +v 0.168084 0.047997 -1.426236 +v 0.166667 0.183060 -0.183059 +v 0.168084 3.345687 -0.497568 +v 0.168084 3.153632 -0.961228 +v 0.166667 3.245492 -0.183060 +v 0.168084 2.848119 -1.359382 +v 0.168084 2.449965 -1.664895 +v 0.168084 1.986305 -1.856950 +v 0.168084 0.991167 -1.856950 +v 0.168084 1.488737 -1.922456 +v 0.168084 0.527508 -1.664895 +v 0.107558 0.183060 -0.183059 +v 0.107558 3.245492 -0.183060 +v 0.107558 0.183059 -1.291355 +v 0.107558 3.200554 -0.461901 +v 0.107558 3.022266 -0.892325 +v 0.107558 2.738652 -1.261938 +v 0.107558 2.369039 -1.545552 +v 0.107558 1.938615 -1.723840 +v 0.107558 1.014811 -1.723840 +v 0.107558 1.476714 -1.784650 +v 0.107558 0.574264 -1.541358 +v 0.166667 0.047998 -0.100000 +v 0.166667 3.039069 -0.100000 +v 0.166667 2.708339 -0.100000 +v 0.166667 2.377609 -0.100000 +v 0.166667 2.046879 -0.100000 +v 0.166667 1.716149 -0.100000 +v 0.166667 1.385420 -0.100000 +v 0.166667 1.054690 -0.100000 +v 0.166667 0.723960 -0.100000 +v 0.166667 0.393230 -0.100000 +v 0.116667 0.393230 0.100000 +v 0.166667 0.393230 0.050000 +v 0.166667 0.047998 0.050000 +v 0.116667 0.047998 0.100000 +v 0.116667 3.039069 0.100000 +v 0.166667 3.039069 0.050000 +v 0.166667 2.708339 0.050000 +v 0.116667 2.708339 0.100000 +v 0.116667 2.377609 0.100000 +v 0.166667 2.377609 0.050000 +v 0.166667 2.046879 0.050000 +v 0.116667 2.046879 0.100000 +v 0.116667 1.716149 0.100000 +v 0.166667 1.716149 0.050000 +v 0.166667 1.385420 0.050000 +v 0.116667 1.385420 0.100000 +v 0.116667 1.054690 0.100000 +v 0.166667 1.054690 0.050000 +v 0.166667 0.723960 0.050000 +v 0.116667 0.723960 0.100000 +v -0.166666 0.183059 -1.291355 +v -0.166666 0.574264 -1.541358 +v -0.166666 1.014811 -1.723840 +v -0.166666 1.476714 -1.784650 +v -0.166666 1.938615 -1.723840 +v -0.166666 2.369039 -1.545552 +v -0.166666 2.738652 -1.261938 +v -0.166666 3.022266 -0.892325 +v -0.166666 3.200554 -0.461901 +v -0.168083 0.047997 -1.426236 +v -0.166666 0.183060 -0.183059 +v -0.168083 3.345687 -0.497568 +v -0.168083 3.153632 -0.961228 +v -0.166666 3.245492 -0.183060 +v -0.168083 2.848119 -1.359382 +v -0.168083 2.449965 -1.664895 +v -0.168083 1.986305 -1.856950 +v -0.168083 0.991167 -1.856950 +v -0.168083 1.488737 -1.922456 +v -0.168083 0.527508 -1.664895 +v -0.107558 0.183060 -0.183059 +v -0.107557 3.245492 -0.183060 +v -0.107558 0.183059 -1.291355 +v -0.107557 3.200554 -0.461901 +v -0.107557 3.022266 -0.892325 +v -0.107557 2.738652 -1.261938 +v -0.107558 2.369039 -1.545552 +v -0.107558 1.938615 -1.723840 +v -0.107558 1.014811 -1.723840 +v -0.107557 1.476714 -1.784650 +v -0.107558 0.574264 -1.541358 +v -0.168083 3.397916 -0.100850 +v -0.166666 3.039069 -0.100000 +v -0.166666 2.708339 -0.100000 +v -0.166666 2.377609 -0.100000 +v -0.166666 2.046879 -0.100000 +v -0.166666 1.716149 -0.100000 +v -0.166666 1.385420 -0.100000 +v -0.166666 1.054690 -0.100000 +v -0.166666 0.723960 -0.100000 +v -0.166666 0.393230 -0.100000 +v -0.116666 0.393230 0.100000 +v -0.166666 0.393230 0.050000 +v -0.166666 0.047998 0.050000 +v -0.116666 0.047998 0.100000 +v -0.116666 3.039069 0.100000 +v -0.166666 3.039069 0.050000 +v -0.166666 2.708339 0.050000 +v -0.116666 2.708339 0.100000 +v -0.116666 2.377609 0.100000 +v -0.166666 2.377609 0.050000 +v -0.166666 2.046879 0.050000 +v -0.116666 2.046879 0.100000 +v -0.116666 1.716149 0.100000 +v -0.166666 1.716149 0.050000 +v -0.166666 1.385420 0.050000 +v -0.116666 1.385420 0.100000 +v -0.116666 1.054690 0.100000 +v -0.166666 1.054690 0.050000 +v -0.166666 0.723960 0.050000 +v -0.116666 0.723960 0.100000 +v 0.166667 0.047998 -0.183059 +v -0.166666 0.047998 -0.183059 +v 0.057399 2.947922 -0.628826 +v 0.057399 2.811188 -0.572189 +v 0.057399 2.754550 -0.435454 +v 0.057399 2.811188 -0.298720 +v 0.057399 2.947922 -0.242083 +v 0.057399 3.084657 -0.298720 +v 0.057399 3.141294 -0.435454 +v 0.057399 3.084657 -0.572189 +v 0.134706 2.811188 -0.572189 +v 0.134706 2.947922 -0.628826 +v 0.134706 2.754550 -0.435454 +v 0.134706 2.811188 -0.298720 +v 0.134706 2.947922 -0.242083 +v 0.134706 3.084657 -0.298720 +v 0.134706 3.141294 -0.435454 +v 0.134706 3.084657 -0.572189 +v -0.057398 2.947922 -0.628826 +v -0.057398 2.811188 -0.572189 +v -0.057398 2.754550 -0.435454 +v -0.057398 2.811188 -0.298720 +v -0.057398 2.947922 -0.242083 +v -0.057398 3.084657 -0.298720 +v -0.057398 3.141294 -0.435454 +v -0.057398 3.084657 -0.572189 +v -0.134705 2.811188 -0.572189 +v -0.134705 2.947922 -0.628826 +v -0.134705 2.754550 -0.435454 +v -0.134705 2.811188 -0.298720 +v -0.134705 2.947922 -0.242083 +v -0.134705 3.084657 -0.298720 +v -0.134705 3.141294 -0.435454 +v -0.134705 3.084657 -0.572189 +v 0.168084 3.397916 -0.100850 +v -0.166666 0.047998 -0.100000 +v 0.168084 3.397916 -0.184616 +v -0.168083 3.397916 -0.184616 +v 0.090995 0.595453 -0.114216 +v 0.090995 0.707781 -0.114216 +v 0.090995 0.595453 -1.616943 +v 0.090995 0.707781 -1.616943 +v 0.159155 0.609494 -0.114216 +v 0.159155 0.693740 -0.114216 +v 0.159155 0.609494 -1.616943 +v 0.159155 0.693740 -1.616943 +v 0.090995 1.262953 -0.114216 +v 0.090995 1.375282 -0.114216 +v 0.090995 1.262953 -1.841179 +v 0.090995 1.375282 -1.841179 +v 0.159155 1.276994 -0.114216 +v 0.159155 1.361241 -0.114216 +v 0.159155 1.276994 -1.841179 +v 0.159155 1.361241 -1.841179 +v 0.090995 1.930453 -0.114216 +v 0.090995 2.042782 -0.114216 +v 0.090995 1.930453 -1.753672 +v 0.090995 2.042782 -1.753672 +v 0.159155 1.944494 -0.114216 +v 0.159155 2.028741 -0.114216 +v 0.159155 1.944494 -1.753672 +v 0.159155 2.028741 -1.753672 +v 0.090995 2.597953 -0.114216 +v 0.090995 2.710282 -0.114216 +v 0.090995 2.597953 -1.403646 +v 0.090995 2.710282 -1.403646 +v 0.159155 2.611994 -0.114216 +v 0.159155 2.696241 -0.114216 +v 0.159155 2.611994 -1.403646 +v 0.159155 2.696241 -1.403646 +v -0.090994 0.595453 -0.114216 +v -0.090994 0.707781 -0.114216 +v -0.090994 0.595453 -1.616943 +v -0.090994 0.707781 -1.616943 +v -0.159155 0.609494 -0.114216 +v -0.159155 0.693740 -0.114216 +v -0.159155 0.609494 -1.616943 +v -0.159155 0.693740 -1.616943 +v -0.090994 1.262953 -0.114216 +v -0.090994 1.375282 -0.114216 +v -0.090994 1.262953 -1.841179 +v -0.090994 1.375282 -1.841179 +v -0.159155 1.276994 -0.114216 +v -0.159155 1.361241 -0.114216 +v -0.159155 1.276994 -1.841179 +v -0.159155 1.361241 -1.841179 +v -0.090994 1.930453 -0.114216 +v -0.090994 2.042782 -0.114216 +v -0.090994 1.930453 -1.753672 +v -0.090994 2.042782 -1.753672 +v -0.159155 1.944494 -0.114216 +v -0.159155 2.028741 -0.114216 +v -0.159155 1.944494 -1.753672 +v -0.159155 2.028741 -1.753672 +v -0.090994 2.597953 -0.114216 +v -0.090994 2.710282 -0.114216 +v -0.090994 2.597953 -1.403646 +v -0.090994 2.710282 -1.403646 +v -0.159155 2.611994 -0.114216 +v -0.159155 2.696241 -0.114216 +v -0.159155 2.611994 -1.403646 +v -0.159155 2.696241 -1.403646 +vt 0.633615 0.502400 +vt 0.743307 0.497980 +vt 0.743307 0.502401 +vt 0.739233 0.919405 +vt 0.744584 0.823957 +vt 0.744584 0.919405 +vt 0.749004 0.823957 +vt 0.749004 0.919405 +vt 0.734812 0.919405 +vt 0.739233 0.823957 +vt 0.772094 0.236682 +vt 0.662402 0.231331 +vt 0.772094 0.231331 +vt 0.662402 0.226911 +vt 0.772094 0.226911 +vt 0.772094 0.241103 +vt 0.662402 0.236682 +vt 0.005495 0.876659 +vt 0.109628 0.882010 +vt 0.005495 0.882010 +vt 0.109628 0.886430 +vt 0.005495 0.886430 +vt 0.005495 0.872239 +vt 0.109628 0.876659 +vt 0.261809 0.876921 +vt 0.343710 0.882272 +vt 0.261809 0.882272 +vt 0.343710 0.886692 +vt 0.261809 0.886692 +vt 0.261809 0.872501 +vt 0.343710 0.876921 +vt 0.633615 0.507752 +vt 0.743307 0.507752 +vt 0.633615 0.512172 +vt 0.743307 0.512172 +vt 0.719403 0.823957 +vt 0.723823 0.919405 +vt 0.719403 0.919405 +vt 0.709632 0.823957 +vt 0.714052 0.919405 +vt 0.709632 0.919405 +vt 0.714052 0.823957 +vt 0.858429 0.502401 +vt 0.754296 0.507752 +vt 0.754296 0.502401 +vt 0.418177 0.958691 +vt 0.413756 0.876791 +vt 0.418177 0.876791 +vt 0.427948 0.958691 +vt 0.423528 0.876791 +vt 0.427948 0.876791 +vt 0.423528 0.958691 +vt 0.858429 0.507752 +vt 0.754296 0.512172 +vt 0.858429 0.497980 +vt 0.754296 0.497980 +vt 0.633615 0.497980 +vt 0.734812 0.823957 +vt 0.662402 0.241102 +vt 0.109628 0.872239 +vt 0.343710 0.872501 +vt 0.723823 0.823957 +vt 0.413756 0.958691 +vt 0.858429 0.512172 +vt 0.993787 0.200005 +vt 0.990032 0.005495 +vt 0.993787 0.005495 +vt 0.960586 0.378465 +vt 0.964341 0.348873 +vt 0.964341 0.378465 +vt 0.960586 0.497528 +vt 0.964341 0.467240 +vt 0.964341 0.497528 +vt 0.947698 0.768695 +vt 0.926346 0.736818 +vt 0.947698 0.736818 +vt 0.676169 0.690209 +vt 0.656390 0.665899 +vt 0.664845 0.662870 +vt 0.717658 0.731702 +vt 0.687992 0.720640 +vt 0.694182 0.713686 +vt 0.762708 0.745883 +vt 0.742731 0.752246 +vt 0.744997 0.743027 +vt 0.347265 0.411967 +vt 0.327288 0.405604 +vt 0.347166 0.402285 +vt 0.329554 0.414822 +vt 0.297838 0.417804 +vt 0.302215 0.426148 +vt 0.272550 0.437210 +vt 0.278739 0.444163 +vt 0.253145 0.462500 +vt 0.260726 0.467640 +vt 0.240947 0.491951 +vt 0.245539 0.524318 +vt 0.240946 0.555159 +vt 0.236786 0.523555 +vt 0.249402 0.494980 +vt 0.249401 0.553657 +vt 0.253144 0.584609 +vt 0.276870 0.606488 +vt 0.260991 0.581640 +vt 0.038696 0.698926 +vt 0.062172 0.680912 +vt 0.107223 0.861250 +vt 0.960586 0.082619 +vt 0.964341 0.112210 +vt 0.960586 0.112210 +vt 0.960586 0.005495 +vt 0.964341 0.023434 +vt 0.960586 0.023434 +vt 0.960586 0.200985 +vt 0.964341 0.231273 +vt 0.960586 0.231273 +vt 0.964341 0.141802 +vt 0.960586 0.141802 +vt 0.964341 0.053027 +vt 0.960586 0.053026 +vt 0.964341 0.260761 +vt 0.960586 0.260761 +vt 0.960586 0.171394 +vt 0.964341 0.200985 +vt 0.964341 0.082619 +vt 0.599944 0.947302 +vt 0.596189 0.876906 +vt 0.599943 0.876906 +vt 0.964341 0.171394 +vt 0.993787 0.210994 +vt 0.990032 0.405504 +vt 0.990032 0.210994 +vt 0.685939 0.766554 +vt 0.664932 0.776082 +vt 0.664932 0.766554 +vt 0.261809 0.897681 +vt 0.284602 0.918944 +vt 0.261809 0.919034 +vt 0.173950 0.922286 +vt 0.152778 0.943293 +vt 0.152778 0.922286 +vt 0.141789 0.922286 +vt 0.120617 0.943293 +vt 0.120617 0.922286 +vt 0.504679 0.901930 +vt 0.525686 0.923102 +vt 0.504679 0.923102 +vt 0.752490 0.800264 +vt 0.742962 0.779257 +vt 0.752490 0.779257 +vt 0.564552 0.766170 +vt 0.543545 0.775698 +vt 0.543545 0.766170 +vt 0.621955 0.766170 +vt 0.600948 0.775698 +vt 0.600948 0.766170 +vt 0.507149 0.795010 +vt 0.485221 0.799501 +vt 0.485221 0.795010 +vt 0.664932 0.780573 +vt 0.685939 0.776082 +vt 0.685939 0.780573 +vt 0.600948 0.780189 +vt 0.621955 0.775698 +vt 0.621955 0.780189 +vt 0.738471 0.779257 +vt 0.742962 0.800264 +vt 0.738471 0.800264 +vt 0.543545 0.780189 +vt 0.564552 0.775698 +vt 0.564552 0.780189 +vt 0.485221 0.809029 +vt 0.507149 0.799501 +vt 0.507149 0.809029 +vt 0.723651 0.800264 +vt 0.564552 0.795010 +vt 0.485221 0.780189 +vt 0.519852 0.798186 +vt 0.510325 0.798186 +vt 0.493690 0.901930 +vt 0.472517 0.922937 +vt 0.472517 0.901930 +vt 0.530841 0.777013 +vt 0.540369 0.777013 +vt 0.741647 0.766554 +vt 0.741647 0.776082 +vt 0.588244 0.777013 +vt 0.597772 0.777013 +vt 0.652229 0.777397 +vt 0.661756 0.777397 +vt 0.947698 0.948231 +vt 0.926346 0.928078 +vt 0.947698 0.928078 +vt 0.668587 0.573240 +vt 0.692313 0.551361 +vt 0.676434 0.576210 +vt 0.960586 0.319281 +vt 0.964341 0.289690 +vt 0.964341 0.319281 +vt 0.713281 0.740046 +vt 0.668588 0.695350 +vt 0.660982 0.633531 +vt 0.656389 0.602691 +vt 0.664844 0.604193 +vt 0.118212 0.748902 +vt 0.122074 0.719563 +vt 0.219940 0.666733 +vt 0.960586 0.408057 +vt 0.964341 0.408057 +vt 0.960586 0.289690 +vt 0.964341 0.271750 +vt 0.964341 0.437648 +vt 0.960586 0.467240 +vt 0.664932 0.799885 +vt 0.685939 0.809412 +vt 0.664932 0.809412 +vt 0.960586 0.348873 +vt 0.614687 0.876906 +vt 0.610933 0.947302 +vt 0.610933 0.876906 +vt 0.960586 0.527017 +vt 0.964341 0.527017 +vt 0.543545 0.799501 +vt 0.564552 0.809029 +vt 0.543545 0.809029 +vt 0.719159 0.779257 +vt 0.709632 0.800264 +vt 0.709632 0.779257 +vt 0.600948 0.799501 +vt 0.621955 0.809029 +vt 0.600948 0.809029 +vt 0.685939 0.799885 +vt 0.664932 0.795393 +vt 0.685939 0.795393 +vt 0.485221 0.775698 +vt 0.507149 0.780189 +vt 0.621955 0.799501 +vt 0.600948 0.795010 +vt 0.621955 0.795010 +vt 0.564552 0.799501 +vt 0.543545 0.795010 +vt 0.719159 0.800264 +vt 0.723651 0.779257 +vt 0.507149 0.775698 +vt 0.485221 0.766170 +vt 0.507149 0.766170 +vt 0.762708 0.542778 +vt 0.762708 0.551357 +vt 0.347265 0.615072 +vt 0.268302 0.615067 +vt 0.472517 0.777013 +vt 0.577255 0.798186 +vt 0.720475 0.812968 +vt 0.634658 0.798186 +vt 0.698643 0.798569 +vt 0.926346 0.896201 +vt 0.947698 0.896201 +vt 0.926346 0.864325 +vt 0.947698 0.864325 +vt 0.926346 0.832448 +vt 0.947698 0.832448 +vt 0.926346 0.800571 +vt 0.947698 0.800571 +vt 0.926346 0.768695 +vt 0.652229 0.634295 +vt 0.926346 0.704941 +vt 0.947698 0.704941 +vt 0.926346 0.670920 +vt 0.947698 0.670920 +vt 0.947608 0.591958 +vt 0.926436 0.591957 +vt 0.947698 0.953551 +vt 0.926346 0.948231 +vt 0.443847 0.895592 +vt 0.438937 0.904993 +vt 0.438937 0.895592 +vt 0.443847 0.904993 +vt 0.438937 0.914393 +vt 0.443847 0.914393 +vt 0.438937 0.923794 +vt 0.443847 0.923794 +vt 0.438937 0.933194 +vt 0.443847 0.933194 +vt 0.438937 0.942595 +vt 0.443847 0.942595 +vt 0.438937 0.951995 +vt 0.443847 0.876791 +vt 0.438937 0.886191 +vt 0.438937 0.876791 +vt 0.443847 0.886191 +vt 0.454837 0.923794 +vt 0.459747 0.933194 +vt 0.454837 0.933194 +vt 0.454837 0.914393 +vt 0.459747 0.923794 +vt 0.454837 0.904993 +vt 0.459747 0.914393 +vt 0.454837 0.895592 +vt 0.459747 0.904993 +vt 0.454837 0.886191 +vt 0.459747 0.895592 +vt 0.454837 0.876791 +vt 0.459747 0.886191 +vt 0.454837 0.942595 +vt 0.459747 0.951995 +vt 0.454837 0.951995 +vt 0.459747 0.942595 +vt 0.025527 0.900082 +vt 0.029124 0.908767 +vt 0.004560 0.908767 +vt 0.863808 0.746128 +vt 0.858532 0.958902 +vt 0.858487 0.746127 +vt 0.842223 0.746128 +vt 0.847498 0.958897 +vt 0.842177 0.958898 +vt 0.042481 0.916865 +vt 0.038915 0.908257 +vt 0.063262 0.908257 +vt 0.990032 0.200005 +vt 0.762609 0.755565 +vt 0.107223 0.666733 +vt 0.089512 0.669587 +vt 0.036827 0.861250 +vt 0.020948 0.836401 +vt 0.009357 0.808419 +vt 0.005495 0.779081 +vt 0.009357 0.749742 +vt 0.020681 0.722403 +vt 0.964341 0.005495 +vt 0.596189 0.947302 +vt 0.993787 0.405504 +vt 0.284602 0.897771 +vt 0.173950 0.943293 +vt 0.141789 0.943293 +vt 0.525686 0.901930 +vt 0.510325 0.777013 +vt 0.519852 0.777013 +vt 0.493690 0.922937 +vt 0.540369 0.798186 +vt 0.530841 0.798186 +vt 0.720475 0.776082 +vt 0.720475 0.766554 +vt 0.597772 0.798186 +vt 0.588244 0.798186 +vt 0.661756 0.798569 +vt 0.652229 0.798569 +vt 0.683745 0.542783 +vt 0.149544 0.666733 +vt 0.133665 0.691581 +vt 0.219940 0.861250 +vt 0.202229 0.858395 +vt 0.174890 0.847071 +vt 0.151413 0.829057 +vt 0.133399 0.805580 +vt 0.122074 0.778241 +vt 0.960586 0.271750 +vt 0.960586 0.437648 +vt 0.614687 0.947302 +vt 0.347265 0.606493 +vt 0.482045 0.798186 +vt 0.472517 0.798186 +vt 0.482045 0.777013 +vt 0.567728 0.777013 +vt 0.577255 0.777013 +vt 0.567728 0.798186 +vt 0.741647 0.803440 +vt 0.741647 0.812968 +vt 0.720475 0.803440 +vt 0.625130 0.777013 +vt 0.634658 0.777013 +vt 0.625130 0.798186 +vt 0.689115 0.777397 +vt 0.698643 0.777397 +vt 0.689115 0.798569 +vt 0.926436 0.586682 +vt 0.947608 0.586682 +vt 0.926346 0.953551 +vt 0.443847 0.951995 +vt 0.459747 0.876791 +vt 0.025527 0.917452 +vt 0.016842 0.921049 +vt 0.008157 0.917452 +vt 0.008157 0.900082 +vt 0.016842 0.896485 +vt 0.863808 0.958903 +vt 0.847498 0.746127 +vt 0.042481 0.899649 +vt 0.051089 0.896083 +vt 0.059697 0.899649 +vt 0.059697 0.916865 +vt 0.051089 0.920430 +vn -0.2018 0.9794 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.2018 -0.9794 0.0000 +vn 0.2018 0.9794 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.2018 -0.9794 0.0000 +vn 0.0000 -0.0000 -1.0000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.4624 0.8867 +vn 0.0000 0.2588 0.9659 +vn 0.0000 -0.2588 -0.9659 +vn -1.0000 -0.0049 0.0086 +vn -0.9999 -0.0027 0.0097 +vn -0.9999 -0.0025 0.0097 +vn -1.0000 -0.0083 0.0048 +vn -1.0000 -0.0069 0.0068 +vn -1.0000 -0.0068 0.0069 +vn -1.0000 -0.0093 0.0015 +vn -1.0000 -0.0091 0.0026 +vn 1.0000 -0.0093 0.0015 +vn 1.0000 -0.0091 0.0026 +vn 1.0000 -0.0083 0.0048 +vn 1.0000 -0.0069 0.0068 +vn 1.0000 -0.0068 0.0069 +vn 1.0000 -0.0050 0.0085 +vn 1.0000 -0.0049 0.0086 +vn 0.9999 -0.0027 0.0097 +vn 0.9999 0.0001 0.0103 +vn 0.9999 0.0027 0.0102 +vn 0.9999 -0.0001 0.0103 +vn 0.9999 -0.0025 0.0097 +vn 0.9999 0.0028 0.0101 +vn 0.9999 0.0047 0.0093 +vn 1.0000 0.0067 0.0038 +vn 0.9999 0.0051 0.0096 +vn 0.0000 -0.9873 0.1591 +vn 0.0000 -0.9621 0.2727 +vn 0.0000 -0.2588 0.9659 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 0.5385 0.8426 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 -0.0000 +vn 0.0000 0.0024 1.0000 +vn 0.7071 0.0000 0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.9966 -0.0826 +vn 0.0000 0.9613 -0.2754 +vn -0.9999 0.0047 0.0093 +vn -1.0000 0.0067 0.0038 +vn -0.9999 0.0051 0.0096 +vn -1.0000 -0.0050 0.0085 +vn -0.9999 0.0001 0.0103 +vn -0.9999 0.0027 0.0102 +vn -0.9999 0.0028 0.0101 +vn -0.7071 0.0000 0.7071 +vn -1.0000 0.0007 0.0001 +vn 1.0000 0.0007 0.0001 +vn 1.0000 0.0058 0.0047 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 0.2588 -0.9659 +vn -0.9999 -0.0001 0.0103 +vn 0.0000 -0.4144 -0.9101 +vn 0.0000 -0.4456 -0.8952 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 1.0000 -0.0004 0.0000 +vn -1.0000 -0.0004 0.0000 +vn -1.0000 0.0058 0.0047 +s off +f 442/455/37 440/456/37 444/457/37 +f 404/458/38 401/459/38 403/460/38 +f 403/460/39 397/461/39 399/462/39 +f 400/463/40 402/464/40 404/458/40 +f 412/465/38 409/466/38 411/467/38 +f 411/467/39 405/468/39 407/469/39 +f 408/470/40 410/471/40 412/465/40 +f 420/472/38 417/473/38 419/474/38 +f 419/474/39 413/475/39 415/476/39 +f 416/477/40 418/478/40 420/472/40 +f 428/479/38 425/480/38 427/481/38 +f 427/481/39 421/482/39 423/483/39 +f 424/484/40 426/485/40 428/479/40 +f 441/486/41 444/457/41 443/487/41 +f 437/488/42 443/487/42 439/489/42 +f 434/490/37 432/491/37 436/492/37 +f 429/493/42 435/494/42 431/495/42 +f 433/496/41 436/492/41 435/494/41 +f 449/497/41 452/498/41 451/499/41 +f 458/500/37 456/501/37 460/502/37 +f 453/503/42 459/504/42 455/505/42 +f 457/506/41 460/502/41 459/504/41 +f 450/507/37 448/508/37 452/498/37 +f 445/509/42 451/499/42 447/510/42 +f 442/455/37 438/511/37 440/456/37 +f 404/458/38 402/464/38 401/459/38 +f 403/460/39 401/459/39 397/461/39 +f 400/463/40 398/512/40 402/464/40 +f 412/465/38 410/471/38 409/466/38 +f 411/467/39 409/466/39 405/468/39 +f 408/470/40 406/513/40 410/471/40 +f 420/472/38 418/478/38 417/473/38 +f 419/474/39 417/473/39 413/475/39 +f 416/477/40 414/514/40 418/478/40 +f 428/479/38 426/485/38 425/480/38 +f 427/481/39 425/480/39 421/482/39 +f 424/484/40 422/515/40 426/485/40 +f 441/486/41 442/455/41 444/457/41 +f 437/488/42 441/486/42 443/487/42 +f 434/490/37 430/516/37 432/491/37 +f 429/493/42 433/496/42 435/494/42 +f 433/496/41 434/490/41 436/492/41 +f 449/497/41 450/507/41 452/498/41 +f 458/500/37 454/517/37 456/501/37 +f 453/503/42 457/506/42 459/504/42 +f 457/506/41 458/500/41 460/502/41 +f 450/507/37 446/518/37 448/508/37 +f 445/509/42 449/497/42 451/499/42 +s 1 +f 247/519/43 258/520/43 250/521/43 +f 324/522/44 304/523/45 303/524/44 +f 328/525/46 300/526/47 299/527/46 +f 316/528/43 254/529/48 315/530/48 +f 303/531/49 314/532/50 302/533/51 +f 305/534/52 312/535/53 304/536/54 +f 311/537/55 309/538/56 306/539/56 +f 250/540/57 248/541/58 395/542/57 +f 245/543/58 249/544/59 248/541/58 +f 244/545/59 251/546/60 249/544/59 +f 243/547/61 252/548/62 251/546/60 +f 242/549/63 253/550/64 252/548/62 +f 240/551/65 254/552/66 255/553/67 +f 241/554/68 255/553/67 253/550/64 +f 239/555/69 256/556/70 254/552/66 +f 237/557/71 256/556/70 238/558/72 +f 262/559/38 261/560/38 257/561/38 +f 243/562/45 263/563/44 242/564/44 +f 250/565/73 260/566/74 245/567/74 +f 239/568/47 267/569/46 238/570/46 +f 242/564/44 264/571/75 241/572/75 +f 245/567/74 261/573/76 244/574/76 +f 238/570/46 259/575/77 237/576/77 +f 240/577/78 265/578/47 239/568/47 +f 244/574/76 262/579/45 243/562/45 +f 237/580/79 257/581/79 247/582/79 +f 241/572/75 266/583/78 240/577/78 +f 319/584/43 308/585/43 311/586/43 +f 269/587/38 284/588/38 270/589/38 +f 329/590/80 269/591/80 393/592/80 +f 331/593/78 271/594/78 270/595/78 +f 333/596/78 273/597/78 272/598/78 +f 335/599/78 275/600/78 274/601/78 +f 273/602/38 292/603/38 274/604/38 +f 275/605/38 296/606/38 276/607/38 +f 271/608/38 288/609/38 272/610/38 +f 281/611/81 279/612/81 278/613/81 +f 285/614/81 283/615/81 282/616/81 +f 289/617/81 287/618/81 286/619/81 +f 293/620/81 291/621/81 290/622/81 +f 297/623/81 295/624/81 294/625/81 +f 277/626/38 280/627/38 268/628/38 +f 351/629/78 293/620/78 290/622/78 +f 355/630/78 297/623/78 294/625/78 +f 339/631/78 281/611/78 278/613/78 +f 268/632/82 280/633/82 281/611/82 +f 337/634/78 277/635/78 276/636/78 +f 276/637/82 296/638/82 297/623/82 +f 274/639/82 292/640/82 293/620/82 +f 272/641/82 288/642/82 289/617/82 +f 270/643/82 284/644/82 285/614/82 +f 396/645/83 248/646/84 309/647/84 +f 317/648/85 298/649/86 299/650/87 +f 322/651/76 306/652/74 305/653/76 +f 306/539/56 310/654/52 305/534/52 +f 304/536/54 313/655/88 303/531/49 +f 301/656/89 315/657/90 300/658/91 +f 327/659/41 326/660/41 318/661/41 +f 300/658/91 317/648/85 299/650/87 +f 325/662/75 303/524/44 302/663/75 +f 321/664/74 311/665/73 306/652/74 +f 301/666/78 325/662/75 302/663/75 +f 326/667/47 301/666/78 300/526/47 +f 345/668/41 330/669/41 331/670/41 +f 323/671/45 305/653/76 304/523/45 +f 318/672/79 298/673/79 308/674/79 +f 320/675/77 299/527/46 298/676/77 +f 357/677/41 336/678/41 337/679/41 +f 353/680/41 334/681/41 335/682/41 +f 349/683/41 332/684/41 333/685/41 +f 344/686/92 346/687/92 343/688/92 +f 340/689/92 342/690/92 339/631/92 +f 348/691/92 350/692/92 347/693/92 +f 356/694/92 358/695/92 355/630/92 +f 352/696/92 354/697/92 351/629/92 +f 341/698/41 338/699/41 394/700/41 +f 298/649/86 360/701/93 308/702/41 +f 347/693/78 289/617/78 286/619/78 +f 237/557/71 359/703/94 246/704/95 +f 343/688/78 285/614/78 282/616/78 +f 339/631/79 278/613/79 338/705/79 +f 355/630/79 294/625/79 336/706/79 +f 351/629/79 290/622/79 334/707/79 +f 347/693/79 286/619/79 332/708/79 +f 343/688/79 282/616/79 330/709/79 +f 309/647/84 249/710/96 310/711/96 +f 310/711/96 251/712/97 312/713/97 +f 312/713/97 252/714/98 313/715/98 +f 313/715/98 253/716/99 314/717/99 +f 316/528/43 253/716/99 255/718/43 +f 302/533/51 316/719/100 301/656/89 +f 315/530/48 256/720/101 317/721/101 +f 317/721/101 246/722/102 307/723/102 +f 360/724/82 246/722/82 359/725/82 +f 329/726/79 395/727/83 396/645/83 +f 370/728/43 362/729/103 361/730/43 +f 369/731/103 363/732/82 362/729/103 +f 371/733/82 364/734/45 363/732/82 +f 372/735/45 365/736/78 364/734/45 +f 373/737/78 366/738/104 365/736/78 +f 374/739/104 367/740/79 366/738/104 +f 375/741/79 368/742/97 367/743/79 +f 376/744/97 361/730/43 368/742/97 +f 378/745/103 386/746/43 377/747/43 +f 379/748/82 385/749/103 378/745/103 +f 380/750/45 387/751/82 379/748/82 +f 381/752/78 388/753/45 380/750/45 +f 382/754/104 389/755/78 381/752/78 +f 383/756/79 390/757/104 382/754/104 +f 384/758/97 391/759/79 383/760/79 +f 377/747/43 392/761/97 384/758/97 +f 392/762/41 386/763/41 389/764/41 +f 393/765/105 359/766/105 395/767/105 +f 360/768/106 329/769/106 396/770/106 +f 372/771/38 371/772/38 375/773/38 +f 247/519/43 257/774/43 258/520/43 +f 324/522/44 323/671/45 304/523/45 +f 328/525/46 326/667/47 300/526/47 +f 316/528/43 255/718/43 254/529/48 +f 303/531/49 313/655/88 314/532/50 +f 305/534/52 310/654/52 312/535/53 +f 311/537/55 396/775/55 309/538/56 +f 250/540/57 245/543/58 248/541/58 +f 245/543/58 244/545/59 249/544/59 +f 244/545/59 243/547/61 251/546/60 +f 243/547/61 242/549/63 252/548/62 +f 242/549/63 241/554/68 253/550/64 +f 240/551/65 239/555/69 254/552/66 +f 241/554/68 240/551/65 255/553/67 +f 239/555/69 238/558/72 256/556/70 +f 237/557/71 246/704/95 256/556/70 +f 258/776/38 257/561/38 260/777/38 +f 257/561/38 259/778/38 267/779/38 +f 260/777/38 257/561/38 261/560/38 +f 267/779/38 265/780/38 257/561/38 +f 265/780/38 266/781/38 257/561/38 +f 266/781/38 264/782/38 257/561/38 +f 264/782/38 263/783/38 257/561/38 +f 263/783/38 262/559/38 257/561/38 +f 243/562/45 262/579/45 263/563/44 +f 250/565/73 258/784/73 260/566/74 +f 239/568/47 265/578/47 267/569/46 +f 242/564/44 263/563/44 264/571/75 +f 245/567/74 260/566/74 261/573/76 +f 238/570/46 267/569/46 259/575/77 +f 240/577/78 266/583/78 265/578/47 +f 244/574/76 261/573/76 262/579/45 +f 237/580/79 259/785/79 257/581/79 +f 241/572/75 264/571/75 266/583/78 +f 319/584/43 318/786/43 308/585/43 +f 269/587/38 283/615/38 284/588/38 +f 329/590/80 330/787/80 269/591/80 +f 331/593/78 332/788/78 271/594/78 +f 333/596/78 334/789/78 273/597/78 +f 335/599/78 336/790/78 275/600/78 +f 273/602/38 291/621/38 292/603/38 +f 275/605/38 295/624/38 296/606/38 +f 271/608/38 287/618/38 288/609/38 +f 281/611/81 280/627/81 279/612/81 +f 285/614/81 284/588/81 283/615/81 +f 289/617/81 288/609/81 287/618/81 +f 293/620/81 292/603/81 291/621/81 +f 297/623/81 296/606/81 295/624/81 +f 277/626/38 279/612/38 280/627/38 +f 351/629/78 354/697/78 293/620/78 +f 355/630/78 358/695/78 297/623/78 +f 339/631/78 342/690/78 281/611/78 +f 281/611/82 342/690/82 268/632/82 +f 342/690/82 341/791/82 394/792/82 +f 268/632/82 342/690/82 394/792/82 +f 337/634/78 338/793/78 277/635/78 +f 297/623/82 358/695/82 276/637/82 +f 358/695/82 357/794/82 337/795/82 +f 276/637/82 358/695/82 337/795/82 +f 293/620/82 354/697/82 274/639/82 +f 354/697/82 353/796/82 335/797/82 +f 274/639/82 354/697/82 335/797/82 +f 289/617/82 350/692/82 272/641/82 +f 350/692/82 349/798/82 333/799/82 +f 272/641/82 350/692/82 333/799/82 +f 285/614/82 346/687/82 270/643/82 +f 346/687/82 345/800/82 331/801/82 +f 270/643/82 346/687/82 331/801/82 +f 396/645/83 395/727/83 248/646/84 +f 317/648/85 307/802/107 298/649/86 +f 322/651/76 321/664/74 306/652/74 +f 306/539/56 309/538/56 310/654/52 +f 304/536/54 312/535/53 313/655/88 +f 301/656/89 316/719/100 315/657/90 +f 320/803/41 318/661/41 328/804/41 +f 318/661/41 319/805/41 321/806/41 +f 328/804/41 318/661/41 326/660/41 +f 321/806/41 322/807/41 318/661/41 +f 322/807/41 323/808/41 318/661/41 +f 323/808/41 324/809/41 318/661/41 +f 324/809/41 325/810/41 318/661/41 +f 325/810/41 327/659/41 318/661/41 +f 300/658/91 315/657/90 317/648/85 +f 325/662/75 324/522/44 303/524/44 +f 321/664/74 319/811/73 311/665/73 +f 301/666/78 327/812/78 325/662/75 +f 326/667/47 327/812/78 301/666/78 +f 345/668/41 344/686/41 330/669/41 +f 323/671/45 322/651/76 305/653/76 +f 318/672/79 320/813/79 298/673/79 +f 320/675/77 328/525/46 299/527/46 +f 357/677/41 356/694/41 336/678/41 +f 353/680/41 352/696/41 334/681/41 +f 349/683/41 348/691/41 332/684/41 +f 344/686/92 345/668/92 346/687/92 +f 340/689/92 341/698/92 342/690/92 +f 348/691/92 349/683/92 350/692/92 +f 356/694/92 357/677/92 358/695/92 +f 352/696/92 353/680/92 354/697/92 +f 341/698/41 340/689/41 338/699/41 +f 298/649/86 307/802/107 360/701/93 +f 347/693/78 350/692/78 289/617/78 +f 237/557/71 247/814/38 359/703/94 +f 343/688/78 346/687/78 285/614/78 +f 279/815/79 277/816/79 278/613/79 +f 277/816/79 338/705/79 278/613/79 +f 338/705/79 340/817/79 339/631/79 +f 295/818/79 275/819/79 294/625/79 +f 275/819/79 336/706/79 294/625/79 +f 336/706/79 356/820/79 355/630/79 +f 291/821/79 273/822/79 290/622/79 +f 273/822/79 334/707/79 290/622/79 +f 334/707/79 352/823/79 351/629/79 +f 287/824/79 271/825/79 286/619/79 +f 271/825/79 332/708/79 286/619/79 +f 332/708/79 348/826/79 347/693/79 +f 283/827/79 269/828/79 282/616/79 +f 269/828/79 330/709/79 282/616/79 +f 330/709/79 344/829/79 343/688/79 +f 309/647/84 248/646/84 249/710/96 +f 310/711/96 249/710/96 251/712/97 +f 312/713/97 251/712/97 252/714/98 +f 313/715/98 252/714/98 253/716/99 +f 316/528/43 314/717/99 253/716/99 +f 302/533/51 314/532/50 316/719/100 +f 315/530/48 254/529/48 256/720/101 +f 317/721/101 256/720/101 246/722/102 +f 268/830/82 394/831/82 360/724/82 +f 360/724/82 307/723/82 246/722/82 +f 359/725/82 268/830/82 360/724/82 +f 329/726/79 393/832/79 395/727/83 +f 370/728/43 369/731/103 362/729/103 +f 369/731/103 371/733/82 363/732/82 +f 371/733/82 372/735/45 364/734/45 +f 372/735/45 373/737/78 365/736/78 +f 373/737/78 374/739/104 366/738/104 +f 374/739/104 375/833/79 367/740/79 +f 375/741/79 376/744/97 368/742/97 +f 376/744/97 370/728/43 361/730/43 +f 378/745/103 385/749/103 386/746/43 +f 379/748/82 387/751/82 385/749/103 +f 380/750/45 388/753/45 387/751/82 +f 381/752/78 389/755/78 388/753/45 +f 382/754/104 390/757/104 389/755/78 +f 383/756/79 391/834/79 390/757/104 +f 384/758/97 392/761/97 391/759/79 +f 377/747/43 386/746/43 392/761/97 +f 386/763/41 385/835/41 389/764/41 +f 385/835/41 387/836/41 389/764/41 +f 387/836/41 388/837/41 389/764/41 +f 389/764/41 390/838/41 391/839/41 +f 391/839/41 392/762/41 389/764/41 +f 393/765/105 268/840/105 359/766/105 +f 360/768/106 394/841/106 329/769/106 +f 371/772/38 369/842/38 375/773/38 +f 369/842/38 370/843/38 375/773/38 +f 370/843/38 376/844/38 375/773/38 +f 375/773/38 374/845/38 373/846/38 +f 373/846/38 372/771/38 375/773/38 +o doorLeft +v 0.166667 0.183059 1.291355 +v 0.166667 0.574264 1.541358 +v 0.166667 1.014811 1.723840 +v 0.166667 1.476714 1.784650 +v 0.166667 1.938615 1.723840 +v 0.166667 2.369039 1.545552 +v 0.166667 2.738652 1.261938 +v 0.166667 3.022266 0.892325 +v 0.166667 3.200554 0.461901 +v 0.168084 0.047998 1.426236 +v 0.166667 0.183060 0.183059 +v 0.168084 3.345687 0.497568 +v 0.168084 3.153632 0.961228 +v 0.166667 3.245492 0.183060 +v 0.168084 2.848119 1.359382 +v 0.168084 2.449965 1.664895 +v 0.168084 1.986305 1.856950 +v 0.168084 0.991167 1.856950 +v 0.168084 1.488737 1.922456 +v 0.168084 0.527508 1.664895 +v 0.107558 0.183060 0.183059 +v 0.107558 3.245492 0.183060 +v 0.107558 0.183059 1.291355 +v 0.107558 3.200554 0.461901 +v 0.107558 3.022266 0.892325 +v 0.107558 2.738652 1.261938 +v 0.107558 2.369039 1.545552 +v 0.107558 1.938615 1.723840 +v 0.107558 1.014811 1.723840 +v 0.107558 1.476714 1.784650 +v 0.107558 0.574264 1.541358 +v 0.168084 3.397916 0.100850 +v 0.166667 3.039069 0.100000 +v 0.166667 2.708339 0.100000 +v 0.166667 2.377609 0.100000 +v 0.166667 2.046879 0.100000 +v 0.166667 1.716149 0.100000 +v 0.166667 1.385420 0.100000 +v 0.166667 1.054690 0.100000 +v 0.166667 0.723960 0.100000 +v 0.166667 0.393230 0.100000 +v -0.166666 0.183059 1.291355 +v -0.166666 0.574264 1.541358 +v -0.166666 1.014811 1.723840 +v -0.166666 1.476714 1.784650 +v -0.166666 1.938615 1.723840 +v -0.166666 2.369039 1.545552 +v -0.166666 2.738652 1.261938 +v -0.166666 3.022266 0.892325 +v -0.166666 3.200554 0.461901 +v -0.168083 0.047998 1.426236 +v -0.166666 0.183060 0.183059 +v -0.168083 3.345687 0.497568 +v -0.168083 3.153632 0.961228 +v -0.166666 3.245492 0.183060 +v -0.168083 2.848119 1.359382 +v -0.168083 2.449965 1.664895 +v -0.168083 1.986305 1.856950 +v -0.168083 0.991167 1.856950 +v -0.168083 1.488737 1.922456 +v -0.168083 0.527508 1.664895 +v -0.107558 0.183060 0.183059 +v -0.107557 3.245492 0.183060 +v -0.107558 0.183059 1.291355 +v -0.107557 3.200554 0.461901 +v -0.107557 3.022266 0.892325 +v -0.107557 2.738652 1.261938 +v -0.107558 2.369039 1.545552 +v -0.107558 1.938615 1.723840 +v -0.107558 1.014811 1.723840 +v -0.107557 1.476714 1.784650 +v -0.107558 0.574264 1.541358 +v -0.166666 3.039069 0.100000 +v -0.166666 2.708339 0.100000 +v -0.166666 2.377609 0.100000 +v -0.166666 2.046879 0.100000 +v -0.166666 1.716149 0.100000 +v -0.166666 1.385420 0.100000 +v -0.166666 1.054690 0.100000 +v -0.166666 0.723960 0.100000 +v -0.166666 0.393230 0.100000 +v 0.166667 0.047999 0.183059 +v -0.168083 3.397916 0.184616 +v 0.168084 3.397916 -0.050425 +v 0.117658 3.397916 -0.100850 +v 0.116667 3.039069 -0.100000 +v 0.166667 3.039069 -0.050000 +v 0.166667 2.708339 -0.050000 +v 0.116667 2.708339 -0.100000 +v 0.116667 2.377609 -0.100000 +v 0.166667 2.377609 -0.050000 +v 0.166667 2.046879 -0.050000 +v 0.116667 2.046879 -0.100000 +v 0.116667 1.716149 -0.100000 +v 0.166667 1.716149 -0.050000 +v 0.166667 1.385420 -0.050000 +v 0.116667 1.385420 -0.100000 +v 0.116667 1.054690 -0.100000 +v 0.166667 1.054690 -0.050000 +v 0.166667 0.723960 -0.050000 +v 0.116667 0.723960 -0.100000 +v 0.116667 0.393230 -0.100000 +v 0.166667 0.393230 -0.050000 +v -0.168083 3.397916 -0.050425 +v -0.117658 3.397916 -0.100850 +v -0.116666 3.039069 -0.100000 +v -0.166666 3.039069 -0.050000 +v -0.166666 2.708339 -0.050000 +v -0.116666 2.708339 -0.100000 +v -0.116666 2.377609 -0.100000 +v -0.166666 2.377609 -0.050000 +v -0.166666 2.046879 -0.050000 +v -0.116666 2.046879 -0.100000 +v -0.116666 1.716149 -0.100000 +v -0.166666 1.716149 -0.050000 +v -0.166666 1.385420 -0.050000 +v -0.116666 1.385420 -0.100000 +v -0.116666 1.054690 -0.100000 +v -0.166666 1.054690 -0.050000 +v -0.166666 0.723960 -0.050000 +v -0.116666 0.723960 -0.100000 +v -0.116666 0.393230 -0.100000 +v -0.166666 0.393230 -0.050000 +v 0.057399 2.947922 0.628826 +v 0.057399 2.811188 0.572189 +v 0.057399 2.754550 0.435454 +v 0.057399 2.811188 0.298720 +v 0.057399 2.947922 0.242083 +v 0.057399 3.084657 0.298720 +v 0.057399 3.141294 0.435454 +v 0.057399 3.084657 0.572189 +v 0.134706 2.811188 0.572189 +v 0.134706 2.947922 0.628826 +v 0.134706 2.754550 0.435454 +v 0.134706 2.811188 0.298720 +v 0.134706 2.947922 0.242083 +v 0.134706 3.084657 0.298720 +v 0.134706 3.141294 0.435454 +v 0.134706 3.084657 0.572189 +v -0.057398 2.947922 0.628826 +v -0.057398 2.811188 0.572189 +v -0.057398 2.754550 0.435454 +v -0.057398 2.811188 0.298720 +v -0.057398 2.947922 0.242083 +v -0.057398 3.084657 0.298720 +v -0.057398 3.141294 0.435454 +v -0.057398 3.084657 0.572189 +v -0.134705 2.811188 0.572189 +v -0.134705 2.947922 0.628826 +v -0.134705 2.754550 0.435454 +v -0.134705 2.811188 0.298720 +v -0.134705 2.947922 0.242083 +v -0.134705 3.084657 0.298720 +v -0.134705 3.141294 0.435454 +v -0.134705 3.084657 0.572189 +v 0.166667 2.212244 0.100000 +v -0.166666 2.212244 0.100000 +v 0.090995 0.595453 0.114216 +v 0.090995 0.707781 0.114216 +v 0.090995 0.595453 1.616943 +v 0.090995 0.707781 1.616943 +v 0.159155 0.609494 0.114216 +v 0.159155 0.693740 0.114216 +v 0.159155 0.609494 1.616943 +v 0.159155 0.693740 1.616943 +v 0.090995 1.262953 0.114216 +v 0.090995 1.375282 0.114216 +v 0.090995 1.262953 1.841179 +v 0.090995 1.375282 1.841179 +v 0.159155 1.276994 0.114216 +v 0.159155 1.361241 0.114216 +v 0.159155 1.276994 1.841179 +v 0.159155 1.361241 1.841179 +v 0.090995 1.930453 0.114216 +v 0.090995 2.042782 0.114216 +v 0.090995 1.930453 1.753672 +v 0.090995 2.042782 1.753672 +v 0.159155 1.944494 0.114216 +v 0.159155 2.028741 0.114216 +v 0.159155 1.944494 1.753672 +v 0.159155 2.028741 1.753672 +v 0.090995 2.597953 0.114216 +v 0.090995 2.710282 0.114216 +v 0.090995 2.597953 1.403646 +v 0.090995 2.710282 1.403646 +v 0.159155 2.611994 0.114216 +v 0.159155 2.696241 0.114216 +v 0.159155 2.611994 1.403646 +v 0.159155 2.696241 1.403646 +v -0.090994 0.595453 0.114216 +v -0.090994 0.707781 0.114216 +v -0.090994 0.595453 1.616943 +v -0.090994 0.707781 1.616943 +v -0.159155 0.609494 0.114216 +v -0.159155 0.693740 0.114216 +v -0.159155 0.609494 1.616943 +v -0.159155 0.693740 1.616943 +v -0.090994 1.262953 0.114216 +v -0.090994 1.375282 0.114216 +v -0.090994 1.262953 1.841179 +v -0.090994 1.375282 1.841179 +v -0.159155 1.276994 0.114216 +v -0.159155 1.361241 0.114216 +v -0.159155 1.276994 1.841179 +v -0.159155 1.361241 1.841179 +v -0.090994 1.930453 0.114216 +v -0.090994 2.042782 0.114216 +v -0.090994 1.930453 1.753672 +v -0.090994 2.042782 1.753672 +v -0.159155 1.944494 0.114216 +v -0.159155 2.028741 0.114216 +v -0.159155 1.944494 1.753672 +v -0.159155 2.028741 1.753672 +v -0.090994 2.597953 0.114216 +v -0.090994 2.710282 0.114216 +v -0.090994 2.597953 1.403646 +v -0.090994 2.710282 1.403646 +v -0.159155 2.611994 0.114216 +v -0.159155 2.696241 0.114216 +v -0.159155 2.611994 1.403646 +v -0.159155 2.696241 1.403646 +v 0.166667 0.047999 0.100000 +v -0.166666 0.047999 0.100000 +v -0.168083 3.397916 0.100850 +v 0.168084 3.397916 0.184616 +v -0.166666 0.047999 0.183059 +vt 0.345261 0.851848 +vt 0.236786 0.847477 +vt 0.345261 0.847477 +vt 0.783083 0.236574 +vt 0.877473 0.231282 +vt 0.877473 0.236574 +vt 0.783083 0.240945 +vt 0.877473 0.240945 +vt 0.783083 0.231282 +vt 0.877473 0.226911 +vt 0.661892 0.928877 +vt 0.656600 0.820401 +vt 0.661892 0.820401 +vt 0.666263 0.928877 +vt 0.666263 0.820401 +vt 0.656600 0.928877 +vt 0.652229 0.820401 +vt 0.686915 0.923380 +vt 0.681624 0.820401 +vt 0.686915 0.820401 +vt 0.691287 0.923380 +vt 0.691287 0.820401 +vt 0.681624 0.923380 +vt 0.677252 0.820401 +vt 0.120617 0.906925 +vt 0.201609 0.901634 +vt 0.201609 0.906925 +vt 0.120617 0.911296 +vt 0.201609 0.911296 +vt 0.120617 0.901634 +vt 0.201609 0.897262 +vt 0.345261 0.857140 +vt 0.236786 0.851848 +vt 0.246449 0.872501 +vt 0.241157 0.966891 +vt 0.241157 0.872501 +vt 0.250820 0.872501 +vt 0.246449 0.966891 +vt 0.236786 0.966891 +vt 0.236786 0.872501 +vt 0.553510 0.890940 +vt 0.472517 0.886569 +vt 0.553510 0.886569 +vt 0.345261 0.861511 +vt 0.236786 0.857140 +vt 0.120617 0.881902 +vt 0.223595 0.886273 +vt 0.120617 0.886273 +vt 0.472517 0.881277 +vt 0.553510 0.881278 +vt 0.472517 0.876906 +vt 0.553510 0.876906 +vt 0.120617 0.872239 +vt 0.223595 0.876610 +vt 0.120617 0.876610 +vt 0.223595 0.881902 +vt 0.783083 0.226911 +vt 0.652229 0.928877 +vt 0.677252 0.923380 +vt 0.120617 0.897262 +vt 0.250820 0.966891 +vt 0.472517 0.890940 +vt 0.236786 0.861511 +vt 0.223595 0.872239 +vt 0.990793 0.982377 +vt 0.994505 0.790024 +vt 0.994505 0.982377 +vt 0.975330 0.140291 +vt 0.979043 0.169554 +vt 0.975330 0.169554 +vt 0.958688 0.735153 +vt 0.979803 0.703630 +vt 0.979803 0.735153 +vt 0.686077 0.070125 +vt 0.666517 0.094166 +vt 0.678580 0.065042 +vt 0.754142 0.017893 +vt 0.722778 0.020841 +vt 0.751901 0.008776 +vt 0.346040 0.826913 +vt 0.326285 0.833206 +vt 0.328526 0.824090 +vt 0.297161 0.821141 +vt 0.301490 0.812889 +vt 0.272153 0.801950 +vt 0.278274 0.795074 +vt 0.252964 0.776940 +vt 0.260460 0.771857 +vt 0.240900 0.747817 +vt 0.249262 0.744821 +vt 0.245442 0.715808 +vt 0.240900 0.685309 +vt 0.249262 0.686794 +vt 0.236786 0.716563 +vt 0.252963 0.656185 +vt 0.260723 0.659122 +vt 0.276425 0.634549 +vt 0.782646 0.086752 +vt 0.786465 0.057739 +vt 0.883246 0.005495 +vt 0.975330 0.374451 +vt 0.979043 0.345187 +vt 0.979043 0.374451 +vt 0.975330 0.286661 +vt 0.979043 0.268920 +vt 0.979043 0.286661 +vt 0.975330 0.492194 +vt 0.979043 0.462242 +vt 0.979043 0.492194 +vt 0.975330 0.403715 +vt 0.979043 0.403715 +vt 0.975330 0.315924 +vt 0.979043 0.315924 +vt 0.975330 0.521356 +vt 0.979043 0.521356 +vt 0.975330 0.462242 +vt 0.979043 0.432979 +vt 0.975330 0.345187 +vt 0.633615 0.523161 +vt 0.703230 0.526874 +vt 0.633615 0.526874 +vt 0.975330 0.023236 +vt 0.979043 0.052499 +vt 0.975330 0.052499 +vt 0.486381 0.832580 +vt 0.501037 0.853354 +vt 0.486381 0.853354 +vt 0.593125 0.832580 +vt 0.588684 0.853354 +vt 0.588684 0.832580 +vt 0.514901 0.853354 +vt 0.505479 0.832580 +vt 0.514901 0.832580 +vt 0.958688 0.703630 +vt 0.979803 0.669986 +vt 0.975330 0.198817 +vt 0.979043 0.228769 +vt 0.975330 0.228769 +vt 0.979043 0.081763 +vt 0.975330 0.081763 +vt 0.990793 0.586682 +vt 0.994505 0.779035 +vt 0.990792 0.779035 +vt 0.703891 0.046908 +vt 0.697769 0.040032 +vt 0.702042 0.207434 +vt 0.678579 0.185797 +vt 0.686339 0.182860 +vt 0.979043 0.111027 +vt 0.975330 0.111027 +vt 0.979043 0.198817 +vt 0.771656 0.215922 +vt 0.693569 0.215917 +vt 0.212598 0.897262 +vt 0.216311 0.966877 +vt 0.212598 0.966877 +vt 0.481939 0.832580 +vt 0.472517 0.853354 +vt 0.472517 0.832580 +vt 0.979043 0.257931 +vt 0.975330 0.257931 +vt 0.346040 0.626061 +vt 0.346040 0.634544 +vt 0.589985 0.820018 +vt 0.610922 0.820018 +vt 0.607782 0.832580 +vt 0.958688 0.892770 +vt 0.979803 0.861246 +vt 0.979803 0.892770 +vt 0.448966 0.780214 +vt 0.452106 0.777073 +vt 0.461528 0.777073 +vt 0.958688 0.829723 +vt 0.979803 0.798200 +vt 0.979803 0.829723 +vt 0.958688 0.944222 +vt 0.979803 0.924293 +vt 0.979803 0.944222 +vt 0.674878 0.155188 +vt 0.666516 0.156673 +vt 0.806530 0.574614 +vt 0.829747 0.556800 +vt 0.874297 0.735138 +vt 0.958688 0.949484 +vt 0.979803 0.949484 +vt 0.958688 0.766676 +vt 0.979803 0.766676 +vt 0.958688 0.798200 +vt 0.413756 0.798100 +vt 0.413756 0.776984 +vt 0.426426 0.780152 +vt 0.424479 0.819903 +vt 0.445417 0.819903 +vt 0.442276 0.832465 +vt 0.442276 0.853239 +vt 0.445417 0.856380 +vt 0.445417 0.865802 +vt 0.504178 0.856495 +vt 0.504178 0.865917 +vt 0.554409 0.853354 +vt 0.557550 0.856495 +vt 0.557550 0.865917 +vt 0.958688 0.861246 +vt 0.483240 0.820018 +vt 0.504178 0.820018 +vt 0.501037 0.832580 +vt 0.536613 0.820018 +vt 0.557550 0.820018 +vt 0.554409 0.832580 +vt 0.295591 0.929608 +vt 0.316365 0.950546 +vt 0.295591 0.950545 +vt 0.568273 0.853354 +vt 0.558851 0.832580 +vt 0.568273 0.832580 +vt 0.426437 0.799412 +vt 0.449030 0.808733 +vt 0.426490 0.808914 +vt 0.539753 0.832580 +vt 0.535312 0.853354 +vt 0.535312 0.832580 +vt 0.427620 0.832465 +vt 0.423178 0.853239 +vt 0.423178 0.832465 +vt 0.413756 0.853239 +vt 0.413756 0.832465 +vt 0.525890 0.853354 +vt 0.525890 0.832580 +vt 0.456139 0.853239 +vt 0.446718 0.832465 +vt 0.456139 0.832465 +vt 0.621645 0.853354 +vt 0.612223 0.832580 +vt 0.621645 0.832580 +vt 0.426426 0.794932 +vt 0.448977 0.799312 +vt 0.448977 0.775772 +vt 0.426437 0.775672 +vt 0.612223 0.853354 +vt 0.446718 0.853239 +vt 0.558851 0.853354 +vt 0.449030 0.766351 +vt 0.426490 0.766170 +vt 0.427620 0.853239 +vt 0.607782 0.853354 +vt 0.593125 0.853354 +vt 0.448966 0.794870 +vt 0.610922 0.856495 +vt 0.610922 0.865917 +vt 0.958777 0.591899 +vt 0.979714 0.586682 +vt 0.979714 0.591899 +vt 0.282747 0.940410 +vt 0.261809 0.950797 +vt 0.261809 0.940410 +vt 0.481939 0.853355 +vt 0.295591 0.897681 +vt 0.317276 0.918619 +vt 0.295591 0.918619 +vt 0.060116 0.930852 +vt 0.039179 0.951626 +vt 0.039179 0.930852 +vt 0.958688 0.924293 +vt 0.771657 0.015069 +vt 0.771558 0.005495 +vt 0.730569 0.930395 +vt 0.709632 0.951169 +vt 0.709632 0.930395 +vt 0.727106 0.029093 +vt 0.671059 0.126175 +vt 0.662402 0.125419 +vt 0.979043 0.140291 +vt 0.674878 0.097162 +vt 0.975330 0.005495 +vt 0.979043 0.023236 +vt 0.579262 0.853354 +vt 0.579262 0.832580 +vt 0.539753 0.853354 +vt 0.580344 0.923388 +vt 0.585200 0.932684 +vt 0.580344 0.932684 +vt 0.580344 0.914091 +vt 0.585200 0.923388 +vt 0.580344 0.904795 +vt 0.585200 0.914091 +vt 0.580344 0.895499 +vt 0.585200 0.904795 +vt 0.580344 0.886202 +vt 0.585200 0.895499 +vt 0.580344 0.876906 +vt 0.585200 0.886202 +vt 0.580344 0.941980 +vt 0.585200 0.951277 +vt 0.580344 0.951277 +vt 0.585200 0.941980 +vt 0.041812 0.917230 +vt 0.038254 0.908641 +vt 0.062546 0.908641 +vt 0.564499 0.932684 +vt 0.569355 0.923388 +vt 0.569355 0.932684 +vt 0.564499 0.923388 +vt 0.569355 0.914091 +vt 0.564499 0.914091 +vt 0.569355 0.904795 +vt 0.564499 0.904795 +vt 0.569355 0.895499 +vt 0.564499 0.895499 +vt 0.569355 0.886202 +vt 0.564499 0.886202 +vt 0.569355 0.876906 +vt 0.564499 0.951277 +vt 0.569355 0.941980 +vt 0.569355 0.951277 +vt 0.564499 0.941980 +vt 0.092421 0.900053 +vt 0.095979 0.908641 +vt 0.071686 0.908641 +vt 0.282747 0.930023 +vt 0.261809 0.930023 +vt 0.874841 0.746128 +vt 0.880058 0.956548 +vt 0.874797 0.956549 +vt 0.402767 0.766172 +vt 0.397550 0.976585 +vt 0.397506 0.766170 +vt 0.990792 0.790024 +vt 0.345942 0.836488 +vt 0.267953 0.626065 +vt 0.813631 0.005495 +vt 0.797928 0.030067 +vt 0.883246 0.197854 +vt 0.865731 0.195031 +vt 0.838695 0.183833 +vt 0.815479 0.166018 +vt 0.797664 0.142802 +vt 0.786465 0.115766 +vt 0.975330 0.268920 +vt 0.975330 0.432979 +vt 0.703230 0.523161 +vt 0.505479 0.853354 +vt 0.958688 0.669986 +vt 0.994505 0.586682 +vt 0.771657 0.207438 +vt 0.216311 0.897262 +vt 0.610922 0.829440 +vt 0.589985 0.829440 +vt 0.461528 0.798011 +vt 0.452106 0.798011 +vt 0.874297 0.542778 +vt 0.856783 0.545601 +vt 0.804682 0.735138 +vt 0.788979 0.710565 +vt 0.777517 0.682893 +vt 0.773697 0.653880 +vt 0.777517 0.624867 +vt 0.788716 0.597831 +vt 0.423258 0.776984 +vt 0.423258 0.798100 +vt 0.445417 0.829325 +vt 0.424479 0.829325 +vt 0.424479 0.865802 +vt 0.424479 0.856380 +vt 0.483240 0.865917 +vt 0.483240 0.856495 +vt 0.536613 0.865917 +vt 0.536613 0.856495 +vt 0.504178 0.829440 +vt 0.483240 0.829440 +vt 0.557550 0.829440 +vt 0.536613 0.829440 +vt 0.316365 0.929608 +vt 0.589985 0.865917 +vt 0.589985 0.856495 +vt 0.958777 0.586682 +vt 0.282747 0.950797 +vt 0.317276 0.897681 +vt 0.060116 0.951626 +vt 0.730569 0.951169 +vt 0.979043 0.005495 +vt 0.585200 0.876906 +vt 0.041812 0.900053 +vt 0.050400 0.896495 +vt 0.058989 0.900053 +vt 0.058989 0.917230 +vt 0.050400 0.920787 +vt 0.564499 0.876906 +vt 0.092421 0.917230 +vt 0.083833 0.920787 +vt 0.075244 0.917230 +vt 0.075244 0.900052 +vt 0.083833 0.896495 +vt 0.880058 0.746127 +vt 0.402767 0.976587 +vn -0.2018 -0.9794 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.2018 -0.9794 0.0000 +vn 0.2018 0.9794 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.2018 0.9794 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -0.2588 -0.9659 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.2588 0.9659 +vn 0.0000 -0.4144 0.9101 +vn -1.0000 -0.0049 -0.0086 +vn -0.9999 -0.0027 -0.0097 +vn -1.0000 -0.0050 -0.0085 +vn -1.0000 -0.0091 -0.0026 +vn -1.0000 -0.0083 -0.0048 +vn 1.0000 -0.0093 -0.0015 +vn 1.0000 -0.0091 -0.0026 +vn 1.0000 -0.0083 -0.0048 +vn 1.0000 -0.0069 -0.0068 +vn 1.0000 -0.0068 -0.0069 +vn 1.0000 -0.0050 -0.0085 +vn 1.0000 -0.0049 -0.0086 +vn 0.9999 -0.0027 -0.0097 +vn 0.9999 -0.0025 -0.0097 +vn 0.9999 0.0001 -0.0103 +vn 0.9999 0.0027 -0.0102 +vn 0.9999 0.0028 -0.0101 +vn 0.9999 -0.0001 -0.0103 +vn 0.9999 0.0047 -0.0093 +vn 0.9999 0.0051 -0.0096 +vn 1.0000 0.0067 -0.0038 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.9621 -0.2727 +vn 0.0000 -0.9873 -0.1591 +vn 0.0000 0.4624 -0.8867 +vn 0.0000 0.2588 -0.9659 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 0.5385 -0.8426 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 -0.4456 0.8952 +vn -1.0000 -0.0068 -0.0069 +vn -1.0000 -0.0069 -0.0068 +vn -1.0000 0.0067 -0.0038 +vn -0.9999 0.0047 -0.0093 +vn -0.9999 0.0051 -0.0096 +vn -1.0000 0.0007 -0.0001 +vn -1.0000 0.0058 -0.0047 +vn 1.0000 0.0007 -0.0001 +vn 0.0000 0.8660 0.5000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.2588 0.9659 +vn 0.0000 0.9966 0.0826 +vn 0.0000 0.9613 0.2754 +vn -0.9999 0.0028 -0.0101 +vn -0.9999 0.0027 -0.0102 +vn -1.0000 -0.0039 0.0000 +vn -0.7071 -0.0036 -0.7071 +vn 0.7071 -0.0036 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 1.0000 -0.0039 0.0000 +vn 0.0000 -0.0024 -1.0000 +vn -1.0000 -0.0093 -0.0015 +vn -0.9999 0.0001 -0.0103 +vn -0.9999 -0.0001 -0.0103 +vn -0.9999 -0.0025 -0.0097 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 1.0000 -0.0004 0.0000 +vn -1.0000 -0.0004 0.0000 +vn 1.0000 0.0058 -0.0047 +s off +f 664/847/108 658/848/108 660/849/108 +f 622/850/109 625/851/109 624/852/109 +f 618/853/110 624/852/110 620/854/110 +f 623/855/111 621/856/111 625/851/111 +f 630/857/109 633/858/109 632/859/109 +f 626/860/110 632/859/110 628/861/110 +f 631/862/111 629/863/111 633/858/111 +f 638/864/109 641/865/109 640/866/109 +f 634/867/110 640/866/110 636/868/110 +f 639/869/111 637/870/111 641/865/111 +f 646/871/109 649/872/109 648/873/109 +f 642/874/110 648/873/110 644/875/110 +f 647/876/111 645/877/111 649/872/111 +f 665/878/112 662/879/112 664/847/112 +f 657/880/112 654/881/112 656/882/112 +f 653/883/113 655/884/113 657/880/113 +f 656/882/108 650/885/108 652/886/108 +f 677/887/113 679/888/113 681/889/113 +f 661/890/113 663/891/113 665/878/113 +f 672/892/108 666/893/108 668/894/108 +f 681/889/112 678/895/112 680/896/112 +f 680/896/108 674/897/108 676/898/108 +f 669/899/113 671/900/113 673/901/113 +f 673/901/112 670/902/112 672/892/112 +f 664/847/108 662/879/108 658/848/108 +f 622/850/109 623/855/109 625/851/109 +f 618/853/110 622/850/110 624/852/110 +f 623/855/111 619/903/111 621/856/111 +f 630/857/109 631/862/109 633/858/109 +f 626/860/110 630/857/110 632/859/110 +f 631/862/111 627/904/111 629/863/111 +f 638/864/109 639/869/109 641/865/109 +f 634/867/110 638/864/110 640/866/110 +f 639/869/111 635/905/111 637/870/111 +f 646/871/109 647/876/109 649/872/109 +f 642/874/110 646/871/110 648/873/110 +f 647/876/111 643/906/111 645/877/111 +f 665/878/112 663/891/112 662/879/112 +f 657/880/112 655/884/112 654/881/112 +f 653/883/113 651/907/113 655/884/113 +f 656/882/108 654/881/108 650/885/108 +f 677/887/113 675/908/113 679/888/113 +f 661/890/113 659/909/113 663/891/113 +f 672/892/108 670/902/108 666/893/108 +f 681/889/112 679/888/112 678/895/112 +f 680/896/108 678/895/108 674/897/108 +f 669/899/113 667/910/113 671/900/113 +f 673/901/112 671/900/112 670/902/112 +s 1 +f 482/911/114 471/912/114 474/913/114 +f 506/914/115 531/915/116 505/916/116 +f 519/917/117 480/918/118 478/919/117 +f 507/920/119 518/921/120 517/922/121 +f 510/923/122 514/924/123 513/925/122 +f 474/926/124 472/927/125 469/928/125 +f 469/928/125 473/929/126 468/930/126 +f 468/930/126 475/931/127 467/932/128 +f 467/932/128 476/933/129 466/934/130 +f 466/934/130 477/935/131 465/936/132 +f 464/937/133 478/938/134 463/939/135 +f 465/936/132 479/940/136 464/937/133 +f 463/939/135 480/941/137 462/942/138 +f 480/941/137 461/943/139 462/942/138 +f 490/944/109 489/945/109 481/946/109 +f 487/947/140 467/948/141 466/949/140 +f 484/950/142 474/951/143 469/952/142 +f 491/953/144 463/954/145 462/955/144 +f 488/956/115 466/949/140 465/957/115 +f 485/958/146 469/952/142 468/959/146 +f 483/960/147 462/955/144 461/961/147 +f 489/962/145 464/963/116 463/954/145 +f 486/964/141 468/959/146 467/948/141 +f 481/965/148 461/966/148 471/967/148 +f 464/963/116 488/956/115 465/957/115 +f 510/968/142 526/969/146 509/970/146 +f 577/971/116 558/972/116 578/973/116 +f 569/974/149 571/975/149 568/976/149 +f 499/977/109 556/978/109 498/979/109 +f 521/980/118 470/981/150 480/918/118 +f 504/982/145 532/983/144 503/984/144 +f 509/970/146 527/985/141 508/986/141 +f 512/987/114 523/988/114 515/989/114 +f 508/990/151 517/922/121 516/991/152 +f 502/992/153 521/993/154 503/994/155 +f 508/986/141 528/995/140 507/996/140 +f 505/916/116 530/997/145 504/982/145 +f 502/992/153 686/998/156 511/999/157 +f 502/1000/148 522/1001/148 512/1002/148 +f 576/1003/112 539/1004/112 538/1005/112 +f 503/984/144 524/1006/147 502/1007/147 +f 461/943/139 542/1008/158 471/1009/109 +f 534/1010/148 494/1011/148 549/1012/148 +f 514/1013/159 475/1014/160 473/1015/159 +f 546/1016/161 547/1017/161 493/1018/161 +f 517/1019/162 477/1020/163 476/1021/162 +f 543/1022/164 472/1023/165 685/1024/164 +f 504/1025/166 521/993/154 519/1026/167 +f 527/1027/112 526/1028/112 522/1029/112 +f 684/1030/148 685/1024/164 492/1031/148 +f 520/1032/114 478/919/117 479/1033/114 +f 520/1032/114 477/1020/163 518/1034/163 +f 684/1035/148 492/1036/148 545/1037/148 +f 536/1038/148 496/1039/148 553/1040/148 +f 554/1041/161 555/1042/161 497/1043/161 +f 558/972/161 559/1044/161 499/1045/161 +f 562/1046/161 563/1047/161 501/1048/161 +f 516/1049/160 476/1021/162 475/1014/160 +f 538/1050/148 498/1051/148 557/1052/148 +f 540/1053/148 500/1054/148 561/1055/148 +f 540/1056/116 499/1057/116 500/1058/116 +f 501/1059/109 560/1060/109 500/1061/109 +f 564/1062/168 533/1063/168 684/1064/168 +f 581/1065/149 583/1066/149 580/1067/149 +f 573/1068/149 575/1069/149 572/1070/149 +f 572/1070/112 537/1071/112 536/1072/112 +f 580/1067/112 541/1073/112 540/1074/112 +f 497/1075/109 552/1076/109 496/1077/109 +f 495/1078/109 548/1079/109 494/1080/109 +f 565/1081/169 567/1082/169 564/1062/169 +f 547/1083/170 545/1037/170 544/1084/170 +f 551/1085/171 549/1012/171 548/1079/171 +f 555/1086/171 553/1040/171 552/1076/171 +f 556/978/171 558/972/171 557/1052/171 +f 563/1087/171 561/1055/171 560/1060/171 +f 493/1088/172 544/1084/172 492/1089/172 +f 573/1068/116 554/1041/116 574/1090/116 +f 569/974/116 550/1091/116 570/1092/116 +f 565/1081/173 546/1016/173 566/1093/173 +f 550/1091/161 551/1094/161 495/1095/161 +f 686/1096/161 682/1097/161 542/1098/161 +f 617/1099/116 495/1100/116 616/1101/116 +f 576/1003/149 578/973/149 579/1102/149 +f 683/1103/116 501/1104/116 682/1105/116 +f 538/1106/116 497/1107/116 498/1108/116 +f 513/1109/165 473/1015/159 472/1023/165 +f 515/1110/174 513/925/122 543/1111/174 +f 534/1112/116 493/1113/116 494/1114/116 +f 509/1115/123 516/991/152 514/924/123 +f 505/1116/175 519/1026/167 520/1117/176 +f 507/996/140 529/1118/115 506/914/115 +f 506/1119/177 520/1117/176 518/921/120 +f 515/1120/143 525/1121/142 510/968/142 +f 568/976/112 535/1122/112 534/1123/112 +f 581/1065/116 562/1046/116 582/1124/116 +f 585/1125/178 593/1126/114 584/1127/114 +f 586/1128/161 592/1129/178 585/1125/178 +f 587/1130/141 594/1131/161 586/1128/161 +f 588/1132/116 595/1133/141 587/1130/141 +f 589/1134/179 596/1135/116 588/1132/116 +f 590/1136/148 597/1137/179 589/1134/179 +f 591/1138/160 598/1139/148 590/1140/148 +f 584/1127/114 599/1141/160 591/1138/160 +f 599/1142/109 593/1143/109 596/1144/109 +f 609/1145/114 601/1146/178 600/1147/114 +f 608/1148/178 602/1149/161 601/1146/178 +f 610/1150/161 603/1151/141 602/1149/161 +f 611/1152/141 604/1153/116 603/1151/141 +f 612/1154/116 605/1155/179 604/1153/116 +f 613/1156/179 606/1157/148 605/1155/179 +f 614/1158/148 607/1159/160 606/1160/148 +f 615/1161/160 600/1147/114 607/1159/160 +f 611/1162/112 610/1163/112 614/1164/112 +f 536/1165/116 616/1101/116 496/1166/116 +f 542/1167/180 492/1168/180 685/1169/180 +f 684/1170/181 686/1171/181 543/1172/181 +f 482/911/114 481/1173/114 471/912/114 +f 506/914/115 529/1118/115 531/915/116 +f 519/917/117 521/980/118 480/918/118 +f 507/920/119 506/1119/177 518/921/120 +f 510/923/122 509/1115/123 514/924/123 +f 474/926/124 685/1174/124 472/927/125 +f 469/928/125 472/927/125 473/929/126 +f 468/930/126 473/929/126 475/931/127 +f 467/932/128 475/931/127 476/933/129 +f 466/934/130 476/933/129 477/935/131 +f 464/937/133 479/940/136 478/938/134 +f 465/936/132 477/935/131 479/940/136 +f 463/939/135 478/938/134 480/941/137 +f 480/941/137 470/1175/182 461/943/139 +f 483/1176/109 481/946/109 491/1177/109 +f 481/946/109 482/1178/109 484/1179/109 +f 491/1177/109 481/946/109 489/945/109 +f 484/1179/109 485/1180/109 481/946/109 +f 485/1180/109 486/1181/109 481/946/109 +f 486/1181/109 487/1182/109 481/946/109 +f 487/1182/109 488/1183/109 481/946/109 +f 488/1183/109 490/944/109 481/946/109 +f 487/947/140 486/964/141 467/948/141 +f 484/950/142 482/1184/143 474/951/143 +f 491/953/144 489/962/145 463/954/145 +f 488/956/115 487/947/140 466/949/140 +f 485/958/146 484/950/142 469/952/142 +f 483/960/147 491/953/144 462/955/144 +f 489/962/145 490/1185/116 464/963/116 +f 486/964/141 485/958/146 468/959/146 +f 481/965/148 483/1186/148 461/966/148 +f 464/963/116 490/1185/116 488/956/115 +f 510/968/142 525/1121/142 526/969/146 +f 577/971/116 557/1052/116 558/972/116 +f 569/974/149 570/1092/149 571/975/149 +f 499/977/109 559/1187/109 556/978/109 +f 521/980/118 511/1188/150 470/981/150 +f 504/982/145 530/997/145 532/983/144 +f 509/970/146 526/969/146 527/985/141 +f 512/987/114 522/1189/114 523/988/114 +f 508/990/151 507/920/119 517/922/121 +f 502/992/153 511/999/157 521/993/154 +f 508/986/141 527/985/141 528/995/140 +f 505/916/116 531/915/116 530/997/145 +f 502/992/153 512/1190/112 686/998/156 +f 502/1000/148 524/1191/148 522/1001/148 +f 576/1003/112 579/1102/112 539/1004/112 +f 503/984/144 532/983/144 524/1006/147 +f 461/943/139 470/1175/182 542/1008/158 +f 548/1192/148 549/1012/148 494/1011/148 +f 549/1012/148 569/974/148 534/1010/148 +f 569/974/148 568/1193/148 534/1010/148 +f 514/1013/159 516/1049/160 475/1014/160 +f 493/1018/161 533/1194/161 566/1093/161 +f 533/1194/161 567/1195/161 566/1093/161 +f 566/1093/161 546/1016/161 493/1018/161 +f 517/1019/162 518/1034/163 477/1020/163 +f 543/1022/164 513/1109/165 472/1023/165 +f 504/1025/166 503/994/155 521/993/154 +f 523/1196/112 522/1029/112 525/1197/112 +f 522/1029/112 524/1198/112 532/1199/112 +f 525/1197/112 522/1029/112 526/1028/112 +f 532/1199/112 530/1200/112 522/1029/112 +f 530/1200/112 531/1201/112 522/1029/112 +f 531/1201/112 529/1202/112 522/1029/112 +f 529/1202/112 528/1203/112 522/1029/112 +f 528/1203/112 527/1027/112 522/1029/112 +f 684/1030/148 543/1022/164 685/1024/164 +f 520/1032/114 519/917/117 478/919/117 +f 520/1032/114 479/1033/114 477/1020/163 +f 544/1204/148 545/1037/148 492/1036/148 +f 545/1037/148 565/1081/148 684/1035/148 +f 565/1081/148 564/1205/148 684/1035/148 +f 552/1206/148 553/1040/148 496/1039/148 +f 553/1040/148 573/1068/148 536/1038/148 +f 573/1068/148 572/1207/148 536/1038/148 +f 497/1043/161 537/1208/161 574/1090/161 +f 537/1208/161 575/1209/161 574/1090/161 +f 574/1090/161 554/1041/161 497/1043/161 +f 499/1045/161 539/1210/161 578/973/161 +f 539/1210/161 579/1211/161 578/973/161 +f 578/973/161 558/972/161 499/1045/161 +f 501/1048/161 541/1212/161 582/1124/161 +f 541/1212/161 583/1213/161 582/1124/161 +f 582/1124/161 562/1046/161 501/1048/161 +f 516/1049/160 517/1019/162 476/1021/162 +f 556/1214/148 557/1052/148 498/1051/148 +f 557/1052/148 577/971/148 538/1050/148 +f 577/971/148 576/1215/148 538/1050/148 +f 560/1216/148 561/1055/148 500/1054/148 +f 561/1055/148 581/1065/148 540/1053/148 +f 581/1065/148 580/1217/148 540/1053/148 +f 540/1056/116 539/1218/116 499/1057/116 +f 501/1059/109 563/1087/109 560/1060/109 +f 564/1062/168 567/1082/168 533/1063/168 +f 581/1065/149 582/1124/149 583/1066/149 +f 573/1068/149 574/1090/149 575/1069/149 +f 572/1070/112 575/1069/112 537/1071/112 +f 580/1067/112 583/1066/112 541/1073/112 +f 497/1075/109 555/1086/109 552/1076/109 +f 495/1078/109 551/1085/109 548/1079/109 +f 565/1081/169 566/1093/169 567/1082/169 +f 547/1083/170 546/1016/170 545/1037/170 +f 551/1085/171 550/1091/171 549/1012/171 +f 555/1086/171 554/1041/171 553/1040/171 +f 556/978/171 559/1187/171 558/972/171 +f 563/1087/171 562/1046/171 561/1055/171 +f 493/1088/172 547/1083/172 544/1084/172 +f 573/1068/116 553/1040/116 554/1041/116 +f 569/974/116 549/1012/116 550/1091/116 +f 565/1081/173 545/1037/173 546/1016/173 +f 495/1095/161 535/1219/161 570/1092/161 +f 535/1219/161 571/1220/161 570/1092/161 +f 570/1092/161 550/1091/161 495/1095/161 +f 542/1098/161 470/981/161 511/1188/161 +f 686/1096/161 683/1221/161 682/1097/161 +f 542/1098/161 511/1188/161 686/1096/161 +f 617/1099/116 535/1222/116 495/1100/116 +f 576/1003/149 577/971/149 578/973/149 +f 683/1103/116 541/1223/116 501/1104/116 +f 538/1106/116 537/1224/116 497/1107/116 +f 513/1109/165 514/1013/159 473/1015/159 +f 515/1110/174 510/923/122 513/925/122 +f 534/1112/116 533/1225/116 493/1113/116 +f 509/1115/123 508/990/151 516/991/152 +f 505/1116/175 504/1025/166 519/1026/167 +f 507/996/140 528/995/140 529/1118/115 +f 506/1119/177 505/1116/175 520/1117/176 +f 515/1120/143 523/1226/143 525/1121/142 +f 568/976/112 571/975/112 535/1122/112 +f 581/1065/116 561/1055/116 562/1046/116 +f 585/1125/178 592/1129/178 593/1126/114 +f 586/1128/161 594/1131/161 592/1129/178 +f 587/1130/141 595/1133/141 594/1131/161 +f 588/1132/116 596/1135/116 595/1133/141 +f 589/1134/179 597/1137/179 596/1135/116 +f 590/1136/148 598/1227/148 597/1137/179 +f 591/1138/160 599/1141/160 598/1139/148 +f 584/1127/114 593/1126/114 599/1141/160 +f 593/1143/109 592/1228/109 596/1144/109 +f 592/1228/109 594/1229/109 596/1144/109 +f 594/1229/109 595/1230/109 596/1144/109 +f 596/1144/109 597/1231/109 598/1232/109 +f 598/1232/109 599/1142/109 596/1144/109 +f 609/1145/114 608/1148/178 601/1146/178 +f 608/1148/178 610/1150/161 602/1149/161 +f 610/1150/161 611/1152/141 603/1151/141 +f 611/1152/141 612/1154/116 604/1153/116 +f 612/1154/116 613/1156/179 605/1155/179 +f 613/1156/179 614/1233/148 606/1157/148 +f 614/1158/148 615/1161/160 607/1159/160 +f 615/1161/160 609/1145/114 600/1147/114 +f 610/1163/112 608/1234/112 614/1164/112 +f 608/1234/112 609/1235/112 614/1164/112 +f 609/1235/112 615/1236/112 614/1164/112 +f 614/1164/112 613/1237/112 612/1238/112 +f 612/1238/112 611/1162/112 614/1164/112 +f 536/1165/116 617/1099/116 616/1101/116 +f 542/1167/180 682/1239/180 492/1168/180 +f 684/1170/181 683/1240/181 686/1171/181 diff --git a/src/main/resources/assets/hbm/models/doors/secure_access_door.obj b/src/main/resources/assets/hbm/models/doors/secure_access_door.obj new file mode 100644 index 000000000..24c2c95b6 --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/secure_access_door.obj @@ -0,0 +1,4364 @@ +# Blender v2.92.0 OBJ File: 'secure_access_door.blend' +# www.blender.org +o door +v -2.340313 1.159684 0.125000 +v 2.340313 1.159684 0.125000 +v -2.500000 0.999997 0.125000 +v -2.500000 4.499997 0.125000 +v 2.500000 4.499997 0.125000 +v 2.500000 0.999997 0.125000 +v -2.340313 1.159684 0.045951 +v 2.340313 1.159684 0.045951 +v -2.340313 4.119773 0.125000 +v -2.119776 4.340310 0.125000 +v -2.496256 4.496253 0.125000 +v 2.119776 4.340310 0.125000 +v 2.340313 4.119773 0.125000 +v 2.496256 4.496253 0.125000 +v -2.119776 4.340310 0.045951 +v -2.340313 4.119773 0.045951 +v 2.340313 4.119773 0.045951 +v 2.119776 4.340310 0.045951 +v -2.500000 4.119773 0.125000 +v 2.500000 4.119773 0.125000 +v 2.500000 3.579181 0.125000 +v 2.500000 3.423868 0.125000 +v 2.500000 2.800531 0.125000 +v 2.500000 2.642630 0.125000 +v 2.500000 2.022151 0.125000 +v 2.500000 1.861122 0.125000 +v -2.340313 3.455513 0.125000 +v -2.340313 3.610826 0.125000 +v -2.340313 2.714197 0.125000 +v -2.340313 2.872098 0.125000 +v -2.340313 1.972611 0.125000 +v -2.340313 2.133640 0.125000 +v -2.340313 2.133400 0.045951 +v -2.340313 1.972851 0.045951 +v -2.340313 2.871974 0.045951 +v -2.340313 2.714321 0.045951 +v -2.340313 3.610798 0.045951 +v -2.340313 3.455542 0.045951 +v 2.340313 2.133640 0.125000 +v 2.340313 1.972611 0.125000 +v 2.340313 2.872098 0.125000 +v 2.340313 2.714197 0.125000 +v 2.340313 3.610826 0.125000 +v 2.340313 3.455513 0.125000 +v 2.340313 3.455542 0.045951 +v 2.340313 3.610798 0.045951 +v 2.340313 2.714321 0.045951 +v 2.340313 2.871974 0.045951 +v 2.340313 1.972851 0.045951 +v 2.340313 2.133400 0.045951 +v -2.500000 1.861122 0.125000 +v -2.500000 2.022151 0.125000 +v -2.500000 2.642630 0.125000 +v -2.500000 2.800531 0.125000 +v -2.500000 3.423868 0.125000 +v -2.500000 3.579181 0.125000 +v -2.340313 3.455542 0.072230 +v -2.340313 3.483067 0.099755 +v -2.340313 3.583273 0.099755 +v -2.340313 3.610798 0.072230 +v 2.340313 3.610798 0.072230 +v 2.340313 3.583273 0.099755 +v 2.340313 3.483067 0.099755 +v 2.340313 3.455542 0.072230 +v -2.340313 2.714321 0.072230 +v -2.340313 2.741846 0.099755 +v -2.340313 2.844450 0.099755 +v -2.340313 2.871974 0.072230 +v 2.340313 2.871974 0.072230 +v 2.340313 2.844450 0.099755 +v 2.340313 2.741846 0.099755 +v 2.340313 2.714321 0.072230 +v -2.340313 1.972851 0.072230 +v -2.340313 2.000376 0.099755 +v -2.340313 2.105875 0.099755 +v -2.340313 2.133400 0.072230 +v 2.340313 2.133400 0.072230 +v 2.340313 2.105875 0.099755 +v 2.340313 2.000376 0.099755 +v 2.340313 1.972851 0.072230 +v -1.212864 2.208840 0.074562 +v -1.212864 2.619229 0.074562 +v -1.243111 2.178593 0.033562 +v -1.243111 2.649477 0.033562 +v -0.802475 2.208840 0.074562 +v -0.802475 2.619229 0.074562 +v -0.772228 2.178593 0.033562 +v -0.772228 2.649477 0.033562 +v -1.243111 2.178593 0.074562 +v -1.243111 2.649477 0.074562 +v -0.772228 2.649477 0.074562 +v -0.772228 2.178593 0.074562 +v -1.212864 2.208840 0.054611 +v -1.212864 2.619229 0.054611 +v -0.802475 2.619229 0.054611 +v -0.802475 2.208840 0.054611 +v -0.204356 2.301647 0.091702 +v -0.204356 2.301647 0.020851 +v -0.204356 2.466216 0.020851 +v 0.204356 2.301647 0.091702 +v 0.204356 2.301647 0.020851 +v 0.204356 2.466216 0.020851 +v -0.204356 2.395251 0.091702 +v -0.204356 2.466216 0.055863 +v -0.204356 2.445431 0.081205 +v 0.204356 2.466216 0.055863 +v 0.204356 2.395251 0.091702 +v 0.204356 2.445431 0.081205 +v -2.500240 1.249014 0.129405 +v -2.500100 1.217400 0.147657 +v -2.499822 1.217400 0.184161 +v -2.499682 1.249014 0.202413 +v -2.499822 1.280628 0.184161 +v -2.500101 1.280628 0.147657 +v -1.553283 1.291650 0.190060 +v -2.111814 1.291690 0.190126 +v -2.112233 1.249014 0.116279 +v -1.553702 1.249014 0.116145 +v -1.553562 1.291690 0.140806 +v -2.112093 1.291650 0.140872 +v -1.546745 1.249014 0.128878 +v -2.119190 1.249014 0.129046 +v -2.119050 1.217400 0.147298 +v -1.546605 1.217400 0.147130 +v -2.118771 1.217400 0.183802 +v -1.546326 1.217400 0.183635 +v -2.118632 1.249014 0.202055 +v -1.546187 1.249014 0.201887 +v -2.118772 1.280628 0.183802 +v -1.546326 1.280628 0.183635 +v -2.119050 1.280628 0.147298 +v -1.546605 1.280628 0.147130 +v -2.111675 1.249014 0.214788 +v -1.553144 1.249014 0.214653 +v -2.111814 1.206339 0.190126 +v -1.553283 1.206378 0.190060 +v -2.112093 1.206378 0.140872 +v -1.553562 1.206339 0.140806 +v -2.111814 1.206378 0.083217 +v -2.111814 1.617254 0.083217 +v -2.111814 1.206378 0.043381 +v -2.111814 1.617254 0.043381 +v -1.553562 1.206378 0.083217 +v -1.553562 1.617254 0.083217 +v -1.553562 1.206378 0.043381 +v -1.553563 1.617254 0.043381 +v -2.111814 1.291650 0.083217 +v -2.111814 1.291650 0.043381 +v -1.553562 1.291650 0.043381 +v -1.553562 1.291650 0.083217 +v -2.111814 1.249014 0.043381 +v -2.111814 1.249014 0.083217 +v -1.553562 1.249014 0.043381 +v -1.553562 1.249014 0.083217 +v 2.500240 1.249014 0.129405 +v 2.500100 1.217400 0.147657 +v 2.499822 1.217400 0.184161 +v 2.499682 1.249014 0.202413 +v 2.499822 1.280628 0.184161 +v 2.500100 1.280628 0.147657 +v 1.553283 1.291650 0.190060 +v 2.111814 1.291690 0.190126 +v 2.112233 1.249014 0.116279 +v 1.553702 1.249014 0.116145 +v 1.553562 1.291690 0.140806 +v 2.112094 1.291650 0.140872 +v 1.546745 1.249014 0.128878 +v 2.119189 1.249014 0.129046 +v 2.119050 1.217400 0.147298 +v 1.546605 1.217400 0.147130 +v 2.118771 1.217400 0.183802 +v 1.546326 1.217400 0.183635 +v 2.118632 1.249014 0.202055 +v 1.546187 1.249014 0.201887 +v 2.118772 1.280628 0.183802 +v 1.546326 1.280628 0.183635 +v 2.119050 1.280628 0.147298 +v 1.546605 1.280628 0.147130 +v 2.111675 1.249014 0.214788 +v 1.553144 1.249014 0.214653 +v 2.111814 1.206339 0.190126 +v 1.553283 1.206378 0.190060 +v 2.112093 1.206378 0.140872 +v 1.553562 1.206339 0.140806 +v 2.111814 1.206378 0.083217 +v 2.111814 1.617254 0.083217 +v 2.111814 1.206378 0.043381 +v 2.111814 1.617254 0.043381 +v 1.553562 1.206378 0.083217 +v 1.553562 1.617254 0.083217 +v 1.553562 1.206378 0.043381 +v 1.553562 1.617254 0.043381 +v 2.111814 1.291650 0.083217 +v 2.111814 1.291650 0.043381 +v 1.553562 1.291650 0.043381 +v 1.553562 1.291650 0.083217 +v 2.111814 1.249014 0.043381 +v 2.111814 1.249014 0.083217 +v 1.553562 1.249014 0.043381 +v 1.553562 1.249014 0.083217 +v 1.168282 2.133092 0.117246 +v 1.168282 2.449447 0.117246 +v 1.116952 2.081763 0.040213 +v 1.116952 2.500776 0.040213 +v 1.964271 2.133092 0.117246 +v 1.964271 2.449447 0.117246 +v 2.015600 2.081763 0.040213 +v 2.015600 2.500776 0.040213 +v 1.116952 2.081763 0.117246 +v 1.116952 2.500776 0.117246 +v 2.015600 2.500776 0.117246 +v 2.015600 2.081763 0.117246 +v 1.657742 2.277558 0.065015 +v 1.657742 2.416211 0.065015 +v 1.916054 2.416211 0.065015 +v 1.916054 2.277558 0.065015 +v 1.220038 2.166149 0.036199 +v 1.220038 2.265817 0.036199 +v 1.319705 2.166149 0.036199 +v 1.319705 2.265817 0.036199 +v 1.269871 2.166149 0.115509 +v 1.220038 2.166149 0.065675 +v 1.234634 2.166149 0.100913 +v 1.220038 2.265817 0.065675 +v 1.234634 2.265817 0.100913 +v 1.319705 2.166149 0.065675 +v 1.305109 2.166149 0.100913 +v 1.269871 2.265817 0.115509 +v 1.319705 2.265817 0.065675 +v 1.305109 2.265817 0.100913 +v 1.293844 2.216693 0.042410 +v 1.293844 2.197116 0.053712 +v 1.293844 2.197116 0.076318 +v 1.293844 2.216693 0.087620 +v 1.293844 2.236270 0.076318 +v 1.293844 2.236270 0.053712 +v 1.715496 2.216693 0.042410 +v 1.715496 2.197116 0.053712 +v 1.715496 2.197116 0.076318 +v 1.715496 2.216693 0.087620 +v 1.715496 2.236270 0.076318 +v 1.715496 2.236270 0.053712 +v 1.916054 2.187559 0.048194 +v 1.916054 2.216693 0.031373 +v 1.715496 2.216693 0.031373 +v 1.916054 2.187559 0.081836 +v 1.916054 2.216693 0.098657 +v 1.916054 2.245828 0.081836 +v 1.916054 2.245828 0.048194 +v 1.715496 2.187559 0.048194 +v 1.715496 2.187559 0.081836 +v 1.715496 2.216693 0.098657 +v 1.715496 2.245828 0.081836 +v 1.715496 2.245828 0.048194 +v 1.168282 2.133092 0.065015 +v 1.168282 2.449447 0.065015 +v 1.964271 2.449447 0.065015 +v 1.964271 2.133092 0.065015 +v 1.659844 2.302833 0.046480 +v 1.659844 2.415082 0.046480 +v 1.913952 2.415082 0.046480 +v 1.913952 2.302833 0.046480 +v 1.683615 2.394066 0.030874 +v 1.715124 2.394066 0.030874 +v 1.683615 2.376265 0.011737 +v 1.715124 2.376265 0.011737 +v 1.683615 2.350791 0.017585 +v 1.715124 2.350791 0.017585 +v 1.683615 2.343119 0.042570 +v 1.715124 2.343119 0.042570 +v 1.683615 2.360920 0.061707 +v 1.715124 2.360920 0.061707 +v 1.683615 2.386394 0.055858 +v 1.715124 2.386394 0.055858 +v 1.683615 2.365368 0.062249 +v 1.683615 2.383127 0.059579 +v 1.715124 2.383127 0.059579 +v 1.715124 2.365368 0.062249 +v 1.683615 2.373156 0.074653 +v 1.683615 2.382544 0.071410 +v 1.715124 2.382544 0.071410 +v 1.715124 2.373156 0.074653 +v 1.740331 2.391644 0.058652 +v 1.771840 2.391644 0.058652 +v 1.740331 2.400436 0.034039 +v 1.771840 2.400436 0.034039 +v 1.740331 2.383517 0.014118 +v 1.771840 2.383517 0.014118 +v 1.740331 2.357806 0.018809 +v 1.771840 2.357806 0.018809 +v 1.740331 2.349013 0.043422 +v 1.771840 2.349013 0.043422 +v 1.740331 2.365932 0.063343 +v 1.771840 2.365932 0.063343 +v 1.740331 2.350579 0.047620 +v 1.740331 2.361125 0.062156 +v 1.771840 2.361125 0.062156 +v 1.771840 2.350579 0.047620 +v 1.740331 2.343153 0.060243 +v 1.740331 2.350354 0.067085 +v 1.771840 2.350354 0.067085 +v 1.771840 2.343153 0.060243 +v 1.797047 2.386932 0.021940 +v 1.828556 2.386932 0.021940 +v 1.797047 2.362782 0.011948 +v 1.828556 2.362782 0.011948 +v 1.797047 2.342053 0.027867 +v 1.828556 2.342053 0.027867 +v 1.797047 2.345475 0.053778 +v 1.828556 2.345475 0.053778 +v 1.797047 2.369626 0.063770 +v 1.828556 2.369626 0.063770 +v 1.797047 2.390355 0.047851 +v 1.828556 2.390355 0.047851 +v 1.797047 2.373896 0.062413 +v 1.797047 2.388932 0.052594 +v 1.828556 2.388932 0.052594 +v 1.828556 2.373896 0.062413 +v 1.797047 2.386139 0.070450 +v 1.797047 2.393326 0.063594 +v 1.828556 2.393326 0.063594 +v 1.828556 2.386139 0.070450 +v 1.853763 2.396732 0.045249 +v 1.885272 2.396732 0.045249 +v 1.853763 2.391602 0.019622 +v 1.885272 2.391602 0.019622 +v 1.853763 2.366842 0.011250 +v 1.885272 2.366842 0.011250 +v 1.853763 2.347213 0.028507 +v 1.885272 2.347213 0.028507 +v 1.853763 2.352343 0.054135 +v 1.885272 2.352343 0.054135 +v 1.853763 2.377102 0.062506 +v 1.885272 2.377102 0.062506 +v 1.853763 2.355846 0.056928 +v 1.853763 2.372370 0.063962 +v 1.885272 2.372370 0.063962 +v 1.885272 2.355846 0.056928 +v 1.853763 2.355977 0.071573 +v 1.853763 2.365673 0.073732 +v 1.885272 2.365673 0.073732 +v 1.885272 2.355977 0.071573 +v -2.340313 1.159684 -0.125000 +v 2.340313 1.159684 -0.125000 +v -2.500000 0.999997 -0.125000 +v -2.500000 4.499997 -0.125000 +v 2.500000 4.499997 -0.125000 +v 2.500000 0.999997 -0.125000 +v -2.340313 1.159684 -0.045951 +v 2.340313 1.159684 -0.045951 +v -2.340313 4.119773 -0.125000 +v -2.119776 4.340310 -0.125000 +v -2.496256 4.496253 -0.125000 +v 2.119776 4.340310 -0.125000 +v 2.340313 4.119773 -0.125000 +v 2.496256 4.496253 -0.125000 +v -2.119776 4.340310 -0.045951 +v -2.340313 4.119773 -0.045951 +v 2.340313 4.119773 -0.045951 +v 2.119776 4.340310 -0.045951 +v -2.500000 4.119773 -0.125000 +v 2.500000 4.119773 -0.125000 +v 2.500000 3.579181 -0.125000 +v 2.500000 3.423868 -0.125000 +v 2.500000 2.800531 -0.125000 +v 2.500000 2.642630 -0.125000 +v 2.500000 2.022151 -0.125000 +v 2.500000 1.861122 -0.125000 +v -2.340313 3.455513 -0.125000 +v -2.340313 3.610826 -0.125000 +v -2.340313 2.714197 -0.125000 +v -2.340313 2.872098 -0.125000 +v -2.340313 1.972611 -0.125000 +v -2.340313 2.133640 -0.125000 +v -2.340313 2.133400 -0.045951 +v -2.340313 1.972851 -0.045951 +v -2.340313 2.871974 -0.045951 +v -2.340313 2.714321 -0.045951 +v -2.340313 3.610798 -0.045951 +v -2.340313 3.455542 -0.045951 +v 2.340313 2.133640 -0.125000 +v 2.340313 1.972611 -0.125000 +v 2.340313 2.872098 -0.125000 +v 2.340313 2.714197 -0.125000 +v 2.340313 3.610826 -0.125000 +v 2.340313 3.455513 -0.125000 +v 2.340313 3.455542 -0.045951 +v 2.340313 3.610798 -0.045951 +v 2.340313 2.714321 -0.045951 +v 2.340313 2.871974 -0.045951 +v 2.340313 1.972851 -0.045951 +v 2.340313 2.133400 -0.045951 +v -2.500000 1.861122 -0.125000 +v -2.500000 2.022151 -0.125000 +v -2.500000 2.642630 -0.125000 +v -2.500000 2.800531 -0.125000 +v -2.500000 3.423868 -0.125000 +v -2.500000 3.579181 -0.125000 +v -2.340313 3.455542 -0.072230 +v -2.340313 3.483067 -0.099755 +v -2.340313 3.583273 -0.099755 +v -2.340313 3.610798 -0.072230 +v 2.340313 3.610798 -0.072230 +v 2.340313 3.583273 -0.099755 +v 2.340313 3.483067 -0.099755 +v 2.340313 3.455542 -0.072230 +v -2.340313 2.714321 -0.072230 +v -2.340313 2.741846 -0.099755 +v -2.340313 2.844450 -0.099755 +v -2.340313 2.871974 -0.072230 +v 2.340313 2.871974 -0.072230 +v 2.340313 2.844450 -0.099755 +v 2.340313 2.741846 -0.099755 +v 2.340313 2.714321 -0.072230 +v -2.340313 1.972851 -0.072230 +v -2.340313 2.000376 -0.099755 +v -2.340313 2.105875 -0.099755 +v -2.340313 2.133400 -0.072230 +v 2.340313 2.133400 -0.072230 +v 2.340313 2.105875 -0.099755 +v 2.340313 2.000376 -0.099755 +v 2.340313 1.972851 -0.072230 +v -1.212864 2.208840 -0.074562 +v -1.212864 2.619229 -0.074562 +v -1.243111 2.178593 -0.033562 +v -1.243111 2.649477 -0.033562 +v -0.802475 2.208840 -0.074562 +v -0.802475 2.619229 -0.074562 +v -0.772228 2.178593 -0.033562 +v -0.772228 2.649477 -0.033562 +v -1.243111 2.178593 -0.074562 +v -1.243111 2.649477 -0.074562 +v -0.772228 2.649477 -0.074562 +v -0.772228 2.178593 -0.074562 +v -1.212864 2.208840 -0.054611 +v -1.212864 2.619229 -0.054611 +v -0.802475 2.619229 -0.054611 +v -0.802475 2.208840 -0.054611 +v -0.204356 2.301647 -0.091702 +v -0.204356 2.301647 -0.020851 +v -0.204356 2.466216 -0.020851 +v 0.204356 2.301647 -0.091702 +v 0.204356 2.301647 -0.020851 +v 0.204356 2.466216 -0.020851 +v -0.204356 2.395251 -0.091702 +v -0.204356 2.466216 -0.055863 +v -0.204356 2.445431 -0.081205 +v 0.204356 2.466216 -0.055863 +v 0.204356 2.395251 -0.091702 +v 0.204356 2.445431 -0.081205 +v -2.500240 1.249014 -0.129405 +v -2.500100 1.217400 -0.147657 +v -2.499822 1.217400 -0.184161 +v -2.499682 1.249014 -0.202413 +v -2.499822 1.280628 -0.184161 +v -2.500101 1.280628 -0.147657 +v -1.553283 1.291650 -0.190060 +v -2.111814 1.291690 -0.190126 +v -2.112233 1.249014 -0.116279 +v -1.553702 1.249014 -0.116145 +v -1.553562 1.291690 -0.140806 +v -2.112093 1.291650 -0.140872 +v -1.546745 1.249014 -0.128878 +v -2.119190 1.249014 -0.129046 +v -2.119050 1.217400 -0.147298 +v -1.546605 1.217400 -0.147130 +v -2.118771 1.217400 -0.183802 +v -1.546326 1.217400 -0.183635 +v -2.118632 1.249014 -0.202055 +v -1.546187 1.249014 -0.201887 +v -2.118772 1.280628 -0.183802 +v -1.546326 1.280628 -0.183635 +v -2.119050 1.280628 -0.147298 +v -1.546605 1.280628 -0.147130 +v -2.111675 1.249014 -0.214788 +v -1.553144 1.249014 -0.214653 +v -2.111814 1.206339 -0.190126 +v -1.553283 1.206378 -0.190060 +v -2.112093 1.206378 -0.140872 +v -1.553562 1.206339 -0.140806 +v -2.111814 1.206378 -0.083217 +v -2.111814 1.617254 -0.083217 +v -2.111814 1.206378 -0.043381 +v -2.111814 1.617254 -0.043381 +v -1.553562 1.206378 -0.083217 +v -1.553562 1.617254 -0.083217 +v -1.553562 1.206378 -0.043381 +v -1.553563 1.617254 -0.043381 +v -2.111814 1.291650 -0.083217 +v -2.111814 1.291650 -0.043381 +v -1.553562 1.291650 -0.043381 +v -1.553562 1.291650 -0.083217 +v -2.111814 1.249014 -0.043381 +v -2.111814 1.249014 -0.083217 +v -1.553562 1.249014 -0.043381 +v -1.553562 1.249014 -0.083217 +v 2.500240 1.249014 -0.129405 +v 2.500100 1.217400 -0.147657 +v 2.499822 1.217400 -0.184161 +v 2.499682 1.249014 -0.202413 +v 2.499822 1.280628 -0.184161 +v 2.500100 1.280628 -0.147657 +v 1.553283 1.291650 -0.190060 +v 2.111814 1.291690 -0.190126 +v 2.112233 1.249014 -0.116279 +v 1.553702 1.249014 -0.116145 +v 1.553562 1.291690 -0.140806 +v 2.112094 1.291650 -0.140872 +v 1.546745 1.249014 -0.128878 +v 2.119189 1.249014 -0.129046 +v 2.119050 1.217400 -0.147298 +v 1.546605 1.217400 -0.147130 +v 2.118771 1.217400 -0.183802 +v 1.546326 1.217400 -0.183635 +v 2.118632 1.249014 -0.202055 +v 1.546187 1.249014 -0.201887 +v 2.118772 1.280628 -0.183802 +v 1.546326 1.280628 -0.183635 +v 2.119050 1.280628 -0.147298 +v 1.546605 1.280628 -0.147130 +v 2.111675 1.249014 -0.214788 +v 1.553144 1.249014 -0.214653 +v 2.111814 1.206339 -0.190126 +v 1.553283 1.206378 -0.190060 +v 2.112093 1.206378 -0.140872 +v 1.553562 1.206339 -0.140806 +v 2.111814 1.206378 -0.083217 +v 2.111814 1.617254 -0.083217 +v 2.111814 1.206378 -0.043381 +v 2.111814 1.617254 -0.043381 +v 1.553562 1.206378 -0.083217 +v 1.553562 1.617254 -0.083217 +v 1.553562 1.206378 -0.043381 +v 1.553562 1.617254 -0.043381 +v 2.111814 1.291650 -0.083217 +v 2.111814 1.291650 -0.043381 +v 1.553562 1.291650 -0.043381 +v 1.553562 1.291650 -0.083217 +v 2.111814 1.249014 -0.043381 +v 2.111814 1.249014 -0.083217 +v 1.553562 1.249014 -0.043381 +v 1.553562 1.249014 -0.083217 +v 1.168282 2.133092 -0.117246 +v 1.168282 2.449447 -0.117246 +v 1.116952 2.081763 -0.040213 +v 1.116952 2.500776 -0.040213 +v 1.964271 2.133092 -0.117246 +v 1.964271 2.449447 -0.117246 +v 2.015600 2.081763 -0.040213 +v 2.015600 2.500776 -0.040213 +v 1.116952 2.081763 -0.117246 +v 1.116952 2.500776 -0.117246 +v 2.015600 2.500776 -0.117246 +v 2.015600 2.081763 -0.117246 +v 1.657742 2.277558 -0.065015 +v 1.657742 2.416211 -0.065015 +v 1.916054 2.416211 -0.065015 +v 1.916054 2.277558 -0.065015 +v 1.220038 2.166149 -0.036199 +v 1.220038 2.265817 -0.036199 +v 1.319705 2.166149 -0.036199 +v 1.319705 2.265817 -0.036199 +v 1.269871 2.166149 -0.115509 +v 1.220038 2.166149 -0.065675 +v 1.234634 2.166149 -0.100913 +v 1.220038 2.265817 -0.065675 +v 1.234634 2.265817 -0.100913 +v 1.319705 2.166149 -0.065675 +v 1.305109 2.166149 -0.100913 +v 1.269871 2.265817 -0.115509 +v 1.319705 2.265817 -0.065675 +v 1.305109 2.265817 -0.100913 +v 1.293844 2.216693 -0.042410 +v 1.293844 2.197116 -0.053712 +v 1.293844 2.197116 -0.076318 +v 1.293844 2.216693 -0.087620 +v 1.293844 2.236270 -0.076318 +v 1.293844 2.236270 -0.053712 +v 1.715496 2.216693 -0.042410 +v 1.715496 2.197116 -0.053712 +v 1.715496 2.197116 -0.076318 +v 1.715496 2.216693 -0.087620 +v 1.715496 2.236270 -0.076318 +v 1.715496 2.236270 -0.053712 +v 1.916054 2.187559 -0.048194 +v 1.916054 2.216693 -0.031373 +v 1.715496 2.216693 -0.031373 +v 1.916054 2.187559 -0.081836 +v 1.916054 2.216693 -0.098657 +v 1.916054 2.245828 -0.081836 +v 1.916054 2.245828 -0.048194 +v 1.715496 2.187559 -0.048194 +v 1.715496 2.187559 -0.081836 +v 1.715496 2.216693 -0.098657 +v 1.715496 2.245828 -0.081836 +v 1.715496 2.245828 -0.048194 +v 1.168282 2.133092 -0.065015 +v 1.168282 2.449447 -0.065015 +v 1.964271 2.449447 -0.065015 +v 1.964271 2.133092 -0.065015 +v 1.659844 2.302833 -0.046480 +v 1.659844 2.415082 -0.046480 +v 1.913952 2.415082 -0.046480 +v 1.913952 2.302833 -0.046480 +v 1.683615 2.394066 -0.030874 +v 1.715124 2.394066 -0.030874 +v 1.683615 2.376265 -0.011737 +v 1.715124 2.376265 -0.011737 +v 1.683615 2.350791 -0.017585 +v 1.715124 2.350791 -0.017585 +v 1.683615 2.343119 -0.042570 +v 1.715124 2.343119 -0.042570 +v 1.683615 2.360920 -0.061707 +v 1.715124 2.360920 -0.061707 +v 1.683615 2.386394 -0.055858 +v 1.715124 2.386394 -0.055858 +v 1.683615 2.365368 -0.062249 +v 1.683615 2.383127 -0.059579 +v 1.715124 2.383127 -0.059579 +v 1.715124 2.365368 -0.062249 +v 1.683615 2.373156 -0.074653 +v 1.683615 2.382544 -0.071410 +v 1.715124 2.382544 -0.071410 +v 1.715124 2.373156 -0.074653 +v 1.740331 2.391644 -0.058652 +v 1.771840 2.391644 -0.058652 +v 1.740331 2.400436 -0.034039 +v 1.771840 2.400436 -0.034039 +v 1.740331 2.383517 -0.014118 +v 1.771840 2.383517 -0.014118 +v 1.740331 2.357806 -0.018809 +v 1.771840 2.357806 -0.018809 +v 1.740331 2.349013 -0.043422 +v 1.771840 2.349013 -0.043422 +v 1.740331 2.365932 -0.063343 +v 1.771840 2.365932 -0.063343 +v 1.740331 2.350579 -0.047620 +v 1.740331 2.361125 -0.062156 +v 1.771840 2.361125 -0.062156 +v 1.771840 2.350579 -0.047620 +v 1.740331 2.343153 -0.060243 +v 1.740331 2.350354 -0.067085 +v 1.771840 2.350354 -0.067085 +v 1.771840 2.343153 -0.060243 +v 1.797047 2.386932 -0.021940 +v 1.828556 2.386932 -0.021940 +v 1.797047 2.362782 -0.011948 +v 1.828556 2.362782 -0.011948 +v 1.797047 2.342053 -0.027867 +v 1.828556 2.342053 -0.027867 +v 1.797047 2.345475 -0.053778 +v 1.828556 2.345475 -0.053778 +v 1.797047 2.369626 -0.063770 +v 1.828556 2.369626 -0.063770 +v 1.797047 2.390355 -0.047851 +v 1.828556 2.390355 -0.047851 +v 1.797047 2.373896 -0.062413 +v 1.797047 2.388932 -0.052594 +v 1.828556 2.388932 -0.052594 +v 1.828556 2.373896 -0.062413 +v 1.797047 2.386139 -0.070450 +v 1.797047 2.393326 -0.063594 +v 1.828556 2.393326 -0.063594 +v 1.828556 2.386139 -0.070450 +v 1.853763 2.396732 -0.045249 +v 1.885272 2.396732 -0.045249 +v 1.853763 2.391602 -0.019622 +v 1.885272 2.391602 -0.019622 +v 1.853763 2.366842 -0.011250 +v 1.885272 2.366842 -0.011250 +v 1.853763 2.347213 -0.028507 +v 1.885272 2.347213 -0.028507 +v 1.853763 2.352343 -0.054135 +v 1.885272 2.352343 -0.054135 +v 1.853763 2.377102 -0.062506 +v 1.885272 2.377102 -0.062506 +v 1.853763 2.355846 -0.056928 +v 1.853763 2.372370 -0.063962 +v 1.885272 2.372370 -0.063962 +v 1.885272 2.355846 -0.056928 +v 1.853763 2.355977 -0.071573 +v 1.853763 2.365673 -0.073732 +v 1.885272 2.365673 -0.073732 +v 1.885272 2.355977 -0.071573 +v -2.163461 0.999997 0.125000 +v -1.682692 0.999997 0.125000 +v -1.394231 0.999997 0.125000 +v -0.913461 0.999997 0.125000 +v -0.625000 0.999997 0.125000 +v -0.144231 0.999997 0.125000 +v 0.144231 0.999997 0.125000 +v 0.625000 0.999997 0.125000 +v 0.913462 0.999997 0.125000 +v 1.394231 0.999997 0.125000 +v 1.682693 0.999997 0.125000 +v 2.163461 0.999997 0.125000 +v -2.163461 0.999997 -0.125000 +v -1.682692 0.999997 -0.125000 +v -1.394231 0.999997 -0.125000 +v -0.913461 0.999997 -0.125000 +v -0.625000 0.999997 -0.125000 +v -0.144231 0.999997 -0.125000 +v 0.144231 0.999997 -0.125000 +v 0.625000 0.999997 -0.125000 +v 0.913462 0.999997 -0.125000 +v 1.394231 0.999997 -0.125000 +v 1.682693 0.999997 -0.125000 +v 2.163461 0.999997 -0.125000 +v -2.043269 0.874997 0.093750 +v -1.802885 0.874997 0.093750 +v -1.274038 0.874997 0.093750 +v -1.033654 0.874997 0.093750 +v -0.504808 0.874997 0.093750 +v -0.264423 0.874997 0.093750 +v 0.264423 0.874997 0.093750 +v 0.504808 0.874997 0.093750 +v 1.033654 0.874997 0.093750 +v 1.274039 0.874997 0.093750 +v 1.802885 0.874997 0.093750 +v 2.043269 0.874997 0.093750 +v -2.043269 0.874997 -0.093750 +v -1.802885 0.874997 -0.093750 +v -1.274038 0.874997 -0.093750 +v -1.033654 0.874997 -0.093750 +v -0.504808 0.874997 -0.093750 +v -0.264423 0.874997 -0.093750 +v 0.264423 0.874997 -0.093750 +v 0.504808 0.874997 -0.093750 +v 1.033654 0.874997 -0.093750 +v 1.274039 0.874997 -0.093750 +v 1.802885 0.874997 -0.093750 +v 2.043269 0.874997 -0.093750 +vt 0.733844 0.172974 +vt 0.709510 0.205732 +vt 0.709510 0.172974 +vt 0.831397 0.355292 +vt 0.877231 0.351301 +vt 0.877231 0.355292 +vt 0.492430 0.004449 +vt 0.468095 0.041459 +vt 0.468095 0.004449 +vt 0.425092 0.452798 +vt 0.004556 0.460138 +vt 0.004507 0.452797 +vt 0.675567 0.125895 +vt 0.691111 0.072187 +vt 0.691111 0.132861 +vt 0.675567 0.141265 +vt 0.004877 0.575079 +vt 0.425404 0.567739 +vt 0.425462 0.575079 +vt 0.535486 0.503659 +vt 0.543181 0.473300 +vt 0.543181 0.503659 +vt 0.700410 0.955730 +vt 0.700410 0.473300 +vt 0.715817 0.509987 +vt 0.788978 0.083578 +vt 0.781284 0.004449 +vt 0.788979 0.004449 +vt 0.004663 0.484298 +vt 0.425191 0.476959 +vt 0.425248 0.484299 +vt 0.840564 0.127662 +vt 0.861856 0.110783 +vt 0.864898 0.127662 +vt 0.701335 0.954904 +vt 0.740980 0.954293 +vt 0.616380 0.658755 +vt 0.632175 0.489094 +vt 0.616380 0.706311 +vt 0.004606 0.476958 +vt 0.425141 0.469618 +vt 0.772385 0.227922 +vt 0.764691 0.243037 +vt 0.764691 0.227920 +vt 0.004984 0.651201 +vt 0.425568 0.642197 +vt 0.425569 0.651201 +vt 0.602240 0.186675 +vt 0.617784 0.240383 +vt 0.602240 0.243463 +vt 0.005091 0.665882 +vt 0.425618 0.658542 +vt 0.425676 0.665882 +vt 0.691111 0.208626 +vt 0.675567 0.213449 +vt 0.675567 0.197774 +vt 0.602240 0.171305 +vt 0.617784 0.179709 +vt 0.675567 0.292577 +vt 0.691111 0.224301 +vt 0.691111 0.308120 +vt 0.691111 0.057069 +vt 0.675567 0.069107 +vt 0.675567 0.053989 +vt 0.425462 0.627517 +vt 0.764691 0.099252 +vt 0.772385 0.155774 +vt 0.764691 0.155762 +vt 0.781284 0.243034 +vt 0.788979 0.227919 +vt 0.788979 0.243037 +vt 0.602240 0.114795 +vt 0.617784 0.164339 +vt 0.004770 0.560398 +vt 0.425355 0.551180 +vt 0.425355 0.560399 +vt 0.715817 0.919044 +vt 0.739687 0.938221 +vt 0.535487 0.946694 +vt 0.543181 0.916338 +vt 0.543181 0.946694 +vt 0.764691 0.083578 +vt 0.772385 0.004449 +vt 0.772385 0.083601 +vt 0.834341 0.348357 +vt 0.831397 0.305467 +vt 0.834341 0.308411 +vt 0.781284 0.292577 +vt 0.877231 0.301476 +vt 0.877231 0.305466 +vt 0.425305 0.543839 +vt 0.004770 0.551178 +vt 0.004720 0.543838 +vt 0.005033 0.658542 +vt 0.923079 0.004449 +vt 0.883297 0.011346 +vt 0.883297 0.004449 +vt 0.788978 0.099252 +vt 0.781284 0.155774 +vt 0.781284 0.099228 +vt 0.764691 0.171132 +vt 0.425248 0.536499 +vt 0.004663 0.536498 +vt 0.617784 0.255500 +vt 0.602240 0.258581 +vt 0.788978 0.171131 +vt 0.781284 0.227922 +vt 0.781284 0.171119 +vt 0.827406 0.305467 +vt 0.831397 0.351301 +vt 0.827406 0.351301 +vt 0.004819 0.567739 +vt 0.585191 0.188500 +vt 0.588744 0.151434 +vt 0.588744 0.188524 +vt 0.408813 0.843186 +vt 0.410755 0.883132 +vt 0.408813 0.883132 +vt 0.874287 0.308411 +vt 0.883297 0.028637 +vt 0.923079 0.025447 +vt 0.923079 0.028637 +vt 0.450701 0.841244 +vt 0.410755 0.843186 +vt 0.410755 0.841244 +vt 0.592297 0.151445 +vt 0.592297 0.188536 +vt 0.410755 0.885074 +vt 0.450701 0.883132 +vt 0.450701 0.885074 +vt 0.452643 0.883132 +vt 0.450701 0.843186 +vt 0.452643 0.843186 +vt 0.881222 0.351301 +vt 0.881222 0.305467 +vt 0.883297 0.032045 +vt 0.923079 0.032045 +vt 0.004934 0.634857 +vt 0.004877 0.627516 +vt 0.922971 0.338452 +vt 0.922971 0.354471 +vt 0.916075 0.345360 +vt 0.578084 0.151410 +vt 0.581638 0.188488 +vt 0.578084 0.188500 +vt 0.874287 0.348357 +vt 0.883297 0.025447 +vt 0.923079 0.020457 +vt 0.585191 0.151410 +vt 0.513586 0.921476 +vt 0.512564 0.917257 +vt 0.515067 0.921475 +vt 0.462309 0.358295 +vt 0.463331 0.362557 +vt 0.460816 0.358296 +vt 0.570978 0.151445 +vt 0.574531 0.188524 +vt 0.570978 0.188536 +vt 0.923079 0.011346 +vt 0.927292 0.271964 +vt 0.930370 0.273741 +vt 0.930370 0.277294 +vt 0.574531 0.151434 +vt 0.921295 0.150557 +vt 0.920274 0.145672 +vt 0.927170 0.152580 +vt 0.508461 0.924433 +vt 0.505315 0.921496 +vt 0.506735 0.921496 +vt 0.464029 0.361267 +vt 0.468237 0.362487 +vt 0.067792 0.891333 +vt 0.122132 0.896120 +vt 0.067766 0.896127 +vt 0.463324 0.354029 +vt 0.464030 0.355315 +vt 0.467486 0.355305 +vt 0.470666 0.358271 +vt 0.469231 0.358271 +vt 0.511881 0.918527 +vt 0.507722 0.917326 +vt 0.511878 0.924431 +vt 0.507718 0.925667 +vt 0.067792 0.910503 +vt 0.122132 0.905715 +vt 0.122158 0.910510 +vt 0.122119 0.900918 +vt 0.067753 0.900918 +vt 0.508468 0.918556 +vt 0.467482 0.361242 +vt 0.522312 0.925727 +vt 0.518340 0.921474 +vt 0.522312 0.921471 +vt 0.866635 0.260833 +vt 0.834941 0.206494 +vt 0.866635 0.206494 +vt 0.518336 0.925725 +vt 0.512568 0.925698 +vt 0.831064 0.260833 +vt 0.834941 0.260833 +vt 0.122129 0.919999 +vt 0.067791 0.916109 +vt 0.122130 0.916122 +vt 0.468237 0.354057 +vt 0.473941 0.354062 +vt 0.477869 0.358271 +vt 0.473937 0.358271 +vt 0.518612 0.353039 +vt 0.522932 0.105485 +vt 0.522933 0.353081 +vt 0.477872 0.362476 +vt 0.473942 0.362479 +vt 0.501328 0.352990 +vt 0.505650 0.105402 +vt 0.505650 0.352998 +vt 0.518331 0.917223 +vt 0.527254 0.105493 +vt 0.527254 0.353122 +vt 0.586021 0.300510 +vt 0.589098 0.302286 +vt 0.586021 0.307616 +vt 0.067766 0.905709 +vt 0.522306 0.917217 +vt 0.920423 0.058711 +vt 0.883344 0.062264 +vt 0.883332 0.058711 +vt 0.514292 0.352998 +vt 0.518611 0.105494 +vt 0.834941 0.264711 +vt 0.866635 0.264711 +vt 0.866635 0.202617 +vt 0.920399 0.048051 +vt 0.883332 0.044498 +vt 0.920423 0.044498 +vt 0.122130 0.885714 +vt 0.122158 0.891326 +vt 0.920387 0.051604 +vt 0.883309 0.048051 +vt 0.883309 0.055157 +vt 0.883297 0.051604 +vt 0.911809 0.919556 +vt 0.910787 0.923775 +vt 0.910104 0.922505 +vt 0.903538 0.919536 +vt 0.906684 0.916599 +vt 0.904958 0.919536 +vt 0.408852 0.903469 +vt 0.463192 0.908257 +vt 0.408826 0.908263 +vt 0.920399 0.055157 +vt 0.008327 0.841244 +vt 0.004449 0.872938 +vt 0.004449 0.841244 +vt 0.066543 0.841244 +vt 0.062666 0.872938 +vt 0.062666 0.841244 +vt 0.906691 0.922476 +vt 0.883344 0.040944 +vt 0.920435 0.040944 +vt 0.509971 0.105445 +vt 0.509971 0.352990 +vt 0.463179 0.913054 +vt 0.408826 0.917845 +vt 0.408813 0.913054 +vt 0.892629 0.346980 +vt 0.891613 0.342714 +vt 0.893335 0.345694 +vt 0.008327 0.872938 +vt 0.062666 0.876815 +vt 0.008327 0.876815 +vt 0.463192 0.917852 +vt 0.408852 0.922640 +vt 0.893333 0.339742 +vt 0.897541 0.338522 +vt 0.896787 0.339767 +vt 0.913289 0.919557 +vt 0.916559 0.915307 +vt 0.916563 0.919558 +vt 0.899971 0.342738 +vt 0.898536 0.342738 +vt 0.905941 0.915366 +vt 0.910101 0.916602 +vt 0.903246 0.346947 +vt 0.897541 0.346952 +vt 0.907176 0.338533 +vt 0.903242 0.342738 +vt 0.903247 0.338530 +vt 0.916554 0.923810 +vt 0.910791 0.915335 +vt 0.892636 0.338452 +vt 0.478497 0.827980 +vt 0.509290 0.822896 +vt 0.509290 0.827980 +vt 0.463190 0.897851 +vt 0.463218 0.903463 +vt 0.463190 0.928258 +vt 0.463218 0.922646 +vt 0.434574 0.581710 +vt 0.442073 0.669182 +vt 0.434574 0.669182 +vt 0.896791 0.345704 +vt 0.920535 0.919561 +vt 0.920529 0.923815 +vt 0.490356 0.669182 +vt 0.482858 0.581710 +vt 0.490356 0.581710 +vt 0.477862 0.664186 +vt 0.447069 0.664186 +vt 0.920535 0.915306 +vt 0.907174 0.342738 +vt 0.442073 0.581710 +vt 0.482858 0.574212 +vt 0.442073 0.676680 +vt 0.482858 0.669182 +vt 0.482858 0.676680 +vt 0.514374 0.822896 +vt 0.509290 0.745417 +vt 0.514374 0.745417 +vt 0.905945 0.923706 +vt 0.473413 0.745417 +vt 0.478497 0.822896 +vt 0.473413 0.822896 +vt 0.447069 0.586706 +vt 0.477862 0.586706 +vt 0.509290 0.740332 +vt 0.478497 0.745417 +vt 0.478497 0.740332 +vt 0.931635 0.319515 +vt 0.933055 0.322945 +vt 0.923354 0.322945 +vt 0.571259 0.354466 +vt 0.572701 0.353479 +vt 0.573181 0.353528 +vt 0.848783 0.273609 +vt 0.851652 0.283311 +vt 0.848783 0.283311 +vt 0.845071 0.273609 +vt 0.845071 0.283311 +vt 0.931635 0.302896 +vt 0.933055 0.306326 +vt 0.923354 0.306326 +vt 0.831064 0.273609 +vt 0.833933 0.283311 +vt 0.831064 0.283311 +vt 0.572675 0.234699 +vt 0.583711 0.236515 +vt 0.572785 0.236515 +vt 0.754611 0.249901 +vt 0.755542 0.247164 +vt 0.755542 0.250438 +vt 0.514291 0.105486 +vt 0.408850 0.893986 +vt 0.463189 0.893973 +vt 0.841358 0.283311 +vt 0.837645 0.273609 +vt 0.841358 0.273609 +vt 0.602115 0.557117 +vt 0.605182 0.556635 +vt 0.605182 0.557117 +vt 0.602115 0.559237 +vt 0.605182 0.558270 +vt 0.605182 0.559237 +vt 0.273168 0.912975 +vt 0.314210 0.910774 +vt 0.314210 0.912975 +vt 0.603839 0.597606 +vt 0.602129 0.598020 +vt 0.602396 0.596619 +vt 0.837645 0.283311 +vt 0.833933 0.273609 +vt 0.602115 0.593742 +vt 0.604318 0.592470 +vt 0.602115 0.568731 +vt 0.605182 0.566187 +vt 0.605182 0.568731 +vt 0.602115 0.501927 +vt 0.605182 0.499383 +vt 0.605182 0.501927 +vt 0.602115 0.556635 +vt 0.605182 0.554091 +vt 0.602115 0.563643 +vt 0.605182 0.561099 +vt 0.605182 0.563643 +vt 0.602115 0.560663 +vt 0.605182 0.560663 +vt 0.752706 0.252075 +vt 0.752706 0.251001 +vt 0.750800 0.247701 +vt 0.749870 0.250438 +vt 0.749870 0.247164 +vt 0.273168 0.910774 +vt 0.314210 0.908574 +vt 0.752706 0.245526 +vt 0.752706 0.246601 +vt 0.273168 0.908574 +vt 0.314210 0.906374 +vt 0.586762 0.236310 +vt 0.583711 0.261249 +vt 0.273168 0.915175 +vt 0.314210 0.915175 +vt 0.273168 0.906374 +vt 0.314210 0.904173 +vt 0.506276 0.686230 +vt 0.525797 0.682955 +vt 0.525797 0.686230 +vt 0.481732 0.793059 +vt 0.570978 0.236310 +vt 0.572785 0.261249 +vt 0.570978 0.261453 +vt 0.273168 0.917375 +vt 0.314210 0.917375 +vt 0.506276 0.692779 +vt 0.525797 0.689505 +vt 0.525797 0.692779 +vt 0.506276 0.696054 +vt 0.525797 0.696054 +vt 0.506276 0.689505 +vt 0.752706 0.230078 +vt 0.755542 0.231716 +vt 0.755542 0.234990 +vt 0.495228 0.793059 +vt 0.495228 0.818203 +vt 0.506276 0.702603 +vt 0.525797 0.699328 +vt 0.525797 0.702603 +vt 0.754611 0.247701 +vt 0.481732 0.818203 +vt 0.572675 0.263065 +vt 0.586171 0.263065 +vt 0.602115 0.554091 +vt 0.605182 0.551547 +vt 0.602115 0.566187 +vt 0.750800 0.249901 +vt 0.506276 0.699328 +vt 0.602115 0.561099 +vt 0.602115 0.504471 +vt 0.605182 0.504471 +vt 0.602115 0.558270 +vt 0.570991 0.353066 +vt 0.571875 0.352675 +vt 0.606241 0.581779 +vt 0.604798 0.582766 +vt 0.604318 0.582718 +vt 0.602115 0.516566 +vt 0.605182 0.514022 +vt 0.605182 0.516566 +vt 0.602115 0.507015 +vt 0.605182 0.507015 +vt 0.602115 0.514022 +vt 0.605182 0.511478 +vt 0.486770 0.355301 +vt 0.488973 0.354029 +vt 0.487051 0.358179 +vt 0.602115 0.507497 +vt 0.605182 0.507497 +vt 0.602115 0.511478 +vt 0.605182 0.511042 +vt 0.606508 0.583180 +vt 0.605624 0.583571 +vt 0.602115 0.509616 +vt 0.605182 0.508650 +vt 0.605182 0.509616 +vt 0.602115 0.511042 +vt 0.602115 0.508650 +vt 0.488494 0.359166 +vt 0.486784 0.359579 +vt 0.574045 0.341232 +vt 0.570978 0.343776 +vt 0.570978 0.341232 +vt 0.602396 0.638781 +vt 0.603839 0.637794 +vt 0.604318 0.637843 +vt 0.574045 0.338688 +vt 0.570978 0.338688 +vt 0.574045 0.326592 +vt 0.570978 0.329136 +vt 0.570978 0.326592 +vt 0.574045 0.331680 +vt 0.570978 0.334224 +vt 0.570978 0.331680 +vt 0.574045 0.329136 +vt 0.749870 0.277694 +vt 0.752073 0.276422 +vt 0.750151 0.280572 +vt 0.574045 0.338206 +vt 0.570978 0.338206 +vt 0.574045 0.334224 +vt 0.570978 0.334660 +vt 0.602129 0.637381 +vt 0.603013 0.636990 +vt 0.574045 0.336086 +vt 0.570978 0.337053 +vt 0.570978 0.336086 +vt 0.574045 0.334660 +vt 0.574045 0.337053 +vt 0.751593 0.281559 +vt 0.749883 0.281972 +vt 0.278256 0.929341 +vt 0.275712 0.926274 +vt 0.278256 0.926274 +vt 0.602396 0.712981 +vt 0.603839 0.711994 +vt 0.604318 0.712043 +vt 0.280800 0.929341 +vt 0.280800 0.926274 +vt 0.275712 0.929341 +vt 0.273168 0.926274 +vt 0.287807 0.929341 +vt 0.285263 0.926274 +vt 0.287807 0.926274 +vt 0.290351 0.929341 +vt 0.290351 0.926274 +vt 0.602115 0.667942 +vt 0.604319 0.666670 +vt 0.602396 0.670819 +vt 0.281282 0.929341 +vt 0.281282 0.926274 +vt 0.285263 0.929341 +vt 0.284827 0.926274 +vt 0.602129 0.711581 +vt 0.603013 0.711190 +vt 0.283402 0.929341 +vt 0.282435 0.926274 +vt 0.283402 0.926274 +vt 0.284827 0.929341 +vt 0.282435 0.929341 +vt 0.603839 0.671806 +vt 0.602129 0.672220 +vt 0.861856 0.044727 +vt 0.874398 0.009630 +vt 0.874398 0.056426 +vt 0.712551 0.132696 +vt 0.733844 0.115817 +vt 0.730802 0.132696 +vt 0.700010 0.167794 +vt 0.700010 0.120997 +vt 0.843605 0.087385 +vt 0.864898 0.070505 +vt 0.861856 0.087385 +vt 0.861856 0.176839 +vt 0.840564 0.193718 +vt 0.843605 0.176839 +vt 0.642226 0.350853 +vt 0.625347 0.329561 +vt 0.642226 0.326519 +vt 0.434862 0.041459 +vt 0.459196 0.004449 +vt 0.459196 0.041459 +vt 0.492430 0.094079 +vt 0.468095 0.109197 +vt 0.468095 0.094079 +vt 0.668004 0.347811 +vt 0.703102 0.360353 +vt 0.656305 0.360353 +vt 0.874398 0.075685 +vt 0.874398 0.122482 +vt 0.831064 0.141741 +vt 0.831064 0.188538 +vt 0.492430 0.109197 +vt 0.468095 0.169871 +vt 0.590249 0.317019 +vt 0.637046 0.317019 +vt 0.916054 0.095497 +vt 0.883297 0.071163 +vt 0.916054 0.071163 +vt 0.691111 0.148231 +vt 0.602240 0.019993 +vt 0.617784 0.088269 +vt 0.602240 0.099121 +vt 0.691111 0.004449 +vt 0.814516 0.351301 +vt 0.818507 0.305467 +vt 0.818507 0.351301 +vt 0.004844 0.199797 +vt 0.425348 0.207135 +vt 0.004757 0.207136 +vt 0.552080 0.473300 +vt 0.559774 0.503656 +vt 0.552080 0.503656 +vt 0.626683 0.308120 +vt 0.642226 0.258581 +vt 0.642226 0.308120 +vt 0.805572 0.004449 +vt 0.797877 0.083578 +vt 0.797877 0.004449 +vt 0.425809 0.092198 +vt 0.005286 0.084858 +vt 0.425876 0.084858 +vt 0.814471 0.155774 +vt 0.822165 0.099252 +vt 0.822165 0.155761 +vt 0.651125 0.186675 +vt 0.666669 0.240383 +vt 0.651125 0.243463 +vt 0.651125 0.171305 +vt 0.666669 0.179709 +vt 0.775041 0.509987 +vt 0.790449 0.955730 +vt 0.775041 0.919044 +vt 0.805572 0.099229 +vt 0.797877 0.099252 +vt 0.814471 0.083601 +vt 0.822165 0.083577 +vt 0.797877 0.227919 +vt 0.805572 0.243034 +vt 0.797877 0.243037 +vt 0.768681 0.305467 +vt 0.811572 0.308411 +vt 0.771626 0.308411 +vt 0.642226 0.171305 +vt 0.626683 0.179709 +vt 0.626683 0.164339 +vt 0.754283 0.331232 +vt 0.717217 0.334785 +vt 0.717193 0.331232 +vt 0.666669 0.255500 +vt 0.651125 0.258581 +vt 0.797877 0.171131 +vt 0.805572 0.227922 +vt 0.822165 0.171131 +vt 0.004603 0.283258 +vt 0.425127 0.290597 +vt 0.004536 0.290598 +vt 0.877476 0.244505 +vt 0.917422 0.204559 +vt 0.917422 0.244505 +vt 0.768682 0.351301 +vt 0.814516 0.355292 +vt 0.768682 0.355292 +vt 0.919364 0.204559 +vt 0.919364 0.244505 +vt 0.805572 0.292577 +vt 0.797877 0.292577 +vt 0.552079 0.916335 +vt 0.559774 0.946694 +vt 0.552079 0.946694 +vt 0.004911 0.183237 +vt 0.425501 0.192456 +vt 0.004911 0.192457 +vt 0.642226 0.243463 +vt 0.626683 0.255500 +vt 0.626683 0.240383 +vt 0.805572 0.155774 +vt 0.797877 0.155762 +vt 0.425501 0.183237 +vt 0.004978 0.175897 +vt 0.425569 0.175897 +vt 0.917422 0.246447 +vt 0.877476 0.246447 +vt 0.754307 0.334785 +vt 0.717228 0.338339 +vt 0.753565 0.354145 +vt 0.746668 0.347238 +vt 0.752543 0.349261 +vt 0.436354 0.358291 +vt 0.437377 0.354029 +vt 0.438074 0.355319 +vt 0.919759 0.171817 +vt 0.922226 0.169794 +vt 0.925634 0.169794 +vt 0.642226 0.114795 +vt 0.004757 0.259574 +vt 0.651125 0.019993 +vt 0.666669 0.088269 +vt 0.651125 0.099121 +vt 0.764691 0.351301 +vt 0.814471 0.004449 +vt 0.822165 0.004449 +vt 0.789524 0.954904 +vt 0.751172 0.938220 +vt 0.814516 0.305467 +vt 0.768681 0.301476 +vt 0.814516 0.301476 +vt 0.005065 0.168558 +vt 0.425655 0.168558 +vt 0.915316 0.262242 +vt 0.875534 0.255346 +vt 0.915316 0.255346 +vt 0.754271 0.327679 +vt 0.717193 0.324126 +vt 0.754283 0.324125 +vt 0.442282 0.354099 +vt 0.441528 0.355343 +vt 0.875534 0.271354 +vt 0.915316 0.276344 +vt 0.875534 0.276344 +vt 0.875534 0.262242 +vt 0.200439 0.914986 +vt 0.146099 0.919773 +vt 0.146073 0.914979 +vt 0.893198 0.362986 +vt 0.890121 0.361209 +vt 0.893198 0.355879 +vt 0.811572 0.348357 +vt 0.717181 0.327679 +vt 0.717217 0.320572 +vt 0.754307 0.320572 +vt 0.717228 0.317019 +vt 0.754319 0.317019 +vt 0.437370 0.362557 +vt 0.438076 0.361271 +vt 0.373050 0.908404 +vt 0.376196 0.905467 +vt 0.374470 0.908404 +vt 0.381322 0.908424 +vt 0.380300 0.912643 +vt 0.379617 0.911373 +vt 0.444712 0.358315 +vt 0.441532 0.361280 +vt 0.443277 0.358315 +vt 0.382802 0.908425 +vt 0.386071 0.904175 +vt 0.386075 0.908426 +vt 0.390047 0.904173 +vt 0.390047 0.908429 +vt 0.146099 0.900603 +vt 0.200439 0.905390 +vt 0.146073 0.905397 +vt 0.375458 0.912574 +vt 0.376203 0.911344 +vt 0.200426 0.910188 +vt 0.146060 0.910188 +vt 0.375453 0.904234 +vt 0.379613 0.905470 +vt 0.200435 0.891107 +vt 0.146098 0.894997 +vt 0.146097 0.891120 +vt 0.442282 0.362529 +vt 0.492791 0.685579 +vt 0.438452 0.689457 +vt 0.438452 0.685579 +vt 0.492791 0.721150 +vt 0.492791 0.689457 +vt 0.380303 0.904202 +vt 0.540474 0.105465 +vt 0.544795 0.353018 +vt 0.540474 0.353051 +vt 0.451915 0.358315 +vt 0.447987 0.362523 +vt 0.447983 0.358315 +vt 0.557757 0.105393 +vt 0.562079 0.352970 +vt 0.557757 0.352979 +vt 0.386066 0.912677 +vt 0.451917 0.354109 +vt 0.447988 0.354106 +vt 0.496668 0.689457 +vt 0.496668 0.721150 +vt 0.390041 0.912683 +vt 0.588744 0.142487 +vt 0.592297 0.105409 +vt 0.592297 0.142499 +vt 0.536153 0.105474 +vt 0.536153 0.353083 +vt 0.200436 0.894984 +vt 0.200465 0.900596 +vt 0.931108 0.076493 +vt 0.928030 0.078269 +vt 0.924953 0.076493 +vt 0.570978 0.105409 +vt 0.574531 0.142487 +vt 0.570978 0.142499 +vt 0.578084 0.105373 +vt 0.581638 0.142451 +vt 0.578084 0.142463 +vt 0.508461 0.907025 +vt 0.505315 0.904087 +vt 0.506735 0.904088 +vt 0.574531 0.105397 +vt 0.137536 0.872938 +vt 0.133658 0.841244 +vt 0.137536 0.841244 +vt 0.585191 0.105373 +vt 0.585191 0.142463 +vt 0.513586 0.904067 +vt 0.512564 0.899849 +vt 0.515067 0.904067 +vt 0.588744 0.105397 +vt 0.553436 0.105426 +vt 0.553436 0.352977 +vt 0.544795 0.105467 +vt 0.549116 0.352987 +vt 0.434574 0.721150 +vt 0.438452 0.721150 +vt 0.079319 0.872938 +vt 0.075442 0.841244 +vt 0.079319 0.841244 +vt 0.508468 0.901147 +vt 0.507722 0.899917 +vt 0.004488 0.910503 +vt 0.058828 0.905715 +vt 0.058854 0.910510 +vt 0.200436 0.925392 +vt 0.200465 0.919780 +vt 0.004488 0.891333 +vt 0.058828 0.896120 +vt 0.004462 0.896127 +vt 0.518336 0.908317 +vt 0.512568 0.908289 +vt 0.512941 0.718715 +vt 0.516125 0.715744 +vt 0.513696 0.719960 +vt 0.507768 0.715767 +vt 0.508784 0.711502 +vt 0.509489 0.712788 +vt 0.079319 0.876815 +vt 0.133658 0.872938 +vt 0.133658 0.876815 +vt 0.511878 0.907022 +vt 0.519397 0.715744 +vt 0.523331 0.719949 +vt 0.519401 0.719952 +vt 0.507718 0.908258 +vt 0.508790 0.720029 +vt 0.506276 0.715768 +vt 0.004462 0.905709 +vt 0.058815 0.900918 +vt 0.735887 0.219714 +vt 0.705094 0.214630 +vt 0.735887 0.214630 +vt 0.004449 0.900918 +vt 0.519401 0.711535 +vt 0.513696 0.711529 +vt 0.518331 0.899814 +vt 0.509488 0.718739 +vt 0.748294 0.099420 +vt 0.755792 0.011948 +vt 0.755792 0.099420 +vt 0.512945 0.712778 +vt 0.707508 0.011948 +vt 0.700010 0.099420 +vt 0.700010 0.011948 +vt 0.511881 0.901119 +vt 0.712504 0.094423 +vt 0.712504 0.016944 +vt 0.748294 0.011948 +vt 0.707508 0.004449 +vt 0.748294 0.004449 +vt 0.522312 0.904062 +vt 0.522306 0.899808 +vt 0.743297 0.016944 +vt 0.523329 0.715744 +vt 0.058826 0.885714 +vt 0.058854 0.891326 +vt 0.058826 0.916122 +vt 0.004487 0.916109 +vt 0.514691 0.715744 +vt 0.705094 0.297194 +vt 0.735887 0.302278 +vt 0.705094 0.302278 +vt 0.737769 0.347238 +vt 0.734900 0.356939 +vt 0.734900 0.347238 +vt 0.705094 0.219714 +vt 0.700010 0.297194 +vt 0.700010 0.219714 +vt 0.932863 0.109247 +vt 0.932863 0.112116 +vt 0.923161 0.109247 +vt 0.933917 0.260197 +vt 0.933917 0.263066 +vt 0.924215 0.260197 +vt 0.604318 0.731971 +vt 0.602115 0.730699 +vt 0.606241 0.727821 +vt 0.731188 0.356939 +vt 0.731188 0.347238 +vt 0.754611 0.265349 +vt 0.752706 0.267523 +vt 0.752706 0.266449 +vt 0.748294 0.106918 +vt 0.707508 0.099420 +vt 0.735887 0.297194 +vt 0.740971 0.219714 +vt 0.740971 0.297194 +vt 0.720050 0.347238 +vt 0.717181 0.356939 +vt 0.717181 0.347238 +vt 0.572675 0.225800 +vt 0.583711 0.223985 +vt 0.586171 0.225800 +vt 0.743297 0.094423 +vt 0.570978 0.305598 +vt 0.574045 0.306080 +vt 0.570978 0.306080 +vt 0.364152 0.910774 +vt 0.323109 0.908574 +vt 0.364152 0.908574 +vt 0.606508 0.746419 +vt 0.604798 0.746006 +vt 0.606241 0.745019 +vt 0.004486 0.919986 +vt 0.058825 0.919999 +vt 0.723763 0.356939 +vt 0.727475 0.347238 +vt 0.727475 0.356939 +vt 0.602115 0.473300 +vt 0.605182 0.475844 +vt 0.602115 0.475844 +vt 0.570978 0.315149 +vt 0.574045 0.317693 +vt 0.570978 0.317693 +vt 0.720050 0.356939 +vt 0.723763 0.347238 +vt 0.570978 0.310061 +vt 0.574045 0.312605 +vt 0.570978 0.312605 +vt 0.570978 0.303054 +vt 0.574045 0.305598 +vt 0.570978 0.308200 +vt 0.574045 0.309625 +vt 0.570978 0.309625 +vt 0.549116 0.105457 +vt 0.604318 0.745957 +vt 0.602115 0.744685 +vt 0.570978 0.307233 +vt 0.574045 0.308200 +vt 0.522312 0.908318 +vt 0.518340 0.904065 +vt 0.755542 0.262612 +vt 0.754611 0.263149 +vt 0.323109 0.906374 +vt 0.364152 0.906374 +vt 0.602115 0.482567 +vt 0.605182 0.483534 +vt 0.602115 0.483534 +vt 0.364152 0.917375 +vt 0.323109 0.915175 +vt 0.364152 0.915175 +vt 0.749870 0.265886 +vt 0.750800 0.263149 +vt 0.750800 0.265349 +vt 0.752706 0.260974 +vt 0.752706 0.262048 +vt 0.586762 0.199046 +vt 0.586762 0.224189 +vt 0.323109 0.912975 +vt 0.364152 0.912975 +vt 0.323109 0.910774 +vt 0.602115 0.525465 +vt 0.605182 0.528009 +vt 0.602115 0.528009 +vt 0.604318 0.656918 +vt 0.602115 0.655646 +vt 0.606241 0.655979 +vt 0.602115 0.484960 +vt 0.605182 0.485396 +vt 0.602115 0.485396 +vt 0.605182 0.482567 +vt 0.602115 0.481414 +vt 0.605182 0.481414 +vt 0.590499 0.288336 +vt 0.570978 0.285062 +vt 0.590499 0.285062 +vt 0.590499 0.291611 +vt 0.570978 0.288336 +vt 0.570978 0.281787 +vt 0.590499 0.281787 +vt 0.323109 0.904173 +vt 0.364152 0.904173 +vt 0.708329 0.249551 +vt 0.708329 0.224408 +vt 0.749870 0.216268 +vt 0.752706 0.214630 +vt 0.755542 0.216268 +vt 0.570978 0.278513 +vt 0.590499 0.278513 +vt 0.572785 0.199250 +vt 0.570978 0.224189 +vt 0.570978 0.199046 +vt 0.602115 0.487940 +vt 0.605182 0.490484 +vt 0.602115 0.490484 +vt 0.605182 0.478388 +vt 0.602115 0.478388 +vt 0.604798 0.726834 +vt 0.606508 0.726421 +vt 0.721825 0.224408 +vt 0.583711 0.199250 +vt 0.572675 0.197435 +vt 0.586171 0.197435 +vt 0.590499 0.275238 +vt 0.570978 0.271963 +vt 0.590499 0.271963 +vt 0.721825 0.249551 +vt 0.574045 0.315149 +vt 0.574045 0.310061 +vt 0.574045 0.307233 +vt 0.605182 0.480932 +vt 0.602115 0.480932 +vt 0.605182 0.487940 +vt 0.570978 0.275238 +vt 0.570978 0.300510 +vt 0.574045 0.303054 +vt 0.604318 0.607310 +vt 0.606522 0.608582 +vt 0.602396 0.611459 +vt 0.606508 0.657380 +vt 0.604798 0.656966 +vt 0.605182 0.484960 +vt 0.603839 0.612446 +vt 0.602129 0.612860 +vt 0.602115 0.540105 +vt 0.605182 0.542649 +vt 0.602115 0.542649 +vt 0.604318 0.681510 +vt 0.606522 0.682782 +vt 0.602396 0.685659 +vt 0.602115 0.535017 +vt 0.605182 0.537561 +vt 0.602115 0.537561 +vt 0.605182 0.530553 +vt 0.602115 0.530553 +vt 0.605182 0.540105 +vt 0.752073 0.296350 +vt 0.749870 0.295078 +vt 0.753995 0.295412 +vt 0.605182 0.531035 +vt 0.602115 0.531035 +vt 0.602115 0.534580 +vt 0.605182 0.535017 +vt 0.605182 0.532188 +vt 0.602115 0.533155 +vt 0.605182 0.534580 +vt 0.603839 0.686646 +vt 0.602129 0.687059 +vt 0.602115 0.532188 +vt 0.605182 0.533155 +vt 0.754262 0.296812 +vt 0.752553 0.296399 +vt 0.373050 0.924649 +vt 0.375594 0.921582 +vt 0.375594 0.924649 +vt 0.385146 0.924649 +vt 0.387690 0.921582 +vt 0.387690 0.924649 +vt 0.378138 0.921582 +vt 0.378138 0.924649 +vt 0.380682 0.921582 +vt 0.380682 0.924649 +vt 0.604318 0.696350 +vt 0.606522 0.697622 +vt 0.602396 0.700499 +vt 0.390234 0.921582 +vt 0.390234 0.924649 +vt 0.604318 0.623003 +vt 0.606522 0.624275 +vt 0.602396 0.623941 +vt 0.381164 0.921582 +vt 0.381164 0.924649 +vt 0.384710 0.924649 +vt 0.385146 0.921582 +vt 0.382317 0.921582 +vt 0.383284 0.924649 +vt 0.384710 0.921582 +vt 0.603839 0.701486 +vt 0.602129 0.701899 +vt 0.382317 0.924649 +vt 0.383284 0.921582 +vt 0.602129 0.622541 +vt 0.603839 0.622954 +vt 0.831064 0.009630 +vt 0.843605 0.044727 +vt 0.831064 0.056426 +vt 0.743344 0.167794 +vt 0.743344 0.120997 +vt 0.703102 0.317019 +vt 0.668004 0.329561 +vt 0.656305 0.317019 +vt 0.590249 0.360353 +vt 0.625347 0.347811 +vt 0.637046 0.360353 +vt 0.831064 0.075685 +vt 0.843605 0.110783 +vt 0.831064 0.122482 +vt 0.874398 0.141741 +vt 0.861856 0.153440 +vt 0.666669 0.308120 +vt 0.651125 0.308120 +vt 0.814471 0.227922 +vt 0.822165 0.227919 +vt 0.651125 0.114795 +vt 0.666669 0.164339 +vt 0.425655 0.116357 +vt 0.005065 0.116357 +vt 0.626683 0.088269 +vt 0.642226 0.019993 +vt 0.642226 0.099121 +vt 0.425194 0.274253 +vt 0.004670 0.266914 +vt 0.425261 0.266913 +vt 0.425519 0.634857 +vt 0.004984 0.642197 +vt 0.601948 0.347811 +vt 0.585069 0.326519 +vt 0.601948 0.329561 +vt 0.814471 0.292577 +vt 0.822165 0.243037 +vt 0.822165 0.292577 +vt 0.434862 0.169871 +vt 0.459196 0.109197 +vt 0.459196 0.169871 +vt 0.691403 0.347811 +vt 0.730802 0.156094 +vt 0.712551 0.156094 +vt 0.434862 0.185241 +vt 0.459196 0.185241 +vt 0.434862 0.345130 +vt 0.459196 0.261311 +vt 0.459197 0.345130 +vt 0.492430 0.245636 +vt 0.468095 0.261311 +vt 0.468095 0.245636 +vt 0.843605 0.153440 +vt 0.864898 0.136561 +vt 0.927872 0.841352 +vt 0.903538 0.869430 +vt 0.903538 0.841352 +vt 0.771626 0.348357 +vt 0.492430 0.261311 +vt 0.468095 0.345130 +vt 0.626683 0.103943 +vt 0.425040 0.297936 +vt 0.004450 0.343672 +vt 0.004449 0.297937 +vt 0.911375 0.160895 +vt 0.883297 0.136561 +vt 0.911375 0.136561 +vt 0.492430 0.185241 +vt 0.468095 0.185241 +vt 0.434862 0.094079 +vt 0.459196 0.094079 +vt 0.492430 0.169871 +vt 0.890121 0.329554 +vt 0.914455 0.301476 +vt 0.914455 0.329554 +vt 0.434862 0.261311 +vt 0.459196 0.245636 +vt 0.843605 0.021329 +vt 0.864898 0.004449 +vt 0.861856 0.021329 +vt 0.840564 0.061606 +vt 0.864898 0.061606 +vt 0.559774 0.916335 +vt 0.927872 0.878329 +vt 0.903538 0.906407 +vt 0.903538 0.878329 +vt 0.617784 0.308120 +vt 0.602240 0.308120 +vt 0.593216 0.921447 +vt 0.585394 0.473304 +vt 0.593216 0.473300 +vt 0.425034 0.445458 +vt 0.004450 0.372388 +vt 0.425034 0.372389 +vt 0.739686 0.490810 +vt 0.701335 0.474126 +vt 0.535487 0.916338 +vt 0.405859 0.731434 +vt 0.005091 0.711617 +vt 0.425676 0.711617 +vt 0.651125 0.326519 +vt 0.651125 0.350853 +vt 0.740980 0.474737 +vt 0.523590 0.614076 +vt 0.499255 0.642155 +vt 0.499255 0.614076 +vt 0.434862 0.245636 +vt 0.492430 0.041459 +vt 0.004449 0.445457 +vt 0.788978 0.155761 +vt 0.004556 0.469617 +vt 0.425141 0.460139 +vt 0.617784 0.103943 +vt 0.772385 0.292577 +vt 0.764691 0.292577 +vt 0.805572 0.171119 +vt 0.005373 0.077519 +vt 0.425963 0.077519 +vt 0.005219 0.092198 +vt 0.425809 0.101678 +vt 0.005219 0.101678 +vt 0.434862 0.109197 +vt 0.005152 0.109018 +vt 0.425742 0.109018 +vt 0.642226 0.186675 +vt 0.425434 0.199796 +vt 0.749879 0.474737 +vt 0.789524 0.474126 +vt 0.751172 0.490810 +vt 0.749879 0.954293 +vt 0.641491 0.652942 +vt 0.641741 0.625305 +vt 0.658278 0.488738 +vt 0.877476 0.204559 +vt 0.875534 0.244505 +vt 0.875534 0.204559 +vt 0.425040 0.343671 +vt 0.024267 0.363490 +vt 0.576495 0.473305 +vt 0.568673 0.921447 +vt 0.568673 0.473300 +vt 0.425348 0.259574 +vt 0.877476 0.202617 +vt 0.917422 0.202617 +vt 0.004603 0.274254 +vt 0.425194 0.283257 +vt 0.666669 0.103943 +vt 0.915316 0.279534 +vt 0.875534 0.279534 +vt 0.425963 0.004449 +vt 0.005373 0.004449 +vt 0.915316 0.282942 +vt 0.875534 0.282942 +vt 0.691403 0.329561 +vt 0.708282 0.350853 +vt 0.733844 0.205732 +vt 0.535486 0.473300 +vt 0.781284 0.083601 +vt 0.616381 0.473300 +vt 0.616381 0.506586 +vt 0.632175 0.952056 +vt 0.616381 0.554136 +vt 0.618764 0.965790 +vt 0.618423 0.937186 +vt 0.617937 0.896322 +vt 0.617645 0.871803 +vt 0.617159 0.830939 +vt 0.616381 0.582667 +vt 0.616380 0.630217 +vt 0.616867 0.806430 +vt 0.616380 0.765570 +vt 0.772385 0.243035 +vt 0.772385 0.099229 +vt 0.764691 0.004449 +vt 0.788979 0.292577 +vt 0.831397 0.301476 +vt 0.772385 0.171120 +vt 0.916075 0.354471 +vt 0.917097 0.340476 +vt 0.919563 0.338452 +vt 0.581638 0.151398 +vt 0.883297 0.020457 +vt 0.927292 0.279071 +vt 0.924215 0.277294 +vt 0.924215 0.273741 +vt 0.920274 0.136561 +vt 0.927170 0.136561 +vt 0.923762 0.152580 +vt 0.831064 0.206494 +vt 0.067790 0.919986 +vt 0.477872 0.354064 +vt 0.501328 0.105361 +vt 0.589098 0.305840 +vt 0.582943 0.305840 +vt 0.582944 0.302286 +vt 0.920435 0.062264 +vt 0.834941 0.202617 +vt 0.067791 0.885727 +vt 0.066543 0.872938 +vt 0.890121 0.342714 +vt 0.408851 0.897863 +vt 0.408851 0.928245 +vt 0.907176 0.346945 +vt 0.442073 0.574212 +vt 0.933055 0.325814 +vt 0.923354 0.325814 +vt 0.924775 0.319515 +vt 0.928205 0.318094 +vt 0.575384 0.354800 +vt 0.575384 0.357344 +vt 0.573181 0.358616 +vt 0.570978 0.357344 +vt 0.570978 0.354800 +vt 0.851652 0.273609 +vt 0.933055 0.309195 +vt 0.923354 0.309195 +vt 0.924775 0.302896 +vt 0.928205 0.301476 +vt 0.586171 0.234699 +vt 0.603013 0.598411 +vt 0.606522 0.593742 +vt 0.606522 0.596286 +vt 0.604318 0.597558 +vt 0.602115 0.596286 +vt 0.602115 0.499383 +vt 0.586762 0.261453 +vt 0.273168 0.904173 +vt 0.506276 0.682955 +vt 0.752706 0.236627 +vt 0.749870 0.234990 +vt 0.749870 0.231716 +vt 0.602115 0.551547 +vt 0.602115 0.581446 +vt 0.602115 0.578902 +vt 0.604318 0.577630 +vt 0.606522 0.578902 +vt 0.606522 0.581446 +vt 0.491177 0.355301 +vt 0.491177 0.357845 +vt 0.488973 0.359117 +vt 0.486770 0.357845 +vt 0.487668 0.359970 +vt 0.574045 0.343776 +vt 0.606522 0.639115 +vt 0.606522 0.641659 +vt 0.604319 0.642931 +vt 0.602115 0.641659 +vt 0.602115 0.639115 +vt 0.754276 0.277694 +vt 0.754276 0.280238 +vt 0.752073 0.281510 +vt 0.749870 0.280238 +vt 0.750768 0.282363 +vt 0.606522 0.713315 +vt 0.606522 0.715859 +vt 0.604319 0.717131 +vt 0.602115 0.715859 +vt 0.602115 0.713315 +vt 0.273168 0.929341 +vt 0.606522 0.667942 +vt 0.606522 0.670486 +vt 0.604318 0.671758 +vt 0.602115 0.670486 +vt 0.603013 0.672611 +vt 0.709510 0.115817 +vt 0.840564 0.070505 +vt 0.864898 0.193718 +vt 0.434862 0.004449 +vt 0.883297 0.095497 +vt 0.617784 0.004449 +vt 0.675567 0.004449 +vt 0.559774 0.473300 +vt 0.805572 0.083601 +vt 0.814471 0.099228 +vt 0.790449 0.473300 +vt 0.814471 0.171119 +vt 0.754319 0.338339 +vt 0.753565 0.363256 +vt 0.746668 0.363256 +vt 0.750076 0.347238 +vt 0.434862 0.358290 +vt 0.925634 0.185813 +vt 0.918738 0.176702 +vt 0.918738 0.185813 +vt 0.666669 0.004449 +vt 0.764691 0.305467 +vt 0.915316 0.271354 +vt 0.890121 0.357656 +vt 0.896275 0.357656 +vt 0.896275 0.361209 +vt 0.451917 0.362521 +vt 0.562079 0.105361 +vt 0.924953 0.072939 +vt 0.928030 0.071163 +vt 0.931108 0.072940 +vt 0.581638 0.105361 +vt 0.434574 0.689457 +vt 0.075442 0.872938 +vt 0.146098 0.925379 +vt 0.523331 0.711537 +vt 0.004487 0.885727 +vt 0.737769 0.356939 +vt 0.923161 0.112116 +vt 0.924582 0.105817 +vt 0.928012 0.104396 +vt 0.931442 0.105817 +vt 0.924215 0.263066 +vt 0.925636 0.256767 +vt 0.929066 0.255346 +vt 0.932496 0.256767 +vt 0.602115 0.728155 +vt 0.604318 0.726883 +vt 0.606522 0.728155 +vt 0.606522 0.730699 +vt 0.755542 0.265886 +vt 0.707508 0.106918 +vt 0.572785 0.223985 +vt 0.605624 0.746811 +vt 0.605182 0.473300 +vt 0.602115 0.742141 +vt 0.604318 0.740869 +vt 0.606522 0.742141 +vt 0.606522 0.744685 +vt 0.323109 0.917375 +vt 0.749870 0.262611 +vt 0.605182 0.525465 +vt 0.602115 0.653102 +vt 0.604318 0.651830 +vt 0.606522 0.653102 +vt 0.606522 0.655646 +vt 0.570978 0.291611 +vt 0.755542 0.219542 +vt 0.752706 0.221180 +vt 0.749870 0.219542 +vt 0.605624 0.726029 +vt 0.574045 0.300510 +vt 0.606522 0.611126 +vt 0.604318 0.612398 +vt 0.602115 0.611126 +vt 0.602115 0.608582 +vt 0.605624 0.657771 +vt 0.603013 0.613251 +vt 0.606522 0.685326 +vt 0.604318 0.686598 +vt 0.602115 0.685326 +vt 0.602115 0.682782 +vt 0.749870 0.292534 +vt 0.752073 0.291262 +vt 0.754276 0.292534 +vt 0.754276 0.295078 +vt 0.603013 0.687451 +vt 0.753378 0.297203 +vt 0.373050 0.921582 +vt 0.606522 0.700166 +vt 0.604318 0.701438 +vt 0.602115 0.700166 +vt 0.602115 0.697622 +vt 0.606522 0.626819 +vt 0.604318 0.628091 +vt 0.602115 0.626819 +vt 0.602115 0.624275 +vt 0.603013 0.702291 +vt 0.603013 0.622150 +vt 0.874398 0.188538 +vt 0.626683 0.004449 +vt 0.585069 0.350853 +vt 0.814471 0.243034 +vt 0.840564 0.136561 +vt 0.927872 0.869430 +vt 0.492430 0.345130 +vt 0.883297 0.160895 +vt 0.890121 0.301476 +vt 0.840564 0.004449 +vt 0.927872 0.906407 +vt 0.585394 0.921451 +vt 0.024908 0.731434 +vt 0.523590 0.642155 +vt 0.658278 0.937198 +vt 0.642978 0.726786 +vt 0.642978 0.952498 +vt 0.642978 0.920254 +vt 0.642978 0.874191 +vt 0.642978 0.846554 +vt 0.642978 0.800490 +vt 0.642825 0.505544 +vt 0.643117 0.473300 +vt 0.642158 0.579242 +vt 0.642408 0.551605 +vt 0.642978 0.772852 +vt 0.641074 0.699003 +vt 0.405223 0.363488 +vt 0.576495 0.921451 +vt 0.708282 0.326519 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7208 -0.6931 0.0000 +vn 0.0000 0.7071 0.7071 +vn -0.7071 -0.7071 0.0000 +vn 0.0005 0.8669 0.4984 +vn -0.0005 0.8669 -0.4984 +vn -0.0005 0.8651 -0.5016 +vn 0.0000 0.9416 0.3368 +vn 0.0000 0.5185 0.8551 +vn 0.0000 0.9416 0.3367 +vn -0.0009 -0.0000 -1.0000 +vn 0.0005 -0.8651 0.5016 +vn 0.0009 0.0000 1.0000 +vn 0.0005 -0.8669 0.4984 +vn 0.0000 0.1029 0.9947 +vn 0.0005 0.8651 0.5016 +vn 0.8773 -0.0000 -0.4799 +vn 0.9438 -0.2844 -0.1682 +vn 0.9861 0.0000 -0.1660 +vn -0.8773 -0.0000 0.4799 +vn -0.8778 -0.4127 0.2431 +vn -0.8776 0.0000 0.4795 +vn -0.0005 -0.8651 -0.5016 +vn -1.0000 -0.0000 0.0076 +vn -0.0005 -0.8669 -0.4984 +vn 0.8778 0.4175 0.2349 +vn 0.8784 0.0000 0.4779 +vn 0.8781 0.0000 0.4785 +vn -0.8774 -0.4131 0.2439 +vn -0.9430 -0.2896 -0.1641 +vn 0.0000 0.8671 0.4982 +vn 0.0002 0.8650 0.5018 +vn -0.8778 0.4127 0.2431 +vn -0.8774 0.4131 0.2439 +vn -0.8778 0.4175 -0.2349 +vn -0.9850 -0.0000 -0.1723 +vn -0.8781 -0.0000 -0.4785 +vn 0.8774 -0.4131 -0.2439 +vn 0.8783 -0.4163 0.2352 +vn 0.8774 0.4131 -0.2439 +vn 0.8783 0.4163 0.2352 +vn 0.0000 -0.8671 0.4982 +vn -0.0001 -1.0000 -0.0004 +vn 0.0002 0.0000 1.0000 +vn 0.8778 -0.4175 0.2349 +vn -0.8778 -0.4175 -0.2349 +vn 1.0000 0.0000 0.0021 +vn 1.0000 -0.0006 0.0006 +vn 0.9438 0.2844 -0.1682 +vn 0.0000 -1.0000 -0.0003 +vn -0.9430 0.2896 -0.1641 +vn -1.0000 0.0012 -0.0027 +vn -1.0000 0.0000 -0.0063 +vn 0.0000 -0.8650 -0.5018 +vn -1.0000 -0.0018 -0.0041 +vn 0.0000 -0.0000 -1.0000 +vn 0.0000 0.8650 -0.5018 +vn 1.0000 0.0010 0.0009 +vn 1.0000 -0.0000 0.0076 +vn 0.0002 -0.8650 0.5018 +vn 0.0005 0.8651 -0.5016 +vn 0.0009 -0.0000 -1.0000 +vn 0.0005 0.8669 -0.4984 +vn -0.0005 -0.8669 0.4984 +vn 0.0005 -0.8669 -0.4984 +vn 0.0005 -0.8651 -0.5016 +vn -0.0001 1.0000 -0.0000 +vn -0.0001 1.0000 -0.0004 +vn -0.0009 -0.0000 1.0000 +vn -0.0005 -0.8651 0.5016 +vn -0.0005 0.8651 0.5016 +vn -0.8773 0.0000 -0.4800 +vn -0.9438 -0.2844 -0.1682 +vn -0.8774 -0.4131 -0.2439 +vn -0.8784 -0.0000 0.4779 +vn -0.8778 0.4175 0.2349 +vn -0.8781 -0.0000 0.4785 +vn -0.0002 -0.8650 0.5018 +vn -0.0005 0.8669 0.4984 +vn -1.0000 -0.0006 0.0006 +vn 1.0000 0.0012 -0.0027 +vn -0.8778 -0.4175 0.2349 +vn -0.0002 0.0000 1.0000 +vn -0.0002 0.8650 0.5018 +vn 0.8778 0.4127 0.2431 +vn 0.8773 -0.0000 0.4799 +vn 0.8774 0.4131 0.2439 +vn 0.8774 -0.4131 0.2439 +vn 0.9430 -0.2896 -0.1641 +vn 0.8778 -0.4175 -0.2349 +vn -0.9861 0.0000 -0.1660 +vn -1.0000 0.0000 0.0021 +vn 0.9850 -0.0000 -0.1723 +vn 0.8781 -0.0000 -0.4785 +vn -0.8783 0.4163 0.2352 +vn -0.8774 0.4131 -0.2439 +vn 0.9430 0.2896 -0.1641 +vn 1.0000 0.0000 -0.0063 +vn 1.0000 -0.0018 -0.0041 +vn -1.0000 0.0010 0.0009 +vn -0.9438 0.2844 -0.1682 +vn 0.8778 -0.4127 0.2431 +vn 0.0001 -1.0000 -0.0004 +vn 0.0001 1.0000 -0.0000 +vn 0.0001 1.0000 -0.0004 +vn 0.8778 0.4175 -0.2349 +vn -0.8783 -0.4163 0.2352 +vn -0.9808 0.0000 0.1951 +vn -0.7071 0.0000 0.7071 +vn 0.9808 0.0000 0.1951 +vn 0.9936 0.0000 0.1127 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.9268 0.3755 +vn 0.0000 0.8731 0.4875 +vn 0.0000 0.9268 0.3754 +vn 0.0000 0.3265 0.9452 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 0.2935 -0.9559 +vn 0.0000 -0.6811 -0.7322 +vn 0.0000 0.9838 -0.1795 +vn 0.0000 0.3364 -0.9417 +vn 0.0000 0.9746 -0.2238 +vn 0.0000 -0.9746 0.2238 +vn 0.0000 -0.7322 0.6811 +vn 0.0000 -0.8469 0.5318 +vn 0.0000 -0.8469 0.5317 +vn 0.0000 0.8660 0.5000 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.5914 0.8064 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.9981 0.0608 +vn 0.0000 -0.9982 0.0608 +vn -0.9936 0.0000 0.1127 +vn 0.0000 -0.1211 0.9926 +vn 0.0000 0.6473 0.7622 +vn 0.0000 0.9988 0.0492 +vn 0.0000 -0.6473 -0.7622 +vn 0.0000 -0.0308 0.9995 +vn 0.0000 -0.9417 -0.3364 +vn 0.0000 0.0934 0.9956 +vn 0.0000 -0.9369 0.3495 +vn 0.0000 -0.9369 0.3496 +vn 0.0000 -0.6888 0.7249 +vn 0.0000 -0.8619 -0.5070 +vn 0.0000 0.4161 0.9093 +vn 0.0000 0.7931 -0.6091 +vn 0.0000 -0.1309 -0.9914 +vn 0.0000 0.9968 0.0800 +vn 0.0000 0.9968 0.0799 +vn 0.0000 -0.9240 -0.3823 +vn 0.0000 -0.7931 0.6091 +vn 0.0000 -0.3823 0.9240 +vn 0.0000 0.9990 -0.0443 +vn 0.0000 0.3030 0.9530 +vn 0.0000 0.6902 0.7236 +vn 0.0000 -0.5488 0.8360 +vn 0.0000 0.9286 -0.3710 +vn 0.0000 0.9473 0.3203 +vn 0.0000 0.7510 -0.6603 +vn 0.0000 0.4880 0.8728 +vn 0.0000 -0.1963 -0.9805 +vn 0.0000 -0.9473 -0.3203 +vn 0.0000 -0.9806 0.1963 +vn 0.0000 0.5925 0.8055 +vn 0.0000 -0.6234 0.7819 +vn 0.0000 -0.2174 0.9761 +vn 0.0000 -1.0000 0.0089 +vn 0.0000 0.8248 0.5654 +vn 0.0000 -0.2425 0.9701 +vn 0.7208 -0.6931 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.8773 -0.0000 -0.4799 +vn -0.8778 -0.4127 -0.2431 +vn -0.9430 -0.2896 0.1641 +vn 0.0000 0.1029 -0.9947 +vn 0.0000 0.5185 -0.8551 +vn 0.0000 0.8671 -0.4982 +vn 0.0002 0.8650 -0.5018 +vn -1.0000 -0.0000 -0.0076 +vn -0.8778 0.4127 -0.2431 +vn 0.8784 0.0000 -0.4779 +vn 0.9438 -0.2844 0.1682 +vn -0.9850 -0.0000 0.1723 +vn 0.9861 0.0000 0.1660 +vn 1.0000 -0.0006 -0.0006 +vn 1.0000 0.0000 -0.0021 +vn 0.0000 -0.8671 -0.4982 +vn 0.0002 -0.8650 -0.5018 +vn 0.8783 -0.4163 -0.2352 +vn 0.0002 0.0000 -1.0000 +vn 0.8783 0.4163 -0.2352 +vn 0.0000 -1.0000 0.0003 +vn -0.9430 0.2896 0.1641 +vn 0.9438 0.2844 0.1682 +vn 0.0000 -0.8650 0.5018 +vn -1.0000 0.0012 0.0027 +vn -1.0000 0.0000 0.0063 +vn 0.0000 0.8650 0.5018 +vn 1.0000 0.0010 -0.0009 +vn -1.0000 -0.0018 0.0041 +vn -0.0001 -1.0000 0.0004 +vn 1.0000 -0.0000 -0.0076 +vn -0.8784 -0.0000 -0.4779 +vn -1.0000 -0.0006 -0.0006 +vn -0.8773 0.0000 0.4800 +vn -0.9438 -0.2844 0.1682 +vn -0.9861 0.0000 0.1660 +vn 1.0000 0.0012 0.0027 +vn -0.8783 -0.4163 -0.2352 +vn 0.0001 -1.0000 0.0004 +vn -0.0001 1.0000 0.0004 +vn -0.0002 0.8650 -0.5018 +vn -0.9438 0.2844 0.1682 +vn 0.9850 -0.0000 0.1723 +vn 0.9430 -0.2896 0.1641 +vn 0.8778 0.4127 -0.2431 +vn 1.0000 0.0000 0.0063 +vn 1.0000 -0.0018 0.0041 +vn -0.8783 0.4163 -0.2352 +vn 0.8778 -0.4127 -0.2431 +vn 0.8776 0.0000 -0.4795 +vn -0.0002 -0.8650 -0.5018 +vn -0.0002 0.0000 -1.0000 +vn 0.9430 0.2896 0.1641 +vn -1.0000 0.0010 -0.0009 +vn 0.8778 0.4174 0.2349 +vn 0.0001 1.0000 0.0004 +vn -0.9808 0.0000 -0.1951 +vn -0.7071 0.0000 -0.7071 +vn 0.9808 0.0000 -0.1951 +vn 0.9936 0.0000 -0.1127 +vn 0.0000 0.8731 -0.4875 +vn 0.0000 0.9268 -0.3755 +vn 0.0000 0.9268 -0.3754 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 0.3364 0.9417 +vn 0.0000 0.9838 0.1795 +vn 0.0000 -0.6811 0.7322 +vn 0.0000 0.2935 0.9559 +vn 0.0000 -0.7322 -0.6811 +vn 0.0000 -0.9746 -0.2238 +vn 0.0000 0.9746 0.2238 +vn 0.0000 -0.8469 -0.5317 +vn 0.0000 -0.8469 -0.5318 +vn 0.0000 0.3265 -0.9452 +vn -1.0000 0.0000 -0.0021 +vn 0.0000 -0.6888 -0.7249 +vn 0.0000 0.5914 -0.8064 +vn 0.0000 -0.1309 0.9914 +vn 0.0000 0.7931 0.6091 +vn 0.0000 -0.9369 -0.3496 +vn 0.0000 -0.9369 -0.3495 +vn 0.0000 0.4161 -0.9093 +vn 0.0000 0.0934 -0.9956 +vn 0.0000 -0.9982 -0.0608 +vn 0.0000 -0.9981 -0.0608 +vn 0.0000 -0.6473 0.7622 +vn 0.0000 0.6473 -0.7622 +vn -0.9936 0.0000 -0.1127 +vn 0.0000 -0.1211 -0.9926 +vn 0.0000 0.9988 -0.0492 +vn 0.0000 -0.0308 -0.9995 +vn 0.0000 -0.9417 0.3364 +vn 0.0000 -0.8619 0.5070 +vn 0.0000 -0.9240 0.3823 +vn 0.0000 -0.3823 -0.9240 +vn 0.0000 -0.7931 -0.6091 +vn 0.0000 0.9968 -0.0800 +vn 0.0000 0.9968 -0.0799 +vn 0.0000 0.9990 0.0443 +vn 0.0000 0.3030 -0.9530 +vn 0.0000 0.9286 0.3710 +vn 0.0000 -0.5488 -0.8360 +vn 0.0000 0.6902 -0.7236 +vn 0.0000 -0.1963 0.9805 +vn 0.0000 0.7510 0.6603 +vn 0.0000 -0.9806 -0.1963 +vn 0.0000 -0.9473 0.3203 +vn 0.0000 0.9473 -0.3203 +vn 0.0000 0.4880 -0.8728 +vn 0.0000 0.5925 -0.8055 +vn 0.0000 -0.6234 -0.7819 +vn 0.0000 0.8248 -0.5654 +vn 0.0000 -1.0000 -0.0089 +vn 0.0000 -0.2174 -0.9761 +vn 0.0000 -0.2425 -0.9701 +vn 0.0000 0.9416 -0.3368 +vn 0.0000 0.9416 -0.3367 +vn 0.0000 1.0000 -0.0007 +vn 0.8776 0.0000 0.4795 +vn 1.0000 0.0001 0.0000 +vn 0.0000 0.9287 -0.3709 +vn 0.0000 -0.9805 0.1963 +vn -0.8776 0.0000 -0.4795 +vn 0.0000 1.0000 0.0007 +vn 0.0000 0.9287 0.3709 +vn 0.0000 -0.9805 -0.1963 +s 1 +f 708/1/1 6/2/1 696/3/1 +f 88/4/2 92/5/2 87/6/2 +f 346/7/3 19/8/3 4/9/3 +f 80/10/4 74/11/4 73/12/4 +f 30/13/5 55/14/5 54/15/5 +f 54/15/5 29/16/5 30/13/5 +f 35/17/6 69/18/6 48/19/6 +f 10/20/7 16/21/7 15/22/7 +f 5/23/5 4/24/5 10/25/5 +f 40/26/3 8/27/3 2/28/3 +f 33/29/6 77/30/6 50/31/6 +f 697/32/8 709/33/8 685/34/8 +f 14/35/5 20/36/5 5/23/5 +f 692/37/5 2/38/5 691/39/5 +f 76/40/9 78/41/9 77/30/9 +f 38/42/2 28/43/2 27/44/2 +f 59/45/5 63/46/5 62/47/5 +f 41/48/5 22/49/5 44/50/5 +f 37/51/6 61/52/6 46/53/6 +f 52/54/5 31/55/5 32/56/5 +f 42/57/5 23/58/5 41/48/5 +f 1/59/5 51/60/5 3/61/5 +f 56/62/5 27/63/5 28/64/5 +f 45/65/5 35/17/5 48/19/5 +f 32/66/2 36/67/2 29/68/2 +f 46/69/3 44/70/3 43/71/3 +f 39/72/5 24/73/5 42/57/5 +f 67/74/5 71/75/5 70/76/5 +f 12/77/5 13/78/5 14/35/5 +f 13/79/10 18/80/10 17/81/10 +f 31/82/2 7/83/2 34/84/2 +f 86/85/5 90/86/5 82/87/5 +f 43/71/3 17/88/3 46/69/3 +f 90/86/3 83/89/3 89/90/3 +f 72/91/4 66/92/4 65/93/4 +f 60/94/9 62/47/9 61/52/9 +f 101/95/1 97/96/1 98/97/1 +f 39/98/3 47/99/3 50/100/3 +f 36/67/2 30/101/2 29/68/2 +f 47/102/1 65/93/1 36/103/1 +f 34/84/2 32/66/2 31/82/2 +f 50/100/3 40/26/3 39/98/3 +f 44/50/5 21/104/5 43/105/5 +f 41/106/3 45/107/3 48/108/3 +f 84/109/6 91/110/6 88/111/6 +f 68/112/9 70/76/9 69/18/9 +f 113/113/11 131/114/12 114/115/13 +f 85/116/6 93/117/6 81/118/6 +f 81/119/5 90/86/5 89/90/5 +f 104/120/14 108/121/15 106/122/16 +f 86/123/3 96/124/3 85/125/3 +f 114/115/13 122/126/17 109/127/17 +f 81/128/2 94/129/2 82/130/2 +f 82/131/1 95/132/1 86/133/1 +f 87/134/1 89/90/1 83/135/1 +f 99/136/6 106/122/16 102/137/6 +f 95/132/5 93/117/5 96/124/5 +f 45/65/1 57/138/1 38/139/1 +f 99/140/3 98/141/3 103/142/3 +f 125/143/18 112/144/19 111/145/20 +f 85/146/5 91/110/5 86/85/5 +f 105/147/15 107/148/21 108/121/15 +f 112/144/19 129/149/22 113/113/11 +f 121/150/23 138/151/24 118/152/25 +f 127/153/26 135/154/27 133/155/28 +f 122/156/17 110/157/29 109/158/17 +f 107/148/21 97/96/5 100/159/5 +f 112/160/30 113/161/30 114/162/30 +f 123/163/31 111/145/20 110/157/29 +f 108/164/2 107/165/2 102/166/2 +f 130/167/32 134/168/33 128/169/34 +f 125/170/35 137/171/36 135/154/27 +f 119/172/6 116/173/37 115/174/38 +f 127/153/26 116/175/39 129/176/40 +f 131/177/41 117/178/42 122/179/43 +f 124/180/44 136/181/45 138/151/24 +f 132/182/46 115/183/47 130/167/32 +f 138/184/1 135/185/48 137/186/49 +f 115/174/38 133/187/50 134/188/50 +f 126/189/51 134/168/33 136/181/45 +f 123/190/52 117/178/42 137/171/36 +f 149/191/2 154/192/53 153/193/2 +f 150/194/5 140/195/5 147/196/5 +f 118/152/25 150/197/54 119/198/55 +f 146/199/6 140/195/6 144/200/6 +f 141/201/1 143/202/56 139/203/1 +f 129/176/40 120/204/57 131/177/41 +f 147/205/58 151/206/3 152/207/59 +f 172/208/48 124/209/60 170/210/60 +f 121/150/23 119/198/55 132/182/46 +f 152/207/59 141/211/3 139/212/61 +f 147/205/58 117/178/42 120/204/57 +f 167/213/62 132/214/63 178/215/63 +f 143/216/64 118/152/25 138/151/24 +f 138/184/1 139/203/1 143/202/56 +f 117/178/42 139/212/61 137/171/36 +f 170/210/60 121/217/62 167/218/62 +f 157/219/65 156/220/65 160/221/65 +f 136/222/66 133/187/50 135/185/48 +f 153/193/2 143/216/64 145/223/2 +f 160/224/67 168/225/68 177/226/69 +f 174/227/5 126/228/48 172/208/48 +f 146/229/2 150/194/54 149/230/2 +f 140/195/3 148/231/3 147/196/58 +f 157/232/70 169/233/71 156/234/72 +f 119/172/6 147/235/73 120/236/74 +f 158/237/75 171/238/76 157/232/70 +f 158/237/75 175/239/77 173/240/75 +f 167/241/78 184/242/79 170/243/80 +f 180/244/81 176/245/82 174/246/83 +f 184/247/1 181/248/48 182/249/84 +f 159/250/85 177/226/69 175/239/77 +f 196/251/86 192/252/3 195/253/3 +f 194/254/2 186/255/2 193/256/87 +f 172/257/88 180/244/81 174/246/83 +f 156/234/72 168/258/68 155/259/68 +f 178/215/63 130/260/37 176/261/37 +f 179/262/89 161/263/90 180/264/89 +f 162/265/91 173/266/92 175/267/93 +f 190/268/6 188/269/6 192/270/6 +f 162/271/37 165/272/6 161/263/90 +f 171/273/94 183/274/95 169/275/96 +f 164/276/97 196/277/86 200/278/98 +f 169/275/96 163/279/99 168/280/100 +f 161/281/101 178/282/102 176/245/82 +f 163/279/99 193/283/87 166/284/103 +f 187/285/2 198/286/104 185/287/105 +f 164/276/97 189/288/106 184/242/79 +f 165/289/107 167/241/78 178/282/102 +f 182/249/84 179/262/89 180/264/89 +f 173/266/92 181/290/108 171/273/94 +f 206/291/3 258/292/3 205/293/3 +f 184/247/1 185/294/1 183/295/109 +f 193/256/5 190/268/5 196/251/5 +f 193/296/110 165/272/6 166/297/111 +f 204/298/6 211/299/6 208/300/6 +f 163/279/99 185/287/105 198/286/104 +f 166/284/103 175/267/93 177/301/112 +f 189/288/106 199/302/3 191/303/3 +f 207/304/1 209/305/1 203/306/1 +f 205/307/5 211/299/5 206/308/5 +f 200/278/98 195/309/3 199/302/3 +f 197/310/2 193/283/87 198/286/104 +f 210/311/3 203/312/3 209/305/3 +f 208/313/2 212/314/2 207/315/2 +f 205/316/6 255/317/6 201/318/6 +f 170/243/80 182/319/113 172/257/88 +f 202/320/1 257/321/1 206/322/1 +f 202/323/5 211/299/5 210/311/5 +f 201/324/5 212/314/5 205/307/5 +f 201/325/2 256/326/2 202/327/2 +f 230/328/6 229/329/6 224/330/6 +f 275/331/3 276/332/3 273/333/3 +f 224/334/114 217/335/3 222/336/114 +f 201/324/5 210/311/5 209/305/5 +f 225/337/115 222/336/114 223/338/115 +f 223/339/1 222/340/1 226/341/1 +f 220/342/2 226/343/116 219/344/2 +f 214/345/117 259/346/117 260/347/117 +f 163/279/99 177/301/112 168/280/100 +f 237/348/3 254/349/3 245/350/3 +f 176/261/37 128/351/5 174/227/5 +f 185/294/1 191/352/1 187/353/1 +f 221/354/5 230/355/118 228/356/5 +f 277/357/119 273/358/120 276/359/121 +f 282/360/122 280/361/122 279/362/122 +f 239/363/123 234/364/5 233/365/123 +f 277/366/2 282/367/2 278/368/2 +f 227/369/118 229/370/116 230/355/118 +f 270/371/2 268/372/2 278/368/2 +f 266/373/124 267/374/125 265/375/124 +f 228/356/5 223/338/115 221/354/5 +f 286/376/126 287/377/127 285/378/126 +f 274/379/120 263/380/128 273/358/120 +f 270/381/129 271/382/130 269/383/129 +f 278/384/131 279/362/132 275/385/132 +f 237/348/3 250/386/3 238/387/3 +f 240/388/3 251/389/3 252/390/3 +f 240/391/5 235/392/133 234/364/5 +f 240/388/3 253/393/3 241/394/3 +f 241/395/133 236/396/134 235/392/133 +f 213/397/135 262/398/135 259/346/135 +f 238/399/136 233/365/123 232/400/136 +f 242/401/134 231/402/62 236/396/134 +f 249/403/134 245/404/62 254/405/134 +f 214/406/5 257/321/5 256/326/5 +f 214/407/137 261/408/138 215/409/138 +f 237/410/62 232/400/136 231/411/62 +f 247/412/5 253/413/133 252/414/5 +f 246/415/123 252/414/5 251/416/123 +f 248/417/133 254/405/134 253/413/133 +f 248/418/2 247/419/2 246/420/2 +f 261/408/5 259/346/5 262/398/5 +f 213/421/5 258/292/5 216/422/5 +f 244/423/62 250/424/136 245/425/62 +f 241/394/3 254/349/3 242/426/3 +f 216/422/5 257/321/5 215/427/5 +f 215/428/139 262/398/139 216/429/139 +f 264/430/128 265/431/124 263/380/128 +f 268/432/125 269/383/129 267/374/125 +f 238/387/3 251/389/3 239/433/3 +f 243/434/136 251/416/123 250/424/136 +f 213/421/5 256/326/5 255/317/5 +f 272/435/140 275/385/140 271/382/140 +f 284/436/141 285/378/126 283/437/141 +f 276/359/121 281/438/142 277/357/119 +f 276/332/3 279/439/3 280/440/3 +f 295/441/3 296/442/3 293/443/3 +f 288/444/127 289/445/143 287/446/127 +f 294/447/144 283/437/141 293/448/144 +f 290/449/143 291/450/145 289/445/143 +f 290/451/2 288/452/2 298/453/2 +f 297/454/146 293/448/144 296/455/146 +f 292/456/147 295/457/148 291/450/148 +f 296/442/3 299/458/3 300/459/3 +f 302/460/149 300/461/149 299/462/149 +f 298/463/150 299/462/150 295/457/150 +f 296/455/146 301/464/151 297/454/146 +f 297/465/2 302/466/2 298/453/2 +f 304/467/152 305/468/153 303/469/152 +f 315/470/3 316/471/3 313/472/3 +f 314/473/154 303/469/152 313/474/155 +f 306/475/153 307/476/156 305/477/153 +f 310/478/157 311/479/158 309/480/157 +f 308/481/156 309/480/157 307/476/156 +f 310/482/2 308/483/2 318/484/2 +f 317/485/159 313/474/155 316/486/159 +f 312/487/160 315/488/160 311/479/160 +f 316/471/3 319/489/3 320/490/3 +f 322/491/161 320/492/161 319/493/161 +f 318/494/162 319/493/162 315/488/162 +f 316/486/159 321/495/163 317/485/159 +f 317/496/2 322/497/2 318/484/2 +f 324/498/164 325/499/165 323/500/164 +f 335/501/3 336/502/3 333/503/3 +f 334/504/166 323/500/164 333/505/166 +f 326/506/165 327/507/167 325/499/165 +f 330/508/168 331/509/169 329/510/168 +f 328/511/167 329/510/168 327/512/167 +f 330/513/2 328/514/2 338/515/2 +f 337/516/170 333/505/166 336/517/170 +f 332/518/171 335/519/171 331/509/171 +f 336/502/3 339/520/3 340/521/3 +f 342/522/172 340/523/172 339/524/172 +f 338/525/173 339/524/173 335/519/173 +f 336/517/170 341/526/174 337/516/170 +f 337/527/2 342/528/2 338/515/2 +f 713/529/175 690/530/175 689/531/175 +f 719/532/8 707/533/8 731/534/8 +f 719/532/175 696/535/175 695/536/175 +f 722/537/176 686/538/176 710/539/176 +f 724/540/176 688/541/176 712/542/176 +f 703/543/8 715/544/8 691/545/8 +f 362/546/2 5/547/2 20/548/2 +f 398/549/3 55/550/3 56/551/3 +f 717/552/175 694/553/175 693/554/175 +f 709/33/175 686/555/175 685/556/175 +f 687/557/175 712/542/175 688/558/175 +f 397/559/3 54/560/3 55/550/3 +f 715/544/175 692/561/175 691/562/175 +f 345/563/1 685/564/1 3/565/1 +f 32/56/5 53/566/5 52/54/5 +f 2/567/5 26/568/5 40/569/5 +f 47/102/5 33/29/5 50/31/5 +f 28/64/5 19/570/5 56/62/5 +f 30/101/2 38/42/2 27/44/2 +f 434/571/2 430/572/2 429/573/2 +f 411/574/6 377/575/6 390/576/6 +f 358/577/7 352/578/7 357/579/7 +f 362/580/62 385/581/62 355/582/62 +f 350/583/3 382/584/3 344/585/3 +f 416/586/177 422/587/177 415/588/177 +f 378/589/2 374/590/2 371/591/2 +f 372/592/62 397/593/62 369/594/62 +f 371/595/62 396/596/62 372/592/62 +f 352/597/62 347/598/62 354/599/62 +f 382/584/3 392/600/3 381/601/3 +f 374/590/2 376/602/2 373/603/2 +f 386/604/3 388/605/3 385/606/3 +f 432/607/62 428/608/62 424/609/62 +f 384/610/62 365/611/62 366/612/62 +f 455/613/69 473/614/85 471/615/67 +f 369/594/62 398/616/62 370/617/62 +f 383/618/3 387/619/3 386/604/3 +f 372/620/2 378/589/2 371/591/2 +f 404/621/178 402/622/178 403/623/178 +f 435/624/62 437/625/62 438/626/62 +f 431/627/1 429/628/1 425/629/1 +f 438/626/3 428/630/3 427/631/3 +f 385/606/3 359/632/3 355/633/3 +f 360/634/10 355/635/10 359/636/10 +f 413/637/62 409/638/62 412/639/62 +f 386/640/62 363/641/62 364/642/62 +f 381/601/3 389/643/3 384/644/3 +f 408/645/177 414/646/177 407/647/177 +f 435/624/6 427/648/6 423/649/6 +f 456/650/77 464/651/75 473/614/85 +f 445/652/3 441/653/3 447/654/3 +f 469/655/179 477/656/180 467/657/80 +f 450/658/2 448/659/2 444/660/2 +f 366/612/62 381/661/62 384/610/62 +f 377/575/62 387/662/62 390/576/62 +f 343/663/62 393/664/62 373/665/62 +f 425/666/3 432/607/3 431/627/3 +f 373/603/2 349/667/2 343/668/2 +f 354/599/62 356/669/62 355/670/62 +f 433/671/6 426/672/6 430/673/6 +f 407/647/1 389/674/1 378/675/1 +f 439/676/1 443/677/1 440/678/1 +f 454/679/68 467/680/72 453/681/71 +f 467/657/80 479/682/181 465/683/88 +f 449/684/182 447/685/183 450/686/183 +f 439/676/62 449/684/182 442/687/62 +f 458/688/184 461/689/6 457/690/185 +f 453/691/186 452/692/186 456/693/186 +f 433/671/62 427/694/62 428/608/62 +f 454/679/68 471/615/67 469/695/68 +f 453/681/71 465/696/70 452/697/76 +f 452/697/76 464/698/75 451/699/75 +f 458/700/187 469/655/179 471/701/102 +f 476/702/188 472/703/112 470/704/100 +f 463/705/92 480/706/189 466/707/94 +f 459/708/190 473/709/82 464/710/83 +f 465/683/88 459/708/190 464/710/83 +f 460/711/191 492/712/192 496/713/193 +f 496/713/193 491/714/2 495/715/2 +f 480/716/1 477/717/194 478/718/195 +f 466/707/94 478/719/196 468/720/96 +f 468/720/96 476/702/188 470/704/100 +f 475/721/197 457/690/185 476/722/197 +f 457/723/198 474/724/93 472/703/112 +f 483/725/1 485/726/199 487/727/1 +f 462/728/200 471/701/102 473/709/82 +f 488/729/6 482/730/6 484/731/6 +f 492/732/62 482/730/62 486/733/62 +f 461/734/201 463/705/92 474/724/93 +f 466/735/202 514/736/194 512/737/202 +f 493/738/3 489/739/203 494/740/204 +f 474/741/205 509/742/5 520/743/205 +f 460/711/191 485/744/206 480/706/189 +f 459/708/190 489/739/203 462/728/200 +f 483/745/3 494/740/204 481/746/207 +f 492/732/192 488/747/2 491/748/2 +f 478/718/195 475/721/197 476/722/197 +f 485/744/206 495/715/2 487/749/2 +f 502/750/22 510/751/19 497/752/19 +f 463/753/5 512/737/202 509/754/5 +f 480/716/1 481/755/1 479/756/208 +f 500/757/209 501/758/209 502/759/209 +f 510/760/19 498/761/18 497/762/19 +f 513/763/29 500/764/17 499/765/31 +f 518/766/41 522/767/210 516/768/43 +f 511/769/20 499/765/31 498/761/18 +f 534/770/3 538/771/211 537/772/3 +f 500/764/17 517/773/13 501/774/12 +f 459/708/190 481/746/207 494/740/204 +f 509/775/212 526/776/213 506/777/214 +f 501/774/12 519/778/11 502/750/22 +f 472/779/184 520/743/205 518/780/184 +f 468/781/194 516/782/62 514/736/194 +f 490/783/3 482/730/3 489/784/203 +f 528/785/2 536/786/2 535/787/215 +f 514/788/52 522/767/210 524/789/216 +f 526/790/1 523/791/194 525/792/217 +f 489/793/73 461/689/6 462/794/218 +f 507/795/6 504/796/184 503/797/219 +f 506/777/214 538/798/211 507/799/220 +f 511/800/51 505/801/221 525/802/222 +f 515/803/23 504/804/223 517/805/46 +f 530/806/6 532/807/6 534/808/6 +f 509/775/212 507/799/220 520/809/40 +f 540/810/224 529/811/2 527/812/225 +f 520/809/40 503/813/226 518/766/41 +f 515/803/23 523/814/227 521/815/228 +f 524/816/229 521/817/230 523/791/194 +f 600/818/3 548/819/3 547/820/3 +f 503/797/219 521/817/230 522/821/230 +f 535/822/215 505/801/221 508/823/231 +f 531/824/232 506/777/214 526/776/213 +f 513/825/44 525/802/222 523/814/227 +f 551/826/1 549/827/1 545/828/1 +f 517/805/46 508/823/231 519/829/233 +f 553/830/6 546/831/6 550/832/6 +f 512/833/35 524/789/216 526/776/213 +f 544/834/62 553/830/62 548/835/62 +f 554/836/2 550/837/2 549/838/2 +f 541/839/3 531/824/232 533/840/3 +f 553/830/62 547/841/62 548/835/62 +f 535/822/215 539/842/2 540/810/224 +f 507/795/6 535/843/110 508/844/234 +f 526/790/1 527/845/1 531/846/199 +f 505/801/221 527/812/225 525/802/222 +f 519/829/233 505/801/221 510/847/34 +f 598/848/2 543/849/2 544/850/2 +f 559/851/3 566/852/235 564/853/235 +f 599/854/1 544/855/1 548/856/1 +f 568/857/1 561/858/1 564/859/1 +f 566/860/6 560/861/6 571/862/6 +f 532/807/62 535/787/62 538/771/62 +f 609/863/3 607/864/3 617/865/3 +f 564/853/235 567/866/236 565/867/236 +f 579/868/3 596/869/3 584/870/3 +f 545/871/3 552/872/3 551/826/3 +f 597/873/6 547/874/6 543/875/6 +f 568/876/237 562/877/2 561/878/2 +f 556/879/238 601/880/238 555/881/238 +f 543/882/62 552/872/62 544/834/62 +f 554/836/62 543/882/62 547/841/62 +f 615/883/239 619/884/240 618/885/241 +f 576/886/62 581/887/136 575/888/136 +f 624/889/2 619/890/2 620/891/2 +f 533/892/1 527/845/1 529/893/1 +f 572/894/242 563/895/62 570/896/62 +f 629/897/243 628/898/244 627/899/244 +f 609/900/245 608/901/246 607/902/246 +f 571/903/237 569/904/242 572/894/242 +f 613/905/247 612/906/248 611/907/248 +f 605/908/249 616/909/239 615/883/239 +f 621/910/250 620/911/251 617/912/250 +f 470/913/62 518/780/184 516/782/62 +f 616/914/2 606/915/2 620/891/2 +f 565/867/236 570/896/62 563/895/62 +f 622/916/252 624/917/252 621/910/252 +f 537/918/3 542/919/253 541/839/3 +f 592/920/3 579/868/3 580/921/3 +f 575/888/136 580/922/123 574/923/123 +f 642/924/254 644/925/254 641/926/254 +f 573/927/5 584/928/133 578/929/133 +f 595/930/3 582/931/3 583/932/3 +f 582/931/3 593/933/3 581/934/3 +f 601/880/255 558/935/255 555/936/255 +f 578/929/133 583/937/134 577/938/134 +f 577/938/134 582/939/62 576/886/62 +f 647/940/256 646/941/257 645/942/257 +f 636/943/2 626/944/2 640/945/2 +f 637/946/258 634/947/259 633/948/258 +f 643/949/260 638/950/261 639/951/261 +f 596/952/133 590/953/134 595/954/134 +f 587/955/5 591/956/133 596/952/133 +f 595/954/134 589/957/62 594/958/62 +f 574/923/123 579/959/5 573/960/5 +f 556/961/62 599/854/62 557/962/62 +f 590/963/2 591/964/2 586/965/2 +f 594/958/62 588/966/136 593/967/136 +f 603/968/262 556/969/263 557/970/262 +f 631/971/264 630/972/243 629/973/243 +f 627/899/244 626/974/265 625/975/265 +f 618/976/3 621/977/3 617/865/3 +f 593/933/3 580/921/3 581/934/3 +f 599/854/62 558/978/62 557/962/62 +f 604/979/266 557/980/266 558/981/266 +f 596/869/3 583/932/3 584/870/3 +f 592/982/123 586/983/5 587/984/5 +f 600/818/62 555/985/62 558/978/62 +f 601/880/62 603/968/62 604/979/62 +f 611/907/248 610/986/245 609/900/245 +f 555/985/62 598/848/62 556/961/62 +f 617/912/267 614/987/267 613/905/267 +f 623/988/268 618/885/241 619/884/240 +f 625/975/265 636/989/269 635/990/269 +f 633/948/270 632/991/264 631/971/264 +f 593/967/136 585/992/123 592/982/123 +f 607/993/246 606/994/249 605/908/249 +f 629/995/3 627/996/3 637/997/3 +f 635/990/269 639/951/261 638/950/261 +f 644/998/2 639/999/2 640/945/2 +f 641/926/271 640/1000/271 637/946/271 +f 638/1001/3 641/1002/3 637/997/3 +f 649/1003/272 648/1004/256 647/1005/256 +f 649/1006/3 647/1007/3 657/1008/3 +f 653/1009/273 652/1010/274 651/1011/274 +f 645/942/257 656/1012/275 655/1013/276 +f 651/1011/274 650/1014/272 649/1003/272 +f 656/1015/2 646/1016/2 660/1017/2 +f 655/1013/276 659/1018/277 658/1019/277 +f 657/1020/278 654/1021/278 653/1009/278 +f 663/1022/279 658/1019/277 659/1018/277 +f 661/1023/280 660/1024/280 657/1020/280 +f 658/1025/3 661/1026/3 657/1008/3 +f 662/1027/281 664/1028/281 661/1023/281 +f 664/1029/2 659/1030/2 660/1017/2 +f 669/1031/282 668/1032/283 667/1033/283 +f 673/1034/284 672/1035/285 671/1036/285 +f 667/1033/283 666/1037/286 665/1038/286 +f 665/1038/286 676/1039/287 675/1040/287 +f 669/1041/3 667/1042/3 677/1043/3 +f 671/1036/285 670/1044/282 669/1045/282 +f 676/1046/2 666/1047/2 680/1048/2 +f 675/1040/287 679/1049/288 678/1050/288 +f 677/1051/289 674/1052/289 673/1034/289 +f 683/1053/290 678/1050/288 679/1049/288 +f 681/1054/291 680/1055/291 677/1051/291 +f 678/1056/3 681/1057/3 677/1043/3 +f 682/1058/292 684/1059/292 681/1054/292 +f 684/1060/2 679/1061/2 680/1048/2 +f 702/1062/293 725/1063/293 701/1064/293 +f 708/1065/293 731/534/293 707/1066/293 +f 706/1067/293 729/1068/293 705/1069/293 +f 704/1070/293 727/1071/293 703/1072/293 +f 698/1073/293 721/1074/293 697/1075/293 +f 699/1076/293 724/540/293 723/1077/293 +f 370/617/62 361/1078/62 351/1079/62 +f 380/1080/2 372/620/2 369/1081/2 +f 374/1082/62 395/1083/62 371/595/62 +f 375/1084/62 389/674/62 392/1085/62 +f 368/1086/62 344/1087/62 382/1088/62 +f 400/1089/177 406/1090/177 399/1091/177 +f 64/1092/4 58/1093/4 57/138/4 +f 728/1094/176 692/1095/176 716/1096/176 +f 358/1097/2 370/1098/2 351/1099/2 +f 365/1100/2 22/1101/2 23/1102/2 +f 729/1068/1 718/1103/1 717/552/1 +f 732/1104/176 696/3/176 720/1105/176 +f 366/1106/2 23/1102/2 24/1107/2 +f 348/1108/2 26/1109/2 6/1110/2 +f 394/1111/3 51/1112/3 52/1113/3 +f 711/1114/8 699/1115/8 723/1077/8 +f 704/1116/1 693/1117/1 692/1118/1 +f 434/571/62 423/1119/62 427/694/62 +f 393/1120/3 3/1121/3 51/1112/3 +f 382/1088/62 367/1122/62 368/1086/62 +f 379/1123/62 359/1124/62 388/1125/62 +f 706/1126/1 695/1127/1 694/1128/1 +f 395/1129/3 52/1113/3 53/1130/3 +f 363/1131/2 20/548/2 21/1132/2 +f 396/1133/3 53/1130/3 54/560/3 +f 702/1134/1 691/1135/1 690/1136/1 +f 368/1137/2 25/1138/2 26/1109/2 +f 726/1139/176 690/1140/176 714/1141/176 +f 701/1142/8 713/529/8 689/1143/8 +f 360/634/1 352/578/1 354/1144/1 +f 700/1145/1 689/1146/1 688/1147/1 +f 43/105/5 20/1148/5 13/1149/5 +f 2/1150/6 7/1151/6 1/1152/6 +f 721/1074/1 710/539/1 709/33/1 +f 49/1153/5 7/1154/5 8/1155/5 +f 9/1156/5 10/25/5 11/1157/5 +f 81/119/5 92/5/5 85/146/5 +f 10/20/1 18/80/1 12/1158/1 +f 18/1159/5 16/1160/5 17/1161/5 +f 17/1161/5 37/51/5 46/53/5 +f 705/1162/8 717/552/8 693/1163/8 +f 11/1157/5 19/1164/5 9/1156/5 +f 698/1165/1 687/1166/1 686/1167/1 +f 727/1071/1 716/1096/1 715/544/1 +f 731/534/1 720/1105/1 719/532/1 +f 367/1168/2 24/1107/2 25/1138/2 +f 361/1169/3 56/551/3 19/8/3 +f 49/1153/1 73/12/1 34/1170/1 +f 48/108/3 42/1171/3 41/106/3 +f 75/1172/5 79/1173/5 78/41/5 +f 40/569/5 25/1174/5 39/72/5 +f 28/43/2 16/1175/2 9/1176/2 +f 723/1077/1 712/542/1 711/1114/1 +f 384/644/3 390/1177/3 383/618/3 +f 415/588/1 391/1178/1 376/1179/1 +f 421/1180/62 417/1181/62 420/1182/62 +f 364/1183/2 21/1132/2 22/1101/2 +f 419/1184/178 417/1181/178 418/1185/178 +f 364/642/62 383/1186/62 386/640/62 +f 412/639/178 410/1187/178 411/574/178 +f 361/1188/62 353/1189/62 351/1190/62 +f 356/669/62 362/1191/62 355/670/62 +f 701/1192/62 700/1193/62 343/1194/62 +f 436/1195/2 423/1196/2 424/1197/2 +f 358/1198/62 360/1199/62 359/1124/62 +f 725/1063/1 714/1141/1 713/529/1 +f 349/1200/6 344/1201/6 343/1202/6 +f 399/1091/1 387/662/1 380/1203/1 +f 437/625/1 424/1204/1 428/1205/1 +f 405/1206/62 401/1207/62 404/621/62 +f 370/1098/2 380/1080/2 369/1081/2 +f 373/665/62 394/1208/62 374/1082/62 +f 403/623/6 379/1123/6 388/1125/6 +f 450/686/183 446/1209/294 448/1210/295 +f 423/1119/62 432/607/62 424/609/62 +f 351/1190/62 353/1189/62 352/597/62 +f 349/1211/62 391/1178/62 350/1212/62 +f 448/1210/295 441/1213/6 444/1214/6 +f 419/1184/6 375/1084/6 392/1085/6 +f 730/1215/176 694/1216/176 718/1103/176 +f 708/1/1 348/1217/1 6/2/1 +f 88/4/2 91/110/2 92/5/2 +f 346/7/3 361/1169/3 19/8/3 +f 80/10/4 79/1173/4 74/11/4 +f 30/13/5 27/63/5 55/14/5 +f 54/15/5 53/566/5 29/16/5 +f 35/17/6 68/112/6 69/18/6 +f 10/20/7 9/1218/7 16/21/7 +f 4/24/5 11/1157/5 10/25/5 +f 10/25/5 12/77/5 5/23/5 +f 12/77/5 14/35/5 5/23/5 +f 40/26/3 49/1219/3 8/27/3 +f 33/29/6 76/40/6 77/30/6 +f 697/32/8 721/1074/8 709/33/8 +f 14/35/5 13/78/5 20/36/5 +f 6/1220/5 2/38/5 696/1221/5 +f 2/38/5 1/1222/5 691/39/5 +f 696/1221/5 2/38/5 695/1223/5 +f 1/1222/5 3/1224/5 685/1225/5 +f 686/1226/5 687/1227/5 1/1222/5 +f 687/1227/5 688/1228/5 1/1222/5 +f 1/1222/5 685/1225/5 686/1226/5 +f 695/1223/5 2/38/5 694/1229/5 +f 693/1230/5 694/1229/5 2/38/5 +f 693/1230/5 2/38/5 692/37/5 +f 689/1231/5 690/1232/5 1/1222/5 +f 690/1232/5 691/39/5 1/1222/5 +f 1/1222/5 688/1228/5 689/1231/5 +f 76/40/9 75/1172/9 78/41/9 +f 38/42/2 37/1233/2 28/43/2 +f 59/45/5 58/1093/5 63/46/5 +f 41/48/5 23/58/5 22/49/5 +f 37/51/6 60/94/6 61/52/6 +f 52/54/5 51/60/5 31/55/5 +f 42/57/5 24/73/5 23/58/5 +f 1/59/5 31/55/5 51/60/5 +f 56/62/5 55/14/5 27/63/5 +f 45/65/5 38/139/5 35/17/5 +f 32/66/2 33/1234/2 36/67/2 +f 46/69/3 45/107/3 44/70/3 +f 39/72/5 25/1174/5 24/73/5 +f 67/74/5 66/92/5 71/75/5 +f 13/79/10 12/1158/10 18/80/10 +f 31/82/2 1/1235/2 7/83/2 +f 86/85/5 91/110/5 90/86/5 +f 43/71/3 13/1236/3 17/88/3 +f 90/86/3 84/1237/3 83/89/3 +f 72/91/4 71/75/4 66/92/4 +f 60/94/9 59/45/9 62/47/9 +f 101/95/1 100/159/1 97/96/1 +f 39/98/3 42/1171/3 47/99/3 +f 36/67/2 35/1238/2 30/101/2 +f 47/102/1 72/91/1 65/93/1 +f 34/84/2 33/1234/2 32/66/2 +f 50/100/3 49/1219/3 40/26/3 +f 44/50/5 22/49/5 21/104/5 +f 41/106/3 44/70/3 45/107/3 +f 84/109/6 90/86/6 91/110/6 +f 68/112/9 67/74/9 70/76/9 +f 113/113/11 129/149/22 131/114/12 +f 85/116/6 96/124/6 93/117/6 +f 81/119/5 82/87/5 90/86/5 +f 104/120/14 105/147/15 108/121/15 +f 86/123/3 95/132/3 96/124/3 +f 114/115/13 131/114/12 122/126/17 +f 81/128/2 93/117/2 94/129/2 +f 82/131/1 94/129/1 95/132/1 +f 87/134/1 92/5/1 89/90/1 +f 99/136/6 104/120/14 106/122/16 +f 95/132/5 94/129/5 93/117/5 +f 45/65/1 64/1092/1 57/138/1 +f 98/141/3 97/1239/3 103/142/3 +f 103/142/3 105/1240/3 99/140/3 +f 105/1240/3 104/1241/3 99/140/3 +f 125/143/18 127/1242/19 112/144/19 +f 85/146/5 92/5/5 91/110/5 +f 105/147/15 103/1243/21 107/148/21 +f 112/144/19 127/1242/19 129/149/22 +f 121/150/23 124/180/44 138/151/24 +f 127/153/26 125/170/35 135/154/27 +f 122/156/17 123/163/31 110/157/29 +f 107/148/21 103/1243/21 97/96/5 +f 114/162/30 109/1244/30 110/1245/30 +f 110/1245/30 111/1246/30 114/162/30 +f 111/1246/30 112/160/30 114/162/30 +f 123/163/31 125/143/18 111/145/20 +f 100/1247/2 101/1248/2 107/165/2 +f 101/1248/2 102/166/2 107/165/2 +f 102/166/2 106/1249/2 108/164/2 +f 130/167/32 115/183/47 134/168/33 +f 125/170/35 123/190/52 137/171/36 +f 119/172/6 120/236/74 116/173/37 +f 127/153/26 133/155/28 116/175/39 +f 131/177/41 120/204/57 117/178/42 +f 124/180/44 126/189/51 136/181/45 +f 132/182/46 119/198/55 115/183/47 +f 138/184/1 136/222/66 135/185/48 +f 115/174/38 116/173/37 133/187/50 +f 126/189/51 128/169/34 134/168/33 +f 123/190/52 122/179/43 117/178/42 +f 149/191/2 150/197/54 154/192/53 +f 150/194/5 144/200/5 140/195/5 +f 118/152/25 154/192/53 150/197/54 +f 146/199/6 142/1250/6 140/195/6 +f 141/201/1 145/1251/1 143/202/56 +f 129/176/40 116/175/39 120/204/57 +f 147/205/58 148/1252/3 151/206/3 +f 172/208/48 126/228/48 124/209/60 +f 121/150/23 118/152/25 119/198/55 +f 152/207/59 151/206/3 141/211/3 +f 147/205/58 152/207/59 117/178/42 +f 167/213/62 121/1253/62 132/214/63 +f 143/216/64 154/192/53 118/152/25 +f 138/184/1 137/186/49 139/203/1 +f 117/178/42 152/207/59 139/212/61 +f 170/210/60 124/209/60 121/217/62 +f 156/220/65 155/1254/65 160/221/65 +f 160/221/65 159/1255/65 158/1256/65 +f 158/1256/65 157/219/65 160/221/65 +f 136/222/66 134/188/50 133/187/50 +f 153/193/2 154/192/53 143/216/64 +f 160/224/67 155/1257/68 168/225/68 +f 174/227/5 128/351/5 126/228/48 +f 146/229/2 144/200/2 150/194/54 +f 140/195/3 142/1258/3 148/231/3 +f 157/232/70 171/238/76 169/233/71 +f 119/172/6 150/1259/296 147/235/73 +f 158/237/75 173/240/75 171/238/76 +f 158/237/75 159/250/85 175/239/77 +f 167/241/78 164/276/97 184/242/79 +f 180/244/81 161/281/101 176/245/82 +f 184/247/1 183/295/109 181/248/48 +f 159/250/85 160/224/67 177/226/69 +f 196/251/86 190/268/3 192/252/3 +f 194/254/2 188/1260/2 186/255/2 +f 172/257/88 182/319/113 180/244/81 +f 156/234/72 169/233/71 168/258/68 +f 178/215/63 132/214/63 130/260/37 +f 179/262/89 162/271/37 161/263/90 +f 162/265/91 179/1261/297 173/266/92 +f 190/268/6 186/255/6 188/269/6 +f 162/271/37 166/297/111 165/272/6 +f 171/273/94 181/290/108 183/274/95 +f 164/276/97 165/289/107 196/277/86 +f 169/275/96 183/274/95 163/279/99 +f 161/281/101 165/289/107 178/282/102 +f 163/279/99 198/286/104 193/283/87 +f 187/285/2 197/310/2 198/286/104 +f 164/276/97 200/278/98 189/288/106 +f 165/289/107 164/276/97 167/241/78 +f 182/249/84 181/248/48 179/262/89 +f 173/266/92 179/1261/297 181/290/108 +f 206/291/3 257/321/3 258/292/3 +f 184/247/1 189/1262/56 185/294/1 +f 193/256/5 186/255/5 190/268/5 +f 193/296/110 196/1263/296 165/272/6 +f 204/298/6 210/311/6 211/299/6 +f 163/279/99 183/274/95 185/287/105 +f 166/284/103 162/265/91 175/267/93 +f 189/288/106 200/278/98 199/302/3 +f 207/304/1 212/314/1 209/305/1 +f 205/307/5 212/314/5 211/299/5 +f 200/278/98 196/277/86 195/309/3 +f 197/310/2 194/1264/2 193/283/87 +f 210/311/3 204/1265/3 203/312/3 +f 208/313/2 211/299/2 212/314/2 +f 205/316/6 258/292/6 255/317/6 +f 170/243/80 184/242/79 182/319/113 +f 202/320/1 256/326/1 257/321/1 +f 202/323/5 206/308/5 211/299/5 +f 201/324/5 209/305/5 212/314/5 +f 201/325/2 255/317/2 256/326/2 +f 229/329/6 220/1266/6 218/1267/6 +f 218/1267/6 224/330/6 229/329/6 +f 224/330/6 225/1268/6 230/328/6 +f 225/1268/6 228/1269/6 230/328/6 +f 273/333/3 263/1270/3 275/331/3 +f 263/1270/3 265/1271/3 275/331/3 +f 265/1271/3 267/1272/3 275/331/3 +f 267/1272/3 269/1273/3 275/331/3 +f 269/1273/3 271/1274/3 275/331/3 +f 224/334/114 218/1275/3 217/335/3 +f 201/324/5 202/323/5 210/311/5 +f 225/337/115 224/334/114 222/336/114 +f 222/340/1 217/1276/1 219/1277/1 +f 219/1277/1 226/341/1 222/340/1 +f 226/341/1 227/1278/1 223/339/1 +f 227/1278/1 221/1279/1 223/339/1 +f 220/342/2 229/370/116 226/343/116 +f 214/345/117 213/1280/117 259/346/117 +f 163/279/99 166/284/103 177/301/112 +f 237/348/3 242/426/3 254/349/3 +f 176/261/37 130/260/37 128/351/5 +f 185/294/1 189/1262/56 191/352/1 +f 221/354/5 227/369/118 230/355/118 +f 277/357/119 274/379/120 273/358/120 +f 282/360/122 281/438/122 280/361/122 +f 239/363/123 240/391/5 234/364/5 +f 277/366/2 281/1281/2 282/367/2 +f 227/369/118 226/343/116 229/370/116 +f 268/372/2 266/1282/2 278/368/2 +f 266/1282/2 264/1283/2 278/368/2 +f 264/1283/2 274/1284/2 278/368/2 +f 274/1284/2 277/366/2 278/368/2 +f 278/368/2 272/1285/298 270/371/2 +f 266/373/124 268/432/125 267/374/125 +f 228/356/5 225/337/115 223/338/115 +f 286/376/126 288/1286/127 287/377/127 +f 274/379/120 264/430/128 263/380/128 +f 270/381/129 272/435/130 271/382/130 +f 278/384/131 282/360/131 279/362/132 +f 237/348/3 245/350/3 250/386/3 +f 240/388/3 239/433/3 251/389/3 +f 240/391/5 241/395/133 235/392/133 +f 240/388/3 252/390/3 253/393/3 +f 241/395/133 242/401/134 236/396/134 +f 213/397/135 216/1287/135 262/398/135 +f 238/399/136 239/363/123 233/365/123 +f 242/401/134 237/1288/62 231/402/62 +f 249/403/134 244/1289/62 245/404/62 +f 214/406/5 215/427/5 257/321/5 +f 214/407/137 260/347/137 261/408/138 +f 237/410/62 238/399/136 232/400/136 +f 247/412/5 248/417/133 253/413/133 +f 246/415/123 247/412/5 252/414/5 +f 248/417/133 249/403/134 254/405/134 +f 246/420/2 243/1290/2 248/418/2 +f 243/1290/2 244/1291/2 248/418/2 +f 244/1291/2 249/1292/2 248/418/2 +f 261/408/5 260/347/5 259/346/5 +f 213/421/5 255/317/5 258/292/5 +f 244/423/62 243/434/136 250/424/136 +f 241/394/3 253/393/3 254/349/3 +f 216/422/5 258/292/5 257/321/5 +f 215/428/139 261/408/139 262/398/139 +f 264/430/128 266/1293/124 265/431/124 +f 268/432/125 270/381/129 269/383/129 +f 238/387/3 250/386/3 251/389/3 +f 243/434/136 246/415/123 251/416/123 +f 213/421/5 214/406/5 256/326/5 +f 272/435/140 278/384/140 275/385/140 +f 284/436/141 286/376/126 285/378/126 +f 276/359/121 280/361/142 281/438/142 +f 276/332/3 275/331/3 279/439/3 +f 293/443/3 283/1294/3 295/441/3 +f 283/1294/3 285/1295/3 295/441/3 +f 285/1295/3 287/1296/3 295/441/3 +f 287/1296/3 289/1297/3 295/441/3 +f 289/1297/3 291/1298/3 295/441/3 +f 288/444/127 290/449/143 289/445/143 +f 294/447/144 284/436/141 283/437/141 +f 290/449/143 292/456/145 291/450/145 +f 288/452/2 286/1299/2 298/453/2 +f 286/1299/2 284/1300/2 298/453/2 +f 284/1300/2 294/1301/2 298/453/2 +f 294/1301/2 297/465/2 298/453/2 +f 298/453/2 292/1302/2 290/451/2 +f 297/454/146 294/447/144 293/448/144 +f 292/456/147 298/463/147 295/457/148 +f 296/442/3 295/441/3 299/458/3 +f 302/460/149 301/464/149 300/461/149 +f 298/463/150 302/460/150 299/462/150 +f 296/455/146 300/461/151 301/464/151 +f 297/465/2 301/1303/2 302/466/2 +f 304/467/152 306/1304/153 305/468/153 +f 313/472/3 303/1305/3 315/470/3 +f 303/1305/3 305/1306/3 315/470/3 +f 305/1306/3 307/1307/3 315/470/3 +f 307/1307/3 309/1308/3 315/470/3 +f 309/1308/3 311/1309/3 315/470/3 +f 314/473/154 304/467/152 303/469/152 +f 306/475/153 308/481/156 307/476/156 +f 310/478/157 312/487/158 311/479/158 +f 308/481/156 310/478/157 309/480/157 +f 308/483/2 306/1310/2 318/484/2 +f 306/1310/2 304/1311/2 318/484/2 +f 304/1311/2 314/1312/2 318/484/2 +f 314/1312/2 317/496/2 318/484/2 +f 318/484/2 312/1313/2 310/482/2 +f 317/485/159 314/473/154 313/474/155 +f 312/487/160 318/494/160 315/488/160 +f 316/471/3 315/470/3 319/489/3 +f 322/491/161 321/495/161 320/492/161 +f 318/494/162 322/491/162 319/493/162 +f 316/486/159 320/492/299 321/495/163 +f 317/496/2 321/1314/2 322/497/2 +f 324/498/164 326/506/165 325/499/165 +f 333/503/3 323/1315/3 335/501/3 +f 323/1315/3 325/1316/3 335/501/3 +f 325/1316/3 327/1317/3 335/501/3 +f 327/1317/3 329/1318/3 335/501/3 +f 329/1318/3 331/1319/3 335/501/3 +f 334/504/166 324/498/164 323/500/164 +f 326/506/165 328/1320/167 327/507/167 +f 330/508/168 332/518/300 331/509/169 +f 328/511/167 330/508/168 329/510/168 +f 328/514/2 326/1321/2 338/515/2 +f 326/1321/2 324/1322/2 338/515/2 +f 324/1322/2 334/1323/2 338/515/2 +f 334/1323/2 337/527/2 338/515/2 +f 338/515/2 332/1324/2 330/513/2 +f 337/516/170 334/504/166 333/505/166 +f 332/518/171 338/525/171 335/519/171 +f 336/502/3 335/501/3 339/520/3 +f 342/522/172 341/526/172 340/523/172 +f 338/525/173 342/522/173 339/524/173 +f 336/517/170 340/523/174 341/526/174 +f 337/527/2 341/1325/2 342/528/2 +f 713/529/175 714/1141/175 690/530/175 +f 719/532/8 695/1326/8 707/533/8 +f 719/532/175 720/1105/175 696/535/175 +f 722/537/176 698/1327/176 686/538/176 +f 724/540/176 700/1328/176 688/541/176 +f 703/543/8 727/1071/8 715/544/8 +f 362/546/2 347/1329/2 5/547/2 +f 398/549/3 397/559/3 55/550/3 +f 717/552/175 718/1103/175 694/553/175 +f 709/33/175 710/539/175 686/555/175 +f 687/557/175 711/1114/175 712/542/175 +f 397/559/3 396/1133/3 54/560/3 +f 715/544/175 716/1096/175 692/561/175 +f 345/563/1 697/1330/1 685/564/1 +f 32/56/5 29/16/5 53/566/5 +f 2/567/5 6/1331/5 26/568/5 +f 47/102/5 36/103/5 33/29/5 +f 28/64/5 9/1332/5 19/570/5 +f 30/101/2 35/1238/2 38/42/2 +f 434/571/2 433/671/2 430/572/2 +f 411/574/6 410/1187/6 377/575/6 +f 358/577/7 351/1333/7 352/578/7 +f 362/580/62 363/641/62 385/581/62 +f 350/583/3 391/1334/3 382/584/3 +f 416/586/177 421/1180/177 422/587/177 +f 378/589/2 375/1335/2 374/590/2 +f 372/592/62 396/596/62 397/593/62 +f 371/595/62 395/1083/62 396/596/62 +f 352/597/62 353/1189/62 346/1336/62 +f 346/1336/62 347/598/62 352/597/62 +f 347/598/62 356/669/62 354/599/62 +f 382/584/3 391/1334/3 392/600/3 +f 374/590/2 375/1335/2 376/602/2 +f 386/604/3 387/619/3 388/605/3 +f 432/607/62 433/671/62 428/608/62 +f 384/610/62 383/1186/62 365/611/62 +f 455/613/69 456/650/77 473/614/85 +f 369/594/62 397/593/62 398/616/62 +f 383/618/3 390/1177/3 387/619/3 +f 372/620/2 377/1337/2 378/589/2 +f 404/621/178 401/1207/178 402/622/178 +f 435/624/62 436/1195/62 437/625/62 +f 431/627/1 434/571/1 429/628/1 +f 438/626/3 437/625/3 428/630/3 +f 385/606/3 388/605/3 359/632/3 +f 360/634/10 354/1144/10 355/635/10 +f 413/637/62 408/645/62 409/638/62 +f 386/640/62 385/581/62 363/641/62 +f 381/601/3 392/600/3 389/643/3 +f 408/645/177 413/637/177 414/646/177 +f 435/624/6 438/626/6 427/648/6 +f 456/650/77 451/1338/75 464/651/75 +f 445/652/3 439/1339/3 440/1340/3 +f 440/1340/3 441/653/3 445/652/3 +f 441/653/3 446/1341/3 447/654/3 +f 469/655/179 475/1342/301 477/656/180 +f 444/660/2 443/1343/2 449/1344/2 +f 443/1343/2 442/1345/2 449/1344/2 +f 449/1344/2 450/658/2 444/660/2 +f 366/612/62 367/1122/62 381/661/62 +f 377/575/62 380/1203/62 387/662/62 +f 343/663/62 345/1346/62 393/664/62 +f 425/666/3 426/1347/3 432/607/3 +f 373/603/2 376/602/2 349/667/2 +f 433/671/6 432/607/6 426/672/6 +f 407/647/1 414/646/1 389/674/1 +f 439/676/1 442/687/1 443/677/1 +f 454/679/68 469/695/68 467/680/72 +f 467/657/80 477/656/180 479/682/181 +f 449/684/182 445/1348/182 447/685/183 +f 439/676/62 445/1348/182 449/684/182 +f 458/688/184 462/794/218 461/689/6 +f 452/692/186 451/1349/186 456/693/186 +f 456/693/186 455/1350/186 454/1351/186 +f 454/1351/186 453/691/186 456/693/186 +f 433/671/62 434/571/62 427/694/62 +f 454/679/68 455/613/69 471/615/67 +f 453/681/71 467/680/72 465/696/70 +f 452/697/76 465/696/70 464/698/75 +f 458/700/187 475/1342/301 469/655/179 +f 476/702/188 457/723/198 472/703/112 +f 463/705/92 460/711/191 480/706/189 +f 459/708/190 462/728/200 473/709/82 +f 465/683/88 479/682/181 459/708/190 +f 460/711/191 461/734/201 492/712/192 +f 496/713/193 492/712/192 491/714/2 +f 480/716/1 479/756/208 477/717/194 +f 466/707/94 480/706/189 478/719/196 +f 468/720/96 478/719/196 476/702/188 +f 475/721/197 458/688/184 457/690/185 +f 457/723/198 461/734/201 474/724/93 +f 483/725/1 481/755/1 485/726/199 +f 462/728/200 458/700/187 471/701/102 +f 488/729/6 486/733/6 482/730/6 +f 492/732/62 489/784/62 482/730/62 +f 461/734/201 460/711/191 463/705/92 +f 466/735/202 468/781/194 514/736/194 +f 493/738/3 490/1352/3 489/739/203 +f 474/741/205 463/1353/5 509/742/5 +f 460/711/191 496/713/193 485/744/206 +f 459/708/190 494/740/204 489/739/203 +f 483/745/3 493/738/3 494/740/204 +f 492/732/192 486/733/2 488/747/2 +f 478/718/195 477/717/194 475/721/197 +f 485/744/206 496/713/193 495/715/2 +f 502/750/22 519/778/11 510/751/19 +f 463/753/5 466/735/202 512/737/202 +f 480/716/1 485/726/199 481/755/1 +f 502/759/209 497/1354/209 498/1355/209 +f 498/1355/209 499/1356/209 502/759/209 +f 499/1356/209 500/757/209 502/759/209 +f 510/760/19 511/769/20 498/761/18 +f 513/763/29 515/1357/17 500/764/17 +f 518/766/41 503/813/226 522/767/210 +f 511/769/20 513/763/29 499/765/31 +f 534/770/3 532/807/3 538/771/211 +f 500/764/17 515/1357/17 517/773/13 +f 459/708/190 479/682/181 481/746/207 +f 509/775/212 512/833/35 526/776/213 +f 501/774/12 517/773/13 519/778/11 +f 472/779/184 474/741/205 520/743/205 +f 468/781/194 470/913/62 516/782/62 +f 490/783/3 484/1358/3 482/730/3 +f 528/785/2 530/1359/2 536/786/2 +f 514/788/52 516/768/43 522/767/210 +f 526/790/1 524/816/229 523/791/194 +f 489/793/73 492/1360/302 461/689/6 +f 507/795/6 508/844/234 504/796/184 +f 506/777/214 542/919/253 538/798/211 +f 511/800/51 510/847/34 505/801/221 +f 515/803/23 521/815/228 504/804/223 +f 530/806/6 528/785/6 532/807/6 +f 509/775/212 506/777/214 507/799/220 +f 540/810/224 539/842/2 529/811/2 +f 520/809/40 507/799/220 503/813/226 +f 515/803/23 513/825/44 523/814/227 +f 524/816/229 522/821/230 521/817/230 +f 600/818/3 599/854/3 548/819/3 +f 503/797/219 504/796/184 521/817/230 +f 535/822/215 540/810/224 505/801/221 +f 531/824/232 542/919/253 506/777/214 +f 513/825/44 511/800/51 525/802/222 +f 551/826/1 554/836/1 549/827/1 +f 517/805/46 504/804/223 508/823/231 +f 553/830/6 552/872/6 546/831/6 +f 512/833/35 514/788/52 524/789/216 +f 544/834/62 552/872/62 553/830/62 +f 554/836/2 553/830/2 550/837/2 +f 541/839/3 542/919/253 531/824/232 +f 553/830/62 554/836/62 547/841/62 +f 535/822/215 536/1361/2 539/842/2 +f 507/795/6 538/1362/302 535/843/110 +f 526/790/1 525/792/217 527/845/1 +f 505/801/221 540/810/224 527/812/225 +f 519/829/233 508/823/231 505/801/221 +f 598/848/2 597/873/2 543/849/2 +f 559/851/3 560/1363/3 566/852/235 +f 599/854/1 598/848/1 544/855/1 +f 561/858/1 559/1364/1 564/859/1 +f 564/859/1 565/1365/1 568/857/1 +f 565/1365/1 563/1366/1 568/857/1 +f 563/1366/1 569/1367/1 568/857/1 +f 560/861/6 562/1368/6 571/862/6 +f 571/862/6 572/1369/6 570/1370/6 +f 570/1370/6 567/1371/6 571/862/6 +f 567/1371/6 566/860/6 571/862/6 +f 532/807/62 528/785/62 535/787/62 +f 607/864/3 605/1372/3 617/865/3 +f 605/1372/3 615/1373/3 617/865/3 +f 615/1373/3 618/976/3 617/865/3 +f 617/865/3 613/1374/3 611/1375/3 +f 611/1375/3 609/863/3 617/865/3 +f 564/853/235 566/852/235 567/866/236 +f 579/868/3 587/1376/3 596/869/3 +f 545/871/3 546/1377/3 552/872/3 +f 597/873/6 600/818/6 547/874/6 +f 568/876/237 571/903/237 562/877/2 +f 556/879/238 602/1378/238 601/880/238 +f 543/882/62 551/826/62 552/872/62 +f 554/836/62 551/826/62 543/882/62 +f 615/883/239 616/909/239 619/884/240 +f 576/886/62 582/939/62 581/887/136 +f 624/889/2 623/1379/2 619/890/2 +f 533/892/1 531/846/199 527/845/1 +f 572/894/242 569/904/242 563/895/62 +f 629/897/243 630/1380/243 628/898/244 +f 609/900/245 610/986/245 608/901/246 +f 571/903/237 568/876/237 569/904/242 +f 613/905/247 614/987/247 612/906/248 +f 605/908/249 606/994/249 616/909/239 +f 621/910/250 624/917/251 620/911/251 +f 470/913/62 472/779/184 518/780/184 +f 606/915/2 608/1381/2 620/891/2 +f 608/1381/2 610/1382/2 620/891/2 +f 610/1382/2 612/1383/2 620/891/2 +f 612/1383/2 614/1384/298 620/891/2 +f 620/891/2 619/890/2 616/914/2 +f 565/867/236 567/866/236 570/896/62 +f 622/916/252 623/988/252 624/917/252 +f 537/918/3 538/798/211 542/919/253 +f 592/920/3 587/1376/3 579/868/3 +f 575/888/136 581/887/136 580/922/123 +f 642/924/254 643/949/254 644/925/254 +f 573/927/5 579/1385/5 584/928/133 +f 595/930/3 594/1386/3 582/931/3 +f 582/931/3 594/1386/3 593/933/3 +f 601/880/255 604/979/255 558/935/255 +f 578/929/133 584/928/133 583/937/134 +f 577/938/134 583/937/134 582/939/62 +f 647/940/256 648/1387/256 646/941/257 +f 626/944/2 628/1388/2 640/945/2 +f 628/1388/2 630/1389/2 640/945/2 +f 630/1389/2 632/1390/2 640/945/2 +f 632/1390/2 634/1391/2 640/945/2 +f 640/945/2 639/999/2 636/943/2 +f 637/946/258 640/1000/259 634/947/259 +f 643/949/260 642/924/260 638/950/261 +f 596/952/133 591/956/133 590/953/134 +f 587/955/5 586/1392/5 591/956/133 +f 595/954/134 590/953/134 589/957/62 +f 574/923/123 580/922/123 579/959/5 +f 556/961/62 598/848/62 599/854/62 +f 586/965/2 585/1393/2 590/963/2 +f 585/1393/2 588/1394/2 590/963/2 +f 588/1394/2 589/1395/2 590/963/2 +f 594/958/62 589/957/62 588/966/136 +f 603/968/262 602/1378/263 556/969/263 +f 631/971/264 632/991/264 630/972/243 +f 627/899/244 628/898/244 626/974/265 +f 618/976/3 622/1396/3 621/977/3 +f 593/933/3 592/920/3 580/921/3 +f 599/854/62 600/818/62 558/978/62 +f 604/979/266 603/968/266 557/980/266 +f 596/869/3 595/930/3 583/932/3 +f 592/982/123 585/992/123 586/983/5 +f 600/818/62 597/873/62 555/985/62 +f 601/880/62 602/1378/62 603/968/62 +f 611/907/248 612/906/248 610/986/245 +f 555/985/62 597/873/62 598/848/62 +f 617/912/267 620/911/267 614/987/267 +f 623/988/268 622/916/268 618/885/241 +f 625/975/265 626/974/265 636/989/269 +f 633/948/270 634/947/270 632/991/264 +f 593/967/136 588/966/136 585/992/123 +f 607/993/246 608/1397/246 606/994/249 +f 627/996/3 625/1398/3 637/997/3 +f 625/1398/3 635/1399/3 637/997/3 +f 635/1399/3 638/1001/3 637/997/3 +f 637/997/3 633/1400/3 631/1401/3 +f 631/1401/3 629/995/3 637/997/3 +f 635/990/269 636/989/269 639/951/261 +f 644/998/2 643/1402/2 639/999/2 +f 641/926/271 644/925/271 640/1000/271 +f 638/1001/3 642/1403/3 641/1002/3 +f 649/1003/272 650/1014/272 648/1004/256 +f 647/1007/3 645/1404/3 657/1008/3 +f 645/1404/3 655/1405/3 657/1008/3 +f 655/1405/3 658/1025/3 657/1008/3 +f 657/1008/3 653/1406/3 651/1407/3 +f 651/1407/3 649/1006/3 657/1008/3 +f 653/1009/273 654/1021/273 652/1010/274 +f 645/942/257 646/941/257 656/1012/275 +f 651/1011/274 652/1010/274 650/1014/272 +f 646/1016/2 648/1408/2 660/1017/2 +f 648/1408/2 650/1409/2 660/1017/2 +f 650/1409/2 652/1410/2 660/1017/2 +f 652/1410/2 654/1411/2 660/1017/2 +f 660/1017/2 659/1030/2 656/1015/2 +f 655/1013/276 656/1012/275 659/1018/277 +f 657/1020/278 660/1024/278 654/1021/278 +f 663/1022/279 662/1027/303 658/1019/277 +f 661/1023/280 664/1028/280 660/1024/280 +f 658/1025/3 662/1412/3 661/1026/3 +f 662/1027/281 663/1022/281 664/1028/281 +f 664/1029/2 663/1413/2 659/1030/2 +f 669/1031/282 670/1414/282 668/1032/283 +f 673/1034/284 674/1052/304 672/1035/285 +f 667/1033/283 668/1032/283 666/1037/286 +f 665/1038/286 666/1037/286 676/1039/287 +f 667/1042/3 665/1415/3 677/1043/3 +f 665/1415/3 675/1416/3 677/1043/3 +f 675/1416/3 678/1056/3 677/1043/3 +f 677/1043/3 673/1417/3 671/1418/3 +f 671/1418/3 669/1041/3 677/1043/3 +f 671/1036/285 672/1035/285 670/1044/282 +f 666/1047/2 668/1419/2 680/1048/2 +f 668/1419/2 670/1420/2 680/1048/2 +f 670/1420/2 672/1421/2 680/1048/2 +f 672/1421/2 674/1422/2 680/1048/2 +f 680/1048/2 679/1061/2 676/1046/2 +f 675/1040/287 676/1039/287 679/1049/288 +f 677/1051/289 680/1055/289 674/1052/289 +f 683/1053/290 682/1058/290 678/1050/288 +f 681/1054/291 684/1059/291 680/1055/291 +f 678/1056/3 682/1423/3 681/1057/3 +f 682/1058/292 683/1053/292 684/1059/292 +f 684/1060/2 683/1424/2 679/1061/2 +f 702/1062/293 726/1139/293 725/1063/293 +f 708/1065/293 732/1104/293 731/534/293 +f 706/1067/293 730/1215/293 729/1068/293 +f 704/1070/293 728/1094/293 727/1071/293 +f 698/1073/293 722/537/293 721/1074/293 +f 699/1076/293 700/1425/293 724/540/293 +f 370/617/62 398/616/62 361/1078/62 +f 380/1080/2 377/1337/2 372/620/2 +f 374/1082/62 394/1208/62 395/1083/62 +f 375/1084/62 378/675/62 389/674/62 +f 368/1086/62 348/1426/62 344/1087/62 +f 400/1089/177 405/1206/177 406/1090/177 +f 64/1092/4 63/46/4 58/1093/4 +f 728/1094/176 704/1427/176 692/1095/176 +f 358/1097/2 379/1428/2 370/1098/2 +f 365/1100/2 364/1183/2 22/1101/2 +f 729/1068/1 730/1215/1 718/1103/1 +f 732/1104/176 708/1/176 696/3/176 +f 366/1106/2 365/1100/2 23/1102/2 +f 348/1108/2 368/1137/2 26/1109/2 +f 394/1111/3 393/1120/3 51/1112/3 +f 711/1114/8 687/1429/8 699/1115/8 +f 704/1116/1 705/1430/1 693/1117/1 +f 434/571/62 431/627/62 423/1119/62 +f 393/1120/3 345/1431/3 3/1121/3 +f 382/1088/62 381/661/62 367/1122/62 +f 379/1123/62 358/1198/62 359/1124/62 +f 706/1126/1 707/1432/1 695/1127/1 +f 395/1129/3 394/1111/3 52/1113/3 +f 363/1131/2 362/546/2 20/548/2 +f 396/1133/3 395/1129/3 53/1130/3 +f 702/1134/1 703/1433/1 691/1135/1 +f 368/1137/2 367/1168/2 25/1138/2 +f 726/1139/176 702/1434/176 690/1140/176 +f 701/1142/8 725/1063/8 713/529/8 +f 360/634/1 357/579/1 352/578/1 +f 700/1145/1 701/1435/1 689/1146/1 +f 43/105/5 21/104/5 20/1148/5 +f 2/1150/6 8/1436/6 7/1151/6 +f 721/1074/1 722/537/1 710/539/1 +f 49/1153/5 34/1170/5 7/1154/5 +f 81/119/5 89/90/5 92/5/5 +f 10/20/1 15/22/1 18/80/1 +f 18/1159/5 15/1437/5 16/1160/5 +f 17/1161/5 16/1160/5 37/51/5 +f 705/1162/8 729/1068/8 717/552/8 +f 11/1157/5 4/24/5 19/1164/5 +f 698/1165/1 699/1438/1 687/1166/1 +f 727/1071/1 728/1094/1 716/1096/1 +f 731/534/1 732/1104/1 720/1105/1 +f 367/1168/2 366/1106/2 24/1107/2 +f 361/1169/3 398/549/3 56/551/3 +f 49/1153/1 80/10/1 73/12/1 +f 48/108/3 47/99/3 42/1171/3 +f 75/1172/5 74/11/5 79/1173/5 +f 40/569/5 26/568/5 25/1174/5 +f 28/43/2 37/1233/2 16/1175/2 +f 723/1077/1 724/540/1 712/542/1 +f 384/644/3 389/643/3 390/1177/3 +f 415/588/1 422/587/1 391/1178/1 +f 421/1180/62 416/586/62 417/1181/62 +f 364/1183/2 363/1131/2 21/1132/2 +f 419/1184/178 420/1182/178 417/1181/178 +f 364/642/62 365/611/62 383/1186/62 +f 412/639/178 409/638/178 410/1187/178 +f 361/1188/62 346/1336/62 353/1189/62 +f 356/669/62 347/598/62 362/1191/62 +f 343/1194/62 344/1439/62 703/1440/62 +f 344/1439/62 348/1441/62 708/1442/62 +f 708/1442/62 707/1443/62 344/1439/62 +f 707/1443/62 706/1444/62 344/1439/62 +f 344/1439/62 706/1444/62 705/1445/62 +f 697/1446/62 345/1447/62 343/1194/62 +f 700/1193/62 699/1448/62 343/1194/62 +f 699/1448/62 698/1449/62 343/1194/62 +f 698/1449/62 697/1446/62 343/1194/62 +f 705/1445/62 704/1450/62 344/1439/62 +f 704/1450/62 703/1440/62 344/1439/62 +f 703/1440/62 702/1451/62 343/1194/62 +f 702/1451/62 701/1192/62 343/1194/62 +f 436/1195/2 435/624/2 423/1196/2 +f 358/1198/62 357/1452/62 360/1199/62 +f 725/1063/1 726/1139/1 714/1141/1 +f 349/1200/6 350/1453/6 344/1201/6 +f 399/1091/1 406/1090/1 387/662/1 +f 437/625/1 436/1195/1 424/1204/1 +f 405/1206/62 400/1089/62 401/1207/62 +f 370/1098/2 379/1428/2 380/1080/2 +f 373/665/62 393/664/62 394/1208/62 +f 403/623/6 402/622/6 379/1123/6 +f 450/686/183 447/685/183 446/1209/294 +f 423/1119/62 431/627/62 432/607/62 +f 349/1211/62 376/1179/62 391/1178/62 +f 448/1210/295 446/1209/294 441/1213/6 +f 419/1184/6 418/1185/6 375/1084/6 +f 730/1215/176 706/1454/176 694/1216/176 +o base +v -2.500000 1.000000 0.125000 +v 2.500000 1.000000 0.125000 +v -2.500000 1.000000 -0.125000 +v 2.500000 1.000000 -0.125000 +v -2.163461 1.000000 0.125000 +v -1.682692 1.000000 0.125000 +v -1.394231 1.000000 0.125000 +v -0.913461 1.000000 0.125000 +v -0.625000 1.000000 0.125000 +v -0.144231 1.000000 0.125000 +v 0.144231 1.000000 0.125000 +v 0.625000 1.000000 0.125000 +v 0.913462 1.000000 0.125000 +v 1.394231 1.000000 0.125000 +v 1.682693 1.000000 0.125000 +v 2.163462 1.000000 0.125000 +v -2.163461 1.000000 -0.125000 +v -1.682692 1.000000 -0.125000 +v -1.394231 1.000000 -0.125000 +v -0.913461 1.000000 -0.125000 +v -0.625000 1.000000 -0.125000 +v -0.144231 1.000000 -0.125000 +v 0.144231 1.000000 -0.125000 +v 0.625000 1.000000 -0.125000 +v 0.913462 1.000000 -0.125000 +v 1.394231 1.000000 -0.125000 +v 1.682693 1.000000 -0.125000 +v 2.163462 1.000000 -0.125000 +v -2.043269 0.875000 0.093750 +v -1.802885 0.875000 0.093750 +v -1.274038 0.875000 0.093750 +v -1.033654 0.875000 0.093750 +v -0.504808 0.875000 0.093750 +v -0.264423 0.875000 0.093750 +v 0.264423 0.875000 0.093750 +v 0.504808 0.875000 0.093750 +v 1.033654 0.875000 0.093750 +v 1.274039 0.875000 0.093750 +v 1.802885 0.875000 0.093750 +v 2.043269 0.875000 0.093750 +v -2.043269 0.875000 -0.093750 +v -1.802885 0.875000 -0.093750 +v -1.274038 0.875000 -0.093750 +v -1.033654 0.875000 -0.093750 +v -0.504808 0.875000 -0.093750 +v -0.264423 0.875000 -0.093750 +v 0.264423 0.875000 -0.093750 +v 0.504808 0.875000 -0.093750 +v 1.033654 0.875000 -0.093750 +v 1.274039 0.875000 -0.093750 +v 1.802885 0.875000 -0.093750 +v 2.043269 0.875000 -0.093750 +v -2.500000 1.000000 0.500000 +v -2.500000 1.000000 -0.500000 +v 2.500000 1.000000 0.500000 +v 2.500000 1.000000 -0.500000 +v -2.500000 0.000000 0.500000 +v -2.500000 0.000000 -0.500000 +v 2.500000 0.000000 0.500000 +v 2.500000 0.000000 -0.500000 +v 2.163462 1.062500 0.125000 +v 2.500000 1.062500 0.125000 +v 2.163462 1.062500 -0.125000 +v 2.500000 1.062500 -0.125000 +v -2.500000 1.062500 0.125000 +v -2.163461 1.062500 0.125000 +v -1.682692 1.062500 0.125000 +v -1.394231 1.062500 0.125000 +v -0.913461 1.062500 0.125000 +v -0.625000 1.062500 0.125000 +v -0.144231 1.062500 0.125000 +v 0.144231 1.062500 0.125000 +v 0.625000 1.062500 0.125000 +v 0.913462 1.062500 0.125000 +v 1.394231 1.062500 0.125000 +v 1.682693 1.062500 0.125000 +v -2.500000 1.062500 -0.125000 +v -2.163461 1.062500 -0.125000 +v -1.682692 1.062500 -0.125000 +v -1.394231 1.062500 -0.125000 +v -0.913461 1.062500 -0.125000 +v -0.625000 1.062500 -0.125000 +v -0.144231 1.062500 -0.125000 +v 0.144231 1.062500 -0.125000 +v 0.625000 1.062500 -0.125000 +v 0.913462 1.062500 -0.125000 +v 1.394231 1.062500 -0.125000 +v 1.682693 1.062500 -0.125000 +v -2.500000 1.062500 0.437500 +v 2.500000 1.062500 0.437500 +v 2.500000 1.062500 -0.437500 +v -2.500000 1.062500 -0.437500 +v -2.500000 4.499997 0.125000 +v 2.500000 4.499997 0.125000 +v -2.500000 4.499997 -0.125000 +v 2.500000 4.499997 -0.125000 +v 2.500000 4.999997 -0.125000 +v -2.500000 4.999997 -0.125000 +v 2.500000 4.999997 0.125000 +v -2.500000 4.999997 0.125000 +v 2.500000 4.584002 -0.341924 +v -2.500000 4.584002 -0.341924 +v 2.500000 4.584002 0.341924 +v -2.500000 4.584002 0.341924 +v 2.500000 4.999997 -0.341924 +v -2.500000 4.999997 -0.341924 +v 2.500000 4.999997 0.341924 +v -2.500000 4.999997 0.341924 +vt 0.995551 0.832453 +vt 0.903538 0.372388 +vt 0.995551 0.372388 +vt 0.004449 0.740332 +vt 0.464514 0.832345 +vt 0.004449 0.832345 +vt 0.894639 0.464401 +vt 0.434574 0.372388 +vt 0.894639 0.372388 +vt 0.883297 0.104396 +vt 0.914263 0.127399 +vt 0.883297 0.127399 +vt 0.241266 0.930716 +vt 0.264269 0.904173 +vt 0.264269 0.930716 +vt 0.221219 0.879319 +vt 0.209364 0.846141 +vt 0.221219 0.857200 +vt 0.909839 0.192797 +vt 0.883297 0.169794 +vt 0.909839 0.169794 +vt 0.485268 0.852835 +vt 0.505396 0.836879 +vt 0.502521 0.852835 +vt 0.473413 0.926350 +vt 0.496416 0.899808 +vt 0.496416 0.926350 +vt 0.195568 0.841244 +vt 0.162390 0.853100 +vt 0.151331 0.841244 +vt 0.318069 0.895275 +vt 0.338196 0.879319 +vt 0.341072 0.895275 +vt 0.514376 0.886013 +vt 0.514376 0.841776 +vt 0.499255 0.651053 +vt 0.525797 0.674057 +vt 0.499255 0.674057 +vt 0.370806 0.879319 +vt 0.358951 0.846141 +vt 0.370806 0.857200 +vt 0.502521 0.874953 +vt 0.288334 0.879319 +vt 0.271082 0.857200 +vt 0.288334 0.857200 +vt 0.238472 0.879319 +vt 0.238472 0.857200 +vt 0.320944 0.857200 +vt 0.338196 0.857200 +vt 0.184509 0.853100 +vt 0.162390 0.870352 +vt 0.388059 0.879319 +vt 0.388059 0.857200 +vt 0.146434 0.850224 +vt 0.482393 0.890909 +vt 0.505396 0.890909 +vt 0.300190 0.890378 +vt 0.300190 0.846141 +vt 0.200465 0.873228 +vt 0.200465 0.850224 +vt 0.399914 0.846141 +vt 0.291209 0.841244 +vt 0.320944 0.879319 +vt 0.309088 0.846141 +vt 0.390934 0.841244 +vt 0.268206 0.895275 +vt 0.291209 0.895275 +vt 0.250327 0.890378 +vt 0.250327 0.846141 +vt 0.367931 0.895275 +vt 0.390934 0.895275 +vt 0.485268 0.874953 +vt 0.473413 0.841776 +vt 0.241347 0.841244 +vt 0.218344 0.841244 +vt 0.184509 0.870352 +vt 0.151331 0.882208 +vt 0.218344 0.895275 +vt 0.350052 0.890378 +vt 0.350052 0.846141 +vt 0.271082 0.879319 +vt 0.259226 0.846141 +vt 0.341072 0.841244 +vt 0.318069 0.841244 +vt 0.894636 0.700521 +vt 0.888604 0.654741 +vt 0.894521 0.654738 +vt 0.841467 0.867572 +vt 0.836035 0.841924 +vt 0.841594 0.841952 +vt 0.522258 0.605178 +vt 0.499255 0.574212 +vt 0.522258 0.574212 +vt 0.209364 0.930716 +vt 0.232367 0.904173 +vt 0.232367 0.930716 +vt 0.469079 0.565313 +vt 0.434574 0.565313 +vt 0.434574 0.473300 +vt 0.535833 0.096462 +vt 0.501328 0.004449 +vt 0.593341 0.004449 +vt 0.836363 0.773181 +vt 0.836233 0.799101 +vt 0.807869 0.939936 +vt 0.888458 0.773182 +vt 0.888328 0.799102 +vt 0.859964 0.939936 +vt 0.841825 0.799136 +vt 0.894639 0.729014 +vt 0.888578 0.700511 +vt 0.842044 0.773229 +vt 0.836608 0.729026 +vt 0.842544 0.729014 +vt 0.836709 0.473339 +vt 0.807494 0.479148 +vt 0.801659 0.473300 +vt 0.894139 0.773229 +vt 0.888703 0.729026 +vt 0.836483 0.700510 +vt 0.842541 0.700521 +vt 0.835565 0.945607 +vt 0.835591 0.940063 +vt 0.893920 0.799137 +vt 0.836509 0.654740 +vt 0.842426 0.654737 +vt 0.888803 0.473339 +vt 0.859588 0.479148 +vt 0.853753 0.473300 +vt 0.893689 0.841952 +vt 0.836534 0.627597 +vt 0.842402 0.627598 +vt 0.887660 0.945608 +vt 0.887686 0.940063 +vt 0.893562 0.867572 +vt 0.888130 0.841925 +vt 0.836583 0.582562 +vt 0.842433 0.582567 +vt 0.893366 0.910233 +vt 0.888013 0.867546 +vt 0.836614 0.555582 +vt 0.842458 0.555588 +vt 0.842508 0.510644 +vt 0.836702 0.479181 +vt 0.842544 0.479188 +vt 0.836666 0.510638 +vt 0.894603 0.510644 +vt 0.888797 0.479181 +vt 0.894639 0.479188 +vt 0.893230 0.940089 +vt 0.887821 0.910207 +vt 0.894553 0.555588 +vt 0.888761 0.510638 +vt 0.799348 0.479155 +vt 0.799723 0.939943 +vt 0.894528 0.582568 +vt 0.888709 0.555582 +vt 0.841135 0.940088 +vt 0.835726 0.910207 +vt 0.841271 0.910232 +vt 0.851443 0.479155 +vt 0.851818 0.939943 +vt 0.894497 0.627599 +vt 0.888678 0.582562 +vt 0.835918 0.867546 +vt 0.888628 0.627597 +vt 0.233016 0.948456 +vt 0.251643 0.984178 +vt 0.233016 0.991391 +vt 0.014324 0.956233 +vt 0.443677 0.977701 +vt 0.014324 0.977701 +vt 0.082167 0.993341 +vt 0.103634 0.950405 +vt 0.103634 0.993341 +vt 0.211548 0.991391 +vt 0.122262 0.986127 +vt 0.032779 0.982491 +vt 0.462133 0.946769 +vt 0.462133 0.982491 +vt 0.476898 0.940769 +vt 0.047544 0.976491 +vt 0.047544 0.940769 +vt 0.503969 0.961382 +vt 0.074613 0.981357 +vt 0.074613 0.961382 +vt 0.443677 0.937606 +vt 0.443677 0.956233 +vt 0.483594 0.956906 +vt 0.054238 0.976881 +vt 0.054238 0.956906 +vt 0.211548 0.948456 +vt 0.192921 0.984178 +vt 0.192921 0.948456 +vt 0.082167 0.950405 +vt 0.063539 0.986127 +vt 0.063539 0.950405 +vt 0.014324 0.996329 +vt 0.903538 0.832453 +vt 0.464514 0.740333 +vt 0.434574 0.464401 +vt 0.914263 0.104396 +vt 0.241266 0.904173 +vt 0.209364 0.890378 +vt 0.883297 0.192797 +vt 0.482393 0.836879 +vt 0.473413 0.899808 +vt 0.525797 0.651053 +vt 0.358951 0.890378 +vt 0.146434 0.873228 +vt 0.399914 0.890378 +vt 0.268206 0.841244 +vt 0.309088 0.890378 +vt 0.367931 0.841244 +vt 0.473413 0.886012 +vt 0.195568 0.882208 +vt 0.241347 0.895275 +vt 0.259226 0.890378 +vt 0.499255 0.605178 +vt 0.209364 0.904173 +vt 0.526587 0.473300 +vt 0.492082 0.565313 +vt 0.526587 0.565313 +vt 0.593341 0.096462 +vt 0.558837 0.096462 +vt 0.501328 0.096462 +vt 0.802299 0.945455 +vt 0.854395 0.945455 +vt 0.251643 0.948456 +vt 0.122262 0.950405 +vt 0.032779 0.946769 +vt 0.476898 0.976491 +vt 0.503969 0.981358 +vt 0.014324 0.937606 +vt 0.483594 0.976881 +vt 0.443677 0.996329 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.2425 0.9701 +vn 0.7208 0.6931 0.0000 +vn 0.0000 0.2425 -0.9701 +vn -0.7208 0.6931 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.8321 0.3922 0.3922 +vn 0.4472 0.6325 0.6325 +vn -0.7071 0.0000 -0.7071 +vn -0.8321 0.3922 0.3922 +vn -0.7071 0.0000 0.7071 +vn -0.8321 0.3922 -0.3922 +vn -0.4472 0.6325 -0.6325 +vn 0.7071 0.0000 0.7071 +vn 0.8321 0.3922 -0.3922 +vn -0.4472 0.6325 0.6325 +vn 0.4472 0.6325 -0.6325 +vn 0.8944 0.4472 0.0000 +vn 0.5993 -0.4524 0.6604 +vn 0.8700 -0.4597 0.1780 +vn -0.8700 -0.4597 0.1780 +vn -0.8944 0.4472 0.0000 +vn -0.8700 -0.4597 -0.1780 +vn 0.8700 -0.4597 -0.1780 +vn -0.5993 -0.4524 -0.6604 +vn -0.5774 0.5774 0.5774 +vn -0.5993 -0.4524 0.6604 +vn 0.5774 0.5774 -0.5774 +vn 0.5993 -0.4524 -0.6604 +vn -0.5774 0.5774 -0.5774 +vn 0.5774 0.5774 0.5774 +s 1 +f 792/1455/305 789/1456/305 790/1457/305 +f 792/1458/306 786/1459/306 788/1460/306 +f 789/1461/307 787/1462/307 785/1463/307 +f 736/1464/308 748/1465/308 734/1466/308 +f 755/1467/308 742/1468/308 743/1469/308 +f 778/1470/309 753/1471/309 777/1472/309 +f 738/1473/308 751/1474/308 750/1475/308 +f 773/1476/310 737/1477/310 761/1478/310 +f 753/1479/308 740/1480/308 741/1481/308 +f 746/1482/311 769/1483/311 745/1484/311 +f 756/1485/312 768/1486/312 744/1487/312 +f 738/1488/311 761/1478/311 737/1489/311 +f 759/1490/308 746/1491/308 747/1492/308 +f 784/1493/309 759/1494/309 783/1495/309 +f 762/1496/308 773/1476/308 761/1478/308 +f 764/1497/308 775/1498/308 763/1499/308 +f 766/1500/308 777/1472/308 765/1501/308 +f 768/1486/308 779/1502/308 767/1503/308 +f 770/1504/308 781/1505/308 769/1483/308 +f 772/1506/308 783/1495/308 771/1507/308 +f 781/1505/310 745/1508/310 769/1483/310 +f 750/1509/312 762/1496/312 738/1510/312 +f 740/1511/311 763/1499/311 739/1512/311 +f 758/1513/312 770/1504/312 746/1514/312 +f 747/1515/311 772/1506/311 771/1507/311 +f 775/1498/310 739/1516/310 763/1499/310 +f 780/1517/309 755/1518/309 779/1502/309 +f 783/1495/310 747/1519/310 771/1507/310 +f 752/1520/312 764/1497/312 740/1521/312 +f 742/1522/311 765/1501/311 741/1523/311 +f 760/1524/312 772/1506/312 748/1525/312 +f 774/1526/309 749/1527/309 773/1476/309 +f 741/1528/310 777/1472/310 753/1529/310 +f 782/1530/309 757/1531/309 781/1505/309 +f 766/1500/312 754/1532/312 778/1470/312 +f 744/1533/311 767/1503/311 743/1534/311 +f 776/1535/309 751/1536/309 775/1498/309 +f 743/1537/310 779/1502/310 755/1538/310 +f 754/1539/307 814/1540/307 753/1541/307 +f 738/1542/306 800/1543/306 739/1544/306 +f 737/1545/308 735/1546/308 733/1547/308 +f 757/1548/308 744/1549/308 745/1550/308 +f 734/1551/313 787/1552/313 791/1553/313 +f 735/1554/314 790/1555/314 789/1556/314 +f 802/1557/308 801/1558/308 821/1559/308 +f 817/1560/308 818/1561/308 823/1562/308 +f 739/1544/306 801/1558/306 740/1563/306 +f 755/1564/307 815/1565/307 754/1539/307 +f 741/1566/306 803/1567/306 742/1568/306 +f 734/1569/315 822/1570/316 787/1571/317 +f 756/1572/307 816/1573/307 755/1564/307 +f 742/1568/306 804/1574/306 743/1575/306 +f 733/1576/318 821/1559/319 797/1577/318 +f 757/1578/307 817/1560/307 756/1572/307 +f 743/1575/306 805/1579/306 744/1580/306 +f 735/1581/320 824/1582/321 786/1583/322 +f 758/1584/307 818/1561/307 757/1578/307 +f 744/1580/306 806/1585/306 745/1586/306 +f 736/1587/323 823/1562/324 796/1588/323 +f 759/1589/307 819/1590/307 758/1584/307 +f 745/1586/306 807/1591/306 746/1592/306 +f 760/1593/307 820/1594/307 759/1589/307 +f 746/1592/306 808/1595/306 747/1596/306 +f 748/1597/306 794/1598/315 734/1599/315 +f 747/1596/306 793/1600/306 748/1597/306 +f 740/1563/306 802/1557/306 741/1566/306 +f 749/1601/307 809/1602/320 735/1603/320 +f 736/1604/323 795/1605/307 760/1593/307 +f 750/1606/307 810/1607/307 749/1601/307 +f 787/1608/317 821/1559/319 785/1609/325 +f 751/1610/307 811/1611/307 750/1606/307 +f 733/1612/318 798/1613/306 737/1614/306 +f 786/1615/322 823/1562/324 788/1616/326 +f 752/1617/307 812/1618/307 751/1610/307 +f 737/1614/306 799/1619/306 738/1542/306 +f 753/1541/307 813/1620/307 752/1617/307 +f 831/1621/327 835/1622/328 826/1623/329 +f 829/1624/308 832/1625/308 831/1626/308 +f 825/1627/330 830/1628/331 827/1629/332 +f 828/1630/333 831/1621/327 826/1623/329 +f 830/1628/331 834/1631/334 827/1629/332 +f 835/1632/328 840/1633/335 836/1634/336 +f 834/1635/334 837/1636/337 833/1637/338 +f 827/1638/332 833/1639/338 828/1640/333 +f 829/1624/327 838/1641/339 830/1642/331 +f 826/1643/329 836/1644/336 825/1645/330 +f 829/1646/327 833/1647/338 837/1648/337 +f 832/1649/331 836/1650/336 840/1651/335 +f 832/1625/331 839/1652/340 831/1626/327 +f 792/1455/305 791/1653/305 789/1456/305 +f 792/1458/306 790/1654/306 786/1459/306 +f 789/1461/307 791/1655/307 787/1462/307 +f 736/1464/308 760/1656/308 748/1465/308 +f 755/1467/308 754/1657/308 742/1468/308 +f 778/1470/309 754/1658/309 753/1471/309 +f 738/1473/308 739/1659/308 751/1474/308 +f 773/1476/310 749/1660/310 737/1477/310 +f 753/1479/308 752/1661/308 740/1480/308 +f 746/1482/311 770/1504/311 769/1483/311 +f 756/1485/312 780/1517/312 768/1486/312 +f 738/1488/311 762/1496/311 761/1478/311 +f 759/1490/308 758/1662/308 746/1491/308 +f 784/1493/309 760/1663/309 759/1494/309 +f 762/1496/308 774/1526/308 773/1476/308 +f 764/1497/308 776/1535/308 775/1498/308 +f 766/1500/308 778/1470/308 777/1472/308 +f 768/1486/308 780/1517/308 779/1502/308 +f 770/1504/308 782/1530/308 781/1505/308 +f 772/1506/308 784/1493/308 783/1495/308 +f 781/1505/310 757/1664/310 745/1508/310 +f 750/1509/312 774/1526/312 762/1496/312 +f 740/1511/311 764/1497/311 763/1499/311 +f 758/1513/312 782/1530/312 770/1504/312 +f 747/1515/311 748/1665/311 772/1506/311 +f 775/1498/310 751/1666/310 739/1516/310 +f 780/1517/309 756/1667/309 755/1518/309 +f 783/1495/310 759/1668/310 747/1519/310 +f 752/1520/312 776/1535/312 764/1497/312 +f 742/1522/311 766/1500/311 765/1501/311 +f 760/1524/312 784/1493/312 772/1506/312 +f 774/1526/309 750/1669/309 749/1527/309 +f 741/1528/310 765/1501/310 777/1472/310 +f 782/1530/309 758/1670/309 757/1531/309 +f 766/1500/312 742/1671/312 754/1532/312 +f 744/1533/311 768/1486/311 767/1503/311 +f 776/1535/309 752/1672/309 751/1536/309 +f 743/1537/310 767/1503/310 779/1502/310 +f 754/1539/307 815/1565/307 814/1540/307 +f 738/1542/306 799/1619/306 800/1543/306 +f 737/1545/308 749/1673/308 735/1546/308 +f 757/1548/308 756/1674/308 744/1549/308 +f 791/1553/313 792/1675/313 736/1676/313 +f 792/1675/313 788/1677/313 736/1676/313 +f 736/1676/313 734/1551/313 791/1553/313 +f 789/1556/314 785/1678/314 733/1679/314 +f 735/1554/314 786/1680/314 790/1555/314 +f 789/1556/314 733/1679/314 735/1554/314 +f 821/1559/308 822/1570/308 804/1574/308 +f 822/1570/308 794/1598/308 793/1600/308 +f 793/1600/308 808/1595/308 822/1570/308 +f 808/1595/308 807/1591/308 822/1570/308 +f 822/1570/308 807/1591/308 806/1585/308 +f 798/1613/308 797/1577/308 821/1559/308 +f 801/1558/308 800/1543/308 821/1559/308 +f 800/1543/308 799/1619/308 821/1559/308 +f 799/1619/308 798/1613/308 821/1559/308 +f 806/1585/308 805/1579/308 822/1570/308 +f 805/1579/308 804/1574/308 822/1570/308 +f 804/1574/308 803/1567/308 821/1559/308 +f 803/1567/308 802/1557/308 821/1559/308 +f 823/1562/308 824/1582/308 815/1565/308 +f 824/1582/308 809/1602/308 810/1607/308 +f 810/1607/308 811/1611/308 824/1582/308 +f 811/1611/308 812/1618/308 824/1582/308 +f 824/1582/308 812/1618/308 813/1620/308 +f 795/1605/308 796/1588/308 823/1562/308 +f 818/1561/308 819/1590/308 823/1562/308 +f 819/1590/308 820/1594/308 823/1562/308 +f 820/1594/308 795/1605/308 823/1562/308 +f 813/1620/308 814/1540/308 824/1582/308 +f 814/1540/308 815/1565/308 824/1582/308 +f 815/1565/308 816/1573/308 823/1562/308 +f 816/1573/308 817/1560/308 823/1562/308 +f 739/1544/306 800/1543/306 801/1558/306 +f 755/1564/307 816/1573/307 815/1565/307 +f 741/1566/306 802/1557/306 803/1567/306 +f 734/1569/315 794/1598/315 822/1570/316 +f 756/1572/307 817/1560/307 816/1573/307 +f 742/1568/306 803/1567/306 804/1574/306 +f 733/1576/318 785/1681/325 821/1559/319 +f 757/1578/307 818/1561/307 817/1560/307 +f 743/1575/306 804/1574/306 805/1579/306 +f 735/1581/320 809/1602/320 824/1582/321 +f 758/1584/307 819/1590/307 818/1561/307 +f 744/1580/306 805/1579/306 806/1585/306 +f 736/1587/323 788/1682/326 823/1562/324 +f 759/1589/307 820/1594/307 819/1590/307 +f 745/1586/306 806/1585/306 807/1591/306 +f 760/1593/307 795/1605/307 820/1594/307 +f 746/1592/306 807/1591/306 808/1595/306 +f 748/1597/306 793/1600/306 794/1598/315 +f 747/1596/306 808/1595/306 793/1600/306 +f 740/1563/306 801/1558/306 802/1557/306 +f 749/1601/307 810/1607/307 809/1602/320 +f 736/1604/323 796/1588/323 795/1605/307 +f 750/1606/307 811/1611/307 810/1607/307 +f 787/1608/317 822/1570/316 821/1559/319 +f 751/1610/307 812/1618/307 811/1611/307 +f 733/1612/318 797/1577/318 798/1613/306 +f 786/1615/322 824/1582/321 823/1562/324 +f 752/1617/307 813/1620/307 812/1618/307 +f 737/1614/306 798/1613/306 799/1619/306 +f 753/1541/307 814/1540/307 813/1620/307 +f 831/1621/327 839/1683/340 835/1622/328 +f 829/1624/308 830/1642/308 832/1625/308 +f 825/1627/330 832/1649/331 830/1628/331 +f 828/1630/333 829/1646/327 831/1621/327 +f 830/1628/331 838/1684/339 834/1631/334 +f 835/1632/328 839/1685/340 840/1633/335 +f 834/1635/334 838/1686/339 837/1636/337 +f 827/1638/332 834/1687/334 833/1639/338 +f 829/1624/327 837/1688/337 838/1641/339 +f 826/1643/329 835/1689/328 836/1644/336 +f 829/1646/327 828/1630/333 833/1647/338 +f 832/1649/331 825/1627/330 836/1650/336 +f 832/1625/331 840/1690/335 839/1652/340 diff --git a/src/main/resources/assets/hbm/models/doors/sliding_blast_door.dae b/src/main/resources/assets/hbm/models/doors/sliding_blast_door.dae new file mode 100644 index 000000000..5e24b46e3 --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/sliding_blast_door.dae @@ -0,0 +1,523 @@ + + + + + Blender User + Blender 2.90.0 commit date:2020-08-31, commit time:11:26, hash:0330d1af29c0 + + 2020-09-23T20:18:02 + 2020-09-23T20:18:02 + + Z_UP + + + + + + + door0_png + + + + + door0_png-surface + + + + + + 0 0 0 1 + + + + + + 1.45 + + + + + + + + + door0.png + + + + + + + + + + + + -0.09754508 -0.4903927 -0.242556 -0.08284217 -0.4164779 -0.317556 -0.1913416 -0.4619397 -0.242556 -0.1625014 -0.3923135 -0.317556 -0.2777849 -0.4157344 -0.242556 -0.2359154 -0.3530725 -0.317556 -0.3535535 -0.3535532 -0.242556 -0.3002642 -0.3002633 -0.317556 -0.4157346 -0.277785 -0.242556 -0.3530725 -0.2359158 -0.317556 -0.4619393 -0.1913415 -0.242556 -0.3923131 -0.1625013 -0.317556 -0.4903929 -0.09754502 -0.242556 -0.4164781 -0.08284199 -0.317556 -0.5004594 0.00187844 -0.2425482 -0.4246374 0 -0.317556 -0.4903926 0.09754526 -0.242556 -0.4164779 0.08284246 -0.317556 -0.4619393 0.1913417 -0.242556 -0.392313 0.1625016 -0.317556 -0.4157346 0.2777853 -0.242556 -0.3530727 0.2359158 -0.317556 -0.3535535 0.3535535 -0.242556 -0.3002639 0.3002639 -0.317556 -0.2777848 0.4157353 -0.242556 -0.2359154 0.3530734 -0.317556 -0.1913416 0.4619403 -0.242556 -0.1625011 0.3923142 -0.317556 -0.09754508 0.4903932 -0.242556 -0.08284294 0.4164784 -0.317556 -0.09754508 -0.4903927 0.207669 -0.08284217 -0.4164779 0.282669 -0.1913416 -0.4619397 0.207669 -0.1625014 -0.3923135 0.282669 -0.2777849 -0.4157344 0.207669 -0.2359154 -0.3530725 0.282669 -0.3535535 -0.3535532 0.207669 -0.3002642 -0.3002633 0.282669 -0.4157346 -0.277785 0.207669 -0.3530725 -0.2359158 0.282669 -0.4619393 -0.1913415 0.207669 -0.3923131 -0.1625013 0.282669 -0.4903929 -0.09754502 0.207669 -0.4164781 -0.08284199 0.282669 -0.4995414 -0.001877963 0.2076613 -0.4246374 0 0.282669 -0.4903926 0.09754526 0.207669 -0.4164779 0.08284246 0.282669 -0.4619393 0.1913417 0.207669 -0.392313 0.1625016 0.282669 -0.4157346 0.2777853 0.207669 -0.3530727 0.2359158 0.282669 -0.3535535 0.3535535 0.207669 -0.3002639 0.3002639 0.282669 -0.2777848 0.4157353 0.207669 -0.2359154 0.3530734 0.282669 -0.1913416 0.4619403 0.207669 -0.1625011 0.3923142 0.282669 -0.09754508 0.4903932 0.207669 -0.08284294 0.4164784 0.282669 -2.7797e-7 0.4163811 0.262669 -0.01996839 0.4226706 0.282669 -2.86847e-7 0.5 0.1794527 -0.01996773 0.4980335 0.207669 -2.7797e-7 0.4163811 -0.297556 -0.01996839 0.4226706 -0.317556 -2.86847e-7 0.5 -0.2143397 -0.01996773 0.4980335 -0.242556 -0.01996713 -0.4980334 -0.242556 2.86847e-7 -0.5 -0.2143397 2.63627e-7 -0.4163811 -0.297556 -0.01996779 -0.4226704 -0.317556 -0.01996713 -0.4980334 0.207669 2.86847e-7 -0.5 0.1794527 0.2795697 0.2081907 -0.152556 0.27957 -0.2081903 -0.152556 2.63627e-7 -0.4163811 0.262669 -0.01996779 -0.4226704 0.282669 0.2795697 0.2081907 0.117669 0.27957 -0.2081903 0.117669 + + + + + + + + + + -0.6343932 0.7730106 0 -0.634393 0.7730109 0 -0.6343933 0.7730106 0 -0.3918982 -0.5865173 0.7088112 -0.4987916 -0.498792 0.7088113 -0.4987914 -0.4987922 0.7088114 -0.1376165 -0.6918438 -0.7088117 -0.2699458 -0.6517022 -0.7088114 -0.1376158 -0.6918442 -0.7088114 -0.3918983 -0.5865174 -0.7088111 -0.2699457 -0.6517022 -0.7088115 -0.4987917 -0.4987921 -0.7088112 -0.3918983 -0.5865177 -0.7088109 -0.5865182 -0.3918968 -0.7088112 -0.4987915 -0.498792 -0.7088115 -0.6517023 -0.2699455 -0.7088114 -0.5865182 -0.3918969 -0.7088112 -0.6918433 -0.1376187 -0.7088116 -0.651702 -0.2699455 -0.7088116 -0.6914468 -0.1380745 -0.70911 -0.7036247 -0.00131309 -0.7105706 -0.7040166 0.001163065 -0.7101826 -0.6908355 0.1386065 -0.7096018 -0.651703 0.2699446 -0.7088111 -0.6914079 0.1398018 -0.7088093 -0.5865182 0.3918963 -0.7088115 -0.6517027 0.269945 -0.7088113 -0.5865183 0.3918968 -0.7088112 -0.4987924 0.4987913 -0.7088112 -0.391899 0.5865169 -0.7088112 -0.4987925 0.4987915 -0.7088112 -0.2699452 0.6517028 -0.7088111 -0.3918986 0.5865172 -0.7088111 -0.1376148 0.691845 -0.7088108 -0.2699449 0.6517028 -0.7088112 0 0 -1 0 2.23898e-7 -1 0 2.44089e-7 -1 -0.7730121 -0.6343914 0 -0.7730121 -0.6343913 0 -0.5865182 0.391897 0.7088111 -0.4987924 0.4987913 0.7088114 -0.4987923 0.4987916 0.7088112 -0.994697 0.1028484 3.86987e-4 -0.9956281 0.09337615 0.002420604 -0.9945092 0.1046497 0 -0.6922908 -0.1371796 0.7084598 -0.7072311 -0.002328574 0.7069787 -0.6920359 -0.1366496 0.7088112 -0.06930738 -0.7037019 -0.707107 -0.06930822 -0.7037011 -0.7071076 1 2.77687e-7 0 1 2.77687e-7 0 -0.6918437 0.1376188 0.7088114 -0.651703 0.2699447 0.7088111 -0.6928161 0.1364942 0.7080786 0.597267 -0.8020426 0 0.5972671 -0.8020426 0 0.597267 -0.8020426 0 -0.1376149 0.6918449 0.7088109 -0.06930512 0.7037024 0.7071066 -0.06930601 0.7037022 0.7071068 -0.3918989 0.5865168 0.7088112 -0.2699451 0.6517028 0.7088111 -0.3918989 0.586517 0.7088111 -0.9569385 -0.290291 0 -0.9569385 -0.290291 0 -0.9569385 -0.2902909 0 0 5.97108e-7 1 0 1.38861e-7 1 0 4.89142e-7 1 -0.5865181 -0.3918969 0.7088113 -0.6517022 -0.2699455 0.7088114 -0.5865182 -0.3918969 0.7088112 0.4604119 2.99879e-7 0.8877055 0.4604119 2.90584e-7 0.8877055 0.4604119 2.84085e-7 0.8877055 0.6818548 -0.5159897 0.518487 0.6818463 -0.5159928 0.5184951 0.6818447 -0.5159934 0.5184967 -0.6343903 -0.773013 0 -0.6343906 -0.7730128 0 -0.6343902 -0.7730129 0 -0.7067841 -3.6214e-4 0.7074292 -0.5865182 0.3918964 0.7088115 -0.1376146 0.6918448 0.7088111 -0.06930732 -0.7037019 0.7071068 -0.1376165 -0.6918439 0.7088115 -0.06930816 -0.7037014 0.7071073 0.6818493 0.5159911 0.5184929 0.6818571 0.5159883 0.5184854 0.6818478 0.5159917 0.5184944 0.7076703 4.96666e-7 0.7065428 0.7076709 4.36843e-7 0.7065423 0.7076709 4.35285e-7 0.7065423 1 6.44172e-7 0 -0.8819222 -0.471395 0 -0.8819223 -0.4713949 0 -0.8819222 -0.471395 0 -0.9949877 -0.09999227 0.001029133 -0.9953851 -0.09596174 1.64625e-4 -0.9949128 -0.1007338 0.001188278 -0.4713987 0.8819202 0 -0.290286 -0.9569399 0 -0.2902855 -0.9569401 0 -0.2902855 -0.9569402 0 -0.9569392 0.2902885 0 -0.9569393 0.2902885 0 -0.9569392 0.2902885 0 -0.1376149 0.691845 -0.7088108 -0.06930506 0.7037028 -0.7071062 0.6818575 0.5159879 -0.5184853 0.6818491 0.5159913 -0.5184928 0.6818476 0.515992 -0.5184943 0.6818549 -0.5159896 -0.518487 0.6818468 -0.5159925 -0.5184947 0.6818563 -0.5159891 -0.5184857 0.7076709 5.18025e-7 -0.7065423 0.7076714 4.75952e-7 -0.7065417 0.7076709 5.18853e-7 -0.7065423 1 0 0 1 0 0 0.4604119 3.24432e-7 -0.8877055 0.4604119 3.30949e-7 -0.8877055 0.4604119 3.19875e-7 -0.8877055 -0.8819226 0.4713943 0 -0.8819226 0.4713944 0 -0.8819226 0.4713943 0 0.597266 0.8020432 0 0.597266 0.8020431 0 0.5972661 0.8020432 0 -0.7730118 0.6343917 0 -0.2699457 -0.6517022 0.7088115 -0.2699459 -0.6517023 0.7088112 -0.2902847 0.9569404 0 -0.2902842 0.9569405 0 -0.2902848 0.9569404 0 -0.4714003 -0.8819194 0 -0.4713999 -0.8819196 0 -0.4713998 -0.8819196 0 -0.09801191 0.9951853 -3.8043e-7 -0.09801286 0.9951852 -2.13198e-6 -0.09801191 0.9951853 -5.68066e-7 -0.09801632 -0.9951849 1.60855e-7 -0.09801632 -0.9951849 -1.62177e-7 -0.09801626 -0.9951848 0 -0.6343929 0.7730109 0 -0.3918983 -0.5865173 0.7088112 0 6.7705e-7 -1 0 3.34205e-7 -1 0 -5.35771e-7 -1 0 -1.62897e-7 -1 0 -1.16722e-6 -1 0 -1.3466e-7 -1 0 -1.94201e-6 -1 0 7.26139e-6 -1 0 7.26151e-6 -1 0 -4.09277e-6 -1 0 -2.69318e-7 -1 -0.7730122 -0.6343914 0 -0.9957892 0.09163045 0.002795159 -0.6517027 0.2699446 0.7088115 0.5972672 -0.8020424 0 -0.2699449 0.6517025 0.7088115 -0.9569385 -0.290291 0 0 -3.99966e-7 1 0 -2.23898e-7 1 0 -2.77085e-7 1 0 0 1 0 5.35771e-7 1 0 0 1 0 0 1 0 1.0104e-6 1 0 7.26139e-6 1 0 2.08782e-7 1 0 -1.16722e-6 1 -0.6517019 -0.2699454 0.7088118 0.4604119 3.14074e-7 0.8877055 0.6818562 -0.5159893 0.5184856 -0.6343907 -0.7730127 0 -0.1376154 -0.6918442 0.7088115 0.6818584 0.5159878 0.5184841 0.7076703 4.97843e-7 0.7065428 1 6.44172e-7 0 -0.8819223 -0.4713948 0 -0.9954588 -0.09519404 0 -0.2902861 -0.9569399 0 -0.9569392 0.2902885 0 -0.06930601 0.7037022 -0.7071068 0.6818588 0.5159873 -0.518484 0.6818452 -0.5159931 -0.5184962 0.7076715 4.74856e-7 -0.7065417 1 0 0 0.4604119 3.40901e-7 -0.8877055 -0.8819226 0.4713944 0 0.597266 0.8020433 0 -0.2902842 0.9569406 0 -0.4714004 -0.8819195 0 -0.09801262 0.9951853 5.71151e-7 -0.09801316 0.9951852 2.14356e-6 -0.09801262 0.9951853 3.82497e-7 -0.0980162 -0.9951848 -6.08658e-7 -0.09801632 -0.9951849 0 -0.09801614 -0.9951848 6.03696e-7 + + + + + + + + + + 0.6835938 0.08984375 0.6914063 0.05078125 0.6914063 0.08984375 0.6132813 0.05078125 0.6210938 0.04296875 0.6210938 0.05078125 0.5976563 0.08984375 0.6054688 0.09765625 0.5976563 0.09765625 0.6132813 0.08984375 0.6054688 0.09765625 0.6054688 0.08984375 0.6132813 0.08984375 0.6210938 0.09765625 0.6132813 0.09765625 0.6289063 0.08984375 0.6210938 0.09765625 0.6210938 0.08984375 0.6367188 0.08984375 0.6289063 0.09765625 0.6289063 0.08984375 0.6367188 0.08984375 0.6445313 0.09765625 0.6367188 0.09765625 0.6445313 0.08984375 0.6523438 0.09765625 0.6445313 0.09765625 0.6523438 0.08984375 0.6601563 0.09765625 0.6523438 0.09765625 0.6679688 0.08984375 0.6601563 0.09765625 0.6601563 0.08984375 0.6679688 0.08984375 0.6757813 0.09765625 0.6679688 0.09765625 0.6757813 0.08984375 0.6835938 0.09765625 0.6757813 0.09765625 0.6914063 0.08984375 0.6835938 0.09765625 0.6835938 0.08984375 0.6992188 0.08984375 0.6914063 0.09765625 0.6914063 0.08984375 0.6992188 0.08984375 0.7070313 0.09765625 0.6992188 0.09765625 0.6445313 0.09873586 0.6523438 0.09765625 0.6132813 0.1367187 0.6210938 0.08984375 0.6289063 0.05078125 0.6289063 0.08984375 0.6757813 0.05078125 0.6835938 0.04296875 0.6835938 0.05078125 0.6523438 0.08984375 0.6601563 0.05078125 0.6601563 0.08984375 0.6445313 0.04296875 0.6523438 0.05078125 0.6445313 0.05078125 0.5976563 0.08984375 0.5898438 0.09765625 0.5898438 0.08984375 0.6015625 0.15625 0.59375 0.203125 0.59375 0.1640625 0.6601563 0.04296875 0.6679688 0.05078125 0.6601563 0.05078125 0.6328125 0.171875 0.6015625 0.2109375 0.6015625 0.15625 0.7070313 0.05078125 0.7148438 0.04296875 0.7148438 0.05078125 0.6914063 0.04296875 0.6992188 0.05078125 0.6914063 0.05078125 0.6367188 0.08984375 0.6445313 0.05078125 0.6445313 0.08984375 0.6747738 0.03576993 0.6679536 0.03945618 0.6914063 0.00390625 0.6289063 0.04296875 0.6367188 0.05078125 0.6289063 0.05078125 0.6132813 0.2265625 0.671875 0.1953125 0.6914063 0.2265625 0.5898438 0.05078125 0.5859375 0.04296875 0.5898438 0.04296875 0.6132813 0.08984375 0.6210938 0.05078125 0.6210938 0.08984375 0.6210938 0.04296875 0.6289063 0.05078125 0.6210938 0.05078125 0.6367188 0.05078125 0.6445313 0.04296875 0.6445313 0.05078125 0.6523438 0.04296875 0.6601563 0.05078125 0.6523438 0.05078125 0.6679688 0.05078125 0.6757813 0.04296875 0.6757813 0.05078125 0.6835938 0.04296875 0.6914063 0.05078125 0.6835938 0.05078125 0.6992188 0.05078125 0.7070313 0.04296875 0.7070313 0.05078125 0.5898438 0.04296875 0.5976563 0.05078125 0.5898438 0.05078125 0.71875 0.04296875 0.7148438 0.05078125 0.7148438 0.04296875 0.6914063 0 0.6132813 0.00390625 0.6132813 0 0.671875 0.171875 0.6328125 0.1953125 0.6328125 0.171875 0.6289063 0.08984375 0.6367188 0.05078125 0.6367188 0.08984375 0.6445313 0.08984375 0.6523438 0.05078125 0.6523438 0.08984375 0.6914063 0.08984375 0.6992188 0.05078125 0.6992188 0.08984375 0.6054688 0.08984375 0.5976563 0.05078125 0.6054688 0.05078125 0.6601563 0.08984375 0.6679688 0.05078125 0.6679688 0.08984375 0.7070313 0.08984375 0.7148438 0.09765625 0.7070313 0.09765625 0.7148438 0.08984375 0.71875 0.09765625 0.7148438 0.09765625 0.5898438 0.08984375 0.5859375 0.09765625 0.5859375 0.08984375 0.6914063 0.140625 0.6132813 0.1367187 0.6914063 0.1367187 0.703125 0.15625 0.7109375 0.203125 0.703125 0.2109375 0.671875 0.171875 0.6132813 0.140625 0.6914063 0.140625 0.6679688 0.08984375 0.6757813 0.05078125 0.6757813 0.08984375 0.703125 0.15625 0.671875 0.1953125 0.671875 0.171875 0.6757813 0.08984375 0.6835938 0.05078125 0.6835938 0.08984375 0.6054688 0.04296875 0.6132813 0.05078125 0.6054688 0.05078125 0.5976563 0.05078125 0.6054688 0.04296875 0.6054688 0.05078125 0.6992188 0.08984375 0.7070313 0.05078125 0.7070313 0.08984375 0.6132813 0.08984375 0.6054688 0.05078125 0.6132813 0.05078125 0.7070313 0.05078125 0.7148438 0.0546875 0.71875 0.05078125 0.5859375 0.08984375 0.5859375 0.05078125 0.5976563 0.08984375 0.6835938 0.08984375 0.6835938 0.05078125 0.6914063 0.05078125 0.6132813 0.05078125 0.6132813 0.04296875 0.6210938 0.04296875 0.5976563 0.08984375 0.6054688 0.08984375 0.6054688 0.09765625 0.6132813 0.08984375 0.6132813 0.09765625 0.6054688 0.09765625 0.6132813 0.08984375 0.6210938 0.08984375 0.6210938 0.09765625 0.6289063 0.08984375 0.6289063 0.09765625 0.6210938 0.09765625 0.6367188 0.08984375 0.6367188 0.09765625 0.6289063 0.09765625 0.6367188 0.08984375 0.6445313 0.08984375 0.6445313 0.09765625 0.6445313 0.08984375 0.6523438 0.08984375 0.6523438 0.09765625 0.6523438 0.08984375 0.6601563 0.08984375 0.6601563 0.09765625 0.6679688 0.08984375 0.6679688 0.09765625 0.6601563 0.09765625 0.6679688 0.08984375 0.6757813 0.08984375 0.6757813 0.09765625 0.6757813 0.08984375 0.6835938 0.08984375 0.6835938 0.09765625 0.6914063 0.08984375 0.6914063 0.09765625 0.6835938 0.09765625 0.6992188 0.08984375 0.6992188 0.09765625 0.6914063 0.09765625 0.6992188 0.08984375 0.7070313 0.08984375 0.7070313 0.09765625 0.6523438 0.09765625 0.6601563 0.09854209 0.6914063 0.1367187 0.6601563 0.09854209 0.6679148 0.1013388 0.6914063 0.1367187 0.6679148 0.1013388 0.6747011 0.10494 0.6914063 0.1367187 0.6747011 0.10494 0.6806643 0.1098146 0.6914063 0.1367187 0.6806643 0.1098146 0.685575 0.1157753 0.6914063 0.1367187 0.685575 0.1157753 0.6892446 0.1225928 0.6914063 0.1367187 0.6892446 0.1225928 0.6909218 0.1300054 0.6914063 0.1367187 0.6914063 0.1367187 0.6132813 0.1367187 0.6523438 0.09765625 0.6132813 0.1367187 0.6142691 0.1299437 0.6165477 0.1225457 0.6165477 0.1225457 0.6205933 0.1157407 0.6132813 0.1367187 0.6205933 0.1157407 0.6254902 0.1097899 0.6132813 0.1367187 0.6254902 0.1097899 0.6314379 0.1049224 0.6132813 0.1367187 0.6314379 0.1049224 0.6382079 0.101325 0.6132813 0.1367187 0.6382079 0.101325 0.6445313 0.09873586 0.6132813 0.1367187 0.6210938 0.08984375 0.6210938 0.05078125 0.6289063 0.05078125 0.6757813 0.05078125 0.6757813 0.04296875 0.6835938 0.04296875 0.6523438 0.08984375 0.6523438 0.05078125 0.6601563 0.05078125 0.6445313 0.04296875 0.6523438 0.04296875 0.6523438 0.05078125 0.5976563 0.08984375 0.5976563 0.09765625 0.5898438 0.09765625 0.6015625 0.15625 0.6015625 0.2109375 0.59375 0.203125 0.6601563 0.04296875 0.6679688 0.04296875 0.6679688 0.05078125 0.6328125 0.171875 0.6328125 0.1953125 0.6015625 0.2109375 0.7070313 0.05078125 0.7070313 0.04296875 0.7148438 0.04296875 0.6914063 0.04296875 0.6992188 0.04296875 0.6992188 0.05078125 0.6367188 0.08984375 0.6367188 0.05078125 0.6445313 0.05078125 0.6679536 0.03945618 0.6601563 0.04235351 0.6914063 0.00390625 0.6601563 0.04235351 0.6523438 0.04296875 0.6914063 0.00390625 0.6523438 0.04296875 0.6445313 0.04219973 0.6132813 0.00390625 0.6445313 0.04219973 0.6380147 0.03946441 0.6132813 0.00390625 0.6380147 0.03946441 0.6311754 0.03578418 0.6132813 0.00390625 0.6311754 0.03578418 0.6251654 0.03080129 0.6132813 0.00390625 0.6251654 0.03080129 0.620215 0.02470719 0.6132813 0.00390625 0.620215 0.02470719 0.6159337 0.01773637 0.6132813 0.00390625 0.6159337 0.01773637 0.6140136 0.01015651 0.6132813 0.00390625 0.6132813 0.00390625 0.6914063 0.00390625 0.6523438 0.04296875 0.6914063 0.00390625 0.6910508 0.01015782 0.6893759 0.01772797 0.6856948 0.02469295 0.6914063 0.00390625 0.6893759 0.01772797 0.6856948 0.02469295 0.6807643 0.03078502 0.6914063 0.00390625 0.6807643 0.03078502 0.6747738 0.03576993 0.6914063 0.00390625 0.6289063 0.04296875 0.6367188 0.04296875 0.6367188 0.05078125 0.6132813 0.2265625 0.6328125 0.1953125 0.671875 0.1953125 0.5898438 0.05078125 0.5859375 0.05078125 0.5859375 0.04296875 0.6132813 0.08984375 0.6132813 0.05078125 0.6210938 0.05078125 0.6210938 0.04296875 0.6289063 0.04296875 0.6289063 0.05078125 0.6367188 0.05078125 0.6367188 0.04296875 0.6445313 0.04296875 0.6523438 0.04296875 0.6601563 0.04296875 0.6601563 0.05078125 0.6679688 0.05078125 0.6679688 0.04296875 0.6757813 0.04296875 0.6835938 0.04296875 0.6914063 0.04296875 0.6914063 0.05078125 0.6992188 0.05078125 0.6992188 0.04296875 0.7070313 0.04296875 0.5898438 0.04296875 0.5976563 0.04296875 0.5976563 0.05078125 0.71875 0.04296875 0.71875 0.05078125 0.7148438 0.05078125 0.6914063 0 0.6914063 0.00390625 0.6132813 0.00390625 0.671875 0.171875 0.671875 0.1953125 0.6328125 0.1953125 0.6289063 0.08984375 0.6289063 0.05078125 0.6367188 0.05078125 0.6445313 0.08984375 0.6445313 0.05078125 0.6523438 0.05078125 0.6914063 0.08984375 0.6914063 0.05078125 0.6992188 0.05078125 0.6054688 0.08984375 0.5976563 0.08984375 0.5976563 0.05078125 0.6601563 0.08984375 0.6601563 0.05078125 0.6679688 0.05078125 0.7070313 0.08984375 0.7148438 0.08984375 0.7148438 0.09765625 0.7148438 0.08984375 0.71875 0.08984375 0.71875 0.09765625 0.5898438 0.08984375 0.5898438 0.09765625 0.5859375 0.09765625 0.6914063 0.140625 0.6132813 0.140625 0.6132813 0.1367187 0.703125 0.15625 0.7109375 0.1640625 0.7109375 0.203125 0.671875 0.171875 0.6328125 0.171875 0.6132813 0.140625 0.6679688 0.08984375 0.6679688 0.05078125 0.6757813 0.05078125 0.703125 0.15625 0.703125 0.2109375 0.671875 0.1953125 0.6757813 0.08984375 0.6757813 0.05078125 0.6835938 0.05078125 0.6054688 0.04296875 0.6132813 0.04296875 0.6132813 0.05078125 0.5976563 0.05078125 0.5976563 0.04296875 0.6054688 0.04296875 0.6992188 0.08984375 0.6992188 0.05078125 0.7070313 0.05078125 0.6132813 0.08984375 0.6054688 0.08984375 0.6054688 0.05078125 0.71875 0.05078125 0.71875 0.08984375 0.7070313 0.05078125 0.71875 0.08984375 0.7148438 0.08984375 0.7070313 0.08984375 0.7070313 0.05078125 0.71875 0.08984375 0.7070313 0.08984375 0.5898438 0.05078125 0.5976563 0.05078125 0.5859375 0.05078125 0.5976563 0.05078125 0.5976563 0.08984375 0.5859375 0.05078125 0.5976563 0.08984375 0.5898438 0.0859375 0.5859375 0.08984375 + + + + + + + + + + + + + + +

    22 0 0 54 1 1 24 2 2 34 3 3 37 4 4 36 5 5 0 6 6 3 7 7 1 8 8 4 9 9 3 7 10 2 10 11 4 9 12 7 11 13 5 12 14 8 13 15 7 11 16 6 14 17 10 15 18 9 16 19 8 13 20 10 15 21 13 17 22 11 18 23 12 19 24 15 20 25 13 17 26 14 21 27 17 22 28 15 20 29 18 23 30 17 22 31 16 24 32 18 23 33 21 25 34 19 26 35 20 27 36 23 28 37 21 25 38 24 29 39 23 28 40 22 30 41 26 31 42 25 32 43 24 29 44 26 31 45 29 33 46 27 34 47 13 35 48 15 36 49 71 37 50 6 38 51 38 38 52 8 39 53 50 40 54 53 41 55 52 42 56 14 43 57 46 44 58 16 45 59 43 46 60 44 47 61 42 48 62 0 6 63 71 49 64 68 50 65 70 51 66 73 52 67 69 51 68 47 53 69 48 54 70 46 55 71 75 56 72 76 57 73 70 58 74 58 59 75 61 60 76 63 61 77 55 62 78 56 63 79 54 64 80 10 65 81 42 66 82 12 67 83 51 68 84 49 69 85 61 70 86 39 71 87 40 72 88 38 73 89 76 74 90 78 75 91 60 76 92 72 77 93 76 78 94 77 79 95 4 80 96 36 81 97 6 82 98 37 4 99 38 73 100 36 5 101 40 72 102 43 46 103 42 48 104 45 83 105 46 55 106 44 47 107 48 54 108 51 84 109 50 40 110 53 41 111 54 64 112 52 42 113 56 63 114 59 85 115 58 59 116 77 86 117 30 87 118 72 88 119 60 89 120 63 90 121 61 91 122 60 92 123 77 93 124 76 94 125 74 95 126 79 95 127 75 95 128 8 96 129 40 97 130 10 98 131 12 99 132 44 100 133 14 101 134 24 102 135 56 102 136 26 102 137 2 103 138 30 104 139 32 105 140 16 106 141 48 107 142 18 108 143 28 109 144 65 110 145 29 33 146 67 111 147 64 112 148 65 113 149 68 114 150 70 115 151 69 116 152 64 117 153 71 118 154 65 119 155 64 120 156 62 121 157 60 120 158 74 122 159 70 123 160 64 124 161 18 125 162 50 126 163 20 127 164 64 128 165 78 129 166 74 130 167 20 131 168 52 131 169 22 131 170 33 132 171 34 3 172 32 133 173 30 87 174 33 132 175 32 133 176 26 134 177 58 135 178 28 136 179 4 137 180 32 138 181 34 139 182 58 140 183 63 141 184 62 142 185 69 143 186 73 144 187 0 145 188 22 0 189 52 146 190 54 1 191 34 3 192 35 147 193 37 4 194 0 6 195 2 10 196 3 7 197 4 9 198 5 12 199 3 7 200 4 9 201 6 14 202 7 11 203 8 13 204 9 16 205 7 11 206 10 15 207 11 18 208 9 16 209 10 15 210 12 19 211 13 17 212 12 19 213 14 21 214 15 20 215 14 21 216 16 24 217 17 22 218 18 23 219 19 26 220 17 22 221 18 23 222 20 27 223 21 25 224 20 27 225 22 30 226 23 28 227 24 29 228 25 32 229 23 28 230 26 31 231 27 34 232 25 32 233 26 31 234 28 109 235 29 33 236 15 36 237 17 148 238 65 149 239 17 148 240 19 150 241 65 149 242 19 150 243 21 151 244 65 149 245 21 151 246 23 152 247 65 149 248 23 152 249 25 153 250 65 149 251 25 153 252 27 154 253 65 149 254 27 154 255 29 155 256 65 149 257 65 149 258 71 37 259 15 36 260 71 37 261 1 156 262 3 157 263 3 157 264 5 158 265 71 37 266 5 158 267 7 35 268 71 37 269 7 35 270 9 35 271 71 37 272 9 35 273 11 35 274 71 37 275 11 35 276 13 35 277 71 37 278 6 38 279 36 159 280 38 38 281 50 40 282 51 84 283 53 41 284 14 43 285 44 160 286 46 44 287 43 46 288 45 83 289 44 47 290 0 6 291 1 8 292 71 49 293 70 51 294 76 51 295 73 52 296 47 53 297 49 161 298 48 54 299 75 56 300 79 162 301 76 57 302 58 59 303 59 85 304 61 60 305 55 62 306 57 163 307 56 63 308 10 65 309 40 164 310 42 66 311 49 69 312 47 165 313 61 70 314 47 165 315 45 166 316 61 70 317 45 166 318 43 167 319 77 168 320 43 167 321 41 169 322 77 168 323 41 169 324 39 170 325 77 168 326 39 170 327 37 171 328 77 168 329 37 171 330 35 172 331 77 168 332 35 172 333 33 170 334 77 168 335 33 170 336 31 170 337 77 168 338 77 168 339 61 70 340 45 166 341 61 70 342 59 173 343 57 174 344 55 170 345 61 70 346 57 174 347 55 170 348 53 175 349 61 70 350 53 175 351 51 68 352 61 70 353 39 71 354 41 176 355 40 72 356 76 74 357 79 177 358 78 75 359 72 77 360 73 178 361 76 78 362 4 80 363 34 179 364 36 81 365 37 4 366 39 71 367 38 73 368 40 72 369 41 176 370 43 46 371 45 83 372 47 53 373 46 55 374 48 54 375 49 161 376 51 84 377 53 41 378 55 62 379 54 64 380 56 63 381 57 163 382 59 85 383 77 86 384 31 180 385 30 87 386 60 89 387 62 181 388 63 90 389 60 92 390 61 182 391 77 93 392 74 95 393 78 183 394 79 95 395 8 96 396 38 184 397 40 97 398 12 99 399 42 185 400 44 100 401 24 102 402 54 102 403 56 102 404 2 103 405 0 186 406 30 104 407 16 106 408 46 187 409 48 107 410 28 109 411 67 188 412 65 110 413 67 111 414 66 189 415 64 112 416 68 114 417 71 190 418 70 115 419 64 117 420 70 191 421 71 118 422 64 120 423 66 192 424 62 121 425 74 122 426 75 193 427 70 123 428 18 125 429 48 194 430 50 126 431 64 128 432 60 195 433 78 129 434 20 131 435 50 131 436 52 131 437 33 132 438 35 147 439 34 3 440 30 87 441 31 180 442 33 132 443 26 134 444 56 196 445 58 135 446 4 137 447 2 197 448 32 138 449 62 142 450 66 198 451 58 140 452 66 198 453 67 199 454 28 200 455 58 140 456 66 198 457 28 200 458 72 201 459 30 202 460 73 144 461 30 202 462 0 145 463 73 144 464 0 145 465 68 203 466 69 143 467

    +
    +
    +
    + + + + 0 2.25 0.1901126 -1.52002e-7 2.440548 0.1025 4.08359e-7 1.075447 0.1025 0 0.1136917 0.1025 0 3.469546 0.1025 0 2.25 -0.1901126 -1.52002e-7 2.440548 -0.1025 4.08359e-7 1.075447 -0.1025 0 0.1136917 -0.1025 0 3.469546 -0.1025 3.09736e-7 0.7086623 0.1025 3.09736e-7 0.7086623 -0.1025 1.78937e-7 0.4805372 -0.1025 1.78937e-7 0.4805372 0.1025 0 3.085717 0.1025 0 2.824327 0.1025 0 3.6 0.28 0 3.085717 -0.1025 0 2.824327 -0.1025 0 3.6 -0.28 -1.91969e-7 2.312293 0.28 0 2.956147 0.28 -0.15 3.372954 0.04624998 -0.15 3.181039 0.04624998 -1.91969e-7 2.312293 -0.28 0 2.956147 -0.28 -0.1500001 2.535223 0.04624998 -0.15 3.372954 -0.04624998 -0.1500001 2.727113 0.04624998 -0.15 3.181039 -0.04624998 -0.1499996 0.9852741 0.04624998 -0.1500001 2.535223 -0.04624998 -0.1500001 2.727113 -0.04624998 -0.1499996 0.8018819 0.04624998 -0.1499999 0.2061649 0.04624998 -0.1499996 0.9852741 -0.04624998 -0.1499998 0.3895877 0.04624998 -0.1499996 0.8018819 -0.04624998 -0.0975449 1.259607 0.2252249 -0.1499999 0.2061649 -0.04624998 -0.1499998 0.3895877 -0.04624998 -0.1913415 1.28806 0.2252249 -0.0975449 1.259607 -0.2252249 -0.1913415 1.28806 -0.2252249 -0.2777847 1.334266 -0.2252249 -0.3535534 1.396447 -0.2252249 -0.4157344 1.472215 -0.2252249 -0.4619392 1.558658 -0.2252249 -0.4903927 1.652455 -0.2252249 -0.5000002 1.75 -0.2252249 -0.4903924 1.847545 -0.2252249 -0.4619392 1.941342 -0.2252249 -0.4157344 2.027785 -0.2252249 -0.3535533 2.103554 -0.2252249 -0.2777847 2.165735 -0.2252249 -0.1913415 2.21194 -0.2252249 -0.0975449 2.240393 -0.2252249 -2.5 0 -0.3 -2.5 3.6 -0.3 -0.1076551 2.291218 -0.3 -0.2111718 2.259816 -0.3 -0.1076541 1.208783 -0.3 -0.3065744 2.208822 -0.3 -0.3901959 2.140196 -0.3 -0.4588215 2.056575 -0.3 -0.5098147 1.961173 -0.3 -0.5412172 1.857655 -0.3 -0.5518206 1.75 -0.3 -0.5098149 1.538828 -0.3 -0.5412175 1.642346 -0.3 -0.4588212 1.443425 -0.3 -0.3901962 1.359805 -0.3 -0.3065744 1.291179 -0.3 -0.2111722 1.240185 -0.3 -0.2777847 1.334266 0.2252249 -0.3535534 1.396447 0.2252249 -0.4157344 1.472215 0.2252249 -0.4619392 1.558658 0.2252249 -0.4903927 1.652455 0.2252249 -0.5000002 1.75 0.2252249 -0.4903924 1.847545 0.2252249 -0.4619392 1.941342 0.2252249 -0.4157344 2.027785 0.2252249 -0.3535533 2.103554 0.2252249 -0.2777847 2.165735 0.2252249 -0.1913415 2.21194 0.2252249 -0.0975449 2.240393 0.2252249 -2.5 0 0.3 -2.5 3.6 0.3 -0.1076551 2.291218 0.3 -0.2111718 2.259816 0.3 -0.1076541 1.208783 0.3 -0.3065744 2.208822 0.3 -0.3901959 2.140196 0.3 -0.4588215 2.056575 0.3 -0.5098147 1.961173 0.3 -0.5412172 1.857655 0.3 -0.5518206 1.75 0.3 -0.5098149 1.538828 0.3 -0.5412175 1.642346 0.3 -0.4588212 1.443425 0.3 -0.3901962 1.359805 0.3 -0.3065744 1.291179 0.3 -0.2111722 1.240185 0.3 -0.01996612 2.248034 0.2252249 4.69387e-7 1.25 0.1901128 -0.01996552 1.251966 0.2252249 -0.01996749 2.299854 0.3 5.01112e-7 1.187707 0.28 -0.01996672 1.200146 0.3 -0.01996612 2.248034 -0.2252249 4.69387e-7 1.25 -0.1901128 -0.01996552 1.251966 -0.2252249 -0.01996749 2.299854 -0.3 5.01112e-7 1.187707 -0.28 -0.01996672 1.200146 -0.3 -0.0199685 0 -0.3 0 0 -0.28 -0.0199685 3.6 -0.3 -0.0199685 0 0.3 0 0 0.28 -0.0199685 3.6 0.3 -0.7168543 1.601754 0.3 -0.7168543 1.601754 -0.3 -0.793989 1.532466 -0.3 -0.793989 1.532466 0.3 -0.800998 1.719646 0.29 -2.299443 1.727324 0.29 -2.299443 1.732078 0.29 -0.7895248 1.739647 0.29 -0.8395245 1.639647 0.29 -2.349443 1.632078 0.29 -2.349443 1.627324 0.29 -0.8509981 1.619646 0.29 -0.800998 1.719646 -0.29 -2.299443 1.727324 -0.29 -2.299443 1.732078 -0.29 -0.7895248 1.739647 -0.29 -0.8395245 1.639647 -0.29 -2.349443 1.632078 -0.29 -2.349443 1.627324 -0.29 -0.8509981 1.619646 -0.29 -0.8895249 1.539647 -0.29 -2.399442 1.532078 -0.29 -2.399442 1.527324 -0.29 -0.9009982 1.519646 -0.29 -0.1025001 1.065 -0.29 -0.2545286 1.101132 -0.29 -0.2464555 1.124981 -0.29 -0.1025001 1.068555 -0.29 -0.1525005 0.9685549 -0.29 -0.2964556 1.024982 -0.29 -0.3045286 1.001132 -0.29 -0.1525005 0.965 -0.29 -0.2024998 0.8685547 -0.29 -0.3464557 0.9249814 -0.29 -0.3545283 0.9011322 -0.29 -0.2024998 0.8650001 -0.29 -0.8895249 1.539647 0.29 -2.399442 1.532078 0.29 -2.399442 1.527324 0.29 -0.9009982 1.519646 0.29 -0.1025001 1.065 0.29 -0.2545286 1.101132 0.29 -0.2464555 1.124981 0.29 -0.1025001 1.068555 0.29 -0.1525005 0.9685549 0.29 -0.2964556 1.024982 0.29 -0.3045286 1.001132 0.29 -0.1525005 0.965 0.29 -0.8078106 1.704702 -0.3 -2.314443 1.717202 -0.3 -2.314443 1.742202 -0.3 -0.7828105 1.754702 -0.3 -0.6782872 1.636398 -0.3 -0.08750009 1.05 -0.3 -0.2625001 1.0875 -0.3 -0.2374999 1.1375 -0.3 -0.08750009 1.075 -0.3 -0.7554213 1.567111 -0.3 -0.8328103 1.654702 -0.3 -2.364443 1.642202 -0.3 -2.364443 1.617202 -0.3 -0.8578106 1.604702 -0.3 -0.1375005 0.975 -0.3 -0.2875 1.0375 -0.3 -0.3125001 0.9875 -0.3 -0.1375005 0.9500001 -0.3 -0.8325563 1.497822 -0.3 -0.8828107 1.554702 -0.3 -2.414442 1.542202 -0.3 -2.414442 1.517202 -0.3 -0.9078107 1.504702 -0.3 -0.8711233 1.463179 -0.3 -0.1874998 0.8750001 -0.3 -0.3375002 0.9375 -0.3 -0.3624998 0.8874998 -0.3 -0.1874998 0.85 -0.3 -0.09874212 2.536093 -0.29 -0.2565256 2.502283 -0.29 -0.8027049 1.884098 -0.29 -2.3032 1.871648 -0.29 -2.3032 1.868949 -0.29 -0.7878426 1.856582 -0.29 -0.2442126 2.471882 -0.29 -0.09874206 2.532495 -0.29 -0.148742 2.632494 -0.29 -0.2942119 2.571882 -0.29 -0.8378435 1.956581 -0.29 -2.3532 1.968949 -0.29 -2.3532 1.971648 -0.29 -0.8527053 1.984098 -0.29 -0.3065256 2.602283 -0.29 -0.148742 2.636093 -0.29 -0.1987422 2.732494 -0.29 -0.3442123 2.671883 -0.29 -0.8878433 2.056582 -0.29 -2.4032 2.068949 -0.29 -2.4032 2.071649 -0.29 -0.902705 2.084099 -0.29 -0.3565258 2.702283 -0.29 -0.1987422 2.736094 -0.29 -0.2024998 0.8685547 0.29 -0.3464557 0.9249814 0.29 -0.3545283 0.9011322 0.29 -0.2024998 0.8650001 0.29 -0.8078106 1.704702 0.3 -2.314443 1.717202 0.3 -2.314443 1.742202 0.3 -0.7828105 1.754702 0.3 -0.6782872 1.636398 0.3 -0.08750009 1.05 0.3 -0.2625001 1.0875 0.3 -0.2374999 1.1375 0.3 -0.08750009 1.075 0.3 -0.7554213 1.567111 0.3 -0.8328103 1.654702 0.3 -2.364443 1.642202 0.3 -2.364443 1.617202 0.3 -0.8578106 1.604702 0.3 -0.1375005 0.975 0.3 -0.2875 1.0375 0.3 -0.3125001 0.9875 0.3 -0.1375005 0.9500001 0.3 -0.08750009 2.55 -0.3 -0.2625001 2.5125 -0.3 -0.8078107 1.895298 -0.3 -2.314443 1.882797 -0.3 -2.314443 1.857798 -0.3 -0.7828105 1.845298 -0.3 -0.2375006 2.4625 -0.3 -0.08749985 2.525 -0.3 -0.1374999 2.625 -0.3 -0.2874999 2.5625 -0.3 -0.8328113 1.945297 -0.3 -2.364443 1.957798 -0.3 -2.364443 1.982798 -0.3 -0.8578112 1.995298 -0.3 -0.3125 2.6125 -0.3 -0.1374999 2.65 -0.3 -0.1875001 2.725 -0.3 -0.3375003 2.6625 -0.3 -0.8828111 2.045298 -0.3 -2.414442 2.057798 -0.3 -2.414443 2.082798 -0.3 -0.9078108 2.095299 -0.3 -0.3625002 2.7125 -0.3 -0.1875001 2.75 -0.3 -0.8325563 1.497822 0.3 -0.8828107 1.554702 0.3 -2.414442 1.542202 0.3 -2.414442 1.517202 0.3 -0.9078107 1.504702 0.3 -0.8711233 1.463179 0.3 -0.1874998 0.8750001 0.3 -0.3375002 0.9375 0.3 -0.3624998 0.8874998 0.3 -0.1874998 0.85 0.3 -0.09874212 2.536093 0.29 -0.2565256 2.502283 0.29 -0.8027049 1.884098 0.29 -2.3032 1.871648 0.29 -2.3032 1.868949 0.29 -0.7878426 1.856582 0.29 -0.2442126 2.471882 0.29 -0.09874206 2.532495 0.29 -0.148742 2.632494 0.29 -0.2942119 2.571882 0.29 -0.8378435 1.956581 0.29 -2.3532 1.968949 0.29 -2.3532 1.971648 0.29 -0.8527053 1.984098 0.29 -0.3065256 2.602283 0.29 -0.148742 2.636093 0.29 -0.1987422 2.732494 0.29 -0.3442123 2.671883 0.29 -0.8878433 2.056582 0.29 -2.4032 2.068949 0.29 -2.4032 2.071649 0.29 -0.902705 2.084099 0.29 -0.3565258 2.702283 0.29 -0.1987422 2.736094 0.29 -0.08750009 2.55 0.3 -0.2625001 2.5125 0.3 -0.8078107 1.895298 0.3 -2.314443 1.882797 0.3 -2.314443 1.857798 0.3 -0.7828105 1.845298 0.3 -0.2375006 2.4625 0.3 -0.08749985 2.525 0.3 -0.1374999 2.625 0.3 -0.2874999 2.5625 0.3 -0.8328113 1.945297 0.3 -2.364443 1.957798 0.3 -2.364443 1.982798 0.3 -0.8578112 1.995298 0.3 -0.3125 2.6125 0.3 -0.1374999 2.65 0.3 -0.1875001 2.725 0.3 -0.3375003 2.6625 0.3 -0.8828111 2.045298 0.3 -2.414442 2.057798 0.3 -2.414443 2.082798 0.3 -0.9078108 2.095299 0.3 -0.3625002 2.7125 0.3 -0.1875001 2.75 0.3 + + + + + + + + + + 0.3145374 0.7593539 0.5696033 0.4566342 0.6834017 0.5696027 0.3145368 0.7593542 0.5696033 0.6834027 0.4566314 0.5696039 0.7593544 0.3145365 0.5696032 0.6834021 0.4566323 0.5696039 0 0 1 0 0 1 0 0 1 0.3511235 -1.67326e-7 -0.9363292 0.3511235 -1.62951e-7 -0.9363292 0.3511235 -1.76222e-7 -0.9363293 0.4156916 0.3672803 0.8320491 0.4156867 0.367279 0.8320521 0.415706 0.3672839 0.8320403 0.8819228 -0.4713941 0 0.8819228 -0.4713941 0 -1 0 0 0.3511235 0 -0.9363293 0.3511235 0 -0.9363293 0.3511235 0 -0.9363292 0.3511237 0 0.9363291 0.3511236 0 0.9363291 0.3511238 0 0.9363291 0 -1 0 0.002777755 -0.5541474 0.832414 0.536346 0.8439983 0 0.536346 0.8439983 0 0.536346 0.8439982 0 0.3511235 0 0.9363292 0.3511235 0 0.9363292 0.3511235 0 0.9363293 0 0 1 0 1.92734e-6 1 0 1.99867e-6 1 0.5811843 0.5811857 0.5696034 0.4566344 0.6834017 0.5696026 0.5811844 0.5811857 0.5696033 1 -5.50439e-7 -2.50955e-7 1 -4.68813e-7 0 1 -2.29155e-7 0 0.3511235 0 0.9363293 0.3511235 0 0.9363293 0.3511235 -1.26799e-7 0.9363293 0.8219191 -1.15571e-6 0.5696045 0.806126 -0.1603518 0.5696036 0.821919 -6.2664e-7 0.5696045 0.5337434 0.8456465 0 0.5337436 0.8456465 0 0.5337432 0.8456466 0 0.3511235 -1.67326e-7 0.9363292 0.3511235 -1.62951e-7 0.9363292 0.3511235 -1.58473e-7 0.9363292 0 0 -1 0 0 -1 0 0 -1 0.1603493 0.8061268 -0.5696032 0.3145368 0.7593542 -0.5696033 0.3145374 0.7593539 -0.5696034 0.4566342 0.6834017 -0.5696029 0.4566346 0.6834017 -0.5696026 0.5811844 0.5811856 -0.5696035 0.6834021 0.4566323 -0.5696039 0.6834027 0.4566314 -0.5696039 0.7593544 0.3145365 -0.569603 0.7593539 0.3145374 -0.5696034 0.8061259 0.1603522 -0.5696036 0.8061262 0.1603509 -0.5696037 0.8219191 -1.18673e-6 -0.5696043 0.806126 -0.1603518 -0.5696036 0.8061254 -0.1603525 -0.5696043 0.7593542 -0.3145361 -0.5696039 0.7593543 -0.3145356 -0.5696038 0.6834028 -0.4566321 -0.5696032 0.6834021 -0.4566323 -0.5696039 0.5811858 -0.5811836 -0.569604 0.5811854 -0.5811836 -0.5696045 0.4566357 -0.6833997 -0.569604 0.4566341 -0.6834009 -0.569604 0.3145351 -0.7593545 -0.5696038 0.3145343 -0.7593545 -0.5696043 0.160346 -0.8061259 -0.5696054 0 0 1 0.7730125 0.6343908 0 0.7730117 0.6343917 0 0.7730116 0.6343919 0 1 5.09293e-7 0 1 5.09294e-7 0 0 1 0 1 -2.43718e-7 0 1 -2.43718e-7 0 1 -2.43718e-7 0 0.9569385 0.2902909 0 0.9951844 -0.09802114 0 0.9951844 -0.09802138 0 0.9951843 -0.09802138 0 0.08068132 -0.8192392 -0.5677479 0.08068323 -0.8192395 -0.5677472 1 -5.73751e-7 1.59682e-7 1 -2.29156e-7 0 1 -5.73752e-7 -1.59682e-7 0.6343905 0.7730128 0 0.0980128 -0.9951853 -9.00984e-7 0.09801453 -0.995185 -3.33873e-6 0.09801298 -0.9951852 -7.31142e-7 0.5811856 -0.5811837 0.5696042 0.6834022 -0.4566323 0.5696038 0.6834028 -0.456632 0.5696033 0.5546735 0 0.8320681 0.5546838 0 0.8320612 0.5546501 0 0.8320838 0.7593541 -0.3145361 0.5696038 0.7593544 -0.3145357 0.5696037 1 0 0 1 0 0 1 0 0 0.2902861 -0.9569399 0 0.2902861 -0.9569399 0 1 -1.62506e-7 0 1 -1.62506e-7 0 1 -1.62506e-7 0 0 0 1 0 2.19782e-7 1 0 0 1 0.9569391 -0.2902891 0 0.9569392 -0.2902885 0 0.9569392 -0.2902884 0 0.5247786 0.8512388 0 0.5247787 0.8512387 0 0.7076854 -1.05085e-6 0.7065278 0.7076636 -3.16629e-7 0.7065496 0.7076632 -3.05197e-7 0.7065499 0.7076845 0 0.7065287 0.7076849 0 0.7065283 0.7076739 5.63803e-7 0.7065392 0.734586 0.5576849 0.3864855 0.7345733 0.5576928 0.3864982 0.7345888 0.5576832 0.3864827 0.7345755 -0.5576897 0.3864986 0.7345896 -0.5576811 0.3864841 0.7345928 -0.5576792 0.3864808 0.1603491 0.8061268 0.5696033 0.08068722 0.8192399 0.5677462 0.0806868 0.81924 0.5677458 -0.4156923 -0.3672716 0.8320526 -0.4156948 -0.3672745 0.8320501 -0.4156946 -0.3672742 0.8320503 1 2.50967e-7 0 1 1.40723e-6 0 1 2.50964e-7 0 0 0 -1 0 1.4878e-7 -1 0 0 -1 -0.247269 -0.5950805 0.7646812 -0.2059103 -0.523135 0.827001 -0.2031505 -0.5182729 0.8307365 0.08068764 0.8192399 -0.5677461 0.08068782 0.8192401 -0.5677457 0.7345755 -0.5576897 -0.3864986 0.7345896 -0.5576811 -0.3864841 0.7345715 -0.557692 -0.3865026 0.7345736 0.5576925 -0.3864981 0.7345868 0.5576841 -0.386485 0.7345898 0.5576822 -0.3864821 0.7076739 5.53942e-7 -0.7065393 0.7076845 0 -0.7065287 0.7076632 0 -0.70655 0.7076854 -1.05085e-6 -0.7065278 0.7076636 -3.16629e-7 -0.7065496 0.7076857 -1.0599e-6 -0.7065275 0.1284115 0.5448601 0.8286362 0.1369335 0.6363362 0.7591611 0.1276369 0.5370348 0.833848 -0.247272 -0.5950862 0.7646757 -0.2059102 -0.5231365 0.8270002 -0.2031501 -0.518274 0.8307358 0.4713991 -0.88192 0 0.4713975 -0.8819208 0 0.4713972 -0.881921 0 0.002777814 -0.5541442 0.8324162 -0.5547027 0 0.8320487 -0.5546967 0 0.8320526 -0.5547119 0 0.8320425 -0.4156932 -0.3672752 0.8320505 -0.4156932 -0.3672751 0.8320506 -0.4156969 -0.3672764 0.8320482 0.005794823 0.6984466 -0.7156388 0.5546735 0 -0.8320681 0.5546838 0 -0.8320612 0.5546907 0 -0.8320566 0.002777576 -0.5541462 -0.8324148 0.415695 0.3672761 0.8320492 0.4156937 0.3672749 0.8320505 0.4156946 0.3672727 0.832051 0.1369335 0.6363362 -0.7591612 0.1284115 0.5448599 -0.8286364 0.1276369 0.5370345 -0.8338482 -0.247272 -0.5950862 -0.7646757 -0.2059102 -0.5231365 -0.8270002 -0.2496667 -0.5991954 -0.7606782 -0.5547027 0 -0.8320487 -0.5546967 0 -0.8320526 -0.5546945 0 -0.8320541 0.6343934 -0.7730104 0 0.6343922 -0.7730114 0 0.634392 -0.7730116 0 0.002777814 -0.5541439 -0.8324164 0.5547032 -3.09999e-6 -0.8320484 0.5546957 -4.46819e-6 -0.8320533 0.5546907 -5.3726e-6 -0.8320566 0.005794405 0.6984342 -0.7156509 0.4156919 0.3672707 0.8320533 0.4156947 0.3672753 0.8320499 0.4156946 0.3672752 0.8320499 -0.247269 -0.5950805 -0.7646812 -0.2059103 -0.523135 -0.827001 -0.2496635 -0.5991894 -0.760684 0.1369325 0.6363381 -0.7591598 0.1284115 0.5448601 -0.8286363 0.1276369 0.5370345 -0.8338483 -0.5546988 6.57176e-7 -0.8320513 -0.5546994 1.07511e-6 -0.8320509 -0.5546998 1.23986e-6 -0.8320507 -0.4156906 -0.3672719 0.8320533 -0.4156932 -0.3672719 0.8320521 -0.4156928 -0.3672719 0.8320522 0.002777755 -0.5541473 -0.8324141 0.5546996 0 -0.8320508 0.5546971 0 -0.8320525 0.5546954 0 -0.8320535 0.005794823 0.6984468 -0.7156386 0.09801656 0.9951848 0 0.09801757 0.9951848 0 0.09801739 0.9951848 0 -0.2472648 -0.595077 -0.7646852 -0.2059086 -0.5231367 -0.8270004 -0.2496592 -0.5991858 -0.7606884 0.1369304 0.6363315 -0.7591655 0.1284093 0.5448591 -0.8286373 0.1276347 0.5370339 -0.833849 -0.5547013 0 -0.8320496 -0.5546998 0 -0.8320506 -0.5546993 0 -0.8320509 0 0 -1 0 -3.95226e-7 -1 0 0 -1 0 -1.23219e-7 -1 0 -2.74687e-7 -1 0 0 -1 0 4.35463e-7 -1 0 2.38063e-7 -1 0 5.43911e-7 -1 0 0 -1 0 0 -1 0 0 -1 0.5547032 -3.09999e-6 0.8320484 0.5546957 -4.46819e-6 0.8320533 0.5547203 0 0.832037 0.002845048 0.55524 0.8316853 0.1392566 -0.6498728 -0.7471767 0.1392546 -0.6498692 -0.7471802 0.1392567 -0.649873 -0.7471765 0.4980677 -0.4400513 -0.7471837 0.498074 -0.4400577 -0.7471758 0.4980676 -0.4400511 -0.7471838 0.005514204 -0.6645976 -0.7471811 0.005514323 -0.6645982 -0.7471806 0.005514323 -0.6645982 -0.7471806 0.6646261 0 -0.7471762 0.6646263 0 -0.7471761 0.6646257 0 -0.7471765 0.005423843 0.6645983 -0.7471812 0.005423784 0.664599 -0.7471805 0.005423843 0.6645983 -0.7471812 -0.498071 0.4400544 -0.7471797 -0.4980723 0.4400577 -0.7471768 -0.498071 0.4400543 -0.7471797 -0.2556239 0.613499 -0.7471783 -0.2556251 0.6134998 -0.7471773 -0.2556252 0.6134999 -0.7471771 -0.6646295 -1.07835e-5 -0.7471731 -0.6646242 -8.11875e-6 -0.7471779 -0.6646425 -1.72009e-5 -0.7471616 -0.2556227 0.6135003 -0.7471776 -0.2556253 0.6135003 -0.7471768 -0.2556254 0.6135003 -0.7471767 -0.4980725 0.4400578 -0.7471767 -0.4980718 0.4400575 -0.7471774 -0.4980725 0.4400578 -0.7471767 0.00542438 0.6646025 -0.7471775 0.005423963 0.6645963 -0.7471829 0.00542438 0.6646025 -0.7471775 0.6646173 0 -0.747184 0.6646137 0 -0.7471872 0.005514204 -0.6645995 -0.7471795 0.005514144 -0.6645969 -0.7471818 0.4980665 -0.4400533 -0.7471834 0.498072 -0.4400562 -0.747178 0.4980664 -0.4400532 -0.7471834 0.1392568 -0.6498669 -0.7471818 0.1392573 -0.6498682 -0.7471805 0.1392567 -0.6498668 -0.7471818 -0.6646494 0 -0.7471554 -0.6646315 0 -0.7471714 -0.6646926 0 -0.7471171 -0.2556215 0.6135013 -0.7471773 -0.2556219 0.6135027 -0.7471759 -0.255622 0.6135028 -0.7471759 -0.498069 0.4400547 -0.7471808 -0.4980714 0.4400574 -0.7471776 -0.4980689 0.4400547 -0.7471809 0.005423843 0.6645988 -0.7471808 0.005423963 0.6645992 -0.7471803 0.005423843 0.6645988 -0.7471808 0.6646085 8.05506e-6 -0.7471919 0.6646179 1.14085e-5 -0.7471835 0.6645858 0 -0.747212 0.005514204 -0.6646032 -0.7471762 0.005514442 -0.6645985 -0.7471804 0.005514442 -0.6645984 -0.7471804 0.4980708 -0.4400545 -0.7471798 0.4980698 -0.4400572 -0.7471787 0.4980708 -0.4400544 -0.7471798 0.1392568 -0.6498672 -0.7471815 0.1392573 -0.6498679 -0.7471808 0.1392568 -0.6498672 -0.7471815 -0.664636 0 -0.7471674 -0.6646267 0 -0.7471757 -0.6646584 0 -0.7471475 0.3511238 0 -0.9363291 0.3511238 0 -0.9363291 0.3511238 0 -0.9363291 0 1 0 -4.24418e-7 1 0 -0.4156933 -0.3672716 -0.8320521 -0.4156937 -0.3672717 -0.8320518 -0.4156907 -0.3672713 -0.8320535 -0.5546988 6.57176e-7 0.8320513 -0.5546994 1.07511e-6 0.8320509 -0.5546977 0 0.832052 0.1284115 0.5448603 0.8286362 0.1369324 0.6363382 0.7591595 0.1276368 0.5370347 0.8338482 0.3511235 0 -0.9363292 0.3511235 0 -0.9363292 0.3511235 0 -0.9363293 0.5438629 -0.839174 0 0.5438632 -0.839174 0 0.5438625 -0.8391744 0 0.290286 0.9569401 0 0.2902842 0.9569406 0 0.2902837 0.9569406 0 1 -1.55289e-7 0 1 -1.55289e-7 0 1 -1.55289e-7 0 0.9951847 0.0980184 0 0.9951847 0.0980184 0 0.8061255 -0.1603525 0.5696043 0.160346 -0.8061259 0.5696054 0.08068132 -0.8192392 0.5677479 0.1603469 -0.8061251 0.5696064 0.3145343 -0.7593545 0.5696043 0.3145352 -0.7593545 0.5696038 0.456634 -0.6834008 0.569604 0.4566356 -0.6833998 0.569604 0.5811853 -0.5811838 0.5696044 -0.4156944 -0.3672736 -0.8320507 -0.4156946 -0.3672738 -0.8320505 -0.4156917 -0.3672717 -0.832053 0.8061259 0.1603522 0.5696038 0.7593539 0.3145374 0.5696034 0.8061261 0.1603509 0.5696038 0.8819222 0.471395 0 0.8819227 0.4713943 0 0.8819228 0.4713941 0 0 0 1 0 0 1 0 0 1 0.5278378 0.8493452 0 0.5278379 0.8493452 0 0.5278376 0.8493454 0 0.7730123 -0.6343912 0 0.7730115 -0.6343922 0 0.7730114 -0.6343923 0 0.4156943 0.3672724 -0.8320512 0.4156944 0.3672724 -0.8320512 0.4156937 0.3672749 -0.8320505 0.5414058 -0.8407614 0 0.5414066 -0.840761 0 0.5414096 -0.8407591 0 0.5184706 -0.8550956 0 0.5184705 -0.8550956 0 0.5184707 -0.8550955 0 0.002777576 -0.5541458 0.8324151 0.5152202 -0.8570579 0 0.5152201 -0.8570579 0 0.5152205 -0.8570577 0 0.1603484 0.806127 0.5696033 0.4156939 0.3672745 -0.8320506 0.4156939 0.3672746 -0.8320505 0.4156914 0.367271 -0.8320533 -0.4156951 -0.3672754 -0.8320496 -0.415695 -0.3672752 -0.8320497 -0.4156973 -0.3672767 -0.8320479 0.5546996 0 0.8320508 0.5546971 0 0.8320525 0.5547052 0 0.8320469 0.002845108 0.55524 0.8316854 0.4156961 0.3672786 -0.8320477 0.415696 0.3672785 -0.8320478 0.4157062 0.3672832 -0.8320406 -0.2472648 -0.595077 0.7646852 -0.2059086 -0.5231367 0.8270004 -0.203149 -0.518275 0.8307357 0.1284093 0.5448591 0.8286372 0.1369304 0.6363314 0.7591656 0.1276347 0.5370339 0.8338489 -0.5547013 0 0.8320496 -0.5546998 0 0.8320506 -0.5547036 0 0.8320481 0 0 1 0 -3.98899e-7 1 0 0 1 0 -2.74687e-7 1 0 -3.0899e-7 1 0 6.311e-7 1 0 2.38063e-7 1 0 2.67784e-7 1 0 0 1 0 0 1 0 0 1 0.1392566 -0.6498728 0.7471767 0.1392546 -0.6498692 0.7471802 0.1392544 -0.6498689 0.7471805 0.4980677 -0.4400513 0.7471837 0.498074 -0.4400577 0.7471758 0.4980741 -0.4400577 0.7471757 0.005514264 -0.6645989 0.7471801 0.005514204 -0.6645975 0.7471812 0.005514264 -0.6645989 0.7471801 0.6646263 0 0.7471761 0.6646261 0 0.7471762 0.6646257 0 0.7471765 0.005423843 0.6645983 0.7471812 0.005423784 0.664599 0.7471805 0.005423784 0.664599 0.7471805 -0.498071 0.4400544 0.7471797 -0.4980723 0.4400577 0.7471768 -0.4980723 0.4400578 0.7471768 -0.2556251 0.6134998 0.7471773 -0.2556236 0.6134998 0.7471777 -0.2556252 0.6134998 0.7471773 -0.6646244 -7.37247e-6 0.7471776 -0.6646298 -9.24683e-6 0.747173 -0.6646425 -1.37607e-5 0.7471616 -0.2556251 0.6135006 0.7471766 -0.2556226 0.613501 0.7471771 -0.2556253 0.6135006 0.7471765 -0.4980725 0.4400578 0.7471767 -0.4980718 0.4400575 0.7471774 -0.4980718 0.4400575 0.7471774 0.00542438 0.6646025 0.7471775 0.005423963 0.6645963 0.7471829 0.005423963 0.6645963 0.747183 0.664618 0 0.7471833 0.6646203 0 0.7471814 0.005514144 -0.6645976 0.7471812 0.005514204 -0.6645994 0.7471796 0.4980665 -0.4400533 0.7471834 0.498072 -0.4400562 0.747178 0.4980721 -0.4400563 0.7471779 0.1392568 -0.6498669 0.7471818 0.1392573 -0.6498682 0.7471805 0.1392574 -0.6498683 0.7471805 -0.6646316 0 0.7471713 -0.6646499 0 0.7471551 -0.6646937 0 0.747116 -0.2556218 0.613503 0.7471758 -0.2556213 0.6135019 0.7471769 -0.2556218 0.613503 0.7471757 -0.498069 0.4400547 0.7471808 -0.4980714 0.4400574 0.7471776 -0.4980714 0.4400575 0.7471776 0.005423843 0.6645988 0.7471808 0.005423963 0.6645992 0.7471803 0.005423963 0.6645992 0.7471803 0.6646192 1.09697e-5 0.7471823 0.6646127 7.74523e-6 0.7471881 0.6645972 0 0.7472019 0.005514442 -0.664599 0.7471799 0.005514204 -0.6646025 0.7471768 0.005514442 -0.664599 0.7471799 0.4980708 -0.4400545 0.7471798 0.4980698 -0.4400572 0.7471787 0.4980698 -0.4400572 0.7471787 0.1392568 -0.6498672 0.7471815 0.1392573 -0.6498679 0.7471808 0.1392573 -0.649868 0.7471807 -0.6646261 0 0.7471761 -0.6646356 0 0.7471677 -0.6646584 0 0.7471475 0.4713993 0.88192 0 0.4714007 0.8819192 0 0.471401 0.881919 0 1 -2.1347e-7 0 1 -2.1347e-7 0 1 -4.61982e-7 0 1 -5.07598e-7 -1.27249e-7 1 -5.07598e-7 1.27249e-7 1 -2.48619e-7 0 1 -2.27123e-7 0 1 -2.4862e-7 0 1 -1.26968e-7 0 0 0 -1 0 0 -1 0 0 -1 0 2.14569e-6 -1 0 2.18924e-6 -1 0 0 -1 0 -1.60963e-7 -1 0 0 -1 0 1.81362e-6 -1 0 -2.08944e-7 -1 0 0 -1 0 1.80776e-6 -1 0 0 -1 0 4.1097e-7 -1 0 7.41582e-7 -1 0 0 -1 0 0 -1 0 0 1 0 4.1097e-7 1 0 7.41582e-7 1 0 0 1 0 0 1 0 -2.29913e-7 1 0 1.81362e-6 1 0 -2.59411e-7 1 0 1.80776e-6 1 0 0 1 0.3511235 -1.58473e-7 -0.9363292 0.4156954 0.3672781 0.8320482 0.4156956 0.3672782 0.8320481 0.3511235 -1.26799e-7 -0.9363293 0.3511234 0 0.9363293 0.005700111 -0.6984379 0.715648 0.5363459 0.8439984 0 0.3511235 0 0.9363293 1 -5.50439e-7 2.50955e-7 1 -4.68813e-7 0 1 -4.61982e-7 0 0.3511235 0 0.9363292 0.5337439 0.8456462 0 0.3511235 -1.76222e-7 0.9363293 0 0 -1 0 0 -1 0 6.10492e-7 -1 0 0 -1 0 2.2855e-7 -1 0 0 -1 0 1.64048e-7 -1 0.1603484 0.806127 -0.5696033 0.5811845 0.5811856 -0.5696034 0.8219191 -6.41443e-7 -0.5696044 0.1603469 -0.8061251 -0.5696063 0.7730126 0.6343906 0 1 -2.43718e-7 0 0.9951844 -0.09802114 0 0.09801054 -0.9951854 7.31724e-7 0.09801465 -0.995185 3.34139e-6 0.0980103 -0.9951854 9.01702e-7 0.5546907 0 0.8320566 1 0 0 1 -1.62506e-7 0 0 -2.12872e-7 1 0 0 1 0 0 1 0 0 1 0 -2.82887e-7 1 0 -1.72937e-7 1 0 0 1 0 -2.70725e-7 1 0 3.64819e-7 1 0 3.00716e-7 1 0 0 1 0 -6.38744e-7 1 0 -7.09734e-7 1 0 0 1 0 -4.59166e-7 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 -1.46248e-7 1 0 -3.68839e-7 1 0.956939 -0.2902892 0 0.5247784 0.8512389 0 0.7076857 -1.0599e-6 0.7065275 0.7076629 0 0.7065503 0.7076632 0 0.70655 0.7345698 0.557695 0.3865017 0.7345715 -0.557692 0.3865026 -0.4156941 -0.3672758 0.8320498 -0.4156942 -0.3672759 0.8320498 1 1.40724e-6 0 0 0 -1 0 0 -1 0 0 -1 0 -2.15585e-7 -1 0 -1.36613e-7 -1 0 -1.77386e-7 -1 0 0 -1 0 4.00955e-7 -1 0 4.16689e-7 -1 0 -1.24905e-7 -1 0 -6.14878e-7 -1 0 -5.40444e-7 -1 0 0 -1 0 0 -1 0 -1.88394e-7 -1 0 -2.29583e-7 -1 0 0 -1 0 0 -1 0 0 -1 0 1.72186e-7 -1 0 0 -1 0 1.28361e-6 -1 0 6.14348e-7 -1 0 2.15126e-7 -1 0 0 -1 0 -3.68839e-7 -1 -0.2496635 -0.5991894 0.760684 0.7345928 -0.5576792 -0.3864808 0.7345699 0.5576949 -0.3865017 0.7076629 0 -0.7065503 0.7076849 0 -0.7065283 0.7076632 -3.05197e-7 -0.7065499 0.1373258 0.6408494 0.755284 -0.2496667 -0.5991954 0.7606782 0.4713994 -0.8819199 0 0.00570017 -0.6984381 0.7156478 -0.5546945 0 0.8320541 -0.4156941 -0.3672741 0.8320506 -0.4156942 -0.3672743 0.8320505 0.002845048 0.55524 -0.8316853 0.5546501 0 -0.8320838 0.005699992 -0.6984384 -0.7156475 0.4156951 0.3672763 0.8320491 0.4156946 0.3672727 0.8320509 0.1373258 0.6408494 -0.755284 -0.2031501 -0.518274 -0.8307358 -0.5547119 0 -0.8320425 0.6343936 -0.7730102 0 0.00570017 -0.6984382 -0.7156477 0.5547203 0 -0.832037 0.4156942 0.3672743 0.8320503 0.4156948 0.367275 0.8320499 -0.2031505 -0.5182729 -0.8307365 0.1373248 0.6408514 -0.7552824 -0.5546977 0 -0.832052 -0.4156951 -0.3672747 0.8320499 -0.4156952 -0.3672747 0.8320498 0.005700111 -0.6984385 -0.7156475 0.5547052 0 -0.8320469 0.002845108 0.55524 -0.8316854 0.09801715 0.9951848 2.76455e-7 0.09801632 0.9951848 0 0.09801703 0.9951848 -2.73797e-7 -0.203149 -0.518275 -0.8307357 0.1373227 0.6408446 -0.7552885 -0.5547036 0 -0.8320481 0 -9.59795e-7 -1 0 0 -1 0 0 -1 0 0 -1 0 -1.92609e-7 -1 0 -2.18245e-7 -1 0 0 -1 0 2.66489e-7 -1 0 0 -1 0 1.66754e-7 -1 0 0 -1 0 0 -1 0 -1.40258e-7 -1 0 2.65235e-7 -1 0 0 -1 0 -2.45227e-7 -1 0 3.22989e-7 -1 0 0 -1 0 0 -1 0 -3.75728e-7 -1 0 -3.86628e-7 -1 0 0 -1 0 2.32592e-7 -1 0 1.68056e-7 -1 0 -3.81689e-7 -1 0 -3.0899e-7 -1 0 1.31223e-5 -1 0 1.17215e-5 -1 0 2.67784e-7 -1 0 0 -1 0 0 -1 0 0 -1 0.5546907 -5.3726e-6 0.8320566 0.005794405 0.6984342 0.7156509 0.1392544 -0.6498689 -0.7471805 0.4980741 -0.4400577 -0.7471757 0.005514204 -0.6645976 -0.7471811 0.6646263 0 -0.747176 0.005423784 0.664599 -0.7471805 -0.4980723 0.4400578 -0.7471768 -0.2556238 0.6134989 -0.7471784 -0.6646208 -6.43755e-6 -0.7471809 -0.2556226 0.6135004 -0.7471777 -0.4980718 0.4400575 -0.7471774 0.005423963 0.6645963 -0.747183 0.6646122 0 -0.7471886 0.005514204 -0.6645995 -0.7471795 0.4980721 -0.4400563 -0.7471779 0.1392574 -0.6498683 -0.7471805 -0.6646202 0 -0.7471815 -0.2556214 0.6135013 -0.7471773 -0.4980714 0.4400575 -0.7471776 0.005423963 0.6645992 -0.7471803 0.664622 1.28749e-5 -0.7471798 0.005514204 -0.6646032 -0.7471762 0.4980698 -0.4400572 -0.7471787 0.1392573 -0.649868 -0.7471807 -0.6646208 0 -0.7471809 0.3511238 0 -0.9363291 -1.33256e-6 1 0 -0.4156952 -0.3672747 -0.8320498 -0.4156951 -0.3672747 -0.8320499 -0.5546998 1.23986e-6 0.8320507 0.1373248 0.6408516 0.7552823 0.3511235 0 -0.9363293 0.005794823 0.6984466 0.7156388 0.5438638 -0.8391735 0 0.2902863 0.9569399 0 1 -1.55289e-7 0 0.08068323 -0.8192395 0.5677472 -0.4156942 -0.3672759 -0.8320498 -0.4156941 -0.3672758 -0.8320499 0.8819221 0.4713952 0 0 0 1 0 0 1 0 0 1 0 1.56002e-7 1 0 0 1 0 0 1 0 0 1 0.5278382 0.8493449 0 0.7730125 -0.634391 0 0.4156951 0.3672763 -0.8320491 0.415695 0.3672761 -0.8320492 0.5414041 -0.8407626 0 0.5184703 -0.8550957 0 0.005700051 -0.6984378 0.7156481 0.5152196 -0.8570583 0 0.4156948 0.367275 -0.8320499 0.4156942 0.3672744 -0.8320505 -0.4156932 -0.3672751 -0.8320506 -0.4156932 -0.3672752 -0.8320505 0.5546954 0 0.8320535 0.005794823 0.6984468 0.7156386 0.4156867 0.367279 -0.8320521 0.4156917 0.3672801 -0.8320491 -0.2496592 -0.5991858 0.7606884 0.1373227 0.6408445 0.7552886 -0.5546993 0 0.8320509 0 0 1 0 -9.59795e-7 1 0 3.21479e-7 1 0 3.81689e-7 1 0 0 1 0 0 1 0 -2.07554e-7 1 0 0 1 0 0 1 0 0 1 0 0 1 0 2.41319e-7 1 0 1.45541e-7 1 0 0 1 0 0 1 0 3.31672e-7 1 0 -2.45227e-7 1 0 0 1 0 0 1 0 0 1 0 0 1 0 -2.42043e-7 1 0 -1.79408e-7 1 0 0 1 0 -3.87653e-7 1 0 1.17497e-5 1 0 0 1 0 1.31223e-5 1 0 1.50781e-7 1 0 7.91143e-7 1 0.1392567 -0.649873 0.7471765 0.4980676 -0.4400511 0.7471838 0.005514204 -0.6645975 0.7471812 0.6646263 0 0.747176 0.005423843 0.6645983 0.7471812 -0.498071 0.4400543 0.7471797 -0.2556236 0.6134998 0.7471778 -0.6646211 -6.18994e-6 0.7471807 -0.2556225 0.613501 0.7471772 -0.4980725 0.4400578 0.7471767 0.00542438 0.6646025 0.7471775 0.6646171 0 0.7471842 0.4980664 -0.4400532 0.7471834 0.1392567 -0.6498668 0.7471818 -0.6646202 0 0.7471815 -0.2556213 0.6135018 0.747177 -0.4980689 0.4400547 0.7471809 0.005423843 0.6645988 0.7471808 0.664622 1.23797e-5 0.7471798 0.005514204 -0.6646025 0.7471768 0.4980708 -0.4400544 0.7471798 0.1392568 -0.6498672 0.7471815 -0.6646202 0 0.7471814 0.471399 0.8819202 0 1 -2.27122e-7 0 1 -1.25559e-7 0 1 0 0 1 0 0 1 -1.25559e-7 0 1 -1.26968e-7 0 0 0 1 + + + + + + + + + + 0.8945313 0.390625 0.9023438 0.3828125 0.9023438 0.390625 0.8945313 0.3671875 0.9023438 0.359375 0.9023438 0.3671875 0.8085938 0.59375 0.8320313 0.5976563 0.8085938 0.5976563 0.6210938 0.3085938 0.625 0.2890625 0.625 0.3046875 0.8984375 0.5976563 0.8984375 0.6015625 0.890625 0.6015625 0.8945313 0.3203125 0.8554688 0.328125 0.8554688 0.3203125 0.8046875 0.4960938 0.84375 0.2773438 0.84375 0.4960938 0.6210938 0.34375 0.625 0.3242188 0.625 0.3398438 0.6328125 0.4804688 0.6367188 0.4609375 0.6367188 0.484375 0.8046875 0.7539063 0.8046875 0.7929688 0.6484375 0.7929688 0.8984375 0.5898438 0.9453125 0.59375 0.8984375 0.59375 0.6367188 0.4609375 0.625 0.4648438 0.6210938 0.4609375 0.6328125 0.4492188 0.6367188 0.4296875 0.6367188 0.453125 0.9414063 0.59375 0.8828125 0.5976563 0.8828125 0.59375 0.8945313 0.375 0.9023438 0.3828125 0.8945313 0.3828125 0.8945313 0.375 0.9023438 0.3671875 0.9023438 0.375 0.6367188 0.3203125 0.6367188 0.3085938 0.6445313 0.3476563 0.6367188 0.34375 0.6328125 0.3242188 0.6367188 0.3203125 0.8945313 0.34375 0.9023438 0.3359375 0.9023438 0.34375 0.6367188 0.4296875 0.625 0.4335938 0.6210938 0.4296875 0.6367188 0.3085938 0.6328125 0.2890625 0.6367188 0.2851563 0.6627917 0.443255 0.6739633 0.4412869 0.6484375 0.4960938 0.8554688 0.3984375 0.8476563 0.390625 0.8554688 0.390625 0.8554688 0.390625 0.8476563 0.3828125 0.8554688 0.3828125 0.8476563 0.3828125 0.8554688 0.375 0.8554688 0.3828125 0.8554688 0.375 0.8476563 0.3671875 0.8554688 0.3671875 0.8554688 0.3671875 0.8476563 0.359375 0.8554688 0.359375 0.8476563 0.359375 0.8554688 0.3515625 0.8554688 0.359375 0.8476563 0.3515625 0.8554688 0.34375 0.8554688 0.3515625 0.8554688 0.34375 0.8476563 0.3359375 0.8554688 0.3359375 0.8554688 0.3359375 0.8476563 0.328125 0.8554688 0.328125 0.8476563 0.328125 0.8554688 0.3203125 0.8554688 0.328125 0.8476563 0.3203125 0.8554688 0.3125 0.8554688 0.3203125 0.8476563 0.3125 0.8554688 0.3046875 0.8554688 0.3125 0.8476563 0.3046875 0.8554688 0.296875 0.8554688 0.3046875 0.8476563 0.296875 0.8554688 0.2890625 0.8554688 0.296875 0.8320313 0.59375 0.8828125 0.5976563 0.8320313 0.5976563 0.8945313 0.3671875 0.8554688 0.375 0.8554688 0.3671875 0.6171875 0.3515625 0.6445313 0.3476563 0.640625 0.3515625 0.6484375 0.5351563 0.8046875 0.4960938 0.8046875 0.5351563 0.6328125 0.3046875 0.625 0.2890625 0.6328125 0.2890625 0.8945313 0.3515625 0.8554688 0.359375 0.8554688 0.3515625 0.8945313 0.3359375 0.8554688 0.34375 0.8554688 0.3359375 0.8554688 0.2890625 0.8476563 0.28125 0.8554688 0.28125 0.6367188 0.34375 0.6132813 0.3476563 0.6210938 0.34375 0.8945313 0.375 0.8554688 0.3828125 0.8554688 0.375 0.8945313 0.2773438 0.8945313 0.28125 0.8945313 0.2890625 0.8945313 0.3125 0.9023438 0.3203125 0.8945313 0.3203125 0.9414063 0.6054688 0.9453125 0.6132813 0.9414063 0.609375 0.8945313 0.3203125 0.9023438 0.328125 0.8945313 0.328125 0.6328125 0.4492188 0.625 0.4335938 0.6328125 0.4335938 0.8945313 0.2890625 0.8554688 0.296875 0.8554688 0.2890625 0.625 0.3242188 0.6328125 0.3398438 0.625 0.3398438 0.6543128 0.6952406 0.6484375 0.6875 0.6550616 0.6870194 0.8945313 0.328125 0.8554688 0.3359375 0.8554688 0.328125 0.6367188 0.2851563 0.625 0.2890625 0.6210938 0.2851563 0.6132813 0.3476563 0.609375 0.2773438 0.6132813 0.2773438 0.609375 0.4179688 0.6132813 0.4179688 0.6132813 0.4570313 0.8945313 0.40625 0.9023438 0.4101563 0.8945313 0.4101563 0.9023438 0.2773438 0.8945313 0.28125 0.8945313 0.2773438 0.8945313 0.3984375 0.9023438 0.40625 0.8945313 0.40625 0.890625 0.578125 0.8984375 0.578125 0.8984375 0.5820313 0.6132813 0.4179688 0.640625 0.4140625 0.6445313 0.4179688 0.6628094 0.3425499 0.6614339 0.3489242 0.6549568 0.3471782 0.8046875 0.5820313 0.8320313 0.578125 0.8320313 0.5820313 0.8476563 0.40625 0.8554688 0.3984375 0.8554688 0.40625 0.8476563 0.2773438 0.8554688 0.28125 0.8476563 0.28125 0.8476563 0.4101563 0.8554688 0.40625 0.8554688 0.4101563 0.6445313 0.4570313 0.6484375 0.4140625 0.6484375 0.4960938 0.6445313 0.3476563 0.6484375 0.2773438 0.6484375 0.3476563 0.8320313 0.578125 0.8046875 0.5742188 0.8320313 0.5742188 0.8046875 0.5703125 0.8320313 0.5664063 0.8320313 0.5703125 0.8945313 0.296875 0.8554688 0.3046875 0.8554688 0.296875 0.8984375 0.578125 0.9453125 0.5820313 0.8984375 0.5820313 0.8085938 0.609375 0.8046875 0.6015625 0.8085938 0.6054688 0.8320313 0.5703125 0.8320313 0.5664063 0.890625 0.5664063 0.9453125 0.5234375 0.8984375 0.5195313 0.9453125 0.5195313 0.9414063 0.5273438 0.9453125 0.5195313 0.9453125 0.53125 0.9453125 0.5273438 0.8984375 0.53125 0.8984375 0.5273438 0.8984375 0.5742188 0.890625 0.578125 0.8320313 0.5742188 0.8046875 0.5234375 0.8320313 0.5195313 0.8320313 0.5234375 0.8046875 0.5273438 0.8320313 0.53125 0.8046875 0.53125 0.8085938 0.5234375 0.8046875 0.53125 0.8046875 0.5195313 0.8945313 0.3046875 0.8554688 0.3125 0.8554688 0.3046875 0.9453125 0.515625 0.8984375 0.5195313 0.8984375 0.515625 0.9414063 0.515625 0.9453125 0.5078125 0.9453125 0.5195313 0.9453125 0.5117188 0.8984375 0.5078125 0.9453125 0.5078125 0.890625 0.5898438 0.8320313 0.5898438 0.8320313 0.5859375 0.8046875 0.515625 0.8320313 0.5195313 0.8046875 0.5195313 0.8046875 0.5117188 0.8320313 0.5078125 0.8320313 0.5117188 0.8085938 0.5117188 0.8046875 0.5195313 0.8046875 0.5078125 0.890625 0.5898438 0.8984375 0.5898438 0.8984375 0.59375 0.9453125 0.5039063 0.8984375 0.5078125 0.8984375 0.5039063 0.9414063 0.5039063 0.9453125 0.4960938 0.9453125 0.5078125 0.9453125 0.5 0.8984375 0.4960938 0.9453125 0.4960938 0.8945313 0.4101563 0.8554688 0.4101563 0.8554688 0.3984375 0.8046875 0.5039063 0.8320313 0.5078125 0.8046875 0.5078125 0.8046875 0.5 0.8320313 0.4960938 0.8320313 0.5 0.8085938 0.5 0.8046875 0.5078125 0.8046875 0.4960938 0.7958816 0.4011822 0.7107183 0.3984869 0.792643 0.3962891 0.8320313 0.5351563 0.8828125 0.5390625 0.8320313 0.5390625 0.8320313 0.546875 0.8828125 0.5507813 0.8320313 0.5507813 0.8320313 0.5585938 0.8828125 0.5625 0.8320313 0.5625 0.9414063 0.6171875 0.9453125 0.625 0.9414063 0.6210938 0.9453125 0.5859375 0.8984375 0.5898438 0.8984375 0.5859375 0.8046875 0.5390625 0.8320313 0.5429688 0.8046875 0.5429688 0.8320313 0.5390625 0.8984375 0.5429688 0.8320313 0.5429688 0.9453125 0.5390625 0.8984375 0.5429688 0.8984375 0.5390625 0.9414063 0.5351563 0.9453125 0.5429688 0.9414063 0.5390625 0.9453125 0.53125 0.8984375 0.5351563 0.9453125 0.5351563 0.8984375 0.53125 0.8320313 0.5351563 0.8984375 0.5351563 0.8046875 0.53125 0.8320313 0.5351563 0.8320313 0.53125 0.8085938 0.5390625 0.8046875 0.53125 0.8085938 0.5351563 0.8046875 0.546875 0.8320313 0.5429688 0.8320313 0.546875 0.8984375 0.546875 0.8320313 0.5429688 0.8984375 0.5429688 0.9453125 0.546875 0.8984375 0.5429688 0.9453125 0.5429688 0.9414063 0.546875 0.9453125 0.5546875 0.9414063 0.5507813 0.9453125 0.5507813 0.8984375 0.5546875 0.8984375 0.5507813 0.8320313 0.5507813 0.8984375 0.5546875 0.8320313 0.5546875 0.8046875 0.5507813 0.8320313 0.5546875 0.8046875 0.5546875 0.8085938 0.5507813 0.8046875 0.5429688 0.8085938 0.546875 0.8046875 0.5585938 0.8320313 0.5546875 0.8320313 0.5585938 0.8984375 0.5585938 0.8320313 0.5546875 0.8984375 0.5546875 0.9453125 0.5585938 0.8984375 0.5546875 0.9453125 0.5546875 0.9414063 0.5585938 0.9453125 0.5664063 0.9414063 0.5625 0.9453125 0.5625 0.8984375 0.5664063 0.8984375 0.5625 0.8320313 0.5625 0.8984375 0.5664063 0.8320313 0.5664063 0.8046875 0.5625 0.8320313 0.5664063 0.8046875 0.5664063 0.8085938 0.5625 0.8046875 0.5546875 0.8085938 0.5585938 0.6210938 0.4609375 0.625 0.4804688 0.6210938 0.484375 0.6445313 0.5351563 0.6484375 0.4960938 0.6484375 0.5351563 0.8984375 0.5039063 0.8984375 0.5078125 0.890625 0.5078125 0.8085938 0.6210938 0.8046875 0.6132813 0.8085938 0.6171875 0.8320313 0.5898438 0.8046875 0.5859375 0.8320313 0.5859375 0.6210938 0.4296875 0.625 0.4492188 0.6210938 0.453125 0.9453125 0.5742188 0.8984375 0.578125 0.8984375 0.5742188 0.6210938 0.453125 0.6328125 0.4492188 0.6367188 0.453125 0.8554688 0.3984375 0.8945313 0.390625 0.8945313 0.3984375 0.625 0.4648438 0.6328125 0.4804688 0.625 0.4804688 0.8945313 0.34375 0.8554688 0.3515625 0.8554688 0.34375 0.8945313 0.3359375 0.9023438 0.328125 0.9023438 0.3359375 0.8945313 0.2890625 0.9023438 0.28125 0.9023438 0.2890625 0.8945313 0.2890625 0.9023438 0.296875 0.8945313 0.296875 0.8945313 0.296875 0.9023438 0.3046875 0.8945313 0.3046875 0.8945313 0.3046875 0.9023438 0.3125 0.8945313 0.3125 0.8984375 0.515625 0.8984375 0.5195313 0.890625 0.5195313 0.8945313 0.3515625 0.9023438 0.359375 0.8945313 0.359375 0.8945313 0.34375 0.9023438 0.3515625 0.8945313 0.3515625 0.8945313 0.359375 0.8554688 0.3671875 0.8554688 0.359375 0.6484375 0.5351563 0.657865 0.5954006 0.6542191 0.6023433 0.6367188 0.3203125 0.625 0.3242188 0.6210938 0.3203125 0.8945313 0.3125 0.8554688 0.3203125 0.8554688 0.3125 0.8320313 0.5234375 0.8320313 0.5195313 0.890625 0.5195313 0.6367188 0.484375 0.625 0.4804688 0.6328125 0.4804688 0.6210938 0.3085938 0.6328125 0.3046875 0.6367188 0.3085938 0.8984375 0.5664063 0.9453125 0.5703125 0.8984375 0.5703125 0.6210938 0.34375 0.6328125 0.3398438 0.6367188 0.34375 0.8945313 0.3984375 0.9023438 0.390625 0.9023438 0.3984375 0.8320313 0.5117188 0.8320313 0.5078125 0.890625 0.5078125 0.8984375 0.5273438 0.8984375 0.53125 0.890625 0.53125 0.9414063 0.6289063 0.9453125 0.6367188 0.9414063 0.6328125 0.9453125 0.5976563 0.8984375 0.6015625 0.8984375 0.5976563 0.8320313 0.5 0.8320313 0.4960938 0.890625 0.4960938 0.8046875 0.59375 0.8320313 0.5898438 0.8320313 0.59375 0.8320313 0.6015625 0.8046875 0.5976563 0.8320313 0.5976563 0.8085938 0.6328125 0.8046875 0.625 0.8085938 0.6289063 0.7899345 0.6359996 0.7093751 0.6334774 0.7931929 0.6311195 0.8320313 0.6328125 0.8828125 0.6289063 0.8828125 0.6328125 0.8320313 0.6210938 0.8828125 0.6171875 0.8828125 0.6210938 0.8320313 0.609375 0.8828125 0.6054688 0.8828125 0.609375 0.8046875 0.6289063 0.8320313 0.625 0.8320313 0.6289063 0.8320313 0.6289063 0.8984375 0.625 0.8984375 0.6289063 0.8984375 0.625 0.9453125 0.6289063 0.8984375 0.6289063 0.9453125 0.5898438 0.9414063 0.5976563 0.9414063 0.59375 0.9453125 0.6328125 0.8984375 0.6367188 0.8984375 0.6328125 0.8984375 0.6328125 0.8320313 0.6367188 0.8320313 0.6328125 0.8320313 0.6367188 0.8046875 0.6328125 0.8320313 0.6328125 0.8046875 0.6015625 0.8085938 0.59375 0.8085938 0.5976563 0.8320313 0.625 0.8046875 0.6210938 0.8320313 0.6210938 0.8984375 0.6210938 0.8320313 0.625 0.8320313 0.6210938 0.9453125 0.6210938 0.8984375 0.625 0.8984375 0.6210938 0.9453125 0.578125 0.9414063 0.5859375 0.9414063 0.5820313 0.8984375 0.6132813 0.9453125 0.6171875 0.8984375 0.6171875 0.8320313 0.6171875 0.8984375 0.6132813 0.8984375 0.6171875 0.8046875 0.6171875 0.8320313 0.6132813 0.8320313 0.6171875 0.8046875 0.5898438 0.8085938 0.5820313 0.8085938 0.5859375 0.8320313 0.6132813 0.8046875 0.609375 0.8320313 0.609375 0.8984375 0.609375 0.8320313 0.6132813 0.8320313 0.609375 0.9453125 0.609375 0.8984375 0.6132813 0.8984375 0.609375 0.9453125 0.5664063 0.9414063 0.5742188 0.9414063 0.5703125 0.8984375 0.6015625 0.9453125 0.6054688 0.8984375 0.6054688 0.8320313 0.6054688 0.8984375 0.6015625 0.8984375 0.6054688 0.8046875 0.6054688 0.8320313 0.6015625 0.8320313 0.6054688 0.8046875 0.578125 0.8085938 0.5703125 0.8085938 0.5742188 0.8554688 0.390625 0.8945313 0.3828125 0.8945313 0.390625 0.6210938 0.4296875 0.6445313 0.4179688 0.6367188 0.4296875 0.6132813 0.2773438 0.6367188 0.2851563 0.6210938 0.2851563 0.6367188 0.484375 0.6132813 0.4960938 0.6210938 0.484375 0.6132813 0.4179688 0.6210938 0.4296875 0.6210938 0.453125 0.8085938 0.5039063 0.8320313 0.5 0.8320313 0.5039063 0.8320313 0.5039063 0.8828125 0.5 0.8828125 0.5039063 0.8828125 0.5 0.9414063 0.5039063 0.8828125 0.5039063 0.8320313 0.5234375 0.8085938 0.5273438 0.8085938 0.5234375 0.8828125 0.5234375 0.8320313 0.5273438 0.8320313 0.5234375 0.8828125 0.5234375 0.9414063 0.5273438 0.8828125 0.5273438 0.8085938 0.515625 0.8320313 0.5117188 0.8320313 0.515625 0.8320313 0.515625 0.8828125 0.5117188 0.8828125 0.515625 0.8828125 0.5117188 0.9414063 0.515625 0.8828125 0.515625 0.8085938 0.5820313 0.8320313 0.5859375 0.8085938 0.5859375 0.8320313 0.5820313 0.8828125 0.5859375 0.8320313 0.5859375 0.8828125 0.5859375 0.9414063 0.5820313 0.9414063 0.5859375 0.8085938 0.5703125 0.8320313 0.5742188 0.8085938 0.5742188 0.8828125 0.5742188 0.8320313 0.5703125 0.8828125 0.5703125 0.8828125 0.5742188 0.9414063 0.5703125 0.9414063 0.5742188 0.8945313 0.390625 0.8945313 0.3828125 0.9023438 0.3828125 0.8945313 0.3671875 0.8945313 0.359375 0.9023438 0.359375 0.8085938 0.59375 0.8320313 0.59375 0.8320313 0.5976563 0.6210938 0.3085938 0.6210938 0.2851563 0.625 0.2890625 0.890625 0.6015625 0.8320313 0.6015625 0.8320313 0.5976563 0.8320313 0.5976563 0.8984375 0.5976563 0.890625 0.6015625 0.8945313 0.3203125 0.8945313 0.328125 0.8554688 0.328125 0.8046875 0.4960938 0.8046875 0.2773438 0.84375 0.2773438 0.6210938 0.34375 0.6210938 0.3203125 0.625 0.3242188 0.6328125 0.4804688 0.6328125 0.4648438 0.6367188 0.4609375 0.6484375 0.7929688 0.6484375 0.7890625 0.6484375 0.7578125 0.6484375 0.7578125 0.6484375 0.7539063 0.6484375 0.7929688 0.6484375 0.7539063 0.8046875 0.7539063 0.6484375 0.7929688 0.8984375 0.5898438 0.9453125 0.5898438 0.9453125 0.59375 0.6367188 0.4609375 0.6328125 0.4648438 0.625 0.4648438 0.6328125 0.4492188 0.6328125 0.4335938 0.6367188 0.4296875 0.9414063 0.59375 0.9414063 0.5976563 0.8828125 0.5976563 0.8945313 0.375 0.9023438 0.375 0.9023438 0.3828125 0.8945313 0.375 0.8945313 0.3671875 0.9023438 0.3671875 0.6210938 0.3203125 0.6210938 0.34375 0.6132813 0.3476563 0.6132813 0.3476563 0.6132813 0.2773438 0.6210938 0.3085938 0.6132813 0.2773438 0.6210938 0.2851563 0.6210938 0.3085938 0.6210938 0.3203125 0.6132813 0.3476563 0.6210938 0.3085938 0.6367188 0.3085938 0.6367188 0.2851563 0.6445313 0.2773438 0.6210938 0.3203125 0.6210938 0.3085938 0.6367188 0.3085938 0.6445313 0.3476563 0.6367188 0.34375 0.6367188 0.3203125 0.6367188 0.3203125 0.6210938 0.3203125 0.6367188 0.3085938 0.6367188 0.3085938 0.6445313 0.2773438 0.6445313 0.3476563 0.6367188 0.34375 0.6328125 0.3398438 0.6328125 0.3242188 0.8945313 0.34375 0.8945313 0.3359375 0.9023438 0.3359375 0.6367188 0.4296875 0.6328125 0.4335938 0.625 0.4335938 0.6367188 0.3085938 0.6328125 0.3046875 0.6328125 0.2890625 0.6484375 0.4960938 0.6484375 0.4140625 0.6553167 0.429395 0.6484375 0.4140625 0.6551535 0.4274626 0.6553167 0.429395 0.6553167 0.429395 0.6589134 0.4344661 0.6590877 0.4363514 0.79587 0.4048618 0.8046875 0.4960938 0.712595 0.4026403 0.8046875 0.4960938 0.6484375 0.4960938 0.6739633 0.4412869 0.6739633 0.4412869 0.712595 0.4026403 0.8046875 0.4960938 0.6590877 0.4363514 0.6626338 0.4413934 0.6627917 0.443255 0.6553167 0.429395 0.6590877 0.4363514 0.6484375 0.4960938 0.6590877 0.4363514 0.6627917 0.443255 0.6484375 0.4960938 0.8554688 0.3984375 0.8476563 0.3984375 0.8476563 0.390625 0.8554688 0.390625 0.8476563 0.390625 0.8476563 0.3828125 0.8476563 0.3828125 0.8476563 0.375 0.8554688 0.375 0.8554688 0.375 0.8476563 0.375 0.8476563 0.3671875 0.8554688 0.3671875 0.8476563 0.3671875 0.8476563 0.359375 0.8476563 0.359375 0.8476563 0.3515625 0.8554688 0.3515625 0.8476563 0.3515625 0.8476563 0.34375 0.8554688 0.34375 0.8554688 0.34375 0.8476563 0.34375 0.8476563 0.3359375 0.8554688 0.3359375 0.8476563 0.3359375 0.8476563 0.328125 0.8476563 0.328125 0.8476563 0.3203125 0.8554688 0.3203125 0.8476563 0.3203125 0.8476563 0.3125 0.8554688 0.3125 0.8476563 0.3125 0.8476563 0.3046875 0.8554688 0.3046875 0.8476563 0.3046875 0.8476563 0.296875 0.8554688 0.296875 0.8476563 0.296875 0.8476563 0.2890625 0.8554688 0.2890625 0.8320313 0.59375 0.8828125 0.59375 0.8828125 0.5976563 0.8945313 0.3671875 0.8945313 0.375 0.8554688 0.375 0.6171875 0.3515625 0.6132813 0.3476563 0.6445313 0.3476563 0.6484375 0.5351563 0.6484375 0.4960938 0.8046875 0.4960938 0.6328125 0.3046875 0.625 0.3046875 0.625 0.2890625 0.8945313 0.3515625 0.8945313 0.359375 0.8554688 0.359375 0.8945313 0.3359375 0.8945313 0.34375 0.8554688 0.34375 0.8554688 0.2890625 0.8476563 0.2890625 0.8476563 0.28125 0.6367188 0.34375 0.6445313 0.3476563 0.6132813 0.3476563 0.8945313 0.375 0.8945313 0.3828125 0.8554688 0.3828125 0.8945313 0.2890625 0.8554688 0.2890625 0.8945313 0.2773438 0.8554688 0.2890625 0.8554688 0.28125 0.8554688 0.2773438 0.8945313 0.2773438 0.8554688 0.2890625 0.8554688 0.2773438 0.8945313 0.3125 0.9023438 0.3125 0.9023438 0.3203125 0.9414063 0.6054688 0.9453125 0.6015625 0.9453125 0.6132813 0.8945313 0.3203125 0.9023438 0.3203125 0.9023438 0.328125 0.6328125 0.4492188 0.625 0.4492188 0.625 0.4335938 0.8945313 0.2890625 0.8945313 0.296875 0.8554688 0.296875 0.625 0.3242188 0.6328125 0.3242188 0.6328125 0.3398438 0.7067155 0.6729791 0.8046875 0.7539063 0.6721291 0.7070778 0.8046875 0.7539063 0.6484375 0.7539063 0.6721291 0.7070778 0.6851683 0.6598361 0.6862586 0.6534677 0.6942515 0.660293 0.665088 0.6946941 0.6966667 0.663116 0.6991799 0.6652868 0.6685958 0.7009387 0.7017183 0.6680247 0.7042396 0.670189 0.6825394 0.6662004 0.6851683 0.6598361 0.6942515 0.660293 0.665088 0.6946941 0.6991799 0.6652868 0.6666692 0.697633 0.665088 0.6946941 0.6666692 0.697633 0.6579065 0.7014715 0.6545063 0.6970323 0.665088 0.6946941 0.6579065 0.7014715 0.6545063 0.6970323 0.6579065 0.7014715 0.658129 0.7032284 0.6685958 0.7009387 0.7042396 0.670189 0.6701936 0.7038277 0.6685958 0.7009387 0.6701936 0.7038277 0.6615781 0.7076281 0.658129 0.7032284 0.6685958 0.7009387 0.6615781 0.7076281 0.6618196 0.7093647 0.6721291 0.7070778 0.6484375 0.7539063 0.658129 0.7032284 0.6615781 0.7076281 0.6618196 0.7093647 0.6545063 0.6970323 0.658129 0.7032284 0.6484375 0.7539063 0.658129 0.7032284 0.6618196 0.7093647 0.6484375 0.7539063 0.678657 0.672223 0.6825394 0.6662004 0.6942515 0.660293 0.6736712 0.6775319 0.678657 0.672223 0.6942515 0.660293 0.6543128 0.6952406 0.6545063 0.6970323 0.6484375 0.6875 0.6545063 0.6970323 0.6484375 0.7539063 0.6484375 0.6875 0.6736712 0.6775319 0.6942515 0.660293 0.6631827 0.691349 0.6736712 0.6775319 0.6631827 0.691349 0.6678602 0.6818433 0.6631827 0.691349 0.6543128 0.6952406 0.6550616 0.6870194 0.6678602 0.6818433 0.6631827 0.691349 0.6615377 0.6850305 0.6615377 0.6850305 0.6631827 0.691349 0.6550616 0.6870194 0.8945313 0.328125 0.8945313 0.3359375 0.8554688 0.3359375 0.6367188 0.2851563 0.6328125 0.2890625 0.625 0.2890625 0.6132813 0.3476563 0.609375 0.3476563 0.609375 0.2773438 0.6132813 0.4570313 0.6132813 0.4960938 0.609375 0.4960938 0.609375 0.4960938 0.609375 0.4179688 0.6132813 0.4570313 0.8945313 0.40625 0.9023438 0.40625 0.9023438 0.4101563 0.9023438 0.2773438 0.9023438 0.28125 0.8945313 0.28125 0.8945313 0.3984375 0.9023438 0.3984375 0.9023438 0.40625 0.8984375 0.5820313 0.8320313 0.5820313 0.890625 0.578125 0.8320313 0.5820313 0.8320313 0.578125 0.890625 0.578125 0.6132813 0.4179688 0.6171875 0.4140625 0.640625 0.4140625 0.6484375 0.2773438 0.8046875 0.2773438 0.6708264 0.3265217 0.8046875 0.2773438 0.7060039 0.3593519 0.6708264 0.3265217 0.6941677 0.3724869 0.6869742 0.3796073 0.6852775 0.3732706 0.6988602 0.3673141 0.6964595 0.3695758 0.6645369 0.3391391 0.7036679 0.3622302 0.7012655 0.3644847 0.6676817 0.3327765 0.6484375 0.2773438 0.6708264 0.3265217 0.660544 0.3246204 0.6941677 0.3724869 0.6852775 0.3732706 0.6825568 0.3669947 0.665953 0.3361465 0.6988602 0.3673141 0.6645369 0.3391391 0.6571138 0.3326402 0.665953 0.3361465 0.6645369 0.3391391 0.6571138 0.3326402 0.6645369 0.3391391 0.6539687 0.3371986 0.6572394 0.3308789 0.6571138 0.3326402 0.6539687 0.3371986 0.6691008 0.3298349 0.7036679 0.3622302 0.6676817 0.3327765 0.6484375 0.2773438 0.660544 0.3246204 0.6572394 0.3308789 0.660544 0.3246204 0.6604059 0.3263612 0.6572394 0.3308789 0.6604059 0.3263612 0.6691008 0.3298349 0.6676817 0.3327765 0.6604059 0.3263612 0.6676817 0.3327765 0.6572394 0.3308789 0.6941677 0.3724869 0.6825568 0.3669947 0.6786093 0.3611079 0.6941677 0.3724869 0.6786093 0.3611079 0.6735859 0.3559776 0.6484375 0.2773438 0.6572394 0.3308789 0.6539687 0.3371986 0.6628094 0.3425499 0.6941677 0.3724869 0.6735859 0.3559776 0.6484375 0.2773438 0.6539687 0.3371986 0.6484375 0.3476563 0.6539687 0.3371986 0.6538631 0.3389946 0.6484375 0.3476563 0.6538631 0.3389946 0.6628094 0.3425499 0.6549568 0.3471782 0.6628094 0.3425499 0.6735859 0.3559776 0.6677594 0.3518777 0.6628094 0.3425499 0.6677594 0.3518777 0.6614339 0.3489242 0.6549568 0.3471782 0.6484375 0.3476563 0.6538631 0.3389946 0.8046875 0.5820313 0.8046875 0.578125 0.8320313 0.578125 0.8476563 0.40625 0.8476563 0.3984375 0.8554688 0.3984375 0.8476563 0.2773438 0.8554688 0.2773438 0.8554688 0.28125 0.8476563 0.4101563 0.8476563 0.40625 0.8554688 0.40625 0.6484375 0.4960938 0.6445313 0.4960938 0.6445313 0.4570313 0.6445313 0.4570313 0.6445313 0.4179688 0.6484375 0.4140625 0.6445313 0.3476563 0.6445313 0.2773438 0.6484375 0.2773438 0.8320313 0.578125 0.8046875 0.578125 0.8046875 0.5742188 0.8046875 0.5703125 0.8046875 0.5664063 0.8320313 0.5664063 0.8945313 0.296875 0.8945313 0.3046875 0.8554688 0.3046875 0.8984375 0.578125 0.9453125 0.578125 0.9453125 0.5820313 0.8085938 0.609375 0.8046875 0.6132813 0.8046875 0.6015625 0.890625 0.5664063 0.8984375 0.5664063 0.8984375 0.5703125 0.8984375 0.5703125 0.8320313 0.5703125 0.890625 0.5664063 0.9453125 0.5234375 0.8984375 0.5234375 0.8984375 0.5195313 0.9414063 0.5273438 0.9414063 0.5234375 0.9453125 0.5195313 0.9453125 0.5273438 0.9453125 0.53125 0.8984375 0.53125 0.8984375 0.578125 0.890625 0.578125 0.8984375 0.5742188 0.890625 0.578125 0.8320313 0.578125 0.8320313 0.5742188 0.8046875 0.5234375 0.8046875 0.5195313 0.8320313 0.5195313 0.8046875 0.5273438 0.8320313 0.5273438 0.8320313 0.53125 0.8085938 0.5234375 0.8085938 0.5273438 0.8046875 0.53125 0.8945313 0.3046875 0.8945313 0.3125 0.8554688 0.3125 0.9453125 0.515625 0.9453125 0.5195313 0.8984375 0.5195313 0.9414063 0.515625 0.9414063 0.5117188 0.9453125 0.5078125 0.9453125 0.5117188 0.8984375 0.5117188 0.8984375 0.5078125 0.8320313 0.5859375 0.8984375 0.5859375 0.890625 0.5898438 0.8984375 0.5859375 0.8984375 0.5898438 0.890625 0.5898438 0.8046875 0.515625 0.8320313 0.515625 0.8320313 0.5195313 0.8046875 0.5117188 0.8046875 0.5078125 0.8320313 0.5078125 0.8085938 0.5117188 0.8085938 0.515625 0.8046875 0.5195313 0.8984375 0.59375 0.8320313 0.59375 0.890625 0.5898438 0.8320313 0.59375 0.8320313 0.5898438 0.890625 0.5898438 0.9453125 0.5039063 0.9453125 0.5078125 0.8984375 0.5078125 0.9414063 0.5039063 0.9414063 0.5 0.9453125 0.4960938 0.9453125 0.5 0.8984375 0.5 0.8984375 0.4960938 0.8554688 0.40625 0.8554688 0.3984375 0.8554688 0.4101563 0.8554688 0.3984375 0.8945313 0.3984375 0.8945313 0.4101563 0.8945313 0.3984375 0.8945313 0.40625 0.8945313 0.4101563 0.8046875 0.5039063 0.8320313 0.5039063 0.8320313 0.5078125 0.8046875 0.5 0.8046875 0.4960938 0.8320313 0.4960938 0.8085938 0.5 0.8085938 0.5039063 0.8046875 0.5078125 0.8046875 0.2773438 0.8046875 0.4960938 0.7958816 0.4011822 0.8046875 0.4960938 0.79587 0.4048618 0.7958816 0.4011822 0.7088977 0.3616208 0.7060039 0.3593519 0.7934817 0.3560252 0.7060039 0.3593519 0.8046875 0.2773438 0.7934817 0.3560252 0.6719875 0.4374769 0.6626338 0.4413934 0.6703681 0.4343076 0.6626338 0.4413934 0.6590877 0.4363514 0.6703681 0.4343076 0.7107183 0.3984869 0.6719875 0.4374769 0.6703681 0.4343076 0.6683581 0.4304701 0.6589134 0.4344661 0.6667141 0.4272662 0.6589134 0.4344661 0.6553167 0.429395 0.6667141 0.4272662 0.7072473 0.3915 0.6683581 0.4304701 0.6667141 0.4272662 0.7037395 0.3845635 0.6647186 0.4234158 0.6765272 0.4028772 0.6647186 0.4234158 0.6551535 0.4274626 0.6564746 0.4133117 0.6765272 0.4028772 0.6647186 0.4234158 0.6707679 0.4072312 0.6551535 0.4274626 0.6484375 0.4140625 0.6564746 0.4133117 0.6564746 0.4133117 0.664846 0.4109677 0.6647186 0.4234158 0.664846 0.4109677 0.6707679 0.4072312 0.6647186 0.4234158 0.7037395 0.3845635 0.6765272 0.4028772 0.6808764 0.3969842 0.7037395 0.3845635 0.6808764 0.3969842 0.6847027 0.3909546 0.6862974 0.3846162 0.6869742 0.3796073 0.7037395 0.3845635 0.6869742 0.3796073 0.6941677 0.3724869 0.7019447 0.3798312 0.7037395 0.3845635 0.6869742 0.3796073 0.7019447 0.3798312 0.7037395 0.3845635 0.6847027 0.3909546 0.6862974 0.3846162 0.7886615 0.3855476 0.7037395 0.3845635 0.7019447 0.3798312 0.7886615 0.3855476 0.7019447 0.3798312 0.7870407 0.3757169 0.789077 0.3885076 0.7886615 0.3855476 0.7922265 0.3932982 0.7886615 0.3855476 0.7870407 0.3757169 0.7922265 0.3932982 0.7870407 0.3757169 0.7873313 0.3727117 0.7902636 0.3677988 0.7922265 0.3932982 0.7870407 0.3757169 0.7902636 0.3677988 0.7072473 0.3915 0.6667141 0.4272662 0.7056617 0.3886672 0.7922265 0.3932982 0.7072473 0.3915 0.789077 0.3885076 0.7072473 0.3915 0.7056617 0.3886672 0.789077 0.3885076 0.7034366 0.3757264 0.6964595 0.3695758 0.7047283 0.3728319 0.6964595 0.3695758 0.6988602 0.3673141 0.7047283 0.3728319 0.7873313 0.3727117 0.7034366 0.3757264 0.7047283 0.3728319 0.7873313 0.3727117 0.7047283 0.3728319 0.7902636 0.3677988 0.7922265 0.3932982 0.7902636 0.3677988 0.7936452 0.3597685 0.7902636 0.3677988 0.7905749 0.3647736 0.7936452 0.3597685 0.792643 0.3962891 0.7922265 0.3932982 0.7958816 0.4011822 0.7062069 0.3686895 0.7012655 0.3644847 0.7074477 0.3657639 0.7012655 0.3644847 0.7036679 0.3622302 0.7074477 0.3657639 0.7905749 0.3647736 0.7062069 0.3686895 0.7074477 0.3657639 0.7936452 0.3597685 0.7934817 0.3560252 0.8046875 0.2773438 0.7905749 0.3647736 0.7074477 0.3657639 0.7936452 0.3597685 0.7922265 0.3932982 0.7936452 0.3597685 0.7958816 0.4011822 0.7936452 0.3597685 0.8046875 0.2773438 0.7958816 0.4011822 0.7107183 0.3984869 0.6703681 0.4343076 0.709154 0.3956355 0.7107183 0.3984869 0.709154 0.3956355 0.792643 0.3962891 0.8828125 0.5351563 0.9414063 0.5351563 0.8828125 0.5390625 0.9414063 0.5351563 0.9414063 0.5390625 0.8828125 0.5390625 0.8085938 0.5390625 0.8085938 0.5351563 0.8320313 0.5390625 0.8085938 0.5351563 0.8320313 0.5351563 0.8320313 0.5390625 0.8320313 0.5351563 0.8828125 0.5351563 0.8828125 0.5390625 0.8828125 0.546875 0.9414063 0.546875 0.8828125 0.5507813 0.9414063 0.546875 0.9414063 0.5507813 0.8828125 0.5507813 0.8085938 0.5507813 0.8085938 0.546875 0.8320313 0.5507813 0.8085938 0.546875 0.8320313 0.546875 0.8320313 0.5507813 0.8320313 0.546875 0.8828125 0.546875 0.8828125 0.5507813 0.8828125 0.5585938 0.9414063 0.5585938 0.8828125 0.5625 0.9414063 0.5585938 0.9414063 0.5625 0.8828125 0.5625 0.8085938 0.5625 0.8085938 0.5585938 0.8320313 0.5625 0.8085938 0.5585938 0.8320313 0.5585938 0.8320313 0.5625 0.8320313 0.5585938 0.8828125 0.5585938 0.8828125 0.5625 0.9414063 0.6171875 0.9453125 0.6132813 0.9453125 0.625 0.9453125 0.5859375 0.9453125 0.5898438 0.8984375 0.5898438 0.8046875 0.5390625 0.8320313 0.5390625 0.8320313 0.5429688 0.8320313 0.5390625 0.8984375 0.5390625 0.8984375 0.5429688 0.9453125 0.5390625 0.9453125 0.5429688 0.8984375 0.5429688 0.9414063 0.5351563 0.9453125 0.53125 0.9453125 0.5429688 0.9453125 0.53125 0.8984375 0.53125 0.8984375 0.5351563 0.8984375 0.53125 0.8320313 0.53125 0.8320313 0.5351563 0.8046875 0.53125 0.8046875 0.5351563 0.8320313 0.5351563 0.8085938 0.5390625 0.8046875 0.5429688 0.8046875 0.53125 0.8046875 0.546875 0.8046875 0.5429688 0.8320313 0.5429688 0.8984375 0.546875 0.8320313 0.546875 0.8320313 0.5429688 0.9453125 0.546875 0.8984375 0.546875 0.8984375 0.5429688 0.9414063 0.546875 0.9453125 0.5429688 0.9453125 0.5546875 0.9453125 0.5507813 0.9453125 0.5546875 0.8984375 0.5546875 0.8320313 0.5507813 0.8984375 0.5507813 0.8984375 0.5546875 0.8046875 0.5507813 0.8320313 0.5507813 0.8320313 0.5546875 0.8085938 0.5507813 0.8046875 0.5546875 0.8046875 0.5429688 0.8046875 0.5585938 0.8046875 0.5546875 0.8320313 0.5546875 0.8984375 0.5585938 0.8320313 0.5585938 0.8320313 0.5546875 0.9453125 0.5585938 0.8984375 0.5585938 0.8984375 0.5546875 0.9414063 0.5585938 0.9453125 0.5546875 0.9453125 0.5664063 0.9453125 0.5625 0.9453125 0.5664063 0.8984375 0.5664063 0.8320313 0.5625 0.8984375 0.5625 0.8984375 0.5664063 0.8046875 0.5625 0.8320313 0.5625 0.8320313 0.5664063 0.8085938 0.5625 0.8046875 0.5664063 0.8046875 0.5546875 0.6210938 0.4609375 0.625 0.4648438 0.625 0.4804688 0.6445313 0.5351563 0.6445313 0.4960938 0.6484375 0.4960938 0.8320313 0.5078125 0.8320313 0.5039063 0.890625 0.5078125 0.8320313 0.5039063 0.8984375 0.5039063 0.890625 0.5078125 0.8085938 0.6210938 0.8046875 0.625 0.8046875 0.6132813 0.8320313 0.5898438 0.8046875 0.5898438 0.8046875 0.5859375 0.6210938 0.4296875 0.625 0.4335938 0.625 0.4492188 0.9453125 0.5742188 0.9453125 0.578125 0.8984375 0.578125 0.6210938 0.453125 0.625 0.4492188 0.6328125 0.4492188 0.8554688 0.3984375 0.8554688 0.390625 0.8945313 0.390625 0.625 0.4648438 0.6328125 0.4648438 0.6328125 0.4804688 0.8945313 0.34375 0.8945313 0.3515625 0.8554688 0.3515625 0.8945313 0.3359375 0.8945313 0.328125 0.9023438 0.328125 0.8945313 0.2890625 0.8945313 0.28125 0.9023438 0.28125 0.8945313 0.2890625 0.9023438 0.2890625 0.9023438 0.296875 0.8945313 0.296875 0.9023438 0.296875 0.9023438 0.3046875 0.8945313 0.3046875 0.9023438 0.3046875 0.9023438 0.3125 0.8320313 0.5195313 0.8320313 0.515625 0.890625 0.5195313 0.8320313 0.515625 0.8984375 0.515625 0.890625 0.5195313 0.8945313 0.3515625 0.9023438 0.3515625 0.9023438 0.359375 0.8945313 0.34375 0.9023438 0.34375 0.9023438 0.3515625 0.8945313 0.359375 0.8945313 0.3671875 0.8554688 0.3671875 0.6484375 0.5351563 0.8046875 0.5351563 0.6725161 0.590524 0.8046875 0.5351563 0.7931963 0.6274399 0.7112594 0.6293308 0.6725161 0.590524 0.8046875 0.5351563 0.7112594 0.6293308 0.6613433 0.5885105 0.661254 0.5903719 0.657865 0.5954006 0.6484375 0.5351563 0.6725161 0.590524 0.6613433 0.5885105 0.6540729 0.6042755 0.6484375 0.6210938 0.6542191 0.6023433 0.6484375 0.6210938 0.6484375 0.5351563 0.6542191 0.6023433 0.657865 0.5954006 0.657732 0.5972856 0.6542191 0.6023433 0.6484375 0.5351563 0.6613433 0.5885105 0.657865 0.5954006 0.6367188 0.3203125 0.6328125 0.3242188 0.625 0.3242188 0.8945313 0.3125 0.8945313 0.3203125 0.8554688 0.3203125 0.8984375 0.5195313 0.8984375 0.5234375 0.890625 0.5195313 0.8984375 0.5234375 0.8320313 0.5234375 0.890625 0.5195313 0.6367188 0.484375 0.6210938 0.484375 0.625 0.4804688 0.6210938 0.3085938 0.625 0.3046875 0.6328125 0.3046875 0.8984375 0.5664063 0.9453125 0.5664063 0.9453125 0.5703125 0.6210938 0.34375 0.625 0.3398438 0.6328125 0.3398438 0.8945313 0.3984375 0.8945313 0.390625 0.9023438 0.390625 0.8984375 0.5078125 0.8984375 0.5117188 0.890625 0.5078125 0.8984375 0.5117188 0.8320313 0.5117188 0.890625 0.5078125 0.8320313 0.53125 0.8320313 0.5273438 0.890625 0.53125 0.8320313 0.5273438 0.8984375 0.5273438 0.890625 0.53125 0.9414063 0.6289063 0.9453125 0.625 0.9453125 0.6367188 0.9453125 0.5976563 0.9453125 0.6015625 0.8984375 0.6015625 0.8984375 0.4960938 0.8984375 0.5 0.890625 0.4960938 0.8984375 0.5 0.8320313 0.5 0.890625 0.4960938 0.8046875 0.59375 0.8046875 0.5898438 0.8320313 0.5898438 0.8320313 0.6015625 0.8046875 0.6015625 0.8046875 0.5976563 0.8085938 0.6328125 0.8046875 0.6367188 0.8046875 0.625 0.7931963 0.6274399 0.8046875 0.5351563 0.7931929 0.6311195 0.8046875 0.5351563 0.8046875 0.7539063 0.7931929 0.6311195 0.8046875 0.7539063 0.7067155 0.6729791 0.7931327 0.6730901 0.7067155 0.6729791 0.709585 0.6706083 0.7931327 0.6730901 0.8046875 0.7539063 0.7931327 0.6730901 0.7931531 0.6693429 0.7079739 0.6665234 0.7042396 0.670189 0.7017183 0.6680247 0.7931929 0.6311195 0.8046875 0.7539063 0.7931531 0.6693429 0.7079739 0.6665234 0.7017183 0.6680247 0.7066196 0.6636469 0.657865 0.5954006 0.661254 0.5903719 0.669142 0.5974904 0.661254 0.5903719 0.6706756 0.5943269 0.669142 0.5974904 0.669142 0.5974904 0.6706756 0.5943269 0.7093751 0.6334774 0.6542191 0.6023433 0.657732 0.5972856 0.6656011 0.6045186 0.657732 0.5972856 0.6672064 0.6013207 0.6656011 0.6045186 0.6656011 0.6045186 0.6672064 0.6013207 0.7058358 0.6404517 0.6540729 0.6042755 0.6635924 0.6083861 0.6543546 0.6202624 0.6635924 0.6083861 0.7022034 0.6473758 0.6745533 0.6295657 0.6543546 0.6202624 0.6484375 0.6210938 0.6540729 0.6042755 0.6616945 0.6221625 0.6543546 0.6202624 0.6635924 0.6083861 0.6685211 0.62525 0.6616945 0.6221625 0.6635924 0.6083861 0.6745533 0.6295657 0.6685211 0.62525 0.6635924 0.6083861 0.6794179 0.6348639 0.6745533 0.6295657 0.7022034 0.6473758 0.6831247 0.6409096 0.6794179 0.6348639 0.7022034 0.6473758 0.6942515 0.660293 0.6862586 0.6534677 0.7019596 0.6526791 0.6862586 0.6534677 0.6855093 0.6472589 0.7022034 0.6473758 0.6855093 0.6472589 0.6831247 0.6409096 0.7022034 0.6473758 0.6862586 0.6534677 0.7022034 0.6473758 0.7019596 0.6526791 0.7019596 0.6526791 0.7022034 0.6473758 0.7859094 0.6467247 0.785943 0.6536587 0.7019596 0.6526791 0.7859094 0.6467247 0.785943 0.6536587 0.7859094 0.6467247 0.7895057 0.6389886 0.7859094 0.6467247 0.7863369 0.6437664 0.7895057 0.6389886 0.7863486 0.6566506 0.785943 0.6536587 0.7894666 0.6614478 0.7042044 0.6432787 0.6656011 0.6045186 0.7058358 0.6404517 0.7042044 0.6432787 0.7058358 0.6404517 0.7863369 0.6437664 0.7058358 0.6404517 0.7895057 0.6389886 0.7863369 0.6437664 0.785943 0.6536587 0.7895057 0.6389886 0.7894666 0.6614478 0.6991799 0.6652868 0.6966667 0.663116 0.7049899 0.6595649 0.6966667 0.663116 0.7035919 0.6567221 0.7049899 0.6595649 0.7049899 0.6595649 0.7035919 0.6567221 0.7863486 0.6566506 0.7894666 0.6614478 0.7049899 0.6595649 0.7863486 0.6566506 0.7079739 0.6665234 0.7066196 0.6636469 0.7898935 0.6644589 0.7898935 0.6644589 0.7894666 0.6614478 0.7931531 0.6693429 0.7894666 0.6614478 0.7895057 0.6389886 0.7931531 0.6693429 0.7895057 0.6389886 0.7899345 0.6359996 0.7931929 0.6311195 0.7931531 0.6693429 0.7895057 0.6389886 0.7931929 0.6311195 0.7931531 0.6693429 0.7079739 0.6665234 0.7898935 0.6644589 0.7077907 0.6363229 0.669142 0.5974904 0.7093751 0.6334774 0.7899345 0.6359996 0.7077907 0.6363229 0.7093751 0.6334774 0.8320313 0.6328125 0.8085938 0.6328125 0.8320313 0.6289063 0.8085938 0.6328125 0.8085938 0.6289063 0.8320313 0.6289063 0.8828125 0.6289063 0.9414063 0.6289063 0.9414063 0.6328125 0.8828125 0.6289063 0.9414063 0.6328125 0.8828125 0.6328125 0.8320313 0.6328125 0.8320313 0.6289063 0.8828125 0.6289063 0.8320313 0.6210938 0.8085938 0.6210938 0.8320313 0.6171875 0.8085938 0.6210938 0.8085938 0.6171875 0.8320313 0.6171875 0.8828125 0.6171875 0.9414063 0.6171875 0.9414063 0.6210938 0.8828125 0.6171875 0.9414063 0.6210938 0.8828125 0.6210938 0.8320313 0.6210938 0.8320313 0.6171875 0.8828125 0.6171875 0.8320313 0.609375 0.8085938 0.609375 0.8320313 0.6054688 0.8085938 0.609375 0.8085938 0.6054688 0.8320313 0.6054688 0.8828125 0.6054688 0.9414063 0.6054688 0.9414063 0.609375 0.8828125 0.6054688 0.9414063 0.609375 0.8828125 0.609375 0.8320313 0.609375 0.8320313 0.6054688 0.8828125 0.6054688 0.8046875 0.6289063 0.8046875 0.625 0.8320313 0.625 0.8320313 0.6289063 0.8320313 0.625 0.8984375 0.625 0.8984375 0.625 0.9453125 0.625 0.9453125 0.6289063 0.9453125 0.5898438 0.9453125 0.6015625 0.9414063 0.5976563 0.9453125 0.6328125 0.9453125 0.6367188 0.8984375 0.6367188 0.8984375 0.6328125 0.8984375 0.6367188 0.8320313 0.6367188 0.8320313 0.6367188 0.8046875 0.6367188 0.8046875 0.6328125 0.8046875 0.6015625 0.8046875 0.5898438 0.8085938 0.59375 0.8320313 0.625 0.8046875 0.625 0.8046875 0.6210938 0.8984375 0.6210938 0.8984375 0.625 0.8320313 0.625 0.9453125 0.6210938 0.9453125 0.625 0.8984375 0.625 0.9453125 0.578125 0.9453125 0.5898438 0.9414063 0.5859375 0.8984375 0.6132813 0.9453125 0.6132813 0.9453125 0.6171875 0.8320313 0.6171875 0.8320313 0.6132813 0.8984375 0.6132813 0.8046875 0.6171875 0.8046875 0.6132813 0.8320313 0.6132813 0.8046875 0.5898438 0.8046875 0.578125 0.8085938 0.5820313 0.8320313 0.6132813 0.8046875 0.6132813 0.8046875 0.609375 0.8984375 0.609375 0.8984375 0.6132813 0.8320313 0.6132813 0.9453125 0.609375 0.9453125 0.6132813 0.8984375 0.6132813 0.9453125 0.5664063 0.9453125 0.578125 0.9414063 0.5742188 0.8984375 0.6015625 0.9453125 0.6015625 0.9453125 0.6054688 0.8320313 0.6054688 0.8320313 0.6015625 0.8984375 0.6015625 0.8046875 0.6054688 0.8046875 0.6015625 0.8320313 0.6015625 0.8046875 0.578125 0.8046875 0.5664063 0.8085938 0.5703125 0.8554688 0.390625 0.8554688 0.3828125 0.8945313 0.3828125 0.6210938 0.4296875 0.6132813 0.4179688 0.6445313 0.4179688 0.6132813 0.2773438 0.6445313 0.2773438 0.6367188 0.2851563 0.6367188 0.484375 0.6445313 0.4960938 0.6132813 0.4960938 0.6445313 0.4960938 0.6367188 0.484375 0.6445313 0.4570313 0.6367188 0.484375 0.6367188 0.4609375 0.6445313 0.4570313 0.6210938 0.4609375 0.6210938 0.484375 0.6132813 0.4570313 0.6210938 0.484375 0.6132813 0.4960938 0.6132813 0.4570313 0.6445313 0.4570313 0.6367188 0.4609375 0.6367188 0.453125 0.6367188 0.4609375 0.6210938 0.4609375 0.6210938 0.453125 0.6367188 0.4296875 0.6445313 0.4179688 0.6367188 0.453125 0.6445313 0.4179688 0.6445313 0.4570313 0.6367188 0.453125 0.6367188 0.4609375 0.6210938 0.453125 0.6367188 0.453125 0.6210938 0.4609375 0.6132813 0.4570313 0.6210938 0.453125 0.6132813 0.4570313 0.6132813 0.4179688 0.6210938 0.453125 0.8085938 0.5039063 0.8085938 0.5 0.8320313 0.5 0.8320313 0.5039063 0.8320313 0.5 0.8828125 0.5 0.8828125 0.5 0.9414063 0.5 0.9414063 0.5039063 0.8320313 0.5234375 0.8320313 0.5273438 0.8085938 0.5273438 0.8828125 0.5234375 0.8828125 0.5273438 0.8320313 0.5273438 0.8828125 0.5234375 0.9414063 0.5234375 0.9414063 0.5273438 0.8085938 0.515625 0.8085938 0.5117188 0.8320313 0.5117188 0.8320313 0.515625 0.8320313 0.5117188 0.8828125 0.5117188 0.8828125 0.5117188 0.9414063 0.5117188 0.9414063 0.515625 0.8085938 0.5820313 0.8320313 0.5820313 0.8320313 0.5859375 0.8320313 0.5820313 0.8828125 0.5820313 0.8828125 0.5859375 0.8828125 0.5859375 0.8828125 0.5820313 0.9414063 0.5820313 0.8085938 0.5703125 0.8320313 0.5703125 0.8320313 0.5742188 0.8828125 0.5742188 0.8320313 0.5742188 0.8320313 0.5703125 0.8828125 0.5742188 0.8828125 0.5703125 0.9414063 0.5703125 + + + + + + + + + + + + + + +

    41 0 0 102 1 1 103 2 2 76 3 3 98 4 4 100 5 5 222 6 6 224 7 7 225 8 8 13 9 9 34 10 10 36 11 11 161 12 12 272 13 13 273 14 14 82 15 15 51 15 16 52 16 17 58 17 18 87 17 19 88 17 20 2 18 21 33 19 22 30 20 23 27 21 24 17 22 25 9 23 26 87 24 27 57 24 28 116 24 29 269 25 30 159 25 31 158 25 32 17 26 33 23 27 34 14 28 35 32 29 36 6 30 37 18 31 38 159 32 39 161 33 40 158 34 41 75 35 42 102 1 43 74 36 44 75 35 45 100 5 46 101 37 47 11 38 48 12 39 49 114 40 50 7 41 51 37 42 52 11 43 53 79 44 54 96 45 55 97 46 56 6 47 57 26 48 58 1 49 59 12 50 60 39 51 61 8 52 62 267 53 63 266 54 64 118 55 65 42 56 66 73 57 67 43 58 68 43 58 69 72 59 70 44 60 71 72 59 72 45 61 73 44 60 74 45 61 75 70 62 76 46 63 77 46 63 78 68 64 79 47 65 80 68 64 81 48 66 82 47 65 83 69 67 84 49 68 85 48 66 86 49 68 87 66 69 88 50 70 89 50 70 90 65 71 91 51 72 92 65 71 93 52 73 94 51 72 95 64 74 96 53 75 97 52 73 98 63 76 99 54 77 100 53 75 101 62 78 102 55 79 103 54 77 104 60 80 105 56 81 106 55 79 107 223 82 108 161 33 109 224 7 110 76 83 111 45 84 112 46 85 113 105 86 114 114 40 115 111 87 116 121 88 117 58 88 118 88 88 119 40 89 120 34 90 121 39 91 122 78 92 123 47 92 124 48 92 125 80 93 126 49 94 127 50 95 128 56 81 129 113 96 130 110 97 131 7 98 132 108 99 133 2 100 134 75 101 135 44 101 136 45 101 137 0 102 138 104 103 139 86 104 140 83 105 141 94 106 142 82 107 143 128 108 144 227 109 145 127 110 146 82 107 147 95 111 148 81 112 149 32 113 150 26 114 151 31 115 152 86 116 153 55 116 154 56 117 155 33 118 156 35 119 157 30 120 158 234 121 159 109 122 160 91 123 161 81 124 162 50 125 163 51 126 164 8 127 165 34 127 166 3 128 167 108 129 168 119 130 169 120 131 170 107 132 171 20 133 172 21 134 173 106 135 174 108 136 175 105 137 176 20 138 177 104 139 178 0 140 179 38 141 180 109 142 181 106 143 182 235 144 183 236 145 184 130 146 185 20 147 186 5 148 187 24 149 188 177 150 189 73 151 190 61 152 191 166 153 192 241 154 193 167 155 194 115 156 195 42 56 196 112 157 197 24 158 198 110 159 199 113 160 200 114 161 201 112 162 202 111 163 203 25 164 204 113 165 205 118 166 206 114 167 207 116 168 208 115 169 209 232 170 210 162 171 211 163 172 212 165 173 213 233 174 214 164 175 215 85 176 216 54 177 217 55 178 218 236 179 219 131 179 220 130 179 221 162 180 222 234 181 223 165 182 224 164 183 225 233 184 226 230 185 227 135 186 228 170 186 229 171 186 230 136 187 231 171 188 232 172 189 233 136 190 234 173 190 235 137 190 236 126 191 237 122 192 238 163 193 239 146 194 240 176 195 241 147 196 242 149 197 243 177 198 244 178 199 245 146 200 246 178 201 247 175 202 248 84 203 249 53 204 250 54 205 251 139 206 252 180 206 253 138 206 254 139 207 255 182 208 256 181 209 257 140 210 258 183 210 259 182 210 260 125 211 261 242 212 262 168 213 263 150 214 264 185 215 265 184 216 266 153 217 267 186 218 268 152 219 269 153 220 270 184 221 271 187 222 272 268 223 273 269 224 274 158 225 275 143 226 276 189 226 277 142 226 278 143 227 279 191 228 280 190 229 281 144 230 282 192 230 283 191 230 284 105 231 285 111 232 286 42 233 287 154 234 288 195 235 289 194 236 290 157 237 291 196 238 292 156 239 293 157 240 294 194 241 295 197 242 296 263 243 297 262 244 298 256 245 299 204 246 300 200 247 301 199 248 302 207 249 303 211 250 304 212 251 305 215 252 306 219 253 307 220 254 308 131 255 309 238 256 310 132 257 311 132 258 312 239 258 313 133 258 314 198 259 315 245 260 316 244 261 317 199 262 318 246 263 319 245 264 320 201 265 321 246 266 322 200 267 323 202 268 324 247 269 325 201 270 326 202 271 327 249 272 328 248 273 329 203 274 330 250 275 331 249 276 332 205 277 333 250 278 334 204 279 335 198 280 336 251 281 337 205 282 338 206 283 339 253 284 340 207 285 341 208 286 342 253 287 343 254 288 344 209 289 345 254 290 346 255 291 347 209 292 348 256 293 349 210 270 350 210 294 351 257 295 352 211 295 353 212 296 354 257 297 355 258 298 356 213 299 357 258 300 358 259 301 359 213 302 360 252 303 361 206 304 362 214 305 363 261 306 364 215 307 365 216 308 366 261 309 367 262 310 368 217 311 369 262 312 370 263 313 371 217 314 372 264 315 373 218 316 374 218 317 375 265 318 376 219 319 377 220 320 378 265 321 379 266 322 380 221 323 381 266 324 382 267 325 383 221 326 384 260 327 385 214 328 386 14 329 387 22 330 388 4 331 389 16 332 390 118 333 391 121 88 392 142 334 393 189 335 394 188 336 395 169 337 396 240 338 397 166 339 398 242 340 399 169 341 400 168 342 401 1 343 402 28 344 403 15 345 404 127 258 405 226 258 406 126 258 407 15 346 408 32 347 409 18 348 410 42 349 411 41 350 412 38 351 413 23 352 414 27 353 415 22 354 416 79 355 417 48 355 418 49 356 419 80 357 420 95 111 421 96 45 422 86 358 423 107 359 424 89 360 425 86 358 426 90 361 427 85 362 428 85 362 429 92 363 430 84 364 431 84 364 432 93 365 433 83 105 434 138 366 435 180 367 436 179 368 437 78 369 438 98 4 439 77 370 440 79 44 441 99 371 442 78 369 443 77 372 444 46 373 445 47 374 446 121 375 447 317 376 448 302 377 449 11 378 450 33 379 451 10 380 452 83 381 453 52 382 454 53 383 455 147 384 456 176 385 457 123 386 458 9 387 459 22 388 460 27 389 461 13 390 462 40 391 463 12 392 464 229 393 465 128 393 466 129 393 467 2 394 468 35 395 469 7 396 470 38 141 471 103 2 472 91 397 473 152 398 474 186 399 475 124 400 476 137 401 477 173 402 478 174 403 479 159 404 480 271 405 481 160 406 482 160 407 483 272 407 484 161 407 485 156 408 486 196 409 487 193 410 488 222 411 489 275 412 490 223 413 491 276 414 492 225 415 493 224 416 494 225 417 495 274 418 496 222 419 497 314 420 498 320 421 499 321 8 500 284 422 501 280 423 502 283 424 503 287 425 504 291 426 505 288 427 506 295 428 507 299 429 508 296 430 509 278 431 510 303 432 511 279 433 512 279 434 513 304 435 514 280 436 515 304 437 516 281 438 517 280 439 518 305 440 519 282 441 520 281 442 521 282 443 522 307 444 523 283 445 524 283 446 525 308 447 526 284 448 527 308 449 528 285 450 529 284 451 530 309 452 531 278 453 532 285 454 533 311 455 534 286 456 535 287 457 536 288 458 537 311 459 538 287 460 539 289 461 540 312 462 541 288 463 542 314 464 543 289 465 544 290 442 545 315 466 546 290 467 547 291 466 548 292 468 549 315 469 550 291 470 551 293 471 552 316 472 553 292 473 554 310 474 555 293 475 556 286 476 557 319 477 558 294 478 559 295 479 560 296 480 561 319 481 562 295 482 563 297 483 564 320 484 565 296 485 566 322 486 567 297 487 568 298 488 569 323 489 570 298 490 571 299 491 572 300 492 573 323 493 574 299 494 575 301 495 576 324 496 577 300 497 578 318 498 579 301 499 580 294 500 581 43 501 582 74 502 583 41 503 584 1 504 585 24 149 586 6 505 587 120 506 588 8 507 589 3 508 590 9 509 591 16 510 592 4 511 593 20 147 594 1 504 595 15 512 596 154 513 597 156 514 598 155 515 599 155 515 600 145 516 601 142 517 602 145 516 603 143 518 604 142 517 605 147 519 606 149 520 607 146 520 608 134 521 609 148 522 610 147 519 611 134 521 612 136 523 613 137 524 614 150 525 615 152 526 616 151 527 617 151 527 618 141 528 619 138 529 620 141 528 621 139 520 622 138 529 623 166 530 624 168 531 625 169 8 626 167 532 627 133 533 628 168 531 629 133 533 630 131 8 631 132 8 632 165 534 633 163 535 634 162 8 635 126 536 636 164 537 637 129 538 638 126 536 639 128 539 640 127 8 641 41 0 642 74 36 643 102 1 644 76 3 645 77 370 646 98 4 647 222 6 648 223 82 649 224 7 650 13 9 651 3 540 652 34 10 653 273 14 654 276 541 655 224 542 656 224 542 657 161 12 658 273 14 659 82 15 660 81 16 661 51 15 662 58 17 663 57 17 664 87 17 665 2 18 666 10 543 667 33 19 668 27 21 669 29 544 670 17 22 671 116 24 672 117 24 673 120 24 674 120 24 675 119 24 676 116 24 677 119 24 678 87 24 679 116 24 680 269 545 681 270 545 682 159 545 683 17 26 684 29 546 685 23 27 686 32 29 687 31 547 688 6 30 689 159 32 690 160 8 691 161 33 692 75 35 693 101 37 694 102 1 695 75 35 696 76 3 697 100 5 698 10 548 699 2 100 700 108 99 701 108 99 702 120 506 703 13 549 704 120 506 705 3 508 706 13 549 707 10 548 708 108 99 709 13 549 710 12 39 711 8 507 712 117 550 713 10 548 714 13 549 715 12 39 716 114 40 717 7 98 718 11 38 719 11 38 720 10 548 721 12 39 722 12 39 723 117 550 724 114 40 725 7 41 726 35 551 727 37 42 728 79 44 729 80 357 730 96 45 731 6 47 732 31 552 733 26 48 734 12 50 735 40 553 736 39 51 737 118 55 738 113 554 739 244 555 740 113 554 741 251 556 742 244 555 743 244 555 744 252 520 745 259 557 746 264 558 747 58 559 748 265 520 749 58 559 750 118 55 751 266 54 752 266 54 753 265 520 754 58 559 755 259 557 756 260 560 757 267 53 758 244 555 759 259 557 760 118 55 761 259 557 762 267 53 763 118 55 764 42 56 765 61 561 766 73 57 767 43 58 768 73 57 769 72 59 770 72 59 771 71 562 772 45 61 773 45 61 774 71 562 775 70 62 776 46 63 777 70 62 778 68 64 779 68 64 780 69 67 781 48 66 782 69 67 783 67 563 784 49 68 785 49 68 786 67 563 787 66 69 788 50 70 789 66 69 790 65 71 791 65 71 792 64 74 793 52 73 794 64 74 795 63 76 796 53 75 797 63 76 798 62 78 799 54 77 800 62 78 801 60 80 802 55 79 803 60 80 804 59 564 805 56 81 806 223 82 807 158 34 808 161 33 809 76 83 810 75 565 811 45 84 812 105 86 813 108 99 814 114 40 815 121 88 816 118 333 817 58 88 818 40 89 819 36 566 820 34 90 821 78 92 822 77 92 823 47 92 824 80 93 825 79 567 826 49 94 827 56 81 828 59 564 829 113 96 830 7 98 831 114 40 832 108 99 833 75 101 834 74 101 835 44 101 836 86 104 837 56 568 838 0 102 839 56 568 840 110 569 841 5 570 842 0 102 843 56 568 844 5 570 845 83 105 846 93 365 847 94 106 848 128 108 849 228 571 850 227 109 851 82 107 852 94 106 853 95 111 854 32 113 855 28 572 856 26 114 857 86 116 858 85 117 859 55 116 860 33 118 861 37 573 862 35 119 863 273 574 864 87 575 865 276 576 866 87 575 867 119 577 868 276 576 869 99 578 870 97 579 871 230 580 872 232 581 873 122 582 874 235 583 875 242 584 876 125 585 877 268 586 878 98 587 879 99 578 880 230 580 881 232 581 882 235 583 883 241 588 884 232 581 885 241 588 886 240 589 887 231 590 888 232 581 889 240 589 890 231 590 891 240 589 892 243 591 893 242 584 894 268 586 895 275 8 896 242 584 897 275 8 898 274 8 899 243 591 900 242 584 901 274 8 902 277 592 903 276 576 904 119 577 905 243 591 906 274 8 907 277 592 908 231 590 909 243 591 910 119 577 911 243 591 912 277 592 913 119 577 914 100 8 915 98 587 916 230 580 917 101 593 918 100 8 919 230 580 920 234 121 921 231 590 922 109 122 923 231 590 924 119 577 925 109 122 926 101 593 927 230 580 928 233 594 929 101 593 930 233 594 931 102 595 932 233 594 933 234 121 934 91 123 935 102 595 936 233 594 937 103 8 938 103 8 939 233 594 940 91 123 941 81 124 942 80 596 943 50 125 944 8 127 945 39 597 946 34 127 947 108 129 948 109 598 949 119 130 950 21 134 951 16 599 952 121 600 953 121 600 954 107 132 955 21 134 956 106 135 957 109 601 958 108 136 959 20 138 960 107 602 961 104 139 962 38 141 963 91 397 964 109 142 965 130 146 966 167 603 967 235 144 968 167 603 969 241 604 970 235 144 971 20 147 972 0 605 973 5 148 974 116 606 975 57 607 976 196 608 977 57 607 978 193 609 979 196 608 980 174 610 981 67 611 982 69 612 983 179 613 984 123 614 985 176 615 986 188 616 987 124 617 988 186 618 989 116 606 990 196 608 991 197 619 992 174 610 993 69 612 994 68 620 995 185 621 996 179 613 997 176 615 998 184 622 999 185 621 1000 176 615 1001 184 622 1002 176 615 1003 175 623 1004 187 624 1005 184 622 1006 175 623 1007 195 625 1008 188 616 1009 186 618 1010 116 606 1011 197 619 1012 187 624 1013 197 619 1014 194 626 1015 187 624 1016 194 626 1017 195 625 1018 186 618 1019 194 626 1020 186 618 1021 187 624 1022 174 610 1023 68 620 1024 70 627 1025 174 610 1026 70 627 1027 71 628 1028 116 606 1029 187 624 1030 175 623 1031 177 150 1032 174 610 1033 71 628 1034 116 606 1035 175 623 1036 115 629 1037 175 623 1038 178 630 1039 115 629 1040 178 630 1041 177 150 1042 61 152 1043 177 150 1044 71 628 1045 72 631 1046 177 150 1047 72 631 1048 73 151 1049 61 152 1050 115 629 1051 178 630 1052 166 153 1053 240 632 1054 241 154 1055 115 156 1056 61 561 1057 42 56 1058 24 158 1059 5 633 1060 110 159 1061 114 161 1062 115 634 1063 112 162 1064 118 166 1065 19 635 1066 25 164 1067 25 164 1068 24 636 1069 113 165 1070 114 167 1071 117 637 1072 116 168 1073 232 170 1074 231 638 1075 162 171 1076 165 173 1077 234 639 1078 233 174 1079 85 176 1080 84 640 1081 54 177 1082 236 641 1083 237 641 1084 131 641 1085 162 180 1086 231 642 1087 234 181 1088 230 185 1089 229 643 1090 129 644 1091 129 644 1092 164 183 1093 230 185 1094 135 645 1095 134 645 1096 170 645 1097 136 187 1098 135 646 1099 171 188 1100 136 647 1101 172 647 1102 173 647 1103 226 648 1104 122 192 1105 126 191 1106 122 192 1107 232 649 1108 163 193 1109 146 194 1110 175 650 1111 176 195 1112 149 197 1113 148 651 1114 177 198 1115 146 200 1116 149 652 1117 178 201 1118 84 203 1119 83 653 1120 53 204 1121 139 654 1122 181 654 1123 180 654 1124 139 207 1125 140 655 1126 182 208 1127 140 645 1128 141 645 1129 183 645 1130 168 213 1131 133 656 1132 125 211 1133 133 656 1134 239 657 1135 125 211 1136 150 214 1137 151 658 1138 185 215 1139 153 217 1140 187 659 1141 186 218 1142 153 220 1143 150 660 1144 184 221 1145 158 225 1146 223 661 1147 268 223 1148 223 661 1149 275 662 1150 268 223 1151 143 663 1152 190 663 1153 189 663 1154 143 227 1155 144 664 1156 191 228 1157 144 665 1158 145 665 1159 192 665 1160 112 666 1161 42 233 1162 111 232 1163 42 233 1164 38 667 1165 105 231 1166 38 667 1167 106 668 1168 105 231 1169 154 234 1170 155 669 1171 195 235 1172 157 237 1173 197 670 1174 196 238 1175 157 240 1176 154 671 1177 194 241 1178 57 607 1179 58 559 1180 263 243 1181 58 559 1182 264 558 1183 263 243 1184 192 672 1185 193 609 1186 191 673 1187 193 609 1188 57 607 1189 191 673 1190 261 674 1191 260 560 1192 258 675 1193 260 560 1194 259 557 1195 258 675 1196 262 244 1197 261 674 1198 258 675 1199 253 676 1200 252 520 1201 245 677 1202 252 520 1203 244 555 1204 245 677 1205 254 678 1206 253 676 1207 245 677 1208 249 679 1209 250 680 1210 63 681 1211 250 680 1212 251 556 1213 59 682 1214 63 681 1215 250 680 1216 62 683 1217 251 556 1218 113 554 1219 59 682 1220 59 682 1221 60 684 1222 250 680 1223 60 684 1224 62 683 1225 250 680 1226 249 679 1227 63 681 1228 64 685 1229 249 679 1230 64 685 1231 65 686 1232 66 687 1233 67 611 1234 249 679 1235 67 611 1236 174 610 1237 173 688 1238 249 679 1239 67 611 1240 173 688 1241 249 679 1242 65 686 1243 66 687 1244 248 689 1245 249 679 1246 173 688 1247 248 689 1248 173 688 1249 172 520 1250 247 520 1251 248 689 1252 255 520 1253 248 689 1254 172 520 1255 255 520 1256 172 520 1257 171 690 1258 181 520 1259 255 520 1260 172 520 1261 181 520 1262 254 678 1263 245 677 1264 246 520 1265 255 520 1266 254 678 1267 247 520 1268 254 678 1269 246 520 1270 247 520 1271 170 691 1272 123 614 1273 180 692 1274 123 614 1275 179 613 1276 180 692 1277 171 690 1278 170 691 1279 180 692 1280 171 690 1281 180 692 1282 181 520 1283 255 520 1284 181 520 1285 190 520 1286 181 520 1287 182 693 1288 190 520 1289 256 245 1290 255 520 1291 263 243 1292 183 694 1293 124 617 1294 189 695 1295 124 617 1296 188 616 1297 189 695 1298 182 693 1299 183 694 1300 189 695 1301 190 520 1302 191 673 1303 57 607 1304 182 693 1305 189 695 1306 190 520 1307 255 520 1308 190 520 1309 263 243 1310 190 520 1311 57 607 1312 263 243 1313 262 244 1314 258 675 1315 257 696 1316 262 244 1317 257 696 1318 256 245 1319 203 697 1320 202 520 1321 200 247 1322 202 520 1323 201 520 1324 200 247 1325 198 698 1326 205 699 1327 199 248 1328 205 699 1329 204 246 1330 199 248 1331 204 246 1332 203 697 1333 200 247 1334 208 700 1335 209 520 1336 211 250 1337 209 520 1338 210 520 1339 211 250 1340 213 520 1341 206 701 1342 212 251 1343 206 701 1344 207 249 1345 212 251 1346 207 249 1347 208 700 1348 211 250 1349 216 702 1350 217 520 1351 219 253 1352 217 520 1353 218 520 1354 219 253 1355 221 520 1356 214 703 1357 220 254 1358 214 703 1359 215 252 1360 220 254 1361 215 252 1362 216 702 1363 219 253 1364 131 255 1365 237 704 1366 238 256 1367 132 705 1368 238 705 1369 239 705 1370 198 259 1371 199 706 1372 245 260 1373 199 262 1374 200 707 1375 246 263 1376 201 265 1377 247 708 1378 246 266 1379 202 268 1380 248 709 1381 247 269 1382 202 271 1383 203 710 1384 249 272 1385 203 274 1386 204 711 1387 250 275 1388 205 277 1389 251 712 1390 250 278 1391 198 280 1392 244 713 1393 251 281 1394 206 283 1395 252 714 1396 253 284 1397 208 286 1398 207 715 1399 253 287 1400 209 289 1401 208 716 1402 254 290 1403 209 292 1404 255 717 1405 256 293 1406 210 294 1407 256 718 1408 257 295 1409 212 296 1410 211 719 1411 257 297 1412 213 299 1413 212 720 1414 258 300 1415 213 302 1416 259 721 1417 252 303 1418 214 305 1419 260 722 1420 261 306 1421 216 308 1422 215 723 1423 261 309 1424 217 311 1425 216 724 1426 262 312 1427 217 314 1428 263 725 1429 264 315 1430 218 317 1431 264 726 1432 265 318 1433 220 320 1434 219 727 1435 265 321 1436 221 323 1437 220 728 1438 266 324 1439 221 326 1440 267 729 1441 260 327 1442 14 329 1443 23 730 1444 22 330 1445 16 332 1446 19 731 1447 118 333 1448 195 732 1449 155 733 1450 188 336 1451 155 733 1452 142 334 1453 188 336 1454 169 337 1455 243 734 1456 240 338 1457 242 340 1458 243 735 1459 169 341 1460 1 343 1461 26 736 1462 28 344 1463 127 737 1464 227 737 1465 226 737 1466 15 346 1467 28 738 1468 32 347 1469 42 349 1470 43 739 1471 41 350 1472 23 352 1473 29 740 1474 27 353 1475 79 355 1476 78 356 1477 48 355 1478 80 357 1479 81 112 1480 95 111 1481 86 358 1482 104 741 1483 107 359 1484 86 358 1485 89 360 1486 90 361 1487 85 362 1488 90 361 1489 92 363 1490 84 364 1491 92 363 1492 93 365 1493 185 742 1494 151 743 1495 179 368 1496 151 743 1497 138 366 1498 179 368 1499 78 369 1500 99 371 1501 98 4 1502 79 44 1503 97 46 1504 99 371 1505 77 372 1506 76 744 1507 46 373 1508 121 375 1509 88 745 1510 324 746 1511 88 745 1512 322 8 1513 323 8 1514 324 746 1515 88 745 1516 323 8 1517 325 747 1518 318 748 1519 317 376 1520 121 375 1521 324 746 1522 325 747 1523 309 749 1524 107 750 1525 302 377 1526 107 750 1527 121 375 1528 302 377 1529 317 376 1530 310 751 1531 302 377 1532 121 375 1533 325 747 1534 317 376 1535 11 378 1536 37 752 1537 33 379 1538 83 381 1539 82 753 1540 52 382 1541 170 754 1542 134 755 1543 123 386 1544 134 755 1545 147 384 1546 123 386 1547 9 387 1548 4 756 1549 22 388 1550 13 390 1551 36 757 1552 40 391 1553 229 758 1554 228 758 1555 128 758 1556 2 394 1557 30 759 1558 35 395 1559 38 141 1560 41 0 1561 103 2 1562 183 760 1563 141 761 1564 124 400 1565 141 761 1566 152 398 1567 124 400 1568 177 762 1569 148 763 1570 174 403 1571 148 763 1572 137 401 1573 174 403 1574 159 404 1575 270 764 1576 271 405 1577 160 765 1578 271 765 1579 272 765 1580 192 766 1581 145 767 1582 193 410 1583 145 767 1584 156 408 1585 193 410 1586 222 411 1587 274 768 1588 275 412 1589 276 414 1590 277 769 1591 225 415 1592 225 417 1593 277 770 1594 274 418 1595 322 8 1596 88 745 1597 321 8 1598 88 745 1599 87 575 1600 321 8 1601 87 575 1602 273 574 1603 271 771 1604 273 574 1605 272 772 1606 271 771 1607 87 575 1608 271 771 1609 270 8 1610 269 773 1611 268 586 1612 125 585 1613 321 8 1614 87 575 1615 270 8 1616 269 773 1617 125 585 1618 239 774 1619 317 376 1620 318 748 1621 316 775 1622 318 748 1623 319 776 1624 316 775 1625 316 775 1626 319 776 1627 320 421 1628 302 377 1629 310 751 1630 303 777 1631 310 751 1632 311 778 1633 303 777 1634 303 777 1635 311 778 1636 312 779 1637 309 749 1638 308 780 1639 89 781 1640 308 780 1641 307 782 1642 93 783 1643 89 781 1644 107 750 1645 309 749 1646 90 784 1647 89 781 1648 308 780 1649 92 785 1650 90 784 1651 308 780 1652 93 783 1653 92 785 1654 308 780 1655 94 8 1656 93 783 1657 307 782 1658 95 8 1659 94 8 1660 307 782 1661 230 580 1662 97 579 1663 229 786 1664 97 579 1665 96 787 1666 307 782 1667 96 787 1668 95 8 1669 307 782 1670 97 579 1671 307 782 1672 229 786 1673 229 786 1674 307 782 1675 306 788 1676 228 8 1677 229 786 1678 306 788 1679 228 8 1680 306 788 1681 313 789 1682 306 788 1683 305 790 1684 313 789 1685 227 791 1686 228 8 1687 237 8 1688 304 8 1689 303 777 1690 312 779 1691 304 8 1692 312 779 1693 305 790 1694 312 779 1695 313 789 1696 305 790 1697 228 8 1698 313 789 1699 237 8 1700 235 583 1701 122 582 1702 236 792 1703 122 582 1704 226 793 1705 236 792 1706 236 792 1707 226 793 1708 227 791 1709 237 8 1710 236 792 1711 227 791 1712 269 773 1713 239 774 1714 238 794 1715 238 794 1716 237 8 1717 270 8 1718 237 8 1719 313 789 1720 270 8 1721 313 789 1722 314 420 1723 321 8 1724 270 8 1725 313 789 1726 321 8 1727 270 8 1728 269 773 1729 238 794 1730 315 795 1731 316 775 1732 320 421 1733 314 420 1734 315 795 1735 320 421 1736 284 422 1737 285 796 1738 279 797 1739 285 796 1740 278 798 1741 279 797 1742 280 423 1743 281 8 1744 282 8 1745 280 423 1746 282 8 1747 283 424 1748 284 422 1749 279 797 1750 280 423 1751 287 425 1752 286 799 1753 292 800 1754 286 799 1755 293 8 1756 292 800 1757 291 426 1758 290 8 1759 289 8 1760 291 426 1761 289 8 1762 288 427 1763 287 425 1764 292 800 1765 291 426 1766 295 428 1767 294 8 1768 300 8 1769 294 8 1770 301 8 1771 300 8 1772 299 429 1773 298 8 1774 297 8 1775 299 429 1776 297 8 1777 296 430 1778 295 428 1779 300 8 1780 299 429 1781 278 431 1782 302 801 1783 303 432 1784 279 434 1785 303 802 1786 304 435 1787 304 437 1788 305 803 1789 281 438 1790 305 440 1791 306 804 1792 282 441 1793 282 443 1794 306 805 1795 307 444 1796 283 446 1797 307 806 1798 308 447 1799 308 449 1800 309 807 1801 285 450 1802 309 452 1803 302 808 1804 278 453 1805 311 455 1806 310 809 1807 286 456 1808 288 458 1809 312 810 1810 311 459 1811 289 461 1812 313 811 1813 312 462 1814 314 464 1815 313 812 1816 289 465 1817 315 466 1818 314 467 1819 290 467 1820 292 468 1821 316 813 1822 315 469 1823 293 471 1824 317 814 1825 316 472 1826 310 474 1827 317 815 1828 293 475 1829 319 477 1830 318 816 1831 294 478 1832 296 480 1833 320 817 1834 319 481 1835 297 483 1836 321 818 1837 320 484 1838 322 486 1839 321 819 1840 297 487 1841 323 489 1842 322 820 1843 298 490 1844 300 492 1845 324 821 1846 323 493 1847 301 495 1848 325 822 1849 324 496 1850 318 498 1851 325 823 1852 301 499 1853 43 501 1854 44 824 1855 74 502 1856 1 504 1857 20 147 1858 24 149 1859 120 506 1860 117 550 1861 8 507 1862 9 509 1863 19 825 1864 16 510 1865 19 825 1866 9 509 1867 25 826 1868 9 509 1869 17 827 1870 25 826 1871 14 828 1872 4 511 1873 21 829 1874 4 511 1875 16 510 1876 21 829 1877 25 826 1878 17 827 1879 18 830 1880 17 827 1881 14 828 1882 15 512 1883 6 505 1884 24 149 1885 18 830 1886 24 149 1887 25 826 1888 18 830 1889 17 827 1890 15 512 1891 18 830 1892 14 828 1893 21 829 1894 15 512 1895 21 829 1896 20 147 1897 15 512 1898 154 513 1899 157 520 1900 156 514 1901 155 515 1902 156 514 1903 145 516 1904 145 516 1905 144 520 1906 143 518 1907 147 519 1908 148 522 1909 149 520 1910 134 521 1911 137 524 1912 148 522 1913 134 521 1914 135 520 1915 136 523 1916 150 525 1917 153 520 1918 152 526 1919 151 527 1920 152 526 1921 141 528 1922 141 528 1923 140 520 1924 139 520 1925 166 530 1926 167 532 1927 168 531 1928 167 532 1929 130 831 1930 133 533 1931 133 533 1932 130 831 1933 131 8 1934 165 534 1935 164 537 1936 163 535 1937 126 536 1938 163 535 1939 164 537 1940 126 536 1941 129 538 1942 128 539 1943

    +
    +
    +
    + + + + 1.125 1.2511 -0.2375 1.875 1.2511 -0.2375 1.875 2.2527 -0.2375 1.125 2.2527 -0.2375 1.125 1.251099 0.2375 1.875 1.251099 0.2375 1.875 2.2527 0.2375 1.125 2.2527 0.2375 + + + + + + + + + + 0 0 -1 0 0 1 + + + + + + + + + + 0.3398438 0.8203125 0.40625 0.8632813 0.3398438 0.8632813 0.1484375 0.8203125 0.08203125 0.8632813 0.08203125 0.8203125 0.3398438 0.8203125 0.40625 0.8203125 0.40625 0.8632813 0.1484375 0.8203125 0.1484375 0.8632813 0.08203125 0.8632813 + + + + + + + + + + + + + + +

    0 0 0 2 0 1 1 0 2 6 1 3 4 1 4 5 1 5 0 0 6 3 0 7 2 0 8 6 1 9 7 1 10 4 1 11

    +
    +
    +
    + + + + -2.7797e-7 0.4163811 0.262669 2.63627e-7 -0.4163811 0.262669 0.2795697 0.2081907 0.117669 0.27957 -0.2081903 0.117669 0.2795697 0.2081907 -0.152556 0.27957 -0.2081903 -0.152556 0.09754449 0.4903932 -0.242556 0.0828424 0.4164784 -0.317556 0.1913412 0.4619403 -0.242556 0.1625002 0.3923144 -0.317556 0.2777848 0.4157353 -0.242556 0.2359163 0.3530727 -0.317556 0.3535532 0.353554 -0.242556 0.3002635 0.3002646 -0.317556 0.4157345 0.277786 -0.242556 0.3530725 0.2359166 -0.317556 0.4619396 0.1913424 -0.242556 0.3923134 0.1625022 -0.317556 0.4903928 0.09754586 -0.242556 0.416478 0.08284306 -0.317556 0.5000004 7.15256e-7 -0.242556 0.4246375 8.34465e-7 -0.317556 0.4903927 -0.09754455 -0.242556 0.4164779 -0.08284199 -0.317556 0.4619401 -0.1913412 -0.242556 0.3923138 -0.1625012 -0.317556 0.4157351 -0.2777848 -0.242556 0.353073 -0.2359156 -0.317556 0.3535538 -0.3535532 -0.242556 0.3002642 -0.3002635 -0.317556 0.2777854 -0.4157344 -0.242556 0.2359163 -0.3530723 -0.317556 0.1913417 -0.4619397 -0.242556 0.162501 -0.3923137 -0.317556 0.0975455 -0.4903927 -0.242556 0.082843 -0.4164779 -0.317556 0.09754449 0.4903932 0.207669 0.0828424 0.4164784 0.282669 0.1913412 0.4619403 0.207669 0.1625002 0.3923144 0.282669 0.2777848 0.4157353 0.207669 0.2359163 0.3530727 0.282669 0.3535532 0.353554 0.207669 0.3002635 0.3002646 0.282669 0.4157345 0.277786 0.207669 0.3530725 0.2359166 0.282669 0.4619396 0.1913424 0.207669 0.3923134 0.1625022 0.282669 0.4903928 0.09754586 0.207669 0.416478 0.08284306 0.282669 0.5000004 7.15256e-7 0.207669 0.4246375 8.34465e-7 0.282669 0.4903927 -0.09754455 0.207669 0.4164779 -0.08284199 0.282669 0.4619401 -0.1913412 0.207669 0.3923138 -0.1625012 0.282669 0.4157351 -0.2777848 0.207669 0.353073 -0.2359156 0.282669 0.3535538 -0.3535532 0.207669 0.3002642 -0.3002635 0.282669 0.2777854 -0.4157344 0.207669 0.2359163 -0.3530723 0.282669 0.1913417 -0.4619397 0.207669 0.162501 -0.3923137 0.282669 0.0975455 -0.4903927 0.207669 0.082843 -0.4164779 0.282669 0.01996779 0.4226706 0.282669 0.01996713 0.4980335 0.207669 -2.86847e-7 0.5 0.1794527 -2.7797e-7 0.4163811 -0.297556 0.01996779 0.4226706 -0.317556 0.01996713 0.4980335 -0.242556 -2.86847e-7 0.5 -0.2143397 2.86847e-7 -0.5 -0.2143397 0.01996773 -0.4980334 -0.242556 2.63627e-7 -0.4163811 -0.297556 0.01996833 -0.4226705 -0.317556 2.86847e-7 -0.5 0.1794527 0.01996773 -0.4980334 0.207669 0.01996833 -0.4226705 0.282669 + + + + + + + + + + -0.597267 0.8020425 0 -0.597267 0.8020425 0 -0.597267 0.8020426 0 0 -2.04634e-6 1 0 3.63074e-6 1 0 0 1 -0.4604119 -3.11456e-7 0.8877055 -0.4604119 -3.28784e-7 0.8877055 -0.4604119 -3.40901e-7 0.8877055 0 -9.6597e-7 -1 0 2.02082e-6 -1 0 0 -1 0.1376144 0.6918451 -0.7088109 0.2699437 0.6517032 -0.7088112 0.1376144 0.6918458 -0.7088102 0.3918973 0.5865175 -0.7088115 0.2699443 0.6517028 -0.7088114 0.4987913 0.4987925 -0.7088111 0.391898 0.5865171 -0.7088114 0.5865169 0.3918989 -0.7088111 0.4987911 0.4987931 -0.7088109 0.5865169 0.3918986 -0.7088113 0.6517024 0.2699456 -0.7088112 0.6517026 0.2699452 -0.7088112 0.6918438 0.1376183 -0.7088114 0.6918439 0.1376182 -0.7088112 0.7053979 -2.52695e-7 -0.7088116 0.6918441 -0.1376166 -0.7088113 0.7053984 -1.6417e-7 -0.7088111 0.6517035 -0.2699428 -0.7088114 0.6918436 -0.1376168 -0.7088117 0.5865179 -0.3918975 -0.7088111 0.6517036 -0.2699429 -0.7088112 0.4987917 -0.4987921 -0.7088112 0.5865176 -0.3918977 -0.7088113 0.391898 -0.5865173 -0.7088114 0.4987916 -0.4987922 -0.7088112 0.2699458 -0.6517023 -0.7088113 0.3918978 -0.5865172 -0.7088114 0.1376171 -0.6918442 -0.7088111 0.2699452 -0.6517028 -0.7088111 0.2699453 -0.6517027 0.7088111 0.1376169 -0.6918443 0.708811 0.2699455 -0.6517025 0.7088112 0.7053979 -2.83429e-7 0.7088116 0.691844 -0.1376168 0.7088114 0.7053983 -3.40777e-7 0.7088113 0.6517034 -0.2699428 0.7088115 0.5865178 -0.3918976 0.7088112 0.6517034 -0.2699431 0.7088113 0.9951844 -0.09802079 0 0.9951844 -0.09802079 0 -1 0 0 -1 0 0 -1 0 0 0.8819208 0.4713979 0 0.8819208 0.4713977 0 0.8819207 0.4713979 0 0.6517024 0.2699453 0.7088114 0.6918437 0.1376184 0.7088114 0.6918439 0.1376183 0.7088112 0.9951846 0.09802001 0 0.9951846 0.09802001 0 0.9951845 0.09802001 0 0.4713966 0.8819215 0 0.06930506 0.7037026 0.7071064 0.1376147 0.6918449 0.7088109 0.06930607 0.7037023 0.7071067 0.4987913 0.4987926 0.7088111 0.586517 0.3918988 0.7088112 0.5865169 0.3918989 0.7088113 0.4987916 -0.4987919 0.7088114 0.3918982 -0.5865171 0.7088114 0.3918979 -0.5865172 0.7088115 -0.6818548 -0.5159897 0.5184869 -0.6818471 -0.5159924 0.5184944 -0.6818561 -0.5159893 0.5184856 0.06930792 -0.7037023 -0.7071065 0.1376169 -0.6918446 -0.7088108 0.8819218 -0.471396 0 0.8819218 -0.4713959 0 0.8819218 -0.4713959 0 0.2902838 0.9569406 0 0.2902842 0.9569405 0 0.2902837 0.9569407 0 0.3918977 0.5865172 0.7088115 0.3918972 0.5865176 0.7088115 0.6517025 0.2699455 0.7088112 0.5865175 -0.3918976 0.7088114 0.06930792 -0.7037022 0.7071066 0.0693084 -0.7037022 0.7071065 -0.68185 0.5159907 0.5184923 -0.6818572 0.5159882 0.5184854 -0.6818584 0.5159877 0.5184842 -0.707671 -4.92412e-7 0.7065421 -0.7076705 -4.75302e-7 0.7065426 -0.707671 -4.92749e-7 0.7065422 -1 -2.77687e-7 0 -1 -2.77687e-7 0 -1 -2.77687e-7 0 0.4713984 -0.8819205 0 0.471398 -0.8819206 0 0.4713985 -0.8819205 0 0.7730101 0.6343939 0 0.7730098 0.6343941 0 0.7730101 0.6343938 0 0.2902868 -0.9569398 0 0.2902863 -0.9569398 0 0.2902868 -0.9569397 0 0.9569398 0.2902867 0 0.9569398 0.2902867 0 0.0980122 0.9951852 -5.71151e-7 0.09801298 0.9951852 -2.14356e-6 0.0980122 0.9951853 -3.82497e-7 -0.5972661 -0.8020432 0 -0.5972661 -0.8020433 0 0.2699437 0.6517032 0.7088113 0.2699443 0.651703 0.7088112 0.9569412 -0.290282 0 0.9569412 -0.290282 0 0.9569413 -0.290282 0 0.0693047 0.7037029 -0.7071061 0.06930518 0.7037021 -0.7071069 -0.6818498 0.5159909 -0.5184922 -0.6818572 0.5159881 -0.5184854 -0.6818484 0.5159915 -0.5184936 -0.6818479 -0.5159922 -0.5184936 -0.6818553 -0.5159894 -0.5184867 -0.6818565 -0.5159889 -0.5184855 -0.7076711 -4.72608e-7 -0.7065421 -0.7076715 -5.06113e-7 -0.7065417 -0.7076715 -5.06772e-7 -0.7065417 0.6343919 0.7730116 0 0.6343916 0.7730119 0 0.6343919 0.7730116 0 0.6343917 -0.7730117 0 0.6343914 -0.7730121 0 0.6343918 -0.7730117 0 -0.4604119 -3.00579e-7 -0.8877055 -0.4604119 -3.16534e-7 -0.8877055 -0.4604119 -2.89421e-7 -0.8877055 0.7730115 -0.6343922 0 -1 -6.44172e-7 0 0.09801656 -0.9951848 -1.48747e-7 0.09801667 -0.9951848 -8.33601e-7 0.09801656 -0.9951848 -2.22113e-7 -0.5972671 0.8020426 0 0 -1.90785e-7 1 0 0 1 0 -3.63078e-6 1 0 0 1 0 1.87484e-7 1 0 2.02082e-6 1 0 -9.6597e-7 1 0 5.97108e-7 1 0 1.38861e-7 1 0 -3.99963e-7 1 0 0 1 0 0 1 0 -1.14507e-6 1 -0.4604119 -2.84992e-7 0.8877055 0 0 -1 0 -2.23897e-7 -1 0 -6.77045e-7 -1 0 6.74627e-7 -1 0 5.97108e-7 -1 0.137617 -0.6918443 0.708811 0.6918436 -0.1376166 0.7088117 0.8819207 0.4713977 0 0.9951845 0.09802001 0 0.1376145 0.6918452 0.7088107 0.498791 0.498793 0.7088111 0.4987915 -0.4987919 0.7088114 -0.6818456 -0.5159929 0.5184959 0.0693084 -0.7037019 -0.7071068 0.8819217 -0.471396 0 0.2902843 0.9569405 0 -0.6818485 0.5159912 0.5184937 -0.7076705 -4.74856e-7 0.7065426 -1 -2.77687e-7 0 0.4713979 -0.8819206 0 0.7730098 0.6343941 0 0.2902863 -0.9569399 0 0.9569397 0.2902867 0 0.09801262 0.9951853 3.81906e-7 0.09801256 0.9951852 5.70269e-7 0.0980128 0.9951851 2.14025e-6 -0.597266 -0.8020431 0 -0.6818584 0.5159877 -0.5184842 -0.6818464 -0.5159928 -0.518495 -0.707671 -4.71735e-7 -0.7065421 0.6343915 0.7730119 0 0.6343914 -0.7730121 0 -0.4604119 -3.40901e-7 -0.8877055 -1 -6.44172e-7 0 0.09801656 -0.9951848 2.25639e-7 0.09801667 -0.9951848 8.46833e-7 0.09801656 -0.9951848 1.51108e-7 + + + + + + + + + + 0.8085938 0.1953125 0.8398438 0.15625 0.8398438 0.2109375 0.7533172 0.01754212 0.751044 0.00946933 0.75 0.00390625 0.828125 0.140625 0.7700133 0.1715973 0.75 0.140625 0.8184773 0.1105983 0.8237214 0.1178196 0.828125 0.1367187 0.734375 0.08984375 0.7421875 0.09765625 0.734375 0.09765625 0.75 0.08984375 0.7421875 0.09765625 0.7421875 0.08984375 0.7578125 0.08984375 0.75 0.09765625 0.75 0.08984375 0.7578125 0.08984375 0.765625 0.09765625 0.7578125 0.09765625 0.765625 0.08984375 0.7734375 0.09765625 0.765625 0.09765625 0.7734375 0.08984375 0.78125 0.09765625 0.7734917 0.09771662 0.78125 0.08984375 0.7893186 0.09727245 0.78125 0.09765625 0.796875 0.08984375 0.7893186 0.09727245 0.7890625 0.08984375 0.796875 0.08984375 0.8046875 0.09765625 0.796875 0.09765625 0.8125 0.08984375 0.8046875 0.09765625 0.8046875 0.08984375 0.8203125 0.08984375 0.8125 0.09765625 0.8125 0.08984375 0.8203125 0.08984375 0.828125 0.09765625 0.8203125 0.09765625 0.8359375 0.08984375 0.828125 0.09765625 0.828125 0.08984375 0.84375 0.08984375 0.8359375 0.09765625 0.8359375 0.08984375 0.8359375 0.04296875 0.84375 0.05078125 0.8359375 0.05078125 0.7890625 0.04296875 0.796875 0.05078125 0.7890625 0.05078125 0.8046875 0.04296875 0.8125 0.05078125 0.8046875 0.05078125 0.7890625 0.08984375 0.796875 0.05078125 0.796875 0.08984375 0.7304688 0.203125 0.7382813 0.15625 0.7382813 0.2109375 0.765625 0.08984375 0.7734375 0.05078125 0.7734375 0.08984375 0.7734375 0.05078125 0.78125 0.04296875 0.78125 0.05078125 0.78125 0.08984375 0.7890625 0.05078125 0.7890625 0.08984375 0.7421875 0.08984375 0.75 0.05078125 0.75 0.08984375 0.7265625 0.04296875 0.734375 0.05078125 0.7265625 0.05078125 0.7578125 0.05078125 0.765625 0.04296875 0.765625 0.05078125 0.8203125 0.05078125 0.828125 0.04296875 0.828125 0.05078125 0.8515625 0.05078125 0.8554688 0.04296875 0.8554688 0.05078125 0.84375 0.08984375 0.8515625 0.09765625 0.84375 0.09765625 0.8125 0.08984375 0.8046875 0.05078125 0.8125 0.05078125 0.734375 0.08984375 0.7421875 0.05078125 0.7421875 0.08984375 0.75 0.04296875 0.7578125 0.05078125 0.75 0.05078125 0.765625 0.05078125 0.7734375 0.04296875 0.7734375 0.05078125 0.78125 0.05078125 0.7890625 0.04296875 0.7890625 0.05078125 0.796875 0.05078125 0.8046875 0.04296875 0.8046875 0.05078125 0.8125 0.04296875 0.8203125 0.05078125 0.8125 0.05078125 0.828125 0.04296875 0.8359375 0.05078125 0.828125 0.05078125 0.84375 0.05078125 0.8515625 0.04296875 0.8515625 0.05078125 0.7226563 0.04296875 0.7265625 0.05078125 0.7226563 0.05078125 0.75 0 0.828125 0.00390625 0.75 0.00390625 0.8398438 0.15625 0.8476563 0.203125 0.8398438 0.2109375 0.828125 0.08984375 0.8359375 0.05078125 0.8359375 0.08984375 0.7578125 0.08984375 0.765625 0.05078125 0.765625 0.08984375 0.8359375 0.08984375 0.84375 0.05078125 0.84375 0.08984375 0.7734375 0.08984375 0.78125 0.05078125 0.78125 0.08984375 0.7226563 0.05078125 0.7265625 0.0546875 0.734375 0.05078125 0.7695313 0.1953125 0.7382813 0.15625 0.7700133 0.1715973 0.7421875 0.04296875 0.75 0.05078125 0.7421875 0.05078125 0.796875 0.08984375 0.8046875 0.05078125 0.8046875 0.08984375 0.734375 0.08984375 0.7265625 0.09765625 0.7265625 0.08984375 0.7226563 0.09765625 0.7265625 0.08984375 0.7265625 0.09765625 0.8554688 0.09765625 0.8515625 0.08984375 0.8554688 0.08984375 0.828125 0.1367187 0.75 0.140625 0.75 0.1367187 0.734375 0.05078125 0.7421875 0.04296875 0.7421875 0.05078125 0.75 0.08984375 0.7578125 0.05078125 0.7578125 0.08984375 0.8203125 0.08984375 0.828125 0.05078125 0.828125 0.08984375 0.7695313 0.1953125 0.828125 0.2265625 0.75 0.2265625 0.8125 0.08984375 0.8203125 0.05078125 0.8203125 0.08984375 0.8085938 0.1953125 0.7700133 0.1715973 0.8085938 0.171875 0.84375 0.05078125 0.8515625 0.0546875 0.8554688 0.05078125 0.8085938 0.1953125 0.8085938 0.171875 0.8398438 0.15625 0.75 0.00390625 0.828125 0.00390625 0.7890625 0.04296875 0.828125 0.00390625 0.827323 0.009233057 0.8250798 0.01732593 0.75 0.00390625 0.7890625 0.04296875 0.78125 0.04248046 0.8250798 0.01732593 0.8214626 0.02477586 0.828125 0.00390625 0.8214626 0.02477586 0.8166109 0.03129625 0.828125 0.00390625 0.8166109 0.03129625 0.8107108 0.03663653 0.828125 0.00390625 0.8107108 0.03663653 0.803989 0.04059159 0.828125 0.00390625 0.803989 0.04059159 0.796875 0.04223632 0.828125 0.00390625 0.796875 0.04223632 0.7890625 0.04296875 0.828125 0.00390625 0.78125 0.04248046 0.7744784 0.04067754 0.75 0.00390625 0.7744784 0.04067754 0.767748 0.03676021 0.75 0.00390625 0.767748 0.03676021 0.761833 0.03145509 0.75 0.00390625 0.761833 0.03145509 0.7569603 0.02496612 0.75 0.00390625 0.7569603 0.02496612 0.7533172 0.01754212 0.75 0.00390625 0.828125 0.140625 0.8085938 0.171875 0.7700133 0.1715973 0.827797 0.1308701 0.828125 0.1367187 0.8269097 0.1260809 0.828125 0.1367187 0.75 0.1367187 0.7893186 0.09727245 0.8269097 0.1260809 0.828125 0.1367187 0.8237214 0.1178196 0.75 0.1367187 0.7505323 0.1307337 0.7516314 0.1243688 0.7516314 0.1243688 0.7543035 0.1180313 0.75 0.1367187 0.7543035 0.1180313 0.7595249 0.1107753 0.75 0.1367187 0.7595249 0.1107753 0.7658746 0.1048324 0.75 0.1367187 0.7658746 0.1048324 0.7731086 0.1004312 0.75 0.1367187 0.7731086 0.1004312 0.78125 0.09814453 0.75 0.1367187 0.78125 0.09814453 0.7893186 0.09727245 0.75 0.1367187 0.7893186 0.09727245 0.796875 0.09814453 0.828125 0.1367187 0.796875 0.09814453 0.8048682 0.1003353 0.828125 0.1367187 0.8048682 0.1003353 0.8121114 0.1046946 0.828125 0.1367187 0.8121114 0.1046946 0.8184773 0.1105983 0.828125 0.1367187 0.734375 0.08984375 0.7421875 0.08984375 0.7421875 0.09765625 0.75 0.08984375 0.75 0.09765625 0.7421875 0.09765625 0.7578125 0.08984375 0.7578125 0.09765625 0.75 0.09765625 0.7578125 0.08984375 0.765625 0.08984375 0.765625 0.09765625 0.765625 0.08984375 0.7734375 0.08984375 0.7734375 0.09765625 0.7734375 0.08984375 0.78125 0.08984375 0.78125 0.09765625 0.78125 0.08984375 0.7890625 0.08984375 0.7893186 0.09727245 0.796875 0.08984375 0.796875 0.09765625 0.7893186 0.09727245 0.796875 0.08984375 0.8046875 0.08984375 0.8046875 0.09765625 0.8125 0.08984375 0.8125 0.09765625 0.8046875 0.09765625 0.8203125 0.08984375 0.8203125 0.09765625 0.8125 0.09765625 0.8203125 0.08984375 0.828125 0.08984375 0.828125 0.09765625 0.8359375 0.08984375 0.8359375 0.09765625 0.828125 0.09765625 0.84375 0.08984375 0.84375 0.09765625 0.8359375 0.09765625 0.8359375 0.04296875 0.84375 0.04296875 0.84375 0.05078125 0.7890625 0.04296875 0.796875 0.04296875 0.796875 0.05078125 0.8046875 0.04296875 0.8125 0.04296875 0.8125 0.05078125 0.7890625 0.08984375 0.7890625 0.05078125 0.796875 0.05078125 0.7304688 0.203125 0.7304688 0.1640625 0.7382813 0.15625 0.765625 0.08984375 0.765625 0.05078125 0.7734375 0.05078125 0.7734375 0.05078125 0.7734375 0.04296875 0.78125 0.04296875 0.78125 0.08984375 0.78125 0.05078125 0.7890625 0.05078125 0.7421875 0.08984375 0.7421875 0.05078125 0.75 0.05078125 0.7265625 0.04296875 0.734375 0.04296875 0.734375 0.05078125 0.7578125 0.05078125 0.7578125 0.04296875 0.765625 0.04296875 0.8203125 0.05078125 0.8203125 0.04296875 0.828125 0.04296875 0.8515625 0.05078125 0.8515625 0.04296875 0.8554688 0.04296875 0.84375 0.08984375 0.8515625 0.08984375 0.8515625 0.09765625 0.8125 0.08984375 0.8046875 0.08984375 0.8046875 0.05078125 0.734375 0.08984375 0.734375 0.05078125 0.7421875 0.05078125 0.75 0.04296875 0.7578125 0.04296875 0.7578125 0.05078125 0.765625 0.05078125 0.765625 0.04296875 0.7734375 0.04296875 0.78125 0.05078125 0.78125 0.04296875 0.7890625 0.04296875 0.796875 0.05078125 0.796875 0.04296875 0.8046875 0.04296875 0.8125 0.04296875 0.8203125 0.04296875 0.8203125 0.05078125 0.828125 0.04296875 0.8359375 0.04296875 0.8359375 0.05078125 0.84375 0.05078125 0.84375 0.04296875 0.8515625 0.04296875 0.7226563 0.04296875 0.7265625 0.04296875 0.7265625 0.05078125 0.75 0 0.828125 0 0.828125 0.00390625 0.8398438 0.15625 0.8476563 0.1640625 0.8476563 0.203125 0.828125 0.08984375 0.828125 0.05078125 0.8359375 0.05078125 0.7578125 0.08984375 0.7578125 0.05078125 0.765625 0.05078125 0.8359375 0.08984375 0.8359375 0.05078125 0.84375 0.05078125 0.7734375 0.08984375 0.7734375 0.05078125 0.78125 0.05078125 0.734375 0.05078125 0.734375 0.08984375 0.7226563 0.08984375 0.734375 0.08984375 0.7265625 0.08984375 0.7226563 0.08984375 0.7226563 0.08984375 0.7226563 0.05078125 0.734375 0.05078125 0.7695313 0.1953125 0.7382813 0.2109375 0.7382813 0.15625 0.7421875 0.04296875 0.75 0.04296875 0.75 0.05078125 0.796875 0.08984375 0.796875 0.05078125 0.8046875 0.05078125 0.734375 0.08984375 0.734375 0.09765625 0.7265625 0.09765625 0.7226563 0.09765625 0.7226563 0.08984375 0.7265625 0.08984375 0.8554688 0.09765625 0.8515625 0.09765625 0.8515625 0.08984375 0.828125 0.1367187 0.828125 0.140625 0.75 0.140625 0.734375 0.05078125 0.734375 0.04296875 0.7421875 0.04296875 0.75 0.08984375 0.75 0.05078125 0.7578125 0.05078125 0.8203125 0.08984375 0.8203125 0.05078125 0.828125 0.05078125 0.7695313 0.1953125 0.8085938 0.1953125 0.828125 0.2265625 0.8125 0.08984375 0.8125 0.05078125 0.8203125 0.05078125 0.8085938 0.1953125 0.7695313 0.1953125 0.7700133 0.1715973 0.8554688 0.05078125 0.8554688 0.08984375 0.84375 0.05078125 0.8554688 0.08984375 0.8515625 0.08984375 0.84375 0.08984375 0.84375 0.05078125 0.8554688 0.08984375 0.84375 0.08984375 + + + + + + + + + + + + + + +

    3 0 0 75 1 1 1 2 2 39 3 3 37 4 4 66 5 5 75 6 6 4 7 7 69 8 8 29 9 9 31 10 10 76 11 11 6 12 12 9 13 13 7 14 14 10 15 15 9 13 16 8 16 17 12 17 18 11 18 19 10 15 20 12 17 21 15 19 22 13 20 23 14 21 24 17 22 25 15 19 26 16 23 27 19 24 28 17 22 29 18 25 30 21 26 31 19 24 32 22 27 33 21 26 34 20 28 35 22 27 36 25 29 37 23 30 38 26 31 39 25 29 40 24 32 41 28 33 42 27 34 43 26 31 44 28 33 45 31 35 46 29 36 47 32 37 48 31 35 49 30 38 50 34 39 51 33 40 52 32 37 53 63 41 54 64 42 55 62 43 56 51 44 57 52 45 58 50 46 59 55 47 60 56 48 61 54 49 62 20 50 63 52 51 64 22 50 65 68 52 66 69 53 67 0 54 68 14 55 69 46 56 70 16 57 71 46 58 72 49 59 73 48 60 74 18 61 75 50 62 76 20 63 77 8 64 78 40 64 79 10 64 80 66 65 81 36 66 82 67 67 83 42 68 84 45 69 85 44 70 86 58 71 87 61 72 88 60 73 89 78 74 90 1 75 91 77 76 92 34 39 93 76 77 94 35 78 95 26 79 96 54 80 97 56 81 98 6 82 99 38 83 100 8 84 101 41 85 102 42 68 103 40 86 104 44 70 105 47 87 106 46 58 107 48 60 108 51 44 109 50 46 110 52 45 111 55 47 112 54 49 113 57 88 114 58 71 115 56 48 116 61 72 117 62 43 118 60 73 119 64 42 120 79 89 121 78 90 122 0 91 123 67 92 124 68 93 125 0 94 126 79 95 127 66 96 128 75 97 129 77 98 130 1 99 131 30 100 132 62 101 133 32 102 134 12 103 135 44 104 136 14 105 137 32 106 138 64 107 139 34 108 140 16 109 141 48 109 142 18 110 143 68 111 144 67 112 145 36 113 146 2 114 147 69 114 148 4 115 149 39 116 150 40 86 151 38 117 152 22 118 153 54 119 154 24 120 155 6 12 156 70 121 157 71 122 158 69 123 159 71 124 160 70 125 161 75 126 162 74 127 163 73 128 164 76 129 165 69 130 166 70 131 167 36 66 168 39 116 169 38 117 170 10 132 171 42 133 172 12 134 173 28 135 174 60 136 175 30 137 176 2 138 177 1 139 178 0 140 179 26 141 180 58 141 181 28 141 182 3 142 183 4 142 184 5 142 185 64 143 186 78 144 187 77 145 188 3 0 189 5 146 190 75 1 191 66 5 192 79 147 193 51 148 194 79 147 195 65 149 196 63 150 197 66 5 198 51 148 199 49 151 200 63 150 201 61 152 202 79 147 203 61 152 204 59 153 205 79 147 206 59 153 207 57 154 208 79 147 209 57 154 210 55 155 211 79 147 212 55 155 213 53 156 214 79 147 215 53 156 216 51 148 217 79 147 218 49 151 219 47 157 220 66 5 221 47 157 222 45 157 223 66 5 224 45 157 225 43 158 226 66 5 227 43 158 228 41 159 229 66 5 230 41 159 231 39 3 232 66 5 233 75 6 234 5 160 235 4 7 236 35 161 237 76 11 238 33 161 239 76 11 240 70 161 241 21 162 242 33 161 243 76 11 244 31 10 245 70 161 246 7 161 247 9 161 248 9 161 249 11 161 250 70 161 251 11 161 252 13 161 253 70 161 254 13 161 255 15 161 256 70 161 257 15 161 258 17 161 259 70 161 260 17 161 261 19 161 262 70 161 263 19 161 264 21 162 265 70 161 266 21 162 267 23 163 268 76 11 269 23 163 270 25 164 271 76 11 272 25 164 273 27 165 274 76 11 275 27 165 276 29 9 277 76 11 278 6 12 279 8 16 280 9 13 281 10 15 282 11 18 283 9 13 284 12 17 285 13 20 286 11 18 287 12 17 288 14 21 289 15 19 290 14 21 291 16 23 292 17 22 293 16 23 294 18 25 295 19 24 296 18 25 297 20 28 298 21 26 299 22 27 300 23 30 301 21 26 302 22 27 303 24 32 304 25 29 305 26 31 306 27 34 307 25 29 308 28 33 309 29 36 310 27 34 311 28 33 312 30 38 313 31 35 314 32 37 315 33 40 316 31 35 317 34 39 318 35 78 319 33 40 320 63 41 321 65 166 322 64 42 323 51 44 324 53 167 325 52 45 326 55 47 327 57 88 328 56 48 329 20 50 330 50 51 331 52 51 332 68 52 333 72 53 334 69 53 335 14 55 336 44 168 337 46 56 338 46 58 339 47 87 340 49 59 341 18 61 342 48 169 343 50 62 344 8 64 345 38 64 346 40 64 347 66 65 348 37 170 349 36 66 350 42 68 351 43 171 352 45 69 353 58 71 354 59 172 355 61 72 356 78 74 357 79 173 358 1 75 359 34 39 360 74 174 361 76 77 362 26 79 363 24 175 364 54 80 365 6 82 366 36 176 367 38 83 368 41 85 369 43 171 370 42 68 371 44 70 372 45 69 373 47 87 374 48 60 375 49 59 376 51 44 377 52 45 378 53 167 379 55 47 380 57 88 381 59 172 382 58 71 383 61 72 384 63 41 385 62 43 386 64 42 387 65 166 388 79 89 389 0 91 390 66 177 391 67 92 392 0 94 393 1 178 394 79 95 395 75 97 396 73 179 397 77 98 398 30 100 399 60 180 400 62 101 401 12 103 402 42 181 403 44 104 404 32 106 405 62 182 406 64 107 407 16 109 408 46 183 409 48 109 410 36 113 411 6 184 412 72 185 413 6 184 414 71 186 415 72 185 416 72 185 417 68 111 418 36 113 419 2 114 420 0 187 421 69 114 422 39 116 423 41 85 424 40 86 425 22 118 426 52 119 427 54 119 428 6 12 429 7 14 430 70 121 431 69 123 432 72 188 433 71 124 434 75 126 435 76 189 436 74 127 437 76 129 438 75 190 439 69 130 440 36 66 441 37 170 442 39 116 443 10 132 444 40 191 445 42 133 446 28 135 447 58 192 448 60 136 449 2 138 450 3 193 451 1 139 452 26 141 453 56 141 454 58 141 455 3 142 456 2 194 457 4 142 458 77 145 459 73 195 460 64 143 461 73 195 462 74 196 463 34 197 464 64 143 465 73 195 466 34 197 467

    +
    +
    +
    + + + + 0.09754467 2.240393 -0.2252249 0.1913414 2.21194 -0.2252249 0.277785 2.165735 -0.2252249 0.3535534 2.103554 -0.2252249 0.4157347 2.027786 -0.2252249 0.4619398 1.941342 -0.2252249 0.4903929 1.847546 -0.2252249 0.5000006 1.750001 -0.2252249 0.4903929 1.652455 -0.2252249 0.4619402 1.558659 -0.2252249 0.4157353 1.472215 -0.2252249 0.353554 1.396447 -0.2252249 0.2777856 1.334266 -0.2252249 0.1913419 1.28806 -0.2252249 0.09754568 1.259607 -0.2252249 2.5 0 -0.3 2.5 3.6 -0.3 0.5412177 1.857655 -0.3 0.5518211 1.750001 -0.3 0.5412175 1.642346 -0.3 0.509816 1.538828 -0.3 0.4588222 1.443425 -0.3 0.4588216 2.056576 -0.3 0.5098155 1.961173 -0.3 0.3901956 2.140197 -0.3 0.3065758 1.291179 -0.3 0.3901967 1.359804 -0.3 0.2111708 2.259817 -0.3 0.1076547 2.291218 -0.3 0.3065758 2.208822 -0.3 0.2111719 1.240184 -0.3 0.1076555 1.208783 -0.3 0.09754467 2.240393 0.2252249 0.1913414 2.21194 0.2252249 0.277785 2.165735 0.2252249 0.3535534 2.103554 0.2252249 0.4157347 2.027786 0.2252249 0.4619398 1.941342 0.2252249 0.4903929 1.847546 0.2252249 0.5000006 1.750001 0.2252249 0.4903929 1.652455 0.2252249 0.4619402 1.558659 0.2252249 0.4157353 1.472215 0.2252249 0.353554 1.396447 0.2252249 0.2777856 1.334266 0.2252249 0.1913419 1.28806 0.2252249 0.09754568 1.259607 0.2252249 2.5 0 0.3 2.5 3.6 0.3 0.5412177 1.857655 0.3 0.5518211 1.750001 0.3 0.5412175 1.642346 0.3 0.509816 1.538828 0.3 0.4588222 1.443425 0.3 0.4588216 2.056576 0.3 0.5098155 1.961173 0.3 0.3901956 2.140197 0.3 0.3065758 1.291179 0.3 0.3901967 1.359804 0.3 0.2111708 2.259817 0.3 0.1076547 2.291218 0.3 0.3065758 2.208822 0.3 0.2111719 1.240184 0.3 0.1076555 1.208783 0.3 0 2.25 0.1901126 0.01996588 2.248034 0.225225 0.01996648 1.251966 0.2252249 4.69387e-7 1.25 0.1901128 -1.52002e-7 2.440548 0.1025 0.01996701 2.299854 0.3 0 2.25 -0.1901126 0.01996588 2.248034 -0.225225 0.01996648 1.251966 -0.2252249 4.69387e-7 1.25 -0.1901128 -1.52002e-7 2.440548 -0.1025 0.01996701 2.299854 -0.3 4.08359e-7 1.075447 -0.1025 0.01996779 1.200146 -0.3 0 0.1136917 -0.1025 0.0199685 0 -0.3 0.0199685 3.6 -0.3 0 3.469546 -0.1025 1.123558 1.2511 -0.2375 4.08359e-7 1.075447 0.1025 0.01996779 1.200146 0.3 0 0.1136917 0.1025 0.0199685 0 0.3 1.069991 1.200069 -0.3 1.123558 1.2511 -0.255 1.873558 1.2511 -0.255 1.918091 1.1999 -0.3 1.918472 2.2999 -0.3 1.069991 2.2999 -0.3 0.0199685 3.6 0.3 0 3.469546 0.1025 1.123558 1.2511 0.2375 1.873558 1.2511 0.2375 1.069991 1.200069 0.3 1.123558 1.2511 0.255 1.873558 1.2511 -0.2375 1.123558 2.2527 -0.2375 1.873558 1.2511 0.255 1.918091 1.1999 0.3 1.873558 2.2527 0.255 1.918472 2.2999 0.3 1.123558 2.2527 0.255 3.09736e-7 0.7086623 -0.1025 1.78937e-7 0.4805372 -0.1025 5.01112e-7 1.187707 -0.28 1.069991 2.2999 0.3 0 0 -0.28 0 3.085717 -0.1025 0 2.824327 -0.1025 0 3.6 -0.28 3.09736e-7 0.7086623 0.1025 1.78937e-7 0.4805372 0.1025 5.01112e-7 1.187707 0.28 0 0 0.28 -1.91969e-7 2.312293 -0.28 0 2.956147 -0.28 -0.15 3.372954 -0.04624998 0 3.085717 0.1025 -0.15 3.181039 -0.04624998 0 2.824327 0.1025 -0.1500001 2.535223 -0.04624998 -0.1500001 2.727113 -0.04624998 0 3.6 0.28 -1.91969e-7 2.312293 0.28 -0.1499996 0.9852741 -0.04624998 -0.1499996 0.8018819 -0.04624998 -0.15 3.372954 0.04624998 -0.1499999 0.2061649 -0.04624998 -0.1499998 0.3895877 -0.04624998 -0.15 3.181039 0.04624998 -0.1500001 2.535223 0.04624998 -1.6225e-7 2.438235 0 -0.1500001 2.727113 0.04624998 -0.1499996 0.9852741 0.04624998 -0.1499996 0.8018819 0.04624998 -0.1499999 0.2061649 0.04624998 -0.1499998 0.3895877 0.04624998 1.873558 2.2527 -0.255 1.873558 2.2527 -0.2375 1.123558 2.2527 0.2375 1.123558 2.2527 -0.255 1.873558 2.2527 0.2375 2.5 2.2999 -0.3 2.5 1.1999 -0.3 2.5 2.2999 0.3 2.5 1.1999 0.3 + + + + + + + + + + -0.4713954 -0.881922 0 -0.471397 -0.8819212 0 -0.4713972 -0.8819211 0 -0.1603451 -0.8061259 -0.5696055 -0.3145329 -0.7593548 -0.5696046 -0.3145369 -0.7593541 -0.5696035 -0.4566335 -0.6834014 -0.5696037 -0.4566342 -0.6834018 -0.5696027 -0.5811833 -0.5811852 -0.5696049 -0.6834005 -0.4566345 -0.5696041 -0.6834009 -0.4566346 -0.5696036 -0.7593537 -0.3145365 -0.569604 -0.759354 -0.3145361 -0.5696038 -0.8061259 -0.1603507 -0.5696039 -0.8061252 -0.1603507 -0.5696049 -0.8219188 5.43392e-7 -0.5696047 -0.8061268 0.1603488 -0.5696033 -0.8061268 0.1603493 -0.5696033 -0.7593554 0.3145334 -0.5696035 -0.7593557 0.3145333 -0.5696033 -0.683402 0.456633 -0.5696034 -0.6834015 0.4566333 -0.5696038 -0.5811846 0.5811849 -0.5696039 -0.4566344 0.6834013 -0.5696032 -0.4566337 0.6834019 -0.5696029 -0.314536 0.759354 -0.5696039 -0.3145365 0.759354 -0.5696038 -0.1603486 0.8061263 -0.5696041 -1 4.61982e-7 0 -1 5.07598e-7 -1.27249e-7 -1 5.07598e-7 1.27249e-7 -0.8819224 0.4713947 0 -0.8819215 0.4713963 0 -0.8819213 0.4713966 0 -1 2.29156e-7 0 -1 -5.09293e-7 0 -1 -5.09294e-7 0 -0.683402 0.456633 0.5696035 -0.7593556 0.3145333 0.5696035 -0.7593554 0.3145334 0.5696035 -0.9951846 -0.09801995 0 -0.9951845 -0.09802013 0 -0.9951844 -0.09802019 0 -0.634393 -0.7730107 0 -0.6343907 -0.7730126 0 -0.6343902 -0.773013 0 -0.9951844 0.09802079 0 -0.9951844 0.09802061 0 -0.9951844 0.09802055 0 -0.7730095 -0.6343946 0 -0.7730103 -0.6343935 0 -0.7730105 -0.6343934 0 -0.5438634 0.8391737 0 -0.5438629 0.839174 0 -0.5438651 0.8391727 0 -0.09801197 -0.9951853 -8.84485e-7 -0.0980103 -0.9951855 8.83768e-7 -0.09801042 -0.9951854 7.17172e-7 -0.6343917 0.7730119 0 -0.6343917 0.7730119 0 -0.0806871 0.8192397 -0.5677464 -0.08068704 0.8192401 -0.5677459 -0.08068078 -0.8192393 -0.5677479 -0.08068215 -0.8192397 -0.5677471 -0.5811846 0.5811849 0.5696039 -0.4566345 0.6834014 0.5696032 -0.581184 0.581185 0.5696045 -0.3511235 0 0.9363293 -0.3511235 0 0.9363293 -0.3511235 1.26799e-7 0.9363293 -0.1603486 0.8061262 0.569604 -0.0806871 0.8192397 0.5677464 -0.1603495 0.806126 0.5696042 -0.1603454 -0.8061259 0.5696055 -0.08068132 -0.8192393 0.5677478 -0.08068329 -0.8192396 0.5677471 0.6432213 0 0.7656804 0.6432204 0 0.7656811 0.6432214 0 0.7656803 -0.7345879 0.5576829 0.3864849 -0.7345733 0.5576923 0.3864989 -0.7345692 0.5576949 0.3865029 0 -1 0 0 -1 0 -1 0 0 -1 -2.69205e-7 -2.47892e-7 -1 1.32263e-7 0 1 0 0 -0.7345875 -0.5576838 -0.3864844 -0.7345767 -0.5576896 -0.3864964 -0.7345737 -0.5576913 -0.3864998 -0.7345879 0.5576829 -0.3864849 -0.7345733 0.5576923 -0.3864989 -0.7345911 0.5576808 -0.3864817 -0.7076857 0 -0.7065274 -0.7076861 0 -0.706527 -0.7076745 7.91684e-7 -0.7065386 -0.7076636 2.8569e-7 -0.7065495 -0.7076846 -4.0339e-7 -0.7065286 -0.7076848 -4.11876e-7 -0.7065283 -1 -2.2805e-7 0 -1 0 0 -1 -4.15078e-7 3.1988e-7 -0.7076634 1.26636e-7 0.7065498 -0.7076857 8.03417e-7 0.7065275 -0.707686 8.11089e-7 0.7065272 -1 0 0 -0.5395073 -0.8419809 0 -0.5417323 -0.840532 0.005674242 -0.5417317 -0.8405325 -0.005674242 -0.7076846 -4.08711e-7 0.7065286 -0.7076636 2.94254e-7 0.7065495 -0.7076848 -4.17368e-7 0.7065283 1.27023e-4 0.6612758 -0.7501431 1.13751e-5 0.6602643 -0.7510334 1.32074e-4 0.6613199 -0.7501041 -0.7105743 2.39428e-4 -0.7036222 -0.7079722 1.59211e-5 -0.7062404 -0.7106512 2.46046e-4 -0.7035445 0 -0.6900383 -0.7237729 0 -0.6900351 -0.723776 0 -0.6900348 -0.7237763 0.6432204 0 -0.7656812 0.6432211 0 -0.7656806 0.6432211 0 -0.7656805 0 1 0 -0.7345761 -0.5576902 0.3864969 -0.734589 -0.5576823 0.3864834 -0.7345725 -0.5576923 0.3865005 -1.24484e-7 -1 0 -5.59233e-7 -1 0 0 -1 0 1.27023e-4 0.6612758 0.7501431 1.13751e-5 0.6602643 0.7510334 0 0.6601647 0.7511209 -0.5184705 0.8550956 0 -0.5184706 0.8550955 0 -0.5184701 0.8550958 0 -0.5247786 -0.8512388 0 -0.5247787 -0.8512387 0 -0.7105708 2.39427e-4 0.7036258 -0.7079728 1.59204e-5 0.7062398 -0.7077873 0 0.7064257 -1 2.43718e-7 0 -1 2.43718e-7 0 -1 2.43718e-7 0 -1 2.4862e-7 0 -1 1.25559e-7 0 -1 0 0 -0.9569397 -0.2902868 0 -0.9569398 -0.2902864 0 -0.9569399 -0.2902863 0 -0.09801679 0.9951848 0 -0.09801781 0.9951847 0 -0.09801763 0.9951848 0 -0.3511235 0 0.9363292 -0.3511235 0 0.9363292 -0.3511235 0 0.9363293 0 0 1 0 0 1 -0.3511238 0 -0.9363291 -0.3511238 0 -0.9363291 -0.3511238 0 -0.9363291 -0.3511235 1.67326e-7 0.9363292 -0.3511235 1.62951e-7 0.9363292 -0.3511235 1.58473e-7 0.9363292 -0.536346 -0.8439983 0 -0.536346 -0.8439983 0 -0.536346 -0.8439982 0 -0.3511235 0 -0.9363292 -0.3511235 0 -0.9363292 -0.3511235 0 -0.9363293 -1 1.62506e-7 0 -1 1.62506e-7 0 -1 1.62506e-7 0 -1 0 0 -1 0 0 -1 0 0 -0.3511235 0 -0.9363293 -0.3511235 0 -0.9363293 -0.3511235 0 -0.9363292 0 0 -1 0 0 -1 -0.3511235 1.67326e-7 -0.9363292 -0.3511235 1.62951e-7 -0.9363292 -0.3511235 1.76222e-7 -0.9363293 -1 1.55289e-7 0 -1 1.55289e-7 0 -1 1.55289e-7 0 -0.5278378 -0.8493452 0 -0.5278379 -0.8493452 0 -0.5278376 -0.8493454 0 -0.3511237 0 0.9363291 -0.3511236 0 0.9363291 -0.3511238 0 0.9363291 -0.2902857 -0.9569401 0 -0.2902857 -0.95694 0 -0.4713973 0.881921 0 -0.4713988 0.8819202 0 -0.4713992 0.88192 0 -0.5414069 0.8407608 0 -0.5414057 0.8407616 0 -0.5414035 0.8407629 0 -3.01672e-7 -0.6900385 0.7237728 -2.70583e-7 -0.6900386 0.7237725 -3.04663e-7 -0.6900385 0.7237728 -0.7730115 0.634392 0 -0.7730116 0.6343921 0 -0.3145365 0.759354 0.5696038 -0.314536 0.759354 0.5696039 -0.4566337 0.683402 0.5696029 -0.9569411 0.2902824 0 -0.9569412 0.2902818 0 -0.9569413 0.2902818 0 -0.2902867 0.9569398 0 -0.2902849 0.9569403 0 -0.2902846 0.9569405 0 -0.6834015 0.4566333 0.5696038 -0.8061268 0.1603488 0.5696034 -0.8061268 0.1603493 0.5696033 -0.8219189 5.04332e-7 0.5696046 -0.8219183 0 0.5696056 -0.8061252 -0.1603507 0.5696051 -0.806126 -0.1603507 0.569604 -0.7593538 -0.3145364 0.569604 -0.7593541 -0.314536 0.5696037 -0.6834009 -0.4566345 0.5696036 -0.6834005 -0.4566345 0.5696041 -0.5811833 -0.5811852 0.569605 -0.5811827 -0.5811851 0.5696057 -0.4566335 -0.6834014 0.5696037 -0.4566343 -0.6834019 0.5696026 -0.3145369 -0.7593541 0.5696035 -0.3145329 -0.7593549 0.5696046 -0.1603447 -0.8061255 0.5696064 -0.8819204 -0.4713984 0 -0.8819208 -0.4713976 0 -0.881921 -0.4713975 0 0 -1 0 -4.98186e-7 -1 0 -0.5152201 0.8570579 0 -0.5152202 0.8570579 0 -0.5152204 0.8570578 0 -1 4.68813e-7 0 -1 5.73752e-7 -1.59682e-7 -1 2.29156e-7 0 0 0 -1 0 -1.91543e-7 -1 0 0 -1 0 0 1 0 0 1 0 -1.21794e-7 1 0 0 1 0 0 1 -0.4713951 -0.8819221 0 -0.1603447 -0.8061254 -0.5696064 -0.5811827 -0.5811851 -0.5696056 -0.8219181 0 -0.5696057 -0.581184 0.581185 -0.5696045 -0.1603495 0.806126 -0.5696042 -1 4.61982e-7 0 -0.8819226 0.4713944 0 -0.9951845 -0.09801995 0 -0.6343935 -0.7730104 0 -0.9951844 0.09802085 0 -0.7730094 -0.6343947 0 -0.543862 0.8391748 0 -0.09801453 -0.995185 3.27493e-6 -0.09801197 -0.9951853 -7.17754e-7 -0.09801453 -0.995185 -3.27759e-6 -0.3511235 0 0.9363292 -0.08068704 0.8192401 0.5677459 0.6432204 0 0.7656812 -0.7345911 0.5576808 0.3864817 0 -1 0 0 -1 0 -1 2.27123e-7 0 -1 2.2954e-7 0 -1 1.26968e-7 0 -1 2.08632e-7 0 -1 2.79317e-7 0 -1 -2.48586e-7 3.88868e-7 -0.7345899 -0.5576824 -0.3864817 -0.7345692 0.5576949 -0.3865029 -0.7076629 1.53543e-7 -0.7065503 -0.7076632 1.71906e-7 -0.70655 -0.7076633 2.96417e-7 -0.7065499 -1 -6.21159e-7 -3.10249e-7 -0.7076631 0 0.7065501 -0.5387343 -0.8422613 -0.01900953 -0.5387367 -0.8422598 0.01900947 -0.7076633 3.05197e-7 0.7065499 0 0.6601647 -0.7511209 -0.7077865 0 -0.7064265 0 -0.6900384 -0.7237728 0.6432204 0 -0.7656813 -0.734592 -0.5576806 0.3864803 -6.18455e-7 -1 0 1.32074e-4 0.6613199 0.7501041 -0.5184707 0.8550953 0 -0.5247784 -0.8512389 0 -0.7106475 2.46045e-4 0.7035482 -1 2.43718e-7 0 -0.9569397 -0.290287 0 -0.09801751 0.9951847 0 -0.09801661 0.9951848 0 -0.09801745 0.9951847 0 -0.3511235 0 0.9363293 0 0 1 0 0 1 -0.3511238 0 -0.9363291 -0.3511235 1.76222e-7 0.9363293 -0.5363459 -0.8439984 0 -0.3511235 0 -0.9363293 -1 1.62506e-7 0 -1 0 0 -0.3511235 1.26799e-7 -0.9363293 0 1.20822e-7 -1 -0.3511235 1.58473e-7 -0.9363292 -1 1.55289e-7 0 -0.5278382 -0.8493449 0 -0.3511234 0 0.9363293 -0.4713971 0.8819212 0 -0.5414109 0.8407583 0 -2.69301e-7 -0.6900387 0.7237725 -0.9569411 0.2902826 0 -0.290287 0.9569397 0 -0.8819204 -0.4713985 0 -0.5152199 0.8570581 0 -1 4.68813e-7 0 -1 5.73752e-7 1.59682e-7 -1 5.50439e-7 -2.50955e-7 -1 5.50439e-7 2.50956e-7 0 0 -1 0 0 -1 0 1.75693e-6 -1 0 -7.64911e-7 -1 0 2.39844e-7 -1 0 1.06743e-6 -1 0 -1.65418e-7 -1 0 5.14993e-7 -1 0 -2.47438e-7 -1 0 0 -1 0 0 -1 0 -1.7419e-7 1 0 7.79265e-7 1 0 2.00537e-7 1 0 -1.40526e-6 1 0 9.49386e-7 1 0 -2.94844e-7 1 0 3.49563e-7 1 0 -2.01391e-7 1 0 0 1 0 -3.14327e-7 1 + + + + + + + + + + 0.02734375 0.6953125 0.01953125 0.65625 0.02734375 0.65625 0.01171875 0.65625 0.01953125 0.6484375 0.01953125 0.65625 0.01953125 0.65625 0.02734375 0.6484375 0.02734375 0.65625 0.02734375 0.6484375 0.03515625 0.65625 0.02734375 0.65625 0.03515625 0.65625 0.04296875 0.6484375 0.04296875 0.65625 0.04296875 0.65625 0.05078125 0.6484375 0.05078125 0.65625 0.05078125 0.6484375 0.05859375 0.65625 0.05078125 0.65625 0.05859375 0.6484375 0.06640625 0.65625 0.05859375 0.65625 0.06640625 0.65625 0.07421875 0.6484375 0.07421875 0.65625 0.07421875 0.6484375 0.08203125 0.65625 0.07421875 0.65625 0.08203125 0.6484375 0.08984375 0.65625 0.08203125 0.65625 0.08984375 0.6484375 0.09765625 0.65625 0.08984375 0.65625 0.09765625 0.65625 0.1054687 0.6484375 0.1054687 0.65625 0.1054687 0.6484375 0.1132812 0.65625 0.1054687 0.65625 0.1132812 0.6484375 0.1210937 0.65625 0.1132812 0.65625 0.484375 0.9375 0.4726563 0.9609375 0.4726563 0.9453125 0.08984375 0.6953125 0.08203125 0.65625 0.08984375 0.65625 0.4101563 0.9375 0.40625 0.96875 0.40625 0.9375 0.08984375 0.6953125 0.08203125 0.703125 0.08203125 0.6953125 0.06640625 0.6953125 0.05859375 0.65625 0.06640625 0.65625 0.03515625 0.6953125 0.02734375 0.65625 0.03515625 0.65625 0.07421875 0.6953125 0.06640625 0.65625 0.07421875 0.65625 0.04296875 0.6953125 0.03515625 0.65625 0.04296875 0.65625 0.3164063 0.9570313 0.3125 0.9453125 0.3164063 0.9492188 0 0.6953125 0 0.65625 0.01171875 0.65625 0.1054687 0.6953125 0.09765625 0.65625 0.1054687 0.65625 0.1210937 0.65625 0.1289062 0.6484375 0.1289062 0.65625 0.00390625 0.6484375 0.01171875 0.65625 0.00390625 0.65625 0.09765625 0.6953125 0.1054687 0.703125 0.09765625 0.703125 0.4179688 0.9609375 0.4375 0.9570313 0.4414063 0.9609375 0.1210937 0.6953125 0.1289062 0.703125 0.1210937 0.703125 0.01171875 0.6953125 0.00390625 0.703125 0.00390625 0.6953125 0.1523437 0.8671875 0.08203125 0.8632813 0.1484375 0.8632813 0.1289062 0.6953125 0.1328125 0.703125 0.1289062 0.703125 0.484375 0.9335938 0.484375 0.7773438 0.5234375 0.7773438 0.3125 0.9609375 0.3476563 0.96875 0.3007813 0.9609375 0.0625 0.703125 0 0.7041016 0 0.703125 0.00390625 0.65625 0 0.6484375 0.00390625 0.6484375 0.1289062 0.65625 0.1328125 0.6484375 0.1328125 0.65625 0.3476563 0.9335938 0.3476563 0.9375 0.3046875 0.9375 0.484375 0.9335938 0.4101563 0.9375 0.4101563 0.9335938 0.3359375 0.9609375 0.3359375 0.9453125 0.3476563 0.9414063 0 0.7333984 0.0625 0.734375 0 0.734375 0.265625 0.9726563 0.3476563 0.96875 0.3476563 0.9726563 0.171875 0.7041016 0.109375 0.703125 0.109375 0.7041016 0.3359375 0.9609375 0.3320313 0.9570313 0.3320313 0.9492188 0.4101563 0.96875 0.484375 0.9726563 0.4101563 0.9726563 0.40625 0.8632813 0.4101563 0.8164063 0.4101563 0.8671875 0.40625 0.8203125 0.3359375 0.8164063 0.4101563 0.8164063 0.3398438 0.8632813 0.3359375 0.8164063 0.3398438 0.8203125 0.40625 0.8632813 0.3359375 0.8671875 0.3398438 0.8632813 0.21875 0.703125 0.171875 0.7041016 0.171875 0.703125 0 0.703125 0.00390625 0.6953125 0.00390625 0.703125 0.0625 0.734375 0.109375 0.7333984 0.0625 0.7333984 0.08203125 0.8632813 0.078125 0.8164063 0.08203125 0.8203125 0.4296875 0.7773438 0.375 0.7773438 0.375 0.7382813 0.109375 0.734375 0.171875 0.7333984 0.109375 0.7333984 0.453125 0.9570313 0.4492188 0.9453125 0.453125 0.9492188 0.171875 0.703125 0.109375 0.734375 0.109375 0.703125 0.46875 0.9570313 0.4726563 0.9453125 0.4726563 0.9609375 0.08203125 0.8203125 0.1523437 0.8164063 0.1484375 0.8203125 0.46875 0.9570313 0.453125 0.9492188 0.46875 0.9492188 0.171875 0.734375 0.21875 0.7333984 0.171875 0.7333984 0.2773438 0.9453125 0.3046875 0.9375 0.3007813 0.9453125 0.05859375 0.6953125 0.05078125 0.65625 0.05859375 0.65625 0.1328125 0.65625 0.1328125 0.6953125 0.1210937 0.6953125 0.3164063 0.9570313 0.3359375 0.9609375 0.3125 0.9609375 0.078125 0.8164063 0.078125 0.8671875 0.0078125 0.7773438 0.2265625 0.7773438 0.265625 0.7773438 0.265625 0.9296875 0.3007813 0.9453125 0.28125 0.9492188 0.2773438 0.9453125 0.4492188 0.9609375 0.46875 0.9570313 0.4726563 0.9609375 0.3007813 0.9609375 0.296875 0.9492188 0.3007813 0.9453125 0.3359375 0.9453125 0.3164063 0.9492188 0.3125 0.9453125 0.4375 0.9492188 0.421875 0.9570313 0.421875 0.9492188 0.3320313 0.9492188 0.3164063 0.9570313 0.3164063 0.9492188 0.421875 0.9453125 0.4375 0.9492188 0.421875 0.9492188 0.4101563 0.8671875 0.4101563 0.8164063 0.484375 0.7773438 0.4492188 0.9453125 0.46875 0.9492188 0.453125 0.9492188 0.0625 0.703125 0 0.734375 0 0.703125 0.296875 0.9492188 0.28125 0.9570313 0.28125 0.9492188 0.4414063 0.9609375 0.4375 0.9492188 0.4414063 0.9453125 0.28125 0.9570313 0.3007813 0.9609375 0.2773438 0.9609375 0.01953125 0.65625 0.01171875 0.6953125 0.01171875 0.65625 0.1132812 0.6953125 0.1054687 0.65625 0.1132812 0.65625 0.28125 0.9492188 0.2773438 0.9609375 0.2773438 0.9453125 0.1523437 0.8164063 0.1484375 0.8632813 0.1484375 0.8203125 0.21875 0.703125 0.171875 0.734375 0.171875 0.703125 0.08984375 0.65625 0.09765625 0.6953125 0.08984375 0.6953125 0.1210937 0.6953125 0.1132812 0.703125 0.1132812 0.6953125 0.1132812 0.6953125 0.1054687 0.703125 0.1054687 0.6953125 0.07421875 0.65625 0.08203125 0.6953125 0.07421875 0.6953125 0.1210937 0.6953125 0.1132812 0.65625 0.1210937 0.65625 0.09765625 0.6953125 0.08984375 0.703125 0.08984375 0.6953125 0.08203125 0.6953125 0.07421875 0.703125 0.07421875 0.6953125 0.06640625 0.6953125 0.07421875 0.703125 0.06640625 0.703125 0.06640625 0.6953125 0.05859375 0.703125 0.05859375 0.6953125 0.05859375 0.6953125 0.05078125 0.703125 0.05078125 0.6953125 0.04296875 0.6953125 0.05078125 0.703125 0.04296875 0.703125 0.03515625 0.6953125 0.04296875 0.703125 0.03515625 0.703125 0.03515625 0.6953125 0.02734375 0.703125 0.02734375 0.6953125 0.01953125 0.6953125 0.02734375 0.703125 0.01953125 0.703125 0.01171875 0.6953125 0.01953125 0.703125 0.01171875 0.703125 0.05078125 0.6953125 0.04296875 0.65625 0.05078125 0.65625 0.109375 0.703125 0.0625 0.7041016 0.0625 0.703125 0.109375 0.703125 0.0625 0.734375 0.0625 0.703125 0.421875 0.9492188 0.4179688 0.9609375 0.4179688 0.9453125 0.4101563 0.9375 0.484375 0.9375 0.4492188 0.9453125 0.4179688 0.9453125 0.4101563 0.96875 0.4101563 0.9375 0.265625 0.7773438 0.3359375 0.8164063 0.3359375 0.8671875 0.3359375 0.8164063 0.4101563 0.7773438 0.4101563 0.8164063 0.4101563 0.8671875 0.3805916 0.8997213 0.3731499 0.8991516 0.1523437 0.8671875 0.1206293 0.9000405 0.1134656 0.8996057 0.1523437 0.8164063 0.078125 0.7773438 0.1523437 0.7773438 0.2265625 0.9335938 0.1523437 0.9335938 0.1523437 0.8671875 0.02734375 0.6953125 0.01953125 0.6953125 0.01953125 0.65625 0.01171875 0.65625 0.01171875 0.6484375 0.01953125 0.6484375 0.01953125 0.65625 0.01953125 0.6484375 0.02734375 0.6484375 0.02734375 0.6484375 0.03515625 0.6484375 0.03515625 0.65625 0.03515625 0.65625 0.03515625 0.6484375 0.04296875 0.6484375 0.04296875 0.65625 0.04296875 0.6484375 0.05078125 0.6484375 0.05078125 0.6484375 0.05859375 0.6484375 0.05859375 0.65625 0.05859375 0.6484375 0.06640625 0.6484375 0.06640625 0.65625 0.06640625 0.65625 0.06640625 0.6484375 0.07421875 0.6484375 0.07421875 0.6484375 0.08203125 0.6484375 0.08203125 0.65625 0.08203125 0.6484375 0.08984375 0.6484375 0.08984375 0.65625 0.08984375 0.6484375 0.09765625 0.6484375 0.09765625 0.65625 0.09765625 0.65625 0.09765625 0.6484375 0.1054687 0.6484375 0.1054687 0.6484375 0.1132812 0.6484375 0.1132812 0.65625 0.1132812 0.6484375 0.1210937 0.6484375 0.1210937 0.65625 0.484375 0.9375 0.484375 0.96875 0.4726563 0.9609375 0.08984375 0.6953125 0.08203125 0.6953125 0.08203125 0.65625 0.4101563 0.9375 0.4101563 0.96875 0.40625 0.96875 0.08984375 0.6953125 0.08984375 0.703125 0.08203125 0.703125 0.06640625 0.6953125 0.05859375 0.6953125 0.05859375 0.65625 0.03515625 0.6953125 0.02734375 0.6953125 0.02734375 0.65625 0.07421875 0.6953125 0.06640625 0.6953125 0.06640625 0.65625 0.04296875 0.6953125 0.03515625 0.6953125 0.03515625 0.65625 0.3164063 0.9570313 0.3125 0.9609375 0.3125 0.9453125 0.00390625 0.65625 0.01171875 0.65625 0 0.65625 0.01171875 0.65625 0.01171875 0.6953125 0 0.6953125 0.01171875 0.6953125 0.00390625 0.6914063 0 0.6953125 0.1054687 0.6953125 0.09765625 0.6953125 0.09765625 0.65625 0.1210937 0.65625 0.1210937 0.6484375 0.1289062 0.6484375 0.00390625 0.6484375 0.01171875 0.6484375 0.01171875 0.65625 0.09765625 0.6953125 0.1054687 0.6953125 0.1054687 0.703125 0.4179688 0.9609375 0.421875 0.9570313 0.4375 0.9570313 0.1210937 0.6953125 0.1289062 0.6953125 0.1289062 0.703125 0.01171875 0.6953125 0.01171875 0.703125 0.00390625 0.703125 0.1523437 0.8671875 0.078125 0.8671875 0.08203125 0.8632813 0.1289062 0.6953125 0.1328125 0.6953125 0.1328125 0.703125 0.5234375 0.7773438 0.5234375 0.9335938 0.484375 0.9335938 0.5234375 0.9335938 0.5195313 0.9335938 0.484375 0.9335938 0.5195313 0.9335938 0.4882813 0.9335938 0.484375 0.9335938 0.265625 0.9375 0.2773438 0.9453125 0.2773438 0.9609375 0.3007813 0.9609375 0.3007813 0.9453125 0.3125 0.9609375 0.3007813 0.9453125 0.3046875 0.9375 0.3125 0.9453125 0.3125 0.9609375 0.3007813 0.9453125 0.3125 0.9453125 0.265625 0.96875 0.265625 0.9375 0.2773438 0.9609375 0.265625 0.96875 0.2773438 0.9609375 0.3007813 0.9609375 0.3359375 0.9609375 0.3359375 0.9609375 0.3476563 0.96875 0.3125 0.9609375 0.3359375 0.9609375 0.3476563 0.96875 0.3476563 0.96875 0.265625 0.96875 0.3007813 0.9609375 0.3046875 0.9375 0.3476563 0.9375 0.3125 0.9453125 0.3476563 0.9375 0.3359375 0.9453125 0.3125 0.9453125 0.0625 0.703125 0.0625 0.7041016 0 0.7041016 0.00390625 0.65625 0 0.65625 0 0.6484375 0.1289062 0.65625 0.1289062 0.6484375 0.1328125 0.6484375 0.265625 0.9375 0.265625 0.9335938 0.3046875 0.9375 0.265625 0.9335938 0.3476563 0.9335938 0.3046875 0.9375 0.484375 0.9335938 0.484375 0.9375 0.4101563 0.9375 0.34375 0.9375 0.3476563 0.9414063 0.3359375 0.9453125 0.3476563 0.9414063 0.3476563 0.9648438 0.3359375 0.9609375 0.3476563 0.9648438 0.34375 0.96875 0.3359375 0.9609375 0 0.7333984 0.0625 0.7333984 0.0625 0.734375 0.265625 0.9726563 0.265625 0.96875 0.3476563 0.96875 0.171875 0.7041016 0.171875 0.703125 0.109375 0.703125 0.3320313 0.9492188 0.3359375 0.9453125 0.3359375 0.9609375 0.3359375 0.9609375 0.3359375 0.9609375 0.3320313 0.9570313 0.4101563 0.96875 0.484375 0.96875 0.484375 0.9726563 0.40625 0.8632813 0.40625 0.8203125 0.4101563 0.8164063 0.40625 0.8203125 0.3398438 0.8203125 0.3359375 0.8164063 0.3398438 0.8632813 0.3359375 0.8671875 0.3359375 0.8164063 0.40625 0.8632813 0.4101563 0.8671875 0.3359375 0.8671875 0.21875 0.703125 0.21875 0.7041016 0.171875 0.7041016 0 0.703125 0 0.6953125 0.00390625 0.6953125 0.0625 0.734375 0.109375 0.734375 0.109375 0.7333984 0.08203125 0.8632813 0.078125 0.8671875 0.078125 0.8164063 0.375 0.7773438 0.265625 0.7773438 0.265625 0.7382813 0.375 0.7382813 0.4296875 0.7382813 0.4296875 0.7773438 0.4296875 0.7382813 0.484375 0.7382813 0.4296875 0.7773438 0.375 0.7773438 0.265625 0.7382813 0.375 0.7382813 0.484375 0.7382813 0.484375 0.7773438 0.4296875 0.7773438 0.109375 0.734375 0.171875 0.734375 0.171875 0.7333984 0.453125 0.9570313 0.4492188 0.9609375 0.4492188 0.9453125 0.171875 0.703125 0.171875 0.734375 0.109375 0.734375 0.46875 0.9570313 0.46875 0.9492188 0.4726563 0.9453125 0.08203125 0.8203125 0.078125 0.8164063 0.1523437 0.8164063 0.46875 0.9570313 0.453125 0.9570313 0.453125 0.9492188 0.171875 0.734375 0.21875 0.734375 0.21875 0.7333984 0.2773438 0.9453125 0.265625 0.9375 0.3046875 0.9375 0.05859375 0.6953125 0.05078125 0.6953125 0.05078125 0.65625 0.1289062 0.6953125 0.1210937 0.6953125 0.1328125 0.6953125 0.1210937 0.6953125 0.1210937 0.65625 0.1328125 0.65625 0.1210937 0.65625 0.1289062 0.6601563 0.1328125 0.65625 0.3164063 0.9570313 0.3320313 0.9570313 0.3359375 0.9609375 0.078125 0.8671875 0.078125 0.9335938 0.0078125 0.9335938 0.0078125 0.9335938 0.0078125 0.7773438 0.078125 0.8671875 0.0078125 0.7773438 0.078125 0.7773438 0.078125 0.8164063 0.265625 0.9296875 0.2617188 0.9335938 0.2304687 0.9335938 0.2304687 0.9335938 0.2265625 0.9296875 0.265625 0.9296875 0.2265625 0.9296875 0.2265625 0.7773438 0.265625 0.9296875 0.3007813 0.9453125 0.296875 0.9492188 0.28125 0.9492188 0.4492188 0.9609375 0.453125 0.9570313 0.46875 0.9570313 0.3007813 0.9609375 0.296875 0.9570313 0.296875 0.9492188 0.3359375 0.9453125 0.3320313 0.9492188 0.3164063 0.9492188 0.4375 0.9492188 0.4375 0.9570313 0.421875 0.9570313 0.3320313 0.9492188 0.3320313 0.9570313 0.3164063 0.9570313 0.421875 0.9453125 0.4414063 0.9453125 0.4375 0.9492188 0.4101563 0.8164063 0.4101563 0.7773438 0.484375 0.7773438 0.484375 0.7773438 0.484375 0.9335938 0.4101563 0.8671875 0.484375 0.9335938 0.4101563 0.9335938 0.4101563 0.8671875 0.4492188 0.9453125 0.4726563 0.9453125 0.46875 0.9492188 0.0625 0.703125 0.0625 0.734375 0 0.734375 0.296875 0.9492188 0.296875 0.9570313 0.28125 0.9570313 0.4414063 0.9609375 0.4375 0.9570313 0.4375 0.9492188 0.28125 0.9570313 0.296875 0.9570313 0.3007813 0.9609375 0.01953125 0.65625 0.01953125 0.6953125 0.01171875 0.6953125 0.1132812 0.6953125 0.1054687 0.6953125 0.1054687 0.65625 0.28125 0.9492188 0.28125 0.9570313 0.2773438 0.9609375 0.1523437 0.8164063 0.1523437 0.8671875 0.1484375 0.8632813 0.21875 0.703125 0.21875 0.734375 0.171875 0.734375 0.08984375 0.65625 0.09765625 0.65625 0.09765625 0.6953125 0.1210937 0.6953125 0.1210937 0.703125 0.1132812 0.703125 0.1132812 0.6953125 0.1132812 0.703125 0.1054687 0.703125 0.07421875 0.65625 0.08203125 0.65625 0.08203125 0.6953125 0.1210937 0.6953125 0.1132812 0.6953125 0.1132812 0.65625 0.09765625 0.6953125 0.09765625 0.703125 0.08984375 0.703125 0.08203125 0.6953125 0.08203125 0.703125 0.07421875 0.703125 0.06640625 0.6953125 0.07421875 0.6953125 0.07421875 0.703125 0.06640625 0.6953125 0.06640625 0.703125 0.05859375 0.703125 0.05859375 0.6953125 0.05859375 0.703125 0.05078125 0.703125 0.04296875 0.6953125 0.05078125 0.6953125 0.05078125 0.703125 0.03515625 0.6953125 0.04296875 0.6953125 0.04296875 0.703125 0.03515625 0.6953125 0.03515625 0.703125 0.02734375 0.703125 0.01953125 0.6953125 0.02734375 0.6953125 0.02734375 0.703125 0.01171875 0.6953125 0.01953125 0.6953125 0.01953125 0.703125 0.05078125 0.6953125 0.04296875 0.6953125 0.04296875 0.65625 0.109375 0.703125 0.109375 0.7041016 0.0625 0.7041016 0.109375 0.703125 0.109375 0.734375 0.0625 0.734375 0.421875 0.9492188 0.421875 0.9570313 0.4179688 0.9609375 0.4492188 0.9609375 0.4726563 0.9609375 0.484375 0.96875 0.484375 0.96875 0.4101563 0.96875 0.4492188 0.9609375 0.4101563 0.96875 0.4179688 0.9609375 0.4414063 0.9609375 0.4101563 0.96875 0.4414063 0.9609375 0.4492188 0.9609375 0.4414063 0.9453125 0.4179688 0.9453125 0.4101563 0.9375 0.4492188 0.9609375 0.4414063 0.9609375 0.4414063 0.9453125 0.484375 0.9375 0.4726563 0.9453125 0.4492188 0.9453125 0.4492188 0.9453125 0.4492188 0.9609375 0.4414063 0.9453125 0.4414063 0.9453125 0.4101563 0.9375 0.4492188 0.9453125 0.4179688 0.9453125 0.4179688 0.9609375 0.4101563 0.96875 0.3359375 0.9335938 0.265625 0.9335938 0.3359375 0.8671875 0.265625 0.9335938 0.265625 0.7773438 0.3359375 0.8671875 0.265625 0.7773438 0.3359375 0.7773438 0.3359375 0.8164063 0.3359375 0.8164063 0.3359375 0.7773438 0.4101563 0.7773438 0.3365457 0.9266614 0.3359375 0.9335938 0.3359375 0.8671875 0.4101563 0.8671875 0.4101563 0.9335938 0.4093334 0.9257813 0.4101563 0.8671875 0.4093334 0.9257813 0.4082009 0.9194982 0.338568 0.9201555 0.3365457 0.9266614 0.3359375 0.8671875 0.3418357 0.9143871 0.338568 0.9201555 0.3359375 0.8671875 0.4101563 0.8671875 0.4082009 0.9194982 0.4048051 0.9138015 0.4101563 0.8671875 0.4048051 0.9138015 0.400143 0.9087718 0.3463863 0.9092633 0.3418357 0.9143871 0.3359375 0.8671875 0.3520503 0.9050107 0.3463863 0.9092633 0.3359375 0.8671875 0.4101563 0.8671875 0.400143 0.9087718 0.3943881 0.9046313 0.4101563 0.8671875 0.3943881 0.9046313 0.3877754 0.9015697 0.3520503 0.9050107 0.3359375 0.8671875 0.358594 0.901826 0.3359375 0.8671875 0.4101563 0.8671875 0.3731499 0.8991516 0.358594 0.901826 0.3359375 0.8671875 0.3657317 0.8998496 0.3657317 0.8998496 0.3359375 0.8671875 0.3731499 0.8991516 0.4101563 0.8671875 0.3877754 0.9015697 0.3805916 0.8997213 0.07895302 0.9276447 0.078125 0.9335938 0.078125 0.8671875 0.1523437 0.8671875 0.1523437 0.9335938 0.149919 0.9257966 0.1523437 0.8671875 0.149919 0.9257966 0.1476761 0.9193678 0.08070421 0.9211758 0.07895302 0.9276447 0.078125 0.8671875 0.08370715 0.9153638 0.08070421 0.9211758 0.078125 0.8671875 0.1523437 0.8671875 0.1476761 0.9193678 0.1442694 0.9137199 0.1523437 0.8671875 0.1442694 0.9137199 0.1396595 0.9087614 0.08795803 0.9101732 0.08370715 0.9153638 0.078125 0.8671875 0.09330022 0.9058326 0.08795803 0.9101732 0.078125 0.8671875 0.1523437 0.8671875 0.1396595 0.9087614 0.134019 0.904713 0.1523437 0.8671875 0.134019 0.904713 0.1275818 0.9017626 0.09330022 0.9058326 0.078125 0.8671875 0.09951663 0.9025395 0.078125 0.8671875 0.1523437 0.8671875 0.1134656 0.8996057 0.09951663 0.9025395 0.078125 0.8671875 0.1063379 0.9004384 0.1063379 0.9004384 0.078125 0.8671875 0.1134656 0.8996057 0.1523437 0.8671875 0.1275818 0.9017626 0.1206293 0.9000405 0.1523437 0.8164063 0.078125 0.8164063 0.078125 0.7773438 0.1523437 0.8671875 0.1523437 0.8164063 0.2265625 0.7773438 0.1523437 0.8164063 0.1523437 0.7773438 0.2265625 0.7773438 0.2265625 0.7773438 0.2265625 0.9335938 0.1523437 0.8671875 + + + + + + + + + + + + + + +

    34 0 0 1 1 1 2 2 2 0 3 3 27 4 4 1 5 5 1 5 6 29 6 7 2 7 8 29 6 9 3 8 10 2 7 11 3 8 12 22 9 13 4 10 14 4 10 15 23 11 16 5 12 17 23 11 18 6 13 19 5 12 20 17 14 21 7 15 22 6 13 23 7 15 24 19 16 25 8 17 26 19 16 27 9 18 28 8 17 29 20 19 30 10 20 31 9 18 32 21 21 33 11 22 34 10 20 35 11 22 36 25 23 37 12 24 38 25 23 39 13 25 40 12 24 41 30 26 42 14 27 43 13 25 44 110 28 45 85 29 46 78 30 47 42 31 48 9 32 49 10 33 50 108 34 51 67 35 52 73 36 53 42 37 54 52 38 55 41 39 56 39 40 57 6 41 58 7 42 59 35 43 60 2 44 61 3 45 62 40 46 63 7 47 64 8 48 65 36 49 66 3 50 67 4 51 68 136 52 69 112 53 70 125 54 71 64 55 72 70 56 73 0 57 74 44 58 75 11 58 76 12 59 77 14 27 78 77 60 79 72 61 80 75 62 81 0 3 82 71 63 83 43 64 84 57 65 85 58 66 86 83 67 87 138 68 88 114 69 89 46 70 90 84 71 91 63 72 92 32 73 93 69 74 94 65 75 95 109 76 96 98 77 97 105 78 98 66 79 99 116 80 100 84 81 101 79 82 102 15 83 103 47 83 104 123 84 105 127 85 106 121 86 107 144 87 108 82 87 109 88 87 110 71 88 111 118 89 112 75 90 113 72 91 114 108 92 115 73 93 116 75 94 117 118 95 118 119 96 119 79 97 120 108 98 121 77 99 122 135 100 123 74 101 124 70 102 125 95 87 126 105 87 127 98 87 128 93 103 129 127 104 130 69 105 131 89 106 132 142 106 133 141 106 134 135 107 135 134 108 136 124 109 137 116 110 138 86 111 139 84 112 140 88 113 141 90 114 142 87 115 143 89 116 144 91 117 145 90 118 146 144 119 147 91 120 148 141 121 149 88 122 150 92 123 151 144 124 152 88 125 153 99 125 154 89 125 155 127 126 156 65 127 157 69 128 158 143 129 159 103 130 160 105 131 161 98 132 162 102 133 163 101 134 164 147 87 165 146 87 166 148 87 167 145 106 168 101 106 169 103 106 170 140 135 171 107 136 172 132 137 173 99 106 174 145 106 175 142 106 176 139 138 177 78 138 178 85 139 179 101 140 180 104 141 181 103 142 182 139 143 183 132 144 184 131 145 185 96 125 186 98 125 187 101 125 188 81 146 189 119 147 190 111 148 191 38 149 192 5 150 193 6 151 194 73 152 195 67 153 196 46 154 197 136 155 198 68 156 199 123 157 200 102 158 201 97 159 202 47 158 203 48 125 204 16 125 205 80 125 206 111 160 207 120 161 208 81 162 209 115 163 210 139 164 211 85 165 212 121 166 213 122 167 214 111 168 215 74 169 216 125 170 217 112 171 218 129 172 219 137 173 220 128 174 221 124 175 222 136 176 223 125 177 224 76 178 225 129 179 226 128 180 227 87 181 228 90 182 229 15 182 230 107 183 231 131 184 232 132 185 233 100 87 234 95 87 235 82 87 236 122 186 237 130 187 238 120 188 239 114 189 240 129 190 241 106 191 242 130 192 243 121 193 244 94 194 245 1 195 246 32 195 247 0 196 248 45 197 249 12 198 250 13 199 251 120 200 252 94 201 253 81 202 254 104 203 255 105 204 256 103 205 257 82 125 258 96 125 259 99 125 260 10 206 261 43 206 262 42 207 263 46 70 264 62 208 265 45 209 266 45 209 267 57 65 268 44 210 269 8 211 270 41 212 271 40 213 272 46 214 273 13 215 274 14 216 275 43 64 276 53 217 277 42 37 278 41 39 279 51 218 280 40 219 281 39 220 282 51 218 283 50 221 284 39 220 285 49 222 286 38 223 287 38 223 288 55 224 289 37 225 290 36 226 291 55 224 292 54 227 293 35 228 294 54 227 295 56 229 296 35 228 297 61 230 298 34 231 299 33 232 300 61 230 301 59 233 302 32 73 303 59 233 304 60 234 305 37 235 306 4 236 307 5 237 308 141 130 309 100 238 310 144 131 311 142 239 312 143 129 313 100 238 314 128 240 315 83 241 316 76 242 317 108 34 318 110 28 319 107 243 320 76 244 321 116 245 322 108 34 323 16 182 324 91 182 325 92 246 326 91 182 327 147 182 328 90 182 329 87 181 330 19 247 331 18 248 332 109 249 333 49 250 334 50 251 335 104 158 336 149 158 337 148 158 338 93 252 339 69 253 340 109 249 341 34 0 342 33 254 343 1 1 344 0 3 345 28 255 346 27 4 347 1 5 348 27 4 349 29 6 350 29 6 351 24 256 352 3 8 353 3 8 354 24 256 355 22 9 356 4 10 357 22 9 358 23 11 359 23 11 360 17 14 361 6 13 362 17 14 363 18 257 364 7 15 365 7 15 366 18 257 367 19 16 368 19 16 369 20 19 370 9 18 371 20 19 372 21 21 373 10 20 374 21 21 375 26 258 376 11 22 377 11 22 378 26 258 379 25 23 380 25 23 381 30 26 382 13 25 383 30 26 384 31 259 385 14 27 386 110 28 387 117 260 388 85 29 389 42 31 390 41 261 391 9 32 392 108 34 393 116 245 394 67 35 395 42 37 396 53 217 397 52 38 398 39 40 399 38 262 400 6 41 401 35 43 402 34 263 403 2 44 404 40 46 405 39 264 406 7 47 407 36 49 408 35 265 409 3 50 410 136 52 411 123 266 412 112 53 413 71 267 414 0 57 415 70 56 416 0 57 417 32 268 418 64 55 419 32 268 420 65 269 421 64 55 422 44 58 423 43 59 424 11 58 425 14 27 426 31 259 427 77 60 428 75 62 429 28 255 430 0 3 431 43 64 432 44 210 433 57 65 434 83 67 435 137 270 436 138 68 437 46 70 438 66 271 439 84 71 440 32 73 441 60 234 442 69 74 443 109 76 444 97 272 445 98 77 446 66 79 447 67 273 448 116 80 449 47 83 450 86 274 451 79 82 452 86 274 453 117 275 454 79 82 455 117 275 456 110 275 457 79 82 458 113 276 459 81 146 460 94 277 461 121 86 462 111 148 463 123 84 464 111 148 465 119 147 466 112 278 467 123 84 468 111 148 469 112 278 470 126 279 471 113 276 472 94 277 473 126 279 474 94 277 475 121 86 476 68 280 477 135 100 478 127 85 479 123 84 480 68 280 481 127 85 482 127 85 483 126 279 484 121 86 485 119 147 486 118 281 487 112 278 488 118 281 489 74 101 490 112 278 491 144 87 492 100 87 493 82 87 494 71 88 495 70 282 496 118 89 497 72 91 498 77 283 499 108 92 500 113 284 501 80 285 502 119 96 503 80 285 504 75 94 505 119 96 506 79 97 507 110 286 508 108 98 509 118 281 510 70 102 511 74 101 512 70 102 513 64 287 514 135 100 515 64 287 516 127 85 517 135 100 518 95 87 519 143 87 520 105 87 521 93 103 522 126 288 523 127 104 524 89 106 525 99 106 526 142 106 527 124 109 528 74 289 529 135 107 530 135 107 531 68 290 532 134 108 533 116 110 534 117 291 535 86 111 536 88 113 537 89 292 538 90 114 539 89 116 540 141 293 541 91 117 542 144 119 543 92 294 544 91 120 545 88 122 546 87 295 547 92 123 548 88 125 549 82 125 550 99 125 551 127 126 552 64 296 553 65 127 554 143 129 555 145 297 556 103 130 557 98 132 558 97 298 559 102 133 560 146 87 561 16 87 562 48 87 563 148 87 564 149 87 565 147 87 566 149 87 567 47 87 568 147 87 569 146 87 570 48 87 571 148 87 572 47 87 573 15 87 574 147 87 575 145 106 576 96 106 577 101 106 578 140 135 579 115 299 580 107 136 581 99 106 582 96 106 583 145 106 584 139 138 585 131 300 586 78 138 587 101 140 588 102 301 589 104 141 590 139 143 591 140 302 592 132 144 593 96 125 594 95 125 595 98 125 596 81 146 597 113 276 598 119 147 599 38 149 600 37 303 601 5 150 602 66 304 603 46 154 604 67 153 605 46 154 606 14 305 607 73 152 608 14 305 609 72 306 610 73 152 611 136 155 612 134 307 613 68 156 614 97 159 615 84 308 616 86 309 617 86 309 618 47 158 619 97 159 620 47 158 621 149 158 622 102 158 623 80 125 624 113 125 625 126 125 626 126 125 627 93 125 628 80 125 629 93 125 630 48 125 631 80 125 632 111 160 633 122 310 634 120 161 635 115 163 636 140 311 637 139 164 638 121 166 639 133 312 640 122 167 641 74 169 642 124 313 643 125 170 644 129 172 645 138 314 646 137 173 647 124 175 648 134 315 649 136 176 650 76 178 651 106 316 652 129 179 653 90 182 654 147 182 655 15 182 656 15 182 657 79 182 658 87 181 659 79 182 660 77 317 661 87 181 662 107 183 663 78 318 664 131 184 665 100 87 666 143 87 667 95 87 668 122 186 669 133 319 670 130 187 671 114 189 672 138 320 673 129 190 674 130 192 675 133 321 676 121 193 677 1 195 678 33 196 679 32 195 680 45 197 681 44 322 682 12 198 683 120 200 684 130 323 685 94 201 686 104 203 687 109 324 688 105 204 689 82 125 690 95 125 691 96 125 692 10 206 693 11 207 694 43 206 695 46 70 696 63 72 697 62 208 698 45 209 699 62 208 700 57 65 701 8 211 702 9 325 703 41 212 704 46 214 705 45 326 706 13 215 707 43 64 708 58 66 709 53 217 710 41 39 711 52 38 712 51 218 713 39 220 714 40 219 715 51 218 716 39 220 717 50 221 718 49 222 719 38 223 720 49 222 721 55 224 722 36 226 723 37 225 724 55 224 725 35 228 726 36 226 727 54 227 728 35 228 729 56 229 730 61 230 731 33 232 732 34 231 733 61 230 734 32 73 735 33 232 736 59 233 737 37 235 738 36 327 739 4 236 740 141 130 741 142 239 742 100 238 743 142 239 744 145 297 745 143 129 746 128 240 747 137 328 748 83 241 749 115 329 750 85 29 751 117 260 752 117 260 753 116 245 754 115 329 755 116 245 756 83 330 757 114 331 758 116 245 759 114 331 760 115 329 761 106 332 762 76 244 763 108 34 764 115 329 765 114 331 766 106 332 767 110 28 768 78 30 769 107 243 770 107 243 771 115 329 772 106 332 773 106 332 774 108 34 775 107 243 776 76 244 777 83 330 778 116 245 779 75 333 780 80 334 781 92 246 782 80 334 783 16 182 784 92 246 785 16 182 786 146 182 787 91 182 788 91 182 789 146 182 790 147 182 791 28 182 792 75 333 793 92 246 794 87 181 795 77 317 796 31 335 797 87 181 798 31 335 799 30 336 800 27 182 801 28 182 802 92 246 803 29 337 804 27 182 805 92 246 806 87 181 807 30 336 808 25 338 809 87 181 810 25 338 811 26 339 812 24 340 813 29 337 814 92 246 815 22 341 816 24 340 817 92 246 818 87 181 819 26 339 820 21 342 821 87 181 822 21 342 823 20 343 824 22 341 825 92 246 826 23 182 827 92 246 828 87 181 829 18 248 830 23 182 831 92 246 832 17 182 833 17 182 834 92 246 835 18 248 836 87 181 837 20 343 838 19 247 839 63 344 840 84 308 841 97 159 842 109 249 843 69 253 844 60 345 845 109 249 846 60 345 847 59 346 848 62 347 849 63 344 850 97 159 851 57 348 852 62 347 853 97 159 854 109 249 855 59 346 856 61 349 857 109 249 858 61 349 859 56 350 860 58 158 861 57 348 862 97 159 863 53 158 864 58 158 865 97 159 866 109 249 867 56 350 868 54 351 869 109 249 870 54 351 871 55 352 872 53 158 873 97 159 874 52 158 875 97 159 876 109 249 877 50 251 878 52 158 879 97 159 880 51 353 881 51 353 882 97 159 883 50 251 884 109 249 885 55 352 886 49 250 887 104 158 888 102 158 889 149 158 890 109 249 891 104 158 892 48 158 893 104 158 894 148 158 895 48 158 896 48 158 897 93 252 898 109 249 899

    +
    +
    +
    + + + + -3.5 0 0.5 -3.5 4 0.5 -3.5 0 -0.5 -3.5 4 -0.5 3.5 0 0.5 3.5 4 0.5 3.5 0 -0.5 3.5 4 -0.5 -2.449998 0.06249982 0.3 -2.499998 0.1124998 0.3 2.499999 0.1124998 0.3 2.449999 0.06249982 0.3 2.449999 3.499999 0.3 2.499999 3.449999 0.3 -2.499998 3.45 0.3 -2.449998 3.5 0.3 -2.566542 0.01615011 0.5 -2.499998 0.1124998 0.4125 -2.460354 0.003356516 0.5 -2.449998 0.06249982 0.4125 2.465347 0.003356516 0.5 2.449999 0.06249982 0.4125 2.499999 0.1124998 0.4125 2.570442 0.01410555 0.5 2.570653 3.507365 0.5 -2.449998 0.06249982 -0.3 -2.499998 0.1124998 -0.3 2.499999 0.1124998 -0.3 2.449999 0.06249982 -0.3 2.449999 3.499999 -0.3 2.499999 3.449999 -0.3 -2.499998 3.45 -0.3 -2.449998 3.5 -0.3 -2.566542 0.01615011 -0.5 -2.499998 0.1124998 -0.4125 -2.460354 0.003356516 -0.5 -2.449998 0.06249982 -0.4125 2.465347 0.003356516 -0.5 2.449999 0.06249982 -0.4125 2.499999 0.1124998 -0.4125 2.570442 0.01410555 -0.5 2.570653 3.507365 -0.5 2.499999 3.449999 -0.4125 2.509674 3.568343 -0.5 2.449999 3.499999 -0.4125 -2.515752 3.568344 -0.5 -2.449998 3.5 -0.4125 -2.499998 3.45 -0.4125 -2.566191 3.518172 -0.5 2.499999 3.449999 0.4125 2.509674 3.568343 0.5 2.449999 3.499999 0.4125 -2.515752 3.568344 0.5 2.449999 3.599999 -0.3000003 2.499999 3.549999 -0.3000003 -2.499998 3.549999 -0.3000003 -2.449998 3.599999 -0.3000003 -2.449998 3.5 0.4125 -2.499998 3.45 0.4125 -2.499998 0 -0.3 -2.566191 3.518172 0.5 2.449999 3.599999 0.3000003 2.499999 0 -0.3 2.499999 3.549999 0.3000003 -3.5 0 -0.5 -2.499998 3.549999 0.3000003 3.5 0 -0.5 -2.449998 3.599999 0.3000003 3.062499 3.549999 -0.3000004 -2.499998 0 0.3 3.062499 0 -0.3000001 2.499999 0 0.3 -3.5 0 0.5 3.5 0 0.5 -3.062498 3.549999 -0.3000005 -3.062498 0 -0.3000002 -3.5 0.02500009 -0.45 3.062499 3.549999 0.3000004 3.5 0.02500009 -0.45 3.062499 0 0.3000001 -3.062498 3.549999 0.3000005 -3.062498 0 0.3000002 -3.5 0.02500009 0.45 3.5 0.02500009 0.45 + + + + + + + + + + -1 0 0 -0.7071079 -0.7071058 0 -0.4914328 -0.4914404 0.7190133 -1 0 0 0 1 0 0.4790179 -0.4790199 0.7355828 -0.6058115 0.6058108 0.515738 0 0.8284935 0.5599987 -0.7071071 0.7071066 0 0.7071078 -0.7071059 0 1 0 0 0.7975064 0 0.6033105 0.0771737 0.64055 0.7640287 0 -1 0 -0.6058115 0.6058108 -0.515738 0.4782425 -0.480796 -0.7349281 0.6165269 0.6165267 -0.4896831 -0.4914354 -0.4914371 -0.7190139 0 0.8284936 -0.5599986 0.7975074 0 -0.6033093 -0.7780221 0 -0.628237 -2.1912e-7 -0.7880899 -0.6155603 0.7071072 0.7071065 0 0 0 -1 0 -1 0 -0.7071036 -0.70711 0 0 3.89255e-6 1 0 0 1 -2.1912e-7 -0.7880899 0.6155602 0.7071036 -0.70711 0 -1 0 0 -0.7789177 4.71053e-5 0.6271261 -1.62189e-7 -1 0 7.41746e-7 0 1 -3.17891e-7 3.70874e-6 -1 0 3.89255e-6 -1 7.41746e-7 0 -1 0 7.68902e-7 -1 0 7.68902e-7 1 -9.00692e-7 0 1 -1 0 0 -0.7071078 -0.7071059 0 -0.4914354 -0.4914371 0.7190139 0.4782425 -0.480796 0.7349281 -0.0651189 0.6366786 0.7683749 0 0.8284941 0.5599979 -0.7071073 0.7071063 0 0.7071079 -0.7071058 0 0.7960138 -7.97699e-5 0.6052786 0.6165269 0.6165267 0.4896831 -0.06511884 0.6366788 -0.7683748 0.4790179 -0.4790199 -0.7355828 0.0771737 0.64055 -0.7640287 -0.4914328 -0.4914404 -0.7190133 0 0.8284941 -0.559998 0.7960132 -7.97698e-5 -0.6052795 -0.7789177 4.71053e-5 -0.6271261 0 -0.7880892 -0.6155612 -4.76837e-7 -1 0 -0.7071092 -0.7071044 0 3.27826e-6 3.35274e-6 1 3.27825e-6 2.98025e-6 1 0 2.91942e-6 1 -3.27826e-6 2.98022e-6 1 -3.27825e-6 3.35278e-6 1 0 -0.7880892 0.6155611 0.7071092 -0.7071044 0 -1 0 0 9.44843e-7 -1 0 0 0 -1 -0.7780221 0 0.628237 1.58946e-7 0 1 1.77415e-7 0 1 1.58948e-7 3.17892e-6 1 -9.00692e-7 0 -1 -3.17892e-7 0 -1 -3.36361e-7 0 -1 3.27825e-6 2.98025e-6 -1 3.27825e-6 3.35273e-6 -1 -3.27826e-6 2.98022e-6 -1 0 2.91942e-6 -1 -3.27825e-6 3.35278e-6 -1 1.58948e-7 3.17892e-6 -1 1.77415e-7 0 -1 1.58946e-7 0 -1 0 -7.7243e-7 -1 0 -7.7243e-7 1 -3.17893e-7 3.70874e-6 1 -3.36361e-7 0 1 -3.17892e-7 0 1 + + + + + + + + + + 0.4492188 0.2695313 0.4570313 0.078125 0.4570313 0.2695313 0.4570313 0.2773438 0.4492188 0.2695313 0.4492188 0.2773438 0.4570313 0.2851563 0.4648438 0.2773438 0.4648438 0.2851563 0.0625 0.0625 0 0.3125 0 0.0625 0.4570313 0.4101563 0.4492188 0.4179688 0.4492188 0.4101563 0.4570313 0.609375 0.4492188 0.4179688 0.4570313 0.4179688 0.1367187 0.6171875 0.4492188 0.609375 0.4492188 0.6171875 0.1289062 0.2773438 0.1210937 0.2851563 0.1210937 0.2773438 0.4570313 0.0625 0.4648438 0.0703125 0.4570313 0.0703125 0.4570313 0.0703125 0.1289062 0.0625 0.4570313 0.0625 0.4492188 0.078125 0.1367187 0.0703125 0.4492188 0.0703125 0.4570313 0.078125 0.4492188 0.0703125 0.4570313 0.0703125 0.1289062 0.2695313 0.1367187 0.2773438 0.1289062 0.2773438 0.1367187 0.078125 0.1289062 0.2695313 0.1289062 0.078125 0.1210937 0.2773438 0.1289062 0.0703125 0.1289062 0.2773438 0.1210937 0.0625 0.1289062 0.0703125 0.1210937 0.0703125 0.1367187 0.2695313 0.4492188 0.2773438 0.1367187 0.2773438 0.4492188 0.609375 0.4570313 0.6171875 0.4492188 0.6171875 0.1367187 0.4179688 0.1289062 0.4101563 0.1367187 0.4101563 0.1289062 0.4179688 0.1367187 0.609375 0.1289062 0.609375 0.4492188 0.4179688 0.1367187 0.4101563 0.1367187 0.4179688 0.4648438 0.6171875 0.4570313 0.625 0.4648438 0.625 0.1289062 0.4101563 0.1210937 0.4023438 0.1289062 0.4023438 0.1289062 0.625 0.1210937 0.6171875 0.1210937 0.625 0.4648438 0.4023438 0.4570313 0.4101563 0.4570313 0.4023438 0.1289062 0.625 0.4570313 0.6171875 0.4570313 0.625 0.1289062 0.6171875 0.1210937 0.4101563 0.1289062 0.4101563 0.4648438 0.4101563 0.4570313 0.6171875 0.4570313 0.4101563 0.4570313 0.4101563 0.1289062 0.4023438 0.1289062 0.4101563 0.1289062 0.6171875 0.1367187 0.609375 0.1367187 0.6171875 0.0625 0.625 0.1210937 0.625 0.4648438 0.625 0.0546875 0.6484375 0.0078125 0.6289063 0.0546875 0.6289063 0.0546875 0.3320313 0.0078125 0.3359375 0.0078125 0.3320313 0.0078125 0.3359375 0.0078125 0.625 0 0.625 0.4648438 0.0625 0.1210937 0.0625 0.0625 0.05859375 0.1289062 0.2851563 0.4570313 0.2773438 0.1289062 0.2773438 0.0546875 0.625 0.0078125 0.6289063 0.0078125 0.625 0.5859375 0.0625 0.5234375 0.3125 0.5234375 0.0625 0.5234375 0.3125 0.4648438 0.2851563 0.4648438 0.28125 0.578125 0.3164063 0.53125 0.6289063 0.578125 0.6289063 0.5234375 0.375 0.0625 0.3125 0.5234375 0.3125 0.5234375 0.05859375 0.0625 0 0.0625 0.05859375 0.1367187 0.1992187 0.3554688 0.234375 0.1367187 0.234375 0.0078125 0.3125 0.0546875 0.3320313 0.0078125 0.3320313 0.4648438 0.4023438 0.0625 0.375 0.5234375 0.375 0.0625 0 0.5234375 0.05859375 0.0625 0.05859375 0.4648438 0.2773438 0.4570313 0.0703125 0.4648438 0.0703125 0.1289062 0.078125 0.1367187 0.0703125 0.1367187 0.078125 0.0546875 0.3359375 0.0078125 0.625 0.0078125 0.3359375 0.3554688 0.234375 0.1367187 0.1992187 0.3554688 0.1992187 0.1445312 0.1640625 0.3554688 0.1992187 0.3476563 0.1640625 0.3554688 0.1992187 0.3554688 0.1640625 0.3476563 0.1640625 0.0625 0.3359375 0.0546875 0.3359375 0.0546875 0.625 0.1445312 0.234375 0.3476563 0.234375 0.3554688 0.2695313 0.5859375 0.3398438 0.5859375 0.6054688 0.578125 0.5976563 0.5234375 0.6054688 0.5234375 0.3398438 0.53125 0.3476563 0.1445312 0.234375 0.3476563 0.234375 0.3554688 0.2695313 0.4492188 0.2695313 0.4492188 0.078125 0.4570313 0.078125 0.4570313 0.2773438 0.4570313 0.2695313 0.4492188 0.2695313 0.4570313 0.2851563 0.4570313 0.2773438 0.4648438 0.2773438 0.0625 0.0625 0.0625 0.3125 0 0.3125 0.4570313 0.4101563 0.4570313 0.4179688 0.4492188 0.4179688 0.4570313 0.609375 0.4492188 0.609375 0.4492188 0.4179688 0.1367187 0.6171875 0.1367187 0.609375 0.4492188 0.609375 0.1289062 0.2773438 0.1289062 0.2851563 0.1210937 0.2851563 0.4570313 0.0625 0.4648438 0.0625 0.4648438 0.0703125 0.4570313 0.0703125 0.1289062 0.0703125 0.1289062 0.0625 0.4492188 0.078125 0.1367187 0.078125 0.1367187 0.0703125 0.4570313 0.078125 0.4492188 0.078125 0.4492188 0.0703125 0.1289062 0.2695313 0.1367187 0.2695313 0.1367187 0.2773438 0.1367187 0.078125 0.1367187 0.2695313 0.1289062 0.2695313 0.1210937 0.2773438 0.1210937 0.0703125 0.1289062 0.0703125 0.1210937 0.0625 0.1289062 0.0625 0.1289062 0.0703125 0.1367187 0.2695313 0.4492188 0.2695313 0.4492188 0.2773438 0.4492188 0.609375 0.4570313 0.609375 0.4570313 0.6171875 0.1367187 0.4179688 0.1289062 0.4179688 0.1289062 0.4101563 0.1289062 0.4179688 0.1367187 0.4179688 0.1367187 0.609375 0.4492188 0.4179688 0.4492188 0.4101563 0.1367187 0.4101563 0.4648438 0.6171875 0.4570313 0.6171875 0.4570313 0.625 0.1289062 0.4101563 0.1210937 0.4101563 0.1210937 0.4023438 0.1289062 0.625 0.1289062 0.6171875 0.1210937 0.6171875 0.4648438 0.4023438 0.4648438 0.4101563 0.4570313 0.4101563 0.1289062 0.625 0.1289062 0.6171875 0.4570313 0.6171875 0.1289062 0.6171875 0.1210937 0.6171875 0.1210937 0.4101563 0.4648438 0.4101563 0.4648438 0.6171875 0.4570313 0.6171875 0.4570313 0.4101563 0.4570313 0.4023438 0.1289062 0.4023438 0.1289062 0.6171875 0.1289062 0.609375 0.1367187 0.609375 0.5234375 0.625 0.5234375 0.6289063 0.0625 0.6289063 0.0625 0.625 0.0625 0.375 0.1210937 0.40625 0.0625 0.625 0.1210937 0.40625 0.1210937 0.625 0.5234375 0.625 0.0625 0.6289063 0.4648438 0.625 0.0625 0.6289063 0.0625 0.625 0.4648438 0.625 0.0546875 0.6484375 0.0078125 0.6484375 0.0078125 0.6289063 0.0546875 0.3320313 0.0546875 0.3359375 0.0078125 0.3359375 0.0078125 0.625 0.0078125 0.6289063 0 0.6289063 0 0.6289063 0 0.625 0.0078125 0.625 0 0.625 0 0.3359375 0.0078125 0.3359375 0 0.3359375 0 0.3320313 0.0078125 0.3359375 0 0.3320313 0.0078125 0.3320313 0.0078125 0.3359375 0.1210937 0.0625 0.1210937 0.28125 0.0625 0.05859375 0.1210937 0.28125 0.0625 0.3125 0.0625 0.05859375 0.0625 0.05859375 0.5234375 0.05859375 0.5234375 0.0625 0.0625 0.05859375 0.5234375 0.0625 0.4648438 0.0625 0.0625 0.05859375 0.0625 0.05859375 0.4648438 0.0625 0.1289062 0.2851563 0.4570313 0.2851563 0.4570313 0.2773438 0.0546875 0.625 0.0546875 0.6289063 0.0078125 0.6289063 0.5859375 0.0625 0.5859375 0.3125 0.5234375 0.3125 0.4648438 0.0625 0.5234375 0.0625 0.4648438 0.28125 0.5234375 0.0625 0.5234375 0.3125 0.4648438 0.28125 0.0625 0.3125 0.1210937 0.28125 0.1210937 0.2851563 0.0625 0.3125 0.1210937 0.2851563 0.4648438 0.2851563 0.5234375 0.3125 0.0625 0.3125 0.4648438 0.2851563 0.578125 0.3164063 0.53125 0.3164063 0.53125 0.6289063 0.5234375 0.375 0.0625 0.375 0.0625 0.3125 0.5234375 0.05859375 0.5234375 0 0.0625 0 0.1367187 0.1992187 0.3554688 0.1992187 0.3554688 0.234375 0.0078125 0.3125 0.0546875 0.3125 0.0546875 0.3320313 0.5234375 0.375 0.5234375 0.625 0.4648438 0.40625 0.5234375 0.625 0.4648438 0.625 0.4648438 0.40625 0.1210937 0.4023438 0.1210937 0.40625 0.0625 0.375 0.5234375 0.375 0.4648438 0.40625 0.4648438 0.4023438 0.4648438 0.4023438 0.1210937 0.4023438 0.0625 0.375 0.0625 0 0.5234375 0 0.5234375 0.05859375 0.4648438 0.2773438 0.4570313 0.2773438 0.4570313 0.0703125 0.1289062 0.078125 0.1289062 0.0703125 0.1367187 0.0703125 0.0546875 0.3359375 0.0546875 0.625 0.0078125 0.625 0.3554688 0.234375 0.1367187 0.234375 0.1367187 0.1992187 0.1445312 0.1640625 0.1367187 0.1640625 0.1367187 0.1992187 0.1367187 0.1992187 0.3554688 0.1992187 0.1445312 0.1640625 0.3554688 0.1992187 0.3554688 0.1640625 0.3476563 0.1640625 0.3476563 0.1640625 0.1445312 0.1640625 0.3554688 0.1992187 0.1445312 0.1640625 0.1367187 0.1640625 0.1367187 0.1992187 0.3554688 0.1992187 0.1445312 0.1640625 0.1367187 0.1992187 0.0625 0.3359375 0.0625 0.3320313 0.0546875 0.3359375 0.0625 0.3320313 0.0546875 0.3320313 0.0546875 0.3359375 0.0625 0.6289063 0.0625 0.625 0.0546875 0.625 0.0625 0.625 0.0625 0.3359375 0.0546875 0.625 0.0546875 0.625 0.0546875 0.6289063 0.0625 0.6289063 0.3554688 0.234375 0.3554688 0.2695313 0.3476563 0.234375 0.3554688 0.2695313 0.1367187 0.2695313 0.1445312 0.234375 0.1367187 0.2695313 0.1367187 0.234375 0.1445312 0.234375 0.578125 0.3476563 0.578125 0.3398438 0.5859375 0.3398438 0.5859375 0.6054688 0.578125 0.6054688 0.578125 0.5976563 0.578125 0.5976563 0.578125 0.3476563 0.5859375 0.3398438 0.53125 0.5976563 0.53125 0.6054688 0.5234375 0.6054688 0.5234375 0.3398438 0.53125 0.3398438 0.53125 0.3476563 0.53125 0.3476563 0.53125 0.5976563 0.5234375 0.6054688 0.3476563 0.234375 0.3554688 0.234375 0.3554688 0.2695313 0.3554688 0.2695313 0.1367187 0.2695313 0.1445312 0.234375 0.1367187 0.2695313 0.1367187 0.234375 0.1445312 0.234375 + + + + + + + + + + + + + + +

    13 0 0 22 0 1 49 0 2 13 1 3 51 1 4 12 1 5 50 2 6 49 2 7 24 2 8 0 3 9 3 3 10 2 3 11 44 1 12 30 1 13 29 1 14 39 0 15 30 0 16 42 0 17 36 4 18 28 4 19 38 4 20 57 5 21 60 5 22 58 5 23 20 6 24 22 6 25 21 6 26 21 7 27 18 7 28 20 7 29 11 4 30 19 4 31 21 4 32 22 8 33 11 8 34 21 8 35 58 9 36 15 9 37 57 9 38 9 10 39 58 10 40 17 10 41 60 11 42 17 11 43 58 11 44 18 12 45 17 12 46 16 12 47 15 13 48 51 13 49 57 13 50 28 8 51 39 8 52 38 8 53 32 9 54 47 9 55 46 9 56 47 10 57 26 10 58 34 10 59 44 13 60 32 13 61 46 13 62 39 14 63 37 14 64 38 14 65 46 15 66 48 15 67 45 15 68 35 16 69 34 16 70 36 16 71 43 17 72 42 17 73 44 17 74 35 18 75 38 18 76 37 18 77 34 19 78 48 19 79 47 19 80 41 20 81 39 20 82 42 20 83 46 21 84 43 21 85 44 21 86 36 22 87 26 22 88 25 22 89 2 23 90 33 23 91 35 23 92 80 24 93 55 24 94 65 24 95 63 25 96 53 25 97 54 25 98 32 26 99 29 26 100 53 26 101 18 27 102 16 27 103 0 27 104 50 28 105 57 28 106 51 28 107 67 29 108 55 29 109 56 29 110 6 10 111 5 10 112 4 10 113 5 27 114 50 27 115 24 27 116 83 4 117 76 4 118 82 4 119 7 4 120 1 4 121 5 4 122 4 4 123 2 4 124 0 4 125 79 30 126 68 30 127 70 30 128 68 24 129 63 24 130 54 24 131 43 23 132 3 23 133 7 23 134 64 24 135 73 24 136 72 24 137 24 31 138 22 31 139 23 31 140 9 22 141 19 22 142 8 22 143 61 32 144 56 32 145 53 32 146 80 10 147 75 10 148 74 10 149 27 33 150 68 33 151 30 33 152 80 34 153 65 34 154 14 34 155 61 35 156 12 35 157 15 35 158 10 36 159 13 36 160 77 36 161 71 37 162 69 37 163 8 37 164 59 38 165 62 38 166 28 38 167 26 39 168 31 39 169 74 39 170 13 40 171 10 40 172 22 40 173 13 41 174 49 41 175 51 41 176 50 42 177 51 42 178 49 42 179 0 3 180 1 3 181 3 3 182 44 41 183 42 41 184 30 41 185 39 40 186 27 40 187 30 40 188 36 4 189 25 4 190 28 4 191 57 43 192 52 43 193 60 43 194 20 44 195 23 44 196 22 44 197 21 45 198 19 45 199 18 45 200 11 4 201 8 4 202 19 4 203 22 46 204 10 46 205 11 46 206 58 47 207 14 47 208 15 47 209 9 10 210 14 10 211 58 10 212 60 48 213 16 48 214 17 48 215 18 49 216 19 49 217 17 49 218 15 13 219 12 13 220 51 13 221 28 46 222 27 46 223 39 46 224 32 47 225 31 47 226 47 47 227 47 10 228 31 10 229 26 10 230 44 13 231 29 13 232 32 13 233 39 50 234 40 50 235 37 50 236 46 51 237 47 51 238 48 51 239 35 52 240 33 52 241 34 52 242 43 53 243 41 53 244 42 53 245 35 54 246 36 54 247 38 54 248 34 55 249 33 55 250 48 55 251 41 56 252 40 56 253 39 56 254 46 57 255 45 57 256 43 57 257 36 22 258 34 22 259 26 22 260 37 23 261 40 23 262 6 23 263 2 23 264 3 23 265 48 23 266 2 23 267 48 23 268 33 23 269 37 23 270 6 23 271 35 23 272 6 23 273 2 23 274 35 23 275 80 58 276 74 58 277 55 58 278 63 59 279 61 59 280 53 59 281 29 60 282 30 60 283 54 60 284 54 61 285 53 61 286 29 61 287 53 62 288 56 62 289 32 62 290 56 63 291 55 63 292 32 63 293 55 64 294 31 64 295 32 64 296 16 27 297 60 27 298 0 27 299 60 27 300 1 27 301 0 27 302 4 27 303 23 27 304 20 27 305 4 27 306 20 27 307 18 27 308 0 27 309 4 27 310 18 27 311 50 65 312 52 65 313 57 65 314 67 66 315 65 66 316 55 66 317 6 10 318 7 10 319 5 10 320 23 27 321 4 27 322 24 27 323 4 27 324 5 27 325 24 27 326 1 27 327 60 27 328 52 27 329 1 27 330 52 27 331 50 27 332 5 27 333 1 27 334 50 27 335 83 4 336 78 4 337 76 4 338 7 4 339 3 4 340 1 4 341 4 4 342 6 4 343 2 4 344 79 67 345 77 67 346 68 67 347 68 68 348 77 68 349 63 68 350 7 23 351 6 23 352 41 23 353 6 23 354 40 23 355 41 23 356 45 23 357 48 23 358 3 23 359 7 23 360 41 23 361 43 23 362 43 69 363 45 69 364 3 69 365 64 24 366 66 24 367 73 24 368 24 70 369 49 70 370 22 70 371 9 22 372 17 22 373 19 22 374 61 24 375 67 24 376 56 24 377 80 10 378 81 10 379 75 10 380 27 71 381 62 71 382 70 71 383 70 72 384 68 72 385 27 72 386 68 73 387 54 73 388 30 73 389 14 74 390 9 74 391 80 74 392 9 75 393 69 75 394 81 75 395 80 76 396 9 76 397 81 76 398 61 77 399 63 77 400 12 77 401 63 78 402 13 78 403 12 78 404 65 79 405 67 79 406 15 79 407 67 80 408 61 80 409 15 80 410 15 81 411 14 81 412 65 81 413 63 82 414 77 82 415 13 82 416 77 83 417 79 83 418 10 83 419 79 84 420 71 84 421 10 84 422 11 23 423 10 23 424 71 23 425 69 23 426 9 23 427 8 23 428 8 85 429 11 85 430 71 85 431 25 27 432 26 27 433 59 27 434 62 27 435 27 27 436 28 27 437 28 86 438 25 86 439 59 86 440 31 87 441 55 87 442 74 87 443 74 88 444 75 88 445 26 88 446 75 89 447 59 89 448 26 89 449

    +
    +
    +
    +
    + + + + + 0.04166662 0.08333331 0.125 0.1666666 0.2083333 0.25 0.2916666 0.3333333 0.375 0.4166666 0.4583333 0.5 0.5416667 0.5833333 0.625 0.6666667 0.7083333 0.75 0.7916667 0.8333333 0.875 0.9166667 0.9583333 1 1.041667 1.083333 1.125 1.166667 1.208333 1.25 + + + + + + + + 7.54979e-8 -1 0 1.82539e-7 1 7.54979e-8 0 1.75 0 0 1 0.01755606 0 0 0 1 0.08690225 -0.9962168 0 1.82539e-7 0.9962168 0.08690225 0 1.75 0 0 1 0.01755606 0 0 0 1 0.3064026 -0.951902 0 1.82539e-7 0.951902 0.3064026 0 1.75 0 0 1 0.01755606 0 0 0 1 0.5796046 -0.8148978 0 1.82539e-7 0.8148978 0.5796046 0 1.75 0 0 1 0.01755606 0 0 0 1 0.8148978 -0.5796046 0 1.82539e-7 0.5796046 0.8148978 0 1.75 0 0 1 0.01755606 0 0 0 1 0.951902 -0.3064026 0 1.82539e-7 0.3064026 0.951902 0 1.75 0 0 1 0.01755606 0 0 0 1 0.9962168 -0.08690242 0 1.82539e-7 0.08690242 0.9962168 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.86265e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 + + + + + + + + LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR + + + + + + + + + + + + + + + + + + 0.04166662 0.08333331 0.125 0.1666666 0.2083333 0.25 0.2916666 0.3333333 0.375 0.4166666 0.4583333 0.5 0.5416667 0.5833333 0.625 0.6666667 0.7083333 0.75 0.7916667 0.8333333 0.875 0.9166667 0.9583333 1 1.041667 1.083333 1.125 1.166667 1.208333 1.25 + + + + + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.040625 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.121875 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.125 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.128125 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.15 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.246175 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.4424 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.712725 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1.0312 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1.371875 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1.7088 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 2.016025 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 2.2676 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 2.437575 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 2.5 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR + + + + + + + + + + + + + + + + + + 0.04166662 0.08333331 0.125 0.1666666 0.2083333 0.25 0.2916666 0.3333333 0.375 0.4166666 0.4583333 0.5 0.5416667 0.5833333 0.625 0.6666667 0.7083333 0.75 0.7916667 0.8333333 0.875 0.9166667 0.9583333 1 1.041667 1.083333 1.125 1.166667 1.208333 1.25 + + + + + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.040625 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.121875 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.125 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.128125 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.15 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.246175 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.4424 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.712725 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -1.0312 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -1.371875 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -1.7088 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -2.016025 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -2.2676 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -2.437575 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -2.5 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR + + + + + + + + + + + + + + + + + + 0.04166662 0.08333331 0.125 0.1666666 0.2083333 0.25 0.2916666 0.3333333 0.375 0.4166666 0.4583333 0.5 0.5416667 0.5833333 0.625 0.6666667 0.7083333 0.75 0.7916667 0.8333333 0.875 0.9166667 0.9583333 1 1.041667 1.083333 1.125 1.166667 1.208333 1.25 + + + + + + + + 7.54979e-8 -1 0 1.82539e-7 1 7.54979e-8 0 1.75 0 0 1 0.01755606 0 0 0 1 0.08690225 -0.9962168 0 1.82539e-7 0.9962168 0.08690225 0 1.75 0 0 1 0.01755606 0 0 0 1 0.3064026 -0.951902 0 1.82539e-7 0.951902 0.3064026 0 1.75 0 0 1 0.01755606 0 0 0 1 0.5796046 -0.8148978 0 1.82539e-7 0.8148978 0.5796046 0 1.75 0 0 1 0.01755606 0 0 0 1 0.8148978 -0.5796046 0 1.82539e-7 0.5796046 0.8148978 0 1.75 0 0 1 0.01755606 0 0 0 1 0.951902 -0.3064026 0 1.82539e-7 0.3064026 0.951902 0 1.75 0 0 1 0.01755606 0 0 0 1 0.9962168 -0.08690242 0 1.82539e-7 0.08690242 0.9962168 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.86265e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 + + + + + + + + LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR + + + + + + + + + + + + + + + + + + + 1 0 0 -2.5 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 + + + + + + + + + + + + + 1 0 0 2.5 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 + + + + + + + + + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + + + + + +
    \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/doors/sliding_seal_door.obj b/src/main/resources/assets/hbm/models/doors/sliding_seal_door.obj new file mode 100644 index 000000000..dc0017cc3 --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/sliding_seal_door.obj @@ -0,0 +1,2522 @@ +# Blender v2.92.0 OBJ File: 'sliding_seal_door.blend' +# www.blender.org +o frame +v 0.125000 2.000000 -0.500000 +v 0.125000 0.000000 -0.500000 +v 0.125000 0.000000 0.500000 +v 0.125000 2.000000 0.500000 +v 0.125000 0.076037 0.228141 +v 0.125000 0.271859 0.423963 +v 0.125000 0.102272 0.326052 +v 0.125000 0.173948 0.397728 +v 0.125000 1.728141 0.423963 +v 0.125000 1.923963 0.228141 +v 0.125000 1.826052 0.397728 +v 0.125000 1.897728 0.326052 +v 0.125000 0.271859 -0.423963 +v 0.125000 0.076037 -0.228141 +v 0.125000 0.173948 -0.397728 +v 0.125000 0.102272 -0.326052 +v 0.125000 1.923963 -0.228141 +v 0.125000 1.728141 -0.423963 +v 0.125000 1.897728 -0.326052 +v 0.125000 1.826052 -0.397728 +v 0.089033 1.728141 -0.423963 +v 0.089033 1.826052 -0.397728 +v 0.089033 1.897728 -0.326052 +v 0.089033 1.923963 -0.228141 +v 0.089033 0.076037 -0.228141 +v 0.089033 0.102272 -0.326052 +v 0.089033 0.173948 -0.397728 +v 0.089033 0.271859 -0.423963 +v 0.089033 0.271859 0.423963 +v 0.089033 0.173948 0.397728 +v 0.089033 0.102272 0.326052 +v 0.089033 0.076037 0.228141 +v 0.089033 1.923963 0.228141 +v 0.089033 1.897728 0.326052 +v 0.089033 1.826052 0.397728 +v 0.089033 1.728141 0.423963 +v 0.089033 0.036209 -0.233384 +v 0.089033 0.036209 0.233384 +v 0.089033 1.846138 0.432517 +v 0.089033 1.733384 0.463791 +v 0.089033 1.932517 0.346138 +v 0.089033 1.963791 0.233384 +v 0.089033 0.067483 0.346138 +v 0.089033 0.153862 0.432517 +v 0.089033 0.266616 0.463791 +v 0.089033 0.036209 -0.432517 +v 0.089033 0.036209 -0.477970 +v 0.089033 0.036209 -0.346138 +v 0.089033 1.963791 -0.346138 +v 0.089033 1.963791 -0.233384 +v 0.089033 1.963791 -0.432517 +v 0.089033 1.963791 -0.477970 +v 0.125000 0.053035 0.242267 +v 0.125000 0.253733 0.450214 +v 0.125000 0.079924 0.346241 +v 0.125000 0.153384 0.422355 +v 0.125000 1.746267 0.450214 +v 0.125000 1.946965 0.242267 +v 0.125000 1.846616 0.422355 +v 0.125000 1.920076 0.346241 +v 0.125000 0.253733 -0.450214 +v 0.125000 0.053035 -0.242267 +v 0.125000 0.153384 -0.422355 +v 0.125000 0.079924 -0.346241 +v 0.125000 1.946965 -0.242267 +v 0.125000 1.746267 -0.450214 +v 0.125000 1.920076 -0.346241 +v 0.125000 1.846616 -0.422355 +v 0.139289 0.068129 0.233128 +v 0.139289 0.094589 0.333179 +v 0.139289 0.166878 0.406422 +v 0.139289 0.265627 0.433231 +v 0.139289 1.734373 0.433231 +v 0.139289 1.833122 0.406422 +v 0.139289 1.905411 0.333179 +v 0.139289 1.931871 0.233128 +v 0.139289 0.265627 -0.433231 +v 0.139289 0.166878 -0.406422 +v 0.139289 0.094589 -0.333179 +v 0.139289 0.068129 -0.233128 +v 0.139289 1.931871 -0.233128 +v 0.139289 1.905411 -0.333179 +v 0.139289 1.833122 -0.406422 +v 0.139289 1.734373 -0.433231 +v 0.139289 0.058093 0.238676 +v 0.139289 0.084837 0.341109 +v 0.139289 0.157905 0.416095 +v 0.139289 0.257718 0.443541 +v 0.139289 1.742282 0.443541 +v 0.139289 1.842094 0.416095 +v 0.139289 1.915163 0.341109 +v 0.139289 1.941907 0.238676 +v 0.139289 0.257718 -0.443541 +v 0.139289 0.157905 -0.416095 +v 0.139289 0.084837 -0.341109 +v 0.139289 0.058093 -0.238676 +v 0.139289 1.941907 -0.238676 +v 0.139289 1.915163 -0.341109 +v 0.139289 1.842094 -0.416095 +v 0.139289 1.742282 -0.443541 +v -0.125000 2.000000 -0.500000 +v -0.125000 0.000000 -0.500000 +v -0.125000 0.000000 0.500000 +v -0.125000 2.000000 0.500000 +v -0.125000 0.076037 0.228141 +v -0.125000 0.271859 0.423963 +v -0.125000 0.102272 0.326052 +v -0.125000 0.173948 0.397728 +v -0.125000 1.728141 0.423963 +v -0.125000 1.923963 0.228141 +v -0.125000 1.826052 0.397728 +v -0.125000 1.897728 0.326052 +v -0.125000 0.271859 -0.423963 +v -0.125000 0.076037 -0.228141 +v -0.125000 0.173948 -0.397728 +v -0.125000 0.102272 -0.326052 +v -0.125000 1.923963 -0.228141 +v -0.125000 1.728141 -0.423963 +v -0.125000 1.897728 -0.326052 +v -0.125000 1.826052 -0.397728 +v -0.089033 1.728141 -0.423963 +v -0.089033 1.826052 -0.397728 +v -0.089033 1.897728 -0.326052 +v -0.089033 1.923963 -0.228141 +v -0.089033 0.076037 -0.228141 +v -0.089033 0.102272 -0.326052 +v -0.089033 0.173948 -0.397728 +v -0.089033 0.271859 -0.423963 +v -0.089033 0.271859 0.423963 +v -0.089033 0.173948 0.397728 +v -0.089033 0.102272 0.326052 +v -0.089033 0.076037 0.228141 +v -0.089033 1.923963 0.228141 +v -0.089033 1.897728 0.326052 +v -0.089033 1.826052 0.397728 +v -0.089033 1.728141 0.423963 +v -0.089033 0.036209 -0.233384 +v -0.089033 0.036209 0.233384 +v -0.089033 1.846138 0.432517 +v -0.089033 1.733384 0.463791 +v -0.089033 1.932517 0.346138 +v -0.089033 1.963791 0.233384 +v -0.089033 0.067483 0.346138 +v -0.089033 0.153862 0.432517 +v -0.089033 0.266616 0.463791 +v -0.089033 0.036209 -0.432517 +v -0.089033 0.036209 -0.477970 +v -0.089033 0.036209 -0.346138 +v -0.089033 1.963791 -0.346138 +v -0.089033 1.963791 -0.233384 +v -0.089033 1.963791 -0.432517 +v -0.089033 1.963791 -0.477970 +v -0.125000 0.053035 0.242267 +v -0.125000 0.253733 0.450214 +v -0.125000 0.079924 0.346241 +v -0.125000 0.153384 0.422355 +v -0.125000 1.746267 0.450214 +v -0.125000 1.946965 0.242267 +v -0.125000 1.846616 0.422355 +v -0.125000 1.920076 0.346241 +v -0.125000 0.253733 -0.450214 +v -0.125000 0.053035 -0.242267 +v -0.125000 0.153384 -0.422355 +v -0.125000 0.079924 -0.346241 +v -0.125000 1.946965 -0.242267 +v -0.125000 1.746267 -0.450214 +v -0.125000 1.920076 -0.346241 +v -0.125000 1.846616 -0.422355 +v -0.139289 0.068129 0.233128 +v -0.139289 0.094589 0.333179 +v -0.139289 0.166878 0.406422 +v -0.139289 0.265627 0.433231 +v -0.139289 1.734373 0.433231 +v -0.139289 1.833122 0.406422 +v -0.139289 1.905411 0.333179 +v -0.139289 1.931871 0.233128 +v -0.139289 0.265627 -0.433231 +v -0.139289 0.166878 -0.406422 +v -0.139289 0.094589 -0.333179 +v -0.139289 0.068129 -0.233128 +v -0.139289 1.931871 -0.233128 +v -0.139289 1.905411 -0.333179 +v -0.139289 1.833122 -0.406422 +v -0.139289 1.734373 -0.433231 +v -0.139289 0.058093 0.238676 +v -0.139289 0.084837 0.341109 +v -0.139289 0.157905 0.416095 +v -0.139289 0.257718 0.443541 +v -0.139289 1.742282 0.443541 +v -0.139289 1.842094 0.416095 +v -0.139289 1.915163 0.341109 +v -0.139289 1.941907 0.238676 +v -0.139289 0.257718 -0.443541 +v -0.139289 0.157905 -0.416095 +v -0.139289 0.084837 -0.341109 +v -0.139289 0.058093 -0.238676 +v -0.139289 1.941907 -0.238676 +v -0.139289 1.915163 -0.341109 +v -0.139289 1.842094 -0.416095 +v -0.139289 1.742282 -0.443541 +v 0.000000 0.036209 0.233384 +v 0.000000 1.846138 0.432517 +v 0.000000 1.932517 0.346138 +v 0.000000 1.963791 0.233384 +v 0.000000 0.067483 0.346138 +v 0.000000 0.153862 0.432517 +v 0.000000 0.266616 0.463791 +v 0.000000 0.036209 -0.432517 +v 0.000000 0.036209 -0.346138 +v 0.000000 1.963791 -0.346138 +v 0.000000 1.963791 -0.432517 +v 0.000000 1.963791 -0.477970 +v 0.000000 0.036209 -0.233384 +v 0.000000 1.733384 0.463791 +v 0.000000 0.036209 -0.477970 +v 0.000000 1.963791 -0.233384 +vt 0.904854 0.827347 +vt 0.912404 0.923128 +vt 0.904854 0.923128 +vt 0.182166 0.407583 +vt 0.214442 0.424360 +vt 0.160340 0.413227 +vt 0.730026 0.958073 +vt 0.722475 0.652378 +vt 0.730026 0.652378 +vt 0.912404 0.806069 +vt 0.912404 0.827347 +vt 0.904854 0.784791 +vt 0.912404 0.763512 +vt 0.912404 0.784791 +vt 0.904854 0.806069 +vt 0.932696 0.944406 +vt 0.940246 0.923128 +vt 0.940246 0.944406 +vt 0.932696 0.965684 +vt 0.940246 0.965684 +vt 0.932695 0.784790 +vt 0.940246 0.763512 +vt 0.940246 0.784790 +vt 0.932695 0.806068 +vt 0.940246 0.806068 +vt 0.932695 0.827347 +vt 0.940246 0.827347 +vt 0.904854 0.944406 +vt 0.912404 0.944406 +vt 0.904854 0.965684 +vt 0.912404 0.965684 +vt 0.966711 0.756750 +vt 0.974261 0.451055 +vt 0.974261 0.756750 +vt 0.932696 0.923128 +vt 0.932696 0.986962 +vt 0.940246 0.986962 +vt 0.422073 0.482879 +vt 0.433410 0.838040 +vt 0.422073 0.788572 +vt 0.295881 0.650980 +vt 0.282013 0.670433 +vt 0.288578 0.646764 +vt 0.295881 0.787867 +vt 0.282013 0.810216 +vt 0.282013 0.792083 +vt 0.369446 0.638910 +vt 0.340532 0.622066 +vt 0.389999 0.633403 +vt 0.354400 0.790843 +vt 0.340532 0.771391 +vt 0.348893 0.770290 +vt 0.310927 0.802913 +vt 0.282013 0.819757 +vt 0.354400 0.653956 +vt 0.340532 0.631607 +vt 0.365229 0.813192 +vt 0.347097 0.795059 +vt 0.904854 0.986962 +vt 0.912404 0.986962 +vt 0.631115 0.055869 +vt 0.649805 0.032200 +vt 0.649805 0.055869 +vt 0.631115 0.611283 +vt 0.649805 0.586720 +vt 0.649805 0.611283 +vt 0.631115 0.561077 +vt 0.649805 0.536515 +vt 0.649805 0.561077 +vt 0.290374 0.767314 +vt 0.290374 0.671533 +vt 0.282013 0.768414 +vt 0.306711 0.628631 +vt 0.310927 0.635934 +vt 0.340532 0.673409 +vt 0.348893 0.674509 +vt 0.369446 0.805889 +vt 0.388898 0.819757 +vt 0.340532 0.649740 +vt 0.949298 0.452156 +vt 0.957659 0.758947 +vt 0.949298 0.757847 +vt 0.330379 0.622066 +vt 0.331480 0.630427 +vt 0.198143 0.392163 +vt 0.203991 0.371098 +vt 0.214442 0.004526 +vt 0.865192 0.817262 +vt 0.858261 0.797178 +vt 0.861696 0.796063 +vt 0.852813 0.799151 +vt 0.859566 0.820210 +vt 0.856513 0.821732 +vt 0.592572 0.439565 +vt 0.585588 0.459661 +vt 0.589275 0.437907 +vt 0.580143 0.457706 +vt 0.586941 0.436609 +vt 0.583470 0.458607 +vt 0.602693 0.421328 +vt 0.599653 0.419257 +vt 0.583884 0.435080 +vt 0.597329 0.418076 +vt 0.615681 0.405976 +vt 0.618533 0.408287 +vt 0.610906 0.402422 +vt 0.594693 0.416061 +vt 0.858132 0.697391 +vt 0.861606 0.698513 +vt 0.865116 0.677295 +vt 0.861819 0.675637 +vt 0.852687 0.695436 +vt 0.859486 0.674339 +vt 0.856014 0.696337 +vt 0.875237 0.659059 +vt 0.872197 0.656987 +vt 0.856428 0.672810 +vt 0.869873 0.655806 +vt 0.888224 0.643707 +vt 0.891076 0.646018 +vt 0.883449 0.640153 +vt 0.867237 0.653791 +vt 0.981481 0.010131 +vt 0.985505 0.237997 +vt 0.981527 0.237046 +vt 0.203992 0.057788 +vt 0.198143 0.036724 +vt 0.182166 0.021303 +vt 0.160340 0.015659 +vt 0.004526 0.004526 +vt 0.058629 0.015659 +vt 0.036803 0.021303 +vt 0.020825 0.036724 +vt 0.014977 0.057789 +vt 0.004528 0.424360 +vt 0.014978 0.371099 +vt 0.020826 0.392163 +vt 0.036803 0.407583 +vt 0.058629 0.413227 +vt 0.585717 0.559449 +vt 0.583550 0.560522 +vt 0.589353 0.581187 +vt 0.587023 0.582481 +vt 0.597374 0.600993 +vt 0.599696 0.599816 +vt 0.613430 0.614296 +vt 0.615683 0.613092 +vt 0.989529 0.239202 +vt 0.985466 0.008672 +vt 0.989522 0.005561 +vt 0.885969 0.642498 +vt 0.856093 0.798250 +vt 0.861896 0.818916 +vt 0.869918 0.838723 +vt 0.872239 0.837545 +vt 0.885973 0.852026 +vt 0.888226 0.850822 +vt 0.012574 0.918273 +vt 0.008511 0.687744 +vt 0.012567 0.684632 +vt 0.613425 0.404768 +vt 0.004526 0.689203 +vt 0.008550 0.917069 +vt 0.004572 0.916117 +vt 0.867284 0.840731 +vt 0.875277 0.835481 +vt 0.883455 0.854365 +vt 0.580270 0.561422 +vt 0.589153 0.558335 +vt 0.589062 0.460784 +vt 0.993618 0.239807 +vt 0.993618 0.004526 +vt 0.583970 0.584003 +vt 0.592648 0.579533 +vt 0.594741 0.603002 +vt 0.602733 0.597751 +vt 0.016663 0.918878 +vt 0.016663 0.683597 +vt 0.610912 0.616635 +vt 0.631115 0.732934 +vt 0.649805 0.709265 +vt 0.649805 0.732934 +vt 0.631115 0.751066 +vt 0.649805 0.751066 +vt 0.631115 0.014067 +vt 0.649805 0.004526 +vt 0.649805 0.014067 +vt 0.631115 0.032200 +vt 0.631115 0.228619 +vt 0.649805 0.204057 +vt 0.649805 0.228619 +vt 0.631115 0.204057 +vt 0.649805 0.178414 +vt 0.631115 0.586720 +vt 0.631115 0.178414 +vt 0.649805 0.153851 +vt 0.004526 0.674545 +vt 0.214442 0.622066 +vt 0.214442 0.674545 +vt 0.677547 0.004526 +vt 0.730026 0.424358 +vt 0.677547 0.424358 +vt 0.631116 0.760608 +vt 0.649805 0.760608 +vt 0.461152 0.807049 +vt 0.479841 0.402422 +vt 0.479841 0.807049 +vt 0.631115 0.536515 +vt 0.631115 0.709265 +vt 0.631115 0.153851 +vt 0.677547 0.643326 +vt 0.730026 0.433410 +vt 0.730026 0.643326 +vt 0.190397 0.881984 +vt 0.094616 0.874434 +vt 0.190397 0.874434 +vt 0.255771 0.407583 +vt 0.277596 0.413227 +vt 0.223495 0.424360 +vt 0.713423 0.652379 +vt 0.705873 0.958073 +vt 0.705873 0.652379 +vt 0.073338 0.881984 +vt 0.094616 0.881984 +vt 0.030782 0.881984 +vt 0.052060 0.874434 +vt 0.052060 0.881984 +vt 0.073338 0.874434 +vt 0.602077 0.869276 +vt 0.623356 0.861726 +vt 0.623356 0.869276 +vt 0.644634 0.861726 +vt 0.644634 0.869276 +vt 0.442462 0.869276 +vt 0.463740 0.861726 +vt 0.463740 0.869276 +vt 0.485018 0.861726 +vt 0.485018 0.869276 +vt 0.506296 0.861726 +vt 0.506296 0.869276 +vt 0.211675 0.874434 +vt 0.211675 0.881984 +vt 0.232953 0.874434 +vt 0.232953 0.881984 +vt 0.964879 0.004526 +vt 0.972429 0.310220 +vt 0.964879 0.310220 +vt 0.602077 0.861726 +vt 0.665912 0.861726 +vt 0.665912 0.869276 +vt 0.916191 0.004526 +vt 0.904854 0.359687 +vt 0.904855 0.053992 +vt 0.237362 0.790843 +vt 0.223494 0.771391 +vt 0.231855 0.770290 +vt 0.237362 0.653956 +vt 0.223494 0.631607 +vt 0.252408 0.638910 +vt 0.739078 0.631101 +vt 0.767991 0.614257 +vt 0.788545 0.619764 +vt 0.739078 0.481777 +vt 0.752945 0.462324 +vt 0.747438 0.482877 +vt 0.223494 0.622066 +vt 0.272961 0.633403 +vt 0.739078 0.621560 +vt 0.752945 0.599211 +vt 0.763775 0.439975 +vt 0.767991 0.447278 +vt 0.254232 0.874434 +vt 0.254232 0.881984 +vt 0.668494 0.055869 +vt 0.668494 0.611283 +vt 0.668494 0.561077 +vt 0.231855 0.674510 +vt 0.223494 0.673409 +vt 0.248192 0.813192 +vt 0.252408 0.805889 +vt 0.739078 0.579758 +vt 0.747438 0.578658 +vt 0.787444 0.433410 +vt 0.788545 0.441771 +vt 0.955827 0.004526 +vt 0.947465 0.311311 +vt 0.947466 0.005627 +vt 0.271861 0.819757 +vt 0.272961 0.811396 +vt 0.239793 0.392163 +vt 0.233945 0.371098 +vt 0.223494 0.004526 +vt 0.862987 0.061715 +vt 0.869917 0.041630 +vt 0.866422 0.062829 +vt 0.864292 0.038682 +vt 0.857539 0.059741 +vt 0.861238 0.037160 +vt 0.869842 0.404863 +vt 0.862858 0.384768 +vt 0.866332 0.383645 +vt 0.857413 0.386723 +vt 0.864212 0.407819 +vt 0.861155 0.409348 +vt 0.879963 0.423098 +vt 0.866546 0.406520 +vt 0.874599 0.426351 +vt 0.871964 0.428366 +vt 0.892950 0.438449 +vt 0.895802 0.436138 +vt 0.888175 0.442003 +vt 0.862858 0.161501 +vt 0.866332 0.160379 +vt 0.869842 0.181597 +vt 0.857413 0.163457 +vt 0.864212 0.184553 +vt 0.861155 0.186082 +vt 0.879963 0.199833 +vt 0.866545 0.183254 +vt 0.874599 0.203086 +vt 0.871964 0.205101 +vt 0.892950 0.215184 +vt 0.895802 0.212873 +vt 0.888175 0.218738 +vt 0.987299 0.699025 +vt 0.983360 0.926896 +vt 0.983313 0.700458 +vt 0.233945 0.057789 +vt 0.239793 0.036724 +vt 0.255771 0.021303 +vt 0.277597 0.015659 +vt 0.433410 0.004526 +vt 0.379308 0.015659 +vt 0.401134 0.021304 +vt 0.417111 0.036724 +vt 0.422960 0.057789 +vt 0.433410 0.424360 +vt 0.422959 0.371097 +vt 0.417111 0.392162 +vt 0.401133 0.407583 +vt 0.379308 0.413227 +vt 0.860741 0.385822 +vt 0.862986 0.284980 +vt 0.860818 0.283907 +vt 0.866621 0.263241 +vt 0.864291 0.261947 +vt 0.874643 0.243433 +vt 0.890699 0.230129 +vt 0.876965 0.244611 +vt 0.987338 0.927885 +vt 0.991379 0.695962 +vt 0.991386 0.929157 +vt 0.876923 0.201904 +vt 0.890695 0.216393 +vt 0.860741 0.162555 +vt 0.860819 0.060642 +vt 0.866622 0.039976 +vt 0.874644 0.020169 +vt 0.890699 0.006865 +vt 0.876965 0.021346 +vt 0.987338 0.683984 +vt 0.991379 0.452060 +vt 0.991386 0.685255 +vt 0.876923 0.425169 +vt 0.890694 0.439658 +vt 0.987299 0.455123 +vt 0.983360 0.682994 +vt 0.983313 0.456556 +vt 0.872010 0.018160 +vt 0.880002 0.023411 +vt 0.888181 0.004526 +vt 0.892952 0.008069 +vt 0.895802 0.010374 +vt 0.857538 0.283007 +vt 0.866421 0.286094 +vt 0.995474 0.694957 +vt 0.995474 0.929807 +vt 0.861238 0.260425 +vt 0.869917 0.264894 +vt 0.872009 0.241424 +vt 0.880002 0.246675 +vt 0.995474 0.451055 +vt 0.995474 0.685905 +vt 0.888181 0.227790 +vt 0.892952 0.231334 +vt 0.895802 0.233638 +vt 0.668494 0.732934 +vt 0.668494 0.751066 +vt 0.668494 0.014067 +vt 0.668494 0.032200 +vt 0.668494 0.228619 +vt 0.668494 0.204057 +vt 0.668494 0.586720 +vt 0.668494 0.178414 +vt 0.668494 0.760608 +vt 0.442462 0.402422 +vt 0.442462 0.807049 +vt 0.668494 0.536515 +vt 0.668494 0.709265 +vt 0.668494 0.153851 +vt 0.739078 0.424358 +vt 0.791557 0.004526 +vt 0.791557 0.424358 +vt 0.722475 0.958073 +vt 0.904854 0.763512 +vt 0.932695 0.763512 +vt 0.966711 0.451055 +vt 0.433410 0.433412 +vt 0.331480 0.808420 +vt 0.389999 0.811396 +vt 0.957659 0.451055 +vt 0.891076 0.848518 +vt 0.618533 0.610788 +vt 0.631115 0.004526 +vt 0.004526 0.622066 +vt 0.730026 0.004526 +vt 0.461151 0.402422 +vt 0.677547 0.433410 +vt 0.713423 0.958073 +vt 0.030782 0.874434 +vt 0.442462 0.861726 +vt 0.972429 0.004526 +vt 0.916191 0.409154 +vt 0.230059 0.795060 +vt 0.223494 0.649740 +vt 0.745642 0.458108 +vt 0.739078 0.603427 +vt 0.955827 0.312412 +vt 0.668494 0.004526 +vt 0.739078 0.004526 +vn 0.0000 -0.9914 -0.1305 +vn 0.0000 -0.9914 0.1305 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.1305 -0.9914 +vn 0.0000 -0.1305 -0.9914 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.9914 -0.1305 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.1305 0.9914 +vn 0.0000 0.8660 0.5000 +vn 0.0000 0.9914 0.1305 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 -0.1305 0.9914 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.9909 -0.1349 +vn 0.0000 -0.8638 -0.5038 +vn 0.0000 -0.5038 -0.8638 +vn 0.0000 -0.1349 -0.9909 +vn 0.5785 -0.7172 0.3885 +vn 0.5147 -0.8479 0.1271 +vn 0.5072 -0.8566 0.0950 +vn 0.3608 0.9232 -0.1322 +vn 0.4265 0.7984 -0.4251 +vn 0.4330 0.7770 -0.4570 +vn 0.5785 0.7172 0.3885 +vn 0.5147 0.8479 0.1271 +vn 0.5847 0.6955 0.4177 +vn 0.3608 -0.9232 -0.1322 +vn 0.4265 -0.7984 -0.4251 +vn 0.3550 -0.9290 -0.1043 +vn 0.6108 0.3862 0.6912 +vn 0.6133 0.4076 0.6765 +vn 0.4330 -0.7770 -0.4570 +vn 0.4732 -0.4444 -0.7607 +vn 0.5767 0.1242 0.8074 +vn 0.5686 0.0871 0.8180 +vn 0.4489 -0.1331 -0.8836 +vn 0.4742 -0.4551 -0.7537 +vn 0.5147 -0.8479 -0.1271 +vn 0.5072 -0.8566 -0.0950 +vn 0.5785 -0.7172 -0.3885 +vn 0.5847 -0.6955 -0.4177 +vn 0.3608 0.9232 0.1322 +vn 0.4265 0.7984 0.4251 +vn 0.3550 0.9290 0.1043 +vn 0.6108 -0.3862 -0.6912 +vn 0.6133 -0.4076 -0.6765 +vn 0.4330 0.7770 0.4570 +vn 0.4732 0.4444 0.7607 +vn 0.5767 -0.1242 -0.8074 +vn 0.5686 -0.0871 -0.8180 +vn 0.4489 0.1331 0.8836 +vn 0.4742 0.4551 0.7537 +vn 0.5767 0.1242 -0.8074 +vn 0.5686 0.0871 -0.8180 +vn 0.5767 -0.1242 0.8074 +vn 0.5686 -0.0871 0.8180 +vn 0.4732 0.4444 -0.7607 +vn 0.4742 0.4551 -0.7537 +vn 0.6108 -0.3862 0.6912 +vn 0.5847 -0.6955 0.4177 +vn 0.4489 0.1331 -0.8836 +vn 0.4446 0.1047 -0.8896 +vn 0.6133 -0.4076 0.6765 +vn 0.3550 -0.9290 0.1043 +vn 0.3608 -0.9232 0.1322 +vn 0.5072 0.8566 -0.0950 +vn 0.5072 0.8566 0.0950 +vn 0.4489 -0.1331 0.8836 +vn 0.4446 0.1047 0.8896 +vn 0.4265 -0.7984 0.4251 +vn 0.4330 -0.7770 0.4570 +vn 0.5785 0.7172 -0.3885 +vn 0.5147 0.8479 -0.1271 +vn 0.3550 0.9290 -0.1043 +vn 0.4732 -0.4444 0.7607 +vn 0.4742 -0.4551 0.7537 +vn 0.6108 0.3862 -0.6912 +vn 0.5847 0.6955 -0.4177 +vn 0.4446 -0.1047 -0.8896 +vn 0.4446 -0.1047 0.8896 +vn 0.6133 0.4076 -0.6765 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.1349 -0.9909 +vn 0.0000 0.5038 -0.8638 +vn 0.0000 0.8638 -0.5038 +vn 0.0000 0.9909 -0.1349 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -0.5147 -0.8479 0.1271 +vn -0.5785 -0.7172 0.3885 +vn -0.5072 -0.8566 0.0950 +vn -0.4265 0.7984 -0.4251 +vn -0.3608 0.9232 -0.1322 +vn -0.4330 0.7770 -0.4570 +vn -0.5785 0.7172 0.3885 +vn -0.5147 0.8479 0.1271 +vn -0.5072 0.8566 0.0950 +vn -0.3608 -0.9232 -0.1322 +vn -0.4265 -0.7984 -0.4251 +vn -0.4330 -0.7770 -0.4570 +vn -0.6108 0.3862 0.6912 +vn -0.5847 0.6955 0.4177 +vn -0.4732 -0.4444 -0.7607 +vn -0.4742 -0.4551 -0.7537 +vn -0.5767 0.1242 0.8074 +vn -0.5686 0.0871 0.8180 +vn -0.4489 -0.1331 -0.8836 +vn -0.5147 -0.8479 -0.1271 +vn -0.5072 -0.8566 -0.0950 +vn -0.5785 -0.7172 -0.3885 +vn -0.3608 0.9232 0.1322 +vn -0.4265 0.7984 0.4251 +vn -0.4330 0.7770 0.4570 +vn -0.6108 -0.3862 -0.6912 +vn -0.5847 -0.6955 -0.4177 +vn -0.4732 0.4444 0.7607 +vn -0.4742 0.4551 0.7537 +vn -0.5767 -0.1242 -0.8074 +vn -0.5686 -0.0871 -0.8180 +vn -0.4489 0.1331 0.8836 +vn -0.5767 0.1242 -0.8074 +vn -0.5686 0.0871 -0.8180 +vn -0.5767 -0.1242 0.8074 +vn -0.5686 -0.0871 0.8180 +vn -0.4732 0.4444 -0.7607 +vn -0.4742 0.4551 -0.7537 +vn -0.5847 -0.6955 0.4177 +vn -0.6108 -0.3862 0.6912 +vn -0.4489 0.1331 -0.8836 +vn -0.3550 -0.9290 0.1043 +vn -0.3608 -0.9232 0.1322 +vn -0.5072 0.8566 -0.0950 +vn -0.4446 0.1047 0.8896 +vn -0.4489 -0.1331 0.8836 +vn -0.4265 -0.7984 0.4251 +vn -0.4330 -0.7770 0.4570 +vn -0.5147 0.8479 -0.1271 +vn -0.5785 0.7172 -0.3885 +vn -0.3550 0.9290 -0.1043 +vn -0.4732 -0.4444 0.7607 +vn -0.4742 -0.4551 0.7537 +vn -0.5847 0.6955 -0.4177 +vn -0.6108 0.3862 -0.6912 +vn -0.4446 -0.1047 -0.8896 +vn -0.3550 -0.9290 -0.1043 +vn -0.6133 0.4076 0.6765 +vn -0.3550 0.9290 0.1043 +vn -0.6133 -0.4076 -0.6765 +vn -0.6133 -0.4076 0.6765 +vn -0.4446 0.1047 -0.8896 +vn -0.4446 -0.1047 0.8896 +vn -0.6133 0.4076 -0.6765 +s 1 +f 10/1/1 24/2/2 17/3/2 +f 67/4/3 1/5/3 65/6/3 +f 6/7/4 36/8/5 9/9/5 +f 10/1/1 34/10/6 33/11/1 +f 11/12/7 36/13/5 35/14/7 +f 12/15/6 35/14/7 34/10/6 +f 7/16/8 32/17/9 31/18/8 +f 8/19/10 31/18/8 30/20/10 +f 15/21/11 28/22/12 27/23/11 +f 16/24/13 27/23/11 26/25/13 +f 14/26/14 26/25/13 25/27/14 +f 19/28/15 24/2/2 23/29/15 +f 20/30/16 23/29/15 22/31/16 +f 13/32/12 21/33/17 28/34/12 +f 14/26/14 32/17/9 5/35/9 +f 6/36/4 30/20/10 29/37/4 +f 21/38/18 47/39/18 28/40/18 +f 31/41/18 38/42/18 43/43/18 +f 26/44/18 46/45/18 48/46/18 +f 22/47/18 52/48/18 21/49/18 +f 34/50/18 42/51/18 33/52/18 +f 27/53/18 47/54/18 46/45/18 +f 23/55/18 51/56/18 22/47/18 +f 34/50/18 39/57/18 41/58/18 +f 18/59/17 22/31/16 21/60/17 +f 37/61/19 209/62/19 213/63/19 +f 42/64/20 203/65/21 204/66/20 +f 39/67/22 214/68/23 202/69/22 +f 25/70/18 38/42/18 32/71/18 +f 26/44/18 37/72/18 25/70/18 +f 31/41/18 44/73/18 30/74/18 +f 33/52/18 50/75/18 24/76/18 +f 35/77/18 40/78/18 39/57/18 +f 23/55/18 50/75/18 49/79/18 +f 29/80/18 40/81/18 36/82/18 +f 30/74/18 45/83/18 29/84/18 +f 1/5/3 67/4/3 68/85/3 +f 68/85/3 66/86/3 1/5/3 +f 66/86/3 2/87/3 1/5/3 +f 19/88/24 81/89/25 17/90/26 +f 65/91/27 98/92/28 67/93/29 +f 16/94/30 80/95/31 79/96/32 +f 62/97/33 95/98/34 96/99/35 +f 15/100/36 79/96/32 78/101/37 +f 64/102/38 94/103/39 95/98/34 +f 15/100/36 77/104/40 13/105/41 +f 61/106/42 94/103/39 63/107/43 +f 17/90/26 76/108/44 10/109/45 +f 12/110/46 76/108/44 75/111/47 +f 58/112/48 91/113/49 92/114/50 +f 11/115/51 75/111/47 74/116/52 +f 60/117/53 90/118/54 91/113/49 +f 11/115/51 73/119/55 9/120/56 +f 57/121/57 90/118/54 59/122/58 +f 9/123/56 72/124/59 6/125/60 +f 61/126/3 63/127/3 2/87/3 +f 64/128/3 2/87/3 63/127/3 +f 62/129/3 2/87/3 64/128/3 +f 62/129/3 3/130/3 2/87/3 +f 53/131/3 55/132/3 3/130/3 +f 56/133/3 3/130/3 55/132/3 +f 54/134/3 3/130/3 56/133/3 +f 54/134/3 4/135/3 3/130/3 +f 57/136/3 59/137/3 4/135/3 +f 60/138/3 4/135/3 59/137/3 +f 58/139/3 4/135/3 60/138/3 +f 58/139/3 1/5/3 4/135/3 +f 96/99/3 79/96/3 80/95/3 +f 96/99/3 69/140/3 85/141/3 +f 85/141/3 70/142/3 86/143/3 +f 87/144/3 70/142/3 71/145/3 +f 88/146/3 71/145/3 72/147/3 +f 88/148/3 73/149/3 89/150/3 +f 89/151/3 74/116/3 90/118/3 +f 90/118/3 75/111/3 91/113/3 +f 92/114/3 75/111/3 76/108/3 +f 92/114/3 81/89/3 97/152/3 +f 97/152/3 82/153/3 98/92/3 +f 99/154/3 82/153/3 83/155/3 +f 100/156/3 83/155/3 84/157/3 +f 100/158/3 77/159/3 93/160/3 +f 93/161/3 78/101/3 94/103/3 +f 94/103/3 79/96/3 95/98/3 +f 13/162/41 84/163/61 18/164/62 +f 67/93/29 99/154/63 68/165/64 +f 20/166/65 82/153/66 19/88/24 +f 66/167/67 99/154/63 100/156/68 +f 20/166/65 84/157/61 83/155/69 +f 62/97/33 85/141/70 53/168/71 +f 5/169/72 80/95/31 14/170/73 +f 54/171/74 89/150/75 57/172/57 +f 53/168/71 86/143/76 55/173/77 +f 7/174/78 69/140/79 5/169/72 +f 58/112/48 97/152/80 65/91/27 +f 55/173/77 87/144/81 56/175/82 +f 8/176/83 70/142/84 7/174/78 +f 66/177/67 93/160/85 61/178/42 +f 54/179/74 87/144/81 88/146/86 +f 8/176/83 72/147/59 71/145/87 +f 49/180/88 216/181/88 210/182/88 +f 51/183/88 210/182/88 211/184/88 +f 46/185/19 215/186/19 208/187/19 +f 48/188/19 208/187/19 209/62/19 +f 45/189/89 206/190/90 207/191/89 +f 44/192/90 205/193/91 206/190/90 +f 41/194/21 202/69/22 203/65/21 +f 43/195/91 201/196/92 205/193/91 +f 102/197/88 3/198/88 103/199/88 +f 101/200/93 2/201/93 102/202/93 +f 52/203/88 211/184/88 212/204/88 +f 212/205/94 47/206/94 52/207/94 +f 207/191/89 40/208/23 45/189/89 +f 204/66/20 50/209/88 42/64/20 +f 213/63/19 38/210/92 37/61/19 +f 101/211/19 4/212/19 1/213/19 +f 124/214/2 110/215/1 117/216/2 +f 167/217/18 165/218/18 101/219/18 +f 136/220/5 106/221/4 109/222/5 +f 134/223/6 110/215/1 133/224/1 +f 136/225/5 111/226/7 135/227/7 +f 135/227/7 112/228/6 134/223/6 +f 132/229/9 107/230/8 131/231/8 +f 131/231/8 108/232/10 130/233/10 +f 128/234/12 115/235/11 127/236/11 +f 127/236/11 116/237/13 126/238/13 +f 126/238/13 114/239/14 125/240/14 +f 124/214/2 119/241/15 123/242/15 +f 123/242/15 120/243/16 122/244/16 +f 121/245/17 113/246/12 128/247/12 +f 132/229/9 114/239/14 105/248/9 +f 130/233/10 106/249/4 129/250/4 +f 147/251/3 121/252/3 128/253/3 +f 131/254/3 138/255/3 132/256/3 +f 126/257/3 146/258/3 127/259/3 +f 152/260/3 122/261/3 121/262/3 +f 142/263/3 134/264/3 133/265/3 +f 127/259/3 147/266/3 128/267/3 +f 151/268/3 123/269/3 122/261/3 +f 134/264/3 139/270/3 135/271/3 +f 122/244/16 118/272/17 121/273/17 +f 209/62/19 137/274/19 213/63/19 +f 203/65/21 142/275/20 204/66/20 +f 214/68/23 139/276/22 202/69/22 +f 138/255/3 125/277/3 132/256/3 +f 137/278/3 126/257/3 125/277/3 +f 144/279/3 131/254/3 130/280/3 +f 150/281/3 133/265/3 124/282/3 +f 135/271/3 140/283/3 136/284/3 +f 123/269/3 150/281/3 124/282/3 +f 140/285/3 129/286/3 136/287/3 +f 145/288/3 130/280/3 129/289/3 +f 101/219/18 168/290/18 167/217/18 +f 168/290/18 101/219/18 166/291/18 +f 102/292/18 166/291/18 101/219/18 +f 181/293/95 119/294/96 117/295/97 +f 198/296/98 165/297/99 167/298/100 +f 116/299/101 180/300/102 114/301/103 +f 162/302/104 195/303/105 164/304/106 +f 115/305/107 179/306/108 116/299/101 +f 164/304/106 194/307/109 163/308/110 +f 177/309/111 115/305/107 113/310/112 +f 194/307/109 161/311/113 163/308/110 +f 176/312/114 117/295/97 110/313/115 +f 112/314/116 176/312/114 110/313/115 +f 158/315/117 191/316/118 160/317/119 +f 111/318/120 175/319/121 112/314/116 +f 160/317/119 190/320/122 159/321/123 +f 173/322/124 111/318/120 109/323/125 +f 190/320/122 157/324/126 159/321/123 +f 172/325/127 109/326/125 106/327/128 +f 161/328/18 102/292/18 163/329/18 +f 164/330/18 163/329/18 102/292/18 +f 162/331/18 164/330/18 102/292/18 +f 103/332/18 162/331/18 102/292/18 +f 153/333/18 103/332/18 155/334/18 +f 156/335/18 155/334/18 103/332/18 +f 154/336/18 156/335/18 103/332/18 +f 104/337/18 154/336/18 103/332/18 +f 157/338/18 104/337/18 159/339/18 +f 160/340/18 159/339/18 104/337/18 +f 158/341/18 160/340/18 104/337/18 +f 101/219/18 158/341/18 104/337/18 +f 179/306/18 196/342/18 180/300/18 +f 169/343/18 196/342/18 185/344/18 +f 170/345/18 185/344/18 186/346/18 +f 187/347/18 170/345/18 186/346/18 +f 188/348/18 171/349/18 187/347/18 +f 173/350/18 188/351/18 189/352/18 +f 174/353/18 189/354/18 190/320/18 +f 175/319/18 190/320/18 191/316/18 +f 192/355/18 175/319/18 191/316/18 +f 181/293/18 192/355/18 197/356/18 +f 182/357/18 197/356/18 198/296/18 +f 199/358/18 182/357/18 198/296/18 +f 200/359/18 183/360/18 199/358/18 +f 177/361/18 200/362/18 193/363/18 +f 178/364/18 193/365/18 194/307/18 +f 179/306/18 194/307/18 195/303/18 +f 184/366/129 113/367/112 118/368/130 +f 199/358/131 167/298/100 168/369/132 +f 182/357/133 120/370/134 119/294/96 +f 166/371/135 199/358/131 168/369/132 +f 120/370/134 184/372/129 118/373/130 +f 185/344/136 162/302/104 153/374/137 +f 180/300/102 105/375/138 114/301/103 +f 189/352/139 154/376/140 157/377/126 +f 186/346/141 153/374/137 155/378/142 +f 169/343/143 107/379/144 105/375/138 +f 197/356/145 158/315/117 165/297/99 +f 187/347/146 155/378/142 156/380/147 +f 170/345/148 108/381/149 107/379/144 +f 193/363/150 166/382/135 161/383/113 +f 154/384/140 187/347/146 156/380/147 +f 108/381/149 172/385/127 106/386/128 +f 216/181/88 149/387/88 210/182/88 +f 210/182/88 151/388/88 211/184/88 +f 215/186/19 146/389/19 208/187/19 +f 208/187/19 148/390/19 209/62/19 +f 206/190/90 145/391/89 207/191/89 +f 205/193/91 144/392/90 206/190/90 +f 202/69/22 141/393/21 203/65/21 +f 201/196/92 143/394/91 205/193/91 +f 211/184/88 152/395/88 212/204/88 +f 147/396/94 212/205/94 152/397/94 +f 140/398/23 207/191/89 145/391/89 +f 150/399/88 204/66/20 142/275/20 +f 138/400/92 213/63/19 137/274/19 +f 104/401/94 3/402/94 4/403/94 +f 10/1/1 33/11/1 24/2/2 +f 6/7/4 29/404/4 36/8/5 +f 10/1/1 12/15/6 34/10/6 +f 11/12/7 9/405/5 36/13/5 +f 12/15/6 11/12/7 35/14/7 +f 7/16/8 5/35/9 32/17/9 +f 8/19/10 7/16/8 31/18/8 +f 15/21/11 13/406/12 28/22/12 +f 16/24/13 15/21/11 27/23/11 +f 14/26/14 16/24/13 26/25/13 +f 19/28/15 17/3/2 24/2/2 +f 20/30/16 19/28/15 23/29/15 +f 13/32/12 18/407/17 21/33/17 +f 14/26/14 25/27/14 32/17/9 +f 6/36/4 8/19/10 30/20/10 +f 21/38/18 52/408/18 47/39/18 +f 31/41/18 32/71/18 38/42/18 +f 26/44/18 27/53/18 46/45/18 +f 22/47/18 51/56/18 52/48/18 +f 34/50/18 41/58/18 42/51/18 +f 27/53/18 28/409/18 47/54/18 +f 23/55/18 49/79/18 51/56/18 +f 34/50/18 35/77/18 39/57/18 +f 18/59/17 20/30/16 22/31/16 +f 37/61/19 48/188/19 209/62/19 +f 42/64/20 41/194/21 203/65/21 +f 39/67/22 40/208/23 214/68/23 +f 25/70/18 37/72/18 38/42/18 +f 26/44/18 48/46/18 37/72/18 +f 31/41/18 43/43/18 44/73/18 +f 33/52/18 42/51/18 50/75/18 +f 35/77/18 36/410/18 40/78/18 +f 23/55/18 24/76/18 50/75/18 +f 29/80/18 45/411/18 40/81/18 +f 30/74/18 44/73/18 45/83/18 +f 66/86/3 61/126/3 2/87/3 +f 19/88/24 82/153/66 81/89/25 +f 65/91/27 97/152/80 98/92/28 +f 16/94/30 14/170/73 80/95/31 +f 62/97/33 64/102/38 95/98/34 +f 15/100/36 16/94/30 79/96/32 +f 64/102/38 63/107/43 94/103/39 +f 15/100/36 78/101/37 77/104/40 +f 61/106/42 93/161/85 94/103/39 +f 17/90/26 81/89/25 76/108/44 +f 12/110/46 10/109/45 76/108/44 +f 58/112/48 60/117/53 91/113/49 +f 11/115/51 12/110/46 75/111/47 +f 60/117/53 59/122/58 90/118/54 +f 11/115/51 74/116/52 73/119/55 +f 57/121/57 89/151/75 90/118/54 +f 9/123/56 73/149/55 72/124/59 +f 62/129/3 53/131/3 3/130/3 +f 54/134/3 57/136/3 4/135/3 +f 58/139/3 65/6/3 1/5/3 +f 96/99/3 95/98/3 79/96/3 +f 96/99/3 80/95/3 69/140/3 +f 85/141/3 69/140/3 70/142/3 +f 87/144/3 86/143/3 70/142/3 +f 88/146/3 87/144/3 71/145/3 +f 88/148/3 72/124/3 73/149/3 +f 89/151/3 73/119/3 74/116/3 +f 90/118/3 74/116/3 75/111/3 +f 92/114/3 91/113/3 75/111/3 +f 92/114/3 76/108/3 81/89/3 +f 97/152/3 81/89/3 82/153/3 +f 99/154/3 98/92/3 82/153/3 +f 100/156/3 99/154/3 83/155/3 +f 100/158/3 84/163/3 77/159/3 +f 93/161/3 77/104/3 78/101/3 +f 94/103/3 78/101/3 79/96/3 +f 13/162/41 77/159/40 84/163/61 +f 67/93/29 98/92/28 99/154/63 +f 20/166/65 83/155/69 82/153/66 +f 66/167/67 68/165/64 99/154/63 +f 20/166/65 18/412/62 84/157/61 +f 62/97/33 96/99/35 85/141/70 +f 5/169/72 69/140/79 80/95/31 +f 54/171/74 88/148/86 89/150/75 +f 53/168/71 85/141/70 86/143/76 +f 7/174/78 70/142/84 69/140/79 +f 58/112/48 92/114/50 97/152/80 +f 55/173/77 86/143/76 87/144/81 +f 8/176/83 71/145/87 70/142/84 +f 66/177/67 100/158/68 93/160/85 +f 54/179/74 56/175/82 87/144/81 +f 8/176/83 6/413/60 72/147/59 +f 49/180/88 50/209/88 216/181/88 +f 51/183/88 49/180/88 210/182/88 +f 46/185/19 47/414/19 215/186/19 +f 48/188/19 46/185/19 208/187/19 +f 45/189/89 44/192/90 206/190/90 +f 44/192/90 43/195/91 205/193/91 +f 41/194/21 39/67/22 202/69/22 +f 43/195/91 38/210/92 201/196/92 +f 102/197/88 2/415/88 3/198/88 +f 101/200/93 1/416/93 2/201/93 +f 52/203/88 51/183/88 211/184/88 +f 212/205/94 215/417/94 47/206/94 +f 207/191/89 214/68/23 40/208/23 +f 204/66/20 216/181/88 50/209/88 +f 213/63/19 201/196/92 38/210/92 +f 101/211/19 104/418/19 4/212/19 +f 124/214/2 133/224/1 110/215/1 +f 136/220/5 129/419/4 106/221/4 +f 134/223/6 112/228/6 110/215/1 +f 136/225/5 109/420/5 111/226/7 +f 135/227/7 111/226/7 112/228/6 +f 132/229/9 105/248/9 107/230/8 +f 131/231/8 107/230/8 108/232/10 +f 128/234/12 113/421/12 115/235/11 +f 127/236/11 115/235/11 116/237/13 +f 126/238/13 116/237/13 114/239/14 +f 124/214/2 117/216/2 119/241/15 +f 123/242/15 119/241/15 120/243/16 +f 121/245/17 118/422/17 113/246/12 +f 132/229/9 125/240/14 114/239/14 +f 130/233/10 108/232/10 106/249/4 +f 147/251/3 152/423/3 121/252/3 +f 131/254/3 143/424/3 138/255/3 +f 126/257/3 148/425/3 146/258/3 +f 152/260/3 151/268/3 122/261/3 +f 142/263/3 141/426/3 134/264/3 +f 127/259/3 146/258/3 147/266/3 +f 151/268/3 149/427/3 123/269/3 +f 134/264/3 141/426/3 139/270/3 +f 122/244/16 120/243/16 118/272/17 +f 209/62/19 148/390/19 137/274/19 +f 203/65/21 141/393/21 142/275/20 +f 214/68/23 140/398/23 139/276/22 +f 138/255/3 137/278/3 125/277/3 +f 137/278/3 148/425/3 126/257/3 +f 144/279/3 143/424/3 131/254/3 +f 150/281/3 142/263/3 133/265/3 +f 135/271/3 139/270/3 140/283/3 +f 123/269/3 149/427/3 150/281/3 +f 140/285/3 145/428/3 129/286/3 +f 145/288/3 144/279/3 130/280/3 +f 102/292/18 161/328/18 166/291/18 +f 181/293/95 182/357/133 119/294/96 +f 198/296/98 197/356/145 165/297/99 +f 116/299/101 179/306/108 180/300/102 +f 162/302/104 196/342/151 195/303/105 +f 115/305/107 178/364/152 179/306/108 +f 164/304/106 195/303/105 194/307/109 +f 177/309/111 178/364/152 115/305/107 +f 194/307/109 193/365/150 161/311/113 +f 176/312/114 181/293/95 117/295/97 +f 112/314/116 175/319/121 176/312/114 +f 158/315/117 192/355/153 191/316/118 +f 111/318/120 174/353/154 175/319/121 +f 160/317/119 191/316/118 190/320/122 +f 173/322/124 174/353/154 111/318/120 +f 190/320/122 189/354/139 157/324/126 +f 172/325/127 173/350/124 109/326/125 +f 103/332/18 153/333/18 162/331/18 +f 104/337/18 157/338/18 154/336/18 +f 101/219/18 165/218/18 158/341/18 +f 179/306/18 195/303/18 196/342/18 +f 169/343/18 180/300/18 196/342/18 +f 170/345/18 169/343/18 185/344/18 +f 187/347/18 171/349/18 170/345/18 +f 188/348/18 172/385/18 171/349/18 +f 173/350/18 172/325/18 188/351/18 +f 174/353/18 173/322/18 189/354/18 +f 175/319/18 174/353/18 190/320/18 +f 192/355/18 176/312/18 175/319/18 +f 181/293/18 176/312/18 192/355/18 +f 182/357/18 181/293/18 197/356/18 +f 199/358/18 183/360/18 182/357/18 +f 200/359/18 184/372/18 183/360/18 +f 177/361/18 184/366/18 200/362/18 +f 178/364/18 177/309/18 193/365/18 +f 179/306/18 178/364/18 194/307/18 +f 184/366/129 177/361/111 113/367/112 +f 199/358/131 198/296/98 167/298/100 +f 182/357/133 183/360/155 120/370/134 +f 166/371/135 200/359/156 199/358/131 +f 120/370/134 183/360/155 184/372/129 +f 185/344/136 196/342/151 162/302/104 +f 180/300/102 169/343/143 105/375/138 +f 189/352/139 188/351/157 154/376/140 +f 186/346/141 185/344/136 153/374/137 +f 169/343/143 170/345/148 107/379/144 +f 197/356/145 192/355/153 158/315/117 +f 187/347/146 186/346/141 155/378/142 +f 170/345/148 171/349/158 108/381/149 +f 193/363/150 200/362/156 166/382/135 +f 154/384/140 188/348/157 187/347/146 +f 108/381/149 171/349/158 172/385/127 +f 216/181/88 150/399/88 149/387/88 +f 210/182/88 149/387/88 151/388/88 +f 215/186/19 147/429/19 146/389/19 +f 208/187/19 146/389/19 148/390/19 +f 206/190/90 144/392/90 145/391/89 +f 205/193/91 143/394/91 144/392/90 +f 202/69/22 139/276/22 141/393/21 +f 201/196/92 138/400/92 143/394/91 +f 211/184/88 151/388/88 152/395/88 +f 147/396/94 215/417/94 212/205/94 +f 140/398/23 214/68/23 207/191/89 +f 150/399/88 216/181/88 204/66/20 +f 138/400/92 201/196/92 213/63/19 +f 104/401/94 103/430/94 3/402/94 +o door +v 0.089033 0.062912 -0.229749 +v 0.089033 0.062912 0.229749 +v 0.089033 1.832227 0.408665 +v 0.089033 1.908665 0.332227 +v 0.089033 1.937088 0.229749 +v 0.089033 0.091335 0.332227 +v 0.089033 0.167773 0.408665 +v 0.089033 0.167773 -0.408665 +v 0.089033 0.091335 -0.332227 +v 0.089033 1.908665 -0.332227 +v 0.089033 1.937088 -0.229749 +v 0.089033 1.832227 -0.408665 +v 0.089033 0.036209 0.233384 +v 0.089033 0.036209 -0.233384 +v 0.089033 1.846138 0.432517 +v 0.089033 1.733384 0.463791 +v 0.089033 1.932517 0.346138 +v 0.089033 1.963791 0.233384 +v 0.089033 0.067483 0.346138 +v 0.089033 0.153862 0.432517 +v 0.089033 0.266616 0.463791 +v 0.089033 0.153862 -0.432517 +v 0.089033 0.266616 -0.463791 +v 0.089033 0.067483 -0.346138 +v 0.089033 1.932517 -0.346138 +v 0.089033 1.963791 -0.233384 +v 0.089033 1.846138 -0.432517 +v 0.089033 1.733384 -0.463791 +v 0.089033 1.440030 -0.463791 +v 0.089033 0.559970 0.463791 +v 0.089033 0.559970 -0.463791 +v 0.089033 0.853323 -0.463791 +v 0.089033 1.146677 -0.463791 +v 0.089033 1.440030 0.463791 +v 0.089033 1.146677 0.463791 +v 0.089033 0.853323 0.463791 +v 0.067522 0.088680 0.216673 +v 0.067522 0.088680 -0.216673 +v 0.067522 1.809342 0.385405 +v 0.067522 1.883679 0.313317 +v 0.067522 1.911320 0.216673 +v 0.067522 0.116321 0.313317 +v 0.067522 0.190658 0.385405 +v 0.067522 0.190658 -0.385405 +v 0.067522 0.116321 -0.313317 +v 0.067522 1.883679 -0.313317 +v 0.067522 1.911320 -0.216673 +v 0.067522 1.809342 -0.385405 +v 0.089033 1.719954 0.437088 +v 0.089033 1.737910 0.432067 +v 0.089033 1.732162 0.454811 +v 0.089033 0.262090 0.432067 +v 0.089033 0.280046 0.437088 +v 0.089033 0.267838 0.454811 +v 0.089033 0.280046 -0.437088 +v 0.089033 0.262090 -0.432067 +v 0.089033 0.267838 -0.454811 +v 0.089033 1.737910 -0.432067 +v 0.089033 1.719954 -0.437088 +v 0.089033 1.732162 -0.454811 +v 0.089033 0.568817 -0.437088 +v 0.089033 0.551123 -0.437088 +v 0.089033 0.559970 -0.454975 +v 0.089033 0.861853 -0.437088 +v 0.089033 0.844794 -0.437088 +v 0.089033 0.853323 -0.454975 +v 0.089033 1.155206 -0.437088 +v 0.089033 1.138147 -0.437088 +v 0.089033 1.146677 -0.454975 +v 0.089033 1.448877 -0.437088 +v 0.089033 1.431183 -0.437088 +v 0.089033 1.440030 -0.454975 +v 0.089033 1.431183 0.437088 +v 0.089033 1.448877 0.437088 +v 0.089033 1.440030 0.454975 +v 0.089033 1.138147 0.437088 +v 0.089033 1.155206 0.437088 +v 0.089033 1.146677 0.454975 +v 0.089033 0.844794 0.437088 +v 0.089033 0.861853 0.437088 +v 0.089033 0.853323 0.454975 +v 0.089033 0.551123 0.437088 +v 0.089033 0.568817 0.437088 +v 0.089033 0.559970 0.454975 +v 0.067522 1.689992 -0.412210 +v 0.067522 1.727860 -0.407321 +v 0.067522 1.727860 0.407321 +v 0.067522 1.689992 0.412210 +v 0.067522 0.310008 -0.412210 +v 0.067522 0.272139 -0.407321 +v 0.067522 0.310008 0.412210 +v 0.067522 0.272139 0.407321 +v 0.067522 0.553441 -0.412210 +v 0.067522 0.590698 -0.412210 +v 0.067522 0.590698 0.412210 +v 0.067522 0.553441 0.412210 +v 0.067522 0.839382 -0.412210 +v 0.067522 0.875331 -0.412210 +v 0.067522 0.839382 0.412210 +v 0.067522 0.875331 0.412210 +v 0.067522 1.124669 -0.412210 +v 0.067522 1.160618 -0.412210 +v 0.067522 1.124669 0.412210 +v 0.067522 1.160618 0.412210 +v 0.067522 1.409302 -0.412210 +v 0.067522 1.446559 -0.412210 +v 0.067522 1.446559 0.412210 +v 0.067522 1.409302 0.412210 +v 0.079726 1.134115 0.439682 +v 0.079726 1.151172 0.439682 +v 0.079726 0.848828 0.439682 +v 0.079726 0.865885 0.439682 +v 0.079726 0.300058 -0.434752 +v 0.079726 0.282090 -0.429863 +v 0.079726 1.699942 -0.434752 +v 0.079726 1.717910 -0.429863 +v 0.079726 1.717910 0.434792 +v 0.079726 1.699942 0.439682 +v 0.079726 0.300058 0.439682 +v 0.079726 0.282090 0.434792 +v 0.079726 0.563230 -0.434752 +v 0.079726 0.580909 -0.434752 +v 0.079726 0.580909 0.439682 +v 0.079726 0.563230 0.439682 +v 0.079726 0.848828 -0.434752 +v 0.079726 0.865885 -0.434752 +v 0.079726 1.134115 -0.434752 +v 0.079726 1.151172 -0.434752 +v 0.079726 1.419091 -0.434752 +v 0.079726 1.436770 -0.434752 +v 0.079726 1.436770 0.439682 +v 0.079726 1.419091 0.439682 +v -0.089033 0.062912 -0.229749 +v -0.089033 0.062912 0.229749 +v -0.089033 1.832227 0.408665 +v -0.089033 1.908665 0.332227 +v -0.089033 1.937088 0.229749 +v -0.089033 0.091335 0.332227 +v -0.089033 0.167773 0.408665 +v -0.089033 0.167773 -0.408665 +v -0.089033 0.091335 -0.332227 +v -0.089033 1.908665 -0.332227 +v -0.089033 1.937088 -0.229749 +v -0.089033 1.832227 -0.408665 +v -0.089033 0.036209 0.233384 +v -0.089033 0.036209 -0.233384 +v -0.089033 1.846138 0.432517 +v -0.089033 1.733384 0.463791 +v -0.089033 1.932517 0.346138 +v -0.089033 1.963791 0.233384 +v -0.089033 0.067483 0.346138 +v -0.089033 0.153862 0.432517 +v -0.089033 0.266616 0.463791 +v -0.089033 0.153862 -0.432517 +v -0.089033 0.266616 -0.463791 +v -0.089033 0.067483 -0.346138 +v -0.089033 1.932517 -0.346138 +v -0.089033 1.963791 -0.233384 +v -0.089033 1.846138 -0.432517 +v -0.089033 1.733384 -0.463791 +v -0.089033 1.440030 -0.463791 +v -0.089033 0.559970 0.463791 +v -0.089033 0.559970 -0.463791 +v -0.089033 0.853323 -0.463791 +v -0.089033 1.146677 -0.463791 +v -0.089033 1.440030 0.463791 +v -0.089033 1.146677 0.463791 +v -0.089033 0.853323 0.463791 +v -0.067522 0.088680 0.216673 +v -0.067522 0.088680 -0.216673 +v -0.067522 1.809342 0.385405 +v -0.067522 1.883679 0.313317 +v -0.067522 1.911320 0.216673 +v -0.067522 0.116321 0.313317 +v -0.067522 0.190658 0.385405 +v -0.067522 0.190658 -0.385405 +v -0.067522 0.116321 -0.313317 +v -0.067522 1.883679 -0.313317 +v -0.067522 1.911320 -0.216673 +v -0.067522 1.809342 -0.385405 +v -0.089033 1.719954 0.437088 +v -0.089033 1.737910 0.432067 +v -0.089033 1.732162 0.454811 +v -0.089033 0.262090 0.432067 +v -0.089033 0.280046 0.437088 +v -0.089033 0.267838 0.454811 +v -0.089033 0.280046 -0.437088 +v -0.089033 0.262090 -0.432067 +v -0.089033 0.267838 -0.454811 +v -0.089033 1.737910 -0.432067 +v -0.089033 1.719954 -0.437088 +v -0.089033 1.732162 -0.454811 +v -0.089033 0.568817 -0.437088 +v -0.089033 0.551123 -0.437088 +v -0.089033 0.559970 -0.454975 +v -0.089033 0.861853 -0.437088 +v -0.089033 0.844794 -0.437088 +v -0.089033 0.853323 -0.454975 +v -0.089033 1.155206 -0.437088 +v -0.089033 1.138147 -0.437088 +v -0.089033 1.146677 -0.454975 +v -0.089033 1.448877 -0.437088 +v -0.089033 1.431183 -0.437088 +v -0.089033 1.440030 -0.454975 +v -0.089033 1.431183 0.437088 +v -0.089033 1.448877 0.437088 +v -0.089033 1.440030 0.454975 +v -0.089033 1.138147 0.437088 +v -0.089033 1.155206 0.437088 +v -0.089033 1.146677 0.454975 +v -0.089033 0.844794 0.437088 +v -0.089033 0.861853 0.437088 +v -0.089033 0.853323 0.454975 +v -0.089033 0.551123 0.437088 +v -0.089033 0.568817 0.437088 +v -0.089033 0.559970 0.454975 +v -0.067522 1.689992 -0.412210 +v -0.067522 1.727860 -0.407321 +v -0.067522 1.727860 0.407321 +v -0.067522 1.689992 0.412210 +v -0.067522 0.310008 -0.412210 +v -0.067522 0.272139 -0.407321 +v -0.067522 0.310008 0.412210 +v -0.067522 0.272139 0.407321 +v -0.067522 0.553441 -0.412210 +v -0.067522 0.590698 -0.412210 +v -0.067522 0.590698 0.412210 +v -0.067522 0.553441 0.412210 +v -0.067522 0.839382 -0.412210 +v -0.067522 0.875331 -0.412210 +v -0.067522 0.839382 0.412210 +v -0.067522 0.875331 0.412210 +v -0.067522 1.124669 -0.412210 +v -0.067522 1.160618 -0.412210 +v -0.067522 1.124669 0.412210 +v -0.067522 1.160618 0.412210 +v -0.067522 1.409302 -0.412210 +v -0.067522 1.446559 -0.412210 +v -0.067522 1.446559 0.412210 +v -0.067522 1.409302 0.412210 +v -0.079726 1.134115 0.439682 +v -0.079726 1.151172 0.439682 +v -0.079726 0.848828 0.439682 +v -0.079726 0.865885 0.439682 +v -0.079726 0.300058 -0.434752 +v -0.079726 0.282090 -0.429863 +v -0.079726 1.699942 -0.434752 +v -0.079726 1.717910 -0.429863 +v -0.079726 1.717910 0.434792 +v -0.079726 1.699942 0.439682 +v -0.079726 0.300058 0.439682 +v -0.079726 0.282090 0.434792 +v -0.079726 0.563230 -0.434752 +v -0.079726 0.580909 -0.434752 +v -0.079726 0.580909 0.439682 +v -0.079726 0.563230 0.439682 +v -0.079726 0.848828 -0.434752 +v -0.079726 0.865885 -0.434752 +v -0.079726 1.134115 -0.434752 +v -0.079726 1.151172 -0.434752 +v -0.079726 1.419091 -0.434752 +v -0.079726 1.436770 -0.434752 +v -0.079726 1.436770 0.439682 +v -0.079726 1.419091 0.439682 +vt 0.783593 0.831993 +vt 0.770625 0.819241 +vt 0.786830 0.825688 +vt 0.904889 0.572687 +vt 0.904889 0.512544 +vt 0.910360 0.514355 +vt 0.764922 0.653705 +vt 0.756727 0.675027 +vt 0.750214 0.670777 +vt 0.934743 0.510728 +vt 0.927961 0.461088 +vt 0.934717 0.454799 +vt 0.744799 0.692104 +vt 0.751356 0.783421 +vt 0.744526 0.786188 +vt 0.904889 0.632829 +vt 0.910364 0.574436 +vt 0.783665 0.646709 +vt 0.761647 0.649126 +vt 0.783850 0.640153 +vt 0.739383 0.691433 +vt 0.910357 0.694788 +vt 0.917138 0.744427 +vt 0.910383 0.750717 +vt 0.821727 0.653705 +vt 0.801970 0.668151 +vt 0.818451 0.649126 +vt 0.807019 0.670776 +vt 0.796188 0.691433 +vt 0.749803 0.807573 +vt 0.739078 0.786824 +vt 0.764620 0.824799 +vt 0.744748 0.810146 +vt 0.910357 0.510728 +vt 0.917138 0.461089 +vt 0.917112 0.511201 +vt 0.840397 0.831993 +vt 0.827430 0.819241 +vt 0.843635 0.825688 +vt 0.745166 0.668151 +vt 0.806608 0.807573 +vt 0.795882 0.786824 +vt 0.801331 0.786188 +vt 0.821424 0.824799 +vt 0.801552 0.810145 +vt 0.934743 0.694788 +vt 0.927961 0.744427 +vt 0.927987 0.694314 +vt 0.840556 0.838653 +vt 0.818043 0.829441 +vt 0.801604 0.692104 +vt 0.783752 0.838653 +vt 0.761239 0.829441 +vt 0.770853 0.659218 +vt 0.934736 0.574436 +vt 0.927993 0.628317 +vt 0.927993 0.577199 +vt 0.934736 0.634577 +vt 0.927993 0.686669 +vt 0.927993 0.635687 +vt 0.910364 0.634578 +vt 0.917107 0.686670 +vt 0.910360 0.691161 +vt 0.840470 0.646709 +vt 0.827657 0.659218 +vt 0.917106 0.628317 +vt 0.910364 0.631080 +vt 0.910364 0.570938 +vt 0.917107 0.518846 +vt 0.917106 0.569829 +vt 0.295529 0.438043 +vt 0.345528 0.607370 +vt 0.295529 0.607370 +vt 0.052365 0.438043 +vt 0.102363 0.607367 +vt 0.052365 0.607367 +vt 0.393369 0.567210 +vt 0.387691 0.587060 +vt 0.355688 0.606368 +vt 0.112420 0.438043 +vt 0.163496 0.607367 +vt 0.112420 0.607367 +vt 0.042205 0.439048 +vt 0.042206 0.606362 +vt 0.004526 0.567206 +vt 0.173340 0.438043 +vt 0.224551 0.607368 +vt 0.173340 0.607369 +vt 0.234395 0.438043 +vt 0.285472 0.607370 +vt 0.234395 0.607370 +vt 0.940211 0.512544 +vt 0.940246 0.452090 +vt 0.751649 0.694916 +vt 0.813531 0.675027 +vt 0.940210 0.572687 +vt 0.934739 0.514355 +vt 0.813165 0.803316 +vt 0.808453 0.694916 +vt 0.940210 0.632828 +vt 0.934736 0.631080 +vt 0.756360 0.803316 +vt 0.940211 0.692971 +vt 0.934739 0.691161 +vt 0.940246 0.753425 +vt 0.934717 0.750716 +vt 0.904889 0.692971 +vt 0.904854 0.753426 +vt 0.934736 0.570939 +vt 0.927993 0.518846 +vt 0.904854 0.452090 +vt 0.910383 0.454799 +vt 0.808160 0.783421 +vt 0.911333 0.754460 +vt 0.906690 0.753196 +vt 0.911333 0.451055 +vt 0.906690 0.452320 +vt 0.933767 0.451055 +vt 0.938409 0.452320 +vt 0.933767 0.754460 +vt 0.938409 0.753195 +vt 0.938406 0.512543 +vt 0.938402 0.572687 +vt 0.938402 0.632828 +vt 0.938406 0.692972 +vt 0.906694 0.692973 +vt 0.906697 0.632829 +vt 0.906697 0.572687 +vt 0.906694 0.512543 +vt 0.917106 0.635687 +vt 0.927076 0.453302 +vt 0.045440 0.434418 +vt 0.045441 0.612005 +vt 0.166666 0.433413 +vt 0.166667 0.613011 +vt 0.918024 0.453302 +vt 0.918024 0.752213 +vt 0.927987 0.511202 +vt 0.927993 0.569829 +vt 0.927076 0.752213 +vt 0.917112 0.694314 +vt 0.840655 0.640153 +vt 0.352454 0.612010 +vt 0.348762 0.433413 +vt 0.352453 0.434417 +vt 0.049131 0.613009 +vt 0.049131 0.433413 +vt 0.109207 0.613009 +vt 0.105575 0.433414 +vt 0.109207 0.433414 +vt 0.170170 0.613011 +vt 0.170170 0.433413 +vt 0.231225 0.613012 +vt 0.227721 0.433413 +vt 0.231224 0.433413 +vt 0.292316 0.613013 +vt 0.288684 0.433414 +vt 0.292316 0.433414 +vt 0.355688 0.439047 +vt 0.227721 0.613012 +vt 0.105576 0.613009 +vt 0.348763 0.613014 +vt 0.288685 0.613013 +vt 0.534518 0.522925 +vt 0.571091 0.462674 +vt 0.571091 0.522925 +vt 0.525466 0.462674 +vt 0.488893 0.522925 +vt 0.488893 0.462674 +vt 0.525466 0.522925 +vt 0.488893 0.583177 +vt 0.525466 0.583177 +vt 0.488893 0.643428 +vt 0.103937 0.865381 +vt 0.079904 0.828809 +vt 0.103937 0.828809 +vt 0.079904 0.865381 +vt 0.054814 0.828809 +vt 0.525466 0.402422 +vt 0.488893 0.402422 +vt 0.054814 0.865381 +vt 0.030782 0.828809 +vt 0.525466 0.643428 +vt 0.488893 0.703680 +vt 0.442462 0.816101 +vt 0.466495 0.852674 +vt 0.442462 0.852674 +vt 0.466495 0.816101 +vt 0.491585 0.852674 +vt 0.491585 0.816101 +vt 0.515617 0.852674 +vt 0.515617 0.816101 +vt 0.611486 0.852674 +vt 0.611486 0.816101 +vt 0.635519 0.852674 +vt 0.635519 0.816101 +vt 0.660609 0.852674 +vt 0.534518 0.703680 +vt 0.571091 0.643428 +vt 0.571091 0.703680 +vt 0.660609 0.816101 +vt 0.684642 0.852674 +vt 0.534518 0.462674 +vt 0.571091 0.402422 +vt 0.272961 0.865381 +vt 0.248929 0.828809 +vt 0.272961 0.828809 +vt 0.248929 0.865381 +vt 0.223838 0.828809 +vt 0.223838 0.865381 +vt 0.199806 0.828809 +vt 0.199806 0.865381 +vt 0.534518 0.583177 +vt 0.571091 0.583177 +vt 0.845124 0.011186 +vt 0.832156 0.023938 +vt 0.826151 0.018380 +vt 0.406715 0.685366 +vt 0.412185 0.743698 +vt 0.406711 0.741949 +vt 0.818257 0.168152 +vt 0.826453 0.189473 +vt 0.811744 0.172402 +vt 0.937528 0.014559 +vt 0.930746 0.064198 +vt 0.930772 0.008270 +vt 0.812887 0.059757 +vt 0.806330 0.151074 +vt 0.806057 0.056990 +vt 0.406711 0.745446 +vt 0.412185 0.803840 +vt 0.406711 0.802091 +vt 0.823177 0.194053 +vt 0.845196 0.196470 +vt 0.800914 0.151745 +vt 0.399936 0.915438 +vt 0.406718 0.865799 +vt 0.406692 0.921727 +vt 0.826453 0.397025 +vt 0.806696 0.382579 +vt 0.811744 0.379954 +vt 0.800913 0.359297 +vt 0.806330 0.358626 +vt 0.800609 0.056354 +vt 0.811335 0.035605 +vt 0.806279 0.033033 +vt 0.406718 0.681738 +vt 0.399936 0.632099 +vt 0.406692 0.625810 +vt 0.845124 0.218738 +vt 0.832156 0.231489 +vt 0.826151 0.225932 +vt 0.806696 0.175027 +vt 0.800609 0.263906 +vt 0.811335 0.243157 +vt 0.806057 0.264542 +vt 0.806279 0.240585 +vt 0.930746 0.248259 +vt 0.937528 0.297898 +vt 0.930772 0.304187 +vt 0.845283 0.212078 +vt 0.845754 0.213902 +vt 0.845283 0.004526 +vt 0.845755 0.006350 +vt 0.832384 0.183961 +vt 0.930753 0.127906 +vt 0.937496 0.181787 +vt 0.930753 0.184550 +vt 0.930753 0.188048 +vt 0.937496 0.240140 +vt 0.930750 0.244631 +vt 0.399968 0.857680 +vt 0.406711 0.805588 +vt 0.406714 0.862172 +vt 0.832383 0.391513 +vt 0.845196 0.404022 +vt 0.399969 0.799328 +vt 0.399968 0.689857 +vt 0.448109 0.052365 +vt 0.617432 0.102364 +vt 0.448109 0.102362 +vt 0.448105 0.295531 +vt 0.617433 0.345528 +vt 0.448106 0.345530 +vt 0.597123 0.010205 +vt 0.611928 0.025473 +vt 0.616429 0.042208 +vt 0.448105 0.234396 +vt 0.617432 0.285472 +vt 0.448105 0.285473 +vt 0.577272 0.393368 +vt 0.488267 0.393370 +vt 0.616429 0.355686 +vt 0.448106 0.173341 +vt 0.617432 0.224552 +vt 0.448106 0.224552 +vt 0.448108 0.112421 +vt 0.617433 0.163498 +vt 0.448108 0.163497 +vt 0.925278 0.066015 +vt 0.818257 0.375704 +vt 0.930750 0.067825 +vt 0.930753 0.124409 +vt 0.925279 0.126158 +vt 0.817892 0.247415 +vt 0.817892 0.039863 +vt 0.925279 0.186299 +vt 0.925278 0.246442 +vt 0.412186 0.863982 +vt 0.937496 0.072317 +vt 0.412186 0.683555 +vt 0.812887 0.267309 +vt 0.410384 0.924207 +vt 0.405742 0.925471 +vt 0.405742 0.622066 +vt 0.410384 0.623331 +vt 0.927080 0.005791 +vt 0.931722 0.004526 +vt 0.931722 0.307931 +vt 0.927080 0.306666 +vt 0.927083 0.066014 +vt 0.927086 0.126158 +vt 0.927086 0.186299 +vt 0.927083 0.246443 +vt 0.410381 0.863983 +vt 0.410378 0.803840 +vt 0.410378 0.743698 +vt 0.410381 0.683554 +vt 0.399969 0.806698 +vt 0.399969 0.740840 +vt 0.938413 0.006773 +vt 0.449109 0.355690 +vt 0.621059 0.352452 +vt 0.622062 0.231225 +vt 0.617432 0.234395 +vt 0.399051 0.624313 +vt 0.399963 0.682212 +vt 0.399051 0.923224 +vt 0.937501 0.064672 +vt 0.937496 0.123300 +vt 0.937496 0.130670 +vt 0.937496 0.189157 +vt 0.937501 0.247785 +vt 0.938413 0.305684 +vt 0.399963 0.865325 +vt 0.823177 0.401605 +vt 0.622063 0.049133 +vt 0.443471 0.045440 +vt 0.621059 0.045442 +vt 0.442462 0.348765 +vt 0.622063 0.348762 +vt 0.622062 0.292316 +vt 0.442463 0.288686 +vt 0.622062 0.288685 +vt 0.442463 0.227723 +vt 0.622062 0.227721 +vt 0.622062 0.170171 +vt 0.442464 0.166668 +vt 0.622062 0.166667 +vt 0.622062 0.109209 +vt 0.442466 0.105576 +vt 0.622062 0.105578 +vt 0.449115 0.042205 +vt 0.617432 0.173341 +vt 0.617432 0.295529 +vt 0.617433 0.052367 +vt 0.617433 0.112422 +vt 0.534518 0.643428 +vt 0.784307 0.641951 +vt 0.841028 0.836829 +vt 0.784223 0.836829 +vt 0.786830 0.652929 +vt 0.843635 0.652929 +vt 0.917106 0.577199 +vt 0.345528 0.438043 +vt 0.102362 0.438043 +vt 0.372423 0.601866 +vt 0.372423 0.443548 +vt 0.387691 0.458355 +vt 0.393369 0.478205 +vt 0.163496 0.438043 +vt 0.025471 0.601860 +vt 0.010204 0.587055 +vt 0.004526 0.478204 +vt 0.010203 0.458355 +vt 0.025470 0.443549 +vt 0.224551 0.438043 +vt 0.285471 0.438043 +vt 0.841112 0.641951 +vt 0.030782 0.865381 +vt 0.525466 0.703680 +vt 0.684642 0.816101 +vt 0.534518 0.402422 +vt 0.848361 0.017491 +vt 0.813179 0.148262 +vt 0.845838 0.201228 +vt 0.845381 0.203026 +vt 0.822770 0.013738 +vt 0.848361 0.225043 +vt 0.822770 0.221290 +vt 0.848361 0.190250 +vt 0.848361 0.397802 +vt 0.399969 0.748210 +vt 0.488272 0.004526 +vt 0.453616 0.025470 +vt 0.468422 0.010203 +vt 0.577274 0.004528 +vt 0.468417 0.387693 +vt 0.453611 0.372426 +vt 0.611928 0.372422 +vt 0.597122 0.387690 +vt 0.925243 0.005561 +vt 0.813179 0.355814 +vt 0.925243 0.306896 +vt 0.412221 0.924437 +vt 0.412221 0.623101 +vt 0.443467 0.352456 +vt 0.442463 0.231227 +vt 0.845838 0.408780 +vt 0.845381 0.410578 +vt 0.442467 0.049131 +vt 0.442463 0.292318 +vt 0.442464 0.170171 +vt 0.442466 0.109207 +vn 0.7790 0.1642 -0.6052 +vn 0.8198 0.2555 -0.5126 +vn 0.7857 0.1313 -0.6045 +vn 1.0000 0.0000 -0.0000 +vn 0.8258 0.2898 0.4837 +vn 0.8225 0.4962 0.2778 +vn 0.8229 0.4869 0.2928 +vn 0.7564 0.0000 0.6541 +vn 0.7693 0.0222 0.6385 +vn 0.7802 0.0915 0.6187 +vn 0.7889 0.6067 0.0976 +vn 0.7831 0.6180 -0.0704 +vn 0.7889 0.6067 -0.0976 +vn 0.7564 0.0000 -0.6541 +vn 0.7693 -0.0222 -0.6385 +vn 0.7802 -0.0915 -0.6187 +vn 0.7693 0.0222 -0.6385 +vn 0.7790 -0.1642 0.6052 +vn 0.8198 -0.2555 0.5126 +vn 0.7857 -0.1313 0.6045 +vn 0.7693 -0.0222 0.6385 +vn 0.7790 0.1642 0.6052 +vn 0.8198 0.2555 0.5126 +vn 0.7790 -0.1642 -0.6052 +vn 0.8198 -0.2555 -0.5126 +vn 0.8258 -0.2898 -0.4837 +vn 0.7831 0.6180 0.0704 +vn 0.8225 -0.4962 -0.2778 +vn 0.8229 -0.4869 -0.2928 +vn 0.7889 -0.6067 0.0976 +vn 0.8225 -0.4962 0.2778 +vn 0.8229 -0.4869 0.2928 +vn 0.7889 -0.6067 -0.0976 +vn 0.7831 -0.6180 -0.0704 +vn 0.8258 -0.2898 0.4837 +vn 0.8225 0.4962 -0.2778 +vn 0.8229 0.4869 -0.2928 +vn 0.8258 0.2898 -0.4837 +vn 0.7831 -0.6180 0.0704 +vn 0.7857 0.1313 0.6045 +vn 0.6319 -0.7750 0.0000 +vn 0.6121 -0.7908 0.0000 +vn 0.7802 0.0915 -0.6187 +vn 0.7857 -0.1313 -0.6045 +vn 0.7802 -0.0915 0.6187 +vn 0.6121 0.7908 0.0000 +vn 0.6257 0.7800 0.0000 +vn 0.6319 0.7750 0.0000 +vn 0.6257 -0.7800 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.9909 -0.1349 +vn 0.0000 -0.8638 -0.5038 +vn 0.0000 -0.5038 -0.8638 +vn 0.0000 -0.1349 -0.9909 +vn 0.0000 0.1349 -0.9909 +vn 0.0000 0.5038 -0.8638 +vn 0.0000 0.8638 -0.5038 +vn 0.0000 0.9909 -0.1349 +vn 0.0000 0.9909 0.1349 +vn 0.0000 0.8638 0.5038 +vn 0.0000 0.5038 0.8638 +vn 0.0000 0.1349 0.9909 +vn 0.0000 -0.1349 0.9909 +vn 0.0000 -0.5038 0.8638 +vn 0.0000 -0.8638 0.5038 +vn 0.0000 -0.9909 0.1349 +vn -0.7790 0.1642 -0.6052 +vn -0.8198 0.2555 -0.5126 +vn -0.8258 0.2898 -0.4837 +vn -1.0000 0.0000 0.0000 +vn -0.8225 0.4962 0.2778 +vn -0.8258 0.2898 0.4837 +vn -0.8229 0.4869 0.2928 +vn -0.7693 0.0222 0.6385 +vn -0.7564 0.0000 0.6541 +vn -0.7802 0.0915 0.6187 +vn -0.7831 0.6180 -0.0704 +vn -0.7889 0.6067 0.0976 +vn -0.7889 0.6067 -0.0976 +vn -0.7693 -0.0222 -0.6385 +vn -0.7564 0.0000 -0.6541 +vn -0.7802 -0.0915 -0.6187 +vn -0.7693 0.0222 -0.6385 +vn -0.7802 0.0915 -0.6187 +vn -0.7790 -0.1642 0.6052 +vn -0.8198 -0.2555 0.5126 +vn -0.8258 -0.2898 0.4837 +vn -0.7693 -0.0222 0.6385 +vn -0.7802 -0.0915 0.6187 +vn -0.8198 0.2555 0.5126 +vn -0.7790 0.1642 0.6052 +vn -0.8198 -0.2555 -0.5126 +vn -0.7790 -0.1642 -0.6052 +vn -0.8258 -0.2898 -0.4837 +vn -0.8225 -0.4962 -0.2778 +vn -0.8229 -0.4869 -0.2928 +vn -0.8225 -0.4962 0.2778 +vn -0.7889 -0.6067 0.0976 +vn -0.8229 -0.4869 0.2928 +vn -0.7889 -0.6067 -0.0976 +vn -0.8225 0.4962 -0.2778 +vn -0.8229 0.4869 -0.2928 +vn -0.7831 -0.6180 0.0704 +vn -0.7857 0.1313 0.6045 +vn -0.6319 -0.7750 0.0000 +vn -0.6121 -0.7908 0.0000 +vn -0.7857 0.1313 -0.6045 +vn -0.7857 -0.1313 -0.6045 +vn -0.7857 -0.1313 0.6045 +vn -0.6121 0.7908 0.0000 +vn -0.6257 0.7800 0.0000 +vn -0.6319 0.7750 0.0000 +vn -0.6257 -0.7800 0.0000 +vn -0.7831 0.6180 0.0704 +vn -0.7831 -0.6180 -0.0704 +s 1 +f 268/431/159 259/432/160 308/433/161 +f 252/434/162 246/435/162 299/436/162 +f 224/437/163 261/438/164 225/439/165 +f 278/440/166 305/441/167 271/442/168 +f 217/443/169 253/444/170 218/445/171 +f 251/446/162 252/434/162 296/447/162 +f 272/448/162 238/449/162 239/450/162 +f 218/445/162 230/451/162 217/443/162 +f 290/452/172 304/453/173 265/454/174 +f 219/455/162 233/456/162 231/457/162 +f 220/458/162 234/459/162 233/456/162 +f 222/460/162 229/461/162 218/445/162 +f 223/462/162 235/463/162 222/460/162 +f 298/464/172 307/465/175 312/466/172 +f 274/467/176 264/468/177 302/469/178 +f 225/439/162 238/449/162 224/437/162 +f 225/439/162 230/451/162 240/470/162 +f 226/471/162 242/472/162 227/473/162 +f 228/474/162 241/475/162 226/471/162 +f 286/476/166 301/477/179 322/478/166 +f 274/467/162 244/479/162 243/480/162 +f 227/473/162 234/459/162 221/481/162 +f 268/431/162 237/482/162 236/483/162 +f 272/448/180 260/484/181 224/437/163 +f 280/485/166 317/486/166 314/487/166 +f 283/488/166 321/489/166 318/490/166 +f 293/491/172 324/492/172 289/493/172 +f 266/494/182 255/495/183 219/455/184 +f 296/447/172 319/496/172 292/497/172 +f 295/498/172 311/499/172 315/500/172 +f 322/501/162 304/502/162 323/503/162 +f 305/504/162 312/505/162 307/506/162 +f 257/507/162 256/508/162 303/509/162 +f 310/510/162 315/511/162 311/512/162 +f 306/513/162 308/514/162 253/515/162 +f 314/516/162 319/517/162 316/518/162 +f 318/519/162 324/520/162 320/521/162 +f 247/522/162 271/442/162 239/523/162 +f 217/443/169 261/438/164 254/524/185 +f 219/455/184 256/525/186 220/458/187 +f 248/526/162 277/527/162 247/522/162 +f 227/473/188 262/528/189 226/471/190 +f 221/481/191 256/525/186 257/529/192 +f 248/526/162 249/530/162 284/531/162 +f 228/474/193 262/528/189 264/468/177 +f 218/445/171 258/532/194 222/460/195 +f 249/530/162 245/533/162 287/534/162 +f 245/533/162 244/535/162 275/536/162 +f 223/462/196 258/532/194 259/432/160 +f 250/537/162 265/454/162 232/538/162 +f 281/539/166 310/540/166 277/527/166 +f 246/435/162 237/541/162 269/542/162 +f 251/446/162 289/493/162 250/537/162 +f 221/481/191 263/543/197 227/473/188 +f 265/454/162 266/544/162 267/545/162 +f 268/546/162 269/542/162 270/547/162 +f 271/442/162 272/548/162 273/549/162 +f 274/550/162 275/536/162 276/551/162 +f 277/527/162 278/440/162 279/552/162 +f 280/485/162 281/539/162 282/553/162 +f 283/488/162 284/531/162 285/554/162 +f 286/476/162 287/534/162 288/555/162 +f 289/493/162 290/452/162 291/556/162 +f 292/497/162 293/491/162 294/557/162 +f 295/498/162 296/447/162 297/558/162 +f 298/464/162 299/436/162 300/559/162 +f 320/560/172 292/497/172 319/496/172 +f 315/500/172 296/447/172 295/498/172 +f 271/442/168 306/561/198 272/548/180 +f 308/514/199 330/562/199 336/563/199 +f 315/511/200 341/564/200 327/565/200 +f 308/566/161 269/542/201 268/546/159 +f 299/436/172 312/466/172 311/499/172 +f 265/454/174 303/567/202 266/544/182 +f 277/527/166 309/568/166 278/440/166 +f 280/485/166 313/569/166 281/539/166 +f 318/490/166 284/531/166 283/488/166 +f 322/478/166 287/534/166 286/476/166 +f 275/536/203 302/570/178 301/477/179 +f 289/493/172 323/571/172 290/452/172 +f 266/494/162 231/457/162 232/572/162 +f 333/573/162 331/574/162 332/575/162 +f 335/576/162 330/562/162 329/577/162 +f 339/578/162 337/579/162 338/580/162 +f 328/581/162 341/564/162 342/582/162 +f 326/583/162 343/584/162 344/585/162 +f 347/586/162 345/587/162 346/588/162 +f 320/521/204 344/585/204 318/519/204 +f 311/512/205 338/580/205 310/510/205 +f 303/509/206 332/575/206 302/589/206 +f 319/517/200 343/584/200 325/590/200 +f 312/505/207 337/579/207 340/591/207 +f 304/502/199 331/574/199 334/592/199 +f 323/503/205 346/588/205 322/501/205 +f 307/506/206 329/577/206 305/504/206 +f 316/518/204 342/582/204 314/516/204 +f 324/520/207 345/587/207 348/593/207 +f 384/594/208 246/595/208 252/596/208 +f 379/597/209 248/598/209 247/599/209 +f 380/600/209 249/601/209 248/598/209 +f 381/602/209 245/603/209 249/601/209 +f 362/604/210 240/605/211 230/606/210 +f 372/607/211 238/608/212 240/605/211 +f 371/609/213 247/599/209 239/610/213 +f 370/611/212 239/612/213 238/608/212 +f 377/613/209 244/614/214 245/603/209 +f 376/615/214 243/616/215 244/617/214 +f 375/618/215 241/619/216 243/616/215 +f 373/620/216 242/621/217 241/619/216 +f 374/622/217 234/623/218 242/621/217 +f 366/624/218 233/625/219 234/623/218 +f 365/626/219 231/627/220 233/625/219 +f 364/628/221 250/629/208 232/630/221 +f 363/631/220 232/632/221 231/627/220 +f 378/633/208 237/634/222 246/595/208 +f 369/635/222 236/636/223 237/637/222 +f 368/638/223 235/639/224 236/636/223 +f 367/640/224 229/641/225 235/639/224 +f 361/642/225 230/606/210 229/641/225 +f 383/643/208 252/596/208 251/644/208 +f 400/645/226 391/646/227 355/647/228 +f 431/648/229 384/649/229 427/650/229 +f 393/651/230 356/652/231 357/653/232 +f 437/654/233 410/655/234 403/656/235 +f 385/657/236 349/658/237 350/659/238 +f 428/660/229 383/661/229 424/662/229 +f 370/663/229 356/652/229 404/664/229 +f 362/665/229 350/659/229 349/658/229 +f 436/666/239 422/667/240 397/668/241 +f 351/669/229 365/670/229 352/671/229 +f 352/671/229 366/672/229 353/673/229 +f 361/674/229 354/675/229 350/659/229 +f 367/676/229 355/647/229 354/675/229 +f 430/677/240 439/678/242 401/679/243 +f 406/680/244 396/681/245 360/682/246 +f 356/652/229 372/683/229 357/653/229 +f 357/653/229 362/665/229 349/658/229 +f 374/684/229 358/685/229 359/686/229 +f 373/687/229 360/682/229 358/685/229 +f 418/688/234 433/689/247 407/690/248 +f 376/691/229 408/692/229 406/680/229 +f 366/672/229 359/686/229 353/673/229 +f 369/693/229 402/694/229 400/645/229 +f 392/695/249 404/664/250 356/652/231 +f 412/696/234 449/697/234 416/698/234 +f 415/699/234 453/700/234 419/701/234 +f 456/702/240 425/703/240 421/704/240 +f 387/705/251 398/706/252 351/669/253 +f 451/707/240 428/660/240 424/662/240 +f 427/650/240 443/708/240 431/648/240 +f 436/709/229 454/710/229 455/711/229 +f 444/712/229 437/713/229 439/714/229 +f 394/715/229 396/716/229 434/717/229 +f 447/718/229 442/719/229 443/720/229 +f 386/721/229 385/722/229 438/723/229 +f 451/724/229 446/725/229 448/726/229 +f 456/727/229 450/728/229 452/729/229 +f 403/656/229 410/655/229 379/730/229 +f 349/658/237 393/651/230 357/653/232 +f 388/731/254 351/669/253 352/671/255 +f 409/732/229 413/733/229 380/734/229 +f 394/735/256 359/686/257 358/685/258 +f 353/673/259 388/731/254 352/671/255 +f 416/698/229 380/734/229 412/696/229 +f 360/682/246 394/735/256 358/685/258 +f 390/736/260 350/659/238 354/675/261 +f 419/701/229 381/737/229 415/699/229 +f 407/690/229 377/738/229 418/688/229 +f 355/647/228 390/736/260 354/675/261 +f 397/668/229 422/667/229 382/739/229 +f 442/740/234 413/733/234 409/732/234 +f 401/679/229 378/741/229 430/677/229 +f 421/704/229 425/703/229 383/661/229 +f 395/742/262 353/673/259 359/686/257 +f 397/668/229 399/743/229 398/744/229 +f 400/745/229 402/746/229 401/679/229 +f 403/656/229 405/747/229 404/748/229 +f 406/749/229 408/750/229 407/690/229 +f 409/732/229 411/751/229 410/655/229 +f 412/696/229 414/752/229 413/733/229 +f 415/699/229 417/753/229 416/698/229 +f 418/688/229 420/754/229 419/701/229 +f 421/704/229 423/755/229 422/667/229 +f 424/662/229 426/756/229 425/703/229 +f 427/650/229 429/757/229 428/660/229 +f 430/677/229 432/758/229 431/648/229 +f 452/759/240 424/662/240 425/703/240 +f 428/660/240 447/760/240 427/650/240 +f 403/656/235 438/761/263 437/654/233 +f 440/762/264 462/763/264 438/723/264 +f 447/718/265 473/764/265 445/765/265 +f 401/679/243 440/766/266 400/745/226 +f 444/767/240 431/648/240 443/708/240 +f 397/668/241 435/768/267 436/666/239 +f 409/732/234 441/769/234 442/740/234 +f 412/696/234 445/770/234 446/771/234 +f 416/698/234 450/772/234 415/699/234 +f 419/701/234 454/773/234 418/688/234 +f 434/774/268 407/690/248 433/689/247 +f 421/704/240 455/775/240 456/702/240 +f 363/776/229 351/669/229 398/706/229 +f 463/777/229 465/778/229 464/779/229 +f 462/763/229 467/780/229 461/781/229 +f 469/782/229 471/783/229 470/784/229 +f 473/764/229 460/785/229 474/786/229 +f 475/787/229 458/788/229 476/789/229 +f 477/790/229 479/791/229 478/792/229 +f 476/789/269 452/729/269 450/728/269 +f 470/784/270 443/720/270 442/719/270 +f 464/779/271 435/793/271 434/717/271 +f 451/724/265 475/787/265 449/794/265 +f 444/712/272 469/782/272 441/795/272 +f 436/709/264 463/777/264 433/796/264 +f 478/792/270 455/711/270 454/710/270 +f 461/781/271 439/714/271 437/713/271 +f 474/786/269 448/726/269 446/725/269 +f 456/727/272 477/790/272 453/797/272 +f 382/798/208 251/644/208 250/629/208 +f 268/431/159 223/462/196 259/432/160 +f 246/435/162 300/559/162 299/436/162 +f 299/436/162 295/498/162 252/434/162 +f 295/498/162 297/558/162 252/434/162 +f 224/437/163 260/484/181 261/438/164 +f 278/440/166 309/568/166 305/441/167 +f 217/443/169 254/524/185 253/444/170 +f 252/434/162 297/558/162 296/447/162 +f 296/447/162 292/497/162 251/446/162 +f 292/497/162 294/557/162 251/446/162 +f 239/450/162 273/799/162 272/448/162 +f 272/448/162 224/437/162 238/449/162 +f 218/445/162 229/461/162 230/451/162 +f 290/452/172 323/571/172 304/453/173 +f 219/455/162 220/458/162 233/456/162 +f 220/458/162 221/481/162 234/459/162 +f 222/460/162 235/463/162 229/461/162 +f 223/462/162 236/483/162 235/463/162 +f 298/464/172 269/542/201 307/465/175 +f 274/467/176 228/474/193 264/468/177 +f 225/439/162 240/470/162 238/449/162 +f 225/439/162 217/443/162 230/451/162 +f 226/471/162 241/475/162 242/472/162 +f 228/474/162 243/480/162 241/475/162 +f 286/476/166 275/536/203 301/477/179 +f 243/480/162 228/474/162 274/467/162 +f 274/467/162 276/800/162 244/479/162 +f 227/473/162 242/472/162 234/459/162 +f 236/483/162 223/462/162 268/431/162 +f 268/431/162 270/801/162 237/482/162 +f 272/448/180 306/802/198 260/484/181 +f 280/485/166 284/531/166 317/486/166 +f 283/488/166 287/534/166 321/489/166 +f 293/491/172 320/560/172 324/492/172 +f 266/494/182 303/803/202 255/495/183 +f 296/447/172 316/804/172 319/496/172 +f 295/498/172 299/436/172 311/499/172 +f 322/501/162 301/805/162 304/502/162 +f 305/504/162 309/806/162 312/505/162 +f 255/807/162 303/509/162 256/508/162 +f 303/509/162 302/589/162 257/507/162 +f 302/589/162 264/808/162 262/809/162 +f 262/809/162 263/810/162 302/589/162 +f 263/810/162 257/507/162 302/589/162 +f 310/510/162 313/811/162 315/511/162 +f 259/812/162 258/813/162 308/514/162 +f 258/813/162 253/515/162 308/514/162 +f 253/515/162 254/814/162 306/513/162 +f 254/814/162 261/815/162 306/513/162 +f 261/815/162 260/816/162 306/513/162 +f 314/516/162 317/817/162 319/517/162 +f 318/519/162 321/818/162 324/520/162 +f 247/522/162 279/552/162 278/440/162 +f 278/440/162 271/442/162 247/522/162 +f 271/442/162 273/549/162 239/523/162 +f 217/443/169 225/439/165 261/438/164 +f 219/455/184 255/495/183 256/525/186 +f 248/526/162 282/553/162 281/539/162 +f 281/539/162 277/527/162 248/526/162 +f 277/527/162 279/552/162 247/522/162 +f 227/473/188 263/543/197 262/528/189 +f 221/481/191 220/458/187 256/525/186 +f 249/530/162 285/554/162 284/531/162 +f 284/531/162 280/485/162 248/526/162 +f 280/485/162 282/553/162 248/526/162 +f 228/474/193 226/471/190 262/528/189 +f 218/445/171 253/444/170 258/532/194 +f 245/533/162 288/555/162 287/534/162 +f 287/534/162 283/488/162 249/530/162 +f 283/488/162 285/554/162 249/530/162 +f 244/535/162 276/551/162 275/536/162 +f 275/536/162 286/476/162 245/533/162 +f 286/476/162 288/555/162 245/533/162 +f 223/462/196 222/460/195 258/532/194 +f 250/537/162 291/556/162 290/452/162 +f 290/452/162 265/454/162 250/537/162 +f 265/454/162 267/545/162 232/538/162 +f 281/539/166 313/569/166 310/540/166 +f 237/541/162 270/547/162 269/542/162 +f 269/542/162 298/464/162 246/435/162 +f 298/464/162 300/559/162 246/435/162 +f 251/446/162 294/557/162 293/491/162 +f 293/491/162 289/493/162 251/446/162 +f 289/493/162 291/556/162 250/537/162 +f 221/481/191 257/529/192 263/543/197 +f 320/560/172 293/491/172 292/497/172 +f 315/500/172 316/804/172 296/447/172 +f 271/442/168 305/441/167 306/561/198 +f 308/514/199 306/513/199 330/562/199 +f 315/511/200 313/811/200 341/564/200 +f 308/566/161 307/465/175 269/542/201 +f 299/436/172 298/464/172 312/466/172 +f 265/454/174 304/453/173 303/567/202 +f 277/527/166 310/540/166 309/568/166 +f 280/485/166 314/487/166 313/569/166 +f 318/490/166 317/486/166 284/531/166 +f 322/478/166 321/489/166 287/534/166 +f 275/536/203 274/550/176 302/570/178 +f 289/493/172 324/492/172 323/571/172 +f 232/572/162 267/819/162 266/494/162 +f 266/494/162 219/455/162 231/457/162 +f 333/573/162 334/592/162 331/574/162 +f 335/576/162 336/563/162 330/562/162 +f 339/578/162 340/591/162 337/579/162 +f 328/581/162 327/565/162 341/564/162 +f 326/583/162 325/590/162 343/584/162 +f 347/586/162 348/593/162 345/587/162 +f 320/521/204 326/583/204 344/585/204 +f 311/512/205 339/578/205 338/580/205 +f 303/509/206 333/573/206 332/575/206 +f 319/517/200 317/817/200 343/584/200 +f 312/505/207 309/806/207 337/579/207 +f 304/502/199 301/805/199 331/574/199 +f 323/503/205 347/586/205 346/588/205 +f 307/506/206 335/576/206 329/577/206 +f 316/518/204 328/581/204 342/582/204 +f 324/520/207 321/818/207 345/587/207 +f 384/594/208 378/633/208 246/595/208 +f 379/597/209 380/600/209 248/598/209 +f 380/600/209 381/602/209 249/601/209 +f 381/602/209 377/613/209 245/603/209 +f 362/604/210 372/607/211 240/605/211 +f 372/607/211 370/611/212 238/608/212 +f 371/609/213 379/597/209 247/599/209 +f 370/611/212 371/820/213 239/612/213 +f 377/613/209 376/821/214 244/614/214 +f 376/615/214 375/618/215 243/616/215 +f 375/618/215 373/620/216 241/619/216 +f 373/620/216 374/622/217 242/621/217 +f 374/622/217 366/624/218 234/623/218 +f 366/624/218 365/626/219 233/625/219 +f 365/626/219 363/631/220 231/627/220 +f 364/628/221 382/798/208 250/629/208 +f 363/631/220 364/822/221 232/632/221 +f 378/633/208 369/823/222 237/634/222 +f 369/635/222 368/638/223 236/636/223 +f 368/638/223 367/640/224 235/639/224 +f 367/640/224 361/642/225 229/641/225 +f 361/642/225 362/604/210 230/606/210 +f 383/643/208 384/594/208 252/596/208 +f 400/645/226 440/824/266 391/646/227 +f 431/648/229 432/758/229 378/741/229 +f 378/741/229 384/649/229 431/648/229 +f 384/649/229 429/757/229 427/650/229 +f 393/651/230 392/695/249 356/652/231 +f 437/654/233 441/769/234 410/655/234 +f 385/657/236 386/825/273 349/658/237 +f 428/660/229 429/757/229 384/649/229 +f 384/649/229 383/661/229 428/660/229 +f 383/661/229 426/756/229 424/662/229 +f 404/664/229 405/826/229 371/827/229 +f 371/827/229 370/663/229 404/664/229 +f 362/665/229 361/674/229 350/659/229 +f 436/666/239 455/775/240 422/667/240 +f 351/669/229 363/776/229 365/670/229 +f 352/671/229 365/670/229 366/672/229 +f 361/674/229 367/676/229 354/675/229 +f 367/676/229 368/828/229 355/647/229 +f 430/677/240 444/767/240 439/678/242 +f 406/680/244 434/829/268 396/681/245 +f 356/652/229 370/663/229 372/683/229 +f 357/653/229 372/683/229 362/665/229 +f 374/684/229 373/687/229 358/685/229 +f 373/687/229 375/830/229 360/682/229 +f 418/688/234 454/773/234 433/689/247 +f 406/680/229 360/682/229 375/830/229 +f 375/830/229 376/691/229 406/680/229 +f 366/672/229 374/684/229 359/686/229 +f 400/645/229 355/647/229 368/828/229 +f 368/828/229 369/693/229 400/645/229 +f 392/695/249 438/831/263 404/664/250 +f 412/696/234 446/771/234 449/697/234 +f 415/699/234 450/772/234 453/700/234 +f 456/702/240 452/759/240 425/703/240 +f 387/705/251 435/832/267 398/706/252 +f 451/707/240 448/833/240 428/660/240 +f 427/650/240 447/760/240 443/708/240 +f 436/709/229 433/796/229 454/710/229 +f 444/712/229 441/795/229 437/713/229 +f 434/717/229 435/793/229 389/834/229 +f 435/793/229 387/835/229 388/836/229 +f 389/834/229 435/793/229 388/836/229 +f 389/834/229 395/837/229 434/717/229 +f 395/837/229 394/715/229 434/717/229 +f 447/718/229 445/765/229 442/719/229 +f 385/722/229 390/838/229 440/762/229 +f 390/838/229 391/839/229 440/762/229 +f 440/762/229 438/723/229 385/722/229 +f 438/723/229 392/840/229 393/841/229 +f 393/841/229 386/721/229 438/723/229 +f 451/724/229 449/794/229 446/725/229 +f 456/727/229 453/797/229 450/728/229 +f 410/655/229 411/751/229 379/730/229 +f 379/730/229 371/842/229 403/656/229 +f 371/842/229 405/747/229 403/656/229 +f 349/658/237 386/825/273 393/651/230 +f 388/731/254 387/705/251 351/669/253 +f 413/733/229 414/752/229 380/734/229 +f 380/734/229 379/730/229 409/732/229 +f 379/730/229 411/751/229 409/732/229 +f 394/735/256 395/742/262 359/686/257 +f 353/673/259 389/843/274 388/731/254 +f 416/698/229 417/753/229 381/737/229 +f 381/737/229 380/734/229 416/698/229 +f 380/734/229 414/752/229 412/696/229 +f 360/682/246 396/681/245 394/735/256 +f 390/736/260 385/657/236 350/659/238 +f 419/701/229 420/754/229 377/738/229 +f 377/738/229 381/737/229 419/701/229 +f 381/737/229 417/753/229 415/699/229 +f 407/690/229 408/750/229 376/844/229 +f 376/844/229 377/738/229 407/690/229 +f 377/738/229 420/754/229 418/688/229 +f 355/647/228 391/646/227 390/736/260 +f 422/667/229 423/755/229 382/739/229 +f 382/739/229 364/845/229 397/668/229 +f 364/845/229 399/743/229 397/668/229 +f 442/740/234 445/770/234 413/733/234 +f 401/679/229 402/746/229 369/846/229 +f 369/846/229 378/741/229 401/679/229 +f 378/741/229 432/758/229 430/677/229 +f 425/703/229 426/756/229 383/661/229 +f 383/661/229 382/739/229 421/704/229 +f 382/739/229 423/755/229 421/704/229 +f 395/742/262 389/843/274 353/673/259 +f 452/759/240 451/707/240 424/662/240 +f 428/660/240 448/833/240 447/760/240 +f 403/656/235 404/748/250 438/761/263 +f 440/762/264 468/847/264 462/763/264 +f 447/718/265 459/848/265 473/764/265 +f 401/679/243 439/678/242 440/766/266 +f 444/767/240 430/677/240 431/648/240 +f 397/668/241 398/744/252 435/768/267 +f 409/732/234 410/655/234 441/769/234 +f 412/696/234 413/733/234 445/770/234 +f 416/698/234 449/697/234 450/772/234 +f 419/701/234 453/700/234 454/773/234 +f 434/774/268 406/749/244 407/690/248 +f 421/704/240 422/667/240 455/775/240 +f 398/706/229 399/849/229 364/850/229 +f 364/850/229 363/776/229 398/706/229 +f 463/777/229 466/851/229 465/778/229 +f 462/763/229 468/847/229 467/780/229 +f 469/782/229 472/852/229 471/783/229 +f 473/764/229 459/848/229 460/785/229 +f 475/787/229 457/853/229 458/788/229 +f 477/790/229 480/854/229 479/791/229 +f 476/789/269 458/788/269 452/729/269 +f 470/784/270 471/783/270 443/720/270 +f 464/779/271 465/778/271 435/793/271 +f 451/724/265 457/853/265 475/787/265 +f 444/712/272 472/852/272 469/782/272 +f 436/709/264 466/851/264 463/777/264 +f 478/792/270 479/791/270 455/711/270 +f 461/781/271 467/780/271 439/714/271 +f 474/786/269 460/785/269 448/726/269 +f 456/727/272 480/854/272 477/790/272 +f 382/798/208 383/643/208 251/644/208 diff --git a/src/main/resources/assets/hbm/models/doors/water_door.obj b/src/main/resources/assets/hbm/models/doors/water_door.obj new file mode 100644 index 000000000..6dfaabcff --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/water_door.obj @@ -0,0 +1,7570 @@ +# Blender v2.92.0 OBJ File: 'water_door.blend' +# www.blender.org +o bolt +v 0.165037 2.447428 -0.486393 +v 0.165037 2.563211 -0.486393 +v 0.165037 2.447428 -1.450890 +v 0.165037 2.563211 -1.450890 +v 0.197443 2.447428 -0.486393 +v 0.197443 2.563211 -0.486393 +v 0.197443 2.447428 -1.450890 +v 0.197443 2.563211 -1.450890 +v 0.165037 0.441220 -0.486393 +v 0.165037 0.557003 -0.486393 +v 0.165037 0.441220 -1.450890 +v 0.165037 0.557003 -1.450890 +v 0.197443 0.441220 -0.486393 +v 0.197443 0.557003 -0.486393 +v 0.197443 0.441220 -1.450890 +v 0.197443 0.557003 -1.450890 +vt 0.017052 0.475044 +vt 0.410579 0.522284 +vt 0.017052 0.522285 +vt 0.423801 0.461821 +vt 0.410579 0.414580 +vt 0.423801 0.414580 +vt 0.410579 0.461821 +vt 0.017052 0.414580 +vt 0.017052 0.461821 +vt 0.003830 0.414580 +vt 0.017052 0.401357 +vt 0.410579 0.401358 +vt 0.410579 0.475043 +vt 0.478701 0.414580 +vt 0.431462 0.808107 +vt 0.431460 0.414580 +vt 0.491925 0.821329 +vt 0.539166 0.808106 +vt 0.539166 0.821329 +vt 0.491925 0.808106 +vt 0.539165 0.414580 +vt 0.491924 0.414580 +vt 0.539165 0.401357 +vt 0.552388 0.414579 +vt 0.552388 0.808106 +vt 0.478703 0.808106 +vt 0.003830 0.461821 +vt 0.491924 0.401357 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 7/5/2 3/6/2 +f 8/7/3 5/8/3 7/5/3 +f 6/9/4 1/10/4 5/8/4 +f 7/5/5 1/11/5 3/12/5 +f 4/13/6 6/9/6 8/7/6 +f 10/14/1 11/15/1 9/16/1 +f 12/17/2 15/18/2 11/19/2 +f 16/20/3 13/21/3 15/18/3 +f 14/22/4 9/23/4 13/21/4 +f 15/18/5 9/24/5 11/25/5 +f 12/26/6 14/22/6 16/20/6 +f 2/1/1 4/13/1 3/2/1 +f 4/4/2 8/7/2 7/5/2 +f 8/7/3 6/9/3 5/8/3 +f 6/9/4 2/27/4 1/10/4 +f 7/5/5 5/8/5 1/11/5 +f 4/13/6 2/1/6 6/9/6 +f 10/14/1 12/26/1 11/15/1 +f 12/17/2 16/20/2 15/18/2 +f 16/20/3 14/22/3 13/21/3 +f 14/22/4 10/28/4 9/23/4 +f 15/18/5 13/21/5 9/24/5 +f 12/26/6 10/14/6 14/22/6 +o door +v 0.101040 2.807820 -0.722241 +v 0.101040 2.743416 -0.939834 +v 0.101040 2.807820 0.722241 +v 0.101040 2.743416 0.939834 +v 0.101040 2.325418 -1.144342 +v 0.101040 2.325418 1.144342 +v 0.101040 0.674582 -1.144342 +v 0.101040 0.674582 1.144342 +v 0.101040 0.256584 -0.939834 +v 0.101040 0.256584 0.939834 +v 0.101040 0.192180 -0.722241 +v 0.101040 0.192180 0.722241 +v 0.125000 2.848552 -0.726781 +v 0.125000 2.780064 -0.958169 +v 0.125000 2.848552 0.726781 +v 0.125000 2.780064 0.958169 +v 0.125000 2.330607 -1.179983 +v 0.125000 2.330607 1.179983 +v 0.125000 0.669393 -1.179983 +v 0.125000 0.669393 1.179983 +v 0.125000 0.219935 -0.958169 +v 0.125000 0.219935 0.958169 +v 0.125000 0.151448 -0.726781 +v 0.125000 0.151448 0.726781 +v 0.125000 2.848552 -0.108504 +v 0.125000 2.848552 0.108504 +v 0.125000 0.151448 0.108504 +v 0.125000 0.151448 -0.108504 +v 0.101040 2.807820 -0.108504 +v 0.101040 2.807820 0.108504 +v 0.101040 0.192180 0.108504 +v 0.101040 0.192180 -0.108504 +v 0.133246 2.807820 -0.071231 +v 0.133246 2.807820 0.071231 +v 0.133246 0.192180 0.071231 +v 0.133246 0.192180 -0.071231 +v 0.101040 2.325418 0.722241 +v 0.101040 2.325418 0.108504 +v 0.133246 2.324229 0.071231 +v 0.133246 2.324229 -0.071231 +v 0.101040 2.325418 -0.108504 +v 0.101040 2.325418 -0.722241 +v 0.101040 0.674582 0.722241 +v 0.101040 0.674582 0.108504 +v 0.133246 0.675771 0.071231 +v 0.133246 0.675771 -0.071231 +v 0.101040 0.674582 -0.108504 +v 0.101040 0.674582 -0.722241 +v 0.130922 1.829642 -0.108504 +v 0.130922 1.906068 -0.108504 +v 0.130922 1.093932 -0.108504 +v 0.130922 1.170358 -0.108504 +v 0.130922 1.906068 0.108504 +v 0.130922 1.829642 0.108504 +v 0.130922 1.170358 0.108504 +v 0.130922 1.093932 0.108504 +v 0.130922 1.829642 1.144342 +v 0.130922 1.906068 1.144342 +v 0.130922 1.906068 0.722241 +v 0.130922 1.829642 0.722241 +v 0.130922 1.170358 0.722241 +v 0.130922 1.093932 0.722241 +v 0.130922 1.093932 1.144342 +v 0.130922 1.170358 1.144342 +v 0.130922 1.829642 -0.722241 +v 0.130922 1.906068 -0.722241 +v 0.130922 1.906068 -1.144342 +v 0.130922 1.829642 -1.144342 +v 0.130922 1.170358 -1.144342 +v 0.130922 1.093932 -1.144342 +v 0.130922 1.093932 -0.722241 +v 0.130922 1.170358 -0.722241 +v 0.125000 1.075880 -1.179983 +v 0.125000 1.188410 -1.179983 +v 0.125000 1.811590 -1.179983 +v 0.125000 1.924120 -1.179983 +v 0.125000 1.924120 1.179983 +v 0.125000 1.811590 1.179983 +v 0.125000 1.188410 1.179983 +v 0.125000 1.075880 1.179983 +v 0.101040 1.075880 -1.144342 +v 0.101040 1.188410 -1.144342 +v 0.101040 1.811590 -1.144342 +v 0.101040 1.924120 -1.144342 +v 0.101040 1.924120 1.144342 +v 0.101040 1.811590 1.144342 +v 0.101040 1.188410 1.144342 +v 0.101040 1.075880 1.144342 +v 0.133246 1.075880 -0.071231 +v 0.133246 1.188410 -0.071231 +v 0.133246 1.811590 -0.071231 +v 0.133246 1.924120 -0.071231 +v 0.101040 1.924120 -0.108504 +v 0.101040 1.811590 -0.108504 +v 0.101040 1.188410 -0.108504 +v 0.101040 1.075880 -0.108504 +v 0.101040 1.075880 0.722241 +v 0.101040 1.188410 0.722241 +v 0.101040 1.811590 0.722241 +v 0.101040 1.924120 0.722241 +v 0.101040 1.075880 0.108504 +v 0.101040 1.188410 0.108504 +v 0.101040 1.811590 0.108504 +v 0.101040 1.924120 0.108504 +v 0.133246 1.075880 0.071231 +v 0.133246 1.188410 0.071231 +v 0.133246 1.811590 0.071231 +v 0.133246 1.924120 0.071231 +v 0.101040 1.924120 -0.722241 +v 0.101040 1.811590 -0.722241 +v 0.101040 1.188410 -0.722241 +v 0.101040 1.075880 -0.722241 +v 0.101040 0.392644 1.051717 +v 0.101040 0.605411 1.126214 +v 0.124987 0.404961 1.120039 +v 0.101040 0.605411 -1.126213 +v 0.101040 0.392644 -1.051717 +v 0.124987 0.404961 -1.120039 +v 0.101040 0.392642 -0.722241 +v 0.101040 0.605412 -0.722241 +v 0.101040 0.392635 -0.108504 +v 0.101040 0.605416 -0.108504 +v 0.133246 0.392635 -0.071231 +v 0.133246 0.605416 -0.071231 +v 0.133246 0.392635 0.071231 +v 0.133246 0.605416 0.071231 +v 0.101040 0.392635 0.108504 +v 0.101040 0.605416 0.108504 +v 0.101040 0.605412 0.722241 +v 0.101040 0.392642 0.722241 +v 0.124996 0.586645 1.161225 +v 0.124996 0.586645 -1.161225 +v 0.148339 0.594584 0.722241 +v 0.148339 0.403470 0.722241 +v 0.148339 0.403463 0.108504 +v 0.148339 0.594588 0.108504 +v 0.148339 0.403463 -0.108504 +v 0.148339 0.594588 -0.108504 +v 0.148339 0.403470 -0.722241 +v 0.148339 0.594584 -0.722241 +v 0.101040 2.603477 -1.033087 +v 0.101040 2.403613 -1.126622 +v 0.124987 2.595039 -1.120039 +v 0.101040 2.403613 1.126622 +v 0.101040 2.600861 1.034830 +v 0.124987 2.595039 1.120039 +v 0.101040 2.590124 0.722241 +v 0.101040 2.403611 0.722241 +v 0.101040 2.590129 0.108504 +v 0.101040 2.403606 0.108504 +v 0.133246 2.590129 0.071231 +v 0.133246 2.403606 0.071231 +v 0.133246 2.590129 -0.071231 +v 0.133246 2.403606 -0.071231 +v 0.101040 2.590129 -0.108504 +v 0.101040 2.403606 -0.108504 +v 0.101040 2.403611 -0.722241 +v 0.101040 2.590124 -0.722241 +v 0.124996 2.411551 -1.161633 +v 0.124996 2.411551 1.161633 +v 0.148339 2.579340 -0.108504 +v 0.148339 2.414395 -0.108504 +v 0.148339 2.414400 -0.722241 +v 0.148339 2.579335 -0.722241 +v 0.148339 2.579340 0.108504 +v 0.148339 2.414395 0.108504 +v 0.148339 2.579335 0.722241 +v 0.148339 2.414400 0.722241 +v -0.101040 2.807820 -0.722241 +v -0.101040 2.743416 -0.939834 +v -0.101040 2.807820 0.722241 +v -0.101040 2.743416 0.939834 +v -0.101040 2.325418 -1.144342 +v -0.101040 2.325418 1.144342 +v -0.101040 0.674582 -1.144342 +v -0.101040 0.674582 1.144342 +v -0.101040 0.256584 -0.939834 +v -0.101040 0.256584 0.939834 +v -0.101040 0.192180 -0.722241 +v -0.101040 0.192180 0.722241 +v -0.125000 2.848552 -0.726781 +v -0.125000 2.780064 -0.958169 +v -0.125000 2.848552 0.726781 +v -0.125000 2.780064 0.958169 +v -0.125000 2.330607 -1.179983 +v -0.125000 2.330607 1.179983 +v -0.125000 0.669393 -1.179983 +v -0.125000 0.669393 1.179983 +v -0.125000 0.219935 -0.958169 +v -0.125000 0.219935 0.958169 +v -0.125000 0.151448 -0.726781 +v -0.125000 0.151448 0.726781 +v -0.125000 2.848552 -0.108504 +v -0.125000 2.848552 0.108504 +v -0.125000 0.151448 0.108504 +v -0.125000 0.151448 -0.108504 +v -0.101040 2.807820 -0.108504 +v -0.101040 2.807820 0.108504 +v -0.101040 0.192180 0.108504 +v -0.101040 0.192180 -0.108504 +v -0.133246 2.807820 -0.071231 +v -0.133246 2.807820 0.071231 +v -0.133246 0.192180 0.071231 +v -0.133246 0.192180 -0.071231 +v -0.101040 2.325418 0.722241 +v -0.101040 2.325418 0.108504 +v -0.133246 2.324229 0.071231 +v -0.133246 2.324229 -0.071231 +v -0.101040 2.325418 -0.108504 +v -0.101040 2.325418 -0.722241 +v -0.101040 0.674582 0.722241 +v -0.101040 0.674582 0.108504 +v -0.133246 0.675771 0.071231 +v -0.133246 0.675771 -0.071231 +v -0.101040 0.674582 -0.108504 +v -0.101040 0.674582 -0.722241 +v -0.130922 1.829642 -0.108504 +v -0.130922 1.906068 -0.108504 +v -0.130922 1.093932 -0.108504 +v -0.130922 1.170358 -0.108504 +v -0.130922 1.906068 0.108504 +v -0.130922 1.829642 0.108504 +v -0.130922 1.170358 0.108504 +v -0.130922 1.093932 0.108504 +v -0.130922 1.829642 1.144342 +v -0.130922 1.906068 1.144342 +v -0.130922 1.906068 0.722241 +v -0.130922 1.829642 0.722241 +v -0.130922 1.170358 0.722241 +v -0.130922 1.093932 0.722241 +v -0.130922 1.093932 1.144342 +v -0.130922 1.170358 1.144342 +v -0.130922 1.829642 -0.722241 +v -0.130922 1.906068 -0.722241 +v -0.130922 1.906068 -1.144342 +v -0.130922 1.829642 -1.144342 +v -0.130922 1.170358 -1.144342 +v -0.130922 1.093932 -1.144342 +v -0.130922 1.093932 -0.722241 +v -0.130922 1.170358 -0.722241 +v -0.125000 1.075880 -1.179983 +v -0.125000 1.188410 -1.179983 +v -0.125000 1.811590 -1.179983 +v -0.125000 1.924120 -1.179983 +v -0.125000 1.924120 1.179983 +v -0.125000 1.811590 1.179983 +v -0.125000 1.188410 1.179983 +v -0.125000 1.075880 1.179983 +v -0.101040 1.075880 -1.144342 +v -0.101040 1.188410 -1.144342 +v -0.101040 1.811590 -1.144342 +v -0.101040 1.924120 -1.144342 +v -0.101040 1.924120 1.144342 +v -0.101040 1.811590 1.144342 +v -0.101040 1.188410 1.144342 +v -0.101040 1.075880 1.144342 +v -0.133246 1.075880 -0.071231 +v -0.133246 1.188410 -0.071231 +v -0.133246 1.811590 -0.071231 +v -0.133246 1.924120 -0.071231 +v -0.101040 1.924120 -0.108504 +v -0.101040 1.811590 -0.108504 +v -0.101040 1.188410 -0.108504 +v -0.101040 1.075880 -0.108504 +v -0.101040 1.075880 0.722241 +v -0.101040 1.188410 0.722241 +v -0.101040 1.811590 0.722241 +v -0.101040 1.924120 0.722241 +v -0.101040 1.075880 0.108504 +v -0.101040 1.188410 0.108504 +v -0.101040 1.811590 0.108504 +v -0.101040 1.924120 0.108504 +v -0.133246 1.075880 0.071231 +v -0.133246 1.188410 0.071231 +v -0.133246 1.811590 0.071231 +v -0.133246 1.924120 0.071231 +v -0.101040 1.924120 -0.722241 +v -0.101040 1.811590 -0.722241 +v -0.101040 1.188410 -0.722241 +v -0.101040 1.075880 -0.722241 +v -0.101040 0.392644 1.051717 +v -0.101040 0.605411 1.126214 +v -0.124987 0.404961 1.120039 +v -0.101040 0.605411 -1.126213 +v -0.101040 0.392644 -1.051717 +v -0.124987 0.404961 -1.120039 +v -0.101040 0.392642 -0.722241 +v -0.101040 0.605412 -0.722241 +v -0.101040 0.392635 -0.108504 +v -0.101040 0.605416 -0.108504 +v -0.133246 0.392635 -0.071231 +v -0.133246 0.605416 -0.071231 +v -0.133246 0.392635 0.071231 +v -0.133246 0.605416 0.071231 +v -0.101040 0.392635 0.108504 +v -0.101040 0.605416 0.108504 +v -0.101040 0.605412 0.722241 +v -0.101040 0.392642 0.722241 +v -0.124996 0.586645 1.161225 +v -0.124996 0.586645 -1.161225 +v -0.148339 0.594584 0.722241 +v -0.148339 0.403470 0.722241 +v -0.148339 0.403463 0.108504 +v -0.148339 0.594588 0.108504 +v -0.148339 0.403463 -0.108504 +v -0.148339 0.594588 -0.108504 +v -0.148339 0.403470 -0.722241 +v -0.148339 0.594584 -0.722241 +v -0.101040 2.603477 -1.033087 +v -0.101040 2.403613 -1.126622 +v -0.124987 2.595039 -1.120039 +v -0.101040 2.403613 1.126622 +v -0.101040 2.600861 1.034830 +v -0.124987 2.595039 1.120039 +v -0.101040 2.590124 0.722241 +v -0.101040 2.403611 0.722241 +v -0.101040 2.590129 0.108504 +v -0.101040 2.403606 0.108504 +v -0.133246 2.590129 0.071231 +v -0.133246 2.403606 0.071231 +v -0.133246 2.590129 -0.071231 +v -0.133246 2.403606 -0.071231 +v -0.101040 2.590129 -0.108504 +v -0.101040 2.403606 -0.108504 +v -0.101040 2.403611 -0.722241 +v -0.101040 2.590124 -0.722241 +v -0.124996 2.411551 -1.161633 +v -0.124996 2.411551 1.161633 +v -0.148339 2.579340 -0.108504 +v -0.148339 2.414395 -0.108504 +v -0.148339 2.414400 -0.722241 +v -0.148339 2.579335 -0.722241 +v -0.148339 2.579340 0.108504 +v -0.148339 2.414395 0.108504 +v -0.148339 2.579335 0.722241 +v -0.148339 2.414400 0.722241 +v 0.197647 2.347521 -0.528361 +v 0.197647 2.645470 -0.528361 +v 0.197647 2.347521 -0.647202 +v 0.197647 2.645470 -0.647202 +v 0.226225 2.347521 -0.528361 +v 0.226225 2.645470 -0.528361 +v 0.226225 2.347521 -0.647202 +v 0.226225 2.645470 -0.647202 +v 0.097240 2.347521 -0.528361 +v 0.097240 2.645470 -0.528361 +v 0.097240 2.347521 -0.647202 +v 0.097240 2.645470 -0.647202 +v 0.164155 2.347521 -0.528361 +v 0.164155 2.645470 -0.528361 +v 0.164155 2.347521 -0.647202 +v 0.164155 2.645470 -0.647202 +v 0.203265 2.586435 -0.575212 +v 0.203265 2.612117 -0.575212 +v 0.203265 2.586435 -0.600894 +v 0.203265 2.612117 -0.600894 +v 0.244293 2.612117 -0.600894 +v 0.244293 2.586435 -0.600894 +v 0.244293 2.586435 -0.575212 +v 0.244293 2.612117 -0.575212 +v 0.161929 2.564306 -0.571122 +v 0.161929 2.582345 -0.553083 +v 0.161929 2.616207 -0.553083 +v 0.161929 2.634246 -0.571122 +v 0.161929 2.582345 -0.623023 +v 0.161929 2.564306 -0.604984 +v 0.161929 2.634246 -0.604984 +v 0.161929 2.616207 -0.623023 +v 0.203265 2.616207 -0.623023 +v 0.203265 2.634246 -0.604984 +v 0.203265 2.621491 -0.610268 +v 0.203265 2.564306 -0.604984 +v 0.203265 2.582345 -0.623023 +v 0.203265 2.577062 -0.610268 +v 0.203265 2.582345 -0.553083 +v 0.203265 2.564306 -0.571122 +v 0.203265 2.577062 -0.565838 +v 0.203265 2.634246 -0.571122 +v 0.203265 2.616207 -0.553083 +v 0.203265 2.621491 -0.565838 +v 0.203265 2.384638 -0.575212 +v 0.203265 2.410320 -0.575212 +v 0.203265 2.384638 -0.600894 +v 0.203265 2.410320 -0.600894 +v 0.244293 2.410320 -0.600894 +v 0.244293 2.384638 -0.600894 +v 0.244293 2.384638 -0.575212 +v 0.244293 2.410320 -0.575212 +v 0.161929 2.362509 -0.571122 +v 0.161929 2.380548 -0.553083 +v 0.161929 2.414410 -0.553083 +v 0.161929 2.432449 -0.571122 +v 0.161929 2.380548 -0.623023 +v 0.161929 2.362509 -0.604984 +v 0.161929 2.432449 -0.604984 +v 0.161929 2.414410 -0.623023 +v 0.203265 2.414410 -0.623023 +v 0.203265 2.432449 -0.604984 +v 0.203265 2.419693 -0.610268 +v 0.203265 2.362509 -0.604984 +v 0.203265 2.380548 -0.623023 +v 0.203265 2.375264 -0.610268 +v 0.203265 2.380548 -0.553083 +v 0.203265 2.362509 -0.571122 +v 0.203265 2.375264 -0.565838 +v 0.203265 2.432449 -0.571122 +v 0.203265 2.414410 -0.553083 +v 0.203265 2.419693 -0.565838 +v 0.197647 0.341313 -0.866632 +v 0.197647 0.639262 -0.866632 +v 0.197647 0.341313 -0.985472 +v 0.197647 0.639262 -0.985472 +v 0.226225 0.341313 -0.866632 +v 0.226225 0.639262 -0.866632 +v 0.226225 0.341313 -0.985472 +v 0.226225 0.639262 -0.985472 +v 0.097240 0.341313 -0.866632 +v 0.097240 0.639262 -0.866632 +v 0.097240 0.341313 -0.985472 +v 0.097240 0.639262 -0.985472 +v 0.164155 0.341313 -0.866632 +v 0.164155 0.639262 -0.866632 +v 0.164155 0.341313 -0.985472 +v 0.164155 0.639262 -0.985472 +v 0.203265 0.580227 -0.913483 +v 0.203265 0.605909 -0.913483 +v 0.203265 0.580227 -0.939164 +v 0.203265 0.605909 -0.939164 +v 0.244293 0.605909 -0.939164 +v 0.244293 0.580227 -0.939164 +v 0.244293 0.580227 -0.913483 +v 0.244293 0.605909 -0.913483 +v 0.161929 0.558098 -0.909392 +v 0.161929 0.576137 -0.891353 +v 0.161929 0.609999 -0.891353 +v 0.161929 0.628038 -0.909392 +v 0.161929 0.576137 -0.961294 +v 0.161929 0.558098 -0.943255 +v 0.161929 0.628038 -0.943255 +v 0.161929 0.609999 -0.961294 +v 0.203265 0.609999 -0.961294 +v 0.203265 0.628038 -0.943255 +v 0.203265 0.615283 -0.948538 +v 0.203265 0.558098 -0.943255 +v 0.203265 0.576137 -0.961294 +v 0.203265 0.570854 -0.948538 +v 0.203265 0.576137 -0.891353 +v 0.203265 0.558098 -0.909392 +v 0.203265 0.570854 -0.904109 +v 0.203265 0.628038 -0.909392 +v 0.203265 0.609999 -0.891353 +v 0.203265 0.615283 -0.904109 +v 0.203265 0.378430 -0.913483 +v 0.203265 0.404112 -0.913483 +v 0.203265 0.378430 -0.939164 +v 0.203265 0.404112 -0.939164 +v 0.244293 0.404112 -0.939164 +v 0.244293 0.378430 -0.939164 +v 0.244293 0.378430 -0.913483 +v 0.244293 0.404112 -0.913483 +v 0.161929 0.356301 -0.909392 +v 0.161929 0.374340 -0.891353 +v 0.161929 0.408202 -0.891353 +v 0.161929 0.426241 -0.909392 +v 0.161929 0.374340 -0.961294 +v 0.161929 0.356301 -0.943255 +v 0.161929 0.426241 -0.943255 +v 0.161929 0.408202 -0.961294 +v 0.203265 0.408202 -0.961294 +v 0.203265 0.426241 -0.943255 +v 0.203265 0.413486 -0.948538 +v 0.203265 0.356301 -0.943255 +v 0.203265 0.374340 -0.961294 +v 0.203265 0.369056 -0.948538 +v 0.203265 0.374340 -0.891353 +v 0.203265 0.356301 -0.909392 +v 0.203265 0.369056 -0.904109 +v 0.203265 0.426241 -0.909392 +v 0.203265 0.408202 -0.891353 +v 0.203265 0.413486 -0.904109 +v 0.197647 0.341313 -0.528361 +v 0.197647 0.639262 -0.528361 +v 0.197647 0.341313 -0.647202 +v 0.197647 0.639262 -0.647202 +v 0.226225 0.341313 -0.528361 +v 0.226225 0.639262 -0.528361 +v 0.226225 0.341313 -0.647202 +v 0.226225 0.639262 -0.647202 +v 0.097240 0.341313 -0.528361 +v 0.097240 0.639262 -0.528361 +v 0.097240 0.341313 -0.647202 +v 0.097240 0.639262 -0.647202 +v 0.164155 0.341313 -0.528361 +v 0.164155 0.639262 -0.528361 +v 0.164155 0.341313 -0.647202 +v 0.164155 0.639262 -0.647202 +v 0.203265 0.580227 -0.575212 +v 0.203265 0.605909 -0.575212 +v 0.203265 0.580227 -0.600894 +v 0.203265 0.605909 -0.600894 +v 0.244293 0.605909 -0.600894 +v 0.244293 0.580227 -0.600894 +v 0.244293 0.580227 -0.575212 +v 0.244293 0.605909 -0.575212 +v 0.161929 0.558098 -0.571122 +v 0.161929 0.576137 -0.553083 +v 0.161929 0.609999 -0.553083 +v 0.161929 0.628038 -0.571122 +v 0.161929 0.576137 -0.623023 +v 0.161929 0.558098 -0.604984 +v 0.161929 0.628038 -0.604984 +v 0.161929 0.609999 -0.623023 +v 0.203265 0.609999 -0.623023 +v 0.203265 0.628038 -0.604984 +v 0.203265 0.615283 -0.610268 +v 0.203265 0.558098 -0.604984 +v 0.203265 0.576137 -0.623023 +v 0.203265 0.570854 -0.610268 +v 0.203265 0.576137 -0.553083 +v 0.203265 0.558098 -0.571122 +v 0.203265 0.570854 -0.565839 +v 0.203265 0.628038 -0.571122 +v 0.203265 0.609999 -0.553083 +v 0.203265 0.615283 -0.565839 +v 0.203265 0.378430 -0.575212 +v 0.203265 0.404112 -0.575212 +v 0.203265 0.378430 -0.600894 +v 0.203265 0.404112 -0.600894 +v 0.244293 0.404112 -0.600894 +v 0.244293 0.378430 -0.600894 +v 0.244293 0.378430 -0.575212 +v 0.244293 0.404112 -0.575212 +v 0.161929 0.356301 -0.571122 +v 0.161929 0.374340 -0.553083 +v 0.161929 0.408202 -0.553083 +v 0.161929 0.426241 -0.571122 +v 0.161929 0.374340 -0.623023 +v 0.161929 0.356301 -0.604984 +v 0.161929 0.426241 -0.604984 +v 0.161929 0.408202 -0.623023 +v 0.203265 0.408202 -0.623023 +v 0.203265 0.426241 -0.604984 +v 0.203265 0.413486 -0.610268 +v 0.203265 0.356301 -0.604984 +v 0.203265 0.374340 -0.623023 +v 0.203265 0.369056 -0.610268 +v 0.203265 0.374340 -0.553083 +v 0.203265 0.356301 -0.571122 +v 0.203265 0.369056 -0.565839 +v 0.203265 0.426241 -0.571122 +v 0.203265 0.408202 -0.553083 +v 0.203265 0.413486 -0.565839 +v 0.197647 2.347521 -0.866632 +v 0.197647 2.645470 -0.866632 +v 0.197647 2.347521 -0.985472 +v 0.197647 2.645470 -0.985472 +v 0.226225 2.347521 -0.866632 +v 0.226225 2.645470 -0.866632 +v 0.226225 2.347521 -0.985472 +v 0.226225 2.645470 -0.985472 +v 0.097240 2.347521 -0.866632 +v 0.097240 2.645470 -0.866632 +v 0.097240 2.347521 -0.985472 +v 0.097240 2.645470 -0.985472 +v 0.164155 2.347521 -0.866632 +v 0.164155 2.645470 -0.866632 +v 0.164155 2.347521 -0.985472 +v 0.164155 2.645470 -0.985472 +v 0.203265 2.586436 -0.913483 +v 0.203265 2.612117 -0.913483 +v 0.203265 2.586436 -0.939164 +v 0.203265 2.612117 -0.939164 +v 0.244293 2.612117 -0.939164 +v 0.244293 2.586436 -0.939164 +v 0.244293 2.586436 -0.913483 +v 0.244293 2.612117 -0.913483 +v 0.161929 2.564306 -0.909392 +v 0.161929 2.582345 -0.891353 +v 0.161929 2.616208 -0.891353 +v 0.161929 2.634247 -0.909392 +v 0.161929 2.582345 -0.961294 +v 0.161929 2.564306 -0.943255 +v 0.161929 2.634247 -0.943255 +v 0.161929 2.616208 -0.961294 +v 0.203265 2.616208 -0.961294 +v 0.203265 2.634247 -0.943255 +v 0.203265 2.621491 -0.948538 +v 0.203265 2.564306 -0.943255 +v 0.203265 2.582345 -0.961294 +v 0.203265 2.577062 -0.948538 +v 0.203265 2.582345 -0.891353 +v 0.203265 2.564306 -0.909392 +v 0.203265 2.577062 -0.904109 +v 0.203265 2.634247 -0.909392 +v 0.203265 2.616208 -0.891353 +v 0.203265 2.621491 -0.904109 +v 0.203265 2.384638 -0.913483 +v 0.203265 2.410320 -0.913483 +v 0.203265 2.384638 -0.939164 +v 0.203265 2.410320 -0.939164 +v 0.244293 2.410320 -0.939164 +v 0.244293 2.384638 -0.939164 +v 0.244293 2.384638 -0.913483 +v 0.244293 2.410320 -0.913483 +v 0.161929 2.362509 -0.909392 +v 0.161929 2.380548 -0.891353 +v 0.161929 2.414410 -0.891353 +v 0.161929 2.432449 -0.909392 +v 0.161929 2.380548 -0.961294 +v 0.161929 2.362509 -0.943255 +v 0.161929 2.432449 -0.943255 +v 0.161929 2.414410 -0.961294 +v 0.203265 2.414410 -0.961294 +v 0.203265 2.432449 -0.943255 +v 0.203265 2.419694 -0.948538 +v 0.203265 2.362509 -0.943255 +v 0.203265 2.380548 -0.961294 +v 0.203265 2.375265 -0.948538 +v 0.203265 2.380548 -0.891353 +v 0.203265 2.362509 -0.909392 +v 0.203265 2.375265 -0.904109 +v 0.203265 2.432449 -0.909392 +v 0.203265 2.414410 -0.891353 +v 0.203265 2.419694 -0.904109 +vt 0.511490 0.377541 +vt 0.478344 0.390762 +vt 0.478345 0.377541 +vt 0.194788 0.944062 +vt 0.161643 0.947241 +vt 0.161643 0.944062 +vt 0.194788 0.947241 +vt 0.161643 0.960462 +vt 0.194788 0.960462 +vt 0.161643 0.963641 +vt 0.158463 0.960462 +vt 0.158463 0.947241 +vt 0.197968 0.947241 +vt 0.882134 0.687732 +vt 0.874690 0.654587 +vt 0.882134 0.654587 +vt 0.874690 0.687732 +vt 0.861469 0.654587 +vt 0.861469 0.687732 +vt 0.854025 0.654587 +vt 0.861469 0.647143 +vt 0.874690 0.647143 +vt 0.874690 0.695177 +vt 0.034978 0.968702 +vt 0.034978 0.972469 +vt 0.032517 0.969157 +vt 0.423791 0.822353 +vt 0.419227 0.819496 +vt 0.423791 0.819496 +vt 0.032972 0.979074 +vt 0.029205 0.974476 +vt 0.032972 0.974476 +vt 0.027198 0.972469 +vt 0.022599 0.968702 +vt 0.027198 0.968702 +vt 0.039577 0.972469 +vt 0.039577 0.968702 +vt 0.032517 0.972014 +vt 0.029660 0.972014 +vt 0.029205 0.966695 +vt 0.032972 0.966695 +vt 0.029660 0.969157 +vt 0.416370 0.816639 +vt 0.419227 0.813782 +vt 0.419227 0.816639 +vt 0.423791 0.816639 +vt 0.423791 0.825210 +vt 0.419227 0.822353 +vt 0.423791 0.813782 +vt 0.033559 0.973057 +vt 0.033559 0.968114 +vt 0.028617 0.968114 +vt 0.028617 0.973057 +vt 0.039577 0.965864 +vt 0.034978 0.965864 +vt 0.034978 0.975307 +vt 0.039577 0.975307 +vt 0.027198 0.965864 +vt 0.022599 0.965864 +vt 0.022599 0.975307 +vt 0.027198 0.975307 +vt 0.029205 0.962097 +vt 0.032972 0.962097 +vt 0.701874 0.977962 +vt 0.701874 0.974195 +vt 0.704336 0.977507 +vt 0.689065 0.943870 +vt 0.684500 0.941013 +vt 0.689065 0.941013 +vt 0.703881 0.967590 +vt 0.707648 0.972188 +vt 0.703881 0.972188 +vt 0.709655 0.974195 +vt 0.714253 0.977962 +vt 0.709655 0.977962 +vt 0.697276 0.974195 +vt 0.697276 0.977962 +vt 0.704336 0.974650 +vt 0.707193 0.974650 +vt 0.707648 0.979969 +vt 0.703881 0.979969 +vt 0.707193 0.977507 +vt 0.681643 0.938156 +vt 0.684500 0.935299 +vt 0.684500 0.938156 +vt 0.689065 0.938156 +vt 0.689065 0.946727 +vt 0.684500 0.943870 +vt 0.689065 0.935299 +vt 0.703293 0.973607 +vt 0.703293 0.978550 +vt 0.708236 0.978550 +vt 0.708236 0.973607 +vt 0.697276 0.980800 +vt 0.701874 0.980800 +vt 0.701874 0.971357 +vt 0.697276 0.971357 +vt 0.709655 0.980800 +vt 0.714253 0.980800 +vt 0.714253 0.971357 +vt 0.709655 0.971357 +vt 0.707648 0.984567 +vt 0.703881 0.984567 +vt 0.889793 0.647143 +vt 0.903014 0.680288 +vt 0.889793 0.680288 +vt 0.493260 0.943731 +vt 0.460114 0.946910 +vt 0.460114 0.943731 +vt 0.493260 0.946910 +vt 0.460114 0.960131 +vt 0.493260 0.960131 +vt 0.460114 0.963310 +vt 0.456935 0.960131 +vt 0.456935 0.946910 +vt 0.496439 0.946910 +vt 0.772543 0.890867 +vt 0.805689 0.883423 +vt 0.805689 0.890867 +vt 0.772543 0.883423 +vt 0.805689 0.870202 +vt 0.772543 0.870202 +vt 0.805689 0.862758 +vt 0.813133 0.870202 +vt 0.813133 0.883423 +vt 0.765099 0.883423 +vt 0.408141 0.976041 +vt 0.404374 0.976041 +vt 0.407686 0.973579 +vt 0.867301 0.965358 +vt 0.862737 0.962501 +vt 0.867301 0.962501 +vt 0.397769 0.974034 +vt 0.402367 0.970267 +vt 0.402367 0.974034 +vt 0.404374 0.968260 +vt 0.408141 0.963662 +vt 0.408141 0.968260 +vt 0.404374 0.980639 +vt 0.408141 0.980639 +vt 0.404829 0.973579 +vt 0.404829 0.970722 +vt 0.410148 0.970267 +vt 0.410148 0.974034 +vt 0.407686 0.970722 +vt 0.859880 0.959644 +vt 0.862737 0.956788 +vt 0.862737 0.959644 +vt 0.867301 0.959644 +vt 0.867301 0.968215 +vt 0.862737 0.965358 +vt 0.867301 0.956788 +vt 0.403786 0.974622 +vt 0.408729 0.974622 +vt 0.408729 0.969679 +vt 0.403786 0.969679 +vt 0.410979 0.980639 +vt 0.410979 0.976041 +vt 0.401536 0.976041 +vt 0.401536 0.980639 +vt 0.410979 0.968260 +vt 0.410979 0.963662 +vt 0.401536 0.963662 +vt 0.401536 0.968260 +vt 0.414746 0.970267 +vt 0.414746 0.974034 +vt 0.443840 0.950804 +vt 0.443840 0.954571 +vt 0.441378 0.951259 +vt 0.054658 0.970667 +vt 0.050093 0.967811 +vt 0.054658 0.967811 +vt 0.441833 0.961177 +vt 0.438066 0.956578 +vt 0.441833 0.956578 +vt 0.436059 0.954571 +vt 0.431460 0.950804 +vt 0.436059 0.950804 +vt 0.448438 0.954571 +vt 0.448438 0.950804 +vt 0.441378 0.954116 +vt 0.438521 0.954116 +vt 0.438066 0.948798 +vt 0.441833 0.948798 +vt 0.438521 0.951259 +vt 0.047236 0.964954 +vt 0.050093 0.962097 +vt 0.050093 0.964954 +vt 0.054658 0.964954 +vt 0.054658 0.973525 +vt 0.050093 0.970667 +vt 0.054657 0.962097 +vt 0.442421 0.955159 +vt 0.442421 0.950217 +vt 0.437478 0.950217 +vt 0.437478 0.955159 +vt 0.448438 0.947966 +vt 0.443840 0.947966 +vt 0.443840 0.957409 +vt 0.448438 0.957409 +vt 0.436059 0.947966 +vt 0.431460 0.947966 +vt 0.431461 0.957409 +vt 0.436059 0.957409 +vt 0.438066 0.944199 +vt 0.441833 0.944199 +vt 0.675687 0.855341 +vt 0.688907 0.888487 +vt 0.675687 0.888487 +vt 0.058924 0.934858 +vt 0.025779 0.938038 +vt 0.025779 0.934858 +vt 0.058924 0.938038 +vt 0.025779 0.951258 +vt 0.058924 0.951258 +vt 0.025779 0.954437 +vt 0.022599 0.951258 +vt 0.022599 0.938038 +vt 0.062104 0.938038 +vt 0.861382 0.862758 +vt 0.828236 0.870202 +vt 0.828236 0.862758 +vt 0.861382 0.870202 +vt 0.828236 0.883423 +vt 0.861382 0.883423 +vt 0.828236 0.890867 +vt 0.820792 0.883423 +vt 0.820792 0.870202 +vt 0.868826 0.870202 +vt 0.376465 0.974034 +vt 0.376465 0.970267 +vt 0.378927 0.973579 +vt 0.797157 0.964005 +vt 0.792593 0.961147 +vt 0.797157 0.961147 +vt 0.378472 0.963662 +vt 0.382239 0.968260 +vt 0.378472 0.968260 +vt 0.384246 0.970267 +vt 0.388845 0.974034 +vt 0.384246 0.974034 +vt 0.371867 0.970267 +vt 0.371867 0.974034 +vt 0.378927 0.970722 +vt 0.381784 0.970722 +vt 0.382239 0.976041 +vt 0.378472 0.976041 +vt 0.381784 0.973579 +vt 0.789736 0.958290 +vt 0.792593 0.955434 +vt 0.792593 0.958290 +vt 0.797157 0.958290 +vt 0.797157 0.966861 +vt 0.792593 0.964005 +vt 0.797157 0.955434 +vt 0.377884 0.969679 +vt 0.377884 0.974622 +vt 0.382827 0.974622 +vt 0.382827 0.969679 +vt 0.371867 0.976872 +vt 0.376465 0.976872 +vt 0.376465 0.967429 +vt 0.371867 0.967429 +vt 0.384246 0.976872 +vt 0.388845 0.976872 +vt 0.388844 0.967429 +vt 0.384246 0.967429 +vt 0.382239 0.980639 +vt 0.378472 0.980639 +vt 0.775471 0.967813 +vt 0.771704 0.967813 +vt 0.775016 0.965351 +vt 0.756238 0.968067 +vt 0.751673 0.965210 +vt 0.756238 0.965210 +vt 0.765099 0.965806 +vt 0.769697 0.962039 +vt 0.769697 0.965806 +vt 0.771704 0.960032 +vt 0.775471 0.955434 +vt 0.775471 0.960032 +vt 0.771704 0.972411 +vt 0.775471 0.972411 +vt 0.772159 0.965351 +vt 0.772159 0.962494 +vt 0.777478 0.962039 +vt 0.777478 0.965806 +vt 0.775016 0.962494 +vt 0.748816 0.962353 +vt 0.751673 0.959496 +vt 0.751673 0.962353 +vt 0.756238 0.962353 +vt 0.756238 0.970924 +vt 0.751673 0.968067 +vt 0.756238 0.959496 +vt 0.771116 0.966394 +vt 0.776059 0.966394 +vt 0.776059 0.961451 +vt 0.771116 0.961451 +vt 0.778309 0.972411 +vt 0.778309 0.967813 +vt 0.768866 0.967813 +vt 0.768866 0.972411 +vt 0.778309 0.960032 +vt 0.778309 0.955434 +vt 0.768866 0.955434 +vt 0.768866 0.960032 +vt 0.782076 0.962039 +vt 0.782076 0.965806 +vt 0.512483 0.943731 +vt 0.525704 0.976877 +vt 0.512483 0.976877 +vt 0.074406 0.963605 +vt 0.107552 0.960426 +vt 0.107552 0.963605 +vt 0.074406 0.960426 +vt 0.107552 0.947205 +vt 0.074406 0.947205 +vt 0.107552 0.944026 +vt 0.110731 0.947205 +vt 0.110731 0.960426 +vt 0.071227 0.960426 +vt 0.030043 0.901723 +vt 0.063189 0.894279 +vt 0.063189 0.901723 +vt 0.030043 0.894279 +vt 0.063189 0.881059 +vt 0.030043 0.881059 +vt 0.063189 0.873614 +vt 0.070633 0.881059 +vt 0.070633 0.894279 +vt 0.022599 0.894279 +vt 0.660584 0.966766 +vt 0.656817 0.966766 +vt 0.660129 0.964304 +vt 0.977236 0.397669 +vt 0.972672 0.394812 +vt 0.977236 0.394812 +vt 0.650212 0.964759 +vt 0.654810 0.960992 +vt 0.654810 0.964759 +vt 0.656817 0.958985 +vt 0.660584 0.954387 +vt 0.660584 0.958985 +vt 0.656817 0.971364 +vt 0.660584 0.971364 +vt 0.657272 0.964304 +vt 0.657272 0.961447 +vt 0.662591 0.960992 +vt 0.662591 0.964759 +vt 0.660129 0.961447 +vt 0.969815 0.391955 +vt 0.972672 0.389098 +vt 0.972672 0.391955 +vt 0.977236 0.391955 +vt 0.977236 0.400526 +vt 0.972672 0.397669 +vt 0.977236 0.389098 +vt 0.656229 0.965347 +vt 0.661172 0.965347 +vt 0.661172 0.960404 +vt 0.656229 0.960404 +vt 0.663422 0.971364 +vt 0.663422 0.966766 +vt 0.653979 0.966766 +vt 0.653979 0.971364 +vt 0.663422 0.958985 +vt 0.663422 0.954387 +vt 0.653979 0.954387 +vt 0.653979 0.958985 +vt 0.667189 0.960992 +vt 0.667189 0.964759 +vt 0.352279 0.963111 +vt 0.348512 0.963111 +vt 0.351824 0.960649 +vt 0.558839 0.924580 +vt 0.563403 0.927437 +vt 0.558839 0.927437 +vt 0.341907 0.961105 +vt 0.346505 0.957337 +vt 0.346505 0.961105 +vt 0.348512 0.955331 +vt 0.352279 0.950732 +vt 0.352279 0.955331 +vt 0.348512 0.967710 +vt 0.352279 0.967710 +vt 0.348967 0.960649 +vt 0.348967 0.957793 +vt 0.354286 0.957337 +vt 0.354286 0.961105 +vt 0.351824 0.957793 +vt 0.566260 0.930294 +vt 0.563403 0.933151 +vt 0.563403 0.930294 +vt 0.558839 0.930294 +vt 0.558839 0.921723 +vt 0.563403 0.924580 +vt 0.558839 0.933151 +vt 0.347924 0.961692 +vt 0.352867 0.961692 +vt 0.352867 0.956750 +vt 0.347924 0.956750 +vt 0.355117 0.967710 +vt 0.355117 0.963111 +vt 0.345674 0.963111 +vt 0.345674 0.967710 +vt 0.355117 0.955331 +vt 0.355117 0.950732 +vt 0.345674 0.950732 +vt 0.345674 0.955331 +vt 0.358885 0.957337 +vt 0.358885 0.961105 +vt 0.511490 0.390762 +vt 0.194788 0.963641 +vt 0.197968 0.960462 +vt 0.854025 0.687732 +vt 0.861469 0.695177 +vt 0.029205 0.979074 +vt 0.022599 0.972469 +vt 0.416370 0.813782 +vt 0.419227 0.825210 +vt 0.707648 0.967590 +vt 0.714253 0.974195 +vt 0.681643 0.935299 +vt 0.684500 0.946727 +vt 0.903014 0.647143 +vt 0.493260 0.963310 +vt 0.496439 0.960131 +vt 0.772543 0.862758 +vt 0.765099 0.870202 +vt 0.397769 0.970267 +vt 0.404374 0.963662 +vt 0.859880 0.956788 +vt 0.862737 0.968215 +vt 0.438066 0.961177 +vt 0.431460 0.954571 +vt 0.047236 0.962097 +vt 0.050093 0.973525 +vt 0.688907 0.855341 +vt 0.058924 0.954437 +vt 0.062104 0.951258 +vt 0.861382 0.890867 +vt 0.868826 0.883423 +vt 0.382239 0.963662 +vt 0.388844 0.970267 +vt 0.789736 0.955434 +vt 0.792593 0.966861 +vt 0.765099 0.962039 +vt 0.771704 0.955434 +vt 0.748816 0.959496 +vt 0.751673 0.970924 +vt 0.525704 0.943731 +vt 0.074406 0.944026 +vt 0.071227 0.947205 +vt 0.030043 0.873614 +vt 0.022599 0.881059 +vt 0.650212 0.960992 +vt 0.656817 0.954387 +vt 0.969815 0.389098 +vt 0.972672 0.400526 +vt 0.341907 0.957337 +vt 0.348512 0.950732 +vt 0.566260 0.933151 +vt 0.563403 0.921723 +vt 0.962155 0.498815 +vt 0.946315 0.483530 +vt 0.951470 0.482388 +vt 0.292551 0.908723 +vt 0.297329 0.864080 +vt 0.297329 0.909300 +vt 0.702534 0.910123 +vt 0.698853 0.936428 +vt 0.697276 0.909630 +vt 0.377124 0.887972 +vt 0.384948 0.956002 +vt 0.371867 0.888476 +vt 0.373391 0.861674 +vt 0.378558 0.862768 +vt 0.095346 0.841810 +vt 0.078293 0.866016 +vt 0.079778 0.831435 +vt 0.411927 0.362717 +vt 0.436133 0.345664 +vt 0.436133 0.369882 +vt 0.697276 0.721157 +vt 0.705975 0.766143 +vt 0.697276 0.766143 +vt 0.697277 0.834419 +vt 0.705975 0.834419 +vt 0.574383 0.786681 +vt 0.621341 0.717354 +vt 0.621341 0.786681 +vt 0.180764 0.899749 +vt 0.165628 0.923956 +vt 0.158463 0.899749 +vt 0.140691 0.868091 +vt 0.125555 0.843884 +vt 0.140691 0.831438 +vt 0.861720 0.571207 +vt 0.854025 0.526267 +vt 0.861720 0.524250 +vt 0.604921 0.904982 +vt 0.601436 0.878650 +vt 0.606591 0.879793 +vt 0.612106 0.973083 +vt 0.599659 0.905436 +vt 0.949800 0.457198 +vt 0.944539 0.456744 +vt 0.140691 0.936367 +vt 0.118390 0.868091 +vt 0.478418 0.836683 +vt 0.546694 0.828988 +vt 0.546694 0.836683 +vt 0.854026 0.639483 +vt 0.854025 0.571207 +vt 0.710224 0.842078 +vt 0.715387 0.843068 +vt 0.956985 0.389098 +vt 0.962155 0.390049 +vt 0.929895 0.931209 +vt 0.924414 0.939908 +vt 0.924414 0.931077 +vt 0.701542 0.386315 +vt 0.701542 0.391795 +vt 0.696582 0.388057 +vt 0.949162 0.319186 +vt 0.944539 0.339181 +vt 0.944539 0.323332 +vt 0.929894 0.947567 +vt 0.924414 0.969867 +vt 0.924414 0.947567 +vt 0.903086 0.747560 +vt 0.908566 0.739865 +vt 0.908566 0.747692 +vt 0.676304 0.386315 +vt 0.676304 0.392525 +vt 0.671927 0.389227 +vt 0.688923 0.391795 +vt 0.683963 0.388057 +vt 0.688923 0.386315 +vt 0.739610 0.391572 +vt 0.734440 0.388131 +vt 0.739610 0.386315 +vt 0.753440 0.931842 +vt 0.748816 0.951837 +vt 0.748816 0.927696 +vt 0.906363 0.639483 +vt 0.906363 0.571207 +vt 0.333757 0.943873 +vt 0.309540 0.959721 +vt 0.309540 0.943873 +vt 0.333757 0.938393 +vt 0.309540 0.938393 +vt 0.504409 0.345664 +vt 0.504409 0.369882 +vt 0.750618 0.834419 +vt 0.903086 0.947567 +vt 0.908566 0.969867 +vt 0.903086 0.969867 +vt 0.689617 0.717354 +vt 0.689617 0.786681 +vt 0.977306 0.524250 +vt 0.985809 0.571207 +vt 0.977306 0.571207 +vt 0.908566 0.804721 +vt 0.903086 0.874048 +vt 0.903086 0.804721 +vt 0.929895 0.886566 +vt 0.924415 0.886566 +vt 0.834425 0.786823 +vt 0.765099 0.739865 +vt 0.834425 0.739865 +vt 0.431460 0.881326 +vt 0.478418 0.881326 +vt 0.924415 0.874048 +vt 0.908566 0.874048 +vt 0.903086 0.886566 +vt 0.908566 0.931077 +vt 0.903086 0.931209 +vt 0.924415 0.792203 +vt 0.908566 0.792203 +vt 0.834425 0.855099 +vt 0.765099 0.786823 +vt 0.908566 0.886566 +vt 0.850784 0.808141 +vt 0.895427 0.855099 +vt 0.850784 0.855099 +vt 0.416370 0.599271 +vt 0.421147 0.529944 +vt 0.421147 0.599271 +vt 0.590697 0.386315 +vt 0.635340 0.391092 +vt 0.590119 0.391092 +vt 0.906363 0.524250 +vt 0.705975 0.719185 +vt 0.750618 0.766143 +vt 0.546694 0.881326 +vt 0.903086 0.792203 +vt 0.929895 0.804721 +vt 0.929895 0.874048 +vt 0.850784 0.739865 +vt 0.895427 0.808141 +vt 0.929895 0.792203 +vt 0.924415 0.747692 +vt 0.929895 0.747560 +vt 0.560047 0.823690 +vt 0.564825 0.868333 +vt 0.560047 0.868333 +vt 0.470685 0.382319 +vt 0.401359 0.377541 +vt 0.470685 0.377541 +vt 0.960886 0.173680 +vt 0.964770 0.241956 +vt 0.960886 0.241956 +vt 0.960886 0.334373 +vt 0.964770 0.381331 +vt 0.960886 0.381331 +vt 0.989692 0.778858 +vt 0.985809 0.731901 +vt 0.989692 0.731901 +vt 0.924415 0.804721 +vt 0.985809 0.663625 +vt 0.989692 0.663625 +vt 0.989692 0.571207 +vt 0.985809 0.524250 +vt 0.989692 0.524250 +vt 0.912276 0.191579 +vt 0.896428 0.260905 +vt 0.896428 0.191579 +vt 0.118390 0.965355 +vt 0.140690 0.970835 +vt 0.118390 0.970835 +vt 0.560047 0.770811 +vt 0.564825 0.815454 +vt 0.560047 0.815454 +vt 0.964770 0.334373 +vt 0.973272 0.381331 +vt 0.977306 0.731901 +vt 0.985809 0.778858 +vt 0.977306 0.778858 +vt 0.964770 0.126722 +vt 0.973272 0.173680 +vt 0.964770 0.173680 +vt 0.977306 0.663625 +vt 0.973272 0.241956 +vt 0.985809 0.639483 +vt 0.977306 0.639483 +vt 0.964770 0.266097 +vt 0.973272 0.334373 +vt 0.973423 0.571207 +vt 0.973423 0.639483 +vt 0.960886 0.126722 +vt 0.977156 0.241956 +vt 0.977156 0.173680 +vt 0.989692 0.639483 +vt 0.977156 0.381331 +vt 0.977156 0.334373 +vt 0.960886 0.266097 +vt 0.973272 0.126722 +vt 0.977156 0.126722 +vt 0.973272 0.266097 +vt 0.973423 0.524250 +vt 0.973423 0.663625 +vt 0.973423 0.731901 +vt 0.973423 0.778858 +vt 0.977156 0.266097 +vt 0.937554 0.874470 +vt 0.941182 0.873085 +vt 0.941182 0.877578 +vt 0.900865 0.689333 +vt 0.904493 0.687948 +vt 0.904493 0.692441 +vt 0.937554 0.900498 +vt 0.941182 0.897390 +vt 0.941182 0.901883 +vt 0.889793 0.689802 +vt 0.893206 0.687948 +vt 0.893206 0.692725 +vt 0.974157 0.408185 +vt 0.973894 0.412060 +vt 0.969815 0.410177 +vt 0.870080 0.728312 +vt 0.870080 0.732196 +vt 0.865882 0.729914 +vt 0.937554 0.886623 +vt 0.941182 0.885237 +vt 0.941182 0.889731 +vt 0.862539 0.389233 +vt 0.862539 0.393117 +vt 0.858341 0.390835 +vt 0.937554 0.741874 +vt 0.941573 0.752384 +vt 0.937554 0.750376 +vt 0.974157 0.420558 +vt 0.937554 0.831087 +vt 0.941573 0.820577 +vt 0.941573 0.833096 +vt 0.937554 0.790731 +vt 0.941573 0.780221 +vt 0.941573 0.792740 +vt 0.180764 0.831473 +vt 0.158464 0.831473 +vt 0.908566 0.947567 +vt 0.924415 0.739865 +vt 0.929895 0.739865 +vt 0.617276 0.863365 +vt 0.615741 0.855341 +vt 0.974840 0.486710 +vt 0.969815 0.494974 +vt 0.970038 0.487022 +vt 0.292551 0.918134 +vt 0.297576 0.926398 +vt 0.292774 0.926086 +vt 0.118889 0.775223 +vt 0.123843 0.706772 +vt 0.124265 0.775055 +vt 0.756046 0.920036 +vt 0.748816 0.898762 +vt 0.756046 0.894958 +vt 0.150421 0.614029 +vt 0.145357 0.682370 +vt 0.145048 0.614189 +vt 0.148468 0.577451 +vt 0.145067 0.569966 +vt 0.433477 0.828988 +vt 0.478418 0.828988 +vt 0.123824 0.682440 +vt 0.124085 0.614116 +vt 0.145233 0.774949 +vt 0.145374 0.706709 +vt 0.145361 0.819164 +vt 0.124627 0.565415 +vt 0.121057 0.569182 +vt 0.118719 0.613964 +vt 0.148744 0.811669 +vt 0.150597 0.775094 +vt 0.150804 0.706823 +vt 0.118390 0.682322 +vt 0.121349 0.820020 +vt 0.124930 0.823778 +vt 0.121773 0.702573 +vt 0.147427 0.686567 +vt 0.842086 0.739865 +vt 0.842085 0.808141 +vt 0.102511 0.866016 +vt 0.078293 0.934292 +vt 0.309540 0.965201 +vt 0.333757 0.959721 +vt 0.333757 0.965201 +vt 0.908566 0.939908 +vt 0.903086 0.939908 +vt 0.390110 0.847611 +vt 0.387329 0.838144 +vt 0.715387 0.950181 +vt 0.704017 0.935324 +vt 0.969815 0.504122 +vt 0.974617 0.513041 +vt 0.969816 0.513041 +vt 0.436262 0.968836 +vt 0.431460 0.977756 +vt 0.431461 0.968836 +vt 0.163923 0.682368 +vt 0.182432 0.706700 +vt 0.163904 0.706645 +vt 0.161863 0.686545 +vt 0.159554 0.579292 +vt 0.164151 0.614096 +vt 0.158785 0.614004 +vt 0.182420 0.682417 +vt 0.184482 0.686608 +vt 0.158622 0.775163 +vt 0.164011 0.775077 +vt 0.842085 0.853127 +vt 0.182190 0.775035 +vt 0.182308 0.614138 +vt 0.162601 0.569894 +vt 0.183172 0.565415 +vt 0.162456 0.819349 +vt 0.187684 0.614037 +vt 0.186007 0.820003 +vt 0.187559 0.775139 +vt 0.187859 0.706817 +vt 0.012567 0.964099 +vt 0.003830 0.944483 +vt 0.012567 0.939896 +vt 0.158507 0.682251 +vt 0.012607 0.907688 +vt 0.003830 0.927287 +vt 0.007897 0.906755 +vt 0.159300 0.809760 +vt 0.186122 0.569220 +vt 0.896428 0.317934 +vt 0.912276 0.273424 +vt 0.912276 0.317934 +vt 0.313424 0.704790 +vt 0.321926 0.680648 +vt 0.321926 0.704790 +vt 0.576159 0.949773 +vt 0.579645 0.923442 +vt 0.581315 0.948631 +vt 0.890948 0.117046 +vt 0.898643 0.072106 +vt 0.898643 0.119063 +vt 0.301881 0.633691 +vt 0.232554 0.680649 +vt 0.232554 0.633691 +vt 0.626712 0.878650 +vt 0.642552 0.863365 +vt 0.631868 0.879792 +vt 0.728304 0.891885 +vt 0.724624 0.865580 +vt 0.729788 0.866684 +vt 0.240249 0.858158 +vt 0.284892 0.811201 +vt 0.284892 0.858158 +vt 0.081500 0.569163 +vt 0.084333 0.614085 +vt 0.078962 0.613908 +vt 0.896428 0.134549 +vt 0.912276 0.126722 +vt 0.912276 0.134549 +vt 0.896428 0.179060 +vt 0.912276 0.179060 +vt 0.309540 0.862457 +vt 0.326593 0.838251 +vt 0.333758 0.862457 +vt 0.202683 0.923955 +vt 0.217819 0.899749 +vt 0.217819 0.936402 +vt 0.592000 0.965058 +vt 0.590465 0.973082 +vt 0.364208 0.874797 +vt 0.349071 0.850590 +vt 0.364208 0.838144 +vt 0.399293 0.932471 +vt 0.403026 0.906173 +vt 0.404460 0.931377 +vt 0.105273 0.706731 +vt 0.105312 0.682391 +vt 0.107368 0.686578 +vt 0.689617 0.847682 +vt 0.621341 0.803039 +vt 0.689617 0.803039 +vt 0.219353 0.614177 +vt 0.200968 0.682546 +vt 0.201178 0.614191 +vt 0.917756 0.260905 +vt 0.917756 0.191579 +vt 0.301881 0.688308 +vt 0.232554 0.735265 +vt 0.232554 0.688308 +vt 0.689617 0.794341 +vt 0.621341 0.794340 +vt 0.104848 0.774990 +vt 0.083730 0.706630 +vt 0.937554 0.862318 +vt 0.941182 0.860933 +vt 0.941182 0.865426 +vt 0.961879 0.778858 +vt 0.965763 0.731901 +vt 0.965763 0.778858 +vt 0.576354 0.794340 +vt 0.630197 0.904981 +vt 0.416370 0.806123 +vt 0.421147 0.761480 +vt 0.421147 0.806123 +vt 0.546649 0.369882 +vt 0.614925 0.345664 +vt 0.614925 0.369882 +vt 0.969815 0.470786 +vt 0.974840 0.479050 +vt 0.970038 0.478738 +vt 0.081713 0.686492 +vt 0.083790 0.682300 +vt 0.105279 0.614229 +vt 0.108851 0.577554 +vt 0.110638 0.614094 +vt 0.200938 0.706829 +vt 0.195717 0.775183 +vt 0.195523 0.706937 +vt 0.862724 0.448315 +vt 0.854026 0.516591 +vt 0.854025 0.448315 +vt 0.554691 0.967948 +vt 0.560171 0.943731 +vt 0.560171 0.967948 +vt 0.854025 0.403329 +vt 0.232554 0.926434 +vt 0.240249 0.926434 +vt 0.558839 0.910259 +vt 0.566068 0.888985 +vt 0.566068 0.914064 +vt 0.586830 0.855341 +vt 0.592000 0.856293 +vt 0.637382 0.973082 +vt 0.642552 0.972131 +vt 0.416012 0.946534 +vt 0.413231 0.956002 +vt 0.224624 0.775254 +vt 0.219458 0.706797 +vt 0.224895 0.706914 +vt 0.714161 0.391795 +vt 0.709202 0.390052 +vt 0.714161 0.386315 +vt 0.110226 0.775160 +vt 0.110731 0.706859 +vt 0.195518 0.899749 +vt 0.217819 0.831473 +vt 0.917756 0.273424 +vt 0.917756 0.318066 +vt 0.953377 0.571207 +vt 0.949494 0.639483 +vt 0.949494 0.571207 +vt 0.313424 0.773066 +vt 0.309540 0.820023 +vt 0.309540 0.773066 +vt 0.012607 0.898163 +vt 0.003830 0.878565 +vt 0.012607 0.873614 +vt 0.313424 0.565415 +vt 0.309540 0.612372 +vt 0.309540 0.565415 +vt 0.321926 0.773066 +vt 0.325810 0.704790 +vt 0.325810 0.773066 +vt 0.838696 0.345664 +vt 0.838696 0.350441 +vt 0.835284 0.347518 +vt 0.953377 0.639483 +vt 0.961879 0.571207 +vt 0.961879 0.639483 +vt 0.313424 0.612372 +vt 0.309540 0.680648 +vt 0.850682 0.393117 +vt 0.846484 0.391514 +vt 0.850682 0.389233 +vt 0.943286 0.003830 +vt 0.943286 0.072106 +vt 0.974157 0.444854 +vt 0.969815 0.442862 +vt 0.973894 0.440979 +vt 0.313424 0.680648 +vt 0.321926 0.612372 +vt 0.621341 0.847682 +vt 0.574383 0.803039 +vt 0.953377 0.663625 +vt 0.961879 0.663625 +vt 0.907367 0.401357 +vt 0.862724 0.401357 +vt 0.416370 0.606930 +vt 0.421147 0.676257 +vt 0.416370 0.676257 +vt 0.949162 0.375128 +vt 0.944539 0.355133 +vt 0.949162 0.350987 +vt 0.953377 0.778858 +vt 0.961879 0.731901 +vt 0.321926 0.820023 +vt 0.325810 0.820023 +vt 0.917756 0.134417 +vt 0.917756 0.126722 +vt 0.965763 0.639483 +vt 0.858223 0.732196 +vt 0.854025 0.729914 +vt 0.858223 0.728312 +vt 0.313424 0.820023 +vt 0.941573 0.760043 +vt 0.937554 0.770554 +vt 0.937554 0.762051 +vt 0.943286 0.119063 +vt 0.309540 0.704790 +vt 0.140690 0.944026 +vt 0.118390 0.949506 +vt 0.118390 0.944026 +vt 0.965763 0.663625 +vt 0.364207 0.943073 +vt 0.341907 0.874797 +vt 0.325810 0.612372 +vt 0.325810 0.680648 +vt 0.721821 0.388057 +vt 0.726781 0.386315 +vt 0.726781 0.391795 +vt 0.890948 0.179060 +vt 0.890948 0.134417 +vt 0.953377 0.731901 +vt 0.416370 0.683917 +vt 0.421147 0.753243 +vt 0.416370 0.753243 +vt 0.197431 0.569219 +vt 0.195796 0.614081 +vt 0.735994 0.959930 +vt 0.741157 0.958941 +vt 0.688907 0.916141 +vt 0.684284 0.896147 +vt 0.688907 0.900293 +vt 0.890948 0.003830 +vt 0.898643 0.003830 +vt 0.890948 0.318066 +vt 0.896428 0.326765 +vt 0.890948 0.326765 +vt 0.859880 0.944541 +vt 0.868617 0.924925 +vt 0.868617 0.949128 +vt 0.941573 0.800399 +vt 0.937554 0.810909 +vt 0.937554 0.802407 +vt 0.301881 0.565415 +vt 0.232554 0.565415 +vt 0.554691 0.943731 +vt 0.538843 0.967948 +vt 0.538843 0.943731 +vt 0.140690 0.965355 +vt 0.140690 0.949506 +vt 0.965763 0.571207 +vt 0.284892 0.926434 +vt 0.890948 0.191579 +vt 0.890948 0.260905 +vt 0.105485 0.570061 +vt 0.890948 0.273424 +vt 0.747269 0.388131 +vt 0.752440 0.386315 +vt 0.752440 0.391572 +vt 0.912276 0.260905 +vt 0.560047 0.717931 +vt 0.564825 0.762574 +vt 0.560047 0.762574 +vt 0.961879 0.524250 +vt 0.835284 0.361023 +vt 0.838696 0.358101 +vt 0.838696 0.362878 +vt 0.533363 0.967948 +vt 0.533363 0.943731 +vt 0.104784 0.819259 +vt 0.083864 0.775023 +vt 0.664268 0.392525 +vt 0.659891 0.389612 +vt 0.664268 0.386315 +vt 0.941573 0.840755 +vt 0.937554 0.851265 +vt 0.937554 0.842763 +vt 0.917756 0.179060 +vt 0.953377 0.524250 +vt 0.949494 0.524250 +vt 0.907367 0.448315 +vt 0.862724 0.516591 +vt 0.896428 0.273424 +vt 0.937554 0.912650 +vt 0.941182 0.909542 +vt 0.941182 0.914035 +vt 0.974157 0.432481 +vt 0.219475 0.682519 +vt 0.221529 0.686702 +vt 0.912276 0.326765 +vt 0.080747 0.819998 +vt 0.078491 0.775165 +vt 0.917756 0.326765 +vt 0.232554 0.813217 +vt 0.240249 0.811200 +vt 0.741157 0.851828 +vt 0.652232 0.391117 +vt 0.643313 0.386315 +vt 0.652232 0.386315 +vt 0.448724 0.978069 +vt 0.443922 0.969150 +vt 0.448724 0.968836 +vt 0.198886 0.702648 +vt 0.223890 0.809813 +vt 0.219241 0.775160 +vt 0.220975 0.569932 +vt 0.200390 0.565415 +vt 0.195518 0.682427 +vt 0.321926 0.565415 +vt 0.301881 0.735265 +vt 0.232554 0.803541 +vt 0.297329 0.811200 +vt 0.292551 0.855843 +vt 0.292551 0.811200 +vt 0.748817 0.842655 +vt 0.753594 0.887298 +vt 0.748816 0.887298 +vt 0.224010 0.579344 +vt 0.224725 0.614094 +vt 0.110731 0.682286 +vt 0.201081 0.775087 +vt 0.197195 0.820002 +vt 0.974840 0.452513 +vt 0.969815 0.460777 +vt 0.970038 0.452825 +vt 0.410851 0.838144 +vt 0.416012 0.839143 +vt 0.949494 0.778858 +vt 0.949494 0.731901 +vt 0.949494 0.663625 +vt 0.309540 0.930733 +vt 0.333758 0.930733 +vt 0.108202 0.811773 +vt 0.965763 0.524250 +vt 0.325810 0.565415 +vt 0.522443 0.362717 +vt 0.546649 0.345664 +vt 0.078342 0.682167 +vt 0.078293 0.706739 +vt 0.835284 0.373460 +vt 0.838696 0.370537 +vt 0.838696 0.375315 +vt 0.896428 0.126722 +vt 0.890948 0.126722 +vt 0.224895 0.682411 +vt 0.220721 0.819387 +vt 0.200139 0.823813 +vt 0.249890 0.529944 +vt 0.181109 0.557756 +vt 0.181109 0.529944 +vt 0.925415 0.126722 +vt 0.953227 0.171943 +vt 0.925415 0.171943 +vt 0.953227 0.184461 +vt 0.925415 0.184461 +vt 0.953227 0.253788 +vt 0.925415 0.253788 +vt 0.088187 0.529944 +vt 0.061342 0.557756 +vt 0.061342 0.529944 +vt 0.033993 0.557754 +vt 0.033993 0.529946 +vt 0.914023 0.581989 +vt 0.941834 0.651315 +vt 0.914023 0.651315 +vt 0.914023 0.569470 +vt 0.941834 0.581989 +vt 0.811014 0.013269 +vt 0.811013 0.003830 +vt 0.838824 0.013269 +vt 0.156968 0.557756 +vt 0.156968 0.529944 +vt 0.088187 0.557756 +vt 0.838825 0.181109 +vt 0.811013 0.156968 +vt 0.838825 0.156968 +vt 0.838823 0.304084 +vt 0.811013 0.276736 +vt 0.838825 0.276736 +vt 0.838825 0.249890 +vt 0.811013 0.181109 +vt 0.811013 0.249891 +vt 0.013063 0.557755 +vt 0.003830 0.557756 +vt 0.013063 0.529945 +vt 0.914023 0.524250 +vt 0.941834 0.569470 +vt 0.838825 0.061342 +vt 0.811015 0.033993 +vt 0.838823 0.033993 +vt 0.325014 0.557755 +vt 0.304084 0.557754 +vt 0.325014 0.529945 +vt 0.304084 0.529946 +vt 0.276735 0.557756 +vt 0.276735 0.529944 +vt 0.941834 0.663834 +vt 0.914023 0.663834 +vt 0.953227 0.266306 +vt 0.925415 0.266306 +vt 0.953227 0.311527 +vt 0.925415 0.311527 +vt 0.811014 0.324809 +vt 0.811015 0.304084 +vt 0.838824 0.324809 +vt 0.941834 0.709054 +vt 0.914023 0.709054 +vt 0.838825 0.088187 +vt 0.811013 0.061342 +vt 0.811013 0.088187 +vt 0.249890 0.557756 +vt 0.960620 0.506839 +vt 0.292551 0.864080 +vt 0.390110 0.955002 +vt 0.401359 0.346858 +vt 0.574383 0.717354 +vt 0.180764 0.936403 +vt 0.617276 0.972131 +vt 0.118391 0.936367 +vt 0.861720 0.639483 +vt 0.929895 0.939908 +vt 0.949162 0.343327 +vt 0.929894 0.969867 +vt 0.903086 0.739865 +vt 0.753440 0.947690 +vt 0.431460 0.836683 +vt 0.765099 0.855099 +vt 0.416370 0.529944 +vt 0.635340 0.386315 +vt 0.750618 0.719186 +vt 0.895427 0.739865 +vt 0.564825 0.823113 +vt 0.401359 0.382319 +vt 0.564825 0.770234 +vt 0.941573 0.739865 +vt 0.970202 0.422690 +vt 0.937554 0.822585 +vt 0.937554 0.782229 +vt 0.974840 0.496149 +vt 0.297576 0.916959 +vt 0.118391 0.706895 +vt 0.750927 0.919379 +vt 0.150804 0.682252 +vt 0.121754 0.686636 +vt 0.147444 0.702513 +vt 0.102511 0.934292 +vt 0.712839 0.959930 +vt 0.974617 0.503808 +vt 0.436262 0.978069 +vt 0.158463 0.706753 +vt 0.161839 0.702446 +vt 0.184497 0.702510 +vt 0.187859 0.682307 +vt 0.183054 0.823814 +vt 0.007855 0.965022 +vt 0.012607 0.932237 +vt 0.574383 0.922987 +vt 0.890948 0.072106 +vt 0.301881 0.680649 +vt 0.641017 0.855341 +vt 0.723046 0.892378 +vt 0.085084 0.565415 +vt 0.310734 0.827683 +vt 0.397769 0.905669 +vt 0.107356 0.702525 +vt 0.624936 0.905436 +vt 0.416370 0.760902 +vt 0.974840 0.469611 +vt 0.081667 0.702429 +vt 0.232554 0.858158 +vt 0.560950 0.889642 +vt 0.195519 0.831472 +vt 0.007897 0.899096 +vt 0.574383 0.847682 +vt 0.421147 0.606930 +vt 0.944539 0.370981 +vt 0.941573 0.772562 +vt 0.341907 0.943073 +vt 0.421147 0.683917 +vt 0.684284 0.920288 +vt 0.863905 0.924002 +vt 0.941573 0.812918 +vt 0.564825 0.717354 +vt 0.084313 0.823776 +vt 0.941573 0.853273 +vt 0.907367 0.516591 +vt 0.970202 0.430349 +vt 0.221528 0.702603 +vt 0.738610 0.842078 +vt 0.642999 0.391117 +vt 0.443923 0.978069 +vt 0.198893 0.686746 +vt 0.301881 0.803541 +vt 0.297329 0.856421 +vt 0.753594 0.842078 +vt 0.974840 0.461952 +vt 0.512068 0.347149 +vt 0.953227 0.126722 +vt 0.838825 0.003830 +vt 0.003830 0.529944 +vt 0.941834 0.524250 +vt 0.334248 0.529944 +vt 0.334248 0.557756 +vt 0.838825 0.334248 +vt 0.811013 0.334248 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.8722 0.3210 -0.3692 +vn 0.8648 0.4236 -0.2696 +vn 0.8609 0.4168 -0.2918 +vn 0.8326 0.0701 -0.5495 +vn 0.8299 0.0000 -0.5579 +vn 0.8355 0.0676 -0.5453 +vn 0.8632 -0.4995 0.0739 +vn 0.8725 -0.4038 0.2752 +vn 0.8632 -0.4998 0.0712 +vn 0.8632 -0.4995 -0.0739 +vn 0.8619 -0.5070 0.0000 +vn 0.8632 -0.4998 -0.0712 +vn 0.8725 -0.4037 -0.2752 +vn 0.8580 -0.3995 -0.3228 +vn 0.8632 0.4995 0.0739 +vn 0.8648 0.4236 0.2696 +vn 0.8609 0.4168 0.2918 +vn 0.8619 0.5070 0.0000 +vn 0.8632 0.4998 0.0712 +vn 0.8632 0.4995 -0.0739 +vn 0.8632 0.4998 -0.0712 +vn 0.7567 0.0000 -0.6538 +vn 0.7439 -0.1827 0.6428 +vn 0.7477 -0.1538 0.6460 +vn 0.6913 -0.4066 0.5973 +vn 0.9801 -0.1984 0.0000 +vn 0.9930 -0.1185 0.0000 +vn 0.7567 0.0000 0.6538 +vn 0.7477 0.1538 0.6460 +vn 0.6913 0.4066 0.5973 +vn 0.7439 0.1827 0.6428 +vn 0.7477 0.1538 -0.6460 +vn 0.6913 0.4066 -0.5973 +vn 0.7439 0.1827 -0.6428 +vn 0.6913 -0.4066 -0.5973 +vn 0.7477 -0.1538 -0.6460 +vn 0.7439 -0.1827 -0.6428 +vn 0.9930 0.1185 0.0000 +vn 0.9801 0.1984 0.0000 +vn 0.9957 0.0000 -0.0928 +vn 0.8324 -0.0604 0.5508 +vn 0.8299 0.0000 0.5579 +vn 0.8325 -0.0626 0.5505 +vn 0.8324 -0.0604 -0.5508 +vn 0.5171 0.8559 0.0000 +vn 0.5116 0.8469 0.1446 +vn 0.5123 0.8481 0.1351 +vn 0.5123 0.8481 -0.1351 +vn -0.7477 0.1538 -0.6460 +vn -0.7567 0.0000 -0.6538 +vn -0.7439 0.1827 -0.6428 +vn 0.8326 0.0701 0.5495 +vn 0.9957 0.0000 0.0928 +vn 0.5171 -0.8559 0.0000 +vn 0.5123 -0.8481 0.1351 +vn 0.5116 -0.8469 -0.1446 +vn 0.5123 -0.8481 -0.1351 +vn 0.4884 0.8085 0.3283 +vn 0.4884 -0.8085 0.3283 +vn 0.5116 -0.8469 0.1446 +vn 0.4884 -0.8085 -0.3283 +vn 0.5116 0.8469 -0.1446 +vn 0.4884 0.8085 -0.3283 +vn 0.9865 0.0000 0.1639 +vn 0.9865 0.0000 -0.1639 +vn 0.8722 0.3210 0.3692 +vn 0.8751 0.3187 0.3642 +vn 0.8430 0.1242 -0.5234 +vn 0.8430 0.1242 0.5234 +vn 0.8355 0.0676 0.5453 +vn 0.2232 0.9748 -0.0000 +vn 0.2779 0.9581 -0.0692 +vn 0.2324 0.9726 -0.0011 +vn -0.8691 -0.1186 -0.4803 +vn -0.9219 -0.1215 -0.3680 +vn -0.9296 -0.1218 -0.3478 +vn 0.2231 -0.9748 0.0000 +vn 0.2779 -0.9581 0.0692 +vn 0.2284 -0.9736 0.0008 +vn 0.3872 -0.9217 0.0253 +vn 0.3960 -0.9179 0.0267 +vn 0.9996 0.0000 0.0293 +vn 0.9996 -0.0016 0.0284 +vn 0.9996 0.0000 -0.0293 +vn 0.9985 -0.0090 -0.0543 +vn 0.9996 -0.0016 -0.0284 +vn 0.9985 -0.0090 0.0543 +vn 0.9985 -0.0120 0.0529 +vn 0.5589 0.8281 0.0432 +vn 0.2324 0.9726 0.0011 +vn 0.3872 -0.9217 -0.0253 +vn 0.2284 -0.9736 -0.0008 +vn 0.2779 -0.9581 -0.0692 +vn 0.2226 -0.9725 -0.0683 +vn 0.2226 0.9725 0.0683 +vn 0.2779 0.9581 0.0692 +vn 0.5589 0.8281 -0.0432 +vn 0.5742 0.8175 -0.0453 +vn 0.4856 0.8723 -0.0568 +vn 0.4856 -0.8723 0.0568 +vn 0.9214 -0.2503 -0.2971 +vn 0.9294 -0.2431 -0.2778 +vn 0.9206 -0.2516 0.2987 +vn 0.8580 -0.3995 0.3228 +vn 0.8318 -0.1227 0.5413 +vn 0.8318 -0.1227 -0.5413 +vn 0.4844 0.8730 0.0566 +vn 0.2769 0.9584 0.0690 +vn 0.2769 0.9584 -0.0690 +vn 0.2981 0.9543 -0.0206 +vn 0.2249 0.9743 -0.0160 +vn 0.2223 0.9748 -0.0168 +vn 0.2769 -0.9584 -0.0690 +vn 0.2769 -0.9584 0.0690 +vn 0.4844 -0.8730 0.0566 +vn 0.2223 0.9747 0.0210 +vn 0.2275 0.9736 0.0196 +vn 0.9996 0.0017 -0.0286 +vn 0.9996 0.0000 0.0297 +vn 0.9996 0.0017 0.0286 +vn 0.9985 0.0094 0.0543 +vn 0.9985 0.0121 0.0531 +vn 0.9985 0.0094 -0.0543 +vn 0.9996 0.0000 -0.0297 +vn 0.2224 -0.9750 0.0000 +vn 0.2241 -0.9746 0.0002 +vn 0.2978 -0.9546 -0.0094 +vn 0.2241 -0.9746 -0.0002 +vn 0.2219 -0.9727 -0.0680 +vn -0.8671 0.1251 0.4821 +vn -0.9420 0.1285 0.3099 +vn -0.9524 0.1286 0.2764 +vn 0.2219 0.9727 0.0680 +vn -0.8674 0.1251 -0.4816 +vn -0.9426 0.1285 -0.3081 +vn -0.8318 0.1227 -0.5413 +vn 0.3700 0.9289 0.0158 +vn 0.3782 0.9256 0.0143 +vn 0.2978 -0.9546 0.0094 +vn 0.3015 -0.9534 0.0098 +vn -0.8648 0.4236 0.2696 +vn -0.8632 0.4995 0.0739 +vn -0.8609 0.4168 0.2918 +vn -0.8648 0.4236 -0.2696 +vn -0.8722 0.3210 -0.3692 +vn -0.8609 0.4168 -0.2918 +vn -0.8632 -0.4995 0.0739 +vn -0.8725 -0.4038 0.2752 +vn -0.8580 -0.3995 0.3228 +vn -0.5589 0.8281 -0.0432 +vn -0.2324 0.9726 -0.0011 +vn -0.2232 0.9748 -0.0000 +vn -0.8722 0.3210 0.3692 +vn -0.8751 0.3187 0.3642 +vn -0.8725 -0.4037 -0.2752 +vn -0.8632 -0.4995 -0.0739 +vn -0.8580 -0.3995 -0.3228 +vn -0.2779 -0.9581 0.0692 +vn -0.2779 -0.9581 -0.0692 +vn -0.4856 -0.8723 -0.0568 +vn -0.9996 0.0000 0.0297 +vn -0.9996 0.0017 0.0286 +vn -0.7567 0.0000 0.6538 +vn -0.9996 0.0000 0.0293 +vn -0.5123 -0.8481 0.1351 +vn -0.5116 -0.8469 0.1446 +vn -0.4884 -0.8085 0.3283 +vn -0.5116 0.8469 0.1446 +vn -0.5171 0.8559 0.0000 +vn -0.5123 0.8481 0.1351 +vn -0.8632 0.4995 -0.0739 +vn -0.8299 0.0000 -0.5579 +vn -0.8324 -0.0604 -0.5508 +vn -0.8430 0.1242 -0.5234 +vn -0.8355 0.0676 -0.5453 +vn -0.8326 0.0701 -0.5495 +vn -0.4856 0.8723 -0.0568 +vn -0.2779 0.9581 -0.0692 +vn -0.2779 0.9581 0.0692 +vn -0.2284 -0.9736 -0.0008 +vn -0.3872 -0.9217 -0.0253 +vn -0.2231 -0.9748 -0.0000 +vn -0.2769 -0.9584 -0.0690 +vn -0.2224 -0.9750 -0.0000 +vn -0.2219 -0.9727 -0.0680 +vn -0.7439 -0.1827 -0.6428 +vn 0.9219 -0.1215 -0.3680 +vn 0.8691 -0.1186 -0.4803 +vn 0.9296 -0.1218 -0.3478 +vn -0.8619 0.5070 0.0000 +vn -0.9214 -0.2503 -0.2971 +vn -0.9294 -0.2431 -0.2778 +vn -0.2223 0.9747 0.0210 +vn -0.2769 0.9584 -0.0690 +vn -0.2219 0.9727 -0.0680 +vn -0.7439 -0.1827 0.6428 +vn -0.6913 -0.4066 0.5973 +vn -0.7477 -0.1538 0.6460 +vn -0.2226 -0.9725 0.0683 +vn -0.5171 -0.8559 0.0000 +vn -0.5123 0.8481 -0.1351 +vn 0.8674 0.1251 -0.4816 +vn 0.9426 0.1285 -0.3081 +vn 0.9528 0.1286 -0.2749 +vn -0.5123 -0.8481 -0.1351 +vn -0.4884 -0.8085 -0.3283 +vn -0.5116 -0.8469 -0.1446 +vn -0.9801 0.1984 0.0000 +vn -0.9930 0.1185 0.0000 +vn -0.9957 0.0000 -0.0928 +vn -0.4884 0.8085 0.3283 +vn -0.9957 0.0000 0.0928 +vn -0.9865 0.0000 0.1639 +vn -0.7477 0.1538 0.6460 +vn -0.7439 0.1827 0.6428 +vn -0.6913 0.4066 0.5973 +vn -0.8299 0.0000 0.5579 +vn -0.2978 -0.9546 0.0094 +vn -0.2241 -0.9746 0.0002 +vn -0.8619 -0.5070 0.0000 +vn -0.9930 -0.1185 0.0000 +vn -0.9801 -0.1984 0.0000 +vn 0.9420 0.1285 0.3099 +vn 0.8671 0.1251 0.4821 +vn 0.9524 0.1286 0.2764 +vn -0.9865 0.0000 -0.1639 +vn -0.9996 -0.0016 -0.0284 +vn -0.9985 -0.0090 -0.0543 +vn -0.9996 0.0000 -0.0293 +vn -0.6913 0.4066 -0.5973 +vn -0.8324 -0.0604 0.5508 +vn -0.5116 0.8469 -0.1446 +vn -0.4884 0.8085 -0.3283 +vn -0.9985 -0.0090 0.0543 +vn -0.9996 -0.0016 0.0284 +vn -0.6913 -0.4066 -0.5973 +vn -0.7477 -0.1538 -0.6460 +vn -0.2769 0.9584 0.0690 +vn -0.4844 0.8730 0.0566 +vn -0.2324 0.9726 0.0011 +vn -0.5589 0.8281 0.0432 +vn -0.9206 -0.2516 0.2987 +vn -0.8318 -0.1227 0.5413 +vn -0.8318 -0.1227 -0.5413 +vn -0.8325 -0.0626 -0.5505 +vn -0.4844 -0.8730 -0.0566 +vn -0.2769 -0.9584 0.0690 +vn -0.3700 0.9289 0.0158 +vn -0.2275 0.9736 0.0196 +vn -0.9985 0.0094 0.0543 +vn -0.9985 0.0121 0.0531 +vn -0.2219 -0.9727 0.0680 +vn -0.8326 0.0701 0.5495 +vn -0.2249 0.9743 -0.0160 +vn -0.2981 0.9543 -0.0206 +vn -0.2223 0.9748 -0.0168 +vn -0.2226 -0.9725 -0.0683 +vn -0.2241 -0.9746 -0.0002 +vn -0.2978 -0.9546 -0.0094 +vn -0.8355 0.0676 0.5453 +vn -0.8430 0.1242 0.5234 +vn -0.9996 0.0017 -0.0286 +vn -0.3872 -0.9217 0.0253 +vn -0.2284 -0.9736 0.0008 +vn -0.2226 0.9725 -0.0683 +vn -0.2226 0.9725 0.0683 +vn -0.2219 0.9727 0.0680 +vn -0.9985 0.0094 -0.0543 +vn -0.9985 0.0121 -0.0531 +vn 0.0000 0.9897 0.1434 +vn 0.0000 -0.1112 0.9938 +vn 0.0000 0.9897 -0.1434 +vn 0.0000 0.8420 -0.5396 +vn 0.0000 0.4536 -0.8912 +vn 0.0000 -0.2211 0.9753 +vn 0.0000 -0.4536 -0.8912 +vn 0.0000 -0.8420 -0.5396 +vn 0.0000 -0.9897 -0.1434 +vn 0.0000 0.2211 -0.9753 +vn 0.0000 0.1112 -0.9938 +vn 0.0000 -0.8420 0.5396 +vn 0.0000 -0.4536 0.8912 +vn 0.0000 0.2211 0.9753 +vn 0.0000 0.4536 0.8912 +vn 0.0000 0.8420 0.5396 +vn 0.0000 0.1112 0.9938 +vn 0.0000 -0.2211 -0.9753 +vn 0.0000 -0.1112 -0.9938 +vn 0.0000 -0.9897 0.1434 +vn 0.8751 0.3187 -0.3642 +vn 0.8325 -0.0626 -0.5505 +vn 0.8478 0.1172 -0.5172 +vn 0.8478 0.1172 0.5172 +vn 0.2226 0.9725 -0.0683 +vn -0.8478 -0.1172 -0.5172 +vn 0.2226 -0.9725 0.0683 +vn 0.9985 -0.0120 -0.0529 +vn 0.5742 0.8175 0.0453 +vn 0.3960 -0.9179 -0.0267 +vn 0.4856 0.8723 0.0568 +vn 0.4856 -0.8723 -0.0568 +vn 0.9285 -0.2445 0.2794 +vn 0.2219 0.9727 -0.0680 +vn 0.4844 0.8730 -0.0566 +vn 0.3024 0.9530 -0.0199 +vn 0.4844 -0.8730 -0.0566 +vn 0.2219 -0.9727 0.0680 +vn 0.9985 0.0121 -0.0531 +vn 0.3015 -0.9534 -0.0098 +vn -0.8318 0.1227 0.5413 +vn -0.9528 0.1286 -0.2749 +vn -0.8632 0.4998 0.0712 +vn -0.8751 0.3187 -0.3642 +vn -0.8632 -0.4998 0.0712 +vn -0.5742 0.8175 -0.0453 +vn -0.8632 -0.4998 -0.0712 +vn -0.4856 -0.8723 0.0568 +vn -0.8632 0.4998 -0.0712 +vn -0.8478 0.1172 -0.5172 +vn -0.4856 0.8723 0.0568 +vn -0.3960 -0.9179 -0.0267 +vn 0.8478 -0.1172 -0.5172 +vn 0.8318 0.1227 -0.5413 +vn -0.3015 -0.9534 0.0098 +vn 0.8318 0.1227 0.5413 +vn -0.9985 -0.0120 -0.0529 +vn -0.8325 -0.0626 0.5505 +vn -0.9985 -0.0120 0.0529 +vn -0.4844 0.8730 -0.0566 +vn -0.5742 0.8175 0.0453 +vn -0.9285 -0.2445 0.2794 +vn -0.4844 -0.8730 0.0566 +vn -0.3782 0.9256 0.0143 +vn -0.3024 0.9530 -0.0199 +vn -0.3015 -0.9534 -0.0098 +vn -0.8478 0.1172 0.5172 +vn -0.9996 0.0000 -0.0297 +vn -0.3960 -0.9179 0.0267 +s off +f 354/29/7 355/30/7 353/31/7 +f 356/32/8 359/33/8 355/34/8 +f 360/35/9 357/36/9 359/33/9 +f 358/37/10 353/38/10 357/36/10 +f 359/33/11 353/39/11 355/40/11 +f 356/41/12 358/37/12 360/35/12 +f 364/42/8 367/43/8 363/44/8 +f 368/45/9 365/46/9 367/43/9 +f 366/47/10 361/48/10 365/46/10 +f 367/43/11 361/49/11 363/50/11 +f 364/51/12 366/47/12 368/45/12 +f 389/52/9 385/53/9 371/54/9 +f 370/55/12 373/56/12 372/57/12 +f 383/58/12 394/59/12 386/60/12 +f 395/61/10 378/62/10 391/63/10 +f 384/64/8 389/52/8 381/65/8 +f 386/60/9 394/59/9 372/66/9 +f 395/61/9 391/63/9 370/67/9 +f 392/68/9 388/69/9 369/70/9 +f 373/71/9 375/72/9 374/73/9 +f 372/57/8 374/73/8 371/74/8 +f 369/75/10 376/76/10 370/55/10 +f 371/74/11 375/72/11 369/77/11 +f 385/53/9 386/60/9 387/78/9 +f 388/69/9 389/52/9 390/79/9 +f 391/63/9 392/68/9 393/80/9 +f 394/59/9 395/61/9 396/81/9 +f 382/82/13 389/52/13 388/83/13 +f 386/84/14 384/64/14 383/85/14 +f 392/86/15 378/62/15 377/87/15 +f 380/88/16 395/61/16 394/89/16 +f 388/69/11 377/90/11 382/91/11 +f 417/92/9 413/93/9 399/94/9 +f 398/95/12 401/96/12 400/97/12 +f 411/98/12 422/99/12 414/100/12 +f 423/101/10 406/102/10 419/103/10 +f 412/104/8 417/92/8 409/105/8 +f 414/100/9 422/99/9 400/106/9 +f 423/101/9 419/103/9 398/107/9 +f 420/108/9 416/109/9 397/110/9 +f 401/111/9 403/112/9 402/113/9 +f 400/97/8 402/113/8 399/114/8 +f 397/115/10 404/116/10 398/95/10 +f 399/114/11 403/112/11 397/117/11 +f 413/93/9 414/100/9 415/118/9 +f 416/109/9 417/92/9 418/119/9 +f 419/103/9 420/108/9 421/120/9 +f 422/99/9 423/101/9 424/121/9 +f 410/122/13 417/92/13 416/123/13 +f 414/124/14 412/104/14 411/125/14 +f 420/126/15 406/102/15 405/127/15 +f 408/128/16 423/101/16 422/129/16 +f 416/109/11 405/130/11 410/131/11 +f 426/132/7 427/133/7 425/134/7 +f 428/135/8 431/136/8 427/137/8 +f 432/138/9 429/139/9 431/136/9 +f 430/140/10 425/141/10 429/139/10 +f 431/136/11 425/142/11 427/143/11 +f 428/144/12 430/140/12 432/138/12 +f 436/145/8 439/146/8 435/147/8 +f 440/148/9 437/149/9 439/146/9 +f 438/150/10 433/151/10 437/149/10 +f 439/146/11 433/152/11 435/153/11 +f 436/154/12 438/150/12 440/148/12 +f 461/155/9 457/156/9 443/157/9 +f 442/158/12 445/159/12 444/160/12 +f 455/161/12 466/162/12 458/163/12 +f 467/164/10 450/165/10 463/166/10 +f 456/167/8 461/155/8 453/168/8 +f 458/163/9 466/162/9 444/169/9 +f 467/164/9 463/166/9 442/170/9 +f 464/171/9 460/172/9 441/173/9 +f 445/174/9 447/175/9 446/176/9 +f 444/160/8 446/176/8 443/177/8 +f 441/178/10 448/179/10 442/158/10 +f 443/177/11 447/175/11 441/180/11 +f 457/156/9 458/163/9 459/181/9 +f 460/172/9 461/155/9 462/182/9 +f 463/166/9 464/171/9 465/183/9 +f 466/162/9 467/164/9 468/184/9 +f 454/185/13 461/155/13 460/186/13 +f 458/187/14 456/167/14 455/188/14 +f 464/189/15 450/165/15 449/190/15 +f 452/191/16 467/164/16 466/192/16 +f 460/172/11 449/193/11 454/194/11 +f 489/195/9 485/196/9 471/197/9 +f 470/198/12 473/199/12 472/200/12 +f 483/201/12 494/202/12 486/203/12 +f 495/204/10 478/205/10 491/206/10 +f 484/207/8 489/195/8 481/208/8 +f 486/203/9 494/202/9 472/209/9 +f 495/204/9 491/206/9 470/210/9 +f 492/211/9 488/212/9 469/213/9 +f 473/214/9 475/215/9 474/216/9 +f 472/200/8 474/216/8 471/217/8 +f 469/218/10 476/219/10 470/198/10 +f 471/217/11 475/215/11 469/220/11 +f 485/196/9 486/203/9 487/221/9 +f 488/212/9 489/195/9 490/222/9 +f 491/206/9 492/211/9 493/223/9 +f 494/202/9 495/204/9 496/224/9 +f 482/225/13 489/195/13 488/226/13 +f 486/227/14 484/207/14 483/228/14 +f 492/229/15 478/205/15 477/230/15 +f 480/231/16 495/204/16 494/232/16 +f 488/212/11 477/233/11 482/234/11 +f 498/235/7 499/236/7 497/237/7 +f 500/238/8 503/239/8 499/240/8 +f 504/241/9 501/242/9 503/239/9 +f 502/243/10 497/244/10 501/242/10 +f 503/239/11 497/245/11 499/246/11 +f 500/247/12 502/243/12 504/241/12 +f 508/248/8 511/249/8 507/250/8 +f 512/251/9 509/252/9 511/249/9 +f 510/253/10 505/254/10 509/252/10 +f 511/249/11 505/255/11 507/256/11 +f 508/257/12 510/253/12 512/251/12 +f 533/258/9 529/259/9 515/260/9 +f 514/261/12 517/262/12 516/263/12 +f 527/264/12 538/265/12 530/266/12 +f 539/267/10 522/268/10 535/269/10 +f 528/270/8 533/258/8 525/271/8 +f 530/266/9 538/265/9 516/272/9 +f 539/267/9 535/269/9 514/273/9 +f 536/274/9 532/275/9 513/276/9 +f 517/277/9 519/278/9 518/279/9 +f 516/263/8 518/279/8 515/280/8 +f 513/281/10 520/282/10 514/261/10 +f 515/280/11 519/278/11 513/283/11 +f 529/259/9 530/266/9 531/284/9 +f 532/275/9 533/258/9 534/285/9 +f 535/269/9 536/274/9 537/286/9 +f 538/265/9 539/267/9 540/287/9 +f 526/288/13 533/258/13 532/289/13 +f 530/290/14 528/270/14 527/291/14 +f 536/292/15 522/268/15 521/293/15 +f 524/294/16 539/267/16 538/295/16 +f 532/275/11 521/296/11 526/297/11 +f 561/298/9 557/299/9 543/300/9 +f 542/301/12 545/302/12 544/303/12 +f 555/304/12 566/305/12 558/306/12 +f 567/307/10 550/308/10 563/309/10 +f 556/310/8 561/298/8 553/311/8 +f 558/306/9 566/305/9 544/312/9 +f 567/307/9 563/309/9 542/313/9 +f 564/314/9 560/315/9 541/316/9 +f 545/317/9 547/318/9 546/319/9 +f 544/303/8 546/319/8 543/320/8 +f 541/321/10 548/322/10 542/301/10 +f 543/320/11 547/318/11 541/323/11 +f 557/299/9 558/306/9 559/324/9 +f 560/315/9 561/298/9 562/325/9 +f 563/309/9 564/314/9 565/326/9 +f 566/305/9 567/307/9 568/327/9 +f 554/328/13 561/298/13 560/329/13 +f 558/330/14 556/310/14 555/331/14 +f 564/332/15 550/308/15 549/333/15 +f 552/334/16 567/307/16 566/335/16 +f 560/315/11 549/336/11 554/337/11 +f 570/338/7 571/339/7 569/340/7 +f 572/341/8 575/342/8 571/343/8 +f 576/344/9 573/345/9 575/342/9 +f 574/346/10 569/347/10 573/345/10 +f 575/342/11 569/348/11 571/349/11 +f 572/350/12 574/346/12 576/344/12 +f 580/351/8 583/352/8 579/353/8 +f 584/354/9 581/355/9 583/352/9 +f 582/356/10 577/357/10 581/355/10 +f 583/352/11 577/358/11 579/359/11 +f 580/360/12 582/356/12 584/354/12 +f 605/361/9 601/362/9 587/363/9 +f 586/364/12 589/365/12 588/366/12 +f 599/367/12 610/368/12 602/369/12 +f 611/370/10 594/371/10 607/372/10 +f 600/373/8 605/361/8 597/374/8 +f 602/369/9 610/368/9 588/375/9 +f 611/370/9 607/372/9 586/376/9 +f 608/377/9 604/378/9 585/379/9 +f 589/380/9 591/381/9 590/382/9 +f 588/366/8 590/382/8 587/383/8 +f 585/384/10 592/385/10 586/364/10 +f 587/383/11 591/381/11 585/386/11 +f 601/362/9 602/369/9 603/387/9 +f 604/378/9 605/361/9 606/388/9 +f 607/372/9 608/377/9 609/389/9 +f 610/368/9 611/370/9 612/390/9 +f 598/391/13 605/361/13 604/392/13 +f 602/393/14 600/373/14 599/394/14 +f 608/395/15 594/371/15 593/396/15 +f 596/397/16 611/370/16 610/398/16 +f 604/378/11 593/399/11 598/400/11 +f 633/401/9 629/402/9 615/403/9 +f 614/404/12 617/405/12 616/406/12 +f 627/407/12 638/408/12 630/409/12 +f 639/410/10 622/411/10 635/412/10 +f 628/413/8 633/401/8 625/414/8 +f 630/409/9 638/408/9 616/415/9 +f 639/410/9 635/412/9 614/416/9 +f 636/417/9 632/418/9 613/419/9 +f 617/420/9 619/421/9 618/422/9 +f 616/406/8 618/422/8 615/423/8 +f 613/424/10 620/425/10 614/404/10 +f 615/423/11 619/421/11 613/426/11 +f 629/402/9 630/409/9 631/427/9 +f 632/418/9 633/401/9 634/428/9 +f 635/412/9 636/417/9 637/429/9 +f 638/408/9 639/410/9 640/430/9 +f 626/431/13 633/401/13 632/432/13 +f 630/433/14 628/413/14 627/434/14 +f 636/435/15 622/411/15 621/436/15 +f 624/437/16 639/410/16 638/438/16 +f 632/418/11 621/439/11 626/440/11 +f 354/29/7 356/441/7 355/30/7 +f 356/32/8 360/35/8 359/33/8 +f 360/35/9 358/37/9 357/36/9 +f 358/37/10 354/442/10 353/38/10 +f 359/33/11 357/36/11 353/39/11 +f 356/41/12 354/443/12 358/37/12 +f 364/42/8 368/45/8 367/43/8 +f 368/45/9 366/47/9 365/46/9 +f 366/47/10 362/444/10 361/48/10 +f 367/43/11 365/46/11 361/49/11 +f 364/51/12 362/445/12 366/47/12 +f 387/78/9 372/66/9 385/53/9 +f 372/66/9 371/54/9 385/53/9 +f 371/54/9 390/79/9 389/52/9 +f 370/55/12 376/76/12 373/56/12 +f 383/58/12 380/446/12 394/59/12 +f 395/61/10 379/447/10 378/62/10 +f 384/64/8 385/53/8 389/52/8 +f 396/81/9 370/67/9 394/59/9 +f 370/67/9 372/66/9 394/59/9 +f 372/66/9 387/78/9 386/60/9 +f 393/80/9 369/70/9 391/63/9 +f 369/70/9 370/67/9 391/63/9 +f 370/67/9 396/81/9 395/61/9 +f 390/79/9 371/54/9 388/69/9 +f 371/54/9 369/70/9 388/69/9 +f 369/70/9 393/80/9 392/68/9 +f 373/71/9 376/448/9 375/72/9 +f 372/57/8 373/56/8 374/73/8 +f 369/75/10 375/449/10 376/76/10 +f 371/74/11 374/73/11 375/72/11 +f 382/82/13 381/65/13 389/52/13 +f 386/84/14 385/53/14 384/64/14 +f 392/86/15 391/63/15 378/62/15 +f 380/88/16 379/447/16 395/61/16 +f 388/69/11 392/68/11 377/90/11 +f 415/118/9 400/106/9 413/93/9 +f 400/106/9 399/94/9 413/93/9 +f 399/94/9 418/119/9 417/92/9 +f 398/95/12 404/116/12 401/96/12 +f 411/98/12 408/450/12 422/99/12 +f 423/101/10 407/451/10 406/102/10 +f 412/104/8 413/93/8 417/92/8 +f 424/121/9 398/107/9 422/99/9 +f 398/107/9 400/106/9 422/99/9 +f 400/106/9 415/118/9 414/100/9 +f 421/120/9 397/110/9 419/103/9 +f 397/110/9 398/107/9 419/103/9 +f 398/107/9 424/121/9 423/101/9 +f 418/119/9 399/94/9 416/109/9 +f 399/94/9 397/110/9 416/109/9 +f 397/110/9 421/120/9 420/108/9 +f 401/111/9 404/452/9 403/112/9 +f 400/97/8 401/96/8 402/113/8 +f 397/115/10 403/453/10 404/116/10 +f 399/114/11 402/113/11 403/112/11 +f 410/122/13 409/105/13 417/92/13 +f 414/124/14 413/93/14 412/104/14 +f 420/126/15 419/103/15 406/102/15 +f 408/128/16 407/451/16 423/101/16 +f 416/109/11 420/108/11 405/130/11 +f 426/132/7 428/454/7 427/133/7 +f 428/135/8 432/138/8 431/136/8 +f 432/138/9 430/140/9 429/139/9 +f 430/140/10 426/455/10 425/141/10 +f 431/136/11 429/139/11 425/142/11 +f 428/144/12 426/456/12 430/140/12 +f 436/145/8 440/148/8 439/146/8 +f 440/148/9 438/150/9 437/149/9 +f 438/150/10 434/457/10 433/151/10 +f 439/146/11 437/149/11 433/152/11 +f 436/154/12 434/458/12 438/150/12 +f 459/181/9 444/169/9 457/156/9 +f 444/169/9 443/157/9 457/156/9 +f 443/157/9 462/182/9 461/155/9 +f 442/158/12 448/179/12 445/159/12 +f 455/161/12 452/459/12 466/162/12 +f 467/164/10 451/460/10 450/165/10 +f 456/167/8 457/156/8 461/155/8 +f 468/184/9 442/170/9 466/162/9 +f 442/170/9 444/169/9 466/162/9 +f 444/169/9 459/181/9 458/163/9 +f 465/183/9 441/173/9 463/166/9 +f 441/173/9 442/170/9 463/166/9 +f 442/170/9 468/184/9 467/164/9 +f 462/182/9 443/157/9 460/172/9 +f 443/157/9 441/173/9 460/172/9 +f 441/173/9 465/183/9 464/171/9 +f 445/174/9 448/461/9 447/175/9 +f 444/160/8 445/159/8 446/176/8 +f 441/178/10 447/462/10 448/179/10 +f 443/177/11 446/176/11 447/175/11 +f 454/185/13 453/168/13 461/155/13 +f 458/187/14 457/156/14 456/167/14 +f 464/189/15 463/166/15 450/165/15 +f 452/191/16 451/460/16 467/164/16 +f 460/172/11 464/171/11 449/193/11 +f 487/221/9 472/209/9 485/196/9 +f 472/209/9 471/197/9 485/196/9 +f 471/197/9 490/222/9 489/195/9 +f 470/198/12 476/219/12 473/199/12 +f 483/201/12 480/463/12 494/202/12 +f 495/204/10 479/464/10 478/205/10 +f 484/207/8 485/196/8 489/195/8 +f 496/224/9 470/210/9 494/202/9 +f 470/210/9 472/209/9 494/202/9 +f 472/209/9 487/221/9 486/203/9 +f 493/223/9 469/213/9 491/206/9 +f 469/213/9 470/210/9 491/206/9 +f 470/210/9 496/224/9 495/204/9 +f 490/222/9 471/197/9 488/212/9 +f 471/197/9 469/213/9 488/212/9 +f 469/213/9 493/223/9 492/211/9 +f 473/214/9 476/465/9 475/215/9 +f 472/200/8 473/199/8 474/216/8 +f 469/218/10 475/466/10 476/219/10 +f 471/217/11 474/216/11 475/215/11 +f 482/225/13 481/208/13 489/195/13 +f 486/227/14 485/196/14 484/207/14 +f 492/229/15 491/206/15 478/205/15 +f 480/231/16 479/464/16 495/204/16 +f 488/212/11 492/211/11 477/233/11 +f 498/235/7 500/467/7 499/236/7 +f 500/238/8 504/241/8 503/239/8 +f 504/241/9 502/243/9 501/242/9 +f 502/243/10 498/468/10 497/244/10 +f 503/239/11 501/242/11 497/245/11 +f 500/247/12 498/469/12 502/243/12 +f 508/248/8 512/251/8 511/249/8 +f 512/251/9 510/253/9 509/252/9 +f 510/253/10 506/470/10 505/254/10 +f 511/249/11 509/252/11 505/255/11 +f 508/257/12 506/471/12 510/253/12 +f 531/284/9 516/272/9 529/259/9 +f 516/272/9 515/260/9 529/259/9 +f 515/260/9 534/285/9 533/258/9 +f 514/261/12 520/282/12 517/262/12 +f 527/264/12 524/472/12 538/265/12 +f 539/267/10 523/473/10 522/268/10 +f 528/270/8 529/259/8 533/258/8 +f 540/287/9 514/273/9 538/265/9 +f 514/273/9 516/272/9 538/265/9 +f 516/272/9 531/284/9 530/266/9 +f 537/286/9 513/276/9 535/269/9 +f 513/276/9 514/273/9 535/269/9 +f 514/273/9 540/287/9 539/267/9 +f 534/285/9 515/260/9 532/275/9 +f 515/260/9 513/276/9 532/275/9 +f 513/276/9 537/286/9 536/274/9 +f 517/277/9 520/474/9 519/278/9 +f 516/263/8 517/262/8 518/279/8 +f 513/281/10 519/475/10 520/282/10 +f 515/280/11 518/279/11 519/278/11 +f 526/288/13 525/271/13 533/258/13 +f 530/290/14 529/259/14 528/270/14 +f 536/292/15 535/269/15 522/268/15 +f 524/294/16 523/473/16 539/267/16 +f 532/275/11 536/274/11 521/296/11 +f 559/324/9 544/312/9 557/299/9 +f 544/312/9 543/300/9 557/299/9 +f 543/300/9 562/325/9 561/298/9 +f 542/301/12 548/322/12 545/302/12 +f 555/304/12 552/476/12 566/305/12 +f 567/307/10 551/477/10 550/308/10 +f 556/310/8 557/299/8 561/298/8 +f 568/327/9 542/313/9 566/305/9 +f 542/313/9 544/312/9 566/305/9 +f 544/312/9 559/324/9 558/306/9 +f 565/326/9 541/316/9 563/309/9 +f 541/316/9 542/313/9 563/309/9 +f 542/313/9 568/327/9 567/307/9 +f 562/325/9 543/300/9 560/315/9 +f 543/300/9 541/316/9 560/315/9 +f 541/316/9 565/326/9 564/314/9 +f 545/317/9 548/478/9 547/318/9 +f 544/303/8 545/302/8 546/319/8 +f 541/321/10 547/479/10 548/322/10 +f 543/320/11 546/319/11 547/318/11 +f 554/328/13 553/311/13 561/298/13 +f 558/330/14 557/299/14 556/310/14 +f 564/332/15 563/309/15 550/308/15 +f 552/334/16 551/477/16 567/307/16 +f 560/315/11 564/314/11 549/336/11 +f 570/338/7 572/480/7 571/339/7 +f 572/341/8 576/344/8 575/342/8 +f 576/344/9 574/346/9 573/345/9 +f 574/346/10 570/481/10 569/347/10 +f 575/342/11 573/345/11 569/348/11 +f 572/350/12 570/482/12 574/346/12 +f 580/351/8 584/354/8 583/352/8 +f 584/354/9 582/356/9 581/355/9 +f 582/356/10 578/483/10 577/357/10 +f 583/352/11 581/355/11 577/358/11 +f 580/360/12 578/484/12 582/356/12 +f 603/387/9 588/375/9 601/362/9 +f 588/375/9 587/363/9 601/362/9 +f 587/363/9 606/388/9 605/361/9 +f 586/364/12 592/385/12 589/365/12 +f 599/367/12 596/485/12 610/368/12 +f 611/370/10 595/486/10 594/371/10 +f 600/373/8 601/362/8 605/361/8 +f 612/390/9 586/376/9 610/368/9 +f 586/376/9 588/375/9 610/368/9 +f 588/375/9 603/387/9 602/369/9 +f 609/389/9 585/379/9 607/372/9 +f 585/379/9 586/376/9 607/372/9 +f 586/376/9 612/390/9 611/370/9 +f 606/388/9 587/363/9 604/378/9 +f 587/363/9 585/379/9 604/378/9 +f 585/379/9 609/389/9 608/377/9 +f 589/380/9 592/487/9 591/381/9 +f 588/366/8 589/365/8 590/382/8 +f 585/384/10 591/488/10 592/385/10 +f 587/383/11 590/382/11 591/381/11 +f 598/391/13 597/374/13 605/361/13 +f 602/393/14 601/362/14 600/373/14 +f 608/395/15 607/372/15 594/371/15 +f 596/397/16 595/486/16 611/370/16 +f 604/378/11 608/377/11 593/399/11 +f 631/427/9 616/415/9 629/402/9 +f 616/415/9 615/403/9 629/402/9 +f 615/403/9 634/428/9 633/401/9 +f 614/404/12 620/425/12 617/405/12 +f 627/407/12 624/489/12 638/408/12 +f 639/410/10 623/490/10 622/411/10 +f 628/413/8 629/402/8 633/401/8 +f 640/430/9 614/416/9 638/408/9 +f 614/416/9 616/415/9 638/408/9 +f 616/415/9 631/427/9 630/409/9 +f 637/429/9 613/419/9 635/412/9 +f 613/419/9 614/416/9 635/412/9 +f 614/416/9 640/430/9 639/410/9 +f 634/428/9 615/403/9 632/418/9 +f 615/403/9 613/419/9 632/418/9 +f 613/419/9 637/429/9 636/417/9 +f 617/420/9 620/491/9 619/421/9 +f 616/406/8 617/405/8 618/422/8 +f 613/424/10 619/492/10 620/425/10 +f 615/423/11 618/422/11 619/421/11 +f 626/431/13 625/414/13 633/401/13 +f 630/433/14 629/402/14 628/413/14 +f 636/435/15 635/412/15 622/411/15 +f 624/437/16 623/490/16 639/410/16 +f 632/418/11 636/417/11 621/439/11 +s 1 +f 129/493/17 38/494/18 26/495/19 +f 24/496/20 96/497/21 36/498/22 +f 17/499/23 30/500/24 29/501/25 +f 19/502/26 42/503/27 31/504/28 +f 19/502/26 32/505/29 20/506/30 +f 18/507/9 174/508/9 157/509/9 +f 20/510/9 163/511/9 19/512/9 +f 160/513/9 53/514/9 164/515/9 +f 166/516/9 53/514/9 54/517/9 +f 98/518/9 126/519/9 127/520/9 +f 146/521/9 26/522/9 28/523/9 +f 135/524/9 25/525/9 133/526/9 +f 64/527/9 132/528/9 23/529/9 +f 27/530/31 37/531/32 25/532/33 +f 27/530/31 44/533/34 39/534/35 +f 28/535/36 38/494/18 40/536/37 +f 137/537/9 27/538/9 135/524/9 +f 59/539/9 144/540/9 60/541/9 +f 64/527/9 138/542/9 136/543/9 +f 17/499/23 41/544/27 45/545/27 +f 28/535/36 43/546/34 47/547/34 +f 57/548/38 170/549/38 56/550/38 +f 46/551/39 50/552/40 42/553/41 +f 43/554/42 52/555/43 51/556/43 +f 143/557/44 51/558/45 141/559/44 +f 60/560/44 142/561/44 61/562/44 +f 43/563/46 51/564/45 47/565/47 +f 52/566/48 44/567/49 48/568/50 +f 41/569/51 49/570/52 45/571/53 +f 50/572/54 41/573/55 42/574/55 +f 112/575/9 64/527/9 128/576/9 +f 167/577/9 49/578/54 50/579/54 +f 165/580/44 50/579/40 46/581/39 +f 19/512/9 165/582/9 46/583/9 +f 53/514/9 120/584/9 54/517/9 +f 137/585/38 52/586/48 48/587/50 +f 127/520/9 110/588/9 111/589/9 +f 86/590/56 88/591/9 87/592/9 +f 122/593/44 119/594/44 118/595/44 +f 109/596/38 56/550/38 108/597/38 +f 114/598/9 102/599/9 103/600/9 +f 104/601/9 59/539/9 113/602/9 +f 122/593/9 107/603/9 123/604/9 +f 120/605/44 55/606/44 54/607/44 +f 61/562/9 105/608/9 121/609/9 +f 118/610/9 115/611/9 114/598/9 +f 124/612/9 56/550/9 55/606/9 +f 58/613/9 100/614/9 21/615/9 +f 94/616/21 103/617/21 102/618/21 +f 21/619/57 92/620/58 33/621/59 +f 128/576/9 23/529/9 97/622/9 +f 22/623/9 116/624/9 53/514/9 +f 113/602/9 60/541/9 117/625/9 +f 117/626/44 61/562/44 121/609/44 +f 107/603/38 111/627/38 110/628/38 +f 57/629/9 125/630/9 58/613/9 +f 112/631/38 62/632/38 63/633/38 +f 22/634/60 93/635/21 101/636/21 +f 90/637/58 99/638/58 98/639/58 +f 116/640/61 69/641/61 120/642/61 +f 125/643/61 83/644/62 100/645/63 +f 103/646/64 77/647/61 114/648/61 +f 121/609/44 118/595/44 117/626/44 +f 120/605/44 123/604/44 124/612/44 +f 121/609/9 106/649/9 122/593/9 +f 108/597/9 123/604/9 107/603/9 +f 114/648/61 71/650/61 118/651/61 +f 127/652/61 85/653/62 98/654/63 +f 108/597/38 110/628/38 109/596/38 +f 112/631/38 106/649/38 105/608/38 +f 290/655/7 275/656/7 274/657/7 +f 220/658/65 305/659/66 216/660/67 +f 23/661/68 89/662/58 97/663/58 +f 82/664/9 84/665/56 83/644/56 +f 78/666/9 80/667/69 79/668/69 +f 74/669/69 76/670/9 75/671/9 +f 72/672/9 77/647/9 78/666/9 +f 75/671/9 70/673/9 69/641/9 +f 87/592/9 68/674/9 67/675/9 +f 66/676/9 81/677/9 82/664/9 +f 128/678/70 67/675/70 112/679/70 +f 101/680/64 75/671/61 116/640/61 +f 119/681/70 76/670/70 115/682/70 +f 111/683/61 88/591/61 127/652/61 +f 99/684/71 81/677/70 126/685/70 +f 109/686/61 82/664/61 125/643/61 +f 115/682/70 73/687/72 102/688/73 +f 69/641/9 65/689/9 66/676/9 +f 97/690/71 87/592/70 128/678/70 +f 117/691/70 78/666/70 113/692/70 +f 113/692/70 79/668/72 104/693/73 +f 126/685/70 65/689/70 110/694/70 +f 119/681/70 65/689/70 70/673/70 +f 66/676/61 120/642/61 69/641/61 +f 118/651/61 68/674/61 111/683/61 +f 67/675/9 71/650/9 72/672/9 +f 117/691/70 67/675/70 72/672/70 +f 98/695/63 85/696/62 90/697/74 +f 100/698/63 83/699/62 92/700/74 +f 99/701/71 91/702/75 84/703/76 +f 86/704/76 97/705/71 89/706/75 +f 104/707/73 79/708/72 96/709/77 +f 80/710/78 103/711/64 95/712/79 +f 102/713/73 73/714/72 94/715/77 +f 74/716/78 101/717/64 93/718/79 +f 74/719/69 94/720/80 73/721/69 +f 80/722/69 96/709/80 79/708/69 +f 85/723/56 89/724/81 90/725/81 +f 83/726/56 91/727/81 92/728/81 +f 143/729/9 28/523/9 47/730/9 +f 51/558/43 139/731/9 141/559/9 +f 142/561/9 62/632/9 61/562/9 +f 63/633/38 140/732/38 138/733/38 +f 133/734/82 37/531/32 134/735/83 +f 36/736/22 130/737/84 24/738/20 +f 132/739/85 35/740/86 23/741/68 +f 136/742/87 154/743/88 156/744/89 +f 132/745/90 134/746/91 133/747/92 +f 146/748/93 151/749/94 150/750/95 +f 129/751/96 150/750/95 131/752/97 +f 59/539/9 130/753/9 145/754/9 +f 150/750/98 152/755/9 149/756/99 +f 155/757/100 154/743/9 153/758/9 +f 134/759/101 156/744/102 155/757/100 +f 131/752/103 149/756/99 147/760/104 +f 130/761/105 149/756/106 145/762/87 +f 133/763/107 155/757/108 135/764/93 +f 135/764/93 153/758/109 137/765/110 +f 144/766/111 149/756/106 152/755/112 +f 132/767/113 156/744/89 148/768/114 +f 152/755/112 154/743/88 140/769/115 +f 141/770/116 153/758/109 151/749/94 +f 152/755/9 153/758/9 154/743/9 +f 172/771/9 58/613/9 173/772/9 +f 17/773/9 171/774/9 174/508/9 +f 45/775/53 169/776/38 171/777/38 +f 55/606/9 170/549/9 168/778/9 +f 54/607/44 168/778/44 166/779/44 +f 161/780/117 32/505/29 162/781/118 +f 157/782/119 30/500/24 18/783/120 +f 21/784/57 175/785/121 158/786/121 +f 176/787/122 22/788/60 160/789/122 +f 181/790/9 178/791/9 177/792/9 +f 167/793/123 181/790/124 177/792/125 +f 161/794/126 183/795/127 163/796/128 +f 178/791/129 182/797/130 168/798/131 +f 174/799/132 177/792/125 180/800/133 +f 158/801/9 58/613/9 21/615/9 +f 179/802/134 177/792/9 178/791/9 +f 182/797/9 183/795/135 184/803/136 +f 184/803/136 162/804/137 176/805/138 +f 179/802/134 159/806/139 180/800/140 +f 164/807/141 182/797/130 184/803/142 +f 158/808/143 179/802/144 173/809/141 +f 173/809/141 178/791/129 172/810/145 +f 160/811/146 162/812/147 161/813/148 +f 163/796/128 181/790/124 165/814/149 +f 158/815/150 159/816/151 175/817/152 +f 157/818/153 180/800/133 159/806/154 +f 160/819/155 184/803/142 176/805/156 +f 224/820/7 292/821/7 223/822/7 +f 239/823/7 235/824/7 240/825/7 +f 205/826/157 195/827/158 193/828/159 +f 300/829/7 232/830/7 191/831/7 +f 294/832/7 266/833/7 295/834/7 +f 206/835/160 297/836/161 194/837/162 +f 185/838/163 198/839/164 186/840/165 +f 227/841/7 272/842/7 281/843/7 +f 300/844/166 324/845/167 304/846/168 +f 230/847/7 310/848/7 229/849/7 +f 273/850/7 229/849/7 289/851/7 +f 331/852/7 188/853/7 187/854/7 +f 193/855/7 303/856/7 301/857/7 +f 205/826/157 301/858/169 302/859/170 +f 314/860/7 194/861/7 297/862/7 +f 200/863/171 187/864/172 188/865/173 +f 319/866/174 321/867/175 307/868/176 +f 288/869/7 221/870/7 222/871/7 +f 351/872/177 350/873/7 352/874/178 +f 287/875/179 290/655/179 286/876/179 +f 270/877/7 282/878/7 271/879/7 +f 334/880/7 221/870/7 332/881/7 +f 318/882/180 320/883/7 319/866/7 +f 267/884/181 252/885/182 259/886/183 +f 251/887/184 293/888/185 268/889/186 +f 221/870/7 328/890/7 332/881/7 +f 196/891/187 206/835/160 194/837/162 +f 261/892/188 190/893/189 269/894/188 +f 185/895/7 339/896/7 213/897/7 +f 298/898/190 204/899/191 192/900/192 +f 308/901/193 322/902/194 320/883/195 +f 323/903/196 301/904/197 303/905/198 +f 346/906/199 341/907/200 340/908/201 +f 226/909/7 340/910/7 341/911/7 +f 337/912/66 213/913/202 339/914/66 +f 326/915/7 226/909/7 341/911/7 +f 312/916/7 227/841/7 228/917/7 +f 302/918/203 300/919/204 301/920/205 +f 195/827/158 212/921/206 216/922/206 +f 211/923/206 196/891/187 215/924/206 +f 200/863/171 329/925/207 330/926/208 +f 342/927/209 345/928/210 339/929/211 +f 214/930/212 210/931/213 218/932/214 +f 314/933/198 319/866/174 311/934/215 +f 195/935/7 305/936/7 303/856/7 +f 223/822/179 288/937/179 222/938/179 +f 244/939/216 287/940/216 283/941/216 +f 320/883/7 321/867/7 319/866/7 +f 245/942/185 271/943/217 282/944/185 +f 326/945/218 327/946/219 325/947/220 +f 253/948/184 295/949/185 266/950/186 +f 246/951/216 285/952/216 281/953/216 +f 270/954/221 262/955/222 241/956/223 +f 238/957/7 243/958/7 237/959/7 +f 256/960/185 279/961/185 295/949/185 +f 254/962/182 257/963/183 265/964/181 +f 232/830/7 280/965/7 296/966/7 +f 272/967/221 264/968/222 247/969/223 +f 236/970/7 255/971/7 235/824/7 +f 284/972/7 190/973/7 221/870/7 +f 233/974/7 237/959/7 234/975/7 +f 268/976/7 226/909/7 189/977/7 +f 271/978/188 262/979/188 270/980/188 +f 209/981/224 218/982/225 210/983/224 +f 252/984/226 250/985/7 251/887/226 +f 247/986/223 281/953/216 272/987/221 +f 228/988/179 310/848/179 312/989/179 +f 288/990/185 234/975/185 237/959/185 +f 266/991/186 258/992/227 253/993/184 +f 248/994/228 246/951/7 247/986/228 +f 262/995/229 242/996/228 241/997/228 +f 191/831/7 296/966/7 265/998/7 +f 239/823/185 282/944/185 286/999/185 +f 311/1000/179 219/1001/230 215/1002/231 +f 250/985/185 277/1003/185 293/888/185 +f 311/1004/7 196/1005/7 314/860/7 +f 235/824/216 296/1006/216 280/1007/216 +f 211/1008/232 215/1009/231 219/1010/230 +f 230/847/66 280/1011/66 231/1012/66 +f 236/970/185 286/999/185 279/961/185 +f 249/1013/7 234/975/7 250/985/7 +f 267/1014/233 258/1015/233 266/1016/233 +f 328/1017/234 352/874/235 332/1018/200 +f 209/1019/236 185/838/163 213/1020/236 +f 220/1021/237 211/1022/238 219/1023/237 +f 232/830/7 306/1024/7 231/1025/7 +f 225/1026/66 338/1027/66 340/1028/66 +f 330/1029/239 328/1030/240 329/1031/241 +f 258/1032/242 254/1033/226 253/1034/226 +f 278/1035/7 295/834/7 279/1036/7 +f 217/1037/225 335/1038/7 218/1039/225 +f 307/1040/7 219/1001/237 309/1041/7 +f 237/959/185 284/1042/185 288/990/185 +f 228/917/7 281/843/7 285/1043/7 +f 279/1044/66 275/656/66 278/1045/66 +f 324/845/243 302/1046/244 323/903/245 +f 277/1047/66 224/820/66 225/1026/66 +f 220/1048/65 216/1049/67 212/1050/246 +f 291/1051/179 288/937/179 292/821/179 +f 189/1052/247 260/1053/233 268/1054/233 +f 244/939/7 242/1055/228 243/958/7 +f 248/1056/248 263/1057/249 271/1058/217 +f 218/1039/214 333/1059/179 214/1060/212 +f 299/1061/250 317/1062/251 318/882/180 +f 209/1063/252 213/1064/202 217/1065/253 +f 260/1066/242 252/1067/226 251/1068/226 +f 289/851/7 274/657/7 273/850/7 +f 245/942/7 240/825/7 246/951/7 +f 285/1069/179 229/849/179 228/988/179 +f 274/657/66 280/1011/66 273/850/66 +f 241/1070/223 283/941/216 270/1071/221 +f 293/1072/7 225/1073/7 226/909/7 +f 276/1074/7 291/1051/7 292/821/7 +f 235/824/216 285/952/216 240/825/216 +f 268/1075/186 260/1076/227 251/1077/184 +f 264/968/229 248/1078/228 247/969/228 +f 286/876/179 289/851/179 285/1069/179 +f 345/928/210 349/1079/254 335/1080/255 +f 338/1027/7 223/822/7 336/1081/7 +f 317/1062/256 298/1082/257 313/1083/168 +f 336/1081/179 222/938/179 334/1084/179 +f 227/841/7 298/1085/7 192/1086/7 +f 198/839/164 325/1087/258 186/840/165 +f 343/1088/259 189/1089/247 326/1090/259 +f 344/1091/260 190/1092/189 202/1093/261 +f 338/1094/262 350/873/263 346/906/199 +f 325/1095/264 348/1096/265 342/927/209 +f 346/906/7 349/1079/7 345/928/7 +f 330/1097/266 352/874/178 344/1098/267 +f 332/1018/200 350/873/263 334/1099/268 +f 256/960/7 254/1100/226 255/971/7 +f 283/1101/7 286/1102/7 282/878/7 +f 257/1103/233 191/1104/269 265/1105/233 +f 192/1106/192 264/1107/188 272/1108/188 +f 278/1045/66 276/1074/66 277/1047/66 +f 351/872/270 329/1109/271 331/1110/272 +f 321/867/175 303/905/198 305/1111/273 +f 347/1112/274 326/1113/275 341/907/200 +f 203/1114/276 300/1115/277 191/1116/269 +f 322/902/7 323/903/245 321/867/7 +f 187/864/172 210/1117/236 214/1118/236 +f 345/928/7 347/1112/278 346/906/7 +f 249/1013/216 267/1119/181 294/1120/216 +f 233/974/216 294/1120/216 278/1121/216 +f 333/1122/7 187/854/7 214/1123/7 +f 297/1124/279 318/882/280 314/933/198 +f 243/958/185 269/1125/217 284/1042/185 +f 255/971/216 265/1126/181 296/1006/216 +f 233/974/216 287/940/216 238/957/216 +f 186/1127/7 342/1128/7 185/895/7 +f 324/845/167 306/1129/281 304/846/168 +f 320/883/195 313/1083/168 312/1130/282 +f 242/1131/248 261/1132/249 269/1133/217 +f 308/1134/66 231/1012/66 306/1135/66 +f 349/1079/254 331/1110/272 333/1136/283 +f 347/1112/278 327/1137/284 343/1138/285 +f 199/1139/286 42/1140/12 210/1141/12 +f 204/1142/287 96/1143/10 264/1144/10 +f 264/1144/10 95/1145/10 263/1146/10 +f 263/1146/10 94/1147/10 262/1148/10 +f 197/1149/288 30/1150/289 198/1151/289 +f 198/1151/289 159/1152/290 327/1153/290 +f 259/1154/8 90/1155/8 258/1156/8 +f 260/1157/8 91/1158/8 259/1154/8 +f 147/1159/291 36/1160/287 315/1161/291 +f 210/1141/12 41/1162/12 209/1163/12 +f 209/1163/12 29/1164/288 197/1149/288 +f 212/1165/11 43/1166/11 211/1167/11 +f 302/1168/292 37/1169/293 205/1170/293 +f 207/1171/294 44/1172/11 212/1165/11 +f 205/1170/293 39/1173/294 207/1171/294 +f 175/1174/295 33/1175/296 343/1176/295 +f 201/1177/296 92/1178/8 260/1157/8 +f 206/1179/297 131/1180/298 299/1181/298 +f 176/1182/299 162/1183/300 344/1184/299 +f 330/1185/300 32/1186/301 200/1187/301 +f 258/1156/8 89/1188/8 257/1189/8 +f 262/1148/10 93/1190/10 261/1191/10 +f 261/1191/10 34/1192/302 202/1193/302 +f 148/1194/303 134/1195/292 316/1196/303 +f 257/1189/8 35/1197/304 203/1198/304 +f 208/1199/305 38/1200/297 206/1179/297 +f 211/1167/11 40/1201/305 208/1199/305 +f 200/1187/301 31/1202/286 199/1139/286 +f 129/493/17 131/1203/306 38/494/18 +f 24/496/20 104/1204/21 96/497/21 +f 17/499/23 18/783/120 30/500/24 +f 19/502/26 46/1205/27 42/503/27 +f 19/502/26 31/504/28 32/505/29 +f 18/507/9 17/773/9 174/508/9 +f 20/510/9 161/1206/9 163/511/9 +f 160/513/9 22/623/9 53/514/9 +f 166/516/9 164/515/9 53/514/9 +f 98/518/9 99/1207/9 126/519/9 +f 146/521/9 129/1208/9 26/522/9 +f 135/524/9 27/538/9 25/525/9 +f 64/527/9 136/543/9 132/528/9 +f 27/530/31 39/534/35 37/531/32 +f 27/530/31 48/1209/34 44/533/34 +f 28/535/36 26/495/19 38/494/18 +f 137/537/9 48/1210/9 27/538/9 +f 59/539/9 145/754/9 144/540/9 +f 64/527/9 63/1211/9 138/542/9 +f 17/499/23 29/501/25 41/544/27 +f 28/535/36 40/536/37 43/546/34 +f 57/548/38 172/1212/38 170/549/38 +f 43/554/42 44/1213/42 52/555/43 +f 143/557/44 47/1214/47 51/558/45 +f 60/560/44 144/1215/44 142/561/44 +f 50/572/54 49/1216/54 41/573/55 +f 112/575/9 63/1211/9 64/527/9 +f 167/577/9 169/776/9 49/578/54 +f 165/580/44 167/577/44 50/579/40 +f 19/512/9 163/511/9 165/582/9 +f 53/514/9 116/624/9 120/584/9 +f 137/585/38 139/731/38 52/586/48 +f 127/520/9 126/519/9 110/588/9 +f 86/590/56 85/653/56 88/591/9 +f 122/593/44 123/604/44 119/594/44 +f 109/596/38 57/548/38 56/550/38 +f 114/598/9 115/611/9 102/599/9 +f 104/601/9 24/1217/9 59/539/9 +f 122/593/9 106/649/9 107/603/9 +f 120/605/44 124/612/44 55/606/44 +f 61/562/9 62/632/9 105/608/9 +f 118/610/9 119/1218/9 115/611/9 +f 124/612/9 108/597/9 56/550/9 +f 58/613/9 125/630/9 100/614/9 +f 94/616/21 95/1219/21 103/617/21 +f 21/619/57 100/1220/58 92/620/58 +f 128/576/9 64/527/9 23/529/9 +f 22/623/9 101/1221/9 116/624/9 +f 113/602/9 59/539/9 60/541/9 +f 117/626/44 60/560/44 61/562/44 +f 107/603/38 106/649/38 111/627/38 +f 57/629/9 109/1222/9 125/630/9 +f 112/631/38 105/608/38 62/632/38 +f 22/634/60 34/1223/307 93/635/21 +f 90/637/58 91/1224/58 99/638/58 +f 116/640/61 75/671/61 69/641/61 +f 125/643/61 82/664/61 83/644/62 +f 103/646/64 80/667/78 77/647/61 +f 121/609/44 122/593/44 118/595/44 +f 120/605/44 119/594/44 123/604/44 +f 121/609/9 105/608/9 106/649/9 +f 108/597/9 124/612/9 123/604/9 +f 114/648/61 77/647/61 71/650/61 +f 127/652/61 88/591/61 85/653/62 +f 108/597/38 107/603/38 110/628/38 +f 112/631/38 111/627/38 106/649/38 +f 290/655/7 291/1051/7 275/656/7 +f 220/658/65 307/1040/66 305/659/66 +f 23/661/68 35/1225/86 89/662/58 +f 82/664/9 81/677/9 84/665/56 +f 78/666/9 77/647/9 80/667/69 +f 74/669/69 73/687/69 76/670/9 +f 72/672/9 71/650/9 77/647/9 +f 75/671/9 76/670/9 70/673/9 +f 87/592/9 88/591/9 68/674/9 +f 66/676/9 65/689/9 81/677/9 +f 128/678/70 87/592/70 67/675/70 +f 101/680/64 74/669/78 75/671/61 +f 119/681/70 70/673/70 76/670/70 +f 111/683/61 68/674/61 88/591/61 +f 99/684/71 84/665/76 81/677/70 +f 109/686/61 66/676/61 82/664/61 +f 115/682/70 76/670/70 73/687/72 +f 69/641/9 70/673/9 65/689/9 +f 97/690/71 86/590/76 87/592/70 +f 117/691/70 72/672/70 78/666/70 +f 113/692/70 78/666/70 79/668/72 +f 126/685/70 81/677/70 65/689/70 +f 119/681/70 110/694/70 65/689/70 +f 66/676/61 109/686/61 120/642/61 +f 118/651/61 71/650/61 68/674/61 +f 67/675/9 68/674/9 71/650/9 +f 117/691/70 112/679/70 67/675/70 +f 74/719/69 93/1226/80 94/720/80 +f 80/722/69 95/1227/80 96/709/80 +f 85/723/56 86/1228/56 89/724/81 +f 83/726/56 84/1229/56 91/727/81 +f 143/729/9 146/521/9 28/523/9 +f 51/558/43 52/586/43 139/731/9 +f 142/561/9 140/732/9 62/632/9 +f 63/633/38 62/632/38 140/732/38 +f 133/734/82 25/532/33 37/531/32 +f 36/736/22 147/1230/308 130/737/84 +f 132/739/85 148/1231/309 35/740/86 +f 136/742/87 138/1232/310 154/743/88 +f 132/745/90 148/1233/311 134/746/91 +f 146/748/93 143/1234/312 151/749/94 +f 129/751/96 146/748/93 150/750/95 +f 59/539/9 24/1217/9 130/753/9 +f 150/750/98 151/749/9 152/755/9 +f 155/757/100 156/744/102 154/743/9 +f 134/759/101 148/768/313 156/744/102 +f 131/752/103 150/750/98 149/756/99 +f 130/761/105 147/760/314 149/756/106 +f 133/763/107 134/759/315 155/757/108 +f 135/764/93 155/757/108 153/758/109 +f 144/766/111 145/762/87 149/756/106 +f 132/767/113 136/742/87 156/744/89 +f 142/1235/316 144/766/111 152/755/112 +f 154/743/88 138/1232/310 140/769/115 +f 140/769/115 142/1235/316 152/755/112 +f 139/1236/317 137/765/110 153/758/109 +f 151/749/94 143/1234/312 141/770/116 +f 141/770/116 139/1236/317 153/758/109 +f 152/755/9 151/749/9 153/758/9 +f 172/771/9 57/629/9 58/613/9 +f 17/773/9 45/1237/9 171/774/9 +f 45/775/53 49/578/52 169/776/38 +f 55/606/9 56/550/9 170/549/9 +f 54/607/44 55/606/44 168/778/44 +f 161/780/117 20/506/30 32/505/29 +f 157/782/119 159/1238/318 30/500/24 +f 21/784/57 33/1239/59 175/785/121 +f 176/787/122 34/1240/307 22/788/60 +f 181/790/9 182/797/9 178/791/9 +f 177/792/125 171/1241/319 169/1242/320 +f 167/793/123 165/814/149 181/790/124 +f 177/792/125 169/1242/320 167/793/123 +f 161/794/126 162/804/321 183/795/127 +f 170/1243/322 172/810/145 178/791/129 +f 182/797/130 166/1244/323 168/798/131 +f 168/798/131 170/1243/322 178/791/129 +f 174/799/132 171/1241/319 177/792/125 +f 158/801/9 173/772/9 58/613/9 +f 179/802/134 180/800/140 177/792/9 +f 182/797/9 181/790/9 183/795/135 +f 184/803/136 183/795/135 162/804/137 +f 179/802/134 175/1245/324 159/806/139 +f 164/807/141 166/1244/323 182/797/130 +f 158/808/143 175/1245/325 179/802/144 +f 173/809/141 179/802/144 178/791/129 +f 160/811/146 176/1246/326 162/812/147 +f 163/796/128 183/795/127 181/790/124 +f 158/815/150 157/1247/327 159/816/151 +f 157/818/153 174/799/132 180/800/133 +f 160/819/155 164/807/141 184/803/142 +f 224/820/7 276/1074/7 292/821/7 +f 239/823/7 236/970/7 235/824/7 +f 205/826/157 207/1248/328 195/827/158 +f 300/829/7 304/1249/7 232/830/7 +f 294/832/7 267/1250/7 266/833/7 +f 206/835/160 299/1251/329 297/836/161 +f 185/838/163 197/1252/330 198/839/164 +f 227/841/7 192/1086/7 272/842/7 +f 300/844/166 316/1253/331 324/845/167 +f 230/847/7 308/1134/7 310/848/7 +f 273/850/7 230/847/7 229/849/7 +f 331/852/7 329/1254/7 188/853/7 +f 193/855/7 195/935/7 303/856/7 +f 205/826/157 193/828/159 301/858/169 +f 314/860/7 196/1005/7 194/861/7 +f 200/863/171 199/1255/332 187/864/172 +f 309/1256/333 311/934/215 319/866/174 +f 321/867/175 305/1111/273 307/868/176 +f 307/868/176 309/1256/333 319/866/174 +f 288/869/7 284/972/7 221/870/7 +f 351/872/177 349/1079/7 350/873/7 +f 287/875/179 291/1051/179 290/655/179 +f 270/877/7 283/1101/7 282/878/7 +f 334/880/7 222/871/7 221/870/7 +f 318/882/180 317/1062/251 320/883/7 +f 251/887/184 250/985/185 293/888/185 +f 221/870/7 190/973/7 328/890/7 +f 196/891/187 208/1257/334 206/835/160 +f 261/892/188 202/1258/261 190/893/189 +f 185/895/7 342/1128/7 339/896/7 +f 298/898/190 315/1259/335 204/899/191 +f 320/883/195 312/1130/282 310/1260/336 +f 308/901/193 306/1129/281 322/902/194 +f 320/883/195 310/1260/336 308/901/193 +f 323/903/196 302/1046/337 301/904/197 +f 346/906/199 347/1112/274 341/907/200 +f 226/909/7 225/1073/7 340/910/7 +f 337/912/66 217/1037/253 213/913/202 +f 326/915/7 189/977/7 226/909/7 +f 312/916/7 313/1261/7 227/841/7 +f 302/918/203 316/1262/338 300/919/204 +f 195/827/158 207/1248/328 212/921/206 +f 211/923/206 208/1257/334 196/891/187 +f 200/863/171 188/865/173 329/925/207 +f 342/927/209 348/1096/265 345/928/210 +f 314/933/198 318/882/280 319/866/174 +f 195/935/7 216/1263/7 305/936/7 +f 223/822/179 292/821/179 288/937/179 +f 244/939/216 238/957/216 287/940/216 +f 320/883/7 322/902/7 321/867/7 +f 245/942/185 248/994/248 271/943/217 +f 326/945/218 343/1264/339 327/946/219 +f 253/948/184 256/960/185 295/949/185 +f 246/951/216 240/825/216 285/952/216 +f 238/957/7 244/939/7 243/958/7 +f 256/960/185 236/970/185 279/961/185 +f 232/830/7 231/1025/7 280/965/7 +f 236/970/7 256/960/7 255/971/7 +f 284/972/7 269/1265/7 190/973/7 +f 233/974/7 238/957/7 237/959/7 +f 268/976/7 293/1072/7 226/909/7 +f 271/978/188 263/1266/188 262/979/188 +f 209/981/224 217/1267/225 218/982/225 +f 252/984/226 249/1013/7 250/985/7 +f 247/986/223 246/951/216 281/953/216 +f 228/988/179 229/849/179 310/848/179 +f 288/990/185 277/1003/185 234/975/185 +f 248/994/228 245/942/7 246/951/7 +f 262/995/229 261/1268/229 242/996/228 +f 191/831/7 232/830/7 296/966/7 +f 239/823/185 245/942/185 282/944/185 +f 311/1000/179 309/1041/179 219/1001/230 +f 250/985/185 234/975/185 277/1003/185 +f 311/1004/7 215/1269/7 196/1005/7 +f 235/824/216 255/971/216 296/1006/216 +f 230/847/66 273/850/66 280/1011/66 +f 236/970/185 239/823/185 286/999/185 +f 249/1013/7 233/974/7 234/975/7 +f 267/1014/233 259/1270/233 258/1015/233 +f 328/1017/234 344/1098/340 352/874/235 +f 209/1019/236 197/1252/330 185/838/163 +f 220/1021/237 212/1271/238 211/1022/238 +f 232/830/7 304/1249/7 306/1024/7 +f 225/1026/66 224/820/66 338/1027/66 +f 330/1029/239 344/1272/341 328/1030/240 +f 258/1032/242 257/1273/242 254/1033/226 +f 278/1035/7 294/832/7 295/834/7 +f 217/1037/225 337/912/7 335/1038/7 +f 307/1040/7 220/658/237 219/1001/237 +f 237/959/185 243/958/185 284/1042/185 +f 228/917/7 227/841/7 281/843/7 +f 279/1044/66 274/657/66 275/656/66 +f 324/845/243 316/1253/342 302/1046/244 +f 277/1047/66 276/1074/66 224/820/66 +f 291/1051/179 287/875/179 288/937/179 +f 189/1052/247 201/1274/343 260/1053/233 +f 244/939/7 241/1070/228 242/1055/228 +f 218/1039/214 335/1038/179 333/1059/179 +f 299/1061/250 315/1275/344 317/1062/251 +f 260/1066/242 259/1276/242 252/1067/226 +f 289/851/7 290/655/7 274/657/7 +f 245/942/7 239/823/7 240/825/7 +f 285/1069/179 289/851/179 229/849/179 +f 274/657/66 279/1044/66 280/1011/66 +f 241/1070/223 244/939/216 283/941/216 +f 293/1072/7 277/1277/7 225/1073/7 +f 276/1074/7 275/656/7 291/1051/7 +f 235/824/216 280/1007/216 285/952/216 +f 264/968/229 263/1278/229 248/1078/228 +f 286/876/179 290/655/179 289/851/179 +f 337/1279/345 339/929/211 345/928/210 +f 349/1079/254 333/1136/283 335/1080/255 +f 335/1080/255 337/1279/345 345/928/210 +f 338/1027/7 224/820/7 223/822/7 +f 317/1062/256 315/1275/346 298/1082/257 +f 336/1081/179 223/822/179 222/938/179 +f 227/841/7 313/1261/7 298/1085/7 +f 198/839/164 327/1280/347 325/1087/258 +f 343/1088/259 201/1281/343 189/1089/247 +f 344/1091/260 328/1282/260 190/1092/189 +f 336/1283/348 334/1099/268 350/873/263 +f 346/906/199 340/908/201 338/1094/262 +f 338/1094/262 336/1283/348 350/873/263 +f 325/1095/264 327/1137/349 348/1096/265 +f 346/906/7 350/873/7 349/1079/7 +f 330/1097/266 351/872/177 352/874/178 +f 332/1018/200 352/874/235 350/873/263 +f 256/960/7 253/948/226 254/1100/226 +f 283/1101/7 287/1284/7 286/1102/7 +f 257/1103/233 203/1285/276 191/1104/269 +f 192/1106/192 204/1286/191 264/1107/188 +f 278/1045/66 275/656/66 276/1074/66 +f 351/872/270 330/1097/350 329/1109/271 +f 321/867/175 323/903/196 303/905/198 +f 347/1112/274 343/1138/351 326/1113/275 +f 203/1114/276 316/1287/352 300/1115/277 +f 322/902/7 324/845/243 323/903/245 +f 187/864/172 199/1255/332 210/1117/236 +f 345/928/7 348/1096/353 347/1112/278 +f 249/1013/216 252/984/182 267/1119/181 +f 233/974/216 249/1013/216 294/1120/216 +f 333/1122/7 331/852/7 187/854/7 +f 297/1124/279 299/1061/354 318/882/280 +f 243/958/185 242/1055/248 269/1125/217 +f 255/971/216 254/1100/182 265/1126/181 +f 233/974/216 278/1121/216 287/940/216 +f 186/1127/7 325/1288/7 342/1128/7 +f 324/845/167 322/902/194 306/1129/281 +f 320/883/195 317/1062/256 313/1083/168 +f 308/1134/66 230/847/66 231/1012/66 +f 349/1079/254 351/872/270 331/1110/272 +f 347/1112/278 348/1096/353 327/1137/284 +f 199/1139/286 31/1202/286 42/1140/12 +f 204/1142/287 36/1289/287 96/1143/10 +f 264/1144/10 96/1143/10 95/1145/10 +f 263/1146/10 95/1145/10 94/1147/10 +f 197/1149/288 29/1164/288 30/1150/289 +f 198/1151/289 30/1150/289 159/1152/290 +f 259/1154/8 91/1158/8 90/1155/8 +f 260/1157/8 92/1178/8 91/1158/8 +f 36/1160/287 204/1290/287 315/1161/291 +f 315/1161/291 299/1181/298 131/1180/298 +f 131/1180/298 147/1159/291 315/1161/291 +f 210/1141/12 42/1140/12 41/1162/12 +f 209/1163/12 41/1162/12 29/1164/288 +f 212/1165/11 44/1172/11 43/1166/11 +f 302/1168/292 134/1195/292 37/1169/293 +f 207/1171/294 39/1173/294 44/1172/11 +f 205/1170/293 37/1169/293 39/1173/294 +f 33/1175/296 201/1291/296 343/1176/295 +f 343/1176/295 327/1153/290 159/1152/290 +f 159/1152/290 175/1174/295 343/1176/295 +f 201/1177/296 33/1292/296 92/1178/8 +f 206/1179/297 38/1200/297 131/1180/298 +f 162/1183/300 330/1185/300 344/1184/299 +f 344/1184/299 202/1293/302 34/1294/302 +f 34/1294/302 176/1182/299 344/1184/299 +f 330/1185/300 162/1183/300 32/1186/301 +f 258/1156/8 90/1155/8 89/1188/8 +f 262/1148/10 94/1147/10 93/1190/10 +f 261/1191/10 93/1190/10 34/1192/302 +f 134/1195/292 302/1168/292 316/1196/303 +f 316/1196/303 203/1295/304 35/1296/304 +f 35/1296/304 148/1194/303 316/1196/303 +f 257/1189/8 89/1188/8 35/1197/304 +f 208/1199/305 40/1201/305 38/1200/297 +f 211/1167/11 43/1166/11 40/1201/305 +f 200/1187/301 32/1186/301 31/1202/286 +o frame +v -0.125000 0.000000 1.500000 +v -0.125000 3.000000 1.500000 +v -0.125000 0.000000 -1.500000 +v -0.125000 3.000000 -1.500000 +v 0.125000 0.000000 1.500000 +v 0.125000 3.000000 1.500000 +v 0.125000 0.000000 -1.500000 +v 0.125000 3.000000 -1.500000 +v 0.125000 2.937500 0.737027 +v -0.125000 2.937500 0.737027 +v 0.125000 2.857760 -0.997420 +v -0.125000 2.857760 -0.997420 +v 0.125000 2.937500 -0.737027 +v -0.125000 2.937500 -0.737027 +v 0.125000 2.857760 0.997420 +v -0.125000 2.857760 0.997420 +v 0.125000 2.639908 -1.188040 +v -0.125000 2.639908 -1.188040 +v 0.125000 2.342317 -1.257812 +v -0.125000 2.342317 -1.257812 +v 0.125000 2.639908 1.188040 +v -0.125000 2.639908 1.188040 +v 0.125000 0.657683 -1.257812 +v -0.125000 0.657683 -1.257812 +v 0.125000 2.342317 1.257812 +v -0.125000 2.342317 1.257812 +v 0.125000 0.657683 1.257812 +v -0.125000 0.657683 1.257812 +v 0.125000 0.360092 -1.188040 +v -0.125000 0.360092 -1.188040 +v 0.125000 0.360092 1.188040 +v -0.125000 0.360092 1.188040 +v 0.125000 0.142239 0.997420 +v -0.125000 0.142239 0.997420 +v 0.125000 0.142239 -0.997420 +v -0.125000 0.142239 -0.997420 +v 0.125000 0.062500 -0.737027 +v -0.125000 0.062500 -0.737027 +v 0.125000 0.062500 0.737027 +v -0.125000 0.062500 0.737027 +v -0.125000 2.848552 0.726781 +v -0.125000 2.848552 -0.726781 +v 0.125000 2.848552 -0.726781 +v 0.125000 2.780064 -0.958169 +v -0.125000 2.780064 -0.958169 +v 0.125000 2.848552 0.726781 +v 0.125000 2.780064 0.958169 +v -0.125000 2.780064 0.958169 +v 0.125000 2.595050 -1.120056 +v 0.125000 2.330607 -1.179983 +v -0.125000 2.595050 -1.120056 +v -0.125000 2.330607 -1.179983 +v -0.125000 2.595050 1.120056 +v 0.125000 2.595050 1.120056 +v 0.125000 2.330607 1.179983 +v -0.125000 2.330607 1.179983 +v 0.125000 0.669393 -1.179983 +v -0.125000 0.669393 -1.179983 +v -0.125000 0.669393 1.179983 +v 0.125000 0.669393 1.179983 +v 0.125000 0.404949 1.120056 +v -0.125000 0.404949 1.120056 +v 0.125000 0.404949 -1.120056 +v -0.125000 0.404949 -1.120056 +v 0.125000 0.219935 -0.958169 +v -0.125000 0.219935 -0.958169 +v -0.125000 0.219935 0.958169 +v 0.125000 0.219935 0.958169 +v 0.125000 0.151448 -0.726781 +v -0.125000 0.151448 -0.726781 +v -0.125000 0.151448 0.726781 +v 0.125000 0.151448 0.726781 +v -0.165200 2.915023 0.725503 +v -0.165200 2.915023 -0.725503 +v 0.165200 2.912970 -0.724451 +v 0.165200 2.834591 -0.980400 +v -0.165200 2.836530 -0.981824 +v 0.165200 2.912970 0.724451 +v 0.165200 2.834591 0.980400 +v -0.165200 2.836530 0.981824 +v 0.165200 2.620457 -1.167768 +v 0.165200 2.327943 -1.236349 +v -0.165200 2.622084 -1.169464 +v -0.165200 2.329146 -1.238145 +v -0.165200 2.622084 1.169464 +v 0.165200 2.620457 1.167768 +v 0.165200 2.327943 1.236349 +v -0.165200 2.329146 1.238145 +v 0.165200 0.672056 -1.236349 +v -0.165200 0.670854 -1.238145 +v -0.165200 0.670854 1.238145 +v 0.165200 0.672056 1.236349 +v 0.165200 0.379543 1.167768 +v -0.165200 0.377916 1.169464 +v 0.165200 0.379543 -1.167768 +v -0.165200 0.377916 -1.169464 +v 0.165200 0.165408 -0.980400 +v -0.165200 0.163470 -0.981824 +v -0.165200 0.163470 0.981824 +v 0.165200 0.165408 0.980400 +v 0.165200 0.087030 -0.724451 +v -0.165200 0.084977 -0.725503 +v -0.165200 0.084977 0.725503 +v 0.165200 0.087030 0.724451 +v 0.165200 2.848552 -0.726781 +v 0.165200 0.669393 -1.179983 +v 0.165200 2.330607 -1.179983 +v -0.165200 0.219935 -0.958169 +v -0.165200 0.151448 -0.726781 +v -0.165200 2.848552 0.726781 +v -0.165200 2.848552 -0.726781 +v -0.165200 2.330607 1.179983 +v -0.165200 2.595050 1.120056 +v 0.165200 0.151448 -0.726781 +v 0.165200 0.219935 -0.958169 +v 0.165200 2.330607 1.179983 +v 0.165200 0.404949 1.120056 +v 0.165200 0.219935 0.958169 +v 0.165200 2.780064 0.958169 +v 0.165200 2.595050 1.120056 +v 0.165200 2.780064 -0.958169 +v -0.165200 2.780064 -0.958169 +v 0.165200 2.848552 0.726781 +v -0.165200 2.780064 0.958169 +v 0.165200 2.595050 -1.120056 +v -0.165200 2.595050 -1.120056 +v -0.165200 2.330607 -1.179983 +v -0.165200 0.669393 -1.179983 +v -0.165200 0.669393 1.179983 +v 0.165200 0.669393 1.179983 +v -0.165200 0.404949 1.120056 +v 0.165200 0.404949 -1.120056 +v -0.165200 0.404949 -1.120056 +v -0.165200 0.219935 0.958169 +v -0.165200 0.151448 0.726781 +v 0.165200 0.151448 0.726781 +v 0.230582 0.420818 -1.368763 +v 0.080675 0.420818 -1.368763 +v 0.080675 0.577552 -1.368763 +v 0.230582 0.577552 -1.368763 +v 0.080675 0.559258 -1.358201 +v 0.230582 0.559258 -1.358201 +v 0.080675 0.559258 -1.337076 +v 0.230582 0.559258 -1.337076 +v 0.080675 0.577552 -1.326513 +v 0.230582 0.577552 -1.326513 +v 0.080675 0.595847 -1.337076 +v 0.230582 0.595847 -1.337076 +v 0.080675 0.595847 -1.358201 +v 0.230582 0.595847 -1.358201 +v 0.080675 0.402524 -1.358201 +v 0.230582 0.402524 -1.358201 +v 0.080675 0.402524 -1.337076 +v 0.230582 0.402524 -1.337076 +v 0.080675 0.420819 -1.326513 +v 0.230582 0.420819 -1.326513 +v 0.080675 0.439113 -1.337076 +v 0.230582 0.439113 -1.337076 +v 0.080675 0.439113 -1.358201 +v 0.230582 0.439113 -1.358201 +v 0.198458 0.382969 -1.310873 +v 0.198458 0.398839 -1.286747 +v 0.198458 0.597258 -1.286747 +v 0.198458 0.613127 -1.310873 +v 0.198458 0.398839 -1.408400 +v 0.198458 0.382969 -1.384274 +v 0.198458 0.613127 -1.384274 +v 0.198458 0.597258 -1.408400 +v 0.218101 0.398839 -1.316452 +v 0.218101 0.382969 -1.340579 +v 0.218101 0.613127 -1.340579 +v 0.218101 0.597258 -1.316452 +v 0.218101 0.382969 -1.354568 +v 0.218101 0.398839 -1.378695 +v 0.218101 0.597258 -1.378695 +v 0.218101 0.613127 -1.354568 +v 0.117133 0.382969 -1.306907 +v 0.117133 0.398839 -1.286747 +v 0.117133 0.597258 -1.286747 +v 0.117133 0.613127 -1.306907 +v 0.117133 0.398839 -1.408400 +v 0.117133 0.382969 -1.388240 +v 0.117133 0.613127 -1.388240 +v 0.117133 0.597258 -1.408400 +v 0.164418 0.398839 -1.288175 +v 0.164418 0.382969 -1.308335 +v 0.164418 0.613127 -1.308335 +v 0.164418 0.597257 -1.288175 +v 0.164418 0.382969 -1.386812 +v 0.164418 0.398839 -1.406973 +v 0.164418 0.597257 -1.406973 +v 0.164418 0.613127 -1.386812 +v 0.230582 2.427027 -1.368763 +v 0.080675 2.427027 -1.368763 +v 0.080675 2.583760 -1.368763 +v 0.230582 2.583760 -1.368763 +v 0.080675 2.565465 -1.358201 +v 0.230582 2.565465 -1.358201 +v 0.080675 2.565465 -1.337076 +v 0.230582 2.565465 -1.337076 +v 0.080675 2.583760 -1.326513 +v 0.230582 2.583760 -1.326513 +v 0.080675 2.602055 -1.337076 +v 0.230582 2.602055 -1.337076 +v 0.080675 2.602055 -1.358201 +v 0.230582 2.602055 -1.358201 +v 0.080675 2.408732 -1.358201 +v 0.230582 2.408732 -1.358201 +v 0.080675 2.408732 -1.337076 +v 0.230582 2.408732 -1.337076 +v 0.080675 2.427027 -1.326513 +v 0.230582 2.427027 -1.326513 +v 0.080675 2.445322 -1.337076 +v 0.230582 2.445322 -1.337076 +v 0.080675 2.445322 -1.358201 +v 0.230582 2.445322 -1.358201 +v 0.198458 2.389177 -1.310873 +v 0.198458 2.405047 -1.286747 +v 0.198458 2.603466 -1.286747 +v 0.198458 2.619336 -1.310873 +v 0.198458 2.405047 -1.408400 +v 0.198458 2.389177 -1.384273 +v 0.198458 2.619336 -1.384273 +v 0.198458 2.603466 -1.408400 +v 0.218101 2.405047 -1.316452 +v 0.218101 2.389177 -1.340578 +v 0.218101 2.619336 -1.340578 +v 0.218101 2.603466 -1.316452 +v 0.218101 2.389177 -1.354568 +v 0.218101 2.405047 -1.378694 +v 0.218101 2.603466 -1.378694 +v 0.218101 2.619336 -1.354568 +v 0.117133 2.389177 -1.306907 +v 0.117133 2.405047 -1.286747 +v 0.117133 2.603466 -1.286747 +v 0.117133 2.619336 -1.306907 +v 0.117133 2.405047 -1.408400 +v 0.117133 2.389177 -1.388240 +v 0.117133 2.619336 -1.388240 +v 0.117133 2.603466 -1.408400 +v 0.164418 2.405047 -1.288174 +v 0.164418 2.389177 -1.308335 +v 0.164418 2.619336 -1.308335 +v 0.164418 2.603466 -1.288174 +v 0.164418 2.389177 -1.386812 +v 0.164418 2.405047 -1.406972 +v 0.164418 2.603466 -1.406972 +v 0.164418 2.619336 -1.386812 +vt 0.523106 0.381508 +vt 0.545208 0.377541 +vt 0.545208 0.381508 +vt 0.546975 0.384195 +vt 0.545208 0.388441 +vt 0.801271 0.940418 +vt 0.796004 0.931517 +vt 0.801271 0.931358 +vt 0.521338 0.385754 +vt 0.519150 0.380887 +vt 0.521338 0.384195 +vt 0.767060 0.321658 +vt 0.768828 0.324345 +vt 0.767060 0.335209 +vt 0.523105 0.392408 +vt 0.545208 0.392408 +vt 0.772134 0.929272 +vt 0.794236 0.924002 +vt 0.794236 0.929272 +vt 0.794236 0.942505 +vt 0.765099 0.940418 +vt 0.770366 0.931517 +vt 0.770366 0.940259 +vt 0.794236 0.947774 +vt 0.772134 0.942505 +vt 0.811367 0.391021 +vt 0.809329 0.387491 +vt 0.813405 0.387491 +vt 0.793185 0.331070 +vt 0.776487 0.333423 +vt 0.776487 0.331070 +vt 0.930721 0.719067 +vt 0.914023 0.721420 +vt 0.914023 0.719067 +vt 0.793185 0.333423 +vt 0.776487 0.335777 +vt 0.930721 0.716713 +vt 0.914023 0.716713 +vt 0.793185 0.321658 +vt 0.776487 0.324011 +vt 0.776487 0.321658 +vt 0.930721 0.723773 +vt 0.914023 0.726126 +vt 0.914023 0.723773 +vt 0.930721 0.728479 +vt 0.914023 0.730832 +vt 0.914023 0.728479 +vt 0.793185 0.324011 +vt 0.776487 0.326364 +vt 0.834837 0.386315 +vt 0.836875 0.387491 +vt 0.836875 0.389844 +vt 0.930721 0.726126 +vt 0.793185 0.326364 +vt 0.776487 0.328717 +vt 0.930721 0.721420 +vt 0.793185 0.328717 +vt 0.547515 0.390166 +vt 0.547515 0.386200 +vt 0.520798 0.390166 +vt 0.523105 0.388441 +vt 0.547515 0.379783 +vt 0.520798 0.379783 +vt 0.520798 0.383750 +vt 0.797093 0.947706 +vt 0.797093 0.942437 +vt 0.769277 0.947706 +vt 0.772134 0.947774 +vt 0.797093 0.924070 +vt 0.769277 0.924070 +vt 0.769277 0.929339 +vt 0.546975 0.385754 +vt 0.549163 0.380886 +vt 0.549163 0.389063 +vt 0.209594 0.970120 +vt 0.205627 0.948018 +vt 0.209594 0.948018 +vt 0.212281 0.946250 +vt 0.216527 0.948018 +vt 0.666628 0.910555 +vt 0.657727 0.915822 +vt 0.657568 0.910555 +vt 0.213840 0.971888 +vt 0.208972 0.974076 +vt 0.212281 0.971888 +vt 0.580692 0.377541 +vt 0.582460 0.380228 +vt 0.580692 0.391092 +vt 0.220494 0.970120 +vt 0.220494 0.948018 +vt 0.655481 0.939692 +vt 0.650212 0.917590 +vt 0.655482 0.917590 +vt 0.668715 0.917590 +vt 0.666628 0.946727 +vt 0.657727 0.941460 +vt 0.666469 0.941460 +vt 0.673984 0.939692 +vt 0.673984 0.917590 +vt 0.821064 0.387491 +vt 0.823102 0.386315 +vt 0.825140 0.387491 +vt 0.679555 0.971085 +vt 0.677202 0.954387 +vt 0.679555 0.954387 +vt 0.738611 0.969943 +vt 0.721913 0.972296 +vt 0.721913 0.969943 +vt 0.677202 0.971085 +vt 0.674849 0.954387 +vt 0.738611 0.967590 +vt 0.721913 0.967590 +vt 0.688968 0.971085 +vt 0.686615 0.954387 +vt 0.688968 0.954387 +vt 0.738611 0.974649 +vt 0.721913 0.977002 +vt 0.721913 0.974649 +vt 0.738611 0.979355 +vt 0.721913 0.981709 +vt 0.721913 0.979355 +vt 0.686615 0.971085 +vt 0.684261 0.954387 +vt 0.562085 0.875993 +vt 0.564123 0.877169 +vt 0.564123 0.879522 +vt 0.738611 0.977002 +vt 0.684261 0.971085 +vt 0.681908 0.954387 +vt 0.738611 0.972296 +vt 0.681908 0.971085 +vt 0.218252 0.945711 +vt 0.214285 0.945711 +vt 0.218252 0.972427 +vt 0.216527 0.970120 +vt 0.207869 0.945711 +vt 0.207869 0.972427 +vt 0.211835 0.972427 +vt 0.673916 0.914733 +vt 0.668647 0.914733 +vt 0.673916 0.942549 +vt 0.668715 0.939692 +vt 0.650280 0.914733 +vt 0.650280 0.942549 +vt 0.655549 0.942549 +vt 0.213840 0.946250 +vt 0.208972 0.944062 +vt 0.217149 0.944062 +vt 0.523106 0.377541 +vt 0.796004 0.940259 +vt 0.519150 0.389063 +vt 0.768828 0.332521 +vt 0.744958 0.335209 +vt 0.744958 0.321658 +vt 0.743190 0.332521 +vt 0.743190 0.324345 +vt 0.772134 0.924002 +vt 0.765099 0.931358 +vt 0.813405 0.389844 +vt 0.809329 0.389844 +vt 0.811367 0.386315 +vt 0.793185 0.335777 +vt 0.930721 0.730832 +vt 0.834837 0.391021 +vt 0.832799 0.389844 +vt 0.832799 0.387491 +vt 0.520798 0.386200 +vt 0.547515 0.383750 +vt 0.769277 0.942437 +vt 0.797093 0.929339 +vt 0.205627 0.970120 +vt 0.666469 0.915822 +vt 0.217148 0.974075 +vt 0.582460 0.388405 +vt 0.558590 0.391092 +vt 0.558590 0.377541 +vt 0.556823 0.388405 +vt 0.556823 0.380228 +vt 0.650212 0.939692 +vt 0.657568 0.946727 +vt 0.825140 0.389844 +vt 0.823102 0.391021 +vt 0.821064 0.389844 +vt 0.674849 0.971085 +vt 0.738611 0.981709 +vt 0.562085 0.880699 +vt 0.560047 0.879522 +vt 0.560047 0.877169 +vt 0.214285 0.972427 +vt 0.211836 0.945711 +vt 0.668647 0.942549 +vt 0.655549 0.914733 +vt 0.401359 0.003830 +vt 0.408321 0.088818 +vt 0.401361 0.338004 +vt 0.393699 0.365850 +vt 0.365852 0.031678 +vt 0.393699 0.031678 +vt 0.280864 0.038640 +vt 0.031677 0.031680 +vt 0.031677 0.365850 +vt 0.003830 0.031680 +vt 0.031677 0.003832 +vt 0.365852 0.003830 +vt 0.365852 0.393698 +vt 0.365852 0.365850 +vt 0.841888 0.485825 +vt 0.846366 0.647738 +vt 0.841888 0.647738 +vt 0.769577 0.647738 +vt 0.765099 0.485825 +vt 0.769577 0.485825 +vt 0.697356 0.474001 +vt 0.708945 0.447031 +vt 0.702588 0.475501 +vt 0.743270 0.076473 +vt 0.748362 0.239849 +vt 0.743190 0.241352 +vt 0.116663 0.358888 +vt 0.814040 0.485825 +vt 0.809562 0.458945 +vt 0.814040 0.458945 +vt 0.797425 0.485825 +vt 0.801903 0.647738 +vt 0.797425 0.647738 +vt 0.628662 0.637787 +vt 0.640527 0.664610 +vt 0.635711 0.667109 +vt 0.754815 0.268328 +vt 0.750109 0.270703 +vt 0.841888 0.458945 +vt 0.846366 0.485825 +vt 0.797425 0.458945 +vt 0.801902 0.485825 +vt 0.702448 0.637376 +vt 0.697276 0.638880 +vt 0.560135 0.473269 +vt 0.571963 0.446453 +vt 0.565468 0.474876 +vt 0.728569 0.253018 +vt 0.735531 0.003830 +vt 0.735531 0.338004 +vt 0.814040 0.647738 +vt 0.809562 0.485825 +vt 0.765099 0.458945 +vt 0.769577 0.458945 +vt 0.586568 0.692218 +vt 0.571913 0.664610 +vt 0.590826 0.688728 +vt 0.769577 0.702002 +vt 0.765099 0.674618 +vt 0.769577 0.674618 +vt 0.841888 0.674618 +vt 0.814040 0.702002 +vt 0.814040 0.674618 +vt 0.841888 0.702002 +vt 0.814040 0.732206 +vt 0.814040 0.431561 +vt 0.841888 0.401357 +vt 0.841888 0.431561 +vt 0.797425 0.674618 +vt 0.797425 0.702002 +vt 0.878810 0.196531 +vt 0.850962 0.381573 +vt 0.850963 0.196531 +vt 0.769577 0.732206 +vt 0.797425 0.732206 +vt 0.797425 0.431561 +vt 0.769577 0.431561 +vt 0.797425 0.401357 +vt 0.769577 0.401357 +vt 0.850962 0.188872 +vt 0.878810 0.003830 +vt 0.878810 0.188872 +vt 0.769214 0.021788 +vt 0.754859 0.049503 +vt 0.750154 0.047134 +vt 0.801903 0.702002 +vt 0.769193 0.296049 +vt 0.773358 0.292689 +vt 0.801903 0.458945 +vt 0.586590 0.418847 +vt 0.567148 0.443960 +vt 0.765099 0.431561 +vt 0.797900 0.313998 +vt 0.801475 0.310034 +vt 0.801903 0.431561 +vt 0.615740 0.401357 +vt 0.590849 0.422333 +vt 0.765099 0.401357 +vt 0.797897 0.003830 +vt 0.773379 0.025144 +vt 0.801903 0.732206 +vt 0.615746 0.709695 +vt 0.619388 0.705598 +vt 0.765099 0.702002 +vt 0.979972 0.974174 +vt 0.974896 0.788118 +vt 0.979972 0.786518 +vt 0.883288 0.381573 +vt 0.878810 0.381573 +vt 0.572625 0.636718 +vt 0.578156 0.662994 +vt 0.634082 0.474876 +vt 0.641239 0.636718 +vt 0.633938 0.636178 +vt 0.955972 0.972704 +vt 0.949494 0.787822 +vt 0.955973 0.787985 +vt 0.565324 0.636178 +vt 0.710061 0.475048 +vt 0.931894 0.505372 +vt 0.925415 0.320490 +vt 0.931894 0.320653 +vt 0.748502 0.077974 +vt 0.755924 0.240301 +vt 0.646770 0.662995 +vt 0.989892 0.128323 +vt 0.996170 0.313071 +vt 0.989892 0.312775 +vt 0.761304 0.266651 +vt 0.710010 0.637828 +vt 0.755560 0.707562 +vt 0.731650 0.685815 +vt 0.757439 0.701378 +vt 0.572689 0.474336 +vt 0.659463 0.422333 +vt 0.689616 0.411717 +vt 0.663366 0.426670 +vt 0.594728 0.684386 +vt 0.646819 0.448064 +vt 0.640577 0.446453 +vt 0.974896 0.972573 +vt 0.968618 0.787822 +vt 0.641303 0.474336 +vt 0.755975 0.077521 +vt 0.621002 0.699326 +vt 0.708900 0.665856 +vt 0.715389 0.664178 +vt 0.801472 0.007790 +vt 0.777586 0.029541 +vt 0.659440 0.688728 +vt 0.689617 0.699326 +vt 0.688002 0.705598 +vt 0.621002 0.411717 +vt 0.594752 0.426670 +vt 0.755558 0.405318 +vt 0.731671 0.427068 +vt 0.727464 0.422672 +vt 0.777564 0.288288 +vt 0.803354 0.303850 +vt 0.663342 0.684386 +vt 0.578204 0.448064 +vt 0.715432 0.448705 +vt 0.727443 0.690216 +vt 0.761346 0.051177 +vt 0.560047 0.637787 +vt 0.628749 0.473269 +vt 0.765099 0.647738 +vt 0.846366 0.674618 +vt 0.567097 0.667109 +vt 0.801903 0.674618 +vt 0.809562 0.647738 +vt 0.704195 0.668230 +vt 0.846366 0.431561 +vt 0.684360 0.709695 +vt 0.809562 0.401357 +vt 0.814040 0.401357 +vt 0.751982 0.401357 +vt 0.723300 0.419316 +vt 0.846366 0.458945 +vt 0.655182 0.692219 +vt 0.809562 0.431561 +vt 0.704240 0.444662 +vt 0.809562 0.674618 +vt 0.723279 0.693576 +vt 0.846366 0.702002 +vt 0.655204 0.418847 +vt 0.635762 0.443960 +vt 0.846366 0.732206 +vt 0.841888 0.732206 +vt 0.684355 0.401357 +vt 0.809562 0.702002 +vt 0.751986 0.711526 +vt 0.846484 0.003830 +vt 0.850963 0.003830 +vt 0.984815 0.126722 +vt 0.984816 0.314376 +vt 0.883288 0.188872 +vt 0.936879 0.506839 +vt 0.936879 0.319186 +vt 0.846484 0.196531 +vt 0.960957 0.974171 +vt 0.960957 0.786518 +vt 0.662272 0.030807 +vt 0.474619 0.030807 +vt 0.441471 0.303256 +vt 0.474619 0.311027 +vt 0.417204 0.282023 +vt 0.441470 0.038579 +vt 0.417203 0.059813 +vt 0.408322 0.253018 +vt 0.338874 0.292590 +vt 0.338874 0.104938 +vt 0.066426 0.071790 +vt 0.058654 0.104939 +vt 0.087659 0.047523 +vt 0.331102 0.071789 +vt 0.309869 0.047522 +vt 0.116664 0.038641 +vt 0.003830 0.365850 +vt 0.031677 0.393698 +vt 0.058654 0.292591 +vt 0.331102 0.325739 +vt 0.309869 0.350006 +vt 0.066426 0.325740 +vt 0.087659 0.350006 +vt 0.280864 0.358888 +vt 0.662272 0.311027 +vt 0.695421 0.038579 +vt 0.719687 0.059812 +vt 0.695421 0.303255 +vt 0.719687 0.282022 +vt 0.728569 0.088816 +vt 0.801903 0.401357 +vt 0.619384 0.405449 +vt 0.765099 0.732206 +vt 0.883288 0.196531 +vt 0.949494 0.972866 +vt 0.925415 0.505535 +vt 0.996170 0.128027 +vt 0.687998 0.405449 +vt 0.968617 0.972870 +vt 0.803354 0.013970 +vt 0.757439 0.411498 +vt 0.846366 0.401357 +vt 0.809562 0.732206 +vt 0.846484 0.188872 +vt 0.883288 0.003830 +vt 0.846484 0.381573 +vn 0.8341 0.0000 0.5516 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.8341 0.0000 -0.5516 +vn 0.0302 0.0000 0.9995 +vn 0.0302 0.0000 -0.9995 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 0.5000 0.8660 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 0.5000 -0.8660 +vn 0.6392 -0.6425 -0.4226 +vn 0.6392 0.6425 -0.4226 +vn 0.6392 -0.6425 0.4226 +vn 0.6391 0.6425 0.4226 +vn 0.0187 -0.7856 -0.6184 +vn 0.0187 0.7856 -0.6184 +vn 0.0187 -0.7856 0.6184 +vn 0.0187 0.7856 0.6184 +vn 0.6392 0.6425 0.4227 +vn 0.6391 -0.6425 0.4226 +vn 0.6392 0.6425 0.4226 +vn 0.6391 -0.6425 0.4227 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.9897 0.1434 +vn 0.0000 -0.9897 -0.1434 +vn 0.0000 0.9897 -0.1434 +vn 0.0000 0.9897 0.1434 +vn -0.5135 0.8467 -0.1398 +vn -0.5473 0.7055 -0.4502 +vn -0.5093 0.8532 -0.1126 +vn -0.5135 -0.8467 0.1398 +vn -0.5093 -0.8532 -0.1126 +vn -0.5135 -0.8467 -0.1398 +vn 0.0000 -0.9589 0.2838 +vn 0.0000 -0.8420 0.5395 +vn 0.5469 0.8259 -0.1371 +vn 0.5809 0.6864 -0.4376 +vn 0.5811 0.6808 -0.4458 +vn -0.5473 -0.7055 -0.4502 +vn -0.5475 -0.7002 -0.4582 +vn 0.0000 0.8420 0.5395 +vn -0.5093 0.8532 0.1126 +vn -0.5135 0.8467 0.1398 +vn 0.5469 -0.8259 -0.1371 +vn 0.5809 -0.6864 -0.4376 +vn 0.5424 -0.8330 -0.1090 +vn 0.0000 0.9589 0.2838 +vn 0.5589 -0.3954 0.7289 +vn 0.5809 -0.6864 0.4376 +vn 0.5529 -0.3591 0.7519 +vn 0.0000 0.4536 -0.8912 +vn 0.0000 0.6585 -0.7526 +vn 0.0000 0.8420 -0.5395 +vn 0.0000 -0.8420 -0.5395 +vn 0.0000 -0.4536 -0.8912 +vn 0.0000 -0.1112 -0.9938 +vn 0.0000 -0.4536 0.8912 +vn 0.0000 -0.1112 0.9938 +vn 0.0000 0.1112 -0.9938 +vn 0.0000 0.4536 0.8912 +vn 0.0000 0.1112 0.9938 +vn -0.5253 -0.4049 0.7484 +vn -0.5473 -0.7055 0.4502 +vn -0.5475 -0.7002 0.4582 +vn -0.5253 -0.4049 -0.7484 +vn -0.5198 -0.3697 -0.7702 +vn 0.0000 0.6585 0.7526 +vn 0.5589 -0.3954 -0.7289 +vn 0.5811 -0.6808 -0.4458 +vn -0.4669 -0.1159 -0.8767 +vn -0.4604 -0.0861 -0.8835 +vn 0.4994 -0.1145 -0.8588 +vn 0.5529 -0.3591 -0.7519 +vn -0.4669 -0.1159 0.8767 +vn -0.5198 -0.3697 0.7702 +vn 0.4994 -0.1145 0.8588 +vn 0.4924 -0.0833 0.8664 +vn 0.4924 0.0833 0.8664 +vn 0.4994 0.1145 0.8588 +vn 0.5424 -0.8330 0.1090 +vn 0.5469 -0.8259 0.1371 +vn 0.5469 0.8259 0.1371 +vn 0.5424 0.8330 -0.1090 +vn 0.0000 -0.9589 -0.2838 +vn 0.5811 -0.6808 0.4458 +vn 0.5809 0.6864 0.4376 +vn 0.5424 0.8330 0.1090 +vn 0.0000 0.9589 -0.2838 +vn -0.5093 -0.8532 0.1126 +vn -0.5473 0.7055 0.4502 +vn -0.5475 0.7002 0.4582 +vn 0.4994 0.1145 -0.8588 +vn 0.5529 0.3591 -0.7519 +vn 0.4924 0.0833 -0.8664 +vn -0.4669 0.1159 -0.8767 +vn -0.5198 0.3697 -0.7702 +vn -0.5253 0.4049 -0.7484 +vn 0.0000 -0.6585 0.7526 +vn 0.5589 0.3954 -0.7289 +vn -0.5475 0.7002 -0.4582 +vn 0.0000 -0.6585 -0.7526 +vn -0.5253 0.4049 0.7484 +vn -0.5198 0.3697 0.7702 +vn 0.5589 0.3954 0.7289 +vn 0.5811 0.6808 0.4458 +vn 0.5529 0.3591 0.7519 +vn -0.4669 0.1159 0.8767 +vn -0.4604 0.0861 0.8835 +vn 0.4924 -0.0833 -0.8664 +vn -0.4605 0.0861 -0.8835 +vn -0.4605 -0.0861 0.8835 +s off +f 812/1297/355 802/1298/355 809/1299/355 +f 809/1299/356 810/1300/356 814/1301/356 +f 822/1302/357 826/1303/357 817/1304/357 +f 816/1305/358 804/1306/358 811/1307/358 +f 805/1308/359 806/1309/359 802/1310/359 +f 808/1311/360 814/1301/360 805/1312/360 +f 828/1313/361 818/1314/361 825/1315/361 +f 825/1315/356 826/1303/356 830/1316/356 +f 823/1317/358 827/1318/358 832/1319/358 +f 821/1320/362 831/1321/362 830/1316/362 +f 777/1322/356 798/1323/356 794/1324/356 +f 780/1325/363 781/1326/363 779/1327/363 +f 796/1328/364 797/1329/364 795/1330/364 +f 782/1331/357 783/1332/357 781/1326/357 +f 794/1333/365 795/1330/365 793/1334/365 +f 784/1335/365 785/1336/365 783/1337/365 +f 800/1338/366 778/1339/366 799/1340/366 +f 792/1341/357 793/1342/357 791/1343/357 +f 786/1344/364 787/1345/364 785/1336/364 +f 788/1346/356 786/1347/356 784/1348/356 +f 777/1349/363 791/1343/363 778/1339/363 +f 788/1350/358 789/1351/358 787/1345/358 +f 798/1352/358 799/1340/358 797/1329/358 +f 790/1353/366 779/1327/366 789/1351/366 +f 806/1354/367 814/1301/367 813/1355/367 +f 807/1356/368 815/1357/368 808/1311/368 +f 801/1358/369 809/1299/369 802/1298/369 +f 804/1359/370 812/1297/370 811/1360/370 +f 822/1361/371 830/1316/371 829/1362/371 +f 823/1363/372 831/1321/372 824/1364/372 +f 817/1365/373 825/1315/373 818/1314/373 +f 820/1366/374 828/1313/374 827/1367/374 +f 813/1368/357 801/1369/357 806/1370/357 +f 868/1371/355 858/1372/355 865/1373/355 +f 865/1373/356 866/1374/356 870/1375/356 +f 878/1376/357 882/1377/357 873/1378/357 +f 872/1379/358 860/1380/358 867/1381/358 +f 861/1382/359 862/1383/359 858/1384/359 +f 864/1385/360 870/1375/360 861/1386/360 +f 884/1387/361 874/1388/361 881/1389/361 +f 881/1389/356 882/1377/356 886/1390/356 +f 879/1391/358 883/1392/358 888/1393/358 +f 880/1394/362 886/1390/362 877/1395/362 +f 854/1396/356 852/1397/356 850/1398/356 +f 836/1399/363 837/1400/363 835/1401/363 +f 852/1402/364 853/1403/364 851/1404/364 +f 838/1405/357 839/1406/357 837/1400/357 +f 850/1407/365 851/1404/365 849/1408/365 +f 840/1409/365 841/1410/365 839/1411/365 +f 856/1412/366 834/1413/366 855/1414/366 +f 848/1415/357 849/1416/357 847/1417/357 +f 842/1418/364 843/1419/364 841/1410/364 +f 844/1420/356 842/1421/356 840/1422/356 +f 833/1423/363 847/1417/363 834/1413/363 +f 844/1424/358 845/1425/358 843/1419/358 +f 854/1426/358 855/1414/358 853/1403/358 +f 846/1427/366 835/1401/366 845/1425/366 +f 862/1428/367 870/1375/367 869/1429/367 +f 863/1430/368 871/1431/368 864/1385/368 +f 857/1432/369 865/1373/369 858/1372/369 +f 860/1433/375 868/1371/375 867/1434/375 +f 878/1435/371 886/1390/371 885/1436/371 +f 879/1437/372 887/1438/372 880/1394/372 +f 873/1439/373 881/1389/373 874/1388/373 +f 876/1440/374 884/1387/374 883/1441/374 +f 869/1442/357 857/1443/357 862/1444/357 +f 812/1297/355 803/1445/355 802/1298/355 +f 810/1300/356 813/1368/356 814/1301/356 +f 814/1301/356 815/1357/356 812/1297/356 +f 815/1357/356 816/1305/356 812/1297/356 +f 816/1305/356 811/1307/356 812/1297/356 +f 812/1297/356 809/1299/356 814/1301/356 +f 822/1302/357 829/1446/357 826/1303/357 +f 816/1305/358 807/1447/358 804/1306/358 +f 806/1309/359 801/1448/359 802/1310/359 +f 802/1310/359 803/1449/359 808/1450/359 +f 803/1449/359 804/1451/359 808/1450/359 +f 804/1451/359 807/1452/359 808/1450/359 +f 808/1450/359 805/1308/359 802/1310/359 +f 808/1311/360 815/1357/360 814/1301/360 +f 828/1313/361 819/1453/361 818/1314/361 +f 826/1303/356 829/1446/356 830/1316/356 +f 830/1316/356 831/1321/356 828/1313/356 +f 831/1321/356 832/1319/356 828/1313/356 +f 832/1319/356 827/1318/356 828/1313/356 +f 828/1313/356 825/1315/356 830/1316/356 +f 823/1317/358 820/1454/358 827/1318/358 +f 821/1320/362 824/1364/362 831/1321/362 +f 794/1324/356 792/1455/356 777/1322/356 +f 777/1322/356 800/1456/356 798/1323/356 +f 798/1323/356 796/1457/356 794/1324/356 +f 780/1325/363 782/1331/363 781/1326/363 +f 796/1328/364 798/1352/364 797/1329/364 +f 782/1331/357 784/1458/357 783/1332/357 +f 794/1333/365 796/1328/365 795/1330/365 +f 784/1335/365 786/1344/365 785/1336/365 +f 800/1338/366 777/1349/366 778/1339/366 +f 792/1341/357 794/1459/357 793/1342/357 +f 786/1344/364 788/1350/364 787/1345/364 +f 784/1348/356 782/1460/356 788/1346/356 +f 782/1460/356 780/1461/356 788/1346/356 +f 780/1461/356 790/1462/356 788/1346/356 +f 777/1349/363 792/1341/363 791/1343/363 +f 788/1350/358 790/1353/358 789/1351/358 +f 798/1352/358 800/1338/358 799/1340/358 +f 790/1353/366 780/1325/366 779/1327/366 +f 806/1354/367 805/1312/367 814/1301/367 +f 807/1356/368 816/1463/368 815/1357/368 +f 801/1358/376 810/1464/376 809/1299/376 +f 804/1359/377 803/1445/377 812/1297/377 +f 822/1361/371 821/1320/371 830/1316/371 +f 823/1363/372 832/1465/372 831/1321/372 +f 817/1365/373 826/1466/373 825/1315/373 +f 820/1366/374 819/1453/374 828/1313/374 +f 813/1368/357 810/1300/357 801/1369/357 +f 868/1371/355 859/1467/355 858/1372/355 +f 866/1374/356 869/1442/356 870/1375/356 +f 870/1375/356 871/1431/356 868/1371/356 +f 871/1431/356 872/1379/356 868/1371/356 +f 872/1379/356 867/1381/356 868/1371/356 +f 868/1371/356 865/1373/356 870/1375/356 +f 878/1376/357 885/1468/357 882/1377/357 +f 872/1379/358 863/1469/358 860/1380/358 +f 862/1383/359 857/1470/359 858/1384/359 +f 858/1384/359 859/1471/359 864/1472/359 +f 859/1471/359 860/1473/359 864/1472/359 +f 860/1473/359 863/1474/359 864/1472/359 +f 864/1472/359 861/1382/359 858/1384/359 +f 864/1385/360 871/1431/360 870/1375/360 +f 884/1387/361 875/1475/361 874/1388/361 +f 882/1377/356 885/1468/356 886/1390/356 +f 886/1390/356 887/1438/356 884/1387/356 +f 887/1438/356 888/1393/356 884/1387/356 +f 888/1393/356 883/1392/356 884/1387/356 +f 884/1387/356 881/1389/356 886/1390/356 +f 879/1391/358 876/1476/358 883/1392/358 +f 880/1394/362 887/1438/362 886/1390/362 +f 850/1398/356 848/1477/356 854/1396/356 +f 848/1477/356 833/1478/356 854/1396/356 +f 833/1478/356 856/1479/356 854/1396/356 +f 836/1399/363 838/1405/363 837/1400/363 +f 852/1402/364 854/1426/364 853/1403/364 +f 838/1405/357 840/1480/357 839/1406/357 +f 850/1407/365 852/1402/365 851/1404/365 +f 840/1409/365 842/1418/365 841/1410/365 +f 856/1412/366 833/1423/366 834/1413/366 +f 848/1415/357 850/1481/357 849/1416/357 +f 842/1418/364 844/1424/364 843/1419/364 +f 840/1422/356 838/1482/356 844/1420/356 +f 838/1482/356 836/1483/356 844/1420/356 +f 836/1483/356 846/1484/356 844/1420/356 +f 833/1423/363 848/1415/363 847/1417/363 +f 844/1424/358 846/1427/358 845/1425/358 +f 854/1426/358 856/1412/358 855/1414/358 +f 846/1427/366 836/1399/366 835/1401/366 +f 862/1428/367 861/1386/367 870/1375/367 +f 863/1430/368 872/1485/368 871/1431/368 +f 857/1432/378 866/1486/378 865/1373/378 +f 860/1433/375 859/1467/375 868/1371/375 +f 878/1435/371 877/1395/371 886/1390/371 +f 879/1437/372 888/1487/372 887/1438/372 +f 873/1439/373 882/1488/373 881/1389/373 +f 876/1440/374 875/1475/374 884/1387/374 +f 869/1442/357 866/1374/357 857/1443/357 +s 1 +f 641/1489/359 680/1490/359 643/1491/359 +f 644/1492/379 647/1493/379 643/1494/379 +f 647/1493/356 677/1495/356 645/1496/356 +f 646/1497/380 641/1498/380 645/1496/380 +f 647/1493/357 641/1499/357 643/1500/357 +f 644/1501/358 646/1497/358 648/1502/358 +f 683/1503/381 763/1504/382 686/1505/382 +f 712/1506/383 754/1507/384 709/1508/384 +f 654/1509/385 717/1510/386 714/1511/387 +f 680/1512/388 742/1513/389 678/1514/390 +f 649/1515/356 648/1502/356 646/1497/356 +f 682/1516/381 762/1517/391 685/1518/392 +f 710/1519/384 775/1520/383 711/1521/383 +f 653/1522/393 716/1523/394 651/1524/395 +f 678/1514/390 738/1525/396 676/1526/397 +f 684/1527/392 745/1528/381 683/1503/381 +f 706/1529/398 749/1530/384 710/1519/384 +f 654/1509/385 713/1531/399 650/1532/400 +f 677/1533/401 737/1534/402 741/1535/403 +f 654/1536/359 642/1537/359 644/1538/359 +f 681/1539/382 751/1540/381 682/1516/381 +f 709/1508/384 755/1541/404 705/1542/398 +f 671/1543/405 740/1544/406 733/1545/407 +f 701/1546/408 758/1547/409 708/1548/410 +f 687/1549/411 693/1550/412 688/1551/411 +f 694/1552/412 696/1553/413 693/1550/412 +f 686/1505/382 688/1551/411 681/1539/382 +f 683/1503/381 681/1539/382 682/1516/381 +f 691/1554/414 690/1555/415 689/1556/414 +f 712/1506/383 710/1519/384 711/1521/383 +f 682/1516/381 684/1527/392 683/1503/381 +f 685/1518/392 689/1556/414 684/1527/392 +f 701/1546/408 707/1557/410 702/1558/408 +f 708/1548/410 711/1521/383 707/1557/410 +f 706/1529/398 709/1508/384 705/1542/398 +f 695/1559/413 699/1560/416 696/1561/413 +f 700/1562/416 702/1558/408 699/1563/416 +f 704/1564/417 705/1542/398 703/1565/417 +f 698/1566/418 703/1565/417 697/1567/418 +f 697/1568/418 692/1569/415 698/1570/418 +f 672/1571/419 739/1572/420 674/1573/421 +f 707/1557/410 771/1574/408 702/1558/408 +f 670/1575/422 738/1525/396 736/1576/423 +f 704/1564/417 748/1577/424 706/1529/398 +f 669/1578/425 737/1534/402 675/1579/426 +f 705/1542/398 772/1580/417 703/1565/417 +f 664/1581/427 736/1576/423 730/1582/428 +f 698/1566/418 773/1583/417 704/1564/417 +f 663/1584/429 735/1585/430 669/1578/425 +f 703/1565/417 746/1586/418 697/1567/418 +f 668/1587/431 734/1588/432 672/1571/419 +f 702/1558/408 769/1589/416 699/1563/416 +f 667/1590/433 733/1545/407 732/1591/434 +f 700/1562/416 757/1592/408 701/1546/408 +f 667/1593/433 727/1594/435 665/1595/436 +f 695/1559/413 770/1596/416 700/1597/416 +f 740/1544/356 776/1598/356 758/1599/356 +f 718/1600/356 745/1601/356 715/1602/356 +f 728/1603/359 769/1604/359 731/1605/359 +f 741/1535/356 776/1598/356 744/1606/356 +f 717/1510/359 751/1607/359 714/1511/359 +f 730/1608/359 767/1609/359 724/1610/359 +f 743/1611/359 749/1612/359 742/1513/359 +f 716/1523/356 745/1601/356 761/1613/356 +f 722/1614/356 746/1615/356 729/1616/356 +f 738/1525/359 749/1612/359 748/1617/359 +f 714/1511/359 750/1618/359 713/1531/359 +f 728/1619/359 753/1620/359 752/1621/359 +f 737/1534/356 754/1622/356 741/1535/356 +f 726/1623/356 756/1624/356 760/1625/356 +f 733/1545/356 758/1599/356 757/1626/356 +f 726/1623/356 759/1627/356 719/1628/356 +f 732/1629/356 756/1630/356 727/1594/356 +f 719/1628/356 763/1631/356 718/1600/356 +f 739/1572/359 775/1632/359 743/1611/359 +f 733/1545/356 770/1633/356 732/1591/356 +f 720/1634/359 750/1618/359 764/1635/359 +f 731/1636/359 771/1637/359 734/1588/359 +f 721/1638/356 747/1639/356 722/1640/356 +f 735/1585/356 746/1641/356 772/1642/356 +f 724/1643/359 766/1644/359 723/1645/359 +f 730/1582/359 773/1646/359 768/1647/359 +f 721/1638/356 761/1613/356 765/1648/356 +f 735/1585/356 755/1649/356 737/1534/356 +f 723/1645/359 762/1650/359 717/1510/359 +f 736/1576/359 748/1617/359 773/1646/359 +f 725/1651/359 764/1635/359 753/1620/359 +f 734/1588/359 774/1652/359 739/1572/359 +f 677/1533/401 744/1606/437 679/1653/438 +f 649/1654/439 715/1602/440 653/1522/393 +f 708/1548/410 776/1655/383 712/1506/383 +f 686/1505/382 759/1656/441 687/1549/411 +f 679/1653/438 740/1544/406 673/1657/442 +f 649/1654/439 719/1628/443 718/1600/444 +f 711/1521/383 774/1658/445 707/1557/410 +f 688/1551/411 750/1659/382 681/1539/382 +f 680/1512/388 739/1572/420 743/1611/446 +f 650/1532/400 720/1634/447 656/1660/448 +f 690/1555/415 765/1661/414 689/1556/414 +f 659/1662/449 721/1638/450 722/1640/451 +f 691/1554/414 767/1663/415 692/1664/415 +f 660/1665/452 723/1645/453 658/1666/454 +f 689/1556/414 761/1667/455 684/1527/392 +f 657/1668/456 716/1523/394 721/1638/450 +f 685/1518/392 766/1669/414 691/1554/414 +f 658/1666/454 717/1510/386 652/1670/457 +f 693/1550/412 764/1671/458 688/1551/411 +f 662/1672/459 720/1634/447 725/1651/460 +f 687/1549/411 760/1673/412 694/1552/412 +f 661/1674/461 719/1628/443 655/1675/462 +f 694/1552/412 756/1676/413 695/1677/413 +f 665/1678/436 726/1623/463 661/1674/461 +f 696/1553/413 753/1679/412 693/1550/412 +f 666/1680/464 725/1651/460 728/1619/465 +f 697/1568/418 747/1681/415 690/1682/415 +f 659/1683/449 729/1616/466 663/1684/429 +f 692/1569/415 768/1685/418 698/1570/418 +f 664/1686/427 724/1610/467 660/1687/452 +f 699/1560/416 752/1688/413 696/1561/413 +f 666/1689/464 731/1605/468 668/1690/431 +f 641/1489/359 642/1537/359 666/1691/359 +f 641/1489/359 666/1691/359 668/1692/359 +f 670/1693/359 664/1694/359 643/1491/359 +f 676/1695/359 670/1693/359 643/1491/359 +f 641/1489/359 668/1692/359 672/1696/359 +f 641/1489/359 672/1696/359 674/1697/359 +f 678/1698/359 676/1695/359 643/1491/359 +f 641/1489/359 674/1697/359 680/1490/359 +f 680/1490/359 678/1698/359 643/1491/359 +f 644/1492/379 648/1502/379 647/1493/379 +f 647/1493/356 648/1502/356 659/1699/356 +f 647/1493/356 659/1699/356 663/1700/356 +f 671/1701/356 667/1702/356 645/1496/356 +f 673/1703/356 671/1701/356 645/1496/356 +f 647/1493/356 663/1700/356 669/1704/356 +f 647/1493/356 669/1704/356 675/1705/356 +f 679/1706/356 673/1703/356 645/1496/356 +f 647/1493/356 675/1705/356 677/1495/356 +f 677/1495/356 679/1706/356 645/1496/356 +f 646/1497/380 642/1707/380 641/1498/380 +f 647/1493/357 645/1496/357 641/1499/357 +f 644/1501/358 642/1708/358 646/1497/358 +f 683/1503/381 745/1528/381 763/1504/382 +f 712/1506/383 776/1655/383 754/1507/384 +f 654/1509/385 652/1670/457 717/1510/386 +f 680/1512/388 743/1611/446 742/1513/389 +f 646/1497/356 645/1496/356 667/1702/356 +f 646/1497/356 667/1702/356 665/1709/356 +f 657/1710/356 659/1699/356 648/1502/356 +f 651/1711/356 657/1710/356 648/1502/356 +f 646/1497/356 665/1709/356 661/1712/356 +f 646/1497/356 661/1712/356 655/1713/356 +f 653/1714/356 651/1711/356 648/1502/356 +f 646/1497/356 655/1713/356 649/1515/356 +f 649/1515/356 653/1714/356 648/1502/356 +f 682/1516/381 751/1540/381 762/1517/391 +f 710/1519/384 749/1530/384 775/1520/383 +f 653/1522/393 715/1602/440 716/1523/394 +f 678/1514/390 742/1513/389 738/1525/396 +f 684/1527/392 761/1667/391 745/1528/381 +f 706/1529/398 748/1577/404 749/1530/384 +f 654/1509/385 714/1511/387 713/1531/399 +f 677/1533/401 675/1579/426 737/1534/402 +f 644/1538/359 643/1491/359 664/1694/359 +f 644/1538/359 664/1694/359 660/1715/359 +f 662/1716/359 666/1691/359 642/1537/359 +f 656/1717/359 662/1716/359 642/1537/359 +f 644/1538/359 660/1715/359 658/1718/359 +f 644/1538/359 658/1718/359 652/1719/359 +f 650/1720/359 656/1717/359 642/1537/359 +f 644/1538/359 652/1719/359 654/1536/359 +f 654/1536/359 650/1720/359 642/1537/359 +f 681/1539/382 750/1659/382 751/1540/381 +f 709/1508/384 754/1507/384 755/1541/404 +f 671/1543/405 673/1657/442 740/1544/406 +f 701/1546/408 757/1592/408 758/1547/409 +f 687/1549/411 694/1552/412 693/1550/412 +f 694/1552/412 695/1677/413 696/1553/413 +f 686/1505/382 687/1549/411 688/1551/411 +f 683/1503/381 686/1505/382 681/1539/382 +f 691/1554/414 692/1664/415 690/1555/415 +f 712/1506/383 709/1508/384 710/1519/384 +f 682/1516/381 685/1518/392 684/1527/392 +f 685/1518/392 691/1554/414 689/1556/414 +f 701/1546/408 708/1548/410 707/1557/410 +f 708/1548/410 712/1506/383 711/1521/383 +f 706/1529/398 710/1519/384 709/1508/384 +f 695/1559/413 700/1597/416 699/1560/416 +f 700/1562/416 701/1546/408 702/1558/408 +f 704/1564/417 706/1529/398 705/1542/398 +f 698/1566/418 704/1564/417 703/1565/417 +f 697/1568/418 690/1682/415 692/1569/415 +f 672/1571/419 734/1588/432 739/1572/420 +f 707/1557/410 774/1658/409 771/1574/408 +f 670/1575/422 676/1526/397 738/1525/396 +f 704/1564/417 773/1583/417 748/1577/424 +f 669/1578/425 735/1585/430 737/1534/402 +f 705/1542/398 755/1541/424 772/1580/417 +f 664/1581/427 670/1575/422 736/1576/423 +f 698/1566/418 768/1721/418 773/1583/417 +f 663/1584/429 729/1722/466 735/1585/430 +f 703/1565/417 772/1580/417 746/1586/418 +f 668/1587/431 731/1636/468 734/1588/432 +f 702/1558/408 771/1574/408 769/1589/416 +f 667/1590/433 671/1543/405 733/1545/407 +f 700/1562/416 770/1723/416 757/1592/408 +f 667/1593/433 732/1629/434 727/1594/435 +f 695/1559/413 756/1724/413 770/1596/416 +f 740/1544/356 744/1606/356 776/1598/356 +f 718/1600/356 763/1631/356 745/1601/356 +f 728/1603/359 752/1725/359 769/1604/359 +f 741/1535/356 754/1622/356 776/1598/356 +f 717/1510/359 762/1650/359 751/1607/359 +f 730/1608/359 768/1726/359 767/1609/359 +f 743/1611/359 775/1632/359 749/1612/359 +f 716/1523/356 715/1602/356 745/1601/356 +f 722/1614/356 747/1727/356 746/1615/356 +f 738/1525/359 742/1513/359 749/1612/359 +f 714/1511/359 751/1607/359 750/1618/359 +f 728/1619/359 725/1651/359 753/1620/359 +f 737/1534/356 755/1649/356 754/1622/356 +f 726/1623/356 727/1728/356 756/1624/356 +f 733/1545/356 740/1544/356 758/1599/356 +f 726/1623/356 760/1625/356 759/1627/356 +f 732/1629/356 770/1729/356 756/1630/356 +f 719/1628/356 759/1627/356 763/1631/356 +f 739/1572/359 774/1652/359 775/1632/359 +f 733/1545/356 757/1626/356 770/1633/356 +f 720/1634/359 713/1531/359 750/1618/359 +f 731/1636/359 769/1730/359 771/1637/359 +f 721/1638/356 765/1648/356 747/1639/356 +f 735/1585/356 729/1722/356 746/1641/356 +f 724/1643/359 767/1731/359 766/1644/359 +f 730/1582/359 736/1576/359 773/1646/359 +f 721/1638/356 716/1523/356 761/1613/356 +f 735/1585/356 772/1642/356 755/1649/356 +f 723/1645/359 766/1644/359 762/1650/359 +f 736/1576/359 738/1525/359 748/1617/359 +f 725/1651/359 720/1634/359 764/1635/359 +f 734/1588/359 771/1637/359 774/1652/359 +f 677/1533/401 741/1535/403 744/1606/437 +f 649/1654/439 718/1600/444 715/1602/440 +f 708/1548/410 758/1547/445 776/1655/383 +f 686/1505/382 763/1504/382 759/1656/441 +f 679/1653/438 744/1606/437 740/1544/406 +f 649/1654/439 655/1675/462 719/1628/443 +f 711/1521/383 775/1520/383 774/1658/445 +f 688/1551/411 764/1671/441 750/1659/382 +f 680/1512/388 674/1573/421 739/1572/420 +f 650/1532/400 713/1531/399 720/1634/447 +f 690/1555/415 747/1732/415 765/1661/414 +f 659/1662/449 657/1668/456 721/1638/450 +f 691/1554/414 766/1669/414 767/1663/415 +f 660/1665/452 724/1643/467 723/1645/453 +f 689/1556/414 765/1661/414 761/1667/455 +f 657/1668/456 651/1524/395 716/1523/394 +f 685/1518/392 762/1517/455 766/1669/414 +f 658/1666/454 723/1645/453 717/1510/386 +f 693/1550/412 753/1679/412 764/1671/458 +f 662/1672/459 656/1660/448 720/1634/447 +f 687/1549/411 759/1656/458 760/1673/412 +f 661/1674/461 726/1623/463 719/1628/443 +f 694/1552/412 760/1673/412 756/1676/413 +f 665/1678/436 727/1728/435 726/1623/463 +f 696/1553/413 752/1733/413 753/1679/412 +f 666/1680/464 662/1672/459 725/1651/460 +f 697/1568/418 746/1734/418 747/1681/415 +f 659/1683/449 722/1614/451 729/1616/466 +f 692/1569/415 767/1735/415 768/1685/418 +f 664/1686/427 730/1608/428 724/1610/467 +f 699/1560/416 769/1736/416 752/1688/413 +f 666/1689/464 728/1603/465 731/1605/468 +o spinny_lower +v 0.127409 0.571053 -0.570525 +v 0.311433 0.571053 -0.573891 +v 0.127409 0.586056 -0.579187 +v 0.311433 0.583141 -0.580870 +v 0.127409 0.586056 -0.596510 +v 0.311433 0.583141 -0.594827 +v 0.127409 0.571053 -0.605172 +v 0.311433 0.571053 -0.601806 +v 0.127409 0.556051 -0.596510 +v 0.311433 0.558966 -0.594827 +v 0.127409 0.556051 -0.579187 +v 0.311433 0.558966 -0.580870 +v 0.296158 0.571053 -0.570525 +v 0.244484 0.571053 -0.570525 +v 0.244484 0.586056 -0.579187 +v 0.296158 0.586056 -0.579187 +v 0.244484 0.586056 -0.596510 +v 0.296158 0.586056 -0.596510 +v 0.244484 0.571053 -0.605172 +v 0.296158 0.571053 -0.605172 +v 0.244484 0.556051 -0.596510 +v 0.296158 0.556051 -0.596510 +v 0.244484 0.556051 -0.579187 +v 0.296158 0.556051 -0.579187 +v 0.248187 0.538846 -0.569253 +v 0.292455 0.538846 -0.569253 +v 0.292455 0.571053 -0.550658 +v 0.248187 0.571053 -0.550658 +v 0.248187 0.538846 -0.606444 +v 0.292455 0.538846 -0.606444 +v 0.248187 0.571053 -0.625039 +v 0.292455 0.571053 -0.625039 +v 0.248187 0.603261 -0.606444 +v 0.292455 0.603261 -0.606444 +v 0.248187 0.603261 -0.569253 +v 0.292455 0.603261 -0.569253 +v 0.264576 0.585795 -0.571215 +v 0.375908 0.798690 -0.587129 +v 0.252583 0.591199 -0.579309 +v 0.363915 0.804094 -0.595223 +v 0.252527 0.590075 -0.594713 +v 0.363860 0.802970 -0.610627 +v 0.264465 0.583548 -0.602023 +v 0.375797 0.796443 -0.617937 +v 0.276457 0.578144 -0.593929 +v 0.387789 0.791039 -0.609843 +v 0.276513 0.579268 -0.578525 +v 0.387845 0.792162 -0.594439 +v 0.265024 0.589041 -0.594850 +v 0.375908 0.639695 -0.806877 +v 0.253032 0.583014 -0.602490 +v 0.363915 0.633667 -0.814518 +v 0.252976 0.568017 -0.606182 +v 0.363859 0.618670 -0.818209 +v 0.264913 0.559048 -0.602232 +v 0.375797 0.609701 -0.814260 +v 0.276906 0.565075 -0.594592 +v 0.387789 0.615728 -0.806619 +v 0.276962 0.580072 -0.590900 +v 0.387845 0.630725 -0.802928 +v 0.264576 0.567567 -0.605240 +v 0.375908 0.382270 -0.719820 +v 0.252583 0.558438 -0.601869 +v 0.363915 0.373140 -0.716448 +v 0.252527 0.550293 -0.588746 +v 0.363859 0.364995 -0.703326 +v 0.264465 0.551277 -0.578996 +v 0.375797 0.365980 -0.693575 +v 0.276457 0.560406 -0.582368 +v 0.387789 0.375109 -0.696947 +v 0.276513 0.568551 -0.595490 +v 0.387845 0.383254 -0.710069 +v 0.264576 0.551049 -0.588028 +v 0.375908 0.388167 -0.450017 +v 0.252583 0.551435 -0.578304 +v 0.363915 0.388553 -0.440293 +v 0.252527 0.561398 -0.566502 +v 0.363860 0.398516 -0.428491 +v 0.264465 0.570975 -0.564425 +v 0.375797 0.408094 -0.426414 +v 0.276457 0.570589 -0.574150 +v 0.387789 0.407708 -0.436139 +v 0.276513 0.560626 -0.585951 +v 0.387845 0.397745 -0.447940 +v 0.269238 0.562315 -0.566999 +v 0.375908 0.648259 -0.361717 +v 0.257245 0.571682 -0.564361 +v 0.363915 0.657627 -0.359079 +v 0.257189 0.585985 -0.570190 +v 0.363860 0.671929 -0.364907 +v 0.269127 0.590920 -0.578657 +v 0.375797 0.676864 -0.373374 +v 0.281119 0.581552 -0.581295 +v 0.387789 0.667496 -0.376013 +v 0.281175 0.567249 -0.575466 +v 0.387845 0.653194 -0.370184 +v 0.380466 0.828227 -0.481324 +v 0.398360 0.821379 -0.484160 +v 0.405772 0.804848 -0.491008 +v 0.398360 0.788316 -0.497855 +v 0.380466 0.781468 -0.500692 +v 0.362572 0.788316 -0.497855 +v 0.355160 0.804848 -0.491008 +v 0.362572 0.821379 -0.484160 +v 0.380466 0.677578 -0.330675 +v 0.398360 0.674742 -0.337523 +v 0.405772 0.667894 -0.354054 +v 0.398360 0.661046 -0.370586 +v 0.380466 0.658210 -0.377434 +v 0.362572 0.661046 -0.370586 +v 0.355160 0.667894 -0.354054 +v 0.362572 0.674742 -0.337523 +v 0.380466 0.464529 -0.330675 +v 0.398360 0.467365 -0.337523 +v 0.405772 0.474213 -0.354054 +v 0.398360 0.481060 -0.370586 +v 0.380466 0.483897 -0.377434 +v 0.362572 0.481060 -0.370586 +v 0.355160 0.474213 -0.354054 +v 0.362572 0.467365 -0.337523 +v 0.380466 0.313880 -0.481324 +v 0.398360 0.320727 -0.484160 +v 0.405772 0.337259 -0.491008 +v 0.398360 0.353791 -0.497856 +v 0.380466 0.360639 -0.500692 +v 0.362572 0.353791 -0.497856 +v 0.355160 0.337259 -0.491008 +v 0.362572 0.320727 -0.484160 +v 0.380466 0.313880 -0.694373 +v 0.398360 0.320727 -0.691537 +v 0.405772 0.337259 -0.684689 +v 0.398360 0.353791 -0.677842 +v 0.380466 0.360639 -0.675005 +v 0.362572 0.353791 -0.677842 +v 0.355160 0.337259 -0.684689 +v 0.362572 0.320727 -0.691537 +v 0.380466 0.464529 -0.845022 +v 0.398360 0.467365 -0.838174 +v 0.405772 0.474213 -0.821643 +v 0.398360 0.481060 -0.805111 +v 0.380466 0.483897 -0.798263 +v 0.362572 0.481060 -0.805111 +v 0.355160 0.474213 -0.821643 +v 0.362572 0.467365 -0.838174 +v 0.380466 0.677578 -0.845022 +v 0.398360 0.674742 -0.838174 +v 0.405772 0.667894 -0.821643 +v 0.398360 0.661047 -0.805111 +v 0.380466 0.658210 -0.798263 +v 0.362572 0.661047 -0.805111 +v 0.355160 0.667894 -0.821643 +v 0.362572 0.674742 -0.838174 +v 0.380466 0.828227 -0.694373 +v 0.398360 0.821379 -0.691537 +v 0.405772 0.804848 -0.684689 +v 0.398360 0.788316 -0.677842 +v 0.380466 0.781468 -0.675005 +v 0.362572 0.788316 -0.677842 +v 0.355160 0.804848 -0.684689 +v 0.362572 0.821379 -0.691537 +v -0.044410 0.571053 -0.570525 +v -0.228434 0.571053 -0.573891 +v -0.044410 0.586056 -0.579187 +v -0.228434 0.583141 -0.580870 +v -0.044410 0.586056 -0.596510 +v -0.228434 0.583141 -0.594827 +v -0.044410 0.571053 -0.605172 +v -0.228434 0.571053 -0.601806 +v -0.044410 0.556051 -0.596510 +v -0.228434 0.558966 -0.594827 +v -0.044410 0.556051 -0.579187 +v -0.228434 0.558966 -0.580870 +v -0.213159 0.571053 -0.570525 +v -0.161485 0.571053 -0.570525 +v -0.161485 0.586056 -0.579187 +v -0.213159 0.586056 -0.579187 +v -0.161485 0.586056 -0.596510 +v -0.213159 0.586056 -0.596510 +v -0.161485 0.571053 -0.605172 +v -0.213159 0.571053 -0.605172 +v -0.161485 0.556051 -0.596510 +v -0.213159 0.556051 -0.596510 +v -0.161485 0.556051 -0.579187 +v -0.213159 0.556051 -0.579187 +v -0.165188 0.538846 -0.569253 +v -0.209456 0.538846 -0.569253 +v -0.209456 0.571053 -0.550658 +v -0.165188 0.571053 -0.550658 +v -0.165188 0.538846 -0.606444 +v -0.209456 0.538846 -0.606444 +v -0.165188 0.571053 -0.625039 +v -0.209456 0.571053 -0.625039 +v -0.165188 0.603261 -0.606444 +v -0.209456 0.603261 -0.606444 +v -0.165188 0.603261 -0.569253 +v -0.209456 0.603261 -0.569253 +v -0.181577 0.585795 -0.571215 +v -0.292909 0.798690 -0.587129 +v -0.169584 0.591199 -0.579309 +v -0.280916 0.804094 -0.595223 +v -0.169529 0.590076 -0.594713 +v -0.280861 0.802970 -0.610627 +v -0.181466 0.583548 -0.602023 +v -0.292798 0.796443 -0.617937 +v -0.193459 0.578144 -0.593929 +v -0.304791 0.791039 -0.609843 +v -0.193514 0.579268 -0.578525 +v -0.304846 0.792162 -0.594439 +v -0.182026 0.589041 -0.594850 +v -0.292909 0.639695 -0.806877 +v -0.170033 0.583014 -0.602490 +v -0.280916 0.633667 -0.814518 +v -0.169977 0.568017 -0.606182 +v -0.280861 0.618670 -0.818209 +v -0.181915 0.559048 -0.602232 +v -0.292798 0.609701 -0.814260 +v -0.193907 0.565075 -0.594592 +v -0.304791 0.615728 -0.806620 +v -0.193963 0.580072 -0.590901 +v -0.304846 0.630725 -0.802928 +v -0.181577 0.567567 -0.605240 +v -0.292909 0.382270 -0.719820 +v -0.169584 0.558438 -0.601869 +v -0.280916 0.373140 -0.716448 +v -0.169529 0.550293 -0.588746 +v -0.280861 0.364995 -0.703326 +v -0.181466 0.551277 -0.578996 +v -0.292798 0.365980 -0.693575 +v -0.193459 0.560406 -0.582368 +v -0.304791 0.375109 -0.696947 +v -0.193514 0.568551 -0.595490 +v -0.304846 0.383254 -0.710069 +v -0.181577 0.551049 -0.588028 +v -0.292909 0.388168 -0.450017 +v -0.169584 0.551435 -0.578304 +v -0.280916 0.388553 -0.440293 +v -0.169529 0.561398 -0.566502 +v -0.280861 0.398516 -0.428491 +v -0.181466 0.570975 -0.564425 +v -0.292798 0.408094 -0.426414 +v -0.193459 0.570589 -0.574150 +v -0.304791 0.407708 -0.436139 +v -0.193514 0.560626 -0.585951 +v -0.304846 0.397745 -0.447940 +v -0.186239 0.562315 -0.566999 +v -0.292909 0.648259 -0.361717 +v -0.174246 0.571682 -0.564361 +v -0.280916 0.657627 -0.359079 +v -0.174191 0.585985 -0.570190 +v -0.280861 0.671929 -0.364907 +v -0.186128 0.590920 -0.578657 +v -0.292798 0.676864 -0.373374 +v -0.198121 0.581552 -0.581295 +v -0.304791 0.667497 -0.376013 +v -0.198176 0.567249 -0.575466 +v -0.304846 0.653194 -0.370184 +v -0.297467 0.828227 -0.481324 +v -0.315361 0.821379 -0.484160 +v -0.322773 0.804848 -0.491008 +v -0.315361 0.788316 -0.497855 +v -0.297467 0.781468 -0.500692 +v -0.279573 0.788316 -0.497855 +v -0.272162 0.804848 -0.491008 +v -0.279573 0.821379 -0.484160 +v -0.297467 0.677578 -0.330675 +v -0.315361 0.674742 -0.337523 +v -0.322773 0.667894 -0.354054 +v -0.315361 0.661047 -0.370586 +v -0.297467 0.658210 -0.377434 +v -0.279573 0.661047 -0.370586 +v -0.272162 0.667894 -0.354054 +v -0.279573 0.674742 -0.337523 +v -0.297467 0.464529 -0.330675 +v -0.315361 0.467365 -0.337523 +v -0.322773 0.474213 -0.354054 +v -0.315361 0.481060 -0.370586 +v -0.297467 0.483897 -0.377434 +v -0.279573 0.481060 -0.370586 +v -0.272162 0.474213 -0.354054 +v -0.279573 0.467365 -0.337523 +v -0.297467 0.313880 -0.481324 +v -0.315361 0.320727 -0.484160 +v -0.322773 0.337259 -0.491008 +v -0.315361 0.353791 -0.497856 +v -0.297467 0.360639 -0.500692 +v -0.279573 0.353791 -0.497856 +v -0.272162 0.337259 -0.491008 +v -0.279573 0.320727 -0.484160 +v -0.297467 0.313880 -0.694373 +v -0.315361 0.320727 -0.691537 +v -0.322773 0.337259 -0.684689 +v -0.315361 0.353791 -0.677842 +v -0.297467 0.360639 -0.675005 +v -0.279573 0.353791 -0.677842 +v -0.272162 0.337259 -0.684689 +v -0.279573 0.320727 -0.691537 +v -0.297467 0.464529 -0.845022 +v -0.315361 0.467365 -0.838175 +v -0.322773 0.474213 -0.821643 +v -0.315361 0.481060 -0.805111 +v -0.297467 0.483897 -0.798263 +v -0.279573 0.481060 -0.805111 +v -0.272162 0.474213 -0.821643 +v -0.279573 0.467365 -0.838175 +v -0.297467 0.677578 -0.845022 +v -0.315361 0.674742 -0.838174 +v -0.322773 0.667894 -0.821643 +v -0.315361 0.661047 -0.805111 +v -0.297467 0.658210 -0.798263 +v -0.279573 0.661047 -0.805111 +v -0.272162 0.667894 -0.821643 +v -0.279573 0.674742 -0.838174 +v -0.297467 0.828227 -0.694373 +v -0.315361 0.821379 -0.691537 +v -0.322773 0.804848 -0.684689 +v -0.315361 0.788316 -0.677842 +v -0.297467 0.781468 -0.675005 +v -0.279573 0.788316 -0.677842 +v -0.272162 0.804848 -0.684689 +v -0.279573 0.821379 -0.691537 +vt 0.799635 0.362279 +vt 0.827262 0.359326 +vt 0.827222 0.362762 +vt 0.800448 0.375165 +vt 0.827415 0.369730 +vt 0.827624 0.373751 +vt 0.799726 0.370763 +vt 0.827275 0.366229 +vt 0.799597 0.366415 +vt 0.762423 0.391682 +vt 0.760099 0.390340 +vt 0.762423 0.386315 +vt 0.800031 0.354283 +vt 0.827395 0.355916 +vt 0.827624 0.352523 +vt 0.788264 0.364363 +vt 0.785449 0.361184 +vt 0.788551 0.361047 +vt 0.784514 0.366272 +vt 0.787270 0.367605 +vt 0.783039 0.368301 +vt 0.785025 0.370236 +vt 0.783984 0.355430 +vt 0.785188 0.350017 +vt 0.787304 0.353840 +vt 0.788273 0.357581 +vt 0.791373 0.353216 +vt 0.796382 0.357395 +vt 0.797036 0.352990 +vt 0.799724 0.358261 +vt 0.796056 0.361474 +vt 0.791701 0.357754 +vt 0.795690 0.365588 +vt 0.791589 0.361641 +vt 0.791021 0.365400 +vt 0.795191 0.370261 +vt 0.789634 0.369320 +vt 0.786082 0.373815 +vt 0.795397 0.378285 +vt 0.799279 0.347383 +vt 0.801389 0.350415 +vt 0.286473 0.934138 +vt 0.283504 0.980386 +vt 0.283504 0.934093 +vt 0.301319 0.934093 +vt 0.298350 0.980386 +vt 0.298350 0.934093 +vt 0.295381 0.934138 +vt 0.295381 0.980430 +vt 0.292412 0.934182 +vt 0.292412 0.980475 +vt 0.289442 0.934183 +vt 0.286473 0.980430 +vt 0.867854 0.901496 +vt 0.820842 0.898526 +vt 0.867866 0.898526 +vt 0.820842 0.916343 +vt 0.867852 0.913373 +vt 0.867866 0.916343 +vt 0.820829 0.913373 +vt 0.867827 0.910404 +vt 0.820804 0.910404 +vt 0.867815 0.907434 +vt 0.820805 0.904465 +vt 0.867828 0.904465 +vt 0.820830 0.901496 +vt 0.548210 0.936048 +vt 0.551180 0.889032 +vt 0.551180 0.936071 +vt 0.533363 0.936071 +vt 0.536332 0.889032 +vt 0.536332 0.936072 +vt 0.539302 0.936049 +vt 0.539302 0.889009 +vt 0.542271 0.936025 +vt 0.542271 0.888986 +vt 0.545241 0.936025 +vt 0.548210 0.889008 +vt 0.837375 0.924047 +vt 0.834405 0.970295 +vt 0.834405 0.924002 +vt 0.852221 0.924002 +vt 0.849251 0.970295 +vt 0.849251 0.924002 +vt 0.846282 0.924046 +vt 0.846282 0.970339 +vt 0.843313 0.924091 +vt 0.843313 0.970384 +vt 0.840344 0.924091 +vt 0.837374 0.970339 +vt 0.434430 0.936466 +vt 0.431460 0.889069 +vt 0.434429 0.889017 +vt 0.449276 0.936519 +vt 0.446307 0.889090 +vt 0.449276 0.889069 +vt 0.443337 0.936508 +vt 0.443337 0.889059 +vt 0.440368 0.936456 +vt 0.440368 0.889006 +vt 0.437399 0.936435 +vt 0.437399 0.888985 +vt 0.400992 0.791352 +vt 0.397193 0.754418 +vt 0.400852 0.754391 +vt 0.394091 0.791397 +vt 0.393709 0.754385 +vt 0.390187 0.754324 +vt 0.390588 0.791361 +vt 0.386451 0.754283 +vt 0.382815 0.791366 +vt 0.382712 0.754242 +vt 0.379184 0.754177 +vt 0.407987 0.754399 +vt 0.404551 0.791300 +vt 0.404509 0.754364 +vt 0.401029 0.830484 +vt 0.397466 0.791406 +vt 0.393644 0.828434 +vt 0.390393 0.827137 +vt 0.386724 0.791360 +vt 0.387036 0.826636 +vt 0.383603 0.827212 +vt 0.379180 0.791346 +vt 0.408711 0.828478 +vt 0.408040 0.791308 +vt 0.405031 0.829914 +vt 0.401081 0.569288 +vt 0.397276 0.530538 +vt 0.401303 0.529944 +vt 0.397510 0.569275 +vt 0.393569 0.531995 +vt 0.394002 0.569210 +vt 0.390094 0.533390 +vt 0.390377 0.569117 +vt 0.386663 0.533954 +vt 0.386493 0.569035 +vt 0.383340 0.533443 +vt 0.382642 0.568946 +vt 0.380148 0.532152 +vt 0.407993 0.569370 +vt 0.405237 0.530579 +vt 0.408711 0.531968 +vt 0.404608 0.569300 +vt 0.397153 0.606277 +vt 0.393668 0.606235 +vt 0.390146 0.606165 +vt 0.386408 0.606121 +vt 0.382669 0.606079 +vt 0.379138 0.568835 +vt 0.407945 0.606274 +vt 0.404466 0.606234 +vt 0.400804 0.643287 +vt 0.400811 0.606255 +vt 0.393655 0.643272 +vt 0.390136 0.643206 +vt 0.386405 0.643166 +vt 0.379155 0.643060 +vt 0.379143 0.606013 +vt 0.404468 0.643264 +vt 0.400813 0.680323 +vt 0.397140 0.643310 +vt 0.397149 0.680346 +vt 0.393664 0.680308 +vt 0.390145 0.680243 +vt 0.386415 0.680202 +vt 0.382675 0.643125 +vt 0.382685 0.680161 +vt 0.407962 0.680337 +vt 0.407952 0.643302 +vt 0.404477 0.680299 +vt 0.400825 0.717358 +vt 0.393676 0.717344 +vt 0.390157 0.717280 +vt 0.382696 0.717198 +vt 0.379166 0.680096 +vt 0.404489 0.717335 +vt 0.397161 0.717382 +vt 0.386427 0.717239 +vt 0.379176 0.717133 +vt 0.407973 0.717373 +vt 0.720912 0.364623 +vt 0.693285 0.361670 +vt 0.720872 0.361187 +vt 0.721066 0.354219 +vt 0.694098 0.348783 +vt 0.721275 0.350197 +vt 0.720925 0.357719 +vt 0.693377 0.353186 +vt 0.693247 0.357533 +vt 0.777055 0.387656 +vt 0.777055 0.390340 +vt 0.774731 0.391682 +vt 0.721046 0.368033 +vt 0.693374 0.365687 +vt 0.721275 0.371425 +vt 0.693682 0.369665 +vt 0.682202 0.362901 +vt 0.678936 0.360105 +vt 0.681915 0.359585 +vt 0.680920 0.356343 +vt 0.678164 0.357676 +vt 0.676690 0.355648 +vt 0.678676 0.353713 +vt 0.678838 0.373931 +vt 0.677634 0.368519 +vt 0.680955 0.370109 +vt 0.678692 0.365585 +vt 0.681923 0.366367 +vt 0.685023 0.370733 +vt 0.690686 0.370958 +vt 0.690033 0.366554 +vt 0.689707 0.362474 +vt 0.685352 0.366194 +vt 0.688841 0.353688 +vt 0.679099 0.362764 +vt 0.685239 0.362307 +vt 0.684671 0.358548 +vt 0.683285 0.354629 +vt 0.689047 0.345664 +vt 0.679733 0.350133 +vt 0.682787 0.378285 +vt 0.692930 0.376566 +vt 0.695039 0.373533 +vt 0.953914 0.104208 +vt 0.950945 0.057960 +vt 0.953914 0.057915 +vt 0.968761 0.104252 +vt 0.965791 0.057960 +vt 0.968761 0.057960 +vt 0.962822 0.104208 +vt 0.965791 0.104253 +vt 0.959853 0.104163 +vt 0.962822 0.057916 +vt 0.956883 0.104163 +vt 0.959853 0.057871 +vt 0.956883 0.057871 +vt 0.901087 0.717683 +vt 0.854075 0.720652 +vt 0.854064 0.717683 +vt 0.901085 0.705805 +vt 0.854075 0.702836 +vt 0.901099 0.702836 +vt 0.901060 0.708775 +vt 0.854062 0.705805 +vt 0.901048 0.711744 +vt 0.854037 0.708775 +vt 0.854038 0.714714 +vt 0.854025 0.711744 +vt 0.901062 0.714714 +vt 0.459905 0.936048 +vt 0.456935 0.889032 +vt 0.459905 0.889008 +vt 0.474752 0.936071 +vt 0.471782 0.889032 +vt 0.474752 0.889032 +vt 0.468813 0.936049 +vt 0.471782 0.936072 +vt 0.465844 0.936025 +vt 0.468813 0.889009 +vt 0.462874 0.936025 +vt 0.465844 0.888986 +vt 0.462874 0.888985 +vt 0.891332 0.918016 +vt 0.894301 0.964265 +vt 0.891332 0.964309 +vt 0.876485 0.917972 +vt 0.879455 0.964264 +vt 0.876486 0.964265 +vt 0.882424 0.918016 +vt 0.879455 0.917972 +vt 0.885393 0.918061 +vt 0.882424 0.964309 +vt 0.888363 0.918061 +vt 0.885393 0.964353 +vt 0.888363 0.964354 +vt 0.890948 0.381894 +vt 0.893917 0.334497 +vt 0.893917 0.381947 +vt 0.905794 0.381873 +vt 0.908763 0.334445 +vt 0.908763 0.381894 +vt 0.902824 0.334456 +vt 0.905794 0.334424 +vt 0.902824 0.381905 +vt 0.899855 0.334508 +vt 0.899855 0.381957 +vt 0.896886 0.334529 +vt 0.896886 0.381978 +vt 0.359961 0.606011 +vt 0.363760 0.569076 +vt 0.363621 0.606038 +vt 0.356860 0.569032 +vt 0.360235 0.569022 +vt 0.356477 0.606043 +vt 0.353356 0.569068 +vt 0.349219 0.606145 +vt 0.352955 0.606105 +vt 0.345583 0.569063 +vt 0.349493 0.569068 +vt 0.341953 0.606252 +vt 0.345481 0.606186 +vt 0.367278 0.606065 +vt 0.370809 0.569120 +vt 0.370756 0.606029 +vt 0.367319 0.569128 +vt 0.359879 0.530591 +vt 0.363797 0.529944 +vt 0.353162 0.533291 +vt 0.356412 0.531994 +vt 0.349805 0.533792 +vt 0.342919 0.531808 +vt 0.346372 0.533216 +vt 0.371479 0.531950 +vt 0.367800 0.530514 +vt 0.364071 0.830484 +vt 0.360279 0.791154 +vt 0.363850 0.791140 +vt 0.356338 0.828434 +vt 0.360044 0.829890 +vt 0.353146 0.791312 +vt 0.356770 0.791219 +vt 0.349432 0.826474 +vt 0.352863 0.827038 +vt 0.346108 0.826986 +vt 0.349262 0.791394 +vt 0.341907 0.791593 +vt 0.345411 0.791482 +vt 0.368006 0.829850 +vt 0.370761 0.791058 +vt 0.371479 0.828460 +vt 0.367376 0.791128 +vt 0.363579 0.754173 +vt 0.359921 0.754151 +vt 0.352914 0.754263 +vt 0.356437 0.754193 +vt 0.349176 0.754307 +vt 0.345438 0.754350 +vt 0.367235 0.754194 +vt 0.370713 0.754154 +vt 0.363572 0.717142 +vt 0.356423 0.717157 +vt 0.359908 0.717119 +vt 0.352904 0.717222 +vt 0.349174 0.717263 +vt 0.341923 0.717369 +vt 0.345443 0.717304 +vt 0.370720 0.717126 +vt 0.367236 0.717164 +vt 0.363582 0.680106 +vt 0.356432 0.680121 +vt 0.359918 0.680083 +vt 0.349184 0.680226 +vt 0.352914 0.680186 +vt 0.341934 0.680332 +vt 0.345453 0.680267 +vt 0.370731 0.680091 +vt 0.367246 0.680129 +vt 0.363594 0.643070 +vt 0.356444 0.643084 +vt 0.359930 0.643046 +vt 0.352925 0.643149 +vt 0.349195 0.643189 +vt 0.345464 0.643230 +vt 0.370742 0.643055 +vt 0.367257 0.643093 +vt 0.341944 0.643295 +vt 0.760099 0.387656 +vt 0.764747 0.387656 +vt 0.764747 0.390340 +vt 0.785286 0.363844 +vt 0.782109 0.352463 +vt 0.785042 0.358363 +vt 0.789136 0.345664 +vt 0.301319 0.980386 +vt 0.289442 0.980475 +vt 0.820792 0.907434 +vt 0.533363 0.889032 +vt 0.545241 0.888985 +vt 0.852221 0.970295 +vt 0.840343 0.970384 +vt 0.431460 0.936519 +vt 0.446306 0.936540 +vt 0.397110 0.829838 +vt 0.380151 0.828621 +vt 0.772406 0.390340 +vt 0.772406 0.387656 +vt 0.774731 0.386315 +vt 0.675759 0.371485 +vt 0.689340 0.358360 +vt 0.950945 0.104252 +vt 0.901099 0.720652 +vt 0.456935 0.936071 +vt 0.894301 0.917972 +vt 0.890948 0.334445 +vt 0.341949 0.569082 +vt 0.342916 0.828276 +vt 0.341912 0.754415 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 -0.0000 -1.0000 +vn 0.0000 -0.8660 -0.5000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.8660 0.5000 +vn 0.2152 -0.8457 -0.4883 +vn 0.2152 -0.8457 0.4883 +vn 0.2152 -0.0000 -0.9766 +vn 0.2152 0.8457 -0.4883 +vn 0.2152 0.8457 0.4883 +vn 0.2152 -0.0000 0.9766 +vn 0.9831 0.1587 -0.0916 +vn 0.9831 0.1587 0.0916 +vn -0.9831 0.1587 0.0916 +vn -0.9831 0.0000 0.1832 +vn -0.9831 -0.1587 0.0916 +vn -0.9831 -0.1587 -0.0916 +vn 0.9831 -0.0000 0.1832 +vn -0.9831 -0.0000 -0.1832 +vn 0.9831 0.0000 -0.1832 +vn 0.9831 -0.1587 0.0916 +vn 0.9831 -0.1587 -0.0916 +vn -0.9831 0.1587 -0.0916 +vn -0.0013 0.0752 0.9972 +vn -0.7649 0.4355 0.4747 +vn -0.7674 0.4364 0.4698 +vn -0.7685 0.3624 -0.5273 +vn -0.7709 0.3641 -0.5227 +vn -0.0085 -0.0701 -0.9975 +vn 0.0013 -0.0752 -0.9972 +vn 0.7649 -0.4355 -0.4747 +vn 0.7674 -0.4364 -0.4698 +vn 0.7685 -0.3624 0.5273 +vn 0.0085 0.0701 0.9975 +vn 0.0036 0.9722 0.2341 +vn -0.7691 0.5824 -0.2631 +vn -0.7690 0.5826 -0.2630 +vn -0.7757 -0.3873 -0.4982 +vn -0.7736 -0.3916 -0.4981 +vn -0.0076 -0.9717 -0.2361 +vn -0.0036 -0.9722 -0.2341 +vn 0.7691 -0.5824 0.2631 +vn 0.7757 0.3873 0.4982 +vn 0.7736 0.3916 0.4981 +vn 0.0076 0.9717 0.2361 +vn 0.0010 0.5263 -0.8503 +vn -0.7687 -0.0687 -0.6359 +vn -0.7701 -0.0706 -0.6341 +vn -0.7723 -0.5975 0.2158 +vn -0.7736 -0.5967 0.2134 +vn -0.0061 -0.5286 0.8489 +vn -0.0010 -0.5264 0.8503 +vn 0.7687 0.0687 0.6359 +vn 0.7701 0.0706 0.6341 +vn 0.7723 0.5975 -0.2158 +vn 0.0061 0.5286 -0.8489 +vn -0.0013 -0.6470 -0.7625 +vn -0.7649 -0.6313 -0.1281 +vn -0.7674 -0.6292 -0.1236 +vn -0.7685 0.0167 0.6397 +vn -0.7709 0.0127 0.6369 +vn -0.0085 0.6431 0.7658 +vn 0.0013 0.6470 0.7625 +vn 0.7649 0.6313 0.1281 +vn 0.7674 0.6292 0.1236 +vn 0.7685 -0.0167 -0.6397 +vn 0.0085 -0.6431 -0.7658 +vn 0.0020 -0.9228 0.3853 +vn -0.7755 -0.3271 0.5399 +vn 0.0114 -0.9245 0.3811 +vn -0.7797 -0.3191 0.5388 +vn -0.7840 0.6009 0.1558 +vn -0.0114 0.9245 -0.3811 +vn -0.0020 0.9228 -0.3853 +vn 0.7755 0.3271 -0.5399 +vn 0.7797 0.3191 -0.5388 +vn 0.7840 -0.6009 -0.1558 +vn 0.7846 -0.6000 -0.1565 +vn -0.0000 0.3827 0.9239 +vn 0.6630 0.6916 0.2865 +vn 0.0000 0.9239 0.3827 +vn 0.9955 0.0363 0.0876 +vn 0.9955 0.0876 0.0363 +vn 0.7574 -0.6033 -0.2499 +vn 0.7574 -0.2499 -0.6033 +vn 0.0000 -0.9239 -0.3827 +vn -0.7574 -0.2499 -0.6033 +vn -0.7574 -0.6033 -0.2499 +vn -0.9955 0.0876 0.0363 +vn -0.6630 0.2865 0.6916 +vn -0.6630 0.6916 0.2865 +vn 0.0000 -0.3827 0.9239 +vn 0.6630 0.2865 0.6916 +vn 0.9955 -0.0363 0.0876 +vn 0.7574 0.2499 -0.6033 +vn 0.0000 -0.3827 -0.9239 +vn -0.0000 0.3827 -0.9239 +vn -0.7574 0.2499 -0.6033 +vn -0.9955 0.0363 0.0876 +vn -0.9955 -0.0363 0.0876 +vn -0.6630 -0.2865 0.6916 +vn 0.0000 -0.9239 0.3827 +vn 0.6630 -0.2865 0.6916 +vn 0.6630 -0.6916 0.2865 +vn 0.9955 -0.0876 0.0363 +vn 0.7574 0.6033 -0.2499 +vn 0.0000 0.9239 -0.3827 +vn -0.7574 0.6033 -0.2499 +vn -0.9955 -0.0876 0.0363 +vn -0.6630 -0.6916 0.2865 +vn 0.6630 -0.6916 -0.2865 +vn 0.9955 -0.0876 -0.0363 +vn 0.7574 0.6033 0.2499 +vn -0.7574 0.6033 0.2499 +vn -0.9955 -0.0876 -0.0363 +vn -0.6630 -0.6916 -0.2865 +vn 0.9955 -0.0363 -0.0876 +vn 0.7574 0.2499 0.6033 +vn -0.9955 -0.0363 -0.0876 +vn -0.6630 -0.2865 -0.6916 +vn 0.6630 -0.2865 -0.6916 +vn 0.6630 0.2865 -0.6916 +vn 0.9955 0.0363 -0.0876 +vn 0.7574 -0.2499 0.6033 +vn -0.7574 0.2499 0.6033 +vn -0.7574 -0.2499 0.6033 +vn -0.9955 0.0363 -0.0876 +vn -0.6630 0.2865 -0.6916 +vn 0.9955 0.0876 -0.0363 +vn 0.7574 -0.6033 0.2499 +vn -0.7574 -0.6033 0.2499 +vn -0.6630 0.6916 -0.2865 +vn 0.6630 0.6916 -0.2865 +vn -0.9955 0.0876 -0.0363 +vn -1.0000 0.0000 0.0000 +vn -0.2152 -0.8457 0.4883 +vn -0.2152 -0.8457 -0.4883 +vn -0.2152 -0.0000 -0.9766 +vn -0.2152 0.8457 -0.4883 +vn -0.2152 0.8457 0.4883 +vn -0.2152 0.0000 0.9766 +vn 0.0013 0.0752 0.9972 +vn 0.7649 0.4355 0.4747 +vn -0.0085 0.0701 0.9975 +vn 0.7674 0.4364 0.4698 +vn 0.7685 0.3625 -0.5273 +vn 0.0085 -0.0701 -0.9975 +vn 0.7709 0.3641 -0.5227 +vn -0.7649 -0.4355 -0.4747 +vn -0.0013 -0.0752 -0.9972 +vn -0.7685 -0.3624 0.5273 +vn -0.7674 -0.4364 -0.4698 +vn -0.7709 -0.3641 0.5227 +vn -0.0036 0.9722 0.2341 +vn 0.7691 0.5824 -0.2631 +vn -0.0076 0.9717 0.2361 +vn 0.7757 -0.3873 -0.4982 +vn 0.7690 0.5826 -0.2630 +vn 0.0076 -0.9717 -0.2361 +vn 0.7736 -0.3916 -0.4981 +vn -0.7691 -0.5824 0.2631 +vn 0.0036 -0.9722 -0.2341 +vn -0.7757 0.3873 0.4982 +vn -0.7691 -0.5826 0.2630 +vn -0.7736 0.3916 0.4981 +vn -0.0010 0.5263 -0.8503 +vn 0.7687 -0.0687 -0.6359 +vn -0.0061 0.5286 -0.8489 +vn 0.7701 -0.0706 -0.6341 +vn 0.7723 -0.5975 0.2158 +vn 0.0061 -0.5286 0.8489 +vn 0.7736 -0.5967 0.2134 +vn -0.7687 0.0687 0.6359 +vn 0.0010 -0.5263 0.8503 +vn -0.7723 0.5975 -0.2158 +vn -0.7701 0.0706 0.6341 +vn -0.7736 0.5967 -0.2134 +vn 0.0013 -0.6470 -0.7625 +vn 0.7649 -0.6313 -0.1281 +vn -0.0085 -0.6431 -0.7658 +vn 0.7674 -0.6292 -0.1236 +vn 0.7685 0.0167 0.6397 +vn 0.0085 0.6431 0.7658 +vn 0.7709 0.0127 0.6369 +vn -0.7649 0.6313 0.1281 +vn -0.0013 0.6470 0.7625 +vn -0.7685 -0.0167 -0.6397 +vn -0.7674 0.6292 0.1236 +vn -0.7709 -0.0127 -0.6369 +vn 0.7755 -0.3271 0.5399 +vn -0.0020 -0.9228 0.3853 +vn -0.0114 -0.9245 0.3811 +vn 0.7840 0.6009 0.1558 +vn 0.7797 -0.3191 0.5388 +vn 0.0114 0.9245 -0.3811 +vn 0.7846 0.6000 0.1565 +vn 0.0020 0.9228 -0.3853 +vn -0.7755 0.3271 -0.5399 +vn -0.7797 0.3191 -0.5388 +vn -0.7840 -0.6009 -0.1558 +vn -0.7846 -0.6000 -0.1565 +vn 0.7709 -0.3641 0.5227 +vn 0.7690 -0.5826 0.2630 +vn 0.7736 0.5967 -0.2134 +vn 0.7709 -0.0127 -0.6369 +vn -0.7846 0.6000 0.1565 +s 1 +f 911/1737/469 889/1738/470 899/1739/469 +f 905/1740/471 895/1741/472 893/1742/471 +f 907/1743/472 897/1744/473 895/1741/472 +f 909/1745/473 899/1739/469 897/1744/473 +f 896/1746/474 894/1747/474 890/1748/474 +f 889/1738/470 903/1749/475 891/1750/475 +f 903/1749/475 893/1751/471 891/1750/475 +f 910/1752/476 900/1753/477 912/1754/477 +f 896/1755/478 910/1752/476 908/1756/478 +f 894/1757/479 908/1756/478 906/1758/479 +f 892/1759/480 906/1760/479 904/1761/480 +f 901/1762/481 892/1759/480 904/1761/480 +f 906/1760/482 924/1763/483 904/1761/483 +f 903/1749/484 916/1764/485 923/1765/484 +f 902/1766/485 913/1767/486 916/1764/485 +f 909/1745/487 913/1767/486 911/1737/486 +f 904/1761/483 915/1768/488 901/1762/488 +f 907/1743/489 917/1769/487 909/1745/487 +f 900/1753/477 901/1762/481 912/1754/477 +f 915/1768/470 913/1767/469 914/1770/469 +f 914/1770/469 917/1769/473 918/1771/473 +f 918/1771/473 919/1772/472 920/1773/472 +f 922/1774/471 919/1772/472 921/1775/471 +f 924/1763/475 921/1776/471 923/1765/475 +f 924/1763/475 916/1764/470 915/1768/470 +f 908/1756/490 922/1774/482 906/1758/482 +f 901/1762/488 914/1770/491 912/1754/491 +f 910/1752/492 920/1773/490 908/1756/490 +f 903/1749/484 921/1776/493 905/1777/493 +f 912/1754/491 918/1771/492 910/1752/492 +f 905/1740/493 919/1772/489 907/1743/489 +f 925/1778/494 928/1779/495 927/1780/496 +f 927/1781/496 930/1782/497 929/1783/498 +f 930/1782/497 931/1784/499 929/1783/498 +f 932/1785/500 933/1786/501 931/1784/499 +f 934/1787/502 935/1788/503 933/1786/501 +f 935/1788/503 926/1789/504 925/1778/494 +f 937/1790/505 940/1791/506 939/1792/507 +f 940/1793/506 941/1794/508 939/1795/507 +f 942/1796/509 943/1797/510 941/1794/508 +f 944/1798/511 945/1799/512 943/1797/510 +f 945/1799/512 948/1800/513 947/1801/514 +f 947/1801/514 938/1802/515 937/1790/505 +f 949/1803/516 952/1804/517 951/1805/518 +f 951/1806/518 954/1807/519 953/1808/520 +f 954/1807/519 955/1809/521 953/1808/520 +f 956/1810/522 957/1811/523 955/1809/521 +f 958/1812/524 959/1813/525 957/1811/523 +f 959/1813/525 950/1814/526 949/1803/516 +f 961/1815/527 964/1816/528 963/1817/529 +f 963/1818/529 966/1819/530 965/1820/531 +f 966/1819/530 967/1821/532 965/1820/531 +f 968/1822/533 969/1823/534 967/1821/532 +f 970/1824/535 971/1825/536 969/1823/534 +f 971/1825/536 962/1826/537 961/1815/527 +f 974/1827/538 975/1828/539 973/1829/540 +f 976/1830/541 977/1831/542 975/1832/539 +f 977/1831/542 980/1833/543 979/1834/544 +f 979/1834/544 982/1835/545 981/1836/546 +f 981/1836/546 984/1837/547 983/1838/548 +f 984/1837/547 973/1829/540 983/1838/548 +f 993/1839/549 986/1840/550 985/1841/551 +f 986/1840/550 995/1842/552 987/1843/553 +f 995/1842/552 988/1844/554 987/1843/553 +f 996/1845/555 989/1846/556 988/1844/554 +f 989/1846/556 998/1847/557 990/1848/558 +f 998/1847/557 991/1849/559 990/1848/558 +f 991/1850/559 1000/1851/560 992/1852/561 +f 1000/1851/560 985/1841/551 992/1852/561 +f 1001/1853/562 994/1854/563 993/1839/549 +f 994/1854/563 1003/1855/564 995/1842/552 +f 1003/1855/564 996/1845/555 995/1842/552 +f 1004/1856/565 997/1857/566 996/1845/555 +f 1005/1858/567 998/1847/557 997/1857/566 +f 1006/1859/568 999/1860/569 998/1847/557 +f 1007/1861/570 1000/1851/560 999/1862/569 +f 1008/1863/571 993/1839/549 1000/1851/560 +f 1009/1864/572 1002/1865/573 1001/1866/562 +f 1010/1867/574 1003/1868/564 1002/1865/573 +f 1011/1869/575 1004/1870/565 1003/1868/564 +f 1012/1871/576 1005/1872/567 1004/1870/565 +f 1013/1873/577 1006/1874/568 1005/1872/567 +f 1014/1875/578 1007/1876/570 1006/1874/568 +f 1015/1877/579 1008/1878/571 1007/1879/570 +f 1016/1880/580 1001/1866/562 1008/1878/571 +f 1009/1864/572 1018/1881/581 1010/1867/574 +f 1018/1881/581 1011/1869/575 1010/1867/574 +f 1019/1882/582 1012/1871/576 1011/1869/575 +f 1020/1883/583 1013/1873/577 1012/1871/576 +f 1021/1884/551 1014/1875/578 1013/1873/577 +f 1022/1885/584 1015/1886/579 1014/1875/578 +f 1023/1887/585 1016/1880/580 1015/1877/579 +f 1024/1888/586 1009/1864/572 1016/1880/580 +f 1025/1889/566 1018/1881/581 1017/1890/556 +f 1018/1881/581 1027/1891/587 1019/1882/582 +f 1019/1882/582 1028/1892/588 1020/1883/583 +f 1020/1883/583 1029/1893/549 1021/1884/551 +f 1029/1893/549 1022/1885/584 1021/1884/551 +f 1022/1885/584 1031/1894/589 1023/1895/585 +f 1023/1887/585 1032/1896/590 1024/1888/586 +f 1032/1896/590 1017/1890/556 1024/1888/586 +f 1033/1897/567 1026/1898/591 1025/1889/566 +f 1034/1899/592 1027/1891/587 1026/1898/591 +f 1035/1900/593 1028/1892/588 1027/1891/587 +f 1036/1901/594 1029/1893/549 1028/1892/588 +f 1037/1902/562 1030/1903/595 1029/1893/549 +f 1038/1904/596 1031/1894/589 1030/1903/595 +f 1039/1905/597 1032/1896/590 1031/1906/589 +f 1040/1907/598 1025/1889/566 1032/1896/590 +f 1041/1908/577 1034/1899/592 1033/1897/567 +f 1034/1899/592 1043/1909/599 1035/1900/593 +f 1043/1909/599 1036/1901/594 1035/1900/593 +f 1044/1910/600 1037/1902/562 1036/1901/594 +f 1037/1902/562 1046/1911/601 1038/1904/596 +f 1046/1911/601 1039/1912/597 1038/1904/596 +f 1039/1905/597 1048/1913/602 1040/1907/598 +f 1048/1913/602 1033/1897/567 1040/1907/598 +f 985/1841/551 1042/1914/603 1041/1908/577 +f 986/1840/550 1043/1909/599 1042/1914/603 +f 987/1843/553 1044/1910/600 1043/1909/599 +f 988/1844/554 1045/1915/572 1044/1910/600 +f 989/1846/556 1046/1911/601 1045/1915/572 +f 990/1848/558 1047/1916/604 1046/1911/601 +f 991/1850/559 1048/1913/602 1047/1917/604 +f 1048/1913/602 985/1841/551 1041/1908/577 +f 1049/1918/470 1071/1919/469 1059/1920/469 +f 1055/1921/472 1065/1922/471 1053/1923/471 +f 1057/1924/473 1067/1925/472 1055/1921/472 +f 1059/1920/469 1069/1926/473 1057/1924/473 +f 1058/1927/605 1060/1928/605 1050/1929/605 +f 1051/1930/475 1062/1931/470 1049/1918/470 +f 1053/1932/471 1063/1933/475 1051/1930/475 +f 1072/1934/606 1058/1935/607 1070/1936/607 +f 1068/1937/608 1058/1935/607 1056/1938/608 +f 1068/1937/608 1054/1939/609 1066/1940/609 +f 1066/1941/609 1052/1942/610 1064/1943/610 +f 1064/1943/610 1050/1944/611 1061/1945/611 +f 1084/1946/484 1066/1941/493 1064/1943/484 +f 1083/1947/483 1062/1931/488 1063/1933/483 +f 1076/1948/488 1071/1919/491 1062/1931/488 +f 1073/1949/491 1069/1926/492 1071/1919/491 +f 1075/1950/485 1064/1943/484 1061/1945/485 +f 1069/1926/492 1079/1951/490 1067/1925/490 +f 1072/1934/606 1050/1944/611 1060/1952/606 +f 1074/1953/469 1076/1948/470 1075/1950/470 +f 1078/1954/473 1073/1949/469 1074/1953/469 +f 1079/1951/472 1078/1954/473 1080/1955/472 +f 1081/1956/471 1080/1955/472 1082/1957/471 +f 1083/1947/475 1082/1958/471 1084/1946/475 +f 1076/1948/470 1084/1946/475 1075/1950/470 +f 1066/1940/493 1080/1955/489 1068/1937/489 +f 1074/1953/486 1061/1945/485 1072/1934/486 +f 1068/1937/489 1078/1954/487 1070/1936/487 +f 1081/1959/482 1063/1933/483 1065/1960/482 +f 1078/1954/487 1072/1934/486 1070/1936/487 +f 1079/1951/490 1065/1922/482 1067/1925/490 +f 1085/1961/612 1088/1962/613 1086/1963/614 +f 1087/1964/615 1090/1965/616 1088/1966/613 +f 1091/1967/617 1090/1965/616 1089/1968/618 +f 1093/1969/619 1092/1970/620 1091/1967/617 +f 1095/1971/621 1094/1972/622 1093/1969/619 +f 1095/1971/621 1086/1963/614 1096/1973/623 +f 1097/1974/624 1100/1975/625 1098/1976/626 +f 1101/1977/627 1100/1978/625 1099/1979/628 +f 1103/1980/629 1102/1981/630 1101/1977/627 +f 1105/1982/631 1104/1983/632 1103/1980/629 +f 1105/1982/631 1108/1984/633 1106/1985/634 +f 1107/1986/635 1098/1976/626 1108/1984/633 +f 1109/1987/636 1112/1988/637 1110/1989/638 +f 1111/1990/639 1114/1991/640 1112/1992/637 +f 1115/1993/641 1114/1991/640 1113/1994/642 +f 1117/1995/643 1116/1996/644 1115/1993/641 +f 1119/1997/645 1118/1998/646 1117/1995/643 +f 1119/1997/645 1110/1989/638 1120/1999/647 +f 1121/2000/648 1124/2001/649 1122/2002/650 +f 1123/2003/651 1126/2004/652 1124/2005/649 +f 1127/2006/653 1126/2004/652 1125/2007/654 +f 1129/2008/655 1128/2009/656 1127/2006/653 +f 1131/2010/657 1130/2011/658 1129/2008/655 +f 1131/2010/657 1122/2002/650 1132/2012/659 +f 1135/2013/660 1134/2014/661 1133/2015/662 +f 1137/2016/663 1136/2017/664 1135/2018/660 +f 1137/2016/663 1140/2019/665 1138/2020/666 +f 1139/2021/667 1142/2022/668 1140/2019/665 +f 1141/2023/669 1144/2024/670 1142/2022/668 +f 1133/2015/662 1144/2024/670 1143/2025/671 +f 1146/2026/561 1153/2027/549 1145/2028/551 +f 1146/2026/561 1155/2029/569 1154/2030/560 +f 1147/2031/559 1156/2032/557 1155/2029/569 +f 1149/2033/556 1156/2032/557 1148/2034/558 +f 1149/2033/556 1158/2035/555 1157/2036/566 +f 1151/2037/553 1158/2035/555 1150/2038/554 +f 1152/2039/550 1159/2040/552 1151/2041/553 +f 1145/2028/551 1160/2042/563 1152/2039/550 +f 1153/2027/549 1162/2043/571 1161/2044/562 +f 1155/2029/569 1162/2043/571 1154/2030/560 +f 1155/2029/569 1164/2045/568 1163/2046/570 +f 1157/2036/566 1164/2045/568 1156/2032/557 +f 1158/2035/555 1165/2047/567 1157/2036/566 +f 1158/2035/555 1167/2048/564 1166/2049/565 +f 1160/2042/563 1167/2050/564 1159/2040/552 +f 1153/2027/549 1168/2051/573 1160/2042/563 +f 1161/2052/562 1170/2053/580 1169/2054/572 +f 1163/2055/570 1170/2053/580 1162/2056/571 +f 1163/2055/570 1172/2057/578 1171/2058/579 +f 1165/2059/567 1172/2057/578 1164/2060/568 +f 1166/2061/565 1173/2062/577 1165/2059/567 +f 1166/2061/565 1175/2063/575 1174/2064/576 +f 1168/2065/573 1175/2066/575 1167/2067/564 +f 1161/2052/562 1176/2068/574 1168/2065/573 +f 1170/2053/580 1177/2069/556 1169/2054/572 +f 1171/2058/579 1178/2070/586 1170/2053/580 +f 1171/2058/579 1180/2071/584 1179/2072/585 +f 1173/2062/577 1180/2071/584 1172/2057/578 +f 1174/2064/576 1181/2073/551 1173/2062/577 +f 1175/2063/575 1182/2074/583 1174/2064/576 +f 1175/2066/575 1184/2075/581 1183/2076/582 +f 1169/2054/572 1184/2075/581 1176/2068/574 +f 1178/2070/586 1185/2077/566 1177/2069/556 +f 1178/2070/586 1187/2078/589 1186/2079/590 +f 1180/2071/584 1187/2078/589 1179/2072/585 +f 1181/2073/551 1188/2080/595 1180/2071/584 +f 1182/2074/583 1189/2081/549 1181/2073/551 +f 1182/2074/583 1191/2082/587 1190/2083/588 +f 1184/2075/581 1191/2084/587 1183/2076/582 +f 1184/2075/581 1185/2077/566 1192/2085/591 +f 1186/2079/590 1193/2086/567 1185/2077/566 +f 1186/2079/590 1195/2087/597 1194/2088/598 +f 1188/2080/595 1195/2087/597 1187/2078/589 +f 1188/2080/595 1197/2089/562 1196/2090/596 +f 1190/2083/588 1197/2089/562 1189/2081/549 +f 1190/2083/588 1199/2091/593 1198/2092/594 +f 1192/2085/591 1199/2093/593 1191/2084/587 +f 1185/2077/566 1200/2094/592 1192/2085/591 +f 1194/2088/598 1201/2095/577 1193/2086/567 +f 1194/2088/598 1203/2096/604 1202/2097/602 +f 1196/2090/596 1203/2096/604 1195/2087/597 +f 1197/2089/562 1204/2098/601 1196/2090/596 +f 1198/2092/594 1205/2099/572 1197/2089/562 +f 1199/2091/593 1206/2100/600 1198/2092/594 +f 1200/2094/592 1207/2101/599 1199/2093/593 +f 1193/2086/567 1208/2102/603 1200/2094/592 +f 1202/2097/602 1145/2028/551 1201/2095/577 +f 1202/2097/602 1147/2031/559 1146/2026/561 +f 1204/2098/601 1147/2031/559 1203/2096/604 +f 1204/2098/601 1149/2033/556 1148/2034/558 +f 1206/2100/600 1149/2033/556 1205/2099/572 +f 1207/2103/599 1150/2038/554 1206/2100/600 +f 1208/2102/603 1151/2041/553 1207/2101/599 +f 1201/2095/577 1152/2039/550 1208/2102/603 +f 911/1737/469 902/1766/470 889/1738/470 +f 905/1740/471 907/1743/472 895/1741/472 +f 907/1743/472 909/1745/473 897/1744/473 +f 909/1745/473 911/1737/469 899/1739/469 +f 894/1747/474 892/2104/474 890/1748/474 +f 890/1748/474 900/2105/474 898/2106/474 +f 898/2106/474 896/1746/474 890/1748/474 +f 889/1738/470 902/1766/470 903/1749/475 +f 903/1749/475 905/1777/471 893/1751/471 +f 910/1752/476 898/2107/476 900/1753/477 +f 896/1755/478 898/2107/476 910/1752/476 +f 894/1757/479 896/1755/478 908/1756/478 +f 892/1759/480 894/2108/479 906/1760/479 +f 901/1762/481 890/2109/481 892/1759/480 +f 906/1760/482 922/2110/482 924/1763/483 +f 903/1749/484 902/1766/485 916/1764/485 +f 902/1766/485 911/1737/486 913/1767/486 +f 909/1745/487 917/1769/487 913/1767/486 +f 904/1761/483 924/1763/483 915/1768/488 +f 907/1743/489 919/1772/489 917/1769/487 +f 900/1753/477 890/2109/481 901/1762/481 +f 915/1768/470 916/1764/470 913/1767/469 +f 914/1770/469 913/1767/469 917/1769/473 +f 918/1771/473 917/1769/473 919/1772/472 +f 922/1774/471 920/1773/472 919/1772/472 +f 924/1763/475 922/2110/471 921/1776/471 +f 924/1763/475 923/1765/475 916/1764/470 +f 908/1756/490 920/1773/490 922/1774/482 +f 901/1762/488 915/1768/488 914/1770/491 +f 910/1752/492 918/1771/492 920/1773/490 +f 903/1749/484 923/1765/484 921/1776/493 +f 912/1754/491 914/1770/491 918/1771/492 +f 905/1740/493 921/1775/493 919/1772/489 +f 925/1778/494 926/1789/504 928/1779/495 +f 927/1781/496 928/2111/495 930/1782/497 +f 930/1782/497 932/1785/500 931/1784/499 +f 932/1785/500 934/1787/502 933/1786/501 +f 934/1787/502 936/2112/672 935/1788/503 +f 935/1788/503 936/2112/672 926/1789/504 +f 937/1790/505 938/1802/515 940/1791/506 +f 940/1793/506 942/1796/509 941/1794/508 +f 942/1796/509 944/1798/511 943/1797/510 +f 944/1798/511 946/2113/673 945/1799/512 +f 945/1799/512 946/2113/673 948/1800/513 +f 947/1801/514 948/1800/513 938/1802/515 +f 949/1803/516 950/1814/526 952/1804/517 +f 951/1806/518 952/2114/517 954/1807/519 +f 954/1807/519 956/1810/522 955/1809/521 +f 956/1810/522 958/1812/524 957/1811/523 +f 958/1812/524 960/2115/674 959/1813/525 +f 959/1813/525 960/2115/674 950/1814/526 +f 961/1815/527 962/1826/537 964/1816/528 +f 963/1818/529 964/2116/528 966/1819/530 +f 966/1819/530 968/1822/533 967/1821/532 +f 968/1822/533 970/1824/535 969/1823/534 +f 970/1824/535 972/2117/675 971/1825/536 +f 971/1825/536 972/2117/675 962/1826/537 +f 974/1827/538 976/2118/541 975/1828/539 +f 976/1830/541 978/2119/676 977/1831/542 +f 977/1831/542 978/2119/676 980/1833/543 +f 979/1834/544 980/1833/543 982/1835/545 +f 981/1836/546 982/1835/545 984/1837/547 +f 984/1837/547 974/1827/538 973/1829/540 +f 993/1839/549 994/1854/563 986/1840/550 +f 986/1840/550 994/1854/563 995/1842/552 +f 995/1842/552 996/1845/555 988/1844/554 +f 996/1845/555 997/1857/566 989/1846/556 +f 989/1846/556 997/1857/566 998/1847/557 +f 998/1847/557 999/1860/569 991/1849/559 +f 991/1850/559 999/1862/569 1000/1851/560 +f 1000/1851/560 993/1839/549 985/1841/551 +f 1001/1853/562 1002/2120/573 994/1854/563 +f 994/1854/563 1002/2120/573 1003/1855/564 +f 1003/1855/564 1004/1856/565 996/1845/555 +f 1004/1856/565 1005/1858/567 997/1857/566 +f 1005/1858/567 1006/1859/568 998/1847/557 +f 1006/1859/568 1007/2121/570 999/1860/569 +f 1007/1861/570 1008/1863/571 1000/1851/560 +f 1008/1863/571 1001/1853/562 993/1839/549 +f 1009/1864/572 1010/1867/574 1002/1865/573 +f 1010/1867/574 1011/1869/575 1003/1868/564 +f 1011/1869/575 1012/1871/576 1004/1870/565 +f 1012/1871/576 1013/1873/577 1005/1872/567 +f 1013/1873/577 1014/1875/578 1006/1874/568 +f 1014/1875/578 1015/1886/579 1007/1876/570 +f 1015/1877/579 1016/1880/580 1008/1878/571 +f 1016/1880/580 1009/1864/572 1001/1866/562 +f 1009/1864/572 1017/1890/556 1018/1881/581 +f 1018/1881/581 1019/1882/582 1011/1869/575 +f 1019/1882/582 1020/1883/583 1012/1871/576 +f 1020/1883/583 1021/1884/551 1013/1873/577 +f 1021/1884/551 1022/1885/584 1014/1875/578 +f 1022/1885/584 1023/1895/585 1015/1886/579 +f 1023/1887/585 1024/1888/586 1016/1880/580 +f 1024/1888/586 1017/1890/556 1009/1864/572 +f 1025/1889/566 1026/1898/591 1018/1881/581 +f 1018/1881/581 1026/1898/591 1027/1891/587 +f 1019/1882/582 1027/1891/587 1028/1892/588 +f 1020/1883/583 1028/1892/588 1029/1893/549 +f 1029/1893/549 1030/1903/595 1022/1885/584 +f 1022/1885/584 1030/1903/595 1031/1894/589 +f 1023/1887/585 1031/1906/589 1032/1896/590 +f 1032/1896/590 1025/1889/566 1017/1890/556 +f 1033/1897/567 1034/1899/592 1026/1898/591 +f 1034/1899/592 1035/1900/593 1027/1891/587 +f 1035/1900/593 1036/1901/594 1028/1892/588 +f 1036/1901/594 1037/1902/562 1029/1893/549 +f 1037/1902/562 1038/1904/596 1030/1903/595 +f 1038/1904/596 1039/1912/597 1031/1894/589 +f 1039/1905/597 1040/1907/598 1032/1896/590 +f 1040/1907/598 1033/1897/567 1025/1889/566 +f 1041/1908/577 1042/1914/603 1034/1899/592 +f 1034/1899/592 1042/1914/603 1043/1909/599 +f 1043/1909/599 1044/1910/600 1036/1901/594 +f 1044/1910/600 1045/1915/572 1037/1902/562 +f 1037/1902/562 1045/1915/572 1046/1911/601 +f 1046/1911/601 1047/1916/604 1039/1912/597 +f 1039/1905/597 1047/1917/604 1048/1913/602 +f 1048/1913/602 1041/1908/577 1033/1897/567 +f 985/1841/551 986/1840/550 1042/1914/603 +f 986/1840/550 987/1843/553 1043/1909/599 +f 987/1843/553 988/1844/554 1044/1910/600 +f 988/1844/554 989/1846/556 1045/1915/572 +f 989/1846/556 990/1848/558 1046/1911/601 +f 990/1848/558 991/1849/559 1047/1916/604 +f 991/1850/559 992/1852/561 1048/1913/602 +f 1048/1913/602 992/1852/561 985/1841/551 +f 1049/1918/470 1062/1931/470 1071/1919/469 +f 1055/1921/472 1067/1925/472 1065/1922/471 +f 1057/1924/473 1069/1926/473 1067/1925/472 +f 1059/1920/469 1071/1919/469 1069/1926/473 +f 1050/1929/605 1052/2122/605 1054/2123/605 +f 1054/2123/605 1056/2124/605 1050/1929/605 +f 1056/2124/605 1058/1927/605 1050/1929/605 +f 1051/1930/475 1063/1933/475 1062/1931/470 +f 1053/1932/471 1065/1960/471 1063/1933/475 +f 1072/1934/606 1060/1952/606 1058/1935/607 +f 1068/1937/608 1070/1936/607 1058/1935/607 +f 1068/1937/608 1056/1938/608 1054/1939/609 +f 1066/1941/609 1054/2125/609 1052/1942/610 +f 1064/1943/610 1052/1942/610 1050/1944/611 +f 1084/1946/484 1082/1958/493 1066/1941/493 +f 1083/1947/483 1076/1948/488 1062/1931/488 +f 1076/1948/488 1073/1949/491 1071/1919/491 +f 1073/1949/491 1077/2126/492 1069/1926/492 +f 1075/1950/485 1084/1946/484 1064/1943/484 +f 1069/1926/492 1077/2126/492 1079/1951/490 +f 1072/1934/606 1061/1945/611 1050/1944/611 +f 1074/1953/469 1073/1949/469 1076/1948/470 +f 1078/1954/473 1077/2126/473 1073/1949/469 +f 1079/1951/472 1077/2126/473 1078/1954/473 +f 1081/1956/471 1079/1951/472 1080/1955/472 +f 1083/1947/475 1081/1959/471 1082/1958/471 +f 1076/1948/470 1083/1947/475 1084/1946/475 +f 1066/1940/493 1082/1957/493 1080/1955/489 +f 1074/1953/486 1075/1950/485 1061/1945/485 +f 1068/1937/489 1080/1955/489 1078/1954/487 +f 1081/1959/482 1083/1947/483 1063/1933/483 +f 1078/1954/487 1074/1953/486 1072/1934/486 +f 1079/1951/490 1081/1956/482 1065/1922/482 +f 1085/1961/612 1087/2127/615 1088/1962/613 +f 1087/1964/615 1089/1968/618 1090/1965/616 +f 1091/1967/617 1092/1970/620 1090/1965/616 +f 1093/1969/619 1094/1972/622 1092/1970/620 +f 1095/1971/621 1096/1973/623 1094/1972/622 +f 1095/1971/621 1085/1961/612 1086/1963/614 +f 1097/1974/624 1099/2128/628 1100/1975/625 +f 1101/1977/627 1102/1981/630 1100/1978/625 +f 1103/1980/629 1104/1983/632 1102/1981/630 +f 1105/1982/631 1106/1985/634 1104/1983/632 +f 1105/1982/631 1107/1986/635 1108/1984/633 +f 1107/1986/635 1097/1974/624 1098/1976/626 +f 1109/1987/636 1111/2129/639 1112/1988/637 +f 1111/1990/639 1113/1994/642 1114/1991/640 +f 1115/1993/641 1116/1996/644 1114/1991/640 +f 1117/1995/643 1118/1998/646 1116/1996/644 +f 1119/1997/645 1120/1999/647 1118/1998/646 +f 1119/1997/645 1109/1987/636 1110/1989/638 +f 1121/2000/648 1123/2130/651 1124/2001/649 +f 1123/2003/651 1125/2007/654 1126/2004/652 +f 1127/2006/653 1128/2009/656 1126/2004/652 +f 1129/2008/655 1130/2011/658 1128/2009/656 +f 1131/2010/657 1132/2012/659 1130/2011/658 +f 1131/2010/657 1121/2000/648 1122/2002/650 +f 1135/2013/660 1136/2131/664 1134/2014/661 +f 1137/2016/663 1138/2020/666 1136/2017/664 +f 1137/2016/663 1139/2021/667 1140/2019/665 +f 1139/2021/667 1141/2023/669 1142/2022/668 +f 1141/2023/669 1143/2025/671 1144/2024/670 +f 1133/2015/662 1134/2014/661 1144/2024/670 +f 1146/2026/561 1154/2030/560 1153/2027/549 +f 1146/2026/561 1147/2031/559 1155/2029/569 +f 1147/2031/559 1148/2034/558 1156/2032/557 +f 1149/2033/556 1157/2036/566 1156/2032/557 +f 1149/2033/556 1150/2038/554 1158/2035/555 +f 1151/2037/553 1159/2132/552 1158/2035/555 +f 1152/2039/550 1160/2042/563 1159/2040/552 +f 1145/2028/551 1153/2027/549 1160/2042/563 +f 1153/2027/549 1154/2030/560 1162/2043/571 +f 1155/2029/569 1163/2046/570 1162/2043/571 +f 1155/2029/569 1156/2032/557 1164/2045/568 +f 1157/2036/566 1165/2047/567 1164/2045/568 +f 1158/2035/555 1166/2049/565 1165/2047/567 +f 1158/2035/555 1159/2132/552 1167/2048/564 +f 1160/2042/563 1168/2051/573 1167/2050/564 +f 1153/2027/549 1161/2044/562 1168/2051/573 +f 1161/2052/562 1162/2056/571 1170/2053/580 +f 1163/2055/570 1171/2058/579 1170/2053/580 +f 1163/2055/570 1164/2060/568 1172/2057/578 +f 1165/2059/567 1173/2062/577 1172/2057/578 +f 1166/2061/565 1174/2064/576 1173/2062/577 +f 1166/2061/565 1167/2133/564 1175/2063/575 +f 1168/2065/573 1176/2068/574 1175/2066/575 +f 1161/2052/562 1169/2054/572 1176/2068/574 +f 1170/2053/580 1178/2070/586 1177/2069/556 +f 1171/2058/579 1179/2072/585 1178/2070/586 +f 1171/2058/579 1172/2057/578 1180/2071/584 +f 1173/2062/577 1181/2073/551 1180/2071/584 +f 1174/2064/576 1182/2074/583 1181/2073/551 +f 1175/2063/575 1183/2134/582 1182/2074/583 +f 1175/2066/575 1176/2068/574 1184/2075/581 +f 1169/2054/572 1177/2069/556 1184/2075/581 +f 1178/2070/586 1186/2079/590 1185/2077/566 +f 1178/2070/586 1179/2072/585 1187/2078/589 +f 1180/2071/584 1188/2080/595 1187/2078/589 +f 1181/2073/551 1189/2081/549 1188/2080/595 +f 1182/2074/583 1190/2083/588 1189/2081/549 +f 1182/2074/583 1183/2134/582 1191/2082/587 +f 1184/2075/581 1192/2085/591 1191/2084/587 +f 1184/2075/581 1177/2069/556 1185/2077/566 +f 1186/2079/590 1194/2088/598 1193/2086/567 +f 1186/2079/590 1187/2078/589 1195/2087/597 +f 1188/2080/595 1196/2090/596 1195/2087/597 +f 1188/2080/595 1189/2081/549 1197/2089/562 +f 1190/2083/588 1198/2092/594 1197/2089/562 +f 1190/2083/588 1191/2082/587 1199/2091/593 +f 1192/2085/591 1200/2094/592 1199/2093/593 +f 1185/2077/566 1193/2086/567 1200/2094/592 +f 1194/2088/598 1202/2097/602 1201/2095/577 +f 1194/2088/598 1195/2087/597 1203/2096/604 +f 1196/2090/596 1204/2098/601 1203/2096/604 +f 1197/2089/562 1205/2099/572 1204/2098/601 +f 1198/2092/594 1206/2100/600 1205/2099/572 +f 1199/2091/593 1207/2103/599 1206/2100/600 +f 1200/2094/592 1208/2102/603 1207/2101/599 +f 1193/2086/567 1201/2095/577 1208/2102/603 +f 1202/2097/602 1146/2026/561 1145/2028/551 +f 1202/2097/602 1203/2096/604 1147/2031/559 +f 1204/2098/601 1148/2034/558 1147/2031/559 +f 1204/2098/601 1205/2099/572 1149/2033/556 +f 1206/2100/600 1150/2038/554 1149/2033/556 +f 1207/2103/599 1151/2037/553 1150/2038/554 +f 1208/2102/603 1152/2039/550 1151/2041/553 +f 1201/2095/577 1145/2028/551 1152/2039/550 +o spinny_upper +v 0.127409 2.435693 -0.570525 +v 0.311433 2.435693 -0.573891 +v 0.127409 2.450696 -0.579187 +v 0.311433 2.447781 -0.580870 +v 0.127409 2.450696 -0.596510 +v 0.311433 2.447781 -0.594827 +v 0.127409 2.435693 -0.605172 +v 0.311433 2.435693 -0.601806 +v 0.127409 2.420691 -0.596510 +v 0.311433 2.423605 -0.594827 +v 0.127409 2.420691 -0.579187 +v 0.311433 2.423605 -0.580870 +v 0.296158 2.435693 -0.570525 +v 0.244484 2.435693 -0.570525 +v 0.244484 2.450696 -0.579187 +v 0.296158 2.450696 -0.579187 +v 0.244484 2.450696 -0.596510 +v 0.296158 2.450696 -0.596510 +v 0.244484 2.435693 -0.605172 +v 0.296158 2.435693 -0.605172 +v 0.244484 2.420691 -0.596510 +v 0.296158 2.420691 -0.596510 +v 0.244484 2.420691 -0.579187 +v 0.296158 2.420691 -0.579187 +v 0.248187 2.403485 -0.569253 +v 0.292455 2.403485 -0.569253 +v 0.292455 2.435693 -0.550658 +v 0.248187 2.435693 -0.550658 +v 0.248187 2.403485 -0.606444 +v 0.292455 2.403485 -0.606444 +v 0.248187 2.435693 -0.625039 +v 0.292455 2.435693 -0.625039 +v 0.248187 2.467901 -0.606444 +v 0.292455 2.467901 -0.606444 +v 0.248187 2.467901 -0.569253 +v 0.292455 2.467901 -0.569253 +v 0.264576 2.450435 -0.571215 +v 0.375908 2.663330 -0.587129 +v 0.252583 2.455839 -0.579309 +v 0.363915 2.668733 -0.595223 +v 0.252527 2.454715 -0.594713 +v 0.363860 2.667610 -0.610627 +v 0.264465 2.448188 -0.602023 +v 0.375797 2.661082 -0.617937 +v 0.276457 2.442784 -0.593929 +v 0.387789 2.655678 -0.609843 +v 0.276513 2.443907 -0.578525 +v 0.387845 2.656802 -0.594439 +v 0.265024 2.453681 -0.594850 +v 0.375908 2.504334 -0.806877 +v 0.253032 2.447653 -0.602490 +v 0.363915 2.498306 -0.814518 +v 0.252976 2.432656 -0.606182 +v 0.363859 2.483309 -0.818209 +v 0.264913 2.423687 -0.602232 +v 0.375797 2.474340 -0.814260 +v 0.276906 2.429715 -0.594592 +v 0.387789 2.480368 -0.806619 +v 0.276962 2.444712 -0.590900 +v 0.387845 2.495365 -0.802928 +v 0.264576 2.432207 -0.605240 +v 0.375908 2.246909 -0.719820 +v 0.252583 2.423077 -0.601869 +v 0.363915 2.237780 -0.716448 +v 0.252527 2.414932 -0.588746 +v 0.363859 2.229635 -0.703326 +v 0.264465 2.415917 -0.578996 +v 0.375797 2.230619 -0.693575 +v 0.276457 2.425046 -0.582368 +v 0.387789 2.239748 -0.696947 +v 0.276513 2.433191 -0.595490 +v 0.387845 2.247894 -0.710069 +v 0.264576 2.415689 -0.588028 +v 0.375908 2.252807 -0.450017 +v 0.252583 2.416074 -0.578304 +v 0.363915 2.253193 -0.440293 +v 0.252527 2.426037 -0.566502 +v 0.363860 2.263156 -0.428491 +v 0.264465 2.435615 -0.564425 +v 0.375797 2.272733 -0.426414 +v 0.276457 2.435229 -0.574150 +v 0.387789 2.272347 -0.436139 +v 0.276513 2.425266 -0.585951 +v 0.387845 2.262384 -0.447940 +v 0.269238 2.426954 -0.566999 +v 0.375908 2.512899 -0.361717 +v 0.257245 2.436322 -0.564361 +v 0.363915 2.522266 -0.359079 +v 0.257189 2.450624 -0.570190 +v 0.363860 2.536569 -0.364907 +v 0.269127 2.455559 -0.578657 +v 0.375797 2.541504 -0.373374 +v 0.281119 2.446192 -0.581295 +v 0.387789 2.532136 -0.376013 +v 0.281175 2.431889 -0.575466 +v 0.387845 2.517833 -0.370184 +v 0.380466 2.692867 -0.481324 +v 0.398360 2.686019 -0.484160 +v 0.405772 2.669487 -0.491008 +v 0.398360 2.652956 -0.497855 +v 0.380466 2.646108 -0.500692 +v 0.362572 2.652956 -0.497855 +v 0.355160 2.669487 -0.491008 +v 0.362572 2.686019 -0.484160 +v 0.380466 2.542218 -0.330675 +v 0.398360 2.539381 -0.337523 +v 0.405772 2.532534 -0.354054 +v 0.398360 2.525686 -0.370586 +v 0.380466 2.522850 -0.377434 +v 0.362572 2.525686 -0.370586 +v 0.355160 2.532534 -0.354054 +v 0.362572 2.539381 -0.337523 +v 0.380466 2.329168 -0.330675 +v 0.398360 2.332005 -0.337523 +v 0.405772 2.338852 -0.354054 +v 0.398360 2.345700 -0.370586 +v 0.380466 2.348536 -0.377434 +v 0.362572 2.345700 -0.370586 +v 0.355160 2.338852 -0.354054 +v 0.362572 2.332005 -0.337523 +v 0.380466 2.178519 -0.481324 +v 0.398360 2.185367 -0.484160 +v 0.405772 2.201899 -0.491008 +v 0.398360 2.218431 -0.497856 +v 0.380466 2.225278 -0.500692 +v 0.362572 2.218431 -0.497856 +v 0.355160 2.201899 -0.491008 +v 0.362572 2.185367 -0.484160 +v 0.380466 2.178519 -0.694373 +v 0.398360 2.185367 -0.691537 +v 0.405772 2.201899 -0.684689 +v 0.398360 2.218431 -0.677842 +v 0.380466 2.225278 -0.675005 +v 0.362572 2.218431 -0.677842 +v 0.355160 2.201899 -0.684689 +v 0.362572 2.185367 -0.691537 +v 0.380466 2.329168 -0.845022 +v 0.398360 2.332005 -0.838174 +v 0.405772 2.338852 -0.821643 +v 0.398360 2.345700 -0.805111 +v 0.380466 2.348536 -0.798263 +v 0.362572 2.345700 -0.805111 +v 0.355160 2.338852 -0.821643 +v 0.362572 2.332005 -0.838174 +v 0.380466 2.542218 -0.845022 +v 0.398360 2.539382 -0.838174 +v 0.405772 2.532534 -0.821643 +v 0.398360 2.525686 -0.805111 +v 0.380466 2.522850 -0.798263 +v 0.362572 2.525686 -0.805111 +v 0.355160 2.532534 -0.821643 +v 0.362572 2.539382 -0.838174 +v 0.380466 2.692867 -0.694373 +v 0.398360 2.686019 -0.691537 +v 0.405772 2.669487 -0.684689 +v 0.398360 2.652956 -0.677842 +v 0.380466 2.646108 -0.675005 +v 0.362572 2.652956 -0.677842 +v 0.355160 2.669487 -0.684689 +v 0.362572 2.686019 -0.691537 +v -0.044410 2.435693 -0.570525 +v -0.228434 2.435693 -0.573891 +v -0.044410 2.450695 -0.579187 +v -0.228434 2.447781 -0.580870 +v -0.044410 2.450695 -0.596510 +v -0.228434 2.447781 -0.594827 +v -0.044410 2.435693 -0.605172 +v -0.228434 2.435693 -0.601806 +v -0.044410 2.420690 -0.596510 +v -0.228434 2.423605 -0.594827 +v -0.044410 2.420690 -0.579187 +v -0.228434 2.423605 -0.580870 +v -0.213159 2.435693 -0.570525 +v -0.161486 2.435693 -0.570525 +v -0.161486 2.450695 -0.579187 +v -0.213159 2.450695 -0.579187 +v -0.161486 2.450695 -0.596510 +v -0.213159 2.450695 -0.596510 +v -0.161486 2.435693 -0.605172 +v -0.213159 2.435693 -0.605172 +v -0.161486 2.420690 -0.596510 +v -0.213159 2.420690 -0.596510 +v -0.161486 2.420690 -0.579187 +v -0.213159 2.420690 -0.579187 +v -0.165188 2.403485 -0.569253 +v -0.209457 2.403485 -0.569253 +v -0.209457 2.435693 -0.550658 +v -0.165188 2.435693 -0.550658 +v -0.165188 2.403485 -0.606444 +v -0.209457 2.403485 -0.606444 +v -0.165188 2.435693 -0.625039 +v -0.209457 2.435693 -0.625039 +v -0.165188 2.467901 -0.606444 +v -0.209457 2.467901 -0.606444 +v -0.165188 2.467901 -0.569253 +v -0.209457 2.467901 -0.569253 +v -0.181577 2.450435 -0.571215 +v -0.292909 2.663329 -0.587129 +v -0.169584 2.455838 -0.579309 +v -0.280916 2.668733 -0.595223 +v -0.169529 2.454715 -0.594713 +v -0.280861 2.667610 -0.610627 +v -0.181466 2.448187 -0.602023 +v -0.292798 2.661082 -0.617937 +v -0.193459 2.442784 -0.593929 +v -0.304791 2.655678 -0.609843 +v -0.193514 2.443907 -0.578525 +v -0.304846 2.656802 -0.594439 +v -0.182026 2.453681 -0.594850 +v -0.292909 2.504334 -0.806877 +v -0.170033 2.447653 -0.602490 +v -0.280916 2.498306 -0.814518 +v -0.169977 2.432656 -0.606182 +v -0.280861 2.483309 -0.818209 +v -0.181915 2.423687 -0.602232 +v -0.292798 2.474340 -0.814260 +v -0.193907 2.429715 -0.594592 +v -0.304791 2.480368 -0.806620 +v -0.193963 2.444712 -0.590901 +v -0.304846 2.495365 -0.802928 +v -0.181577 2.432206 -0.605240 +v -0.292909 2.246909 -0.719820 +v -0.169584 2.423077 -0.601869 +v -0.280916 2.237780 -0.716448 +v -0.169529 2.414932 -0.588746 +v -0.280861 2.229635 -0.703326 +v -0.181466 2.415916 -0.578996 +v -0.292798 2.230619 -0.693575 +v -0.193459 2.425046 -0.582368 +v -0.304791 2.239748 -0.696947 +v -0.193514 2.433191 -0.595490 +v -0.304846 2.247893 -0.710069 +v -0.181577 2.415688 -0.588028 +v -0.292909 2.252807 -0.450017 +v -0.169584 2.416074 -0.578304 +v -0.280916 2.253192 -0.440293 +v -0.169529 2.426037 -0.566502 +v -0.280861 2.263155 -0.428491 +v -0.181466 2.435614 -0.564425 +v -0.292798 2.272733 -0.426414 +v -0.193459 2.435229 -0.574150 +v -0.304791 2.272347 -0.436139 +v -0.193514 2.425266 -0.585951 +v -0.304846 2.262384 -0.447940 +v -0.186239 2.426954 -0.566999 +v -0.292909 2.512898 -0.361717 +v -0.174246 2.436321 -0.564361 +v -0.280916 2.522266 -0.359079 +v -0.174191 2.450624 -0.570190 +v -0.280861 2.536569 -0.364907 +v -0.186128 2.455559 -0.578657 +v -0.292798 2.541503 -0.373374 +v -0.198121 2.446191 -0.581295 +v -0.304791 2.532136 -0.376013 +v -0.198176 2.431889 -0.575466 +v -0.304846 2.517833 -0.370184 +v -0.297467 2.692866 -0.481324 +v -0.315361 2.686019 -0.484160 +v -0.322773 2.669487 -0.491008 +v -0.315361 2.652955 -0.497855 +v -0.297467 2.646108 -0.500692 +v -0.279574 2.652955 -0.497855 +v -0.272162 2.669487 -0.491008 +v -0.279574 2.686019 -0.484160 +v -0.297467 2.542217 -0.330675 +v -0.315361 2.539381 -0.337523 +v -0.322773 2.532533 -0.354054 +v -0.315361 2.525686 -0.370586 +v -0.297467 2.522849 -0.377434 +v -0.279574 2.525686 -0.370586 +v -0.272162 2.532533 -0.354054 +v -0.279574 2.539381 -0.337523 +v -0.297467 2.329168 -0.330675 +v -0.315361 2.332004 -0.337523 +v -0.322773 2.338852 -0.354054 +v -0.315361 2.345700 -0.370586 +v -0.297467 2.348536 -0.377434 +v -0.279574 2.345700 -0.370586 +v -0.272162 2.338852 -0.354054 +v -0.279574 2.332004 -0.337523 +v -0.297467 2.178519 -0.481324 +v -0.315361 2.185367 -0.484160 +v -0.322773 2.201899 -0.491008 +v -0.315361 2.218430 -0.497856 +v -0.297467 2.225278 -0.500692 +v -0.279574 2.218430 -0.497856 +v -0.272162 2.201899 -0.491008 +v -0.279574 2.185367 -0.484160 +v -0.297467 2.178519 -0.694373 +v -0.315361 2.185367 -0.691537 +v -0.322773 2.201899 -0.684689 +v -0.315361 2.218430 -0.677842 +v -0.297467 2.225278 -0.675005 +v -0.279574 2.218430 -0.677842 +v -0.272162 2.201899 -0.684689 +v -0.279574 2.185367 -0.691537 +v -0.297467 2.329168 -0.845022 +v -0.315361 2.332004 -0.838175 +v -0.322773 2.338852 -0.821643 +v -0.315361 2.345700 -0.805111 +v -0.297467 2.348536 -0.798263 +v -0.279574 2.345700 -0.805111 +v -0.272162 2.338852 -0.821643 +v -0.279574 2.332004 -0.838175 +v -0.297467 2.542218 -0.845022 +v -0.315361 2.539381 -0.838174 +v -0.322773 2.532534 -0.821643 +v -0.315361 2.525686 -0.805111 +v -0.297467 2.522850 -0.798263 +v -0.279574 2.525686 -0.805111 +v -0.272162 2.532534 -0.821643 +v -0.279574 2.539381 -0.838174 +v -0.297467 2.692866 -0.694373 +v -0.315361 2.686019 -0.691537 +v -0.322773 2.669487 -0.684689 +v -0.315361 2.652955 -0.677842 +v -0.297467 2.646107 -0.675005 +v -0.279574 2.652955 -0.677842 +v -0.272162 2.669487 -0.684689 +v -0.279574 2.686019 -0.691537 +vt 0.667698 0.362762 +vt 0.640199 0.358261 +vt 0.667737 0.359326 +vt 0.640924 0.375165 +vt 0.667891 0.369730 +vt 0.668100 0.373751 +vt 0.640202 0.370763 +vt 0.667750 0.366229 +vt 0.640072 0.366415 +vt 0.797021 0.387656 +vt 0.799345 0.386315 +vt 0.801670 0.390340 +vt 0.640507 0.354283 +vt 0.667871 0.355916 +vt 0.668100 0.352523 +vt 0.625761 0.363844 +vt 0.629027 0.361047 +vt 0.628740 0.364363 +vt 0.624989 0.366272 +vt 0.627746 0.367605 +vt 0.623515 0.368301 +vt 0.625501 0.370236 +vt 0.624459 0.355430 +vt 0.625663 0.350017 +vt 0.627780 0.353840 +vt 0.625518 0.358363 +vt 0.628748 0.357581 +vt 0.631848 0.353216 +vt 0.636858 0.357395 +vt 0.637511 0.352990 +vt 0.640110 0.362279 +vt 0.636532 0.361474 +vt 0.632177 0.357754 +vt 0.636165 0.365588 +vt 0.632064 0.361641 +vt 0.631496 0.365400 +vt 0.635666 0.370261 +vt 0.630110 0.369320 +vt 0.626558 0.373815 +vt 0.635872 0.378285 +vt 0.639755 0.347383 +vt 0.641864 0.350415 +vt 0.272875 0.980430 +vt 0.275844 0.934182 +vt 0.275844 0.980475 +vt 0.258029 0.980475 +vt 0.260998 0.934183 +vt 0.260998 0.980475 +vt 0.263967 0.980430 +vt 0.263967 0.934138 +vt 0.266937 0.980386 +vt 0.266937 0.934093 +vt 0.269906 0.980386 +vt 0.272875 0.934138 +vt 0.069661 0.912352 +vt 0.022650 0.909383 +vt 0.069673 0.909383 +vt 0.022650 0.927199 +vt 0.069660 0.924230 +vt 0.069673 0.927199 +vt 0.022636 0.924230 +vt 0.069634 0.921260 +vt 0.022611 0.921260 +vt 0.069622 0.918291 +vt 0.022613 0.915321 +vt 0.069636 0.915321 +vt 0.022638 0.912352 +vt 0.510857 0.889009 +vt 0.507887 0.936025 +vt 0.507887 0.888986 +vt 0.525704 0.888986 +vt 0.522734 0.936025 +vt 0.522734 0.888985 +vt 0.519765 0.889008 +vt 0.519765 0.936048 +vt 0.516795 0.889032 +vt 0.516795 0.936071 +vt 0.513826 0.889032 +vt 0.510856 0.936049 +vt 0.235523 0.934138 +vt 0.232554 0.980386 +vt 0.232554 0.934093 +vt 0.250369 0.934093 +vt 0.247400 0.980386 +vt 0.247400 0.934093 +vt 0.244431 0.934138 +vt 0.244431 0.980430 +vt 0.241462 0.934182 +vt 0.241462 0.980475 +vt 0.238492 0.934183 +vt 0.235523 0.980431 +vt 0.653181 0.902823 +vt 0.650212 0.855426 +vt 0.653181 0.855373 +vt 0.668027 0.902875 +vt 0.665058 0.855446 +vt 0.668027 0.855426 +vt 0.662089 0.902864 +vt 0.662089 0.855415 +vt 0.659120 0.902812 +vt 0.659120 0.855362 +vt 0.656150 0.902791 +vt 0.656150 0.855341 +vt 0.025683 0.826823 +vt 0.021884 0.789889 +vt 0.025544 0.789862 +vt 0.018782 0.826867 +vt 0.018400 0.789856 +vt 0.014878 0.789795 +vt 0.015279 0.826832 +vt 0.011142 0.789754 +vt 0.011415 0.826831 +vt 0.007404 0.789713 +vt 0.007506 0.826837 +vt 0.003876 0.789648 +vt 0.032732 0.826779 +vt 0.029201 0.789834 +vt 0.032679 0.789870 +vt 0.029242 0.826771 +vt 0.025720 0.865955 +vt 0.022157 0.826877 +vt 0.021801 0.865308 +vt 0.015085 0.862608 +vt 0.011727 0.862107 +vt 0.008295 0.862683 +vt 0.003872 0.826817 +vt 0.029722 0.865385 +vt 0.025994 0.565415 +vt 0.022202 0.604746 +vt 0.021967 0.566009 +vt 0.018260 0.567466 +vt 0.018693 0.604681 +vt 0.014786 0.568861 +vt 0.015069 0.604588 +vt 0.011355 0.569425 +vt 0.011185 0.604506 +vt 0.008031 0.568914 +vt 0.007334 0.604417 +vt 0.004839 0.567623 +vt 0.032684 0.604841 +vt 0.029929 0.566050 +vt 0.033402 0.567439 +vt 0.029299 0.604771 +vt 0.025502 0.641726 +vt 0.025772 0.604759 +vt 0.021844 0.641748 +vt 0.018359 0.641706 +vt 0.014837 0.641636 +vt 0.011099 0.641592 +vt 0.007360 0.641550 +vt 0.003830 0.604306 +vt 0.032636 0.641745 +vt 0.029158 0.641705 +vt 0.021831 0.678781 +vt 0.018346 0.678743 +vt 0.014827 0.678677 +vt 0.011097 0.678636 +vt 0.007366 0.678596 +vt 0.003834 0.641484 +vt 0.032643 0.678773 +vt 0.029159 0.678735 +vt 0.025505 0.715793 +vt 0.025495 0.678758 +vt 0.021841 0.715817 +vt 0.014836 0.715714 +vt 0.011107 0.715673 +vt 0.003857 0.715567 +vt 0.003846 0.678531 +vt 0.029169 0.715770 +vt 0.025517 0.752829 +vt 0.021853 0.752853 +vt 0.018355 0.715779 +vt 0.018367 0.752815 +vt 0.014848 0.752751 +vt 0.011118 0.752710 +vt 0.007376 0.715632 +vt 0.007387 0.752669 +vt 0.032664 0.752844 +vt 0.032653 0.715808 +vt 0.029180 0.752806 +vt 0.003867 0.752604 +vt 0.774087 0.364623 +vt 0.746460 0.361670 +vt 0.774047 0.361187 +vt 0.774240 0.354219 +vt 0.747273 0.348783 +vt 0.774450 0.350197 +vt 0.774100 0.357719 +vt 0.746551 0.353186 +vt 0.746422 0.357533 +vt 0.789362 0.387656 +vt 0.789362 0.390340 +vt 0.787038 0.391682 +vt 0.774220 0.368033 +vt 0.746549 0.365687 +vt 0.774450 0.371425 +vt 0.746857 0.369665 +vt 0.735376 0.362901 +vt 0.732111 0.360105 +vt 0.735089 0.359585 +vt 0.731339 0.357676 +vt 0.734095 0.356343 +vt 0.729864 0.355648 +vt 0.731851 0.353713 +vt 0.732013 0.373931 +vt 0.730809 0.368519 +vt 0.734129 0.370109 +vt 0.731867 0.365585 +vt 0.735098 0.366367 +vt 0.738198 0.370733 +vt 0.743861 0.370958 +vt 0.743208 0.366554 +vt 0.742881 0.362474 +vt 0.738526 0.366194 +vt 0.742016 0.353688 +vt 0.732274 0.362764 +vt 0.738414 0.362307 +vt 0.737846 0.358548 +vt 0.736460 0.354629 +vt 0.742222 0.345664 +vt 0.732908 0.350133 +vt 0.735961 0.378285 +vt 0.746104 0.376566 +vt 0.748214 0.373533 +vt 0.811899 0.970339 +vt 0.808930 0.924091 +vt 0.811899 0.924046 +vt 0.826746 0.970383 +vt 0.823776 0.924091 +vt 0.826746 0.924091 +vt 0.820807 0.970339 +vt 0.823776 0.970384 +vt 0.817838 0.970295 +vt 0.820807 0.924047 +vt 0.814869 0.970294 +vt 0.817838 0.924002 +vt 0.814869 0.924002 +vt 0.812160 0.913373 +vt 0.765149 0.916343 +vt 0.765137 0.913373 +vt 0.812159 0.901496 +vt 0.765149 0.898526 +vt 0.812172 0.898526 +vt 0.812134 0.904465 +vt 0.765136 0.901496 +vt 0.812122 0.907434 +vt 0.765111 0.904465 +vt 0.765112 0.910404 +vt 0.765099 0.907434 +vt 0.812135 0.910404 +vt 0.485381 0.936048 +vt 0.482411 0.889032 +vt 0.485381 0.889008 +vt 0.500228 0.936071 +vt 0.497258 0.889032 +vt 0.500228 0.889032 +vt 0.494289 0.936049 +vt 0.497258 0.936072 +vt 0.491320 0.936025 +vt 0.494289 0.889009 +vt 0.488350 0.936025 +vt 0.491320 0.888986 +vt 0.488350 0.888985 +vt 0.965791 0.003874 +vt 0.968760 0.050123 +vt 0.965791 0.050167 +vt 0.950945 0.003830 +vt 0.953915 0.050122 +vt 0.950945 0.050123 +vt 0.956884 0.003874 +vt 0.953914 0.003830 +vt 0.959853 0.003919 +vt 0.956884 0.050167 +vt 0.962822 0.003919 +vt 0.959853 0.050211 +vt 0.962822 0.050212 +vt 0.876485 0.910228 +vt 0.879454 0.862831 +vt 0.879454 0.910281 +vt 0.891331 0.910207 +vt 0.894301 0.862779 +vt 0.894301 0.910228 +vt 0.888362 0.862790 +vt 0.891331 0.862758 +vt 0.888362 0.910239 +vt 0.885393 0.862842 +vt 0.885393 0.910291 +vt 0.882424 0.862863 +vt 0.882424 0.910312 +vt 0.062775 0.641509 +vt 0.059389 0.604493 +vt 0.062914 0.604547 +vt 0.055631 0.641514 +vt 0.059115 0.641481 +vt 0.052110 0.641576 +vt 0.056014 0.604503 +vt 0.048373 0.641616 +vt 0.052511 0.604539 +vt 0.044635 0.641657 +vt 0.048647 0.604539 +vt 0.041107 0.641723 +vt 0.044738 0.604533 +vt 0.066432 0.641536 +vt 0.069963 0.604591 +vt 0.069910 0.641500 +vt 0.066474 0.604599 +vt 0.062951 0.565415 +vt 0.059033 0.566062 +vt 0.055567 0.567465 +vt 0.052316 0.568762 +vt 0.048959 0.569263 +vt 0.042074 0.567279 +vt 0.045526 0.568687 +vt 0.070633 0.567421 +vt 0.066954 0.565985 +vt 0.063226 0.865955 +vt 0.059433 0.826625 +vt 0.063004 0.826611 +vt 0.055492 0.863905 +vt 0.059198 0.865361 +vt 0.052300 0.826783 +vt 0.055924 0.826690 +vt 0.048586 0.861945 +vt 0.052017 0.862509 +vt 0.045263 0.862457 +vt 0.048416 0.826865 +vt 0.041061 0.827064 +vt 0.044565 0.826953 +vt 0.067160 0.865320 +vt 0.069915 0.826529 +vt 0.070633 0.863931 +vt 0.066530 0.826599 +vt 0.059076 0.789622 +vt 0.062734 0.789644 +vt 0.052068 0.789734 +vt 0.055591 0.789664 +vt 0.048331 0.789778 +vt 0.044592 0.789821 +vt 0.069867 0.789625 +vt 0.066389 0.789665 +vt 0.062727 0.752612 +vt 0.055577 0.752628 +vt 0.059063 0.752589 +vt 0.052058 0.752693 +vt 0.048328 0.752734 +vt 0.041077 0.752840 +vt 0.044597 0.752774 +vt 0.069875 0.752597 +vt 0.066390 0.752635 +vt 0.062736 0.715577 +vt 0.055587 0.715592 +vt 0.059072 0.715554 +vt 0.048338 0.715697 +vt 0.052068 0.715657 +vt 0.041088 0.715803 +vt 0.044608 0.715738 +vt 0.069885 0.715562 +vt 0.066400 0.715600 +vt 0.062748 0.678541 +vt 0.059084 0.678517 +vt 0.052079 0.678620 +vt 0.055599 0.678555 +vt 0.048349 0.678660 +vt 0.044619 0.678701 +vt 0.066411 0.678564 +vt 0.069896 0.678526 +vt 0.041098 0.678766 +vt 0.801670 0.387656 +vt 0.799345 0.391682 +vt 0.797021 0.390340 +vt 0.625924 0.361184 +vt 0.622584 0.352463 +vt 0.629612 0.345664 +vt 0.258029 0.934182 +vt 0.269906 0.934093 +vt 0.022599 0.918291 +vt 0.525704 0.936025 +vt 0.513826 0.936072 +vt 0.250369 0.980386 +vt 0.238492 0.980475 +vt 0.650212 0.902875 +vt 0.665058 0.902896 +vt 0.018335 0.863905 +vt 0.004842 0.864092 +vt 0.033402 0.863949 +vt 0.784714 0.390340 +vt 0.784714 0.387656 +vt 0.787038 0.386315 +vt 0.728934 0.371485 +vt 0.742515 0.358360 +vt 0.808930 0.970383 +vt 0.812172 0.916343 +vt 0.482411 0.936071 +vt 0.968760 0.003830 +vt 0.876485 0.862779 +vt 0.041103 0.604553 +vt 0.042071 0.863747 +vt 0.041066 0.789886 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 -0.0000 -1.0000 +vn 0.0000 -0.8660 -0.5000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.8660 0.5000 +vn 0.2152 -0.8457 -0.4883 +vn 0.2152 -0.8457 0.4883 +vn 0.2152 0.0000 -0.9766 +vn 0.2152 0.8457 -0.4883 +vn 0.2152 0.8457 0.4883 +vn 0.2152 -0.0000 0.9766 +vn 0.9831 0.1587 -0.0916 +vn 0.9831 0.1587 0.0916 +vn -0.9831 0.1587 0.0916 +vn -0.9831 0.0000 0.1832 +vn -0.9831 -0.1587 0.0916 +vn -0.9831 -0.1587 -0.0916 +vn 0.9831 -0.0000 0.1832 +vn -0.9831 -0.0000 -0.1832 +vn 0.9831 0.0000 -0.1832 +vn 0.9831 -0.1587 0.0916 +vn 0.9831 -0.1587 -0.0916 +vn -0.9831 0.1587 -0.0916 +vn -0.0013 0.0752 0.9972 +vn -0.7649 0.4355 0.4747 +vn -0.7674 0.4364 0.4698 +vn -0.7685 0.3625 -0.5273 +vn -0.7709 0.3641 -0.5227 +vn -0.0085 -0.0701 -0.9975 +vn 0.0013 -0.0752 -0.9972 +vn 0.7649 -0.4355 -0.4747 +vn 0.7674 -0.4364 -0.4698 +vn 0.7685 -0.3625 0.5273 +vn 0.0084 0.0701 0.9975 +vn 0.0036 0.9722 0.2341 +vn -0.7691 0.5824 -0.2631 +vn -0.7690 0.5826 -0.2630 +vn -0.7757 -0.3873 -0.4982 +vn -0.7736 -0.3916 -0.4981 +vn -0.0076 -0.9717 -0.2361 +vn -0.0036 -0.9722 -0.2341 +vn 0.7691 -0.5824 0.2631 +vn 0.7757 0.3873 0.4982 +vn 0.7736 0.3916 0.4981 +vn 0.0076 0.9717 0.2361 +vn 0.0010 0.5263 -0.8503 +vn -0.7687 -0.0687 -0.6359 +vn -0.7701 -0.0706 -0.6341 +vn -0.7723 -0.5975 0.2158 +vn -0.7736 -0.5967 0.2134 +vn -0.0061 -0.5286 0.8489 +vn -0.0010 -0.5264 0.8503 +vn 0.7687 0.0687 0.6359 +vn 0.7701 0.0706 0.6341 +vn 0.7723 0.5975 -0.2158 +vn 0.0061 0.5286 -0.8489 +vn -0.0013 -0.6470 -0.7625 +vn -0.7649 -0.6313 -0.1281 +vn -0.7674 -0.6292 -0.1236 +vn -0.7685 0.0167 0.6397 +vn -0.7709 0.0127 0.6369 +vn -0.0084 0.6431 0.7658 +vn 0.0013 0.6470 0.7625 +vn 0.7649 0.6313 0.1281 +vn 0.7674 0.6292 0.1236 +vn 0.7685 -0.0167 -0.6397 +vn 0.0084 -0.6431 -0.7658 +vn 0.0020 -0.9228 0.3853 +vn -0.7755 -0.3271 0.5400 +vn 0.0114 -0.9245 0.3811 +vn -0.7797 -0.3191 0.5387 +vn -0.7840 0.6009 0.1558 +vn -0.0114 0.9245 -0.3811 +vn -0.0020 0.9228 -0.3853 +vn 0.7755 0.3271 -0.5399 +vn 0.7797 0.3191 -0.5388 +vn 0.7840 -0.6009 -0.1558 +vn 0.7846 -0.6000 -0.1565 +vn -0.0000 0.3827 0.9239 +vn 0.6630 0.6916 0.2865 +vn -0.0000 0.9239 0.3827 +vn 0.9955 0.0363 0.0876 +vn 0.9955 0.0876 0.0363 +vn 0.7574 -0.6033 -0.2499 +vn 0.7574 -0.2499 -0.6033 +vn 0.0000 -0.9239 -0.3827 +vn -0.0000 -0.3827 -0.9239 +vn -0.7574 -0.6033 -0.2499 +vn -0.7574 -0.2499 -0.6033 +vn -0.9955 0.0876 0.0363 +vn -0.9955 0.0363 0.0876 +vn -0.6630 0.6916 0.2865 +vn -0.6630 0.2865 0.6916 +vn 0.0000 -0.3827 0.9239 +vn 0.6630 0.2865 0.6916 +vn 0.6630 -0.2865 0.6916 +vn 0.7574 0.2499 -0.6033 +vn 0.0000 0.3827 -0.9239 +vn -0.7574 0.2499 -0.6033 +vn -0.6630 -0.2865 0.6916 +vn 0.6630 -0.6916 0.2865 +vn 0.9955 -0.0363 0.0876 +vn 0.9955 -0.0876 0.0363 +vn 0.7574 0.6033 -0.2499 +vn 0.0000 0.9239 -0.3827 +vn -0.7574 0.6033 -0.2499 +vn -0.9955 -0.0363 0.0876 +vn -0.9955 -0.0876 0.0363 +vn -0.6630 -0.6916 0.2865 +vn 0.0000 -0.9239 0.3827 +vn 0.6630 -0.6916 -0.2865 +vn 0.9955 -0.0876 -0.0363 +vn 0.7574 0.6033 0.2499 +vn -0.7574 0.6033 0.2499 +vn -0.9955 -0.0876 -0.0363 +vn -0.6630 -0.6916 -0.2865 +vn 0.6630 -0.2865 -0.6916 +vn 0.9955 -0.0363 -0.0876 +vn 0.7574 0.2499 0.6033 +vn -0.7574 0.2499 0.6033 +vn -0.9955 -0.0363 -0.0876 +vn -0.6630 -0.2865 -0.6916 +vn 0.6630 0.2865 -0.6916 +vn 0.7574 -0.2499 0.6033 +vn -0.9955 0.0363 -0.0876 +vn -0.6630 0.2865 -0.6916 +vn 0.6630 0.6916 -0.2865 +vn 0.9955 0.0363 -0.0876 +vn 0.9955 0.0876 -0.0363 +vn 0.7574 -0.6033 0.2499 +vn -0.7574 -0.2499 0.6033 +vn -0.7574 -0.6033 0.2499 +vn -0.9955 0.0876 -0.0363 +vn -0.6630 0.6916 -0.2865 +vn -1.0000 -0.0000 0.0000 +vn -0.2152 -0.8457 0.4883 +vn -0.2152 -0.8457 -0.4883 +vn -0.2152 -0.0000 -0.9766 +vn -0.2152 0.8457 -0.4883 +vn -0.2152 0.8457 0.4883 +vn -0.2152 0.0000 0.9766 +vn 0.0013 0.0752 0.9972 +vn 0.7649 0.4355 0.4747 +vn -0.0085 0.0701 0.9975 +vn 0.7674 0.4364 0.4698 +vn 0.7685 0.3624 -0.5273 +vn 0.0084 -0.0701 -0.9975 +vn 0.7709 0.3641 -0.5227 +vn -0.7649 -0.4355 -0.4747 +vn -0.0013 -0.0752 -0.9972 +vn -0.7685 -0.3625 0.5273 +vn -0.7674 -0.4364 -0.4698 +vn -0.7709 -0.3641 0.5227 +vn -0.0036 0.9722 0.2341 +vn 0.7691 0.5824 -0.2631 +vn -0.0076 0.9717 0.2361 +vn 0.7757 -0.3873 -0.4982 +vn 0.7690 0.5826 -0.2630 +vn 0.0076 -0.9717 -0.2361 +vn 0.7736 -0.3916 -0.4981 +vn -0.7691 -0.5824 0.2631 +vn 0.0035 -0.9722 -0.2341 +vn -0.7758 0.3873 0.4982 +vn -0.7691 -0.5826 0.2630 +vn -0.7736 0.3916 0.4981 +vn -0.0010 0.5264 -0.8503 +vn 0.7687 -0.0687 -0.6359 +vn -0.0061 0.5286 -0.8489 +vn 0.7701 -0.0706 -0.6341 +vn 0.7723 -0.5975 0.2158 +vn 0.0061 -0.5286 0.8489 +vn 0.7736 -0.5967 0.2134 +vn -0.7687 0.0687 0.6359 +vn 0.0010 -0.5263 0.8503 +vn -0.7723 0.5975 -0.2158 +vn -0.7701 0.0706 0.6341 +vn -0.7736 0.5967 -0.2134 +vn 0.0013 -0.6470 -0.7625 +vn 0.7649 -0.6313 -0.1281 +vn -0.0085 -0.6431 -0.7658 +vn 0.7674 -0.6292 -0.1236 +vn 0.7685 0.0167 0.6397 +vn 0.0085 0.6431 0.7658 +vn 0.7709 0.0127 0.6369 +vn -0.7649 0.6313 0.1281 +vn -0.0013 0.6470 0.7625 +vn -0.7685 -0.0167 -0.6397 +vn -0.7674 0.6292 0.1236 +vn -0.7709 -0.0127 -0.6369 +vn 0.7755 -0.3271 0.5399 +vn -0.0020 -0.9228 0.3853 +vn -0.0114 -0.9245 0.3811 +vn 0.7840 0.6009 0.1558 +vn 0.7797 -0.3191 0.5388 +vn 0.0114 0.9245 -0.3811 +vn 0.7846 0.6000 0.1565 +vn 0.0020 0.9228 -0.3853 +vn -0.7755 0.3271 -0.5399 +vn -0.7797 0.3191 -0.5387 +vn -0.7840 -0.6009 -0.1558 +vn -0.7846 -0.6000 -0.1565 +vn 0.7709 -0.3641 0.5227 +vn 0.7690 -0.5826 0.2630 +vn 0.7736 0.5967 -0.2134 +vn 0.7709 -0.0127 -0.6369 +vn -0.7846 0.6000 0.1565 +s 1 +f 1219/2135/677 1222/2136/678 1209/2137/678 +f 1225/2138/679 1215/2139/680 1213/2140/679 +f 1227/2141/680 1217/2142/681 1215/2139/680 +f 1229/2143/681 1219/2135/677 1217/2142/681 +f 1216/2144/682 1214/2145/682 1210/2146/682 +f 1209/2137/678 1223/2147/683 1211/2148/683 +f 1223/2147/683 1213/2149/679 1211/2148/683 +f 1218/2150/684 1232/2151/685 1230/2152/684 +f 1216/2153/686 1230/2152/684 1228/2154/686 +f 1214/2155/687 1228/2154/686 1226/2156/687 +f 1212/2157/688 1226/2158/687 1224/2159/688 +f 1210/2160/689 1224/2159/688 1221/2161/689 +f 1226/2158/690 1244/2162/691 1224/2159/691 +f 1223/2147/692 1236/2163/693 1243/2164/692 +f 1231/2165/694 1236/2163/693 1222/2136/693 +f 1229/2143/695 1233/2166/694 1231/2165/694 +f 1224/2159/691 1235/2167/696 1221/2161/696 +f 1227/2141/697 1237/2168/695 1229/2143/695 +f 1232/2151/685 1210/2160/689 1221/2161/689 +f 1235/2167/678 1233/2166/677 1234/2169/677 +f 1234/2169/677 1237/2168/681 1238/2170/681 +f 1238/2170/681 1239/2171/680 1240/2172/680 +f 1242/2173/679 1239/2171/680 1241/2174/679 +f 1244/2162/683 1241/2175/679 1243/2164/683 +f 1244/2162/683 1236/2163/678 1235/2167/678 +f 1228/2154/698 1242/2173/690 1226/2156/690 +f 1221/2161/696 1234/2169/699 1232/2151/699 +f 1230/2152/700 1240/2172/698 1228/2154/698 +f 1223/2147/692 1241/2175/701 1225/2176/701 +f 1232/2151/699 1238/2170/700 1230/2152/700 +f 1225/2138/701 1239/2171/697 1227/2141/697 +f 1245/2177/702 1248/2178/703 1247/2179/704 +f 1247/2180/704 1250/2181/705 1249/2182/706 +f 1250/2181/705 1251/2183/707 1249/2182/706 +f 1252/2184/708 1253/2185/709 1251/2183/707 +f 1254/2186/710 1255/2187/711 1253/2185/709 +f 1255/2187/711 1246/2188/712 1245/2177/702 +f 1257/2189/713 1260/2190/714 1259/2191/715 +f 1260/2192/714 1261/2193/716 1259/2194/715 +f 1262/2195/717 1263/2196/718 1261/2193/716 +f 1264/2197/719 1265/2198/720 1263/2196/718 +f 1265/2198/720 1268/2199/721 1267/2200/722 +f 1267/2200/722 1258/2201/723 1257/2189/713 +f 1269/2202/724 1272/2203/725 1271/2204/726 +f 1271/2205/726 1274/2206/727 1273/2207/728 +f 1274/2206/727 1275/2208/729 1273/2207/728 +f 1276/2209/730 1277/2210/731 1275/2208/729 +f 1278/2211/732 1279/2212/733 1277/2210/731 +f 1279/2212/733 1270/2213/734 1269/2202/724 +f 1281/2214/735 1284/2215/736 1283/2216/737 +f 1283/2217/737 1286/2218/738 1285/2219/739 +f 1286/2218/738 1287/2220/740 1285/2219/739 +f 1288/2221/741 1289/2222/742 1287/2220/740 +f 1290/2223/743 1291/2224/744 1289/2222/742 +f 1291/2224/744 1282/2225/745 1281/2214/735 +f 1294/2226/746 1295/2227/747 1293/2228/748 +f 1296/2229/749 1297/2230/750 1295/2231/747 +f 1297/2230/750 1300/2232/751 1299/2233/752 +f 1299/2233/752 1302/2234/753 1301/2235/754 +f 1301/2235/754 1304/2236/755 1303/2237/756 +f 1304/2236/755 1293/2228/748 1303/2237/756 +f 1313/2238/757 1306/2239/758 1305/2240/759 +f 1306/2239/758 1315/2241/760 1307/2242/761 +f 1315/2241/760 1308/2243/762 1307/2242/761 +f 1316/2244/763 1309/2245/764 1308/2243/762 +f 1317/2246/765 1310/2247/766 1309/2245/764 +f 1318/2248/767 1311/2249/768 1310/2247/766 +f 1319/2250/769 1312/2251/770 1311/2252/768 +f 1320/2253/771 1305/2240/759 1312/2251/770 +f 1321/2254/772 1314/2255/773 1313/2238/757 +f 1322/2256/774 1315/2241/760 1314/2255/773 +f 1315/2241/760 1324/2257/775 1316/2244/763 +f 1316/2244/763 1325/2258/776 1317/2246/765 +f 1325/2258/776 1318/2248/767 1317/2246/765 +f 1326/2259/777 1319/2260/769 1318/2248/767 +f 1319/2250/769 1328/2261/778 1320/2253/771 +f 1328/2261/778 1313/2238/757 1320/2253/771 +f 1321/2262/772 1330/2263/779 1322/2264/774 +f 1330/2263/779 1323/2265/780 1322/2264/774 +f 1331/2266/781 1324/2267/775 1323/2265/780 +f 1332/2268/782 1325/2269/776 1324/2267/775 +f 1333/2270/783 1326/2271/777 1325/2269/776 +f 1334/2272/784 1327/2273/785 1326/2271/777 +f 1335/2274/786 1328/2275/778 1327/2276/785 +f 1336/2277/787 1321/2262/772 1328/2275/778 +f 1337/2278/764 1330/2263/779 1329/2279/788 +f 1338/2280/789 1331/2266/781 1330/2263/779 +f 1339/2281/790 1332/2268/782 1331/2266/781 +f 1340/2282/791 1333/2270/783 1332/2268/782 +f 1341/2283/759 1334/2272/784 1333/2270/783 +f 1342/2284/792 1335/2285/786 1334/2272/784 +f 1343/2286/793 1336/2277/787 1335/2274/786 +f 1344/2287/794 1329/2279/788 1336/2277/787 +f 1337/2278/764 1346/2288/795 1338/2280/789 +f 1338/2280/789 1347/2289/796 1339/2281/790 +f 1347/2289/796 1340/2282/791 1339/2281/790 +f 1348/2290/797 1341/2283/759 1340/2282/791 +f 1349/2291/757 1342/2284/792 1341/2283/759 +f 1350/2292/798 1343/2293/793 1342/2284/792 +f 1351/2294/799 1344/2287/794 1343/2286/793 +f 1352/2295/800 1337/2278/764 1344/2287/794 +f 1353/2296/776 1346/2288/795 1345/2297/765 +f 1354/2298/801 1347/2289/796 1346/2288/795 +f 1347/2289/796 1356/2299/802 1348/2290/797 +f 1356/2299/802 1349/2291/757 1348/2290/797 +f 1357/2300/772 1350/2292/798 1349/2291/757 +f 1350/2292/798 1359/2301/803 1351/2302/799 +f 1351/2294/799 1360/2303/804 1352/2295/800 +f 1360/2303/804 1345/2297/765 1352/2295/800 +f 1361/2304/783 1354/2298/801 1353/2296/776 +f 1362/2305/805 1355/2306/806 1354/2298/801 +f 1363/2307/807 1356/2299/802 1355/2306/806 +f 1364/2308/808 1357/2300/772 1356/2299/802 +f 1365/2309/788 1358/2310/809 1357/2300/772 +f 1366/2311/810 1359/2301/803 1358/2310/809 +f 1367/2312/811 1360/2303/804 1359/2313/803 +f 1368/2314/812 1353/2296/776 1360/2303/804 +f 1305/2240/759 1362/2305/805 1361/2304/783 +f 1306/2239/758 1363/2307/807 1362/2305/805 +f 1307/2242/761 1364/2308/808 1363/2307/807 +f 1308/2243/762 1365/2309/788 1364/2308/808 +f 1309/2245/764 1366/2311/810 1365/2309/788 +f 1310/2247/766 1367/2315/811 1366/2311/810 +f 1311/2252/768 1368/2314/812 1367/2312/811 +f 1312/2251/770 1361/2304/783 1368/2314/812 +f 1369/2316/678 1391/2317/677 1379/2318/677 +f 1375/2319/680 1385/2320/679 1373/2321/679 +f 1377/2322/681 1387/2323/680 1375/2319/680 +f 1379/2318/677 1389/2324/681 1377/2322/681 +f 1378/2325/813 1380/2326/813 1370/2327/813 +f 1371/2328/683 1382/2329/678 1369/2316/678 +f 1373/2330/679 1383/2331/683 1371/2328/683 +f 1392/2332/814 1378/2333/815 1390/2334/815 +f 1390/2334/815 1376/2335/816 1388/2336/816 +f 1388/2336/816 1374/2337/817 1386/2338/817 +f 1386/2339/817 1372/2340/818 1384/2341/818 +f 1384/2341/818 1370/2342/819 1381/2343/819 +f 1404/2344/692 1386/2339/701 1384/2341/692 +f 1403/2345/691 1382/2329/696 1383/2331/691 +f 1396/2346/696 1391/2317/699 1382/2329/696 +f 1393/2347/699 1389/2324/700 1391/2317/699 +f 1395/2348/693 1384/2341/692 1381/2343/693 +f 1389/2324/700 1399/2349/698 1387/2323/698 +f 1392/2332/814 1370/2342/819 1380/2350/814 +f 1393/2347/677 1395/2348/678 1394/2351/677 +f 1398/2352/681 1393/2347/677 1394/2351/677 +f 1399/2349/680 1398/2352/681 1400/2353/680 +f 1401/2354/679 1400/2353/680 1402/2355/679 +f 1403/2345/683 1402/2356/679 1404/2344/683 +f 1396/2346/678 1404/2344/683 1395/2348/678 +f 1402/2355/701 1388/2336/697 1386/2338/701 +f 1394/2351/694 1381/2343/693 1392/2332/694 +f 1400/2353/697 1390/2334/695 1388/2336/697 +f 1401/2357/690 1383/2331/691 1385/2358/690 +f 1398/2352/695 1392/2332/694 1390/2334/695 +f 1399/2349/698 1385/2320/690 1387/2323/698 +f 1405/2359/820 1408/2360/821 1406/2361/822 +f 1407/2362/823 1410/2363/824 1408/2364/821 +f 1411/2365/825 1410/2363/824 1409/2366/826 +f 1413/2367/827 1412/2368/828 1411/2365/825 +f 1415/2369/829 1414/2370/830 1413/2367/827 +f 1415/2369/829 1406/2361/822 1416/2371/831 +f 1417/2372/832 1420/2373/833 1418/2374/834 +f 1421/2375/835 1420/2376/833 1419/2377/836 +f 1423/2378/837 1422/2379/838 1421/2375/835 +f 1425/2380/839 1424/2381/840 1423/2378/837 +f 1425/2380/839 1428/2382/841 1426/2383/842 +f 1427/2384/843 1418/2374/834 1428/2382/841 +f 1429/2385/844 1432/2386/845 1430/2387/846 +f 1431/2388/847 1434/2389/848 1432/2390/845 +f 1435/2391/849 1434/2389/848 1433/2392/850 +f 1437/2393/851 1436/2394/852 1435/2391/849 +f 1439/2395/853 1438/2396/854 1437/2393/851 +f 1439/2395/853 1430/2387/846 1440/2397/855 +f 1441/2398/856 1444/2399/857 1442/2400/858 +f 1443/2401/859 1446/2402/860 1444/2403/857 +f 1447/2404/861 1446/2402/860 1445/2405/862 +f 1449/2406/863 1448/2407/864 1447/2404/861 +f 1451/2408/865 1450/2409/866 1449/2406/863 +f 1451/2408/865 1442/2400/858 1452/2410/867 +f 1455/2411/868 1454/2412/869 1453/2413/870 +f 1457/2414/871 1456/2415/872 1455/2416/868 +f 1457/2414/871 1460/2417/873 1458/2418/874 +f 1459/2419/875 1462/2420/876 1460/2417/873 +f 1461/2421/877 1464/2422/878 1462/2420/876 +f 1453/2413/870 1464/2422/878 1463/2423/879 +f 1465/2424/759 1474/2425/771 1473/2426/757 +f 1467/2427/768 1474/2425/771 1466/2428/770 +f 1468/2429/766 1475/2430/769 1467/2427/768 +f 1469/2431/764 1476/2432/767 1468/2429/766 +f 1470/2433/762 1477/2434/765 1469/2431/764 +f 1471/2435/761 1478/2436/763 1470/2433/762 +f 1472/2437/758 1479/2438/760 1471/2439/761 +f 1472/2437/758 1473/2426/757 1480/2440/773 +f 1474/2425/771 1481/2441/772 1473/2426/757 +f 1475/2430/769 1482/2442/778 1474/2425/771 +f 1476/2432/767 1483/2443/785 1475/2430/769 +f 1477/2434/765 1484/2444/777 1476/2432/767 +f 1478/2436/763 1485/2445/776 1477/2434/765 +f 1478/2436/763 1487/2446/780 1486/2447/775 +f 1480/2440/773 1487/2448/780 1479/2438/760 +f 1473/2426/757 1488/2449/774 1480/2440/773 +f 1481/2450/772 1490/2451/787 1489/2452/788 +f 1483/2453/785 1490/2451/787 1482/2454/778 +f 1483/2453/785 1492/2455/784 1491/2456/786 +f 1485/2457/776 1492/2455/784 1484/2458/777 +f 1486/2459/775 1493/2460/783 1485/2457/776 +f 1486/2459/775 1495/2461/781 1494/2462/782 +f 1488/2463/774 1495/2464/781 1487/2465/780 +f 1481/2450/772 1496/2466/779 1488/2463/774 +f 1489/2452/788 1498/2467/794 1497/2468/764 +f 1491/2456/786 1498/2467/794 1490/2451/787 +f 1491/2456/786 1500/2469/792 1499/2470/793 +f 1493/2460/783 1500/2469/792 1492/2455/784 +f 1494/2462/782 1501/2471/759 1493/2460/783 +f 1495/2461/781 1502/2472/791 1494/2462/782 +f 1496/2466/779 1503/2473/790 1495/2464/781 +f 1489/2452/788 1504/2474/789 1496/2466/779 +f 1498/2467/794 1505/2475/765 1497/2468/764 +f 1498/2467/794 1507/2476/799 1506/2477/800 +f 1500/2469/792 1507/2476/799 1499/2470/793 +f 1501/2471/759 1508/2478/798 1500/2469/792 +f 1502/2472/791 1509/2479/757 1501/2471/759 +f 1502/2472/791 1511/2480/796 1510/2481/797 +f 1504/2474/789 1511/2482/796 1503/2473/790 +f 1504/2474/789 1505/2475/765 1512/2483/795 +f 1506/2477/800 1513/2484/776 1505/2475/765 +f 1506/2477/800 1515/2485/803 1514/2486/804 +f 1508/2478/798 1515/2485/803 1507/2476/799 +f 1508/2478/798 1517/2487/772 1516/2488/809 +f 1510/2481/797 1517/2487/772 1509/2479/757 +f 1510/2481/797 1519/2489/806 1518/2490/802 +f 1512/2483/795 1519/2491/806 1511/2482/796 +f 1505/2475/765 1520/2492/801 1512/2483/795 +f 1514/2486/804 1521/2493/783 1513/2484/776 +f 1515/2485/803 1522/2494/812 1514/2486/804 +f 1515/2485/803 1524/2495/810 1523/2496/811 +f 1517/2487/772 1524/2495/810 1516/2488/809 +f 1518/2490/802 1525/2497/788 1517/2487/772 +f 1519/2489/806 1526/2498/808 1518/2490/802 +f 1519/2491/806 1528/2499/805 1527/2500/807 +f 1513/2484/776 1528/2499/805 1520/2492/801 +f 1522/2494/812 1465/2424/759 1521/2493/783 +f 1522/2494/812 1467/2427/768 1466/2428/770 +f 1524/2495/810 1467/2427/768 1523/2496/811 +f 1525/2497/788 1468/2429/766 1524/2495/810 +f 1526/2498/808 1469/2431/764 1525/2497/788 +f 1527/2501/807 1470/2433/762 1526/2498/808 +f 1528/2499/805 1471/2439/761 1527/2500/807 +f 1521/2493/783 1472/2437/758 1528/2499/805 +f 1219/2135/677 1231/2165/677 1222/2136/678 +f 1225/2138/679 1227/2141/680 1215/2139/680 +f 1227/2141/680 1229/2143/681 1217/2142/681 +f 1229/2143/681 1231/2165/677 1219/2135/677 +f 1214/2145/682 1212/2502/682 1210/2146/682 +f 1210/2146/682 1220/2503/682 1218/2504/682 +f 1218/2504/682 1216/2144/682 1210/2146/682 +f 1209/2137/678 1222/2136/678 1223/2147/683 +f 1223/2147/683 1225/2176/679 1213/2149/679 +f 1218/2150/684 1220/2505/685 1232/2151/685 +f 1216/2153/686 1218/2150/684 1230/2152/684 +f 1214/2155/687 1216/2153/686 1228/2154/686 +f 1212/2157/688 1214/2506/687 1226/2158/687 +f 1210/2160/689 1212/2157/688 1224/2159/688 +f 1226/2158/690 1242/2507/690 1244/2162/691 +f 1223/2147/692 1222/2136/693 1236/2163/693 +f 1231/2165/694 1233/2166/694 1236/2163/693 +f 1229/2143/695 1237/2168/695 1233/2166/694 +f 1224/2159/691 1244/2162/691 1235/2167/696 +f 1227/2141/697 1239/2171/697 1237/2168/695 +f 1232/2151/685 1220/2505/685 1210/2160/689 +f 1235/2167/678 1236/2163/678 1233/2166/677 +f 1234/2169/677 1233/2166/677 1237/2168/681 +f 1238/2170/681 1237/2168/681 1239/2171/680 +f 1242/2173/679 1240/2172/680 1239/2171/680 +f 1244/2162/683 1242/2507/679 1241/2175/679 +f 1244/2162/683 1243/2164/683 1236/2163/678 +f 1228/2154/698 1240/2172/698 1242/2173/690 +f 1221/2161/696 1235/2167/696 1234/2169/699 +f 1230/2152/700 1238/2170/700 1240/2172/698 +f 1223/2147/692 1243/2164/692 1241/2175/701 +f 1232/2151/699 1234/2169/699 1238/2170/700 +f 1225/2138/701 1241/2174/701 1239/2171/697 +f 1245/2177/702 1246/2188/712 1248/2178/703 +f 1247/2180/704 1248/2508/703 1250/2181/705 +f 1250/2181/705 1252/2184/708 1251/2183/707 +f 1252/2184/708 1254/2186/710 1253/2185/709 +f 1254/2186/710 1256/2509/880 1255/2187/711 +f 1255/2187/711 1256/2509/880 1246/2188/712 +f 1257/2189/713 1258/2201/723 1260/2190/714 +f 1260/2192/714 1262/2195/717 1261/2193/716 +f 1262/2195/717 1264/2197/719 1263/2196/718 +f 1264/2197/719 1266/2510/881 1265/2198/720 +f 1265/2198/720 1266/2510/881 1268/2199/721 +f 1267/2200/722 1268/2199/721 1258/2201/723 +f 1269/2202/724 1270/2213/734 1272/2203/725 +f 1271/2205/726 1272/2511/725 1274/2206/727 +f 1274/2206/727 1276/2209/730 1275/2208/729 +f 1276/2209/730 1278/2211/732 1277/2210/731 +f 1278/2211/732 1280/2512/882 1279/2212/733 +f 1279/2212/733 1280/2512/882 1270/2213/734 +f 1281/2214/735 1282/2225/745 1284/2215/736 +f 1283/2217/737 1284/2513/736 1286/2218/738 +f 1286/2218/738 1288/2221/741 1287/2220/740 +f 1288/2221/741 1290/2223/743 1289/2222/742 +f 1290/2223/743 1292/2514/883 1291/2224/744 +f 1291/2224/744 1292/2514/883 1282/2225/745 +f 1294/2226/746 1296/2515/749 1295/2227/747 +f 1296/2229/749 1298/2516/884 1297/2230/750 +f 1297/2230/750 1298/2516/884 1300/2232/751 +f 1299/2233/752 1300/2232/751 1302/2234/753 +f 1301/2235/754 1302/2234/753 1304/2236/755 +f 1304/2236/755 1294/2226/746 1293/2228/748 +f 1313/2238/757 1314/2255/773 1306/2239/758 +f 1306/2239/758 1314/2255/773 1315/2241/760 +f 1315/2241/760 1316/2244/763 1308/2243/762 +f 1316/2244/763 1317/2246/765 1309/2245/764 +f 1317/2246/765 1318/2248/767 1310/2247/766 +f 1318/2248/767 1319/2260/769 1311/2249/768 +f 1319/2250/769 1320/2253/771 1312/2251/770 +f 1320/2253/771 1313/2238/757 1305/2240/759 +f 1321/2254/772 1322/2256/774 1314/2255/773 +f 1322/2256/774 1323/2517/780 1315/2241/760 +f 1315/2241/760 1323/2517/780 1324/2257/775 +f 1316/2244/763 1324/2257/775 1325/2258/776 +f 1325/2258/776 1326/2259/777 1318/2248/767 +f 1326/2259/777 1327/2518/785 1319/2260/769 +f 1319/2250/769 1327/2519/785 1328/2261/778 +f 1328/2261/778 1321/2254/772 1313/2238/757 +f 1321/2262/772 1329/2279/788 1330/2263/779 +f 1330/2263/779 1331/2266/781 1323/2265/780 +f 1331/2266/781 1332/2268/782 1324/2267/775 +f 1332/2268/782 1333/2270/783 1325/2269/776 +f 1333/2270/783 1334/2272/784 1326/2271/777 +f 1334/2272/784 1335/2285/786 1327/2273/785 +f 1335/2274/786 1336/2277/787 1328/2275/778 +f 1336/2277/787 1329/2279/788 1321/2262/772 +f 1337/2278/764 1338/2280/789 1330/2263/779 +f 1338/2280/789 1339/2281/790 1331/2266/781 +f 1339/2281/790 1340/2282/791 1332/2268/782 +f 1340/2282/791 1341/2283/759 1333/2270/783 +f 1341/2283/759 1342/2284/792 1334/2272/784 +f 1342/2284/792 1343/2293/793 1335/2285/786 +f 1343/2286/793 1344/2287/794 1336/2277/787 +f 1344/2287/794 1337/2278/764 1329/2279/788 +f 1337/2278/764 1345/2297/765 1346/2288/795 +f 1338/2280/789 1346/2288/795 1347/2289/796 +f 1347/2289/796 1348/2290/797 1340/2282/791 +f 1348/2290/797 1349/2291/757 1341/2283/759 +f 1349/2291/757 1350/2292/798 1342/2284/792 +f 1350/2292/798 1351/2302/799 1343/2293/793 +f 1351/2294/799 1352/2295/800 1344/2287/794 +f 1352/2295/800 1345/2297/765 1337/2278/764 +f 1353/2296/776 1354/2298/801 1346/2288/795 +f 1354/2298/801 1355/2306/806 1347/2289/796 +f 1347/2289/796 1355/2306/806 1356/2299/802 +f 1356/2299/802 1357/2300/772 1349/2291/757 +f 1357/2300/772 1358/2310/809 1350/2292/798 +f 1350/2292/798 1358/2310/809 1359/2301/803 +f 1351/2294/799 1359/2313/803 1360/2303/804 +f 1360/2303/804 1353/2296/776 1345/2297/765 +f 1361/2304/783 1362/2305/805 1354/2298/801 +f 1362/2305/805 1363/2307/807 1355/2306/806 +f 1363/2307/807 1364/2308/808 1356/2299/802 +f 1364/2308/808 1365/2309/788 1357/2300/772 +f 1365/2309/788 1366/2311/810 1358/2310/809 +f 1366/2311/810 1367/2315/811 1359/2301/803 +f 1367/2312/811 1368/2314/812 1360/2303/804 +f 1368/2314/812 1361/2304/783 1353/2296/776 +f 1305/2240/759 1306/2239/758 1362/2305/805 +f 1306/2239/758 1307/2242/761 1363/2307/807 +f 1307/2242/761 1308/2243/762 1364/2308/808 +f 1308/2243/762 1309/2245/764 1365/2309/788 +f 1309/2245/764 1310/2247/766 1366/2311/810 +f 1310/2247/766 1311/2249/768 1367/2315/811 +f 1311/2252/768 1312/2251/770 1368/2314/812 +f 1312/2251/770 1305/2240/759 1361/2304/783 +f 1369/2316/678 1382/2329/678 1391/2317/677 +f 1375/2319/680 1387/2323/680 1385/2320/679 +f 1377/2322/681 1389/2324/681 1387/2323/680 +f 1379/2318/677 1391/2317/677 1389/2324/681 +f 1370/2327/813 1372/2520/813 1374/2521/813 +f 1374/2521/813 1376/2522/813 1370/2327/813 +f 1376/2522/813 1378/2325/813 1370/2327/813 +f 1371/2328/683 1383/2331/683 1382/2329/678 +f 1373/2330/679 1385/2358/679 1383/2331/683 +f 1392/2332/814 1380/2350/814 1378/2333/815 +f 1390/2334/815 1378/2333/815 1376/2335/816 +f 1388/2336/816 1376/2335/816 1374/2337/817 +f 1386/2339/817 1374/2523/817 1372/2340/818 +f 1384/2341/818 1372/2340/818 1370/2342/819 +f 1404/2344/692 1402/2356/701 1386/2339/701 +f 1403/2345/691 1396/2346/696 1382/2329/696 +f 1396/2346/696 1393/2347/699 1391/2317/699 +f 1393/2347/699 1397/2524/700 1389/2324/700 +f 1395/2348/693 1404/2344/692 1384/2341/692 +f 1389/2324/700 1397/2524/700 1399/2349/698 +f 1392/2332/814 1381/2343/819 1370/2342/819 +f 1393/2347/677 1396/2346/678 1395/2348/678 +f 1398/2352/681 1397/2524/681 1393/2347/677 +f 1399/2349/680 1397/2524/681 1398/2352/681 +f 1401/2354/679 1399/2349/680 1400/2353/680 +f 1403/2345/683 1401/2357/679 1402/2356/679 +f 1396/2346/678 1403/2345/683 1404/2344/683 +f 1402/2355/701 1400/2353/697 1388/2336/697 +f 1394/2351/694 1395/2348/693 1381/2343/693 +f 1400/2353/697 1398/2352/695 1390/2334/695 +f 1401/2357/690 1403/2345/691 1383/2331/691 +f 1398/2352/695 1394/2351/694 1392/2332/694 +f 1399/2349/698 1401/2354/690 1385/2320/690 +f 1405/2359/820 1407/2525/823 1408/2360/821 +f 1407/2362/823 1409/2366/826 1410/2363/824 +f 1411/2365/825 1412/2368/828 1410/2363/824 +f 1413/2367/827 1414/2370/830 1412/2368/828 +f 1415/2369/829 1416/2371/831 1414/2370/830 +f 1415/2369/829 1405/2359/820 1406/2361/822 +f 1417/2372/832 1419/2526/836 1420/2373/833 +f 1421/2375/835 1422/2379/838 1420/2376/833 +f 1423/2378/837 1424/2381/840 1422/2379/838 +f 1425/2380/839 1426/2383/842 1424/2381/840 +f 1425/2380/839 1427/2384/843 1428/2382/841 +f 1427/2384/843 1417/2372/832 1418/2374/834 +f 1429/2385/844 1431/2527/847 1432/2386/845 +f 1431/2388/847 1433/2392/850 1434/2389/848 +f 1435/2391/849 1436/2394/852 1434/2389/848 +f 1437/2393/851 1438/2396/854 1436/2394/852 +f 1439/2395/853 1440/2397/855 1438/2396/854 +f 1439/2395/853 1429/2385/844 1430/2387/846 +f 1441/2398/856 1443/2528/859 1444/2399/857 +f 1443/2401/859 1445/2405/862 1446/2402/860 +f 1447/2404/861 1448/2407/864 1446/2402/860 +f 1449/2406/863 1450/2409/866 1448/2407/864 +f 1451/2408/865 1452/2410/867 1450/2409/866 +f 1451/2408/865 1441/2398/856 1442/2400/858 +f 1455/2411/868 1456/2529/872 1454/2412/869 +f 1457/2414/871 1458/2418/874 1456/2415/872 +f 1457/2414/871 1459/2419/875 1460/2417/873 +f 1459/2419/875 1461/2421/877 1462/2420/876 +f 1461/2421/877 1463/2423/879 1464/2422/878 +f 1453/2413/870 1454/2412/869 1464/2422/878 +f 1465/2424/759 1466/2428/770 1474/2425/771 +f 1467/2427/768 1475/2430/769 1474/2425/771 +f 1468/2429/766 1476/2432/767 1475/2430/769 +f 1469/2431/764 1477/2434/765 1476/2432/767 +f 1470/2433/762 1478/2436/763 1477/2434/765 +f 1471/2435/761 1479/2530/760 1478/2436/763 +f 1472/2437/758 1480/2440/773 1479/2438/760 +f 1472/2437/758 1465/2424/759 1473/2426/757 +f 1474/2425/771 1482/2442/778 1481/2441/772 +f 1475/2430/769 1483/2443/785 1482/2442/778 +f 1476/2432/767 1484/2444/777 1483/2443/785 +f 1477/2434/765 1485/2445/776 1484/2444/777 +f 1478/2436/763 1486/2447/775 1485/2445/776 +f 1478/2436/763 1479/2530/760 1487/2446/780 +f 1480/2440/773 1488/2449/774 1487/2448/780 +f 1473/2426/757 1481/2441/772 1488/2449/774 +f 1481/2450/772 1482/2454/778 1490/2451/787 +f 1483/2453/785 1491/2456/786 1490/2451/787 +f 1483/2453/785 1484/2458/777 1492/2455/784 +f 1485/2457/776 1493/2460/783 1492/2455/784 +f 1486/2459/775 1494/2462/782 1493/2460/783 +f 1486/2459/775 1487/2531/780 1495/2461/781 +f 1488/2463/774 1496/2466/779 1495/2464/781 +f 1481/2450/772 1489/2452/788 1496/2466/779 +f 1489/2452/788 1490/2451/787 1498/2467/794 +f 1491/2456/786 1499/2470/793 1498/2467/794 +f 1491/2456/786 1492/2455/784 1500/2469/792 +f 1493/2460/783 1501/2471/759 1500/2469/792 +f 1494/2462/782 1502/2472/791 1501/2471/759 +f 1495/2461/781 1503/2532/790 1502/2472/791 +f 1496/2466/779 1504/2474/789 1503/2473/790 +f 1489/2452/788 1497/2468/764 1504/2474/789 +f 1498/2467/794 1506/2477/800 1505/2475/765 +f 1498/2467/794 1499/2470/793 1507/2476/799 +f 1500/2469/792 1508/2478/798 1507/2476/799 +f 1501/2471/759 1509/2479/757 1508/2478/798 +f 1502/2472/791 1510/2481/797 1509/2479/757 +f 1502/2472/791 1503/2532/790 1511/2480/796 +f 1504/2474/789 1512/2483/795 1511/2482/796 +f 1504/2474/789 1497/2468/764 1505/2475/765 +f 1506/2477/800 1514/2486/804 1513/2484/776 +f 1506/2477/800 1507/2476/799 1515/2485/803 +f 1508/2478/798 1516/2488/809 1515/2485/803 +f 1508/2478/798 1509/2479/757 1517/2487/772 +f 1510/2481/797 1518/2490/802 1517/2487/772 +f 1510/2481/797 1511/2480/796 1519/2489/806 +f 1512/2483/795 1520/2492/801 1519/2491/806 +f 1505/2475/765 1513/2484/776 1520/2492/801 +f 1514/2486/804 1522/2494/812 1521/2493/783 +f 1515/2485/803 1523/2496/811 1522/2494/812 +f 1515/2485/803 1516/2488/809 1524/2495/810 +f 1517/2487/772 1525/2497/788 1524/2495/810 +f 1518/2490/802 1526/2498/808 1525/2497/788 +f 1519/2489/806 1527/2501/807 1526/2498/808 +f 1519/2491/806 1520/2492/801 1528/2499/805 +f 1513/2484/776 1521/2493/783 1528/2499/805 +f 1522/2494/812 1466/2428/770 1465/2424/759 +f 1522/2494/812 1523/2496/811 1467/2427/768 +f 1524/2495/810 1468/2429/766 1467/2427/768 +f 1525/2497/788 1469/2431/764 1468/2429/766 +f 1526/2498/808 1470/2433/762 1469/2431/764 +f 1527/2501/807 1471/2435/761 1470/2433/762 +f 1528/2499/805 1472/2437/758 1471/2439/761 +f 1521/2493/783 1465/2424/759 1472/2437/758 diff --git a/src/main/resources/assets/hbm/models/machines/arc_welder.obj b/src/main/resources/assets/hbm/models/machines/arc_welder.obj new file mode 100644 index 000000000..cf99681bf --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/arc_welder.obj @@ -0,0 +1,1225 @@ +# Blender v2.79 (sub 0) OBJ File: 'arc_welder.blend' +# www.blender.org +o Plane +v -1.000000 0.000000 1.500000 +v 1.000000 0.000000 1.500000 +v -1.000000 0.000000 -1.500000 +v 1.000000 0.000000 -1.500000 +v -1.000000 0.125000 1.500000 +v 1.000000 0.125000 1.500000 +v -1.000000 0.125000 -1.500000 +v 1.000000 0.125000 -1.500000 +v -1.000000 0.875000 1.500000 +v 1.000000 0.875000 1.500000 +v -1.000000 0.875000 -1.500000 +v 1.000000 0.875000 -1.500000 +v -1.000000 1.000000 1.500000 +v 1.000000 1.000000 1.500000 +v -1.000000 1.000000 -1.500000 +v 1.000000 1.000000 -1.500000 +v -0.875000 0.125000 -1.375000 +v -0.875000 0.125000 1.375000 +v 0.875000 0.125000 1.375000 +v 0.875000 0.125000 -1.375000 +v -0.875000 0.875000 -1.375000 +v -0.875000 0.875000 1.375000 +v 0.875000 0.875000 1.375000 +v 0.875000 0.875000 -1.375000 +v -0.500000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.500000 1.125000 -0.500000 +v -0.500000 1.125000 0.500000 +v 0.500000 1.125000 0.500000 +v 0.500000 1.125000 -0.500000 +v -0.750000 2.000000 1.125000 +v 0.750000 2.000000 1.125000 +v -0.750000 2.000000 0.875000 +v 0.750000 2.000000 0.875000 +v -0.750000 1.000000 1.125000 +v 0.750000 1.000000 1.125000 +v -0.750000 1.000000 0.875000 +v 0.750000 1.000000 0.875000 +v -0.500000 1.750000 1.125000 +v 0.500000 1.750000 1.125000 +v -0.500000 1.750000 0.875000 +v 0.500000 1.750000 0.875000 +v 0.500000 1.000000 1.125000 +v 0.500000 1.000000 0.875000 +v -0.500000 1.000000 1.125000 +v -0.500000 1.000000 0.875000 +v -0.750000 2.000000 -0.875000 +v 0.750000 2.000000 -0.875000 +v -0.750000 2.000000 -1.125000 +v 0.750000 2.000000 -1.125000 +v -0.750000 1.000000 -0.875000 +v 0.750000 1.000000 -0.875000 +v -0.750000 1.000000 -1.125000 +v 0.750000 1.000000 -1.125000 +v -0.500000 1.750000 -0.875000 +v 0.500000 1.750000 -0.875000 +v -0.500000 1.750000 -1.125000 +v 0.500000 1.750000 -1.125000 +v 0.500000 1.000000 -0.875000 +v 0.500000 1.000000 -1.125000 +v -0.500000 1.000000 -0.875000 +v -0.500000 1.000000 -1.125000 +v -0.250000 1.849455 1.399379 +v -0.250000 2.259031 1.112591 +v -0.250000 1.419272 0.785015 +v -0.250000 1.828848 0.498227 +v 0.250000 1.849455 1.399379 +v 0.250000 2.259031 1.112591 +v 0.250000 1.419272 0.785015 +v 0.250000 1.828848 0.498227 +v -0.187500 1.900652 1.363531 +v -0.187500 2.207834 1.148439 +v 0.187500 2.207834 1.148439 +v 0.187500 1.900652 1.363531 +v -0.187500 1.972349 1.465925 +v -0.187500 2.279531 1.250834 +v 0.187500 2.279531 1.250834 +v 0.187500 1.972349 1.465925 +v -0.125000 1.726454 0.569924 +v -0.125000 1.521666 0.713318 +v 0.125000 1.521666 0.713318 +v 0.125000 1.726454 0.569924 +v -0.125000 1.583060 0.365136 +v -0.125000 1.378272 0.508530 +v 0.125000 1.378272 0.508530 +v 0.125000 1.583060 0.365136 +v -0.062500 1.531863 0.400984 +v -0.062500 1.429469 0.472682 +v 0.062500 1.429469 0.472682 +v 0.062500 1.531863 0.400984 +v 0.000000 1.193878 0.027257 +v 0.250000 1.849455 -1.399379 +v 0.250000 2.259031 -1.112591 +v 0.250000 1.419272 -0.785015 +v 0.250000 1.828848 -0.498227 +v -0.250000 1.849455 -1.399379 +v -0.250000 2.259031 -1.112591 +v -0.250000 1.419272 -0.785015 +v -0.250000 1.828848 -0.498227 +v 0.187500 1.900652 -1.363531 +v 0.187500 2.207834 -1.148439 +v -0.187500 2.207834 -1.148439 +v -0.187500 1.900652 -1.363531 +v 0.187500 1.972349 -1.465925 +v 0.187500 2.279531 -1.250834 +v -0.187500 2.279531 -1.250834 +v -0.187500 1.972349 -1.465925 +v 0.125000 1.726454 -0.569924 +v 0.125000 1.521666 -0.713318 +v -0.125000 1.521666 -0.713318 +v -0.125000 1.726454 -0.569924 +v 0.125000 1.583060 -0.365136 +v 0.125000 1.378272 -0.508530 +v -0.125000 1.378272 -0.508530 +v -0.125000 1.583060 -0.365136 +v 0.062500 1.531863 -0.400984 +v 0.062500 1.429469 -0.472682 +v -0.062500 1.429469 -0.472682 +v -0.062500 1.531863 -0.400984 +v 0.000000 1.193878 -0.027257 +v -0.375000 1.000000 1.062500 +v 0.375000 1.000000 1.062500 +v -0.375000 1.000000 1.437500 +v 0.375000 1.000000 1.437500 +v -0.375000 1.187500 1.437500 +v -0.375000 1.187500 1.062500 +v 0.375000 1.187500 1.062500 +v 0.375000 1.187500 1.437500 +v -0.375000 1.250000 1.375000 +v -0.375000 1.250000 1.125000 +v 0.375000 1.250000 1.125000 +v 0.375000 1.250000 1.375000 +v -0.250000 1.000000 1.343750 +v -0.250000 1.000000 1.281250 +v -0.312500 1.000000 1.343750 +v -0.312500 1.000000 1.281250 +v -0.312500 2.062500 1.343750 +v -0.312500 2.062500 1.281250 +v -0.250000 2.062500 1.343750 +v -0.250000 2.062500 1.281250 +v -0.187500 2.062500 1.343750 +v -0.187500 2.062500 1.281250 +v -0.250000 2.125000 1.343750 +v -0.250000 2.125000 1.281250 +v -0.187500 2.125000 1.343750 +v -0.187500 2.125000 1.281250 +v -0.375000 1.000000 -1.437500 +v 0.375000 1.000000 -1.437500 +v -0.375000 1.000000 -1.062500 +v 0.375000 1.000000 -1.062500 +v -0.375000 1.187500 -1.062500 +v -0.375000 1.187500 -1.437500 +v 0.375000 1.187500 -1.437500 +v 0.375000 1.187500 -1.062500 +v -0.375000 1.250000 -1.125000 +v -0.375000 1.250000 -1.375000 +v 0.375000 1.250000 -1.375000 +v 0.375000 1.250000 -1.125000 +v -0.250000 1.000000 -1.281250 +v -0.250000 1.000000 -1.343750 +v -0.312500 1.000000 -1.281250 +v -0.312500 1.000000 -1.343750 +v -0.312500 2.062500 -1.281250 +v -0.312500 2.062500 -1.343750 +v -0.250000 2.062500 -1.281250 +v -0.250000 2.062500 -1.343750 +v -0.187500 2.062500 -1.281250 +v -0.187500 2.062500 -1.343750 +v -0.250000 2.125000 -1.281250 +v -0.250000 2.125000 -1.343750 +v -0.187500 2.125000 -1.281250 +v -0.187500 2.125000 -1.343750 +v 0.750000 1.250000 0.750000 +v 0.875000 1.250000 0.750000 +v 0.750000 1.250000 -0.750000 +v 0.875000 1.250000 -0.750000 +v 0.750000 1.000000 0.750000 +v 0.875000 1.000000 0.750000 +v 0.750000 1.000000 -0.750000 +v 0.875000 1.000000 -0.750000 +v 0.750000 1.124000 0.625000 +v 0.875000 1.124000 0.625000 +v 0.750000 1.124000 -0.625000 +v 0.875000 1.124000 -0.625000 +v 0.750000 0.999000 0.625000 +v 0.875000 0.999000 0.625000 +v 0.750000 0.999000 -0.625000 +v 0.875000 0.999000 -0.625000 +v -0.875000 1.250000 0.750000 +v -0.750000 1.250000 0.750000 +v -0.875000 1.250000 -0.750000 +v -0.750000 1.250000 -0.750000 +v -0.875000 1.000000 0.750000 +v -0.750000 1.000000 0.750000 +v -0.875000 1.000000 -0.750000 +v -0.750000 1.000000 -0.750000 +v -0.875000 1.124000 0.625000 +v -0.750000 1.124000 0.625000 +v -0.875000 1.124000 -0.625000 +v -0.750000 1.124000 -0.625000 +v -0.875000 0.999000 0.625000 +v -0.750000 0.999000 0.625000 +v -0.875000 0.999000 -0.625000 +v -0.750000 0.999000 -0.625000 +v -0.687500 0.687500 1.500000 +v -0.312500 0.687500 1.500000 +v -0.687500 0.312500 1.500000 +v -0.312500 0.312500 1.500000 +v -0.687500 0.312500 1.375000 +v -0.687500 0.687500 1.375000 +v -0.312500 0.687500 1.375000 +v -0.312500 0.312500 1.375000 +v 0.312500 0.687500 1.500000 +v 0.687500 0.687500 1.500000 +v 0.312500 0.312500 1.500000 +v 0.687500 0.312500 1.500000 +v 0.312500 0.312500 1.375000 +v 0.312500 0.687500 1.375000 +v 0.687500 0.687500 1.375000 +v 0.687500 0.312500 1.375000 +v 0.687500 0.687500 -1.500000 +v 0.312500 0.687500 -1.500000 +v 0.687500 0.312500 -1.500000 +v 0.312500 0.312500 -1.500000 +v 0.687500 0.312500 -1.375000 +v 0.687500 0.687500 -1.375000 +v 0.312500 0.687500 -1.375000 +v 0.312500 0.312500 -1.375000 +v -0.312500 0.687500 -1.500000 +v -0.687500 0.687500 -1.500000 +v -0.312500 0.312500 -1.500000 +v -0.687500 0.312500 -1.500000 +v -0.312500 0.312500 -1.375000 +v -0.312500 0.687500 -1.375000 +v -0.687500 0.687500 -1.375000 +v -0.687500 0.312500 -1.375000 +v 1.000000 0.687500 1.187500 +v 1.000000 0.687500 0.812500 +v 1.000000 0.312500 1.187500 +v 1.000000 0.312500 0.812500 +v 0.875000 0.312500 1.187500 +v 0.875000 0.687500 1.187500 +v 0.875000 0.687500 0.812500 +v 0.875000 0.312500 0.812500 +v 1.000000 0.687500 0.187500 +v 1.000000 0.687500 -0.187500 +v 1.000000 0.312500 0.187500 +v 1.000000 0.312500 -0.187500 +v 0.875000 0.312500 0.187500 +v 0.875000 0.687500 0.187500 +v 0.875000 0.687500 -0.187500 +v 0.875000 0.312500 -0.187500 +v -1.000000 0.687500 -0.187500 +v -1.000000 0.687500 0.187500 +v -1.000000 0.312500 -0.187500 +v -1.000000 0.312500 0.187500 +v -0.875000 0.312500 -0.187500 +v -0.875000 0.687500 -0.187500 +v -0.875000 0.687500 0.187500 +v -0.875000 0.312500 0.187500 +v -1.000000 0.687500 0.812500 +v -1.000000 0.687500 1.187500 +v -1.000000 0.312500 0.812500 +v -1.000000 0.312500 1.187500 +v -0.875000 0.312500 0.812500 +v -0.875000 0.687500 0.812500 +v -0.875000 0.687500 1.187500 +v -0.875000 0.312500 1.187500 +v 1.000000 0.687500 -0.812500 +v 1.000000 0.687500 -1.187500 +v 1.000000 0.312500 -0.812500 +v 1.000000 0.312500 -1.187500 +v 0.875000 0.312500 -0.812500 +v 0.875000 0.687500 -0.812500 +v 0.875000 0.687500 -1.187500 +v 0.875000 0.312500 -1.187500 +v -1.000000 0.687500 -1.187500 +v -1.000000 0.687500 -0.812500 +v -1.000000 0.312500 -1.187500 +v -1.000000 0.312500 -0.812500 +v -0.875000 0.312500 -1.187500 +v -0.875000 0.687500 -1.187500 +v -0.875000 0.687500 -0.812500 +v -0.875000 0.312500 -0.812500 +vt 0.571429 0.000000 +vt -0.000000 0.320000 +vt -0.000000 -0.000000 +vt 0.571429 0.340000 +vt 0.023810 0.360000 +vt 0.000000 0.340000 +vt 0.571429 0.320000 +vt 0.571429 0.320000 +vt 0.000000 0.340000 +vt 0.000000 0.320000 +vt 0.952381 0.320000 +vt 0.952381 0.320000 +vt 0.571429 0.340000 +vt 0.000000 0.500000 +vt 0.547619 0.480000 +vt 0.571429 0.500000 +vt -0.000000 0.520000 +vt 0.571429 0.840000 +vt -0.000000 0.840000 +vt 0.571429 0.500000 +vt -0.000000 0.520000 +vt 0.000000 0.500000 +vt 0.952381 0.500000 +vt 0.571429 0.520000 +vt 0.952381 0.500000 +vt 0.571429 0.520000 +vt 0.547619 0.360000 +vt 0.023810 0.480000 +vt 0.023810 0.360000 +vt 0.952381 0.340000 +vt 0.595238 0.360000 +vt 0.952381 0.340000 +vt 0.595238 0.360000 +vt 0.547619 0.360000 +vt 0.023810 0.480000 +vt 0.928571 0.360000 +vt 0.595238 0.480000 +vt 0.928571 0.360000 +vt 0.595238 0.480000 +vt 0.928571 0.480000 +vt 0.547619 0.480000 +vt 0.928571 0.480000 +vt 0.476190 0.880000 +vt 0.190476 0.920000 +vt 0.190476 0.880000 +vt 0.595238 0.540000 +vt 0.785714 0.700000 +vt 0.595238 0.700000 +vt 0.785714 0.520000 +vt 0.595238 0.520000 +vt 0.595238 0.720000 +vt 0.785714 0.720000 +vt 0.809524 0.700000 +vt 0.785714 0.540000 +vt 0.809524 0.540000 +vt 0.571429 0.540000 +vt 0.571429 0.700000 +vt 0.666667 0.920000 +vt 0.476190 0.920000 +vt -0.000000 0.880000 +vt 0.238095 0.960000 +vt 0.428571 0.840000 +vt 0.428571 1.000000 +vt 0.238095 1.000000 +vt 0.523810 0.960000 +vt 0.666667 1.000000 +vt 0.523810 1.000000 +vt 0.142857 1.000000 +vt -0.000000 0.960000 +vt 0.142857 0.960000 +vt -0.000000 0.920000 +vt 0.142857 0.840000 +vt 0.523810 0.840000 +vt 0.666667 0.880000 +vt 0.476190 0.880000 +vt 0.190476 0.920000 +vt 0.190476 0.880000 +vt 0.666667 0.920000 +vt 0.476190 0.920000 +vt -0.000000 0.880000 +vt 0.238095 0.960000 +vt 0.428571 0.840000 +vt 0.428571 1.000000 +vt 0.238095 1.000000 +vt 0.523810 0.960000 +vt 0.666667 1.000000 +vt 0.523810 1.000000 +vt 0.142857 1.000000 +vt -0.000000 0.960000 +vt 0.142857 0.960000 +vt -0.000000 0.920000 +vt 0.142857 0.840000 +vt 0.523810 0.840000 +vt 0.666667 0.880000 +vt 0.678571 0.240000 +vt 0.821429 0.160000 +vt 0.821429 0.240000 +vt 0.821429 -0.000000 +vt 0.845238 0.060000 +vt 0.821429 0.080000 +vt 0.678571 -0.000000 +vt 0.678571 0.160000 +vt 0.666667 0.090000 +vt 0.678571 0.080000 +vt 0.821429 0.320000 +vt 0.666667 0.150000 +vt 0.642857 0.090000 +vt 0.666667 0.010000 +vt 0.666667 0.230000 +vt 0.666667 0.170000 +vt 0.678571 0.320000 +vt 0.666667 0.250000 +vt 0.571429 0.150000 +vt 0.571429 0.090000 +vt 0.642857 0.070000 +vt 0.642857 0.010000 +vt 0.666667 0.310000 +vt 0.642857 0.250000 +vt 0.642857 0.170000 +vt 0.845238 0.180000 +vt 0.892857 0.220000 +vt 0.845238 0.220000 +vt 0.845238 0.300000 +vt 0.845238 0.140000 +vt 0.892857 0.020000 +vt 0.904762 0.050000 +vt 0.892857 0.060000 +vt 0.845238 0.260000 +vt 0.892857 0.300000 +vt 0.845238 0.100000 +vt 0.892857 0.140000 +vt 0.904762 0.030000 +vt 1.000000 0.040000 +vt 0.904762 0.270000 +vt 1.000000 0.280000 +vt 0.904762 0.290000 +vt 0.904762 0.110000 +vt 1.000000 0.120000 +vt 0.904762 0.130000 +vt 0.904762 0.210000 +vt 0.904762 0.190000 +vt 1.000000 0.200000 +vt 0.892857 0.100000 +vt 0.892857 0.260000 +vt 0.678571 0.240000 +vt 0.821429 0.160000 +vt 0.821429 0.240000 +vt 0.821429 -0.000000 +vt 0.845238 0.060000 +vt 0.821429 0.080000 +vt 0.678571 -0.000000 +vt 0.678571 0.160000 +vt 0.666667 0.090000 +vt 0.678571 0.080000 +vt 0.821429 0.320000 +vt 0.666667 0.150000 +vt 0.642857 0.090000 +vt 0.666667 0.010000 +vt 0.666667 0.230000 +vt 0.666667 0.170000 +vt 0.678571 0.320000 +vt 0.666667 0.250000 +vt 0.571429 0.150000 +vt 0.571429 0.090000 +vt 0.642857 0.070000 +vt 0.642857 0.010000 +vt 0.666667 0.310000 +vt 0.642857 0.250000 +vt 0.642857 0.170000 +vt 0.845238 0.180000 +vt 0.892857 0.220000 +vt 0.845238 0.220000 +vt 0.845238 0.300000 +vt 0.845238 0.140000 +vt 0.892857 0.020000 +vt 0.904762 0.050000 +vt 0.892857 0.060000 +vt 0.845238 0.260000 +vt 0.892857 0.300000 +vt 0.845238 0.100000 +vt 0.892857 0.140000 +vt 0.904762 0.030000 +vt 1.000000 0.040000 +vt 0.904762 0.270000 +vt 1.000000 0.280000 +vt 0.904762 0.290000 +vt 0.904762 0.110000 +vt 1.000000 0.120000 +vt 0.904762 0.130000 +vt 0.904762 0.210000 +vt 0.904762 0.190000 +vt 1.000000 0.200000 +vt 0.892857 0.100000 +vt 0.892857 0.260000 +vt 1.000000 0.500000 +vt 0.988095 0.510000 +vt 0.988095 0.500000 +vt 0.726190 0.720000 +vt 0.797619 0.720000 +vt 0.785714 0.760000 +vt 0.952381 0.500000 +vt 0.964286 0.510000 +vt 0.952381 0.510000 +vt 0.964286 0.320000 +vt 0.952381 0.490000 +vt 0.952381 0.320000 +vt 0.690476 0.760000 +vt 0.726190 0.880000 +vt 0.690476 0.880000 +vt 0.833333 0.880000 +vt 0.797619 0.760000 +vt 0.833333 0.760000 +vt 0.738095 0.880000 +vt 0.785714 0.880000 +vt 0.726190 0.760000 +vt 0.797619 0.880000 +vt 0.976190 0.320000 +vt 0.964286 0.490000 +vt 0.797619 0.920000 +vt 0.988095 0.320000 +vt 0.976190 0.490000 +vt 1.000000 0.320000 +vt 0.988095 0.490000 +vt 0.976190 0.500000 +vt 0.976190 0.510000 +vt 0.952381 0.500000 +vt 0.964286 0.500000 +vt 0.988095 0.500000 +vt 0.726190 0.720000 +vt 0.797619 0.720000 +vt 0.785714 0.760000 +vt 0.690476 0.760000 +vt 0.726190 0.880000 +vt 0.690476 0.880000 +vt 0.833333 0.880000 +vt 0.797619 0.760000 +vt 0.833333 0.760000 +vt 0.738095 0.880000 +vt 0.785714 0.880000 +vt 0.726190 0.760000 +vt 0.797619 0.880000 +vt 0.797619 0.920000 +vt 1.000000 0.500000 +vt 0.988095 0.510000 +vt 0.988095 0.500000 +vt 0.952381 0.500000 +vt 0.964286 0.510000 +vt 0.952381 0.510000 +vt 0.964286 0.320000 +vt 0.952381 0.490000 +vt 0.952381 0.320000 +vt 0.976190 0.320000 +vt 0.964286 0.490000 +vt 0.988095 0.320000 +vt 0.976190 0.490000 +vt 1.000000 0.320000 +vt 0.988095 0.490000 +vt 0.976190 0.500000 +vt 0.976190 0.510000 +vt 0.952381 0.500000 +vt 0.964286 0.500000 +vt 0.988095 0.500000 +vt 0.880952 0.560000 +vt 0.857143 0.800000 +vt 0.857143 0.560000 +vt 0.880952 0.800000 +vt 0.857143 0.840000 +vt 0.880952 0.520000 +vt 0.904762 0.780000 +vt 0.833333 0.580000 +vt 0.928571 0.580000 +vt 0.928571 0.780000 +vt 0.904762 0.540000 +vt 0.928571 0.520000 +vt 0.928571 0.540000 +vt 0.928571 0.820000 +vt 0.904762 0.840000 +vt 0.904762 0.820000 +vt 0.833333 0.820000 +vt 0.880952 0.840000 +vt 0.833333 0.540000 +vt 0.857143 0.520000 +vt 0.880952 0.560000 +vt 0.857143 0.800000 +vt 0.857143 0.560000 +vt 0.880952 0.800000 +vt 0.857143 0.840000 +vt 0.880952 0.520000 +vt 0.904762 0.780000 +vt 0.833333 0.580000 +vt 0.928571 0.580000 +vt 0.928571 0.780000 +vt 0.904762 0.540000 +vt 0.928571 0.520000 +vt 0.928571 0.540000 +vt 0.928571 0.820000 +vt 0.904762 0.840000 +vt 0.904762 0.820000 +vt 0.833333 0.820000 +vt 0.880952 0.840000 +vt 0.833333 0.540000 +vt 0.857143 0.520000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.952381 0.520000 +vt 0.952381 0.520000 +vt 0.428571 0.960000 +vt 0.238095 0.840000 +vt 0.666667 0.960000 +vt -0.000000 1.000000 +vt -0.000000 0.840000 +vt 0.666667 0.840000 +vt 0.428571 0.960000 +vt 0.238095 0.840000 +vt 0.666667 0.960000 +vt -0.000000 1.000000 +vt -0.000000 0.840000 +vt 0.666667 0.840000 +vt 0.845238 0.020000 +vt 0.642857 0.150000 +vt 0.666667 0.070000 +vt 0.642857 0.310000 +vt 0.642857 0.230000 +vt 0.892857 0.180000 +vt 0.845238 0.020000 +vt 0.642857 0.150000 +vt 0.666667 0.070000 +vt 0.642857 0.310000 +vt 0.642857 0.230000 +vt 0.892857 0.180000 +vt 1.000000 0.510000 +vt 0.797619 0.750000 +vt 0.738095 0.760000 +vt 0.726190 0.750000 +vt 0.797619 0.890000 +vt 0.726190 0.920000 +vt 0.726190 0.890000 +vt 1.000000 0.490000 +vt 0.797619 0.750000 +vt 0.738095 0.760000 +vt 0.726190 0.750000 +vt 0.797619 0.890000 +vt 0.726190 0.920000 +vt 0.726190 0.890000 +vt 1.000000 0.510000 +vt 1.000000 0.490000 +vt 0.904762 0.580000 +vt 0.833333 0.780000 +vt 0.904762 0.520000 +vt 0.928571 0.840000 +vt 0.833333 0.840000 +vt 0.833333 0.520000 +vt 0.904762 0.580000 +vt 0.833333 0.780000 +vt 0.904762 0.520000 +vt 0.928571 0.840000 +vt 0.833333 0.840000 +vt 0.833333 0.520000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.5736 -0.8192 +vn 0.0000 0.5736 0.8192 +vn 0.0000 -0.8192 0.5736 +vn 0.0000 0.8192 -0.5736 +vn 0.9923 -0.0711 -0.1016 +vn 0.0000 -0.8840 0.4675 +vn 0.0000 0.7417 -0.6708 +vn -0.9923 -0.0711 -0.1016 +vn -0.0000 -0.5736 0.8192 +vn 0.0000 0.5736 -0.8192 +vn 0.0000 -0.8192 -0.5736 +vn 0.0000 0.8192 0.5736 +vn -0.9923 -0.0711 0.1016 +vn 0.0000 -0.8840 -0.4675 +vn 0.0000 0.7417 0.6708 +vn 0.9923 -0.0711 0.1016 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.7071 0.7071 0.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 8/4/2 19/5/2 6/6/2 +f 4/7/3 6/6/3 2/2/3 +f 1/8/4 7/9/4 3/10/4 +f 3/11/5 8/4/5 4/7/5 +f 2/12/6 5/13/6 1/8/6 +f 10/14/1 24/15/1 12/16/1 +f 14/17/2 15/18/2 13/19/2 +f 12/16/3 14/17/3 10/14/3 +f 9/20/4 15/21/4 11/22/4 +f 11/23/5 16/24/5 12/16/5 +f 10/25/6 13/26/6 9/20/6 +f 20/27/3 23/28/3 19/5/3 +f 5/13/2 17/29/2 7/9/2 +f 7/30/2 20/31/2 8/4/2 +f 6/32/2 18/33/2 5/13/2 +f 18/34/4 21/35/4 17/29/4 +f 17/36/5 24/37/5 20/31/5 +f 19/38/6 22/39/6 18/33/6 +f 12/16/1 21/40/1 11/23/1 +f 11/22/1 22/41/1 9/20/1 +f 9/20/1 23/42/1 10/25/1 +f 34/43/2 35/44/2 33/45/2 +f 31/46/2 29/47/2 30/48/2 +f 28/49/3 31/46/3 26/50/3 +f 25/51/4 29/47/4 27/52/4 +f 27/53/5 32/54/5 28/55/5 +f 26/56/6 30/48/6 25/57/6 +f 34/43/3 40/58/3 36/59/3 +f 35/44/4 37/60/4 33/45/4 +f 36/59/5 43/61/5 35/44/5 +f 33/45/6 42/62/6 34/43/6 +f 43/61/1 42/63/1 41/64/1 +f 44/65/4 45/66/4 42/67/4 +f 41/68/3 48/69/3 43/70/3 +f 43/70/5 39/71/5 35/44/5 +f 37/60/6 41/72/6 33/45/6 +f 40/58/5 44/65/5 36/59/5 +f 42/73/6 38/74/6 34/43/6 +f 50/75/2 51/76/2 49/77/2 +f 50/75/3 56/78/3 52/79/3 +f 51/76/4 53/80/4 49/77/4 +f 52/79/5 59/81/5 51/76/5 +f 49/77/6 58/82/6 50/75/6 +f 59/81/1 58/83/1 57/84/1 +f 60/85/4 61/86/4 58/87/4 +f 57/88/3 64/89/3 59/90/3 +f 59/90/5 55/91/5 51/76/5 +f 53/80/6 57/92/6 49/77/6 +f 56/78/5 60/85/5 52/79/5 +f 58/93/6 54/94/6 50/75/6 +f 65/95/4 68/96/4 67/97/4 +f 71/98/7 84/99/7 72/100/7 +f 72/100/3 69/101/3 71/98/3 +f 66/102/8 75/103/8 70/104/8 +f 71/105/9 65/95/9 67/97/9 +f 68/96/10 70/104/10 72/100/10 +f 74/106/10 79/107/10 75/103/10 +f 70/104/8 76/108/8 69/101/8 +f 66/102/8 73/109/8 74/110/8 +f 69/111/8 73/112/8 65/95/8 +f 79/107/8 77/113/8 80/114/8 +f 76/108/3 79/115/3 80/116/3 +f 76/117/9 77/118/9 73/112/9 +f 73/109/4 78/119/4 74/110/4 +f 81/120/4 86/121/4 82/122/4 +f 67/97/7 83/123/7 71/105/7 +f 72/100/7 81/124/7 68/96/7 +f 67/97/7 81/120/7 82/122/7 +f 87/125/7 92/126/7 88/127/7 +f 84/99/3 87/125/3 88/127/3 +f 82/128/9 87/129/9 83/123/9 +f 84/130/10 85/131/10 81/124/10 +f 91/132/11 93/133/11 92/126/11 +f 90/134/12 93/135/12 91/136/12 +f 92/137/13 93/138/13 89/139/13 +f 90/140/14 89/141/14 93/142/14 +f 92/137/7 85/131/7 88/143/7 +f 86/121/7 89/141/7 90/140/7 +f 90/134/7 87/129/7 86/144/7 +f 94/145/3 97/146/3 96/147/3 +f 100/148/15 113/149/15 101/150/15 +f 101/150/4 98/151/4 100/148/4 +f 95/152/16 104/153/16 99/154/16 +f 100/155/17 94/145/17 96/147/17 +f 97/146/18 99/154/18 101/150/18 +f 103/156/18 108/157/18 104/153/18 +f 99/154/16 105/158/16 98/151/16 +f 95/152/16 102/159/16 103/160/16 +f 98/161/16 102/162/16 94/145/16 +f 108/157/16 106/163/16 109/164/16 +f 105/158/4 108/165/4 109/166/4 +f 105/167/17 106/168/17 102/162/17 +f 102/159/3 107/169/3 103/160/3 +f 110/170/3 115/171/3 111/172/3 +f 96/147/15 112/173/15 100/155/15 +f 101/150/15 110/174/15 97/146/15 +f 96/147/15 110/170/15 111/172/15 +f 116/175/15 121/176/15 117/177/15 +f 113/149/4 116/175/4 117/177/4 +f 111/178/17 116/179/17 112/173/17 +f 113/180/18 114/181/18 110/174/18 +f 120/182/19 122/183/19 121/176/19 +f 119/184/20 122/185/20 120/186/20 +f 121/187/21 122/188/21 118/189/21 +f 119/190/22 118/191/22 122/192/22 +f 121/187/15 114/181/15 117/193/15 +f 115/171/15 118/191/15 119/190/15 +f 119/184/15 116/179/15 115/194/15 +f 142/195/1 143/196/1 141/197/1 +f 126/198/3 124/199/3 133/200/3 +f 142/201/5 148/202/5 144/203/5 +f 138/204/5 142/205/5 136/206/5 +f 126/207/6 127/208/6 125/209/6 +f 123/210/5 129/211/5 124/212/5 +f 131/213/2 133/200/2 132/214/2 +f 130/215/23 131/213/23 127/208/23 +f 128/216/24 133/200/24 129/211/24 +f 137/217/4 140/218/4 138/204/4 +f 131/213/4 132/214/4 123/219/4 +f 135/220/6 139/221/6 137/217/6 +f 136/222/3 141/223/3 135/220/3 +f 143/196/6 145/224/6 141/197/6 +f 148/202/2 145/224/2 147/225/2 +f 140/218/5 146/226/5 142/205/5 +f 139/221/25 146/227/25 140/218/25 +f 141/223/6 145/228/6 139/221/6 +f 152/229/3 150/230/3 159/231/3 +f 152/232/6 153/233/6 151/234/6 +f 149/235/5 155/236/5 150/237/5 +f 157/238/2 159/231/2 158/239/2 +f 156/240/23 157/238/23 153/233/23 +f 154/241/24 159/231/24 155/236/24 +f 157/238/4 158/239/4 149/242/4 +f 168/243/1 169/244/1 167/245/1 +f 168/246/5 174/247/5 170/248/5 +f 164/249/5 168/250/5 162/251/5 +f 163/252/4 166/253/4 164/249/4 +f 161/254/6 165/255/6 163/252/6 +f 162/256/3 167/257/3 161/254/3 +f 169/244/6 171/258/6 167/245/6 +f 174/247/2 171/258/2 173/259/2 +f 166/253/5 172/260/5 168/250/5 +f 165/255/25 172/261/25 166/253/25 +f 167/257/6 171/262/6 165/255/6 +f 176/263/2 177/264/2 175/265/2 +f 178/266/5 181/267/5 177/264/5 +f 175/265/6 180/268/6 176/263/6 +f 176/263/3 186/269/3 178/266/3 +f 177/264/4 183/270/4 175/265/4 +f 186/269/1 183/271/1 185/272/1 +f 184/273/5 187/274/5 183/275/5 +f 185/276/6 190/277/6 186/278/6 +f 181/267/4 185/279/4 177/264/4 +f 186/278/3 182/280/3 178/266/3 +f 183/281/4 179/282/4 175/265/4 +f 180/268/3 184/273/3 176/263/3 +f 192/283/2 193/284/2 191/285/2 +f 194/286/5 197/287/5 193/284/5 +f 191/285/6 196/288/6 192/283/6 +f 192/283/3 202/289/3 194/286/3 +f 193/284/4 199/290/4 191/285/4 +f 202/289/1 199/291/1 201/292/1 +f 200/293/5 203/294/5 199/295/5 +f 201/296/6 206/297/6 202/298/6 +f 197/287/4 201/299/4 193/284/4 +f 202/298/3 198/300/3 194/286/3 +f 199/301/4 195/302/4 191/285/4 +f 196/288/3 200/293/3 192/283/3 +f 209/303/6 208/304/6 207/305/6 +f 217/306/6 216/307/6 215/308/6 +f 210/309/3 213/310/3 208/304/3 +f 207/305/4 211/311/4 209/303/4 +f 209/303/1 214/312/1 210/309/1 +f 208/304/2 212/313/2 207/305/2 +f 218/314/3 221/315/3 216/307/3 +f 215/308/4 219/316/4 217/306/4 +f 217/306/1 222/317/1 218/314/1 +f 216/307/2 220/318/2 215/308/2 +f 225/319/5 224/320/5 223/321/5 +f 233/322/5 232/323/5 231/324/5 +f 226/325/4 229/326/4 224/320/4 +f 223/321/3 227/327/3 225/319/3 +f 225/319/1 230/328/1 226/325/1 +f 224/320/2 228/329/2 223/321/2 +f 234/330/4 237/331/4 232/323/4 +f 231/324/3 235/332/3 233/322/3 +f 233/322/1 238/333/1 234/330/1 +f 232/323/2 236/334/2 231/324/2 +f 241/335/3 240/336/3 239/337/3 +f 249/338/3 248/339/3 247/340/3 +f 242/341/5 245/342/5 240/336/5 +f 239/337/6 243/343/6 241/335/6 +f 241/335/1 246/344/1 242/341/1 +f 240/336/2 244/345/2 239/337/2 +f 250/346/5 253/347/5 248/339/5 +f 247/340/6 251/348/6 249/338/6 +f 249/338/1 254/349/1 250/346/1 +f 248/339/2 252/350/2 247/340/2 +f 257/351/4 256/352/4 255/353/4 +f 265/354/4 264/355/4 263/356/4 +f 258/357/6 261/358/6 256/352/6 +f 255/353/5 259/359/5 257/351/5 +f 257/351/1 262/360/1 258/357/1 +f 256/352/2 260/361/2 255/353/2 +f 266/362/6 269/363/6 264/355/6 +f 263/356/5 267/364/5 265/354/5 +f 265/354/1 270/365/1 266/362/1 +f 264/355/2 268/366/2 263/356/2 +f 273/367/3 272/368/3 271/369/3 +f 274/370/5 277/371/5 272/368/5 +f 271/369/6 275/372/6 273/367/6 +f 273/367/1 278/373/1 274/370/1 +f 272/368/2 276/374/2 271/369/2 +f 281/375/4 280/376/4 279/377/4 +f 282/378/6 285/379/6 280/376/6 +f 279/377/5 283/380/5 281/375/5 +f 281/375/1 286/381/1 282/378/1 +f 280/376/2 284/382/2 279/377/2 +f 3/1/1 4/7/1 2/2/1 +f 8/4/2 20/27/2 19/5/2 +f 4/7/3 8/4/3 6/6/3 +f 1/8/4 5/13/4 7/9/4 +f 3/11/5 7/30/5 8/4/5 +f 2/12/6 6/32/6 5/13/6 +f 10/14/1 23/28/1 24/15/1 +f 14/17/2 16/24/2 15/18/2 +f 12/16/3 16/24/3 14/17/3 +f 9/20/4 13/26/4 15/21/4 +f 11/23/5 15/383/5 16/24/5 +f 10/25/6 14/384/6 13/26/6 +f 20/27/3 24/15/3 23/28/3 +f 5/13/2 18/34/2 17/29/2 +f 7/30/2 17/36/2 20/31/2 +f 6/32/2 19/38/2 18/33/2 +f 18/34/4 22/41/4 21/35/4 +f 17/36/5 21/40/5 24/37/5 +f 19/38/6 23/42/6 22/39/6 +f 12/16/1 24/37/1 21/40/1 +f 11/22/1 21/35/1 22/41/1 +f 9/20/1 22/39/1 23/42/1 +f 34/43/2 36/59/2 35/44/2 +f 31/46/2 32/54/2 29/47/2 +f 28/49/3 32/54/3 31/46/3 +f 25/51/4 30/48/4 29/47/4 +f 27/53/5 29/47/5 32/54/5 +f 26/56/6 31/46/6 30/48/6 +f 34/43/3 38/74/3 40/58/3 +f 35/44/4 39/71/4 37/60/4 +f 36/59/5 44/385/5 43/61/5 +f 33/45/6 41/386/6 42/62/6 +f 43/61/1 44/385/1 42/63/1 +f 44/65/4 46/387/4 45/66/4 +f 41/68/3 47/388/3 48/69/3 +f 43/70/5 48/69/5 39/71/5 +f 37/60/6 47/389/6 41/72/6 +f 40/58/5 46/387/5 44/65/5 +f 42/73/6 45/390/6 38/74/6 +f 50/75/2 52/79/2 51/76/2 +f 50/75/3 54/94/3 56/78/3 +f 51/76/4 55/91/4 53/80/4 +f 52/79/5 60/391/5 59/81/5 +f 49/77/6 57/392/6 58/82/6 +f 59/81/1 60/391/1 58/83/1 +f 60/85/4 62/393/4 61/86/4 +f 57/88/3 63/394/3 64/89/3 +f 59/90/5 64/89/5 55/91/5 +f 53/80/6 63/395/6 57/92/6 +f 56/78/5 62/393/5 60/85/5 +f 58/93/6 61/396/6 54/94/6 +f 65/95/4 66/102/4 68/96/4 +f 71/98/7 83/397/7 84/99/7 +f 72/100/3 70/104/3 69/101/3 +f 66/102/8 74/106/8 75/103/8 +f 71/105/9 69/111/9 65/95/9 +f 68/96/10 66/102/10 70/104/10 +f 74/106/10 78/398/10 79/107/10 +f 70/104/8 75/399/8 76/108/8 +f 66/102/8 65/95/8 73/109/8 +f 69/111/8 76/117/8 73/112/8 +f 79/107/8 78/398/8 77/113/8 +f 76/108/3 75/399/3 79/115/3 +f 76/117/9 80/400/9 77/118/9 +f 73/109/4 77/401/4 78/119/4 +f 81/120/4 85/402/4 86/121/4 +f 67/97/7 82/128/7 83/123/7 +f 72/100/7 84/130/7 81/124/7 +f 67/97/7 68/96/7 81/120/7 +f 87/125/7 91/132/7 92/126/7 +f 84/99/3 83/397/3 87/125/3 +f 82/128/9 86/144/9 87/129/9 +f 84/130/10 88/143/10 85/131/10 +f 92/137/7 89/139/7 85/131/7 +f 86/121/7 85/402/7 89/141/7 +f 90/134/7 91/136/7 87/129/7 +f 94/145/3 95/152/3 97/146/3 +f 100/148/15 112/403/15 113/149/15 +f 101/150/4 99/154/4 98/151/4 +f 95/152/16 103/156/16 104/153/16 +f 100/155/17 98/161/17 94/145/17 +f 97/146/18 95/152/18 99/154/18 +f 103/156/18 107/404/18 108/157/18 +f 99/154/16 104/405/16 105/158/16 +f 95/152/16 94/145/16 102/159/16 +f 98/161/16 105/167/16 102/162/16 +f 108/157/16 107/404/16 106/163/16 +f 105/158/4 104/405/4 108/165/4 +f 105/167/17 109/406/17 106/168/17 +f 102/159/3 106/407/3 107/169/3 +f 110/170/3 114/408/3 115/171/3 +f 96/147/15 111/178/15 112/173/15 +f 101/150/15 113/180/15 110/174/15 +f 96/147/15 97/146/15 110/170/15 +f 116/175/15 120/182/15 121/176/15 +f 113/149/4 112/403/4 116/175/4 +f 111/178/17 115/194/17 116/179/17 +f 113/180/18 117/193/18 114/181/18 +f 121/187/15 118/189/15 114/181/15 +f 115/171/15 114/408/15 118/191/15 +f 119/184/15 120/186/15 116/179/15 +f 142/195/1 144/409/1 143/196/1 +f 124/199/3 129/410/3 133/200/3 +f 133/200/3 134/411/3 126/198/3 +f 134/411/3 130/412/3 126/198/3 +f 142/201/5 146/227/5 148/202/5 +f 138/204/5 140/218/5 142/205/5 +f 126/207/6 130/215/6 127/208/6 +f 123/210/5 128/216/5 129/211/5 +f 131/213/2 134/411/2 133/200/2 +f 130/215/23 134/411/23 131/213/23 +f 128/216/24 132/214/24 133/200/24 +f 137/217/4 139/221/4 140/218/4 +f 128/413/4 123/219/4 132/214/4 +f 123/219/4 125/414/4 131/213/4 +f 125/414/4 127/415/4 131/213/4 +f 135/220/6 141/223/6 139/221/6 +f 136/222/3 142/416/3 141/223/3 +f 143/196/6 147/225/6 145/224/6 +f 148/202/2 146/227/2 145/224/2 +f 139/221/25 145/224/25 146/227/25 +f 150/230/3 155/417/3 159/231/3 +f 159/231/3 160/418/3 152/229/3 +f 160/418/3 156/419/3 152/229/3 +f 152/232/6 156/240/6 153/233/6 +f 149/235/5 154/241/5 155/236/5 +f 157/238/2 160/418/2 159/231/2 +f 156/240/23 160/418/23 157/238/23 +f 154/241/24 158/239/24 159/231/24 +f 154/420/4 149/242/4 158/239/4 +f 149/242/4 151/421/4 157/238/4 +f 151/421/4 153/422/4 157/238/4 +f 168/243/1 170/423/1 169/244/1 +f 168/246/5 172/261/5 174/247/5 +f 164/249/5 166/253/5 168/250/5 +f 163/252/4 165/255/4 166/253/4 +f 161/254/6 167/257/6 165/255/6 +f 162/256/3 168/424/3 167/257/3 +f 169/244/6 173/259/6 171/258/6 +f 174/247/2 172/261/2 171/258/2 +f 165/255/25 171/258/25 172/261/25 +f 176/263/2 178/266/2 177/264/2 +f 178/266/5 182/280/5 181/267/5 +f 175/265/6 179/282/6 180/268/6 +f 176/263/3 184/425/3 186/269/3 +f 177/264/4 185/426/4 183/270/4 +f 186/269/1 184/425/1 183/271/1 +f 184/273/5 188/427/5 187/274/5 +f 185/276/6 189/428/6 190/277/6 +f 181/267/4 189/429/4 185/279/4 +f 186/278/3 190/277/3 182/280/3 +f 183/281/4 187/430/4 179/282/4 +f 180/268/3 188/427/3 184/273/3 +f 192/283/2 194/286/2 193/284/2 +f 194/286/5 198/300/5 197/287/5 +f 191/285/6 195/302/6 196/288/6 +f 192/283/3 200/431/3 202/289/3 +f 193/284/4 201/432/4 199/290/4 +f 202/289/1 200/431/1 199/291/1 +f 200/293/5 204/433/5 203/294/5 +f 201/296/6 205/434/6 206/297/6 +f 197/287/4 205/435/4 201/299/4 +f 202/298/3 206/297/3 198/300/3 +f 199/301/4 203/436/4 195/302/4 +f 196/288/3 204/433/3 200/293/3 +f 209/303/6 210/309/6 208/304/6 +f 217/306/6 218/314/6 216/307/6 +f 210/309/3 214/437/3 213/310/3 +f 207/305/4 212/438/4 211/311/4 +f 209/303/1 211/439/1 214/312/1 +f 208/304/2 213/440/2 212/313/2 +f 218/314/3 222/441/3 221/315/3 +f 215/308/4 220/442/4 219/316/4 +f 217/306/1 219/443/1 222/317/1 +f 216/307/2 221/444/2 220/318/2 +f 225/319/5 226/325/5 224/320/5 +f 233/322/5 234/330/5 232/323/5 +f 226/325/4 230/445/4 229/326/4 +f 223/321/3 228/446/3 227/327/3 +f 225/319/1 227/447/1 230/328/1 +f 224/320/2 229/448/2 228/329/2 +f 234/330/4 238/449/4 237/331/4 +f 231/324/3 236/450/3 235/332/3 +f 233/322/1 235/451/1 238/333/1 +f 232/323/2 237/452/2 236/334/2 +f 241/335/3 242/341/3 240/336/3 +f 249/338/3 250/346/3 248/339/3 +f 242/341/5 246/453/5 245/342/5 +f 239/337/6 244/454/6 243/343/6 +f 241/335/1 243/455/1 246/344/1 +f 240/336/2 245/456/2 244/345/2 +f 250/346/5 254/457/5 253/347/5 +f 247/340/6 252/458/6 251/348/6 +f 249/338/1 251/459/1 254/349/1 +f 248/339/2 253/460/2 252/350/2 +f 257/351/4 258/357/4 256/352/4 +f 265/354/4 266/362/4 264/355/4 +f 258/357/6 262/461/6 261/358/6 +f 255/353/5 260/462/5 259/359/5 +f 257/351/1 259/463/1 262/360/1 +f 256/352/2 261/464/2 260/361/2 +f 266/362/6 270/465/6 269/363/6 +f 263/356/5 268/466/5 267/364/5 +f 265/354/1 267/467/1 270/365/1 +f 264/355/2 269/468/2 268/366/2 +f 273/367/3 274/370/3 272/368/3 +f 274/370/5 278/469/5 277/371/5 +f 271/369/6 276/470/6 275/372/6 +f 273/367/1 275/471/1 278/373/1 +f 272/368/2 277/472/2 276/374/2 +f 281/375/4 282/378/4 280/376/4 +f 282/378/6 286/473/6 285/379/6 +f 279/377/5 284/474/5 283/380/5 +f 281/375/1 283/475/1 286/381/1 +f 280/376/2 285/476/2 284/382/2 diff --git a/src/main/resources/assets/hbm/models/machines/chimney_brick.obj b/src/main/resources/assets/hbm/models/machines/chimney_brick.obj new file mode 100644 index 000000000..81e719e26 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/chimney_brick.obj @@ -0,0 +1,704 @@ +# Blender v2.79 (sub 0) OBJ File: 'chimney_brick.blend' +# www.blender.org +o Plane +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 2.000000 1.500000 +v 1.500000 2.000000 1.500000 +v -1.500000 2.000000 -1.500000 +v 1.500000 2.000000 -1.500000 +v 1.500000 0.687500 0.187500 +v 1.500000 0.312500 0.187500 +v 1.500000 0.687500 -0.187500 +v 1.500000 0.312500 -0.187500 +v 1.500000 0.875000 0.375000 +v 1.500000 0.125000 0.375000 +v 1.500000 0.875000 -0.375000 +v 1.500000 0.125000 -0.375000 +v 1.375000 0.312500 0.187500 +v 1.375000 0.125000 0.375000 +v 1.375000 0.312500 -0.187500 +v 1.375000 0.125000 -0.375000 +v 1.375000 0.687500 -0.187500 +v 1.375000 0.875000 -0.375000 +v 1.375000 0.687500 0.187500 +v 1.375000 0.875000 0.375000 +v 0.187500 0.687500 -1.500000 +v 0.187500 0.312500 -1.500000 +v -0.187500 0.687500 -1.500000 +v -0.187500 0.312500 -1.500000 +v 0.375000 0.875000 -1.500000 +v 0.375000 0.125000 -1.500000 +v -0.375000 0.875000 -1.500000 +v -0.375000 0.125000 -1.500000 +v 0.187500 0.312500 -1.375000 +v 0.375000 0.125000 -1.375000 +v -0.187500 0.312500 -1.375000 +v -0.375000 0.125000 -1.375000 +v -0.187500 0.687500 -1.375000 +v -0.375000 0.875000 -1.375000 +v 0.187500 0.687500 -1.375000 +v 0.375000 0.875000 -1.375000 +v -1.500000 0.687500 -0.187500 +v -1.500000 0.312500 -0.187500 +v -1.500000 0.687500 0.187500 +v -1.500000 0.312500 0.187500 +v -1.500000 0.875000 -0.375000 +v -1.500000 0.125000 -0.375000 +v -1.500000 0.875000 0.375000 +v -1.500000 0.125000 0.375000 +v -1.375000 0.312500 -0.187500 +v -1.375000 0.125000 -0.375000 +v -1.375000 0.312500 0.187500 +v -1.375000 0.125000 0.375000 +v -1.375000 0.687500 0.187500 +v -1.375000 0.875000 0.375000 +v -1.375000 0.687500 -0.187500 +v -1.375000 0.875000 -0.375000 +v -0.187500 0.687500 1.500000 +v -0.187500 0.312500 1.500000 +v 0.187500 0.687500 1.500000 +v 0.187500 0.312500 1.500000 +v -0.375000 0.875000 1.500000 +v -0.375000 0.125000 1.500000 +v 0.375000 0.875000 1.500000 +v 0.375000 0.125000 1.500000 +v -0.187500 0.312500 1.375000 +v -0.375000 0.125000 1.375000 +v 0.187500 0.312500 1.375000 +v 0.375000 0.125000 1.375000 +v 0.187500 0.687500 1.375000 +v 0.375000 0.875000 1.375000 +v -0.187500 0.687500 1.375000 +v -0.375000 0.875000 1.375000 +v 0.000000 2.000000 -1.250000 +v -0.478354 2.000000 -1.154849 +v -0.883883 2.000000 -0.883883 +v -1.154849 2.000000 -0.478354 +v -1.250000 2.000000 0.000000 +v -1.154849 2.000000 0.478354 +v -0.883883 2.000000 0.883883 +v -0.478354 2.000000 1.154849 +v -0.000000 2.000000 1.250000 +v 0.478354 2.000000 1.154850 +v 0.883883 2.000000 0.883884 +v 1.154849 2.000000 0.478354 +v 1.250000 2.000000 -0.000000 +v 1.154849 2.000000 -0.478355 +v 0.883883 2.000000 -0.883884 +v 0.478354 2.000000 -1.154850 +v 0.000000 13.000000 -0.750000 +v -0.287013 13.000000 -0.692910 +v -0.530330 13.000000 -0.530330 +v -0.692910 13.000000 -0.287013 +v -0.750000 13.000000 0.000000 +v -0.692910 13.000000 0.287013 +v -0.530330 13.000000 0.530330 +v -0.287013 13.000000 0.692910 +v -0.000000 13.000000 0.750000 +v 0.287012 13.000000 0.692910 +v 0.530330 13.000000 0.530330 +v 0.692910 13.000000 0.287013 +v 0.750000 13.000000 -0.000000 +v 0.692910 13.000000 -0.287013 +v 0.530330 13.000000 -0.530330 +v 0.287012 13.000000 -0.692910 +v -0.000000 13.000000 -0.500000 +v -0.191342 13.000000 -0.461940 +v -0.353553 13.000000 -0.353553 +v -0.461940 13.000000 -0.191342 +v -0.500000 13.000000 0.000000 +v -0.461940 13.000000 0.191342 +v -0.353553 13.000000 0.353553 +v -0.191342 13.000000 0.461940 +v -0.000000 13.000000 0.500000 +v 0.191342 13.000000 0.461940 +v 0.353553 13.000000 0.353554 +v 0.461940 13.000000 0.191342 +v 0.500000 13.000000 -0.000000 +v 0.461940 13.000000 -0.191342 +v 0.353553 13.000000 -0.353554 +v 0.191341 13.000000 -0.461940 +v -0.000000 11.000000 -0.500000 +v -0.191342 11.000000 -0.461940 +v -0.353553 11.000000 -0.353553 +v -0.461940 11.000000 -0.191342 +v -0.500000 11.000000 0.000000 +v -0.461940 11.000000 0.191342 +v -0.353553 11.000000 0.353553 +v -0.191342 11.000000 0.461940 +v -0.000000 11.000000 0.500000 +v 0.191342 11.000000 0.461940 +v 0.353553 11.000000 0.353554 +v 0.461940 11.000000 0.191342 +v 0.500000 11.000000 -0.000000 +v 0.461940 11.000000 -0.191342 +v 0.353553 11.000000 -0.353554 +v 0.191341 11.000000 -0.461940 +vt 0.272727 0.000000 +vt 0.000000 0.265193 +vt 0.000000 0.000000 +vt 0.000000 0.441989 +vt 0.272727 0.707182 +vt 0.000000 0.707182 +vt 0.181818 0.895028 +vt 0.130682 0.911602 +vt 0.113636 0.895028 +vt 0.130682 0.955801 +vt 0.119318 0.922652 +vt 0.130682 0.922652 +vt 0.164773 0.922652 +vt 0.176136 0.955801 +vt 0.164773 0.955801 +vt 0.090909 0.906077 +vt 0.102273 0.972376 +vt 0.090909 0.972376 +vt 0.204545 0.972376 +vt 0.193182 0.906077 +vt 0.204545 0.906077 +vt 0.113636 0.983425 +vt 0.164773 0.966851 +vt 0.181818 0.983425 +vt 0.193182 0.972376 +vt 0.176136 0.922652 +vt 0.102273 0.906077 +vt 0.181818 0.883978 +vt 0.113636 0.883978 +vt 0.113636 0.994475 +vt 0.181818 0.994475 +vt 0.164773 0.911602 +vt 0.130682 0.966851 +vt 0.181818 0.895028 +vt 0.130682 0.911602 +vt 0.113636 0.895028 +vt 0.130682 0.955801 +vt 0.119318 0.922652 +vt 0.130682 0.922652 +vt 0.164773 0.922652 +vt 0.176136 0.955801 +vt 0.164773 0.955801 +vt 0.090909 0.906077 +vt 0.102273 0.972376 +vt 0.090909 0.972376 +vt 0.204545 0.972376 +vt 0.193182 0.906077 +vt 0.204545 0.906077 +vt 0.113636 0.983425 +vt 0.164773 0.966851 +vt 0.181818 0.983425 +vt 0.193182 0.972376 +vt 0.176136 0.922652 +vt 0.102273 0.906077 +vt 0.181818 0.883978 +vt 0.113636 0.883978 +vt 0.113636 0.994475 +vt 0.181818 0.994475 +vt 0.164773 0.911602 +vt 0.130682 0.966851 +vt 0.181818 0.895028 +vt 0.130682 0.911602 +vt 0.113636 0.895028 +vt 0.130682 0.955801 +vt 0.119318 0.922652 +vt 0.130682 0.922652 +vt 0.164773 0.922652 +vt 0.176136 0.955801 +vt 0.164773 0.955801 +vt 0.090909 0.906077 +vt 0.102273 0.972376 +vt 0.090909 0.972376 +vt 0.204545 0.972376 +vt 0.193182 0.906077 +vt 0.204545 0.906077 +vt 0.113636 0.983425 +vt 0.164773 0.966851 +vt 0.181818 0.983425 +vt 0.193182 0.972376 +vt 0.176136 0.922652 +vt 0.102273 0.906077 +vt 0.181818 0.883978 +vt 0.113636 0.883978 +vt 0.113636 0.994475 +vt 0.181818 0.994475 +vt 0.164773 0.911602 +vt 0.130682 0.966851 +vt 0.181818 0.895028 +vt 0.130682 0.911602 +vt 0.113636 0.895028 +vt 0.130682 0.955801 +vt 0.119318 0.922652 +vt 0.130682 0.922652 +vt 0.164773 0.922652 +vt 0.176136 0.955801 +vt 0.164773 0.955801 +vt 0.090909 0.906077 +vt 0.102273 0.972376 +vt 0.090909 0.972376 +vt 0.204545 0.972376 +vt 0.193182 0.906077 +vt 0.204545 0.906077 +vt 0.113636 0.983425 +vt 0.164773 0.966851 +vt 0.181818 0.983425 +vt 0.193182 0.972376 +vt 0.176136 0.922652 +vt 0.102273 0.906077 +vt 0.181818 0.883978 +vt 0.113636 0.883978 +vt 0.113636 0.994475 +vt 0.181818 0.994475 +vt 0.164773 0.911602 +vt 0.130682 0.966851 +vt 0.272727 0.265193 +vt 0.102273 0.276243 +vt 0.102273 0.342541 +vt 0.272727 0.441989 +vt 0.102273 0.342541 +vt 0.272727 0.441989 +vt -0.000000 0.441989 +vt 0.272727 0.265193 +vt 0.102273 0.276243 +vt -0.000000 0.265193 +vt 0.170455 0.342541 +vt 0.170455 0.276243 +vt 0.170455 0.342541 +vt 0.102273 0.342541 +vt 0.272727 0.441989 +vt -0.000000 0.441989 +vt 0.272727 0.265193 +vt 0.170455 0.342541 +vt 0.170455 0.276243 +vt 0.102273 0.276243 +vt -0.000000 0.265193 +vt 0.272727 0.265193 +vt 0.102273 0.276243 +vt -0.000000 0.265193 +vt 0.170455 0.342541 +vt 0.272727 0.441989 +vt 0.102273 0.342541 +vt -0.000000 0.441989 +vt 0.630682 0.972376 +vt 0.607955 1.000000 +vt 0.602273 0.972376 +vt 0.647727 0.972376 +vt 0.670455 1.000000 +vt 0.653409 1.000000 +vt 0.721591 0.972376 +vt 0.698864 1.000000 +vt 0.693182 0.972376 +vt 0.767045 0.972376 +vt 0.744318 1.000000 +vt 0.738636 0.972376 +vt 0.812500 0.972376 +vt 0.789773 1.000000 +vt 0.784091 0.972376 +vt 0.857955 0.972376 +vt 0.835227 1.000000 +vt 0.829545 0.972376 +vt 0.903409 0.972376 +vt 0.880682 1.000000 +vt 0.875000 0.972376 +vt 0.948864 0.972376 +vt 0.926136 1.000000 +vt 0.920455 0.972376 +vt 0.994318 0.972376 +vt 0.971591 1.000000 +vt 0.965909 0.972376 +vt 0.312500 0.972376 +vt 0.289773 1.000000 +vt 0.284091 0.972376 +vt 0.329545 0.972376 +vt 0.352273 1.000000 +vt 0.335227 1.000000 +vt 0.375000 0.972376 +vt 0.397727 1.000000 +vt 0.380682 1.000000 +vt 0.420455 0.972376 +vt 0.443182 1.000000 +vt 0.426136 1.000000 +vt 0.465909 0.972376 +vt 0.488636 1.000000 +vt 0.471591 1.000000 +vt 0.511364 0.972376 +vt 0.534091 1.000000 +vt 0.517045 1.000000 +vt 0.585227 0.972376 +vt 0.562500 1.000000 +vt 0.556818 0.972376 +vt 0.090053 0.936803 +vt 0.070717 0.964941 +vt 0.036583 0.971543 +vt 0.119318 0.955801 +vt 0.119318 0.955801 +vt 0.119318 0.955801 +vt 0.119318 0.955801 +vt 0.170455 0.276243 +vt 0.170455 0.276243 +vt 0.625000 1.000000 +vt 0.676136 0.972376 +vt 0.715909 1.000000 +vt 0.761364 1.000000 +vt 0.806818 1.000000 +vt 0.852273 1.000000 +vt 0.897727 1.000000 +vt 0.943182 1.000000 +vt 0.988636 1.000000 +vt 0.306818 1.000000 +vt 0.357955 0.972376 +vt 0.403409 0.972376 +vt 0.448864 0.972376 +vt 0.494318 0.972376 +vt 0.539773 0.972376 +vt 0.579545 1.000000 +vt 0.020192 0.964941 +vt 0.007646 0.952742 +vt 0.000856 0.936803 +vt 0.000856 0.919551 +vt 0.007646 0.903612 +vt 0.020192 0.891413 +vt 0.036583 0.884810 +vt 0.054326 0.884810 +vt 0.070717 0.891413 +vt 0.083263 0.903612 +vt 0.090053 0.919551 +vt 0.083263 0.952742 +vt 0.054326 0.971543 +vt 0.681818 -0.000000 +vt 0.636364 -0.000000 +vt 0.727273 -0.000000 +vt 0.772727 -0.000000 +vt 0.818182 0.000000 +vt 0.863636 0.000000 +vt 0.909091 0.000000 +vt 0.954545 0.000000 +vt 1.000000 -0.000000 +vt 0.318182 0.000000 +vt 0.272727 0.000000 +vt 0.363636 0.000000 +vt 0.409091 -0.000000 +vt 0.454545 -0.000000 +vt 0.500000 0.000000 +vt 0.545455 0.000000 +vt 0.590909 0.000000 +vt 0.102273 0.707182 +vt 0.085227 0.883978 +vt 0.085227 0.707182 +vt 0.255682 0.707182 +vt 0.238636 0.883978 +vt 0.238636 0.707182 +vt 0.119318 0.707182 +vt 0.102273 0.883978 +vt 0.272727 0.707182 +vt 0.255682 0.883978 +vt 0.136364 0.707182 +vt 0.119318 0.883978 +vt 0.017045 0.707182 +vt 0.000000 0.883978 +vt -0.000000 0.707182 +vt 0.153409 0.707182 +vt 0.136364 0.883978 +vt 0.034091 0.707182 +vt 0.017045 0.883978 +vt 0.170455 0.707182 +vt 0.153409 0.883978 +vt 0.051136 0.707182 +vt 0.034091 0.883978 +vt 0.187500 0.707182 +vt 0.170455 0.883978 +vt 0.068182 0.707182 +vt 0.051136 0.883978 +vt 0.221591 0.707182 +vt 0.204545 0.883978 +vt 0.204545 0.707182 +vt 0.187500 0.883978 +vt 0.068182 0.883978 +vt 0.221591 0.883978 +vt 0.272727 0.883978 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.9229 0.0454 -0.3823 +vn 0.9990 0.0454 0.0000 +vn 0.7064 0.0454 -0.7064 +vn 0.3823 0.0454 -0.9229 +vn -0.0000 0.0454 -0.9990 +vn -0.3823 0.0454 -0.9229 +vn -0.7064 0.0454 -0.7064 +vn -0.9229 0.0454 -0.3823 +vn -0.9990 0.0454 0.0000 +vn -0.9229 0.0454 0.3823 +vn -0.7064 0.0454 0.7064 +vn -0.3823 0.0454 0.9229 +vn 0.0000 0.0454 0.9990 +vn 0.3823 0.0454 0.9229 +vn 0.7064 0.0454 0.7064 +vn 0.9229 0.0454 0.3823 +vn -0.7071 0.0000 -0.7071 +vn -0.3827 0.0000 -0.9239 +vn 0.9239 0.0000 0.3827 +vn 0.7071 0.0000 0.7071 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 -0.3827 +vn -0.9239 0.0000 0.3827 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 0.9239 +s off +f 3/1/1 2/2/1 1/3/1 +f 6/4/2 7/5/2 5/6/2 +f 20/7/3 17/8/3 18/9/3 +f 9/10/4 17/11/4 10/12/4 +f 12/13/5 21/14/5 11/15/5 +f 14/16/5 24/17/5 13/18/5 +f 10/12/3 11/15/3 9/10/3 +f 15/19/4 20/20/4 16/21/4 +f 24/22/3 21/23/3 22/24/3 +f 22/25/3 19/26/3 20/20/3 +f 17/11/3 24/17/3 18/27/3 +f 16/28/2 18/9/2 14/29/2 +f 13/30/1 22/24/1 15/31/1 +f 10/12/1 19/32/1 12/13/1 +f 11/15/2 23/33/2 9/10/2 +f 36/34/5 33/35/5 34/36/5 +f 25/37/3 33/38/3 26/39/3 +f 28/40/6 37/41/6 27/42/6 +f 30/43/6 40/44/6 29/45/6 +f 26/39/5 27/42/5 25/37/5 +f 31/46/3 36/47/3 32/48/3 +f 40/49/5 37/50/5 38/51/5 +f 38/52/5 35/53/5 36/47/5 +f 33/38/5 40/44/5 34/54/5 +f 32/55/2 34/36/2 30/56/2 +f 29/57/1 38/51/1 31/58/1 +f 26/39/1 35/59/1 28/40/1 +f 27/42/2 39/60/2 25/37/2 +f 52/61/6 49/62/6 50/63/6 +f 41/64/5 49/65/5 42/66/5 +f 44/67/4 53/68/4 43/69/4 +f 46/70/4 56/71/4 45/72/4 +f 42/66/6 43/69/6 41/64/6 +f 47/73/5 52/74/5 48/75/5 +f 56/76/6 53/77/6 54/78/6 +f 54/79/6 51/80/6 52/74/6 +f 49/65/6 56/71/6 50/81/6 +f 48/82/2 50/63/2 46/83/2 +f 45/84/1 54/78/1 47/85/1 +f 42/66/1 51/86/1 44/67/1 +f 43/69/2 55/87/2 41/64/2 +f 68/88/4 65/89/4 66/90/4 +f 57/91/6 65/92/6 58/93/6 +f 60/94/3 69/95/3 59/96/3 +f 62/97/3 72/98/3 61/99/3 +f 58/93/4 59/96/4 57/91/4 +f 63/100/6 68/101/6 64/102/6 +f 72/103/4 69/104/4 70/105/4 +f 70/106/4 67/107/4 68/101/4 +f 65/92/4 72/98/4 66/108/4 +f 64/109/2 66/90/2 62/110/2 +f 61/111/1 70/105/1 63/112/1 +f 58/93/1 67/113/1 60/94/1 +f 59/96/2 71/114/2 57/91/2 +f 4/115/3 14/116/3 2/2/3 +f 13/117/3 8/118/3 6/4/3 +f 45/119/6 5/120/6 7/121/6 +f 1/122/6 46/123/6 3/124/6 +f 45/119/6 3/124/6 46/123/6 +f 1/122/6 47/125/6 48/126/6 +f 13/117/3 2/2/3 14/116/3 +f 15/127/3 4/115/3 8/118/3 +f 29/128/5 7/129/5 8/130/5 +f 3/131/5 31/132/5 32/133/5 +f 3/131/5 30/134/5 4/135/5 +f 29/128/5 4/135/5 30/134/5 +f 2/136/4 62/137/4 1/138/4 +f 63/139/4 2/136/4 6/140/4 +f 61/141/4 6/140/4 5/142/4 +f 61/141/4 1/138/4 62/137/4 +f 101/143/2 116/144/2 100/145/2 +f 101/146/2 118/147/2 117/148/2 +f 103/149/2 118/150/2 102/151/2 +f 104/152/2 119/153/2 103/154/2 +f 89/155/2 120/156/2 104/157/2 +f 90/158/2 105/159/2 89/160/2 +f 91/161/2 106/162/2 90/163/2 +f 92/164/2 107/165/2 91/166/2 +f 93/167/2 108/168/2 92/169/2 +f 94/170/2 109/171/2 93/172/2 +f 94/173/2 111/174/2 110/175/2 +f 95/176/2 112/177/2 111/178/2 +f 96/179/2 113/180/2 112/181/2 +f 97/182/2 114/183/2 113/184/2 +f 98/185/2 115/186/2 114/187/2 +f 100/188/2 115/189/2 99/190/2 +f 133/191/2 135/192/2 121/193/2 +f 3/1/1 4/115/1 2/2/1 +f 6/4/2 8/118/2 7/5/2 +f 20/7/3 19/32/3 17/8/3 +f 9/10/4 23/194/4 17/11/4 +f 12/13/5 19/26/5 21/14/5 +f 14/16/5 18/27/5 24/17/5 +f 10/12/3 12/13/3 11/15/3 +f 15/19/4 22/25/4 20/20/4 +f 24/22/3 23/33/3 21/23/3 +f 22/25/3 21/14/3 19/26/3 +f 17/11/3 23/194/3 24/17/3 +f 16/28/2 20/7/2 18/9/2 +f 13/30/1 24/22/1 22/24/1 +f 10/12/1 17/8/1 19/32/1 +f 11/15/2 21/23/2 23/33/2 +f 36/34/5 35/59/5 33/35/5 +f 25/37/3 39/195/3 33/38/3 +f 28/40/6 35/53/6 37/41/6 +f 30/43/6 34/54/6 40/44/6 +f 26/39/5 28/40/5 27/42/5 +f 31/46/3 38/52/3 36/47/3 +f 40/49/5 39/60/5 37/50/5 +f 38/52/5 37/41/5 35/53/5 +f 33/38/5 39/195/5 40/44/5 +f 32/55/2 36/34/2 34/36/2 +f 29/57/1 40/49/1 38/51/1 +f 26/39/1 33/35/1 35/59/1 +f 27/42/2 37/50/2 39/60/2 +f 52/61/6 51/86/6 49/62/6 +f 41/64/5 55/196/5 49/65/5 +f 44/67/4 51/80/4 53/68/4 +f 46/70/4 50/81/4 56/71/4 +f 42/66/6 44/67/6 43/69/6 +f 47/73/5 54/79/5 52/74/5 +f 56/76/6 55/87/6 53/77/6 +f 54/79/6 53/68/6 51/80/6 +f 49/65/6 55/196/6 56/71/6 +f 48/82/2 52/61/2 50/63/2 +f 45/84/1 56/76/1 54/78/1 +f 42/66/1 49/62/1 51/86/1 +f 43/69/2 53/77/2 55/87/2 +f 68/88/4 67/113/4 65/89/4 +f 57/91/6 71/197/6 65/92/6 +f 60/94/3 67/107/3 69/95/3 +f 62/97/3 66/108/3 72/98/3 +f 58/93/4 60/94/4 59/96/4 +f 63/100/6 70/106/6 68/101/6 +f 72/103/4 71/114/4 69/104/4 +f 70/106/4 69/95/4 67/107/4 +f 65/92/4 71/197/4 72/98/4 +f 64/109/2 68/88/2 66/90/2 +f 61/111/1 72/103/1 70/105/1 +f 58/93/1 65/89/1 67/113/1 +f 59/96/2 69/104/2 71/114/2 +f 4/115/3 16/198/3 14/116/3 +f 13/117/3 15/127/3 8/118/3 +f 45/119/6 47/125/6 5/120/6 +f 1/122/6 48/126/6 46/123/6 +f 45/119/6 7/121/6 3/124/6 +f 1/122/6 5/120/6 47/125/6 +f 13/117/3 6/4/3 2/2/3 +f 15/127/3 16/198/3 4/115/3 +f 29/128/5 31/132/5 7/129/5 +f 3/131/5 7/129/5 31/132/5 +f 3/131/5 32/133/5 30/134/5 +f 29/128/5 8/130/5 4/135/5 +f 2/136/4 64/199/4 62/137/4 +f 63/139/4 64/199/4 2/136/4 +f 61/141/4 63/139/4 6/140/4 +f 61/141/4 5/142/4 1/138/4 +f 101/143/2 117/200/2 116/144/2 +f 101/146/2 102/201/2 118/147/2 +f 103/149/2 119/202/2 118/150/2 +f 104/152/2 120/203/2 119/153/2 +f 89/155/2 105/204/2 120/156/2 +f 90/158/2 106/205/2 105/159/2 +f 91/161/2 107/206/2 106/162/2 +f 92/164/2 108/207/2 107/165/2 +f 93/167/2 109/208/2 108/168/2 +f 94/170/2 110/209/2 109/171/2 +f 94/173/2 95/210/2 111/174/2 +f 95/176/2 96/211/2 112/177/2 +f 96/179/2 97/212/2 113/180/2 +f 97/182/2 98/213/2 114/183/2 +f 98/185/2 99/214/2 115/186/2 +f 100/188/2 116/215/2 115/189/2 +f 121/193/2 122/216/2 123/217/2 +f 123/217/2 124/218/2 125/219/2 +f 125/219/2 126/220/2 127/221/2 +f 127/221/2 128/222/2 129/223/2 +f 129/223/2 130/224/2 131/225/2 +f 131/225/2 132/226/2 133/191/2 +f 133/191/2 134/227/2 135/192/2 +f 135/192/2 136/228/2 121/193/2 +f 121/193/2 123/217/2 125/219/2 +f 125/219/2 127/221/2 121/193/2 +f 127/221/2 129/223/2 121/193/2 +f 129/223/2 131/225/2 121/193/2 +f 131/225/2 133/191/2 121/193/2 +s 1 +f 86/229/7 101/146/8 85/230/8 +f 87/231/9 102/151/7 86/229/7 +f 88/232/10 103/154/9 87/231/9 +f 73/233/11 104/157/10 88/232/10 +f 74/234/12 89/160/11 73/233/11 +f 75/235/13 90/163/12 74/234/12 +f 76/236/14 91/166/13 75/235/13 +f 77/237/15 92/169/14 76/236/14 +f 78/238/16 93/172/15 77/239/15 +f 79/240/17 94/173/16 78/238/16 +f 80/241/18 95/176/17 79/240/17 +f 81/242/19 96/179/18 80/241/18 +f 82/243/20 97/182/19 81/242/19 +f 83/244/21 98/185/20 82/243/20 +f 84/245/22 99/190/21 83/244/21 +f 85/230/8 100/145/22 84/245/22 +f 115/246/23 130/247/24 114/248/24 +f 108/249/25 123/250/26 107/251/26 +f 116/252/27 131/253/23 115/246/23 +f 109/254/3 124/255/25 108/249/25 +f 117/256/6 132/257/27 116/252/27 +f 110/258/28 125/259/3 109/260/3 +f 118/261/29 133/262/6 117/256/6 +f 111/263/30 126/264/28 110/258/28 +f 119/265/31 134/266/29 118/261/29 +f 112/267/32 127/268/30 111/263/30 +f 120/269/33 135/270/31 119/265/31 +f 113/271/5 128/272/32 112/267/32 +f 106/273/34 121/274/4 105/275/4 +f 105/275/4 136/276/33 120/269/33 +f 114/248/24 129/277/5 113/271/5 +f 107/251/26 122/278/34 106/273/34 +f 86/229/7 102/201/7 101/146/8 +f 87/231/9 103/149/9 102/151/7 +f 88/232/10 104/152/10 103/154/9 +f 73/233/11 89/155/11 104/157/10 +f 74/234/12 90/158/12 89/160/11 +f 75/235/13 91/161/13 90/163/12 +f 76/236/14 92/164/14 91/166/13 +f 77/237/15 93/167/15 92/169/14 +f 78/238/16 94/170/16 93/172/15 +f 79/240/17 95/210/17 94/173/16 +f 80/241/18 96/211/18 95/176/17 +f 81/242/19 97/212/19 96/179/18 +f 82/243/20 98/213/20 97/182/19 +f 83/244/21 99/214/21 98/185/20 +f 84/245/22 100/188/22 99/190/21 +f 85/230/8 101/143/8 100/145/22 +f 115/246/23 131/253/23 130/247/24 +f 108/249/25 124/255/25 123/250/26 +f 116/252/27 132/257/27 131/253/23 +f 109/254/3 125/279/3 124/255/25 +f 117/256/6 133/262/6 132/257/27 +f 110/258/28 126/264/28 125/259/3 +f 118/261/29 134/266/29 133/262/6 +f 111/263/30 127/268/30 126/264/28 +f 119/265/31 135/270/31 134/266/29 +f 112/267/32 128/272/32 127/268/30 +f 120/269/33 136/276/33 135/270/31 +f 113/271/5 129/277/5 128/272/32 +f 106/273/34 122/278/34 121/274/4 +f 105/275/4 121/274/4 136/276/33 +f 114/248/24 130/247/24 129/277/5 +f 107/251/26 123/250/26 122/278/34 diff --git a/src/main/resources/assets/hbm/models/machines/chimney_industrial.obj b/src/main/resources/assets/hbm/models/machines/chimney_industrial.obj new file mode 100644 index 000000000..894620dcb --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/chimney_industrial.obj @@ -0,0 +1,1224 @@ +# Blender v2.79 (sub 0) OBJ File: 'chimney_industrial.blend' +# www.blender.org +o Plane +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 2.000000 1.500000 +v 1.500000 2.000000 1.500000 +v -1.500000 2.000000 -1.500000 +v 1.500000 2.000000 -1.500000 +v 1.500000 0.875000 0.375000 +v 1.500000 0.125000 0.375000 +v 1.500000 0.875000 -0.375000 +v 1.500000 0.125000 -0.375000 +v 1.500000 0.687500 0.187500 +v 1.500000 0.312500 0.187500 +v 1.500000 0.687500 -0.187500 +v 1.500000 0.312500 -0.187500 +v 1.375000 0.875000 -0.375000 +v 1.375000 0.875000 0.375000 +v 1.375000 0.125000 0.375000 +v 1.375000 0.125000 -0.375000 +v 1.375000 0.687500 -0.187500 +v 1.375000 0.687500 0.187500 +v 1.375000 0.312500 0.187500 +v 1.375000 0.312500 -0.187500 +v -1.500000 0.875000 -0.375000 +v -1.500000 0.125000 -0.375000 +v -1.500000 0.875000 0.375000 +v -1.500000 0.125000 0.375000 +v -1.500000 0.687500 -0.187500 +v -1.500000 0.312500 -0.187500 +v -1.500000 0.687500 0.187500 +v -1.500000 0.312500 0.187500 +v -1.375000 0.875000 0.375000 +v -1.375000 0.875000 -0.375000 +v -1.375000 0.125000 -0.375000 +v -1.375000 0.125000 0.375000 +v -1.375000 0.687500 0.187500 +v -1.375000 0.687500 -0.187500 +v -1.375000 0.312500 -0.187500 +v -1.375000 0.312500 0.187500 +v 0.375000 0.875000 -1.500000 +v 0.375000 0.125000 -1.500000 +v -0.375000 0.875000 -1.500000 +v -0.375000 0.125000 -1.500000 +v 0.187500 0.687500 -1.500000 +v 0.187500 0.312500 -1.500000 +v -0.187500 0.687500 -1.500000 +v -0.187500 0.312500 -1.500000 +v -0.375000 0.875000 -1.375000 +v 0.375000 0.875000 -1.375000 +v 0.375000 0.125000 -1.375000 +v -0.375000 0.125000 -1.375000 +v -0.187500 0.687500 -1.375000 +v 0.187500 0.687500 -1.375000 +v 0.187500 0.312500 -1.375000 +v -0.187500 0.312500 -1.375000 +v -0.375000 0.875000 1.500000 +v -0.375000 0.125000 1.500000 +v 0.375000 0.875000 1.500000 +v 0.375000 0.125000 1.500000 +v -0.187500 0.687500 1.500000 +v -0.187500 0.312500 1.500000 +v 0.187500 0.687500 1.500000 +v 0.187500 0.312500 1.500000 +v 0.375000 0.875000 1.375000 +v -0.375000 0.875000 1.375000 +v -0.375000 0.125000 1.375000 +v 0.375000 0.125000 1.375000 +v 0.187500 0.687500 1.375000 +v -0.187500 0.687500 1.375000 +v -0.187500 0.312500 1.375000 +v 0.187500 0.312500 1.375000 +v 0.000000 10.000000 -1.250000 +v -0.478354 10.000000 -1.154849 +v -0.883883 10.000000 -0.883883 +v -1.154849 10.000000 -0.478354 +v -1.250000 10.000000 0.000000 +v -1.154849 10.000000 0.478354 +v -0.883883 10.000000 0.883883 +v -0.478354 10.000000 1.154849 +v -0.000000 10.000000 1.250000 +v 0.478354 10.000000 1.154850 +v 0.883883 10.000000 0.883884 +v 1.154849 10.000000 0.478354 +v 1.250000 10.000000 -0.000000 +v 1.154849 10.000000 -0.478355 +v 0.883883 10.000000 -0.883884 +v 0.478354 10.000000 -1.154850 +v 0.000000 23.000000 -1.250000 +v -0.478354 23.000000 -1.154849 +v -0.883883 23.000000 -0.883883 +v -1.154849 23.000000 -0.478354 +v -1.250000 23.000000 0.000000 +v -1.154849 23.000000 0.478354 +v -0.883883 23.000000 0.883883 +v -0.478354 23.000000 1.154849 +v -0.000000 23.000000 1.250000 +v 0.478354 23.000000 1.154850 +v 0.883883 23.000000 0.883884 +v 1.154849 23.000000 0.478354 +v 1.250000 23.000000 -0.000000 +v 1.154849 23.000000 -0.478355 +v 0.883883 23.000000 -0.883884 +v 0.478354 23.000000 -1.154850 +v -0.000000 23.000000 -1.000000 +v -0.382684 23.000000 -0.923880 +v -0.707107 23.000000 -0.707107 +v -0.923880 23.000000 -0.382683 +v -1.000000 23.000000 0.000000 +v -0.923880 23.000000 0.382684 +v -0.707107 23.000000 0.707107 +v -0.382684 23.000000 0.923880 +v -0.000000 23.000000 1.000000 +v 0.382683 23.000000 0.923880 +v 0.707107 23.000000 0.707107 +v 0.923879 23.000000 0.382684 +v 1.000000 23.000000 -0.000000 +v 0.923879 23.000000 -0.382684 +v 0.707106 23.000000 -0.707107 +v 0.382683 23.000000 -0.923880 +v -0.000000 21.000000 -1.000000 +v -0.382684 21.000000 -0.923880 +v -0.707107 21.000000 -0.707107 +v -0.923880 21.000000 -0.382683 +v -1.000000 21.000000 0.000000 +v -0.923880 21.000000 0.382684 +v -0.707107 21.000000 0.707107 +v -0.382684 21.000000 0.923880 +v -0.000000 21.000000 1.000000 +v 0.382683 21.000000 0.923880 +v 0.707107 21.000000 0.707107 +v 0.923879 21.000000 0.382684 +v 1.000000 21.000000 -0.000000 +v 0.923879 21.000000 -0.382684 +v 0.707106 21.000000 -0.707107 +v 0.382683 21.000000 -0.923880 +v 0.000000 2.000000 -1.500000 +v -0.574025 2.000000 -1.385819 +v -1.060660 2.000000 -1.060660 +v -1.385819 2.000000 -0.574025 +v -1.500000 2.000000 0.000000 +v -1.385819 2.000000 0.574025 +v -1.060660 2.000000 1.060660 +v -0.574025 2.000000 1.385819 +v -0.000000 2.000000 1.500000 +v 0.574025 2.000000 1.385819 +v 1.060660 2.000000 1.060660 +v 1.385819 2.000000 0.574025 +v 1.500000 2.000000 -0.000000 +v 1.385819 2.000000 -0.574025 +v 1.060660 2.000000 -1.060660 +v 0.574024 2.000000 -1.385820 +v -0.000000 22.500000 -1.500000 +v -0.574025 22.500000 -1.385819 +v -1.060660 22.500000 -1.060660 +v -1.385819 22.500000 -0.574025 +v -1.500000 22.500000 0.000000 +v -1.385819 22.500000 0.574025 +v -1.060660 22.500000 1.060660 +v -0.574025 22.500000 1.385819 +v -0.000000 22.500000 1.500000 +v 0.574025 22.500000 1.385819 +v 1.060660 22.500000 1.060660 +v 1.385819 22.500000 0.574025 +v 1.500000 22.500000 -0.000000 +v 1.385819 22.500000 -0.574025 +v 1.060660 22.500000 -1.060660 +v 0.574024 22.500000 -1.385820 +v 0.000000 22.500000 -1.250000 +v -0.478354 22.500000 -1.154849 +v -0.883883 22.500000 -0.883883 +v -1.154849 22.500000 -0.478354 +v -1.250000 22.500000 0.000000 +v -1.154849 22.500000 0.478354 +v -0.883883 22.500000 0.883883 +v -0.478354 22.500000 1.154849 +v -0.000000 22.500000 1.250000 +v 0.478354 22.500000 1.154850 +v 0.883883 22.500000 0.883884 +v 1.154849 22.500000 0.478354 +v 1.250000 22.500000 -0.000000 +v 1.154849 22.500000 -0.478355 +v 0.883883 22.500000 -0.883884 +v 0.478354 22.500000 -1.154850 +v 0.000000 22.000000 -1.250000 +v -0.478354 22.000000 -1.154849 +v -0.883883 22.000000 -0.883883 +v -1.154849 22.000000 -0.478354 +v -1.250000 22.000000 0.000000 +v -1.154849 22.000000 0.478354 +v -0.883883 22.000000 0.883883 +v -0.478354 22.000000 1.154849 +v -0.000000 22.000000 1.250000 +v 0.478354 22.000000 1.154850 +v 0.883883 22.000000 0.883884 +v 1.154849 22.000000 0.478354 +v 1.250000 22.000000 -0.000000 +v 1.154849 22.000000 -0.478355 +v 0.883883 22.000000 -0.883884 +v 0.478354 22.000000 -1.154850 +v -0.000000 22.250000 -1.500000 +v -0.574025 22.250000 -1.385819 +v -1.060660 22.250000 -1.060660 +v -1.385819 22.250000 -0.574025 +v -1.500000 22.250000 0.000000 +v -1.385819 22.250000 0.574025 +v -1.060660 22.250000 1.060660 +v -0.574025 22.250000 1.385819 +v -0.000000 22.250000 1.500000 +v 0.574025 22.250000 1.385819 +v 1.060660 22.250000 1.060660 +v 1.385819 22.250000 0.574025 +v 1.500000 22.250000 -0.000000 +v 1.385819 22.250000 -0.574025 +v 1.060660 22.250000 -1.060660 +v 0.574024 22.250000 -1.385820 +v -0.000000 14.250000 -1.500000 +v -0.574025 14.250000 -1.385819 +v -1.060660 14.250000 -1.060660 +v -1.385819 14.250000 -0.574025 +v -1.500000 14.250000 0.000000 +v -1.385819 14.250000 0.574025 +v -1.060660 14.250000 1.060660 +v -0.574025 14.250000 1.385819 +v -0.000000 14.250000 1.500000 +v 0.574025 14.250000 1.385819 +v 1.060660 14.250000 1.060660 +v 1.385819 14.250000 0.574025 +v 1.500000 14.250000 -0.000000 +v 1.385819 14.250000 -0.574025 +v 1.060660 14.250000 -1.060660 +v 0.574024 14.250000 -1.385820 +v 0.000000 14.250000 -1.250000 +v -0.478354 14.250000 -1.154849 +v -0.883883 14.250000 -0.883883 +v -1.154849 14.250000 -0.478354 +v -1.250000 14.250000 0.000000 +v -1.154849 14.250000 0.478354 +v -0.883883 14.250000 0.883883 +v -0.478354 14.250000 1.154849 +v -0.000000 14.250000 1.250000 +v 0.478354 14.250000 1.154850 +v 0.883883 14.250000 0.883884 +v 1.154849 14.250000 0.478354 +v 1.250000 14.250000 -0.000000 +v 1.154849 14.250000 -0.478355 +v 0.883883 14.250000 -0.883884 +v 0.478354 14.250000 -1.154850 +v 0.000000 13.750000 -1.250000 +v -0.478354 13.750000 -1.154849 +v -0.883883 13.750000 -0.883883 +v -1.154849 13.750000 -0.478354 +v -1.250000 13.750000 0.000000 +v -1.154849 13.750000 0.478354 +v -0.883883 13.750000 0.883883 +v -0.478354 13.750000 1.154849 +v -0.000000 13.750000 1.250000 +v 0.478354 13.750000 1.154850 +v 0.883883 13.750000 0.883884 +v 1.154849 13.750000 0.478354 +v 1.250000 13.750000 -0.000000 +v 1.154849 13.750000 -0.478355 +v 0.883883 13.750000 -0.883884 +v 0.478354 13.750000 -1.154850 +v -0.000000 14.000000 -1.500000 +v -0.574025 14.000000 -1.385819 +v -1.060660 14.000000 -1.060660 +v -1.385819 14.000000 -0.574025 +v -1.500000 14.000000 0.000000 +v -1.385819 14.000000 0.574025 +v -1.060660 14.000000 1.060660 +v -0.574025 14.000000 1.385819 +v -0.000000 14.000000 1.500000 +v 0.574025 14.000000 1.385819 +v 1.060660 14.000000 1.060660 +v 1.385819 14.000000 0.574025 +v 1.500000 14.000000 -0.000000 +v 1.385819 14.000000 -0.574025 +v 1.060660 14.000000 -1.060660 +v 0.574024 14.000000 -1.385820 +vt 0.272727 -0.000000 +vt -0.000000 0.129032 +vt -0.000000 -0.000000 +vt -0.000000 0.212366 +vt 0.272727 0.344086 +vt -0.000000 0.344086 +vt 0.170455 0.166667 +vt 0.272727 0.129032 +vt 0.272727 0.212366 +vt 0.102273 0.166667 +vt 0.102273 0.134409 +vt 0.039773 0.362903 +vt 0.073864 0.379032 +vt 0.039773 0.379032 +vt 0.039773 0.384409 +vt 0.073864 0.357527 +vt 0.073864 0.362903 +vt 0.000000 0.354839 +vt 0.011364 0.387097 +vt 0.000000 0.387097 +vt 0.113636 0.387097 +vt 0.102273 0.354839 +vt 0.113636 0.354839 +vt 0.022727 0.349462 +vt 0.090909 0.349462 +vt 0.102273 0.387097 +vt 0.085227 0.362903 +vt 0.090909 0.392473 +vt 0.022727 0.392473 +vt 0.011364 0.354839 +vt 0.028409 0.379032 +vt 0.090909 0.344086 +vt 0.022727 0.344086 +vt 0.022727 0.397849 +vt 0.090909 0.397849 +vt 0.085227 0.379032 +vt 0.028409 0.362903 +vt 0.039773 0.362903 +vt 0.073864 0.379032 +vt 0.039773 0.379032 +vt 0.039773 0.384409 +vt 0.073864 0.357527 +vt 0.073864 0.362903 +vt 0.000000 0.354839 +vt 0.011364 0.387097 +vt 0.000000 0.387097 +vt 0.113636 0.387097 +vt 0.102273 0.354839 +vt 0.113636 0.354839 +vt 0.022727 0.349462 +vt 0.090909 0.349462 +vt 0.102273 0.387097 +vt 0.085227 0.362903 +vt 0.090909 0.392473 +vt 0.022727 0.392473 +vt 0.011364 0.354839 +vt 0.028409 0.379032 +vt 0.090909 0.344086 +vt 0.022727 0.344086 +vt 0.022727 0.397849 +vt 0.090909 0.397849 +vt 0.085227 0.379032 +vt 0.028409 0.362903 +vt 0.039773 0.362903 +vt 0.073864 0.379032 +vt 0.039773 0.379032 +vt 0.039773 0.384409 +vt 0.073864 0.357527 +vt 0.073864 0.362903 +vt 0.000000 0.354839 +vt 0.011364 0.387097 +vt 0.000000 0.387097 +vt 0.113636 0.387097 +vt 0.102273 0.354839 +vt 0.113636 0.354839 +vt 0.022727 0.349462 +vt 0.090909 0.349462 +vt 0.085227 0.379032 +vt 0.102273 0.387097 +vt 0.090909 0.392473 +vt 0.022727 0.392473 +vt 0.028409 0.362903 +vt 0.011364 0.354839 +vt 0.090909 0.344086 +vt 0.022727 0.344086 +vt 0.022727 0.397849 +vt 0.090909 0.397849 +vt 0.039773 0.362903 +vt 0.073864 0.379032 +vt 0.039773 0.379032 +vt 0.073864 0.384409 +vt 0.039773 0.384409 +vt 0.073864 0.357527 +vt 0.073864 0.362903 +vt 0.000000 0.354839 +vt 0.011364 0.387097 +vt 0.000000 0.387097 +vt 0.113636 0.387097 +vt 0.102273 0.354839 +vt 0.113636 0.354839 +vt 0.022727 0.349462 +vt 0.090909 0.349462 +vt 0.085227 0.379032 +vt 0.102273 0.387097 +vt 0.090909 0.392473 +vt 0.022727 0.392473 +vt 0.028409 0.362903 +vt 0.011364 0.354839 +vt 0.090909 0.344086 +vt 0.022727 0.344086 +vt 0.022727 0.397849 +vt 0.090909 0.397849 +vt -0.000000 0.129032 +vt 0.102273 0.166667 +vt -0.000000 0.215054 +vt 0.170455 0.134409 +vt 0.272727 0.129032 +vt 0.272727 0.215054 +vt 0.170455 0.166667 +vt 0.102273 0.166667 +vt 0.000000 0.129032 +vt 0.102273 0.134409 +vt 0.272727 0.215054 +vt 0.000000 0.215054 +vt 0.272727 0.129032 +vt 0.170455 0.166667 +vt 0.170455 0.134409 +vt 0.102273 0.166667 +vt -0.000000 0.129032 +vt 0.102273 0.134409 +vt 0.272727 0.129032 +vt 0.170455 0.166667 +vt 0.272727 0.215054 +vt -0.000000 0.215054 +vt 0.863636 0.903226 +vt 0.823864 0.913979 +vt 0.818182 0.903226 +vt 0.778409 0.913979 +vt 0.772727 0.903226 +vt 0.727273 0.903226 +vt 0.767045 0.913979 +vt 0.732955 0.913979 +vt 0.687500 0.913979 +vt 0.681818 0.903226 +vt 0.642045 0.913979 +vt 0.636364 0.903226 +vt 0.596591 0.913979 +vt 0.590909 0.903226 +vt 0.545455 0.903226 +vt 0.585227 0.913979 +vt 0.551136 0.913979 +vt 0.500000 0.903226 +vt 0.539773 0.913979 +vt 0.505682 0.913979 +vt 0.454545 0.903226 +vt 0.494318 0.913979 +vt 0.460227 0.913979 +vt 0.409091 0.903226 +vt 0.448864 0.913979 +vt 0.414773 0.913979 +vt 0.363636 0.903226 +vt 0.403409 0.913979 +vt 0.369318 0.913979 +vt 0.323864 0.913979 +vt 0.318182 0.903226 +vt 0.278409 0.913979 +vt 0.272727 0.903226 +vt 1.000000 0.903226 +vt 0.960227 0.913979 +vt 0.954545 0.903226 +vt 0.914773 0.913979 +vt 0.909091 0.903226 +vt 0.869318 0.913979 +vt 0.026682 0.410473 +vt 0.090909 0.397887 +vt 0.181740 0.440860 +vt 0.227273 0.666667 +vt 0.204545 0.688172 +vt 0.204545 0.666667 +vt 0.227273 0.365591 +vt 0.204545 0.344086 +vt 0.227273 0.344086 +vt 0.227273 0.387097 +vt 0.204545 0.365591 +vt 0.227273 0.408602 +vt 0.204545 0.387097 +vt 0.227273 0.430108 +vt 0.204545 0.408602 +vt 0.227273 0.451613 +vt 0.204545 0.430108 +vt 0.227273 0.473118 +vt 0.204545 0.451613 +vt 0.227273 0.494624 +vt 0.204545 0.473118 +vt 0.227273 0.516129 +vt 0.204545 0.494624 +vt 0.204545 0.537634 +vt 0.204545 0.516129 +vt 0.227273 0.537634 +vt 0.204545 0.559140 +vt 0.227273 0.559140 +vt 0.204545 0.580645 +vt 0.227273 0.580645 +vt 0.204545 0.602151 +vt 0.227273 0.602151 +vt 0.204545 0.623656 +vt 0.227273 0.623656 +vt 0.204545 0.645161 +vt 0.227273 0.645161 +vt 0.227273 0.666667 +vt 0.204545 0.688172 +vt 0.204545 0.666667 +vt 0.227273 0.365591 +vt 0.204545 0.344086 +vt 0.227273 0.344086 +vt 0.227273 0.387097 +vt 0.204545 0.365591 +vt 0.227273 0.408602 +vt 0.204545 0.387097 +vt 0.227273 0.430108 +vt 0.204545 0.408602 +vt 0.227273 0.451613 +vt 0.204545 0.430108 +vt 0.227273 0.473118 +vt 0.204545 0.451613 +vt 0.227273 0.494624 +vt 0.204545 0.473118 +vt 0.227273 0.516129 +vt 0.204545 0.494624 +vt 0.204545 0.537634 +vt 0.204545 0.516129 +vt 0.227273 0.537634 +vt 0.204545 0.559140 +vt 0.227273 0.559140 +vt 0.204545 0.580645 +vt 0.227273 0.580645 +vt 0.204545 0.602151 +vt 0.227273 0.602151 +vt 0.204545 0.623656 +vt 0.227273 0.623656 +vt 0.204545 0.645161 +vt 0.227273 0.645161 +vt 0.170455 0.134409 +vt 0.073864 0.384409 +vt 0.039773 0.357527 +vt 0.073864 0.384409 +vt 0.039773 0.357527 +vt 0.073864 0.384409 +vt 0.039773 0.357527 +vt 0.085227 0.362903 +vt 0.028409 0.379032 +vt 0.039773 0.357527 +vt 0.085227 0.362903 +vt 0.028409 0.379032 +vt 0.102273 0.134409 +vt 0.170455 0.134409 +vt 0.857955 0.913979 +vt 0.812500 0.913979 +vt 0.721591 0.913979 +vt 0.676136 0.913979 +vt 0.630682 0.913979 +vt 0.357955 0.913979 +vt 0.312500 0.913979 +vt 0.994318 0.913979 +vt 0.948864 0.913979 +vt 0.903409 0.913979 +vt 0.174826 0.457305 +vt 0.155136 0.471247 +vt 0.125668 0.480563 +vt 0.090909 0.483834 +vt 0.056150 0.480563 +vt 0.026682 0.471247 +vt 0.006992 0.457305 +vt 0.000078 0.440860 +vt 0.006993 0.424415 +vt 0.056150 0.401158 +vt 0.125668 0.401158 +vt 0.155136 0.410473 +vt 0.174826 0.424415 +vt 0.227273 0.688172 +vt 0.227273 0.688172 +vt 0.363636 0.344086 +vt 0.318182 0.344086 +vt 0.727273 0.344086 +vt 0.681818 0.344086 +vt 0.409091 0.344086 +vt 0.772727 0.344086 +vt 0.454545 0.344086 +vt 0.863636 0.344086 +vt 0.818182 0.344086 +vt 0.500000 0.344086 +vt 0.909091 0.344086 +vt 0.545455 0.344086 +vt 0.954545 0.344086 +vt 0.590909 0.344086 +vt 1.000000 0.344086 +vt 0.636364 0.344086 +vt 0.272727 0.344086 +vt 0.505682 1.000000 +vt 0.914773 1.000000 +vt 0.551136 1.000000 +vt 0.960227 1.000000 +vt 0.596591 1.000000 +vt 0.278409 1.000000 +vt 0.642045 1.000000 +vt 0.323864 1.000000 +vt 0.687500 1.000000 +vt 0.369318 1.000000 +vt 0.732955 1.000000 +vt 0.414773 1.000000 +vt 0.823864 1.000000 +vt 0.778409 1.000000 +vt 0.460227 1.000000 +vt 0.869318 1.000000 +vt 0.909091 0.000000 +vt 0.954545 0.000000 +vt 0.272727 -0.000000 +vt 0.318182 -0.000000 +vt 0.363636 -0.000000 +vt 0.409091 -0.000000 +vt 0.454545 0.000000 +vt 0.545455 -0.000000 +vt 0.590909 0.000000 +vt 0.681818 0.000000 +vt 0.772727 -0.000000 +vt 0.818182 -0.000000 +vt 0.250000 0.451613 +vt 0.250000 0.645161 +vt 0.250000 0.473118 +vt 0.250000 0.666667 +vt 0.250000 0.494624 +vt 0.250000 0.344086 +vt 0.250000 0.516129 +vt 0.250000 0.365591 +vt 0.250000 0.537634 +vt 0.250000 0.387097 +vt 0.250000 0.559140 +vt 0.250000 0.408602 +vt 0.250000 0.602151 +vt 0.250000 0.580645 +vt 0.250000 0.430108 +vt 0.250000 0.623656 +vt 0.272727 0.688172 +vt 0.272727 0.666667 +vt 0.272727 0.365591 +vt 0.272727 0.344086 +vt 0.272727 0.387097 +vt 0.272727 0.408602 +vt 0.272727 0.430108 +vt 0.272727 0.451613 +vt 0.272727 0.473118 +vt 0.272727 0.516129 +vt 0.272727 0.494624 +vt 0.272727 0.537634 +vt 0.272727 0.559140 +vt 0.272727 0.580645 +vt 0.272727 0.602151 +vt 0.272727 0.623656 +vt 0.272727 0.645161 +vt 0.250000 0.451613 +vt 0.250000 0.645161 +vt 0.250000 0.473118 +vt 0.250000 0.666667 +vt 0.250000 0.494624 +vt 0.250000 0.344086 +vt 0.250000 0.516129 +vt 0.250000 0.365591 +vt 0.250000 0.537634 +vt 0.250000 0.387097 +vt 0.250000 0.559140 +vt 0.250000 0.408602 +vt 0.250000 0.602151 +vt 0.250000 0.580645 +vt 0.250000 0.430108 +vt 0.250000 0.623656 +vt 0.272727 0.688172 +vt 0.272727 0.666667 +vt 0.272727 0.365591 +vt 0.272727 0.344086 +vt 0.272727 0.387097 +vt 0.272727 0.408602 +vt 0.272727 0.430108 +vt 0.272727 0.451613 +vt 0.272727 0.473118 +vt 0.272727 0.516129 +vt 0.272727 0.494624 +vt 0.272727 0.537634 +vt 0.272727 0.559140 +vt 0.272727 0.580645 +vt 0.272727 0.602151 +vt 0.272727 0.623656 +vt 0.272727 0.645161 +vt 0.539773 1.000000 +vt 0.948864 1.000000 +vt 0.585227 1.000000 +vt 0.994318 1.000000 +vt 0.630682 1.000000 +vt 0.312500 1.000000 +vt 0.676136 1.000000 +vt 0.357955 1.000000 +vt 0.721591 1.000000 +vt 0.403409 1.000000 +vt 0.767045 1.000000 +vt 0.448864 1.000000 +vt 0.857955 1.000000 +vt 0.812500 1.000000 +vt 0.494318 1.000000 +vt 0.903409 1.000000 +vt 1.000000 0.000000 +vt 0.500000 0.000000 +vt 0.636364 0.000000 +vt 0.727273 -0.000000 +vt 0.863636 -0.000000 +vt 0.250000 0.688172 +vt 0.250000 0.688172 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.9239 0.0000 0.3827 +vn 0.7071 0.0000 -0.7071 +vn 0.9239 0.0000 -0.3827 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 -0.9239 +vn 0.3827 0.0000 0.9239 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 0.3827 +vn -0.7068 0.0312 -0.7068 +vn -0.9234 0.0312 -0.3825 +vn -0.9995 0.0312 -0.0000 +vn -0.9234 0.0312 0.3825 +vn -0.7068 0.0312 0.7068 +vn -0.3825 0.0312 0.9234 +vn -0.0000 0.0312 0.9995 +vn 0.3825 0.0312 0.9234 +vn 0.7068 0.0312 0.7068 +vn 0.9234 0.0312 0.3825 +vn 0.9995 0.0312 -0.0000 +vn 0.9234 0.0312 -0.3825 +vn 0.7068 0.0312 -0.7068 +vn 0.3825 0.0312 -0.9234 +vn -0.0000 0.0312 -0.9995 +vn -0.3825 0.0312 -0.9234 +vn -0.7071 -0.7071 -0.0000 +vn -0.6533 -0.7071 -0.2706 +vn -0.6533 -0.7071 0.2706 +vn -0.5000 -0.7071 0.5000 +vn -0.2706 -0.7071 0.6533 +vn -0.0000 -0.7071 0.7071 +vn 0.2706 -0.7071 0.6533 +vn 0.5000 -0.7071 0.5000 +vn 0.6533 -0.7071 0.2706 +vn 0.7071 -0.7071 -0.0000 +vn 0.6533 -0.7071 -0.2706 +vn 0.5000 -0.7071 -0.5000 +vn 0.2706 -0.7071 -0.6533 +vn -0.0000 -0.7071 -0.7071 +vn -0.2706 -0.7071 -0.6533 +vn -0.5000 -0.7071 -0.5000 +s off +f 3/1/1 2/2/1 1/3/1 +f 6/4/2 7/5/2 5/6/2 +f 11/7/3 4/8/3 8/9/3 +f 9/10/3 2/2/3 10/11/3 +f 9/10/3 8/9/3 6/4/3 +f 4/8/3 10/11/3 2/2/3 +f 14/12/3 15/13/3 13/14/3 +f 15/13/2 22/15/2 13/14/2 +f 14/12/1 24/16/1 16/17/1 +f 10/18/4 18/19/4 9/20/4 +f 11/21/5 20/22/5 12/23/5 +f 24/16/3 19/24/3 20/25/3 +f 17/26/3 24/27/3 20/22/3 +f 22/15/3 17/28/3 18/29/3 +f 19/30/3 22/31/3 18/19/3 +f 12/32/2 19/24/2 10/33/2 +f 9/34/1 17/28/1 11/35/1 +f 16/17/4 21/36/4 15/13/4 +f 13/14/5 23/37/5 14/12/5 +f 30/38/6 31/39/6 29/40/6 +f 31/39/2 38/41/2 29/40/2 +f 30/38/1 40/42/1 32/43/1 +f 26/44/5 34/45/5 25/46/5 +f 27/47/4 36/48/4 28/49/4 +f 40/42/6 35/50/6 36/51/6 +f 33/52/6 40/53/6 36/48/6 +f 38/41/6 33/54/6 34/55/6 +f 35/56/6 38/57/6 34/45/6 +f 28/58/2 35/50/2 26/59/2 +f 25/60/1 33/54/1 27/61/1 +f 32/43/5 37/62/5 31/39/5 +f 29/40/4 39/63/4 30/38/4 +f 46/64/4 47/65/4 45/66/4 +f 47/65/2 54/67/2 45/66/2 +f 46/64/1 56/68/1 48/69/1 +f 42/70/6 50/71/6 41/72/6 +f 43/73/3 52/74/3 44/75/3 +f 56/68/4 51/76/4 52/77/4 +f 53/78/4 52/74/4 49/79/4 +f 54/67/4 49/80/4 50/81/4 +f 55/82/4 50/71/4 51/83/4 +f 44/84/2 51/76/2 42/85/2 +f 41/86/1 49/80/1 43/87/1 +f 48/69/6 53/78/6 47/65/6 +f 45/66/3 55/82/3 46/64/3 +f 62/88/5 63/89/5 61/90/5 +f 61/90/2 69/91/2 70/92/2 +f 62/88/1 72/93/1 64/94/1 +f 58/95/3 66/96/3 57/97/3 +f 59/98/6 68/99/6 60/100/6 +f 72/93/5 67/101/5 68/102/5 +f 69/103/5 68/99/5 65/104/5 +f 70/92/5 65/105/5 66/106/5 +f 71/107/5 66/96/5 67/108/5 +f 60/109/2 67/101/2 58/110/2 +f 57/111/1 65/105/1 59/112/1 +f 64/94/3 69/103/3 63/89/3 +f 61/90/6 71/107/6 62/88/6 +f 4/113/4 41/114/4 8/115/4 +f 44/116/4 4/113/4 3/117/4 +f 41/114/4 7/118/4 8/115/4 +f 43/119/4 3/117/4 7/118/4 +f 25/120/6 3/121/6 26/122/6 +f 25/120/6 5/123/6 7/124/6 +f 1/125/6 26/122/6 3/121/6 +f 1/125/6 27/126/6 28/127/6 +f 57/128/5 1/129/5 58/130/5 +f 2/131/5 58/130/5 1/129/5 +f 59/132/5 2/131/5 6/133/5 +f 57/128/5 6/133/5 5/134/5 +f 90/135/2 105/136/2 89/137/2 +f 89/137/2 120/138/2 104/139/2 +f 103/140/2 120/141/2 119/142/2 +f 103/140/2 118/143/2 102/144/2 +f 102/144/2 117/145/2 101/146/2 +f 101/146/2 116/147/2 100/148/2 +f 99/149/2 116/150/2 115/151/2 +f 98/152/2 115/153/2 114/154/2 +f 97/155/2 114/156/2 113/157/2 +f 96/158/2 113/159/2 112/160/2 +f 95/161/2 112/162/2 111/163/2 +f 95/161/2 110/164/2 94/165/2 +f 94/165/2 109/166/2 93/167/2 +f 93/168/2 108/169/2 92/170/2 +f 92/170/2 107/171/2 91/172/2 +f 91/172/2 106/173/2 90/135/2 +f 131/174/2 133/175/2 121/176/2 +f 156/177/2 173/178/2 172/179/2 +f 158/180/2 173/181/2 157/182/2 +f 159/183/2 174/184/2 158/180/2 +f 160/185/2 175/186/2 159/183/2 +f 161/187/2 176/188/2 160/185/2 +f 162/189/2 177/190/2 161/187/2 +f 163/191/2 178/192/2 162/189/2 +f 164/193/2 179/194/2 163/191/2 +f 165/195/2 180/196/2 164/193/2 +f 165/195/2 182/197/2 181/198/2 +f 166/199/2 183/200/2 182/197/2 +f 167/201/2 184/202/2 183/200/2 +f 168/203/2 169/204/2 184/202/2 +f 153/205/2 170/206/2 169/204/2 +f 154/207/2 171/208/2 170/206/2 +f 155/209/2 172/179/2 171/208/2 +f 220/210/2 237/211/2 236/212/2 +f 222/213/2 237/214/2 221/215/2 +f 223/216/2 238/217/2 222/213/2 +f 224/218/2 239/219/2 223/216/2 +f 225/220/2 240/221/2 224/218/2 +f 226/222/2 241/223/2 225/220/2 +f 227/224/2 242/225/2 226/222/2 +f 228/226/2 243/227/2 227/224/2 +f 229/228/2 244/229/2 228/226/2 +f 229/228/2 246/230/2 245/231/2 +f 230/232/2 247/233/2 246/230/2 +f 231/234/2 248/235/2 247/233/2 +f 232/236/2 233/237/2 248/235/2 +f 217/238/2 234/239/2 233/237/2 +f 218/240/2 235/241/2 234/239/2 +f 219/242/2 236/212/2 235/241/2 +f 3/1/1 4/8/1 2/2/1 +f 6/4/2 8/9/2 7/5/2 +f 11/7/3 12/243/3 4/8/3 +f 9/10/3 6/4/3 2/2/3 +f 9/10/3 11/7/3 8/9/3 +f 4/8/3 12/243/3 10/11/3 +f 14/12/3 16/17/3 15/13/3 +f 15/13/2 21/244/2 22/15/2 +f 14/12/1 23/245/1 24/16/1 +f 10/18/4 19/30/4 18/19/4 +f 11/21/5 17/26/5 20/22/5 +f 24/16/3 23/245/3 19/24/3 +f 17/26/3 21/36/3 24/27/3 +f 22/15/3 21/244/3 17/28/3 +f 19/30/3 23/37/3 22/31/3 +f 12/32/2 20/25/2 19/24/2 +f 9/34/1 18/29/1 17/28/1 +f 16/17/4 24/27/4 21/36/4 +f 13/14/5 22/31/5 23/37/5 +f 30/38/6 32/43/6 31/39/6 +f 31/39/2 37/246/2 38/41/2 +f 30/38/1 39/247/1 40/42/1 +f 26/44/5 35/56/5 34/45/5 +f 27/47/4 33/52/4 36/48/4 +f 40/42/6 39/247/6 35/50/6 +f 33/52/6 37/62/6 40/53/6 +f 38/41/6 37/246/6 33/54/6 +f 35/56/6 39/63/6 38/57/6 +f 28/58/2 36/51/2 35/50/2 +f 25/60/1 34/55/1 33/54/1 +f 32/43/5 40/53/5 37/62/5 +f 29/40/4 38/57/4 39/63/4 +f 46/64/4 48/69/4 47/65/4 +f 47/65/2 53/248/2 54/67/2 +f 46/64/1 55/249/1 56/68/1 +f 42/70/6 51/83/6 50/71/6 +f 43/73/3 49/79/3 52/74/3 +f 56/68/4 55/249/4 51/76/4 +f 53/78/4 56/250/4 52/74/4 +f 54/67/4 53/248/4 49/80/4 +f 55/82/4 54/251/4 50/71/4 +f 44/84/2 52/77/2 51/76/2 +f 41/86/1 50/81/1 49/80/1 +f 48/69/6 56/250/6 53/78/6 +f 45/66/3 54/251/3 55/82/3 +f 62/88/5 64/94/5 63/89/5 +f 61/90/2 63/89/2 69/91/2 +f 62/88/1 71/252/1 72/93/1 +f 58/95/3 67/108/3 66/96/3 +f 59/98/6 65/104/6 68/99/6 +f 72/93/5 71/252/5 67/101/5 +f 69/103/5 72/253/5 68/99/5 +f 70/92/5 69/91/5 65/105/5 +f 71/107/5 70/254/5 66/96/5 +f 60/109/2 68/102/2 67/101/2 +f 57/111/1 66/106/1 65/105/1 +f 64/94/3 72/253/3 69/103/3 +f 61/90/6 70/254/6 71/107/6 +f 4/113/4 42/255/4 41/114/4 +f 44/116/4 42/255/4 4/113/4 +f 41/114/4 43/119/4 7/118/4 +f 43/119/4 44/116/4 3/117/4 +f 25/120/6 7/124/6 3/121/6 +f 25/120/6 27/126/6 5/123/6 +f 1/125/6 28/127/6 26/122/6 +f 1/125/6 5/123/6 27/126/6 +f 57/128/5 5/134/5 1/129/5 +f 2/131/5 60/256/5 58/130/5 +f 59/132/5 60/256/5 2/131/5 +f 57/128/5 59/132/5 6/133/5 +f 90/135/2 106/257/2 105/136/2 +f 89/137/2 105/258/2 120/138/2 +f 103/140/2 104/139/2 120/141/2 +f 103/140/2 119/259/2 118/143/2 +f 102/144/2 118/260/2 117/145/2 +f 101/146/2 117/261/2 116/147/2 +f 99/149/2 100/148/2 116/150/2 +f 98/152/2 99/149/2 115/153/2 +f 97/155/2 98/152/2 114/156/2 +f 96/158/2 97/155/2 113/159/2 +f 95/161/2 96/158/2 112/162/2 +f 95/161/2 111/262/2 110/164/2 +f 94/165/2 110/263/2 109/166/2 +f 93/168/2 109/264/2 108/169/2 +f 92/170/2 108/265/2 107/171/2 +f 91/172/2 107/266/2 106/173/2 +f 121/176/2 122/267/2 123/268/2 +f 123/268/2 124/269/2 125/270/2 +f 125/270/2 126/271/2 127/272/2 +f 127/272/2 128/273/2 129/274/2 +f 129/274/2 130/275/2 131/174/2 +f 131/174/2 132/276/2 133/175/2 +f 133/175/2 134/277/2 121/176/2 +f 134/277/2 135/278/2 121/176/2 +f 135/278/2 136/279/2 121/176/2 +f 121/176/2 123/268/2 125/270/2 +f 125/270/2 127/272/2 121/176/2 +f 127/272/2 129/274/2 121/176/2 +f 129/274/2 131/174/2 121/176/2 +f 156/177/2 157/280/2 173/178/2 +f 158/180/2 174/184/2 173/181/2 +f 159/183/2 175/186/2 174/184/2 +f 160/185/2 176/188/2 175/186/2 +f 161/187/2 177/190/2 176/188/2 +f 162/189/2 178/192/2 177/190/2 +f 163/191/2 179/194/2 178/192/2 +f 164/193/2 180/196/2 179/194/2 +f 165/195/2 181/198/2 180/196/2 +f 165/195/2 166/199/2 182/197/2 +f 166/199/2 167/201/2 183/200/2 +f 167/201/2 168/203/2 184/202/2 +f 168/203/2 153/205/2 169/204/2 +f 153/205/2 154/207/2 170/206/2 +f 154/207/2 155/209/2 171/208/2 +f 155/209/2 156/177/2 172/179/2 +f 220/210/2 221/281/2 237/211/2 +f 222/213/2 238/217/2 237/214/2 +f 223/216/2 239/219/2 238/217/2 +f 224/218/2 240/221/2 239/219/2 +f 225/220/2 241/223/2 240/221/2 +f 226/222/2 242/225/2 241/223/2 +f 227/224/2 243/227/2 242/225/2 +f 228/226/2 244/229/2 243/227/2 +f 229/228/2 245/231/2 244/229/2 +f 229/228/2 230/232/2 246/230/2 +f 230/232/2 231/234/2 247/233/2 +f 231/234/2 232/236/2 248/235/2 +f 232/236/2 217/238/2 233/237/2 +f 217/238/2 218/240/2 234/239/2 +f 218/240/2 219/242/2 235/241/2 +f 219/242/2 220/210/2 236/212/2 +s 1 +f 79/282/7 94/165/8 78/283/8 +f 87/284/9 102/144/10 86/285/10 +f 80/286/11 95/161/7 79/282/7 +f 88/287/12 103/140/9 87/284/9 +f 81/288/5 96/158/11 80/286/11 +f 74/289/13 89/137/4 73/290/4 +f 73/290/4 104/139/12 88/287/12 +f 82/291/14 97/155/5 81/288/5 +f 75/292/15 90/135/13 74/289/13 +f 83/293/16 98/152/14 82/291/14 +f 76/294/17 91/172/15 75/292/15 +f 84/295/18 99/149/16 83/293/16 +f 77/296/6 92/170/17 76/294/17 +f 85/297/3 100/148/18 84/295/18 +f 78/283/8 93/167/6 77/298/6 +f 86/285/10 101/146/3 85/297/3 +f 115/153/15 130/299/13 114/154/13 +f 108/265/18 123/300/16 107/171/16 +f 116/150/17 131/301/15 115/151/15 +f 109/264/3 124/302/18 108/169/18 +f 117/261/6 132/303/17 116/147/17 +f 110/263/10 125/304/3 109/166/3 +f 118/260/8 133/305/6 117/145/6 +f 111/262/9 126/306/10 110/164/10 +f 119/259/7 134/307/8 118/143/8 +f 112/162/12 127/308/9 111/163/9 +f 120/141/11 135/309/7 119/142/7 +f 113/159/4 128/310/12 112/160/12 +f 106/257/14 121/311/5 105/136/5 +f 105/258/5 136/312/11 120/138/11 +f 114/156/13 129/313/4 113/157/4 +f 107/266/16 122/314/14 106/173/14 +f 139/315/19 76/294/20 75/292/19 +f 140/316/20 77/296/21 76/294/20 +f 141/317/21 78/283/22 77/298/21 +f 142/318/22 79/282/23 78/283/22 +f 143/319/23 80/286/24 79/282/23 +f 144/320/24 81/288/25 80/286/24 +f 145/321/25 82/291/26 81/288/25 +f 82/291/26 147/322/27 83/293/27 +f 147/322/27 84/295/28 83/293/27 +f 148/323/28 85/297/29 84/295/28 +f 85/297/29 150/324/30 86/285/30 +f 150/324/30 87/284/31 86/285/30 +f 87/284/31 152/325/32 88/287/32 +f 152/325/32 73/290/33 88/287/32 +f 137/326/33 74/289/34 73/290/33 +f 74/289/34 139/315/19 75/292/19 +f 210/327/14 163/191/16 162/189/14 +f 203/328/15 156/177/17 155/209/15 +f 211/329/16 164/193/18 163/191/16 +f 204/330/17 157/280/6 156/177/17 +f 212/331/18 165/195/3 164/193/18 +f 205/332/6 158/180/8 157/182/6 +f 213/333/3 166/199/10 165/195/3 +f 206/334/8 159/183/7 158/180/8 +f 214/335/10 167/201/9 166/199/10 +f 207/336/7 160/185/11 159/183/7 +f 215/337/9 168/203/12 167/201/9 +f 208/338/11 161/187/5 160/185/11 +f 201/339/4 154/207/13 153/205/4 +f 216/340/12 153/205/4 168/203/12 +f 209/341/5 162/189/14 161/187/5 +f 202/342/13 155/209/15 154/207/13 +f 189/343/35 204/330/36 188/344/36 +f 190/345/37 205/332/35 189/346/35 +f 191/347/38 206/334/37 190/345/37 +f 191/347/38 208/338/39 207/336/38 +f 192/348/39 209/341/40 208/338/39 +f 193/349/40 210/327/41 209/341/40 +f 194/350/41 211/329/42 210/327/41 +f 195/351/42 212/331/43 211/329/42 +f 197/352/44 212/331/43 196/353/43 +f 198/354/45 213/333/44 197/352/44 +f 199/355/46 214/335/45 198/354/45 +f 200/356/47 215/337/46 199/355/46 +f 185/357/48 216/340/47 200/356/47 +f 186/358/49 201/339/48 185/357/48 +f 187/359/50 202/342/49 186/358/49 +f 188/344/36 203/328/50 187/359/50 +f 274/360/14 227/224/16 226/222/14 +f 267/361/15 220/210/17 219/242/15 +f 275/362/16 228/226/18 227/224/16 +f 268/363/17 221/281/6 220/210/17 +f 276/364/18 229/228/3 228/226/18 +f 269/365/6 222/213/8 221/215/6 +f 277/366/3 230/232/10 229/228/3 +f 270/367/8 223/216/7 222/213/8 +f 278/368/10 231/234/9 230/232/10 +f 271/369/7 224/218/11 223/216/7 +f 279/370/9 232/236/12 231/234/9 +f 272/371/11 225/220/5 224/218/11 +f 265/372/4 218/240/13 217/238/4 +f 280/373/12 217/238/4 232/236/12 +f 273/374/5 226/222/14 225/220/5 +f 266/375/13 219/242/15 218/240/13 +f 253/376/35 268/363/36 252/377/36 +f 254/378/37 269/365/35 253/379/35 +f 254/378/37 271/369/38 270/367/37 +f 255/380/38 272/371/39 271/369/38 +f 256/381/39 273/374/40 272/371/39 +f 257/382/40 274/360/41 273/374/40 +f 258/383/41 275/362/42 274/360/41 +f 259/384/42 276/364/43 275/362/42 +f 261/385/44 276/364/43 260/386/43 +f 262/387/45 277/366/44 261/385/44 +f 263/388/46 278/368/45 262/387/45 +f 264/389/47 279/370/46 263/388/46 +f 249/390/48 280/373/47 264/389/47 +f 250/391/49 265/372/48 249/390/48 +f 251/392/50 266/375/49 250/391/49 +f 252/377/36 267/361/50 251/392/50 +f 79/282/7 95/161/7 94/165/8 +f 87/284/9 103/140/9 102/144/10 +f 80/286/11 96/158/11 95/161/7 +f 88/287/12 104/139/12 103/140/9 +f 81/288/5 97/155/5 96/158/11 +f 74/289/13 90/135/13 89/137/4 +f 73/290/4 89/137/4 104/139/12 +f 82/291/14 98/152/14 97/155/5 +f 75/292/15 91/172/15 90/135/13 +f 83/293/16 99/149/16 98/152/14 +f 76/294/17 92/170/17 91/172/15 +f 84/295/18 100/148/18 99/149/16 +f 77/296/6 93/168/6 92/170/17 +f 85/297/3 101/146/3 100/148/18 +f 78/283/8 94/165/8 93/167/6 +f 86/285/10 102/144/10 101/146/3 +f 115/153/15 131/393/15 130/299/13 +f 108/265/18 124/394/18 123/300/16 +f 116/150/17 132/395/17 131/301/15 +f 109/264/3 125/396/3 124/302/18 +f 117/261/6 133/397/6 132/303/17 +f 110/263/10 126/398/10 125/304/3 +f 118/260/8 134/399/8 133/305/6 +f 111/262/9 127/400/9 126/306/10 +f 119/259/7 135/401/7 134/307/8 +f 112/162/12 128/402/12 127/308/9 +f 120/141/11 136/403/11 135/309/7 +f 113/159/4 129/404/4 128/310/12 +f 106/257/14 122/405/14 121/311/5 +f 105/258/5 121/406/5 136/312/11 +f 114/156/13 130/407/13 129/313/4 +f 107/266/16 123/408/16 122/314/14 +f 139/315/19 140/316/20 76/294/20 +f 140/316/20 141/409/21 77/296/21 +f 141/317/21 142/318/22 78/283/22 +f 142/318/22 143/319/23 79/282/23 +f 143/319/23 144/320/24 80/286/24 +f 144/320/24 145/321/25 81/288/25 +f 145/321/25 146/410/26 82/291/26 +f 82/291/26 146/410/26 147/322/27 +f 147/322/27 148/323/28 84/295/28 +f 148/323/28 149/411/29 85/297/29 +f 85/297/29 149/411/29 150/324/30 +f 150/324/30 151/412/31 87/284/31 +f 87/284/31 151/412/31 152/325/32 +f 152/325/32 137/326/33 73/290/33 +f 137/326/33 138/413/34 74/289/34 +f 74/289/34 138/413/34 139/315/19 +f 210/327/14 211/329/16 163/191/16 +f 203/328/15 204/330/17 156/177/17 +f 211/329/16 212/331/18 164/193/18 +f 204/330/17 205/414/6 157/280/6 +f 212/331/18 213/333/3 165/195/3 +f 205/332/6 206/334/8 158/180/8 +f 213/333/3 214/335/10 166/199/10 +f 206/334/8 207/336/7 159/183/7 +f 214/335/10 215/337/9 167/201/9 +f 207/336/7 208/338/11 160/185/11 +f 215/337/9 216/340/12 168/203/12 +f 208/338/11 209/341/5 161/187/5 +f 201/339/4 202/342/13 154/207/13 +f 216/340/12 201/339/4 153/205/4 +f 209/341/5 210/327/14 162/189/14 +f 202/342/13 203/328/15 155/209/15 +f 189/343/35 205/414/35 204/330/36 +f 190/345/37 206/334/37 205/332/35 +f 191/347/38 207/336/38 206/334/37 +f 191/347/38 192/348/39 208/338/39 +f 192/348/39 193/349/40 209/341/40 +f 193/349/40 194/350/41 210/327/41 +f 194/350/41 195/351/42 211/329/42 +f 195/351/42 196/353/43 212/331/43 +f 197/352/44 213/333/44 212/331/43 +f 198/354/45 214/335/45 213/333/44 +f 199/355/46 215/337/46 214/335/45 +f 200/356/47 216/340/47 215/337/46 +f 185/357/48 201/339/48 216/340/47 +f 186/358/49 202/342/49 201/339/48 +f 187/359/50 203/328/50 202/342/49 +f 188/344/36 204/330/36 203/328/50 +f 274/360/14 275/362/16 227/224/16 +f 267/361/15 268/363/17 220/210/17 +f 275/362/16 276/364/18 228/226/18 +f 268/363/17 269/415/6 221/281/6 +f 276/364/18 277/366/3 229/228/3 +f 269/365/6 270/367/8 222/213/8 +f 277/366/3 278/368/10 230/232/10 +f 270/367/8 271/369/7 223/216/7 +f 278/368/10 279/370/9 231/234/9 +f 271/369/7 272/371/11 224/218/11 +f 279/370/9 280/373/12 232/236/12 +f 272/371/11 273/374/5 225/220/5 +f 265/372/4 266/375/13 218/240/13 +f 280/373/12 265/372/4 217/238/4 +f 273/374/5 274/360/14 226/222/14 +f 266/375/13 267/361/15 219/242/15 +f 253/376/35 269/415/35 268/363/36 +f 254/378/37 270/367/37 269/365/35 +f 254/378/37 255/380/38 271/369/38 +f 255/380/38 256/381/39 272/371/39 +f 256/381/39 257/382/40 273/374/40 +f 257/382/40 258/383/41 274/360/41 +f 258/383/41 259/384/42 275/362/42 +f 259/384/42 260/386/43 276/364/43 +f 261/385/44 277/366/44 276/364/43 +f 262/387/45 278/368/45 277/366/44 +f 263/388/46 279/370/46 278/368/45 +f 264/389/47 280/373/47 279/370/46 +f 249/390/48 265/372/48 280/373/47 +f 250/391/49 266/375/49 265/372/48 +f 251/392/50 267/361/50 266/375/49 +f 252/377/36 268/363/36 267/361/50 diff --git a/src/main/resources/assets/hbm/models/machines/compressor.obj b/src/main/resources/assets/hbm/models/machines/compressor.obj new file mode 100644 index 000000000..ebafde92e --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/compressor.obj @@ -0,0 +1,2321 @@ +# Blender v2.79 (sub 0) OBJ File: 'compressor.blend' +# www.blender.org +o Pump +v -0.250000 7.000000 -1.500000 +v -0.250000 7.000000 -0.500000 +v 0.250000 7.000000 -0.500000 +v 0.250000 7.000000 -1.500000 +v -0.250000 7.000000 0.500000 +v -0.250000 7.000000 1.500000 +v 0.250000 7.000000 1.500000 +v 0.250000 7.000000 0.500000 +v 0.750000 7.000000 -1.250000 +v 0.750000 7.000000 1.250000 +v -0.750000 7.000000 -1.250000 +v -0.750000 7.000000 1.250000 +v -0.250000 8.000000 -1.500000 +v -0.250000 8.000000 -0.500000 +v 0.250000 8.000000 -0.500000 +v 0.250000 8.000000 -1.500000 +v -0.250000 8.000000 0.500000 +v -0.250000 8.000000 1.500000 +v 0.250000 8.000000 1.500000 +v 0.250000 8.000000 0.500000 +v 0.750000 8.000000 -1.250000 +v 0.750000 8.000000 1.250000 +v -0.750000 8.000000 -1.250000 +v -0.750000 8.000000 1.250000 +v 0.000000 4.000000 -0.500000 +v -0.353553 4.000000 -0.353553 +v -0.500000 4.000000 0.000000 +v -0.353553 4.000000 0.353553 +v 0.000000 4.000000 0.500000 +v 0.353553 4.000000 0.353553 +v 0.500000 4.000000 -0.000000 +v 0.353553 4.000000 -0.353553 +v 0.000000 8.500000 -0.500000 +v -0.353553 8.500000 -0.353553 +v -0.500000 8.500000 0.000000 +v -0.353553 8.500000 0.353553 +v 0.000000 8.500000 0.500000 +v 0.353553 8.500000 0.353553 +v 0.500000 8.500000 -0.000000 +v 0.353553 8.500000 -0.353553 +vt 0.136364 0.037037 +vt 0.196970 0.074074 +vt 0.136364 0.074074 +vt 0.242424 0.111111 +vt 0.090909 0.111111 +vt 0.196970 0.037037 +vt 0.090909 0.000000 +vt 0.196970 0.222222 +vt 0.136364 0.259259 +vt 0.136364 0.222222 +vt 0.090909 0.185185 +vt 0.196970 0.259259 +vt 0.242424 0.296296 +vt 0.090909 0.296296 +vt 0.090909 0.370370 +vt 0.242424 0.370370 +vt 0.257576 0.259259 +vt 0.257576 0.222222 +vt 0.000000 0.370370 +vt 0.060606 0.296296 +vt 0.060606 0.370370 +vt 0.060606 0.185185 +vt 0.060606 0.111111 +vt 0.333333 0.111111 +vt 0.272727 0.185185 +vt 0.272727 0.111111 +vt 0.242424 0.185185 +vt 0.000000 0.185185 +vt 0.000000 0.111111 +vt 0.272727 0.296296 +vt 0.272727 0.370370 +vt 0.333333 0.296296 +vt 0.333333 0.370370 +vt 0.075758 0.222222 +vt 0.075758 0.259259 +vt 0.636324 0.962963 +vt 0.606061 0.999951 +vt 0.575798 0.962963 +vt 0.075758 0.074074 +vt 0.257576 0.074074 +vt 0.075758 0.037037 +vt 0.242424 -0.000000 +vt 0.257576 0.037037 +vt 0.075758 0.222222 +vt 0.257576 0.222222 +vt 0.075758 0.259259 +vt 0.257576 0.259259 +vt -0.000000 0.296296 +vt 0.333333 0.185185 +vt 0.627460 0.989117 +vt 0.584662 0.989117 +vt 0.584662 0.936809 +vt 0.606061 0.925975 +vt 0.627460 0.936809 +vt 0.689394 0.592593 +vt 0.666667 0.925926 +vt 0.666667 0.592593 +vt 0.643939 0.592593 +vt 0.621212 0.925926 +vt 0.621212 0.592593 +vt 0.598485 0.592593 +vt 0.575758 0.925926 +vt 0.575758 0.592593 +vt 0.734848 0.592593 +vt 0.712121 0.925926 +vt 0.712121 0.592593 +vt 0.689394 0.925926 +vt 0.643939 0.925926 +vt 0.598485 0.925926 +vt 0.757576 0.592593 +vt 0.734848 0.925926 +vt 0.757576 0.925926 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.4472 0.0000 -0.8944 +vn 0.4472 0.0000 -0.8944 +vn -0.4472 0.0000 0.8944 +vn 0.4472 0.0000 0.8944 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +s off +f 3/1/1 5/2/1 2/3/1 +f 5/2/1 12/4/1 11/5/1 +f 8/6/1 3/1/1 9/7/1 +f 17/8/2 15/9/2 14/10/2 +f 17/8/2 14/10/2 23/11/2 +f 20/12/2 22/13/2 21/14/2 +f 9/15/3 22/13/3 10/16/3 +f 8/17/4 17/8/4 5/18/4 +f 3/19/5 16/20/5 4/21/5 +f 11/5/6 13/22/6 1/23/6 +f 4/21/7 21/14/7 9/15/7 +f 5/24/3 18/25/3 6/26/3 +f 6/26/8 24/27/8 12/4/8 +f 1/23/3 14/28/3 2/29/3 +f 10/16/9 19/30/9 7/31/9 +f 7/31/5 20/32/5 8/33/5 +f 12/4/5 23/11/5 11/5/5 +f 2/34/10 15/9/10 3/35/10 +f 33/36/2 35/37/2 37/38/2 +f 3/1/1 8/6/1 5/2/1 +f 11/5/1 1/39/1 2/3/1 +f 5/2/1 6/40/1 12/4/1 +f 11/5/1 2/3/1 5/2/1 +f 3/1/1 4/41/1 9/7/1 +f 9/7/1 10/42/1 8/6/1 +f 10/42/1 7/43/1 8/6/1 +f 17/8/2 20/12/2 15/9/2 +f 14/10/2 13/44/2 23/11/2 +f 23/11/2 24/27/2 17/8/2 +f 24/27/2 18/45/2 17/8/2 +f 21/14/2 16/46/2 15/9/2 +f 20/12/2 19/47/2 22/13/2 +f 21/14/2 15/9/2 20/12/2 +f 9/15/3 21/14/3 22/13/3 +f 8/17/4 20/12/4 17/8/4 +f 3/19/5 15/48/5 16/20/5 +f 11/5/6 23/11/6 13/22/6 +f 4/21/7 16/20/7 21/14/7 +f 5/24/3 17/49/3 18/25/3 +f 6/26/8 18/25/8 24/27/8 +f 1/23/3 13/22/3 14/28/3 +f 10/16/9 22/13/9 19/30/9 +f 7/31/5 19/30/5 20/32/5 +f 12/4/5 24/27/5 23/11/5 +f 2/34/10 14/10/10 15/9/10 +f 33/36/2 34/50/2 35/37/2 +f 35/37/2 36/51/2 37/38/2 +f 37/38/2 38/52/2 39/53/2 +f 39/53/2 40/54/2 37/38/2 +f 40/54/2 33/36/2 37/38/2 +s 1 +f 32/55/11 39/56/3 31/57/3 +f 30/58/12 37/59/4 29/60/4 +f 28/61/13 35/62/5 27/63/5 +f 26/64/14 33/65/10 25/66/10 +f 25/66/10 40/67/11 32/55/11 +f 31/57/3 38/68/12 30/58/12 +f 29/60/4 36/69/13 28/61/13 +f 27/70/5 34/71/14 26/64/14 +f 32/55/11 40/67/11 39/56/3 +f 30/58/12 38/68/12 37/59/4 +f 28/61/13 36/69/13 35/62/5 +f 26/64/14 34/71/14 33/65/10 +f 25/66/10 33/65/10 40/67/11 +f 31/57/3 39/56/3 38/68/12 +f 29/60/4 37/59/4 36/69/13 +f 27/70/5 35/72/5 34/71/14 +o Fan +v 2.250000 1.500000 -0.125000 +v 2.250000 1.588388 -0.088388 +v 2.250000 1.625000 0.000000 +v 2.250000 1.588388 0.088388 +v 2.250000 1.500000 0.125000 +v 2.250000 1.411612 0.088388 +v 2.250000 1.375000 -0.000000 +v 2.250000 1.411612 -0.088388 +v 2.375000 1.500000 -0.125000 +v 2.375000 1.588388 -0.088388 +v 2.375000 1.625000 0.000000 +v 2.375000 1.588388 0.088388 +v 2.375000 1.500000 0.125000 +v 2.375000 1.411612 0.088388 +v 2.375000 1.375000 -0.000000 +v 2.375000 1.411612 -0.088388 +v 2.410491 1.821781 0.562102 +v 2.357664 1.459947 0.040054 +v 2.252009 2.062102 0.321781 +v 2.304836 1.540053 -0.040054 +v 2.410491 0.937898 0.321781 +v 2.357664 1.459947 -0.040053 +v 2.252009 1.178219 0.562102 +v 2.304836 1.540053 0.040054 +v 2.410491 1.178219 -0.562102 +v 2.357664 1.540053 -0.040054 +v 2.252009 0.937898 -0.321781 +v 2.304836 1.459947 0.040054 +v 2.410491 2.062103 -0.321781 +v 2.357664 1.540053 0.040054 +v 2.252009 1.821781 -0.562102 +v 2.304836 1.459947 -0.040054 +vt 0.166798 0.787037 +vt 0.174242 0.777939 +vt 0.181686 0.787037 +vt 0.219697 0.814815 +vt 0.181818 0.796296 +vt 0.219697 0.787037 +vt 0.181818 0.805556 +vt 0.219697 0.787037 +vt 0.219697 0.814815 +vt 0.181818 0.805556 +vt 0.219697 0.787037 +vt 0.219697 0.814815 +vt 0.181818 0.805556 +vt 0.219697 0.787037 +vt 0.219697 0.814815 +vt 0.179506 0.793470 +vt 0.174242 0.796135 +vt 0.168979 0.793470 +vt 0.168979 0.780604 +vt 0.179506 0.780604 +vt 0.181818 0.805556 +vt 0.181818 0.796296 +vt 0.181818 0.796296 +vt 0.181818 0.796296 +vt 0.212121 0.777778 +vt 0.204545 0.787037 +vt 0.204545 0.777778 +vt 0.189394 0.777778 +vt 0.181818 0.787037 +vt 0.181818 0.777778 +vt 0.234848 0.777778 +vt 0.227273 0.787037 +vt 0.227273 0.777778 +vt 0.219697 0.777778 +vt 0.212121 0.787037 +vt 0.196970 0.787037 +vt 0.196970 0.777778 +vt 0.189394 0.787037 +vt 0.242424 0.777778 +vt 0.234848 0.787037 +vt 0.219697 0.787037 +vt 0.242424 0.787037 +vn 1.0000 0.0000 0.0000 +vn 0.9063 0.2988 -0.2988 +vn 0.9063 0.2988 0.2988 +vn 0.9063 -0.2988 0.2988 +vn 0.9063 -0.2988 -0.2988 +vn 0.0000 1.0000 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.0000 -0.7071 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.0000 -1.0000 +s off +f 53/73/15 55/74/15 49/75/15 +f 57/76/16 60/77/16 59/78/16 +f 62/79/17 63/80/17 61/81/17 +f 66/82/18 67/83/18 65/84/18 +f 70/85/19 71/86/19 69/87/19 +f 49/75/15 50/88/15 51/89/15 +f 51/89/15 52/90/15 53/73/15 +f 53/73/15 54/91/15 55/74/15 +f 55/74/15 56/92/15 49/75/15 +f 49/75/15 51/89/15 53/73/15 +f 57/76/16 58/93/16 60/77/16 +f 62/79/17 64/94/17 63/80/17 +f 66/82/18 68/95/18 67/83/18 +f 70/85/19 72/96/19 71/86/19 +s 1 +f 43/97/20 50/98/21 42/99/21 +f 48/100/22 55/101/23 47/102/23 +f 46/103/24 53/104/25 45/105/25 +f 44/106/26 51/107/20 43/97/20 +f 42/99/21 49/108/27 41/109/27 +f 41/109/27 56/110/22 48/100/22 +f 47/111/23 54/112/24 46/103/24 +f 45/105/25 52/113/26 44/106/26 +f 43/97/20 51/107/20 50/98/21 +f 48/100/22 56/110/22 55/101/23 +f 46/103/24 54/112/24 53/104/25 +f 44/106/26 52/113/26 51/107/20 +f 42/99/21 50/98/21 49/108/27 +f 41/109/27 49/108/27 56/110/22 +f 47/111/23 55/114/23 54/112/24 +f 45/105/25 53/104/25 52/113/26 +o Compressor +v -1.500000 0.000000 1.500000 +v 2.000000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 2.000000 0.000000 -1.500000 +v -1.500000 1.000000 -1.500000 +v -1.500000 1.000000 1.500000 +v 1.000000 1.000000 1.500000 +v 1.000000 1.000000 -1.500000 +v 1.000000 3.000000 1.500000 +v 2.000000 3.000000 1.500000 +v 2.000000 3.000000 -1.500000 +v 1.000000 3.000000 -1.500000 +v -0.250000 1.000000 -1.000000 +v 0.250000 1.000000 -1.000000 +v -0.250000 1.000000 -1.500000 +v 0.250000 1.000000 -1.500000 +v -0.250000 8.500000 -1.500000 +v -0.250000 8.500000 -1.000000 +v 0.250000 8.500000 -1.000000 +v 0.250000 8.500000 -1.500000 +v -0.250000 1.000000 1.500000 +v 0.250000 1.000000 1.500000 +v -0.250000 1.000000 1.000000 +v 0.250000 1.000000 1.000000 +v -0.250000 8.500000 1.000000 +v -0.250000 8.500000 1.500000 +v 0.250000 8.500000 1.500000 +v 0.250000 8.500000 1.000000 +v 0.000000 1.000000 -1.250000 +v -0.883883 1.000000 -0.883883 +v -1.250000 1.000000 0.000000 +v -0.883883 1.000000 0.883883 +v 0.000000 1.000000 1.250000 +v 0.883884 1.000000 0.883883 +v 1.250000 1.000000 -0.000000 +v 0.883884 1.000000 -0.883883 +v 0.000000 3.500000 -1.250000 +v -0.883883 3.500000 -0.883883 +v -1.250000 3.500000 0.000000 +v -0.883883 3.500000 0.883883 +v 0.000000 3.500000 1.250000 +v 0.883884 3.500000 0.883883 +v 1.250000 3.500000 -0.000000 +v 0.883884 3.500000 -0.883883 +v 0.000000 4.000000 -1.000000 +v -0.707107 4.000000 -0.707107 +v -1.000000 4.000000 0.000000 +v -0.707107 4.000000 0.707107 +v 0.000000 4.000000 1.000000 +v 0.707107 4.000000 0.707107 +v 1.000000 4.000000 -0.000000 +v 0.707107 4.000000 -0.707107 +v 1.000000 2.875000 -1.187500 +v 1.000000 2.875000 -1.312500 +v 1.000000 2.625000 -1.187500 +v 1.000000 2.625000 -1.312500 +v -0.750000 2.875000 -1.187500 +v -0.750000 2.875000 -1.312500 +v -0.562500 2.625000 -1.187500 +v -0.562500 2.625000 -1.312500 +v -1.250000 1.000000 -1.187500 +v -1.250000 1.000000 -1.312500 +v -1.500000 1.000000 -1.187500 +v -1.500000 1.000000 -1.312500 +v 1.000000 2.875000 1.312500 +v 1.000000 2.875000 1.187500 +v 1.000000 2.625000 1.312500 +v 1.000000 2.625000 1.187500 +v -0.750000 2.875000 1.312500 +v -0.750000 2.875000 1.187500 +v -0.562500 2.625000 1.312500 +v -0.562500 2.625000 1.187500 +v -1.250000 1.000000 1.312500 +v -1.250000 1.000000 1.187500 +v -1.500000 1.000000 1.312500 +v -1.500000 1.000000 1.187500 +v 2.000000 2.500000 1.000000 +v 2.000000 0.500000 1.000000 +v 2.000000 2.500000 -1.000000 +v 2.000000 0.500000 -1.000000 +v 2.250000 2.500000 -1.000000 +v 2.250000 2.500000 1.000000 +v 2.250000 0.500000 1.000000 +v 2.250000 0.500000 -1.000000 +v 2.250000 1.500000 -0.750000 +v 2.250000 2.030330 -0.530330 +v 2.250000 2.250000 0.000000 +v 2.250000 2.030330 0.530330 +v 2.250000 1.500000 0.750000 +v 2.250000 0.969670 0.530330 +v 2.250000 0.750000 -0.000000 +v 2.250000 0.969670 -0.530330 +v 2.250000 1.500000 -1.000000 +v 2.250000 2.207107 -0.707107 +v 2.250000 2.500000 0.000000 +v 2.250000 2.207107 0.707107 +v 2.250000 1.500000 1.000000 +v 2.250000 0.792893 0.707107 +v 2.250000 0.500000 -0.000000 +v 2.250000 0.792893 -0.707107 +v 2.500000 2.030330 -0.530330 +v 2.500000 1.500000 -0.750000 +v 2.500000 2.250000 0.000000 +v 2.500000 2.030330 0.530330 +v 2.500000 1.500000 0.750000 +v 2.500000 0.969670 0.530330 +v 2.500000 0.750000 -0.000000 +v 2.500000 0.969670 -0.530330 +v 2.500000 2.207107 -0.707107 +v 2.500000 1.500000 -1.000000 +v 2.500000 2.500000 0.000000 +v 2.500000 2.207107 0.707107 +v 2.500000 1.500000 1.000000 +v 2.500000 0.792893 0.707107 +v 2.500000 0.500000 -0.000000 +v 2.500000 0.792893 -0.707107 +v 2.437500 1.562500 0.750000 +v 2.437500 1.437500 0.750000 +v 2.437500 1.562500 -0.750000 +v 2.437500 1.437500 -0.750000 +v 2.437500 1.937500 0.750000 +v 2.437500 1.812500 0.750000 +v 2.437500 1.937500 -0.750000 +v 2.437500 1.812500 -0.750000 +v 2.437500 1.187500 0.750000 +v 2.437500 1.062500 0.750000 +v 2.437500 1.187500 -0.750000 +v 2.437500 1.062500 -0.750000 +v 1.000000 1.750000 -1.375000 +v 1.000000 1.838388 -1.338388 +v 1.000000 1.875000 -1.250000 +v 1.000000 1.838388 -1.161612 +v 1.000000 1.750000 -1.125000 +v 1.000000 1.661612 -1.161612 +v 1.000000 1.625000 -1.250000 +v 1.000000 1.661612 -1.338388 +v -0.500000 1.750000 -1.375000 +v -0.500000 1.838388 -1.338388 +v -0.500000 1.875000 -1.250000 +v -0.500000 1.838388 -1.161612 +v -0.500000 1.750000 -1.125000 +v -0.500000 1.661612 -1.161612 +v -0.500000 1.625000 -1.250000 +v -0.500000 1.661612 -1.338388 +v -0.676777 1.750000 -1.301777 +v -0.650888 1.838388 -1.275888 +v -0.588388 1.875000 -1.213388 +v -0.525888 1.838388 -1.150888 +v -0.525888 1.661612 -1.150888 +v -0.588388 1.625000 -1.213388 +v -0.650888 1.661612 -1.275888 +v -0.750000 1.750000 -1.125000 +v -0.713388 1.838388 -1.125000 +v -0.625000 1.875000 -1.125000 +v -0.536612 1.838388 -1.125000 +v -0.536612 1.661612 -1.125000 +v -0.625000 1.625000 -1.125000 +v -0.713388 1.661612 -1.125000 +v -0.500000 1.750000 -0.875000 +v -0.750000 1.750000 -0.875000 +v -0.713388 1.838388 -0.875000 +v -0.625000 1.875000 -0.875000 +v -0.536612 1.838388 -0.875000 +v -0.536612 1.661612 -0.875000 +v -0.625000 1.625000 -0.875000 +v -0.713388 1.661612 -0.875000 +v 1.000000 1.250000 -1.375000 +v 1.000000 1.338388 -1.338388 +v 1.000000 1.375000 -1.250000 +v 1.000000 1.338388 -1.161612 +v 1.000000 1.250000 -1.125000 +v 1.000000 1.161612 -1.161612 +v 1.000000 1.125000 -1.250000 +v 1.000000 1.161612 -1.338388 +v -0.500000 1.250000 -1.375000 +v -0.500000 1.338388 -1.338388 +v -0.500000 1.375000 -1.250000 +v -0.500000 1.338388 -1.161612 +v -0.500000 1.250000 -1.125000 +v -0.500000 1.161612 -1.161612 +v -0.500000 1.125000 -1.250000 +v -0.500000 1.161612 -1.338388 +v -0.676777 1.250000 -1.301777 +v -0.650888 1.338388 -1.275888 +v -0.588388 1.375000 -1.213388 +v -0.525888 1.338388 -1.150888 +v -0.525888 1.161612 -1.150888 +v -0.588388 1.125000 -1.213388 +v -0.650888 1.161612 -1.275888 +v -0.750000 1.250000 -1.125000 +v -0.713388 1.338388 -1.125000 +v -0.625000 1.375000 -1.125000 +v -0.536612 1.338388 -1.125000 +v -0.536612 1.161612 -1.125000 +v -0.625000 1.125000 -1.125000 +v -0.713388 1.161612 -1.125000 +v -0.500000 1.250000 -0.875000 +v -0.750000 1.250000 -0.875000 +v -0.713388 1.338388 -0.875000 +v -0.625000 1.375000 -0.875000 +v -0.536612 1.338388 -0.875000 +v -0.536612 1.161612 -0.875000 +v -0.625000 1.125000 -0.875000 +v -0.713388 1.161612 -0.875000 +v 1.000000 2.250000 -1.375000 +v 1.000000 2.338388 -1.338388 +v 1.000000 2.375000 -1.250000 +v 1.000000 2.338388 -1.161612 +v 1.000000 2.250000 -1.125000 +v 1.000000 2.161612 -1.161612 +v 1.000000 2.125000 -1.250000 +v 1.000000 2.161612 -1.338388 +v -0.500000 2.250000 -1.375000 +v -0.500000 2.338388 -1.338388 +v -0.500000 2.375000 -1.250000 +v -0.500000 2.338388 -1.161612 +v -0.500000 2.250000 -1.125000 +v -0.500000 2.161612 -1.161612 +v -0.500000 2.125000 -1.250000 +v -0.500000 2.161612 -1.338388 +v -0.676777 2.250000 -1.301777 +v -0.650888 2.338388 -1.275888 +v -0.588388 2.375000 -1.213388 +v -0.525888 2.338388 -1.150888 +v -0.525888 2.161612 -1.150888 +v -0.588388 2.125000 -1.213388 +v -0.650888 2.161612 -1.275888 +v -0.750000 2.250000 -1.125000 +v -0.713388 2.338388 -1.125000 +v -0.625000 2.375000 -1.125000 +v -0.536612 2.338388 -1.125000 +v -0.536612 2.161612 -1.125000 +v -0.625000 2.125000 -1.125000 +v -0.713388 2.161612 -1.125000 +v -0.500000 2.250000 -0.875000 +v -0.750000 2.250000 -0.875000 +v -0.713388 2.338388 -0.875000 +v -0.625000 2.375000 -0.875000 +v -0.536612 2.338388 -0.875000 +v -0.536612 2.161612 -0.875000 +v -0.625000 2.125000 -0.875000 +v -0.713388 2.161612 -0.875000 +v 1.000000 1.750000 1.375000 +v 1.000000 1.838388 1.338388 +v 1.000000 1.875000 1.250000 +v 1.000000 1.838388 1.161612 +v 1.000000 1.750000 1.125000 +v 1.000000 1.661612 1.161612 +v 1.000000 1.625000 1.250000 +v 1.000000 1.661612 1.338388 +v -0.500000 1.750000 1.375000 +v -0.500000 1.838388 1.338388 +v -0.500000 1.875000 1.250000 +v -0.500000 1.838388 1.161612 +v -0.500000 1.750000 1.125000 +v -0.500000 1.661612 1.161612 +v -0.500000 1.625000 1.250000 +v -0.500000 1.661612 1.338388 +v -0.676777 1.750000 1.301777 +v -0.650888 1.838388 1.275888 +v -0.588388 1.875000 1.213388 +v -0.525888 1.838388 1.150888 +v -0.525888 1.661612 1.150888 +v -0.588388 1.625000 1.213388 +v -0.650888 1.661612 1.275888 +v -0.750000 1.750000 1.125000 +v -0.713388 1.838388 1.125000 +v -0.625000 1.875000 1.125000 +v -0.536612 1.838388 1.125000 +v -0.536612 1.661612 1.125000 +v -0.625000 1.625000 1.125000 +v -0.713388 1.661612 1.125000 +v -0.500000 1.750000 0.875000 +v -0.750000 1.750000 0.875000 +v -0.713388 1.838388 0.875000 +v -0.625000 1.875000 0.875000 +v -0.536612 1.838388 0.875000 +v -0.536612 1.661612 0.875000 +v -0.625000 1.625000 0.875000 +v -0.713388 1.661612 0.875000 +v 1.000000 1.250000 1.375000 +v 1.000000 1.338388 1.338388 +v 1.000000 1.375000 1.250000 +v 1.000000 1.338388 1.161612 +v 1.000000 1.250000 1.125000 +v 1.000000 1.161612 1.161612 +v 1.000000 1.125000 1.250000 +v 1.000000 1.161612 1.338388 +v -0.500000 1.250000 1.375000 +v -0.500000 1.338388 1.338388 +v -0.500000 1.375000 1.250000 +v -0.500000 1.338388 1.161612 +v -0.500000 1.250000 1.125000 +v -0.500000 1.161612 1.161612 +v -0.500000 1.125000 1.250000 +v -0.500000 1.161612 1.338388 +v -0.676777 1.250000 1.301777 +v -0.650888 1.338388 1.275888 +v -0.588388 1.375000 1.213388 +v -0.525888 1.338388 1.150888 +v -0.525888 1.161612 1.150888 +v -0.588388 1.125000 1.213388 +v -0.650888 1.161612 1.275888 +v -0.750000 1.250000 1.125000 +v -0.713388 1.338388 1.125000 +v -0.625000 1.375000 1.125000 +v -0.536612 1.338388 1.125000 +v -0.536612 1.161612 1.125000 +v -0.625000 1.125000 1.125000 +v -0.713388 1.161612 1.125000 +v -0.500000 1.250000 0.875000 +v -0.750000 1.250000 0.875000 +v -0.713388 1.338388 0.875000 +v -0.625000 1.375000 0.875000 +v -0.536612 1.338388 0.875000 +v -0.536612 1.161612 0.875000 +v -0.625000 1.125000 0.875000 +v -0.713388 1.161612 0.875000 +v 1.000000 2.250000 1.375000 +v 1.000000 2.338388 1.338388 +v 1.000000 2.375000 1.250000 +v 1.000000 2.338388 1.161612 +v 1.000000 2.250000 1.125000 +v 1.000000 2.161612 1.161612 +v 1.000000 2.125000 1.250000 +v 1.000000 2.161612 1.338388 +v -0.500000 2.250000 1.375000 +v -0.500000 2.338388 1.338388 +v -0.500000 2.375000 1.250000 +v -0.500000 2.338388 1.161612 +v -0.500000 2.250000 1.125000 +v -0.500000 2.161612 1.161612 +v -0.500000 2.125000 1.250000 +v -0.500000 2.161612 1.338388 +v -0.676777 2.250000 1.301777 +v -0.650888 2.338388 1.275888 +v -0.588388 2.375000 1.213388 +v -0.525888 2.338388 1.150888 +v -0.525888 2.161612 1.150888 +v -0.588388 2.125000 1.213388 +v -0.650888 2.161612 1.275888 +v -0.750000 2.250000 1.125000 +v -0.713388 2.338388 1.125000 +v -0.625000 2.375000 1.125000 +v -0.536612 2.338388 1.125000 +v -0.536612 2.161612 1.125000 +v -0.625000 2.125000 1.125000 +v -0.713388 2.161612 1.125000 +v -0.500000 2.250000 0.875000 +v -0.750000 2.250000 0.875000 +v -0.713388 2.338388 0.875000 +v -0.625000 2.375000 0.875000 +v -0.536612 2.338388 0.875000 +v -0.536612 2.161612 0.875000 +v -0.625000 2.125000 0.875000 +v -0.713388 2.161612 0.875000 +v -1.375000 2.750000 0.500000 +v -1.375000 1.750000 0.500000 +v -1.375000 2.750000 -0.500000 +v -1.375000 1.750000 -0.500000 +v -1.000000 2.750000 -0.500000 +v -1.000000 2.750000 0.500000 +v -1.000000 1.750000 0.500000 +v -1.000000 1.750000 -0.500000 +v 1.750000 3.000000 -0.125000 +v 1.661612 3.000000 -0.088388 +v 1.625000 3.000000 0.000000 +v 1.661612 3.000000 0.088388 +v 1.750000 3.000000 0.125000 +v 1.838388 3.000000 0.088388 +v 1.875000 3.000000 -0.000000 +v 1.838388 3.000000 -0.088388 +v 1.750000 3.625000 -0.125000 +v 1.661612 3.625000 -0.088388 +v 1.625000 3.625000 0.000000 +v 1.661612 3.625000 0.088388 +v 1.750000 3.625000 0.125000 +v 1.838388 3.625000 0.088388 +v 1.875000 3.625000 -0.000000 +v 1.838388 3.625000 -0.088388 +v 1.713388 3.713388 -0.125000 +v 1.650888 3.650888 -0.088388 +v 1.650888 3.650888 0.088388 +v 1.713388 3.713388 0.125000 +v 1.775888 3.775888 0.088388 +v 1.801777 3.801777 -0.000000 +v 1.775888 3.775888 -0.088388 +v 1.625000 3.750000 -0.125000 +v 1.625000 3.661612 -0.088388 +v 1.625000 3.661612 0.088388 +v 1.625000 3.750000 0.125000 +v 1.625000 3.838388 0.088388 +v 1.625000 3.875000 -0.000000 +v 1.625000 3.838388 -0.088388 +v 1.000000 3.625000 0.000000 +v 1.000000 3.750000 -0.125000 +v 1.000000 3.661612 -0.088388 +v 1.000000 3.661612 0.088388 +v 1.000000 3.750000 0.125000 +v 1.000000 3.838388 0.088388 +v 1.000000 3.875000 -0.000000 +v 1.000000 3.838388 -0.088388 +v 1.750000 3.000000 -0.625000 +v 1.661612 3.000000 -0.588388 +v 1.625000 3.000000 -0.500000 +v 1.661612 3.000000 -0.411612 +v 1.750000 3.000000 -0.375000 +v 1.838388 3.000000 -0.411612 +v 1.875000 3.000000 -0.500000 +v 1.838388 3.000000 -0.588388 +v 1.750000 3.625000 -0.625000 +v 1.661612 3.625000 -0.588388 +v 1.625000 3.625000 -0.500000 +v 1.661612 3.625000 -0.411612 +v 1.750000 3.625000 -0.375000 +v 1.838388 3.625000 -0.411612 +v 1.875000 3.625000 -0.500000 +v 1.838388 3.625000 -0.588388 +v 1.713388 3.713388 -0.625000 +v 1.650888 3.650888 -0.588388 +v 1.650888 3.650888 -0.411612 +v 1.713388 3.713388 -0.375000 +v 1.775888 3.775888 -0.411612 +v 1.801777 3.801777 -0.500000 +v 1.775888 3.775888 -0.588388 +v 1.625000 3.750000 -0.625000 +v 1.625000 3.661612 -0.588388 +v 1.625000 3.661612 -0.411612 +v 1.625000 3.750000 -0.375000 +v 1.625000 3.838388 -0.411612 +v 1.625000 3.875000 -0.500000 +v 1.625000 3.838388 -0.588388 +v 0.812500 3.625000 -0.500000 +v 0.812500 3.750000 -0.625000 +v 0.812500 3.661612 -0.588388 +v 0.812500 3.661612 -0.411612 +v 0.812500 3.750000 -0.375000 +v 0.812500 3.838388 -0.411612 +v 0.812500 3.875000 -0.500000 +v 0.812500 3.838388 -0.588388 +v 1.750000 3.000000 0.375000 +v 1.661612 3.000000 0.411612 +v 1.625000 3.000000 0.500000 +v 1.661612 3.000000 0.588388 +v 1.750000 3.000000 0.625000 +v 1.838388 3.000000 0.588388 +v 1.875000 3.000000 0.500000 +v 1.838388 3.000000 0.411612 +v 1.750000 3.625000 0.375000 +v 1.661612 3.625000 0.411612 +v 1.625000 3.625000 0.500000 +v 1.661612 3.625000 0.588388 +v 1.750000 3.625000 0.625000 +v 1.838388 3.625000 0.588388 +v 1.875000 3.625000 0.500000 +v 1.838388 3.625000 0.411612 +v 1.713388 3.713388 0.375000 +v 1.650888 3.650888 0.411612 +v 1.650888 3.650888 0.588388 +v 1.713388 3.713388 0.625000 +v 1.775888 3.775888 0.588388 +v 1.801777 3.801777 0.500000 +v 1.775888 3.775888 0.411612 +v 1.625000 3.750000 0.375000 +v 1.625000 3.661612 0.411612 +v 1.625000 3.661612 0.588388 +v 1.625000 3.750000 0.625000 +v 1.625000 3.838388 0.588388 +v 1.625000 3.875000 0.500000 +v 1.625000 3.838388 0.411612 +v 0.812500 3.625000 0.500000 +v 0.812500 3.750000 0.375000 +v 0.812500 3.661612 0.411612 +v 0.812500 3.661612 0.588388 +v 0.812500 3.750000 0.625000 +v 0.812500 3.838388 0.588388 +v 0.812500 3.875000 0.500000 +v 0.812500 3.838388 0.411612 +vt 0.515152 0.259259 +vt 0.333333 0.518519 +vt 0.333333 0.259259 +vt 0.575758 0.592593 +vt 0.515152 0.740741 +vt 0.515152 0.518519 +vt 0.121212 0.518519 +vt 0.272727 0.592593 +vt 0.121212 0.592593 +vt 0.515152 0.185185 +vt 0.333333 0.000000 +vt 0.333333 0.185185 +vt 0.333333 0.740741 +vt 0.515152 0.814815 +vt 0.333333 0.814815 +vt 0.363636 0.555556 +vt 0.333333 0.962963 +vt 0.515152 0.962963 +vt 0.909091 0.777778 +vt 0.939394 0.814815 +vt 0.909091 0.814815 +vt 0.787879 0.777778 +vt 0.818182 0.814815 +vt 0.787879 0.814815 +vt 0.878788 0.222222 +vt 0.848485 0.777778 +vt 0.848485 0.222222 +vt 0.818182 0.777778 +vt 0.818182 0.222222 +vt 0.787879 0.222222 +vt 0.757576 0.777778 +vt 0.757576 0.222222 +vt 1.000000 0.222222 +vt 0.969697 0.777778 +vt 0.969697 0.222222 +vt 0.939394 0.777778 +vt 0.939394 0.222222 +vt 0.909091 0.222222 +vt 0.878788 0.777778 +vt 0.878788 0.222222 +vt 0.575758 0.222250 +vt 0.618597 0.243937 +vt 0.636341 0.296296 +vt 0.515152 0.462963 +vt 0.609848 0.444444 +vt 0.621212 0.462963 +vt 0.515152 0.472222 +vt 0.609848 0.490741 +vt 0.515152 0.490741 +vt 0.515152 0.435185 +vt 0.515152 0.444444 +vt 0.628788 0.435185 +vt 0.734848 0.444444 +vt 0.628788 0.444444 +vt 0.742424 0.472222 +vt 0.628788 0.490741 +vt 0.621212 0.472222 +vt 0.742424 0.462963 +vt 0.515152 0.398148 +vt 0.609848 0.379630 +vt 0.621212 0.398148 +vt 0.515152 0.407407 +vt 0.609848 0.425926 +vt 0.515152 0.425926 +vt 0.609848 0.435185 +vt 0.515152 0.435185 +vt 0.628788 0.425926 +vt 0.734848 0.435185 +vt 0.628788 0.435185 +vt 0.742424 0.407407 +vt 0.621212 0.407407 +vt 0.628788 0.379630 +vt 0.742424 0.398148 +vt 0.272727 0.740741 +vt 0.727273 0.518519 +vt 0.727273 0.592593 +vt 0.257576 0.592593 +vt 0.136364 0.611111 +vt 0.136364 0.592593 +vt 0.484848 0.703704 +vt 0.257576 0.759259 +vt 0.136364 0.759259 +vt 0.136364 0.777778 +vt 0.257576 0.777778 +vt 0.272727 0.759259 +vt 0.257576 0.611111 +vt 0.272727 0.611111 +vt 0.121212 0.611111 +vt 0.121212 0.759259 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.128788 0.814815 +vt 0.166667 0.796296 +vt 0.159091 0.814815 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.121212 0.842593 +vt 0.212121 0.851852 +vt 0.121212 0.851852 +vt 0.121212 0.851852 +vt 0.212121 0.861111 +vt 0.121212 0.861111 +vt 0.121212 0.833333 +vt 0.212121 0.842593 +vt 0.121212 0.842593 +vt 0.143939 0.962963 +vt 0.204545 0.888889 +vt 0.204545 0.962963 +vt 0.143939 0.888889 +vt 0.204545 0.861111 +vt 0.143939 0.990741 +vt 0.121212 0.888889 +vt 0.227273 0.962963 +vt 0.575758 0.740741 +vt 0.515152 0.000000 +vt 0.484848 0.555556 +vt 0.878788 0.777778 +vt 1.000000 0.777778 +vt 0.618597 0.348655 +vt 0.515174 0.296296 +vt 0.575758 0.370343 +vt 0.532919 0.348655 +vt 0.532919 0.243937 +vt 0.609848 0.435185 +vt 0.734848 0.435185 +vt 0.734848 0.490741 +vt 0.515152 0.379630 +vt 0.734848 0.425926 +vt 0.734848 0.379630 +vt 0.363636 0.703704 +vt 0.166667 0.796296 +vt 0.121212 0.796296 +vt 0.166667 0.796296 +vt 0.166667 0.796296 +vt 0.166667 0.796296 +vt 0.166667 0.796296 +vt 0.166667 0.796296 +vt 0.166667 0.796296 +vt 0.212121 0.842593 +vt 0.212121 0.851852 +vt 0.212121 0.833333 +vt 0.143939 0.861111 +vt 0.204545 0.990741 +vt 0.121212 0.962963 +vt 0.227273 0.888889 +vt 0.818182 -0.000000 +vt 0.757576 0.185185 +vt 0.757576 -0.000000 +vt 0.696970 -0.000000 +vt 0.636364 0.185185 +vt 0.636364 0.000000 +vt 0.575758 0.185185 +vt 0.575758 0.000000 +vt 1.000000 -0.000000 +vt 0.939394 0.185185 +vt 0.939394 -0.000000 +vt 0.878788 -0.000000 +vt 0.818182 0.185185 +vt 0.696970 0.185185 +vt 0.515152 0.185185 +vt 0.515152 0.000000 +vt 0.878788 0.185185 +vt 0.750000 0.222222 +vt 0.704545 0.222222 +vt 0.810606 0.222222 +vt 0.765152 0.222222 +vt 0.825758 0.222222 +vt 0.886364 0.222222 +vt 1.000000 0.185185 +vt 0.946970 0.222222 +vt 0.522727 0.222222 +vt 0.628788 0.222222 +vt 0.583333 0.222222 +vt 0.643939 0.222222 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.757576 0.333333 +vt 0.750000 0.222222 +vt 0.757576 0.222222 +vt 0.712121 0.333333 +vt 0.704545 0.222222 +vt 0.712121 0.222222 +vt 0.727273 0.333333 +vt 0.719697 0.222222 +vt 0.727273 0.222222 +vt 0.734848 0.333333 +vt 0.734848 0.222222 +vt 0.750000 0.333333 +vt 0.742424 0.222222 +vt 0.704545 0.333333 +vt 0.696970 0.222222 +vt 0.719697 0.333333 +vt 0.742424 0.333333 +vt 0.734848 0.347222 +vt 0.727273 0.347222 +vt 0.742424 0.337963 +vt 0.750000 0.347222 +vt 0.742424 0.347222 +vt 0.712121 0.347222 +vt 0.712121 0.337963 +vt 0.704545 0.347222 +vt 0.704545 0.342593 +vt 0.719697 0.347222 +vt 0.712121 0.356481 +vt 0.704545 0.351852 +vt 0.727273 0.361111 +vt 0.719697 0.361111 +vt 0.742424 0.356481 +vt 0.734848 0.361111 +vt 0.757576 0.347222 +vt 0.750000 0.342593 +vt 0.750000 0.351852 +vt 0.696970 0.347222 +vt 0.719697 0.379630 +vt 0.704545 0.361111 +vt 0.696970 0.379630 +vt 0.696970 0.361111 +vt 0.727273 0.379630 +vt 0.757576 0.361111 +vt 0.750000 0.379630 +vt 0.750000 0.361111 +vt 0.742424 0.379630 +vt 0.742424 0.361111 +vt 0.712121 0.379630 +vt 0.712121 0.361111 +vt 0.734848 0.379630 +vt 0.704545 0.379630 +vt 0.757576 0.333333 +vt 0.750000 0.222222 +vt 0.757576 0.222222 +vt 0.712121 0.333333 +vt 0.704545 0.222222 +vt 0.712121 0.222222 +vt 0.727273 0.333333 +vt 0.719697 0.222222 +vt 0.727273 0.222222 +vt 0.734848 0.333333 +vt 0.734848 0.222222 +vt 0.750000 0.333333 +vt 0.742424 0.222222 +vt 0.704545 0.333333 +vt 0.696970 0.222222 +vt 0.719697 0.333333 +vt 0.742424 0.333333 +vt 0.734848 0.347222 +vt 0.727273 0.347222 +vt 0.742424 0.337963 +vt 0.750000 0.347222 +vt 0.742424 0.347222 +vt 0.712121 0.347222 +vt 0.712121 0.337963 +vt 0.704545 0.347222 +vt 0.704545 0.342593 +vt 0.719697 0.347222 +vt 0.712121 0.356481 +vt 0.704545 0.351852 +vt 0.727273 0.361111 +vt 0.719697 0.361111 +vt 0.742424 0.356481 +vt 0.734848 0.361111 +vt 0.757576 0.347222 +vt 0.750000 0.342593 +vt 0.750000 0.351852 +vt 0.696970 0.347222 +vt 0.719697 0.379630 +vt 0.704545 0.361111 +vt 0.696970 0.379630 +vt 0.696970 0.361111 +vt 0.727273 0.379630 +vt 0.757576 0.361111 +vt 0.750000 0.379630 +vt 0.750000 0.361111 +vt 0.742424 0.379630 +vt 0.742424 0.361111 +vt 0.712121 0.379630 +vt 0.712121 0.361111 +vt 0.734848 0.379630 +vt 0.704545 0.379630 +vt 0.757576 0.333333 +vt 0.750000 0.222222 +vt 0.757576 0.222222 +vt 0.712121 0.333333 +vt 0.704545 0.222222 +vt 0.712121 0.222222 +vt 0.727273 0.333333 +vt 0.719697 0.222222 +vt 0.727273 0.222222 +vt 0.734848 0.333333 +vt 0.734848 0.222222 +vt 0.750000 0.333333 +vt 0.742424 0.222222 +vt 0.704545 0.333333 +vt 0.696970 0.222222 +vt 0.719697 0.333333 +vt 0.742424 0.333333 +vt 0.734848 0.347222 +vt 0.727273 0.347222 +vt 0.742424 0.337963 +vt 0.750000 0.347222 +vt 0.742424 0.347222 +vt 0.712121 0.347222 +vt 0.712121 0.337963 +vt 0.704545 0.347222 +vt 0.704545 0.342593 +vt 0.719697 0.347222 +vt 0.712121 0.356481 +vt 0.704545 0.351852 +vt 0.727273 0.361111 +vt 0.719697 0.361111 +vt 0.742424 0.356481 +vt 0.734848 0.361111 +vt 0.757576 0.347222 +vt 0.750000 0.342593 +vt 0.750000 0.351852 +vt 0.696970 0.347222 +vt 0.719697 0.379630 +vt 0.704545 0.361111 +vt 0.696970 0.379630 +vt 0.696970 0.361111 +vt 0.727273 0.379630 +vt 0.757576 0.361111 +vt 0.750000 0.379630 +vt 0.750000 0.361111 +vt 0.742424 0.379630 +vt 0.742424 0.361111 +vt 0.712121 0.379630 +vt 0.712121 0.361111 +vt 0.734848 0.379630 +vt 0.704545 0.379630 +vt 0.704545 0.222222 +vt 0.696970 0.333333 +vt 0.696970 0.222222 +vt 0.750000 0.222222 +vt 0.742424 0.333333 +vt 0.742424 0.222222 +vt 0.734848 0.222222 +vt 0.727273 0.333333 +vt 0.727273 0.222222 +vt 0.719697 0.333333 +vt 0.719697 0.222222 +vt 0.712121 0.222222 +vt 0.704545 0.333333 +vt 0.757576 0.222222 +vt 0.750000 0.333333 +vt 0.734848 0.333333 +vt 0.712121 0.333333 +vt 0.719697 0.347222 +vt 0.712121 0.337963 +vt 0.704545 0.347222 +vt 0.704545 0.342593 +vt 0.742424 0.347222 +vt 0.742424 0.337963 +vt 0.712121 0.347222 +vt 0.750000 0.347222 +vt 0.750000 0.342593 +vt 0.734848 0.347222 +vt 0.742424 0.356481 +vt 0.734848 0.361111 +vt 0.727273 0.347222 +vt 0.719697 0.361111 +vt 0.712121 0.356481 +vt 0.696970 0.347222 +vt 0.704545 0.351852 +vt 0.757576 0.347222 +vt 0.750000 0.351852 +vt 0.734848 0.379630 +vt 0.727273 0.361111 +vt 0.757576 0.379630 +vt 0.750000 0.361111 +vt 0.757576 0.361111 +vt 0.727273 0.379630 +vt 0.704545 0.379630 +vt 0.696970 0.361111 +vt 0.704545 0.361111 +vt 0.712121 0.379630 +vt 0.712121 0.361111 +vt 0.742424 0.379630 +vt 0.742424 0.361111 +vt 0.719697 0.379630 +vt 0.750000 0.379630 +vt 0.704545 0.222222 +vt 0.696970 0.333333 +vt 0.696970 0.222222 +vt 0.750000 0.222222 +vt 0.742424 0.333333 +vt 0.742424 0.222222 +vt 0.734848 0.222222 +vt 0.727273 0.333333 +vt 0.727273 0.222222 +vt 0.719697 0.333333 +vt 0.719697 0.222222 +vt 0.712121 0.222222 +vt 0.704545 0.333333 +vt 0.757576 0.222222 +vt 0.750000 0.333333 +vt 0.734848 0.333333 +vt 0.712121 0.333333 +vt 0.719697 0.347222 +vt 0.712121 0.337963 +vt 0.704545 0.347222 +vt 0.704545 0.342593 +vt 0.742424 0.347222 +vt 0.742424 0.337963 +vt 0.712121 0.347222 +vt 0.750000 0.347222 +vt 0.750000 0.342593 +vt 0.734848 0.347222 +vt 0.742424 0.356481 +vt 0.734848 0.361111 +vt 0.727273 0.347222 +vt 0.719697 0.361111 +vt 0.712121 0.356481 +vt 0.696970 0.347222 +vt 0.704545 0.351852 +vt 0.757576 0.347222 +vt 0.750000 0.351852 +vt 0.734848 0.379630 +vt 0.727273 0.361111 +vt 0.757576 0.379630 +vt 0.750000 0.361111 +vt 0.757576 0.361111 +vt 0.727273 0.379630 +vt 0.704545 0.379630 +vt 0.696970 0.361111 +vt 0.704545 0.361111 +vt 0.712121 0.379630 +vt 0.712121 0.361111 +vt 0.742424 0.379630 +vt 0.742424 0.361111 +vt 0.719697 0.379630 +vt 0.750000 0.379630 +vt 0.704545 0.222222 +vt 0.696970 0.333333 +vt 0.696970 0.222222 +vt 0.750000 0.222222 +vt 0.742424 0.333333 +vt 0.742424 0.222222 +vt 0.734848 0.222222 +vt 0.727273 0.333333 +vt 0.727273 0.222222 +vt 0.719697 0.333333 +vt 0.719697 0.222222 +vt 0.712121 0.222222 +vt 0.704545 0.333333 +vt 0.757576 0.222222 +vt 0.750000 0.333333 +vt 0.734848 0.333333 +vt 0.712121 0.333333 +vt 0.719697 0.347222 +vt 0.712121 0.337963 +vt 0.704545 0.347222 +vt 0.704545 0.342593 +vt 0.742424 0.347222 +vt 0.742424 0.337963 +vt 0.712121 0.347222 +vt 0.750000 0.347222 +vt 0.750000 0.342593 +vt 0.734848 0.347222 +vt 0.742424 0.356481 +vt 0.734848 0.361111 +vt 0.727273 0.347222 +vt 0.719697 0.361111 +vt 0.712121 0.356481 +vt 0.696970 0.347222 +vt 0.704545 0.351852 +vt 0.757576 0.347222 +vt 0.750000 0.351852 +vt 0.734848 0.379630 +vt 0.727273 0.361111 +vt 0.757576 0.379630 +vt 0.750000 0.361111 +vt 0.757576 0.361111 +vt 0.727273 0.379630 +vt 0.704545 0.379630 +vt 0.696970 0.361111 +vt 0.704545 0.361111 +vt 0.712121 0.379630 +vt 0.712121 0.361111 +vt 0.742424 0.379630 +vt 0.742424 0.361111 +vt 0.719697 0.379630 +vt 0.750000 0.379630 +vt 0.696970 0.222222 +vt 0.689394 0.268519 +vt 0.689394 0.222222 +vt 0.674242 0.222222 +vt 0.666667 0.268519 +vt 0.666667 0.222222 +vt 0.659091 0.222222 +vt 0.651515 0.268519 +vt 0.651515 0.222222 +vt 0.643939 0.222222 +vt 0.636364 0.268519 +vt 0.636364 0.222222 +vt 0.681818 0.268519 +vt 0.681818 0.222222 +vt 0.674242 0.268519 +vt 0.659091 0.268519 +vt 0.643939 0.268519 +vt 0.651515 0.282407 +vt 0.651515 0.273148 +vt 0.681818 0.273148 +vt 0.689394 0.282407 +vt 0.681818 0.282407 +vt 0.674242 0.282407 +vt 0.666667 0.282407 +vt 0.659091 0.282407 +vt 0.643939 0.282407 +vt 0.643939 0.277778 +vt 0.666667 0.296296 +vt 0.651515 0.291667 +vt 0.689394 0.287037 +vt 0.681818 0.291667 +vt 0.674242 0.296296 +vt 0.659091 0.296296 +vt 0.643939 0.287037 +vt 0.636364 0.282407 +vt 0.689394 0.277778 +vt 0.696970 0.282407 +vt 0.666667 0.342593 +vt 0.651515 0.342593 +vt 0.651515 0.296296 +vt 0.689394 0.296296 +vt 0.681818 0.342593 +vt 0.681818 0.296296 +vt 0.696970 0.342593 +vt 0.689394 0.342593 +vt 0.674242 0.342593 +vt 0.643939 0.296296 +vt 0.636364 0.342593 +vt 0.636364 0.296296 +vt 0.659091 0.342593 +vt 0.643939 0.342593 +vt 0.696970 0.222222 +vt 0.689394 0.268519 +vt 0.689394 0.222222 +vt 0.674242 0.222222 +vt 0.666667 0.268519 +vt 0.666667 0.222222 +vt 0.659091 0.222222 +vt 0.651515 0.268519 +vt 0.651515 0.222222 +vt 0.643939 0.222222 +vt 0.636364 0.268519 +vt 0.636364 0.222222 +vt 0.681818 0.268519 +vt 0.681818 0.222222 +vt 0.674242 0.268519 +vt 0.659091 0.268519 +vt 0.643939 0.268519 +vt 0.651515 0.282407 +vt 0.651515 0.273148 +vt 0.681818 0.273148 +vt 0.689394 0.282407 +vt 0.681818 0.282407 +vt 0.674242 0.282407 +vt 0.666667 0.282407 +vt 0.659091 0.282407 +vt 0.643939 0.282407 +vt 0.643939 0.277778 +vt 0.666667 0.296296 +vt 0.659091 0.296296 +vt 0.651515 0.291667 +vt 0.681818 0.291667 +vt 0.674242 0.296296 +vt 0.643939 0.287037 +vt 0.636364 0.282407 +vt 0.689394 0.277778 +vt 0.696970 0.282407 +vt 0.689394 0.287037 +vt 0.666667 0.356481 +vt 0.651515 0.356481 +vt 0.651515 0.296296 +vt 0.689394 0.296296 +vt 0.681818 0.356481 +vt 0.681818 0.296296 +vt 0.696970 0.356481 +vt 0.689394 0.356481 +vt 0.674242 0.356481 +vt 0.643939 0.296296 +vt 0.636364 0.356481 +vt 0.636364 0.296296 +vt 0.659091 0.356481 +vt 0.643939 0.356481 +vt 0.696970 0.222222 +vt 0.689394 0.268519 +vt 0.689394 0.222222 +vt 0.674242 0.222222 +vt 0.666667 0.268519 +vt 0.666667 0.222222 +vt 0.659091 0.222222 +vt 0.651515 0.268519 +vt 0.651515 0.222222 +vt 0.643939 0.222222 +vt 0.636364 0.268519 +vt 0.636364 0.222222 +vt 0.681818 0.268519 +vt 0.681818 0.222222 +vt 0.674242 0.268519 +vt 0.659091 0.268519 +vt 0.643939 0.268519 +vt 0.651515 0.273148 +vt 0.659091 0.282407 +vt 0.651515 0.282407 +vt 0.681818 0.273148 +vt 0.689394 0.282407 +vt 0.681818 0.282407 +vt 0.674242 0.282407 +vt 0.666667 0.282407 +vt 0.643939 0.282407 +vt 0.643939 0.277778 +vt 0.666667 0.296296 +vt 0.651515 0.291667 +vt 0.681818 0.291667 +vt 0.674242 0.296296 +vt 0.659091 0.296296 +vt 0.643939 0.287037 +vt 0.636364 0.282407 +vt 0.689394 0.277778 +vt 0.696970 0.282407 +vt 0.689394 0.287037 +vt 0.666667 0.356481 +vt 0.651515 0.356481 +vt 0.651515 0.296296 +vt 0.689394 0.296296 +vt 0.681818 0.356481 +vt 0.681818 0.296296 +vt 0.696970 0.356481 +vt 0.689394 0.356481 +vt 0.674242 0.356481 +vt 0.643939 0.296296 +vt 0.636364 0.356481 +vt 0.636364 0.296296 +vt 0.659091 0.356481 +vt 0.643939 0.356481 +vt 0.871212 0.222222 +vt 0.931818 0.222222 +vt 0.992424 0.222222 +vt 0.568182 0.222222 +vt 0.689394 0.222222 +vt 0.696970 0.333333 +vt 0.757576 0.379630 +vt 0.696970 0.333333 +vt 0.757576 0.379630 +vt 0.696970 0.333333 +vt 0.757576 0.379630 +vt 0.757576 0.333333 +vt 0.696970 0.379630 +vt 0.757576 0.333333 +vt 0.696970 0.379630 +vt 0.757576 0.333333 +vt 0.696970 0.379630 +vt 0.696970 0.268519 +vt 0.696970 0.296296 +vt 0.696970 0.268519 +vt 0.696970 0.296296 +vt 0.696970 0.268519 +vt 0.696970 0.296296 +vn 0.0000 -1.0000 0.0000 +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.9210 -0.3896 0.0000 +vn -0.9285 0.3714 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.6325 0.4472 -0.6325 +vn -0.8944 0.4472 0.0000 +vn -0.6325 0.4472 0.6325 +vn 0.0000 0.4472 0.8944 +vn 0.6325 0.4472 0.6325 +vn 0.8944 0.4472 -0.0000 +vn 0.6325 0.4472 -0.6325 +vn 0.0000 0.4472 -0.8944 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn -0.0196 0.9987 -0.0473 +vn -0.1866 0.0000 -0.9824 +vn -0.1448 -0.6794 -0.7194 +vn 0.1363 -0.7263 0.6737 +vn 0.1363 0.7263 0.6737 +vn -0.1448 0.6794 -0.7194 +vn -0.0196 -0.9987 -0.0473 +vn -0.5294 -0.6630 -0.5294 +vn 0.4617 -0.7574 0.4617 +vn -0.0671 -0.9955 -0.0671 +vn -0.0671 0.9955 -0.0671 +vn 0.4617 0.7574 0.4617 +vn -0.5294 0.6630 -0.5294 +vn -0.0473 0.9987 -0.0196 +vn 0.6737 0.7263 0.1363 +vn -0.9824 -0.0000 -0.1866 +vn -0.7194 0.6794 -0.1448 +vn -0.0473 -0.9987 -0.0196 +vn -0.7194 -0.6794 -0.1448 +vn 0.6737 -0.7263 0.1363 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.0196 0.9987 0.0473 +vn -0.1866 0.0000 0.9824 +vn -0.1448 -0.6794 0.7194 +vn 0.1363 -0.7263 -0.6737 +vn 0.1363 0.7263 -0.6737 +vn -0.1448 0.6794 0.7194 +vn -0.0196 -0.9987 0.0473 +vn -0.5294 -0.6630 0.5294 +vn 0.4617 -0.7574 -0.4617 +vn -0.0671 0.9955 0.0671 +vn -0.0671 -0.9955 0.0671 +vn 0.4617 0.7574 -0.4617 +vn -0.5294 0.6630 0.5294 +vn -0.0473 0.9987 0.0196 +vn -0.7194 0.6794 0.1448 +vn -0.7194 -0.6794 0.1448 +vn -0.0473 -0.9987 0.0196 +vn 0.6737 -0.7263 -0.1363 +vn 0.6737 0.7263 -0.1363 +vn -0.9824 -0.0000 0.1866 +vn -0.6737 -0.1363 -0.7263 +vn 0.9824 0.1866 -0.0000 +vn 0.0473 0.0196 0.9987 +vn 0.0473 0.0196 -0.9987 +vn 0.7194 0.1448 -0.6794 +vn 0.7194 0.1448 0.6794 +vn -0.6737 -0.1363 0.7263 +vn 0.0671 0.0671 0.9955 +vn -0.4617 -0.4617 -0.7574 +vn 0.0671 0.0671 -0.9955 +vn 0.5294 0.5294 -0.6630 +vn 0.5294 0.5294 0.6630 +vn -0.4617 -0.4617 0.7574 +vn 0.1866 0.9824 0.0000 +vn 0.0196 0.0473 0.9987 +vn -0.1363 -0.6737 -0.7263 +vn 0.0196 0.0473 -0.9987 +vn 0.1448 0.7194 -0.6794 +vn 0.1448 0.7194 0.6794 +vn -0.1363 -0.6737 0.7263 +s off +f 75/115/28 74/116/28 73/117/28 +f 80/118/29 83/119/29 76/120/29 +f 73/121/30 79/122/30 78/123/30 +f 73/117/31 77/124/31 75/115/31 +f 79/125/32 77/124/32 78/126/32 +f 82/127/32 84/128/32 81/129/32 +f 76/120/33 150/130/33 74/116/33 +f 79/131/31 84/128/31 80/132/31 +f 99/133/32 97/134/32 98/135/32 +f 91/136/32 89/137/32 90/138/32 +f 85/139/31 89/140/31 87/141/31 +f 87/141/29 92/142/29 88/143/29 +f 86/144/30 90/145/30 85/146/30 +f 88/143/33 91/136/33 86/144/33 +f 93/147/31 97/148/31 95/149/31 +f 95/149/29 100/150/29 96/151/29 +f 94/152/30 98/153/30 93/154/30 +f 96/151/33 99/133/33 94/152/33 +f 123/155/32 124/156/32 117/157/32 +f 126/158/29 132/159/29 130/160/29 +f 130/160/32 125/161/32 126/158/32 +f 125/161/30 131/162/30 127/163/30 +f 127/164/28 132/159/28 128/165/28 +f 131/166/34 134/167/34 132/168/34 +f 135/169/30 131/170/30 129/171/30 +f 132/168/29 136/172/29 130/160/29 +f 136/172/35 129/171/35 130/160/35 +f 138/173/29 144/174/29 142/175/29 +f 142/175/32 137/176/32 138/173/32 +f 137/176/30 143/177/30 139/178/30 +f 139/178/28 144/179/28 140/180/28 +f 143/181/34 146/182/34 144/183/34 +f 147/184/30 143/181/30 141/185/30 +f 144/186/29 148/187/29 142/175/29 +f 148/187/35 141/185/35 142/175/35 +f 79/122/30 82/127/30 81/188/30 +f 80/118/29 75/189/29 77/190/29 +f 152/191/28 155/192/28 150/193/28 +f 151/194/33 76/120/33 83/119/33 +f 82/127/33 151/194/33 83/119/33 +f 150/130/33 82/127/33 74/116/33 +f 155/192/33 153/195/33 154/196/33 +f 149/197/32 153/195/32 151/198/32 +f 151/199/29 156/200/29 152/201/29 +f 150/202/30 154/196/30 149/203/30 +f 181/204/33 175/205/33 173/206/33 +f 174/207/33 181/208/33 173/209/33 +f 188/210/33 174/211/33 180/212/33 +f 187/213/33 180/214/33 179/215/33 +f 186/216/33 179/217/33 178/218/33 +f 185/219/33 178/220/33 177/221/33 +f 184/222/33 177/223/33 176/224/33 +f 183/225/33 176/226/33 175/227/33 +f 190/228/33 191/229/33 189/230/33 +f 194/231/33 195/232/33 193/233/33 +f 198/234/33 199/235/33 197/236/33 +f 431/237/31 430/238/31 429/239/31 +f 432/240/28 435/241/28 430/238/28 +f 429/239/32 433/242/32 431/237/32 +f 431/237/29 436/243/29 432/240/29 +f 430/238/30 434/244/30 429/239/30 +f 75/115/28 76/120/28 74/116/28 +f 80/118/29 84/245/29 83/119/29 +f 73/121/30 74/116/30 79/122/30 +f 73/117/31 78/126/31 77/124/31 +f 79/125/32 80/246/32 77/124/32 +f 82/127/32 83/119/32 84/128/32 +f 76/120/33 152/247/33 150/130/33 +f 79/131/31 81/129/31 84/128/31 +f 99/133/32 100/150/32 97/134/32 +f 91/136/32 92/142/32 89/137/32 +f 85/139/31 90/248/31 89/140/31 +f 87/141/29 89/140/29 92/142/29 +f 86/144/30 91/136/30 90/145/30 +f 88/143/33 92/142/33 91/136/33 +f 93/147/31 98/249/31 97/148/31 +f 95/149/29 97/148/29 100/150/29 +f 94/152/30 99/133/30 98/153/30 +f 96/151/33 100/150/33 99/133/33 +f 117/157/32 118/250/32 121/251/32 +f 118/250/32 119/252/32 121/251/32 +f 119/252/32 120/253/32 121/251/32 +f 121/251/32 122/254/32 117/157/32 +f 122/254/32 123/155/32 117/157/32 +f 126/158/29 128/165/29 132/159/29 +f 130/160/32 129/171/32 125/161/32 +f 125/161/30 129/171/30 131/162/30 +f 127/164/28 131/255/28 132/159/28 +f 131/166/34 133/256/34 134/167/34 +f 135/169/30 133/257/30 131/170/30 +f 132/168/29 134/167/29 136/172/29 +f 136/172/35 135/169/35 129/171/35 +f 138/173/29 140/258/29 144/174/29 +f 142/175/32 141/185/32 137/176/32 +f 137/176/30 141/185/30 143/177/30 +f 139/178/28 143/177/28 144/179/28 +f 143/181/34 145/259/34 146/182/34 +f 147/184/30 145/259/30 143/181/30 +f 144/186/29 146/260/29 148/187/29 +f 148/187/35 147/184/35 141/185/35 +f 79/122/30 74/116/30 82/127/30 +f 80/118/29 76/120/29 75/189/29 +f 152/191/28 156/200/28 155/192/28 +f 151/194/33 152/247/33 76/120/33 +f 82/127/33 149/261/33 151/194/33 +f 150/130/33 149/261/33 82/127/33 +f 155/192/33 156/200/33 153/195/33 +f 149/197/32 154/196/32 153/195/32 +f 151/199/29 153/195/29 156/200/29 +f 150/202/30 155/192/30 154/196/30 +f 181/204/33 183/262/33 175/205/33 +f 174/207/33 182/263/33 181/208/33 +f 188/210/33 182/264/33 174/211/33 +f 187/213/33 188/265/33 180/214/33 +f 186/216/33 187/266/33 179/217/33 +f 185/219/33 186/267/33 178/220/33 +f 184/222/33 185/268/33 177/223/33 +f 183/225/33 184/269/33 176/226/33 +f 190/228/33 192/270/33 191/229/33 +f 194/231/33 196/271/33 195/232/33 +f 198/234/33 200/272/33 199/235/33 +f 431/237/31 432/240/31 430/238/31 +f 432/240/28 436/273/28 435/241/28 +f 429/239/32 434/274/32 433/242/32 +f 431/237/29 433/275/29 436/243/29 +f 430/238/30 435/276/30 434/244/30 +s 1 +f 104/277/36 111/278/31 103/279/31 +f 102/280/37 109/281/29 101/282/29 +f 101/282/29 116/283/38 108/284/38 +f 107/285/33 114/286/39 106/287/39 +f 105/288/30 112/289/36 104/277/36 +f 103/279/31 110/290/37 102/280/37 +f 108/284/38 115/291/33 107/292/33 +f 106/287/39 113/293/30 105/288/30 +f 110/290/40 119/294/41 118/295/40 +f 111/278/41 120/296/42 119/297/41 +f 113/293/43 120/298/42 112/289/42 +f 114/286/44 121/299/43 113/293/43 +f 115/300/45 122/301/44 114/286/44 +f 116/283/46 123/302/45 115/291/45 +f 116/283/46 117/303/47 124/304/46 +f 110/290/40 117/305/47 109/281/47 +f 157/306/30 173/209/48 158/307/48 +f 165/308/29 188/210/49 172/309/49 +f 166/310/50 182/263/29 165/311/29 +f 158/312/48 175/205/28 159/313/28 +f 167/314/32 181/204/50 166/315/50 +f 159/316/28 176/226/49 160/317/49 +f 168/318/51 183/225/32 167/319/32 +f 160/320/49 177/223/29 161/321/29 +f 169/322/30 184/222/51 168/323/51 +f 161/324/29 178/220/50 162/325/50 +f 170/326/48 185/219/30 169/327/30 +f 162/328/50 179/217/32 163/329/32 +f 171/330/28 186/216/48 170/331/48 +f 163/332/32 180/214/51 164/333/51 +f 172/334/49 187/213/28 171/335/28 +f 164/336/51 174/211/30 157/337/30 +f 213/338/39 206/339/48 205/340/30 +f 211/341/52 204/342/51 203/343/32 +f 209/344/53 202/345/50 201/346/29 +f 216/347/54 201/346/29 208/348/49 +f 214/349/55 207/350/28 206/339/48 +f 212/351/56 205/352/30 204/342/51 +f 210/353/57 203/343/32 202/345/50 +f 215/354/58 208/348/49 207/350/28 +f 209/344/53 223/355/59 217/356/37 +f 215/357/58 221/358/60 222/359/61 +f 210/353/57 219/360/62 211/361/52 +f 216/347/54 222/359/61 223/355/59 +f 211/361/52 220/362/63 212/363/56 +f 209/344/53 218/364/64 210/353/57 +f 220/362/63 226/365/65 227/366/66 +f 218/364/64 224/367/67 225/368/68 +f 223/355/59 224/367/67 217/356/37 +f 221/358/60 229/369/69 222/359/61 +f 218/364/64 226/365/65 219/360/62 +f 222/359/61 230/370/70 223/355/59 +f 213/371/39 221/358/60 214/372/55 +f 221/358/60 213/371/39 228/373/71 +f 212/363/56 220/362/63 213/374/39 +f 220/362/63 227/366/66 213/374/39 +f 224/367/67 233/375/72 225/368/68 +f 227/376/66 231/377/33 213/378/39 +f 230/370/70 232/379/31 224/367/67 +f 213/380/39 236/381/73 228/382/71 +f 228/382/71 237/383/28 229/384/69 +f 225/368/68 234/385/32 226/386/65 +f 229/384/69 238/387/74 230/370/70 +f 226/386/65 235/388/75 227/376/66 +f 251/389/39 244/390/48 243/391/30 +f 249/392/52 242/393/51 241/394/32 +f 247/395/53 240/396/50 239/397/29 +f 254/398/54 239/397/29 246/399/49 +f 252/400/55 245/401/28 244/390/48 +f 250/402/56 243/403/30 242/393/51 +f 248/404/57 241/394/32 240/396/50 +f 253/405/58 246/399/49 245/401/28 +f 247/395/53 261/406/59 255/407/37 +f 253/408/58 259/409/60 260/410/61 +f 248/404/57 257/411/62 249/412/52 +f 254/398/54 260/410/61 261/406/59 +f 249/412/52 258/413/63 250/414/56 +f 247/395/53 256/415/64 248/404/57 +f 258/413/63 264/416/65 265/417/66 +f 256/415/64 262/418/67 263/419/68 +f 261/406/59 262/418/67 255/407/37 +f 259/409/60 267/420/69 260/410/61 +f 256/415/64 264/416/65 257/411/62 +f 260/410/61 268/421/70 261/406/59 +f 251/422/39 259/409/60 252/423/55 +f 259/409/60 251/422/39 266/424/71 +f 250/414/56 258/413/63 251/425/39 +f 258/413/63 265/417/66 251/425/39 +f 262/418/67 271/426/72 263/419/68 +f 265/427/66 269/428/33 251/429/39 +f 268/421/70 270/430/31 262/418/67 +f 251/431/39 274/432/73 266/433/71 +f 266/433/71 275/434/28 267/435/69 +f 263/419/68 272/436/32 264/437/65 +f 267/435/69 276/438/74 268/421/70 +f 264/437/65 273/439/75 265/427/66 +f 289/440/39 282/441/48 281/442/30 +f 287/443/52 280/444/51 279/445/32 +f 285/446/53 278/447/50 277/448/29 +f 292/449/54 277/448/29 284/450/49 +f 290/451/55 283/452/28 282/441/48 +f 288/453/56 281/454/30 280/444/51 +f 286/455/57 279/445/32 278/447/50 +f 291/456/58 284/450/49 283/452/28 +f 285/446/53 299/457/59 293/458/37 +f 291/459/58 297/460/60 298/461/61 +f 286/455/57 295/462/62 287/463/52 +f 292/449/54 298/461/61 299/457/59 +f 287/463/52 296/464/63 288/465/56 +f 285/446/53 294/466/64 286/455/57 +f 296/464/63 302/467/65 303/468/66 +f 294/466/64 300/469/67 301/470/68 +f 299/457/59 300/469/67 293/458/37 +f 297/460/60 305/471/69 298/461/61 +f 294/466/64 302/467/65 295/462/62 +f 299/457/59 305/471/69 306/472/70 +f 289/473/39 297/460/60 290/474/55 +f 297/460/60 289/473/39 304/475/71 +f 288/465/56 296/464/63 289/476/39 +f 296/464/63 303/468/66 289/476/39 +f 300/469/67 309/477/72 301/470/68 +f 303/478/66 307/479/33 289/480/39 +f 306/472/70 308/481/31 300/469/67 +f 289/482/39 312/483/73 304/484/71 +f 304/484/71 313/485/28 305/486/69 +f 301/470/68 310/487/32 302/488/65 +f 305/486/69 314/489/74 306/472/70 +f 302/488/65 311/490/75 303/478/66 +f 320/491/49 327/492/38 319/493/29 +f 318/494/50 325/495/76 317/496/32 +f 316/497/51 323/498/77 315/499/30 +f 315/499/30 330/500/78 322/501/48 +f 321/502/28 328/503/79 320/491/49 +f 319/504/29 326/505/80 318/494/50 +f 317/496/32 324/506/81 316/497/51 +f 322/501/48 329/507/82 321/502/28 +f 323/498/77 337/508/83 330/500/78 +f 329/509/82 335/510/84 328/511/79 +f 333/512/85 324/506/81 325/513/76 +f 330/500/78 336/514/86 329/509/82 +f 334/515/87 325/513/76 326/516/80 +f 332/517/88 323/498/77 324/506/81 +f 334/515/87 340/518/89 333/512/85 +f 339/519/90 331/520/36 332/517/88 +f 331/520/36 344/521/91 337/508/83 +f 343/522/92 335/510/84 336/514/86 +f 340/518/89 332/517/88 333/512/85 +f 344/521/91 336/514/86 337/508/83 +f 327/523/38 328/511/79 335/510/84 +f 335/510/84 342/524/93 327/523/38 +f 326/516/80 327/525/38 334/515/87 +f 334/515/87 327/525/38 341/526/94 +f 347/527/72 338/528/95 339/519/90 +f 345/529/33 341/530/94 327/531/38 +f 346/532/31 344/521/91 338/528/95 +f 350/533/73 327/534/38 342/535/93 +f 351/536/28 342/535/93 343/537/92 +f 348/538/32 339/519/90 340/539/89 +f 352/540/74 343/537/92 344/521/91 +f 349/541/75 340/539/89 341/530/94 +f 358/542/49 365/543/38 357/544/29 +f 356/545/50 363/546/76 355/547/32 +f 354/548/51 361/549/77 353/550/30 +f 353/550/30 368/551/78 360/552/48 +f 359/553/28 366/554/79 358/542/49 +f 357/555/29 364/556/80 356/545/50 +f 355/547/32 362/557/81 354/548/51 +f 360/552/48 367/558/82 359/553/28 +f 361/549/77 375/559/83 368/551/78 +f 367/560/82 373/561/84 366/562/79 +f 371/563/85 362/557/81 363/564/76 +f 368/551/78 374/565/86 367/560/82 +f 372/566/87 363/564/76 364/567/80 +f 370/568/88 361/549/77 362/557/81 +f 372/566/87 378/569/89 371/563/85 +f 377/570/90 369/571/36 370/568/88 +f 369/571/36 382/572/91 375/559/83 +f 381/573/92 373/561/84 374/565/86 +f 378/569/89 370/568/88 371/563/85 +f 382/572/91 374/565/86 375/559/83 +f 365/574/38 366/562/79 373/561/84 +f 373/561/84 380/575/93 365/574/38 +f 364/567/80 365/576/38 372/566/87 +f 372/566/87 365/576/38 379/577/94 +f 385/578/72 376/579/95 377/570/90 +f 383/580/33 379/581/94 365/582/38 +f 384/583/31 382/572/91 376/579/95 +f 388/584/73 365/585/38 380/586/93 +f 389/587/28 380/586/93 381/588/92 +f 386/589/32 377/570/90 378/590/89 +f 390/591/74 381/588/92 382/572/91 +f 387/592/75 378/590/89 379/581/94 +f 396/593/49 403/594/38 395/595/29 +f 394/596/50 401/597/76 393/598/32 +f 392/599/51 399/600/77 391/601/30 +f 391/601/30 406/602/78 398/603/48 +f 397/604/28 404/605/79 396/593/49 +f 395/606/29 402/607/80 394/596/50 +f 393/598/32 400/608/81 392/599/51 +f 398/603/48 405/609/82 397/604/28 +f 399/600/77 413/610/83 406/602/78 +f 405/611/82 411/612/84 404/613/79 +f 409/614/85 400/608/81 401/615/76 +f 406/602/78 412/616/86 405/611/82 +f 410/617/87 401/615/76 402/618/80 +f 408/619/88 399/600/77 400/608/81 +f 410/617/87 416/620/89 409/614/85 +f 415/621/90 407/622/36 408/619/88 +f 407/622/36 420/623/91 413/610/83 +f 419/624/92 411/612/84 412/616/86 +f 416/620/89 408/619/88 409/614/85 +f 420/623/91 412/616/86 413/610/83 +f 403/625/38 404/613/79 411/612/84 +f 411/612/84 418/626/93 403/625/38 +f 402/618/80 403/627/38 410/617/87 +f 410/617/87 403/627/38 417/628/94 +f 423/629/72 414/630/95 415/621/90 +f 421/631/33 417/632/94 403/633/38 +f 422/634/31 420/623/91 414/630/95 +f 426/635/73 403/636/38 418/637/93 +f 427/638/28 418/637/93 419/639/92 +f 424/640/32 415/621/90 416/641/89 +f 428/642/74 419/639/92 420/623/91 +f 425/643/75 416/641/89 417/632/94 +f 439/644/31 446/645/96 438/646/37 +f 444/647/38 451/648/97 443/649/33 +f 442/650/39 449/651/98 441/652/30 +f 440/653/36 447/654/74 439/655/31 +f 438/646/37 445/656/99 437/657/29 +f 437/657/29 452/658/100 444/647/38 +f 443/649/33 450/659/101 442/650/39 +f 441/652/30 448/660/102 440/653/36 +f 450/659/101 456/661/103 449/662/98 +f 445/663/99 454/664/104 453/665/105 +f 452/658/100 453/665/105 459/666/106 +f 450/659/101 458/667/75 457/668/107 +f 449/662/98 455/669/108 448/670/102 +f 452/658/100 458/667/75 451/648/97 +f 459/666/106 465/671/109 458/667/75 +f 457/668/107 463/672/110 456/661/103 +f 453/665/105 461/673/111 460/674/112 +f 459/666/106 460/674/112 466/675/113 +f 457/668/107 465/671/109 464/676/114 +f 456/661/103 462/677/115 455/669/108 +f 448/670/102 455/669/108 447/678/74 +f 455/669/108 462/677/115 447/678/74 +f 446/679/96 447/680/74 454/664/104 +f 454/664/104 447/680/74 461/673/111 +f 466/675/113 473/681/32 465/671/109 +f 464/676/114 471/682/30 463/683/110 +f 461/684/111 468/685/29 460/686/112 +f 461/684/111 467/687/28 469/688/49 +f 460/686/112 474/689/50 466/675/113 +f 462/690/115 467/691/28 447/692/74 +f 464/676/114 473/681/32 472/693/51 +f 463/683/110 470/694/48 462/690/115 +f 477/695/31 484/696/96 476/697/37 +f 482/698/38 489/699/97 481/700/33 +f 480/701/39 487/702/98 479/703/30 +f 478/704/36 485/705/74 477/706/31 +f 476/697/37 483/707/99 475/708/29 +f 475/708/29 490/709/100 482/698/38 +f 481/700/33 488/710/101 480/701/39 +f 479/703/30 486/711/102 478/704/36 +f 488/710/101 494/712/103 487/713/98 +f 483/714/99 492/715/104 491/716/105 +f 483/714/99 497/717/106 490/709/100 +f 488/710/101 496/718/75 495/719/107 +f 487/713/98 493/720/108 486/721/102 +f 490/709/100 496/718/75 489/699/97 +f 497/717/106 503/722/109 496/718/75 +f 494/712/103 502/723/114 501/724/110 +f 492/715/104 498/725/112 491/716/105 +f 497/717/106 498/725/112 504/726/113 +f 495/719/107 503/722/109 502/723/114 +f 494/712/103 500/727/115 493/720/108 +f 486/721/102 493/720/108 485/728/74 +f 493/720/108 500/727/115 485/728/74 +f 484/729/96 485/730/74 492/715/104 +f 492/715/104 485/730/74 499/731/111 +f 504/726/113 511/732/32 503/722/109 +f 502/723/114 509/733/30 501/734/110 +f 499/735/111 506/736/29 498/737/112 +f 499/735/111 505/738/28 507/739/49 +f 498/737/112 512/740/50 504/726/113 +f 500/741/115 505/742/28 485/743/74 +f 502/723/114 511/732/32 510/744/51 +f 501/734/110 508/745/48 500/741/115 +f 515/746/31 522/747/96 514/748/37 +f 520/749/38 527/750/97 519/751/33 +f 518/752/39 525/753/98 517/754/30 +f 516/755/36 523/756/74 515/757/31 +f 514/748/37 521/758/99 513/759/29 +f 513/759/29 528/760/100 520/749/38 +f 519/751/33 526/761/101 518/752/39 +f 517/754/30 524/762/102 516/755/36 +f 525/763/98 533/764/107 532/765/103 +f 521/766/99 530/767/104 529/768/105 +f 521/766/99 535/769/106 528/760/100 +f 526/761/101 534/770/75 533/764/107 +f 525/763/98 531/771/108 524/772/102 +f 528/760/100 534/770/75 527/750/97 +f 535/769/106 541/773/109 534/770/75 +f 533/764/107 539/774/110 532/765/103 +f 530/767/104 536/775/112 529/768/105 +f 529/768/105 542/776/113 535/769/106 +f 533/764/107 541/773/109 540/777/114 +f 531/771/108 539/774/110 538/778/115 +f 524/772/102 531/771/108 523/779/74 +f 531/771/108 538/778/115 523/779/74 +f 522/780/96 523/781/74 530/767/104 +f 530/767/104 523/781/74 537/782/111 +f 542/776/113 549/783/32 541/773/109 +f 540/777/114 547/784/30 539/785/110 +f 537/786/111 544/787/29 536/788/112 +f 537/786/111 543/789/28 545/790/49 +f 536/788/112 550/791/50 542/776/113 +f 538/792/115 543/793/28 523/794/74 +f 540/777/114 549/783/32 548/795/51 +f 539/785/110 546/796/48 538/792/115 +f 104/277/36 112/289/36 111/278/31 +f 102/280/37 110/290/37 109/281/29 +f 101/282/29 109/281/29 116/283/38 +f 107/285/33 115/300/33 114/286/39 +f 105/288/30 113/293/30 112/289/36 +f 103/279/31 111/278/31 110/290/37 +f 108/284/38 116/283/38 115/291/33 +f 106/287/39 114/286/39 113/293/30 +f 110/290/40 111/278/41 119/294/41 +f 111/278/41 112/289/42 120/296/42 +f 113/293/43 121/797/43 120/298/42 +f 114/286/44 122/798/44 121/299/43 +f 115/300/45 123/799/45 122/301/44 +f 116/283/46 124/800/46 123/302/45 +f 116/283/46 109/281/47 117/303/47 +f 110/290/40 118/801/40 117/305/47 +f 157/306/30 174/207/30 173/209/48 +f 165/308/29 182/264/29 188/210/49 +f 166/310/50 181/208/50 182/263/29 +f 158/312/48 173/206/48 175/205/28 +f 167/314/32 183/262/32 181/204/50 +f 159/316/28 175/227/28 176/226/49 +f 168/318/51 184/269/51 183/225/32 +f 160/320/49 176/224/49 177/223/29 +f 169/322/30 185/268/30 184/222/51 +f 161/324/29 177/221/29 178/220/50 +f 170/326/48 186/267/48 185/219/30 +f 162/328/50 178/218/50 179/217/32 +f 171/330/28 187/266/28 186/216/48 +f 163/332/32 179/215/32 180/214/51 +f 172/334/49 188/265/49 187/213/28 +f 164/336/51 180/212/51 174/211/30 +f 213/338/39 214/349/55 206/339/48 +f 211/341/52 212/351/56 204/342/51 +f 209/344/53 210/353/57 202/345/50 +f 216/347/54 209/344/53 201/346/29 +f 214/349/55 215/354/58 207/350/28 +f 212/351/56 213/802/39 205/352/30 +f 210/353/57 211/341/52 203/343/32 +f 215/354/58 216/347/54 208/348/49 +f 209/344/53 216/347/54 223/355/59 +f 215/357/58 214/372/55 221/358/60 +f 210/353/57 218/364/64 219/360/62 +f 216/347/54 215/357/58 222/359/61 +f 211/361/52 219/360/62 220/362/63 +f 209/344/53 217/356/37 218/364/64 +f 220/362/63 219/360/62 226/365/65 +f 218/364/64 217/356/37 224/367/67 +f 223/355/59 230/370/70 224/367/67 +f 221/358/60 228/373/71 229/369/69 +f 218/364/64 225/368/68 226/365/65 +f 222/359/61 229/369/69 230/370/70 +f 224/367/67 232/379/31 233/375/72 +f 227/376/66 235/388/75 231/377/33 +f 230/370/70 238/387/74 232/379/31 +f 213/380/39 231/803/33 236/381/73 +f 228/382/71 236/381/73 237/383/28 +f 225/368/68 233/375/72 234/385/32 +f 229/384/69 237/383/28 238/387/74 +f 226/386/65 234/385/32 235/388/75 +f 251/389/39 252/400/55 244/390/48 +f 249/392/52 250/402/56 242/393/51 +f 247/395/53 248/404/57 240/396/50 +f 254/398/54 247/395/53 239/397/29 +f 252/400/55 253/405/58 245/401/28 +f 250/402/56 251/804/39 243/403/30 +f 248/404/57 249/392/52 241/394/32 +f 253/405/58 254/398/54 246/399/49 +f 247/395/53 254/398/54 261/406/59 +f 253/408/58 252/423/55 259/409/60 +f 248/404/57 256/415/64 257/411/62 +f 254/398/54 253/408/58 260/410/61 +f 249/412/52 257/411/62 258/413/63 +f 247/395/53 255/407/37 256/415/64 +f 258/413/63 257/411/62 264/416/65 +f 256/415/64 255/407/37 262/418/67 +f 261/406/59 268/421/70 262/418/67 +f 259/409/60 266/424/71 267/420/69 +f 256/415/64 263/419/68 264/416/65 +f 260/410/61 267/420/69 268/421/70 +f 262/418/67 270/430/31 271/426/72 +f 265/427/66 273/439/75 269/428/33 +f 268/421/70 276/438/74 270/430/31 +f 251/431/39 269/805/33 274/432/73 +f 266/433/71 274/432/73 275/434/28 +f 263/419/68 271/426/72 272/436/32 +f 267/435/69 275/434/28 276/438/74 +f 264/437/65 272/436/32 273/439/75 +f 289/440/39 290/451/55 282/441/48 +f 287/443/52 288/453/56 280/444/51 +f 285/446/53 286/455/57 278/447/50 +f 292/449/54 285/446/53 277/448/29 +f 290/451/55 291/456/58 283/452/28 +f 288/453/56 289/806/39 281/454/30 +f 286/455/57 287/443/52 279/445/32 +f 291/456/58 292/449/54 284/450/49 +f 285/446/53 292/449/54 299/457/59 +f 291/459/58 290/474/55 297/460/60 +f 286/455/57 294/466/64 295/462/62 +f 292/449/54 291/459/58 298/461/61 +f 287/463/52 295/462/62 296/464/63 +f 285/446/53 293/458/37 294/466/64 +f 296/464/63 295/462/62 302/467/65 +f 294/466/64 293/458/37 300/469/67 +f 299/457/59 306/472/70 300/469/67 +f 297/460/60 304/475/71 305/471/69 +f 294/466/64 301/470/68 302/467/65 +f 299/457/59 298/461/61 305/471/69 +f 300/469/67 308/481/31 309/477/72 +f 303/478/66 311/490/75 307/479/33 +f 306/472/70 314/489/74 308/481/31 +f 289/482/39 307/807/33 312/483/73 +f 304/484/71 312/483/73 313/485/28 +f 301/470/68 309/477/72 310/487/32 +f 305/486/69 313/485/28 314/489/74 +f 302/488/65 310/487/32 311/490/75 +f 320/491/49 328/503/79 327/492/38 +f 318/494/50 326/505/80 325/495/76 +f 316/497/51 324/506/81 323/498/77 +f 315/499/30 323/498/77 330/500/78 +f 321/502/28 329/507/82 328/503/79 +f 319/504/29 327/808/38 326/505/80 +f 317/496/32 325/495/76 324/506/81 +f 322/501/48 330/500/78 329/507/82 +f 323/498/77 331/520/36 337/508/83 +f 329/509/82 336/514/86 335/510/84 +f 333/512/85 332/517/88 324/506/81 +f 330/500/78 337/508/83 336/514/86 +f 334/515/87 333/512/85 325/513/76 +f 332/517/88 331/520/36 323/498/77 +f 334/515/87 341/526/94 340/518/89 +f 339/519/90 338/528/95 331/520/36 +f 331/520/36 338/528/95 344/521/91 +f 343/522/92 342/524/93 335/510/84 +f 340/518/89 339/519/90 332/517/88 +f 344/521/91 343/522/92 336/514/86 +f 347/527/72 346/532/31 338/528/95 +f 345/529/33 349/541/75 341/530/94 +f 346/532/31 352/540/74 344/521/91 +f 350/533/73 345/809/33 327/534/38 +f 351/536/28 350/533/73 342/535/93 +f 348/538/32 347/527/72 339/519/90 +f 352/540/74 351/536/28 343/537/92 +f 349/541/75 348/538/32 340/539/89 +f 358/542/49 366/554/79 365/543/38 +f 356/545/50 364/556/80 363/546/76 +f 354/548/51 362/557/81 361/549/77 +f 353/550/30 361/549/77 368/551/78 +f 359/553/28 367/558/82 366/554/79 +f 357/555/29 365/810/38 364/556/80 +f 355/547/32 363/546/76 362/557/81 +f 360/552/48 368/551/78 367/558/82 +f 361/549/77 369/571/36 375/559/83 +f 367/560/82 374/565/86 373/561/84 +f 371/563/85 370/568/88 362/557/81 +f 368/551/78 375/559/83 374/565/86 +f 372/566/87 371/563/85 363/564/76 +f 370/568/88 369/571/36 361/549/77 +f 372/566/87 379/577/94 378/569/89 +f 377/570/90 376/579/95 369/571/36 +f 369/571/36 376/579/95 382/572/91 +f 381/573/92 380/575/93 373/561/84 +f 378/569/89 377/570/90 370/568/88 +f 382/572/91 381/573/92 374/565/86 +f 385/578/72 384/583/31 376/579/95 +f 383/580/33 387/592/75 379/581/94 +f 384/583/31 390/591/74 382/572/91 +f 388/584/73 383/811/33 365/585/38 +f 389/587/28 388/584/73 380/586/93 +f 386/589/32 385/578/72 377/570/90 +f 390/591/74 389/587/28 381/588/92 +f 387/592/75 386/589/32 378/590/89 +f 396/593/49 404/605/79 403/594/38 +f 394/596/50 402/607/80 401/597/76 +f 392/599/51 400/608/81 399/600/77 +f 391/601/30 399/600/77 406/602/78 +f 397/604/28 405/609/82 404/605/79 +f 395/606/29 403/812/38 402/607/80 +f 393/598/32 401/597/76 400/608/81 +f 398/603/48 406/602/78 405/609/82 +f 399/600/77 407/622/36 413/610/83 +f 405/611/82 412/616/86 411/612/84 +f 409/614/85 408/619/88 400/608/81 +f 406/602/78 413/610/83 412/616/86 +f 410/617/87 409/614/85 401/615/76 +f 408/619/88 407/622/36 399/600/77 +f 410/617/87 417/628/94 416/620/89 +f 415/621/90 414/630/95 407/622/36 +f 407/622/36 414/630/95 420/623/91 +f 419/624/92 418/626/93 411/612/84 +f 416/620/89 415/621/90 408/619/88 +f 420/623/91 419/624/92 412/616/86 +f 423/629/72 422/634/31 414/630/95 +f 421/631/33 425/643/75 417/632/94 +f 422/634/31 428/642/74 420/623/91 +f 426/635/73 421/813/33 403/636/38 +f 427/638/28 426/635/73 418/637/93 +f 424/640/32 423/629/72 415/621/90 +f 428/642/74 427/638/28 419/639/92 +f 425/643/75 424/640/32 416/641/89 +f 439/644/31 447/814/74 446/645/96 +f 444/647/38 452/658/100 451/648/97 +f 442/650/39 450/659/101 449/651/98 +f 440/653/36 448/660/102 447/654/74 +f 438/646/37 446/645/96 445/656/99 +f 437/657/29 445/656/99 452/658/100 +f 443/649/33 451/648/97 450/659/101 +f 441/652/30 449/651/98 448/660/102 +f 450/659/101 457/668/107 456/661/103 +f 445/663/99 446/679/96 454/664/104 +f 452/658/100 445/663/99 453/665/105 +f 450/659/101 451/648/97 458/667/75 +f 449/662/98 456/661/103 455/669/108 +f 452/658/100 459/666/106 458/667/75 +f 459/666/106 466/675/113 465/671/109 +f 457/668/107 464/676/114 463/672/110 +f 453/665/105 454/664/104 461/673/111 +f 459/666/106 453/665/105 460/674/112 +f 457/668/107 458/667/75 465/671/109 +f 456/661/103 463/672/110 462/677/115 +f 466/675/113 474/689/50 473/681/32 +f 464/676/114 472/693/51 471/682/30 +f 461/684/111 469/688/49 468/685/29 +f 461/684/111 447/815/74 467/687/28 +f 460/686/112 468/685/29 474/689/50 +f 462/690/115 470/694/48 467/691/28 +f 464/676/114 465/671/109 473/681/32 +f 463/683/110 471/682/30 470/694/48 +f 477/695/31 485/816/74 484/696/96 +f 482/698/38 490/709/100 489/699/97 +f 480/701/39 488/710/101 487/702/98 +f 478/704/36 486/711/102 485/705/74 +f 476/697/37 484/696/96 483/707/99 +f 475/708/29 483/707/99 490/709/100 +f 481/700/33 489/699/97 488/710/101 +f 479/703/30 487/702/98 486/711/102 +f 488/710/101 495/719/107 494/712/103 +f 483/714/99 484/729/96 492/715/104 +f 483/714/99 491/716/105 497/717/106 +f 488/710/101 489/699/97 496/718/75 +f 487/713/98 494/712/103 493/720/108 +f 490/709/100 497/717/106 496/718/75 +f 497/717/106 504/726/113 503/722/109 +f 494/712/103 495/719/107 502/723/114 +f 492/715/104 499/731/111 498/725/112 +f 497/717/106 491/716/105 498/725/112 +f 495/719/107 496/718/75 503/722/109 +f 494/712/103 501/724/110 500/727/115 +f 504/726/113 512/740/50 511/732/32 +f 502/723/114 510/744/51 509/733/30 +f 499/735/111 507/739/49 506/736/29 +f 499/735/111 485/817/74 505/738/28 +f 498/737/112 506/736/29 512/740/50 +f 500/741/115 508/745/48 505/742/28 +f 502/723/114 503/722/109 511/732/32 +f 501/734/110 509/733/30 508/745/48 +f 515/746/31 523/818/74 522/747/96 +f 520/749/38 528/760/100 527/750/97 +f 518/752/39 526/761/101 525/753/98 +f 516/755/36 524/762/102 523/756/74 +f 514/748/37 522/747/96 521/758/99 +f 513/759/29 521/758/99 528/760/100 +f 519/751/33 527/750/97 526/761/101 +f 517/754/30 525/753/98 524/762/102 +f 525/763/98 526/761/101 533/764/107 +f 521/766/99 522/780/96 530/767/104 +f 521/766/99 529/768/105 535/769/106 +f 526/761/101 527/750/97 534/770/75 +f 525/763/98 532/765/103 531/771/108 +f 528/760/100 535/769/106 534/770/75 +f 535/769/106 542/776/113 541/773/109 +f 533/764/107 540/777/114 539/774/110 +f 530/767/104 537/782/111 536/775/112 +f 529/768/105 536/775/112 542/776/113 +f 533/764/107 534/770/75 541/773/109 +f 531/771/108 532/765/103 539/774/110 +f 542/776/113 550/791/50 549/783/32 +f 540/777/114 548/795/51 547/784/30 +f 537/786/111 545/790/49 544/787/29 +f 537/786/111 523/819/74 543/789/28 +f 536/788/112 544/787/29 550/791/50 +f 538/792/115 546/796/48 543/793/28 +f 540/777/114 541/773/109 549/783/32 +f 539/785/110 547/784/30 546/796/48 diff --git a/src/main/resources/assets/hbm/models/machines/condenser.obj b/src/main/resources/assets/hbm/models/machines/condenser.obj new file mode 100644 index 000000000..f2b846454 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/condenser.obj @@ -0,0 +1,5515 @@ +# Blender v2.79 (sub 0) OBJ File: 'condenser.blend' +# www.blender.org +o Fan1 +v -1.375000 1.500000 0.125000 +v -1.375000 1.608253 0.062500 +v -1.375000 1.608253 -0.062500 +v -1.375000 1.500000 -0.125000 +v -1.375000 1.391747 -0.062500 +v -1.375000 1.391747 0.062500 +v -1.500000 1.608253 0.062500 +v -1.500000 1.500000 0.125000 +v -1.500000 1.608253 -0.062500 +v -1.500000 1.500000 -0.125000 +v -1.500000 1.391747 -0.062500 +v -1.500000 1.391747 0.062500 +v -1.501628 1.937500 -0.176192 +v -1.458876 1.500000 -0.058731 +v -1.373371 1.937500 0.176192 +v -1.416123 1.500000 0.058731 +v -1.501628 1.128663 -0.290790 +v -1.458876 1.449138 0.029366 +v -1.373371 1.433837 -0.466982 +v -1.416123 1.550862 -0.029365 +v -1.501628 1.433837 0.466982 +v -1.458876 1.550862 0.029365 +v -1.373371 1.128663 0.290790 +v -1.416123 1.449138 -0.029365 +vt 0.908031 0.056886 +vt 0.915969 0.056886 +vt 0.919938 0.070312 +vt 0.912000 0.039062 +vt 0.904000 0.054688 +vt 0.904000 0.039062 +vt 0.944000 0.039062 +vt 0.936000 0.054688 +vt 0.936000 0.039062 +vt 0.928000 0.039062 +vt 0.920000 0.054688 +vt 0.920000 0.039062 +vt 0.912000 0.054688 +vt 0.952000 0.039062 +vt 0.944000 0.054688 +vt 0.928000 0.054688 +vt 0.928000 0.054688 +vt 0.944000 0.109375 +vt 0.920000 0.109375 +vt 0.920000 0.109375 +vt 0.936000 0.054688 +vt 0.944000 0.109375 +vt 0.928000 0.054688 +vt 0.944000 0.109375 +vt 0.920000 0.109375 +vt 0.915969 0.083739 +vt 0.908031 0.083739 +vt 0.904062 0.070313 +vt 0.952000 0.054688 +vt 0.936000 0.054688 +vt 0.928000 0.054688 +vt 0.936000 0.054688 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.0000 0.5000 -0.8660 +vn 0.0000 0.5000 0.8660 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 1.0000 0.0000 +vn -0.9397 0.0000 0.3420 +vn -0.9397 0.2962 -0.1710 +vn -0.9397 -0.2962 -0.1710 +s off +f 11/1/1 12/2/1 8/3/1 +f 6/4/2 11/5/2 5/6/2 +f 4/7/3 9/8/3 3/9/3 +f 2/10/4 8/11/4 1/12/4 +f 1/12/5 12/13/5 6/4/5 +f 5/14/6 10/15/6 4/7/6 +f 2/10/7 9/8/7 7/16/7 +f 14/17/8 15/18/8 13/19/8 +f 17/20/9 20/21/9 19/22/9 +f 22/23/10 23/24/10 21/25/10 +f 8/3/1 7/26/1 11/1/1 +f 7/26/1 9/27/1 11/1/1 +f 9/27/1 10/28/1 11/1/1 +f 6/4/2 12/13/2 11/5/2 +f 4/7/3 10/15/3 9/8/3 +f 2/10/4 7/16/4 8/11/4 +f 1/12/5 8/11/5 12/13/5 +f 5/14/6 11/29/6 10/15/6 +f 2/10/7 3/9/7 9/8/7 +f 14/17/8 16/30/8 15/18/8 +f 17/20/9 18/31/9 20/21/9 +f 22/23/10 24/32/10 23/24/10 +o Fan2 +v 1.375000 1.500000 -0.125000 +v 1.375000 1.608253 -0.062500 +v 1.375000 1.608253 0.062500 +v 1.375000 1.500000 0.125000 +v 1.375000 1.391747 0.062500 +v 1.375000 1.391747 -0.062500 +v 1.500000 1.608253 -0.062500 +v 1.500000 1.500000 -0.125000 +v 1.500000 1.608253 0.062500 +v 1.500000 1.500000 0.125000 +v 1.500000 1.391747 0.062500 +v 1.500000 1.391747 -0.062500 +v 1.501628 1.937500 0.176192 +v 1.458876 1.500000 0.058731 +v 1.373371 1.937500 -0.176192 +v 1.416123 1.500000 -0.058731 +v 1.501628 1.128663 0.290790 +v 1.458876 1.449138 -0.029366 +v 1.373371 1.433837 0.466982 +v 1.416123 1.550862 0.029365 +v 1.501628 1.433837 -0.466982 +v 1.458876 1.550862 -0.029365 +v 1.373371 1.128663 -0.290790 +v 1.416123 1.449138 0.029366 +vt 0.915969 0.056886 +vt 0.919938 0.070312 +vt 0.908031 0.083739 +vt 0.912000 0.039063 +vt 0.904000 0.054688 +vt 0.904000 0.039063 +vt 0.944000 0.039062 +vt 0.936000 0.054688 +vt 0.936000 0.039062 +vt 0.928000 0.039062 +vt 0.920000 0.054688 +vt 0.920000 0.039062 +vt 0.912000 0.054688 +vt 0.952000 0.039062 +vt 0.944000 0.054687 +vt 0.928000 0.054688 +vt 0.928000 0.054688 +vt 0.944000 0.109375 +vt 0.920000 0.109375 +vt 0.920000 0.109375 +vt 0.936000 0.054688 +vt 0.944000 0.109375 +vt 0.928000 0.054688 +vt 0.944000 0.109375 +vt 0.920000 0.109375 +vt 0.915969 0.083739 +vt 0.904062 0.070312 +vt 0.908031 0.056886 +vt 0.952000 0.054687 +vt 0.936000 0.054688 +vt 0.928000 0.054688 +vt 0.936000 0.054688 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 1.0000 0.0000 +vn 0.9397 0.0000 -0.3420 +vn 0.9397 0.2962 0.1710 +vn 0.9397 -0.2962 0.1710 +s off +f 36/33/11 32/34/11 33/35/11 +f 30/36/12 35/37/12 29/38/12 +f 28/39/13 33/40/13 27/41/13 +f 26/42/14 32/43/14 25/44/14 +f 25/44/15 36/45/15 30/36/15 +f 29/46/16 34/47/16 28/39/16 +f 27/41/17 31/48/17 26/42/17 +f 38/49/18 39/50/18 37/51/18 +f 41/52/19 44/53/19 43/54/19 +f 46/55/20 47/56/20 45/57/20 +f 32/34/11 31/58/11 33/35/11 +f 33/35/11 34/59/11 35/60/11 +f 35/60/11 36/33/11 33/35/11 +f 30/36/12 36/45/12 35/37/12 +f 28/39/13 34/47/13 33/40/13 +f 26/42/14 31/48/14 32/43/14 +f 25/44/15 32/43/15 36/45/15 +f 29/46/16 35/61/16 34/47/16 +f 27/41/17 33/40/17 31/48/17 +f 38/49/18 40/62/18 39/50/18 +f 41/52/19 42/63/19 44/53/19 +f 46/55/20 48/64/20 47/56/20 +o Condenser +v 1.500000 0.250000 -3.125000 +v 1.500000 0.250000 3.125000 +v 1.250000 0.250000 3.125000 +v 1.250000 0.250000 -3.125000 +v 1.250000 0.000000 -3.125000 +v 1.250000 0.000000 3.125000 +v 1.500000 0.000000 3.125000 +v 1.500000 0.000000 -3.125000 +v 1.500000 0.000000 -3.500000 +v 1.500000 0.000000 -3.125000 +v 1.125000 0.000000 -3.500000 +v 1.125000 0.000000 -3.125000 +v 1.500000 0.375000 -3.500000 +v 1.500000 0.375000 -3.125000 +v 1.125000 0.375000 -3.500000 +v 1.125000 0.375000 -3.125000 +v -1.125000 0.000000 -3.500000 +v -1.125000 0.000000 -3.125000 +v -1.500000 0.000000 -3.500000 +v -1.500000 0.000000 -3.125000 +v -1.125000 0.375000 -3.500000 +v -1.125000 0.375000 -3.125000 +v -1.500000 0.375000 -3.500000 +v -1.500000 0.375000 -3.125000 +v 1.500000 0.000000 3.125000 +v 1.500000 0.000000 3.500000 +v 1.125000 0.000000 3.125000 +v 1.125000 0.000000 3.500000 +v 1.500000 0.375000 3.125000 +v 1.500000 0.375000 3.500000 +v 1.125000 0.375000 3.125000 +v 1.125000 0.375000 3.500000 +v -1.125000 0.000000 3.125000 +v -1.125000 0.000000 3.500000 +v -1.500000 0.000000 3.125000 +v -1.500000 0.000000 3.500000 +v -1.125000 0.375000 3.125000 +v -1.125000 0.375000 3.500000 +v -1.500000 0.375000 3.125000 +v -1.500000 0.375000 3.500000 +v 1.500000 2.625000 -3.500000 +v 1.500000 2.625000 -3.125000 +v 1.125000 2.625000 -3.500000 +v 1.125000 2.625000 -3.125000 +v 1.500000 3.000000 -3.500000 +v 1.500000 3.000000 -3.125000 +v 1.125000 3.000000 -3.500000 +v 1.125000 3.000000 -3.125000 +v -1.125000 2.625000 -3.500000 +v -1.125000 2.625000 -3.125000 +v -1.500000 2.625000 -3.500000 +v -1.500000 2.625000 -3.125000 +v -1.125000 3.000000 -3.500000 +v -1.125000 3.000000 -3.125000 +v -1.500000 3.000000 -3.500000 +v -1.500000 3.000000 -3.125000 +v 1.500000 2.625000 3.125000 +v 1.500000 2.625000 3.500000 +v 1.125000 2.625000 3.125000 +v 1.125000 2.625000 3.500000 +v 1.500000 3.000000 3.125000 +v 1.500000 3.000000 3.500000 +v 1.125000 3.000000 3.125000 +v 1.125000 3.000000 3.500000 +v -1.125000 2.625000 3.125000 +v -1.125000 2.625000 3.500000 +v -1.500000 2.625000 3.125000 +v -1.500000 2.625000 3.500000 +v -1.125000 3.000000 3.125000 +v -1.125000 3.000000 3.500000 +v -1.500000 3.000000 3.125000 +v -1.500000 3.000000 3.500000 +v 1.500000 3.000000 -3.125000 +v 1.500000 3.000000 3.125000 +v 1.250000 3.000000 3.125000 +v 1.250000 3.000000 -3.125000 +v 1.250000 2.750000 -3.125000 +v 1.250000 2.750000 3.125000 +v 1.500000 2.750000 3.125000 +v 1.500000 2.750000 -3.125000 +v -1.250000 0.250000 -3.125000 +v -1.250000 0.250000 3.125000 +v -1.500000 0.250000 3.125000 +v -1.500000 0.250000 -3.125000 +v -1.500000 0.000000 -3.125000 +v -1.500000 0.000000 3.125000 +v -1.250000 0.000000 3.125000 +v -1.250000 0.000000 -3.125000 +v -1.250000 3.000000 -3.125000 +v -1.250000 3.000000 3.125000 +v -1.500000 3.000000 3.125000 +v -1.500000 3.000000 -3.125000 +v -1.500000 2.750000 -3.125000 +v -1.500000 2.750000 3.125000 +v -1.250000 2.750000 3.125000 +v -1.250000 2.750000 -3.125000 +v 1.125000 0.000000 3.500000 +v -1.125000 0.000000 3.500000 +v 1.125000 0.000000 3.250000 +v -1.125000 0.000000 3.250000 +v 1.125000 0.250000 3.500000 +v -1.125000 0.250000 3.500000 +v 1.125000 0.250000 3.250000 +v -1.125000 0.250000 3.250000 +v 1.125000 0.000000 -3.250000 +v -1.125000 0.000000 -3.250000 +v 1.125000 0.000000 -3.500000 +v -1.125000 0.000000 -3.500000 +v 1.125000 0.250000 -3.250000 +v -1.125000 0.250000 -3.250000 +v 1.125000 0.250000 -3.500000 +v -1.125000 0.250000 -3.500000 +v 1.125000 2.750000 3.500000 +v -1.125000 2.750000 3.500000 +v 1.125000 2.750000 3.250000 +v -1.125000 2.750000 3.250000 +v 1.125000 3.000000 3.500000 +v -1.125000 3.000000 3.500000 +v 1.125000 3.000000 3.250000 +v -1.125000 3.000000 3.250000 +v 1.125000 2.750000 -3.250000 +v -1.125000 2.750000 -3.250000 +v 1.125000 2.750000 -3.500000 +v -1.125000 2.750000 -3.500000 +v 1.125000 3.000000 -3.250000 +v -1.125000 3.000000 -3.250000 +v 1.125000 3.000000 -3.500000 +v -1.125000 3.000000 -3.500000 +v -1.500000 0.375000 3.500000 +v -1.500000 2.625000 3.500000 +v -1.500000 0.375000 3.250000 +v -1.500000 2.625000 3.250000 +v -1.250000 0.375000 3.500000 +v -1.250000 2.625000 3.500000 +v -1.250000 0.375000 3.250000 +v -1.250000 2.625000 3.250000 +v 1.250000 0.375000 3.500000 +v 1.250000 2.625000 3.500000 +v 1.250000 0.375000 3.250000 +v 1.250000 2.625000 3.250000 +v 1.500000 0.375000 3.500000 +v 1.500000 2.625000 3.500000 +v 1.500000 0.375000 3.250000 +v 1.500000 2.625000 3.250000 +v -1.500000 0.375000 -3.250000 +v -1.500000 2.625000 -3.250000 +v -1.500000 0.375000 -3.500000 +v -1.500000 2.625000 -3.500000 +v -1.250000 0.375000 -3.250000 +v -1.250000 2.625000 -3.250000 +v -1.250000 0.375000 -3.500000 +v -1.250000 2.625000 -3.500000 +v 1.250000 0.375000 -3.250000 +v 1.250000 2.625000 -3.250000 +v 1.250000 0.375000 -3.500000 +v 1.250000 2.625000 -3.500000 +v 1.500000 0.375000 -3.250000 +v 1.500000 2.625000 -3.250000 +v 1.500000 0.375000 -3.500000 +v 1.500000 2.625000 -3.500000 +v 0.000000 3.000000 2.500000 +v 0.000000 3.000000 2.750000 +v 0.574025 2.885819 2.500000 +v 0.574025 2.885819 2.750000 +v 1.060660 2.560660 2.500000 +v 1.060660 2.560660 2.750000 +v 1.385819 2.074025 2.500000 +v 1.385819 2.074025 2.750000 +v 1.500000 1.500000 2.500000 +v 1.500000 1.500000 2.750000 +v 1.385819 0.925975 2.500000 +v 1.385819 0.925975 2.750000 +v 1.060660 0.439340 2.500000 +v 1.060660 0.439340 2.750000 +v 0.574025 0.114181 2.500000 +v 0.574025 0.114181 2.750000 +v 0.000000 0.000000 2.500000 +v 0.000000 0.000000 2.750000 +v -0.574025 0.114181 2.500000 +v -0.574025 0.114181 2.750000 +v -1.060660 0.439340 2.500000 +v -1.060660 0.439340 2.750000 +v -1.385819 0.925975 2.500000 +v -1.385819 0.925975 2.750000 +v -1.500000 1.500000 2.500000 +v -1.500000 1.500000 2.750000 +v -1.385819 2.074025 2.500000 +v -1.385819 2.074025 2.750000 +v -1.060660 2.560660 2.500000 +v -1.060660 2.560660 2.750000 +v -0.574024 2.885820 2.500000 +v -0.574024 2.885820 2.750000 +v 1.374999 1.500001 -2.750000 +v 1.190784 1.500001 -3.093750 +v 0.000000 2.690785 3.093750 +v 0.000000 2.875000 2.750000 +v 0.687499 1.500000 -3.345392 +v -0.000000 2.690785 -3.093750 +v 1.270334 0.973811 -2.750000 +v 1.100142 1.044307 -3.093750 +v 0.263095 2.135167 3.345392 +v 0.455694 2.600142 3.093750 +v 0.526190 2.770334 2.750000 +v 0.574024 2.885820 -2.750000 +v 0.574024 2.885820 -2.500000 +v 0.635167 1.236906 -3.345392 +v 0.972271 0.527729 -2.750000 +v 0.486136 1.986136 3.345392 +v 0.842012 2.342012 3.093750 +v 0.972272 2.472272 2.750000 +v 1.060659 2.560660 -2.750000 +v 1.060659 2.560660 -2.500000 +v 0.842011 0.657989 -3.093750 +v 0.486135 1.013865 -3.345392 +v 0.635167 1.763095 3.345392 +v 1.100142 1.955694 3.093750 +v 1.270334 2.026190 2.750000 +v 1.385819 2.074025 -2.750000 +v 1.385819 2.074025 -2.500000 +v 0.526190 0.229666 -2.750000 +v 0.455694 0.399859 -3.093750 +v 0.687500 1.500000 3.345392 +v 1.190784 1.500000 3.093750 +v 1.375000 1.500000 2.750000 +v 1.500000 1.500000 -2.750000 +v 1.500000 1.500000 -2.500000 +v 0.263094 0.864833 -3.345392 +v 0.000000 0.125001 -2.750000 +v 0.635167 1.236905 3.345392 +v 1.100142 1.044307 3.093750 +v 1.270334 0.973810 2.750000 +v 1.385819 0.925975 -2.750000 +v 1.385819 0.925975 -2.500000 +v 0.000000 0.309216 -3.093750 +v -0.000000 0.812500 -3.345392 +v 0.486136 1.013864 3.345392 +v 0.842011 0.657988 3.093750 +v 0.972271 0.527729 2.750000 +v 1.060659 0.439340 -2.750000 +v 1.060659 0.439340 -2.500000 +v -0.526189 0.229666 -2.750000 +v -0.455693 0.399859 -3.093750 +v 0.263095 0.864833 3.345392 +v 0.455693 0.399859 3.093750 +v 0.526189 0.229666 2.750000 +v 0.574025 0.114181 -2.750000 +v 0.574025 0.114181 -2.500000 +v -0.263095 0.864833 -3.345392 +v -0.972271 0.527729 -2.750000 +v 0.000000 0.812500 3.345392 +v -0.000000 0.309216 3.093750 +v -0.000000 0.125001 2.750000 +v -0.000000 0.000000 -2.750000 +v -0.000000 0.000000 -2.500000 +v -0.842012 0.657988 -3.093750 +v -0.486136 1.013864 -3.345392 +v -0.263095 0.864833 3.345392 +v -0.455694 0.399859 3.093750 +v -0.526190 0.229666 2.750000 +v -0.574026 0.114181 -2.750000 +v -0.574026 0.114181 -2.500000 +v -1.270334 0.973810 -2.750000 +v -1.100142 1.044307 -3.093750 +v -0.486136 1.013865 3.345392 +v -0.842012 0.657989 3.093750 +v -0.972272 0.527729 2.750000 +v -1.060660 0.439340 -2.750000 +v -1.060660 0.439340 -2.500000 +v -0.635167 1.236905 -3.345392 +v -1.375000 1.500000 -2.750000 +v -0.635167 1.236906 3.345392 +v -1.100142 1.044307 3.093750 +v -1.270334 0.973811 2.750000 +v -1.385819 0.925975 -2.750000 +v -1.385819 0.925975 -2.500000 +v -1.190785 1.500000 -3.093750 +v -0.687500 1.500000 -3.345392 +v -0.687500 1.500000 3.345392 +v -1.190784 1.500001 3.093750 +v -1.375000 1.500001 2.750000 +v -1.500000 1.500000 -2.750000 +v -1.500000 1.500000 -2.500000 +v -1.270334 2.026190 -2.750000 +v -1.100142 1.955694 -3.093750 +v -0.635167 1.763095 3.345392 +v -1.100141 1.955694 3.093750 +v -1.270334 2.026190 2.750000 +v -1.385819 2.074025 -2.750000 +v -1.385819 2.074025 -2.500000 +v -0.635167 1.763095 -3.345392 +v -0.972272 2.472272 -2.750000 +v -0.486135 1.986136 3.345392 +v -0.842011 2.342012 3.093750 +v -0.972271 2.472272 2.750000 +v -1.060660 2.560660 -2.750000 +v -1.060660 2.560660 -2.500000 +v -0.842012 2.342012 -3.093750 +v -0.486136 1.986136 -3.345392 +v -0.263094 2.135167 3.345392 +v -0.455693 2.600142 3.093750 +v -0.526189 2.770334 2.750000 +v -0.574025 2.885819 -2.750000 +v -0.574025 2.885819 -2.500000 +v -0.526190 2.770334 -2.750000 +v 0.000000 1.500000 3.437500 +v 0.000000 2.187500 3.345392 +v -0.455694 2.600142 -3.093750 +v -0.263095 2.135167 -3.345392 +v -0.000000 3.000000 -2.750000 +v -0.000000 2.875000 -2.750000 +v 0.000000 3.000000 -2.500000 +v 0.635166 1.763095 -3.345392 +v 1.100141 1.955694 -3.093750 +v 1.270333 2.026190 -2.750000 +v 0.486135 1.986136 -3.345392 +v 0.842011 2.342012 -3.093750 +v 0.972271 2.472272 -2.750000 +v 0.263094 2.135167 -3.345392 +v 0.455692 2.600142 -3.093750 +v 0.526189 2.770334 -2.750000 +v -0.000000 1.500000 -3.437500 +v -0.000000 2.187500 -3.345392 +v 0.000000 2.875000 2.500000 +v 0.526190 2.770334 2.500000 +v 0.972272 2.472272 2.500000 +v 1.270334 2.026190 2.500000 +v 1.375000 1.500000 2.500000 +v 1.270334 0.973810 2.500000 +v 0.972271 0.527729 2.500000 +v 0.526189 0.229666 2.500000 +v -0.000000 0.125001 2.500000 +v -0.526190 0.229666 2.500000 +v -0.972272 0.527729 2.500000 +v -1.270334 0.973811 2.500000 +v -1.375000 1.500001 2.500000 +v -1.270334 2.026190 2.500000 +v -0.972271 2.472272 2.500000 +v -0.526189 2.770334 2.500000 +v 0.000000 2.875000 -2.500000 +v 0.526190 2.770334 -2.500000 +v 0.972272 2.472272 -2.500000 +v 1.270334 2.026190 -2.500000 +v 1.375000 1.500000 -2.500000 +v 1.270334 0.973810 -2.500000 +v 0.972271 0.527729 -2.500000 +v 0.526189 0.229666 -2.500000 +v -0.000000 0.125001 -2.500000 +v -0.526190 0.229666 -2.500000 +v -0.972272 0.527729 -2.500000 +v -1.270334 0.973811 -2.500000 +v -1.375000 1.500001 -2.500000 +v -1.270334 2.026190 -2.500000 +v -0.972271 2.472272 -2.500000 +v -0.526189 2.770334 -2.500000 +v 1.375000 2.250000 1.500000 +v 1.375000 0.750000 1.500000 +v 1.375000 2.250000 -1.500000 +v 1.375000 0.750000 -1.500000 +v 1.000000 2.250000 -1.500000 +v 1.000000 2.250000 1.500000 +v 1.000000 0.750000 1.500000 +v 1.000000 0.750000 -1.500000 +v 1.375000 1.500000 -0.625000 +v 1.375000 1.812500 -0.541266 +v 1.375000 2.041266 -0.312500 +v 1.375000 2.125000 0.000000 +v 1.375000 2.041266 0.312500 +v 1.375000 1.812500 0.541266 +v 1.375000 1.500000 0.625000 +v 1.375000 1.187500 0.541266 +v 1.375000 0.958734 0.312500 +v 1.375000 0.875000 0.000000 +v 1.375000 0.958734 -0.312500 +v 1.375000 1.187500 -0.541266 +v 1.375000 1.500000 -0.500000 +v 1.375000 1.750000 -0.433013 +v 1.375000 1.933013 -0.250000 +v 1.375000 2.000000 0.000000 +v 1.375000 1.933013 0.250000 +v 1.375000 1.750000 0.433013 +v 1.375000 1.500000 0.500000 +v 1.375000 1.250000 0.433013 +v 1.375000 1.066987 0.250000 +v 1.375000 1.000000 0.000000 +v 1.375000 1.066987 -0.250000 +v 1.375000 1.250000 -0.433013 +v 1.625000 1.812500 -0.541266 +v 1.625000 1.500000 -0.625000 +v 1.625000 2.041266 -0.312500 +v 1.625000 2.125000 0.000000 +v 1.625000 2.041266 0.312500 +v 1.625000 1.812500 0.541266 +v 1.625000 1.500000 0.625000 +v 1.625000 1.187500 0.541266 +v 1.625000 0.958734 0.312500 +v 1.625000 0.875000 0.000000 +v 1.625000 0.958734 -0.312500 +v 1.625000 1.187500 -0.541266 +v 1.625000 1.750000 -0.433013 +v 1.625000 1.500000 -0.500000 +v 1.625000 1.933013 -0.250000 +v 1.625000 2.000000 0.000000 +v 1.625000 1.933013 0.250000 +v 1.625000 1.750000 0.433013 +v 1.625000 1.500000 0.500000 +v 1.625000 1.250000 0.433013 +v 1.625000 1.066987 0.250000 +v 1.625000 1.000000 0.000000 +v 1.625000 1.066987 -0.250000 +v 1.625000 1.250000 -0.433013 +v 1.562500 1.406250 0.500000 +v 1.562500 1.343750 0.500000 +v 1.562500 1.406250 -0.500000 +v 1.562500 1.343750 -0.500000 +v 1.562500 1.656250 0.500000 +v 1.562500 1.593750 0.500000 +v 1.562500 1.656250 -0.500000 +v 1.562500 1.593750 -0.500000 +v 1.562500 1.906250 0.375000 +v 1.562500 1.843750 0.375000 +v 1.562500 1.906250 -0.375000 +v 1.562500 1.843750 -0.375000 +v 1.562500 1.166250 0.375000 +v 1.562500 1.103750 0.375000 +v 1.562500 1.166250 -0.375000 +v 1.562500 1.103750 -0.375000 +v 1.375000 2.000000 -0.750000 +v 1.375000 1.000000 -0.750000 +v 1.375000 2.000000 -1.250000 +v 1.375000 1.000000 -1.250000 +v 1.500000 2.000000 -1.250000 +v 1.500000 2.000000 -0.750000 +v 1.500000 1.000000 -0.750000 +v 1.500000 1.000000 -1.250000 +v 1.375000 2.000000 1.250000 +v 1.375000 1.000000 1.250000 +v 1.375000 2.000000 0.750000 +v 1.375000 1.000000 0.750000 +v 1.500000 2.000000 0.750000 +v 1.500000 2.000000 1.250000 +v 1.500000 1.000000 1.250000 +v 1.500000 1.000000 0.750000 +v 1.250000 0.000000 -2.375000 +v -1.250000 0.000000 -2.375000 +v 1.250000 0.125000 -2.375000 +v -1.250000 0.125000 -2.375000 +v 1.250000 0.000000 -2.125000 +v -1.250000 0.000000 -2.125000 +v 1.250000 0.125000 -2.125000 +v -1.250000 0.125000 -2.125000 +v 1.250000 0.000000 2.125000 +v -1.250000 0.000000 2.125000 +v 1.250000 0.125000 2.125000 +v -1.250000 0.125000 2.125000 +v 1.250000 0.000000 2.375000 +v -1.250000 0.000000 2.375000 +v 1.250000 0.125000 2.375000 +v -1.250000 0.125000 2.375000 +v 1.250000 2.875000 -2.375000 +v -1.250000 2.875000 -2.375000 +v 1.250000 3.000000 -2.375000 +v -1.250000 3.000000 -2.375000 +v 1.250000 2.875000 -2.125000 +v -1.250000 2.875000 -2.125000 +v 1.250000 3.000000 -2.125000 +v -1.250000 3.000000 -2.125000 +v 1.250000 2.875000 2.125000 +v -1.250000 2.875000 2.125000 +v 1.250000 3.000000 2.125000 +v -1.250000 3.000000 2.125000 +v 1.250000 2.875000 2.375000 +v -1.250000 2.875000 2.375000 +v 1.250000 3.000000 2.375000 +v -1.250000 3.000000 2.375000 +v -1.500000 0.250000 -2.375000 +v -1.500000 2.750000 -2.375000 +v -1.375000 0.250000 -2.375000 +v -1.375000 2.750000 -2.375000 +v -1.500000 0.250000 -2.125000 +v -1.500000 2.750000 -2.125000 +v -1.375000 0.250000 -2.125000 +v -1.375000 2.750000 -2.125000 +v -1.500000 0.250000 2.125000 +v -1.500000 2.750000 2.125000 +v -1.375000 0.250000 2.125000 +v -1.375000 2.750000 2.125000 +v -1.500000 0.250000 2.375000 +v -1.500000 2.750000 2.375000 +v -1.375000 0.250000 2.375000 +v -1.375000 2.750000 2.375000 +v 1.375000 0.250000 -2.375000 +v 1.375000 2.750000 -2.375000 +v 1.500000 0.250000 -2.375000 +v 1.500000 2.750000 -2.375000 +v 1.375000 0.250000 -2.125000 +v 1.375000 2.750000 -2.125000 +v 1.500000 0.250000 -2.125000 +v 1.500000 2.750000 -2.125000 +v 1.375000 0.250000 2.125000 +v 1.375000 2.750000 2.125000 +v 1.500000 0.250000 2.125000 +v 1.500000 2.750000 2.125000 +v 1.375000 0.250000 2.375000 +v 1.375000 2.750000 2.375000 +v 1.500000 0.250000 2.375000 +v 1.500000 2.750000 2.375000 +v -1.375000 2.250000 -1.500000 +v -1.375000 0.750000 -1.500000 +v -1.375000 2.250000 1.500000 +v -1.375000 0.750000 1.500000 +v -1.000000 2.250000 1.500000 +v -1.000000 2.250000 -1.500000 +v -1.000000 0.750000 -1.500000 +v -1.000000 0.750000 1.500000 +v -1.375000 1.500000 0.625000 +v -1.375000 1.812500 0.541266 +v -1.375000 2.041266 0.312500 +v -1.375000 2.125000 0.000000 +v -1.375000 2.041266 -0.312500 +v -1.375000 1.812500 -0.541266 +v -1.375000 1.500000 -0.625000 +v -1.375000 1.187500 -0.541266 +v -1.375000 0.958734 -0.312500 +v -1.375000 0.875000 -0.000000 +v -1.375000 0.958734 0.312500 +v -1.375000 1.187500 0.541266 +v -1.375000 1.500000 0.500000 +v -1.375000 1.750000 0.433013 +v -1.375000 1.933013 0.250000 +v -1.375000 2.000000 0.000000 +v -1.375000 1.933013 -0.250000 +v -1.375000 1.750000 -0.433013 +v -1.375000 1.500000 -0.500000 +v -1.375000 1.250000 -0.433013 +v -1.375000 1.066987 -0.250000 +v -1.375000 1.000000 -0.000000 +v -1.375000 1.066987 0.250000 +v -1.375000 1.250000 0.433013 +v -1.625000 1.812500 0.541266 +v -1.625000 1.500000 0.625000 +v -1.625000 2.041266 0.312500 +v -1.625000 2.125000 0.000000 +v -1.625000 2.041266 -0.312500 +v -1.625000 1.812500 -0.541266 +v -1.625000 1.500000 -0.625000 +v -1.625000 1.187500 -0.541266 +v -1.625000 0.958734 -0.312500 +v -1.625000 0.875000 -0.000000 +v -1.625000 0.958734 0.312500 +v -1.625000 1.187500 0.541266 +v -1.625000 1.750000 0.433013 +v -1.625000 1.500000 0.500000 +v -1.625000 1.933013 0.250000 +v -1.625000 2.000000 0.000000 +v -1.625000 1.933013 -0.250000 +v -1.625000 1.750000 -0.433013 +v -1.625000 1.500000 -0.500000 +v -1.625000 1.250000 -0.433013 +v -1.625000 1.066987 -0.250000 +v -1.625000 1.000000 -0.000000 +v -1.625000 1.066987 0.250000 +v -1.625000 1.250000 0.433013 +v -1.562500 1.406250 -0.500000 +v -1.562500 1.343750 -0.500000 +v -1.562500 1.406250 0.500000 +v -1.562500 1.343750 0.500000 +v -1.562500 1.656250 -0.500000 +v -1.562500 1.593750 -0.500000 +v -1.562500 1.656250 0.500000 +v -1.562500 1.593750 0.500000 +v -1.562500 1.906250 -0.375000 +v -1.562500 1.843750 -0.375000 +v -1.562500 1.906250 0.375000 +v -1.562500 1.843750 0.375000 +v -1.562500 1.166250 -0.375000 +v -1.562500 1.103750 -0.375000 +v -1.562500 1.166250 0.375000 +v -1.562500 1.103750 0.375000 +v -1.375000 2.000000 0.750000 +v -1.375000 1.000000 0.750000 +v -1.375000 2.000000 1.250000 +v -1.375000 1.000000 1.250000 +v -1.500000 2.000000 1.250000 +v -1.500000 2.000000 0.750000 +v -1.500000 1.000000 0.750000 +v -1.500000 1.000000 1.250000 +v -1.375000 2.000000 -1.250000 +v -1.375000 1.000000 -1.250000 +v -1.375000 2.000000 -0.750000 +v -1.375000 1.000000 -0.750000 +v -1.500000 2.000000 -0.750000 +v -1.500000 2.000000 -1.250000 +v -1.500000 1.000000 -1.250000 +v -1.500000 1.000000 -0.750000 +v 1.125000 2.250000 -0.125000 +v 1.036612 2.250000 -0.088388 +v 1.000000 2.250000 0.000000 +v 1.036612 2.250000 0.088388 +v 1.125000 2.250000 0.125000 +v 1.213388 2.250000 0.088388 +v 1.250000 2.250000 -0.000000 +v 1.213388 2.250000 -0.088388 +v 1.125000 2.750000 -0.125000 +v 1.036612 2.750000 -0.088388 +v 1.000000 2.750000 0.000000 +v 1.036612 2.750000 0.088388 +v 1.125000 2.750000 0.125000 +v 1.213388 2.750000 0.088388 +v 1.250000 2.750000 -0.000000 +v 1.213388 2.750000 -0.088388 +v 1.088388 2.838388 -0.125000 +v 1.025888 2.775888 -0.088388 +v 1.025888 2.775888 0.088388 +v 1.088388 2.838388 0.125000 +v 1.150888 2.900888 0.088388 +v 1.176777 2.926777 -0.000000 +v 1.150888 2.900888 -0.088388 +v 1.000000 2.875000 -0.125000 +v 1.000000 2.786612 -0.088388 +v 1.000000 2.786612 0.088388 +v 1.000000 2.875000 0.125000 +v 1.000000 2.963388 0.088388 +v 1.000000 3.000000 -0.000000 +v 1.000000 2.963388 -0.088388 +v -1.125000 2.250000 0.125000 +v -1.036612 2.250000 0.088388 +v -1.000000 2.250000 0.000000 +v -1.036612 2.250000 -0.088388 +v -1.125000 2.250000 -0.125000 +v -1.213388 2.250000 -0.088388 +v -1.250000 2.250000 0.000000 +v -1.213388 2.250000 0.088388 +v -1.125000 2.750000 0.125000 +v -1.036612 2.750000 0.088388 +v -1.000000 2.750000 0.000000 +v -1.036612 2.750000 -0.088388 +v -1.125000 2.750000 -0.125000 +v -1.213388 2.750000 -0.088388 +v -1.250000 2.750000 0.000000 +v -1.213388 2.750000 0.088388 +v -1.088388 2.838388 0.125000 +v -1.025888 2.775888 0.088388 +v -1.025888 2.775888 -0.088388 +v -1.088388 2.838388 -0.125000 +v -1.150888 2.900888 -0.088388 +v -1.176777 2.926777 0.000000 +v -1.150888 2.900888 0.088388 +v -1.000000 2.875000 0.125000 +v -1.000000 2.786612 0.088388 +v -1.000000 2.786612 -0.088388 +v -1.000000 2.875000 -0.125000 +v -1.000000 2.963388 -0.088388 +v -1.000000 3.000000 0.000000 +v -1.000000 2.963388 0.088388 +v -0.500000 3.125000 1.000000 +v 0.500000 3.125000 1.000000 +v -0.500000 3.125000 -1.000000 +v 0.500000 3.125000 -1.000000 +v -0.500000 2.750000 -1.000000 +v -0.500000 2.750000 1.000000 +v 0.500000 2.750000 1.000000 +v 0.500000 2.750000 -1.000000 +v 0.000000 1.750000 -3.500000 +v -0.176777 1.676777 -3.500000 +v -0.250000 1.500000 -3.500000 +v -0.176777 1.323223 -3.500000 +v 0.000000 1.250000 -3.500000 +v 0.176777 1.323223 -3.500000 +v 0.250000 1.500000 -3.500000 +v 0.176777 1.676777 -3.500000 +v -0.176777 1.676777 -3.375000 +v 0.000000 1.750000 -3.375000 +v -0.250000 1.500000 -3.375000 +v -0.176777 1.323223 -3.375000 +v 0.000000 1.250000 -3.375000 +v 0.176777 1.323223 -3.375000 +v 0.250000 1.500000 -3.375000 +v 0.176777 1.676777 -3.375000 +v 0.000000 1.750000 3.500000 +v 0.176777 1.676777 3.500000 +v 0.250000 1.500000 3.500000 +v 0.176777 1.323223 3.500000 +v 0.000000 1.250000 3.500000 +v -0.176776 1.323223 3.500000 +v -0.250000 1.500000 3.500000 +v -0.176776 1.676777 3.500000 +v 0.176777 1.676777 3.375000 +v 0.000000 1.750000 3.375000 +v 0.250000 1.500000 3.375000 +v 0.176777 1.323223 3.375000 +v 0.000000 1.250000 3.375000 +v -0.176776 1.323223 3.375000 +v -0.250000 1.500000 3.375000 +v -0.176776 1.676777 3.375000 +v -0.500000 -0.125000 -1.000000 +v 0.500000 -0.125000 -1.000000 +v -0.500000 -0.125000 1.000000 +v 0.500000 -0.125000 1.000000 +v -0.500000 0.250000 1.000000 +v -0.500000 0.250000 -1.000000 +v 0.500000 0.250000 -1.000000 +v 0.500000 0.250000 1.000000 +v 1.125000 2.250000 -0.375000 +v 1.036612 2.250000 -0.338388 +v 1.000000 2.250000 -0.250000 +v 1.036612 2.250000 -0.161612 +v 1.125000 2.250000 -0.125000 +v 1.213388 2.250000 -0.161612 +v 1.250000 2.250000 -0.250000 +v 1.213388 2.250000 -0.338388 +v 1.125000 2.750000 -0.375000 +v 1.036612 2.750000 -0.338388 +v 1.000000 2.750000 -0.250000 +v 1.036612 2.750000 -0.161612 +v 1.125000 2.750000 -0.125000 +v 1.213388 2.750000 -0.161612 +v 1.250000 2.750000 -0.250000 +v 1.213388 2.750000 -0.338388 +v 1.088388 2.838388 -0.375000 +v 1.025888 2.775888 -0.338388 +v 1.025888 2.775888 -0.161612 +v 1.088388 2.838388 -0.125000 +v 1.150888 2.900888 -0.161612 +v 1.176777 2.926777 -0.250000 +v 1.150888 2.900888 -0.338388 +v 1.000000 2.875000 -0.375000 +v 1.000000 2.786612 -0.338388 +v 1.000000 2.786612 -0.161612 +v 1.000000 2.875000 -0.125000 +v 1.000000 2.963388 -0.161612 +v 1.000000 3.000000 -0.250000 +v 1.000000 2.963388 -0.338388 +v -1.125000 2.250000 -0.125000 +v -1.036612 2.250000 -0.161612 +v -1.000000 2.250000 -0.250000 +v -1.036612 2.250000 -0.338388 +v -1.125000 2.250000 -0.375000 +v -1.213388 2.250000 -0.338388 +v -1.250000 2.250000 -0.250000 +v -1.213388 2.250000 -0.161612 +v -1.125000 2.750000 -0.125000 +v -1.036612 2.750000 -0.161612 +v -1.000000 2.750000 -0.250000 +v -1.036612 2.750000 -0.338388 +v -1.125000 2.750000 -0.375000 +v -1.213388 2.750000 -0.338388 +v -1.250000 2.750000 -0.250000 +v -1.213388 2.750000 -0.161612 +v -1.088388 2.838388 -0.125000 +v -1.025888 2.775888 -0.161612 +v -1.025888 2.775888 -0.338388 +v -1.088388 2.838388 -0.375000 +v -1.150888 2.900888 -0.338388 +v -1.176777 2.926777 -0.250000 +v -1.150888 2.900888 -0.161612 +v -1.000000 2.875000 -0.125000 +v -1.000000 2.786612 -0.161612 +v -1.000000 2.786612 -0.338388 +v -1.000000 2.875000 -0.375000 +v -1.000000 2.963388 -0.338388 +v -1.000000 3.000000 -0.250000 +v -1.000000 2.963388 -0.161612 +v 1.125000 2.250000 -0.625000 +v 1.036612 2.250000 -0.588388 +v 1.000000 2.250000 -0.500000 +v 1.036612 2.250000 -0.411612 +v 1.125000 2.250000 -0.375000 +v 1.213388 2.250000 -0.411612 +v 1.250000 2.250000 -0.500000 +v 1.213388 2.250000 -0.588388 +v 1.125000 2.750000 -0.625000 +v 1.036612 2.750000 -0.588388 +v 1.000000 2.750000 -0.500000 +v 1.036612 2.750000 -0.411612 +v 1.125000 2.750000 -0.375000 +v 1.213388 2.750000 -0.411612 +v 1.250000 2.750000 -0.500000 +v 1.213388 2.750000 -0.588388 +v 1.088388 2.838388 -0.625000 +v 1.025888 2.775888 -0.588388 +v 1.025888 2.775888 -0.411612 +v 1.088388 2.838388 -0.375000 +v 1.150888 2.900888 -0.411612 +v 1.176777 2.926777 -0.500000 +v 1.150888 2.900888 -0.588388 +v 1.000000 2.875000 -0.625000 +v 1.000000 2.786612 -0.588388 +v 1.000000 2.786612 -0.411612 +v 1.000000 2.875000 -0.375000 +v 1.000000 2.963388 -0.411612 +v 1.000000 3.000000 -0.500000 +v 1.000000 2.963388 -0.588388 +v -1.125000 2.250000 -0.375000 +v -1.036612 2.250000 -0.411612 +v -1.000000 2.250000 -0.500000 +v -1.036612 2.250000 -0.588388 +v -1.125000 2.250000 -0.625000 +v -1.213388 2.250000 -0.588388 +v -1.250000 2.250000 -0.500000 +v -1.213388 2.250000 -0.411612 +v -1.125000 2.750000 -0.375000 +v -1.036612 2.750000 -0.411612 +v -1.000000 2.750000 -0.500000 +v -1.036612 2.750000 -0.588388 +v -1.125000 2.750000 -0.625000 +v -1.213388 2.750000 -0.588388 +v -1.250000 2.750000 -0.500000 +v -1.213388 2.750000 -0.411612 +v -1.088388 2.838388 -0.375000 +v -1.025888 2.775888 -0.411612 +v -1.025888 2.775888 -0.588388 +v -1.088388 2.838388 -0.625000 +v -1.150888 2.900888 -0.588388 +v -1.176777 2.926777 -0.500000 +v -1.150888 2.900888 -0.411612 +v -1.000000 2.875000 -0.375000 +v -1.000000 2.786612 -0.411612 +v -1.000000 2.786612 -0.588388 +v -1.000000 2.875000 -0.625000 +v -1.000000 2.963388 -0.588388 +v -1.000000 3.000000 -0.500000 +v -1.000000 2.963388 -0.411612 +v 1.125000 2.250000 0.375000 +v 1.036612 2.250000 0.411612 +v 1.000000 2.250000 0.500000 +v 1.036612 2.250000 0.588388 +v 1.125000 2.250000 0.625000 +v 1.213388 2.250000 0.588388 +v 1.250000 2.250000 0.500000 +v 1.213388 2.250000 0.411612 +v 1.125000 2.750000 0.375000 +v 1.036612 2.750000 0.411612 +v 1.000000 2.750000 0.500000 +v 1.036612 2.750000 0.588388 +v 1.125000 2.750000 0.625000 +v 1.213388 2.750000 0.588388 +v 1.250000 2.750000 0.500000 +v 1.213388 2.750000 0.411612 +v 1.088388 2.838388 0.375000 +v 1.025888 2.775888 0.411612 +v 1.025888 2.775888 0.588388 +v 1.088388 2.838388 0.625000 +v 1.150888 2.900888 0.588388 +v 1.176777 2.926777 0.500000 +v 1.150888 2.900888 0.411612 +v 1.000000 2.875000 0.375000 +v 1.000000 2.786612 0.411612 +v 1.000000 2.786612 0.588388 +v 1.000000 2.875000 0.625000 +v 1.000000 2.963388 0.588388 +v 1.000000 3.000000 0.500000 +v 1.000000 2.963388 0.411612 +v -1.125000 2.250000 0.625000 +v -1.036612 2.250000 0.588388 +v -1.000000 2.250000 0.500000 +v -1.036612 2.250000 0.411612 +v -1.125000 2.250000 0.375000 +v -1.213388 2.250000 0.411612 +v -1.250000 2.250000 0.500000 +v -1.213388 2.250000 0.588388 +v -1.125000 2.750000 0.625000 +v -1.036612 2.750000 0.588388 +v -1.000000 2.750000 0.500000 +v -1.036612 2.750000 0.411612 +v -1.125000 2.750000 0.375000 +v -1.213388 2.750000 0.411612 +v -1.250000 2.750000 0.500000 +v -1.213388 2.750000 0.588388 +v -1.088388 2.838388 0.625000 +v -1.025888 2.775888 0.588388 +v -1.025888 2.775888 0.411612 +v -1.088388 2.838388 0.375000 +v -1.150888 2.900888 0.411612 +v -1.176777 2.926777 0.500000 +v -1.150888 2.900888 0.588388 +v -1.000000 2.875000 0.625000 +v -1.000000 2.786612 0.588388 +v -1.000000 2.786612 0.411612 +v -1.000000 2.875000 0.375000 +v -1.000000 2.963388 0.411612 +v -1.000000 3.000000 0.500000 +v -1.000000 2.963388 0.588388 +v 1.125000 2.250000 0.125000 +v 1.036612 2.250000 0.161612 +v 1.000000 2.250000 0.250000 +v 1.036612 2.250000 0.338388 +v 1.125000 2.250000 0.375000 +v 1.213388 2.250000 0.338388 +v 1.250000 2.250000 0.250000 +v 1.213388 2.250000 0.161612 +v 1.125000 2.750000 0.125000 +v 1.036612 2.750000 0.161612 +v 1.000000 2.750000 0.250000 +v 1.036612 2.750000 0.338388 +v 1.125000 2.750000 0.375000 +v 1.213388 2.750000 0.338388 +v 1.250000 2.750000 0.250000 +v 1.213388 2.750000 0.161612 +v 1.088388 2.838388 0.125000 +v 1.025888 2.775888 0.161612 +v 1.025888 2.775888 0.338388 +v 1.088388 2.838388 0.375000 +v 1.150888 2.900888 0.338388 +v 1.176777 2.926777 0.250000 +v 1.150888 2.900888 0.161612 +v 1.000000 2.875000 0.125000 +v 1.000000 2.786612 0.161612 +v 1.000000 2.786612 0.338388 +v 1.000000 2.875000 0.375000 +v 1.000000 2.963388 0.338388 +v 1.000000 3.000000 0.250000 +v 1.000000 2.963388 0.161612 +v -1.125000 2.250000 0.375000 +v -1.036612 2.250000 0.338388 +v -1.000000 2.250000 0.250000 +v -1.036612 2.250000 0.161612 +v -1.125000 2.250000 0.125000 +v -1.213388 2.250000 0.161612 +v -1.250000 2.250000 0.250000 +v -1.213388 2.250000 0.338388 +v -1.125000 2.750000 0.375000 +v -1.036612 2.750000 0.338388 +v -1.000000 2.750000 0.250000 +v -1.036612 2.750000 0.161612 +v -1.125000 2.750000 0.125000 +v -1.213388 2.750000 0.161612 +v -1.250000 2.750000 0.250000 +v -1.213388 2.750000 0.338388 +v -1.088388 2.838388 0.375000 +v -1.025888 2.775888 0.338388 +v -1.025888 2.775888 0.161612 +v -1.088388 2.838388 0.125000 +v -1.150888 2.900888 0.161612 +v -1.176777 2.926777 0.250000 +v -1.150888 2.900888 0.338388 +v -1.000000 2.875000 0.375000 +v -1.000000 2.786612 0.338388 +v -1.000000 2.786612 0.161612 +v -1.000000 2.875000 0.125000 +v -1.000000 2.963388 0.161612 +v -1.000000 3.000000 0.250000 +v -1.000000 2.963388 0.338388 +v 1.125000 0.750000 0.125000 +v 1.036612 0.750000 0.088388 +v 1.000000 0.750000 -0.000000 +v 1.036612 0.750000 -0.088388 +v 1.125000 0.750000 -0.125000 +v 1.213388 0.750000 -0.088388 +v 1.250000 0.750000 -0.000000 +v 1.213388 0.750000 0.088388 +v 1.125000 0.250000 0.125000 +v 1.036612 0.250000 0.088388 +v 1.000000 0.250000 -0.000000 +v 1.036612 0.250000 -0.088389 +v 1.125000 0.250000 -0.125000 +v 1.213388 0.250000 -0.088389 +v 1.250000 0.250000 -0.000000 +v 1.213388 0.250000 0.088388 +v 1.088388 0.161612 0.125000 +v 1.025888 0.224112 0.088388 +v 1.025888 0.224112 -0.088389 +v 1.088388 0.161612 -0.125000 +v 1.150888 0.099112 -0.088389 +v 1.176777 0.073223 -0.000000 +v 1.150888 0.099112 0.088388 +v 1.000000 0.125000 0.125000 +v 1.000000 0.213388 0.088388 +v 1.000000 0.213388 -0.088389 +v 1.000000 0.125000 -0.125000 +v 1.000000 0.036612 -0.088389 +v 1.000000 0.000000 -0.000000 +v 1.000000 0.036612 0.088388 +v -1.125000 0.750000 -0.125000 +v -1.036612 0.750000 -0.088388 +v -1.000000 0.750000 -0.000000 +v -1.036612 0.750000 0.088388 +v -1.125000 0.750000 0.125000 +v -1.213388 0.750000 0.088388 +v -1.250000 0.750000 -0.000000 +v -1.213388 0.750000 -0.088388 +v -1.125000 0.250000 -0.125000 +v -1.036612 0.250000 -0.088389 +v -1.000000 0.250000 -0.000000 +v -1.036612 0.250000 0.088388 +v -1.125000 0.250000 0.125000 +v -1.213388 0.250000 0.088388 +v -1.250000 0.250000 -0.000000 +v -1.213388 0.250000 -0.088389 +v -1.088388 0.161612 -0.125000 +v -1.025888 0.224112 -0.088389 +v -1.025888 0.224112 0.088388 +v -1.088388 0.161612 0.125000 +v -1.150888 0.099112 0.088388 +v -1.176777 0.073223 -0.000000 +v -1.150888 0.099112 -0.088389 +v -1.000000 0.125000 -0.125000 +v -1.000000 0.213388 -0.088389 +v -1.000000 0.213388 0.088388 +v -1.000000 0.125000 0.125000 +v -1.000000 0.036612 0.088388 +v -1.000000 0.000000 -0.000000 +v -1.000000 0.036612 -0.088389 +v 1.125000 0.750000 0.375000 +v 1.036612 0.750000 0.338388 +v 1.000000 0.750000 0.250000 +v 1.036612 0.750000 0.161611 +v 1.125000 0.750000 0.125000 +v 1.213388 0.750000 0.161612 +v 1.250000 0.750000 0.250000 +v 1.213388 0.750000 0.338388 +v 1.125000 0.250000 0.375000 +v 1.036612 0.250000 0.338388 +v 1.000000 0.250000 0.250000 +v 1.036612 0.250000 0.161611 +v 1.125000 0.250000 0.125000 +v 1.213388 0.250000 0.161611 +v 1.250000 0.250000 0.250000 +v 1.213388 0.250000 0.338388 +v 1.088388 0.161612 0.375000 +v 1.025888 0.224112 0.338388 +v 1.025888 0.224112 0.161611 +v 1.088388 0.161612 0.125000 +v 1.150888 0.099112 0.161611 +v 1.176777 0.073223 0.250000 +v 1.150888 0.099112 0.338388 +v 1.000000 0.125000 0.375000 +v 1.000000 0.213388 0.338388 +v 1.000000 0.213388 0.161611 +v 1.000000 0.125000 0.125000 +v 1.000000 0.036612 0.161611 +v 1.000000 0.000000 0.250000 +v 1.000000 0.036612 0.338388 +v -1.125000 0.750000 0.125000 +v -1.036612 0.750000 0.161611 +v -1.000000 0.750000 0.250000 +v -1.036612 0.750000 0.338388 +v -1.125000 0.750000 0.375000 +v -1.213388 0.750000 0.338388 +v -1.250000 0.750000 0.250000 +v -1.213388 0.750000 0.161611 +v -1.125000 0.250000 0.125000 +v -1.036612 0.250000 0.161611 +v -1.000000 0.250000 0.250000 +v -1.036612 0.250000 0.338388 +v -1.125000 0.250000 0.375000 +v -1.213388 0.250000 0.338388 +v -1.250000 0.250000 0.250000 +v -1.213388 0.250000 0.161611 +v -1.088388 0.161612 0.125000 +v -1.025888 0.224112 0.161611 +v -1.025888 0.224112 0.338388 +v -1.088388 0.161612 0.375000 +v -1.150888 0.099112 0.338388 +v -1.176777 0.073223 0.250000 +v -1.150888 0.099112 0.161611 +v -1.000000 0.125000 0.125000 +v -1.000000 0.213388 0.161611 +v -1.000000 0.213388 0.338388 +v -1.000000 0.125000 0.375000 +v -1.000000 0.036612 0.338388 +v -1.000000 0.000000 0.250000 +v -1.000000 0.036612 0.161611 +v 1.125000 0.750000 0.625000 +v 1.036612 0.750000 0.588388 +v 1.000000 0.750000 0.500000 +v 1.036612 0.750000 0.411612 +v 1.125000 0.750000 0.375000 +v 1.213388 0.750000 0.411612 +v 1.250000 0.750000 0.500000 +v 1.213388 0.750000 0.588388 +v 1.125000 0.250000 0.625000 +v 1.036612 0.250000 0.588388 +v 1.000000 0.250000 0.500000 +v 1.036612 0.250000 0.411611 +v 1.125000 0.250000 0.375000 +v 1.213388 0.250000 0.411611 +v 1.250000 0.250000 0.500000 +v 1.213388 0.250000 0.588388 +v 1.088388 0.161612 0.625000 +v 1.025888 0.224112 0.588388 +v 1.025888 0.224112 0.411611 +v 1.088388 0.161612 0.375000 +v 1.150888 0.099112 0.411611 +v 1.176777 0.073223 0.500000 +v 1.150888 0.099112 0.588388 +v 1.000000 0.125000 0.625000 +v 1.000000 0.213388 0.588388 +v 1.000000 0.213388 0.411611 +v 1.000000 0.125000 0.375000 +v 1.000000 0.036612 0.411611 +v 1.000000 0.000000 0.500000 +v 1.000000 0.036612 0.588388 +v -1.125000 0.750000 0.375000 +v -1.036612 0.750000 0.411612 +v -1.000000 0.750000 0.500000 +v -1.036612 0.750000 0.588388 +v -1.125000 0.750000 0.625000 +v -1.213388 0.750000 0.588388 +v -1.250000 0.750000 0.500000 +v -1.213388 0.750000 0.411612 +v -1.125000 0.250000 0.375000 +v -1.036612 0.250000 0.411611 +v -1.000000 0.250000 0.500000 +v -1.036612 0.250000 0.588388 +v -1.125000 0.250000 0.625000 +v -1.213388 0.250000 0.588388 +v -1.250000 0.250000 0.500000 +v -1.213388 0.250000 0.411611 +v -1.088388 0.161612 0.375000 +v -1.025888 0.224112 0.411611 +v -1.025888 0.224112 0.588388 +v -1.088388 0.161612 0.625000 +v -1.150888 0.099112 0.588388 +v -1.176777 0.073223 0.500000 +v -1.150888 0.099112 0.411611 +v -1.000000 0.125000 0.375000 +v -1.000000 0.213388 0.411611 +v -1.000000 0.213388 0.588388 +v -1.000000 0.125000 0.625000 +v -1.000000 0.036612 0.588388 +v -1.000000 0.000000 0.500000 +v -1.000000 0.036612 0.411611 +v 1.125000 0.750000 -0.375000 +v 1.036612 0.750000 -0.411612 +v 1.000000 0.750000 -0.500000 +v 1.036612 0.750000 -0.588389 +v 1.125000 0.750000 -0.625000 +v 1.213388 0.750000 -0.588389 +v 1.250000 0.750000 -0.500000 +v 1.213388 0.750000 -0.411612 +v 1.125000 0.250000 -0.375000 +v 1.036612 0.250000 -0.411612 +v 1.000000 0.250000 -0.500000 +v 1.036612 0.250000 -0.588389 +v 1.125000 0.250000 -0.625000 +v 1.213388 0.250000 -0.588389 +v 1.250000 0.250000 -0.500000 +v 1.213388 0.250000 -0.411612 +v 1.088388 0.161612 -0.375000 +v 1.025888 0.224112 -0.411612 +v 1.025888 0.224112 -0.588389 +v 1.088388 0.161612 -0.625000 +v 1.150888 0.099112 -0.588389 +v 1.176777 0.073223 -0.500000 +v 1.150888 0.099112 -0.411612 +v 1.000000 0.125000 -0.375000 +v 1.000000 0.213388 -0.411612 +v 1.000000 0.213388 -0.588389 +v 1.000000 0.125000 -0.625000 +v 1.000000 0.036612 -0.588389 +v 1.000000 0.000000 -0.500000 +v 1.000000 0.036612 -0.411612 +v -1.125000 0.750000 -0.625000 +v -1.036612 0.750000 -0.588389 +v -1.000000 0.750000 -0.500000 +v -1.036612 0.750000 -0.411612 +v -1.125000 0.750000 -0.375000 +v -1.213388 0.750000 -0.411612 +v -1.250000 0.750000 -0.500000 +v -1.213388 0.750000 -0.588389 +v -1.125000 0.250000 -0.625000 +v -1.036612 0.250000 -0.588389 +v -1.000000 0.250000 -0.500000 +v -1.036612 0.250000 -0.411612 +v -1.125000 0.250000 -0.375000 +v -1.213388 0.250000 -0.411612 +v -1.250000 0.250000 -0.500000 +v -1.213388 0.250000 -0.588389 +v -1.088388 0.161612 -0.625000 +v -1.025888 0.224112 -0.588389 +v -1.025888 0.224112 -0.411612 +v -1.088388 0.161612 -0.375000 +v -1.150888 0.099112 -0.411612 +v -1.176777 0.073223 -0.500000 +v -1.150888 0.099112 -0.588389 +v -1.000000 0.125000 -0.625000 +v -1.000000 0.213388 -0.588389 +v -1.000000 0.213388 -0.411612 +v -1.000000 0.125000 -0.375000 +v -1.000000 0.036612 -0.411612 +v -1.000000 0.000000 -0.500000 +v -1.000000 0.036612 -0.588389 +v 1.125000 0.750000 -0.125000 +v 1.036612 0.750000 -0.161612 +v 1.000000 0.750000 -0.250000 +v 1.036612 0.750000 -0.338388 +v 1.125000 0.750000 -0.375000 +v 1.213388 0.750000 -0.338388 +v 1.250000 0.750000 -0.250000 +v 1.213388 0.750000 -0.161612 +v 1.125000 0.250000 -0.125000 +v 1.036612 0.250000 -0.161612 +v 1.000000 0.250000 -0.250000 +v 1.036612 0.250000 -0.338389 +v 1.125000 0.250000 -0.375000 +v 1.213388 0.250000 -0.338389 +v 1.250000 0.250000 -0.250000 +v 1.213388 0.250000 -0.161612 +v 1.088388 0.161612 -0.125000 +v 1.025888 0.224112 -0.161612 +v 1.025888 0.224112 -0.338389 +v 1.088388 0.161612 -0.375000 +v 1.150888 0.099112 -0.338389 +v 1.176777 0.073223 -0.250000 +v 1.150888 0.099112 -0.161612 +v 1.000000 0.125000 -0.125000 +v 1.000000 0.213388 -0.161612 +v 1.000000 0.213388 -0.338389 +v 1.000000 0.125000 -0.375000 +v 1.000000 0.036612 -0.338389 +v 1.000000 0.000000 -0.250000 +v 1.000000 0.036612 -0.161612 +v -1.125000 0.750000 -0.375000 +v -1.036612 0.750000 -0.338388 +v -1.000000 0.750000 -0.250000 +v -1.036612 0.750000 -0.161612 +v -1.125000 0.750000 -0.125000 +v -1.213388 0.750000 -0.161612 +v -1.250000 0.750000 -0.250000 +v -1.213388 0.750000 -0.338388 +v -1.125000 0.250000 -0.375000 +v -1.036612 0.250000 -0.338389 +v -1.000000 0.250000 -0.250000 +v -1.036612 0.250000 -0.161612 +v -1.125000 0.250000 -0.125000 +v -1.213388 0.250000 -0.161612 +v -1.250000 0.250000 -0.250000 +v -1.213388 0.250000 -0.338389 +v -1.088388 0.161612 -0.375000 +v -1.025888 0.224112 -0.338389 +v -1.025888 0.224112 -0.161612 +v -1.088388 0.161612 -0.125000 +v -1.150888 0.099112 -0.161612 +v -1.176777 0.073223 -0.250000 +v -1.150888 0.099112 -0.338389 +v -1.000000 0.125000 -0.375000 +v -1.000000 0.213388 -0.338389 +v -1.000000 0.213388 -0.161612 +v -1.000000 0.125000 -0.125000 +v -1.000000 0.036612 -0.161612 +v -1.000000 0.000000 -0.250000 +v -1.000000 0.036612 -0.338389 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.096000 0.500000 +vt 0.104000 0.437500 +vt 0.104000 0.500000 +vt 0.104000 0.562500 +vt 0.096000 0.625000 +vt 0.096000 0.562500 +vt 0.104000 0.625000 +vt 0.096000 0.687500 +vt 0.104000 0.687500 +vt 0.096000 0.750000 +vt 0.104000 0.750000 +vt 0.096000 0.812500 +vt 0.104000 0.812500 +vt 0.096000 0.875000 +vt 0.096000 0.937500 +vt 0.104000 0.875000 +vt 0.104000 0.937500 +vt 0.096000 1.000000 +vt 0.104000 1.000000 +vt 0.096000 0.062500 +vt 0.104000 0.000000 +vt 0.104000 0.062500 +vt 0.096000 0.125000 +vt 0.104000 0.125000 +vt 0.096000 0.187500 +vt 0.104000 0.187500 +vt 0.104000 0.250000 +vt 0.104000 0.312500 +vt 0.096000 0.250000 +vt 0.104000 0.375000 +vt 0.096000 0.312500 +vt 0.096000 0.375000 +vt 0.472000 0.500000 +vt 0.480000 0.562500 +vt 0.472000 0.562500 +vt 0.480000 0.437500 +vt 0.472000 0.437500 +vt 0.480000 0.375000 +vt 0.472000 0.375000 +vt 0.480000 0.312500 +vt 0.472000 0.312500 +vt 0.480000 0.250000 +vt 0.472000 0.250000 +vt 0.480000 0.187500 +vt 0.472000 0.187500 +vt 0.480000 0.125000 +vt 0.480000 0.062500 +vt 0.472000 0.125000 +vt 0.472000 0.062500 +vt 0.480000 0.000000 +vt 0.472000 0.000000 +vt 0.480000 0.937500 +vt 0.472000 1.000000 +vt 0.472000 0.937500 +vt 0.480000 0.875000 +vt 0.472000 0.875000 +vt 0.480000 0.812500 +vt 0.472000 0.812500 +vt 0.472000 0.750000 +vt 0.472000 0.687500 +vt 0.480000 0.750000 +vt 0.472000 0.625000 +vt 0.480000 0.687500 +vt 0.480000 0.625000 +vt 0.120000 0.750000 +vt 0.128000 0.812500 +vt 0.120000 0.812500 +vt 0.128000 0.875000 +vt 0.120000 0.875000 +vt 0.128000 0.937500 +vt 0.120000 0.937500 +vt 0.128000 1.000000 +vt 0.120000 1.000000 +vt 0.120000 -0.000000 +vt 0.128000 0.062500 +vt 0.120000 0.062500 +vt 0.128000 0.125000 +vt 0.120000 0.125000 +vt 0.128000 0.187500 +vt 0.120000 0.187500 +vt 0.120000 0.250000 +vt 0.128000 0.250000 +vt 0.120000 0.312500 +vt 0.128000 0.312500 +vt 0.120000 0.375000 +vt 0.128000 0.375000 +vt 0.120000 0.437500 +vt 0.128000 0.500000 +vt 0.120000 0.500000 +vt 0.120000 0.562500 +vt 0.128000 0.562500 +vt 0.128000 0.625000 +vt 0.120000 0.625000 +vt 0.128000 0.687500 +vt 0.120000 0.687500 +vt 0.128000 0.750000 +vt 0.456000 0.250000 +vt 0.448000 0.312500 +vt 0.448000 0.250000 +vt 0.456000 0.312500 +vt 0.448000 0.375000 +vt 0.456000 0.375000 +vt 0.448000 0.437500 +vt 0.448000 0.500000 +vt 0.456000 0.437500 +vt 0.456000 0.500000 +vt 0.448000 0.562500 +vt 0.456000 0.562500 +vt 0.448000 0.625000 +vt 0.456000 0.625000 +vt 0.448000 0.687500 +vt 0.456000 0.687500 +vt 0.448000 0.750000 +vt 0.456000 0.750000 +vt 0.448000 0.812500 +vt 0.456000 0.812500 +vt 0.448000 0.875000 +vt 0.448000 0.937500 +vt 0.456000 0.875000 +vt 0.456000 0.937500 +vt 0.456000 1.000000 +vt 0.456000 0.062500 +vt 0.448000 0.000000 +vt 0.456000 -0.000000 +vt 0.456000 0.125000 +vt 0.448000 0.062500 +vt 0.456000 0.187500 +vt 0.448000 0.125000 +vt 0.448000 0.187500 +vt 0.600000 0.156250 +vt 0.792000 0.343750 +vt 0.600000 0.343750 +vt 0.792000 0.109375 +vt 0.792000 0.156250 +vt 0.600000 0.390625 +vt 0.816000 0.343750 +vt 0.576000 0.156250 +vt 0.904000 0.062500 +vt 0.884000 0.078125 +vt 0.884000 0.062500 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.904000 0.062500 +vt 0.884000 0.078125 +vt 0.884000 0.062500 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.904000 0.031250 +vt 0.968000 0.039062 +vt 0.904000 0.039062 +vt 0.904000 0.031250 +vt 0.968000 0.039062 +vt 0.904000 0.039062 +vt 0.912000 0.031250 +vt 0.960000 0.039062 +vt 0.912000 0.039062 +vt 0.912000 0.031250 +vt 0.960000 0.039062 +vt 0.912000 0.039062 +vt 0.824000 0.062500 +vt 0.856000 0.187500 +vt 0.824000 0.187500 +vt 0.824000 0.062500 +vt 0.856000 0.187500 +vt 0.824000 0.187500 +vt 0.864000 0.187500 +vt 0.856000 0.062500 +vt 0.864000 0.062500 +vt 0.816000 0.062500 +vt 0.816000 0.187500 +vt 0.856000 0.046875 +vt 0.824000 0.046875 +vt 0.824000 0.203125 +vt 0.856000 0.203125 +vt 0.864000 0.187500 +vt 0.856000 0.062500 +vt 0.864000 0.062500 +vt 0.816000 0.062500 +vt 0.816000 0.187500 +vt 0.856000 0.046875 +vt 0.824000 0.046875 +vt 0.824000 0.203125 +vt 0.856000 0.203125 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.600000 0.156250 +vt 0.792000 0.343750 +vt 0.600000 0.343750 +vt 0.792000 0.109375 +vt 0.792000 0.156250 +vt 0.600000 0.390625 +vt 0.816000 0.343750 +vt 0.576000 0.156250 +vt 0.904000 0.062500 +vt 0.884000 0.078125 +vt 0.884000 0.062500 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.864000 0.062500 +vt 0.868000 0.078125 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.864000 0.062500 +vt 0.868000 0.078125 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.864000 0.062500 +vt 0.868000 0.078125 +vt 0.904000 0.062500 +vt 0.884000 0.078125 +vt 0.884000 0.062500 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.904000 0.031250 +vt 0.968000 0.039062 +vt 0.904000 0.039063 +vt 0.904000 0.031250 +vt 0.968000 0.039062 +vt 0.904000 0.039063 +vt 0.912000 0.031250 +vt 0.960000 0.039062 +vt 0.912000 0.039063 +vt 0.912000 0.031250 +vt 0.960000 0.039062 +vt 0.912000 0.039063 +vt 0.824000 0.062500 +vt 0.856000 0.187500 +vt 0.824000 0.187500 +vt 0.824000 0.062500 +vt 0.856000 0.187500 +vt 0.824000 0.187500 +vt 0.864000 0.187500 +vt 0.856000 0.062500 +vt 0.864000 0.062500 +vt 0.816000 0.062500 +vt 0.816000 0.187500 +vt 0.856000 0.046875 +vt 0.824000 0.046875 +vt 0.824000 0.203125 +vt 0.856000 0.203125 +vt 0.864000 0.187500 +vt 0.856000 0.062500 +vt 0.864000 0.062500 +vt 0.816000 0.062500 +vt 0.816000 0.187500 +vt 0.856000 0.046875 +vt 0.824000 0.046875 +vt 0.824000 0.203125 +vt 0.856000 0.203125 +vt 0.600000 0.437500 +vt 0.728000 0.562500 +vt 0.600000 0.562500 +vt 0.576000 0.562500 +vt 0.600000 0.390625 +vt 0.728000 0.437500 +vt 0.728000 0.609375 +vt 0.752000 0.437500 +vt 0.744002 0.078125 +vt 0.760000 0.046879 +vt 0.775998 0.078125 +vt 0.760000 0.046879 +vt 0.771312 0.056031 +vt 0.775998 0.078125 +vt 0.728000 0.562500 +vt 0.600000 0.437500 +vt 0.728000 0.437500 +vt 0.752000 0.437500 +vt 0.728000 0.609375 +vt 0.600000 0.562500 +vt 0.600000 0.390625 +vt 0.576000 0.562500 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 1.000000 -0.000000 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.096000 0.437500 +vt 0.096000 -0.000000 +vt 0.480000 0.500000 +vt 0.480000 1.000000 +vt 0.128000 0.000000 +vt 0.128000 0.437500 +vt 0.448000 1.000000 +vt 0.600000 0.109375 +vt 0.792000 0.390625 +vt 0.816000 0.156250 +vt 0.576000 0.343750 +vt 0.900000 0.078125 +vt 0.904000 0.062500 +vt 0.904000 0.062500 +vt 0.904000 0.062500 +vt 0.904000 0.062500 +vt 0.900000 0.078125 +vt 0.968000 0.031250 +vt 0.968000 0.031250 +vt 0.960000 0.031250 +vt 0.960000 0.031250 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.600000 0.109375 +vt 0.792000 0.390625 +vt 0.816000 0.156250 +vt 0.576000 0.343750 +vt 0.900000 0.078125 +vt 0.904000 0.062500 +vt 0.904000 0.062500 +vt 0.904000 0.062500 +vt 0.900000 0.078125 +vt 0.904000 0.062500 +vt 0.968000 0.031250 +vt 0.968000 0.031250 +vt 0.960000 0.031250 +vt 0.960000 0.031250 +vt 0.576000 0.437500 +vt 0.728000 0.390625 +vt 0.600000 0.609375 +vt 0.752000 0.562500 +vt 0.771312 0.100219 +vt 0.760000 0.109371 +vt 0.748688 0.100219 +vt 0.748688 0.056031 +vt 0.771312 0.056031 +vt 0.771312 0.100219 +vt 0.760000 0.109371 +vt 0.748688 0.100219 +vt 0.744002 0.078125 +vt 0.748688 0.056031 +vt 0.752000 0.562500 +vt 0.600000 0.609375 +vt 0.728000 0.390625 +vt 0.576000 0.437500 +vt 0.072000 0.437500 +vt 0.040000 0.484375 +vt 0.000000 0.468750 +vt 0.040000 0.453125 +vt 0.504000 0.875000 +vt 0.536000 0.765625 +vt 0.576000 0.781250 +vt 0.536000 0.796875 +vt 0.072000 0.500000 +vt 0.504000 0.750000 +vt 0.504000 0.812500 +vt 0.536000 0.703125 +vt 0.576000 0.718750 +vt 0.536000 0.734375 +vt 0.040000 0.421875 +vt 0.072000 0.375000 +vt 0.504000 0.687500 +vt -0.000000 0.406250 +vt 0.040000 0.390625 +vt 0.536000 0.640625 +vt 0.576000 0.656250 +vt 0.536000 0.671875 +vt 0.040000 0.359375 +vt 0.072000 0.312500 +vt 0.504000 0.625000 +vt 0.000000 0.343750 +vt 0.040000 0.328125 +vt 0.040000 0.296875 +vt 0.072000 0.250000 +vt 0.536000 0.578125 +vt 0.576000 0.593750 +vt 0.536000 0.609375 +vt 0.000000 0.281250 +vt 0.040000 0.265625 +vt 0.504000 0.562500 +vt 0.040000 0.203125 +vt 0.072000 0.187500 +vt 0.040000 0.234375 +vt -0.000000 0.218750 +vt 0.536000 0.515625 +vt 0.504000 0.500000 +vt 0.576000 0.531250 +vt 0.536000 0.546875 +vt 0.072000 0.125000 +vt 0.040000 0.171875 +vt -0.000000 0.156250 +vt 0.040000 0.140625 +vt 0.040000 0.109375 +vt -0.000000 0.093750 +vt 0.040000 0.078125 +vt 0.072000 0.062500 +vt 0.072000 -0.000000 +vt 0.040000 0.046875 +vt 0.000000 0.031250 +vt 0.040000 0.015625 +vt 0.072000 1.000000 +vt 0.040000 0.984375 +vt 0.000000 0.968750 +vt 0.040000 0.953125 +vt 0.072000 0.937500 +vt 0.040000 0.921875 +vt -0.000000 0.906250 +vt 0.040000 0.890625 +vt 0.072000 0.875000 +vt 0.040000 0.859375 +vt 0.000000 0.843750 +vt 0.040000 0.828125 +vt 0.072000 0.812500 +vt 0.040000 0.796875 +vt 0.072000 0.750000 +vt -0.000000 0.781250 +vt 0.040000 0.765625 +vt 0.040000 0.703125 +vt 0.072000 0.687500 +vt 0.040000 0.734375 +vt 0.000000 0.718750 +vt 0.040000 0.671875 +vt 0.072000 0.625000 +vt -0.000000 0.656250 +vt 0.040000 0.640625 +vt 0.040000 0.578125 +vt 0.072000 0.562500 +vt 0.040000 0.609375 +vt -0.000000 0.593750 +vt 0.040000 0.546875 +vt 0.000000 0.531250 +vt 0.040000 0.515625 +vt 0.536000 0.828125 +vt 0.576000 0.843750 +vt 0.536000 0.859375 +vt 0.504000 0.937500 +vt 0.536000 0.890625 +vt 0.576000 0.906250 +vt 0.536000 0.921875 +vt 0.504000 1.000000 +vt 0.536000 0.953125 +vt 0.576000 0.968750 +vt 0.536000 0.984375 +vt 0.504000 -0.000000 +vt 0.536000 0.015625 +vt 0.576000 0.031250 +vt 0.536000 0.046875 +vt 0.504000 0.062500 +vt 0.536000 0.078125 +vt 0.576000 0.093750 +vt 0.536000 0.109375 +vt 0.504000 0.125000 +vt 0.536000 0.140625 +vt 0.576000 0.156250 +vt 0.536000 0.171875 +vt 0.504000 0.187500 +vt 0.536000 0.203125 +vt 0.504000 0.250000 +vt 0.576000 0.218750 +vt 0.536000 0.234375 +vt 0.536000 0.265625 +vt 0.504000 0.312500 +vt 0.576000 0.281250 +vt 0.536000 0.296875 +vt 0.536000 0.359375 +vt 0.504000 0.375000 +vt 0.536000 0.328125 +vt 0.576000 0.343750 +vt 0.536000 0.390625 +vt 0.504000 0.437500 +vt 0.576000 0.406250 +vt 0.536000 0.421875 +vt 0.536000 0.484375 +vt 0.536000 0.453125 +vt 0.576000 0.468750 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.884000 0.109375 +vt 0.900000 0.109375 +vt 0.904000 0.031250 +vt 0.884000 0.031250 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.904000 0.031250 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.900000 0.109375 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.868000 0.109375 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.884000 0.109375 +vt 0.900000 0.109375 +vt 0.904000 0.031250 +vt 0.884000 0.031250 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.904000 0.031250 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.900000 0.109375 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.868000 0.109375 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.920000 0.203125 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.484375 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.492188 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.780000 0.046875 +vt 0.792000 0.031250 +vt 0.792000 0.046875 +vt 0.804000 0.046875 +vt 0.804000 0.031250 +vt 0.828000 0.046875 +vt 0.816000 0.031250 +vt 0.828000 0.031250 +vt 0.744000 0.046875 +vt 0.756000 0.031250 +vt 0.756000 0.046875 +vt 0.768000 0.046875 +vt 0.780000 0.031250 +vt 0.816000 0.046875 +vt 0.840000 0.031250 +vt 0.840000 0.046875 +vt 0.768000 0.031250 +vt 0.780000 0.046875 +vt 0.792000 0.031250 +vt 0.792000 0.046875 +vt 0.804000 0.031250 +vt 0.804000 0.046875 +vt 0.828000 0.046875 +vt 0.816000 0.031250 +vt 0.828000 0.031250 +vt 0.744000 0.046875 +vt 0.756000 0.031250 +vt 0.756000 0.046875 +vt 0.768000 0.046875 +vt 0.780000 0.031250 +vt 0.816000 0.046875 +vt 0.840000 0.031250 +vt 0.840000 0.046875 +vt 0.768000 0.031250 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.920000 0.203125 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.484375 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.492188 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.492188 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.484375 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.468750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.896000 0.195312 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.492188 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.484375 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.872000 0.218750 +vt 0.864000 0.468750 +vt 0.864000 0.218750 +vt 0.880000 0.468750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.920000 0.203125 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.484375 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.492188 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.468750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.928000 0.578125 +vt 0.920000 0.515625 +vt 0.928000 0.515625 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.578125 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.492188 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.484375 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.872000 0.218750 +vt 0.864000 0.468750 +vt 0.864000 0.218750 +vt 0.880000 0.468750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.888000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.492188 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.484375 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.888000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.492188 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.484375 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.468750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.928000 0.578125 +vt 0.920000 0.515625 +vt 0.928000 0.515625 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.578125 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.484375 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.492188 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.872000 0.218750 +vt 0.864000 0.468750 +vt 0.864000 0.218750 +vt 0.880000 0.468750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.492188 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.484375 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vt 0.744000 0.031250 +vt 0.744000 0.031250 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vt 0.872000 0.468750 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vt 0.872000 0.468750 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vt 0.872000 0.468750 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.0000 0.8814 0.4723 +vn 0.2738 0.6610 0.6987 +vn 0.3373 0.8143 0.4723 +vn -0.0000 0.3125 0.9499 +vn 0.1196 0.2888 0.9499 +vn -0.8143 -0.3373 -0.4723 +vn -0.5059 -0.5059 -0.6987 +vn -0.6233 -0.6233 -0.4723 +vn -0.3125 -0.0000 -0.9499 +vn -0.2888 -0.1196 -0.9499 +vn -0.0000 0.7155 0.6987 +vn -0.7155 -0.0000 -0.6987 +vn -0.8814 -0.0000 -0.4723 +vn -0.6610 -0.2738 -0.6987 +vn -0.2888 0.1196 -0.9499 +vn 0.5059 0.5059 0.6987 +vn -0.6610 0.2738 -0.6987 +vn -0.8143 0.3373 -0.4723 +vn 0.6233 0.6233 0.4723 +vn 0.2210 0.2210 0.9499 +vn -0.2210 0.2210 -0.9499 +vn 0.6610 0.2738 0.6987 +vn -0.5059 0.5059 -0.6987 +vn -0.6233 0.6233 -0.4723 +vn 0.8143 0.3373 0.4723 +vn 0.2888 0.1196 0.9499 +vn 0.7155 -0.0000 0.6987 +vn -0.1196 0.2888 -0.9499 +vn 0.8814 -0.0000 0.4723 +vn 0.3126 0.0000 0.9499 +vn -0.2738 0.6610 -0.6987 +vn -0.3373 0.8143 -0.4723 +vn 0.2888 -0.1196 0.9499 +vn 0.6610 -0.2738 0.6987 +vn 0.8143 -0.3373 0.4723 +vn 0.0000 0.3125 -0.9499 +vn 0.0000 0.7155 -0.6987 +vn -0.0000 0.8814 -0.4723 +vn 0.5059 -0.5059 0.6987 +vn 0.6233 -0.6233 0.4723 +vn 0.2210 -0.2210 0.9499 +vn 0.3373 -0.8143 0.4723 +vn 0.1196 -0.2888 0.9499 +vn 0.2738 -0.6610 0.6987 +vn -0.0000 -0.7155 0.6987 +vn -0.0000 -0.8814 0.4723 +vn -0.0000 -0.3125 0.9499 +vn -0.3373 -0.8143 0.4723 +vn -0.1196 -0.2888 0.9499 +vn -0.2738 -0.6610 0.6987 +vn -0.6233 -0.6233 0.4723 +vn -0.2210 -0.2210 0.9499 +vn -0.5059 -0.5059 0.6987 +vn -0.2888 -0.1196 0.9499 +vn -0.6610 -0.2738 0.6987 +vn -0.8143 -0.3373 0.4723 +vn -0.7155 0.0000 0.6987 +vn -0.8814 0.0000 0.4723 +vn -0.3125 0.0000 0.9499 +vn -0.2888 0.1196 0.9499 +vn -0.6610 0.2738 0.6987 +vn -0.8143 0.3373 0.4723 +vn -0.5059 0.5059 0.6987 +vn -0.6233 0.6233 0.4723 +vn -0.2210 0.2210 0.9499 +vn -0.1196 0.2888 0.9499 +vn -0.2738 0.6610 0.6987 +vn -0.3373 0.8143 0.4723 +vn -0.2210 -0.2210 -0.9499 +vn -0.2738 -0.6610 -0.6987 +vn -0.3373 -0.8143 -0.4723 +vn -0.1196 -0.2888 -0.9499 +vn -0.0000 -0.7155 -0.6987 +vn 0.0000 -0.8814 -0.4723 +vn -0.0000 -0.3125 -0.9499 +vn 0.3373 -0.8143 -0.4723 +vn 0.1196 -0.2888 -0.9499 +vn 0.2738 -0.6610 -0.6987 +vn 0.6233 -0.6233 -0.4723 +vn 0.2210 -0.2210 -0.9499 +vn 0.5059 -0.5059 -0.6987 +vn 0.2888 -0.1196 -0.9499 +vn 0.6610 -0.2738 -0.6987 +vn 0.8143 -0.3373 -0.4723 +vn 0.7155 0.0000 -0.6987 +vn 0.8814 0.0000 -0.4723 +vn 0.3125 0.0000 -0.9499 +vn 0.6610 0.2738 -0.6987 +vn 0.8143 0.3373 -0.4723 +vn 0.2888 0.1196 -0.9499 +vn 0.2210 0.2210 -0.9499 +vn 0.5059 0.5059 -0.6987 +vn 0.6233 0.6233 -0.4723 +vn 0.2738 0.6610 -0.6987 +vn 0.3373 0.8143 -0.4723 +vn 0.1196 0.2888 -0.9499 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 0.8660 0.5000 +vn 0.0000 -0.5000 0.8660 +vn 0.7071 0.0000 -0.7071 +vn 0.9824 0.1866 -0.0000 +vn 0.7071 0.0000 0.7071 +vn 0.0473 0.0196 0.9987 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0473 0.0196 -0.9987 +vn 0.7194 0.1448 -0.6794 +vn 0.7194 0.1448 0.6794 +vn -0.6737 -0.1363 0.7263 +vn -0.6737 -0.1363 -0.7263 +vn -0.4617 -0.4617 -0.7574 +vn 0.0671 0.0671 -0.9955 +vn 0.5294 0.5294 -0.6630 +vn 0.5294 0.5294 0.6630 +vn -0.4617 -0.4617 0.7574 +vn 0.0671 0.0671 0.9955 +vn 0.1866 0.9824 0.0000 +vn 0.1448 0.7194 0.6794 +vn 0.0196 0.0473 0.9987 +vn -0.1363 -0.6737 -0.7263 +vn 0.0196 0.0473 -0.9987 +vn 0.1448 0.7194 -0.6794 +vn -0.1363 -0.6737 0.7263 +vn -0.9824 0.1866 0.0000 +vn -0.0473 0.0196 -0.9987 +vn -0.0473 0.0196 0.9987 +vn -0.7194 0.1448 0.6794 +vn -0.7194 0.1448 -0.6794 +vn 0.6737 -0.1363 -0.7263 +vn 0.6737 -0.1363 0.7263 +vn -0.0671 0.0671 0.9955 +vn -0.5294 0.5294 0.6630 +vn -0.5294 0.5294 -0.6630 +vn -0.0671 0.0671 -0.9955 +vn 0.4617 -0.4617 -0.7574 +vn -0.1866 0.9824 -0.0000 +vn -0.1448 0.7194 -0.6794 +vn -0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 0.7263 +vn -0.0196 0.0473 0.9987 +vn -0.1448 0.7194 0.6794 +vn 0.1363 -0.6737 -0.7263 +vn 0.4617 -0.4617 0.7574 +vn 0.9824 -0.1866 0.0000 +vn 0.0473 -0.0196 -0.9987 +vn 0.0473 -0.0196 0.9987 +vn 0.7194 -0.1448 0.6794 +vn 0.7194 -0.1448 -0.6794 +vn -0.6737 0.1363 -0.7263 +vn -0.6737 0.1363 0.7263 +vn -0.4617 0.4617 0.7574 +vn 0.0671 -0.0671 0.9955 +vn 0.5294 -0.5294 0.6630 +vn 0.5294 -0.5294 -0.6630 +vn -0.4617 0.4617 -0.7574 +vn 0.0671 -0.0671 -0.9955 +vn 0.1866 -0.9824 -0.0000 +vn 0.1448 -0.7194 -0.6794 +vn 0.0196 -0.0473 -0.9987 +vn 0.0196 -0.0473 0.9987 +vn 0.1448 -0.7194 0.6794 +vn -0.1363 0.6737 -0.7263 +vn -0.1363 0.6737 0.7263 +vn -0.9824 -0.1866 0.0000 +vn -0.0473 -0.0196 0.9987 +vn 0.6737 0.1363 0.7263 +vn -0.0473 -0.0196 -0.9987 +vn -0.7194 -0.1448 -0.6794 +vn -0.7194 -0.1448 0.6794 +vn 0.6737 0.1363 -0.7263 +vn -0.0671 -0.0671 -0.9955 +vn -0.5294 -0.5294 -0.6630 +vn -0.5294 -0.5294 0.6630 +vn -0.0671 -0.0671 0.9955 +vn 0.4617 0.4617 0.7574 +vn -0.1866 -0.9824 0.0000 +vn -0.1448 -0.7194 0.6794 +vn -0.0196 -0.0473 0.9987 +vn 0.4617 0.4617 -0.7574 +vn -0.0196 -0.0473 -0.9987 +vn -0.1448 -0.7194 -0.6794 +vn 0.1363 0.6737 0.7263 +vn 0.1363 0.6737 -0.7263 +s off +f 61/65/21 58/66/21 57/67/21 +f 62/68/22 60/69/22 58/70/22 +f 64/71/23 59/72/23 60/73/23 +f 63/74/24 57/75/24 59/76/24 +f 63/74/25 62/77/25 61/78/25 +f 58/79/26 59/76/26 57/80/26 +f 69/81/21 66/82/21 65/83/21 +f 70/84/22 68/85/22 66/86/22 +f 72/87/23 67/88/23 68/89/23 +f 71/90/24 65/91/24 67/92/24 +f 71/90/25 70/93/25 69/94/25 +f 66/95/26 67/92/26 65/96/26 +f 77/97/21 74/98/21 73/99/21 +f 78/100/22 76/101/22 74/102/22 +f 80/103/23 75/104/23 76/105/23 +f 79/106/24 73/107/24 75/108/24 +f 79/106/25 78/109/25 77/110/25 +f 74/111/26 75/108/26 73/112/26 +f 85/113/21 82/114/21 81/115/21 +f 86/116/22 84/117/22 82/118/22 +f 88/119/23 83/120/23 84/121/23 +f 87/122/24 81/123/24 83/124/24 +f 87/122/25 86/125/25 85/126/25 +f 82/127/26 83/124/26 81/128/26 +f 93/129/21 90/130/21 89/131/21 +f 94/132/22 92/133/22 90/134/22 +f 96/135/23 91/136/23 92/137/23 +f 95/138/24 89/139/24 91/140/24 +f 95/138/25 94/141/25 93/142/25 +f 90/143/26 91/140/26 89/144/26 +f 101/145/21 98/146/21 97/147/21 +f 102/148/22 100/149/22 98/150/22 +f 104/151/23 99/152/23 100/153/23 +f 103/154/24 97/155/24 99/156/24 +f 103/154/25 102/157/25 101/158/25 +f 98/159/26 99/156/26 97/160/26 +f 109/161/21 106/162/21 105/163/21 +f 110/164/22 108/165/22 106/166/22 +f 112/167/23 107/168/23 108/169/23 +f 111/170/24 105/171/24 107/172/24 +f 111/170/25 110/173/25 109/174/25 +f 106/175/26 107/172/26 105/176/26 +f 117/177/21 114/178/21 113/179/21 +f 118/180/22 116/181/22 114/182/22 +f 120/183/23 115/184/23 116/185/23 +f 119/186/24 113/187/24 115/188/24 +f 119/186/25 118/189/25 117/190/25 +f 114/191/26 115/188/26 113/192/26 +f 54/193/26 56/194/26 55/195/26 +f 49/196/21 55/197/21 56/198/21 +f 51/199/23 53/200/23 54/201/23 +f 51/202/25 49/203/25 52/204/25 +f 126/205/26 128/206/26 127/207/26 +f 121/208/21 127/209/21 128/210/21 +f 123/211/23 125/212/23 126/213/23 +f 123/214/25 121/215/25 124/216/25 +f 134/217/26 136/218/26 135/219/26 +f 129/220/21 135/221/21 136/222/21 +f 131/223/23 133/224/23 134/225/23 +f 131/226/25 129/227/25 132/228/25 +f 142/229/26 144/230/26 143/231/26 +f 137/232/21 143/233/21 144/234/21 +f 139/235/23 141/236/23 142/237/23 +f 139/238/25 137/239/25 140/240/25 +f 146/241/26 147/242/26 145/243/26 +f 148/244/24 151/245/24 147/246/24 +f 145/247/22 150/248/22 146/249/22 +f 149/250/25 152/251/25 150/252/25 +f 154/253/26 155/254/26 153/255/26 +f 156/256/24 159/257/24 155/258/24 +f 153/259/22 158/260/22 154/261/22 +f 157/262/25 160/263/25 158/264/25 +f 162/265/26 163/266/26 161/267/26 +f 164/268/24 167/269/24 163/270/24 +f 161/271/22 166/272/22 162/273/22 +f 165/274/25 168/275/25 166/276/25 +f 170/277/26 171/278/26 169/279/26 +f 172/280/24 175/281/24 171/282/24 +f 169/283/22 174/284/22 170/285/22 +f 173/286/25 176/287/25 174/288/25 +f 178/289/23 179/290/23 177/291/23 +f 180/292/24 183/293/24 179/294/24 +f 177/295/22 182/296/22 178/297/22 +f 181/298/21 184/299/21 182/300/21 +f 186/301/23 187/302/23 185/303/23 +f 188/304/24 191/305/24 187/306/24 +f 185/307/22 190/308/22 186/309/22 +f 189/310/21 192/311/21 190/312/21 +f 194/313/23 195/314/23 193/315/23 +f 196/316/24 199/317/24 195/318/24 +f 193/319/22 198/320/22 194/321/22 +f 197/322/21 200/323/21 198/324/21 +f 202/325/23 203/326/23 201/327/23 +f 204/328/24 207/329/24 203/330/24 +f 201/331/22 206/332/22 202/333/22 +f 205/334/21 208/335/21 206/336/21 +f 244/337/22 212/338/22 210/339/22 +f 240/340/22 244/337/22 210/339/22 +f 240/340/22 342/341/22 349/342/22 +f 238/343/22 335/344/22 342/341/22 +f 236/345/22 328/346/22 335/344/22 +f 234/347/22 321/348/22 328/346/22 +f 232/349/22 314/350/22 321/348/22 +f 307/351/22 230/352/22 228/353/22 +f 300/354/22 228/353/22 226/355/22 +f 293/356/22 226/357/22 224/358/22 +f 286/359/22 224/358/22 222/360/22 +f 279/361/22 222/360/22 220/362/22 +f 218/363/22 279/361/22 220/362/22 +f 216/364/22 272/365/22 218/363/22 +f 214/366/22 265/367/22 216/364/22 +f 212/338/22 258/368/22 214/366/22 +f 357/369/24 352/370/24 350/371/24 +f 368/372/24 357/369/24 252/373/24 +f 252/373/24 365/374/24 368/372/24 +f 259/375/24 362/376/24 365/374/24 +f 266/377/24 241/378/24 362/376/24 +f 273/379/24 247/380/24 241/378/24 +f 280/381/24 255/382/24 247/380/24 +f 268/383/24 287/384/24 294/385/24 +f 276/386/24 294/385/24 301/387/24 +f 289/388/24 301/389/24 308/390/24 +f 297/391/24 308/390/24 315/392/24 +f 310/393/24 315/392/24 322/394/24 +f 329/395/24 310/393/24 322/394/24 +f 336/396/24 318/397/24 329/395/24 +f 343/398/24 331/399/24 336/396/24 +f 350/371/24 339/400/24 343/398/24 +f 233/401/24 382/402/24 231/403/24 +f 231/403/24 381/404/24 229/405/24 +f 229/405/24 380/406/24 227/407/24 +f 227/407/24 379/408/24 225/409/24 +f 225/410/24 378/411/24 223/412/24 +f 223/412/24 377/413/24 221/414/24 +f 221/414/24 376/415/24 219/416/24 +f 217/417/24 376/415/24 375/418/24 +f 375/418/24 215/419/24 217/417/24 +f 374/420/24 213/421/24 215/419/24 +f 373/422/24 211/423/24 213/421/24 +f 211/423/24 371/424/24 209/425/24 +f 239/426/24 371/424/24 386/427/24 +f 239/426/24 385/428/24 237/429/24 +f 237/429/24 384/430/24 235/431/24 +f 235/431/24 383/432/24 233/401/24 +f 274/433/22 390/434/22 391/435/22 +f 267/436/22 389/437/22 390/434/22 +f 260/438/22 388/439/22 389/437/22 +f 387/440/22 253/441/22 359/442/22 +f 402/443/22 359/442/22 351/444/22 +f 351/444/22 401/445/22 402/443/22 +f 344/446/22 400/447/22 401/445/22 +f 337/448/22 399/449/22 400/447/22 +f 330/450/22 398/451/22 399/449/22 +f 323/452/22 397/453/22 398/451/22 +f 396/454/22 316/455/22 309/456/22 +f 302/457/22 396/454/22 309/456/22 +f 295/458/22 395/459/22 302/460/22 +f 288/461/22 394/462/22 295/458/22 +f 281/463/22 393/464/22 288/461/22 +f 274/433/22 392/465/22 281/463/22 +f 404/466/21 405/467/21 403/468/21 +f 404/466/26 410/469/26 406/470/26 +f 405/467/25 408/471/25 403/468/25 +f 406/470/24 407/472/24 405/467/24 +f 403/468/22 409/473/22 404/466/22 +f 439/474/21 450/475/21 438/476/21 +f 438/476/21 449/477/21 437/478/21 +f 435/479/21 449/480/21 447/481/21 +f 435/479/21 448/482/21 436/483/21 +f 446/484/21 448/485/21 458/486/21 +f 446/484/21 457/487/21 445/488/21 +f 444/489/21 457/490/21 456/491/21 +f 444/489/21 455/492/21 443/493/21 +f 442/494/21 455/495/21 454/496/21 +f 442/494/21 453/497/21 441/498/21 +f 441/499/21 452/500/21 440/501/21 +f 440/501/21 451/502/21 439/503/21 +f 460/504/21 461/505/21 459/506/21 +f 464/507/21 465/508/21 463/509/21 +f 468/510/21 469/511/21 467/512/21 +f 472/513/21 473/514/21 471/515/21 +f 489/516/21 487/517/21 488/518/21 +f 481/519/21 479/520/21 480/521/21 +f 477/522/24 482/523/24 478/524/24 +f 476/525/22 480/521/22 475/526/22 +f 478/527/26 481/519/26 476/528/26 +f 475/529/25 479/520/25 477/530/25 +f 485/531/24 490/532/24 486/533/24 +f 484/534/22 488/518/22 483/535/22 +f 486/536/26 489/516/26 484/537/26 +f 483/538/25 487/517/25 485/539/25 +f 492/540/24 493/541/24 491/542/24 +f 494/543/25 497/544/25 493/541/25 +f 491/545/26 496/546/26 492/547/26 +f 495/548/22 498/549/22 496/546/22 +f 500/550/24 501/551/24 499/552/24 +f 502/553/25 505/554/25 501/551/25 +f 499/555/26 504/556/26 500/557/26 +f 503/558/22 506/559/22 504/556/22 +f 508/560/24 509/561/24 507/562/24 +f 510/563/25 513/564/25 509/561/25 +f 507/565/26 512/566/26 508/567/26 +f 511/568/22 514/569/22 512/566/22 +f 516/570/24 517/571/24 515/572/24 +f 518/573/25 521/574/25 517/571/25 +f 515/575/26 520/576/26 516/577/26 +f 519/578/22 522/579/22 520/576/22 +f 524/580/24 525/581/24 523/582/24 +f 526/583/21 529/584/21 525/581/21 +f 523/585/23 528/586/23 524/587/23 +f 527/588/22 530/589/22 528/586/22 +f 532/590/24 533/591/24 531/592/24 +f 534/593/21 537/594/21 533/591/21 +f 531/595/23 536/596/23 532/597/23 +f 535/598/22 538/599/22 536/596/22 +f 540/600/24 541/601/24 539/602/24 +f 542/603/21 545/604/21 541/601/21 +f 539/605/23 544/606/23 540/607/23 +f 543/608/22 546/609/22 544/606/22 +f 548/610/24 549/611/24 547/612/24 +f 550/613/21 553/614/21 549/611/21 +f 547/615/23 552/616/23 548/617/23 +f 551/618/22 554/619/22 552/616/22 +f 556/620/23 557/621/23 555/622/23 +f 556/620/26 562/623/26 558/624/26 +f 557/621/25 560/625/25 555/622/25 +f 558/624/22 559/626/22 557/621/22 +f 555/622/24 561/627/24 556/620/24 +f 591/628/23 602/629/23 590/630/23 +f 590/630/23 601/631/23 589/632/23 +f 587/633/23 601/634/23 599/635/23 +f 588/636/23 599/635/23 600/637/23 +f 598/638/23 600/639/23 610/640/23 +f 597/641/23 610/640/23 609/642/23 +f 596/643/23 609/644/23 608/645/23 +f 595/646/23 608/645/23 607/647/23 +f 595/648/23 606/649/23 594/650/23 +f 594/650/23 605/651/23 593/652/23 +f 592/653/23 605/654/23 604/655/23 +f 592/653/23 603/656/23 591/657/23 +f 612/658/23 613/659/23 611/660/23 +f 616/661/23 617/662/23 615/663/23 +f 620/664/23 621/665/23 619/666/23 +f 624/667/23 625/668/23 623/669/23 +f 641/670/23 639/671/23 640/672/23 +f 633/673/23 631/674/23 632/675/23 +f 629/676/22 634/677/22 630/678/22 +f 628/679/24 632/675/24 627/680/24 +f 630/681/26 633/673/26 628/682/26 +f 627/683/25 631/674/25 629/684/25 +f 637/685/22 642/686/22 638/687/22 +f 636/688/24 640/672/24 635/689/24 +f 638/690/26 641/670/26 636/691/26 +f 635/692/25 639/671/25 637/693/25 +f 704/694/25 705/695/25 703/696/25 +f 708/697/22 704/694/22 703/696/22 +f 709/698/21 706/699/21 704/694/21 +f 707/700/23 703/696/23 705/695/23 +f 710/701/24 705/695/24 706/699/24 +f 717/702/24 715/703/24 713/704/24 +f 731/705/22 730/706/22 729/707/22 +f 744/708/26 745/709/26 743/710/26 +f 748/711/24 744/708/24 743/710/24 +f 749/712/21 746/713/21 744/708/21 +f 747/714/23 743/710/23 745/709/23 +f 750/715/22 745/709/22 746/713/22 +f 61/65/21 62/716/21 58/66/21 +f 62/68/22 64/717/22 60/69/22 +f 64/71/23 63/718/23 59/72/23 +f 63/74/24 61/719/24 57/75/24 +f 63/74/25 64/717/25 62/77/25 +f 58/79/26 60/69/26 59/76/26 +f 69/81/21 70/720/21 66/82/21 +f 70/84/22 72/721/22 68/85/22 +f 72/87/23 71/722/23 67/88/23 +f 71/90/24 69/723/24 65/91/24 +f 71/90/25 72/721/25 70/93/25 +f 66/95/26 68/85/26 67/92/26 +f 77/97/21 78/724/21 74/98/21 +f 78/100/22 80/725/22 76/101/22 +f 80/103/23 79/726/23 75/104/23 +f 79/106/24 77/727/24 73/107/24 +f 79/106/25 80/725/25 78/109/25 +f 74/111/26 76/101/26 75/108/26 +f 85/113/21 86/728/21 82/114/21 +f 86/116/22 88/729/22 84/117/22 +f 88/119/23 87/730/23 83/120/23 +f 87/122/24 85/731/24 81/123/24 +f 87/122/25 88/729/25 86/125/25 +f 82/127/26 84/117/26 83/124/26 +f 93/129/21 94/732/21 90/130/21 +f 94/132/22 96/733/22 92/133/22 +f 96/135/23 95/734/23 91/136/23 +f 95/138/24 93/735/24 89/139/24 +f 95/138/25 96/733/25 94/141/25 +f 90/143/26 92/133/26 91/140/26 +f 101/145/21 102/736/21 98/146/21 +f 102/148/22 104/737/22 100/149/22 +f 104/151/23 103/738/23 99/152/23 +f 103/154/24 101/739/24 97/155/24 +f 103/154/25 104/737/25 102/157/25 +f 98/159/26 100/149/26 99/156/26 +f 109/161/21 110/740/21 106/162/21 +f 110/164/22 112/741/22 108/165/22 +f 112/167/23 111/742/23 107/168/23 +f 111/170/24 109/743/24 105/171/24 +f 111/170/25 112/741/25 110/173/25 +f 106/175/26 108/165/26 107/172/26 +f 117/177/21 118/744/21 114/178/21 +f 118/180/22 120/745/22 116/181/22 +f 120/183/23 119/746/23 115/184/23 +f 119/186/24 117/747/24 113/187/24 +f 119/186/25 120/745/25 118/189/25 +f 114/191/26 116/181/26 115/188/26 +f 54/193/26 53/748/26 56/194/26 +f 49/196/21 50/749/21 55/197/21 +f 51/199/23 52/750/23 53/200/23 +f 51/202/25 50/751/25 49/203/25 +f 126/205/26 125/752/26 128/206/26 +f 121/208/21 122/753/21 127/209/21 +f 123/211/23 124/754/23 125/212/23 +f 123/214/25 122/755/25 121/215/25 +f 134/217/26 133/756/26 136/218/26 +f 129/220/21 130/757/21 135/221/21 +f 131/223/23 132/758/23 133/224/23 +f 131/226/25 130/759/25 129/227/25 +f 142/229/26 141/760/26 144/230/26 +f 137/232/21 138/761/21 143/233/21 +f 139/235/23 140/762/23 141/236/23 +f 139/238/25 138/763/25 137/239/25 +f 146/241/26 148/764/26 147/242/26 +f 148/244/24 152/765/24 151/245/24 +f 145/247/22 149/766/22 150/248/22 +f 149/250/25 151/767/25 152/251/25 +f 154/253/26 156/768/26 155/254/26 +f 156/256/24 160/769/24 159/257/24 +f 153/259/22 157/770/22 158/260/22 +f 157/262/25 159/771/25 160/263/25 +f 162/265/26 164/772/26 163/266/26 +f 164/268/24 168/773/24 167/269/24 +f 161/271/22 165/774/22 166/272/22 +f 165/274/25 167/775/25 168/275/25 +f 170/277/26 172/776/26 171/278/26 +f 172/280/24 176/777/24 175/281/24 +f 169/283/22 173/778/22 174/284/22 +f 173/286/25 175/779/25 176/287/25 +f 178/289/23 180/780/23 179/290/23 +f 180/292/24 184/781/24 183/293/24 +f 177/295/22 181/782/22 182/296/22 +f 181/298/21 183/783/21 184/299/21 +f 186/301/23 188/784/23 187/302/23 +f 188/304/24 192/785/24 191/305/24 +f 185/307/22 189/786/22 190/308/22 +f 189/310/21 191/787/21 192/311/21 +f 194/313/23 196/788/23 195/314/23 +f 196/316/24 200/789/24 199/317/24 +f 193/319/22 197/790/22 198/320/22 +f 197/322/21 199/791/21 200/323/21 +f 202/325/23 204/792/23 203/326/23 +f 204/328/24 208/793/24 207/329/24 +f 201/331/22 205/794/22 206/332/22 +f 205/334/21 207/795/21 208/335/21 +f 244/337/22 251/796/22 212/338/22 +f 240/340/22 349/342/22 244/337/22 +f 240/340/22 238/343/22 342/341/22 +f 238/343/22 236/345/22 335/344/22 +f 236/345/22 234/347/22 328/346/22 +f 234/347/22 232/349/22 321/348/22 +f 232/349/22 230/352/22 314/350/22 +f 307/351/22 314/350/22 230/352/22 +f 300/354/22 307/351/22 228/353/22 +f 293/356/22 300/797/22 226/357/22 +f 286/359/22 293/356/22 224/358/22 +f 279/361/22 286/359/22 222/360/22 +f 218/363/22 272/365/22 279/361/22 +f 216/364/22 265/367/22 272/365/22 +f 214/366/22 258/368/22 265/367/22 +f 212/338/22 251/796/22 258/368/22 +f 357/369/24 358/798/24 352/370/24 +f 368/372/24 358/798/24 357/369/24 +f 252/373/24 259/375/24 365/374/24 +f 259/375/24 266/377/24 362/376/24 +f 266/377/24 273/379/24 241/378/24 +f 273/379/24 280/381/24 247/380/24 +f 280/381/24 287/384/24 255/382/24 +f 268/383/24 255/382/24 287/384/24 +f 276/386/24 268/383/24 294/385/24 +f 289/388/24 276/799/24 301/389/24 +f 297/391/24 289/388/24 308/390/24 +f 310/393/24 297/391/24 315/392/24 +f 329/395/24 318/397/24 310/393/24 +f 336/396/24 331/399/24 318/397/24 +f 343/398/24 339/400/24 331/399/24 +f 350/371/24 352/370/24 339/400/24 +f 233/401/24 383/432/24 382/402/24 +f 231/403/24 382/402/24 381/404/24 +f 229/405/24 381/404/24 380/406/24 +f 227/407/24 380/406/24 379/408/24 +f 225/410/24 379/800/24 378/411/24 +f 223/412/24 378/411/24 377/413/24 +f 221/414/24 377/413/24 376/415/24 +f 217/417/24 219/416/24 376/415/24 +f 375/418/24 374/420/24 215/419/24 +f 374/420/24 373/422/24 213/421/24 +f 373/422/24 372/801/24 211/423/24 +f 211/423/24 372/801/24 371/424/24 +f 239/426/24 209/425/24 371/424/24 +f 239/426/24 386/427/24 385/428/24 +f 237/429/24 385/428/24 384/430/24 +f 235/431/24 384/430/24 383/432/24 +f 274/433/22 267/436/22 390/434/22 +f 267/436/22 260/438/22 389/437/22 +f 260/438/22 253/441/22 388/439/22 +f 387/440/22 388/439/22 253/441/22 +f 402/443/22 387/440/22 359/442/22 +f 351/444/22 344/446/22 401/445/22 +f 344/446/22 337/448/22 400/447/22 +f 337/448/22 330/450/22 399/449/22 +f 330/450/22 323/452/22 398/451/22 +f 323/452/22 316/455/22 397/453/22 +f 396/454/22 397/453/22 316/455/22 +f 302/457/22 395/802/22 396/454/22 +f 295/458/22 394/462/22 395/459/22 +f 288/461/22 393/464/22 394/462/22 +f 281/463/22 392/465/22 393/464/22 +f 274/433/22 391/435/22 392/465/22 +f 404/466/21 406/470/21 405/467/21 +f 404/466/26 409/803/26 410/469/26 +f 405/467/25 407/804/25 408/471/25 +f 406/470/24 410/805/24 407/472/24 +f 403/468/22 408/806/22 409/473/22 +f 439/474/21 451/807/21 450/475/21 +f 438/476/21 450/475/21 449/477/21 +f 435/479/21 437/808/21 449/480/21 +f 435/479/21 447/481/21 448/482/21 +f 446/484/21 436/809/21 448/485/21 +f 446/484/21 458/486/21 457/487/21 +f 444/489/21 445/810/21 457/490/21 +f 444/489/21 456/491/21 455/492/21 +f 442/494/21 443/811/21 455/495/21 +f 442/494/21 454/496/21 453/497/21 +f 441/499/21 453/812/21 452/500/21 +f 440/501/21 452/500/21 451/502/21 +f 460/504/21 462/813/21 461/505/21 +f 464/507/21 466/814/21 465/508/21 +f 468/510/21 470/815/21 469/511/21 +f 472/513/21 474/816/21 473/514/21 +f 489/516/21 490/532/21 487/517/21 +f 481/519/21 482/523/21 479/520/21 +f 477/522/24 479/520/24 482/523/24 +f 476/525/22 481/519/22 480/521/22 +f 478/527/26 482/523/26 481/519/26 +f 475/529/25 480/521/25 479/520/25 +f 485/531/24 487/517/24 490/532/24 +f 484/534/22 489/516/22 488/518/22 +f 486/536/26 490/532/26 489/516/26 +f 483/538/25 488/518/25 487/517/25 +f 492/540/24 494/543/24 493/541/24 +f 494/543/25 498/817/25 497/544/25 +f 491/545/26 495/548/26 496/546/26 +f 495/548/22 497/818/22 498/549/22 +f 500/550/24 502/553/24 501/551/24 +f 502/553/25 506/819/25 505/554/25 +f 499/555/26 503/558/26 504/556/26 +f 503/558/22 505/820/22 506/559/22 +f 508/560/24 510/563/24 509/561/24 +f 510/563/25 514/821/25 513/564/25 +f 507/565/26 511/568/26 512/566/26 +f 511/568/22 513/822/22 514/569/22 +f 516/570/24 518/573/24 517/571/24 +f 518/573/25 522/823/25 521/574/25 +f 515/575/26 519/578/26 520/576/26 +f 519/578/22 521/824/22 522/579/22 +f 524/580/24 526/583/24 525/581/24 +f 526/583/21 530/825/21 529/584/21 +f 523/585/23 527/588/23 528/586/23 +f 527/588/22 529/826/22 530/589/22 +f 532/590/24 534/593/24 533/591/24 +f 534/593/21 538/827/21 537/594/21 +f 531/595/23 535/598/23 536/596/23 +f 535/598/22 537/828/22 538/599/22 +f 540/600/24 542/603/24 541/601/24 +f 542/603/21 546/829/21 545/604/21 +f 539/605/23 543/608/23 544/606/23 +f 543/608/22 545/830/22 546/609/22 +f 548/610/24 550/613/24 549/611/24 +f 550/613/21 554/831/21 553/614/21 +f 547/615/23 551/618/23 552/616/23 +f 551/618/22 553/832/22 554/619/22 +f 556/620/23 558/624/23 557/621/23 +f 556/620/26 561/833/26 562/623/26 +f 557/621/25 559/834/25 560/625/25 +f 558/624/22 562/835/22 559/626/22 +f 555/622/24 560/836/24 561/627/24 +f 591/628/23 603/837/23 602/629/23 +f 590/630/23 602/629/23 601/631/23 +f 587/633/23 589/838/23 601/634/23 +f 588/636/23 587/633/23 599/635/23 +f 598/638/23 588/839/23 600/639/23 +f 597/641/23 598/638/23 610/640/23 +f 596/643/23 597/840/23 609/644/23 +f 595/646/23 596/643/23 608/645/23 +f 595/648/23 607/841/23 606/649/23 +f 594/650/23 606/649/23 605/651/23 +f 592/653/23 593/842/23 605/654/23 +f 592/653/23 604/655/23 603/656/23 +f 612/658/23 614/843/23 613/659/23 +f 616/661/23 618/844/23 617/662/23 +f 620/664/23 622/845/23 621/665/23 +f 624/667/23 626/846/23 625/668/23 +f 641/670/23 642/686/23 639/671/23 +f 633/673/23 634/677/23 631/674/23 +f 629/676/22 631/674/22 634/677/22 +f 628/679/24 633/673/24 632/675/24 +f 630/681/26 634/677/26 633/673/26 +f 627/683/25 632/675/25 631/674/25 +f 637/685/22 639/671/22 642/686/22 +f 636/688/24 641/670/24 640/672/24 +f 638/690/26 642/686/26 641/670/26 +f 635/692/25 640/672/25 639/671/25 +f 704/694/25 706/699/25 705/695/25 +f 708/697/22 709/847/22 704/694/22 +f 709/698/21 710/848/21 706/699/21 +f 707/700/23 708/849/23 703/696/23 +f 710/701/24 707/850/24 705/695/24 +f 713/704/24 712/851/24 711/852/24 +f 711/852/24 718/853/24 717/702/24 +f 717/702/24 716/854/24 715/703/24 +f 715/703/24 714/855/24 713/704/24 +f 713/704/24 711/852/24 717/702/24 +f 729/707/22 728/856/22 727/857/22 +f 727/857/22 734/858/22 729/707/22 +f 734/858/22 733/859/22 729/707/22 +f 733/859/22 732/860/22 729/707/22 +f 732/860/22 731/705/22 729/707/22 +f 744/708/26 746/713/26 745/709/26 +f 748/711/24 749/861/24 744/708/24 +f 749/712/21 750/862/21 746/713/21 +f 747/714/23 748/863/23 743/710/23 +f 750/715/22 747/864/22 745/709/22 +s 1 +f 210/339/25 211/423/27 209/425/25 +f 212/338/27 213/421/28 211/423/27 +f 214/366/28 215/419/29 213/421/28 +f 216/364/29 217/417/21 215/419/29 +f 218/363/21 219/416/30 217/417/21 +f 220/362/30 221/414/31 219/416/30 +f 222/360/31 223/412/32 221/414/31 +f 224/358/32 225/410/26 223/412/32 +f 226/355/26 227/407/33 225/409/26 +f 228/353/33 229/405/34 227/407/33 +f 230/352/34 231/403/35 229/405/34 +f 232/349/35 233/401/23 231/403/35 +f 234/347/23 235/431/36 233/401/23 +f 236/345/36 237/429/37 235/431/36 +f 238/343/37 239/426/38 237/429/37 +f 240/340/38 209/425/25 239/426/38 +f 244/337/39 250/865/40 251/796/41 +f 354/866/42 353/867/22 249/868/43 +f 310/393/44 303/869/45 297/391/46 +f 325/870/47 369/871/24 317/872/48 +f 354/866/42 250/865/40 243/873/49 +f 324/874/50 310/393/44 318/397/51 +f 325/870/47 311/875/52 324/874/50 +f 338/876/53 369/877/24 325/878/47 +f 249/879/43 257/880/54 250/865/40 +f 332/881/55 318/397/51 331/399/56 +f 251/796/41 257/880/54 258/368/57 +f 249/879/43 353/882/22 256/883/58 +f 332/881/55 325/878/47 324/874/50 +f 346/884/59 369/885/24 338/886/53 +f 256/887/58 264/888/60 257/880/54 +f 345/889/61 331/399/56 339/400/62 +f 258/368/57 264/888/60 265/367/63 +f 256/887/58 353/890/22 263/891/64 +f 345/889/61 338/886/53 332/881/55 +f 263/892/64 271/893/65 264/888/60 +f 356/894/66 369/895/24 346/896/59 +f 265/367/63 271/893/65 272/365/67 +f 263/892/64 353/897/22 270/898/68 +f 355/899/69 339/400/62 352/370/70 +f 271/893/65 277/900/71 278/901/72 +f 356/894/66 345/889/61 355/899/69 +f 272/365/67 278/901/72 279/361/73 +f 270/902/68 353/903/22 277/900/71 +f 370/904/74 355/899/69 246/905/75 +f 370/904/74 369/906/24 356/907/66 +f 246/905/75 352/370/70 358/798/76 +f 279/361/73 285/908/77 286/359/78 +f 277/909/71 353/910/22 284/911/79 +f 252/373/27 359/442/25 253/441/27 +f 259/375/28 253/441/27 260/438/28 +f 278/901/72 284/911/79 285/908/77 +f 266/377/29 260/438/28 267/436/29 +f 285/908/77 293/356/80 286/359/78 +f 284/912/79 353/913/22 291/914/81 +f 273/379/21 267/436/29 274/433/21 +f 280/381/30 274/433/21 281/463/30 +f 284/912/79 292/915/82 285/908/77 +f 287/384/31 281/463/30 288/461/31 +f 293/356/80 299/916/83 300/797/84 +f 291/917/81 353/918/22 298/919/85 +f 294/385/32 288/461/31 295/458/32 +f 301/387/26 295/458/32 302/460/26 +f 291/917/81 299/916/83 292/915/82 +f 308/390/33 302/457/26 309/456/33 +f 299/920/83 307/351/86 300/354/84 +f 298/921/85 353/922/22 305/923/87 +f 315/392/34 309/456/33 316/455/34 +f 322/394/35 316/455/34 323/452/35 +f 298/921/85 306/924/88 299/920/83 +f 306/924/88 314/350/89 307/351/86 +f 305/925/87 353/926/22 312/927/90 +f 329/395/23 323/452/35 330/450/23 +f 336/396/36 330/450/23 337/448/36 +f 305/925/87 313/928/91 306/924/88 +f 343/398/37 337/448/36 344/446/37 +f 312/929/90 353/930/22 319/931/92 +f 350/371/38 344/446/37 351/444/38 +f 357/369/25 351/444/38 359/442/25 +f 312/929/90 320/932/93 313/928/91 +f 314/350/89 320/932/93 321/348/94 +f 319/933/92 327/934/95 320/932/93 +f 320/932/93 328/346/96 321/348/94 +f 319/933/92 353/935/22 326/936/97 +f 327/934/95 333/937/98 334/938/99 +f 327/934/95 335/344/100 328/346/96 +f 326/939/97 353/940/22 333/937/98 +f 333/941/98 341/942/101 334/938/99 +f 334/938/99 342/341/102 335/344/100 +f 333/941/98 353/943/22 340/944/103 +f 341/942/101 347/945/104 348/946/105 +f 341/942/101 349/342/106 342/341/102 +f 340/947/103 353/948/22 347/945/104 +f 347/949/104 243/873/49 348/946/105 +f 348/946/105 244/337/39 349/342/106 +f 347/949/104 353/950/22 354/951/42 +f 317/952/48 369/953/24 304/954/107 +f 317/952/48 303/869/45 311/875/52 +f 297/391/46 290/955/108 289/388/109 +f 304/956/107 369/957/24 296/958/110 +f 304/956/107 290/955/108 303/869/45 +f 289/388/109 282/959/111 276/799/112 +f 296/960/110 369/961/24 283/962/113 +f 290/955/108 283/962/113 282/959/111 +f 282/963/111 268/383/114 276/386/112 +f 283/964/113 369/965/24 275/966/115 +f 282/963/111 275/966/115 269/967/116 +f 269/967/116 255/382/117 268/383/114 +f 275/968/115 369/969/24 262/970/118 +f 269/967/116 262/970/118 261/971/119 +f 262/972/118 369/973/24 254/974/120 +f 261/971/119 254/974/120 248/975/121 +f 261/971/119 247/380/122 255/382/117 +f 254/976/120 242/977/123 248/975/121 +f 248/975/121 241/378/124 247/380/122 +f 254/976/120 369/978/24 245/979/125 +f 245/980/125 361/981/126 242/977/123 +f 242/977/123 362/376/127 241/378/124 +f 245/980/125 369/982/24 360/983/128 +f 361/981/126 363/984/129 364/985/130 +f 361/981/126 365/374/131 362/376/127 +f 360/986/128 369/987/24 363/984/129 +f 363/988/129 367/989/132 364/985/130 +f 364/985/130 368/372/133 365/374/131 +f 363/988/129 369/990/24 366/991/134 +f 367/989/132 370/992/74 246/905/75 +f 367/989/132 358/798/76 368/372/133 +f 366/993/134 369/994/24 370/992/74 +f 384/430/36 399/449/23 383/432/23 +f 377/413/31 392/465/30 376/415/30 +f 385/428/37 400/447/36 384/430/36 +f 378/411/32 393/464/31 377/413/31 +f 386/427/38 401/445/37 385/428/37 +f 379/800/26 394/462/32 378/411/32 +f 372/801/27 387/440/25 371/424/25 +f 371/424/25 402/443/38 386/427/38 +f 380/406/33 395/802/26 379/408/26 +f 373/422/28 388/439/27 372/801/27 +f 381/404/34 396/454/33 380/406/33 +f 374/420/29 389/437/28 373/422/28 +f 382/402/35 397/453/34 381/404/34 +f 375/418/21 390/434/29 374/420/29 +f 383/432/23 398/451/35 382/402/35 +f 376/415/30 391/435/21 375/418/21 +f 420/995/26 443/493/135 419/996/135 +f 434/997/136 448/485/22 423/998/22 +f 413/999/137 435/479/138 412/1000/138 +f 427/1001/139 452/500/140 428/1002/140 +f 421/1003/139 444/489/26 420/995/26 +f 414/1004/25 437/478/137 413/1005/137 +f 428/1002/140 453/812/24 429/1006/24 +f 422/1007/140 445/488/139 421/1008/139 +f 415/1009/141 438/476/25 414/1004/25 +f 429/1010/24 454/496/138 430/1011/138 +f 411/1012/24 446/484/140 422/1007/140 +f 416/1013/136 439/503/141 415/1014/141 +f 430/1011/138 455/495/137 431/1015/137 +f 423/1016/22 447/481/142 424/1017/142 +f 417/1018/22 440/501/136 416/1013/136 +f 431/1019/137 456/491/25 432/1020/25 +f 424/1017/142 449/480/135 425/1021/135 +f 418/1022/142 441/498/22 417/1023/22 +f 432/1020/25 457/490/141 433/1024/141 +f 425/1025/135 450/475/26 426/1026/26 +f 419/1027/135 442/494/142 418/1022/142 +f 433/1028/141 458/486/136 434/997/136 +f 412/1000/138 436/483/24 411/1029/24 +f 426/1026/26 451/807/139 427/1030/139 +f 572/1031/26 595/646/139 571/1032/139 +f 586/1033/138 600/639/24 575/1034/24 +f 565/1035/141 587/633/136 564/1036/136 +f 579/1037/135 604/655/142 580/1038/142 +f 573/1039/135 596/643/26 572/1031/26 +f 566/1040/25 589/632/141 565/1041/141 +f 580/1038/142 605/654/22 581/1042/22 +f 574/1043/142 597/641/135 573/1044/135 +f 567/1045/137 590/630/25 566/1040/25 +f 581/1046/22 606/649/136 582/1047/136 +f 563/1048/22 598/638/142 574/1043/142 +f 568/1049/138 591/657/137 567/1050/137 +f 582/1047/136 607/841/141 583/1051/141 +f 575/1052/24 599/635/140 576/1053/140 +f 569/1054/24 592/653/138 568/1049/138 +f 583/1055/141 608/645/25 584/1056/25 +f 576/1053/140 601/634/139 577/1057/139 +f 570/1058/140 593/652/24 569/1059/24 +f 584/1056/25 609/644/137 585/1060/137 +f 577/1061/139 602/629/26 578/1062/26 +f 571/1063/139 594/650/140 570/1058/140 +f 585/1064/137 610/640/138 586/1033/138 +f 564/1036/136 588/636/22 563/1065/22 +f 578/1062/26 603/837/135 579/1066/135 +f 650/1067/143 657/1068/144 649/1069/21 +f 648/1070/145 655/1071/146 647/1072/22 +f 646/1073/147 653/1074/34 645/1075/23 +f 644/1076/148 651/1077/149 643/1078/24 +f 643/1078/24 658/1079/150 650/1067/143 +f 649/1069/21 656/1080/151 648/1070/145 +f 647/1072/22 654/1081/152 646/1073/147 +f 645/1082/23 652/1083/153 644/1076/148 +f 651/1084/149 660/1085/154 659/1086/155 +f 658/1079/150 659/1086/155 665/1087/156 +f 656/1080/151 664/1088/28 663/1089/157 +f 655/1090/146 661/1091/158 654/1092/152 +f 658/1079/150 664/1088/28 657/1068/144 +f 656/1080/151 662/1093/159 655/1090/146 +f 665/1087/156 671/1094/160 664/1088/28 +f 662/1093/159 670/1095/161 669/1096/162 +f 659/1086/155 667/1097/163 666/1098/164 +f 659/1086/155 672/1099/165 665/1087/156 +f 664/1088/28 670/1095/161 663/1089/157 +f 662/1093/159 668/1100/166 661/1091/158 +f 654/1092/152 661/1091/158 653/1101/34 +f 661/1091/158 668/1100/166 653/1101/34 +f 652/1102/153 653/1103/34 660/1085/154 +f 660/1085/154 653/1103/34 667/1097/163 +f 680/1104/147 687/1105/167 679/1106/23 +f 678/1107/148 685/1108/168 677/1109/24 +f 676/1110/143 683/1111/31 675/1112/21 +f 674/1113/145 681/1114/169 673/1115/22 +f 673/1115/22 688/1116/170 680/1104/147 +f 679/1106/23 686/1117/171 678/1107/148 +f 677/1109/24 684/1118/172 676/1110/143 +f 675/1119/21 682/1120/173 674/1113/145 +f 682/1121/173 689/1122/174 681/1123/169 +f 688/1116/170 689/1122/174 695/1124/175 +f 686/1117/171 694/1125/37 693/1126/176 +f 684/1127/172 692/1128/177 691/1129/178 +f 688/1116/170 694/1125/37 687/1105/167 +f 685/1130/168 693/1126/176 692/1128/177 +f 695/1124/175 701/1131/179 694/1125/37 +f 692/1128/177 700/1132/180 699/1133/181 +f 689/1122/174 697/1134/182 696/1135/183 +f 689/1122/174 702/1136/184 695/1124/175 +f 693/1126/176 701/1131/179 700/1132/180 +f 691/1129/178 699/1133/181 698/1137/185 +f 684/1127/172 691/1129/178 683/1138/31 +f 691/1129/178 698/1137/185 683/1138/31 +f 682/1121/173 683/1139/31 690/1140/186 +f 690/1140/186 683/1139/31 697/1134/182 +f 702/1136/184 669/1141/162 670/1095/161 +f 671/1094/160 702/1136/184 670/1095/161 +f 700/1132/180 671/1094/160 672/1099/165 +f 699/1142/181 672/1099/165 666/1143/164 +f 698/1144/185 666/1143/164 667/1145/163 +f 653/1146/34 698/1144/185 667/1145/163 +f 653/1147/34 697/1148/182 683/1149/31 +f 696/1150/183 668/1151/166 669/1141/162 +f 712/1152/37 720/1153/25 711/1154/25 +f 718/1155/28 720/1153/25 726/1156/28 +f 716/1157/31 725/1158/21 724/1159/31 +f 715/1160/26 722/1161/34 714/1162/34 +f 713/1163/23 719/1164/37 712/1152/37 +f 717/1165/21 726/1156/28 725/1158/21 +f 716/1157/31 723/1166/26 715/1167/26 +f 714/1162/34 721/1168/23 713/1163/23 +f 728/1169/28 736/1170/25 727/1171/25 +f 727/1171/25 742/1172/37 734/1173/37 +f 732/1174/34 741/1175/23 740/1176/34 +f 731/1177/26 738/1178/31 730/1179/31 +f 729/1180/21 735/1181/28 728/1169/28 +f 733/1182/23 742/1172/37 741/1175/23 +f 732/1174/34 739/1183/26 731/1184/26 +f 730/1179/31 737/1185/21 729/1180/21 +f 758/1186/143 765/1187/144 757/1188/21 +f 756/1189/145 763/1190/146 755/1191/22 +f 754/1192/147 761/1193/34 753/1194/23 +f 752/1195/148 759/1196/149 751/1197/24 +f 751/1197/24 766/1198/150 758/1186/143 +f 757/1188/21 764/1199/151 756/1189/145 +f 755/1191/22 762/1200/152 754/1192/147 +f 753/1201/23 760/1202/153 752/1195/148 +f 759/1203/149 768/1204/154 767/1205/155 +f 766/1198/150 767/1205/155 773/1206/156 +f 764/1199/151 772/1207/28 771/1208/157 +f 763/1209/146 769/1210/158 762/1211/152 +f 766/1198/150 772/1207/28 765/1187/144 +f 764/1199/151 770/1212/159 763/1209/146 +f 773/1206/156 779/1213/160 772/1207/28 +f 770/1212/159 778/1214/161 777/1215/162 +f 767/1205/155 775/1216/163 774/1217/164 +f 767/1205/155 780/1218/165 773/1206/156 +f 771/1208/157 779/1213/160 778/1214/161 +f 770/1212/159 776/1219/166 769/1210/158 +f 762/1211/152 769/1210/158 761/1220/34 +f 769/1210/158 776/1219/166 761/1220/34 +f 760/1221/153 761/1222/34 768/1204/154 +f 768/1204/154 761/1222/34 775/1216/163 +f 788/1223/147 795/1224/167 787/1225/23 +f 786/1226/148 793/1227/168 785/1228/24 +f 784/1229/143 791/1230/31 783/1231/21 +f 782/1232/145 789/1233/169 781/1234/22 +f 781/1234/22 796/1235/170 788/1223/147 +f 787/1225/23 794/1236/171 786/1226/148 +f 785/1228/24 792/1237/172 784/1229/143 +f 783/1238/21 790/1239/173 782/1232/145 +f 790/1240/173 797/1241/174 789/1242/169 +f 789/1242/169 803/1243/175 796/1235/170 +f 794/1236/171 802/1244/37 801/1245/176 +f 792/1246/172 800/1247/177 799/1248/178 +f 796/1235/170 802/1244/37 795/1224/167 +f 793/1249/168 801/1245/176 800/1247/177 +f 803/1243/175 809/1250/179 802/1244/37 +f 800/1247/177 808/1251/180 807/1252/181 +f 797/1241/174 805/1253/182 804/1254/183 +f 797/1241/174 810/1255/184 803/1243/175 +f 801/1245/176 809/1250/179 808/1251/180 +f 800/1247/177 806/1256/185 799/1248/178 +f 792/1246/172 799/1248/178 791/1257/31 +f 799/1248/178 806/1256/185 791/1257/31 +f 790/1240/173 791/1258/31 798/1259/186 +f 798/1259/186 791/1258/31 805/1253/182 +f 810/1255/184 777/1260/162 778/1214/161 +f 779/1213/160 810/1255/184 778/1214/161 +f 808/1251/180 779/1213/160 780/1218/165 +f 807/1261/181 780/1218/165 774/1262/164 +f 806/1263/185 774/1262/164 775/1264/163 +f 761/1265/34 806/1263/185 775/1264/163 +f 761/1266/34 805/1267/182 791/1268/31 +f 804/1269/183 776/1270/166 777/1260/162 +f 818/1271/143 825/1272/144 817/1273/21 +f 816/1274/145 823/1275/146 815/1276/22 +f 814/1277/147 821/1278/34 813/1279/23 +f 812/1280/148 819/1281/149 811/1282/24 +f 811/1282/24 826/1283/150 818/1271/143 +f 817/1273/21 824/1284/151 816/1274/145 +f 815/1276/22 822/1285/152 814/1277/147 +f 813/1286/23 820/1287/153 812/1280/148 +f 819/1288/149 828/1289/154 827/1290/155 +f 826/1283/150 827/1290/155 833/1291/156 +f 824/1284/151 832/1292/28 831/1293/157 +f 823/1294/146 829/1295/158 822/1296/152 +f 825/1272/144 833/1291/156 832/1292/28 +f 824/1284/151 830/1297/159 823/1294/146 +f 833/1291/156 839/1298/160 832/1292/28 +f 830/1297/159 838/1299/161 837/1300/162 +f 828/1289/154 834/1301/164 827/1290/155 +f 827/1290/155 840/1302/165 833/1291/156 +f 831/1293/157 839/1298/160 838/1299/161 +f 829/1295/158 837/1300/162 836/1303/166 +f 822/1296/152 829/1295/158 821/1304/34 +f 829/1295/158 836/1303/166 821/1304/34 +f 820/1305/153 821/1306/34 828/1289/154 +f 828/1289/154 821/1306/34 835/1307/163 +f 848/1308/147 855/1309/167 847/1310/23 +f 846/1311/148 853/1312/168 845/1313/24 +f 844/1314/143 851/1315/31 843/1316/21 +f 842/1317/145 849/1318/169 841/1319/22 +f 841/1319/22 856/1320/170 848/1308/147 +f 847/1310/23 854/1321/171 846/1311/148 +f 845/1313/24 852/1322/172 844/1314/143 +f 843/1323/21 850/1324/173 842/1317/145 +f 850/1325/173 857/1326/174 849/1327/169 +f 849/1327/169 863/1328/175 856/1320/170 +f 854/1321/171 862/1329/37 861/1330/176 +f 852/1331/172 860/1332/177 859/1333/178 +f 856/1320/170 862/1329/37 855/1309/167 +f 853/1334/168 861/1330/176 860/1332/177 +f 863/1328/175 869/1335/179 862/1329/37 +f 860/1332/177 868/1336/180 867/1337/181 +f 858/1338/186 864/1339/183 857/1326/174 +f 857/1326/174 870/1340/184 863/1328/175 +f 861/1330/176 869/1335/179 868/1336/180 +f 859/1333/178 867/1337/181 866/1341/185 +f 852/1331/172 859/1333/178 851/1342/31 +f 859/1333/178 866/1341/185 851/1342/31 +f 850/1325/173 851/1343/31 858/1338/186 +f 858/1338/186 851/1343/31 865/1344/182 +f 870/1340/184 837/1345/162 838/1299/161 +f 839/1298/160 870/1340/184 838/1299/161 +f 868/1336/180 839/1298/160 840/1302/165 +f 867/1346/181 840/1302/165 834/1347/164 +f 866/1348/185 834/1347/164 835/1349/163 +f 851/1350/31 835/1349/163 821/1351/34 +f 821/1352/34 865/1353/182 851/1354/31 +f 864/1355/183 836/1356/166 837/1345/162 +f 878/1357/143 885/1358/144 877/1359/21 +f 876/1360/145 883/1361/146 875/1362/22 +f 874/1363/147 881/1364/34 873/1365/23 +f 872/1366/148 879/1367/149 871/1368/24 +f 871/1368/24 886/1369/150 878/1357/143 +f 877/1359/21 884/1370/151 876/1360/145 +f 875/1362/22 882/1371/152 874/1363/147 +f 873/1372/23 880/1373/153 872/1366/148 +f 879/1374/149 888/1375/154 887/1376/155 +f 886/1369/150 887/1376/155 893/1377/156 +f 885/1358/144 891/1378/157 884/1370/151 +f 883/1379/146 889/1380/158 882/1381/152 +f 886/1369/150 892/1382/28 885/1358/144 +f 884/1370/151 890/1383/159 883/1379/146 +f 893/1377/156 899/1384/160 892/1382/28 +f 890/1383/159 898/1385/161 897/1386/162 +f 888/1375/154 894/1387/164 887/1376/155 +f 887/1376/155 900/1388/165 893/1377/156 +f 891/1378/157 899/1384/160 898/1385/161 +f 889/1380/158 897/1386/162 896/1389/166 +f 882/1381/152 889/1380/158 881/1390/34 +f 889/1380/158 896/1389/166 881/1390/34 +f 880/1391/153 881/1392/34 888/1375/154 +f 888/1375/154 881/1392/34 895/1393/163 +f 908/1394/147 915/1395/167 907/1396/23 +f 906/1397/148 913/1398/168 905/1399/24 +f 904/1400/143 911/1401/31 903/1402/21 +f 902/1403/145 909/1404/169 901/1405/22 +f 901/1405/22 916/1406/170 908/1394/147 +f 907/1396/23 914/1407/171 906/1397/148 +f 905/1399/24 912/1408/172 904/1400/143 +f 903/1409/21 910/1410/173 902/1403/145 +f 910/1411/173 917/1412/174 909/1413/169 +f 909/1413/169 923/1414/175 916/1406/170 +f 914/1407/171 922/1415/37 921/1416/176 +f 912/1417/172 920/1418/177 919/1419/178 +f 916/1406/170 922/1415/37 915/1395/167 +f 913/1420/168 921/1416/176 920/1418/177 +f 923/1414/175 929/1421/179 922/1415/37 +f 920/1418/177 928/1422/180 927/1423/181 +f 918/1424/186 924/1425/183 917/1412/174 +f 917/1412/174 930/1426/184 923/1414/175 +f 921/1416/176 929/1421/179 928/1422/180 +f 920/1418/177 926/1427/185 919/1419/178 +f 912/1417/172 919/1419/178 911/1428/31 +f 919/1419/178 926/1427/185 911/1428/31 +f 910/1411/173 911/1429/31 918/1424/186 +f 918/1424/186 911/1429/31 925/1430/182 +f 930/1426/184 897/1431/162 898/1385/161 +f 899/1384/160 930/1426/184 898/1385/161 +f 928/1422/180 899/1384/160 900/1388/165 +f 927/1432/181 900/1388/165 894/1433/164 +f 926/1434/185 894/1433/164 895/1435/163 +f 881/1436/34 926/1434/185 895/1435/163 +f 896/1437/166 911/1438/31 881/1439/34 +f 924/1440/183 896/1437/166 897/1431/162 +f 938/1441/143 945/1442/144 937/1443/21 +f 936/1444/145 943/1445/146 935/1446/22 +f 934/1447/147 941/1448/34 933/1449/23 +f 932/1450/148 939/1451/149 931/1452/24 +f 931/1452/24 946/1453/150 938/1441/143 +f 937/1443/21 944/1454/151 936/1444/145 +f 935/1446/22 942/1455/152 934/1447/147 +f 933/1456/23 940/1457/153 932/1450/148 +f 939/1458/149 948/1459/154 947/1460/155 +f 946/1453/150 947/1460/155 953/1461/156 +f 944/1454/151 952/1462/28 951/1463/157 +f 943/1464/146 949/1465/158 942/1466/152 +f 946/1453/150 952/1462/28 945/1442/144 +f 944/1454/151 950/1467/159 943/1464/146 +f 953/1461/156 959/1468/160 952/1462/28 +f 950/1467/159 958/1469/161 957/1470/162 +f 947/1460/155 955/1471/163 954/1472/164 +f 947/1460/155 960/1473/165 953/1461/156 +f 951/1463/157 959/1468/160 958/1469/161 +f 950/1467/159 956/1474/166 949/1465/158 +f 942/1466/152 949/1465/158 941/1475/34 +f 949/1465/158 956/1474/166 941/1475/34 +f 940/1476/153 941/1477/34 948/1459/154 +f 948/1459/154 941/1477/34 955/1471/163 +f 968/1478/147 975/1479/167 967/1480/23 +f 966/1481/148 973/1482/168 965/1483/24 +f 964/1484/143 971/1485/31 963/1486/21 +f 962/1487/145 969/1488/169 961/1489/22 +f 961/1489/22 976/1490/170 968/1478/147 +f 967/1480/23 974/1491/171 966/1481/148 +f 965/1483/24 972/1492/172 964/1484/143 +f 963/1493/21 970/1494/173 962/1487/145 +f 970/1495/173 977/1496/174 969/1497/169 +f 969/1497/169 983/1498/175 976/1490/170 +f 974/1491/171 982/1499/37 981/1500/176 +f 972/1501/172 980/1502/177 979/1503/178 +f 976/1490/170 982/1499/37 975/1479/167 +f 973/1504/168 981/1500/176 980/1502/177 +f 983/1498/175 989/1505/179 982/1499/37 +f 980/1502/177 988/1506/180 987/1507/181 +f 977/1496/174 985/1508/182 984/1509/183 +f 977/1496/174 990/1510/184 983/1498/175 +f 981/1500/176 989/1505/179 988/1506/180 +f 980/1502/177 986/1511/185 979/1503/178 +f 972/1501/172 979/1503/178 971/1512/31 +f 979/1503/178 986/1511/185 971/1512/31 +f 970/1495/173 971/1513/31 978/1514/186 +f 978/1514/186 971/1513/31 985/1508/182 +f 990/1510/184 957/1515/162 958/1469/161 +f 959/1468/160 990/1510/184 958/1469/161 +f 988/1506/180 959/1468/160 960/1473/165 +f 987/1516/181 960/1473/165 954/1517/164 +f 986/1518/185 954/1517/164 955/1519/163 +f 971/1520/31 955/1519/163 941/1521/34 +f 941/1522/34 985/1523/182 971/1524/31 +f 984/1525/183 956/1526/166 957/1515/162 +f 998/1527/145 1005/1528/187 997/1529/21 +f 996/1530/143 1003/1531/188 995/1532/24 +f 994/1533/148 1001/1534/37 993/1535/23 +f 992/1536/147 999/1537/189 991/1538/22 +f 991/1538/22 1006/1539/190 998/1527/145 +f 997/1529/21 1004/1540/191 996/1530/143 +f 995/1532/24 1002/1541/192 994/1533/148 +f 993/1542/23 1000/1543/193 992/1536/147 +f 999/1544/189 1008/1545/194 1007/1546/195 +f 1006/1539/190 1007/1546/195 1013/1547/196 +f 1004/1540/191 1012/1548/31 1011/1549/197 +f 1003/1550/188 1009/1551/198 1002/1552/192 +f 1006/1539/190 1012/1548/31 1005/1528/187 +f 1004/1540/191 1010/1553/199 1003/1550/188 +f 1013/1547/196 1019/1554/200 1012/1548/31 +f 1010/1553/199 1018/1555/201 1017/1556/202 +f 1008/1545/194 1014/1557/203 1007/1546/195 +f 1007/1546/195 1020/1558/204 1013/1547/196 +f 1011/1549/197 1019/1554/200 1018/1555/201 +f 1009/1551/198 1017/1556/202 1016/1559/205 +f 1002/1552/192 1009/1551/198 1001/1560/37 +f 1009/1551/198 1016/1559/205 1001/1560/37 +f 1000/1561/193 1001/1562/37 1008/1545/194 +f 1008/1545/194 1001/1562/37 1015/1563/206 +f 1028/1564/148 1035/1565/207 1027/1566/23 +f 1026/1567/147 1033/1568/208 1025/1569/22 +f 1023/1570/21 1032/1571/209 1031/1572/28 +f 1022/1573/143 1029/1574/210 1021/1575/24 +f 1021/1575/24 1036/1576/211 1028/1564/148 +f 1027/1566/23 1034/1577/212 1026/1567/147 +f 1025/1569/22 1032/1571/209 1024/1578/145 +f 1023/1579/21 1030/1580/213 1022/1573/143 +f 1030/1581/213 1037/1582/214 1029/1583/210 +f 1029/1583/210 1043/1584/215 1036/1576/211 +f 1034/1577/212 1042/1585/34 1041/1586/216 +f 1032/1587/209 1040/1588/217 1039/1589/218 +f 1036/1576/211 1042/1585/34 1035/1565/207 +f 1033/1590/208 1041/1586/216 1040/1588/217 +f 1043/1584/215 1049/1591/219 1042/1585/34 +f 1040/1588/217 1048/1592/220 1047/1593/221 +f 1038/1594/222 1044/1595/223 1037/1582/214 +f 1037/1582/214 1050/1596/224 1043/1584/215 +f 1041/1586/216 1049/1591/219 1048/1592/220 +f 1039/1589/218 1047/1593/221 1046/1597/225 +f 1032/1587/209 1039/1589/218 1031/1598/28 +f 1039/1589/218 1046/1597/225 1031/1598/28 +f 1030/1581/213 1031/1599/28 1038/1594/222 +f 1038/1594/222 1031/1599/28 1045/1600/226 +f 1050/1596/224 1017/1601/202 1018/1555/201 +f 1049/1591/219 1018/1555/201 1019/1554/200 +f 1048/1592/220 1019/1554/200 1020/1558/204 +f 1047/1602/221 1020/1558/204 1014/1603/203 +f 1046/1604/225 1014/1603/203 1015/1605/206 +f 1001/1606/37 1046/1604/225 1015/1605/206 +f 1016/1607/205 1031/1608/28 1001/1609/37 +f 1044/1610/223 1016/1607/205 1017/1601/202 +f 1058/1611/145 1065/1612/187 1057/1613/21 +f 1056/1614/143 1063/1615/188 1055/1616/24 +f 1054/1617/148 1061/1618/37 1053/1619/23 +f 1052/1620/147 1059/1621/189 1051/1622/22 +f 1051/1622/22 1066/1623/190 1058/1611/145 +f 1057/1613/21 1064/1624/191 1056/1614/143 +f 1055/1616/24 1062/1625/192 1054/1617/148 +f 1053/1626/23 1060/1627/193 1052/1620/147 +f 1059/1628/189 1068/1629/194 1067/1630/195 +f 1066/1623/190 1067/1630/195 1073/1631/196 +f 1064/1624/191 1072/1632/31 1071/1633/197 +f 1063/1634/188 1069/1635/198 1062/1636/192 +f 1066/1623/190 1072/1632/31 1065/1612/187 +f 1064/1624/191 1070/1637/199 1063/1634/188 +f 1073/1631/196 1079/1638/200 1072/1632/31 +f 1071/1633/197 1077/1639/202 1070/1637/199 +f 1068/1629/194 1074/1640/203 1067/1630/195 +f 1067/1630/195 1080/1641/204 1073/1631/196 +f 1071/1633/197 1079/1638/200 1078/1642/201 +f 1069/1635/198 1077/1639/202 1076/1643/205 +f 1062/1636/192 1069/1635/198 1061/1644/37 +f 1069/1635/198 1076/1643/205 1061/1644/37 +f 1060/1645/193 1061/1646/37 1068/1629/194 +f 1068/1629/194 1061/1646/37 1075/1647/206 +f 1088/1648/148 1095/1649/207 1087/1650/23 +f 1086/1651/147 1093/1652/208 1085/1653/22 +f 1084/1654/145 1091/1655/28 1083/1656/21 +f 1082/1657/143 1089/1658/210 1081/1659/24 +f 1081/1659/24 1096/1660/211 1088/1648/148 +f 1087/1650/23 1094/1661/212 1086/1651/147 +f 1085/1653/22 1092/1662/209 1084/1654/145 +f 1083/1663/21 1090/1664/213 1082/1657/143 +f 1090/1665/213 1097/1666/214 1089/1667/210 +f 1089/1667/210 1103/1668/215 1096/1660/211 +f 1094/1661/212 1102/1669/34 1101/1670/216 +f 1092/1671/209 1100/1672/217 1099/1673/218 +f 1096/1660/211 1102/1669/34 1095/1649/207 +f 1093/1674/208 1101/1670/216 1100/1672/217 +f 1103/1668/215 1109/1675/219 1102/1669/34 +f 1100/1672/217 1108/1676/220 1107/1677/221 +f 1098/1678/222 1104/1679/223 1097/1666/214 +f 1103/1668/215 1104/1679/223 1110/1680/224 +f 1101/1670/216 1109/1675/219 1108/1676/220 +f 1100/1672/217 1106/1681/225 1099/1673/218 +f 1092/1671/209 1099/1673/218 1091/1682/28 +f 1099/1673/218 1106/1681/225 1091/1682/28 +f 1090/1665/213 1091/1683/28 1098/1678/222 +f 1098/1678/222 1091/1683/28 1105/1684/226 +f 1110/1680/224 1077/1685/202 1078/1642/201 +f 1079/1638/200 1110/1680/224 1078/1642/201 +f 1108/1676/220 1079/1638/200 1080/1641/204 +f 1107/1686/221 1080/1641/204 1074/1687/203 +f 1106/1688/225 1074/1687/203 1075/1689/206 +f 1061/1690/37 1106/1688/225 1075/1689/206 +f 1061/1691/37 1105/1692/226 1091/1693/28 +f 1104/1694/223 1076/1695/205 1077/1685/202 +f 1118/1696/145 1125/1697/187 1117/1698/21 +f 1116/1699/143 1123/1700/188 1115/1701/24 +f 1114/1702/148 1121/1703/37 1113/1704/23 +f 1112/1705/147 1119/1706/189 1111/1707/22 +f 1111/1707/22 1126/1708/190 1118/1696/145 +f 1117/1698/21 1124/1709/191 1116/1699/143 +f 1115/1701/24 1122/1710/192 1114/1702/148 +f 1113/1711/23 1120/1712/193 1112/1705/147 +f 1119/1713/189 1128/1714/194 1127/1715/195 +f 1126/1708/190 1127/1715/195 1133/1716/196 +f 1124/1709/191 1132/1717/31 1131/1718/197 +f 1123/1719/188 1129/1720/198 1122/1721/192 +f 1126/1708/190 1132/1717/31 1125/1697/187 +f 1124/1709/191 1130/1722/199 1123/1719/188 +f 1133/1716/196 1139/1723/200 1132/1717/31 +f 1131/1718/197 1137/1724/202 1130/1722/199 +f 1128/1714/194 1134/1725/203 1127/1715/195 +f 1127/1715/195 1140/1726/204 1133/1716/196 +f 1131/1718/197 1139/1723/200 1138/1727/201 +f 1129/1720/198 1137/1724/202 1136/1728/205 +f 1122/1721/192 1129/1720/198 1121/1729/37 +f 1129/1720/198 1136/1728/205 1121/1729/37 +f 1120/1730/193 1121/1731/37 1128/1714/194 +f 1128/1714/194 1121/1731/37 1135/1732/206 +f 1148/1733/148 1155/1734/207 1147/1735/23 +f 1146/1736/147 1153/1737/208 1145/1738/22 +f 1144/1739/145 1151/1740/28 1143/1741/21 +f 1142/1742/143 1149/1743/210 1141/1744/24 +f 1141/1744/24 1156/1745/211 1148/1733/148 +f 1147/1735/23 1154/1746/212 1146/1736/147 +f 1145/1738/22 1152/1747/209 1144/1739/145 +f 1143/1748/21 1150/1749/213 1142/1742/143 +f 1150/1750/213 1157/1751/214 1149/1752/210 +f 1149/1752/210 1163/1753/215 1156/1745/211 +f 1154/1746/212 1162/1754/34 1161/1755/216 +f 1152/1756/209 1160/1757/217 1159/1758/218 +f 1156/1745/211 1162/1754/34 1155/1734/207 +f 1153/1759/208 1161/1755/216 1160/1757/217 +f 1163/1753/215 1169/1760/219 1162/1754/34 +f 1160/1757/217 1168/1761/220 1167/1762/221 +f 1158/1763/222 1164/1764/223 1157/1751/214 +f 1157/1751/214 1170/1765/224 1163/1753/215 +f 1161/1755/216 1169/1760/219 1168/1761/220 +f 1159/1758/218 1167/1762/221 1166/1766/225 +f 1152/1756/209 1159/1758/218 1151/1767/28 +f 1159/1758/218 1166/1766/225 1151/1767/28 +f 1150/1750/213 1151/1768/28 1158/1763/222 +f 1158/1763/222 1151/1768/28 1165/1769/226 +f 1170/1765/224 1137/1770/202 1138/1727/201 +f 1169/1760/219 1138/1727/201 1139/1723/200 +f 1168/1761/220 1139/1723/200 1140/1726/204 +f 1167/1771/221 1140/1726/204 1134/1772/203 +f 1166/1773/225 1134/1772/203 1135/1774/206 +f 1151/1775/28 1135/1774/206 1121/1776/37 +f 1121/1777/37 1165/1778/226 1151/1779/28 +f 1164/1780/223 1136/1781/205 1137/1770/202 +f 1178/1782/145 1185/1783/187 1177/1784/21 +f 1176/1785/143 1183/1786/188 1175/1787/24 +f 1174/1788/148 1181/1789/37 1173/1790/23 +f 1172/1791/147 1179/1792/189 1171/1793/22 +f 1171/1793/22 1186/1794/190 1178/1782/145 +f 1177/1784/21 1184/1795/191 1176/1785/143 +f 1175/1787/24 1182/1796/192 1174/1788/148 +f 1173/1797/23 1180/1798/193 1172/1791/147 +f 1179/1799/189 1188/1800/194 1187/1801/195 +f 1186/1794/190 1187/1801/195 1193/1802/196 +f 1184/1795/191 1192/1803/31 1191/1804/197 +f 1183/1805/188 1189/1806/198 1182/1807/192 +f 1186/1794/190 1192/1803/31 1185/1783/187 +f 1184/1795/191 1190/1808/199 1183/1805/188 +f 1193/1802/196 1199/1809/200 1192/1803/31 +f 1190/1808/199 1198/1810/201 1197/1811/202 +f 1188/1800/194 1194/1812/203 1187/1801/195 +f 1187/1801/195 1200/1813/204 1193/1802/196 +f 1191/1804/197 1199/1809/200 1198/1810/201 +f 1189/1806/198 1197/1811/202 1196/1814/205 +f 1182/1807/192 1189/1806/198 1181/1815/37 +f 1189/1806/198 1196/1814/205 1181/1815/37 +f 1180/1816/193 1181/1817/37 1188/1800/194 +f 1188/1800/194 1181/1817/37 1195/1818/206 +f 1208/1819/148 1215/1820/207 1207/1821/23 +f 1206/1822/147 1213/1823/208 1205/1824/22 +f 1203/1825/21 1212/1826/209 1211/1827/28 +f 1202/1828/143 1209/1829/210 1201/1830/24 +f 1201/1830/24 1216/1831/211 1208/1819/148 +f 1207/1821/23 1214/1832/212 1206/1822/147 +f 1204/1833/145 1213/1823/208 1212/1826/209 +f 1203/1834/21 1210/1835/213 1202/1828/143 +f 1210/1836/213 1217/1837/214 1209/1838/210 +f 1209/1838/210 1223/1839/215 1216/1831/211 +f 1214/1832/212 1222/1840/34 1221/1841/216 +f 1212/1842/209 1220/1843/217 1219/1844/218 +f 1216/1831/211 1222/1840/34 1215/1820/207 +f 1213/1845/208 1221/1841/216 1220/1843/217 +f 1223/1839/215 1229/1846/219 1222/1840/34 +f 1220/1843/217 1228/1847/220 1227/1848/221 +f 1217/1837/214 1225/1849/226 1224/1850/223 +f 1217/1837/214 1230/1851/224 1223/1839/215 +f 1221/1841/216 1229/1846/219 1228/1847/220 +f 1220/1843/217 1226/1852/225 1219/1844/218 +f 1212/1842/209 1219/1844/218 1211/1853/28 +f 1219/1844/218 1226/1852/225 1211/1853/28 +f 1210/1836/213 1211/1854/28 1218/1855/222 +f 1218/1855/222 1211/1854/28 1225/1849/226 +f 1230/1851/224 1197/1856/202 1198/1810/201 +f 1199/1809/200 1230/1851/224 1198/1810/201 +f 1228/1847/220 1199/1809/200 1200/1813/204 +f 1227/1857/221 1200/1813/204 1194/1858/203 +f 1226/1859/225 1194/1858/203 1195/1860/206 +f 1181/1861/37 1226/1859/225 1195/1860/206 +f 1196/1862/205 1211/1863/28 1181/1864/37 +f 1224/1865/223 1196/1862/205 1197/1856/202 +f 1238/1866/145 1245/1867/187 1237/1868/21 +f 1236/1869/143 1243/1870/188 1235/1871/24 +f 1234/1872/148 1241/1873/37 1233/1874/23 +f 1232/1875/147 1239/1876/189 1231/1877/22 +f 1231/1877/22 1246/1878/190 1238/1866/145 +f 1237/1868/21 1244/1879/191 1236/1869/143 +f 1235/1871/24 1242/1880/192 1234/1872/148 +f 1233/1881/23 1240/1882/193 1232/1875/147 +f 1239/1883/189 1248/1884/194 1247/1885/195 +f 1246/1878/190 1247/1885/195 1253/1886/196 +f 1244/1879/191 1252/1887/31 1251/1888/197 +f 1243/1889/188 1249/1890/198 1242/1891/192 +f 1246/1878/190 1252/1887/31 1245/1867/187 +f 1244/1879/191 1250/1892/199 1243/1889/188 +f 1253/1886/196 1259/1893/200 1252/1887/31 +f 1250/1892/199 1258/1894/201 1257/1895/202 +f 1248/1884/194 1254/1896/203 1247/1885/195 +f 1247/1885/195 1260/1897/204 1253/1886/196 +f 1251/1888/197 1259/1893/200 1258/1894/201 +f 1249/1890/198 1257/1895/202 1256/1898/205 +f 1242/1891/192 1249/1890/198 1241/1899/37 +f 1249/1890/198 1256/1898/205 1241/1899/37 +f 1240/1900/193 1241/1901/37 1248/1884/194 +f 1248/1884/194 1241/1901/37 1255/1902/206 +f 1268/1903/148 1275/1904/207 1267/1905/23 +f 1266/1906/147 1273/1907/208 1265/1908/22 +f 1264/1909/145 1271/1910/28 1263/1911/21 +f 1262/1912/143 1269/1913/210 1261/1914/24 +f 1261/1914/24 1276/1915/211 1268/1903/148 +f 1267/1905/23 1274/1916/212 1266/1906/147 +f 1265/1908/22 1272/1917/209 1264/1909/145 +f 1263/1918/21 1270/1919/213 1262/1912/143 +f 1270/1920/213 1277/1921/214 1269/1922/210 +f 1269/1922/210 1283/1923/215 1276/1915/211 +f 1274/1916/212 1282/1924/34 1281/1925/216 +f 1272/1926/209 1280/1927/217 1279/1928/218 +f 1276/1915/211 1282/1924/34 1275/1904/207 +f 1273/1929/208 1281/1925/216 1280/1927/217 +f 1283/1923/215 1289/1930/219 1282/1924/34 +f 1280/1927/217 1288/1931/220 1287/1932/221 +f 1278/1933/222 1284/1934/223 1277/1921/214 +f 1277/1921/214 1290/1935/224 1283/1923/215 +f 1281/1925/216 1289/1930/219 1288/1931/220 +f 1280/1927/217 1286/1936/225 1279/1928/218 +f 1272/1926/209 1279/1928/218 1271/1937/28 +f 1279/1928/218 1286/1936/225 1271/1937/28 +f 1270/1920/213 1271/1938/28 1278/1933/222 +f 1278/1933/222 1271/1938/28 1285/1939/226 +f 1290/1935/224 1257/1940/202 1258/1894/201 +f 1289/1930/219 1258/1894/201 1259/1893/200 +f 1288/1931/220 1259/1893/200 1260/1897/204 +f 1287/1941/221 1260/1897/204 1254/1942/203 +f 1286/1943/225 1254/1942/203 1255/1944/206 +f 1241/1945/37 1286/1943/225 1255/1944/206 +f 1241/1946/37 1285/1947/226 1271/1948/28 +f 1284/1949/223 1256/1950/205 1257/1940/202 +f 210/339/25 212/338/27 211/423/27 +f 212/338/27 214/366/28 213/421/28 +f 214/366/28 216/364/29 215/419/29 +f 216/364/29 218/363/21 217/417/21 +f 218/363/21 220/362/30 219/416/30 +f 220/362/30 222/360/31 221/414/31 +f 222/360/31 224/358/32 223/412/32 +f 224/358/32 226/357/26 225/410/26 +f 226/355/26 228/353/33 227/407/33 +f 228/353/33 230/352/34 229/405/34 +f 230/352/34 232/349/35 231/403/35 +f 232/349/35 234/347/23 233/401/23 +f 234/347/23 236/345/36 235/431/36 +f 236/345/36 238/343/37 237/429/37 +f 238/343/37 240/340/38 239/426/38 +f 240/340/38 210/339/25 209/425/25 +f 244/337/39 243/873/49 250/865/40 +f 310/393/44 311/875/52 303/869/45 +f 354/866/42 249/868/43 250/865/40 +f 324/874/50 311/875/52 310/393/44 +f 325/870/47 317/872/48 311/875/52 +f 249/879/43 256/883/58 257/880/54 +f 332/881/55 324/874/50 318/397/51 +f 251/796/41 250/865/40 257/880/54 +f 332/881/55 338/876/53 325/878/47 +f 256/887/58 263/891/64 264/888/60 +f 345/889/61 332/881/55 331/399/56 +f 258/368/57 257/880/54 264/888/60 +f 345/889/61 346/884/59 338/886/53 +f 263/892/64 270/898/68 271/893/65 +f 265/367/63 264/888/60 271/893/65 +f 355/899/69 345/889/61 339/400/62 +f 271/893/65 270/902/68 277/900/71 +f 356/894/66 346/896/59 345/889/61 +f 272/365/67 271/893/65 278/901/72 +f 370/904/74 356/907/66 355/899/69 +f 246/905/75 355/899/69 352/370/70 +f 279/361/73 278/901/72 285/908/77 +f 252/373/27 357/369/25 359/442/25 +f 259/375/28 252/373/27 253/441/27 +f 278/901/72 277/909/71 284/911/79 +f 266/377/29 259/375/28 260/438/28 +f 285/908/77 292/915/82 293/356/80 +f 273/379/21 266/377/29 267/436/29 +f 280/381/30 273/379/21 274/433/21 +f 284/912/79 291/914/81 292/915/82 +f 287/384/31 280/381/30 281/463/30 +f 293/356/80 292/915/82 299/916/83 +f 294/385/32 287/384/31 288/461/31 +f 301/387/26 294/385/32 295/458/32 +f 291/917/81 298/919/85 299/916/83 +f 308/390/33 301/389/26 302/457/26 +f 299/920/83 306/924/88 307/351/86 +f 315/392/34 308/390/33 309/456/33 +f 322/394/35 315/392/34 316/455/34 +f 298/921/85 305/923/87 306/924/88 +f 306/924/88 313/928/91 314/350/89 +f 329/395/23 322/394/35 323/452/35 +f 336/396/36 329/395/23 330/450/23 +f 305/925/87 312/927/90 313/928/91 +f 343/398/37 336/396/36 337/448/36 +f 350/371/38 343/398/37 344/446/37 +f 357/369/25 350/371/38 351/444/38 +f 312/929/90 319/931/92 320/932/93 +f 314/350/89 313/928/91 320/932/93 +f 319/933/92 326/936/97 327/934/95 +f 320/932/93 327/934/95 328/346/96 +f 327/934/95 326/939/97 333/937/98 +f 327/934/95 334/938/99 335/344/100 +f 333/941/98 340/944/103 341/942/101 +f 334/938/99 341/942/101 342/341/102 +f 341/942/101 340/947/103 347/945/104 +f 341/942/101 348/946/105 349/342/106 +f 347/949/104 354/951/42 243/873/49 +f 348/946/105 243/873/49 244/337/39 +f 317/952/48 304/954/107 303/869/45 +f 297/391/46 303/869/45 290/955/108 +f 304/956/107 296/958/110 290/955/108 +f 289/388/109 290/955/108 282/959/111 +f 290/955/108 296/960/110 283/962/113 +f 282/963/111 269/967/116 268/383/114 +f 282/963/111 283/964/113 275/966/115 +f 269/967/116 261/971/119 255/382/117 +f 269/967/116 275/968/115 262/970/118 +f 261/971/119 262/972/118 254/974/120 +f 261/971/119 248/975/121 247/380/122 +f 254/976/120 245/979/125 242/977/123 +f 248/975/121 242/977/123 241/378/124 +f 245/980/125 360/983/128 361/981/126 +f 242/977/123 361/981/126 362/376/127 +f 361/981/126 360/986/128 363/984/129 +f 361/981/126 364/985/130 365/374/131 +f 363/988/129 366/991/134 367/989/132 +f 364/985/130 367/989/132 368/372/133 +f 367/989/132 366/993/134 370/992/74 +f 367/989/132 246/905/75 358/798/76 +f 384/430/36 400/447/36 399/449/23 +f 377/413/31 393/464/31 392/465/30 +f 385/428/37 401/445/37 400/447/36 +f 378/411/32 394/462/32 393/464/31 +f 386/427/38 402/443/38 401/445/37 +f 379/800/26 395/459/26 394/462/32 +f 372/801/27 388/439/27 387/440/25 +f 371/424/25 387/440/25 402/443/38 +f 380/406/33 396/454/33 395/802/26 +f 373/422/28 389/437/28 388/439/27 +f 381/404/34 397/453/34 396/454/33 +f 374/420/29 390/434/29 389/437/28 +f 382/402/35 398/451/35 397/453/34 +f 375/418/21 391/435/21 390/434/29 +f 383/432/23 399/449/23 398/451/35 +f 376/415/30 392/465/30 391/435/21 +f 420/995/26 444/489/26 443/493/135 +f 434/997/136 458/486/136 448/485/22 +f 413/999/137 437/808/137 435/479/138 +f 427/1001/139 451/502/139 452/500/140 +f 421/1003/139 445/810/139 444/489/26 +f 414/1004/25 438/476/25 437/478/137 +f 428/1002/140 452/500/140 453/812/24 +f 422/1007/140 446/484/140 445/488/139 +f 415/1009/141 439/474/141 438/476/25 +f 429/1010/24 453/497/24 454/496/138 +f 411/1012/24 436/809/24 446/484/140 +f 416/1013/136 440/501/136 439/503/141 +f 430/1011/138 454/496/138 455/495/137 +f 423/1016/22 448/482/22 447/481/142 +f 417/1018/22 441/499/22 440/501/136 +f 431/1019/137 455/492/137 456/491/25 +f 424/1017/142 447/481/142 449/480/135 +f 418/1022/142 442/494/142 441/498/22 +f 432/1020/25 456/491/25 457/490/141 +f 425/1025/135 449/477/135 450/475/26 +f 419/1027/135 443/811/135 442/494/142 +f 433/1028/141 457/487/141 458/486/136 +f 412/1000/138 435/479/138 436/483/24 +f 426/1026/26 450/475/26 451/807/139 +f 572/1031/26 596/643/26 595/646/139 +f 586/1033/138 610/640/138 600/639/24 +f 565/1035/141 589/838/141 587/633/136 +f 579/1037/135 603/656/135 604/655/142 +f 573/1039/135 597/840/135 596/643/26 +f 566/1040/25 590/630/25 589/632/141 +f 580/1038/142 604/655/142 605/654/22 +f 574/1043/142 598/638/142 597/641/135 +f 567/1045/137 591/628/137 590/630/25 +f 581/1046/22 605/651/22 606/649/136 +f 563/1048/22 588/839/22 598/638/142 +f 568/1049/138 592/653/138 591/657/137 +f 582/1047/136 606/649/136 607/841/141 +f 575/1052/24 600/637/24 599/635/140 +f 569/1054/24 593/842/24 592/653/138 +f 583/1055/141 607/647/141 608/645/25 +f 576/1053/140 599/635/140 601/634/139 +f 570/1058/140 594/650/140 593/652/24 +f 584/1056/25 608/645/25 609/644/137 +f 577/1061/139 601/631/139 602/629/26 +f 571/1063/139 595/648/139 594/650/140 +f 585/1064/137 609/642/137 610/640/138 +f 564/1036/136 587/633/136 588/636/22 +f 578/1062/26 602/629/26 603/837/135 +f 650/1067/143 658/1079/150 657/1068/144 +f 648/1070/145 656/1080/151 655/1071/146 +f 646/1073/147 654/1081/152 653/1074/34 +f 644/1076/148 652/1083/153 651/1077/149 +f 643/1078/24 651/1077/149 658/1079/150 +f 649/1069/21 657/1068/144 656/1080/151 +f 647/1072/22 655/1071/146 654/1081/152 +f 645/1082/23 653/1951/34 652/1083/153 +f 651/1084/149 652/1102/153 660/1085/154 +f 658/1079/150 651/1084/149 659/1086/155 +f 656/1080/151 657/1068/144 664/1088/28 +f 655/1090/146 662/1093/159 661/1091/158 +f 658/1079/150 665/1087/156 664/1088/28 +f 656/1080/151 663/1089/157 662/1093/159 +f 665/1087/156 672/1099/165 671/1094/160 +f 662/1093/159 663/1089/157 670/1095/161 +f 659/1086/155 660/1085/154 667/1097/163 +f 659/1086/155 666/1098/164 672/1099/165 +f 664/1088/28 671/1094/160 670/1095/161 +f 662/1093/159 669/1096/162 668/1100/166 +f 680/1104/147 688/1116/170 687/1105/167 +f 678/1107/148 686/1117/171 685/1108/168 +f 676/1110/143 684/1118/172 683/1111/31 +f 674/1113/145 682/1120/173 681/1114/169 +f 673/1115/22 681/1114/169 688/1116/170 +f 679/1106/23 687/1105/167 686/1117/171 +f 677/1109/24 685/1108/168 684/1118/172 +f 675/1119/21 683/1952/31 682/1120/173 +f 682/1121/173 690/1140/186 689/1122/174 +f 688/1116/170 681/1123/169 689/1122/174 +f 686/1117/171 687/1105/167 694/1125/37 +f 684/1127/172 685/1130/168 692/1128/177 +f 688/1116/170 695/1124/175 694/1125/37 +f 685/1130/168 686/1117/171 693/1126/176 +f 695/1124/175 702/1136/184 701/1131/179 +f 692/1128/177 693/1126/176 700/1132/180 +f 689/1122/174 690/1140/186 697/1134/182 +f 689/1122/174 696/1135/183 702/1136/184 +f 693/1126/176 694/1125/37 701/1131/179 +f 691/1129/178 692/1128/177 699/1133/181 +f 702/1136/184 696/1150/183 669/1141/162 +f 671/1094/160 701/1131/179 702/1136/184 +f 700/1132/180 701/1131/179 671/1094/160 +f 699/1142/181 700/1132/180 672/1099/165 +f 698/1144/185 699/1142/181 666/1143/164 +f 653/1146/34 683/1953/31 698/1144/185 +f 653/1147/34 668/1151/166 697/1148/182 +f 696/1150/183 697/1148/182 668/1151/166 +f 712/1152/37 719/1164/37 720/1153/25 +f 718/1155/28 711/1154/25 720/1153/25 +f 716/1157/31 717/1165/21 725/1158/21 +f 715/1160/26 723/1954/26 722/1161/34 +f 713/1163/23 721/1168/23 719/1164/37 +f 717/1165/21 718/1155/28 726/1156/28 +f 716/1157/31 724/1159/31 723/1166/26 +f 714/1162/34 722/1161/34 721/1168/23 +f 728/1169/28 735/1181/28 736/1170/25 +f 727/1171/25 736/1170/25 742/1172/37 +f 732/1174/34 733/1182/23 741/1175/23 +f 731/1177/26 739/1955/26 738/1178/31 +f 729/1180/21 737/1185/21 735/1181/28 +f 733/1182/23 734/1173/37 742/1172/37 +f 732/1174/34 740/1176/34 739/1183/26 +f 730/1179/31 738/1178/31 737/1185/21 +f 758/1186/143 766/1198/150 765/1187/144 +f 756/1189/145 764/1199/151 763/1190/146 +f 754/1192/147 762/1200/152 761/1193/34 +f 752/1195/148 760/1202/153 759/1196/149 +f 751/1197/24 759/1196/149 766/1198/150 +f 757/1188/21 765/1187/144 764/1199/151 +f 755/1191/22 763/1190/146 762/1200/152 +f 753/1201/23 761/1956/34 760/1202/153 +f 759/1203/149 760/1221/153 768/1204/154 +f 766/1198/150 759/1203/149 767/1205/155 +f 764/1199/151 765/1187/144 772/1207/28 +f 763/1209/146 770/1212/159 769/1210/158 +f 766/1198/150 773/1206/156 772/1207/28 +f 764/1199/151 771/1208/157 770/1212/159 +f 773/1206/156 780/1218/165 779/1213/160 +f 770/1212/159 771/1208/157 778/1214/161 +f 767/1205/155 768/1204/154 775/1216/163 +f 767/1205/155 774/1217/164 780/1218/165 +f 771/1208/157 772/1207/28 779/1213/160 +f 770/1212/159 777/1215/162 776/1219/166 +f 788/1223/147 796/1235/170 795/1224/167 +f 786/1226/148 794/1236/171 793/1227/168 +f 784/1229/143 792/1237/172 791/1230/31 +f 782/1232/145 790/1239/173 789/1233/169 +f 781/1234/22 789/1233/169 796/1235/170 +f 787/1225/23 795/1224/167 794/1236/171 +f 785/1228/24 793/1227/168 792/1237/172 +f 783/1238/21 791/1957/31 790/1239/173 +f 790/1240/173 798/1259/186 797/1241/174 +f 789/1242/169 797/1241/174 803/1243/175 +f 794/1236/171 795/1224/167 802/1244/37 +f 792/1246/172 793/1249/168 800/1247/177 +f 796/1235/170 803/1243/175 802/1244/37 +f 793/1249/168 794/1236/171 801/1245/176 +f 803/1243/175 810/1255/184 809/1250/179 +f 800/1247/177 801/1245/176 808/1251/180 +f 797/1241/174 798/1259/186 805/1253/182 +f 797/1241/174 804/1254/183 810/1255/184 +f 801/1245/176 802/1244/37 809/1250/179 +f 800/1247/177 807/1252/181 806/1256/185 +f 810/1255/184 804/1269/183 777/1260/162 +f 779/1213/160 809/1250/179 810/1255/184 +f 808/1251/180 809/1250/179 779/1213/160 +f 807/1261/181 808/1251/180 780/1218/165 +f 806/1263/185 807/1261/181 774/1262/164 +f 761/1265/34 791/1958/31 806/1263/185 +f 761/1266/34 776/1270/166 805/1267/182 +f 804/1269/183 805/1267/182 776/1270/166 +f 818/1271/143 826/1283/150 825/1272/144 +f 816/1274/145 824/1284/151 823/1275/146 +f 814/1277/147 822/1285/152 821/1278/34 +f 812/1280/148 820/1287/153 819/1281/149 +f 811/1282/24 819/1281/149 826/1283/150 +f 817/1273/21 825/1272/144 824/1284/151 +f 815/1276/22 823/1275/146 822/1285/152 +f 813/1286/23 821/1959/34 820/1287/153 +f 819/1288/149 820/1305/153 828/1289/154 +f 826/1283/150 819/1288/149 827/1290/155 +f 824/1284/151 825/1272/144 832/1292/28 +f 823/1294/146 830/1297/159 829/1295/158 +f 825/1272/144 826/1283/150 833/1291/156 +f 824/1284/151 831/1293/157 830/1297/159 +f 833/1291/156 840/1302/165 839/1298/160 +f 830/1297/159 831/1293/157 838/1299/161 +f 828/1289/154 835/1307/163 834/1301/164 +f 827/1290/155 834/1301/164 840/1302/165 +f 831/1293/157 832/1292/28 839/1298/160 +f 829/1295/158 830/1297/159 837/1300/162 +f 848/1308/147 856/1320/170 855/1309/167 +f 846/1311/148 854/1321/171 853/1312/168 +f 844/1314/143 852/1322/172 851/1315/31 +f 842/1317/145 850/1324/173 849/1318/169 +f 841/1319/22 849/1318/169 856/1320/170 +f 847/1310/23 855/1309/167 854/1321/171 +f 845/1313/24 853/1312/168 852/1322/172 +f 843/1323/21 851/1960/31 850/1324/173 +f 850/1325/173 858/1338/186 857/1326/174 +f 849/1327/169 857/1326/174 863/1328/175 +f 854/1321/171 855/1309/167 862/1329/37 +f 852/1331/172 853/1334/168 860/1332/177 +f 856/1320/170 863/1328/175 862/1329/37 +f 853/1334/168 854/1321/171 861/1330/176 +f 863/1328/175 870/1340/184 869/1335/179 +f 860/1332/177 861/1330/176 868/1336/180 +f 858/1338/186 865/1344/182 864/1339/183 +f 857/1326/174 864/1339/183 870/1340/184 +f 861/1330/176 862/1329/37 869/1335/179 +f 859/1333/178 860/1332/177 867/1337/181 +f 870/1340/184 864/1355/183 837/1345/162 +f 839/1298/160 869/1335/179 870/1340/184 +f 868/1336/180 869/1335/179 839/1298/160 +f 867/1346/181 868/1336/180 840/1302/165 +f 866/1348/185 867/1346/181 834/1347/164 +f 851/1350/31 866/1348/185 835/1349/163 +f 821/1352/34 836/1356/166 865/1353/182 +f 864/1355/183 865/1353/182 836/1356/166 +f 878/1357/143 886/1369/150 885/1358/144 +f 876/1360/145 884/1370/151 883/1361/146 +f 874/1363/147 882/1371/152 881/1364/34 +f 872/1366/148 880/1373/153 879/1367/149 +f 871/1368/24 879/1367/149 886/1369/150 +f 877/1359/21 885/1358/144 884/1370/151 +f 875/1362/22 883/1361/146 882/1371/152 +f 873/1372/23 881/1961/34 880/1373/153 +f 879/1374/149 880/1391/153 888/1375/154 +f 886/1369/150 879/1374/149 887/1376/155 +f 885/1358/144 892/1382/28 891/1378/157 +f 883/1379/146 890/1383/159 889/1380/158 +f 886/1369/150 893/1377/156 892/1382/28 +f 884/1370/151 891/1378/157 890/1383/159 +f 893/1377/156 900/1388/165 899/1384/160 +f 890/1383/159 891/1378/157 898/1385/161 +f 888/1375/154 895/1393/163 894/1387/164 +f 887/1376/155 894/1387/164 900/1388/165 +f 891/1378/157 892/1382/28 899/1384/160 +f 889/1380/158 890/1383/159 897/1386/162 +f 908/1394/147 916/1406/170 915/1395/167 +f 906/1397/148 914/1407/171 913/1398/168 +f 904/1400/143 912/1408/172 911/1401/31 +f 902/1403/145 910/1410/173 909/1404/169 +f 901/1405/22 909/1404/169 916/1406/170 +f 907/1396/23 915/1395/167 914/1407/171 +f 905/1399/24 913/1398/168 912/1408/172 +f 903/1409/21 911/1962/31 910/1410/173 +f 910/1411/173 918/1424/186 917/1412/174 +f 909/1413/169 917/1412/174 923/1414/175 +f 914/1407/171 915/1395/167 922/1415/37 +f 912/1417/172 913/1420/168 920/1418/177 +f 916/1406/170 923/1414/175 922/1415/37 +f 913/1420/168 914/1407/171 921/1416/176 +f 923/1414/175 930/1426/184 929/1421/179 +f 920/1418/177 921/1416/176 928/1422/180 +f 918/1424/186 925/1430/182 924/1425/183 +f 917/1412/174 924/1425/183 930/1426/184 +f 921/1416/176 922/1415/37 929/1421/179 +f 920/1418/177 927/1423/181 926/1427/185 +f 930/1426/184 924/1440/183 897/1431/162 +f 899/1384/160 929/1421/179 930/1426/184 +f 928/1422/180 929/1421/179 899/1384/160 +f 927/1432/181 928/1422/180 900/1388/165 +f 926/1434/185 927/1432/181 894/1433/164 +f 881/1436/34 911/1963/31 926/1434/185 +f 896/1437/166 925/1964/182 911/1438/31 +f 924/1440/183 925/1964/182 896/1437/166 +f 938/1441/143 946/1453/150 945/1442/144 +f 936/1444/145 944/1454/151 943/1445/146 +f 934/1447/147 942/1455/152 941/1448/34 +f 932/1450/148 940/1457/153 939/1451/149 +f 931/1452/24 939/1451/149 946/1453/150 +f 937/1443/21 945/1442/144 944/1454/151 +f 935/1446/22 943/1445/146 942/1455/152 +f 933/1456/23 941/1965/34 940/1457/153 +f 939/1458/149 940/1476/153 948/1459/154 +f 946/1453/150 939/1458/149 947/1460/155 +f 944/1454/151 945/1442/144 952/1462/28 +f 943/1464/146 950/1467/159 949/1465/158 +f 946/1453/150 953/1461/156 952/1462/28 +f 944/1454/151 951/1463/157 950/1467/159 +f 953/1461/156 960/1473/165 959/1468/160 +f 950/1467/159 951/1463/157 958/1469/161 +f 947/1460/155 948/1459/154 955/1471/163 +f 947/1460/155 954/1472/164 960/1473/165 +f 951/1463/157 952/1462/28 959/1468/160 +f 950/1467/159 957/1470/162 956/1474/166 +f 968/1478/147 976/1490/170 975/1479/167 +f 966/1481/148 974/1491/171 973/1482/168 +f 964/1484/143 972/1492/172 971/1485/31 +f 962/1487/145 970/1494/173 969/1488/169 +f 961/1489/22 969/1488/169 976/1490/170 +f 967/1480/23 975/1479/167 974/1491/171 +f 965/1483/24 973/1482/168 972/1492/172 +f 963/1493/21 971/1966/31 970/1494/173 +f 970/1495/173 978/1514/186 977/1496/174 +f 969/1497/169 977/1496/174 983/1498/175 +f 974/1491/171 975/1479/167 982/1499/37 +f 972/1501/172 973/1504/168 980/1502/177 +f 976/1490/170 983/1498/175 982/1499/37 +f 973/1504/168 974/1491/171 981/1500/176 +f 983/1498/175 990/1510/184 989/1505/179 +f 980/1502/177 981/1500/176 988/1506/180 +f 977/1496/174 978/1514/186 985/1508/182 +f 977/1496/174 984/1509/183 990/1510/184 +f 981/1500/176 982/1499/37 989/1505/179 +f 980/1502/177 987/1507/181 986/1511/185 +f 990/1510/184 984/1525/183 957/1515/162 +f 959/1468/160 989/1505/179 990/1510/184 +f 988/1506/180 989/1505/179 959/1468/160 +f 987/1516/181 988/1506/180 960/1473/165 +f 986/1518/185 987/1516/181 954/1517/164 +f 971/1520/31 986/1518/185 955/1519/163 +f 941/1522/34 956/1526/166 985/1523/182 +f 984/1525/183 985/1523/182 956/1526/166 +f 998/1527/145 1006/1539/190 1005/1528/187 +f 996/1530/143 1004/1540/191 1003/1531/188 +f 994/1533/148 1002/1541/192 1001/1534/37 +f 992/1536/147 1000/1543/193 999/1537/189 +f 991/1538/22 999/1537/189 1006/1539/190 +f 997/1529/21 1005/1528/187 1004/1540/191 +f 995/1532/24 1003/1531/188 1002/1541/192 +f 993/1542/23 1001/1967/37 1000/1543/193 +f 999/1544/189 1000/1561/193 1008/1545/194 +f 1006/1539/190 999/1544/189 1007/1546/195 +f 1004/1540/191 1005/1528/187 1012/1548/31 +f 1003/1550/188 1010/1553/199 1009/1551/198 +f 1006/1539/190 1013/1547/196 1012/1548/31 +f 1004/1540/191 1011/1549/197 1010/1553/199 +f 1013/1547/196 1020/1558/204 1019/1554/200 +f 1010/1553/199 1011/1549/197 1018/1555/201 +f 1008/1545/194 1015/1563/206 1014/1557/203 +f 1007/1546/195 1014/1557/203 1020/1558/204 +f 1011/1549/197 1012/1548/31 1019/1554/200 +f 1009/1551/198 1010/1553/199 1017/1556/202 +f 1028/1564/148 1036/1576/211 1035/1565/207 +f 1026/1567/147 1034/1577/212 1033/1568/208 +f 1023/1570/21 1024/1578/145 1032/1571/209 +f 1022/1573/143 1030/1580/213 1029/1574/210 +f 1021/1575/24 1029/1574/210 1036/1576/211 +f 1027/1566/23 1035/1565/207 1034/1577/212 +f 1025/1569/22 1033/1568/208 1032/1571/209 +f 1023/1579/21 1031/1968/28 1030/1580/213 +f 1030/1581/213 1038/1594/222 1037/1582/214 +f 1029/1583/210 1037/1582/214 1043/1584/215 +f 1034/1577/212 1035/1565/207 1042/1585/34 +f 1032/1587/209 1033/1590/208 1040/1588/217 +f 1036/1576/211 1043/1584/215 1042/1585/34 +f 1033/1590/208 1034/1577/212 1041/1586/216 +f 1043/1584/215 1050/1596/224 1049/1591/219 +f 1040/1588/217 1041/1586/216 1048/1592/220 +f 1038/1594/222 1045/1600/226 1044/1595/223 +f 1037/1582/214 1044/1595/223 1050/1596/224 +f 1041/1586/216 1042/1585/34 1049/1591/219 +f 1039/1589/218 1040/1588/217 1047/1593/221 +f 1050/1596/224 1044/1610/223 1017/1601/202 +f 1049/1591/219 1050/1596/224 1018/1555/201 +f 1048/1592/220 1049/1591/219 1019/1554/200 +f 1047/1602/221 1048/1592/220 1020/1558/204 +f 1046/1604/225 1047/1602/221 1014/1603/203 +f 1001/1606/37 1031/1969/28 1046/1604/225 +f 1016/1607/205 1045/1970/226 1031/1608/28 +f 1044/1610/223 1045/1970/226 1016/1607/205 +f 1058/1611/145 1066/1623/190 1065/1612/187 +f 1056/1614/143 1064/1624/191 1063/1615/188 +f 1054/1617/148 1062/1625/192 1061/1618/37 +f 1052/1620/147 1060/1627/193 1059/1621/189 +f 1051/1622/22 1059/1621/189 1066/1623/190 +f 1057/1613/21 1065/1612/187 1064/1624/191 +f 1055/1616/24 1063/1615/188 1062/1625/192 +f 1053/1626/23 1061/1971/37 1060/1627/193 +f 1059/1628/189 1060/1645/193 1068/1629/194 +f 1066/1623/190 1059/1628/189 1067/1630/195 +f 1064/1624/191 1065/1612/187 1072/1632/31 +f 1063/1634/188 1070/1637/199 1069/1635/198 +f 1066/1623/190 1073/1631/196 1072/1632/31 +f 1064/1624/191 1071/1633/197 1070/1637/199 +f 1073/1631/196 1080/1641/204 1079/1638/200 +f 1071/1633/197 1078/1642/201 1077/1639/202 +f 1068/1629/194 1075/1647/206 1074/1640/203 +f 1067/1630/195 1074/1640/203 1080/1641/204 +f 1071/1633/197 1072/1632/31 1079/1638/200 +f 1069/1635/198 1070/1637/199 1077/1639/202 +f 1088/1648/148 1096/1660/211 1095/1649/207 +f 1086/1651/147 1094/1661/212 1093/1652/208 +f 1084/1654/145 1092/1662/209 1091/1655/28 +f 1082/1657/143 1090/1664/213 1089/1658/210 +f 1081/1659/24 1089/1658/210 1096/1660/211 +f 1087/1650/23 1095/1649/207 1094/1661/212 +f 1085/1653/22 1093/1652/208 1092/1662/209 +f 1083/1663/21 1091/1972/28 1090/1664/213 +f 1090/1665/213 1098/1678/222 1097/1666/214 +f 1089/1667/210 1097/1666/214 1103/1668/215 +f 1094/1661/212 1095/1649/207 1102/1669/34 +f 1092/1671/209 1093/1674/208 1100/1672/217 +f 1096/1660/211 1103/1668/215 1102/1669/34 +f 1093/1674/208 1094/1661/212 1101/1670/216 +f 1103/1668/215 1110/1680/224 1109/1675/219 +f 1100/1672/217 1101/1670/216 1108/1676/220 +f 1098/1678/222 1105/1684/226 1104/1679/223 +f 1103/1668/215 1097/1666/214 1104/1679/223 +f 1101/1670/216 1102/1669/34 1109/1675/219 +f 1100/1672/217 1107/1677/221 1106/1681/225 +f 1110/1680/224 1104/1694/223 1077/1685/202 +f 1079/1638/200 1109/1675/219 1110/1680/224 +f 1108/1676/220 1109/1675/219 1079/1638/200 +f 1107/1686/221 1108/1676/220 1080/1641/204 +f 1106/1688/225 1107/1686/221 1074/1687/203 +f 1061/1690/37 1091/1973/28 1106/1688/225 +f 1061/1691/37 1076/1695/205 1105/1692/226 +f 1104/1694/223 1105/1692/226 1076/1695/205 +f 1118/1696/145 1126/1708/190 1125/1697/187 +f 1116/1699/143 1124/1709/191 1123/1700/188 +f 1114/1702/148 1122/1710/192 1121/1703/37 +f 1112/1705/147 1120/1712/193 1119/1706/189 +f 1111/1707/22 1119/1706/189 1126/1708/190 +f 1117/1698/21 1125/1697/187 1124/1709/191 +f 1115/1701/24 1123/1700/188 1122/1710/192 +f 1113/1711/23 1121/1974/37 1120/1712/193 +f 1119/1713/189 1120/1730/193 1128/1714/194 +f 1126/1708/190 1119/1713/189 1127/1715/195 +f 1124/1709/191 1125/1697/187 1132/1717/31 +f 1123/1719/188 1130/1722/199 1129/1720/198 +f 1126/1708/190 1133/1716/196 1132/1717/31 +f 1124/1709/191 1131/1718/197 1130/1722/199 +f 1133/1716/196 1140/1726/204 1139/1723/200 +f 1131/1718/197 1138/1727/201 1137/1724/202 +f 1128/1714/194 1135/1732/206 1134/1725/203 +f 1127/1715/195 1134/1725/203 1140/1726/204 +f 1131/1718/197 1132/1717/31 1139/1723/200 +f 1129/1720/198 1130/1722/199 1137/1724/202 +f 1148/1733/148 1156/1745/211 1155/1734/207 +f 1146/1736/147 1154/1746/212 1153/1737/208 +f 1144/1739/145 1152/1747/209 1151/1740/28 +f 1142/1742/143 1150/1749/213 1149/1743/210 +f 1141/1744/24 1149/1743/210 1156/1745/211 +f 1147/1735/23 1155/1734/207 1154/1746/212 +f 1145/1738/22 1153/1737/208 1152/1747/209 +f 1143/1748/21 1151/1975/28 1150/1749/213 +f 1150/1750/213 1158/1763/222 1157/1751/214 +f 1149/1752/210 1157/1751/214 1163/1753/215 +f 1154/1746/212 1155/1734/207 1162/1754/34 +f 1152/1756/209 1153/1759/208 1160/1757/217 +f 1156/1745/211 1163/1753/215 1162/1754/34 +f 1153/1759/208 1154/1746/212 1161/1755/216 +f 1163/1753/215 1170/1765/224 1169/1760/219 +f 1160/1757/217 1161/1755/216 1168/1761/220 +f 1158/1763/222 1165/1769/226 1164/1764/223 +f 1157/1751/214 1164/1764/223 1170/1765/224 +f 1161/1755/216 1162/1754/34 1169/1760/219 +f 1159/1758/218 1160/1757/217 1167/1762/221 +f 1170/1765/224 1164/1780/223 1137/1770/202 +f 1169/1760/219 1170/1765/224 1138/1727/201 +f 1168/1761/220 1169/1760/219 1139/1723/200 +f 1167/1771/221 1168/1761/220 1140/1726/204 +f 1166/1773/225 1167/1771/221 1134/1772/203 +f 1151/1775/28 1166/1773/225 1135/1774/206 +f 1121/1777/37 1136/1781/205 1165/1778/226 +f 1164/1780/223 1165/1778/226 1136/1781/205 +f 1178/1782/145 1186/1794/190 1185/1783/187 +f 1176/1785/143 1184/1795/191 1183/1786/188 +f 1174/1788/148 1182/1796/192 1181/1789/37 +f 1172/1791/147 1180/1798/193 1179/1792/189 +f 1171/1793/22 1179/1792/189 1186/1794/190 +f 1177/1784/21 1185/1783/187 1184/1795/191 +f 1175/1787/24 1183/1786/188 1182/1796/192 +f 1173/1797/23 1181/1976/37 1180/1798/193 +f 1179/1799/189 1180/1816/193 1188/1800/194 +f 1186/1794/190 1179/1799/189 1187/1801/195 +f 1184/1795/191 1185/1783/187 1192/1803/31 +f 1183/1805/188 1190/1808/199 1189/1806/198 +f 1186/1794/190 1193/1802/196 1192/1803/31 +f 1184/1795/191 1191/1804/197 1190/1808/199 +f 1193/1802/196 1200/1813/204 1199/1809/200 +f 1190/1808/199 1191/1804/197 1198/1810/201 +f 1188/1800/194 1195/1818/206 1194/1812/203 +f 1187/1801/195 1194/1812/203 1200/1813/204 +f 1191/1804/197 1192/1803/31 1199/1809/200 +f 1189/1806/198 1190/1808/199 1197/1811/202 +f 1208/1819/148 1216/1831/211 1215/1820/207 +f 1206/1822/147 1214/1832/212 1213/1823/208 +f 1203/1825/21 1204/1833/145 1212/1826/209 +f 1202/1828/143 1210/1835/213 1209/1829/210 +f 1201/1830/24 1209/1829/210 1216/1831/211 +f 1207/1821/23 1215/1820/207 1214/1832/212 +f 1204/1833/145 1205/1824/22 1213/1823/208 +f 1203/1834/21 1211/1977/28 1210/1835/213 +f 1210/1836/213 1218/1855/222 1217/1837/214 +f 1209/1838/210 1217/1837/214 1223/1839/215 +f 1214/1832/212 1215/1820/207 1222/1840/34 +f 1212/1842/209 1213/1845/208 1220/1843/217 +f 1216/1831/211 1223/1839/215 1222/1840/34 +f 1213/1845/208 1214/1832/212 1221/1841/216 +f 1223/1839/215 1230/1851/224 1229/1846/219 +f 1220/1843/217 1221/1841/216 1228/1847/220 +f 1217/1837/214 1218/1855/222 1225/1849/226 +f 1217/1837/214 1224/1850/223 1230/1851/224 +f 1221/1841/216 1222/1840/34 1229/1846/219 +f 1220/1843/217 1227/1848/221 1226/1852/225 +f 1230/1851/224 1224/1865/223 1197/1856/202 +f 1199/1809/200 1229/1846/219 1230/1851/224 +f 1228/1847/220 1229/1846/219 1199/1809/200 +f 1227/1857/221 1228/1847/220 1200/1813/204 +f 1226/1859/225 1227/1857/221 1194/1858/203 +f 1181/1861/37 1211/1978/28 1226/1859/225 +f 1196/1862/205 1225/1979/226 1211/1863/28 +f 1224/1865/223 1225/1979/226 1196/1862/205 +f 1238/1866/145 1246/1878/190 1245/1867/187 +f 1236/1869/143 1244/1879/191 1243/1870/188 +f 1234/1872/148 1242/1880/192 1241/1873/37 +f 1232/1875/147 1240/1882/193 1239/1876/189 +f 1231/1877/22 1239/1876/189 1246/1878/190 +f 1237/1868/21 1245/1867/187 1244/1879/191 +f 1235/1871/24 1243/1870/188 1242/1880/192 +f 1233/1881/23 1241/1980/37 1240/1882/193 +f 1239/1883/189 1240/1900/193 1248/1884/194 +f 1246/1878/190 1239/1883/189 1247/1885/195 +f 1244/1879/191 1245/1867/187 1252/1887/31 +f 1243/1889/188 1250/1892/199 1249/1890/198 +f 1246/1878/190 1253/1886/196 1252/1887/31 +f 1244/1879/191 1251/1888/197 1250/1892/199 +f 1253/1886/196 1260/1897/204 1259/1893/200 +f 1250/1892/199 1251/1888/197 1258/1894/201 +f 1248/1884/194 1255/1902/206 1254/1896/203 +f 1247/1885/195 1254/1896/203 1260/1897/204 +f 1251/1888/197 1252/1887/31 1259/1893/200 +f 1249/1890/198 1250/1892/199 1257/1895/202 +f 1268/1903/148 1276/1915/211 1275/1904/207 +f 1266/1906/147 1274/1916/212 1273/1907/208 +f 1264/1909/145 1272/1917/209 1271/1910/28 +f 1262/1912/143 1270/1919/213 1269/1913/210 +f 1261/1914/24 1269/1913/210 1276/1915/211 +f 1267/1905/23 1275/1904/207 1274/1916/212 +f 1265/1908/22 1273/1907/208 1272/1917/209 +f 1263/1918/21 1271/1981/28 1270/1919/213 +f 1270/1920/213 1278/1933/222 1277/1921/214 +f 1269/1922/210 1277/1921/214 1283/1923/215 +f 1274/1916/212 1275/1904/207 1282/1924/34 +f 1272/1926/209 1273/1929/208 1280/1927/217 +f 1276/1915/211 1283/1923/215 1282/1924/34 +f 1273/1929/208 1274/1916/212 1281/1925/216 +f 1283/1923/215 1290/1935/224 1289/1930/219 +f 1280/1927/217 1281/1925/216 1288/1931/220 +f 1278/1933/222 1285/1939/226 1284/1934/223 +f 1277/1921/214 1284/1934/223 1290/1935/224 +f 1281/1925/216 1282/1924/34 1289/1930/219 +f 1280/1927/217 1287/1932/221 1286/1936/225 +f 1290/1935/224 1284/1949/223 1257/1940/202 +f 1289/1930/219 1290/1935/224 1258/1894/201 +f 1288/1931/220 1289/1930/219 1259/1893/200 +f 1287/1941/221 1288/1931/220 1260/1897/204 +f 1286/1943/225 1287/1941/221 1254/1942/203 +f 1241/1945/37 1271/1982/28 1286/1943/225 +f 1241/1946/37 1256/1950/205 1285/1947/226 +f 1284/1949/223 1285/1947/226 1256/1950/205 diff --git a/src/main/resources/assets/hbm/models/machines/conveyor_press.obj b/src/main/resources/assets/hbm/models/machines/conveyor_press.obj new file mode 100644 index 000000000..0fca31982 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/conveyor_press.obj @@ -0,0 +1,1042 @@ +# Blender v2.79 (sub 0) OBJ File: 'conveyor_press.blend' +# www.blender.org +o Belt +v -0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 0.500000 +v 0.500000 1.000000 -0.500000 +v 0.500000 1.250000 0.500000 +v -0.500000 1.250000 0.500000 +v 0.500000 1.250000 -0.500000 +v -0.500000 1.250000 -0.500000 +vt -0.000000 0.953125 +vt 1.000000 0.937500 +vt 1.000000 0.953125 +vt 1.000000 0.937500 +vt 0.000000 0.953125 +vt 0.000000 0.937500 +vt 0.000000 1.000000 +vt 1.000000 0.937500 +vt 1.000000 1.000000 +vt -0.000000 0.937500 +vt 1.000000 0.953125 +vt 0.000000 0.937500 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +s off +f 2/1/1 7/2/1 4/3/1 +f 3/4/2 6/5/2 1/6/2 +f 8/7/3 5/8/3 7/9/3 +f 2/1/1 8/10/1 7/2/1 +f 3/4/2 5/11/2 6/5/2 +f 8/7/3 6/12/3 5/8/3 +o Piston +v -0.250000 2.125000 -0.250000 +v -0.250000 2.125000 0.250000 +v 0.250000 2.125000 0.250000 +v 0.250000 2.125000 -0.250000 +v -0.250000 2.000000 -0.250000 +v -0.250000 2.000000 0.250000 +v 0.250000 2.000000 0.250000 +v 0.250000 2.000000 -0.250000 +v -0.187500 2.125000 0.187500 +v 0.187500 2.125000 0.187500 +v -0.187500 2.125000 -0.187500 +v 0.187500 2.125000 -0.187500 +v -0.187500 2.875000 0.187500 +v 0.187500 2.875000 0.187500 +v -0.187500 2.875000 -0.187500 +v 0.187500 2.875000 -0.187500 +vt 0.553571 0.528846 +vt 0.428571 0.519231 +vt 0.571429 0.519231 +vt 0.571429 0.423077 +vt 0.428571 0.500000 +vt 0.428571 0.423077 +vt 0.571429 0.500000 +vt 0.428571 0.519231 +vt 0.571429 0.500000 +vt 0.571429 0.519231 +vt 0.428571 0.519231 +vt 0.571429 0.500000 +vt 0.571429 0.519231 +vt 0.428571 0.519231 +vt 0.571429 0.500000 +vt 0.571429 0.519231 +vt 0.553571 0.644231 +vt 0.446429 0.528846 +vt 0.553571 0.528846 +vt 0.553571 0.644231 +vt 0.446429 0.528846 +vt 0.553571 0.528846 +vt 0.553571 0.644231 +vt 0.446429 0.528846 +vt 0.553571 0.644231 +vt 0.446429 0.528846 +vt 0.553571 0.528846 +vt 0.428571 0.500000 +vt 0.428571 0.500000 +vt 0.428571 0.500000 +vt 0.446429 0.644231 +vt 0.446429 0.644231 +vt 0.446429 0.644231 +vt 0.446429 0.644231 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 20/13/4 11/14/4 12/15/4 +f 13/16/5 15/17/5 14/18/5 +f 11/14/6 16/19/6 12/15/6 +f 9/20/7 14/21/7 10/22/7 +f 12/23/8 13/24/8 9/25/8 +f 10/26/9 15/27/9 11/28/9 +f 23/29/8 20/30/8 19/31/8 +f 22/32/9 17/33/9 18/34/9 +f 24/35/6 18/36/6 20/13/6 +f 21/37/7 19/38/7 17/39/7 +f 19/31/4 12/23/4 9/25/4 +f 17/39/4 9/20/4 10/22/4 +f 18/34/4 10/26/4 11/28/4 +f 20/13/4 18/36/4 11/14/4 +f 13/16/5 16/19/5 15/17/5 +f 11/14/6 15/17/6 16/19/6 +f 9/20/7 13/40/7 14/21/7 +f 12/23/8 16/41/8 13/24/8 +f 10/26/9 14/42/9 15/27/9 +f 23/29/8 24/43/8 20/30/8 +f 22/32/9 21/44/9 17/33/9 +f 24/35/6 22/45/6 18/36/6 +f 21/37/7 23/46/7 19/38/7 +f 19/31/4 20/30/4 12/23/4 +f 17/39/4 19/38/4 9/20/4 +f 18/34/4 17/33/4 10/26/4 +o Press +v -0.500000 0.000000 0.500000 +v -0.500000 1.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v 0.500000 1.000000 0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.500000 0.000000 0.375000 +v -0.500000 0.875000 0.375000 +v 0.500000 0.000000 0.375000 +v 0.500000 0.875000 0.375000 +v -0.500000 0.000000 -0.375000 +v -0.500000 0.875000 -0.375000 +v 0.500000 0.000000 -0.375000 +v 0.500000 0.875000 -0.375000 +v 0.375000 0.000000 0.500000 +v 0.375000 0.875000 0.500000 +v 0.375000 0.000000 -0.500000 +v 0.375000 0.875000 -0.500000 +v -0.375000 0.000000 0.500000 +v -0.375000 0.875000 0.500000 +v -0.375000 0.000000 -0.500000 +v -0.375000 0.875000 -0.500000 +v -0.437500 0.000000 0.375000 +v -0.437500 0.875000 0.375000 +v -0.437500 0.875000 -0.375000 +v -0.437500 0.000000 -0.375000 +v 0.375000 0.000000 0.437500 +v -0.375000 0.000000 0.437500 +v -0.375000 0.875000 0.437500 +v 0.375000 0.875000 0.437500 +v 0.437500 0.000000 0.375000 +v 0.437500 0.875000 0.375000 +v 0.437500 0.875000 -0.375000 +v 0.437500 0.000000 -0.375000 +v 0.375000 0.000000 -0.437500 +v -0.375000 0.000000 -0.437500 +v -0.375000 0.875000 -0.437500 +v 0.375000 0.875000 -0.437500 +v 0.500000 1.250000 0.500000 +v -0.500000 1.250000 0.500000 +v 0.500000 1.250000 -0.500000 +v -0.500000 1.250000 -0.500000 +v -0.375000 2.000000 0.375000 +v 0.375000 2.000000 0.375000 +v -0.375000 2.000000 -0.375000 +v 0.375000 2.000000 -0.375000 +v -0.375000 3.000000 -0.375000 +v -0.375000 3.000000 0.375000 +v 0.375000 3.000000 0.375000 +v 0.375000 3.000000 -0.375000 +v -0.250000 2.000000 0.250000 +v 0.250000 2.000000 0.250000 +v -0.250000 2.000000 -0.250000 +v 0.250000 2.000000 -0.250000 +v -0.250000 2.125000 -0.250000 +v -0.250000 2.125000 0.250000 +v 0.250000 2.125000 0.250000 +v 0.250000 2.125000 -0.250000 +v 0.625000 0.000000 0.500000 +v 0.625000 0.000000 0.375000 +v 0.750000 0.000000 0.500000 +v 0.750000 0.000000 0.375000 +v 0.625000 2.250000 0.500000 +v 0.625000 2.250000 0.375000 +v 0.750000 2.250000 0.500000 +v 0.750000 2.250000 0.375000 +v -0.750000 0.000000 0.500000 +v -0.750000 0.000000 0.375000 +v -0.625000 0.000000 0.500000 +v -0.625000 0.000000 0.375000 +v -0.750000 2.250000 0.500000 +v -0.750000 2.250000 0.375000 +v -0.625000 2.250000 0.500000 +v -0.625000 2.250000 0.375000 +v -0.500000 2.500000 0.375000 +v 0.500000 2.500000 0.375000 +v -0.500000 2.375000 0.375000 +v 0.500000 2.375000 0.375000 +v -0.500000 2.500000 0.500000 +v 0.500000 2.500000 0.500000 +v -0.500000 2.375000 0.500000 +v 0.500000 2.375000 0.500000 +v 0.625000 0.000000 -0.375000 +v 0.625000 0.000000 -0.500000 +v 0.750000 0.000000 -0.375000 +v 0.750000 0.000000 -0.500000 +v 0.625000 2.250000 -0.375000 +v 0.625000 2.250000 -0.500000 +v 0.750000 2.250000 -0.375000 +v 0.750000 2.250000 -0.500000 +v -0.750000 0.000000 -0.375000 +v -0.750000 0.000000 -0.500000 +v -0.625000 0.000000 -0.375000 +v -0.625000 0.000000 -0.500000 +v -0.750000 2.250000 -0.375000 +v -0.750000 2.250000 -0.500000 +v -0.625000 2.250000 -0.375000 +v -0.625000 2.250000 -0.500000 +v -0.500000 2.500000 -0.500000 +v 0.500000 2.500000 -0.500000 +v -0.500000 2.375000 -0.500000 +v 0.500000 2.375000 -0.500000 +v -0.500000 2.500000 -0.375000 +v 0.500000 2.500000 -0.375000 +v -0.500000 2.375000 -0.375000 +v 0.500000 2.375000 -0.375000 +v -0.250000 2.500000 0.375000 +v 0.250000 2.500000 0.375000 +v -0.250000 2.750000 0.375000 +v 0.250000 2.750000 0.375000 +v -0.250000 2.750000 0.437500 +v -0.250000 2.500000 0.437500 +v 0.250000 2.500000 0.437500 +v 0.250000 2.750000 0.437500 +v -0.250000 2.500000 -0.437500 +v 0.250000 2.500000 -0.437500 +v -0.250000 2.750000 -0.437500 +v 0.250000 2.750000 -0.437500 +v -0.250000 2.750000 -0.375000 +v -0.250000 2.500000 -0.375000 +v 0.250000 2.500000 -0.375000 +v 0.250000 2.750000 -0.375000 +v 0.500000 0.687500 0.187500 +v 0.500000 0.312500 0.187500 +v 0.500000 0.687500 -0.187500 +v 0.500000 0.312500 -0.187500 +v 0.437500 0.687500 -0.187500 +v 0.437500 0.687500 0.187500 +v 0.437500 0.312500 0.187500 +v 0.437500 0.312500 -0.187500 +v -0.500000 0.687500 -0.187500 +v -0.500000 0.312500 -0.187500 +v -0.500000 0.687500 0.187500 +v -0.500000 0.312500 0.187500 +v -0.437500 0.687500 0.187500 +v -0.437500 0.687500 -0.187500 +v -0.437500 0.312500 -0.187500 +v -0.437500 0.312500 0.187500 +v 0.187500 0.687500 -0.500000 +v 0.187500 0.312500 -0.500000 +v -0.187500 0.687500 -0.500000 +v -0.187500 0.312500 -0.500000 +v -0.187500 0.687500 -0.437500 +v 0.187500 0.687500 -0.437500 +v 0.187500 0.312500 -0.437500 +v -0.187500 0.312500 -0.437500 +v -0.187500 0.687500 0.500000 +v -0.187500 0.312500 0.500000 +v 0.187500 0.687500 0.500000 +v 0.187500 0.312500 0.500000 +v 0.187500 0.687500 0.437500 +v -0.187500 0.687500 0.437500 +v -0.187500 0.312500 0.437500 +v 0.187500 0.312500 0.437500 +v 0.500000 0.093750 0.468750 +v 0.500000 0.031250 0.468750 +v 0.500000 0.093750 0.406250 +v 0.500000 0.031250 0.406250 +v 0.625000 0.093750 0.468750 +v 0.625000 0.031250 0.468750 +v 0.625000 0.093750 0.406250 +v 0.625000 0.031250 0.406250 +v 0.500000 0.968750 0.468750 +v 0.500000 0.906250 0.468750 +v 0.500000 0.968750 0.406250 +v 0.500000 0.906250 0.406250 +v 0.625000 0.968750 0.468750 +v 0.625000 0.906250 0.468750 +v 0.625000 0.968750 0.406250 +v 0.625000 0.906250 0.406250 +v 0.500000 0.093750 -0.406250 +v 0.500000 0.031250 -0.406250 +v 0.500000 0.093750 -0.468750 +v 0.500000 0.031250 -0.468750 +v 0.625000 0.093750 -0.406250 +v 0.625000 0.031250 -0.406250 +v 0.625000 0.093750 -0.468750 +v 0.625000 0.031250 -0.468750 +v 0.500000 0.968750 -0.406250 +v 0.500000 0.906250 -0.406250 +v 0.500000 0.968750 -0.468750 +v 0.500000 0.906250 -0.468750 +v 0.625000 0.968750 -0.406250 +v 0.625000 0.906250 -0.406250 +v 0.625000 0.968750 -0.468750 +v 0.625000 0.906250 -0.468750 +v -0.625000 0.093750 0.468750 +v -0.625000 0.031250 0.468750 +v -0.625000 0.093750 0.406250 +v -0.625000 0.031250 0.406250 +v -0.500000 0.093750 0.468750 +v -0.500000 0.031250 0.468750 +v -0.500000 0.093750 0.406250 +v -0.500000 0.031250 0.406250 +v -0.625000 0.968750 0.468750 +v -0.625000 0.906250 0.468750 +v -0.625000 0.968750 0.406250 +v -0.625000 0.906250 0.406250 +v -0.500000 0.968750 0.468750 +v -0.500000 0.906250 0.468750 +v -0.500000 0.968750 0.406250 +v -0.500000 0.906250 0.406250 +v -0.625000 0.093750 -0.406250 +v -0.625000 0.031250 -0.406250 +v -0.625000 0.093750 -0.468750 +v -0.625000 0.031250 -0.468750 +v -0.500000 0.093750 -0.406250 +v -0.500000 0.031250 -0.406250 +v -0.500000 0.093750 -0.468750 +v -0.500000 0.031250 -0.468750 +v -0.625000 0.968750 -0.406250 +v -0.625000 0.906250 -0.406250 +v -0.625000 0.968750 -0.468750 +v -0.625000 0.906250 -0.468750 +v -0.500000 0.968750 -0.406250 +v -0.500000 0.906250 -0.406250 +v -0.500000 0.968750 -0.468750 +v -0.500000 0.906250 -0.468750 +vt 0.285714 -0.000000 +vt 0.321429 0.134615 +vt 0.285714 0.153846 +vt 0.285714 -0.000000 +vt 0.321429 0.134615 +vt 0.285714 0.153846 +vt 0.571429 -0.000000 +vt 0.535714 0.134615 +vt 0.535714 -0.000000 +vt 0.285714 -0.000000 +vt 0.321429 0.134615 +vt 0.285714 0.153846 +vt 0.535714 0.134615 +vt 0.571429 -0.000000 +vt 0.571429 0.153846 +vt 0.571429 -0.000000 +vt 0.535714 0.134615 +vt 0.535714 -0.000000 +vt 0.285714 -0.000000 +vt 0.321429 0.134615 +vt 0.285714 0.153846 +vt 0.571429 -0.000000 +vt 0.535714 0.134615 +vt 0.535714 -0.000000 +vt 0.571429 0.153846 +vt 0.571429 0.153846 +vt 0.571429 0.153846 +vt 0.714286 0.230769 +vt 0.428571 0.269231 +vt 0.428571 0.230769 +vt 0.803571 0.134615 +vt 0.589286 0.000000 +vt 0.803571 0.000000 +vt 0.821429 0.000000 +vt 0.821429 0.134615 +vt 0.589286 0.134615 +vt 0.803571 0.144231 +vt 0.589286 0.144231 +vt 0.571429 0.134615 +vt 0.571429 0.000000 +vt 0.714286 0.230769 +vt 0.428571 0.269231 +vt 0.428571 0.230769 +vt 0.803571 0.134615 +vt 0.589286 0.000000 +vt 0.803571 0.000000 +vt 0.571429 0.000000 +vt 0.589286 0.134615 +vt 0.571429 0.134615 +vt 0.589286 0.144231 +vt 0.803571 0.144231 +vt 0.821429 0.134615 +vt 0.821429 0.000000 +vt 0.803571 0.000000 +vt 0.589286 0.134615 +vt 0.589286 0.000000 +vt 0.571429 0.000000 +vt 0.571429 0.134615 +vt 0.589286 0.144231 +vt 0.803571 0.134615 +vt 0.803571 0.144231 +vt 0.821429 0.134615 +vt 0.821429 0.000000 +vt 0.803571 0.000000 +vt 0.589286 0.134615 +vt 0.589286 0.000000 +vt 0.017857 0.019231 +vt 0.250000 0.009615 +vt 0.267857 0.019231 +vt 0.803571 0.134615 +vt 0.821429 0.000000 +vt 0.821429 0.134615 +vt 0.803571 0.144231 +vt 0.589286 0.144231 +vt 0.571429 0.134615 +vt 0.571429 0.000000 +vt 0.214286 0.153846 +vt 0.250000 0.250000 +vt 0.214286 0.269231 +vt 0.214286 0.423077 +vt 0.428571 0.538462 +vt 0.214286 0.538462 +vt 0.428571 0.269231 +vt 0.857143 0.269231 +vt 0.642857 0.423077 +vt 0.642857 0.269231 +vt 0.428571 0.423077 +vt 0.000000 0.423077 +vt 0.000000 0.269231 +vt 0.142857 0.250000 +vt -0.000000 0.269231 +vt -0.000000 0.250000 +vt 0.392857 0.250000 +vt 0.392857 0.173077 +vt 0.428571 0.153846 +vt 0.250000 0.173077 +vt 0.392857 0.173077 +vt 0.250000 0.250000 +vt 0.250000 0.173077 +vt 0.142857 0.250000 +vt -0.000000 0.269231 +vt -0.000000 0.250000 +vt 0.142857 0.250000 +vt -0.000000 0.269231 +vt -0.000000 0.250000 +vt 0.142857 0.250000 +vt -0.000000 0.269231 +vt -0.000000 0.250000 +vt 0.928571 0.019231 +vt 0.892857 0.000000 +vt 0.928571 0.000000 +vt 0.928571 0.634615 +vt 0.964286 0.586538 +vt 0.964286 0.625000 +vt 0.892857 0.019231 +vt 0.857143 0.365385 +vt 0.857143 0.019231 +vt 0.892857 0.365385 +vt 0.964286 0.019231 +vt 0.928571 0.365385 +vt 1.000000 0.019231 +vt 0.964286 0.365385 +vt 1.000000 0.586538 +vt 1.000000 0.625000 +vt 0.928571 1.000000 +vt 0.892857 0.980769 +vt 0.928571 0.980769 +vt 0.892857 0.423077 +vt 0.857143 0.375000 +vt 0.857143 0.980769 +vt 0.892857 0.634615 +vt 0.964286 0.980769 +vt 1.000000 0.634615 +vt 1.000000 0.980769 +vt 0.964286 0.634615 +vt 0.964286 0.423077 +vt 0.928571 0.576923 +vt 0.928571 0.423077 +vt 0.892857 0.576923 +vt 0.857143 0.423077 +vt 0.964286 0.375000 +vt 1.000000 0.576923 +vt 0.964286 0.576923 +vt 1.000000 0.625000 +vt 0.964286 0.586538 +vt 1.000000 0.586538 +vt 0.857143 0.586538 +vt 0.857143 0.625000 +vt 0.928571 0.019231 +vt 0.892857 0.000000 +vt 0.928571 0.000000 +vt 0.928571 0.634615 +vt 0.964286 0.586538 +vt 0.964286 0.625000 +vt 0.892857 0.019231 +vt 0.857143 0.365385 +vt 0.857143 0.019231 +vt 0.892857 0.365385 +vt 0.964286 0.019231 +vt 0.928571 0.365385 +vt 1.000000 0.019231 +vt 0.964286 0.365385 +vt 1.000000 0.586538 +vt 1.000000 0.625000 +vt 0.928571 1.000000 +vt 0.892857 0.980769 +vt 0.928571 0.980769 +vt 0.892857 0.423077 +vt 0.857143 0.375000 +vt 0.857143 0.980769 +vt 0.892857 0.634615 +vt 0.964286 0.980769 +vt 1.000000 0.634615 +vt 1.000000 0.980769 +vt 0.964286 0.634615 +vt 0.964286 0.423077 +vt 0.928571 0.576923 +vt 0.928571 0.423077 +vt 0.892857 0.576923 +vt 0.857143 0.423077 +vt 0.964286 0.375000 +vt 1.000000 0.576923 +vt 0.964286 0.576923 +vt 1.000000 0.413462 +vt 1.000000 0.375000 +vt 0.857143 0.586538 +vt 0.857143 0.625000 +vt 0.446429 0.192308 +vt 0.428571 0.153846 +vt 0.446429 0.153846 +vt 0.589286 0.153846 +vt 0.446429 0.192308 +vt 0.446429 0.153846 +vt 0.446429 0.201923 +vt 0.589286 0.192308 +vt 0.589286 0.201923 +vt 0.589286 0.192308 +vt 0.446429 0.201923 +vt 0.607143 0.192308 +vt 0.607143 0.153846 +vt 0.428571 0.153846 +vt 0.428571 0.192308 +vt 0.589286 0.153846 +vt 0.607143 0.192308 +vt 0.017857 0.163462 +vt 0.125000 0.221154 +vt 0.017857 0.221154 +vt 0.017857 0.163462 +vt 0.125000 0.221154 +vt 0.017857 0.221154 +vt 0.125000 0.163462 +vt 0.142857 0.221154 +vt -0.000000 0.163462 +vt 0.125000 0.153846 +vt 0.017857 0.230769 +vt 0.125000 0.163462 +vt 0.142857 0.221154 +vt -0.000000 0.163462 +vt 0.125000 0.153846 +vt 0.017857 0.230769 +vt 0.017857 0.163462 +vt 0.125000 0.221154 +vt 0.017857 0.221154 +vt 0.017857 0.163462 +vt 0.125000 0.221154 +vt 0.017857 0.221154 +vt 0.125000 0.163462 +vt 0.142857 0.221154 +vt -0.000000 0.163462 +vt 0.125000 0.153846 +vt 0.017857 0.230769 +vt 0.125000 0.163462 +vt 0.142857 0.221154 +vt -0.000000 0.163462 +vt 0.125000 0.153846 +vt 0.017857 0.230769 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.321429 -0.000000 +vt 0.321429 -0.000000 +vt 0.321429 -0.000000 +vt 0.535714 -0.000000 +vt 0.321429 -0.000000 +vt 0.714286 0.269231 +vt 0.714286 0.269231 +vt 0.035714 0.153846 +vt 0.000000 0.153846 +vt 0.035714 0.144231 +vt 0.000000 0.134615 +vt 0.017857 0.134615 +vt 0.000000 0.019231 +vt 0.000000 0.000000 +vt 0.250000 0.144231 +vt 0.285714 0.153846 +vt 0.250000 0.153846 +vt 0.035714 0.009615 +vt 0.035714 0.000000 +vt 0.267857 0.134615 +vt 0.285714 0.134615 +vt 0.285714 0.019231 +vt 0.250000 0.000000 +vt 0.857143 0.423077 +vt 0.142857 0.269231 +vt 0.392857 0.250000 +vt 0.142857 0.269231 +vt 0.142857 0.269231 +vt 0.142857 0.269231 +vt 1.000000 0.365385 +vt 0.892857 1.000000 +vt 0.857143 0.413462 +vt 0.857143 0.634615 +vt 0.857143 0.576923 +vt 0.964286 0.413462 +vt 1.000000 0.423077 +vt 0.964286 0.625000 +vt 1.000000 0.365385 +vt 0.892857 1.000000 +vt 0.857143 0.413462 +vt 0.857143 0.634615 +vt 0.857143 0.576923 +vt 0.964286 0.413462 +vt 1.000000 0.423077 +vt 0.428571 0.192308 +vt 0.589286 0.201923 +vt 0.607143 0.153846 +vt 0.142857 0.163462 +vt -0.000000 0.221154 +vt 0.017857 0.153846 +vt 0.125000 0.230769 +vt 0.142857 0.163462 +vt -0.000000 0.221154 +vt 0.017857 0.153846 +vt 0.125000 0.230769 +vt 0.142857 0.163462 +vt -0.000000 0.221154 +vt 0.017857 0.153846 +vt 0.125000 0.230769 +vt 0.142857 0.163462 +vt -0.000000 0.221154 +vt 0.017857 0.153846 +vt 0.125000 0.230769 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +s off +f 25/47/10 46/48/10 26/49/10 +f 27/50/11 38/51/11 28/52/11 +f 27/53/12 48/54/12 47/55/12 +f 31/56/12 44/57/12 32/58/12 +f 34/59/11 25/60/11 26/61/11 +f 29/62/10 42/63/10 41/64/10 +f 29/65/13 36/66/13 30/67/13 +f 31/68/13 40/69/13 39/70/13 +f 30/67/13 40/69/13 32/71/13 +f 26/49/10 42/63/10 30/72/10 +f 28/73/12 44/57/12 48/54/12 +f 28/52/11 34/59/11 26/61/11 +f 26/74/11 68/75/11 28/76/11 +f 50/77/11 52/78/11 49/79/11 +f 50/77/12 33/80/12 34/81/12 +f 51/82/14 34/83/14 38/84/14 +f 52/78/10 38/85/10 37/86/10 +f 32/87/13 65/88/13 30/89/13 +f 56/90/10 54/91/10 53/92/10 +f 45/93/13 55/94/13 46/95/13 +f 46/96/14 56/90/14 42/97/14 +f 42/98/11 53/92/11 41/99/11 +f 60/100/13 58/101/13 57/102/13 +f 35/103/12 58/101/12 36/104/12 +f 36/105/14 59/106/14 40/107/14 +f 40/108/10 60/100/10 39/109/10 +f 62/110/12 64/111/12 61/112/12 +f 61/113/14 57/114/14 53/115/14 +f 63/116/13 47/117/13 48/118/13 +f 64/111/14 48/119/14 44/120/14 +f 61/112/11 44/121/11 43/122/11 +f 69/123/14 78/124/14 70/125/14 +f 75/126/15 73/127/15 74/128/15 +f 72/129/13 75/126/13 70/125/13 +f 69/130/11 73/131/11 71/132/11 +f 71/132/12 76/133/12 72/129/12 +f 70/125/10 74/134/10 69/135/10 +f 80/136/10 81/137/10 79/138/10 +f 70/125/14 80/139/14 72/129/14 +f 72/129/14 79/140/14 71/141/14 +f 71/141/14 77/142/14 69/123/14 +f 81/143/14 83/144/14 82/145/14 +f 77/146/12 83/147/12 78/148/12 +f 78/149/11 84/150/11 80/151/11 +f 79/152/13 82/153/13 77/154/13 +f 88/155/14 85/156/14 86/157/14 +f 98/158/12 103/159/12 100/160/12 +f 87/161/10 89/162/10 85/163/10 +f 88/155/13 91/164/13 87/161/13 +f 86/165/12 92/166/12 88/155/12 +f 85/167/11 90/168/11 86/165/11 +f 100/160/16 107/169/16 99/170/16 +f 96/171/14 93/172/14 94/173/14 +f 106/174/10 89/175/10 91/164/10 +f 95/176/10 97/177/10 93/172/10 +f 96/178/13 99/179/13 95/180/13 +f 94/173/12 100/181/12 96/178/12 +f 93/172/11 98/158/11 94/173/11 +f 92/166/17 106/174/17 91/164/17 +f 104/182/12 101/183/12 102/184/12 +f 105/185/10 108/186/10 106/174/10 +f 90/187/12 102/184/12 92/166/12 +f 104/182/14 107/188/14 103/189/14 +f 108/190/18 90/191/18 89/192/18 +f 101/183/15 106/174/15 102/184/15 +f 97/177/19 101/183/19 98/158/19 +f 107/193/10 97/177/10 99/194/10 +f 112/195/14 109/196/14 110/197/14 +f 122/198/12 127/199/12 124/200/12 +f 111/201/10 113/202/10 109/203/10 +f 112/195/13 115/204/13 111/201/13 +f 110/205/12 116/206/12 112/195/12 +f 109/207/11 114/208/11 110/205/11 +f 124/200/16 131/209/16 123/210/16 +f 120/211/14 117/212/14 118/213/14 +f 130/214/10 113/215/10 115/204/10 +f 119/216/10 121/217/10 117/212/10 +f 120/218/13 123/219/13 119/220/13 +f 118/213/12 124/221/12 120/218/12 +f 117/212/11 122/198/11 118/213/11 +f 116/206/17 130/214/17 115/204/17 +f 128/222/12 125/223/12 126/224/12 +f 129/225/10 132/226/10 130/214/10 +f 114/227/12 126/224/12 116/206/12 +f 128/222/14 131/228/14 127/229/14 +f 132/230/18 114/227/18 113/231/18 +f 125/223/15 130/214/15 126/224/15 +f 121/217/19 125/223/19 122/198/19 +f 131/232/10 121/217/10 123/233/10 +f 144/234/13 147/235/13 142/236/13 +f 139/237/10 137/238/10 138/239/10 +f 135/240/15 140/241/15 136/242/15 +f 143/243/15 148/244/15 144/234/15 +f 136/245/13 139/237/13 134/246/13 +f 133/247/11 137/238/11 135/248/11 +f 141/249/11 145/250/11 143/243/11 +f 144/234/12 141/249/12 143/243/12 +f 150/251/13 151/252/13 149/253/13 +f 158/254/11 159/255/11 157/256/11 +f 152/257/12 153/258/12 151/252/12 +f 149/253/10 155/259/10 150/251/10 +f 150/251/14 156/260/14 152/257/14 +f 151/252/15 154/261/15 149/253/15 +f 160/262/10 161/263/10 159/255/10 +f 157/256/12 163/264/12 158/254/12 +f 158/254/14 164/265/14 160/262/14 +f 159/255/15 162/266/15 157/256/15 +f 166/267/12 167/268/12 165/269/12 +f 174/270/10 175/271/10 173/272/10 +f 168/273/11 169/274/11 167/268/11 +f 165/269/13 171/275/13 166/267/13 +f 166/267/14 172/276/14 168/273/14 +f 167/268/15 170/277/15 165/269/15 +f 176/278/13 177/279/13 175/271/13 +f 173/272/11 179/280/11 174/270/11 +f 174/270/14 180/281/14 176/278/14 +f 175/271/15 178/282/15 173/272/15 +f 187/283/12 184/284/12 183/285/12 +f 186/286/10 181/287/10 182/288/10 +f 188/289/14 182/288/14 184/290/14 +f 185/291/15 183/285/15 181/287/15 +f 195/292/12 192/293/12 191/294/12 +f 194/295/10 189/296/10 190/297/10 +f 196/298/14 190/297/14 192/299/14 +f 193/300/15 191/294/15 189/296/15 +f 203/301/12 200/302/12 199/303/12 +f 202/304/10 197/305/10 198/306/10 +f 204/307/14 198/306/14 200/308/14 +f 201/309/15 199/303/15 197/305/15 +f 211/310/12 208/311/12 207/312/12 +f 210/313/10 205/314/10 206/315/10 +f 212/316/14 206/315/14 208/317/14 +f 209/318/15 207/312/15 205/314/15 +f 219/319/12 216/320/12 215/321/12 +f 218/322/10 213/323/10 214/324/10 +f 220/325/14 214/324/14 216/326/14 +f 217/327/15 215/321/15 213/323/15 +f 227/328/12 224/329/12 223/330/12 +f 226/331/10 221/332/10 222/333/10 +f 228/334/14 222/333/14 224/335/14 +f 225/336/15 223/330/15 221/332/15 +f 235/337/12 232/338/12 231/339/12 +f 234/340/10 229/341/10 230/342/10 +f 236/343/14 230/342/14 232/344/14 +f 233/345/15 231/339/15 229/341/15 +f 243/346/12 240/347/12 239/348/12 +f 242/349/10 237/350/10 238/351/10 +f 244/352/14 238/351/14 240/353/14 +f 241/354/15 239/348/15 237/350/15 +f 25/47/10 45/355/10 46/48/10 +f 27/50/11 37/356/11 38/51/11 +f 27/53/12 28/73/12 48/54/12 +f 31/56/12 43/357/12 44/57/12 +f 34/59/11 33/358/11 25/60/11 +f 29/62/10 30/72/10 42/63/10 +f 29/65/13 35/359/13 36/66/13 +f 31/68/13 32/71/13 40/69/13 +f 30/67/13 36/66/13 40/69/13 +f 26/49/10 46/48/10 42/63/10 +f 28/73/12 32/58/12 44/57/12 +f 28/52/11 38/51/11 34/59/11 +f 26/74/11 66/360/11 68/75/11 +f 50/77/11 51/82/11 52/78/11 +f 50/77/12 49/79/12 33/80/12 +f 51/82/14 50/77/14 34/83/14 +f 52/78/10 51/82/10 38/85/10 +f 32/87/13 67/361/13 65/88/13 +f 56/90/10 55/94/10 54/91/10 +f 45/93/13 54/91/13 55/94/13 +f 46/96/14 55/94/14 56/90/14 +f 42/98/11 56/90/11 53/92/11 +f 60/100/13 59/106/13 58/101/13 +f 35/103/12 57/102/12 58/101/12 +f 36/105/14 58/101/14 59/106/14 +f 40/108/10 59/106/10 60/100/10 +f 62/110/12 63/116/12 64/111/12 +f 37/362/14 27/363/14 52/364/14 +f 27/363/14 47/365/14 62/366/14 +f 27/363/14 62/366/14 52/364/14 +f 61/113/14 43/367/14 31/368/14 +f 52/364/14 62/366/14 49/369/14 +f 62/366/14 61/113/14 49/369/14 +f 25/370/14 33/371/14 49/369/14 +f 61/113/14 31/368/14 60/372/14 +f 31/368/14 39/373/14 60/372/14 +f 25/370/14 49/369/14 54/374/14 +f 49/369/14 61/113/14 54/374/14 +f 54/374/14 45/375/14 25/370/14 +f 29/65/14 41/376/14 53/115/14 +f 35/377/14 29/65/14 57/114/14 +f 29/65/14 53/115/14 57/114/14 +f 53/115/14 54/374/14 61/113/14 +f 61/113/14 60/372/14 57/114/14 +f 63/116/13 62/110/13 47/117/13 +f 64/111/14 63/116/14 48/119/14 +f 61/112/11 64/111/11 44/121/11 +f 69/123/14 77/142/14 78/124/14 +f 75/126/15 76/133/15 73/127/15 +f 72/129/13 76/133/13 75/126/13 +f 69/130/11 74/378/11 73/131/11 +f 71/132/12 73/131/12 76/133/12 +f 70/125/10 75/126/10 74/134/10 +f 80/136/10 84/379/10 81/137/10 +f 70/125/14 78/124/14 80/139/14 +f 72/129/14 80/139/14 79/140/14 +f 71/141/14 79/140/14 77/142/14 +f 81/143/14 84/380/14 83/144/14 +f 77/146/12 82/381/12 83/147/12 +f 78/149/11 83/382/11 84/150/11 +f 79/152/13 81/383/13 82/153/13 +f 88/155/14 87/161/14 85/156/14 +f 98/158/12 101/183/12 103/159/12 +f 87/161/10 91/164/10 89/162/10 +f 88/155/13 92/166/13 91/164/13 +f 86/165/12 90/168/12 92/166/12 +f 85/167/11 89/384/11 90/168/11 +f 100/160/16 103/159/16 107/169/16 +f 96/171/14 95/385/14 93/172/14 +f 106/174/10 108/386/10 89/175/10 +f 95/176/10 99/387/10 97/177/10 +f 96/178/13 100/181/13 99/179/13 +f 94/173/12 98/158/12 100/181/12 +f 93/172/11 97/177/11 98/158/11 +f 92/166/17 102/184/17 106/174/17 +f 104/182/12 103/189/12 101/183/12 +f 105/185/10 107/388/10 108/186/10 +f 90/187/12 104/389/12 102/184/12 +f 104/182/14 108/390/14 107/188/14 +f 108/190/18 104/391/18 90/191/18 +f 101/183/15 105/185/15 106/174/15 +f 97/177/19 105/185/19 101/183/19 +f 107/193/10 105/185/10 97/177/10 +f 112/195/14 111/201/14 109/196/14 +f 122/198/12 125/223/12 127/199/12 +f 111/201/10 115/204/10 113/202/10 +f 112/195/13 116/206/13 115/204/13 +f 110/205/12 114/208/12 116/206/12 +f 109/207/11 113/392/11 114/208/11 +f 124/200/16 127/199/16 131/209/16 +f 120/211/14 119/393/14 117/212/14 +f 130/214/10 132/394/10 113/215/10 +f 119/216/10 123/395/10 121/217/10 +f 120/218/13 124/221/13 123/219/13 +f 118/213/12 122/198/12 124/221/12 +f 117/212/11 121/217/11 122/198/11 +f 116/206/17 126/224/17 130/214/17 +f 128/222/12 127/229/12 125/223/12 +f 129/225/10 131/396/10 132/226/10 +f 114/227/12 128/397/12 126/224/12 +f 128/222/14 132/398/14 131/228/14 +f 132/230/18 128/397/18 114/227/18 +f 125/223/15 129/225/15 130/214/15 +f 121/217/19 129/225/19 125/223/19 +f 131/232/10 129/225/10 121/217/10 +f 144/234/13 148/399/13 147/235/13 +f 139/237/10 140/241/10 137/238/10 +f 135/240/15 137/238/15 140/241/15 +f 143/243/15 145/400/15 148/244/15 +f 136/245/13 140/241/13 139/237/13 +f 133/247/11 138/239/11 137/238/11 +f 141/249/11 146/401/11 145/250/11 +f 144/234/12 142/236/12 141/249/12 +f 150/251/13 152/257/13 151/252/13 +f 158/254/11 160/262/11 159/255/11 +f 152/257/12 156/402/12 153/258/12 +f 149/253/10 154/403/10 155/259/10 +f 150/251/14 155/404/14 156/260/14 +f 151/252/15 153/405/15 154/261/15 +f 160/262/10 164/406/10 161/263/10 +f 157/256/12 162/407/12 163/264/12 +f 158/254/14 163/408/14 164/265/14 +f 159/255/15 161/409/15 162/266/15 +f 166/267/12 168/273/12 167/268/12 +f 174/270/10 176/278/10 175/271/10 +f 168/273/11 172/410/11 169/274/11 +f 165/269/13 170/411/13 171/275/13 +f 166/267/14 171/412/14 172/276/14 +f 167/268/15 169/413/15 170/277/15 +f 176/278/13 180/414/13 177/279/13 +f 173/272/11 178/415/11 179/280/11 +f 174/270/14 179/416/14 180/281/14 +f 175/271/15 177/417/15 178/282/15 +f 187/283/12 188/418/12 184/284/12 +f 186/286/10 185/291/10 181/287/10 +f 188/289/14 186/286/14 182/288/14 +f 185/291/15 187/283/15 183/285/15 +f 195/292/12 196/419/12 192/293/12 +f 194/295/10 193/300/10 189/296/10 +f 196/298/14 194/295/14 190/297/14 +f 193/300/15 195/292/15 191/294/15 +f 203/301/12 204/420/12 200/302/12 +f 202/304/10 201/309/10 197/305/10 +f 204/307/14 202/304/14 198/306/14 +f 201/309/15 203/301/15 199/303/15 +f 211/310/12 212/421/12 208/311/12 +f 210/313/10 209/318/10 205/314/10 +f 212/316/14 210/313/14 206/315/14 +f 209/318/15 211/310/15 207/312/15 +f 219/319/12 220/422/12 216/320/12 +f 218/322/10 217/327/10 213/323/10 +f 220/325/14 218/322/14 214/324/14 +f 217/327/15 219/319/15 215/321/15 +f 227/328/12 228/423/12 224/329/12 +f 226/331/10 225/336/10 221/332/10 +f 228/334/14 226/331/14 222/333/14 +f 225/336/15 227/328/15 223/330/15 +f 235/337/12 236/424/12 232/338/12 +f 234/340/10 233/345/10 229/341/10 +f 236/343/14 234/340/14 230/342/14 +f 233/345/15 235/337/15 231/339/15 +f 243/346/12 244/425/12 240/347/12 +f 242/349/10 241/354/10 237/350/10 +f 244/352/14 242/349/14 238/351/14 +f 241/354/15 243/346/15 239/348/15 diff --git a/src/main/resources/assets/hbm/models/machines/drone.obj b/src/main/resources/assets/hbm/models/machines/drone.obj new file mode 100644 index 000000000..93a950fbf --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/drone.obj @@ -0,0 +1,1707 @@ +# Blender v2.79 (sub 0) OBJ File: 'drone.blend' +# www.blender.org +o Crate +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.500000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +vt 0.242424 0.210526 +vt 0.000000 0.421053 +vt 0.000000 0.210526 +vt -0.000000 0.210526 +vt 0.242424 0.421053 +vt -0.000000 0.421053 +vt 0.242424 0.000000 +vt -0.000000 0.000000 +vt 0.242424 0.000000 +vt 0.000000 0.210526 +vt 0.000000 0.000000 +vt 0.242424 0.000000 +vt -0.000000 0.210526 +vt -0.000000 0.000000 +vt 0.242424 0.000000 +vt 0.000000 0.210526 +vt 0.000000 0.000000 +vt 0.242424 0.421053 +vt 0.242424 0.210526 +vt 0.242424 0.210526 +vt 0.242424 0.210526 +vt 0.242424 0.210526 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 6/4/2 7/5/2 5/6/2 +f 4/7/3 6/4/3 2/8/3 +f 1/9/4 7/10/4 3/11/4 +f 3/12/5 8/13/5 4/14/5 +f 2/15/6 5/16/6 1/17/6 +f 3/1/1 4/18/1 2/2/1 +f 6/4/2 8/19/2 7/5/2 +f 4/7/3 8/19/3 6/4/3 +f 1/9/4 5/20/4 7/10/4 +f 3/12/5 7/21/5 8/13/5 +f 2/15/6 6/22/6 5/16/6 +o Barrel +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.500000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +vt 0.484848 0.210526 +vt 0.242424 0.421053 +vt 0.242424 0.210526 +vt 0.242424 0.210526 +vt 0.484848 0.421053 +vt 0.242424 0.421053 +vt 0.484848 -0.000000 +vt 0.242424 -0.000000 +vt 0.484848 -0.000000 +vt 0.242424 0.210526 +vt 0.242424 -0.000000 +vt 0.484848 -0.000000 +vt 0.242424 0.210526 +vt 0.242424 -0.000000 +vt 0.484848 -0.000000 +vt 0.242424 0.210526 +vt 0.242424 -0.000000 +vt 0.484848 0.421053 +vt 0.484848 0.210526 +vt 0.484848 0.210526 +vt 0.484848 0.210526 +vt 0.484848 0.210526 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 11/23/7 10/24/7 9/25/7 +f 14/26/8 15/27/8 13/28/8 +f 12/29/9 14/26/9 10/30/9 +f 9/31/10 15/32/10 11/33/10 +f 11/34/11 16/35/11 12/36/11 +f 10/37/12 13/38/12 9/39/12 +f 11/23/7 12/40/7 10/24/7 +f 14/26/8 16/41/8 15/27/8 +f 12/29/9 16/41/9 14/26/9 +f 9/31/10 13/42/10 15/32/10 +f 11/34/11 15/43/11 16/35/11 +f 10/37/12 14/44/12 13/38/12 +o Drone +v -0.088388 0.875000 1.036612 +v 0.000000 0.875000 1.000000 +v 0.088388 0.875000 1.036612 +v 0.125000 0.875000 1.125000 +v 0.088388 0.875000 1.213388 +v 0.000000 0.875000 1.250000 +v -0.125000 0.875000 1.125000 +v -0.088388 0.875000 1.213388 +v -0.031250 2.375000 0.031250 +v 0.031250 2.375000 0.031250 +v -0.031250 2.375000 -0.031250 +v 0.031250 2.375000 -0.031250 +v 0.031250 1.875000 -0.031250 +v -0.031250 1.875000 -0.031250 +v 0.031250 1.875000 0.031250 +v -0.031250 1.875000 0.031250 +v 0.375000 1.875000 -0.375000 +v 0.375000 1.875000 0.375000 +v -0.375000 1.875000 0.375000 +v -0.375000 1.875000 -0.375000 +v -0.500000 1.750000 0.500000 +v 0.500000 1.750000 0.500000 +v -0.500000 1.750000 -0.500000 +v 0.500000 1.750000 -0.500000 +v 0.500000 1.625000 -0.500000 +v -0.500000 1.625000 -0.500000 +v 0.500000 1.625000 0.500000 +v -0.500000 1.625000 0.500000 +v -0.500000 0.625000 0.500000 +v -0.500000 0.375000 0.500000 +v -0.250000 0.625000 0.500000 +v -0.250000 0.375000 0.500000 +v -0.500000 0.625000 0.250000 +v -0.500000 0.375000 0.250000 +v -0.250000 0.625000 0.625000 +v -0.250000 0.375000 0.625000 +v -0.625000 0.625000 0.250000 +v -0.625000 0.375000 0.250000 +v -0.625000 0.625000 0.625000 +v -0.625000 0.375000 0.625000 +v -0.625000 0.625000 0.500000 +v -0.625000 0.625000 0.625000 +v -0.500000 0.625000 0.500000 +v -0.500000 0.625000 0.625000 +v -0.625000 1.375000 0.500000 +v -0.625000 1.375000 0.625000 +v -0.500000 1.375000 0.500000 +v -0.500000 1.375000 0.625000 +v -0.625000 1.375000 0.625000 +v 0.625000 1.375000 0.625000 +v -0.625000 1.375000 -0.625000 +v 0.625000 1.375000 -0.625000 +v -0.625000 1.625000 -0.625000 +v -0.625000 1.625000 0.625000 +v 0.625000 1.625000 0.625000 +v 0.625000 1.625000 -0.625000 +v 0.500000 1.125000 -1.125000 +v -0.500000 1.125000 -1.125000 +v -0.500000 1.375000 -1.125000 +v 0.500000 1.375000 -1.125000 +v -0.500000 1.125000 1.125000 +v 0.500000 1.125000 1.125000 +v 0.500000 1.375000 1.125000 +v -0.500000 1.375000 1.125000 +v 1.125000 1.125000 0.500000 +v 1.125000 1.125000 -0.500000 +v 1.125000 1.375000 -0.500000 +v 1.125000 1.375000 0.500000 +v -1.125000 1.125000 -0.500000 +v -1.125000 1.125000 0.500000 +v -1.125000 1.375000 0.500000 +v -1.125000 1.375000 -0.500000 +v -0.088388 0.750000 1.036612 +v -0.125000 0.750000 1.125000 +v -0.250000 1.250000 1.125000 +v -0.250000 1.625000 1.125000 +v -0.176777 1.250000 0.948223 +v -0.176777 1.625000 0.948223 +v 0.000000 1.250000 0.875000 +v 0.000000 1.625000 0.875000 +v 0.176777 1.250000 0.948223 +v 0.176777 1.625000 0.948223 +v 0.250000 1.250000 1.125000 +v 0.250000 1.625000 1.125000 +v 0.176777 1.250000 1.301776 +v 0.176777 1.625000 1.301776 +v 0.000000 1.250000 1.375000 +v 0.000000 1.625000 1.375000 +v -0.176777 1.250000 1.301776 +v -0.176777 1.625000 1.301776 +v 0.000000 0.750000 1.000000 +v 0.088388 0.750000 1.036612 +v 0.125000 0.750000 1.125000 +v 0.088388 0.750000 1.213388 +v 0.000000 0.750000 1.250000 +v -0.088388 0.750000 1.213388 +v -0.132583 1.750000 0.992417 +v -0.187500 1.750000 1.125000 +v 0.000000 1.750000 0.937500 +v 0.132582 1.750000 0.992418 +v 0.187500 1.750000 1.125000 +v 0.132583 1.750000 1.257582 +v 0.000000 1.750000 1.312500 +v -0.132583 1.750000 1.257582 +v -0.132583 1.625000 0.992417 +v -0.187500 1.625000 1.125000 +v 0.000000 1.625000 0.937500 +v 0.132582 1.625000 0.992418 +v 0.187500 1.625000 1.125000 +v 0.132583 1.625000 1.257582 +v 0.000000 1.625000 1.312500 +v -0.132583 1.625000 1.257582 +v -0.250000 1.125000 1.375000 +v 0.250000 1.125000 1.375000 +v 0.250000 1.375000 1.375000 +v -0.250000 1.375000 1.375000 +v -0.500000 1.125000 1.125000 +v 0.500000 1.125000 1.125000 +v 0.500000 1.375000 1.125000 +v -0.500000 1.375000 1.125000 +v 0.088388 0.875000 -1.036612 +v -0.000000 0.875000 -1.000000 +v -0.088388 0.875000 -1.036612 +v -0.125000 0.875000 -1.125000 +v -0.088388 0.875000 -1.213388 +v -0.000000 0.875000 -1.250000 +v 0.125000 0.875000 -1.125000 +v 0.088388 0.875000 -1.213388 +v 0.088388 0.750000 -1.036612 +v 0.125000 0.750000 -1.125000 +v 0.250000 1.250000 -1.125000 +v 0.250000 1.625000 -1.125000 +v 0.176777 1.250000 -0.948223 +v 0.176777 1.625000 -0.948223 +v -0.000000 1.250000 -0.875000 +v -0.000000 1.625000 -0.875000 +v -0.176777 1.250000 -0.948223 +v -0.176777 1.625000 -0.948223 +v -0.250000 1.250000 -1.125000 +v -0.250000 1.625000 -1.125000 +v -0.176777 1.250000 -1.301776 +v -0.176777 1.625000 -1.301776 +v -0.000000 1.250000 -1.375000 +v -0.000000 1.625000 -1.375000 +v 0.176777 1.250000 -1.301776 +v 0.176777 1.625000 -1.301776 +v -0.000000 0.750000 -1.000000 +v -0.088388 0.750000 -1.036612 +v -0.125000 0.750000 -1.125000 +v -0.088388 0.750000 -1.213388 +v -0.000000 0.750000 -1.250000 +v 0.088388 0.750000 -1.213388 +v 0.132583 1.750000 -0.992417 +v 0.187500 1.750000 -1.125000 +v -0.000000 1.750000 -0.937500 +v -0.132583 1.750000 -0.992418 +v -0.187500 1.750000 -1.125000 +v -0.132583 1.750000 -1.257582 +v -0.000000 1.750000 -1.312500 +v 0.132583 1.750000 -1.257582 +v 0.132583 1.625000 -0.992417 +v 0.187500 1.625000 -1.125000 +v -0.000000 1.625000 -0.937500 +v -0.132583 1.625000 -0.992418 +v -0.187500 1.625000 -1.125000 +v -0.132583 1.625000 -1.257582 +v -0.000000 1.625000 -1.312500 +v 0.132583 1.625000 -1.257582 +v 0.250000 1.125000 -1.375000 +v -0.250000 1.125000 -1.375000 +v -0.250000 1.375000 -1.375000 +v 0.250000 1.375000 -1.375000 +v 0.500000 1.125000 -1.125000 +v -0.500000 1.125000 -1.125000 +v -0.500000 1.375000 -1.125000 +v 0.500000 1.375000 -1.125000 +v 1.036612 0.875000 0.088388 +v 1.000000 0.875000 0.000000 +v 1.036612 0.875000 -0.088388 +v 1.125000 0.875000 -0.125000 +v 1.213388 0.875000 -0.088388 +v 1.250000 0.875000 0.000000 +v 1.125000 0.875000 0.125000 +v 1.213388 0.875000 0.088388 +v 1.036612 0.750000 0.088388 +v 1.125000 0.750000 0.125000 +v 1.125000 1.250000 0.250000 +v 1.125000 1.625000 0.250000 +v 0.948223 1.250000 0.176777 +v 0.948223 1.625000 0.176777 +v 0.875000 1.250000 -0.000000 +v 0.875000 1.625000 -0.000000 +v 0.948223 1.250000 -0.176777 +v 0.948223 1.625000 -0.176777 +v 1.125000 1.250000 -0.250000 +v 1.125000 1.625000 -0.250000 +v 1.301776 1.250000 -0.176777 +v 1.301776 1.625000 -0.176777 +v 1.375000 1.250000 -0.000000 +v 1.375000 1.625000 -0.000000 +v 1.301776 1.250000 0.176777 +v 1.301776 1.625000 0.176777 +v 1.000000 0.750000 0.000000 +v 1.036612 0.750000 -0.088388 +v 1.125000 0.750000 -0.125000 +v 1.213388 0.750000 -0.088388 +v 1.250000 0.750000 0.000000 +v 1.213388 0.750000 0.088388 +v 0.992417 1.750000 0.132583 +v 1.125000 1.750000 0.187500 +v 0.937500 1.750000 -0.000000 +v 0.992418 1.750000 -0.132582 +v 1.125000 1.750000 -0.187500 +v 1.257582 1.750000 -0.132583 +v 1.312500 1.750000 0.000000 +v 1.257582 1.750000 0.132583 +v 0.992417 1.625000 0.132583 +v 1.125000 1.625000 0.187500 +v 0.937500 1.625000 -0.000000 +v 0.992418 1.625000 -0.132582 +v 1.125000 1.625000 -0.187500 +v 1.257582 1.625000 -0.132583 +v 1.312500 1.625000 0.000000 +v 1.257582 1.625000 0.132583 +v 1.375000 1.125000 0.250000 +v 1.375000 1.125000 -0.250000 +v 1.375000 1.375000 -0.250000 +v 1.375000 1.375000 0.250000 +v 1.125000 1.125000 0.500000 +v 1.125000 1.125000 -0.500000 +v 1.125000 1.375000 -0.500000 +v 1.125000 1.375000 0.500000 +v -1.036612 0.875000 -0.088388 +v -1.000000 0.875000 0.000000 +v -1.036612 0.875000 0.088388 +v -1.125000 0.875000 0.125000 +v -1.213388 0.875000 0.088388 +v -1.250000 0.875000 0.000000 +v -1.125000 0.875000 -0.125000 +v -1.213388 0.875000 -0.088388 +v -1.036612 0.750000 -0.088388 +v -1.125000 0.750000 -0.125000 +v -1.125000 1.250000 -0.250000 +v -1.125000 1.625000 -0.250000 +v -0.948223 1.250000 -0.176777 +v -0.948223 1.625000 -0.176777 +v -0.875000 1.250000 0.000000 +v -0.875000 1.625000 0.000000 +v -0.948223 1.250000 0.176777 +v -0.948223 1.625000 0.176777 +v -1.125000 1.250000 0.250000 +v -1.125000 1.625000 0.250000 +v -1.301776 1.250000 0.176777 +v -1.301776 1.625000 0.176777 +v -1.375000 1.250000 0.000000 +v -1.375000 1.625000 0.000000 +v -1.301776 1.250000 -0.176776 +v -1.301776 1.625000 -0.176776 +v -1.000000 0.750000 0.000000 +v -1.036612 0.750000 0.088388 +v -1.125000 0.750000 0.125000 +v -1.213388 0.750000 0.088388 +v -1.250000 0.750000 0.000000 +v -1.213388 0.750000 -0.088388 +v -0.992417 1.750000 -0.132583 +v -1.125000 1.750000 -0.187500 +v -0.937500 1.750000 0.000000 +v -0.992418 1.750000 0.132583 +v -1.125000 1.750000 0.187500 +v -1.257582 1.750000 0.132583 +v -1.312500 1.750000 0.000000 +v -1.257582 1.750000 -0.132582 +v -0.992417 1.625000 -0.132583 +v -1.125000 1.625000 -0.187500 +v -0.937500 1.625000 0.000000 +v -0.992418 1.625000 0.132583 +v -1.125000 1.625000 0.187500 +v -1.257582 1.625000 0.132583 +v -1.312500 1.625000 0.000000 +v -1.257582 1.625000 -0.132582 +v -1.375000 1.125000 -0.250000 +v -1.375000 1.125000 0.250000 +v -1.375000 1.375000 0.250000 +v -1.375000 1.375000 -0.250000 +v -1.125000 1.125000 -0.500000 +v -1.125000 1.125000 0.500000 +v -1.125000 1.375000 0.500000 +v -1.125000 1.375000 -0.500000 +v 0.500000 0.625000 -0.500000 +v 0.500000 0.375000 -0.500000 +v 0.250000 0.625000 -0.500000 +v 0.250000 0.375000 -0.500000 +v 0.500000 0.625000 -0.250000 +v 0.500000 0.375000 -0.250000 +v 0.250000 0.625000 -0.625000 +v 0.250000 0.375000 -0.625000 +v 0.625000 0.625000 -0.250000 +v 0.625000 0.375000 -0.250000 +v 0.625000 0.625000 -0.625000 +v 0.625000 0.375000 -0.625000 +v 0.625000 0.625000 -0.500000 +v 0.625000 0.625000 -0.625000 +v 0.500000 0.625000 -0.500000 +v 0.500000 0.625000 -0.625000 +v 0.625000 1.375000 -0.500000 +v 0.625000 1.375000 -0.625000 +v 0.500000 1.375000 -0.500000 +v 0.500000 1.375000 -0.625000 +v 0.500000 0.625000 0.500000 +v 0.500000 0.375000 0.500000 +v 0.500000 0.625000 0.250000 +v 0.500000 0.375000 0.250000 +v 0.250000 0.625000 0.500000 +v 0.250000 0.375000 0.500000 +v 0.625000 0.625000 0.250000 +v 0.625000 0.375000 0.250000 +v 0.250000 0.625000 0.625000 +v 0.250000 0.375000 0.625000 +v 0.625000 0.625000 0.625000 +v 0.625000 0.375000 0.625000 +v 0.500000 0.625000 0.625000 +v 0.625000 0.625000 0.625000 +v 0.500000 0.625000 0.500000 +v 0.625000 0.625000 0.500000 +v 0.500000 1.375000 0.625000 +v 0.625000 1.375000 0.625000 +v 0.500000 1.375000 0.500000 +v 0.625000 1.375000 0.500000 +v -0.500000 0.625000 -0.500000 +v -0.500000 0.375000 -0.500000 +v -0.500000 0.625000 -0.250000 +v -0.500000 0.375000 -0.250000 +v -0.250000 0.625000 -0.500000 +v -0.250000 0.375000 -0.500000 +v -0.625000 0.625000 -0.250000 +v -0.625000 0.375000 -0.250000 +v -0.250000 0.625000 -0.625000 +v -0.250000 0.375000 -0.625000 +v -0.625000 0.625000 -0.625000 +v -0.625000 0.375000 -0.625000 +v -0.500000 0.625000 -0.625000 +v -0.625000 0.625000 -0.625000 +v -0.500000 0.625000 -0.500000 +v -0.625000 0.625000 -0.500000 +v -0.500000 1.375000 -0.625000 +v -0.625000 1.375000 -0.625000 +v -0.500000 1.375000 -0.500000 +v -0.625000 1.375000 -0.500000 +vt 0.787879 0.184205 +vt 0.766456 0.176499 +vt 0.809302 0.139291 +vt 0.727273 0.934211 +vt 0.742424 0.921053 +vt 0.742424 0.934211 +vt 0.757576 0.921053 +vt 0.742424 0.815789 +vt 0.757576 0.815789 +vt 0.727273 0.921053 +vt 0.712121 0.815789 +vt 0.727273 0.815789 +vt 0.772727 0.921053 +vt 0.772727 0.815789 +vt 0.954545 0.552632 +vt 0.742424 0.592105 +vt 0.712121 0.552632 +vt 0.696970 0.565789 +vt 0.742424 0.750000 +vt 0.696970 0.776316 +vt 0.969697 0.776316 +vt 0.924242 0.592105 +vt 0.969697 0.565789 +vt 0.924242 0.750000 +vt 1.000000 0.776316 +vt 1.000000 0.565789 +vt 0.666667 0.565789 +vt 0.666667 0.776316 +vt 0.954545 0.526316 +vt 0.712121 0.526316 +vt 0.712121 0.815789 +vt 0.954545 0.789474 +vt 0.954545 0.815789 +vt 0.712121 0.789474 +vt 0.787879 0.131579 +vt 0.848485 0.078947 +vt 0.848485 0.131579 +vt 0.545455 0.078947 +vt 0.484848 0.131579 +vt 0.484848 0.078947 +vt 0.757576 0.131579 +vt 0.787879 0.078947 +vt 0.575758 0.078947 +vt 0.545455 0.131579 +vt 0.666667 0.078947 +vt 0.575758 0.131579 +vt 0.757576 0.078947 +vt 0.636364 0.157895 +vt 0.666667 0.131579 +vt 0.666667 0.210526 +vt 0.636364 0.210526 +vt 0.636364 0.052632 +vt 0.575758 0.052632 +vt 0.666667 -0.000000 +vt 0.606061 0.315789 +vt 0.575758 0.157895 +vt 0.606061 0.157895 +vt 0.545455 0.315789 +vt 0.515152 0.157895 +vt 0.545455 0.157895 +vt 0.575758 0.315789 +vt 0.515152 0.315789 +vt 0.484848 0.157895 +vt 0.484848 0.578947 +vt 0.181818 0.842105 +vt 0.181818 0.578947 +vt 0.181818 0.578947 +vt 0.484848 0.842105 +vt 0.181818 0.842105 +vt 0.666667 0.815789 +vt 0.606061 0.605263 +vt 0.666667 0.605263 +vt 0.606061 0.815789 +vt 0.484848 0.842105 +vt 0.606061 0.815789 +vt 0.666667 0.921053 +vt 0.606061 0.921053 +vt 0.484848 0.578947 +vt 0.666667 0.500000 +vt 0.606061 0.500000 +vt 0.000000 0.605263 +vt 0.060606 0.815789 +vt 0.000000 0.815789 +vt 0.060606 0.605263 +vt 0.060606 0.605263 +vt 0.000000 0.500000 +vt 0.060606 0.500000 +vt 0.000000 0.921053 +vt 0.060606 0.921053 +vt 0.454545 0.421053 +vt 0.212121 0.473684 +vt 0.212121 0.421053 +vt 0.212121 0.947368 +vt 0.454545 0.473684 +vt 0.575758 0.421053 +vt 0.575758 0.473684 +vt 0.090909 0.421053 +vt 0.090909 0.473684 +vt 0.212121 1.000000 +vt 0.454545 0.947368 +vt 0.454545 1.000000 +vt 0.454545 0.473684 +vt 0.212121 0.947368 +vt 0.090909 1.000000 +vt 0.090909 0.947368 +vt 0.575758 1.000000 +vt 0.575758 0.947368 +vt 0.712121 0.210395 +vt 0.666817 0.171053 +vt 0.712121 0.131710 +vt 0.909091 0.473684 +vt 0.787879 0.526316 +vt 0.787879 0.473684 +vt 0.727273 0.473684 +vt 0.969697 0.526316 +vt 0.909091 0.526316 +vt 0.787879 0.184205 +vt 0.766456 0.176499 +vt 0.809302 0.139291 +vt 0.712121 0.210395 +vt 0.666817 0.171053 +vt 0.712121 0.131710 +vt 0.909091 0.473684 +vt 0.787879 0.526316 +vt 0.787879 0.473684 +vt 0.727273 0.473684 +vt 0.969697 0.526316 +vt 0.909091 0.526316 +vt 0.787879 0.184205 +vt 0.766456 0.176499 +vt 0.809302 0.139291 +vt 0.712121 0.210395 +vt 0.666817 0.171053 +vt 0.712121 0.131710 +vt 0.909091 0.473684 +vt 0.787879 0.526316 +vt 0.787879 0.473684 +vt 0.727273 0.473684 +vt 0.969697 0.526316 +vt 0.909091 0.526316 +vt 0.787879 0.184205 +vt 0.766456 0.176499 +vt 0.809302 0.139291 +vt 0.712121 0.210395 +vt 0.666817 0.171053 +vt 0.712121 0.131710 +vt 0.909091 0.473684 +vt 0.787879 0.526316 +vt 0.787879 0.473684 +vt 0.727273 0.473684 +vt 0.969697 0.526316 +vt 0.909091 0.526316 +vt 0.787879 0.131579 +vt 0.848485 0.078947 +vt 0.848485 0.131579 +vt 0.545455 0.078947 +vt 0.484848 0.131579 +vt 0.484848 0.078947 +vt 0.757576 0.131579 +vt 0.787879 0.078947 +vt 0.575758 0.078947 +vt 0.545455 0.131579 +vt 0.666667 0.078947 +vt 0.575758 0.131579 +vt 0.757576 0.078947 +vt 0.636364 0.157895 +vt 0.666667 0.131579 +vt 0.666667 0.210526 +vt 0.636364 0.210526 +vt 0.636364 0.052632 +vt 0.575758 0.052632 +vt 0.666667 -0.000000 +vt 0.606061 0.315789 +vt 0.575758 0.157895 +vt 0.606061 0.157895 +vt 0.545455 0.315789 +vt 0.515152 0.157895 +vt 0.545455 0.157895 +vt 0.575758 0.315789 +vt 0.515152 0.315789 +vt 0.484848 0.157895 +vt 0.787879 0.131579 +vt 0.848485 0.078947 +vt 0.848485 0.131579 +vt 0.545455 0.078947 +vt 0.484848 0.131579 +vt 0.484848 0.078947 +vt 0.757576 0.131579 +vt 0.787879 0.078947 +vt 0.575758 0.078947 +vt 0.545455 0.131579 +vt 0.666667 0.078947 +vt 0.575758 0.131579 +vt 0.757576 0.078947 +vt 0.636364 0.157895 +vt 0.666667 0.131579 +vt 0.666667 0.210526 +vt 0.636364 0.210526 +vt 0.636364 0.052632 +vt 0.575758 0.052632 +vt 0.666667 -0.000000 +vt 0.606061 0.315789 +vt 0.575758 0.157895 +vt 0.606061 0.157895 +vt 0.545455 0.315789 +vt 0.515152 0.157895 +vt 0.545455 0.157895 +vt 0.575758 0.315789 +vt 0.515152 0.315789 +vt 0.484848 0.157895 +vt 0.787879 0.131579 +vt 0.848485 0.078947 +vt 0.848485 0.131579 +vt 0.545455 0.078947 +vt 0.484848 0.131579 +vt 0.484848 0.078947 +vt 0.757576 0.131579 +vt 0.787879 0.078947 +vt 0.575758 0.078947 +vt 0.545455 0.131579 +vt 0.666667 0.078947 +vt 0.575758 0.131579 +vt 0.757576 0.078947 +vt 0.636364 0.157895 +vt 0.666667 0.131579 +vt 0.666667 0.210526 +vt 0.636364 0.210526 +vt 0.636364 0.052632 +vt 0.575758 0.052632 +vt 0.666667 -0.000000 +vt 0.606061 0.315789 +vt 0.575758 0.157895 +vt 0.606061 0.157895 +vt 0.545455 0.315789 +vt 0.515152 0.157895 +vt 0.545455 0.157895 +vt 0.575758 0.315789 +vt 0.515152 0.315789 +vt 0.484848 0.157895 +vt 0.757582 0.157895 +vt 0.766456 0.139291 +vt 0.787879 0.131585 +vt 0.818175 0.157895 +vt 0.809302 0.176499 +vt 0.712121 0.921053 +vt 0.575758 0.157895 +vt 0.636364 -0.000000 +vt 0.484848 0.315789 +vt 0.606061 0.605263 +vt 0.060606 0.815789 +vt 0.454545 0.947368 +vt 0.212121 0.473684 +vt 0.680087 0.198872 +vt 0.680087 0.143233 +vt 0.744156 0.143233 +vt 0.757425 0.171053 +vt 0.744156 0.198872 +vt 0.727273 0.526316 +vt 0.969697 0.473684 +vt 0.757582 0.157895 +vt 0.766456 0.139291 +vt 0.787879 0.131585 +vt 0.818175 0.157895 +vt 0.809302 0.176499 +vt 0.680087 0.198872 +vt 0.680087 0.143233 +vt 0.744156 0.143233 +vt 0.757425 0.171053 +vt 0.744156 0.198872 +vt 0.727273 0.526316 +vt 0.969697 0.473684 +vt 0.757582 0.157895 +vt 0.766456 0.139291 +vt 0.787879 0.131585 +vt 0.818175 0.157895 +vt 0.809302 0.176499 +vt 0.680087 0.198872 +vt 0.680087 0.143233 +vt 0.744156 0.143233 +vt 0.757425 0.171053 +vt 0.744156 0.198872 +vt 0.727273 0.526316 +vt 0.969697 0.473684 +vt 0.757582 0.157895 +vt 0.766456 0.139291 +vt 0.787879 0.131585 +vt 0.818175 0.157895 +vt 0.809302 0.176499 +vt 0.680087 0.198872 +vt 0.680087 0.143233 +vt 0.744156 0.143233 +vt 0.757425 0.171053 +vt 0.744156 0.198872 +vt 0.727273 0.526316 +vt 0.969697 0.473684 +vt 0.575758 0.157895 +vt 0.636364 -0.000000 +vt 0.484848 0.315789 +vt 0.575758 0.157895 +vt 0.636364 -0.000000 +vt 0.484848 0.315789 +vt 0.575758 0.157895 +vt 0.636364 -0.000000 +vt 0.484848 0.315789 +vt 0.939394 0.236842 +vt 0.969697 0.210526 +vt 0.969697 0.236842 +vt 0.803030 0.236842 +vt 0.833333 0.210526 +vt 0.833333 0.236842 +vt 0.666667 0.236842 +vt 0.696970 0.210526 +vt 0.696970 0.236842 +vt 0.893939 0.236842 +vt 0.924242 0.210526 +vt 0.924242 0.236842 +vt 0.757576 0.236842 +vt 0.787879 0.210526 +vt 0.787879 0.236842 +vt 0.621212 0.236842 +vt 0.651515 0.210526 +vt 0.651515 0.236842 +vt 0.712121 0.236842 +vt 0.742424 0.210526 +vt 0.742424 0.236842 +vt 0.848485 0.236842 +vt 0.878788 0.210526 +vt 0.878788 0.236842 +vt 0.787879 0.421053 +vt 0.833333 0.447368 +vt 0.803030 0.447368 +vt 0.787879 0.342105 +vt 0.833333 0.342105 +vt 0.696970 0.421053 +vt 0.651515 0.342105 +vt 0.696970 0.342105 +vt 0.651515 0.421053 +vt 0.696970 0.447368 +vt 0.666667 0.447368 +vt 0.606061 0.342105 +vt 0.833333 0.421053 +vt 0.878788 0.447368 +vt 0.848485 0.447368 +vt 0.969697 0.421053 +vt 0.924242 0.342105 +vt 0.969697 0.342105 +vt 0.742424 0.421053 +vt 0.712121 0.447368 +vt 0.878788 0.342105 +vt 0.924242 0.421053 +vt 0.893939 0.447368 +vt 0.878788 0.421053 +vt 0.742424 0.447368 +vt 0.712121 0.473684 +vt 0.742424 0.342105 +vt 0.787879 0.447368 +vt 0.757576 0.447368 +vt 0.606061 0.421053 +vt 0.651515 0.447368 +vt 0.621212 0.447368 +vt 0.939394 0.447368 +vt 0.803030 0.473684 +vt 0.924242 0.447368 +vt 0.893939 0.473684 +vt 0.621212 0.473684 +vt 0.757576 0.473684 +vt 0.848485 0.473684 +vt 0.969697 0.447368 +vt 0.939394 0.473684 +vt 0.666667 0.473684 +vt 0.939394 0.236842 +vt 0.969697 0.210526 +vt 0.969697 0.236842 +vt 0.803030 0.236842 +vt 0.833333 0.210526 +vt 0.833333 0.236842 +vt 0.666667 0.236842 +vt 0.696970 0.210526 +vt 0.696970 0.236842 +vt 0.893939 0.236842 +vt 0.924242 0.210526 +vt 0.924242 0.236842 +vt 0.757576 0.236842 +vt 0.787879 0.210526 +vt 0.787879 0.236842 +vt 0.621212 0.236842 +vt 0.651515 0.210526 +vt 0.651515 0.236842 +vt 0.712121 0.236842 +vt 0.742424 0.210526 +vt 0.742424 0.236842 +vt 0.848485 0.236842 +vt 0.878788 0.210526 +vt 0.878788 0.236842 +vt 0.833333 0.421053 +vt 0.803030 0.447368 +vt 0.787879 0.421053 +vt 0.833333 0.342105 +vt 0.696970 0.421053 +vt 0.651515 0.342105 +vt 0.696970 0.342105 +vt 0.651515 0.421053 +vt 0.696970 0.447368 +vt 0.666667 0.447368 +vt 0.606061 0.342105 +vt 0.878788 0.447368 +vt 0.848485 0.447368 +vt 0.969697 0.421053 +vt 0.924242 0.342105 +vt 0.969697 0.342105 +vt 0.742424 0.421053 +vt 0.712121 0.447368 +vt 0.878788 0.342105 +vt 0.924242 0.421053 +vt 0.893939 0.447368 +vt 0.878788 0.421053 +vt 0.742424 0.447368 +vt 0.712121 0.473684 +vt 0.787879 0.342105 +vt 0.787879 0.447368 +vt 0.757576 0.447368 +vt 0.742424 0.342105 +vt 0.606061 0.421053 +vt 0.651515 0.447368 +vt 0.621212 0.447368 +vt 0.969697 0.447368 +vt 0.939394 0.447368 +vt 0.833333 0.447368 +vt 0.803030 0.473684 +vt 0.924242 0.447368 +vt 0.893939 0.473684 +vt 0.621212 0.473684 +vt 0.757576 0.473684 +vt 0.848485 0.473684 +vt 0.939394 0.473684 +vt 0.666667 0.473684 +vt 0.939394 0.236842 +vt 0.969697 0.210526 +vt 0.969697 0.236842 +vt 0.803030 0.236842 +vt 0.833333 0.210526 +vt 0.833333 0.236842 +vt 0.666667 0.236842 +vt 0.696970 0.210526 +vt 0.696970 0.236842 +vt 0.893939 0.236842 +vt 0.924242 0.210526 +vt 0.924242 0.236842 +vt 0.757576 0.236842 +vt 0.787879 0.210526 +vt 0.787879 0.236842 +vt 0.621212 0.236842 +vt 0.651515 0.210526 +vt 0.651515 0.236842 +vt 0.712121 0.236842 +vt 0.742424 0.210526 +vt 0.742424 0.236842 +vt 0.848485 0.236842 +vt 0.878788 0.210526 +vt 0.878788 0.236842 +vt 0.787879 0.421053 +vt 0.833333 0.447368 +vt 0.803030 0.447368 +vt 0.787879 0.342105 +vt 0.833333 0.342105 +vt 0.696970 0.421053 +vt 0.651515 0.342105 +vt 0.696970 0.342105 +vt 0.651515 0.421053 +vt 0.696970 0.447368 +vt 0.666667 0.447368 +vt 0.606061 0.342105 +vt 0.878788 0.421053 +vt 0.848485 0.447368 +vt 0.833333 0.421053 +vt 0.969697 0.421053 +vt 0.924242 0.342105 +vt 0.969697 0.342105 +vt 0.742424 0.421053 +vt 0.712121 0.447368 +vt 0.878788 0.342105 +vt 0.924242 0.421053 +vt 0.893939 0.447368 +vt 0.742424 0.447368 +vt 0.712121 0.473684 +vt 0.787879 0.447368 +vt 0.757576 0.447368 +vt 0.742424 0.342105 +vt 0.606061 0.421053 +vt 0.651515 0.447368 +vt 0.621212 0.447368 +vt 0.969697 0.447368 +vt 0.939394 0.447368 +vt 0.803030 0.473684 +vt 0.924242 0.447368 +vt 0.893939 0.473684 +vt 0.621212 0.473684 +vt 0.757576 0.473684 +vt 0.878788 0.447368 +vt 0.848485 0.473684 +vt 0.939394 0.473684 +vt 0.666667 0.473684 +vt 0.939394 0.236842 +vt 0.969697 0.210526 +vt 0.969697 0.236842 +vt 0.803030 0.236842 +vt 0.833333 0.210526 +vt 0.833333 0.236842 +vt 0.666667 0.236842 +vt 0.696970 0.210526 +vt 0.696970 0.236842 +vt 0.893939 0.236842 +vt 0.924242 0.210526 +vt 0.924242 0.236842 +vt 0.757576 0.236842 +vt 0.787879 0.210526 +vt 0.787879 0.236842 +vt 0.621212 0.236842 +vt 0.651515 0.210526 +vt 0.651515 0.236842 +vt 0.712121 0.236842 +vt 0.742424 0.210526 +vt 0.742424 0.236842 +vt 0.848485 0.236842 +vt 0.878788 0.210526 +vt 0.878788 0.236842 +vt 0.787879 0.421053 +vt 0.833333 0.447368 +vt 0.803030 0.447368 +vt 0.787879 0.342105 +vt 0.833333 0.342105 +vt 0.696970 0.421053 +vt 0.651515 0.342105 +vt 0.696970 0.342105 +vt 0.651515 0.421053 +vt 0.696970 0.447368 +vt 0.666667 0.447368 +vt 0.606061 0.342105 +vt 0.833333 0.421053 +vt 0.878788 0.447368 +vt 0.848485 0.447368 +vt 0.969697 0.421053 +vt 0.924242 0.342105 +vt 0.969697 0.342105 +vt 0.742424 0.421053 +vt 0.712121 0.447368 +vt 0.878788 0.342105 +vt 0.924242 0.421053 +vt 0.893939 0.447368 +vt 0.878788 0.421053 +vt 0.742424 0.447368 +vt 0.712121 0.473684 +vt 0.742424 0.342105 +vt 0.787879 0.447368 +vt 0.757576 0.447368 +vt 0.606061 0.421053 +vt 0.651515 0.447368 +vt 0.621212 0.447368 +vt 0.969697 0.447368 +vt 0.939394 0.447368 +vt 0.803030 0.473684 +vt 0.924242 0.447368 +vt 0.893939 0.473684 +vt 0.621212 0.473684 +vt 0.757576 0.473684 +vt 0.848485 0.473684 +vt 0.939394 0.473684 +vt 0.666667 0.473684 +vt 0.939394 0.210526 +vt 0.803030 0.210526 +vt 0.666667 0.210526 +vt 0.893939 0.210526 +vt 0.757576 0.210526 +vt 0.621212 0.210526 +vt 0.712121 0.210526 +vt 0.848485 0.210526 +vt 0.742424 0.473684 +vt 0.833333 0.473684 +vt 0.924242 0.473684 +vt 0.651515 0.473684 +vt 0.787879 0.473684 +vt 0.878788 0.473684 +vt 0.969697 0.473684 +vt 0.696970 0.473684 +vt 0.939394 0.210526 +vt 0.803030 0.210526 +vt 0.666667 0.210526 +vt 0.893939 0.210526 +vt 0.757576 0.210526 +vt 0.621212 0.210526 +vt 0.712121 0.210526 +vt 0.848485 0.210526 +vt 0.742424 0.473684 +vt 0.833333 0.473684 +vt 0.924242 0.473684 +vt 0.651515 0.473684 +vt 0.787879 0.473684 +vt 0.878788 0.473684 +vt 0.969697 0.473684 +vt 0.696970 0.473684 +vt 0.939394 0.210526 +vt 0.803030 0.210526 +vt 0.666667 0.210526 +vt 0.893939 0.210526 +vt 0.757576 0.210526 +vt 0.621212 0.210526 +vt 0.712121 0.210526 +vt 0.848485 0.210526 +vt 0.742424 0.473684 +vt 0.833333 0.473684 +vt 0.924242 0.473684 +vt 0.651515 0.473684 +vt 0.787879 0.473684 +vt 0.878788 0.473684 +vt 0.969697 0.473684 +vt 0.696970 0.473684 +vt 0.939394 0.210526 +vt 0.803030 0.210526 +vt 0.666667 0.210526 +vt 0.893939 0.210526 +vt 0.757576 0.210526 +vt 0.621212 0.210526 +vt 0.712121 0.210526 +vt 0.848485 0.210526 +vt 0.742424 0.473684 +vt 0.833333 0.473684 +vt 0.924242 0.473684 +vt 0.651515 0.473684 +vt 0.787879 0.473684 +vt 0.878788 0.473684 +vt 0.969697 0.473684 +vt 0.696970 0.473684 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 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.7071 0.7071 0.0000 +vn 0.0000 -0.8944 0.4472 +vn -0.9701 0.0000 -0.2425 +vn 0.0000 0.8944 -0.4472 +vn 0.9701 0.0000 -0.2425 +vn 0.0000 -0.8944 -0.4472 +vn 0.9701 0.0000 0.2425 +vn 0.0000 0.8944 0.4472 +vn -0.9701 0.0000 0.2425 +vn -0.4472 -0.8944 0.0000 +vn 0.2425 0.0000 -0.9701 +vn 0.4472 0.8944 0.0000 +vn 0.2425 0.0000 0.9701 +vn 0.4472 -0.8944 0.0000 +vn -0.2425 0.0000 0.9701 +vn -0.4472 0.8944 0.0000 +vn -0.2425 0.0000 -0.9701 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.0000 0.4472 0.8944 +vn 0.6325 0.4472 0.6325 +vn -0.0000 -0.2425 0.9701 +vn 0.6860 -0.2425 0.6860 +vn -0.6325 0.4472 -0.6325 +vn -0.8944 0.4472 0.0000 +vn 0.0000 -0.2425 -0.9701 +vn -0.6860 -0.2425 -0.6860 +vn 0.8944 0.4472 0.0000 +vn -0.9701 -0.2425 0.0000 +vn -0.6325 0.4472 0.6325 +vn 0.9701 -0.2425 0.0000 +vn 0.6325 0.4472 -0.6325 +vn 0.6860 -0.2425 -0.6860 +vn -0.6860 -0.2425 0.6860 +vn 0.0000 0.4472 -0.8944 +s off +f 22/45/13 24/46/13 19/47/13 +f 25/48/14 28/49/14 27/50/14 +f 27/51/15 29/52/15 30/53/15 +f 26/54/16 32/55/16 31/56/16 +f 28/49/17 31/56/17 29/52/17 +f 25/57/18 30/53/18 32/58/18 +f 40/59/19 34/60/19 38/61/19 +f 38/62/20 35/63/20 37/64/20 +f 39/65/21 33/66/21 40/67/21 +f 34/60/14 36/68/14 35/63/14 +f 42/69/15 40/67/15 41/70/15 +f 43/71/16 37/64/16 44/72/16 +f 41/73/17 38/61/17 43/74/17 +f 44/75/18 39/76/18 42/77/18 +f 37/78/22 36/68/22 39/76/22 +f 47/79/15 46/80/15 45/81/15 +f 50/82/17 45/83/17 46/84/17 +f 51/85/17 48/86/17 47/79/17 +f 54/87/15 49/88/15 50/82/15 +f 56/89/18 53/90/18 54/87/18 +f 51/85/16 56/89/16 52/91/16 +f 45/92/14 53/90/14 55/93/14 +f 45/92/14 51/94/14 47/95/14 +f 46/96/13 54/87/13 50/97/13 +f 46/96/13 52/98/13 56/89/13 +f 63/99/17 60/100/17 59/101/17 +f 62/102/18 57/103/18 58/104/18 +f 64/105/16 58/104/16 60/100/16 +f 61/106/15 59/107/15 57/103/15 +f 67/108/13 66/109/13 65/110/13 +f 71/111/14 69/112/14 70/113/14 +f 74/114/15 76/115/15 73/116/15 +f 67/108/23 73/117/23 68/118/23 +f 75/119/24 67/120/24 69/121/24 +f 76/115/25 69/112/25 72/122/25 +f 68/123/26 76/115/26 72/124/26 +f 78/125/16 80/126/16 77/127/16 +f 66/109/27 77/128/27 65/110/27 +f 79/129/28 66/130/28 71/131/28 +f 80/126/29 71/111/29 70/113/29 +f 65/132/30 80/126/30 70/133/30 +f 82/134/17 84/135/17 81/136/17 +f 68/118/31 81/137/31 66/109/31 +f 83/138/32 68/139/32 72/140/32 +f 84/135/33 72/122/33 71/111/33 +f 66/141/34 84/135/34 71/142/34 +f 86/143/18 88/144/18 85/145/18 +f 65/110/35 85/146/35 67/108/35 +f 87/147/36 65/148/36 70/149/36 +f 88/144/37 70/113/37 69/112/37 +f 67/150/38 88/144/38 69/151/38 +f 123/152/14 122/153/14 127/154/14 +f 130/155/16 132/156/16 129/157/16 +f 132/156/39 133/158/39 129/157/39 +f 130/155/40 135/159/40 131/160/40 +f 142/161/13 144/162/13 139/163/13 +f 179/164/14 178/165/14 183/166/14 +f 186/167/15 188/168/15 185/169/15 +f 188/168/41 189/170/41 185/169/41 +f 186/167/42 191/171/42 187/172/42 +f 198/173/13 200/174/13 195/175/13 +f 235/176/14 234/177/14 239/178/14 +f 242/179/17 244/180/17 241/181/17 +f 244/180/40 245/182/40 241/181/40 +f 242/179/41 247/183/41 243/184/41 +f 254/185/13 256/186/13 251/187/13 +f 291/188/14 290/189/14 295/190/14 +f 298/191/18 300/192/18 297/193/18 +f 300/192/42 301/194/42 297/193/42 +f 298/191/39 303/195/39 299/196/39 +f 307/197/16 306/198/16 305/199/16 +f 310/200/18 305/201/18 306/202/18 +f 311/203/18 308/204/18 307/197/18 +f 314/205/16 309/206/16 310/200/16 +f 316/207/17 313/208/17 314/205/17 +f 311/203/15 316/207/15 312/209/15 +f 305/210/14 313/208/14 315/211/14 +f 305/210/14 311/212/14 307/213/14 +f 306/214/13 314/205/13 310/215/13 +f 306/214/13 312/216/13 316/207/13 +f 323/217/18 320/218/18 319/219/18 +f 322/220/17 317/221/17 318/222/17 +f 324/223/15 318/222/15 320/218/15 +f 321/224/16 319/225/16 317/221/16 +f 327/226/18 326/227/18 325/228/18 +f 330/229/15 325/230/15 326/231/15 +f 331/232/15 328/233/15 327/226/15 +f 334/234/18 329/235/18 330/229/18 +f 336/236/16 333/237/16 334/234/16 +f 331/232/17 336/236/17 332/238/17 +f 325/239/14 333/237/14 335/240/14 +f 325/239/14 331/241/14 327/242/14 +f 326/243/13 334/234/13 330/244/13 +f 326/243/13 332/245/13 336/236/13 +f 343/246/15 340/247/15 339/248/15 +f 342/249/16 337/250/16 338/251/16 +f 344/252/17 338/251/17 340/247/17 +f 341/253/18 339/254/18 337/250/18 +f 347/255/17 346/256/17 345/257/17 +f 350/258/16 345/259/16 346/260/16 +f 351/261/16 348/262/16 347/255/16 +f 354/263/17 349/264/17 350/258/17 +f 356/265/15 353/266/15 354/263/15 +f 351/261/18 356/265/18 352/267/18 +f 345/268/14 353/266/14 355/269/14 +f 345/268/14 351/270/14 347/271/14 +f 346/272/13 354/263/13 350/273/13 +f 346/272/13 352/274/13 356/265/13 +f 363/275/16 360/276/16 359/277/16 +f 362/278/15 357/279/15 358/280/15 +f 364/281/18 358/280/18 360/276/18 +f 361/282/17 359/283/17 357/279/17 +f 24/46/13 23/284/13 19/47/13 +f 23/284/13 17/285/13 19/47/13 +f 17/285/13 18/286/13 19/47/13 +f 19/47/13 20/287/13 21/288/13 +f 21/288/13 22/45/13 19/47/13 +f 25/48/14 26/54/14 28/49/14 +f 27/51/15 28/49/15 29/52/15 +f 26/54/16 25/289/16 32/55/16 +f 28/49/17 26/54/17 31/56/17 +f 25/57/18 27/51/18 30/53/18 +f 40/59/19 33/66/19 34/60/19 +f 38/62/20 34/60/20 35/63/20 +f 39/65/21 36/68/21 33/66/21 +f 34/60/14 33/66/14 36/68/14 +f 42/69/15 39/65/15 40/67/15 +f 43/71/16 38/62/16 37/64/16 +f 41/73/17 40/59/17 38/61/17 +f 44/75/18 37/78/18 39/76/18 +f 37/78/22 35/63/22 36/68/22 +f 47/79/15 48/86/15 46/80/15 +f 50/82/17 49/88/17 45/83/17 +f 51/85/17 52/91/17 48/86/17 +f 54/87/15 53/90/15 49/88/15 +f 56/89/18 55/93/18 53/90/18 +f 51/85/16 55/93/16 56/89/16 +f 45/92/14 49/290/14 53/90/14 +f 45/92/14 55/93/14 51/94/14 +f 46/96/13 56/89/13 54/87/13 +f 46/96/13 48/291/13 52/98/13 +f 63/99/17 64/105/17 60/100/17 +f 62/102/18 61/106/18 57/103/18 +f 64/105/16 62/102/16 58/104/16 +f 61/106/15 63/292/15 59/107/15 +f 67/108/13 68/118/13 66/109/13 +f 71/111/14 72/122/14 69/112/14 +f 74/114/15 75/119/15 76/115/15 +f 67/108/23 74/293/23 73/117/23 +f 75/119/24 74/114/24 67/120/24 +f 76/115/25 75/119/25 69/112/25 +f 68/123/26 73/116/26 76/115/26 +f 78/125/16 79/129/16 80/126/16 +f 66/109/27 78/294/27 77/128/27 +f 79/129/28 78/125/28 66/130/28 +f 80/126/29 79/129/29 71/111/29 +f 65/132/30 77/127/30 80/126/30 +f 82/134/17 83/138/17 84/135/17 +f 68/118/31 82/295/31 81/137/31 +f 83/138/32 82/134/32 68/139/32 +f 84/135/33 83/138/33 72/122/33 +f 66/141/34 81/136/34 84/135/34 +f 86/143/18 87/147/18 88/144/18 +f 65/110/35 86/296/35 85/146/35 +f 87/147/36 86/143/36 65/148/36 +f 88/144/37 87/147/37 70/113/37 +f 67/150/38 85/145/38 88/144/38 +f 123/152/14 121/297/14 122/153/14 +f 122/153/14 128/298/14 127/154/14 +f 127/154/14 126/299/14 125/300/14 +f 125/300/14 124/301/14 127/154/14 +f 124/301/14 123/152/14 127/154/14 +f 130/155/16 131/160/16 132/156/16 +f 132/156/39 136/302/39 133/158/39 +f 130/155/40 134/303/40 135/159/40 +f 144/162/13 143/304/13 139/163/13 +f 143/304/13 137/305/13 139/163/13 +f 137/305/13 138/306/13 139/163/13 +f 139/163/13 140/307/13 141/308/13 +f 141/308/13 142/161/13 139/163/13 +f 179/164/14 177/309/14 178/165/14 +f 178/165/14 184/310/14 183/166/14 +f 183/166/14 182/311/14 181/312/14 +f 181/312/14 180/313/14 183/166/14 +f 180/313/14 179/164/14 183/166/14 +f 186/167/15 187/172/15 188/168/15 +f 188/168/41 192/314/41 189/170/41 +f 186/167/42 190/315/42 191/171/42 +f 200/174/13 199/316/13 195/175/13 +f 199/316/13 193/317/13 195/175/13 +f 193/317/13 194/318/13 195/175/13 +f 195/175/13 196/319/13 197/320/13 +f 197/320/13 198/173/13 195/175/13 +f 235/176/14 233/321/14 234/177/14 +f 234/177/14 240/322/14 239/178/14 +f 239/178/14 238/323/14 237/324/14 +f 237/324/14 236/325/14 239/178/14 +f 236/325/14 235/176/14 239/178/14 +f 242/179/17 243/184/17 244/180/17 +f 244/180/40 248/326/40 245/182/40 +f 242/179/41 246/327/41 247/183/41 +f 256/186/13 255/328/13 251/187/13 +f 255/328/13 249/329/13 251/187/13 +f 249/329/13 250/330/13 251/187/13 +f 251/187/13 252/331/13 253/332/13 +f 253/332/13 254/185/13 251/187/13 +f 291/188/14 289/333/14 290/189/14 +f 290/189/14 296/334/14 295/190/14 +f 295/190/14 294/335/14 293/336/14 +f 293/336/14 292/337/14 295/190/14 +f 292/337/14 291/188/14 295/190/14 +f 298/191/18 299/196/18 300/192/18 +f 300/192/42 304/338/42 301/194/42 +f 298/191/39 302/339/39 303/195/39 +f 307/197/16 308/204/16 306/198/16 +f 310/200/18 309/206/18 305/201/18 +f 311/203/18 312/209/18 308/204/18 +f 314/205/16 313/208/16 309/206/16 +f 316/207/17 315/211/17 313/208/17 +f 311/203/15 315/211/15 316/207/15 +f 305/210/14 309/340/14 313/208/14 +f 305/210/14 315/211/14 311/212/14 +f 306/214/13 316/207/13 314/205/13 +f 306/214/13 308/341/13 312/216/13 +f 323/217/18 324/223/18 320/218/18 +f 322/220/17 321/224/17 317/221/17 +f 324/223/15 322/220/15 318/222/15 +f 321/224/16 323/342/16 319/225/16 +f 327/226/18 328/233/18 326/227/18 +f 330/229/15 329/235/15 325/230/15 +f 331/232/15 332/238/15 328/233/15 +f 334/234/18 333/237/18 329/235/18 +f 336/236/16 335/240/16 333/237/16 +f 331/232/17 335/240/17 336/236/17 +f 325/239/14 329/343/14 333/237/14 +f 325/239/14 335/240/14 331/241/14 +f 326/243/13 336/236/13 334/234/13 +f 326/243/13 328/344/13 332/245/13 +f 343/246/15 344/252/15 340/247/15 +f 342/249/16 341/253/16 337/250/16 +f 344/252/17 342/249/17 338/251/17 +f 341/253/18 343/345/18 339/254/18 +f 347/255/17 348/262/17 346/256/17 +f 350/258/16 349/264/16 345/259/16 +f 351/261/16 352/267/16 348/262/16 +f 354/263/17 353/266/17 349/264/17 +f 356/265/15 355/269/15 353/266/15 +f 351/261/18 355/269/18 356/265/18 +f 345/268/14 349/346/14 353/266/14 +f 345/268/14 355/269/14 351/270/14 +f 346/272/13 356/265/13 354/263/13 +f 346/272/13 348/347/13 352/274/13 +f 363/275/16 364/281/16 360/276/16 +f 362/278/15 361/282/15 357/279/15 +f 364/281/18 362/278/18 358/280/18 +f 361/282/17 363/348/17 359/283/17 +s 1 +f 108/349/39 18/350/16 107/351/16 +f 111/352/15 21/353/42 110/354/42 +f 89/355/40 23/356/17 90/357/17 +f 109/358/18 19/359/39 108/360/39 +f 112/361/41 22/362/15 111/363/15 +f 107/364/16 17/365/40 89/366/40 +f 90/367/17 24/368/41 112/369/41 +f 110/370/42 20/371/18 109/372/18 +f 104/373/43 118/374/44 119/375/43 +f 103/376/45 110/354/46 101/377/46 +f 92/378/18 93/379/42 91/380/18 +f 94/381/47 114/382/48 113/383/47 +f 95/384/49 89/366/50 93/379/50 +f 94/381/42 95/384/15 93/379/42 +f 102/385/44 117/386/51 118/387/44 +f 91/380/52 89/355/50 90/357/52 +f 96/388/15 97/389/41 95/390/15 +f 106/391/53 114/392/48 92/378/48 +f 101/377/46 109/372/54 99/393/54 +f 98/394/41 99/393/17 97/389/41 +f 98/394/55 117/395/51 100/396/51 +f 99/393/54 108/360/56 97/389/56 +f 100/396/17 101/377/40 99/393/17 +f 120/397/41 122/398/17 114/392/17 +f 105/399/57 111/363/45 103/376/45 +f 102/385/40 103/376/16 101/377/40 +f 106/391/53 119/400/43 120/401/53 +f 104/373/16 105/399/39 103/376/16 +f 96/402/58 113/403/47 115/404/58 +f 91/380/52 112/369/57 105/399/57 +f 106/391/39 91/380/18 105/399/39 +f 95/390/49 108/349/56 107/351/49 +f 96/388/58 116/405/55 98/394/55 +f 118/374/42 127/406/15 119/375/15 +f 116/407/39 125/408/18 117/395/18 +f 113/403/40 123/409/16 115/404/16 +f 119/400/15 128/410/41 120/401/41 +f 117/386/18 126/411/42 118/387/42 +f 115/412/16 124/413/39 116/405/39 +f 114/382/17 121/414/40 113/383/40 +f 164/415/41 138/416/15 163/417/15 +f 167/418/16 141/419/40 166/420/40 +f 145/421/42 143/422/18 146/423/18 +f 165/424/17 139/425/41 164/426/41 +f 168/427/39 142/428/16 167/429/16 +f 163/430/15 137/431/42 145/432/42 +f 146/433/18 144/434/39 168/435/39 +f 166/436/40 140/437/17 165/438/17 +f 158/439/47 175/440/58 160/441/58 +f 157/442/50 167/418/49 166/420/50 +f 148/443/17 149/444/40 147/445/17 +f 150/446/44 170/447/51 169/448/44 +f 151/449/45 145/432/46 149/444/46 +f 150/446/40 151/449/16 149/444/40 +f 158/439/47 173/450/48 174/451/47 +f 147/445/54 145/421/46 146/423/54 +f 152/452/16 153/453/39 151/454/16 +f 162/455/55 170/456/51 148/443/51 +f 157/442/50 165/438/52 155/457/52 +f 154/458/39 155/457/18 153/453/39 +f 154/458/53 173/459/48 156/460/48 +f 155/457/52 164/426/57 153/453/57 +f 156/460/18 157/442/42 155/457/18 +f 176/461/39 178/462/18 170/456/18 +f 159/463/49 168/427/56 167/429/49 +f 158/439/42 159/463/15 157/442/42 +f 162/455/55 175/464/58 176/465/55 +f 160/441/15 161/466/41 159/463/15 +f 152/467/43 169/468/44 171/469/43 +f 147/445/54 168/435/56 161/466/56 +f 162/455/41 147/445/17 161/466/41 +f 153/453/57 163/417/45 151/454/45 +f 154/458/53 171/470/43 172/471/53 +f 174/472/40 183/473/16 175/440/16 +f 172/474/41 181/475/17 173/459/17 +f 169/468/42 179/476/15 171/469/15 +f 175/464/16 184/477/39 176/465/39 +f 173/450/17 182/478/40 174/451/40 +f 171/470/15 180/479/41 172/471/41 +f 170/447/18 177/480/42 169/448/42 +f 220/481/40 194/482/17 219/483/17 +f 223/484/18 197/485/39 222/486/39 +f 201/487/41 199/488/15 202/489/15 +f 221/490/16 195/491/40 220/492/40 +f 224/493/42 198/494/18 223/495/18 +f 219/496/17 193/497/41 201/498/41 +f 202/499/15 200/500/42 224/501/42 +f 222/502/39 196/503/16 221/504/16 +f 216/505/51 230/506/55 231/507/51 +f 215/508/54 222/486/56 213/509/56 +f 204/510/16 205/511/39 203/512/16 +f 206/513/53 226/514/43 225/515/53 +f 205/511/57 219/496/52 201/498/57 +f 206/513/39 207/516/18 205/511/39 +f 212/517/58 230/518/55 214/519/55 +f 205/511/57 202/489/45 203/512/45 +f 208/520/18 209/521/42 207/522/18 +f 218/523/44 226/524/43 204/510/43 +f 213/509/56 221/504/49 211/525/49 +f 210/526/42 211/525/15 209/521/42 +f 210/526/47 229/527/58 212/517/58 +f 209/521/50 221/490/49 220/492/50 +f 212/517/15 213/509/41 211/525/15 +f 232/528/42 234/529/15 226/524/15 +f 215/508/54 224/493/46 223/495/54 +f 214/519/41 215/508/17 213/509/41 +f 218/523/44 231/530/51 232/531/44 +f 216/505/17 217/532/40 215/508/17 +f 208/533/48 225/534/53 227/535/48 +f 203/512/45 224/501/46 217/532/46 +f 218/523/40 203/512/16 217/532/40 +f 209/521/50 219/483/52 207/522/52 +f 210/526/47 227/536/48 228/537/47 +f 230/506/39 239/538/18 231/507/18 +f 228/539/40 237/540/16 229/527/16 +f 225/534/41 235/541/17 227/535/17 +f 231/530/18 240/542/42 232/531/42 +f 229/543/16 238/544/39 230/518/39 +f 227/536/17 236/545/40 228/537/40 +f 226/514/15 233/546/41 225/515/41 +f 276/547/42 250/548/18 275/549/18 +f 279/550/17 253/551/41 278/552/41 +f 257/553/39 255/554/16 258/555/16 +f 277/556/15 251/557/42 276/558/42 +f 280/559/40 254/560/17 279/561/17 +f 275/562/18 249/563/39 257/564/39 +f 258/565/16 256/566/40 280/567/40 +f 278/568/41 252/569/15 277/570/15 +f 272/571/48 286/572/53 287/573/48 +f 271/574/52 278/552/57 269/575/57 +f 260/576/15 261/577/41 259/578/15 +f 262/579/55 282/580/58 281/581/55 +f 263/582/54 257/564/56 261/577/56 +f 262/579/41 263/582/17 261/577/41 +f 270/583/53 285/584/43 286/585/53 +f 261/577/56 258/555/49 259/578/49 +f 264/586/17 265/587/40 263/588/17 +f 274/589/47 282/590/58 260/576/58 +f 269/575/57 277/570/45 267/591/45 +f 266/592/40 267/591/16 265/587/40 +f 266/592/44 285/593/43 268/594/43 +f 267/591/45 276/558/46 265/587/46 +f 268/594/16 269/575/39 267/591/16 +f 288/595/40 290/596/16 282/590/16 +f 273/597/50 279/561/52 271/574/52 +f 270/583/39 271/574/18 269/575/39 +f 274/589/47 287/598/48 288/599/47 +f 272/571/18 273/597/42 271/574/18 +f 264/600/51 281/601/55 283/602/51 +f 259/578/49 280/567/50 273/597/50 +f 274/589/42 259/578/15 273/597/42 +f 265/587/46 275/549/54 263/588/54 +f 266/592/44 283/603/51 284/604/44 +f 286/572/41 295/605/17 287/573/17 +f 284/606/42 293/607/15 285/593/15 +f 281/601/39 291/608/18 283/602/18 +f 287/598/17 296/609/40 288/599/40 +f 285/584/15 294/610/41 286/585/41 +f 283/603/18 292/611/42 284/604/42 +f 282/580/16 289/612/39 281/581/39 +f 108/349/39 19/613/39 18/350/16 +f 111/352/15 22/614/15 21/353/42 +f 89/355/40 17/615/40 23/356/17 +f 109/358/18 20/616/18 19/359/39 +f 112/361/41 24/617/41 22/362/15 +f 107/364/16 18/618/16 17/365/40 +f 90/367/17 23/619/17 24/368/41 +f 110/370/42 21/620/42 20/371/18 +f 104/373/43 102/385/44 118/374/44 +f 103/376/45 111/352/45 110/354/46 +f 92/378/18 94/381/42 93/379/42 +f 94/381/47 92/378/48 114/382/48 +f 95/384/49 107/364/49 89/366/50 +f 94/381/42 96/402/15 95/384/15 +f 102/385/44 100/396/51 117/386/51 +f 91/380/52 93/379/50 89/355/50 +f 96/388/15 98/394/41 97/389/41 +f 106/391/53 120/397/53 114/392/48 +f 101/377/46 110/370/46 109/372/54 +f 98/394/41 100/396/17 99/393/17 +f 98/394/55 116/407/55 117/395/51 +f 99/393/54 109/358/54 108/360/56 +f 100/396/17 102/385/40 101/377/40 +f 120/397/41 128/621/41 122/398/17 +f 105/399/57 112/361/57 111/363/45 +f 102/385/40 104/373/16 103/376/16 +f 106/391/53 104/373/43 119/400/43 +f 104/373/16 106/391/39 105/399/39 +f 96/402/58 94/381/47 113/403/47 +f 91/380/52 90/367/52 112/369/57 +f 106/391/39 92/378/18 91/380/18 +f 95/390/49 97/389/56 108/349/56 +f 96/388/58 115/412/58 116/405/55 +f 118/374/42 126/622/42 127/406/15 +f 116/407/39 124/623/39 125/408/18 +f 113/403/40 121/624/40 123/409/16 +f 119/400/15 127/625/15 128/410/41 +f 117/386/18 125/626/18 126/411/42 +f 115/412/16 123/627/16 124/413/39 +f 114/382/17 122/628/17 121/414/40 +f 164/415/41 139/629/41 138/416/15 +f 167/418/16 142/630/16 141/419/40 +f 145/421/42 137/631/42 143/422/18 +f 165/424/17 140/632/17 139/425/41 +f 168/427/39 144/633/39 142/428/16 +f 163/430/15 138/634/15 137/431/42 +f 146/433/18 143/635/18 144/434/39 +f 166/436/40 141/636/40 140/437/17 +f 158/439/47 174/472/47 175/440/58 +f 157/442/50 159/463/49 167/418/49 +f 148/443/17 150/446/40 149/444/40 +f 150/446/44 148/443/51 170/447/51 +f 151/449/45 163/430/45 145/432/46 +f 150/446/40 152/467/16 151/449/16 +f 158/439/47 156/460/48 173/450/48 +f 147/445/54 149/444/46 145/421/46 +f 152/452/16 154/458/39 153/453/39 +f 162/455/55 176/461/55 170/456/51 +f 157/442/50 166/436/50 165/438/52 +f 154/458/39 156/460/18 155/457/18 +f 154/458/53 172/474/53 173/459/48 +f 155/457/52 165/424/52 164/426/57 +f 156/460/18 158/439/42 157/442/42 +f 176/461/39 184/637/39 178/462/18 +f 159/463/49 161/466/56 168/427/56 +f 158/439/42 160/441/15 159/463/15 +f 162/455/55 160/441/58 175/464/58 +f 160/441/15 162/455/41 161/466/41 +f 152/467/43 150/446/44 169/468/44 +f 147/445/54 146/433/54 168/435/56 +f 162/455/41 148/443/17 147/445/17 +f 153/453/57 164/415/57 163/417/45 +f 154/458/53 152/452/43 171/470/43 +f 174/472/40 182/638/40 183/473/16 +f 172/474/41 180/639/41 181/475/17 +f 169/468/42 177/640/42 179/476/15 +f 175/464/16 183/641/16 184/477/39 +f 173/450/17 181/642/17 182/478/40 +f 171/470/15 179/643/15 180/479/41 +f 170/447/18 178/644/18 177/480/42 +f 220/481/40 195/645/40 194/482/17 +f 223/484/18 198/646/18 197/485/39 +f 201/487/41 193/647/41 199/488/15 +f 221/490/16 196/648/16 195/491/40 +f 224/493/42 200/649/42 198/494/18 +f 219/496/17 194/650/17 193/497/41 +f 202/499/15 199/651/15 200/500/42 +f 222/502/39 197/652/39 196/503/16 +f 216/505/51 214/519/55 230/506/55 +f 215/508/54 223/484/54 222/486/56 +f 204/510/16 206/513/39 205/511/39 +f 206/513/53 204/510/43 226/514/43 +f 205/511/57 207/516/52 219/496/52 +f 206/513/39 208/533/18 207/516/18 +f 212/517/58 229/543/58 230/518/55 +f 205/511/57 201/487/57 202/489/45 +f 208/520/18 210/526/42 209/521/42 +f 218/523/44 232/528/44 226/524/43 +f 213/509/56 222/502/56 221/504/49 +f 210/526/42 212/517/15 211/525/15 +f 210/526/47 228/539/47 229/527/58 +f 209/521/50 211/525/49 221/490/49 +f 212/517/15 214/519/41 213/509/41 +f 232/528/42 240/653/42 234/529/15 +f 215/508/54 217/532/46 224/493/46 +f 214/519/41 216/505/17 215/508/17 +f 218/523/44 216/505/51 231/530/51 +f 216/505/17 218/523/40 217/532/40 +f 208/533/48 206/513/53 225/534/53 +f 203/512/45 202/499/45 224/501/46 +f 218/523/40 204/510/16 203/512/16 +f 209/521/50 220/481/50 219/483/52 +f 210/526/47 208/520/48 227/536/48 +f 230/506/39 238/654/39 239/538/18 +f 228/539/40 236/655/40 237/540/16 +f 225/534/41 233/656/41 235/541/17 +f 231/530/18 239/657/18 240/542/42 +f 229/543/16 237/658/16 238/544/39 +f 227/536/17 235/659/17 236/545/40 +f 226/514/15 234/660/15 233/546/41 +f 276/547/42 251/661/42 250/548/18 +f 279/550/17 254/662/17 253/551/41 +f 257/553/39 249/663/39 255/554/16 +f 277/556/15 252/664/15 251/557/42 +f 280/559/40 256/665/40 254/560/17 +f 275/562/18 250/666/18 249/563/39 +f 258/565/16 255/667/16 256/566/40 +f 278/568/41 253/668/41 252/569/15 +f 272/571/48 270/583/53 286/572/53 +f 271/574/52 279/550/52 278/552/57 +f 260/576/15 262/579/41 261/577/41 +f 262/579/55 260/576/58 282/580/58 +f 263/582/54 275/562/54 257/564/56 +f 262/579/41 264/600/17 263/582/17 +f 270/583/53 268/594/43 285/584/43 +f 261/577/56 257/553/56 258/555/49 +f 264/586/17 266/592/40 265/587/40 +f 274/589/47 288/595/47 282/590/58 +f 269/575/57 278/568/57 277/570/45 +f 266/592/40 268/594/16 267/591/16 +f 266/592/44 284/606/44 285/593/43 +f 267/591/45 277/556/45 276/558/46 +f 268/594/16 270/583/39 269/575/39 +f 288/595/40 296/669/40 290/596/16 +f 273/597/50 280/559/50 279/561/52 +f 270/583/39 272/571/18 271/574/18 +f 274/589/47 272/571/48 287/598/48 +f 272/571/18 274/589/42 273/597/42 +f 264/600/51 262/579/55 281/601/55 +f 259/578/49 258/565/49 280/567/50 +f 274/589/42 260/576/15 259/578/15 +f 265/587/46 276/547/46 275/549/54 +f 266/592/44 264/586/51 283/603/51 +f 286/572/41 294/670/41 295/605/17 +f 284/606/42 292/671/42 293/607/15 +f 281/601/39 289/672/39 291/608/18 +f 287/598/17 295/673/17 296/609/40 +f 285/584/15 293/674/15 294/610/41 +f 283/603/18 291/675/18 292/611/42 +f 282/580/16 290/676/16 289/612/39 diff --git a/src/main/resources/assets/hbm/models/machines/electrolyser.obj b/src/main/resources/assets/hbm/models/machines/electrolyser.obj index cb38ef317..48e2cfa01 100644 --- a/src/main/resources/assets/hbm/models/machines/electrolyser.obj +++ b/src/main/resources/assets/hbm/models/machines/electrolyser.obj @@ -1,1779 +1,6405 @@ -# Blender v2.79 (sub 0) OBJ File: '' +# Blender v2.79 (sub 0) OBJ File: 'lyser2.blend' # www.blender.org -mtllib electrolyser.mtl -o Cube.002_Cube.011 -v 1.750445 2.755059 -3.250000 -v 2.217445 0.847998 -3.250000 -v 1.717445 0.847998 -3.250000 -v 2.217445 0.847997 -2.750000 -v 1.750445 2.755059 -2.750000 -v 1.717445 0.847997 -2.750000 -v 2.250000 2.754050 -2.750000 -v 2.104444 3.109622 -2.750000 -v 2.250000 2.754050 -3.250000 -v 2.104444 3.109622 -3.250000 -v 1.255321 3.251352 -2.750000 -v 1.609638 3.604429 -2.750000 -v 1.254558 3.751828 -2.749999 -v 1.255321 3.251352 -3.250000 -v 1.609638 3.604429 -3.250000 -v 1.254558 3.751828 -3.249999 -v 0.548897 3.251829 -2.750000 -v 0.548897 3.251829 -3.250000 -v 0.548897 3.751829 -3.249999 -v 1.750445 2.755059 -1.250000 -v 2.217445 0.847997 -1.250000 -v 1.717445 0.847997 -1.250000 -v 2.217445 0.847997 -0.750000 -v 1.750445 2.755059 -0.750000 -v 1.717445 0.847997 -0.750000 -v 2.250000 2.754050 -0.750000 -v 2.104444 3.109622 -0.750000 -v 2.250000 2.754050 -1.250000 -v 2.104444 3.109622 -1.250000 -v 1.255321 3.251351 -0.749999 -v 1.609638 3.604428 -0.749999 -v 1.254558 3.751828 -0.749999 -v 1.255321 3.251351 -1.250000 -v 1.609638 3.604428 -1.249999 -v 1.254558 3.751828 -1.249999 -v 0.548897 3.251829 -0.749999 -v 0.548897 3.251829 -1.250000 -v 0.548897 3.751829 -1.249999 -v 1.750445 2.755059 0.750000 -v 2.217445 0.847997 0.750000 -v 1.717445 0.847997 0.750000 -v 2.217445 0.847997 1.250000 -v 1.750445 2.755059 1.250000 -v 1.717445 0.847997 1.250000 -v 2.250000 2.754050 1.250000 -v 2.104444 3.109622 1.250000 -v 2.250000 2.754050 0.750000 -v 2.104444 3.109622 0.750000 -v 1.255321 3.251351 1.250000 -v 1.609638 3.604428 1.250001 -v 1.254558 3.751828 1.250001 -v 1.255321 3.251351 0.750001 -v 1.609638 3.604428 0.750001 -v 1.254558 3.751828 0.750001 -v 0.548897 3.251829 1.250000 -v 0.548897 3.251829 0.750001 -v 0.548897 3.751829 0.750001 -v 1.750445 2.755059 2.750000 -v 2.217445 0.847997 2.750000 -v 1.717445 0.847997 2.750000 -v 2.217445 0.847996 3.250000 -v 1.750445 2.755059 3.250000 -v 1.717445 0.847996 3.250000 -v 2.250000 2.754050 3.250000 -v 2.104444 3.109622 3.250000 -v 2.250000 2.754050 2.750000 -v 2.104444 3.109622 2.750000 -v 1.255321 3.251351 3.250000 -v 1.609638 3.604428 3.250000 -v 1.254558 3.751827 3.250001 -v 1.255321 3.251351 2.750000 -v 1.609638 3.604428 2.750000 -v 1.254558 3.751827 2.750001 -v 0.548897 3.251828 3.250000 -v 0.548897 3.251828 2.750000 -v 0.548897 3.751828 2.750001 -v -1.500000 -0.000001 4.500000 -v -2.499999 0.000001 -4.500001 -v -1.499999 0.000001 -4.500001 -v -1.499999 1.000001 -4.499999 -v -2.500001 0.999999 4.499999 -v -1.500002 0.999999 4.500000 -v 2.500001 1.000001 -4.499998 -v 2.500000 -0.000001 4.500000 -v 2.500000 0.000001 -4.500000 -v -2.500000 -0.000001 4.500000 -v -2.500000 1.000001 -4.500000 -v 1.500002 1.000001 -4.499999 -v 1.500001 0.000001 -4.500000 -v 2.499999 0.999999 4.500003 -v 1.500000 -0.000001 4.500000 -v 1.499998 0.999999 4.500001 -v -0.750001 2.249999 4.050001 -v 0.750000 2.360113 -3.175483 -v 0.587706 3.889888 -3.175482 -v 0.750000 3.889888 -3.175482 -v 0.750001 2.250001 -4.049997 -v 0.750000 2.250000 0.000001 -v -0.750000 2.250000 0.000000 -v -0.551251 3.999999 3.857973 -v -0.551250 3.807398 -3.857970 -v -0.551250 4.000000 -3.857970 -v 0.749999 2.360112 3.912016 -v 0.587704 3.889886 3.912017 -v 0.749999 3.889886 3.912017 -v 0.587706 2.360114 -3.912014 -v 0.587706 2.360113 -3.175483 -v 0.551250 4.000000 -3.857970 -v -0.750000 4.000000 -4.049997 -v 0.551249 3.999999 3.857974 -v -0.750001 3.999999 4.050001 -v 0.749999 3.999999 4.050002 -v 0.750000 4.000000 0.000002 -v -0.750000 4.000000 0.000001 -v 0.551249 3.807396 3.857974 -v 0.551250 3.807398 -3.857970 -v -0.551251 3.807396 3.857973 -v -0.750001 3.889887 2.162985 -v -0.587706 3.889887 2.899516 -v -0.750001 3.889887 2.899516 -v 0.749999 2.360112 3.175485 -v 0.587704 2.360112 3.912016 -v -0.587706 2.360112 2.899515 -v -0.750001 2.360112 2.899515 -v 0.749999 3.889887 2.899517 -v 0.587705 3.889887 2.162986 -v 0.749999 3.889887 2.162986 -v -0.750001 2.360113 2.162984 -v -0.587706 3.889887 2.162985 -v 0.749999 2.249999 4.050002 -v 0.587705 2.360113 2.162986 -v 0.749999 2.360113 2.162986 -v -0.587706 2.360113 2.162984 -v 0.749999 2.360112 2.899517 -v 0.587704 3.889887 2.899517 -v 0.750000 3.889887 -1.150482 -v 0.587705 3.889887 -1.887013 -v 0.750000 3.889887 -1.887013 -v 0.587704 2.360112 2.899517 -v 0.587705 2.360113 -1.887014 -v 0.750000 2.360113 -1.887014 -v 0.750000 2.250000 -3.037498 -v 0.750001 4.000000 -4.049997 -v 0.750001 2.360114 -3.912014 -v 0.750000 4.000000 -3.037497 -v 0.750001 3.889888 -3.912013 -v -0.750001 2.250000 3.037500 -v -0.750001 2.360112 3.912015 -v -0.750001 2.360112 3.175484 -v -0.750001 4.000000 3.037501 -v -0.750001 3.889886 3.912016 -v -0.750001 3.889887 3.175485 -v -0.750000 2.360113 -0.874515 -v -0.750000 2.250000 -1.012499 -v -0.750000 2.360113 -0.137984 -v -0.750000 4.000000 -1.012498 -v -0.750000 3.889887 -0.137983 -v -0.750000 3.889887 -0.874514 -v 0.750000 2.360113 0.874516 -v 0.750000 2.250000 1.012501 -v 0.750000 2.360113 0.137986 -v 0.750000 3.889887 0.874517 -v 0.750000 3.889887 0.137987 -v 0.750000 4.000000 1.012502 -v 0.749999 2.250000 2.025002 -v 0.749999 2.250000 3.037502 -v 0.749999 4.000000 2.025002 -v 0.749999 4.000000 3.037502 -v -0.750000 2.250000 -3.037498 -v -0.750000 2.360113 -2.162983 -v -0.750000 2.360113 -2.899513 -v -0.750000 4.000000 -2.024998 -v -0.750000 2.250000 -2.024998 -v -0.750000 4.000000 -3.037498 -v -0.750000 3.889887 -2.162983 -v -0.750000 3.889888 -2.899513 -v -0.750001 2.250000 1.012500 -v -0.750001 2.360113 1.887015 -v -0.750001 2.360113 1.150485 -v -0.750001 4.000000 2.025001 -v -0.750001 2.250000 2.025001 -v -0.750001 4.000000 1.012501 -v -0.750001 3.889887 1.887016 -v -0.750001 3.889887 1.150486 -v 0.750000 2.250000 -1.012499 -v 0.750000 2.360113 -1.150483 -v 0.750000 4.000000 -2.024998 -v 0.750000 2.250000 -2.024998 -v 0.750000 4.000000 -1.012498 -v 0.750000 2.360113 -0.137984 -v 0.750000 2.360113 -0.874514 -v 0.750000 3.889887 -0.137983 -v 0.750000 3.889887 -0.874513 -v -0.750001 2.360113 0.874516 -v -0.750000 2.360113 0.137985 -v -0.750001 3.889887 0.874517 -v -0.750000 3.889887 0.137986 -v -0.750000 2.360114 -3.912014 -v -0.750000 2.250001 -4.049997 -v -0.750000 2.360113 -3.175483 -v -0.750000 3.889888 -3.175482 -v -0.750000 3.889888 -3.912013 -v 0.749999 3.889887 3.175486 -v 0.749999 2.360113 1.887016 -v 0.750000 2.360113 1.150486 -v 0.749999 3.889887 1.887017 -v 0.750000 3.889887 1.150487 -v -0.750000 2.360113 -1.887014 -v -0.750000 2.360113 -1.150484 -v -0.750000 3.889887 -1.150483 -v -0.750000 3.889887 -1.887013 -v 0.750000 2.360113 -2.162982 -v 0.750000 2.360113 -2.899513 -v 0.750000 3.889887 -2.162982 -v 0.750000 3.889888 -2.899513 -v -0.587706 2.360112 3.912015 -v -0.587706 3.889887 3.175485 -v -0.587706 2.360112 3.175484 -v -0.587705 2.360113 -0.137984 -v -0.587705 3.889887 -0.874514 -v -0.587705 2.360113 -0.874515 -v 0.587705 2.360113 0.137986 -v 0.587705 3.889887 0.874517 -v 0.587705 2.360113 0.874516 -v -0.587705 2.360113 -2.162983 -v -0.587705 3.889888 -2.899513 -v -0.587705 2.360113 -2.899513 -v -0.587706 2.360113 1.887015 -v -0.587706 3.889887 1.150486 -v -0.587706 2.360113 1.150485 -v 0.587705 3.889887 -1.150482 -v 0.587705 2.360113 -1.150483 -v 0.587705 2.360113 -0.874514 -v 0.587705 3.889887 -0.137983 -v 0.587705 2.360113 -0.137984 -v -0.587706 2.360113 0.874516 -v -0.587705 3.889887 0.137986 -v -0.587705 2.360113 0.137985 -v -0.587705 2.360113 -3.175483 -v -0.587705 3.889888 -3.912013 -v -0.587705 2.360114 -3.912014 -v 0.587704 2.360112 3.175485 -v 0.587705 2.360113 1.150486 -v 0.587705 3.889887 1.887017 -v 0.587705 2.360113 1.887016 -v -0.587705 2.360113 -1.150484 -v -0.587705 3.889887 -1.887013 -v -0.587705 2.360113 -1.887014 -v 0.587706 2.360113 -2.899513 -v 0.587705 3.889887 -2.162982 -v 0.587705 2.360113 -2.162982 -v 0.587704 3.889887 3.175486 -v 0.587706 3.889888 -3.912013 -v 0.587705 3.889887 -0.874513 -v -0.587705 3.889887 -2.162983 -v 0.587706 3.889888 -2.899513 -v -0.587705 3.889887 -0.137983 -v 0.587705 3.889887 1.150487 -v -0.587706 3.889887 0.874517 -v -0.587706 3.889887 1.887016 -v 0.587705 3.889887 0.137987 -v -0.587705 3.889887 -1.150483 -v -0.587706 3.889886 3.912016 -v -0.587705 3.889888 -3.175482 -v 1.027183 1.687541 3.250000 -v 1.445061 0.972984 3.250000 -v 1.027183 0.972984 3.250000 -v 1.445061 1.687541 3.250000 -v 1.445061 0.972984 3.750000 -v 1.445061 1.687541 3.750000 -v 1.027183 0.972984 3.750000 -v 1.027183 1.687542 0.250000 -v 1.445061 0.972985 0.250000 -v 1.027183 0.972985 0.250000 -v 1.445061 1.687542 0.250000 -v 1.445061 0.972985 0.750001 -v 1.445061 1.687542 0.750001 -v 1.027183 0.972985 0.750001 -v 1.027183 1.687542 -0.750000 -v 1.445061 0.972985 -0.750000 -v 1.027183 0.972985 -0.750000 -v 1.445061 1.687542 -0.750000 -v 1.445061 0.972985 -0.250000 -v 1.445061 1.687542 -0.250000 -v 1.027183 0.972985 -0.250000 -v 1.027183 1.687542 -1.750000 -v 1.445061 0.972985 -1.750000 -v 1.027183 0.972985 -1.750000 -v 1.445061 1.687542 -1.750000 -v 1.445061 0.972985 -1.250000 -v 1.445061 1.687542 -1.250000 -v 1.027183 0.972985 -1.250000 -v 1.027183 1.687542 2.250000 -v 1.445061 0.972985 2.250000 -v 1.027183 0.972985 2.250000 -v 1.445061 1.687542 2.250000 -v 1.445061 0.972985 2.750000 -v 1.445061 1.687541 2.750000 -v 1.027183 0.972985 2.750000 -v 1.027183 1.687542 1.250000 -v 1.445061 0.972985 1.250000 -v 1.027183 0.972985 1.250000 -v 1.445061 1.687542 1.250000 -v 1.445061 0.972985 1.750000 -v 1.445061 1.687542 1.750000 -v 1.027183 0.972985 1.750000 -v 1.027183 1.687542 -2.750000 -v 1.445061 0.972986 -2.750000 -v 1.027183 0.972986 -2.750000 -v 1.445061 1.687542 -2.750000 -v 1.445061 0.972985 -2.250000 -v 1.445061 1.687542 -2.250000 -v 1.027183 0.972985 -2.250000 -v 1.027183 1.687543 -3.750000 -v 1.445061 0.972986 -3.750000 -v 1.027183 0.972986 -3.750000 -v 1.445061 1.687543 -3.750000 -v 1.445061 0.972986 -3.250000 -v 1.445061 1.687542 -3.250000 -v 1.027183 0.972986 -3.250000 -v -1.445061 0.972984 3.250000 -v -1.027183 1.687541 3.250000 -v -1.027183 0.972984 3.250000 -v -1.445061 0.972984 3.750001 -v -1.445061 1.687541 3.250000 -v -1.027183 0.972984 3.750001 -v -1.445061 1.687541 3.750001 -v -1.445061 0.972985 0.250001 -v -1.027183 1.687542 0.250001 -v -1.027183 0.972985 0.250001 -v -1.445061 0.972985 0.750001 -v -1.445061 1.687542 0.250001 -v -1.027183 0.972985 0.750001 -v -1.445061 1.687542 0.750001 -v -1.445061 0.972985 -0.750000 -v -1.027183 1.687542 -0.750000 -v -1.027183 0.972985 -0.750000 -v -1.445061 0.972985 -0.249999 -v -1.445061 1.687542 -0.750000 -v -1.027183 0.972985 -0.249999 -v -1.445061 1.687542 -0.249999 -v -1.445061 0.972985 -1.750000 -v -1.027183 1.687542 -1.750000 -v -1.027183 0.972985 -1.750000 -v -1.445061 0.972985 -1.250000 -v -1.445061 1.687542 -1.750000 -v -1.027183 0.972985 -1.250000 -v -1.445061 1.687542 -1.250000 -v -1.445061 0.972985 2.250001 -v -1.027183 1.687542 2.250001 -v -1.027183 0.972985 2.250001 -v -1.445061 0.972985 2.750001 -v -1.445061 1.687542 2.250001 -v -1.027183 0.972985 2.750001 -v -1.445061 1.687541 2.750001 -v -1.445061 0.972985 1.250000 -v -1.027183 1.687542 1.250000 -v -1.027183 0.972985 1.250000 -v -1.445061 0.972985 1.750000 -v -1.445061 1.687542 1.250000 -v -1.027183 0.972985 1.750000 -v -1.445061 1.687542 1.750000 -v -1.445061 0.972986 -2.750000 -v -1.027183 1.687542 -2.750000 -v -1.027183 0.972986 -2.750000 -v -1.445061 0.972985 -2.250000 -v -1.445061 1.687542 -2.750000 -v -1.027183 0.972985 -2.250000 -v -1.445061 1.687542 -2.250000 -v -1.445061 0.972986 -3.750000 -v -1.027183 1.687543 -3.750000 -v -1.027183 0.972986 -3.750000 -v -1.445061 0.972986 -3.250000 -v -1.445061 1.687543 -3.750000 -v -1.027183 0.972986 -3.250000 -v -1.445061 1.687542 -3.250000 -v 0.548897 3.751829 -2.749999 -v 0.548897 3.751829 -0.749999 -v 0.548897 3.751829 1.250001 -v 0.548897 3.751828 3.250001 -v 1.027183 1.687541 3.750000 -v 1.027183 1.687542 0.750001 -v 1.027183 1.687542 -0.250000 -v 1.027183 1.687542 -1.250000 -v 1.027183 1.687541 2.750000 -v 1.027183 1.687542 1.750000 -v 1.027183 1.687542 -2.250000 -v 1.027183 1.687542 -3.250000 -v -1.027183 1.687541 3.750001 -v -1.027183 1.687542 0.750001 -v -1.027183 1.687542 -0.249999 -v -1.027183 1.687542 -1.250000 -v -1.027183 1.687541 2.750001 -v -1.027183 1.687542 1.750000 -v -1.027183 1.687542 -2.250000 -v -1.027183 1.687542 -3.250000 -vt 0.589324 0.739609 -vt 0.625030 0.599581 -vt 0.589324 0.599581 -vt 0.660717 0.599581 -vt 0.696427 0.739609 -vt 0.696427 0.599581 -vt 0.696520 0.869665 -vt 0.660646 0.885395 -vt 0.660646 0.854212 -vt 0.624979 0.885395 -vt 0.589350 0.869665 -vt 0.624979 0.854212 -vt 0.696513 0.869525 -vt 0.660638 0.885394 -vt 0.660639 0.854191 -vt 0.660717 0.739609 -vt 0.696427 0.802086 -vt 0.625030 0.739609 -vt 0.589324 0.802086 -vt 0.625030 0.802086 -vt 0.624971 0.885394 -vt 0.589342 0.869525 -vt 0.624971 0.854191 -vt 0.660717 0.802086 -vt 0.696427 0.853949 -vt 0.625030 0.802086 -vt 0.589324 0.853949 -vt 0.625030 0.853949 -vt 0.589324 0.739609 -vt 0.625030 0.599581 -vt 0.589324 0.599581 -vt 0.660717 0.599581 -vt 0.696427 0.739609 -vt 0.696427 0.599581 -vt 0.696514 0.869665 -vt 0.660640 0.885395 -vt 0.660640 0.854212 -vt 0.624972 0.885395 -vt 0.589343 0.869665 -vt 0.624972 0.854212 -vt 0.696516 0.869531 -vt 0.660642 0.885400 -vt 0.660642 0.854198 -vt 0.660717 0.739609 -vt 0.696427 0.802086 -vt 0.625030 0.739609 -vt 0.589324 0.802086 -vt 0.625030 0.802086 -vt 0.624974 0.885400 -vt 0.589345 0.869531 -vt 0.624974 0.854198 -vt 0.660717 0.802086 -vt 0.696427 0.853949 -vt 0.625030 0.802086 -vt 0.589324 0.853949 -vt 0.625030 0.853949 -vt 0.589324 0.739609 -vt 0.625030 0.599581 -vt 0.589324 0.599581 -vt 0.660717 0.599581 -vt 0.696427 0.739609 -vt 0.696427 0.599581 -vt 0.696513 0.869651 -vt 0.660639 0.885381 -vt 0.660639 0.854198 -vt 0.624971 0.885381 -vt 0.589342 0.869651 -vt 0.624971 0.854198 -vt 0.696516 0.869533 -vt 0.660642 0.885402 -vt 0.660642 0.854199 -vt 0.660717 0.739609 -vt 0.696427 0.802086 -vt 0.625030 0.739609 -vt 0.589324 0.802086 -vt 0.625030 0.802086 -vt 0.624974 0.885402 -vt 0.589345 0.869533 -vt 0.624974 0.854199 -vt 0.660717 0.802086 -vt 0.696427 0.853949 -vt 0.625030 0.802086 -vt 0.589324 0.853949 -vt 0.625030 0.853949 -vt 0.589324 0.739609 -vt 0.625030 0.599581 -vt 0.589324 0.599581 -vt 0.660717 0.599581 -vt 0.696427 0.739609 -vt 0.696427 0.599581 -vt 0.696523 0.869665 -vt 0.660649 0.885395 -vt 0.660649 0.854212 -vt 0.624982 0.885395 -vt 0.589353 0.869665 -vt 0.624982 0.854212 -vt 0.696516 0.869524 -vt 0.660642 0.885393 -vt 0.660642 0.854190 -vt 0.660717 0.739609 -vt 0.696427 0.802086 -vt 0.625030 0.739609 -vt 0.589324 0.802086 -vt 0.625030 0.802086 -vt 0.624974 0.885393 -vt 0.589345 0.869524 -vt 0.624974 0.854190 -vt 0.660717 0.802086 -vt 0.696427 0.853949 -vt 0.625030 0.802086 -vt 0.589324 0.853949 -vt 0.625030 0.853949 -vt 0.071429 1.000000 -vt 0.000000 0.250000 -vt 0.071429 0.250000 -vt 0.596910 0.004769 -vt 0.000595 0.081787 -vt 0.000595 0.004769 -vt 0.357143 0.250000 -vt 1.000000 0.166667 -vt 0.357143 0.166667 -vt 0.285714 0.250000 -vt 0.357143 0.166667 -vt 0.285714 0.166667 -vt 0.357143 0.250000 -vt 1.000000 0.166667 -vt 0.071429 0.250000 -vt 0.000000 0.166667 -vt 0.000000 0.250000 -vt 0.285714 0.250000 -vt 0.285714 0.166667 -vt 0.000000 0.250000 -vt 0.071429 0.166667 -vt 0.000000 0.166667 -vt 0.071429 0.250000 -vt 0.596978 0.004860 -vt 0.000595 0.081775 -vt 0.000595 0.004859 -vt 0.568726 0.729189 -vt 0.413642 0.854246 -vt 0.360755 0.729189 -vt 0.357143 1.000000 -vt 0.285714 0.250000 -vt 0.357143 0.250000 -vt 0.285714 1.000000 -vt 0.491249 0.547007 -vt 0.504420 0.713515 -vt 0.491249 0.713515 -vt 0.568721 0.729189 -vt 0.413637 0.854246 -vt 0.360750 0.729189 -vt 1.000000 0.250000 -vt 0.678507 0.374792 -vt 0.357143 0.250000 -vt 1.000000 0.250000 -vt 0.678506 0.374779 -vt 0.357143 0.250000 -vt 0.370550 0.531218 -vt 0.941964 0.515625 -vt 0.941955 0.531219 -vt 0.491245 0.547007 -vt 0.504415 0.713516 -vt 0.491244 0.713516 -vt 0.504420 0.531305 -vt 0.575836 0.547007 -vt 0.504420 0.547007 -vt 0.583990 0.054533 -vt 0.598170 0.166639 -vt 0.583990 0.149517 -vt 0.014203 0.054533 -vt 0.000000 0.166667 -vt 0.000023 0.037410 -vt 0.299097 0.037410 -vt 0.299097 0.166640 -vt 0.014204 0.149517 -vt 0.370536 0.432292 -vt 0.941955 0.432318 -vt 0.357185 0.432317 -vt 0.370550 0.515608 -vt 0.357185 0.515608 -vt 0.941955 0.416695 -vt 0.370550 0.416695 -vt 0.955193 0.515608 -vt 0.955193 0.432318 -vt 0.504416 0.729062 -vt 0.575832 0.713515 -vt 0.575832 0.729062 -vt 0.575831 0.531306 -vt 0.504415 0.547007 -vt 0.504415 0.531306 -vt 0.589268 0.713515 -vt 0.575832 0.547007 -vt 0.589268 0.547007 -vt 0.504418 0.729061 -vt 0.575835 0.713515 -vt 0.575835 0.729062 -vt 0.491245 0.547007 -vt 0.504416 0.713515 -vt 0.491245 0.713515 -vt 0.514960 0.854246 -vt 0.413642 0.999965 -vt 0.589271 0.713515 -vt 0.575835 0.547007 -vt 0.589271 0.547007 -vt 0.575832 0.531305 -vt 0.504416 0.547007 -vt 0.504416 0.531305 -vt 0.491248 0.547007 -vt 0.504418 0.713515 -vt 0.491248 0.713515 -vt 0.504424 0.729056 -vt 0.575840 0.713509 -vt 0.575840 0.729056 -vt 0.575835 0.531305 -vt 0.504419 0.547007 -vt 0.504419 0.531305 -vt 0.589277 0.713509 -vt 0.575840 0.547000 -vt 0.589276 0.547000 -vt 0.598169 0.015723 -vt 0.533590 0.025210 -vt 0.523401 0.015724 -vt 0.598170 0.166491 -vt 0.587980 0.025210 -vt 0.523401 0.166492 -vt 0.587980 0.157005 -vt 0.533591 0.157005 -vt 0.074790 0.166502 -vt 0.010211 0.157016 -vt 0.064601 0.157016 -vt 0.000022 0.015734 -vt 0.000000 0.166667 -vt 0.074790 0.015734 -vt 0.010211 0.025221 -vt 0.064601 0.025221 -vt 0.299096 0.166502 -vt 0.363675 0.157016 -vt 0.373864 0.166502 -vt 0.299096 0.015734 -vt 0.309285 0.157016 -vt 0.373864 0.015734 -vt 0.309285 0.025221 -vt 0.363675 0.025221 -vt 0.299095 0.015725 -vt 0.234516 0.025212 -vt 0.224327 0.015725 -vt 0.299096 0.166493 -vt 0.288906 0.025211 -vt 0.234517 0.157006 -vt 0.288906 0.157006 -vt 0.224327 0.166493 -vt 0.149558 0.015725 -vt 0.084979 0.025212 -vt 0.074790 0.015726 -vt 0.139369 0.157007 -vt 0.139369 0.025212 -vt 0.149559 0.166493 -vt 0.084980 0.157007 -vt 0.074790 0.166493 -vt 0.523401 0.166502 -vt 0.458822 0.157016 -vt 0.513212 0.157016 -vt 0.448633 0.015734 -vt 0.448633 0.166502 -vt 0.523401 0.015734 -vt 0.458822 0.025221 -vt 0.513212 0.025221 -vt 0.224327 0.166502 -vt 0.159748 0.157016 -vt 0.214138 0.157016 -vt 0.149559 0.015734 -vt 0.149559 0.166502 -vt 0.224327 0.015734 -vt 0.159748 0.025221 -vt 0.214138 0.025221 -vt 0.373864 0.015725 -vt 0.438443 0.025211 -vt 0.384053 0.025211 -vt 0.448633 0.166492 -vt 0.448633 0.015724 -vt 0.373864 0.166493 -vt 0.438443 0.157006 -vt 0.384054 0.157006 -vt 0.309285 0.025211 -vt 0.363674 0.025211 -vt 0.309285 0.157006 -vt 0.363675 0.157006 -vt 0.234517 0.157016 -vt 0.288906 0.157016 -vt 0.234517 0.025221 -vt 0.288906 0.025221 -vt 0.587980 0.157016 -vt 0.598170 0.166502 -vt 0.533591 0.157016 -vt 0.598170 0.015734 -vt 0.533591 0.025221 -vt 0.587980 0.025221 -vt 0.010211 0.025212 -vt 0.000022 0.015726 -vt 0.064601 0.157007 -vt 0.064600 0.025212 -vt 0.010211 0.157007 -vt 0.000000 0.166667 -vt 0.159748 0.025212 -vt 0.214137 0.025212 -vt 0.159748 0.157007 -vt 0.214138 0.157007 -vt 0.438443 0.157016 -vt 0.384054 0.157016 -vt 0.384054 0.025221 -vt 0.438443 0.025221 -vt 0.084980 0.157016 -vt 0.139369 0.157016 -vt 0.084980 0.025221 -vt 0.139369 0.025221 -vt 0.458822 0.025211 -vt 0.513211 0.025210 -vt 0.458822 0.157005 -vt 0.513212 0.157005 -vt 0.514955 0.999965 -vt 0.514955 0.854246 -vt 0.575831 0.547007 -vt 0.504414 0.713515 -vt 0.504414 0.547007 -vt 0.575836 0.547004 -vt 0.504420 0.713513 -vt 0.504420 0.547004 -vt 0.575846 0.547007 -vt 0.504430 0.713516 -vt 0.504430 0.547007 -vt 0.575823 0.547007 -vt 0.504407 0.713516 -vt 0.504407 0.547007 -vt 0.575832 0.547005 -vt 0.504415 0.713513 -vt 0.504416 0.547005 -vt 0.504424 0.713509 -vt 0.504424 0.547000 -vt 0.575835 0.547007 -vt 0.504419 0.713515 -vt 0.504419 0.547007 -vt 0.575836 0.547005 -vt 0.504420 0.713514 -vt 0.504420 0.547005 -vt 0.575833 0.547007 -vt 0.504416 0.713515 -vt 0.504416 0.547007 -vt 0.575831 0.547007 -vt 0.575840 0.547005 -vt 0.504424 0.713513 -vt 0.504424 0.547005 -vt 0.575832 0.547000 -vt 0.504416 0.713509 -vt 0.504416 0.547000 -vt 0.575830 0.547007 -vt 0.504414 0.713515 -vt 0.504414 0.547007 -vt 0.589268 0.713516 -vt 0.589268 0.547007 -vt 0.575835 0.531305 -vt 0.504419 0.531305 -vt 0.589273 0.713515 -vt 0.589273 0.547007 -vt 0.504415 0.729062 -vt 0.575831 0.713516 -vt 0.575831 0.729062 -vt 0.491248 0.547007 -vt 0.491248 0.713515 -vt 0.504420 0.729062 -vt 0.575836 0.713515 -vt 0.575836 0.729062 -vt 0.589272 0.713515 -vt 0.589272 0.547007 -vt 0.575823 0.531305 -vt 0.504407 0.531306 -vt 0.504419 0.729062 -vt 0.575835 0.713515 -vt 0.575835 0.729062 -vt 0.491237 0.547007 -vt 0.491237 0.713516 -vt 0.575830 0.531305 -vt 0.504414 0.531305 -vt 0.589260 0.713516 -vt 0.589260 0.547007 -vt 0.575836 0.531303 -vt 0.504420 0.531303 -vt 0.620737 0.000018 -vt 0.633908 0.166527 -vt 0.620737 0.166527 -vt 0.504407 0.729062 -vt 0.575823 0.713516 -vt 0.575823 0.729062 -vt 0.620743 0.000015 -vt 0.633914 0.166524 -vt 0.620743 0.166524 -vt 0.589267 0.713515 -vt 0.589267 0.547007 -vt 0.575840 0.531303 -vt 0.504424 0.531303 -vt 0.589273 0.713513 -vt 0.589273 0.547004 -vt 0.504414 0.729062 -vt 0.575830 0.713515 -vt 0.575830 0.729062 -vt 0.620747 0.000016 -vt 0.633918 0.166524 -vt 0.620747 0.166524 -vt 0.504420 0.729059 -vt 0.575836 0.713513 -vt 0.575836 0.729059 -vt 0.589276 0.713513 -vt 0.589277 0.547005 -vt 0.575836 0.531304 -vt 0.504420 0.531304 -vt 0.504424 0.729059 -vt 0.575840 0.713513 -vt 0.575840 0.729060 -vt 0.491249 0.547005 -vt 0.491250 0.713514 -vt 0.589273 0.713514 -vt 0.589273 0.547005 -vt 0.575832 0.531303 -vt 0.504416 0.531303 -vt 0.504420 0.729060 -vt 0.575836 0.713514 -vt 0.575836 0.729060 -vt 0.620739 0.000016 -vt 0.633909 0.166524 -vt 0.620739 0.166524 -vt 0.589268 0.713513 -vt 0.589268 0.547005 -vt 0.575846 0.531306 -vt 0.504430 0.531306 -vt 0.504415 0.729060 -vt 0.575832 0.713513 -vt 0.575832 0.729060 -vt 0.491259 0.547007 -vt 0.491259 0.713516 -vt 0.575832 0.531299 -vt 0.504416 0.531299 -vt 0.589282 0.713516 -vt 0.589282 0.547007 -vt 0.575831 0.531305 -vt 0.504414 0.531305 -vt 0.491245 0.547000 -vt 0.491245 0.713509 -vt 0.504430 0.729062 -vt 0.575846 0.713516 -vt 0.575846 0.729062 -vt 0.491244 0.547007 -vt 0.491244 0.713515 -vt 0.589268 0.713509 -vt 0.589268 0.547000 -vt 0.575833 0.531305 -vt 0.504416 0.531305 -vt 0.589268 0.713515 -vt 0.589268 0.547007 -vt 0.504416 0.729056 -vt 0.575832 0.713509 -vt 0.575832 0.729056 -vt 0.620745 0.000012 -vt 0.633916 0.166521 -vt 0.620745 0.166521 -vt 0.504414 0.729062 -vt 0.575831 0.713515 -vt 0.575831 0.729062 -vt 0.589269 0.713515 -vt 0.589269 0.547007 -vt 0.504424 0.531299 -vt 0.504416 0.729062 -vt 0.575832 0.713515 -vt 0.575832 0.729062 -vt 0.620747 0.000012 -vt 0.633918 0.166520 -vt 0.620747 0.166520 -vt 0.491071 0.677083 -vt 0.446398 0.593784 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401808 0.593784 -vt 0.401808 0.677069 -vt 0.357156 0.593784 -vt 0.446398 0.729156 -vt 0.491071 0.677083 -vt 0.446401 0.593787 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401811 0.593787 -vt 0.401811 0.677072 -vt 0.357160 0.593787 -vt 0.446401 0.729159 -vt 0.491071 0.677083 -vt 0.446398 0.593785 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401808 0.593785 -vt 0.401808 0.677070 -vt 0.357156 0.593785 -vt 0.446398 0.729157 -vt 0.491071 0.677083 -vt 0.446406 0.593786 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401816 0.593786 -vt 0.401816 0.677071 -vt 0.357166 0.593786 -vt 0.446406 0.729158 -vt 0.491071 0.677083 -vt 0.446405 0.593786 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401815 0.593786 -vt 0.401815 0.677071 -vt 0.357164 0.593786 -vt 0.446405 0.729158 -vt 0.491071 0.677083 -vt 0.446403 0.593786 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401813 0.593786 -vt 0.401813 0.677071 -vt 0.357162 0.593786 -vt 0.446403 0.729158 -vt 0.491071 0.677083 -vt 0.446406 0.593785 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401815 0.593785 -vt 0.401815 0.677070 -vt 0.357165 0.593785 -vt 0.446406 0.729157 -vt 0.491071 0.677083 -vt 0.446398 0.593787 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401808 0.593787 -vt 0.401808 0.677072 -vt 0.357156 0.593787 -vt 0.446398 0.729159 -vt 0.401811 0.593785 -vt 0.357160 0.677070 -vt 0.357160 0.593785 -vt 0.446401 0.593785 -vt 0.401811 0.677070 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401811 0.729157 -vt 0.401811 0.593784 -vt 0.357160 0.677069 -vt 0.357160 0.593784 -vt 0.446401 0.593784 -vt 0.401811 0.677069 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401811 0.729156 -vt 0.401812 0.593786 -vt 0.357161 0.677070 -vt 0.357161 0.593786 -vt 0.446402 0.593786 -vt 0.401812 0.677070 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401812 0.729157 -vt 0.401812 0.593784 -vt 0.357161 0.677068 -vt 0.357161 0.593784 -vt 0.446402 0.593784 -vt 0.401812 0.677068 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401812 0.729155 -vt 0.401815 0.593784 -vt 0.357165 0.677069 -vt 0.357165 0.593784 -vt 0.446406 0.593784 -vt 0.401815 0.677069 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401815 0.729156 -vt 0.401812 0.593787 -vt 0.357161 0.677072 -vt 0.357161 0.593787 -vt 0.446402 0.593787 -vt 0.401812 0.677072 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401812 0.729159 -vt 0.401815 0.593787 -vt 0.357165 0.677072 -vt 0.357165 0.593787 -vt 0.446406 0.593787 -vt 0.401815 0.677072 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401815 0.729159 -vt 0.401812 0.593784 -vt 0.357161 0.677069 -vt 0.357161 0.593784 -vt 0.446402 0.593784 -vt 0.401812 0.677069 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401812 0.729156 -vt 0.625030 0.739609 -vt 0.660717 0.739609 -vt 0.660717 0.802086 -vt 0.660717 0.853949 -vt 0.625030 0.739609 -vt 0.660717 0.739609 -vt 0.660717 0.802086 -vt 0.660717 0.853949 -vt 0.625030 0.739609 -vt 0.660717 0.739609 -vt 0.660717 0.802086 -vt 0.660717 0.853949 -vt 0.625030 0.739609 -vt 0.660717 0.739609 -vt 0.660717 0.802086 -vt 0.660717 0.853949 -vt -0.000000 1.000000 -vt 0.596910 0.081786 -vt 1.000000 0.250000 -vt 1.000000 0.250000 -vt 0.071429 0.166667 -vt 0.596978 0.081776 -vt 0.389380 0.374791 -vt 0.461662 0.374792 -vt 0.967634 0.374792 -vt 0.895352 0.374792 -vt 0.823070 0.374792 -vt 0.750788 0.374792 -vt 0.533944 0.374792 -vt 0.606225 0.374792 -vt 0.389380 0.374779 -vt 0.461662 0.374779 -vt 0.967634 0.374779 -vt 0.895354 0.374779 -vt 0.823071 0.374779 -vt 0.750787 0.374779 -vt 0.533944 0.374779 -vt 0.606225 0.374779 -vt 0.575836 0.531305 -vt 0.598170 0.037410 -vt 0.523402 0.037410 -vt 0.074792 0.037410 -vt 0.149560 0.037410 -vt 0.448634 0.037410 -vt 0.373865 0.037410 -vt 0.224328 0.037410 -vt 0.074792 0.166640 -vt 0.523402 0.166639 -vt 0.448634 0.166639 -vt 0.373865 0.166640 -vt 0.149560 0.166640 -vt 0.224328 0.166640 -vt 0.514960 0.999965 -vt 0.413637 0.999965 -vt 0.633908 0.000018 -vt 0.633914 0.000015 -vt 0.633918 0.000016 -vt 0.633910 0.000016 -vt 0.633916 0.000012 -vt 0.575840 0.531299 -vt 0.633918 0.000012 -vt 0.357156 0.677069 -vt 0.401808 0.729156 -vt 0.357160 0.677072 -vt 0.401811 0.729159 -vt 0.357156 0.677070 -vt 0.401808 0.729157 -vt 0.357166 0.677071 -vt 0.401816 0.729158 -vt 0.357164 0.677071 -vt 0.401815 0.729158 -vt 0.357162 0.677071 -vt 0.401813 0.729158 -vt 0.357165 0.677070 -vt 0.401815 0.729157 -vt 0.357156 0.677072 -vt 0.401807 0.729159 -vt 0.491071 0.677083 -vt 0.446401 0.729157 -vt 0.491071 0.677083 -vt 0.446401 0.729156 -vt 0.491071 0.677083 -vt 0.446402 0.729157 -vt 0.491071 0.677083 -vt 0.446402 0.729155 -vt 0.491071 0.677083 -vt 0.446406 0.729156 -vt 0.491071 0.677083 -vt 0.446402 0.729159 -vt 0.491071 0.677083 -vt 0.446406 0.729159 -vt 0.491071 0.677083 -vt 0.446402 0.729156 -vt 0.732143 0.598958 -vt 0.732143 0.802083 -vt 0.732143 0.739583 -vt 0.732143 0.854167 -vt 0.732143 0.598958 -vt 0.732143 0.802083 -vt 0.732143 0.739583 -vt 0.732143 0.854167 -vt 0.732143 0.598958 -vt 0.732143 0.802083 -vt 0.732143 0.739583 -vt 0.732143 0.854167 -vt 0.732143 0.598958 -vt 0.732143 0.802083 -vt 0.732143 0.739583 -vt 0.732143 0.854167 +mtllib lyser2.mtl +o Cube_Cube.001 +v 0.500000 1.000000 -5.500000 +v -0.500000 1.000000 -5.500000 +v -1.500000 0.000000 -4.500000 +v -1.500000 0.000000 -3.500000 +v -1.500000 0.000000 5.500000 +v -1.500000 1.000000 -1.500000 +v -1.500000 1.000000 -2.500000 +v -1.500000 1.000000 -3.500000 +v -1.500000 1.000000 -4.500000 +v -1.500000 1.000000 -5.500000 +v 3.500000 0.000000 5.500000 +v 3.500000 0.000000 2.500000 +v 3.500000 0.000000 1.500000 +v 3.500000 0.000000 0.500000 +v 3.500000 0.000000 -0.500000 +v 3.500000 0.000000 -1.500000 +v 3.500000 0.000000 -2.500000 +v 3.500000 0.000000 -3.500000 +v 3.500000 0.000000 -4.500000 +v 3.500000 0.000000 -5.500000 +v 3.500000 1.000000 -5.500000 +v 3.500000 1.000000 -4.500000 +v 3.500000 1.000000 -3.500000 +v 3.500000 1.000000 -2.500000 +v 3.500000 1.000000 -1.500000 +v 3.500000 1.000000 -0.500000 +v 3.500000 1.000000 0.500000 +v 3.500000 1.000000 1.500000 +v 3.500000 1.000000 2.500000 +v 3.500000 1.000000 5.500000 +v 1.500000 1.000000 -5.500000 +v 1.500000 1.000000 -4.500000 +v 1.500000 1.000000 -3.500000 +v 1.500000 1.000000 -2.500000 +v 1.500000 1.000000 -1.500000 +v 1.500000 1.000000 -0.500000 +v 1.500000 1.000000 0.500000 +v 1.500000 1.000000 1.500000 +v 1.500000 1.000000 2.500000 +v 1.250000 0.750000 5.500000 +v -1.500000 1.000000 -0.500000 +v -1.500000 1.000000 0.500000 +v -1.500000 1.000000 1.500000 +v -1.500000 1.000000 2.500000 +v -1.500000 0.000000 -5.500000 +v -1.500000 0.000000 -2.500000 +v -1.500000 0.000000 -1.500000 +v -1.500000 0.000000 -0.500000 +v -1.500000 0.000000 0.500000 +v -1.500000 0.000000 1.500000 +v -1.500000 0.000000 2.500000 +v -1.250000 0.250000 5.500000 +v 1.500000 0.000000 -5.500000 +v 1.500000 0.000000 -4.500000 +v 1.500000 0.000000 -3.500000 +v 1.500000 0.000000 -2.500000 +v 1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -0.500000 +v 1.500000 0.000000 0.500000 +v 1.500000 0.000000 1.500000 +v 1.500000 0.000000 2.500000 +v 1.250000 0.250000 5.500000 +v -0.500000 0.000000 -5.500000 +v -0.500000 0.000000 -4.500000 +v -0.500000 0.000000 -3.500000 +v -0.500000 0.000000 -2.500000 +v -0.500000 0.000000 -1.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.000000 0.500000 +v -0.500000 0.000000 1.500000 +v -0.500000 0.000000 2.500000 +v -0.250000 0.250000 5.500000 +v 0.500000 0.000000 -5.500000 +v 0.500000 0.000000 -4.500000 +v 0.500000 0.000000 -3.500000 +v 0.500000 0.000000 -2.500000 +v 0.500000 0.000000 -1.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v 0.500000 0.000000 1.500000 +v 0.500000 0.000000 2.500000 +v 0.250000 0.250000 5.500000 +v 0.250000 3.000000 -5.250000 +v 0.375000 3.000000 -4.500000 +v 0.375000 3.000000 -3.500000 +v 0.375000 3.000000 -2.500000 +v 0.375000 3.000000 -1.500000 +v 0.375000 3.000000 -0.500000 +v 0.375000 3.000000 0.500000 +v 0.375000 3.000000 1.500000 +v 0.375000 3.000000 2.500000 +v -0.250000 3.000000 -5.250000 +v -0.375000 3.000000 -4.500000 +v -0.375000 3.000000 -3.500000 +v -0.375000 3.000000 -2.500000 +v -0.375000 3.000000 -1.500000 +v -0.375000 3.000000 -0.500000 +v -0.375000 3.000000 0.500000 +v -0.375000 3.000000 1.500000 +v -0.375000 3.000000 2.500000 +v -1.250000 0.750000 5.500000 +v -0.750000 0.750000 5.500000 +v 0.750000 0.750000 5.500000 +v -0.250000 3.000000 5.250000 +v 0.250000 3.000000 5.250000 +v 0.750000 0.250000 5.500000 +v -0.750000 0.250000 5.500000 +v 0.187500 0.687500 5.437500 +v -0.250000 0.750000 5.500000 +v 0.250000 0.750000 5.500000 +v -0.187500 0.687500 5.437500 +v 0.187500 0.312500 5.437500 +v -0.187500 0.312500 5.437500 +v 0.250000 0.750000 5.437500 +v -0.250000 0.750000 5.437500 +v 0.250000 0.250000 5.437500 +v -0.250000 0.250000 5.437500 +v 0.187500 0.687500 5.500000 +v -0.187500 0.687500 5.500000 +v 0.187500 0.312500 5.500000 +v -0.187500 0.312500 5.500000 +v -0.500000 0.000000 5.500000 +v 1.500000 0.000000 5.500000 +v 0.500000 0.000000 5.500000 +v 1.500000 1.000000 5.500000 +v -1.500000 1.000000 5.500000 +v -0.500000 1.000000 5.500000 +v 0.500000 1.000000 5.500000 +v -0.812500 0.312500 5.437500 +v -1.187500 0.312500 5.437500 +v 1.187500 0.312500 5.437500 +v 0.812500 0.312500 5.437500 +v 1.187500 0.687500 5.437500 +v -1.187500 0.687500 5.437500 +v -0.812500 0.687500 5.437500 +v 0.812500 0.687500 5.437500 +v -0.750000 0.250000 5.437500 +v -1.250000 0.250000 5.437500 +v 1.250000 0.250000 5.437500 +v 0.750000 0.250000 5.437500 +v 1.250000 0.750000 5.437500 +v -1.250000 0.750000 5.437500 +v -0.750000 0.750000 5.437500 +v 0.750000 0.750000 5.437500 +v -0.812500 0.312500 5.500000 +v -1.187500 0.312500 5.500000 +v 1.187500 0.312500 5.500000 +v 0.812500 0.312500 5.500000 +v 1.187500 0.687500 5.500000 +v -1.187500 0.687500 5.500000 +v -0.812500 0.687500 5.500000 +v 0.812500 0.687500 5.500000 +v -1.250000 0.750000 -5.500000 +v -0.750000 0.750000 -5.500000 +v -0.750000 0.250000 -5.500000 +v -1.250000 0.250000 -5.500000 +v 0.250000 0.250000 -5.500000 +v -0.250000 0.250000 -5.500000 +v -0.250000 0.750000 -5.500000 +v 0.250000 0.750000 -5.500000 +v 0.750000 0.750000 -5.500000 +v 1.250000 0.750000 -5.500000 +v 1.250000 0.250000 -5.500000 +v 0.750000 0.250000 -5.500000 +v -0.812500 0.687500 -5.437500 +v -1.187500 0.687500 -5.437500 +v -1.187500 0.312500 -5.437500 +v -0.812500 0.312500 -5.437500 +v 0.187500 0.312500 -5.437500 +v -0.187500 0.312500 -5.437500 +v 0.187500 0.687500 -5.437500 +v -0.187500 0.687500 -5.437500 +v 0.812500 0.687500 -5.437500 +v 1.187500 0.687500 -5.437500 +v 0.812500 0.312500 -5.437500 +v 1.187500 0.312500 -5.437500 +v -0.750000 0.750000 -5.437500 +v -1.250000 0.750000 -5.437500 +v -1.250000 0.250000 -5.437500 +v -0.750000 0.250000 -5.437500 +v 0.250000 0.250000 -5.437500 +v -0.250000 0.250000 -5.437500 +v 0.250000 0.750000 -5.437500 +v -0.250000 0.750000 -5.437500 +v 0.750000 0.750000 -5.437500 +v 1.250000 0.750000 -5.437500 +v 0.750000 0.250000 -5.437500 +v 1.250000 0.250000 -5.437500 +v -0.812500 0.687500 -5.500000 +v -1.187500 0.687500 -5.500000 +v -1.187500 0.312500 -5.500000 +v -0.812500 0.312500 -5.500000 +v 0.187500 0.312500 -5.500000 +v -0.187500 0.312500 -5.500000 +v 0.187500 0.687500 -5.500000 +v -0.187500 0.687500 -5.500000 +v 0.812500 0.687500 -5.500000 +v 1.187500 0.687500 -5.500000 +v 0.812500 0.312500 -5.500000 +v 1.187500 0.312500 -5.500000 +v -1.500000 0.000000 3.500000 +v -1.500000 1.000000 4.500000 +v 3.500000 0.000000 4.500000 +v 3.500000 0.000000 3.500000 +v 3.500000 1.000000 3.500000 +v 3.500000 1.000000 4.500000 +v 1.500000 1.000000 3.500000 +v 1.500000 1.000000 4.500000 +v -1.500000 0.000000 4.500000 +v 1.500000 0.000000 3.500000 +v 1.500000 0.000000 4.500000 +v -0.500000 0.000000 3.500000 +v -0.500000 0.000000 4.500000 +v 0.500000 0.000000 3.500000 +v 0.500000 0.000000 4.500000 +v -1.500000 1.000000 3.500000 +v 0.375000 3.000000 3.500000 +v 0.375000 3.000000 4.500000 +v -0.375000 3.000000 3.500000 +v -0.375000 3.000000 4.500000 +v -0.500000 3.000000 -5.500000 +v -0.500000 3.000000 -4.500000 +v 0.500000 3.000000 -4.500000 +v 0.500000 3.000000 -5.500000 +v 0.500000 3.000000 -3.500000 +v 0.500000 3.000000 -2.500000 +v 0.500000 3.000000 -1.500000 +v 0.500000 3.000000 -0.500000 +v 0.500000 3.000000 0.500000 +v 0.500000 3.000000 1.500000 +v 0.500000 3.000000 2.500000 +v -0.500000 3.000000 -3.500000 +v -0.500000 3.000000 -2.500000 +v -0.500000 3.000000 -1.500000 +v -0.500000 3.000000 -0.500000 +v -0.500000 3.000000 0.500000 +v -0.500000 3.000000 1.500000 +v -0.500000 3.000000 2.500000 +v 0.500000 3.000000 5.500000 +v -0.500000 3.000000 5.500000 +v 0.500000 3.000000 4.500000 +v -0.500000 3.000000 4.500000 +v 0.500000 3.000000 3.500000 +v -0.500000 3.000000 3.500000 +v -0.375000 3.875000 -3.500000 +v 0.375000 3.875000 -3.500000 +v -0.375000 3.875000 -2.500000 +v 0.375000 3.875000 -2.500000 +v -0.250000 3.875000 -1.500000 +v 0.250000 3.875000 -1.500000 +v -0.250000 3.875000 -0.500000 +v 0.250000 3.875000 -0.500000 +v -0.250000 3.875000 0.500000 +v 0.250000 3.875000 0.500000 +v -0.375000 3.875000 1.500000 +v 0.375000 3.875000 1.500000 +v -0.375000 3.875000 2.500000 +v 0.250000 3.875000 2.500000 +v -0.375000 3.875000 3.500000 +v 0.250000 3.875000 3.500000 +v -0.250000 3.875000 -4.250000 +v 0.250000 3.875000 -4.250000 +v -0.250000 3.625000 4.500000 +v -0.250000 3.875000 4.250000 +v 0.250000 3.875000 4.250000 +v 0.250000 3.625000 4.500000 +v 0.250000 3.875000 -3.500000 +v 0.250000 3.875000 -2.500000 +v 0.375000 3.875000 -1.500000 +v 0.375000 3.875000 -0.500000 +v 0.375000 3.875000 0.500000 +v 0.250000 3.875000 1.500000 +v 0.375000 3.875000 2.500000 +v -0.250000 3.875000 -3.500000 +v -0.250000 3.875000 -2.500000 +v -0.375000 3.875000 -1.500000 +v -0.375000 3.875000 -0.500000 +v -0.375000 3.875000 0.500000 +v -0.250000 3.875000 1.500000 +v -0.250000 3.875000 2.500000 +v 0.375000 3.875000 3.500000 +v -0.250000 3.875000 3.500000 +v -0.375000 3.875000 -4.375000 +v 0.375000 3.875000 -4.375000 +v 0.375000 3.875000 4.375000 +v -0.375000 3.875000 4.375000 +v -0.250000 4.000000 -3.500000 +v 0.187500 4.000000 -3.500000 +v -0.187500 4.000000 -2.500000 +v 0.187500 4.000000 -2.500000 +v -0.187500 4.000000 -1.500000 +v 0.250000 4.000000 -1.500000 +v -0.250000 4.000000 -0.500000 +v 0.250000 4.000000 -0.500000 +v -0.250000 4.000000 0.500000 +v 0.250000 4.000000 0.500000 +v -0.250000 4.000000 1.500000 +v 0.250000 4.000000 1.500000 +v -0.250000 4.000000 2.500000 +v 0.250000 4.000000 2.500000 +v -0.250000 4.000000 3.500000 +v 0.250000 4.000000 3.500000 +v -0.187500 4.000000 -4.187500 +v 0.187500 4.000000 -4.187500 +v 0.187500 4.000000 4.187500 +v -0.187500 4.000000 4.187500 +v -0.375000 3.000000 -5.375000 +v -0.250000 3.000000 -4.500000 +v 0.250000 3.000000 -4.500000 +v 0.375000 3.000000 -5.375000 +v 0.375000 3.000000 5.375000 +v -0.375000 3.000000 5.375000 +v 0.250000 3.000000 4.500000 +v -0.250000 3.000000 4.500000 +v 0.375000 3.750000 -4.500000 +v -0.375000 3.750000 -4.500000 +v -0.375000 3.750000 4.500000 +v 0.375000 3.750000 4.500000 +v -0.250000 3.625000 -4.500000 +v 0.250000 3.625000 -4.500000 +v -0.250000 3.625000 -5.250000 +v 0.250000 3.625000 -5.250000 +v 0.250000 3.625000 5.250000 +v -0.250000 3.625000 5.250000 +v 0.250000 4.000000 -3.500000 +v 0.250000 4.000000 -2.500000 +v 0.187500 4.000000 -1.500000 +v 0.187500 4.000000 -0.500000 +v 0.187500 4.000000 0.500000 +v 0.187500 4.000000 1.500000 +v 0.187500 4.000000 2.500000 +v -0.187500 4.000000 -3.500000 +v -0.250000 4.000000 -2.500000 +v -0.250000 4.000000 -1.500000 +v -0.187500 4.000000 -0.500000 +v -0.187500 4.000000 0.500000 +v -0.187500 4.000000 1.500000 +v -0.187500 4.000000 2.500000 +v 0.187500 4.000000 3.500000 +v -0.187500 4.000000 3.500000 +v -0.250000 4.000000 -4.250000 +v 0.250000 4.000000 -4.250000 +v 0.250000 4.000000 4.250000 +v -0.250000 4.000000 4.250000 +v -0.187500 3.875000 -3.500000 +v 0.187500 3.875000 -3.500000 +v -0.187500 3.875000 -2.500000 +v 0.187500 3.875000 -2.500000 +v -0.187500 3.875000 -1.500000 +v 0.187500 3.875000 -1.500000 +v -0.187500 3.875000 -0.500000 +v 0.187500 3.875000 -0.500000 +v -0.187500 3.875000 0.500000 +v 0.187500 3.875000 0.500000 +v -0.187500 3.875000 1.500000 +v 0.187500 3.875000 1.500000 +v -0.187500 3.875000 2.500000 +v 0.187500 3.875000 2.500000 +v -0.187500 3.875000 3.500000 +v 0.187500 3.875000 3.500000 +v -0.187500 3.875000 -4.187500 +v 0.187500 3.875000 -4.187500 +v 0.187500 3.875000 4.187500 +v -0.187500 3.875000 4.187500 +v -1.437500 1.875000 -4.750000 +v -1.437500 2.000000 -4.750000 +v -1.437500 1.875000 -5.250000 +v -1.437500 2.000000 -5.250000 +v -0.937500 1.875000 -4.750000 +v -0.937500 2.000000 -4.750000 +v -0.937500 1.875000 -5.250000 +v -0.937500 2.000000 -5.250000 +v -1.437500 1.875000 -5.125000 +v -1.437500 1.875000 -4.875000 +v -1.437500 2.000000 -4.875000 +v -1.437500 2.000000 -5.125000 +v -0.937500 1.875000 -4.875000 +v -0.937500 1.875000 -5.125000 +v -0.937500 2.000000 -5.125000 +v -0.937500 2.000000 -4.875000 +v -1.062500 1.875000 -5.250000 +v -1.312500 1.875000 -5.250000 +v -1.312500 2.000000 -5.250000 +v -1.062500 2.000000 -5.250000 +v -1.312500 1.875000 -4.750000 +v -1.062500 1.875000 -4.750000 +v -1.062500 2.000000 -4.750000 +v -1.312500 2.000000 -4.750000 +v -1.312500 2.000000 -5.125000 +v -1.062500 2.000000 -5.125000 +v -1.312500 2.000000 -4.875000 +v -1.062500 2.000000 -4.875000 +v -1.062500 1.875000 -5.125000 +v -1.312500 1.875000 -5.125000 +v -1.062500 1.875000 -4.875000 +v -1.312500 1.875000 -4.875000 +v -1.437500 1.125000 -4.875000 +v -1.437500 1.125000 -4.750000 +v -1.312500 1.125000 -5.250000 +v -1.437500 1.125000 -5.250000 +v -1.437500 1.125000 -5.125000 +v -1.312500 1.125000 -5.125000 +v -1.312500 1.125000 -4.875000 +v -1.312500 1.125000 -4.750000 +v -1.437500 1.875000 -3.750000 +v -1.437500 2.000000 -3.750000 +v -1.437500 1.875000 -4.250000 +v -1.437500 2.000000 -4.250000 +v -0.937500 1.875000 -3.750000 +v -0.937500 2.000000 -3.750000 +v -0.937500 1.875000 -4.250000 +v -0.937500 2.000000 -4.250000 +v -1.437500 1.875000 -4.125000 +v -1.437500 1.875000 -3.875000 +v -1.437500 2.000000 -3.875000 +v -1.437500 2.000000 -4.125000 +v -0.937500 1.875000 -3.875000 +v -0.937500 1.875000 -4.125000 +v -0.937500 2.000000 -4.125000 +v -0.937500 2.000000 -3.875000 +v -1.062500 1.875000 -4.250000 +v -1.312500 1.875000 -4.250000 +v -1.312500 2.000000 -4.250000 +v -1.062500 2.000000 -4.250000 +v -1.312500 1.875000 -3.750000 +v -1.062500 1.875000 -3.750000 +v -1.062500 2.000000 -3.750000 +v -1.312500 2.000000 -3.750000 +v -1.312500 2.000000 -4.125000 +v -1.062500 2.000000 -4.125000 +v -1.312500 2.000000 -3.875000 +v -1.062500 2.000000 -3.875000 +v -1.062500 1.875000 -4.125000 +v -1.312500 1.875000 -4.125000 +v -1.062500 1.875000 -3.875000 +v -1.312500 1.875000 -3.875000 +v -1.437500 1.125000 -3.875000 +v -1.437500 1.125000 -3.750000 +v -1.312500 1.125000 -4.250000 +v -1.437500 1.125000 -4.250000 +v -1.437500 1.125000 -4.125000 +v -1.312500 1.125000 -4.125000 +v -1.312500 1.125000 -3.875000 +v -1.312500 1.125000 -3.750000 +v -1.437500 1.875000 -2.750000 +v -1.437500 2.000000 -2.750000 +v -1.437500 1.875000 -3.250000 +v -1.437500 2.000000 -3.250000 +v -0.937500 1.875000 -2.750000 +v -0.937500 2.000000 -2.750000 +v -0.937500 1.875000 -3.250000 +v -0.937500 2.000000 -3.250000 +v -1.437500 1.875000 -3.125000 +v -1.437500 1.875000 -2.875000 +v -1.437500 2.000000 -2.875000 +v -1.437500 2.000000 -3.125000 +v -0.937500 1.875000 -2.875000 +v -0.937500 1.875000 -3.125000 +v -0.937500 2.000000 -3.125000 +v -0.937500 2.000000 -2.875000 +v -1.062500 1.875000 -3.250000 +v -1.312500 1.875000 -3.250000 +v -1.312500 2.000000 -3.250000 +v -1.062500 2.000000 -3.250000 +v -1.312500 1.875000 -2.750000 +v -1.062500 1.875000 -2.750000 +v -1.062500 2.000000 -2.750000 +v -1.312500 2.000000 -2.750000 +v -1.312500 2.000000 -3.125000 +v -1.062500 2.000000 -3.125000 +v -1.312500 2.000000 -2.875000 +v -1.062500 2.000000 -2.875000 +v -1.062500 1.875000 -3.125000 +v -1.312500 1.875000 -3.125000 +v -1.062500 1.875000 -2.875000 +v -1.312500 1.875000 -2.875000 +v -1.437500 1.125000 -2.875000 +v -1.437500 1.125000 -2.750000 +v -1.312500 1.125000 -3.250000 +v -1.437500 1.125000 -3.250000 +v -1.437500 1.125000 -3.125000 +v -1.312500 1.125000 -3.125000 +v -1.312500 1.125000 -2.875000 +v -1.312500 1.125000 -2.750000 +v -1.437500 1.875000 -1.750000 +v -1.437500 2.000000 -1.750000 +v -1.437500 1.875000 -2.250000 +v -1.437500 2.000000 -2.250000 +v -0.937500 1.875000 -1.750000 +v -0.937500 2.000000 -1.750000 +v -0.937500 1.875000 -2.250000 +v -0.937500 2.000000 -2.250000 +v -1.437500 1.875000 -2.125000 +v -1.437500 1.875000 -1.875000 +v -1.437500 2.000000 -1.875000 +v -1.437500 2.000000 -2.125000 +v -0.937500 1.875000 -1.875000 +v -0.937500 1.875000 -2.125000 +v -0.937500 2.000000 -2.125000 +v -0.937500 2.000000 -1.875000 +v -1.062500 1.875000 -2.250000 +v -1.312500 1.875000 -2.250000 +v -1.312500 2.000000 -2.250000 +v -1.062500 2.000000 -2.250000 +v -1.312500 1.875000 -1.750000 +v -1.062500 1.875000 -1.750000 +v -1.062500 2.000000 -1.750000 +v -1.312500 2.000000 -1.750000 +v -1.312500 2.000000 -2.125000 +v -1.062500 2.000000 -2.125000 +v -1.312500 2.000000 -1.875000 +v -1.062500 2.000000 -1.875000 +v -1.062500 1.875000 -2.125000 +v -1.312500 1.875000 -2.125000 +v -1.062500 1.875000 -1.875000 +v -1.312500 1.875000 -1.875000 +v -1.437500 1.125000 -1.875000 +v -1.437500 1.125000 -1.750000 +v -1.312500 1.125000 -2.250000 +v -1.437500 1.125000 -2.250000 +v -1.437500 1.125000 -2.125000 +v -1.312500 1.125000 -2.125000 +v -1.312500 1.125000 -1.875000 +v -1.312500 1.125000 -1.750000 +v -1.437500 1.875000 -0.750000 +v -1.437500 2.000000 -0.750000 +v -1.437500 1.875000 -1.250000 +v -1.437500 2.000000 -1.250000 +v -0.937500 1.875000 -0.750000 +v -0.937500 2.000000 -0.750000 +v -0.937500 1.875000 -1.250000 +v -0.937500 2.000000 -1.250000 +v -1.437500 1.875000 -1.125000 +v -1.437500 1.875000 -0.875000 +v -1.437500 2.000000 -0.875000 +v -1.437500 2.000000 -1.125000 +v -0.937500 1.875000 -0.875000 +v -0.937500 1.875000 -1.125000 +v -0.937500 2.000000 -1.125000 +v -0.937500 2.000000 -0.875000 +v -1.062500 1.875000 -1.250000 +v -1.312500 1.875000 -1.250000 +v -1.312500 2.000000 -1.250000 +v -1.062500 2.000000 -1.250000 +v -1.312500 1.875000 -0.750000 +v -1.062500 1.875000 -0.750000 +v -1.062500 2.000000 -0.750000 +v -1.312500 2.000000 -0.750000 +v -1.312500 2.000000 -1.125000 +v -1.062500 2.000000 -1.125000 +v -1.312500 2.000000 -0.875000 +v -1.062500 2.000000 -0.875000 +v -1.062500 1.875000 -1.125000 +v -1.312500 1.875000 -1.125000 +v -1.062500 1.875000 -0.875000 +v -1.312500 1.875000 -0.875000 +v -1.437500 1.125000 -0.875000 +v -1.437500 1.125000 -0.750000 +v -1.312500 1.125000 -1.250000 +v -1.437500 1.125000 -1.250000 +v -1.437500 1.125000 -1.125000 +v -1.312500 1.125000 -1.125000 +v -1.312500 1.125000 -0.875000 +v -1.312500 1.125000 -0.750000 +v -1.437500 1.875000 0.250000 +v -1.437500 2.000000 0.250000 +v -1.437500 1.875000 -0.250000 +v -1.437500 2.000000 -0.250000 +v -0.937500 1.875000 0.250000 +v -0.937500 2.000000 0.250000 +v -0.937500 1.875000 -0.250000 +v -0.937500 2.000000 -0.250000 +v -1.437500 1.875000 -0.125000 +v -1.437500 1.875000 0.125000 +v -1.437500 2.000000 0.125000 +v -1.437500 2.000000 -0.125000 +v -0.937500 1.875000 0.125000 +v -0.937500 1.875000 -0.125000 +v -0.937500 2.000000 -0.125000 +v -0.937500 2.000000 0.125000 +v -1.062500 1.875000 -0.250000 +v -1.312500 1.875000 -0.250000 +v -1.312500 2.000000 -0.250000 +v -1.062500 2.000000 -0.250000 +v -1.312500 1.875000 0.250000 +v -1.062500 1.875000 0.250000 +v -1.062500 2.000000 0.250000 +v -1.312500 2.000000 0.250000 +v -1.312500 2.000000 -0.125000 +v -1.062500 2.000000 -0.125000 +v -1.312500 2.000000 0.125000 +v -1.062500 2.000000 0.125000 +v -1.062500 1.875000 -0.125000 +v -1.312500 1.875000 -0.125000 +v -1.062500 1.875000 0.125000 +v -1.312500 1.875000 0.125000 +v -1.437500 1.125000 0.125000 +v -1.437500 1.125000 0.250000 +v -1.312500 1.125000 -0.250000 +v -1.437500 1.125000 -0.250000 +v -1.437500 1.125000 -0.125000 +v -1.312500 1.125000 -0.125000 +v -1.312500 1.125000 0.125000 +v -1.312500 1.125000 0.250000 +v -1.437500 1.875000 1.250000 +v -1.437500 2.000000 1.250000 +v -1.437500 1.875000 0.750000 +v -1.437500 2.000000 0.750000 +v -0.937500 1.875000 1.250000 +v -0.937500 2.000000 1.250000 +v -0.937500 1.875000 0.750000 +v -0.937500 2.000000 0.750000 +v -1.437500 1.875000 0.875000 +v -1.437500 1.875000 1.125000 +v -1.437500 2.000000 1.125000 +v -1.437500 2.000000 0.875000 +v -0.937500 1.875000 1.125000 +v -0.937500 1.875000 0.875000 +v -0.937500 2.000000 0.875000 +v -0.937500 2.000000 1.125000 +v -1.062500 1.875000 0.750000 +v -1.312500 1.875000 0.750000 +v -1.312500 2.000000 0.750000 +v -1.062500 2.000000 0.750000 +v -1.312500 1.875000 1.250000 +v -1.062500 1.875000 1.250000 +v -1.062500 2.000000 1.250000 +v -1.312500 2.000000 1.250000 +v -1.312500 2.000000 0.875000 +v -1.062500 2.000000 0.875000 +v -1.312500 2.000000 1.125000 +v -1.062500 2.000000 1.125000 +v -1.062500 1.875000 0.875000 +v -1.312500 1.875000 0.875000 +v -1.062500 1.875000 1.125000 +v -1.312500 1.875000 1.125000 +v -1.437500 1.125000 1.125000 +v -1.437500 1.125000 1.250000 +v -1.312500 1.125000 0.750000 +v -1.437500 1.125000 0.750000 +v -1.437500 1.125000 0.875000 +v -1.312500 1.125000 0.875000 +v -1.312500 1.125000 1.125000 +v -1.312500 1.125000 1.250000 +v -1.437500 1.875000 2.250000 +v -1.437500 2.000000 2.250000 +v -1.437500 1.875000 1.750000 +v -1.437500 2.000000 1.750000 +v -0.937500 1.875000 2.250000 +v -0.937500 2.000000 2.250000 +v -0.937500 1.875000 1.750000 +v -0.937500 2.000000 1.750000 +v -1.437500 1.875000 1.875000 +v -1.437500 1.875000 2.125000 +v -1.437500 2.000000 2.125000 +v -1.437500 2.000000 1.875000 +v -0.937500 1.875000 2.125000 +v -0.937500 1.875000 1.875000 +v -0.937500 2.000000 1.875000 +v -0.937500 2.000000 2.125000 +v -1.062500 1.875000 1.750000 +v -1.312500 1.875000 1.750000 +v -1.312500 2.000000 1.750000 +v -1.062500 2.000000 1.750000 +v -1.312500 1.875000 2.250000 +v -1.062500 1.875000 2.250000 +v -1.062500 2.000000 2.250000 +v -1.312500 2.000000 2.250000 +v -1.312500 2.000000 1.875000 +v -1.062500 2.000000 1.875000 +v -1.312500 2.000000 2.125000 +v -1.062500 2.000000 2.125000 +v -1.062500 1.875000 1.875000 +v -1.312500 1.875000 1.875000 +v -1.062500 1.875000 2.125000 +v -1.312500 1.875000 2.125000 +v -1.437500 1.125000 2.125000 +v -1.437500 1.125000 2.250000 +v -1.312500 1.125000 1.750000 +v -1.437500 1.125000 1.750000 +v -1.437500 1.125000 1.875000 +v -1.312500 1.125000 1.875000 +v -1.312500 1.125000 2.125000 +v -1.312500 1.125000 2.250000 +v -1.437500 1.875000 3.250000 +v -1.437500 2.000000 3.250000 +v -1.437500 1.875000 2.750000 +v -1.437500 2.000000 2.750000 +v -0.937500 1.875000 3.250000 +v -0.937500 2.000000 3.250000 +v -0.937500 1.875000 2.750000 +v -0.937500 2.000000 2.750000 +v -1.437500 1.875000 2.875000 +v -1.437500 1.875000 3.125000 +v -1.437500 2.000000 3.125000 +v -1.437500 2.000000 2.875000 +v -0.937500 1.875000 3.125000 +v -0.937500 1.875000 2.875000 +v -0.937500 2.000000 2.875000 +v -0.937500 2.000000 3.125000 +v -1.062500 1.875000 2.750000 +v -1.312500 1.875000 2.750000 +v -1.312500 2.000000 2.750000 +v -1.062500 2.000000 2.750000 +v -1.312500 1.875000 3.250000 +v -1.062500 1.875000 3.250000 +v -1.062500 2.000000 3.250000 +v -1.312500 2.000000 3.250000 +v -1.312500 2.000000 2.875000 +v -1.062500 2.000000 2.875000 +v -1.312500 2.000000 3.125000 +v -1.062500 2.000000 3.125000 +v -1.062500 1.875000 2.875000 +v -1.312500 1.875000 2.875000 +v -1.062500 1.875000 3.125000 +v -1.312500 1.875000 3.125000 +v -1.437500 1.125000 3.125000 +v -1.437500 1.125000 3.250000 +v -1.312500 1.125000 2.750000 +v -1.437500 1.125000 2.750000 +v -1.437500 1.125000 2.875000 +v -1.312500 1.125000 2.875000 +v -1.312500 1.125000 3.125000 +v -1.312500 1.125000 3.250000 +v -1.437500 1.875000 4.250000 +v -1.437500 2.000000 4.250000 +v -1.437500 1.875000 3.750000 +v -1.437500 2.000000 3.750000 +v -0.937500 1.875000 4.250000 +v -0.937500 2.000000 4.250000 +v -0.937500 1.875000 3.750000 +v -0.937500 2.000000 3.750000 +v -1.437500 1.875000 3.875000 +v -1.437500 1.875000 4.125000 +v -1.437500 2.000000 4.125000 +v -1.437500 2.000000 3.875000 +v -0.937500 1.875000 4.125000 +v -0.937500 1.875000 3.875000 +v -0.937500 2.000000 3.875000 +v -0.937500 2.000000 4.125000 +v -1.062500 1.875000 3.750000 +v -1.312500 1.875000 3.750000 +v -1.312500 2.000000 3.750000 +v -1.062500 2.000000 3.750000 +v -1.312500 1.875000 4.250000 +v -1.062500 1.875000 4.250000 +v -1.062500 2.000000 4.250000 +v -1.312500 2.000000 4.250000 +v -1.312500 2.000000 3.875000 +v -1.062500 2.000000 3.875000 +v -1.312500 2.000000 4.125000 +v -1.062500 2.000000 4.125000 +v -1.062500 1.875000 3.875000 +v -1.312500 1.875000 3.875000 +v -1.062500 1.875000 4.125000 +v -1.312500 1.875000 4.125000 +v -1.437500 1.125000 4.125000 +v -1.437500 1.125000 4.250000 +v -1.312500 1.125000 3.750000 +v -1.437500 1.125000 3.750000 +v -1.437500 1.125000 3.875000 +v -1.312500 1.125000 3.875000 +v -1.312500 1.125000 4.125000 +v -1.312500 1.125000 4.250000 +v -1.437500 1.875000 5.250000 +v -1.437500 2.000000 5.250000 +v -1.437500 1.875000 4.750000 +v -1.437500 2.000000 4.750000 +v -0.937500 1.875000 5.250000 +v -0.937500 2.000000 5.250000 +v -0.937500 1.875000 4.750000 +v -0.937500 2.000000 4.750000 +v -1.437500 1.875000 4.875000 +v -1.437500 1.875000 5.125000 +v -1.437500 2.000000 5.125000 +v -1.437500 2.000000 4.875000 +v -0.937500 1.875000 5.125000 +v -0.937500 1.875000 4.875000 +v -0.937500 2.000000 4.875000 +v -0.937500 2.000000 5.125000 +v -1.062500 1.875000 4.750000 +v -1.312500 1.875000 4.750000 +v -1.312500 2.000000 4.750000 +v -1.062500 2.000000 4.750000 +v -1.312500 1.875000 5.250000 +v -1.062500 1.875000 5.250000 +v -1.062500 2.000000 5.250000 +v -1.312500 2.000000 5.250000 +v -1.312500 2.000000 4.875000 +v -1.062500 2.000000 4.875000 +v -1.312500 2.000000 5.125000 +v -1.062500 2.000000 5.125000 +v -1.062500 1.875000 4.875000 +v -1.312500 1.875000 4.875000 +v -1.062500 1.875000 5.125000 +v -1.312500 1.875000 5.125000 +v -1.437500 1.125000 5.125000 +v -1.437500 1.125000 5.250000 +v -1.312500 1.125000 4.750000 +v -1.437500 1.125000 4.750000 +v -1.437500 1.125000 4.875000 +v -1.312500 1.125000 4.875000 +v -1.312500 1.125000 5.125000 +v -1.312500 1.125000 5.250000 +v 1.437500 1.875000 -4.750000 +v 1.437500 2.000000 -4.750000 +v 1.437500 1.875000 -5.250000 +v 1.437500 2.000000 -5.250000 +v 0.937500 1.875000 -4.750000 +v 0.937500 2.000000 -4.750000 +v 0.937500 1.875000 -5.250000 +v 0.937500 2.000000 -5.250000 +v 1.437500 1.875000 -5.125000 +v 1.437500 1.875000 -4.875000 +v 1.437500 2.000000 -4.875000 +v 1.437500 2.000000 -5.125000 +v 0.937500 1.875000 -4.875000 +v 0.937500 1.875000 -5.125000 +v 0.937500 2.000000 -5.125000 +v 0.937500 2.000000 -4.875000 +v 1.062500 1.875000 -5.250000 +v 1.312500 1.875000 -5.250000 +v 1.312500 2.000000 -5.250000 +v 1.062500 2.000000 -5.250000 +v 1.312500 1.875000 -4.750000 +v 1.062500 1.875000 -4.750000 +v 1.062500 2.000000 -4.750000 +v 1.312500 2.000000 -4.750000 +v 1.312500 2.000000 -5.125000 +v 1.062500 2.000000 -5.125000 +v 1.312500 2.000000 -4.875000 +v 1.062500 2.000000 -4.875000 +v 1.062500 1.875000 -5.125000 +v 1.312500 1.875000 -5.125000 +v 1.062500 1.875000 -4.875000 +v 1.312500 1.875000 -4.875000 +v 1.437500 1.125000 -4.875000 +v 1.437500 1.125000 -4.750000 +v 1.312500 1.125000 -5.250000 +v 1.437500 1.125000 -5.250000 +v 1.437500 1.125000 -5.125000 +v 1.312500 1.125000 -5.125000 +v 1.312500 1.125000 -4.875000 +v 1.312500 1.125000 -4.750000 +v 1.437500 1.875000 -3.750000 +v 1.437500 2.000000 -3.750000 +v 1.437500 1.875000 -4.250000 +v 1.437500 2.000000 -4.250000 +v 0.937500 1.875000 -3.750000 +v 0.937500 2.000000 -3.750000 +v 0.937500 1.875000 -4.250000 +v 0.937500 2.000000 -4.250000 +v 1.437500 1.875000 -4.125000 +v 1.437500 1.875000 -3.875000 +v 1.437500 2.000000 -3.875000 +v 1.437500 2.000000 -4.125000 +v 0.937500 1.875000 -3.875000 +v 0.937500 1.875000 -4.125000 +v 0.937500 2.000000 -4.125000 +v 0.937500 2.000000 -3.875000 +v 1.062500 1.875000 -4.250000 +v 1.312500 1.875000 -4.250000 +v 1.312500 2.000000 -4.250000 +v 1.062500 2.000000 -4.250000 +v 1.312500 1.875000 -3.750000 +v 1.062500 1.875000 -3.750000 +v 1.062500 2.000000 -3.750000 +v 1.312500 2.000000 -3.750000 +v 1.312500 2.000000 -4.125000 +v 1.062500 2.000000 -4.125000 +v 1.312500 2.000000 -3.875000 +v 1.062500 2.000000 -3.875000 +v 1.062500 1.875000 -4.125000 +v 1.312500 1.875000 -4.125000 +v 1.062500 1.875000 -3.875000 +v 1.312500 1.875000 -3.875000 +v 1.437500 1.125000 -3.875000 +v 1.437500 1.125000 -3.750000 +v 1.312500 1.125000 -4.250000 +v 1.437500 1.125000 -4.250000 +v 1.437500 1.125000 -4.125000 +v 1.312500 1.125000 -4.125000 +v 1.312500 1.125000 -3.875000 +v 1.312500 1.125000 -3.750000 +v 1.437500 1.875000 -2.750000 +v 1.437500 2.000000 -2.750000 +v 1.437500 1.875000 -3.250000 +v 1.437500 2.000000 -3.250000 +v 0.937500 1.875000 -2.750000 +v 0.937500 2.000000 -2.750000 +v 0.937500 1.875000 -3.250000 +v 0.937500 2.000000 -3.250000 +v 1.437500 1.875000 -3.125000 +v 1.437500 1.875000 -2.875000 +v 1.437500 2.000000 -2.875000 +v 1.437500 2.000000 -3.125000 +v 0.937500 1.875000 -2.875000 +v 0.937500 1.875000 -3.125000 +v 0.937500 2.000000 -3.125000 +v 0.937500 2.000000 -2.875000 +v 1.062500 1.875000 -3.250000 +v 1.312500 1.875000 -3.250000 +v 1.312500 2.000000 -3.250000 +v 1.062500 2.000000 -3.250000 +v 1.312500 1.875000 -2.750000 +v 1.062500 1.875000 -2.750000 +v 1.062500 2.000000 -2.750000 +v 1.312500 2.000000 -2.750000 +v 1.312500 2.000000 -3.125000 +v 1.062500 2.000000 -3.125000 +v 1.312500 2.000000 -2.875000 +v 1.062500 2.000000 -2.875000 +v 1.062500 1.875000 -3.125000 +v 1.312500 1.875000 -3.125000 +v 1.062500 1.875000 -2.875000 +v 1.312500 1.875000 -2.875000 +v 1.437500 1.125000 -2.875000 +v 1.437500 1.125000 -2.750000 +v 1.312500 1.125000 -3.250000 +v 1.437500 1.125000 -3.250000 +v 1.437500 1.125000 -3.125000 +v 1.312500 1.125000 -3.125000 +v 1.312500 1.125000 -2.875000 +v 1.312500 1.125000 -2.750000 +v 1.437500 1.875000 -1.750000 +v 1.437500 2.000000 -1.750000 +v 1.437500 1.875000 -2.250000 +v 1.437500 2.000000 -2.250000 +v 0.937500 1.875000 -1.750000 +v 0.937500 2.000000 -1.750000 +v 0.937500 1.875000 -2.250000 +v 0.937500 2.000000 -2.250000 +v 1.437500 1.875000 -2.125000 +v 1.437500 1.875000 -1.875000 +v 1.437500 2.000000 -1.875000 +v 1.437500 2.000000 -2.125000 +v 0.937500 1.875000 -1.875000 +v 0.937500 1.875000 -2.125000 +v 0.937500 2.000000 -2.125000 +v 0.937500 2.000000 -1.875000 +v 1.062500 1.875000 -2.250000 +v 1.312500 1.875000 -2.250000 +v 1.312500 2.000000 -2.250000 +v 1.062500 2.000000 -2.250000 +v 1.312500 1.875000 -1.750000 +v 1.062500 1.875000 -1.750000 +v 1.062500 2.000000 -1.750000 +v 1.312500 2.000000 -1.750000 +v 1.312500 2.000000 -2.125000 +v 1.062500 2.000000 -2.125000 +v 1.312500 2.000000 -1.875000 +v 1.062500 2.000000 -1.875000 +v 1.062500 1.875000 -2.125000 +v 1.312500 1.875000 -2.125000 +v 1.062500 1.875000 -1.875000 +v 1.312500 1.875000 -1.875000 +v 1.437500 1.125000 -1.875000 +v 1.437500 1.125000 -1.750000 +v 1.312500 1.125000 -2.250000 +v 1.437500 1.125000 -2.250000 +v 1.437500 1.125000 -2.125000 +v 1.312500 1.125000 -2.125000 +v 1.312500 1.125000 -1.875000 +v 1.312500 1.125000 -1.750000 +v 1.437500 1.875000 -0.750000 +v 1.437500 2.000000 -0.750000 +v 1.437500 1.875000 -1.250000 +v 1.437500 2.000000 -1.250000 +v 0.937500 1.875000 -0.750000 +v 0.937500 2.000000 -0.750000 +v 0.937500 1.875000 -1.250000 +v 0.937500 2.000000 -1.250000 +v 1.437500 1.875000 -1.125000 +v 1.437500 1.875000 -0.875000 +v 1.437500 2.000000 -0.875000 +v 1.437500 2.000000 -1.125000 +v 0.937500 1.875000 -0.875000 +v 0.937500 1.875000 -1.125000 +v 0.937500 2.000000 -1.125000 +v 0.937500 2.000000 -0.875000 +v 1.062500 1.875000 -1.250000 +v 1.312500 1.875000 -1.250000 +v 1.312500 2.000000 -1.250000 +v 1.062500 2.000000 -1.250000 +v 1.312500 1.875000 -0.750000 +v 1.062500 1.875000 -0.750000 +v 1.062500 2.000000 -0.750000 +v 1.312500 2.000000 -0.750000 +v 1.312500 2.000000 -1.125000 +v 1.062500 2.000000 -1.125000 +v 1.312500 2.000000 -0.875000 +v 1.062500 2.000000 -0.875000 +v 1.062500 1.875000 -1.125000 +v 1.312500 1.875000 -1.125000 +v 1.062500 1.875000 -0.875000 +v 1.312500 1.875000 -0.875000 +v 1.437500 1.125000 -0.875000 +v 1.437500 1.125000 -0.750000 +v 1.312500 1.125000 -1.250000 +v 1.437500 1.125000 -1.250000 +v 1.437500 1.125000 -1.125000 +v 1.312500 1.125000 -1.125000 +v 1.312500 1.125000 -0.875000 +v 1.312500 1.125000 -0.750000 +v 1.437500 1.875000 0.250000 +v 1.437500 2.000000 0.250000 +v 1.437500 1.875000 -0.250000 +v 1.437500 2.000000 -0.250000 +v 0.937500 1.875000 0.250000 +v 0.937500 2.000000 0.250000 +v 0.937500 1.875000 -0.250000 +v 0.937500 2.000000 -0.250000 +v 1.437500 1.875000 -0.125000 +v 1.437500 1.875000 0.125000 +v 1.437500 2.000000 0.125000 +v 1.437500 2.000000 -0.125000 +v 0.937500 1.875000 0.125000 +v 0.937500 1.875000 -0.125000 +v 0.937500 2.000000 -0.125000 +v 0.937500 2.000000 0.125000 +v 1.062500 1.875000 -0.250000 +v 1.312500 1.875000 -0.250000 +v 1.312500 2.000000 -0.250000 +v 1.062500 2.000000 -0.250000 +v 1.312500 1.875000 0.250000 +v 1.062500 1.875000 0.250000 +v 1.062500 2.000000 0.250000 +v 1.312500 2.000000 0.250000 +v 1.312500 2.000000 -0.125000 +v 1.062500 2.000000 -0.125000 +v 1.312500 2.000000 0.125000 +v 1.062500 2.000000 0.125000 +v 1.062500 1.875000 -0.125000 +v 1.312500 1.875000 -0.125000 +v 1.062500 1.875000 0.125000 +v 1.312500 1.875000 0.125000 +v 1.437500 1.125000 0.125000 +v 1.437500 1.125000 0.250000 +v 1.312500 1.125000 -0.250000 +v 1.437500 1.125000 -0.250000 +v 1.437500 1.125000 -0.125000 +v 1.312500 1.125000 -0.125000 +v 1.312500 1.125000 0.125000 +v 1.312500 1.125000 0.250000 +v 1.437500 1.875000 1.250000 +v 1.437500 2.000000 1.250000 +v 1.437500 1.875000 0.750000 +v 1.437500 2.000000 0.750000 +v 0.937500 1.875000 1.250000 +v 0.937500 2.000000 1.250000 +v 0.937500 1.875000 0.750000 +v 0.937500 2.000000 0.750000 +v 1.437500 1.875000 0.875000 +v 1.437500 1.875000 1.125000 +v 1.437500 2.000000 1.125000 +v 1.437500 2.000000 0.875000 +v 0.937500 1.875000 1.125000 +v 0.937500 1.875000 0.875000 +v 0.937500 2.000000 0.875000 +v 0.937500 2.000000 1.125000 +v 1.062500 1.875000 0.750000 +v 1.312500 1.875000 0.750000 +v 1.312500 2.000000 0.750000 +v 1.062500 2.000000 0.750000 +v 1.312500 1.875000 1.250000 +v 1.062500 1.875000 1.250000 +v 1.062500 2.000000 1.250000 +v 1.312500 2.000000 1.250000 +v 1.312500 2.000000 0.875000 +v 1.062500 2.000000 0.875000 +v 1.312500 2.000000 1.125000 +v 1.062500 2.000000 1.125000 +v 1.062500 1.875000 0.875000 +v 1.312500 1.875000 0.875000 +v 1.062500 1.875000 1.125000 +v 1.312500 1.875000 1.125000 +v 1.437500 1.125000 1.125000 +v 1.437500 1.125000 1.250000 +v 1.312500 1.125000 0.750000 +v 1.437500 1.125000 0.750000 +v 1.437500 1.125000 0.875000 +v 1.312500 1.125000 0.875000 +v 1.312500 1.125000 1.125000 +v 1.312500 1.125000 1.250000 +v 1.437500 1.875000 2.250000 +v 1.437500 2.000000 2.250000 +v 1.437500 1.875000 1.750000 +v 1.437500 2.000000 1.750000 +v 0.937500 1.875000 2.250000 +v 0.937500 2.000000 2.250000 +v 0.937500 1.875000 1.750000 +v 0.937500 2.000000 1.750000 +v 1.437500 1.875000 1.875000 +v 1.437500 1.875000 2.125000 +v 1.437500 2.000000 2.125000 +v 1.437500 2.000000 1.875000 +v 0.937500 1.875000 2.125000 +v 0.937500 1.875000 1.875000 +v 0.937500 2.000000 1.875000 +v 0.937500 2.000000 2.125000 +v 1.062500 1.875000 1.750000 +v 1.312500 1.875000 1.750000 +v 1.312500 2.000000 1.750000 +v 1.062500 2.000000 1.750000 +v 1.312500 1.875000 2.250000 +v 1.062500 1.875000 2.250000 +v 1.062500 2.000000 2.250000 +v 1.312500 2.000000 2.250000 +v 1.312500 2.000000 1.875000 +v 1.062500 2.000000 1.875000 +v 1.312500 2.000000 2.125000 +v 1.062500 2.000000 2.125000 +v 1.062500 1.875000 1.875000 +v 1.312500 1.875000 1.875000 +v 1.062500 1.875000 2.125000 +v 1.312500 1.875000 2.125000 +v 1.437500 1.125000 2.125000 +v 1.437500 1.125000 2.250000 +v 1.312500 1.125000 1.750000 +v 1.437500 1.125000 1.750000 +v 1.437500 1.125000 1.875000 +v 1.312500 1.125000 1.875000 +v 1.312500 1.125000 2.125000 +v 1.312500 1.125000 2.250000 +v 1.437500 1.875000 3.250000 +v 1.437500 2.000000 3.250000 +v 1.437500 1.875000 2.750000 +v 1.437500 2.000000 2.750000 +v 0.937500 1.875000 3.250000 +v 0.937500 2.000000 3.250000 +v 0.937500 1.875000 2.750000 +v 0.937500 2.000000 2.750000 +v 1.437500 1.875000 2.875000 +v 1.437500 1.875000 3.125000 +v 1.437500 2.000000 3.125000 +v 1.437500 2.000000 2.875000 +v 0.937500 1.875000 3.125000 +v 0.937500 1.875000 2.875000 +v 0.937500 2.000000 2.875000 +v 0.937500 2.000000 3.125000 +v 1.062500 1.875000 2.750000 +v 1.312500 1.875000 2.750000 +v 1.312500 2.000000 2.750000 +v 1.062500 2.000000 2.750000 +v 1.312500 1.875000 3.250000 +v 1.062500 1.875000 3.250000 +v 1.062500 2.000000 3.250000 +v 1.312500 2.000000 3.250000 +v 1.312500 2.000000 2.875000 +v 1.062500 2.000000 2.875000 +v 1.312500 2.000000 3.125000 +v 1.062500 2.000000 3.125000 +v 1.062500 1.875000 2.875000 +v 1.312500 1.875000 2.875000 +v 1.062500 1.875000 3.125000 +v 1.312500 1.875000 3.125000 +v 1.437500 1.125000 3.125000 +v 1.437500 1.125000 3.250000 +v 1.312500 1.125000 2.750000 +v 1.437500 1.125000 2.750000 +v 1.437500 1.125000 2.875000 +v 1.312500 1.125000 2.875000 +v 1.312500 1.125000 3.125000 +v 1.312500 1.125000 3.250000 +v 1.437500 1.875000 4.250000 +v 1.437500 2.000000 4.250000 +v 1.437500 1.875000 3.750000 +v 1.437500 2.000000 3.750000 +v 0.937500 1.875000 4.250000 +v 0.937500 2.000000 4.250000 +v 0.937500 1.875000 3.750000 +v 0.937500 2.000000 3.750000 +v 1.437500 1.875000 3.875000 +v 1.437500 1.875000 4.125000 +v 1.437500 2.000000 4.125000 +v 1.437500 2.000000 3.875000 +v 0.937500 1.875000 4.125000 +v 0.937500 1.875000 3.875000 +v 0.937500 2.000000 3.875000 +v 0.937500 2.000000 4.125000 +v 1.062500 1.875000 3.750000 +v 1.312500 1.875000 3.750000 +v 1.312500 2.000000 3.750000 +v 1.062500 2.000000 3.750000 +v 1.312500 1.875000 4.250000 +v 1.062500 1.875000 4.250000 +v 1.062500 2.000000 4.250000 +v 1.312500 2.000000 4.250000 +v 1.312500 2.000000 3.875000 +v 1.062500 2.000000 3.875000 +v 1.312500 2.000000 4.125000 +v 1.062500 2.000000 4.125000 +v 1.062500 1.875000 3.875000 +v 1.312500 1.875000 3.875000 +v 1.062500 1.875000 4.125000 +v 1.312500 1.875000 4.125000 +v 1.437500 1.125000 4.125000 +v 1.437500 1.125000 4.250000 +v 1.312500 1.125000 3.750000 +v 1.437500 1.125000 3.750000 +v 1.437500 1.125000 3.875000 +v 1.312500 1.125000 3.875000 +v 1.312500 1.125000 4.125000 +v 1.312500 1.125000 4.250000 +v 1.437500 1.875000 5.250000 +v 1.437500 2.000000 5.250000 +v 1.437500 1.875000 4.750000 +v 1.437500 2.000000 4.750000 +v 0.937500 1.875000 5.250000 +v 0.937500 2.000000 5.250000 +v 0.937500 1.875000 4.750000 +v 0.937500 2.000000 4.750000 +v 1.437500 1.875000 4.875000 +v 1.437500 1.875000 5.125000 +v 1.437500 2.000000 5.125000 +v 1.437500 2.000000 4.875000 +v 0.937500 1.875000 5.125000 +v 0.937500 1.875000 4.875000 +v 0.937500 2.000000 4.875000 +v 0.937500 2.000000 5.125000 +v 1.062500 1.875000 4.750000 +v 1.312500 1.875000 4.750000 +v 1.312500 2.000000 4.750000 +v 1.062500 2.000000 4.750000 +v 1.312500 1.875000 5.250000 +v 1.062500 1.875000 5.250000 +v 1.062500 2.000000 5.250000 +v 1.312500 2.000000 5.250000 +v 1.312500 2.000000 4.875000 +v 1.062500 2.000000 4.875000 +v 1.312500 2.000000 5.125000 +v 1.062500 2.000000 5.125000 +v 1.062500 1.875000 4.875000 +v 1.312500 1.875000 4.875000 +v 1.062500 1.875000 5.125000 +v 1.312500 1.875000 5.125000 +v 1.437500 1.125000 5.125000 +v 1.437500 1.125000 5.250000 +v 1.312500 1.125000 4.750000 +v 1.437500 1.125000 4.750000 +v 1.437500 1.125000 4.875000 +v 1.312500 1.125000 4.875000 +v 1.312500 1.125000 5.125000 +v 1.312500 1.125000 5.250000 +v 0.122617 2.375000 -5.500900 +v 0.122617 2.625000 -5.500900 +v 0.122617 2.125000 -5.750900 +v 0.122617 2.375000 -5.750900 +v 0.185117 2.375000 -5.500900 +v 0.185117 2.625000 -5.500900 +v 0.185117 2.125000 -5.750900 +v 0.185117 2.375000 -5.750900 +v 0.122617 2.062500 -5.750900 +v 0.122617 2.312500 -5.500900 +v 0.185117 2.062500 -5.750900 +v 0.185117 2.312500 -5.500900 +v -0.127383 2.125000 -5.750900 +v -0.127383 2.375000 -5.500900 +v -0.127383 2.062500 -5.750900 +v -0.127383 2.312500 -5.500900 +v -0.189883 2.125000 -5.750900 +v -0.189883 2.375000 -5.500900 +v -0.189883 2.062500 -5.750900 +v -0.189883 2.312500 -5.500900 +v -0.127383 2.375000 -5.750900 +v -0.127383 2.625000 -5.500900 +v -0.189883 2.375000 -5.750900 +v -0.189883 2.625000 -5.500900 +v 0.122617 2.375000 5.500900 +v 0.122617 2.625000 5.500900 +v 0.122617 2.125000 5.750900 +v 0.122617 2.375000 5.750900 +v 0.185117 2.375000 5.500900 +v 0.185117 2.625000 5.500900 +v 0.185117 2.125000 5.750900 +v 0.185117 2.375000 5.750900 +v 0.122617 2.062500 5.750900 +v 0.122617 2.312500 5.500900 +v 0.185117 2.062500 5.750900 +v 0.185117 2.312500 5.500900 +v -0.127383 2.125000 5.750900 +v -0.127383 2.375000 5.500900 +v -0.127383 2.062500 5.750900 +v -0.127383 2.312500 5.500900 +v -0.189883 2.125000 5.750900 +v -0.189883 2.375000 5.500900 +v -0.189883 2.062500 5.750900 +v -0.189883 2.312500 5.500900 +v -0.127383 2.375000 5.750900 +v -0.127383 2.625000 5.500900 +v -0.189883 2.375000 5.750900 +v -0.189883 2.625000 5.500900 +v -1.555902 1.027951 -3.937500 +v -0.555902 3.027951 -3.937500 +v -1.555902 1.027951 -4.062500 +v -0.555902 3.027951 -4.062500 +v -1.444098 0.972049 -3.937500 +v -0.444098 2.972049 -3.937500 +v -1.444098 0.972049 -4.062500 +v -0.444098 2.972049 -4.062500 +v -1.555902 1.027951 -1.937500 +v -0.555902 3.027951 -1.937500 +v -1.555902 1.027951 -2.062500 +v -0.555902 3.027951 -2.062500 +v -1.444098 0.972049 -1.937500 +v -0.444098 2.972049 -1.937500 +v -1.444098 0.972049 -2.062500 +v -0.444098 2.972049 -2.062500 +v -1.555902 1.027951 0.062500 +v -0.555902 3.027951 0.062500 +v -1.555902 1.027951 -0.062500 +v -0.555902 3.027951 -0.062500 +v -1.444098 0.972049 0.062500 +v -0.444098 2.972049 0.062500 +v -1.444098 0.972049 -0.062500 +v -0.444098 2.972049 -0.062500 +v -1.555902 1.027951 2.062500 +v -0.555902 3.027951 2.062500 +v -1.555902 1.027951 1.937500 +v -0.555902 3.027951 1.937500 +v -1.444098 0.972049 2.062500 +v -0.444098 2.972049 2.062500 +v -1.444098 0.972049 1.937500 +v -0.444098 2.972049 1.937500 +v -1.555902 1.027951 4.062500 +v -0.555902 3.027951 4.062500 +v -1.555902 1.027951 3.937500 +v -0.555902 3.027951 3.937500 +v -1.444098 0.972049 4.062500 +v -0.444098 2.972049 4.062500 +v -1.444098 0.972049 3.937500 +v -0.444098 2.972049 3.937500 +v 1.555902 1.027951 -3.937500 +v 0.555902 3.027951 -3.937500 +v 1.555902 1.027951 -4.062500 +v 0.555902 3.027951 -4.062500 +v 1.444098 0.972049 -3.937500 +v 0.444098 2.972049 -3.937500 +v 1.444098 0.972049 -4.062500 +v 0.444098 2.972049 -4.062500 +v 1.555902 1.027951 -1.937500 +v 0.555902 3.027951 -1.937500 +v 1.555902 1.027951 -2.062500 +v 0.555902 3.027951 -2.062500 +v 1.444098 0.972049 -1.937500 +v 0.444098 2.972049 -1.937500 +v 1.444098 0.972049 -2.062500 +v 0.444098 2.972049 -2.062500 +v 1.555902 1.027951 0.062500 +v 0.555902 3.027951 0.062500 +v 1.555902 1.027951 -0.062500 +v 0.555902 3.027951 -0.062500 +v 1.444098 0.972049 0.062500 +v 0.444098 2.972049 0.062500 +v 1.444098 0.972049 -0.062500 +v 0.444098 2.972049 -0.062500 +v 1.555902 1.027951 2.062500 +v 0.555902 3.027951 2.062500 +v 1.555902 1.027951 1.937500 +v 0.555902 3.027951 1.937500 +v 1.444098 0.972049 2.062500 +v 0.444098 2.972049 2.062500 +v 1.444098 0.972049 1.937500 +v 0.444098 2.972049 1.937500 +v 1.555902 1.027951 4.062500 +v 0.555902 3.027951 4.062500 +v 1.555902 1.027951 3.937500 +v 0.555902 3.027951 3.937500 +v 1.444098 0.972049 4.062500 +v 0.444098 2.972049 4.062500 +v 1.444098 0.972049 3.937500 +v 0.444098 2.972049 3.937500 +v 2.750000 1.000000 4.250000 +v 2.750000 3.000000 4.250000 +v 2.750000 1.000000 3.750000 +v 2.750000 3.000000 3.750000 +v 3.250000 1.000000 4.250000 +v 3.250000 3.000000 4.250000 +v 3.250000 1.000000 3.750000 +v 3.250000 3.000000 3.750000 +v 3.103553 3.353553 3.750000 +v 3.103553 3.353553 4.250000 +v 2.042893 3.707107 3.750000 +v 2.396447 4.060660 3.750000 +v 2.396447 4.060660 4.250000 +v 2.042893 3.707107 4.250000 +v 2.042893 4.207107 3.750000 +v 2.042893 4.207107 4.250000 +v 1.689340 4.060660 4.250000 +v 1.689340 4.060660 3.750000 +v 0.363514 2.734836 3.750000 +v 0.363514 2.734836 4.250000 +v 0.717067 2.381282 4.250000 +v 0.717067 2.381282 3.750000 +v 2.750000 1.000000 2.250000 +v 2.750000 3.000000 2.250000 +v 2.750000 1.000000 1.750000 +v 2.750000 3.000000 1.750000 +v 3.250000 1.000000 2.250000 +v 3.250000 3.000000 2.250000 +v 3.250000 1.000000 1.750000 +v 3.250000 3.000000 1.750000 +v 3.103553 3.353553 1.750000 +v 3.103553 3.353553 2.250000 +v 2.042893 3.707107 1.750000 +v 2.396447 4.060660 1.750000 +v 2.396447 4.060660 2.250000 +v 2.042893 3.707107 2.250000 +v 2.042893 4.207107 1.750000 +v 2.042893 4.207107 2.250000 +v 1.689340 4.060660 2.250000 +v 1.689340 4.060660 1.750000 +v 0.363514 2.734836 1.750000 +v 0.363514 2.734836 2.250000 +v 0.717067 2.381282 2.250000 +v 0.717067 2.381282 1.750000 +v 2.750000 1.000000 0.250000 +v 2.750000 3.000000 0.250000 +v 2.750000 1.000000 -0.250000 +v 2.750000 3.000000 -0.250000 +v 3.250000 1.000000 0.250000 +v 3.250000 3.000000 0.250000 +v 3.250000 1.000000 -0.250000 +v 3.250000 3.000000 -0.250000 +v 3.103553 3.353553 -0.250000 +v 3.103553 3.353553 0.250000 +v 2.042893 3.707107 -0.250000 +v 2.396447 4.060660 -0.250000 +v 2.396447 4.060660 0.250000 +v 2.042893 3.707107 0.250000 +v 2.042893 4.207107 -0.250000 +v 2.042893 4.207107 0.250000 +v 1.689340 4.060660 0.250000 +v 1.689340 4.060660 -0.250000 +v 0.363514 2.734836 -0.250000 +v 0.363514 2.734836 0.250000 +v 0.717067 2.381282 0.250000 +v 0.717067 2.381282 -0.250000 +v 2.750000 1.000000 -1.750000 +v 2.750000 3.000000 -1.750000 +v 2.750000 1.000000 -2.250000 +v 2.750000 3.000000 -2.250000 +v 3.250000 1.000000 -1.750000 +v 3.250000 3.000000 -1.750000 +v 3.250000 1.000000 -2.250000 +v 3.250000 3.000000 -2.250000 +v 3.103553 3.353553 -2.250000 +v 3.103553 3.353553 -1.750000 +v 2.042893 3.707107 -2.250000 +v 2.396447 4.060660 -2.250000 +v 2.396447 4.060660 -1.750000 +v 2.042893 3.707107 -1.750000 +v 2.042893 4.207107 -2.250000 +v 2.042893 4.207107 -1.750000 +v 1.689340 4.060660 -1.750000 +v 1.689340 4.060660 -2.250000 +v 0.363514 2.734836 -2.250000 +v 0.363514 2.734836 -1.750000 +v 0.717067 2.381282 -1.750000 +v 0.717067 2.381282 -2.250000 +v 2.750000 1.000000 -3.750000 +v 2.750000 3.000000 -3.750000 +v 2.750000 1.000000 -4.250000 +v 2.750000 3.000000 -4.250000 +v 3.250000 1.000000 -3.750000 +v 3.250000 3.000000 -3.750000 +v 3.250000 1.000000 -4.250000 +v 3.250000 3.000000 -4.250000 +v 3.103553 3.353553 -4.250000 +v 3.103553 3.353553 -3.750000 +v 2.042893 3.707107 -4.250000 +v 2.396447 4.060660 -4.250000 +v 2.396447 4.060660 -3.750000 +v 2.042893 3.707107 -3.750000 +v 2.042893 4.207107 -4.250000 +v 2.042893 4.207107 -3.750000 +v 1.689340 4.060660 -3.750000 +v 1.689340 4.060660 -4.250000 +v 0.363514 2.734836 -4.250000 +v 0.363514 2.734836 -3.750000 +v 0.717067 2.381282 -3.750000 +v 0.717067 2.381282 -4.250000 +vt 0.280000 0.120130 +vt 0.325714 0.016234 +vt 0.325714 0.120130 +vt 0.860000 0.051948 +vt 0.882857 0.048701 +vt 0.882857 0.051948 +vt 0.371429 0.016234 +vt 0.925714 0.045455 +vt 0.922857 0.019481 +vt 0.925714 0.019481 +vt 0.234286 0.016234 +vt 0.280000 0.016234 +vt 0.737143 0.123377 +vt 0.691429 0.240260 +vt 0.691429 0.123377 +vt 0.685714 0.022727 +vt 0.662857 0.055195 +vt 0.662857 0.022727 +vt 0.645714 0.240260 +vt 0.600000 0.240260 +vt 0.645714 0.123377 +vt 0.554286 0.240260 +vt 0.600000 0.123377 +vt 0.508571 0.240260 +vt 0.554286 0.123377 +vt 0.462857 0.240260 +vt 0.508571 0.123377 +vt 0.417143 0.240260 +vt 0.462857 0.123377 +vt 0.371429 0.240260 +vt 0.417143 0.123377 +vt 0.234286 0.240260 +vt 0.280000 0.123377 +vt 0.280000 0.240260 +vt 0.325714 0.522727 +vt 0.234286 0.470779 +vt 0.325714 0.470779 +vt 0.231429 0.574675 +vt 0.185714 0.522727 +vt 0.231429 0.522727 +vt 0.997143 0.905844 +vt 0.957143 0.853896 +vt 0.997143 0.853896 +vt 0.882857 0.750000 +vt 0.922857 0.801948 +vt 0.882857 0.801948 +vt 0.997143 0.801948 +vt 0.957143 0.750000 +vt 0.997143 0.750000 +vt 0.882857 0.698052 +vt 0.922857 0.750000 +vt 0.957143 0.698052 +vt 0.997143 0.698052 +vt 0.882857 0.853896 +vt 0.922857 0.905844 +vt 0.882857 0.905844 +vt 0.634286 0.055195 +vt 0.662857 0.094156 +vt 0.634286 0.094156 +vt 0.748571 0.051948 +vt 0.771429 0.048701 +vt 0.771429 0.051948 +vt 0.140000 0.522727 +vt 0.094286 0.574675 +vt 0.094286 0.522727 +vt 0.140000 0.574675 +vt 0.185714 0.470779 +vt 0.140000 0.470779 +vt 0.185714 0.418831 +vt 0.140000 0.418831 +vt 0.185714 0.366883 +vt 0.140000 0.366883 +vt 0.185714 0.314935 +vt 0.140000 0.314935 +vt 0.185714 0.262987 +vt 0.140000 0.262987 +vt 0.185714 0.211039 +vt 0.140000 0.211039 +vt 0.185714 0.159091 +vt 0.140000 0.055195 +vt 0.185714 0.003247 +vt 0.185714 0.055195 +vt 0.691429 0.243506 +vt 0.737143 0.360390 +vt 0.691429 0.360390 +vt 0.737143 0.363636 +vt 0.691429 0.467532 +vt 0.691429 0.363636 +vt 0.231429 0.470779 +vt 0.231429 0.418831 +vt 0.231429 0.366883 +vt 0.231429 0.314935 +vt 0.231429 0.262987 +vt 0.231429 0.211039 +vt 0.231429 0.159091 +vt 0.231429 0.003247 +vt 0.231429 0.055195 +vt 0.691429 0.525974 +vt 0.737143 0.577922 +vt 0.691429 0.577922 +vt 0.002857 0.574675 +vt 0.002857 0.522727 +vt 0.094286 0.470779 +vt 0.094286 0.418831 +vt 0.094286 0.366883 +vt 0.094286 0.314935 +vt 0.094286 0.262987 +vt 0.094286 0.211039 +vt 0.140000 0.159091 +vt 0.094286 0.055195 +vt 0.140000 0.003247 +vt 0.371429 0.243506 +vt 0.325714 0.360390 +vt 0.325714 0.243506 +vt 0.417143 0.243506 +vt 0.371429 0.360390 +vt 0.462857 0.243506 +vt 0.417143 0.360390 +vt 0.508571 0.243506 +vt 0.462857 0.360390 +vt 0.554286 0.243506 +vt 0.508571 0.360390 +vt 0.600000 0.243506 +vt 0.554286 0.360390 +vt 0.645714 0.243506 +vt 0.600000 0.360390 +vt 0.645714 0.360390 +vt 0.234286 0.633117 +vt 0.280000 0.581169 +vt 0.280000 0.633117 +vt 0.645714 0.363636 +vt 0.645714 0.467532 +vt 0.600000 0.363636 +vt 0.600000 0.467532 +vt 0.554286 0.363636 +vt 0.554286 0.467532 +vt 0.508571 0.363636 +vt 0.508571 0.467532 +vt 0.462857 0.363636 +vt 0.462857 0.467532 +vt 0.417143 0.363636 +vt 0.417143 0.467532 +vt 0.371429 0.363636 +vt 0.280000 0.467532 +vt 0.234286 0.363636 +vt 0.280000 0.363636 +vt 0.002857 0.470779 +vt 0.002857 0.418831 +vt 0.002857 0.366883 +vt 0.002857 0.314935 +vt 0.002857 0.262987 +vt 0.002857 0.211039 +vt 0.094286 0.159091 +vt 0.002857 0.055195 +vt 0.094286 0.003247 +vt 0.645714 0.525974 +vt 0.645714 0.577922 +vt 0.600000 0.525974 +vt 0.600000 0.577922 +vt 0.554286 0.525974 +vt 0.554286 0.577922 +vt 0.508571 0.525974 +vt 0.508571 0.577922 +vt 0.462857 0.525974 +vt 0.462857 0.577922 +vt 0.417143 0.525974 +vt 0.417143 0.577922 +vt 0.371429 0.525974 +vt 0.280000 0.577922 +vt 0.234286 0.525974 +vt 0.280000 0.525974 +vt 0.645714 0.633117 +vt 0.600000 0.581169 +vt 0.645714 0.581169 +vt 0.600000 0.633117 +vt 0.554286 0.581169 +vt 0.554286 0.633117 +vt 0.508571 0.581169 +vt 0.508571 0.633117 +vt 0.462857 0.581169 +vt 0.462857 0.633117 +vt 0.417143 0.581169 +vt 0.417143 0.633117 +vt 0.371429 0.581169 +vt 0.371429 0.633117 +vt 0.325714 0.581169 +vt 0.325714 0.633117 +vt 0.605714 0.470779 +vt 0.697143 0.522727 +vt 0.605714 0.522727 +vt 0.817143 0.019481 +vt 0.820000 0.045455 +vt 0.817143 0.045455 +vt 0.780000 0.019481 +vt 0.782857 0.045455 +vt 0.780000 0.045455 +vt 0.934286 0.051948 +vt 0.957143 0.048701 +vt 0.957143 0.051948 +vt 0.465714 0.016234 +vt 0.420000 0.120130 +vt 0.420000 0.016234 +vt 0.511429 0.016234 +vt 0.465714 0.120130 +vt 0.374286 0.016234 +vt 0.525714 0.483766 +vt 0.560000 0.470779 +vt 0.548571 0.483766 +vt 0.525714 0.509740 +vt 0.514286 0.470779 +vt 0.560000 0.522727 +vt 0.548571 0.509740 +vt 0.514286 0.522727 +vt 0.808571 0.042208 +vt 0.805714 0.022727 +vt 0.808571 0.022727 +vt 0.814286 0.045455 +vt 0.811429 0.019481 +vt 0.814286 0.019481 +vt 0.808571 0.012987 +vt 0.785714 0.016234 +vt 0.785714 0.012987 +vt 0.785714 0.051948 +vt 0.808571 0.048701 +vt 0.808571 0.051948 +vt 0.805714 0.045455 +vt 0.785714 0.048701 +vt 0.788571 0.045455 +vt 0.805714 0.019481 +vt 0.808571 0.016234 +vt 0.785714 0.042208 +vt 0.782857 0.019481 +vt 0.785714 0.022727 +vt 0.811429 0.045455 +vt 0.788571 0.042208 +vt 0.788571 0.022727 +vt 0.788571 0.019481 +vt 0.805714 0.042208 +vt 0.480000 0.483766 +vt 0.502857 0.483766 +vt 0.571429 0.483766 +vt 0.594286 0.483766 +vt 0.594286 0.509740 +vt 0.480000 0.509740 +vt 0.468571 0.470779 +vt 0.502857 0.509740 +vt 0.468571 0.522727 +vt 0.571429 0.509740 +vt 0.825714 0.045455 +vt 0.842857 0.042208 +vt 0.842857 0.045455 +vt 0.845714 0.042208 +vt 0.842857 0.022727 +vt 0.845714 0.022727 +vt 0.957143 0.012987 +vt 0.934286 0.016234 +vt 0.934286 0.012987 +vt 0.851429 0.045455 +vt 0.848571 0.019481 +vt 0.851429 0.019481 +vt 0.822857 0.051948 +vt 0.845714 0.048701 +vt 0.845714 0.051948 +vt 0.962857 0.045455 +vt 0.960000 0.019481 +vt 0.962857 0.019481 +vt 0.845714 0.012987 +vt 0.822857 0.016234 +vt 0.822857 0.012987 +vt 0.928571 0.019481 +vt 0.931429 0.045455 +vt 0.928571 0.045455 +vt 0.842857 0.019481 +vt 0.845714 0.016234 +vt 0.954286 0.019481 +vt 0.957143 0.016234 +vt 0.957143 0.042208 +vt 0.960000 0.045455 +vt 0.822857 0.042208 +vt 0.820000 0.019481 +vt 0.822857 0.022727 +vt 0.822857 0.048701 +vt 0.954286 0.045455 +vt 0.934286 0.048701 +vt 0.937143 0.045455 +vt 0.848571 0.045455 +vt 0.934286 0.042208 +vt 0.931429 0.019481 +vt 0.934286 0.022727 +vt 0.825714 0.042208 +vt 0.825714 0.022727 +vt 0.954286 0.022727 +vt 0.937143 0.042208 +vt 0.937143 0.022727 +vt 0.957143 0.022727 +vt 0.825714 0.019481 +vt 0.954286 0.042208 +vt 0.937143 0.019481 +vt 0.417143 0.522727 +vt 0.451429 0.509740 +vt 0.462857 0.522727 +vt 0.417143 0.470779 +vt 0.428571 0.509740 +vt 0.462857 0.470779 +vt 0.428571 0.483766 +vt 0.451429 0.483766 +vt 0.382857 0.483766 +vt 0.371429 0.470779 +vt 0.405714 0.483766 +vt 0.371429 0.522727 +vt 0.405714 0.509740 +vt 0.382857 0.509740 +vt 0.360000 0.509740 +vt 0.337143 0.509740 +vt 0.337143 0.483766 +vt 0.360000 0.483766 +vt 0.862857 0.045455 +vt 0.880000 0.042208 +vt 0.880000 0.045455 +vt 0.900000 0.045455 +vt 0.917143 0.042208 +vt 0.917143 0.045455 +vt 0.768571 0.019481 +vt 0.751429 0.022727 +vt 0.751429 0.019481 +vt 0.771429 0.012987 +vt 0.748571 0.016234 +vt 0.748571 0.012987 +vt 0.897143 0.051948 +vt 0.920000 0.048701 +vt 0.920000 0.051948 +vt 0.882857 0.012987 +vt 0.860000 0.016234 +vt 0.860000 0.012987 +vt 0.742857 0.019481 +vt 0.745714 0.045455 +vt 0.742857 0.045455 +vt 0.920000 0.012987 +vt 0.897143 0.016234 +vt 0.897143 0.012987 +vt 0.888571 0.045455 +vt 0.885714 0.019481 +vt 0.888571 0.019481 +vt 0.777143 0.045455 +vt 0.774286 0.019481 +vt 0.777143 0.019481 +vt 0.891429 0.019481 +vt 0.894286 0.045455 +vt 0.891429 0.045455 +vt 0.854286 0.019481 +vt 0.857143 0.045455 +vt 0.854286 0.045455 +vt 0.860000 0.042208 +vt 0.857143 0.019481 +vt 0.860000 0.022727 +vt 0.860000 0.048701 +vt 0.862857 0.019481 +vt 0.882857 0.016234 +vt 0.880000 0.019481 +vt 0.882857 0.042208 +vt 0.885714 0.045455 +vt 0.771429 0.016234 +vt 0.748571 0.042208 +vt 0.745714 0.019481 +vt 0.748571 0.022727 +vt 0.771429 0.042208 +vt 0.774286 0.045455 +vt 0.768571 0.045455 +vt 0.748571 0.048701 +vt 0.751429 0.045455 +vt 0.900000 0.019481 +vt 0.920000 0.016234 +vt 0.917143 0.019481 +vt 0.897143 0.022727 +vt 0.894286 0.019481 +vt 0.920000 0.022727 +vt 0.922857 0.045455 +vt 0.920000 0.042208 +vt 0.897143 0.048701 +vt 0.862857 0.022727 +vt 0.862857 0.042208 +vt 0.768571 0.022727 +vt 0.751429 0.042208 +vt 0.917143 0.022727 +vt 0.900000 0.042208 +vt 0.900000 0.022727 +vt 0.897143 0.042208 +vt 0.771429 0.022727 +vt 0.880000 0.022727 +vt 0.882857 0.022727 +vt 0.768571 0.042208 +vt 0.737143 0.633117 +vt 0.691429 0.581169 +vt 0.737143 0.581169 +vt 0.691429 0.633117 +vt 0.371429 0.577922 +vt 0.325714 0.525974 +vt 0.325714 0.577922 +vt 0.002857 0.159091 +vt 0.094286 0.107143 +vt 0.002857 0.107143 +vt 0.371429 0.467532 +vt 0.325714 0.363636 +vt 0.325714 0.467532 +vt 0.280000 0.243506 +vt 0.234286 0.360390 +vt 0.234286 0.243506 +vt 0.280000 0.360390 +vt 0.140000 0.107143 +vt 0.231429 0.107143 +vt 0.185714 0.107143 +vt 0.882857 0.646104 +vt 0.922857 0.698052 +vt 0.957143 0.646104 +vt 0.997143 0.646104 +vt 0.325714 0.240260 +vt 0.371429 0.123377 +vt 0.325714 0.123377 +vt 0.780000 0.077922 +vt 0.785714 0.123377 +vt 0.780000 0.123377 +vt 0.745714 0.077922 +vt 0.740000 0.123377 +vt 0.740000 0.071429 +vt 0.745714 0.175325 +vt 0.745714 0.123377 +vt 0.745714 0.227273 +vt 0.740000 0.175325 +vt 0.745714 0.279221 +vt 0.740000 0.227273 +vt 0.745714 0.331169 +vt 0.740000 0.279221 +vt 0.745714 0.383117 +vt 0.740000 0.331169 +vt 0.745714 0.435065 +vt 0.740000 0.383117 +vt 0.745714 0.487013 +vt 0.740000 0.435065 +vt 0.785714 0.175325 +vt 0.780000 0.175325 +vt 0.785714 0.227273 +vt 0.780000 0.227273 +vt 0.785714 0.279221 +vt 0.780000 0.279221 +vt 0.785714 0.331169 +vt 0.780000 0.331169 +vt 0.785714 0.383117 +vt 0.780000 0.383117 +vt 0.785714 0.435065 +vt 0.780000 0.435065 +vt 0.785714 0.487013 +vt 0.780000 0.487013 +vt 0.785714 0.071429 +vt 0.780000 0.636364 +vt 0.740000 0.642857 +vt 0.745714 0.636364 +vt 0.740000 0.590909 +vt 0.745714 0.590909 +vt 0.785714 0.590909 +vt 0.785714 0.642857 +vt 0.745714 0.538961 +vt 0.740000 0.487013 +vt 0.740000 0.538961 +vt 0.785714 0.538961 +vt 0.780000 0.538961 +vt 0.780000 0.590909 +vt 0.997143 0.542208 +vt 0.957143 0.542208 +vt 0.957143 0.496753 +vt 0.788571 0.331169 +vt 0.794286 0.383117 +vt 0.788571 0.383117 +vt 0.834286 0.435065 +vt 0.828571 0.383117 +vt 0.834286 0.383117 +vt 0.788571 0.188312 +vt 0.794286 0.227273 +vt 0.788571 0.227273 +vt 0.788571 0.279221 +vt 0.794286 0.331169 +vt 0.828571 0.331169 +vt 0.834286 0.331169 +vt 0.800000 0.642857 +vt 0.822857 0.636364 +vt 0.822857 0.642857 +vt 0.794286 0.279221 +vt 0.997143 0.957792 +vt 0.962857 0.957792 +vt 0.957143 0.951299 +vt 0.957143 0.801948 +vt 0.922857 0.853896 +vt 0.922857 0.951299 +vt 0.882857 0.490260 +vt 0.917143 0.490260 +vt 0.922857 0.496753 +vt 0.997143 0.594156 +vt 0.882857 0.542208 +vt 0.922857 0.594156 +vt 0.882857 0.594156 +vt 0.957143 0.594156 +vt 0.828571 0.279221 +vt 0.834286 0.279221 +vt 0.822857 0.175325 +vt 0.800000 0.181818 +vt 0.800000 0.175325 +vt 0.922857 0.646104 +vt 0.957143 0.490260 +vt 0.922857 0.957792 +vt 0.957143 0.957792 +vt 0.928571 0.594156 +vt 0.922857 0.542208 +vt 0.928571 0.542208 +vt 0.928571 0.646104 +vt 0.928571 0.698052 +vt 0.928571 0.750000 +vt 0.928571 0.801948 +vt 0.928571 0.853896 +vt 0.951429 0.542208 +vt 0.951429 0.594156 +vt 0.951429 0.646104 +vt 0.951429 0.698052 +vt 0.951429 0.750000 +vt 0.951429 0.801948 +vt 0.951429 0.853896 +vt 0.928571 0.905844 +vt 0.957143 0.905844 +vt 0.951429 0.905844 +vt 0.928571 0.503247 +vt 0.951429 0.503247 +vt 0.951429 0.944805 +vt 0.928571 0.944805 +vt 0.825714 0.331169 +vt 0.820000 0.279221 +vt 0.825714 0.279221 +vt 0.820000 0.185065 +vt 0.802857 0.191558 +vt 0.802857 0.185065 +vt 0.820000 0.227273 +vt 0.825714 0.227273 +vt 0.825714 0.590909 +vt 0.820000 0.538961 +vt 0.825714 0.538961 +vt 0.797143 0.487013 +vt 0.802857 0.538961 +vt 0.797143 0.538961 +vt 0.802857 0.590909 +vt 0.797143 0.590909 +vt 0.825714 0.626623 +vt 0.820000 0.590909 +vt 0.797143 0.435065 +vt 0.802857 0.487013 +vt 0.820000 0.487013 +vt 0.825714 0.487013 +vt 0.834286 0.227273 +vt 0.828571 0.188312 +vt 0.834286 0.188312 +vt 0.834286 0.487013 +vt 0.828571 0.435065 +vt 0.794286 0.435065 +vt 0.788571 0.435065 +vt 0.788571 0.590909 +vt 0.794286 0.629870 +vt 0.788571 0.629870 +vt 0.834286 0.538961 +vt 0.828571 0.487013 +vt 0.794286 0.487013 +vt 0.788571 0.487013 +vt 0.834286 0.629870 +vt 0.828571 0.590909 +vt 0.834286 0.590909 +vt 0.788571 0.538961 +vt 0.794286 0.590909 +vt 0.794286 0.538961 +vt 0.828571 0.538961 +vt 0.828571 0.227273 +vt 0.774286 0.084416 +vt 0.774286 0.123377 +vt 0.751429 0.084416 +vt 0.774286 0.629870 +vt 0.751429 0.629870 +vt 0.751429 0.590909 +vt 0.951429 0.483766 +vt 0.922857 0.490260 +vt 0.928571 0.483766 +vt 0.928571 0.964286 +vt 0.951429 0.964286 +vt 0.922857 0.451299 +vt 0.928571 0.451299 +vt 0.957143 0.451299 +vt 0.957143 0.996753 +vt 0.951429 0.996753 +vt 0.922857 0.996753 +vt 0.602857 0.094156 +vt 0.580000 0.055195 +vt 0.602857 0.055195 +vt 0.685714 0.055195 +vt 0.685714 0.094156 +vt 0.551429 0.055195 +vt 0.580000 0.094156 +vt 0.551429 0.094156 +vt 0.714286 0.094156 +vt 0.714286 0.055195 +vt 0.602857 0.022727 +vt 0.580000 0.022727 +vt 0.631429 0.094156 +vt 0.631429 0.055195 +vt 0.797143 0.279221 +vt 0.797143 0.227273 +vt 0.797143 0.331169 +vt 0.797143 0.383117 +vt 0.825714 0.383117 +vt 0.825714 0.435065 +vt 0.822857 0.181818 +vt 0.820000 0.633117 +vt 0.800000 0.636364 +vt 0.802857 0.633117 +vt 0.797143 0.191558 +vt 0.794286 0.188312 +vt 0.825714 0.191558 +vt 0.797143 0.626623 +vt 0.828571 0.629870 +vt 0.802857 0.279221 +vt 0.802857 0.227273 +vt 0.802857 0.331169 +vt 0.820000 0.331169 +vt 0.802857 0.383117 +vt 0.820000 0.383117 +vt 0.802857 0.435065 +vt 0.820000 0.435065 +vt 0.820000 0.191558 +vt 0.802857 0.626623 +vt 0.820000 0.626623 +vt 0.831429 0.811688 +vt 0.837143 0.818182 +vt 0.837143 0.811688 +vt 0.837143 0.837662 +vt 0.842857 0.844156 +vt 0.842857 0.837662 +vt 0.820000 0.850649 +vt 0.814286 0.844156 +vt 0.814286 0.850649 +vt 0.814286 0.824675 +vt 0.808571 0.818182 +vt 0.808571 0.824675 +vt 0.820000 0.818182 +vt 0.820000 0.824675 +vt 0.831429 0.824675 +vt 0.837143 0.824675 +vt 0.831429 0.818182 +vt 0.837143 0.850649 +vt 0.831429 0.844156 +vt 0.831429 0.850649 +vt 0.820000 0.844156 +vt 0.814286 0.811688 +vt 0.820000 0.811688 +vt 0.831429 0.805195 +vt 0.831429 0.792208 +vt 0.820000 0.805195 +vt 0.820000 0.746753 +vt 0.814286 0.707792 +vt 0.814286 0.746753 +vt 0.837143 0.792208 +vt 0.837143 0.805195 +vt 0.831429 0.837662 +vt 0.820000 0.837662 +vt 0.837143 0.844156 +vt 0.814286 0.837662 +vt 0.808571 0.707792 +vt 0.808571 0.746753 +vt 0.820000 0.792208 +vt 0.814286 0.805195 +vt 0.808571 0.837662 +vt 0.808571 0.844156 +vt 0.842857 0.824675 +vt 0.842857 0.818182 +vt 0.837143 0.788961 +vt 0.831429 0.750000 +vt 0.831429 0.788961 +vt 0.842857 0.788961 +vt 0.837143 0.750000 +vt 0.825714 0.746753 +vt 0.820000 0.707792 +vt 0.825714 0.788961 +vt 0.820000 0.750000 +vt 0.820000 0.788961 +vt 0.831429 0.746753 +vt 0.825714 0.707792 +vt 0.825714 0.750000 +vt 0.794286 0.811688 +vt 0.800000 0.818182 +vt 0.800000 0.811688 +vt 0.800000 0.837662 +vt 0.805714 0.844156 +vt 0.805714 0.837662 +vt 0.782857 0.850649 +vt 0.777143 0.844156 +vt 0.777143 0.850649 +vt 0.777143 0.824675 +vt 0.771429 0.818182 +vt 0.771429 0.824675 +vt 0.782857 0.818182 +vt 0.782857 0.824675 +vt 0.794286 0.824675 +vt 0.800000 0.824675 +vt 0.794286 0.818182 +vt 0.800000 0.850649 +vt 0.794286 0.844156 +vt 0.794286 0.850649 +vt 0.782857 0.844156 +vt 0.777143 0.811688 +vt 0.782857 0.811688 +vt 0.794286 0.805195 +vt 0.794286 0.792208 +vt 0.782857 0.805195 +vt 0.782857 0.746753 +vt 0.777143 0.707792 +vt 0.777143 0.746753 +vt 0.800000 0.792208 +vt 0.800000 0.805195 +vt 0.794286 0.837662 +vt 0.782857 0.837662 +vt 0.800000 0.844156 +vt 0.777143 0.837662 +vt 0.771429 0.707792 +vt 0.771429 0.746753 +vt 0.782857 0.792208 +vt 0.777143 0.805195 +vt 0.771429 0.837662 +vt 0.771429 0.844156 +vt 0.805714 0.824675 +vt 0.805714 0.818182 +vt 0.800000 0.788961 +vt 0.794286 0.750000 +vt 0.794286 0.788961 +vt 0.805714 0.788961 +vt 0.800000 0.750000 +vt 0.788571 0.746753 +vt 0.782857 0.707792 +vt 0.788571 0.788961 +vt 0.782857 0.750000 +vt 0.782857 0.788961 +vt 0.794286 0.746753 +vt 0.788571 0.707792 +vt 0.788571 0.750000 +vt 0.757143 0.811688 +vt 0.762857 0.818182 +vt 0.762857 0.811688 +vt 0.762857 0.837662 +vt 0.768571 0.844156 +vt 0.768571 0.837662 +vt 0.745714 0.850649 +vt 0.740000 0.844156 +vt 0.740000 0.850649 +vt 0.740000 0.824675 +vt 0.734286 0.818182 +vt 0.734286 0.824675 +vt 0.745714 0.818182 +vt 0.745714 0.824675 +vt 0.757143 0.824675 +vt 0.762857 0.824675 +vt 0.757143 0.818182 +vt 0.762857 0.850649 +vt 0.757143 0.844156 +vt 0.757143 0.850649 +vt 0.745714 0.844156 +vt 0.740000 0.811688 +vt 0.745714 0.811688 +vt 0.757143 0.805195 +vt 0.757143 0.792208 +vt 0.745714 0.805195 +vt 0.745714 0.746753 +vt 0.740000 0.707792 +vt 0.740000 0.746753 +vt 0.762857 0.792208 +vt 0.762857 0.805195 +vt 0.757143 0.837662 +vt 0.745714 0.837662 +vt 0.762857 0.844156 +vt 0.740000 0.837662 +vt 0.734286 0.707792 +vt 0.734286 0.746753 +vt 0.745714 0.792208 +vt 0.740000 0.805195 +vt 0.734286 0.837662 +vt 0.734286 0.844156 +vt 0.768571 0.824675 +vt 0.768571 0.818182 +vt 0.762857 0.788961 +vt 0.757143 0.750000 +vt 0.757143 0.788961 +vt 0.768571 0.788961 +vt 0.762857 0.750000 +vt 0.751429 0.746753 +vt 0.745714 0.707792 +vt 0.751429 0.788961 +vt 0.745714 0.750000 +vt 0.745714 0.788961 +vt 0.757143 0.746753 +vt 0.751429 0.707792 +vt 0.751429 0.750000 +vt 0.720000 0.811688 +vt 0.725714 0.818182 +vt 0.725714 0.811688 +vt 0.725714 0.837662 +vt 0.731429 0.844156 +vt 0.731429 0.837662 +vt 0.708571 0.850649 +vt 0.702857 0.844156 +vt 0.702857 0.850649 +vt 0.702857 0.824675 +vt 0.697143 0.818182 +vt 0.697143 0.824675 +vt 0.708571 0.818182 +vt 0.708571 0.824675 +vt 0.720000 0.824675 +vt 0.725714 0.824675 +vt 0.720000 0.818182 +vt 0.725714 0.850649 +vt 0.720000 0.844156 +vt 0.720000 0.850649 +vt 0.708571 0.844156 +vt 0.702857 0.811688 +vt 0.708571 0.811688 +vt 0.720000 0.805195 +vt 0.720000 0.792208 +vt 0.708571 0.805195 +vt 0.708571 0.746753 +vt 0.702857 0.707792 +vt 0.702857 0.746753 +vt 0.725714 0.792208 +vt 0.725714 0.805195 +vt 0.720000 0.837662 +vt 0.708571 0.837662 +vt 0.725714 0.844156 +vt 0.702857 0.837662 +vt 0.697143 0.707792 +vt 0.697143 0.746753 +vt 0.708571 0.792208 +vt 0.702857 0.805195 +vt 0.697143 0.837662 +vt 0.697143 0.844156 +vt 0.731429 0.824675 +vt 0.731429 0.818182 +vt 0.725714 0.788961 +vt 0.720000 0.750000 +vt 0.720000 0.788961 +vt 0.731429 0.788961 +vt 0.725714 0.750000 +vt 0.714286 0.746753 +vt 0.708571 0.707792 +vt 0.714286 0.788961 +vt 0.708571 0.750000 +vt 0.708571 0.788961 +vt 0.720000 0.746753 +vt 0.714286 0.707792 +vt 0.714286 0.750000 +vt 0.682857 0.811688 +vt 0.688571 0.818182 +vt 0.688571 0.811688 +vt 0.688571 0.837662 +vt 0.694286 0.844156 +vt 0.694286 0.837662 +vt 0.671429 0.850649 +vt 0.665714 0.844156 +vt 0.665714 0.850649 +vt 0.665714 0.824675 +vt 0.660000 0.818182 +vt 0.660000 0.824675 +vt 0.671429 0.818182 +vt 0.671429 0.824675 +vt 0.682857 0.824675 +vt 0.688571 0.824675 +vt 0.682857 0.818182 +vt 0.688571 0.850649 +vt 0.682857 0.844156 +vt 0.682857 0.850649 +vt 0.671429 0.844156 +vt 0.665714 0.811688 +vt 0.671429 0.811688 +vt 0.682857 0.805195 +vt 0.682857 0.792208 +vt 0.671429 0.805195 +vt 0.671429 0.746753 +vt 0.665714 0.707792 +vt 0.665714 0.746753 +vt 0.688571 0.792208 +vt 0.688571 0.805195 +vt 0.682857 0.837662 +vt 0.671429 0.837662 +vt 0.688571 0.844156 +vt 0.665714 0.837662 +vt 0.660000 0.707792 +vt 0.660000 0.746753 +vt 0.671429 0.792208 +vt 0.665714 0.805195 +vt 0.660000 0.837662 +vt 0.660000 0.844156 +vt 0.694286 0.824675 +vt 0.694286 0.818182 +vt 0.688571 0.788961 +vt 0.682857 0.750000 +vt 0.682857 0.788961 +vt 0.694286 0.788961 +vt 0.688571 0.750000 +vt 0.677143 0.746753 +vt 0.671429 0.707792 +vt 0.677143 0.788961 +vt 0.671429 0.750000 +vt 0.671429 0.788961 +vt 0.682857 0.746753 +vt 0.677143 0.707792 +vt 0.677143 0.750000 +vt 0.645714 0.811688 +vt 0.651429 0.818182 +vt 0.651429 0.811688 +vt 0.651429 0.837662 +vt 0.657143 0.844156 +vt 0.657143 0.837662 +vt 0.634286 0.850649 +vt 0.628571 0.844156 +vt 0.628571 0.850649 +vt 0.628571 0.824675 +vt 0.622857 0.818182 +vt 0.622857 0.824675 +vt 0.634286 0.818182 +vt 0.634286 0.824675 +vt 0.645714 0.824675 +vt 0.651429 0.824675 +vt 0.645714 0.818182 +vt 0.651429 0.850649 +vt 0.645714 0.844156 +vt 0.645714 0.850649 +vt 0.634286 0.844156 +vt 0.628571 0.811688 +vt 0.634286 0.811688 +vt 0.645714 0.805195 +vt 0.645714 0.792208 +vt 0.634286 0.805195 +vt 0.634286 0.746753 +vt 0.628571 0.707792 +vt 0.628571 0.746753 +vt 0.651429 0.792208 +vt 0.651429 0.805195 +vt 0.645714 0.837662 +vt 0.634286 0.837662 +vt 0.651429 0.844156 +vt 0.628571 0.837662 +vt 0.622857 0.707792 +vt 0.622857 0.746753 +vt 0.634286 0.792208 +vt 0.628571 0.805195 +vt 0.622857 0.837662 +vt 0.622857 0.844156 +vt 0.657143 0.824675 +vt 0.657143 0.818182 +vt 0.651429 0.788961 +vt 0.645714 0.750000 +vt 0.645714 0.788961 +vt 0.657143 0.788961 +vt 0.651429 0.750000 +vt 0.640000 0.746753 +vt 0.634286 0.707792 +vt 0.640000 0.788961 +vt 0.634286 0.750000 +vt 0.634286 0.788961 +vt 0.645714 0.746753 +vt 0.640000 0.707792 +vt 0.640000 0.750000 +vt 0.608571 0.811688 +vt 0.614286 0.818182 +vt 0.614286 0.811688 +vt 0.614286 0.837662 +vt 0.620000 0.844156 +vt 0.620000 0.837662 +vt 0.597143 0.850649 +vt 0.591429 0.844156 +vt 0.591429 0.850649 +vt 0.591429 0.824675 +vt 0.585714 0.818182 +vt 0.585714 0.824675 +vt 0.597143 0.818182 +vt 0.597143 0.824675 +vt 0.608571 0.824675 +vt 0.614286 0.824675 +vt 0.608571 0.818182 +vt 0.614286 0.850649 +vt 0.608571 0.844156 +vt 0.608571 0.850649 +vt 0.597143 0.844156 +vt 0.591429 0.811688 +vt 0.597143 0.811688 +vt 0.608571 0.805195 +vt 0.608571 0.792208 +vt 0.597143 0.805195 +vt 0.597143 0.746753 +vt 0.591429 0.707792 +vt 0.591429 0.746753 +vt 0.614286 0.792208 +vt 0.614286 0.805195 +vt 0.608571 0.837662 +vt 0.597143 0.837662 +vt 0.614286 0.844156 +vt 0.591429 0.837662 +vt 0.585714 0.707792 +vt 0.585714 0.746753 +vt 0.597143 0.792208 +vt 0.591429 0.805195 +vt 0.585714 0.837662 +vt 0.585714 0.844156 +vt 0.620000 0.824675 +vt 0.620000 0.818182 +vt 0.614286 0.788961 +vt 0.608571 0.750000 +vt 0.608571 0.788961 +vt 0.620000 0.788961 +vt 0.614286 0.750000 +vt 0.602857 0.746753 +vt 0.597143 0.707792 +vt 0.602857 0.788961 +vt 0.597143 0.750000 +vt 0.597143 0.788961 +vt 0.608571 0.746753 +vt 0.602857 0.707792 +vt 0.602857 0.750000 +vt 0.571429 0.811688 +vt 0.577143 0.818182 +vt 0.577143 0.811688 +vt 0.577143 0.837662 +vt 0.582857 0.844156 +vt 0.582857 0.837662 +vt 0.560000 0.850649 +vt 0.554286 0.844156 +vt 0.554286 0.850649 +vt 0.554286 0.824675 +vt 0.548571 0.818182 +vt 0.548571 0.824675 +vt 0.560000 0.818182 +vt 0.560000 0.824675 +vt 0.571429 0.824675 +vt 0.577143 0.824675 +vt 0.571429 0.818182 +vt 0.577143 0.850649 +vt 0.571429 0.844156 +vt 0.571429 0.850649 +vt 0.560000 0.844156 +vt 0.554286 0.811688 +vt 0.560000 0.811688 +vt 0.571429 0.805195 +vt 0.571429 0.792208 +vt 0.560000 0.805195 +vt 0.560000 0.746753 +vt 0.554286 0.707792 +vt 0.554286 0.746753 +vt 0.577143 0.792208 +vt 0.577143 0.805195 +vt 0.571429 0.837662 +vt 0.560000 0.837662 +vt 0.577143 0.844156 +vt 0.554286 0.837662 +vt 0.548571 0.707792 +vt 0.548571 0.746753 +vt 0.560000 0.792208 +vt 0.554286 0.805195 +vt 0.548571 0.837662 +vt 0.548571 0.844156 +vt 0.582857 0.824675 +vt 0.582857 0.818182 +vt 0.577143 0.788961 +vt 0.571429 0.750000 +vt 0.571429 0.788961 +vt 0.582857 0.788961 +vt 0.577143 0.750000 +vt 0.565714 0.746753 +vt 0.560000 0.707792 +vt 0.565714 0.788961 +vt 0.560000 0.750000 +vt 0.560000 0.788961 +vt 0.571429 0.746753 +vt 0.565714 0.707792 +vt 0.565714 0.750000 +vt 0.534286 0.811688 +vt 0.540000 0.818182 +vt 0.540000 0.811688 +vt 0.540000 0.837662 +vt 0.545714 0.844156 +vt 0.545714 0.837662 +vt 0.522857 0.850649 +vt 0.517143 0.844156 +vt 0.517143 0.850649 +vt 0.517143 0.824675 +vt 0.511429 0.818182 +vt 0.511429 0.824675 +vt 0.522857 0.818182 +vt 0.522857 0.824675 +vt 0.534286 0.824675 +vt 0.540000 0.824675 +vt 0.534286 0.818182 +vt 0.540000 0.850649 +vt 0.534286 0.844156 +vt 0.534286 0.850649 +vt 0.522857 0.844156 +vt 0.517143 0.811688 +vt 0.522857 0.811688 +vt 0.534286 0.805195 +vt 0.534286 0.792208 +vt 0.522857 0.805195 +vt 0.522857 0.746753 +vt 0.517143 0.707792 +vt 0.517143 0.746753 +vt 0.540000 0.792208 +vt 0.540000 0.805195 +vt 0.534286 0.837662 +vt 0.522857 0.837662 +vt 0.540000 0.844156 +vt 0.517143 0.837662 +vt 0.511429 0.707792 +vt 0.511429 0.746753 +vt 0.522857 0.792208 +vt 0.517143 0.805195 +vt 0.511429 0.837662 +vt 0.511429 0.844156 +vt 0.545714 0.824675 +vt 0.545714 0.818182 +vt 0.540000 0.788961 +vt 0.534286 0.750000 +vt 0.534286 0.788961 +vt 0.545714 0.788961 +vt 0.540000 0.750000 +vt 0.528571 0.746753 +vt 0.522857 0.707792 +vt 0.528571 0.788961 +vt 0.522857 0.750000 +vt 0.522857 0.788961 +vt 0.534286 0.746753 +vt 0.528571 0.707792 +vt 0.528571 0.750000 +vt 0.497143 0.811688 +vt 0.502857 0.818182 +vt 0.502857 0.811688 +vt 0.502857 0.837662 +vt 0.508571 0.844156 +vt 0.508571 0.837662 +vt 0.485714 0.850649 +vt 0.480000 0.844156 +vt 0.480000 0.850649 +vt 0.480000 0.824675 +vt 0.474286 0.818182 +vt 0.474286 0.824675 +vt 0.485714 0.818182 +vt 0.485714 0.824675 +vt 0.497143 0.824675 +vt 0.502857 0.824675 +vt 0.497143 0.818182 +vt 0.502857 0.850649 +vt 0.497143 0.844156 +vt 0.497143 0.850649 +vt 0.485714 0.844156 +vt 0.480000 0.811688 +vt 0.485714 0.811688 +vt 0.497143 0.805195 +vt 0.497143 0.792208 +vt 0.485714 0.805195 +vt 0.485714 0.746753 +vt 0.480000 0.707792 +vt 0.480000 0.746753 +vt 0.502857 0.792208 +vt 0.502857 0.805195 +vt 0.497143 0.837662 +vt 0.485714 0.837662 +vt 0.502857 0.844156 +vt 0.480000 0.837662 +vt 0.474286 0.707792 +vt 0.474286 0.746753 +vt 0.485714 0.792208 +vt 0.480000 0.805195 +vt 0.474286 0.837662 +vt 0.474286 0.844156 +vt 0.508571 0.824675 +vt 0.508571 0.818182 +vt 0.502857 0.788961 +vt 0.497143 0.750000 +vt 0.497143 0.788961 +vt 0.508571 0.788961 +vt 0.502857 0.750000 +vt 0.491429 0.746753 +vt 0.485714 0.707792 +vt 0.491429 0.788961 +vt 0.485714 0.750000 +vt 0.485714 0.788961 +vt 0.497143 0.746753 +vt 0.491429 0.707792 +vt 0.491429 0.750000 +vt 0.868571 0.811688 +vt 0.874286 0.818182 +vt 0.874286 0.811688 +vt 0.874286 0.837662 +vt 0.880000 0.844156 +vt 0.880000 0.837662 +vt 0.857143 0.850649 +vt 0.851429 0.844156 +vt 0.851429 0.850649 +vt 0.851429 0.824675 +vt 0.845714 0.818182 +vt 0.845714 0.824675 +vt 0.857143 0.818182 +vt 0.857143 0.824675 +vt 0.868571 0.824675 +vt 0.874286 0.824675 +vt 0.868571 0.818182 +vt 0.874286 0.850649 +vt 0.868571 0.844156 +vt 0.868571 0.850649 +vt 0.857143 0.844156 +vt 0.851429 0.811688 +vt 0.857143 0.811688 +vt 0.868571 0.805195 +vt 0.868571 0.792208 +vt 0.857143 0.805195 +vt 0.857143 0.746753 +vt 0.851429 0.707792 +vt 0.851429 0.746753 +vt 0.874286 0.792208 +vt 0.874286 0.805195 +vt 0.868571 0.837662 +vt 0.857143 0.837662 +vt 0.874286 0.844156 +vt 0.851429 0.837662 +vt 0.845714 0.707792 +vt 0.845714 0.746753 +vt 0.857143 0.792208 +vt 0.851429 0.805195 +vt 0.845714 0.837662 +vt 0.845714 0.844156 +vt 0.880000 0.824675 +vt 0.880000 0.818182 +vt 0.874286 0.788961 +vt 0.868571 0.750000 +vt 0.868571 0.788961 +vt 0.880000 0.788961 +vt 0.874286 0.750000 +vt 0.862857 0.746753 +vt 0.857143 0.707792 +vt 0.862857 0.788961 +vt 0.857143 0.750000 +vt 0.857143 0.788961 +vt 0.868571 0.746753 +vt 0.862857 0.707792 +vt 0.862857 0.750000 +vt 0.522857 0.957792 +vt 0.517143 0.964286 +vt 0.522857 0.964286 +vt 0.511429 0.990260 +vt 0.517143 0.983766 +vt 0.511429 0.983766 +vt 0.534286 0.996753 +vt 0.540000 0.990260 +vt 0.534286 0.990260 +vt 0.545714 0.964286 +vt 0.540000 0.970779 +vt 0.545714 0.970779 +vt 0.534286 0.964286 +vt 0.534286 0.970779 +vt 0.522857 0.970779 +vt 0.517143 0.970779 +vt 0.517143 0.996753 +vt 0.522857 0.990260 +vt 0.517143 0.990260 +vt 0.522857 0.996753 +vt 0.540000 0.957792 +vt 0.540000 0.964286 +vt 0.534286 0.957792 +vt 0.522857 0.951299 +vt 0.534286 0.951299 +vt 0.522857 0.938312 +vt 0.540000 0.853896 +vt 0.534286 0.892857 +vt 0.540000 0.892857 +vt 0.517143 0.938312 +vt 0.517143 0.951299 +vt 0.522857 0.983766 +vt 0.534286 0.983766 +vt 0.540000 0.983766 +vt 0.545714 0.853896 +vt 0.545714 0.892857 +vt 0.540000 0.951299 +vt 0.534286 0.938312 +vt 0.545714 0.983766 +vt 0.545714 0.990260 +vt 0.511429 0.970779 +vt 0.511429 0.964286 +vt 0.522857 0.896104 +vt 0.517143 0.935065 +vt 0.522857 0.935065 +vt 0.517143 0.896104 +vt 0.511429 0.935065 +vt 0.534286 0.853896 +vt 0.528571 0.892857 +vt 0.534286 0.896104 +vt 0.528571 0.935065 +vt 0.534286 0.935065 +vt 0.528571 0.853896 +vt 0.522857 0.892857 +vt 0.528571 0.896104 +vt 0.560000 0.957792 +vt 0.554286 0.964286 +vt 0.560000 0.964286 +vt 0.548571 0.990260 +vt 0.554286 0.983766 +vt 0.548571 0.983766 +vt 0.571429 0.996753 +vt 0.577143 0.990260 +vt 0.571429 0.990260 +vt 0.582857 0.964286 +vt 0.577143 0.970779 +vt 0.582857 0.970779 +vt 0.571429 0.964286 +vt 0.571429 0.970779 +vt 0.560000 0.970779 +vt 0.554286 0.970779 +vt 0.554286 0.996753 +vt 0.560000 0.990260 +vt 0.554286 0.990260 +vt 0.560000 0.996753 +vt 0.577143 0.957792 +vt 0.577143 0.964286 +vt 0.571429 0.957792 +vt 0.560000 0.951299 +vt 0.571429 0.951299 +vt 0.560000 0.938312 +vt 0.577143 0.853896 +vt 0.571429 0.892857 +vt 0.577143 0.892857 +vt 0.554286 0.938312 +vt 0.554286 0.951299 +vt 0.560000 0.983766 +vt 0.571429 0.983766 +vt 0.577143 0.983766 +vt 0.582857 0.853896 +vt 0.582857 0.892857 +vt 0.577143 0.951299 +vt 0.571429 0.938312 +vt 0.582857 0.983766 +vt 0.582857 0.990260 +vt 0.548571 0.970779 +vt 0.548571 0.964286 +vt 0.560000 0.896104 +vt 0.554286 0.935065 +vt 0.560000 0.935065 +vt 0.554286 0.896104 +vt 0.548571 0.935065 +vt 0.571429 0.853896 +vt 0.565714 0.892857 +vt 0.571429 0.896104 +vt 0.565714 0.935065 +vt 0.571429 0.935065 +vt 0.565714 0.853896 +vt 0.560000 0.892857 +vt 0.565714 0.896104 +vt 0.597143 0.957792 +vt 0.591429 0.964286 +vt 0.597143 0.964286 +vt 0.585714 0.990260 +vt 0.591429 0.983766 +vt 0.585714 0.983766 +vt 0.608571 0.996753 +vt 0.614286 0.990260 +vt 0.608571 0.990260 +vt 0.620000 0.964286 +vt 0.614286 0.970779 +vt 0.620000 0.970779 +vt 0.608571 0.964286 +vt 0.608571 0.970779 +vt 0.597143 0.970779 +vt 0.591429 0.970779 +vt 0.591429 0.996753 +vt 0.597143 0.990260 +vt 0.591429 0.990260 +vt 0.597143 0.996753 +vt 0.614286 0.957792 +vt 0.614286 0.964286 +vt 0.608571 0.957792 +vt 0.597143 0.951299 +vt 0.608571 0.951299 +vt 0.597143 0.938312 +vt 0.614286 0.853896 +vt 0.608571 0.892857 +vt 0.614286 0.892857 +vt 0.591429 0.938312 +vt 0.591429 0.951299 +vt 0.597143 0.983766 +vt 0.608571 0.983766 +vt 0.614286 0.983766 +vt 0.620000 0.853896 +vt 0.620000 0.892857 +vt 0.614286 0.951299 +vt 0.608571 0.938312 +vt 0.620000 0.983766 +vt 0.620000 0.990260 +vt 0.585714 0.970779 +vt 0.585714 0.964286 +vt 0.597143 0.896104 +vt 0.591429 0.935065 +vt 0.597143 0.935065 +vt 0.591429 0.896104 +vt 0.585714 0.935065 +vt 0.608571 0.853896 +vt 0.602857 0.892857 +vt 0.608571 0.896104 +vt 0.602857 0.935065 +vt 0.608571 0.935065 +vt 0.602857 0.853896 +vt 0.597143 0.892857 +vt 0.602857 0.896104 +vt 0.634286 0.957792 +vt 0.628571 0.964286 +vt 0.634286 0.964286 +vt 0.622857 0.990260 +vt 0.628571 0.983766 +vt 0.622857 0.983766 +vt 0.645714 0.996753 +vt 0.651429 0.990260 +vt 0.645714 0.990260 +vt 0.657143 0.964286 +vt 0.651429 0.970779 +vt 0.657143 0.970779 +vt 0.645714 0.964286 +vt 0.645714 0.970779 +vt 0.634286 0.970779 +vt 0.628571 0.970779 +vt 0.628571 0.996753 +vt 0.634286 0.990260 +vt 0.628571 0.990260 +vt 0.634286 0.996753 +vt 0.651429 0.957792 +vt 0.651429 0.964286 +vt 0.645714 0.957792 +vt 0.634286 0.951299 +vt 0.645714 0.951299 +vt 0.634286 0.938312 +vt 0.651429 0.853896 +vt 0.645714 0.892857 +vt 0.651429 0.892857 +vt 0.628571 0.938312 +vt 0.628571 0.951299 +vt 0.634286 0.983766 +vt 0.645714 0.983766 +vt 0.651429 0.983766 +vt 0.657143 0.853896 +vt 0.657143 0.892857 +vt 0.651429 0.951299 +vt 0.645714 0.938312 +vt 0.657143 0.983766 +vt 0.657143 0.990260 +vt 0.622857 0.970779 +vt 0.622857 0.964286 +vt 0.634286 0.896104 +vt 0.628571 0.935065 +vt 0.634286 0.935065 +vt 0.628571 0.896104 +vt 0.622857 0.935065 +vt 0.645714 0.853896 +vt 0.640000 0.892857 +vt 0.645714 0.896104 +vt 0.640000 0.935065 +vt 0.645714 0.935065 +vt 0.640000 0.853896 +vt 0.634286 0.892857 +vt 0.640000 0.896104 +vt 0.671429 0.957792 +vt 0.665714 0.964286 +vt 0.671429 0.964286 +vt 0.660000 0.990260 +vt 0.665714 0.983766 +vt 0.660000 0.983766 +vt 0.682857 0.996753 +vt 0.688571 0.990260 +vt 0.682857 0.990260 +vt 0.694286 0.964286 +vt 0.688571 0.970779 +vt 0.694286 0.970779 +vt 0.682857 0.964286 +vt 0.682857 0.970779 +vt 0.671429 0.970779 +vt 0.665714 0.970779 +vt 0.665714 0.996753 +vt 0.671429 0.990260 +vt 0.665714 0.990260 +vt 0.671429 0.996753 +vt 0.688571 0.957792 +vt 0.688571 0.964286 +vt 0.682857 0.957792 +vt 0.671429 0.951299 +vt 0.682857 0.951299 +vt 0.671429 0.938312 +vt 0.688571 0.853896 +vt 0.682857 0.892857 +vt 0.688571 0.892857 +vt 0.665714 0.938312 +vt 0.665714 0.951299 +vt 0.671429 0.983766 +vt 0.682857 0.983766 +vt 0.688571 0.983766 +vt 0.694286 0.853896 +vt 0.694286 0.892857 +vt 0.688571 0.951299 +vt 0.682857 0.938312 +vt 0.694286 0.983766 +vt 0.694286 0.990260 +vt 0.660000 0.970779 +vt 0.660000 0.964286 +vt 0.671429 0.896104 +vt 0.665714 0.935065 +vt 0.671429 0.935065 +vt 0.665714 0.896104 +vt 0.660000 0.935065 +vt 0.682857 0.853896 +vt 0.677143 0.892857 +vt 0.682857 0.896104 +vt 0.677143 0.935065 +vt 0.682857 0.935065 +vt 0.677143 0.853896 +vt 0.671429 0.892857 +vt 0.677143 0.896104 +vt 0.708571 0.957792 +vt 0.702857 0.964286 +vt 0.708571 0.964286 +vt 0.697143 0.990260 +vt 0.702857 0.983766 +vt 0.697143 0.983766 +vt 0.720000 0.996753 +vt 0.725714 0.990260 +vt 0.720000 0.990260 +vt 0.731429 0.964286 +vt 0.725714 0.970779 +vt 0.731429 0.970779 +vt 0.720000 0.964286 +vt 0.720000 0.970779 +vt 0.708571 0.970779 +vt 0.702857 0.970779 +vt 0.702857 0.996753 +vt 0.708571 0.990260 +vt 0.702857 0.990260 +vt 0.708571 0.996753 +vt 0.725714 0.957792 +vt 0.725714 0.964286 +vt 0.720000 0.957792 +vt 0.708571 0.951299 +vt 0.720000 0.951299 +vt 0.708571 0.938312 +vt 0.725714 0.853896 +vt 0.720000 0.892857 +vt 0.725714 0.892857 +vt 0.702857 0.938312 +vt 0.702857 0.951299 +vt 0.708571 0.983766 +vt 0.720000 0.983766 +vt 0.725714 0.983766 +vt 0.731429 0.853896 +vt 0.731429 0.892857 +vt 0.725714 0.951299 +vt 0.720000 0.938312 +vt 0.731429 0.983766 +vt 0.731429 0.990260 +vt 0.697143 0.970779 +vt 0.697143 0.964286 +vt 0.708571 0.896104 +vt 0.702857 0.935065 +vt 0.708571 0.935065 +vt 0.702857 0.896104 +vt 0.697143 0.935065 +vt 0.720000 0.853896 +vt 0.714286 0.892857 +vt 0.720000 0.896104 +vt 0.714286 0.935065 +vt 0.720000 0.935065 +vt 0.714286 0.853896 +vt 0.708571 0.892857 +vt 0.714286 0.896104 +vt 0.745714 0.957792 +vt 0.740000 0.964286 +vt 0.745714 0.964286 +vt 0.734286 0.990260 +vt 0.740000 0.983766 +vt 0.734286 0.983766 +vt 0.757143 0.996753 +vt 0.762857 0.990260 +vt 0.757143 0.990260 +vt 0.768571 0.964286 +vt 0.762857 0.970779 +vt 0.768571 0.970779 +vt 0.757143 0.964286 +vt 0.757143 0.970779 +vt 0.745714 0.970779 +vt 0.740000 0.970779 +vt 0.740000 0.996753 +vt 0.745714 0.990260 +vt 0.740000 0.990260 +vt 0.745714 0.996753 +vt 0.762857 0.957792 +vt 0.762857 0.964286 +vt 0.757143 0.957792 +vt 0.745714 0.951299 +vt 0.757143 0.951299 +vt 0.745714 0.938312 +vt 0.762857 0.853896 +vt 0.757143 0.892857 +vt 0.762857 0.892857 +vt 0.740000 0.938312 +vt 0.740000 0.951299 +vt 0.745714 0.983766 +vt 0.757143 0.983766 +vt 0.762857 0.983766 +vt 0.768571 0.853896 +vt 0.768571 0.892857 +vt 0.762857 0.951299 +vt 0.757143 0.938312 +vt 0.768571 0.983766 +vt 0.768571 0.990260 +vt 0.734286 0.970779 +vt 0.734286 0.964286 +vt 0.745714 0.896104 +vt 0.740000 0.935065 +vt 0.745714 0.935065 +vt 0.740000 0.896104 +vt 0.734286 0.935065 +vt 0.757143 0.853896 +vt 0.751429 0.892857 +vt 0.757143 0.896104 +vt 0.751429 0.935065 +vt 0.757143 0.935065 +vt 0.751429 0.853896 +vt 0.745714 0.892857 +vt 0.751429 0.896104 +vt 0.782857 0.957792 +vt 0.777143 0.964286 +vt 0.782857 0.964286 +vt 0.771429 0.990260 +vt 0.777143 0.983766 +vt 0.771429 0.983766 +vt 0.794286 0.996753 +vt 0.800000 0.990260 +vt 0.794286 0.990260 +vt 0.805714 0.964286 +vt 0.800000 0.970779 +vt 0.805714 0.970779 +vt 0.794286 0.964286 +vt 0.794286 0.970779 +vt 0.782857 0.970779 +vt 0.777143 0.970779 +vt 0.777143 0.996753 +vt 0.782857 0.990260 +vt 0.777143 0.990260 +vt 0.782857 0.996753 +vt 0.800000 0.957792 +vt 0.800000 0.964286 +vt 0.794286 0.957792 +vt 0.782857 0.951299 +vt 0.794286 0.951299 +vt 0.782857 0.938312 +vt 0.800000 0.853896 +vt 0.794286 0.892857 +vt 0.800000 0.892857 +vt 0.777143 0.938312 +vt 0.777143 0.951299 +vt 0.782857 0.983766 +vt 0.794286 0.983766 +vt 0.800000 0.983766 +vt 0.805714 0.853896 +vt 0.805714 0.892857 +vt 0.800000 0.951299 +vt 0.794286 0.938312 +vt 0.805714 0.983766 +vt 0.805714 0.990260 +vt 0.771429 0.970779 +vt 0.771429 0.964286 +vt 0.782857 0.896104 +vt 0.777143 0.935065 +vt 0.782857 0.935065 +vt 0.777143 0.896104 +vt 0.771429 0.935065 +vt 0.794286 0.853896 +vt 0.788571 0.892857 +vt 0.794286 0.896104 +vt 0.788571 0.935065 +vt 0.794286 0.935065 +vt 0.788571 0.853896 +vt 0.782857 0.892857 +vt 0.788571 0.896104 +vt 0.820000 0.957792 +vt 0.814286 0.964286 +vt 0.820000 0.964286 +vt 0.808571 0.990260 +vt 0.814286 0.983766 +vt 0.808571 0.983766 +vt 0.831429 0.996753 +vt 0.837143 0.990260 +vt 0.831429 0.990260 +vt 0.842857 0.964286 +vt 0.837143 0.970779 +vt 0.842857 0.970779 +vt 0.831429 0.964286 +vt 0.831429 0.970779 +vt 0.820000 0.970779 +vt 0.814286 0.970779 +vt 0.814286 0.996753 +vt 0.820000 0.990260 +vt 0.814286 0.990260 +vt 0.820000 0.996753 +vt 0.837143 0.957792 +vt 0.837143 0.964286 +vt 0.831429 0.957792 +vt 0.820000 0.951299 +vt 0.831429 0.951299 +vt 0.820000 0.938312 +vt 0.837143 0.853896 +vt 0.831429 0.892857 +vt 0.837143 0.892857 +vt 0.814286 0.938312 +vt 0.814286 0.951299 +vt 0.820000 0.983766 +vt 0.831429 0.983766 +vt 0.837143 0.983766 +vt 0.842857 0.853896 +vt 0.842857 0.892857 +vt 0.837143 0.951299 +vt 0.831429 0.938312 +vt 0.842857 0.983766 +vt 0.842857 0.990260 +vt 0.808571 0.970779 +vt 0.808571 0.964286 +vt 0.820000 0.896104 +vt 0.814286 0.935065 +vt 0.820000 0.935065 +vt 0.814286 0.896104 +vt 0.808571 0.935065 +vt 0.831429 0.853896 +vt 0.825714 0.892857 +vt 0.831429 0.896104 +vt 0.825714 0.935065 +vt 0.831429 0.935065 +vt 0.825714 0.853896 +vt 0.820000 0.892857 +vt 0.825714 0.896104 +vt 0.857143 0.957792 +vt 0.851429 0.964286 +vt 0.857143 0.964286 +vt 0.845714 0.990260 +vt 0.851429 0.983766 +vt 0.845714 0.983766 +vt 0.868571 0.996753 +vt 0.874286 0.990260 +vt 0.868571 0.990260 +vt 0.880000 0.964286 +vt 0.874286 0.970779 +vt 0.880000 0.970779 +vt 0.868571 0.964286 +vt 0.868571 0.970779 +vt 0.857143 0.970779 +vt 0.851429 0.970779 +vt 0.851429 0.996753 +vt 0.857143 0.990260 +vt 0.851429 0.990260 +vt 0.857143 0.996753 +vt 0.874286 0.957792 +vt 0.874286 0.964286 +vt 0.868571 0.957792 +vt 0.857143 0.951299 +vt 0.868571 0.951299 +vt 0.857143 0.938312 +vt 0.874286 0.853896 +vt 0.868571 0.892857 +vt 0.874286 0.892857 +vt 0.851429 0.938312 +vt 0.851429 0.951299 +vt 0.857143 0.983766 +vt 0.868571 0.983766 +vt 0.874286 0.983766 +vt 0.880000 0.853896 +vt 0.880000 0.892857 +vt 0.874286 0.951299 +vt 0.868571 0.938312 +vt 0.880000 0.983766 +vt 0.880000 0.990260 +vt 0.845714 0.970779 +vt 0.845714 0.964286 +vt 0.857143 0.896104 +vt 0.851429 0.935065 +vt 0.857143 0.935065 +vt 0.851429 0.896104 +vt 0.845714 0.935065 +vt 0.868571 0.853896 +vt 0.862857 0.892857 +vt 0.868571 0.896104 +vt 0.862857 0.935065 +vt 0.868571 0.935065 +vt 0.862857 0.853896 +vt 0.857143 0.892857 +vt 0.862857 0.896104 +vt 0.485714 0.957792 +vt 0.480000 0.964286 +vt 0.485714 0.964286 +vt 0.474286 0.990260 +vt 0.480000 0.983766 +vt 0.474286 0.983766 +vt 0.497143 0.996753 +vt 0.502857 0.990260 +vt 0.497143 0.990260 +vt 0.508571 0.964286 +vt 0.502857 0.970779 +vt 0.508571 0.970779 +vt 0.497143 0.964286 +vt 0.497143 0.970779 +vt 0.485714 0.970779 +vt 0.480000 0.970779 +vt 0.480000 0.996753 +vt 0.485714 0.990260 +vt 0.480000 0.990260 +vt 0.485714 0.996753 +vt 0.502857 0.957792 +vt 0.502857 0.964286 +vt 0.497143 0.957792 +vt 0.485714 0.951299 +vt 0.497143 0.951299 +vt 0.485714 0.938312 +vt 0.502857 0.853896 +vt 0.497143 0.892857 +vt 0.502857 0.892857 +vt 0.480000 0.938312 +vt 0.480000 0.951299 +vt 0.485714 0.983766 +vt 0.497143 0.983766 +vt 0.502857 0.983766 +vt 0.508571 0.853896 +vt 0.508571 0.892857 +vt 0.502857 0.951299 +vt 0.497143 0.938312 +vt 0.508571 0.983766 +vt 0.508571 0.990260 +vt 0.474286 0.970779 +vt 0.474286 0.964286 +vt 0.485714 0.896104 +vt 0.480000 0.935065 +vt 0.485714 0.935065 +vt 0.480000 0.896104 +vt 0.474286 0.935065 +vt 0.497143 0.853896 +vt 0.491429 0.892857 +vt 0.497143 0.896104 +vt 0.491429 0.935065 +vt 0.497143 0.935065 +vt 0.491429 0.853896 +vt 0.485714 0.892857 +vt 0.491429 0.896104 +vt 0.822857 0.149351 +vt 0.814286 0.139610 +vt 0.822857 0.129870 +vt 0.822857 0.126623 +vt 0.820000 0.113636 +vt 0.822857 0.113636 +vt 0.811429 0.139610 +vt 0.802857 0.149351 +vt 0.802857 0.129870 +vt 0.822857 0.110390 +vt 0.811429 0.159091 +vt 0.820000 0.110390 +vt 0.822857 0.090909 +vt 0.834286 0.113636 +vt 0.817143 0.110390 +vt 0.820000 0.090909 +vt 0.834286 0.110390 +vt 0.837143 0.113636 +vt 0.834286 0.149351 +vt 0.840000 0.110390 +vt 0.837143 0.090909 +vt 0.840000 0.090909 +vt 0.854286 0.149351 +vt 0.845714 0.139610 +vt 0.854286 0.129870 +vt 0.834286 0.090909 +vt 0.837143 0.110390 +vt 0.842857 0.139610 +vt 0.845714 0.159091 +vt 0.842857 0.159091 +vt 0.834286 0.126623 +vt 0.888571 0.149351 +vt 0.880000 0.139610 +vt 0.880000 0.159091 +vt 0.885714 0.113636 +vt 0.888571 0.126623 +vt 0.888571 0.113636 +vt 0.868571 0.149351 +vt 0.877143 0.139610 +vt 0.868571 0.129870 +vt 0.888571 0.110390 +vt 0.877143 0.159091 +vt 0.888571 0.090909 +vt 0.885714 0.110390 +vt 0.900000 0.113636 +vt 0.882857 0.110390 +vt 0.885714 0.090909 +vt 0.882857 0.090909 +vt 0.902857 0.113636 +vt 0.900000 0.110390 +vt 0.900000 0.149351 +vt 0.888571 0.129870 +vt 0.902857 0.090909 +vt 0.905714 0.110390 +vt 0.905714 0.090909 +vt 0.911429 0.139610 +vt 0.920000 0.149351 +vt 0.920000 0.129870 +vt 0.902857 0.110390 +vt 0.900000 0.090909 +vt 0.911429 0.159091 +vt 0.908571 0.139610 +vt 0.908571 0.159091 +vt 0.900000 0.126623 +vt 0.900000 0.129870 +vt 0.868571 0.308442 +vt 0.862857 0.191558 +vt 0.868571 0.191558 +vt 0.862857 0.308442 +vt 0.857143 0.191558 +vt 0.874286 0.191558 +vt 0.862857 0.185065 +vt 0.868571 0.314935 +vt 0.862857 0.314935 +vt 0.888571 0.308442 +vt 0.882857 0.191558 +vt 0.888571 0.191558 +vt 0.882857 0.308442 +vt 0.877143 0.191558 +vt 0.894286 0.191558 +vt 0.882857 0.185065 +vt 0.888571 0.314935 +vt 0.882857 0.314935 +vt 0.908571 0.308442 +vt 0.902857 0.191558 +vt 0.908571 0.191558 +vt 0.902857 0.308442 +vt 0.897143 0.191558 +vt 0.914286 0.191558 +vt 0.902857 0.185065 +vt 0.908571 0.314935 +vt 0.902857 0.314935 +vt 0.928571 0.308442 +vt 0.922857 0.191558 +vt 0.928571 0.191558 +vt 0.922857 0.308442 +vt 0.917143 0.191558 +vt 0.934286 0.191558 +vt 0.922857 0.185065 +vt 0.928571 0.314935 +vt 0.922857 0.314935 +vt 0.848571 0.308442 +vt 0.842857 0.191558 +vt 0.848571 0.191558 +vt 0.842857 0.308442 +vt 0.837143 0.191558 +vt 0.854286 0.191558 +vt 0.842857 0.185065 +vt 0.848571 0.314935 +vt 0.842857 0.314935 +vt 0.862857 0.324675 +vt 0.868571 0.441558 +vt 0.868571 0.324675 +vt 0.857143 0.441558 +vt 0.862857 0.441558 +vt 0.874286 0.324675 +vt 0.874286 0.441558 +vt 0.862857 0.318182 +vt 0.868571 0.448052 +vt 0.862857 0.448052 +vt 0.882857 0.324675 +vt 0.888571 0.441558 +vt 0.888571 0.324675 +vt 0.877143 0.441558 +vt 0.882857 0.441558 +vt 0.894286 0.324675 +vt 0.894286 0.441558 +vt 0.882857 0.318182 +vt 0.888571 0.448052 +vt 0.882857 0.448052 +vt 0.902857 0.324675 +vt 0.908571 0.441558 +vt 0.908571 0.324675 +vt 0.897143 0.441558 +vt 0.902857 0.441558 +vt 0.914286 0.324675 +vt 0.914286 0.441558 +vt 0.902857 0.318182 +vt 0.908571 0.448052 +vt 0.902857 0.448052 +vt 0.922857 0.324675 +vt 0.928571 0.441558 +vt 0.928571 0.324675 +vt 0.917143 0.441558 +vt 0.922857 0.441558 +vt 0.934286 0.324675 +vt 0.934286 0.441558 +vt 0.922857 0.318182 +vt 0.928571 0.448052 +vt 0.922857 0.448052 +vt 0.842857 0.324675 +vt 0.848571 0.441558 +vt 0.848571 0.324675 +vt 0.837143 0.441558 +vt 0.842857 0.441558 +vt 0.854286 0.324675 +vt 0.854286 0.441558 +vt 0.842857 0.318182 +vt 0.848571 0.448052 +vt 0.842857 0.448052 +vt 0.471429 0.788961 +vt 0.448571 0.685065 +vt 0.471429 0.685065 +vt 0.425714 0.788961 +vt 0.402857 0.685065 +vt 0.425714 0.685065 +vt 0.425714 0.808442 +vt 0.402857 0.860390 +vt 0.402857 0.808442 +vt 0.402857 0.798701 +vt 0.448571 0.788961 +vt 0.471429 0.798701 +vt 0.448571 0.808442 +vt 0.471429 0.808442 +vt 0.448571 0.860390 +vt 0.448571 0.879870 +vt 0.471429 0.889610 +vt 0.448571 0.899351 +vt 0.402857 0.870130 +vt 0.425714 0.860390 +vt 0.425714 0.879870 +vt 0.471429 0.870130 +vt 0.402857 0.899351 +vt 0.425714 0.996753 +vt 0.402857 0.996753 +vt 0.402857 0.889610 +vt 0.425714 0.899351 +vt 0.471429 0.899351 +vt 0.448571 0.996753 +vt 0.377143 0.788961 +vt 0.354286 0.685065 +vt 0.377143 0.685065 +vt 0.331429 0.788961 +vt 0.308571 0.685065 +vt 0.331429 0.685065 +vt 0.331429 0.808442 +vt 0.308571 0.860390 +vt 0.308571 0.808442 +vt 0.308571 0.798701 +vt 0.354286 0.788961 +vt 0.377143 0.798701 +vt 0.354286 0.808442 +vt 0.377143 0.808442 +vt 0.354286 0.860390 +vt 0.354286 0.879870 +vt 0.377143 0.889610 +vt 0.354286 0.899351 +vt 0.308571 0.870130 +vt 0.331429 0.860390 +vt 0.331429 0.879870 +vt 0.377143 0.870130 +vt 0.308571 0.899351 +vt 0.331429 0.996753 +vt 0.308571 0.996753 +vt 0.308571 0.889610 +vt 0.331429 0.899351 +vt 0.377143 0.899351 +vt 0.354286 0.996753 +vt 0.282857 0.788961 +vt 0.260000 0.685065 +vt 0.282857 0.685065 +vt 0.237143 0.788961 +vt 0.214286 0.685065 +vt 0.237143 0.685065 +vt 0.237143 0.808442 +vt 0.214286 0.860390 +vt 0.214286 0.808442 +vt 0.214286 0.798701 +vt 0.260000 0.788961 +vt 0.282857 0.798701 +vt 0.260000 0.808442 +vt 0.282857 0.808442 +vt 0.260000 0.860390 +vt 0.260000 0.879870 +vt 0.282857 0.889610 +vt 0.260000 0.899351 +vt 0.214286 0.870130 +vt 0.237143 0.860390 +vt 0.237143 0.879870 +vt 0.282857 0.870130 +vt 0.214286 0.899351 +vt 0.237143 0.996753 +vt 0.214286 0.996753 +vt 0.214286 0.889610 +vt 0.237143 0.899351 +vt 0.282857 0.899351 +vt 0.260000 0.996753 +vt 0.188571 0.788961 +vt 0.165714 0.685065 +vt 0.188571 0.685065 +vt 0.142857 0.788961 +vt 0.120000 0.685065 +vt 0.142857 0.685065 +vt 0.142857 0.808442 +vt 0.120000 0.860390 +vt 0.120000 0.808442 +vt 0.120000 0.798701 +vt 0.165714 0.788961 +vt 0.188571 0.798701 +vt 0.165714 0.808442 +vt 0.188571 0.808442 +vt 0.165714 0.860390 +vt 0.165714 0.879870 +vt 0.188571 0.889610 +vt 0.165714 0.899351 +vt 0.120000 0.870130 +vt 0.142857 0.860390 +vt 0.142857 0.879870 +vt 0.188571 0.870130 +vt 0.120000 0.899351 +vt 0.142857 0.996753 +vt 0.120000 0.996753 +vt 0.120000 0.889610 +vt 0.142857 0.899351 +vt 0.188571 0.899351 +vt 0.165714 0.996753 +vt 0.094286 0.788961 +vt 0.071429 0.685065 +vt 0.094286 0.685065 +vt 0.048571 0.788961 +vt 0.025714 0.685065 +vt 0.048571 0.685065 +vt 0.048571 0.808442 +vt 0.025714 0.860390 +vt 0.025714 0.808442 +vt 0.025714 0.798701 +vt 0.071429 0.788961 +vt 0.094286 0.798701 +vt 0.071429 0.808442 +vt 0.094286 0.808442 +vt 0.071429 0.860390 +vt 0.071429 0.879870 +vt 0.094286 0.889610 +vt 0.071429 0.899351 +vt 0.025714 0.870130 +vt 0.048571 0.860390 +vt 0.048571 0.879870 +vt 0.094286 0.870130 +vt 0.025714 0.899351 +vt 0.048571 0.996753 +vt 0.025714 0.996753 +vt 0.025714 0.889610 +vt 0.048571 0.899351 +vt 0.094286 0.899351 +vt 0.071429 0.996753 +vt 0.737143 0.240260 +vt 0.234286 0.123377 +vt 0.234286 0.522727 +vt 0.185714 0.574675 +vt 0.737143 0.243506 +vt 0.737143 0.467532 +vt 0.737143 0.525974 +vt 0.234286 0.581169 +vt 0.234286 0.467532 +vt 0.002857 0.003247 +vt 0.234286 0.577922 +vt 0.697143 0.470779 +vt 0.962857 0.490260 +vt 0.997143 0.490260 +vt 0.917143 0.957792 +vt 0.882857 0.957792 +vt 0.751429 0.123377 +vt 0.774286 0.590909 +vt 0.951429 0.451299 +vt 0.928571 0.996753 +vt 0.814286 0.818182 +vt 0.814286 0.792208 +vt 0.842857 0.750000 +vt 0.831429 0.707792 +vt 0.777143 0.818182 +vt 0.777143 0.792208 +vt 0.805714 0.750000 +vt 0.794286 0.707792 +vt 0.740000 0.818182 +vt 0.740000 0.792208 +vt 0.768571 0.750000 +vt 0.757143 0.707792 +vt 0.702857 0.818182 +vt 0.702857 0.792208 +vt 0.731429 0.750000 +vt 0.720000 0.707792 +vt 0.665714 0.818182 +vt 0.665714 0.792208 +vt 0.694286 0.750000 +vt 0.682857 0.707792 +vt 0.628571 0.818182 +vt 0.628571 0.792208 +vt 0.657143 0.750000 +vt 0.645714 0.707792 +vt 0.591429 0.818182 +vt 0.591429 0.792208 +vt 0.620000 0.750000 +vt 0.608571 0.707792 +vt 0.554286 0.818182 +vt 0.554286 0.792208 +vt 0.582857 0.750000 +vt 0.571429 0.707792 +vt 0.517143 0.818182 +vt 0.517143 0.792208 +vt 0.545714 0.750000 +vt 0.534286 0.707792 +vt 0.480000 0.818182 +vt 0.480000 0.792208 +vt 0.508571 0.750000 +vt 0.497143 0.707792 +vt 0.851429 0.818182 +vt 0.851429 0.792208 +vt 0.880000 0.750000 +vt 0.868571 0.707792 +vt 0.517143 0.957792 +vt 0.540000 0.996753 +vt 0.540000 0.938312 +vt 0.511429 0.896104 +vt 0.522857 0.853896 +vt 0.554286 0.957792 +vt 0.577143 0.996753 +vt 0.577143 0.938312 +vt 0.548571 0.896104 +vt 0.560000 0.853896 +vt 0.591429 0.957792 +vt 0.614286 0.996753 +vt 0.614286 0.938312 +vt 0.585714 0.896104 +vt 0.597143 0.853896 +vt 0.628571 0.957792 +vt 0.651429 0.996753 +vt 0.651429 0.938312 +vt 0.622857 0.896104 +vt 0.634286 0.853896 +vt 0.665714 0.957792 +vt 0.688571 0.996753 +vt 0.688571 0.938312 +vt 0.660000 0.896104 +vt 0.671429 0.853896 +vt 0.702857 0.957792 +vt 0.725714 0.996753 +vt 0.725714 0.938312 +vt 0.697143 0.896104 +vt 0.708571 0.853896 +vt 0.740000 0.957792 +vt 0.762857 0.996753 +vt 0.762857 0.938312 +vt 0.734286 0.896104 +vt 0.745714 0.853896 +vt 0.777143 0.957792 +vt 0.800000 0.996753 +vt 0.800000 0.938312 +vt 0.771429 0.896104 +vt 0.782857 0.853896 +vt 0.814286 0.957792 +vt 0.837143 0.996753 +vt 0.837143 0.938312 +vt 0.808571 0.896104 +vt 0.820000 0.853896 +vt 0.851429 0.957792 +vt 0.874286 0.996753 +vt 0.874286 0.938312 +vt 0.845714 0.896104 +vt 0.857143 0.853896 +vt 0.480000 0.957792 +vt 0.502857 0.996753 +vt 0.502857 0.938312 +vt 0.474286 0.896104 +vt 0.485714 0.853896 +vt 0.814286 0.159091 +vt 0.820000 0.126623 +vt 0.817143 0.090909 +vt 0.834286 0.129870 +vt 0.837143 0.126623 +vt 0.885714 0.126623 +vt 0.902857 0.126623 +vt 0.857143 0.308442 +vt 0.874286 0.308442 +vt 0.868571 0.185065 +vt 0.877143 0.308442 +vt 0.894286 0.308442 +vt 0.888571 0.185065 +vt 0.897143 0.308442 +vt 0.914286 0.308442 +vt 0.908571 0.185065 +vt 0.917143 0.308442 +vt 0.934286 0.308442 +vt 0.928571 0.185065 +vt 0.837143 0.308442 +vt 0.854286 0.308442 +vt 0.848571 0.185065 +vt 0.857143 0.324675 +vt 0.868571 0.318182 +vt 0.877143 0.324675 +vt 0.888571 0.318182 +vt 0.897143 0.324675 +vt 0.908571 0.318182 +vt 0.917143 0.324675 +vt 0.928571 0.318182 +vt 0.837143 0.324675 +vt 0.848571 0.318182 +vt 0.402857 0.788961 +vt 0.471429 0.860390 +vt 0.471429 0.996753 +vt 0.308571 0.788961 +vt 0.377143 0.860390 +vt 0.377143 0.996753 +vt 0.214286 0.788961 +vt 0.282857 0.860390 +vt 0.282857 0.996753 +vt 0.120000 0.788961 +vt 0.188571 0.860390 +vt 0.188571 0.996753 +vt 0.025714 0.788961 +vt 0.094286 0.860390 +vt 0.094286 0.996753 +vt 0.380000 0.685065 +vt 0.380000 0.860390 +vt 0.380000 0.808442 +vt 0.380000 0.996753 +vt 0.380000 0.899351 +vt 0.285714 0.685065 +vt 0.285714 0.860390 +vt 0.285714 0.808442 +vt 0.285714 0.996753 +vt 0.285714 0.899351 +vt 0.191429 0.685065 +vt 0.191429 0.860390 +vt 0.191429 0.808442 +vt 0.191429 0.996753 +vt 0.191429 0.899351 +vt 0.097143 0.685065 +vt 0.097143 0.860390 +vt 0.097143 0.808442 +vt 0.097143 0.996753 +vt 0.097143 0.899351 +vt 0.002857 0.685065 +vt 0.002857 0.860390 +vt 0.002857 0.808442 +vt 0.002857 0.996753 +vt 0.002857 0.899351 +vt 0.380000 0.788961 +vt 0.285714 0.788961 +vt 0.191429 0.788961 +vt 0.097143 0.788961 +vt 0.002857 0.788961 vn 0.0000 0.0000 -1.0000 -vn 0.0000 -0.0000 1.0000 -vn 0.0000 -1.0000 -0.0000 -vn -0.0000 1.0000 0.0000 -vn 1.0000 -0.0000 -0.0000 -vn -1.0000 -0.0000 -0.0000 -vn 0.0000 0.3387 0.9409 -vn 0.0000 0.3387 -0.9409 -vn 0.8575 0.5145 0.0000 -vn -0.8575 0.5145 -0.0000 -vn -0.5485 -0.2213 0.8063 -vn -0.7109 0.0123 -0.7032 -vn -0.7109 0.0123 0.7032 -vn 0.7344 0.1383 -0.6644 -vn 0.7031 -0.0120 0.7109 -vn 0.7031 -0.0120 -0.7109 -vn 0.6216 0.4135 0.6653 -vn 0.7345 0.1380 0.6644 -vn 0.6216 0.4135 -0.6653 -vn 0.4148 0.6202 0.6658 -vn -0.2279 -0.5489 -0.8043 -vn -0.5485 -0.2213 -0.8063 -vn 0.1458 0.7319 -0.6656 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.8944 0.4472 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.8944 0.4472 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 vn 0.0000 0.7071 0.7071 -vn 0.1458 0.7319 0.6656 -vn 0.4148 0.6202 -0.6658 -vn -0.2279 -0.5489 0.8043 -vn -0.0005 -0.7070 -0.7073 -vn 0.4147 0.6202 0.6658 -vn 0.4146 0.6203 -0.6658 -vn -0.2277 -0.5489 -0.8043 -vn 0.4147 0.6202 -0.6658 -vn -0.2278 -0.5489 0.8043 -vn 0.7345 0.1381 0.6644 -vn -0.0003 0.7071 -0.7071 -vn -0.0004 -0.7070 0.7073 -usemtl Material.001 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn -0.4472 -0.8944 0.0000 +vn 0.4472 0.8944 0.0000 +vn 0.4472 -0.8944 0.0000 +vn -0.4472 0.8944 0.0000 +vn -0.5491 -0.2275 0.8042 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7319 0.1456 -0.6657 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.6204 0.4146 0.6657 +vn 0.7319 0.1456 0.6657 +vn 0.4146 0.6204 -0.6657 +vn 0.0000 0.7764 0.6302 +vn 0.4146 0.6204 0.6657 +vn 0.6204 0.4146 -0.6657 +vn 0.0000 -0.4264 -0.9045 +vn -0.5491 -0.2275 -0.8042 +vn 0.0000 0.7764 -0.6302 +vn -0.4146 0.6204 0.6657 +vn 0.0000 -0.4264 0.9045 +vn 0.5000 -0.5000 -0.7071 +vn -0.4146 0.6204 -0.6657 +vn -0.5000 0.5000 0.7071 +vn 0.5000 -0.5000 0.7071 +vn -0.5000 0.5000 -0.7071 +usemtl None s off -f 1/1/1 2/2/1 3/3/1 -f 4/4/2 5/5/2 6/6/2 -f 5/7/2 7/8/2 8/9/2 -f 9/10/1 1/11/1 10/12/1 -f 11/13/2 12/14/2 13/15/2 -f 8/16/2 11/17/2 5/5/2 -f 10/18/1 14/19/1 15/20/1 -f 15/21/1 14/22/1 16/23/1 -f 13/24/2 17/25/2 11/17/2 -f 16/26/1 18/27/1 19/28/1 -f 20/29/1 21/30/1 22/31/1 -f 23/32/2 24/33/2 25/34/2 -f 24/35/2 26/36/2 27/37/2 -f 28/38/1 20/39/1 29/40/1 -f 30/41/2 31/42/2 32/43/2 -f 27/44/2 30/45/2 24/33/2 -f 29/46/1 33/47/1 34/48/1 -f 34/49/1 33/50/1 35/51/1 -f 32/52/2 36/53/2 30/45/2 -f 35/54/1 37/55/1 38/56/1 -f 39/57/1 40/58/1 41/59/1 -f 42/60/2 43/61/2 44/62/2 -f 43/63/2 45/64/2 46/65/2 -f 47/66/1 39/67/1 48/68/1 -f 49/69/2 50/70/2 51/71/2 -f 46/72/2 49/73/2 43/61/2 -f 48/74/1 52/75/1 53/76/1 -f 53/77/1 52/78/1 54/79/1 -f 51/80/2 55/81/2 49/73/2 -f 54/82/1 56/83/1 57/84/1 -f 58/85/1 59/86/1 60/87/1 -f 61/88/2 62/89/2 63/90/2 -f 62/91/2 64/92/2 65/93/2 -f 66/94/1 58/95/1 67/96/1 -f 68/97/2 69/98/2 70/99/2 -f 65/100/2 68/101/2 62/89/2 -f 67/102/1 71/103/1 72/104/1 -f 72/105/1 71/106/1 73/107/1 -f 70/108/2 74/109/2 68/101/2 -f 73/110/1 75/111/1 76/112/1 -f 77/113/3 78/114/3 79/115/3 -f 80/116/4 81/117/4 82/118/4 -f 83/119/5 84/120/5 85/121/5 -f 82/122/2 86/123/2 77/124/2 -f 81/125/6 78/126/6 86/123/6 -f 80/127/1 78/128/1 87/129/1 -f 85/121/1 88/130/1 83/119/1 -f 89/131/1 80/127/1 88/130/1 -f 90/132/2 91/133/2 84/134/2 -f 92/135/2 77/124/2 91/133/2 -f 83/136/4 92/137/4 90/138/4 -f 92/139/7 93/140/7 82/141/7 -f 84/142/3 89/143/3 85/144/3 -f 91/145/3 79/115/3 89/143/3 -f 94/146/1 95/147/1 96/148/1 -f 80/149/8 97/150/8 88/151/8 -f 88/152/9 98/153/9 92/154/9 -f 82/155/10 99/156/10 80/157/10 -f 100/158/5 101/159/5 102/160/5 -f 103/161/1 104/162/1 105/163/1 -f 94/164/4 106/165/4 107/166/4 -f 108/167/4 109/168/4 102/169/4 -f 110/170/4 111/171/4 112/172/4 -f 110/170/4 113/173/4 108/167/4 -f 102/169/4 114/174/4 100/175/4 -f 101/159/4 115/176/4 116/177/4 -f 110/178/1 117/179/1 100/180/1 -f 108/181/6 115/176/6 110/182/6 -f 102/183/2 116/177/2 108/184/2 -f 118/185/3 119/186/3 120/187/3 -f 121/188/4 122/189/4 103/190/4 -f 120/191/1 123/192/1 124/193/1 -f 125/194/3 126/195/3 127/196/3 -f 128/197/2 129/198/2 118/199/2 -f 130/200/2 111/201/2 93/140/2 -f 127/202/2 131/203/2 132/204/2 -f 124/205/4 133/206/4 128/207/4 -f 134/208/1 135/209/1 125/210/1 -f 136/211/3 137/212/3 138/213/3 -f 132/214/4 139/215/4 134/216/4 -f 138/217/2 140/218/2 141/219/2 -f 97/220/5 94/221/5 142/222/5 -f 143/223/5 144/224/5 97/220/5 -f 145/225/5 146/226/5 143/223/5 -f 142/222/5 96/227/5 145/225/5 -f 147/228/6 148/229/6 149/230/6 -f 111/231/6 148/229/6 93/232/6 -f 150/233/6 151/234/6 111/231/6 -f 147/228/6 152/235/6 150/233/6 -f 99/236/6 153/237/6 154/238/6 -f 114/239/6 155/240/6 99/236/6 -f 156/241/6 157/242/6 114/239/6 -f 154/238/6 158/243/6 156/241/6 -f 98/244/5 159/245/5 160/246/5 -f 113/247/5 161/248/5 98/244/5 -f 113/247/5 162/249/5 163/250/5 -f 160/246/5 162/249/5 164/251/5 -f 165/252/5 134/253/5 166/254/5 -f 165/252/5 127/255/5 132/256/5 -f 167/257/5 125/258/5 127/255/5 -f 166/254/5 125/258/5 168/259/5 -f 169/260/6 170/261/6 171/262/6 -f 172/263/6 170/261/6 173/264/6 -f 174/265/6 175/266/6 172/263/6 -f 169/260/6 176/267/6 174/265/6 -f 177/268/6 178/269/6 179/270/6 -f 180/271/6 178/269/6 181/272/6 -f 182/273/6 183/274/6 180/271/6 -f 177/268/6 184/275/6 182/273/6 -f 185/276/5 141/277/5 186/278/5 -f 187/279/5 141/277/5 188/280/5 -f 189/281/5 138/282/5 187/279/5 -f 185/276/5 136/283/5 189/281/5 -f 185/276/5 190/284/5 98/244/5 -f 189/281/5 191/285/5 185/276/5 -f 189/281/5 192/286/5 193/287/5 -f 98/244/5 192/286/5 113/247/5 -f 99/236/6 194/288/6 195/289/6 -f 182/273/6 194/288/6 177/268/6 -f 114/239/6 196/290/6 182/273/6 -f 99/236/6 197/291/6 114/239/6 -f 169/260/6 198/292/6 199/293/6 -f 174/265/6 200/294/6 169/260/6 -f 109/295/6 201/296/6 174/265/6 -f 199/293/6 202/297/6 109/295/6 -f 166/254/5 103/298/5 130/299/5 -f 166/254/5 203/300/5 121/301/5 -f 168/259/5 105/302/5 203/300/5 -f 130/299/5 105/302/5 112/303/5 -f 160/246/5 204/304/5 165/252/5 -f 164/251/5 205/305/5 160/246/5 -f 164/251/5 206/306/5 207/307/5 -f 165/252/5 206/306/5 167/257/5 -f 154/238/6 208/308/6 173/264/6 -f 156/241/6 209/309/6 154/238/6 -f 172/263/6 210/310/6 156/241/6 -f 173/264/6 211/311/6 172/263/6 -f 181/272/6 124/312/6 128/313/6 -f 150/233/6 124/312/6 147/228/6 -f 180/271/6 120/314/6 150/233/6 -f 181/272/6 118/315/6 180/271/6 -f 142/222/5 212/316/5 188/280/5 -f 145/225/5 213/317/5 142/222/5 -f 145/225/5 214/318/5 215/319/5 -f 188/280/5 214/318/5 187/279/5 -f 106/165/5 95/147/5 107/166/5 -f 109/320/1 97/150/1 199/321/1 -f 216/322/6 217/323/6 218/324/6 -f 219/325/6 220/326/6 221/327/6 -f 222/328/5 223/329/5 224/330/5 -f 131/203/5 135/209/5 139/215/5 -f 225/331/6 226/332/6 227/333/6 -f 228/334/6 229/335/6 230/336/6 -f 140/218/5 231/337/5 232/338/5 -f 233/339/5 234/340/5 235/341/5 -f 236/342/6 237/343/6 238/344/6 -f 239/345/6 240/346/6 241/347/6 -f 242/348/5 104/162/5 122/189/5 -f 243/349/5 244/350/5 245/351/5 -f 246/352/6 247/353/6 248/354/6 -f 123/192/6 129/198/6 133/206/6 -f 249/355/5 250/356/5 251/357/5 -f 203/358/2 242/348/2 121/359/2 -f 191/360/4 235/341/4 190/361/4 -f 146/362/2 106/165/2 144/363/2 -f 105/364/3 252/365/3 203/366/3 -f 190/367/1 234/340/1 192/368/1 -f 96/369/3 253/370/3 146/371/3 -f 193/372/2 233/339/2 191/373/2 -f 170/374/4 227/333/4 171/375/4 -f 192/376/3 254/377/3 193/378/3 -f 171/379/2 226/332/2 176/380/2 -f 213/381/4 251/357/4 212/382/4 -f 175/383/1 225/331/1 170/384/1 -f 155/385/4 221/327/4 153/386/4 -f 212/387/1 250/388/1 214/389/1 -f 176/390/3 255/391/3 175/392/3 -f 153/393/2 220/394/2 158/395/2 -f 215/396/2 249/355/2 213/397/2 -f 205/398/4 245/351/4 204/399/4 -f 157/400/1 219/325/1 155/401/1 -f 214/402/3 256/403/3 215/404/3 -f 204/405/1 244/406/1 206/407/1 -f 158/408/3 257/409/3 157/410/3 -f 207/411/2 243/349/2 205/412/2 -f 194/413/4 238/344/4 195/414/4 -f 206/415/3 258/416/3 207/417/3 -f 195/418/2 237/343/2 197/419/2 -f 196/420/1 236/342/1 194/421/1 -f 178/422/4 230/336/4 179/423/4 -f 197/424/3 259/425/3 196/426/3 -f 179/427/2 229/428/2 184/429/2 -f 183/430/1 228/334/1 178/431/1 -f 161/432/4 224/330/4 159/433/4 -f 184/434/3 260/435/3 183/436/3 -f 159/437/1 223/329/1 162/438/1 -f 209/439/4 248/354/4 208/440/4 -f 163/441/2 222/328/2 161/442/2 -f 148/443/4 218/324/4 149/444/4 -f 208/445/2 247/353/2 211/446/2 -f 162/447/3 261/448/3 163/449/3 -f 149/450/2 217/323/2 152/451/2 -f 210/452/1 246/352/1 209/453/1 -f 200/454/4 241/347/4 198/455/4 -f 151/456/1 216/322/1 148/457/1 -f 211/458/3 262/459/3 210/460/3 -f 198/461/2 240/462/2 202/463/2 -f 152/464/3 263/465/3 151/466/3 -f 201/467/1 239/345/1 200/468/1 -f 186/469/4 140/218/4 232/338/4 -f 202/470/3 264/471/3 201/472/3 -f 186/473/1 231/474/1 136/475/1 -f 265/476/1 266/477/1 267/478/1 -f 268/479/5 269/480/5 266/477/5 -f 270/481/2 271/482/2 269/480/2 -f 265/483/4 270/481/4 268/479/4 -f 272/484/1 273/485/1 274/486/1 -f 275/487/5 276/488/5 273/485/5 -f 277/489/2 278/490/2 276/488/2 -f 272/491/4 277/489/4 275/487/4 -f 279/492/1 280/493/1 281/494/1 -f 282/495/5 283/496/5 280/493/5 -f 284/497/2 285/498/2 283/496/2 -f 279/499/4 284/497/4 282/495/4 -f 286/500/1 287/501/1 288/502/1 -f 289/503/5 290/504/5 287/501/5 -f 291/505/2 292/506/2 290/504/2 -f 286/507/4 291/505/4 289/503/4 -f 293/508/1 294/509/1 295/510/1 -f 296/511/5 297/512/5 294/509/5 -f 298/513/2 299/514/2 297/512/2 -f 293/515/4 298/513/4 296/511/4 -f 300/516/1 301/517/1 302/518/1 -f 303/519/5 304/520/5 301/517/5 -f 305/521/2 306/522/2 304/520/2 -f 300/523/4 305/521/4 303/519/4 -f 307/524/1 308/525/1 309/526/1 -f 310/527/5 311/528/5 308/525/5 -f 312/529/2 313/530/2 311/528/2 -f 307/531/4 312/529/4 310/527/4 -f 314/532/1 315/533/1 316/534/1 -f 317/535/5 318/536/5 315/533/5 -f 319/537/2 320/538/2 318/536/2 -f 314/539/4 319/537/4 317/535/4 -f 321/540/1 322/541/1 323/542/1 -f 324/543/6 325/544/6 321/540/6 -f 326/545/2 327/546/2 324/543/2 -f 327/546/4 322/547/4 325/544/4 -f 328/548/1 329/549/1 330/550/1 -f 331/551/6 332/552/6 328/548/6 -f 333/553/2 334/554/2 331/551/2 -f 334/554/4 329/555/4 332/552/4 -f 335/556/1 336/557/1 337/558/1 -f 338/559/6 339/560/6 335/556/6 -f 340/561/2 341/562/2 338/559/2 -f 341/562/4 336/563/4 339/560/4 -f 342/564/1 343/565/1 344/566/1 -f 345/567/6 346/568/6 342/564/6 -f 347/569/2 348/570/2 345/567/2 -f 348/570/4 343/571/4 346/568/4 -f 349/572/1 350/573/1 351/574/1 -f 352/575/6 353/576/6 349/572/6 -f 354/577/2 355/578/2 352/575/2 -f 355/578/4 350/579/4 353/576/4 -f 356/580/1 357/581/1 358/582/1 -f 359/583/6 360/584/6 356/580/6 -f 361/585/2 362/586/2 359/583/2 -f 362/586/4 357/587/4 360/584/4 -f 363/588/1 364/589/1 365/590/1 -f 366/591/6 367/592/6 363/588/6 -f 368/593/2 369/594/2 366/591/2 -f 369/594/4 364/595/4 367/592/4 -f 370/596/1 371/597/1 372/598/1 -f 373/599/6 374/600/6 370/596/6 -f 375/601/2 376/602/2 373/599/2 -f 376/602/4 371/603/4 374/600/4 -f 1/1/1 9/604/1 2/2/1 -f 4/4/2 7/605/2 5/5/2 -f 8/16/2 12/606/2 11/17/2 -f 10/18/1 1/1/1 14/19/1 -f 13/24/2 377/607/2 17/25/2 -f 16/26/1 14/19/1 18/27/1 -f 20/29/1 28/608/1 21/30/1 -f 23/32/2 26/609/2 24/33/2 -f 27/44/2 31/610/2 30/45/2 -f 29/46/1 20/29/1 33/47/1 -f 32/52/2 378/611/2 36/53/2 -f 35/54/1 33/47/1 37/55/1 -f 39/57/1 47/612/1 40/58/1 -f 42/60/2 45/613/2 43/61/2 -f 46/72/2 50/614/2 49/73/2 -f 48/74/1 39/57/1 52/75/1 -f 51/80/2 379/615/2 55/81/2 -f 54/82/1 52/75/1 56/83/1 -f 58/85/1 66/616/1 59/86/1 -f 61/88/2 64/617/2 62/89/2 -f 65/100/2 69/618/2 68/101/2 -f 67/102/1 58/85/1 71/103/1 -f 70/108/2 380/619/2 74/109/2 -f 73/110/1 71/103/1 75/111/1 -f 77/113/3 86/620/3 78/114/3 -f 80/116/4 87/621/4 81/117/4 -f 83/119/5 90/622/5 84/120/5 -f 82/122/2 81/125/2 86/123/2 -f 81/125/6 87/623/6 78/126/6 -f 80/127/1 79/624/1 78/128/1 -f 85/121/1 89/131/1 88/130/1 -f 89/131/1 79/624/1 80/127/1 -f 90/132/2 92/135/2 91/133/2 -f 92/135/2 82/122/2 77/124/2 -f 83/136/4 88/625/4 92/137/4 -f 92/139/7 130/200/7 93/140/7 -f 84/142/3 91/145/3 89/143/3 -f 91/145/3 77/113/3 79/115/3 -f 94/146/1 107/166/1 95/147/1 -f 80/149/8 199/321/8 97/150/8 -f 130/626/9 92/154/9 166/627/9 -f 88/152/9 97/628/9 142/629/9 -f 188/630/9 185/631/9 88/152/9 -f 88/152/9 142/629/9 188/630/9 -f 166/627/9 92/154/9 165/632/9 -f 98/153/9 160/633/9 92/154/9 -f 165/632/9 92/154/9 160/633/9 -f 88/152/9 185/631/9 98/153/9 -f 199/634/10 80/157/10 169/635/10 -f 82/155/10 93/636/10 147/637/10 -f 181/638/10 177/639/10 82/155/10 -f 82/155/10 147/637/10 181/638/10 -f 169/635/10 80/157/10 173/640/10 -f 154/641/10 173/640/10 80/157/10 -f 82/155/10 177/639/10 99/156/10 -f 99/156/10 154/641/10 80/157/10 -f 100/158/5 117/179/5 101/159/5 -f 103/161/1 122/189/1 104/162/1 -f 94/164/4 144/642/4 106/165/4 -f 108/167/4 143/643/4 109/168/4 -f 110/170/4 100/175/4 111/171/4 -f 143/643/4 108/167/4 145/644/4 -f 110/170/4 112/172/4 168/645/4 -f 110/170/4 168/645/4 167/646/4 -f 145/644/4 108/167/4 187/647/4 -f 113/173/4 189/648/4 108/167/4 -f 187/647/4 108/167/4 189/648/4 -f 110/170/4 167/646/4 164/649/4 -f 164/649/4 113/173/4 110/170/4 -f 111/171/4 100/175/4 150/650/4 -f 102/169/4 109/168/4 174/651/4 -f 172/652/4 156/653/4 102/169/4 -f 102/169/4 174/651/4 172/652/4 -f 150/650/4 100/175/4 180/654/4 -f 182/655/4 180/654/4 100/175/4 -f 102/169/4 156/653/4 114/174/4 -f 114/174/4 182/655/4 100/175/4 -f 101/159/4 117/179/4 115/176/4 -f 110/178/1 115/176/1 117/179/1 -f 108/181/6 116/177/6 115/176/6 -f 102/183/2 101/159/2 116/177/2 -f 118/185/3 129/198/3 119/186/3 -f 121/188/4 242/348/4 122/189/4 -f 120/191/1 119/186/1 123/192/1 -f 125/194/3 135/209/3 126/195/3 -f 128/197/2 133/206/2 129/198/2 -f 130/200/2 112/656/2 111/201/2 -f 127/202/2 126/195/2 131/203/2 -f 124/205/4 123/192/4 133/206/4 -f 134/208/1 139/215/1 135/209/1 -f 136/211/3 231/337/3 137/212/3 -f 132/214/4 131/203/4 139/215/4 -f 138/217/2 137/212/2 140/218/2 -f 97/220/5 144/224/5 94/221/5 -f 143/223/5 146/226/5 144/224/5 -f 145/225/5 96/227/5 146/226/5 -f 142/222/5 94/221/5 96/227/5 -f 147/228/6 93/232/6 148/229/6 -f 111/231/6 151/234/6 148/229/6 -f 150/233/6 152/235/6 151/234/6 -f 147/228/6 149/230/6 152/235/6 -f 99/236/6 155/240/6 153/237/6 -f 114/239/6 157/242/6 155/240/6 -f 156/241/6 158/243/6 157/242/6 -f 154/238/6 153/237/6 158/243/6 -f 98/244/5 161/248/5 159/245/5 -f 113/247/5 163/250/5 161/248/5 -f 113/247/5 164/251/5 162/249/5 -f 160/246/5 159/245/5 162/249/5 -f 165/252/5 132/256/5 134/253/5 -f 165/252/5 167/257/5 127/255/5 -f 167/257/5 168/259/5 125/258/5 -f 166/254/5 134/253/5 125/258/5 -f 169/260/6 173/264/6 170/261/6 -f 172/263/6 175/266/6 170/261/6 -f 174/265/6 176/267/6 175/266/6 -f 169/260/6 171/262/6 176/267/6 -f 177/268/6 181/272/6 178/269/6 -f 180/271/6 183/274/6 178/269/6 -f 182/273/6 184/275/6 183/274/6 -f 177/268/6 179/270/6 184/275/6 -f 185/276/5 188/280/5 141/277/5 -f 187/279/5 138/282/5 141/277/5 -f 189/281/5 136/283/5 138/282/5 -f 185/276/5 186/278/5 136/283/5 -f 185/276/5 191/285/5 190/284/5 -f 189/281/5 193/287/5 191/285/5 -f 189/281/5 113/247/5 192/286/5 -f 98/244/5 190/284/5 192/286/5 -f 99/236/6 177/268/6 194/288/6 -f 182/273/6 196/290/6 194/288/6 -f 114/239/6 197/291/6 196/290/6 -f 99/236/6 195/289/6 197/291/6 -f 169/260/6 200/294/6 198/292/6 -f 174/265/6 201/296/6 200/294/6 -f 109/295/6 202/297/6 201/296/6 -f 199/293/6 198/292/6 202/297/6 -f 166/254/5 121/301/5 103/298/5 -f 166/254/5 168/259/5 203/300/5 -f 168/259/5 112/303/5 105/302/5 -f 130/299/5 103/298/5 105/302/5 -f 160/246/5 205/305/5 204/304/5 -f 164/251/5 207/307/5 205/305/5 -f 164/251/5 167/257/5 206/306/5 -f 165/252/5 204/304/5 206/306/5 -f 154/238/6 209/309/6 208/308/6 -f 156/241/6 210/310/6 209/309/6 -f 172/263/6 211/311/6 210/310/6 -f 173/264/6 208/308/6 211/311/6 -f 181/272/6 147/228/6 124/312/6 -f 150/233/6 120/314/6 124/312/6 -f 180/271/6 118/315/6 120/314/6 -f 181/272/6 128/313/6 118/315/6 -f 142/222/5 213/317/5 212/316/5 -f 145/225/5 215/319/5 213/317/5 -f 145/225/5 187/279/5 214/318/5 -f 188/280/5 212/316/5 214/318/5 -f 106/165/5 253/370/5 95/147/5 -f 109/320/1 143/657/1 97/150/1 -f 216/322/6 263/465/6 217/323/6 -f 219/325/6 257/409/6 220/326/6 -f 222/328/5 261/448/5 223/329/5 -f 131/203/5 126/195/5 135/209/5 -f 225/331/6 255/391/6 226/332/6 -f 228/334/6 260/435/6 229/335/6 -f 140/218/5 137/212/5 231/337/5 -f 233/339/5 254/377/5 234/340/5 -f 236/342/6 259/425/6 237/343/6 -f 239/345/6 264/471/6 240/346/6 -f 242/348/5 252/365/5 104/162/5 -f 243/349/5 258/416/5 244/350/5 -f 246/352/6 262/459/6 247/353/6 -f 123/192/6 119/186/6 129/198/6 -f 249/355/5 256/403/5 250/356/5 -f 203/358/2 252/365/2 242/348/2 -f 191/360/4 233/339/4 235/341/4 -f 146/362/2 253/370/2 106/165/2 -f 105/364/3 104/162/3 252/365/3 -f 190/367/1 235/341/1 234/340/1 -f 96/369/3 95/147/3 253/370/3 -f 193/372/2 254/377/2 233/339/2 -f 170/374/4 225/331/4 227/333/4 -f 192/376/3 234/340/3 254/377/3 -f 171/379/2 227/333/2 226/332/2 -f 213/381/4 249/355/4 251/357/4 -f 175/383/1 255/391/1 225/331/1 -f 155/385/4 219/325/4 221/327/4 -f 212/387/1 251/658/1 250/388/1 -f 176/390/3 226/332/3 255/391/3 -f 153/393/2 221/659/2 220/394/2 -f 215/396/2 256/403/2 249/355/2 -f 205/398/4 243/349/4 245/351/4 -f 157/400/1 257/409/1 219/325/1 -f 214/402/3 250/356/3 256/403/3 -f 204/405/1 245/660/1 244/406/1 -f 158/408/3 220/326/3 257/409/3 -f 207/411/2 258/416/2 243/349/2 -f 194/413/4 236/342/4 238/344/4 -f 206/415/3 244/350/3 258/416/3 -f 195/418/2 238/344/2 237/343/2 -f 196/420/1 259/425/1 236/342/1 -f 178/422/4 228/334/4 230/336/4 -f 197/424/3 237/343/3 259/425/3 -f 179/427/2 230/661/2 229/428/2 -f 183/430/1 260/435/1 228/334/1 -f 161/432/4 222/328/4 224/330/4 -f 184/434/3 229/335/3 260/435/3 -f 159/437/1 224/330/1 223/329/1 -f 209/439/4 246/352/4 248/354/4 -f 163/441/2 261/448/2 222/328/2 -f 148/443/4 216/322/4 218/324/4 -f 208/445/2 248/354/2 247/353/2 -f 162/447/3 223/329/3 261/448/3 -f 149/450/2 218/324/2 217/323/2 -f 210/452/1 262/459/1 246/352/1 -f 200/454/4 239/345/4 241/347/4 -f 151/456/1 263/465/1 216/322/1 -f 211/458/3 247/353/3 262/459/3 -f 198/461/2 241/662/2 240/462/2 -f 152/464/3 217/323/3 263/465/3 -f 201/467/1 264/471/1 239/345/1 -f 186/469/4 141/663/4 140/218/4 -f 202/470/3 240/346/3 264/471/3 -f 186/473/1 232/664/1 231/474/1 -f 265/476/1 268/479/1 266/477/1 -f 268/479/5 270/481/5 269/480/5 -f 270/481/2 381/665/2 271/482/2 -f 265/483/4 381/666/4 270/481/4 -f 272/484/1 275/487/1 273/485/1 -f 275/487/5 277/489/5 276/488/5 -f 277/489/2 382/667/2 278/490/2 -f 272/491/4 382/668/4 277/489/4 -f 279/492/1 282/495/1 280/493/1 -f 282/495/5 284/497/5 283/496/5 -f 284/497/2 383/669/2 285/498/2 -f 279/499/4 383/670/4 284/497/4 -f 286/500/1 289/503/1 287/501/1 -f 289/503/5 291/505/5 290/504/5 -f 291/505/2 384/671/2 292/506/2 -f 286/507/4 384/672/4 291/505/4 -f 293/508/1 296/511/1 294/509/1 -f 296/511/5 298/513/5 297/512/5 -f 298/513/2 385/673/2 299/514/2 -f 293/515/4 385/674/4 298/513/4 -f 300/516/1 303/519/1 301/517/1 -f 303/519/5 305/521/5 304/520/5 -f 305/521/2 386/675/2 306/522/2 -f 300/523/4 386/676/4 305/521/4 -f 307/524/1 310/527/1 308/525/1 -f 310/527/5 312/529/5 311/528/5 -f 312/529/2 387/677/2 313/530/2 -f 307/531/4 387/678/4 312/529/4 -f 314/532/1 317/535/1 315/533/1 -f 317/535/5 319/537/5 318/536/5 -f 319/537/2 388/679/2 320/538/2 -f 314/539/4 388/680/4 319/537/4 -f 321/540/1 325/544/1 322/541/1 -f 324/543/6 327/546/6 325/544/6 -f 326/545/2 389/681/2 327/546/2 -f 327/546/4 389/682/4 322/547/4 -f 328/548/1 332/552/1 329/549/1 -f 331/551/6 334/554/6 332/552/6 -f 333/553/2 390/683/2 334/554/2 -f 334/554/4 390/684/4 329/555/4 -f 335/556/1 339/560/1 336/557/1 -f 338/559/6 341/562/6 339/560/6 -f 340/561/2 391/685/2 341/562/2 -f 341/562/4 391/686/4 336/563/4 -f 342/564/1 346/568/1 343/565/1 -f 345/567/6 348/570/6 346/568/6 -f 347/569/2 392/687/2 348/570/2 -f 348/570/4 392/688/4 343/571/4 -f 349/572/1 353/576/1 350/573/1 -f 352/575/6 355/578/6 353/576/6 -f 354/577/2 393/689/2 355/578/2 -f 355/578/4 393/690/4 350/579/4 -f 356/580/1 360/584/1 357/581/1 -f 359/583/6 362/586/6 360/584/6 -f 361/585/2 394/691/2 362/586/2 -f 362/586/4 394/692/4 357/587/4 -f 363/588/1 367/592/1 364/589/1 -f 366/591/6 369/594/6 367/592/6 -f 368/593/2 395/693/2 369/594/2 -f 369/594/4 395/694/4 364/595/4 -f 370/596/1 374/600/1 371/597/1 -f 373/599/6 376/602/6 374/600/6 -f 375/601/2 396/695/2 376/602/2 -f 376/602/4 396/696/4 371/603/4 +f 224/1/1 2/2/1 221/3/1 +f 153/4/2 179/5/2 156/6/2 +f 221/3/1 2/2/1 10/7/1 +f 163/8/3 186/9/3 162/10/3 +f 31/11/1 1/12/1 224/1/1 +f 221/13/4 9/14/4 222/15/4 +f 105/16/5 324/17/5 104/18/5 +f 8/19/4 222/15/4 9/14/4 +f 7/20/4 232/21/4 8/19/4 +f 6/22/4 233/23/4 7/20/4 +f 41/24/4 234/25/4 6/22/4 +f 42/26/4 235/27/4 41/24/4 +f 43/28/4 236/29/4 42/26/4 +f 44/30/4 237/31/4 43/28/4 +f 126/32/4 242/33/4 202/34/4 +f 31/35/1 20/36/1 53/37/1 +f 45/38/6 64/39/6 3/40/6 +f 219/41/3 257/42/3 100/43/3 +f 89/44/2 256/45/2 90/46/2 +f 99/47/3 278/48/3 98/49/3 +f 88/50/2 271/51/2 89/44/2 +f 98/49/3 277/52/3 97/53/3 +f 91/54/2 281/55/2 217/56/2 +f 104/57/3 263/58/3 314/59/3 +f 160/60/6 184/61/6 159/62/6 +f 74/63/6 53/64/6 54/65/6 +f 64/39/6 73/66/6 74/63/6 +f 74/63/6 65/67/6 64/39/6 +f 75/68/6 66/69/6 65/67/6 +f 76/70/6 67/71/6 66/69/6 +f 77/72/6 68/73/6 67/71/6 +f 78/74/6 69/75/6 68/73/6 +f 79/76/6 70/77/6 69/75/6 +f 80/78/6 71/79/6 70/77/6 +f 215/80/6 122/81/6 213/82/6 +f 32/83/7 224/84/7 223/85/7 +f 21/86/8 32/87/8 22/88/8 +f 64/39/6 4/89/6 3/40/6 +f 65/67/6 46/90/6 4/89/6 +f 66/69/6 47/91/6 46/90/6 +f 67/71/6 48/92/6 47/91/6 +f 68/73/6 49/93/6 48/92/6 +f 69/75/6 50/94/6 49/93/6 +f 70/77/6 51/95/6 50/94/6 +f 213/82/6 5/96/6 209/97/6 +f 19/98/2 21/99/2 22/100/2 +f 54/65/6 20/101/6 19/102/6 +f 54/65/6 75/68/6 74/63/6 +f 55/103/6 76/70/6 75/68/6 +f 56/104/6 77/72/6 76/70/6 +f 57/105/6 78/74/6 77/72/6 +f 58/106/6 79/76/6 78/74/6 +f 59/107/6 80/78/6 79/76/6 +f 60/108/6 81/109/6 80/78/6 +f 211/110/6 124/111/6 215/80/6 +f 39/112/7 243/113/7 207/114/7 +f 38/115/7 231/116/7 39/112/7 +f 37/117/7 230/118/7 38/115/7 +f 36/119/7 229/120/7 37/117/7 +f 35/121/7 228/122/7 36/119/7 +f 34/123/7 227/124/7 35/121/7 +f 33/125/7 226/126/7 34/123/7 +f 32/83/7 225/127/7 33/125/7 +f 10/128/3 3/129/3 9/130/3 +f 32/87/8 23/131/8 22/88/8 +f 33/132/8 24/133/8 23/131/8 +f 34/134/8 25/135/8 24/133/8 +f 35/136/8 26/137/8 25/135/8 +f 36/138/8 27/139/8 26/137/8 +f 37/140/8 28/141/8 27/139/8 +f 38/142/8 29/143/8 28/141/8 +f 208/144/8 30/145/8 206/146/8 +f 19/102/6 55/103/6 54/65/6 +f 18/147/6 56/104/6 55/103/6 +f 17/148/6 57/105/6 56/104/6 +f 16/149/6 58/106/6 57/105/6 +f 15/150/6 59/107/6 58/106/6 +f 14/151/6 60/108/6 59/107/6 +f 13/152/6 61/153/6 60/108/6 +f 203/154/6 123/155/6 211/110/6 +f 22/100/2 18/156/2 19/98/2 +f 23/157/2 17/158/2 18/156/2 +f 24/159/2 16/160/2 17/158/2 +f 25/161/2 15/162/2 16/160/2 +f 26/163/2 14/164/2 15/162/2 +f 27/165/2 13/166/2 14/164/2 +f 28/167/2 12/168/2 13/166/2 +f 206/169/2 11/170/2 203/171/2 +f 216/172/3 51/173/3 201/174/3 +f 44/175/3 50/176/3 51/173/3 +f 43/177/3 49/178/3 50/176/3 +f 42/179/3 48/180/3 49/178/3 +f 41/181/3 47/182/3 48/180/3 +f 6/183/3 46/184/3 47/182/3 +f 7/185/3 4/186/3 46/184/3 +f 8/187/3 3/129/3 4/186/3 +f 123/188/5 30/189/5 125/190/5 +f 52/191/2 142/192/2 101/193/2 +f 72/194/2 115/195/2 109/196/2 +f 103/197/6 141/198/6 40/199/6 +f 128/200/5 240/201/5 127/202/5 +f 125/203/5 239/204/5 128/200/5 +f 240/201/5 126/205/5 127/202/5 +f 72/206/5 124/207/5 82/208/5 +f 109/209/5 122/210/5 72/206/5 +f 82/208/5 128/211/5 110/212/5 +f 110/212/5 127/213/5 109/209/5 +f 108/214/2 120/215/2 112/216/2 +f 110/217/3 116/218/3 82/219/3 +f 82/220/8 117/221/8 72/222/8 +f 109/223/6 114/224/6 110/225/6 +f 108/226/5 115/227/5 111/228/5 +f 112/229/5 117/221/5 116/230/5 +f 111/231/5 117/232/5 113/233/5 +f 108/214/5 116/218/5 114/234/5 +f 120/215/5 119/235/5 121/236/5 +f 112/229/6 121/236/6 113/237/6 +f 113/233/3 119/235/3 111/231/3 +f 111/228/8 118/238/8 108/226/8 +f 52/239/5 122/210/5 107/240/5 +f 106/241/5 123/188/5 62/242/5 +f 62/242/5 125/190/5 40/243/5 +f 101/244/5 5/245/5 52/239/5 +f 102/246/5 126/247/5 101/244/5 +f 40/243/5 128/211/5 103/248/5 +f 107/240/5 127/213/5 102/246/5 +f 103/248/5 124/207/5 106/241/5 +f 134/249/8 151/250/8 135/251/8 +f 135/252/2 145/253/2 129/254/2 +f 62/255/8 140/256/8 106/257/8 +f 102/258/3 137/259/3 107/260/3 +f 101/261/6 143/262/6 102/263/6 +f 40/264/3 139/265/3 62/266/3 +f 107/267/8 138/268/8 52/269/8 +f 106/270/2 144/271/2 103/272/2 +f 129/273/5 138/268/5 137/274/5 +f 131/275/5 140/256/5 139/276/5 +f 133/277/5 139/265/5 141/278/5 +f 134/279/5 138/280/5 130/281/5 +f 135/251/5 142/282/5 134/249/5 +f 133/283/5 144/284/5 136/285/5 +f 135/252/5 137/259/5 143/286/5 +f 136/287/5 140/288/5 132/289/5 +f 145/253/5 150/290/5 146/291/5 +f 147/292/5 152/293/5 148/294/5 +f 133/277/2 147/292/2 131/295/2 +f 129/273/6 146/291/6 130/296/6 +f 132/289/3 152/293/3 136/287/3 +f 136/285/8 149/297/8 133/283/8 +f 130/281/3 150/290/3 134/279/3 +f 131/275/6 148/294/6 132/298/6 +f 2/299/1 153/300/1 10/301/1 +f 63/302/1 154/303/1 2/299/1 +f 45/304/1 155/305/1 63/302/1 +f 10/301/1 156/306/1 45/304/1 +f 63/302/1 157/307/1 73/308/1 +f 2/299/1 158/309/1 63/302/1 +f 1/310/1 159/311/1 2/299/1 +f 73/308/1 160/312/1 1/310/1 +f 31/35/1 161/313/1 1/310/1 +f 53/37/1 162/314/1 31/35/1 +f 73/308/1 163/315/1 53/37/1 +f 1/310/1 164/316/1 73/308/1 +f 166/317/3 191/318/3 167/319/3 +f 175/320/6 200/321/6 176/322/6 +f 170/323/6 193/324/6 169/325/6 +f 158/326/8 181/327/8 157/328/8 +f 164/329/8 188/330/8 163/331/8 +f 155/332/3 177/333/3 154/334/3 +f 157/335/3 183/336/3 160/337/3 +f 162/338/6 185/339/6 161/340/6 +f 156/341/8 180/342/8 155/343/8 +f 159/344/2 182/345/2 158/346/2 +f 161/347/2 187/348/2 164/349/2 +f 154/350/6 178/351/6 153/352/6 +f 166/353/1 177/354/1 165/355/1 +f 166/317/1 179/5/1 178/356/1 +f 165/357/1 180/358/1 168/359/1 +f 167/360/1 180/342/1 179/361/1 +f 170/323/1 181/327/1 182/362/1 +f 171/363/1 181/364/1 169/365/1 +f 172/366/1 182/345/1 184/367/1 +f 172/368/1 183/369/1 171/370/1 +f 173/371/1 186/372/1 174/373/1 +f 173/374/1 187/348/1 185/375/1 +f 174/376/1 188/377/1 176/378/1 +f 175/320/1 188/330/1 187/379/1 +f 189/380/1 191/318/1 190/381/1 +f 194/382/1 195/383/1 193/324/1 +f 198/384/1 199/385/1 197/386/1 +f 174/373/8 197/386/8 173/371/8 +f 169/365/2 195/383/2 171/363/2 +f 168/359/2 189/380/2 165/357/2 +f 173/374/3 199/385/3 175/387/3 +f 172/366/3 194/382/3 170/388/3 +f 167/360/6 192/389/6 168/390/6 +f 176/378/2 198/384/2 174/376/2 +f 165/355/8 190/381/8 166/353/8 +f 171/370/8 196/391/8 172/368/8 +f 126/392/3 209/393/3 5/394/3 +f 202/395/3 201/174/3 209/393/3 +f 29/396/2 204/397/2 12/168/2 +f 205/398/2 203/171/2 204/397/2 +f 12/399/6 210/400/6 61/153/6 +f 204/401/6 211/110/6 210/400/6 +f 39/402/8 205/403/8 29/143/8 +f 207/404/8 206/146/8 205/403/8 +f 208/405/7 239/406/7 125/407/7 +f 207/114/7 241/408/7 208/405/7 +f 61/153/6 214/409/6 81/109/6 +f 210/400/6 215/80/6 214/409/6 +f 71/79/6 201/410/6 51/95/6 +f 212/411/6 209/97/6 201/410/6 +f 81/109/6 212/411/6 71/79/6 +f 214/409/6 213/82/6 212/411/6 +f 87/412/2 270/413/2 88/50/2 +f 97/53/3 276/414/3 96/415/3 +f 216/416/4 238/417/4 44/30/4 +f 202/34/4 244/418/4 216/416/4 +f 307/419/8 222/420/8 93/421/8 +f 310/422/8 223/423/8 224/424/8 +f 85/425/8 223/423/8 84/426/8 +f 86/427/8 225/428/8 85/425/8 +f 87/429/8 226/430/8 86/427/8 +f 88/431/8 227/432/8 87/429/8 +f 89/433/8 228/434/8 88/431/8 +f 90/435/8 229/436/8 89/433/8 +f 91/437/8 230/438/8 90/435/8 +f 93/421/8 232/439/8 94/440/8 +f 94/440/8 233/441/8 95/442/8 +f 95/442/8 234/443/8 96/444/8 +f 96/444/8 235/445/8 97/446/8 +f 97/446/8 236/447/8 98/448/8 +f 98/448/8 237/449/8 99/450/8 +f 99/450/8 238/451/8 100/452/8 +f 310/422/8 221/453/8 307/419/8 +f 312/454/8 239/455/8 311/456/8 +f 311/456/8 241/457/8 218/458/8 +f 312/454/8 242/459/8 240/460/8 +f 217/461/8 231/462/8 91/437/8 +f 218/458/8 243/463/8 217/461/8 +f 100/452/8 244/464/8 219/465/8 +f 219/465/8 242/459/8 220/466/8 +f 94/467/3 245/468/3 283/469/3 +f 250/470/2 294/471/2 252/472/2 +f 253/473/3 293/474/3 251/475/3 +f 262/476/2 325/477/2 267/478/2 +f 268/479/2 292/480/2 250/470/2 +f 251/475/3 334/481/3 249/482/3 +f 265/483/5 344/484/5 264/485/5 +f 267/478/2 326/486/2 268/479/2 +f 220/487/3 317/488/3 286/489/3 +f 100/43/3 255/490/3 99/47/3 +f 90/46/2 273/491/2 91/54/2 +f 217/56/2 281/55/2 285/492/2 +f 84/493/2 315/494/2 284/495/2 +f 95/496/3 245/468/3 94/467/3 +f 85/497/2 248/498/2 86/499/2 +f 96/415/3 247/500/3 95/496/3 +f 249/482/3 333/501/3 275/502/3 +f 261/503/1 342/504/1 262/505/1 +f 86/499/2 269/506/2 87/412/2 +f 284/495/9 316/507/9 283/469/9 +f 318/508/10 286/489/10 317/509/10 +f 268/510/8 246/511/8 267/512/8 +f 250/513/8 248/498/8 268/510/8 +f 252/514/8 269/506/8 250/513/8 +f 254/515/8 270/413/8 252/514/8 +f 272/516/8 271/51/8 254/515/8 +f 258/517/8 256/45/8 272/516/8 +f 274/518/8 247/500/8 275/519/8 +f 275/519/8 276/414/8 249/520/8 +f 249/520/8 277/52/8 251/521/8 +f 251/521/8 278/48/8 253/522/8 +f 253/522/8 255/490/8 279/523/8 +f 279/523/8 257/42/8 280/524/8 +f 260/525/8 273/491/8 258/517/8 +f 280/524/8 259/526/8 282/527/8 +f 262/528/8 283/469/8 261/529/8 +f 264/530/8 285/492/8 265/531/8 +f 262/528/8 246/511/8 284/495/8 +f 261/529/8 245/468/8 274/518/8 +f 265/531/8 281/55/8 260/525/8 +f 264/530/8 259/526/8 286/489/8 +f 291/532/2 347/533/2 289/534/2 +f 303/535/5 362/536/5 304/537/5 +f 289/534/2 345/538/2 332/539/2 +f 340/540/2 357/541/2 338/542/2 +f 330/543/3 358/544/3 331/545/3 +f 331/545/3 360/546/3 339/547/3 +f 306/548/2 359/549/2 340/540/2 +f 329/550/3 356/551/3 330/543/3 +f 338/542/2 355/552/2 337/553/2 +f 274/554/3 341/555/3 261/556/3 +f 279/557/3 295/558/3 253/473/3 +f 252/472/2 296/559/2 254/560/2 +f 260/561/2 343/562/2 265/563/2 +f 280/564/3 297/565/3 279/557/3 +f 254/560/2 298/566/2 272/567/2 +f 264/568/3 301/569/3 282/570/3 +f 258/571/2 302/572/2 260/561/2 +f 272/567/2 300/573/2 258/571/2 +f 282/570/3 299/574/3 280/564/3 +f 275/502/3 287/575/3 274/554/3 +f 92/576/8 93/421/8 308/577/8 +f 83/578/8 84/426/8 310/422/8 +f 83/578/8 307/419/8 92/576/8 +f 104/579/8 311/456/8 105/580/8 +f 105/580/8 218/458/8 313/581/8 +f 104/579/8 220/466/8 312/454/8 +f 319/582/1 315/583/1 320/584/1 +f 266/585/5 317/509/5 263/586/5 +f 320/584/1 84/587/1 309/588/1 +f 319/582/1 93/589/1 316/507/1 +f 263/586/5 220/590/5 314/591/5 +f 266/585/5 218/592/5 318/508/5 +f 319/593/8 322/594/8 321/595/8 +f 263/58/8 323/596/8 266/597/8 +f 83/598/2 320/599/2 309/600/2 +f 313/601/2 323/596/2 105/602/2 +f 92/603/1 322/594/1 83/604/1 +f 308/605/3 321/595/3 92/606/3 +f 290/607/8 325/477/8 288/608/8 +f 327/609/8 326/486/8 290/607/8 +f 328/610/8 292/480/8 327/609/8 +f 329/550/8 294/471/8 328/610/8 +f 330/543/8 296/559/8 329/550/8 +f 331/545/8 298/566/8 330/543/8 +f 332/539/8 333/501/8 289/534/8 +f 289/534/8 334/481/8 291/532/8 +f 291/532/8 293/474/8 335/611/8 +f 335/611/8 295/558/8 336/612/8 +f 336/612/8 297/565/8 337/553/8 +f 337/553/8 299/574/8 338/542/8 +f 339/547/8 300/573/8 331/545/8 +f 338/542/8 301/569/8 340/540/8 +f 304/537/8 341/613/8 303/535/8 +f 306/614/8 343/615/8 305/616/8 +f 304/617/8 325/477/8 342/618/8 +f 303/619/8 287/575/8 332/539/8 +f 305/620/8 302/572/8 339/547/8 +f 306/548/8 301/569/8 344/621/8 +f 345/538/8 348/622/8 346/623/8 +f 347/533/8 350/624/8 348/622/8 +f 349/625/8 352/626/8 350/624/8 +f 351/627/8 354/628/8 352/626/8 +f 353/629/8 356/551/8 354/628/8 +f 355/552/8 358/544/8 356/551/8 +f 357/541/8 360/546/8 358/544/8 +f 361/630/8 346/623/8 362/536/8 +f 359/549/8 363/631/8 360/546/8 +f 288/608/3 348/622/3 290/607/3 +f 305/616/1 364/632/1 306/614/1 +f 335/611/2 349/625/2 291/532/2 +f 290/607/3 350/624/3 327/609/3 +f 304/617/3 346/623/3 288/608/3 +f 336/612/2 351/627/2 335/611/2 +f 327/609/3 352/626/3 328/610/3 +f 332/539/2 361/630/2 303/619/2 +f 337/553/2 353/629/2 336/612/2 +f 328/610/3 354/628/3 329/550/3 +f 339/547/3 363/631/3 305/620/3 +f 373/633/3 368/634/3 367/635/3 +f 384/636/1 371/637/1 381/638/1 +f 377/639/2 370/640/2 369/641/2 +f 388/642/5 365/643/5 385/644/5 +f 375/645/8 388/642/8 391/646/8 +f 368/634/8 389/647/8 383/648/8 +f 376/649/8 391/646/8 389/647/8 +f 371/650/2 379/651/2 378/652/2 +f 378/652/2 380/653/2 377/639/2 +f 365/654/3 375/645/3 374/655/3 +f 374/655/3 376/649/3 373/633/3 +f 394/656/6 374/655/6 373/633/6 +f 393/657/6 396/658/6 394/656/6 +f 365/659/5 404/660/5 385/661/5 +f 381/662/6 394/656/6 382/663/6 +f 390/664/8 380/653/8 379/651/8 +f 389/647/8 392/665/8 390/664/8 +f 384/636/8 379/651/8 372/666/8 +f 383/648/8 390/664/8 384/636/8 +f 392/665/8 370/640/8 380/653/8 +f 391/646/8 387/667/8 392/665/8 +f 385/661/2 403/668/2 396/669/2 +f 395/670/6 385/671/6 396/658/6 +f 370/640/5 386/672/5 369/673/5 +f 387/667/5 385/644/5 386/672/5 +f 368/634/1 382/674/1 367/675/1 +f 383/648/1 381/638/1 382/674/1 +f 382/676/1 400/677/1 367/678/1 +f 394/679/2 399/680/2 382/676/2 +f 374/681/3 398/682/3 365/659/3 +f 373/683/5 402/684/5 394/685/5 +f 396/686/1 397/687/1 374/681/1 +f 367/678/3 401/688/3 373/683/3 +f 413/689/3 408/690/3 407/691/3 +f 424/692/1 411/693/1 421/694/1 +f 417/695/2 410/696/2 409/697/2 +f 428/698/5 405/699/5 425/700/5 +f 415/701/8 428/698/8 431/702/8 +f 408/690/8 429/703/8 423/704/8 +f 416/705/8 431/702/8 429/703/8 +f 411/706/2 419/707/2 418/708/2 +f 418/708/2 420/709/2 417/695/2 +f 405/710/3 415/701/3 414/711/3 +f 414/711/3 416/705/3 413/689/3 +f 434/712/6 414/711/6 413/689/6 +f 433/713/6 436/714/6 434/712/6 +f 405/715/5 444/716/5 425/717/5 +f 421/718/6 434/712/6 422/719/6 +f 430/720/8 420/709/8 419/707/8 +f 429/703/8 432/721/8 430/720/8 +f 424/692/8 419/707/8 412/722/8 +f 423/704/8 430/720/8 424/692/8 +f 432/721/8 410/696/8 420/709/8 +f 431/702/8 427/723/8 432/721/8 +f 425/717/2 443/724/2 436/725/2 +f 435/726/6 425/727/6 436/714/6 +f 410/696/5 426/728/5 409/729/5 +f 427/723/5 425/700/5 426/728/5 +f 408/690/1 422/730/1 407/731/1 +f 423/704/1 421/694/1 422/730/1 +f 422/732/1 440/733/1 407/734/1 +f 434/735/2 439/736/2 422/732/2 +f 414/737/3 438/738/3 405/715/3 +f 413/739/5 442/740/5 434/741/5 +f 436/742/1 437/743/1 414/737/1 +f 407/734/3 441/744/3 413/739/3 +f 453/745/3 448/746/3 447/747/3 +f 464/748/1 451/749/1 461/750/1 +f 457/751/2 450/752/2 449/753/2 +f 468/754/5 445/755/5 465/756/5 +f 455/757/8 468/754/8 471/758/8 +f 448/746/8 469/759/8 463/760/8 +f 456/761/8 471/758/8 469/759/8 +f 451/762/2 459/763/2 458/764/2 +f 458/764/2 460/765/2 457/751/2 +f 445/766/3 455/757/3 454/767/3 +f 454/767/3 456/761/3 453/745/3 +f 474/768/6 454/767/6 453/745/6 +f 473/769/6 476/770/6 474/768/6 +f 445/771/5 484/772/5 465/773/5 +f 461/774/6 474/768/6 462/775/6 +f 470/776/8 460/765/8 459/763/8 +f 469/759/8 472/777/8 470/776/8 +f 464/748/8 459/763/8 452/778/8 +f 463/760/8 470/776/8 464/748/8 +f 472/777/8 450/752/8 460/765/8 +f 471/758/8 467/779/8 472/777/8 +f 465/773/2 483/780/2 476/781/2 +f 475/782/6 465/783/6 476/770/6 +f 450/752/5 466/784/5 449/785/5 +f 467/779/5 465/756/5 466/784/5 +f 448/746/1 462/786/1 447/787/1 +f 463/760/1 461/750/1 462/786/1 +f 462/788/1 480/789/1 447/790/1 +f 474/791/2 479/792/2 462/788/2 +f 454/793/3 478/794/3 445/771/3 +f 453/795/5 482/796/5 474/797/5 +f 476/798/1 477/799/1 454/793/1 +f 447/790/3 481/800/3 453/795/3 +f 493/801/3 488/802/3 487/803/3 +f 504/804/1 491/805/1 501/806/1 +f 497/807/2 490/808/2 489/809/2 +f 508/810/5 485/811/5 505/812/5 +f 495/813/8 508/810/8 511/814/8 +f 488/802/8 509/815/8 503/816/8 +f 496/817/8 511/814/8 509/815/8 +f 491/818/2 499/819/2 498/820/2 +f 498/820/2 500/821/2 497/807/2 +f 485/822/3 495/813/3 494/823/3 +f 494/823/3 496/817/3 493/801/3 +f 514/824/6 494/823/6 493/801/6 +f 513/825/6 516/826/6 514/824/6 +f 485/827/5 524/828/5 505/829/5 +f 501/830/6 514/824/6 502/831/6 +f 510/832/8 500/821/8 499/819/8 +f 509/815/8 512/833/8 510/832/8 +f 504/804/8 499/819/8 492/834/8 +f 503/816/8 510/832/8 504/804/8 +f 512/833/8 490/808/8 500/821/8 +f 511/814/8 507/835/8 512/833/8 +f 505/829/2 523/836/2 516/837/2 +f 515/838/6 505/839/6 516/826/6 +f 490/808/5 506/840/5 489/841/5 +f 507/835/5 505/812/5 506/840/5 +f 488/802/1 502/842/1 487/843/1 +f 503/816/1 501/806/1 502/842/1 +f 502/844/1 520/845/1 487/846/1 +f 514/847/2 519/848/2 502/844/2 +f 494/849/3 518/850/3 485/827/3 +f 493/851/5 522/852/5 514/853/5 +f 516/854/1 517/855/1 494/849/1 +f 487/846/3 521/856/3 493/851/3 +f 533/857/3 528/858/3 527/859/3 +f 544/860/1 531/861/1 541/862/1 +f 537/863/2 530/864/2 529/865/2 +f 548/866/5 525/867/5 545/868/5 +f 535/869/8 548/866/8 551/870/8 +f 528/858/8 549/871/8 543/872/8 +f 536/873/8 551/870/8 549/871/8 +f 531/874/2 539/875/2 538/876/2 +f 538/876/2 540/877/2 537/863/2 +f 525/878/3 535/869/3 534/879/3 +f 534/879/3 536/873/3 533/857/3 +f 554/880/6 534/879/6 533/857/6 +f 553/881/6 556/882/6 554/880/6 +f 525/883/5 564/884/5 545/885/5 +f 541/886/6 554/880/6 542/887/6 +f 550/888/8 540/877/8 539/875/8 +f 549/871/8 552/889/8 550/888/8 +f 544/860/8 539/875/8 532/890/8 +f 543/872/8 550/888/8 544/860/8 +f 552/889/8 530/864/8 540/877/8 +f 551/870/8 547/891/8 552/889/8 +f 545/885/2 563/892/2 556/893/2 +f 555/894/6 545/895/6 556/882/6 +f 530/864/5 546/896/5 529/897/5 +f 547/891/5 545/868/5 546/896/5 +f 528/858/1 542/898/1 527/899/1 +f 543/872/1 541/862/1 542/898/1 +f 542/900/1 560/901/1 527/902/1 +f 554/903/2 559/904/2 542/900/2 +f 534/905/3 558/906/3 525/883/3 +f 533/907/5 562/908/5 554/909/5 +f 556/910/1 557/911/1 534/905/1 +f 527/902/3 561/912/3 533/907/3 +f 573/913/3 568/914/3 567/915/3 +f 584/916/1 571/917/1 581/918/1 +f 577/919/2 570/920/2 569/921/2 +f 588/922/5 565/923/5 585/924/5 +f 575/925/8 588/922/8 591/926/8 +f 568/914/8 589/927/8 583/928/8 +f 576/929/8 591/926/8 589/927/8 +f 571/930/2 579/931/2 578/932/2 +f 578/932/2 580/933/2 577/919/2 +f 565/934/3 575/925/3 574/935/3 +f 574/935/3 576/929/3 573/913/3 +f 594/936/6 574/935/6 573/913/6 +f 593/937/6 596/938/6 594/936/6 +f 565/939/5 604/940/5 585/941/5 +f 581/942/6 594/936/6 582/943/6 +f 590/944/8 580/933/8 579/931/8 +f 589/927/8 592/945/8 590/944/8 +f 584/916/8 579/931/8 572/946/8 +f 583/928/8 590/944/8 584/916/8 +f 592/945/8 570/920/8 580/933/8 +f 591/926/8 587/947/8 592/945/8 +f 585/941/2 603/948/2 596/949/2 +f 595/950/6 585/951/6 596/938/6 +f 570/920/5 586/952/5 569/953/5 +f 587/947/5 585/924/5 586/952/5 +f 568/914/1 582/954/1 567/955/1 +f 583/928/1 581/918/1 582/954/1 +f 582/956/1 600/957/1 567/958/1 +f 594/959/2 599/960/2 582/956/2 +f 574/961/3 598/962/3 565/939/3 +f 573/963/5 602/964/5 594/965/5 +f 596/966/1 597/967/1 574/961/1 +f 567/958/3 601/968/3 573/963/3 +f 613/969/3 608/970/3 607/971/3 +f 624/972/1 611/973/1 621/974/1 +f 617/975/2 610/976/2 609/977/2 +f 628/978/5 605/979/5 625/980/5 +f 615/981/8 628/978/8 631/982/8 +f 608/970/8 629/983/8 623/984/8 +f 616/985/8 631/982/8 629/983/8 +f 611/986/2 619/987/2 618/988/2 +f 618/988/2 620/989/2 617/975/2 +f 605/990/3 615/981/3 614/991/3 +f 614/991/3 616/985/3 613/969/3 +f 634/992/6 614/991/6 613/969/6 +f 633/993/6 636/994/6 634/992/6 +f 605/995/5 644/996/5 625/997/5 +f 621/998/6 634/992/6 622/999/6 +f 630/1000/8 620/989/8 619/987/8 +f 629/983/8 632/1001/8 630/1000/8 +f 624/972/8 619/987/8 612/1002/8 +f 623/984/8 630/1000/8 624/972/8 +f 632/1001/8 610/976/8 620/989/8 +f 631/982/8 627/1003/8 632/1001/8 +f 625/997/2 643/1004/2 636/1005/2 +f 635/1006/6 625/1007/6 636/994/6 +f 610/976/5 626/1008/5 609/1009/5 +f 627/1003/5 625/980/5 626/1008/5 +f 608/970/1 622/1010/1 607/1011/1 +f 623/984/1 621/974/1 622/1010/1 +f 622/1012/1 640/1013/1 607/1014/1 +f 634/1015/2 639/1016/2 622/1012/2 +f 614/1017/3 638/1018/3 605/995/3 +f 613/1019/5 642/1020/5 634/1021/5 +f 636/1022/1 637/1023/1 614/1017/1 +f 607/1014/3 641/1024/3 613/1019/3 +f 653/1025/3 648/1026/3 647/1027/3 +f 664/1028/1 651/1029/1 661/1030/1 +f 657/1031/2 650/1032/2 649/1033/2 +f 668/1034/5 645/1035/5 665/1036/5 +f 655/1037/8 668/1034/8 671/1038/8 +f 648/1026/8 669/1039/8 663/1040/8 +f 656/1041/8 671/1038/8 669/1039/8 +f 651/1042/2 659/1043/2 658/1044/2 +f 658/1044/2 660/1045/2 657/1031/2 +f 645/1046/3 655/1037/3 654/1047/3 +f 654/1047/3 656/1041/3 653/1025/3 +f 674/1048/6 654/1047/6 653/1025/6 +f 673/1049/6 676/1050/6 674/1048/6 +f 645/1051/5 684/1052/5 665/1053/5 +f 661/1054/6 674/1048/6 662/1055/6 +f 670/1056/8 660/1045/8 659/1043/8 +f 669/1039/8 672/1057/8 670/1056/8 +f 664/1028/8 659/1043/8 652/1058/8 +f 663/1040/8 670/1056/8 664/1028/8 +f 672/1057/8 650/1032/8 660/1045/8 +f 671/1038/8 667/1059/8 672/1057/8 +f 665/1053/2 683/1060/2 676/1061/2 +f 675/1062/6 665/1063/6 676/1050/6 +f 650/1032/5 666/1064/5 649/1065/5 +f 667/1059/5 665/1036/5 666/1064/5 +f 648/1026/1 662/1066/1 647/1067/1 +f 663/1040/1 661/1030/1 662/1066/1 +f 662/1068/1 680/1069/1 647/1070/1 +f 674/1071/2 679/1072/2 662/1068/2 +f 654/1073/3 678/1074/3 645/1051/3 +f 653/1075/5 682/1076/5 674/1077/5 +f 676/1078/1 677/1079/1 654/1073/1 +f 647/1070/3 681/1080/3 653/1075/3 +f 693/1081/3 688/1082/3 687/1083/3 +f 704/1084/1 691/1085/1 701/1086/1 +f 697/1087/2 690/1088/2 689/1089/2 +f 708/1090/5 685/1091/5 705/1092/5 +f 695/1093/8 708/1090/8 711/1094/8 +f 688/1082/8 709/1095/8 703/1096/8 +f 696/1097/8 711/1094/8 709/1095/8 +f 691/1098/2 699/1099/2 698/1100/2 +f 698/1100/2 700/1101/2 697/1087/2 +f 685/1102/3 695/1093/3 694/1103/3 +f 694/1103/3 696/1097/3 693/1081/3 +f 714/1104/6 694/1103/6 693/1081/6 +f 713/1105/6 716/1106/6 714/1104/6 +f 685/1107/5 724/1108/5 705/1109/5 +f 701/1110/6 714/1104/6 702/1111/6 +f 710/1112/8 700/1101/8 699/1099/8 +f 709/1095/8 712/1113/8 710/1112/8 +f 704/1084/8 699/1099/8 692/1114/8 +f 703/1096/8 710/1112/8 704/1084/8 +f 712/1113/8 690/1088/8 700/1101/8 +f 711/1094/8 707/1115/8 712/1113/8 +f 705/1109/2 723/1116/2 716/1117/2 +f 715/1118/6 705/1119/6 716/1106/6 +f 690/1088/5 706/1120/5 689/1121/5 +f 707/1115/5 705/1092/5 706/1120/5 +f 688/1082/1 702/1122/1 687/1123/1 +f 703/1096/1 701/1086/1 702/1122/1 +f 702/1124/1 720/1125/1 687/1126/1 +f 714/1127/2 719/1128/2 702/1124/2 +f 694/1129/3 718/1130/3 685/1107/3 +f 693/1131/5 722/1132/5 714/1133/5 +f 716/1134/1 717/1135/1 694/1129/1 +f 687/1126/3 721/1136/3 693/1131/3 +f 733/1137/3 728/1138/3 727/1139/3 +f 744/1140/1 731/1141/1 741/1142/1 +f 737/1143/2 730/1144/2 729/1145/2 +f 748/1146/5 725/1147/5 745/1148/5 +f 735/1149/8 748/1146/8 751/1150/8 +f 728/1138/8 749/1151/8 743/1152/8 +f 736/1153/8 751/1150/8 749/1151/8 +f 731/1154/2 739/1155/2 738/1156/2 +f 738/1156/2 740/1157/2 737/1143/2 +f 725/1158/3 735/1149/3 734/1159/3 +f 734/1159/3 736/1153/3 733/1137/3 +f 754/1160/6 734/1159/6 733/1137/6 +f 753/1161/6 756/1162/6 754/1160/6 +f 725/1163/5 764/1164/5 745/1165/5 +f 741/1166/6 754/1160/6 742/1167/6 +f 750/1168/8 740/1157/8 739/1155/8 +f 749/1151/8 752/1169/8 750/1168/8 +f 744/1140/8 739/1155/8 732/1170/8 +f 743/1152/8 750/1168/8 744/1140/8 +f 752/1169/8 730/1144/8 740/1157/8 +f 751/1150/8 747/1171/8 752/1169/8 +f 745/1165/2 763/1172/2 756/1173/2 +f 755/1174/6 745/1175/6 756/1162/6 +f 730/1144/5 746/1176/5 729/1177/5 +f 747/1171/5 745/1148/5 746/1176/5 +f 728/1138/1 742/1178/1 727/1179/1 +f 743/1152/1 741/1142/1 742/1178/1 +f 742/1180/1 760/1181/1 727/1182/1 +f 754/1183/2 759/1184/2 742/1180/2 +f 734/1185/3 758/1186/3 725/1163/3 +f 733/1187/5 762/1188/5 754/1189/5 +f 756/1190/1 757/1191/1 734/1185/1 +f 727/1182/3 761/1192/3 733/1187/3 +f 773/1193/3 768/1194/3 767/1195/3 +f 784/1196/1 771/1197/1 781/1198/1 +f 777/1199/2 770/1200/2 769/1201/2 +f 788/1202/5 765/1203/5 785/1204/5 +f 775/1205/8 788/1202/8 791/1206/8 +f 768/1194/8 789/1207/8 783/1208/8 +f 776/1209/8 791/1206/8 789/1207/8 +f 771/1210/2 779/1211/2 778/1212/2 +f 778/1212/2 780/1213/2 777/1199/2 +f 765/1214/3 775/1205/3 774/1215/3 +f 774/1215/3 776/1209/3 773/1193/3 +f 794/1216/6 774/1215/6 773/1193/6 +f 793/1217/6 796/1218/6 794/1216/6 +f 765/1219/5 804/1220/5 785/1221/5 +f 781/1222/6 794/1216/6 782/1223/6 +f 790/1224/8 780/1213/8 779/1211/8 +f 789/1207/8 792/1225/8 790/1224/8 +f 784/1196/8 779/1211/8 772/1226/8 +f 783/1208/8 790/1224/8 784/1196/8 +f 792/1225/8 770/1200/8 780/1213/8 +f 791/1206/8 787/1227/8 792/1225/8 +f 785/1221/2 803/1228/2 796/1229/2 +f 795/1230/6 785/1231/6 796/1218/6 +f 770/1200/5 786/1232/5 769/1233/5 +f 787/1227/5 785/1204/5 786/1232/5 +f 768/1194/1 782/1234/1 767/1235/1 +f 783/1208/1 781/1198/1 782/1234/1 +f 782/1236/1 800/1237/1 767/1238/1 +f 794/1239/2 799/1240/2 782/1236/2 +f 774/1241/3 798/1242/3 765/1219/3 +f 773/1243/5 802/1244/5 794/1245/5 +f 796/1246/1 797/1247/1 774/1241/1 +f 767/1238/3 801/1248/3 773/1243/3 +f 813/1249/2 808/1250/2 816/1251/2 +f 811/1252/1 824/1253/1 821/1254/1 +f 817/1255/3 810/1256/3 820/1257/3 +f 805/1258/5 828/1259/5 825/1260/5 +f 828/1259/8 815/1261/8 831/1262/8 +f 829/1263/8 808/1250/8 823/1264/8 +f 831/1262/8 816/1251/8 829/1263/8 +f 811/1265/3 819/1266/3 812/1267/3 +f 818/1268/3 820/1257/3 819/1266/3 +f 805/1269/2 815/1261/2 806/1270/2 +f 814/1271/2 816/1251/2 815/1261/2 +f 814/1271/6 834/1272/6 813/1249/6 +f 836/1273/6 833/1274/6 834/1272/6 +f 844/1275/5 805/1276/5 825/1277/5 +f 834/1272/6 821/1278/6 822/1279/6 +f 820/1257/8 830/1280/8 819/1266/8 +f 832/1281/8 829/1263/8 830/1280/8 +f 819/1266/8 824/1253/8 812/1267/8 +f 830/1280/8 823/1264/8 824/1253/8 +f 810/1256/8 832/1281/8 820/1257/8 +f 827/1282/8 831/1262/8 832/1281/8 +f 843/1283/3 825/1277/3 836/1284/3 +f 825/1285/6 835/1286/6 836/1273/6 +f 826/1287/5 810/1256/5 809/1288/5 +f 825/1260/5 827/1282/5 826/1287/5 +f 822/1289/1 808/1250/1 807/1290/1 +f 821/1254/1 823/1264/1 822/1289/1 +f 840/1291/1 822/1292/1 807/1293/1 +f 839/1294/3 834/1295/3 822/1292/3 +f 838/1296/2 814/1297/2 805/1276/2 +f 842/1298/5 813/1299/5 834/1300/5 +f 837/1301/1 836/1302/1 814/1297/1 +f 841/1303/2 807/1293/2 813/1299/2 +f 853/1304/2 848/1305/2 856/1306/2 +f 851/1307/1 864/1308/1 861/1309/1 +f 857/1310/3 850/1311/3 860/1312/3 +f 845/1313/5 868/1314/5 865/1315/5 +f 868/1314/8 855/1316/8 871/1317/8 +f 869/1318/8 848/1305/8 863/1319/8 +f 871/1317/8 856/1306/8 869/1318/8 +f 851/1320/3 859/1321/3 852/1322/3 +f 858/1323/3 860/1312/3 859/1321/3 +f 845/1324/2 855/1316/2 846/1325/2 +f 854/1326/2 856/1306/2 855/1316/2 +f 854/1326/6 874/1327/6 853/1304/6 +f 876/1328/6 873/1329/6 874/1327/6 +f 884/1330/5 845/1331/5 865/1332/5 +f 874/1327/6 861/1333/6 862/1334/6 +f 860/1312/8 870/1335/8 859/1321/8 +f 872/1336/8 869/1318/8 870/1335/8 +f 859/1321/8 864/1308/8 852/1322/8 +f 870/1335/8 863/1319/8 864/1308/8 +f 850/1311/8 872/1336/8 860/1312/8 +f 867/1337/8 871/1317/8 872/1336/8 +f 883/1338/3 865/1332/3 876/1339/3 +f 865/1340/6 875/1341/6 876/1328/6 +f 866/1342/5 850/1311/5 849/1343/5 +f 865/1315/5 867/1337/5 866/1342/5 +f 862/1344/1 848/1305/1 847/1345/1 +f 861/1309/1 863/1319/1 862/1344/1 +f 880/1346/1 862/1347/1 847/1348/1 +f 879/1349/3 874/1350/3 862/1347/3 +f 878/1351/2 854/1352/2 845/1331/2 +f 882/1353/5 853/1354/5 874/1355/5 +f 877/1356/1 876/1357/1 854/1352/1 +f 881/1358/2 847/1348/2 853/1354/2 +f 893/1359/2 888/1360/2 896/1361/2 +f 891/1362/1 904/1363/1 901/1364/1 +f 897/1365/3 890/1366/3 900/1367/3 +f 885/1368/5 908/1369/5 905/1370/5 +f 908/1369/8 895/1371/8 911/1372/8 +f 909/1373/8 888/1360/8 903/1374/8 +f 911/1372/8 896/1361/8 909/1373/8 +f 891/1375/3 899/1376/3 892/1377/3 +f 898/1378/3 900/1367/3 899/1376/3 +f 885/1379/2 895/1371/2 886/1380/2 +f 894/1381/2 896/1361/2 895/1371/2 +f 894/1381/6 914/1382/6 893/1359/6 +f 916/1383/6 913/1384/6 914/1382/6 +f 924/1385/5 885/1386/5 905/1387/5 +f 914/1382/6 901/1388/6 902/1389/6 +f 900/1367/8 910/1390/8 899/1376/8 +f 912/1391/8 909/1373/8 910/1390/8 +f 899/1376/8 904/1363/8 892/1377/8 +f 910/1390/8 903/1374/8 904/1363/8 +f 890/1366/8 912/1391/8 900/1367/8 +f 907/1392/8 911/1372/8 912/1391/8 +f 923/1393/3 905/1387/3 916/1394/3 +f 905/1395/6 915/1396/6 916/1383/6 +f 906/1397/5 890/1366/5 889/1398/5 +f 905/1370/5 907/1392/5 906/1397/5 +f 902/1399/1 888/1360/1 887/1400/1 +f 901/1364/1 903/1374/1 902/1399/1 +f 920/1401/1 902/1402/1 887/1403/1 +f 919/1404/3 914/1405/3 902/1402/3 +f 918/1406/2 894/1407/2 885/1386/2 +f 922/1408/5 893/1409/5 914/1410/5 +f 917/1411/1 916/1412/1 894/1407/1 +f 921/1413/2 887/1403/2 893/1409/2 +f 933/1414/2 928/1415/2 936/1416/2 +f 931/1417/1 944/1418/1 941/1419/1 +f 937/1420/3 930/1421/3 940/1422/3 +f 925/1423/5 948/1424/5 945/1425/5 +f 948/1424/8 935/1426/8 951/1427/8 +f 949/1428/8 928/1415/8 943/1429/8 +f 951/1427/8 936/1416/8 949/1428/8 +f 931/1430/3 939/1431/3 932/1432/3 +f 938/1433/3 940/1422/3 939/1431/3 +f 925/1434/2 935/1426/2 926/1435/2 +f 934/1436/2 936/1416/2 935/1426/2 +f 934/1436/6 954/1437/6 933/1414/6 +f 956/1438/6 953/1439/6 954/1437/6 +f 964/1440/5 925/1441/5 945/1442/5 +f 954/1437/6 941/1443/6 942/1444/6 +f 940/1422/8 950/1445/8 939/1431/8 +f 952/1446/8 949/1428/8 950/1445/8 +f 939/1431/8 944/1418/8 932/1432/8 +f 950/1445/8 943/1429/8 944/1418/8 +f 930/1421/8 952/1446/8 940/1422/8 +f 947/1447/8 951/1427/8 952/1446/8 +f 963/1448/3 945/1442/3 956/1449/3 +f 945/1450/6 955/1451/6 956/1438/6 +f 946/1452/5 930/1421/5 929/1453/5 +f 945/1425/5 947/1447/5 946/1452/5 +f 942/1454/1 928/1415/1 927/1455/1 +f 941/1419/1 943/1429/1 942/1454/1 +f 960/1456/1 942/1457/1 927/1458/1 +f 959/1459/3 954/1460/3 942/1457/3 +f 958/1461/2 934/1462/2 925/1441/2 +f 962/1463/5 933/1464/5 954/1465/5 +f 957/1466/1 956/1467/1 934/1462/1 +f 961/1468/2 927/1458/2 933/1464/2 +f 973/1469/2 968/1470/2 976/1471/2 +f 971/1472/1 984/1473/1 981/1474/1 +f 977/1475/3 970/1476/3 980/1477/3 +f 965/1478/5 988/1479/5 985/1480/5 +f 988/1479/8 975/1481/8 991/1482/8 +f 989/1483/8 968/1470/8 983/1484/8 +f 991/1482/8 976/1471/8 989/1483/8 +f 971/1485/3 979/1486/3 972/1487/3 +f 978/1488/3 980/1477/3 979/1486/3 +f 965/1489/2 975/1481/2 966/1490/2 +f 974/1491/2 976/1471/2 975/1481/2 +f 974/1491/6 994/1492/6 973/1469/6 +f 996/1493/6 993/1494/6 994/1492/6 +f 1004/1495/5 965/1496/5 985/1497/5 +f 994/1492/6 981/1498/6 982/1499/6 +f 980/1477/8 990/1500/8 979/1486/8 +f 992/1501/8 989/1483/8 990/1500/8 +f 979/1486/8 984/1473/8 972/1487/8 +f 990/1500/8 983/1484/8 984/1473/8 +f 970/1476/8 992/1501/8 980/1477/8 +f 987/1502/8 991/1482/8 992/1501/8 +f 1003/1503/3 985/1497/3 996/1504/3 +f 985/1505/6 995/1506/6 996/1493/6 +f 986/1507/5 970/1476/5 969/1508/5 +f 985/1480/5 987/1502/5 986/1507/5 +f 982/1509/1 968/1470/1 967/1510/1 +f 981/1474/1 983/1484/1 982/1509/1 +f 1000/1511/1 982/1512/1 967/1513/1 +f 999/1514/3 994/1515/3 982/1512/3 +f 998/1516/2 974/1517/2 965/1496/2 +f 1002/1518/5 973/1519/5 994/1520/5 +f 997/1521/1 996/1522/1 974/1517/1 +f 1001/1523/2 967/1513/2 973/1519/2 +f 1013/1524/2 1008/1525/2 1016/1526/2 +f 1011/1527/1 1024/1528/1 1021/1529/1 +f 1017/1530/3 1010/1531/3 1020/1532/3 +f 1005/1533/5 1028/1534/5 1025/1535/5 +f 1028/1534/8 1015/1536/8 1031/1537/8 +f 1029/1538/8 1008/1525/8 1023/1539/8 +f 1031/1537/8 1016/1526/8 1029/1538/8 +f 1011/1540/3 1019/1541/3 1012/1542/3 +f 1018/1543/3 1020/1532/3 1019/1541/3 +f 1005/1544/2 1015/1536/2 1006/1545/2 +f 1014/1546/2 1016/1526/2 1015/1536/2 +f 1014/1546/6 1034/1547/6 1013/1524/6 +f 1036/1548/6 1033/1549/6 1034/1547/6 +f 1044/1550/5 1005/1551/5 1025/1552/5 +f 1034/1547/6 1021/1553/6 1022/1554/6 +f 1020/1532/8 1030/1555/8 1019/1541/8 +f 1032/1556/8 1029/1538/8 1030/1555/8 +f 1019/1541/8 1024/1528/8 1012/1542/8 +f 1030/1555/8 1023/1539/8 1024/1528/8 +f 1010/1531/8 1032/1556/8 1020/1532/8 +f 1027/1557/8 1031/1537/8 1032/1556/8 +f 1043/1558/3 1025/1552/3 1036/1559/3 +f 1025/1560/6 1035/1561/6 1036/1548/6 +f 1026/1562/5 1010/1531/5 1009/1563/5 +f 1025/1535/5 1027/1557/5 1026/1562/5 +f 1022/1564/1 1008/1525/1 1007/1565/1 +f 1021/1529/1 1023/1539/1 1022/1564/1 +f 1040/1566/1 1022/1567/1 1007/1568/1 +f 1039/1569/3 1034/1570/3 1022/1567/3 +f 1038/1571/2 1014/1572/2 1005/1551/2 +f 1042/1573/5 1013/1574/5 1034/1575/5 +f 1037/1576/1 1036/1577/1 1014/1572/1 +f 1041/1578/2 1007/1568/2 1013/1574/2 +f 1053/1579/2 1048/1580/2 1056/1581/2 +f 1051/1582/1 1064/1583/1 1061/1584/1 +f 1057/1585/3 1050/1586/3 1060/1587/3 +f 1045/1588/5 1068/1589/5 1065/1590/5 +f 1068/1589/8 1055/1591/8 1071/1592/8 +f 1069/1593/8 1048/1580/8 1063/1594/8 +f 1071/1592/8 1056/1581/8 1069/1593/8 +f 1051/1595/3 1059/1596/3 1052/1597/3 +f 1058/1598/3 1060/1587/3 1059/1596/3 +f 1045/1599/2 1055/1591/2 1046/1600/2 +f 1054/1601/2 1056/1581/2 1055/1591/2 +f 1054/1601/6 1074/1602/6 1053/1579/6 +f 1076/1603/6 1073/1604/6 1074/1602/6 +f 1084/1605/5 1045/1606/5 1065/1607/5 +f 1074/1602/6 1061/1608/6 1062/1609/6 +f 1060/1587/8 1070/1610/8 1059/1596/8 +f 1072/1611/8 1069/1593/8 1070/1610/8 +f 1059/1596/8 1064/1583/8 1052/1597/8 +f 1070/1610/8 1063/1594/8 1064/1583/8 +f 1050/1586/8 1072/1611/8 1060/1587/8 +f 1067/1612/8 1071/1592/8 1072/1611/8 +f 1083/1613/3 1065/1607/3 1076/1614/3 +f 1065/1615/6 1075/1616/6 1076/1603/6 +f 1066/1617/5 1050/1586/5 1049/1618/5 +f 1065/1590/5 1067/1612/5 1066/1617/5 +f 1062/1619/1 1048/1580/1 1047/1620/1 +f 1061/1584/1 1063/1594/1 1062/1619/1 +f 1080/1621/1 1062/1622/1 1047/1623/1 +f 1079/1624/3 1074/1625/3 1062/1622/3 +f 1078/1626/2 1054/1627/2 1045/1606/2 +f 1082/1628/5 1053/1629/5 1074/1630/5 +f 1077/1631/1 1076/1632/1 1054/1627/1 +f 1081/1633/2 1047/1623/2 1053/1629/2 +f 1093/1634/2 1088/1635/2 1096/1636/2 +f 1091/1637/1 1104/1638/1 1101/1639/1 +f 1097/1640/3 1090/1641/3 1100/1642/3 +f 1085/1643/5 1108/1644/5 1105/1645/5 +f 1108/1644/8 1095/1646/8 1111/1647/8 +f 1109/1648/8 1088/1635/8 1103/1649/8 +f 1111/1647/8 1096/1636/8 1109/1648/8 +f 1091/1650/3 1099/1651/3 1092/1652/3 +f 1098/1653/3 1100/1642/3 1099/1651/3 +f 1085/1654/2 1095/1646/2 1086/1655/2 +f 1094/1656/2 1096/1636/2 1095/1646/2 +f 1094/1656/6 1114/1657/6 1093/1634/6 +f 1116/1658/6 1113/1659/6 1114/1657/6 +f 1124/1660/5 1085/1661/5 1105/1662/5 +f 1114/1657/6 1101/1663/6 1102/1664/6 +f 1100/1642/8 1110/1665/8 1099/1651/8 +f 1112/1666/8 1109/1648/8 1110/1665/8 +f 1099/1651/8 1104/1638/8 1092/1652/8 +f 1110/1665/8 1103/1649/8 1104/1638/8 +f 1090/1641/8 1112/1666/8 1100/1642/8 +f 1107/1667/8 1111/1647/8 1112/1666/8 +f 1123/1668/3 1105/1662/3 1116/1669/3 +f 1105/1670/6 1115/1671/6 1116/1658/6 +f 1106/1672/5 1090/1641/5 1089/1673/5 +f 1105/1645/5 1107/1667/5 1106/1672/5 +f 1102/1674/1 1088/1635/1 1087/1675/1 +f 1101/1639/1 1103/1649/1 1102/1674/1 +f 1120/1676/1 1102/1677/1 1087/1678/1 +f 1119/1679/3 1114/1680/3 1102/1677/3 +f 1118/1681/2 1094/1682/2 1085/1661/2 +f 1122/1683/5 1093/1684/5 1114/1685/5 +f 1117/1686/1 1116/1687/1 1094/1682/1 +f 1121/1688/2 1087/1678/2 1093/1684/2 +f 1133/1689/2 1128/1690/2 1136/1691/2 +f 1131/1692/1 1144/1693/1 1141/1694/1 +f 1137/1695/3 1130/1696/3 1140/1697/3 +f 1125/1698/5 1148/1699/5 1145/1700/5 +f 1148/1699/8 1135/1701/8 1151/1702/8 +f 1149/1703/8 1128/1690/8 1143/1704/8 +f 1151/1702/8 1136/1691/8 1149/1703/8 +f 1131/1705/3 1139/1706/3 1132/1707/3 +f 1138/1708/3 1140/1697/3 1139/1706/3 +f 1125/1709/2 1135/1701/2 1126/1710/2 +f 1134/1711/2 1136/1691/2 1135/1701/2 +f 1134/1711/6 1154/1712/6 1133/1689/6 +f 1156/1713/6 1153/1714/6 1154/1712/6 +f 1164/1715/5 1125/1716/5 1145/1717/5 +f 1154/1712/6 1141/1718/6 1142/1719/6 +f 1140/1697/8 1150/1720/8 1139/1706/8 +f 1152/1721/8 1149/1703/8 1150/1720/8 +f 1139/1706/8 1144/1693/8 1132/1707/8 +f 1150/1720/8 1143/1704/8 1144/1693/8 +f 1130/1696/8 1152/1721/8 1140/1697/8 +f 1147/1722/8 1151/1702/8 1152/1721/8 +f 1163/1723/3 1145/1717/3 1156/1724/3 +f 1145/1725/6 1155/1726/6 1156/1713/6 +f 1146/1727/5 1130/1696/5 1129/1728/5 +f 1145/1700/5 1147/1722/5 1146/1727/5 +f 1142/1729/1 1128/1690/1 1127/1730/1 +f 1141/1694/1 1143/1704/1 1142/1729/1 +f 1160/1731/1 1142/1732/1 1127/1733/1 +f 1159/1734/3 1154/1735/3 1142/1732/3 +f 1158/1736/2 1134/1737/2 1125/1716/2 +f 1162/1738/5 1133/1739/5 1154/1740/5 +f 1157/1741/1 1156/1742/1 1134/1737/1 +f 1161/1743/2 1127/1733/2 1133/1739/2 +f 1173/1744/2 1168/1745/2 1176/1746/2 +f 1171/1747/1 1184/1748/1 1181/1749/1 +f 1177/1750/3 1170/1751/3 1180/1752/3 +f 1165/1753/5 1188/1754/5 1185/1755/5 +f 1188/1754/8 1175/1756/8 1191/1757/8 +f 1189/1758/8 1168/1745/8 1183/1759/8 +f 1191/1757/8 1176/1746/8 1189/1758/8 +f 1171/1760/3 1179/1761/3 1172/1762/3 +f 1178/1763/3 1180/1752/3 1179/1761/3 +f 1165/1764/2 1175/1756/2 1166/1765/2 +f 1174/1766/2 1176/1746/2 1175/1756/2 +f 1174/1766/6 1194/1767/6 1173/1744/6 +f 1196/1768/6 1193/1769/6 1194/1767/6 +f 1204/1770/5 1165/1771/5 1185/1772/5 +f 1194/1767/6 1181/1773/6 1182/1774/6 +f 1180/1752/8 1190/1775/8 1179/1761/8 +f 1192/1776/8 1189/1758/8 1190/1775/8 +f 1179/1761/8 1184/1748/8 1172/1762/8 +f 1190/1775/8 1183/1759/8 1184/1748/8 +f 1170/1751/8 1192/1776/8 1180/1752/8 +f 1187/1777/8 1191/1757/8 1192/1776/8 +f 1203/1778/3 1185/1772/3 1196/1779/3 +f 1185/1780/6 1195/1781/6 1196/1768/6 +f 1186/1782/5 1170/1751/5 1169/1783/5 +f 1185/1755/5 1187/1777/5 1186/1782/5 +f 1182/1784/1 1168/1745/1 1167/1785/1 +f 1181/1749/1 1183/1759/1 1182/1784/1 +f 1200/1786/1 1182/1787/1 1167/1788/1 +f 1199/1789/3 1194/1790/3 1182/1787/3 +f 1198/1791/2 1174/1792/2 1165/1771/2 +f 1202/1793/5 1173/1794/5 1194/1795/5 +f 1197/1796/1 1196/1797/1 1174/1792/1 +f 1201/1798/2 1167/1788/2 1173/1794/2 +f 1213/1799/2 1208/1800/2 1216/1801/2 +f 1211/1802/1 1224/1803/1 1221/1804/1 +f 1217/1805/3 1210/1806/3 1220/1807/3 +f 1205/1808/5 1228/1809/5 1225/1810/5 +f 1228/1809/8 1215/1811/8 1231/1812/8 +f 1229/1813/8 1208/1800/8 1223/1814/8 +f 1231/1812/8 1216/1801/8 1229/1813/8 +f 1211/1815/3 1219/1816/3 1212/1817/3 +f 1218/1818/3 1220/1807/3 1219/1816/3 +f 1205/1819/2 1215/1811/2 1206/1820/2 +f 1214/1821/2 1216/1801/2 1215/1811/2 +f 1214/1821/6 1234/1822/6 1213/1799/6 +f 1236/1823/6 1233/1824/6 1234/1822/6 +f 1244/1825/5 1205/1826/5 1225/1827/5 +f 1234/1822/6 1221/1828/6 1222/1829/6 +f 1220/1807/8 1230/1830/8 1219/1816/8 +f 1232/1831/8 1229/1813/8 1230/1830/8 +f 1219/1816/8 1224/1803/8 1212/1817/8 +f 1230/1830/8 1223/1814/8 1224/1803/8 +f 1210/1806/8 1232/1831/8 1220/1807/8 +f 1227/1832/8 1231/1812/8 1232/1831/8 +f 1243/1833/3 1225/1827/3 1236/1834/3 +f 1225/1835/6 1235/1836/6 1236/1823/6 +f 1226/1837/5 1210/1806/5 1209/1838/5 +f 1225/1810/5 1227/1832/5 1226/1837/5 +f 1222/1839/1 1208/1800/1 1207/1840/1 +f 1221/1804/1 1223/1814/1 1222/1839/1 +f 1240/1841/1 1222/1842/1 1207/1843/1 +f 1239/1844/3 1234/1845/3 1222/1842/3 +f 1238/1846/2 1214/1847/2 1205/1826/2 +f 1242/1848/5 1213/1849/5 1234/1850/5 +f 1237/1851/1 1236/1852/1 1214/1847/1 +f 1241/1853/2 1207/1843/2 1213/1849/2 +f 1245/1854/3 1248/1855/3 1247/1856/3 +f 1248/1857/1 1251/1858/1 1247/1859/1 +f 1252/1860/2 1249/1861/2 1251/1862/2 +f 1251/1858/1 1253/1863/1 1247/1859/1 +f 1248/1855/9 1250/1864/9 1252/1860/9 +f 1255/1865/11 1254/1866/11 1253/1863/11 +f 1253/1863/1 1257/1867/1 1247/1859/1 +f 1251/1868/2 1256/1869/2 1255/1865/2 +f 1259/1870/1 1261/1871/1 1257/1867/1 +f 1247/1856/9 1258/1872/9 1245/1854/9 +f 1254/1866/11 1259/1870/11 1253/1863/11 +f 1261/1873/3 1264/1874/3 1262/1875/3 +f 1262/1876/3 1267/1877/3 1261/1878/3 +f 1260/1879/11 1263/1880/11 1259/1870/11 +f 1265/1881/9 1268/1882/9 1266/1883/9 +f 1261/1871/1 1265/1884/1 1257/1867/1 +f 1258/1872/2 1265/1881/2 1266/1883/2 +f 1269/1885/3 1272/1886/3 1270/1887/3 +f 1275/1888/5 1272/1889/5 1271/1890/5 +f 1273/1891/2 1276/1892/2 1275/1893/2 +f 1277/1894/5 1275/1888/5 1271/1890/5 +f 1274/1895/10 1272/1886/10 1276/1892/10 +f 1278/1896/12 1279/1897/12 1277/1894/12 +f 1281/1898/5 1277/1894/5 1271/1890/5 +f 1275/1899/2 1280/1900/2 1273/1901/2 +f 1285/1902/5 1283/1903/5 1281/1898/5 +f 1282/1904/10 1271/1905/10 1269/1885/10 +f 1283/1903/12 1278/1896/12 1277/1894/12 +f 1288/1906/3 1285/1907/3 1286/1908/3 +f 1291/1909/3 1286/1910/3 1285/1911/3 +f 1287/1912/12 1284/1913/12 1283/1903/12 +f 1292/1914/10 1289/1915/10 1290/1916/10 +f 1289/1917/5 1285/1902/5 1281/1898/5 +f 1282/1904/2 1289/1915/2 1281/1918/2 +f 1294/1919/4 1295/1920/4 1293/1921/4 +f 1296/1922/1 1299/1923/1 1295/1920/1 +f 1297/1924/5 1294/1919/5 1293/1921/5 +f 1299/1925/13 1293/1921/13 1295/1920/13 +f 1296/1922/14 1298/1926/14 1300/1927/14 +f 1302/1928/4 1303/1929/4 1301/1930/4 +f 1304/1931/1 1307/1932/1 1303/1929/1 +f 1305/1933/5 1302/1928/5 1301/1930/5 +f 1307/1934/13 1301/1930/13 1303/1929/13 +f 1304/1931/14 1306/1935/14 1308/1936/14 +f 1310/1937/4 1311/1938/4 1309/1939/4 +f 1312/1940/1 1315/1941/1 1311/1938/1 +f 1313/1942/5 1310/1937/5 1309/1939/5 +f 1315/1943/13 1309/1939/13 1311/1938/13 +f 1312/1940/14 1314/1944/14 1316/1945/14 +f 1318/1946/4 1319/1947/4 1317/1948/4 +f 1320/1949/1 1323/1950/1 1319/1947/1 +f 1321/1951/5 1318/1946/5 1317/1948/5 +f 1323/1952/13 1317/1948/13 1319/1947/13 +f 1320/1949/14 1322/1953/14 1324/1954/14 +f 1326/1955/4 1327/1956/4 1325/1957/4 +f 1328/1958/1 1331/1959/1 1327/1956/1 +f 1329/1960/5 1326/1955/5 1325/1957/5 +f 1331/1961/13 1325/1957/13 1327/1956/13 +f 1328/1958/14 1330/1962/14 1332/1963/14 +f 1335/1964/7 1334/1965/7 1333/1966/7 +f 1335/1964/1 1340/1967/1 1336/1968/1 +f 1337/1969/5 1334/1965/5 1338/1970/5 +f 1333/1966/15 1339/1971/15 1335/1964/15 +f 1338/1972/16 1336/1968/16 1340/1973/16 +f 1343/1974/7 1342/1975/7 1341/1976/7 +f 1343/1974/1 1348/1977/1 1344/1978/1 +f 1345/1979/5 1342/1975/5 1346/1980/5 +f 1341/1976/15 1347/1981/15 1343/1974/15 +f 1346/1982/16 1344/1978/16 1348/1983/16 +f 1351/1984/7 1350/1985/7 1349/1986/7 +f 1351/1984/1 1356/1987/1 1352/1988/1 +f 1353/1989/5 1350/1985/5 1354/1990/5 +f 1349/1986/15 1355/1991/15 1351/1984/15 +f 1354/1992/16 1352/1988/16 1356/1993/16 +f 1359/1994/7 1358/1995/7 1357/1996/7 +f 1359/1994/1 1364/1997/1 1360/1998/1 +f 1361/1999/5 1358/1995/5 1362/2000/5 +f 1357/1996/15 1363/2001/15 1359/1994/15 +f 1362/2002/16 1360/1998/16 1364/2003/16 +f 1367/2004/7 1366/2005/7 1365/2006/7 +f 1367/2004/1 1372/2007/1 1368/2008/1 +f 1369/2009/5 1366/2005/5 1370/2010/5 +f 1365/2006/15 1371/2011/15 1367/2004/15 +f 1370/2012/16 1368/2008/16 1372/2013/16 +f 1376/2014/1 1379/2015/1 1375/2016/1 +f 1378/2017/5 1373/2018/5 1377/2019/5 +f 1382/2020/5 1386/2021/5 1374/2022/5 +f 1374/2023/5 1378/2017/5 1382/2020/5 +f 1380/2024/1 1376/2025/1 1381/2026/1 +f 1376/2027/1 1384/2028/1 1381/2026/1 +f 1387/2029/1 1383/2030/1 1390/2031/1 +f 1386/2032/5 1385/2033/5 1388/2034/5 +f 1384/2028/1 1383/2035/1 1387/2029/1 +f 1386/2036/5 1392/2037/5 1393/2038/5 +f 1386/2039/5 1388/2034/5 1389/2040/5 +f 1383/2041/1 1391/2042/1 1390/2031/1 +f 1398/2043/1 1401/2044/1 1397/2045/1 +f 1400/2046/5 1395/2047/5 1399/2048/5 +f 1404/2049/5 1408/2050/5 1396/2051/5 +f 1396/2052/5 1400/2046/5 1404/2049/5 +f 1402/2053/1 1398/2054/1 1403/2055/1 +f 1398/2056/1 1406/2057/1 1403/2055/1 +f 1409/2058/1 1405/2059/1 1412/2060/1 +f 1408/2061/5 1407/2062/5 1410/2063/5 +f 1406/2057/1 1405/2064/1 1409/2058/1 +f 1408/2065/5 1414/2066/5 1415/2067/5 +f 1408/2068/5 1410/2063/5 1411/2069/5 +f 1405/2070/1 1413/2071/1 1412/2060/1 +f 1420/2072/1 1423/2073/1 1419/2074/1 +f 1422/2075/5 1417/2076/5 1421/2077/5 +f 1426/2078/5 1430/2079/5 1418/2080/5 +f 1418/2081/5 1422/2075/5 1426/2078/5 +f 1424/2082/1 1420/2083/1 1425/2084/1 +f 1420/2085/1 1428/2086/1 1425/2084/1 +f 1431/2087/1 1427/2088/1 1434/2089/1 +f 1430/2090/5 1429/2091/5 1432/2092/5 +f 1428/2086/1 1427/2093/1 1431/2087/1 +f 1430/2094/5 1436/2095/5 1437/2096/5 +f 1430/2097/5 1432/2092/5 1433/2098/5 +f 1427/2099/1 1435/2100/1 1434/2089/1 +f 1442/2101/1 1445/2102/1 1441/2103/1 +f 1444/2104/5 1439/2105/5 1443/2106/5 +f 1448/2107/5 1452/2108/5 1440/2109/5 +f 1440/2110/5 1444/2104/5 1448/2107/5 +f 1446/2111/1 1442/2112/1 1447/2113/1 +f 1442/2114/1 1450/2115/1 1447/2113/1 +f 1453/2116/1 1449/2117/1 1456/2118/1 +f 1452/2119/5 1451/2120/5 1454/2121/5 +f 1450/2115/1 1449/2122/1 1453/2116/1 +f 1452/2123/5 1458/2124/5 1459/2125/5 +f 1452/2126/5 1454/2121/5 1455/2127/5 +f 1449/2128/1 1457/2129/1 1456/2118/1 +f 1464/2130/1 1467/2131/1 1463/2132/1 +f 1466/2133/5 1461/2134/5 1465/2135/5 +f 1470/2136/5 1474/2137/5 1462/2138/5 +f 1462/2139/5 1466/2133/5 1470/2136/5 +f 1468/2140/1 1464/2141/1 1469/2142/1 +f 1464/2143/1 1472/2144/1 1469/2142/1 +f 1475/2145/1 1471/2146/1 1478/2147/1 +f 1474/2148/5 1473/2149/5 1476/2150/5 +f 1472/2144/1 1471/2151/1 1475/2145/1 +f 1474/2152/5 1480/2153/5 1481/2154/5 +f 1474/2155/5 1476/2150/5 1477/2156/5 +f 1471/2157/1 1479/2158/1 1478/2147/1 +f 224/1/1 1/12/1 2/2/1 +f 153/4/2 178/356/2 179/5/2 +f 163/8/3 188/377/3 186/9/3 +f 221/13/4 10/2159/4 9/14/4 +f 105/16/5 323/596/5 324/17/5 +f 8/19/4 232/21/4 222/15/4 +f 7/20/4 233/23/4 232/21/4 +f 6/22/4 234/25/4 233/23/4 +f 41/24/4 235/27/4 234/25/4 +f 42/26/4 236/29/4 235/27/4 +f 43/28/4 237/31/4 236/29/4 +f 44/30/4 238/417/4 237/31/4 +f 126/32/4 240/2160/4 242/33/4 +f 31/35/1 21/2161/1 20/36/1 +f 45/38/6 63/2162/6 64/39/6 +f 219/41/3 259/526/3 257/42/3 +f 89/44/2 271/51/2 256/45/2 +f 99/47/3 255/490/3 278/48/3 +f 88/50/2 270/413/2 271/51/2 +f 98/49/3 278/48/3 277/52/3 +f 91/54/2 273/491/2 281/55/2 +f 104/57/3 324/17/3 263/58/3 +f 160/60/6 183/369/6 184/61/6 +f 74/63/6 73/66/6 53/64/6 +f 64/39/6 63/2162/6 73/66/6 +f 74/63/6 75/68/6 65/67/6 +f 75/68/6 76/70/6 66/69/6 +f 76/70/6 77/72/6 67/71/6 +f 77/72/6 78/74/6 68/73/6 +f 78/74/6 79/76/6 69/75/6 +f 79/76/6 80/78/6 70/77/6 +f 80/78/6 81/109/6 71/79/6 +f 215/80/6 124/111/6 122/81/6 +f 32/83/7 31/2163/7 224/84/7 +f 21/86/8 31/2164/8 32/87/8 +f 64/39/6 65/67/6 4/89/6 +f 65/67/6 66/69/6 46/90/6 +f 66/69/6 67/71/6 47/91/6 +f 67/71/6 68/73/6 48/92/6 +f 68/73/6 69/75/6 49/93/6 +f 69/75/6 70/77/6 50/94/6 +f 70/77/6 71/79/6 51/95/6 +f 213/82/6 122/81/6 5/96/6 +f 19/98/2 20/2165/2 21/99/2 +f 54/65/6 53/64/6 20/101/6 +f 54/65/6 55/103/6 75/68/6 +f 55/103/6 56/104/6 76/70/6 +f 56/104/6 57/105/6 77/72/6 +f 57/105/6 58/106/6 78/74/6 +f 58/106/6 59/107/6 79/76/6 +f 59/107/6 60/108/6 80/78/6 +f 60/108/6 61/153/6 81/109/6 +f 211/110/6 123/155/6 124/111/6 +f 39/112/7 231/116/7 243/113/7 +f 38/115/7 230/118/7 231/116/7 +f 37/117/7 229/120/7 230/118/7 +f 36/119/7 228/122/7 229/120/7 +f 35/121/7 227/124/7 228/122/7 +f 34/123/7 226/126/7 227/124/7 +f 33/125/7 225/127/7 226/126/7 +f 32/83/7 223/85/7 225/127/7 +f 10/128/3 45/2166/3 3/129/3 +f 32/87/8 33/132/8 23/131/8 +f 33/132/8 34/134/8 24/133/8 +f 34/134/8 35/136/8 25/135/8 +f 35/136/8 36/138/8 26/137/8 +f 36/138/8 37/140/8 27/139/8 +f 37/140/8 38/142/8 28/141/8 +f 38/142/8 39/402/8 29/143/8 +f 208/144/8 125/2167/8 30/145/8 +f 19/102/6 18/147/6 55/103/6 +f 18/147/6 17/148/6 56/104/6 +f 17/148/6 16/149/6 57/105/6 +f 16/149/6 15/150/6 58/106/6 +f 15/150/6 14/151/6 59/107/6 +f 14/151/6 13/152/6 60/108/6 +f 13/152/6 12/399/6 61/153/6 +f 203/154/6 11/2168/6 123/155/6 +f 22/100/2 23/157/2 18/156/2 +f 23/157/2 24/159/2 17/158/2 +f 24/159/2 25/161/2 16/160/2 +f 25/161/2 26/163/2 15/162/2 +f 26/163/2 27/165/2 14/164/2 +f 27/165/2 28/167/2 13/166/2 +f 28/167/2 29/396/2 12/168/2 +f 206/169/2 30/2169/2 11/170/2 +f 216/172/3 44/175/3 51/173/3 +f 44/175/3 43/177/3 50/176/3 +f 43/177/3 42/179/3 49/178/3 +f 42/179/3 41/181/3 48/180/3 +f 41/181/3 6/183/3 47/182/3 +f 6/183/3 7/185/3 46/184/3 +f 7/185/3 8/187/3 4/186/3 +f 8/187/3 9/130/3 3/129/3 +f 123/188/5 11/2170/5 30/189/5 +f 52/191/2 138/280/2 142/192/2 +f 72/194/2 117/232/2 115/195/2 +f 103/197/6 144/284/6 141/198/6 +f 128/200/5 239/204/5 240/201/5 +f 72/206/5 122/210/5 124/207/5 +f 109/209/5 127/213/5 122/210/5 +f 82/208/5 124/207/5 128/211/5 +f 110/212/5 128/211/5 127/213/5 +f 108/214/2 118/238/2 120/215/2 +f 110/217/3 114/234/3 116/218/3 +f 82/220/8 116/230/8 117/221/8 +f 109/223/6 115/227/6 114/224/6 +f 108/226/5 114/224/5 115/227/5 +f 112/229/5 113/237/5 117/221/5 +f 111/231/5 115/195/5 117/232/5 +f 108/214/5 112/216/5 116/218/5 +f 120/215/5 118/238/5 119/235/5 +f 112/229/6 120/215/6 121/236/6 +f 113/233/3 121/236/3 119/235/3 +f 111/228/8 119/235/8 118/238/8 +f 52/239/5 5/245/5 122/210/5 +f 106/241/5 124/207/5 123/188/5 +f 62/242/5 123/188/5 125/190/5 +f 101/244/5 126/247/5 5/245/5 +f 102/246/5 127/213/5 126/247/5 +f 40/243/5 125/190/5 128/211/5 +f 107/240/5 122/210/5 127/213/5 +f 103/248/5 128/211/5 124/207/5 +f 134/249/8 150/290/8 151/250/8 +f 135/252/2 151/250/2 145/253/2 +f 62/255/8 139/276/8 140/256/8 +f 102/258/3 143/286/3 137/259/3 +f 101/261/6 142/282/6 143/262/6 +f 40/264/3 141/278/3 139/265/3 +f 107/267/8 137/274/8 138/268/8 +f 106/270/2 140/288/2 144/271/2 +f 129/273/5 130/296/5 138/268/5 +f 131/275/5 132/298/5 140/256/5 +f 133/277/5 131/295/5 139/265/5 +f 134/279/5 142/192/5 138/280/5 +f 135/251/5 143/262/5 142/282/5 +f 133/283/5 141/198/5 144/284/5 +f 135/252/5 129/254/5 137/259/5 +f 136/287/5 144/271/5 140/288/5 +f 145/253/5 151/250/5 150/290/5 +f 147/292/5 149/297/5 152/293/5 +f 133/277/2 149/297/2 147/292/2 +f 129/273/6 145/253/6 146/291/6 +f 132/289/3 148/294/3 152/293/3 +f 136/285/8 152/293/8 149/297/8 +f 130/281/3 146/291/3 150/290/3 +f 131/275/6 147/292/6 148/294/6 +f 2/299/1 154/303/1 153/300/1 +f 63/302/1 155/305/1 154/303/1 +f 45/304/1 156/306/1 155/305/1 +f 10/301/1 153/300/1 156/306/1 +f 63/302/1 158/309/1 157/307/1 +f 2/299/1 159/311/1 158/309/1 +f 1/310/1 160/312/1 159/311/1 +f 73/308/1 157/307/1 160/312/1 +f 31/35/1 162/314/1 161/313/1 +f 53/37/1 163/315/1 162/314/1 +f 73/308/1 164/316/1 163/315/1 +f 1/310/1 161/313/1 164/316/1 +f 166/317/3 190/381/3 191/318/3 +f 175/320/6 199/385/6 200/321/6 +f 170/323/6 194/382/6 193/324/6 +f 158/326/8 182/362/8 181/327/8 +f 164/329/8 187/379/8 188/330/8 +f 155/332/3 180/358/3 177/333/3 +f 157/335/3 181/364/3 183/336/3 +f 162/338/6 186/372/6 185/339/6 +f 156/341/8 179/361/8 180/342/8 +f 159/344/2 184/367/2 182/345/2 +f 161/347/2 185/375/2 187/348/2 +f 154/350/6 177/354/6 178/351/6 +f 166/353/1 178/351/1 177/354/1 +f 166/317/1 167/319/1 179/5/1 +f 165/357/1 177/333/1 180/358/1 +f 167/360/1 168/390/1 180/342/1 +f 170/323/1 169/325/1 181/327/1 +f 171/363/1 183/336/1 181/364/1 +f 172/366/1 170/388/1 182/345/1 +f 172/368/1 184/61/1 183/369/1 +f 173/371/1 185/339/1 186/372/1 +f 173/374/1 175/387/1 187/348/1 +f 174/376/1 186/9/1 188/377/1 +f 175/320/1 176/322/1 188/330/1 +f 189/380/1 192/389/1 191/318/1 +f 194/382/1 196/391/1 195/383/1 +f 198/384/1 200/321/1 199/385/1 +f 174/373/8 198/384/8 197/386/8 +f 169/365/2 193/324/2 195/383/2 +f 168/359/2 192/389/2 189/380/2 +f 173/374/3 197/386/3 199/385/3 +f 172/366/3 196/391/3 194/382/3 +f 167/360/6 191/318/6 192/389/6 +f 176/378/2 200/321/2 198/384/2 +f 165/355/8 189/380/8 190/381/8 +f 171/370/8 195/383/8 196/391/8 +f 126/392/3 202/395/3 209/393/3 +f 202/395/3 216/172/3 201/174/3 +f 29/396/2 205/398/2 204/397/2 +f 205/398/2 206/169/2 203/171/2 +f 12/399/6 204/401/6 210/400/6 +f 204/401/6 203/154/6 211/110/6 +f 39/402/8 207/404/8 205/403/8 +f 207/404/8 208/144/8 206/146/8 +f 208/405/7 241/408/7 239/406/7 +f 207/114/7 243/113/7 241/408/7 +f 61/153/6 210/400/6 214/409/6 +f 210/400/6 211/110/6 215/80/6 +f 71/79/6 212/411/6 201/410/6 +f 212/411/6 213/82/6 209/97/6 +f 81/109/6 214/409/6 212/411/6 +f 214/409/6 215/80/6 213/82/6 +f 87/412/2 269/506/2 270/413/2 +f 97/53/3 277/52/3 276/414/3 +f 216/416/4 244/418/4 238/417/4 +f 202/34/4 242/33/4 244/418/4 +f 307/419/8 221/453/8 222/420/8 +f 310/422/8 84/426/8 223/423/8 +f 85/425/8 225/428/8 223/423/8 +f 86/427/8 226/430/8 225/428/8 +f 87/429/8 227/432/8 226/430/8 +f 88/431/8 228/434/8 227/432/8 +f 89/433/8 229/436/8 228/434/8 +f 90/435/8 230/438/8 229/436/8 +f 91/437/8 231/462/8 230/438/8 +f 93/421/8 222/420/8 232/439/8 +f 94/440/8 232/439/8 233/441/8 +f 95/442/8 233/441/8 234/443/8 +f 96/444/8 234/443/8 235/445/8 +f 97/446/8 235/445/8 236/447/8 +f 98/448/8 236/447/8 237/449/8 +f 99/450/8 237/449/8 238/451/8 +f 310/422/8 224/424/8 221/453/8 +f 312/454/8 240/460/8 239/455/8 +f 311/456/8 239/455/8 241/457/8 +f 312/454/8 220/466/8 242/459/8 +f 217/461/8 243/463/8 231/462/8 +f 218/458/8 241/457/8 243/463/8 +f 100/452/8 238/451/8 244/464/8 +f 219/465/8 244/464/8 242/459/8 +f 316/2171/3 93/2172/3 283/469/3 +f 93/2172/3 94/467/3 283/469/3 +f 250/470/2 292/480/2 294/471/2 +f 253/473/3 295/558/3 293/474/3 +f 262/476/2 342/618/2 325/477/2 +f 268/479/2 326/486/2 292/480/2 +f 251/475/3 293/474/3 334/481/3 +f 265/483/5 343/615/5 344/484/5 +f 267/478/2 325/477/2 326/486/2 +f 259/526/3 219/41/3 286/489/3 +f 219/41/3 220/487/3 286/489/3 +f 100/43/3 257/42/3 255/490/3 +f 90/46/2 256/45/2 273/491/2 +f 318/2173/2 218/2174/2 285/492/2 +f 218/2174/2 217/56/2 285/492/2 +f 246/511/2 85/497/2 284/495/2 +f 85/497/2 84/493/2 284/495/2 +f 95/496/3 247/500/3 245/468/3 +f 85/497/2 246/511/2 248/498/2 +f 96/415/3 276/414/3 247/500/3 +f 249/482/3 334/481/3 333/501/3 +f 261/503/1 341/613/1 342/504/1 +f 86/499/2 248/498/2 269/506/2 +f 284/495/9 315/583/9 316/507/9 +f 318/508/10 285/492/10 286/489/10 +f 268/510/8 248/498/8 246/511/8 +f 250/513/8 269/506/8 248/498/8 +f 252/514/8 270/413/8 269/506/8 +f 254/515/8 271/51/8 270/413/8 +f 272/516/8 256/45/8 271/51/8 +f 258/517/8 273/491/8 256/45/8 +f 274/518/8 245/468/8 247/500/8 +f 275/519/8 247/500/8 276/414/8 +f 249/520/8 276/414/8 277/52/8 +f 251/521/8 277/52/8 278/48/8 +f 253/522/8 278/48/8 255/490/8 +f 279/523/8 255/490/8 257/42/8 +f 260/525/8 281/55/8 273/491/8 +f 280/524/8 257/42/8 259/526/8 +f 262/528/8 284/495/8 283/469/8 +f 264/530/8 286/489/8 285/492/8 +f 262/528/8 267/512/8 246/511/8 +f 261/529/8 283/469/8 245/468/8 +f 265/531/8 285/492/8 281/55/8 +f 264/530/8 282/527/8 259/526/8 +f 291/532/2 349/625/2 347/533/2 +f 303/535/5 361/630/5 362/536/5 +f 289/534/2 347/533/2 345/538/2 +f 340/540/2 359/549/2 357/541/2 +f 330/543/3 356/551/3 358/544/3 +f 331/545/3 358/544/3 360/546/3 +f 306/548/2 364/632/2 359/549/2 +f 329/550/3 354/628/3 356/551/3 +f 338/542/2 357/541/2 355/552/2 +f 274/554/3 287/575/3 341/555/3 +f 279/557/3 297/565/3 295/558/3 +f 252/472/2 294/471/2 296/559/2 +f 260/561/2 302/572/2 343/562/2 +f 280/564/3 299/574/3 297/565/3 +f 254/560/2 296/559/2 298/566/2 +f 264/568/3 344/621/3 301/569/3 +f 258/571/2 300/573/2 302/572/2 +f 272/567/2 298/566/2 300/573/2 +f 282/570/3 301/569/3 299/574/3 +f 275/502/3 333/501/3 287/575/3 +f 92/576/8 307/419/8 93/421/8 +f 83/578/8 309/2175/8 84/426/8 +f 83/578/8 310/422/8 307/419/8 +f 104/579/8 312/454/8 311/456/8 +f 105/580/8 311/456/8 218/458/8 +f 104/579/8 314/2176/8 220/466/8 +f 319/582/1 316/507/1 315/583/1 +f 266/585/5 318/508/5 317/509/5 +f 320/584/1 315/583/1 84/587/1 +f 319/582/1 308/2177/1 93/589/1 +f 263/586/5 317/509/5 220/590/5 +f 266/585/5 313/2178/5 218/592/5 +f 319/593/8 320/599/8 322/594/8 +f 263/58/8 324/17/8 323/596/8 +f 83/598/2 322/594/2 320/599/2 +f 313/601/2 266/597/2 323/596/2 +f 92/603/1 321/595/1 322/594/1 +f 308/605/3 319/593/3 321/595/3 +f 290/607/8 326/486/8 325/477/8 +f 327/609/8 292/480/8 326/486/8 +f 328/610/8 294/471/8 292/480/8 +f 329/550/8 296/559/8 294/471/8 +f 330/543/8 298/566/8 296/559/8 +f 331/545/8 300/573/8 298/566/8 +f 332/539/8 287/575/8 333/501/8 +f 289/534/8 333/501/8 334/481/8 +f 291/532/8 334/481/8 293/474/8 +f 335/611/8 293/474/8 295/558/8 +f 336/612/8 295/558/8 297/565/8 +f 337/553/8 297/565/8 299/574/8 +f 339/547/8 302/572/8 300/573/8 +f 338/542/8 299/574/8 301/569/8 +f 304/537/8 342/504/8 341/613/8 +f 306/614/8 344/484/8 343/615/8 +f 304/617/8 288/608/8 325/477/8 +f 303/619/8 341/555/8 287/575/8 +f 305/620/8 343/562/8 302/572/8 +f 306/548/8 340/540/8 301/569/8 +f 345/538/8 347/533/8 348/622/8 +f 347/533/8 349/625/8 350/624/8 +f 349/625/8 351/627/8 352/626/8 +f 351/627/8 353/629/8 354/628/8 +f 353/629/8 355/552/8 356/551/8 +f 355/552/8 357/541/8 358/544/8 +f 357/541/8 359/549/8 360/546/8 +f 361/630/8 345/538/8 346/623/8 +f 359/549/8 364/632/8 363/631/8 +f 288/608/3 346/623/3 348/622/3 +f 305/616/1 363/631/1 364/632/1 +f 335/611/2 351/627/2 349/625/2 +f 290/607/3 348/622/3 350/624/3 +f 304/617/3 362/536/3 346/623/3 +f 336/612/2 353/629/2 351/627/2 +f 327/609/3 350/624/3 352/626/3 +f 332/539/2 345/538/2 361/630/2 +f 337/553/2 355/552/2 353/629/2 +f 328/610/3 352/626/3 354/628/3 +f 339/547/3 360/546/3 363/631/3 +f 373/633/3 376/649/3 368/634/3 +f 384/636/1 372/666/1 371/637/1 +f 377/639/2 380/653/2 370/640/2 +f 388/642/5 366/2179/5 365/643/5 +f 375/645/8 366/2179/8 388/642/8 +f 368/634/8 376/649/8 389/647/8 +f 376/649/8 375/645/8 391/646/8 +f 371/650/2 372/666/2 379/651/2 +f 378/652/2 379/651/2 380/653/2 +f 365/654/3 366/2179/3 375/645/3 +f 374/655/3 375/645/3 376/649/3 +f 394/656/6 396/658/6 374/655/6 +f 393/657/6 395/670/6 396/658/6 +f 365/659/5 398/682/5 404/660/5 +f 381/662/6 393/657/6 394/656/6 +f 390/664/8 392/665/8 380/653/8 +f 389/647/8 391/646/8 392/665/8 +f 384/636/8 390/664/8 379/651/8 +f 383/648/8 389/647/8 390/664/8 +f 392/665/8 387/667/8 370/640/8 +f 391/646/8 388/642/8 387/667/8 +f 385/661/2 404/660/2 403/668/2 +f 395/670/6 386/2180/6 385/671/6 +f 370/640/5 387/667/5 386/672/5 +f 387/667/5 388/642/5 385/644/5 +f 368/634/1 383/648/1 382/674/1 +f 383/648/1 384/636/1 381/638/1 +f 382/676/1 399/680/1 400/677/1 +f 394/679/2 402/2181/2 399/680/2 +f 374/681/3 397/687/3 398/682/3 +f 373/683/5 401/688/5 402/684/5 +f 396/686/1 403/2182/1 397/687/1 +f 367/678/3 400/677/3 401/688/3 +f 413/689/3 416/705/3 408/690/3 +f 424/692/1 412/722/1 411/693/1 +f 417/695/2 420/709/2 410/696/2 +f 428/698/5 406/2183/5 405/699/5 +f 415/701/8 406/2183/8 428/698/8 +f 408/690/8 416/705/8 429/703/8 +f 416/705/8 415/701/8 431/702/8 +f 411/706/2 412/722/2 419/707/2 +f 418/708/2 419/707/2 420/709/2 +f 405/710/3 406/2183/3 415/701/3 +f 414/711/3 415/701/3 416/705/3 +f 434/712/6 436/714/6 414/711/6 +f 433/713/6 435/726/6 436/714/6 +f 405/715/5 438/738/5 444/716/5 +f 421/718/6 433/713/6 434/712/6 +f 430/720/8 432/721/8 420/709/8 +f 429/703/8 431/702/8 432/721/8 +f 424/692/8 430/720/8 419/707/8 +f 423/704/8 429/703/8 430/720/8 +f 432/721/8 427/723/8 410/696/8 +f 431/702/8 428/698/8 427/723/8 +f 425/717/2 444/716/2 443/724/2 +f 435/726/6 426/2184/6 425/727/6 +f 410/696/5 427/723/5 426/728/5 +f 427/723/5 428/698/5 425/700/5 +f 408/690/1 423/704/1 422/730/1 +f 423/704/1 424/692/1 421/694/1 +f 422/732/1 439/736/1 440/733/1 +f 434/735/2 442/2185/2 439/736/2 +f 414/737/3 437/743/3 438/738/3 +f 413/739/5 441/744/5 442/740/5 +f 436/742/1 443/2186/1 437/743/1 +f 407/734/3 440/733/3 441/744/3 +f 453/745/3 456/761/3 448/746/3 +f 464/748/1 452/778/1 451/749/1 +f 457/751/2 460/765/2 450/752/2 +f 468/754/5 446/2187/5 445/755/5 +f 455/757/8 446/2187/8 468/754/8 +f 448/746/8 456/761/8 469/759/8 +f 456/761/8 455/757/8 471/758/8 +f 451/762/2 452/778/2 459/763/2 +f 458/764/2 459/763/2 460/765/2 +f 445/766/3 446/2187/3 455/757/3 +f 454/767/3 455/757/3 456/761/3 +f 474/768/6 476/770/6 454/767/6 +f 473/769/6 475/782/6 476/770/6 +f 445/771/5 478/794/5 484/772/5 +f 461/774/6 473/769/6 474/768/6 +f 470/776/8 472/777/8 460/765/8 +f 469/759/8 471/758/8 472/777/8 +f 464/748/8 470/776/8 459/763/8 +f 463/760/8 469/759/8 470/776/8 +f 472/777/8 467/779/8 450/752/8 +f 471/758/8 468/754/8 467/779/8 +f 465/773/2 484/772/2 483/780/2 +f 475/782/6 466/2188/6 465/783/6 +f 450/752/5 467/779/5 466/784/5 +f 467/779/5 468/754/5 465/756/5 +f 448/746/1 463/760/1 462/786/1 +f 463/760/1 464/748/1 461/750/1 +f 462/788/1 479/792/1 480/789/1 +f 474/791/2 482/2189/2 479/792/2 +f 454/793/3 477/799/3 478/794/3 +f 453/795/5 481/800/5 482/796/5 +f 476/798/1 483/2190/1 477/799/1 +f 447/790/3 480/789/3 481/800/3 +f 493/801/3 496/817/3 488/802/3 +f 504/804/1 492/834/1 491/805/1 +f 497/807/2 500/821/2 490/808/2 +f 508/810/5 486/2191/5 485/811/5 +f 495/813/8 486/2191/8 508/810/8 +f 488/802/8 496/817/8 509/815/8 +f 496/817/8 495/813/8 511/814/8 +f 491/818/2 492/834/2 499/819/2 +f 498/820/2 499/819/2 500/821/2 +f 485/822/3 486/2191/3 495/813/3 +f 494/823/3 495/813/3 496/817/3 +f 514/824/6 516/826/6 494/823/6 +f 513/825/6 515/838/6 516/826/6 +f 485/827/5 518/850/5 524/828/5 +f 501/830/6 513/825/6 514/824/6 +f 510/832/8 512/833/8 500/821/8 +f 509/815/8 511/814/8 512/833/8 +f 504/804/8 510/832/8 499/819/8 +f 503/816/8 509/815/8 510/832/8 +f 512/833/8 507/835/8 490/808/8 +f 511/814/8 508/810/8 507/835/8 +f 505/829/2 524/828/2 523/836/2 +f 515/838/6 506/2192/6 505/839/6 +f 490/808/5 507/835/5 506/840/5 +f 507/835/5 508/810/5 505/812/5 +f 488/802/1 503/816/1 502/842/1 +f 503/816/1 504/804/1 501/806/1 +f 502/844/1 519/848/1 520/845/1 +f 514/847/2 522/2193/2 519/848/2 +f 494/849/3 517/855/3 518/850/3 +f 493/851/5 521/856/5 522/852/5 +f 516/854/1 523/2194/1 517/855/1 +f 487/846/3 520/845/3 521/856/3 +f 533/857/3 536/873/3 528/858/3 +f 544/860/1 532/890/1 531/861/1 +f 537/863/2 540/877/2 530/864/2 +f 548/866/5 526/2195/5 525/867/5 +f 535/869/8 526/2195/8 548/866/8 +f 528/858/8 536/873/8 549/871/8 +f 536/873/8 535/869/8 551/870/8 +f 531/874/2 532/890/2 539/875/2 +f 538/876/2 539/875/2 540/877/2 +f 525/878/3 526/2195/3 535/869/3 +f 534/879/3 535/869/3 536/873/3 +f 554/880/6 556/882/6 534/879/6 +f 553/881/6 555/894/6 556/882/6 +f 525/883/5 558/906/5 564/884/5 +f 541/886/6 553/881/6 554/880/6 +f 550/888/8 552/889/8 540/877/8 +f 549/871/8 551/870/8 552/889/8 +f 544/860/8 550/888/8 539/875/8 +f 543/872/8 549/871/8 550/888/8 +f 552/889/8 547/891/8 530/864/8 +f 551/870/8 548/866/8 547/891/8 +f 545/885/2 564/884/2 563/892/2 +f 555/894/6 546/2196/6 545/895/6 +f 530/864/5 547/891/5 546/896/5 +f 547/891/5 548/866/5 545/868/5 +f 528/858/1 543/872/1 542/898/1 +f 543/872/1 544/860/1 541/862/1 +f 542/900/1 559/904/1 560/901/1 +f 554/903/2 562/2197/2 559/904/2 +f 534/905/3 557/911/3 558/906/3 +f 533/907/5 561/912/5 562/908/5 +f 556/910/1 563/2198/1 557/911/1 +f 527/902/3 560/901/3 561/912/3 +f 573/913/3 576/929/3 568/914/3 +f 584/916/1 572/946/1 571/917/1 +f 577/919/2 580/933/2 570/920/2 +f 588/922/5 566/2199/5 565/923/5 +f 575/925/8 566/2199/8 588/922/8 +f 568/914/8 576/929/8 589/927/8 +f 576/929/8 575/925/8 591/926/8 +f 571/930/2 572/946/2 579/931/2 +f 578/932/2 579/931/2 580/933/2 +f 565/934/3 566/2199/3 575/925/3 +f 574/935/3 575/925/3 576/929/3 +f 594/936/6 596/938/6 574/935/6 +f 593/937/6 595/950/6 596/938/6 +f 565/939/5 598/962/5 604/940/5 +f 581/942/6 593/937/6 594/936/6 +f 590/944/8 592/945/8 580/933/8 +f 589/927/8 591/926/8 592/945/8 +f 584/916/8 590/944/8 579/931/8 +f 583/928/8 589/927/8 590/944/8 +f 592/945/8 587/947/8 570/920/8 +f 591/926/8 588/922/8 587/947/8 +f 585/941/2 604/940/2 603/948/2 +f 595/950/6 586/2200/6 585/951/6 +f 570/920/5 587/947/5 586/952/5 +f 587/947/5 588/922/5 585/924/5 +f 568/914/1 583/928/1 582/954/1 +f 583/928/1 584/916/1 581/918/1 +f 582/956/1 599/960/1 600/957/1 +f 594/959/2 602/2201/2 599/960/2 +f 574/961/3 597/967/3 598/962/3 +f 573/963/5 601/968/5 602/964/5 +f 596/966/1 603/2202/1 597/967/1 +f 567/958/3 600/957/3 601/968/3 +f 613/969/3 616/985/3 608/970/3 +f 624/972/1 612/1002/1 611/973/1 +f 617/975/2 620/989/2 610/976/2 +f 628/978/5 606/2203/5 605/979/5 +f 615/981/8 606/2203/8 628/978/8 +f 608/970/8 616/985/8 629/983/8 +f 616/985/8 615/981/8 631/982/8 +f 611/986/2 612/1002/2 619/987/2 +f 618/988/2 619/987/2 620/989/2 +f 605/990/3 606/2203/3 615/981/3 +f 614/991/3 615/981/3 616/985/3 +f 634/992/6 636/994/6 614/991/6 +f 633/993/6 635/1006/6 636/994/6 +f 605/995/5 638/1018/5 644/996/5 +f 621/998/6 633/993/6 634/992/6 +f 630/1000/8 632/1001/8 620/989/8 +f 629/983/8 631/982/8 632/1001/8 +f 624/972/8 630/1000/8 619/987/8 +f 623/984/8 629/983/8 630/1000/8 +f 632/1001/8 627/1003/8 610/976/8 +f 631/982/8 628/978/8 627/1003/8 +f 625/997/2 644/996/2 643/1004/2 +f 635/1006/6 626/2204/6 625/1007/6 +f 610/976/5 627/1003/5 626/1008/5 +f 627/1003/5 628/978/5 625/980/5 +f 608/970/1 623/984/1 622/1010/1 +f 623/984/1 624/972/1 621/974/1 +f 622/1012/1 639/1016/1 640/1013/1 +f 634/1015/2 642/2205/2 639/1016/2 +f 614/1017/3 637/1023/3 638/1018/3 +f 613/1019/5 641/1024/5 642/1020/5 +f 636/1022/1 643/2206/1 637/1023/1 +f 607/1014/3 640/1013/3 641/1024/3 +f 653/1025/3 656/1041/3 648/1026/3 +f 664/1028/1 652/1058/1 651/1029/1 +f 657/1031/2 660/1045/2 650/1032/2 +f 668/1034/5 646/2207/5 645/1035/5 +f 655/1037/8 646/2207/8 668/1034/8 +f 648/1026/8 656/1041/8 669/1039/8 +f 656/1041/8 655/1037/8 671/1038/8 +f 651/1042/2 652/1058/2 659/1043/2 +f 658/1044/2 659/1043/2 660/1045/2 +f 645/1046/3 646/2207/3 655/1037/3 +f 654/1047/3 655/1037/3 656/1041/3 +f 674/1048/6 676/1050/6 654/1047/6 +f 673/1049/6 675/1062/6 676/1050/6 +f 645/1051/5 678/1074/5 684/1052/5 +f 661/1054/6 673/1049/6 674/1048/6 +f 670/1056/8 672/1057/8 660/1045/8 +f 669/1039/8 671/1038/8 672/1057/8 +f 664/1028/8 670/1056/8 659/1043/8 +f 663/1040/8 669/1039/8 670/1056/8 +f 672/1057/8 667/1059/8 650/1032/8 +f 671/1038/8 668/1034/8 667/1059/8 +f 665/1053/2 684/1052/2 683/1060/2 +f 675/1062/6 666/2208/6 665/1063/6 +f 650/1032/5 667/1059/5 666/1064/5 +f 667/1059/5 668/1034/5 665/1036/5 +f 648/1026/1 663/1040/1 662/1066/1 +f 663/1040/1 664/1028/1 661/1030/1 +f 662/1068/1 679/1072/1 680/1069/1 +f 674/1071/2 682/2209/2 679/1072/2 +f 654/1073/3 677/1079/3 678/1074/3 +f 653/1075/5 681/1080/5 682/1076/5 +f 676/1078/1 683/2210/1 677/1079/1 +f 647/1070/3 680/1069/3 681/1080/3 +f 693/1081/3 696/1097/3 688/1082/3 +f 704/1084/1 692/1114/1 691/1085/1 +f 697/1087/2 700/1101/2 690/1088/2 +f 708/1090/5 686/2211/5 685/1091/5 +f 695/1093/8 686/2211/8 708/1090/8 +f 688/1082/8 696/1097/8 709/1095/8 +f 696/1097/8 695/1093/8 711/1094/8 +f 691/1098/2 692/1114/2 699/1099/2 +f 698/1100/2 699/1099/2 700/1101/2 +f 685/1102/3 686/2211/3 695/1093/3 +f 694/1103/3 695/1093/3 696/1097/3 +f 714/1104/6 716/1106/6 694/1103/6 +f 713/1105/6 715/1118/6 716/1106/6 +f 685/1107/5 718/1130/5 724/1108/5 +f 701/1110/6 713/1105/6 714/1104/6 +f 710/1112/8 712/1113/8 700/1101/8 +f 709/1095/8 711/1094/8 712/1113/8 +f 704/1084/8 710/1112/8 699/1099/8 +f 703/1096/8 709/1095/8 710/1112/8 +f 712/1113/8 707/1115/8 690/1088/8 +f 711/1094/8 708/1090/8 707/1115/8 +f 705/1109/2 724/1108/2 723/1116/2 +f 715/1118/6 706/2212/6 705/1119/6 +f 690/1088/5 707/1115/5 706/1120/5 +f 707/1115/5 708/1090/5 705/1092/5 +f 688/1082/1 703/1096/1 702/1122/1 +f 703/1096/1 704/1084/1 701/1086/1 +f 702/1124/1 719/1128/1 720/1125/1 +f 714/1127/2 722/2213/2 719/1128/2 +f 694/1129/3 717/1135/3 718/1130/3 +f 693/1131/5 721/1136/5 722/1132/5 +f 716/1134/1 723/2214/1 717/1135/1 +f 687/1126/3 720/1125/3 721/1136/3 +f 733/1137/3 736/1153/3 728/1138/3 +f 744/1140/1 732/1170/1 731/1141/1 +f 737/1143/2 740/1157/2 730/1144/2 +f 748/1146/5 726/2215/5 725/1147/5 +f 735/1149/8 726/2215/8 748/1146/8 +f 728/1138/8 736/1153/8 749/1151/8 +f 736/1153/8 735/1149/8 751/1150/8 +f 731/1154/2 732/1170/2 739/1155/2 +f 738/1156/2 739/1155/2 740/1157/2 +f 725/1158/3 726/2215/3 735/1149/3 +f 734/1159/3 735/1149/3 736/1153/3 +f 754/1160/6 756/1162/6 734/1159/6 +f 753/1161/6 755/1174/6 756/1162/6 +f 725/1163/5 758/1186/5 764/1164/5 +f 741/1166/6 753/1161/6 754/1160/6 +f 750/1168/8 752/1169/8 740/1157/8 +f 749/1151/8 751/1150/8 752/1169/8 +f 744/1140/8 750/1168/8 739/1155/8 +f 743/1152/8 749/1151/8 750/1168/8 +f 752/1169/8 747/1171/8 730/1144/8 +f 751/1150/8 748/1146/8 747/1171/8 +f 745/1165/2 764/1164/2 763/1172/2 +f 755/1174/6 746/2216/6 745/1175/6 +f 730/1144/5 747/1171/5 746/1176/5 +f 747/1171/5 748/1146/5 745/1148/5 +f 728/1138/1 743/1152/1 742/1178/1 +f 743/1152/1 744/1140/1 741/1142/1 +f 742/1180/1 759/1184/1 760/1181/1 +f 754/1183/2 762/2217/2 759/1184/2 +f 734/1185/3 757/1191/3 758/1186/3 +f 733/1187/5 761/1192/5 762/1188/5 +f 756/1190/1 763/2218/1 757/1191/1 +f 727/1182/3 760/1181/3 761/1192/3 +f 773/1193/3 776/1209/3 768/1194/3 +f 784/1196/1 772/1226/1 771/1197/1 +f 777/1199/2 780/1213/2 770/1200/2 +f 788/1202/5 766/2219/5 765/1203/5 +f 775/1205/8 766/2219/8 788/1202/8 +f 768/1194/8 776/1209/8 789/1207/8 +f 776/1209/8 775/1205/8 791/1206/8 +f 771/1210/2 772/1226/2 779/1211/2 +f 778/1212/2 779/1211/2 780/1213/2 +f 765/1214/3 766/2219/3 775/1205/3 +f 774/1215/3 775/1205/3 776/1209/3 +f 794/1216/6 796/1218/6 774/1215/6 +f 793/1217/6 795/1230/6 796/1218/6 +f 765/1219/5 798/1242/5 804/1220/5 +f 781/1222/6 793/1217/6 794/1216/6 +f 790/1224/8 792/1225/8 780/1213/8 +f 789/1207/8 791/1206/8 792/1225/8 +f 784/1196/8 790/1224/8 779/1211/8 +f 783/1208/8 789/1207/8 790/1224/8 +f 792/1225/8 787/1227/8 770/1200/8 +f 791/1206/8 788/1202/8 787/1227/8 +f 785/1221/2 804/1220/2 803/1228/2 +f 795/1230/6 786/2220/6 785/1231/6 +f 770/1200/5 787/1227/5 786/1232/5 +f 787/1227/5 788/1202/5 785/1204/5 +f 768/1194/1 783/1208/1 782/1234/1 +f 783/1208/1 784/1196/1 781/1198/1 +f 782/1236/1 799/1240/1 800/1237/1 +f 794/1239/2 802/2221/2 799/1240/2 +f 774/1241/3 797/1247/3 798/1242/3 +f 773/1243/5 801/1248/5 802/1244/5 +f 796/1246/1 803/2222/1 797/1247/1 +f 767/1238/3 800/1237/3 801/1248/3 +f 813/1249/2 807/2223/2 808/1250/2 +f 811/1252/1 812/1267/1 824/1253/1 +f 817/1255/3 809/2224/3 810/1256/3 +f 805/1258/5 806/1270/5 828/1259/5 +f 828/1259/8 806/1270/8 815/1261/8 +f 829/1263/8 816/1251/8 808/1250/8 +f 831/1262/8 815/1261/8 816/1251/8 +f 811/1265/3 818/1268/3 819/1266/3 +f 818/1268/3 817/1255/3 820/1257/3 +f 805/1269/2 814/1271/2 815/1261/2 +f 814/1271/2 813/1249/2 816/1251/2 +f 814/1271/6 836/1273/6 834/1272/6 +f 836/1273/6 835/1286/6 833/1274/6 +f 844/1275/5 838/1296/5 805/1276/5 +f 834/1272/6 833/1274/6 821/1278/6 +f 820/1257/8 832/1281/8 830/1280/8 +f 832/1281/8 831/1262/8 829/1263/8 +f 819/1266/8 830/1280/8 824/1253/8 +f 830/1280/8 829/1263/8 823/1264/8 +f 810/1256/8 827/1282/8 832/1281/8 +f 827/1282/8 828/1259/8 831/1262/8 +f 843/1283/3 844/1275/3 825/1277/3 +f 825/1285/6 826/2225/6 835/1286/6 +f 826/1287/5 827/1282/5 810/1256/5 +f 825/1260/5 828/1259/5 827/1282/5 +f 822/1289/1 823/1264/1 808/1250/1 +f 821/1254/1 824/1253/1 823/1264/1 +f 840/1291/1 839/1294/1 822/1292/1 +f 839/1294/3 842/2226/3 834/1295/3 +f 838/1296/2 837/1301/2 814/1297/2 +f 842/1298/5 841/1303/5 813/1299/5 +f 837/1301/1 843/2227/1 836/1302/1 +f 841/1303/2 840/1291/2 807/1293/2 +f 853/1304/2 847/2228/2 848/1305/2 +f 851/1307/1 852/1322/1 864/1308/1 +f 857/1310/3 849/2229/3 850/1311/3 +f 845/1313/5 846/1325/5 868/1314/5 +f 868/1314/8 846/1325/8 855/1316/8 +f 869/1318/8 856/1306/8 848/1305/8 +f 871/1317/8 855/1316/8 856/1306/8 +f 851/1320/3 858/1323/3 859/1321/3 +f 858/1323/3 857/1310/3 860/1312/3 +f 845/1324/2 854/1326/2 855/1316/2 +f 854/1326/2 853/1304/2 856/1306/2 +f 854/1326/6 876/1328/6 874/1327/6 +f 876/1328/6 875/1341/6 873/1329/6 +f 884/1330/5 878/1351/5 845/1331/5 +f 874/1327/6 873/1329/6 861/1333/6 +f 860/1312/8 872/1336/8 870/1335/8 +f 872/1336/8 871/1317/8 869/1318/8 +f 859/1321/8 870/1335/8 864/1308/8 +f 870/1335/8 869/1318/8 863/1319/8 +f 850/1311/8 867/1337/8 872/1336/8 +f 867/1337/8 868/1314/8 871/1317/8 +f 883/1338/3 884/1330/3 865/1332/3 +f 865/1340/6 866/2230/6 875/1341/6 +f 866/1342/5 867/1337/5 850/1311/5 +f 865/1315/5 868/1314/5 867/1337/5 +f 862/1344/1 863/1319/1 848/1305/1 +f 861/1309/1 864/1308/1 863/1319/1 +f 880/1346/1 879/1349/1 862/1347/1 +f 879/1349/3 882/2231/3 874/1350/3 +f 878/1351/2 877/1356/2 854/1352/2 +f 882/1353/5 881/1358/5 853/1354/5 +f 877/1356/1 883/2232/1 876/1357/1 +f 881/1358/2 880/1346/2 847/1348/2 +f 893/1359/2 887/2233/2 888/1360/2 +f 891/1362/1 892/1377/1 904/1363/1 +f 897/1365/3 889/2234/3 890/1366/3 +f 885/1368/5 886/1380/5 908/1369/5 +f 908/1369/8 886/1380/8 895/1371/8 +f 909/1373/8 896/1361/8 888/1360/8 +f 911/1372/8 895/1371/8 896/1361/8 +f 891/1375/3 898/1378/3 899/1376/3 +f 898/1378/3 897/1365/3 900/1367/3 +f 885/1379/2 894/1381/2 895/1371/2 +f 894/1381/2 893/1359/2 896/1361/2 +f 894/1381/6 916/1383/6 914/1382/6 +f 916/1383/6 915/1396/6 913/1384/6 +f 924/1385/5 918/1406/5 885/1386/5 +f 914/1382/6 913/1384/6 901/1388/6 +f 900/1367/8 912/1391/8 910/1390/8 +f 912/1391/8 911/1372/8 909/1373/8 +f 899/1376/8 910/1390/8 904/1363/8 +f 910/1390/8 909/1373/8 903/1374/8 +f 890/1366/8 907/1392/8 912/1391/8 +f 907/1392/8 908/1369/8 911/1372/8 +f 923/1393/3 924/1385/3 905/1387/3 +f 905/1395/6 906/2235/6 915/1396/6 +f 906/1397/5 907/1392/5 890/1366/5 +f 905/1370/5 908/1369/5 907/1392/5 +f 902/1399/1 903/1374/1 888/1360/1 +f 901/1364/1 904/1363/1 903/1374/1 +f 920/1401/1 919/1404/1 902/1402/1 +f 919/1404/3 922/2236/3 914/1405/3 +f 918/1406/2 917/1411/2 894/1407/2 +f 922/1408/5 921/1413/5 893/1409/5 +f 917/1411/1 923/2237/1 916/1412/1 +f 921/1413/2 920/1401/2 887/1403/2 +f 933/1414/2 927/2238/2 928/1415/2 +f 931/1417/1 932/1432/1 944/1418/1 +f 937/1420/3 929/2239/3 930/1421/3 +f 925/1423/5 926/1435/5 948/1424/5 +f 948/1424/8 926/1435/8 935/1426/8 +f 949/1428/8 936/1416/8 928/1415/8 +f 951/1427/8 935/1426/8 936/1416/8 +f 931/1430/3 938/1433/3 939/1431/3 +f 938/1433/3 937/1420/3 940/1422/3 +f 925/1434/2 934/1436/2 935/1426/2 +f 934/1436/2 933/1414/2 936/1416/2 +f 934/1436/6 956/1438/6 954/1437/6 +f 956/1438/6 955/1451/6 953/1439/6 +f 964/1440/5 958/1461/5 925/1441/5 +f 954/1437/6 953/1439/6 941/1443/6 +f 940/1422/8 952/1446/8 950/1445/8 +f 952/1446/8 951/1427/8 949/1428/8 +f 939/1431/8 950/1445/8 944/1418/8 +f 950/1445/8 949/1428/8 943/1429/8 +f 930/1421/8 947/1447/8 952/1446/8 +f 947/1447/8 948/1424/8 951/1427/8 +f 963/1448/3 964/1440/3 945/1442/3 +f 945/1450/6 946/2240/6 955/1451/6 +f 946/1452/5 947/1447/5 930/1421/5 +f 945/1425/5 948/1424/5 947/1447/5 +f 942/1454/1 943/1429/1 928/1415/1 +f 941/1419/1 944/1418/1 943/1429/1 +f 960/1456/1 959/1459/1 942/1457/1 +f 959/1459/3 962/2241/3 954/1460/3 +f 958/1461/2 957/1466/2 934/1462/2 +f 962/1463/5 961/1468/5 933/1464/5 +f 957/1466/1 963/2242/1 956/1467/1 +f 961/1468/2 960/1456/2 927/1458/2 +f 973/1469/2 967/2243/2 968/1470/2 +f 971/1472/1 972/1487/1 984/1473/1 +f 977/1475/3 969/2244/3 970/1476/3 +f 965/1478/5 966/1490/5 988/1479/5 +f 988/1479/8 966/1490/8 975/1481/8 +f 989/1483/8 976/1471/8 968/1470/8 +f 991/1482/8 975/1481/8 976/1471/8 +f 971/1485/3 978/1488/3 979/1486/3 +f 978/1488/3 977/1475/3 980/1477/3 +f 965/1489/2 974/1491/2 975/1481/2 +f 974/1491/2 973/1469/2 976/1471/2 +f 974/1491/6 996/1493/6 994/1492/6 +f 996/1493/6 995/1506/6 993/1494/6 +f 1004/1495/5 998/1516/5 965/1496/5 +f 994/1492/6 993/1494/6 981/1498/6 +f 980/1477/8 992/1501/8 990/1500/8 +f 992/1501/8 991/1482/8 989/1483/8 +f 979/1486/8 990/1500/8 984/1473/8 +f 990/1500/8 989/1483/8 983/1484/8 +f 970/1476/8 987/1502/8 992/1501/8 +f 987/1502/8 988/1479/8 991/1482/8 +f 1003/1503/3 1004/1495/3 985/1497/3 +f 985/1505/6 986/2245/6 995/1506/6 +f 986/1507/5 987/1502/5 970/1476/5 +f 985/1480/5 988/1479/5 987/1502/5 +f 982/1509/1 983/1484/1 968/1470/1 +f 981/1474/1 984/1473/1 983/1484/1 +f 1000/1511/1 999/1514/1 982/1512/1 +f 999/1514/3 1002/2246/3 994/1515/3 +f 998/1516/2 997/1521/2 974/1517/2 +f 1002/1518/5 1001/1523/5 973/1519/5 +f 997/1521/1 1003/2247/1 996/1522/1 +f 1001/1523/2 1000/1511/2 967/1513/2 +f 1013/1524/2 1007/2248/2 1008/1525/2 +f 1011/1527/1 1012/1542/1 1024/1528/1 +f 1017/1530/3 1009/2249/3 1010/1531/3 +f 1005/1533/5 1006/1545/5 1028/1534/5 +f 1028/1534/8 1006/1545/8 1015/1536/8 +f 1029/1538/8 1016/1526/8 1008/1525/8 +f 1031/1537/8 1015/1536/8 1016/1526/8 +f 1011/1540/3 1018/1543/3 1019/1541/3 +f 1018/1543/3 1017/1530/3 1020/1532/3 +f 1005/1544/2 1014/1546/2 1015/1536/2 +f 1014/1546/2 1013/1524/2 1016/1526/2 +f 1014/1546/6 1036/1548/6 1034/1547/6 +f 1036/1548/6 1035/1561/6 1033/1549/6 +f 1044/1550/5 1038/1571/5 1005/1551/5 +f 1034/1547/6 1033/1549/6 1021/1553/6 +f 1020/1532/8 1032/1556/8 1030/1555/8 +f 1032/1556/8 1031/1537/8 1029/1538/8 +f 1019/1541/8 1030/1555/8 1024/1528/8 +f 1030/1555/8 1029/1538/8 1023/1539/8 +f 1010/1531/8 1027/1557/8 1032/1556/8 +f 1027/1557/8 1028/1534/8 1031/1537/8 +f 1043/1558/3 1044/1550/3 1025/1552/3 +f 1025/1560/6 1026/2250/6 1035/1561/6 +f 1026/1562/5 1027/1557/5 1010/1531/5 +f 1025/1535/5 1028/1534/5 1027/1557/5 +f 1022/1564/1 1023/1539/1 1008/1525/1 +f 1021/1529/1 1024/1528/1 1023/1539/1 +f 1040/1566/1 1039/1569/1 1022/1567/1 +f 1039/1569/3 1042/2251/3 1034/1570/3 +f 1038/1571/2 1037/1576/2 1014/1572/2 +f 1042/1573/5 1041/1578/5 1013/1574/5 +f 1037/1576/1 1043/2252/1 1036/1577/1 +f 1041/1578/2 1040/1566/2 1007/1568/2 +f 1053/1579/2 1047/2253/2 1048/1580/2 +f 1051/1582/1 1052/1597/1 1064/1583/1 +f 1057/1585/3 1049/2254/3 1050/1586/3 +f 1045/1588/5 1046/1600/5 1068/1589/5 +f 1068/1589/8 1046/1600/8 1055/1591/8 +f 1069/1593/8 1056/1581/8 1048/1580/8 +f 1071/1592/8 1055/1591/8 1056/1581/8 +f 1051/1595/3 1058/1598/3 1059/1596/3 +f 1058/1598/3 1057/1585/3 1060/1587/3 +f 1045/1599/2 1054/1601/2 1055/1591/2 +f 1054/1601/2 1053/1579/2 1056/1581/2 +f 1054/1601/6 1076/1603/6 1074/1602/6 +f 1076/1603/6 1075/1616/6 1073/1604/6 +f 1084/1605/5 1078/1626/5 1045/1606/5 +f 1074/1602/6 1073/1604/6 1061/1608/6 +f 1060/1587/8 1072/1611/8 1070/1610/8 +f 1072/1611/8 1071/1592/8 1069/1593/8 +f 1059/1596/8 1070/1610/8 1064/1583/8 +f 1070/1610/8 1069/1593/8 1063/1594/8 +f 1050/1586/8 1067/1612/8 1072/1611/8 +f 1067/1612/8 1068/1589/8 1071/1592/8 +f 1083/1613/3 1084/1605/3 1065/1607/3 +f 1065/1615/6 1066/2255/6 1075/1616/6 +f 1066/1617/5 1067/1612/5 1050/1586/5 +f 1065/1590/5 1068/1589/5 1067/1612/5 +f 1062/1619/1 1063/1594/1 1048/1580/1 +f 1061/1584/1 1064/1583/1 1063/1594/1 +f 1080/1621/1 1079/1624/1 1062/1622/1 +f 1079/1624/3 1082/2256/3 1074/1625/3 +f 1078/1626/2 1077/1631/2 1054/1627/2 +f 1082/1628/5 1081/1633/5 1053/1629/5 +f 1077/1631/1 1083/2257/1 1076/1632/1 +f 1081/1633/2 1080/1621/2 1047/1623/2 +f 1093/1634/2 1087/2258/2 1088/1635/2 +f 1091/1637/1 1092/1652/1 1104/1638/1 +f 1097/1640/3 1089/2259/3 1090/1641/3 +f 1085/1643/5 1086/1655/5 1108/1644/5 +f 1108/1644/8 1086/1655/8 1095/1646/8 +f 1109/1648/8 1096/1636/8 1088/1635/8 +f 1111/1647/8 1095/1646/8 1096/1636/8 +f 1091/1650/3 1098/1653/3 1099/1651/3 +f 1098/1653/3 1097/1640/3 1100/1642/3 +f 1085/1654/2 1094/1656/2 1095/1646/2 +f 1094/1656/2 1093/1634/2 1096/1636/2 +f 1094/1656/6 1116/1658/6 1114/1657/6 +f 1116/1658/6 1115/1671/6 1113/1659/6 +f 1124/1660/5 1118/1681/5 1085/1661/5 +f 1114/1657/6 1113/1659/6 1101/1663/6 +f 1100/1642/8 1112/1666/8 1110/1665/8 +f 1112/1666/8 1111/1647/8 1109/1648/8 +f 1099/1651/8 1110/1665/8 1104/1638/8 +f 1110/1665/8 1109/1648/8 1103/1649/8 +f 1090/1641/8 1107/1667/8 1112/1666/8 +f 1107/1667/8 1108/1644/8 1111/1647/8 +f 1123/1668/3 1124/1660/3 1105/1662/3 +f 1105/1670/6 1106/2260/6 1115/1671/6 +f 1106/1672/5 1107/1667/5 1090/1641/5 +f 1105/1645/5 1108/1644/5 1107/1667/5 +f 1102/1674/1 1103/1649/1 1088/1635/1 +f 1101/1639/1 1104/1638/1 1103/1649/1 +f 1120/1676/1 1119/1679/1 1102/1677/1 +f 1119/1679/3 1122/2261/3 1114/1680/3 +f 1118/1681/2 1117/1686/2 1094/1682/2 +f 1122/1683/5 1121/1688/5 1093/1684/5 +f 1117/1686/1 1123/2262/1 1116/1687/1 +f 1121/1688/2 1120/1676/2 1087/1678/2 +f 1133/1689/2 1127/2263/2 1128/1690/2 +f 1131/1692/1 1132/1707/1 1144/1693/1 +f 1137/1695/3 1129/2264/3 1130/1696/3 +f 1125/1698/5 1126/1710/5 1148/1699/5 +f 1148/1699/8 1126/1710/8 1135/1701/8 +f 1149/1703/8 1136/1691/8 1128/1690/8 +f 1151/1702/8 1135/1701/8 1136/1691/8 +f 1131/1705/3 1138/1708/3 1139/1706/3 +f 1138/1708/3 1137/1695/3 1140/1697/3 +f 1125/1709/2 1134/1711/2 1135/1701/2 +f 1134/1711/2 1133/1689/2 1136/1691/2 +f 1134/1711/6 1156/1713/6 1154/1712/6 +f 1156/1713/6 1155/1726/6 1153/1714/6 +f 1164/1715/5 1158/1736/5 1125/1716/5 +f 1154/1712/6 1153/1714/6 1141/1718/6 +f 1140/1697/8 1152/1721/8 1150/1720/8 +f 1152/1721/8 1151/1702/8 1149/1703/8 +f 1139/1706/8 1150/1720/8 1144/1693/8 +f 1150/1720/8 1149/1703/8 1143/1704/8 +f 1130/1696/8 1147/1722/8 1152/1721/8 +f 1147/1722/8 1148/1699/8 1151/1702/8 +f 1163/1723/3 1164/1715/3 1145/1717/3 +f 1145/1725/6 1146/2265/6 1155/1726/6 +f 1146/1727/5 1147/1722/5 1130/1696/5 +f 1145/1700/5 1148/1699/5 1147/1722/5 +f 1142/1729/1 1143/1704/1 1128/1690/1 +f 1141/1694/1 1144/1693/1 1143/1704/1 +f 1160/1731/1 1159/1734/1 1142/1732/1 +f 1159/1734/3 1162/2266/3 1154/1735/3 +f 1158/1736/2 1157/1741/2 1134/1737/2 +f 1162/1738/5 1161/1743/5 1133/1739/5 +f 1157/1741/1 1163/2267/1 1156/1742/1 +f 1161/1743/2 1160/1731/2 1127/1733/2 +f 1173/1744/2 1167/2268/2 1168/1745/2 +f 1171/1747/1 1172/1762/1 1184/1748/1 +f 1177/1750/3 1169/2269/3 1170/1751/3 +f 1165/1753/5 1166/1765/5 1188/1754/5 +f 1188/1754/8 1166/1765/8 1175/1756/8 +f 1189/1758/8 1176/1746/8 1168/1745/8 +f 1191/1757/8 1175/1756/8 1176/1746/8 +f 1171/1760/3 1178/1763/3 1179/1761/3 +f 1178/1763/3 1177/1750/3 1180/1752/3 +f 1165/1764/2 1174/1766/2 1175/1756/2 +f 1174/1766/2 1173/1744/2 1176/1746/2 +f 1174/1766/6 1196/1768/6 1194/1767/6 +f 1196/1768/6 1195/1781/6 1193/1769/6 +f 1204/1770/5 1198/1791/5 1165/1771/5 +f 1194/1767/6 1193/1769/6 1181/1773/6 +f 1180/1752/8 1192/1776/8 1190/1775/8 +f 1192/1776/8 1191/1757/8 1189/1758/8 +f 1179/1761/8 1190/1775/8 1184/1748/8 +f 1190/1775/8 1189/1758/8 1183/1759/8 +f 1170/1751/8 1187/1777/8 1192/1776/8 +f 1187/1777/8 1188/1754/8 1191/1757/8 +f 1203/1778/3 1204/1770/3 1185/1772/3 +f 1185/1780/6 1186/2270/6 1195/1781/6 +f 1186/1782/5 1187/1777/5 1170/1751/5 +f 1185/1755/5 1188/1754/5 1187/1777/5 +f 1182/1784/1 1183/1759/1 1168/1745/1 +f 1181/1749/1 1184/1748/1 1183/1759/1 +f 1200/1786/1 1199/1789/1 1182/1787/1 +f 1199/1789/3 1202/2271/3 1194/1790/3 +f 1198/1791/2 1197/1796/2 1174/1792/2 +f 1202/1793/5 1201/1798/5 1173/1794/5 +f 1197/1796/1 1203/2272/1 1196/1797/1 +f 1201/1798/2 1200/1786/2 1167/1788/2 +f 1213/1799/2 1207/2273/2 1208/1800/2 +f 1211/1802/1 1212/1817/1 1224/1803/1 +f 1217/1805/3 1209/2274/3 1210/1806/3 +f 1205/1808/5 1206/1820/5 1228/1809/5 +f 1228/1809/8 1206/1820/8 1215/1811/8 +f 1229/1813/8 1216/1801/8 1208/1800/8 +f 1231/1812/8 1215/1811/8 1216/1801/8 +f 1211/1815/3 1218/1818/3 1219/1816/3 +f 1218/1818/3 1217/1805/3 1220/1807/3 +f 1205/1819/2 1214/1821/2 1215/1811/2 +f 1214/1821/2 1213/1799/2 1216/1801/2 +f 1214/1821/6 1236/1823/6 1234/1822/6 +f 1236/1823/6 1235/1836/6 1233/1824/6 +f 1244/1825/5 1238/1846/5 1205/1826/5 +f 1234/1822/6 1233/1824/6 1221/1828/6 +f 1220/1807/8 1232/1831/8 1230/1830/8 +f 1232/1831/8 1231/1812/8 1229/1813/8 +f 1219/1816/8 1230/1830/8 1224/1803/8 +f 1230/1830/8 1229/1813/8 1223/1814/8 +f 1210/1806/8 1227/1832/8 1232/1831/8 +f 1227/1832/8 1228/1809/8 1231/1812/8 +f 1243/1833/3 1244/1825/3 1225/1827/3 +f 1225/1835/6 1226/2275/6 1235/1836/6 +f 1226/1837/5 1227/1832/5 1210/1806/5 +f 1225/1810/5 1228/1809/5 1227/1832/5 +f 1222/1839/1 1223/1814/1 1208/1800/1 +f 1221/1804/1 1224/1803/1 1223/1814/1 +f 1240/1841/1 1239/1844/1 1222/1842/1 +f 1239/1844/3 1242/2276/3 1234/1845/3 +f 1238/1846/2 1237/1851/2 1214/1847/2 +f 1242/1848/5 1241/1853/5 1213/1849/5 +f 1237/1851/1 1243/2277/1 1236/1852/1 +f 1241/1853/2 1240/1841/2 1207/1843/2 +f 1245/1854/3 1246/2278/3 1248/1855/3 +f 1248/1857/1 1252/2279/1 1251/1858/1 +f 1252/1860/2 1250/1864/2 1249/1861/2 +f 1251/1858/1 1255/1865/1 1253/1863/1 +f 1248/1855/9 1246/2278/9 1250/1864/9 +f 1255/1865/11 1256/1869/11 1254/1866/11 +f 1253/1863/1 1259/1870/1 1257/1867/1 +f 1251/1868/2 1249/2280/2 1256/1869/2 +f 1259/1870/1 1263/1880/1 1261/1871/1 +f 1247/1856/9 1257/2281/9 1258/1872/9 +f 1254/1866/11 1260/1879/11 1259/1870/11 +f 1261/1873/3 1263/1880/3 1264/1874/3 +f 1262/1876/3 1268/1882/3 1267/1877/3 +f 1260/1879/11 1264/1874/11 1263/1880/11 +f 1265/1881/9 1267/1877/9 1268/1882/9 +f 1261/1871/1 1267/2282/1 1265/1884/1 +f 1258/1872/2 1257/2281/2 1265/1881/2 +f 1269/1885/3 1271/1905/3 1272/1886/3 +f 1275/1888/5 1276/2283/5 1272/1889/5 +f 1273/1891/2 1274/1895/2 1276/1892/2 +f 1277/1894/5 1279/1897/5 1275/1888/5 +f 1274/1895/10 1270/1887/10 1272/1886/10 +f 1278/1896/12 1280/1900/12 1279/1897/12 +f 1281/1898/5 1283/1903/5 1277/1894/5 +f 1275/1899/2 1279/1897/2 1280/1900/2 +f 1285/1902/5 1287/1912/5 1283/1903/5 +f 1282/1904/10 1281/1918/10 1271/1905/10 +f 1283/1903/12 1284/1913/12 1278/1896/12 +f 1288/1906/3 1287/1912/3 1285/1907/3 +f 1291/1909/3 1292/1914/3 1286/1910/3 +f 1287/1912/12 1288/1906/12 1284/1913/12 +f 1292/1914/10 1291/1909/10 1289/1915/10 +f 1289/1917/5 1291/2284/5 1285/1902/5 +f 1282/1904/2 1290/1916/2 1289/1915/2 +f 1294/1919/4 1296/1922/4 1295/1920/4 +f 1296/1922/1 1300/2285/1 1299/1923/1 +f 1297/1924/5 1298/2286/5 1294/1919/5 +f 1299/1925/13 1297/2287/13 1293/1921/13 +f 1296/1922/14 1294/1919/14 1298/1926/14 +f 1302/1928/4 1304/1931/4 1303/1929/4 +f 1304/1931/1 1308/2288/1 1307/1932/1 +f 1305/1933/5 1306/2289/5 1302/1928/5 +f 1307/1934/13 1305/2290/13 1301/1930/13 +f 1304/1931/14 1302/1928/14 1306/1935/14 +f 1310/1937/4 1312/1940/4 1311/1938/4 +f 1312/1940/1 1316/2291/1 1315/1941/1 +f 1313/1942/5 1314/2292/5 1310/1937/5 +f 1315/1943/13 1313/2293/13 1309/1939/13 +f 1312/1940/14 1310/1937/14 1314/1944/14 +f 1318/1946/4 1320/1949/4 1319/1947/4 +f 1320/1949/1 1324/2294/1 1323/1950/1 +f 1321/1951/5 1322/2295/5 1318/1946/5 +f 1323/1952/13 1321/2296/13 1317/1948/13 +f 1320/1949/14 1318/1946/14 1322/1953/14 +f 1326/1955/4 1328/1958/4 1327/1956/4 +f 1328/1958/1 1332/2297/1 1331/1959/1 +f 1329/1960/5 1330/2298/5 1326/1955/5 +f 1331/1961/13 1329/2299/13 1325/1957/13 +f 1328/1958/14 1326/1955/14 1330/1962/14 +f 1335/1964/7 1336/1968/7 1334/1965/7 +f 1335/1964/1 1339/2300/1 1340/1967/1 +f 1337/1969/5 1333/1966/5 1334/1965/5 +f 1333/1966/15 1337/2301/15 1339/1971/15 +f 1338/1972/16 1334/1965/16 1336/1968/16 +f 1343/1974/7 1344/1978/7 1342/1975/7 +f 1343/1974/1 1347/2302/1 1348/1977/1 +f 1345/1979/5 1341/1976/5 1342/1975/5 +f 1341/1976/15 1345/2303/15 1347/1981/15 +f 1346/1982/16 1342/1975/16 1344/1978/16 +f 1351/1984/7 1352/1988/7 1350/1985/7 +f 1351/1984/1 1355/2304/1 1356/1987/1 +f 1353/1989/5 1349/1986/5 1350/1985/5 +f 1349/1986/15 1353/2305/15 1355/1991/15 +f 1354/1992/16 1350/1985/16 1352/1988/16 +f 1359/1994/7 1360/1998/7 1358/1995/7 +f 1359/1994/1 1363/2306/1 1364/1997/1 +f 1361/1999/5 1357/1996/5 1358/1995/5 +f 1357/1996/15 1361/2307/15 1363/2001/15 +f 1362/2002/16 1358/1995/16 1360/1998/16 +f 1367/2004/7 1368/2008/7 1366/2005/7 +f 1367/2004/1 1371/2308/1 1372/2007/1 +f 1369/2009/5 1365/2006/5 1366/2005/5 +f 1365/2006/15 1369/2309/15 1371/2011/15 +f 1370/2012/16 1366/2005/16 1368/2008/16 +f 1376/2014/1 1380/2024/1 1379/2015/1 +f 1378/2017/5 1374/2310/5 1373/2018/5 +f 1382/2020/5 1385/2033/5 1386/2021/5 +f 1376/2027/1 1383/2311/1 1384/2028/1 +f 1386/2036/5 1389/2040/5 1392/2037/5 +f 1383/2041/1 1394/2312/1 1391/2042/1 +f 1398/2043/1 1402/2053/1 1401/2044/1 +f 1400/2046/5 1396/2313/5 1395/2047/5 +f 1404/2049/5 1407/2062/5 1408/2050/5 +f 1398/2056/1 1405/2314/1 1406/2057/1 +f 1408/2065/5 1411/2069/5 1414/2066/5 +f 1405/2070/1 1416/2315/1 1413/2071/1 +f 1420/2072/1 1424/2082/1 1423/2073/1 +f 1422/2075/5 1418/2316/5 1417/2076/5 +f 1426/2078/5 1429/2091/5 1430/2079/5 +f 1420/2085/1 1427/2317/1 1428/2086/1 +f 1430/2094/5 1433/2098/5 1436/2095/5 +f 1427/2099/1 1438/2318/1 1435/2100/1 +f 1442/2101/1 1446/2111/1 1445/2102/1 +f 1444/2104/5 1440/2319/5 1439/2105/5 +f 1448/2107/5 1451/2120/5 1452/2108/5 +f 1442/2114/1 1449/2320/1 1450/2115/1 +f 1452/2123/5 1455/2127/5 1458/2124/5 +f 1449/2128/1 1460/2321/1 1457/2129/1 +f 1464/2130/1 1468/2140/1 1467/2131/1 +f 1466/2133/5 1462/2322/5 1461/2134/5 +f 1470/2136/5 1473/2149/5 1474/2137/5 +f 1464/2143/1 1471/2323/1 1472/2144/1 +f 1474/2152/5 1477/2156/5 1480/2153/5 +f 1471/2157/1 1482/2324/1 1479/2158/1 s 1 -f 5/5/11 3/697/12 6/6/13 -f 9/604/14 4/4/15 2/2/16 -f 9/10/14 8/9/17 7/8/18 -f 10/18/19 12/606/20 8/16/17 -f 5/5/11 14/698/21 1/699/22 -f 16/26/23 377/607/24 13/24/25 -f 15/21/26 13/15/25 12/14/20 -f 11/17/27 18/700/28 14/698/21 -f 24/33/11 22/701/12 25/34/13 -f 28/608/14 23/32/15 21/30/16 -f 28/38/14 27/37/17 26/36/18 -f 29/46/19 31/610/29 27/44/17 -f 24/33/11 33/702/21 20/703/22 -f 35/54/23 378/611/24 32/52/25 -f 34/49/30 32/43/25 31/42/29 -f 30/45/27 37/704/28 33/702/21 -f 43/61/11 41/705/12 44/62/13 -f 47/612/14 42/60/15 40/58/16 -f 47/66/14 46/65/17 45/64/18 -f 48/74/19 50/614/29 46/72/17 -f 43/61/11 52/706/31 39/707/22 -f 54/82/23 379/615/24 51/80/25 -f 53/77/32 51/71/25 50/70/29 -f 49/73/33 56/708/28 52/706/31 -f 62/89/11 60/709/12 63/90/13 -f 66/616/14 61/88/15 59/86/16 -f 66/94/14 65/93/17 64/92/34 -f 67/102/19 69/618/20 65/100/17 -f 62/89/11 71/710/21 58/711/22 -f 73/110/23 380/619/24 70/108/25 -f 72/105/26 70/99/25 69/98/20 -f 68/101/27 75/712/28 71/710/21 -f 5/5/11 1/699/22 3/697/12 -f 9/604/14 7/605/18 4/4/15 -f 9/10/14 10/12/19 8/9/17 -f 10/18/19 15/20/26 12/606/20 -f 5/5/11 11/17/27 14/698/21 -f 16/26/23 19/28/35 377/607/24 -f 15/21/26 16/23/23 13/15/25 -f 11/17/27 17/25/36 18/700/28 -f 24/33/11 20/703/22 22/701/12 -f 28/608/14 26/609/18 23/32/15 -f 28/38/14 29/40/19 27/37/17 -f 29/46/19 34/48/30 31/610/29 -f 24/33/11 30/45/27 33/702/21 -f 35/54/23 38/56/35 378/611/24 -f 34/49/30 35/51/23 32/43/25 -f 30/45/27 36/53/36 37/704/28 -f 43/61/11 39/707/22 41/705/12 -f 47/612/14 45/613/18 42/60/15 -f 47/66/14 48/68/19 46/65/17 -f 48/74/19 53/76/32 50/614/29 -f 43/61/11 49/73/33 52/706/31 -f 54/82/23 57/84/35 379/615/24 -f 53/77/32 54/79/23 51/71/25 -f 49/73/33 55/81/36 56/708/28 -f 62/89/11 58/711/22 60/709/12 -f 66/616/14 64/617/34 61/88/15 -f 66/94/14 67/96/19 65/93/17 -f 67/102/19 72/104/26 69/618/20 -f 62/89/11 68/101/27 71/710/21 -f 73/110/23 76/112/35 380/619/24 -f 72/105/26 73/107/23 70/99/25 -f 68/101/27 74/109/36 75/712/28 +f 1374/2310/17 1375/2325/18 1373/2018/19 +f 1380/2024/20 1377/2019/21 1379/2015/22 +f 1380/2024/20 1382/2020/23 1378/2017/24 +f 1384/2028/25 1388/2034/26 1385/2033/27 +f 1381/2026/28 1385/2033/27 1382/2020/23 +f 1374/2022/17 1383/2326/29 1376/2327/30 +f 1387/2029/31 1389/2040/32 1388/2034/26 +f 1386/2036/33 1394/2328/34 1383/2329/29 +f 1390/2031/35 1392/2037/36 1389/2040/32 +f 1396/2313/17 1397/2330/18 1395/2047/19 +f 1402/2053/20 1399/2048/21 1401/2044/22 +f 1402/2053/20 1404/2049/23 1400/2046/24 +f 1406/2057/25 1410/2063/26 1407/2062/27 +f 1403/2055/28 1407/2062/27 1404/2049/23 +f 1396/2051/17 1405/2331/29 1398/2332/30 +f 1409/2058/31 1411/2069/32 1410/2063/26 +f 1408/2065/33 1416/2333/34 1405/2334/29 +f 1412/2060/35 1414/2066/36 1411/2069/32 +f 1418/2316/17 1419/2335/18 1417/2076/19 +f 1424/2082/20 1421/2077/21 1423/2073/22 +f 1424/2082/20 1426/2078/23 1422/2075/24 +f 1428/2086/25 1432/2092/26 1429/2091/27 +f 1425/2084/28 1429/2091/27 1426/2078/23 +f 1418/2080/17 1427/2336/29 1420/2337/30 +f 1431/2087/31 1433/2098/32 1432/2092/26 +f 1430/2094/33 1438/2338/34 1427/2339/29 +f 1434/2089/35 1436/2095/36 1433/2098/32 +f 1440/2319/17 1441/2340/18 1439/2105/19 +f 1446/2111/20 1443/2106/21 1445/2102/22 +f 1446/2111/20 1448/2107/23 1444/2104/24 +f 1450/2115/25 1454/2121/26 1451/2120/27 +f 1447/2113/28 1451/2120/27 1448/2107/23 +f 1440/2109/17 1449/2341/29 1442/2342/30 +f 1453/2116/31 1455/2127/32 1454/2121/26 +f 1452/2123/33 1460/2343/34 1449/2344/29 +f 1456/2118/35 1458/2124/36 1455/2127/32 +f 1462/2322/17 1463/2345/18 1461/2134/19 +f 1468/2140/20 1465/2135/21 1467/2131/22 +f 1468/2140/20 1470/2136/23 1466/2133/24 +f 1472/2144/25 1476/2150/26 1473/2149/27 +f 1469/2142/28 1473/2149/27 1470/2136/23 +f 1462/2138/17 1471/2346/29 1464/2347/30 +f 1475/2145/31 1477/2156/32 1476/2150/26 +f 1474/2152/33 1482/2348/34 1471/2349/29 +f 1478/2147/35 1480/2153/36 1477/2156/32 +f 1374/2310/17 1376/2350/30 1375/2325/18 +f 1380/2024/20 1378/2017/24 1377/2019/21 +f 1380/2024/20 1381/2026/28 1382/2020/23 +f 1384/2028/25 1387/2029/31 1388/2034/26 +f 1381/2026/28 1384/2028/25 1385/2033/27 +f 1374/2022/17 1386/2021/33 1383/2326/29 +f 1387/2029/31 1390/2031/35 1389/2040/32 +f 1386/2036/33 1393/2038/37 1394/2328/34 +f 1390/2031/35 1391/2042/38 1392/2037/36 +f 1396/2313/17 1398/2351/30 1397/2330/18 +f 1402/2053/20 1400/2046/24 1399/2048/21 +f 1402/2053/20 1403/2055/28 1404/2049/23 +f 1406/2057/25 1409/2058/31 1410/2063/26 +f 1403/2055/28 1406/2057/25 1407/2062/27 +f 1396/2051/17 1408/2050/33 1405/2331/29 +f 1409/2058/31 1412/2060/35 1411/2069/32 +f 1408/2065/33 1415/2067/37 1416/2333/34 +f 1412/2060/35 1413/2071/38 1414/2066/36 +f 1418/2316/17 1420/2352/30 1419/2335/18 +f 1424/2082/20 1422/2075/24 1421/2077/21 +f 1424/2082/20 1425/2084/28 1426/2078/23 +f 1428/2086/25 1431/2087/31 1432/2092/26 +f 1425/2084/28 1428/2086/25 1429/2091/27 +f 1418/2080/17 1430/2079/33 1427/2336/29 +f 1431/2087/31 1434/2089/35 1433/2098/32 +f 1430/2094/33 1437/2096/37 1438/2338/34 +f 1434/2089/35 1435/2100/38 1436/2095/36 +f 1440/2319/17 1442/2353/30 1441/2340/18 +f 1446/2111/20 1444/2104/24 1443/2106/21 +f 1446/2111/20 1447/2113/28 1448/2107/23 +f 1450/2115/25 1453/2116/31 1454/2121/26 +f 1447/2113/28 1450/2115/25 1451/2120/27 +f 1440/2109/17 1452/2108/33 1449/2341/29 +f 1453/2116/31 1456/2118/35 1455/2127/32 +f 1452/2123/33 1459/2125/37 1460/2343/34 +f 1456/2118/35 1457/2129/38 1458/2124/36 +f 1462/2322/17 1464/2354/30 1463/2345/18 +f 1468/2140/20 1466/2133/24 1465/2135/21 +f 1468/2140/20 1469/2142/28 1470/2136/23 +f 1472/2144/25 1475/2145/31 1476/2150/26 +f 1469/2142/28 1472/2144/25 1473/2149/27 +f 1462/2138/17 1474/2137/33 1471/2346/29 +f 1475/2145/31 1478/2147/35 1477/2156/32 +f 1474/2152/33 1481/2154/37 1482/2348/34 +f 1478/2147/35 1479/2158/38 1480/2153/36 diff --git a/src/main/resources/assets/hbm/models/machines/exposure_chamber.obj b/src/main/resources/assets/hbm/models/machines/exposure_chamber.obj new file mode 100644 index 000000000..ac6d44aa7 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/exposure_chamber.obj @@ -0,0 +1,4253 @@ +# Blender v2.79 (sub 0) OBJ File: 'exposure_chamber.blend' +# www.blender.org +o Magnets +v 1.961571 0.500000 0.292636 +v 1.961571 0.500000 -0.292635 +v 1.225981 0.500000 0.243863 +v 1.225982 0.500000 -0.243863 +v 1.961571 1.250000 0.292636 +v 1.225981 1.250000 0.243863 +v 1.961571 1.250000 -0.292635 +v 1.225982 1.250000 -0.243863 +v 1.225982 4.500000 -0.243863 +v 1.961571 4.500000 -0.292635 +v 1.225981 4.500000 0.243863 +v 1.961571 4.500000 0.292636 +v 1.225982 3.750000 -0.243863 +v 1.225981 3.750000 0.243863 +v 1.961571 3.750000 -0.292635 +v 1.961571 3.750000 0.292636 +v -1.961571 0.500000 -0.292636 +v -1.961571 0.500000 0.292636 +v -1.225981 0.500000 -0.243863 +v -1.225983 0.500000 0.243863 +v -1.961571 1.250000 -0.292636 +v -1.225981 1.250000 -0.243863 +v -1.961571 1.250000 0.292636 +v -1.225983 1.250000 0.243863 +v -1.225983 4.500000 0.243863 +v -1.961571 4.500000 0.292636 +v -1.225981 4.500000 -0.243863 +v -1.961571 4.500000 -0.292636 +v -1.225983 3.750000 0.243863 +v -1.225981 3.750000 -0.243863 +v -1.961571 3.750000 0.292636 +v -1.961571 3.750000 -0.292636 +v 0.292635 0.500000 -1.961571 +v -0.292636 0.500000 -1.961571 +v 0.243863 0.500000 -1.225981 +v -0.243863 0.500000 -1.225982 +v 0.292635 1.250000 -1.961571 +v 0.243863 1.250000 -1.225981 +v -0.292636 1.250000 -1.961571 +v -0.243863 1.250000 -1.225982 +v -0.243863 4.500000 -1.225982 +v -0.292636 4.500000 -1.961571 +v 0.243863 4.500000 -1.225981 +v 0.292635 4.500000 -1.961571 +v -0.243863 3.750000 -1.225982 +v 0.243863 3.750000 -1.225981 +v -0.292636 3.750000 -1.961571 +v 0.292635 3.750000 -1.961571 +v -0.292636 0.500000 1.961571 +v 0.292635 0.500000 1.961571 +v -0.243863 0.500000 1.225981 +v 0.243863 0.500000 1.225982 +v -0.292636 1.250000 1.961571 +v -0.243863 1.250000 1.225981 +v 0.292635 1.250000 1.961571 +v 0.243863 1.250000 1.225982 +v 0.243863 4.500000 1.225982 +v 0.292635 4.500000 1.961571 +v -0.243863 4.500000 1.225981 +v -0.292636 4.500000 1.961571 +v 0.243863 3.750000 1.225982 +v -0.243863 3.750000 1.225981 +v 0.292635 3.750000 1.961571 +v -0.292636 3.750000 1.961571 +v 1.593965 0.500000 -1.180115 +v 1.180116 0.500000 -1.593965 +v 1.039336 0.500000 -0.694462 +v 0.694463 0.500000 -1.039337 +v 1.593965 1.250000 -1.180115 +v 1.039336 1.250000 -0.694462 +v 1.180116 1.250000 -1.593965 +v 0.694463 1.250000 -1.039337 +v 0.694463 4.500000 -1.039337 +v 1.180116 4.500000 -1.593965 +v 1.039336 4.500000 -0.694462 +v 1.593965 4.500000 -1.180115 +v 0.694463 3.750000 -1.039337 +v 1.039336 3.750000 -0.694462 +v 1.180116 3.750000 -1.593965 +v 1.593965 3.750000 -1.180115 +v -1.593966 0.500000 1.180115 +v -1.180116 0.500000 1.593965 +v -1.039337 0.500000 0.694462 +v -0.694464 0.500000 1.039337 +v -1.593966 1.250000 1.180115 +v -1.039337 1.250000 0.694462 +v -1.180116 1.250000 1.593965 +v -0.694464 1.250000 1.039337 +v -0.694464 4.500000 1.039337 +v -1.180116 4.500000 1.593965 +v -1.039337 4.500000 0.694462 +v -1.593966 4.500000 1.180115 +v -0.694464 3.750000 1.039337 +v -1.039337 3.750000 0.694462 +v -1.180116 3.750000 1.593965 +v -1.593966 3.750000 1.180115 +v -1.180116 0.500000 -1.593965 +v -1.593966 0.500000 -1.180115 +v -0.694463 0.500000 -1.039337 +v -1.039337 0.500000 -0.694463 +v -1.180116 1.250000 -1.593965 +v -0.694463 1.250000 -1.039337 +v -1.593966 1.250000 -1.180115 +v -1.039337 1.250000 -0.694463 +v -1.039337 4.500000 -0.694463 +v -1.593966 4.500000 -1.180115 +v -0.694463 4.500000 -1.039337 +v -1.180116 4.500000 -1.593965 +v -1.039337 3.750000 -0.694463 +v -0.694463 3.750000 -1.039337 +v -1.593966 3.750000 -1.180115 +v -1.180116 3.750000 -1.593965 +v 1.180115 0.500000 1.593965 +v 1.593965 0.500000 1.180115 +v 0.694462 0.500000 1.039337 +v 1.039337 0.500000 0.694463 +v 1.180115 1.250000 1.593965 +v 0.694462 1.250000 1.039337 +v 1.593965 1.250000 1.180115 +v 1.039337 1.250000 0.694463 +v 1.039337 4.500000 0.694463 +v 1.593965 4.500000 1.180115 +v 0.694462 4.500000 1.039337 +v 1.180115 4.500000 1.593965 +v 1.039337 3.750000 0.694463 +v 0.694462 3.750000 1.039337 +v 1.593965 3.750000 1.180115 +v 1.180115 3.750000 1.593965 +v 1.021021 0.500000 -1.700268 +v 0.480301 0.500000 -1.924242 +v 0.694463 0.500000 -1.039336 +v 0.243863 0.500000 -1.225982 +v 1.021021 1.250000 -1.700268 +v 0.694463 1.250000 -1.039336 +v 0.480301 1.250000 -1.924242 +v 0.243863 1.250000 -1.225982 +v 0.243863 4.500000 -1.225982 +v 0.480301 4.500000 -1.924242 +v 0.694463 4.500000 -1.039336 +v 1.021021 4.500000 -1.700268 +v 0.243863 3.750000 -1.225982 +v 0.694463 3.750000 -1.039336 +v 0.480301 3.750000 -1.924242 +v 1.021021 3.750000 -1.700268 +v -1.021021 0.500000 1.700269 +v -0.480301 0.500000 1.924242 +v -0.694463 0.500000 1.039336 +v -0.243863 0.500000 1.225982 +v -1.021021 1.250000 1.700269 +v -0.694463 1.250000 1.039336 +v -0.480301 1.250000 1.924242 +v -0.243863 1.250000 1.225982 +v -0.243863 4.500000 1.225982 +v -0.480301 4.500000 1.924242 +v -0.694463 4.500000 1.039336 +v -1.021021 4.500000 1.700269 +v -0.243863 3.750000 1.225982 +v -0.694463 3.750000 1.039336 +v -0.480301 3.750000 1.924242 +v -1.021021 3.750000 1.700269 +v -1.700269 0.500000 -1.021021 +v -1.924242 0.500000 -0.480300 +v -1.039337 0.500000 -0.694463 +v -1.225983 0.500000 -0.243863 +v -1.700269 1.250000 -1.021021 +v -1.039337 1.250000 -0.694463 +v -1.924242 1.250000 -0.480300 +v -1.225983 1.250000 -0.243863 +v -1.225983 4.500000 -0.243863 +v -1.924242 4.500000 -0.480300 +v -1.039337 4.500000 -0.694463 +v -1.700269 4.500000 -1.021021 +v -1.225983 3.750000 -0.243863 +v -1.039337 3.750000 -0.694463 +v -1.924242 3.750000 -0.480300 +v -1.700269 3.750000 -1.021021 +v 1.700268 0.500000 1.021021 +v 1.924242 0.500000 0.480300 +v 1.039336 0.500000 0.694463 +v 1.225982 0.500000 0.243863 +v 1.700268 1.250000 1.021021 +v 1.039336 1.250000 0.694463 +v 1.924242 1.250000 0.480300 +v 1.225982 1.250000 0.243863 +v 1.225982 4.500000 0.243863 +v 1.924242 4.500000 0.480300 +v 1.039336 4.500000 0.694463 +v 1.700268 4.500000 1.021021 +v 1.225982 3.750000 0.243863 +v 1.039336 3.750000 0.694463 +v 1.924242 3.750000 0.480300 +v 1.700268 3.750000 1.021021 +v -0.480301 0.500000 -1.924242 +v -1.021021 0.500000 -1.700269 +v -0.243863 0.500000 -1.225981 +v -0.694464 0.500000 -1.039337 +v -0.480301 1.250000 -1.924242 +v -0.243863 1.250000 -1.225981 +v -1.021021 1.250000 -1.700269 +v -0.694464 1.250000 -1.039337 +v -0.694464 4.500000 -1.039337 +v -1.021021 4.500000 -1.700269 +v -0.243863 4.500000 -1.225981 +v -0.480301 4.500000 -1.924242 +v -0.694464 3.750000 -1.039337 +v -0.243863 3.750000 -1.225981 +v -1.021021 3.750000 -1.700269 +v -0.480301 3.750000 -1.924242 +v 0.480300 0.500000 1.924242 +v 1.021021 0.500000 1.700268 +v 0.243862 0.500000 1.225981 +v 0.694463 0.500000 1.039337 +v 0.480300 1.250000 1.924242 +v 0.243862 1.250000 1.225981 +v 1.021021 1.250000 1.700268 +v 0.694463 1.250000 1.039337 +v 0.694463 4.500000 1.039337 +v 1.021021 4.500000 1.700268 +v 0.243862 4.500000 1.225981 +v 0.480300 4.500000 1.924242 +v 0.694463 3.750000 1.039337 +v 0.243862 3.750000 1.225981 +v 1.021021 3.750000 1.700268 +v 0.480300 3.750000 1.924242 +v -1.924242 0.500000 0.480301 +v -1.700269 0.500000 1.021021 +v -1.225981 0.500000 0.243863 +v -1.039337 0.500000 0.694463 +v -1.924242 1.250000 0.480301 +v -1.225981 1.250000 0.243863 +v -1.700269 1.250000 1.021021 +v -1.039337 1.250000 0.694463 +v -1.039337 4.500000 0.694463 +v -1.700269 4.500000 1.021021 +v -1.225981 4.500000 0.243863 +v -1.924242 4.500000 0.480301 +v -1.039337 3.750000 0.694463 +v -1.225981 3.750000 0.243863 +v -1.700269 3.750000 1.021021 +v -1.924242 3.750000 0.480301 +v 1.924242 0.500000 -0.480301 +v 1.700268 0.500000 -1.021021 +v 1.225981 0.500000 -0.243863 +v 1.039337 0.500000 -0.694463 +v 1.924242 1.250000 -0.480301 +v 1.225981 1.250000 -0.243863 +v 1.700268 1.250000 -1.021021 +v 1.039337 1.250000 -0.694463 +v 1.039337 4.500000 -0.694463 +v 1.700268 4.500000 -1.021021 +v 1.225981 4.500000 -0.243863 +v 1.924242 4.500000 -0.480301 +v 1.039337 3.750000 -0.694463 +v 1.225981 3.750000 -0.243863 +v 1.700268 3.750000 -1.021021 +v 1.924242 3.750000 -0.480301 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vn 0.0000 1.0000 0.0000 +vn -0.0662 0.0000 0.9978 +vn -0.0662 0.0000 -0.9978 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0662 0.0000 -0.9978 +vn 0.0662 0.0000 0.9978 +vn -1.0000 0.0000 0.0000 +vn 0.9978 0.0000 0.0662 +vn -0.9978 0.0000 0.0662 +vn 0.0000 0.0000 -1.0000 +vn -0.9978 0.0000 -0.0662 +vn 0.9978 0.0000 -0.0662 +vn 0.0000 0.0000 1.0000 +vn 0.6588 0.0000 0.7523 +vn -0.7523 0.0000 -0.6588 +vn 0.7071 0.0000 -0.7071 +vn -0.6588 0.0000 -0.7523 +vn 0.7523 0.0000 0.6588 +vn -0.7071 0.0000 0.7071 +vn 0.7523 0.0000 -0.6588 +vn -0.6588 0.0000 0.7523 +vn -0.7071 0.0000 -0.7071 +vn -0.7523 0.0000 0.6588 +vn 0.6588 0.0000 -0.7523 +vn 0.7071 0.0000 0.7071 +vn 0.8965 0.0000 0.4430 +vn -0.9472 0.0000 -0.3207 +vn 0.3827 0.0000 -0.9239 +vn -0.8965 0.0000 -0.4430 +vn 0.9472 0.0000 0.3207 +vn -0.3827 0.0000 0.9239 +vn 0.4430 0.0000 -0.8965 +vn -0.3207 0.0000 0.9472 +vn -0.9239 0.0000 -0.3827 +vn -0.4430 0.0000 0.8965 +vn 0.3207 0.0000 -0.9472 +vn 0.9239 0.0000 0.3827 +vn 0.9472 0.0000 -0.3207 +vn -0.8965 0.0000 0.4430 +vn -0.3827 0.0000 -0.9239 +vn -0.9472 0.0000 0.3207 +vn 0.8965 0.0000 -0.4430 +vn 0.3827 0.0000 0.9239 +vn -0.3207 0.0000 -0.9472 +vn 0.4430 0.0000 0.8965 +vn -0.9239 0.0000 0.3827 +vn 0.3207 0.0000 0.9472 +vn -0.4430 0.0000 -0.8965 +vn 0.9239 0.0000 -0.3827 +s off +f 5/1/1 8/2/1 6/3/1 +f 1/4/2 6/5/2 3/6/2 +f 4/7/3 7/8/3 2/9/3 +f 2/9/4 5/1/4 1/4/4 +f 15/10/4 12/11/4 16/12/4 +f 13/13/3 10/14/3 15/10/3 +f 16/12/2 11/15/2 14/16/2 +f 16/12/5 13/17/5 15/10/5 +f 21/18/1 24/19/1 22/20/1 +f 17/21/6 22/22/6 19/23/6 +f 20/24/7 23/25/7 18/26/7 +f 18/26/8 21/18/8 17/21/8 +f 31/27/8 28/28/8 32/29/8 +f 29/30/7 26/31/7 31/27/7 +f 32/29/6 27/32/6 30/33/6 +f 32/29/5 29/34/5 31/27/5 +f 37/35/1 40/36/1 38/37/1 +f 33/38/9 38/39/9 35/40/9 +f 36/41/10 39/42/10 34/43/10 +f 34/43/11 37/35/11 33/38/11 +f 47/44/11 44/45/11 48/46/11 +f 45/47/10 42/48/10 47/44/10 +f 48/46/9 43/49/9 46/50/9 +f 48/46/5 45/51/5 47/44/5 +f 53/52/1 56/53/1 54/54/1 +f 49/55/12 54/56/12 51/57/12 +f 52/58/13 55/59/13 50/60/13 +f 50/60/14 53/52/14 49/55/14 +f 63/61/14 60/62/14 64/63/14 +f 61/64/13 58/65/13 63/61/13 +f 64/63/12 59/66/12 62/67/12 +f 64/63/5 61/68/5 63/61/5 +f 69/69/1 72/70/1 70/71/1 +f 65/72/15 70/73/15 67/74/15 +f 68/75/16 71/76/16 66/77/16 +f 66/77/17 69/69/17 65/72/17 +f 79/78/17 76/79/17 80/80/17 +f 77/81/16 74/82/16 79/78/16 +f 80/80/15 75/83/15 78/84/15 +f 80/80/5 77/85/5 79/78/5 +f 85/86/1 88/87/1 86/88/1 +f 81/89/18 86/90/18 83/91/18 +f 84/92/19 87/93/19 82/94/19 +f 82/94/20 85/86/20 81/89/20 +f 95/95/20 92/96/20 96/97/20 +f 93/98/19 90/99/19 95/95/19 +f 96/97/18 91/100/18 94/101/18 +f 96/97/5 93/102/5 95/95/5 +f 101/103/1 104/104/1 102/105/1 +f 97/106/21 102/107/21 99/108/21 +f 100/109/22 103/110/22 98/111/22 +f 98/111/23 101/103/23 97/106/23 +f 111/112/23 108/113/23 112/114/23 +f 109/115/22 106/116/22 111/112/22 +f 112/114/21 107/117/21 110/118/21 +f 112/114/5 109/119/5 111/112/5 +f 117/120/1 120/121/1 118/122/1 +f 113/123/24 118/124/24 115/125/24 +f 116/126/25 119/127/25 114/128/25 +f 114/128/26 117/120/26 113/123/26 +f 127/129/26 124/130/26 128/131/26 +f 125/132/25 122/133/25 127/129/25 +f 128/131/24 123/134/24 126/135/24 +f 128/131/5 125/136/5 127/129/5 +f 133/137/1 136/138/1 134/139/1 +f 129/140/27 134/141/27 131/142/27 +f 132/143/28 135/144/28 130/145/28 +f 130/145/29 133/137/29 129/140/29 +f 143/146/29 140/147/29 144/148/29 +f 141/149/28 138/150/28 143/146/28 +f 144/148/27 139/151/27 142/152/27 +f 144/148/5 141/153/5 143/146/5 +f 149/154/1 152/155/1 150/156/1 +f 145/157/30 150/158/30 147/159/30 +f 148/160/31 151/161/31 146/162/31 +f 146/162/32 149/154/32 145/157/32 +f 159/163/32 156/164/32 160/165/32 +f 157/166/31 154/167/31 159/163/31 +f 160/165/30 155/168/30 158/169/30 +f 160/165/5 157/170/5 159/163/5 +f 165/171/1 168/172/1 166/173/1 +f 161/174/33 166/175/33 163/176/33 +f 164/177/34 167/178/34 162/179/34 +f 162/179/35 165/171/35 161/174/35 +f 175/180/35 172/181/35 176/182/35 +f 173/183/34 170/184/34 175/180/34 +f 176/182/33 171/185/33 174/186/33 +f 176/182/5 173/187/5 175/180/5 +f 181/188/1 184/189/1 182/190/1 +f 177/191/36 182/192/36 179/193/36 +f 180/194/37 183/195/37 178/196/37 +f 178/196/38 181/188/38 177/191/38 +f 191/197/38 188/198/38 192/199/38 +f 189/200/37 186/201/37 191/197/37 +f 192/199/36 187/202/36 190/203/36 +f 192/199/5 189/204/5 191/197/5 +f 197/205/1 200/206/1 198/207/1 +f 193/208/39 198/209/39 195/210/39 +f 196/211/40 199/212/40 194/213/40 +f 194/213/41 197/205/41 193/208/41 +f 207/214/41 204/215/41 208/216/41 +f 205/217/40 202/218/40 207/214/40 +f 208/216/39 203/219/39 206/220/39 +f 208/216/5 205/221/5 207/214/5 +f 213/222/1 216/223/1 214/224/1 +f 209/225/42 214/226/42 211/227/42 +f 212/228/43 215/229/43 210/230/43 +f 210/230/44 213/222/44 209/225/44 +f 223/231/44 220/232/44 224/233/44 +f 221/234/43 218/235/43 223/231/43 +f 224/233/42 219/236/42 222/237/42 +f 224/233/5 221/238/5 223/231/5 +f 229/239/1 232/240/1 230/241/1 +f 225/242/45 230/243/45 227/244/45 +f 228/245/46 231/246/46 226/247/46 +f 226/247/47 229/239/47 225/242/47 +f 239/248/47 236/249/47 240/250/47 +f 237/251/46 234/252/46 239/248/46 +f 240/250/45 235/253/45 238/254/45 +f 240/250/5 237/255/5 239/248/5 +f 245/256/1 248/257/1 246/258/1 +f 241/259/48 246/260/48 243/261/48 +f 244/262/49 247/263/49 242/264/49 +f 242/264/50 245/256/50 241/259/50 +f 255/265/50 252/266/50 256/267/50 +f 253/268/49 250/269/49 255/265/49 +f 256/267/48 251/270/48 254/271/48 +f 256/267/5 253/272/5 255/265/5 +f 5/1/1 7/8/1 8/2/1 +f 1/4/2 5/1/2 6/5/2 +f 4/7/3 8/273/3 7/8/3 +f 2/9/4 7/8/4 5/1/4 +f 15/10/4 10/14/4 12/11/4 +f 13/13/3 9/274/3 10/14/3 +f 16/12/2 12/11/2 11/15/2 +f 16/12/5 14/275/5 13/17/5 +f 21/18/1 23/25/1 24/19/1 +f 17/21/6 21/18/6 22/22/6 +f 20/24/7 24/276/7 23/25/7 +f 18/26/8 23/25/8 21/18/8 +f 31/27/8 26/31/8 28/28/8 +f 29/30/7 25/277/7 26/31/7 +f 32/29/6 28/28/6 27/32/6 +f 32/29/5 30/278/5 29/34/5 +f 37/35/1 39/42/1 40/36/1 +f 33/38/9 37/35/9 38/39/9 +f 36/41/10 40/279/10 39/42/10 +f 34/43/11 39/42/11 37/35/11 +f 47/44/11 42/48/11 44/45/11 +f 45/47/10 41/280/10 42/48/10 +f 48/46/9 44/45/9 43/49/9 +f 48/46/5 46/281/5 45/51/5 +f 53/52/1 55/59/1 56/53/1 +f 49/55/12 53/52/12 54/56/12 +f 52/58/13 56/282/13 55/59/13 +f 50/60/14 55/59/14 53/52/14 +f 63/61/14 58/65/14 60/62/14 +f 61/64/13 57/283/13 58/65/13 +f 64/63/12 60/62/12 59/66/12 +f 64/63/5 62/284/5 61/68/5 +f 69/69/1 71/76/1 72/70/1 +f 65/72/15 69/69/15 70/73/15 +f 68/75/16 72/285/16 71/76/16 +f 66/77/17 71/76/17 69/69/17 +f 79/78/17 74/82/17 76/79/17 +f 77/81/16 73/286/16 74/82/16 +f 80/80/15 76/79/15 75/83/15 +f 80/80/5 78/287/5 77/85/5 +f 85/86/1 87/93/1 88/87/1 +f 81/89/18 85/86/18 86/90/18 +f 84/92/19 88/288/19 87/93/19 +f 82/94/20 87/93/20 85/86/20 +f 95/95/20 90/99/20 92/96/20 +f 93/98/19 89/289/19 90/99/19 +f 96/97/18 92/96/18 91/100/18 +f 96/97/5 94/290/5 93/102/5 +f 101/103/1 103/110/1 104/104/1 +f 97/106/21 101/103/21 102/107/21 +f 100/109/22 104/291/22 103/110/22 +f 98/111/23 103/110/23 101/103/23 +f 111/112/23 106/116/23 108/113/23 +f 109/115/22 105/292/22 106/116/22 +f 112/114/21 108/113/21 107/117/21 +f 112/114/5 110/293/5 109/119/5 +f 117/120/1 119/127/1 120/121/1 +f 113/123/24 117/120/24 118/124/24 +f 116/126/25 120/294/25 119/127/25 +f 114/128/26 119/127/26 117/120/26 +f 127/129/26 122/133/26 124/130/26 +f 125/132/25 121/295/25 122/133/25 +f 128/131/24 124/130/24 123/134/24 +f 128/131/5 126/296/5 125/136/5 +f 133/137/1 135/144/1 136/138/1 +f 129/140/27 133/137/27 134/141/27 +f 132/143/28 136/297/28 135/144/28 +f 130/145/29 135/144/29 133/137/29 +f 143/146/29 138/150/29 140/147/29 +f 141/149/28 137/298/28 138/150/28 +f 144/148/27 140/147/27 139/151/27 +f 144/148/5 142/299/5 141/153/5 +f 149/154/1 151/161/1 152/155/1 +f 145/157/30 149/154/30 150/158/30 +f 148/160/31 152/300/31 151/161/31 +f 146/162/32 151/161/32 149/154/32 +f 159/163/32 154/167/32 156/164/32 +f 157/166/31 153/301/31 154/167/31 +f 160/165/30 156/164/30 155/168/30 +f 160/165/5 158/302/5 157/170/5 +f 165/171/1 167/178/1 168/172/1 +f 161/174/33 165/171/33 166/175/33 +f 164/177/34 168/303/34 167/178/34 +f 162/179/35 167/178/35 165/171/35 +f 175/180/35 170/184/35 172/181/35 +f 173/183/34 169/304/34 170/184/34 +f 176/182/33 172/181/33 171/185/33 +f 176/182/5 174/305/5 173/187/5 +f 181/188/1 183/195/1 184/189/1 +f 177/191/36 181/188/36 182/192/36 +f 180/194/37 184/306/37 183/195/37 +f 178/196/38 183/195/38 181/188/38 +f 191/197/38 186/201/38 188/198/38 +f 189/200/37 185/307/37 186/201/37 +f 192/199/36 188/198/36 187/202/36 +f 192/199/5 190/308/5 189/204/5 +f 197/205/1 199/212/1 200/206/1 +f 193/208/39 197/205/39 198/209/39 +f 196/211/40 200/309/40 199/212/40 +f 194/213/41 199/212/41 197/205/41 +f 207/214/41 202/218/41 204/215/41 +f 205/217/40 201/310/40 202/218/40 +f 208/216/39 204/215/39 203/219/39 +f 208/216/5 206/311/5 205/221/5 +f 213/222/1 215/229/1 216/223/1 +f 209/225/42 213/222/42 214/226/42 +f 212/228/43 216/312/43 215/229/43 +f 210/230/44 215/229/44 213/222/44 +f 223/231/44 218/235/44 220/232/44 +f 221/234/43 217/313/43 218/235/43 +f 224/233/42 220/232/42 219/236/42 +f 224/233/5 222/314/5 221/238/5 +f 229/239/1 231/246/1 232/240/1 +f 225/242/45 229/239/45 230/243/45 +f 228/245/46 232/315/46 231/246/46 +f 226/247/47 231/246/47 229/239/47 +f 239/248/47 234/252/47 236/249/47 +f 237/251/46 233/316/46 234/252/46 +f 240/250/45 236/249/45 235/253/45 +f 240/250/5 238/317/5 237/255/5 +f 245/256/1 247/263/1 248/257/1 +f 241/259/48 245/256/48 246/260/48 +f 244/262/49 248/318/49 247/263/49 +f 242/264/50 247/263/50 245/256/50 +f 255/265/50 250/269/50 252/266/50 +f 253/268/49 249/319/49 250/269/49 +f 256/267/48 252/266/48 251/270/48 +f 256/267/5 254/320/5 253/272/5 +o Core +v 0.000000 2.250000 -0.000000 +v 0.180900 2.388196 0.131430 +v -0.069097 2.388196 0.212660 +v -0.223606 2.388196 -0.000000 +v -0.069097 2.388196 -0.212660 +v 0.180900 2.388196 -0.131430 +v 0.069096 2.611804 0.212660 +v -0.180901 2.611804 0.131430 +v -0.180901 2.611804 -0.131430 +v 0.069096 2.611804 -0.212660 +v 0.223606 2.611804 -0.000000 +v 0.000000 2.750000 -0.000000 +vt 0.538462 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.525641 0.491228 +vt 0.538462 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.532051 0.473684 +vt 0.525641 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.525641 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.538462 0.491228 +vt 0.532051 0.473684 +vn 0.1876 -0.7947 0.5774 +vn 0.6071 -0.7947 0.0000 +vn -0.4911 -0.7947 0.3568 +vn -0.4911 -0.7947 -0.3568 +vn 0.1876 -0.7947 -0.5774 +vn 0.9822 -0.1876 0.0000 +vn 0.3035 -0.1876 0.9342 +vn -0.7946 -0.1876 0.5774 +vn -0.7946 -0.1876 -0.5774 +vn 0.3035 -0.1876 -0.9342 +vn 0.7946 0.1876 0.5774 +vn -0.3035 0.1876 0.9342 +vn -0.9822 0.1876 0.0000 +vn -0.3035 0.1876 -0.9342 +vn 0.7946 0.1876 -0.5774 +vn 0.4911 0.7947 0.3568 +vn -0.1876 0.7947 0.5774 +vn -0.6071 0.7947 0.0000 +vn -0.1876 0.7947 -0.5774 +vn 0.4911 0.7947 -0.3568 +s off +f 257/321/51 258/322/51 259/323/51 +f 258/322/52 257/324/52 262/325/52 +f 257/321/53 259/326/53 260/327/53 +f 257/324/54 260/328/54 261/329/54 +f 257/324/55 261/330/55 262/331/55 +f 258/322/56 262/332/56 267/333/56 +f 259/326/57 258/334/57 263/335/57 +f 260/328/58 259/326/58 264/336/58 +f 261/329/59 260/327/59 265/337/59 +f 262/325/60 261/329/60 266/338/60 +f 258/334/61 267/333/61 263/339/61 +f 259/323/62 263/335/62 264/340/62 +f 260/328/63 264/340/63 265/341/63 +f 261/330/64 265/342/64 266/338/64 +f 262/325/65 266/343/65 267/344/65 +f 263/339/66 267/344/66 268/345/66 +f 264/346/67 263/339/67 268/347/67 +f 265/337/68 264/340/68 268/347/68 +f 266/343/69 265/341/69 268/345/69 +f 267/333/70 266/343/70 268/347/70 +o Chamber +v 0.000000 0.000000 -2.500000 +v -0.956709 0.000000 -2.309699 +v -1.767767 0.000000 -1.767767 +v -2.309699 0.000000 -0.956709 +v -2.500000 0.000000 0.000000 +v -2.309699 0.000000 0.956709 +v -1.767767 0.000000 1.767767 +v -0.956709 0.000000 2.309699 +v 0.000000 0.000000 2.500000 +v 0.956708 0.000000 2.309699 +v 1.767767 0.000000 1.767768 +v 2.309699 0.000000 0.956709 +v 2.500000 0.000000 -0.000000 +v 2.309698 0.000000 -0.956709 +v 1.767766 0.000000 -1.767768 +v 0.956707 0.000000 -2.309699 +v 0.000000 0.500000 -2.500000 +v -0.956709 0.500000 -2.309699 +v -1.767767 0.500000 -1.767767 +v -2.309699 0.500000 -0.956709 +v -2.500000 0.500000 0.000000 +v -2.309699 0.500000 0.956709 +v -1.767767 0.500000 1.767767 +v -0.956709 0.500000 2.309699 +v 0.000000 0.500000 2.500000 +v 0.956708 0.500000 2.309699 +v 1.767767 0.500000 1.767768 +v 2.309699 0.500000 0.956709 +v 2.500000 0.500000 -0.000000 +v 2.309698 0.500000 -0.956709 +v 1.767766 0.500000 -1.767768 +v 0.956707 0.500000 -2.309699 +v 0.000000 0.500000 -2.250000 +v -0.861038 0.500000 -2.078729 +v -1.590990 0.500000 -1.590990 +v -2.078729 0.500000 -0.861038 +v -2.250000 0.500000 0.000000 +v -2.078729 0.500000 0.861038 +v -1.590990 0.500000 1.590990 +v -0.861038 0.500000 2.078729 +v -0.000001 0.500000 2.250000 +v 0.861037 0.500000 2.078729 +v 1.590990 0.500000 1.590991 +v 2.078729 0.500000 0.861038 +v 2.250000 0.500000 0.000000 +v 2.078729 0.500000 -0.861038 +v 1.590990 0.500000 -1.590991 +v 0.861036 0.500000 -2.078730 +v 0.000000 4.500000 -2.250000 +v -0.861038 4.500000 -2.078729 +v -1.590990 4.500000 -1.590990 +v -2.078729 4.500000 -0.861038 +v -2.250000 4.500000 0.000000 +v -2.078729 4.500000 0.861038 +v -1.590990 4.500000 1.590990 +v -0.861038 4.500000 2.078729 +v -0.000001 4.500000 2.250000 +v 0.861037 4.500000 2.078729 +v 1.590990 4.500000 1.590991 +v 2.078729 4.500000 0.861038 +v 2.250000 4.500000 0.000000 +v 2.078729 4.500000 -0.861038 +v 1.590990 4.500000 -1.590991 +v 0.861036 4.500000 -2.078730 +v 1.767767 0.375000 1.944544 +v 1.944544 0.375000 1.767767 +v 1.767767 4.625000 1.944544 +v 1.944544 4.625000 1.767767 +v 1.944544 4.625000 2.121320 +v 1.944544 0.375000 2.121320 +v 2.121320 0.375000 1.944544 +v 2.121320 4.625000 1.944544 +v 1.944544 4.875000 1.767767 +v 1.767767 4.875000 1.944544 +v 1.767767 0.125000 1.944544 +v 1.944544 0.125000 1.767767 +v 1.590990 0.375000 1.767767 +v 1.767767 0.375000 1.590990 +v 1.767767 4.625000 1.590990 +v 1.590990 4.625000 1.767767 +v 1.767767 4.875000 1.590990 +v 1.590990 4.875000 1.767767 +v 1.590990 0.125000 1.767767 +v 1.767767 0.125000 1.590990 +v 1.944544 0.375000 -1.767767 +v 1.767767 0.375000 -1.944544 +v 1.944544 4.625000 -1.767767 +v 1.767767 4.625000 -1.944544 +v 2.121321 4.625000 -1.944544 +v 2.121321 0.375000 -1.944544 +v 1.944544 0.375000 -2.121320 +v 1.944544 4.625000 -2.121320 +v 1.767767 4.875000 -1.944544 +v 1.944544 4.875000 -1.767767 +v 1.944544 0.125000 -1.767767 +v 1.767767 0.125000 -1.944544 +v 1.767767 0.375000 -1.590990 +v 1.590990 0.375000 -1.767767 +v 1.590990 4.625000 -1.767767 +v 1.767767 4.625000 -1.590990 +v 1.590990 4.875000 -1.767767 +v 1.767767 4.875000 -1.590990 +v 1.767767 0.125000 -1.590990 +v 1.590990 0.125000 -1.767767 +v -1.767767 0.375000 -1.944544 +v -1.944544 0.375000 -1.767767 +v -1.767767 4.625000 -1.944544 +v -1.944544 4.625000 -1.767767 +v -1.944544 4.625000 -2.121320 +v -1.944544 0.375000 -2.121320 +v -2.121321 0.375000 -1.944544 +v -2.121321 4.625000 -1.944544 +v -1.944544 4.875000 -1.767767 +v -1.767767 4.875000 -1.944544 +v -1.767767 0.125000 -1.944544 +v -1.944544 0.125000 -1.767767 +v -1.590990 0.375000 -1.767767 +v -1.767767 0.375000 -1.590990 +v -1.767767 4.625000 -1.590990 +v -1.590990 4.625000 -1.767767 +v -1.767767 4.875000 -1.590990 +v -1.590990 4.875000 -1.767767 +v -1.590990 0.125000 -1.767767 +v -1.767767 0.125000 -1.590990 +v -1.944544 0.375000 1.767767 +v -1.767767 0.375000 1.944544 +v -1.944544 4.625000 1.767767 +v -1.767767 4.625000 1.944544 +v -2.121320 4.625000 1.944544 +v -2.121320 0.375000 1.944544 +v -1.944544 0.375000 2.121320 +v -1.944544 4.625000 2.121320 +v -1.767767 4.875000 1.944544 +v -1.944544 4.875000 1.767767 +v -1.944544 0.125000 1.767767 +v -1.767767 0.125000 1.944544 +v -1.767767 0.375000 1.590990 +v -1.590990 0.375000 1.767767 +v -1.590990 4.625000 1.767767 +v -1.767767 4.625000 1.590990 +v -1.590990 4.875000 1.767767 +v -1.767767 4.875000 1.590990 +v -1.767767 0.125000 1.590990 +v -1.590990 0.125000 1.767767 +v 0.000000 0.500000 -1.500000 +v -0.574025 0.500000 -1.385819 +v -1.060660 0.500000 -1.060660 +v -1.385819 0.500000 -0.574025 +v -1.500000 0.500000 0.000000 +v -1.385819 0.500000 0.574025 +v -1.060660 0.500000 1.060660 +v -0.574025 0.500000 1.385819 +v 0.000000 0.500000 1.500000 +v 0.574024 0.500000 1.385819 +v 1.060659 0.500000 1.060660 +v 1.385819 0.500000 0.574025 +v 1.500000 0.500000 -0.000000 +v 1.385819 0.500000 -0.574025 +v 1.060659 0.500000 -1.060660 +v 0.574024 0.500000 -1.385820 +v 0.000000 1.500000 -1.500000 +v -0.574025 1.500000 -1.385819 +v -1.060660 1.500000 -1.060660 +v -1.385819 1.500000 -0.574025 +v -1.500000 1.500000 0.000000 +v -1.385819 1.500000 0.574025 +v -1.060660 1.500000 1.060660 +v -0.574025 1.500000 1.385819 +v 0.000000 1.500000 1.500000 +v 0.574024 1.500000 1.385819 +v 1.060659 1.500000 1.060660 +v 1.385819 1.500000 0.574025 +v 1.500000 1.500000 -0.000000 +v 1.385819 1.500000 -0.574025 +v 1.060659 1.500000 -1.060660 +v 0.574024 1.500000 -1.385820 +v 0.000000 3.500000 -1.500000 +v -0.574025 3.500000 -1.385819 +v -1.060660 3.500000 -1.060660 +v -1.385819 3.500000 -0.574025 +v -1.500000 3.500000 0.000000 +v -1.385819 3.500000 0.574025 +v -1.060660 3.500000 1.060660 +v -0.574025 3.500000 1.385819 +v 0.000000 3.500000 1.500000 +v 0.574024 3.500000 1.385819 +v 1.060659 3.500000 1.060660 +v 1.385819 3.500000 0.574025 +v 1.500000 3.500000 -0.000000 +v 1.385819 3.500000 -0.574025 +v 1.060659 3.500000 -1.060660 +v 0.574024 3.500000 -1.385820 +v 0.000000 4.500000 -1.500000 +v -0.574025 4.500000 -1.385819 +v -1.060660 4.500000 -1.060660 +v -1.385819 4.500000 -0.574025 +v -1.500000 4.500000 0.000000 +v -1.385819 4.500000 0.574025 +v -1.060660 4.500000 1.060660 +v -0.574025 4.500000 1.385819 +v 0.000000 4.500000 1.500000 +v 0.574024 4.500000 1.385819 +v 1.060659 4.500000 1.060660 +v 1.385819 4.500000 0.574025 +v 1.500000 4.500000 -0.000000 +v 1.385819 4.500000 -0.574025 +v 1.060659 4.500000 -1.060660 +v 0.574024 4.500000 -1.385820 +v 0.000000 1.500000 -1.000000 +v -0.382684 1.500000 -0.923880 +v -0.707107 1.500000 -0.707107 +v -0.923880 1.500000 -0.382683 +v -1.000000 1.500000 0.000000 +v -0.923880 1.500000 0.382683 +v -0.707107 1.500000 0.707107 +v -0.382684 1.500000 0.923880 +v 0.000000 1.500000 1.000000 +v 0.382683 1.500000 0.923880 +v 0.707107 1.500000 0.707107 +v 0.923880 1.500000 0.382684 +v 1.000000 1.500000 -0.000000 +v 0.923880 1.500000 -0.382684 +v 0.707107 1.500000 -0.707107 +v 0.382683 1.500000 -0.923880 +v 0.000000 1.750000 -1.000000 +v -0.382684 1.750000 -0.923880 +v -0.707107 1.750000 -0.707107 +v -0.923880 1.750000 -0.382683 +v -1.000000 1.750000 0.000000 +v -0.923880 1.750000 0.382683 +v -0.707107 1.750000 0.707107 +v -0.382684 1.750000 0.923880 +v 0.000000 1.750000 1.000000 +v 0.382683 1.750000 0.923880 +v 0.707107 1.750000 0.707107 +v 0.923880 1.750000 0.382684 +v 1.000000 1.750000 -0.000000 +v 0.923880 1.750000 -0.382684 +v 0.707107 1.750000 -0.707107 +v 0.382683 1.750000 -0.923880 +v 0.000000 3.250000 -1.000000 +v -0.382684 3.250000 -0.923880 +v -0.707107 3.250000 -0.707107 +v -0.923880 3.250000 -0.382683 +v -1.000000 3.250000 0.000000 +v -0.923880 3.250000 0.382683 +v -0.707107 3.250000 0.707107 +v -0.382684 3.250000 0.923880 +v 0.000000 3.250000 1.000000 +v 0.382683 3.250000 0.923880 +v 0.707107 3.250000 0.707107 +v 0.923880 3.250000 0.382684 +v 1.000000 3.250000 -0.000000 +v 0.923880 3.250000 -0.382684 +v 0.707107 3.250000 -0.707107 +v 0.382683 3.250000 -0.923880 +v 0.000000 3.500000 -1.000000 +v -0.382684 3.500000 -0.923880 +v -0.707107 3.500000 -0.707107 +v -0.923880 3.500000 -0.382683 +v -1.000000 3.500000 0.000000 +v -0.923880 3.500000 0.382683 +v -0.707107 3.500000 0.707107 +v -0.382684 3.500000 0.923880 +v 0.000000 3.500000 1.000000 +v 0.382683 3.500000 0.923880 +v 0.707107 3.500000 0.707107 +v 0.923880 3.500000 0.382684 +v 1.000000 3.500000 -0.000000 +v 0.923880 3.500000 -0.382684 +v 0.707107 3.500000 -0.707107 +v 0.382683 3.500000 -0.923880 +v 0.972271 1.500000 0.972272 +v 0.795495 1.500000 0.795495 +v 0.795495 1.500000 -0.795495 +v 0.795495 2.000000 0.795495 +v 0.972271 1.500000 -0.972272 +v 0.795495 3.000000 0.795495 +v 0.972271 3.500000 0.972272 +v 0.795495 3.500000 0.795495 +v 0.265164 2.000000 0.265165 +v 0.265164 3.000000 0.265165 +v 0.795495 2.000000 -0.795495 +v 0.795495 3.000000 -0.795495 +v 0.972271 3.500000 -0.972272 +v 0.795495 3.500000 -0.795495 +v 0.265164 2.000000 -0.265165 +v 0.265164 3.000000 -0.265165 +v -0.972272 1.500000 -0.972272 +v -0.795495 1.500000 -0.795495 +v -0.795495 1.500000 0.795495 +v -0.795495 2.000000 -0.795495 +v -0.972272 1.500000 0.972272 +v -0.795495 3.000000 -0.795495 +v -0.972272 3.500000 -0.972272 +v -0.795495 3.500000 -0.795495 +v -0.265165 2.000000 -0.265165 +v -0.265165 3.000000 -0.265165 +v -0.795495 2.000000 0.795495 +v -0.795495 3.000000 0.795495 +v -0.972272 3.500000 0.972272 +v -0.795495 3.500000 0.795495 +v -0.265165 2.000000 0.265165 +v -0.265165 3.000000 0.265165 +v 0.000000 3.000000 -1.000000 +v -0.353554 2.853553 -1.000000 +v -0.500000 2.500000 -1.000000 +v -0.353554 2.146447 -1.000000 +v 0.000000 2.000000 -1.000000 +v 0.353553 2.146447 -1.000000 +v 0.500000 2.500000 -1.000000 +v 0.353553 2.853553 -1.000000 +v 0.000000 3.000000 -6.500000 +v -0.353554 2.853553 -6.500000 +v -0.500000 2.500000 -6.500000 +v -0.353554 2.146447 -6.500000 +v 0.000000 2.000000 -6.500000 +v 0.353553 2.146447 -6.500000 +v 0.500000 2.500000 -6.500000 +v 0.353553 2.853553 -6.500000 +v 0.000000 2.875000 -1.000000 +v -0.265165 2.765165 -1.000000 +v -0.375000 2.500000 -1.000000 +v -0.265165 2.234835 -1.000000 +v 0.000000 2.125000 -1.000000 +v 0.265164 2.234835 -1.000000 +v 0.375000 2.500000 -1.000000 +v 0.265164 2.765165 -1.000000 +v -0.265165 2.765165 -0.500000 +v 0.000000 2.875000 -0.500000 +v -0.375000 2.500000 -0.500000 +v -0.265165 2.234835 -0.500000 +v 0.000000 2.125000 -0.500000 +v 0.265164 2.234835 -0.500000 +v 0.375000 2.500000 -0.500000 +v 0.265164 2.765165 -0.500000 +v -1.000000 0.000000 -6.500000 +v 1.000000 0.000000 -6.500000 +v -1.000000 0.000000 -8.500000 +v 1.000000 0.000000 -8.500000 +v -1.000000 2.500000 -8.500000 +v -1.000000 3.500000 -6.500000 +v 1.000000 3.500000 -6.500000 +v 1.000000 2.500000 -8.500000 +v -0.250000 0.000000 -3.250000 +v 0.250000 0.000000 -3.250000 +v -0.250000 0.000000 -3.750000 +v 0.250000 0.000000 -3.750000 +v -0.250000 0.125000 -3.750000 +v -0.250000 0.125000 -3.250000 +v 0.250000 0.125000 -3.250000 +v 0.250000 0.125000 -3.750000 +v -0.125000 0.125000 -3.625000 +v -0.125000 0.125000 -3.375000 +v 0.125000 0.125000 -3.375000 +v 0.125000 0.125000 -3.625000 +v -0.125000 1.750000 -3.625000 +v -0.125000 1.750000 -3.375000 +v 0.125000 1.750000 -3.375000 +v 0.125000 1.750000 -3.625000 +v -0.750000 2.500000 -6.750000 +v 0.750000 2.500000 -6.750000 +v -0.750000 2.500000 -8.250000 +v 0.750000 2.500000 -8.250000 +v -0.750000 3.500000 -8.250000 +v -0.750000 3.500000 -6.750000 +v 0.750000 3.500000 -6.750000 +v 0.750000 3.500000 -8.250000 +v 1.000000 0.000000 -6.500000 +v 1.500000 0.000000 -6.500000 +v 1.000000 0.000000 -8.500000 +v 1.500000 0.000000 -8.500000 +v 1.000000 1.500000 -8.500000 +v 1.000000 1.500000 -6.500000 +v 1.500000 1.000000 -6.500000 +v 1.500000 1.000000 -8.500000 +v -1.500000 0.000000 -6.500000 +v -1.000000 0.000000 -6.500000 +v -1.500000 0.000000 -8.500000 +v -1.000000 0.000000 -8.500000 +v -1.500000 1.000000 -8.500000 +v -1.500000 1.000000 -6.500000 +v -1.000000 1.500000 -6.500000 +v -1.000000 1.500000 -8.500000 +v 0.353553 2.853553 -2.375000 +v 0.500000 2.500000 -2.375000 +v 0.353553 2.146447 -2.375000 +v 0.000000 2.000000 -2.375000 +v -0.353554 2.146447 -2.375000 +v -0.500000 2.500000 -2.375000 +v -0.353554 2.853553 -2.375000 +v 0.000000 3.000000 -2.375000 +v 0.530330 3.030330 -2.125000 +v 0.750000 2.500000 -2.125000 +v 0.530330 1.969670 -2.125000 +v 0.000000 1.750000 -2.125000 +v -0.530331 1.969670 -2.125000 +v -0.750000 2.500000 -2.125000 +v -0.530331 3.030330 -2.125000 +v 0.000000 3.250000 -2.125000 +v 0.707107 3.207107 -2.375000 +v 1.000000 2.500000 -2.375000 +v 0.707107 1.792893 -2.375000 +v 0.000000 1.500000 -2.375000 +v -0.707107 1.792893 -2.375000 +v -1.000000 2.500000 -2.375000 +v -0.707107 3.207107 -2.375000 +v 0.000000 3.500000 -2.375000 +v 0.000000 3.500000 -2.625000 +v -0.707107 3.207107 -2.625000 +v -1.000000 2.500000 -2.625000 +v -0.707107 1.792893 -2.625000 +v 0.000000 1.500000 -2.625000 +v 0.707107 1.792893 -2.625000 +v 1.000000 2.500000 -2.625000 +v 0.707107 3.207107 -2.625000 +v 0.353553 2.853553 -2.625000 +v 0.500000 2.500000 -2.625000 +v 0.353553 2.146447 -2.625000 +v 0.000000 2.000000 -2.625000 +v -0.353554 2.146447 -2.625000 +v -0.500000 2.500000 -2.625000 +v -0.353554 2.853553 -2.625000 +v 0.000000 3.000000 -2.625000 +v 0.530330 3.030330 -2.875000 +v 0.750000 2.500000 -2.875000 +v 0.530330 1.969670 -2.875000 +v 0.000000 1.750000 -2.875000 +v -0.530331 1.969670 -2.875000 +v -0.750000 2.500000 -2.875000 +v -0.530331 3.030330 -2.875000 +v 0.000000 3.250000 -2.875000 +v -0.062500 3.750000 -2.562500 +v 0.062500 3.750000 -2.562500 +v -0.062500 3.750000 -7.437500 +v 0.062500 3.750000 -7.437500 +v -0.062500 3.625000 -7.437500 +v -0.062500 3.625000 -2.562500 +v 0.062500 3.625000 -2.562500 +v 0.062500 3.625000 -7.437500 +v 0.062500 3.625000 -3.437500 +v -0.062500 3.625000 -3.437500 +v -0.062500 3.625000 -2.437500 +v 0.062500 3.625000 -2.437500 +v 0.062500 3.625000 -3.562500 +v -0.062500 3.625000 -3.562500 +v 0.062500 3.625000 -7.562500 +v -0.062500 3.625000 -7.562500 +v -0.062500 3.437500 -2.562500 +v 0.062500 3.437500 -2.562500 +v 0.062500 3.500000 -7.437500 +v -0.062500 3.500000 -7.437500 +v -0.062500 3.437500 -2.437500 +v 0.062500 3.437500 -2.437500 +v 0.062500 3.500000 -7.562500 +v -0.062500 3.500000 -7.562500 +v -0.062500 3.437500 -3.562500 +v 0.062500 3.437500 -3.562500 +v -0.062500 3.437500 -3.437500 +v 0.062500 3.437500 -3.437500 +v 0.062500 3.625000 -4.437500 +v -0.062500 3.625000 -4.437500 +v 0.062500 3.625000 -4.562500 +v -0.062500 3.625000 -4.562500 +v -0.062500 3.437500 -4.562500 +v 0.062500 3.437500 -4.562500 +v -0.062500 3.437500 -4.437500 +v 0.062500 3.437500 -4.437500 +v 0.062500 3.625000 -5.437500 +v -0.062500 3.625000 -5.437500 +v 0.062500 3.625000 -5.562500 +v -0.062500 3.625000 -5.562500 +v -0.062500 3.437500 -5.562500 +v 0.062500 3.437500 -5.562500 +v -0.062500 3.437500 -5.437500 +v 0.062500 3.437500 -5.437500 +v 0.353553 2.853553 -3.375000 +v 0.500000 2.500000 -3.375000 +v 0.353553 2.146447 -3.375000 +v 0.000000 2.000000 -3.375000 +v -0.353554 2.146447 -3.375000 +v -0.500000 2.500000 -3.375000 +v -0.353554 2.853553 -3.375000 +v 0.000000 3.000000 -3.375000 +v 0.530330 3.030330 -3.125000 +v 0.750000 2.500000 -3.125000 +v 0.530330 1.969670 -3.125000 +v 0.000000 1.750000 -3.125000 +v -0.530331 1.969670 -3.125000 +v -0.750000 2.500000 -3.125000 +v -0.530331 3.030330 -3.125000 +v 0.000000 3.250000 -3.125000 +v 0.707107 3.207107 -3.375000 +v 1.000000 2.500000 -3.375000 +v 0.707107 1.792893 -3.375000 +v 0.000000 1.500000 -3.375000 +v -0.707107 1.792893 -3.375000 +v -1.000000 2.500000 -3.375000 +v -0.707107 3.207107 -3.375000 +v 0.000000 3.500000 -3.375000 +v 0.000000 3.500000 -3.625000 +v -0.707107 3.207107 -3.625000 +v -1.000000 2.500000 -3.625000 +v -0.707107 1.792893 -3.625000 +v 0.000000 1.500000 -3.625000 +v 0.707107 1.792893 -3.625000 +v 1.000000 2.500000 -3.625000 +v 0.707107 3.207107 -3.625000 +v 0.353553 2.853553 -3.625000 +v 0.500000 2.500000 -3.625000 +v 0.353553 2.146447 -3.625000 +v 0.000000 2.000000 -3.625000 +v -0.353554 2.146447 -3.625000 +v -0.500000 2.500000 -3.625000 +v -0.353554 2.853553 -3.625000 +v 0.000000 3.000000 -3.625000 +v 0.530330 3.030330 -3.875000 +v 0.750000 2.500000 -3.875000 +v 0.530330 1.969670 -3.875000 +v 0.000000 1.750000 -3.875000 +v -0.530331 1.969670 -3.875000 +v -0.750000 2.500000 -3.875000 +v -0.530331 3.030330 -3.875000 +v 0.000000 3.250000 -3.875000 +v 0.353553 2.853553 -4.375000 +v 0.500000 2.500000 -4.375000 +v 0.353553 2.146447 -4.375000 +v 0.000000 2.000000 -4.375000 +v -0.353554 2.146447 -4.375000 +v -0.500000 2.500000 -4.375000 +v -0.353554 2.853553 -4.375000 +v 0.000000 3.000000 -4.375000 +v 0.530330 3.030330 -4.125000 +v 0.750000 2.500000 -4.125000 +v 0.530330 1.969670 -4.125000 +v 0.000000 1.750000 -4.125000 +v -0.530331 1.969670 -4.125000 +v -0.750000 2.500000 -4.125000 +v -0.530331 3.030330 -4.125000 +v 0.000000 3.250000 -4.125000 +v 0.707107 3.207107 -4.375000 +v 1.000000 2.500000 -4.375000 +v 0.707107 1.792893 -4.375000 +v 0.000000 1.500000 -4.375000 +v -0.707107 1.792893 -4.375000 +v -1.000000 2.500000 -4.375000 +v -0.707107 3.207107 -4.375000 +v 0.000000 3.500000 -4.375000 +v 0.000000 3.500000 -4.625000 +v -0.707107 3.207107 -4.625000 +v -1.000000 2.500000 -4.625000 +v -0.707107 1.792893 -4.625000 +v 0.000000 1.500000 -4.625000 +v 0.707107 1.792893 -4.625000 +v 1.000000 2.500000 -4.625000 +v 0.707107 3.207107 -4.625000 +v 0.353553 2.853553 -4.625000 +v 0.500000 2.500000 -4.625000 +v 0.353553 2.146447 -4.625000 +v 0.000000 2.000000 -4.625000 +v -0.353554 2.146447 -4.625000 +v -0.500000 2.500000 -4.625000 +v -0.353554 2.853553 -4.625000 +v 0.000000 3.000000 -4.625000 +v 0.530330 3.030330 -4.875000 +v 0.750000 2.500000 -4.875000 +v 0.530330 1.969670 -4.875000 +v 0.000000 1.750000 -4.875000 +v -0.530331 1.969670 -4.875000 +v -0.750000 2.500000 -4.875000 +v -0.530331 3.030330 -4.875000 +v 0.000000 3.250000 -4.875000 +v 0.353553 2.853553 -5.375000 +v 0.500000 2.500000 -5.375000 +v 0.353553 2.146447 -5.375000 +v 0.000000 2.000000 -5.375000 +v -0.353554 2.146447 -5.375000 +v -0.500000 2.500000 -5.375000 +v -0.353554 2.853553 -5.375000 +v 0.000000 3.000000 -5.375000 +v 0.530330 3.030330 -5.125000 +v 0.750000 2.500000 -5.125000 +v 0.530330 1.969670 -5.125000 +v 0.000000 1.750000 -5.125000 +v -0.530331 1.969670 -5.125000 +v -0.750000 2.500000 -5.125000 +v -0.530331 3.030330 -5.125000 +v 0.000000 3.250000 -5.125000 +v 0.707107 3.207107 -5.375000 +v 1.000000 2.500000 -5.375000 +v 0.707107 1.792893 -5.375000 +v 0.000000 1.500000 -5.375000 +v -0.707107 1.792893 -5.375000 +v -1.000000 2.500000 -5.375000 +v -0.707107 3.207107 -5.375000 +v 0.000000 3.500000 -5.375000 +v 0.000000 3.500000 -5.625000 +v -0.707107 3.207107 -5.625000 +v -1.000000 2.500000 -5.625000 +v -0.707107 1.792893 -5.625000 +v 0.000000 1.500000 -5.625000 +v 0.707107 1.792893 -5.625000 +v 1.000000 2.500000 -5.625000 +v 0.707107 3.207107 -5.625000 +v 0.353553 2.853553 -5.625000 +v 0.500000 2.500000 -5.625000 +v 0.353553 2.146447 -5.625000 +v 0.000000 2.000000 -5.625000 +v -0.353554 2.146447 -5.625000 +v -0.500000 2.500000 -5.625000 +v -0.353554 2.853553 -5.625000 +v 0.000000 3.000000 -5.625000 +v 0.530330 3.030330 -5.875000 +v 0.750000 2.500000 -5.875000 +v 0.530330 1.969670 -5.875000 +v 0.000000 1.750000 -5.875000 +v -0.530331 1.969670 -5.875000 +v -0.750000 2.500000 -5.875000 +v -0.530331 3.030330 -5.875000 +v 0.000000 3.250000 -5.875000 +v 0.353553 2.853553 -6.375000 +v 0.500000 2.500000 -6.375000 +v 0.353553 2.146447 -6.375000 +v 0.000000 2.000000 -6.375000 +v -0.353554 2.146447 -6.375000 +v -0.500000 2.500000 -6.375000 +v -0.353554 2.853553 -6.375000 +v 0.000000 3.000000 -6.375000 +v 0.530330 3.030330 -6.125000 +v 0.750000 2.500000 -6.125000 +v 0.530330 1.969670 -6.125000 +v 0.000000 1.750000 -6.125000 +v -0.530331 1.969670 -6.125000 +v -0.750000 2.500000 -6.125000 +v -0.530331 3.030330 -6.125000 +v 0.000000 3.250000 -6.125000 +v 0.707107 3.207107 -6.375000 +v 1.000000 2.500000 -6.375000 +v 0.707107 1.792893 -6.375000 +v 0.000000 1.500000 -6.375000 +v -0.707107 1.792893 -6.375000 +v -1.000000 2.500000 -6.375000 +v -0.707107 3.207107 -6.375000 +v 0.000000 3.500000 -6.375000 +v 0.000000 3.500000 -6.500000 +v -0.707107 3.207107 -6.500000 +v -1.000000 2.500000 -6.500000 +v -0.707107 1.792893 -6.500000 +v 0.000000 1.500000 -6.500000 +v 0.707107 1.792893 -6.500000 +v 1.000000 2.500000 -6.500000 +v 0.707107 3.207107 -6.500000 +v -0.250000 0.000000 -5.250000 +v 0.250000 0.000000 -5.250000 +v -0.250000 0.000000 -5.750000 +v 0.250000 0.000000 -5.750000 +v -0.250000 0.125000 -5.750000 +v -0.250000 0.125000 -5.250000 +v 0.250000 0.125000 -5.250000 +v 0.250000 0.125000 -5.750000 +v -0.125000 0.125000 -5.625000 +v -0.125000 0.125000 -5.375000 +v 0.125000 0.125000 -5.375000 +v 0.125000 0.125000 -5.625000 +v -0.125000 1.750000 -5.625000 +v -0.125000 1.750000 -5.375000 +v 0.125000 1.750000 -5.375000 +v 0.125000 1.750000 -5.625000 +v 0.000000 4.500000 -2.500000 +v -0.956709 4.500000 -2.309699 +v -1.767767 4.500000 -1.767767 +v -2.309699 4.500000 -0.956709 +v -2.500000 4.500000 0.000000 +v -2.309699 4.500000 0.956709 +v -1.767767 4.500000 1.767767 +v -0.956709 4.500000 2.309699 +v 0.000000 4.500000 2.500000 +v 0.956708 4.500000 2.309699 +v 1.767767 4.500000 1.767768 +v 2.309699 4.500000 0.956709 +v 2.500000 4.500000 -0.000000 +v 2.309698 4.500000 -0.956709 +v 1.767766 4.500000 -1.767768 +v 0.956707 4.500000 -2.309699 +v 0.000000 5.000000 -2.500000 +v -0.956709 5.000000 -2.309699 +v -1.767767 5.000000 -1.767767 +v -2.309699 5.000000 -0.956709 +v -2.500000 5.000000 0.000000 +v -2.309699 5.000000 0.956709 +v -1.767767 5.000000 1.767767 +v -0.956709 5.000000 2.309699 +v 0.000000 5.000000 2.500000 +v 0.956708 5.000000 2.309699 +v 1.767767 5.000000 1.767768 +v 2.309699 5.000000 0.956709 +v 2.500000 5.000000 -0.000000 +v 2.309698 5.000000 -0.956709 +v 1.767766 5.000000 -1.767768 +v 0.956707 5.000000 -2.309699 +v 1.250000 2.562500 -2.562500 +v 1.250000 2.437500 -2.562500 +v 1.250000 2.562500 -7.437500 +v 1.250000 2.437500 -7.437500 +v 1.125000 2.562500 -7.437500 +v 1.125000 2.562500 -2.562500 +v 1.125000 2.437500 -2.562500 +v 1.125000 2.437500 -7.437500 +v 1.125000 2.437500 -3.437500 +v 1.125000 2.562500 -3.437500 +v 1.125000 2.562500 -2.437500 +v 1.125000 2.437500 -2.437500 +v 1.125000 2.437500 -3.562500 +v 1.125000 2.562500 -3.562500 +v 1.125000 2.437500 -7.562500 +v 1.125000 2.562500 -7.562500 +v 0.937500 2.562500 -2.562500 +v 0.937500 2.437500 -2.562500 +v 1.000000 2.437500 -7.437500 +v 1.000000 2.562500 -7.437500 +v 0.937500 2.562500 -2.437500 +v 0.937500 2.437500 -2.437500 +v 1.000000 2.437500 -7.562500 +v 1.000000 2.562500 -7.562500 +v 0.937500 2.562500 -3.562500 +v 0.937500 2.437500 -3.562500 +v 0.937500 2.562500 -3.437500 +v 0.937500 2.437500 -3.437500 +v 1.125000 2.437500 -4.437500 +v 1.125000 2.562500 -4.437500 +v 1.125000 2.437500 -4.562500 +v 1.125000 2.562500 -4.562500 +v 0.937500 2.562500 -4.562500 +v 0.937500 2.437500 -4.562500 +v 0.937500 2.562500 -4.437500 +v 0.937500 2.437500 -4.437500 +v 1.125000 2.437500 -5.437500 +v 1.125000 2.562500 -5.437500 +v 1.125000 2.437500 -5.562500 +v 1.125000 2.562500 -5.562500 +v 0.937500 2.562500 -5.562500 +v 0.937500 2.437500 -5.562500 +v 0.937500 2.562500 -5.437500 +v 0.937500 2.437500 -5.437500 +v -1.250000 2.437500 -2.562500 +v -1.250000 2.562500 -2.562500 +v -1.250000 2.437500 -7.437500 +v -1.250000 2.562500 -7.437500 +v -1.125000 2.437500 -7.437500 +v -1.125000 2.437500 -2.562500 +v -1.125000 2.562500 -2.562500 +v -1.125000 2.562500 -7.437500 +v -1.125000 2.562500 -3.437500 +v -1.125000 2.437500 -3.437500 +v -1.125000 2.437500 -2.437500 +v -1.125000 2.562500 -2.437500 +v -1.125000 2.562500 -3.562500 +v -1.125000 2.437500 -3.562500 +v -1.125000 2.562500 -7.562500 +v -1.125000 2.437500 -7.562500 +v -0.937500 2.437500 -2.562500 +v -0.937500 2.562500 -2.562500 +v -1.000000 2.562500 -7.437500 +v -1.000000 2.437500 -7.437500 +v -0.937500 2.437500 -2.437500 +v -0.937500 2.562500 -2.437500 +v -1.000000 2.562500 -7.562500 +v -1.000000 2.437500 -7.562500 +v -0.937500 2.437500 -3.562500 +v -0.937500 2.562500 -3.562500 +v -0.937500 2.437500 -3.437500 +v -0.937500 2.562500 -3.437500 +v -1.125000 2.562500 -4.437500 +v -1.125000 2.437500 -4.437500 +v -1.125000 2.562500 -4.562500 +v -1.125000 2.437500 -4.562500 +v -0.937500 2.437500 -4.562500 +v -0.937500 2.562500 -4.562500 +v -0.937500 2.437500 -4.437500 +v -0.937500 2.562500 -4.437500 +v -1.125000 2.562500 -5.437500 +v -1.125000 2.437500 -5.437500 +v -1.125000 2.562500 -5.562500 +v -1.125000 2.437500 -5.562500 +v -0.937500 2.437500 -5.562500 +v -0.937500 2.562500 -5.562500 +v -0.937500 2.437500 -5.437500 +v -0.937500 2.562500 -5.437500 +vt 0.218809 0.299422 +vt 0.037601 0.299422 +vt 0.037602 0.051455 +vt 0.000072 0.561403 +vt 0.128205 0.386064 +vt 0.256338 0.561404 +vt 0.282051 0.350877 +vt 0.500000 0.333333 +vt 0.500000 0.350877 +vt 0.500000 0.315789 +vt 0.282051 0.298246 +vt 0.500000 0.298246 +vt 0.282051 0.333333 +vt 0.500000 0.280702 +vt 0.282051 0.280702 +vt 0.282051 0.315789 +vt 0.269231 0.333333 +vt 0.512821 0.333333 +vt 0.512821 0.298246 +vt 0.512821 0.315789 +vt 0.269231 0.280702 +vt 0.525641 0.315789 +vt 0.269231 0.298246 +vt 0.256410 0.280702 +vt 0.269231 0.280702 +vt 0.512821 0.280702 +vt 0.500000 0.315789 +vt 0.282051 0.298246 +vt 0.500000 0.298246 +vt 0.282051 0.350877 +vt 0.500000 0.333333 +vt 0.500000 0.350877 +vt 0.512821 0.280702 +vt 0.525641 0.298246 +vt 0.269231 0.333333 +vt 0.256410 0.315789 +vt 0.269231 0.315789 +vt 0.525641 0.333333 +vt 0.512821 0.333333 +vt 0.269231 0.350877 +vt 0.256410 0.333333 +vt 0.512821 0.350877 +vt 0.525641 0.350877 +vt 0.256410 0.298246 +vt 0.282051 0.333333 +vt 0.500000 0.280702 +vt 0.282051 0.280702 +vt 0.282051 0.315789 +vt 0.269231 0.333333 +vt 0.512821 0.333333 +vt 0.512821 0.298246 +vt 0.512821 0.315789 +vt 0.269231 0.280702 +vt 0.525641 0.298246 +vt 0.525641 0.315789 +vt 0.269231 0.298246 +vt 0.256410 0.280702 +vt 0.269231 0.280702 +vt 0.512821 0.280702 +vt 0.512821 0.280702 +vt 0.269231 0.333333 +vt 0.256410 0.315789 +vt 0.269231 0.315789 +vt 0.525641 0.333333 +vt 0.512821 0.333333 +vt 0.256410 0.350877 +vt 0.256410 0.333333 +vt 0.525641 0.350877 +vt 0.512821 0.350877 +vt 0.256410 0.298246 +vt 0.282051 0.350877 +vt 0.500000 0.333333 +vt 0.500000 0.350877 +vt 0.500000 0.315789 +vt 0.282051 0.298246 +vt 0.500000 0.298246 +vt 0.282051 0.333333 +vt 0.500000 0.280702 +vt 0.282051 0.280702 +vt 0.282051 0.315789 +vt 0.269231 0.333333 +vt 0.512821 0.333333 +vt 0.512821 0.315789 +vt 0.269231 0.280702 +vt 0.512821 0.298246 +vt 0.525641 0.315789 +vt 0.269231 0.298246 +vt 0.256410 0.280702 +vt 0.269231 0.280702 +vt 0.512821 0.280702 +vt 0.500000 0.315789 +vt 0.282051 0.298246 +vt 0.500000 0.298246 +vt 0.282051 0.350877 +vt 0.500000 0.333333 +vt 0.500000 0.350877 +vt 0.512821 0.280702 +vt 0.525641 0.298246 +vt 0.269231 0.333333 +vt 0.256410 0.315789 +vt 0.269231 0.315789 +vt 0.525641 0.333333 +vt 0.512821 0.333333 +vt 0.269231 0.350877 +vt 0.256410 0.333333 +vt 0.512821 0.350877 +vt 0.525641 0.350877 +vt 0.256410 0.298246 +vt 0.282051 0.333333 +vt 0.500000 0.280702 +vt 0.282051 0.280702 +vt 0.282051 0.315789 +vt 0.269231 0.333333 +vt 0.512821 0.333333 +vt 0.512821 0.315789 +vt 0.269231 0.280702 +vt 0.525641 0.298246 +vt 0.525641 0.315789 +vt 0.269231 0.298246 +vt 0.256410 0.280702 +vt 0.269231 0.280702 +vt 0.512821 0.280702 +vt 0.512821 0.280702 +vt 0.512821 0.298246 +vt 0.269231 0.333333 +vt 0.256410 0.315789 +vt 0.269231 0.315789 +vt 0.525641 0.333333 +vt 0.512821 0.333333 +vt 0.256410 0.350877 +vt 0.256410 0.333333 +vt 0.525641 0.350877 +vt 0.512821 0.350877 +vt 0.256410 0.298246 +vt 0.387590 0.487157 +vt 0.387590 0.635650 +vt 0.279077 0.635650 +vt 0.410064 0.561404 +vt 0.333333 0.666404 +vt 0.256603 0.561404 +vt 0.410509 0.543860 +vt 0.461538 0.474030 +vt 0.512568 0.543860 +vt 0.425455 0.593237 +vt 0.425455 0.494482 +vt 0.497622 0.494482 +vt 0.512821 0.614035 +vt 0.525641 0.578947 +vt 0.525641 0.614035 +vt 0.525641 0.508772 +vt 0.564103 0.578947 +vt 0.525641 0.578947 +vt 0.525641 0.508772 +vt 0.564103 0.578947 +vt 0.512821 0.473684 +vt 0.525641 0.473684 +vt 0.512821 0.614035 +vt 0.525641 0.614035 +vt 0.512821 0.473684 +vt 0.525641 0.473684 +vt 0.512821 0.614035 +vt 0.525641 0.578947 +vt 0.525641 0.614035 +vt 0.525641 0.508772 +vt 0.564103 0.578947 +vt 0.525641 0.578947 +vt 0.525641 0.508772 +vt 0.564103 0.578947 +vt 0.512821 0.473684 +vt 0.525641 0.473684 +vt 0.512821 0.614035 +vt 0.525641 0.614035 +vt 0.512821 0.473684 +vt 0.525641 0.473684 +vt 0.032051 0.868421 +vt 0.025641 0.846491 +vt 0.032051 0.842105 +vt 0.032051 0.815789 +vt 0.025641 0.837719 +vt 0.025641 0.820175 +vt 0.032051 0.763158 +vt 0.025641 0.785088 +vt 0.025641 0.767544 +vt 0.032051 0.947368 +vt 0.025641 0.925439 +vt 0.032051 0.921053 +vt 0.032051 0.894737 +vt 0.025641 0.872807 +vt 0.025641 0.793860 +vt 0.032051 0.789474 +vt 0.025641 0.741228 +vt 0.032051 0.736842 +vt 0.025641 0.916667 +vt 0.025641 0.899123 +vt 0.333333 0.789452 +vt 0.314118 0.763158 +vt 0.333333 0.736863 +vt 0.717949 0.614035 +vt 0.615385 0.473684 +vt 0.717949 0.473684 +vt 0.615385 0.929825 +vt 0.717949 0.789474 +vt 0.717949 0.929825 +vt 0.512821 0.614035 +vt 0.615385 0.789474 +vt 0.512821 0.859649 +vt 0.820513 0.614035 +vt 0.615385 0.614035 +vt 0.410256 0.859649 +vt 0.410256 0.614035 +vt 0.903846 0.280702 +vt 0.878205 0.315789 +vt 0.878205 0.280702 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.878205 0.324561 +vt 0.903846 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.884615 0.333333 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.903846 0.324561 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.871795 0.877193 +vt 0.948718 0.771930 +vt 0.948718 0.877193 +vt 0.948718 0.701754 +vt 0.871795 0.771930 +vt 0.871795 0.701754 +vt 0.871795 0.947368 +vt 0.948718 0.947368 +vt 0.820513 0.771930 +vt 0.820513 0.877193 +vt 1.000000 0.877193 +vt 1.000000 0.771930 +vt 0.442308 0.859649 +vt 0.339744 0.894737 +vt 0.339744 0.859649 +vt 0.339744 0.964912 +vt 0.442308 1.000000 +vt 0.339744 1.000000 +vt 0.442308 0.894737 +vt 0.467949 0.894737 +vt 0.442308 0.964912 +vt 0.314103 0.894737 +vt 0.314103 1.000000 +vt 0.339744 0.894737 +vt 0.442308 0.859649 +vt 0.442308 0.894737 +vt 0.442308 1.000000 +vt 0.339744 0.964912 +vt 0.442308 0.964912 +vt 0.314103 0.894737 +vt 0.314103 1.000000 +vt 0.467949 0.894737 +vt 0.541667 0.298246 +vt 0.791667 0.307018 +vt 0.541667 0.307018 +vt 0.791667 0.280702 +vt 0.541667 0.289474 +vt 0.541667 0.280702 +vt 0.791667 0.315789 +vt 0.798077 0.315789 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.791667 0.289474 +vt 0.791667 0.298246 +vt 0.541667 0.315789 +vt 0.798077 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.315789 +vt 0.535256 0.289474 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.798077 0.280702 +vt 0.804487 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.804487 0.315789 +vt 0.798077 0.315789 +vt 0.798077 0.298246 +vt 0.804487 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.804487 0.298246 +vt 0.525641 0.298246 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.903846 0.280702 +vt 0.878205 0.315789 +vt 0.878205 0.280702 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.878205 0.324561 +vt 0.903846 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.884615 0.333333 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.903846 0.324561 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.218809 0.299422 +vt 0.037601 0.299422 +vt 0.037602 0.051455 +vt 0.000072 0.561403 +vt 0.128205 0.386064 +vt 0.256338 0.561404 +vt 0.541667 0.298246 +vt 0.791667 0.307018 +vt 0.541667 0.307018 +vt 0.791667 0.280702 +vt 0.541667 0.289474 +vt 0.541667 0.280702 +vt 0.791667 0.315789 +vt 0.798077 0.315789 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.791667 0.289474 +vt 0.791667 0.298246 +vt 0.541667 0.315789 +vt 0.798077 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.315789 +vt 0.535256 0.289474 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.798077 0.280702 +vt 0.804487 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.804487 0.315789 +vt 0.798077 0.315789 +vt 0.798077 0.298246 +vt 0.804487 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.804487 0.298246 +vt 0.525641 0.298246 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.541667 0.298246 +vt 0.791667 0.307018 +vt 0.541667 0.307018 +vt 0.791667 0.280702 +vt 0.541667 0.289474 +vt 0.541667 0.280702 +vt 0.791667 0.315789 +vt 0.798077 0.315789 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.791667 0.289474 +vt 0.791667 0.298246 +vt 0.541667 0.315789 +vt 0.798077 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.315789 +vt 0.535256 0.289474 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.798077 0.280702 +vt 0.804487 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.804487 0.315789 +vt 0.798077 0.315789 +vt 0.798077 0.298246 +vt 0.804487 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.804487 0.298246 +vt 0.525641 0.298246 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.218809 0.051455 +vt 0.246584 0.108339 +vt 0.256338 0.175439 +vt 0.246584 0.242538 +vt 0.177239 0.337431 +vt 0.128205 0.350778 +vt 0.079171 0.337431 +vt 0.009826 0.242538 +vt 0.000072 0.175438 +vt 0.009826 0.108339 +vt 0.079171 0.013446 +vt 0.128205 0.000099 +vt 0.177239 0.013446 +vt 0.246584 0.628503 +vt 0.218809 0.685387 +vt 0.177240 0.723396 +vt 0.128205 0.736743 +vt 0.079171 0.723396 +vt 0.037602 0.685387 +vt 0.009826 0.628503 +vt 0.009826 0.494304 +vt 0.037602 0.437420 +vt 0.079171 0.399411 +vt 0.177239 0.399411 +vt 0.218809 0.437420 +vt 0.246585 0.494304 +vt 0.525641 0.280702 +vt 0.256410 0.350877 +vt 0.525641 0.280702 +vt 0.269231 0.350877 +vt 0.525641 0.280702 +vt 0.256410 0.350877 +vt 0.525641 0.280702 +vt 0.269231 0.350877 +vt 0.404223 0.521222 +vt 0.410064 0.561404 +vt 0.404223 0.601585 +vt 0.362697 0.658411 +vt 0.333333 0.666404 +vt 0.303970 0.658411 +vt 0.262443 0.601585 +vt 0.256603 0.561404 +vt 0.262443 0.521222 +vt 0.279077 0.487157 +vt 0.303970 0.464396 +vt 0.333333 0.456403 +vt 0.362697 0.464396 +vt 0.404223 0.601585 +vt 0.387590 0.635650 +vt 0.362697 0.658411 +vt 0.303970 0.658411 +vt 0.279077 0.635650 +vt 0.262443 0.601585 +vt 0.262443 0.521222 +vt 0.279077 0.487157 +vt 0.303970 0.464396 +vt 0.333333 0.456404 +vt 0.362697 0.464396 +vt 0.387590 0.487158 +vt 0.404223 0.521222 +vt 0.508684 0.570583 +vt 0.497622 0.593237 +vt 0.481067 0.608374 +vt 0.461538 0.613690 +vt 0.442010 0.608374 +vt 0.425455 0.593237 +vt 0.414393 0.570582 +vt 0.414393 0.517137 +vt 0.425455 0.494482 +vt 0.442010 0.479345 +vt 0.481067 0.479345 +vt 0.497622 0.494482 +vt 0.508684 0.517137 +vt 0.508684 0.517137 +vt 0.512568 0.543860 +vt 0.508684 0.570583 +vt 0.497622 0.593237 +vt 0.481067 0.608374 +vt 0.461538 0.613690 +vt 0.442010 0.608374 +vt 0.414393 0.570583 +vt 0.410509 0.543860 +vt 0.414393 0.517137 +vt 0.442010 0.479345 +vt 0.461538 0.474030 +vt 0.481067 0.479345 +vt 0.564103 0.508772 +vt 0.564103 0.508772 +vt 0.564103 0.508772 +vt 0.564103 0.508772 +vt 0.025641 0.864035 +vt 0.025641 0.942982 +vt 0.025641 0.890351 +vt 0.025641 0.811404 +vt 0.025641 0.758772 +vt 0.319746 0.781751 +vt 0.319746 0.744565 +vt 0.346920 0.744565 +vt 0.352549 0.763158 +vt 0.346921 0.781751 +vt 0.820513 0.859649 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.467949 1.000000 +vt 0.339744 0.859649 +vt 0.339744 1.000000 +vt 0.467949 1.000000 +vt 0.525641 0.315789 +vt 0.804487 0.280702 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.218809 0.051455 +vt 0.246584 0.108339 +vt 0.256338 0.175439 +vt 0.246584 0.242538 +vt 0.177239 0.337431 +vt 0.128205 0.350778 +vt 0.079171 0.337431 +vt 0.009826 0.242538 +vt 0.000072 0.175438 +vt 0.009826 0.108339 +vt 0.079171 0.013446 +vt 0.128205 0.000099 +vt 0.177239 0.013446 +vt 0.246584 0.628503 +vt 0.218809 0.685387 +vt 0.177240 0.723396 +vt 0.128205 0.736743 +vt 0.079171 0.723396 +vt 0.037602 0.685387 +vt 0.009826 0.628503 +vt 0.009826 0.494304 +vt 0.037602 0.437420 +vt 0.079171 0.399411 +vt 0.177239 0.399411 +vt 0.218809 0.437420 +vt 0.246585 0.494304 +vt 0.525641 0.315789 +vt 0.804487 0.280702 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.804487 0.280702 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.512821 0.350877 +vt 0.461538 0.385965 +vt 0.461538 0.350877 +vt 0.153846 0.350877 +vt 0.102564 0.385965 +vt 0.102564 0.350877 +vt 0.564103 0.350877 +vt 0.512821 0.385965 +vt 0.205128 0.350877 +vt 0.153846 0.385965 +vt 0.666667 0.350877 +vt 0.615385 0.385965 +vt 0.615385 0.350877 +vt 0.564103 0.385965 +vt 0.256410 0.350877 +vt 0.205128 0.385965 +vt 0.717949 0.350877 +vt 0.666667 0.385965 +vt 0.307692 0.350877 +vt 0.256410 0.385965 +vt 0.769231 0.350877 +vt 0.717949 0.385965 +vt 0.358974 0.350877 +vt 0.307692 0.385965 +vt 0.820513 0.350877 +vt 0.769231 0.385965 +vt 0.410256 0.350877 +vt 0.358974 0.385965 +vt 0.051282 0.350877 +vt 0.000000 0.385965 +vt 0.000000 0.350877 +vt 0.410256 0.385965 +vt 0.051282 0.385965 +vt 0.705128 0.000000 +vt 0.660256 0.280702 +vt 0.660256 0.000000 +vt 0.391026 0.000000 +vt 0.346154 0.280702 +vt 0.346154 0.000000 +vt 0.750000 0.000000 +vt 0.705128 0.280702 +vt 0.435897 0.000000 +vt 0.391026 0.280702 +vt 0.839744 -0.000000 +vt 0.794872 0.280702 +vt 0.794872 0.000000 +vt 0.750000 0.280702 +vt 0.480769 0.000000 +vt 0.435897 0.280702 +vt 0.884615 -0.000000 +vt 0.839744 0.280702 +vt 0.525641 0.000000 +vt 0.480769 0.280702 +vt 0.929487 -0.000000 +vt 0.884615 0.280702 +vt 0.570513 0.000000 +vt 0.525641 0.280702 +vt 0.974359 -0.000000 +vt 0.929487 0.280702 +vt 0.615385 0.000000 +vt 0.570513 0.280702 +vt 0.301282 0.000000 +vt 0.256410 0.280702 +vt 0.256410 0.000000 +vt 0.615385 0.280702 +vt 0.301282 0.280702 +vt 0.544872 0.385965 +vt 0.516026 0.456140 +vt 0.516026 0.385965 +vt 0.342949 0.385965 +vt 0.314103 0.456140 +vt 0.314103 0.385965 +vt 0.573718 0.385965 +vt 0.544872 0.456140 +vt 0.371795 0.385965 +vt 0.342949 0.456140 +vt 0.631410 0.385965 +vt 0.602564 0.456140 +vt 0.602564 0.385965 +vt 0.573718 0.456140 +vt 0.400641 0.385965 +vt 0.371795 0.456140 +vt 0.660256 0.385965 +vt 0.631410 0.456140 +vt 0.429487 0.385965 +vt 0.400641 0.456140 +vt 0.689103 0.385965 +vt 0.660256 0.456140 +vt 0.458333 0.385965 +vt 0.429487 0.456140 +vt 0.717949 0.385965 +vt 0.689103 0.456140 +vt 0.487179 0.385965 +vt 0.458333 0.456140 +vt 0.285256 0.385965 +vt 0.256410 0.456140 +vt 0.256410 0.385965 +vt 0.487179 0.456140 +vt 0.285256 0.456140 +vt 0.429487 0.456140 +vt 0.458333 0.385965 +vt 0.458333 0.456140 +vt 0.631410 0.456140 +vt 0.660256 0.385965 +vt 0.660256 0.456140 +vt 0.400641 0.456140 +vt 0.429487 0.385965 +vt 0.602564 0.456140 +vt 0.631410 0.385965 +vt 0.342949 0.456140 +vt 0.371795 0.385965 +vt 0.371795 0.456140 +vt 0.400641 0.385965 +vt 0.573718 0.456140 +vt 0.602564 0.385965 +vt 0.314103 0.456140 +vt 0.342949 0.385965 +vt 0.544872 0.456140 +vt 0.573718 0.385965 +vt 0.285256 0.456140 +vt 0.314103 0.385965 +vt 0.516026 0.456140 +vt 0.544872 0.385965 +vt 0.256410 0.456140 +vt 0.285256 0.385965 +vt 0.487179 0.456140 +vt 0.516026 0.385965 +vt 0.689103 0.456140 +vt 0.717949 0.385965 +vt 0.717949 0.456140 +vt 0.487179 0.385965 +vt 0.689103 0.385965 +vt 0.544872 0.456140 +vt 0.525641 0.473684 +vt 0.525641 0.456140 +vt 0.717949 0.456140 +vt 0.698718 0.473684 +vt 0.698718 0.456140 +vt 0.564103 0.456140 +vt 0.544872 0.473684 +vt 0.429487 0.456140 +vt 0.410256 0.473684 +vt 0.410256 0.456140 +vt 0.583333 0.456140 +vt 0.564103 0.473684 +vt 0.448718 0.456140 +vt 0.429487 0.473684 +vt 0.602564 0.456140 +vt 0.583333 0.473684 +vt 0.467949 0.456140 +vt 0.448718 0.473684 +vt 0.621795 0.456140 +vt 0.602564 0.473684 +vt 0.487179 0.456140 +vt 0.467949 0.473684 +vt 0.660256 0.456140 +vt 0.641026 0.473684 +vt 0.641026 0.456140 +vt 0.621795 0.473684 +vt 0.506410 0.456140 +vt 0.487179 0.473684 +vt 0.679487 0.456140 +vt 0.660256 0.473684 +vt 0.506410 0.473684 +vt 0.679487 0.473684 +vt 0.583333 0.473684 +vt 0.602564 0.456140 +vt 0.602564 0.473684 +vt 0.410256 0.473684 +vt 0.429487 0.456140 +vt 0.429487 0.473684 +vt 0.564103 0.473684 +vt 0.583333 0.456140 +vt 0.698718 0.473684 +vt 0.717949 0.456140 +vt 0.717949 0.473684 +vt 0.544872 0.473684 +vt 0.564103 0.456140 +vt 0.679487 0.473684 +vt 0.698718 0.456140 +vt 0.525641 0.473684 +vt 0.544872 0.456140 +vt 0.660256 0.473684 +vt 0.679487 0.456140 +vt 0.506410 0.473684 +vt 0.525641 0.456140 +vt 0.641026 0.473684 +vt 0.660256 0.456140 +vt 0.467949 0.473684 +vt 0.487179 0.456140 +vt 0.487179 0.473684 +vt 0.506410 0.456140 +vt 0.621795 0.473684 +vt 0.641026 0.456140 +vt 0.448718 0.473684 +vt 0.467949 0.456140 +vt 0.621795 0.456140 +vt 0.448718 0.456140 +vt 0.314103 0.842105 +vt 0.314103 0.815789 +vt 0.314103 0.763158 +vt 0.314103 0.921053 +vt 0.314103 0.868421 +vt 0.314103 0.789474 +vt 0.314103 0.736842 +vt 0.314103 0.894737 +vt 0.000000 0.820175 +vt 0.000000 0.767544 +vt 0.000000 0.925439 +vt 0.000000 0.872807 +vt 0.000000 0.793860 +vt -0.000000 0.741228 +vt 0.000000 0.899123 +vt 0.000000 0.846491 +vt 0.993590 0.451754 +vt 0.974359 0.482456 +vt 0.974359 0.447368 +vt 0.993590 0.399123 +vt 0.974359 0.429825 +vt 0.974359 0.394737 +vt 0.974359 0.342105 +vt 0.993590 0.372807 +vt 0.974359 0.377193 +vt 0.993590 0.293860 +vt 0.974359 0.324561 +vt 0.974359 0.289474 +vt 0.993590 0.662281 +vt 0.974359 0.692982 +vt 0.974359 0.657895 +vt 0.974359 0.605263 +vt 0.993590 0.635965 +vt 0.974359 0.640351 +vt 0.993590 0.557018 +vt 0.974359 0.587719 +vt 0.974359 0.552632 +vt 0.974359 0.500000 +vt 0.993590 0.530702 +vt 0.974359 0.535088 +vt 0.955128 0.543860 +vt 0.942308 0.491228 +vt 0.955128 0.491228 +vt 0.955128 0.596491 +vt 0.942308 0.543860 +vt 0.955128 0.649123 +vt 0.942308 0.596491 +vt 0.955128 0.701754 +vt 0.942308 0.649123 +vt 0.955128 0.333333 +vt 0.942308 0.280702 +vt 0.955128 0.280702 +vt 0.955128 0.385965 +vt 0.942308 0.333333 +vt 0.955128 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.605263 +vt 0.903846 0.635965 +vt 0.903846 0.609649 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.289474 +vt 0.903846 0.320175 +vt 0.903846 0.293860 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.447368 +vt 0.903846 0.478070 +vt 0.903846 0.451754 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.377193 +vt 0.923077 0.324561 +vt 0.942308 0.701754 +vt 0.923077 0.640351 +vt 0.974359 0.447368 +vt 0.993590 0.478070 +vt 0.974359 0.482456 +vt 0.993590 0.399123 +vt 0.974359 0.429825 +vt 0.974359 0.394737 +vt 0.974359 0.342105 +vt 0.993590 0.372807 +vt 0.974359 0.377193 +vt 0.974359 0.289474 +vt 0.993590 0.320175 +vt 0.974359 0.324561 +vt 0.993590 0.662281 +vt 0.974359 0.692982 +vt 0.974359 0.657895 +vt 0.974359 0.605263 +vt 0.993590 0.635965 +vt 0.974359 0.640351 +vt 0.993590 0.557018 +vt 0.974359 0.587719 +vt 0.974359 0.552632 +vt 0.974359 0.500000 +vt 0.993590 0.530702 +vt 0.974359 0.535088 +vt 0.955128 0.543860 +vt 0.942308 0.491228 +vt 0.955128 0.491228 +vt 0.955128 0.596491 +vt 0.942308 0.543860 +vt 0.955128 0.649123 +vt 0.942308 0.596491 +vt 0.955128 0.701754 +vt 0.942308 0.649123 +vt 0.955128 0.333333 +vt 0.942308 0.280702 +vt 0.955128 0.280702 +vt 0.955128 0.385965 +vt 0.942308 0.333333 +vt 0.955128 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.605263 +vt 0.903846 0.635965 +vt 0.903846 0.609649 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.289474 +vt 0.903846 0.320175 +vt 0.903846 0.293860 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.482456 +vt 0.903846 0.451754 +vt 0.923077 0.447368 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.324561 +vt 0.993590 0.451754 +vt 0.974359 0.482456 +vt 0.974359 0.447368 +vt 0.993590 0.399123 +vt 0.974359 0.429825 +vt 0.974359 0.394737 +vt 0.974359 0.342105 +vt 0.993590 0.372807 +vt 0.974359 0.377193 +vt 0.993590 0.293860 +vt 0.974359 0.324561 +vt 0.974359 0.289474 +vt 0.993590 0.662281 +vt 0.974359 0.692982 +vt 0.974359 0.657895 +vt 0.974359 0.605263 +vt 0.993590 0.635965 +vt 0.974359 0.640351 +vt 0.993590 0.557018 +vt 0.974359 0.587719 +vt 0.974359 0.552632 +vt 0.974359 0.500000 +vt 0.993590 0.530702 +vt 0.974359 0.535088 +vt 0.955128 0.543860 +vt 0.942308 0.491228 +vt 0.955128 0.491228 +vt 0.955128 0.596491 +vt 0.942308 0.543860 +vt 0.955128 0.649123 +vt 0.942308 0.596491 +vt 0.955128 0.701754 +vt 0.942308 0.649123 +vt 0.955128 0.333333 +vt 0.942308 0.280702 +vt 0.955128 0.280702 +vt 0.955128 0.385965 +vt 0.942308 0.333333 +vt 0.955128 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.605263 +vt 0.903846 0.635965 +vt 0.903846 0.609649 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.324561 +vt 0.903846 0.293860 +vt 0.923077 0.289474 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.447368 +vt 0.903846 0.478070 +vt 0.903846 0.451754 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.377193 +vt 0.923077 0.482456 +vt 0.974359 0.447368 +vt 0.993590 0.478070 +vt 0.974359 0.482456 +vt 0.993590 0.399123 +vt 0.974359 0.429825 +vt 0.974359 0.394737 +vt 0.974359 0.342105 +vt 0.993590 0.372807 +vt 0.974359 0.377193 +vt 0.974359 0.289474 +vt 0.993590 0.320175 +vt 0.974359 0.324561 +vt 0.993590 0.662281 +vt 0.974359 0.692982 +vt 0.974359 0.657895 +vt 0.974359 0.605263 +vt 0.993590 0.635965 +vt 0.974359 0.640351 +vt 0.993590 0.557018 +vt 0.974359 0.587719 +vt 0.974359 0.552632 +vt 0.993590 0.504386 +vt 0.974359 0.535088 +vt 0.974359 0.500000 +vt 0.955128 0.543860 +vt 0.942308 0.491228 +vt 0.955128 0.491228 +vt 0.955128 0.596491 +vt 0.942308 0.543860 +vt 0.955128 0.649123 +vt 0.942308 0.596491 +vt 0.955128 0.701754 +vt 0.942308 0.649123 +vt 0.955128 0.333333 +vt 0.942308 0.280702 +vt 0.955128 0.280702 +vt 0.955128 0.385965 +vt 0.942308 0.333333 +vt 0.955128 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.640351 +vt 0.903846 0.609649 +vt 0.923077 0.605263 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.289474 +vt 0.903846 0.320175 +vt 0.903846 0.293860 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.447368 +vt 0.903846 0.478070 +vt 0.903846 0.451754 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.324561 +vt 0.923077 0.482456 +vt 0.948718 0.543860 +vt 0.942308 0.491228 +vt 0.948718 0.491228 +vt 0.948718 0.596491 +vt 0.942308 0.543860 +vt 0.948718 0.649123 +vt 0.942308 0.596491 +vt 0.948718 0.701754 +vt 0.942308 0.649123 +vt 0.948718 0.333333 +vt 0.942308 0.280702 +vt 0.948718 0.280702 +vt 0.948718 0.385965 +vt 0.942308 0.333333 +vt 0.948718 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.605263 +vt 0.903846 0.635965 +vt 0.903846 0.609649 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.289474 +vt 0.903846 0.320175 +vt 0.903846 0.293860 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.447368 +vt 0.903846 0.478070 +vt 0.903846 0.451754 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.377193 +vt 0.923077 0.640351 +vt 0.923077 0.482456 +vt 0.512821 0.350877 +vt 0.461538 0.385965 +vt 0.461538 0.350877 +vt 0.153846 0.350877 +vt 0.102564 0.385965 +vt 0.102564 0.350877 +vt 0.564103 0.350877 +vt 0.512821 0.385965 +vt 0.205128 0.350877 +vt 0.153846 0.385965 +vt 0.666667 0.350877 +vt 0.615385 0.385965 +vt 0.615385 0.350877 +vt 0.564103 0.385965 +vt 0.256410 0.350877 +vt 0.205128 0.385965 +vt 0.717949 0.350877 +vt 0.666667 0.385965 +vt 0.307692 0.350877 +vt 0.256410 0.385965 +vt 0.769231 0.350877 +vt 0.717949 0.385965 +vt 0.358974 0.350877 +vt 0.307692 0.385965 +vt 0.820513 0.350877 +vt 0.769231 0.385965 +vt 0.410256 0.350877 +vt 0.358974 0.385965 +vt 0.051282 0.350877 +vt 0.000000 0.385965 +vt 0.000000 0.350877 +vt 0.410256 0.385965 +vt 0.051282 0.385965 +vt 0.820513 0.385965 +vt 0.974359 0.280702 +vt 0.717949 0.456140 +vt 0.256410 0.385965 +vt 0.717949 0.473684 +vt 0.410256 0.456140 +vt 0.314103 0.947368 +vt 0.000000 0.837719 +vt 0.000000 0.785088 +vt 0.000000 0.942982 +vt 0.000000 0.890351 +vt 0.000000 0.811404 +vt 0.000000 0.758772 +vt 0.000000 0.916667 +vt 0.000000 0.864035 +vt 0.993590 0.478070 +vt 0.993590 0.425439 +vt 0.993590 0.346491 +vt 0.993590 0.320175 +vt 0.993590 0.688596 +vt 0.993590 0.609649 +vt 0.993590 0.583333 +vt 0.993590 0.504386 +vt 0.903846 0.583333 +vt 0.903846 0.688596 +vt 0.903846 0.425439 +vt 0.923077 0.482456 +vt 0.923077 0.535088 +vt 0.993590 0.451754 +vt 0.993590 0.425439 +vt 0.993590 0.346491 +vt 0.993590 0.293860 +vt 0.993590 0.688596 +vt 0.993590 0.609649 +vt 0.993590 0.583333 +vt 0.993590 0.504386 +vt 0.942308 0.701754 +vt 0.903846 0.583333 +vt 0.923077 0.640351 +vt 0.903846 0.688596 +vt 0.923077 0.377193 +vt 0.903846 0.425439 +vt 0.903846 0.478070 +vt 0.923077 0.535088 +vt 0.993590 0.478070 +vt 0.993590 0.425439 +vt 0.993590 0.346491 +vt 0.993590 0.320175 +vt 0.993590 0.688596 +vt 0.993590 0.609649 +vt 0.993590 0.583333 +vt 0.993590 0.504386 +vt 0.942308 0.701754 +vt 0.903846 0.583333 +vt 0.923077 0.640351 +vt 0.903846 0.688596 +vt 0.903846 0.320175 +vt 0.903846 0.425439 +vt 0.923077 0.535088 +vt 0.993590 0.451754 +vt 0.993590 0.425439 +vt 0.993590 0.346491 +vt 0.993590 0.293860 +vt 0.993590 0.688596 +vt 0.993590 0.609649 +vt 0.993590 0.583333 +vt 0.993590 0.530702 +vt 0.942308 0.701754 +vt 0.903846 0.583333 +vt 0.903846 0.635965 +vt 0.903846 0.688596 +vt 0.923077 0.377193 +vt 0.903846 0.425439 +vt 0.923077 0.535088 +vt 0.942308 0.701754 +vt 0.903846 0.583333 +vt 0.903846 0.688596 +vt 0.923077 0.324561 +vt 0.903846 0.425439 +vt 0.923077 0.535088 +vt 0.820513 0.385965 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.5000 -0.7071 0.5000 +vn 0.5000 0.7071 0.5000 +vn 0.5000 -0.7071 -0.5000 +vn 0.5000 0.7071 -0.5000 +vn -0.5000 -0.7071 -0.5000 +vn -0.5000 0.7071 -0.5000 +vn -0.5000 -0.7071 0.5000 +vn -0.5000 0.7071 0.5000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.8944 -0.4472 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.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.9239 0.0000 -0.3827 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 -0.9239 +vn 0.3827 0.0000 0.9239 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 0.3827 +vn -0.9239 0.0000 0.3827 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.5000 -0.5000 -0.7071 +vn -0.0000 -0.7071 -0.7071 +vn -0.5000 0.5000 -0.7071 +vn 0.5000 0.5000 -0.7071 +vn 0.5000 -0.5000 -0.7071 +vn 0.5000 -0.5000 0.7071 +vn 0.5000 0.5000 0.7071 +vn -0.5000 0.5000 0.7071 +vn -0.5000 -0.5000 0.7071 +vn -0.0000 -0.7071 0.7071 +s off +f 283/348/71 279/349/71 275/350/71 +f 293/351/72 297/352/72 285/353/72 +f 335/354/73 334/355/73 333/356/73 +f 339/357/74 337/358/74 338/359/74 +f 336/360/75 339/357/75 334/355/75 +f 333/361/76 337/358/76 335/362/76 +f 340/363/75 336/360/75 341/364/75 +f 334/355/75 339/357/75 344/365/75 +f 339/357/77 343/366/77 344/367/77 +f 335/362/76 337/358/76 342/368/76 +f 343/366/71 352/369/71 344/367/71 +f 342/370/76 348/371/76 335/372/76 +f 338/359/76 333/361/76 343/373/76 +f 359/374/75 357/375/75 358/376/75 +f 355/377/76 354/378/76 353/379/76 +f 333/380/76 351/381/76 343/366/76 +f 336/382/75 349/383/75 341/384/75 +f 344/367/75 346/385/75 334/386/75 +f 335/387/71 347/388/71 336/382/71 +f 333/389/72 346/385/72 345/390/72 +f 342/370/72 349/383/72 350/391/72 +f 340/363/78 342/370/78 337/358/78 +f 356/392/73 359/374/73 354/378/73 +f 353/393/74 357/375/74 355/394/74 +f 360/395/73 356/392/73 361/396/73 +f 354/378/73 359/374/73 364/397/73 +f 359/374/79 363/398/79 364/399/79 +f 355/394/74 357/375/74 362/400/74 +f 364/399/71 371/401/71 372/402/71 +f 362/403/74 368/404/74 355/405/74 +f 358/376/74 353/393/74 363/406/74 +f 353/407/74 371/401/74 363/398/74 +f 356/408/73 369/409/73 361/410/73 +f 364/399/73 366/411/73 354/412/73 +f 356/408/71 368/413/71 367/414/71 +f 354/412/72 365/415/72 353/416/72 +f 361/410/72 370/417/72 362/403/72 +f 360/395/80 362/403/80 357/375/80 +f 375/418/74 374/419/74 373/420/74 +f 379/421/73 377/422/73 378/423/73 +f 376/424/76 379/421/76 374/419/76 +f 373/425/75 377/422/75 375/426/75 +f 380/427/76 376/424/76 381/428/76 +f 374/419/76 379/421/76 384/429/76 +f 378/423/81 384/430/81 379/421/81 +f 375/426/75 377/422/75 382/431/75 +f 383/432/71 392/433/71 384/430/71 +f 382/434/75 388/435/75 375/436/75 +f 378/423/75 373/425/75 383/437/75 +f 399/438/76 397/439/76 398/440/76 +f 395/441/75 394/442/75 393/443/75 +f 373/444/75 391/445/75 383/432/75 +f 376/446/76 389/447/76 381/448/76 +f 384/430/76 386/449/76 374/450/76 +f 375/451/71 387/452/71 376/446/71 +f 373/453/72 386/449/72 385/454/72 +f 382/434/72 389/447/72 390/455/72 +f 377/422/82 381/448/82 382/434/82 +f 396/456/74 399/438/74 394/442/74 +f 393/457/73 397/439/73 395/458/73 +f 400/459/74 396/456/74 401/460/74 +f 394/442/74 399/438/74 404/461/74 +f 398/440/83 404/462/83 399/438/83 +f 395/458/73 397/439/73 402/463/73 +f 404/462/71 411/464/71 412/465/71 +f 402/466/73 408/467/73 395/468/73 +f 398/440/73 393/457/73 403/469/73 +f 393/470/73 411/464/73 403/471/73 +f 396/472/74 409/473/74 401/474/74 +f 404/462/74 406/475/74 394/476/74 +f 396/472/71 408/477/71 407/478/71 +f 394/476/72 405/479/72 393/480/72 +f 401/474/72 410/481/72 402/466/72 +f 400/459/84 402/466/84 397/439/84 +f 447/482/71 459/483/71 455/484/71 +f 429/485/72 433/486/72 437/487/72 +f 501/488/72 505/489/72 493/490/72 +f 519/491/71 515/492/71 511/493/71 +f 553/494/73 552/495/73 554/496/73 +f 544/497/75 550/498/75 546/499/75 +f 551/500/73 556/501/73 552/495/73 +f 551/500/73 545/502/73 543/503/73 +f 547/504/75 546/499/75 548/505/75 +f 544/497/75 541/506/75 542/507/75 +f 569/508/74 568/509/74 570/510/74 +f 560/511/76 566/512/76 562/513/76 +f 567/514/74 572/515/74 568/509/74 +f 567/514/74 561/516/74 559/517/74 +f 563/518/76 562/513/76 564/519/76 +f 560/511/76 557/520/76 558/521/76 +f 574/522/85 589/523/85 573/524/85 +f 580/525/85 589/526/85 596/527/85 +f 578/528/85 595/529/85 594/530/85 +f 577/531/85 592/532/85 576/533/85 +f 575/534/85 590/535/85 574/522/85 +f 580/525/85 595/536/85 579/537/85 +f 578/528/85 593/538/85 577/539/85 +f 575/534/85 592/540/85 591/541/85 +f 598/542/85 599/543/85 601/544/85 +f 607/545/71 606/546/71 605/547/71 +f 611/548/86 609/549/86 610/550/86 +f 606/551/87 612/552/87 611/553/87 +f 605/554/88 609/549/88 607/545/88 +f 607/545/89 612/552/89 608/555/89 +f 606/551/85 610/556/85 605/557/85 +f 615/558/71 614/559/71 613/560/71 +f 620/561/72 623/562/72 619/563/72 +f 616/564/87 619/563/87 614/559/87 +f 613/565/88 617/566/88 615/567/88 +f 615/568/89 620/569/89 616/570/89 +f 614/571/85 618/572/85 613/573/85 +f 621/574/89 628/575/89 624/576/89 +f 618/577/72 621/578/72 617/566/72 +f 617/579/72 624/576/72 620/569/72 +f 619/580/72 622/581/72 618/572/72 +f 623/582/85 626/583/85 622/581/85 +f 624/584/87 627/585/87 623/562/87 +f 622/586/88 625/587/88 621/578/88 +f 635/588/72 633/589/72 634/590/72 +f 631/591/89 636/592/89 632/593/89 +f 630/594/85 634/590/85 629/595/85 +f 632/596/87 635/588/87 630/597/87 +f 629/598/88 633/589/88 631/599/88 +f 639/600/71 638/601/71 637/602/71 +f 643/603/90 641/604/90 642/605/90 +f 640/606/87 643/603/87 638/601/87 +f 639/607/89 644/608/89 640/606/89 +f 637/609/85 643/603/85 642/610/85 +f 647/611/71 646/612/71 645/613/71 +f 651/614/91 649/615/91 650/616/91 +f 648/617/89 649/615/89 652/618/89 +f 646/619/85 650/616/85 645/613/85 +f 645/613/88 649/615/88 647/611/88 +f 702/620/72 703/621/72 701/622/72 +f 705/623/71 707/624/71 706/625/71 +f 705/626/88 703/621/88 716/627/88 +f 707/628/89 717/629/89 706/630/89 +f 702/620/87 708/631/87 704/632/87 +f 703/621/88 706/633/88 701/622/88 +f 704/632/92 716/634/92 703/621/92 +f 714/635/88 727/636/88 710/637/88 +f 701/622/88 706/633/88 711/638/88 +f 707/624/87 702/620/87 712/639/87 +f 713/640/89 725/641/89 714/642/89 +f 705/643/85 719/644/85 708/645/85 +f 709/646/87 726/647/87 713/640/87 +f 704/632/87 708/631/87 715/648/87 +f 701/622/93 712/649/93 702/620/93 +f 712/649/87 718/650/87 707/628/87 +f 716/634/88 720/651/88 705/652/88 +f 715/653/89 724/654/89 716/634/89 +f 706/655/88 721/656/88 711/657/88 +f 708/645/87 723/658/87 715/653/87 +f 711/657/85 722/659/85 712/649/85 +f 710/637/85 728/660/85 709/646/85 +f 732/661/88 735/662/88 730/663/88 +f 731/664/89 733/665/89 732/666/89 +f 729/667/87 734/668/87 731/664/87 +f 730/663/85 736/669/85 729/667/85 +f 740/670/88 743/671/88 738/672/88 +f 739/673/89 741/674/89 740/675/89 +f 737/676/87 742/677/87 739/673/87 +f 738/672/85 744/678/85 737/676/85 +f 923/679/71 922/680/71 921/681/71 +f 928/682/72 931/683/72 927/684/72 +f 924/685/87 927/684/87 922/680/87 +f 921/686/88 925/687/88 923/688/88 +f 923/689/89 928/690/89 924/691/89 +f 922/692/85 926/693/85 921/694/85 +f 929/695/89 936/696/89 932/697/89 +f 926/698/72 929/699/72 925/687/72 +f 925/700/72 932/697/72 928/690/72 +f 927/701/72 930/702/72 926/693/72 +f 931/703/85 934/704/85 930/702/85 +f 932/705/87 935/706/87 931/683/87 +f 930/707/88 933/708/88 929/699/88 +f 951/709/71 947/710/71 943/711/71 +f 961/712/72 965/713/72 953/714/72 +f 970/715/87 971/716/87 969/717/87 +f 973/718/88 975/719/88 974/720/88 +f 973/721/72 971/716/72 984/722/72 +f 975/723/89 985/724/89 974/725/89 +f 970/715/71 976/726/71 972/727/71 +f 971/716/72 974/728/72 969/717/72 +f 972/727/75 984/729/75 971/716/75 +f 982/730/72 995/731/72 978/732/72 +f 969/717/72 974/728/72 979/733/72 +f 975/719/71 970/715/71 980/734/71 +f 981/735/89 993/736/89 982/737/89 +f 973/738/85 987/739/85 976/740/85 +f 977/741/71 994/742/71 981/735/71 +f 972/727/71 976/726/71 983/743/71 +f 969/717/74 980/744/74 970/715/74 +f 980/744/71 986/745/71 975/723/71 +f 984/729/72 988/746/72 973/747/72 +f 983/748/89 992/749/89 984/729/89 +f 974/750/72 989/751/72 979/752/72 +f 976/740/71 991/753/71 983/748/71 +f 979/752/85 990/754/85 980/744/85 +f 978/732/85 996/755/85 977/741/85 +f 1000/756/72 1003/757/72 998/758/72 +f 999/759/89 1001/760/89 1000/761/89 +f 997/762/71 1002/763/71 999/759/71 +f 998/758/85 1004/764/85 997/762/85 +f 1008/765/72 1011/766/72 1006/767/72 +f 1007/768/89 1009/769/89 1008/770/89 +f 1005/771/71 1010/772/71 1007/768/71 +f 1006/767/85 1012/773/85 1005/771/85 +f 1014/774/88 1015/775/88 1013/776/88 +f 1017/777/87 1019/778/87 1018/779/87 +f 1017/780/71 1015/775/71 1028/781/71 +f 1019/782/89 1029/783/89 1018/784/89 +f 1014/774/72 1020/785/72 1016/786/72 +f 1015/775/71 1018/787/71 1013/776/71 +f 1016/786/73 1028/788/73 1015/775/73 +f 1026/789/71 1039/790/71 1022/791/71 +f 1013/776/71 1018/787/71 1023/792/71 +f 1019/778/72 1014/774/72 1024/793/72 +f 1025/794/89 1037/795/89 1026/796/89 +f 1017/797/85 1031/798/85 1020/799/85 +f 1021/800/72 1038/801/72 1025/794/72 +f 1016/786/72 1020/785/72 1027/802/72 +f 1013/776/76 1024/803/76 1014/774/76 +f 1024/803/72 1030/804/72 1019/782/72 +f 1028/788/71 1032/805/71 1017/806/71 +f 1027/807/89 1036/808/89 1028/788/89 +f 1018/809/71 1033/810/71 1023/811/71 +f 1020/799/72 1035/812/72 1027/807/72 +f 1023/811/85 1034/813/85 1024/803/85 +f 1022/791/85 1040/814/85 1021/800/85 +f 1044/815/71 1047/816/71 1042/817/71 +f 1043/818/89 1045/819/89 1044/820/89 +f 1041/821/72 1046/822/72 1043/818/72 +f 1042/817/85 1048/823/85 1041/821/85 +f 1052/824/71 1055/825/71 1050/826/71 +f 1051/827/89 1053/828/89 1052/829/89 +f 1049/830/72 1054/831/72 1051/827/72 +f 1050/826/85 1056/832/85 1049/830/85 +f 271/833/71 270/834/71 269/835/71 +f 269/835/71 284/836/71 271/833/71 +f 284/836/71 283/348/71 271/833/71 +f 283/348/71 282/837/71 279/349/71 +f 282/837/71 281/838/71 279/349/71 +f 281/838/71 280/839/71 279/349/71 +f 279/349/71 278/840/71 275/350/71 +f 278/840/71 277/841/71 275/350/71 +f 277/841/71 276/842/71 275/350/71 +f 275/350/71 274/843/71 273/844/71 +f 273/844/71 272/845/71 271/833/71 +f 275/350/71 273/844/71 271/833/71 +f 271/833/71 283/348/71 275/350/71 +f 285/353/72 286/846/72 287/847/72 +f 287/847/72 288/848/72 289/849/72 +f 289/849/72 290/850/72 291/851/72 +f 291/851/72 292/852/72 293/351/72 +f 293/351/72 294/853/72 297/352/72 +f 294/853/72 295/854/72 297/352/72 +f 295/854/72 296/855/72 297/352/72 +f 297/352/72 298/856/72 285/353/72 +f 298/856/72 299/857/72 285/353/72 +f 299/857/72 300/858/72 285/353/72 +f 285/353/72 287/847/72 289/849/72 +f 289/849/72 291/851/72 293/351/72 +f 285/353/72 289/849/72 293/351/72 +f 335/354/73 336/360/73 334/355/73 +f 339/357/74 340/363/74 337/358/74 +f 336/360/75 340/363/75 339/357/75 +f 333/361/76 338/359/76 337/358/76 +f 339/357/77 338/359/77 343/366/77 +f 343/366/71 351/381/71 352/369/71 +f 342/370/76 350/391/76 348/371/76 +f 359/374/75 360/395/75 357/375/75 +f 355/377/76 356/392/76 354/378/76 +f 333/380/76 345/859/76 351/381/76 +f 336/382/75 347/388/75 349/383/75 +f 344/367/75 352/369/75 346/385/75 +f 335/387/71 348/860/71 347/388/71 +f 333/389/72 334/386/72 346/385/72 +f 342/370/72 341/384/72 349/383/72 +f 340/363/78 341/384/78 342/370/78 +f 356/392/73 360/395/73 359/374/73 +f 353/393/74 358/376/74 357/375/74 +f 359/374/79 358/376/79 363/398/79 +f 364/399/71 363/398/71 371/401/71 +f 362/403/74 370/417/74 368/404/74 +f 353/407/74 365/861/74 371/401/74 +f 356/408/73 367/414/73 369/409/73 +f 364/399/73 372/402/73 366/411/73 +f 356/408/71 355/862/71 368/413/71 +f 354/412/72 366/411/72 365/415/72 +f 361/410/72 369/409/72 370/417/72 +f 360/395/80 361/410/80 362/403/80 +f 375/418/74 376/424/74 374/419/74 +f 379/421/73 380/427/73 377/422/73 +f 376/424/76 380/427/76 379/421/76 +f 373/425/75 378/423/75 377/422/75 +f 378/423/81 383/432/81 384/430/81 +f 383/432/71 391/445/71 392/433/71 +f 382/434/75 390/455/75 388/435/75 +f 399/438/76 400/459/76 397/439/76 +f 395/441/75 396/456/75 394/442/75 +f 373/444/75 385/863/75 391/445/75 +f 376/446/76 387/452/76 389/447/76 +f 384/430/76 392/433/76 386/449/76 +f 375/451/71 388/864/71 387/452/71 +f 373/453/72 374/450/72 386/449/72 +f 382/434/72 381/448/72 389/447/72 +f 377/422/82 380/427/82 381/448/82 +f 396/456/74 400/459/74 399/438/74 +f 393/457/73 398/440/73 397/439/73 +f 398/440/83 403/471/83 404/462/83 +f 404/462/71 403/471/71 411/464/71 +f 402/466/73 410/481/73 408/467/73 +f 393/470/73 405/865/73 411/464/73 +f 396/472/74 407/478/74 409/473/74 +f 404/462/74 412/465/74 406/475/74 +f 396/472/71 395/866/71 408/477/71 +f 394/476/72 406/475/72 405/479/72 +f 401/474/72 409/473/72 410/481/72 +f 400/459/84 401/474/84 402/466/84 +f 447/482/71 446/867/71 459/483/71 +f 446/867/71 445/868/71 459/483/71 +f 445/868/71 460/869/71 459/483/71 +f 459/483/71 458/870/71 457/871/71 +f 457/871/71 456/872/71 455/484/71 +f 455/484/71 454/873/71 453/874/71 +f 453/874/71 452/875/71 455/484/71 +f 452/875/71 451/876/71 455/484/71 +f 451/876/71 450/877/71 449/878/71 +f 449/878/71 448/879/71 447/482/71 +f 459/483/71 457/871/71 455/484/71 +f 451/876/71 449/878/71 455/484/71 +f 449/878/71 447/482/71 455/484/71 +f 429/485/72 430/880/72 433/486/72 +f 430/880/72 431/881/72 433/486/72 +f 431/881/72 432/882/72 433/486/72 +f 433/486/72 434/883/72 435/884/72 +f 435/884/72 436/885/72 433/486/72 +f 436/885/72 437/487/72 433/486/72 +f 437/487/72 438/886/72 439/887/72 +f 439/887/72 440/888/72 441/889/72 +f 441/889/72 442/890/72 443/891/72 +f 443/891/72 444/892/72 429/485/72 +f 437/487/72 439/887/72 429/485/72 +f 439/887/72 441/889/72 429/485/72 +f 441/889/72 443/891/72 429/485/72 +f 493/490/72 494/893/72 495/894/72 +f 495/894/72 496/895/72 497/896/72 +f 497/896/72 498/897/72 499/898/72 +f 499/898/72 500/899/72 501/488/72 +f 501/488/72 502/900/72 505/489/72 +f 502/900/72 503/901/72 505/489/72 +f 503/901/72 504/902/72 505/489/72 +f 505/489/72 506/903/72 507/904/72 +f 507/904/72 508/905/72 505/489/72 +f 508/905/72 493/490/72 505/489/72 +f 493/490/72 495/894/72 497/896/72 +f 497/896/72 499/898/72 493/490/72 +f 499/898/72 501/488/72 493/490/72 +f 511/493/71 510/906/71 509/907/71 +f 509/907/71 524/908/71 511/493/71 +f 524/908/71 523/909/71 511/493/71 +f 523/909/71 522/910/71 521/911/71 +f 521/911/71 520/912/71 519/491/71 +f 519/491/71 518/913/71 515/492/71 +f 518/913/71 517/914/71 515/492/71 +f 517/914/71 516/915/71 515/492/71 +f 515/492/71 514/916/71 513/917/71 +f 513/917/71 512/918/71 511/493/71 +f 523/909/71 521/911/71 511/493/71 +f 521/911/71 519/491/71 511/493/71 +f 515/492/71 513/917/71 511/493/71 +f 547/504/75 541/506/75 544/497/75 +f 544/497/75 549/919/75 550/498/75 +f 546/499/75 547/504/75 544/497/75 +f 553/494/73 545/502/73 551/500/73 +f 551/500/73 555/920/73 556/501/73 +f 552/495/73 553/494/73 551/500/73 +f 563/518/76 557/520/76 560/511/76 +f 560/511/76 565/921/76 566/512/76 +f 562/513/76 563/518/76 560/511/76 +f 569/508/74 561/516/74 567/514/74 +f 567/514/74 571/922/74 572/515/74 +f 568/509/74 569/508/74 567/514/74 +f 574/522/85 590/923/85 589/523/85 +f 580/525/85 573/524/85 589/526/85 +f 578/528/85 579/537/85 595/529/85 +f 577/531/85 593/924/85 592/532/85 +f 575/534/85 591/925/85 590/535/85 +f 580/525/85 596/926/85 595/536/85 +f 578/528/85 594/927/85 593/538/85 +f 575/534/85 576/533/85 592/540/85 +f 598/542/85 597/928/85 599/543/85 +f 599/543/85 600/929/85 601/544/85 +f 601/544/85 602/930/85 603/931/85 +f 603/931/85 604/932/85 601/544/85 +f 604/932/85 598/542/85 601/544/85 +f 607/545/71 608/555/71 606/546/71 +f 611/548/86 612/552/86 609/549/86 +f 606/551/87 608/555/87 612/552/87 +f 605/554/88 610/933/88 609/549/88 +f 607/545/89 609/549/89 612/552/89 +f 606/551/85 611/553/85 610/556/85 +f 615/558/71 616/564/71 614/559/71 +f 620/561/72 624/584/72 623/562/72 +f 616/564/87 620/561/87 619/563/87 +f 613/565/88 618/577/88 617/566/88 +f 615/568/89 617/579/89 620/569/89 +f 614/571/85 619/580/85 618/572/85 +f 621/574/89 625/934/89 628/575/89 +f 618/577/72 622/586/72 621/578/72 +f 617/579/72 621/574/72 624/576/72 +f 619/580/72 623/582/72 622/581/72 +f 623/582/85 627/935/85 626/583/85 +f 624/584/87 628/936/87 627/585/87 +f 622/586/88 626/937/88 625/587/88 +f 635/588/72 636/592/72 633/589/72 +f 631/591/89 633/589/89 636/592/89 +f 630/594/85 635/588/85 634/590/85 +f 632/596/87 636/592/87 635/588/87 +f 629/598/88 634/590/88 633/589/88 +f 639/600/71 640/606/71 638/601/71 +f 643/603/90 644/608/90 641/604/90 +f 640/606/87 644/608/87 643/603/87 +f 639/607/89 641/938/89 644/608/89 +f 637/609/85 638/601/85 643/603/85 +f 647/611/71 648/939/71 646/612/71 +f 651/614/91 652/940/91 649/615/91 +f 648/617/89 647/611/89 649/615/89 +f 646/619/85 651/941/85 650/616/85 +f 645/613/88 650/616/88 649/615/88 +f 702/620/72 704/632/72 703/621/72 +f 705/623/71 708/631/71 707/624/71 +f 707/628/89 718/650/89 717/629/89 +f 702/620/87 707/624/87 708/631/87 +f 703/621/88 705/626/88 706/633/88 +f 704/632/92 715/653/92 716/634/92 +f 714/635/88 725/942/88 727/636/88 +f 713/640/89 726/647/89 725/641/89 +f 705/643/85 720/943/85 719/644/85 +f 709/646/87 728/660/87 726/647/87 +f 701/622/93 711/657/93 712/649/93 +f 712/649/87 722/659/87 718/650/87 +f 716/634/88 724/654/88 720/651/88 +f 715/653/89 723/658/89 724/654/89 +f 706/655/88 717/944/88 721/656/88 +f 708/645/87 719/644/87 723/658/87 +f 711/657/85 721/656/85 722/659/85 +f 710/637/85 727/636/85 728/660/85 +f 732/661/88 733/945/88 735/662/88 +f 731/664/89 734/668/89 733/665/89 +f 729/667/87 736/669/87 734/668/87 +f 730/663/85 735/662/85 736/669/85 +f 740/670/88 741/946/88 743/671/88 +f 739/673/89 742/677/89 741/674/89 +f 737/676/87 744/678/87 742/677/87 +f 738/672/85 743/671/85 744/678/85 +f 923/679/71 924/685/71 922/680/71 +f 928/682/72 932/705/72 931/683/72 +f 924/685/87 928/682/87 927/684/87 +f 921/686/88 926/698/88 925/687/88 +f 923/689/89 925/700/89 928/690/89 +f 922/692/85 927/701/85 926/693/85 +f 929/695/89 933/947/89 936/696/89 +f 926/698/72 930/707/72 929/699/72 +f 925/700/72 929/695/72 932/697/72 +f 927/701/72 931/703/72 930/702/72 +f 931/703/85 935/948/85 934/704/85 +f 932/705/87 936/949/87 935/706/87 +f 930/707/88 934/950/88 933/708/88 +f 939/951/71 938/952/71 937/953/71 +f 937/953/71 952/954/71 939/951/71 +f 952/954/71 951/709/71 939/951/71 +f 951/709/71 950/955/71 947/710/71 +f 950/955/71 949/956/71 947/710/71 +f 949/956/71 948/957/71 947/710/71 +f 947/710/71 946/958/71 943/711/71 +f 946/958/71 945/959/71 943/711/71 +f 945/959/71 944/960/71 943/711/71 +f 943/711/71 942/961/71 941/962/71 +f 941/962/71 940/963/71 939/951/71 +f 943/711/71 941/962/71 939/951/71 +f 939/951/71 951/709/71 943/711/71 +f 953/714/72 954/964/72 955/965/72 +f 955/965/72 956/966/72 957/967/72 +f 957/967/72 958/968/72 959/969/72 +f 959/969/72 960/970/72 961/712/72 +f 961/712/72 962/971/72 965/713/72 +f 962/971/72 963/972/72 965/713/72 +f 963/972/72 964/973/72 965/713/72 +f 965/713/72 966/974/72 953/714/72 +f 966/974/72 967/975/72 953/714/72 +f 967/975/72 968/976/72 953/714/72 +f 953/714/72 955/965/72 957/967/72 +f 957/967/72 959/969/72 961/712/72 +f 953/714/72 957/967/72 961/712/72 +f 970/715/87 972/727/87 971/716/87 +f 973/718/88 976/726/88 975/719/88 +f 975/723/89 986/745/89 985/724/89 +f 970/715/71 975/719/71 976/726/71 +f 971/716/72 973/721/72 974/728/72 +f 972/727/75 983/748/75 984/729/75 +f 982/730/72 993/977/72 995/731/72 +f 981/735/89 994/742/89 993/736/89 +f 973/738/85 988/978/85 987/739/85 +f 977/741/71 996/755/71 994/742/71 +f 969/717/74 979/752/74 980/744/74 +f 980/744/71 990/754/71 986/745/71 +f 984/729/72 992/749/72 988/746/72 +f 983/748/89 991/753/89 992/749/89 +f 974/750/72 985/979/72 989/751/72 +f 976/740/71 987/739/71 991/753/71 +f 979/752/85 989/751/85 990/754/85 +f 978/732/85 995/731/85 996/755/85 +f 1000/756/72 1001/980/72 1003/757/72 +f 999/759/89 1002/763/89 1001/760/89 +f 997/762/71 1004/764/71 1002/763/71 +f 998/758/85 1003/757/85 1004/764/85 +f 1008/765/72 1009/981/72 1011/766/72 +f 1007/768/89 1010/772/89 1009/769/89 +f 1005/771/71 1012/773/71 1010/772/71 +f 1006/767/85 1011/766/85 1012/773/85 +f 1014/774/88 1016/786/88 1015/775/88 +f 1017/777/87 1020/785/87 1019/778/87 +f 1019/782/89 1030/804/89 1029/783/89 +f 1014/774/72 1019/778/72 1020/785/72 +f 1015/775/71 1017/780/71 1018/787/71 +f 1016/786/73 1027/807/73 1028/788/73 +f 1026/789/71 1037/982/71 1039/790/71 +f 1025/794/89 1038/801/89 1037/795/89 +f 1017/797/85 1032/983/85 1031/798/85 +f 1021/800/72 1040/814/72 1038/801/72 +f 1013/776/76 1023/811/76 1024/803/76 +f 1024/803/72 1034/813/72 1030/804/72 +f 1028/788/71 1036/808/71 1032/805/71 +f 1027/807/89 1035/812/89 1036/808/89 +f 1018/809/71 1029/984/71 1033/810/71 +f 1020/799/72 1031/798/72 1035/812/72 +f 1023/811/85 1033/810/85 1034/813/85 +f 1022/791/85 1039/790/85 1040/814/85 +f 1044/815/71 1045/985/71 1047/816/71 +f 1043/818/89 1046/822/89 1045/819/89 +f 1041/821/72 1048/823/72 1046/822/72 +f 1042/817/85 1047/816/85 1048/823/85 +f 1052/824/71 1053/986/71 1055/825/71 +f 1051/827/89 1054/831/89 1053/828/89 +f 1049/830/72 1056/832/72 1054/831/72 +f 1050/826/85 1055/825/85 1056/832/85 +s 1 +f 283/987/75 298/988/94 282/989/94 +f 276/990/95 291/991/76 275/992/76 +f 284/993/96 299/994/75 283/987/75 +f 277/995/85 292/996/95 276/990/95 +f 270/997/97 285/998/89 269/999/89 +f 269/999/89 300/1000/96 284/993/96 +f 278/1001/98 293/1002/85 277/995/85 +f 271/1003/73 286/1004/97 270/997/97 +f 279/1005/74 294/1006/98 278/1001/98 +f 272/1007/99 287/1008/73 271/1003/73 +f 280/1009/100 295/1010/74 279/1005/74 +f 273/1011/88 288/1012/99 272/1007/99 +f 281/1013/87 296/1014/100 280/1009/100 +f 274/1015/101 289/1016/88 273/1017/88 +f 282/989/94 297/1018/87 281/1013/87 +f 275/992/76 290/1019/101 274/1015/101 +f 315/1020/75 330/1021/94 314/1022/94 +f 308/1023/95 323/1024/76 307/1025/76 +f 316/1026/96 331/1027/75 315/1020/75 +f 309/1028/85 324/1029/95 308/1023/95 +f 302/1030/97 317/1031/89 301/1032/89 +f 301/1032/89 332/1033/96 316/1026/96 +f 310/1034/98 325/1035/85 309/1028/85 +f 303/1036/73 318/1037/97 302/1030/97 +f 311/1038/74 326/1039/98 310/1034/98 +f 304/1040/99 319/1041/73 303/1036/73 +f 312/1042/100 327/1043/74 311/1038/74 +f 305/1044/88 320/1045/99 304/1040/99 +f 313/1046/87 328/1047/100 312/1042/100 +f 306/1048/101 321/1049/88 305/1050/88 +f 314/1022/94 329/1051/87 313/1046/87 +f 307/1025/76 322/1052/101 306/1048/101 +f 427/1053/75 442/1054/94 426/1055/94 +f 420/1056/95 435/1057/76 419/1058/76 +f 428/1059/96 443/1060/75 427/1053/75 +f 421/1061/85 436/1062/95 420/1056/95 +f 414/1063/97 429/1064/89 413/1065/89 +f 413/1065/89 444/1066/96 428/1059/96 +f 422/1067/98 437/1068/85 421/1061/85 +f 415/1069/73 430/1070/97 414/1063/97 +f 423/1071/74 438/1072/98 422/1067/98 +f 416/1073/99 431/1074/73 415/1069/73 +f 424/1075/100 439/1076/74 423/1071/74 +f 417/1077/88 432/1078/99 416/1073/99 +f 425/1079/87 440/1080/100 424/1075/100 +f 418/1081/101 433/1082/88 417/1083/88 +f 426/1055/94 441/1084/87 425/1079/87 +f 419/1058/76 434/1085/101 418/1081/101 +f 459/1086/75 474/1087/94 458/1088/94 +f 452/1089/95 467/1090/76 451/1091/76 +f 460/1092/96 475/1093/75 459/1086/75 +f 453/1094/85 468/1095/95 452/1089/95 +f 446/1096/97 461/1097/89 445/1098/89 +f 445/1098/89 476/1099/96 460/1092/96 +f 454/1100/98 469/1101/85 453/1094/85 +f 447/1102/73 462/1103/97 446/1096/97 +f 455/1104/74 470/1105/98 454/1100/98 +f 448/1106/99 463/1107/73 447/1102/73 +f 456/1108/100 471/1109/74 455/1104/74 +f 449/1110/88 464/1111/99 448/1106/99 +f 457/1112/87 472/1113/100 456/1108/100 +f 450/1114/101 465/1115/88 449/1116/88 +f 458/1088/94 473/1117/87 457/1112/87 +f 451/1091/76 466/1118/101 450/1114/101 +f 488/1119/100 503/1120/74 487/1121/74 +f 481/1122/88 496/1123/99 480/1124/99 +f 489/1125/87 504/1126/100 488/1119/100 +f 482/1127/101 497/1128/88 481/1129/88 +f 490/1130/94 505/1131/87 489/1125/87 +f 483/1132/76 498/1133/101 482/1127/101 +f 491/1134/75 506/1135/94 490/1130/94 +f 484/1136/95 499/1137/76 483/1132/76 +f 492/1138/96 507/1139/75 491/1134/75 +f 485/1140/85 500/1141/95 484/1136/95 +f 478/1142/97 493/1143/89 477/1144/89 +f 477/1144/89 508/1145/96 492/1138/96 +f 486/1146/98 501/1147/85 485/1140/85 +f 479/1148/73 494/1149/97 478/1142/97 +f 487/1121/74 502/1150/98 486/1146/98 +f 480/1124/99 495/1151/73 479/1148/73 +f 520/1152/100 535/1153/74 519/1154/74 +f 513/1155/88 528/1156/99 512/1157/99 +f 521/1158/87 536/1159/100 520/1152/100 +f 514/1160/101 529/1161/88 513/1162/88 +f 522/1163/94 537/1164/87 521/1158/87 +f 515/1165/76 530/1166/101 514/1160/101 +f 523/1167/75 538/1168/94 522/1163/94 +f 516/1169/95 531/1170/76 515/1165/76 +f 524/1171/96 539/1172/75 523/1167/75 +f 517/1173/85 532/1174/95 516/1169/95 +f 510/1175/97 525/1176/89 509/1177/89 +f 509/1177/89 540/1178/96 524/1171/96 +f 518/1179/98 533/1180/85 517/1173/85 +f 511/1181/73 526/1182/97 510/1175/97 +f 519/1154/74 534/1183/98 518/1179/98 +f 512/1157/99 527/1184/73 511/1181/73 +f 581/1185/72 574/522/91 573/524/72 +f 588/1186/90 573/524/72 580/525/90 +f 586/1187/102 579/537/87 578/528/102 +f 584/1188/103 577/531/71 576/533/103 +f 582/1189/91 575/534/88 574/522/91 +f 587/1190/87 580/525/90 579/537/87 +f 585/1191/71 578/528/102 577/539/71 +f 583/1192/88 576/533/103 575/534/88 +f 589/526/72 604/1193/90 596/527/90 +f 595/529/87 602/1194/102 594/530/102 +f 593/924/71 600/1195/103 592/532/103 +f 591/925/88 597/1196/91 590/535/91 +f 596/926/90 603/1197/87 595/536/87 +f 594/927/102 601/1198/71 593/538/71 +f 592/540/103 599/1199/88 591/541/88 +f 590/923/91 598/1200/72 589/523/72 +f 685/1201/104 700/1202/105 693/1203/104 +f 686/1204/73 693/1205/104 694/1206/73 +f 695/1207/106 686/1208/73 694/1209/73 +f 688/1210/92 695/1211/106 696/1212/92 +f 689/1213/107 696/1214/92 697/1215/107 +f 698/1216/75 689/1217/107 697/1218/107 +f 691/1219/108 698/1220/75 699/1221/108 +f 700/1222/105 691/1223/108 699/1224/108 +f 678/1225/91 676/1226/72 677/1227/72 +f 679/1228/88 675/1229/91 678/1225/91 +f 680/1230/103 674/1231/88 679/1228/88 +f 681/1232/71 673/1233/103 680/1230/103 +f 682/1234/102 672/1235/71 681/1236/71 +f 683/1237/87 671/1238/102 682/1234/102 +f 684/1239/90 670/1240/87 683/1237/87 +f 677/1227/72 669/1241/90 684/1239/90 +f 666/1242/74 659/1243/109 667/1244/109 +f 666/1245/74 657/1246/110 658/1247/74 +f 664/1248/93 657/1249/110 665/1250/110 +f 664/1251/93 655/1252/111 656/1253/93 +f 663/1254/111 654/1255/76 655/1256/111 +f 661/1257/112 654/1258/76 662/1259/76 +f 661/1260/112 660/1261/113 653/1262/112 +f 668/1263/113 659/1264/109 660/1265/113 +f 671/1238/109 662/1266/74 663/1254/109 +f 672/1235/113 663/1267/109 664/1251/113 +f 672/1268/113 665/1250/112 673/1233/112 +f 674/1231/76 665/1269/112 666/1245/76 +f 674/1231/76 667/1244/111 675/1229/111 +f 675/1229/111 668/1263/93 676/1226/93 +f 676/1226/93 661/1260/110 669/1241/110 +f 669/1241/110 662/1259/74 670/1240/74 +f 694/1206/75 684/1239/107 683/1237/75 +f 693/1203/107 677/1227/92 684/1239/107 +f 700/1222/92 678/1225/106 677/1227/92 +f 699/1221/106 679/1228/73 678/1225/106 +f 679/1228/73 697/1218/104 680/1230/104 +f 680/1230/104 696/1214/105 681/1232/105 +f 696/1212/105 682/1234/108 681/1236/105 +f 682/1234/108 694/1209/75 683/1237/75 +f 785/1270/104 784/1271/105 792/1272/105 +f 778/1273/73 785/1274/104 786/1275/73 +f 787/1276/106 778/1277/73 786/1278/73 +f 788/1279/92 779/1280/106 787/1281/106 +f 781/1282/107 788/1283/92 789/1284/107 +f 790/1285/75 781/1286/107 789/1287/107 +f 783/1288/108 790/1289/75 791/1290/108 +f 792/1291/105 783/1292/108 791/1293/108 +f 770/1294/91 768/1295/72 769/1296/72 +f 771/1297/88 767/1298/91 770/1294/91 +f 772/1299/103 766/1300/88 771/1297/88 +f 773/1301/71 765/1302/103 772/1299/103 +f 774/1303/102 764/1304/71 773/1305/71 +f 775/1306/87 763/1307/102 774/1303/102 +f 776/1308/90 762/1309/87 775/1306/87 +f 769/1296/72 761/1310/90 776/1308/90 +f 758/1311/74 751/1312/109 759/1313/109 +f 758/1314/74 749/1315/110 750/1316/74 +f 756/1317/93 749/1318/110 757/1319/110 +f 756/1320/93 747/1321/111 748/1322/93 +f 755/1323/111 746/1324/76 747/1325/111 +f 753/1326/112 746/1327/76 754/1328/76 +f 760/1329/113 745/1330/112 753/1331/112 +f 760/1332/113 751/1333/109 752/1334/113 +f 762/1309/74 755/1323/109 763/1307/109 +f 764/1304/113 755/1335/109 756/1320/113 +f 765/1302/112 756/1317/113 757/1319/112 +f 765/1302/112 758/1314/76 766/1300/76 +f 766/1300/76 759/1313/111 767/1298/111 +f 767/1298/111 760/1332/93 768/1295/93 +f 768/1295/93 753/1331/110 761/1310/110 +f 761/1310/110 754/1328/74 762/1309/74 +f 786/1275/75 776/1308/107 775/1306/75 +f 785/1270/107 769/1296/92 776/1308/107 +f 792/1291/92 770/1294/106 769/1296/92 +f 791/1290/106 771/1297/73 770/1294/106 +f 771/1297/73 789/1287/104 772/1299/104 +f 772/1299/104 788/1283/105 773/1301/105 +f 773/1305/105 787/1281/108 774/1303/108 +f 774/1303/108 786/1278/75 775/1306/75 +f 825/1336/104 840/1337/105 833/1338/104 +f 826/1339/73 833/1340/104 834/1341/73 +f 835/1342/106 826/1343/73 834/1344/73 +f 828/1345/92 835/1346/106 836/1347/92 +f 829/1348/107 836/1349/92 837/1350/107 +f 838/1351/75 829/1352/107 837/1353/107 +f 831/1354/108 838/1355/75 839/1356/108 +f 840/1357/105 831/1358/108 839/1359/108 +f 818/1360/91 816/1361/72 817/1362/72 +f 819/1363/88 815/1364/91 818/1360/91 +f 820/1365/103 814/1366/88 819/1363/88 +f 821/1367/71 813/1368/103 820/1365/103 +f 822/1369/102 812/1370/71 821/1371/71 +f 823/1372/87 811/1373/102 822/1369/102 +f 824/1374/90 810/1375/87 823/1372/87 +f 817/1362/72 809/1376/90 824/1374/90 +f 806/1377/74 799/1378/109 807/1379/109 +f 806/1380/74 797/1381/110 798/1382/74 +f 804/1383/93 797/1384/110 805/1385/110 +f 803/1386/111 796/1387/93 804/1388/93 +f 803/1389/111 794/1390/76 795/1391/111 +f 801/1392/112 794/1393/76 802/1394/76 +f 801/1395/112 800/1396/113 793/1397/112 +f 808/1398/113 799/1399/109 800/1400/113 +f 811/1373/109 802/1401/74 803/1389/109 +f 811/1373/109 804/1388/113 812/1370/113 +f 813/1368/112 804/1383/113 805/1385/112 +f 813/1368/112 806/1380/76 814/1366/76 +f 814/1366/76 807/1379/111 815/1364/111 +f 815/1364/111 808/1398/93 816/1361/93 +f 809/1376/110 808/1402/93 801/1395/110 +f 809/1376/110 802/1394/74 810/1375/74 +f 834/1341/75 824/1374/107 823/1372/75 +f 833/1338/107 817/1362/92 824/1374/107 +f 840/1357/92 818/1360/106 817/1362/92 +f 839/1356/106 819/1363/73 818/1360/106 +f 819/1363/73 837/1353/104 820/1365/104 +f 820/1365/104 836/1349/105 821/1367/105 +f 836/1347/105 822/1369/108 821/1371/105 +f 822/1369/108 834/1344/75 823/1372/75 +f 881/1403/104 880/1404/105 888/1405/105 +f 874/1406/73 881/1407/104 882/1408/73 +f 883/1409/106 874/1410/73 882/1411/73 +f 884/1412/92 875/1413/106 883/1414/106 +f 877/1415/107 884/1416/92 885/1417/107 +f 886/1418/75 877/1419/107 885/1420/107 +f 879/1421/108 886/1422/75 887/1423/108 +f 880/1424/105 887/1425/108 888/1426/105 +f 866/1427/91 864/1428/72 865/1429/72 +f 867/1430/88 863/1431/91 866/1427/91 +f 868/1432/103 862/1433/88 867/1430/88 +f 869/1434/71 861/1435/103 868/1432/103 +f 870/1436/102 860/1437/71 869/1438/71 +f 871/1439/87 859/1440/102 870/1436/102 +f 872/1441/90 858/1442/87 871/1439/87 +f 865/1429/72 857/1443/90 872/1441/90 +f 854/1444/74 847/1445/109 855/1446/109 +f 853/1447/110 846/1448/74 854/1449/74 +f 852/1450/93 845/1451/110 853/1452/110 +f 852/1453/93 843/1454/111 844/1455/93 +f 851/1456/111 842/1457/76 843/1458/111 +f 849/1459/112 842/1460/76 850/1461/76 +f 849/1462/112 848/1463/113 841/1464/112 +f 856/1465/113 847/1466/109 848/1467/113 +f 858/1442/74 851/1456/109 859/1440/109 +f 860/1437/113 851/1468/109 852/1453/113 +f 861/1435/112 852/1450/113 853/1452/112 +f 861/1435/112 854/1449/76 862/1433/76 +f 862/1433/76 855/1446/111 863/1431/111 +f 863/1431/111 856/1465/93 864/1428/93 +f 857/1443/110 856/1469/93 849/1462/110 +f 857/1443/110 850/1461/74 858/1442/74 +f 882/1408/75 872/1441/107 871/1439/75 +f 881/1403/107 865/1429/92 872/1441/107 +f 888/1426/92 866/1427/106 865/1429/92 +f 887/1423/106 867/1430/73 866/1427/106 +f 867/1430/73 885/1420/104 868/1432/104 +f 868/1432/104 884/1416/105 869/1434/105 +f 884/1412/105 870/1436/108 869/1438/105 +f 870/1436/108 882/1411/75 871/1439/75 +f 914/1470/91 912/1471/72 913/1472/72 +f 915/1473/88 911/1474/91 914/1470/91 +f 916/1475/103 910/1476/88 915/1473/88 +f 917/1477/71 909/1478/103 916/1475/103 +f 918/1479/102 908/1480/71 917/1481/71 +f 919/1482/87 907/1483/102 918/1479/102 +f 920/1484/90 906/1485/87 919/1482/87 +f 913/1472/72 905/1486/90 920/1484/90 +f 902/1487/74 895/1488/109 903/1489/109 +f 902/1490/74 893/1491/110 894/1492/74 +f 900/1493/93 893/1494/110 901/1495/110 +f 900/1496/93 891/1497/111 892/1498/93 +f 899/1499/111 890/1500/76 891/1501/111 +f 897/1502/112 890/1503/76 898/1504/76 +f 897/1505/112 896/1506/113 889/1507/112 +f 904/1508/113 895/1509/109 896/1510/113 +f 907/1483/109 898/1511/74 899/1499/109 +f 907/1483/109 900/1496/113 908/1480/113 +f 909/1478/112 900/1493/113 901/1495/112 +f 910/1476/76 901/1512/112 902/1490/76 +f 911/1474/111 902/1487/76 903/1489/111 +f 911/1474/111 904/1508/93 912/1471/93 +f 905/1486/110 904/1513/93 897/1505/110 +f 905/1486/110 898/1504/74 906/1485/74 +f 951/1514/75 966/1515/94 950/1516/94 +f 944/1517/95 959/1518/76 943/1519/76 +f 952/1520/96 967/1521/75 951/1514/75 +f 945/1522/85 960/1523/95 944/1517/95 +f 938/1524/97 953/1525/89 937/1526/89 +f 937/1526/89 968/1527/96 952/1520/96 +f 946/1528/98 961/1529/85 945/1522/85 +f 939/1530/73 954/1531/97 938/1524/97 +f 947/1532/74 962/1533/98 946/1528/98 +f 940/1534/99 955/1535/73 939/1530/73 +f 948/1536/100 963/1537/74 947/1532/74 +f 941/1538/88 956/1539/99 940/1534/99 +f 949/1540/87 964/1541/100 948/1536/100 +f 942/1542/101 957/1543/88 941/1544/88 +f 950/1516/94 965/1545/87 949/1540/87 +f 943/1519/76 958/1546/101 942/1542/101 +f 283/987/75 299/994/75 298/988/94 +f 276/990/95 292/996/95 291/991/76 +f 284/993/96 300/1000/96 299/994/75 +f 277/995/85 293/1002/85 292/996/95 +f 270/997/97 286/1004/97 285/998/89 +f 269/999/89 285/998/89 300/1000/96 +f 278/1001/98 294/1006/98 293/1002/85 +f 271/1003/73 287/1008/73 286/1004/97 +f 279/1005/74 295/1010/74 294/1006/98 +f 272/1007/99 288/1012/99 287/1008/73 +f 280/1009/100 296/1014/100 295/1010/74 +f 273/1011/88 289/1547/88 288/1012/99 +f 281/1013/87 297/1018/87 296/1014/100 +f 274/1015/101 290/1019/101 289/1016/88 +f 282/989/94 298/988/94 297/1018/87 +f 275/992/76 291/991/76 290/1019/101 +f 315/1020/75 331/1027/75 330/1021/94 +f 308/1023/95 324/1029/95 323/1024/76 +f 316/1026/96 332/1033/96 331/1027/75 +f 309/1028/85 325/1035/85 324/1029/95 +f 302/1030/97 318/1037/97 317/1031/89 +f 301/1032/89 317/1031/89 332/1033/96 +f 310/1034/98 326/1039/98 325/1035/85 +f 303/1036/73 319/1041/73 318/1037/97 +f 311/1038/74 327/1043/74 326/1039/98 +f 304/1040/99 320/1045/99 319/1041/73 +f 312/1042/100 328/1047/100 327/1043/74 +f 305/1044/88 321/1548/88 320/1045/99 +f 313/1046/87 329/1051/87 328/1047/100 +f 306/1048/101 322/1052/101 321/1049/88 +f 314/1022/94 330/1021/94 329/1051/87 +f 307/1025/76 323/1024/76 322/1052/101 +f 427/1053/75 443/1060/75 442/1054/94 +f 420/1056/95 436/1062/95 435/1057/76 +f 428/1059/96 444/1066/96 443/1060/75 +f 421/1061/85 437/1068/85 436/1062/95 +f 414/1063/97 430/1070/97 429/1064/89 +f 413/1065/89 429/1064/89 444/1066/96 +f 422/1067/98 438/1072/98 437/1068/85 +f 415/1069/73 431/1074/73 430/1070/97 +f 423/1071/74 439/1076/74 438/1072/98 +f 416/1073/99 432/1078/99 431/1074/73 +f 424/1075/100 440/1080/100 439/1076/74 +f 417/1077/88 433/1549/88 432/1078/99 +f 425/1079/87 441/1084/87 440/1080/100 +f 418/1081/101 434/1085/101 433/1082/88 +f 426/1055/94 442/1054/94 441/1084/87 +f 419/1058/76 435/1057/76 434/1085/101 +f 459/1086/75 475/1093/75 474/1087/94 +f 452/1089/95 468/1095/95 467/1090/76 +f 460/1092/96 476/1099/96 475/1093/75 +f 453/1094/85 469/1101/85 468/1095/95 +f 446/1096/97 462/1103/97 461/1097/89 +f 445/1098/89 461/1097/89 476/1099/96 +f 454/1100/98 470/1105/98 469/1101/85 +f 447/1102/73 463/1107/73 462/1103/97 +f 455/1104/74 471/1109/74 470/1105/98 +f 448/1106/99 464/1111/99 463/1107/73 +f 456/1108/100 472/1113/100 471/1109/74 +f 449/1110/88 465/1550/88 464/1111/99 +f 457/1112/87 473/1117/87 472/1113/100 +f 450/1114/101 466/1118/101 465/1115/88 +f 458/1088/94 474/1087/94 473/1117/87 +f 451/1091/76 467/1090/76 466/1118/101 +f 488/1119/100 504/1126/100 503/1120/74 +f 481/1122/88 497/1551/88 496/1123/99 +f 489/1125/87 505/1131/87 504/1126/100 +f 482/1127/101 498/1133/101 497/1128/88 +f 490/1130/94 506/1135/94 505/1131/87 +f 483/1132/76 499/1137/76 498/1133/101 +f 491/1134/75 507/1139/75 506/1135/94 +f 484/1136/95 500/1141/95 499/1137/76 +f 492/1138/96 508/1145/96 507/1139/75 +f 485/1140/85 501/1147/85 500/1141/95 +f 478/1142/97 494/1149/97 493/1143/89 +f 477/1144/89 493/1143/89 508/1145/96 +f 486/1146/98 502/1150/98 501/1147/85 +f 479/1148/73 495/1151/73 494/1149/97 +f 487/1121/74 503/1120/74 502/1150/98 +f 480/1124/99 496/1123/99 495/1151/73 +f 520/1152/100 536/1159/100 535/1153/74 +f 513/1155/88 529/1552/88 528/1156/99 +f 521/1158/87 537/1164/87 536/1159/100 +f 514/1160/101 530/1166/101 529/1161/88 +f 522/1163/94 538/1168/94 537/1164/87 +f 515/1165/76 531/1170/76 530/1166/101 +f 523/1167/75 539/1172/75 538/1168/94 +f 516/1169/95 532/1174/95 531/1170/76 +f 524/1171/96 540/1178/96 539/1172/75 +f 517/1173/85 533/1180/85 532/1174/95 +f 510/1175/97 526/1182/97 525/1176/89 +f 509/1177/89 525/1176/89 540/1178/96 +f 518/1179/98 534/1183/98 533/1180/85 +f 511/1181/73 527/1184/73 526/1182/97 +f 519/1154/74 535/1153/74 534/1183/98 +f 512/1157/99 528/1156/99 527/1184/73 +f 581/1185/72 582/1189/91 574/522/91 +f 588/1186/90 581/1185/72 573/524/72 +f 586/1187/102 587/1190/87 579/537/87 +f 584/1188/103 585/1553/71 577/531/71 +f 582/1189/91 583/1192/88 575/534/88 +f 587/1190/87 588/1186/90 580/525/90 +f 585/1191/71 586/1187/102 578/528/102 +f 583/1192/88 584/1188/103 576/533/103 +f 589/526/72 598/1554/72 604/1193/90 +f 595/529/87 603/1555/87 602/1194/102 +f 593/924/71 601/1556/71 600/1195/103 +f 591/925/88 599/1557/88 597/1196/91 +f 596/926/90 604/1558/90 603/1197/87 +f 594/927/102 602/1559/102 601/1198/71 +f 592/540/103 600/1560/103 599/1199/88 +f 590/923/91 597/1561/91 598/1200/72 +f 685/1201/104 692/1562/105 700/1202/105 +f 686/1204/73 685/1563/104 693/1205/104 +f 695/1207/106 687/1564/106 686/1208/73 +f 688/1210/92 687/1565/106 695/1211/106 +f 689/1213/107 688/1566/92 696/1214/92 +f 698/1216/75 690/1567/75 689/1217/107 +f 691/1219/108 690/1568/75 698/1220/75 +f 700/1222/105 692/1569/105 691/1223/108 +f 678/1225/91 675/1229/91 676/1226/72 +f 679/1228/88 674/1231/88 675/1229/91 +f 680/1230/103 673/1233/103 674/1231/88 +f 681/1232/71 672/1268/71 673/1233/103 +f 682/1234/102 671/1238/102 672/1235/71 +f 683/1237/87 670/1240/87 671/1238/102 +f 684/1239/90 669/1241/90 670/1240/87 +f 677/1227/72 676/1226/72 669/1241/90 +f 666/1242/74 658/1570/74 659/1243/109 +f 666/1245/74 665/1269/110 657/1246/110 +f 664/1248/93 656/1571/93 657/1249/110 +f 664/1251/93 663/1267/111 655/1252/111 +f 663/1254/111 662/1266/76 654/1255/76 +f 661/1257/112 653/1572/112 654/1258/76 +f 661/1260/112 668/1573/113 660/1261/113 +f 668/1263/113 667/1574/109 659/1264/109 +f 671/1238/109 670/1240/74 662/1266/74 +f 672/1235/113 671/1238/109 663/1267/109 +f 672/1268/113 664/1248/113 665/1250/112 +f 674/1231/76 673/1233/112 665/1269/112 +f 674/1231/76 666/1242/76 667/1244/111 +f 675/1229/111 667/1574/111 668/1263/93 +f 676/1226/93 668/1573/93 661/1260/110 +f 669/1241/110 661/1257/110 662/1259/74 +f 694/1206/75 693/1205/107 684/1239/107 +f 693/1203/107 700/1202/92 677/1227/92 +f 700/1222/92 699/1224/106 678/1225/106 +f 699/1221/106 698/1220/73 679/1228/73 +f 679/1228/73 698/1216/73 697/1218/104 +f 680/1230/104 697/1215/104 696/1214/105 +f 696/1212/105 695/1211/108 682/1234/108 +f 682/1234/108 695/1207/108 694/1209/75 +f 785/1270/104 777/1575/104 784/1271/105 +f 778/1273/73 777/1576/104 785/1274/104 +f 787/1276/106 779/1577/106 778/1277/73 +f 788/1279/92 780/1578/92 779/1280/106 +f 781/1282/107 780/1579/92 788/1283/92 +f 790/1285/75 782/1580/75 781/1286/107 +f 783/1288/108 782/1581/75 790/1289/75 +f 792/1291/105 784/1582/105 783/1292/108 +f 770/1294/91 767/1298/91 768/1295/72 +f 771/1297/88 766/1300/88 767/1298/91 +f 772/1299/103 765/1302/103 766/1300/88 +f 773/1301/71 764/1583/71 765/1302/103 +f 774/1303/102 763/1307/102 764/1304/71 +f 775/1306/87 762/1309/87 763/1307/102 +f 776/1308/90 761/1310/90 762/1309/87 +f 769/1296/72 768/1295/72 761/1310/90 +f 758/1311/74 750/1584/74 751/1312/109 +f 758/1314/74 757/1585/110 749/1315/110 +f 756/1317/93 748/1586/93 749/1318/110 +f 756/1320/93 755/1335/111 747/1321/111 +f 755/1323/111 754/1587/76 746/1324/76 +f 753/1326/112 745/1588/112 746/1327/76 +f 760/1329/113 752/1589/113 745/1330/112 +f 760/1332/113 759/1590/109 751/1333/109 +f 762/1309/74 754/1587/74 755/1323/109 +f 764/1304/113 763/1307/109 755/1335/109 +f 765/1302/112 764/1583/113 756/1317/113 +f 765/1302/112 757/1585/112 758/1314/76 +f 766/1300/76 758/1311/76 759/1313/111 +f 767/1298/111 759/1590/111 760/1332/93 +f 768/1295/93 760/1329/93 753/1331/110 +f 761/1310/110 753/1326/110 754/1328/74 +f 786/1275/75 785/1274/107 776/1308/107 +f 785/1270/107 792/1272/92 769/1296/92 +f 792/1291/92 791/1293/106 770/1294/106 +f 791/1290/106 790/1289/73 771/1297/73 +f 771/1297/73 790/1285/73 789/1287/104 +f 772/1299/104 789/1284/104 788/1283/105 +f 773/1305/105 788/1279/105 787/1281/108 +f 774/1303/108 787/1276/108 786/1278/75 +f 825/1336/104 832/1591/105 840/1337/105 +f 826/1339/73 825/1592/104 833/1340/104 +f 835/1342/106 827/1593/106 826/1343/73 +f 828/1345/92 827/1594/106 835/1346/106 +f 829/1348/107 828/1595/92 836/1349/92 +f 838/1351/75 830/1596/75 829/1352/107 +f 831/1354/108 830/1597/75 838/1355/75 +f 840/1357/105 832/1598/105 831/1358/108 +f 818/1360/91 815/1364/91 816/1361/72 +f 819/1363/88 814/1366/88 815/1364/91 +f 820/1365/103 813/1368/103 814/1366/88 +f 821/1367/71 812/1599/71 813/1368/103 +f 822/1369/102 811/1373/102 812/1370/71 +f 823/1372/87 810/1375/87 811/1373/102 +f 824/1374/90 809/1376/90 810/1375/87 +f 817/1362/72 816/1361/72 809/1376/90 +f 806/1377/74 798/1600/74 799/1378/109 +f 806/1380/74 805/1601/110 797/1381/110 +f 804/1383/93 796/1602/93 797/1384/110 +f 803/1386/111 795/1603/111 796/1387/93 +f 803/1389/111 802/1401/76 794/1390/76 +f 801/1392/112 793/1604/112 794/1393/76 +f 801/1395/112 808/1402/113 800/1396/113 +f 808/1398/113 807/1605/109 799/1399/109 +f 811/1373/109 810/1375/74 802/1401/74 +f 811/1373/109 803/1386/109 804/1388/113 +f 813/1368/112 812/1599/113 804/1383/113 +f 813/1368/112 805/1601/112 806/1380/76 +f 814/1366/76 806/1377/76 807/1379/111 +f 815/1364/111 807/1605/111 808/1398/93 +f 809/1376/110 816/1361/93 808/1402/93 +f 809/1376/110 801/1392/110 802/1394/74 +f 834/1341/75 833/1340/107 824/1374/107 +f 833/1338/107 840/1337/92 817/1362/92 +f 840/1357/92 839/1359/106 818/1360/106 +f 839/1356/106 838/1355/73 819/1363/73 +f 819/1363/73 838/1351/73 837/1353/104 +f 820/1365/104 837/1350/104 836/1349/105 +f 836/1347/105 835/1346/108 822/1369/108 +f 822/1369/108 835/1342/108 834/1344/75 +f 881/1403/104 873/1606/104 880/1404/105 +f 874/1406/73 873/1607/104 881/1407/104 +f 883/1409/106 875/1608/106 874/1410/73 +f 884/1412/92 876/1609/92 875/1413/106 +f 877/1415/107 876/1610/92 884/1416/92 +f 886/1418/75 878/1611/75 877/1419/107 +f 879/1421/108 878/1612/75 886/1422/75 +f 880/1424/105 879/1613/108 887/1425/108 +f 866/1427/91 863/1431/91 864/1428/72 +f 867/1430/88 862/1433/88 863/1431/91 +f 868/1432/103 861/1435/103 862/1433/88 +f 869/1434/71 860/1614/71 861/1435/103 +f 870/1436/102 859/1440/102 860/1437/71 +f 871/1439/87 858/1442/87 859/1440/102 +f 872/1441/90 857/1443/90 858/1442/87 +f 865/1429/72 864/1428/72 857/1443/90 +f 854/1444/74 846/1615/74 847/1445/109 +f 853/1447/110 845/1616/110 846/1448/74 +f 852/1450/93 844/1617/93 845/1451/110 +f 852/1453/93 851/1468/111 843/1454/111 +f 851/1456/111 850/1618/76 842/1457/76 +f 849/1459/112 841/1619/112 842/1460/76 +f 849/1462/112 856/1469/113 848/1463/113 +f 856/1465/113 855/1620/109 847/1466/109 +f 858/1442/74 850/1618/74 851/1456/109 +f 860/1437/113 859/1440/109 851/1468/109 +f 861/1435/112 860/1614/113 852/1450/113 +f 861/1435/112 853/1447/112 854/1449/76 +f 862/1433/76 854/1444/76 855/1446/111 +f 863/1431/111 855/1620/111 856/1465/93 +f 857/1443/110 864/1428/93 856/1469/93 +f 857/1443/110 849/1459/110 850/1461/74 +f 882/1408/75 881/1407/107 872/1441/107 +f 881/1403/107 888/1405/92 865/1429/92 +f 888/1426/92 887/1425/106 866/1427/106 +f 887/1423/106 886/1422/73 867/1430/73 +f 867/1430/73 886/1418/73 885/1420/104 +f 868/1432/104 885/1417/104 884/1416/105 +f 884/1412/105 883/1414/108 870/1436/108 +f 870/1436/108 883/1409/108 882/1411/75 +f 914/1470/91 911/1474/91 912/1471/72 +f 915/1473/88 910/1476/88 911/1474/91 +f 916/1475/103 909/1478/103 910/1476/88 +f 917/1477/71 908/1621/71 909/1478/103 +f 918/1479/102 907/1483/102 908/1480/71 +f 919/1482/87 906/1485/87 907/1483/102 +f 920/1484/90 905/1486/90 906/1485/87 +f 913/1472/72 912/1471/72 905/1486/90 +f 902/1487/74 894/1622/74 895/1488/109 +f 902/1490/74 901/1512/110 893/1491/110 +f 900/1493/93 892/1623/93 893/1494/110 +f 900/1496/93 899/1624/111 891/1497/111 +f 899/1499/111 898/1511/76 890/1500/76 +f 897/1502/112 889/1625/112 890/1503/76 +f 897/1505/112 904/1513/113 896/1506/113 +f 904/1508/113 903/1626/109 895/1509/109 +f 907/1483/109 906/1485/74 898/1511/74 +f 907/1483/109 899/1624/109 900/1496/113 +f 909/1478/112 908/1621/113 900/1493/113 +f 910/1476/76 909/1478/112 901/1512/112 +f 911/1474/111 910/1476/76 902/1487/76 +f 911/1474/111 903/1626/111 904/1508/93 +f 905/1486/110 912/1471/93 904/1513/93 +f 905/1486/110 897/1502/110 898/1504/74 +f 951/1514/75 967/1521/75 966/1515/94 +f 944/1517/95 960/1523/95 959/1518/76 +f 952/1520/96 968/1527/96 967/1521/75 +f 945/1522/85 961/1529/85 960/1523/95 +f 938/1524/97 954/1531/97 953/1525/89 +f 937/1526/89 953/1525/89 968/1527/96 +f 946/1528/98 962/1533/98 961/1529/85 +f 939/1530/73 955/1535/73 954/1531/97 +f 947/1532/74 963/1537/74 962/1533/98 +f 940/1534/99 956/1539/99 955/1535/73 +f 948/1536/100 964/1541/100 963/1537/74 +f 941/1538/88 957/1627/88 956/1539/99 +f 949/1540/87 965/1545/87 964/1541/100 +f 942/1542/101 958/1546/101 957/1543/88 +f 950/1516/94 966/1515/94 965/1545/87 +f 943/1519/76 959/1518/76 958/1546/101 diff --git a/src/main/resources/assets/hbm/models/machines/industrial_boiler.obj b/src/main/resources/assets/hbm/models/machines/industrial_boiler.obj new file mode 100644 index 000000000..eb3fb03ef --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/industrial_boiler.obj @@ -0,0 +1,2900 @@ +# Blender v2.79 (sub 0) OBJ File: 'industrial_boiler.blend' +# www.blender.org +o Plane +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 0.250000 1.500000 +v 1.500000 0.250000 1.500000 +v -1.500000 0.250000 -1.500000 +v 1.500000 0.250000 -1.500000 +v -1.000000 0.250000 1.000000 +v 1.000000 0.250000 1.000000 +v -1.000000 0.250000 -1.000000 +v 1.000000 0.250000 -1.000000 +v -1.000000 1.250000 -1.000000 +v -1.000000 1.250000 1.000000 +v 1.000000 1.250000 1.000000 +v 1.000000 1.250000 -1.000000 +v 1.000000 1.031250 0.750000 +v 1.500000 1.031250 0.750000 +v 1.000000 1.031250 -0.750000 +v 1.500000 1.031250 -0.750000 +v 1.000000 1.093750 -0.750000 +v 1.000000 1.093750 0.750000 +v 1.500000 1.093750 0.750000 +v 1.500000 1.093750 -0.750000 +v 1.000000 0.906250 0.750000 +v 1.500000 0.906250 0.750000 +v 1.000000 0.906250 -0.750000 +v 1.500000 0.906250 -0.750000 +v 1.000000 0.968750 -0.750000 +v 1.000000 0.968750 0.750000 +v 1.500000 0.968750 0.750000 +v 1.500000 0.968750 -0.750000 +v 1.000000 0.781250 0.750000 +v 1.500000 0.781250 0.750000 +v 1.000000 0.781250 -0.750000 +v 1.500000 0.781250 -0.750000 +v 1.000000 0.843750 -0.750000 +v 1.000000 0.843750 0.750000 +v 1.500000 0.843750 0.750000 +v 1.500000 0.843750 -0.750000 +v 1.000000 1.156250 0.750000 +v 1.500000 1.156250 0.750000 +v 1.000000 1.156250 -0.750000 +v 1.500000 1.156250 -0.750000 +v 1.000000 1.218750 -0.750000 +v 1.000000 1.218750 0.750000 +v 1.500000 1.218750 0.750000 +v 1.500000 1.218750 -0.750000 +v -1.000000 1.031250 -0.750000 +v -1.500000 1.031250 -0.750000 +v -1.000000 1.031250 0.750000 +v -1.500000 1.031250 0.750000 +v -1.000000 1.093750 0.750000 +v -1.000000 1.093750 -0.750000 +v -1.500000 1.093750 -0.750000 +v -1.500000 1.093750 0.750000 +v -1.000000 0.906250 -0.750000 +v -1.500000 0.906250 -0.750000 +v -1.000000 0.906250 0.750000 +v -1.500000 0.906250 0.750000 +v -1.000000 0.968750 0.750000 +v -1.000000 0.968750 -0.750000 +v -1.500000 0.968750 -0.750000 +v -1.500000 0.968750 0.750000 +v -1.000000 0.781250 -0.750000 +v -1.500000 0.781250 -0.750000 +v -1.000000 0.781250 0.750000 +v -1.500000 0.781250 0.750000 +v -1.000000 0.843750 0.750000 +v -1.000000 0.843750 -0.750000 +v -1.500000 0.843750 -0.750000 +v -1.500000 0.843750 0.750000 +v -1.000000 1.156250 -0.750000 +v -1.500000 1.156250 -0.750000 +v -1.000000 1.156250 0.750000 +v -1.500000 1.156250 0.750000 +v -1.000000 1.218750 0.750000 +v -1.000000 1.218750 -0.750000 +v -1.500000 1.218750 -0.750000 +v -1.500000 1.218750 0.750000 +v 0.750000 1.031250 -1.000000 +v 0.750000 1.031250 -1.500000 +v -0.750000 1.031250 -1.000000 +v -0.750000 1.031250 -1.500000 +v -0.750000 1.093750 -1.000000 +v 0.750000 1.093750 -1.000000 +v 0.750000 1.093750 -1.500000 +v -0.750000 1.093750 -1.500000 +v 0.750000 0.906250 -1.000000 +v 0.750000 0.906250 -1.500000 +v -0.750000 0.906250 -1.000000 +v -0.750000 0.906250 -1.500000 +v -0.750000 0.968750 -1.000000 +v 0.750000 0.968750 -1.000000 +v 0.750000 0.968750 -1.500000 +v -0.750000 0.968750 -1.500000 +v 0.750000 0.781250 -1.000000 +v 0.750000 0.781250 -1.500000 +v -0.750000 0.781250 -1.000000 +v -0.750000 0.781250 -1.500000 +v -0.750000 0.843750 -1.000000 +v 0.750000 0.843750 -1.000000 +v 0.750000 0.843750 -1.500000 +v -0.750000 0.843750 -1.500000 +v 0.750000 1.156250 -1.000000 +v 0.750000 1.156250 -1.500000 +v -0.750000 1.156250 -1.000000 +v -0.750000 1.156250 -1.500000 +v -0.750000 1.218750 -1.000000 +v 0.750000 1.218750 -1.000000 +v 0.750000 1.218750 -1.500000 +v -0.750000 1.218750 -1.500000 +v -0.750000 1.031250 1.000000 +v -0.750000 1.031250 1.500000 +v 0.750000 1.031250 1.000000 +v 0.750000 1.031250 1.500000 +v 0.750000 1.093750 1.000000 +v -0.750000 1.093750 1.000000 +v -0.750000 1.093750 1.500000 +v 0.750000 1.093750 1.500000 +v -0.750000 0.906250 1.000000 +v -0.750000 0.906250 1.500000 +v 0.750000 0.906250 1.000000 +v 0.750000 0.906250 1.500000 +v 0.750000 0.968750 1.000000 +v -0.750000 0.968750 1.000000 +v -0.750000 0.968750 1.500000 +v 0.750000 0.968750 1.500000 +v -0.750000 0.781250 1.000000 +v -0.750000 0.781250 1.500000 +v 0.750000 0.781250 1.000000 +v 0.750000 0.781250 1.500000 +v 0.750000 0.843750 1.000000 +v -0.750000 0.843750 1.000000 +v -0.750000 0.843750 1.500000 +v 0.750000 0.843750 1.500000 +v -0.750000 1.156250 1.000000 +v -0.750000 1.156250 1.500000 +v 0.750000 1.156250 1.000000 +v 0.750000 1.156250 1.500000 +v 0.750000 1.218750 1.000000 +v -0.750000 1.218750 1.000000 +v -0.750000 1.218750 1.500000 +v 0.750000 1.218750 1.500000 +v 0.000000 4.250000 -0.866025 +v 0.000000 3.750000 -1.000000 +v 0.191342 4.616025 -0.461940 +v 0.331414 4.250000 -0.800103 +v 0.382683 3.750000 -0.923880 +v 0.353553 4.616025 -0.353553 +v 0.612372 4.250000 -0.612372 +v 0.707107 3.750000 -0.707107 +v 0.461940 4.616025 -0.191342 +v 0.800103 4.250000 -0.331414 +v 0.923879 3.750000 -0.382683 +v 0.500000 4.616025 0.000000 +v 0.866025 4.250000 0.000000 +v 1.000000 3.750000 0.000000 +v 0.461940 4.616025 0.191341 +v 0.800103 4.250000 0.331413 +v 0.923879 3.750000 0.382683 +v 0.353553 4.616025 0.353553 +v 0.612372 4.250000 0.612372 +v 0.707106 3.750000 0.707107 +v 0.191342 4.616025 0.461939 +v 0.331413 4.250000 0.800103 +v 0.382683 3.750000 0.923879 +v -0.000000 4.616025 0.500000 +v -0.000000 4.250000 0.866025 +v -0.000000 3.750000 1.000000 +v -0.191342 4.616025 0.461939 +v -0.331414 4.250000 0.800103 +v -0.382684 3.750000 0.923879 +v -0.382683 1.250000 -0.923880 +v -0.707106 1.250000 -0.707107 +v -0.353553 4.616025 0.353553 +v -0.612372 4.250000 0.612372 +v -0.707107 3.750000 0.707106 +v -0.923879 1.250000 -0.382684 +v -1.000000 1.250000 -0.000000 +v -0.461940 4.616025 0.191341 +v -0.800103 4.250000 0.331413 +v -0.923879 3.750000 0.382683 +v -0.923879 1.250000 0.382683 +v -0.707107 1.250000 0.707106 +v -0.500000 4.616025 -0.000000 +v -0.866025 4.250000 -0.000000 +v -1.000000 3.750000 -0.000000 +v -0.382684 1.250000 0.923879 +v -0.000000 1.250000 1.000000 +v -0.461939 4.616025 -0.191342 +v -0.800103 4.250000 -0.331414 +v -0.923879 3.750000 -0.382684 +v 0.382683 1.250000 0.923879 +v 0.707106 1.250000 0.707107 +v -0.353553 4.616025 -0.353554 +v -0.612372 4.250000 -0.612372 +v -0.707106 3.750000 -0.707107 +v 0.923879 1.250000 0.382683 +v 1.000000 1.250000 0.000000 +v -0.191341 4.616025 -0.461940 +v -0.331413 4.250000 -0.800103 +v -0.382683 3.750000 -0.923880 +v 0.923879 1.250000 -0.382683 +v 0.707107 1.250000 -0.707107 +v -0.000000 4.750000 0.000000 +v 0.000000 4.616025 -0.500000 +v 0.382683 1.250000 -0.923880 +v 0.000000 1.250000 -1.000000 +v 1.000000 0.250000 1.250000 +v 1.250000 0.250000 1.250000 +v 1.000000 0.250000 1.000000 +v 1.250000 0.250000 1.000000 +v 1.000000 3.750000 1.250000 +v 1.250000 3.750000 1.250000 +v 1.000000 3.750000 1.000000 +v 1.250000 3.750000 1.000000 +v 1.000000 0.250000 -1.000000 +v 1.250000 0.250000 -1.000000 +v 1.000000 0.250000 -1.250000 +v 1.250000 0.250000 -1.250000 +v 1.000000 3.750000 -1.000000 +v 1.250000 3.750000 -1.000000 +v 1.000000 3.750000 -1.250000 +v 1.250000 3.750000 -1.250000 +v -1.250000 3.750000 1.250000 +v -1.000000 3.750000 1.250000 +v -1.250000 3.750000 1.000000 +v -1.000000 3.750000 1.000000 +v -1.250000 0.250000 1.250000 +v -1.000000 0.250000 1.250000 +v -1.250000 0.250000 1.000000 +v -1.000000 0.250000 1.000000 +v -1.250000 3.750000 -1.000000 +v -1.000000 3.750000 -1.000000 +v -1.250000 3.750000 -1.250000 +v -1.000000 3.750000 -1.250000 +v -1.250000 0.250000 -1.000000 +v -1.000000 0.250000 -1.000000 +v -1.250000 0.250000 -1.250000 +v -1.000000 0.250000 -1.250000 +v 1.000000 3.750000 1.000000 +v 1.250000 3.750000 1.000000 +v 1.000000 3.750000 -1.000000 +v 1.250000 3.750000 -1.000000 +v 1.250000 3.500000 1.000000 +v 1.000000 3.500000 1.000000 +v 1.000000 3.500000 -1.000000 +v 1.250000 3.500000 -1.000000 +v -1.000000 3.750000 -1.000000 +v -1.250000 3.750000 -1.000000 +v -1.000000 3.750000 1.000000 +v -1.250000 3.750000 1.000000 +v -1.250000 3.500000 -1.000000 +v -1.000000 3.500000 -1.000000 +v -1.000000 3.500000 1.000000 +v -1.250000 3.500000 1.000000 +v 1.000000 3.750000 -1.000000 +v 1.000000 3.750000 -1.250000 +v -1.000000 3.750000 -1.000000 +v -1.000000 3.750000 -1.250000 +v 1.000000 3.500000 -1.250000 +v 1.000000 3.500000 -1.000000 +v -1.000000 3.500000 -1.000000 +v -1.000000 3.500000 -1.250000 +v -1.000000 3.750000 1.000000 +v -1.000000 3.750000 1.250000 +v 1.000000 3.750000 1.000000 +v 1.000000 3.750000 1.250000 +v -1.000000 3.500000 1.250000 +v -1.000000 3.500000 1.000000 +v 1.000000 3.500000 1.000000 +v 1.000000 3.500000 1.250000 +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.437500 0.000000 0.437500 +v 0.437500 0.000000 0.437500 +v -0.437500 0.000000 -0.437500 +v 0.437500 0.000000 -0.437500 +v -0.500000 0.062500 -0.500000 +v -0.500000 0.062500 0.500000 +v 0.500000 0.062500 0.500000 +v 0.500000 0.062500 -0.500000 +v -0.437500 0.062500 -0.437500 +v -0.437500 0.062500 0.437500 +v 0.437500 0.062500 0.437500 +v 0.437500 0.062500 -0.437500 +v -0.250000 5.000000 0.250000 +v 0.250000 5.000000 0.250000 +v -0.250000 5.000000 -0.250000 +v 0.250000 5.000000 -0.250000 +v -0.250000 4.937500 -0.250000 +v -0.250000 4.937500 0.250000 +v 0.250000 4.937500 0.250000 +v 0.250000 4.937500 -0.250000 +v -0.375000 4.812500 -0.375000 +v -0.375000 4.812500 0.375000 +v 0.375000 4.812500 0.375000 +v 0.375000 4.812500 -0.375000 +v -0.375000 4.562500 -0.375000 +v -0.375000 4.562500 0.375000 +v 0.375000 4.562500 0.375000 +v 0.375000 4.562500 -0.375000 +v 0.375000 4.812500 0.187500 +v 0.375000 4.775888 0.099112 +v 0.375000 4.687500 0.062500 +v 0.375000 4.599112 0.099112 +v 0.375000 4.562500 0.187500 +v 0.375000 4.599112 0.275888 +v 0.375000 4.687500 0.312500 +v 0.375000 4.775888 0.275888 +v 1.125000 4.812500 0.187500 +v 1.125000 4.775888 0.099112 +v 1.125000 4.687500 0.062500 +v 1.125000 4.599112 0.099112 +v 1.125000 4.562500 0.187500 +v 1.125000 4.599112 0.275888 +v 1.125000 4.687500 0.312500 +v 1.125000 4.775888 0.275888 +v 1.301777 4.739277 0.187500 +v 1.275888 4.713388 0.099112 +v 1.213388 4.650888 0.062500 +v 1.150888 4.588388 0.099112 +v 1.150888 4.588388 0.275888 +v 1.213388 4.650888 0.312500 +v 1.275888 4.713388 0.275888 +v 1.375000 4.562500 0.187500 +v 1.338388 4.562500 0.099112 +v 1.250000 4.562500 0.062500 +v 1.161612 4.562500 0.099112 +v 1.161612 4.562500 0.275888 +v 1.250000 4.562500 0.312500 +v 1.338388 4.562500 0.275888 +v 1.125000 0.750000 0.187500 +v 1.375000 0.750000 0.187500 +v 1.338388 0.750000 0.099112 +v 1.250000 0.750000 0.062500 +v 1.161612 0.750000 0.099112 +v 1.161612 0.750000 0.275888 +v 1.250000 0.750000 0.312500 +v 1.338388 0.750000 0.275888 +v 0.375000 4.812500 -0.187500 +v 0.375000 4.775888 -0.275888 +v 0.375000 4.687500 -0.312500 +v 0.375000 4.599112 -0.275888 +v 0.375000 4.562500 -0.187500 +v 0.375000 4.599112 -0.099112 +v 0.375000 4.687500 -0.062500 +v 0.375000 4.775888 -0.099112 +v 1.125000 4.812500 -0.187500 +v 1.125000 4.775888 -0.275888 +v 1.125000 4.687500 -0.312500 +v 1.125000 4.599112 -0.275888 +v 1.125000 4.562500 -0.187500 +v 1.125000 4.599112 -0.099112 +v 1.125000 4.687500 -0.062500 +v 1.125000 4.775888 -0.099112 +v 1.301777 4.739277 -0.187500 +v 1.275888 4.713388 -0.275888 +v 1.213388 4.650888 -0.312500 +v 1.150888 4.588388 -0.275888 +v 1.150888 4.588388 -0.099112 +v 1.213388 4.650888 -0.062500 +v 1.275888 4.713388 -0.099112 +v 1.375000 4.562500 -0.187500 +v 1.338388 4.562500 -0.275888 +v 1.250000 4.562500 -0.312500 +v 1.161612 4.562500 -0.275888 +v 1.161612 4.562500 -0.099112 +v 1.250000 4.562500 -0.062500 +v 1.338388 4.562500 -0.099112 +v 1.125000 0.750000 -0.187500 +v 1.375000 0.750000 -0.187500 +v 1.338388 0.750000 -0.275888 +v 1.250000 0.750000 -0.312500 +v 1.161612 0.750000 -0.275888 +v 1.161612 0.750000 -0.099112 +v 1.250000 0.750000 -0.062500 +v 1.338388 0.750000 -0.099112 +v -1.500000 0.687500 0.187500 +v -1.500000 0.312500 0.187500 +v -1.500000 0.687500 -0.187500 +v -1.500000 0.312500 -0.187500 +v -1.000000 0.750000 -0.750000 +v -1.375000 0.750000 -0.750000 +v -1.000000 0.750000 0.750000 +v -1.375000 0.750000 0.750000 +v -1.000000 0.250000 0.750000 +v -1.000000 0.250000 -0.750000 +v -1.375000 0.250000 -0.750000 +v -1.375000 0.250000 0.750000 +v -1.375000 0.687500 -0.187500 +v -1.375000 0.687500 0.187500 +v -1.375000 0.312500 0.187500 +v -1.375000 0.312500 -0.187500 +v 1.500000 0.687500 -0.187500 +v 1.500000 0.312500 -0.187500 +v 1.500000 0.687500 0.187500 +v 1.500000 0.312500 0.187500 +v 1.000000 0.750000 0.750000 +v 1.375000 0.750000 0.750000 +v 1.000000 0.750000 -0.750000 +v 1.375000 0.750000 -0.750000 +v 1.000000 0.250000 -0.750000 +v 1.000000 0.250000 0.750000 +v 1.375000 0.250000 0.750000 +v 1.375000 0.250000 -0.750000 +v 1.375000 0.687500 0.187500 +v 1.375000 0.687500 -0.187500 +v 1.375000 0.312500 -0.187500 +v 1.375000 0.312500 0.187500 +v 0.187500 0.687500 1.500000 +v 0.187500 0.312500 1.500000 +v -0.187500 0.687500 1.500000 +v -0.187500 0.312500 1.500000 +v -0.750000 0.750000 1.000000 +v -0.750000 0.750000 1.375000 +v 0.750000 0.750000 1.000000 +v 0.750000 0.750000 1.375000 +v 0.750000 0.250000 1.000000 +v -0.750000 0.250000 1.000000 +v -0.750000 0.250000 1.375000 +v 0.750000 0.250000 1.375000 +v -0.187500 0.687500 1.375000 +v 0.187500 0.687500 1.375000 +v 0.187500 0.312500 1.375000 +v -0.187500 0.312500 1.375000 +v -0.187500 0.687500 -1.500000 +v -0.187500 0.312500 -1.500000 +v 0.187500 0.687500 -1.500000 +v 0.187500 0.312500 -1.500000 +v 0.750000 0.750000 -1.000000 +v 0.750000 0.750000 -1.375000 +v -0.750000 0.750000 -1.000000 +v -0.750000 0.750000 -1.375000 +v -0.750000 0.250000 -1.000000 +v 0.750000 0.250000 -1.000000 +v 0.750000 0.250000 -1.375000 +v -0.750000 0.250000 -1.375000 +v 0.187500 0.687500 -1.375000 +v -0.187500 0.687500 -1.375000 +v -0.187500 0.312500 -1.375000 +v 0.187500 0.312500 -1.375000 +v -1.250000 3.750000 -0.312500 +v -1.250000 3.750000 0.312500 +v -1.250000 3.500000 -0.312500 +v -1.250000 3.500000 0.312500 +v -1.375000 3.750000 -0.312500 +v -1.375000 3.750000 0.312500 +v -1.375000 3.500000 -0.312500 +v -1.375000 3.500000 0.312500 +v 1.250000 3.750000 0.312500 +v 1.250000 3.750000 -0.312500 +v 1.250000 3.500000 0.312500 +v 1.250000 3.500000 -0.312500 +v 1.375000 3.750000 0.312500 +v 1.375000 3.750000 -0.312500 +v 1.375000 3.500000 0.312500 +v 1.375000 3.500000 -0.312500 +v -0.312500 3.750000 1.250000 +v 0.312500 3.750000 1.250000 +v -0.312500 3.500000 1.250000 +v 0.312500 3.500000 1.250000 +v -0.312500 3.750000 1.375000 +v 0.312500 3.750000 1.375000 +v -0.312500 3.500000 1.375000 +v 0.312500 3.500000 1.375000 +v 0.312500 3.750000 -1.250000 +v -0.312500 3.750000 -1.250000 +v 0.312500 3.500000 -1.250000 +v -0.312500 3.500000 -1.250000 +v 0.312500 3.750000 -1.375000 +v -0.312500 3.750000 -1.375000 +v 0.312500 3.500000 -1.375000 +v -0.312500 3.500000 -1.375000 +v -0.375000 4.812500 -0.187500 +v -0.375000 4.775888 -0.099112 +v -0.375000 4.687500 -0.062500 +v -0.375000 4.599112 -0.099112 +v -0.375000 4.562500 -0.187500 +v -0.375000 4.599112 -0.275888 +v -0.375000 4.687500 -0.312500 +v -0.375000 4.775888 -0.275888 +v -1.125000 4.812500 -0.187500 +v -1.125000 4.775888 -0.099111 +v -1.125000 4.687500 -0.062500 +v -1.125000 4.599112 -0.099111 +v -1.125000 4.562500 -0.187500 +v -1.125000 4.599112 -0.275888 +v -1.125000 4.687500 -0.312500 +v -1.125000 4.775888 -0.275888 +v -1.301777 4.739277 -0.187500 +v -1.275888 4.713388 -0.099111 +v -1.213388 4.650888 -0.062500 +v -1.150888 4.588388 -0.099111 +v -1.150888 4.588388 -0.275888 +v -1.213388 4.650888 -0.312500 +v -1.275888 4.713388 -0.275888 +v -1.375000 4.562500 -0.187500 +v -1.338388 4.562500 -0.099111 +v -1.250000 4.562500 -0.062500 +v -1.161612 4.562500 -0.099111 +v -1.161612 4.562500 -0.275888 +v -1.250000 4.562500 -0.312500 +v -1.338388 4.562500 -0.275888 +v -1.125000 0.750000 -0.187500 +v -1.375000 0.750000 -0.187500 +v -1.338388 0.750000 -0.099111 +v -1.250000 0.750000 -0.062500 +v -1.161612 0.750000 -0.099111 +v -1.161612 0.750000 -0.275888 +v -1.250000 0.750000 -0.312500 +v -1.338388 0.750000 -0.275888 +v -0.375000 4.812500 0.187500 +v -0.375000 4.775888 0.275888 +v -0.375000 4.687500 0.312500 +v -0.375000 4.599112 0.275888 +v -0.375000 4.562500 0.187500 +v -0.375000 4.599112 0.099112 +v -0.375000 4.687500 0.062500 +v -0.375000 4.775888 0.099112 +v -1.125000 4.812500 0.187500 +v -1.125000 4.775888 0.275889 +v -1.125000 4.687500 0.312500 +v -1.125000 4.599112 0.275889 +v -1.125000 4.562500 0.187500 +v -1.125000 4.599112 0.099112 +v -1.125000 4.687500 0.062500 +v -1.125000 4.775888 0.099112 +v -1.301777 4.739277 0.187500 +v -1.275888 4.713388 0.275889 +v -1.213388 4.650888 0.312500 +v -1.150888 4.588388 0.275889 +v -1.150888 4.588388 0.099112 +v -1.213388 4.650888 0.062500 +v -1.275888 4.713388 0.099112 +v -1.375000 4.562500 0.187500 +v -1.338388 4.562500 0.275889 +v -1.250000 4.562500 0.312500 +v -1.161612 4.562500 0.275889 +v -1.161612 4.562500 0.099112 +v -1.250000 4.562500 0.062500 +v -1.338388 4.562500 0.099112 +v -1.125000 0.750000 0.187500 +v -1.375000 0.750000 0.187500 +v -1.338388 0.750000 0.275889 +v -1.250000 0.750000 0.312500 +v -1.161612 0.750000 0.275889 +v -1.161612 0.750000 0.099112 +v -1.250000 0.750000 0.062500 +v -1.338388 0.750000 0.099112 +v 0.187500 4.812500 -0.375000 +v 0.099112 4.775888 -0.375000 +v 0.062500 4.687500 -0.375000 +v 0.099112 4.599112 -0.375000 +v 0.187500 4.562500 -0.375000 +v 0.275888 4.599112 -0.375000 +v 0.312500 4.687500 -0.375000 +v 0.275888 4.775888 -0.375000 +v 0.187500 4.812500 -1.125000 +v 0.099112 4.775888 -1.125000 +v 0.062500 4.687500 -1.125000 +v 0.099112 4.599112 -1.125000 +v 0.187500 4.562500 -1.125000 +v 0.275888 4.599112 -1.125000 +v 0.312500 4.687500 -1.125000 +v 0.275888 4.775888 -1.125000 +v 0.187500 4.739277 -1.301777 +v 0.099112 4.713388 -1.275888 +v 0.062500 4.650888 -1.213388 +v 0.099112 4.588388 -1.150888 +v 0.275888 4.588388 -1.150888 +v 0.312500 4.650888 -1.213388 +v 0.275888 4.713388 -1.275888 +v 0.187500 4.562500 -1.375000 +v 0.099112 4.562500 -1.338388 +v 0.062500 4.562500 -1.250000 +v 0.099112 4.562500 -1.161612 +v 0.275888 4.562500 -1.161612 +v 0.312500 4.562500 -1.250000 +v 0.275888 4.562500 -1.338388 +v 0.187500 0.750001 -1.125000 +v 0.187500 0.750001 -1.375000 +v 0.099112 0.750001 -1.338388 +v 0.062500 0.750001 -1.250000 +v 0.099112 0.750001 -1.161612 +v 0.275888 0.750001 -1.161612 +v 0.312500 0.750001 -1.250000 +v 0.275888 0.750001 -1.338388 +v -0.187500 4.812500 -0.375000 +v -0.275888 4.775888 -0.375000 +v -0.312500 4.687500 -0.375000 +v -0.275888 4.599112 -0.375000 +v -0.187500 4.562500 -0.375000 +v -0.099112 4.599112 -0.375000 +v -0.062500 4.687500 -0.375000 +v -0.099112 4.775888 -0.375000 +v -0.187500 4.812500 -1.125000 +v -0.275888 4.775888 -1.125000 +v -0.312500 4.687500 -1.125000 +v -0.275888 4.599112 -1.125000 +v -0.187500 4.562500 -1.125000 +v -0.099112 4.599112 -1.125000 +v -0.062500 4.687500 -1.125000 +v -0.099112 4.775888 -1.125000 +v -0.187500 4.739277 -1.301777 +v -0.275888 4.713388 -1.275888 +v -0.312500 4.650888 -1.213388 +v -0.275888 4.588388 -1.150888 +v -0.099112 4.588388 -1.150888 +v -0.062500 4.650888 -1.213388 +v -0.099112 4.713388 -1.275888 +v -0.187500 4.562500 -1.375000 +v -0.275888 4.562500 -1.338388 +v -0.312500 4.562500 -1.250000 +v -0.275889 4.562500 -1.161612 +v -0.099112 4.562500 -1.161612 +v -0.062500 4.562500 -1.250000 +v -0.099112 4.562500 -1.338388 +v -0.187500 0.750001 -1.125000 +v -0.187500 0.750001 -1.375000 +v -0.275888 0.750001 -1.338388 +v -0.312500 0.750001 -1.250000 +v -0.275889 0.750001 -1.161612 +v -0.099112 0.750001 -1.161612 +v -0.062500 0.750001 -1.250000 +v -0.099112 0.750001 -1.338388 +v -0.187500 4.812500 0.375000 +v -0.099111 4.775888 0.375000 +v -0.062500 4.687500 0.375000 +v -0.099111 4.599112 0.375000 +v -0.187500 4.562500 0.375000 +v -0.275888 4.599112 0.375000 +v -0.312500 4.687500 0.375000 +v -0.275888 4.775888 0.375000 +v -0.187500 4.812500 1.125000 +v -0.099111 4.775888 1.125000 +v -0.062500 4.687500 1.125000 +v -0.099111 4.599112 1.125000 +v -0.187500 4.562500 1.125000 +v -0.275888 4.599112 1.125000 +v -0.312500 4.687500 1.125000 +v -0.275888 4.775888 1.125000 +v -0.187500 4.739277 1.301777 +v -0.099111 4.713388 1.275888 +v -0.062500 4.650888 1.213388 +v -0.099111 4.588388 1.150888 +v -0.275888 4.588388 1.150888 +v -0.312500 4.650888 1.213388 +v -0.275888 4.713388 1.275888 +v -0.187500 4.562500 1.375000 +v -0.099111 4.562500 1.338388 +v -0.062500 4.562500 1.250000 +v -0.099111 4.562500 1.161612 +v -0.275888 4.562500 1.161612 +v -0.312500 4.562500 1.250000 +v -0.275888 4.562500 1.338388 +v -0.187500 0.750001 1.125000 +v -0.187500 0.750001 1.375000 +v -0.099111 0.750001 1.338388 +v -0.062500 0.750001 1.250000 +v -0.099111 0.750001 1.161612 +v -0.275888 0.750001 1.161612 +v -0.312500 0.750001 1.250000 +v -0.275888 0.750001 1.338388 +v 0.187500 4.812500 0.375000 +v 0.275888 4.775888 0.375000 +v 0.312500 4.687500 0.375000 +v 0.275888 4.599112 0.375000 +v 0.187500 4.562500 0.375000 +v 0.099112 4.599112 0.375000 +v 0.062500 4.687500 0.375000 +v 0.099112 4.775888 0.375000 +v 0.187500 4.812500 1.125000 +v 0.275889 4.775888 1.125000 +v 0.312500 4.687500 1.125000 +v 0.275889 4.599112 1.125000 +v 0.187500 4.562500 1.125000 +v 0.099112 4.599112 1.125000 +v 0.062500 4.687500 1.125000 +v 0.099112 4.775888 1.125000 +v 0.187500 4.739277 1.301777 +v 0.275889 4.713388 1.275888 +v 0.312500 4.650888 1.213388 +v 0.275889 4.588388 1.150888 +v 0.099112 4.588388 1.150888 +v 0.062500 4.650888 1.213388 +v 0.099112 4.713388 1.275888 +v 0.187500 4.562500 1.375000 +v 0.275889 4.562500 1.338388 +v 0.312500 4.562500 1.250000 +v 0.275889 4.562500 1.161612 +v 0.099112 4.562500 1.161612 +v 0.062500 4.562500 1.250000 +v 0.099112 4.562500 1.338388 +v 0.187500 0.750001 1.125000 +v 0.187500 0.750001 1.375000 +v 0.275889 0.750001 1.338388 +v 0.312500 0.750001 1.250000 +v 0.275889 0.750001 1.161612 +v 0.099112 0.750001 1.161612 +v 0.062500 0.750001 1.250000 +v 0.099112 0.750001 1.338388 +vt 0.655660 0.930000 +vt 0.589623 0.940000 +vt 0.589623 0.930000 +vt -0.000000 0.520000 +vt 0.226415 1.000000 +vt -0.000000 1.000000 +vt 0.226415 0.480000 +vt -0.000000 0.520000 +vt -0.000000 0.480000 +vt 0.226415 0.480000 +vt -0.000000 0.520000 +vt -0.000000 0.480000 +vt 0.226415 0.480000 +vt -0.000000 0.480000 +vt 0.226415 0.480000 +vt -0.000000 0.520000 +vt -0.000000 0.480000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.226415 0.160000 +vt 0.377358 0.480000 +vt 0.226415 0.480000 +vt 0.377358 0.000000 +vt 0.226415 -0.000000 +vt 0.377358 -0.000000 +vt 0.226415 0.160000 +vt 0.226415 -0.000000 +vt 0.377358 -0.000000 +vt 0.226415 0.160000 +vt 0.226415 -0.000000 +vt 0.377358 -0.000000 +vt 0.226415 0.160000 +vt 0.226415 -0.000000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.867925 0.600000 +vt 0.886792 0.560000 +vt 0.886792 0.600000 +vt 0.867925 0.560000 +vt 0.886792 0.600000 +vt 0.867925 0.600000 +vt 0.886792 -0.000000 +vt 0.867925 -0.000000 +vt 0.924528 -0.000000 +vt 0.905660 0.560000 +vt 0.905660 -0.000000 +vt 0.886792 0.560000 +vt 0.849057 0.560000 +vt 0.849057 -0.000000 +vt 0.867925 -0.000000 +vt 0.849057 0.560000 +vt 0.849057 -0.000000 +vt 0.905660 -0.000000 +vt 0.886792 -0.000000 +vt 0.867925 0.560000 +vt 0.924528 -0.000000 +vt 0.905660 0.560000 +vt 0.924528 -0.000000 +vt 0.905660 0.560000 +vt 0.905660 -0.000000 +vt 0.886792 -0.000000 +vt 0.867925 0.560000 +vt 0.867925 -0.000000 +vt 0.886792 0.560000 +vt 0.849057 0.560000 +vt 0.849057 -0.000000 +vt 0.867925 -0.000000 +vt 0.849057 0.560000 +vt 0.849057 -0.000000 +vt 0.905660 -0.000000 +vt 0.886792 0.560000 +vt 0.886792 -0.000000 +vt 0.924528 -0.000000 +vt 0.905660 0.560000 +vt 0.867925 0.560000 +vt 0.886792 0.600000 +vt 0.867925 0.600000 +vt 0.886792 0.600000 +vt 0.424528 0.720000 +vt 0.575472 0.760000 +vt 0.424528 0.760000 +vt 0.575472 0.640000 +vt 0.424528 0.680000 +vt 0.424528 0.640000 +vt 0.424528 0.800000 +vt 0.575472 0.640000 +vt 0.424528 0.680000 +vt 0.424528 0.640000 +vt 0.575472 0.680000 +vt 0.575472 0.720000 +vt 0.424528 0.720000 +vt 0.575472 0.760000 +vt 0.424528 0.760000 +vt 0.424528 0.800000 +vt 0.575472 0.680000 +vt 0.575472 0.720000 +vt 0.424528 0.720000 +vt 0.575472 0.760000 +vt 0.424528 0.760000 +vt 0.575472 0.640000 +vt 0.424528 0.680000 +vt 0.424528 0.640000 +vt 0.424528 0.800000 +vt 0.575472 0.640000 +vt 0.424528 0.680000 +vt 0.424528 0.640000 +vt 0.575472 0.680000 +vt 0.575472 0.720000 +vt 0.424528 0.720000 +vt 0.575472 0.760000 +vt 0.424528 0.760000 +vt 0.424528 0.800000 +vt 0.575472 0.680000 +vt 0.575472 0.720000 +vt 0.655660 0.790000 +vt 0.589623 0.790000 +vt 0.575472 0.780000 +vt 0.580189 0.940000 +vt 0.575472 0.940000 +vt 0.669811 0.940000 +vt 0.665094 0.780000 +vt 0.669811 0.780000 +vt 0.584906 0.790000 +vt 0.226415 -0.000000 +vt 0.075472 0.160000 +vt -0.000000 0.000000 +vt 0.150943 0.160000 +vt 0.150943 0.320000 +vt 0.075472 0.320000 +vt 0.665094 0.940000 +vt 0.660377 0.790000 +vt 0.584906 0.950000 +vt 0.655660 0.940000 +vt 0.660377 0.950000 +vt 0.580189 0.780000 +vt 0.584906 0.930000 +vt 0.660377 0.770000 +vt 0.589623 0.780000 +vt 0.584906 0.770000 +vt 0.655660 0.780000 +vt 0.584906 0.960000 +vt 0.660377 0.960000 +vt 0.660377 0.760000 +vt 0.584906 0.760000 +vt 0.660377 0.930000 +vt 0.707547 0.720000 +vt 0.745283 0.800000 +vt 0.707547 0.800000 +vt 0.707547 0.710000 +vt 0.754717 0.680000 +vt 0.745283 0.710000 +vt 0.745283 0.720000 +vt 0.820755 0.720000 +vt 0.858491 0.710000 +vt 0.858491 0.720000 +vt 0.764151 0.720000 +vt 0.801887 0.710000 +vt 0.801887 0.720000 +vt 0.650943 0.720000 +vt 0.688679 0.710000 +vt 0.688679 0.720000 +vt 0.811321 0.640000 +vt 0.811321 0.680000 +vt 0.820755 0.710000 +vt 0.867925 0.680000 +vt 0.764151 0.710000 +vt 0.650943 0.710000 +vt 0.698113 0.680000 +vt 0.641509 0.680000 +vt 0.698113 0.640000 +vt 0.754717 0.640000 +vt 0.867925 0.640000 +vt 0.235849 0.700000 +vt 0.264151 0.640000 +vt 0.264151 0.700000 +vt 0.254717 0.560000 +vt 0.367925 0.620000 +vt 0.254717 0.620000 +vt 0.367925 0.480000 +vt 0.367925 0.560000 +vt 0.396226 0.480000 +vt 0.396226 0.560000 +vt 0.226415 0.560000 +vt 0.254717 0.480000 +vt 0.235849 0.700000 +vt 0.264151 0.640000 +vt 0.264151 0.700000 +vt 0.273585 0.700000 +vt 0.235849 0.640000 +vt 0.264151 0.620000 +vt 0.235849 0.720000 +vt 0.226415 0.640000 +vt 0.254717 0.560000 +vt 0.367925 0.620000 +vt 0.254717 0.620000 +vt 0.367925 0.480000 +vt 0.367925 0.560000 +vt 0.396226 0.480000 +vt 0.396226 0.560000 +vt 0.226415 0.560000 +vt 0.254717 0.480000 +vt 0.273585 0.700000 +vt 0.235849 0.640000 +vt 0.264151 0.620000 +vt 0.235849 0.720000 +vt 0.226415 0.640000 +vt 0.235849 0.700000 +vt 0.264151 0.640000 +vt 0.264151 0.700000 +vt 0.254717 0.560000 +vt 0.367925 0.620000 +vt 0.254717 0.620000 +vt 0.367925 0.480000 +vt 0.367925 0.560000 +vt 0.396226 0.480000 +vt 0.396226 0.560000 +vt 0.226415 0.560000 +vt 0.254717 0.480000 +vt 0.235849 0.700000 +vt 0.264151 0.640000 +vt 0.264151 0.700000 +vt 0.273585 0.700000 +vt 0.235849 0.640000 +vt 0.264151 0.620000 +vt 0.235849 0.720000 +vt 0.226415 0.640000 +vt 0.254717 0.560000 +vt 0.367925 0.620000 +vt 0.254717 0.620000 +vt 0.367925 0.480000 +vt 0.367925 0.560000 +vt 0.396226 0.480000 +vt 0.396226 0.560000 +vt 0.226415 0.560000 +vt 0.254717 0.480000 +vt 0.273585 0.700000 +vt 0.235849 0.640000 +vt 0.264151 0.620000 +vt 0.264151 0.720000 +vt 0.235849 0.720000 +vt 0.226415 0.640000 +vt 0.584906 0.640000 +vt 0.575472 0.680000 +vt 0.575472 0.640000 +vt 0.641509 0.680000 +vt 0.632075 0.640000 +vt 0.641509 0.640000 +vt 0.632075 0.680000 +vt 0.584906 0.640000 +vt 0.575472 0.680000 +vt 0.575472 0.640000 +vt 0.641509 0.680000 +vt 0.632075 0.640000 +vt 0.641509 0.640000 +vt 0.632075 0.680000 +vt 0.584906 0.640000 +vt 0.575472 0.680000 +vt 0.575472 0.640000 +vt 0.641509 0.680000 +vt 0.632075 0.640000 +vt 0.641509 0.640000 +vt 0.632075 0.680000 +vt 0.584906 0.640000 +vt 0.575472 0.680000 +vt 0.575472 0.640000 +vt 0.641509 0.680000 +vt 0.632075 0.640000 +vt 0.641509 0.640000 +vt 0.632075 0.680000 +vt 0.226415 0.520000 +vt 0.226415 0.520000 +vt 0.226415 0.520000 +vt 0.226415 0.520000 +vt 0.377358 0.160000 +vt 0.377358 0.160000 +vt 0.377358 0.160000 +vt 0.377358 0.160000 +vt 0.424528 0.730000 +vt 0.424528 0.730000 +vt 0.424528 0.730000 +vt 0.424528 0.730000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.424528 0.730000 +vt 0.424528 0.730000 +vt 0.424528 0.730000 +vt 0.424528 0.730000 +vt 0.924528 0.560000 +vt 0.924528 0.560000 +vt 0.924528 0.560000 +vt 0.924528 0.560000 +vt 0.867925 0.600000 +vt 0.575472 0.800000 +vt 0.575472 0.800000 +vt 0.575472 0.800000 +vt 0.575472 0.800000 +vt 0.641509 0.640000 +vt 0.226415 0.480000 +vt 0.273585 0.640000 +vt 0.235849 0.620000 +vt 0.264151 0.720000 +vt 0.226415 0.700000 +vt 0.226415 0.480000 +vt 0.273585 0.640000 +vt 0.235849 0.620000 +vt 0.264151 0.720000 +vt 0.226415 0.700000 +vt 0.226415 0.480000 +vt 0.273585 0.640000 +vt 0.235849 0.620000 +vt 0.264151 0.720000 +vt 0.226415 0.700000 +vt 0.226415 0.480000 +vt 0.273585 0.640000 +vt 0.235849 0.620000 +vt 0.226415 0.700000 +vt 0.584906 0.680000 +vt 0.584906 0.680000 +vt 0.584906 0.680000 +vt 0.584906 0.680000 +vt 0.731132 0.560000 +vt 0.712264 0.480000 +vt 0.735849 0.480000 +vt 0.707547 0.400000 +vt 0.735849 0.400000 +vt 0.721698 0.640000 +vt 0.716981 0.560000 +vt 0.702830 0.560000 +vt 0.683962 0.480000 +vt 0.707547 0.480000 +vt 0.679245 0.400000 +vt 0.693396 0.640000 +vt 0.688679 0.560000 +vt 0.679245 0.480000 +vt 0.660377 0.560000 +vt 0.655660 0.480000 +vt 0.650943 0.400000 +vt 0.674528 0.560000 +vt 0.665094 0.640000 +vt 0.627358 0.480000 +vt 0.622642 0.400000 +vt 0.646226 0.560000 +vt 0.636792 0.640000 +vt 0.632075 0.560000 +vt 0.650943 0.480000 +vt 0.599057 0.480000 +vt 0.594340 0.400000 +vt 0.617925 0.560000 +vt 0.608491 0.640000 +vt 0.603774 0.560000 +vt 0.622642 0.480000 +vt 0.570755 0.480000 +vt 0.566038 0.400000 +vt 0.589623 0.560000 +vt 0.580189 0.640000 +vt 0.575472 0.560000 +vt 0.594340 0.480000 +vt 0.566038 0.480000 +vt 0.537736 0.400000 +vt 0.561321 0.560000 +vt 0.551887 0.640000 +vt 0.547170 0.560000 +vt 0.542453 0.480000 +vt 0.537736 0.480000 +vt 0.509434 0.400000 +vt 0.533019 0.560000 +vt 0.523585 0.640000 +vt 0.518868 0.560000 +vt 0.514151 0.480000 +vt 0.504717 0.560000 +vt 0.495283 0.640000 +vt 0.490566 0.560000 +vt 0.485849 0.480000 +vt 0.509434 0.480000 +vt 0.481132 0.400000 +vt 0.476415 0.560000 +vt 0.457547 0.480000 +vt 0.481132 0.480000 +vt 0.452830 0.400000 +vt 0.466981 0.640000 +vt 0.462264 0.560000 +vt 0.448113 0.560000 +vt 0.429245 0.480000 +vt 0.452830 0.480000 +vt 0.396226 0.400000 +vt 0.424528 0.000000 +vt 0.424528 0.400000 +vt 0.438679 0.640000 +vt 0.433962 0.560000 +vt 0.566038 -0.000000 +vt 0.537736 0.000000 +vt 0.419811 0.560000 +vt 0.400943 0.480000 +vt 0.424528 0.480000 +vt 0.452830 0.000000 +vt 0.410377 0.640000 +vt 0.405660 0.560000 +vt 0.735849 0.000000 +vt 0.844340 0.560000 +vt 0.825472 0.480000 +vt 0.849057 0.480000 +vt 0.594340 0.000000 +vt 0.820755 0.400000 +vt 0.849057 0.400000 +vt 0.834906 0.640000 +vt 0.830189 0.560000 +vt 0.707547 0.000000 +vt 0.820755 0.480000 +vt 0.801887 0.560000 +vt 0.797170 0.480000 +vt 0.792453 0.400000 +vt 0.820755 -0.000000 +vt 0.816038 0.560000 +vt 0.806604 0.640000 +vt 0.764151 0.400000 +vt 0.792453 0.000000 +vt 0.481132 -0.000000 +vt 0.509434 0.000000 +vt 0.768868 0.480000 +vt 0.787736 0.560000 +vt 0.778302 0.640000 +vt 0.773585 0.560000 +vt 0.622642 0.000000 +vt 0.764151 0.000000 +vt 0.792453 0.480000 +vt 0.679245 0.000000 +vt 0.740566 0.480000 +vt 0.759434 0.560000 +vt 0.750000 0.640000 +vt 0.745283 0.560000 +vt 0.650943 -0.000000 +vt 0.849057 0.000000 +vt 0.764151 0.480000 +vt 0.962264 0.670000 +vt 0.971698 0.790000 +vt 0.962264 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.670000 +vt 0.943396 0.790000 +vt 0.933962 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.971698 0.670000 +vt 0.981132 0.790000 +vt 0.943396 0.670000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.971698 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.640000 +vt 0.943396 0.660000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.952830 0.640000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.971698 0.610000 +vt 0.981132 0.640000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.952830 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.670000 +vt 0.971698 0.790000 +vt 0.962264 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.670000 +vt 0.943396 0.790000 +vt 0.933962 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.971698 0.670000 +vt 0.981132 0.790000 +vt 0.943396 0.670000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.981132 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.660000 +vt 0.952830 0.640000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.943396 0.640000 +vt 0.971698 0.640000 +vt 0.981132 0.620000 +vt 0.952830 0.610000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.971698 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.790000 +vt 0.971698 0.670000 +vt 0.971698 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.790000 +vt 0.943396 0.670000 +vt 0.943396 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.981132 0.790000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.971698 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.640000 +vt 0.943396 0.660000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.962264 0.670000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.952830 0.640000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.981132 0.620000 +vt 0.981132 0.640000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.952830 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.971698 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.670000 +vt 0.971698 0.790000 +vt 0.962264 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.670000 +vt 0.943396 0.790000 +vt 0.933962 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.971698 0.670000 +vt 0.981132 0.790000 +vt 0.943396 0.670000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.971698 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.660000 +vt 0.952830 0.640000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.962264 0.610000 +vt 0.933962 0.630000 +vt 0.943396 0.640000 +vt 0.971698 0.610000 +vt 0.981132 0.640000 +vt 0.943396 0.620000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.952830 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.670000 +vt 0.971698 0.790000 +vt 0.962264 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.670000 +vt 0.943396 0.790000 +vt 0.933962 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.971698 0.670000 +vt 0.981132 0.790000 +vt 0.943396 0.670000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.971698 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.640000 +vt 0.943396 0.660000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.952830 0.640000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.971698 0.610000 +vt 0.981132 0.640000 +vt 0.952830 0.610000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.670000 +vt 0.971698 0.790000 +vt 0.962264 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.670000 +vt 0.943396 0.790000 +vt 0.933962 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.971698 0.670000 +vt 0.981132 0.790000 +vt 0.943396 0.670000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.981132 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.660000 +vt 0.952830 0.640000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.943396 0.640000 +vt 0.971698 0.640000 +vt 0.981132 0.620000 +vt 0.952830 0.610000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.971698 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.790000 +vt 0.971698 0.670000 +vt 0.971698 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.790000 +vt 0.943396 0.670000 +vt 0.943396 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.981132 0.790000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.971698 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.660000 +vt 0.952830 0.640000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.962264 0.670000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.943396 0.640000 +vt 0.981132 0.620000 +vt 0.981132 0.640000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.952830 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.971698 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.670000 +vt 0.971698 0.790000 +vt 0.962264 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.670000 +vt 0.943396 0.790000 +vt 0.933962 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.971698 0.670000 +vt 0.981132 0.790000 +vt 0.943396 0.670000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.981132 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.660000 +vt 0.952830 0.640000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.943396 0.640000 +vt 0.971698 0.640000 +vt 0.981132 0.620000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.952830 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.971698 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.396226 0.000000 +vt 1.000000 0.670000 +vt 0.981132 0.620000 +vt 0.924528 0.010000 +vt 1.000000 0.670000 +vt 0.924528 0.010000 +vt 0.933962 0.670000 +vt 1.000000 0.670000 +vt 0.924528 0.010000 +vt 1.000000 0.670000 +vt 0.981132 0.620000 +vt 0.924528 0.010000 +vt 1.000000 0.670000 +vt 0.981132 0.620000 +vt 0.924528 0.010000 +vt 1.000000 0.670000 +vt 0.924528 0.010000 +vt 0.933962 0.670000 +vt 1.000000 0.670000 +vt 0.924528 0.010000 +vt 1.000000 0.670000 +vt 0.924528 0.010000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +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 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 0.8520 -0.5235 +vn 0.3343 0.4865 -0.8071 +vn 0.0000 0.4865 -0.8736 +vn 0.3795 0.1285 -0.9162 +vn 0.0000 0.1285 -0.9917 +vn 0.2003 0.8520 -0.4836 +vn 0.6178 0.4865 -0.6178 +vn 0.7012 0.1285 -0.7012 +vn 0.3701 0.8520 -0.3701 +vn 0.4836 0.8520 -0.2003 +vn 0.8071 0.4865 -0.3343 +vn 0.9162 0.1285 -0.3795 +vn 0.8736 0.4865 0.0000 +vn 0.9917 0.1285 0.0000 +vn 0.5235 0.8520 0.0000 +vn 0.8071 0.4865 0.3343 +vn 0.9162 0.1285 0.3795 +vn 0.4836 0.8520 0.2003 +vn 0.6178 0.4865 0.6178 +vn 0.7012 0.1285 0.7012 +vn 0.3701 0.8520 0.3701 +vn 0.3795 0.1285 0.9162 +vn 0.2003 0.8520 0.4836 +vn 0.3343 0.4865 0.8071 +vn 0.0000 0.1285 0.9917 +vn 0.0000 0.8520 0.5235 +vn 0.0000 0.4865 0.8736 +vn -0.2003 0.8520 0.4836 +vn -0.3343 0.4865 0.8071 +vn -0.3795 0.1285 0.9162 +vn -0.6178 0.4865 0.6178 +vn -0.7012 0.1285 0.7012 +vn -0.3701 0.8520 0.3701 +vn -0.8071 0.4865 0.3343 +vn -0.9917 0.1285 0.0000 +vn -0.9239 0.0000 0.3827 +vn -0.9162 0.1285 0.3795 +vn -0.4836 0.8520 0.2003 +vn 0.7071 0.0000 0.7071 +vn 0.3827 0.0000 0.9239 +vn -0.8736 0.4865 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.5235 0.8520 0.0000 +vn -0.8071 0.4865 -0.3343 +vn 0.9239 0.0000 0.3827 +vn -0.9162 0.1285 -0.3795 +vn -0.4836 0.8520 -0.2003 +vn 0.3827 0.0000 -0.9239 +vn -0.3701 0.8520 -0.3701 +vn -0.6178 0.4865 -0.6178 +vn -0.7012 0.1285 -0.7012 +vn -0.9239 0.0000 -0.3827 +vn -0.3795 0.1285 -0.9162 +vn -0.7071 0.0000 -0.7071 +vn -0.3827 0.0000 0.9239 +vn -0.3343 0.4865 -0.8071 +vn -0.2003 0.8520 -0.4836 +vn -0.3827 0.0000 -0.9239 +vn 0.7071 0.0000 -0.7071 +vn 0.9239 0.0000 -0.3827 +vn 0.1866 0.9824 0.0000 +vn 0.1447 0.7194 0.6794 +vn -0.1363 -0.6737 0.7263 +vn 0.0000 -0.7071 0.7071 +vn -0.1363 -0.6737 -0.7263 +vn 0.0000 -0.7071 -0.7071 +vn 0.1447 0.7194 -0.6794 +vn 0.0196 0.0473 0.9987 +vn -0.7071 -0.7071 0.0000 +vn 0.0196 0.0473 -0.9987 +vn 0.5293 0.5293 -0.6630 +vn 0.0670 0.0670 0.9955 +vn -0.4617 -0.4617 -0.7573 +vn -0.4617 -0.4617 0.7573 +vn 0.5293 0.5293 0.6630 +vn 0.9824 0.1866 0.0000 +vn 0.0473 0.0196 0.9987 +vn 0.7194 0.1447 -0.6794 +vn 0.0670 0.0670 -0.9955 +vn -0.6737 -0.1363 -0.7263 +vn -0.6737 -0.1363 0.7263 +vn 0.7194 0.1447 0.6794 +vn 0.0473 0.0196 -0.9987 +vn -0.1447 0.7194 0.6794 +vn -0.1447 0.7194 -0.6794 +vn -0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 0.7263 +vn 0.7071 -0.7071 0.0000 +vn -0.0196 0.0473 0.9987 +vn -0.5293 0.5293 0.6630 +vn -0.0670 0.0670 -0.9955 +vn 0.4617 -0.4617 0.7573 +vn -0.1866 0.9824 0.0000 +vn 0.4617 -0.4617 -0.7573 +vn 0.1363 -0.6737 -0.7263 +vn -0.5293 0.5293 -0.6630 +vn -0.9824 0.1866 0.0000 +vn -0.0473 0.0196 -0.9987 +vn -0.0473 0.0196 0.9987 +vn -0.0670 0.0670 0.9955 +vn 0.6737 -0.1363 0.7263 +vn 0.6737 -0.1363 -0.7263 +vn -0.7194 0.1447 -0.6794 +vn -0.7194 0.1447 0.6794 +vn 0.0000 0.9824 -0.1866 +vn 0.6794 0.7194 -0.1447 +vn 0.7263 -0.6737 0.1363 +vn -0.7263 -0.6737 0.1363 +vn -0.6794 0.7194 -0.1447 +vn 0.9987 0.0473 -0.0196 +vn -0.9987 0.0473 -0.0196 +vn -0.6630 0.5293 -0.5293 +vn 0.9955 0.0670 -0.0670 +vn -0.7573 -0.4617 0.4617 +vn 0.7573 -0.4617 0.4617 +vn 0.6630 0.5293 -0.5293 +vn 0.0000 0.1866 -0.9824 +vn 0.9987 0.0196 -0.0473 +vn -0.6794 0.1447 -0.7194 +vn -0.9955 0.0670 -0.0670 +vn 0.6794 0.1447 -0.7194 +vn -0.7263 -0.1363 0.6737 +vn 0.7263 -0.1363 0.6737 +vn -0.9987 0.0196 -0.0473 +vn 0.6794 0.7194 0.1447 +vn -0.6794 0.7194 0.1447 +vn -0.9987 0.0473 0.0196 +vn 0.7263 -0.6737 -0.1363 +vn 0.9987 0.0473 0.0196 +vn 0.6630 0.5293 0.5293 +vn -0.6630 0.5293 0.5293 +vn 0.7573 -0.4617 -0.4617 +vn 0.0000 0.9824 0.1866 +vn -0.7573 -0.4617 -0.4617 +vn -0.7263 -0.6737 -0.1363 +vn 0.0000 0.1866 0.9824 +vn -0.9987 0.0196 0.0473 +vn -0.9955 0.0670 0.0670 +vn 0.9987 0.0196 0.0473 +vn 0.9955 0.0670 0.0670 +vn 0.7263 -0.1363 -0.6737 +vn -0.7263 -0.1363 -0.6737 +vn -0.6794 0.1447 0.7194 +vn 0.6794 0.1447 0.7194 +s off +f 281/1/1 288/2/1 279/3/1 +f 6/4/2 7/5/2 5/6/2 +f 3/7/3 8/8/3 4/9/3 +f 2/10/4 5/11/4 1/12/4 +f 4/13/1 6/4/1 2/14/1 +f 1/15/5 7/16/5 3/17/5 +f 19/18/6 18/19/6 17/20/6 +f 15/21/2 13/22/2 14/23/2 +f 12/24/1 15/21/1 10/25/1 +f 9/26/5 13/27/5 11/28/5 +f 11/29/3 16/30/3 12/31/3 +f 10/32/4 14/33/4 9/34/4 +f 23/35/2 21/36/2 22/37/2 +f 19/38/3 24/39/3 20/40/3 +f 18/19/4 22/41/4 17/42/4 +f 20/40/1 23/35/1 18/19/1 +f 27/43/6 26/44/6 25/45/6 +f 31/46/2 29/47/2 30/48/2 +f 27/49/3 32/50/3 28/51/3 +f 26/44/4 30/52/4 25/53/4 +f 28/51/1 31/46/1 26/44/1 +f 35/54/6 34/55/6 33/56/6 +f 39/57/2 37/58/2 38/59/2 +f 35/60/3 40/61/3 36/62/3 +f 34/55/4 38/63/4 33/64/4 +f 36/62/1 39/57/1 34/55/1 +f 43/65/6 42/66/6 41/67/6 +f 47/68/2 45/69/2 46/70/2 +f 43/71/3 48/72/3 44/73/3 +f 42/66/4 46/74/4 41/75/4 +f 44/73/1 47/68/1 42/66/1 +f 51/76/6 50/77/6 49/78/6 +f 55/79/2 53/80/2 54/81/2 +f 51/82/4 56/83/4 52/84/4 +f 50/77/3 54/85/3 49/86/3 +f 52/84/5 55/79/5 50/77/5 +f 59/87/6 58/88/6 57/89/6 +f 63/90/2 61/91/2 62/92/2 +f 59/93/4 64/94/4 60/95/4 +f 58/88/3 62/96/3 57/97/3 +f 60/95/5 63/90/5 58/88/5 +f 67/98/6 66/99/6 65/100/6 +f 71/101/2 69/102/2 70/103/2 +f 67/104/4 72/105/4 68/106/4 +f 66/99/3 70/107/3 65/108/3 +f 68/106/5 71/101/5 66/99/5 +f 75/109/6 74/110/6 73/111/6 +f 79/112/2 77/113/2 78/114/2 +f 75/115/4 80/116/4 76/117/4 +f 74/110/3 78/118/3 73/119/3 +f 76/117/5 79/112/5 74/110/5 +f 83/120/6 82/121/6 81/122/6 +f 87/123/2 85/124/2 86/125/2 +f 83/126/5 88/127/5 84/128/5 +f 82/121/1 86/129/1 81/130/1 +f 84/128/3 87/123/3 82/121/3 +f 91/131/6 90/132/6 89/133/6 +f 95/134/2 93/135/2 94/136/2 +f 91/137/5 96/138/5 92/139/5 +f 90/132/1 94/140/1 89/141/1 +f 92/139/3 95/134/3 90/132/3 +f 99/142/6 98/143/6 97/144/6 +f 103/145/2 101/146/2 102/147/2 +f 99/148/5 104/149/5 100/150/5 +f 98/143/1 102/151/1 97/152/1 +f 100/150/3 103/145/3 98/143/3 +f 107/153/6 106/154/6 105/155/6 +f 111/156/2 109/157/2 110/158/2 +f 107/159/5 112/160/5 108/161/5 +f 106/154/1 110/162/1 105/163/1 +f 108/161/3 111/156/3 106/154/3 +f 115/164/6 114/165/6 113/166/6 +f 119/167/2 117/168/2 118/169/2 +f 115/170/1 120/171/1 116/172/1 +f 114/165/5 118/173/5 113/174/5 +f 116/172/4 119/167/4 114/165/4 +f 123/175/6 122/176/6 121/177/6 +f 127/178/2 125/179/2 126/180/2 +f 123/181/1 128/182/1 124/183/1 +f 122/176/5 126/184/5 121/185/5 +f 124/183/4 127/178/4 122/176/4 +f 131/186/6 130/187/6 129/188/6 +f 135/189/2 133/190/2 134/191/2 +f 131/192/1 136/193/1 132/194/1 +f 130/187/5 134/195/5 129/196/5 +f 132/194/4 135/189/4 130/187/4 +f 139/197/6 138/198/6 137/199/6 +f 143/200/2 141/201/2 142/202/2 +f 139/203/1 144/204/1 140/205/1 +f 138/198/5 142/206/5 137/207/5 +f 140/205/4 143/200/4 138/198/4 +f 223/208/2 224/209/2 222/210/2 +f 215/211/2 216/212/2 214/213/2 +f 213/214/1 215/211/1 211/215/1 +f 210/216/5 216/217/5 212/218/5 +f 212/218/3 217/219/3 213/214/3 +f 211/215/4 214/220/4 210/221/4 +f 221/222/1 223/223/1 219/224/1 +f 218/225/5 224/209/5 220/226/5 +f 220/226/3 225/227/3 221/222/3 +f 219/228/4 222/229/4 218/225/4 +f 232/230/3 229/231/3 233/232/3 +f 231/233/4 226/234/4 230/235/4 +f 233/232/1 227/236/1 231/233/1 +f 230/235/5 228/237/5 232/238/5 +f 240/239/3 237/240/3 241/241/3 +f 239/242/4 234/243/4 238/244/4 +f 241/245/1 235/246/1 239/242/1 +f 238/244/5 236/247/5 240/239/5 +f 236/247/2 235/248/2 237/249/2 +f 229/250/2 226/234/2 227/236/2 +f 243/251/2 244/252/2 242/253/2 +f 248/254/6 246/255/6 247/256/6 +f 244/252/5 247/257/5 242/253/5 +f 256/258/6 254/259/6 255/260/6 +f 243/251/1 249/261/1 245/262/1 +f 251/263/2 252/264/2 250/265/2 +f 252/264/1 255/266/1 250/265/1 +f 251/263/5 257/267/5 253/268/5 +f 259/269/2 260/270/2 258/271/2 +f 264/272/6 262/273/6 263/274/6 +f 260/270/4 263/275/4 258/271/4 +f 272/276/6 270/277/6 271/278/6 +f 259/269/3 265/279/3 261/280/3 +f 267/281/2 268/282/2 266/283/2 +f 268/282/3 271/284/3 266/283/3 +f 267/281/4 273/285/4 269/286/4 +f 280/287/6 279/3/6 278/288/6 +f 274/289/3 284/290/3 275/291/3 +f 277/292/4 282/293/4 276/294/4 +f 279/3/4 287/295/4 278/288/4 +f 3/296/6 274/297/6 1/298/6 +f 4/13/6 276/299/6 3/296/6 +f 2/14/6 277/300/6 4/13/6 +f 1/298/6 275/301/6 2/14/6 +f 285/302/6 286/303/6 282/293/6 +f 284/304/6 289/305/6 285/306/6 +f 283/307/6 288/308/6 284/290/6 +f 282/309/6 287/310/6 283/311/6 +f 278/288/5 286/312/5 280/287/5 +f 275/313/5 285/306/5 277/314/5 +f 276/315/1 283/311/1 274/316/1 +f 280/287/3 289/317/3 281/1/3 +f 291/318/2 292/319/2 290/320/2 +f 296/321/7 301/322/7 297/323/7 +f 291/318/1 297/323/1 293/324/1 +f 292/325/5 295/326/5 290/327/5 +f 293/328/3 294/329/3 292/330/3 +f 290/331/4 296/332/4 291/333/4 +f 301/322/3 302/334/3 298/335/3 +f 294/336/8 299/337/8 295/326/8 +f 297/338/9 298/335/9 294/329/9 +f 295/339/10 300/340/10 296/332/10 +f 299/341/4 304/342/4 300/340/4 +f 300/340/1 305/343/1 301/322/1 +f 298/335/5 303/344/5 299/337/5 +f 384/345/5 383/346/5 382/347/5 +f 387/348/2 388/349/2 386/350/2 +f 387/348/5 393/351/5 389/352/5 +f 389/352/4 390/353/4 388/354/4 +f 386/355/3 392/356/3 387/348/3 +f 400/357/1 399/358/1 398/359/1 +f 383/346/4 395/360/4 382/347/4 +f 385/361/6 396/362/6 383/346/6 +f 382/347/2 394/363/2 384/345/2 +f 384/345/3 397/364/3 385/361/3 +f 403/365/2 404/366/2 402/367/2 +f 403/365/1 409/368/1 405/369/1 +f 405/369/3 406/370/3 404/371/3 +f 402/372/4 408/373/4 403/365/4 +f 399/358/3 411/374/3 398/359/3 +f 401/375/6 412/376/6 399/358/6 +f 398/359/2 410/377/2 400/357/2 +f 400/357/4 413/378/4 401/375/4 +f 416/379/4 415/380/4 414/381/4 +f 419/382/2 420/383/2 418/384/2 +f 419/382/4 425/385/4 421/386/4 +f 421/386/1 422/387/1 420/388/1 +f 418/389/5 424/390/5 419/382/5 +f 432/391/3 431/392/3 430/393/3 +f 415/380/1 427/394/1 414/381/1 +f 417/395/6 428/396/6 415/380/6 +f 414/381/2 426/397/2 416/379/2 +f 416/379/5 429/398/5 417/395/5 +f 435/399/2 436/400/2 434/401/2 +f 435/399/3 441/402/3 437/403/3 +f 437/403/5 438/404/5 436/405/5 +f 434/406/1 440/407/1 435/399/1 +f 431/392/5 443/408/5 430/393/5 +f 433/409/6 444/410/6 431/392/6 +f 432/391/2 443/411/2 442/412/2 +f 432/391/1 445/413/1 433/409/1 +f 452/414/3 446/415/3 448/416/3 +f 447/417/4 453/418/4 449/419/4 +f 451/420/5 452/414/5 453/418/5 +f 460/421/4 454/422/4 456/423/4 +f 455/424/3 461/425/3 457/426/3 +f 459/427/1 460/421/1 461/425/1 +f 468/428/5 462/429/5 464/430/5 +f 463/431/1 469/432/1 465/433/1 +f 467/434/4 468/428/4 469/432/4 +f 476/435/1 470/436/1 472/437/1 +f 471/438/5 477/439/5 473/440/5 +f 475/441/3 476/435/3 477/439/3 +f 281/1/1 289/305/1 288/2/1 +f 6/4/2 8/442/2 7/5/2 +f 3/7/3 7/443/3 8/8/3 +f 2/10/4 6/444/4 5/11/4 +f 4/13/1 8/442/1 6/4/1 +f 1/15/5 5/445/5 7/16/5 +f 19/18/6 20/40/6 18/19/6 +f 15/21/2 16/446/2 13/22/2 +f 12/24/1 16/446/1 15/21/1 +f 9/26/5 14/447/5 13/27/5 +f 11/29/3 13/448/3 16/30/3 +f 10/32/4 15/449/4 14/33/4 +f 23/35/2 24/39/2 21/36/2 +f 19/38/3 21/450/3 24/39/3 +f 18/19/4 23/35/4 22/41/4 +f 20/40/1 24/39/1 23/35/1 +f 27/43/6 28/51/6 26/44/6 +f 31/46/2 32/50/2 29/47/2 +f 27/49/3 29/451/3 32/50/3 +f 26/44/4 31/46/4 30/52/4 +f 28/51/1 32/50/1 31/46/1 +f 35/54/6 36/62/6 34/55/6 +f 39/57/2 40/61/2 37/58/2 +f 35/60/3 37/452/3 40/61/3 +f 34/55/4 39/57/4 38/63/4 +f 36/62/1 40/61/1 39/57/1 +f 43/65/6 44/73/6 42/66/6 +f 47/68/2 48/72/2 45/69/2 +f 43/71/3 45/453/3 48/72/3 +f 42/66/4 47/68/4 46/74/4 +f 44/73/1 48/72/1 47/68/1 +f 51/76/6 52/84/6 50/77/6 +f 55/79/2 56/83/2 53/80/2 +f 51/82/4 53/454/4 56/83/4 +f 50/77/3 55/79/3 54/85/3 +f 52/84/5 56/83/5 55/79/5 +f 59/87/6 60/95/6 58/88/6 +f 63/90/2 64/94/2 61/91/2 +f 59/93/4 61/455/4 64/94/4 +f 58/88/3 63/90/3 62/96/3 +f 60/95/5 64/94/5 63/90/5 +f 67/98/6 68/106/6 66/99/6 +f 71/101/2 72/105/2 69/102/2 +f 67/104/4 69/456/4 72/105/4 +f 66/99/3 71/101/3 70/107/3 +f 68/106/5 72/105/5 71/101/5 +f 75/109/6 76/117/6 74/110/6 +f 79/112/2 80/116/2 77/113/2 +f 75/115/4 77/457/4 80/116/4 +f 74/110/3 79/112/3 78/118/3 +f 76/117/5 80/116/5 79/112/5 +f 83/120/6 84/128/6 82/121/6 +f 87/123/2 88/127/2 85/124/2 +f 83/126/5 85/458/5 88/127/5 +f 82/121/1 87/123/1 86/129/1 +f 84/128/3 88/127/3 87/123/3 +f 91/131/6 92/139/6 90/132/6 +f 95/134/2 96/138/2 93/135/2 +f 91/137/5 93/459/5 96/138/5 +f 90/132/1 95/134/1 94/140/1 +f 92/139/3 96/138/3 95/134/3 +f 99/142/6 100/150/6 98/143/6 +f 103/145/2 104/149/2 101/146/2 +f 99/148/5 101/460/5 104/149/5 +f 98/143/1 103/145/1 102/151/1 +f 100/150/3 104/149/3 103/145/3 +f 107/153/6 108/161/6 106/154/6 +f 111/156/2 112/160/2 109/157/2 +f 107/159/5 109/461/5 112/160/5 +f 106/154/1 111/156/1 110/162/1 +f 108/161/3 112/160/3 111/156/3 +f 115/164/6 116/172/6 114/165/6 +f 119/167/2 120/171/2 117/168/2 +f 115/170/1 117/462/1 120/171/1 +f 114/165/5 119/167/5 118/173/5 +f 116/172/4 120/171/4 119/167/4 +f 123/175/6 124/183/6 122/176/6 +f 127/178/2 128/182/2 125/179/2 +f 123/181/1 125/463/1 128/182/1 +f 122/176/5 127/178/5 126/184/5 +f 124/183/4 128/182/4 127/178/4 +f 131/186/6 132/194/6 130/187/6 +f 135/189/2 136/193/2 133/190/2 +f 131/192/1 133/464/1 136/193/1 +f 130/187/5 135/189/5 134/195/5 +f 132/194/4 136/193/4 135/189/4 +f 139/197/6 140/205/6 138/198/6 +f 143/200/2 144/204/2 141/201/2 +f 139/203/1 141/465/1 144/204/1 +f 138/198/5 143/200/5 142/206/5 +f 140/205/4 144/204/4 143/200/4 +f 223/208/2 225/227/2 224/209/2 +f 215/211/2 217/219/2 216/212/2 +f 213/214/1 217/219/1 215/211/1 +f 210/216/5 214/466/5 216/217/5 +f 212/218/3 216/217/3 217/219/3 +f 211/215/4 215/211/4 214/220/4 +f 221/222/1 225/227/1 223/223/1 +f 218/225/5 222/229/5 224/209/5 +f 220/226/3 224/209/3 225/227/3 +f 219/228/4 223/467/4 222/229/4 +f 232/230/3 228/468/3 229/231/3 +f 231/233/4 227/236/4 226/234/4 +f 233/232/1 229/231/1 227/236/1 +f 230/235/5 226/234/5 228/237/5 +f 240/239/3 236/247/3 237/240/3 +f 239/242/4 235/246/4 234/243/4 +f 241/245/1 237/469/1 235/246/1 +f 238/244/5 234/243/5 236/247/5 +f 236/247/2 234/243/2 235/248/2 +f 229/250/2 228/470/2 226/234/2 +f 243/251/2 245/262/2 244/252/2 +f 248/254/6 249/261/6 246/255/6 +f 244/252/5 248/471/5 247/257/5 +f 256/258/6 257/267/6 254/259/6 +f 243/251/1 246/255/1 249/261/1 +f 251/263/2 253/268/2 252/264/2 +f 252/264/1 256/472/1 255/266/1 +f 251/263/5 254/259/5 257/267/5 +f 259/269/2 261/280/2 260/270/2 +f 264/272/6 265/279/6 262/273/6 +f 260/270/4 264/473/4 263/275/4 +f 272/276/6 273/285/6 270/277/6 +f 259/269/3 262/273/3 265/279/3 +f 267/281/2 269/286/2 268/282/2 +f 268/282/3 272/474/3 271/284/3 +f 267/281/4 270/277/4 273/285/4 +f 280/287/6 281/1/6 279/3/6 +f 274/289/3 283/307/3 284/290/3 +f 277/292/4 285/302/4 282/293/4 +f 279/3/4 288/308/4 287/295/4 +f 3/296/6 276/299/6 274/297/6 +f 4/13/6 277/300/6 276/299/6 +f 2/14/6 275/301/6 277/300/6 +f 1/298/6 274/297/6 275/301/6 +f 285/302/6 289/317/6 286/303/6 +f 284/304/6 288/2/6 289/305/6 +f 283/307/6 287/295/6 288/308/6 +f 282/309/6 286/312/6 287/310/6 +f 278/288/5 287/310/5 286/312/5 +f 275/313/5 284/304/5 285/306/5 +f 276/315/1 282/309/1 283/311/1 +f 280/287/3 286/303/3 289/317/3 +f 291/318/2 293/324/2 292/319/2 +f 296/321/7 300/340/7 301/322/7 +f 291/318/1 296/321/1 297/323/1 +f 292/325/5 294/336/5 295/326/5 +f 293/328/3 297/338/3 294/329/3 +f 290/331/4 295/339/4 296/332/4 +f 301/322/3 305/343/3 302/334/3 +f 294/336/8 298/335/8 299/337/8 +f 297/338/9 301/322/9 298/335/9 +f 295/339/10 299/341/10 300/340/10 +f 299/341/4 303/475/4 304/342/4 +f 300/340/1 304/342/1 305/343/1 +f 298/335/5 302/334/5 303/344/5 +f 384/345/5 385/361/5 383/346/5 +f 387/348/2 389/352/2 388/349/2 +f 387/348/5 392/356/5 393/351/5 +f 389/352/4 393/351/4 390/353/4 +f 386/355/3 391/476/3 392/356/3 +f 400/357/1 401/375/1 399/358/1 +f 383/346/4 396/477/4 395/360/4 +f 385/361/6 397/478/6 396/362/6 +f 382/347/2 395/479/2 394/363/2 +f 384/345/3 394/480/3 397/364/3 +f 403/365/2 405/369/2 404/366/2 +f 403/365/1 408/373/1 409/368/1 +f 405/369/3 409/368/3 406/370/3 +f 402/372/4 407/481/4 408/373/4 +f 399/358/3 412/482/3 411/374/3 +f 401/375/6 413/483/6 412/376/6 +f 398/359/2 411/484/2 410/377/2 +f 400/357/4 410/485/4 413/378/4 +f 416/379/4 417/395/4 415/380/4 +f 419/382/2 421/386/2 420/383/2 +f 419/382/4 424/390/4 425/385/4 +f 421/386/1 425/385/1 422/387/1 +f 418/389/5 423/486/5 424/390/5 +f 432/391/3 433/409/3 431/392/3 +f 415/380/1 428/487/1 427/394/1 +f 417/395/6 429/488/6 428/396/6 +f 414/381/2 427/489/2 426/397/2 +f 416/379/5 426/490/5 429/398/5 +f 435/399/2 437/403/2 436/400/2 +f 435/399/3 440/407/3 441/402/3 +f 437/403/5 441/402/5 438/404/5 +f 434/406/1 439/491/1 440/407/1 +f 431/392/5 444/492/5 443/408/5 +f 433/409/6 445/493/6 444/410/6 +f 432/391/2 430/393/2 443/411/2 +f 432/391/1 442/494/1 445/413/1 +f 452/414/3 450/495/3 446/415/3 +f 447/417/4 451/420/4 453/418/4 +f 451/420/5 450/495/5 452/414/5 +f 460/421/4 458/496/4 454/422/4 +f 455/424/3 459/427/3 461/425/3 +f 459/427/1 458/496/1 460/421/1 +f 468/428/5 466/497/5 462/429/5 +f 463/431/1 467/434/1 469/432/1 +f 467/434/4 466/497/4 468/428/4 +f 476/435/1 474/498/1 470/436/1 +f 471/438/5 475/441/5 477/439/5 +f 475/441/3 474/498/3 476/435/3 +s 1 +f 207/499/11 148/500/12 145/501/13 +f 145/501/13 149/502/14 146/503/15 +f 207/499/11 206/504/2 147/505/16 +f 147/506/16 151/507/17 148/508/12 +f 148/508/12 152/509/18 149/502/14 +f 147/506/16 206/510/2 150/511/19 +f 151/512/17 153/513/20 154/514/21 +f 152/509/18 154/514/21 155/515/22 +f 150/516/19 206/517/2 153/513/20 +f 155/515/22 157/518/23 158/519/24 +f 153/520/20 206/521/2 156/522/25 +f 153/520/20 157/518/23 154/523/21 +f 158/519/24 160/524/26 161/525/27 +f 156/526/25 206/527/2 159/528/28 +f 156/526/25 160/524/26 157/529/23 +f 161/525/27 163/530/29 164/531/30 +f 159/532/28 206/533/2 162/534/31 +f 160/535/26 162/534/31 163/530/29 +f 163/536/29 167/537/32 164/531/30 +f 162/538/31 206/539/2 165/540/33 +f 162/538/31 166/541/34 163/536/29 +f 166/542/34 170/543/35 167/537/32 +f 165/544/33 206/545/2 168/546/36 +f 165/544/33 169/547/37 166/542/34 +f 168/548/36 206/549/2 171/550/38 +f 168/548/36 172/551/39 169/552/37 +f 170/543/35 172/551/39 173/553/40 +f 171/554/38 177/555/41 172/556/39 +f 172/556/39 178/557/42 173/553/40 +f 171/554/38 206/558/2 176/559/43 +f 176/560/43 182/561/44 177/562/41 +f 188/563/45 184/564/46 183/565/47 +f 178/557/42 182/561/44 183/565/47 +f 176/560/43 206/566/2 181/567/48 +f 167/537/32 195/568/49 164/531/30 +f 170/543/35 194/569/50 167/537/32 +f 181/570/48 187/571/51 182/572/44 +f 183/565/47 185/573/52 178/557/42 +f 183/565/47 187/571/51 188/563/45 +f 181/570/48 206/574/2 186/575/53 +f 149/502/14 209/576/3 146/503/15 +f 186/577/53 192/578/54 187/579/51 +f 164/531/30 199/580/55 161/525/27 +f 187/579/51 193/581/56 188/582/45 +f 186/577/53 206/583/2 191/584/57 +f 152/509/18 208/585/58 149/502/14 +f 192/586/54 196/587/59 197/588/60 +f 198/589/61 179/590/62 193/581/56 +f 193/581/56 197/588/60 198/589/61 +f 191/591/57 206/592/2 196/587/59 +f 203/593/63 175/594/64 198/589/61 +f 178/557/42 189/595/65 173/553/40 +f 173/553/40 190/596/4 170/543/35 +f 198/589/61 202/597/66 203/593/63 +f 196/598/59 206/599/2 201/600/67 +f 161/525/27 200/601/1 158/519/24 +f 146/503/15 174/602/68 203/593/63 +f 196/598/59 202/597/66 197/603/60 +f 155/515/22 205/604/69 152/509/18 +f 203/593/63 145/605/13 146/503/15 +f 201/606/67 206/607/2 207/608/11 +f 158/519/24 204/609/70 155/515/22 +f 193/581/56 180/610/5 188/582/45 +f 202/611/66 207/608/11 145/605/13 +f 314/612/71 307/613/9 306/614/2 +f 321/615/72 306/614/2 313/616/10 +f 319/617/73 312/618/4 311/619/74 +f 317/620/75 310/621/6 309/622/76 +f 315/623/77 308/624/3 307/613/9 +f 320/625/78 313/616/10 312/618/4 +f 318/626/79 311/619/74 310/627/6 +f 316/628/80 309/622/76 308/624/3 +f 323/629/81 316/630/80 315/623/77 +f 327/631/82 321/615/72 320/632/78 +f 316/630/80 325/633/83 317/634/75 +f 322/635/7 315/623/77 314/612/71 +f 321/615/72 322/635/7 314/612/71 +f 326/636/84 320/632/78 319/637/73 +f 328/638/85 329/639/86 322/635/7 +f 326/636/84 334/640/87 327/631/82 +f 330/641/88 324/642/89 323/629/81 +f 334/640/87 328/638/85 327/631/82 +f 324/642/89 332/643/90 325/633/83 +f 329/639/86 323/629/81 322/635/7 +f 319/637/73 318/644/79 326/636/84 +f 326/636/84 318/644/79 333/645/91 +f 317/634/75 325/633/83 318/646/79 +f 325/633/83 332/643/90 318/646/79 +f 332/647/90 336/648/5 318/649/79 +f 335/650/92 337/651/1 329/639/86 +f 318/652/79 341/653/52 333/654/91 +f 333/654/91 342/655/4 334/656/87 +f 330/641/88 339/657/3 331/658/93 +f 334/656/87 343/659/49 335/650/92 +f 331/658/93 340/660/64 332/647/90 +f 329/639/86 338/661/69 330/641/88 +f 352/662/71 345/663/9 344/664/2 +f 359/665/72 344/664/2 351/666/10 +f 357/667/73 350/668/4 349/669/74 +f 355/670/75 348/671/6 347/672/76 +f 353/673/77 346/674/3 345/663/9 +f 358/675/78 351/666/10 350/668/4 +f 356/676/79 349/669/74 348/677/6 +f 354/678/80 347/672/76 346/674/3 +f 353/673/77 362/679/89 354/680/80 +f 358/681/78 366/682/85 359/665/72 +f 354/680/80 363/683/83 355/684/75 +f 360/685/7 353/673/77 352/662/71 +f 359/665/72 360/685/7 352/662/71 +f 364/686/84 358/681/78 357/687/73 +f 366/682/85 367/688/86 360/685/7 +f 364/686/84 372/689/87 365/690/82 +f 361/691/81 369/692/93 362/679/89 +f 365/690/82 373/693/92 366/682/85 +f 362/679/89 370/694/90 363/683/83 +f 367/688/86 361/691/81 360/685/7 +f 357/687/73 356/695/79 364/686/84 +f 364/686/84 356/695/79 371/696/91 +f 355/684/75 363/683/83 356/697/79 +f 363/683/83 370/694/90 356/697/79 +f 370/698/90 374/699/5 356/700/79 +f 373/693/92 375/701/1 367/688/86 +f 356/702/79 379/703/52 371/704/91 +f 371/704/91 380/705/4 372/706/87 +f 368/707/88 377/708/3 369/709/93 +f 372/706/87 381/710/49 373/693/92 +f 369/709/93 378/711/64 370/698/90 +f 367/688/86 376/712/69 368/707/88 +f 478/713/2 487/714/94 479/715/10 +f 493/716/95 478/713/2 485/717/9 +f 483/718/76 492/719/96 484/720/3 +f 489/721/97 482/722/6 481/723/74 +f 487/714/94 480/724/4 479/715/10 +f 492/719/96 485/717/9 484/720/3 +f 490/725/98 483/718/76 482/726/6 +f 488/727/99 481/723/74 480/724/4 +f 495/728/100 488/729/99 487/714/94 +f 499/730/101 493/716/95 492/731/96 +f 488/729/99 497/732/102 489/733/97 +f 494/734/8 487/714/94 486/735/103 +f 493/716/95 494/734/8 486/735/103 +f 498/736/104 492/731/96 491/737/105 +f 500/738/106 501/739/107 494/734/8 +f 498/736/104 506/740/108 499/730/101 +f 495/728/100 503/741/109 496/742/110 +f 506/740/108 500/738/106 499/730/101 +f 496/742/110 504/743/111 497/732/102 +f 501/739/107 495/728/100 494/734/8 +f 491/737/105 490/744/98 498/736/104 +f 498/736/104 490/744/98 505/745/112 +f 489/733/97 497/732/102 490/746/98 +f 497/732/102 504/743/111 490/746/98 +f 504/747/111 508/748/1 490/749/98 +f 507/750/113 509/751/5 501/739/107 +f 490/752/98 513/753/69 505/754/112 +f 505/754/112 514/755/3 506/756/108 +f 502/757/114 511/758/4 503/759/109 +f 506/756/108 515/760/64 507/750/113 +f 503/759/109 512/761/49 504/747/111 +f 501/739/107 510/762/52 502/757/114 +f 524/763/103 517/764/10 516/765/2 +f 531/766/95 516/765/2 523/767/9 +f 529/768/105 522/769/3 521/770/76 +f 527/771/97 520/772/6 519/773/74 +f 525/774/94 518/775/4 517/764/10 +f 530/776/96 523/767/9 522/769/3 +f 528/777/98 521/770/76 520/778/6 +f 526/779/99 519/773/74 518/775/4 +f 533/780/100 526/781/99 525/774/94 +f 530/782/96 538/783/106 531/766/95 +f 526/781/99 535/784/102 527/785/97 +f 532/786/8 525/774/94 524/763/103 +f 538/783/106 524/763/103 531/766/95 +f 536/787/104 530/782/96 529/788/105 +f 538/783/106 539/789/107 532/786/8 +f 543/790/112 537/791/101 536/787/104 +f 540/792/114 534/793/110 533/780/100 +f 544/794/108 538/783/106 537/791/101 +f 534/793/110 542/795/111 535/784/102 +f 539/789/107 533/780/100 532/786/8 +f 529/788/105 528/796/98 536/787/104 +f 536/787/104 528/796/98 543/790/112 +f 527/785/97 535/784/102 528/797/98 +f 535/784/102 542/795/111 528/797/98 +f 542/798/111 546/799/1 528/800/98 +f 545/801/113 547/802/5 539/789/107 +f 528/803/98 551/804/69 543/805/112 +f 543/805/112 552/806/3 544/807/108 +f 540/792/114 549/808/4 541/809/109 +f 544/807/108 553/810/64 545/801/113 +f 541/809/109 550/811/49 542/798/111 +f 539/789/107 548/812/52 540/792/114 +f 562/813/115 555/814/8 554/815/2 +f 569/816/116 554/815/2 561/817/7 +f 567/818/117 560/819/1 559/820/98 +f 565/821/118 558/822/6 557/823/79 +f 563/824/119 556/825/5 555/814/8 +f 568/826/120 561/817/7 560/819/1 +f 566/827/74 559/820/98 558/828/6 +f 564/829/121 557/823/79 556/825/5 +f 571/830/122 564/831/121 563/824/119 +f 575/832/123 569/816/116 568/833/120 +f 564/831/121 573/834/124 565/835/118 +f 570/836/9 563/824/119 562/813/115 +f 569/816/116 570/836/9 562/813/115 +f 574/837/125 568/833/120 567/838/117 +f 576/839/126 577/840/127 570/836/9 +f 574/837/125 582/841/128 575/832/123 +f 578/842/129 572/843/130 571/830/122 +f 575/832/123 583/844/131 576/839/126 +f 572/843/130 580/845/132 573/834/124 +f 577/840/127 571/830/122 570/836/9 +f 567/838/117 566/846/74 574/837/125 +f 574/837/125 566/846/74 581/847/133 +f 565/835/118 573/834/124 566/848/74 +f 573/834/124 580/845/132 566/848/74 +f 580/849/132 584/850/4 566/851/74 +f 583/844/131 585/852/3 577/840/127 +f 566/853/74 589/854/49 581/855/133 +f 581/855/133 590/856/1 582/857/128 +f 578/842/129 587/858/5 579/859/134 +f 582/857/128 591/860/69 583/844/131 +f 579/859/134 588/861/52 580/849/132 +f 577/840/127 586/862/64 578/842/129 +f 600/863/115 593/864/8 592/865/2 +f 607/866/116 592/865/2 599/867/7 +f 605/868/117 598/869/1 597/870/98 +f 603/871/118 596/872/6 595/873/79 +f 601/874/119 594/875/5 593/864/8 +f 606/876/120 599/867/7 598/869/1 +f 604/877/74 597/870/98 596/878/6 +f 602/879/121 595/873/79 594/875/5 +f 601/874/119 610/880/130 602/881/121 +f 606/882/120 614/883/126 607/866/116 +f 602/881/121 611/884/124 603/885/118 +f 608/886/9 601/874/119 600/863/115 +f 607/866/116 608/886/9 600/863/115 +f 612/887/125 606/882/120 605/888/117 +f 614/883/126 615/889/127 608/886/9 +f 612/887/125 620/890/128 613/891/123 +f 609/892/122 617/893/134 610/880/130 +f 613/891/123 621/894/131 614/883/126 +f 610/880/130 618/895/132 611/884/124 +f 615/889/127 609/892/122 608/886/9 +f 605/888/117 604/896/74 612/887/125 +f 612/887/125 604/896/74 619/897/133 +f 603/885/118 611/884/124 604/898/74 +f 611/884/124 618/895/132 604/898/74 +f 618/899/132 622/900/4 604/901/74 +f 621/894/131 623/902/3 615/889/127 +f 604/903/74 627/904/49 619/905/133 +f 619/905/133 628/906/1 620/907/128 +f 616/908/129 625/909/5 617/910/134 +f 620/907/128 629/911/69 621/894/131 +f 617/910/134 626/912/52 618/899/132 +f 615/889/127 624/913/64 616/908/129 +f 630/914/2 639/915/135 631/916/7 +f 645/917/136 630/914/2 637/918/8 +f 635/919/79 644/920/137 636/921/5 +f 641/922/138 634/923/6 633/924/98 +f 639/915/135 632/925/1 631/916/7 +f 644/920/137 637/918/8 636/921/5 +f 642/926/76 635/919/79 634/927/6 +f 640/928/139 633/924/98 632/925/1 +f 647/929/140 640/930/139 639/915/135 +f 644/931/137 652/932/141 645/917/136 +f 640/930/139 649/933/142 641/934/138 +f 646/935/10 639/915/135 638/936/143 +f 645/917/136 646/935/10 638/936/143 +f 650/937/144 644/931/137 643/938/145 +f 652/932/141 653/939/146 646/935/10 +f 650/937/144 658/940/147 651/941/148 +f 647/929/140 655/942/149 648/943/150 +f 658/940/147 652/932/141 651/941/148 +f 648/943/150 656/944/151 649/933/142 +f 653/939/146 647/929/140 646/935/10 +f 643/938/145 642/945/76 650/937/144 +f 650/937/144 642/945/76 657/946/152 +f 641/934/138 649/933/142 642/947/76 +f 649/933/142 656/944/151 642/947/76 +f 656/948/151 660/949/3 642/950/76 +f 659/951/153 661/952/4 653/939/146 +f 642/953/76 665/954/64 657/955/152 +f 657/955/152 666/956/5 658/957/147 +f 654/958/154 663/959/1 655/960/149 +f 658/957/147 667/961/52 659/951/153 +f 655/960/149 664/962/69 656/948/151 +f 653/939/146 662/963/49 654/958/154 +f 676/964/143 669/965/7 668/966/2 +f 683/967/136 668/966/2 675/968/8 +f 681/969/145 674/970/5 673/971/79 +f 679/972/138 672/973/6 671/974/98 +f 677/975/135 670/976/1 669/965/7 +f 682/977/137 675/968/8 674/970/5 +f 680/978/76 673/971/79 672/979/6 +f 678/980/139 671/974/98 670/976/1 +f 677/975/135 686/981/150 678/982/139 +f 682/983/137 690/984/141 683/967/136 +f 678/982/139 687/985/142 679/986/138 +f 684/987/10 677/975/135 676/964/143 +f 690/984/141 676/964/143 683/967/136 +f 688/988/144 682/983/137 681/989/145 +f 690/984/141 691/990/146 684/987/10 +f 688/988/144 696/991/147 689/992/148 +f 685/993/140 693/994/149 686/981/150 +f 696/991/147 690/984/141 689/992/148 +f 686/981/150 694/995/151 687/985/142 +f 691/990/146 685/993/140 684/987/10 +f 681/989/145 680/996/76 688/988/144 +f 688/988/144 680/996/76 695/997/152 +f 679/986/138 687/985/142 680/998/76 +f 687/985/142 694/995/151 680/998/76 +f 694/999/151 698/1000/3 680/1001/76 +f 697/1002/153 699/1003/4 691/990/146 +f 680/1004/76 703/1005/64 695/1006/152 +f 695/1006/152 704/1007/5 696/1008/147 +f 692/1009/154 701/1010/1 693/1011/149 +f 696/1008/147 705/1012/52 697/1002/153 +f 693/1011/149 702/1013/69 694/999/151 +f 691/990/146 700/1014/49 692/1009/154 +f 207/499/11 147/505/16 148/500/12 +f 145/501/13 148/500/12 149/502/14 +f 147/506/16 150/511/19 151/507/17 +f 148/508/12 151/507/17 152/509/18 +f 151/512/17 150/516/19 153/513/20 +f 152/509/18 151/512/17 154/514/21 +f 155/515/22 154/523/21 157/518/23 +f 153/520/20 156/522/25 157/518/23 +f 158/519/24 157/529/23 160/524/26 +f 156/526/25 159/528/28 160/524/26 +f 161/525/27 160/535/26 163/530/29 +f 160/535/26 159/532/28 162/534/31 +f 163/536/29 166/541/34 167/537/32 +f 162/538/31 165/540/33 166/541/34 +f 166/542/34 169/547/37 170/543/35 +f 165/544/33 168/546/36 169/547/37 +f 168/548/36 171/550/38 172/551/39 +f 170/543/35 169/552/37 172/551/39 +f 171/554/38 176/559/43 177/555/41 +f 172/556/39 177/555/41 178/557/42 +f 176/560/43 181/567/48 182/561/44 +f 188/563/45 180/1015/5 184/564/46 +f 178/557/42 177/562/41 182/561/44 +f 167/537/32 194/569/50 195/568/49 +f 170/543/35 190/596/4 194/569/50 +f 181/570/48 186/575/53 187/571/51 +f 183/565/47 184/564/46 185/573/52 +f 183/565/47 182/572/44 187/571/51 +f 149/502/14 208/585/58 209/576/3 +f 186/577/53 191/584/57 192/578/54 +f 164/531/30 195/568/49 199/580/55 +f 187/579/51 192/578/54 193/581/56 +f 152/509/18 205/604/69 208/585/58 +f 192/586/54 191/591/57 196/587/59 +f 198/589/61 175/594/64 179/590/62 +f 193/581/56 192/586/54 197/588/60 +f 203/593/63 174/602/68 175/594/64 +f 178/557/42 185/573/52 189/595/65 +f 173/553/40 189/595/65 190/596/4 +f 198/589/61 197/603/60 202/597/66 +f 161/525/27 199/580/55 200/601/1 +f 146/503/15 209/576/3 174/602/68 +f 196/598/59 201/600/67 202/597/66 +f 155/515/22 204/609/70 205/604/69 +f 203/593/63 202/611/66 145/605/13 +f 158/519/24 200/601/1 204/609/70 +f 193/581/56 179/590/62 180/610/5 +f 202/611/66 201/606/67 207/608/11 +f 314/612/71 315/623/77 307/613/9 +f 321/615/72 314/612/71 306/614/2 +f 319/617/73 320/625/78 312/618/4 +f 317/620/75 318/1016/79 310/621/6 +f 315/623/77 316/628/80 308/624/3 +f 320/625/78 321/615/72 313/616/10 +f 318/626/79 319/617/73 311/619/74 +f 316/628/80 317/620/75 309/622/76 +f 323/629/81 324/642/89 316/630/80 +f 327/631/82 328/638/85 321/615/72 +f 316/630/80 324/642/89 325/633/83 +f 322/635/7 323/629/81 315/623/77 +f 321/615/72 328/638/85 322/635/7 +f 326/636/84 327/631/82 320/632/78 +f 328/638/85 335/650/92 329/639/86 +f 326/636/84 333/645/91 334/640/87 +f 330/641/88 331/1017/93 324/642/89 +f 334/640/87 335/650/92 328/638/85 +f 324/642/89 331/1017/93 332/643/90 +f 329/639/86 330/641/88 323/629/81 +f 332/647/90 340/660/64 336/648/5 +f 335/650/92 343/659/49 337/651/1 +f 318/652/79 336/1018/5 341/653/52 +f 333/654/91 341/653/52 342/655/4 +f 330/641/88 338/661/69 339/657/3 +f 334/656/87 342/655/4 343/659/49 +f 331/658/93 339/657/3 340/660/64 +f 329/639/86 337/651/1 338/661/69 +f 352/662/71 353/673/77 345/663/9 +f 359/665/72 352/662/71 344/664/2 +f 357/667/73 358/675/78 350/668/4 +f 355/670/75 356/1019/79 348/671/6 +f 353/673/77 354/678/80 346/674/3 +f 358/675/78 359/665/72 351/666/10 +f 356/676/79 357/667/73 349/669/74 +f 354/678/80 355/670/75 347/672/76 +f 353/673/77 361/691/81 362/679/89 +f 358/681/78 365/690/82 366/682/85 +f 354/680/80 362/679/89 363/683/83 +f 360/685/7 361/691/81 353/673/77 +f 359/665/72 366/682/85 360/685/7 +f 364/686/84 365/690/82 358/681/78 +f 366/682/85 373/693/92 367/688/86 +f 364/686/84 371/696/91 372/689/87 +f 361/691/81 368/707/88 369/692/93 +f 365/690/82 372/689/87 373/693/92 +f 362/679/89 369/692/93 370/694/90 +f 367/688/86 368/707/88 361/691/81 +f 370/698/90 378/711/64 374/699/5 +f 373/693/92 381/710/49 375/701/1 +f 356/702/79 374/1020/5 379/703/52 +f 371/704/91 379/703/52 380/705/4 +f 368/707/88 376/712/69 377/708/3 +f 372/706/87 380/705/4 381/710/49 +f 369/709/93 377/708/3 378/711/64 +f 367/688/86 375/701/1 376/712/69 +f 478/713/2 486/735/103 487/714/94 +f 493/716/95 486/735/103 478/713/2 +f 483/718/76 491/1021/105 492/719/96 +f 489/721/97 490/1022/98 482/722/6 +f 487/714/94 488/727/99 480/724/4 +f 492/719/96 493/716/95 485/717/9 +f 490/725/98 491/1021/105 483/718/76 +f 488/727/99 489/721/97 481/723/74 +f 495/728/100 496/742/110 488/729/99 +f 499/730/101 500/738/106 493/716/95 +f 488/729/99 496/742/110 497/732/102 +f 494/734/8 495/728/100 487/714/94 +f 493/716/95 500/738/106 494/734/8 +f 498/736/104 499/730/101 492/731/96 +f 500/738/106 507/750/113 501/739/107 +f 498/736/104 505/745/112 506/740/108 +f 495/728/100 502/757/114 503/741/109 +f 506/740/108 507/750/113 500/738/106 +f 496/742/110 503/741/109 504/743/111 +f 501/739/107 502/757/114 495/728/100 +f 504/747/111 512/761/49 508/748/1 +f 507/750/113 515/760/64 509/751/5 +f 490/752/98 508/1023/1 513/753/69 +f 505/754/112 513/753/69 514/755/3 +f 502/757/114 510/762/52 511/758/4 +f 506/756/108 514/755/3 515/760/64 +f 503/759/109 511/758/4 512/761/49 +f 501/739/107 509/751/5 510/762/52 +f 524/763/103 525/774/94 517/764/10 +f 531/766/95 524/763/103 516/765/2 +f 529/768/105 530/776/96 522/769/3 +f 527/771/97 528/1024/98 520/772/6 +f 525/774/94 526/779/99 518/775/4 +f 530/776/96 531/766/95 523/767/9 +f 528/777/98 529/768/105 521/770/76 +f 526/779/99 527/771/97 519/773/74 +f 533/780/100 534/793/110 526/781/99 +f 530/782/96 537/791/101 538/783/106 +f 526/781/99 534/793/110 535/784/102 +f 532/786/8 533/780/100 525/774/94 +f 538/783/106 532/786/8 524/763/103 +f 536/787/104 537/791/101 530/782/96 +f 538/783/106 545/801/113 539/789/107 +f 543/790/112 544/794/108 537/791/101 +f 540/792/114 541/1025/109 534/793/110 +f 544/794/108 545/801/113 538/783/106 +f 534/793/110 541/1025/109 542/795/111 +f 539/789/107 540/792/114 533/780/100 +f 542/798/111 550/811/49 546/799/1 +f 545/801/113 553/810/64 547/802/5 +f 528/803/98 546/1026/1 551/804/69 +f 543/805/112 551/804/69 552/806/3 +f 540/792/114 548/812/52 549/808/4 +f 544/807/108 552/806/3 553/810/64 +f 541/809/109 549/808/4 550/811/49 +f 539/789/107 547/802/5 548/812/52 +f 562/813/115 563/824/119 555/814/8 +f 569/816/116 562/813/115 554/815/2 +f 567/818/117 568/826/120 560/819/1 +f 565/821/118 566/1027/74 558/822/6 +f 563/824/119 564/829/121 556/825/5 +f 568/826/120 569/816/116 561/817/7 +f 566/827/74 567/818/117 559/820/98 +f 564/829/121 565/821/118 557/823/79 +f 571/830/122 572/843/130 564/831/121 +f 575/832/123 576/839/126 569/816/116 +f 564/831/121 572/843/130 573/834/124 +f 570/836/9 571/830/122 563/824/119 +f 569/816/116 576/839/126 570/836/9 +f 574/837/125 575/832/123 568/833/120 +f 576/839/126 583/844/131 577/840/127 +f 574/837/125 581/847/133 582/841/128 +f 578/842/129 579/1028/134 572/843/130 +f 575/832/123 582/841/128 583/844/131 +f 572/843/130 579/1028/134 580/845/132 +f 577/840/127 578/842/129 571/830/122 +f 580/849/132 588/861/52 584/850/4 +f 583/844/131 591/860/69 585/852/3 +f 566/853/74 584/1029/4 589/854/49 +f 581/855/133 589/854/49 590/856/1 +f 578/842/129 586/862/64 587/858/5 +f 582/857/128 590/856/1 591/860/69 +f 579/859/134 587/858/5 588/861/52 +f 577/840/127 585/852/3 586/862/64 +f 600/863/115 601/874/119 593/864/8 +f 607/866/116 600/863/115 592/865/2 +f 605/868/117 606/876/120 598/869/1 +f 603/871/118 604/1030/74 596/872/6 +f 601/874/119 602/879/121 594/875/5 +f 606/876/120 607/866/116 599/867/7 +f 604/877/74 605/868/117 597/870/98 +f 602/879/121 603/871/118 595/873/79 +f 601/874/119 609/892/122 610/880/130 +f 606/882/120 613/891/123 614/883/126 +f 602/881/121 610/880/130 611/884/124 +f 608/886/9 609/892/122 601/874/119 +f 607/866/116 614/883/126 608/886/9 +f 612/887/125 613/891/123 606/882/120 +f 614/883/126 621/894/131 615/889/127 +f 612/887/125 619/897/133 620/890/128 +f 609/892/122 616/908/129 617/893/134 +f 613/891/123 620/890/128 621/894/131 +f 610/880/130 617/893/134 618/895/132 +f 615/889/127 616/908/129 609/892/122 +f 618/899/132 626/912/52 622/900/4 +f 621/894/131 629/911/69 623/902/3 +f 604/903/74 622/1031/4 627/904/49 +f 619/905/133 627/904/49 628/906/1 +f 616/908/129 624/913/64 625/909/5 +f 620/907/128 628/906/1 629/911/69 +f 617/910/134 625/909/5 626/912/52 +f 615/889/127 623/902/3 624/913/64 +f 630/914/2 638/936/143 639/915/135 +f 645/917/136 638/936/143 630/914/2 +f 635/919/79 643/1032/145 644/920/137 +f 641/922/138 642/1033/76 634/923/6 +f 639/915/135 640/928/139 632/925/1 +f 644/920/137 645/917/136 637/918/8 +f 642/926/76 643/1032/145 635/919/79 +f 640/928/139 641/922/138 633/924/98 +f 647/929/140 648/943/150 640/930/139 +f 644/931/137 651/941/148 652/932/141 +f 640/930/139 648/943/150 649/933/142 +f 646/935/10 647/929/140 639/915/135 +f 645/917/136 652/932/141 646/935/10 +f 650/937/144 651/941/148 644/931/137 +f 652/932/141 659/951/153 653/939/146 +f 650/937/144 657/946/152 658/940/147 +f 647/929/140 654/958/154 655/942/149 +f 658/940/147 659/951/153 652/932/141 +f 648/943/150 655/942/149 656/944/151 +f 653/939/146 654/958/154 647/929/140 +f 656/948/151 664/962/69 660/949/3 +f 659/951/153 667/961/52 661/952/4 +f 642/953/76 660/1034/3 665/954/64 +f 657/955/152 665/954/64 666/956/5 +f 654/958/154 662/963/49 663/959/1 +f 658/957/147 666/956/5 667/961/52 +f 655/960/149 663/959/1 664/962/69 +f 653/939/146 661/952/4 662/963/49 +f 676/964/143 677/975/135 669/965/7 +f 683/967/136 676/964/143 668/966/2 +f 681/969/145 682/977/137 674/970/5 +f 679/972/138 680/1035/76 672/973/6 +f 677/975/135 678/980/139 670/976/1 +f 682/977/137 683/967/136 675/968/8 +f 680/978/76 681/969/145 673/971/79 +f 678/980/139 679/972/138 671/974/98 +f 677/975/135 685/993/140 686/981/150 +f 682/983/137 689/992/148 690/984/141 +f 678/982/139 686/981/150 687/985/142 +f 684/987/10 685/993/140 677/975/135 +f 690/984/141 684/987/10 676/964/143 +f 688/988/144 689/992/148 682/983/137 +f 690/984/141 697/1002/153 691/990/146 +f 688/988/144 695/997/152 696/991/147 +f 685/993/140 692/1009/154 693/994/149 +f 696/991/147 697/1002/153 690/984/141 +f 686/981/150 693/994/149 694/995/151 +f 691/990/146 692/1009/154 685/993/140 +f 694/999/151 702/1013/69 698/1000/3 +f 697/1002/153 705/1012/52 699/1003/4 +f 680/1004/76 698/1036/3 703/1005/64 +f 695/1006/152 703/1005/64 704/1007/5 +f 692/1009/154 700/1014/49 701/1010/1 +f 696/1008/147 704/1007/5 705/1012/52 +f 693/1011/149 701/1010/1 702/1013/69 +f 691/990/146 699/1003/4 700/1014/49 diff --git a/src/main/resources/assets/hbm/models/machines/microwave.obj b/src/main/resources/assets/hbm/models/machines/microwave.obj index 2f258c742..b13288dd5 100644 --- a/src/main/resources/assets/hbm/models/machines/microwave.obj +++ b/src/main/resources/assets/hbm/models/machines/microwave.obj @@ -1,963 +1,9 @@ -# Blender v2.82 (sub 7) OBJ File: 'microwave.blend' +# Blender v2.79 (sub 0) OBJ File: '' # www.blender.org -mtllib microwave.mtl -o mainbody_Cube.001 -v 0.238197 1.183358 -0.728996 -v 0.234821 1.183358 -0.728996 -v 0.238197 1.183358 -0.735637 -v 0.234821 1.183358 -0.735637 -v 0.238197 0.787154 -0.728996 -v 0.234821 0.787154 -0.728996 -v 0.234338 0.840926 -0.735637 -v 0.234821 1.127133 -0.735637 -v 0.238197 1.127133 -0.735637 -v 0.238197 0.840926 -0.735637 -v 0.155271 1.127133 -0.735637 -v 0.149897 1.125951 -0.735637 -v 0.838582 1.118357 -0.735637 -v 0.836356 1.121211 -0.735637 -v 0.827432 1.125951 -0.735637 -v 0.822058 1.127133 -0.735637 -v 0.826572 0.842109 -0.735637 -v 0.821198 0.840926 -0.735637 -v 0.837722 0.849703 -0.735637 -v 0.835496 0.846848 -0.735637 -v 0.140113 0.846848 -0.735637 -v 0.137887 0.849703 -0.735637 -v 0.154411 0.840926 -0.735637 -v 0.149037 0.842109 -0.735637 -v 0.138747 1.118357 -0.735637 -v 0.140973 1.121211 -0.735637 -v 0.234338 0.840926 -0.731795 -v 0.234821 1.127133 -0.731795 -v 0.140973 1.121211 -0.731795 -v 0.138747 1.118357 -0.731795 -v 0.149897 1.125951 -0.731795 -v 0.155271 1.127133 -0.731795 -v 0.137887 0.849703 -0.731795 -v 0.140113 0.846848 -0.731795 -v 0.149037 0.842109 -0.731795 -v 0.154411 0.840926 -0.731795 -v 0.303131 1.127133 -0.732176 -v 0.303131 0.840926 -0.732176 -v 0.820933 1.127133 -0.732176 -v 0.826308 1.125951 -0.732176 -v 0.835231 1.121211 -0.732176 -v 0.837458 1.118357 -0.732176 -v 0.836597 0.849703 -0.732176 -v 0.834371 0.846848 -0.732176 -v 0.825447 0.842109 -0.732176 -v 0.820073 0.840926 -0.732176 -v 0.234821 0.787154 -0.735637 -v 0.238197 0.787154 -0.735637 -v 0.114423 1.183358 -0.161513 -v 0.117047 1.181387 -0.156304 -v 0.127829 1.183358 -0.151007 -v 0.121182 1.181387 -0.153063 -v 0.127829 1.183358 -0.735637 -v 0.121182 1.181387 -0.733581 -v 0.117047 1.181387 -0.730340 -v 0.114423 1.183358 -0.725132 -v 0.862732 0.787154 -0.159690 -v 0.857794 0.789125 -0.156304 -v 0.849338 0.787154 -0.151007 -v 0.853658 0.789125 -0.153063 -v 0.847012 1.183358 -0.151007 -v 0.853658 1.181387 -0.153063 -v 0.857794 1.181387 -0.156304 -v 0.860417 1.183358 -0.161513 -v 0.853658 0.789125 -0.733581 -v 0.857794 0.789125 -0.730340 -v 0.860417 0.787154 -0.726955 -v 0.848027 0.787154 -0.735637 -v 0.860417 1.183358 -0.725132 -v 0.857794 1.181387 -0.730340 -v 0.853658 1.181387 -0.733581 -v 0.847012 1.183358 -0.735637 -v 0.112109 0.787154 -0.726955 -v 0.115750 0.789125 -0.732973 -v 0.120534 0.789125 -0.735475 -v 0.126814 0.787154 -0.735637 -v 0.125502 0.787154 -0.149193 -v 0.121182 0.789125 -0.153063 -v 0.117047 0.789125 -0.156304 -v 0.114423 0.787154 -0.159690 -v 0.246749 0.852258 -0.727568 -v 0.246749 1.118254 -0.727568 -v 0.246749 0.852258 -0.734150 -v 0.246749 1.118254 -0.734150 -v 0.282202 0.852258 -0.727568 -v 0.282202 1.118254 -0.727568 -v 0.282202 0.852258 -0.734150 -v 0.282202 1.118254 -0.734150 -v 0.246749 0.985256 -0.755632 -v 0.246749 0.985256 -0.762214 -v 0.264475 0.852258 -0.734150 -v 0.264475 1.118254 -0.734150 -v 0.282202 0.985256 -0.762214 -v 0.282202 0.985256 -0.755632 -v 0.264475 0.852258 -0.727568 -v 0.264475 1.118254 -0.727568 -v 0.264475 0.985256 -0.755632 -v 0.264475 0.985256 -0.762214 -v 0.246749 0.852258 -0.730859 -v 0.246749 1.051755 -0.751094 -v 0.246749 1.118254 -0.730859 -v 0.246749 0.918757 -0.754385 -v 0.255612 0.852258 -0.734150 -v 0.273339 1.118254 -0.734150 -v 0.282202 0.918757 -0.754385 -v 0.282202 0.852258 -0.730859 -v 0.282202 1.118254 -0.730859 -v 0.282202 0.918757 -0.747802 -v 0.273339 0.852258 -0.727568 -v 0.255612 1.118254 -0.727568 -v 0.246749 0.918757 -0.747802 -v 0.246749 1.051755 -0.757676 -v 0.273339 0.852258 -0.734150 -v 0.255612 1.118254 -0.734150 -v 0.282202 1.051755 -0.757676 -v 0.282202 1.051755 -0.751094 -v 0.255612 0.852258 -0.727568 -v 0.273339 1.118254 -0.727568 -v 0.264475 1.118254 -0.730849 -v 0.264475 0.852258 -0.730849 -v 0.255612 0.985256 -0.755632 -v 0.273339 0.985256 -0.755632 -v 0.264475 0.918757 -0.747802 -v 0.264475 1.051755 -0.751094 -v 0.282202 0.985256 -0.758923 -v 0.273339 0.985256 -0.762214 -v 0.255612 0.985256 -0.762214 -v 0.264475 0.918757 -0.754385 -v 0.264475 1.051755 -0.757676 -v 0.246749 0.985256 -0.758923 -v 0.246749 0.918757 -0.751094 -v 0.255612 1.051755 -0.757676 -v 0.255612 0.918757 -0.754385 -v 0.273339 0.918757 -0.754385 -v 0.282202 0.918757 -0.751094 -v 0.273339 1.051755 -0.751094 -v 0.273339 0.918757 -0.747802 -v 0.255612 0.918757 -0.747802 -v 0.255612 0.852258 -0.730849 -v 0.273339 1.118254 -0.730849 -v 0.255612 1.118254 -0.730849 -v 0.273339 0.852258 -0.730849 -v 0.255612 1.051755 -0.751094 -v 0.282202 1.051755 -0.754385 -v 0.273339 1.051755 -0.757676 -v 0.246749 1.051755 -0.754385 -v 0.303131 1.127133 -0.208209 -v 0.303131 0.840926 -0.208209 -v 0.820933 1.127133 -0.208209 -v 0.826308 1.125951 -0.208209 -v 0.835231 1.121211 -0.208209 -v 0.837458 1.118357 -0.208209 -v 0.836597 0.849703 -0.208209 -v 0.834371 0.846848 -0.208209 -v 0.825447 0.842109 -0.208209 -v 0.820073 0.840926 -0.208209 -v 0.339101 1.091541 -0.732176 -v 0.339101 0.874846 -0.732176 -v 0.796813 1.091541 -0.732176 -v 0.800847 1.090653 -0.732176 -v 0.807544 1.087096 -0.732176 -v 0.809215 1.084954 -0.732176 -v 0.808569 0.881432 -0.732176 -v 0.806898 0.879290 -0.732176 -v 0.800201 0.875733 -0.732176 -v 0.796168 0.874846 -0.732176 -v 0.238197 0.840926 -0.731795 -v 0.238197 1.127133 -0.731795 -v 0.415576 0.913412 -0.000812 -v 0.415576 1.057100 -0.000812 -v 0.415576 0.913412 -0.157633 -v 0.415576 1.057100 -0.157633 -v 0.559264 0.913412 -0.000812 -v 0.559264 1.057100 -0.000812 -v 0.559264 0.913412 -0.157633 -v 0.559264 1.057100 -0.157633 -vt 0.187756 0.185116 -vt 0.190250 0.359586 -vt 0.187359 0.359553 -vt 0.184816 0.183014 -vt 0.011904 0.361665 -vt 0.011410 0.182951 -vt 0.434160 0.035160 -vt 0.437617 0.233175 -vt 0.433848 0.233203 -vt 0.421314 0.234632 -vt 0.421314 0.024505 -vt 0.424461 0.141338 -vt 0.180342 0.556180 -vt 0.006258 0.555192 -vt 0.180341 0.553216 -vt 0.619010 0.294600 -vt 0.615336 0.293939 -vt 0.618997 0.293255 -vt 0.560911 0.771909 -vt 0.499383 0.771947 -vt 0.573681 0.763070 -vt 0.551781 0.278506 -vt 0.554882 0.277399 -vt 0.554849 0.278591 -vt 0.477598 0.276038 -vt 0.480699 0.274931 -vt 0.480666 0.276123 -vt 0.456844 0.275464 -vt 0.476217 0.274807 -vt 0.476184 0.275999 -vt 0.556296 0.277438 -vt 0.556263 0.278630 -vt 0.477631 0.274846 -vt 0.575727 0.277976 -vt 0.575694 0.279168 -vt 0.550366 0.278467 -vt 0.551814 0.277314 -vt 0.482080 0.276163 -vt 0.550399 0.277275 -vt 0.482113 0.274971 -vt 0.529499 0.294540 -vt 0.531162 0.293570 -vt 0.531174 0.294916 -vt 0.615349 0.295285 -vt 0.613628 0.294117 -vt 0.536559 0.295677 -vt 0.613641 0.295463 -vt 0.534848 0.295531 -vt 0.536546 0.294332 -vt 0.620678 0.294193 -vt 0.620665 0.292848 -vt 0.534835 0.294186 -vt 0.390231 0.176341 -vt 0.365296 0.176585 -vt 0.365277 0.174628 -vt 0.008379 0.053132 -vt 0.010531 0.175541 -vt 0.008501 0.175525 -vt 0.678815 0.051868 -vt 0.681765 0.009865 -vt 0.681766 0.212069 -vt 0.191651 0.177060 -vt 0.014270 0.002844 -vt 0.192984 0.003659 -vt 0.661827 0.216665 -vt 0.508504 0.216408 -vt 0.472754 0.213047 -vt 0.182461 0.549659 -vt 0.002549 0.378060 -vt 0.181254 0.376258 -vt 0.008747 0.359552 -vt 0.004975 0.185105 -vt 0.008120 0.184943 -vt 0.006284 0.051542 -vt 0.010601 0.053093 -vt 0.004000 0.561180 -vt 0.003756 0.551834 -vt 0.006284 0.177060 -vt 0.012743 0.177034 -vt 0.012878 0.051518 -vt 0.184195 0.361727 -vt 0.193393 0.361723 -vt 0.190903 0.184977 -vt 0.194207 0.183009 -vt 0.182571 0.559338 -vt 0.182461 0.550031 -vt 0.006443 0.558120 -vt 0.002020 0.183025 -vt 0.004195 0.360497 -vt 0.005856 0.359540 -vt 0.363575 0.189539 -vt 0.388348 0.187899 -vt 0.391408 0.191039 -vt 0.913862 0.374962 -vt 0.932207 0.411652 -vt 0.913862 0.411652 -vt 0.947121 0.484382 -vt 0.928948 0.502555 -vt 0.928948 0.484382 -vt 0.922832 0.558833 -vt 0.904487 0.595522 -vt 0.904487 0.558833 -vt 0.904487 0.650556 -vt 0.922832 0.668901 -vt 0.904487 0.668901 -vt 0.831108 0.558833 -vt 0.849453 0.595522 -vt 0.831108 0.595522 -vt 0.977866 0.558833 -vt 0.996210 0.595522 -vt 0.977866 0.595522 -vt 0.959521 0.558833 -vt 0.941176 0.595522 -vt 0.941176 0.558833 -vt 0.812764 0.558833 -vt 0.794419 0.595522 -vt 0.794419 0.558833 -vt 0.886142 0.650556 -vt 0.867798 0.668901 -vt 0.867798 0.650556 -vt 0.867798 0.613867 -vt 0.886142 0.632212 -vt 0.867798 0.632212 -vt 0.922832 0.613867 -vt 0.904487 0.632212 -vt 0.904487 0.613867 -vt 0.867798 0.558833 -vt 0.886142 0.595522 -vt 0.867798 0.595522 -vt 0.899580 0.488095 -vt 0.881478 0.506196 -vt 0.881478 0.488095 -vt 0.899580 0.451892 -vt 0.881478 0.469993 -vt 0.881478 0.451892 -vt 0.947121 0.448035 -vt 0.928948 0.466208 -vt 0.928948 0.448035 -vt 0.895517 0.374962 -vt 0.877173 0.411652 -vt 0.877173 0.374962 -vt 0.858828 0.411652 -vt 0.858828 0.374962 -vt 0.877173 0.338273 -vt 0.858828 0.338273 -vt 0.895517 0.338273 -vt 0.917681 0.451892 -vt 0.899580 0.469993 -vt 0.917681 0.433790 -vt 0.899580 0.433790 -vt 0.947121 0.429861 -vt 0.928948 0.429861 -vt 0.867173 0.448727 -vt 0.848828 0.467071 -vt 0.848828 0.448727 -vt 0.867173 0.430382 -vt 0.848828 0.430382 -vt 0.881478 0.433790 -vt 0.867173 0.485416 -vt 0.848828 0.503761 -vt 0.848828 0.485416 -vt 0.867173 0.467071 -vt 0.849453 0.558833 -vt 0.849453 0.522144 -vt 0.867798 0.522144 -vt 0.886142 0.558833 -vt 0.886142 0.613867 -vt 0.922832 0.595522 -vt 0.849453 0.632212 -vt 0.849453 0.613867 -vt 0.849453 0.668901 -vt 0.849453 0.650556 -vt 0.776074 0.595522 -vt 0.776074 0.558833 -vt 0.794419 0.522144 -vt 0.776074 0.522144 -vt 0.812764 0.522144 -vt 0.941176 0.522144 -vt 0.922832 0.522144 -vt 0.959521 0.522144 -vt 0.959521 0.595522 -vt 0.977866 0.522144 -vt 0.996210 0.558833 -vt 0.812764 0.595522 -vt 0.831108 0.522144 -vt 0.886142 0.668901 -vt 0.922832 0.632212 -vt 0.904487 0.522144 -vt 0.886142 0.522144 -vt 0.917681 0.488095 -vt 0.899580 0.506196 -vt 0.917681 0.469993 -vt 0.947121 0.466208 -vt 0.895517 0.411652 -vt 0.913862 0.338273 -vt 0.932207 0.374962 -vt 0.002361 0.690819 -vt 0.139582 0.797050 -vt 0.002382 0.797077 -vt 0.002401 0.574653 -vt 0.139602 0.577216 -vt 0.002401 0.577243 -vt 0.002381 0.685835 -vt 0.139582 0.688398 -vt 0.002381 0.688425 -vt 0.002381 0.579638 -vt 0.139602 0.683414 -vt 0.002401 0.683441 -vt 0.142087 0.686223 -vt 0.139686 0.823759 -vt 0.139686 0.686202 -vt 0.139581 0.685808 -vt 0.139686 0.574626 -vt 0.278011 0.686118 -vt 0.139686 0.686118 -vt 0.248444 0.686223 -vt 0.142087 0.823780 -vt 0.139581 0.579611 -vt 0.139561 0.690792 -vt 0.250041 0.742196 -vt 0.249216 0.741377 -vt 0.249011 0.740883 -vt 0.774121 0.040412 -vt 0.741243 0.024151 -vt 0.740050 0.027021 -vt 0.969467 0.033059 -vt 0.943495 0.044419 -vt 0.971709 0.034142 -vt 0.946381 0.253662 -vt 0.739889 0.270791 -vt 0.975938 0.269283 -vt 0.769234 0.254505 -vt 0.778655 0.034951 -vt 0.748853 0.018299 -vt 0.746005 0.019438 -vt 0.975297 0.038147 -vt 0.946804 0.049219 -vt 0.976119 0.040486 -vt 0.775156 0.037976 -vt 0.946189 0.047450 -vt 0.941812 0.043603 -vt 0.456798 0.276753 -vt 0.529486 0.293195 -vt 0.696767 0.284505 -vt 0.696612 0.283178 -vt 0.740071 0.299235 -vt 0.431207 0.203196 -vt 0.430221 0.118309 -vt 0.434139 0.035214 -vt 0.688985 0.442006 -vt 0.730728 0.480254 -vt 0.688985 0.480254 -vt 0.730728 0.556749 -vt 0.688985 0.518501 -vt 0.730728 0.518501 -vt 0.754269 0.654412 -vt 0.666048 0.576401 -vt 0.754269 0.576401 -vt 0.730728 0.442006 -vt 0.688985 0.403759 -vt 0.730728 0.403759 -vt 0.437617 0.035132 -vt 0.428782 0.141338 -vt 0.428782 0.234632 -vt 0.422863 0.024375 -vt 0.423529 0.042958 -vt 0.424425 0.042882 -vt 0.499383 0.483956 -vt 0.561202 0.483917 -vt 0.573995 0.492741 -vt 0.572269 0.489869 -vt 0.565361 0.485105 -vt 0.571963 0.765944 -vt 0.565067 0.770717 -vt 0.456877 0.274272 -vt 0.362261 0.174619 -vt 0.362252 0.177081 -vt 0.221168 0.176128 -vt 0.218310 0.173556 -vt 0.218310 0.006092 -vt 0.221417 0.003539 -vt 0.388881 0.003540 -vt 0.391433 0.006646 -vt 0.393601 0.173750 -vt 0.525055 0.212989 -vt 0.674718 0.186092 -vt 0.524902 0.186971 -vt 0.472754 0.045915 -vt 0.472804 0.009580 -vt 0.673151 0.046188 -vt 0.676096 0.185512 -vt 0.678376 0.183205 -vt 0.674995 0.046955 -vt 0.678054 0.050022 -vt 0.678940 0.181820 -vt 0.012947 0.175130 -vt 0.698934 0.213354 -vt 0.698934 0.245794 -vt 0.666837 0.221675 -vt 0.666837 0.245794 -vt 0.503488 0.245686 -vt 0.472755 0.245833 -vt 0.503488 0.221424 -vt 0.666162 0.220045 -vt 0.663456 0.217340 -vt 0.504163 0.219793 -vt 0.506872 0.217084 -vt 0.004989 0.551834 -vt 0.390747 0.356145 -vt 0.386158 0.360486 -vt 0.360628 0.189572 -vt 0.219798 0.360486 -vt 0.216697 0.357385 -vt 0.216697 0.191025 -vt 0.219798 0.187924 -vt 0.360628 0.187426 -vt 0.363600 0.187579 -vt 0.947121 0.502555 -vt 0.922832 0.650556 -vt 0.867173 0.503761 -vt 0.996210 0.522144 -vt 0.917681 0.506196 -vt 0.932207 0.338273 -vt 0.139601 0.574626 -vt 0.278011 0.574626 -vt 0.248444 0.823780 -vt 0.249011 0.687906 -vt 0.294366 0.687906 -vt 0.294366 0.740616 -vt 0.294160 0.741111 -vt 0.292839 0.742143 -vt 0.250538 0.742399 -vt 0.293336 0.741935 -vt 0.781306 0.033891 -vt 0.457098 0.275488 -vt 0.976119 0.297728 -vt 0.433827 0.231012 -vt 0.431907 0.231171 -vt 0.429916 0.203288 -vt 0.426195 0.118261 -vt 0.427181 0.035132 -vt 0.688985 0.556749 -vt 0.666048 0.654412 -vn 0.6168 0.0000 0.7871 -vn 0.0025 0.0046 1.0000 -vn 0.0000 0.0000 -1.0000 -vn 1.0000 0.0000 0.0000 -vn -0.6168 0.0073 -0.7871 -vn -0.4637 -0.8731 -0.1506 -vn 0.4691 0.8832 0.0000 -vn 0.4691 -0.8832 0.0000 -vn 0.0000 -1.0000 0.0000 -vn 0.2148 0.9766 0.0000 -vn 0.2148 -0.9766 0.0000 -vn 0.0000 1.0000 0.0000 -vn 0.7885 0.6150 0.0000 -vn 1.0000 -0.0032 0.0000 -vn 0.7885 -0.6150 0.0000 -vn -0.2143 0.9743 -0.0697 -vn -0.7638 -0.5958 -0.2482 -vn -0.9511 0.0030 -0.3090 -vn -0.7639 0.5958 -0.2482 -vn -0.2143 -0.9743 -0.0696 -vn -0.4637 0.8731 -0.1507 -vn 0.6168 0.0000 -0.7871 -vn 1.0000 0.0058 -0.0041 -vn -1.0000 0.0058 0.0041 -vn -0.6168 0.0000 0.7871 -vn 0.5448 -0.4689 -0.6952 -vn -0.2589 -0.8607 -0.4385 -vn 0.3836 0.7831 -0.4895 -vn 0.8931 0.0000 -0.4499 -vn 0.3427 0.0009 -0.9394 -vn 0.3836 0.7831 0.4895 -vn 0.2955 0.0000 0.9553 -vn 0.5448 -0.4690 0.6952 -vn 0.5674 0.0071 0.8234 -vn -0.3836 0.7831 -0.4895 -vn -0.2969 0.0051 -0.9549 -vn -0.8565 0.0063 -0.5161 -vn -0.5448 -0.4689 0.6952 -vn -0.6654 0.0073 0.7465 -vn -0.3836 0.7831 0.4895 -vn -0.8931 0.0000 0.4499 -vn -1.0000 0.0000 0.0000 -vn 0.0000 0.3335 -0.9427 -vn 0.0000 -0.3335 0.9427 -vn 0.0000 0.1169 0.9931 -vn 0.0000 -0.1169 -0.9931 -vn 0.0000 0.0681 -0.9977 -vn 0.0000 -0.2911 -0.9567 -vn 0.0000 -0.0681 0.9977 -vn 0.0000 0.2911 0.9567 -vn -0.4691 0.8832 0.0000 -vn -0.4691 -0.8832 0.0000 -vn -1.0000 0.0032 0.0000 -vn -0.2149 0.9766 0.0000 -vn -0.7885 -0.6150 0.0000 -vn -0.7886 0.6150 0.0000 -vn -0.2148 -0.9766 0.0000 -vn -0.0059 0.0000 -1.0000 -vn 0.0000 0.0000 1.0000 -vn 1.0000 0.0090 0.0000 -vn 0.9796 -0.0017 -0.2012 -vn -0.4635 0.0050 -0.8861 -vn -0.4637 -0.8731 -0.1507 -vn -0.2143 0.9743 -0.0696 -vn -0.7639 -0.5957 -0.2482 -vn -0.7639 0.5957 -0.2482 -vn 0.4513 -0.6177 -0.6440 -vn -0.2689 -0.8145 -0.5141 -vn 0.7912 0.0028 -0.6115 -vn 0.2956 0.0000 -0.9553 -vn 0.3836 0.7831 0.4894 -vn 0.4288 0.0025 0.9034 -vn 0.5423 -0.0782 0.8365 -vn 0.8931 0.0000 0.4499 -vn -0.3836 0.7831 -0.4894 -vn -0.0258 0.0001 -0.9997 -vn -0.8920 0.0073 -0.4520 -vn -0.6855 -0.0817 0.7235 -vn -0.2955 0.0000 0.9553 -vn -0.7912 0.0028 0.6115 -vn -0.7885 0.6150 0.0000 -usemtl Material.002 -s off -f 60/1/1 63/2/1 62/3/1 -f 59/4/2 51/5/2 77/6/2 -f 5/7/3 2/8/3 1/9/3 -f 2/10/4 6/11/4 28/12/4 -f 54/13/5 74/14/5 55/15/5 -f 15/16/6 41/17/6 40/18/6 -f 32/19/3 28/20/3 30/21/3 -f 21/22/7 35/23/7 24/24/7 -f 12/25/8 29/26/8 26/27/8 -f 8/28/9 32/29/9 11/30/9 -f 24/24/10 36/31/10 23/32/10 -f 11/30/11 31/33/11 12/25/11 -f 23/32/12 27/34/12 7/35/12 -f 22/36/13 34/37/13 21/22/13 -f 25/38/14 33/39/14 22/36/14 -f 26/27/15 30/40/15 25/38/15 -f 18/41/16 45/42/16 17/43/16 -f 14/44/17 42/45/17 41/17/17 -f 19/46/18 42/45/18 13/47/18 -f 20/48/19 43/49/19 19/46/19 -f 16/50/20 40/18/20 39/51/20 -f 17/43/21 44/52/21 20/48/21 -f 76/53/9 47/54/9 6/55/9 -f 66/56/22 71/57/22 70/58/22 -f 13/59/3 72/60/3 68/61/3 -f 67/62/23 64/63/23 57/64/23 -f 25/65/3 22/66/3 76/67/3 -f 80/68/24 56/69/24 73/70/24 -f 52/71/25 79/72/25 78/73/25 -f 67/74/26 65/75/26 66/56/26 -f 74/14/27 76/76/27 73/77/27 -f 69/78/28 71/57/28 72/79/28 -f 69/78/29 66/56/29 70/58/29 -f 72/79/30 65/75/30 68/80/30 -f 61/81/31 63/2/31 64/82/31 -f 61/81/32 60/1/32 62/3/32 -f 59/4/33 58/83/33 60/1/33 -f 64/82/34 58/83/34 57/84/34 -f 53/85/35 55/15/35 56/86/35 -f 53/85/36 75/87/36 54/13/36 -f 73/77/37 55/15/37 74/14/37 -f 80/88/38 78/73/38 79/72/38 -f 51/5/39 78/73/39 77/6/39 -f 49/89/40 52/71/40 51/5/40 -f 49/89/41 79/72/41 50/90/41 -f 2/91/12 53/92/12 56/93/12 -f 146/94/42 84/95/42 112/96/42 -f 104/97/43 115/98/43 145/99/43 -f 107/100/4 116/101/4 144/102/4 -f 143/103/44 82/104/44 100/105/44 -f 142/106/9 85/107/9 109/108/9 -f 141/109/12 82/110/12 110/111/12 -f 119/112/12 118/113/12 140/114/12 -f 120/115/9 117/116/9 139/117/9 -f 121/118/45 111/119/45 138/120/45 -f 137/121/45 97/122/45 123/123/45 -f 118/124/44 124/125/44 136/126/44 -f 135/127/4 94/128/4 108/129/4 -f 126/130/46 105/131/46 134/132/46 -f 127/133/46 128/134/46 133/135/46 -f 114/136/43 129/137/43 132/138/43 -f 130/139/42 102/140/42 131/141/42 -f 131/141/42 83/142/42 99/143/42 -f 111/144/42 99/143/42 81/145/42 -f 89/146/42 131/141/42 111/144/42 -f 132/147/47 98/148/47 127/133/47 -f 112/149/47 127/133/47 90/150/47 -f 84/151/43 132/138/43 112/152/43 -f 133/153/48 91/154/48 103/155/48 -f 102/156/48 103/155/48 83/157/48 -f 90/150/46 133/135/46 102/158/46 -f 134/159/48 87/160/48 113/161/48 -f 128/162/48 113/161/48 91/154/48 -f 98/148/46 134/132/46 128/134/46 -f 106/163/4 108/129/4 85/107/4 -f 87/164/4 135/127/4 106/163/4 -f 105/165/4 125/166/4 135/127/4 -f 136/126/49 97/122/49 122/167/49 -f 116/101/49 122/167/49 94/128/49 -f 86/168/44 136/126/44 116/101/44 -f 137/121/50 95/169/50 109/170/50 -f 108/129/50 109/170/50 85/107/50 -f 94/128/45 137/121/45 108/129/45 -f 138/120/50 81/171/50 117/172/50 -f 123/123/50 117/172/50 95/169/50 -f 97/122/45 138/120/45 123/123/45 -f 139/117/9 81/173/9 99/174/9 -f 103/175/9 99/174/9 83/176/9 -f 91/177/9 139/117/9 103/175/9 -f 140/114/12 86/168/12 107/100/12 -f 104/178/12 107/100/12 88/179/12 -f 92/180/12 140/114/12 104/178/12 -f 141/109/12 96/181/12 119/112/12 -f 114/182/12 119/112/12 92/180/12 -f 114/182/12 101/183/12 141/109/12 -f 142/106/9 95/184/9 120/115/9 -f 113/185/9 120/115/9 91/177/9 -f 113/185/9 106/163/9 142/106/9 -f 143/103/49 89/186/49 121/118/49 -f 124/125/49 121/118/49 97/122/49 -f 96/187/44 143/103/44 124/125/44 -f 144/102/4 94/128/4 125/166/4 -f 115/188/4 125/166/4 93/189/4 -f 88/179/4 144/102/4 115/188/4 -f 145/190/47 93/191/47 126/130/47 -f 129/192/47 126/130/47 98/148/47 -f 92/193/43 145/99/43 129/137/43 -f 130/139/42 112/96/42 90/194/42 -f 89/146/42 146/94/42 130/139/42 -f 100/195/42 101/196/42 146/94/42 -f 39/197/9 147/198/9 37/199/9 -f 45/200/51 154/201/51 44/202/51 -f 41/203/52 150/204/52 40/205/52 -f 43/206/53 152/207/53 42/208/53 -f 46/209/54 155/210/54 45/211/54 -f 42/208/55 151/212/55 41/203/55 -f 37/213/4 148/214/4 38/215/4 -f 38/216/12 156/217/12 46/209/12 -f 44/202/56 153/218/56 43/206/56 -f 40/205/57 149/219/57 39/197/57 -f 154/220/3 155/221/3 156/222/3 -f 166/223/3 45/224/3 46/225/3 -f 42/226/3 161/227/3 41/228/3 -f 157/229/3 38/230/3 37/231/3 -f 158/232/3 46/225/3 38/230/3 -f 164/233/3 43/234/3 44/235/3 -f 40/236/3 159/237/3 39/238/3 -f 39/238/3 157/229/3 37/231/3 -f 165/239/3 44/235/3 45/224/3 -f 41/228/3 160/240/3 40/236/3 -f 43/234/3 162/241/3 42/226/3 -f 10/242/12 46/243/12 18/41/12 -f 9/244/9 39/51/9 168/245/9 -f 167/246/58 37/231/58 38/230/58 -f 168/247/42 167/248/42 5/249/42 -f 170/250/42 171/251/42 169/252/42 -f 176/253/4 173/254/4 175/255/4 -f 174/256/59 169/257/59 173/258/59 -f 175/255/9 169/252/9 171/251/9 -f 172/259/12 174/260/12 176/261/12 -f 60/1/1 58/83/1 63/2/1 -f 59/4/59 61/81/59 51/5/59 -f 5/7/3 6/262/3 2/8/3 -f 8/263/4 4/264/4 28/12/4 -f 4/264/4 2/10/4 28/12/4 -f 6/11/60 47/265/60 27/266/60 -f 47/265/60 7/267/60 27/266/60 -f 6/11/61 27/266/61 28/12/61 -f 54/13/62 75/87/62 74/14/62 -f 15/16/63 14/44/63 41/17/63 -f 28/20/3 27/268/3 30/21/3 -f 27/268/3 36/269/3 33/270/3 -f 33/270/3 36/269/3 34/271/3 -f 36/269/3 35/272/3 34/271/3 -f 33/270/3 30/21/3 27/268/3 -f 30/21/3 29/273/3 31/274/3 -f 31/274/3 32/19/3 30/21/3 -f 21/22/7 34/37/7 35/23/7 -f 12/25/8 31/33/8 29/26/8 -f 8/28/9 28/275/9 32/29/9 -f 24/24/10 35/23/10 36/31/10 -f 11/30/11 32/29/11 31/33/11 -f 23/32/12 36/31/12 27/34/12 -f 22/36/13 33/39/13 34/37/13 -f 25/38/14 30/40/14 33/39/14 -f 26/27/15 29/26/15 30/40/15 -f 18/41/64 46/243/64 45/42/64 -f 14/44/65 13/47/65 42/45/65 -f 19/46/18 43/49/18 42/45/18 -f 20/48/66 44/52/66 43/49/66 -f 16/50/20 15/16/20 40/18/20 -f 17/43/21 45/42/21 44/52/21 -f 5/276/9 48/277/9 68/278/9 -f 68/278/9 67/279/9 5/276/9 -f 67/279/9 57/280/9 59/281/9 -f 5/276/9 67/279/9 59/281/9 -f 59/281/9 77/282/9 80/283/9 -f 5/276/9 59/281/9 80/283/9 -f 80/283/9 73/284/9 6/55/9 -f 5/276/9 80/283/9 6/55/9 -f 73/284/9 76/53/9 6/55/9 -f 66/56/22 65/75/22 71/57/22 -f 68/61/3 48/285/3 18/286/3 -f 48/285/3 10/287/3 18/286/3 -f 9/288/3 3/289/3 16/290/3 -f 3/289/3 72/60/3 16/290/3 -f 68/61/3 18/286/3 17/291/3 -f 68/61/3 17/291/3 20/292/3 -f 15/293/3 16/290/3 72/60/3 -f 14/294/3 15/293/3 72/60/3 -f 68/61/3 20/292/3 19/295/3 -f 13/59/3 14/294/3 72/60/3 -f 68/61/3 19/295/3 13/59/3 -f 67/62/4 69/296/4 64/63/4 -f 53/297/3 4/298/3 11/299/3 -f 4/298/3 8/300/3 11/299/3 -f 7/301/3 47/302/3 23/303/3 -f 47/302/3 76/67/3 23/303/3 -f 53/297/3 11/299/3 12/304/3 -f 53/297/3 12/304/3 26/305/3 -f 24/306/3 23/303/3 76/67/3 -f 21/307/3 24/306/3 76/67/3 -f 53/297/3 26/305/3 25/65/3 -f 22/66/3 21/307/3 76/67/3 -f 53/297/3 25/65/3 76/67/3 -f 80/68/42 49/308/42 56/69/42 -f 52/71/25 50/90/25 79/72/25 -f 67/74/67 68/80/67 65/75/67 -f 74/14/68 75/87/68 76/76/68 -f 69/78/28 70/58/28 71/57/28 -f 69/78/69 67/74/69 66/56/69 -f 72/79/70 71/57/70 65/75/70 -f 61/81/71 62/3/71 63/2/71 -f 61/81/72 59/4/72 60/1/72 -f 59/4/73 57/84/73 58/83/73 -f 64/82/74 63/2/74 58/83/74 -f 53/85/75 54/13/75 55/15/75 -f 53/85/76 76/76/76 75/87/76 -f 73/77/77 56/86/77 55/15/77 -f 80/88/78 77/6/78 78/73/78 -f 51/5/79 52/71/79 78/73/79 -f 49/89/40 50/90/40 52/71/40 -f 49/89/80 80/88/80 79/72/80 -f 56/93/12 49/309/12 2/91/12 -f 49/309/12 51/310/12 1/311/12 -f 2/91/12 49/309/12 1/311/12 -f 51/310/12 61/312/12 1/311/12 -f 61/312/12 64/313/12 1/311/12 -f 64/313/12 69/314/12 1/311/12 -f 69/314/12 72/315/12 1/311/12 -f 72/315/12 3/316/12 1/311/12 -f 2/91/12 4/317/12 53/92/12 -f 146/94/42 101/196/42 84/95/42 -f 104/97/43 88/318/43 115/98/43 -f 107/100/4 86/168/4 116/101/4 -f 143/103/44 110/319/44 82/104/44 -f 142/106/9 106/163/9 85/107/9 -f 141/109/12 101/183/12 82/110/12 -f 119/112/12 96/181/12 118/113/12 -f 120/115/9 95/184/9 117/116/9 -f 121/118/45 89/186/45 111/119/45 -f 137/121/45 122/167/45 97/122/45 -f 118/124/44 96/187/44 124/125/44 -f 135/127/4 125/166/4 94/128/4 -f 126/130/46 93/191/46 105/131/46 -f 127/133/46 98/148/46 128/134/46 -f 114/136/43 92/193/43 129/137/43 -f 130/139/42 90/194/42 102/140/42 -f 131/141/42 102/140/42 83/142/42 -f 111/144/42 131/141/42 99/143/42 -f 89/146/42 130/139/42 131/141/42 -f 132/147/47 129/192/47 98/148/47 -f 112/149/47 132/147/47 127/133/47 -f 84/151/43 114/136/43 132/138/43 -f 133/153/48 128/162/48 91/154/48 -f 102/156/48 133/153/48 103/155/48 -f 90/150/46 127/133/46 133/135/46 -f 134/159/48 105/320/48 87/160/48 -f 128/162/48 134/159/48 113/161/48 -f 98/148/46 126/130/46 134/132/46 -f 106/163/4 135/127/4 108/129/4 -f 87/164/4 105/165/4 135/127/4 -f 105/165/4 93/189/4 125/166/4 -f 136/126/49 124/125/49 97/122/49 -f 116/101/49 136/126/49 122/167/49 -f 86/168/44 118/124/44 136/126/44 -f 137/121/50 123/123/50 95/169/50 -f 108/129/50 137/121/50 109/170/50 -f 94/128/45 122/167/45 137/121/45 -f 138/120/50 111/119/50 81/171/50 -f 123/123/50 138/120/50 117/172/50 -f 97/122/45 121/118/45 138/120/45 -f 139/117/9 117/116/9 81/173/9 -f 103/175/9 139/117/9 99/174/9 -f 91/177/9 120/115/9 139/117/9 -f 140/114/12 118/113/12 86/168/12 -f 104/178/12 140/114/12 107/100/12 -f 92/180/12 119/112/12 140/114/12 -f 141/109/12 110/111/12 96/181/12 -f 114/182/12 141/109/12 119/112/12 -f 114/182/12 84/321/12 101/183/12 -f 142/106/9 109/108/9 95/184/9 -f 113/185/9 142/106/9 120/115/9 -f 113/185/9 87/164/9 106/163/9 -f 143/103/49 100/105/49 89/186/49 -f 124/125/49 143/103/49 121/118/49 -f 96/187/44 110/319/44 143/103/44 -f 144/102/4 116/101/4 94/128/4 -f 115/188/4 144/102/4 125/166/4 -f 88/179/4 107/100/4 144/102/4 -f 145/190/47 115/322/47 93/191/47 -f 129/192/47 145/190/47 126/130/47 -f 92/193/43 104/97/43 145/99/43 -f 130/139/42 146/94/42 112/96/42 -f 89/146/42 100/195/42 146/94/42 -f 100/195/42 82/323/42 101/196/42 -f 39/197/9 149/219/9 147/198/9 -f 45/200/51 155/324/51 154/201/51 -f 41/203/52 151/212/52 150/204/52 -f 43/206/53 153/218/53 152/207/53 -f 46/209/54 156/217/54 155/210/54 -f 42/208/55 152/207/55 151/212/55 -f 37/213/4 147/325/4 148/214/4 -f 38/216/12 148/326/12 156/217/12 -f 44/202/81 154/201/81 153/218/81 -f 40/205/57 150/204/57 149/219/57 -f 156/222/3 148/327/3 147/328/3 -f 147/328/3 149/329/3 156/222/3 -f 149/329/3 150/330/3 152/331/3 -f 156/222/3 149/329/3 153/332/3 -f 150/330/3 151/333/3 152/331/3 -f 152/331/3 153/332/3 149/329/3 -f 153/332/3 154/220/3 156/222/3 -f 166/223/3 165/239/3 45/224/3 -f 42/226/3 162/241/3 161/227/3 -f 157/229/3 158/232/3 38/230/3 -f 158/232/3 166/223/3 46/225/3 -f 164/233/3 163/334/3 43/234/3 -f 40/236/3 160/240/3 159/237/3 -f 39/238/3 159/237/3 157/229/3 -f 165/239/3 164/233/3 44/235/3 -f 41/228/3 161/227/3 160/240/3 -f 43/234/3 163/334/3 162/241/3 -f 10/242/12 167/335/12 46/243/12 -f 9/244/9 16/50/9 39/51/9 -f 167/246/58 168/336/58 37/231/58 -f 1/337/42 3/338/42 168/247/42 -f 3/338/42 9/339/42 168/247/42 -f 10/340/42 48/341/42 167/248/42 -f 48/341/42 5/249/42 167/248/42 -f 1/337/42 168/247/42 5/249/42 -f 170/250/42 172/259/42 171/251/42 -f 176/253/4 174/342/4 173/254/4 -f 174/256/59 170/343/59 169/257/59 -f 175/255/9 173/254/9 169/252/9 -f 172/259/12 170/250/12 174/260/12 -o window_Cube.002 -v 0.809482 1.091828 -0.732264 -v 0.338840 1.091828 -0.732264 -v 0.338840 0.874469 -0.732264 -v 0.809482 0.874469 -0.732264 -vt 0.978282 0.984581 -vt 0.711622 0.781054 -vt 0.978133 0.780594 -vt 0.713513 0.984128 -vn 0.0000 0.0000 -1.0000 -usemtl Material.002 -s off -f 178/344/82 180/345/82 179/346/82 -f 178/344/82 177/347/82 180/345/82 o plate_Cylinder -v 0.573046 0.817783 -0.643769 v 0.573046 0.868036 -0.643769 v 0.729762 0.817783 -0.568299 +v 0.573046 0.817783 -0.643769 v 0.729762 0.868036 -0.568299 v 0.768467 0.817783 -0.398719 v 0.768467 0.868036 -0.398719 @@ -969,132 +15,132 @@ v 0.377625 0.817783 -0.398719 v 0.377625 0.868036 -0.398719 v 0.416330 0.817783 -0.568299 v 0.416330 0.868036 -0.568299 -v 0.572966 0.867427 -0.529802 -v 0.572966 0.983075 -0.566974 -v 0.647860 0.867427 -0.486562 -v 0.680052 0.983075 -0.505148 -v 0.647860 0.867427 -0.400082 -v 0.680052 0.983075 -0.381496 -v 0.572966 0.867427 -0.356843 -v 0.572966 0.983075 -0.319670 -v 0.498072 0.867427 -0.400082 -v 0.465880 0.983075 -0.381496 -v 0.498072 0.867427 -0.486562 -v 0.465880 0.983075 -0.505148 -v 0.610413 0.867427 -0.508182 v 0.626509 0.983075 -0.536061 -v 0.572966 0.941312 -0.556665 v 0.671124 0.941312 -0.499994 -v 0.647860 0.867427 -0.443322 +v 0.622045 0.941312 -0.528329 v 0.680052 0.983075 -0.443322 v 0.671124 0.941312 -0.386651 -v 0.610413 0.867427 -0.378463 +v 0.671124 0.941312 -0.443322 v 0.626509 0.983075 -0.350583 v 0.572966 0.941312 -0.329980 -v 0.535519 0.867427 -0.378463 +v 0.622045 0.941312 -0.358315 v 0.519423 0.983075 -0.350583 v 0.474808 0.941312 -0.386651 -v 0.498072 0.867427 -0.443322 +v 0.523887 0.941312 -0.358315 +v 0.572966 0.983075 -0.347524 +v 0.531484 0.983075 -0.371474 v 0.465880 0.983075 -0.443322 v 0.474808 0.941312 -0.499994 -v 0.535519 0.867427 -0.508182 -v 0.519423 0.983075 -0.536061 -v 0.523887 0.941312 -0.528329 v 0.474808 0.941312 -0.443322 -v 0.523887 0.941312 -0.358315 -v 0.622045 0.941312 -0.358315 -v 0.671124 0.941312 -0.443322 -v 0.622045 0.941312 -0.528329 -v 0.572966 0.983075 -0.539121 -v 0.655930 0.983075 -0.491222 -v 0.655930 0.983075 -0.395423 -v 0.572966 0.983075 -0.347524 -v 0.490002 0.983075 -0.395423 -v 0.490002 0.983075 -0.491222 -v 0.614448 0.983075 -0.515171 -v 0.655930 0.983075 -0.443322 +v 0.519423 0.983075 -0.536061 +v 0.572966 0.941312 -0.556665 +v 0.523887 0.941312 -0.528329 +v 0.572966 0.867427 -0.529802 +v 0.535519 0.867427 -0.508182 +v 0.498072 0.867427 -0.486562 +v 0.498072 0.867427 -0.443322 +v 0.498072 0.867427 -0.400082 +v 0.535519 0.867427 -0.378463 +v 0.572966 0.867427 -0.356843 +v 0.610413 0.867427 -0.378463 +v 0.647860 0.867427 -0.400082 +v 0.647860 0.867427 -0.443322 +v 0.647860 0.867427 -0.486562 +v 0.610413 0.867427 -0.508182 v 0.614448 0.983075 -0.371474 -v 0.531484 0.983075 -0.371474 -v 0.490002 0.983075 -0.443322 -v 0.531484 0.983075 -0.515171 -v 0.572966 0.962908 -0.514054 -v 0.634221 0.962908 -0.478688 v 0.634221 0.962908 -0.407956 -v 0.572966 0.962908 -0.372591 -v 0.511710 0.962908 -0.407956 -v 0.511710 0.962908 -0.478688 -v 0.603594 0.962908 -0.496371 -v 0.634221 0.962908 -0.443322 v 0.603594 0.962908 -0.390274 +v 0.572966 0.983075 -0.539121 +v 0.572966 0.983075 -0.566974 +v 0.614448 0.983075 -0.515171 +v 0.655930 0.983075 -0.395423 +v 0.490002 0.983075 -0.491222 +v 0.465880 0.983075 -0.505148 +v 0.655930 0.983075 -0.491222 +v 0.655930 0.983075 -0.443322 +v 0.490002 0.983075 -0.395423 +v 0.465880 0.983075 -0.381496 +v 0.680052 0.983075 -0.505148 +v 0.572966 0.983075 -0.319670 +v 0.680052 0.983075 -0.381496 +v 0.531484 0.983075 -0.515171 +v 0.490002 0.983075 -0.443322 v 0.542338 0.962908 -0.390274 +v 0.634221 0.962908 -0.443322 +v 0.511710 0.962908 -0.407956 +v 0.634221 0.962908 -0.478688 +v 0.572966 0.962908 -0.372591 +v 0.511710 0.962908 -0.478688 +v 0.572966 0.962908 -0.514054 +v 0.603594 0.962908 -0.496371 v 0.511710 0.962908 -0.443322 v 0.542338 0.962908 -0.496371 -v 0.595406 0.982933 -0.519550 -v 0.702492 0.982933 -0.457724 -v 0.702492 0.982933 -0.334072 -v 0.595406 0.982933 -0.272246 -v 0.488321 0.982933 -0.334072 -v 0.488321 0.982933 -0.457724 -v 0.648949 0.982933 -0.488637 -v 0.702492 0.982933 -0.395898 -v 0.648949 0.982933 -0.303159 v 0.541863 0.982933 -0.303159 -v 0.488321 0.982933 -0.395898 -v 0.541863 0.982933 -0.488637 -v 0.678370 0.982933 -0.347999 -v 0.512442 0.982933 -0.347999 -v 0.553924 0.982933 -0.324049 -v 0.553924 0.982933 -0.467747 -v 0.648949 0.999716 -0.488637 -v 0.595406 0.999716 -0.519550 -v 0.702492 0.999716 -0.395898 -v 0.702492 0.999716 -0.457724 -v 0.648949 0.999716 -0.303159 -v 0.702492 0.999716 -0.334072 -v 0.541863 0.999716 -0.303159 -v 0.595406 0.999716 -0.272246 -v 0.488321 0.999716 -0.395898 -v 0.488321 0.999716 -0.334072 -v 0.541863 0.999716 -0.488637 -v 0.488321 0.999716 -0.457724 -v 0.595406 0.999716 -0.491697 -v 0.636888 0.999716 -0.324049 -v 0.553924 0.999716 -0.324049 -v 0.512442 0.999716 -0.395898 -v 0.553924 0.999716 -0.467747 -v 0.595406 0.982933 -0.491697 -v 0.678370 0.982933 -0.443797 v 0.595406 0.982933 -0.300100 +v 0.595406 0.982933 -0.272246 +v 0.595406 0.982933 -0.491697 +v 0.541863 0.982933 -0.488637 +v 0.595406 0.982933 -0.519550 +v 0.648949 0.982933 -0.488637 +v 0.648949 0.982933 -0.303159 +v 0.678370 0.982933 -0.347999 +v 0.702492 0.982933 -0.334072 v 0.512442 0.982933 -0.443797 -v 0.636888 0.982933 -0.467747 -v 0.678370 0.982933 -0.395898 -v 0.636888 0.982933 -0.324049 -v 0.512442 0.982933 -0.395898 -v 0.636888 0.999716 -0.467747 -v 0.678370 0.999716 -0.395898 -v 0.678370 0.999716 -0.443797 -v 0.678370 0.999716 -0.347999 +v 0.488321 0.982933 -0.395898 +v 0.488321 0.982933 -0.457724 +v 0.702492 0.982933 -0.395898 +v 0.678370 0.982933 -0.443797 +v 0.702492 0.982933 -0.457724 +v 0.512442 0.982933 -0.347999 +v 0.488321 0.982933 -0.334072 +v 0.541863 0.999716 -0.303159 v 0.595406 0.999716 -0.300100 -v 0.512442 0.999716 -0.347999 +v 0.553924 0.999716 -0.324049 +v 0.541863 0.999716 -0.488637 +v 0.595406 0.999716 -0.491697 +v 0.595406 0.999716 -0.519550 +v 0.648949 0.999716 -0.488637 +v 0.636888 0.999716 -0.467747 +v 0.648949 0.999716 -0.303159 +v 0.678370 0.999716 -0.347999 +v 0.636888 0.999716 -0.324049 +v 0.488321 0.999716 -0.395898 v 0.512442 0.999716 -0.443797 -v 0.556395 0.998139 -0.385001 -v 0.526238 0.998974 -0.385001 -v 0.556395 0.998139 -0.406796 -v 0.526238 0.998974 -0.406796 -v 0.634417 0.998139 -0.385001 -v 0.667116 0.998562 -0.385001 -v 0.634417 0.998139 -0.406796 -v 0.667116 0.998562 -0.406796 -v 0.556395 0.998139 -0.395898 -v 0.526238 0.998974 -0.395898 +v 0.488321 0.999716 -0.457724 +v 0.702492 0.999716 -0.395898 +v 0.678370 0.999716 -0.443797 +v 0.678370 0.999716 -0.395898 +v 0.512442 0.999716 -0.347999 +v 0.488321 0.999716 -0.334072 +v 0.702492 0.999716 -0.457724 +v 0.595406 0.999716 -0.272246 +v 0.702492 0.999716 -0.334072 +v 0.553924 0.999716 -0.467747 +v 0.512442 0.999716 -0.395898 v 0.595406 1.026090 -0.406796 -v 0.595406 1.052068 -0.406796 -v 0.634417 0.998139 -0.395898 -v 0.667116 0.998562 -0.395898 +v 0.667116 0.998562 -0.406796 +v 0.634417 0.998139 -0.406796 v 0.595406 1.026090 -0.385001 +v 0.526238 0.998974 -0.385001 +v 0.556395 0.998139 -0.385001 +v 0.634417 0.998139 -0.395898 +v 0.595406 1.026090 -0.395898 +v 0.526238 0.998974 -0.395898 v 0.595406 1.052068 -0.385001 v 0.595406 1.052068 -0.395898 -v 0.595406 1.026090 -0.395898 +v 0.667116 0.998562 -0.385001 +v 0.667116 0.998562 -0.395898 +v 0.595406 1.052068 -0.406796 +v 0.526238 0.998974 -0.406796 +v 0.556395 0.998139 -0.395898 +v 0.556395 0.998139 -0.406796 +v 0.634417 0.998139 -0.385001 +v 0.553924 0.982933 -0.324049 +v 0.636888 0.982933 -0.324049 +v 0.678370 0.982933 -0.395898 +v 0.553924 0.982933 -0.467747 +v 0.636888 0.982933 -0.467747 +v 0.512442 0.982933 -0.395898 vt 0.516568 0.925663 vt 0.501815 0.874025 vt 0.516568 0.874025 @@ -1345,26 +391,32 @@ vn 0.0000 1.0000 0.0000 vn -0.9749 0.0000 -0.2225 vn -0.4339 0.0000 -0.9010 vn 0.4890 -0.2091 -0.8469 +vn 0.4889 -0.2090 -0.8469 +vn 0.4889 -0.2091 -0.8469 vn 0.9779 -0.2091 0.0000 -vn 0.4890 -0.2091 0.8469 +vn 0.4889 -0.2091 0.8469 +vn -0.4889 -0.2091 0.8469 vn -0.4890 -0.2091 0.8469 vn -0.9779 -0.2091 0.0000 +vn -0.4890 -0.2091 -0.8469 vn -0.4889 -0.2091 -0.8469 vn -0.4769 -0.3003 -0.8260 -vn -0.4890 -0.2091 -0.8469 +vn -0.4889 -0.2090 -0.8469 vn -0.9538 -0.3003 0.0000 vn -0.4769 -0.3003 0.8260 vn 0.4769 -0.3003 0.8260 +vn 0.4769 -0.3003 0.8261 +vn 0.4890 -0.2091 0.8469 vn 0.9538 -0.3003 0.0000 vn 0.4769 -0.3003 -0.8260 -vn 0.4889 -0.2091 -0.8469 vn -0.3403 0.7326 -0.5894 vn 0.3403 0.7326 -0.5894 vn -0.3403 0.7326 0.5894 +vn -0.3403 0.7327 0.5894 vn 0.6806 0.7326 0.0000 vn -0.6806 0.7326 0.0000 vn 0.3403 0.7326 0.5894 -vn 0.0000 -1.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 vn -0.5000 0.0000 -0.8660 vn 0.5000 0.0000 -0.8660 vn 1.0000 0.0000 0.0000 @@ -1373,251 +425,1187 @@ vn -0.5000 0.0000 0.8660 vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 vn -0.5824 -0.8129 0.0000 -vn -0.6089 0.7933 0.0000 +vn -0.6089 0.7932 0.0000 vn 0.5980 0.8015 0.0000 vn 0.5824 -0.8129 0.0000 -vn -0.6089 0.7932 0.0000 -usemtl Material.002 -s off -f 182/348/83 183/349/83 181/350/83 -f 184/351/84 185/352/84 183/349/84 -f 186/353/85 187/354/85 185/352/85 -f 188/355/86 189/356/86 187/354/86 -f 190/357/87 191/358/87 189/356/87 -f 190/359/88 188/360/88 182/361/88 -f 192/362/89 193/363/89 191/358/89 -f 194/364/90 181/365/90 193/363/90 -f 208/366/91 210/367/91 230/368/91 -f 212/369/92 213/370/92 229/371/92 -f 215/372/93 216/373/93 228/374/93 -f 218/375/94 219/376/94 227/377/94 -f 218/375/88 234/378/88 240/379/88 -f 221/380/95 222/381/95 226/382/95 -f 224/383/96 209/384/96 225/385/96 -f 225/385/97 195/386/97 223/387/97 -f 205/388/97 225/385/97 223/387/97 -f 222/381/98 224/383/98 225/385/98 -f 226/382/99 205/388/99 220/389/99 -f 203/390/99 226/382/99 220/389/99 -f 219/376/95 221/380/95 226/382/95 -f 227/377/100 203/390/100 217/391/100 -f 201/392/100 227/377/100 217/391/100 -f 216/373/94 218/375/94 227/377/94 -f 228/374/101 201/392/101 214/393/101 -f 199/394/101 228/374/101 214/393/101 -f 213/370/93 215/372/93 228/374/93 -f 229/371/102 199/394/102 211/395/102 -f 197/396/102 229/371/102 211/395/102 -f 210/367/92 212/369/92 229/371/92 -f 230/368/103 197/396/103 207/397/103 -f 195/398/103 230/368/103 207/397/103 -f 209/399/104 208/366/104 230/368/104 -f 239/400/105 245/401/105 251/402/105 -f 224/383/88 231/403/88 196/404/88 -f 208/366/88 231/405/88 237/406/88 -f 215/372/88 233/407/88 239/408/88 -f 221/380/88 236/409/88 206/410/88 -f 212/369/88 232/411/88 238/412/88 -f 218/375/88 235/413/88 204/414/88 -f 208/366/88 232/411/88 198/415/88 -f 215/372/88 234/378/88 202/416/88 -f 212/369/88 233/407/88 200/417/88 -f 224/383/88 236/409/88 242/418/88 -f 221/380/88 235/413/88 241/419/88 -f 252/420/88 251/421/88 250/422/88 -f 240/423/106 247/424/106 235/425/106 -f 237/426/107 244/427/107 232/428/107 -f 240/423/106 246/429/106 252/430/106 -f 241/431/108 248/432/108 236/433/108 -f 237/426/107 243/434/107 249/435/107 -f 238/436/109 245/401/109 233/437/109 -f 241/431/108 247/424/108 253/438/108 -f 242/439/110 243/434/110 231/440/110 -f 238/436/109 244/427/109 250/441/109 -f 239/400/105 246/429/105 234/442/105 -f 242/439/110 248/432/110 254/443/110 -f 264/444/111 290/445/111 258/446/111 -f 288/447/111 266/448/111 255/449/111 -f 261/450/111 288/447/111 255/449/111 -f 263/451/111 267/452/111 257/453/111 -f 291/454/111 265/455/111 260/456/111 -f 262/457/111 289/458/111 256/459/111 -f 268/460/111 264/444/111 259/461/111 -f 289/458/111 261/450/111 256/459/111 -f 290/445/111 263/451/111 258/446/111 -f 267/452/111 262/457/111 257/453/111 -f 266/448/111 291/454/111 260/456/111 -f 265/455/111 268/460/111 259/461/111 -f 277/462/88 300/463/88 285/464/88 -f 281/465/88 283/466/88 272/467/88 -f 271/468/88 283/466/88 296/469/88 -f 275/470/88 299/471/88 284/472/88 -f 279/473/88 302/474/88 282/475/88 -f 273/476/88 298/477/88 297/478/88 -f 277/462/88 301/479/88 280/480/88 -f 271/468/88 298/477/88 274/481/88 -f 275/470/88 300/463/88 278/482/88 -f 273/476/88 299/471/88 276/483/88 -f 281/465/88 302/474/88 287/484/88 -f 279/473/88 301/479/88 286/485/88 -f 260/486/112 281/487/112 266/488/112 -f 261/489/113 274/490/113 256/491/113 -f 262/492/114 276/493/114 257/494/114 -f 255/495/113 271/496/113 261/489/113 -f 263/497/115 278/498/115 258/499/115 -f 256/500/114 273/501/114 262/492/114 -f 264/502/116 280/503/116 259/504/116 -f 257/494/115 275/505/115 263/497/115 -f 265/506/117 282/507/117 260/486/117 -f 258/499/116 277/508/116 264/502/116 -f 266/488/112 272/509/112 255/495/112 -f 259/504/117 279/510/117 265/506/117 -f 285/511/88 284/512/88 297/513/88 -f 313/514/118 310/515/118 309/516/118 -f 317/517/86 304/518/86 303/519/86 -f 315/520/119 317/521/119 320/522/119 -f 312/523/120 318/524/120 319/525/120 -f 319/526/121 308/527/121 316/528/121 -f 314/529/121 316/530/121 310/515/121 -f 306/531/120 319/532/120 314/533/120 -f 320/534/122 303/519/122 311/535/122 -f 313/536/122 311/537/122 305/538/122 -f 309/516/119 320/539/119 313/514/119 -f 308/527/86 317/521/86 307/540/86 -f 306/531/118 313/536/118 305/538/118 -f 269/541/88 294/542/88 293/543/88 -f 182/348/83 184/351/83 183/349/83 -f 184/351/84 186/353/84 185/352/84 -f 186/353/85 188/355/85 187/354/85 -f 188/355/86 190/357/86 189/356/86 -f 190/357/87 192/362/87 191/358/87 -f 186/544/88 184/545/88 188/360/88 -f 184/545/88 182/361/88 188/360/88 -f 182/361/88 194/546/88 192/547/88 -f 192/547/88 190/359/88 182/361/88 -f 192/362/89 194/364/89 193/363/89 -f 194/364/90 182/548/90 181/365/90 -f 208/366/91 198/415/91 210/367/91 -f 212/369/92 200/417/92 213/370/92 -f 215/372/93 202/416/93 216/373/93 -f 218/375/94 204/414/94 219/376/94 -f 218/375/88 202/416/88 234/378/88 -f 221/380/95 206/410/95 222/381/95 -f 224/383/98 196/404/98 209/384/98 -f 225/385/97 209/384/97 195/386/97 -f 205/388/97 222/381/97 225/385/97 -f 222/381/98 206/410/98 224/383/98 -f 226/382/99 222/381/99 205/388/99 -f 203/390/99 219/376/99 226/382/99 -f 219/376/95 204/414/95 221/380/95 -f 227/377/100 219/376/100 203/390/100 -f 201/392/100 216/373/100 227/377/100 -f 216/373/94 202/416/94 218/375/94 -f 228/374/101 216/373/101 201/392/101 -f 199/394/101 213/370/101 228/374/101 -f 213/370/93 200/417/93 215/372/93 -f 229/371/102 213/370/102 199/394/102 -f 197/396/102 210/367/102 229/371/102 -f 210/367/92 198/415/92 212/369/92 -f 230/368/103 210/367/103 197/396/103 -f 195/398/103 209/399/103 230/368/103 -f 209/399/91 196/549/91 208/366/91 -f 239/400/105 233/437/105 245/401/105 -f 224/383/88 242/418/88 231/403/88 -f 208/366/88 196/549/88 231/405/88 -f 215/372/88 200/417/88 233/407/88 -f 221/380/88 241/419/88 236/409/88 -f 212/369/88 198/415/88 232/411/88 -f 218/375/88 240/379/88 235/413/88 -f 208/366/88 237/406/88 232/411/88 -f 215/372/88 239/408/88 234/378/88 -f 212/369/88 238/412/88 233/407/88 -f 224/383/88 206/410/88 236/409/88 -f 221/380/88 204/414/88 235/413/88 -f 250/422/88 244/550/88 249/551/88 -f 249/551/88 243/552/88 254/553/88 -f 254/553/88 248/554/88 253/555/88 -f 253/555/88 247/556/88 252/420/88 -f 252/420/88 246/557/88 251/421/88 -f 251/421/88 245/558/88 250/422/88 -f 250/422/88 249/551/88 252/420/88 -f 249/551/88 254/553/88 252/420/88 -f 254/553/88 253/555/88 252/420/88 -f 240/423/106 252/430/106 247/424/106 -f 237/426/107 249/435/107 244/427/107 -f 240/423/106 234/442/106 246/429/106 -f 241/431/108 253/438/108 248/432/108 -f 237/426/107 231/440/107 243/434/107 -f 238/436/109 250/441/109 245/401/109 -f 241/431/108 235/425/108 247/424/108 -f 242/439/110 254/443/110 243/434/110 -f 238/436/109 232/428/109 244/427/109 -f 239/400/105 251/402/105 246/429/105 -f 242/439/110 236/433/110 248/432/110 -f 264/444/111 269/559/111 290/445/111 -f 288/447/111 270/560/111 266/448/111 -f 261/450/111 292/561/111 288/447/111 -f 263/451/111 294/562/111 267/452/111 -f 291/454/111 295/563/111 265/455/111 -f 262/457/111 293/564/111 289/458/111 -f 268/460/111 269/559/111 264/444/111 -f 289/458/111 292/561/111 261/450/111 -f 290/445/111 294/562/111 263/451/111 -f 267/452/111 293/564/111 262/457/111 -f 266/448/111 270/560/111 291/454/111 -f 265/455/111 295/563/111 268/460/111 -f 277/462/88 278/482/88 300/463/88 -f 281/465/88 287/484/88 283/466/88 -f 271/468/88 272/467/88 283/466/88 -f 275/470/88 276/483/88 299/471/88 -f 279/473/88 286/485/88 302/474/88 -f 273/476/88 274/481/88 298/477/88 -f 277/462/88 285/464/88 301/479/88 -f 271/468/88 296/469/88 298/477/88 -f 275/470/88 284/472/88 300/463/88 -f 273/476/88 297/478/88 299/471/88 -f 281/465/88 282/475/88 302/474/88 -f 279/473/88 280/480/88 301/479/88 -f 260/486/112 282/507/112 281/487/112 -f 261/489/113 271/496/113 274/490/113 -f 262/492/114 273/501/114 276/493/114 -f 255/495/113 272/509/113 271/496/113 -f 263/497/115 275/505/115 278/498/115 -f 256/500/114 274/565/114 273/501/114 -f 264/502/116 277/508/116 280/503/116 -f 257/494/115 276/493/115 275/505/115 -f 265/506/117 279/510/117 282/507/117 -f 258/499/116 278/498/116 277/508/116 -f 266/488/112 281/487/112 272/509/112 -f 259/504/117 280/503/117 279/510/117 -f 297/513/88 298/566/88 296/567/88 -f 296/567/88 283/568/88 287/569/88 -f 287/569/88 302/570/88 286/571/88 -f 286/571/88 301/572/88 285/511/88 -f 285/511/88 300/573/88 284/512/88 -f 284/512/88 299/574/88 297/513/88 -f 297/513/88 296/567/88 285/511/88 -f 296/567/88 287/569/88 285/511/88 -f 287/569/88 286/571/88 285/511/88 -f 313/514/118 314/529/118 310/515/118 -f 317/517/86 318/524/86 304/518/86 -f 315/520/119 307/540/119 317/521/119 -f 312/523/123 304/518/123 318/524/123 -f 319/526/121 318/575/121 308/527/121 -f 314/529/121 319/576/121 316/530/121 -f 306/531/123 312/577/123 319/532/123 -f 320/534/122 317/517/122 303/519/122 -f 313/536/122 320/578/122 311/537/122 -f 309/516/119 315/579/119 320/539/119 -f 308/527/86 318/575/86 317/521/86 -f 306/531/118 314/533/118 313/536/118 -f 293/543/88 289/580/88 292/581/88 -f 292/581/88 288/582/88 270/583/88 -f 270/583/88 291/584/88 295/585/88 -f 295/585/88 268/586/88 269/541/88 -f 269/541/88 290/587/88 294/542/88 -f 294/542/88 267/588/88 293/543/88 -f 293/543/88 292/581/88 269/541/88 -f 292/581/88 270/583/88 269/541/88 -f 270/583/88 295/585/88 269/541/88 -l 289 298 +vn 0.4890 -0.2090 -0.8469 +vn -0.4769 -0.3003 -0.8261 +vn -0.4890 -0.2090 -0.8469 +vn -0.4769 -0.3003 0.8261 +vn 0.4769 -0.3003 -0.8261 +s 1 +f 1/1/1 2/2/1 3/3/1 +f 4/4/2 5/5/2 2/2/2 +f 6/6/3 7/7/3 5/5/3 +f 8/8/4 9/9/4 7/7/4 +f 10/10/5 11/11/5 9/9/5 +f 10/12/6 8/13/6 1/14/6 +f 12/15/7 13/16/7 11/11/7 +f 14/17/8 3/18/8 13/16/8 +f 15/19/9 16/20/10 17/21/11 +f 18/22/12 19/23/12 20/24/12 +f 21/25/13 22/26/13 23/27/13 +f 24/28/14 25/29/15 26/30/14 +f 24/28/6 27/31/6 28/32/6 +f 29/33/16 30/34/16 31/35/16 +f 32/36/17 33/37/17 34/38/18 +f 34/38/19 35/39/19 36/40/19 +f 37/41/19 34/38/19 36/40/19 +f 30/34/20 32/36/17 34/38/18 +f 31/35/21 37/41/21 38/42/21 +f 39/43/21 31/35/21 38/42/21 +f 25/29/16 29/33/16 31/35/16 +f 26/30/22 39/43/22 40/44/22 +f 41/45/22 26/30/22 40/44/22 +f 22/26/14 24/28/14 26/30/14 +f 23/27/23 41/45/23 42/46/23 +f 43/47/24 23/27/23 42/46/23 +f 19/23/25 21/25/13 23/27/13 +f 20/24/26 43/47/26 44/48/26 +f 45/49/26 20/24/26 44/48/26 +f 16/20/12 18/22/12 20/24/12 +f 17/21/27 45/49/27 46/50/27 +f 35/51/27 17/21/27 46/50/27 +f 33/52/9 15/19/9 17/21/11 +f 47/53/28 48/54/28 49/55/28 +f 32/36/6 50/56/6 51/57/6 +f 15/19/6 50/58/6 52/59/6 +f 21/25/6 53/60/6 47/61/6 +f 29/33/6 54/62/6 55/63/6 +f 18/22/6 56/64/6 57/65/6 +f 24/28/6 58/66/6 59/67/6 +f 15/19/6 56/64/6 60/68/6 +f 21/25/6 27/31/6 61/69/6 +f 18/22/6 53/60/6 62/70/6 +f 32/36/6 54/62/6 63/71/6 +f 29/33/6 58/66/6 64/72/6 +f 65/73/6 49/74/6 66/75/6 +f 28/76/29 67/77/29 58/78/29 +f 52/79/30 68/80/30 56/81/31 +f 28/76/29 69/82/29 65/83/29 +f 64/84/32 70/85/32 54/86/32 +f 52/79/30 71/87/30 72/88/30 +f 57/89/33 48/54/33 53/90/33 +f 64/84/32 67/77/32 73/91/32 +f 63/92/34 71/87/34 50/93/34 +f 57/89/33 68/80/33 66/94/33 +f 47/53/28 69/82/28 27/95/28 +f 63/92/34 70/85/34 74/96/34 +f 75/97/35 76/98/35 77/99/35 +f 78/100/35 79/101/35 80/102/35 +f 81/103/35 78/100/35 80/102/35 +f 82/104/35 83/105/35 84/106/35 +f 85/107/35 86/108/35 87/109/35 +f 88/110/35 89/111/35 90/112/35 +f 91/113/35 75/97/35 92/114/35 +f 89/111/35 81/103/35 90/112/35 +f 76/98/35 82/104/35 77/99/35 +f 83/105/35 88/110/35 84/106/35 +f 79/101/35 85/107/35 87/109/35 +f 86/108/35 91/113/35 92/114/35 +f 93/115/6 94/116/6 95/117/6 +f 96/118/6 97/119/6 98/120/6 +f 99/121/6 97/119/6 100/122/6 +f 101/123/6 102/124/6 103/125/6 +f 104/126/6 105/127/6 106/128/6 +f 107/129/6 108/130/6 109/131/6 +f 93/115/6 110/132/6 111/133/6 +f 99/121/6 108/130/6 112/134/6 +f 101/123/6 94/116/6 113/135/6 +f 107/129/6 102/124/6 114/136/6 +f 96/118/6 105/127/6 115/137/6 +f 104/126/6 110/132/6 116/138/6 +f 87/139/36 96/140/36 79/141/36 +f 81/142/37 112/143/37 90/144/37 +f 88/145/38 114/146/38 84/147/38 +f 80/148/37 99/149/37 81/142/37 +f 82/150/39 113/151/39 77/152/39 +f 90/153/38 107/154/38 88/145/38 +f 75/155/40 111/156/40 92/157/40 +f 84/147/39 101/158/39 82/150/39 +f 86/159/41 106/160/41 87/139/41 +f 77/152/40 93/161/40 75/155/40 +f 79/141/36 98/162/36 80/148/36 +f 92/157/41 104/163/41 86/159/41 +f 95/164/6 103/165/6 109/166/6 +f 117/167/42 118/168/42 119/169/42 +f 120/170/4 121/171/4 122/172/4 +f 123/173/43 120/174/43 124/175/43 +f 125/176/44 126/177/44 127/178/44 +f 127/179/45 128/180/45 129/181/45 +f 130/182/45 129/183/45 118/168/45 +f 131/184/44 127/185/44 130/186/44 +f 124/187/46 122/172/46 132/188/46 +f 117/189/46 132/190/46 133/191/46 +f 119/169/43 124/192/43 117/167/43 +f 128/180/4 120/174/4 134/193/4 +f 131/184/42 117/189/42 133/191/42 +f 135/194/6 136/195/6 137/196/6 +f 1/1/1 4/4/1 2/2/1 +f 4/4/2 6/6/2 5/5/2 +f 6/6/3 8/8/3 7/7/3 +f 8/8/4 10/10/4 9/9/4 +f 10/10/5 12/15/5 11/11/5 +f 6/197/6 4/198/6 8/13/6 +f 4/198/6 1/14/6 8/13/6 +f 1/14/6 14/199/6 12/200/6 +f 12/200/6 10/12/6 1/14/6 +f 12/15/7 14/17/7 13/16/7 +f 14/17/8 1/201/8 3/18/8 +f 15/19/9 60/68/47 16/20/10 +f 18/22/12 62/70/12 19/23/12 +f 21/25/13 61/69/13 22/26/13 +f 24/28/14 59/67/15 25/29/15 +f 24/28/6 61/69/6 27/31/6 +f 29/33/16 55/63/16 30/34/16 +f 32/36/17 51/57/17 33/37/17 +f 34/38/19 33/37/19 35/39/19 +f 37/41/48 30/34/48 34/38/48 +f 30/34/20 55/63/49 32/36/17 +f 31/35/21 30/34/21 37/41/21 +f 39/43/21 25/29/21 31/35/21 +f 25/29/16 59/67/16 29/33/16 +f 26/30/22 25/29/22 39/43/22 +f 41/45/50 22/26/50 26/30/50 +f 22/26/14 61/69/14 24/28/14 +f 23/27/23 22/26/24 41/45/23 +f 43/47/23 19/23/23 23/27/23 +f 19/23/25 62/70/25 21/25/13 +f 20/24/26 19/23/26 43/47/26 +f 45/49/26 16/20/26 20/24/26 +f 16/20/12 60/68/12 18/22/12 +f 17/21/27 16/20/51 45/49/27 +f 35/51/27 33/52/27 17/21/27 +f 33/52/9 51/202/9 15/19/9 +f 47/53/28 53/90/28 48/54/28 +f 32/36/6 63/71/6 50/56/6 +f 15/19/6 51/202/6 50/58/6 +f 21/25/6 62/70/6 53/60/6 +f 29/33/6 64/72/6 54/62/6 +f 18/22/6 60/68/6 56/64/6 +f 24/28/6 28/32/6 58/66/6 +f 15/19/6 52/59/6 56/64/6 +f 21/25/6 47/61/6 27/31/6 +f 18/22/6 57/65/6 53/60/6 +f 32/36/6 55/63/6 54/62/6 +f 29/33/6 59/67/6 58/66/6 +f 66/75/6 68/203/6 72/204/6 +f 72/204/6 71/205/6 74/206/6 +f 74/206/6 70/207/6 73/208/6 +f 73/208/6 67/209/6 65/73/6 +f 65/73/6 69/210/6 49/74/6 +f 49/74/6 48/211/6 66/75/6 +f 66/75/6 72/204/6 65/73/6 +f 72/204/6 74/206/6 65/73/6 +f 74/206/6 73/208/6 65/73/6 +f 28/76/29 65/83/29 67/77/29 +f 52/79/30 72/88/30 68/80/30 +f 28/76/29 27/95/29 69/82/29 +f 64/84/32 73/91/32 70/85/32 +f 52/79/30 50/93/30 71/87/30 +f 57/89/33 66/94/33 48/54/33 +f 64/84/32 58/78/32 67/77/32 +f 63/92/34 74/96/34 71/87/34 +f 57/89/33 56/81/33 68/80/33 +f 47/53/28 49/55/28 69/82/28 +f 63/92/34 54/86/34 70/85/34 +f 75/97/35 135/212/35 76/98/35 +f 78/100/35 138/213/35 79/101/35 +f 81/103/35 139/214/35 78/100/35 +f 82/104/35 136/215/35 83/105/35 +f 85/107/35 140/216/35 86/108/35 +f 88/110/35 137/217/35 89/111/35 +f 91/113/35 135/212/35 75/97/35 +f 89/111/35 139/214/35 81/103/35 +f 76/98/35 136/215/35 82/104/35 +f 83/105/35 137/217/35 88/110/35 +f 79/101/35 138/213/35 85/107/35 +f 86/108/35 140/216/35 91/113/35 +f 93/115/6 113/135/6 94/116/6 +f 96/118/6 115/137/6 97/119/6 +f 99/121/6 98/120/6 97/119/6 +f 101/123/6 114/136/6 102/124/6 +f 104/126/6 116/138/6 105/127/6 +f 107/129/6 112/134/6 108/130/6 +f 93/115/6 95/117/6 110/132/6 +f 99/121/6 100/122/6 108/130/6 +f 101/123/6 103/125/6 94/116/6 +f 107/129/6 109/131/6 102/124/6 +f 96/118/6 106/128/6 105/127/6 +f 104/126/6 111/133/6 110/132/6 +f 87/139/36 106/160/36 96/140/36 +f 81/142/37 99/149/37 112/143/37 +f 88/145/38 107/154/38 114/146/38 +f 80/148/37 98/162/37 99/149/37 +f 82/150/39 101/158/39 113/151/39 +f 90/153/38 112/218/38 107/154/38 +f 75/155/40 93/161/40 111/156/40 +f 84/147/39 114/146/39 101/158/39 +f 86/159/41 104/163/41 106/160/41 +f 77/152/40 113/151/40 93/161/40 +f 79/141/36 96/140/36 98/162/36 +f 92/157/41 111/156/41 104/163/41 +f 109/166/6 108/219/6 100/220/6 +f 100/220/6 97/221/6 115/222/6 +f 115/222/6 105/223/6 116/224/6 +f 116/224/6 110/225/6 95/164/6 +f 95/164/6 94/226/6 103/165/6 +f 103/165/6 102/227/6 109/166/6 +f 109/166/6 100/220/6 95/164/6 +f 100/220/6 115/222/6 95/164/6 +f 115/222/6 116/224/6 95/164/6 +f 117/167/42 130/182/42 118/168/42 +f 120/170/4 126/177/4 121/171/4 +f 123/173/43 134/193/43 120/174/43 +f 125/176/44 121/171/44 126/177/44 +f 127/179/45 126/228/45 128/180/45 +f 130/182/45 127/229/45 129/183/45 +f 131/184/44 125/230/44 127/185/44 +f 124/187/46 120/170/46 122/172/46 +f 117/189/46 124/231/46 132/190/46 +f 119/169/43 123/232/43 124/192/43 +f 128/180/4 126/228/4 120/174/4 +f 131/184/42 130/186/42 117/189/42 +f 137/196/6 89/233/6 139/234/6 +f 139/234/6 78/235/6 138/236/6 +f 138/236/6 85/237/6 140/238/6 +f 140/238/6 91/239/6 135/194/6 +f 135/194/6 76/240/6 136/195/6 +f 136/195/6 83/241/6 137/196/6 +f 137/196/6 139/234/6 135/194/6 +f 139/234/6 138/236/6 135/194/6 +f 138/236/6 140/238/6 135/194/6 +l 89 108 +o window_Cube.002 +v 0.338840 1.091828 -0.732264 +v 0.809482 0.874469 -0.732264 +v 0.338840 0.874469 -0.732264 +v 0.809482 1.091828 -0.732264 +vt 0.978282 0.984581 +vt 0.711622 0.781054 +vt 0.978133 0.780594 +vt 0.713513 0.984128 +vn 0.0000 0.0000 -1.0000 +s 1 +f 141/242/52 142/243/52 143/244/52 +f 141/242/52 144/245/52 142/243/52 +o mainbody_Cube.001 +v 0.853658 0.789125 -0.153063 +v 0.857794 1.181387 -0.156304 +v 0.853658 1.181387 -0.153063 +v 0.849338 0.787154 -0.151007 +v 0.127829 1.183358 -0.151007 +v 0.125502 0.787154 -0.149193 +v 0.238197 0.787154 -0.728996 +v 0.234821 1.183358 -0.728996 +v 0.238197 1.183358 -0.728996 +v 0.234821 0.787154 -0.728996 +v 0.234821 1.127133 -0.731795 +v 0.121182 1.181387 -0.733581 +v 0.115750 0.789125 -0.732973 +v 0.117047 1.181387 -0.730340 +v 0.827432 1.125951 -0.735637 +v 0.835231 1.121211 -0.732176 +v 0.826308 1.125951 -0.732176 +v 0.155271 1.127133 -0.731795 +v 0.138747 1.118357 -0.731795 +v 0.140113 0.846848 -0.735637 +v 0.149037 0.842109 -0.731795 +v 0.149037 0.842109 -0.735637 +v 0.149897 1.125951 -0.735637 +v 0.140973 1.121211 -0.731795 +v 0.140973 1.121211 -0.735637 +v 0.234821 1.127133 -0.735637 +v 0.155271 1.127133 -0.735637 +v 0.154411 0.840926 -0.731795 +v 0.154411 0.840926 -0.735637 +v 0.149897 1.125951 -0.731795 +v 0.234338 0.840926 -0.731795 +v 0.234338 0.840926 -0.735637 +v 0.137887 0.849703 -0.735637 +v 0.140113 0.846848 -0.731795 +v 0.138747 1.118357 -0.735637 +v 0.137887 0.849703 -0.731795 +v 0.821198 0.840926 -0.735637 +v 0.825447 0.842109 -0.732176 +v 0.826572 0.842109 -0.735637 +v 0.836356 1.121211 -0.735637 +v 0.837458 1.118357 -0.732176 +v 0.837722 0.849703 -0.735637 +v 0.838582 1.118357 -0.735637 +v 0.835496 0.846848 -0.735637 +v 0.836597 0.849703 -0.732176 +v 0.822058 1.127133 -0.735637 +v 0.820933 1.127133 -0.732176 +v 0.834371 0.846848 -0.732176 +v 0.126814 0.787154 -0.735637 +v 0.234821 0.787154 -0.735637 +v 0.857794 0.789125 -0.730340 +v 0.853658 1.181387 -0.733581 +v 0.857794 1.181387 -0.730340 +v 0.847012 1.183358 -0.735637 +v 0.848027 0.787154 -0.735637 +v 0.860417 0.787154 -0.726955 +v 0.860417 1.183358 -0.161513 +v 0.862732 0.787154 -0.159690 +v 0.114423 0.787154 -0.159690 +v 0.114423 1.183358 -0.725132 +v 0.112109 0.787154 -0.726955 +v 0.121182 1.181387 -0.153063 +v 0.117047 0.789125 -0.156304 +v 0.121182 0.789125 -0.153063 +v 0.853658 0.789125 -0.733581 +v 0.860417 1.183358 -0.725132 +v 0.847012 1.183358 -0.151007 +v 0.857794 0.789125 -0.156304 +v 0.127829 1.183358 -0.735637 +v 0.120534 0.789125 -0.735475 +v 0.114423 1.183358 -0.161513 +v 0.117047 1.181387 -0.156304 +v 0.246749 1.051755 -0.754385 +v 0.246749 1.118254 -0.734150 +v 0.246749 1.051755 -0.757676 +v 0.273339 1.118254 -0.734150 +v 0.282202 1.051755 -0.757676 +v 0.273339 1.051755 -0.757676 +v 0.282202 1.118254 -0.730859 +v 0.282202 1.051755 -0.751094 +v 0.282202 1.051755 -0.754385 +v 0.255612 1.051755 -0.751094 +v 0.246749 1.118254 -0.727568 +v 0.246749 1.051755 -0.751094 +v 0.273339 0.852258 -0.730849 +v 0.282202 0.852258 -0.727568 +v 0.273339 0.852258 -0.727568 +v 0.255612 1.118254 -0.730849 +v 0.255612 1.118254 -0.727568 +v 0.264475 1.118254 -0.730849 +v 0.273339 1.118254 -0.727568 +v 0.273339 1.118254 -0.730849 +v 0.264475 0.852258 -0.730849 +v 0.255612 0.852258 -0.727568 +v 0.255612 0.852258 -0.730849 +v 0.255612 0.985256 -0.755632 +v 0.246749 0.918757 -0.747802 +v 0.255612 0.918757 -0.747802 +v 0.273339 0.918757 -0.747802 +v 0.264475 0.985256 -0.755632 +v 0.264475 0.918757 -0.747802 +v 0.264475 1.051755 -0.751094 +v 0.273339 1.051755 -0.751094 +v 0.282202 0.918757 -0.751094 +v 0.282202 0.985256 -0.755632 +v 0.282202 0.918757 -0.747802 +v 0.273339 0.985256 -0.762214 +v 0.282202 0.918757 -0.754385 +v 0.273339 0.918757 -0.754385 +v 0.255612 0.985256 -0.762214 +v 0.264475 0.918757 -0.754385 +v 0.255612 0.918757 -0.754385 +v 0.255612 1.118254 -0.734150 +v 0.264475 1.051755 -0.757676 +v 0.255612 1.051755 -0.757676 +v 0.246749 0.985256 -0.758923 +v 0.246749 0.918757 -0.754385 +v 0.246749 0.918757 -0.751094 +v 0.246749 0.852258 -0.734150 +v 0.246749 0.852258 -0.730859 +v 0.246749 0.852258 -0.727568 +v 0.246749 0.985256 -0.755632 +v 0.264475 0.985256 -0.762214 +v 0.246749 0.985256 -0.762214 +v 0.264475 0.852258 -0.734150 +v 0.255612 0.852258 -0.734150 +v 0.282202 0.852258 -0.734150 +v 0.273339 0.852258 -0.734150 +v 0.282202 0.852258 -0.730859 +v 0.282202 0.985256 -0.758923 +v 0.273339 0.985256 -0.755632 +v 0.282202 1.118254 -0.727568 +v 0.264475 0.852258 -0.727568 +v 0.282202 1.118254 -0.734150 +v 0.264475 1.118254 -0.734150 +v 0.264475 1.118254 -0.727568 +v 0.246749 1.118254 -0.730859 +v 0.282202 0.985256 -0.762214 +v 0.303131 1.127133 -0.208209 +v 0.303131 1.127133 -0.732176 +v 0.834371 0.846848 -0.208209 +v 0.826308 1.125951 -0.208209 +v 0.837458 1.118357 -0.208209 +v 0.820073 0.840926 -0.732176 +v 0.825447 0.842109 -0.208209 +v 0.835231 1.121211 -0.208209 +v 0.303131 0.840926 -0.208209 +v 0.303131 0.840926 -0.732176 +v 0.820073 0.840926 -0.208209 +v 0.836597 0.849703 -0.208209 +v 0.820933 1.127133 -0.208209 +v 0.796168 0.874846 -0.732176 +v 0.807544 1.087096 -0.732176 +v 0.339101 1.091541 -0.732176 +v 0.339101 0.874846 -0.732176 +v 0.806898 0.879290 -0.732176 +v 0.796813 1.091541 -0.732176 +v 0.800201 0.875733 -0.732176 +v 0.800847 1.090653 -0.732176 +v 0.809215 1.084954 -0.732176 +v 0.238197 0.840926 -0.735637 +v 0.238197 1.127133 -0.735637 +v 0.238197 1.127133 -0.731795 +v 0.238197 0.840926 -0.731795 +v 0.234821 1.183358 -0.735637 +v 0.238197 0.787154 -0.735637 +v 0.238197 1.183358 -0.735637 +v 0.808569 0.881432 -0.732176 +vt 0.187756 0.185116 +vt 0.190250 0.359586 +vt 0.187359 0.359553 +vt 0.184816 0.183014 +vt 0.011904 0.361665 +vt 0.011410 0.182951 +vt 0.434160 0.035160 +vt 0.437617 0.233175 +vt 0.433848 0.233203 +vt 0.421314 0.234632 +vt 0.421314 0.024505 +vt 0.424461 0.141338 +vt 0.180342 0.556180 +vt 0.006258 0.555192 +vt 0.180341 0.553216 +vt 0.619010 0.294600 +vt 0.615336 0.293939 +vt 0.618997 0.293255 +vt 0.560911 0.771909 +vt 0.499383 0.771947 +vt 0.573681 0.763070 +vt 0.551781 0.278506 +vt 0.554882 0.277399 +vt 0.554849 0.278591 +vt 0.477598 0.276038 +vt 0.480699 0.274931 +vt 0.480666 0.276123 +vt 0.456844 0.275464 +vt 0.476217 0.274807 +vt 0.476184 0.275999 +vt 0.556296 0.277438 +vt 0.556263 0.278630 +vt 0.477631 0.274846 +vt 0.575727 0.277976 +vt 0.575694 0.279168 +vt 0.550366 0.278467 +vt 0.551814 0.277314 +vt 0.482080 0.276163 +vt 0.550399 0.277275 +vt 0.482113 0.274971 +vt 0.529499 0.294540 +vt 0.531162 0.293570 +vt 0.531174 0.294916 +vt 0.615349 0.295285 +vt 0.613628 0.294117 +vt 0.536559 0.295677 +vt 0.613641 0.295463 +vt 0.534848 0.295531 +vt 0.536546 0.294332 +vt 0.620678 0.294193 +vt 0.620665 0.292848 +vt 0.534835 0.294186 +vt 0.390231 0.176341 +vt 0.365296 0.176585 +vt 0.365277 0.174628 +vt 0.008379 0.053132 +vt 0.010531 0.175541 +vt 0.008501 0.175525 +vt 0.678815 0.051868 +vt 0.681765 0.009865 +vt 0.681766 0.212069 +vt 0.191651 0.177060 +vt 0.014270 0.002844 +vt 0.192984 0.003659 +vt 0.661827 0.216665 +vt 0.508504 0.216408 +vt 0.472754 0.213047 +vt 0.182461 0.549659 +vt 0.002549 0.378060 +vt 0.181254 0.376258 +vt 0.008747 0.359552 +vt 0.004975 0.185105 +vt 0.008120 0.184943 +vt 0.006284 0.051542 +vt 0.010601 0.053093 +vt 0.004000 0.561180 +vt 0.003756 0.551834 +vt 0.006284 0.177060 +vt 0.012743 0.177034 +vt 0.012878 0.051518 +vt 0.184195 0.361727 +vt 0.193393 0.361723 +vt 0.190903 0.184977 +vt 0.194207 0.183009 +vt 0.182571 0.559338 +vt 0.182461 0.550031 +vt 0.006443 0.558120 +vt 0.002020 0.183025 +vt 0.004195 0.360497 +vt 0.005856 0.359540 +vt 0.363575 0.189539 +vt 0.388348 0.187899 +vt 0.391408 0.191039 +vt 0.913862 0.374962 +vt 0.932207 0.411652 +vt 0.913862 0.411652 +vt 0.947121 0.484382 +vt 0.928948 0.502555 +vt 0.928948 0.484382 +vt 0.922832 0.558833 +vt 0.904487 0.595522 +vt 0.904487 0.558833 +vt 0.904487 0.650556 +vt 0.922832 0.668901 +vt 0.904487 0.668901 +vt 0.831108 0.558833 +vt 0.849453 0.595522 +vt 0.831108 0.595522 +vt 0.977866 0.558833 +vt 0.996210 0.595522 +vt 0.977866 0.595522 +vt 0.959521 0.558833 +vt 0.941176 0.595522 +vt 0.941176 0.558833 +vt 0.812764 0.558833 +vt 0.794419 0.595522 +vt 0.794419 0.558833 +vt 0.886142 0.650556 +vt 0.867798 0.668901 +vt 0.867798 0.650556 +vt 0.867798 0.613867 +vt 0.886142 0.632212 +vt 0.867798 0.632212 +vt 0.922832 0.613867 +vt 0.904487 0.632212 +vt 0.904487 0.613867 +vt 0.867798 0.558833 +vt 0.886142 0.595522 +vt 0.867798 0.595522 +vt 0.899580 0.488095 +vt 0.881478 0.506196 +vt 0.881478 0.488095 +vt 0.899580 0.451892 +vt 0.881478 0.469993 +vt 0.881478 0.451892 +vt 0.947121 0.448035 +vt 0.928948 0.466208 +vt 0.928948 0.448035 +vt 0.895517 0.374962 +vt 0.877173 0.411652 +vt 0.877173 0.374962 +vt 0.858828 0.411652 +vt 0.858828 0.374962 +vt 0.877173 0.338273 +vt 0.858828 0.338273 +vt 0.895517 0.338273 +vt 0.917681 0.451892 +vt 0.899580 0.469993 +vt 0.917681 0.433790 +vt 0.899580 0.433790 +vt 0.947121 0.429861 +vt 0.928948 0.429861 +vt 0.867173 0.448727 +vt 0.848828 0.467071 +vt 0.848828 0.448727 +vt 0.867173 0.430382 +vt 0.848828 0.430382 +vt 0.881478 0.433790 +vt 0.867173 0.485416 +vt 0.848828 0.503761 +vt 0.848828 0.485416 +vt 0.867173 0.467071 +vt 0.849453 0.558833 +vt 0.849453 0.522144 +vt 0.867798 0.522144 +vt 0.886142 0.558833 +vt 0.886142 0.613867 +vt 0.922832 0.595522 +vt 0.849453 0.632212 +vt 0.849453 0.613867 +vt 0.849453 0.668901 +vt 0.849453 0.650556 +vt 0.776074 0.595522 +vt 0.776074 0.558833 +vt 0.794419 0.522144 +vt 0.776074 0.522144 +vt 0.812764 0.522144 +vt 0.941176 0.522144 +vt 0.922832 0.522144 +vt 0.959521 0.522144 +vt 0.959521 0.595522 +vt 0.977866 0.522144 +vt 0.996210 0.558833 +vt 0.812764 0.595522 +vt 0.831108 0.522144 +vt 0.886142 0.668901 +vt 0.922832 0.632212 +vt 0.904487 0.522144 +vt 0.886142 0.522144 +vt 0.917681 0.488095 +vt 0.899580 0.506196 +vt 0.917681 0.469993 +vt 0.947121 0.466208 +vt 0.895517 0.411652 +vt 0.913862 0.338273 +vt 0.932207 0.374962 +vt 0.002361 0.690819 +vt 0.139582 0.797050 +vt 0.002382 0.797077 +vt 0.002401 0.574653 +vt 0.139602 0.577216 +vt 0.002401 0.577243 +vt 0.002381 0.685835 +vt 0.139582 0.688398 +vt 0.002381 0.688425 +vt 0.002381 0.579638 +vt 0.139602 0.683414 +vt 0.002401 0.683441 +vt 0.142087 0.686223 +vt 0.139686 0.823759 +vt 0.139686 0.686202 +vt 0.139581 0.685808 +vt 0.139686 0.574626 +vt 0.278011 0.686118 +vt 0.139686 0.686118 +vt 0.248444 0.686223 +vt 0.142087 0.823780 +vt 0.139581 0.579611 +vt 0.139561 0.690792 +vt 0.250041 0.742196 +vt 0.249216 0.741377 +vt 0.249011 0.740883 +vt 0.774121 0.040412 +vt 0.741243 0.024151 +vt 0.740050 0.027021 +vt 0.969467 0.033059 +vt 0.943495 0.044419 +vt 0.971709 0.034142 +vt 0.946381 0.253662 +vt 0.739889 0.270791 +vt 0.975938 0.269283 +vt 0.769234 0.254505 +vt 0.778655 0.034951 +vt 0.748853 0.018299 +vt 0.746005 0.019438 +vt 0.975297 0.038147 +vt 0.946804 0.049219 +vt 0.976119 0.040486 +vt 0.775156 0.037976 +vt 0.946189 0.047450 +vt 0.941812 0.043603 +vt 0.456798 0.276753 +vt 0.529486 0.293195 +vt 0.696767 0.284505 +vt 0.696612 0.283178 +vt 0.740071 0.299235 +vt 0.431207 0.203196 +vt 0.430221 0.118309 +vt 0.434139 0.035214 +vt 0.437617 0.035132 +vt 0.428782 0.141338 +vt 0.428782 0.234632 +vt 0.422863 0.024375 +vt 0.423529 0.042958 +vt 0.424425 0.042882 +vt 0.499383 0.483956 +vt 0.561202 0.483917 +vt 0.573995 0.492741 +vt 0.572269 0.489869 +vt 0.565361 0.485105 +vt 0.571963 0.765944 +vt 0.565067 0.770717 +vt 0.456877 0.274272 +vt 0.362261 0.174619 +vt 0.362252 0.177081 +vt 0.221168 0.176128 +vt 0.218310 0.173556 +vt 0.218310 0.006092 +vt 0.221417 0.003539 +vt 0.388881 0.003540 +vt 0.391433 0.006646 +vt 0.393601 0.173750 +vt 0.525055 0.212989 +vt 0.674718 0.186092 +vt 0.524902 0.186971 +vt 0.472754 0.045915 +vt 0.472804 0.009580 +vt 0.673151 0.046188 +vt 0.676096 0.185512 +vt 0.678376 0.183205 +vt 0.674995 0.046955 +vt 0.678054 0.050022 +vt 0.678940 0.181820 +vt 0.012947 0.175130 +vt 0.698934 0.213354 +vt 0.698934 0.245794 +vt 0.666837 0.221675 +vt 0.666837 0.245794 +vt 0.503488 0.245686 +vt 0.472755 0.245833 +vt 0.503488 0.221424 +vt 0.666162 0.220045 +vt 0.663456 0.217340 +vt 0.504163 0.219793 +vt 0.506872 0.217084 +vt 0.004989 0.551834 +vt 0.390747 0.356145 +vt 0.386158 0.360486 +vt 0.360628 0.189572 +vt 0.219798 0.360486 +vt 0.216697 0.357385 +vt 0.216697 0.191025 +vt 0.219798 0.187924 +vt 0.360628 0.187426 +vt 0.363600 0.187579 +vt 0.947121 0.502555 +vt 0.922832 0.650556 +vt 0.867173 0.503761 +vt 0.996210 0.522144 +vt 0.917681 0.506196 +vt 0.932207 0.338273 +vt 0.139601 0.574626 +vt 0.278011 0.574626 +vt 0.248444 0.823780 +vt 0.249011 0.687906 +vt 0.294366 0.687906 +vt 0.294366 0.740616 +vt 0.294160 0.741111 +vt 0.292839 0.742143 +vt 0.250538 0.742399 +vt 0.293336 0.741935 +vt 0.781306 0.033891 +vt 0.457098 0.275488 +vt 0.976119 0.297728 +vt 0.433827 0.231012 +vt 0.431907 0.231171 +vt 0.429916 0.203288 +vt 0.426195 0.118261 +vt 0.427181 0.035132 +vn 0.6168 0.0000 0.7871 +vn 0.0021 0.0039 1.0000 +vn 0.0003 0.0007 1.0000 +vn 0.0025 0.0046 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn -0.6169 0.0073 -0.7870 +vn -0.4638 -0.8731 -0.1507 +vn -0.4637 -0.8731 -0.1507 +vn 0.4690 0.8832 0.0000 +vn 0.4691 -0.8832 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.2150 0.9766 0.0000 +vn 0.2148 -0.9767 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7883 0.6153 0.0000 +vn 0.7884 0.6151 0.0000 +vn 1.0000 -0.0032 0.0000 +vn 0.7885 -0.6150 0.0000 +vn -0.2141 0.9743 -0.0697 +vn -0.7638 -0.5958 -0.2482 +vn -0.7637 -0.5959 -0.2482 +vn -0.9511 0.0030 -0.3089 +vn -0.7639 0.5956 -0.2483 +vn -0.2143 -0.9743 -0.0696 +vn -0.4636 0.8731 -0.1507 +vn 0.6168 0.0000 -0.7871 +vn 1.0000 0.0052 -0.0037 +vn 1.0000 0.0005 -0.0005 +vn 1.0000 0.0058 -0.0041 +vn -1.0000 0.0052 0.0037 +vn -1.0000 0.0005 0.0005 +vn -1.0000 0.0058 0.0041 +vn -0.6169 -0.0000 0.7871 +vn 0.5448 -0.4689 -0.6952 +vn -0.2589 -0.8606 -0.4385 +vn 0.3836 0.7830 -0.4896 +vn 0.3837 0.7830 -0.4896 +vn 0.8931 0.0000 -0.4498 +vn 0.3427 0.0009 -0.9394 +vn 0.3836 0.7832 0.4893 +vn 0.3836 0.7831 0.4895 +vn 0.2955 -0.0000 0.9553 +vn 0.5448 -0.4689 0.6952 +vn 0.5674 0.0071 0.8234 +vn -0.3835 0.7833 -0.4892 +vn -0.3835 0.7833 -0.4893 +vn -0.2969 0.0051 -0.9549 +vn -0.8565 0.0063 -0.5161 +vn -0.5449 -0.4688 0.6952 +vn -0.6654 0.0073 0.7465 +vn -0.3837 0.7830 0.4895 +vn -0.3836 0.7831 0.4895 +vn -0.8931 -0.0000 0.4499 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.3335 -0.9427 +vn 0.0000 -0.3335 0.9427 +vn 0.0000 0.1169 0.9931 +vn 0.0000 -0.1169 -0.9931 +vn 0.0000 0.0681 -0.9977 +vn 0.0000 -0.2911 -0.9567 +vn 0.0000 -0.0681 0.9977 +vn 0.0000 0.2911 0.9567 +vn -0.4690 0.8832 0.0000 +vn -0.4691 -0.8831 0.0000 +vn -1.0000 0.0032 0.0000 +vn -0.2150 0.9766 0.0000 +vn -0.7886 -0.6149 -0.0000 +vn -0.7886 0.6149 0.0000 +vn -0.2148 -0.9767 0.0000 +vn 0.0000 -1.0000 0.0001 +vn -0.0059 0.0000 -1.0000 +vn 0.0000 -0.0000 1.0000 +vn 1.0000 0.0090 0.0000 +vn 0.9796 -0.0017 -0.2008 +vn -0.4634 0.0050 -0.8861 +vn 0.7886 0.6149 0.0000 +vn -0.2142 0.9743 -0.0695 +vn -0.7639 -0.5958 -0.2481 +vn -0.9511 0.0029 -0.3088 +vn 0.4513 -0.6178 -0.6439 +vn -0.2689 -0.8145 -0.5141 +vn 0.7912 0.0028 -0.6115 +vn 0.2955 0.0000 -0.9553 +vn 0.3837 0.7830 0.4897 +vn 0.4288 0.0025 0.9034 +vn 0.5423 -0.0784 0.8365 +vn 0.8932 -0.0000 0.4498 +vn -0.3836 0.7831 -0.4895 +vn -0.0258 0.0001 -0.9997 +vn -0.8919 0.0073 -0.4521 +vn -0.6855 -0.0819 0.7235 +vn -0.2955 -0.0000 0.9553 +vn -0.7912 0.0028 0.6115 +vn -0.7887 -0.6148 -0.0000 +s 1 +f 145/246/53 146/247/53 147/248/53 +f 148/249/54 149/250/55 150/251/56 +f 151/252/57 152/253/57 153/254/57 +f 152/255/58 154/256/58 155/257/58 +f 156/258/59 157/259/59 158/260/59 +f 159/261/60 160/262/61 161/263/60 +f 162/264/57 155/265/57 163/266/57 +f 164/267/62 165/268/62 166/269/62 +f 167/270/63 168/271/63 169/272/63 +f 170/273/64 162/274/64 171/275/64 +f 166/269/65 172/276/65 173/277/65 +f 171/275/66 174/278/66 167/270/66 +f 173/277/67 175/279/67 176/280/67 +f 177/281/68 178/282/69 164/267/69 +f 179/283/70 180/284/70 177/281/70 +f 169/272/71 163/285/71 179/283/71 +f 181/286/72 182/287/72 183/288/72 +f 184/289/73 185/290/73 160/262/74 +f 186/291/75 185/290/75 187/292/75 +f 188/293/76 189/294/76 186/291/76 +f 190/295/77 161/263/77 191/296/77 +f 183/288/78 192/297/78 188/293/78 +f 193/298/64 194/299/64 154/300/64 +f 195/301/79 196/302/79 197/303/79 +f 187/304/57 198/305/57 199/306/57 +f 200/307/80 201/308/81 202/309/82 +f 179/310/57 177/311/57 193/312/57 +f 203/313/83 204/314/84 205/315/85 +f 206/316/86 207/317/86 208/318/86 +f 200/319/87 209/320/87 195/301/87 +f 157/259/88 193/321/88 205/322/88 +f 210/323/89 196/302/90 198/324/90 +f 210/323/91 195/301/91 197/303/91 +f 198/324/92 209/320/92 199/325/92 +f 211/326/93 146/247/94 201/327/94 +f 211/326/95 145/246/95 147/248/95 +f 148/249/96 212/328/96 145/246/96 +f 201/327/97 212/328/97 202/329/97 +f 213/330/98 158/260/99 204/331/99 +f 213/330/100 214/332/100 156/258/100 +f 205/322/101 158/260/101 157/259/101 +f 203/333/102 208/318/102 207/317/102 +f 149/250/103 208/318/103 150/251/103 +f 215/334/104 206/316/105 149/250/105 +f 215/334/106 207/317/106 216/335/106 +f 152/336/67 213/337/67 204/338/67 +f 217/339/107 218/340/107 219/341/107 +f 220/342/108 221/343/108 222/344/108 +f 223/345/58 224/346/58 225/347/58 +f 226/348/109 227/349/109 228/350/109 +f 229/351/64 230/352/64 231/353/64 +f 232/354/67 227/355/67 233/356/67 +f 234/357/67 235/358/67 236/359/67 +f 237/360/64 238/361/64 239/362/64 +f 240/363/110 241/364/110 242/365/110 +f 243/366/110 244/367/110 245/368/110 +f 235/369/109 246/370/109 247/371/109 +f 248/372/58 249/373/58 250/374/58 +f 251/375/111 252/376/111 253/377/111 +f 254/378/111 255/379/111 256/380/111 +f 257/381/108 258/382/108 259/383/108 +f 260/384/107 261/385/107 262/386/107 +f 262/386/107 263/387/107 264/388/107 +f 241/389/107 264/388/107 265/390/107 +f 266/391/107 262/386/107 241/389/107 +f 259/392/112 267/393/112 254/378/112 +f 219/394/112 254/378/112 268/395/112 +f 218/396/108 259/383/108 219/397/108 +f 256/398/113 269/399/113 270/400/113 +f 261/401/113 270/400/113 263/402/113 +f 268/395/111 256/380/111 261/403/111 +f 253/404/113 271/405/113 272/406/113 +f 255/407/113 272/406/113 269/399/113 +f 267/393/111 253/377/111 255/379/111 +f 273/408/58 250/374/58 230/352/58 +f 271/409/58 248/372/58 273/408/58 +f 252/410/58 274/411/58 248/372/58 +f 247/371/114 244/367/114 275/412/114 +f 224/346/114 275/412/114 249/373/114 +f 276/413/109 247/371/109 224/346/109 +f 243/366/115 277/414/115 231/415/115 +f 250/374/115 231/415/115 230/352/115 +f 249/373/110 243/366/110 250/374/110 +f 242/365/115 265/416/115 238/417/115 +f 245/368/115 238/417/115 277/414/115 +f 244/367/110 242/365/110 245/368/110 +f 239/362/64 265/418/64 264/419/64 +f 270/420/64 264/419/64 263/421/64 +f 269/422/64 239/362/64 270/420/64 +f 236/359/67 276/413/67 223/345/67 +f 220/423/67 223/345/67 278/424/67 +f 279/425/67 236/359/67 220/423/67 +f 232/354/67 280/426/67 234/357/67 +f 257/427/67 234/357/67 279/425/67 +f 257/427/67 281/428/67 232/354/67 +f 229/351/64 277/429/64 237/360/64 +f 272/430/64 237/360/64 269/422/64 +f 272/430/64 273/408/64 229/351/64 +f 226/348/114 266/431/114 240/363/114 +f 246/370/114 240/363/114 244/367/114 +f 280/432/109 226/348/109 246/370/109 +f 225/347/58 249/373/58 274/411/58 +f 221/433/58 274/411/58 282/434/58 +f 278/424/58 225/347/58 221/433/58 +f 222/435/112 282/436/112 251/375/112 +f 258/437/112 251/375/112 267/393/112 +f 279/438/108 222/344/108 258/382/108 +f 260/384/107 219/341/107 268/439/107 +f 266/391/107 217/339/107 260/384/107 +f 228/440/107 281/441/107 217/339/107 +f 191/442/64 283/443/64 284/444/64 +f 182/445/116 285/446/116 192/447/116 +f 160/448/117 286/449/117 161/450/117 +f 189/451/118 287/452/118 185/453/118 +f 288/454/119 289/455/119 182/456/119 +f 185/453/120 290/457/120 160/448/120 +f 284/458/58 291/459/58 292/460/58 +f 292/461/67 293/462/67 288/454/67 +f 192/447/121 294/463/121 189/451/121 +f 161/450/122 295/464/122 191/442/122 +f 285/465/57 289/466/57 293/467/57 +f 296/468/57 182/469/57 288/470/57 +f 185/471/57 297/472/57 160/473/57 +f 298/474/57 292/475/57 284/476/57 +f 299/477/57 288/470/57 292/475/57 +f 300/478/57 189/479/57 192/480/57 +f 161/481/57 301/482/57 191/483/57 +f 191/483/57 298/474/57 284/476/57 +f 302/484/57 192/480/57 182/469/57 +f 160/473/57 303/485/57 161/481/57 +f 189/479/57 304/486/57 185/471/57 +f 305/487/67 288/488/67 181/286/67 +f 306/489/64 191/296/123 307/490/64 +f 308/491/124 284/476/124 292/475/124 +f 307/492/107 308/493/107 151/494/107 +f 145/246/53 212/328/53 146/247/53 +f 148/249/54 211/326/125 149/250/55 +f 151/252/57 154/495/57 152/253/57 +f 170/496/58 309/497/58 155/257/58 +f 309/497/58 152/255/58 155/257/58 +f 154/256/126 194/498/126 175/499/126 +f 194/498/126 176/500/126 175/499/126 +f 154/256/127 175/499/127 155/257/127 +f 156/258/128 214/332/128 157/259/128 +f 159/261/60 184/289/61 160/262/61 +f 155/265/57 175/501/57 163/266/57 +f 175/501/57 172/502/57 180/503/57 +f 180/503/57 172/502/57 178/504/57 +f 172/502/57 165/505/57 178/504/57 +f 180/503/57 163/266/57 175/501/57 +f 163/266/57 168/506/57 174/507/57 +f 174/507/57 162/264/57 163/266/57 +f 164/267/62 178/282/62 165/268/62 +f 167/270/63 174/278/63 168/271/63 +f 170/273/64 155/508/64 162/274/64 +f 166/269/65 165/268/65 172/276/65 +f 171/275/66 162/274/66 174/278/66 +f 173/277/67 172/276/67 175/279/67 +f 177/281/68 180/284/129 178/282/69 +f 179/283/70 163/285/70 180/284/70 +f 169/272/71 168/271/71 163/285/71 +f 181/286/130 288/488/130 182/287/130 +f 184/289/73 187/292/131 185/290/73 +f 186/291/132 189/294/132 185/290/132 +f 188/293/76 192/297/76 189/294/76 +f 190/295/77 159/261/77 161/263/77 +f 183/288/78 182/287/78 192/297/78 +f 151/509/64 310/510/64 199/511/64 +f 199/511/64 200/512/64 151/509/64 +f 200/512/64 202/513/64 148/514/64 +f 151/509/64 200/512/64 148/514/64 +f 148/514/64 150/515/64 203/516/64 +f 151/509/64 148/514/64 203/516/64 +f 203/516/64 205/517/64 154/300/64 +f 151/509/64 203/516/64 154/300/64 +f 205/517/64 193/298/64 154/300/64 +f 195/301/79 209/320/79 196/302/79 +f 199/306/57 310/518/57 181/519/57 +f 310/518/57 305/520/57 181/519/57 +f 306/521/57 311/522/57 190/523/57 +f 311/522/57 198/305/57 190/523/57 +f 199/306/57 181/519/57 183/524/57 +f 199/306/57 183/524/57 188/525/57 +f 159/526/57 190/523/57 198/305/57 +f 184/527/57 159/526/57 198/305/57 +f 199/306/57 188/525/57 186/528/57 +f 187/304/57 184/527/57 198/305/57 +f 199/306/57 186/528/57 187/304/57 +f 200/307/80 210/529/58 201/308/81 +f 213/530/57 309/531/57 171/532/57 +f 309/531/57 170/533/57 171/532/57 +f 176/534/57 194/535/57 173/536/57 +f 194/535/57 193/312/57 173/536/57 +f 213/530/57 171/532/57 167/537/57 +f 213/530/57 167/537/57 169/538/57 +f 166/539/57 173/536/57 193/312/57 +f 164/540/57 166/539/57 193/312/57 +f 213/530/57 169/538/57 179/310/57 +f 177/311/57 164/540/57 193/312/57 +f 213/530/57 179/310/57 193/312/57 +f 203/313/83 215/541/107 204/314/84 +f 206/316/86 216/335/86 207/317/86 +f 200/319/133 199/325/133 209/320/133 +f 157/259/134 214/332/134 193/321/134 +f 210/323/89 197/303/89 196/302/90 +f 210/323/135 200/319/135 195/301/135 +f 198/324/136 196/302/136 209/320/136 +f 211/326/93 147/248/137 146/247/94 +f 211/326/138 148/249/138 145/246/138 +f 148/249/139 202/329/139 212/328/139 +f 201/327/140 146/247/140 212/328/140 +f 213/330/98 156/258/141 158/260/99 +f 213/330/142 193/321/142 214/332/142 +f 205/322/143 204/331/143 158/260/143 +f 203/333/144 150/251/144 208/318/144 +f 149/250/145 206/316/145 208/318/145 +f 215/334/104 216/335/104 206/316/105 +f 215/334/146 203/333/146 207/317/146 +f 204/338/67 215/542/67 152/336/67 +f 215/542/67 149/543/67 153/544/67 +f 152/336/67 215/542/67 153/544/67 +f 149/543/67 211/545/67 153/544/67 +f 211/545/67 201/546/67 153/544/67 +f 201/546/67 210/547/67 153/544/67 +f 210/547/67 198/548/67 153/544/67 +f 198/548/67 311/549/67 153/544/67 +f 152/336/67 309/550/67 213/337/67 +f 217/339/107 281/441/107 218/340/107 +f 220/342/108 278/551/108 221/343/108 +f 223/345/58 276/413/58 224/346/58 +f 226/348/109 233/552/109 227/349/109 +f 229/351/64 273/408/64 230/352/64 +f 232/354/67 281/428/67 227/355/67 +f 234/357/67 280/426/67 235/358/67 +f 237/360/64 277/429/64 238/361/64 +f 240/363/110 266/431/110 241/364/110 +f 243/366/110 275/412/110 244/367/110 +f 235/369/109 280/432/109 246/370/109 +f 248/372/58 274/411/58 249/373/58 +f 251/375/111 282/436/111 252/376/111 +f 254/378/111 267/393/111 255/379/111 +f 257/381/108 279/438/108 258/382/108 +f 260/384/107 268/439/107 261/385/107 +f 262/386/107 261/385/107 263/387/107 +f 241/389/107 262/386/107 264/388/107 +f 266/391/107 260/384/107 262/386/107 +f 259/392/112 258/437/112 267/393/112 +f 219/394/112 259/392/112 254/378/112 +f 218/396/108 257/381/108 259/383/108 +f 256/398/113 255/407/113 269/399/113 +f 261/401/113 256/398/113 270/400/113 +f 268/395/111 254/378/111 256/380/111 +f 253/404/113 252/553/113 271/405/113 +f 255/407/113 253/404/113 272/406/113 +f 267/393/111 251/375/111 253/377/111 +f 273/408/58 248/372/58 250/374/58 +f 271/409/58 252/410/58 248/372/58 +f 252/410/58 282/434/58 274/411/58 +f 247/371/114 246/370/114 244/367/114 +f 224/346/114 247/371/114 275/412/114 +f 276/413/109 235/369/109 247/371/109 +f 243/366/115 245/368/115 277/414/115 +f 250/374/115 243/366/115 231/415/115 +f 249/373/110 275/412/110 243/366/110 +f 242/365/115 241/364/115 265/416/115 +f 245/368/115 242/365/115 238/417/115 +f 244/367/110 240/363/110 242/365/110 +f 239/362/64 238/361/64 265/418/64 +f 270/420/64 239/362/64 264/419/64 +f 269/422/64 237/360/64 239/362/64 +f 236/359/67 235/358/67 276/413/67 +f 220/423/67 236/359/67 223/345/67 +f 279/425/67 234/357/67 236/359/67 +f 232/354/67 233/356/67 280/426/67 +f 257/427/67 232/354/67 234/357/67 +f 257/427/67 218/554/67 281/428/67 +f 229/351/64 231/353/64 277/429/64 +f 272/430/64 229/351/64 237/360/64 +f 272/430/64 271/409/64 273/408/64 +f 226/348/114 228/350/114 266/431/114 +f 246/370/114 226/348/114 240/363/114 +f 280/432/109 233/552/109 226/348/109 +f 225/347/58 224/346/58 249/373/58 +f 221/433/58 225/347/58 274/411/58 +f 278/424/58 223/345/58 225/347/58 +f 222/435/112 221/555/112 282/436/112 +f 258/437/112 222/435/112 251/375/112 +f 279/438/108 220/342/108 222/344/108 +f 260/384/107 217/339/107 219/341/107 +f 266/391/107 228/440/107 217/339/107 +f 228/440/107 227/556/107 281/441/107 +f 191/442/64 295/464/64 283/443/64 +f 182/445/116 289/557/116 285/446/116 +f 160/448/117 290/457/117 286/449/117 +f 189/451/118 294/463/118 287/452/118 +f 288/454/119 293/462/119 289/455/119 +f 185/453/147 287/452/147 290/457/147 +f 284/458/58 283/558/58 291/459/58 +f 292/461/67 291/559/67 293/462/67 +f 192/447/121 285/446/121 294/463/121 +f 161/450/122 286/449/122 295/464/122 +f 293/467/57 291/560/57 283/561/57 +f 283/561/57 295/562/57 293/467/57 +f 295/562/57 286/563/57 287/564/57 +f 293/467/57 295/562/57 294/565/57 +f 286/563/57 290/566/57 287/564/57 +f 287/564/57 294/565/57 295/562/57 +f 294/565/57 285/465/57 293/467/57 +f 296/468/57 302/484/57 182/469/57 +f 185/471/57 304/486/57 297/472/57 +f 298/474/57 299/477/57 292/475/57 +f 299/477/57 296/468/57 288/470/57 +f 300/478/57 312/567/57 189/479/57 +f 161/481/57 303/485/57 301/482/57 +f 191/483/57 301/482/57 298/474/57 +f 302/484/57 300/478/57 192/480/57 +f 160/473/57 297/472/57 303/485/57 +f 189/479/57 312/567/57 304/486/57 +f 305/487/67 308/568/67 288/488/67 +f 306/489/64 190/295/123 191/296/123 +f 308/491/124 307/569/124 284/476/124 +f 153/570/107 311/571/107 307/492/107 +f 311/571/107 306/572/107 307/492/107 +f 305/573/107 310/574/107 308/493/107 +f 310/574/107 151/494/107 308/493/107 +f 153/570/107 307/492/107 151/494/107 diff --git a/src/main/resources/assets/hbm/models/machines/piston_inserter.obj b/src/main/resources/assets/hbm/models/machines/piston_inserter.obj new file mode 100644 index 000000000..ff7cc6c6d --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/piston_inserter.obj @@ -0,0 +1,507 @@ +# Blender v3.2.0 OBJ File: 'piston_inserter.blend' +# www.blender.org +mtllib piston_inserter.mtl +o Frame +v -0.125000 0.000000 0.125000 +v -0.125000 1.000000 0.125000 +v -0.125000 0.000000 -0.125000 +v -0.125000 1.000000 -0.125000 +v 0.125000 0.000000 0.125000 +v 0.125000 1.000000 0.125000 +v 0.125000 0.000000 -0.125000 +v 0.125000 1.000000 -0.125000 +v -0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v -0.375000 1.000000 0.375000 +v -0.375000 1.000000 -0.375000 +v 0.375000 1.000000 -0.375000 +v 0.375000 1.000000 0.375000 +v -0.375000 0.000000 -0.375000 +v -0.375000 0.000000 0.375000 +v 0.375000 0.000000 -0.375000 +v 0.375000 0.000000 0.375000 +v 0.312500 0.937500 0.375000 +v 0.375000 0.937500 0.375000 +v 0.125000 0.937500 0.125000 +v 0.375000 0.937500 0.312500 +v 0.004327 0.858644 -0.020544 +v 0.062500 0.937500 0.125000 +v 0.125000 0.937500 0.062500 +v -0.312500 0.937500 -0.375000 +v -0.375000 0.937500 -0.375000 +v -0.125000 0.937500 -0.125000 +v -0.375000 0.937500 -0.312500 +v -0.062500 0.937500 -0.125000 +v -0.125000 0.937500 -0.062500 +v 0.375000 0.937500 -0.312500 +v 0.375000 0.937500 -0.375000 +v 0.125000 0.937500 -0.125000 +v 0.312500 0.937500 -0.375000 +v 0.125000 0.937500 -0.062500 +v 0.062500 0.937500 -0.125000 +v -0.375000 0.937500 0.312500 +v -0.375000 0.937500 0.375000 +v -0.125000 0.937500 0.125000 +v -0.312500 0.937500 0.375000 +v -0.125000 0.937500 0.062500 +v -0.062500 0.937500 0.125000 +v 0.312500 0.062500 0.375000 +v 0.375000 0.062500 0.375000 +v 0.125000 0.062500 0.125000 +v 0.375000 0.062500 0.312500 +v 0.062500 0.062500 0.125000 +v 0.125000 0.062500 0.062500 +v -0.312500 0.062500 -0.375000 +v -0.375000 0.062500 -0.375000 +v -0.125000 0.062500 -0.125000 +v -0.375000 0.062500 -0.312500 +v -0.062500 0.062500 -0.125000 +v -0.125000 0.062500 -0.062500 +v 0.375000 0.062500 -0.312500 +v 0.375000 0.062500 -0.375000 +v 0.125000 0.062500 -0.125000 +v 0.312500 0.062500 -0.375000 +v 0.125000 0.062500 -0.062500 +v 0.062500 0.062500 -0.125000 +v -0.375000 0.062500 0.312500 +v -0.375000 0.062500 0.375000 +v -0.125000 0.062500 0.125000 +v -0.312500 0.062500 0.375000 +v -0.125000 0.062500 0.062500 +v -0.062500 0.062500 0.125000 +v 0.312500 0.062500 -0.375000 +v 0.375000 0.062500 -0.375000 +v 0.125000 0.062500 -0.125000 +v 0.375000 0.062500 -0.312500 +v 0.062500 0.062500 -0.125000 +v 0.125000 0.062500 -0.062500 +v -0.312500 0.062500 0.375000 +v -0.375000 0.062500 0.375000 +v -0.125000 0.062500 0.125000 +v -0.375000 0.062500 0.312500 +v -0.062500 0.062500 0.125000 +v -0.125000 0.062500 0.062500 +v 0.375000 0.062500 0.312500 +v 0.375000 0.062500 0.375000 +v 0.125000 0.062500 0.125000 +v 0.312500 0.062500 0.375000 +v 0.125000 0.062500 0.062500 +v 0.062500 0.062500 0.125000 +v -0.375000 0.062500 -0.312500 +v -0.375000 0.062500 -0.375000 +v -0.125000 0.062500 -0.125000 +v -0.312500 0.062500 -0.375000 +v -0.125000 0.062500 -0.062500 +v -0.062500 0.062500 -0.125000 +v 0.312500 0.937500 -0.375000 +v 0.375000 0.937500 -0.375000 +v 0.125000 0.937500 -0.125000 +v 0.375000 0.937500 -0.312500 +v 0.062500 0.937500 -0.125000 +v 0.125000 0.937500 -0.062500 +v -0.312500 0.937500 0.375000 +v -0.375000 0.937500 0.375000 +v -0.125000 0.937500 0.125000 +v -0.375000 0.937500 0.312500 +v -0.062500 0.937500 0.125000 +v -0.125000 0.937500 0.062500 +v 0.375000 0.937500 0.312500 +v 0.375000 0.937500 0.375000 +v 0.125000 0.937500 0.125000 +v 0.312500 0.937500 0.375000 +v 0.125000 0.937500 0.062500 +v 0.062500 0.937500 0.125000 +v -0.375000 0.937500 -0.312500 +v -0.375000 0.937500 -0.375000 +v -0.125000 0.937500 -0.125000 +v -0.312500 0.937500 -0.375000 +v -0.125000 0.937500 -0.062500 +v -0.062500 0.937500 -0.125000 +vt 0.571429 0.666667 +vt 0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.666667 +vt -0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.666667 +vt -0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.666667 +vt -0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.714286 0.416667 +vt 0.571429 0.333333 +vt 0.714286 0.333333 +vt 0.714286 0.750000 +vt 0.571429 0.833333 +vt 0.571429 0.750000 +vt 0.071429 0.708333 +vt 0.500000 0.708333 +vt 0.071429 0.958333 +vt 0.000000 0.666667 +vt 0.500000 0.958333 +vt 0.000000 1.000000 +vt 0.571429 1.000000 +vt 0.500000 0.041667 +vt 0.500000 0.291667 +vt 0.071429 0.291667 +vt 0.000000 0.000000 +vt 0.071429 0.041667 +vt 0.571429 0.000000 +vt 0.714286 0.416667 +vt 0.571429 0.750000 +vt 0.571429 0.416667 +vt 0.714286 0.416667 +vt 0.571429 0.750000 +vt 0.571429 0.416667 +vt 0.714286 0.416667 +vt 0.571429 0.750000 +vt 0.571429 0.416667 +vt 0.714286 0.416667 +vt 0.571429 0.750000 +vt 0.571429 0.416667 +vt 0.571429 -0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.333333 +vt 0.214286 0.125000 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.357143 0.208333 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.214286 0.208333 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.357143 0.125000 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt 0.214286 0.125000 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.357143 0.208333 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.214286 0.208333 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.357143 0.125000 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt 0.214286 0.125000 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.357143 0.208333 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.214286 0.208333 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.357143 0.125000 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt 0.214286 0.125000 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.357143 0.208333 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.214286 0.208333 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.357143 0.125000 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt -0.000000 0.666667 +vt 0.000000 0.666667 +vt 0.000000 0.666667 +vt 0.571429 0.416667 +vt 0.714286 0.833333 +vt 0.714286 0.750000 +vt 0.714286 0.750000 +vt 0.714286 0.750000 +vt 0.714286 0.750000 +vt 1.000000 -0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 -0.000000 +vt 0.250000 0.125000 +vt 0.214286 0.145833 +vt 0.071429 0.041667 +vt 0.321429 0.208333 +vt 0.357143 0.187500 +vt 0.500000 0.291667 +vt 0.214286 0.187500 +vt 0.250000 0.208333 +vt 0.071429 0.291667 +vt 0.357143 0.145833 +vt 0.321429 0.125000 +vt 0.500000 0.041667 +vt 0.250000 0.125000 +vt 0.214286 0.145833 +vt 0.071429 0.041667 +vt 0.321429 0.208333 +vt 0.357143 0.187500 +vt 0.500000 0.291667 +vt 0.214286 0.187500 +vt 0.250000 0.208333 +vt 0.071429 0.291667 +vt 0.357143 0.145833 +vt 0.321429 0.125000 +vt 0.500000 0.041667 +vt 0.250000 0.125000 +vt 0.214286 0.145833 +vt 0.071429 0.041667 +vt 0.321429 0.208333 +vt 0.357143 0.187500 +vt 0.500000 0.291667 +vt 0.214286 0.187500 +vt 0.250000 0.208333 +vt 0.071429 0.291667 +vt 0.357143 0.145833 +vt 0.321429 0.125000 +vt 0.500000 0.041667 +vt 0.250000 0.125000 +vt 0.214286 0.145833 +vt 0.071429 0.041667 +vt 0.321429 0.208333 +vt 0.357143 0.187500 +vt 0.500000 0.291667 +vt 0.214286 0.187500 +vt 0.250000 0.208333 +vt 0.071429 0.291667 +vt 0.357143 0.145833 +vt 0.321429 0.125000 +vt 0.500000 0.041667 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +usemtl None +s off +f 9/1/1 13/2/1 14/3/1 +f 10/4/2 15/5/2 13/6/2 +f 11/7/3 16/8/3 15/9/3 +f 12/10/4 14/11/4 16/12/4 +f 7/13/5 1/14/5 3/15/5 +f 4/16/6 6/17/6 8/18/6 +f 18/19/6 9/1/6 17/20/6 +f 19/21/6 10/22/6 18/19/6 +f 20/23/6 11/24/6 19/21/6 +f 17/20/6 12/25/6 20/23/6 +f 22/26/5 13/6/5 21/27/5 +f 21/27/5 15/5/5 23/28/5 +f 23/28/5 16/29/5 24/30/5 +f 24/30/5 14/31/5 22/26/5 +f 8/32/2 3/33/2 4/34/2 +f 6/35/3 7/36/3 8/37/3 +f 2/38/4 5/39/4 6/40/4 +f 4/41/1 1/42/1 2/43/1 +f 23/44/1 20/45/1 19/46/1 +f 24/47/2 17/48/2 20/49/2 +f 22/50/3 18/51/3 17/52/3 +f 21/53/4 19/54/4 18/55/4 +f 27/56/5 28/57/5 25/58/5 +f 34/59/5 35/60/5 32/61/5 +f 40/62/5 41/63/5 38/64/5 +f 46/65/5 47/66/5 44/67/5 +f 52/68/5 53/69/5 50/70/5 +f 58/71/5 59/72/5 56/73/5 +f 64/74/5 65/75/5 62/76/5 +f 70/77/5 71/78/5 68/79/5 +f 76/80/6 77/81/6 74/82/6 +f 82/83/6 83/84/6 80/85/6 +f 88/86/6 89/87/6 86/88/6 +f 94/89/6 95/90/6 92/91/6 +f 100/92/6 101/93/6 98/94/6 +f 106/95/6 107/96/6 104/97/6 +f 112/98/6 113/99/6 110/100/6 +f 118/101/6 119/102/6 116/103/6 +f 9/1/1 10/22/1 13/2/1 +f 10/4/2 11/104/2 15/5/2 +f 11/7/3 12/105/3 16/8/3 +f 12/10/4 9/106/4 14/11/4 +f 7/13/5 5/107/5 1/14/5 +f 4/16/6 2/108/6 6/17/6 +f 18/19/6 10/22/6 9/1/6 +f 19/21/6 11/24/6 10/22/6 +f 20/23/6 12/25/6 11/24/6 +f 17/20/6 9/1/6 12/25/6 +f 22/26/5 14/31/5 13/6/5 +f 21/27/5 13/6/5 15/5/5 +f 23/28/5 15/5/5 16/29/5 +f 24/30/5 16/29/5 14/31/5 +f 8/32/2 7/109/2 3/33/2 +f 6/35/3 5/110/3 7/36/3 +f 2/38/4 1/111/4 5/39/4 +f 4/41/1 3/112/1 1/42/1 +f 23/44/1 24/113/1 20/45/1 +f 24/47/2 22/114/2 17/48/2 +f 22/50/3 21/115/3 18/51/3 +f 21/53/4 23/116/4 19/54/4 +f 25/58/5 30/117/5 27/56/5 +f 27/56/5 31/118/5 28/57/5 +f 28/57/5 26/119/5 25/58/5 +f 32/61/5 36/120/5 34/59/5 +f 34/59/5 37/121/5 35/60/5 +f 35/60/5 33/122/5 32/61/5 +f 38/64/5 42/123/5 40/62/5 +f 40/62/5 43/124/5 41/63/5 +f 41/63/5 39/125/5 38/64/5 +f 44/67/5 48/126/5 46/65/5 +f 46/65/5 49/127/5 47/66/5 +f 47/66/5 45/128/5 44/67/5 +f 50/70/5 54/129/5 52/68/5 +f 52/68/5 55/130/5 53/69/5 +f 53/69/5 51/131/5 50/70/5 +f 56/73/5 60/132/5 58/71/5 +f 58/71/5 61/133/5 59/72/5 +f 59/72/5 57/134/5 56/73/5 +f 62/76/5 66/135/5 64/74/5 +f 64/74/5 67/136/5 65/75/5 +f 65/75/5 63/137/5 62/76/5 +f 68/79/5 72/138/5 70/77/5 +f 70/77/5 73/139/5 71/78/5 +f 71/78/5 69/140/5 68/79/5 +f 74/82/6 78/141/6 76/80/6 +f 76/80/6 79/142/6 77/81/6 +f 77/81/6 75/143/6 74/82/6 +f 80/85/6 84/144/6 82/83/6 +f 82/83/6 85/145/6 83/84/6 +f 83/84/6 81/146/6 80/85/6 +f 86/88/6 90/147/6 88/86/6 +f 88/86/6 91/148/6 89/87/6 +f 89/87/6 87/149/6 86/88/6 +f 92/91/6 96/150/6 94/89/6 +f 94/89/6 97/151/6 95/90/6 +f 95/90/6 93/152/6 92/91/6 +f 98/94/6 102/153/6 100/92/6 +f 100/92/6 103/154/6 101/93/6 +f 101/93/6 99/155/6 98/94/6 +f 104/97/6 108/156/6 106/95/6 +f 106/95/6 109/157/6 107/96/6 +f 107/96/6 105/158/6 104/97/6 +f 110/100/6 114/159/6 112/98/6 +f 112/98/6 115/160/6 113/99/6 +f 113/99/6 111/161/6 110/100/6 +f 116/103/6 120/162/6 118/101/6 +f 118/101/6 121/163/6 119/102/6 +f 119/102/6 117/164/6 116/103/6 +l 27 29 +o Piston +v -0.062500 1.000000 0.062500 +v -0.125000 1.062500 0.125000 +v -0.062500 1.000000 -0.062500 +v -0.125000 1.062500 -0.125000 +v 0.062500 1.000000 0.062500 +v 0.125000 1.062500 0.125000 +v 0.062500 1.000000 -0.062500 +v 0.125000 1.062500 -0.125000 +v -0.125000 1.000000 -0.125000 +v -0.125000 1.000000 0.125000 +v 0.125000 1.000000 -0.125000 +v 0.125000 1.000000 0.125000 +v -0.062500 0.062500 -0.062500 +v -0.062500 0.062500 0.062500 +v 0.062500 0.062500 -0.062500 +v 0.062500 0.062500 0.062500 +vt 0.857143 0.708333 +vt 0.714286 0.687500 +vt 0.857143 0.687500 +vt 0.857143 0.708333 +vt 0.714286 0.687500 +vt 0.857143 0.687500 +vt 0.857143 0.708333 +vt 0.714286 0.687500 +vt 0.857143 0.687500 +vt 0.857143 0.708333 +vt 0.714286 0.687500 +vt 0.857143 0.687500 +vt 0.821429 0.375000 +vt 0.750000 0.687500 +vt 0.750000 0.375000 +vt 0.857143 0.791667 +vt 0.714286 0.875000 +vt 0.714286 0.791667 +vt 0.821429 0.770833 +vt 0.714286 0.791667 +vt 0.750000 0.770833 +vt 0.714286 0.708333 +vt 0.750000 0.729167 +vt 0.857143 0.708333 +vt 0.821429 0.729167 +vt 0.857143 0.791667 +vt 0.821429 0.333333 +vt 0.750000 0.375000 +vt 0.750000 0.333333 +vt 0.821429 0.375000 +vt 0.750000 0.687500 +vt 0.750000 0.375000 +vt 0.821429 0.375000 +vt 0.750000 0.687500 +vt 0.750000 0.375000 +vt 0.821429 0.375000 +vt 0.750000 0.687500 +vt 0.750000 0.375000 +vt 0.714286 0.708333 +vt 0.714286 0.708333 +vt 0.714286 0.708333 +vt 0.714286 0.708333 +vt 0.821429 0.687500 +vt 0.857143 0.875000 +vt 0.821429 0.375000 +vt 0.821429 0.687500 +vt 0.821429 0.687500 +vt 0.821429 0.687500 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +usemtl None +s off +f 123/165/7 130/166/7 131/167/7 +f 125/168/8 132/169/8 130/170/8 +f 129/171/9 133/172/9 132/173/9 +f 127/174/10 131/175/10 133/176/10 +f 126/177/9 136/178/9 128/179/9 +f 125/180/11 127/181/11 129/182/11 +f 122/183/12 130/184/12 124/185/12 +f 124/185/12 132/186/12 128/187/12 +f 128/187/12 133/188/12 126/189/12 +f 126/189/12 131/190/12 122/183/12 +f 136/191/12 135/192/12 134/193/12 +f 124/194/7 135/195/7 122/196/7 +f 122/197/10 137/198/10 126/199/10 +f 128/200/8 134/201/8 124/202/8 +f 123/165/7 125/203/7 130/166/7 +f 125/168/8 129/204/8 132/169/8 +f 129/171/9 127/205/9 133/172/9 +f 127/174/10 123/206/10 131/175/10 +f 126/177/9 137/207/9 136/178/9 +f 125/180/11 123/208/11 127/181/11 +f 122/183/12 131/190/12 130/184/12 +f 124/185/12 130/184/12 132/186/12 +f 128/187/12 132/186/12 133/188/12 +f 126/189/12 133/188/12 131/190/12 +f 136/191/12 137/209/12 135/192/12 +f 124/194/7 134/210/7 135/195/7 +f 122/197/10 135/211/10 137/198/10 +f 128/200/8 136/212/8 134/201/8 diff --git a/src/main/resources/assets/hbm/models/machines/pump.obj b/src/main/resources/assets/hbm/models/machines/pump.obj new file mode 100644 index 000000000..4f859d6aa --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/pump.obj @@ -0,0 +1,1107 @@ +# Blender v2.79 (sub 0) OBJ File: 'pump.blend' +# www.blender.org +o Piston +v -0.500000 4.500000 -0.500000 +v -0.500000 4.500000 0.500000 +v 0.500000 4.500000 0.500000 +v 0.500000 4.500000 -0.500000 +v -0.500000 5.000000 -0.500000 +v -0.500000 5.000000 0.500000 +v 0.500000 5.000000 0.500000 +v 0.500000 5.000000 -0.500000 +v -0.125000 4.625000 1.000000 +v -0.125000 4.875000 1.000000 +v -0.125000 4.625000 -1.000000 +v -0.125000 4.875000 -1.000000 +v 0.125000 4.625000 1.000000 +v 0.125000 4.875000 1.000000 +v 0.125000 4.625000 -1.000000 +v 0.125000 4.875000 -1.000000 +v -0.250000 3.500000 0.250000 +v 0.250000 3.500000 0.250000 +v -0.250000 3.500000 -0.250000 +v 0.250000 3.500000 -0.250000 +v -0.250000 4.500000 0.250000 +v 0.250000 4.500000 0.250000 +v -0.250000 4.500000 -0.250000 +v 0.250000 4.500000 -0.250000 +vt 0.727273 0.250000 +vt 0.636364 0.375000 +vt 0.636364 0.250000 +vt 0.636364 0.437500 +vt 0.727273 0.562500 +vt 0.636364 0.562500 +vt 0.727273 0.375000 +vt 0.909091 0.375000 +vt 0.818182 0.437500 +vt 0.818182 0.375000 +vt 0.727273 0.437500 +vt 0.545455 0.437500 +vt 0.545455 0.375000 +vt 0.477273 0.656250 +vt 0.659091 0.687500 +vt 0.477273 0.687500 +vt 0.659091 0.656250 +vt 0.681818 0.625000 +vt 0.681818 0.656250 +vt 0.659091 0.625000 +vt 0.477273 0.593750 +vt 0.659091 0.593750 +vt 0.477273 0.625000 +vt 0.454545 0.656250 +vt 0.454545 0.625000 +vt 0.477273 0.562500 +vt 0.659091 0.562500 +vt 0.909091 0.250000 +vt 0.863636 0.375000 +vt 0.863636 0.250000 +vt 1.000000 0.250000 +vt 0.954545 0.375000 +vt 0.954545 0.250000 +vt 0.909091 0.375000 +vt 0.818182 0.375000 +vt 0.818182 0.250000 +vt 0.909091 0.437500 +vt 1.000000 0.375000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 1/1/1 3/2/1 2/3/1 +f 7/4/2 5/5/2 6/6/2 +f 4/7/3 7/4/3 3/2/3 +f 2/8/4 5/9/4 1/10/4 +f 1/10/5 8/11/5 4/7/5 +f 3/2/6 6/12/6 2/13/6 +f 10/14/4 11/15/4 9/16/4 +f 12/17/5 15/18/5 11/19/5 +f 16/20/3 13/21/3 15/22/3 +f 14/23/6 9/24/6 13/25/6 +f 15/22/1 9/26/1 11/27/1 +f 12/17/2 14/23/2 16/20/2 +f 20/28/3 22/29/3 18/30/3 +f 17/31/4 23/32/4 19/33/4 +f 19/33/5 24/34/5 20/28/5 +f 18/30/6 21/35/6 17/36/6 +f 1/1/1 4/7/1 3/2/1 +f 7/4/2 8/11/2 5/5/2 +f 4/7/3 8/11/3 7/4/3 +f 2/8/4 6/37/4 5/9/4 +f 1/10/5 5/9/5 8/11/5 +f 3/2/6 7/4/6 6/12/6 +f 10/14/4 12/17/4 11/15/4 +f 12/17/5 16/20/5 15/18/5 +f 16/20/3 14/23/3 13/21/3 +f 14/23/6 10/14/6 9/24/6 +f 15/22/1 13/21/1 9/26/1 +f 12/17/2 10/14/2 14/23/2 +f 20/28/3 24/34/3 22/29/3 +f 17/31/4 21/38/4 23/32/4 +f 19/33/5 23/32/5 24/34/5 +f 18/30/6 22/29/6 21/35/6 +o Arms +v -0.062500 2.687500 0.750000 +v 0.062500 2.687500 0.750000 +v -0.062500 4.812500 0.750000 +v 0.062500 4.812500 0.750000 +v -0.062500 4.812500 0.875000 +v -0.062500 2.687500 0.875000 +v 0.062500 2.687500 0.875000 +v 0.062500 4.812500 0.875000 +v -0.062500 2.687500 -0.875000 +v 0.062500 2.687500 -0.875000 +v -0.062500 4.812500 -0.875000 +v 0.062500 4.812500 -0.875000 +v -0.062500 4.812500 -0.750000 +v -0.062500 2.687500 -0.750000 +v 0.062500 2.687500 -0.750000 +v 0.062500 4.812500 -0.750000 +vt 0.579545 0.953125 +vt 0.568182 0.703125 +vt 0.579545 0.703125 +vt 0.556818 0.703125 +vt 0.545455 0.953125 +vt 0.545455 0.703125 +vt 0.568182 0.953125 +vt 0.590909 0.953125 +vt 0.590909 0.968750 +vt 0.579545 0.968750 +vt 0.579545 0.687500 +vt 0.590909 0.703125 +vt 0.579545 0.953125 +vt 0.568182 0.703125 +vt 0.579545 0.703125 +vt 0.556818 0.703125 +vt 0.545455 0.953125 +vt 0.545455 0.703125 +vt 0.568182 0.953125 +vt 0.590909 0.953125 +vt 0.590909 0.968750 +vt 0.579545 0.968750 +vt 0.579545 0.687500 +vt 0.590909 0.703125 +vt 0.556818 0.953125 +vt 0.590909 0.687500 +vt 0.556818 0.953125 +vt 0.590909 0.687500 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 27/39/7 26/40/7 25/41/7 +f 31/42/8 29/43/8 30/44/8 +f 28/45/9 31/42/9 26/40/9 +f 25/41/10 29/46/10 27/39/10 +f 27/39/11 32/47/11 28/48/11 +f 26/49/12 30/50/12 25/41/12 +f 35/51/7 34/52/7 33/53/7 +f 39/54/8 37/55/8 38/56/8 +f 36/57/9 39/54/9 34/52/9 +f 33/53/10 37/58/10 35/51/10 +f 35/51/11 40/59/11 36/60/11 +f 34/61/12 38/62/12 33/53/12 +f 27/39/7 28/45/7 26/40/7 +f 31/42/8 32/63/8 29/43/8 +f 28/45/9 32/63/9 31/42/9 +f 25/41/10 30/50/10 29/46/10 +f 27/39/11 29/46/11 32/47/11 +f 26/49/12 31/64/12 30/50/12 +f 35/51/7 36/57/7 34/52/7 +f 39/54/8 40/65/8 37/55/8 +f 36/57/9 40/65/9 39/54/9 +f 33/53/10 38/62/10 37/58/10 +f 35/51/11 37/58/11 40/59/11 +f 34/61/12 39/66/12 38/62/12 +o Rotor +v -0.000000 2.875000 0.500000 +v -0.441942 2.691942 0.500000 +v -0.625000 2.250000 0.500000 +v -0.441942 1.808058 0.500000 +v 0.000000 1.625000 0.500000 +v 0.441942 1.808058 0.500000 +v 0.625000 2.250000 0.500000 +v 0.441942 2.691942 0.500000 +v -0.441942 2.691942 0.750000 +v -0.000000 2.875000 0.750000 +v -0.625000 2.250000 0.750000 +v -0.441942 1.808058 0.750000 +v 0.000000 1.625000 0.750000 +v 0.441942 1.808058 0.750000 +v 0.625000 2.250000 0.750000 +v 0.441942 2.691942 0.750000 +v -0.000000 2.875000 -0.750000 +v -0.441942 2.691942 -0.750000 +v -0.625000 2.250000 -0.750000 +v -0.441942 1.808058 -0.750000 +v 0.000000 1.625000 -0.750000 +v 0.441942 1.808058 -0.750000 +v 0.625000 2.250000 -0.750000 +v 0.441942 2.691942 -0.750000 +v -0.441942 2.691942 -0.500000 +v -0.000000 2.875000 -0.500000 +v -0.625000 2.250000 -0.500000 +v -0.441942 1.808058 -0.500000 +v 0.000000 1.625000 -0.500000 +v 0.441942 1.808058 -0.500000 +v 0.625000 2.250000 -0.500000 +v 0.441942 2.691942 -0.500000 +vt 0.920455 0.439870 +vt 0.959412 0.462058 +vt 0.975549 0.515625 +vt 0.784091 0.439870 +vt 0.839185 0.515625 +vt 0.784091 0.591380 +vt 0.863636 0.687500 +vt 0.840909 0.625000 +vt 0.863636 0.625000 +vt 0.863636 0.562500 +vt 0.840909 0.500000 +vt 0.863636 0.500000 +vt 0.863636 0.937500 +vt 0.840909 0.875000 +vt 0.863636 0.875000 +vt 0.863636 0.812500 +vt 0.840909 0.750000 +vt 0.863636 0.750000 +vt 0.840909 0.562500 +vt 0.840909 0.437500 +vt 0.863636 0.437500 +vt 0.840909 0.812500 +vt 0.840909 0.687500 +vt 0.920455 0.439870 +vt 0.959412 0.462058 +vt 0.975549 0.515625 +vt 0.784091 0.439870 +vt 0.839185 0.515625 +vt 0.784091 0.591380 +vt 0.863636 0.687500 +vt 0.840909 0.625000 +vt 0.863636 0.625000 +vt 0.863636 0.562500 +vt 0.840909 0.500000 +vt 0.863636 0.500000 +vt 0.863636 0.937500 +vt 0.840909 0.875000 +vt 0.863636 0.875000 +vt 0.863636 0.812500 +vt 0.840909 0.750000 +vt 0.863636 0.750000 +vt 0.840909 0.562500 +vt 0.840909 0.437500 +vt 0.863636 0.437500 +vt 0.840909 0.812500 +vt 0.840909 0.687500 +vt 0.959412 0.569192 +vt 0.865360 0.515625 +vt 0.920455 0.591380 +vt 0.881497 0.569192 +vt 0.881497 0.462058 +vt 0.745133 0.569192 +vt 0.728997 0.515625 +vt 0.745133 0.462058 +vt 0.823048 0.462058 +vt 0.823048 0.569192 +vt 0.840909 0.937500 +vt 0.959412 0.569192 +vt 0.865360 0.515625 +vt 0.920455 0.591380 +vt 0.881497 0.569192 +vt 0.881497 0.462058 +vt 0.745133 0.569192 +vt 0.728997 0.515625 +vt 0.745133 0.462058 +vt 0.823048 0.462058 +vt 0.823048 0.569192 +vt 0.840909 0.937500 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.3827 0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -0.3827 0.9239 0.0000 +s off +f 45/67/13 44/68/13 43/69/13 +f 53/70/14 55/71/14 50/72/14 +f 41/73/15 56/74/15 48/75/15 +f 47/76/16 54/77/16 46/78/16 +f 45/79/17 52/80/17 44/81/17 +f 43/82/18 49/83/18 42/84/18 +f 48/75/19 55/85/19 47/76/19 +f 46/78/20 53/86/20 45/87/20 +f 44/81/21 51/88/21 43/82/21 +f 42/84/22 50/89/22 41/73/22 +f 61/90/13 60/91/13 59/92/13 +f 69/93/14 71/94/14 66/95/14 +f 57/96/15 72/97/15 64/98/15 +f 63/99/16 70/100/16 62/101/16 +f 61/102/17 68/103/17 60/104/17 +f 59/105/18 65/106/18 58/107/18 +f 64/98/19 71/108/19 63/99/19 +f 62/101/20 69/109/20 61/110/20 +f 60/104/21 67/111/21 59/105/21 +f 58/107/22 66/112/22 57/96/22 +f 43/69/13 42/113/13 47/114/13 +f 42/113/13 41/115/13 47/114/13 +f 41/115/13 48/116/13 47/114/13 +f 47/114/13 46/117/13 43/69/13 +f 46/117/13 45/67/13 43/69/13 +f 50/72/14 49/118/14 51/119/14 +f 51/119/14 52/120/14 53/70/14 +f 53/70/14 54/121/14 55/71/14 +f 55/71/14 56/122/14 50/72/14 +f 50/72/14 51/119/14 53/70/14 +f 41/73/15 50/89/15 56/74/15 +f 47/76/16 55/85/16 54/77/16 +f 45/79/17 53/123/17 52/80/17 +f 43/82/18 51/88/18 49/83/18 +f 48/75/19 56/74/19 55/85/19 +f 46/78/20 54/77/20 53/86/20 +f 44/81/21 52/80/21 51/88/21 +f 42/84/22 49/83/22 50/89/22 +f 59/92/13 58/124/13 63/125/13 +f 58/124/13 57/126/13 63/125/13 +f 57/126/13 64/127/13 63/125/13 +f 63/125/13 62/128/13 59/92/13 +f 62/128/13 61/90/13 59/92/13 +f 66/95/14 65/129/14 67/130/14 +f 67/130/14 68/131/14 69/93/14 +f 69/93/14 70/132/14 71/94/14 +f 71/94/14 72/133/14 66/95/14 +f 66/95/14 67/130/14 69/93/14 +f 57/96/15 66/112/15 72/97/15 +f 63/99/16 71/108/16 70/100/16 +f 61/102/17 69/134/17 68/103/17 +f 59/105/18 67/111/18 65/106/18 +f 64/98/19 72/97/19 71/108/19 +f 62/101/20 70/100/20 69/109/20 +f 60/104/21 68/103/21 67/111/21 +f 58/107/22 65/106/22 66/112/22 +o Base +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 1.000000 1.500000 +v 1.500000 1.000000 1.500000 +v -1.500000 1.000000 -1.500000 +v 1.500000 1.000000 -1.500000 +v -1.000000 1.000000 1.000000 +v 1.000000 1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v 1.000000 1.000000 -1.000000 +v -1.000000 1.500000 -1.000000 +v -1.000000 1.500000 1.000000 +v 1.000000 1.500000 1.000000 +v 1.000000 1.500000 -1.000000 +v -0.500000 1.500000 0.500000 +v 0.500000 1.500000 0.500000 +v -0.500000 1.500000 -0.500000 +v 0.500000 1.500000 -0.500000 +v -0.500000 3.500000 -0.500000 +v -0.500000 3.500000 0.500000 +v 0.500000 3.500000 0.500000 +v 0.500000 3.500000 -0.500000 +v 0.625000 3.125000 -0.375000 +v 0.775888 3.150888 -0.338388 +v 0.801777 3.176777 -0.250000 +v 0.775888 3.150888 -0.161612 +v 0.713388 3.088388 -0.125000 +v 0.650888 3.025888 -0.161612 +v 0.650888 3.025888 -0.338388 +v 0.713388 3.088388 -0.375000 +v 0.838388 3.000000 -0.338388 +v 0.875000 3.000000 -0.250000 +v 0.838388 3.000000 -0.161612 +v 0.750000 3.000000 -0.125000 +v 0.661612 3.000000 -0.161612 +v 0.625000 3.000000 -0.250000 +v 0.661612 3.000000 -0.338388 +v 0.750000 3.000000 -0.375000 +v 0.750000 1.500000 0.125000 +v 0.661612 1.500000 0.161612 +v 0.625000 1.500000 0.250000 +v 0.661612 1.500000 0.338388 +v 0.750000 1.500000 0.375000 +v 0.838388 1.500000 0.338388 +v 0.875000 1.500000 0.250000 +v 0.838388 1.500000 0.161612 +v 0.750000 3.000000 0.125000 +v 0.661612 3.000000 0.161612 +v 0.625000 3.000000 0.250000 +v 0.661612 3.000000 0.338388 +v 0.750000 3.000000 0.375000 +v 0.838388 3.000000 0.338388 +v 0.875000 3.000000 0.250000 +v 0.838388 3.000000 0.161612 +v 0.713388 3.088388 0.125000 +v 0.650888 3.025888 0.161612 +v 0.650888 3.025888 0.338388 +v 0.713388 3.088388 0.375000 +v 0.775888 3.150888 0.338388 +v 0.801777 3.176777 0.250000 +v 0.775888 3.150888 0.161612 +v 0.625000 3.125000 0.125000 +v 0.625000 3.036612 0.161612 +v 0.625000 3.036612 0.338388 +v 0.625000 3.125000 0.375000 +v 0.625000 3.213388 0.338388 +v 0.625000 3.250000 0.250000 +v 0.625000 3.213388 0.161612 +v 0.500000 3.000000 0.250000 +v 0.500000 3.125000 0.125000 +v 0.500000 3.036612 0.161612 +v 0.500000 3.036612 0.338388 +v 0.500000 3.125000 0.375000 +v 0.500000 3.213388 0.338388 +v 0.500000 3.250000 0.250000 +v 0.500000 3.213388 0.161612 +v 0.838388 1.500000 -0.338388 +v 0.875000 1.500000 -0.250000 +v 0.838388 1.500000 -0.161612 +v 0.750000 1.500000 -0.125000 +v 0.661612 1.500000 -0.161612 +v 0.625000 1.500000 -0.250000 +v 0.661612 1.500000 -0.338388 +v 0.750000 1.500000 -0.375000 +v 0.625000 3.036612 -0.338388 +v 0.625000 3.036612 -0.161612 +v 0.625000 3.125000 -0.125000 +v 0.625000 3.213388 -0.161612 +v 0.625000 3.250000 -0.250000 +v 0.625000 3.213388 -0.338388 +v 0.500000 3.000000 -0.250000 +v 0.500000 3.125000 -0.375000 +v 0.500000 3.036612 -0.338388 +v 0.500000 3.036612 -0.161612 +v 0.500000 3.125000 -0.125000 +v 0.500000 3.213388 -0.161612 +v 0.500000 3.250000 -0.250000 +v 0.500000 3.213388 -0.338388 +v -0.625000 3.125000 0.375000 +v -0.775888 3.150888 0.338388 +v -0.801777 3.176777 0.250000 +v -0.775888 3.150888 0.161612 +v -0.713388 3.088388 0.125000 +v -0.650888 3.025888 0.161612 +v -0.650888 3.025888 0.338388 +v -0.713388 3.088388 0.375000 +v -0.838388 3.000000 0.338388 +v -0.875000 3.000000 0.250000 +v -0.838388 3.000000 0.161612 +v -0.750000 3.000000 0.125000 +v -0.661612 3.000000 0.161612 +v -0.625000 3.000000 0.250000 +v -0.661612 3.000000 0.338388 +v -0.750000 3.000000 0.375000 +v -0.750000 1.500000 -0.125000 +v -0.661612 1.500000 -0.161612 +v -0.625000 1.500000 -0.250000 +v -0.661612 1.500000 -0.338388 +v -0.750000 1.500000 -0.375000 +v -0.838388 1.500000 -0.338388 +v -0.875000 1.500000 -0.250000 +v -0.838388 1.500000 -0.161612 +v -0.750000 3.000000 -0.125000 +v -0.661612 3.000000 -0.161612 +v -0.625000 3.000000 -0.250000 +v -0.661612 3.000000 -0.338388 +v -0.750000 3.000000 -0.375000 +v -0.838388 3.000000 -0.338388 +v -0.875000 3.000000 -0.250000 +v -0.838388 3.000000 -0.161612 +v -0.713388 3.088388 -0.125000 +v -0.650888 3.025888 -0.161612 +v -0.650888 3.025888 -0.338388 +v -0.713388 3.088388 -0.375000 +v -0.775888 3.150888 -0.338388 +v -0.801777 3.176777 -0.250000 +v -0.775888 3.150888 -0.161612 +v -0.625000 3.125000 -0.125000 +v -0.625000 3.036612 -0.161612 +v -0.625000 3.036612 -0.338388 +v -0.625000 3.125000 -0.375000 +v -0.625000 3.213388 -0.338388 +v -0.625000 3.250000 -0.250000 +v -0.625000 3.213388 -0.161612 +v -0.500000 3.000000 -0.250000 +v -0.500000 3.125000 -0.125000 +v -0.500000 3.036612 -0.161612 +v -0.500000 3.036612 -0.338388 +v -0.500000 3.125000 -0.375000 +v -0.500000 3.213388 -0.338388 +v -0.500000 3.250000 -0.250000 +v -0.500000 3.213388 -0.161612 +v -0.838388 1.500000 0.338388 +v -0.875000 1.500000 0.250000 +v -0.838388 1.500000 0.161612 +v -0.750000 1.500000 0.125000 +v -0.661612 1.500000 0.161612 +v -0.625000 1.500000 0.250000 +v -0.661612 1.500000 0.338388 +v -0.750000 1.500000 0.375000 +v -0.625000 3.036612 0.338388 +v -0.625000 3.036612 0.161612 +v -0.625000 3.125000 0.125000 +v -0.625000 3.213388 0.161612 +v -0.625000 3.250000 0.250000 +v -0.625000 3.213388 0.338388 +v -0.500000 3.000000 0.250000 +v -0.500000 3.125000 0.375000 +v -0.500000 3.036612 0.338388 +v -0.500000 3.036612 0.161612 +v -0.500000 3.125000 0.125000 +v -0.500000 3.213388 0.161612 +v -0.500000 3.250000 0.250000 +v -0.500000 3.213388 0.338388 +vt 0.363636 0.007812 +vt 0.090909 0.382812 +vt 0.090909 0.007812 +vt 0.090909 0.500000 +vt 0.363636 0.875000 +vt 0.090909 0.875000 +vt 0.454545 0.875000 +vt 0.363636 0.500000 +vt 0.454545 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.875000 +vt 0.363636 0.382812 +vt 0.090909 1.000000 +vt 0.363636 1.000000 +vt 0.409091 0.062500 +vt 0.590909 0.312500 +vt 0.409091 0.312500 +vt 0.363636 0.062500 +vt 0.363636 0.312500 +vt 0.590909 0.000000 +vt 0.409091 0.000000 +vt 0.409091 0.375000 +vt 0.590909 0.375000 +vt 0.636364 0.312500 +vt 0.590909 0.062500 +vt 0.636364 0.062500 +vt 0.727273 0.250000 +vt 0.818182 0.375000 +vt 0.727273 0.375000 +vt 1.000000 -0.000000 +vt 0.909091 0.250000 +vt 0.909091 -0.000000 +vt 0.818182 0.250000 +vt 0.818182 -0.000000 +vt 0.727273 -0.000000 +vt 0.636364 0.250000 +vt 0.636364 -0.000000 +vt 1.000000 0.250000 +vt 0.465909 0.898438 +vt 0.477273 0.914062 +vt 0.465909 0.906250 +vt 0.488636 0.898438 +vt 0.500000 0.921875 +vt 0.488636 0.921875 +vt 0.477273 0.882812 +vt 0.465909 0.890625 +vt 0.488636 0.875000 +vt 0.500000 0.898438 +vt 0.522727 0.882812 +vt 0.511364 0.898438 +vt 0.511364 0.875000 +vt 0.534091 0.890625 +vt 0.522727 0.898438 +vt 0.477273 0.898438 +vt 0.500000 0.875000 +vt 0.522727 0.687500 +vt 0.511364 0.687500 +vt 0.534091 0.687500 +vt 0.522727 0.875000 +vt 0.500000 0.687500 +vt 0.488636 0.875000 +vt 0.488636 0.687500 +vt 0.477273 0.687500 +vt 0.465909 0.875000 +vt 0.465909 0.687500 +vt 0.545455 0.687500 +vt 0.534091 0.875000 +vt 0.534091 0.687500 +vt 0.511364 0.687500 +vt 0.500000 0.875000 +vt 0.477273 0.875000 +vt 0.454545 0.875000 +vt 0.454545 0.687500 +vt 0.522727 0.875000 +vt 0.522727 0.687500 +vt 0.511364 0.875000 +vt 0.500000 0.898438 +vt 0.477273 0.882812 +vt 0.488636 0.898438 +vt 0.477273 0.898438 +vt 0.522727 0.882812 +vt 0.534091 0.898438 +vt 0.522727 0.898438 +vt 0.511364 0.898438 +vt 0.465909 0.890625 +vt 0.465909 0.898438 +vt 0.500000 0.921875 +vt 0.488636 0.921875 +vt 0.477273 0.914062 +vt 0.465909 0.906250 +vt 0.522727 0.914062 +vt 0.511364 0.921875 +vt 0.534091 0.890625 +vt 0.545455 0.898438 +vt 0.534091 0.906250 +vt 0.454545 0.898438 +vt 0.477273 0.921875 +vt 0.465909 0.937500 +vt 0.465909 0.921875 +vt 0.500000 0.937500 +vt 0.477273 0.937500 +vt 0.534091 0.921875 +vt 0.522727 0.937500 +vt 0.522727 0.921875 +vt 0.454545 0.937500 +vt 0.454545 0.921875 +vt 0.511364 0.937500 +vt 0.545455 0.937500 +vt 0.534091 0.937500 +vt 0.488636 0.937500 +vt 0.465909 0.687500 +vt 0.454545 0.875000 +vt 0.454545 0.687500 +vt 0.488636 0.687500 +vt 0.477273 0.875000 +vt 0.477273 0.687500 +vt 0.500000 0.687500 +vt 0.545455 0.687500 +vt 0.534091 0.875000 +vt 0.465909 0.875000 +vt 0.534091 0.898438 +vt 0.522727 0.914062 +vt 0.511364 0.921875 +vt 0.545455 0.898438 +vt 0.534091 0.906250 +vt 0.454545 0.898438 +vt 0.477273 0.921875 +vt 0.465909 0.937500 +vt 0.465909 0.921875 +vt 0.500000 0.937500 +vt 0.477273 0.937500 +vt 0.534091 0.921875 +vt 0.522727 0.937500 +vt 0.522727 0.921875 +vt 0.454545 0.937500 +vt 0.454545 0.921875 +vt 0.511364 0.937500 +vt 0.545455 0.937500 +vt 0.534091 0.937500 +vt 0.488636 0.937500 +vt 0.465909 0.898438 +vt 0.477273 0.914062 +vt 0.465909 0.906250 +vt 0.488636 0.898438 +vt 0.500000 0.921875 +vt 0.488636 0.921875 +vt 0.477273 0.882812 +vt 0.465909 0.890625 +vt 0.500000 0.875000 +vt 0.488636 0.875000 +vt 0.522727 0.882812 +vt 0.511364 0.898438 +vt 0.511364 0.875000 +vt 0.534091 0.890625 +vt 0.522727 0.898438 +vt 0.477273 0.898438 +vt 0.500000 0.898438 +vt 0.522727 0.687500 +vt 0.511364 0.687500 +vt 0.534091 0.687500 +vt 0.522727 0.875000 +vt 0.500000 0.687500 +vt 0.488636 0.875000 +vt 0.488636 0.687500 +vt 0.477273 0.687500 +vt 0.465909 0.875000 +vt 0.465909 0.687500 +vt 0.545455 0.687500 +vt 0.534091 0.875000 +vt 0.534091 0.687500 +vt 0.511364 0.687500 +vt 0.500000 0.875000 +vt 0.477273 0.875000 +vt 0.454545 0.875000 +vt 0.454545 0.687500 +vt 0.522727 0.875000 +vt 0.522727 0.687500 +vt 0.511364 0.875000 +vt 0.500000 0.898438 +vt 0.477273 0.882812 +vt 0.488636 0.898438 +vt 0.477273 0.898438 +vt 0.522727 0.882812 +vt 0.534091 0.898438 +vt 0.522727 0.898438 +vt 0.511364 0.898438 +vt 0.465909 0.890625 +vt 0.465909 0.898438 +vt 0.500000 0.921875 +vt 0.488636 0.921875 +vt 0.465909 0.906250 +vt 0.477273 0.914062 +vt 0.522727 0.914062 +vt 0.511364 0.921875 +vt 0.534091 0.890625 +vt 0.545455 0.898438 +vt 0.534091 0.906250 +vt 0.454545 0.898438 +vt 0.465909 0.921875 +vt 0.477273 0.937500 +vt 0.465909 0.937500 +vt 0.500000 0.937500 +vt 0.477273 0.921875 +vt 0.534091 0.921875 +vt 0.522727 0.937500 +vt 0.522727 0.921875 +vt 0.454545 0.937500 +vt 0.454545 0.921875 +vt 0.511364 0.937500 +vt 0.545455 0.937500 +vt 0.534091 0.937500 +vt 0.488636 0.937500 +vt 0.465909 0.687500 +vt 0.454545 0.875000 +vt 0.454545 0.687500 +vt 0.488636 0.687500 +vt 0.477273 0.875000 +vt 0.477273 0.687500 +vt 0.500000 0.687500 +vt 0.545455 0.687500 +vt 0.534091 0.875000 +vt 0.465909 0.875000 +vt 0.534091 0.906250 +vt 0.522727 0.914062 +vt 0.511364 0.921875 +vt 0.545455 0.898438 +vt 0.534091 0.898438 +vt 0.454545 0.898438 +vt 0.477273 0.921875 +vt 0.465909 0.937500 +vt 0.465909 0.921875 +vt 0.500000 0.937500 +vt 0.477273 0.937500 +vt 0.534091 0.921875 +vt 0.522727 0.937500 +vt 0.522727 0.921875 +vt 0.454545 0.937500 +vt 0.454545 0.921875 +vt 0.511364 0.937500 +vt 0.545455 0.937500 +vt 0.534091 0.937500 +vt 0.488636 0.937500 +vt 0.545455 0.875000 +vt 0.545455 0.921875 +vt 0.545455 0.875000 +vt 0.545455 0.921875 +vt 0.545455 0.875000 +vt 0.545455 0.921875 +vt 0.545455 0.875000 +vt 0.545455 0.921875 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.4617 -0.4617 0.7573 +vn 0.0196 0.0473 0.9987 +vn -0.1363 -0.6737 0.7263 +vn 0.5293 0.5293 0.6630 +vn 0.1866 0.9824 0.0000 +vn 0.1447 0.7194 0.6794 +vn 0.0473 0.0196 0.9987 +vn -0.6737 -0.1363 0.7263 +vn 0.7194 0.1447 0.6794 +vn 0.7071 0.7071 0.0000 +vn 0.0473 0.0196 -0.9987 +vn 0.5293 0.5293 -0.6630 +vn 0.7194 0.1447 -0.6794 +vn -0.6737 -0.1363 -0.7263 +vn 0.0670 0.0670 -0.9955 +vn 0.0670 0.0670 0.9955 +vn 0.9824 0.1866 0.0000 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.4617 -0.4617 -0.7573 +vn 0.0196 0.0473 -0.9987 +vn 0.1447 0.7194 -0.6794 +vn -0.1363 -0.6737 -0.7263 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.4617 -0.4617 -0.7573 +vn -0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 -0.7263 +vn -0.5293 0.5293 -0.6630 +vn -0.1866 0.9824 0.0000 +vn -0.1447 0.7194 -0.6794 +vn -0.0473 0.0196 -0.9987 +vn 0.6737 -0.1363 -0.7263 +vn -0.9824 0.1866 0.0000 +vn -0.7194 0.1447 -0.6794 +vn -0.0473 0.0196 0.9987 +vn -0.5293 0.5293 0.6630 +vn -0.7194 0.1447 0.6794 +vn 0.6737 -0.1363 0.7263 +vn -0.0670 0.0670 0.9955 +vn -0.0670 0.0670 -0.9955 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.4617 -0.4617 0.7573 +vn -0.0196 0.0473 0.9987 +vn -0.1447 0.7194 0.6794 +vn 0.1363 -0.6737 0.7263 +s off +f 75/135/23 74/136/23 73/137/23 +f 78/138/24 79/139/24 77/140/24 +f 75/141/25 80/142/25 76/143/25 +f 74/144/26 77/140/26 73/145/26 +f 76/146/27 78/138/27 74/136/27 +f 73/147/28 79/139/28 75/148/28 +f 87/149/24 85/150/24 86/151/24 +f 82/152/26 86/151/26 81/153/26 +f 84/154/27 87/149/27 82/155/27 +f 81/156/28 85/150/28 83/157/28 +f 83/158/25 88/159/25 84/160/25 +f 95/161/24 93/162/24 94/163/24 +f 89/164/28 93/165/28 91/166/28 +f 91/166/25 96/167/25 92/168/25 +f 90/169/26 94/170/26 89/171/26 +f 92/168/27 95/161/27 90/169/27 +f 75/135/23 76/146/23 74/136/23 +f 78/138/24 80/142/24 79/139/24 +f 75/141/25 79/139/25 80/142/25 +f 74/144/26 78/138/26 77/140/26 +f 76/146/27 80/142/27 78/138/27 +f 73/147/28 77/140/28 79/139/28 +f 87/149/24 88/159/24 85/150/24 +f 82/152/26 87/149/26 86/151/26 +f 84/154/27 88/159/27 87/149/27 +f 81/156/28 86/151/28 85/150/28 +f 83/158/25 85/150/25 88/159/25 +f 95/161/24 96/167/24 93/162/24 +f 89/164/28 94/172/28 93/165/28 +f 91/166/25 93/165/25 96/167/25 +f 90/169/26 95/161/26 94/170/26 +f 92/168/27 96/167/27 95/161/27 +s 1 +f 102/173/29 161/174/30 160/175/31 +f 100/176/32 163/177/33 162/178/34 +f 108/179/35 102/173/29 109/180/36 +f 107/181/37 99/182/38 100/176/32 +f 112/183/39 98/184/40 105/185/41 +f 111/186/42 104/187/43 112/183/39 +f 107/181/37 101/188/44 108/179/35 +f 106/189/45 98/184/40 99/182/38 +f 158/190/25 105/185/41 151/191/46 +f 157/192/47 112/193/39 158/190/25 +f 119/194/27 126/195/37 118/196/48 +f 117/197/26 124/198/36 116/199/49 +f 115/200/28 122/201/42 114/202/47 +f 120/203/46 127/204/45 119/194/27 +f 118/196/48 125/205/35 117/197/26 +f 116/199/49 123/206/50 115/207/28 +f 114/202/47 121/208/39 113/209/25 +f 113/209/25 128/210/41 120/203/46 +f 128/210/41 134/211/38 127/204/45 +f 125/212/35 133/213/32 132/214/44 +f 121/215/39 130/216/51 129/217/43 +f 128/210/41 129/217/43 135/218/40 +f 126/195/37 134/211/38 133/213/32 +f 124/219/36 132/214/44 131/220/29 +f 133/213/32 141/221/33 140/222/34 +f 131/220/29 139/223/30 138/224/31 +f 135/218/40 141/221/33 134/211/38 +f 132/214/44 140/222/34 139/223/30 +f 130/216/51 136/225/52 129/217/43 +f 129/217/43 142/226/53 135/218/40 +f 122/227/42 123/228/50 130/216/51 +f 130/216/51 123/228/50 137/229/54 +f 124/219/36 131/220/29 123/230/50 +f 131/220/29 138/224/31 123/230/50 +f 139/231/30 146/232/55 138/233/31 +f 142/226/53 149/234/24 141/221/33 +f 140/222/34 147/235/26 139/231/30 +f 137/236/54 144/237/25 136/238/52 +f 138/233/31 143/239/23 123/240/50 +f 136/238/52 150/241/56 142/226/53 +f 137/236/54 143/242/23 145/243/57 +f 140/222/34 149/234/24 148/244/58 +f 155/245/49 110/246/50 156/247/28 +f 153/248/48 108/249/35 154/250/26 +f 151/191/46 106/189/45 152/251/27 +f 156/252/28 111/253/42 157/192/47 +f 154/250/26 109/254/36 155/245/49 +f 152/251/27 107/181/37 153/248/48 +f 98/184/40 163/177/33 99/182/38 +f 101/188/44 162/178/34 161/174/30 +f 103/255/51 97/256/52 104/187/43 +f 104/187/43 164/257/53 98/184/40 +f 111/186/42 110/258/50 103/255/51 +f 103/255/51 110/258/50 159/259/54 +f 109/180/36 102/173/29 110/260/50 +f 102/173/29 160/175/31 110/260/50 +f 161/261/30 168/262/55 160/263/31 +f 164/257/53 171/264/24 163/177/33 +f 162/178/34 169/265/26 161/261/30 +f 159/266/54 166/267/25 97/268/52 +f 160/263/31 165/269/23 110/270/50 +f 97/268/52 172/271/56 164/257/53 +f 159/266/54 165/272/23 167/273/57 +f 162/178/34 171/264/24 170/274/58 +f 178/275/59 237/276/60 236/277/61 +f 176/278/62 239/279/63 238/280/64 +f 184/281/65 178/275/59 185/282/66 +f 182/283/67 176/278/62 183/284/68 +f 188/285/69 174/286/70 181/287/71 +f 187/288/72 180/289/73 188/285/69 +f 183/284/68 177/290/74 184/281/65 +f 182/283/67 174/286/70 175/291/75 +f 234/292/26 181/287/71 227/293/49 +f 233/294/48 188/295/69 234/292/26 +f 195/296/28 202/297/68 194/298/47 +f 193/299/25 200/300/66 192/301/46 +f 191/302/27 198/303/72 190/304/48 +f 196/305/49 203/306/67 195/296/28 +f 194/298/47 201/307/65 193/299/25 +f 192/301/46 199/308/76 191/309/27 +f 190/304/48 197/310/69 189/311/26 +f 189/311/26 204/312/71 196/305/49 +f 204/312/71 210/313/75 203/306/67 +f 201/314/65 209/315/62 208/316/74 +f 197/317/69 206/318/77 205/319/73 +f 204/312/71 205/319/73 211/320/70 +f 202/297/68 210/313/75 209/315/62 +f 200/321/66 208/316/74 207/322/59 +f 209/315/62 217/323/63 216/324/64 +f 208/316/74 214/325/61 207/322/59 +f 211/320/70 217/323/63 210/313/75 +f 208/316/74 216/324/64 215/326/60 +f 206/318/77 212/327/78 205/319/73 +f 205/319/73 218/328/79 211/320/70 +f 198/329/72 199/330/76 206/318/77 +f 206/318/77 199/330/76 213/331/80 +f 200/321/66 207/322/59 199/332/76 +f 207/322/59 214/325/61 199/332/76 +f 214/333/61 223/334/25 222/335/57 +f 218/328/79 225/336/24 217/323/63 +f 216/324/64 223/334/25 215/337/60 +f 213/338/80 220/339/26 212/340/78 +f 214/333/61 219/341/23 199/342/76 +f 212/340/78 226/343/58 218/328/79 +f 213/338/80 219/344/23 221/345/55 +f 216/324/64 225/336/24 224/346/56 +f 231/347/46 186/348/76 232/349/27 +f 229/350/47 184/351/65 230/352/25 +f 227/293/49 182/283/67 228/353/28 +f 232/354/27 187/355/72 233/294/48 +f 230/352/25 185/356/66 231/347/46 +f 228/353/28 183/284/68 229/350/47 +f 174/286/70 239/279/63 175/291/75 +f 177/290/74 238/280/64 237/276/60 +f 180/289/73 235/357/80 173/358/78 +f 180/289/73 240/359/79 174/286/70 +f 187/288/72 186/360/76 179/361/77 +f 179/361/77 186/360/76 235/357/80 +f 185/282/66 178/275/59 186/362/76 +f 178/275/59 236/277/61 186/362/76 +f 237/363/60 244/364/57 236/365/61 +f 240/359/79 247/366/24 239/279/63 +f 238/280/64 245/367/25 237/363/60 +f 235/368/80 242/369/26 173/370/78 +f 236/365/61 241/371/23 186/372/76 +f 173/370/78 248/373/58 240/359/79 +f 235/368/80 241/374/23 243/375/55 +f 238/280/64 247/366/24 246/376/56 +f 102/173/29 101/188/44 161/174/30 +f 100/176/32 99/182/38 163/177/33 +f 108/179/35 101/188/44 102/173/29 +f 107/181/37 106/189/45 99/182/38 +f 112/183/39 104/187/43 98/184/40 +f 111/186/42 103/255/51 104/187/43 +f 107/181/37 100/176/32 101/188/44 +f 106/189/45 105/185/41 98/184/40 +f 158/190/25 112/193/39 105/185/41 +f 157/192/47 111/253/42 112/193/39 +f 119/194/27 127/204/45 126/195/37 +f 117/197/26 125/205/35 124/198/36 +f 115/200/28 123/377/50 122/201/42 +f 120/203/46 128/210/41 127/204/45 +f 118/196/48 126/195/37 125/205/35 +f 116/199/49 124/198/36 123/206/50 +f 114/202/47 122/201/42 121/208/39 +f 113/209/25 121/208/39 128/210/41 +f 128/210/41 135/218/40 134/211/38 +f 125/212/35 126/195/37 133/213/32 +f 121/215/39 122/227/42 130/216/51 +f 128/210/41 121/215/39 129/217/43 +f 126/195/37 127/204/45 134/211/38 +f 124/219/36 125/212/35 132/214/44 +f 133/213/32 134/211/38 141/221/33 +f 131/220/29 132/214/44 139/223/30 +f 135/218/40 142/226/53 141/221/33 +f 132/214/44 133/213/32 140/222/34 +f 130/216/51 137/229/54 136/225/52 +f 129/217/43 136/225/52 142/226/53 +f 139/231/30 147/235/26 146/232/55 +f 142/226/53 150/241/56 149/234/24 +f 140/222/34 148/244/58 147/235/26 +f 137/236/54 145/243/57 144/237/25 +f 138/233/31 146/232/55 143/239/23 +f 136/238/52 144/237/25 150/241/56 +f 137/236/54 123/378/50 143/242/23 +f 140/222/34 141/221/33 149/234/24 +f 155/245/49 109/254/36 110/246/50 +f 153/248/48 107/181/37 108/249/35 +f 151/191/46 105/185/41 106/189/45 +f 156/252/28 110/379/50 111/253/42 +f 154/250/26 108/249/35 109/254/36 +f 152/251/27 106/189/45 107/181/37 +f 98/184/40 164/257/53 163/177/33 +f 101/188/44 100/176/32 162/178/34 +f 103/255/51 159/259/54 97/256/52 +f 104/187/43 97/256/52 164/257/53 +f 161/261/30 169/265/26 168/262/55 +f 164/257/53 172/271/56 171/264/24 +f 162/178/34 170/274/58 169/265/26 +f 159/266/54 167/273/57 166/267/25 +f 160/263/31 168/262/55 165/269/23 +f 97/268/52 166/267/25 172/271/56 +f 159/266/54 110/380/50 165/272/23 +f 162/178/34 163/177/33 171/264/24 +f 178/275/59 177/290/74 237/276/60 +f 176/278/62 175/291/75 239/279/63 +f 184/281/65 177/290/74 178/275/59 +f 182/283/67 175/291/75 176/278/62 +f 188/285/69 180/289/73 174/286/70 +f 187/288/72 179/361/77 180/289/73 +f 183/284/68 176/278/62 177/290/74 +f 182/283/67 181/287/71 174/286/70 +f 234/292/26 188/295/69 181/287/71 +f 233/294/48 187/355/72 188/295/69 +f 195/296/28 203/306/67 202/297/68 +f 193/299/25 201/307/65 200/300/66 +f 191/302/27 199/381/76 198/303/72 +f 196/305/49 204/312/71 203/306/67 +f 194/298/47 202/297/68 201/307/65 +f 192/301/46 200/300/66 199/308/76 +f 190/304/48 198/303/72 197/310/69 +f 189/311/26 197/310/69 204/312/71 +f 204/312/71 211/320/70 210/313/75 +f 201/314/65 202/297/68 209/315/62 +f 197/317/69 198/329/72 206/318/77 +f 204/312/71 197/317/69 205/319/73 +f 202/297/68 203/306/67 210/313/75 +f 200/321/66 201/314/65 208/316/74 +f 209/315/62 210/313/75 217/323/63 +f 208/316/74 215/326/60 214/325/61 +f 211/320/70 218/328/79 217/323/63 +f 208/316/74 209/315/62 216/324/64 +f 206/318/77 213/331/80 212/327/78 +f 205/319/73 212/327/78 218/328/79 +f 214/333/61 215/337/60 223/334/25 +f 218/328/79 226/343/58 225/336/24 +f 216/324/64 224/346/56 223/334/25 +f 213/338/80 221/345/55 220/339/26 +f 214/333/61 222/335/57 219/341/23 +f 212/340/78 220/339/26 226/343/58 +f 213/338/80 199/382/76 219/344/23 +f 216/324/64 217/323/63 225/336/24 +f 231/347/46 185/356/66 186/348/76 +f 229/350/47 183/284/68 184/351/65 +f 227/293/49 181/287/71 182/283/67 +f 232/354/27 186/383/76 187/355/72 +f 230/352/25 184/351/65 185/356/66 +f 228/353/28 182/283/67 183/284/68 +f 174/286/70 240/359/79 239/279/63 +f 177/290/74 176/278/62 238/280/64 +f 180/289/73 179/361/77 235/357/80 +f 180/289/73 173/358/78 240/359/79 +f 237/363/60 245/367/25 244/364/57 +f 240/359/79 248/373/58 247/366/24 +f 238/280/64 246/376/56 245/367/25 +f 235/368/80 243/375/55 242/369/26 +f 236/365/61 244/364/57 241/371/23 +f 173/370/78 242/369/26 248/373/58 +f 235/368/80 186/384/76 241/374/23 +f 238/280/64 239/279/63 247/366/24 diff --git a/src/main/resources/assets/hbm/models/machines/radar_screen.obj b/src/main/resources/assets/hbm/models/machines/radar_screen.obj new file mode 100644 index 000000000..18f4a3cc5 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/radar_screen.obj @@ -0,0 +1,140 @@ +# Blender v2.79 (sub 0) OBJ File: 'radar_screen.blend' +# www.blender.org +o Plane +v -0.250000 0.000000 1.500000 +v 0.500000 0.000000 1.500000 +v -0.250000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.250000 2.000000 -0.500000 +v -0.250000 2.000000 1.500000 +v 0.500000 2.000000 1.500000 +v 0.500000 2.000000 -0.500000 +v -0.250000 0.250000 -0.250000 +v -0.250000 0.250000 1.250000 +v -0.250000 1.750000 -0.250000 +v -0.250000 1.750000 1.250000 +v -0.500000 0.250000 -0.250000 +v -0.500000 0.250000 1.250000 +v -0.500000 1.750000 -0.250000 +v -0.500000 1.750000 1.250000 +v 0.500000 0.125000 1.375000 +v 0.500000 0.125000 -0.375000 +v 0.500000 1.875000 1.375000 +v 0.500000 1.875000 -0.375000 +v 0.375000 0.125000 1.375000 +v 0.375000 0.125000 -0.375000 +v 0.375000 1.875000 1.375000 +v 0.375000 1.875000 -0.375000 +vt 0.500000 0.000000 +vt 0.136364 0.214286 +vt 0.136364 0.000000 +vt 0.136364 0.785714 +vt 0.500000 1.000000 +vt 0.136364 1.000000 +vt 0.636364 0.214286 +vt 0.500000 0.785714 +vt 0.500000 0.214286 +vt 0.000000 0.785714 +vt 0.000000 0.214286 +vt 0.159091 0.750000 +vt 0.681818 0.714286 +vt 0.636364 0.785714 +vt 0.500000 0.107143 +vt 0.772727 0.035714 +vt 0.772727 0.107143 +vt 0.954545 0.714286 +vt 1.000000 0.785714 +vt 1.000000 0.214286 +vt 0.681818 0.285714 +vt 0.954545 0.285714 +vt 0.954545 0.267857 +vt 0.681818 0.714286 +vt 0.681818 0.267857 +vt 0.500000 0.107143 +vt 0.772727 0.035714 +vt 0.772727 0.107143 +vt 0.500000 0.107143 +vt 0.772727 0.035714 +vt 0.772727 0.107143 +vt 0.500000 0.107143 +vt 0.772727 0.035714 +vt 0.772727 0.107143 +vt 0.818182 -0.000000 +vt 0.500000 0.035714 +vt 0.500000 0.000000 +vt 0.477273 0.750000 +vt 0.159091 0.250000 +vt 0.477273 0.250000 +vt 0.477273 0.250000 +vt 0.159091 0.750000 +vt 0.159091 0.250000 +vt 0.818182 0.000000 +vt 0.500000 0.035714 +vt 0.500000 0.000000 +vt 0.818182 0.000000 +vt 0.500000 0.035714 +vt 0.500000 0.000000 +vt 0.818182 -0.000000 +vt 0.500000 0.035714 +vt 0.500000 0.000000 +vt 0.500000 0.035714 +vt 0.954545 0.714286 +vt 0.500000 0.035714 +vt 0.500000 0.035714 +vt 0.500000 0.035714 +vt 0.818182 0.035714 +vt 0.477273 0.750000 +vt 0.818182 0.035714 +vt 0.818182 0.035714 +vt 0.818182 0.035714 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 7/4/2 5/5/2 6/6/2 +f 3/7/3 8/8/3 4/9/3 +f 2/2/4 6/10/4 1/11/4 +f 2/2/5 19/12/5 7/4/5 +f 3/7/6 11/13/6 5/14/6 +f 9/15/3 15/16/3 11/17/3 +f 5/14/6 12/18/6 6/19/6 +f 1/20/6 9/21/6 3/7/6 +f 6/19/6 10/22/6 1/20/6 +f 14/23/6 15/24/6 13/25/6 +f 10/26/1 13/27/1 9/28/1 +f 12/29/4 14/30/4 10/31/4 +f 11/32/2 16/33/2 12/34/2 +f 20/35/4 22/36/4 18/37/4 +f 7/4/5 20/38/5 8/8/5 +f 4/9/5 17/39/5 2/2/5 +f 8/8/5 18/40/5 4/9/5 +f 22/41/5 23/42/5 21/43/5 +f 18/44/2 21/45/2 17/46/2 +f 17/47/3 23/48/3 19/49/3 +f 19/50/1 24/51/1 20/52/1 +f 3/1/1 4/9/1 2/2/1 +f 7/4/2 8/8/2 5/5/2 +f 3/7/3 5/14/3 8/8/3 +f 2/2/4 7/4/4 6/10/4 +f 2/2/5 17/39/5 19/12/5 +f 3/7/6 9/21/6 11/13/6 +f 9/15/3 13/53/3 15/16/3 +f 5/14/6 11/13/6 12/18/6 +f 1/20/6 10/22/6 9/21/6 +f 6/19/6 12/18/6 10/22/6 +f 14/23/6 16/54/6 15/24/6 +f 10/26/1 14/55/1 13/27/1 +f 12/29/4 16/56/4 14/30/4 +f 11/32/2 15/57/2 16/33/2 +f 20/35/4 24/58/4 22/36/4 +f 7/4/5 19/12/5 20/38/5 +f 4/9/5 18/40/5 17/39/5 +f 8/8/5 20/38/5 18/40/5 +f 22/41/5 24/59/5 23/42/5 +f 18/44/2 22/60/2 21/45/2 +f 17/47/3 21/61/3 23/48/3 +f 19/50/1 23/62/1 24/51/1 diff --git a/src/main/resources/assets/hbm/models/machines/steamhammer.obj b/src/main/resources/assets/hbm/models/machines/steamhammer.obj new file mode 100644 index 000000000..5960e6fea --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/steamhammer.obj @@ -0,0 +1,2331 @@ +# Blender v2.79 (sub 0) OBJ File: 'steamhammer.blend' +# www.blender.org +o Piston2 +v -0.562750 2.000000 -0.687500 +v -0.187750 2.000000 -0.687500 +v -0.562750 2.000000 -1.062500 +v -0.187750 2.000000 -1.062500 +v -0.562750 2.250000 -1.062500 +v -0.562750 2.250000 -0.687500 +v -0.187750 2.250000 -0.687500 +v -0.187750 2.250000 -1.062500 +vt 0.771739 0.206349 +vt 0.804348 0.158730 +vt 0.804348 0.206349 +vt 0.771739 0.126984 +vt 0.739130 0.158730 +vt 0.739130 0.126984 +vt 0.836957 0.126984 +vt 0.804348 0.126984 +vt 0.771739 0.158730 +vt 0.869565 0.126984 +vt 0.836957 0.158730 +vt 0.869565 0.158730 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 7/1/1 5/2/1 6/3/1 +f 4/4/2 7/5/2 2/6/2 +f 1/7/3 5/2/3 3/8/3 +f 3/8/4 8/9/4 4/4/4 +f 2/10/5 6/11/5 1/7/5 +f 7/1/1 8/9/1 5/2/1 +f 4/4/2 8/9/2 7/5/2 +f 1/7/3 6/11/3 5/2/3 +f 3/8/4 5/2/4 8/9/4 +f 2/10/5 7/12/5 6/11/5 +o Piston1 +v 0.187250 2.000000 -0.687500 +v 0.562250 2.000000 -0.687500 +v 0.187250 2.000000 -1.062500 +v 0.562250 2.000000 -1.062500 +v 0.187250 2.250000 -1.062500 +v 0.187250 2.250000 -0.687500 +v 0.562250 2.250000 -0.687500 +v 0.562250 2.250000 -1.062500 +vt 0.771739 0.206349 +vt 0.804348 0.158730 +vt 0.804348 0.206349 +vt 0.869565 0.126984 +vt 0.836957 0.158730 +vt 0.836957 0.126984 +vt 0.771739 0.126984 +vt 0.739130 0.158730 +vt 0.739130 0.126984 +vt 0.804348 0.126984 +vt 0.771739 0.158730 +vt 0.869565 0.158730 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 15/13/6 13/14/6 14/15/6 +f 10/16/7 14/17/7 9/18/7 +f 12/19/8 15/20/8 10/21/8 +f 9/18/9 13/14/9 11/22/9 +f 11/22/10 16/23/10 12/19/10 +f 15/13/6 16/23/6 13/14/6 +f 10/16/7 15/24/7 14/17/7 +f 12/19/8 16/23/8 15/20/8 +f 9/18/9 14/17/9 13/14/9 +f 11/22/10 13/14/10 16/23/10 +o HammerRight_HammerRicht +v 1.875000 0.687500 -0.125000 +v 2.125000 0.687500 -0.125000 +v 1.875000 0.687500 -0.375000 +v 2.125000 0.687500 -0.375000 +v 1.875000 0.812500 -0.375000 +v 1.875000 0.812500 -0.125000 +v 2.125000 0.812500 -0.125000 +v 2.125000 0.812500 -0.375000 +v 1.906250 0.812500 -0.156250 +v 2.093750 0.812500 -0.156250 +v 1.906250 0.812500 -0.343750 +v 2.093750 0.812500 -0.343750 +v 1.906250 1.812500 -0.343750 +v 1.906250 1.812500 -0.156250 +v 2.093750 1.812500 -0.156250 +v 2.093750 1.812500 -0.343750 +vt 0.695652 0.507937 +vt 0.673913 0.539683 +vt 0.673913 0.507937 +vt 0.690217 0.563492 +vt 0.673913 0.555556 +vt 0.695652 0.555556 +vt 0.717391 0.539683 +vt 0.695652 0.539683 +vt 0.652174 0.555556 +vt 0.652174 0.539683 +vt 0.739130 0.539683 +vt 0.717391 0.555556 +vt 0.684783 0.587302 +vt 0.668478 0.714286 +vt 0.668478 0.587302 +vt 0.690217 0.579365 +vt 0.695652 0.587302 +vt 0.679348 0.579365 +vt 0.673913 0.587302 +vt 0.679348 0.563492 +vt 0.717391 0.587302 +vt 0.701087 0.714286 +vt 0.701087 0.587302 +vt 0.684783 0.714286 +vt 0.652174 0.714286 +vt 0.652174 0.587302 +vt 0.739130 0.555556 +vt 0.717391 0.714286 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 19/25/11 18/26/11 17/27/11 +f 28/28/12 23/29/12 24/30/12 +f 19/31/13 24/30/13 20/32/13 +f 18/26/14 22/33/14 17/34/14 +f 20/32/15 23/29/15 18/26/15 +f 17/35/16 21/36/16 19/31/16 +f 28/37/15 31/38/15 26/39/15 +f 27/40/12 24/30/12 21/41/12 +f 25/42/12 21/41/12 22/43/12 +f 26/44/12 22/43/12 23/29/12 +f 25/45/16 29/46/16 27/47/16 +f 27/47/13 32/48/13 28/37/13 +f 26/39/14 30/49/14 25/50/14 +f 19/25/11 20/32/11 18/26/11 +f 28/28/12 26/44/12 23/29/12 +f 19/31/13 21/36/13 24/30/13 +f 18/26/14 23/29/14 22/33/14 +f 20/32/15 24/30/15 23/29/15 +f 17/35/16 22/51/16 21/36/16 +f 28/37/15 32/48/15 31/38/15 +f 27/40/12 28/28/12 24/30/12 +f 25/42/12 27/40/12 21/41/12 +f 26/44/12 25/42/12 22/43/12 +f 25/45/16 30/52/16 29/46/16 +f 27/47/13 29/46/13 32/48/13 +f 26/39/14 31/38/14 30/49/14 +o HammerLeft +v 1.875000 0.687500 0.375000 +v 2.125000 0.687500 0.375000 +v 1.875000 0.687500 0.125000 +v 2.125000 0.687500 0.125000 +v 1.875000 0.812500 0.125000 +v 1.875000 0.812500 0.375000 +v 2.125000 0.812500 0.375000 +v 2.125000 0.812500 0.125000 +v 1.906250 0.812500 0.343750 +v 2.093750 0.812500 0.343750 +v 1.906250 0.812500 0.156250 +v 2.093750 0.812500 0.156250 +v 1.906250 1.812500 0.156250 +v 1.906250 1.812500 0.343750 +v 2.093750 1.812500 0.343750 +v 2.093750 1.812500 0.156250 +vt 0.695652 0.507937 +vt 0.673913 0.539683 +vt 0.673913 0.507937 +vt 0.690217 0.563492 +vt 0.673913 0.555556 +vt 0.695652 0.555556 +vt 0.717391 0.539683 +vt 0.695652 0.539683 +vt 0.652174 0.555556 +vt 0.652174 0.539683 +vt 0.739130 0.539683 +vt 0.717391 0.555556 +vt 0.684783 0.587302 +vt 0.668478 0.714286 +vt 0.668478 0.587302 +vt 0.690217 0.579365 +vt 0.695652 0.587302 +vt 0.679348 0.579365 +vt 0.673913 0.587302 +vt 0.679348 0.563492 +vt 0.717391 0.587302 +vt 0.701087 0.714286 +vt 0.701087 0.587302 +vt 0.684783 0.714286 +vt 0.652174 0.714286 +vt 0.652174 0.587302 +vt 0.739130 0.555556 +vt 0.717391 0.714286 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 35/53/17 34/54/17 33/55/17 +f 44/56/18 39/57/18 40/58/18 +f 35/59/19 40/58/19 36/60/19 +f 34/54/20 38/61/20 33/62/20 +f 36/60/21 39/57/21 34/54/21 +f 33/63/22 37/64/22 35/59/22 +f 44/65/21 47/66/21 42/67/21 +f 43/68/18 40/58/18 37/69/18 +f 41/70/18 37/69/18 38/71/18 +f 42/72/18 38/71/18 39/57/18 +f 41/73/22 45/74/22 43/75/22 +f 43/75/19 48/76/19 44/65/19 +f 42/67/20 46/77/20 41/78/20 +f 35/53/17 36/60/17 34/54/17 +f 44/56/18 42/72/18 39/57/18 +f 35/59/19 37/64/19 40/58/19 +f 34/54/20 39/57/20 38/61/20 +f 36/60/21 40/58/21 39/57/21 +f 33/63/22 38/79/22 37/64/22 +f 44/65/21 48/76/21 47/66/21 +f 43/68/18 44/56/18 40/58/18 +f 41/70/18 43/68/18 37/69/18 +f 42/72/18 41/70/18 38/71/18 +f 41/73/22 46/80/22 45/74/22 +f 43/75/19 45/74/19 48/76/19 +f 42/67/20 47/66/20 46/77/20 +o Main +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -0.500000 0.500000 1.500000 +v 0.500000 0.500000 1.500000 +v -0.500000 1.000000 1.500000 +v 0.500000 1.000000 1.500000 +v -0.500000 0.500000 -1.500000 +v 0.500000 0.500000 -1.500000 +v -0.500000 1.000000 -1.500000 +v 0.500000 1.000000 -1.500000 +v -1.187500 0.500000 -1.500000 +v -0.812500 0.500000 -1.500000 +v -1.187500 0.687500 -1.500000 +v -0.812500 0.687500 -1.500000 +v -1.187500 0.500000 1.500000 +v -0.812500 0.500000 1.500000 +v -1.187500 0.687500 1.500000 +v -0.812500 0.687500 1.500000 +v -0.500000 0.500000 -1.250000 +v 0.500000 0.500000 -1.250000 +v -0.500000 1.000000 -1.250000 +v 0.500000 1.000000 -1.250000 +v -1.187500 0.500000 -1.250000 +v -0.812500 0.500000 -1.250000 +v -1.187500 0.687500 -1.250000 +v -0.812500 0.687500 -1.250000 +v -0.500000 0.500000 1.250000 +v 0.500000 0.500000 1.250000 +v -0.500000 1.000000 1.250000 +v 0.500000 1.000000 1.250000 +v -1.187500 0.500000 1.250000 +v -0.812500 0.500000 1.250000 +v -1.187500 0.687500 1.250000 +v -0.812500 0.687500 1.250000 +v -1.500000 0.500000 1.500000 +v 1.500000 0.500000 1.500000 +v -1.500000 0.500000 -1.500000 +v 1.500000 0.500000 -1.500000 +v 1.249500 0.500000 -1.250000 +v 1.249500 0.500000 1.250000 +v -1.250000 0.500000 -1.250000 +v -1.250000 0.500000 1.250000 +v 1.249500 1.500000 -1.250000 +v 1.249500 1.500000 1.250000 +v -1.250000 1.500000 -1.250000 +v -1.250000 1.500000 1.250000 +v 1.249500 2.000000 -0.500000 +v 1.249500 2.000000 0.500000 +v -1.250000 2.000000 -0.500000 +v -1.250000 2.000000 0.500000 +v 1.750000 1.875000 0.500000 +v 2.250000 1.875000 0.500000 +v 1.750000 1.875000 -0.500000 +v 2.250000 1.875000 -0.500000 +v 1.750000 3.375000 -0.500000 +v 1.750000 3.375000 0.500000 +v 2.250000 3.375000 0.500000 +v 2.250000 3.375000 -0.500000 +v 0.250000 2.000000 0.375000 +v 0.250000 2.000000 -0.375000 +v 1.000000 2.000000 -0.375000 +v 1.000000 2.000000 0.375000 +v 1.250000 2.250000 0.375000 +v 1.000000 2.750000 0.375000 +v 1.250000 2.250000 -0.375000 +v 1.000000 2.750000 -0.375000 +v 1.750000 2.750000 -0.375000 +v 1.750000 2.250000 -0.375000 +v 1.750000 2.750000 0.375000 +v 1.750000 2.250000 0.375000 +v 1.812500 1.875000 -0.437500 +v 1.812500 1.875000 0.437500 +v 2.187500 1.875000 0.437500 +v 2.187500 1.875000 -0.437500 +v 1.812500 1.812500 -0.437500 +v 1.812500 1.812500 0.437500 +v 2.187500 1.812500 0.437500 +v 2.187500 1.812500 -0.437500 +v 1.875000 3.500000 -0.375000 +v 1.875000 3.500000 0.375000 +v 2.125000 3.500000 0.375000 +v 2.125000 3.500000 -0.375000 +v 1.875000 3.250000 -0.500000 +v 1.786612 3.213388 -0.500000 +v 1.750000 3.125000 -0.500000 +v 1.786612 3.036612 -0.500000 +v 1.875000 3.000000 -0.500000 +v 1.963388 3.036612 -0.500000 +v 2.000000 3.125000 -0.500000 +v 1.963388 3.213388 -0.500000 +v 1.875000 3.176777 -0.676777 +v 1.786612 3.150888 -0.650888 +v 1.750000 3.088388 -0.588388 +v 1.786612 3.025888 -0.525888 +v 1.963388 3.025888 -0.525888 +v 2.000000 3.088388 -0.588388 +v 1.963388 3.150888 -0.650888 +v 1.875000 3.000000 -0.750000 +v 1.786612 3.000000 -0.713388 +v 1.750000 3.000000 -0.625000 +v 1.786612 3.000000 -0.536612 +v 1.963388 3.000000 -0.536612 +v 2.000000 3.000000 -0.625000 +v 1.963388 3.000000 -0.713388 +v 1.875000 1.875000 -0.500000 +v 1.875000 1.875000 -0.750000 +v 1.786612 1.875000 -0.713388 +v 1.750000 1.875000 -0.625000 +v 1.786612 1.875000 -0.536612 +v 1.963388 1.875000 -0.536612 +v 2.000000 1.875000 -0.625000 +v 1.963388 1.875000 -0.713388 +v 1.838388 1.786612 -0.500000 +v 1.838388 1.786612 -0.750000 +v 1.775888 1.849112 -0.713388 +v 1.775888 1.849112 -0.536612 +v 1.900888 1.724112 -0.536612 +v 1.926777 1.698223 -0.625000 +v 1.900888 1.724112 -0.713388 +v 1.750000 1.750000 -0.500000 +v 1.750000 1.750000 -0.750000 +v 1.750000 1.838388 -0.713388 +v 1.750000 1.838388 -0.536612 +v 1.750000 1.661612 -0.536612 +v 1.750000 1.625000 -0.625000 +v 1.750000 1.661612 -0.713388 +v 1.250000 1.875000 -0.625000 +v 1.250000 1.750000 -0.500000 +v 1.250000 1.750000 -0.750000 +v 1.250000 1.838388 -0.713388 +v 1.250000 1.838388 -0.536612 +v 1.250000 1.661612 -0.536612 +v 1.250000 1.625000 -0.625000 +v 1.250000 1.661612 -0.713388 +v 2.000000 3.500000 0.125000 +v 1.911612 3.500000 0.161612 +v 1.875000 3.500000 0.250000 +v 1.911612 3.500000 0.338388 +v 2.000000 3.500000 0.375000 +v 2.088388 3.500000 0.338388 +v 2.125000 3.500000 0.250000 +v 2.088388 3.500000 0.161612 +v 1.963388 3.588388 0.125000 +v 1.900888 3.525888 0.161612 +v 1.900888 3.525888 0.338388 +v 1.963388 3.588388 0.375000 +v 2.025888 3.650888 0.338388 +v 2.051777 3.676777 0.250000 +v 2.025888 3.650888 0.161612 +v 1.875000 3.625000 0.125000 +v 1.875000 3.536612 0.161612 +v 1.875000 3.536612 0.338388 +v 1.875000 3.625000 0.375000 +v 1.875000 3.713388 0.338388 +v 1.875000 3.750000 0.250000 +v 1.875000 3.713388 0.161612 +v 1.625000 3.500000 0.250000 +v 1.625000 3.625000 0.125000 +v 1.625000 3.536612 0.161612 +v 1.625000 3.536612 0.338388 +v 1.625000 3.625000 0.375000 +v 1.625000 3.713388 0.338388 +v 1.625000 3.750000 0.250000 +v 1.625000 3.713388 0.161612 +v 1.536612 3.588388 0.125000 +v 1.599111 3.525888 0.161612 +v 1.599111 3.525888 0.338388 +v 1.536612 3.588388 0.375000 +v 1.474112 3.650888 0.338388 +v 1.448223 3.676777 0.250000 +v 1.474112 3.650888 0.161612 +v 1.500000 3.500000 0.125000 +v 1.588388 3.500000 0.161612 +v 1.588388 3.500000 0.338388 +v 1.500000 3.500000 0.375000 +v 1.411612 3.500000 0.338388 +v 1.375000 3.500000 0.250000 +v 1.411612 3.500000 0.161612 +v 1.625000 3.000000 0.250000 +v 1.500000 3.000000 0.125000 +v 1.588388 3.000000 0.161612 +v 1.588388 3.000000 0.338388 +v 1.500000 3.000000 0.375000 +v 1.411612 3.000000 0.338388 +v 1.375000 3.000000 0.250000 +v 1.411612 3.000000 0.161612 +v 1.551777 2.823223 0.250000 +v 1.463388 2.911612 0.125000 +v 1.525888 2.849112 0.161612 +v 1.525888 2.849112 0.338388 +v 1.463388 2.911612 0.375000 +v 1.400888 2.974112 0.338388 +v 1.400888 2.974112 0.161612 +v 1.375000 2.750000 0.250000 +v 1.375000 2.875000 0.125000 +v 1.375000 2.786612 0.161612 +v 1.375000 2.786612 0.338388 +v 1.375000 2.875000 0.375000 +v 1.375000 2.963388 0.338388 +v 1.375000 2.963388 0.161612 +v 0.250000 3.000000 0.250000 +v 0.250000 2.750000 0.250000 +v 0.250000 2.875000 0.125000 +v 0.250000 2.786612 0.161612 +v 0.250000 2.786612 0.338388 +v 0.250000 2.875000 0.375000 +v 0.250000 2.963388 0.338388 +v 0.250000 2.963388 0.161612 +v 0.073223 2.926777 0.250000 +v 0.161612 2.838388 0.125000 +v 0.224112 2.775889 0.161612 +v 0.224112 2.775889 0.338388 +v 0.161612 2.838388 0.375000 +v 0.099112 2.900888 0.338388 +v 0.099112 2.900888 0.161612 +v 0.000000 2.750000 0.250000 +v 0.125000 2.750000 0.125000 +v 0.213388 2.750000 0.161612 +v 0.213388 2.750000 0.338388 +v 0.125000 2.750000 0.375000 +v 0.036612 2.750000 0.338388 +v 0.036612 2.750000 0.161612 +v 0.250000 2.000000 0.250000 +v 0.000000 2.000000 0.250000 +v 0.125000 2.000000 0.125000 +v 0.213388 2.000000 0.161612 +v 0.213388 2.000000 0.338388 +v 0.125000 2.000000 0.375000 +v 0.036612 2.000000 0.338388 +v 0.036612 2.000000 0.161612 +v 1.812500 1.812500 0.062500 +v 2.187500 1.812500 0.062500 +v 1.812500 1.812500 -0.062500 +v 2.187500 1.812500 -0.062500 +v 2.187500 1.875000 -0.062500 +v 1.812500 1.875000 -0.062500 +v 1.812500 1.875000 0.062500 +v 2.187500 1.875000 0.062500 +v 0.124750 2.000000 -0.625000 +v 0.624750 2.000000 -0.625000 +v 0.124750 2.000000 -1.125000 +v 0.624750 2.000000 -1.125000 +v 0.124750 1.500000 -1.125000 +v 0.124750 1.500000 -0.625000 +v 0.624750 1.500000 -0.625000 +v 0.624750 1.500000 -1.125000 +v -0.625250 2.000000 -0.625000 +v -0.125250 2.000000 -0.625000 +v -0.625250 2.000000 -1.125000 +v -0.125250 2.000000 -1.125000 +v -0.625250 1.500000 -1.125000 +v -0.625250 1.500000 -0.625000 +v -0.125250 1.500000 -0.625000 +v -0.125250 1.500000 -1.125000 +v 2.125000 3.250000 -0.500000 +v 2.036612 3.213388 -0.500000 +v 2.000000 3.125000 -0.500000 +v 2.036612 3.036612 -0.500000 +v 2.125000 3.000000 -0.500000 +v 2.213388 3.036612 -0.500000 +v 2.250000 3.125000 -0.500000 +v 2.213388 3.213388 -0.500000 +v 2.125000 3.176777 -0.676777 +v 2.036612 3.150888 -0.650888 +v 2.000000 3.088388 -0.588388 +v 2.036612 3.025888 -0.525888 +v 2.213388 3.025888 -0.525888 +v 2.250000 3.088388 -0.588388 +v 2.213388 3.150888 -0.650888 +v 2.125000 3.000000 -0.750000 +v 2.036612 3.000000 -0.713388 +v 2.000000 3.000000 -0.625000 +v 2.036612 3.000000 -0.536612 +v 2.213388 3.000000 -0.536612 +v 2.250000 3.000000 -0.625000 +v 2.213388 3.000000 -0.713388 +v 2.125000 1.625000 -0.500000 +v 2.125000 1.625000 -0.750000 +v 2.036612 1.625000 -0.713388 +v 2.000000 1.625000 -0.625000 +v 2.036612 1.625000 -0.536612 +v 2.213388 1.625000 -0.536612 +v 2.250000 1.625000 -0.625000 +v 2.213388 1.625000 -0.713388 +v 2.088388 1.536612 -0.500000 +v 2.088388 1.536612 -0.750000 +v 2.025888 1.599112 -0.713388 +v 2.025888 1.599112 -0.536612 +v 2.150888 1.474112 -0.536612 +v 2.176777 1.448223 -0.625000 +v 2.150888 1.474112 -0.713388 +v 2.000000 1.500000 -0.500000 +v 2.000000 1.500000 -0.750000 +v 2.000000 1.588388 -0.713388 +v 2.000000 1.588388 -0.536612 +v 2.000000 1.411612 -0.536612 +v 2.000000 1.375000 -0.625000 +v 2.000000 1.411612 -0.713388 +v 1.250000 1.625000 -0.625000 +v 1.250000 1.500000 -0.500000 +v 1.250000 1.500000 -0.750000 +v 1.250000 1.588388 -0.713388 +v 1.250000 1.588388 -0.536612 +v 1.250000 1.411612 -0.536612 +v 1.250000 1.375000 -0.625000 +v 1.250000 1.411612 -0.713388 +v 0.124750 2.000000 1.125000 +v 0.624750 2.000000 1.125000 +v 0.124750 2.000000 0.625000 +v 0.624750 2.000000 0.625000 +v 0.124750 1.500000 0.625000 +v 0.124750 1.500000 1.125000 +v 0.624750 1.500000 1.125000 +v 0.624750 1.500000 0.625000 +v -0.625250 2.000000 1.125000 +v -0.125250 2.000000 1.125000 +v -0.625250 2.000000 0.625000 +v -0.125250 2.000000 0.625000 +v -0.625250 1.500000 0.625000 +v -0.625250 1.500000 1.125000 +v -0.125250 1.500000 1.125000 +v -0.125250 1.500000 0.625000 +v -0.562750 2.000000 1.062500 +v -0.187750 2.000000 1.062500 +v -0.562750 2.000000 0.687500 +v -0.187750 2.000000 0.687500 +v -0.500250 2.000000 1.000000 +v -0.250250 2.000000 1.000000 +v -0.500250 2.000000 0.750000 +v -0.250250 2.000000 0.750000 +v -0.562750 2.125000 0.687500 +v -0.562750 2.125000 1.062500 +v -0.187750 2.125000 1.062500 +v -0.187750 2.125000 0.687500 +v -0.500250 2.125000 0.750000 +v -0.500250 2.125000 1.000000 +v -0.250250 2.125000 1.000000 +v -0.250250 2.125000 0.750000 +v -0.406500 2.062500 1.000000 +v -0.406500 2.062500 0.750000 +v -0.469000 2.062500 1.000000 +v -0.469000 2.062500 0.750000 +v -0.281500 2.062500 1.000000 +v -0.281500 2.062500 0.750000 +v -0.344000 2.062500 1.000000 +v -0.344000 2.062500 0.750000 +v 0.187250 2.000000 1.062500 +v 0.562250 2.000000 1.062500 +v 0.187250 2.000000 0.687500 +v 0.562250 2.000000 0.687500 +v 0.249750 2.000000 1.000000 +v 0.499750 2.000000 1.000000 +v 0.249750 2.000000 0.750000 +v 0.499750 2.000000 0.750000 +v 0.187250 2.125000 0.687500 +v 0.187250 2.125000 1.062500 +v 0.562250 2.125000 1.062500 +v 0.562250 2.125000 0.687500 +v 0.249750 2.125000 0.750000 +v 0.249750 2.125000 1.000000 +v 0.499750 2.125000 1.000000 +v 0.499750 2.125000 0.750000 +v 0.343500 2.062500 1.000000 +v 0.343500 2.062500 0.750000 +v 0.281000 2.062500 1.000000 +v 0.281000 2.062500 0.750000 +v 0.468500 2.062500 1.000000 +v 0.468500 2.062500 0.750000 +v 0.406000 2.062500 1.000000 +v 0.406000 2.062500 0.750000 +v 2.000000 3.500000 -0.375000 +v 1.911612 3.500000 -0.338388 +v 1.875000 3.500000 -0.250000 +v 1.911612 3.500000 -0.161612 +v 2.000000 3.500000 -0.125000 +v 2.088388 3.500000 -0.161612 +v 2.125000 3.500000 -0.250000 +v 2.088388 3.500000 -0.338388 +v 1.963388 3.588388 -0.375000 +v 1.900888 3.525888 -0.338388 +v 1.900888 3.525888 -0.161612 +v 1.963388 3.588388 -0.125000 +v 2.025888 3.650888 -0.161612 +v 2.051777 3.676777 -0.250000 +v 2.025888 3.650888 -0.338388 +v 1.875000 3.625000 -0.375000 +v 1.875000 3.536612 -0.338388 +v 1.875000 3.536612 -0.161612 +v 1.875000 3.625000 -0.125000 +v 1.875000 3.713388 -0.161612 +v 1.875000 3.750000 -0.250000 +v 1.875000 3.713388 -0.338388 +v 1.625000 3.500000 -0.250000 +v 1.625000 3.625000 -0.375000 +v 1.625000 3.536612 -0.338388 +v 1.625000 3.536612 -0.161612 +v 1.625000 3.625000 -0.125000 +v 1.625000 3.713388 -0.161612 +v 1.625000 3.750000 -0.250000 +v 1.625000 3.713388 -0.338388 +v 1.536612 3.588388 -0.375000 +v 1.599111 3.525888 -0.338388 +v 1.599111 3.525888 -0.161612 +v 1.536612 3.588388 -0.125000 +v 1.474112 3.650888 -0.161612 +v 1.448223 3.676777 -0.250000 +v 1.474112 3.650888 -0.338388 +v 1.500000 3.500000 -0.375000 +v 1.588388 3.500000 -0.338388 +v 1.588388 3.500000 -0.161612 +v 1.500000 3.500000 -0.125000 +v 1.411612 3.500000 -0.161612 +v 1.375000 3.500000 -0.250000 +v 1.411612 3.500000 -0.338388 +v 1.625000 3.000000 -0.250000 +v 1.500000 3.000000 -0.375000 +v 1.588388 3.000000 -0.338388 +v 1.588388 3.000000 -0.161612 +v 1.500000 3.000000 -0.125000 +v 1.411612 3.000000 -0.161612 +v 1.375000 3.000000 -0.250000 +v 1.411612 3.000000 -0.338388 +v 1.551777 2.823223 -0.250000 +v 1.463388 2.911612 -0.375000 +v 1.525888 2.849112 -0.338388 +v 1.525888 2.849112 -0.161612 +v 1.463388 2.911612 -0.125000 +v 1.400888 2.974112 -0.161612 +v 1.400888 2.974112 -0.338388 +v 1.375000 2.750000 -0.250000 +v 1.375000 2.875000 -0.375000 +v 1.375000 2.786612 -0.338388 +v 1.375000 2.786612 -0.161612 +v 1.375000 2.875000 -0.125000 +v 1.375000 2.963388 -0.161612 +v 1.375000 2.963388 -0.338388 +v 0.250000 3.000000 -0.250000 +v 0.250000 2.750000 -0.250000 +v 0.250000 2.875000 -0.375000 +v 0.250000 2.786612 -0.338388 +v 0.250000 2.786612 -0.161612 +v 0.250000 2.875000 -0.125000 +v 0.250000 2.963388 -0.161612 +v 0.250000 2.963388 -0.338388 +v 0.073223 2.926777 -0.250000 +v 0.161612 2.838388 -0.375000 +v 0.224112 2.775889 -0.338388 +v 0.224112 2.775889 -0.161612 +v 0.161612 2.838388 -0.125000 +v 0.099112 2.900888 -0.161612 +v 0.099112 2.900888 -0.338388 +v 0.000000 2.750000 -0.250000 +v 0.125000 2.750000 -0.375000 +v 0.213388 2.750000 -0.338388 +v 0.213388 2.750000 -0.161612 +v 0.125000 2.750000 -0.125000 +v 0.036612 2.750000 -0.161612 +v 0.036612 2.750000 -0.338388 +v 0.250000 2.000000 -0.250000 +v 0.000000 2.000000 -0.250000 +v 0.125000 2.000000 -0.375000 +v 0.213388 2.000000 -0.338388 +v 0.213388 2.000000 -0.161612 +v 0.125000 2.000000 -0.125000 +v 0.036612 2.000000 -0.161612 +v 0.036612 2.000000 -0.338388 +vt 0.304348 -0.000000 +vt 0.043478 0.380952 +vt 0.043478 -0.000000 +vt 0.282609 0.730159 +vt 0.239130 0.698413 +vt 0.282609 0.698413 +vt 0.239130 0.539683 +vt 0.282609 0.571429 +vt 0.239130 0.571429 +vt 0.217391 0.690476 +vt 0.201087 0.658730 +vt 0.217391 0.658730 +vt 0.201087 0.579365 +vt 0.217391 0.611111 +vt 0.201087 0.611111 +vt 0.179348 0.658730 +vt 0.217391 0.698413 +vt 0.146739 0.658730 +vt 0.130435 0.690476 +vt 0.130435 0.658730 +vt 0.146739 0.611111 +vt 0.168478 0.658730 +vt 0.065217 0.571429 +vt 0.108696 0.539683 +vt 0.108696 0.571429 +vt 0.108696 0.698413 +vt 0.065217 0.730159 +vt 0.065217 0.698413 +vt 0.130435 0.611111 +vt 0.146739 0.579365 +vt 0.130435 0.698413 +vt 0.304348 0.444444 +vt 0.304348 0.380952 +vt 0.043478 0.825397 +vt 0.304348 0.888889 +vt 0.043478 0.888889 +vt -0.000000 0.444444 +vt 0.043478 0.571429 +vt 0.043478 0.698413 +vt 0.304348 0.698413 +vt 0.304348 0.571429 +vt 0.347826 0.444444 +vt 0.065217 0.476190 +vt 0.043478 0.444444 +vt 0.065217 0.571429 +vt 0.282609 0.476190 +vt 0.282609 0.571429 +vt 0.282609 0.738095 +vt 0.304348 0.738095 +vt 0.065217 0.738095 +vt 0.065217 0.698413 +vt 0.065217 0.793651 +vt 0.304348 0.825397 +vt 0.304348 0.785714 +vt 0.282609 0.793651 +vt 0.282609 0.785714 +vt 0.043478 0.785714 +vt 0.065217 0.785714 +vt 0.652174 0.698413 +vt 0.434783 0.698413 +vt 0.500000 0.507937 +vt 0.652174 0.507937 +vt 0.695652 0.412698 +vt 0.722826 0.452381 +vt 0.391304 0.412698 +vt 0.434783 0.507937 +vt 0.364130 0.452381 +vt 0.586957 0.190476 +vt 0.652174 0.190476 +vt 0.434783 0.190476 +vt 0.500000 0.190476 +vt 0.586957 0.507937 +vt 0.434783 -0.000000 +vt 0.652174 0.000000 +vt 0.353261 0.753968 +vt 0.347826 0.706349 +vt 0.353261 0.706349 +vt 0.521739 0.952381 +vt 0.489130 0.968254 +vt 0.478261 0.952381 +vt 0.478261 0.761905 +vt 0.391304 0.952381 +vt 0.391304 0.761905 +vt 0.608696 0.761905 +vt 0.521739 0.761905 +vt 0.347826 0.952381 +vt 0.347826 0.761905 +vt 0.391304 0.753968 +vt 0.385870 0.706349 +vt 0.391304 0.706349 +vt 0.891304 0.206349 +vt 0.847826 0.301587 +vt 0.847826 0.206349 +vt 0.782609 0.206349 +vt 0.739130 0.269841 +vt 0.739130 0.206349 +vt 0.934783 0.269841 +vt 0.891304 0.301587 +vt 0.804348 0.269841 +vt 0.804348 0.206349 +vt 0.782609 0.269841 +vt 0.739130 0.301587 +vt 0.353261 0.706349 +vt 0.385870 0.753968 +vt 0.353261 0.753968 +vt 0.782609 0.301587 +vt 0.782609 0.396825 +vt 0.956522 0.301587 +vt 0.847826 0.396825 +vt 0.891304 0.396825 +vt 0.385870 0.761905 +vt 0.385870 0.753968 +vt 0.472826 0.706349 +vt 0.478261 0.698413 +vt 0.391304 0.698413 +vt 0.396739 0.753968 +vt 0.429348 0.753968 +vt 0.440217 0.706349 +vt 0.440217 0.753968 +vt 0.347826 0.706349 +vt 0.347826 0.753968 +vt 0.385870 0.706349 +vt 0.391304 0.753968 +vt 0.402174 0.968254 +vt 0.467391 1.000000 +vt 0.402174 1.000000 +vt 0.358696 0.968254 +vt 0.608696 0.952381 +vt 0.532609 0.968254 +vt 0.385870 0.761905 +vt 0.385870 0.698413 +vt 0.385870 0.698413 +vt 0.472826 0.753968 +vt 0.429348 0.706349 +vt 0.869565 0.126984 +vt 0.913043 0.063492 +vt 0.913043 0.126984 +vt 0.869565 0.126984 +vt 0.913043 0.063492 +vt 0.913043 0.126984 +vt 0.869565 0.063492 +vt 0.913043 -0.000000 +vt 0.956522 0.063492 +vt 1.000000 -0.000000 +vt 1.000000 0.063492 +vt 0.826087 0.063492 +vt 0.869565 -0.000000 +vt 0.956522 -0.000000 +vt 0.869565 0.063492 +vt 0.913043 -0.000000 +vt 0.956522 0.063492 +vt 1.000000 -0.000000 +vt 1.000000 0.063492 +vt 0.826087 0.063492 +vt 0.869565 -0.000000 +vt 0.956522 -0.000000 +vt 0.739130 0.063492 +vt 0.695652 0.126984 +vt 0.695652 0.063492 +vt 0.739130 0.063492 +vt 0.695652 0.126984 +vt 0.695652 0.063492 +vt 0.782609 0.063492 +vt 0.826087 0.000000 +vt 0.826087 0.063492 +vt 0.739130 0.000000 +vt 0.782609 0.000000 +vt 0.652174 0.063492 +vt 0.695652 0.000000 +vt 0.782609 0.063492 +vt 0.826087 0.000000 +vt 0.826087 0.063492 +vt 0.739130 0.000000 +vt 0.782609 0.000000 +vt 0.652174 0.063492 +vt 0.695652 0.000000 +vt 0.673913 0.071429 +vt 0.652174 0.079365 +vt 0.652174 0.071429 +vt 0.673913 0.063492 +vt 0.652174 0.071429 +vt 0.652174 0.063492 +vt 0.673913 0.063492 +vt 0.652174 0.071429 +vt 0.652174 0.063492 +vt 0.673913 0.071429 +vt 0.652174 0.079365 +vt 0.652174 0.071429 +vt 0.798913 0.095238 +vt 0.771739 0.079365 +vt 0.804348 0.079365 +vt 0.766304 0.095238 +vt 0.739130 0.079365 +vt 0.831522 0.095238 +vt 0.836957 0.079365 +vt 0.864130 0.095238 +vt 0.869565 0.079365 +vt 0.842391 0.111111 +vt 0.864130 0.111111 +vt 0.777174 0.111111 +vt 0.798913 0.111111 +vt 0.869565 0.063492 +vt 0.836957 0.063492 +vt 0.804348 0.063492 +vt 0.771739 0.063492 +vt 0.809783 0.111111 +vt 0.831522 0.111111 +vt 0.744565 0.111111 +vt 0.766304 0.111111 +vt 0.739130 0.063492 +vt 0.798913 0.095238 +vt 0.771739 0.079365 +vt 0.804348 0.079365 +vt 0.766304 0.095238 +vt 0.739130 0.079365 +vt 0.831522 0.095238 +vt 0.836957 0.079365 +vt 0.864130 0.095238 +vt 0.869565 0.079365 +vt 0.842391 0.111111 +vt 0.864130 0.111111 +vt 0.777174 0.111111 +vt 0.798913 0.111111 +vt 0.869565 0.063492 +vt 0.836957 0.063492 +vt 0.804348 0.063492 +vt 0.771739 0.063492 +vt 0.809783 0.111111 +vt 0.831522 0.111111 +vt 0.744565 0.111111 +vt 0.766304 0.111111 +vt 0.739130 0.063492 +vt 0.239130 0.730159 +vt 0.282609 0.539683 +vt 0.201087 0.690476 +vt 0.217391 0.579365 +vt 0.179348 0.611111 +vt 0.217391 0.571429 +vt 0.146739 0.690476 +vt 0.168478 0.611111 +vt 0.065217 0.539683 +vt 0.108696 0.730159 +vt 0.130435 0.579365 +vt 0.130435 0.571429 +vt -0.000000 0.825397 +vt 0.043478 0.738095 +vt 0.347826 0.825397 +vt 0.282609 0.698413 +vt 0.434783 0.571429 +vt 0.652174 0.571429 +vt 0.722826 0.500000 +vt 0.739130 0.500000 +vt 0.739130 0.507937 +vt 0.739130 0.190476 +vt 0.695652 0.285714 +vt 0.739130 0.285714 +vt 0.739130 0.412698 +vt 0.739130 0.452381 +vt 0.391304 0.285714 +vt 0.347826 0.285714 +vt 0.347826 0.190476 +vt 0.347826 0.507937 +vt 0.364130 0.500000 +vt 0.347826 0.500000 +vt 0.347826 0.452381 +vt 0.347826 0.412698 +vt 0.652174 0.126984 +vt 0.434783 0.126984 +vt 0.347826 0.753968 +vt 0.510870 0.968254 +vt 0.934783 0.206349 +vt 0.956522 0.396825 +vt 0.353261 0.761905 +vt 0.396739 0.706349 +vt 0.391304 0.706349 +vt 0.467391 0.968254 +vt 0.380435 0.968254 +vt 0.597826 0.968254 +vt 0.353261 0.761905 +vt 0.353261 0.698413 +vt 0.353261 0.698413 +vt 0.826087 -0.000000 +vt 0.826087 -0.000000 +vt 0.739130 0.126984 +vt 0.739130 0.126984 +vt 0.652174 0.000000 +vt 0.652174 0.000000 +vt 0.673913 0.079365 +vt 0.673913 0.071429 +vt 0.673913 0.071429 +vt 0.673913 0.079365 +vt 0.777174 0.095238 +vt 0.744565 0.095238 +vt 0.809783 0.095238 +vt 0.842391 0.095238 +vt 0.777174 0.095238 +vt 0.744565 0.095238 +vt 0.809783 0.095238 +vt 0.842391 0.095238 +vt 0.978261 0.698413 +vt 0.967391 0.674603 +vt 0.978261 0.674603 +vt 0.945652 0.682540 +vt 0.956522 0.674603 +vt 0.956522 0.690476 +vt 0.989130 0.698413 +vt 1.000000 0.674603 +vt 1.000000 0.690476 +vt 0.967391 0.698413 +vt 0.923913 0.682540 +vt 0.913043 0.674603 +vt 0.923913 0.674603 +vt 0.989130 0.674603 +vt 0.967391 0.650794 +vt 0.913043 0.658730 +vt 0.923913 0.666667 +vt 0.989130 0.650794 +vt 0.978261 0.650794 +vt 0.945652 0.674603 +vt 0.956522 0.658730 +vt 1.000000 0.658730 +vt 0.934783 0.674603 +vt 0.945652 0.666667 +vt 0.923913 0.650794 +vt 0.934783 0.507937 +vt 0.934783 0.650794 +vt 0.956522 0.650794 +vt 0.967391 0.507937 +vt 0.913043 0.650794 +vt 0.923913 0.507937 +vt 0.989130 0.507937 +vt 0.945652 0.507937 +vt 0.945652 0.650794 +vt 0.978261 0.507937 +vt 0.956522 0.507937 +vt 1.000000 0.507937 +vt 1.000000 0.650794 +vt 0.989130 0.492063 +vt 0.978261 0.484127 +vt 0.989130 0.484127 +vt 0.934783 0.500000 +vt 0.945652 0.484127 +vt 0.978261 0.500000 +vt 0.956522 0.484127 +vt 0.923913 0.484127 +vt 0.934783 0.484127 +vt 0.967391 0.484127 +vt 0.934783 0.468254 +vt 0.967391 0.460317 +vt 0.978261 0.468254 +vt 0.989130 0.476190 +vt 0.945652 0.460317 +vt 0.956522 0.460317 +vt 1.000000 0.484127 +vt 0.913043 0.484127 +vt 0.923913 0.492063 +vt 0.923913 0.476190 +vt 0.923913 0.460317 +vt 0.934783 0.396825 +vt 0.934783 0.460317 +vt 0.967391 0.396825 +vt 0.978261 0.460317 +vt 0.989130 0.396825 +vt 0.989130 0.460317 +vt 0.913043 0.460317 +vt 0.923913 0.396825 +vt 0.945652 0.396825 +vt 1.000000 0.396825 +vt 1.000000 0.460317 +vt 0.978261 0.396825 +vt 0.956522 0.396825 +vt 0.771739 0.920635 +vt 0.782609 0.896825 +vt 0.782609 0.920635 +vt 0.793478 0.920635 +vt 0.804348 0.896825 +vt 0.804348 0.912698 +vt 0.750000 0.896825 +vt 0.760870 0.912698 +vt 0.750000 0.904762 +vt 0.771739 0.896825 +vt 0.815217 0.904762 +vt 0.771739 0.873016 +vt 0.793478 0.873016 +vt 0.793478 0.896825 +vt 0.750000 0.888889 +vt 0.760870 0.896825 +vt 0.782609 0.873016 +vt 0.815217 0.888889 +vt 0.815217 0.896825 +vt 0.739130 0.896825 +vt 0.826087 0.896825 +vt 0.804348 0.873016 +vt 0.793478 0.841270 +vt 0.804348 0.841270 +vt 0.750000 0.873016 +vt 0.760870 0.841270 +vt 0.760870 0.873016 +vt 0.739130 0.841270 +vt 0.750000 0.841270 +vt 0.771739 0.841270 +vt 0.815217 0.841270 +vt 0.815217 0.873016 +vt 0.826087 0.841270 +vt 0.826087 0.873016 +vt 0.782609 0.841270 +vt 0.760870 0.833333 +vt 0.771739 0.817460 +vt 0.782609 0.817460 +vt 0.793478 0.817460 +vt 0.815217 0.825397 +vt 0.804348 0.817460 +vt 0.815217 0.817460 +vt 0.804348 0.833333 +vt 0.750000 0.825397 +vt 0.760870 0.817460 +vt 0.793478 0.793651 +vt 0.804348 0.801587 +vt 0.750000 0.809524 +vt 0.760870 0.801587 +vt 0.771739 0.793651 +vt 0.815217 0.809524 +vt 0.782609 0.793651 +vt 0.739130 0.817460 +vt 0.750000 0.817460 +vt 0.826087 0.817460 +vt 0.760870 0.793651 +vt 0.750000 0.730159 +vt 0.760870 0.730159 +vt 0.815217 0.793651 +vt 0.826087 0.730159 +vt 0.826087 0.793651 +vt 0.771739 0.730159 +vt 0.739130 0.793651 +vt 0.750000 0.793651 +vt 0.793478 0.730159 +vt 0.804348 0.793651 +vt 0.815217 0.730159 +vt 0.782609 0.730159 +vt 0.804348 0.730159 +vt 0.760870 0.722222 +vt 0.771739 0.706349 +vt 0.771739 0.714286 +vt 0.804348 0.722222 +vt 0.815217 0.706349 +vt 0.739130 0.706349 +vt 0.750000 0.706349 +vt 0.793478 0.706349 +vt 0.804348 0.706349 +vt 0.760870 0.706349 +vt 0.826087 0.706349 +vt 0.750000 0.682540 +vt 0.760870 0.690476 +vt 0.826087 0.682540 +vt 0.771739 0.698413 +vt 0.815217 0.682540 +vt 0.793478 0.698413 +vt 0.804348 0.690476 +vt 0.782609 0.706349 +vt 0.793478 0.714286 +vt 0.782609 0.682540 +vt 0.793478 0.539683 +vt 0.793478 0.682540 +vt 0.815217 0.539683 +vt 0.826087 0.539683 +vt 0.771739 0.682540 +vt 0.782609 0.539683 +vt 0.760870 0.682540 +vt 0.771739 0.539683 +vt 0.804348 0.682540 +vt 0.739130 0.682540 +vt 0.750000 0.539683 +vt 0.804348 0.539683 +vt 0.760870 0.539683 +vt 0.760870 0.531746 +vt 0.771739 0.515873 +vt 0.804348 0.531746 +vt 0.815217 0.515873 +vt 0.815217 0.523810 +vt 0.782609 0.515873 +vt 0.793478 0.515873 +vt 0.804348 0.515873 +vt 0.750000 0.523810 +vt 0.760870 0.515873 +vt 0.793478 0.492063 +vt 0.771739 0.492063 +vt 0.815217 0.507937 +vt 0.782609 0.492063 +vt 0.804348 0.500000 +vt 0.750000 0.507937 +vt 0.760870 0.500000 +vt 0.739130 0.515873 +vt 0.750000 0.515873 +vt 0.826087 0.515873 +vt 0.815217 0.492063 +vt 0.826087 0.396825 +vt 0.826087 0.492063 +vt 0.793478 0.396825 +vt 0.739130 0.492063 +vt 0.750000 0.396825 +vt 0.750000 0.492063 +vt 0.760870 0.492063 +vt 0.771739 0.396825 +vt 0.804348 0.492063 +vt 0.815217 0.396825 +vt 0.782609 0.396825 +vt 0.804348 0.396825 +vt 0.760870 0.396825 +vt 0.858696 0.746032 +vt 0.869565 0.738095 +vt 0.869565 0.753968 +vt 0.891304 0.761905 +vt 0.880435 0.738095 +vt 0.891304 0.738095 +vt 0.913043 0.753968 +vt 0.902174 0.738095 +vt 0.913043 0.738095 +vt 0.880435 0.761905 +vt 0.836957 0.746032 +vt 0.826087 0.738095 +vt 0.836957 0.738095 +vt 0.902174 0.761905 +vt 0.880435 0.714286 +vt 0.826087 0.722222 +vt 0.836957 0.730159 +vt 0.902174 0.714286 +vt 0.891304 0.714286 +vt 0.858696 0.738095 +vt 0.869565 0.722222 +vt 0.913043 0.722222 +vt 0.847826 0.738095 +vt 0.858696 0.730159 +vt 0.836957 0.714286 +vt 0.847826 0.539683 +vt 0.847826 0.714286 +vt 0.869565 0.714286 +vt 0.880435 0.539683 +vt 0.826087 0.714286 +vt 0.836957 0.539683 +vt 0.902174 0.539683 +vt 0.858696 0.539683 +vt 0.858696 0.714286 +vt 0.891304 0.539683 +vt 0.869565 0.539683 +vt 0.913043 0.539683 +vt 0.913043 0.714286 +vt 0.891304 0.531746 +vt 0.902174 0.515873 +vt 0.902174 0.523810 +vt 0.847826 0.515873 +vt 0.858696 0.515873 +vt 0.891304 0.515873 +vt 0.869565 0.515873 +vt 0.847826 0.531746 +vt 0.836957 0.515873 +vt 0.880435 0.515873 +vt 0.847826 0.500000 +vt 0.880435 0.492063 +vt 0.891304 0.500000 +vt 0.902174 0.507937 +vt 0.858696 0.492063 +vt 0.869565 0.492063 +vt 0.913043 0.515873 +vt 0.826087 0.515873 +vt 0.836957 0.523810 +vt 0.836957 0.507937 +vt 0.836957 0.492063 +vt 0.847826 0.396825 +vt 0.847826 0.492063 +vt 0.880435 0.396825 +vt 0.891304 0.492063 +vt 0.902174 0.396825 +vt 0.902174 0.492063 +vt 0.826087 0.492063 +vt 0.836957 0.396825 +vt 0.858696 0.396825 +vt 0.913043 0.396825 +vt 0.913043 0.492063 +vt 0.891304 0.396825 +vt 0.869565 0.396825 +vt 0.771739 0.920635 +vt 0.782609 0.896825 +vt 0.782609 0.920635 +vt 0.793478 0.896825 +vt 0.804348 0.912698 +vt 0.793478 0.920635 +vt 0.750000 0.896825 +vt 0.760870 0.912698 +vt 0.750000 0.904762 +vt 0.760870 0.896825 +vt 0.804348 0.896825 +vt 0.815217 0.904762 +vt 0.771739 0.896825 +vt 0.782609 0.873016 +vt 0.793478 0.873016 +vt 0.750000 0.888889 +vt 0.771739 0.873016 +vt 0.815217 0.888889 +vt 0.815217 0.896825 +vt 0.739130 0.896825 +vt 0.826087 0.896825 +vt 0.804348 0.873016 +vt 0.793478 0.841270 +vt 0.804348 0.841270 +vt 0.750000 0.873016 +vt 0.760870 0.841270 +vt 0.760870 0.873016 +vt 0.739130 0.841270 +vt 0.750000 0.841270 +vt 0.771739 0.841270 +vt 0.815217 0.841270 +vt 0.815217 0.873016 +vt 0.826087 0.841270 +vt 0.826087 0.873016 +vt 0.782609 0.841270 +vt 0.760870 0.833333 +vt 0.771739 0.817460 +vt 0.793478 0.817460 +vt 0.815217 0.825397 +vt 0.804348 0.817460 +vt 0.815217 0.817460 +vt 0.782609 0.817460 +vt 0.804348 0.833333 +vt 0.750000 0.825397 +vt 0.760870 0.817460 +vt 0.793478 0.793651 +vt 0.804348 0.801587 +vt 0.750000 0.809524 +vt 0.760870 0.801587 +vt 0.771739 0.793651 +vt 0.815217 0.809524 +vt 0.782609 0.793651 +vt 0.739130 0.817460 +vt 0.750000 0.817460 +vt 0.826087 0.817460 +vt 0.760870 0.793651 +vt 0.750000 0.730159 +vt 0.760870 0.730159 +vt 0.815217 0.793651 +vt 0.826087 0.730159 +vt 0.826087 0.793651 +vt 0.771739 0.730159 +vt 0.739130 0.793651 +vt 0.750000 0.793651 +vt 0.793478 0.730159 +vt 0.804348 0.793651 +vt 0.815217 0.730159 +vt 0.782609 0.730159 +vt 0.804348 0.730159 +vt 0.760870 0.722222 +vt 0.771739 0.706349 +vt 0.771739 0.714286 +vt 0.804348 0.722222 +vt 0.815217 0.706349 +vt 0.739130 0.730159 +vt 0.750000 0.706349 +vt 0.793478 0.706349 +vt 0.804348 0.706349 +vt 0.760870 0.706349 +vt 0.826087 0.706349 +vt 0.750000 0.682540 +vt 0.760870 0.690476 +vt 0.815217 0.682540 +vt 0.826087 0.682540 +vt 0.771739 0.698413 +vt 0.739130 0.706349 +vt 0.793478 0.698413 +vt 0.804348 0.690476 +vt 0.782609 0.706349 +vt 0.793478 0.714286 +vt 0.782609 0.682540 +vt 0.793478 0.539683 +vt 0.793478 0.682540 +vt 0.815217 0.539683 +vt 0.826087 0.539683 +vt 0.771739 0.682540 +vt 0.782609 0.539683 +vt 0.760870 0.682540 +vt 0.771739 0.539683 +vt 0.804348 0.682540 +vt 0.739130 0.682540 +vt 0.750000 0.539683 +vt 0.804348 0.539683 +vt 0.760870 0.539683 +vt 0.760870 0.531746 +vt 0.771739 0.515873 +vt 0.815217 0.523810 +vt 0.804348 0.515873 +vt 0.815217 0.515873 +vt 0.782609 0.515873 +vt 0.804348 0.531746 +vt 0.793478 0.515873 +vt 0.750000 0.515873 +vt 0.760870 0.515873 +vt 0.793478 0.492063 +vt 0.771739 0.492063 +vt 0.815217 0.507937 +vt 0.782609 0.492063 +vt 0.804348 0.500000 +vt 0.750000 0.507937 +vt 0.760870 0.500000 +vt 0.739130 0.515873 +vt 0.750000 0.523810 +vt 0.826087 0.515873 +vt 0.815217 0.492063 +vt 0.826087 0.396825 +vt 0.826087 0.492063 +vt 0.793478 0.396825 +vt 0.739130 0.492063 +vt 0.750000 0.396825 +vt 0.750000 0.492063 +vt 0.760870 0.492063 +vt 0.771739 0.396825 +vt 0.804348 0.492063 +vt 0.815217 0.396825 +vt 0.782609 0.396825 +vt 0.804348 0.396825 +vt 0.760870 0.396825 +vt 0.913043 0.690476 +vt 0.913043 0.507937 +vt 0.913043 0.396825 +vt 0.804348 0.880952 +vt 0.760870 0.880952 +vt 0.739130 0.873016 +vt 0.739130 0.730159 +vt 0.739130 0.539683 +vt 0.739130 0.396825 +vt 0.826087 0.753968 +vt 0.826087 0.539683 +vt 0.826087 0.396825 +vt 0.804348 0.880952 +vt 0.760870 0.880952 +vt 0.739130 0.873016 +vt 0.739130 0.539683 +vt 0.739130 0.396825 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.8321 -0.5547 +vn 0.0000 0.8321 0.5547 +vn 0.0000 0.7071 -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.7071 0.7071 0.0000 +vn 0.0000 0.9239 -0.3827 +vn 0.6630 0.5293 -0.5293 +vn 0.7311 -0.6303 0.2611 +vn 0.9955 0.0670 -0.0670 +vn 0.9947 0.0948 -0.0392 +vn -0.6332 0.7150 -0.2962 +vn -0.9955 0.0670 -0.0670 +vn -0.9947 0.0948 -0.0392 +vn 0.6332 0.7150 -0.2962 +vn -0.7311 -0.6303 0.2611 +vn -0.7573 -0.4617 0.4617 +vn -0.6630 0.5293 -0.5293 +vn 0.6794 0.1447 -0.7194 +vn -0.9987 0.0196 -0.0473 +vn -0.7263 -0.1363 0.6737 +vn -0.6794 0.1447 -0.7194 +vn 0.0000 0.1866 -0.9824 +vn 0.7573 -0.4617 0.4617 +vn 0.9987 0.0196 -0.0473 +vn 0.0000 -0.1944 0.9809 +vn 0.7263 -0.1363 0.6737 +vn 0.0473 -0.0196 0.9987 +vn 0.7194 -0.1447 -0.6794 +vn -0.6737 0.1363 0.7263 +vn -0.6737 0.1363 -0.7263 +vn 0.7194 -0.1447 0.6794 +vn 0.0473 -0.0196 -0.9987 +vn 0.9824 -0.1866 0.0000 +vn 0.0670 -0.0670 -0.9955 +vn -0.4617 0.4617 -0.7573 +vn 0.5293 -0.5293 0.6630 +vn -0.4617 0.4617 0.7573 +vn 0.0670 -0.0670 0.9955 +vn 0.5293 -0.5293 -0.6630 +vn 0.0196 -0.0473 0.9987 +vn 0.1447 -0.7194 -0.6794 +vn 0.0196 -0.0473 -0.9987 +vn -0.1363 0.6737 -0.7263 +vn 0.1447 -0.7194 0.6794 +vn 0.1866 -0.9824 0.0000 +vn -0.1363 0.6737 0.7263 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.7150 0.2962 -0.6332 +vn 0.9239 0.3827 0.0000 +vn 0.7150 0.2962 0.6332 +vn 0.0670 0.0670 0.9955 +vn 0.0948 0.0392 0.9947 +vn -0.4617 -0.4617 -0.7573 +vn 0.0948 0.0392 -0.9947 +vn -0.6303 -0.2611 -0.7311 +vn 0.5293 0.5293 -0.6630 +vn -0.6303 -0.2611 0.7311 +vn 0.1447 0.7194 -0.6794 +vn 0.1447 0.7194 0.6794 +vn 0.5293 0.5293 0.6630 +vn -0.1363 -0.6737 -0.7263 +vn 0.0670 0.0670 -0.9955 +vn 0.1866 0.9824 0.0000 +vn -0.1363 -0.6737 0.7263 +vn -0.4617 -0.4617 0.7573 +vn -0.1944 -0.9809 0.0000 +vn 0.0196 0.0473 0.9987 +vn -0.1447 0.7194 0.6794 +vn -0.0196 0.0473 0.9987 +vn -0.0196 0.0473 -0.9987 +vn 0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 -0.7263 +vn -0.1447 0.7194 -0.6794 +vn 0.1363 -0.6737 0.7263 +vn -0.1866 0.9824 0.0000 +vn -0.5293 0.5293 -0.6630 +vn -0.5293 0.5293 0.6630 +vn -0.0670 0.0670 0.9955 +vn 0.4617 -0.4617 0.7573 +vn -0.0670 0.0670 -0.9955 +vn -0.7194 0.1447 0.6794 +vn -0.0473 0.0196 0.9987 +vn 0.6737 -0.1363 -0.7263 +vn -0.0473 0.0196 -0.9987 +vn -0.7194 0.1447 -0.6794 +vn 0.6737 -0.1363 0.7263 +vn -0.9824 0.1866 0.0000 +vn 0.4617 -0.4617 -0.7573 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +s off +f 51/81/23 50/82/23 49/83/23 +f 69/84/24 59/85/24 57/86/24 +f 72/87/25 58/88/25 60/89/25 +f 73/90/24 63/91/24 61/92/24 +f 76/93/25 62/94/25 64/95/25 +f 75/96/26 64/95/26 63/91/26 +f 71/97/26 60/89/26 59/85/26 +f 67/98/24 81/99/24 65/100/24 +f 68/101/26 83/102/26 67/98/26 +f 54/103/25 80/104/25 56/105/25 +f 55/106/24 77/107/24 53/108/24 +f 66/109/25 84/110/25 68/101/25 +f 56/105/26 79/111/26 55/106/26 +f 88/112/25 50/82/25 52/113/25 +f 85/114/24 51/115/24 49/116/24 +f 60/89/27 57/86/27 59/85/27 +f 64/95/27 61/92/27 63/91/27 +f 53/108/28 56/105/28 55/106/28 +f 65/100/28 68/101/28 67/98/28 +f 50/117/28 54/118/28 53/119/28 +f 57/120/27 58/121/27 52/122/27 +f 88/112/26 90/123/26 86/124/26 +f 54/118/26 90/123/26 78/125/26 +f 89/126/26 58/121/26 70/127/26 +f 74/128/26 57/120/26 62/129/26 +f 82/130/26 53/119/26 77/131/26 +f 92/132/26 87/133/26 85/114/26 +f 61/134/26 91/135/26 73/136/26 +f 92/132/26 65/137/26 81/138/26 +f 91/139/24 92/140/24 100/141/24 +f 95/142/27 71/143/27 76/144/27 +f 79/145/28 96/146/28 84/147/28 +f 95/142/29 97/148/29 93/149/29 +f 94/150/30 100/141/30 96/146/30 +f 98/151/26 99/152/26 100/141/26 +f 90/153/25 89/154/25 97/148/25 +f 284/155/28 286/156/28 283/157/28 +f 105/158/31 132/159/31 108/160/31 +f 104/161/25 107/162/25 102/163/25 +f 101/164/24 105/158/24 103/165/24 +f 103/165/27 108/160/27 104/161/27 +f 102/163/28 106/166/28 101/167/28 +f 124/168/27 125/169/27 121/170/27 +f 117/171/26 114/172/26 119/173/26 +f 120/174/23 115/175/23 118/176/23 +f 117/171/27 115/177/27 116/178/27 +f 119/173/28 113/179/28 120/180/28 +f 113/181/32 111/182/32 115/175/32 +f 126/183/23 282/184/23 127/185/23 +f 112/186/28 114/172/28 109/187/28 +f 111/188/27 116/178/27 115/177/27 +f 109/189/33 116/178/33 110/190/33 +f 124/191/25 284/155/25 128/192/25 +f 104/161/23 121/193/23 103/194/23 +f 101/195/23 123/196/23 102/163/23 +f 288/197/23 286/198/23 285/199/23 +f 122/200/28 127/185/28 123/201/28 +f 281/202/27 288/203/27 282/184/27 +f 128/192/23 283/157/23 125/169/23 +f 131/204/26 129/205/26 130/206/26 +f 107/162/34 130/207/34 106/166/34 +f 108/160/35 131/204/35 107/162/35 +f 106/208/33 129/209/33 105/158/33 +f 288/210/25 127/185/25 282/184/25 +f 126/183/24 287/211/24 281/202/24 +f 283/157/24 121/212/24 125/169/24 +f 285/199/23 124/213/23 104/161/23 +f 103/194/23 286/198/23 287/214/23 +f 290/215/26 291/216/26 289/217/26 +f 298/218/26 299/219/26 297/220/26 +f 292/221/27 293/222/27 291/216/27 +f 289/223/28 295/224/28 290/225/28 +f 290/226/25 296/227/25 292/221/25 +f 291/216/24 294/228/24 289/223/24 +f 300/229/27 301/230/27 299/219/27 +f 297/231/28 303/232/28 298/233/28 +f 298/234/25 304/235/25 300/229/25 +f 299/219/24 302/236/24 297/231/24 +f 358/237/26 359/238/26 357/239/26 +f 366/240/26 367/241/26 365/242/26 +f 360/243/27 361/244/27 359/245/27 +f 357/239/28 363/246/28 358/237/28 +f 358/237/25 364/247/25 360/243/25 +f 359/248/24 362/249/24 357/239/24 +f 368/250/27 369/251/27 367/252/27 +f 365/242/28 371/253/28 366/240/28 +f 366/240/25 372/254/25 368/250/25 +f 367/255/24 370/256/24 365/242/24 +f 414/257/26 415/258/26 413/259/26 +f 418/260/26 419/261/26 417/262/26 +f 394/263/26 395/264/26 393/265/26 +f 390/266/26 391/267/26 389/268/26 +f 387/269/26 382/270/26 383/271/26 +f 386/272/26 381/273/26 382/270/26 +f 388/274/26 383/271/26 384/275/26 +f 385/276/26 384/275/26 381/277/26 +f 380/278/28 385/276/28 379/279/28 +f 377/280/27 387/269/27 378/281/27 +f 375/282/27 384/275/27 376/283/27 +f 374/284/28 382/270/28 373/285/28 +f 378/286/24 388/274/24 380/287/24 +f 379/288/25 386/272/25 377/289/25 +f 376/283/25 383/271/25 374/284/25 +f 373/285/24 381/273/24 375/290/24 +f 411/291/26 406/292/26 407/293/26 +f 410/294/26 405/295/26 406/292/26 +f 412/296/26 407/293/26 408/297/26 +f 409/298/26 408/297/26 405/299/26 +f 404/300/28 409/298/28 403/301/28 +f 401/302/27 411/291/27 402/303/27 +f 399/304/27 408/297/27 400/305/27 +f 398/306/28 406/292/28 397/307/28 +f 402/308/24 412/296/24 404/309/24 +f 403/310/25 410/294/25 401/311/25 +f 400/305/25 407/293/25 398/306/25 +f 397/307/24 405/295/24 399/312/24 +f 51/81/23 52/113/23 50/82/23 +f 69/84/24 71/313/24 59/85/24 +f 72/87/25 70/314/25 58/88/25 +f 73/90/24 75/315/24 63/91/24 +f 76/93/25 74/316/25 62/94/25 +f 75/96/26 76/317/26 64/95/26 +f 71/97/26 72/318/26 60/89/26 +f 67/98/24 83/319/24 81/99/24 +f 68/101/26 84/320/26 83/102/26 +f 54/103/25 78/321/25 80/104/25 +f 55/106/24 79/322/24 77/107/24 +f 66/109/25 82/323/25 84/110/25 +f 56/105/26 80/324/26 79/111/26 +f 88/112/25 86/124/25 50/82/25 +f 85/114/24 87/133/24 51/115/24 +f 60/89/27 58/88/27 57/86/27 +f 64/95/27 62/94/27 61/92/27 +f 53/108/28 54/103/28 56/105/28 +f 65/100/28 66/109/28 68/101/28 +f 85/114/28 49/325/28 65/137/28 +f 49/325/28 50/117/28 53/119/28 +f 65/137/28 49/325/28 66/326/28 +f 50/117/28 86/124/28 54/118/28 +f 53/119/28 66/326/28 49/325/28 +f 52/122/27 51/327/27 57/120/27 +f 51/327/27 87/133/27 61/134/27 +f 61/134/27 62/129/27 51/327/27 +f 62/129/27 57/120/27 51/327/27 +f 58/121/27 88/112/27 52/122/27 +f 88/112/26 89/126/26 90/123/26 +f 54/118/26 86/124/26 90/123/26 +f 89/126/26 88/112/26 58/121/26 +f 74/128/26 69/328/26 57/120/26 +f 82/130/26 66/326/26 53/119/26 +f 92/132/26 91/135/26 87/133/26 +f 61/134/26 87/133/26 91/135/26 +f 92/132/26 85/114/26 65/137/26 +f 92/140/24 96/329/24 100/141/24 +f 100/141/24 99/152/24 91/139/24 +f 99/152/24 95/330/24 91/139/24 +f 75/331/27 73/332/27 91/333/27 +f 93/149/27 89/334/27 72/335/27 +f 89/334/27 70/336/27 72/335/27 +f 75/331/27 91/333/27 95/142/27 +f 69/337/27 74/338/27 76/144/27 +f 76/144/27 75/331/27 95/142/27 +f 95/142/27 93/149/27 71/143/27 +f 93/149/27 72/335/27 71/143/27 +f 71/143/27 69/337/27 76/144/27 +f 80/339/28 78/340/28 90/341/28 +f 96/146/28 92/342/28 83/343/28 +f 92/342/28 81/344/28 83/343/28 +f 80/339/28 90/341/28 94/150/28 +f 82/345/28 77/346/28 84/147/28 +f 77/346/28 79/145/28 84/147/28 +f 79/145/28 80/339/28 94/150/28 +f 96/146/28 83/343/28 84/147/28 +f 79/145/28 94/150/28 96/146/28 +f 95/142/29 99/152/29 97/148/29 +f 94/150/30 98/151/30 100/141/30 +f 98/151/26 97/148/26 99/152/26 +f 89/154/25 93/347/25 97/148/25 +f 97/148/25 98/151/25 90/153/25 +f 98/151/25 94/348/25 90/153/25 +f 284/155/28 285/349/28 286/156/28 +f 105/158/31 129/350/31 132/159/31 +f 104/161/25 108/160/25 107/162/25 +f 101/164/24 106/208/24 105/158/24 +f 103/165/27 105/158/27 108/160/27 +f 102/163/28 107/162/28 106/166/28 +f 124/168/27 128/192/27 125/169/27 +f 117/171/26 116/178/26 114/172/26 +f 120/174/23 113/181/23 115/175/23 +f 117/171/27 118/351/27 115/177/27 +f 119/173/28 114/172/28 113/179/28 +f 113/181/32 112/186/32 111/182/32 +f 126/183/23 281/202/23 282/184/23 +f 112/186/28 113/179/28 114/172/28 +f 111/188/27 110/352/27 116/178/27 +f 109/189/33 114/172/33 116/178/33 +f 124/191/25 285/353/25 284/155/25 +f 104/161/23 124/213/23 121/193/23 +f 101/195/23 122/354/23 123/196/23 +f 288/197/23 287/214/23 286/198/23 +f 122/200/28 126/183/28 127/185/28 +f 281/202/27 287/355/27 288/203/27 +f 128/192/23 284/155/23 283/157/23 +f 131/204/26 132/356/26 129/205/26 +f 107/162/34 131/357/34 130/207/34 +f 108/160/35 132/356/35 131/204/35 +f 106/208/33 130/358/33 129/209/33 +f 288/210/25 123/359/25 127/185/25 +f 126/183/24 122/360/24 287/211/24 +f 283/157/24 286/361/24 121/212/24 +f 104/161/23 102/163/23 288/197/23 +f 102/163/23 123/196/23 288/197/23 +f 288/197/23 285/199/23 104/161/23 +f 122/354/23 101/195/23 287/214/23 +f 101/195/23 103/194/23 287/214/23 +f 103/194/23 121/193/23 286/198/23 +f 290/215/26 292/221/26 291/216/26 +f 298/218/26 300/229/26 299/219/26 +f 292/221/27 296/227/27 293/222/27 +f 289/223/28 294/228/28 295/224/28 +f 290/226/25 295/362/25 296/227/25 +f 291/216/24 293/222/24 294/228/24 +f 300/229/27 304/235/27 301/230/27 +f 297/231/28 302/236/28 303/232/28 +f 298/234/25 303/363/25 304/235/25 +f 299/219/24 301/230/24 302/236/24 +f 358/237/26 360/364/26 359/238/26 +f 366/240/26 368/365/26 367/241/26 +f 360/243/27 364/247/27 361/244/27 +f 357/239/28 362/249/28 363/246/28 +f 358/237/25 363/246/25 364/247/25 +f 359/248/24 361/366/24 362/249/24 +f 368/250/27 372/254/27 369/251/27 +f 365/242/28 370/256/28 371/253/28 +f 366/240/25 371/253/25 372/254/25 +f 367/255/24 369/367/24 370/256/24 +f 414/257/26 416/368/26 415/258/26 +f 418/260/26 420/369/26 419/261/26 +f 394/263/26 396/370/26 395/264/26 +f 390/266/26 392/371/26 391/267/26 +f 387/269/26 386/372/26 382/270/26 +f 386/272/26 385/373/26 381/273/26 +f 388/274/26 387/374/26 383/271/26 +f 385/276/26 388/375/26 384/275/26 +f 380/278/28 388/375/28 385/276/28 +f 377/280/27 386/372/27 387/269/27 +f 375/282/27 381/277/27 384/275/27 +f 374/284/28 383/271/28 382/270/28 +f 378/286/24 387/374/24 388/274/24 +f 379/288/25 385/373/25 386/272/25 +f 376/283/25 384/275/25 383/271/25 +f 373/285/24 382/270/24 381/273/24 +f 411/291/26 410/376/26 406/292/26 +f 410/294/26 409/377/26 405/295/26 +f 412/296/26 411/378/26 407/293/26 +f 409/298/26 412/379/26 408/297/26 +f 404/300/28 412/379/28 409/298/28 +f 401/302/27 410/376/27 411/291/27 +f 399/304/27 405/299/27 408/297/27 +f 398/306/28 407/293/28 406/292/28 +f 402/308/24 411/378/24 412/296/24 +f 403/310/25 409/377/25 410/294/25 +f 400/305/25 408/297/25 407/293/25 +f 397/307/24 406/292/24 405/295/24 +s 1 +f 133/380/36 147/381/37 141/382/31 +f 138/383/38 146/384/39 139/385/40 +f 134/386/41 143/387/42 135/388/43 +f 139/385/40 147/381/37 140/389/44 +f 136/390/45 143/391/42 144/392/46 +f 133/380/36 142/393/47 134/386/41 +f 146/384/39 154/394/48 147/381/37 +f 144/392/46 150/395/49 151/396/50 +f 141/382/31 149/397/51 142/393/47 +f 147/381/37 148/398/52 141/382/31 +f 145/399/53 153/400/54 146/384/39 +f 143/387/42 149/397/51 150/401/49 +f 137/402/55 145/399/53 138/383/38 +f 136/390/45 144/392/46 137/402/55 +f 144/392/46 151/396/50 137/402/55 +f 145/399/53 137/402/55 152/403/56 +f 151/404/50 155/405/57 137/406/55 +f 153/407/54 162/408/58 154/394/48 +f 150/409/49 159/410/59 151/404/50 +f 148/398/52 157/411/60 149/397/51 +f 137/406/55 160/412/61 152/413/56 +f 154/394/48 156/414/62 148/398/52 +f 152/413/56 161/415/63 153/407/54 +f 149/397/51 158/416/33 150/417/49 +f 157/418/60 164/419/64 165/420/65 +f 155/421/57 167/422/66 160/412/61 +f 162/408/58 164/419/64 156/423/62 +f 160/412/61 168/424/32 161/415/63 +f 155/421/57 166/425/67 163/426/68 +f 162/408/58 168/424/32 169/427/69 +f 166/425/67 170/428/70 163/426/68 +f 168/424/32 176/429/71 169/427/69 +f 165/420/65 171/430/72 172/431/73 +f 163/426/68 174/432/74 167/422/66 +f 164/419/64 176/429/71 171/430/72 +f 167/422/66 175/433/75 168/424/32 +f 157/418/60 165/420/65 158/434/33 +f 165/420/65 172/431/73 158/434/33 +f 158/435/33 166/425/67 159/436/59 +f 166/425/67 158/435/33 173/437/76 +f 173/438/76 178/439/28 170/440/70 +f 175/433/75 184/441/77 176/429/71 +f 171/442/72 180/443/31 172/444/73 +f 158/445/33 181/446/34 173/438/76 +f 170/440/70 182/447/78 174/432/74 +f 172/444/73 177/448/26 158/449/33 +f 176/429/71 179/450/27 171/442/72 +f 174/432/74 183/451/23 175/433/75 +f 192/452/79 198/453/35 191/454/80 +f 190/455/81 196/456/82 189/457/83 +f 194/458/84 185/459/85 186/460/86 +f 185/459/85 199/461/87 192/452/79 +f 198/453/35 190/455/81 191/454/80 +f 196/456/82 188/462/88 189/457/83 +f 206/463/89 198/453/35 199/461/87 +f 204/464/90 196/456/82 197/465/91 +f 201/466/92 193/467/93 194/458/84 +f 193/467/93 206/463/89 199/461/87 +f 205/468/94 197/465/91 198/453/35 +f 196/456/82 202/469/95 195/470/96 +f 186/460/86 187/471/97 194/458/84 +f 187/472/97 188/462/88 195/470/96 +f 195/470/96 202/469/95 187/472/97 +f 194/458/84 187/471/97 201/466/92 +f 203/473/98 212/474/99 211/475/100 +f 201/476/92 208/477/101 200/478/102 +f 201/476/92 207/479/32 209/480/103 +f 200/478/102 214/481/104 206/463/89 +f 205/468/94 212/474/99 204/464/90 +f 203/473/98 210/482/105 202/483/95 +f 202/483/95 207/484/32 187/485/97 +f 206/463/89 213/486/106 205/468/94 +f 208/487/101 221/488/107 214/481/104 +f 212/474/99 220/489/33 219/490/108 +f 210/491/105 218/492/109 217/493/110 +f 213/486/106 221/488/107 220/489/33 +f 211/494/100 219/490/108 218/492/109 +f 209/495/103 215/496/111 208/487/101 +f 218/492/109 226/497/112 225/498/113 +f 215/496/111 223/499/114 222/500/115 +f 215/496/111 228/501/116 221/488/107 +f 220/489/33 226/497/112 219/490/108 +f 218/492/109 224/502/117 217/493/110 +f 220/489/33 228/501/116 227/503/118 +f 207/504/32 216/505/119 209/495/103 +f 216/505/119 207/504/32 223/499/114 +f 210/491/105 217/493/110 207/506/32 +f 217/493/110 224/502/117 207/506/32 +f 222/507/115 231/508/58 230/509/62 +f 224/510/117 229/511/63 207/512/32 +f 222/507/115 236/513/60 228/501/116 +f 207/514/32 231/508/58 223/515/114 +f 227/503/118 234/516/59 226/497/112 +f 225/517/113 232/518/61 224/510/117 +f 228/501/116 235/519/33 227/503/118 +f 225/517/113 234/516/59 233/520/57 +f 230/521/62 243/522/65 236/523/60 +f 233/524/57 240/525/66 232/518/61 +f 231/508/58 237/526/32 239/527/69 +f 233/524/57 242/528/67 241/529/68 +f 230/521/62 239/527/69 238/530/64 +f 232/518/61 237/531/32 229/511/63 +f 238/530/64 246/532/71 245/533/72 +f 240/525/66 244/534/75 237/531/32 +f 238/530/64 250/535/73 243/522/65 +f 241/529/68 247/536/74 240/525/66 +f 237/526/32 246/532/71 239/527/69 +f 241/529/68 249/537/76 248/538/70 +f 236/523/60 243/522/65 235/539/33 +f 243/522/65 250/535/73 235/539/33 +f 234/540/59 235/539/33 242/528/67 +f 242/528/67 235/539/33 249/537/76 +f 235/541/33 257/542/99 249/543/76 +f 244/534/75 255/544/105 252/545/32 +f 250/546/73 251/547/106 235/541/33 +f 245/548/72 258/549/104 250/546/73 +f 248/550/70 255/544/105 247/536/74 +f 244/551/75 254/552/103 246/532/71 +f 248/550/70 257/542/99 256/553/100 +f 245/548/72 254/552/103 253/554/101 +f 253/555/101 265/556/107 258/549/104 +f 256/557/100 262/558/110 255/559/105 +f 251/547/106 265/556/107 259/560/33 +f 256/557/100 264/561/108 263/562/109 +f 254/563/103 260/564/111 253/555/101 +f 251/547/106 264/561/108 257/542/99 +f 259/560/33 271/565/112 264/561/108 +f 260/564/111 272/566/116 265/556/107 +f 263/562/109 269/567/117 262/558/110 +f 265/556/107 266/568/118 259/560/33 +f 263/562/109 271/565/112 270/569/113 +f 260/564/111 268/570/114 267/571/115 +f 252/572/32 261/573/119 254/563/103 +f 261/573/119 252/572/32 268/570/114 +f 255/559/105 262/558/110 252/574/32 +f 262/558/110 269/567/117 252/574/32 +f 269/575/117 273/576/25 252/577/32 +f 266/568/118 279/578/120 271/565/112 +f 252/579/32 276/580/121 268/581/114 +f 267/582/115 280/583/122 272/566/116 +f 270/584/113 277/585/123 269/575/117 +f 272/566/116 274/586/24 266/568/118 +f 270/584/113 279/578/120 278/587/28 +f 267/582/115 276/580/121 275/588/27 +f 310/589/38 318/590/39 311/591/40 +f 305/592/36 319/593/37 313/594/31 +f 307/595/43 314/596/47 315/597/42 +f 311/591/40 319/593/37 312/598/44 +f 308/599/45 315/600/42 316/601/46 +f 306/602/41 313/594/31 314/596/47 +f 318/590/39 326/603/48 319/593/37 +f 316/601/46 322/604/49 323/605/50 +f 313/594/31 321/606/51 314/596/47 +f 313/594/31 326/603/48 320/607/52 +f 317/608/53 325/609/54 318/590/39 +f 315/597/42 321/606/51 322/610/49 +f 309/611/55 317/608/53 310/589/38 +f 308/599/45 316/601/46 309/611/55 +f 316/601/46 323/605/50 309/611/55 +f 317/608/53 309/611/55 324/612/56 +f 323/613/50 327/614/57 309/615/55 +f 325/616/54 334/617/58 326/603/48 +f 322/618/49 331/619/59 323/613/50 +f 320/607/52 329/620/60 321/606/51 +f 309/615/55 332/621/61 324/622/56 +f 326/603/48 328/623/62 320/607/52 +f 324/622/56 333/624/63 325/616/54 +f 321/606/51 330/625/33 322/626/49 +f 328/627/62 337/628/65 329/629/60 +f 332/621/61 335/630/68 339/631/66 +f 334/617/58 336/632/64 328/627/62 +f 332/621/61 340/633/32 333/624/63 +f 327/634/57 338/635/67 335/630/68 +f 333/624/63 341/636/69 334/617/58 +f 338/635/67 342/637/70 335/630/68 +f 340/633/32 348/638/71 341/636/69 +f 337/628/65 343/639/72 344/640/73 +f 339/631/66 342/637/70 346/641/74 +f 341/636/69 343/639/72 336/632/64 +f 339/631/66 347/642/75 340/633/32 +f 329/629/60 337/628/65 330/643/33 +f 337/628/65 344/640/73 330/643/33 +f 330/644/33 338/635/67 331/645/59 +f 338/635/67 330/644/33 345/646/76 +f 345/647/76 350/648/28 342/649/70 +f 347/642/75 356/650/77 348/638/71 +f 343/651/72 352/652/31 344/653/73 +f 330/654/33 353/655/34 345/647/76 +f 342/649/70 354/656/78 346/641/74 +f 344/653/73 349/657/26 330/658/33 +f 348/638/71 351/659/27 343/651/72 +f 346/641/74 355/660/23 347/642/75 +f 428/661/79 434/662/35 427/663/80 +f 433/664/91 425/665/83 426/666/81 +f 430/667/84 421/668/85 422/669/86 +f 429/670/93 428/661/79 421/668/85 +f 434/662/35 426/666/81 427/663/80 +f 432/671/82 424/672/88 425/665/83 +f 435/673/87 441/674/94 434/662/35 +f 440/675/90 432/671/82 433/664/91 +f 437/676/92 429/670/93 430/667/84 +f 429/670/93 442/677/89 435/673/87 +f 434/662/35 440/675/90 433/664/91 +f 432/671/82 438/678/95 431/679/96 +f 422/669/86 423/680/97 430/667/84 +f 423/681/97 424/672/88 431/679/96 +f 431/679/96 438/678/95 423/681/97 +f 430/667/84 423/680/97 437/676/92 +f 439/682/98 448/683/99 447/684/100 +f 437/685/92 444/686/101 436/687/102 +f 437/685/92 443/688/32 445/689/103 +f 436/687/102 450/690/104 442/677/89 +f 441/674/94 448/683/99 440/675/90 +f 439/682/98 446/691/105 438/692/95 +f 438/692/95 443/693/32 423/694/97 +f 442/677/89 449/695/106 441/674/94 +f 444/696/101 457/697/107 450/690/104 +f 449/695/106 455/698/108 448/683/99 +f 446/699/105 454/700/109 453/701/110 +f 450/690/104 456/702/33 449/695/106 +f 447/703/100 455/698/108 454/700/109 +f 445/704/103 451/705/111 444/696/101 +f 454/700/109 462/706/112 461/707/113 +f 451/705/111 459/708/114 458/709/115 +f 451/705/111 464/710/116 457/697/107 +f 456/702/33 462/706/112 455/698/108 +f 454/700/109 460/711/117 453/701/110 +f 457/697/107 463/712/118 456/702/33 +f 443/713/32 452/714/119 445/704/103 +f 452/714/119 443/713/32 459/708/114 +f 446/699/105 453/701/110 443/715/32 +f 453/701/110 460/711/117 443/715/32 +f 458/716/115 467/717/58 466/718/62 +f 460/719/117 465/720/63 443/721/32 +f 458/716/115 472/722/60 464/710/116 +f 443/723/32 467/717/58 459/724/114 +f 463/712/118 470/725/59 462/706/112 +f 461/726/113 468/727/61 460/719/117 +f 464/710/116 471/728/33 463/712/118 +f 461/726/113 470/725/59 469/729/57 +f 466/730/62 479/731/65 472/732/60 +f 469/733/57 476/734/66 468/727/61 +f 465/735/63 475/736/69 467/717/58 +f 469/733/57 478/737/67 477/738/68 +f 466/730/62 475/736/69 474/739/64 +f 468/727/61 473/740/32 465/720/63 +f 474/739/64 482/741/71 481/742/72 +f 473/740/32 483/743/74 480/744/75 +f 474/739/64 486/745/73 479/731/65 +f 477/738/68 483/743/74 476/734/66 +f 473/746/32 482/741/71 475/736/69 +f 477/738/68 485/747/76 484/748/70 +f 472/732/60 479/731/65 471/749/33 +f 479/731/65 486/745/73 471/749/33 +f 470/750/59 471/749/33 478/737/67 +f 478/737/67 471/749/33 485/747/76 +f 471/751/33 493/752/99 485/753/76 +f 480/744/75 491/754/105 488/755/32 +f 486/756/73 487/757/106 471/751/33 +f 481/758/72 494/759/104 486/756/73 +f 484/760/70 491/754/105 483/743/74 +f 480/761/75 490/762/103 482/741/71 +f 484/760/70 493/752/99 492/763/100 +f 481/758/72 490/762/103 489/764/101 +f 489/765/101 501/766/107 494/759/104 +f 491/767/105 499/768/109 498/769/110 +f 487/757/106 501/766/107 495/770/33 +f 492/771/100 500/772/108 499/768/109 +f 489/765/101 497/773/119 496/774/111 +f 487/757/106 500/772/108 493/752/99 +f 495/770/33 507/775/112 500/772/108 +f 496/774/111 508/776/116 501/766/107 +f 499/768/109 505/777/117 498/769/110 +f 495/770/33 508/776/116 502/778/118 +f 499/768/109 507/775/112 506/779/113 +f 496/774/111 504/780/114 503/781/115 +f 488/782/32 497/773/119 490/783/103 +f 497/773/119 488/782/32 504/780/114 +f 491/767/105 498/769/110 488/784/32 +f 498/769/110 505/777/117 488/784/32 +f 505/785/117 509/786/25 488/787/32 +f 502/778/118 515/788/120 507/775/112 +f 488/789/32 512/790/121 504/791/114 +f 503/792/115 516/793/122 508/776/116 +f 506/794/113 513/795/123 505/785/117 +f 508/776/116 510/796/24 502/778/118 +f 506/794/113 515/788/120 514/797/28 +f 503/792/115 512/790/121 511/798/27 +f 133/380/36 140/389/44 147/381/37 +f 138/383/38 145/399/53 146/384/39 +f 134/386/41 142/393/47 143/387/42 +f 139/385/40 146/384/39 147/381/37 +f 136/390/45 135/799/43 143/391/42 +f 133/380/36 141/382/31 142/393/47 +f 146/384/39 153/400/54 154/394/48 +f 144/392/46 143/391/42 150/395/49 +f 141/382/31 148/398/52 149/397/51 +f 147/381/37 154/394/48 148/398/52 +f 145/399/53 152/403/56 153/400/54 +f 143/387/42 142/393/47 149/397/51 +f 151/404/50 159/410/59 155/405/57 +f 153/407/54 161/415/63 162/408/58 +f 150/409/49 158/800/33 159/410/59 +f 148/398/52 156/414/62 157/411/60 +f 137/406/55 155/405/57 160/412/61 +f 154/394/48 162/408/58 156/414/62 +f 152/413/56 160/412/61 161/415/63 +f 149/397/51 157/411/60 158/416/33 +f 157/418/60 156/423/62 164/419/64 +f 155/421/57 163/426/68 167/422/66 +f 162/408/58 169/427/69 164/419/64 +f 160/412/61 167/422/66 168/424/32 +f 155/421/57 159/436/59 166/425/67 +f 162/408/58 161/415/63 168/424/32 +f 166/425/67 173/437/76 170/428/70 +f 168/424/32 175/433/75 176/429/71 +f 165/420/65 164/419/64 171/430/72 +f 163/426/68 170/428/70 174/432/74 +f 164/419/64 169/427/69 176/429/71 +f 167/422/66 174/432/74 175/433/75 +f 173/438/76 181/446/34 178/439/28 +f 175/433/75 183/451/23 184/441/77 +f 171/442/72 179/450/27 180/443/31 +f 158/445/33 177/801/26 181/446/34 +f 170/440/70 178/439/28 182/447/78 +f 172/444/73 180/443/31 177/448/26 +f 176/429/71 184/441/77 179/450/27 +f 174/432/74 182/447/78 183/451/23 +f 192/452/79 199/461/87 198/453/35 +f 190/455/81 197/465/91 196/456/82 +f 194/458/84 193/467/93 185/459/85 +f 185/459/85 193/467/93 199/461/87 +f 198/453/35 197/465/91 190/455/81 +f 196/456/82 195/470/96 188/462/88 +f 206/463/89 205/468/94 198/453/35 +f 204/464/90 203/802/98 196/456/82 +f 201/466/92 200/803/102 193/467/93 +f 193/467/93 200/803/102 206/463/89 +f 205/468/94 204/464/90 197/465/91 +f 196/456/82 203/802/98 202/469/95 +f 203/473/98 204/464/90 212/474/99 +f 201/476/92 209/480/103 208/477/101 +f 201/476/92 187/804/97 207/479/32 +f 200/478/102 208/477/101 214/481/104 +f 205/468/94 213/486/106 212/474/99 +f 203/473/98 211/475/100 210/482/105 +f 202/483/95 210/482/105 207/484/32 +f 206/463/89 214/481/104 213/486/106 +f 208/487/101 215/496/111 221/488/107 +f 212/474/99 213/486/106 220/489/33 +f 210/491/105 211/494/100 218/492/109 +f 213/486/106 214/481/104 221/488/107 +f 211/494/100 212/474/99 219/490/108 +f 209/495/103 216/505/119 215/496/111 +f 218/492/109 219/490/108 226/497/112 +f 215/496/111 216/505/119 223/499/114 +f 215/496/111 222/500/115 228/501/116 +f 220/489/33 227/503/118 226/497/112 +f 218/492/109 225/498/113 224/502/117 +f 220/489/33 221/488/107 228/501/116 +f 222/507/115 223/515/114 231/508/58 +f 224/510/117 232/518/61 229/511/63 +f 222/507/115 230/509/62 236/513/60 +f 207/514/32 229/805/63 231/508/58 +f 227/503/118 235/519/33 234/516/59 +f 225/517/113 233/520/57 232/518/61 +f 228/501/116 236/513/60 235/519/33 +f 225/517/113 226/497/112 234/516/59 +f 230/521/62 238/530/64 243/522/65 +f 233/524/57 241/529/68 240/525/66 +f 231/508/58 229/805/63 237/526/32 +f 233/524/57 234/540/59 242/528/67 +f 230/521/62 231/508/58 239/527/69 +f 232/518/61 240/525/66 237/531/32 +f 238/530/64 239/527/69 246/532/71 +f 240/525/66 247/536/74 244/534/75 +f 238/530/64 245/533/72 250/535/73 +f 241/529/68 248/538/70 247/536/74 +f 237/526/32 244/551/75 246/532/71 +f 241/529/68 242/528/67 249/537/76 +f 235/541/33 251/547/106 257/542/99 +f 244/534/75 247/536/74 255/544/105 +f 250/546/73 258/549/104 251/547/106 +f 245/548/72 253/554/101 258/549/104 +f 248/550/70 256/553/100 255/544/105 +f 244/551/75 252/806/32 254/552/103 +f 248/550/70 249/543/76 257/542/99 +f 245/548/72 246/532/71 254/552/103 +f 253/555/101 260/564/111 265/556/107 +f 256/557/100 263/562/109 262/558/110 +f 251/547/106 258/549/104 265/556/107 +f 256/557/100 257/542/99 264/561/108 +f 254/563/103 261/573/119 260/564/111 +f 251/547/106 259/560/33 264/561/108 +f 259/560/33 266/568/118 271/565/112 +f 260/564/111 267/571/115 272/566/116 +f 263/562/109 270/569/113 269/567/117 +f 265/556/107 272/566/116 266/568/118 +f 263/562/109 264/561/108 271/565/112 +f 260/564/111 261/573/119 268/570/114 +f 269/575/117 277/585/123 273/576/25 +f 266/568/118 274/586/24 279/578/120 +f 252/579/32 273/807/25 276/580/121 +f 267/582/115 275/588/27 280/583/122 +f 270/584/113 278/587/28 277/585/123 +f 272/566/116 280/583/122 274/586/24 +f 270/584/113 271/565/112 279/578/120 +f 267/582/115 268/581/114 276/580/121 +f 310/589/38 317/608/53 318/590/39 +f 305/592/36 312/598/44 319/593/37 +f 307/595/43 306/602/41 314/596/47 +f 311/591/40 318/590/39 319/593/37 +f 308/599/45 307/808/43 315/600/42 +f 306/602/41 305/592/36 313/594/31 +f 318/590/39 325/609/54 326/603/48 +f 316/601/46 315/600/42 322/604/49 +f 313/594/31 320/607/52 321/606/51 +f 313/594/31 319/593/37 326/603/48 +f 317/608/53 324/612/56 325/609/54 +f 315/597/42 314/596/47 321/606/51 +f 323/613/50 331/619/59 327/614/57 +f 325/616/54 333/624/63 334/617/58 +f 322/618/49 330/809/33 331/619/59 +f 320/607/52 328/623/62 329/620/60 +f 309/615/55 327/614/57 332/621/61 +f 326/603/48 334/617/58 328/623/62 +f 324/622/56 332/621/61 333/624/63 +f 321/606/51 329/620/60 330/625/33 +f 328/627/62 336/632/64 337/628/65 +f 332/621/61 327/634/57 335/630/68 +f 334/617/58 341/636/69 336/632/64 +f 332/621/61 339/631/66 340/633/32 +f 327/634/57 331/645/59 338/635/67 +f 333/624/63 340/633/32 341/636/69 +f 338/635/67 345/646/76 342/637/70 +f 340/633/32 347/642/75 348/638/71 +f 337/628/65 336/632/64 343/639/72 +f 339/631/66 335/630/68 342/637/70 +f 341/636/69 348/638/71 343/639/72 +f 339/631/66 346/641/74 347/642/75 +f 345/647/76 353/655/34 350/648/28 +f 347/642/75 355/660/23 356/650/77 +f 343/651/72 351/659/27 352/652/31 +f 330/654/33 349/810/26 353/655/34 +f 342/649/70 350/648/28 354/656/78 +f 344/653/73 352/652/31 349/657/26 +f 348/638/71 356/650/77 351/659/27 +f 346/641/74 354/656/78 355/660/23 +f 428/661/79 435/673/87 434/662/35 +f 433/664/91 432/671/82 425/665/83 +f 430/667/84 429/670/93 421/668/85 +f 429/670/93 435/673/87 428/661/79 +f 434/662/35 433/664/91 426/666/81 +f 432/671/82 431/679/96 424/672/88 +f 435/673/87 442/677/89 441/674/94 +f 440/675/90 439/811/98 432/671/82 +f 437/676/92 436/812/102 429/670/93 +f 429/670/93 436/812/102 442/677/89 +f 434/662/35 441/674/94 440/675/90 +f 432/671/82 439/811/98 438/678/95 +f 439/682/98 440/675/90 448/683/99 +f 437/685/92 445/689/103 444/686/101 +f 437/685/92 423/813/97 443/688/32 +f 436/687/102 444/686/101 450/690/104 +f 441/674/94 449/695/106 448/683/99 +f 439/682/98 447/684/100 446/691/105 +f 438/692/95 446/691/105 443/693/32 +f 442/677/89 450/690/104 449/695/106 +f 444/696/101 451/705/111 457/697/107 +f 449/695/106 456/702/33 455/698/108 +f 446/699/105 447/703/100 454/700/109 +f 450/690/104 457/697/107 456/702/33 +f 447/703/100 448/683/99 455/698/108 +f 445/704/103 452/714/119 451/705/111 +f 454/700/109 455/698/108 462/706/112 +f 451/705/111 452/714/119 459/708/114 +f 451/705/111 458/709/115 464/710/116 +f 456/702/33 463/712/118 462/706/112 +f 454/700/109 461/707/113 460/711/117 +f 457/697/107 464/710/116 463/712/118 +f 458/716/115 459/724/114 467/717/58 +f 460/719/117 468/727/61 465/720/63 +f 458/716/115 466/718/62 472/722/60 +f 443/723/32 465/735/63 467/717/58 +f 463/712/118 471/728/33 470/725/59 +f 461/726/113 469/729/57 468/727/61 +f 464/710/116 472/722/60 471/728/33 +f 461/726/113 462/706/112 470/725/59 +f 466/730/62 474/739/64 479/731/65 +f 469/733/57 477/738/68 476/734/66 +f 465/735/63 473/746/32 475/736/69 +f 469/733/57 470/750/59 478/737/67 +f 466/730/62 467/717/58 475/736/69 +f 468/727/61 476/734/66 473/740/32 +f 474/739/64 475/736/69 482/741/71 +f 473/740/32 476/734/66 483/743/74 +f 474/739/64 481/742/72 486/745/73 +f 477/738/68 484/748/70 483/743/74 +f 473/746/32 480/761/75 482/741/71 +f 477/738/68 478/737/67 485/747/76 +f 471/751/33 487/757/106 493/752/99 +f 480/744/75 483/743/74 491/754/105 +f 486/756/73 494/759/104 487/757/106 +f 481/758/72 489/764/101 494/759/104 +f 484/760/70 492/763/100 491/754/105 +f 480/761/75 488/814/32 490/762/103 +f 484/760/70 485/753/76 493/752/99 +f 481/758/72 482/741/71 490/762/103 +f 489/765/101 496/774/111 501/766/107 +f 491/767/105 492/771/100 499/768/109 +f 487/757/106 494/759/104 501/766/107 +f 492/771/100 493/752/99 500/772/108 +f 489/765/101 490/783/103 497/773/119 +f 487/757/106 495/770/33 500/772/108 +f 495/770/33 502/778/118 507/775/112 +f 496/774/111 503/781/115 508/776/116 +f 499/768/109 506/779/113 505/777/117 +f 495/770/33 501/766/107 508/776/116 +f 499/768/109 500/772/108 507/775/112 +f 496/774/111 497/773/119 504/780/114 +f 505/785/117 513/795/123 509/786/25 +f 502/778/118 510/796/24 515/788/120 +f 488/789/32 509/815/25 512/790/121 +f 503/792/115 511/798/27 516/793/122 +f 506/794/113 514/797/28 513/795/123 +f 508/776/116 516/793/122 510/796/24 +f 506/794/113 507/775/112 515/788/120 +f 503/792/115 504/791/114 512/790/121 diff --git a/src/main/resources/assets/hbm/models/machines/telex.obj b/src/main/resources/assets/hbm/models/machines/telex.obj new file mode 100644 index 000000000..ae7237edb --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/telex.obj @@ -0,0 +1,451 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +o Cube.001 +v 0.500000 0.000000 1.500000 +v 0.500000 0.625000 1.500000 +v 0.125000 1.000000 1.500000 +v -0.500000 1.000000 1.500000 +v -0.500000 0.000000 1.500000 +v 0.500000 0.000000 1.125000 +v 0.500000 0.625000 1.125000 +v 0.125000 1.000000 1.125000 +v 0.125000 0.625000 1.125000 +v -0.500000 1.000000 1.125000 +v 0.125000 0.625000 0.250000 +v 0.125000 1.000000 0.250000 +v 0.500000 0.625000 0.250000 +v 0.125000 1.000000 -0.500000 +v 0.500000 0.625000 -0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 0.000000 0.250000 +v -0.500000 1.000000 0.250000 +v -0.500000 1.000000 -0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.000000 0.250000 +v -0.500000 0.000000 1.125000 +v -0.187500 1.000000 -0.437500 +v -0.437500 1.000000 -0.437500 +v -0.437500 1.000000 0.062500 +v -0.187500 1.000000 0.062500 +v -0.187500 1.312500 -0.437500 +v -0.187500 1.312500 0.062500 +v -0.437500 1.312500 0.062500 +v -0.437500 1.312500 -0.437500 +v -0.375000 1.062500 0.062500 +v -0.312500 1.062500 0.062500 +v -0.312500 1.062500 0.125000 +v -0.375000 1.062500 0.187500 +v -0.312500 1.000000 0.062500 +v -0.312500 1.000000 0.125000 +v -0.375000 1.000000 0.062500 +v -0.375000 1.000000 0.187500 +v -0.125000 1.062500 0.125000 +v -0.125000 1.062500 0.187500 +v -0.125000 1.000000 0.125000 +v -0.125000 1.000000 0.187500 +v 0.000000 1.062500 0.125000 +v -0.062500 1.062500 0.125000 +v -0.062500 1.187500 0.125000 +v 0.000000 1.187500 0.125000 +v 0.062500 1.000000 0.250000 +v 0.062500 1.000000 0.062500 +v 0.062500 1.062500 0.062500 +v 0.062500 1.062500 0.250000 +v -0.125000 1.000000 0.062500 +v -0.125000 1.000000 0.250000 +v -0.125000 1.062500 0.250000 +v -0.125000 1.062500 0.062500 +v -0.062500 1.062500 0.187500 +v 0.000000 1.062500 0.187500 +v 0.000000 1.187500 0.187500 +v -0.062500 1.187500 0.187500 +v -0.093750 1.187500 0.093750 +v 0.031250 1.187500 0.093750 +v 0.031250 1.187500 0.218750 +v -0.093750 1.187500 0.218750 +v -0.093750 1.437500 0.093750 +v -0.093750 1.437500 0.218750 +v 0.031250 1.437500 0.218750 +v 0.031250 1.437500 0.093750 +v -0.312500 1.812500 0.000000 +v -0.375000 1.812500 0.000000 +v -0.375000 1.812500 -0.062500 +v -0.312500 1.812500 -0.062500 +v -0.375000 1.312500 -0.062500 +v -0.312500 1.312500 -0.062500 +v -0.312500 1.312500 0.000000 +v -0.375000 1.312500 0.000000 +v 0.312500 0.812500 -0.312500 +v 0.312500 0.812500 0.062500 +v 0.375000 0.875000 0.062500 +v 0.375000 0.875000 -0.312500 +v 0.562500 0.875000 0.062500 +v 0.562500 0.875000 -0.312500 +v 0.625000 0.812500 0.062500 +v 0.625000 0.812500 -0.312500 +v 0.625000 0.625000 0.062500 +v 0.625000 0.625000 -0.312500 +v 0.562500 0.562500 0.062500 +v 0.562500 0.562500 -0.312500 +v 0.562500 0.375000 0.062500 +v 0.562500 0.375000 -0.312500 +v 0.625000 0.312500 0.062500 +v 0.625000 0.312500 -0.312500 +v 0.625000 0.125000 0.062500 +v 0.625000 0.125000 -0.312500 +v 0.562500 0.062500 -0.312500 +v 0.562500 0.062500 0.062500 +vt 0.656250 0.250000 +vt 0.500000 0.250000 +vt 0.500000 -0.000000 +vt 0.000000 -0.000000 +vt 0.093750 0.156250 +vt -0.000000 0.156250 +vt 0.093750 0.250000 +vt 0.500000 0.500000 +vt 0.593750 0.500000 +vt 0.500000 0.593750 +vt 0.593750 0.500000 +vt 0.500000 0.343750 +vt 0.593750 0.343750 +vt 0.687500 0.500000 +vt 0.593750 0.500000 +vt 0.687500 0.593750 +vt 0.312500 0.156250 +vt 0.500000 0.250000 +vt 0.500000 0.156250 +vt 0.312500 0.156250 +vt 0.500000 -0.000000 +vt 0.500000 0.156250 +vt 0.093750 0.000000 +vt 0.593750 0.250000 +vt 0.812500 0.343750 +vt 0.593750 0.343750 +vt 0.093750 0.156250 +vt 0.312500 0.250000 +vt 1.000000 0.343750 +vt 0.812500 0.500000 +vt 0.812500 0.343750 +vt 1.000000 -0.000000 +vt 0.843750 0.250000 +vt 0.750000 0.156250 +vt 0.093750 0.250000 +vt 0.312500 0.500000 +vt 0.312500 0.250000 +vt 0.093750 0.500000 +vt -0.000000 0.250000 +vt -0.000000 0.500000 +vt 0.500000 0.250000 +vt 0.500000 0.500000 +vt 0.093750 0.750000 +vt 0.312500 0.750000 +vt 0.093750 0.500000 +vt 0.285714 0.500000 +vt 0.000000 1.000000 +vt 0.285714 1.000000 +vt 0.250000 0.750000 +vt 0.125000 0.812500 +vt 0.250000 0.812500 +vt 0.312500 0.828125 +vt 0.250000 0.750000 +vt 0.312500 0.750000 +vt 0.187500 0.828125 +vt 0.250000 0.906250 +vt 0.187500 0.906250 +vt 0.187500 0.828125 +vt 0.062500 0.906250 +vt 0.187500 0.906250 +vt 0.125000 0.828125 +vt 0.000000 0.750000 +vt 0.125000 0.750000 +vt 0.437500 0.875000 +vt 0.421875 0.859375 +vt 0.437500 0.859375 +vt 0.437500 0.859375 +vt 0.453125 0.843750 +vt 0.437500 0.843750 +vt 0.437500 0.890625 +vt 0.406250 0.875000 +vt 0.406250 0.890625 +vt 0.406250 0.812500 +vt 0.406250 0.875000 +vt 0.100000 1.000000 +vt 0.000000 0.900000 +vt 0.000000 1.000000 +vt 0.437500 0.812500 +vt 0.421875 0.859375 +vt 0.390625 0.812500 +vt 0.406250 0.875000 +vt 0.406250 0.812500 +vt 0.406250 0.750000 +vt 0.390625 0.781250 +vt 0.390625 0.750000 +vt 0.453125 0.750000 +vt 0.406250 0.765625 +vt 0.406250 0.750000 +vt 0.406250 0.765625 +vt 0.453125 0.750000 +vt 0.453125 0.765625 +vt 0.453125 0.750000 +vt 0.406250 0.765625 +vt 0.406250 0.750000 +vt 0.406250 0.765625 +vt 0.453125 0.750000 +vt 0.453125 0.765625 +vt 0.421875 0.781250 +vt 0.406250 0.750000 +vt 0.421875 0.765625 +vt 0.453125 0.750000 +vt 0.437500 0.765625 +vt 0.453125 0.796875 +vt 0.437500 0.781250 +vt 0.406250 0.796875 +vt 0.390625 0.781250 +vt 0.406250 0.750000 +vt 0.406250 0.781250 +vt 0.390625 0.781250 +vt 0.406250 0.750000 +vt 0.406250 0.781250 +vt 0.390625 0.781250 +vt 0.406250 0.750000 +vt 0.406250 0.781250 +vt 0.437500 0.750000 +vt 0.406250 0.781250 +vt 0.406250 0.750000 +vt 0.343750 0.875000 +vt 0.375000 0.906250 +vt 0.343750 0.906250 +vt 0.343750 0.812500 +vt 0.312500 0.875000 +vt 0.312500 0.812500 +vt 0.312500 0.812500 +vt 0.343750 0.875000 +vt 0.343750 0.812500 +vt 0.312500 0.812500 +vt 0.343750 0.875000 +vt 0.343750 0.812500 +vt 0.468750 0.859375 +vt 0.484375 0.875000 +vt 0.484375 0.859375 +vt 0.484375 0.875000 +vt 0.468750 0.750000 +vt 0.484375 0.750000 +vt 0.484375 0.875000 +vt 0.468750 0.750000 +vt 0.484375 0.750000 +vt 0.484375 0.875000 +vt 0.468750 0.750000 +vt 0.484375 0.750000 +vt 0.468750 0.750000 +vt 0.484375 0.750000 +vt 0.687500 0.750000 +vt 0.781250 0.765625 +vt 0.781250 0.750000 +vt 0.687500 0.703125 +vt 0.781250 0.750000 +vt 0.781250 0.703125 +vt 0.687500 0.687500 +vt 0.781250 0.703125 +vt 0.781250 0.687500 +vt 0.687500 0.687500 +vt 0.781250 0.640625 +vt 0.781250 0.687500 +vt 0.687500 0.640625 +vt 0.781250 0.625000 +vt 0.687500 0.625000 +vt 0.781250 0.578125 +vt 0.781250 0.562500 +vt 0.687500 0.578125 +vt 0.687500 0.562500 +vt 0.687500 0.515625 +vt 0.781250 0.500000 +vt 0.687500 0.515625 +vt 0.781250 0.515625 +vt 0.750000 -0.000000 +vt 0.750000 0.156250 +vt -0.000000 0.250000 +vt 0.500000 0.500000 +vt 0.312500 0.250000 +vt 0.312500 0.000000 +vt 0.812500 0.250000 +vt 0.312500 0.156250 +vt 1.000000 0.500000 +vt 0.750000 0.000000 +vt 1.000000 0.250000 +vt 0.500000 0.750000 +vt 0.500000 0.500000 +vt 0.312500 0.500000 +vt 0.000000 0.500000 +vt -0.000000 0.750000 +vt 0.000000 0.500000 +vt 0.125000 0.750000 +vt 0.250000 0.828125 +vt 0.250000 0.828125 +vt 0.062500 0.828125 +vt 0.000000 0.828125 +vt 0.453125 0.859375 +vt 0.437500 0.875000 +vt 0.421875 0.812500 +vt 0.100000 0.900000 +vt 0.421875 0.812500 +vt 0.390625 0.875000 +vt 0.406250 0.781250 +vt 0.453125 0.765625 +vt 0.453125 0.765625 +vt 0.406250 0.750000 +vt 0.390625 0.750000 +vt 0.390625 0.750000 +vt 0.390625 0.750000 +vt 0.437500 0.781250 +vt 0.375000 0.875000 +vt 0.312500 0.875000 +vt 0.312500 0.875000 +vt 0.468750 0.875000 +vt 0.468750 0.875000 +vt 0.468750 0.875000 +vt 0.468750 0.875000 +vt 0.687500 0.765625 +vt 0.687500 0.750000 +vt 0.687500 0.703125 +vt 0.781250 0.515625 +vt 0.687500 0.500000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +s off +f 3/1/1 4/2/1 5/3/1 +f 1/4/2 7/5/2 2/6/2 +f 8/7/3 2/6/3 7/5/3 +f 9/8/4 8/9/4 7/10/4 +f 10/11/5 3/12/5 8/13/5 +f 11/14/1 13/15/1 12/16/1 +f 12/17/3 15/18/3 14/19/3 +f 13/20/2 16/21/2 15/22/2 +f 6/23/2 13/20/2 7/5/2 +f 7/24/5 11/25/5 9/26/5 +f 9/27/2 12/28/2 8/7/2 +f 14/29/5 18/30/5 12/31/5 +f 20/32/4 14/33/4 15/34/4 +f 12/31/5 10/11/5 8/13/5 +f 22/35/6 18/36/6 21/37/6 +f 10/38/6 5/39/6 4/40/6 +f 20/41/6 18/36/6 19/42/6 +f 22/43/7 21/44/7 6/45/7 +f 26/46/7 24/47/7 23/48/7 +f 30/49/5 28/50/5 27/51/5 +f 30/52/4 23/53/4 24/54/4 +f 28/55/1 25/56/1 26/57/1 +f 29/58/6 24/59/6 25/60/6 +f 27/61/2 26/62/2 23/63/2 +f 31/64/5 33/65/5 32/66/5 +f 33/67/2 35/68/2 32/69/2 +f 38/70/6 31/71/6 37/72/6 +f 40/73/5 33/65/5 34/74/5 +f 42/75/2 39/76/2 40/77/2 +f 39/78/4 36/79/4 33/67/4 +f 38/80/1 40/81/1 34/82/1 +f 44/83/4 46/84/4 43/85/4 +f 48/86/2 50/87/2 47/88/2 +f 52/89/6 54/90/6 51/91/6 +f 51/92/4 49/93/4 48/94/4 +f 47/95/1 53/96/1 52/97/1 +f 44/98/5 53/99/5 55/100/5 +f 55/100/5 50/101/5 56/102/5 +f 56/102/5 49/103/5 43/104/5 +f 43/104/5 54/105/5 44/98/5 +f 56/106/1 58/107/1 55/108/1 +f 43/109/2 57/110/2 56/111/2 +f 55/112/6 45/113/6 44/114/6 +f 60/115/7 62/116/7 59/117/7 +f 64/118/5 66/119/5 63/120/5 +f 60/121/2 65/122/2 61/123/2 +f 62/124/6 63/125/6 59/126/6 +f 59/127/4 66/128/4 60/121/4 +f 61/123/1 64/118/1 62/129/1 +f 70/130/5 68/131/5 67/132/5 +f 69/133/4 72/134/4 71/135/4 +f 67/136/1 74/137/1 73/138/1 +f 70/139/2 73/140/2 72/141/2 +f 68/131/6 71/142/6 74/143/6 +f 76/144/8 78/145/8 75/146/8 +f 77/147/5 80/148/5 78/149/5 +f 79/150/3 82/151/3 80/152/3 +f 81/153/2 84/154/2 82/155/2 +f 83/156/9 86/157/9 84/154/9 +f 85/158/2 88/159/2 86/157/2 +f 90/160/3 87/161/3 89/162/3 +f 91/163/2 90/160/2 89/162/2 +f 92/164/9 94/165/9 93/166/9 +f 5/3/1 1/167/1 2/168/1 +f 2/168/1 3/1/1 5/3/1 +f 1/4/2 6/23/2 7/5/2 +f 8/7/3 3/169/3 2/6/3 +f 10/11/5 4/170/5 3/12/5 +f 12/17/3 13/171/3 15/18/3 +f 13/20/2 17/172/2 16/21/2 +f 6/23/2 17/172/2 13/20/2 +f 7/24/5 13/173/5 11/25/5 +f 9/27/2 11/174/2 12/28/2 +f 14/29/5 19/175/5 18/30/5 +f 15/34/4 16/176/4 20/32/4 +f 20/32/4 19/177/4 14/33/4 +f 12/31/5 18/30/5 10/11/5 +f 22/35/6 10/38/6 18/36/6 +f 10/38/6 22/35/6 5/39/6 +f 20/41/6 21/37/6 18/36/6 +f 20/178/7 16/179/7 17/180/7 +f 6/45/7 1/181/7 5/182/7 +f 20/178/7 17/180/7 21/44/7 +f 17/180/7 6/45/7 21/44/7 +f 5/182/7 22/43/7 6/45/7 +f 26/46/7 25/183/7 24/47/7 +f 30/49/5 29/184/5 28/50/5 +f 30/52/4 27/185/4 23/53/4 +f 28/55/1 29/186/1 25/56/1 +f 29/58/6 30/187/6 24/59/6 +f 27/61/2 28/188/2 26/62/2 +f 31/64/5 34/74/5 33/65/5 +f 33/67/2 36/189/2 35/68/2 +f 38/70/6 34/190/6 31/71/6 +f 40/73/5 39/191/5 33/65/5 +f 42/75/2 41/192/2 39/76/2 +f 39/78/4 41/193/4 36/79/4 +f 38/80/1 42/194/1 40/81/1 +f 44/83/4 45/195/4 46/84/4 +f 48/86/2 49/196/2 50/87/2 +f 52/89/6 53/99/6 54/90/6 +f 51/92/4 54/197/4 49/93/4 +f 47/95/1 50/198/1 53/96/1 +f 44/98/5 54/105/5 53/99/5 +f 55/100/5 53/99/5 50/101/5 +f 56/102/5 50/101/5 49/103/5 +f 43/104/5 49/103/5 54/105/5 +f 56/106/1 57/199/1 58/107/1 +f 43/109/2 46/200/2 57/110/2 +f 55/112/6 58/201/6 45/113/6 +f 60/115/7 61/202/7 62/116/7 +f 64/118/5 65/203/5 66/119/5 +f 60/121/2 66/128/2 65/122/2 +f 62/124/6 64/204/6 63/125/6 +f 59/127/4 63/205/4 66/128/4 +f 61/123/1 65/122/1 64/118/1 +f 70/130/5 69/206/5 68/131/5 +f 69/133/4 70/207/4 72/134/4 +f 67/136/1 68/208/1 74/137/1 +f 70/139/2 67/209/2 73/140/2 +f 68/131/6 69/206/6 71/142/6 +f 76/144/8 77/210/8 78/145/8 +f 77/147/5 79/211/5 80/148/5 +f 79/150/3 81/212/3 82/151/3 +f 81/153/2 83/156/2 84/154/2 +f 83/156/9 85/158/9 86/157/9 +f 85/158/2 87/161/2 88/159/2 +f 90/160/3 88/159/3 87/161/3 +f 91/163/2 92/213/2 90/160/2 +f 92/164/9 91/214/9 94/165/9 diff --git a/src/main/resources/assets/hbm/models/machines/wood_burner.obj b/src/main/resources/assets/hbm/models/machines/wood_burner.obj new file mode 100644 index 000000000..9d9085591 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/wood_burner.obj @@ -0,0 +1,1112 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +o Cylinder +v -0.292386 1.031250 0.845970 +v -0.465753 1.031250 0.917385 +v -0.465753 0.968750 0.917385 +v -0.292386 0.968750 0.845970 +v -0.187500 0.687500 0.937500 +v -0.187500 0.625000 1.000000 +v 0.187500 0.625000 1.000000 +v 0.187500 0.687500 0.937500 +v 0.163320 0.625000 0.875000 +v 0.000000 0.788320 0.875000 +v -0.163321 0.625000 0.875000 +v 0.000000 0.461679 0.875000 +v -0.438154 3.562500 -0.500000 +v -0.500000 3.562500 -0.561846 +v -0.561846 3.562500 -0.500000 +v -0.500000 3.562500 -0.438154 +v 0.687500 0.875000 -0.625000 +v 0.687500 0.875000 -0.250000 +v 0.687500 0.687500 -0.250000 +v 0.687500 0.000000 -0.250000 +v 0.687500 0.000000 -0.625000 +v -0.687500 0.000000 -0.250000 +v 0.562500 0.687500 -0.250000 +v -0.562500 0.687500 -0.250000 +v -0.687500 0.687500 -0.250000 +v -0.297517 0.484684 0.750000 +v -0.362222 0.372612 0.750000 +v 0.000000 0.275555 0.750000 +v 0.000000 0.404965 0.750000 +v -0.297518 1.515315 -0.812500 +v 0.297517 1.515316 -0.812500 +v 0.595035 1.000000 -0.812500 +v -0.297517 0.484685 -0.812500 +v -0.595035 1.000000 0.750000 +v -0.515316 1.297517 0.750000 +v -0.627388 1.362222 0.750000 +v -0.724444 1.000000 0.750000 +v -0.627387 0.637778 0.750000 +v -0.515315 0.702482 0.750000 +v -0.187500 0.687500 -0.625000 +v -0.187500 0.687500 -1.000000 +v -0.312500 0.687500 -1.000000 +v -0.562500 0.687500 -0.625000 +v -0.297518 1.515315 0.750000 +v -0.362223 1.627387 0.750000 +v 0.000000 0.404965 -0.750000 +v 0.000000 0.275556 -0.750000 +v -0.362222 0.372613 -0.750000 +v -0.297517 0.484685 -0.750000 +v 0.000000 1.595035 -0.750000 +v 0.000000 1.724445 -0.750000 +v 0.362222 1.627387 -0.750000 +v 0.297517 1.515316 -0.750000 +v -0.595035 1.000000 -0.750000 +v -0.515315 0.702482 -0.750000 +v -0.627387 0.637778 -0.750000 +v -0.724444 1.000000 -0.750000 +v -0.627388 1.362222 -0.750000 +v -0.515316 1.297517 -0.750000 +v -0.297518 1.515315 -0.750000 +v -0.362223 1.627387 -0.750000 +v 0.595035 1.000000 0.750000 +v 0.724444 1.000000 0.750000 +v 0.627387 1.362222 0.750000 +v 0.515315 1.297517 0.750000 +v -0.115485 0.740485 0.875000 +v -0.115485 0.740485 0.812500 +v -0.163321 0.625000 0.812500 +v 0.312500 1.156250 0.799556 +v 0.356694 1.156250 0.843750 +v 0.356694 1.031250 0.843750 +v 0.312500 1.031250 0.799556 +v 0.687500 0.875000 0.250000 +v 0.687500 0.875000 0.625000 +v 0.687500 -0.000000 0.625000 +v 0.687500 -0.000000 0.250000 +v 0.000000 1.430084 0.875000 +v 0.000000 1.430084 0.937500 +v 0.044194 1.385889 0.937500 +v 0.044194 1.385889 0.875000 +v -0.312500 1.187500 0.875000 +v -0.312500 1.187500 0.812500 +v -0.312500 0.812500 0.812500 +v -0.312500 0.812500 0.875000 +v 0.687500 0.687500 -1.000000 +v 0.687500 0.687500 -0.750000 +v 0.687500 0.000000 -0.750000 +v 0.687500 0.000000 -1.000000 +v 0.515315 0.702482 -0.750000 +v 0.627387 0.637778 -0.750000 +v 0.362222 0.372613 -0.750000 +v 0.297518 0.484685 -0.750000 +v 0.297517 1.515315 0.750000 +v 0.362222 1.627387 0.750000 +v 0.000000 1.724444 0.750000 +v 0.000000 1.595035 0.750000 +v 0.515315 0.702482 0.750000 +v 0.627387 0.637778 0.750000 +v 0.297518 0.484685 0.750000 +v 0.362222 0.372613 0.750000 +v 0.595035 1.000000 -0.750000 +v 0.724444 1.000000 -0.750000 +v -0.515316 1.297517 0.812500 +v -0.515315 0.702482 0.812500 +v 0.000000 0.404965 0.812500 +v 0.515315 1.297517 0.812500 +v 0.515315 1.297518 -0.750000 +v 0.627387 1.362222 -0.750000 +v -0.687500 0.875000 0.625000 +v -0.687500 -0.000000 0.625000 +v 0.312500 1.156250 0.887944 +v 0.268306 1.156250 0.843750 +v 0.268306 1.031250 0.843750 +v 0.312500 1.031250 0.887944 +v -0.044194 1.385889 0.875000 +v -0.044194 1.385889 0.937500 +v -0.187500 0.687500 0.875000 +v 0.187500 0.687500 0.875000 +v 0.250000 1.479639 0.875000 +v -0.250000 1.479639 0.875000 +v -0.250000 1.292139 0.875000 +v 0.250000 1.292139 0.875000 +v -0.687500 0.875000 -0.250000 +v -0.562500 0.875000 -0.250000 +v 0.562500 0.000000 -0.625000 +v 0.562500 0.687500 -0.625000 +v 0.562500 0.875000 -0.625000 +v -0.687500 0.000000 -1.000000 +v -0.687500 0.687500 -1.000000 +v 0.187500 0.687500 -1.000000 +v 0.312500 0.687500 -1.000000 +v 0.187500 0.750000 -0.937500 +v 0.187500 0.687500 -0.625000 +v -0.543732 3.937500 -0.456268 +v -0.561846 3.937500 -0.500000 +v -0.595671 3.937500 -0.500000 +v -0.567650 3.937500 -0.432350 +v 0.562500 0.875000 -0.250000 +v -0.687500 0.875000 0.250000 +v -0.687500 -0.000000 0.250000 +v 0.250000 1.479639 0.812500 +v 0.250000 1.292139 0.812500 +v 0.187500 0.750000 -0.625000 +v -0.187500 0.750000 -0.937500 +v -0.187500 0.750000 -0.625000 +v 0.115485 0.509515 0.875000 +v 0.115485 0.509515 0.812500 +v 0.163320 0.625000 0.812500 +v 0.312500 1.187500 0.812500 +v 0.312500 1.187500 0.875000 +v 0.312500 0.812500 0.875000 +v 0.312500 0.812500 0.812500 +v -0.115485 0.509515 0.875000 +v -0.115485 0.509515 0.812500 +v 0.000000 0.461679 0.812500 +v -0.489558 1.031250 0.859596 +v -0.316191 1.031250 0.788181 +v -0.316191 0.968750 0.788181 +v -0.489558 0.968750 0.859596 +v 0.000000 0.788320 0.812500 +v 0.115485 0.740485 0.875000 +v 0.115485 0.740485 0.812500 +v 0.000000 1.341695 0.875000 +v 0.000000 1.341695 0.937500 +v 0.312500 0.968750 0.887944 +v 0.268306 0.968750 0.843750 +v 0.268306 0.843750 0.843750 +v 0.312500 0.843750 0.887944 +v -0.187500 -0.000000 1.000000 +v 0.187500 -0.000000 1.000000 +v -0.687500 0.000000 -0.625000 +v -0.562500 0.000000 -0.625000 +v -0.687500 0.875000 -0.625000 +v -0.562500 0.875000 -0.625000 +v 0.356694 0.843750 0.843750 +v 0.312500 0.843750 0.799556 +v -0.250000 1.479639 0.812500 +v -0.250000 1.292139 0.812500 +v 0.187500 -0.000000 0.875000 +v -0.187500 -0.000000 0.875000 +v 0.312500 0.968750 0.799556 +v 0.356694 0.968750 0.843750 +v -0.567650 3.875000 -0.432350 +v -0.595671 3.875000 -0.500000 +v -0.663320 3.875000 -0.500000 +v -0.615485 3.875000 -0.384515 +v -0.500000 3.875000 -0.336680 +v -0.500000 3.875000 -0.404329 +v -0.384515 3.875000 -0.384515 +v -0.432350 3.875000 -0.432350 +v -0.543732 3.937500 -0.543732 +v -0.500000 3.937500 -0.561846 +v -0.500000 3.937500 -0.595671 +v -0.567650 3.937500 -0.567650 +v -0.336680 3.875000 -0.500000 +v -0.404329 3.875000 -0.500000 +v -0.500000 3.875000 -0.595671 +v -0.432350 3.875000 -0.567650 +v -0.384515 3.875000 -0.615485 +v -0.500000 3.875000 -0.663320 +v -0.456268 3.937500 -0.456268 +v -0.500000 3.937500 -0.438154 +v -0.500000 3.937500 -0.404329 +v -0.432350 3.937500 -0.432350 +v -0.567650 3.875000 -0.567650 +v -0.615485 3.875000 -0.615485 +v -0.456268 3.937500 -0.543732 +v -0.438154 3.937500 -0.500000 +v -0.404329 3.937500 -0.500000 +v -0.432350 3.937500 -0.567650 +v -0.687500 0.687500 -0.750000 +v -0.687500 0.000000 -0.750000 +v 0.297517 1.515315 0.812500 +v 0.000000 1.595035 0.812500 +v -0.297518 1.515315 0.812500 +v -0.595035 1.000000 0.812500 +v -0.297517 0.484684 0.812500 +v 0.297518 0.484685 0.812500 +v 0.515315 0.702482 0.812500 +v 0.595035 1.000000 0.812500 +v 0.000000 1.595035 -0.812500 +v 0.515315 1.297518 -0.812500 +v 0.515315 0.702482 -0.812500 +v 0.297518 0.484685 -0.812500 +v 0.000000 0.404965 -0.812500 +v -0.515315 0.702482 -0.812500 +v -0.595035 1.000000 -0.812500 +v -0.515316 1.297517 -0.812500 +v -0.456268 3.562500 -0.543732 +v -0.543732 3.562500 -0.543732 +v -0.543732 3.562500 -0.456268 +v -0.456268 3.562500 -0.456268 +v -0.336680 1.000000 -0.500000 +v -0.384515 1.000000 -0.615485 +v -0.384515 1.000000 -0.384515 +v -0.500000 1.000000 -0.336680 +v -0.663320 1.000000 -0.500000 +v -0.615485 1.000000 -0.384515 +v -0.500000 1.000000 -0.663320 +v -0.615485 1.000000 -0.615485 +vt 0.151724 0.294872 +vt 0.172414 0.282051 +vt 0.172414 0.294872 +vt 0.358621 0.294872 +vt 0.400000 0.307692 +vt 0.358621 0.307692 +vt 0.141623 0.191624 +vt 0.141623 0.128949 +vt 0.158480 0.160287 +vt 0.131269 0.551147 +vt 0.130943 0.526053 +vt 0.137855 0.538297 +vt 0.972414 0.358974 +vt 0.896552 0.358974 +vt 0.896552 0.282051 +vt 0.882759 0.500000 +vt 0.758621 0.500000 +vt 0.468966 1.000000 +vt 0.503448 0.974359 +vt 0.496552 1.000000 +vt 0.608602 0.714253 +vt 0.510620 0.609091 +vt 0.608602 0.503929 +vt 0.344828 1.000000 +vt 0.379310 0.974359 +vt 0.372414 1.000000 +vt 0.386207 1.000000 +vt 0.420690 0.974359 +vt 0.413793 1.000000 +vt 0.324138 0.641026 +vt 0.337931 0.564103 +vt 0.365517 0.641026 +vt 0.303448 1.000000 +vt 0.337931 0.974359 +vt 0.331034 1.000000 +vt 0.503448 0.666667 +vt 0.468966 0.641026 +vt 0.496552 0.641026 +vt 0.255172 0.666667 +vt 0.220690 0.641026 +vt 0.248276 0.641026 +vt 0.386207 0.641026 +vt 0.420690 0.666667 +vt 0.379310 0.666667 +vt 0.344828 0.641026 +vt 0.372414 0.641026 +vt 0.303448 0.641026 +vt 0.337931 0.666667 +vt 0.296552 0.666667 +vt 0.131034 0.974359 +vt 0.165517 1.000000 +vt 0.137931 1.000000 +vt 0.462069 0.666667 +vt 0.427586 0.641026 +vt 0.455172 0.641026 +vt 0.193103 0.217949 +vt 0.206897 0.205128 +vt 0.206897 0.217949 +vt 0.289655 0.256410 +vt 0.296552 0.230769 +vt 0.296552 0.256410 +vt 0.993103 0.807692 +vt 0.896552 0.730769 +vt 0.993103 0.730769 +vt 0.131034 0.320513 +vt 0.137931 0.333333 +vt 0.131034 0.333333 +vt 0.179310 0.320513 +vt 0.186207 0.243590 +vt 0.186207 0.320513 +vt 0.200000 0.564103 +vt 0.227586 0.423077 +vt 0.227586 0.564103 +vt 0.089655 0.666667 +vt 0.055172 0.641026 +vt 0.082759 0.641026 +vt 0.213793 0.974359 +vt 0.248276 1.000000 +vt 0.220690 1.000000 +vt 0.089655 0.974359 +vt 0.124138 1.000000 +vt 0.096552 1.000000 +vt 0.048276 0.666667 +vt 0.013793 0.641026 +vt 0.041379 0.641026 +vt 0.055172 1.000000 +vt 0.082759 1.000000 +vt 0.013793 1.000000 +vt 0.048276 0.974359 +vt 0.041379 1.000000 +vt 0.262069 0.641026 +vt 0.427586 1.000000 +vt 0.462069 0.974359 +vt 0.455172 1.000000 +vt 0.124138 0.641026 +vt 0.096552 0.641026 +vt 0.520523 0.805999 +vt 0.631502 0.925110 +vt 0.520523 0.925110 +vt 0.172414 0.974359 +vt 0.206897 1.000000 +vt 0.179310 1.000000 +vt 0.255172 0.974359 +vt 0.289655 1.000000 +vt 0.262069 1.000000 +vt 0.179310 0.641026 +vt 0.213793 0.666667 +vt 0.172414 0.666667 +vt 0.744828 0.987179 +vt 0.896552 0.807692 +vt 0.896552 0.987179 +vt 0.275862 0.256410 +vt 0.282759 0.230769 +vt 0.282759 0.256410 +vt 0.124138 0.320513 +vt 0.131034 0.307692 +vt 0.400000 0.320513 +vt 0.358621 0.320513 +vt 0.137931 0.397436 +vt 0.193103 0.358974 +vt 0.193103 0.397436 +vt 0.744828 0.500000 +vt 0.758621 0.538462 +vt 0.744828 0.538462 +vt 0.882759 0.282051 +vt 0.882759 0.141026 +vt 0.137931 0.641026 +vt 0.165517 0.641026 +vt 0.413793 0.307692 +vt 0.406897 0.307692 +vt 0.400000 0.294872 +vt 0.282759 0.564103 +vt 0.268966 0.564103 +vt 0.434483 0.576923 +vt 0.427586 0.641026 +vt 0.427586 0.564103 +vt 0.044010 0.634626 +vt 0.037931 0.628205 +vt 0.044828 0.628205 +vt 0.268966 0.256410 +vt 0.275862 0.230769 +vt 0.896552 0.538462 +vt 0.896552 0.500000 +vt 0.648276 0.730769 +vt 0.744828 0.807692 +vt 0.648276 0.807692 +vt 0.200000 0.358974 +vt 0.200000 0.397436 +vt 0.475862 0.641026 +vt 0.434483 0.641026 +vt 0.227586 0.615385 +vt 0.475862 0.576923 +vt 0.482759 0.641026 +vt 0.137931 0.217949 +vt 0.151724 0.205128 +vt 0.151724 0.217949 +vt 0.255172 0.320513 +vt 0.262069 0.243590 +vt 0.262069 0.320513 +vt 0.220690 0.217949 +vt 0.234483 0.205128 +vt 0.234483 0.217949 +vt 0.255172 0.243590 +vt 0.186207 0.230769 +vt 0.255172 0.230769 +vt 0.172414 0.307692 +vt 0.151724 0.320513 +vt 0.151724 0.307692 +vt 0.179310 0.217949 +vt 0.193103 0.205128 +vt 0.200000 0.423077 +vt 0.186207 0.564103 +vt 0.186207 0.423077 +vt 0.744828 0.730769 +vt 0.165517 0.205128 +vt 0.165517 0.217949 +vt 0.137931 0.307692 +vt 0.131034 0.294872 +vt 0.137931 0.294872 +vt 0.137931 0.320513 +vt 0.144828 0.307692 +vt 0.144828 0.320513 +vt 0.275862 0.320513 +vt 0.282759 0.294872 +vt 0.282759 0.320513 +vt 0.400000 0.166667 +vt 0.758621 0.282051 +vt 0.668966 0.358974 +vt 0.648276 0.282051 +vt 0.744828 0.282051 +vt 0.144828 0.294872 +vt 0.151724 0.282051 +vt 0.275862 0.217949 +vt 0.282759 0.217949 +vt 0.289655 0.230769 +vt 0.744828 0.102564 +vt 0.758621 0.102564 +vt 0.758621 0.141026 +vt 0.275862 0.269231 +vt 0.282759 0.269231 +vt 0.275862 0.282051 +vt 0.282759 0.282051 +vt 0.131034 0.397436 +vt 0.137931 0.358974 +vt 0.358621 0.141026 +vt 0.400000 0.141026 +vt 0.255172 0.333333 +vt 0.186207 0.333333 +vt 0.413793 0.166667 +vt 0.193103 0.410256 +vt 0.137931 0.410256 +vt 0.896552 0.551282 +vt 0.744828 0.551282 +vt 0.275862 0.333333 +vt 0.282759 0.333333 +vt 0.151724 0.269231 +vt 0.172414 0.269231 +vt 0.124138 0.217949 +vt 0.137931 0.205128 +vt 0.137931 0.346154 +vt 0.193103 0.346154 +vt 0.044828 0.615385 +vt 0.034483 0.602564 +vt 0.048276 0.602564 +vt 0.051724 0.615385 +vt 0.062069 0.602564 +vt 0.058621 0.615385 +vt 0.072414 0.615385 +vt 0.065517 0.615385 +vt 0.016435 0.634626 +vt 0.010345 0.628205 +vt 0.017241 0.628205 +vt 0.079310 0.615385 +vt 0.089655 0.602564 +vt 0.086207 0.615385 +vt 0.025002 0.634626 +vt 0.031034 0.628205 +vt 0.030223 0.634626 +vt 0.106897 0.615385 +vt 0.117241 0.602564 +vt 0.113793 0.615385 +vt 0.071585 0.634626 +vt 0.065517 0.628205 +vt 0.072414 0.628205 +vt 0.179310 0.205128 +vt 0.434483 0.564103 +vt 0.475862 0.564103 +vt 0.100000 0.615385 +vt 0.093103 0.615385 +vt 0.017241 0.615385 +vt 0.006897 0.602564 +vt 0.020690 0.602564 +vt 0.024138 0.615385 +vt 0.031034 0.615385 +vt 0.099160 0.634626 +vt 0.093103 0.628205 +vt 0.100000 0.628205 +vt 0.107726 0.634626 +vt 0.113793 0.628205 +vt 0.112947 0.634626 +vt 0.052577 0.634626 +vt 0.058621 0.628205 +vt 0.057798 0.634626 +vt 0.080151 0.634626 +vt 0.086207 0.628205 +vt 0.085373 0.634626 +vt 0.220690 0.205128 +vt 0.420690 0.564103 +vt 0.406897 0.423077 +vt 0.420690 0.423077 +vt 0.289655 0.320513 +vt 0.296552 0.294872 +vt 0.296552 0.320513 +vt 0.303448 0.307692 +vt 0.344828 0.166667 +vt 0.344828 0.307692 +vt 0.268966 0.320513 +vt 0.275862 0.294872 +vt 0.289655 0.294872 +vt 0.608049 0.968708 +vt 0.576012 0.984666 +vt 0.543975 0.968708 +vt 0.511939 0.865555 +vt 0.543975 0.762401 +vt 0.576012 0.746443 +vt 0.608049 0.762401 +vt 0.631502 0.805999 +vt 0.640086 0.865555 +vt 0.575941 0.730521 +vt 0.543281 0.714253 +vt 0.519371 0.669806 +vt 0.519371 0.548376 +vt 0.543281 0.503929 +vt 0.575941 0.487661 +vt 0.632511 0.548376 +vt 0.641262 0.609091 +vt 0.632511 0.669806 +vt 0.351724 0.307692 +vt 0.282759 0.641026 +vt 0.379310 0.564103 +vt 0.379310 0.423077 +vt 0.379310 0.615385 +vt 0.241379 0.641026 +vt 0.482759 0.564103 +vt 0.153543 0.182446 +vt 0.129703 0.182446 +vt 0.124765 0.160287 +vt 0.129703 0.138128 +vt 0.153543 0.138128 +vt 0.135994 0.547258 +vt 0.126448 0.547686 +vt 0.124356 0.538902 +vt 0.126218 0.529942 +vt 0.135763 0.529514 +vt 0.227586 0.371795 +vt 0.241379 0.346154 +vt 0.993103 0.282051 +vt 0.993103 0.358974 +vt 0.744828 0.358974 +vt 0.324138 0.564103 +vt 0.296552 0.974359 +vt 0.413793 0.641026 +vt 0.331034 0.641026 +vt 0.179310 0.243590 +vt 0.006897 0.666667 +vt 0.006897 0.974359 +vt 0.289655 0.641026 +vt 0.131034 0.666667 +vt 0.206897 0.641026 +vt 0.124138 0.307692 +vt 0.882759 0.102564 +vt 0.896552 0.102564 +vt 0.038789 0.634626 +vt 0.268966 0.230769 +vt 0.882759 0.538462 +vt 0.172414 0.320513 +vt 0.358621 0.166667 +vt 0.648276 0.358974 +vt 0.144828 0.282051 +vt 0.131034 0.358974 +vt 0.124138 0.205128 +vt 0.037931 0.615385 +vt 0.075862 0.602564 +vt 0.011214 0.634626 +vt 0.024138 0.628205 +vt 0.103448 0.602564 +vt 0.066364 0.634626 +vt 0.010345 0.615385 +vt 0.093939 0.634626 +vt 0.106897 0.628205 +vt 0.051724 0.628205 +vt 0.079310 0.628205 +vt 0.406897 0.564103 +vt 0.303448 0.166667 +vt 0.268966 0.294872 +vt 0.365517 0.346154 +vt 0.379310 0.371795 +vt 0.103448 0.012821 +vt 0.372414 0.051282 +vt 0.337931 0.038462 +vt 0.372414 0.038462 +vt 0.131034 0.012821 +vt 0.165517 0.025641 +vt 0.131034 0.025641 +vt 0.158621 0.564103 +vt 0.165517 0.641026 +vt 0.158621 0.641026 +vt 0.406897 0.051282 +vt 0.406897 0.038462 +vt 0.200000 0.051282 +vt 0.165517 0.038462 +vt 0.200000 0.038462 +vt 0.089655 0.012821 +vt 0.137931 0.564103 +vt 0.144828 0.641026 +vt 0.137931 0.641026 +vt 0.234483 0.051282 +vt 0.234483 0.038462 +vt 0.165517 0.564103 +vt 0.172414 0.641026 +vt 0.151724 0.564103 +vt 0.151724 0.641026 +vt 0.124138 0.564103 +vt 0.131034 0.641026 +vt 0.124138 0.641026 +vt 0.441379 0.012821 +vt 0.475862 0.025641 +vt 0.441379 0.025641 +vt 0.075862 0.012821 +vt 0.268966 0.012821 +vt 0.303448 0.025641 +vt 0.268966 0.025641 +vt 0.048276 0.012821 +vt 0.475862 0.012821 +vt 0.510345 0.025641 +vt 0.165517 0.051282 +vt 0.131034 0.038462 +vt 0.544828 0.051282 +vt 0.510345 0.038462 +vt 0.544828 0.038462 +vt 0.200000 0.012821 +vt 0.234483 0.025641 +vt 0.200000 0.025641 +vt 0.406897 0.012821 +vt 0.406897 0.025641 +vt 0.172414 0.564103 +vt 0.179310 0.641026 +vt 0.510345 0.012821 +vt 0.544828 0.025641 +vt 0.372414 0.012821 +vt 0.372414 0.025641 +vt 0.131034 0.564103 +vt 0.144828 0.564103 +vt 0.303448 0.012821 +vt 0.337931 0.025641 +vt 0.337931 0.012821 +vt 0.234483 0.012821 +vt 0.117241 0.012821 +vt 0.337931 0.051282 +vt 0.303448 0.038462 +vt 0.268966 0.051282 +vt 0.268966 0.038462 +vt 0.062069 0.012821 +vt 0.510345 0.051282 +vt 0.475862 0.038462 +vt 0.441379 0.051282 +vt 0.441379 0.038462 +vt 0.475862 0.051282 +vt 0.020690 0.012821 +vt 0.034483 0.012821 +vt 0.165517 0.012821 +vt 0.303448 0.051282 +vt 0.131034 0.051282 +vt 0.179310 0.564103 +vt 0.544828 0.012821 +vt 0.006897 0.012821 +vn 0.3809 0.0000 0.9246 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.9239 0.3827 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.7071 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.9239 -0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.3809 0.0000 -0.9246 +vn -0.3827 0.9239 0.0000 +vn 0.7071 -0.0000 0.7071 +vn 0.9239 0.3827 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.9246 0.0000 0.3809 +vn 0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.9239 -0.3827 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 -0.8660 -0.0000 +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 +s off +f 2/1/1 4/2/1 1/3/1 +f 6/4/2 8/5/2 5/6/2 +f 10/7/3 12/8/3 9/9/3 +f 14/10/4 16/11/4 13/12/4 +f 19/13/5 20/14/5 21/15/5 +f 20/14/3 23/16/3 24/17/3 +f 26/18/3 28/19/3 29/20/3 +f 30/21/6 32/22/6 33/23/6 +f 35/24/3 37/25/3 34/26/3 +f 34/27/3 38/28/3 39/29/3 +f 40/30/4 42/31/4 43/32/4 +f 44/33/3 36/34/3 35/35/3 +f 47/36/6 49/37/6 46/38/6 +f 51/39/6 53/40/6 50/41/6 +f 54/42/6 56/43/6 57/44/6 +f 57/44/6 59/45/6 54/46/6 +f 60/47/6 58/48/6 61/49/6 +f 63/50/3 65/51/3 62/52/3 +f 48/53/6 55/54/6 49/55/6 +f 66/56/7 68/57/7 11/58/7 +f 70/59/8 72/60/8 69/61/8 +f 74/62/5 76/63/5 73/64/5 +f 78/65/9 80/66/9 77/67/9 +f 82/68/10 84/69/10 81/70/10 +f 86/71/5 88/72/5 85/73/5 +f 90/74/6 92/75/6 89/76/6 +f 94/77/3 96/78/3 93/79/3 +f 98/80/3 62/81/3 97/82/3 +f 91/83/6 46/84/6 92/85/6 +f 99/86/3 98/80/3 97/87/3 +f 29/88/3 100/89/3 99/90/3 +f 50/91/6 61/49/6 51/39/6 +f 39/92/3 27/93/3 26/94/3 +f 101/95/6 90/74/6 89/96/6 +f 104/97/3 106/98/3 103/99/3 +f 64/100/3 93/101/3 65/102/3 +f 95/103/3 44/104/3 96/105/3 +f 107/106/6 52/107/6 108/108/6 +f 109/109/3 75/110/3 74/111/3 +f 112/112/11 114/113/11 111/114/11 +f 77/115/12 116/116/12 78/65/12 +f 5/6/4 118/117/4 117/118/4 +f 120/119/3 122/120/3 119/121/3 +f 25/122/3 124/123/3 123/124/3 +f 21/15/6 125/125/6 126/126/6 +f 108/108/6 101/127/6 107/128/6 +f 118/129/5 8/130/5 7/131/5 +f 130/132/6 131/133/6 88/72/6 +f 132/134/5 133/135/5 130/136/5 +f 134/137/4 136/138/4 137/139/4 +f 69/140/13 113/141/13 112/112/13 +f 18/142/3 23/16/3 19/143/3 +f 139/144/10 110/145/10 109/146/10 +f 119/121/5 142/147/5 141/148/5 +f 132/134/4 145/149/4 143/150/4 +f 86/151/4 85/73/4 131/133/4 +f 144/152/10 40/153/10 145/149/10 +f 146/154/14 148/155/14 9/156/14 +f 150/157/5 152/158/5 149/159/5 +f 153/160/15 155/161/15 12/162/15 +f 151/163/16 83/164/16 152/165/16 +f 157/166/17 159/167/17 156/168/17 +f 10/169/18 67/170/18 66/56/18 +f 87/171/19 126/172/19 125/173/19 +f 75/110/16 140/174/16 76/63/16 +f 9/156/20 162/175/20 161/176/20 +f 164/177/21 115/178/21 163/179/21 +f 79/180/22 163/181/22 80/182/22 +f 166/183/11 168/184/11 165/185/11 +f 6/4/3 170/186/3 7/131/3 +f 172/187/16 125/125/16 20/14/16 +f 25/188/10 173/189/10 171/190/10 +f 156/191/23 3/192/23 2/1/23 +f 79/180/3 116/116/3 164/177/3 +f 114/113/16 72/193/16 71/194/16 +f 111/114/19 71/195/19 70/59/19 +f 173/196/6 174/197/6 43/198/6 +f 69/199/4 111/114/4 70/200/4 +f 168/184/16 176/201/16 175/202/16 +f 177/203/10 121/204/10 120/119/10 +f 170/186/16 180/205/16 179/206/16 +f 81/70/4 149/207/4 82/208/4 +f 179/209/5 7/131/5 170/186/5 +f 120/119/4 141/210/4 177/211/4 +f 73/212/6 140/174/6 139/213/6 +f 181/214/4 165/185/4 182/215/4 +f 4/2/16 159/216/16 158/217/16 +f 81/70/3 151/163/3 150/157/3 +f 12/218/24 147/219/24 146/154/24 +f 122/120/16 178/220/16 142/221/16 +f 183/222/4 185/223/4 186/224/4 +f 183/225/4 187/226/4 188/227/4 +f 187/226/4 190/228/4 188/229/4 +f 191/230/4 193/231/4 194/232/4 +f 190/233/4 195/234/4 196/235/4 +f 191/236/4 136/237/4 135/238/4 +f 198/239/4 200/240/4 197/241/4 +f 201/242/4 203/243/4 204/244/4 +f 161/176/25 160/245/25 10/169/25 +f 144/152/26 130/246/26 41/247/26 +f 195/234/4 198/248/4 196/249/4 +f 205/250/4 200/251/4 206/252/4 +f 205/253/4 185/223/4 184/254/4 +f 207/255/4 209/256/4 210/257/4 +f 207/258/4 193/259/4 192/260/4 +f 134/261/4 203/262/4 202/263/4 +f 201/264/4 209/265/4 208/266/4 +f 2/1/4 157/166/4 156/168/4 +f 11/58/27 154/267/27 153/160/27 +f 43/268/11 212/269/11 172/270/11 +f 182/271/8 176/272/8 181/273/8 +f 118/274/6 180/275/6 117/276/6 +f 181/277/13 167/278/13 166/183/13 +f 165/185/19 175/279/19 182/271/19 +f 106/98/3 213/280/3 103/99/3 +f 213/280/3 214/281/3 103/99/3 +f 214/281/3 215/282/3 103/99/3 +f 103/99/3 216/283/3 104/97/3 +f 104/97/3 217/284/3 105/285/3 +f 105/285/3 218/286/3 219/287/3 +f 219/287/3 220/288/3 105/285/3 +f 220/288/3 106/98/3 105/285/3 +f 30/21/6 221/289/6 31/290/6 +f 31/290/6 222/291/6 32/22/6 +f 32/22/6 223/292/6 224/293/6 +f 224/293/6 225/294/6 32/22/6 +f 225/294/6 33/23/6 32/22/6 +f 33/23/6 226/295/6 227/296/6 +f 227/296/6 228/297/6 33/23/6 +f 228/297/6 30/21/6 33/23/6 +f 6/4/10 5/298/10 117/276/10 +f 180/275/10 6/4/10 117/276/10 +f 133/299/4 131/133/4 130/132/4 +f 132/134/5 143/150/5 133/135/5 +f 212/269/10 129/300/10 128/301/10 +f 42/31/4 129/300/4 211/302/4 +f 211/302/4 43/32/4 42/31/4 +f 126/303/4 86/151/4 131/133/4 +f 144/152/10 41/304/10 40/153/10 +f 9/9/3 161/305/3 10/7/3 +f 10/7/3 66/306/3 11/307/3 +f 11/307/3 153/308/3 12/8/3 +f 12/8/3 146/309/3 9/9/3 +f 13/12/4 229/310/4 14/10/4 +f 14/10/4 230/311/4 15/312/4 +f 15/312/4 231/313/4 16/11/4 +f 16/11/4 232/314/4 13/12/4 +f 88/72/16 87/315/16 125/316/16 +f 2/1/1 3/192/1 4/2/1 +f 6/4/2 7/131/2 8/5/2 +f 10/7/3 11/307/3 12/8/3 +f 14/10/4 15/312/4 16/11/4 +f 21/15/5 17/317/5 19/13/5 +f 17/317/5 18/318/5 19/13/5 +f 25/122/3 22/319/3 24/17/3 +f 22/319/3 20/14/3 24/17/3 +f 20/14/3 19/143/3 23/16/3 +f 26/18/3 27/93/3 28/19/3 +f 30/21/6 31/290/6 32/22/6 +f 35/24/3 36/34/3 37/25/3 +f 34/27/3 37/25/3 38/28/3 +f 40/30/4 41/320/4 42/31/4 +f 44/33/3 45/321/3 36/34/3 +f 47/36/6 48/53/6 49/37/6 +f 51/39/6 52/107/6 53/40/6 +f 54/42/6 55/322/6 56/43/6 +f 57/44/6 58/48/6 59/45/6 +f 60/47/6 59/323/6 58/48/6 +f 63/50/3 64/100/3 65/51/3 +f 48/53/6 56/43/6 55/54/6 +f 66/56/7 67/170/7 68/57/7 +f 70/59/8 71/195/8 72/60/8 +f 74/62/5 75/110/5 76/63/5 +f 78/65/9 79/180/9 80/66/9 +f 82/68/10 83/324/10 84/69/10 +f 86/71/5 87/171/5 88/72/5 +f 90/74/6 91/83/6 92/75/6 +f 94/77/3 95/103/3 96/78/3 +f 98/80/3 63/50/3 62/81/3 +f 91/83/6 47/325/6 46/84/6 +f 99/86/3 100/89/3 98/80/3 +f 29/88/3 28/326/3 100/89/3 +f 50/91/6 60/327/6 61/49/6 +f 39/92/3 38/28/3 27/93/3 +f 101/95/6 102/328/6 90/74/6 +f 104/97/3 105/285/3 106/98/3 +f 64/100/3 94/77/3 93/101/3 +f 95/103/3 45/321/3 44/104/3 +f 107/106/6 53/329/6 52/107/6 +f 109/109/3 110/145/3 75/110/3 +f 112/112/11 113/141/11 114/113/11 +f 77/115/12 115/330/12 116/116/12 +f 5/6/4 8/5/4 118/117/4 +f 120/119/3 121/204/3 122/120/3 +f 25/122/3 24/17/3 124/123/3 +f 127/331/6 17/332/6 126/126/6 +f 17/332/6 21/15/6 126/126/6 +f 108/108/6 102/328/6 101/127/6 +f 88/72/6 128/301/6 41/320/6 +f 128/301/6 129/300/6 42/31/6 +f 42/31/6 41/320/6 128/301/6 +f 41/320/6 130/132/6 88/72/6 +f 131/133/6 85/73/6 88/72/6 +f 134/137/4 135/333/4 136/138/4 +f 69/140/13 72/334/13 113/141/13 +f 18/142/3 138/335/3 23/16/3 +f 139/144/10 140/174/10 110/145/10 +f 119/121/5 122/120/5 142/147/5 +f 132/134/4 144/152/4 145/149/4 +f 146/154/14 147/219/14 148/155/14 +f 150/157/5 151/163/5 152/158/5 +f 153/160/15 154/267/15 155/161/15 +f 151/163/16 84/69/16 83/164/16 +f 157/166/17 158/336/17 159/167/17 +f 10/169/18 160/245/18 67/170/18 +f 87/171/19 86/71/19 126/172/19 +f 75/110/16 110/145/16 140/174/16 +f 9/156/20 148/155/20 162/175/20 +f 164/177/21 116/116/21 115/178/21 +f 79/180/22 164/177/22 163/181/22 +f 166/183/11 167/278/11 168/184/11 +f 6/4/3 169/337/3 170/186/3 +f 125/125/16 21/15/16 20/14/16 +f 20/14/16 22/319/16 172/187/16 +f 22/319/16 171/190/16 172/187/16 +f 171/190/10 22/319/10 25/188/10 +f 25/188/10 123/338/10 173/189/10 +f 156/191/23 159/339/23 3/192/23 +f 79/180/3 78/65/3 116/116/3 +f 114/113/16 113/141/16 72/193/16 +f 111/114/19 114/113/19 71/195/19 +f 172/187/6 171/190/6 43/198/6 +f 171/190/6 173/196/6 43/198/6 +f 69/199/4 112/112/4 111/114/4 +f 168/184/16 167/278/16 176/201/16 +f 177/203/10 178/340/10 121/204/10 +f 170/186/16 169/337/16 180/205/16 +f 81/70/4 150/157/4 149/207/4 +f 179/209/5 118/129/5 7/131/5 +f 120/119/4 119/121/4 141/210/4 +f 73/212/6 76/63/6 140/174/6 +f 181/214/4 166/183/4 165/185/4 +f 4/2/16 3/192/16 159/216/16 +f 81/70/3 84/69/3 151/163/3 +f 12/218/24 155/341/24 147/219/24 +f 122/120/16 121/204/16 178/220/16 +f 183/222/4 184/342/4 185/223/4 +f 183/225/4 186/224/4 187/226/4 +f 187/226/4 189/343/4 190/228/4 +f 191/230/4 192/344/4 193/231/4 +f 190/233/4 189/343/4 195/234/4 +f 191/236/4 194/345/4 136/237/4 +f 198/239/4 199/346/4 200/240/4 +f 201/242/4 202/347/4 203/243/4 +f 161/176/25 162/175/25 160/245/25 +f 144/152/26 132/134/26 130/246/26 +f 195/234/4 199/346/4 198/248/4 +f 205/250/4 197/348/4 200/251/4 +f 205/253/4 206/252/4 185/223/4 +f 207/255/4 208/349/4 209/256/4 +f 207/258/4 210/350/4 193/259/4 +f 134/261/4 137/351/4 203/262/4 +f 201/264/4 204/352/4 209/265/4 +f 2/1/4 1/3/4 157/166/4 +f 11/58/27 68/57/27 154/267/27 +f 43/268/11 211/353/11 212/269/11 +f 182/271/8 175/279/8 176/272/8 +f 118/274/6 179/354/6 180/275/6 +f 181/277/13 176/355/13 167/278/13 +f 165/185/19 168/184/19 175/279/19 +f 180/275/10 169/337/10 6/4/10 +f 133/299/4 126/303/4 131/133/4 +f 212/269/10 211/353/10 129/300/10 +f 125/316/16 172/356/16 128/301/16 +f 172/356/16 212/357/16 128/301/16 +f 128/301/16 88/72/16 125/316/16 +s 1 +f 95/103/4 61/49/28 45/321/28 +f 36/34/29 57/44/10 37/25/10 +f 195/234/5 234/358/8 199/346/8 +f 94/77/30 51/39/4 95/103/4 +f 27/93/31 47/36/16 28/19/16 +f 100/89/32 47/325/16 91/83/32 +f 215/359/28 96/360/4 44/361/28 +f 225/362/16 92/363/32 46/364/16 +f 231/365/8 135/366/5 134/367/8 +f 103/368/29 44/361/28 35/369/29 +f 204/244/19 188/229/3 190/228/19 +f 219/370/33 99/371/32 97/372/33 +f 37/25/10 56/43/34 38/28/34 +f 203/262/3 183/225/11 188/227/3 +f 189/343/19 233/373/5 195/234/5 +f 13/374/10 201/375/13 208/376/10 +f 220/377/5 97/372/33 62/378/5 +f 15/379/5 191/380/19 135/366/5 +f 137/139/11 184/342/10 183/222/11 +f 16/381/6 134/367/8 202/382/6 +f 136/237/10 205/253/13 184/254/10 +f 98/80/33 102/328/5 63/50/5 +f 36/34/29 61/49/28 58/48/29 +f 14/383/3 207/384/11 192/385/3 +f 227/386/10 55/387/34 54/388/10 +f 187/226/3 235/389/19 189/343/19 +f 222/390/35 53/391/30 107/392/35 +f 185/223/10 238/393/11 186/224/11 +f 226/394/34 49/395/31 55/387/34 +f 193/259/6 198/239/8 197/241/6 +f 218/396/32 29/397/16 99/371/32 +f 105/398/16 26/399/31 29/400/16 +f 223/401/33 101/402/5 89/403/33 +f 228/404/29 54/388/10 59/405/29 +f 230/406/19 192/407/3 191/380/19 +f 33/408/31 46/409/16 49/395/31 +f 30/410/28 59/405/29 60/411/28 +f 38/28/34 48/53/31 27/93/31 +f 63/50/5 108/108/35 64/100/35 +f 229/412/11 208/376/10 207/384/11 +f 209/265/5 190/233/19 196/235/5 +f 232/413/13 202/382/6 201/375/13 +f 31/414/30 50/415/4 53/391/30 +f 221/416/4 60/411/28 50/415/4 +f 210/257/8 196/249/5 198/248/8 +f 32/417/5 107/392/35 101/402/5 +f 199/346/8 239/418/6 200/240/6 +f 214/419/4 93/420/30 96/360/4 +f 106/421/35 62/378/5 65/422/35 +f 194/232/13 197/348/6 205/250/13 +f 98/80/33 91/83/32 90/74/33 +f 64/100/35 52/107/30 94/77/30 +f 186/224/11 236/423/3 187/226/3 +f 217/424/31 39/425/34 26/399/31 +f 216/426/10 35/369/29 34/427/10 +f 104/428/34 34/427/10 39/425/34 +f 200/251/6 240/429/13 206/252/13 +f 206/252/13 237/430/10 185/223/10 +f 224/431/32 89/403/33 92/363/32 +f 213/432/30 65/422/35 93/420/30 +f 95/103/4 51/39/4 61/49/28 +f 36/34/29 58/48/29 57/44/10 +f 195/234/5 233/373/5 234/358/8 +f 94/77/30 52/107/30 51/39/4 +f 27/93/31 48/53/31 47/36/16 +f 100/89/32 28/326/16 47/325/16 +f 215/359/28 214/419/4 96/360/4 +f 225/362/16 224/431/32 92/363/32 +f 231/365/8 15/379/5 135/366/5 +f 103/368/29 215/359/28 44/361/28 +f 204/244/19 203/243/3 188/229/3 +f 219/370/33 218/396/32 99/371/32 +f 37/25/10 57/44/10 56/43/34 +f 203/262/3 137/351/11 183/225/11 +f 189/343/19 235/389/19 233/373/5 +f 13/374/10 232/413/13 201/375/13 +f 220/377/5 219/370/33 97/372/33 +f 15/379/5 230/406/19 191/380/19 +f 137/139/11 136/138/10 184/342/10 +f 16/381/6 231/365/8 134/367/8 +f 136/237/10 194/345/13 205/253/13 +f 98/80/33 90/74/33 102/328/5 +f 36/34/29 45/321/28 61/49/28 +f 14/383/3 229/412/11 207/384/11 +f 227/386/10 226/394/34 55/387/34 +f 187/226/3 236/423/3 235/389/19 +f 222/390/35 31/414/30 53/391/30 +f 185/223/10 237/430/10 238/393/11 +f 226/394/34 33/408/31 49/395/31 +f 193/259/6 210/350/8 198/239/8 +f 218/396/32 105/433/16 29/397/16 +f 105/398/16 217/424/31 26/399/31 +f 223/401/33 32/417/5 101/402/5 +f 228/404/29 227/386/10 54/388/10 +f 230/406/19 14/434/3 192/407/3 +f 33/408/31 225/435/16 46/409/16 +f 30/410/28 228/404/29 59/405/29 +f 38/28/34 56/43/34 48/53/31 +f 63/50/5 102/328/5 108/108/35 +f 229/412/11 13/374/10 208/376/10 +f 209/265/5 204/352/19 190/233/19 +f 232/413/13 16/381/6 202/382/6 +f 31/414/30 221/416/4 50/415/4 +f 221/416/4 30/410/28 60/411/28 +f 210/257/8 209/256/5 196/249/5 +f 32/417/5 222/390/35 107/392/35 +f 199/346/8 234/358/8 239/418/6 +f 214/419/4 213/432/30 93/420/30 +f 106/421/35 220/377/5 62/378/5 +f 194/232/13 193/231/6 197/348/6 +f 98/80/33 100/89/32 91/83/32 +f 64/100/35 108/108/35 52/107/30 +f 186/224/11 238/393/11 236/423/3 +f 217/424/31 104/428/34 39/425/34 +f 216/426/10 103/368/29 35/369/29 +f 104/428/34 216/426/10 34/427/10 +f 200/251/6 239/436/6 240/429/13 +f 206/252/13 240/429/13 237/430/10 +f 224/431/32 223/401/33 89/403/33 +f 213/432/30 106/421/35 65/422/35 diff --git a/src/main/resources/assets/hbm/models/missile_abm.obj b/src/main/resources/assets/hbm/models/missile_abm.obj new file mode 100644 index 000000000..1cc213eba --- /dev/null +++ b/src/main/resources/assets/hbm/models/missile_abm.obj @@ -0,0 +1,2124 @@ +# Blender v2.79 (sub 0) OBJ File: 'missile_abm.blend' +# www.blender.org +o Circle +v -0.000000 7.000000 -0.375000 +v -0.143506 7.000000 -0.346455 +v -0.265165 7.000000 -0.265165 +v -0.346455 7.000000 -0.143506 +v -0.375000 7.000000 0.000000 +v -0.346455 7.000000 0.143506 +v -0.265165 7.000000 0.265165 +v -0.143506 7.000000 0.346455 +v -0.000000 7.000000 0.375000 +v 0.143506 7.000000 0.346455 +v 0.265165 7.000000 0.265165 +v 0.346455 7.000000 0.143506 +v 0.375000 7.000000 -0.000000 +v 0.346455 7.000000 -0.143506 +v 0.265165 7.000000 -0.265165 +v 0.143506 7.000000 -0.346455 +v -0.000000 8.500000 0.000000 +v -0.000000 5.500000 -0.375000 +v -0.143506 5.500000 -0.346455 +v -0.265165 5.500000 -0.265165 +v -0.346455 5.500000 -0.143506 +v -0.375000 5.500000 0.000000 +v -0.346455 5.500000 0.143506 +v -0.265165 5.500000 0.265165 +v -0.143506 5.500000 0.346455 +v -0.000000 5.500000 0.375000 +v 0.143506 5.500000 0.346455 +v 0.265165 5.500000 0.265165 +v 0.346455 5.500000 0.143506 +v 0.375000 5.500000 -0.000000 +v 0.346455 5.500000 -0.143506 +v 0.265165 5.500000 -0.265165 +v 0.143506 5.500000 -0.346455 +v -0.000000 4.500000 -0.250000 +v -0.095671 4.500000 -0.230970 +v -0.176777 4.500000 -0.176777 +v -0.230970 4.500000 -0.095671 +v -0.250000 4.500000 0.000000 +v -0.230970 4.500000 0.095671 +v -0.176777 4.500000 0.176777 +v -0.095671 4.500000 0.230970 +v -0.000000 4.500000 0.250000 +v 0.095671 4.500000 0.230970 +v 0.176777 4.500000 0.176777 +v 0.230970 4.500000 0.095671 +v 0.250000 4.500000 -0.000000 +v 0.230970 4.500000 -0.095671 +v 0.176777 4.500000 -0.176777 +v 0.095671 4.500000 -0.230970 +v -0.000000 1.500000 -0.250000 +v -0.095671 1.500000 -0.230970 +v -0.176777 1.500000 -0.176777 +v -0.230970 1.500000 -0.095671 +v -0.250000 1.500000 0.000000 +v -0.230970 1.500000 0.095671 +v -0.176777 1.500000 0.176777 +v -0.095671 1.500000 0.230970 +v -0.000000 1.500000 0.250000 +v 0.095671 1.500000 0.230970 +v 0.176777 1.500000 0.176777 +v 0.230970 1.500000 0.095671 +v 0.250000 1.500000 -0.000000 +v 0.230970 1.500000 -0.095671 +v 0.176777 1.500000 -0.176777 +v 0.095671 1.500000 -0.230970 +v -0.000000 0.250000 -0.250000 +v 0.019030 0.250000 -0.154329 +v 0.073223 0.250000 -0.073223 +v 0.154329 0.250000 -0.019030 +v 0.250000 0.250000 0.000000 +v 0.345671 0.250000 -0.019030 +v 0.426777 0.250000 -0.073223 +v 0.480970 0.250000 -0.154329 +v 0.500000 0.250000 -0.250000 +v 0.480970 0.250000 -0.345671 +v 0.426777 0.250000 -0.426777 +v 0.345671 0.250000 -0.480970 +v 0.250000 0.250000 -0.500000 +v 0.154329 0.250000 -0.480970 +v 0.073223 0.250000 -0.426777 +v 0.019030 0.250000 -0.345671 +v -0.000000 1.500000 -0.250000 +v 0.019030 1.500000 -0.154329 +v 0.073223 1.500000 -0.073223 +v 0.154329 1.500000 -0.019030 +v 0.250000 1.500000 0.000000 +v 0.345671 1.500000 -0.019030 +v 0.426777 1.500000 -0.073223 +v 0.480970 1.500000 -0.154329 +v 0.500000 1.500000 -0.250000 +v 0.480970 1.500000 -0.345671 +v 0.426777 1.500000 -0.426777 +v 0.345671 1.500000 -0.480970 +v 0.250000 1.500000 -0.500000 +v 0.154329 1.500000 -0.480970 +v 0.073223 1.500000 -0.426777 +v 0.019030 1.500000 -0.345671 +v 0.125000 2.500000 -0.125000 +v 0.125000 0.250000 -0.250000 +v 0.134515 0.250000 -0.202165 +v 0.161612 0.250000 -0.161612 +v 0.202165 0.250000 -0.134515 +v 0.250000 0.250000 -0.125000 +v 0.297835 0.250000 -0.134515 +v 0.338388 0.250000 -0.161612 +v 0.365485 0.250000 -0.202165 +v 0.375000 0.250000 -0.250000 +v 0.365485 0.250000 -0.297835 +v 0.338388 0.250000 -0.338388 +v 0.297835 0.250000 -0.365485 +v 0.250000 0.250000 -0.375000 +v 0.202165 0.250000 -0.365485 +v 0.161612 0.250000 -0.338388 +v 0.134515 0.250000 -0.297835 +v -0.000000 0.000000 -0.250000 +v 0.019030 0.000000 -0.154329 +v 0.073223 0.000000 -0.073223 +v 0.154329 0.000000 -0.019030 +v 0.250000 0.000000 0.000000 +v 0.345671 0.000000 -0.019030 +v 0.426777 0.000000 -0.073223 +v 0.480970 0.000000 -0.154329 +v 0.500000 0.000000 -0.250000 +v 0.480970 0.000000 -0.345671 +v 0.426777 0.000000 -0.426777 +v 0.345671 0.000000 -0.480970 +v 0.250000 0.000000 -0.500000 +v 0.154329 0.000000 -0.480970 +v 0.073223 0.000000 -0.426777 +v 0.019030 0.000000 -0.345671 +v 0.000000 5.500000 -0.875000 +v 0.000000 4.500000 -0.875000 +v -0.031250 6.000000 -0.125000 +v -0.031250 4.000000 -0.125000 +v 0.031250 6.000000 -0.125000 +v 0.031250 4.000000 -0.125000 +v 0.031250 0.500000 -0.125000 +v 0.031250 2.500000 -0.125000 +v -0.031250 0.500000 -0.125000 +v -0.031250 2.500000 -0.125000 +v 0.000000 0.500000 -1.125000 +v 0.000000 2.000000 -1.125000 +v -0.062500 4.250000 -0.875000 +v -0.062500 5.750000 -0.875000 +v -0.031250 4.250000 -0.929127 +v -0.031250 5.750000 -0.929127 +v 0.031250 4.250000 -0.929127 +v 0.031250 5.750000 -0.929127 +v 0.062500 4.250000 -0.875000 +v 0.062500 5.750000 -0.875000 +v 0.031250 4.250000 -0.820873 +v 0.031250 5.750000 -0.820873 +v -0.031250 4.250000 -0.820873 +v -0.031250 5.750000 -0.820873 +v 0.000000 0.250000 0.250000 +v -0.019030 0.250000 0.154329 +v -0.073223 0.250000 0.073223 +v -0.154329 0.250000 0.019030 +v -0.250000 0.250000 0.000000 +v -0.345671 0.250000 0.019030 +v -0.426777 0.250000 0.073223 +v -0.480970 0.250000 0.154329 +v -0.500000 0.250000 0.250000 +v -0.480970 0.250000 0.345671 +v -0.426777 0.250000 0.426777 +v -0.345671 0.250000 0.480970 +v -0.250000 0.250000 0.500000 +v -0.154329 0.250000 0.480970 +v -0.073223 0.250000 0.426777 +v -0.019030 0.250000 0.345671 +v 0.000000 1.500000 0.250000 +v -0.019030 1.500000 0.154329 +v -0.073223 1.500000 0.073223 +v -0.154329 1.500000 0.019030 +v -0.250000 1.500000 0.000000 +v -0.345671 1.500000 0.019030 +v -0.426777 1.500000 0.073223 +v -0.480970 1.500000 0.154329 +v -0.500000 1.500000 0.250000 +v -0.480970 1.500000 0.345671 +v -0.426777 1.500000 0.426777 +v -0.345671 1.500000 0.480970 +v -0.250000 1.500000 0.500000 +v -0.154329 1.500000 0.480970 +v -0.073223 1.500000 0.426777 +v -0.019030 1.500000 0.345671 +v -0.125000 2.500000 0.125000 +v -0.125000 0.250000 0.250000 +v -0.134515 0.250000 0.202165 +v -0.161612 0.250000 0.161612 +v -0.202165 0.250000 0.134515 +v -0.250000 0.250000 0.125000 +v -0.297835 0.250000 0.134515 +v -0.338388 0.250000 0.161612 +v -0.365485 0.250000 0.202165 +v -0.375000 0.250000 0.250000 +v -0.365485 0.250000 0.297835 +v -0.338388 0.250000 0.338388 +v -0.297835 0.250000 0.365485 +v -0.250000 0.250000 0.375000 +v -0.202164 0.250000 0.365485 +v -0.161612 0.250000 0.338388 +v -0.134515 0.250000 0.297835 +v 0.000000 0.000000 0.250000 +v -0.019030 0.000000 0.154329 +v -0.073223 0.000000 0.073223 +v -0.154329 0.000000 0.019030 +v -0.250000 0.000000 0.000000 +v -0.345671 0.000000 0.019030 +v -0.426777 0.000000 0.073223 +v -0.480970 0.000000 0.154329 +v -0.500000 0.000000 0.250000 +v -0.480970 0.000000 0.345671 +v -0.426777 0.000000 0.426777 +v -0.345671 0.000000 0.480970 +v -0.250000 0.000000 0.500000 +v -0.154329 0.000000 0.480970 +v -0.073223 0.000000 0.426777 +v -0.019030 0.000000 0.345671 +v -0.031250 0.500000 0.125000 +v -0.031250 2.500000 0.125000 +v 0.031250 0.500000 0.125000 +v 0.031250 2.500000 0.125000 +v 0.000000 0.500000 1.125000 +v 0.000000 2.000000 1.125000 +v -0.250000 0.250000 0.000000 +v -0.154329 0.250000 -0.019030 +v -0.073223 0.250000 -0.073223 +v -0.019030 0.250000 -0.154329 +v -0.000000 0.250000 -0.250000 +v -0.019030 0.250000 -0.345671 +v -0.073223 0.250000 -0.426777 +v -0.154329 0.250000 -0.480970 +v -0.250000 0.250000 -0.500000 +v -0.345671 0.250000 -0.480970 +v -0.426777 0.250000 -0.426777 +v -0.480970 0.250000 -0.345671 +v -0.500000 0.250000 -0.250000 +v -0.480970 0.250000 -0.154329 +v -0.426777 0.250000 -0.073223 +v -0.345671 0.250000 -0.019030 +v -0.250000 1.500000 0.000000 +v -0.154329 1.500000 -0.019030 +v -0.073223 1.500000 -0.073223 +v -0.019030 1.500000 -0.154329 +v -0.000000 1.500000 -0.250000 +v -0.019030 1.500000 -0.345671 +v -0.073223 1.500000 -0.426777 +v -0.154329 1.500000 -0.480970 +v -0.250000 1.500000 -0.500000 +v -0.345671 1.500000 -0.480970 +v -0.426777 1.500000 -0.426777 +v -0.480970 1.500000 -0.345671 +v -0.500000 1.500000 -0.250000 +v -0.480970 1.500000 -0.154329 +v -0.426777 1.500000 -0.073223 +v -0.345671 1.500000 -0.019030 +v -0.125000 2.500000 -0.125000 +v -0.250000 0.250000 -0.125000 +v -0.202165 0.250000 -0.134515 +v -0.161612 0.250000 -0.161612 +v -0.134515 0.250000 -0.202165 +v -0.125000 0.250000 -0.250000 +v -0.134515 0.250000 -0.297835 +v -0.161612 0.250000 -0.338388 +v -0.202165 0.250000 -0.365485 +v -0.250000 0.250000 -0.375000 +v -0.297835 0.250000 -0.365485 +v -0.338388 0.250000 -0.338388 +v -0.365485 0.250000 -0.297835 +v -0.375000 0.250000 -0.250000 +v -0.365485 0.250000 -0.202164 +v -0.338388 0.250000 -0.161612 +v -0.297835 0.250000 -0.134515 +v -0.250000 0.000000 0.000000 +v -0.154329 0.000000 -0.019030 +v -0.073223 0.000000 -0.073223 +v -0.019030 0.000000 -0.154329 +v -0.000000 0.000000 -0.250000 +v -0.019030 0.000000 -0.345671 +v -0.073223 0.000000 -0.426777 +v -0.154329 0.000000 -0.480970 +v -0.250000 0.000000 -0.500000 +v -0.345671 0.000000 -0.480970 +v -0.426777 0.000000 -0.426777 +v -0.480970 0.000000 -0.345671 +v -0.500000 0.000000 -0.250000 +v -0.480970 0.000000 -0.154329 +v -0.426777 0.000000 -0.073223 +v -0.345671 0.000000 -0.019030 +v -0.125000 0.500000 -0.031250 +v -0.125000 2.500000 -0.031250 +v -0.125000 0.500000 0.031250 +v -0.125000 2.500000 0.031250 +v -1.125000 0.500000 0.000000 +v -1.125000 2.000000 0.000000 +v 0.250000 0.250000 -0.000000 +v 0.154329 0.250000 0.019030 +v 0.073223 0.250000 0.073223 +v 0.019030 0.250000 0.154329 +v 0.000000 0.250000 0.250000 +v 0.019030 0.250000 0.345671 +v 0.073223 0.250000 0.426777 +v 0.154329 0.250000 0.480970 +v 0.250000 0.250000 0.500000 +v 0.345671 0.250000 0.480970 +v 0.426777 0.250000 0.426777 +v 0.480970 0.250000 0.345671 +v 0.500000 0.250000 0.250000 +v 0.480970 0.250000 0.154329 +v 0.426777 0.250000 0.073223 +v 0.345671 0.250000 0.019030 +v 0.250000 1.500000 -0.000000 +v 0.154329 1.500000 0.019030 +v 0.073223 1.500000 0.073223 +v 0.019030 1.500000 0.154329 +v 0.000000 1.500000 0.250000 +v 0.019030 1.500000 0.345671 +v 0.073223 1.500000 0.426777 +v 0.154329 1.500000 0.480970 +v 0.250000 1.500000 0.500000 +v 0.345671 1.500000 0.480970 +v 0.426777 1.500000 0.426777 +v 0.480970 1.500000 0.345671 +v 0.500000 1.500000 0.250000 +v 0.480970 1.500000 0.154329 +v 0.426777 1.500000 0.073223 +v 0.345671 1.500000 0.019030 +v 0.125000 2.500000 0.125000 +v 0.250000 0.250000 0.125000 +v 0.202165 0.250000 0.134515 +v 0.161612 0.250000 0.161612 +v 0.134515 0.250000 0.202165 +v 0.125000 0.250000 0.250000 +v 0.134515 0.250000 0.297835 +v 0.161612 0.250000 0.338388 +v 0.202165 0.250000 0.365485 +v 0.250000 0.250000 0.375000 +v 0.297835 0.250000 0.365485 +v 0.338388 0.250000 0.338388 +v 0.365485 0.250000 0.297835 +v 0.375000 0.250000 0.250000 +v 0.365485 0.250000 0.202164 +v 0.338388 0.250000 0.161612 +v 0.297835 0.250000 0.134515 +v 0.250000 0.000000 -0.000000 +v 0.154329 0.000000 0.019030 +v 0.073223 0.000000 0.073223 +v 0.019030 0.000000 0.154329 +v 0.000000 0.000000 0.250000 +v 0.019030 0.000000 0.345671 +v 0.073223 0.000000 0.426777 +v 0.154329 0.000000 0.480970 +v 0.250000 0.000000 0.500000 +v 0.345671 0.000000 0.480970 +v 0.426777 0.000000 0.426777 +v 0.480970 0.000000 0.345671 +v 0.500000 0.000000 0.250000 +v 0.480970 0.000000 0.154329 +v 0.426777 0.000000 0.073223 +v 0.345671 0.000000 0.019030 +v 0.125000 0.500000 0.031250 +v 0.125000 2.500000 0.031250 +v 0.125000 0.500000 -0.031250 +v 0.125000 2.500000 -0.031250 +v 1.125000 0.500000 -0.000000 +v 1.125000 2.000000 -0.000000 +v 0.000000 5.500000 0.875000 +v 0.000000 4.500000 0.875000 +v 0.031250 6.000000 0.125000 +v 0.031250 4.000000 0.125000 +v -0.031250 6.000000 0.125000 +v -0.031250 4.000000 0.125000 +v 0.062500 4.250000 0.875000 +v 0.062500 5.750000 0.875000 +v 0.031250 4.250000 0.929127 +v 0.031250 5.750000 0.929127 +v -0.031250 4.250000 0.929127 +v -0.031250 5.750000 0.929127 +v -0.062500 4.250000 0.875000 +v -0.062500 5.750000 0.875000 +v -0.031250 4.250000 0.820873 +v -0.031250 5.750000 0.820873 +v 0.031250 4.250000 0.820873 +v 0.031250 5.750000 0.820873 +v -0.875000 5.500000 0.000000 +v -0.875000 4.500000 0.000000 +v -0.125000 6.000000 0.031250 +v -0.125000 4.000000 0.031250 +v -0.125000 6.000000 -0.031250 +v -0.125000 4.000000 -0.031250 +v -0.875000 4.250000 0.062500 +v -0.875000 5.750000 0.062500 +v -0.929127 4.250000 0.031250 +v -0.929127 5.750000 0.031250 +v -0.929127 4.250000 -0.031250 +v -0.929127 5.750000 -0.031250 +v -0.875000 4.250000 -0.062500 +v -0.875000 5.750000 -0.062500 +v -0.820873 4.250000 -0.031250 +v -0.820873 5.750000 -0.031250 +v -0.820873 4.250000 0.031250 +v -0.820873 5.750000 0.031250 +v 0.875000 5.500000 -0.000000 +v 0.875000 4.500000 -0.000000 +v 0.125000 6.000000 -0.031250 +v 0.125000 4.000000 -0.031250 +v 0.125000 6.000000 0.031250 +v 0.125000 4.000000 0.031250 +v 0.875000 4.250000 -0.062500 +v 0.875000 5.750000 -0.062500 +v 0.929127 4.250000 -0.031250 +v 0.929127 5.750000 -0.031250 +v 0.929127 4.250000 0.031250 +v 0.929127 5.750000 0.031250 +v 0.875000 4.250000 0.062500 +v 0.875000 5.750000 0.062500 +v 0.820873 4.250000 0.031250 +v 0.820873 5.750000 0.031250 +v 0.820873 4.250000 -0.031250 +v 0.820873 5.750000 -0.031250 +vt 0.720253 0.439829 +vt 0.720253 0.488743 +vt 0.648168 0.488743 +vt 0.447368 0.053571 +vt 0.421053 0.035714 +vt 0.434211 0.035714 +vt 0.473684 0.053571 +vt 0.447368 0.035714 +vt 0.460526 0.035714 +vt 0.486842 0.035714 +vt 0.500000 0.053571 +vt 0.513158 0.035714 +vt 0.526316 0.053571 +vt 0.552632 0.053571 +vt 0.526316 0.035714 +vt 0.539474 0.035714 +vt 0.578947 0.053571 +vt 0.552632 0.035714 +vt 0.565789 0.035714 +vt 0.605263 0.053571 +vt 0.578947 0.035714 +vt 0.592105 0.035714 +vt 0.618421 0.035714 +vt 0.631579 0.053571 +vt 0.657895 0.053571 +vt 0.631579 0.035714 +vt 0.644737 0.035714 +vt 0.684211 0.053571 +vt 0.657895 0.035714 +vt 0.671053 0.035714 +vt 0.697368 0.035714 +vt 0.710526 0.053571 +vt 0.723684 0.035714 +vt 0.736842 0.053571 +vt 0.789474 0.053571 +vt 0.802632 0.035714 +vt 0.815789 0.053571 +vt 0.763158 0.053571 +vt 0.736842 0.035714 +vt 0.750000 0.035714 +vt 0.828947 0.035714 +vt 0.842105 0.053571 +vt 0.776316 0.035714 +vt 0.684211 0.570302 +vt 0.633240 0.535715 +vt 0.684211 0.501127 +vt 0.842105 0.294643 +vt 1.000000 0.080357 +vt 0.842105 0.008929 +vt 1.000000 0.223214 +vt 0.842105 0.008929 +vt 0.842105 0.294643 +vt 1.000000 0.294643 +vt 0.842105 0.303571 +vt 0.842105 -0.000000 +vt 1.000000 0.008929 +vt 0.631579 0.580357 +vt 0.631579 0.571429 +vt 0.842105 0.580357 +vt 0.631579 0.875000 +vt 0.842105 0.875000 +vt 0.631579 0.883929 +vt 0.842105 0.803571 +vt 0.631579 0.580357 +vt 0.921712 0.330357 +vt 0.940460 0.323013 +vt 0.940460 0.337702 +vt 0.946709 0.312500 +vt 0.940460 0.319845 +vt 0.927961 0.319845 +vt 0.447368 0.053571 +vt 0.421053 0.035714 +vt 0.434211 0.035714 +vt 0.473684 0.053571 +vt 0.447368 0.035714 +vt 0.460526 0.035714 +vt 0.486842 0.035714 +vt 0.500000 0.053571 +vt 0.513158 0.035714 +vt 0.526316 0.053571 +vt 0.552632 0.053571 +vt 0.526316 0.035714 +vt 0.539474 0.035714 +vt 0.578947 0.053571 +vt 0.552632 0.035714 +vt 0.565789 0.035714 +vt 0.605263 0.053571 +vt 0.578947 0.035714 +vt 0.592105 0.035714 +vt 0.618421 0.035714 +vt 0.631579 0.053571 +vt 0.657895 0.053571 +vt 0.631579 0.035714 +vt 0.644737 0.035714 +vt 0.684211 0.053571 +vt 0.657895 0.035714 +vt 0.671053 0.035714 +vt 0.697368 0.035714 +vt 0.710526 0.053571 +vt 0.723684 0.035714 +vt 0.736842 0.053571 +vt 0.789474 0.053571 +vt 0.802632 0.035714 +vt 0.815789 0.053571 +vt 0.763158 0.053571 +vt 0.736842 0.035714 +vt 0.750000 0.035714 +vt 0.828947 0.035714 +vt 0.842105 0.053571 +vt 0.776316 0.035714 +vt 0.633240 0.535715 +vt 0.648169 0.511257 +vt 0.684211 0.501127 +vt 0.631579 0.580357 +vt 0.631579 0.571429 +vt 0.842105 0.580357 +vt 0.631579 0.875000 +vt 0.842105 0.875000 +vt 0.631579 0.883929 +vt 0.842105 0.803571 +vt 0.631579 0.580357 +vt 0.447368 0.053571 +vt 0.421053 0.035714 +vt 0.434211 0.035714 +vt 0.473684 0.053571 +vt 0.447368 0.035714 +vt 0.460526 0.035714 +vt 0.486842 0.035714 +vt 0.500000 0.053571 +vt 0.513158 0.035714 +vt 0.526316 0.053571 +vt 0.552632 0.053571 +vt 0.526316 0.035714 +vt 0.539474 0.035714 +vt 0.578947 0.053571 +vt 0.552632 0.035714 +vt 0.565789 0.035714 +vt 0.605263 0.053571 +vt 0.578947 0.035714 +vt 0.592105 0.035714 +vt 0.618421 0.035714 +vt 0.631579 0.053571 +vt 0.657895 0.053571 +vt 0.631579 0.035714 +vt 0.644737 0.035714 +vt 0.671053 0.035714 +vt 0.684211 0.053571 +vt 0.697368 0.035714 +vt 0.710526 0.053571 +vt 0.723684 0.035714 +vt 0.736842 0.053571 +vt 0.789474 0.053571 +vt 0.802632 0.035714 +vt 0.815789 0.053571 +vt 0.763158 0.053571 +vt 0.736842 0.035714 +vt 0.750000 0.035714 +vt 0.828947 0.035714 +vt 0.842105 0.053571 +vt 0.776316 0.035714 +vt 0.684211 0.570302 +vt 0.633240 0.535715 +vt 0.684211 0.501127 +vt 0.631579 0.580357 +vt 0.631579 0.571429 +vt 0.842105 0.580357 +vt 0.631579 0.875000 +vt 0.842105 0.875000 +vt 0.631579 0.883929 +vt 0.842105 0.803571 +vt 0.631579 0.580357 +vt 0.447368 0.053571 +vt 0.421053 0.035714 +vt 0.434211 0.035714 +vt 0.473684 0.053571 +vt 0.447368 0.035714 +vt 0.460526 0.035714 +vt 0.486842 0.035714 +vt 0.500000 0.053571 +vt 0.513158 0.035714 +vt 0.526316 0.053571 +vt 0.552632 0.053571 +vt 0.526316 0.035714 +vt 0.539474 0.035714 +vt 0.578947 0.053571 +vt 0.552632 0.035714 +vt 0.565789 0.035714 +vt 0.605263 0.053571 +vt 0.578947 0.035714 +vt 0.592105 0.035714 +vt 0.618421 0.035714 +vt 0.631579 0.053571 +vt 0.657895 0.053571 +vt 0.631579 0.035714 +vt 0.644737 0.035714 +vt 0.684211 0.053571 +vt 0.657895 0.035714 +vt 0.671053 0.035714 +vt 0.697368 0.035714 +vt 0.710526 0.053571 +vt 0.723684 0.035714 +vt 0.736842 0.053571 +vt 0.789474 0.053571 +vt 0.802632 0.035714 +vt 0.815789 0.053571 +vt 0.763158 0.053571 +vt 0.736842 0.035714 +vt 0.750000 0.035714 +vt 0.828947 0.035714 +vt 0.842105 0.053571 +vt 0.763158 0.035714 +vt 0.776316 0.035714 +vt 0.684211 0.570302 +vt 0.633240 0.535715 +vt 0.684211 0.501127 +vt 0.631579 0.580357 +vt 0.631579 0.571429 +vt 0.842105 0.580357 +vt 0.631579 0.875000 +vt 0.842105 0.875000 +vt 0.631579 0.883929 +vt 0.842105 0.803571 +vt 0.631579 0.580357 +vt 0.842105 0.294643 +vt 1.000000 0.080357 +vt 0.842105 0.008929 +vt 1.000000 0.223214 +vt 0.842105 0.008929 +vt 0.842105 0.294643 +vt 1.000000 0.294643 +vt 0.842105 0.303571 +vt 0.842105 -0.000000 +vt 1.000000 0.008929 +vt 0.946709 0.330357 +vt 0.940460 0.337702 +vt 0.921712 0.330357 +vt 0.946709 0.312500 +vt 0.940460 0.319845 +vt 0.927961 0.319845 +vt 0.842105 0.294643 +vt 1.000000 0.080357 +vt 0.842105 0.008929 +vt 1.000000 0.223214 +vt 0.842105 0.008929 +vt 0.842105 0.294643 +vt 1.000000 0.294643 +vt 0.842105 0.303571 +vt 0.842105 -0.000000 +vt 1.000000 0.008929 +vt 0.921712 0.330357 +vt 0.940460 0.323013 +vt 0.940460 0.337702 +vt 0.946709 0.312500 +vt 0.940460 0.319845 +vt 0.927961 0.319845 +vt 0.842105 0.008929 +vt 1.000000 0.223214 +vt 1.000000 0.080357 +vt 0.842105 0.008929 +vt 0.842105 0.294643 +vt 1.000000 0.294643 +vt 0.842105 0.303571 +vt 0.842105 -0.000000 +vt 1.000000 0.008929 +vt 0.921712 0.330357 +vt 0.940460 0.323013 +vt 0.940460 0.337702 +vt 0.946709 0.312500 +vt 0.940460 0.319845 +vt 0.927961 0.319845 +vt 0.731302 0.451050 +vt 0.735182 0.464286 +vt 0.731302 0.477522 +vt 0.703716 0.496241 +vt 0.684211 0.498873 +vt 0.664705 0.496241 +vt 0.637119 0.477522 +vt 0.633239 0.464286 +vt 0.637119 0.451050 +vt 0.648169 0.439829 +vt 0.664705 0.432331 +vt 0.684211 0.429698 +vt 0.703716 0.432331 +vt 0.421053 0.053571 +vt 0.473684 0.035714 +vt 0.500000 0.035714 +vt 0.605263 0.035714 +vt 0.684211 0.035714 +vt 0.710526 0.035714 +vt 0.789474 0.035714 +vt 0.815789 0.035714 +vt 0.763158 0.035714 +vt 0.703717 0.503760 +vt 0.720253 0.511257 +vt 0.731302 0.522478 +vt 0.735182 0.535715 +vt 0.731302 0.548951 +vt 0.720253 0.560172 +vt 0.703717 0.567669 +vt 0.664705 0.567669 +vt 0.648169 0.560172 +vt 0.637119 0.548951 +vt 0.637119 0.522478 +vt 0.648169 0.511257 +vt 0.664705 0.503760 +vt 0.631579 0.875000 +vt 0.927961 0.337702 +vt 0.927961 0.323013 +vt 0.946709 0.330357 +vt 0.921712 0.312500 +vt 0.927962 0.305155 +vt 0.940460 0.305155 +vt 0.421053 0.053571 +vt 0.473684 0.035714 +vt 0.500000 0.035714 +vt 0.605263 0.035714 +vt 0.684211 0.035714 +vt 0.710526 0.035714 +vt 0.789474 0.035714 +vt 0.815789 0.035714 +vt 0.763158 0.035714 +vt 0.703717 0.503760 +vt 0.720253 0.511257 +vt 0.731302 0.522478 +vt 0.735182 0.535715 +vt 0.731302 0.548951 +vt 0.720253 0.560172 +vt 0.703717 0.567669 +vt 0.684211 0.570302 +vt 0.664705 0.567669 +vt 0.648169 0.560172 +vt 0.637119 0.548951 +vt 0.637119 0.522478 +vt 0.664705 0.503760 +vt 0.631579 0.875000 +vt 0.421053 0.053571 +vt 0.473684 0.035714 +vt 0.500000 0.035714 +vt 0.605263 0.035714 +vt 0.657895 0.035714 +vt 0.684211 0.035714 +vt 0.710526 0.035714 +vt 0.789474 0.035714 +vt 0.815789 0.035714 +vt 0.763158 0.035714 +vt 0.703717 0.503760 +vt 0.720253 0.511257 +vt 0.731302 0.522478 +vt 0.735182 0.535715 +vt 0.731302 0.548951 +vt 0.720253 0.560172 +vt 0.703717 0.567669 +vt 0.664705 0.567669 +vt 0.648169 0.560172 +vt 0.637119 0.548951 +vt 0.637119 0.522478 +vt 0.648169 0.511257 +vt 0.664705 0.503760 +vt 0.631579 0.875000 +vt 0.421053 0.053571 +vt 0.473684 0.035714 +vt 0.500000 0.035714 +vt 0.605263 0.035714 +vt 0.684211 0.035714 +vt 0.710526 0.035714 +vt 0.789474 0.035714 +vt 0.815789 0.035714 +vt 0.703717 0.503760 +vt 0.720253 0.511257 +vt 0.731302 0.522478 +vt 0.735182 0.535715 +vt 0.731302 0.548951 +vt 0.720253 0.560172 +vt 0.703717 0.567669 +vt 0.664705 0.567669 +vt 0.648169 0.560172 +vt 0.637119 0.548951 +vt 0.637119 0.522478 +vt 0.648169 0.511257 +vt 0.664705 0.503760 +vt 0.631579 0.875000 +vt 0.927961 0.337702 +vt 0.927961 0.323013 +vt 0.940460 0.323013 +vt 0.921712 0.312500 +vt 0.927962 0.305155 +vt 0.940460 0.305155 +vt 0.927961 0.337702 +vt 0.927961 0.323013 +vt 0.946709 0.330357 +vt 0.921712 0.312500 +vt 0.927962 0.305155 +vt 0.940460 0.305155 +vt 0.842105 0.294643 +vt 0.927961 0.337702 +vt 0.927961 0.323013 +vt 0.946709 0.330357 +vt 0.921712 0.312500 +vt 0.927962 0.305155 +vt 0.940460 0.305155 +vt 0.434211 0.785714 +vt 0.473684 0.785714 +vt 0.447368 1.000000 +vt 0.394737 0.785714 +vt 0.407895 1.000000 +vt 0.355263 0.785714 +vt 0.368421 1.000000 +vt 0.315789 0.785714 +vt 0.328947 1.000000 +vt 0.276316 0.785714 +vt 0.289474 1.000000 +vt 0.236842 0.785714 +vt 0.250000 1.000000 +vt 0.197368 0.785714 +vt 0.210526 1.000000 +vt 0.157895 0.785714 +vt 0.171053 1.000000 +vt 0.131579 1.000000 +vt 0.118421 0.785714 +vt 0.078947 0.785714 +vt 0.092105 1.000000 +vt 0.039474 0.785714 +vt 0.052632 1.000000 +vt 0.000000 0.785714 +vt 0.013158 1.000000 +vt 0.592105 0.785714 +vt 0.631579 0.785714 +vt 0.605263 1.000000 +vt 0.552632 0.785714 +vt 0.565789 1.000000 +vt 0.513158 0.785714 +vt 0.526316 1.000000 +vt 0.486842 1.000000 +vt 0.631579 0.571429 +vt 0.315789 0.571429 +vt 0.039474 0.571429 +vt 0.355263 0.571429 +vt 0.078947 0.571429 +vt 0.394737 0.571429 +vt 0.118421 0.571429 +vt 0.434211 0.571429 +vt 0.157895 0.571429 +vt 0.513158 0.571429 +vt 0.473684 0.571429 +vt 0.197368 0.571429 +vt 0.552632 0.571429 +vt 0.236842 0.571429 +vt 0.592105 0.571429 +vt 0.276316 0.571429 +vt 0.184211 0.428571 +vt 0.539474 0.428571 +vt 0.223684 0.428571 +vt 0.578947 0.428571 +vt 0.263158 0.428571 +vt 0.618421 0.428571 +vt 0.302632 0.428571 +vt 0.000000 0.571429 +vt 0.026316 0.428571 +vt 0.342105 0.428571 +vt 0.065789 0.428571 +vt 0.381579 0.428571 +vt 0.105263 0.428571 +vt 0.421053 0.428571 +vt 0.144737 0.428571 +vt 0.500000 0.428571 +vt 0.460526 0.428571 +vt 0.236842 0.428571 +vt 0.263158 -0.000000 +vt 0.263158 0.428571 +vt 0.052632 0.428571 +vt 0.078947 -0.000000 +vt 0.078947 0.428571 +vt 0.289474 -0.000000 +vt 0.289474 0.428571 +vt 0.105263 -0.000000 +vt 0.105263 0.428571 +vt 0.315789 0.428571 +vt 0.342105 -0.000000 +vt 0.342105 0.428571 +vt 0.315789 -0.000000 +vt 0.131579 -0.000000 +vt 0.131579 0.428571 +vt 0.368421 -0.000000 +vt 0.368421 0.428571 +vt 0.157895 -0.000000 +vt 0.157895 0.428571 +vt 0.394737 -0.000000 +vt 0.394737 0.428571 +vt 0.184211 -0.000000 +vt 0.184211 0.428571 +vt 0.421053 -0.000000 +vt 0.421053 0.428571 +vt 0.210526 -0.000000 +vt 0.210526 0.428571 +vt 0.000000 0.428571 +vt 0.026316 -0.000000 +vt 0.236842 -0.000000 +vt 0.052632 -0.000000 +vt 0.815789 0.232143 +vt 0.605263 0.232143 +vt 0.421053 0.232143 +vt 0.631579 0.232143 +vt 0.447368 0.232143 +vt 0.657895 0.232143 +vt 0.473684 0.232143 +vt 0.684211 0.232143 +vt 0.500000 0.232143 +vt 0.710526 0.232143 +vt 0.526316 0.232143 +vt 0.736842 0.232143 +vt 0.552632 0.232143 +vt 0.789474 0.232143 +vt 0.763158 0.232143 +vt 0.578947 0.232143 +vt 0.671053 0.375000 +vt 0.644737 0.375000 +vt 0.618421 0.375000 +vt 0.592105 0.375000 +vt 0.565789 0.375000 +vt 0.539474 0.375000 +vt 0.513158 0.375000 +vt 0.486842 0.375000 +vt 0.460526 0.375000 +vt 0.434211 0.375000 +vt 0.842105 0.232143 +vt 0.828947 0.375000 +vt 0.802632 0.375000 +vt 0.776316 0.375000 +vt 0.750000 0.375000 +vt 0.723684 0.375000 +vt 0.697368 0.375000 +vt 0.605263 -0.000000 +vt 0.631579 -0.000000 +vt 0.657895 -0.000000 +vt 0.684211 -0.000000 +vt 0.710526 -0.000000 +vt 0.736842 -0.000000 +vt 0.789474 -0.000000 +vt 0.815789 -0.000000 +vt 0.763158 -0.000000 +vt 0.842105 -0.000000 +vt 0.421053 -0.000000 +vt 0.447368 -0.000000 +vt 0.473684 -0.000000 +vt 0.500000 -0.000000 +vt 0.526316 -0.000000 +vt 0.552632 -0.000000 +vt 0.578947 -0.000000 +vt 0.907895 0.517857 +vt 0.894737 0.303571 +vt 0.907895 0.303571 +vt 0.894737 0.517857 +vt 0.881579 0.303571 +vt 0.881579 0.517857 +vt 0.868421 0.303571 +vt 0.868421 0.517857 +vt 0.855263 0.303571 +vt 0.855263 0.517857 +vt 0.842105 0.303571 +vt 0.921053 0.517857 +vt 0.921053 0.303571 +vt 0.815789 0.232143 +vt 0.605263 0.232143 +vt 0.421053 0.232143 +vt 0.631579 0.232143 +vt 0.447368 0.232143 +vt 0.657895 0.232143 +vt 0.473684 0.232143 +vt 0.684211 0.232143 +vt 0.500000 0.232143 +vt 0.710526 0.232143 +vt 0.526316 0.232143 +vt 0.736842 0.232143 +vt 0.552632 0.232143 +vt 0.789474 0.232143 +vt 0.763158 0.232143 +vt 0.578947 0.232143 +vt 0.671053 0.375000 +vt 0.644737 0.375000 +vt 0.618421 0.375000 +vt 0.592105 0.375000 +vt 0.565789 0.375000 +vt 0.539474 0.375000 +vt 0.513158 0.375000 +vt 0.486842 0.375000 +vt 0.460526 0.375000 +vt 0.434211 0.375000 +vt 0.842105 0.232143 +vt 0.828947 0.375000 +vt 0.802632 0.375000 +vt 0.776316 0.375000 +vt 0.750000 0.375000 +vt 0.723684 0.375000 +vt 0.697368 0.375000 +vt 0.605263 -0.000000 +vt 0.631579 -0.000000 +vt 0.657895 -0.000000 +vt 0.684211 -0.000000 +vt 0.710526 -0.000000 +vt 0.736842 -0.000000 +vt 0.815789 -0.000000 +vt 0.763158 -0.000000 +vt 0.842105 -0.000000 +vt 0.789474 -0.000000 +vt 0.447368 -0.000000 +vt 0.473684 -0.000000 +vt 0.500000 -0.000000 +vt 0.526316 -0.000000 +vt 0.552632 -0.000000 +vt 0.578947 -0.000000 +vt 0.815789 0.232143 +vt 0.605263 0.232143 +vt 0.421053 0.232143 +vt 0.631579 0.232143 +vt 0.447368 0.232143 +vt 0.657895 0.232143 +vt 0.473684 0.232143 +vt 0.684211 0.232143 +vt 0.500000 0.232143 +vt 0.710526 0.232143 +vt 0.526316 0.232143 +vt 0.736842 0.232143 +vt 0.552632 0.232143 +vt 0.789474 0.232143 +vt 0.763158 0.232143 +vt 0.578947 0.232143 +vt 0.671053 0.375000 +vt 0.644737 0.375000 +vt 0.618421 0.375000 +vt 0.592105 0.375000 +vt 0.565789 0.375000 +vt 0.539474 0.375000 +vt 0.513158 0.375000 +vt 0.486842 0.375000 +vt 0.460526 0.375000 +vt 0.434211 0.375000 +vt 0.842105 0.232143 +vt 0.828947 0.375000 +vt 0.802632 0.375000 +vt 0.776316 0.375000 +vt 0.750000 0.375000 +vt 0.723684 0.375000 +vt 0.697368 0.375000 +vt 0.631579 -0.000000 +vt 0.657895 -0.000000 +vt 0.684211 -0.000000 +vt 0.710526 -0.000000 +vt 0.736842 -0.000000 +vt 0.815789 -0.000000 +vt 0.763158 -0.000000 +vt 0.842105 -0.000000 +vt 0.789474 -0.000000 +vt 0.421053 -0.000000 +vt 0.447368 -0.000000 +vt 0.473684 -0.000000 +vt 0.500000 -0.000000 +vt 0.526316 -0.000000 +vt 0.552632 -0.000000 +vt 0.578947 -0.000000 +vt 0.605263 -0.000000 +vt 0.815789 0.232143 +vt 0.605263 0.232143 +vt 0.421053 0.232143 +vt 0.631579 0.232143 +vt 0.447368 0.232143 +vt 0.657895 0.232143 +vt 0.473684 0.232143 +vt 0.684211 0.232143 +vt 0.500000 0.232143 +vt 0.710526 0.232143 +vt 0.526316 0.232143 +vt 0.736842 0.232143 +vt 0.552632 0.232143 +vt 0.789474 0.232143 +vt 0.763158 0.232143 +vt 0.578947 0.232143 +vt 0.671053 0.375000 +vt 0.644737 0.375000 +vt 0.618421 0.375000 +vt 0.592105 0.375000 +vt 0.565789 0.375000 +vt 0.539474 0.375000 +vt 0.513158 0.375000 +vt 0.486842 0.375000 +vt 0.460526 0.375000 +vt 0.434211 0.375000 +vt 0.842105 0.232143 +vt 0.828947 0.375000 +vt 0.802632 0.375000 +vt 0.776316 0.375000 +vt 0.750000 0.375000 +vt 0.723684 0.375000 +vt 0.697368 0.375000 +vt 0.605263 -0.000000 +vt 0.631579 -0.000000 +vt 0.657895 -0.000000 +vt 0.684211 -0.000000 +vt 0.710526 -0.000000 +vt 0.736842 -0.000000 +vt 0.815789 -0.000000 +vt 0.763158 -0.000000 +vt 0.842105 -0.000000 +vt 0.789474 -0.000000 +vt 0.421053 -0.000000 +vt 0.447368 -0.000000 +vt 0.473684 -0.000000 +vt 0.500000 -0.000000 +vt 0.526316 -0.000000 +vt 0.552632 -0.000000 +vt 0.578947 -0.000000 +vt 0.907895 0.517857 +vt 0.894737 0.303571 +vt 0.907895 0.303571 +vt 0.894737 0.517857 +vt 0.881579 0.303571 +vt 0.881579 0.517857 +vt 0.868421 0.303571 +vt 0.868421 0.517857 +vt 0.855263 0.303571 +vt 0.855263 0.517857 +vt 0.842105 0.303571 +vt 0.921053 0.517857 +vt 0.921053 0.303571 +vt 0.907895 0.517857 +vt 0.894737 0.303571 +vt 0.907895 0.303571 +vt 0.894737 0.517857 +vt 0.881579 0.303571 +vt 0.881579 0.517857 +vt 0.868421 0.303571 +vt 0.868421 0.517857 +vt 0.855263 0.303571 +vt 0.855263 0.517857 +vt 0.842105 0.303571 +vt 0.921053 0.517857 +vt 0.921053 0.303571 +vt 0.907895 0.517857 +vt 0.894737 0.303571 +vt 0.907895 0.303571 +vt 0.894737 0.517857 +vt 0.881579 0.303571 +vt 0.881579 0.517857 +vt 0.868421 0.303571 +vt 0.868421 0.517857 +vt 0.855263 0.303571 +vt 0.855263 0.517857 +vt 0.842105 0.303571 +vt 0.921053 0.517857 +vt 0.921053 0.303571 +vt 0.157895 0.428571 +vt 0.513158 0.428571 +vt 0.197368 0.428571 +vt 0.552632 0.428571 +vt 0.236842 0.428571 +vt 0.592105 0.428571 +vt 0.276316 0.428571 +vt 0.315789 0.428571 +vt 0.039474 0.428571 +vt 0.355263 0.428571 +vt 0.078947 0.428571 +vt 0.394737 0.428571 +vt 0.118421 0.428571 +vt 0.473684 0.428571 +vt 0.434211 0.428571 +vt 0.000000 -0.000000 +vt 0.842105 0.517857 +vt 0.421053 -0.000000 +vt 0.842105 0.517857 +vt 0.842105 0.517857 +vt 0.842105 0.517857 +vn 0.0000 -1.0000 0.0000 +vn -0.9991 0.0000 -0.0416 +vn 0.9991 0.0000 -0.0416 +vn 0.0000 0.8321 -0.5547 +vn 0.0000 -0.8321 -0.5547 +vn 0.0000 0.8944 -0.4472 +vn 0.9995 0.0000 -0.0312 +vn -0.9995 0.0000 -0.0312 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.8944 0.4472 +vn -0.9995 0.0000 0.0312 +vn 0.9995 0.0000 0.0312 +vn -0.4472 0.8944 0.0000 +vn -0.0312 0.0000 -0.9995 +vn -0.0312 0.0000 0.9995 +vn 0.4472 0.8944 0.0000 +vn 0.0312 0.0000 0.9995 +vn 0.0312 0.0000 -0.9995 +vn 0.9991 0.0000 0.0416 +vn -0.9991 0.0000 0.0416 +vn 0.0000 0.8321 0.5547 +vn 0.0000 -0.8321 0.5547 +vn -0.0416 0.0000 0.9991 +vn -0.0416 0.0000 -0.9991 +vn -0.5547 0.8321 0.0000 +vn -0.5547 -0.8321 0.0000 +vn 0.0416 0.0000 -0.9991 +vn 0.0416 0.0000 0.9991 +vn 0.5547 0.8321 0.0000 +vn 0.5547 -0.8321 0.0000 +vn 0.3713 0.2425 -0.8963 +vn -0.0000 0.2425 -0.9701 +vn 0.6860 0.2425 -0.6860 +vn 0.8963 0.2425 -0.3713 +vn 0.9701 0.2425 -0.0000 +vn 0.8963 0.2425 0.3713 +vn 0.6860 0.2425 0.6860 +vn 0.3713 0.2425 0.8963 +vn -0.0000 0.2425 0.9701 +vn -0.3713 0.2425 0.8963 +vn -0.6860 0.2425 0.6860 +vn -0.8963 0.2425 0.3713 +vn -0.9701 0.2425 0.0000 +vn -0.8963 0.2425 -0.3713 +vn -0.6860 0.2425 -0.6860 +vn -0.3713 0.2425 -0.8963 +vn -0.9239 0.0000 -0.3827 +vn -1.0000 0.0000 -0.0000 +vn 0.9239 0.0000 0.3827 +vn 1.0000 0.0000 -0.0000 +vn -0.9239 0.0000 0.3827 +vn 0.9239 0.0000 -0.3827 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn -0.0000 0.0000 1.0000 +vn -0.0000 0.0000 -1.0000 +vn -0.3827 0.0000 -0.9239 +vn 0.3827 0.0000 0.9239 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.0000 -0.1240 0.9923 +vn 0.3797 -0.1240 0.9167 +vn -0.3797 -0.1240 -0.9167 +vn -0.7016 -0.1240 -0.7016 +vn 0.7016 -0.1240 0.7016 +vn -0.9167 -0.1240 -0.3797 +vn 0.9167 -0.1240 0.3797 +vn -0.9923 -0.1240 -0.0000 +vn 0.9923 -0.1240 0.0000 +vn -0.9167 -0.1240 0.3797 +vn 0.9167 -0.1240 -0.3797 +vn -0.7016 -0.1240 0.7016 +vn 0.7016 -0.1240 -0.7016 +vn -0.3797 -0.1240 0.9167 +vn 0.3797 -0.1240 -0.9167 +vn -0.0000 -0.1240 -0.9923 +vn 0.0127 0.3525 -0.9357 +vn -0.1164 0.9864 0.1164 +vn 0.3598 0.3824 -0.8511 +vn 0.6504 0.3925 -0.6504 +vn 0.8511 0.3824 -0.3598 +vn 0.9357 0.3525 -0.0127 +vn 0.8863 0.3053 0.3484 +vn 0.6991 0.2457 0.6714 +vn 0.3936 0.1823 0.9010 +vn 0.0149 0.1259 0.9919 +vn -0.3736 0.0869 0.9235 +vn -0.7052 0.0730 0.7052 +vn -0.9235 0.0869 0.3736 +vn -0.9919 0.1259 -0.0149 +vn -0.9010 0.1823 -0.3936 +vn -0.6714 0.2457 -0.6991 +vn -0.3484 0.3053 -0.8863 +vn 0.6325 0.4472 -0.6325 +vn 0.8263 0.4472 -0.3423 +vn 0.3423 0.4472 -0.8263 +vn 0.0000 0.4472 -0.8944 +vn -0.3423 0.4472 -0.8263 +vn -0.6325 0.4472 -0.6325 +vn -0.8263 0.4472 0.3423 +vn -0.8944 0.4472 0.0000 +vn -0.8263 0.4472 -0.3423 +vn -0.6325 0.4472 0.6325 +vn -0.3423 0.4472 0.8263 +vn 0.0000 0.4472 0.8944 +vn 0.3423 0.4472 0.8263 +vn 0.6325 0.4472 0.6325 +vn 0.8263 0.4472 0.3423 +vn 0.8944 0.4472 -0.0000 +vn -0.5000 0.0000 -0.8660 +vn 0.5000 0.0000 -0.8660 +vn 0.5000 0.0000 0.8660 +vn -0.5000 0.0000 0.8660 +vn -0.0127 0.3525 0.9357 +vn 0.1164 0.9864 -0.1164 +vn -0.3598 0.3824 0.8511 +vn -0.6504 0.3925 0.6504 +vn -0.8511 0.3824 0.3598 +vn -0.9357 0.3525 0.0127 +vn -0.8863 0.3053 -0.3484 +vn -0.6991 0.2457 -0.6714 +vn -0.3936 0.1823 -0.9010 +vn -0.0149 0.1259 -0.9919 +vn 0.3736 0.0869 -0.9235 +vn 0.7052 0.0730 -0.7052 +vn 0.9235 0.0869 -0.3736 +vn 0.9919 0.1259 0.0149 +vn 0.9010 0.1823 0.3936 +vn 0.6714 0.2457 0.6991 +vn 0.3484 0.3053 0.8863 +vn -0.9357 0.3525 -0.0127 +vn 0.1164 0.9864 0.1164 +vn -0.8511 0.3824 -0.3598 +vn -0.6504 0.3925 -0.6504 +vn -0.3598 0.3824 -0.8511 +vn -0.0127 0.3525 -0.9357 +vn 0.3484 0.3053 -0.8863 +vn 0.6714 0.2457 -0.6991 +vn 0.9010 0.1823 -0.3936 +vn 0.9919 0.1259 -0.0149 +vn 0.9235 0.0869 0.3736 +vn 0.7052 0.0730 0.7052 +vn 0.3737 0.0869 0.9235 +vn -0.0149 0.1259 0.9919 +vn -0.3936 0.1823 0.9010 +vn -0.6991 0.2457 0.6714 +vn -0.8863 0.3053 0.3484 +vn 0.9357 0.3525 0.0127 +vn -0.1164 0.9864 -0.1164 +vn 0.8511 0.3824 0.3598 +vn 0.6504 0.3925 0.6504 +vn 0.3598 0.3824 0.8511 +vn 0.0127 0.3525 0.9357 +vn -0.3484 0.3053 0.8863 +vn -0.6714 0.2457 0.6991 +vn -0.9010 0.1823 0.3936 +vn -0.9919 0.1259 0.0149 +vn -0.9235 0.0869 -0.3736 +vn -0.7052 0.0730 -0.7052 +vn -0.3737 0.0869 -0.9235 +vn 0.0149 0.1259 -0.9919 +vn 0.3936 0.1823 -0.9010 +vn 0.6991 0.2457 -0.6714 +vn 0.8863 0.3053 -0.3484 +vn -0.8660 0.0000 0.5000 +vn -0.8660 0.0000 -0.5000 +vn 0.8660 0.0000 -0.5000 +vn 0.8660 0.0000 0.5000 +s off +f 52/1/1 64/2/1 60/3/1 +f 69/4/1 101/5/1 102/6/1 +f 70/7/1 102/8/1 103/9/1 +f 70/7/1 104/10/1 71/11/1 +f 71/11/1 105/12/1 72/13/1 +f 73/14/1 105/15/1 106/16/1 +f 74/17/1 106/18/1 107/19/1 +f 75/20/1 107/21/1 108/22/1 +f 75/20/1 109/23/1 76/24/1 +f 77/25/1 109/26/1 110/27/1 +f 78/28/1 110/29/1 111/30/1 +f 78/28/1 112/31/1 79/32/1 +f 79/32/1 113/33/1 80/34/1 +f 66/35/1 100/36/1 67/37/1 +f 81/38/1 113/39/1 114/40/1 +f 67/37/1 101/41/1 68/42/1 +f 81/38/1 99/43/1 66/35/1 +f 125/44/1 121/45/1 117/46/1 +f 133/47/2 132/48/2 134/49/2 +f 131/50/3 136/51/3 132/48/3 +f 135/52/4 131/53/4 133/54/4 +f 136/51/5 134/55/5 132/56/5 +f 137/57/1 139/58/1 141/59/1 +f 138/60/6 142/61/6 140/62/6 +f 142/63/7 137/57/7 141/59/7 +f 139/64/8 142/63/8 141/59/8 +f 144/65/9 152/66/9 148/67/9 +f 149/68/1 151/69/1 153/70/1 +f 158/71/1 190/72/1 191/73/1 +f 159/74/1 191/75/1 192/76/1 +f 159/74/1 193/77/1 160/78/1 +f 160/78/1 194/79/1 161/80/1 +f 162/81/1 194/82/1 195/83/1 +f 163/84/1 195/85/1 196/86/1 +f 164/87/1 196/88/1 197/89/1 +f 164/87/1 198/90/1 165/91/1 +f 166/92/1 198/93/1 199/94/1 +f 167/95/1 199/96/1 200/97/1 +f 167/95/1 201/98/1 168/99/1 +f 168/99/1 202/100/1 169/101/1 +f 155/102/1 189/103/1 156/104/1 +f 170/105/1 202/106/1 203/107/1 +f 156/104/1 190/108/1 157/109/1 +f 170/105/1 188/110/1 155/102/1 +f 210/111/1 208/112/1 206/113/1 +f 220/114/1 222/115/1 224/116/1 +f 221/117/10 225/118/10 223/119/10 +f 225/120/11 220/114/11 224/116/11 +f 222/121/12 225/120/12 224/116/12 +f 229/122/1 261/123/1 262/124/1 +f 230/125/1 262/126/1 263/127/1 +f 230/125/1 264/128/1 231/129/1 +f 231/129/1 265/130/1 232/131/1 +f 233/132/1 265/133/1 266/134/1 +f 234/135/1 266/136/1 267/137/1 +f 235/138/1 267/139/1 268/140/1 +f 235/138/1 269/141/1 236/142/1 +f 237/143/1 269/144/1 270/145/1 +f 237/143/1 271/146/1 238/147/1 +f 238/147/1 272/148/1 239/149/1 +f 239/149/1 273/150/1 240/151/1 +f 226/152/1 260/153/1 227/154/1 +f 241/155/1 273/156/1 274/157/1 +f 227/154/1 261/158/1 228/159/1 +f 241/155/1 259/160/1 226/152/1 +f 285/161/1 281/162/1 277/163/1 +f 291/164/1 293/165/1 295/166/1 +f 292/167/13 296/168/13 294/169/13 +f 296/170/14 291/164/14 295/166/14 +f 293/171/15 296/170/15 295/166/15 +f 300/172/1 332/173/1 333/174/1 +f 301/175/1 333/176/1 334/177/1 +f 301/175/1 335/178/1 302/179/1 +f 302/179/1 336/180/1 303/181/1 +f 304/182/1 336/183/1 337/184/1 +f 305/185/1 337/186/1 338/187/1 +f 306/188/1 338/189/1 339/190/1 +f 306/188/1 340/191/1 307/192/1 +f 308/193/1 340/194/1 341/195/1 +f 309/196/1 341/197/1 342/198/1 +f 309/196/1 343/199/1 310/200/1 +f 310/200/1 344/201/1 311/202/1 +f 297/203/1 331/204/1 298/205/1 +f 312/206/1 344/207/1 345/208/1 +f 298/205/1 332/209/1 299/210/1 +f 297/203/1 345/211/1 330/212/1 +f 356/213/1 352/214/1 348/215/1 +f 362/216/1 364/217/1 366/218/1 +f 363/219/16 367/220/16 365/221/16 +f 367/222/17 362/216/17 366/218/17 +f 364/223/18 367/222/18 366/218/18 +f 370/224/19 369/225/19 371/226/19 +f 368/227/20 373/228/20 369/225/20 +f 372/229/21 368/230/21 370/231/21 +f 373/228/22 371/232/22 369/233/22 +f 381/234/9 379/235/9 375/236/9 +f 380/237/1 382/238/1 384/239/1 +f 388/240/23 387/241/23 389/242/23 +f 386/243/24 391/244/24 387/241/24 +f 390/245/25 386/246/25 388/247/25 +f 391/244/26 389/248/26 387/249/26 +f 393/250/9 401/251/9 397/252/9 +f 398/253/1 400/254/1 402/255/1 +f 407/256/27 404/257/27 405/258/27 +f 404/257/28 409/259/28 405/258/28 +f 408/260/29 404/261/29 406/262/29 +f 409/259/30 407/263/30 405/264/30 +f 411/265/9 419/266/9 415/267/9 +f 416/268/1 418/269/1 420/270/1 +f 52/1/1 51/271/1 50/272/1 +f 50/272/1 65/273/1 52/1/1 +f 65/273/1 64/2/1 52/1/1 +f 64/2/1 63/274/1 62/275/1 +f 62/275/1 61/276/1 60/3/1 +f 60/3/1 59/277/1 58/278/1 +f 58/278/1 57/279/1 56/280/1 +f 56/280/1 55/281/1 52/1/1 +f 55/281/1 54/282/1 52/1/1 +f 54/282/1 53/283/1 52/1/1 +f 64/2/1 62/275/1 60/3/1 +f 60/3/1 58/278/1 52/1/1 +f 58/278/1 56/280/1 52/1/1 +f 69/4/1 68/284/1 101/5/1 +f 70/7/1 69/4/1 102/8/1 +f 70/7/1 103/285/1 104/10/1 +f 71/11/1 104/286/1 105/12/1 +f 73/14/1 72/13/1 105/15/1 +f 74/17/1 73/14/1 106/18/1 +f 75/20/1 74/17/1 107/21/1 +f 75/20/1 108/287/1 109/23/1 +f 77/25/1 76/24/1 109/26/1 +f 78/28/1 77/25/1 110/29/1 +f 78/28/1 111/288/1 112/31/1 +f 79/32/1 112/289/1 113/33/1 +f 66/35/1 99/290/1 100/36/1 +f 81/38/1 80/34/1 113/39/1 +f 67/37/1 100/291/1 101/41/1 +f 81/38/1 114/292/1 99/43/1 +f 117/46/1 116/293/1 115/294/1 +f 115/294/1 130/295/1 117/46/1 +f 130/295/1 129/296/1 117/46/1 +f 129/296/1 128/297/1 127/298/1 +f 127/298/1 126/299/1 125/44/1 +f 125/44/1 124/300/1 121/45/1 +f 124/300/1 123/301/1 121/45/1 +f 123/301/1 122/302/1 121/45/1 +f 121/45/1 120/303/1 119/304/1 +f 119/304/1 118/305/1 117/46/1 +f 129/296/1 127/298/1 117/46/1 +f 127/298/1 125/44/1 117/46/1 +f 121/45/1 119/304/1 117/46/1 +f 133/47/2 131/50/2 132/48/2 +f 131/50/3 135/52/3 136/51/3 +f 142/63/7 138/60/7 137/57/7 +f 139/64/8 140/306/8 142/63/8 +f 148/67/9 146/307/9 144/65/9 +f 144/65/9 154/308/9 152/66/9 +f 152/66/9 150/309/9 148/67/9 +f 153/70/1 143/310/1 145/311/1 +f 145/311/1 147/312/1 153/70/1 +f 147/312/1 149/68/1 153/70/1 +f 158/71/1 157/313/1 190/72/1 +f 159/74/1 158/71/1 191/75/1 +f 159/74/1 192/314/1 193/77/1 +f 160/78/1 193/315/1 194/79/1 +f 162/81/1 161/80/1 194/82/1 +f 163/84/1 162/81/1 195/85/1 +f 164/87/1 163/84/1 196/88/1 +f 164/87/1 197/316/1 198/90/1 +f 166/92/1 165/91/1 198/93/1 +f 167/95/1 166/92/1 199/96/1 +f 167/95/1 200/317/1 201/98/1 +f 168/99/1 201/318/1 202/100/1 +f 155/102/1 188/319/1 189/103/1 +f 170/105/1 169/101/1 202/106/1 +f 156/104/1 189/320/1 190/108/1 +f 170/105/1 203/321/1 188/110/1 +f 206/113/1 205/322/1 204/323/1 +f 204/323/1 219/324/1 218/325/1 +f 218/325/1 217/326/1 216/327/1 +f 216/327/1 215/328/1 214/329/1 +f 214/329/1 213/330/1 212/331/1 +f 212/331/1 211/332/1 210/111/1 +f 210/111/1 209/333/1 208/112/1 +f 208/112/1 207/334/1 206/113/1 +f 206/113/1 204/323/1 214/329/1 +f 204/323/1 218/325/1 214/329/1 +f 218/325/1 216/327/1 214/329/1 +f 214/329/1 212/331/1 206/113/1 +f 212/331/1 210/111/1 206/113/1 +f 225/120/11 221/117/11 220/114/11 +f 222/121/12 223/335/12 225/120/12 +f 229/122/1 228/336/1 261/123/1 +f 230/125/1 229/122/1 262/126/1 +f 230/125/1 263/337/1 264/128/1 +f 231/129/1 264/338/1 265/130/1 +f 233/132/1 232/131/1 265/133/1 +f 234/135/1 233/132/1 266/136/1 +f 235/138/1 234/135/1 267/139/1 +f 235/138/1 268/339/1 269/141/1 +f 237/143/1 236/142/1 269/144/1 +f 237/143/1 270/340/1 271/146/1 +f 238/147/1 271/341/1 272/148/1 +f 239/149/1 272/342/1 273/150/1 +f 226/152/1 259/343/1 260/153/1 +f 241/155/1 240/151/1 273/156/1 +f 227/154/1 260/344/1 261/158/1 +f 241/155/1 274/345/1 259/160/1 +f 277/163/1 276/346/1 275/347/1 +f 275/347/1 290/348/1 289/349/1 +f 289/349/1 288/350/1 287/351/1 +f 287/351/1 286/352/1 285/161/1 +f 285/161/1 284/353/1 281/162/1 +f 284/353/1 283/354/1 281/162/1 +f 283/354/1 282/355/1 281/162/1 +f 281/162/1 280/356/1 279/357/1 +f 279/357/1 278/358/1 277/163/1 +f 277/163/1 275/347/1 289/349/1 +f 289/349/1 287/351/1 277/163/1 +f 287/351/1 285/161/1 277/163/1 +f 281/162/1 279/357/1 277/163/1 +f 296/170/14 292/167/14 291/164/14 +f 293/171/15 294/359/15 296/170/15 +f 300/172/1 299/360/1 332/173/1 +f 301/175/1 300/172/1 333/176/1 +f 301/175/1 334/361/1 335/178/1 +f 302/179/1 335/362/1 336/180/1 +f 304/182/1 303/181/1 336/183/1 +f 305/185/1 304/182/1 337/186/1 +f 306/188/1 305/185/1 338/189/1 +f 306/188/1 339/363/1 340/191/1 +f 308/193/1 307/192/1 340/194/1 +f 309/196/1 308/193/1 341/197/1 +f 309/196/1 342/364/1 343/199/1 +f 310/200/1 343/365/1 344/201/1 +f 297/203/1 330/366/1 331/204/1 +f 312/206/1 311/202/1 344/207/1 +f 298/205/1 331/367/1 332/209/1 +f 297/203/1 312/206/1 345/211/1 +f 348/215/1 347/368/1 346/369/1 +f 346/369/1 361/370/1 348/215/1 +f 361/370/1 360/371/1 348/215/1 +f 360/371/1 359/372/1 358/373/1 +f 358/373/1 357/374/1 356/213/1 +f 356/213/1 355/375/1 352/214/1 +f 355/375/1 354/376/1 352/214/1 +f 354/376/1 353/377/1 352/214/1 +f 352/214/1 351/378/1 350/379/1 +f 350/379/1 349/380/1 348/215/1 +f 360/371/1 358/373/1 348/215/1 +f 358/373/1 356/213/1 348/215/1 +f 352/214/1 350/379/1 348/215/1 +f 367/222/17 363/219/17 362/216/17 +f 364/223/18 365/381/18 367/222/18 +f 370/224/19 368/227/19 369/225/19 +f 368/227/20 372/229/20 373/228/20 +f 379/235/9 377/382/9 375/236/9 +f 375/236/9 385/383/9 383/384/9 +f 383/384/9 381/234/9 375/236/9 +f 384/239/1 374/385/1 376/386/1 +f 376/386/1 378/387/1 384/239/1 +f 378/387/1 380/237/1 384/239/1 +f 388/240/23 386/243/23 387/241/23 +f 386/243/24 390/245/24 391/244/24 +f 397/252/9 395/388/9 393/250/9 +f 393/250/9 403/389/9 401/251/9 +f 401/251/9 399/390/9 397/252/9 +f 402/255/1 392/391/1 394/392/1 +f 394/392/1 396/393/1 402/255/1 +f 396/393/1 398/253/1 402/255/1 +f 407/256/27 406/394/27 404/257/27 +f 404/257/28 408/260/28 409/259/28 +f 415/267/9 413/395/9 411/265/9 +f 411/265/9 421/396/9 419/266/9 +f 419/266/9 417/397/9 415/267/9 +f 420/270/1 410/398/1 412/399/1 +f 412/399/1 414/400/1 420/270/1 +f 414/400/1 416/268/1 420/270/1 +s 1 +f 16/401/31 1/402/32 17/403/9 +f 15/404/33 16/401/31 17/405/9 +f 14/406/34 15/404/33 17/407/9 +f 13/408/35 14/406/34 17/409/9 +f 12/410/36 13/408/35 17/411/9 +f 11/412/37 12/410/36 17/413/9 +f 10/414/38 11/412/37 17/415/9 +f 9/416/39 10/414/38 17/417/9 +f 9/416/39 17/418/9 8/419/40 +f 7/420/41 8/419/40 17/421/9 +f 6/422/42 7/420/41 17/423/9 +f 5/424/43 6/422/42 17/425/9 +f 4/426/44 5/427/43 17/428/9 +f 3/429/45 4/426/44 17/430/9 +f 2/431/46 3/429/45 17/432/9 +f 1/402/32 2/431/46 17/433/9 +f 4/426/47 22/434/48 5/427/48 +f 12/410/49 30/435/50 13/408/50 +f 5/424/48 23/436/51 6/422/51 +f 13/408/50 31/437/52 14/406/52 +f 6/422/51 24/438/53 7/420/53 +f 14/406/52 32/439/54 15/404/54 +f 7/420/53 25/440/55 8/419/55 +f 15/404/54 33/441/56 16/401/56 +f 8/419/55 26/442/57 9/416/57 +f 1/402/58 19/443/59 2/431/59 +f 16/401/56 18/444/58 1/402/58 +f 9/416/57 27/445/60 10/414/60 +f 2/431/59 20/446/61 3/429/61 +f 10/414/60 28/447/62 11/412/62 +f 3/429/61 21/448/47 4/426/47 +f 11/412/62 29/449/49 12/410/49 +f 26/442/63 43/450/64 27/445/64 +f 19/443/65 36/451/66 20/446/66 +f 27/445/64 44/452/67 28/447/67 +f 20/446/66 37/453/68 21/448/68 +f 28/447/67 45/454/69 29/449/69 +f 21/448/68 38/455/70 22/434/70 +f 29/449/69 46/456/71 30/435/71 +f 22/457/70 39/458/72 23/436/72 +f 30/435/71 47/459/73 31/437/73 +f 23/436/72 40/460/74 24/438/74 +f 31/437/73 48/461/75 32/439/75 +f 24/438/74 41/462/76 25/440/76 +f 32/439/75 49/463/77 33/441/77 +f 25/440/76 42/464/63 26/442/63 +f 18/444/78 35/465/65 19/443/65 +f 33/441/77 34/466/78 18/444/78 +f 47/467/52 64/468/54 48/469/54 +f 40/470/53 57/471/55 41/472/55 +f 48/469/54 65/473/56 49/474/56 +f 41/472/55 58/475/57 42/476/57 +f 34/477/58 51/478/59 35/479/59 +f 49/474/56 50/480/58 34/477/58 +f 42/476/57 59/481/60 43/482/60 +f 35/479/59 52/483/61 36/484/61 +f 43/482/60 60/485/62 44/486/62 +f 36/484/61 53/487/47 37/488/47 +f 44/486/62 61/489/49 45/490/49 +f 37/488/47 54/491/48 38/492/48 +f 45/490/49 62/493/50 46/494/50 +f 38/495/48 55/496/51 39/458/51 +f 46/494/50 63/497/52 47/467/52 +f 39/458/51 56/498/53 40/470/53 +f 68/42/53 83/499/51 67/37/51 +f 76/24/54 91/500/52 75/20/52 +f 69/4/55 84/501/53 68/284/53 +f 77/25/56 92/502/54 76/24/54 +f 70/7/57 85/503/55 69/4/55 +f 78/28/58 93/504/56 77/25/56 +f 71/11/60 86/505/57 70/7/57 +f 79/32/59 94/506/58 78/28/58 +f 72/13/62 87/507/60 71/11/60 +f 80/34/61 95/508/59 79/32/59 +f 73/14/49 88/509/62 72/13/62 +f 81/38/47 96/510/61 80/34/61 +f 74/17/50 89/511/49 73/14/49 +f 67/37/51 82/512/48 66/35/48 +f 66/35/48 97/513/47 81/38/47 +f 75/20/52 90/514/50 74/17/50 +f 94/506/79 98/515/80 93/504/81 +f 92/502/82 93/504/81 98/516/80 +f 91/500/83 92/502/82 98/517/80 +f 90/514/84 91/500/83 98/518/80 +f 89/511/85 90/514/84 98/519/80 +f 88/509/86 89/511/85 98/520/80 +f 87/507/87 88/509/86 98/521/80 +f 86/505/88 87/507/87 98/522/80 +f 85/503/89 86/505/88 98/523/80 +f 84/501/90 85/503/89 98/524/80 +f 83/499/91 84/525/90 98/526/80 +f 82/512/92 83/499/91 98/527/80 +f 97/513/93 82/512/92 98/528/80 +f 96/510/94 97/513/93 98/529/80 +f 95/508/95 96/510/94 98/530/80 +f 94/506/79 95/508/95 98/531/80 +f 109/23/96 124/532/97 125/533/96 +f 109/26/96 126/534/98 110/27/98 +f 110/29/98 127/535/99 111/30/99 +f 111/288/99 128/536/100 112/31/100 +f 113/33/101 128/536/100 129/537/101 +f 100/36/102 115/538/103 116/539/102 +f 113/39/101 130/540/104 114/40/104 +f 100/291/102 117/541/105 101/41/105 +f 114/292/104 115/538/103 99/43/103 +f 102/6/106 117/542/105 118/543/106 +f 102/8/106 119/544/107 103/9/107 +f 103/285/107 120/545/108 104/10/108 +f 104/286/108 121/546/109 105/12/109 +f 105/15/109 122/547/110 106/16/110 +f 106/18/110 123/548/111 107/19/111 +f 107/21/111 124/532/97 108/22/97 +f 144/549/48 145/550/112 143/551/48 +f 146/552/112 147/553/113 145/550/112 +f 148/554/113 149/555/50 147/553/113 +f 150/556/50 151/557/114 149/555/50 +f 152/558/114 153/559/115 151/557/114 +f 154/560/115 143/551/48 153/561/115 +f 157/109/54 172/562/52 156/104/52 +f 165/91/53 180/563/51 164/87/51 +f 158/71/56 173/564/54 157/313/54 +f 166/92/55 181/565/53 165/91/53 +f 159/74/58 174/566/56 158/71/56 +f 167/95/57 182/567/55 166/92/55 +f 160/78/59 175/568/58 159/74/58 +f 168/99/60 183/569/57 167/95/57 +f 161/80/61 176/570/59 160/78/59 +f 169/101/62 184/571/60 168/99/60 +f 162/81/47 177/572/61 161/80/61 +f 170/105/49 185/573/62 169/101/62 +f 163/84/48 178/574/47 162/81/47 +f 156/104/52 171/575/50 155/102/50 +f 155/102/50 186/576/49 170/105/49 +f 164/87/51 179/577/48 163/84/48 +f 183/569/116 187/578/117 182/567/118 +f 181/565/119 182/567/118 187/579/117 +f 180/563/120 181/565/119 187/580/117 +f 179/577/121 180/563/120 187/581/117 +f 178/574/122 179/577/121 187/582/117 +f 177/572/123 178/574/122 187/583/117 +f 176/570/124 177/572/123 187/584/117 +f 175/568/125 176/570/124 187/585/117 +f 174/566/126 175/568/125 187/586/117 +f 173/564/127 174/566/126 187/587/117 +f 172/562/128 173/588/127 187/589/117 +f 171/575/129 172/562/128 187/590/117 +f 186/576/130 171/575/129 187/591/117 +f 185/573/131 186/576/130 187/592/117 +f 184/571/132 185/573/131 187/593/117 +f 183/569/116 184/571/132 187/594/117 +f 198/90/105 213/595/102 214/596/105 +f 198/93/105 215/597/106 199/94/106 +f 199/96/106 216/598/107 200/97/107 +f 201/98/108 216/598/107 217/599/108 +f 202/100/109 217/599/108 218/600/109 +f 188/319/111 205/601/97 189/103/97 +f 202/106/109 219/602/110 203/107/110 +f 190/108/96 205/601/97 206/603/96 +f 203/321/110 204/604/111 188/110/111 +f 190/72/96 207/605/98 191/73/98 +f 191/75/98 208/606/99 192/76/99 +f 192/314/99 209/607/100 193/77/100 +f 193/315/100 210/608/101 194/79/101 +f 194/82/101 211/609/104 195/83/104 +f 195/85/104 212/610/103 196/86/103 +f 196/88/103 213/595/102 197/89/102 +f 228/159/62 243/611/60 227/154/60 +f 236/142/61 251/612/59 235/138/59 +f 229/122/49 244/613/62 228/336/62 +f 237/143/47 252/614/61 236/142/61 +f 230/125/50 245/615/49 229/122/49 +f 238/147/48 253/616/47 237/143/47 +f 231/129/52 246/617/50 230/125/50 +f 239/149/51 254/618/48 238/147/48 +f 232/131/54 247/619/52 231/129/52 +f 240/151/53 255/620/51 239/149/51 +f 233/132/56 248/621/54 232/131/54 +f 241/155/55 256/622/53 240/151/53 +f 234/135/58 249/623/56 233/132/56 +f 227/154/60 242/624/57 226/152/57 +f 226/152/57 257/625/55 241/155/55 +f 235/138/59 250/626/58 234/135/58 +f 254/618/133 258/627/134 253/616/135 +f 252/614/136 253/616/135 258/628/134 +f 251/612/137 252/614/136 258/629/134 +f 250/626/138 251/612/137 258/630/134 +f 249/623/139 250/626/138 258/631/134 +f 248/621/140 249/623/139 258/632/134 +f 247/619/141 248/621/140 258/633/134 +f 246/617/142 247/619/141 258/634/134 +f 245/615/143 246/617/142 258/635/134 +f 244/613/144 245/615/143 258/636/134 +f 243/611/145 244/637/144 258/638/134 +f 242/624/146 243/611/145 258/639/134 +f 257/625/147 242/624/146 258/640/134 +f 256/622/148 257/625/147 258/641/134 +f 255/620/149 256/622/148 258/642/134 +f 254/618/133 255/620/149 258/643/134 +f 268/339/100 285/644/101 269/141/101 +f 269/144/101 286/645/104 270/145/104 +f 270/340/104 287/646/103 271/146/103 +f 271/341/103 288/647/102 272/148/102 +f 273/150/105 288/647/102 289/648/105 +f 259/343/107 276/649/108 260/153/108 +f 273/156/105 290/650/106 274/157/106 +f 260/344/108 277/651/109 261/158/109 +f 274/345/106 275/652/107 259/160/107 +f 262/124/110 277/653/109 278/654/110 +f 262/126/110 279/655/111 263/127/111 +f 263/337/111 280/656/97 264/128/97 +f 264/338/97 281/657/96 265/130/96 +f 265/133/96 282/658/98 266/134/98 +f 266/136/98 283/659/99 267/137/99 +f 267/139/99 284/660/100 268/140/100 +f 299/210/61 314/661/59 298/205/59 +f 307/192/62 322/662/60 306/188/60 +f 300/172/47 315/663/61 299/360/61 +f 308/193/49 323/664/62 307/192/62 +f 301/175/48 316/665/47 300/172/47 +f 309/196/50 324/666/49 308/193/49 +f 302/179/51 317/667/48 301/175/48 +f 310/200/52 325/668/50 309/196/50 +f 303/181/53 318/669/51 302/179/51 +f 311/202/54 326/670/52 310/200/52 +f 304/182/55 319/671/53 303/181/53 +f 312/206/56 327/672/54 311/202/54 +f 305/185/57 320/673/55 304/182/55 +f 298/205/59 313/674/58 297/203/58 +f 297/203/58 328/675/56 312/206/56 +f 306/188/60 321/676/57 305/185/57 +f 325/668/150 329/677/151 324/666/152 +f 323/664/153 324/666/152 329/678/151 +f 322/662/154 323/664/153 329/679/151 +f 321/676/155 322/662/154 329/680/151 +f 320/673/156 321/676/155 329/681/151 +f 319/671/157 320/673/156 329/682/151 +f 318/669/158 319/671/157 329/683/151 +f 317/667/159 318/669/158 329/684/151 +f 316/665/160 317/667/159 329/685/151 +f 315/663/161 316/665/160 329/686/151 +f 314/661/162 315/687/161 329/688/151 +f 313/674/163 314/661/162 329/689/151 +f 328/675/164 313/674/163 329/690/151 +f 327/672/165 328/675/164 329/691/151 +f 326/670/166 327/672/165 329/692/151 +f 325/668/150 326/670/166 329/693/151 +f 340/191/109 355/694/108 356/695/109 +f 340/194/109 357/696/110 341/195/110 +f 341/197/110 358/697/111 342/198/111 +f 343/199/97 358/697/111 359/698/97 +f 343/365/97 360/699/96 344/201/96 +f 330/366/99 347/700/100 331/204/100 +f 345/208/98 360/699/96 361/701/98 +f 332/209/101 347/700/100 348/702/101 +f 345/211/98 346/703/99 330/212/99 +f 333/174/104 348/704/101 349/705/104 +f 333/176/104 350/706/103 334/177/103 +f 335/178/102 350/706/103 351/707/102 +f 335/362/102 352/708/105 336/180/105 +f 336/183/105 353/709/106 337/184/106 +f 337/186/106 354/710/107 338/187/107 +f 338/189/107 355/694/108 339/190/108 +f 375/711/50 376/712/114 374/713/50 +f 377/714/114 378/715/115 376/712/114 +f 379/716/115 380/717/48 378/715/115 +f 381/718/48 382/719/112 380/717/48 +f 383/720/112 384/721/113 382/719/112 +f 385/722/113 374/713/50 384/723/113 +f 393/724/57 394/725/167 392/726/57 +f 395/727/167 396/728/168 394/725/167 +f 397/729/168 398/730/58 396/728/168 +f 399/731/58 400/732/169 398/730/58 +f 401/733/169 402/734/170 400/732/169 +f 403/735/170 392/726/57 402/736/170 +f 411/737/58 412/738/169 410/739/58 +f 413/740/169 414/741/170 412/738/169 +f 415/742/170 416/743/57 414/741/170 +f 417/744/57 418/745/167 416/743/57 +f 419/746/167 420/747/168 418/745/167 +f 421/748/168 410/739/58 420/749/168 +f 4/426/47 21/448/47 22/434/48 +f 12/410/49 29/449/49 30/435/50 +f 5/424/48 22/457/48 23/436/51 +f 13/408/50 30/435/50 31/437/52 +f 6/422/51 23/436/51 24/438/53 +f 14/406/52 31/437/52 32/439/54 +f 7/420/53 24/438/53 25/440/55 +f 15/404/54 32/439/54 33/441/56 +f 8/419/55 25/440/55 26/442/57 +f 1/402/58 18/444/58 19/443/59 +f 16/401/56 33/441/56 18/444/58 +f 9/416/57 26/442/57 27/445/60 +f 2/431/59 19/443/59 20/446/61 +f 10/414/60 27/445/60 28/447/62 +f 3/429/61 20/446/61 21/448/47 +f 11/412/62 28/447/62 29/449/49 +f 26/442/63 42/750/63 43/450/64 +f 19/443/65 35/751/65 36/451/66 +f 27/445/64 43/752/64 44/452/67 +f 20/446/66 36/753/66 37/453/68 +f 28/447/67 44/754/67 45/454/69 +f 21/448/68 37/755/68 38/455/70 +f 29/449/69 45/756/69 46/456/71 +f 22/457/70 38/495/70 39/458/72 +f 30/435/71 46/757/71 47/459/73 +f 23/436/72 39/758/72 40/460/74 +f 31/437/73 47/759/73 48/461/75 +f 24/438/74 40/760/74 41/462/76 +f 32/439/75 48/761/75 49/463/77 +f 25/440/76 41/762/76 42/464/63 +f 18/444/78 34/763/78 35/465/65 +f 33/441/77 49/764/77 34/466/78 +f 47/467/52 63/497/52 64/468/54 +f 40/470/53 56/498/53 57/471/55 +f 48/469/54 64/468/54 65/473/56 +f 41/472/55 57/471/55 58/475/57 +f 34/477/58 50/480/58 51/478/59 +f 49/474/56 65/473/56 50/480/58 +f 42/476/57 58/475/57 59/481/60 +f 35/479/59 51/478/59 52/483/61 +f 43/482/60 59/481/60 60/485/62 +f 36/484/61 52/483/61 53/487/47 +f 44/486/62 60/485/62 61/489/49 +f 37/488/47 53/487/47 54/491/48 +f 45/490/49 61/489/49 62/493/50 +f 38/495/48 54/765/48 55/496/51 +f 46/494/50 62/493/50 63/497/52 +f 39/458/51 55/496/51 56/498/53 +f 68/42/53 84/525/53 83/499/51 +f 76/24/54 92/502/54 91/500/52 +f 69/4/55 85/503/55 84/501/53 +f 77/25/56 93/504/56 92/502/54 +f 70/7/57 86/505/57 85/503/55 +f 78/28/58 94/506/58 93/504/56 +f 71/11/60 87/507/60 86/505/57 +f 79/32/59 95/508/59 94/506/58 +f 72/13/62 88/509/62 87/507/60 +f 80/34/61 96/510/61 95/508/59 +f 73/14/49 89/511/49 88/509/62 +f 81/38/47 97/513/47 96/510/61 +f 74/17/50 90/514/50 89/511/49 +f 67/37/51 83/499/51 82/512/48 +f 66/35/48 82/512/48 97/513/47 +f 75/20/52 91/500/52 90/514/50 +f 109/23/96 108/287/97 124/532/97 +f 109/26/96 125/533/96 126/534/98 +f 110/29/98 126/534/98 127/535/99 +f 111/288/99 127/535/99 128/536/100 +f 113/33/101 112/289/100 128/536/100 +f 100/36/102 99/290/103 115/538/103 +f 113/39/101 129/537/101 130/540/104 +f 100/291/102 116/539/102 117/541/105 +f 114/292/104 130/540/104 115/538/103 +f 102/6/106 101/5/105 117/542/105 +f 102/8/106 118/543/106 119/544/107 +f 103/285/107 119/544/107 120/545/108 +f 104/286/108 120/545/108 121/546/109 +f 105/15/109 121/546/109 122/547/110 +f 106/18/110 122/547/110 123/548/111 +f 107/21/111 123/548/111 124/532/97 +f 144/549/48 146/552/112 145/550/112 +f 146/552/112 148/554/113 147/553/113 +f 148/554/113 150/556/50 149/555/50 +f 150/556/50 152/558/114 151/557/114 +f 152/558/114 154/766/115 153/559/115 +f 154/560/115 144/549/48 143/551/48 +f 157/109/54 173/588/54 172/562/52 +f 165/91/53 181/565/53 180/563/51 +f 158/71/56 174/566/56 173/564/54 +f 166/92/55 182/567/55 181/565/53 +f 159/74/58 175/568/58 174/566/56 +f 167/95/57 183/569/57 182/567/55 +f 160/78/59 176/570/59 175/568/58 +f 168/99/60 184/571/60 183/569/57 +f 161/80/61 177/572/61 176/570/59 +f 169/101/62 185/573/62 184/571/60 +f 162/81/47 178/574/47 177/572/61 +f 170/105/49 186/576/49 185/573/62 +f 163/84/48 179/577/48 178/574/47 +f 156/104/52 172/562/52 171/575/50 +f 155/102/50 171/575/50 186/576/49 +f 164/87/51 180/563/51 179/577/48 +f 198/90/105 197/316/102 213/595/102 +f 198/93/105 214/596/105 215/597/106 +f 199/96/106 215/597/106 216/598/107 +f 201/98/108 200/317/107 216/598/107 +f 202/100/109 201/318/108 217/599/108 +f 188/319/111 204/604/111 205/601/97 +f 202/106/109 218/600/109 219/602/110 +f 190/108/96 189/320/97 205/601/97 +f 203/321/110 219/602/110 204/604/111 +f 190/72/96 206/767/96 207/605/98 +f 191/75/98 207/605/98 208/606/99 +f 192/314/99 208/606/99 209/607/100 +f 193/315/100 209/607/100 210/608/101 +f 194/82/101 210/608/101 211/609/104 +f 195/85/104 211/609/104 212/610/103 +f 196/88/103 212/610/103 213/595/102 +f 228/159/62 244/637/62 243/611/60 +f 236/142/61 252/614/61 251/612/59 +f 229/122/49 245/615/49 244/613/62 +f 237/143/47 253/616/47 252/614/61 +f 230/125/50 246/617/50 245/615/49 +f 238/147/48 254/618/48 253/616/47 +f 231/129/52 247/619/52 246/617/50 +f 239/149/51 255/620/51 254/618/48 +f 232/131/54 248/621/54 247/619/52 +f 240/151/53 256/622/53 255/620/51 +f 233/132/56 249/623/56 248/621/54 +f 241/155/55 257/625/55 256/622/53 +f 234/135/58 250/626/58 249/623/56 +f 227/154/60 243/611/60 242/624/57 +f 226/152/57 242/624/57 257/625/55 +f 235/138/59 251/612/59 250/626/58 +f 268/339/100 284/660/100 285/644/101 +f 269/144/101 285/644/101 286/645/104 +f 270/340/104 286/645/104 287/646/103 +f 271/341/103 287/646/103 288/647/102 +f 273/150/105 272/342/102 288/647/102 +f 259/343/107 275/652/107 276/649/108 +f 273/156/105 289/648/105 290/650/106 +f 260/344/108 276/649/108 277/651/109 +f 274/345/106 290/650/106 275/652/107 +f 262/124/110 261/123/109 277/653/109 +f 262/126/110 278/654/110 279/655/111 +f 263/337/111 279/655/111 280/656/97 +f 264/338/97 280/656/97 281/657/96 +f 265/133/96 281/657/96 282/658/98 +f 266/136/98 282/658/98 283/659/99 +f 267/139/99 283/659/99 284/660/100 +f 299/210/61 315/687/61 314/661/59 +f 307/192/62 323/664/62 322/662/60 +f 300/172/47 316/665/47 315/663/61 +f 308/193/49 324/666/49 323/664/62 +f 301/175/48 317/667/48 316/665/47 +f 309/196/50 325/668/50 324/666/49 +f 302/179/51 318/669/51 317/667/48 +f 310/200/52 326/670/52 325/668/50 +f 303/181/53 319/671/53 318/669/51 +f 311/202/54 327/672/54 326/670/52 +f 304/182/55 320/673/55 319/671/53 +f 312/206/56 328/675/56 327/672/54 +f 305/185/57 321/676/57 320/673/55 +f 298/205/59 314/661/59 313/674/58 +f 297/203/58 313/674/58 328/675/56 +f 306/188/60 322/662/60 321/676/57 +f 340/191/109 339/363/108 355/694/108 +f 340/194/109 356/695/109 357/696/110 +f 341/197/110 357/696/110 358/697/111 +f 343/199/97 342/364/111 358/697/111 +f 343/365/97 359/698/97 360/699/96 +f 330/366/99 346/703/99 347/700/100 +f 345/208/98 344/207/96 360/699/96 +f 332/209/101 331/367/100 347/700/100 +f 345/211/98 361/701/98 346/703/99 +f 333/174/104 332/173/101 348/704/101 +f 333/176/104 349/705/104 350/706/103 +f 335/178/102 334/361/103 350/706/103 +f 335/362/102 351/707/102 352/708/105 +f 336/183/105 352/708/105 353/709/106 +f 337/186/106 353/709/106 354/710/107 +f 338/189/107 354/710/107 355/694/108 +f 375/711/50 377/714/114 376/712/114 +f 377/714/114 379/716/115 378/715/115 +f 379/716/115 381/718/48 380/717/48 +f 381/718/48 383/720/112 382/719/112 +f 383/720/112 385/768/113 384/721/113 +f 385/722/113 375/711/50 374/713/50 +f 393/724/57 395/727/167 394/725/167 +f 395/727/167 397/729/168 396/728/168 +f 397/729/168 399/731/58 398/730/58 +f 399/731/58 401/733/169 400/732/169 +f 401/733/169 403/769/170 402/734/170 +f 403/735/170 393/724/57 392/726/57 +f 411/737/58 413/740/169 412/738/169 +f 413/740/169 415/742/170 414/741/170 +f 415/742/170 417/744/57 416/743/57 +f 417/744/57 419/746/167 418/745/167 +f 419/746/167 421/770/168 420/747/168 +f 421/748/168 411/737/58 410/739/58 diff --git a/src/main/resources/assets/hbm/models/missile_huge.obj b/src/main/resources/assets/hbm/models/missile_huge.obj new file mode 100644 index 000000000..a3b5f2934 --- /dev/null +++ b/src/main/resources/assets/hbm/models/missile_huge.obj @@ -0,0 +1,1581 @@ +# Blender v2.79 (sub 0) OBJ File: 'missile_huge.blend' +# www.blender.org +o Circle +v 1.154849 0.500000 -0.478354 +v 1.250000 0.500000 0.000000 +v 1.154849 0.500000 0.478354 +v 0.883883 0.500000 0.883884 +v 0.478354 0.500000 1.154850 +v -0.000000 0.500000 1.250000 +v -0.478354 0.500000 1.154850 +v -0.883883 0.500000 0.883883 +v -1.154849 0.500000 0.478354 +v -1.250000 0.500000 0.000000 +v -1.154849 0.500000 -0.478354 +v -0.883883 0.500000 -0.883883 +v -0.478354 0.500000 -1.154850 +v 0.000000 0.500000 -1.250000 +v 0.000000 9.500000 -1.000000 +v -0.382683 9.500000 -0.923880 +v -0.707107 9.500000 -0.707107 +v -0.923880 9.500000 -0.382683 +v -1.000000 9.500000 0.000000 +v -0.923880 9.500000 0.382684 +v -0.707107 9.500000 0.707107 +v -0.382683 9.500000 0.923880 +v -0.000000 9.500000 1.000000 +v 0.382683 9.500000 0.923880 +v 0.707107 9.500000 0.707107 +v 0.923880 9.500000 0.382684 +v 1.000000 9.500000 0.000000 +v 0.923879 9.500000 -0.382684 +v 0.707107 9.500000 -0.707107 +v 0.382683 9.500000 -0.923880 +v -0.000000 11.000000 -0.875000 +v -0.334848 11.000000 -0.808394 +v -0.618718 11.000000 -0.618719 +v -0.808395 11.000000 -0.334848 +v -0.875000 11.000000 0.000000 +v -0.808395 11.000000 0.334848 +v -0.618718 11.000000 0.618719 +v -0.334848 11.000000 0.808394 +v -0.000000 11.000000 0.875000 +v 0.334848 11.000000 0.808394 +v 0.618718 11.000000 0.618719 +v 0.808395 11.000000 0.334848 +v 0.875000 11.000000 0.000000 +v 0.808394 11.000000 -0.334848 +v 0.618718 11.000000 -0.618719 +v 0.334848 11.000000 -0.808395 +v 0.000000 13.499999 0.000000 +v 0.095671 0.500000 -0.855970 +v 0.176777 0.500000 -0.801777 +v 0.230970 0.500000 -0.720671 +v 0.250000 0.500000 -0.625000 +v 0.230970 0.500000 -0.529329 +v 0.176777 0.500000 -0.448223 +v 0.095671 0.500000 -0.394030 +v -0.000000 0.500000 -0.375000 +v -0.095671 0.500000 -0.394030 +v -0.176777 0.500000 -0.448223 +v -0.230970 0.500000 -0.529329 +v -0.250000 0.500000 -0.625000 +v -0.230970 0.500000 -0.720671 +v -0.176777 0.500000 -0.801777 +v -0.095671 0.500000 -0.855970 +v -0.000000 0.500000 -0.875000 +v 0.143506 0.250000 -0.971455 +v 0.265165 0.250000 -0.890165 +v 0.346455 0.250000 -0.768507 +v 0.375000 0.250000 -0.625000 +v 0.346455 0.250000 -0.481493 +v 0.265165 0.250000 -0.359835 +v 0.143506 0.250000 -0.278545 +v -0.000000 0.250000 -0.250000 +v -0.143506 0.250000 -0.278545 +v -0.265165 0.250000 -0.359835 +v -0.346455 0.250000 -0.481494 +v -0.375000 0.250000 -0.625000 +v -0.346455 0.250000 -0.768506 +v -0.265165 0.250000 -0.890165 +v -0.000000 0.250000 -1.000000 +v -0.143506 0.250000 -0.971455 +v 0.143506 0.000000 -0.971455 +v 0.265165 0.000000 -0.890165 +v 0.346455 0.000000 -0.768507 +v 0.375000 0.000000 -0.625000 +v 0.346455 0.000000 -0.481493 +v 0.265165 0.000000 -0.359835 +v 0.143506 0.000000 -0.278545 +v -0.000000 0.000000 -0.250000 +v -0.143506 0.000000 -0.278545 +v -0.265165 0.000000 -0.359835 +v -0.346455 0.000000 -0.481494 +v -0.375000 0.000000 -0.625000 +v -0.346455 0.000000 -0.768506 +v -0.265165 0.000000 -0.890165 +v -0.143506 0.000000 -0.971455 +v -0.000000 0.000000 -1.000000 +v 0.000000 5.250000 -1.250000 +v -0.478354 5.250000 -1.154850 +v -0.883883 5.250000 -0.883883 +v -1.154849 5.250000 -0.478354 +v -1.250000 5.250000 0.000000 +v -1.154849 5.250000 0.478354 +v -0.883883 5.250000 0.883883 +v -0.478354 5.250000 1.154850 +v -0.000000 5.250000 1.250000 +v 0.478354 5.250000 1.154850 +v 0.883883 5.250000 0.883884 +v 1.154849 5.250000 0.478354 +v 1.250000 5.250000 0.000000 +v 1.154849 5.250000 -0.478354 +v 0.883883 5.250000 -0.883884 +v 0.478354 5.250000 -1.154850 +v 0.883883 0.500000 -0.883884 +v 0.478354 0.500000 -1.154850 +v 0.000000 6.250000 -1.000000 +v -0.382683 6.250000 -0.923880 +v -0.707107 6.250000 -0.707107 +v -0.923880 6.250000 -0.382683 +v -1.000000 6.250000 0.000000 +v -0.923880 6.250000 0.382684 +v -0.707107 6.250000 0.707107 +v -0.382683 6.250000 0.923880 +v -0.000000 6.250000 1.000000 +v 0.382683 6.250000 0.923880 +v 0.707107 6.250000 0.707107 +v 0.923880 6.250000 0.382684 +v 1.000000 6.250000 0.000000 +v 0.923879 6.250000 -0.382684 +v 0.707107 6.250000 -0.707107 +v 0.382683 6.250000 -0.923880 +v 0.000000 6.500000 -1.000000 +v -0.382683 6.500000 -0.923880 +v -0.707107 6.500000 -0.707107 +v -0.923880 6.500000 -0.382683 +v -1.000000 6.500000 0.000000 +v -0.923880 6.500000 0.382684 +v -0.707107 6.500000 0.707107 +v -0.382683 6.500000 0.923880 +v -0.000000 6.500000 1.000000 +v 0.382683 6.500000 0.923880 +v 0.707107 6.500000 0.707107 +v 0.923880 6.500000 0.382684 +v 1.000000 6.500000 0.000000 +v 0.923879 6.500000 -0.382684 +v 0.707107 6.500000 -0.707107 +v 0.382683 6.500000 -0.923880 +v -0.000000 6.500000 -0.875000 +v -0.334848 6.500000 -0.808394 +v -0.618718 6.500000 -0.618719 +v -0.808395 6.500000 -0.334848 +v -0.875000 6.500000 0.000000 +v -0.808395 6.500000 0.334848 +v -0.618718 6.500000 0.618719 +v -0.334848 6.500000 0.808394 +v -0.000000 6.500000 0.875000 +v 0.334848 6.500000 0.808394 +v 0.618718 6.500000 0.618719 +v 0.808395 6.500000 0.334848 +v 0.875000 6.500000 0.000000 +v 0.808394 6.500000 -0.334848 +v 0.618718 6.500000 -0.618719 +v 0.334848 6.500000 -0.808395 +v -0.000000 6.250000 -0.875000 +v -0.334848 6.250000 -0.808394 +v -0.618718 6.250000 -0.618719 +v -0.808395 6.250000 -0.334848 +v -0.875000 6.250000 0.000000 +v -0.808395 6.250000 0.334848 +v -0.618718 6.250000 0.618719 +v -0.334848 6.250000 0.808394 +v -0.000000 6.250000 0.875000 +v 0.334848 6.250000 0.808394 +v 0.618718 6.250000 0.618719 +v 0.808395 6.250000 0.334848 +v 0.875000 6.250000 0.000000 +v 0.808394 6.250000 -0.334848 +v 0.618718 6.250000 -0.618719 +v 0.334848 6.250000 -0.808395 +v 1.010000 7.313000 -0.010000 +v 0.933879 7.313000 -0.392684 +v 0.717107 7.313000 -0.717107 +v 0.392683 7.313000 -0.933880 +v 0.392683 8.500000 -0.933880 +v 0.717107 8.500000 -0.717107 +v 0.933879 8.500000 -0.392684 +v 1.010000 8.500000 -0.010000 +v 0.839689 3.375000 -0.751301 +v 0.751301 3.375000 -0.839689 +v 1.502602 0.375000 -1.502602 +v 0.839689 0.375000 -0.751301 +v 0.751301 0.375000 -0.839689 +v 1.502602 1.375000 -1.502602 +v 0.095671 0.500000 0.394030 +v 0.176777 0.500000 0.448223 +v 0.230970 0.500000 0.529329 +v 0.250000 0.500000 0.625000 +v 0.230970 0.500000 0.720671 +v 0.176777 0.500000 0.801777 +v 0.095671 0.500000 0.855970 +v -0.000000 0.500000 0.875000 +v -0.095671 0.500000 0.855970 +v -0.176777 0.500000 0.801777 +v -0.230970 0.500000 0.720671 +v -0.250000 0.500000 0.625000 +v -0.230970 0.500000 0.529329 +v -0.176777 0.500000 0.448223 +v -0.095671 0.500000 0.394030 +v -0.000000 0.500000 0.375000 +v 0.143506 0.250000 0.278545 +v 0.265165 0.250000 0.359835 +v 0.346455 0.250000 0.481493 +v 0.375000 0.250000 0.625000 +v 0.346455 0.250000 0.768507 +v 0.265165 0.250000 0.890165 +v 0.143506 0.250000 0.971455 +v -0.000000 0.250000 1.000000 +v -0.143506 0.250000 0.971455 +v -0.265165 0.250000 0.890165 +v -0.346455 0.250000 0.768506 +v -0.375000 0.250000 0.625000 +v -0.346455 0.250000 0.481494 +v -0.265165 0.250000 0.359835 +v -0.000000 0.250000 0.250000 +v -0.143506 0.250000 0.278545 +v 0.143506 0.000000 0.278545 +v 0.265165 0.000000 0.359835 +v 0.346455 0.000000 0.481493 +v 0.375000 0.000000 0.625000 +v 0.346455 0.000000 0.768507 +v 0.265165 0.000000 0.890165 +v 0.143506 0.000000 0.971455 +v -0.000000 0.000000 1.000000 +v -0.143506 0.000000 0.971455 +v -0.265165 0.000000 0.890165 +v -0.346455 0.000000 0.768506 +v -0.375000 0.000000 0.625000 +v -0.346455 0.000000 0.481494 +v -0.265165 0.000000 0.359835 +v -0.143506 0.000000 0.278545 +v -0.000000 0.000000 0.250000 +v 0.720671 0.500000 -0.230970 +v 0.801777 0.500000 -0.176777 +v 0.855970 0.500000 -0.095671 +v 0.875000 0.500000 0.000000 +v 0.855970 0.500000 0.095671 +v 0.801777 0.500000 0.176777 +v 0.720671 0.500000 0.230970 +v 0.625000 0.500000 0.250000 +v 0.529329 0.500000 0.230970 +v 0.448223 0.500000 0.176777 +v 0.394030 0.500000 0.095671 +v 0.375000 0.500000 0.000000 +v 0.394030 0.500000 -0.095671 +v 0.448223 0.500000 -0.176777 +v 0.529329 0.500000 -0.230970 +v 0.625000 0.500000 -0.250000 +v 0.768506 0.250000 -0.346455 +v 0.890165 0.250000 -0.265165 +v 0.971455 0.250000 -0.143507 +v 1.000000 0.250000 0.000000 +v 0.971455 0.250000 0.143507 +v 0.890165 0.250000 0.265165 +v 0.768506 0.250000 0.346455 +v 0.625000 0.250000 0.375000 +v 0.481494 0.250000 0.346455 +v 0.359835 0.250000 0.265165 +v 0.278545 0.250000 0.143506 +v 0.250000 0.250000 0.000000 +v 0.278545 0.250000 -0.143506 +v 0.359835 0.250000 -0.265165 +v 0.625000 0.250000 -0.375000 +v 0.481494 0.250000 -0.346455 +v 0.768506 0.000000 -0.346455 +v 0.890165 0.000000 -0.265165 +v 0.971455 0.000000 -0.143507 +v 1.000000 0.000000 0.000000 +v 0.971455 0.000000 0.143507 +v 0.890165 0.000000 0.265165 +v 0.768506 0.000000 0.346455 +v 0.625000 0.000000 0.375000 +v 0.481494 0.000000 0.346455 +v 0.359835 0.000000 0.265165 +v 0.278545 0.000000 0.143506 +v 0.250000 0.000000 0.000000 +v 0.278545 0.000000 -0.143506 +v 0.359835 0.000000 -0.265165 +v 0.481494 0.000000 -0.346455 +v 0.625000 0.000000 -0.375000 +v -0.529329 0.500000 -0.230970 +v -0.448223 0.500000 -0.176777 +v -0.394030 0.500000 -0.095671 +v -0.375000 0.500000 0.000000 +v -0.394030 0.500000 0.095671 +v -0.448223 0.500000 0.176777 +v -0.529329 0.500000 0.230970 +v -0.625000 0.500000 0.250000 +v -0.720671 0.500000 0.230970 +v -0.801777 0.500000 0.176777 +v -0.855970 0.500000 0.095671 +v -0.875000 0.500000 0.000000 +v -0.855970 0.500000 -0.095671 +v -0.801777 0.500000 -0.176777 +v -0.720671 0.500000 -0.230970 +v -0.625000 0.500000 -0.250000 +v -0.481494 0.250000 -0.346455 +v -0.359835 0.250000 -0.265165 +v -0.278545 0.250000 -0.143507 +v -0.250000 0.250000 0.000000 +v -0.278545 0.250000 0.143507 +v -0.359835 0.250000 0.265165 +v -0.481494 0.250000 0.346455 +v -0.625000 0.250000 0.375000 +v -0.768506 0.250000 0.346455 +v -0.890165 0.250000 0.265165 +v -0.971455 0.250000 0.143506 +v -1.000000 0.250000 0.000000 +v -0.971455 0.250000 -0.143506 +v -0.890165 0.250000 -0.265165 +v -0.625000 0.250000 -0.375000 +v -0.768506 0.250000 -0.346455 +v -0.481494 0.000000 -0.346455 +v -0.359835 0.000000 -0.265165 +v -0.278545 0.000000 -0.143507 +v -0.250000 0.000000 0.000000 +v -0.278545 0.000000 0.143507 +v -0.359835 0.000000 0.265165 +v -0.481494 0.000000 0.346455 +v -0.625000 0.000000 0.375000 +v -0.768506 0.000000 0.346455 +v -0.890165 0.000000 0.265165 +v -0.971455 0.000000 0.143506 +v -1.000000 0.000000 0.000000 +v -0.971455 0.000000 -0.143506 +v -0.890165 0.000000 -0.265165 +v -0.768506 0.000000 -0.346455 +v -0.625000 0.000000 -0.375000 +v -0.839689 3.375000 0.751301 +v -0.751301 3.375000 0.839689 +v -1.502602 0.375000 1.502602 +v -0.839689 0.375000 0.751301 +v -0.751301 0.375000 0.839689 +v -1.502602 1.375000 1.502602 +v -0.751301 3.375000 -0.839689 +v -0.839689 3.375000 -0.751301 +v -1.502602 0.375000 -1.502602 +v -0.751301 0.375000 -0.839689 +v -0.839689 0.375000 -0.751301 +v -1.502602 1.375000 -1.502602 +v 0.751301 3.375000 0.839689 +v 0.839689 3.375000 0.751301 +v 1.502602 0.375000 1.502601 +v 0.751301 0.375000 0.839689 +v 0.839689 0.375000 0.751301 +v 1.502602 1.375000 1.502601 +v -1.010000 7.313000 0.010000 +v -0.933879 7.313000 0.392684 +v -0.717106 7.313000 0.717107 +v -0.392683 7.313000 0.933880 +v -0.392683 8.500000 0.933880 +v -0.717106 8.500000 0.717107 +v -0.933879 8.500000 0.392684 +v -1.010000 8.500000 0.010000 +vt 0.291667 0.471698 +vt 0.250000 0.462264 +vt 0.291667 0.462264 +vt 0.583333 0.471698 +vt 0.625000 0.462264 +vt 0.625000 0.471698 +vt 0.208333 0.471698 +vt 0.250000 0.471698 +vt 0.541667 0.471698 +vt 0.583333 0.462264 +vt 0.166667 0.462264 +vt 0.208333 0.462264 +vt 0.500000 0.471698 +vt 0.458333 0.462264 +vt 0.500000 0.462264 +vt 0.541667 0.462264 +vt 0.125000 0.471698 +vt 0.166667 0.471698 +vt 0.416667 0.471698 +vt 0.458333 0.471698 +vt 0.083333 0.471698 +vt 0.125000 0.462264 +vt 0.375000 0.462264 +vt 0.416667 0.462264 +vt 0.041667 0.471698 +vt 0.083333 0.462264 +vt 0.375000 0.471698 +vt 0.333333 0.462264 +vt -0.000000 0.471698 +vt 0.041667 0.462264 +vt 0.333333 0.471698 +vt 0.678877 0.708687 +vt 0.678877 0.668671 +vt 0.737790 0.668671 +vt 0.666667 0.462264 +vt 0.666667 0.471698 +vt 0.333333 0.433962 +vt 0.291667 0.443396 +vt 0.291667 0.433962 +vt 0.375000 0.433962 +vt 0.333333 0.443396 +vt 0.416667 0.433962 +vt 0.375000 0.443396 +vt 0.458333 0.433962 +vt 0.416667 0.443396 +vt 0.500000 0.433962 +vt 0.458333 0.443396 +vt 0.541667 0.433962 +vt 0.500000 0.443396 +vt 0.583333 0.443396 +vt 0.541667 0.443396 +vt 0.583333 0.433962 +vt 0.625000 0.443396 +vt 0.625000 0.433962 +vt 0.666667 0.443396 +vt 0.000000 0.433962 +vt 0.041667 0.443396 +vt 0.000000 0.443396 +vt 0.041667 0.433962 +vt 0.083333 0.443396 +vt 0.125000 0.433962 +vt 0.083333 0.433962 +vt 0.166667 0.443396 +vt 0.125000 0.443396 +vt 0.208333 0.433962 +vt 0.166667 0.433962 +vt 0.250000 0.433962 +vt 0.208333 0.443396 +vt 0.250000 0.443396 +vt 0.903652 0.461671 +vt 0.903652 0.594933 +vt 0.707459 0.594933 +vt 1.000000 0.004717 +vt 0.888889 0.004717 +vt 0.888889 -0.000000 +vt 0.888889 0.231132 +vt 1.000000 0.231132 +vt 0.888889 0.235849 +vt 1.000000 0.080189 +vt 0.888889 0.004717 +vt 0.678877 0.708687 +vt 0.678877 0.668671 +vt 0.737790 0.668671 +vt 0.678877 0.708687 +vt 0.678877 0.668671 +vt 0.737790 0.668671 +vt 0.678877 0.708687 +vt 0.678877 0.668671 +vt 0.737790 0.668671 +vt 1.000000 0.004717 +vt 0.888889 0.004717 +vt 0.888889 -0.000000 +vt 0.888889 0.231132 +vt 1.000000 0.231132 +vt 0.888889 0.235849 +vt 1.000000 0.080189 +vt 0.888889 0.004717 +vt 1.000000 0.004717 +vt 0.888889 0.004717 +vt 0.888889 -0.000000 +vt 0.888889 0.231132 +vt 1.000000 0.231132 +vt 0.888889 0.235849 +vt 1.000000 0.080189 +vt 0.888889 0.004717 +vt 1.000000 0.004717 +vt 0.888889 0.004717 +vt 0.888889 -0.000000 +vt 0.888889 0.231132 +vt 1.000000 0.231132 +vt 0.888889 0.235849 +vt 1.000000 0.080189 +vt 0.888889 0.004717 +vt 0.000000 0.462264 +vt 0.746820 0.677851 +vt 0.737790 0.708687 +vt 0.749991 0.688679 +vt 0.746820 0.699508 +vt 0.724275 0.714821 +vt 0.708333 0.716975 +vt 0.692392 0.714821 +vt 0.669847 0.699508 +vt 0.666676 0.688679 +vt 0.669847 0.677851 +vt 0.692392 0.662537 +vt 0.708333 0.660383 +vt 0.724275 0.662537 +vt 0.666667 0.433962 +vt 0.933724 0.492241 +vt 0.944284 0.528302 +vt 0.933724 0.564363 +vt 0.858645 0.615360 +vt 0.805556 0.622533 +vt 0.752466 0.615360 +vt 0.677387 0.564362 +vt 0.666827 0.528302 +vt 0.677387 0.492241 +vt 0.707459 0.461671 +vt 0.752466 0.441244 +vt 0.805556 0.434071 +vt 0.858645 0.441244 +vt 0.888889 0.231132 +vt 0.746820 0.677851 +vt 0.737790 0.708687 +vt 0.749991 0.688679 +vt 0.746820 0.699508 +vt 0.724275 0.714821 +vt 0.708333 0.716975 +vt 0.692392 0.714821 +vt 0.669847 0.699508 +vt 0.666676 0.688679 +vt 0.669847 0.677851 +vt 0.692392 0.662537 +vt 0.708333 0.660383 +vt 0.724275 0.662537 +vt 0.746820 0.677851 +vt 0.737790 0.708687 +vt 0.749991 0.688679 +vt 0.746820 0.699508 +vt 0.724275 0.714821 +vt 0.708333 0.716975 +vt 0.692392 0.714821 +vt 0.669847 0.699508 +vt 0.666676 0.688679 +vt 0.669847 0.677851 +vt 0.692392 0.662537 +vt 0.708333 0.660383 +vt 0.724275 0.662537 +vt 0.746820 0.677851 +vt 0.737790 0.708687 +vt 0.749991 0.688679 +vt 0.746820 0.699508 +vt 0.724275 0.714821 +vt 0.708333 0.716975 +vt 0.692392 0.714821 +vt 0.669847 0.699508 +vt 0.666676 0.688679 +vt 0.669847 0.677851 +vt 0.692392 0.662537 +vt 0.708333 0.660383 +vt 0.724275 0.662537 +vt 0.888889 0.231132 +vt 0.888889 0.231132 +vt 0.888889 0.231132 +vt -0.000000 0.358491 +vt 0.055556 0.000000 +vt 0.055556 0.358491 +vt 0.583333 0.698113 +vt 0.541667 0.811321 +vt 0.541667 0.698113 +vt 0.250000 0.698113 +vt 0.208333 0.811321 +vt 0.208333 0.698113 +vt 0.625000 0.698113 +vt 0.583333 0.811321 +vt 0.291667 0.698113 +vt 0.250000 0.811321 +vt 0.666667 0.698113 +vt 0.625000 0.811321 +vt 0.326389 0.811321 +vt 0.291667 0.811321 +vt 0.041667 0.698113 +vt 0.000000 0.811321 +vt -0.000000 0.698113 +vt 0.375000 0.698113 +vt 0.333333 0.811321 +vt 0.333333 0.698113 +vt 0.083333 0.698113 +vt 0.041667 0.811321 +vt 0.416667 0.698113 +vt 0.375000 0.811321 +vt 0.125000 0.698113 +vt 0.083333 0.811321 +vt 0.458333 0.698113 +vt 0.416667 0.811321 +vt 0.166667 0.698113 +vt 0.125000 0.811321 +vt 0.500000 0.811321 +vt 0.500000 0.698113 +vt 0.458333 0.811321 +vt 0.166667 0.811321 +vt 0.388889 0.358491 +vt 0.444444 0.000000 +vt 0.444444 0.358491 +vt 0.576389 0.811321 +vt 0.562500 1.000000 +vt 0.618056 0.811321 +vt 0.604167 1.000000 +vt 0.659722 0.811321 +vt 0.645833 1.000000 +vt 0.034722 0.811321 +vt 0.020833 1.000000 +vt 0.076389 0.811321 +vt 0.062500 1.000000 +vt 0.118056 0.811321 +vt 0.104167 1.000000 +vt 0.159722 0.811321 +vt 0.145833 1.000000 +vt 0.194444 0.811321 +vt 0.187500 1.000000 +vt 0.243056 0.811321 +vt 0.229167 1.000000 +vt 0.284722 0.811321 +vt 0.270833 1.000000 +vt 0.312500 1.000000 +vt 0.368056 0.811321 +vt 0.354167 1.000000 +vt 0.409722 0.811321 +vt 0.395833 1.000000 +vt 0.451389 0.811321 +vt 0.437500 1.000000 +vt 0.493056 0.811321 +vt 0.479167 1.000000 +vt 0.534722 0.811321 +vt 0.520833 1.000000 +vt 0.833333 0.358491 +vt 0.888889 0.000000 +vt 0.888889 0.358491 +vt 0.333333 0.358491 +vt 0.388889 -0.000000 +vt 0.777778 0.358491 +vt 0.833333 0.000000 +vt 0.277778 0.358491 +vt 0.333333 -0.000000 +vt 0.722222 0.358491 +vt 0.777778 0.000000 +vt 0.222222 0.358491 +vt 0.277778 0.000000 +vt 0.611111 0.358491 +vt 0.666667 0.000000 +vt 0.666667 0.358491 +vt 0.729167 0.000000 +vt 0.166667 0.358491 +vt 0.222222 -0.000000 +vt 0.555556 0.358491 +vt 0.611111 0.000000 +vt 0.708333 0.641509 +vt 0.694444 0.660377 +vt 0.694444 0.641509 +vt 0.680556 0.641509 +vt 0.680556 0.660377 +vt 0.666667 0.660377 +vt 0.666667 0.641509 +vt 0.875000 0.641509 +vt 0.888889 0.660377 +vt 0.875000 0.660377 +vt 0.861111 0.660377 +vt 0.861111 0.641509 +vt 0.847222 0.660377 +vt 0.847222 0.641509 +vt 0.833333 0.660377 +vt 0.833333 0.641509 +vt 0.819444 0.660377 +vt 0.819444 0.641509 +vt 0.805556 0.660377 +vt 0.805556 0.641509 +vt 0.791667 0.641509 +vt 0.791667 0.660377 +vt 0.777778 0.660377 +vt 0.777778 0.641509 +vt 0.763889 0.660377 +vt 0.763889 0.641509 +vt 0.750000 0.660377 +vt 0.750000 0.641509 +vt 0.736111 0.641509 +vt 0.736111 0.660377 +vt 0.722222 0.641509 +vt 0.722222 0.660377 +vt 0.819444 0.622642 +vt 0.805556 0.622642 +vt 0.694444 0.622642 +vt 0.680556 0.622642 +vt 0.791667 0.622642 +vt 0.666667 0.622642 +vt 0.777778 0.622642 +vt 0.763889 0.622642 +vt 0.888889 0.622642 +vt 0.875000 0.622642 +vt 0.750000 0.622642 +vt 0.861111 0.622642 +vt 0.736111 0.622642 +vt 0.847222 0.622642 +vt 0.722222 0.622642 +vt 0.833333 0.622642 +vt 0.708333 0.622642 +vt 0.708333 0.660377 +vt 0.555556 0.433962 +vt 0.611111 0.433962 +vt 0.500000 0.000000 +vt 0.500000 0.358491 +vt 0.166667 0.433962 +vt 0.111111 0.358491 +vt 0.500000 0.433962 +vt 0.055556 0.433962 +vt 0.111111 0.433962 +vt 0.444444 0.433962 +vt 0.833333 0.433962 +vt 0.888889 0.433962 +vt 0.333333 0.433962 +vt 0.388889 0.433962 +vt 0.777778 0.433962 +vt 0.722222 0.433962 +vt 0.222222 0.433962 +vt 0.277778 0.433962 +vt 0.666667 0.433962 +vt 0.166667 -0.000000 +vt 0.555556 -0.000000 +vt 0.111111 -0.000000 +vt 0.847222 0.716981 +vt 0.937500 0.900943 +vt 0.847222 0.900943 +vt 0.756944 0.716981 +vt 0.756944 0.900943 +vt 0.666667 0.716981 +vt 0.666667 0.900943 +vt 0.708333 0.641509 +vt 0.694444 0.660377 +vt 0.694444 0.641509 +vt 0.680556 0.641509 +vt 0.680556 0.660377 +vt 0.666667 0.660377 +vt 0.666667 0.641509 +vt 0.875000 0.641509 +vt 0.888889 0.660377 +vt 0.875000 0.660377 +vt 0.861111 0.660377 +vt 0.861111 0.641509 +vt 0.847222 0.660377 +vt 0.847222 0.641509 +vt 0.833333 0.660377 +vt 0.833333 0.641509 +vt 0.819444 0.641509 +vt 0.819444 0.660377 +vt 0.805556 0.660377 +vt 0.805556 0.641509 +vt 0.791667 0.641509 +vt 0.791667 0.660377 +vt 0.777778 0.641509 +vt 0.777778 0.660377 +vt 0.763889 0.660377 +vt 0.763889 0.641509 +vt 0.750000 0.641509 +vt 0.750000 0.660377 +vt 0.736111 0.641509 +vt 0.736111 0.660377 +vt 0.722222 0.641509 +vt 0.722222 0.660377 +vt 0.819444 0.622642 +vt 0.805556 0.622642 +vt 0.694444 0.622642 +vt 0.680556 0.622642 +vt 0.791667 0.622642 +vt 0.666667 0.622642 +vt 0.777778 0.622642 +vt 0.763889 0.622642 +vt 0.888889 0.622642 +vt 0.875000 0.622642 +vt 0.750000 0.622642 +vt 0.861111 0.622642 +vt 0.736111 0.622642 +vt 0.847222 0.622642 +vt 0.722222 0.622642 +vt 0.833333 0.622642 +vt 0.708333 0.622642 +vt 0.708333 0.660377 +vt 0.708333 0.641509 +vt 0.694444 0.660377 +vt 0.694444 0.641509 +vt 0.680556 0.641509 +vt 0.680556 0.660377 +vt 0.666667 0.660377 +vt 0.666667 0.641509 +vt 0.875000 0.641509 +vt 0.888889 0.660377 +vt 0.875000 0.660377 +vt 0.861111 0.660377 +vt 0.861111 0.641509 +vt 0.847222 0.660377 +vt 0.847222 0.641509 +vt 0.833333 0.660377 +vt 0.833333 0.641509 +vt 0.819444 0.641509 +vt 0.819444 0.660377 +vt 0.805556 0.660377 +vt 0.805556 0.641509 +vt 0.791667 0.641509 +vt 0.791667 0.660377 +vt 0.777778 0.660377 +vt 0.777778 0.641509 +vt 0.763889 0.660377 +vt 0.763889 0.641509 +vt 0.750000 0.660377 +vt 0.750000 0.641509 +vt 0.736111 0.641509 +vt 0.736111 0.660377 +vt 0.722222 0.641509 +vt 0.722222 0.660377 +vt 0.819444 0.622642 +vt 0.805556 0.622642 +vt 0.694444 0.622642 +vt 0.680556 0.622642 +vt 0.791667 0.622642 +vt 0.666667 0.622642 +vt 0.777778 0.622642 +vt 0.763889 0.622642 +vt 0.888889 0.622642 +vt 0.875000 0.622642 +vt 0.750000 0.622642 +vt 0.861111 0.622642 +vt 0.736111 0.622642 +vt 0.847222 0.622642 +vt 0.722222 0.622642 +vt 0.833333 0.622642 +vt 0.708333 0.622642 +vt 0.708333 0.660377 +vt 0.708333 0.641509 +vt 0.694444 0.660377 +vt 0.694444 0.641509 +vt 0.680556 0.641509 +vt 0.680556 0.660377 +vt 0.666667 0.660377 +vt 0.666667 0.641509 +vt 0.875000 0.641509 +vt 0.888889 0.660377 +vt 0.875000 0.660377 +vt 0.861111 0.660377 +vt 0.861111 0.641509 +vt 0.847222 0.660377 +vt 0.847222 0.641509 +vt 0.833333 0.660377 +vt 0.833333 0.641509 +vt 0.819444 0.641509 +vt 0.819444 0.660377 +vt 0.805556 0.660377 +vt 0.805556 0.641509 +vt 0.791667 0.641509 +vt 0.791667 0.660377 +vt 0.777778 0.660377 +vt 0.777778 0.641509 +vt 0.763889 0.660377 +vt 0.763889 0.641509 +vt 0.750000 0.660377 +vt 0.750000 0.641509 +vt 0.736111 0.641509 +vt 0.736111 0.660377 +vt 0.722222 0.641509 +vt 0.722222 0.660377 +vt 0.819444 0.622642 +vt 0.805556 0.622642 +vt 0.694444 0.622642 +vt 0.680556 0.622642 +vt 0.791667 0.622642 +vt 0.666667 0.622642 +vt 0.777778 0.622642 +vt 0.763889 0.622642 +vt 0.888889 0.622642 +vt 0.875000 0.622642 +vt 0.750000 0.622642 +vt 0.861111 0.622642 +vt 0.736111 0.622642 +vt 0.847222 0.622642 +vt 0.722222 0.622642 +vt 0.833333 0.622642 +vt 0.708333 0.622642 +vt 0.708333 0.660377 +vt 0.847222 0.716981 +vt 0.937500 0.900943 +vt 0.847222 0.900943 +vt 0.756944 0.716981 +vt 0.756944 0.900943 +vt 0.666667 0.716981 +vt 0.666667 0.900943 +vt 0.000000 0.000000 +vt 0.888889 0.641509 +vt 0.937500 0.716981 +vt 0.888889 0.641509 +vt 0.888889 0.641509 +vt 0.888889 0.641509 +vt 0.937500 0.716981 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.6325 0.4472 -0.6325 +vn 0.7498 0.0000 0.6616 +vn -0.6616 0.0000 -0.7498 +vn -0.6325 0.4472 0.6325 +vn -0.7498 0.0000 -0.6616 +vn 0.6616 0.0000 0.7498 +vn -0.6325 0.4472 -0.6325 +vn 0.6616 0.0000 -0.7498 +vn -0.7498 0.0000 0.6616 +vn 0.6325 0.4472 0.6325 +vn -0.6616 0.0000 0.7498 +vn 0.7498 0.0000 -0.6616 +vn -1.0000 0.0000 -0.0000 +vn -0.9239 0.0000 0.3827 +vn -0.7047 0.0830 -0.7047 +vn -0.3814 0.0830 -0.9207 +vn 0.7047 0.0830 0.7047 +vn 0.3814 0.0830 0.9207 +vn -0.9207 0.0830 -0.3814 +vn 0.9207 0.0830 0.3814 +vn -0.9965 0.0830 -0.0000 +vn 0.9965 0.0830 0.0000 +vn -0.9207 0.0830 0.3814 +vn 0.9207 0.0830 -0.3814 +vn -0.7047 0.0830 0.7047 +vn 0.7047 0.0830 -0.7047 +vn -0.3814 0.0830 0.9207 +vn 0.3814 0.0830 -0.9207 +vn -0.0000 0.0830 0.9965 +vn -0.0000 0.0830 -0.9965 +vn 0.9239 0.0000 0.3827 +vn 1.0000 0.0000 -0.0000 +vn -0.3612 0.3304 -0.8720 +vn -0.6674 0.3304 -0.6674 +vn -0.8720 0.3304 -0.3612 +vn -0.9439 0.3304 0.0000 +vn -0.8720 0.3304 0.3612 +vn -0.6674 0.3304 0.6674 +vn -0.3612 0.3304 0.8720 +vn 0.0000 0.3304 0.9439 +vn 0.3612 0.3304 0.8720 +vn 0.6674 0.3304 0.6674 +vn 0.8720 0.3304 0.3612 +vn 0.9439 0.3304 0.0000 +vn 0.8720 0.3304 -0.3612 +vn 0.6674 0.3304 -0.6674 +vn 0.3612 0.3304 -0.8720 +vn -0.0000 0.3304 -0.9439 +vn -0.9239 0.0000 -0.3827 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.3827 0.0000 0.9239 +vn -0.3827 0.0000 -0.9239 +vn 0.0000 0.0000 1.0000 +vn 0.3827 0.0000 -0.9239 +vn 0.0000 0.0000 -1.0000 +vn -0.3827 0.0000 0.9239 +vn 0.7071 0.0000 -0.7071 +vn 0.8263 0.4472 0.3423 +vn 0.3423 0.4472 0.8263 +vn -0.0000 0.4472 0.8944 +vn -0.3423 0.4472 0.8263 +vn -0.8263 0.4472 0.3423 +vn -0.8944 0.4472 0.0000 +vn -0.8263 0.4472 -0.3423 +vn -0.3423 0.4472 -0.8263 +vn -0.0000 0.4472 -0.8944 +vn 0.3423 0.4472 -0.8263 +vn 0.8263 0.4472 -0.3423 +vn 0.8944 0.4472 -0.0000 +vn -0.7071 0.0000 0.7071 +vn 0.9239 0.0000 -0.3827 +vn 0.6860 0.2425 -0.6860 +vn 0.3713 0.2425 -0.8963 +vn -0.3713 0.2425 0.8963 +vn -0.6860 0.2425 0.6860 +vn 0.8963 0.2425 -0.3713 +vn -0.8963 0.2425 0.3713 +vn 0.9701 0.2425 -0.0000 +vn -0.9701 0.2425 -0.0000 +vn 0.8963 0.2425 0.3713 +vn -0.8963 0.2425 -0.3713 +vn 0.6860 0.2425 0.6860 +vn -0.6860 0.2425 -0.6860 +vn 0.3713 0.2425 0.8963 +vn -0.3713 0.2425 -0.8963 +vn 0.0000 0.2425 0.9701 +vn 0.0000 0.2425 -0.9701 +vn 0.5556 0.0000 -0.8315 +vn 0.9808 0.0000 -0.1951 +vn -0.5556 0.0000 0.8315 +vn -0.9808 0.0000 0.1951 +s off +f 141/1/1 156/2/1 157/3/1 +f 132/4/1 149/5/1 133/6/1 +f 139/7/1 156/2/1 140/8/1 +f 131/9/1 148/10/1 132/4/1 +f 139/7/1 154/11/1 155/12/1 +f 130/13/1 161/14/1 146/15/1 +f 131/9/1 146/15/1 147/16/1 +f 137/17/1 154/11/1 138/18/1 +f 144/19/1 161/14/1 145/20/1 +f 136/21/1 153/22/1 137/17/1 +f 144/19/1 159/23/1 160/24/1 +f 135/25/1 152/26/1 136/21/1 +f 143/27/1 158/28/1 159/23/1 +f 134/29/1 151/30/1 135/25/1 +f 142/31/1 157/3/1 158/28/1 +f 85/32/1 89/33/1 93/34/1 +f 133/6/1 150/35/1 134/36/1 +f 126/37/2 173/38/2 125/39/2 +f 127/40/2 174/41/2 126/37/2 +f 128/42/2 175/43/2 127/40/2 +f 129/44/2 176/45/2 128/42/2 +f 114/46/2 177/47/2 129/44/2 +f 115/48/2 162/49/2 114/46/2 +f 115/48/2 164/50/2 163/51/2 +f 116/52/2 165/53/2 164/50/2 +f 117/54/2 166/55/2 165/53/2 +f 118/56/2 167/57/2 166/58/2 +f 119/59/2 168/60/2 167/57/2 +f 121/61/2 168/60/2 120/62/2 +f 121/61/2 170/63/2 169/64/2 +f 123/65/2 170/63/2 122/66/2 +f 124/67/2 171/68/2 123/65/2 +f 125/39/2 172/69/2 124/67/2 +f 12/70/1 112/71/1 4/72/1 +f 188/73/1 189/74/1 190/75/1 +f 186/76/3 191/77/3 187/78/3 +f 189/74/4 191/79/4 186/76/4 +f 190/80/5 191/79/5 188/73/5 +f 229/81/1 233/82/1 237/83/1 +f 277/84/1 281/85/1 285/86/1 +f 325/87/1 329/88/1 333/89/1 +f 338/90/1 339/91/1 340/92/1 +f 336/93/6 341/94/6 337/95/6 +f 339/91/7 341/96/7 336/93/7 +f 340/97/8 341/96/8 338/90/8 +f 344/98/1 345/99/1 346/100/1 +f 342/101/9 347/102/9 343/103/9 +f 345/99/10 347/104/10 342/101/10 +f 346/105/11 347/104/11 344/98/11 +f 350/106/1 351/107/1 352/108/1 +f 348/109/12 353/110/12 349/111/12 +f 351/107/13 353/112/13 348/109/13 +f 352/113/14 353/112/14 350/106/14 +f 141/1/1 140/8/1 156/2/1 +f 132/4/1 148/10/1 149/5/1 +f 139/7/1 155/12/1 156/2/1 +f 131/9/1 147/16/1 148/10/1 +f 139/7/1 138/18/1 154/11/1 +f 130/13/1 145/20/1 161/14/1 +f 131/9/1 130/13/1 146/15/1 +f 137/17/1 153/22/1 154/11/1 +f 144/19/1 160/24/1 161/14/1 +f 136/21/1 152/26/1 153/22/1 +f 144/19/1 143/27/1 159/23/1 +f 135/25/1 151/30/1 152/26/1 +f 143/27/1 142/31/1 158/28/1 +f 134/29/1 150/114/1 151/30/1 +f 142/31/1 141/1/1 157/3/1 +f 93/34/1 94/115/1 81/116/1 +f 94/115/1 95/117/1 81/116/1 +f 95/117/1 80/118/1 81/116/1 +f 81/116/1 82/119/1 83/120/1 +f 83/120/1 84/121/1 85/32/1 +f 85/32/1 86/122/1 89/33/1 +f 86/122/1 87/123/1 89/33/1 +f 87/123/1 88/124/1 89/33/1 +f 89/33/1 90/125/1 91/126/1 +f 91/126/1 92/127/1 89/33/1 +f 92/127/1 93/34/1 89/33/1 +f 81/116/1 83/120/1 93/34/1 +f 83/120/1 85/32/1 93/34/1 +f 133/6/1 149/5/1 150/35/1 +f 126/37/2 174/41/2 173/38/2 +f 127/40/2 175/43/2 174/41/2 +f 128/42/2 176/45/2 175/43/2 +f 129/44/2 177/47/2 176/45/2 +f 114/46/2 162/49/2 177/47/2 +f 115/48/2 163/51/2 162/49/2 +f 115/48/2 116/52/2 164/50/2 +f 116/52/2 117/54/2 165/53/2 +f 117/54/2 118/128/2 166/55/2 +f 118/56/2 119/59/2 167/57/2 +f 119/59/2 120/62/2 168/60/2 +f 121/61/2 169/64/2 168/60/2 +f 121/61/2 122/66/2 170/63/2 +f 123/65/2 171/68/2 170/63/2 +f 124/67/2 172/69/2 171/68/2 +f 125/39/2 173/38/2 172/69/2 +f 12/70/1 13/129/1 14/130/1 +f 14/130/1 113/131/1 12/70/1 +f 113/131/1 112/71/1 12/70/1 +f 112/71/1 1/132/1 2/133/1 +f 2/133/1 3/134/1 4/72/1 +f 4/72/1 5/135/1 6/136/1 +f 6/136/1 7/137/1 8/138/1 +f 8/138/1 9/139/1 10/140/1 +f 10/140/1 11/141/1 12/70/1 +f 112/71/1 2/133/1 4/72/1 +f 4/72/1 6/136/1 12/70/1 +f 6/136/1 8/138/1 12/70/1 +f 8/138/1 10/140/1 12/70/1 +f 189/74/4 188/73/4 191/79/4 +f 190/80/5 187/142/5 191/79/5 +f 237/83/1 238/143/1 225/144/1 +f 238/143/1 239/145/1 225/144/1 +f 239/145/1 224/146/1 225/144/1 +f 225/144/1 226/147/1 227/148/1 +f 227/148/1 228/149/1 229/81/1 +f 229/81/1 230/150/1 233/82/1 +f 230/150/1 231/151/1 233/82/1 +f 231/151/1 232/152/1 233/82/1 +f 233/82/1 234/153/1 235/154/1 +f 235/154/1 236/155/1 233/82/1 +f 236/155/1 237/83/1 233/82/1 +f 225/144/1 227/148/1 237/83/1 +f 227/148/1 229/81/1 237/83/1 +f 285/86/1 286/156/1 273/157/1 +f 286/156/1 287/158/1 273/157/1 +f 287/158/1 272/159/1 273/157/1 +f 273/157/1 274/160/1 275/161/1 +f 275/161/1 276/162/1 277/84/1 +f 277/84/1 278/163/1 281/85/1 +f 278/163/1 279/164/1 281/85/1 +f 279/164/1 280/165/1 281/85/1 +f 281/85/1 282/166/1 283/167/1 +f 283/167/1 284/168/1 281/85/1 +f 284/168/1 285/86/1 281/85/1 +f 273/157/1 275/161/1 285/86/1 +f 275/161/1 277/84/1 285/86/1 +f 333/89/1 334/169/1 321/170/1 +f 334/169/1 335/171/1 321/170/1 +f 335/171/1 320/172/1 321/170/1 +f 321/170/1 322/173/1 323/174/1 +f 323/174/1 324/175/1 325/87/1 +f 325/87/1 326/176/1 329/88/1 +f 326/176/1 327/177/1 329/88/1 +f 327/177/1 328/178/1 329/88/1 +f 329/88/1 330/179/1 331/180/1 +f 331/180/1 332/181/1 329/88/1 +f 332/181/1 333/89/1 329/88/1 +f 321/170/1 323/174/1 333/89/1 +f 323/174/1 325/87/1 333/89/1 +f 339/91/7 338/90/7 341/96/7 +f 340/97/8 337/182/8 341/96/8 +f 345/99/10 344/98/10 347/104/10 +f 346/105/11 343/183/11 347/104/11 +f 351/107/13 350/106/13 353/112/13 +f 352/113/14 349/184/14 353/112/14 +s 1 +f 100/185/15 9/186/16 101/187/16 +f 17/188/17 32/189/18 16/190/18 +f 25/191/19 40/192/20 24/193/20 +f 18/194/21 33/195/17 17/188/17 +f 26/196/22 41/197/19 25/191/19 +f 19/198/23 34/199/21 18/194/21 +f 26/196/22 43/200/24 42/201/22 +f 20/202/25 35/203/23 19/204/23 +f 28/205/26 43/206/24 27/207/24 +f 21/208/27 36/209/25 20/202/25 +f 29/210/28 44/211/26 28/205/26 +f 22/212/29 37/213/27 21/208/27 +f 30/214/30 45/215/28 29/210/28 +f 23/216/31 38/217/29 22/212/29 +f 16/190/18 31/218/32 15/219/32 +f 15/219/32 46/220/30 30/214/30 +f 24/193/20 39/221/31 23/216/31 +f 107/222/33 2/223/34 108/224/34 +f 32/189/35 33/225/36 47/226/2 +f 33/195/36 34/227/37 47/228/2 +f 34/199/37 35/229/38 47/230/2 +f 35/203/38 36/231/39 47/232/2 +f 36/209/39 37/233/40 47/234/2 +f 37/213/40 38/235/41 47/236/2 +f 38/217/41 39/237/42 47/238/2 +f 39/221/42 40/239/43 47/240/2 +f 40/192/43 41/241/44 47/242/2 +f 41/197/44 42/243/45 47/244/2 +f 42/201/45 43/200/46 47/245/2 +f 43/206/46 44/246/47 47/247/2 +f 44/211/47 45/248/48 47/249/2 +f 45/215/48 46/250/49 47/251/2 +f 46/220/49 31/252/50 47/253/2 +f 31/218/50 32/254/35 47/255/2 +f 99/256/51 10/257/15 100/258/15 +f 106/259/52 3/260/33 107/222/33 +f 98/261/53 11/262/51 99/256/51 +f 105/263/54 4/264/52 106/259/52 +f 97/265/55 12/266/53 98/261/53 +f 104/267/56 5/268/54 105/263/54 +f 111/269/57 14/270/58 96/271/58 +f 96/271/58 13/272/55 97/265/55 +f 103/273/59 6/274/56 104/267/56 +f 110/275/60 113/276/57 111/269/57 +f 68/277/61 53/278/12 69/279/12 +f 70/280/62 53/278/12 54/281/62 +f 70/280/62 55/282/63 71/283/63 +f 72/284/64 55/285/63 56/286/64 +f 72/284/64 57/287/6 73/288/6 +f 73/288/6 58/289/65 74/290/65 +f 74/290/65 59/291/66 75/292/66 +f 75/292/66 60/293/67 76/294/67 +f 76/294/67 61/295/9 77/296/9 +f 79/297/68 61/295/9 62/298/68 +f 79/297/68 63/299/69 78/300/69 +f 78/300/69 48/301/70 64/302/70 +f 64/302/70 49/303/3 65/304/3 +f 66/305/71 49/303/3 50/306/71 +f 67/307/72 50/306/71 51/308/72 +f 92/309/51 77/296/53 93/310/53 +f 85/311/52 70/280/54 86/312/54 +f 93/310/53 79/297/55 94/313/55 +f 86/312/54 71/283/56 87/314/56 +f 95/315/58 64/302/57 80/316/57 +f 94/313/55 78/300/58 95/315/58 +f 87/317/56 72/284/59 88/318/59 +f 80/316/57 65/304/60 81/319/60 +f 88/318/59 73/288/73 89/320/73 +f 81/319/60 66/305/74 82/321/74 +f 89/320/73 74/290/16 90/322/16 +f 82/321/74 67/307/34 83/323/34 +f 90/322/16 75/292/15 91/324/15 +f 83/323/34 68/277/33 84/325/33 +f 91/324/15 76/294/51 92/309/51 +f 84/325/33 69/279/52 85/311/52 +f 67/307/72 52/326/61 68/277/61 +f 128/327/75 111/269/76 129/328/76 +f 108/224/34 1/329/74 109/330/74 +f 147/16/55 164/50/53 148/10/53 +f 155/12/54 172/69/52 156/2/52 +f 148/10/53 165/53/51 149/5/51 +f 156/2/52 173/38/33 157/3/33 +f 149/5/51 166/55/15 150/35/15 +f 157/3/33 174/41/34 158/28/34 +f 150/114/15 167/57/16 151/30/16 +f 158/28/34 175/43/74 159/23/74 +f 151/30/16 168/60/73 152/26/73 +f 159/23/74 176/45/60 160/24/60 +f 152/26/73 169/64/59 153/22/59 +f 160/24/60 177/47/57 161/14/57 +f 153/22/59 170/63/56 154/11/56 +f 146/15/58 163/51/55 147/16/55 +f 161/14/57 162/49/58 146/15/58 +f 154/11/56 171/68/54 155/12/54 +f 121/331/77 102/332/78 103/273/77 +f 127/333/79 110/275/75 128/327/75 +f 119/334/80 102/332/78 120/335/78 +f 126/336/81 109/330/79 127/333/79 +f 119/334/80 100/185/82 101/187/80 +f 126/336/81 107/222/83 108/224/81 +f 117/337/84 100/258/82 118/338/82 +f 124/339/85 107/222/83 125/340/83 +f 116/341/86 99/256/84 117/337/84 +f 124/339/85 105/263/87 106/259/85 +f 115/342/88 98/261/86 116/341/86 +f 122/343/89 105/263/87 123/344/87 +f 114/345/90 111/269/76 96/271/90 +f 114/345/90 97/265/88 115/342/88 +f 121/331/77 104/267/89 122/343/89 +f 102/332/73 7/346/59 103/273/59 +f 109/330/74 112/347/60 110/275/60 +f 101/187/16 8/348/73 102/332/73 +f 141/1/33 27/207/34 26/196/33 +f 142/31/34 28/205/74 27/207/34 +f 143/27/74 29/210/60 28/205/74 +f 144/19/60 30/214/57 29/210/60 +f 145/20/57 15/219/58 30/214/57 +f 130/13/58 16/190/55 15/219/58 +f 131/9/55 17/188/53 16/190/55 +f 132/4/53 18/194/51 17/188/53 +f 133/6/51 19/198/15 18/194/51 +f 134/29/15 20/202/16 19/204/15 +f 135/25/16 21/208/73 20/202/16 +f 136/21/73 22/212/59 21/208/73 +f 137/17/59 23/216/56 22/212/59 +f 138/18/56 24/193/54 23/216/56 +f 139/7/54 25/191/52 24/193/54 +f 140/8/52 26/196/33 25/191/52 +f 180/349/60 182/350/91 183/351/60 +f 179/352/74 183/351/60 184/353/74 +f 178/354/92 184/353/74 185/355/92 +f 212/356/61 197/357/12 213/358/12 +f 214/359/62 197/357/12 198/360/62 +f 214/359/62 199/361/63 215/362/63 +f 216/363/64 199/364/63 200/365/64 +f 216/363/64 201/366/6 217/367/6 +f 217/367/6 202/368/65 218/369/65 +f 218/369/65 203/370/66 219/371/66 +f 220/372/67 203/370/66 204/373/67 +f 220/372/67 205/374/9 221/375/9 +f 223/376/68 205/374/9 206/377/68 +f 222/378/69 206/377/68 207/379/69 +f 222/378/69 192/380/70 208/381/70 +f 209/382/3 192/380/70 193/383/3 +f 210/384/71 193/383/3 194/385/71 +f 211/386/72 194/385/71 195/387/72 +f 236/388/51 221/375/53 237/389/53 +f 229/390/52 214/359/54 230/391/54 +f 237/389/53 223/376/55 238/392/55 +f 230/391/54 215/362/56 231/393/56 +f 239/394/58 208/381/57 224/395/57 +f 238/392/55 222/378/58 239/394/58 +f 231/396/56 216/363/59 232/397/59 +f 224/395/57 209/382/60 225/398/60 +f 232/397/59 217/367/73 233/399/73 +f 225/398/60 210/384/74 226/400/74 +f 233/399/73 218/369/16 234/401/16 +f 226/400/74 211/386/34 227/402/34 +f 234/401/16 219/371/15 235/403/15 +f 227/402/34 212/356/33 228/404/33 +f 235/403/15 220/372/51 236/388/51 +f 228/404/33 213/358/52 229/390/52 +f 211/386/72 196/405/61 212/356/61 +f 260/406/61 245/407/12 261/408/12 +f 262/409/62 245/407/12 246/410/62 +f 262/409/62 247/411/63 263/412/63 +f 264/413/64 247/414/63 248/415/64 +f 264/413/64 249/416/6 265/417/6 +f 265/417/6 250/418/65 266/419/65 +f 266/419/65 251/420/66 267/421/66 +f 268/422/67 251/420/66 252/423/67 +f 268/422/67 253/424/9 269/425/9 +f 271/426/68 253/424/9 254/427/68 +f 271/426/68 255/428/69 270/429/69 +f 270/429/69 240/430/70 256/431/70 +f 256/431/70 241/432/3 257/433/3 +f 258/434/71 241/432/3 242/435/71 +f 259/436/72 242/435/71 243/437/72 +f 284/438/51 269/425/53 285/439/53 +f 277/440/52 262/409/54 278/441/54 +f 285/439/53 271/426/55 286/442/55 +f 278/441/54 263/412/56 279/443/56 +f 287/444/58 256/431/57 272/445/57 +f 286/442/55 270/429/58 287/444/58 +f 279/446/56 264/413/59 280/447/59 +f 272/445/57 257/433/60 273/448/60 +f 280/447/59 265/417/73 281/449/73 +f 273/448/60 258/434/74 274/450/74 +f 281/449/73 266/419/16 282/451/16 +f 274/450/74 259/436/34 275/452/34 +f 282/451/16 267/421/15 283/453/15 +f 275/452/34 260/406/33 276/454/33 +f 283/453/15 268/422/51 284/438/51 +f 276/454/33 261/408/52 277/440/52 +f 259/436/72 244/455/61 260/406/61 +f 308/456/61 293/457/12 309/458/12 +f 310/459/62 293/457/12 294/460/62 +f 310/459/62 295/461/63 311/462/63 +f 312/463/64 295/464/63 296/465/64 +f 312/463/64 297/466/6 313/467/6 +f 313/467/6 298/468/65 314/469/65 +f 314/469/65 299/470/66 315/471/66 +f 316/472/67 299/470/66 300/473/67 +f 316/472/67 301/474/9 317/475/9 +f 319/476/68 301/474/9 302/477/68 +f 319/476/68 303/478/69 318/479/69 +f 318/479/69 288/480/70 304/481/70 +f 304/481/70 289/482/3 305/483/3 +f 306/484/71 289/482/3 290/485/71 +f 307/486/72 290/485/71 291/487/72 +f 332/488/51 317/475/53 333/489/53 +f 325/490/52 310/459/54 326/491/54 +f 333/489/53 319/476/55 334/492/55 +f 326/491/54 311/462/56 327/493/56 +f 335/494/58 304/481/57 320/495/57 +f 334/492/55 318/479/58 335/494/58 +f 327/496/56 312/463/59 328/497/59 +f 320/495/57 305/483/60 321/498/60 +f 328/497/59 313/467/73 329/499/73 +f 321/498/60 306/484/74 322/500/74 +f 329/499/73 314/469/16 330/501/16 +f 322/500/74 307/486/34 323/502/34 +f 330/501/16 315/471/15 331/503/15 +f 323/502/34 308/456/33 324/504/33 +f 331/503/15 316/472/51 332/488/51 +f 324/504/33 309/458/52 325/490/52 +f 307/486/72 292/505/61 308/456/61 +f 356/506/73 358/507/93 359/508/73 +f 355/509/16 359/508/73 360/510/16 +f 354/511/94 360/510/16 361/512/94 +f 100/185/15 10/513/15 9/186/16 +f 17/188/17 33/225/17 32/189/18 +f 25/191/19 41/241/19 40/192/20 +f 18/194/21 34/227/21 33/195/17 +f 26/196/22 42/243/22 41/197/19 +f 19/198/23 35/229/23 34/199/21 +f 26/196/22 27/207/24 43/200/24 +f 20/202/25 36/231/25 35/203/23 +f 28/205/26 44/246/26 43/206/24 +f 21/208/27 37/233/27 36/209/25 +f 29/210/28 45/248/28 44/211/26 +f 22/212/29 38/235/29 37/213/27 +f 30/214/30 46/250/30 45/215/28 +f 23/216/31 39/237/31 38/217/29 +f 16/190/18 32/254/18 31/218/32 +f 15/219/32 31/252/32 46/220/30 +f 24/193/20 40/239/20 39/221/31 +f 107/222/33 3/260/33 2/223/34 +f 99/256/51 11/262/51 10/257/15 +f 106/259/52 4/264/52 3/260/33 +f 98/261/53 12/266/53 11/262/51 +f 105/263/54 5/268/54 4/264/52 +f 97/265/55 13/272/55 12/266/53 +f 104/267/56 6/274/56 5/268/54 +f 111/269/57 113/276/57 14/270/58 +f 96/271/58 14/270/58 13/272/55 +f 103/273/59 7/346/59 6/274/56 +f 110/275/60 112/347/60 113/276/57 +f 68/277/61 52/326/61 53/278/12 +f 70/280/62 69/279/12 53/278/12 +f 70/280/62 54/281/62 55/282/63 +f 72/284/64 71/514/63 55/285/63 +f 72/284/64 56/286/64 57/287/6 +f 73/288/6 57/287/6 58/289/65 +f 74/290/65 58/289/65 59/291/66 +f 75/292/66 59/291/66 60/293/67 +f 76/294/67 60/293/67 61/295/9 +f 79/297/68 77/296/9 61/295/9 +f 79/297/68 62/298/68 63/299/69 +f 78/300/69 63/299/69 48/301/70 +f 64/302/70 48/301/70 49/303/3 +f 66/305/71 65/304/3 49/303/3 +f 67/307/72 66/305/71 50/306/71 +f 92/309/51 76/294/51 77/296/53 +f 85/311/52 69/279/52 70/280/54 +f 93/310/53 77/296/53 79/297/55 +f 86/312/54 70/280/54 71/283/56 +f 95/315/58 78/300/58 64/302/57 +f 94/313/55 79/297/55 78/300/58 +f 87/317/56 71/514/56 72/284/59 +f 80/316/57 64/302/57 65/304/60 +f 88/318/59 72/284/59 73/288/73 +f 81/319/60 65/304/60 66/305/74 +f 89/320/73 73/288/73 74/290/16 +f 82/321/74 66/305/74 67/307/34 +f 90/322/16 74/290/16 75/292/15 +f 83/323/34 67/307/34 68/277/33 +f 91/324/15 75/292/15 76/294/51 +f 84/325/33 68/277/33 69/279/52 +f 67/307/72 51/308/72 52/326/61 +f 128/327/75 110/275/75 111/269/76 +f 108/224/34 2/223/34 1/329/74 +f 147/16/55 163/51/55 164/50/53 +f 155/12/54 171/68/54 172/69/52 +f 148/10/53 164/50/53 165/53/51 +f 156/2/52 172/69/52 173/38/33 +f 149/5/51 165/53/51 166/55/15 +f 157/3/33 173/38/33 174/41/34 +f 150/114/15 166/58/15 167/57/16 +f 158/28/34 174/41/34 175/43/74 +f 151/30/16 167/57/16 168/60/73 +f 159/23/74 175/43/74 176/45/60 +f 152/26/73 168/60/73 169/64/59 +f 160/24/60 176/45/60 177/47/57 +f 153/22/59 169/64/59 170/63/56 +f 146/15/58 162/49/58 163/51/55 +f 161/14/57 177/47/57 162/49/58 +f 154/11/56 170/63/56 171/68/54 +f 121/331/77 120/335/78 102/332/78 +f 127/333/79 109/330/79 110/275/75 +f 119/334/80 101/187/80 102/332/78 +f 126/336/81 108/224/81 109/330/79 +f 119/334/80 118/56/82 100/185/82 +f 126/336/81 125/340/83 107/222/83 +f 117/337/84 99/256/84 100/258/82 +f 124/339/85 106/259/85 107/222/83 +f 116/341/86 98/261/86 99/256/84 +f 124/339/85 123/344/87 105/263/87 +f 115/342/88 97/265/88 98/261/86 +f 122/343/89 104/267/89 105/263/87 +f 114/345/90 129/328/76 111/269/76 +f 114/345/90 96/271/90 97/265/88 +f 121/331/77 103/273/77 104/267/89 +f 102/332/73 8/348/73 7/346/59 +f 109/330/74 1/329/74 112/347/60 +f 101/187/16 9/186/16 8/348/73 +f 141/1/33 142/31/34 27/207/34 +f 142/31/34 143/27/74 28/205/74 +f 143/27/74 144/19/60 29/210/60 +f 144/19/60 145/20/57 30/214/57 +f 145/20/57 130/13/58 15/219/58 +f 130/13/58 131/9/55 16/190/55 +f 131/9/55 132/4/53 17/188/53 +f 132/4/53 133/6/51 18/194/51 +f 133/6/51 134/36/15 19/198/15 +f 134/29/15 135/25/16 20/202/16 +f 135/25/16 136/21/73 21/208/73 +f 136/21/73 137/17/59 22/212/59 +f 137/17/59 138/18/56 23/216/56 +f 138/18/56 139/7/54 24/193/54 +f 139/7/54 140/8/52 25/191/52 +f 140/8/52 141/1/33 26/196/33 +f 180/349/60 181/515/91 182/350/91 +f 179/352/74 180/349/60 183/351/60 +f 178/354/92 179/352/74 184/353/74 +f 212/356/61 196/405/61 197/357/12 +f 214/359/62 213/358/12 197/357/12 +f 214/359/62 198/360/62 199/361/63 +f 216/363/64 215/516/63 199/364/63 +f 216/363/64 200/365/64 201/366/6 +f 217/367/6 201/366/6 202/368/65 +f 218/369/65 202/368/65 203/370/66 +f 220/372/67 219/371/66 203/370/66 +f 220/372/67 204/373/67 205/374/9 +f 223/376/68 221/375/9 205/374/9 +f 222/378/69 223/376/68 206/377/68 +f 222/378/69 207/379/69 192/380/70 +f 209/382/3 208/381/70 192/380/70 +f 210/384/71 209/382/3 193/383/3 +f 211/386/72 210/384/71 194/385/71 +f 236/388/51 220/372/51 221/375/53 +f 229/390/52 213/358/52 214/359/54 +f 237/389/53 221/375/53 223/376/55 +f 230/391/54 214/359/54 215/362/56 +f 239/394/58 222/378/58 208/381/57 +f 238/392/55 223/376/55 222/378/58 +f 231/396/56 215/516/56 216/363/59 +f 224/395/57 208/381/57 209/382/60 +f 232/397/59 216/363/59 217/367/73 +f 225/398/60 209/382/60 210/384/74 +f 233/399/73 217/367/73 218/369/16 +f 226/400/74 210/384/74 211/386/34 +f 234/401/16 218/369/16 219/371/15 +f 227/402/34 211/386/34 212/356/33 +f 235/403/15 219/371/15 220/372/51 +f 228/404/33 212/356/33 213/358/52 +f 211/386/72 195/387/72 196/405/61 +f 260/406/61 244/455/61 245/407/12 +f 262/409/62 261/408/12 245/407/12 +f 262/409/62 246/410/62 247/411/63 +f 264/413/64 263/517/63 247/414/63 +f 264/413/64 248/415/64 249/416/6 +f 265/417/6 249/416/6 250/418/65 +f 266/419/65 250/418/65 251/420/66 +f 268/422/67 267/421/66 251/420/66 +f 268/422/67 252/423/67 253/424/9 +f 271/426/68 269/425/9 253/424/9 +f 271/426/68 254/427/68 255/428/69 +f 270/429/69 255/428/69 240/430/70 +f 256/431/70 240/430/70 241/432/3 +f 258/434/71 257/433/3 241/432/3 +f 259/436/72 258/434/71 242/435/71 +f 284/438/51 268/422/51 269/425/53 +f 277/440/52 261/408/52 262/409/54 +f 285/439/53 269/425/53 271/426/55 +f 278/441/54 262/409/54 263/412/56 +f 287/444/58 270/429/58 256/431/57 +f 286/442/55 271/426/55 270/429/58 +f 279/446/56 263/517/56 264/413/59 +f 272/445/57 256/431/57 257/433/60 +f 280/447/59 264/413/59 265/417/73 +f 273/448/60 257/433/60 258/434/74 +f 281/449/73 265/417/73 266/419/16 +f 274/450/74 258/434/74 259/436/34 +f 282/451/16 266/419/16 267/421/15 +f 275/452/34 259/436/34 260/406/33 +f 283/453/15 267/421/15 268/422/51 +f 276/454/33 260/406/33 261/408/52 +f 259/436/72 243/437/72 244/455/61 +f 308/456/61 292/505/61 293/457/12 +f 310/459/62 309/458/12 293/457/12 +f 310/459/62 294/460/62 295/461/63 +f 312/463/64 311/518/63 295/464/63 +f 312/463/64 296/465/64 297/466/6 +f 313/467/6 297/466/6 298/468/65 +f 314/469/65 298/468/65 299/470/66 +f 316/472/67 315/471/66 299/470/66 +f 316/472/67 300/473/67 301/474/9 +f 319/476/68 317/475/9 301/474/9 +f 319/476/68 302/477/68 303/478/69 +f 318/479/69 303/478/69 288/480/70 +f 304/481/70 288/480/70 289/482/3 +f 306/484/71 305/483/3 289/482/3 +f 307/486/72 306/484/71 290/485/71 +f 332/488/51 316/472/51 317/475/53 +f 325/490/52 309/458/52 310/459/54 +f 333/489/53 317/475/53 319/476/55 +f 326/491/54 310/459/54 311/462/56 +f 335/494/58 318/479/58 304/481/57 +f 334/492/55 319/476/55 318/479/58 +f 327/496/56 311/518/56 312/463/59 +f 320/495/57 304/481/57 305/483/60 +f 328/497/59 312/463/59 313/467/73 +f 321/498/60 305/483/60 306/484/74 +f 329/499/73 313/467/73 314/469/16 +f 322/500/74 306/484/74 307/486/34 +f 330/501/16 314/469/16 315/471/15 +f 323/502/34 307/486/34 308/456/33 +f 331/503/15 315/471/15 316/472/51 +f 324/504/33 308/456/33 309/458/52 +f 307/486/72 291/487/72 292/505/61 +f 356/506/73 357/519/93 358/507/93 +f 355/509/16 356/506/73 359/508/73 +f 354/511/94 355/509/16 360/510/16 diff --git a/src/main/resources/assets/hbm/models/missile_strong.obj b/src/main/resources/assets/hbm/models/missile_strong.obj new file mode 100644 index 000000000..e6b97761c --- /dev/null +++ b/src/main/resources/assets/hbm/models/missile_strong.obj @@ -0,0 +1,979 @@ +# Blender v2.79 (sub 0) OBJ File: 'missile_strong.blend' +# www.blender.org +o Circle +v 0.000000 4.125000 -0.625000 +v -0.239177 4.125000 -0.577425 +v -0.441942 4.125000 -0.441942 +v -0.577425 4.125000 -0.239177 +v -0.625000 4.125000 0.000000 +v -0.577425 4.125000 0.239177 +v -0.441942 4.125000 0.441942 +v -0.239177 4.125000 0.577425 +v -0.000000 4.125000 0.625000 +v 0.239177 4.125000 0.577425 +v 0.441942 4.125000 0.441942 +v 0.577425 4.125000 0.239177 +v 0.625000 4.125000 -0.000000 +v 0.577425 4.125000 -0.239177 +v 0.441942 4.125000 -0.441942 +v 0.239177 4.125000 -0.577425 +v 0.000000 4.875000 -0.630000 +v -0.241091 4.875000 -0.582044 +v -0.445477 4.875000 -0.445477 +v -0.582044 4.875000 -0.241091 +v -0.630000 4.875000 0.000000 +v -0.582044 4.875000 0.241091 +v -0.445477 4.875000 0.445477 +v -0.241091 4.875000 0.582044 +v -0.000000 4.875000 0.630000 +v 0.241090 4.875000 0.582044 +v 0.445477 4.875000 0.445477 +v 0.582044 4.875000 0.241091 +v 0.630000 4.875000 -0.000000 +v 0.582044 4.875000 -0.241091 +v 0.445477 4.875000 -0.445477 +v 0.241090 4.875000 -0.582044 +v 0.000000 5.000000 -0.500000 +v -0.191342 5.000000 -0.461940 +v -0.353553 5.000000 -0.353553 +v -0.461940 5.000000 -0.191342 +v -0.500000 5.000000 0.000000 +v -0.461940 5.000000 0.191342 +v -0.353553 5.000000 0.353553 +v -0.191342 5.000000 0.461940 +v -0.000000 5.000000 0.500000 +v 0.191342 5.000000 0.461940 +v 0.353553 5.000000 0.353554 +v 0.461940 5.000000 0.191342 +v 0.500000 5.000000 -0.000000 +v 0.461940 5.000000 -0.191342 +v 0.353553 5.000000 -0.353554 +v 0.191341 5.000000 -0.461940 +v 0.000000 6.000000 0.000000 +v 0.000000 4.000000 -0.500000 +v -0.191342 4.000000 -0.461940 +v -0.353553 4.000000 -0.353553 +v -0.461940 4.000000 -0.191342 +v -0.500000 4.000000 0.000000 +v -0.461940 4.000000 0.191342 +v -0.353553 4.000000 0.353553 +v -0.191342 4.000000 0.461940 +v -0.000000 4.000000 0.500000 +v 0.191342 4.000000 0.461940 +v 0.353553 4.000000 0.353554 +v 0.461940 4.000000 0.191342 +v 0.500000 4.000000 -0.000000 +v 0.461940 4.000000 -0.191342 +v 0.353553 4.000000 -0.353554 +v 0.191341 4.000000 -0.461940 +v 0.000000 3.500000 -0.500000 +v -0.191342 3.500000 -0.461940 +v -0.353553 3.500000 -0.353553 +v -0.461940 3.500000 -0.191342 +v -0.500000 3.500000 0.000000 +v -0.461940 3.500000 0.191342 +v -0.353553 3.500000 0.353553 +v -0.191342 3.500000 0.461940 +v -0.000000 3.500000 0.500000 +v 0.191342 3.500000 0.461940 +v 0.353553 3.500000 0.353554 +v 0.461940 3.500000 0.191342 +v 0.500000 3.500000 -0.000000 +v 0.461940 3.500000 -0.191342 +v 0.353553 3.500000 -0.353554 +v 0.191341 3.500000 -0.461940 +v 0.000000 2.500000 -0.625000 +v -0.239177 2.500000 -0.577425 +v -0.441942 2.500000 -0.441942 +v -0.577425 2.500000 -0.239177 +v -0.625000 2.500000 0.000000 +v -0.577425 2.500000 0.239177 +v -0.441942 2.500000 0.441942 +v -0.239177 2.500000 0.577425 +v -0.000000 2.500000 0.625000 +v 0.239177 2.500000 0.577425 +v 0.441942 2.500000 0.441942 +v 0.577425 2.500000 0.239177 +v 0.625000 2.500000 -0.000000 +v 0.577425 2.500000 -0.239177 +v 0.441942 2.500000 -0.441942 +v 0.239177 2.500000 -0.577425 +v 0.000000 0.500000 -0.625000 +v -0.239177 0.500000 -0.577425 +v -0.441942 0.500000 -0.441942 +v -0.577425 0.500000 -0.239177 +v -0.625000 0.500000 0.000000 +v -0.577425 0.500000 0.239177 +v -0.441942 0.500000 0.441942 +v -0.239177 0.500000 0.577425 +v -0.000000 0.500000 0.625000 +v 0.239177 0.500000 0.577425 +v 0.441942 0.500000 0.441942 +v 0.577425 0.500000 0.239177 +v 0.625000 0.500000 -0.000000 +v 0.577425 0.500000 -0.239177 +v 0.441942 0.500000 -0.441942 +v 0.239177 0.500000 -0.577425 +v 0.000000 0.500000 -0.500000 +v -0.191342 0.500000 -0.461940 +v -0.353553 0.500000 -0.353553 +v -0.461940 0.500000 -0.191342 +v -0.500000 0.500000 0.000000 +v -0.461940 0.500000 0.191342 +v -0.353553 0.500000 0.353553 +v -0.191342 0.500000 0.461940 +v -0.000000 0.500000 0.500000 +v 0.191342 0.500000 0.461940 +v 0.353553 0.500000 0.353554 +v 0.461940 0.500000 0.191342 +v 0.500000 0.500000 -0.000000 +v 0.461940 0.500000 -0.191342 +v 0.353553 0.500000 -0.353554 +v 0.191341 0.500000 -0.461940 +v 0.000000 0.000000 -0.500000 +v -0.191342 0.000000 -0.461940 +v -0.353553 0.000000 -0.353553 +v -0.461940 0.000000 -0.191342 +v -0.500000 0.000000 0.000000 +v -0.461940 0.000000 0.191342 +v -0.353553 0.000000 0.353553 +v -0.191342 0.000000 0.461940 +v -0.000000 0.000000 0.500000 +v 0.191342 0.000000 0.461940 +v 0.353553 0.000000 0.353554 +v 0.461940 0.000000 0.191342 +v 0.500000 0.000000 -0.000000 +v 0.461940 0.000000 -0.191342 +v 0.353553 0.000000 -0.353554 +v 0.191341 0.000000 -0.461940 +v 0.333224 4.750000 -0.377418 +v 0.885651 4.500000 -0.885651 +v 0.333224 4.250000 -0.377418 +v 0.885651 4.250000 -0.885651 +v 0.377418 4.750000 -0.333224 +v 0.377418 4.250000 -0.333224 +v 0.377418 4.750000 0.333224 +v 0.885652 4.500000 0.885651 +v 0.377418 4.250000 0.333224 +v 0.885652 4.250000 0.885651 +v 0.333224 4.750000 0.377418 +v 0.333224 4.250000 0.377418 +v 0.375651 2.250000 0.331456 +v 0.883884 1.500000 0.883883 +v 0.375651 0.250000 0.331456 +v 0.883884 0.250000 0.883883 +v 0.331456 2.250000 0.375650 +v 0.331456 0.250000 0.375650 +v -0.331456 0.250000 -0.375650 +v -0.331456 2.250000 -0.375650 +v -0.883884 0.250000 -0.883883 +v -0.375651 0.250000 -0.331456 +v -0.883884 1.500000 -0.883883 +v -0.375651 2.250000 -0.331456 +v 0.331456 2.250000 -0.375650 +v 0.883883 1.500000 -0.883883 +v 0.331456 0.250000 -0.375650 +v 0.883883 0.250000 -0.883883 +v 0.375650 2.250000 -0.331456 +v 0.375650 0.250000 -0.331456 +v -0.333224 4.250000 -0.377418 +v -0.333224 4.750000 -0.377418 +v -0.885651 4.250000 -0.885651 +v -0.377418 4.250000 -0.333224 +v -0.885651 4.500000 -0.885651 +v -0.377418 4.750000 -0.333224 +v -0.375650 0.250000 0.331456 +v -0.375650 2.250000 0.331456 +v -0.883883 0.250000 0.883883 +v -0.331456 0.250000 0.375651 +v -0.883883 1.500000 0.883883 +v -0.331456 2.250000 0.375651 +v -0.377418 4.250000 0.333224 +v -0.377418 4.750000 0.333224 +v -0.885651 4.250000 0.885651 +v -0.333224 4.250000 0.377418 +v -0.885651 4.500000 0.885651 +v -0.333224 4.750000 0.377418 +vt 0.350000 0.102041 +vt 0.387500 0.081633 +vt 0.400000 0.102041 +vt 0.437500 0.081633 +vt 0.450000 0.102041 +vt 0.450000 0.081633 +vt 0.500000 0.102041 +vt 0.500000 0.081633 +vt 0.550000 0.102041 +vt 0.550000 0.081633 +vt 0.600000 0.102041 +vt 0.600000 0.081633 +vt 0.650000 0.102041 +vt 0.650000 0.081633 +vt 0.700000 0.102041 +vt 0.737500 0.081633 +vt 0.750000 0.102041 +vt 0.750000 0.081633 +vt 0.800000 0.102041 +vt 0.000000 0.102041 +vt 0.037500 0.081633 +vt 0.050000 0.102041 +vt 0.087500 0.081633 +vt 0.100000 0.102041 +vt 0.100000 0.081633 +vt 0.150000 0.102041 +vt 0.150000 0.081633 +vt 0.200000 0.102041 +vt 0.237500 0.081633 +vt 0.250000 0.102041 +vt 0.250000 0.081633 +vt 0.300000 0.102041 +vt 0.300000 0.081633 +vt 0.970508 0.024075 +vt 0.970508 0.139190 +vt 0.829492 0.139190 +vt 0.950000 0.561224 +vt 0.800000 0.520408 +vt 0.800000 0.602041 +vt 0.800000 0.520408 +vt 0.800000 0.602041 +vt 0.950000 0.602041 +vt 0.800000 0.612245 +vt 0.800000 0.510204 +vt 0.950000 0.520408 +vt 0.950000 0.561224 +vt 0.800000 0.520408 +vt 0.800000 0.602041 +vt 0.800000 0.520408 +vt 0.800000 0.602041 +vt 0.950000 0.602041 +vt 0.800000 0.612245 +vt 0.800000 0.510204 +vt 0.950000 0.520408 +vt 0.950000 0.377551 +vt 0.800000 0.173469 +vt 0.800000 0.500000 +vt 0.800000 0.173469 +vt 0.800000 0.500000 +vt 0.950000 0.500000 +vt 0.800000 0.510204 +vt 0.800000 0.163265 +vt 0.950000 0.173469 +vt 0.800000 0.163265 +vt 0.950000 0.173469 +vt 0.800000 0.173469 +vt 0.950000 0.500000 +vt 0.800000 0.510204 +vt 0.800000 0.500000 +vt 0.950000 0.377551 +vt 0.800000 0.173469 +vt 0.800000 0.500000 +vt 0.950000 0.377551 +vt 0.800000 0.173469 +vt 0.800000 0.500000 +vt 0.800000 0.173469 +vt 0.800000 0.500000 +vt 0.950000 0.500000 +vt 0.800000 0.510204 +vt 0.800000 0.163265 +vt 0.950000 0.173469 +vt 0.800000 0.510204 +vt 0.950000 0.520408 +vt 0.800000 0.520408 +vt 0.950000 0.602041 +vt 0.800000 0.612245 +vt 0.800000 0.602041 +vt 0.950000 0.561224 +vt 0.800000 0.520408 +vt 0.800000 0.602041 +vt 0.800000 0.163265 +vt 0.950000 0.173469 +vt 0.800000 0.173469 +vt 0.950000 0.500000 +vt 0.800000 0.510204 +vt 0.800000 0.500000 +vt 0.950000 0.377551 +vt 0.800000 0.173469 +vt 0.800000 0.500000 +vt 0.800000 0.510204 +vt 0.950000 0.520408 +vt 0.800000 0.520408 +vt 0.950000 0.602041 +vt 0.800000 0.612245 +vt 0.800000 0.602041 +vt 0.950000 0.561224 +vt 0.800000 0.520408 +vt 0.800000 0.602041 +vt 0.350000 0.081633 +vt 0.400000 0.081633 +vt 0.487500 0.081633 +vt 0.537500 0.081633 +vt 0.587500 0.081633 +vt 0.637500 0.081633 +vt 0.687500 0.081633 +vt 0.700000 0.081633 +vt 0.787500 0.081633 +vt 0.000000 0.081633 +vt 0.050000 0.081633 +vt 0.137500 0.081633 +vt 0.187500 0.081633 +vt 0.200000 0.081633 +vt 0.287500 0.081633 +vt 0.337500 0.081633 +vt 0.992123 0.050483 +vt 0.999714 0.081633 +vt 0.992123 0.112783 +vt 0.938159 0.156836 +vt 0.900000 0.163032 +vt 0.861841 0.156836 +vt 0.807876 0.112783 +vt 0.800286 0.081633 +vt 0.807877 0.050483 +vt 0.829492 0.024075 +vt 0.861841 0.006430 +vt 0.900000 0.000234 +vt 0.938159 0.006430 +vt 0.700000 0.693878 +vt 0.650000 0.816327 +vt 0.650000 0.693878 +vt 0.300000 0.693878 +vt 0.250000 0.816327 +vt 0.250000 0.693878 +vt 0.750000 0.693878 +vt 0.700000 0.816327 +vt 0.350000 0.693878 +vt 0.300000 0.816327 +vt 0.800000 0.693878 +vt 0.750000 0.816327 +vt 0.400000 0.693878 +vt 0.350000 0.816327 +vt 0.050000 0.693878 +vt 0.000000 0.816327 +vt -0.000000 0.693878 +vt 0.450000 0.693878 +vt 0.400000 0.816327 +vt 0.100000 0.693878 +vt 0.050000 0.816327 +vt 0.500000 0.693878 +vt 0.450000 0.816327 +vt 0.150000 0.693878 +vt 0.100000 0.816327 +vt 0.550000 0.693878 +vt 0.500000 0.816327 +vt 0.200000 0.693878 +vt 0.150000 0.816327 +vt 0.600000 0.816327 +vt 0.600000 0.693878 +vt 0.550000 0.816327 +vt 0.200000 0.816327 +vt 0.150000 0.836735 +vt 0.600000 0.836735 +vt 0.550000 0.836735 +vt 0.200000 0.836735 +vt 0.650000 0.836735 +vt 0.250000 0.836735 +vt 0.700000 0.836735 +vt 0.337500 0.836735 +vt 0.300000 0.836735 +vt 0.800000 0.816327 +vt 0.750000 0.836735 +vt 0.350000 0.836735 +vt -0.000000 0.836735 +vt 0.437500 0.836735 +vt 0.400000 0.836735 +vt 0.050000 0.836735 +vt 0.450000 0.836735 +vt 0.100000 0.836735 +vt 0.500000 0.836735 +vt 0.300000 0.673469 +vt 0.687500 0.836735 +vt 0.662500 1.000000 +vt 0.737500 0.836735 +vt 0.712500 1.000000 +vt 0.787500 0.836735 +vt 0.762500 1.000000 +vt 0.037500 0.836735 +vt 0.012500 1.000000 +vt 0.087500 0.836735 +vt 0.062500 1.000000 +vt 0.137500 0.836735 +vt 0.112500 1.000000 +vt 0.187500 0.836735 +vt 0.162500 1.000000 +vt 0.237500 0.836735 +vt 0.212500 1.000000 +vt 0.287500 0.836735 +vt 0.262500 1.000000 +vt 0.312500 1.000000 +vt 0.387500 0.836735 +vt 0.362500 1.000000 +vt 0.412500 1.000000 +vt 0.487500 0.836735 +vt 0.462500 1.000000 +vt 0.537500 0.836735 +vt 0.512500 1.000000 +vt 0.587500 0.836735 +vt 0.562500 1.000000 +vt 0.637500 0.836735 +vt 0.612500 1.000000 +vt 0.350000 0.673469 +vt 0.400000 0.673469 +vt 0.450000 0.673469 +vt 0.500000 0.673469 +vt 0.587500 0.673469 +vt 0.600000 0.673469 +vt 0.650000 0.673469 +vt 0.700000 0.673469 +vt 0.750000 0.673469 +vt 0.000000 0.673469 +vt 0.050000 0.673469 +vt 0.100000 0.673469 +vt 0.150000 0.673469 +vt 0.200000 0.673469 +vt 0.250000 0.673469 +vt 0.687500 0.591837 +vt 0.687500 0.673469 +vt 0.287500 0.591837 +vt 0.287500 0.673469 +vt 0.737500 0.591837 +vt 0.737500 0.673469 +vt 0.337500 0.591837 +vt 0.337500 0.673469 +vt 0.787500 0.591837 +vt 0.787500 0.673469 +vt 0.387500 0.591837 +vt 0.387500 0.673469 +vt 0.037500 0.591837 +vt 0.037500 0.673469 +vt 0.437500 0.591837 +vt 0.437500 0.673469 +vt 0.087500 0.591837 +vt 0.087500 0.673469 +vt 0.487500 0.591837 +vt 0.487500 0.673469 +vt 0.137500 0.591837 +vt 0.137500 0.673469 +vt 0.537500 0.591837 +vt 0.537500 0.673469 +vt 0.187500 0.591837 +vt 0.187500 0.673469 +vt 0.637500 0.591837 +vt 0.637500 0.673469 +vt 0.550000 0.673469 +vt 0.587500 0.591837 +vt 0.237500 0.591837 +vt 0.237500 0.673469 +vt 0.100000 0.591837 +vt 0.150000 0.428571 +vt 0.500000 0.591837 +vt 0.550000 0.428571 +vt 0.150000 0.591837 +vt 0.200000 0.428571 +vt 0.600000 0.591837 +vt 0.650000 0.428571 +vt 0.550000 0.591837 +vt 0.600000 0.428571 +vt 0.250000 0.428571 +vt 0.650000 0.591837 +vt 0.700000 0.428571 +vt 0.250000 0.591837 +vt 0.300000 0.428571 +vt 0.700000 0.591837 +vt 0.750000 0.428571 +vt 0.300000 0.591837 +vt 0.350000 0.428571 +vt 0.750000 0.591837 +vt 0.800000 0.428571 +vt 0.350000 0.591837 +vt 0.400000 0.428571 +vt -0.000000 0.591837 +vt 0.050000 0.428571 +vt 0.400000 0.591837 +vt 0.450000 0.428571 +vt 0.050000 0.591837 +vt 0.100000 0.428571 +vt 0.450000 0.591837 +vt 0.500000 0.428571 +vt 0.000000 0.428571 +vt 0.537500 -0.000000 +vt 0.187500 0.000000 +vt 0.637500 0.000000 +vt 0.587500 0.000000 +vt 0.237500 0.000000 +vt 0.687500 0.000000 +vt 0.287500 0.000000 +vt 0.737500 -0.000000 +vt 0.337500 0.000000 +vt 0.787500 -0.000000 +vt 0.387500 0.000000 +vt 0.037500 -0.000000 +vt 0.437500 0.000000 +vt 0.087500 -0.000000 +vt 0.487500 0.000000 +vt 0.137500 0.000000 +vt 0.200000 0.591837 +vt 0.500000 -0.000000 +vt 0.150000 0.000000 +vt 0.600000 0.000000 +vt 0.550000 0.000000 +vt 0.200000 -0.000000 +vt 0.650000 0.000000 +vt 0.250000 -0.000000 +vt 0.700000 0.000000 +vt 0.300000 -0.000000 +vt 0.750000 0.000000 +vt 0.350000 -0.000000 +vt -0.000000 0.000000 +vt 0.400000 -0.000000 +vt 0.050000 -0.000000 +vt 0.450000 0.000000 +vt 0.100000 0.000000 +vn 0.0000 -1.0000 0.0000 +vn -0.6771 0.0000 -0.7359 +vn 0.7359 0.0000 0.6771 +vn 0.2236 0.9487 -0.2236 +vn 0.7359 0.0000 -0.6771 +vn -0.6771 0.0000 0.7359 +vn 0.2236 0.9487 0.2236 +vn 0.5000 0.7071 0.5000 +vn -0.5000 0.7071 -0.5000 +vn 0.6771 0.0000 -0.7359 +vn -0.7359 0.0000 0.6771 +vn 0.5000 0.7071 -0.5000 +vn -0.2236 0.9487 -0.2236 +vn -0.5000 0.7071 0.5000 +vn -0.7359 0.0000 -0.6771 +vn 0.6771 0.0000 0.7359 +vn -0.2236 0.9487 0.2236 +vn -0.7071 -0.0067 -0.7071 +vn -0.3827 -0.0067 -0.9239 +vn 0.7071 -0.0067 0.7071 +vn 0.3827 -0.0067 0.9239 +vn -0.9239 -0.0067 -0.3827 +vn 0.9239 -0.0067 0.3827 +vn -1.0000 -0.0067 0.0000 +vn 1.0000 -0.0067 -0.0000 +vn -0.9239 -0.0067 0.3827 +vn 0.9239 -0.0067 -0.3827 +vn -0.7071 -0.0067 0.7071 +vn 0.7071 -0.0067 -0.7071 +vn -0.3827 -0.0067 0.9239 +vn 0.3827 -0.0067 -0.9239 +vn -0.0000 -0.0067 1.0000 +vn -0.0000 -0.0067 -1.0000 +vn -0.0000 0.7208 0.6931 +vn -0.2652 0.7208 0.6403 +vn -0.2652 0.7208 -0.6403 +vn -0.0000 0.7208 -0.6931 +vn 0.2652 0.7208 -0.6403 +vn 0.2652 0.7208 0.6403 +vn -0.4901 0.7208 -0.4901 +vn -0.2652 0.7208 -0.6404 +vn 0.4901 0.7208 0.4901 +vn -0.6403 0.7208 -0.2652 +vn 0.6403 0.7208 0.2652 +vn -0.6931 0.7208 -0.0000 +vn 0.6931 0.7208 0.0000 +vn -0.6403 0.7208 0.2652 +vn 0.6403 0.7208 -0.2652 +vn -0.4901 0.7208 0.4901 +vn 0.4901 0.7208 -0.4901 +vn 0.5000 -0.7071 0.5000 +vn 0.6533 -0.7071 0.2706 +vn -0.3423 0.4472 -0.8263 +vn -0.6325 0.4472 -0.6325 +vn 0.0000 1.0000 0.0000 +vn -0.8263 0.4472 -0.3423 +vn -0.8944 0.4472 -0.0000 +vn -0.8263 0.4472 0.3423 +vn -0.6325 0.4472 0.6325 +vn -0.3423 0.4472 0.8263 +vn -0.0000 0.4472 0.8944 +vn 0.3423 0.4472 0.8263 +vn 0.6325 0.4472 0.6325 +vn 0.8263 0.4472 0.3423 +vn 0.8944 0.4472 0.0000 +vn 0.8263 0.4472 -0.3423 +vn 0.6325 0.4472 -0.6325 +vn 0.3423 0.4472 -0.8263 +vn -0.0000 0.4472 -0.8944 +vn 0.7071 -0.7071 0.0000 +vn 0.6533 -0.7071 -0.2706 +vn 0.5000 -0.7071 -0.5000 +vn 0.2706 -0.7071 -0.6533 +vn -0.0000 -0.7071 -0.7071 +vn -0.2706 -0.7071 -0.6533 +vn -0.5000 -0.7071 -0.5000 +vn -0.6533 -0.7071 -0.2706 +vn -0.7071 -0.7071 -0.0000 +vn -0.6533 -0.7071 0.2706 +vn -0.5000 -0.7071 0.5000 +vn -0.2706 -0.7071 0.6533 +vn -0.0000 -0.7071 0.7071 +vn 0.2706 -0.7071 0.6533 +vn -0.3827 0.0000 -0.9239 +vn -0.7071 0.0000 -0.7071 +vn 0.3827 0.0000 0.9239 +vn 0.7071 0.0000 0.7071 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 0.3827 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.9239 0.0000 0.3827 +vn 0.9239 0.0000 -0.3827 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn -0.0000 0.0000 1.0000 +vn -0.0000 0.0000 -1.0000 +vn -0.7016 0.1240 0.7016 +vn -0.3797 0.1240 0.9167 +vn 0.7016 0.1240 -0.7016 +vn 0.3797 0.1240 -0.9167 +vn -0.0000 0.1240 0.9923 +vn -0.0000 0.1240 -0.9923 +vn -0.3797 0.1240 -0.9167 +vn 0.3797 0.1240 0.9167 +vn -0.7016 0.1240 -0.7016 +vn 0.7016 0.1240 0.7016 +vn -0.9167 0.1240 -0.3797 +vn 0.9167 0.1240 0.3797 +vn -0.9923 0.1240 -0.0000 +vn 0.9923 0.1240 0.0000 +vn -0.9167 0.1240 0.3797 +vn 0.9167 0.1240 -0.3797 +s off +f 109/1/1 126/2/1 110/3/1 +f 110/3/1 127/4/1 111/5/1 +f 127/6/1 112/7/1 111/5/1 +f 128/8/1 113/9/1 112/7/1 +f 129/10/1 98/11/1 113/9/1 +f 114/12/1 99/13/1 98/11/1 +f 115/14/1 100/15/1 99/13/1 +f 100/15/1 117/16/1 101/17/1 +f 117/18/1 102/19/1 101/17/1 +f 102/20/1 119/21/1 103/22/1 +f 103/22/1 120/23/1 104/24/1 +f 120/25/1 105/26/1 104/24/1 +f 121/27/1 106/28/1 105/26/1 +f 106/28/1 123/29/1 107/30/1 +f 123/31/1 108/32/1 107/30/1 +f 124/33/1 109/1/1 108/32/1 +f 132/34/1 144/35/1 140/36/1 +f 147/37/2 148/38/2 146/39/2 +f 151/40/3 147/37/3 150/41/3 +f 147/42/4 146/43/4 150/41/4 +f 148/44/1 149/45/1 151/40/1 +f 153/46/5 154/47/5 152/48/5 +f 157/49/6 153/46/6 156/50/6 +f 153/51/7 152/52/7 156/50/7 +f 154/53/1 155/54/1 157/49/1 +f 159/55/5 160/56/5 158/57/5 +f 163/58/6 159/55/6 162/59/6 +f 159/60/8 158/61/8 162/59/8 +f 160/62/1 161/63/1 163/58/1 +f 167/64/1 166/65/1 164/66/1 +f 168/67/9 169/68/9 165/69/9 +f 164/66/10 168/70/10 165/69/10 +f 168/70/11 167/71/11 169/72/11 +f 171/73/2 172/74/2 170/75/2 +f 175/76/3 171/73/3 174/77/3 +f 171/78/12 170/79/12 174/77/12 +f 172/80/1 173/81/1 175/76/1 +f 179/82/1 178/83/1 176/84/1 +f 180/85/13 181/86/13 177/87/13 +f 176/84/10 180/88/10 177/87/10 +f 180/88/11 179/89/11 181/90/11 +f 185/91/1 184/92/1 182/93/1 +f 186/94/14 187/95/14 183/96/14 +f 182/93/15 186/97/15 183/96/15 +f 186/97/16 185/98/16 187/99/16 +f 191/100/1 190/101/1 188/102/1 +f 192/103/17 193/104/17 189/105/17 +f 188/102/15 192/106/15 189/105/15 +f 192/106/16 191/107/16 193/108/16 +f 109/1/1 125/109/1 126/2/1 +f 110/3/1 126/110/1 127/4/1 +f 127/6/1 128/111/1 112/7/1 +f 128/8/1 129/112/1 113/9/1 +f 129/10/1 114/113/1 98/11/1 +f 114/12/1 115/114/1 99/13/1 +f 115/14/1 116/115/1 100/15/1 +f 100/15/1 116/116/1 117/16/1 +f 117/18/1 118/117/1 102/19/1 +f 102/20/1 118/118/1 119/21/1 +f 103/22/1 119/119/1 120/23/1 +f 120/25/1 121/120/1 105/26/1 +f 121/27/1 122/121/1 106/28/1 +f 106/28/1 122/122/1 123/29/1 +f 123/31/1 124/123/1 108/32/1 +f 124/33/1 125/124/1 109/1/1 +f 132/34/1 131/125/1 130/126/1 +f 130/126/1 145/127/1 144/35/1 +f 144/35/1 143/128/1 142/129/1 +f 142/129/1 141/130/1 140/36/1 +f 140/36/1 139/131/1 138/132/1 +f 138/132/1 137/133/1 136/134/1 +f 136/134/1 135/135/1 134/136/1 +f 134/136/1 133/137/1 136/134/1 +f 133/137/1 132/34/1 136/134/1 +f 132/34/1 130/126/1 144/35/1 +f 144/35/1 142/129/1 140/36/1 +f 140/36/1 138/132/1 132/34/1 +f 138/132/1 136/134/1 132/34/1 +f 147/37/2 149/45/2 148/38/2 +f 151/40/3 149/45/3 147/37/3 +f 153/46/5 155/54/5 154/47/5 +f 157/49/6 155/54/6 153/46/6 +f 159/55/5 161/63/5 160/56/5 +f 163/58/6 161/63/6 159/55/6 +f 164/66/10 166/65/10 168/70/10 +f 168/70/11 166/65/11 167/71/11 +f 171/73/2 173/81/2 172/74/2 +f 175/76/3 173/81/3 171/73/3 +f 176/84/10 178/83/10 180/88/10 +f 180/88/11 178/83/11 179/89/11 +f 182/93/15 184/92/15 186/97/15 +f 186/97/16 184/92/16 185/98/16 +f 188/102/15 190/101/15 192/106/15 +f 192/106/16 190/101/16 191/107/16 +s 1 +f 3/138/18 18/139/19 2/140/19 +f 11/141/20 26/142/21 10/143/21 +f 4/144/22 19/145/18 3/138/18 +f 12/146/23 27/147/20 11/141/20 +f 5/148/24 20/149/22 4/144/22 +f 13/150/25 28/151/23 12/146/23 +f 6/152/26 21/153/24 5/154/24 +f 14/155/27 29/156/25 13/150/25 +f 7/157/28 22/158/26 6/152/26 +f 15/159/29 30/160/27 14/155/27 +f 8/161/30 23/162/28 7/157/28 +f 16/163/31 31/164/29 15/159/29 +f 9/165/32 24/166/30 8/161/30 +f 2/140/19 17/167/33 1/168/33 +f 1/168/33 32/169/31 16/163/31 +f 10/143/21 25/170/32 9/165/32 +f 25/170/34 40/171/35 24/166/35 +f 18/139/36 33/172/37 17/167/37 +f 17/167/37 48/173/38 32/169/38 +f 26/142/39 41/174/34 25/170/34 +f 19/145/40 34/175/41 18/139/36 +f 27/147/42 42/176/39 26/142/39 +f 20/149/43 35/177/40 19/145/40 +f 27/147/42 44/178/44 43/179/42 +f 21/180/45 36/181/43 20/149/43 +f 29/156/46 44/182/44 28/151/44 +f 22/158/47 37/183/45 21/153/45 +f 29/156/46 46/184/48 45/185/46 +f 23/162/49 38/186/47 22/158/47 +f 31/164/50 46/187/48 30/160/48 +f 24/166/35 39/188/49 23/162/49 +f 32/169/38 47/189/50 31/164/50 +f 60/190/51 12/146/52 11/141/51 +f 34/175/53 35/191/54 49/192/55 +f 35/177/54 36/193/56 49/194/55 +f 36/181/56 37/195/57 49/196/55 +f 37/183/57 38/197/58 49/198/55 +f 38/186/58 39/199/59 49/200/55 +f 39/188/59 40/201/60 49/202/55 +f 40/171/60 41/203/61 49/204/55 +f 41/174/61 42/205/62 49/206/55 +f 42/176/62 43/207/63 49/208/55 +f 43/179/63 44/178/64 49/209/55 +f 44/182/64 45/210/65 49/211/55 +f 45/185/65 46/184/66 49/212/55 +f 46/187/66 47/213/67 49/214/55 +f 47/189/67 48/215/68 49/216/55 +f 48/173/68 33/217/69 49/218/55 +f 33/172/69 34/219/53 49/220/55 +f 61/221/52 13/150/70 12/146/52 +f 62/222/70 14/155/71 13/150/70 +f 63/223/71 15/159/72 14/155/71 +f 64/224/72 16/163/73 15/159/72 +f 16/163/73 50/225/74 1/168/74 +f 50/226/74 2/140/75 1/168/74 +f 51/227/75 3/138/76 2/140/75 +f 52/228/76 4/144/77 3/138/76 +f 53/229/77 5/148/78 4/144/77 +f 54/230/78 6/152/79 5/154/78 +f 55/231/79 7/157/80 6/152/79 +f 56/232/80 8/161/81 7/157/80 +f 57/233/81 9/165/82 8/161/81 +f 58/234/82 10/143/83 9/165/82 +f 59/235/83 11/141/51 10/143/83 +f 51/227/84 68/236/85 52/237/85 +f 59/235/86 76/238/87 60/239/87 +f 52/228/85 69/240/88 53/241/88 +f 60/190/87 77/242/89 61/243/89 +f 53/229/88 70/244/90 54/245/90 +f 61/221/89 78/246/91 62/247/91 +f 54/230/90 71/248/92 55/249/92 +f 62/222/91 79/250/93 63/251/93 +f 55/231/92 72/252/94 56/253/94 +f 63/223/93 80/254/95 64/255/95 +f 56/232/94 73/256/96 57/257/96 +f 64/224/95 81/258/97 65/259/97 +f 57/233/96 74/260/98 58/261/98 +f 50/226/99 67/262/84 51/263/84 +f 65/264/97 66/265/99 50/225/99 +f 58/234/98 75/266/86 59/267/86 +f 72/268/100 89/269/101 73/256/101 +f 80/270/102 97/271/103 81/258/103 +f 73/272/101 90/273/104 74/260/104 +f 66/274/105 83/275/106 67/262/106 +f 81/276/103 82/277/105 66/265/105 +f 75/266/107 90/273/104 91/278/107 +f 67/279/106 84/280/108 68/236/108 +f 75/281/107 92/282/109 76/238/109 +f 68/283/108 85/284/110 69/240/110 +f 76/285/109 93/286/111 77/242/111 +f 69/287/110 86/288/112 70/244/112 +f 77/289/111 94/290/113 78/246/113 +f 70/291/112 87/292/114 71/248/114 +f 78/293/113 95/294/115 79/250/115 +f 71/295/114 88/296/100 72/252/100 +f 79/297/115 96/298/102 80/254/102 +f 93/286/89 110/3/91 94/290/91 +f 86/299/90 103/22/92 87/292/92 +f 94/290/91 111/5/93 95/294/93 +f 87/292/92 104/24/94 88/296/94 +f 95/294/93 112/7/95 96/298/95 +f 88/296/94 105/26/96 89/269/96 +f 96/298/95 113/9/97 97/271/97 +f 89/269/96 106/28/98 90/273/98 +f 82/277/99 99/13/84 83/275/84 +f 97/271/97 98/11/99 82/277/99 +f 90/273/98 107/30/86 91/278/86 +f 83/275/84 100/15/85 84/280/85 +f 91/278/86 108/32/87 92/282/87 +f 84/280/85 101/17/88 85/284/88 +f 92/282/87 109/1/89 93/286/89 +f 85/284/88 102/19/90 86/288/90 +f 128/8/95 145/300/97 129/112/97 +f 121/27/96 138/301/98 122/121/98 +f 114/12/99 131/302/84 115/114/84 +f 129/10/97 130/303/99 114/113/99 +f 122/122/98 139/304/86 123/29/86 +f 115/14/84 132/305/85 116/115/85 +f 123/31/86 140/306/87 124/123/87 +f 116/116/85 133/307/88 117/16/88 +f 124/33/87 141/308/89 125/124/89 +f 117/18/88 134/309/90 118/117/90 +f 125/109/89 142/310/91 126/2/91 +f 118/118/90 135/311/92 119/21/92 +f 126/110/91 143/312/93 127/4/93 +f 119/119/92 136/313/94 120/23/94 +f 127/6/93 144/314/95 128/111/95 +f 120/25/94 137/315/96 121/120/96 +f 3/138/18 19/145/18 18/139/19 +f 11/141/20 27/147/20 26/142/21 +f 4/144/22 20/149/22 19/145/18 +f 12/146/23 28/151/23 27/147/20 +f 5/148/24 21/180/24 20/149/22 +f 13/150/25 29/156/25 28/151/23 +f 6/152/26 22/158/26 21/153/24 +f 14/155/27 30/160/27 29/156/25 +f 7/157/28 23/162/28 22/158/26 +f 15/159/29 31/164/29 30/160/27 +f 8/161/30 24/166/30 23/162/28 +f 16/163/31 32/169/31 31/164/29 +f 9/165/32 25/170/32 24/166/30 +f 2/140/19 18/139/19 17/167/33 +f 1/168/33 17/167/33 32/169/31 +f 10/143/21 26/142/21 25/170/32 +f 25/170/34 41/203/34 40/171/35 +f 18/139/36 34/219/41 33/172/37 +f 17/167/37 33/217/37 48/173/38 +f 26/142/39 42/205/39 41/174/34 +f 19/145/40 35/191/40 34/175/41 +f 27/147/42 43/207/42 42/176/39 +f 20/149/43 36/193/43 35/177/40 +f 27/147/42 28/151/44 44/178/44 +f 21/180/45 37/195/45 36/181/43 +f 29/156/46 45/210/46 44/182/44 +f 22/158/47 38/197/47 37/183/45 +f 29/156/46 30/160/48 46/184/48 +f 23/162/49 39/199/49 38/186/47 +f 31/164/50 47/213/50 46/187/48 +f 24/166/35 40/201/35 39/188/49 +f 32/169/38 48/215/38 47/189/50 +f 60/190/51 61/243/52 12/146/52 +f 61/221/52 62/247/70 13/150/70 +f 62/222/70 63/251/71 14/155/71 +f 63/223/71 64/255/72 15/159/72 +f 64/224/72 65/259/73 16/163/73 +f 16/163/73 65/264/73 50/225/74 +f 50/226/74 51/263/75 2/140/75 +f 51/227/75 52/237/76 3/138/76 +f 52/228/76 53/241/77 4/144/77 +f 53/229/77 54/245/78 5/148/78 +f 54/230/78 55/249/79 6/152/79 +f 55/231/79 56/253/80 7/157/80 +f 56/232/80 57/257/81 8/161/81 +f 57/233/81 58/261/82 9/165/82 +f 58/234/82 59/267/83 10/143/83 +f 59/235/83 60/239/51 11/141/51 +f 51/227/84 67/279/84 68/236/85 +f 59/235/86 75/281/86 76/238/87 +f 52/228/85 68/283/85 69/240/88 +f 60/190/87 76/285/87 77/242/89 +f 53/229/88 69/287/88 70/244/90 +f 61/221/89 77/289/89 78/246/91 +f 54/230/90 70/291/90 71/248/92 +f 62/222/91 78/293/91 79/250/93 +f 55/231/92 71/295/92 72/252/94 +f 63/223/93 79/297/93 80/254/95 +f 56/232/94 72/268/94 73/256/96 +f 64/224/95 80/270/95 81/258/97 +f 57/233/96 73/272/96 74/260/98 +f 50/226/99 66/274/99 67/262/84 +f 65/264/97 81/276/97 66/265/99 +f 58/234/98 74/316/98 75/266/86 +f 72/268/100 88/296/100 89/269/101 +f 80/270/102 96/298/102 97/271/103 +f 73/272/101 89/269/101 90/273/104 +f 66/274/105 82/277/105 83/275/106 +f 81/276/103 97/271/103 82/277/105 +f 75/266/107 74/316/104 90/273/104 +f 67/279/106 83/275/106 84/280/108 +f 75/281/107 91/278/107 92/282/109 +f 68/283/108 84/280/108 85/284/110 +f 76/285/109 92/282/109 93/286/111 +f 69/287/110 85/284/110 86/288/112 +f 77/289/111 93/286/111 94/290/113 +f 70/291/112 86/299/112 87/292/114 +f 78/293/113 94/290/113 95/294/115 +f 71/295/114 87/292/114 88/296/100 +f 79/297/115 95/294/115 96/298/102 +f 93/286/89 109/1/89 110/3/91 +f 86/299/90 102/20/90 103/22/92 +f 94/290/91 110/3/91 111/5/93 +f 87/292/92 103/22/92 104/24/94 +f 95/294/93 111/5/93 112/7/95 +f 88/296/94 104/24/94 105/26/96 +f 96/298/95 112/7/95 113/9/97 +f 89/269/96 105/26/96 106/28/98 +f 82/277/99 98/11/99 99/13/84 +f 97/271/97 113/9/97 98/11/99 +f 90/273/98 106/28/98 107/30/86 +f 83/275/84 99/13/84 100/15/85 +f 91/278/86 107/30/86 108/32/87 +f 84/280/85 100/15/85 101/17/88 +f 92/282/87 108/32/87 109/1/89 +f 85/284/88 101/17/88 102/19/90 +f 128/8/95 144/317/95 145/300/97 +f 121/27/96 137/318/96 138/301/98 +f 114/12/99 130/319/99 131/302/84 +f 129/10/97 145/320/97 130/303/99 +f 122/122/98 138/321/98 139/304/86 +f 115/14/84 131/322/84 132/305/85 +f 123/31/86 139/323/86 140/306/87 +f 116/116/85 132/324/85 133/307/88 +f 124/33/87 140/325/87 141/308/89 +f 117/18/88 133/326/88 134/309/90 +f 125/109/89 141/327/89 142/310/91 +f 118/118/90 134/328/90 135/311/92 +f 126/110/91 142/329/91 143/312/93 +f 119/119/92 135/330/92 136/313/94 +f 127/6/93 143/331/93 144/314/95 +f 120/25/94 136/332/94 137/315/96 diff --git a/src/main/resources/assets/hbm/models/missile_v2.obj b/src/main/resources/assets/hbm/models/missile_v2.obj new file mode 100644 index 000000000..16b7be918 --- /dev/null +++ b/src/main/resources/assets/hbm/models/missile_v2.obj @@ -0,0 +1,572 @@ +# Blender v2.79 (sub 0) OBJ File: 'missile_v2.blend' +# www.blender.org +o Cylinder +v 0.000000 1.500000 -0.500000 +v -0.191342 1.500000 -0.461940 +v -0.353553 1.500000 -0.353553 +v -0.461940 1.500000 -0.191342 +v -0.500000 1.500000 0.000000 +v -0.461940 1.500000 0.191342 +v -0.353553 1.500000 0.353553 +v -0.191342 1.500000 0.461940 +v -0.000000 1.500000 0.500000 +v 0.191342 1.500000 0.461940 +v 0.353553 1.500000 0.353553 +v 0.461940 1.500000 0.191342 +v 0.500000 1.500000 -0.000000 +v 0.461940 1.500000 -0.191342 +v 0.353553 1.500000 -0.353554 +v 0.191341 1.500000 -0.461940 +v 0.000000 4.000000 -0.500000 +v -0.191342 4.000000 -0.461940 +v -0.353553 4.000000 -0.353553 +v -0.461940 4.000000 -0.191342 +v -0.500000 4.000000 0.000000 +v -0.461940 4.000000 0.191342 +v -0.353553 4.000000 0.353553 +v -0.191342 4.000000 0.461940 +v -0.000000 4.000000 0.500000 +v 0.191342 4.000000 0.461940 +v 0.353553 4.000000 0.353554 +v 0.461940 4.000000 0.191342 +v 0.500000 4.000000 -0.000000 +v 0.461940 4.000000 -0.191342 +v 0.353553 4.000000 -0.353554 +v 0.191341 4.000000 -0.461940 +v -0.000000 5.500000 -0.375000 +v -0.143506 5.500000 -0.346455 +v -0.265165 5.500000 -0.265165 +v -0.346455 5.500000 -0.143506 +v -0.375000 5.500000 0.000000 +v -0.346455 5.500000 0.143506 +v -0.265165 5.500000 0.265165 +v -0.143506 5.500000 0.346455 +v -0.000000 5.500000 0.375000 +v 0.143506 5.500000 0.346455 +v 0.265165 5.500000 0.265165 +v 0.346455 5.500000 0.143506 +v 0.375000 5.500000 -0.000000 +v 0.346455 5.500000 -0.143506 +v 0.265165 5.500000 -0.265165 +v 0.143506 5.500000 -0.346455 +v -0.000000 7.000000 0.000000 +v -0.000000 0.500000 -0.375000 +v -0.143506 0.500000 -0.346455 +v -0.265165 0.500000 -0.265165 +v -0.346455 0.500000 -0.143506 +v -0.375000 0.500000 0.000000 +v -0.346455 0.500000 0.143506 +v -0.265165 0.500000 0.265165 +v -0.143506 0.500000 0.346455 +v -0.000000 0.500000 0.375000 +v 0.143506 0.500000 0.346455 +v 0.265165 0.500000 0.265165 +v 0.346455 0.500000 0.143506 +v 0.375000 0.500000 -0.000000 +v 0.346455 0.500000 -0.143506 +v 0.265165 0.500000 -0.265165 +v 0.143506 0.500000 -0.346455 +v -0.198874 0.500000 -0.243068 +v 0.243068 0.500000 -0.198874 +v -0.552427 -0.000000 -0.596621 +v -0.198874 2.500000 -0.243068 +v -0.596621 -0.000000 -0.552427 +v 0.596621 -0.000000 -0.552427 +v -0.243068 0.500000 -0.198874 +v -0.243068 2.500000 -0.198874 +v -0.729204 -0.000000 -0.773398 +v -0.729204 1.500000 -0.773398 +v -0.773398 1.500000 -0.729204 +v -0.773398 -0.000000 -0.729204 +v 0.243068 2.500000 -0.198874 +v 0.552427 -0.000000 -0.596621 +v 0.198874 0.500000 -0.243068 +v 0.198874 2.500000 -0.243068 +v 0.773398 -0.000000 -0.729204 +v 0.773398 1.500000 -0.729204 +v 0.729204 1.500000 -0.773398 +v 0.729204 -0.000000 -0.773398 +v -0.729204 -0.000000 0.773398 +v -0.729204 1.500000 0.773398 +v -0.773398 1.500000 0.729204 +v -0.773398 -0.000000 0.729204 +v -0.198874 2.500000 0.243068 +v -0.198874 0.500000 0.243068 +v -0.552427 -0.000000 0.596621 +v -0.243068 2.500000 0.198874 +v -0.596621 -0.000000 0.552427 +v -0.243068 0.500000 0.198874 +v 0.773398 -0.000000 0.729204 +v 0.773398 1.500000 0.729204 +v 0.729204 1.500000 0.773398 +v 0.729204 -0.000000 0.773398 +v 0.243068 2.500000 0.198874 +v 0.243068 0.500000 0.198874 +v 0.596621 -0.000000 0.552427 +v 0.198874 2.500000 0.243068 +v 0.552427 -0.000000 0.596621 +v 0.198874 0.500000 0.243068 +vt 0.954652 0.411214 +vt 0.954652 0.492632 +vt 0.815840 0.492632 +vt 0.803279 0.240385 +vt 0.786885 0.009615 +vt 0.803279 0.009615 +vt 0.803279 0.750000 +vt 0.786885 0.519231 +vt 0.803279 0.519231 +vt 1.000000 0.509615 +vt 0.868852 0.519231 +vt 0.868852 0.509615 +vt 1.000000 -0.000000 +vt 0.868852 0.009615 +vt 0.868852 -0.000000 +vt 0.803279 0.750000 +vt 1.000000 0.596154 +vt 0.803279 0.519231 +vt 0.803279 0.240385 +vt 1.000000 0.086538 +vt 0.803279 0.009615 +vt 1.000000 0.596154 +vt 1.000000 0.086538 +vt 0.803279 0.509615 +vt 0.786885 0.750000 +vt 0.803279 0.903846 +vt 0.786885 0.903846 +vt 0.803279 0.000000 +vt 0.786885 0.240385 +vt 0.803279 0.394231 +vt 0.786885 0.394231 +vt 0.786885 0.394231 +vt 0.803279 0.240385 +vt 0.803279 0.394231 +vt 0.868852 0.009615 +vt 0.803279 0.000000 +vt 0.868852 -0.000000 +vt 0.803279 0.009615 +vt 1.000000 0.086538 +vt 0.803279 0.240385 +vt 1.000000 0.086538 +vt 0.803279 0.009615 +vt 1.000000 -0.000000 +vt 0.786885 0.009615 +vt 0.786885 0.750000 +vt 0.803279 0.903846 +vt 0.786885 0.903846 +vt 0.868852 0.509615 +vt 0.803279 0.519231 +vt 0.803279 0.509615 +vt 0.803279 0.750000 +vt 1.000000 0.596154 +vt 0.803279 0.750000 +vt 1.000000 0.596154 +vt 0.803279 0.519231 +vt 1.000000 0.519231 +vt 1.000000 0.509615 +vt 0.786885 0.519231 +vt 0.815840 0.411214 +vt 0.847684 0.398734 +vt 0.885246 0.394352 +vt 0.922808 0.398734 +vt 0.975929 0.429891 +vt 0.983401 0.451923 +vt 0.975929 0.473955 +vt 0.922808 0.505112 +vt 0.885246 0.509494 +vt 0.847684 0.505112 +vt 0.794563 0.473955 +vt 0.787091 0.451923 +vt 0.794563 0.429891 +vt 1.000000 0.519231 +vt 1.000000 0.009615 +vt 1.000000 0.903846 +vt 0.868852 0.519231 +vt 1.000000 0.394231 +vt 0.868852 0.009615 +vt 1.000000 0.903846 +vt 1.000000 0.394231 +vt 0.786885 0.240385 +vt 1.000000 0.394231 +vt 1.000000 0.394231 +vt 0.868852 0.009615 +vt 1.000000 0.009615 +vt 0.868852 0.519231 +vt 1.000000 0.903846 +vt 1.000000 0.903846 +vt 0.868852 0.519231 +vt 0.295082 0.153846 +vt 0.245902 0.538462 +vt 0.245902 0.153846 +vt 0.737705 0.153846 +vt 0.688525 0.538462 +vt 0.688525 0.153846 +vt 0.344262 0.153846 +vt 0.295082 0.538462 +vt 0.786885 0.153846 +vt 0.737705 0.538462 +vt 0.393443 0.153846 +vt 0.344262 0.538462 +vt 0.049180 0.153846 +vt -0.000000 0.538462 +vt -0.000000 0.153846 +vt 0.442623 0.153846 +vt 0.393443 0.538462 +vt 0.098361 0.153846 +vt 0.049180 0.538462 +vt 0.491803 0.153846 +vt 0.442623 0.538462 +vt 0.147541 0.153846 +vt 0.098361 0.538462 +vt 0.540984 0.153846 +vt 0.491803 0.538462 +vt 0.196721 0.538462 +vt 0.147541 0.538462 +vt 0.639344 0.153846 +vt 0.590164 0.538462 +vt 0.590164 0.153846 +vt 0.540984 0.538462 +vt 0.196721 0.153846 +vt 0.639344 0.538462 +vt 0.573770 0.769231 +vt 0.540984 0.769231 +vt 0.196721 0.769231 +vt 0.672131 0.769231 +vt 0.639344 0.769231 +vt 0.278689 0.769231 +vt 0.245902 0.769231 +vt 0.688525 0.769231 +vt 0.295082 0.769231 +vt 0.770492 0.769231 +vt 0.737705 0.769231 +vt 0.377049 0.769231 +vt 0.344262 0.769231 +vt -0.000000 0.769231 +vt 0.393443 0.769231 +vt 0.081967 0.769231 +vt 0.049180 0.769231 +vt 0.442623 0.769231 +vt 0.098361 0.769231 +vt 0.491803 0.769231 +vt 0.147541 0.769231 +vt 0.590164 0.769231 +vt 0.655738 1.000000 +vt 0.721311 0.769231 +vt 0.704918 1.000000 +vt 0.754098 1.000000 +vt 0.032787 0.769231 +vt 0.016393 1.000000 +vt 0.065574 1.000000 +vt 0.131148 0.769231 +vt 0.114754 1.000000 +vt 0.180328 0.769231 +vt 0.163934 1.000000 +vt 0.229508 0.769231 +vt 0.213115 1.000000 +vt 0.262295 1.000000 +vt 0.327869 0.769231 +vt 0.311475 1.000000 +vt 0.360656 1.000000 +vt 0.426230 0.769231 +vt 0.409836 1.000000 +vt 0.475410 0.769231 +vt 0.459016 1.000000 +vt 0.524590 0.769231 +vt 0.508197 1.000000 +vt 0.557377 1.000000 +vt 0.622951 0.769231 +vt 0.606557 1.000000 +vt 0.278689 0.000000 +vt 0.688525 0.000000 +vt 0.721311 0.000000 +vt 0.295082 0.000000 +vt 0.327869 0.000000 +vt 0.737705 0.000000 +vt 0.770492 0.000000 +vt 0.344262 0.000000 +vt 0.377049 0.000000 +vt -0.000000 0.000000 +vt 0.032787 0.000000 +vt 0.426230 0.000000 +vt 0.081967 0.000000 +vt 0.475410 0.000000 +vt 0.131148 0.000000 +vt 0.491803 0.000000 +vt 0.524590 0.000000 +vt 0.180328 0.000000 +vt 0.622951 0.000000 +vt 0.573770 0.000000 +vt 0.196721 0.000000 +vt 0.229508 0.000000 +vt 0.639344 0.000000 +vt 0.672131 0.000000 +vt 0.786885 0.538462 +vt 0.245902 0.000000 +vt 0.393443 0.000000 +vt 0.049180 0.000000 +vt 0.442623 0.000000 +vt 0.098361 0.000000 +vt 0.147541 0.000000 +vt 0.590164 0.000000 +vt 0.540984 0.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 -0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.5000 -0.7071 0.5000 +vn -0.5000 -0.7071 0.5000 +vn 0.7071 -0.0000 0.7071 +vn -0.7071 -0.0000 0.7071 +vn -0.5657 0.6000 -0.5657 +vn 0.5657 0.6000 -0.5657 +vn -0.5657 0.6000 0.5657 +vn 0.5000 -0.7071 -0.5000 +vn 0.5657 0.6000 0.5657 +vn -0.5000 -0.7071 -0.5000 +vn 0.7058 -0.0617 0.7058 +vn 0.3824 0.0413 0.9231 +vn 0.3820 -0.0617 0.9221 +vn -0.9221 -0.0617 -0.3820 +vn -0.7065 0.0413 -0.7065 +vn -0.7058 -0.0617 -0.7058 +vn 0.9221 -0.0617 0.3820 +vn 0.7065 0.0413 0.7065 +vn -0.9981 -0.0617 -0.0000 +vn -0.9231 0.0413 -0.3824 +vn 0.9981 -0.0617 -0.0000 +vn 0.9231 0.0413 0.3824 +vn -0.9221 -0.0617 0.3820 +vn -0.9991 0.0413 0.0000 +vn 0.9221 -0.0617 -0.3820 +vn 0.9991 0.0413 -0.0000 +vn -0.7058 -0.0617 0.7058 +vn -0.9231 0.0413 0.3824 +vn 0.7058 -0.0617 -0.7058 +vn 0.9231 0.0413 -0.3824 +vn -0.3820 -0.0617 0.9221 +vn -0.7065 0.0413 0.7065 +vn 0.3820 -0.0617 -0.9221 +vn 0.7065 0.0413 -0.7065 +vn 0.0000 0.0413 0.9991 +vn -0.3824 0.0413 0.9231 +vn -0.3820 -0.0617 -0.9221 +vn -0.0000 0.0413 -0.9991 +vn -0.0000 -0.0617 -0.9981 +vn 0.3824 0.0413 -0.9231 +vn -0.0000 -0.0617 0.9981 +vn -0.3824 0.0413 -0.9231 +vn -0.0000 0.1617 -0.9868 +vn 0.3776 0.1617 -0.9117 +vn -0.0000 0.1617 0.9868 +vn -0.6978 0.1617 -0.6978 +vn -0.3776 0.1617 -0.9117 +vn 0.6978 0.1617 0.6978 +vn 0.3776 0.1617 0.9117 +vn -0.9868 0.1617 0.0000 +vn -0.9117 0.1617 -0.3776 +vn 0.9868 0.1617 0.0000 +vn 0.9117 0.1617 0.3776 +vn -0.6978 0.1617 0.6978 +vn -0.9117 0.1617 0.3776 +vn 0.9117 0.1617 -0.3776 +vn 0.6978 0.1617 -0.6978 +vn -0.3776 0.1617 0.9117 +vn -0.0000 1.0000 0.0000 +vn 0.7016 -0.1240 0.7016 +vn -0.7016 -0.1240 -0.7016 +vn -0.9167 -0.1240 -0.3797 +vn 0.9167 -0.1240 0.3797 +vn -0.9923 -0.1240 -0.0000 +vn 0.9923 -0.1240 -0.0000 +vn -0.9167 -0.1240 0.3797 +vn 0.9167 -0.1240 -0.3797 +vn -0.7016 -0.1240 0.7016 +vn 0.7016 -0.1240 -0.7016 +vn -0.3797 -0.1240 0.9167 +vn 0.3797 -0.1240 -0.9167 +vn 0.0000 -0.1240 0.9923 +vn -0.3797 -0.1240 -0.9167 +vn -0.0000 -0.1240 -0.9923 +vn 0.3797 -0.1240 0.9167 +s off +f 64/1/1 60/2/1 56/3/1 +f 84/4/2 82/5/2 85/6/2 +f 76/7/3 74/8/3 77/9/3 +f 66/10/4 70/11/4 68/12/4 +f 67/13/5 79/14/5 71/15/5 +f 75/16/2 66/17/2 74/18/2 +f 83/19/6 67/20/6 82/21/6 +f 76/7/7 77/9/7 72/22/7 +f 84/4/3 85/6/3 80/23/3 +f 70/11/1 74/24/1 68/12/1 +f 75/25/8 73/26/8 69/27/8 +f 71/15/1 85/6/1 82/28/1 +f 83/29/9 81/30/9 78/31/9 +f 93/32/10 87/33/10 90/34/10 +f 92/35/1 89/36/1 94/37/1 +f 87/33/6 86/38/6 91/39/6 +f 88/40/3 95/41/3 89/42/3 +f 95/43/11 92/35/11 94/37/11 +f 87/33/7 89/44/7 86/38/7 +f 98/45/12 100/46/12 103/47/12 +f 104/48/1 96/49/1 99/50/1 +f 97/51/2 96/49/2 101/52/2 +f 98/53/7 105/54/7 99/55/7 +f 101/56/13 104/48/13 105/57/13 +f 97/51/6 99/58/6 96/49/6 +f 52/59/1 51/60/1 50/61/1 +f 50/61/1 65/62/1 64/1/1 +f 64/1/1 63/63/1 60/2/1 +f 63/63/1 62/64/1 60/2/1 +f 62/64/1 61/65/1 60/2/1 +f 60/2/1 59/66/1 56/3/1 +f 59/66/1 58/67/1 56/3/1 +f 58/67/1 57/68/1 56/3/1 +f 56/3/1 55/69/1 54/70/1 +f 54/70/1 53/71/1 52/59/1 +f 52/59/1 50/61/1 64/1/1 +f 56/3/1 54/70/1 52/59/1 +f 52/59/1 64/1/1 56/3/1 +f 84/4/2 83/29/2 82/5/2 +f 76/7/3 75/25/3 74/8/3 +f 66/10/4 72/72/4 70/11/4 +f 67/13/5 80/73/5 79/14/5 +f 69/74/2 66/17/2 75/16/2 +f 66/17/2 68/75/2 74/18/2 +f 78/76/6 67/20/6 83/19/6 +f 67/20/6 71/77/6 82/21/6 +f 70/11/7 72/22/7 77/9/7 +f 72/22/7 73/78/7 76/7/7 +f 79/14/3 80/23/3 85/6/3 +f 80/23/3 81/79/3 84/4/3 +f 70/11/1 77/9/1 74/24/1 +f 75/25/8 76/7/8 73/26/8 +f 71/15/1 79/14/1 85/6/1 +f 83/29/9 84/4/9 81/30/9 +f 93/32/10 88/80/10 87/33/10 +f 92/35/1 86/38/1 89/36/1 +f 92/35/6 91/39/6 86/38/6 +f 91/39/6 90/81/6 87/33/6 +f 93/82/3 95/41/3 88/40/3 +f 95/41/3 94/83/3 89/42/3 +f 95/43/11 91/84/11 92/35/11 +f 87/33/7 88/80/7 89/44/7 +f 98/45/12 97/51/12 100/46/12 +f 104/48/1 102/85/1 96/49/1 +f 102/85/2 101/52/2 96/49/2 +f 101/52/2 100/86/2 97/51/2 +f 103/87/7 105/54/7 98/53/7 +f 105/54/7 104/88/7 99/55/7 +f 101/56/13 102/85/13 104/48/13 +f 97/51/6 98/45/6 99/58/6 +s 1 +f 11/89/14 26/90/15 10/91/16 +f 4/92/17 19/93/18 3/94/19 +f 12/95/20 27/96/21 11/89/14 +f 5/97/22 20/98/23 4/92/17 +f 13/99/24 28/100/25 12/95/20 +f 6/101/26 21/102/27 5/103/22 +f 14/104/28 29/105/29 13/99/24 +f 7/106/30 22/107/31 6/101/26 +f 15/108/32 30/109/33 14/104/28 +f 8/110/34 23/111/35 7/106/30 +f 16/112/36 31/113/37 15/108/32 +f 8/110/34 25/114/38 24/115/39 +f 2/116/40 17/117/41 1/118/42 +f 1/118/42 32/119/43 16/112/36 +f 10/91/16 25/114/38 9/120/44 +f 3/94/19 18/121/45 2/116/40 +f 32/119/43 33/122/46 48/123/47 +f 26/90/15 41/124/48 25/114/38 +f 18/121/45 35/125/49 34/126/50 +f 26/90/15 43/127/51 42/128/52 +f 20/98/23 35/129/49 19/93/18 +f 28/100/25 43/130/51 27/96/21 +f 20/98/23 37/131/53 36/132/54 +f 28/100/25 45/133/55 44/134/56 +f 22/107/31 37/135/53 21/102/27 +f 30/109/33 45/136/55 29/105/29 +f 22/107/31 39/137/57 38/138/58 +f 31/113/37 46/139/59 30/109/33 +f 24/115/39 39/140/57 23/111/35 +f 32/119/43 47/141/60 31/113/37 +f 25/114/38 40/142/61 24/115/39 +f 18/121/45 33/143/46 17/117/41 +f 34/126/50 35/125/49 49/144/62 +f 35/129/49 36/145/54 49/146/62 +f 36/132/54 37/131/53 49/147/62 +f 37/135/53 38/148/58 49/149/62 +f 38/138/58 39/137/57 49/150/62 +f 39/140/57 40/151/61 49/152/62 +f 40/142/61 41/153/48 49/154/62 +f 41/124/48 42/155/52 49/156/62 +f 42/128/52 43/127/51 49/157/62 +f 43/130/51 44/158/56 49/159/62 +f 44/134/56 45/133/55 49/160/62 +f 45/136/55 46/161/59 49/162/62 +f 46/139/59 47/163/60 49/164/62 +f 47/141/60 48/165/47 49/166/62 +f 48/123/47 33/122/46 49/167/62 +f 33/143/46 34/168/50 49/169/62 +f 10/91/16 60/170/63 11/89/14 +f 4/92/17 52/171/64 53/172/65 +f 12/95/20 60/173/63 61/174/66 +f 5/97/22 53/175/65 54/176/67 +f 13/99/24 61/177/66 62/178/68 +f 6/101/26 54/179/67 55/180/69 +f 13/99/24 63/181/70 14/104/28 +f 6/101/26 56/182/71 7/106/30 +f 14/104/28 64/183/72 15/108/32 +f 7/106/30 57/184/73 8/110/34 +f 16/112/36 64/185/72 65/186/74 +f 8/110/34 58/187/75 9/120/44 +f 1/118/42 51/188/76 2/116/40 +f 16/112/36 50/189/77 1/118/42 +f 10/91/16 58/190/75 59/191/78 +f 3/94/19 51/192/76 52/193/64 +f 11/89/14 27/96/21 26/90/15 +f 4/92/17 20/98/23 19/93/18 +f 12/95/20 28/100/25 27/96/21 +f 5/97/22 21/194/27 20/98/23 +f 13/99/24 29/105/29 28/100/25 +f 6/101/26 22/107/31 21/102/27 +f 14/104/28 30/109/33 29/105/29 +f 7/106/30 23/111/35 22/107/31 +f 15/108/32 31/113/37 30/109/33 +f 8/110/34 24/115/39 23/111/35 +f 16/112/36 32/119/43 31/113/37 +f 8/110/34 9/120/44 25/114/38 +f 2/116/40 18/121/45 17/117/41 +f 1/118/42 17/117/41 32/119/43 +f 10/91/16 26/90/15 25/114/38 +f 3/94/19 19/93/18 18/121/45 +f 32/119/43 17/117/41 33/122/46 +f 26/90/15 42/155/52 41/124/48 +f 18/121/45 19/93/18 35/125/49 +f 26/90/15 27/96/21 43/127/51 +f 20/98/23 36/145/54 35/129/49 +f 28/100/25 44/158/56 43/130/51 +f 20/98/23 21/194/27 37/131/53 +f 28/100/25 29/105/29 45/133/55 +f 22/107/31 38/148/58 37/135/53 +f 30/109/33 46/161/59 45/136/55 +f 22/107/31 23/111/35 39/137/57 +f 31/113/37 47/163/60 46/139/59 +f 24/115/39 40/151/61 39/140/57 +f 32/119/43 48/165/47 47/141/60 +f 25/114/38 41/153/48 40/142/61 +f 18/121/45 34/168/50 33/143/46 +f 10/91/16 59/195/78 60/170/63 +f 4/92/17 3/94/19 52/171/64 +f 12/95/20 11/89/14 60/173/63 +f 5/97/22 4/92/17 53/175/65 +f 13/99/24 12/95/20 61/177/66 +f 6/101/26 5/103/22 54/179/67 +f 13/99/24 62/196/68 63/181/70 +f 6/101/26 55/197/69 56/182/71 +f 14/104/28 63/198/70 64/183/72 +f 7/106/30 56/199/71 57/184/73 +f 16/112/36 15/108/32 64/185/72 +f 8/110/34 57/200/73 58/187/75 +f 1/118/42 50/201/77 51/188/76 +f 16/112/36 65/202/74 50/189/77 +f 10/91/16 9/120/44 58/190/75 +f 3/94/19 2/116/40 51/192/76 diff --git a/src/main/resources/assets/hbm/models/mobs/glyphid.obj b/src/main/resources/assets/hbm/models/mobs/glyphid.obj new file mode 100644 index 000000000..84cdc3f0e --- /dev/null +++ b/src/main/resources/assets/hbm/models/mobs/glyphid.obj @@ -0,0 +1,996 @@ +# Blender v2.79 (sub 0) OBJ File: 'glyphid.blend' +# www.blender.org +o JawLeft +v 0.187500 0.312500 0.250000 +v 0.187500 0.312500 0.625000 +v 0.187500 0.500000 0.250000 +v 0.187500 0.500000 0.625000 +v 0.000000 0.312500 0.250000 +v 0.000000 0.312500 0.625000 +v 0.000000 0.500000 0.625000 +vt 0.112500 0.408451 +vt 0.075000 0.492958 +vt 0.075000 0.408451 +vt 0.150000 0.408451 +vt 0.112500 0.492958 +vt 0.075000 0.535211 +vt 0.150000 0.492958 +vt 0.112500 0.535211 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 1/1/1 6/2/1 5/3/1 +f 3/4/2 2/5/2 1/1/2 +f 2/5/3 7/6/3 6/2/3 +f 1/1/1 2/5/1 6/2/1 +f 3/4/2 4/7/2 2/5/2 +f 2/5/3 4/8/3 7/6/3 +o JawRight +v -0.187500 0.312500 0.625000 +v -0.187500 0.312500 0.250000 +v -0.187500 0.500000 0.250000 +v -0.187500 0.500000 0.625000 +v 0.000000 0.312500 0.250000 +v 0.000000 0.312500 0.625000 +v 0.000000 0.500000 0.625000 +vt 0.075000 0.408451 +vt 0.037500 0.492958 +vt 0.037500 0.408451 +vt 0.075000 0.492958 +vt 0.037500 0.535211 +vt 0.000000 0.492958 +vt 0.000000 0.408451 +vt 0.075000 0.535211 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +s off +f 12/9/4 8/10/4 9/11/4 +f 13/12/5 11/13/5 8/10/5 +f 9/11/6 11/14/6 10/15/6 +f 12/9/4 13/12/4 8/10/4 +f 13/12/5 14/16/5 11/13/5 +f 9/11/6 8/10/6 11/14/6 +o JawTop +v -0.187500 0.687500 0.250000 +v 0.187500 0.687500 0.250000 +v -0.187500 0.687500 0.625000 +v 0.187500 0.687500 0.625000 +v -0.187500 0.500000 0.250000 +v 0.187500 0.500000 0.250000 +v -0.187500 0.500000 0.625000 +v 0.187500 0.500000 0.625000 +v 0.000000 0.500000 0.625000 +vt -0.000000 0.661972 +vt 0.037500 0.577465 +vt 0.037500 0.661972 +vt 0.075000 0.535211 +vt 0.112500 0.577465 +vt 0.112500 0.661972 +vt 0.150000 0.577465 +vt 0.150000 0.661972 +vt -0.000000 0.577465 +vt 0.037500 0.535211 +vt 0.112500 0.535211 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 19/17/7 17/18/7 15/19/7 +f 23/20/8 18/21/8 17/18/8 +f 16/22/9 22/23/9 20/24/9 +f 15/19/10 18/21/10 16/22/10 +f 19/17/7 21/25/7 17/18/7 +f 17/18/8 21/26/8 23/20/8 +f 23/20/8 22/27/8 18/21/8 +f 16/22/9 18/21/9 22/23/9 +f 15/19/10 17/18/10 18/21/10 +o LegRightUpper +v -0.562500 0.250000 -0.031250 +v -0.562500 0.187500 -0.031250 +v -0.562500 0.250000 0.031250 +v -0.562500 0.187500 0.031250 +v -0.062500 0.250000 0.031250 +v -0.062500 0.250000 -0.031250 +v -0.062500 0.187500 -0.031250 +v -0.062500 0.187500 0.031250 +vt 0.612500 0.380282 +vt 0.625000 0.394366 +vt 0.612500 0.394366 +vt 0.625000 0.507042 +vt 0.612500 0.521127 +vt 0.612500 0.507042 +vt 0.637500 0.394366 +vt 0.600000 0.507042 +vt 0.600000 0.394366 +vt 0.650000 0.394366 +vt 0.637500 0.507042 +vt 0.625000 0.380282 +vt 0.625000 0.521127 +vt 0.650000 0.507042 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 25/28/11 26/29/11 24/30/11 +f 28/31/12 30/32/12 29/33/12 +f 27/34/13 28/31/13 26/29/13 +f 24/30/14 30/35/14 25/36/14 +f 25/37/15 31/38/15 27/34/15 +f 26/29/16 29/33/16 24/30/16 +f 25/28/11 27/39/11 26/29/11 +f 28/31/12 31/40/12 30/32/12 +f 27/34/13 31/38/13 28/31/13 +f 24/30/14 29/33/14 30/35/14 +f 25/37/15 30/41/15 31/38/15 +f 26/29/16 28/31/16 29/33/16 +o LegLeftLower +v 0.562500 0.250000 0.031250 +v 0.562500 0.187500 0.031250 +v 0.562500 0.250000 -0.031250 +v 0.562500 0.187500 -0.031250 +v 0.937500 0.250000 -0.031250 +v 0.937500 0.250000 0.031250 +v 0.937500 0.187500 0.031250 +v 0.937500 0.187500 -0.031250 +v 1.000000 0.187500 0.000000 +v 0.500000 0.218750 0.062500 +v 0.500000 0.218750 -0.062500 +v 0.875000 0.218750 -0.062500 +v 0.875000 0.218750 0.062500 +v 0.500000 0.281250 -0.062500 +v 0.500000 0.281250 0.062500 +v 0.875000 0.281250 -0.062500 +v 0.875000 0.281250 0.062500 +vt 0.675000 0.507042 +vt 0.662500 0.521127 +vt 0.662500 0.507042 +vt 0.662500 0.422535 +vt 0.650000 0.422535 +vt 0.650000 0.408451 +vt 0.687500 0.422535 +vt 0.693750 0.408451 +vt 0.700000 0.422535 +vt 0.675000 0.422535 +vt 0.687500 0.507042 +vt 0.650000 0.507042 +vt 0.750000 0.408451 +vt 0.775000 0.492958 +vt 0.750000 0.492958 +vt 0.687500 0.408451 +vt 0.668750 0.408451 +vt 0.712500 0.492958 +vt 0.737500 0.408451 +vt 0.737500 0.492958 +vt 0.712500 0.507042 +vt 0.737500 0.507042 +vt 0.737500 0.394366 +vt 0.712500 0.408451 +vt 0.712500 0.394366 +vt 0.700000 0.408451 +vt 0.700000 0.492958 +vt 0.675000 0.521127 +vt 0.700000 0.507042 +vt 0.775000 0.408451 +vn -1.0000 0.0000 0.0000 +vn 0.4472 0.0000 0.8944 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.4472 0.0000 -0.8944 +vn 0.7071 0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +s off +f 34/42/17 33/43/17 32/44/17 +f 37/45/18 38/46/18 40/47/18 +f 39/48/19 40/49/19 38/50/19 +f 32/44/20 36/51/20 34/42/20 +f 34/42/21 39/48/21 35/52/21 +f 33/53/22 37/45/22 32/44/22 +f 43/54/19 41/55/19 42/56/19 +f 40/57/23 39/48/23 36/51/23 +f 36/51/24 37/45/24 40/58/24 +f 46/59/20 47/60/20 45/61/20 +f 41/62/17 45/61/17 42/63/17 +f 42/56/21 47/60/21 43/54/21 +f 43/64/25 48/65/25 44/66/25 +f 44/67/22 46/59/22 41/68/22 +f 34/42/17 35/69/17 33/43/17 +f 38/50/19 33/70/19 35/52/19 +f 35/52/19 39/48/19 38/50/19 +f 32/44/20 37/45/20 36/51/20 +f 34/42/21 36/51/21 39/48/21 +f 33/53/22 38/46/22 37/45/22 +f 43/54/19 44/71/19 41/55/19 +f 46/59/20 48/65/20 47/60/20 +f 41/62/17 46/59/17 45/61/17 +f 42/56/21 45/61/21 47/60/21 +f 43/64/25 47/60/25 48/65/25 +f 44/67/22 48/65/22 46/59/22 +o LegLeftUpper +v 0.562500 0.250000 0.031250 +v 0.562500 0.187500 0.031250 +v 0.562500 0.250000 -0.031250 +v 0.562500 0.187500 -0.031250 +v 0.062500 0.250000 -0.031250 +v 0.062500 0.250000 0.031250 +v 0.062500 0.187500 0.031250 +v 0.062500 0.187500 -0.031250 +vt 0.612500 0.380282 +vt 0.625000 0.394366 +vt 0.612500 0.394366 +vt 0.625000 0.507042 +vt 0.612500 0.521127 +vt 0.612500 0.507042 +vt 0.637500 0.394366 +vt 0.600000 0.507042 +vt 0.600000 0.394366 +vt 0.650000 0.394366 +vt 0.637500 0.507042 +vt 0.625000 0.380282 +vt 0.625000 0.521127 +vt 0.650000 0.507042 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 50/72/26 51/73/26 49/74/26 +f 53/75/27 55/76/27 54/77/27 +f 52/78/28 53/75/28 51/73/28 +f 49/74/29 55/79/29 50/80/29 +f 50/81/30 56/82/30 52/78/30 +f 51/73/31 54/77/31 49/74/31 +f 50/72/26 52/83/26 51/73/26 +f 53/75/27 56/84/27 55/76/27 +f 52/78/28 56/82/28 53/75/28 +f 49/74/29 54/77/29 55/79/29 +f 50/81/30 55/85/30 56/82/30 +f 51/73/31 53/75/31 54/77/31 +o ArmorRight +v 0.000000 0.343750 -1.281250 +v 0.000000 0.343750 -0.468750 +v 0.000000 0.843750 -1.281250 +v 0.000000 0.843750 -0.468750 +v -0.343750 0.343750 -1.281250 +v -0.343750 0.343750 -0.468750 +v -0.343750 0.843750 -1.281250 +v -0.343750 0.843750 -0.468750 +v -0.281250 0.781250 -1.406250 +v -0.281250 0.343750 -1.406250 +v -0.281250 0.781250 -1.281250 +v -0.281250 0.343750 -1.281250 +v 0.000000 0.343750 -1.406250 +v 0.000000 0.781250 -1.406250 +v 0.000000 0.781250 -1.281250 +vt 0.168750 0.295775 +vt 0.237500 0.112676 +vt 0.237500 0.295775 +vt 0.168750 0.000000 +vt 0.168750 0.112676 +vt 0.168750 0.408451 +vt 0.337500 0.295775 +vt 0.475000 0.267606 +vt 0.418750 0.295775 +vt 0.418750 0.267606 +vt 0.475000 0.169014 +vt 0.500000 0.267606 +vt 0.418750 0.169014 +vt 0.237500 -0.000000 +vt 0.237500 0.408451 +vt 0.337500 0.112676 +vt 0.475000 0.295775 +vt 0.500000 0.169014 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +s off +f 60/86/32 63/87/32 64/88/32 +f 57/89/33 63/87/33 59/90/33 +f 64/88/34 58/91/34 60/86/34 +f 63/87/35 62/92/35 64/88/35 +f 65/93/32 71/94/32 70/95/32 +f 66/96/35 67/97/35 65/93/35 +f 65/93/33 69/98/33 66/96/33 +f 60/86/32 59/90/32 63/87/32 +f 57/89/33 61/99/33 63/87/33 +f 64/88/34 62/100/34 58/91/34 +f 63/87/35 61/101/35 62/92/35 +f 65/93/32 67/102/32 71/94/32 +f 66/96/35 68/103/35 67/97/35 +f 65/93/33 70/95/33 69/98/33 +o ArmorLeft +v 0.000000 0.343750 -1.281250 +v 0.000000 0.343750 -0.468750 +v 0.000000 0.843750 -1.281250 +v 0.000000 0.843750 -0.468750 +v 0.343750 0.343750 -1.281250 +v 0.343750 0.343750 -0.468750 +v 0.000000 0.781250 -1.281250 +v 0.343750 0.843750 -1.281250 +v 0.000000 0.781250 -1.406250 +v 0.343750 0.843750 -0.468750 +v 0.000000 0.343750 -1.406250 +v 0.281250 0.781250 -1.281250 +v 0.281250 0.343750 -1.281250 +v 0.281250 0.781250 -1.406250 +v 0.281250 0.343750 -1.406250 +vt 0.168750 0.295775 +vt 0.100000 0.408451 +vt 0.100000 0.295775 +vt 0.418750 0.267606 +vt 0.362500 0.295775 +vt 0.362500 0.267606 +vt 0.100000 0.000000 +vt 0.168750 0.112676 +vt 0.100000 0.112676 +vt -0.000000 0.112676 +vt 0.337500 0.169014 +vt 0.362500 0.169014 +vt 0.418750 0.169014 +vt 0.168750 0.408451 +vt 0.418750 0.295775 +vt 0.168750 0.000000 +vt 0.000000 0.295775 +vt 0.337500 0.267606 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +s off +f 75/104/36 77/105/36 81/106/36 +f 80/107/37 83/108/37 85/109/37 +f 76/110/38 74/111/38 79/112/38 +f 81/106/39 76/113/39 79/112/39 +f 85/109/39 84/114/39 86/115/39 +f 80/107/38 86/115/38 82/116/38 +f 81/106/37 74/111/37 75/104/37 +f 75/104/36 73/117/36 77/105/36 +f 80/107/37 78/118/37 83/108/37 +f 76/110/38 72/119/38 74/111/38 +f 81/106/39 77/120/39 76/113/39 +f 85/109/39 83/121/39 84/114/39 +f 80/107/38 85/109/38 86/115/38 +f 81/106/37 79/112/37 74/111/37 +o ArmorFront +v -0.281250 0.781250 0.281250 +v -0.281250 0.781250 -0.281250 +v 0.281250 0.781250 0.281250 +v 0.281250 0.781250 -0.281250 +v -0.281250 0.531250 0.281250 +v -0.281250 0.531250 -0.281250 +v 0.281250 0.531250 0.281250 +v 0.281250 0.531250 -0.281250 +vt 0.775000 0.633803 +vt 0.887500 0.507042 +vt 0.887500 0.633803 +vt 0.937500 0.633803 +vt 0.775000 0.690141 +vt 0.725000 0.507042 +vt 0.775000 0.507042 +vt 0.775000 0.450704 +vt 0.937500 0.507042 +vt 0.887500 0.690141 +vt 0.725000 0.633803 +vt 0.887500 0.450704 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 88/122/40 89/123/40 90/124/40 +f 89/123/41 94/125/41 90/124/41 +f 90/124/42 92/126/42 88/122/42 +f 88/122/43 91/127/43 87/128/43 +f 91/129/44 89/123/44 87/128/44 +f 88/122/40 87/128/40 89/123/40 +f 89/123/41 93/130/41 94/125/41 +f 90/124/42 94/131/42 92/126/42 +f 88/122/43 92/132/43 91/127/43 +f 91/129/44 93/133/44 89/123/44 +o ArmRightUpper +v -0.375000 0.687500 0.437500 +v -0.375000 0.562500 0.437500 +v -0.375000 0.687500 0.062500 +v -0.375000 0.562500 0.062500 +v -0.250000 0.687500 0.062500 +v -0.250000 0.687500 0.437500 +v -0.250000 0.562500 0.437500 +v -0.250000 0.562500 0.062500 +vt 0.325000 0.633803 +vt 0.300000 0.549296 +vt 0.325000 0.549296 +vt 0.375000 0.549296 +vt 0.350000 0.633803 +vt 0.350000 0.549296 +vt 0.350000 0.661972 +vt 0.325000 0.661972 +vt 0.325000 0.521127 +vt 0.400000 0.633803 +vt 0.400000 0.549296 +vt 0.300000 0.633803 +vt 0.375000 0.633803 +vt 0.350000 0.521127 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 97/134/45 96/135/45 95/136/45 +f 101/137/46 99/138/46 100/139/46 +f 97/134/47 102/140/47 98/141/47 +f 96/142/48 100/139/48 95/136/48 +f 98/143/49 101/137/49 96/144/49 +f 95/136/50 99/138/50 97/134/50 +f 97/134/45 98/145/45 96/135/45 +f 101/137/46 102/146/46 99/138/46 +f 97/134/47 99/138/47 102/140/47 +f 96/142/48 101/147/48 100/139/48 +f 98/143/49 102/146/49 101/137/49 +f 95/136/50 100/139/50 99/138/50 +o ArmRightMid +v -0.375000 0.687500 0.437500 +v -0.375000 0.562500 0.437500 +v -0.250000 0.687500 0.437500 +v -0.250000 0.562500 0.437500 +v -0.375000 0.687500 0.937500 +v -0.375000 0.562500 0.937500 +v -0.250000 0.687500 0.937500 +v -0.250000 0.562500 0.937500 +vt 0.450000 0.633803 +vt 0.425000 0.661972 +vt 0.425000 0.633803 +vt 0.425000 0.492958 +vt 0.450000 0.521127 +vt 0.425000 0.521127 +vt 0.475000 0.633803 +vt 0.500000 0.521127 +vt 0.500000 0.633803 +vt 0.400000 0.633803 +vt 0.475000 0.521127 +vt 0.450000 0.661972 +vt 0.450000 0.492958 +vt 0.400000 0.521127 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 0.0000 +s off +f 105/148/51 104/149/51 103/150/51 +f 108/151/52 109/152/52 107/153/52 +f 106/154/53 108/155/53 104/156/53 +f 104/157/54 107/153/54 103/150/54 +f 103/150/55 109/152/55 105/148/55 +f 105/148/56 110/158/56 106/154/56 +f 105/148/51 106/159/51 104/149/51 +f 108/151/52 110/160/52 109/152/52 +f 106/154/53 110/158/53 108/155/53 +f 104/157/54 108/161/54 107/153/54 +f 103/150/55 107/153/55 109/152/55 +f 105/148/56 109/152/56 110/158/56 +o ArmRightArmor +v -0.437500 0.625000 0.812500 +v -0.187500 0.625000 0.812500 +v -0.437500 0.625000 1.562500 +v -0.187500 0.625000 1.562500 +v -0.187500 0.750000 0.812500 +v -0.437500 0.750000 0.812500 +v -0.187500 0.750000 1.562500 +v -0.437500 0.750000 1.562500 +vt 0.400000 0.492958 +vt 0.450000 0.323944 +vt 0.450000 0.492958 +vt 0.325000 0.492958 +vt 0.375000 0.323944 +vt 0.375000 0.492958 +vt 0.300000 0.323944 +vt 0.300000 0.492958 +vt 0.375000 0.521127 +vt 0.400000 0.323944 +vt 0.375000 0.295775 +vt 0.325000 0.323944 +vt 0.325000 0.295775 +vt 0.325000 0.521127 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +s off +f 112/162/57 113/163/57 111/164/57 +f 116/165/58 117/166/58 115/167/58 +f 113/168/59 116/165/59 111/169/59 +f 112/170/60 116/165/60 115/167/60 +f 112/162/61 117/166/61 114/171/61 +f 114/172/62 118/173/62 113/174/62 +f 112/162/57 114/171/57 113/163/57 +f 116/165/58 118/173/58 117/166/58 +f 113/168/59 118/173/59 116/165/59 +f 112/170/60 111/175/60 116/165/60 +f 112/162/61 115/167/61 117/166/61 +f 114/172/62 117/166/62 118/173/62 +o ArmRightLower +v -0.375000 0.687500 0.937500 +v -0.375000 0.562500 0.937500 +v -0.250000 0.687500 0.937500 +v -0.250000 0.562500 0.937500 +v -0.375000 0.687500 1.687500 +v -0.375000 0.562500 1.687500 +v -0.250000 0.687500 1.687500 +v -0.250000 0.562500 1.687500 +v -0.312500 0.562500 1.812500 +vt 0.550000 0.633803 +vt 0.525000 0.661972 +vt 0.525000 0.633803 +vt 0.525000 0.464789 +vt 0.537500 0.436620 +vt 0.550000 0.464789 +vt 0.575000 0.464789 +vt 0.575000 0.633803 +vt 0.587500 0.436620 +vt 0.600000 0.464789 +vt 0.500000 0.633803 +vt 0.575000 0.436620 +vt 0.500000 0.436620 +vt 0.500000 0.464789 +vt 0.550000 0.661972 +vt 0.600000 0.633803 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.8944 0.0000 0.4472 +vn -0.8944 0.0000 0.4472 +s off +f 121/176/63 120/177/63 119/178/63 +f 123/179/64 127/180/64 125/181/64 +f 121/176/65 123/179/65 125/181/65 +f 121/176/66 126/182/66 122/183/66 +f 126/182/67 127/184/67 124/185/67 +f 120/186/68 123/179/68 119/178/68 +f 125/181/69 127/187/69 126/182/69 +f 127/188/70 123/179/70 124/189/70 +f 121/176/63 122/190/63 120/177/63 +f 121/176/65 119/178/65 123/179/65 +f 121/176/66 125/181/66 126/182/66 +f 124/185/67 120/191/67 122/183/67 +f 122/183/67 126/182/67 124/185/67 +f 120/186/68 124/189/68 123/179/68 +o ArmLeftArmor +v 0.187500 0.625000 0.812500 +v 0.437500 0.625000 0.812500 +v 0.187500 0.625000 1.562500 +v 0.437500 0.625000 1.562500 +v 0.437500 0.750000 0.812500 +v 0.187500 0.750000 0.812500 +v 0.437500 0.750000 1.562500 +v 0.187500 0.750000 1.562500 +vt 0.400000 0.492958 +vt 0.450000 0.323944 +vt 0.450000 0.492958 +vt 0.325000 0.492958 +vt 0.375000 0.323944 +vt 0.375000 0.492958 +vt 0.300000 0.323944 +vt 0.300000 0.492958 +vt 0.375000 0.521127 +vt 0.400000 0.323944 +vt 0.325000 0.295775 +vt 0.325000 0.323944 +vt 0.325000 0.521127 +vt 0.375000 0.295775 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +s off +f 129/192/71 130/193/71 128/194/71 +f 133/195/72 134/196/72 132/197/72 +f 130/198/73 133/195/73 128/199/73 +f 129/200/74 133/195/74 132/197/74 +f 129/192/75 134/196/75 131/201/75 +f 130/202/76 134/196/76 135/203/76 +f 129/192/71 131/201/71 130/193/71 +f 133/195/72 135/203/72 134/196/72 +f 130/198/73 135/203/73 133/195/73 +f 129/200/74 128/204/74 133/195/74 +f 129/192/75 132/197/75 134/196/75 +f 130/202/76 131/205/76 134/196/76 +o ArmLeftUpper +v 0.250000 0.687500 0.437500 +v 0.250000 0.562500 0.437500 +v 0.250000 0.687500 0.062500 +v 0.250000 0.562500 0.062500 +v 0.375000 0.687500 0.062500 +v 0.375000 0.687500 0.437500 +v 0.375000 0.562500 0.437500 +v 0.375000 0.562500 0.062500 +vt 0.325000 0.633803 +vt 0.300000 0.549296 +vt 0.325000 0.549296 +vt 0.375000 0.549296 +vt 0.350000 0.633803 +vt 0.350000 0.549296 +vt 0.350000 0.661972 +vt 0.325000 0.661972 +vt 0.325000 0.521127 +vt 0.400000 0.633803 +vt 0.400000 0.549296 +vt 0.300000 0.633803 +vt 0.375000 0.633803 +vt 0.350000 0.521127 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 138/206/77 137/207/77 136/208/77 +f 142/209/78 140/210/78 141/211/78 +f 138/206/79 143/212/79 139/213/79 +f 137/214/80 141/211/80 136/208/80 +f 139/215/81 142/209/81 137/216/81 +f 136/208/82 140/210/82 138/206/82 +f 138/206/77 139/217/77 137/207/77 +f 142/209/78 143/218/78 140/210/78 +f 138/206/79 140/210/79 143/212/79 +f 137/214/80 142/219/80 141/211/80 +f 139/215/81 143/218/81 142/209/81 +f 136/208/82 141/211/82 140/210/82 +o ArmLeftMid +v 0.250000 0.687500 0.437500 +v 0.250000 0.562500 0.437500 +v 0.375000 0.687500 0.437500 +v 0.375000 0.562500 0.437500 +v 0.250000 0.687500 0.937500 +v 0.250000 0.562500 0.937500 +v 0.375000 0.687500 0.937500 +v 0.375000 0.562500 0.937500 +vt 0.450000 0.633803 +vt 0.425000 0.661972 +vt 0.425000 0.633803 +vt 0.425000 0.492958 +vt 0.450000 0.521127 +vt 0.425000 0.521127 +vt 0.475000 0.633803 +vt 0.500000 0.521127 +vt 0.500000 0.633803 +vt 0.400000 0.633803 +vt 0.475000 0.521127 +vt 0.450000 0.661972 +vt 0.450000 0.492958 +vt 0.400000 0.521127 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 0.0000 +s off +f 146/220/83 145/221/83 144/222/83 +f 149/223/84 150/224/84 148/225/84 +f 147/226/85 149/227/85 145/228/85 +f 145/229/86 148/225/86 144/222/86 +f 144/222/87 150/224/87 146/220/87 +f 146/220/88 151/230/88 147/226/88 +f 146/220/83 147/231/83 145/221/83 +f 149/223/84 151/232/84 150/224/84 +f 147/226/85 151/230/85 149/227/85 +f 145/229/86 149/233/86 148/225/86 +f 144/222/87 148/225/87 150/224/87 +f 146/220/88 150/224/88 151/230/88 +o ArmLeftLower +v 0.250000 0.687500 0.937500 +v 0.250000 0.562500 0.937500 +v 0.375000 0.687500 0.937500 +v 0.375000 0.562500 0.937500 +v 0.250000 0.687500 1.687500 +v 0.250000 0.562500 1.687500 +v 0.375000 0.687500 1.687500 +v 0.375000 0.562500 1.687500 +v 0.312500 0.562500 1.812500 +vt 0.550000 0.633803 +vt 0.525000 0.661972 +vt 0.525000 0.633803 +vt 0.525000 0.464789 +vt 0.537500 0.436620 +vt 0.550000 0.464789 +vt 0.575000 0.464789 +vt 0.575000 0.633803 +vt 0.587500 0.436620 +vt 0.600000 0.464789 +vt 0.500000 0.633803 +vt 0.575000 0.436620 +vt 0.500000 0.436620 +vt 0.500000 0.464789 +vt 0.550000 0.661972 +vt 0.600000 0.633803 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.8944 0.0000 0.4472 +vn -0.8944 0.0000 0.4472 +s off +f 154/234/89 153/235/89 152/236/89 +f 156/237/90 160/238/90 158/239/90 +f 154/234/91 156/237/91 158/239/91 +f 154/234/92 159/240/92 155/241/92 +f 159/240/93 160/242/93 157/243/93 +f 153/244/94 156/237/94 152/236/94 +f 158/239/95 160/245/95 159/240/95 +f 160/246/96 156/237/96 157/247/96 +f 154/234/89 155/248/89 153/235/89 +f 154/234/91 152/236/91 156/237/91 +f 154/234/92 158/239/92 159/240/92 +f 157/243/93 153/249/93 155/241/93 +f 155/241/93 159/240/93 157/243/93 +f 153/244/94 157/247/94 156/237/94 +o Body +v -0.250000 0.250000 0.250000 +v -0.250000 0.750000 0.250000 +v -0.250000 0.250000 -0.250000 +v -0.250000 0.750000 -0.250000 +v 0.250000 0.250000 0.250000 +v 0.250000 0.750000 0.250000 +v 0.250000 0.250000 -0.250000 +v 0.250000 0.750000 -0.250000 +v -0.187500 0.312500 -0.250000 +v -0.187500 0.687500 -0.250000 +v 0.187500 0.312500 -0.250000 +v 0.187500 0.687500 -0.250000 +v -0.187500 0.687500 -0.500000 +v -0.187500 0.312500 -0.500000 +v 0.187500 0.312500 -0.500000 +v 0.187500 0.687500 -0.500000 +v -0.312500 0.187500 -0.500000 +v 0.312500 0.187500 -0.500000 +v -0.312500 0.812500 -0.500000 +v 0.312500 0.812500 -0.500000 +v -0.312500 0.812500 -1.250000 +v -0.312500 0.187500 -1.250000 +v 0.312500 0.187500 -1.250000 +v 0.312500 0.812500 -1.250000 +v -0.250000 0.250000 -1.250000 +v 0.250000 0.250000 -1.250000 +v -0.250000 0.750000 -1.250000 +v 0.250000 0.750000 -1.250000 +v -0.250000 0.750000 -1.375000 +v -0.250000 0.250000 -1.375000 +v 0.250000 0.250000 -1.375000 +v 0.250000 0.750000 -1.375000 +v -0.187500 0.250000 0.187500 +v 0.187500 0.250000 0.187500 +v -0.187500 0.250000 -0.187500 +v 0.187500 0.250000 -0.187500 +v -0.187500 0.187500 -0.187500 +v -0.187500 0.187500 0.187500 +v 0.187500 0.187500 0.187500 +v 0.187500 0.187500 -0.187500 +vt 0.100000 0.887324 +vt 0.000000 0.774648 +vt 0.100000 0.774648 +vt 0.400000 0.887324 +vt 0.300000 0.774648 +vt 0.400000 0.774648 +vt 0.300000 0.887324 +vt 0.200000 0.774648 +vt 0.200000 0.887324 +vt 0.200000 0.661972 +vt 0.100000 0.661972 +vt 0.100000 1.000000 +vt 0.200000 1.000000 +vt 0.400000 0.746479 +vt 0.450000 0.830986 +vt 0.400000 0.830986 +vt 0.400000 0.661972 +vt 0.450000 0.746479 +vt 0.450000 0.915493 +vt 0.400000 0.915493 +vt 0.450000 1.000000 +vt 0.400000 1.000000 +vt 0.725000 0.690141 +vt 0.600000 0.830986 +vt 0.600000 0.690141 +vt 1.000000 0.830986 +vt 0.875000 0.690141 +vt 1.000000 0.690141 +vt 0.875000 0.830986 +vt 0.725000 0.830986 +vt 0.450000 0.690141 +vt 0.600000 1.000000 +vt 0.725000 0.521127 +vt 0.850000 0.971831 +vt 0.750000 0.859155 +vt 0.850000 0.859155 +vt 0.750000 1.000000 +vt 0.850000 1.000000 +vt 0.850000 0.830986 +vt 0.750000 0.830986 +vt 0.725000 0.859155 +vt 0.750000 0.971831 +vt 0.725000 0.971831 +vt 0.875000 0.971831 +vt 0.875000 0.859155 +vt 0.212500 0.901408 +vt 0.287500 0.985915 +vt 0.212500 0.985915 +vt 0.300000 0.985915 +vt 0.287500 0.901408 +vt 0.300000 0.901408 +vt 0.200000 0.901408 +vt 0.200000 0.985915 +vt 0.287500 0.887324 +vt 0.212500 0.887324 +vt 0.212500 1.000000 +vt 0.287500 1.000000 +vt 0.000000 0.887324 +vt 0.450000 0.661972 +vt 0.450000 0.830986 +vt 0.725000 1.000000 +vt 0.600000 0.521127 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 162/250/97 163/251/97 161/252/97 +f 164/253/98 167/254/98 163/255/98 +f 168/256/99 165/257/99 167/254/99 +f 166/258/100 161/252/100 165/257/100 +f 167/259/101 161/252/101 163/260/101 +f 164/261/102 166/258/102 168/262/102 +f 171/263/99 176/264/99 172/265/99 +f 169/266/101 175/267/101 171/263/101 +f 172/265/102 173/268/102 170/269/102 +f 170/269/97 174/270/97 169/271/97 +f 178/272/100 179/273/100 177/274/100 +f 181/275/98 183/276/98 182/277/98 +f 178/272/99 184/278/99 180/279/99 +f 179/273/97 182/280/97 177/274/97 +f 180/279/102 181/281/102 179/273/102 +f 177/274/101 183/282/101 178/272/101 +f 189/283/98 191/284/98 190/285/98 +f 188/286/102 189/283/102 187/287/102 +f 185/288/101 191/284/101 186/289/101 +f 186/290/99 192/291/99 188/292/99 +f 187/293/97 190/285/97 185/294/97 +f 197/295/101 199/296/101 198/297/101 +f 194/298/99 200/299/99 196/300/99 +f 195/301/97 198/297/97 193/302/97 +f 196/303/98 197/295/98 195/304/98 +f 193/305/100 199/296/100 194/306/100 +f 162/250/97 164/307/97 163/251/97 +f 164/253/98 168/256/98 167/254/98 +f 168/256/99 166/258/99 165/257/99 +f 166/258/100 162/250/100 161/252/100 +f 167/259/101 165/257/101 161/252/101 +f 164/261/102 162/250/102 166/258/102 +f 171/263/99 175/267/99 176/264/99 +f 169/266/101 174/308/101 175/267/101 +f 172/265/102 176/264/102 173/268/102 +f 170/269/97 173/268/97 174/270/97 +f 178/272/100 180/279/100 179/273/100 +f 181/275/98 184/278/98 183/276/98 +f 178/272/99 183/276/99 184/278/99 +f 179/273/97 181/309/97 182/280/97 +f 180/279/102 184/310/102 181/281/102 +f 177/274/101 182/311/101 183/282/101 +f 189/283/98 192/291/98 191/284/98 +f 188/286/102 192/291/102 189/283/102 +f 185/288/101 190/285/101 191/284/101 +f 186/290/99 191/284/99 192/291/99 +f 187/293/97 189/283/97 190/285/97 +f 197/295/101 200/299/101 199/296/101 +f 194/298/99 199/296/99 200/299/99 +f 195/301/97 197/295/97 198/297/97 +f 196/303/98 200/299/98 197/295/98 +f 193/305/100 198/297/100 199/296/100 +o LegRightLower +v -0.562500 0.250000 -0.031250 +v -0.562500 0.187500 -0.031250 +v -0.562500 0.250000 0.031250 +v -0.562500 0.187500 0.031250 +v -0.937500 0.250000 0.031250 +v -0.937500 0.250000 -0.031250 +v -0.937500 0.187500 -0.031250 +v -0.937500 0.187500 0.031250 +v -1.000000 0.187500 0.000000 +v -0.500000 0.218750 -0.062500 +v -0.500000 0.218750 0.062500 +v -0.875000 0.218750 0.062500 +v -0.875000 0.218750 -0.062500 +v -0.500000 0.281250 0.062500 +v -0.500000 0.281250 -0.062500 +v -0.875000 0.281250 0.062500 +v -0.875000 0.281250 -0.062500 +vt 0.675000 0.507042 +vt 0.662500 0.521127 +vt 0.662500 0.507042 +vt 0.662500 0.422535 +vt 0.650000 0.422535 +vt 0.650000 0.408451 +vt 0.687500 0.422535 +vt 0.693750 0.408451 +vt 0.700000 0.422535 +vt 0.675000 0.422535 +vt 0.687500 0.507042 +vt 0.650000 0.507042 +vt 0.750000 0.408451 +vt 0.775000 0.492958 +vt 0.750000 0.492958 +vt 0.687500 0.408451 +vt 0.668750 0.408451 +vt 0.712500 0.492958 +vt 0.737500 0.408451 +vt 0.737500 0.492958 +vt 0.712500 0.507042 +vt 0.737500 0.507042 +vt 0.737500 0.394366 +vt 0.712500 0.408451 +vt 0.712500 0.394366 +vt 0.700000 0.408451 +vt 0.700000 0.492958 +vt 0.675000 0.521127 +vt 0.700000 0.507042 +vt 0.775000 0.408451 +vn 1.0000 0.0000 0.0000 +vn -0.4472 0.0000 -0.8944 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.0000 0.0000 -1.0000 +vn -0.4472 0.0000 0.8944 +vn -0.7071 0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 203/312/103 202/313/103 201/314/103 +f 206/315/104 207/316/104 209/317/104 +f 208/318/105 209/319/105 207/320/105 +f 201/314/106 205/321/106 203/312/106 +f 203/312/107 208/318/107 204/322/107 +f 202/323/108 206/315/108 201/314/108 +f 212/324/105 210/325/105 211/326/105 +f 209/327/109 208/318/109 205/321/109 +f 205/321/110 206/315/110 209/328/110 +f 215/329/106 216/330/106 214/331/106 +f 210/332/103 214/331/103 211/333/103 +f 211/326/107 216/330/107 212/324/107 +f 212/334/111 217/335/111 213/336/111 +f 213/337/108 215/329/108 210/338/108 +f 203/312/103 204/339/103 202/313/103 +f 207/320/105 202/340/105 204/322/105 +f 204/322/105 208/318/105 207/320/105 +f 201/314/106 206/315/106 205/321/106 +f 203/312/107 205/321/107 208/318/107 +f 202/323/108 207/316/108 206/315/108 +f 212/324/105 213/341/105 210/325/105 +f 215/329/106 217/335/106 216/330/106 +f 210/332/103 215/329/103 214/331/103 +f 211/326/107 214/331/107 216/330/107 +f 212/334/111 216/330/111 217/335/111 +f 213/337/108 217/335/108 215/329/108 diff --git a/src/main/resources/assets/hbm/models/mobs/plasticbag.obj b/src/main/resources/assets/hbm/models/mobs/plasticbag.obj new file mode 100644 index 000000000..239dd3d8e --- /dev/null +++ b/src/main/resources/assets/hbm/models/mobs/plasticbag.obj @@ -0,0 +1,97 @@ +# Blender v2.79 (sub 0) OBJ File: 'plasticbag.blend' +# www.blender.org +o Cube_Cube.001 +v -0.187500 -0.250000 0.125000 +v -0.187500 0.250000 0.125000 +v -0.187500 -0.250000 -0.125000 +v -0.187500 0.250000 -0.125000 +v 0.187500 -0.250000 0.125000 +v 0.187500 0.250000 0.125000 +v 0.187500 -0.250000 -0.125000 +v 0.187500 0.250000 -0.125000 +v -0.125000 0.250000 0.125000 +v -0.125000 0.250000 -0.125000 +v -0.062500 0.250000 0.125000 +v -0.062500 0.250000 -0.125000 +v -0.125000 0.375000 0.125000 +v -0.125000 0.375000 -0.125000 +v -0.062500 0.375000 0.125000 +v -0.062500 0.375000 -0.125000 +v 0.062500 0.250000 0.125000 +v 0.062500 0.250000 -0.125000 +v 0.125000 0.250000 0.125000 +v 0.125000 0.250000 -0.125000 +v 0.062500 0.375000 0.125000 +v 0.062500 0.375000 -0.125000 +v 0.125000 0.375000 0.125000 +v 0.125000 0.375000 -0.125000 +v -0.062500 0.437500 0.125000 +v -0.062500 0.437500 -0.125000 +v 0.062500 0.437500 0.125000 +v 0.062500 0.437500 -0.125000 +vt 1.000000 1.000000 +vt 0.600000 0.333333 +vt 1.000000 0.333333 +vt 0.600000 1.000000 +vt -0.000000 0.333333 +vt 1.000000 1.000000 +vt 0.600000 0.333333 +vt 1.000000 0.333333 +vt 0.600000 1.000000 +vt -0.000000 0.333333 +vt 0.600000 0.000000 +vt -0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.900000 0.166667 +vt 0.900000 0.000000 +vt 0.700000 0.000000 +vt 0.600000 0.166667 +vt 0.600000 0.000000 +vt 1.000000 0.000000 +vt 0.900000 0.166667 +vt 0.900000 0.000000 +vt 0.700000 0.000000 +vt 0.600000 0.166667 +vt 0.600000 0.000000 +vt 0.700000 0.250000 +vt 0.700000 0.166667 +vt 0.900000 0.250000 +vt 0.700000 0.166667 +vt 0.700000 0.250000 +vt 1.000000 0.166667 +vt 1.000000 0.166667 +vt 0.900000 0.250000 +vt -0.000000 1.000000 +vt -0.000000 1.000000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 7/5/2 3/2/2 +f 8/6/3 5/7/3 7/8/3 +f 6/9/4 1/10/4 5/7/4 +f 7/11/5 1/10/5 3/12/5 +f 19/13/4 21/14/4 17/15/4 +f 11/16/4 13/17/4 9/18/4 +f 10/19/2 16/20/2 12/21/2 +f 18/22/2 24/23/2 20/24/2 +f 16/20/2 28/25/2 22/26/2 +f 27/27/4 15/28/4 21/14/4 +f 13/17/4 15/28/4 25/29/4 +f 21/14/4 23/30/4 27/27/4 +f 22/26/2 28/25/2 24/23/2 +f 16/20/2 14/31/2 26/32/2 +f 2/1/1 4/4/1 3/2/1 +f 4/4/2 8/33/2 7/5/2 +f 8/6/3 6/9/3 5/7/3 +f 6/9/4 2/34/4 1/10/4 +f 7/11/5 5/7/5 1/10/5 +f 19/13/4 23/30/4 21/14/4 +f 11/16/4 15/28/4 13/17/4 +f 10/19/2 14/31/2 16/20/2 +f 18/22/2 22/26/2 24/23/2 +f 16/20/2 26/32/2 28/25/2 +f 27/27/4 25/29/4 15/28/4 diff --git a/src/main/resources/assets/hbm/models/mobs/quadcopter.obj b/src/main/resources/assets/hbm/models/mobs/quadcopter.obj new file mode 100644 index 000000000..2c9858362 --- /dev/null +++ b/src/main/resources/assets/hbm/models/mobs/quadcopter.obj @@ -0,0 +1,360 @@ +# Blender v2.79 (sub 0) OBJ File: 'quadcopter.blend' +# www.blender.org +o Cube_Cube.001 +v -0.187500 0.125000 0.500000 +v -0.187500 0.375000 0.500000 +v -0.187500 0.125000 -0.500000 +v -0.187500 0.375000 -0.500000 +v 0.187500 0.125000 0.500000 +v 0.187500 0.375000 0.500000 +v 0.187500 0.125000 -0.500000 +v 0.187500 0.375000 -0.500000 +v 0.437500 0.125000 0.562500 +v 0.437500 0.500000 0.562500 +v 0.437500 0.125000 0.437500 +v 0.437500 0.500000 0.437500 +v 0.562500 0.125000 0.562500 +v 0.562500 0.500000 0.562500 +v 0.562500 0.125000 0.437500 +v 0.562500 0.500000 0.437500 +v 0.437500 0.125000 -0.437500 +v 0.437500 0.500000 -0.437500 +v 0.437500 0.125000 -0.562500 +v 0.437500 0.500000 -0.562500 +v 0.562500 0.125000 -0.437500 +v 0.562500 0.500000 -0.437500 +v 0.562500 0.125000 -0.562500 +v 0.562500 0.500000 -0.562500 +v -0.562500 0.125000 0.562500 +v -0.562500 0.500000 0.562500 +v -0.562500 0.125000 0.437500 +v -0.562500 0.500000 0.437500 +v -0.437500 0.125000 0.562500 +v -0.437500 0.500000 0.562500 +v -0.437500 0.125000 0.437500 +v -0.437500 0.500000 0.437500 +v -0.562500 0.125000 -0.437500 +v -0.562500 0.500000 -0.437500 +v -0.562500 0.125000 -0.562500 +v -0.562500 0.500000 -0.562500 +v -0.437500 0.125000 -0.437500 +v -0.437500 0.500000 -0.437500 +v -0.437500 0.125000 -0.562500 +v -0.437500 0.500000 -0.562500 +v 0.437500 0.187500 0.531250 +v 0.437500 0.312500 0.531250 +v 0.437500 0.187500 0.468750 +v 0.437500 0.312500 0.468750 +v 0.187500 0.187500 0.343750 +v 0.187500 0.187500 0.406250 +v 0.187500 0.312500 0.406250 +v 0.187500 0.312500 0.343750 +v -0.437500 0.187500 -0.531250 +v -0.437500 0.312500 -0.531250 +v -0.437500 0.187500 -0.468750 +v -0.437500 0.312500 -0.468750 +v -0.187500 0.187500 -0.343750 +v -0.187500 0.187500 -0.406250 +v -0.187500 0.312500 -0.406250 +v -0.187500 0.312500 -0.343750 +v 0.437500 0.312500 -0.531250 +v 0.437500 0.187500 -0.531250 +v 0.437500 0.312500 -0.468750 +v 0.437500 0.187500 -0.468750 +v 0.187500 0.312500 -0.343750 +v 0.187500 0.312500 -0.406250 +v 0.187500 0.187500 -0.406250 +v 0.187500 0.187500 -0.343750 +v -0.437500 0.312500 0.531250 +v -0.437500 0.187500 0.531250 +v -0.437500 0.312500 0.468750 +v -0.437500 0.187500 0.468750 +v -0.187500 0.312500 0.343750 +v -0.187500 0.312500 0.406250 +v -0.187500 0.187500 0.406250 +v -0.187500 0.187500 0.343750 +v -0.500000 0.500000 0.250000 +v -0.676777 0.500000 0.323223 +v -0.750000 0.500000 0.500000 +v -0.676777 0.500000 0.676777 +v -0.500000 0.500000 0.750000 +v -0.323223 0.500000 0.676777 +v -0.250000 0.500000 0.500000 +v -0.323223 0.500000 0.323223 +v 0.500000 0.500000 0.250000 +v 0.323223 0.500000 0.323223 +v 0.250000 0.500000 0.500000 +v 0.323223 0.500000 0.676777 +v 0.500000 0.500000 0.750000 +v 0.676777 0.500000 0.676777 +v 0.750000 0.500000 0.500000 +v 0.676777 0.500000 0.323223 +v -0.500000 0.500000 -0.750000 +v -0.676777 0.500000 -0.676777 +v -0.750000 0.500000 -0.500000 +v -0.676777 0.500000 -0.323223 +v -0.500000 0.500000 -0.250000 +v -0.323223 0.500000 -0.323223 +v -0.250000 0.500000 -0.500000 +v -0.323223 0.500000 -0.676777 +v 0.500000 0.500000 -0.750000 +v 0.323223 0.500000 -0.676777 +v 0.250000 0.500000 -0.500000 +v 0.323223 0.500000 -0.323223 +v 0.500000 0.500000 -0.250000 +v 0.676777 0.500000 -0.323223 +v 0.750000 0.500000 -0.500000 +v 0.676777 0.500000 -0.676777 +vt 0.125000 0.800000 +vt 0.625000 1.000000 +vt 0.125000 1.000000 +vt 0.625000 0.800000 +vt 0.750000 0.500000 +vt 0.750000 0.800000 +vt 0.625000 0.500000 +vt 0.125000 0.300000 +vt 0.625000 0.300000 +vt 0.125000 0.500000 +vt 0.000000 0.800000 +vt 0.000000 0.500000 +vt 0.125000 0.000000 +vt 0.625000 0.000000 +vt 0.812500 1.000000 +vt 0.750000 0.700000 +vt 0.812500 0.700000 +vt 1.000000 1.000000 +vt 0.937500 0.700000 +vt 1.000000 0.700000 +vt 0.937500 1.000000 +vt 0.875000 0.700000 +vt 0.875000 1.000000 +vt 0.875000 0.600000 +vt 0.812500 0.600000 +vt 0.812500 1.000000 +vt 0.750000 0.700000 +vt 0.812500 0.700000 +vt 1.000000 1.000000 +vt 0.937500 0.700000 +vt 1.000000 0.700000 +vt 0.937500 1.000000 +vt 0.875000 0.700000 +vt 0.875000 1.000000 +vt 0.875000 0.600000 +vt 0.812500 0.600000 +vt 0.812500 1.000000 +vt 0.750000 0.700000 +vt 0.812500 0.700000 +vt 1.000000 1.000000 +vt 0.937500 0.700000 +vt 1.000000 0.700000 +vt 0.937500 1.000000 +vt 0.875000 0.700000 +vt 0.875000 1.000000 +vt 0.875000 0.600000 +vt 0.812500 0.600000 +vt 0.875000 0.598554 +vt 0.750904 0.400000 +vt 0.875000 0.201446 +vt 0.812500 1.000000 +vt 0.750000 0.700000 +vt 0.812500 0.700000 +vt 1.000000 1.000000 +vt 0.937500 0.700000 +vt 1.000000 0.700000 +vt 0.937500 1.000000 +vt 0.875000 0.700000 +vt 0.875000 1.000000 +vt 0.875000 0.600000 +vt 0.812500 0.600000 +vt 0.625000 0.200000 +vt 0.750000 0.300000 +vt 0.625000 0.300000 +vt 0.625000 0.050000 +vt 0.750000 0.150000 +vt 0.625000 0.150000 +vt 0.750000 0.300000 +vt 0.625000 0.200000 +vt 0.750000 0.200000 +vt 0.750000 0.150000 +vt 0.625000 0.050000 +vt 0.750000 0.050000 +vt 0.625000 0.150000 +vt 0.750000 0.000000 +vt 0.625000 0.000000 +vt 0.750000 0.200000 +vt 0.750000 0.000000 +vt 0.750000 0.050000 +vt 0.625000 0.050000 +vt 0.750000 0.150000 +vt 0.625000 0.150000 +vt 0.625000 0.200000 +vt 0.750000 0.300000 +vt 0.625000 0.300000 +vt 0.750000 0.150000 +vt 0.625000 0.050000 +vt 0.750000 0.050000 +vt 0.750000 0.300000 +vt 0.625000 0.200000 +vt 0.750000 0.200000 +vt 0.625000 0.000000 +vt 0.750000 0.000000 +vt 0.625000 0.150000 +vt 0.625000 0.000000 +vt 0.750000 0.050000 +vt 0.750000 0.200000 +vt 0.999096 0.400000 +vt 0.962749 0.540399 +vt 0.875000 0.598554 +vt 0.875000 0.598554 +vt 0.750904 0.400000 +vt 0.875000 0.201446 +vt 0.999096 0.400000 +vt 0.962749 0.540399 +vt 0.875000 0.598554 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.787251 0.540399 +vt 0.787251 0.259601 +vt 0.962749 0.259601 +vt 0.999096 0.400000 +vt 0.962749 0.540399 +vt 0.750000 1.000000 +vt 0.625000 0.300000 +vt 0.625000 0.000000 +vt 0.625000 0.300000 +vt 0.750000 0.000000 +vt 0.787251 0.540399 +vt 0.875000 0.201446 +vt 0.750904 0.400000 +vt 0.787251 0.259601 +vt 0.962749 0.259601 +vt 0.787251 0.540399 +vt 0.787251 0.259601 +vt 0.962749 0.259601 +vt 0.999096 0.400000 +vt 0.962749 0.540399 +vt 0.787251 0.540399 +vt 0.875000 0.201446 +vt 0.750904 0.400000 +vt 0.787251 0.259601 +vt 0.962749 0.259601 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.4472 0.0000 -0.8944 +vn -0.4472 0.0000 0.8944 +vn 0.4472 0.0000 0.8944 +vn -0.4472 0.0000 -0.8944 +s off +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 7/5/2 3/6/2 +f 8/7/3 5/8/3 7/9/3 +f 6/10/4 1/11/4 5/12/4 +f 7/9/5 1/13/5 3/14/5 +f 4/4/6 6/10/6 8/7/6 +f 10/15/1 11/16/1 9/17/1 +f 12/18/2 15/19/2 11/20/2 +f 16/21/3 13/22/3 15/19/3 +f 14/23/4 9/17/4 13/22/4 +f 15/24/5 9/17/5 11/25/5 +f 18/26/1 19/27/1 17/28/1 +f 20/29/2 23/30/2 19/31/2 +f 24/32/3 21/33/3 23/30/3 +f 22/34/4 17/28/4 21/33/4 +f 23/35/5 17/28/5 19/36/5 +f 26/37/1 27/38/1 25/39/1 +f 28/40/2 31/41/2 27/42/2 +f 32/43/3 29/44/3 31/41/3 +f 30/45/4 25/39/4 29/44/4 +f 31/46/5 25/39/5 27/47/5 +f 81/48/6 83/49/6 85/50/6 +f 34/51/1 35/52/1 33/53/1 +f 36/54/2 39/55/2 35/56/2 +f 40/57/3 37/58/3 39/55/3 +f 38/59/4 33/53/4 37/58/4 +f 39/60/5 33/53/5 35/61/5 +f 50/62/7 54/63/7 49/64/7 +f 51/65/8 56/66/8 52/67/8 +f 43/68/7 48/69/7 44/70/7 +f 42/71/8 46/72/8 41/73/8 +f 44/70/6 47/74/6 42/71/6 +f 43/75/5 46/72/5 45/76/5 +f 52/67/6 55/77/6 50/62/6 +f 51/65/5 54/78/5 53/79/5 +f 66/80/9 70/81/9 65/82/9 +f 67/83/10 72/84/10 68/85/10 +f 59/86/9 64/87/9 60/88/9 +f 58/89/10 62/90/10 57/91/10 +f 60/88/5 63/92/5 58/93/5 +f 59/86/6 62/90/6 61/94/6 +f 68/95/5 71/96/5 66/80/5 +f 67/83/6 70/81/6 69/97/6 +f 79/98/6 80/99/6 73/100/6 +f 97/101/6 99/102/6 101/103/6 +f 95/104/6 96/105/6 89/106/6 +f 2/1/1 4/4/1 3/2/1 +f 4/4/2 8/7/2 7/5/2 +f 8/7/3 6/10/3 5/8/3 +f 6/10/4 2/1/4 1/11/4 +f 7/9/5 5/8/5 1/13/5 +f 4/4/6 2/1/6 6/10/6 +f 10/15/1 12/107/1 11/16/1 +f 12/18/2 16/21/2 15/19/2 +f 16/21/3 14/23/3 13/22/3 +f 14/23/4 10/15/4 9/17/4 +f 15/24/5 13/22/5 9/17/5 +f 18/26/1 20/108/1 19/27/1 +f 20/29/2 24/32/2 23/30/2 +f 24/32/3 22/34/3 21/33/3 +f 22/34/4 18/26/4 17/28/4 +f 23/35/5 21/33/5 17/28/5 +f 26/37/1 28/109/1 27/38/1 +f 28/40/2 32/43/2 31/41/2 +f 32/43/3 30/45/3 29/44/3 +f 30/45/4 26/37/4 25/39/4 +f 31/46/5 29/44/5 25/39/5 +f 81/48/6 82/110/6 83/49/6 +f 83/49/6 84/111/6 85/50/6 +f 85/50/6 86/112/6 87/113/6 +f 87/113/6 88/114/6 85/50/6 +f 88/114/6 81/48/6 85/50/6 +f 34/51/1 36/115/1 35/52/1 +f 36/54/2 40/57/2 39/55/2 +f 40/57/3 38/59/3 37/58/3 +f 38/59/4 34/51/4 33/53/4 +f 39/60/5 37/58/5 33/53/5 +f 50/62/7 55/77/7 54/63/7 +f 51/65/8 53/79/8 56/66/8 +f 43/68/7 45/116/7 48/69/7 +f 42/71/8 47/74/8 46/72/8 +f 44/70/6 48/69/6 47/74/6 +f 43/75/5 41/73/5 46/72/5 +f 52/67/6 56/66/6 55/77/6 +f 51/65/5 49/117/5 54/78/5 +f 66/80/9 71/96/9 70/81/9 +f 67/83/10 69/97/10 72/84/10 +f 59/86/9 61/94/9 64/87/9 +f 58/89/10 63/118/10 62/90/10 +f 60/88/5 64/87/5 63/92/5 +f 59/86/6 57/91/6 62/90/6 +f 68/95/5 72/119/5 71/96/5 +f 67/83/6 65/82/6 70/81/6 +f 73/100/6 74/120/6 77/121/6 +f 74/120/6 75/122/6 77/121/6 +f 75/122/6 76/123/6 77/121/6 +f 77/121/6 78/124/6 73/100/6 +f 78/124/6 79/98/6 73/100/6 +f 97/101/6 98/125/6 99/102/6 +f 99/102/6 100/126/6 101/103/6 +f 101/103/6 102/127/6 103/128/6 +f 103/128/6 104/129/6 101/103/6 +f 104/129/6 97/101/6 101/103/6 +f 89/106/6 90/130/6 93/131/6 +f 90/130/6 91/132/6 93/131/6 +f 91/132/6 92/133/6 93/131/6 +f 93/131/6 94/134/6 89/106/6 +f 94/134/6 95/104/6 89/106/6 diff --git a/src/main/resources/assets/hbm/models/projectiles/leadburster.obj b/src/main/resources/assets/hbm/models/projectiles/leadburster.obj new file mode 100644 index 000000000..994ea3b72 --- /dev/null +++ b/src/main/resources/assets/hbm/models/projectiles/leadburster.obj @@ -0,0 +1,1671 @@ +# Blender v2.79 (sub 0) OBJ File: 'leadburster.blend' +# www.blender.org +o Based.001 +v -0.015017 4.297415 -1.162174 +v -0.015017 4.297415 1.146320 +v 0.576962 3.955635 1.146320 +v 0.576962 3.955635 -1.162174 +v 0.576962 3.272077 1.146320 +v 0.576962 3.272077 -1.162174 +v -0.015017 2.930297 1.146320 +v -0.015017 2.930298 -1.162174 +v -0.606996 3.272077 1.146320 +v -0.606996 3.272077 -1.162174 +v 0.489972 3.322300 1.146320 +v -0.015017 3.030745 1.146320 +v -0.606996 3.955635 1.146320 +v -0.606996 3.955635 -1.162174 +v 0.491289 3.321540 -1.162174 +v 0.491289 3.906172 -1.162174 +v -0.520006 3.322300 1.146320 +v -0.015017 3.030745 0.868875 +v -0.520006 3.322300 0.868875 +v -0.520006 3.905411 1.146320 +v -0.015017 4.196967 1.146320 +v 0.489972 3.905411 1.146320 +v 0.489972 3.322300 0.868875 +v 0.455764 3.342050 0.868875 +v -0.015017 3.070245 0.868875 +v 0.489972 3.905411 0.868875 +v -0.520006 3.905411 0.868875 +v -0.015017 4.196967 0.868875 +v 0.455764 3.885662 0.868875 +v 0.394149 3.850088 1.153171 +v 0.394149 3.377624 1.153171 +v -0.015017 4.157467 0.868875 +v -0.485798 3.885662 0.868875 +v -0.485798 3.342051 0.868875 +v -0.015017 4.086320 1.153171 +v -0.424183 3.850088 1.153171 +v -0.424183 3.377624 1.153171 +v -0.015017 3.141392 1.153171 +v -0.521323 3.321540 -1.162174 +v -0.521323 3.906172 -1.162174 +v -0.487987 3.886926 -0.844068 +v -0.487987 3.340786 -0.844068 +v -0.015017 4.198488 -1.162174 +v -0.015017 3.029224 -1.162174 +v -0.015017 4.159995 -0.844068 +v -0.015017 4.086784 -1.161144 +v -0.424585 3.850320 -1.161144 +v -0.015017 3.067717 -0.844068 +v 0.457954 3.340786 -0.844068 +v 0.457954 3.886926 -0.844068 +v 0.394551 3.850320 -1.161144 +v 0.394551 3.377392 -1.161144 +v -0.015017 3.140928 -1.161144 +v -0.424585 3.377392 -1.161144 +v 0.308285 1.821139 -0.740607 +v 0.305698 1.821139 0.741679 +v -0.308285 1.821139 0.740608 +v -0.305698 1.821139 -0.741679 +v -0.308285 2.128531 0.740608 +v -0.305698 2.128531 -0.741679 +v 0.305698 2.128531 0.741679 +v 0.308285 2.128531 -0.740607 +v 0.305698 3.115462 0.741679 +v -0.308285 3.099616 0.740608 +v -0.015017 2.930297 0.741119 +v -0.305698 2.128531 -1.038465 +v -0.305698 1.821139 -1.038465 +v -0.308285 1.821139 1.036965 +v 0.305698 1.821139 1.038465 +v 0.305698 2.128531 1.038465 +v -0.308285 2.128531 1.036965 +v 0.308285 1.821139 -1.036965 +v 0.308285 2.128531 -1.036965 +v -0.305698 3.098122 -0.741679 +v -0.305698 3.098122 -1.038465 +v -0.015017 2.930297 -1.037755 +v 0.308285 3.116956 -1.036965 +v 0.305698 3.115462 1.038465 +v 0.308285 3.116956 -0.740607 +v -0.015017 2.930297 -0.741172 +v -0.308285 3.099616 1.036965 +v -0.015017 2.930297 1.037682 +vt 0.639483 0.175662 +vt 0.663689 0.275699 +vt 0.639518 0.275817 +vt 0.511157 0.563979 +vt 0.552869 0.765382 +vt 0.511157 0.765383 +vt 0.808845 0.848002 +vt 0.753093 0.471432 +vt 0.808845 0.471432 +vt 0.753093 0.848002 +vt 0.697341 0.471432 +vt 0.697340 0.848002 +vt 0.641588 0.471432 +vt 0.976102 0.471432 +vt 0.920349 0.848002 +vt 0.920349 0.471432 +vt 0.641588 0.848002 +vt 0.693244 0.862192 +vt 0.645685 0.862192 +vt 0.864597 0.471432 +vt 0.864597 0.848002 +vt 0.749058 0.457457 +vt 0.972005 0.862192 +vt 0.924446 0.907449 +vt 0.924446 0.862192 +vt 0.812941 0.862192 +vt 0.976102 0.848002 +vt 0.748996 0.862192 +vt 0.701437 0.862192 +vt 0.868694 0.862192 +vt 0.804749 0.862192 +vt 0.757189 0.862192 +vt 0.693244 0.907449 +vt 0.647296 0.913030 +vt 0.645685 0.907450 +vt 0.701437 0.907450 +vt 0.916253 0.862192 +vt 0.868694 0.907450 +vt 0.757189 0.907450 +vt 0.860501 0.862192 +vt 0.812941 0.907450 +vt 0.747386 0.913030 +vt 0.705949 0.960482 +vt 0.703048 0.913030 +vt 0.804749 0.907450 +vt 0.758800 0.913030 +vt 0.858890 0.913030 +vt 0.814552 0.913030 +vt 0.970394 0.913030 +vt 0.926057 0.913030 +vt 0.748996 0.907450 +vt 0.914642 0.913030 +vt 0.870304 0.913030 +vt 0.537788 0.150505 +vt 0.557055 0.083760 +vt 0.614858 0.150505 +vt 0.873206 0.960482 +vt 0.691633 0.913030 +vt 0.650197 0.960482 +vt 0.800236 0.960482 +vt 0.761701 0.960482 +vt 0.817454 0.960482 +vt 0.928958 0.960482 +vt 0.916315 0.457457 +vt 0.870201 0.405282 +vt 0.914745 0.405282 +vt 0.757127 0.457457 +vt 0.804811 0.457457 +vt 0.693306 0.457457 +vt 0.860563 0.457457 +vt 0.924384 0.457457 +vt 0.972067 0.457457 +vt 0.858993 0.405282 +vt 0.817435 0.352535 +vt 0.856008 0.352536 +vt 0.647192 0.405282 +vt 0.691737 0.405282 +vt 0.803241 0.405282 +vt 0.812879 0.457457 +vt 0.925954 0.405282 +vt 0.970497 0.405282 +vt 0.701375 0.457457 +vt 0.747489 0.405282 +vt 0.537788 0.313976 +vt 0.557086 0.247179 +vt 0.595659 0.247206 +vt 0.967512 0.352535 +vt 0.705930 0.352536 +vt 0.744503 0.352536 +vt 0.911760 0.352535 +vt 0.688751 0.352536 +vt 0.761682 0.352536 +vt 0.800255 0.352536 +vt 0.636347 0.765383 +vt 0.615464 0.563979 +vt 0.636347 0.563979 +vt 0.573752 0.563979 +vt 0.615464 0.765383 +vt 0.573752 0.765382 +vt 0.688760 0.026976 +vt 0.767964 0.026976 +vt 0.754154 0.074815 +vt 0.552869 0.563979 +vt 0.863701 0.015410 +vt 0.838629 0.063823 +vt 0.838629 0.015410 +vt 0.663689 0.175544 +vt 0.688760 0.275699 +vt 0.863701 0.163978 +vt 0.838629 0.163978 +vt 0.688760 0.127131 +vt 0.663689 0.127131 +vt 0.663689 0.324042 +vt 0.688760 0.324042 +vt 0.942782 0.063823 +vt 0.863701 0.063823 +vt 0.838629 0.212321 +vt 0.863701 0.212321 +vt 0.814423 0.063941 +vt 0.814458 0.164096 +vt 0.929094 0.111240 +vt 0.688760 0.175544 +vt 0.769256 0.127131 +vt 0.769256 0.175544 +vt 0.944318 0.163978 +vt 0.944318 0.212321 +vt 0.929094 0.265060 +vt 0.754154 0.227860 +vt 0.767964 0.324042 +vt 0.972005 0.907450 +vt 0.916253 0.907450 +vt 0.860501 0.907450 +vt 0.744484 0.960482 +vt 0.803138 0.913030 +vt 0.595590 0.083760 +vt 0.595590 0.217249 +vt 0.557055 0.217249 +vt 0.911741 0.960482 +vt 0.688732 0.960482 +vt 0.855989 0.960482 +vt 0.967493 0.960482 +vt 0.868631 0.457457 +vt 0.645623 0.457457 +vt 0.814449 0.405282 +vt 0.758697 0.405282 +vt 0.702945 0.405282 +vt 0.614933 0.314029 +vt 0.595636 0.380826 +vt 0.557063 0.380800 +vt 0.928939 0.352535 +vt 0.873187 0.352535 +vt 0.650178 0.352536 +vt 0.942782 0.015410 +vt 0.942782 0.312477 +vt 0.863701 0.312477 +vt 0.767964 0.275699 +vn 0.0000 -1.0000 0.0000 +vn 0.5000 0.8660 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.9773 0.0000 0.2118 +vn -0.9773 0.0000 0.2118 +vn 0.4887 -0.8464 0.2118 +vn 0.4887 0.8464 0.2118 +vn -0.4887 0.8464 0.2118 +vn -0.4887 -0.8464 0.2118 +vn 0.9946 0.0000 -0.1042 +vn -0.4903 0.8492 -0.1961 +vn -0.4973 0.8613 -0.1042 +vn -0.4973 -0.8613 -0.1042 +vn 0.4973 -0.8613 -0.1042 +vn 0.4973 0.8613 -0.1042 +vn -0.9946 0.0000 -0.1042 +vn -0.4903 -0.8492 -0.1961 +vn 0.9806 0.0000 -0.1961 +vn -0.9806 0.0000 -0.1961 +vn 0.4903 -0.8492 -0.1961 +vn 0.4903 0.8492 -0.1961 +vn -1.0000 -0.0000 -0.0017 +vn 0.0000 1.0000 -0.0000 +vn 0.0017 0.0000 -1.0000 +vn 1.0000 0.0000 0.0017 +vn -0.0024 0.0000 1.0000 +vn 0.0024 0.0000 -1.0000 +vn -0.0017 0.0000 1.0000 +s off +f 56/1/1 68/2/1 57/3/1 +f 58/4/1 56/5/1 57/6/1 +f 2/7/2 4/8/2 1/9/2 +f 3/10/3 6/11/3 4/8/3 +f 5/12/4 8/13/4 6/11/4 +f 8/14/5 9/15/5 10/16/5 +f 7/17/6 11/18/6 12/19/6 +f 9/15/7 14/20/7 10/16/7 +f 13/21/8 1/9/8 14/20/8 +f 6/11/9 16/22/9 4/8/9 +f 12/23/2 19/24/2 17/25/2 +f 13/21/6 21/26/6 2/7/6 +f 7/27/6 17/25/6 9/15/6 +f 5/12/6 22/28/6 11/29/6 +f 9/15/6 20/30/6 13/21/6 +f 3/10/6 21/31/6 22/32/6 +f 23/33/6 25/34/6 18/35/6 +f 22/28/7 23/36/7 11/29/7 +f 17/37/3 27/38/3 20/30/3 +f 11/18/8 18/35/8 12/19/8 +f 21/31/5 26/39/5 22/32/5 +f 20/40/4 28/41/4 21/26/4 +f 29/42/10 31/43/10 24/44/10 +f 28/45/6 29/46/6 26/39/6 +f 28/41/6 33/47/6 32/48/6 +f 19/24/6 25/49/6 34/50/6 +f 26/51/6 24/44/6 23/36/6 +f 27/38/6 34/52/6 33/53/6 +f 38/54/6 31/55/6 35/56/6 +f 34/52/11 36/57/11 33/53/11 +f 24/58/12 38/59/12 25/34/12 +f 29/46/13 35/60/13 30/61/13 +f 33/47/14 35/62/14 32/48/14 +f 25/49/15 37/63/15 34/50/15 +f 39/64/16 41/65/16 42/66/16 +f 14/20/9 39/64/9 10/16/9 +f 1/9/9 16/67/9 43/68/9 +f 8/13/9 15/69/9 6/11/9 +f 1/9/9 40/70/9 14/20/9 +f 8/14/9 39/71/9 44/72/9 +f 41/73/17 46/74/17 47/75/17 +f 15/69/18 48/76/18 49/77/18 +f 16/67/19 45/78/19 43/68/19 +f 43/79/20 41/73/20 40/70/20 +f 44/72/21 42/80/21 48/81/21 +f 15/82/22 50/83/22 16/22/22 +f 53/84/9 54/85/9 47/86/9 +f 42/80/23 53/87/23 48/81/23 +f 50/83/24 52/88/24 51/89/24 +f 41/65/25 54/90/25 42/66/25 +f 48/76/26 52/91/26 49/77/26 +f 45/78/27 51/92/27 46/93/27 +f 57/94/28 60/95/28 58/96/28 +f 62/97/29 59/98/29 61/99/29 +f 59/100/30 64/101/30 65/102/30 +f 55/103/31 61/99/31 56/5/31 +f 60/104/7 67/105/7 58/106/7 +f 69/107/32 71/108/32 68/2/32 +f 67/105/33 73/109/33 72/110/33 +f 61/111/3 69/107/3 56/112/3 +f 57/113/7 71/108/7 59/114/7 +f 60/104/7 75/115/7 66/116/7 +f 55/117/3 73/109/3 62/118/3 +f 58/119/1 72/110/1 55/120/1 +f 66/116/33 75/115/33 76/121/33 +f 70/122/3 63/123/3 78/124/3 +f 62/118/3 77/125/3 79/126/3 +f 62/118/34 79/126/34 80/127/34 +f 70/122/32 78/124/32 82/128/32 +f 71/108/7 64/129/7 59/114/7 +f 56/1/1 69/107/1 68/2/1 +f 58/4/1 55/103/1 56/5/1 +f 2/7/2 3/10/2 4/8/2 +f 3/10/3 5/12/3 6/11/3 +f 5/12/4 7/17/4 8/13/4 +f 8/14/5 7/27/5 9/15/5 +f 7/17/6 5/12/6 11/18/6 +f 9/15/7 13/21/7 14/20/7 +f 13/21/8 2/7/8 1/9/8 +f 6/11/9 15/82/9 16/22/9 +f 12/23/2 18/130/2 19/24/2 +f 13/21/6 20/40/6 21/26/6 +f 7/27/6 12/23/6 17/25/6 +f 5/12/6 3/10/6 22/28/6 +f 9/15/6 17/37/6 20/30/6 +f 3/10/6 2/7/6 21/31/6 +f 23/33/6 24/58/6 25/34/6 +f 22/28/7 26/51/7 23/36/7 +f 17/37/3 19/131/3 27/38/3 +f 11/18/8 23/33/8 18/35/8 +f 21/31/5 28/45/5 26/39/5 +f 20/40/4 27/132/4 28/41/4 +f 29/42/10 30/133/10 31/43/10 +f 28/45/6 32/134/6 29/46/6 +f 28/41/6 27/132/6 33/47/6 +f 19/24/6 18/130/6 25/49/6 +f 26/51/6 29/42/6 24/44/6 +f 27/38/6 19/131/6 34/52/6 +f 31/55/6 30/135/6 35/56/6 +f 35/56/6 36/136/6 37/137/6 +f 37/137/6 38/54/6 35/56/6 +f 34/52/11 37/138/11 36/57/11 +f 24/58/12 31/139/12 38/59/12 +f 29/46/13 32/134/13 35/60/13 +f 33/47/14 36/140/14 35/62/14 +f 25/49/15 38/141/15 37/63/15 +f 39/64/16 40/142/16 41/65/16 +f 14/20/9 40/142/9 39/64/9 +f 1/9/9 4/8/9 16/67/9 +f 8/13/9 44/143/9 15/69/9 +f 1/9/9 43/79/9 40/70/9 +f 8/14/9 10/16/9 39/71/9 +f 41/73/17 45/144/17 46/74/17 +f 15/69/18 44/143/18 48/76/18 +f 16/67/19 50/145/19 45/78/19 +f 43/79/20 45/144/20 41/73/20 +f 44/72/21 39/71/21 42/80/21 +f 15/82/22 49/146/22 50/83/22 +f 47/86/9 46/147/9 53/84/9 +f 46/147/9 51/148/9 53/84/9 +f 51/148/9 52/149/9 53/84/9 +f 42/80/23 54/150/23 53/87/23 +f 50/83/24 49/146/24 52/88/24 +f 41/65/25 47/151/25 54/90/25 +f 48/76/26 53/152/26 52/91/26 +f 45/78/27 50/145/27 51/92/27 +f 57/94/28 59/98/28 60/95/28 +f 62/97/29 60/95/29 59/98/29 +f 65/102/30 63/123/30 61/111/30 +f 61/111/30 59/100/30 65/102/30 +f 55/103/31 62/97/31 61/99/31 +f 60/104/7 66/116/7 67/105/7 +f 69/107/32 70/122/32 71/108/32 +f 67/105/33 66/116/33 73/109/33 +f 61/111/3 70/122/3 69/107/3 +f 57/113/7 68/2/7 71/108/7 +f 60/104/7 74/153/7 75/115/7 +f 55/117/3 72/110/3 73/109/3 +f 58/119/1 67/105/1 72/110/1 +f 77/125/33 73/109/33 76/121/33 +f 73/109/33 66/116/33 76/121/33 +f 70/122/3 61/111/3 63/123/3 +f 62/118/3 73/109/3 77/125/3 +f 80/127/34 74/154/34 60/155/34 +f 60/155/34 62/118/34 80/127/34 +f 82/128/32 81/156/32 71/108/32 +f 71/108/32 70/122/32 82/128/32 +f 71/108/7 81/156/7 64/129/7 +o Backlight +v -1.320666 5.883319 -0.497968 +v -0.984420 5.883904 -0.491350 +v -0.987140 5.302763 -0.301741 +v -1.323386 5.302178 -0.308359 +v -0.999171 5.303525 0.309437 +v -1.335417 5.302939 0.302818 +v -1.003886 5.885137 0.497557 +v -1.340132 5.884551 0.490938 +v -0.994770 6.243831 0.002643 +v -1.331016 6.243245 -0.003975 +v 0.021235 6.075014 -0.897532 +v 0.021235 6.075014 0.897532 +v 0.288019 5.707444 0.897532 +v 0.288019 5.707444 -0.897532 +v 0.103085 5.292618 0.897532 +v 0.103085 5.292618 -0.897532 +v -0.348631 5.245362 0.897532 +v -0.348631 5.245362 -0.897532 +v -0.615414 5.612932 0.897532 +v -0.615414 5.612932 -0.897532 +v -0.430481 6.027758 0.897532 +v -0.430481 6.027758 -0.897532 +v -0.868643 2.165176 0.689521 +v -1.105512 2.543972 0.689521 +v -1.105512 2.543972 -0.689521 +v -0.868643 2.165176 -0.689521 +v 1.105512 2.543972 -0.689521 +v 0.868643 2.165176 -0.689521 +v 0.868643 2.165176 0.689521 +v 1.199654 4.481366 0.689521 +v 1.199654 4.481366 -0.689521 +v 0.857499 6.338323 -0.688818 +v 0.857499 6.338323 0.688818 +v -1.094646 5.192699 -0.689521 +v 1.105512 2.543972 0.689521 +v -1.104364 2.657593 -0.454835 +v -1.095794 5.079079 -0.454835 +v -1.094646 5.192699 0.689521 +v -1.075323 6.338323 0.688818 +v -1.075323 6.338323 -0.688818 +v 0.443011 6.780780 -0.689521 +v -0.748752 6.780780 -0.689521 +v -0.748752 6.780780 0.689521 +v 0.443011 6.780780 0.689521 +v -1.095794 5.079079 0.454835 +v -1.560949 4.983612 -0.454835 +v -1.560949 4.983612 0.454835 +v -1.104364 2.657593 0.454835 +v -1.744408 4.759537 0.454835 +v -1.751578 2.847407 0.454835 +v -1.565712 2.659905 0.454835 +v -1.565712 2.659905 -0.454835 +v -1.751578 2.847407 -0.454835 +v -1.744408 4.759537 -0.454835 +v 0.902946 2.617983 -0.365337 +v 1.624929 2.505614 -0.365337 +v 1.571494 2.162292 -0.112895 +v 0.849512 2.274660 -0.112895 +v 1.591904 2.293429 0.295564 +v 0.869922 2.405798 0.295564 +v 1.657953 2.717800 0.295564 +v 0.935971 2.830168 0.295564 +v 1.678363 2.848937 -0.112895 +v 0.956381 2.961306 -0.112895 +v 0.675515 5.594983 -0.365337 +v 1.390851 5.743908 -0.365337 +v 1.461669 5.403746 -0.112895 +v 0.746333 5.254820 -0.112895 +v 1.434619 5.533676 0.295564 +v 0.719283 5.384750 0.295564 +v 1.347083 5.954140 0.295564 +v 0.631746 5.805215 0.295564 +v 1.320033 6.084071 -0.112895 +v 0.604696 5.935145 -0.112895 +v 0.804842 4.824814 -0.365337 +v 1.529542 4.918053 -0.365337 +v 1.573880 4.573438 -0.112895 +v 0.849180 4.480198 -0.112895 +v 1.556945 4.705069 0.295564 +v 0.832244 4.611830 0.295564 +v 1.502140 5.131038 0.295564 +v 0.777439 5.037798 0.295564 +v 1.485204 5.262669 -0.112895 +v 0.760504 5.169430 -0.112895 +v 0.920711 4.059648 -0.365337 +v 1.648066 4.129222 -0.365337 +v 1.681150 3.783345 -0.112895 +v 0.953796 3.713770 -0.112895 +v 1.668513 3.915458 0.295564 +v 0.941159 3.845884 0.295564 +v 1.627618 4.342986 0.295564 +v 0.900264 4.273412 0.295564 +v 1.614981 4.475100 -0.112895 +v 0.887627 4.405526 -0.112895 +v 0.945849 3.338301 -0.365337 +v 1.676468 3.329257 -0.365337 +v 1.672167 2.981827 -0.112895 +v 0.941548 2.990872 -0.112895 +v 1.673810 3.114533 0.295564 +v 0.943191 3.123578 0.295564 +v 1.679126 3.543980 0.295564 +v 0.948508 3.553025 0.295564 +v 1.680769 3.676687 -0.112895 +v 0.950150 3.685731 -0.112895 +vt 0.734577 0.712371 +vt 0.689031 0.795268 +vt 0.706490 0.693161 +vt 0.804411 0.303943 +vt 0.758865 0.386840 +vt 0.776323 0.284733 +vt 0.786953 0.406050 +vt 0.741407 0.488948 +vt 0.752036 0.610264 +vt 0.723948 0.591054 +vt 0.704915 0.385185 +vt 0.689031 0.282055 +vt 0.633210 0.445087 +vt 0.609124 0.254698 +vt 0.633210 0.254698 +vt 0.609124 0.445087 +vt 0.585038 0.254698 +vt 0.729554 0.445087 +vt 0.705468 0.254698 +vt 0.729554 0.254698 +vt 0.705468 0.445087 +vt 0.681382 0.254698 +vt 0.729554 0.528523 +vt 0.693425 0.486805 +vt 0.681382 0.445087 +vt 0.657296 0.254698 +vt 0.657296 0.445087 +vt 0.693425 0.212980 +vt 0.705468 0.171262 +vt 0.174122 0.039077 +vt 0.146848 0.207453 +vt 0.146848 0.039077 +vt 0.137452 0.253472 +vt 0.120204 0.496470 +vt 0.115056 0.284604 +vt 0.116729 0.523112 +vt 0.010671 0.691488 +vt 0.010671 0.523112 +vt 0.262417 0.523112 +vt 0.377689 0.691402 +vt 0.262417 0.691488 +vt 0.144003 0.523112 +vt 0.144003 0.691488 +vt 0.335824 0.207453 +vt 0.181059 0.178798 +vt 0.328887 0.178799 +vt 0.335823 0.039077 +vt 0.405772 0.207367 +vt 0.298993 0.239102 +vt 0.374633 0.470381 +vt 0.487456 0.523112 +vt 0.414701 0.691488 +vt 0.414701 0.523112 +vt 0.368906 0.234669 +vt 0.400385 0.417212 +vt 0.377689 0.523198 +vt 0.405771 0.039163 +vt 0.439344 0.207453 +vt 0.120204 0.718130 +vt 0.137452 0.961127 +vt 0.115056 0.929996 +vt 0.116729 0.691488 +vt 0.374633 0.744218 +vt 0.298993 0.975498 +vt 0.400385 0.797388 +vt 0.368906 0.979930 +vt 0.347149 0.651237 +vt 0.318160 0.540170 +vt 0.347149 0.540170 +vt 0.328887 0.067731 +vt 0.174122 0.207453 +vt 0.181059 0.067731 +vt 0.300481 0.540170 +vt 0.183748 0.540170 +vt 0.172309 0.461061 +vt 0.183748 0.651237 +vt 0.300481 0.651237 +vt 0.172308 0.730346 +vt 0.167631 0.540170 +vt 0.318160 0.651237 +vt 0.139466 0.540170 +vt 0.167631 0.651237 +vt 0.139466 0.651237 +vt 0.296233 0.330392 +vt 0.392444 0.443495 +vt 0.296233 0.443495 +vt 0.392444 0.556598 +vt 0.296233 0.556598 +vt 0.296233 0.669700 +vt 0.092675 0.068302 +vt 0.075181 0.175984 +vt 0.018569 0.175984 +vt 0.392444 0.782803 +vt 0.296233 0.782803 +vt 0.296233 0.895906 +vt 0.006900 0.330392 +vt 0.103083 0.443589 +vt 0.006873 0.443495 +vt 0.006845 0.556598 +vt 0.103028 0.669794 +vt 0.006818 0.669701 +vt 0.046875 0.001750 +vt 0.092675 0.068302 +vt 0.075181 0.175984 +vt 0.006790 0.782803 +vt 0.103001 0.782897 +vt 0.006763 0.895906 +vt 0.488888 0.330392 +vt 0.392677 0.443495 +vt 0.392677 0.330393 +vt 0.488888 0.443495 +vt 0.392677 0.556598 +vt 0.488888 0.556598 +vt 0.392677 0.669700 +vt 0.046875 0.001750 +vt 0.092675 0.068302 +vt 0.075181 0.175984 +vt 0.488888 0.669700 +vt 0.392677 0.782803 +vt 0.488888 0.782803 +vt 0.392677 0.895906 +vt 0.296000 0.330393 +vt 0.199789 0.443496 +vt 0.199789 0.330392 +vt 0.295999 0.443495 +vt 0.199789 0.556598 +vt 0.295999 0.669701 +vt 0.199789 0.669701 +vt 0.046875 0.001750 +vt 0.092675 0.068302 +vt 0.075181 0.175984 +vt 0.199789 0.782803 +vt 0.296000 0.782803 +vt 0.199789 0.895906 +vt 0.103344 0.330393 +vt 0.199555 0.443495 +vt 0.103344 0.443495 +vt 0.103344 0.556598 +vt 0.199555 0.669701 +vt 0.103344 0.669701 +vt 0.046875 0.001750 +vt 0.092675 0.068302 +vt 0.075181 0.175984 +vt 0.199555 0.782803 +vt 0.103344 0.782803 +vt 0.199555 0.895906 +vt 0.103344 0.895906 +vt 0.717118 0.814478 +vt 0.769494 0.508157 +vt 0.733164 0.219973 +vt 0.585038 0.445087 +vt 0.741597 0.486805 +vt 0.705468 0.528523 +vt 0.729554 0.171262 +vt 0.741597 0.212980 +vt 0.487456 0.691488 +vt 0.396853 0.271873 +vt 0.439343 0.039077 +vt 0.396853 0.942726 +vt 0.172344 0.517391 +vt 0.320137 0.461124 +vt 0.314202 0.517873 +vt 0.314202 0.673534 +vt 0.320137 0.730284 +vt 0.172344 0.674016 +vt 0.392444 0.330393 +vt 0.392444 0.669700 +vt 0.001075 0.068302 +vt 0.046875 0.001750 +vt 0.392444 0.895906 +vt 0.103111 0.330486 +vt 0.103056 0.556692 +vt 0.018569 0.175984 +vt 0.001075 0.068302 +vt 0.102974 0.895999 +vt 0.018569 0.175984 +vt 0.001075 0.068302 +vt 0.488888 0.895906 +vt 0.296000 0.556598 +vt 0.018569 0.175984 +vt 0.001075 0.068302 +vt 0.296000 0.895906 +vt 0.199555 0.330392 +vt 0.199555 0.556598 +vt 0.018569 0.175984 +vt 0.001075 0.068302 +vn 0.0192 -0.3102 -0.9505 +vn 0.0017 -1.0000 0.0013 +vn -0.0182 -0.3078 0.9513 +vn -0.0130 0.8097 0.5866 +vn 0.0102 0.8083 -0.5887 +vn -0.9998 -0.0017 -0.0197 +vn 0.8093 0.5874 0.0000 +vn 0.9133 -0.4072 0.0000 +vn 0.1040 -0.9946 0.0000 +vn -0.8093 -0.5874 0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.9133 0.4072 0.0000 +vn -0.1040 0.9946 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.8477 -0.5305 -0.0013 +vn -0.8479 -0.5302 0.0000 +vn 0.0012 -0.0007 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.9834 0.1812 0.0000 +vn 0.9835 0.1807 -0.0002 +vn 0.0012 0.0005 -1.0000 +vn 0.9988 -0.0485 0.0000 +vn -1.0000 0.0003 -0.0029 +vn -1.0000 0.0051 -0.0032 +vn -1.0000 0.0044 -0.0018 +vn -0.9998 0.0177 -0.0031 +vn -0.9999 0.0164 0.0002 +vn -0.9999 0.0169 0.0032 +vn 0.0029 0.0020 -1.0000 +vn 0.0002 -0.0001 -1.0000 +vn 0.0001 0.0004 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0005 -0.0015 -1.0000 +vn 0.0000 -0.0016 -1.0000 +vn -0.0005 -0.0016 -1.0000 +vn 0.7297 0.6838 0.0005 +vn 0.7298 0.6837 0.0000 +vn 0.7296 0.6839 -0.0004 +vn -0.8045 0.5940 -0.0004 +vn -0.8046 0.5938 0.0000 +vn -0.8044 0.5941 0.0004 +vn 0.0007 -0.0011 1.0000 +vn 0.8479 -0.5302 0.0000 +vn 0.0013 -0.0000 1.0000 +vn -0.0001 -0.0001 1.0000 +vn 0.0033 0.0010 1.0000 +vn 0.0001 0.0004 1.0000 +vn 0.0000 -0.0016 1.0000 +vn 0.0005 -0.0016 1.0000 +vn -0.0005 -0.0014 1.0000 +vn -0.2007 0.9797 -0.0015 +vn -0.2010 0.9796 0.0000 +vn -0.2010 0.9796 -0.0016 +vn -0.9999 0.0098 0.0032 +vn -0.9999 0.0108 0.0014 +vn -1.0000 0.0092 -0.0031 +vn -0.9999 0.0102 -0.0013 +vn -1.0000 0.0086 -0.0004 +vn -0.9999 0.0103 0.0013 +vn -1.0000 0.0009 -0.0030 +vn -1.0000 0.0039 -0.0014 +vn -1.0000 0.0054 -0.0029 +vn -0.0007 0.0014 1.0000 +vn -0.0013 0.0009 -1.0000 +vn -1.0000 0.0037 0.0000 +vn -0.7102 -0.7040 0.0000 +vn -0.7737 0.6335 0.0000 +vn -0.0056 -1.0000 -0.0014 +vn -0.0050 -1.0000 0.0000 +vn -0.0058 -1.0000 0.0013 +vn -0.0904 -0.5808 -0.8090 +vn -0.1463 -0.9397 0.3090 +vn 0.9881 -0.1538 -0.0000 +vn 0.1463 0.9397 0.3090 +vn 0.0904 0.5808 -0.8090 +vn 0.1198 -0.5754 -0.8090 +vn 0.1938 -0.9311 0.3090 +vn 0.9790 0.2038 0.0000 +vn -0.1938 0.9311 0.3090 +vn -0.1198 0.5754 -0.8090 +vn 0.0750 -0.5830 -0.8090 +vn 0.1214 -0.9433 0.3090 +vn 0.9918 0.1276 -0.0000 +vn -0.1214 0.9433 0.3090 +vn -0.0750 0.5830 -0.8090 +vn 0.0560 -0.5851 -0.8090 +vn 0.0906 -0.9467 0.3090 +vn 0.9955 0.0952 0.0000 +vn -0.0906 0.9467 0.3090 +vn -0.0560 0.5851 -0.8090 +vn -0.0073 -0.5877 -0.8090 +vn -0.0118 -0.9510 0.3090 +vn 0.9999 -0.0124 0.0000 +vn 0.0118 0.9510 0.3090 +vn 0.0073 0.5877 -0.8090 +vn -0.8479 -0.5302 -0.0013 +vn -0.8473 -0.5311 0.0008 +vn 0.0013 -0.0001 -1.0000 +vn 0.9835 0.1812 0.0005 +vn 0.9835 0.1810 -0.0005 +vn 0.0005 0.0013 -1.0000 +vn 0.0031 -0.0010 -1.0000 +vn -1.0000 0.0009 0.0029 +vn -1.0000 0.0052 0.0037 +vn -1.0000 0.0052 0.0019 +vn -0.9998 0.0196 -0.0016 +vn -0.9999 0.0169 -0.0005 +vn -0.9999 0.0167 0.0005 +vn 0.0001 0.0038 -1.0000 +vn 0.0004 0.0002 -1.0000 +vn -0.0005 0.0004 -1.0000 +vn 0.0004 -0.0013 -1.0000 +vn 0.7294 0.6840 0.0000 +vn -0.8043 0.5942 -0.0000 +vn 0.0013 -0.0003 1.0000 +vn 0.0022 -0.0023 1.0000 +vn 0.0010 0.0009 1.0000 +vn -0.0005 0.0005 1.0000 +vn -0.0000 0.0001 1.0000 +vn 0.0013 0.0035 1.0000 +vn 0.0005 -0.0015 1.0000 +vn -0.1997 0.9799 -0.0008 +vn -1.0000 0.0087 0.0029 +vn -0.9999 0.0103 -0.0016 +vn -0.9999 0.0107 -0.0012 +vn -1.0000 0.0094 -0.0014 +vn -0.9999 0.0100 0.0015 +vn -1.0000 0.0007 0.0016 +vn -1.0000 0.0020 0.0032 +vn -1.0000 0.0051 0.0033 +vn -0.0015 0.0004 1.0000 +vn -0.0001 0.0015 1.0000 +vn -0.0014 -0.0007 1.0000 +vn -0.0015 -0.0003 1.0000 +vn 0.0015 0.0005 -1.0000 +vn 0.0008 0.0013 -1.0000 +vn -0.0003 0.0015 -1.0000 +vn -0.0015 0.0002 -1.0000 +vn -0.0065 -1.0000 -0.0003 +s off +f 84/157/35 86/158/35 83/159/35 +f 85/160/36 88/161/36 86/162/36 +f 87/163/37 90/164/37 88/161/37 +f 90/164/38 91/165/38 92/166/38 +f 91/165/39 83/159/39 92/166/39 +f 86/162/40 90/167/40 92/168/40 +f 94/169/41 96/170/41 93/171/41 +f 95/172/42 98/173/42 96/170/42 +f 97/174/43 100/175/43 98/176/43 +f 99/177/44 102/178/44 100/175/44 +f 94/179/45 101/180/45 97/174/45 +f 101/181/46 104/182/46 102/178/46 +f 103/183/47 93/171/47 104/182/47 +f 100/175/48 102/184/48 104/185/48 +f 106/186/49 108/187/50 105/188/50 +f 107/189/51 110/190/48 108/191/48 +f 110/192/52 105/193/52 108/194/52 +f 113/195/53 115/196/54 112/197/53 +f 107/189/55 113/195/48 109/198/48 +f 109/198/56 112/197/56 117/199/56 +f 116/200/57 118/201/58 119/202/59 +f 120/203/60 122/204/61 116/200/62 +f 116/205/63 114/206/64 113/195/65 +f 124/207/66 126/208/66 123/209/66 +f 122/210/67 123/211/68 114/206/69 +f 114/212/70 126/208/71 115/196/72 +f 121/213/73 124/214/74 122/204/75 +f 111/215/45 106/216/76 105/217/45 +f 110/192/77 117/199/77 111/218/77 +f 112/197/45 106/216/78 117/199/45 +f 115/219/79 120/220/80 112/197/81 +f 126/221/82 121/222/83 115/219/84 +f 119/223/85 129/224/86 127/225/87 +f 116/200/88 127/226/89 120/203/90 +f 106/186/91 118/201/92 107/227/93 +f 120/203/94 130/228/95 106/186/96 +f 131/229/45 132/230/45 130/231/97 +f 135/232/48 136/233/48 118/234/98 +f 132/230/99 136/233/99 135/232/99 +f 135/232/100 133/235/100 132/230/100 +f 128/236/101 131/229/101 129/224/101 +f 130/237/102 134/238/103 118/239/104 +f 137/240/105 139/241/105 140/242/105 +f 140/242/106 141/243/106 142/244/106 +f 141/243/45 144/245/45 142/244/45 +f 145/246/107 143/247/107 141/248/107 +f 144/245/108 145/249/108 146/250/108 +f 145/249/109 137/251/109 146/250/109 +f 147/252/110 149/253/110 150/254/110 +f 149/253/111 152/255/111 150/254/111 +f 152/255/45 153/256/45 154/257/45 +f 148/258/112 155/259/112 153/260/112 +f 153/256/113 156/261/113 154/257/113 +f 155/262/114 147/263/114 156/261/114 +f 158/264/115 160/265/115 157/266/115 +f 159/267/116 162/268/116 160/265/116 +f 161/269/45 164/270/45 162/268/45 +f 158/271/117 165/272/117 163/273/117 +f 163/274/118 166/275/118 164/270/118 +f 165/276/119 157/277/119 166/275/119 +f 168/278/120 170/279/120 167/280/120 +f 169/281/121 172/282/121 170/279/121 +f 172/282/45 173/283/45 174/284/45 +f 168/285/122 175/286/122 173/287/122 +f 173/283/123 176/288/123 174/284/123 +f 175/289/124 167/290/124 176/288/124 +f 177/291/125 179/292/125 180/293/125 +f 179/292/126 182/294/126 180/293/126 +f 182/294/45 183/295/45 184/296/45 +f 178/297/127 185/298/127 183/299/127 +f 184/296/128 185/300/128 186/301/128 +f 186/301/129 178/302/129 177/303/129 +f 84/157/35 85/304/35 86/158/35 +f 85/160/36 87/163/36 88/161/36 +f 87/163/37 89/305/37 90/164/37 +f 90/164/38 89/305/38 91/165/38 +f 91/165/39 84/157/39 83/159/39 +f 92/168/40 83/306/40 86/162/40 +f 86/162/40 88/161/40 90/167/40 +f 94/169/41 95/172/41 96/170/41 +f 95/172/42 97/307/42 98/173/42 +f 97/174/43 99/177/43 100/175/43 +f 99/177/44 101/181/44 102/178/44 +f 97/174/45 95/308/45 94/179/45 +f 94/179/45 103/309/45 101/180/45 +f 101/180/45 99/177/45 97/174/45 +f 101/181/46 103/183/46 104/182/46 +f 103/183/47 94/169/47 93/171/47 +f 104/185/48 93/310/48 96/311/48 +f 96/311/48 98/176/48 104/185/48 +f 98/176/48 100/175/48 104/185/48 +f 106/186/130 107/227/131 108/187/50 +f 107/189/132 109/198/48 110/190/48 +f 110/192/52 111/218/52 105/193/52 +f 113/195/53 114/212/133 115/196/134 +f 107/189/135 116/205/136 113/195/48 +f 109/198/56 113/195/56 112/197/56 +f 116/200/137 107/227/138 118/201/139 +f 120/203/140 121/213/141 122/204/142 +f 116/205/143 122/210/144 114/206/145 +f 124/207/66 125/312/66 126/208/66 +f 122/210/146 124/313/68 123/211/68 +f 114/212/147 123/209/71 126/208/71 +f 121/213/148 125/314/74 124/214/74 +f 111/215/45 117/199/45 106/216/149 +f 110/192/77 109/198/77 117/199/77 +f 112/197/45 120/220/150 106/216/151 +f 115/219/152 121/222/153 120/220/154 +f 126/221/82 125/315/82 121/222/155 +f 119/223/156 128/236/86 129/224/86 +f 116/200/157 119/202/92 127/226/158 +f 106/186/159 130/228/160 118/201/161 +f 120/203/162 127/226/163 130/228/164 +f 133/316/45 130/231/165 132/230/45 +f 130/231/166 127/317/167 131/229/45 +f 127/317/168 129/318/45 131/229/45 +f 128/319/48 119/320/169 136/233/48 +f 119/320/170 118/234/171 136/233/48 +f 118/234/172 134/321/48 135/232/48 +f 132/230/99 131/229/99 136/233/99 +f 135/232/100 134/238/100 133/235/100 +f 128/236/101 136/233/101 131/229/101 +f 130/237/173 133/235/103 134/238/103 +f 137/240/105 138/322/105 139/241/105 +f 140/242/106 139/241/106 141/243/106 +f 141/243/45 143/323/45 144/245/45 +f 141/248/107 139/324/107 138/325/107 +f 138/325/107 145/246/107 141/248/107 +f 144/245/108 143/323/108 145/249/108 +f 145/249/109 138/326/109 137/251/109 +f 147/252/110 148/327/110 149/253/110 +f 149/253/111 151/328/111 152/255/111 +f 152/255/45 151/328/45 153/256/45 +f 151/329/112 149/330/112 153/260/112 +f 149/330/112 148/258/112 153/260/112 +f 153/256/113 155/262/113 156/261/113 +f 155/262/114 148/331/114 147/263/114 +f 158/264/115 159/267/115 160/265/115 +f 159/267/116 161/269/116 162/268/116 +f 161/269/45 163/274/45 164/270/45 +f 161/332/117 159/333/117 163/273/117 +f 159/333/117 158/271/117 163/273/117 +f 163/274/118 165/276/118 166/275/118 +f 165/276/119 158/334/119 157/277/119 +f 168/278/120 169/281/120 170/279/120 +f 169/281/121 171/335/121 172/282/121 +f 172/282/45 171/335/45 173/283/45 +f 171/336/122 169/337/122 173/287/122 +f 169/337/122 168/285/122 173/287/122 +f 173/283/123 175/289/123 176/288/123 +f 175/289/124 168/338/124 167/290/124 +f 177/291/125 178/339/125 179/292/125 +f 179/292/126 181/340/126 182/294/126 +f 182/294/45 181/340/45 183/295/45 +f 181/341/127 179/342/127 183/299/127 +f 179/342/127 178/297/127 183/299/127 +f 184/296/128 183/295/128 185/300/128 +f 186/301/129 185/300/129 178/302/129 +o Based +v -0.476324 0.117178 -1.155649 +v -0.476324 0.976271 -1.155649 +v 0.480355 0.976271 -1.153979 +v 0.480355 0.117178 -1.153979 +v 1.155649 0.976271 -0.476324 +v 1.155649 0.117178 -0.476324 +v 1.153979 0.976271 0.480355 +v 1.153979 0.117178 0.480355 +v 0.476324 0.976271 1.155649 +v 0.476324 0.117178 1.155649 +v -0.480355 0.976271 1.153980 +v -0.480355 0.117178 1.153980 +v -1.155649 0.976271 0.476324 +v -1.155649 0.117178 0.476324 +v 0.795350 1.043438 0.331072 +v 0.328294 1.043438 0.796501 +v -1.153980 0.976271 -0.480355 +v -1.153980 0.117178 -0.480355 +v 0.360808 0.117178 0.875387 +v 0.874122 0.117178 0.363862 +v -0.328294 1.043438 -0.796501 +v -0.795350 1.043438 -0.331072 +v -1.093998 1.088246 -0.455387 +v -0.451566 1.088246 -1.095581 +v -0.796501 1.043438 0.328294 +v 0.331072 1.043438 -0.795350 +v 0.796501 1.043438 -0.328294 +v -0.331072 1.043438 0.795350 +v 0.451566 1.088246 1.095581 +v 1.093998 1.088246 0.455387 +v 1.093998 1.310994 0.455387 +v 0.451566 1.310995 1.095581 +v -0.455387 1.088246 1.093998 +v -1.095581 1.088246 0.451566 +v 0.455387 1.088246 -1.093998 +v 1.095581 1.088246 -0.451566 +v -0.451566 1.310994 -1.095581 +v -1.093998 1.310994 -0.455387 +v -0.668254 1.435045 -0.278167 +v -0.275833 1.435045 -0.669221 +v 0.455387 1.310994 -1.093998 +v 1.095581 1.310994 -0.451566 +v -1.095581 1.310994 0.451566 +v -0.455387 1.310995 1.093998 +v -0.278167 1.435045 0.668254 +v 0.275833 1.435045 0.669221 +v 0.436165 1.536411 1.058215 +v -0.439856 1.536411 1.056686 +v -0.669221 1.435045 0.275833 +v 0.668254 1.435045 0.278168 +v 0.278167 1.435045 -0.668254 +v 0.669221 1.435045 -0.275833 +v 1.056686 1.536411 0.439856 +v 1.058215 1.536411 -0.436165 +v 1.058215 1.707899 -0.436165 +v 1.056686 1.707899 0.439856 +v -0.436165 1.536411 -1.058215 +v 0.439856 1.536411 -1.056686 +v -1.056686 1.536411 -0.439856 +v -1.058215 1.536411 0.436165 +v -1.056686 1.707899 -0.439856 +v -1.058215 1.707899 0.436165 +v -0.741679 1.821139 0.305698 +v -0.740608 1.821139 -0.308285 +v -0.436165 1.707899 -1.058215 +v 0.439856 1.707899 -1.056686 +v -0.439856 1.707899 1.056686 +v 0.436165 1.707899 1.058215 +v 0.308285 1.821139 -0.740607 +v 0.305698 1.821139 0.741679 +v 0.740607 1.821139 0.308285 +v 0.741679 1.821139 -0.305698 +v -0.308285 1.821139 0.740608 +v -0.305698 1.821139 -0.741679 +v -0.598298 -0.513317 0.246601 +v -0.597434 -0.513317 -0.248688 +v -0.597434 -1.343910 -0.248688 +v -0.598298 -1.343910 0.246601 +v -0.874122 0.117178 -0.363862 +v -0.875387 0.117178 0.360808 +v 0.875387 0.117178 -0.360808 +v 0.363862 0.117178 -0.874122 +v -0.363862 0.117178 0.874122 +v -0.360808 0.117178 -0.875387 +v -0.248688 -1.343910 0.597434 +v -0.975065 -1.373442 0.401893 +v -0.260556 -1.373442 0.625947 +v 0.246601 -0.513317 0.598298 +v -0.248688 -0.513317 0.597434 +v 0.246601 -1.343910 0.598298 +v 0.598298 -0.513317 -0.246601 +v 0.597434 -0.513317 0.248688 +v 0.597434 -1.343910 0.248688 +v 0.598298 -1.343910 -0.246601 +v -0.246601 -0.513317 -0.598298 +v 0.248688 -0.513317 -0.597434 +v 0.248688 -1.343910 -0.597434 +v -0.246601 -1.343910 -0.598298 +v -0.401893 -1.373442 -0.975065 +v 0.260556 -1.373442 -0.625947 +v 0.026543 -3.162143 -0.063765 +v -0.026320 -3.162143 -0.063857 +v 0.401893 -1.373442 0.975065 +v 0.625947 -1.373442 0.260556 +v 0.975065 -1.373442 -0.401893 +v -0.625947 -1.373442 -0.260556 +v -0.063765 -3.162143 -0.026543 +v 0.063857 -3.162143 -0.026320 +v 0.063765 -3.162143 0.026543 +v 0.026320 -3.162143 0.063857 +v -0.026543 -3.162143 0.063765 +v -0.063857 -3.162143 0.026320 +v 0.875387 -0.493910 -0.360808 +v 0.363862 -0.493910 -0.874122 +v 0.360808 -0.493910 0.875387 +v 0.874122 -0.493910 0.363862 +v -0.875387 -0.493910 0.360808 +v -0.363862 -0.493910 0.874122 +v -0.360808 -0.493910 -0.875387 +v -0.874122 -0.493910 -0.363862 +vt 0.872281 0.534636 +vt 0.822605 0.440198 +vt 0.875179 0.442976 +vt 0.820879 0.535179 +vt 0.768775 0.440298 +vt 0.767922 0.537229 +vt 0.714298 0.442725 +vt 0.714505 0.541417 +vt 0.658847 0.447191 +vt 0.660811 0.548715 +vt 0.600787 0.455120 +vt 0.606527 0.561669 +vt 0.537111 0.472517 +vt 0.661796 0.599848 +vt 0.969815 0.546227 +vt 0.925836 0.449611 +vt 0.974197 0.459371 +vt 0.921409 0.536355 +vt 0.706920 0.410802 +vt 0.870965 0.582319 +vt 0.918532 0.621801 +vt 0.869895 0.625279 +vt 0.919468 0.579715 +vt 0.767151 0.587629 +vt 0.609953 0.614303 +vt 0.819840 0.584762 +vt 0.714307 0.592268 +vt 0.546180 0.587418 +vt 0.609488 0.614399 +vt 0.561893 0.633359 +vt 0.713660 0.637878 +vt 0.663905 0.672730 +vt 0.662170 0.645110 +vt 0.556909 0.669718 +vt 0.819372 0.584716 +vt 0.766099 0.632876 +vt 0.961927 0.579016 +vt 0.661318 0.599870 +vt 0.611495 0.657113 +vt 0.766676 0.587587 +vt 0.870515 0.582267 +vt 0.818794 0.629251 +vt 0.919502 0.647338 +vt 0.870564 0.722266 +vt 0.870950 0.652394 +vt 0.767039 0.661357 +vt 0.970789 0.617301 +vt 0.613830 0.683727 +vt 0.714777 0.666196 +vt 0.819852 0.657475 +vt 0.558526 0.700429 +vt 0.663565 0.740854 +vt 0.614306 0.808200 +vt 0.616028 0.750600 +vt 0.574708 0.758346 +vt 0.714777 0.731739 +vt 0.664222 0.740881 +vt 0.767606 0.738395 +vt 0.962072 0.696043 +vt 0.919547 0.710030 +vt 0.766904 0.738360 +vt 0.715448 0.731786 +vt 0.869882 0.722252 +vt 0.819198 0.730314 +vt 0.765363 0.804002 +vt 0.712805 0.821896 +vt 0.712657 0.800660 +vt 0.818059 0.798447 +vt 0.922396 0.776157 +vt 0.870630 0.789375 +vt 0.565344 0.801835 +vt 0.662868 0.804960 +vt 0.980256 0.749479 +vt 0.982717 0.772283 +vt 0.938005 0.838340 +vt 0.924472 0.797426 +vt 0.818967 0.820347 +vt 0.871953 0.811076 +vt 0.564639 0.823456 +vt 0.663355 0.825332 +vt 0.765636 0.825797 +vt 0.614358 0.828508 +vt 0.869617 0.140202 +vt 0.858526 0.118021 +vt 0.858526 0.086653 +vt 0.622295 0.865615 +vt 0.756986 0.865737 +vt 0.719958 0.863003 +vt 0.865806 0.853105 +vt 0.828669 0.859602 +vt 0.919235 0.839751 +vt 0.882425 0.849319 +vt 0.571106 0.862348 +vt 0.671410 0.862747 +vt 0.774657 0.865888 +vt 0.943459 0.333805 +vt 0.972733 0.254883 +vt 0.968497 0.338857 +vt 0.969761 0.429873 +vt 0.816063 0.408694 +vt 0.650647 0.414159 +vt 0.920664 0.419148 +vt 0.869210 0.411858 +vt 0.761814 0.408697 +vt 0.590519 0.419948 +vt 0.715887 0.601468 +vt 0.699719 0.537434 +vt 0.702832 0.537392 +vt 0.609944 0.311349 +vt 0.636562 0.206427 +vt 0.640004 0.307244 +vt 0.725952 0.309036 +vt 0.753103 0.213184 +vt 0.754156 0.307779 +vt 0.836980 0.312416 +vt 0.865404 0.222565 +vt 0.864198 0.313854 +vt 0.891447 0.320806 +vt 0.920554 0.236280 +vt 0.917673 0.324242 +vt 0.541839 0.312744 +vt 0.567253 0.193170 +vt 0.574805 0.303737 +vt 0.669491 0.310634 +vt 0.696260 0.212038 +vt 0.698198 0.308322 +vt 0.781694 0.308754 +vt 0.809519 0.215232 +vt 0.809563 0.308702 +vt 0.797002 0.537432 +vt 0.928156 0.546644 +vt 0.799286 0.639227 +vt 0.715423 0.471720 +vt 0.748360 0.440271 +vt 0.748360 0.446543 +vt 0.781298 0.471719 +vt 0.793889 0.537390 +vt 0.748361 0.632265 +vt 0.697436 0.639229 +vt 0.696489 0.433976 +vt 0.800231 0.433973 +vt 0.780835 0.601467 +vt 0.748361 0.626098 +vt 0.826511 0.104116 +vt 0.820289 0.109271 +vt 0.817711 0.096826 +vt 0.751735 0.893085 +vt 0.748362 0.892239 +vt 0.568565 0.546652 +vt 0.568958 0.539856 +vt 0.744926 0.174843 +vt 0.748359 0.175704 +vt 0.928221 0.533067 +vt 0.927763 0.539848 +vt 0.744990 0.893085 +vt 0.568500 0.533075 +vt 0.751791 0.174843 +vt 0.775288 0.408770 +vt 0.816031 0.339926 +vt 0.664918 0.414184 +vt 0.705494 0.339963 +vt 0.542285 0.433126 +vt 0.584963 0.338601 +vt 0.882292 0.414121 +vt 0.922784 0.354432 +vt 0.829386 0.409754 +vt 0.870098 0.344694 +vt 0.720548 0.410535 +vt 0.761039 0.339101 +vt 0.606666 0.420165 +vt 0.648114 0.339985 +vt 0.933129 0.422480 +vt 0.972879 0.368090 +vt 0.713828 0.592247 +vt 0.919042 0.579655 +vt 0.918905 0.710085 +vt 0.970969 0.646088 +vt 0.615414 0.750609 +vt 0.818497 0.730271 +vt 0.978827 0.820718 +vt 0.869617 0.064471 +vt 0.885301 0.064472 +vt 0.896391 0.086653 +vt 0.896391 0.118021 +vt 0.885301 0.140202 +vt 0.656636 0.863389 +vt 0.605953 0.865889 +vt 0.706068 0.860339 +vt 0.812036 0.862068 +vt 0.947696 0.249830 +vt 0.606502 0.210532 +vt 0.724899 0.214440 +vt 0.838185 0.221126 +vt 0.894328 0.232845 +vt 0.534287 0.202177 +vt 0.667552 0.214350 +vt 0.781651 0.215285 +vt 0.820289 0.091671 +vt 0.823934 0.091671 +vt 0.826511 0.096826 +vt 0.823934 0.109271 +vt 0.817711 0.104116 +vt 0.775256 0.340002 +vt 0.663491 0.343346 +vt 0.536729 0.351779 +vt 0.884412 0.349406 +vt 0.830274 0.342590 +vt 0.719773 0.340939 +vt 0.604134 0.345991 +vt 0.936246 0.360697 +vn 0.0017 0.0000 -1.0000 +vn 0.7083 0.0000 -0.7059 +vn 1.0000 0.0000 0.0017 +vn 0.7059 -0.0000 0.7083 +vn -0.0017 0.0000 1.0000 +vn -0.7083 0.0000 0.7059 +vn 0.1299 0.9829 0.1303 +vn -1.0000 0.0000 -0.0017 +vn -0.7059 0.0000 -0.7083 +vn -0.0000 -1.0000 0.0000 +vn -0.1047 -0.9889 -0.1050 +vn -0.1840 0.9829 -0.0003 +vn 0.1303 0.9829 -0.1299 +vn -0.0003 0.9829 0.1840 +vn -0.1299 0.9829 -0.1303 +vn 0.0003 0.9829 -0.1840 +vn 0.1840 0.9829 0.0003 +vn -0.1303 0.9829 0.1299 +vn -0.1050 -0.9889 0.1047 +vn 0.1047 -0.9889 0.1050 +vn 0.1050 -0.9889 -0.1047 +vn -0.1483 -0.9889 -0.0003 +vn -0.0003 -0.9889 0.1483 +vn 0.1483 -0.9889 0.0003 +vn 0.0003 -0.9889 -0.1483 +vn -0.1973 0.9601 -0.1980 +vn -0.0004 -0.9676 0.2523 +vn -0.1980 0.9601 0.1973 +vn 0.1973 0.9601 0.1980 +vn 0.1980 0.9601 -0.1973 +vn -0.2796 0.9601 -0.0005 +vn -0.0005 0.9601 0.2796 +vn 0.2796 0.9601 0.0005 +vn 0.0005 0.9601 -0.2796 +vn 0.2523 -0.9676 0.0004 +vn 0.0004 -0.9676 -0.2523 +vn -0.1781 -0.9676 -0.1787 +vn -0.1787 -0.9676 0.1781 +vn 0.1781 -0.9676 0.1787 +vn 0.1787 -0.9676 -0.1781 +vn -0.2523 -0.9676 -0.0004 +vn -0.3371 0.9415 -0.0006 +vn 0.0000 1.0000 0.0000 +vn -0.0006 0.9415 0.3371 +vn 0.3371 0.9415 0.0006 +vn 0.0006 0.9415 -0.3371 +vn -0.2379 0.9415 -0.2388 +vn -0.2388 0.9415 0.2379 +vn 0.2379 0.9415 0.2388 +vn 0.2388 0.9415 -0.2379 +vn -0.5094 0.6948 0.5076 +vn 0.4397 -0.3327 -0.8343 +vn 0.5076 0.6948 0.5094 +vn 0.5094 0.6948 -0.5076 +vn -0.0995 0.9937 -0.0524 +vn -0.0524 0.9937 0.0995 +vn 0.0995 0.9937 0.0524 +vn 0.0524 0.9937 -0.0995 +vn -0.5076 0.6948 -0.5094 +vn -0.6733 -0.3000 -0.6757 +vn -0.6757 -0.3000 0.6733 +vn 0.6733 -0.3000 0.6757 +vn 0.6757 -0.3000 -0.6733 +vn -0.8343 -0.3327 -0.4397 +vn -0.4397 -0.3327 0.8343 +vn 0.8343 -0.3327 0.4397 +vn 0.0495 -0.9976 -0.0494 +vn 0.0494 -0.9976 0.0495 +vn -0.0495 -0.9976 0.0494 +vn -0.0494 -0.9976 -0.0495 +vn 0.0001 -0.9976 -0.0699 +vn 0.0699 -0.9976 0.0001 +vn -0.0001 -0.9976 0.0699 +vn -0.0699 -0.9976 -0.0001 +vn -0.0337 0.9937 0.1073 +vn 0.0017 -0.3000 -0.9539 +vn 0.1073 0.9937 0.0337 +vn 0.0337 0.9937 -0.1073 +vn -0.7192 0.6948 -0.0013 +vn -0.0013 0.6948 0.7192 +vn 0.7192 0.6948 0.0013 +vn 0.0013 0.6948 -0.7192 +vn -0.1073 0.9937 -0.0337 +vn -0.8998 -0.3327 -0.2822 +vn -0.2822 -0.3327 0.8998 +vn 0.8998 -0.3327 0.2822 +vn 0.2822 -0.3327 -0.8998 +vn -0.9539 -0.3000 -0.0017 +vn -0.0017 -0.3000 0.9539 +vn 0.9539 -0.3000 0.0017 +s off +f 188/343/174 190/344/174 187/345/174 +f 189/346/175 192/347/175 190/344/175 +f 191/348/176 194/349/176 192/347/176 +f 193/350/177 196/351/177 194/349/177 +f 195/352/178 198/353/178 196/351/178 +f 197/354/179 200/355/179 198/353/179 +f 193/350/180 202/356/180 195/352/180 +f 199/357/181 204/358/181 200/359/181 +f 203/360/182 187/345/182 204/358/182 +f 196/351/183 206/361/183 194/349/183 +f 207/362/184 209/363/184 210/364/184 +f 199/357/185 208/365/185 203/360/185 +f 189/346/186 213/366/186 191/348/186 +f 195/352/187 214/367/187 197/354/187 +f 203/360/188 207/362/188 188/343/188 +f 188/343/189 212/368/189 189/346/189 +f 191/348/190 201/369/190 193/350/190 +f 199/370/191 214/371/191 211/372/191 +f 216/373/177 218/374/177 215/375/177 +f 214/371/192 220/376/192 211/372/192 +f 202/356/193 216/373/193 215/375/193 +f 212/377/194 222/378/194 213/366/194 +f 211/379/195 209/363/195 208/365/195 +f 202/380/196 219/381/196 214/367/196 +f 213/382/197 216/373/197 201/369/197 +f 207/383/198 221/384/198 212/368/198 +f 224/385/199 226/386/199 223/387/199 +f 221/384/175 228/388/175 222/378/175 +f 220/389/181 224/385/181 209/363/181 +f 215/375/178 230/390/178 219/381/178 +f 222/378/176 217/391/176 216/373/176 +f 210/364/174 227/392/174 221/384/174 +f 209/363/182 223/387/182 210/364/182 +f 219/381/179 229/393/179 220/376/179 +f 232/394/200 234/395/200 231/396/200 +f 230/390/201 235/397/201 229/393/201 +f 218/374/202 236/398/202 232/399/202 +f 227/392/203 238/400/203 228/388/203 +f 224/385/204 235/401/204 225/402/204 +f 218/374/205 231/396/205 230/390/205 +f 217/391/206 238/403/206 236/404/206 +f 227/392/207 226/405/207 237/406/207 +f 240/407/176 242/408/176 239/409/176 +f 238/403/208 239/409/208 236/404/208 +f 226/405/209 244/410/209 237/406/209 +f 226/386/210 245/411/210 243/412/210 +f 235/397/211 234/395/211 246/413/211 +f 236/398/212 233/414/212 232/399/212 +f 238/400/213 244/410/213 240/407/213 +f 225/402/214 246/415/214 245/411/214 +f 248/416/215 250/417/215 247/418/215 +f 243/412/174 252/419/174 244/410/174 +f 245/411/182 251/420/182 243/412/182 +f 234/395/179 248/421/179 246/413/179 +f 239/409/177 254/422/177 233/414/177 +f 244/410/175 241/423/175 240/407/175 +f 246/415/181 247/418/181 245/411/181 +f 233/414/178 253/424/178 234/395/178 +f 260/425/216 250/426/216 249/427/216 +f 254/422/217 259/428/217 253/424/217 +f 242/408/218 258/429/218 257/430/218 +f 252/419/219 260/431/219 255/432/219 +f 251/420/220 250/433/220 260/434/220 +f 253/424/221 249/435/221 248/421/221 +f 242/408/222 256/436/222 254/422/222 +f 252/419/223 258/437/223 241/423/223 +f 262/438/181 264/439/181 261/440/181 +f 204/358/183 266/441/183 200/359/183 +f 192/347/183 268/442/183 190/344/183 +f 198/353/183 205/443/183 196/351/183 +f 187/345/183 265/444/183 204/358/183 +f 190/344/183 270/445/183 187/345/183 +f 194/349/183 267/446/183 192/347/183 +f 200/355/183 269/447/183 198/353/183 +f 264/448/224 273/449/224 271/450/224 +f 275/451/178 276/452/178 274/453/178 +f 278/454/176 280/455/176 277/456/176 +f 282/457/174 284/458/174 281/459/174 +f 281/460/182 263/461/182 262/462/182 +f 261/463/179 271/464/179 275/465/179 +f 274/466/177 279/467/177 278/468/177 +f 277/469/175 283/470/175 282/471/175 +f 286/472/225 288/473/225 285/474/225 +f 276/475/226 290/476/226 279/477/226 +f 280/478/227 286/472/227 283/479/227 +f 264/448/228 292/480/228 272/481/228 +f 276/475/229 273/449/229 289/482/229 +f 280/478/230 290/476/230 291/483/230 +f 284/484/231 286/472/231 285/474/231 +f 284/484/232 292/480/232 263/485/232 +f 294/486/183 296/487/183 298/488/183 +f 292/480/233 288/489/233 293/490/233 +f 273/449/234 298/491/234 297/492/234 +f 290/476/235 296/493/235 295/494/235 +f 286/472/236 294/495/236 287/496/236 +f 292/480/237 298/497/237 272/481/237 +f 273/449/238 296/498/238 289/482/238 +f 290/476/239 294/499/239 291/483/239 +f 267/500/175 300/501/175 268/442/175 +f 300/501/240 277/469/240 282/471/240 +f 205/502/177 302/503/177 206/361/177 +f 302/503/241 274/466/241 278/468/241 +f 266/504/179 304/505/179 269/447/179 +f 304/505/242 261/463/242 275/465/242 +f 270/506/182 306/507/182 265/444/182 +f 306/507/243 281/460/243 262/462/243 +f 268/508/174 305/509/174 270/445/174 +f 305/509/244 282/457/244 281/459/244 +f 206/510/176 299/511/176 267/446/176 +f 299/511/245 278/454/245 277/456/245 +f 269/512/178 301/513/178 205/443/178 +f 301/513/246 275/451/246 274/453/246 +f 265/514/181 303/515/181 266/441/181 +f 303/515/247 262/438/247 261/440/247 +f 188/343/174 189/346/174 190/344/174 +f 189/346/175 191/348/175 192/347/175 +f 191/348/176 193/350/176 194/349/176 +f 193/350/177 195/352/177 196/351/177 +f 195/352/178 197/354/178 198/353/178 +f 197/354/179 199/370/179 200/355/179 +f 193/350/180 201/516/180 202/356/180 +f 199/357/181 203/360/181 204/358/181 +f 203/360/182 188/343/182 187/345/182 +f 196/351/183 205/502/183 206/361/183 +f 207/362/184 208/517/184 209/363/184 +f 199/357/185 211/379/185 208/365/185 +f 189/346/186 212/377/186 213/366/186 +f 195/352/187 202/380/187 214/367/187 +f 203/360/188 208/517/188 207/362/188 +f 188/343/189 207/383/189 212/368/189 +f 191/348/190 213/382/190 201/369/190 +f 199/370/191 197/354/191 214/371/191 +f 216/373/177 217/391/177 218/374/177 +f 214/371/192 219/381/192 220/376/192 +f 202/356/193 201/516/193 216/373/193 +f 212/377/194 221/384/194 222/378/194 +f 211/379/195 220/389/195 209/363/195 +f 202/380/196 215/375/196 219/381/196 +f 213/382/197 222/378/197 216/373/197 +f 207/383/198 210/364/198 221/384/198 +f 224/385/199 225/518/199 226/386/199 +f 221/384/175 227/392/175 228/388/175 +f 220/389/181 229/519/181 224/385/181 +f 215/375/178 218/374/178 230/390/178 +f 222/378/176 228/388/176 217/391/176 +f 210/364/174 223/387/174 227/392/174 +f 209/363/182 224/385/182 223/387/182 +f 219/381/179 230/390/179 229/393/179 +f 232/394/200 233/414/200 234/395/200 +f 230/390/201 231/520/201 235/397/201 +f 218/374/202 217/391/202 236/398/202 +f 227/392/203 237/521/203 238/400/203 +f 224/385/204 229/519/204 235/401/204 +f 218/374/205 232/394/205 231/396/205 +f 217/391/206 228/388/206 238/403/206 +f 227/392/207 223/387/207 226/405/207 +f 240/407/176 241/423/176 242/408/176 +f 238/403/208 240/407/208 239/409/208 +f 226/405/209 243/412/209 244/410/209 +f 226/386/210 225/518/210 245/411/210 +f 235/397/211 231/520/211 234/395/211 +f 236/398/212 239/409/212 233/414/212 +f 238/400/213 237/521/213 244/410/213 +f 225/402/214 235/401/214 246/415/214 +f 248/416/215 249/522/215 250/417/215 +f 243/412/174 251/420/174 252/419/174 +f 245/411/182 247/418/182 251/420/182 +f 234/395/179 253/424/179 248/421/179 +f 239/409/177 242/408/177 254/422/177 +f 244/410/175 252/419/175 241/423/175 +f 246/415/181 248/416/181 247/418/181 +f 233/414/178 254/422/178 253/424/178 +f 249/427/216 259/523/216 256/524/216 +f 256/524/216 257/525/216 249/427/216 +f 257/525/216 258/526/216 249/427/216 +f 258/526/216 255/527/216 249/427/216 +f 255/527/216 260/425/216 249/427/216 +f 254/422/217 256/528/217 259/428/217 +f 242/408/218 241/423/218 258/429/218 +f 252/419/219 251/420/219 260/431/219 +f 251/420/220 247/418/220 250/433/220 +f 253/424/221 259/529/221 249/435/221 +f 242/408/222 257/530/222 256/436/222 +f 252/419/223 255/531/223 258/437/223 +f 262/438/181 263/532/181 264/439/181 +f 204/358/183 265/514/183 266/441/183 +f 192/347/183 267/500/183 268/442/183 +f 198/353/183 269/512/183 205/443/183 +f 187/345/183 270/506/183 265/444/183 +f 190/344/183 268/508/183 270/445/183 +f 194/349/183 206/510/183 267/446/183 +f 200/355/183 266/504/183 269/447/183 +f 264/448/248 272/481/248 273/449/248 +f 275/451/178 271/533/178 276/452/178 +f 278/454/176 279/534/176 280/455/176 +f 282/457/174 283/535/174 284/458/174 +f 281/460/182 284/536/182 263/461/182 +f 261/463/179 264/537/179 271/464/179 +f 274/466/177 276/538/177 279/467/177 +f 277/469/175 280/539/175 283/470/175 +f 286/472/249 287/496/249 288/473/249 +f 276/475/250 289/482/250 290/476/250 +f 280/478/251 291/483/251 286/472/251 +f 264/448/252 263/485/252 292/480/252 +f 276/475/253 271/450/253 273/449/253 +f 280/478/254 279/477/254 290/476/254 +f 284/484/255 283/479/255 286/472/255 +f 284/484/256 285/474/256 292/480/256 +f 298/488/183 293/540/183 288/541/183 +f 288/541/183 287/542/183 294/486/183 +f 294/486/183 295/543/183 296/487/183 +f 296/487/183 297/544/183 298/488/183 +f 298/488/183 288/541/183 294/486/183 +f 292/480/257 285/474/257 288/489/257 +f 273/449/258 272/481/258 298/491/258 +f 290/476/259 289/482/259 296/493/259 +f 286/472/260 291/483/260 294/495/260 +f 292/480/261 293/490/261 298/497/261 +f 273/449/262 297/492/262 296/498/262 +f 290/476/263 295/494/263 294/499/263 +f 267/500/175 299/545/175 300/501/175 +f 300/501/240 299/545/240 277/469/240 +f 205/502/177 301/546/177 302/503/177 +f 302/503/241 301/546/241 274/466/241 +f 266/504/179 303/547/179 304/505/179 +f 304/505/242 303/547/242 261/463/242 +f 270/506/182 305/548/182 306/507/182 +f 306/507/243 305/548/243 281/460/243 +f 268/508/174 300/549/174 305/509/174 +f 305/509/244 300/549/244 282/457/244 +f 206/510/176 302/550/176 299/511/176 +f 299/511/245 302/550/245 278/454/245 +f 269/512/178 304/551/178 301/513/178 +f 301/513/246 304/551/246 275/451/246 +f 265/514/181 306/552/181 303/515/181 +f 303/515/247 306/552/247 262/438/247 diff --git a/src/main/resources/assets/hbm/models/trinkets/bobble.obj b/src/main/resources/assets/hbm/models/trinkets/bobble.obj index 5a6183975..ca368efed 100644 --- a/src/main/resources/assets/hbm/models/trinkets/bobble.obj +++ b/src/main/resources/assets/hbm/models/trinkets/bobble.obj @@ -1,5 +1,179 @@ # Blender v2.79 (sub 0) OBJ File: 'bobble.blend' # www.blender.org +o PeepHat +v 0.281250 2.625000 -0.281250 +v 0.281250 2.625000 0.281250 +v -0.281250 2.625000 0.281250 +v -0.281250 2.625000 -0.281250 +v -0.281250 2.500000 -0.281250 +v -0.281250 2.500000 0.281250 +v 0.281250 2.500000 0.281250 +v 0.281250 2.500000 -0.281250 +v 0.000000 2.687500 0.062500 +v 0.000000 2.687500 -0.062500 +v 0.000000 2.625000 0.000000 +vt -0.000000 0.890625 +vt 0.015625 0.984375 +vt -0.000000 0.984375 +vt 0.125000 0.984375 +vt 0.109375 0.890625 +vt 0.125000 0.890625 +vt 0.015625 1.000000 +vt 0.109375 0.984375 +vt 0.109375 1.000000 +vt 0.109375 0.875000 +vt 0.015625 0.890625 +vt 0.015625 0.875000 +vt 0.000000 1.000000 +vt -0.000000 0.984375 +vt 0.015625 0.984375 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 7/1/1 3/2/1 6/3/1 +f 5/4/2 1/5/2 8/6/2 +f 6/7/3 4/8/3 5/9/3 +f 8/10/4 2/11/4 7/12/4 +f 2/11/5 4/8/5 3/2/5 +f 9/13/4 11/14/4 10/15/4 +f 7/1/1 2/11/1 3/2/1 +f 5/4/2 4/8/2 1/5/2 +f 6/7/3 3/2/3 4/8/3 +f 8/10/4 1/5/4 2/11/4 +f 2/11/5 1/5/5 4/8/5 +o PeepTail +v -0.114030 1.104741 -0.062500 +v -0.071277 0.987279 -0.062500 +v -0.114030 1.104741 0.062500 +v -0.071277 0.987279 0.062500 +v -0.583876 0.933731 -0.062500 +v -0.541124 0.816269 -0.062500 +v -0.583876 0.933731 0.062500 +v -0.541124 0.816269 0.062500 +v -0.547280 0.814373 0.062500 +v -0.704707 1.160419 0.125000 +v -0.547280 0.814373 -0.062500 +v -0.704707 1.160419 -0.125000 +v -0.426539 0.846725 0.062500 +v -0.463226 1.225123 0.125000 +v -0.426539 0.846725 -0.062500 +v -0.463226 1.225123 -0.125000 +v -0.801764 1.522641 0.125000 +v -0.801764 1.522641 -0.125000 +v -0.560283 1.587345 -0.125000 +v -0.560283 1.587345 0.125000 +v -0.757570 1.599187 0.062500 +v -0.757570 1.599187 -0.062500 +v -0.636829 1.631540 -0.062500 +v -0.636829 1.631540 0.062500 +vt 0.937500 0.562500 +vt 0.968750 0.687500 +vt 0.937500 0.687500 +vt 0.968750 0.687500 +vt 0.937500 0.562500 +vt 0.968750 0.562500 +vt 0.937500 0.687500 +vt 0.968750 0.562500 +vt 0.968750 0.687500 +vt 0.968750 0.562500 +vt 0.937500 0.687500 +vt 0.937500 0.562500 +vt 0.937500 0.546875 +vt 0.890625 0.453125 +vt 0.921875 0.453125 +vt 0.937500 0.546875 +vt 0.890625 0.453125 +vt 0.921875 0.453125 +vt 0.937500 0.546875 +vt 0.890625 0.453125 +vt 0.921875 0.453125 +vt 0.937500 0.546875 +vt 0.890625 0.453125 +vt 0.921875 0.453125 +vt 0.890625 0.421875 +vt 0.875000 0.640625 +vt 0.875000 0.546875 +vt 0.937500 0.640625 +vt 0.890625 0.656250 +vt 0.875000 0.640625 +vt 0.875000 0.546875 +vt 0.875000 0.640625 +vt 0.875000 0.546875 +vt 0.875000 0.640625 +vt 0.875000 0.546875 +vt 0.921875 0.687500 +vt 0.890625 0.687500 +vt 0.921875 0.656250 +vt 0.890625 0.656250 +vt 0.937500 0.640625 +vt 0.890625 0.656250 +vt 0.937500 0.640625 +vt 0.890625 0.656250 +vt 0.968750 0.562500 +vt 0.937500 0.687500 +vt 0.937500 0.562500 +vt 0.968750 0.687500 +vt 0.921875 0.421875 +vt 0.921875 0.656250 +vt 0.937500 0.640625 +vt 0.921875 0.656250 +vt 0.921875 0.656250 +vn -0.3420 0.9397 0.0000 +vn 0.3420 -0.9397 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.9102 -0.4141 0.0000 +vn 0.0425 -0.1588 -0.9864 +vn 0.9953 0.0965 0.0000 +vn 0.0425 -0.1588 0.9864 +vn 0.2588 -0.9659 0.0000 +vn 0.9659 0.2588 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.9659 -0.2588 0.0000 +vn -0.2588 0.9659 0.0000 +vn -0.1830 0.6830 0.7071 +vn -0.1830 0.6830 -0.7071 +vn 0.5000 0.8660 0.0000 +s off +f 16/16/6 14/17/6 12/18/6 +f 13/19/7 19/20/7 17/21/7 +f 14/22/8 19/23/8 15/24/8 +f 16/25/9 13/26/9 17/27/9 +f 21/28/10 22/29/10 20/30/10 +f 23/31/11 26/32/11 22/33/11 +f 27/34/12 24/35/12 26/36/12 +f 25/37/13 20/38/13 24/39/13 +f 26/40/14 20/30/14 22/29/14 +f 27/34/15 31/41/15 25/42/15 +f 28/43/16 33/44/16 29/45/16 +f 21/28/17 29/45/17 23/46/17 +f 25/37/8 28/47/8 21/48/8 +f 23/31/9 30/49/9 27/50/9 +f 33/44/18 35/51/18 34/52/18 +f 28/47/19 35/53/19 32/54/19 +f 29/55/20 34/56/20 30/49/20 +f 30/57/21 35/58/21 31/41/21 +f 16/16/6 18/59/6 14/17/6 +f 13/19/7 15/60/7 19/20/7 +f 14/22/8 18/61/8 19/23/8 +f 16/25/9 12/62/9 13/26/9 +f 21/28/10 23/46/10 22/29/10 +f 23/31/11 27/50/11 26/32/11 +f 27/34/12 25/42/12 24/35/12 +f 25/37/13 21/48/13 20/38/13 +f 26/40/14 24/63/14 20/30/14 +f 27/34/15 30/57/15 31/41/15 +f 28/43/16 32/64/16 33/44/16 +f 21/28/17 28/43/17 29/45/17 +f 25/37/8 31/65/8 28/47/8 +f 23/31/9 29/55/9 30/49/9 +f 33/44/18 32/64/18 35/51/18 +f 28/47/19 31/65/19 35/53/19 +f 29/55/20 33/66/20 34/56/20 +f 30/57/21 34/67/21 35/58/21 o Drillgon v -0.250000 0.500000 0.437500 v -0.250000 1.125000 0.437500 @@ -307,157 +481,157 @@ vn 0.0000 -0.9487 0.3162 vn 0.0000 0.7071 0.7071 vn 0.0000 0.7071 -0.7071 s off -f 2/1/1 3/2/1 1/3/1 -f 4/4/2 7/5/2 3/2/2 -f 8/6/3 5/7/3 7/5/3 -f 6/8/4 1/9/4 5/7/4 -f 5/7/3 15/10/3 7/5/3 -f 4/4/5 11/11/5 8/6/5 -f 11/12/3 36/13/3 12/14/3 -f 8/6/6 12/14/6 6/8/6 -f 2/1/1 10/15/1 4/4/1 -f 2/16/7 12/17/7 9/18/7 -f 15/10/8 14/19/8 13/20/8 -f 1/9/9 16/21/9 5/7/9 -f 7/5/10 13/22/10 3/2/10 -f 3/2/1 14/23/1 1/3/1 -f 18/24/11 19/25/11 17/26/11 -f 20/27/12 23/28/12 19/29/12 -f 24/30/13 21/31/13 23/32/13 -f 22/33/14 17/34/14 21/35/14 -f 20/27/15 22/33/15 24/30/15 -f 26/36/14 27/37/14 25/38/14 -f 28/39/11 31/40/11 27/41/11 -f 32/42/12 29/43/12 31/44/12 -f 30/45/13 25/46/13 29/47/13 -f 28/39/15 30/45/15 32/42/15 -f 34/48/15 36/13/15 35/49/15 -f 9/50/1 34/51/1 10/15/1 -f 12/17/4 33/52/4 9/18/4 -f 10/53/2 35/54/2 11/11/2 -f 38/55/1 39/56/1 37/57/1 -f 42/58/4 56/59/4 41/60/4 -f 44/61/3 41/60/3 43/62/3 -f 38/63/4 55/64/4 42/65/4 -f 43/66/8 37/67/8 39/68/8 -f 40/69/15 42/65/15 44/70/15 -f 46/71/1 47/72/1 45/73/1 -f 51/74/2 64/75/2 52/76/2 -f 52/76/3 49/77/3 51/74/3 -f 53/78/16 58/79/16 54/80/16 -f 51/81/8 45/82/8 47/83/8 -f 48/84/15 50/85/15 52/86/15 -f 37/57/4 54/80/4 38/55/4 -f 41/87/4 53/88/4 37/67/4 -f 59/89/4 57/90/4 60/91/4 -f 54/92/17 59/89/17 55/64/17 -f 55/93/18 60/94/18 56/59/18 -f 56/95/19 57/96/19 53/88/19 -f 64/97/20 65/98/20 61/99/20 -f 47/83/2 63/100/2 51/81/2 -f 52/86/2 61/99/2 48/84/2 -f 48/101/2 62/102/2 47/72/2 -f 65/98/2 67/103/2 66/104/2 -f 61/105/21 66/106/21 62/102/21 -f 63/107/22 68/108/22 64/75/22 -f 62/109/23 67/110/23 63/100/23 -f 72/111/2 75/112/2 71/113/2 -f 76/114/3 73/115/3 75/112/3 -f 74/116/4 69/117/4 73/115/4 -f 75/112/8 69/118/8 71/119/8 -f 72/120/15 74/116/15 76/114/15 -f 84/121/1 86/122/1 88/123/1 -f 83/124/9 81/125/9 84/121/9 -f 79/126/24 84/127/24 78/128/24 -f 87/129/25 88/123/25 86/122/25 -f 89/130/10 90/131/10 88/123/10 -f 87/129/3 83/132/3 89/130/3 -f 90/131/1 84/127/1 88/123/1 -f 83/133/3 91/134/3 89/130/3 -f 96/135/3 97/136/3 99/137/3 -f 95/138/10 94/139/10 96/135/10 -f 92/140/25 96/141/25 77/142/25 -f 97/136/24 100/143/24 99/137/24 -f 100/143/9 101/144/9 99/137/9 -f 98/145/1 95/146/1 100/143/1 -f 101/144/3 96/141/3 99/137/3 -f 95/147/1 102/148/1 100/143/1 -f 2/1/1 4/4/1 3/2/1 -f 4/4/2 8/6/2 7/5/2 -f 8/6/3 6/8/3 5/7/3 -f 6/8/4 2/16/4 1/9/4 -f 5/7/3 16/149/3 15/10/3 -f 4/4/5 10/53/5 11/11/5 -f 11/12/3 35/49/3 36/13/3 -f 8/6/6 11/12/6 12/14/6 -f 2/1/1 9/50/1 10/15/1 -f 2/16/7 6/8/7 12/17/7 -f 15/10/8 16/149/8 14/19/8 -f 1/9/9 14/150/9 16/21/9 -f 7/5/10 15/151/10 13/22/10 -f 3/2/1 13/152/1 14/23/1 -f 18/24/11 20/27/11 19/25/11 -f 20/27/12 24/30/12 23/28/12 -f 24/30/13 22/33/13 21/31/13 -f 22/33/14 18/24/14 17/34/14 -f 20/27/15 18/24/15 22/33/15 -f 26/36/14 28/39/14 27/37/14 -f 28/39/11 32/42/11 31/40/11 -f 32/42/12 30/45/12 29/43/12 -f 30/45/13 26/36/13 25/46/13 -f 28/39/15 26/36/15 30/45/15 -f 34/48/15 33/153/15 36/13/15 -f 9/50/1 33/154/1 34/51/1 -f 12/17/4 36/155/4 33/52/4 -f 10/53/2 34/156/2 35/54/2 -f 38/55/1 40/157/1 39/56/1 -f 42/58/4 55/93/4 56/59/4 -f 44/61/3 42/58/3 41/60/3 -f 38/63/4 54/92/4 55/64/4 -f 43/66/8 41/87/8 37/67/8 -f 40/69/15 38/63/15 42/65/15 -f 46/71/1 48/101/1 47/72/1 -f 51/74/2 63/107/2 64/75/2 -f 52/76/3 50/158/3 49/77/3 -f 53/78/16 57/159/16 58/79/16 -f 51/81/8 49/160/8 45/82/8 -f 48/84/15 46/161/15 50/85/15 -f 37/57/4 53/78/4 54/80/4 -f 41/87/4 56/95/4 53/88/4 -f 59/89/4 58/162/4 57/90/4 -f 54/92/17 58/162/17 59/89/17 -f 55/93/18 59/163/18 60/94/18 -f 56/95/19 60/164/19 57/96/19 -f 64/97/20 68/165/20 65/98/20 -f 47/83/2 62/109/2 63/100/2 -f 52/86/2 64/97/2 61/99/2 -f 48/101/2 61/105/2 62/102/2 -f 65/98/2 68/165/2 67/103/2 -f 61/105/21 65/166/21 66/106/21 -f 63/107/22 67/167/22 68/108/22 -f 62/109/23 66/168/23 67/110/23 -f 72/111/2 76/114/2 75/112/2 -f 76/114/3 74/116/3 73/115/3 -f 74/116/4 70/169/4 69/117/4 -f 75/112/8 73/115/8 69/118/8 -f 72/120/15 70/170/15 74/116/15 -f 84/121/1 81/125/1 86/122/1 -f 83/124/9 80/171/9 81/125/9 -f 79/126/24 83/172/24 84/127/24 -f 87/129/25 89/130/25 88/123/25 -f 89/130/10 91/134/10 90/131/10 -f 87/129/3 80/173/3 83/132/3 -f 90/131/1 78/128/1 84/127/1 -f 83/133/3 79/174/3 91/134/3 -f 96/135/3 94/139/3 97/136/3 -f 95/138/10 93/175/10 94/139/10 -f 92/140/25 95/176/25 96/141/25 -f 97/136/24 98/145/24 100/143/24 -f 100/143/9 102/148/9 101/144/9 -f 98/145/1 93/177/1 95/146/1 -f 101/144/3 77/142/3 96/141/3 -f 95/147/1 92/178/1 102/148/1 -l 82 85 +f 37/68/22 38/69/22 36/70/22 +f 39/71/23 42/72/23 38/69/23 +f 43/73/24 40/74/24 42/72/24 +f 41/75/25 36/76/25 40/74/25 +f 40/74/24 50/77/24 42/72/24 +f 39/71/26 46/78/26 43/73/26 +f 46/79/24 71/80/24 47/81/24 +f 43/73/27 47/81/27 41/75/27 +f 37/68/22 45/82/22 39/71/22 +f 37/83/28 47/84/28 44/85/28 +f 50/77/29 49/86/29 48/87/29 +f 36/76/30 51/88/30 40/74/30 +f 42/72/31 48/89/31 38/69/31 +f 38/69/22 49/90/22 36/70/22 +f 53/91/32 54/92/32 52/93/32 +f 55/94/33 58/95/33 54/96/33 +f 59/97/34 56/98/34 58/99/34 +f 57/100/35 52/101/35 56/102/35 +f 55/94/36 57/100/36 59/97/36 +f 61/103/35 62/104/35 60/105/35 +f 63/106/32 66/107/32 62/108/32 +f 67/109/33 64/110/33 66/111/33 +f 65/112/34 60/113/34 64/114/34 +f 63/106/36 65/112/36 67/109/36 +f 69/115/36 71/80/36 70/116/36 +f 44/117/22 69/118/22 45/82/22 +f 47/84/25 68/119/25 44/85/25 +f 45/120/23 70/121/23 46/78/23 +f 73/122/22 74/123/22 72/124/22 +f 77/125/25 91/126/25 76/127/25 +f 79/128/24 76/127/24 78/129/24 +f 73/130/25 90/131/25 77/132/25 +f 78/133/29 72/134/29 74/135/29 +f 75/136/36 77/132/36 79/137/36 +f 81/138/22 82/139/22 80/140/22 +f 86/141/23 99/142/23 87/143/23 +f 87/143/24 84/144/24 86/141/24 +f 88/145/37 93/146/37 89/147/37 +f 86/148/29 80/149/29 82/150/29 +f 83/151/36 85/152/36 87/153/36 +f 72/124/25 89/147/25 73/122/25 +f 76/154/25 88/155/25 72/134/25 +f 94/156/25 92/157/25 95/158/25 +f 89/159/38 94/156/38 90/131/38 +f 90/160/39 95/161/39 91/126/39 +f 91/162/40 92/163/40 88/155/40 +f 99/164/41 100/165/41 96/166/41 +f 82/150/23 98/167/23 86/148/23 +f 87/153/23 96/166/23 83/151/23 +f 83/168/23 97/169/23 82/139/23 +f 100/165/23 102/170/23 101/171/23 +f 96/172/42 101/173/42 97/169/42 +f 98/174/43 103/175/43 99/142/43 +f 97/176/44 102/177/44 98/167/44 +f 107/178/23 110/179/23 106/180/23 +f 111/181/24 108/182/24 110/179/24 +f 109/183/25 104/184/25 108/182/25 +f 110/179/29 104/185/29 106/186/29 +f 107/187/36 109/183/36 111/181/36 +f 119/188/22 121/189/22 123/190/22 +f 118/191/30 116/192/30 119/188/30 +f 114/193/45 119/194/45 113/195/45 +f 122/196/46 123/190/46 121/189/46 +f 124/197/31 125/198/31 123/190/31 +f 122/196/24 118/199/24 124/197/24 +f 125/198/22 119/194/22 123/190/22 +f 118/200/24 126/201/24 124/197/24 +f 131/202/24 132/203/24 134/204/24 +f 130/205/31 129/206/31 131/202/31 +f 127/207/46 131/208/46 112/209/46 +f 132/203/45 135/210/45 134/204/45 +f 135/210/30 136/211/30 134/204/30 +f 133/212/22 130/213/22 135/210/22 +f 136/211/24 131/208/24 134/204/24 +f 130/214/22 137/215/22 135/210/22 +f 37/68/22 39/71/22 38/69/22 +f 39/71/23 43/73/23 42/72/23 +f 43/73/24 41/75/24 40/74/24 +f 41/75/25 37/83/25 36/76/25 +f 40/74/24 51/216/24 50/77/24 +f 39/71/26 45/120/26 46/78/26 +f 46/79/24 70/116/24 71/80/24 +f 43/73/27 46/79/27 47/81/27 +f 37/68/22 44/117/22 45/82/22 +f 37/83/28 41/75/28 47/84/28 +f 50/77/29 51/216/29 49/86/29 +f 36/76/30 49/217/30 51/88/30 +f 42/72/31 50/218/31 48/89/31 +f 38/69/22 48/219/22 49/90/22 +f 53/91/32 55/94/32 54/92/32 +f 55/94/33 59/97/33 58/95/33 +f 59/97/34 57/100/34 56/98/34 +f 57/100/35 53/91/35 52/101/35 +f 55/94/36 53/91/36 57/100/36 +f 61/103/35 63/106/35 62/104/35 +f 63/106/32 67/109/32 66/107/32 +f 67/109/33 65/112/33 64/110/33 +f 65/112/34 61/103/34 60/113/34 +f 63/106/36 61/103/36 65/112/36 +f 69/115/36 68/220/36 71/80/36 +f 44/117/22 68/221/22 69/118/22 +f 47/84/25 71/222/25 68/119/25 +f 45/120/23 69/223/23 70/121/23 +f 73/122/22 75/224/22 74/123/22 +f 77/125/25 90/160/25 91/126/25 +f 79/128/24 77/125/24 76/127/24 +f 73/130/25 89/159/25 90/131/25 +f 78/133/29 76/154/29 72/134/29 +f 75/136/36 73/130/36 77/132/36 +f 81/138/22 83/168/22 82/139/22 +f 86/141/23 98/174/23 99/142/23 +f 87/143/24 85/225/24 84/144/24 +f 88/145/37 92/226/37 93/146/37 +f 86/148/29 84/227/29 80/149/29 +f 83/151/36 81/228/36 85/152/36 +f 72/124/25 88/145/25 89/147/25 +f 76/154/25 91/162/25 88/155/25 +f 94/156/25 93/229/25 92/157/25 +f 89/159/38 93/229/38 94/156/38 +f 90/160/39 94/230/39 95/161/39 +f 91/162/40 95/231/40 92/163/40 +f 99/164/41 103/232/41 100/165/41 +f 82/150/23 97/176/23 98/167/23 +f 87/153/23 99/164/23 96/166/23 +f 83/168/23 96/172/23 97/169/23 +f 100/165/23 103/232/23 102/170/23 +f 96/172/42 100/233/42 101/173/42 +f 98/174/43 102/234/43 103/175/43 +f 97/176/44 101/235/44 102/177/44 +f 107/178/23 111/181/23 110/179/23 +f 111/181/24 109/183/24 108/182/24 +f 109/183/25 105/236/25 104/184/25 +f 110/179/29 108/182/29 104/185/29 +f 107/187/36 105/237/36 109/183/36 +f 119/188/22 116/192/22 121/189/22 +f 118/191/30 115/238/30 116/192/30 +f 114/193/45 118/239/45 119/194/45 +f 122/196/46 124/197/46 123/190/46 +f 124/197/31 126/201/31 125/198/31 +f 122/196/24 115/240/24 118/199/24 +f 125/198/22 113/195/22 119/194/22 +f 118/200/24 114/241/24 126/201/24 +f 131/202/24 129/206/24 132/203/24 +f 130/205/31 128/242/31 129/206/31 +f 127/207/46 130/243/46 131/208/46 +f 132/203/45 133/212/45 135/210/45 +f 135/210/30 137/215/30 136/211/30 +f 133/212/22 128/244/22 130/213/22 +f 136/211/24 112/209/24 131/208/24 +f 130/214/22 127/245/22 137/215/22 +l 117 120 o Cube v 0.045753 0.237741 0.312500 v 0.045753 0.737741 0.312500 @@ -570,126 +744,126 @@ vn 0.0000 -0.9848 -0.1736 vn 0.0000 -0.1736 0.9848 vn 0.0000 0.1736 -0.9848 s off -f 104//26 105//26 103//26 -f 106//27 109//27 105//27 -f 110//28 107//28 109//28 -f 108//29 103//29 107//29 -f 109//30 103//30 105//30 -f 106//31 108//31 110//31 -f 112//32 113//32 111//32 -f 113//27 118//27 117//27 -f 118//33 115//33 117//33 -f 116//29 111//29 115//29 -f 117//34 111//34 113//34 -f 114//35 116//35 118//35 -f 120//36 121//36 119//36 -f 122//27 125//27 121//27 -f 126//37 123//37 125//37 -f 123//29 120//29 119//29 -f 125//38 119//38 121//38 -f 122//39 124//39 126//39 -f 128//26 129//26 127//26 -f 130//27 133//27 129//27 -f 134//28 131//28 133//28 -f 132//29 127//29 131//29 -f 133//30 127//30 129//30 -f 130//31 132//31 134//31 -f 137//30 136//30 135//30 -f 141//31 139//31 140//31 -f 137//27 142//27 138//27 -f 136//29 140//29 135//29 -f 138//28 141//28 136//28 -f 135//26 139//26 137//26 -f 145//30 144//30 143//30 -f 149//31 147//31 148//31 -f 146//28 149//28 144//28 -f 143//26 147//26 145//26 -f 145//27 150//27 146//27 -f 144//29 148//29 143//29 -f 152//40 153//40 151//40 -f 154//41 157//41 153//41 -f 157//42 156//42 155//42 -f 156//43 151//43 155//43 -f 153//44 155//44 151//44 -f 154//45 156//45 158//45 -f 160//40 161//40 159//40 -f 162//27 165//27 161//27 -f 166//42 163//42 165//42 -f 163//29 160//29 159//29 -f 165//46 159//46 161//46 -f 162//47 164//47 166//47 -f 168//28 169//28 167//28 -f 170//48 173//48 169//48 -f 174//26 171//26 173//26 -f 172//49 167//49 171//49 -f 173//50 167//50 169//50 -f 170//51 172//51 174//51 -f 176//28 177//28 175//28 -f 178//52 181//52 177//52 -f 181//26 180//26 179//26 -f 180//53 175//53 179//53 -f 181//54 175//54 177//54 -f 178//55 180//55 182//55 -f 104//26 106//26 105//26 -f 106//27 110//27 109//27 -f 110//28 108//28 107//28 -f 108//29 104//29 103//29 -f 109//30 107//30 103//30 -f 106//31 104//31 108//31 -f 112//32 114//32 113//32 -f 113//27 114//27 118//27 -f 118//33 116//33 115//33 -f 116//29 112//29 111//29 -f 117//34 115//34 111//34 -f 114//35 112//35 116//35 -f 120//36 122//36 121//36 -f 122//27 126//27 125//27 -f 126//37 124//37 123//37 -f 123//29 124//29 120//29 -f 125//38 123//38 119//38 -f 122//39 120//39 124//39 -f 128//26 130//26 129//26 -f 130//27 134//27 133//27 -f 134//28 132//28 131//28 -f 132//29 128//29 127//29 -f 133//30 131//30 127//30 -f 130//31 128//31 132//31 -f 137//30 138//30 136//30 -f 141//31 142//31 139//31 -f 137//27 139//27 142//27 -f 136//29 141//29 140//29 -f 138//28 142//28 141//28 -f 135//26 140//26 139//26 -f 145//30 146//30 144//30 -f 149//31 150//31 147//31 -f 146//28 150//28 149//28 -f 143//26 148//26 147//26 -f 145//27 147//27 150//27 -f 144//29 149//29 148//29 -f 152//40 154//40 153//40 -f 154//41 158//41 157//41 -f 157//42 158//42 156//42 -f 156//43 152//43 151//43 -f 153//44 157//44 155//44 -f 154//45 152//45 156//45 -f 160//40 162//40 161//40 -f 162//27 166//27 165//27 -f 166//42 164//42 163//42 -f 163//29 164//29 160//29 -f 165//46 163//46 159//46 -f 162//47 160//47 164//47 -f 168//28 170//28 169//28 -f 170//48 174//48 173//48 -f 174//26 172//26 171//26 -f 172//49 168//49 167//49 -f 173//50 171//50 167//50 -f 170//51 168//51 172//51 -f 176//28 178//28 177//28 -f 178//52 182//52 181//52 -f 181//26 182//26 180//26 -f 180//53 176//53 175//53 -f 181//54 179//54 175//54 -f 178//55 176//55 180//55 +f 139//47 140//47 138//47 +f 141//48 144//48 140//48 +f 145//49 142//49 144//49 +f 143//50 138//50 142//50 +f 144//51 138//51 140//51 +f 141//52 143//52 145//52 +f 147//53 148//53 146//53 +f 148//48 153//48 152//48 +f 153//54 150//54 152//54 +f 151//50 146//50 150//50 +f 152//55 146//55 148//55 +f 149//56 151//56 153//56 +f 155//57 156//57 154//57 +f 157//48 160//48 156//48 +f 161//58 158//58 160//58 +f 158//50 155//50 154//50 +f 160//59 154//59 156//59 +f 157//60 159//60 161//60 +f 163//47 164//47 162//47 +f 165//48 168//48 164//48 +f 169//49 166//49 168//49 +f 167//50 162//50 166//50 +f 168//51 162//51 164//51 +f 165//52 167//52 169//52 +f 172//51 171//51 170//51 +f 176//52 174//52 175//52 +f 172//48 177//48 173//48 +f 171//50 175//50 170//50 +f 173//49 176//49 171//49 +f 170//47 174//47 172//47 +f 180//51 179//51 178//51 +f 184//52 182//52 183//52 +f 181//49 184//49 179//49 +f 178//47 182//47 180//47 +f 180//48 185//48 181//48 +f 179//50 183//50 178//50 +f 187//61 188//61 186//61 +f 189//62 192//62 188//62 +f 192//63 191//63 190//63 +f 191//64 186//64 190//64 +f 188//65 190//65 186//65 +f 189//66 191//66 193//66 +f 195//61 196//61 194//61 +f 197//48 200//48 196//48 +f 201//63 198//63 200//63 +f 198//50 195//50 194//50 +f 200//67 194//67 196//67 +f 197//68 199//68 201//68 +f 203//49 204//49 202//49 +f 205//69 208//69 204//69 +f 209//47 206//47 208//47 +f 207//70 202//70 206//70 +f 208//71 202//71 204//71 +f 205//72 207//72 209//72 +f 211//49 212//49 210//49 +f 213//73 216//73 212//73 +f 216//47 215//47 214//47 +f 215//74 210//74 214//74 +f 216//75 210//75 212//75 +f 213//76 215//76 217//76 +f 139//47 141//47 140//47 +f 141//48 145//48 144//48 +f 145//49 143//49 142//49 +f 143//50 139//50 138//50 +f 144//51 142//51 138//51 +f 141//52 139//52 143//52 +f 147//53 149//53 148//53 +f 148//48 149//48 153//48 +f 153//54 151//54 150//54 +f 151//50 147//50 146//50 +f 152//55 150//55 146//55 +f 149//56 147//56 151//56 +f 155//57 157//57 156//57 +f 157//48 161//48 160//48 +f 161//58 159//58 158//58 +f 158//50 159//50 155//50 +f 160//59 158//59 154//59 +f 157//60 155//60 159//60 +f 163//47 165//47 164//47 +f 165//48 169//48 168//48 +f 169//49 167//49 166//49 +f 167//50 163//50 162//50 +f 168//51 166//51 162//51 +f 165//52 163//52 167//52 +f 172//51 173//51 171//51 +f 176//52 177//52 174//52 +f 172//48 174//48 177//48 +f 171//50 176//50 175//50 +f 173//49 177//49 176//49 +f 170//47 175//47 174//47 +f 180//51 181//51 179//51 +f 184//52 185//52 182//52 +f 181//49 185//49 184//49 +f 178//47 183//47 182//47 +f 180//48 182//48 185//48 +f 179//50 184//50 183//50 +f 187//61 189//61 188//61 +f 189//62 193//62 192//62 +f 192//63 193//63 191//63 +f 191//64 187//64 186//64 +f 188//65 192//65 190//65 +f 189//66 187//66 191//66 +f 195//61 197//61 196//61 +f 197//48 201//48 200//48 +f 201//63 199//63 198//63 +f 198//50 199//50 195//50 +f 200//67 198//67 194//67 +f 197//68 195//68 199//68 +f 203//49 205//49 204//49 +f 205//69 209//69 208//69 +f 209//47 207//47 206//47 +f 207//70 203//70 202//70 +f 208//71 206//71 202//71 +f 205//72 203//72 207//72 +f 211//49 213//49 212//49 +f 213//73 217//73 216//73 +f 216//47 217//47 215//47 +f 215//74 211//74 210//74 +f 216//75 214//75 210//75 +f 213//76 211//76 215//76 o FumoHead v -0.250000 0.750000 -0.250000 v -0.250000 0.750000 0.250000 @@ -840,74 +1014,74 @@ vn 0.7071 0.0000 0.7071 vn 0.8944 0.0000 0.4472 vn 0.8944 0.0000 -0.4472 s off -f 183/179/56 185/180/56 184/181/56 -f 189/182/57 187/183/57 188/184/57 -f 183/185/58 190/186/58 186/187/58 -f 185/188/59 188/189/59 184/190/59 -f 186/187/60 189/182/60 185/188/60 -f 184/191/61 187/192/61 183/185/61 -f 191/193/56 193/194/56 192/195/56 -f 197/196/57 195/197/57 196/198/57 -f 191/199/58 198/200/58 194/201/58 -f 193/202/59 196/203/59 192/204/59 -f 194/201/60 197/196/60 193/202/60 -f 192/205/61 195/206/61 191/199/61 -f 203/207/56 202/208/56 199/209/56 -f 206/210/56 200/211/56 201/212/56 -f 208/213/56 201/214/56 202/215/56 -f 210/216/56 199/217/56 200/218/56 -f 200/218/56 205/219/56 210/216/56 -f 201/212/56 207/220/56 206/210/56 -f 202/215/56 204/221/56 208/213/56 -f 199/209/56 209/222/56 203/207/56 -f 213/223/57 216/224/57 214/225/57 -f 211/226/57 218/227/57 212/228/57 -f 212/229/57 220/230/57 213/231/57 -f 214/232/57 222/233/57 211/234/57 -f 211/234/57 222/233/57 217/235/57 -f 212/228/57 218/227/57 219/236/57 -f 213/231/57 220/230/57 215/237/57 -f 214/225/57 216/224/57 221/238/57 -f 206/210/59 217/239/59 205/240/59 -f 203/207/58 215/241/58 204/242/58 -f 204/243/62 220/230/62 208/213/62 -f 209/244/63 216/224/63 203/207/63 -f 205/245/64 222/233/64 210/216/64 -f 210/216/61 221/246/61 209/247/61 -f 208/213/60 219/248/60 207/249/60 -f 207/250/65 218/227/65 206/210/65 -f 228/251/66 230/252/66 227/253/66 -f 224/254/67 226/255/67 223/256/67 -f 183/179/56 186/257/56 185/180/56 -f 189/182/57 190/186/57 187/183/57 -f 183/185/58 187/192/58 190/186/58 -f 185/188/59 189/182/59 188/189/59 -f 186/187/60 190/186/60 189/182/60 -f 184/191/61 188/258/61 187/192/61 -f 191/193/56 194/259/56 193/194/56 -f 197/196/57 198/200/57 195/197/57 -f 191/199/58 195/206/58 198/200/58 -f 193/202/59 197/196/59 196/203/59 -f 194/201/60 198/200/60 197/196/60 -f 192/205/61 196/260/61 195/206/61 -f 203/207/56 204/242/56 202/208/56 -f 206/210/56 205/240/56 200/211/56 -f 208/213/56 207/249/56 201/214/56 -f 210/216/56 209/247/56 199/217/56 -f 213/223/57 215/241/57 216/224/57 -f 211/226/57 217/239/57 218/227/57 -f 212/229/57 219/248/57 220/230/57 -f 214/232/57 221/246/57 222/233/57 -f 206/210/59 218/227/59 217/239/59 -f 203/207/58 216/224/58 215/241/58 -f 204/243/62 215/261/62 220/230/62 -f 209/244/63 221/262/63 216/224/63 -f 205/245/64 217/263/64 222/233/64 -f 210/216/61 222/233/61 221/246/61 -f 208/213/60 220/230/60 219/248/60 -f 207/250/65 219/264/65 218/227/65 -f 228/251/66 229/265/66 230/252/66 -f 224/254/67 225/266/67 226/255/67 +f 218/246/77 220/247/77 219/248/77 +f 224/249/78 222/250/78 223/251/78 +f 218/252/79 225/253/79 221/254/79 +f 220/255/80 223/256/80 219/257/80 +f 221/254/81 224/249/81 220/255/81 +f 219/258/82 222/259/82 218/252/82 +f 226/260/77 228/261/77 227/262/77 +f 232/263/78 230/264/78 231/265/78 +f 226/266/79 233/267/79 229/268/79 +f 228/269/80 231/270/80 227/271/80 +f 229/268/81 232/263/81 228/269/81 +f 227/272/82 230/273/82 226/266/82 +f 238/274/77 237/275/77 234/276/77 +f 241/277/77 235/278/77 236/279/77 +f 243/280/77 236/281/77 237/282/77 +f 245/283/77 234/284/77 235/285/77 +f 235/285/77 240/286/77 245/283/77 +f 236/279/77 242/287/77 241/277/77 +f 237/282/77 239/288/77 243/280/77 +f 234/276/77 244/289/77 238/274/77 +f 248/290/78 251/291/78 249/292/78 +f 246/293/78 253/294/78 247/295/78 +f 247/296/78 255/297/78 248/298/78 +f 249/299/78 257/300/78 246/301/78 +f 246/301/78 257/300/78 252/302/78 +f 247/295/78 253/294/78 254/303/78 +f 248/298/78 255/297/78 250/304/78 +f 249/292/78 251/291/78 256/305/78 +f 241/277/80 252/306/80 240/307/80 +f 238/274/79 250/308/79 239/309/79 +f 239/310/83 255/297/83 243/280/83 +f 244/311/84 251/291/84 238/274/84 +f 240/312/85 257/300/85 245/283/85 +f 245/283/82 256/313/82 244/314/82 +f 243/280/81 254/315/81 242/316/81 +f 242/317/86 253/294/86 241/277/86 +f 263/318/87 265/319/87 262/320/87 +f 259/321/88 261/322/88 258/323/88 +f 218/246/77 221/324/77 220/247/77 +f 224/249/78 225/253/78 222/250/78 +f 218/252/79 222/259/79 225/253/79 +f 220/255/80 224/249/80 223/256/80 +f 221/254/81 225/253/81 224/249/81 +f 219/258/82 223/325/82 222/259/82 +f 226/260/77 229/326/77 228/261/77 +f 232/263/78 233/267/78 230/264/78 +f 226/266/79 230/273/79 233/267/79 +f 228/269/80 232/263/80 231/270/80 +f 229/268/81 233/267/81 232/263/81 +f 227/272/82 231/327/82 230/273/82 +f 238/274/77 239/309/77 237/275/77 +f 241/277/77 240/307/77 235/278/77 +f 243/280/77 242/316/77 236/281/77 +f 245/283/77 244/314/77 234/284/77 +f 248/290/78 250/308/78 251/291/78 +f 246/293/78 252/306/78 253/294/78 +f 247/296/78 254/315/78 255/297/78 +f 249/299/78 256/313/78 257/300/78 +f 241/277/80 253/294/80 252/306/80 +f 238/274/79 251/291/79 250/308/79 +f 239/310/83 250/328/83 255/297/83 +f 244/311/84 256/329/84 251/291/84 +f 240/312/85 252/330/85 257/300/85 +f 245/283/82 257/300/82 256/313/82 +f 243/280/81 255/297/81 254/315/81 +f 242/317/86 254/331/86 253/294/86 +f 263/318/87 264/332/87 265/319/87 +f 259/321/88 260/333/88 261/322/88 o Fumo v -0.390165 0.375000 -0.213388 v -0.213388 0.375000 -0.390165 @@ -1244,122 +1418,122 @@ vn 0.0000 0.9659 -0.2588 vn 0.0000 -0.9659 0.2588 vn 0.0000 -0.2588 -0.9659 s off -f 336/267/68 342/268/68 338/269/68 -f 336/270/69 337/271/69 335/272/69 -f 259/273/70 241/274/70 242/275/70 -f 333/276/71 331/277/71 332/278/71 -f 328/279/72 333/280/72 327/281/72 -f 240/282/73 241/283/73 239/284/73 -f 260/285/74 239/286/74 241/274/74 -f 236/287/75 237/288/75 238/289/75 -f 246/290/76 243/291/76 245/292/76 -f 262/293/77 242/275/77 240/282/77 -f 261/294/78 240/282/78 239/295/78 -f 249/296/74 248/297/74 247/298/74 -f 253/299/77 251/300/77 252/301/77 -f 250/302/68 253/299/68 248/303/68 -f 247/304/79 251/305/79 249/306/79 -f 249/306/80 254/307/80 250/302/80 -f 248/303/81 252/308/81 247/309/81 -f 255/310/82 258/311/82 256/312/82 -f 259/313/83 261/314/83 260/315/83 -f 271/316/84 274/317/84 272/318/84 -f 268/319/85 269/320/85 270/321/85 -f 328/279/77 331/322/77 334/323/77 -f 329/324/74 333/325/74 332/326/74 -f 275/327/86 278/328/86 276/329/86 -f 279/330/87 282/331/87 280/332/87 -f 284/333/88 285/334/88 286/335/88 -f 289/336/89 288/337/89 287/338/89 -f 231/339/90 234/340/90 233/341/90 -f 313/342/91 312/343/91 314/344/91 -f 298/345/68 288/346/68 290/347/68 -f 295/348/92 290/347/92 289/336/92 -f 297/349/93 287/350/93 288/346/93 -f 297/351/94 295/352/94 296/353/94 -f 263/354/95 266/355/95 265/356/95 -f 315/357/96 318/358/96 317/359/96 -f 294/360/97 291/361/97 292/362/97 -f 296/363/79 289/336/79 287/364/79 -f 299/365/98 302/366/98 301/367/98 -f 305/368/89 304/369/89 303/370/89 -f 306/371/68 309/372/68 304/373/68 -f 307/374/92 306/371/92 305/368/92 -f 309/372/93 303/375/93 304/373/93 -f 309/376/94 307/377/94 308/378/94 -f 308/379/79 305/368/79 303/380/79 -f 329/381/99 328/279/99 327/382/99 -f 329/324/100 331/322/100 330/383/100 -f 326/384/101 323/385/101 324/386/101 -f 322/387/102 319/388/102 320/389/102 -f 338/269/103 339/390/103 337/271/103 -f 335/391/104 341/392/104 336/267/104 -f 339/393/105 341/394/105 340/395/105 -f 335/396/79 339/390/79 340/397/79 -f 344/398/69 345/399/69 343/400/69 -f 346/401/68 349/402/68 350/403/68 -f 346/401/103 347/404/103 345/399/103 -f 343/405/104 349/402/104 344/406/104 -f 347/407/105 349/408/105 348/409/105 -f 345/399/79 348/410/79 343/411/79 -f 336/267/68 341/392/68 342/268/68 -f 336/270/69 338/269/69 337/271/69 -f 259/273/70 260/285/70 241/274/70 -f 333/276/71 334/412/71 331/277/71 -f 328/279/72 334/323/72 333/280/72 -f 240/282/73 242/275/73 241/283/73 -f 260/285/74 261/413/74 239/286/74 -f 236/287/75 235/414/75 237/288/75 -f 246/290/76 244/415/76 243/291/76 -f 262/293/77 259/273/77 242/275/77 -f 261/294/78 262/293/78 240/282/78 -f 249/296/74 250/416/74 248/297/74 -f 253/299/77 254/307/77 251/300/77 -f 250/302/68 254/307/68 253/299/68 -f 247/304/79 252/417/79 251/305/79 -f 249/306/80 251/305/80 254/307/80 -f 248/303/81 253/299/81 252/308/81 -f 255/310/82 257/418/82 258/311/82 -f 259/313/83 262/419/83 261/314/83 -f 271/316/84 273/420/84 274/317/84 -f 268/319/85 267/421/85 269/320/85 -f 328/279/77 330/383/77 331/322/77 -f 329/324/74 327/422/74 333/325/74 -f 275/327/86 277/423/86 278/328/86 -f 279/330/87 281/424/87 282/331/87 -f 284/333/88 283/425/88 285/334/88 -f 289/336/89 290/347/89 288/337/89 -f 231/339/90 232/426/90 234/340/90 -f 313/342/91 311/427/91 312/343/91 -f 298/345/68 297/349/68 288/346/68 -f 295/348/92 298/345/92 290/347/92 -f 297/349/93 296/428/93 287/350/93 -f 297/351/94 298/429/94 295/352/94 -f 263/354/95 264/430/95 266/355/95 -f 315/357/96 316/431/96 318/358/96 -f 294/360/97 293/432/97 291/361/97 -f 296/363/79 295/348/79 289/336/79 -f 299/365/98 300/433/98 302/366/98 -f 305/368/89 306/371/89 304/369/89 -f 306/371/68 310/434/68 309/372/68 -f 307/374/92 310/434/92 306/371/92 -f 309/372/93 308/435/93 303/375/93 -f 309/376/94 310/436/94 307/377/94 -f 308/379/79 307/374/79 305/368/79 -f 329/381/99 330/383/99 328/279/99 -f 329/324/100 332/326/100 331/322/100 -f 326/384/101 325/437/101 323/385/101 -f 322/387/102 321/438/102 319/388/102 -f 338/269/103 342/268/103 339/390/103 -f 335/391/104 340/439/104 341/392/104 -f 339/393/105 342/440/105 341/394/105 -f 335/396/79 337/271/79 339/390/79 -f 344/398/69 346/401/69 345/399/69 -f 346/401/68 344/406/68 349/402/68 -f 346/401/103 350/403/103 347/404/103 -f 343/405/104 348/441/104 349/402/104 -f 347/407/105 350/442/105 349/408/105 -f 345/399/79 347/404/79 348/410/79 +f 371/334/89 377/335/89 373/336/89 +f 371/337/90 372/338/90 370/339/90 +f 294/340/91 276/341/91 277/342/91 +f 368/343/92 366/344/92 367/345/92 +f 363/346/93 368/347/93 362/348/93 +f 275/349/94 276/350/94 274/351/94 +f 295/352/95 274/353/95 276/341/95 +f 271/354/96 272/355/96 273/356/96 +f 281/357/97 278/358/97 280/359/97 +f 297/360/98 277/342/98 275/349/98 +f 296/361/99 275/349/99 274/362/99 +f 284/363/95 283/364/95 282/365/95 +f 288/366/98 286/367/98 287/368/98 +f 285/369/89 288/366/89 283/370/89 +f 282/371/100 286/372/100 284/373/100 +f 284/373/101 289/374/101 285/369/101 +f 283/370/102 287/375/102 282/376/102 +f 290/377/103 293/378/103 291/379/103 +f 294/380/104 296/381/104 295/382/104 +f 306/383/105 309/384/105 307/385/105 +f 303/386/106 304/387/106 305/388/106 +f 363/346/98 366/389/98 369/390/98 +f 364/391/95 368/392/95 367/393/95 +f 310/394/107 313/395/107 311/396/107 +f 314/397/108 317/398/108 315/399/108 +f 319/400/109 320/401/109 321/402/109 +f 324/403/110 323/404/110 322/405/110 +f 266/406/111 269/407/111 268/408/111 +f 348/409/112 347/410/112 349/411/112 +f 333/412/89 323/413/89 325/414/89 +f 330/415/113 325/414/113 324/403/113 +f 332/416/114 322/417/114 323/413/114 +f 332/418/115 330/419/115 331/420/115 +f 298/421/116 301/422/116 300/423/116 +f 350/424/117 353/425/117 352/426/117 +f 329/427/118 326/428/118 327/429/118 +f 331/430/100 324/403/100 322/431/100 +f 334/432/119 337/433/119 336/434/119 +f 340/435/110 339/436/110 338/437/110 +f 341/438/89 344/439/89 339/440/89 +f 342/441/113 341/438/113 340/435/113 +f 344/439/114 338/442/114 339/440/114 +f 344/443/115 342/444/115 343/445/115 +f 343/446/100 340/435/100 338/447/100 +f 364/448/120 363/346/120 362/449/120 +f 364/391/121 366/389/121 365/450/121 +f 361/451/122 358/452/122 359/453/122 +f 357/454/123 354/455/123 355/456/123 +f 373/336/124 374/457/124 372/338/124 +f 370/458/125 376/459/125 371/334/125 +f 374/460/126 376/461/126 375/462/126 +f 370/463/100 374/457/100 375/464/100 +f 379/465/90 380/466/90 378/467/90 +f 381/468/89 384/469/89 385/470/89 +f 381/468/124 382/471/124 380/466/124 +f 378/472/125 384/469/125 379/473/125 +f 382/474/126 384/475/126 383/476/126 +f 380/466/100 383/477/100 378/478/100 +f 371/334/89 376/459/89 377/335/89 +f 371/337/90 373/336/90 372/338/90 +f 294/340/91 295/352/91 276/341/91 +f 368/343/92 369/479/92 366/344/92 +f 363/346/93 369/390/93 368/347/93 +f 275/349/94 277/342/94 276/350/94 +f 295/352/95 296/480/95 274/353/95 +f 271/354/96 270/481/96 272/355/96 +f 281/357/97 279/482/97 278/358/97 +f 297/360/98 294/340/98 277/342/98 +f 296/361/99 297/360/99 275/349/99 +f 284/363/95 285/483/95 283/364/95 +f 288/366/98 289/374/98 286/367/98 +f 285/369/89 289/374/89 288/366/89 +f 282/371/100 287/484/100 286/372/100 +f 284/373/101 286/372/101 289/374/101 +f 283/370/102 288/366/102 287/375/102 +f 290/377/103 292/485/103 293/378/103 +f 294/380/104 297/486/104 296/381/104 +f 306/383/105 308/487/105 309/384/105 +f 303/386/106 302/488/106 304/387/106 +f 363/346/98 365/450/98 366/389/98 +f 364/391/95 362/489/95 368/392/95 +f 310/394/107 312/490/107 313/395/107 +f 314/397/108 316/491/108 317/398/108 +f 319/400/109 318/492/109 320/401/109 +f 324/403/110 325/414/110 323/404/110 +f 266/406/111 267/493/111 269/407/111 +f 348/409/112 346/494/112 347/410/112 +f 333/412/89 332/416/89 323/413/89 +f 330/415/113 333/412/113 325/414/113 +f 332/416/114 331/495/114 322/417/114 +f 332/418/115 333/496/115 330/419/115 +f 298/421/116 299/497/116 301/422/116 +f 350/424/117 351/498/117 353/425/117 +f 329/427/118 328/499/118 326/428/118 +f 331/430/100 330/415/100 324/403/100 +f 334/432/119 335/500/119 337/433/119 +f 340/435/110 341/438/110 339/436/110 +f 341/438/89 345/501/89 344/439/89 +f 342/441/113 345/501/113 341/438/113 +f 344/439/114 343/502/114 338/442/114 +f 344/443/115 345/503/115 342/444/115 +f 343/446/100 342/441/100 340/435/100 +f 364/448/120 365/450/120 363/346/120 +f 364/391/121 367/393/121 366/389/121 +f 361/451/122 360/504/122 358/452/122 +f 357/454/123 356/505/123 354/455/123 +f 373/336/124 377/335/124 374/457/124 +f 370/458/125 375/506/125 376/459/125 +f 374/460/126 377/507/126 376/461/126 +f 370/463/100 372/338/100 374/457/100 +f 379/465/90 381/468/90 380/466/90 +f 381/468/89 379/473/89 384/469/89 +f 381/468/124 385/470/124 382/471/124 +f 378/472/125 383/508/125 384/469/125 +f 382/474/126 385/509/126 384/475/126 +f 380/466/100 382/471/100 383/477/100 o Horn v 0.205806 2.419194 0.062500 v 0.294194 2.330806 0.062500 @@ -1380,10 +1554,10 @@ vn 0.0587 0.0587 -0.9965 vn 0.0587 0.0587 0.9965 vn -0.6459 0.7634 0.0000 s off -f 354/443/106 355/444/106 352/445/106 -f 353/446/107 355/444/107 354/447/107 -f 352/448/108 355/444/108 351/449/108 -f 353/450/109 351/451/109 355/444/109 +f 389/510/127 390/511/127 387/512/127 +f 388/513/128 390/511/128 389/514/128 +f 387/515/129 390/511/129 386/516/129 +f 388/517/130 386/518/130 390/511/130 o PelletShine v -0.000000 0.250000 -0.375000 v -0.187500 0.250000 -0.324760 @@ -1447,64 +1621,64 @@ vn 0.1862 0.6947 0.6947 vn 0.5086 0.6947 0.5086 vn 0.0000 1.0000 0.0000 s off -f 370//110 357//110 358//110 -f 377//111 364//111 365//111 -f 374//112 361//112 362//112 -f 371//113 358//113 359//113 -f 378//114 365//114 366//114 -f 375//115 362//115 363//115 -f 372//116 359//116 360//116 -f 379//117 366//117 367//117 -f 369//118 356//118 357//118 -f 376//119 363//119 364//119 -f 373//120 360//120 361//120 -f 368//121 367//121 356//121 -f 377//122 388//122 376//122 -f 377//123 390//123 389//123 -f 378//124 391//124 390//124 -f 379//125 380//125 391//125 -f 368//126 381//126 380//126 -f 369//127 382//127 381//127 -f 371//128 382//128 370//128 -f 372//129 383//129 371//129 -f 373//130 384//130 372//130 -f 374//131 385//131 373//131 -f 375//132 386//132 374//132 -f 376//133 387//133 375//133 -f 388//134 390//134 380//134 -f 370//110 369//110 357//110 -f 377//111 376//111 364//111 -f 374//112 373//112 361//112 -f 371//113 370//113 358//113 -f 378//114 377//114 365//114 -f 375//115 374//115 362//115 -f 372//116 371//116 359//116 -f 379//117 378//117 366//117 -f 369//118 368//118 356//118 -f 376//119 375//119 363//119 -f 373//120 372//120 360//120 -f 368//121 379//121 367//121 -f 377//122 389//122 388//122 -f 377//123 378//123 390//123 -f 378//124 379//124 391//124 -f 379//125 368//125 380//125 -f 368//126 369//126 381//126 -f 369//127 370//127 382//127 -f 371//128 383//128 382//128 -f 372//129 384//129 383//129 -f 373//130 385//130 384//130 -f 374//131 386//131 385//131 -f 375//132 387//132 386//132 -f 376//133 388//133 387//133 -f 380//134 381//134 384//134 -f 381//134 382//134 384//134 -f 382//134 383//134 384//134 -f 384//134 385//134 386//134 -f 386//134 387//134 388//134 -f 388//134 389//134 390//134 -f 390//134 391//134 380//134 -f 384//134 386//134 380//134 -f 386//134 388//134 380//134 +f 405//131 392//131 393//131 +f 412//132 399//132 400//132 +f 409//133 396//133 397//133 +f 406//134 393//134 394//134 +f 413//135 400//135 401//135 +f 410//136 397//136 398//136 +f 407//137 394//137 395//137 +f 414//138 401//138 402//138 +f 404//139 391//139 392//139 +f 411//140 398//140 399//140 +f 408//141 395//141 396//141 +f 403//142 402//142 391//142 +f 412//143 423//143 411//143 +f 412//144 425//144 424//144 +f 413//145 426//145 425//145 +f 414//146 415//146 426//146 +f 403//147 416//147 415//147 +f 404//148 417//148 416//148 +f 406//149 417//149 405//149 +f 407//150 418//150 406//150 +f 408//151 419//151 407//151 +f 409//152 420//152 408//152 +f 410//153 421//153 409//153 +f 411//154 422//154 410//154 +f 423//155 425//155 415//155 +f 405//131 404//131 392//131 +f 412//132 411//132 399//132 +f 409//133 408//133 396//133 +f 406//134 405//134 393//134 +f 413//135 412//135 400//135 +f 410//136 409//136 397//136 +f 407//137 406//137 394//137 +f 414//138 413//138 401//138 +f 404//139 403//139 391//139 +f 411//140 410//140 398//140 +f 408//141 407//141 395//141 +f 403//142 414//142 402//142 +f 412//143 424//143 423//143 +f 412//144 413//144 425//144 +f 413//145 414//145 426//145 +f 414//146 403//146 415//146 +f 403//147 404//147 416//147 +f 404//148 405//148 417//148 +f 406//149 418//149 417//149 +f 407//150 419//150 418//150 +f 408//151 420//151 419//151 +f 409//152 421//152 420//152 +f 410//153 422//153 421//153 +f 411//154 423//154 422//154 +f 415//155 416//155 419//155 +f 416//155 417//155 419//155 +f 417//155 418//155 419//155 +f 419//155 420//155 421//155 +f 421//155 422//155 423//155 +f 423//155 424//155 425//155 +f 425//155 426//155 415//155 +f 419//155 421//155 415//155 +f 421//155 423//155 415//155 o Pellet v 0.000000 0.250000 -0.312500 v -0.156250 0.250000 -0.270633 @@ -1630,64 +1804,64 @@ vn 0.6947 0.6947 0.1862 vn 0.6947 0.6947 -0.1862 vn 0.0000 1.0000 -0.0000 s off -f 398/452/135 409/453/135 397/454/135 -f 395/455/136 406/456/136 394/457/136 -f 402/458/137 413/459/137 401/460/137 -f 399/461/138 410/462/138 398/452/138 -f 396/463/139 407/464/139 395/465/139 -f 403/466/140 414/467/140 402/458/140 -f 393/468/141 404/469/141 392/470/141 -f 400/471/142 411/472/142 399/461/142 -f 397/454/143 408/473/143 396/463/143 -f 392/470/144 415/474/144 403/466/144 -f 394/457/145 405/475/145 393/468/145 -f 401/460/146 412/476/146 400/471/146 -f 414/467/147 427/477/147 426/478/147 -f 415/474/148 416/479/148 427/480/148 -f 405/475/149 416/481/149 404/469/149 -f 406/456/150 417/482/150 405/475/150 -f 407/483/151 418/484/151 406/456/151 -f 408/473/152 419/485/152 407/464/152 -f 409/453/153 420/486/153 408/473/153 -f 410/462/154 421/487/154 409/453/154 -f 411/472/155 422/488/155 410/462/155 -f 411/472/156 424/489/156 423/490/156 -f 412/476/157 425/491/157 424/492/157 -f 413/459/158 426/493/158 425/494/158 -f 420/495/159 424/496/159 416/497/159 -f 398/452/135 410/462/135 409/453/135 -f 395/455/136 407/483/136 406/456/136 -f 402/458/137 414/467/137 413/459/137 -f 399/461/138 411/472/138 410/462/138 -f 396/463/139 408/473/139 407/464/139 -f 403/466/140 415/474/140 414/467/140 -f 393/468/141 405/475/141 404/469/141 -f 400/471/142 412/476/142 411/472/142 -f 397/454/143 409/453/143 408/473/143 -f 392/470/144 404/469/144 415/474/144 -f 394/457/145 406/456/145 405/475/145 -f 401/460/146 413/459/146 412/476/146 -f 414/467/147 415/474/147 427/477/147 -f 415/474/148 404/469/148 416/479/148 -f 405/475/149 417/498/149 416/481/149 -f 406/456/150 418/499/150 417/482/150 -f 407/483/151 419/500/151 418/484/151 -f 408/473/152 420/501/152 419/485/152 -f 409/453/153 421/502/153 420/486/153 -f 410/462/154 422/503/154 421/487/154 -f 411/472/155 423/504/155 422/488/155 -f 411/472/156 412/476/156 424/489/156 -f 412/476/157 413/459/157 425/491/157 -f 413/459/158 414/467/158 426/493/158 -f 416/497/159 417/505/159 418/506/159 -f 418/506/159 419/507/159 420/495/159 -f 420/495/159 421/508/159 422/509/159 -f 422/509/159 423/510/159 420/495/159 -f 423/510/159 424/496/159 420/495/159 -f 424/496/159 425/511/159 426/512/159 -f 426/512/159 427/513/159 416/497/159 -f 416/497/159 418/506/159 420/495/159 -f 424/496/159 426/512/159 416/497/159 +f 433/519/156 444/520/156 432/521/156 +f 430/522/157 441/523/157 429/524/157 +f 437/525/158 448/526/158 436/527/158 +f 434/528/159 445/529/159 433/519/159 +f 431/530/160 442/531/160 430/532/160 +f 438/533/161 449/534/161 437/525/161 +f 428/535/162 439/536/162 427/537/162 +f 435/538/163 446/539/163 434/528/163 +f 432/521/164 443/540/164 431/530/164 +f 427/537/165 450/541/165 438/533/165 +f 429/524/166 440/542/166 428/535/166 +f 436/527/167 447/543/167 435/538/167 +f 449/534/168 462/544/168 461/545/168 +f 450/541/169 451/546/169 462/547/169 +f 440/542/170 451/548/170 439/536/170 +f 441/523/171 452/549/171 440/542/171 +f 442/550/172 453/551/172 441/523/172 +f 443/540/173 454/552/173 442/531/173 +f 444/520/174 455/553/174 443/540/174 +f 445/529/175 456/554/175 444/520/175 +f 446/539/176 457/555/176 445/529/176 +f 446/539/177 459/556/177 458/557/177 +f 447/543/178 460/558/178 459/559/178 +f 448/526/179 461/560/179 460/561/179 +f 455/562/180 459/563/180 451/564/180 +f 433/519/156 445/529/156 444/520/156 +f 430/522/157 442/550/157 441/523/157 +f 437/525/158 449/534/158 448/526/158 +f 434/528/159 446/539/159 445/529/159 +f 431/530/160 443/540/160 442/531/160 +f 438/533/161 450/541/161 449/534/161 +f 428/535/162 440/542/162 439/536/162 +f 435/538/163 447/543/163 446/539/163 +f 432/521/164 444/520/164 443/540/164 +f 427/537/165 439/536/165 450/541/165 +f 429/524/166 441/523/166 440/542/166 +f 436/527/167 448/526/167 447/543/167 +f 449/534/168 450/541/168 462/544/168 +f 450/541/169 439/536/169 451/546/169 +f 440/542/170 452/565/170 451/548/170 +f 441/523/171 453/566/171 452/549/171 +f 442/550/172 454/567/172 453/551/172 +f 443/540/173 455/568/173 454/552/173 +f 444/520/174 456/569/174 455/553/174 +f 445/529/175 457/570/175 456/554/175 +f 446/539/176 458/571/176 457/555/176 +f 446/539/177 447/543/177 459/556/177 +f 447/543/178 448/526/178 460/558/178 +f 448/526/179 449/534/179 461/560/179 +f 451/564/180 452/572/180 453/573/180 +f 453/573/180 454/574/180 455/562/180 +f 455/562/180 456/575/180 457/576/180 +f 457/576/180 458/577/180 455/562/180 +f 458/577/180 459/563/180 455/562/180 +f 459/563/180 460/578/180 461/579/180 +f 461/579/180 462/580/180 451/564/180 +f 451/564/180 453/573/180 455/562/180 +f 459/563/180 461/579/180 451/564/180 o Head v 0.375000 1.750000 0.375000 v -0.375000 1.750000 0.375000 @@ -1744,30 +1918,30 @@ vn 0.0000 0.0000 1.0000 vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 s off -f 431/514/160 428/515/160 429/516/160 -f 432/517/161 434/518/161 433/519/161 -f 430/520/162 432/517/162 428/521/162 -f 428/521/163 433/522/163 429/523/163 -f 429/524/164 434/525/164 431/526/164 -f 431/526/165 435/527/165 430/520/165 -f 439/528/160 436/529/160 437/530/160 -f 440/531/161 442/532/161 441/533/161 -f 438/534/162 440/531/162 436/535/162 -f 436/535/163 441/536/163 437/537/163 -f 437/538/164 442/539/164 439/540/164 -f 439/540/165 443/541/165 438/534/165 -f 431/514/160 430/542/160 428/515/160 -f 432/517/161 435/527/161 434/518/161 -f 430/520/162 435/527/162 432/517/162 -f 428/521/163 432/517/163 433/522/163 -f 429/524/164 433/543/164 434/525/164 -f 431/526/165 434/525/165 435/527/165 -f 439/528/160 438/544/160 436/529/160 -f 440/531/161 443/541/161 442/532/161 -f 438/534/162 443/541/162 440/531/162 -f 436/535/163 440/531/163 441/536/163 -f 437/538/164 441/545/164 442/539/164 -f 439/540/165 442/539/165 443/541/165 +f 466/581/181 463/582/181 464/583/181 +f 467/584/182 469/585/182 468/586/182 +f 465/587/183 467/584/183 463/588/183 +f 463/588/184 468/589/184 464/590/184 +f 464/591/185 469/592/185 466/593/185 +f 466/593/186 470/594/186 465/587/186 +f 474/595/181 471/596/181 472/597/181 +f 475/598/182 477/599/182 476/600/182 +f 473/601/183 475/598/183 471/602/183 +f 471/602/184 476/603/184 472/604/184 +f 472/605/185 477/606/185 474/607/185 +f 474/607/186 478/608/186 473/601/186 +f 466/581/181 465/609/181 463/582/181 +f 467/584/182 470/594/182 469/585/182 +f 465/587/183 470/594/183 467/584/183 +f 463/588/184 467/584/184 468/589/184 +f 464/591/185 468/610/185 469/592/185 +f 466/593/186 469/592/186 470/594/186 +f 474/595/181 473/611/181 471/596/181 +f 475/598/182 478/608/182 477/599/182 +f 473/601/183 478/608/183 475/598/183 +f 471/602/184 475/598/184 476/603/184 +f 472/605/185 476/612/185 477/606/185 +f 474/607/186 477/606/186 478/608/186 o LA v -0.125000 1.000000 -0.250000 v 0.125000 1.000000 -0.250000 @@ -1824,30 +1998,30 @@ vn 0.0000 1.0000 0.0000 vn 0.0000 -1.0000 0.0000 vn 0.0000 0.0000 1.0000 s off -f 450/546/166 445/547/166 449/548/166 -f 449/548/167 451/549/167 450/546/167 -f 448/550/168 446/551/168 451/549/168 -f 450/546/169 446/552/169 447/553/169 -f 449/554/170 444/555/170 448/556/170 -f 446/557/171 445/547/171 447/553/171 -f 457/558/170 452/559/170 456/560/170 -f 459/561/166 453/562/166 457/563/166 -f 458/564/169 455/565/169 459/561/169 -f 456/566/168 454/567/168 458/568/168 -f 454/569/171 453/562/171 455/565/171 -f 457/563/167 458/568/167 459/561/167 -f 450/546/166 447/553/166 445/547/166 -f 449/548/167 448/550/167 451/549/167 -f 448/550/168 444/570/168 446/551/168 -f 450/546/169 451/571/169 446/552/169 -f 449/554/170 445/572/170 444/555/170 -f 446/557/171 444/573/171 445/547/171 -f 457/558/170 453/574/170 452/559/170 -f 459/561/166 455/565/166 453/562/166 -f 458/564/169 454/575/169 455/565/169 -f 456/566/168 452/576/168 454/567/168 -f 454/569/171 452/577/171 453/562/171 -f 457/563/167 456/566/167 458/568/167 +f 485/613/187 480/614/187 484/615/187 +f 484/615/188 486/616/188 485/613/188 +f 483/617/189 481/618/189 486/616/189 +f 485/613/190 481/619/190 482/620/190 +f 484/621/191 479/622/191 483/623/191 +f 481/624/192 480/614/192 482/620/192 +f 492/625/191 487/626/191 491/627/191 +f 494/628/187 488/629/187 492/630/187 +f 493/631/190 490/632/190 494/628/190 +f 491/633/189 489/634/189 493/635/189 +f 489/636/192 488/629/192 490/632/192 +f 492/630/188 493/635/188 494/628/188 +f 485/613/187 482/620/187 480/614/187 +f 484/615/188 483/617/188 486/616/188 +f 483/617/189 479/637/189 481/618/189 +f 485/613/190 486/638/190 481/619/190 +f 484/621/191 480/639/191 479/622/191 +f 481/624/192 479/640/192 480/614/192 +f 492/625/191 488/641/191 487/626/191 +f 494/628/187 490/632/187 488/629/187 +f 493/631/190 489/642/190 490/632/190 +f 491/633/189 487/643/189 489/634/189 +f 489/636/192 487/644/192 488/629/192 +f 492/630/188 491/633/188 493/635/188 o RA v -0.125000 1.750000 0.250000 v 0.125000 1.750000 0.250000 @@ -1904,30 +2078,30 @@ vn 0.0000 -1.0000 0.0000 vn 1.0000 0.0000 -0.0000 vn 0.0000 1.0000 0.0000 s off -f 462/578/172 460/579/172 461/580/172 -f 465/581/173 466/582/173 464/583/173 -f 463/584/174 465/585/174 460/579/174 -f 462/586/175 467/587/175 463/588/175 -f 461/580/176 466/582/176 462/578/176 -f 461/580/177 465/589/177 464/583/177 -f 470/590/172 469/591/172 468/592/172 -f 473/593/173 474/594/173 472/595/173 -f 471/596/174 473/597/174 469/591/174 -f 469/598/177 472/595/177 468/592/177 -f 468/592/176 474/594/176 470/590/176 -f 470/599/175 475/600/175 471/601/175 -f 462/578/172 463/584/172 460/579/172 -f 465/581/173 467/602/173 466/582/173 -f 463/584/174 467/603/174 465/585/174 -f 462/586/175 466/604/175 467/587/175 -f 461/580/176 464/583/176 466/582/176 -f 461/580/177 460/605/177 465/589/177 -f 470/590/172 471/596/172 469/591/172 -f 473/593/173 475/606/173 474/594/173 -f 471/596/174 475/607/174 473/597/174 -f 469/598/177 473/608/177 472/595/177 -f 468/592/176 472/595/176 474/594/176 -f 470/599/175 474/609/175 475/600/175 +f 497/645/193 495/646/193 496/647/193 +f 500/648/194 501/649/194 499/650/194 +f 498/651/195 500/652/195 495/646/195 +f 497/653/196 502/654/196 498/655/196 +f 496/647/197 501/649/197 497/645/197 +f 496/647/198 500/656/198 499/650/198 +f 505/657/193 504/658/193 503/659/193 +f 508/660/194 509/661/194 507/662/194 +f 506/663/195 508/664/195 504/658/195 +f 504/665/198 507/662/198 503/659/198 +f 503/659/197 509/661/197 505/657/197 +f 505/666/196 510/667/196 506/668/196 +f 497/645/193 498/651/193 495/646/193 +f 500/648/194 502/669/194 501/649/194 +f 498/651/195 502/670/195 500/652/195 +f 497/653/196 501/671/196 502/654/196 +f 496/647/197 499/650/197 501/649/197 +f 496/647/198 495/672/198 500/656/198 +f 505/657/193 506/663/193 504/658/193 +f 508/660/194 510/673/194 509/661/194 +f 506/663/195 510/674/195 508/664/195 +f 504/665/198 508/675/198 507/662/198 +f 503/659/197 507/662/197 509/661/197 +f 505/666/196 509/676/196 510/667/196 o LL v -0.125000 1.000000 -0.250000 v -0.125000 0.250000 -0.250000 @@ -1984,30 +2158,30 @@ vn 1.0000 0.0000 -0.0000 vn 0.0000 1.0000 0.0000 vn 0.0000 0.0000 -1.0000 s off -f 477/610/178 483/611/178 481/612/178 -f 480/613/179 477/614/179 481/615/179 -f 482/616/180 481/617/180 483/618/180 -f 478/619/181 483/618/181 479/620/181 -f 480/621/182 478/619/182 476/622/182 -f 476/623/183 479/620/183 477/614/183 -f 488/624/182 486/625/182 484/626/182 -f 485/627/178 491/628/178 489/629/178 -f 486/625/181 491/630/181 487/631/181 -f 484/632/183 487/631/183 485/633/183 -f 488/634/179 485/633/179 489/635/179 -f 490/636/180 489/637/180 491/630/180 -f 477/610/178 479/638/178 483/611/178 -f 480/613/179 476/623/179 477/614/179 -f 482/616/180 480/639/180 481/617/180 -f 478/619/181 482/616/181 483/618/181 -f 480/621/182 482/616/182 478/619/182 -f 476/623/183 478/619/183 479/620/183 -f 488/624/182 490/636/182 486/625/182 -f 485/627/178 487/640/178 491/628/178 -f 486/625/181 490/636/181 491/630/181 -f 484/632/183 486/625/183 487/631/183 -f 488/634/179 484/632/179 485/633/179 -f 490/636/180 488/641/180 489/637/180 +f 512/677/199 518/678/199 516/679/199 +f 515/680/200 512/681/200 516/682/200 +f 517/683/201 516/684/201 518/685/201 +f 513/686/202 518/685/202 514/687/202 +f 515/688/203 513/686/203 511/689/203 +f 511/690/204 514/687/204 512/681/204 +f 523/691/203 521/692/203 519/693/203 +f 520/694/199 526/695/199 524/696/199 +f 521/692/202 526/697/202 522/698/202 +f 519/699/204 522/698/204 520/700/204 +f 523/701/200 520/700/200 524/702/200 +f 525/703/201 524/704/201 526/697/201 +f 512/677/199 514/705/199 518/678/199 +f 515/680/200 511/690/200 512/681/200 +f 517/683/201 515/706/201 516/684/201 +f 513/686/202 517/683/202 518/685/202 +f 515/688/203 517/683/203 513/686/203 +f 511/690/204 513/686/204 514/687/204 +f 523/691/203 525/703/203 521/692/203 +f 520/694/199 522/707/199 526/695/199 +f 521/692/202 525/703/202 526/697/202 +f 519/699/204 521/692/204 522/698/204 +f 523/701/200 519/699/200 520/700/200 +f 525/703/201 523/708/201 524/704/201 o RL v 0.125000 0.250000 0.250000 v 0.125000 1.000000 0.250000 @@ -2064,30 +2238,30 @@ vn 1.0000 0.0000 -0.0000 vn 0.0000 -1.0000 0.0000 vn 0.0000 1.0000 0.0000 s off -f 493/642/184 494/643/184 492/644/184 -f 495/645/185 498/646/185 494/647/185 -f 499/648/186 496/649/186 498/646/186 -f 497/650/187 492/644/187 496/649/187 -f 498/651/188 492/652/188 494/653/188 -f 495/654/189 497/650/189 499/655/189 -f 501/656/184 502/657/184 500/658/184 -f 503/659/185 506/660/185 502/661/185 -f 507/662/186 504/663/186 506/660/186 -f 505/664/187 500/658/187 504/663/187 -f 506/665/188 500/666/188 502/667/188 -f 503/668/189 505/664/189 507/669/189 -f 493/642/184 495/670/184 494/643/184 -f 495/645/185 499/648/185 498/646/185 -f 499/648/186 497/650/186 496/649/186 -f 497/650/187 493/642/187 492/644/187 -f 498/651/188 496/671/188 492/652/188 -f 495/654/189 493/642/189 497/650/189 -f 501/656/184 503/672/184 502/657/184 -f 503/659/185 507/662/185 506/660/185 -f 507/662/186 505/664/186 504/663/186 -f 505/664/187 501/656/187 500/658/187 -f 506/665/188 504/673/188 500/666/188 -f 503/668/189 501/656/189 505/664/189 +f 528/709/205 529/710/205 527/711/205 +f 530/712/206 533/713/206 529/714/206 +f 534/715/207 531/716/207 533/713/207 +f 532/717/208 527/711/208 531/716/208 +f 533/718/209 527/719/209 529/720/209 +f 530/721/210 532/717/210 534/722/210 +f 536/723/205 537/724/205 535/725/205 +f 538/726/206 541/727/206 537/728/206 +f 542/729/207 539/730/207 541/727/207 +f 540/731/208 535/725/208 539/730/208 +f 541/732/209 535/733/209 537/734/209 +f 538/735/210 540/731/210 542/736/210 +f 528/709/205 530/737/205 529/710/205 +f 530/712/206 534/715/206 533/713/206 +f 534/715/207 532/717/207 531/716/207 +f 532/717/208 528/709/208 527/711/208 +f 533/718/209 531/738/209 527/719/209 +f 530/721/210 528/709/210 532/717/210 +f 536/723/205 538/739/205 537/724/205 +f 538/726/206 542/729/206 541/727/206 +f 542/729/207 540/731/207 539/730/207 +f 540/731/208 536/723/208 535/725/208 +f 541/732/209 539/740/209 535/733/209 +f 538/735/210 536/723/210 540/731/210 o Head17 v 0.375000 1.750000 0.375000 v -0.375000 1.750000 0.375000 @@ -2144,30 +2318,30 @@ vn 0.0000 0.0000 1.0000 vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 s off -f 511/674/190 508/675/190 509/676/190 -f 512/677/191 514/678/191 513/679/191 -f 510/680/192 512/677/192 508/681/192 -f 508/681/193 513/682/193 509/683/193 -f 509/684/194 514/685/194 511/686/194 -f 511/686/195 515/687/195 510/680/195 -f 519/688/190 516/689/190 517/690/190 -f 520/691/191 522/692/191 521/693/191 -f 518/694/192 520/691/192 516/695/192 -f 516/695/193 521/696/193 517/697/193 -f 517/698/194 522/699/194 519/700/194 -f 519/700/195 523/701/195 518/694/195 -f 511/674/190 510/702/190 508/675/190 -f 512/677/191 515/687/191 514/678/191 -f 510/680/192 515/687/192 512/677/192 -f 508/681/193 512/677/193 513/682/193 -f 509/684/194 513/703/194 514/685/194 -f 511/686/195 514/685/195 515/687/195 -f 519/688/190 518/704/190 516/689/190 -f 520/691/191 523/701/191 522/692/191 -f 518/694/192 523/701/192 520/691/192 -f 516/695/193 520/691/193 521/696/193 -f 517/698/194 521/705/194 522/699/194 -f 519/700/195 522/699/195 523/701/195 +f 546/741/211 543/742/211 544/743/211 +f 547/744/212 549/745/212 548/746/212 +f 545/747/213 547/744/213 543/748/213 +f 543/748/214 548/749/214 544/750/214 +f 544/751/215 549/752/215 546/753/215 +f 546/753/216 550/754/216 545/747/216 +f 554/755/211 551/756/211 552/757/211 +f 555/758/212 557/759/212 556/760/212 +f 553/761/213 555/758/213 551/762/213 +f 551/762/214 556/763/214 552/764/214 +f 552/765/215 557/766/215 554/767/215 +f 554/767/216 558/768/216 553/761/216 +f 546/741/211 545/769/211 543/742/211 +f 547/744/212 550/754/212 549/745/212 +f 545/747/213 550/754/213 547/744/213 +f 543/748/214 547/744/214 548/749/214 +f 544/751/215 548/770/215 549/752/215 +f 546/753/216 549/752/216 550/754/216 +f 554/755/211 553/771/211 551/756/211 +f 555/758/212 558/768/212 557/759/212 +f 553/761/213 558/768/213 555/758/213 +f 551/762/214 555/758/214 556/763/214 +f 552/765/215 556/772/215 557/766/215 +f 554/767/216 557/766/216 558/768/216 o RA17 v -0.125000 1.750000 0.250000 v 0.125000 1.750000 0.250000 @@ -2200,18 +2374,18 @@ vn 0.0000 -1.0000 0.0000 vn 1.0000 0.0000 -0.0000 vn 0.0000 1.0000 0.0000 s off -f 526/706/196 524/707/196 525/708/196 -f 529/709/197 530/710/197 528/711/197 -f 527/712/198 529/713/198 524/707/198 -f 526/714/199 531/715/199 527/716/199 -f 525/708/200 530/710/200 526/706/200 -f 525/708/201 529/717/201 528/711/201 -f 526/706/196 527/712/196 524/707/196 -f 529/709/197 531/718/197 530/710/197 -f 527/712/198 531/719/198 529/713/198 -f 526/714/199 530/720/199 531/715/199 -f 525/708/200 528/711/200 530/710/200 -f 525/708/201 524/721/201 529/717/201 +f 561/773/217 559/774/217 560/775/217 +f 564/776/218 565/777/218 563/778/218 +f 562/779/219 564/780/219 559/774/219 +f 561/781/220 566/782/220 562/783/220 +f 560/775/221 565/777/221 561/773/221 +f 560/775/222 564/784/222 563/778/222 +f 561/773/217 562/779/217 559/774/217 +f 564/776/218 566/785/218 565/777/218 +f 562/779/219 566/786/219 564/780/219 +f 561/781/220 565/787/220 566/782/220 +f 560/775/221 563/778/221 565/777/221 +f 560/775/222 559/788/222 564/784/222 o LA17 v -0.125000 1.000000 -0.500000 v 0.125000 1.000000 -0.500000 @@ -2244,18 +2418,18 @@ vn 0.0000 -1.0000 0.0000 vn 0.0000 0.0000 1.0000 vn -1.0000 0.0000 -0.0000 s off -f 533/722/202 534/723/202 535/724/202 -f 538/725/203 534/726/203 539/727/203 -f 533/722/204 538/725/204 537/728/204 -f 532/729/205 537/730/205 536/731/205 -f 539/732/206 537/728/206 538/725/206 -f 534/733/207 536/734/207 539/732/207 -f 533/722/202 532/735/202 534/723/202 -f 538/725/203 535/724/203 534/726/203 -f 533/722/204 535/724/204 538/725/204 -f 532/729/205 533/736/205 537/730/205 -f 539/732/206 536/734/206 537/728/206 -f 534/733/207 532/737/207 536/734/207 +f 568/789/223 569/790/223 570/791/223 +f 573/792/224 569/793/224 574/794/224 +f 568/789/225 573/792/225 572/795/225 +f 567/796/226 572/797/226 571/798/226 +f 574/799/227 572/795/227 573/792/227 +f 569/800/228 571/801/228 574/799/228 +f 568/789/223 567/802/223 569/790/223 +f 573/792/224 570/791/224 569/793/224 +f 568/789/225 570/791/225 573/792/225 +f 567/796/226 568/803/226 572/797/226 +f 574/799/227 571/801/227 572/795/227 +f 569/800/228 567/804/228 571/801/228 o LL17 v -0.125000 1.000000 0.000000 v -0.125000 0.250000 0.000000 @@ -2288,18 +2462,18 @@ vn 0.0000 0.0000 1.0000 vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 s off -f 542/738/208 544/739/208 540/740/208 -f 547/741/209 541/742/209 545/743/209 -f 547/744/210 542/738/210 543/745/210 -f 543/745/211 540/746/211 541/747/211 -f 541/747/212 544/748/212 545/749/212 -f 545/750/213 546/751/213 547/744/213 -f 542/738/208 546/751/208 544/739/208 -f 547/741/209 543/752/209 541/742/209 -f 547/744/210 546/751/210 542/738/210 -f 543/745/211 542/738/211 540/746/211 -f 541/747/212 540/746/212 544/748/212 -f 545/750/213 544/753/213 546/751/213 +f 577/805/229 579/806/229 575/807/229 +f 582/808/230 576/809/230 580/810/230 +f 582/811/231 577/805/231 578/812/231 +f 578/812/232 575/813/232 576/814/232 +f 576/814/233 579/815/233 580/816/233 +f 580/817/234 581/818/234 582/811/234 +f 577/805/229 581/818/229 579/806/229 +f 582/808/230 578/819/230 576/809/230 +f 582/811/231 581/818/231 577/805/231 +f 578/812/232 577/805/232 575/813/232 +f 576/814/233 575/813/233 579/815/233 +f 580/817/234 579/820/234 581/818/234 o RL17 v 0.125000 0.250000 0.250000 v 0.125000 1.000000 0.250000 @@ -2332,18 +2506,18 @@ vn 1.0000 0.0000 -0.0000 vn 0.0000 -1.0000 0.0000 vn 0.0000 1.0000 0.0000 s off -f 549/754/214 550/755/214 548/756/214 -f 551/757/215 554/758/215 550/759/215 -f 555/760/216 552/761/216 554/758/216 -f 553/762/217 548/756/217 552/761/217 -f 554/763/218 548/764/218 550/765/218 -f 551/766/219 553/762/219 555/767/219 -f 549/754/214 551/768/214 550/755/214 -f 551/757/215 555/760/215 554/758/215 -f 555/760/216 553/762/216 552/761/216 -f 553/762/217 549/754/217 548/756/217 -f 554/763/218 552/769/218 548/764/218 -f 551/766/219 549/754/219 553/762/219 +f 584/821/235 585/822/235 583/823/235 +f 586/824/236 589/825/236 585/826/236 +f 590/827/237 587/828/237 589/825/237 +f 588/829/238 583/823/238 587/828/238 +f 589/830/239 583/831/239 585/832/239 +f 586/833/240 588/829/240 590/834/240 +f 584/821/235 586/835/235 585/822/235 +f 586/824/236 590/827/236 589/825/236 +f 590/827/237 588/829/237 587/828/237 +f 588/829/238 584/821/238 583/823/238 +f 589/830/239 587/836/239 583/831/239 +f 586/833/240 584/821/240 588/829/240 o Body17 v 0.125000 1.750000 0.250000 v -0.125000 1.750000 0.250000 @@ -2376,18 +2550,18 @@ vn 0.0000 0.0000 -1.0000 vn 1.0000 0.0000 -0.0000 vn 0.0000 0.0000 1.0000 s off -f 556/770/220 559/771/220 557/772/220 -f 562/773/221 560/774/221 561/775/221 -f 559/776/222 561/777/222 557/778/222 -f 558/779/223 562/780/223 559/776/223 -f 556/770/224 563/781/224 558/779/224 -f 557/782/225 560/783/225 556/770/225 -f 556/770/220 558/779/220 559/771/220 -f 562/773/221 563/784/221 560/774/221 -f 559/776/222 562/780/222 561/777/222 -f 558/779/223 563/781/223 562/780/223 -f 556/770/224 560/783/224 563/781/224 -f 557/782/225 561/785/225 560/783/225 +f 591/837/241 594/838/241 592/839/241 +f 597/840/242 595/841/242 596/842/242 +f 594/843/243 596/844/243 592/845/243 +f 593/846/244 597/847/244 594/843/244 +f 591/837/245 598/848/245 593/846/245 +f 592/849/246 595/850/246 591/837/246 +f 591/837/241 593/846/241 594/838/241 +f 597/840/242 598/851/242 595/841/242 +f 594/843/243 597/847/243 596/844/243 +f 593/846/244 598/848/244 597/847/244 +f 591/837/245 595/850/245 598/848/245 +f 592/849/246 596/852/246 595/850/246 o Socket v 0.625000 0.000000 0.625000 v 0.625000 0.000000 -0.625000 @@ -2424,18 +2598,18 @@ vn 1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 vn 0.0000 0.0000 1.0000 s off -f 566/786/226 565/787/226 564/788/226 -f 570/789/227 568/790/227 569/791/227 -f 566/792/228 571/793/228 567/794/228 -f 565/795/229 569/796/229 564/797/229 -f 567/798/230 570/799/230 565/787/230 -f 564/800/231 568/790/231 566/801/231 -f 566/786/226 567/798/226 565/787/226 -f 570/789/227 571/802/227 568/790/227 -f 566/792/228 568/803/228 571/793/228 -f 565/795/229 570/804/229 569/796/229 -f 567/798/230 571/805/230 570/799/230 -f 564/800/231 569/791/231 568/790/231 +f 601/853/247 600/854/247 599/855/247 +f 605/856/248 603/857/248 604/858/248 +f 601/859/249 606/860/249 602/861/249 +f 600/862/250 604/863/250 599/864/250 +f 602/865/251 605/866/251 600/854/251 +f 599/867/252 603/857/252 601/868/252 +f 601/853/247 602/865/247 600/854/247 +f 605/856/248 606/869/248 603/857/248 +f 601/859/249 603/870/249 606/860/249 +f 600/862/250 605/871/250 604/863/250 +f 602/865/251 606/872/251 605/866/251 +f 599/867/252 604/858/252 603/857/252 o Body v 0.125000 1.750000 0.250000 v -0.125000 1.750000 0.250000 @@ -2492,27 +2666,27 @@ vn 0.0000 0.0000 -1.0000 vn 1.0000 0.0000 -0.0000 vn 0.0000 0.0000 1.0000 s off -f 572/806/232 575/807/232 573/808/232 -f 578/809/233 576/810/233 577/811/233 -f 575/812/234 577/813/234 573/814/234 -f 574/815/235 578/816/235 575/812/235 -f 572/806/236 579/817/236 574/815/236 -f 573/818/237 576/819/237 572/806/237 -f 580/820/232 583/821/232 581/822/232 -f 585/823/233 587/824/233 584/825/233 -f 583/826/234 585/827/234 581/828/234 -f 582/829/235 586/830/235 583/826/235 -f 580/820/236 587/831/236 582/829/236 -f 581/832/237 584/833/237 580/820/237 -f 572/806/232 574/815/232 575/807/232 -f 578/809/233 579/834/233 576/810/233 -f 575/812/234 578/816/234 577/813/234 -f 574/815/235 579/817/235 578/816/235 -f 572/806/236 576/819/236 579/817/236 -f 573/818/237 577/835/237 576/819/237 -f 580/820/232 582/829/232 583/821/232 -f 585/823/233 586/836/233 587/824/233 -f 583/826/234 586/830/234 585/827/234 -f 582/829/235 587/831/235 586/830/235 -f 580/820/236 584/833/236 587/831/236 -f 581/832/237 585/837/237 584/833/237 +f 607/873/253 610/874/253 608/875/253 +f 613/876/254 611/877/254 612/878/254 +f 610/879/255 612/880/255 608/881/255 +f 609/882/256 613/883/256 610/879/256 +f 607/873/257 614/884/257 609/882/257 +f 608/885/258 611/886/258 607/873/258 +f 615/887/253 618/888/253 616/889/253 +f 620/890/254 622/891/254 619/892/254 +f 618/893/255 620/894/255 616/895/255 +f 617/896/256 621/897/256 618/893/256 +f 615/887/257 622/898/257 617/896/257 +f 616/899/258 619/900/258 615/887/258 +f 607/873/253 609/882/253 610/874/253 +f 613/876/254 614/901/254 611/877/254 +f 610/879/255 613/883/255 612/880/255 +f 609/882/256 614/884/256 613/883/256 +f 607/873/257 611/886/257 614/884/257 +f 608/885/258 612/902/258 611/886/258 +f 615/887/253 617/896/253 618/888/253 +f 620/890/254 621/903/254 622/891/254 +f 618/893/255 621/897/255 620/894/255 +f 617/896/256 622/898/256 621/897/256 +f 615/887/257 619/900/257 622/898/257 +f 616/899/258 620/904/258 619/900/258 diff --git a/src/main/resources/assets/hbm/models/trinkets/lantern.obj b/src/main/resources/assets/hbm/models/trinkets/lantern.obj new file mode 100644 index 000000000..46f55c49d --- /dev/null +++ b/src/main/resources/assets/hbm/models/trinkets/lantern.obj @@ -0,0 +1,500 @@ +# Blender v2.79 (sub 0) OBJ File: 'lantern.blend' +# www.blender.org +o Light +v 0.187500 4.062500 0.187500 +v 0.312500 4.812500 0.312500 +v 0.187500 4.062500 -0.187500 +v 0.312500 4.812500 -0.312500 +v -0.181700 4.062500 0.187500 +v -0.306700 4.812500 0.312500 +v -0.181700 4.062500 -0.187500 +v -0.306700 4.812500 -0.312500 +vn 0.0000 -0.1644 0.9864 +vn -0.9864 -0.1644 0.0000 +vn 0.0000 -0.1644 -0.9864 +vn 0.9864 -0.1644 0.0000 +s off +f 2//1 5//1 1//1 +f 7//2 6//2 8//2 +f 3//3 8//3 4//3 +f 1//4 4//4 2//4 +f 2//1 6//1 5//1 +f 7//2 5//2 6//2 +f 3//3 7//3 8//3 +f 1//4 3//4 4//4 +o Lantern +v -0.125000 -0.250000 0.125000 +v 0.125000 -0.250000 0.125000 +v -0.125000 -0.250000 -0.125000 +v 0.125000 -0.250000 -0.125000 +v -0.125000 0.937500 0.125000 +v 0.125000 0.937500 0.125000 +v -0.125000 0.937500 -0.125000 +v 0.125000 0.937500 -0.125000 +v -0.062500 1.000000 0.062500 +v 0.062500 1.000000 0.062500 +v -0.062500 1.000000 -0.062500 +v 0.062500 1.000000 -0.062500 +v -0.125000 1.062500 0.125000 +v 0.125000 1.062500 0.125000 +v -0.125000 1.062500 -0.125000 +v 0.125000 1.062500 -0.125000 +v -0.125000 1.187500 0.125000 +v 0.125000 1.187500 0.125000 +v -0.125000 1.187500 -0.125000 +v 0.125000 1.187500 -0.125000 +v -0.062500 1.250000 0.062500 +v 0.062500 1.250000 0.062500 +v -0.062500 1.250000 -0.062500 +v 0.062500 1.250000 -0.062500 +v -0.062500 3.250000 -0.062500 +v -0.062500 3.250000 0.062500 +v 0.062500 3.250000 0.062500 +v 0.062500 3.250000 -0.062500 +v -0.125000 3.312500 -0.125000 +v -0.125000 3.312500 0.125000 +v 0.125000 3.312500 0.125000 +v 0.125000 3.312500 -0.125000 +v -0.125000 3.437500 -0.125000 +v -0.125000 3.437500 0.125000 +v 0.125000 3.437500 0.125000 +v 0.125000 3.437500 -0.125000 +v -0.062500 3.500000 -0.062500 +v -0.062500 3.500000 0.062500 +v 0.062500 3.500000 0.062500 +v 0.062500 3.500000 -0.062500 +v -0.062500 4.000000 -0.062500 +v -0.062500 4.000000 0.062500 +v 0.062500 4.000000 0.062500 +v 0.062500 4.000000 -0.062500 +v -0.250000 4.000000 0.250000 +v 0.250000 4.000000 0.250000 +v -0.250000 4.000000 -0.250000 +v 0.250000 4.000000 -0.250000 +v -0.250000 4.062500 -0.250000 +v -0.250000 4.062500 0.250000 +v 0.250000 4.062500 0.250000 +v 0.250000 4.062500 -0.250000 +v 0.250000 4.062500 0.250000 +v 0.250000 4.062500 0.187500 +v 0.187500 4.062500 0.250000 +v 0.187500 4.062500 0.187500 +v 0.375000 4.812500 0.375000 +v 0.375000 4.812500 0.312500 +v 0.312500 4.812500 0.375000 +v 0.312500 4.812500 0.312500 +v 0.250000 4.062500 -0.187500 +v 0.250000 4.062500 -0.250000 +v 0.187500 4.062500 -0.187500 +v 0.187500 4.062500 -0.250000 +v 0.375000 4.812500 -0.312500 +v 0.375000 4.812500 -0.375000 +v 0.312500 4.812500 -0.312500 +v 0.312500 4.812500 -0.375000 +v -0.181700 4.062500 0.250000 +v -0.181700 4.062500 0.187500 +v -0.244200 4.062500 0.250000 +v -0.244200 4.062500 0.187500 +v -0.306700 4.812500 0.375000 +v -0.306700 4.812500 0.312500 +v -0.369200 4.812500 0.375000 +v -0.369200 4.812500 0.312500 +v -0.181700 4.062500 -0.187500 +v -0.181700 4.062500 -0.250000 +v -0.244200 4.062500 -0.187500 +v -0.244200 4.062500 -0.250000 +v -0.306700 4.812500 -0.312500 +v -0.306700 4.812500 -0.375000 +v -0.369200 4.812500 -0.312500 +v -0.369200 4.812500 -0.375000 +v 0.375000 4.812500 0.375000 +v 0.375000 4.812500 -0.375000 +v -0.369200 4.812500 0.375000 +v -0.369200 4.812500 -0.375000 +v 0.375000 4.875000 0.375000 +v 0.375000 4.875000 -0.375000 +v -0.369200 4.875000 0.375000 +v -0.369200 4.875000 -0.375000 +v 0.125000 5.000000 -0.125000 +v 0.125000 5.000000 0.125000 +v -0.119200 5.000000 0.125000 +v -0.119200 5.000000 -0.125000 +v -0.059600 5.000000 0.062500 +v 0.065400 5.000000 0.062500 +v -0.059600 5.000000 -0.062500 +v 0.065400 5.000000 -0.062500 +v -0.059600 5.500000 0.062500 +v 0.065400 5.500000 0.062500 +v -0.059600 5.500000 -0.062500 +v 0.065400 5.500000 -0.062500 +vt 0.764706 0.176471 +vt 1.000000 0.235294 +vt 0.764706 0.235294 +vt 0.294118 0.279412 +vt 0.117647 0.294118 +vt 0.058824 0.279412 +vt 0.294118 -0.000000 +vt 0.058824 0.279412 +vt 0.058824 -0.000000 +vt 0.294118 -0.000000 +vt 0.058824 0.279412 +vt 0.058824 -0.000000 +vt 0.294118 -0.000000 +vt 0.058824 -0.000000 +vt 0.294118 -0.000000 +vt 0.058824 0.279412 +vt 0.058824 -0.000000 +vt 0.235294 0.294118 +vt 0.058824 0.308824 +vt 0.117647 0.294118 +vt 0.294118 0.279412 +vt 0.117647 0.294118 +vt 0.294118 0.279412 +vt 0.294118 0.279412 +vt 0.117647 0.294118 +vt 0.294118 0.308824 +vt 0.058824 0.338235 +vt 0.058824 0.308824 +vt 0.235294 0.294118 +vt 0.235294 0.294118 +vt 0.058824 0.308824 +vt 0.235294 0.294118 +vt 0.058824 0.308824 +vt 0.294118 0.338235 +vt 0.117647 0.352941 +vt 0.058824 0.338235 +vt 0.294118 0.308824 +vt 0.294118 0.308824 +vt 0.058824 0.338235 +vt 0.294118 0.308824 +vt 0.058824 0.338235 +vt 0.235294 0.352941 +vt 0.117647 0.823529 +vt 0.117647 0.352941 +vt 0.294118 0.338235 +vt 0.117647 0.352941 +vt 0.294118 0.338235 +vt 0.294118 0.338235 +vt 0.117647 0.352941 +vt 0.117647 0.823529 +vt 0.294118 0.838235 +vt 0.058824 0.838235 +vt 0.235294 0.352941 +vt 0.117647 0.823529 +vt 0.235294 0.352941 +vt 0.235294 0.352941 +vt 0.117647 0.823529 +vt 0.058824 0.867647 +vt 0.294118 0.838235 +vt 0.058824 0.838235 +vt 0.294118 0.838235 +vt 0.058824 0.838235 +vt 0.294118 0.838235 +vt 0.058824 0.838235 +vt 0.294118 0.867647 +vt 0.117647 0.882353 +vt 0.058824 0.867647 +vt 0.058824 0.867647 +vt 0.058824 0.867647 +vt 0.235294 0.882353 +vt 0.117647 1.000000 +vt 0.117647 0.882353 +vt 0.294118 0.867647 +vt 0.117647 0.882353 +vt 0.294118 0.867647 +vt 0.294118 0.867647 +vt 0.117647 0.882353 +vt 0.235294 0.882353 +vt 0.117647 1.000000 +vt 0.235294 0.882353 +vt 0.117647 1.000000 +vt 0.235294 0.882353 +vt 0.117647 1.000000 +vt 0.764706 -0.000000 +vt 0.294118 0.117647 +vt 0.294118 -0.000000 +vt 0.294118 0.132353 +vt 0.764706 0.250000 +vt 0.294118 0.250000 +vt 0.764706 0.117647 +vt 0.764706 0.117647 +vt 0.294118 0.132353 +vt 0.294118 0.117647 +vt 0.764706 0.117647 +vt 0.294118 0.132353 +vt 0.294118 0.117647 +vt 0.764706 0.117647 +vt 0.294118 0.132353 +vt 0.294118 0.117647 +vt 0.882353 0.000000 +vt 0.823529 0.176471 +vt 0.823529 0.000000 +vt 0.764706 0.176471 +vt 0.764706 0.000000 +vt 1.000000 0.176471 +vt 0.941176 0.000000 +vt 1.000000 0.000000 +vt 0.941176 0.176471 +vt 0.823529 0.000000 +vt 0.764706 0.176471 +vt 0.764706 0.000000 +vt 0.941176 0.000000 +vt 1.000000 0.176471 +vt 0.941176 0.176471 +vt 0.882353 0.000000 +vt 0.823529 0.176471 +vt 0.941176 0.176471 +vt 0.882353 0.000000 +vt 0.941176 0.000000 +vt 0.823529 0.176471 +vt 0.823529 0.000000 +vt 0.764706 0.176471 +vt 0.764706 0.000000 +vt 1.000000 0.176471 +vt 1.000000 0.000000 +vt 1.000000 0.176471 +vt 0.941176 0.000000 +vt 1.000000 0.000000 +vt 0.882353 0.000000 +vt 0.941176 0.176471 +vt 0.882353 0.176471 +vt 0.823529 0.176471 +vt 0.823529 0.000000 +vt 0.764706 0.176471 +vt 0.764706 0.000000 +vt 0.294118 0.426471 +vt 1.000000 0.250000 +vt 1.000000 0.426471 +vt 0.294118 0.617647 +vt 0.764706 0.558824 +vt 1.000000 0.617647 +vt 1.000000 0.426471 +vt 0.294118 0.441176 +vt 0.294118 0.426471 +vt 0.294118 0.441176 +vt 1.000000 0.426471 +vt 0.294118 0.441176 +vt 0.294118 0.426471 +vt 1.000000 0.426471 +vt 0.294118 0.441176 +vt 0.294118 0.426471 +vt 0.529412 0.500000 +vt 0.764706 0.500000 +vt 1.000000 0.441176 +vt 0.529412 0.558824 +vt 0.529412 0.735294 +vt 0.411765 0.617647 +vt 0.529412 0.617647 +vt 0.764706 0.735294 +vt 0.647059 0.617647 +vt 0.764706 0.617647 +vt 0.647059 0.735294 +vt 0.411765 0.735294 +vt 0.294118 0.617647 +vt 0.411765 0.764706 +vt 0.529412 0.764706 +vt 1.000000 0.176471 +vt 0.235294 0.823529 +vt 0.235294 0.823529 +vt 0.235294 0.823529 +vt 0.235294 0.823529 +vt 0.235294 1.000000 +vt 0.235294 1.000000 +vt 0.235294 1.000000 +vt 0.235294 1.000000 +vt 0.764706 0.132353 +vt 0.764706 0.132353 +vt 0.764706 0.132353 +vt 0.764706 0.132353 +vt 0.882353 0.176471 +vt 1.000000 0.000000 +vt 0.882353 0.176471 +vt 0.882353 0.176471 +vt 0.294118 0.250000 +vt 1.000000 0.441176 +vt 1.000000 0.441176 +vt 1.000000 0.441176 +vt 0.294118 0.735294 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.1644 0.9864 +vn -0.9864 0.1644 0.0000 +vn 0.0000 0.1644 -0.9864 +vn 0.9864 -0.1644 0.0000 +vn 0.0000 0.1644 0.9864 +vn 0.0000 -0.1644 -0.9864 +vn -0.9864 -0.1644 0.0000 +vn 0.9864 0.1644 0.0000 +vn -0.4472 0.8944 0.0000 +vn 0.4472 0.8944 0.0000 +vn 0.0000 0.8944 -0.4472 +vn 0.0000 0.8944 0.4472 +s off +f 11/1/5 10/2/5 9/3/5 +f 16/4/6 18/5/6 14/6/6 +f 11/7/7 16/8/7 12/9/7 +f 10/10/8 13/11/8 9/12/8 +f 12/13/9 14/6/9 10/14/9 +f 9/15/10 15/16/10 11/17/10 +f 19/18/11 24/19/11 20/20/11 +f 13/21/12 19/22/12 15/16/12 +f 15/23/13 20/20/13 16/8/13 +f 14/24/14 17/25/14 13/11/14 +f 22/26/8 25/27/8 21/28/8 +f 18/29/15 21/28/15 17/25/15 +f 20/30/16 22/31/16 18/5/16 +f 17/32/17 23/33/17 19/22/17 +f 28/34/6 30/35/6 26/36/6 +f 24/37/9 26/36/9 22/31/9 +f 21/38/10 27/39/10 23/33/10 +f 23/40/7 28/41/7 24/19/7 +f 31/42/7 36/43/7 32/44/7 +f 25/45/12 31/46/12 27/39/12 +f 27/47/13 32/44/13 28/41/13 +f 26/48/14 29/49/14 25/27/14 +f 35/50/16 40/51/16 39/52/16 +f 30/53/8 34/54/8 29/49/8 +f 32/55/9 35/50/9 30/35/9 +f 29/56/10 33/57/10 31/46/10 +f 40/51/9 43/58/9 39/52/9 +f 33/57/17 38/59/17 37/60/17 +f 36/43/11 37/61/11 40/62/11 +f 34/54/15 39/63/15 38/64/15 +f 41/65/13 48/66/13 44/67/13 +f 38/59/10 41/68/10 37/60/10 +f 37/61/7 44/67/7 40/62/7 +f 39/63/8 42/69/8 38/64/8 +f 48/70/9 51/71/9 47/72/9 +f 43/73/14 46/74/14 42/69/14 +f 44/75/6 47/72/6 43/58/6 +f 42/76/12 45/77/12 41/68/12 +f 46/78/10 49/79/10 45/77/10 +f 45/80/7 52/81/7 48/66/7 +f 47/82/8 50/83/8 46/74/8 +f 55/84/5 54/85/5 53/86/5 +f 59/87/18 57/88/18 58/89/18 +f 56/90/9 59/87/9 54/85/9 +f 53/91/10 57/92/10 55/93/10 +f 55/94/7 60/95/7 56/96/7 +f 54/97/8 58/98/8 53/99/8 +f 61/100/19 67/101/19 63/102/19 +f 63/102/20 68/103/20 64/104/20 +f 68/105/21 62/106/21 64/107/21 +f 66/108/22 61/100/22 62/106/22 +f 69/109/23 75/110/23 71/111/23 +f 72/112/20 75/113/20 76/114/20 +f 76/114/24 70/115/24 72/112/24 +f 70/115/22 73/116/22 69/109/22 +f 81/117/19 79/118/19 77/119/19 +f 79/118/25 84/120/25 80/121/25 +f 80/121/21 82/122/21 78/123/21 +f 82/124/26 77/119/26 78/125/26 +f 89/126/23 87/127/23 85/128/23 +f 88/129/25 91/130/25 92/131/25 +f 88/129/24 90/132/24 86/133/24 +f 86/133/26 89/134/26 85/135/26 +f 93/136/5 96/137/5 94/138/5 +f 99/139/27 104/140/27 100/141/27 +f 95/142/10 100/143/10 96/144/10 +f 94/138/9 97/145/9 93/136/9 +f 96/146/7 98/147/7 94/148/7 +f 93/149/8 99/150/8 95/151/8 +f 104/140/18 102/152/18 101/153/18 +f 98/154/28 102/152/28 97/145/28 +f 100/141/29 101/153/29 98/154/29 +f 97/145/30 103/155/30 99/139/30 +f 112/156/9 106/157/9 108/158/9 +f 109/159/10 107/160/10 105/161/10 +f 111/162/7 108/158/7 107/160/7 +f 110/163/8 105/164/8 106/157/8 +f 109/165/18 112/156/18 111/166/18 +f 11/1/5 12/167/5 10/2/5 +f 16/4/6 20/30/6 18/5/6 +f 11/7/7 15/23/7 16/8/7 +f 10/10/8 14/24/8 13/11/8 +f 12/13/9 16/4/9 14/6/9 +f 9/15/10 13/21/10 15/16/10 +f 19/18/11 23/40/11 24/19/11 +f 13/21/12 17/32/12 19/22/12 +f 15/23/13 19/18/13 20/20/13 +f 14/24/14 18/29/14 17/25/14 +f 22/26/8 26/48/8 25/27/8 +f 18/29/15 22/26/15 21/28/15 +f 20/30/16 24/37/16 22/31/16 +f 17/32/17 21/38/17 23/33/17 +f 28/34/6 32/55/6 30/35/6 +f 24/37/9 28/34/9 26/36/9 +f 21/38/10 25/45/10 27/39/10 +f 23/40/7 27/47/7 28/41/7 +f 31/42/7 33/168/7 36/43/7 +f 25/45/12 29/56/12 31/46/12 +f 27/47/13 31/42/13 32/44/13 +f 26/48/14 30/53/14 29/49/14 +f 35/50/16 36/169/16 40/51/16 +f 30/53/8 35/170/8 34/54/8 +f 32/55/9 36/169/9 35/50/9 +f 29/56/10 34/171/10 33/57/10 +f 40/51/9 44/75/9 43/58/9 +f 33/57/17 34/171/17 38/59/17 +f 36/43/11 33/168/11 37/61/11 +f 34/54/15 35/170/15 39/63/15 +f 41/65/13 45/80/13 48/66/13 +f 38/59/10 42/76/10 41/68/10 +f 37/61/7 41/65/7 44/67/7 +f 39/63/8 43/73/8 42/69/8 +f 48/70/9 52/172/9 51/71/9 +f 43/73/14 47/82/14 46/74/14 +f 44/75/6 48/70/6 47/72/6 +f 42/76/12 46/78/12 45/77/12 +f 46/78/10 50/173/10 49/79/10 +f 45/80/7 49/174/7 52/81/7 +f 47/82/8 51/175/8 50/83/8 +f 55/84/5 56/90/5 54/85/5 +f 59/87/18 60/176/18 57/88/18 +f 56/90/9 60/176/9 59/87/9 +f 53/91/10 58/177/10 57/92/10 +f 55/94/7 57/178/7 60/95/7 +f 54/97/8 59/179/8 58/98/8 +f 61/100/19 65/180/19 67/101/19 +f 63/102/20 67/101/20 68/103/20 +f 68/105/21 66/108/21 62/106/21 +f 66/108/22 65/180/22 61/100/22 +f 69/109/23 73/116/23 75/110/23 +f 72/112/20 71/181/20 75/113/20 +f 76/114/24 74/182/24 70/115/24 +f 70/115/22 74/182/22 73/116/22 +f 81/117/19 83/183/19 79/118/19 +f 79/118/25 83/183/25 84/120/25 +f 80/121/21 84/120/21 82/122/21 +f 82/124/26 81/117/26 77/119/26 +f 89/126/23 91/130/23 87/127/23 +f 88/129/25 87/127/25 91/130/25 +f 88/129/24 92/131/24 90/132/24 +f 86/133/26 90/132/26 89/134/26 +f 93/136/5 95/184/5 96/137/5 +f 99/139/27 103/155/27 104/140/27 +f 95/142/10 99/185/10 100/143/10 +f 94/138/9 98/154/9 97/145/9 +f 96/146/7 100/186/7 98/147/7 +f 93/149/8 97/187/8 99/150/8 +f 104/140/18 103/155/18 102/152/18 +f 98/154/28 101/153/28 102/152/28 +f 100/141/29 104/140/29 101/153/29 +f 97/145/30 102/152/30 103/155/30 +f 112/156/9 110/163/9 106/157/9 +f 109/159/10 111/162/10 107/160/10 +f 111/162/7 112/156/7 108/158/7 +f 110/163/8 109/188/8 105/164/8 +f 109/165/18 110/163/18 112/156/18 diff --git a/src/main/resources/assets/hbm/models/vehicles/tram.obj b/src/main/resources/assets/hbm/models/vehicles/tram.obj new file mode 100644 index 000000000..e8d11cf51 --- /dev/null +++ b/src/main/resources/assets/hbm/models/vehicles/tram.obj @@ -0,0 +1,854 @@ +# Blender v2.79 (sub 0) OBJ File: 'tram_new.blend' +# www.blender.org +o Plane +v -1.000000 0.250000 2.500000 +v 1.000000 0.250000 2.500000 +v -1.000000 0.250000 -2.500000 +v 1.000000 0.250000 -2.500000 +v -1.000000 0.750000 -2.500000 +v -1.000000 0.750000 2.500000 +v 1.000000 0.750000 2.500000 +v 1.000000 0.750000 -2.500000 +v 0.562500 0.375000 2.562500 +v 0.562500 0.875000 2.562500 +v 0.562500 0.375000 2.062500 +v 0.562500 0.875000 2.062500 +v 1.062500 0.375000 2.562500 +v 1.062500 0.875000 2.562500 +v 1.062500 0.375000 2.062500 +v 1.062500 0.875000 2.062500 +v -1.062500 0.375000 2.562500 +v -1.062500 0.875000 2.562500 +v -1.062500 0.375000 2.062500 +v -1.062500 0.875000 2.062500 +v -0.562500 0.375000 2.562500 +v -0.562500 0.875000 2.562500 +v -0.562500 0.375000 2.062500 +v -0.562500 0.875000 2.062500 +v 0.562500 0.375000 -1.812500 +v 0.562500 0.875000 -1.812500 +v 0.562500 0.375000 -2.562500 +v 0.562500 0.875000 -2.562500 +v 1.062500 0.375000 -1.812500 +v 1.062500 0.875000 -1.812500 +v 1.062500 0.375000 -2.562500 +v 1.062500 0.875000 -2.562500 +v -1.062500 0.375000 -1.812500 +v -1.062500 0.875000 -1.812500 +v -1.062500 0.375000 -2.562500 +v -1.062500 0.875000 -2.562500 +v -0.562500 0.375000 -1.812500 +v -0.562500 0.875000 -1.812500 +v -0.562500 0.375000 -2.562500 +v -0.562500 0.875000 -2.562500 +v 0.875000 0.750000 1.062500 +v -0.125000 0.750000 1.062500 +v 0.000000 1.625000 1.187500 +v 0.750000 1.625000 1.187500 +v 0.000000 0.750000 1.187500 +v 0.750000 0.750000 1.187500 +v 0.875000 0.750000 1.875000 +v 0.687500 0.750000 2.062500 +v 0.062500 0.750000 2.062500 +v -0.125000 0.750000 1.875000 +v 0.687500 1.750000 2.062500 +v 0.875000 1.750000 1.875000 +v -0.125000 1.750000 1.875000 +v 0.062500 1.750000 2.062500 +v 0.000000 1.625000 1.875000 +v 0.750000 1.625000 1.875000 +v 0.687500 1.750000 1.937500 +v 0.062500 1.750000 1.937500 +v -0.875000 0.750000 1.250000 +v 0.750000 1.750000 1.875000 +v -0.875000 0.750000 1.750000 +v 0.000000 1.750000 1.875000 +v 0.687500 1.625000 1.937500 +v 0.062500 1.625000 1.937500 +v 0.000000 0.750000 1.062500 +v 0.750000 0.750000 1.062500 +v 0.875000 1.500000 1.062500 +v 0.875000 1.750000 1.187500 +v -0.125000 1.750000 1.187500 +v -0.125000 1.500000 1.062500 +v 0.750000 1.750000 1.187500 +v 0.750000 1.500000 1.062500 +v -0.187500 0.750000 1.750000 +v 0.000000 1.500000 1.062500 +v 0.000000 1.750000 1.187500 +v -0.187500 0.750000 1.250000 +v -0.187500 0.937500 1.250000 +v -0.187500 0.937500 1.750000 +v -0.875000 0.937500 1.250000 +v -0.875000 0.937500 1.750000 +v -0.187500 1.062500 1.375000 +v -0.187500 1.062500 1.625000 +v -0.875000 1.062500 1.375000 +v -0.875000 1.062500 1.625000 +v 0.937500 0.750000 1.000000 +v 0.812500 0.750000 1.000000 +v 0.937500 0.750000 0.875000 +v 0.812500 0.750000 0.875000 +v 0.812500 1.750000 0.875000 +v 0.937500 1.750000 0.875000 +v 0.812500 1.750000 1.000000 +v 0.937500 1.750000 1.000000 +v -0.812500 0.750000 0.750000 +v -0.937500 0.750000 0.750000 +v -0.812500 0.750000 0.625000 +v -0.937500 0.750000 0.625000 +v -0.812500 1.375000 0.750000 +v -0.937500 1.375000 0.750000 +v -0.812500 1.500000 0.625000 +v -0.937500 1.500000 0.625000 +v -0.812500 1.375000 1.125000 +v -0.937500 1.375000 1.250000 +v -0.812500 1.500000 1.125000 +v -0.937500 1.500000 1.250000 +v -0.125000 1.375000 1.125000 +v -0.125000 1.375000 1.250000 +v -0.125000 1.500000 1.125000 +v -0.125000 1.500000 1.250000 +v 0.875000 0.250000 -1.625000 +v 0.750000 0.250000 1.750000 +v 0.750000 0.073223 -1.676777 +v 0.875000 0.250000 -1.250000 +v 0.875000 0.250000 1.750000 +v 0.750000 0.073223 1.323223 +v 0.750000 0.000000 1.500000 +v 0.750000 0.073223 1.676777 +v 0.750000 0.250000 -1.250000 +v 0.750000 0.250000 1.250000 +v 0.875000 0.250000 -1.375000 +v 0.875000 0.073223 -1.323223 +v 0.875000 0.250000 1.250000 +v 0.875000 0.073223 1.323223 +v 0.875000 0.000000 1.500000 +v 0.875000 0.073223 1.676777 +v 0.875000 0.250000 1.625000 +v 0.875000 0.000000 -1.500000 +v 0.875000 0.073223 -1.676777 +v 0.875000 0.250000 -1.750000 +v 0.875000 0.250000 1.375000 +v 0.875000 0.161612 1.411612 +v 0.875000 0.125000 1.500000 +v 0.875000 0.161612 1.588388 +v 0.937500 0.250000 1.625000 +v 0.750000 0.250000 -1.750000 +v 0.750000 0.073223 -1.323223 +v 0.750000 0.000000 -1.500000 +v 0.937500 0.250000 1.375000 +v 0.937500 0.161612 1.411612 +v 0.937500 0.125000 1.500000 +v 0.937500 0.161612 1.588388 +v 0.875000 0.161612 -1.588388 +v 0.875000 0.125000 -1.500000 +v 0.875000 0.161612 -1.411612 +v 0.937500 0.250000 -1.375000 +v 0.937500 0.250000 -1.625000 +v 0.937500 0.161612 -1.588388 +v 0.937500 0.125000 -1.500000 +v 0.937500 0.161612 -1.411612 +v -0.750000 0.250000 2.000000 +v 0.750000 0.250000 2.000000 +v -0.750000 0.250000 -2.000000 +v 0.750000 0.250000 -2.000000 +v -0.750000 0.125000 -1.875000 +v -0.750000 0.125000 1.875000 +v 0.750000 0.125000 1.875000 +v 0.750000 0.125000 -1.875000 +v -0.875000 0.250000 1.625000 +v -0.750000 0.250000 -1.750000 +v -0.750000 0.073223 1.676777 +v -0.875000 0.250000 1.250000 +v -0.875000 0.250000 -1.750000 +v -0.750000 0.073223 -1.323223 +v -0.750000 0.000000 -1.500000 +v -0.750000 0.073223 -1.676777 +v -0.750000 0.250000 1.250000 +v -0.750000 0.250000 -1.250000 +v -0.875000 0.250000 1.375000 +v -0.875000 0.073223 1.323223 +v -0.875000 0.250000 -1.250000 +v -0.875000 0.073223 -1.323223 +v -0.875000 0.000000 -1.500000 +v -0.875000 0.073223 -1.676777 +v -0.875000 0.250000 -1.625000 +v -0.875000 0.000000 1.500000 +v -0.875000 0.073223 1.676777 +v -0.875000 0.250000 1.750000 +v -0.875000 0.250000 -1.375000 +v -0.875000 0.161612 -1.411611 +v -0.875000 0.125000 -1.500000 +v -0.875000 0.161612 -1.588388 +v -0.937500 0.250000 -1.625000 +v -0.750000 0.250000 1.750000 +v -0.750000 0.073223 1.323223 +v -0.750000 0.000000 1.500000 +v -0.937500 0.250000 -1.375000 +v -0.937500 0.161612 -1.411611 +v -0.937500 0.125000 -1.500000 +v -0.937500 0.161612 -1.588388 +v -0.875000 0.161612 1.588389 +v -0.875000 0.125000 1.500000 +v -0.875000 0.161612 1.411612 +v -0.937500 0.250000 1.375000 +v -0.937500 0.250000 1.625000 +v -0.937500 0.161612 1.588389 +v -0.937500 0.125000 1.500000 +v -0.937500 0.161612 1.411612 +vt 0.543210 0.090909 +vt 0.049383 0.454545 +vt 0.049383 0.090909 +vt 0.049383 0.090909 +vt 0.543210 0.454545 +vt 0.049383 0.454545 +vt 0.543210 0.000000 +vt 0.049383 0.000000 +vt 0.049383 0.545455 +vt 0.543210 0.545455 +vt 0.592593 0.454545 +vt 0.543210 0.090909 +vt 0.592593 0.090909 +vt -0.000000 0.090909 +vt -0.000000 0.454545 +vt 0.049383 0.727273 +vt -0.000000 0.636364 +vt 0.049383 0.636364 +vt 0.049383 0.818182 +vt 0.098765 0.909091 +vt 0.049383 0.909091 +vt 0.148148 0.727273 +vt 0.098765 0.636364 +vt 0.148148 0.636364 +vt 0.098765 0.727273 +vt 0.098765 0.545455 +vt 0.049383 0.545455 +vt 0.098765 0.818182 +vt 0.049383 0.727273 +vt -0.000000 0.636364 +vt 0.049383 0.636364 +vt 0.049383 0.818182 +vt 0.098765 0.909091 +vt 0.049383 0.909091 +vt 0.148148 0.727273 +vt 0.098765 0.636364 +vt 0.148148 0.636364 +vt 0.098765 0.727273 +vt 0.098765 0.545455 +vt 0.049383 0.545455 +vt 0.098765 0.818182 +vt 0.345679 0.772727 +vt 0.271605 0.681818 +vt 0.345679 0.681818 +vt 0.271605 0.772727 +vt 0.222222 0.681818 +vt 0.222222 0.772727 +vt 0.148148 0.681818 +vt 0.222222 0.909091 +vt 0.271605 1.000000 +vt 0.222222 1.000000 +vt 0.271605 0.545455 +vt 0.345679 0.772727 +vt 0.271605 0.681818 +vt 0.345679 0.681818 +vt 0.271605 0.772727 +vt 0.222222 0.681818 +vt 0.222222 0.772727 +vt 0.148148 0.681818 +vt 0.222222 0.909091 +vt 0.271605 1.000000 +vt 0.222222 1.000000 +vt 0.271605 0.545455 +vt 0.987654 0.318182 +vt 0.913580 0.477273 +vt 0.913580 0.318182 +vt 0.567901 0.454545 +vt 0.555556 0.590909 +vt 0.555556 0.454545 +vt 0.777778 0.318182 +vt 0.716049 0.500000 +vt 0.716901 0.318679 +vt 0.697531 0.500000 +vt 0.629630 0.522727 +vt 0.629630 0.500000 +vt 0.777778 0.522727 +vt 0.716049 0.522727 +vt 0.697531 0.318182 +vt 0.796296 0.500000 +vt 0.777778 0.500000 +vt 0.864198 0.500000 +vt 0.796296 0.522727 +vt 0.617284 0.454545 +vt 0.604938 0.318182 +vt 0.617284 0.318182 +vt 0.901235 0.318182 +vt 0.888889 0.454545 +vt 0.888889 0.318182 +vt 0.709877 0.534091 +vt 0.697531 0.534091 +vt 0.783951 0.534091 +vt 0.796296 0.534091 +vt 0.919753 0.636364 +vt 0.981481 0.613636 +vt 0.981481 0.636364 +vt 0.913580 0.636364 +vt 0.919753 0.613636 +vt 0.913580 0.602273 +vt 0.987654 0.477273 +vt 0.987654 0.636364 +vt 1.000000 0.477273 +vt 0.987654 0.602273 +vt 0.876543 0.454545 +vt 0.901235 0.602273 +vt 0.604938 0.454545 +vt 0.592593 0.477273 +vt 0.592593 0.318182 +vt 0.876543 0.500000 +vt 0.604938 0.500000 +vt 0.623457 0.659091 +vt 0.691358 0.636364 +vt 0.691358 0.659091 +vt 0.691358 0.534091 +vt 0.623457 0.568182 +vt 0.623457 0.534091 +vt 0.722222 0.568182 +vt 0.722222 0.659091 +vt 0.506173 0.727273 +vt 0.518519 0.750000 +vt 0.506173 0.750000 +vt 0.623457 0.693182 +vt 0.691358 0.693182 +vt 0.691358 0.590909 +vt 0.623457 0.636364 +vt 0.623457 0.590909 +vt 0.506173 0.545455 +vt 0.493827 0.727273 +vt 0.493827 0.545455 +vt 0.518519 0.545455 +vt 0.592593 0.659091 +vt 0.592593 0.568182 +vt 0.543210 0.545455 +vt 0.530864 0.727273 +vt 0.530864 0.545455 +vt 0.518519 0.727273 +vt 0.580247 0.568182 +vt 0.567901 0.590909 +vt 0.592593 0.568182 +vt 0.580247 0.454545 +vt 0.592593 0.454545 +vt 0.543210 0.568182 +vt 0.543210 0.454545 +vt 0.592593 0.681818 +vt 0.580247 0.613636 +vt 0.592593 0.613636 +vt 0.555556 0.681818 +vt 0.543210 0.613636 +vt 0.567901 0.704545 +vt 0.580247 0.704545 +vt 0.567901 0.852273 +vt 0.555556 0.727273 +vt 0.543210 0.852273 +vt 0.543210 0.727273 +vt 0.592593 0.727273 +vt 0.580247 0.852273 +vt 0.555556 0.852273 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.419210 0.590495 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.349457 0.574879 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.469136 0.590909 +vt 0.456790 0.590909 +vt 0.419753 0.568182 +vt 0.432099 0.590909 +vt 0.419753 0.590909 +vt 0.469136 0.590909 +vt 0.456790 0.590909 +vt 0.419753 0.568182 +vt 0.432099 0.590909 +vt 0.419753 0.590909 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.349457 0.574879 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.412118 0.558974 +vt 0.975309 0.022727 +vt 0.604938 0.295455 +vt 0.604938 0.022727 +vt 0.987654 0.295455 +vt 0.987654 0.022727 +vt 0.592593 0.022727 +vt 0.592593 0.295455 +vt 0.592593 0.318182 +vt 0.975309 0.295455 +vt 0.987654 0.318182 +vt 0.987654 0.000000 +vt 0.592593 0.000000 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.419210 0.590495 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.370132 0.590644 +vt 0.475309 0.568182 +vt 0.456790 0.590909 +vt 0.419753 0.590909 +vt 0.419753 0.568182 +vt 0.456790 0.590909 +vt 0.419753 0.590909 +vt 0.419753 0.568182 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.370132 0.590644 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.412118 0.558974 +vt 0.543210 0.454545 +vt -0.000000 0.727273 +vt -0.000000 0.727273 +vt 0.148148 0.772727 +vt 0.271605 0.909091 +vt 0.222222 0.545455 +vt 0.148148 0.772727 +vt 0.271605 0.909091 +vt 0.222222 0.545455 +vt 0.697531 0.522727 +vt 0.796296 0.318182 +vt 0.864198 0.522727 +vt 0.901235 0.477273 +vt 0.901235 0.500000 +vt 0.913580 0.613636 +vt 0.987654 0.613636 +vt 1.000000 0.602273 +vt 0.876543 0.318182 +vt 0.901235 0.477273 +vt 0.592593 0.500000 +vt 0.888889 0.500000 +vt 0.617284 0.500000 +vt 0.691358 0.568182 +vt 0.703704 0.659091 +vt 0.703704 0.568182 +vt 0.611111 0.568182 +vt 0.611111 0.659091 +vt 0.543210 0.727273 +vt 0.543210 0.681818 +vt 0.592593 0.852273 +vt 0.450617 0.590909 +vt 0.450617 0.590909 +vt 0.412118 0.558974 +vt 0.370781 0.590495 +vt 0.487654 0.590909 +vt 0.370132 0.590644 +vt 0.345910 0.590644 +vt 0.487654 0.590909 +vt 0.370132 0.590644 +vt 0.345910 0.590644 +vt 0.419210 0.590495 +vt 0.370781 0.590495 +vt 0.450617 0.590909 +vt 0.450617 0.590909 +vt 0.412118 0.558974 +vt 0.370781 0.590495 +vt 0.487654 0.590909 +vt 0.345910 0.590644 +vt 0.349457 0.574879 +vt 0.469136 0.590909 +vt 0.432099 0.590909 +vt 0.469136 0.590909 +vt 0.432099 0.590909 +vt 0.487654 0.590909 +vt 0.345910 0.590644 +vt 0.349457 0.574879 +vt 0.419210 0.590495 +vt 0.370781 0.590495 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.456790 0.602273 +vt 0.438272 0.545455 +vt 0.493827 0.545455 +vt 0.419753 0.602273 +vt 0.475309 0.602273 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.438272 0.545455 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.475309 0.602273 +vt 0.493827 0.545455 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.419753 0.602273 +vt 0.456790 0.602273 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.456790 0.602273 +vt 0.438272 0.545455 +vt 0.493827 0.545455 +vt 0.419753 0.602273 +vt 0.475309 0.602273 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.438272 0.545455 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.475309 0.602273 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.419753 0.602273 +vt 0.456790 0.602273 +vt 0.469136 0.602273 +vt 0.432099 0.602273 +vt 0.487654 0.602273 +vt 0.450617 0.602273 +vt 0.450617 0.602273 +vt 0.487654 0.602273 +vt 0.432099 0.602273 +vt 0.469136 0.602273 +vt 0.469136 0.602273 +vt 0.432099 0.602273 +vt 0.487654 0.602273 +vt 0.450617 0.602273 +vt 0.450617 0.602273 +vt 0.487654 0.602273 +vt 0.493827 0.545455 +vt 0.432099 0.602273 +vt 0.469136 0.602273 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 0.4472 -0.8944 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.3827 0.9239 +s off +f 3/1/1 2/2/1 1/3/1 +f 7/4/2 5/5/2 6/6/2 +f 4/7/3 7/4/3 2/8/3 +f 1/9/4 5/5/4 3/10/4 +f 3/11/5 8/12/5 4/13/5 +f 2/14/6 6/6/6 1/15/6 +f 10/16/4 11/17/4 9/18/4 +f 12/19/5 15/20/5 11/21/5 +f 16/22/3 13/23/3 15/24/3 +f 14/25/6 9/18/6 13/23/6 +f 15/26/1 9/18/1 11/27/1 +f 12/19/2 14/25/2 16/28/2 +f 18/29/4 19/30/4 17/31/4 +f 20/32/5 23/33/5 19/34/5 +f 24/35/3 21/36/3 23/37/3 +f 22/38/6 17/31/6 21/36/6 +f 23/39/1 17/31/1 19/40/1 +f 20/32/2 22/38/2 24/41/2 +f 26/42/4 27/43/4 25/44/4 +f 28/45/5 31/46/5 27/43/5 +f 32/47/3 29/48/3 31/46/3 +f 30/49/6 25/50/6 29/51/6 +f 31/46/1 25/52/1 27/43/1 +f 28/45/2 30/49/2 32/47/2 +f 34/53/4 35/54/4 33/55/4 +f 36/56/5 39/57/5 35/54/5 +f 40/58/3 37/59/3 39/57/3 +f 38/60/6 33/61/6 37/62/6 +f 39/57/1 33/63/1 35/54/1 +f 36/56/2 38/60/2 40/58/2 +f 45/64/5 44/65/5 46/66/5 +f 96/67/5 99/68/5 95/69/5 +f 48/70/6 54/71/6 49/72/6 +f 53/73/2 75/74/2 69/75/2 +f 54/71/2 57/76/2 58/77/2 +f 54/71/7 50/78/7 49/72/7 +f 48/70/8 52/79/8 51/80/8 +f 68/81/2 60/82/2 52/79/2 +f 70/83/5 65/84/5 42/85/5 +f 46/86/4 72/87/4 66/88/4 +f 54/71/2 62/89/2 53/90/2 +f 60/91/2 51/80/2 52/92/2 +f 57/93/5 64/94/5 58/95/5 +f 60/96/9 63/97/9 57/93/9 +f 56/98/2 44/65/2 43/99/2 +f 64/94/10 62/100/10 58/95/10 +f 75/101/3 55/102/3 43/99/3 +f 67/103/3 68/81/3 52/79/3 +f 53/73/4 69/75/4 70/83/4 +f 60/104/4 44/65/4 56/98/4 +f 74/105/3 43/106/3 45/107/3 +f 72/87/11 68/108/11 67/103/11 +f 70/83/11 75/109/11 74/105/11 +f 67/103/5 66/88/5 72/87/5 +f 78/110/12 84/111/12 80/112/12 +f 59/113/5 77/114/5 76/115/5 +f 59/116/4 61/117/4 84/111/4 +f 90/118/2 91/119/2 92/120/2 +f 73/121/6 80/112/6 61/122/6 +f 83/123/2 82/124/2 81/125/2 +f 87/126/3 92/127/3 85/128/3 +f 88/129/5 90/118/5 87/126/5 +f 77/114/13 83/123/13 81/125/13 +f 73/130/3 76/131/3 81/125/3 +f 85/132/6 91/133/6 86/134/6 +f 86/134/4 89/135/4 88/129/4 +f 96/67/4 98/136/4 100/137/4 +f 97/138/6 94/139/6 93/140/6 +f 95/69/3 97/141/3 93/142/3 +f 101/143/1 98/144/1 97/145/1 +f 100/137/2 103/146/2 99/68/2 +f 103/146/3 97/147/3 99/68/3 +f 98/144/4 104/148/4 100/137/4 +f 102/149/6 108/150/6 104/148/6 +f 103/151/5 105/152/5 101/153/5 +f 101/154/1 106/155/1 102/149/1 +f 103/151/2 108/150/2 107/156/2 +f 126/157/3 143/158/3 120/159/3 +f 123/160/3 132/161/3 124/162/3 +f 117/163/4 111/164/4 136/165/4 +f 121/166/3 130/167/3 122/168/3 +f 148/169/3 147/170/3 146/171/3 +f 126/157/3 141/172/3 142/173/3 +f 113/174/3 132/175/3 125/176/3 +f 123/160/3 130/177/3 131/178/3 +f 112/179/3 143/180/3 119/181/3 +f 128/182/3 141/183/3 127/184/3 +f 140/185/3 139/186/3 138/187/3 +f 114/188/4 115/189/4 116/190/4 +f 153/191/1 155/192/1 154/193/1 +f 152/194/14 153/191/14 151/195/14 +f 149/196/15 155/192/15 150/197/15 +f 150/198/3 156/199/3 152/200/3 +f 151/201/4 154/193/4 149/202/4 +f 174/203/4 191/204/4 168/205/4 +f 171/206/4 180/207/4 172/208/4 +f 165/209/3 159/210/3 184/211/3 +f 169/212/4 178/213/4 170/214/4 +f 195/215/4 194/216/4 193/217/4 +f 175/218/4 190/219/4 174/203/4 +f 172/208/4 173/220/4 161/221/4 +f 170/214/4 179/222/4 171/206/4 +f 168/205/4 167/223/4 160/224/4 +f 176/225/4 189/226/4 175/218/4 +f 187/227/4 186/228/4 185/229/4 +f 162/230/3 163/231/3 164/232/3 +f 3/1/1 4/233/1 2/2/1 +f 7/4/2 8/12/2 5/5/2 +f 4/7/3 8/12/3 7/4/3 +f 1/9/4 6/6/4 5/5/4 +f 3/11/5 5/5/5 8/12/5 +f 2/14/6 7/4/6 6/6/6 +f 10/16/4 12/234/4 11/17/4 +f 12/19/5 16/28/5 15/20/5 +f 16/22/3 14/25/3 13/23/3 +f 14/25/6 10/16/6 9/18/6 +f 15/26/1 13/23/1 9/18/1 +f 12/19/2 10/16/2 14/25/2 +f 18/29/4 20/235/4 19/30/4 +f 20/32/5 24/41/5 23/33/5 +f 24/35/3 22/38/3 21/36/3 +f 22/38/6 18/29/6 17/31/6 +f 23/39/1 21/36/1 17/31/1 +f 20/32/2 18/29/2 22/38/2 +f 26/42/4 28/45/4 27/43/4 +f 28/45/5 32/47/5 31/46/5 +f 32/47/3 30/236/3 29/48/3 +f 30/49/6 26/237/6 25/50/6 +f 31/46/1 29/238/1 25/52/1 +f 28/45/2 26/237/2 30/49/2 +f 34/53/4 36/56/4 35/54/4 +f 36/56/5 40/58/5 39/57/5 +f 40/58/3 38/239/3 37/59/3 +f 38/60/6 34/240/6 33/61/6 +f 39/57/1 37/241/1 33/63/1 +f 36/56/2 34/240/2 38/60/2 +f 45/64/5 43/99/5 44/65/5 +f 96/67/5 100/137/5 99/68/5 +f 48/70/6 51/80/6 54/71/6 +f 53/73/2 62/242/2 75/74/2 +f 54/71/2 51/80/2 57/76/2 +f 54/71/7 53/73/7 50/78/7 +f 48/70/8 47/243/8 52/79/8 +f 68/81/2 71/244/2 60/82/2 +f 70/83/5 74/105/5 65/84/5 +f 46/86/4 44/245/4 72/87/4 +f 44/245/4 71/246/4 72/87/4 +f 54/71/2 58/77/2 62/89/2 +f 60/91/2 57/76/2 51/80/2 +f 57/93/5 63/97/5 64/94/5 +f 60/96/9 56/247/9 63/97/9 +f 43/99/2 55/102/2 56/98/2 +f 55/102/2 64/94/2 56/98/2 +f 64/94/2 63/97/2 56/98/2 +f 64/94/10 55/248/10 62/100/10 +f 75/101/3 62/249/3 55/102/3 +f 52/79/3 47/243/3 67/103/3 +f 47/243/3 41/250/3 67/103/3 +f 70/83/4 42/85/4 50/78/4 +f 50/78/4 53/73/4 70/83/4 +f 60/104/4 71/251/4 44/65/4 +f 45/107/3 65/84/3 74/105/3 +f 74/105/3 75/252/3 43/106/3 +f 72/87/11 71/253/11 68/108/11 +f 70/83/11 69/254/11 75/109/11 +f 67/103/5 41/250/5 66/88/5 +f 78/110/12 82/124/12 84/111/12 +f 59/113/5 79/255/5 77/114/5 +f 61/117/4 80/256/4 84/111/4 +f 84/111/4 83/123/4 59/116/4 +f 83/123/4 79/257/4 59/116/4 +f 90/118/2 89/135/2 91/119/2 +f 73/121/6 78/110/6 80/112/6 +f 83/123/2 84/111/2 82/124/2 +f 87/126/3 90/118/3 92/127/3 +f 88/129/5 89/135/5 90/118/5 +f 77/114/13 79/255/13 83/123/13 +f 76/131/3 77/258/3 81/125/3 +f 81/125/3 82/124/3 73/130/3 +f 82/124/3 78/259/3 73/130/3 +f 85/132/6 92/260/6 91/133/6 +f 86/134/4 91/133/4 89/135/4 +f 96/67/4 94/139/4 98/136/4 +f 97/138/6 98/136/6 94/139/6 +f 95/69/3 99/68/3 97/141/3 +f 101/143/1 102/149/1 98/144/1 +f 100/137/2 104/148/2 103/146/2 +f 103/146/3 101/261/3 97/147/3 +f 98/144/4 102/149/4 104/148/4 +f 102/149/6 106/155/6 108/150/6 +f 103/151/5 107/156/5 105/152/5 +f 101/154/1 105/262/1 106/155/1 +f 103/151/2 104/148/2 108/150/2 +f 126/157/3 142/263/3 143/158/3 +f 123/160/3 131/264/3 132/161/3 +f 136/165/4 135/265/4 117/163/4 +f 117/163/4 134/266/4 111/164/4 +f 121/166/3 129/267/3 130/167/3 +f 145/268/3 144/269/3 146/171/3 +f 144/269/3 148/169/3 146/171/3 +f 126/157/3 127/184/3 141/172/3 +f 113/174/3 124/162/3 132/175/3 +f 123/160/3 122/168/3 130/177/3 +f 112/179/3 120/159/3 143/180/3 +f 128/182/3 109/270/3 141/183/3 +f 137/271/3 133/272/3 138/187/3 +f 133/272/3 140/185/3 138/187/3 +f 110/273/4 118/274/4 116/190/4 +f 118/274/4 114/188/4 116/190/4 +f 153/191/1 156/199/1 155/192/1 +f 152/194/14 156/199/14 153/191/14 +f 149/196/15 154/193/15 155/192/15 +f 150/198/3 155/192/3 156/199/3 +f 151/201/4 153/191/4 154/193/4 +f 174/203/4 190/275/4 191/204/4 +f 171/206/4 179/276/4 180/207/4 +f 184/211/3 183/277/3 165/209/3 +f 165/209/3 182/278/3 159/210/3 +f 169/212/4 177/279/4 178/213/4 +f 193/217/4 192/280/4 196/281/4 +f 196/281/4 195/215/4 193/217/4 +f 175/218/4 189/282/4 190/219/4 +f 172/208/4 180/283/4 173/220/4 +f 170/214/4 178/284/4 179/222/4 +f 168/205/4 191/285/4 167/223/4 +f 176/225/4 157/286/4 189/226/4 +f 185/229/4 181/287/4 188/288/4 +f 188/288/4 187/227/4 185/229/4 +f 158/289/3 166/290/3 164/232/3 +f 166/290/3 162/230/3 164/232/3 +s 1 +f 114/291/14 123/160/1 115/292/1 +f 141/172/14 147/293/1 142/173/1 +f 115/292/1 124/162/15 116/294/15 +f 118/295/16 122/168/14 114/291/14 +f 143/180/15 144/296/17 119/181/17 +f 109/270/16 146/297/14 141/183/14 +f 116/294/15 113/174/17 110/298/17 +f 142/263/1 148/299/15 143/158/15 +f 135/300/15 112/179/17 117/301/17 +f 131/264/1 140/302/15 132/161/15 +f 129/267/16 138/303/14 130/167/14 +f 134/304/16 127/184/14 111/305/14 +f 136/306/1 120/159/15 135/300/15 +f 132/175/15 133/307/17 125/176/17 +f 130/177/14 139/308/1 131/178/1 +f 111/305/14 126/157/1 136/306/1 +f 162/309/15 171/206/1 163/310/1 +f 189/282/15 195/311/1 190/219/1 +f 163/310/1 172/208/14 164/312/14 +f 166/313/17 170/214/15 162/309/15 +f 191/285/14 192/314/16 167/223/16 +f 157/286/17 194/315/15 189/226/15 +f 158/316/16 172/208/14 161/221/16 +f 190/275/1 196/317/14 191/204/14 +f 183/318/14 160/224/16 165/319/16 +f 179/276/1 188/320/14 180/207/14 +f 177/279/17 186/321/15 178/213/15 +f 159/322/15 176/225/17 175/218/15 +f 184/323/1 168/205/14 183/318/14 +f 180/283/14 181/324/16 173/220/16 +f 178/284/15 187/325/1 179/222/1 +f 159/322/15 174/203/1 184/323/1 +f 114/291/14 122/168/14 123/160/1 +f 141/172/14 146/326/14 147/293/1 +f 115/292/1 123/160/1 124/162/15 +f 118/295/16 121/166/16 122/168/14 +f 143/180/15 148/327/15 144/296/17 +f 109/270/16 145/328/16 146/297/14 +f 116/294/15 124/162/15 113/174/17 +f 142/263/1 147/329/1 148/299/15 +f 135/300/15 120/159/15 112/179/17 +f 131/264/1 139/330/1 140/302/15 +f 129/267/16 137/331/16 138/303/14 +f 134/304/16 128/182/16 127/184/14 +f 136/306/1 126/157/1 120/159/15 +f 132/175/15 140/332/15 133/307/17 +f 130/177/14 138/333/14 139/308/1 +f 111/305/14 127/184/14 126/157/1 +f 162/309/15 170/214/15 171/206/1 +f 189/282/15 194/334/15 195/311/1 +f 163/310/1 171/206/1 172/208/14 +f 166/313/17 169/212/17 170/214/15 +f 191/285/14 196/335/14 192/314/16 +f 157/286/17 193/336/17 194/315/15 +f 158/316/16 164/312/14 172/208/14 +f 190/275/1 195/337/1 196/317/14 +f 183/318/14 168/205/14 160/224/16 +f 179/276/1 187/338/1 188/320/14 +f 177/279/17 185/339/17 186/321/15 +f 159/322/15 182/340/17 176/225/17 +f 184/323/1 174/203/1 168/205/14 +f 180/283/14 188/341/14 181/324/16 +f 178/284/15 186/342/15 187/325/1 +f 159/322/15 175/218/15 174/203/1 diff --git a/src/main/resources/assets/hbm/models/vehicles/tram_trailer.obj b/src/main/resources/assets/hbm/models/vehicles/tram_trailer.obj new file mode 100644 index 000000000..270cdde15 --- /dev/null +++ b/src/main/resources/assets/hbm/models/vehicles/tram_trailer.obj @@ -0,0 +1,561 @@ +# Blender v2.79 (sub 0) OBJ File: 'tram_trailer.blend' +# www.blender.org +o Plane +v -1.000000 0.250000 2.500000 +v 1.000000 0.250000 2.500000 +v -1.000000 0.250000 -2.500000 +v 1.000000 0.250000 -2.500000 +v -1.000000 0.750000 -2.500000 +v -1.000000 0.750000 2.500000 +v 1.000000 0.750000 2.500000 +v 1.000000 0.750000 -2.500000 +v 0.562500 0.375000 2.562500 +v 0.562500 0.875000 2.562500 +v 0.562500 0.375000 2.062500 +v 0.562500 0.875000 2.062500 +v 1.062500 0.375000 2.562500 +v 1.062500 0.875000 2.562500 +v 1.062500 0.375000 2.062500 +v 1.062500 0.875000 2.062500 +v -1.062500 0.375000 2.562500 +v -1.062500 0.875000 2.562500 +v -1.062500 0.375000 2.062500 +v -1.062500 0.875000 2.062500 +v -0.562500 0.375000 2.562500 +v -0.562500 0.875000 2.562500 +v -0.562500 0.375000 2.062500 +v -0.562500 0.875000 2.062500 +v 0.562500 0.375000 -1.812500 +v 0.562500 0.875000 -1.812500 +v 0.562500 0.375000 -2.562500 +v 0.562500 0.875000 -2.562500 +v 1.062500 0.375000 -1.812500 +v 1.062500 0.875000 -1.812500 +v 1.062500 0.375000 -2.562500 +v 1.062500 0.875000 -2.562500 +v -1.062500 0.375000 -1.812500 +v -1.062500 0.875000 -1.812500 +v -1.062500 0.375000 -2.562500 +v -1.062500 0.875000 -2.562500 +v -0.562500 0.375000 -1.812500 +v -0.562500 0.875000 -1.812500 +v -0.562500 0.375000 -2.562500 +v -0.562500 0.875000 -2.562500 +v 0.875000 0.250000 -1.625000 +v 0.750000 0.250000 1.750000 +v 0.750000 0.073223 -1.676777 +v 0.875000 0.250000 -1.250000 +v 0.875000 0.250000 1.750000 +v 0.750000 0.073223 1.323223 +v 0.750000 0.000000 1.500000 +v 0.750000 0.073223 1.676777 +v 0.750000 0.250000 -1.250000 +v 0.750000 0.250000 1.250000 +v 0.875000 0.250000 -1.375000 +v 0.875000 0.073223 -1.323223 +v 0.875000 0.250000 1.250000 +v 0.875000 0.073223 1.323223 +v 0.875000 0.000000 1.500000 +v 0.875000 0.073223 1.676777 +v 0.875000 0.250000 1.625000 +v 0.875000 0.000000 -1.500000 +v 0.875000 0.073223 -1.676777 +v 0.875000 0.250000 -1.750000 +v 0.875000 0.250000 1.375000 +v 0.875000 0.161612 1.411612 +v 0.875000 0.125000 1.500000 +v 0.875000 0.161612 1.588388 +v 0.937500 0.250000 1.625000 +v 0.750000 0.250000 -1.750000 +v 0.750000 0.073223 -1.323223 +v 0.750000 0.000000 -1.500000 +v 0.937500 0.250000 1.375000 +v 0.937500 0.161612 1.411612 +v 0.937500 0.125000 1.500000 +v 0.937500 0.161612 1.588388 +v 0.875000 0.161612 -1.588388 +v 0.875000 0.125000 -1.500000 +v 0.875000 0.161612 -1.411612 +v 0.937500 0.250000 -1.375000 +v 0.937500 0.250000 -1.625000 +v 0.937500 0.161612 -1.588388 +v 0.937500 0.125000 -1.500000 +v 0.937500 0.161612 -1.411612 +v -0.750000 0.250000 2.000000 +v 0.750000 0.250000 2.000000 +v -0.750000 0.250000 -2.000000 +v 0.750000 0.250000 -2.000000 +v -0.750000 0.125000 -1.875000 +v -0.750000 0.125000 1.875000 +v 0.750000 0.125000 1.875000 +v 0.750000 0.125000 -1.875000 +v -0.875000 0.250000 1.625000 +v -0.750000 0.250000 -1.750000 +v -0.750000 0.073223 1.676777 +v -0.875000 0.250000 1.250000 +v -0.875000 0.250000 -1.750000 +v -0.750000 0.073223 -1.323223 +v -0.750000 0.000000 -1.500000 +v -0.750000 0.073223 -1.676777 +v -0.750000 0.250000 1.250000 +v -0.750000 0.250000 -1.250000 +v -0.875000 0.250000 1.375000 +v -0.875000 0.073223 1.323223 +v -0.875000 0.250000 -1.250000 +v -0.875000 0.073223 -1.323223 +v -0.875000 0.000000 -1.500000 +v -0.875000 0.073223 -1.676777 +v -0.875000 0.250000 -1.625000 +v -0.875000 0.000000 1.500000 +v -0.875000 0.073223 1.676777 +v -0.875000 0.250000 1.750000 +v -0.875000 0.250000 -1.375000 +v -0.875000 0.161612 -1.411611 +v -0.875000 0.125000 -1.500000 +v -0.875000 0.161612 -1.588388 +v -0.937500 0.250000 -1.625000 +v -0.750000 0.250000 1.750000 +v -0.750000 0.073223 1.323223 +v -0.750000 0.000000 1.500000 +v -0.937500 0.250000 -1.375000 +v -0.937500 0.161612 -1.411611 +v -0.937500 0.125000 -1.500000 +v -0.937500 0.161612 -1.588388 +v -0.875000 0.161612 1.588389 +v -0.875000 0.125000 1.500000 +v -0.875000 0.161612 1.411612 +v -0.937500 0.250000 1.375000 +v -0.937500 0.250000 1.625000 +v -0.937500 0.161612 1.588389 +v -0.937500 0.125000 1.500000 +v -0.937500 0.161612 1.411612 +vt 0.543210 0.090909 +vt 0.049383 0.454545 +vt 0.049383 0.090909 +vt 0.049383 0.090909 +vt 0.543210 0.454545 +vt 0.049383 0.454545 +vt 0.543210 0.000000 +vt 0.049383 0.000000 +vt 0.049383 0.545455 +vt 0.543210 0.545455 +vt 0.592593 0.454545 +vt 0.543210 0.090909 +vt 0.592593 0.090909 +vt -0.000000 0.090909 +vt -0.000000 0.454545 +vt 0.049383 0.727273 +vt -0.000000 0.636364 +vt 0.049383 0.636364 +vt 0.049383 0.818182 +vt 0.098765 0.909091 +vt 0.049383 0.909091 +vt 0.148148 0.727273 +vt 0.098765 0.636364 +vt 0.148148 0.636364 +vt 0.098765 0.727273 +vt 0.098765 0.545455 +vt 0.049383 0.545455 +vt 0.098765 0.818182 +vt 0.049383 0.727273 +vt -0.000000 0.636364 +vt 0.049383 0.636364 +vt 0.049383 0.818182 +vt 0.098765 0.909091 +vt 0.049383 0.909091 +vt 0.148148 0.727273 +vt 0.098765 0.636364 +vt 0.148148 0.636364 +vt 0.098765 0.727273 +vt 0.098765 0.545455 +vt 0.049383 0.545455 +vt 0.098765 0.818182 +vt 0.345679 0.772727 +vt 0.271605 0.681818 +vt 0.345679 0.681818 +vt 0.271605 0.772727 +vt 0.222222 0.681818 +vt 0.222222 0.772727 +vt 0.148148 0.681818 +vt 0.222222 0.909091 +vt 0.271605 1.000000 +vt 0.222222 1.000000 +vt 0.271605 0.545455 +vt 0.345679 0.772727 +vt 0.271605 0.681818 +vt 0.345679 0.681818 +vt 0.271605 0.772727 +vt 0.222222 0.681818 +vt 0.222222 0.772727 +vt 0.148148 0.681818 +vt 0.222222 0.909091 +vt 0.271605 1.000000 +vt 0.222222 1.000000 +vt 0.271605 0.545455 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.419210 0.590495 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.349457 0.574879 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.469136 0.590909 +vt 0.456790 0.590909 +vt 0.419753 0.568182 +vt 0.432099 0.590909 +vt 0.419753 0.590909 +vt 0.469136 0.590909 +vt 0.456790 0.590909 +vt 0.419753 0.568182 +vt 0.432099 0.590909 +vt 0.419753 0.590909 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.349457 0.574879 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.412118 0.558974 +vt 0.975309 0.022727 +vt 0.604938 0.295455 +vt 0.604938 0.022727 +vt 0.987654 0.295455 +vt 0.987654 0.022727 +vt 0.592593 0.022727 +vt 0.592593 0.295455 +vt 0.592593 0.318182 +vt 0.975309 0.295455 +vt 0.987654 0.318182 +vt 0.987654 0.000000 +vt 0.592593 0.000000 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.419210 0.590495 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.370132 0.590644 +vt 0.475309 0.568182 +vt 0.456790 0.590909 +vt 0.419753 0.590909 +vt 0.419753 0.568182 +vt 0.456790 0.590909 +vt 0.419753 0.590909 +vt 0.419753 0.568182 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.370132 0.590644 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.412118 0.558974 +vt 0.543210 0.454545 +vt -0.000000 0.727273 +vt -0.000000 0.727273 +vt 0.148148 0.772727 +vt 0.271605 0.909091 +vt 0.222222 0.545455 +vt 0.148148 0.772727 +vt 0.271605 0.909091 +vt 0.222222 0.545455 +vt 0.450617 0.590909 +vt 0.450617 0.590909 +vt 0.412118 0.558974 +vt 0.370781 0.590495 +vt 0.487654 0.590909 +vt 0.370132 0.590644 +vt 0.345910 0.590644 +vt 0.487654 0.590909 +vt 0.370132 0.590644 +vt 0.345910 0.590644 +vt 0.419210 0.590495 +vt 0.370781 0.590495 +vt 0.450617 0.590909 +vt 0.450617 0.590909 +vt 0.412118 0.558974 +vt 0.370781 0.590495 +vt 0.487654 0.590909 +vt 0.345910 0.590644 +vt 0.349457 0.574879 +vt 0.469136 0.590909 +vt 0.432099 0.590909 +vt 0.469136 0.590909 +vt 0.432099 0.590909 +vt 0.487654 0.590909 +vt 0.345910 0.590644 +vt 0.349457 0.574879 +vt 0.419210 0.590495 +vt 0.370781 0.590495 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.456790 0.602273 +vt 0.438272 0.545455 +vt 0.493827 0.545455 +vt 0.419753 0.602273 +vt 0.475309 0.602273 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.438272 0.545455 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.475309 0.602273 +vt 0.493827 0.545455 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.419753 0.602273 +vt 0.456790 0.602273 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.456790 0.602273 +vt 0.438272 0.545455 +vt 0.493827 0.545455 +vt 0.419753 0.602273 +vt 0.475309 0.602273 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.438272 0.545455 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.475309 0.602273 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.419753 0.602273 +vt 0.456790 0.602273 +vt 0.469136 0.602273 +vt 0.432099 0.602273 +vt 0.487654 0.602273 +vt 0.450617 0.602273 +vt 0.450617 0.602273 +vt 0.487654 0.602273 +vt 0.432099 0.602273 +vt 0.469136 0.602273 +vt 0.469136 0.602273 +vt 0.432099 0.602273 +vt 0.487654 0.602273 +vt 0.450617 0.602273 +vt 0.450617 0.602273 +vt 0.487654 0.602273 +vt 0.493827 0.545455 +vt 0.432099 0.602273 +vt 0.469136 0.602273 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.3827 0.9239 +s off +f 3/1/1 2/2/1 1/3/1 +f 7/4/2 5/5/2 6/6/2 +f 4/7/3 7/4/3 2/8/3 +f 1/9/4 5/5/4 3/10/4 +f 3/11/5 8/12/5 4/13/5 +f 2/14/6 6/6/6 1/15/6 +f 10/16/4 11/17/4 9/18/4 +f 12/19/5 15/20/5 11/21/5 +f 16/22/3 13/23/3 15/24/3 +f 14/25/6 9/18/6 13/23/6 +f 15/26/1 9/18/1 11/27/1 +f 12/19/2 14/25/2 16/28/2 +f 18/29/4 19/30/4 17/31/4 +f 20/32/5 23/33/5 19/34/5 +f 24/35/3 21/36/3 23/37/3 +f 22/38/6 17/31/6 21/36/6 +f 23/39/1 17/31/1 19/40/1 +f 20/32/2 22/38/2 24/41/2 +f 26/42/4 27/43/4 25/44/4 +f 28/45/5 31/46/5 27/43/5 +f 32/47/3 29/48/3 31/46/3 +f 30/49/6 25/50/6 29/51/6 +f 31/46/1 25/52/1 27/43/1 +f 28/45/2 30/49/2 32/47/2 +f 34/53/4 35/54/4 33/55/4 +f 36/56/5 39/57/5 35/54/5 +f 40/58/3 37/59/3 39/57/3 +f 38/60/6 33/61/6 37/62/6 +f 39/57/1 33/63/1 35/54/1 +f 36/56/2 38/60/2 40/58/2 +f 58/64/3 75/65/3 52/66/3 +f 55/67/3 64/68/3 56/69/3 +f 49/70/4 43/71/4 68/72/4 +f 53/73/3 62/74/3 54/75/3 +f 80/76/3 79/77/3 78/78/3 +f 58/64/3 73/79/3 74/80/3 +f 45/81/3 64/82/3 57/83/3 +f 55/67/3 62/84/3 63/85/3 +f 44/86/3 75/87/3 51/88/3 +f 60/89/3 73/90/3 59/91/3 +f 72/92/3 71/93/3 70/94/3 +f 46/95/4 47/96/4 48/97/4 +f 85/98/1 87/99/1 86/100/1 +f 84/101/7 85/98/7 83/102/7 +f 81/103/8 87/99/8 82/104/8 +f 82/105/3 88/106/3 84/107/3 +f 83/108/4 86/100/4 81/109/4 +f 106/110/4 123/111/4 100/112/4 +f 103/113/4 112/114/4 104/115/4 +f 97/116/3 91/117/3 116/118/3 +f 101/119/4 110/120/4 102/121/4 +f 127/122/4 126/123/4 125/124/4 +f 107/125/4 122/126/4 106/110/4 +f 104/115/4 105/127/4 93/128/4 +f 102/121/4 111/129/4 103/113/4 +f 100/112/4 99/130/4 92/131/4 +f 108/132/4 121/133/4 107/125/4 +f 119/134/4 118/135/4 117/136/4 +f 94/137/3 95/138/3 96/139/3 +f 3/1/1 4/140/1 2/2/1 +f 7/4/2 8/12/2 5/5/2 +f 4/7/3 8/12/3 7/4/3 +f 1/9/4 6/6/4 5/5/4 +f 3/11/5 5/5/5 8/12/5 +f 2/14/6 7/4/6 6/6/6 +f 10/16/4 12/141/4 11/17/4 +f 12/19/5 16/28/5 15/20/5 +f 16/22/3 14/25/3 13/23/3 +f 14/25/6 10/16/6 9/18/6 +f 15/26/1 13/23/1 9/18/1 +f 12/19/2 10/16/2 14/25/2 +f 18/29/4 20/142/4 19/30/4 +f 20/32/5 24/41/5 23/33/5 +f 24/35/3 22/38/3 21/36/3 +f 22/38/6 18/29/6 17/31/6 +f 23/39/1 21/36/1 17/31/1 +f 20/32/2 18/29/2 22/38/2 +f 26/42/4 28/45/4 27/43/4 +f 28/45/5 32/47/5 31/46/5 +f 32/47/3 30/143/3 29/48/3 +f 30/49/6 26/144/6 25/50/6 +f 31/46/1 29/145/1 25/52/1 +f 28/45/2 26/144/2 30/49/2 +f 34/53/4 36/56/4 35/54/4 +f 36/56/5 40/58/5 39/57/5 +f 40/58/3 38/146/3 37/59/3 +f 38/60/6 34/147/6 33/61/6 +f 39/57/1 37/148/1 33/63/1 +f 36/56/2 34/147/2 38/60/2 +f 58/64/3 74/149/3 75/65/3 +f 55/67/3 63/150/3 64/68/3 +f 68/72/4 67/151/4 49/70/4 +f 49/70/4 66/152/4 43/71/4 +f 53/73/3 61/153/3 62/74/3 +f 77/154/3 76/155/3 78/78/3 +f 76/155/3 80/76/3 78/78/3 +f 58/64/3 59/91/3 73/79/3 +f 45/81/3 56/69/3 64/82/3 +f 55/67/3 54/75/3 62/84/3 +f 44/86/3 52/66/3 75/87/3 +f 60/89/3 41/156/3 73/90/3 +f 69/157/3 65/158/3 70/94/3 +f 65/158/3 72/92/3 70/94/3 +f 42/159/4 50/160/4 48/97/4 +f 50/160/4 46/95/4 48/97/4 +f 85/98/1 88/106/1 87/99/1 +f 84/101/7 88/106/7 85/98/7 +f 81/103/8 86/100/8 87/99/8 +f 82/105/3 87/99/3 88/106/3 +f 83/108/4 85/98/4 86/100/4 +f 106/110/4 122/161/4 123/111/4 +f 103/113/4 111/162/4 112/114/4 +f 116/118/3 115/163/3 97/116/3 +f 97/116/3 114/164/3 91/117/3 +f 101/119/4 109/165/4 110/120/4 +f 125/124/4 124/166/4 128/167/4 +f 128/167/4 127/122/4 125/124/4 +f 107/125/4 121/168/4 122/126/4 +f 104/115/4 112/169/4 105/127/4 +f 102/121/4 110/170/4 111/129/4 +f 100/112/4 123/171/4 99/130/4 +f 108/132/4 89/172/4 121/133/4 +f 117/136/4 113/173/4 120/174/4 +f 120/174/4 119/134/4 117/136/4 +f 90/175/3 98/176/3 96/139/3 +f 98/176/3 94/137/3 96/139/3 +s 1 +f 46/177/7 55/67/1 47/178/1 +f 73/79/7 79/179/1 74/80/1 +f 47/178/1 56/69/8 48/180/8 +f 50/181/9 54/75/7 46/177/7 +f 75/87/8 76/182/10 51/88/10 +f 41/156/9 78/183/7 73/90/7 +f 48/180/8 45/81/10 42/184/10 +f 74/149/1 80/185/8 75/65/8 +f 67/186/8 44/86/10 49/187/10 +f 63/150/1 72/188/8 64/68/8 +f 61/153/9 70/189/7 62/74/7 +f 66/190/9 59/91/7 43/191/7 +f 68/192/1 52/66/8 67/186/8 +f 64/82/8 65/193/10 57/83/10 +f 62/84/7 71/194/1 63/85/1 +f 43/191/7 58/64/1 68/192/1 +f 94/195/8 103/113/1 95/196/1 +f 121/168/8 127/197/1 122/126/1 +f 95/196/1 104/115/7 96/198/7 +f 98/199/10 102/121/8 94/195/8 +f 123/171/7 124/200/9 99/130/9 +f 89/172/10 126/201/8 121/133/8 +f 90/202/9 104/115/7 93/128/9 +f 122/161/1 128/203/7 123/111/7 +f 115/204/7 92/131/9 97/205/9 +f 111/162/1 120/206/7 112/114/7 +f 109/165/10 118/207/8 110/120/8 +f 91/208/8 108/132/10 107/125/8 +f 116/209/1 100/112/7 115/204/7 +f 112/169/7 113/210/9 105/127/9 +f 110/170/8 119/211/1 111/129/1 +f 91/208/8 106/110/1 116/209/1 +f 46/177/7 54/75/7 55/67/1 +f 73/79/7 78/212/7 79/179/1 +f 47/178/1 55/67/1 56/69/8 +f 50/181/9 53/73/9 54/75/7 +f 75/87/8 80/213/8 76/182/10 +f 41/156/9 77/214/9 78/183/7 +f 48/180/8 56/69/8 45/81/10 +f 74/149/1 79/215/1 80/185/8 +f 67/186/8 52/66/8 44/86/10 +f 63/150/1 71/216/1 72/188/8 +f 61/153/9 69/217/9 70/189/7 +f 66/190/9 60/89/9 59/91/7 +f 68/192/1 58/64/1 52/66/8 +f 64/82/8 72/218/8 65/193/10 +f 62/84/7 70/219/7 71/194/1 +f 43/191/7 59/91/7 58/64/1 +f 94/195/8 102/121/8 103/113/1 +f 121/168/8 126/220/8 127/197/1 +f 95/196/1 103/113/1 104/115/7 +f 98/199/10 101/119/10 102/121/8 +f 123/171/7 128/221/7 124/200/9 +f 89/172/10 125/222/10 126/201/8 +f 90/202/9 96/198/7 104/115/7 +f 122/161/1 127/223/1 128/203/7 +f 115/204/7 100/112/7 92/131/9 +f 111/162/1 119/224/1 120/206/7 +f 109/165/10 117/225/10 118/207/8 +f 91/208/8 114/226/10 108/132/10 +f 116/209/1 106/110/1 100/112/7 +f 112/169/7 120/227/7 113/210/9 +f 110/170/8 118/228/8 119/211/1 +f 91/208/8 107/125/8 106/110/1 diff --git a/src/main/resources/assets/hbm/models/vehicles/tunnel_bore.obj b/src/main/resources/assets/hbm/models/vehicles/tunnel_bore.obj new file mode 100644 index 000000000..94434ba94 --- /dev/null +++ b/src/main/resources/assets/hbm/models/vehicles/tunnel_bore.obj @@ -0,0 +1,7617 @@ +# Blender v2.79 (sub 0) OBJ File: 'tunnel_bore.blend' +# www.blender.org +o Plane +v 0.750000 0.073223 3.051777 +v 0.750000 0.250000 3.125000 +v 0.750000 0.426777 3.051777 +v 0.750000 0.500000 2.875000 +v 0.750000 0.500000 2.125000 +v 0.750000 0.426777 2.301777 +v 0.750000 0.250000 2.375000 +v 0.750000 0.073223 2.301777 +v 0.750000 0.000000 2.125000 +v 0.750000 0.073223 1.948223 +v 0.750000 0.250000 1.875000 +v 0.750000 0.426777 1.948223 +v -0.750000 0.500000 2.125000 +v -0.750000 0.426777 2.301777 +v -0.750000 0.250000 2.375000 +v -0.750000 0.073223 2.301777 +v -0.750000 0.000000 2.125000 +v -0.750000 0.073223 1.948223 +v -0.750000 0.250000 1.875000 +v -0.750000 0.426777 1.948223 +v 0.687500 0.426777 2.301777 +v 0.687500 0.500000 2.125000 +v 0.687500 0.250000 2.375000 +v 0.687500 0.073223 2.301777 +v 0.687500 0.000000 2.125000 +v 0.687500 0.073223 1.948223 +v 0.687500 0.250000 1.875000 +v 0.687500 0.426777 1.948223 +v -0.687500 0.426777 2.301777 +v -0.687500 0.500000 2.125000 +v -0.687500 0.250000 2.375000 +v -0.687500 0.073223 2.301777 +v -0.687500 0.000000 2.125000 +v -0.687500 0.073223 1.948223 +v -0.687500 0.250000 1.875000 +v -0.687500 0.426777 1.948223 +v 0.750000 0.382582 2.257582 +v 0.750000 0.437500 2.125000 +v 0.750000 0.250000 2.312500 +v 0.750000 0.117417 2.257582 +v 0.750000 0.062500 2.125000 +v 0.750000 0.117418 1.992417 +v 0.750000 0.250000 1.937500 +v 0.750000 0.382582 1.992417 +v 0.812500 0.382582 2.257582 +v 0.812500 0.437500 2.125000 +v 0.812500 0.250000 2.312500 +v 0.812500 0.117417 2.257582 +v 0.812500 0.062500 2.125000 +v 0.812500 0.117418 1.992417 +v 0.812500 0.250000 1.937500 +v 0.812500 0.382582 1.992417 +v -0.750000 0.382582 2.257582 +v -0.750000 0.437500 2.125000 +v -0.750000 0.250000 2.312500 +v -0.750000 0.117417 2.257582 +v -0.750000 0.062500 2.125000 +v -0.750000 0.117418 1.992417 +v -0.750000 0.250000 1.937500 +v -0.750000 0.382582 1.992417 +v -0.812500 0.382582 2.257582 +v -0.812500 0.437500 2.125000 +v -0.812500 0.250000 2.312500 +v -0.812500 0.117417 2.257582 +v -0.812500 0.062500 2.125000 +v -0.812500 0.117418 1.992417 +v -0.812500 0.250000 1.937500 +v -0.812500 0.382582 1.992417 +v 0.750000 0.000000 2.875000 +v 0.750000 0.073223 2.698223 +v 0.750000 0.250000 2.625000 +v 0.750000 0.426777 2.698223 +v -0.750000 0.500000 2.875000 +v -0.750000 0.426777 3.051777 +v -0.750000 0.250000 3.125000 +v -0.750000 0.073223 3.051777 +v -0.750000 0.000000 2.875000 +v -0.750000 0.073223 2.698223 +v -0.750000 0.250000 2.625000 +v -0.750000 0.426777 2.698223 +v 0.687500 0.426777 3.051777 +v 0.687500 0.500000 2.875000 +v 0.687500 0.250000 3.125000 +v 0.687500 0.073223 3.051777 +v 0.687500 0.000000 2.875000 +v 0.687500 0.073223 2.698223 +v 0.687500 0.250000 2.625000 +v 0.687500 0.426777 2.698223 +v -0.687500 0.426777 3.051777 +v -0.687500 0.500000 2.875000 +v -0.687500 0.250000 3.125000 +v -0.687500 0.073223 3.051777 +v -0.687500 0.000000 2.875000 +v -0.687500 0.073223 2.698223 +v -0.687500 0.250000 2.625000 +v -0.687500 0.426777 2.698223 +v 0.750000 0.382582 3.007583 +v 0.750000 0.437500 2.875000 +v 0.750000 0.250000 3.062500 +v 0.750000 0.117417 3.007583 +v 0.750000 0.062500 2.875000 +v 0.750000 0.117418 2.742417 +v 0.750000 0.250000 2.687500 +v 0.750000 0.382582 2.742417 +v 0.812500 0.382582 3.007583 +v 0.812500 0.437500 2.875000 +v 0.812500 0.250000 3.062500 +v 0.812500 0.117417 3.007583 +v 0.812500 0.062500 2.875000 +v 0.812500 0.117418 2.742417 +v 0.812500 0.250000 2.687500 +v 0.812500 0.382582 2.742417 +v -0.750000 0.382582 3.007583 +v -0.750000 0.437500 2.875000 +v -0.750000 0.250000 3.062500 +v -0.750000 0.117417 3.007583 +v -0.750000 0.062500 2.875000 +v -0.750000 0.117418 2.742417 +v -0.750000 0.250000 2.687500 +v -0.750000 0.382582 2.742417 +v -0.812500 0.382582 3.007583 +v -0.812500 0.437500 2.875000 +v -0.812500 0.250000 3.062500 +v -0.812500 0.117417 3.007583 +v -0.812500 0.062500 2.875000 +v -0.812500 0.117418 2.742417 +v -0.812500 0.250000 2.687500 +v -0.812500 0.382582 2.742417 +v 1.000000 0.625000 3.250000 +v 1.000000 0.625000 1.750000 +v -1.000000 0.625000 3.250000 +v -1.000000 0.625000 1.750000 +v 1.000000 0.250000 3.250000 +v 1.000000 0.250000 1.750000 +v -1.000000 0.250000 3.250000 +v -1.000000 0.250000 1.750000 +v 1.000000 0.250000 1.625000 +v -1.000000 0.250000 1.625000 +v 1.000000 0.250000 3.375000 +v -1.000000 0.250000 3.375000 +v 1.000000 0.750000 1.625000 +v -1.000000 0.750000 1.625000 +v 1.000000 0.750000 3.375000 +v -1.000000 0.750000 3.375000 +v 0.687500 0.125000 3.125000 +v 0.687500 0.125000 1.875000 +v -0.687500 0.125000 3.125000 +v -0.687500 0.125000 1.875000 +v 0.687500 0.250000 1.750000 +v -0.687500 0.250000 1.750000 +v 0.687500 0.250000 3.250000 +v -0.687500 0.250000 3.250000 +v 0.687500 0.625000 1.750000 +v 0.687500 0.625000 3.250000 +v -0.687500 0.625000 1.750000 +v -0.687500 0.625000 3.250000 +v 0.750000 0.073223 -1.948224 +v 0.750000 0.250000 -1.875000 +v 0.750000 0.426777 -1.948224 +v 0.750000 0.500000 -2.125000 +v 0.750000 0.500000 -2.875000 +v 0.750000 0.426777 -2.698223 +v 0.750000 0.250000 -2.625000 +v 0.750000 0.073223 -2.698223 +v 0.750000 0.000000 -2.875000 +v 0.750000 0.073223 -3.051777 +v 0.750000 0.250000 -3.125000 +v 0.750000 0.426777 -3.051777 +v -0.750000 0.500000 -2.875000 +v -0.750000 0.426777 -2.698223 +v -0.750000 0.250000 -2.625000 +v -0.750000 0.073223 -2.698223 +v -0.750000 0.000000 -2.875000 +v -0.750000 0.073223 -3.051777 +v -0.750000 0.250000 -3.125000 +v -0.750000 0.426777 -3.051777 +v 0.687500 0.426777 -2.698223 +v 0.687500 0.500000 -2.875000 +v 0.687500 0.250000 -2.625000 +v 0.687500 0.073223 -2.698223 +v 0.687500 0.000000 -2.875000 +v 0.687500 0.073223 -3.051777 +v 0.687500 0.250000 -3.125000 +v 0.687500 0.426777 -3.051777 +v -0.687500 0.426777 -2.698223 +v -0.687500 0.500000 -2.875000 +v -0.687500 0.250000 -2.625000 +v -0.687500 0.073223 -2.698223 +v -0.687500 0.000000 -2.875000 +v -0.687500 0.073223 -3.051777 +v -0.687500 0.250000 -3.125000 +v -0.687500 0.426777 -3.051777 +v 0.750000 0.382582 -2.742418 +v 0.750000 0.437500 -2.875000 +v 0.750000 0.250000 -2.687500 +v 0.750000 0.117417 -2.742418 +v 0.750000 0.062500 -2.875000 +v 0.750000 0.117418 -3.007583 +v 0.750000 0.250000 -3.062500 +v 0.750000 0.382582 -3.007583 +v 0.812500 0.382582 -2.742418 +v 0.812500 0.437500 -2.875000 +v 0.812500 0.250000 -2.687500 +v 0.812500 0.117417 -2.742418 +v 0.812500 0.062500 -2.875000 +v 0.812500 0.117418 -3.007583 +v 0.812500 0.250000 -3.062500 +v 0.812500 0.382582 -3.007583 +v -0.750000 0.382582 -2.742418 +v -0.750000 0.437500 -2.875000 +v -0.750000 0.250000 -2.687500 +v -0.750000 0.117417 -2.742418 +v -0.750000 0.062500 -2.875000 +v -0.750000 0.117418 -3.007583 +v -0.750000 0.250000 -3.062500 +v -0.750000 0.382582 -3.007583 +v -0.812500 0.382582 -2.742418 +v -0.812500 0.437500 -2.875000 +v -0.812500 0.250000 -2.687500 +v -0.812500 0.117417 -2.742418 +v -0.812500 0.062500 -2.875000 +v -0.812500 0.117418 -3.007583 +v -0.812500 0.250000 -3.062500 +v -0.812500 0.382582 -3.007583 +v 0.750000 0.000000 -2.125000 +v 0.750000 0.073223 -2.301777 +v 0.750000 0.250000 -2.375000 +v 0.750000 0.426777 -2.301777 +v -0.750000 0.500000 -2.125000 +v -0.750000 0.426777 -1.948223 +v -0.750000 0.250000 -1.875000 +v -0.750000 0.073223 -1.948223 +v -0.750000 0.000000 -2.125000 +v -0.750000 0.073223 -2.301777 +v -0.750000 0.250000 -2.375000 +v -0.750000 0.426777 -2.301777 +v 0.687500 0.426777 -1.948224 +v 0.687500 0.500000 -2.125000 +v 0.687500 0.250000 -1.875000 +v 0.687500 0.073223 -1.948224 +v 0.687500 0.000000 -2.125000 +v 0.687500 0.073223 -2.301777 +v 0.687500 0.250000 -2.375000 +v 0.687500 0.426777 -2.301777 +v -0.687500 0.426777 -1.948223 +v -0.687500 0.500000 -2.125000 +v -0.687500 0.250000 -1.875000 +v -0.687500 0.073223 -1.948223 +v -0.687500 0.000000 -2.125000 +v -0.687500 0.073223 -2.301777 +v -0.687500 0.250000 -2.375000 +v -0.687500 0.426777 -2.301777 +v 0.750000 0.382582 -1.992417 +v 0.750000 0.437500 -2.125000 +v 0.750000 0.250000 -1.937500 +v 0.750000 0.117417 -1.992417 +v 0.750000 0.062500 -2.125000 +v 0.750000 0.117418 -2.257583 +v 0.750000 0.250000 -2.312500 +v 0.750000 0.382582 -2.257583 +v 0.812500 0.382582 -1.992417 +v 0.812500 0.437500 -2.125000 +v 0.812500 0.250000 -1.937500 +v 0.812500 0.117417 -1.992417 +v 0.812500 0.062500 -2.125000 +v 0.812500 0.117418 -2.257583 +v 0.812500 0.250000 -2.312500 +v 0.812500 0.382582 -2.257583 +v -0.750000 0.382582 -1.992417 +v -0.750000 0.437500 -2.125000 +v -0.750000 0.250000 -1.937500 +v -0.750000 0.117417 -1.992417 +v -0.750000 0.062500 -2.125000 +v -0.750000 0.117418 -2.257583 +v -0.750000 0.250000 -2.312500 +v -0.750000 0.382582 -2.257583 +v -0.812500 0.382582 -1.992417 +v -0.812500 0.437500 -2.125000 +v -0.812500 0.250000 -1.937500 +v -0.812500 0.117417 -1.992417 +v -0.812500 0.062500 -2.125000 +v -0.812500 0.117418 -2.257583 +v -0.812500 0.250000 -2.312500 +v -0.812500 0.382582 -2.257583 +v 1.000000 0.625000 -1.750000 +v 1.000000 0.625000 -3.250000 +v -1.000000 0.625000 -1.750000 +v -1.000000 0.625000 -3.250000 +v 1.000000 0.250000 -1.750000 +v 1.000000 0.250000 -3.250000 +v -1.000000 0.250000 -1.750000 +v -1.000000 0.250000 -3.250000 +v 1.000000 0.250000 -3.375000 +v -1.000000 0.250000 -3.375000 +v 1.000000 0.250000 -1.625000 +v -1.000000 0.250000 -1.625000 +v 1.000000 0.750000 -3.375000 +v -1.000000 0.750000 -3.375000 +v 1.000000 0.750000 -1.625000 +v -1.000000 0.750000 -1.625000 +v 0.687500 0.125000 -1.875000 +v 0.687500 0.125000 -3.125000 +v -0.687500 0.125000 -1.875000 +v -0.687500 0.125000 -3.125000 +v 0.687500 0.250000 -3.250000 +v -0.687500 0.250000 -3.250000 +v 0.687500 0.250000 -1.750000 +v -0.687500 0.250000 -1.750000 +v 0.687500 0.625000 -3.250000 +v 0.687500 0.625000 -1.750000 +v -0.687500 0.625000 -3.250000 +v -0.687500 0.625000 -1.750000 +v -0.750000 0.750000 3.500000 +v 0.750000 0.750000 3.500000 +v -0.750000 0.750000 -3.500000 +v 0.750000 0.750000 -3.500000 +v -0.750000 1.000000 -3.500000 +v -0.750000 1.000000 3.500000 +v 0.750000 1.000000 3.500000 +v 0.750000 1.000000 -3.500000 +v -0.750000 0.750000 -1.500000 +v -0.750000 0.750000 1.500000 +v 0.750000 0.750000 1.500000 +v 0.750000 0.750000 -1.500000 +v -0.750000 0.250000 -1.000000 +v -0.750000 0.250000 1.000000 +v 0.750000 0.250000 1.000000 +v 0.750000 0.250000 -1.000000 +v 0.530330 1.469670 3.750000 +v 0.750000 2.000000 3.750000 +v 0.530330 2.530330 3.750000 +v 0.000000 2.750000 3.750000 +v -0.530330 2.530330 3.750000 +v -0.750000 2.000000 3.750000 +v -0.530330 1.469670 3.750000 +v -0.000000 1.250000 3.750000 +v -1.000000 1.000000 3.500000 +v 1.000000 1.000000 3.500000 +v -1.000000 1.000000 -0.500000 +v 1.000000 1.000000 -0.500000 +v -1.000000 2.500000 -0.500000 +v -1.000000 2.500000 3.500000 +v 1.000000 2.500000 3.500000 +v 1.000000 2.500000 -0.500000 +v -0.250000 3.000000 -0.500000 +v -0.250000 3.000000 3.500000 +v 0.250000 3.000000 3.500000 +v 0.250000 3.000000 -0.500000 +v 1.000000 1.187500 -0.312500 +v 1.000000 1.812500 -0.312500 +v 1.000000 1.187500 0.062500 +v 1.000000 1.812500 0.062500 +v 0.750000 1.187500 -0.312500 +v 0.750000 1.812500 -0.312500 +v 0.750000 1.187500 0.062500 +v 0.750000 1.812500 0.062500 +v 0.750000 1.375000 -0.250000 +v 0.750000 1.463388 -0.213388 +v 0.750000 1.500000 -0.125000 +v 0.750000 1.463388 -0.036612 +v 0.750000 1.375000 -0.000000 +v 0.750000 1.286612 -0.036612 +v 0.750000 1.250000 -0.125000 +v 0.750000 1.286612 -0.213388 +v 1.000000 1.375000 -0.250000 +v 1.000000 1.463388 -0.213388 +v 1.000000 1.500000 -0.125000 +v 1.000000 1.463388 -0.036612 +v 1.000000 1.375000 -0.000000 +v 1.000000 1.286612 -0.036612 +v 1.000000 1.250000 -0.125000 +v 1.000000 1.286612 -0.213388 +v 1.176777 1.375000 -0.176777 +v 1.150888 1.463388 -0.150888 +v 1.088388 1.500000 -0.088388 +v 1.025888 1.463388 -0.025888 +v 1.025888 1.286612 -0.025888 +v 1.088388 1.250000 -0.088388 +v 1.150888 1.286612 -0.150888 +v 1.250000 1.375000 -0.000000 +v 1.213388 1.463388 -0.000000 +v 1.125000 1.500000 -0.000000 +v 1.036612 1.463388 -0.000000 +v 1.036612 1.286612 -0.000000 +v 1.125000 1.250000 -0.000000 +v 1.213388 1.286612 0.000000 +v 1.000000 1.375000 2.750000 +v 1.250000 1.375000 2.750000 +v 1.213388 1.463388 2.750000 +v 1.125000 1.500000 2.750000 +v 1.036612 1.463388 2.750000 +v 1.036612 1.286612 2.750000 +v 1.125000 1.250000 2.750000 +v 1.213388 1.286612 2.750000 +v 1.000000 1.411612 2.838388 +v 1.250000 1.411612 2.838388 +v 1.213388 1.474112 2.775888 +v 1.036612 1.474112 2.775888 +v 1.036612 1.349112 2.900888 +v 1.125000 1.323223 2.926777 +v 1.213388 1.349112 2.900888 +v 1.000000 1.500000 2.875000 +v 1.250000 1.500000 2.875000 +v 1.213388 1.500000 2.786612 +v 1.036612 1.500000 2.786612 +v 1.036612 1.500000 2.963388 +v 1.125000 1.500000 3.000000 +v 1.213388 1.500000 2.963388 +v 1.125000 2.000000 2.750000 +v 1.000000 2.000000 2.875000 +v 1.250000 2.000000 2.875000 +v 1.213388 2.000000 2.786612 +v 1.036612 2.000000 2.786612 +v 1.036612 2.000000 2.963388 +v 1.125000 2.000000 3.000000 +v 1.213388 2.000000 2.963388 +v 1.088388 2.088388 2.750000 +v 1.176777 2.176777 2.875000 +v 1.150888 2.150888 2.786612 +v 1.025888 2.025888 2.786612 +v 1.025888 2.025888 2.963388 +v 1.088388 2.088388 3.000000 +v 1.150888 2.150888 2.963388 +v 1.000000 2.125000 2.750000 +v 1.000000 2.250000 2.875000 +v 1.000000 2.213388 2.786612 +v 1.000000 2.036612 2.786612 +v 1.000000 2.036612 2.963388 +v 1.000000 2.125000 3.000000 +v 1.000000 2.213388 2.963388 +v 0.750000 1.625000 -0.250000 +v 0.750000 1.713388 -0.213388 +v 0.750000 1.750000 -0.125000 +v 0.750000 1.713388 -0.036612 +v 0.750000 1.625000 -0.000000 +v 0.750000 1.536612 -0.036612 +v 0.750000 1.500000 -0.125000 +v 0.750000 1.536612 -0.213388 +v 1.000000 1.625000 -0.250000 +v 1.000000 1.713388 -0.213388 +v 1.000000 1.750000 -0.125000 +v 1.000000 1.713388 -0.036612 +v 1.000000 1.625000 -0.000000 +v 1.000000 1.536612 -0.036612 +v 1.000000 1.500000 -0.125000 +v 1.000000 1.536612 -0.213388 +v 1.176777 1.625000 -0.176777 +v 1.150888 1.713388 -0.150888 +v 1.088388 1.750000 -0.088388 +v 1.025888 1.713388 -0.025888 +v 1.025888 1.536612 -0.025888 +v 1.088388 1.500000 -0.088388 +v 1.150888 1.536612 -0.150888 +v 1.250000 1.625000 -0.000000 +v 1.213388 1.713388 -0.000000 +v 1.125000 1.750000 -0.000000 +v 1.036612 1.713388 -0.000000 +v 1.036612 1.536612 -0.000000 +v 1.125000 1.500000 -0.000000 +v 1.213388 1.536612 0.000000 +v 1.000000 1.625000 2.500000 +v 1.250000 1.625000 2.500000 +v 1.213388 1.713388 2.500000 +v 1.125000 1.750000 2.500000 +v 1.036612 1.713388 2.500000 +v 1.036612 1.536612 2.500000 +v 1.125000 1.500000 2.500000 +v 1.213388 1.536612 2.500000 +v 1.000000 1.661612 2.588388 +v 1.250000 1.661612 2.588388 +v 1.213388 1.724112 2.525888 +v 1.036612 1.724112 2.525888 +v 1.036612 1.599112 2.650888 +v 1.125000 1.573223 2.676777 +v 1.213388 1.599112 2.650888 +v 1.000000 1.750000 2.625000 +v 1.250000 1.750000 2.625000 +v 1.213388 1.750000 2.536612 +v 1.036612 1.750000 2.536612 +v 1.036612 1.750000 2.713388 +v 1.125000 1.750000 2.750000 +v 1.213388 1.750000 2.713388 +v 1.125000 2.000000 2.500000 +v 1.000000 2.250000 2.625000 +v 1.250000 2.000000 2.625000 +v 1.213388 2.000000 2.536612 +v 1.036612 2.000000 2.536612 +v 1.036612 2.000000 2.713388 +v 1.125000 2.000000 2.750000 +v 1.213388 2.000000 2.713388 +v 1.088388 2.088388 2.500000 +v 1.176777 2.176777 2.625000 +v 1.150888 2.150888 2.536612 +v 1.025888 2.025888 2.536612 +v 1.025888 2.025888 2.713388 +v 1.088388 2.088388 2.750000 +v 1.150888 2.150888 2.713388 +v 1.000000 2.125000 2.500000 +v 1.000000 2.250000 2.625000 +v 1.000000 2.213388 2.536612 +v 1.000000 2.036612 2.536612 +v 1.000000 2.036612 2.713388 +v 1.000000 2.125000 2.750000 +v 1.000000 2.213388 2.713388 +v -0.750000 1.187500 -0.312500 +v -0.750000 1.812500 -0.312500 +v -0.750000 1.187500 0.062500 +v -0.750000 1.812500 0.062500 +v -1.000000 1.187500 -0.312500 +v -1.000000 1.812500 -0.312500 +v -1.000000 1.187500 0.062500 +v -1.000000 1.812500 0.062500 +v -0.750000 1.375000 -0.250000 +v -0.750000 1.463388 -0.213388 +v -0.750000 1.500000 -0.125000 +v -0.750000 1.463388 -0.036612 +v -0.750000 1.375000 0.000000 +v -0.750000 1.286612 -0.036612 +v -0.750000 1.250000 -0.125000 +v -0.750000 1.286612 -0.213388 +v -1.000000 1.375000 -0.250000 +v -1.000000 1.463388 -0.213388 +v -1.000000 1.500000 -0.125000 +v -1.000000 1.463388 -0.036612 +v -1.000000 1.375000 0.000000 +v -1.000000 1.286612 -0.036612 +v -1.000000 1.250000 -0.125000 +v -1.000000 1.286612 -0.213388 +v -1.176777 1.375000 -0.176777 +v -1.150888 1.463388 -0.150888 +v -1.088388 1.500000 -0.088388 +v -1.025888 1.463388 -0.025888 +v -1.025888 1.286612 -0.025888 +v -1.088388 1.250000 -0.088388 +v -1.150888 1.286612 -0.150888 +v -1.250000 1.375000 -0.000000 +v -1.213388 1.463388 -0.000000 +v -1.125000 1.500000 -0.000000 +v -1.036612 1.463388 -0.000000 +v -1.036612 1.286612 -0.000000 +v -1.125000 1.250000 -0.000000 +v -1.213388 1.286612 0.000000 +v -1.000000 1.375000 2.750000 +v -1.250000 1.375000 2.750000 +v -1.213388 1.463388 2.750000 +v -1.125000 1.500000 2.750000 +v -1.036612 1.463388 2.750000 +v -1.036612 1.286612 2.750000 +v -1.125000 1.250000 2.750000 +v -1.213388 1.286612 2.750000 +v -1.000000 1.411612 2.838388 +v -1.250000 1.411612 2.838388 +v -1.213388 1.474112 2.775888 +v -1.036612 1.474112 2.775888 +v -1.036612 1.349112 2.900888 +v -1.125000 1.323223 2.926777 +v -1.213388 1.349112 2.900888 +v -1.000000 1.500000 2.875000 +v -1.250000 1.500000 2.875000 +v -1.213388 1.500000 2.786612 +v -1.036612 1.500000 2.786612 +v -1.036612 1.500000 2.963388 +v -1.125000 1.500000 3.000000 +v -1.213388 1.500000 2.963388 +v -1.125000 2.000000 2.750000 +v -1.000000 2.000000 2.875000 +v -1.250000 2.000000 2.875000 +v -1.213388 2.000000 2.786612 +v -1.036612 2.000000 2.786612 +v -1.036612 2.000000 2.963388 +v -1.125000 2.000000 3.000000 +v -1.213388 2.000000 2.963388 +v -1.088388 2.088388 2.750000 +v -1.176777 2.176777 2.875000 +v -1.150888 2.150888 2.786612 +v -1.025888 2.025888 2.786612 +v -1.025888 2.025888 2.963388 +v -1.088388 2.088388 3.000000 +v -1.150888 2.150888 2.963388 +v -1.000000 2.125000 2.750000 +v -1.000000 2.250000 2.875000 +v -1.000000 2.213388 2.786612 +v -1.000000 2.036612 2.786612 +v -1.000000 2.036612 2.963388 +v -1.000000 2.125000 3.000000 +v -1.000000 2.213388 2.963388 +v -0.750000 1.625000 -0.250000 +v -0.750000 1.713388 -0.213388 +v -0.750000 1.750000 -0.125000 +v -0.750000 1.713388 -0.036612 +v -0.750000 1.625000 0.000000 +v -0.750000 1.536612 -0.036612 +v -0.750000 1.500000 -0.125000 +v -0.750000 1.536612 -0.213388 +v -1.000000 1.625000 -0.250000 +v -1.000000 1.713388 -0.213388 +v -1.000000 1.750000 -0.125000 +v -1.000000 1.713388 -0.036612 +v -1.000000 1.625000 0.000000 +v -1.000000 1.536612 -0.036612 +v -1.000000 1.500000 -0.125000 +v -1.000000 1.536612 -0.213388 +v -1.176777 1.625000 -0.176777 +v -1.150888 1.713388 -0.150888 +v -1.088388 1.750000 -0.088388 +v -1.025888 1.713388 -0.025888 +v -1.025888 1.536612 -0.025888 +v -1.088388 1.500000 -0.088388 +v -1.150888 1.536612 -0.150888 +v -1.250000 1.625000 -0.000000 +v -1.213388 1.713388 -0.000000 +v -1.125000 1.750000 -0.000000 +v -1.036612 1.713388 -0.000000 +v -1.036612 1.536612 -0.000000 +v -1.125000 1.500000 -0.000000 +v -1.213388 1.536612 0.000000 +v -1.000000 1.625000 2.500000 +v -1.250000 1.625000 2.500000 +v -1.213388 1.713388 2.500000 +v -1.125000 1.750000 2.500000 +v -1.036612 1.713388 2.500000 +v -1.036612 1.536612 2.500000 +v -1.125000 1.500000 2.500000 +v -1.213388 1.536612 2.500000 +v -1.000000 1.661612 2.588388 +v -1.250000 1.661612 2.588388 +v -1.213388 1.724112 2.525888 +v -1.036612 1.724112 2.525888 +v -1.036612 1.599112 2.650888 +v -1.125000 1.573223 2.676777 +v -1.213388 1.599112 2.650888 +v -1.000000 1.750000 2.625000 +v -1.250000 1.750000 2.625000 +v -1.213388 1.750000 2.536612 +v -1.036612 1.750000 2.536612 +v -1.036612 1.750000 2.713388 +v -1.125000 1.750000 2.750000 +v -1.213388 1.750000 2.713388 +v -1.125000 2.000000 2.500000 +v -1.000000 2.250000 2.625000 +v -1.250000 2.000000 2.625000 +v -1.213388 2.000000 2.536612 +v -1.036612 2.000000 2.536612 +v -1.036612 2.000000 2.713388 +v -1.125000 2.000000 2.750000 +v -1.213388 2.000000 2.713388 +v -1.088388 2.088388 2.500000 +v -1.176777 2.176777 2.625000 +v -1.150888 2.150888 2.536612 +v -1.025888 2.025888 2.536612 +v -1.025888 2.025888 2.713388 +v -1.088388 2.088388 2.750000 +v -1.150888 2.150888 2.713388 +v -1.000000 2.125000 2.500000 +v -1.000000 2.250000 2.625000 +v -1.000000 2.213388 2.536612 +v -1.000000 2.036612 2.536612 +v -1.000000 2.036612 2.713388 +v -1.000000 2.125000 2.750000 +v -1.000000 2.213388 2.713388 +v -0.000000 1.250000 3.500000 +v -0.530330 1.469670 3.500000 +v -0.750000 2.000000 3.500000 +v -0.530330 2.530330 3.500000 +v 0.000000 2.750000 3.500000 +v 0.530330 2.530330 3.500000 +v 0.750000 2.000000 3.500000 +v 0.530330 1.469670 3.500000 +v 0.000000 3.500000 4.250000 +v -0.750000 3.299038 4.250000 +v -1.299038 2.750000 4.250000 +v -1.500000 2.000000 4.250000 +v -1.299038 1.250000 4.250000 +v -0.750000 0.700962 4.250000 +v -0.000000 0.500000 4.250000 +v 0.750000 0.700962 4.250000 +v 1.299038 1.250000 4.250000 +v 1.500000 1.999999 4.250000 +v 1.299038 2.749999 4.250000 +v 0.750001 3.299038 4.250000 +v 0.000000 3.500000 5.000000 +v -0.750000 3.299038 5.000000 +v -1.299038 2.750000 5.000000 +v -1.500000 2.000000 5.000000 +v -1.299038 1.250000 5.000000 +v -0.750000 0.700962 5.000000 +v -0.000000 0.500000 5.000000 +v 0.750000 0.700962 5.000000 +v 1.299038 1.250000 5.000000 +v 1.500000 1.999999 5.000000 +v 1.299038 2.749999 5.000000 +v 0.750001 3.299038 5.000000 +v 0.000000 3.312500 5.750000 +v -0.656250 3.136658 5.750000 +v -1.136658 2.656250 5.750000 +v -1.312500 2.000000 5.750000 +v -1.136658 1.343750 5.750000 +v -0.656250 0.863342 5.750000 +v -0.000000 0.687500 5.750000 +v 0.656250 0.863341 5.750000 +v 1.136658 1.343750 5.750000 +v 1.312500 1.999999 5.750000 +v 1.136659 2.656250 5.750000 +v 0.656251 3.136658 5.750000 +v 0.000000 2.937500 6.500000 +v -0.468750 2.811899 6.500000 +v -0.811899 2.468750 6.500000 +v -0.937500 2.000000 6.500000 +v -0.811899 1.531250 6.500000 +v -0.468750 1.188101 6.500000 +v -0.000000 1.062500 6.500000 +v 0.468750 1.188101 6.500000 +v 0.811899 1.531250 6.500000 +v 0.937500 2.000000 6.500000 +v 0.811899 2.468750 6.500000 +v 0.468751 2.811899 6.500000 +v 0.000000 2.375000 7.250000 +v -0.187500 2.324759 7.250000 +v -0.324759 2.187500 7.250000 +v -0.375000 2.000000 7.250000 +v -0.324759 1.812500 7.250000 +v -0.187500 1.675241 7.250000 +v -0.000000 1.625000 7.250000 +v 0.187500 1.675240 7.250000 +v 0.324759 1.812500 7.250000 +v 0.375000 2.000000 7.250000 +v 0.324760 2.187500 7.250000 +v 0.187500 2.324759 7.250000 +v 1.375000 2.249999 4.875000 +v 1.375000 1.749999 4.875000 +v 1.375000 2.249999 4.375000 +v 1.375000 1.749999 4.375000 +v 1.625000 2.249999 4.375000 +v 1.625000 2.249999 4.875000 +v 1.625000 1.749999 4.875000 +v 1.625000 1.749999 4.375000 +v 1.875000 2.374999 4.500000 +v 1.875000 2.374999 4.750000 +v 1.875000 2.124999 4.750000 +v 1.875000 2.124999 4.500000 +v 1.290549 1.913017 5.621202 +v 1.161140 1.430054 5.621202 +v 1.374415 1.890545 5.128798 +v 1.245005 1.407582 5.128798 +v 1.612228 1.826823 5.172210 +v 1.528362 1.849295 5.664614 +v 1.398953 1.366332 5.664614 +v 1.482818 1.343860 5.172210 +v 1.861427 1.889460 5.338723 +v 1.819494 1.900696 5.584925 +v 1.754789 1.659214 5.584925 +v 1.796722 1.647979 5.338723 +v 0.894345 2.249999 6.351577 +v 0.894345 1.749999 6.351577 +v 1.105654 2.249999 5.898423 +v 1.105654 1.749999 5.898423 +v 1.332231 2.249999 6.004077 +v 1.120922 2.249999 6.457232 +v 1.120922 1.749999 6.457232 +v 1.332231 1.749999 6.004077 +v 1.505981 2.374999 6.223021 +v 1.400326 2.374999 6.449597 +v 1.400326 2.124999 6.449597 +v 1.505981 2.124999 6.223021 +v 0.375000 2.249999 7.091506 +v 0.375000 1.749999 7.091506 +v 0.625000 2.249999 6.658494 +v 0.625000 1.749999 6.658494 +v 0.841506 2.249999 6.783494 +v 0.591506 2.249999 7.216506 +v 0.591506 1.749999 7.216506 +v 0.841506 1.749999 6.783494 +v 0.995513 2.374999 7.016747 +v 0.870513 2.374999 7.233253 +v 0.870513 2.124999 7.233253 +v 0.995513 2.124999 7.016747 +v -1.375000 1.750001 4.875000 +v -1.375000 2.250001 4.875000 +v -1.375000 1.750001 4.375000 +v -1.375000 2.250001 4.375000 +v -1.625000 1.750001 4.375000 +v -1.625000 1.750001 4.875000 +v -1.625000 2.250001 4.875000 +v -1.625000 2.250001 4.375000 +v -1.875000 1.625001 4.500000 +v -1.875000 1.625001 4.750000 +v -1.875000 1.875001 4.750000 +v -1.875000 1.875001 4.500000 +v 0.249999 0.625000 4.875000 +v -0.250001 0.625000 4.875000 +v 0.249999 0.625000 4.375000 +v -0.250001 0.625000 4.375000 +v 0.249999 0.375000 4.375000 +v 0.249999 0.375000 4.875000 +v -0.250001 0.375000 4.875000 +v -0.250001 0.375000 4.375000 +v 0.374999 0.125000 4.500000 +v 0.374999 0.125000 4.750000 +v 0.124999 0.125000 4.750000 +v 0.124999 0.125000 4.500000 +v -0.249999 3.375000 4.875000 +v 0.250001 3.375000 4.875000 +v -0.249999 3.375000 4.375000 +v 0.250001 3.375000 4.375000 +v -0.249999 3.625000 4.375000 +v -0.249999 3.625000 4.875000 +v 0.250001 3.625000 4.875000 +v 0.250001 3.625000 4.375000 +v -0.374999 3.875000 4.500000 +v -0.374999 3.875000 4.750000 +v -0.124999 3.875000 4.750000 +v -0.124999 3.875000 4.500000 +v 1.315784 1.529006 4.875000 +v 1.065784 1.095993 4.875000 +v 1.315784 1.529006 4.375000 +v 1.065784 1.095993 4.375000 +v 1.532291 1.404006 4.375000 +v 1.532291 1.404006 4.875000 +v 1.282291 0.970993 4.875000 +v 1.282291 0.970993 4.375000 +v 1.811297 1.387259 4.500000 +v 1.811297 1.387259 4.750000 +v 1.686297 1.170753 4.750000 +v 1.686297 1.170753 4.500000 +v -1.315784 2.470994 4.875000 +v -1.065784 2.904007 4.875000 +v -1.315784 2.470994 4.375000 +v -1.065784 2.904007 4.375000 +v -1.532291 2.595994 4.375000 +v -1.532291 2.595994 4.875000 +v -1.282291 3.029007 4.875000 +v -1.282291 3.029007 4.375000 +v -1.811297 2.612741 4.500000 +v -1.811297 2.612741 4.750000 +v -1.686297 2.829247 4.750000 +v -1.686297 2.829247 4.500000 +v -0.470994 0.684216 4.875000 +v -0.904007 0.934216 4.875000 +v -0.470994 0.684216 4.375000 +v -0.904007 0.934216 4.375000 +v -0.595994 0.467709 4.375000 +v -0.595994 0.467709 4.875000 +v -1.029007 0.717709 4.875000 +v -1.029007 0.717709 4.375000 +v -0.612741 0.188703 4.500000 +v -0.612741 0.188703 4.750000 +v -0.829247 0.313703 4.750000 +v -0.829247 0.313703 4.500000 +v 0.470994 3.315784 4.875000 +v 0.904007 3.065784 4.875000 +v 0.470994 3.315784 4.375000 +v 0.904007 3.065784 4.375000 +v 0.595995 3.532291 4.375000 +v 0.595995 3.532291 4.875000 +v 1.029007 3.282291 4.875000 +v 1.029007 3.282291 4.375000 +v 0.612741 3.811297 4.500000 +v 0.612741 3.811297 4.750000 +v 0.829248 3.686297 4.750000 +v 0.829248 3.686297 4.500000 +v 0.904006 0.934215 4.875000 +v 0.470993 0.684215 4.875000 +v 0.904006 0.934215 4.375000 +v 0.470993 0.684215 4.375000 +v 1.029006 0.717708 4.375000 +v 1.029006 0.717708 4.875000 +v 0.595993 0.467708 4.875000 +v 0.595993 0.467708 4.375000 +v 1.262259 0.563702 4.500000 +v 1.262259 0.563702 4.750000 +v 1.045753 0.438702 4.750000 +v 1.045753 0.438702 4.500000 +v -0.904006 3.065785 4.875000 +v -0.470993 3.315785 4.875000 +v -0.904006 3.065785 4.375000 +v -0.470993 3.315785 4.375000 +v -1.029006 3.282291 4.375000 +v -1.029006 3.282291 4.875000 +v -0.595993 3.532291 4.875000 +v -0.595993 3.532291 4.375000 +v -1.262259 3.436298 4.500000 +v -1.262259 3.436298 4.750000 +v -1.045752 3.561298 4.750000 +v -1.045752 3.561298 4.500000 +v -1.065785 1.095994 4.875000 +v -1.315785 1.529007 4.875000 +v -1.065785 1.095994 4.375000 +v -1.315785 1.529007 4.375000 +v -1.282292 0.970994 4.375000 +v -1.282292 0.970994 4.875000 +v -1.532292 1.404007 4.875000 +v -1.532292 1.404007 4.375000 +v -1.436298 0.737741 4.500000 +v -1.436298 0.737741 4.750000 +v -1.561298 0.954248 4.750000 +v -1.561298 0.954248 4.500000 +v 1.065785 2.904006 4.875000 +v 1.315785 2.470993 4.875000 +v 1.065785 2.904006 4.375000 +v 1.315785 2.470993 4.375000 +v 1.282292 3.029006 4.375000 +v 1.282292 3.029006 4.875000 +v 1.532292 2.595993 4.875000 +v 1.532292 2.595993 4.375000 +v 1.436298 3.262259 4.500000 +v 1.436298 3.262259 4.750000 +v 1.561298 3.045752 4.750000 +v 1.561298 3.045752 4.500000 +v 1.074157 1.279396 5.621202 +v 0.720603 0.925842 5.621202 +v 1.135551 1.218002 5.128798 +v 0.781998 0.864448 5.128798 +v 1.309642 1.043911 5.172210 +v 1.248248 1.105304 5.664614 +v 0.894695 0.751751 5.664614 +v 0.956088 0.690357 5.172210 +v 1.556773 0.973556 5.338723 +v 1.526076 1.004253 5.584925 +v 1.349299 0.827477 5.584925 +v 1.379996 0.796780 5.338723 +v 0.569945 0.838860 5.621202 +v 0.086982 0.709450 5.621202 +v 0.592417 0.754994 5.128798 +v 0.109454 0.625585 5.128798 +v 0.656138 0.517182 5.172210 +v 0.633667 0.601047 5.664614 +v 0.150704 0.471638 5.664614 +v 0.173175 0.387772 5.172210 +v 0.834983 0.332687 5.338723 +v 0.823747 0.374620 5.584925 +v 0.582266 0.309916 5.584925 +v 0.593501 0.267983 5.338723 +v 0.086983 3.290549 5.621202 +v 0.569946 3.161140 5.621202 +v 0.109455 3.374415 5.128798 +v 0.592418 3.245006 5.128798 +v 0.173177 3.612228 5.172210 +v 0.150705 3.528362 5.664614 +v 0.633668 3.398952 5.664614 +v 0.656140 3.482818 5.172210 +v 0.110540 3.861427 5.338723 +v 0.099304 3.819494 5.584925 +v 0.340785 3.754789 5.584925 +v 0.352021 3.796722 5.338723 +v 0.720604 3.074157 5.621202 +v 1.074158 2.720603 5.621202 +v 0.781998 3.135550 5.128798 +v 1.135552 2.781997 5.128798 +v 0.956089 3.309642 5.172210 +v 0.894696 3.248248 5.664614 +v 1.248249 2.894695 5.664614 +v 1.309643 2.956089 5.172210 +v 1.026444 3.556773 5.338723 +v 0.995747 3.526076 5.584925 +v 1.172523 3.349299 5.584925 +v 1.203220 3.379996 5.338723 +v 1.161140 2.569945 5.621202 +v 1.290550 2.086982 5.621202 +v 1.245006 2.592417 5.128798 +v 1.374415 2.109454 5.128798 +v 1.482818 2.656138 5.172210 +v 1.398953 2.633667 5.664614 +v 1.528362 2.150704 5.664614 +v 1.612228 2.173176 5.172210 +v 1.667313 2.834983 5.338723 +v 1.625380 2.823747 5.584925 +v 1.690084 2.582266 5.584925 +v 1.732017 2.593501 5.338723 +v -1.290549 2.086983 5.621202 +v -1.161140 2.569946 5.621202 +v -1.374415 2.109455 5.128798 +v -1.245005 2.592418 5.128798 +v -1.612228 2.173177 5.172210 +v -1.528362 2.150705 5.664614 +v -1.398953 2.633668 5.664614 +v -1.482818 2.656140 5.172210 +v -1.861427 2.110540 5.338723 +v -1.819494 2.099304 5.584925 +v -1.754789 2.340786 5.584925 +v -1.796722 2.352022 5.338723 +v -1.074157 2.720604 5.621202 +v -0.720603 3.074158 5.621202 +v -1.135550 2.781999 5.128798 +v -0.781997 3.135552 5.128798 +v -1.309641 2.956089 5.172210 +v -1.248248 2.894696 5.664614 +v -0.894694 3.248249 5.664614 +v -0.956088 3.309643 5.172210 +v -1.556773 3.026444 5.338723 +v -1.526076 2.995747 5.584925 +v -1.349299 3.172523 5.584925 +v -1.379996 3.203220 5.338723 +v -0.569945 3.161140 5.621202 +v -0.086982 3.290550 5.621202 +v -0.592416 3.245006 5.128798 +v -0.109454 3.374415 5.128798 +v -0.656138 3.482818 5.172210 +v -0.633666 3.398953 5.664614 +v -0.150704 3.528362 5.664614 +v -0.173175 3.612228 5.172210 +v -0.834983 3.667313 5.338723 +v -0.823747 3.625380 5.584925 +v -0.582265 3.690084 5.584925 +v -0.593501 3.732017 5.338723 +v -0.086983 0.709451 5.621202 +v -0.569946 0.838860 5.621202 +v -0.109455 0.625585 5.128798 +v -0.592418 0.754994 5.128798 +v -0.173177 0.387772 5.172210 +v -0.150705 0.471638 5.664614 +v -0.633668 0.601048 5.664614 +v -0.656140 0.517182 5.172210 +v -0.110540 0.138573 5.338723 +v -0.099304 0.180506 5.584925 +v -0.340786 0.245211 5.584925 +v -0.352021 0.203278 5.338723 +v -0.720604 0.925843 5.621202 +v -1.074158 1.279397 5.621202 +v -0.781998 0.864450 5.128798 +v -1.135552 1.218003 5.128798 +v -0.956089 0.690358 5.172210 +v -0.894696 0.751752 5.664614 +v -1.248249 1.105306 5.664614 +v -1.309643 1.043912 5.172210 +v -1.026444 0.443227 5.338723 +v -0.995747 0.473924 5.584925 +v -1.172524 0.650701 5.584925 +v -1.203220 0.620004 5.338723 +v -1.161140 1.430055 5.621202 +v -1.290550 1.913018 5.621202 +v -1.245006 1.407584 5.128798 +v -1.374415 1.890546 5.128798 +v -1.482818 1.343862 5.172210 +v -1.398953 1.366334 5.664614 +v -1.528362 1.849296 5.664614 +v -1.612228 1.826825 5.172210 +v -1.667313 1.165017 5.338723 +v -1.625380 1.176253 5.584925 +v -1.690084 1.417735 5.584925 +v -1.732017 1.406499 5.338723 +v -0.894345 1.750001 6.351577 +v -0.894345 2.250001 6.351577 +v -1.105654 1.750001 5.898423 +v -1.105654 2.250001 5.898423 +v -1.332231 1.750001 6.004077 +v -1.120922 1.750001 6.457232 +v -1.120922 2.250001 6.457232 +v -1.332231 2.250001 6.004077 +v -1.505981 1.625001 6.223021 +v -1.400326 1.625001 6.449597 +v -1.400326 1.875001 6.449597 +v -1.505981 1.875001 6.223021 +v 0.249999 1.105655 6.351577 +v -0.250001 1.105655 6.351577 +v 0.249999 0.894346 5.898423 +v -0.250001 0.894346 5.898423 +v 0.249999 0.667769 6.004077 +v 0.249999 0.879078 6.457232 +v -0.250001 0.879078 6.457232 +v -0.250001 0.667769 6.004077 +v 0.374999 0.494019 6.223021 +v 0.374999 0.599674 6.449597 +v 0.124999 0.599674 6.449597 +v 0.124999 0.494019 6.223021 +v -0.249999 2.894345 6.351577 +v 0.250001 2.894345 6.351577 +v -0.249999 3.105654 5.898423 +v 0.250001 3.105654 5.898423 +v -0.249999 3.332232 6.004077 +v -0.249999 3.120922 6.457232 +v 0.250001 3.120922 6.457232 +v 0.250001 3.332232 6.004077 +v -0.374999 3.505981 6.223021 +v -0.374999 3.400326 6.449597 +v -0.124999 3.400326 6.449597 +v -0.124999 3.505981 6.223021 +v 0.809174 1.544379 6.351577 +v 0.455620 1.190825 6.351577 +v 0.958592 1.394960 5.898423 +v 0.605039 1.041407 5.898423 +v 1.118806 1.234746 6.004077 +v 0.969388 1.384165 6.457232 +v 0.615835 1.030611 6.457232 +v 0.765253 0.881193 6.004077 +v 1.330054 1.200275 6.223021 +v 1.255345 1.274984 6.449597 +v 1.078568 1.098207 6.449597 +v 1.153277 1.023499 6.223021 +v -0.809174 2.455621 6.351577 +v -0.455620 2.809175 6.351577 +v -0.958592 2.605040 5.898423 +v -0.605039 2.958593 5.898423 +v -1.118806 2.765254 6.004077 +v -0.969388 2.615836 6.457232 +v -0.615834 2.969389 6.457232 +v -0.765252 3.118807 6.004077 +v -1.330054 2.799725 6.223021 +v -1.255345 2.725016 6.449597 +v -1.078568 2.901793 6.449597 +v -1.153277 2.976501 6.223021 +v -0.455621 1.190826 6.351577 +v -0.809175 1.544380 6.351577 +v -0.605040 1.041408 5.898423 +v -0.958593 1.394961 5.898423 +v -0.765254 0.881194 6.004077 +v -0.615835 1.030612 6.457232 +v -0.969389 1.384166 6.457232 +v -1.118807 1.234747 6.004077 +v -0.799725 0.669946 6.223021 +v -0.725016 0.744655 6.449597 +v -0.901793 0.921432 6.449597 +v -0.976501 0.846723 6.223021 +v 0.455622 2.809174 6.351577 +v 0.809175 2.455620 6.351577 +v 0.605040 2.958592 5.898423 +v 0.958593 2.605039 5.898423 +v 0.765254 3.118806 6.004077 +v 0.615836 2.969388 6.457232 +v 0.969389 2.615834 6.457232 +v 1.118807 2.765253 6.004077 +v 0.799725 3.330054 6.223021 +v 0.725016 3.255345 6.449597 +v 0.901793 3.078568 6.449597 +v 0.976502 3.153277 6.223021 +v -0.375000 1.750001 7.091506 +v -0.375000 2.250001 7.091506 +v -0.625000 1.750001 6.658494 +v -0.625000 2.250001 6.658494 +v -0.841506 1.750001 6.783494 +v -0.591506 1.750001 7.216506 +v -0.591506 2.250001 7.216506 +v -0.841506 2.250001 6.783494 +v -0.995513 1.625001 7.016747 +v -0.870513 1.625001 7.233253 +v -0.870512 1.875001 7.233253 +v -0.995512 1.875001 7.016747 +v 0.404006 1.800240 7.091506 +v -0.029007 1.550240 7.091506 +v 0.529006 1.583734 6.658494 +v 0.095993 1.333734 6.658494 +v 0.637259 1.396234 6.783494 +v 0.512259 1.612740 7.216506 +v 0.079246 1.362740 7.216506 +v 0.204246 1.146234 6.783494 +v 0.822515 1.325360 7.016747 +v 0.760015 1.433614 7.233253 +v 0.543509 1.308614 7.233253 +v 0.606009 1.200360 7.016747 +v -0.404006 2.199760 7.091506 +v 0.029007 2.449760 7.091506 +v -0.529006 2.416266 6.658494 +v -0.095993 2.666266 6.658494 +v -0.637259 2.603766 6.783494 +v -0.512259 2.387260 7.216506 +v -0.079246 2.637260 7.216506 +v -0.204246 2.853766 6.783494 +v -0.822515 2.674640 7.016747 +v -0.760015 2.566386 7.233253 +v -0.543509 2.691386 7.233253 +v -0.606009 2.799640 7.016747 +v 0.029006 1.550241 7.091506 +v -0.404007 1.800241 7.091506 +v -0.095994 1.333735 6.658494 +v -0.529007 1.583735 6.658494 +v -0.204248 1.146235 6.783494 +v -0.079247 1.362741 7.216506 +v -0.512260 1.612741 7.216506 +v -0.637260 1.396235 6.783494 +v -0.172997 0.950361 7.016747 +v -0.110498 1.058614 7.233253 +v -0.327004 1.183614 7.233253 +v -0.389504 1.075361 7.016747 +v -0.029006 2.449759 7.091506 +v 0.404007 2.199759 7.091506 +v 0.095994 2.666265 6.658494 +v 0.529007 2.416265 6.658494 +v 0.204248 2.853765 6.783494 +v 0.079247 2.637259 7.216506 +v 0.512260 2.387259 7.216506 +v 0.637260 2.603765 6.783494 +v 0.172998 3.049639 7.016747 +v 0.110498 2.941386 7.233253 +v 0.327004 2.816386 7.233253 +v 0.389504 2.924639 7.016747 +v 0.000000 2.250000 7.250000 +v -0.176777 2.176777 7.250000 +v -0.250000 2.000000 7.250000 +v -0.176777 1.823223 7.250000 +v 0.000000 1.750000 7.250000 +v 0.176777 1.823223 7.250000 +v 0.250000 2.000000 7.250000 +v 0.176777 2.176777 7.250000 +v 0.000000 2.250000 7.625000 +v -0.176777 2.176777 7.375000 +v -0.250000 2.000000 7.625000 +v -0.176777 1.823223 7.375000 +v 0.000000 1.750000 7.625000 +v 0.176777 1.823223 7.375000 +v 0.250000 2.000000 7.625000 +v 0.176777 2.176777 7.375000 +v 0.000000 2.937500 3.750000 +v -0.468750 2.811899 3.750000 +v -0.811899 2.468750 3.750000 +v -0.937500 2.000000 3.750000 +v -0.811899 1.531250 3.750000 +v -0.468750 1.188101 3.750000 +v -0.000000 1.062500 3.750000 +v 0.468750 1.188101 3.750000 +v 0.811899 1.531250 3.750000 +v 0.937500 2.000000 3.750000 +v 0.811899 2.468750 3.750000 +v 0.468751 2.811899 3.750000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.500000 1.000000 -1.750000 +v 0.500000 1.000000 -1.750000 +v -0.500000 1.750000 -1.750000 +v -0.500000 1.750000 -0.500000 +v 0.500000 1.750000 -0.500000 +v 0.500000 1.750000 -1.750000 +v -0.500000 2.000000 -1.250000 +v -0.500000 2.000000 -0.500000 +v 0.500000 2.000000 -0.500000 +v 0.500000 2.000000 -1.250000 +v -0.375000 1.000000 -2.125000 +v 0.375000 1.000000 -2.125000 +v -0.375000 1.000000 -2.875000 +v 0.375000 1.000000 -2.875000 +v -0.375000 1.487500 -2.875000 +v -0.375000 1.487500 -2.125000 +v 0.375000 1.487500 -2.125000 +v 0.375000 1.487500 -2.875000 +v -0.375000 1.737500 -2.875000 +v 0.375000 1.737500 -2.875000 +v -0.375000 1.737500 -3.000000 +v 0.375000 1.737500 -3.000000 +v -0.375000 2.487500 -3.000000 +v -0.375000 2.487500 -2.875000 +v 0.375000 2.487500 -2.875000 +v 0.375000 2.487500 -3.000000 +v 0.125000 1.737500 -2.875000 +v 0.250000 1.737500 -2.875000 +v 0.125000 1.737500 -3.000000 +v 0.250000 1.737500 -3.000000 +v 0.125000 0.987500 -3.000000 +v 0.125000 0.987500 -2.875000 +v 0.250000 0.987500 -2.875000 +v 0.250000 0.987500 -3.000000 +v -0.250000 1.737500 -2.875000 +v -0.125000 1.737500 -2.875000 +v -0.250000 1.737500 -3.000000 +v -0.125000 1.737500 -3.000000 +v -0.250000 0.987500 -3.000000 +v -0.250000 0.987500 -2.875000 +v -0.125000 0.987500 -2.875000 +v -0.125000 0.987500 -3.000000 +v 0.500000 1.000000 -0.500000 +v 0.750000 1.000000 -0.500000 +v 0.500000 1.000000 -0.750000 +v 0.750000 1.000000 -0.750000 +v 0.500000 3.500000 -0.500000 +v 0.750000 3.500000 -0.500000 +v 0.500000 3.500000 -0.750000 +v 0.750000 3.500000 -0.750000 +v -0.750000 1.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v -0.750000 1.000000 -0.750000 +v -0.500000 1.000000 -0.750000 +v -0.750000 3.500000 -0.500000 +v -0.500000 3.500000 -0.500000 +v -0.750000 3.500000 -0.750000 +v -0.500000 3.500000 -0.750000 +v 0.500000 1.000000 -3.250000 +v 0.750000 1.000000 -3.250000 +v 0.500000 1.000000 -3.500000 +v 0.750000 1.000000 -3.500000 +v 0.500000 3.500000 -3.250000 +v 0.750000 3.500000 -3.250000 +v 0.500000 3.500000 -3.500000 +v 0.750000 3.500000 -3.500000 +v -0.750000 1.000000 -3.250000 +v -0.500000 1.000000 -3.250000 +v -0.750000 1.000000 -3.500000 +v -0.500000 1.000000 -3.500000 +v -0.750000 3.500000 -3.250000 +v -0.500000 3.500000 -3.250000 +v -0.750000 3.500000 -3.500000 +v -0.500000 3.500000 -3.500000 +v -0.750000 3.500000 -0.250000 +v 0.750000 3.500000 -0.250000 +v -0.750000 3.500000 -3.750000 +v 0.750000 3.500000 -3.750000 +v -0.750000 3.750000 -3.750000 +v -0.750000 3.750000 -0.250000 +v 0.750000 3.750000 -0.250000 +v 0.750000 3.750000 -3.750000 +v -0.500000 1.000000 -3.125000 +v 0.500000 1.000000 -3.125000 +v -0.500000 1.000000 -3.875000 +v 0.500000 1.000000 -3.875000 +v -0.500000 1.500000 -3.875000 +v -0.500000 1.500000 -3.125000 +v 0.500000 1.500000 -3.125000 +v 0.500000 1.500000 -3.875000 +v 0.125000 3.875000 -0.625000 +v 0.125000 3.875000 -0.875000 +v -0.125000 3.875000 -0.625000 +v -0.125000 3.875000 -0.875000 +v 0.125000 3.750000 -0.875000 +v -0.125000 3.750000 -0.875000 +v 0.125000 3.750000 -0.625000 +v -0.125000 3.750000 -0.625000 +v -0.750000 0.750000 -3.875000 +v -0.750000 1.000000 -3.625000 +v -0.750000 1.500000 -3.625000 +v -0.750000 1.750000 -3.875000 +v -0.750000 1.000000 -4.625000 +v -0.750000 0.750000 -4.375000 +v -0.750000 1.750000 -4.375000 +v -0.750000 1.500000 -4.625000 +v 0.750000 1.000000 -3.625000 +v 0.750000 0.750000 -3.875000 +v 0.750000 1.750000 -3.875000 +v 0.750000 1.500000 -3.625000 +v 0.750000 0.750000 -4.375000 +v 0.750000 1.000000 -4.625000 +v 0.750000 1.500000 -4.625000 +v 0.750000 1.750000 -4.375000 +v -0.250000 3.812500 -0.687500 +v 0.250000 3.812500 -0.687500 +v -0.250000 4.312500 -0.687500 +v 0.250000 4.312500 -0.687500 +v -0.250000 4.312500 -0.562500 +v -0.250000 3.812500 -0.562500 +v 0.250000 3.812500 -0.562500 +v 0.250000 4.312500 -0.562500 +v -0.125000 4.187500 -0.812500 +v -0.125000 3.937500 -0.812500 +v 0.125000 3.937500 -0.812500 +v 0.125000 4.187500 -0.812500 +v -0.187500 4.250000 -0.562500 +v -0.187500 3.875000 -0.562500 +v 0.187500 3.875000 -0.562500 +v 0.187500 4.250000 -0.562500 +v -0.187500 4.250000 -0.500000 +v -0.187500 3.875000 -0.500000 +v 0.187500 3.875000 -0.500000 +v 0.187500 4.250000 -0.500000 +v 0.375000 1.000000 -3.312500 +v 0.500000 1.000000 -3.312500 +v 0.375000 1.000000 -3.437500 +v 0.500000 1.000000 -3.437500 +v -0.501000 3.500000 -3.312500 +v -0.376000 3.500000 -3.312500 +v -0.501000 3.500000 -3.437500 +v -0.376000 3.500000 -3.437500 +v -0.500000 1.000000 -3.312500 +v -0.375000 1.000000 -3.312500 +v -0.500000 1.000000 -3.437500 +v -0.375000 1.000000 -3.437500 +v 0.374000 3.500000 -3.312500 +v 0.499000 3.500000 -3.312500 +v 0.374000 3.500000 -3.437500 +v 0.499000 3.500000 -3.437500 +v -0.750000 1.250000 -4.250000 +v -0.750000 1.338388 -4.213388 +v -0.750000 1.375000 -4.125000 +v -0.750000 1.338388 -4.036612 +v -0.750000 1.250000 -4.000000 +v -0.750000 1.161612 -4.036612 +v -0.750000 1.125000 -4.125000 +v -0.750000 1.161612 -4.213388 +v -1.000000 1.250000 -4.250000 +v -1.000000 1.338388 -4.213388 +v -1.000000 1.375000 -4.125000 +v -1.000000 1.338388 -4.036612 +v -1.000000 1.250000 -4.000000 +v -1.000000 1.161612 -4.036612 +v -1.000000 1.125000 -4.125000 +v -1.000000 1.161612 -4.213388 +v -1.088388 1.213388 -4.250000 +v -1.150888 1.275888 -4.213388 +v -1.176777 1.301777 -4.125000 +v -1.150888 1.275888 -4.036612 +v -1.088388 1.213388 -4.000000 +v -1.025888 1.150888 -4.036612 +v -1.025888 1.150888 -4.213388 +v -1.125000 1.125000 -4.250000 +v -1.213388 1.125000 -4.213388 +v -1.250000 1.125000 -4.125000 +v -1.213388 1.125000 -4.036612 +v -1.125000 1.125000 -4.000000 +v -1.036612 1.125000 -4.036612 +v -1.036612 1.125000 -4.213388 +v -1.000000 1.000000 -4.125000 +v -1.125000 1.000000 -4.250000 +v -1.213388 1.000000 -4.213388 +v -1.250000 1.000000 -4.125000 +v -1.213388 1.000000 -4.036612 +v -1.125000 1.000000 -4.000000 +v -1.036612 1.000000 -4.036612 +v -1.036612 1.000000 -4.213388 +v -1.000000 0.911612 -4.088388 +v -1.125000 0.823223 -4.176777 +v -1.213388 0.849112 -4.150888 +v -1.250000 0.911612 -4.088388 +v -1.213388 0.974112 -4.025888 +v -1.036612 0.974112 -4.025888 +v -1.036612 0.849112 -4.150888 +v -1.000000 0.875000 -4.000000 +v -1.125000 0.750000 -4.000000 +v -1.213388 0.786612 -4.000000 +v -1.250000 0.875000 -4.000000 +v -1.213388 0.963388 -4.000000 +v -1.036612 0.963388 -4.000000 +v -1.036612 0.786612 -4.000000 +v -1.125000 1.000000 0.500000 +v -1.000000 0.875000 0.500000 +v -1.125000 0.750000 0.500000 +v -1.213388 0.786612 0.500000 +v -1.250000 0.875000 0.500000 +v -1.213388 0.963388 0.500000 +v -1.036612 0.963388 0.500000 +v -1.036612 0.786612 0.500000 +v -1.088388 1.000000 0.588388 +v -1.088388 0.750000 0.588388 +v -1.150888 0.786612 0.650888 +v -1.176777 0.875000 0.676777 +v -1.150888 0.963388 0.650888 +v -1.025888 0.963388 0.525888 +v -1.025888 0.786612 0.525888 +v -1.000000 1.000000 0.625000 +v -1.000000 0.750000 0.625000 +v -1.000000 0.786612 0.713388 +v -1.000000 0.875000 0.750000 +v -1.000000 0.963388 0.713388 +v -1.000000 0.963388 0.536612 +v -1.000000 0.786612 0.536612 +v -0.750000 0.875000 0.500000 +v -0.750000 1.000000 0.625000 +v -0.750000 0.750000 0.625000 +v -0.750000 0.786612 0.713388 +v -0.750000 0.875000 0.750000 +v -0.750000 0.963388 0.713388 +v -0.750000 0.963388 0.536612 +v -0.750000 0.786612 0.536612 +v 1.125000 3.375000 -0.250000 +v 1.125000 3.375000 -3.750000 +v 1.125000 3.625000 -0.250000 +v 1.125000 3.625000 -3.750000 +v -1.125000 3.375000 -3.750000 +v -1.125000 3.375000 -0.250000 +v -1.125000 3.625000 -3.750000 +v -1.125000 3.625000 -0.250000 +v 0.625000 2.500000 2.500000 +v 0.448223 2.500000 2.573223 +v 0.375000 2.500000 2.750000 +v 0.448223 2.500000 2.926777 +v 0.625000 2.500000 3.000000 +v 0.801777 2.500000 2.926777 +v 0.875000 2.500000 2.750000 +v 0.801777 2.500000 2.573223 +v 0.625000 2.500000 1.750000 +v 0.448223 2.500000 1.823223 +v 0.375000 2.500000 2.000000 +v 0.448223 2.500000 2.176777 +v 0.625000 2.500000 2.250000 +v 0.801777 2.500000 2.176777 +v 0.875000 2.500000 2.000000 +v 0.801777 2.500000 1.823223 +v 0.625000 3.000000 2.500000 +v 0.448223 3.000000 2.573223 +v 0.375000 3.000000 2.750000 +v 0.448223 3.000000 2.926777 +v 0.625000 3.000000 3.000000 +v 0.801777 3.000000 2.926777 +v 0.875000 3.000000 2.750000 +v 0.801777 3.000000 2.573223 +v 0.625000 3.000000 1.750000 +v 0.448223 3.000000 1.823223 +v 0.375000 3.000000 2.000000 +v 0.448223 3.000000 2.176777 +v 0.625000 3.000000 2.250000 +v 0.801777 3.000000 2.176777 +v 0.875000 3.000000 2.000000 +v 0.801777 3.000000 1.823223 +v 0.536612 3.125000 2.661612 +v 0.625000 3.125000 2.625000 +v 0.500000 3.125000 2.750000 +v 0.536612 3.125000 2.838388 +v 0.625000 3.125000 2.875000 +v 0.713388 3.125000 2.838388 +v 0.750000 3.125000 2.750000 +v 0.713388 3.125000 2.661612 +v 0.536612 3.125000 1.911612 +v 0.625000 3.125000 1.875000 +v 0.500000 3.125000 2.000000 +v 0.536612 3.125000 2.088388 +v 0.625000 3.125000 2.125000 +v 0.713388 3.125000 2.088388 +v 0.750000 3.125000 2.000000 +v 0.713388 3.125000 1.911612 +vt 0.964670 0.929866 +vt 0.974078 0.932982 +vt 0.966013 0.933222 +vt 0.116235 0.984543 +vt 0.106827 0.981428 +vt 0.114891 0.981188 +vt 0.156962 0.964302 +vt 0.159223 0.974514 +vt 0.156962 0.975209 +vt 0.462708 0.953115 +vt 0.470311 0.972098 +vt 0.451956 0.980603 +vt 0.154207 0.964945 +vt 0.755545 0.794827 +vt 0.751880 0.784538 +vt 0.755565 0.784537 +vt 0.817620 0.267565 +vt 0.821321 0.278052 +vt 0.817636 0.278053 +vt 0.751860 0.711424 +vt 0.755565 0.721885 +vt 0.751880 0.721885 +vt 0.751880 0.701001 +vt 0.755545 0.711424 +vt 0.162261 0.984488 +vt 0.154207 0.975852 +vt 0.751880 0.805410 +vt 0.751860 0.794828 +vt 0.817636 0.257169 +vt 0.821305 0.267565 +vt 0.412886 0.978242 +vt 0.418184 0.961190 +vt 0.430976 0.972687 +vt 0.412778 0.715128 +vt 0.409073 0.704667 +vt 0.412758 0.704667 +vt 0.409093 0.694244 +vt 0.412778 0.694244 +vt 0.433731 0.972043 +vt 0.425678 0.963407 +vt 0.428433 0.962764 +vt 0.406278 0.810175 +vt 0.409983 0.820757 +vt 0.406298 0.820758 +vt 0.409963 0.831153 +vt 0.406294 0.820758 +vt 0.409979 0.820758 +vt 0.433731 0.982950 +vt 0.409983 0.799885 +vt 0.409963 0.810175 +vt 0.409979 0.841641 +vt 0.406278 0.831153 +vt 0.893080 0.866947 +vt 0.896780 0.859229 +vt 0.896765 0.866947 +vt 0.168818 0.983136 +vt 0.169754 0.986705 +vt 0.175053 0.980560 +vt 0.172792 0.970348 +vt 0.175053 0.969653 +vt 0.169754 0.960374 +vt 0.163197 0.961726 +vt 0.162261 0.958157 +vt 0.159223 0.966334 +vt 0.163197 0.981474 +vt 0.172792 0.978528 +vt 0.168818 0.963388 +vt 0.171573 0.982493 +vt 0.161979 0.973871 +vt 0.165953 0.961082 +vt 0.896777 0.906201 +vt 0.893080 0.898336 +vt 0.896765 0.898335 +vt 0.246705 0.859638 +vt 0.243005 0.851792 +vt 0.246690 0.851792 +vt 0.243019 0.843975 +vt 0.246705 0.843975 +vt 0.165953 0.980831 +vt 0.896780 0.874884 +vt 0.893095 0.874884 +vt 0.893092 0.890539 +vt 0.896777 0.890539 +vt 0.161979 0.965691 +vt 0.565196 0.854933 +vt 0.560292 0.847110 +vt 0.563120 0.847190 +vt 0.105483 0.984864 +vt 0.101124 0.975631 +vt 0.097880 0.965881 +vt 0.106827 0.961053 +vt 0.101124 0.967191 +vt 0.123838 0.965107 +vt 0.114891 0.960813 +vt 0.116235 0.957377 +vt 0.120593 0.975050 +vt 0.123838 0.976360 +vt 0.097880 0.977134 +vt 0.105483 0.957698 +vt 0.120593 0.966610 +vt 0.729674 0.974152 +vt 0.729674 0.982591 +vt 0.710205 0.974733 +vt 0.893080 0.874884 +vt 0.889380 0.866947 +vt 0.893065 0.866947 +vt 0.324434 0.896666 +vt 0.328108 0.904462 +vt 0.324423 0.904462 +vt 0.565196 0.839279 +vt 0.562369 0.839199 +vt 0.893080 0.859229 +vt 0.889395 0.859230 +vt 0.328119 0.912328 +vt 0.324434 0.912328 +vt 0.409185 0.851630 +vt 0.412886 0.859476 +vt 0.409200 0.859476 +vt 0.409200 0.843813 +vt 0.412871 0.851630 +vt 0.151452 0.969653 +vt 0.149191 0.978528 +vt 0.149191 0.970348 +vt 0.975422 0.957033 +vt 0.983025 0.976016 +vt 0.964669 0.984520 +vt 0.154207 0.979917 +vt 0.151452 0.980560 +vt 0.563977 0.807733 +vt 0.560312 0.797443 +vt 0.563997 0.797443 +vt 0.669146 0.650553 +vt 0.672847 0.661041 +vt 0.669162 0.661041 +vt 0.409073 0.746436 +vt 0.412778 0.756897 +vt 0.409093 0.756897 +vt 0.409093 0.736013 +vt 0.412758 0.746436 +vt 0.146153 0.960374 +vt 0.154207 0.969010 +vt 0.560312 0.818316 +vt 0.560292 0.807733 +vt 0.669162 0.640158 +vt 0.672831 0.650553 +vt 0.987895 0.337962 +vt 0.982596 0.344107 +vt 0.975103 0.315559 +vt 0.412778 0.694244 +vt 0.409073 0.683783 +vt 0.412758 0.683783 +vt 0.409093 0.673360 +vt 0.412778 0.673360 +vt 0.990650 0.326412 +vt 0.982596 0.317776 +vt 0.985351 0.317133 +vt 0.817620 0.246587 +vt 0.821325 0.257169 +vt 0.817640 0.257169 +vt 0.563977 0.828711 +vt 0.560308 0.818316 +vt 0.563993 0.818316 +vt 0.990650 0.337319 +vt 0.987895 0.327055 +vt 0.821325 0.236296 +vt 0.821305 0.246586 +vt 0.563993 0.839199 +vt 0.560292 0.828711 +vt 0.889395 0.843575 +vt 0.893065 0.851292 +vt 0.889380 0.851292 +vt 0.139597 0.961726 +vt 0.138660 0.958157 +vt 0.133361 0.975209 +vt 0.135623 0.966334 +vt 0.135623 0.974514 +vt 0.138660 0.984488 +vt 0.145217 0.983136 +vt 0.146153 0.986705 +vt 0.145217 0.963388 +vt 0.133361 0.964302 +vt 0.139597 0.981474 +vt 0.136841 0.962369 +vt 0.146436 0.970991 +vt 0.142462 0.983779 +vt 0.246701 0.906618 +vt 0.243005 0.898753 +vt 0.246690 0.898752 +vt 0.246705 0.843975 +vt 0.243005 0.836129 +vt 0.246690 0.836129 +vt 0.243019 0.828312 +vt 0.246705 0.828312 +vt 0.142462 0.964031 +vt 0.893080 0.859229 +vt 0.889395 0.859229 +vt 0.243016 0.890956 +vt 0.246701 0.890956 +vt 0.756764 0.842028 +vt 0.751860 0.834205 +vt 0.754688 0.834284 +vt 0.983025 0.937276 +vt 0.975422 0.929546 +vt 0.983025 0.948528 +vt 0.974078 0.953356 +vt 0.979780 0.947219 +vt 0.957066 0.949303 +vt 0.966013 0.953597 +vt 0.964669 0.957033 +vt 0.957066 0.938050 +vt 0.960311 0.939360 +vt 0.979780 0.938779 +vt 0.975422 0.956712 +vt 0.960311 0.947800 +vt 0.840983 0.975291 +vt 0.854749 0.968913 +vt 0.860452 0.983150 +vt 0.896780 0.859229 +vt 0.893080 0.851292 +vt 0.896765 0.851292 +vt 0.561508 0.886259 +vt 0.565182 0.894056 +vt 0.561496 0.894056 +vt 0.753937 0.826294 +vt 0.756764 0.826373 +vt 0.893095 0.843575 +vt 0.896780 0.843575 +vt 0.565193 0.901922 +vt 0.561508 0.901922 +vt 0.142103 0.829484 +vt 0.145803 0.837330 +vt 0.142118 0.837330 +vt 0.142118 0.821667 +vt 0.145788 0.829484 +vt 0.889441 0.388429 +vt 0.871015 0.410580 +vt 0.871015 0.388430 +vt 0.814488 0.877039 +vt 0.832914 0.788483 +vt 0.832914 0.877037 +vt 0.283727 0.803652 +vt 0.262037 0.789471 +vt 0.284136 0.789488 +vt 0.841473 0.533162 +vt 0.870954 0.415024 +vt 0.870954 0.533163 +vt 0.291281 0.651453 +vt 0.259197 0.742079 +vt 0.261815 0.651431 +vt 0.642122 0.081258 +vt 0.745310 0.199398 +vt 0.642122 0.199396 +vt 0.261815 0.808370 +vt 0.261628 0.803635 +vt 0.281483 0.746831 +vt 0.291281 0.808393 +vt 0.288663 0.742101 +vt 0.673557 0.849500 +vt 0.651456 0.856720 +vt 0.651456 0.849711 +vt 0.680924 0.758312 +vt 0.673557 0.765392 +vt 0.651456 0.758595 +vt 0.669406 0.433451 +vt 0.743070 0.514682 +vt 0.669406 0.514671 +vt 0.743070 0.433462 +vt 0.750186 0.514717 +vt 0.661790 0.433484 +vt 0.501319 0.862125 +vt 0.501319 0.792035 +vt 0.530787 0.784743 +vt 0.254484 0.784731 +vt 0.252614 0.737380 +vt 0.281892 0.732667 +vt 0.387852 0.758143 +vt 0.406278 0.846693 +vt 0.387852 0.846696 +vt 0.899666 0.390799 +vt 0.918092 0.412949 +vt 0.899666 0.412949 +vt 0.784792 0.997004 +vt 0.798931 0.975265 +vt 0.798931 0.997403 +vt 0.661790 0.514704 +vt 0.654423 0.533161 +vt 0.757553 0.533178 +vt 0.750186 0.533176 +vt 0.313312 0.984464 +vt 0.303904 0.981349 +vt 0.311968 0.981109 +vt 0.832563 0.984542 +vt 0.823155 0.981427 +vt 0.831219 0.981186 +vt 0.915578 0.972216 +vt 0.913317 0.981090 +vt 0.913317 0.972910 +vt 0.231573 0.949085 +vt 0.239176 0.968068 +vt 0.220820 0.976572 +vt 0.918333 0.982479 +vt 0.915578 0.983122 +vt 0.563977 0.786860 +vt 0.560312 0.776571 +vt 0.563997 0.776570 +vt 0.669146 0.671437 +vt 0.672847 0.681924 +vt 0.669162 0.681925 +vt 0.751860 0.732308 +vt 0.755565 0.742769 +vt 0.751880 0.742769 +vt 0.751880 0.721885 +vt 0.755545 0.732308 +vt 0.913035 0.962293 +vt 0.918333 0.971573 +vt 0.560312 0.797443 +vt 0.560292 0.786860 +vt 0.669162 0.661041 +vt 0.672831 0.671437 +vt 0.889044 0.984399 +vt 0.883746 0.990544 +vt 0.876252 0.961996 +vt 0.412778 0.736012 +vt 0.409073 0.725552 +vt 0.412758 0.725551 +vt 0.409093 0.715128 +vt 0.412778 0.715128 +vt 0.891799 0.972849 +vt 0.883746 0.964213 +vt 0.886501 0.963569 +vt 0.142103 0.790211 +vt 0.145808 0.800793 +vt 0.142123 0.800794 +vt 0.842211 0.224305 +vt 0.838541 0.213910 +vt 0.842226 0.213909 +vt 0.891799 0.983756 +vt 0.889044 0.973492 +vt 0.145808 0.779921 +vt 0.145788 0.790211 +vt 0.838541 0.234793 +vt 0.838526 0.224305 +vt 0.324437 0.881011 +vt 0.328108 0.888728 +vt 0.324423 0.888729 +vt 0.910280 0.962936 +vt 0.903723 0.964288 +vt 0.902786 0.960720 +vt 0.897488 0.966864 +vt 0.899749 0.977077 +vt 0.897488 0.977771 +vt 0.902786 0.987051 +vt 0.909343 0.985699 +vt 0.910280 0.989267 +vt 0.909343 0.965951 +vt 0.899749 0.968897 +vt 0.903723 0.984036 +vt 0.900968 0.964931 +vt 0.910562 0.973553 +vt 0.906588 0.986342 +vt 0.131059 0.912323 +vt 0.127362 0.904457 +vt 0.131047 0.904457 +vt 0.565196 0.870596 +vt 0.561496 0.862750 +vt 0.565182 0.862750 +vt 0.561511 0.854933 +vt 0.565196 0.854933 +vt 0.906588 0.966594 +vt 0.328123 0.896665 +vt 0.324437 0.896666 +vt 0.127373 0.896660 +vt 0.131059 0.896660 +vt 0.837819 0.869340 +vt 0.832914 0.861517 +vt 0.835742 0.861597 +vt 0.814208 0.977133 +vt 0.821811 0.984863 +vt 0.814208 0.965880 +vt 0.823155 0.961052 +vt 0.817453 0.967190 +vt 0.840166 0.965105 +vt 0.831219 0.960811 +vt 0.832563 0.957375 +vt 0.836921 0.975048 +vt 0.840166 0.976358 +vt 0.817453 0.975629 +vt 0.821811 0.957696 +vt 0.836921 0.966609 +vt 0.748507 0.983944 +vt 0.748507 0.975504 +vt 0.767975 0.983363 +vt 0.131062 0.896660 +vt 0.127362 0.888723 +vt 0.131047 0.888723 +vt 0.703416 0.900457 +vt 0.707089 0.908254 +vt 0.703404 0.908254 +vt 0.834991 0.853606 +vt 0.837819 0.853686 +vt 0.127377 0.881006 +vt 0.131062 0.881005 +vt 0.707101 0.916120 +vt 0.703416 0.916120 +vt 0.561496 0.878413 +vt 0.565196 0.886259 +vt 0.561511 0.886259 +vt 0.561511 0.870596 +vt 0.565182 0.878413 +vt 0.945965 0.971483 +vt 0.943703 0.980358 +vt 0.943703 0.972178 +vt 0.957166 0.373615 +vt 0.957166 0.362362 +vt 0.983125 0.372840 +vt 0.948720 0.981747 +vt 0.945965 0.982390 +vt 0.409963 0.789302 +vt 0.406298 0.779013 +vt 0.409983 0.779012 +vt 0.751860 0.815806 +vt 0.755561 0.826293 +vt 0.751875 0.826294 +vt 0.751860 0.753192 +vt 0.755565 0.763653 +vt 0.751880 0.763653 +vt 0.751880 0.742769 +vt 0.755545 0.753192 +vt 0.940666 0.962204 +vt 0.948720 0.970840 +vt 0.406298 0.799885 +vt 0.406278 0.789302 +vt 0.751875 0.805410 +vt 0.755545 0.815805 +vt 0.968947 0.211996 +vt 0.974245 0.194945 +vt 0.987037 0.206441 +vt 0.755565 0.784537 +vt 0.751860 0.774076 +vt 0.755545 0.774076 +vt 0.751880 0.763653 +vt 0.755565 0.763653 +vt 0.989792 0.205797 +vt 0.981739 0.197161 +vt 0.984494 0.196518 +vt 0.142103 0.811084 +vt 0.145808 0.821666 +vt 0.142123 0.821667 +vt 0.246690 0.817824 +vt 0.243020 0.807429 +vt 0.246705 0.807429 +vt 0.989792 0.216704 +vt 0.145808 0.800794 +vt 0.145788 0.811083 +vt 0.243020 0.828312 +vt 0.243005 0.817824 +vt 0.243019 0.875302 +vt 0.246690 0.883018 +vt 0.243005 0.883019 +vt 0.934109 0.963556 +vt 0.933173 0.959987 +vt 0.927874 0.977039 +vt 0.930135 0.968164 +vt 0.930135 0.976344 +vt 0.933173 0.986318 +vt 0.939729 0.984966 +vt 0.940666 0.988535 +vt 0.939729 0.965218 +vt 0.927874 0.966132 +vt 0.934109 0.983304 +vt 0.931354 0.964199 +vt 0.940948 0.972821 +vt 0.936974 0.985610 +vt 0.781669 0.918250 +vt 0.777972 0.910384 +vt 0.781658 0.910384 +vt 0.602063 0.875303 +vt 0.598363 0.867457 +vt 0.602049 0.867457 +vt 0.598378 0.859640 +vt 0.602063 0.859640 +vt 0.936974 0.965861 +vt 0.246705 0.890955 +vt 0.243019 0.890956 +vt 0.777984 0.902588 +vt 0.781669 0.902588 +vt 0.785854 0.081220 +vt 0.780950 0.073397 +vt 0.783777 0.073477 +vt 0.294957 0.977055 +vt 0.302560 0.984785 +vt 0.294957 0.965802 +vt 0.303904 0.960974 +vt 0.298202 0.967112 +vt 0.320915 0.965028 +vt 0.311968 0.960734 +vt 0.313312 0.957298 +vt 0.320915 0.976281 +vt 0.317670 0.974971 +vt 0.298202 0.975552 +vt 0.302560 0.957619 +vt 0.317670 0.966531 +vt 0.566017 0.975236 +vt 0.579783 0.968857 +vt 0.585486 0.983094 +vt 0.896780 0.890538 +vt 0.893080 0.882602 +vt 0.896765 0.882601 +vt 0.561508 0.901922 +vt 0.565182 0.909718 +vt 0.561496 0.909718 +vt 0.783026 0.065486 +vt 0.785854 0.065566 +vt 0.893095 0.874885 +vt 0.896780 0.874884 +vt 0.565193 0.917584 +vt 0.561508 0.917584 +vt 0.243005 0.867455 +vt 0.246705 0.875301 +vt 0.243019 0.875301 +vt 0.243019 0.859638 +vt 0.246690 0.867455 +vt 0.962328 0.168381 +vt 0.943902 0.190531 +vt 0.943902 0.168381 +vt 0.672850 0.533178 +vt 0.654423 0.621734 +vt 0.654423 0.533180 +vt 0.090326 0.810172 +vt 0.068636 0.795991 +vt 0.090735 0.796008 +vt 0.841473 0.651302 +vt 0.870954 0.533164 +vt 0.870954 0.651303 +vt 0.097880 0.657973 +vt 0.065796 0.748599 +vt 0.068414 0.657951 +vt 0.642122 0.199398 +vt 0.745310 0.317538 +vt 0.642122 0.317536 +vt 0.068414 0.814890 +vt 0.068227 0.810155 +vt 0.088082 0.753351 +vt 0.097880 0.814913 +vt 0.095262 0.748621 +vt 0.644089 0.849500 +vt 0.621987 0.856720 +vt 0.621987 0.849711 +vt 0.651456 0.758312 +vt 0.644088 0.765392 +vt 0.621987 0.758595 +vt 0.654164 0.739885 +vt 0.580500 0.658653 +vt 0.654164 0.658665 +vt 0.580500 0.739873 +vt 0.573383 0.658618 +vt 0.661780 0.739852 +vt 0.501319 0.791682 +vt 0.501319 0.861772 +vt 0.471850 0.869063 +vt 0.061083 0.791251 +vt 0.059213 0.743900 +vt 0.088491 0.739187 +vt 0.889380 0.887828 +vt 0.870954 0.799278 +vt 0.889380 0.799275 +vt 0.673633 0.967035 +vt 0.692059 0.989184 +vt 0.673633 0.989185 +vt 0.325765 0.996349 +vt 0.339904 0.974610 +vt 0.339904 0.996748 +vt 0.661780 0.658632 +vt 0.669146 0.758312 +vt 0.566017 0.758296 +vt 0.566017 0.640158 +vt 0.000136 0.000014 +vt 0.088582 0.118072 +vt 0.000136 0.118085 +vt 0.088582 0.413485 +vt 0.177029 0.000000 +vt 0.177029 0.413483 +vt 0.627394 0.081258 +vt 0.638423 0.149560 +vt 0.623696 0.149171 +vt 0.471824 0.873341 +vt 0.457084 0.784737 +vt 0.471824 0.784737 +vt 0.624752 0.224985 +vt 0.642122 0.414907 +vt 0.029469 0.525549 +vt 0.044203 0.413264 +vt 0.044203 0.805768 +vt 0.000136 0.295193 +vt 0.088582 0.413250 +vt 0.000136 0.413264 +vt 0.088446 0.264661 +vt 0.088582 0.295179 +vt 0.000000 0.146603 +vt 0.000000 0.264674 +vt 0.626338 0.338705 +vt 0.595561 0.243161 +vt 0.029469 0.693765 +vt 0.000000 0.553867 +vt 0.619388 0.849014 +vt 0.605094 0.880278 +vt 0.604655 0.849011 +vt 0.331691 0.869731 +vt 0.349759 0.838197 +vt 0.345683 0.869865 +vt 0.058964 0.818944 +vt 0.044280 0.850210 +vt 0.044223 0.818943 +vt 0.768198 0.031410 +vt 0.787591 0.000000 +vt 0.777652 0.031028 +vt 0.335766 0.900690 +vt 0.349759 0.900824 +vt 0.442365 0.577926 +vt 0.530807 0.577926 +vt 0.530811 0.696065 +vt 0.412886 0.651166 +vt 0.294957 0.415042 +vt 0.412886 0.415023 +vt 0.619826 0.817628 +vt 0.605094 0.817625 +vt 0.778137 0.062999 +vt 0.787591 0.062617 +vt 0.059213 0.624775 +vt 0.059213 0.602103 +vt 0.088667 0.567265 +vt 0.128680 0.570366 +vt 0.164527 0.555144 +vt 0.165498 0.569328 +vt 0.566017 0.415870 +vt 0.606537 0.447023 +vt 0.566017 0.640158 +vt 0.221117 0.651300 +vt 0.250599 0.415023 +vt 0.250599 0.651300 +vt 0.059021 0.787558 +vt 0.044280 0.787558 +vt 0.177029 0.415155 +vt 0.177029 0.651431 +vt 0.294957 0.651428 +vt 0.294957 0.415152 +vt 0.177029 0.564772 +vt 0.164527 0.543809 +vt 0.166673 0.413485 +vt 0.986770 0.176000 +vt 0.972029 0.139084 +vt 0.986770 0.139084 +vt 0.191770 0.993851 +vt 0.177029 0.971700 +vt 0.191770 0.971700 +vt 0.127710 0.556183 +vt 0.127710 0.544848 +vt 0.191770 0.971702 +vt 0.206511 0.993838 +vt 0.191770 0.993841 +vt 0.128680 0.559031 +vt 0.078311 0.415979 +vt 0.972750 0.888042 +vt 0.987491 0.924958 +vt 0.972750 0.924959 +vt 0.766935 0.081220 +vt 0.752194 0.059070 +vt 0.766935 0.059069 +vt 0.991464 0.789133 +vt 0.980153 0.751916 +vt 0.991464 0.752235 +vt 0.473857 0.973494 +vt 0.488598 0.995630 +vt 0.473857 0.995633 +vt 0.654423 0.415023 +vt 0.606537 0.425996 +vt 0.643372 0.446670 +vt 0.643372 0.425643 +vt 0.654423 0.639311 +vt 0.953091 0.805785 +vt 0.974079 0.842889 +vt 0.953091 0.842688 +vt 0.723832 0.341514 +vt 0.699899 0.399398 +vt 0.642122 0.375422 +vt 0.253827 0.385635 +vt 0.297997 0.341280 +vt 0.297997 0.385582 +vt 0.177029 0.385442 +vt 0.209550 0.341282 +vt 0.209550 0.385584 +vt 0.442122 0.057873 +vt 0.486065 0.074394 +vt 0.466891 0.095357 +vt 0.253829 0.179730 +vt 0.297998 0.135044 +vt 0.297998 0.179321 +vt 0.488240 0.530725 +vt 0.533171 0.492408 +vt 0.532770 0.534460 +vt 0.404174 0.032951 +vt 0.461296 0.036909 +vt 0.209551 0.179335 +vt 0.253829 0.135453 +vt 0.444360 0.534460 +vt 0.488642 0.488673 +vt 0.330222 0.341137 +vt 0.330222 0.385439 +vt 0.253827 0.341333 +vt 0.177029 0.178242 +vt 0.209551 0.135058 +vt 0.330222 0.133941 +vt 0.330222 0.178218 +vt 0.215035 0.090456 +vt 0.253778 0.090801 +vt 0.450950 0.453374 +vt 0.489346 0.450106 +vt 0.320622 0.296811 +vt 0.253777 0.296983 +vt 0.177029 0.133965 +vt 0.292426 0.090443 +vt 0.320622 0.089478 +vt 0.292425 0.296936 +vt 0.177029 0.341140 +vt 0.215034 0.296938 +vt 0.495995 0.054605 +vt 0.528309 0.453374 +vt 0.423348 0.011988 +vt 0.474322 0.021806 +vt 0.514272 0.125355 +vt 0.551268 0.110288 +vt 0.553753 0.132145 +vt 0.253676 0.045774 +vt 0.490353 0.415023 +vt 0.301423 0.252461 +vt 0.226003 0.252551 +vt 0.253676 0.252584 +vt 0.205676 0.044844 +vt 0.226003 0.045527 +vt 0.301422 0.044829 +vt 0.281282 0.252550 +vt 0.205677 0.252463 +vt 0.578111 0.100362 +vt 0.591333 0.118248 +vt 0.281282 0.045519 +vt 0.518184 0.417358 +vt 0.541129 0.000000 +vt 0.532977 0.037258 +vt 0.514286 0.009926 +vt 0.523067 0.105438 +vt 0.547770 0.077403 +vt 0.253523 0.000372 +vt 0.569330 0.004850 +vt 0.543714 0.033287 +vt 0.527688 0.068132 +vt 0.536489 0.075463 +vt 0.253524 0.208136 +vt 0.234323 0.000000 +vt 0.242454 0.000273 +vt 0.591333 0.023176 +vt 0.554994 0.035227 +vt 0.264567 0.208123 +vt 0.495995 0.031968 +vt 0.525660 0.046075 +vt 0.558507 0.073432 +vt 0.264566 0.000270 +vt 0.523724 0.057376 +vt 0.966035 0.766820 +vt 0.936572 0.781587 +vt 0.936570 0.766820 +vt 0.703100 0.952165 +vt 0.680255 0.967034 +vt 0.673635 0.952165 +vt 0.213217 0.912249 +vt 0.227959 0.941781 +vt 0.213217 0.941782 +vt 0.703098 0.937397 +vt 0.673633 0.937397 +vt 0.936552 0.759416 +vt 0.966033 0.744649 +vt 0.966034 0.759416 +vt 0.096015 0.889985 +vt 0.084703 0.860147 +vt 0.096015 0.860466 +vt 0.059213 0.882540 +vt 0.068666 0.896917 +vt 0.059213 0.897299 +vt 0.936551 0.744649 +vt 0.958695 0.729848 +vt 0.084703 0.889665 +vt 0.068666 0.882158 +vt 0.242673 0.934318 +vt 0.242673 0.949085 +vt 0.058944 0.786858 +vt 0.044203 0.757324 +vt 0.058944 0.757323 +vt 0.847202 0.020110 +vt 0.869097 0.000000 +vt 0.876682 0.020110 +vt 0.931764 0.109288 +vt 0.917245 0.079726 +vt 0.931764 0.079755 +vt 0.847153 0.034349 +vt 0.876634 0.034349 +vt 0.088849 0.964659 +vt 0.059213 0.950394 +vt 0.088658 0.950394 +vt 0.403216 0.197512 +vt 0.390263 0.167165 +vt 0.403216 0.168564 +vt 0.366754 0.191339 +vt 0.373792 0.203238 +vt 0.366754 0.205813 +vt 0.081462 0.934219 +vt 0.390263 0.196113 +vt 0.373792 0.188764 +vt 0.901451 0.087162 +vt 0.901451 0.072396 +vt 0.739714 0.938818 +vt 0.724972 0.909286 +vt 0.739714 0.909285 +vt 0.029488 0.950347 +vt 0.050963 0.965522 +vt 0.036228 0.965522 +vt 0.177029 0.867980 +vt 0.190411 0.897579 +vt 0.177029 0.897513 +vt 0.058950 0.935582 +vt 0.029480 0.935582 +vt 0.966265 0.722480 +vt 0.936783 0.707712 +vt 0.966265 0.707712 +vt 0.927380 0.921683 +vt 0.913134 0.892037 +vt 0.927380 0.892165 +vt 0.206884 0.890190 +vt 0.213066 0.904813 +vt 0.206884 0.904957 +vt 0.944197 0.692928 +vt 0.958938 0.692928 +vt 0.913134 0.921555 +vt 0.896994 0.914288 +vt 0.955365 0.892305 +vt 0.929738 0.914650 +vt 0.927380 0.892037 +vt 0.000000 0.950810 +vt 0.022693 0.935582 +vt 0.029472 0.950810 +vt 0.710205 0.900457 +vt 0.697413 0.870846 +vt 0.710205 0.870924 +vt 0.000008 0.965574 +vt 0.029480 0.965574 +vt 0.937002 0.029548 +vt 0.966483 0.014780 +vt 0.966484 0.029548 +vt 0.443196 0.922096 +vt 0.428673 0.892493 +vt 0.443196 0.892578 +vt 0.680958 0.878219 +vt 0.673633 0.863590 +vt 0.680958 0.863452 +vt 0.944417 0.000000 +vt 0.959158 0.000000 +vt 0.428673 0.922011 +vt 0.412886 0.914791 +vt 0.986770 0.139084 +vt 0.998081 0.168921 +vt 0.986770 0.168602 +vt 0.943731 0.929546 +vt 0.929738 0.929412 +vt 0.966038 0.781587 +vt 0.943691 0.796388 +vt 0.955365 0.921828 +vt 0.943731 0.914784 +vt 0.710205 0.916591 +vt 0.710205 0.901824 +vt 0.971888 0.139084 +vt 0.944043 0.153845 +vt 0.943902 0.139084 +vt 0.379655 0.911290 +vt 0.358059 0.933373 +vt 0.350190 0.911290 +vt 0.840983 0.902484 +vt 0.855723 0.932019 +vt 0.840983 0.932019 +vt 0.636525 0.965810 +vt 0.651260 0.993705 +vt 0.636525 0.993846 +vt 0.380361 0.910450 +vt 0.364922 0.891463 +vt 0.379655 0.891508 +vt 0.365628 0.868803 +vt 0.380361 0.868847 +vt 0.372794 0.948140 +vt 0.358061 0.948140 +vt 0.365628 0.910405 +vt 0.350190 0.901819 +vt 0.350542 0.890489 +vt 0.870543 0.924610 +vt 0.870543 0.939377 +vt 0.879290 0.207889 +vt 0.895312 0.226384 +vt 0.880585 0.226800 +vt 0.814194 0.947579 +vt 0.799454 0.918044 +vt 0.814194 0.918044 +vt 0.500029 0.947445 +vt 0.522075 0.925361 +vt 0.529511 0.947445 +vt 0.879290 0.185217 +vt 0.894017 0.207473 +vt 0.507334 0.910594 +vt 0.522075 0.910594 +vt 0.972029 0.153844 +vt 0.953497 0.168381 +vt 0.894017 0.184802 +vt 0.909068 0.194782 +vt 0.784792 0.925401 +vt 0.784792 0.910633 +vt 0.938537 0.445694 +vt 0.951270 0.474960 +vt 0.938537 0.475212 +vt 0.566017 0.926567 +vt 0.588511 0.902648 +vt 0.595482 0.926567 +vt 0.409860 0.917707 +vt 0.395118 0.947240 +vt 0.395118 0.917707 +vt 0.566269 0.939322 +vt 0.595734 0.939322 +vt 0.967717 0.593972 +vt 0.954984 0.564470 +vt 0.967717 0.564437 +vt 0.571270 0.859640 +vt 0.593110 0.876307 +vt 0.566017 0.870919 +vt 0.584817 0.899954 +vt 0.595874 0.893504 +vt 0.598363 0.902648 +vt 0.954984 0.594005 +vt 0.938537 0.571858 +vt 0.582328 0.890810 +vt 0.380361 0.925172 +vt 0.380361 0.910405 +vt 0.953489 0.849231 +vt 0.924040 0.861987 +vt 0.924007 0.849231 +vt 0.748507 0.902588 +vt 0.763248 0.932121 +vt 0.748507 0.932121 +vt 0.953522 0.861987 +vt 0.931359 0.885905 +vt 0.983025 0.959112 +vt 0.995091 0.989749 +vt 0.983025 0.986783 +vt 0.969804 0.328751 +vt 0.956007 0.317896 +vt 0.969804 0.315559 +vt 0.951270 0.445442 +vt 0.967716 0.467544 +vt 0.943918 0.319448 +vt 0.956007 0.331088 +vt 0.943918 0.345832 +vt 0.777972 0.924820 +vt 0.777972 0.939586 +vt 0.621987 0.935434 +vt 0.634971 0.965669 +vt 0.621987 0.963470 +vt 0.929861 0.576163 +vt 0.916328 0.601859 +vt 0.902162 0.580169 +vt 0.936570 0.774219 +vt 0.921830 0.803754 +vt 0.921830 0.774220 +vt 0.930178 0.562975 +vt 0.902479 0.566981 +vt 0.132867 0.881005 +vt 0.111630 0.862785 +vt 0.125418 0.863581 +vt 0.118931 0.838991 +vt 0.132719 0.839787 +vt 0.749851 0.848667 +vt 0.737119 0.863678 +vt 0.737119 0.848919 +vt 0.119080 0.880209 +vt 0.097880 0.872293 +vt 0.101530 0.860396 +vt 0.907008 0.781587 +vt 0.907008 0.766820 +vt 0.604655 0.835846 +vt 0.583418 0.817625 +vt 0.597206 0.818422 +vt 0.444353 0.945749 +vt 0.459093 0.916214 +vt 0.459093 0.945749 +vt 0.590867 0.835050 +vt 0.566017 0.839031 +vt 0.597354 0.859640 +vt 0.858414 0.240277 +vt 0.871146 0.225477 +vt 0.871146 0.240244 +vt 0.634971 0.937633 +vt 0.651445 0.958813 +vt 0.583566 0.858844 +vt 0.569741 0.847743 +vt 0.473752 0.938348 +vt 0.473752 0.953115 +vt 0.982458 0.554962 +vt 0.994994 0.580555 +vt 0.982458 0.582998 +vt 0.294957 0.920393 +vt 0.316994 0.893834 +vt 0.324423 0.920393 +vt 0.206565 0.941814 +vt 0.191825 0.912279 +vt 0.206565 0.912280 +vt 0.981225 0.002443 +vt 0.993761 0.028036 +vt 0.981224 0.030479 +vt 0.877837 0.562975 +vt 0.885056 0.580631 +vt 0.870954 0.580631 +vt 0.876087 0.604307 +vt 0.890189 0.604307 +vt 0.302509 0.881011 +vt 0.317242 0.881011 +vt 0.994718 0.680733 +vt 0.981006 0.658623 +vt 0.994718 0.651199 +vt 0.902162 0.582136 +vt 0.177029 0.919724 +vt 0.177029 0.904957 +vt 0.493898 0.886996 +vt 0.485939 0.869662 +vt 0.500029 0.869063 +vt 0.560238 0.946457 +vt 0.545497 0.916922 +vt 0.560238 0.916923 +vt 0.127362 0.881006 +vt 0.105258 0.907565 +vt 0.097880 0.881005 +vt 0.500029 0.910433 +vt 0.479809 0.887595 +vt 0.119967 0.920387 +vt 0.105226 0.920387 +vt 0.456298 0.873331 +vt 0.442586 0.851502 +vt 0.456298 0.843813 +vt 0.485939 0.911031 +vt 0.471850 0.901288 +vt 0.530811 0.924243 +vt 0.530811 0.909476 +vt 0.995825 0.959112 +vt 0.983025 0.929546 +vt 0.995825 0.929578 +vt 0.471824 0.878696 +vt 0.445870 0.900743 +vt 0.444353 0.873341 +vt 0.936551 0.737285 +vt 0.921811 0.766820 +vt 0.921811 0.737286 +vt 0.982683 0.463525 +vt 0.995483 0.493092 +vt 0.982683 0.493060 +vt 0.979111 0.438491 +vt 0.966311 0.408725 +vt 0.979111 0.408973 +vt 0.994942 0.353858 +vt 0.983125 0.384683 +vt 0.983125 0.356429 +vt 0.459605 0.916214 +vt 0.445870 0.913537 +vt 0.966311 0.438242 +vt 0.957166 0.415639 +vt 0.471824 0.904284 +vt 0.459605 0.903420 +vt 0.907008 0.744615 +vt 0.907008 0.729848 +vt 0.995463 0.534502 +vt 0.982663 0.504736 +vt 0.995463 0.504984 +vt 0.953091 0.842645 +vt 0.938350 0.813112 +vt 0.953091 0.813111 +vt 0.770345 0.277132 +vt 0.745310 0.295722 +vt 0.752720 0.270236 +vt 0.782162 0.302814 +vt 0.782162 0.274560 +vt 0.754122 0.313297 +vt 0.745310 0.309849 +vt 0.692059 0.967034 +vt 0.706082 0.990789 +vt 0.692059 0.995070 +vt 0.770345 0.305386 +vt 0.754122 0.299170 +vt 0.923672 0.820552 +vt 0.923672 0.805785 +vt 0.901255 0.640872 +vt 0.878767 0.614761 +vt 0.893448 0.614761 +vt 0.901255 0.633840 +vt 0.915759 0.604334 +vt 0.915759 0.633867 +vt 0.870954 0.651303 +vt 0.900317 0.651303 +vt 0.621987 0.935434 +vt 0.611526 0.966055 +vt 0.611525 0.936762 +vt 0.876682 0.005171 +vt 0.890599 0.033451 +vt 0.876682 0.031129 +vt 0.892512 0.604307 +vt 0.877830 0.604307 +vt 0.595871 0.944745 +vt 0.890599 0.007493 +vt 0.906946 0.012979 +vt 0.931580 0.626437 +vt 0.931580 0.641204 +vt 0.899666 0.279928 +vt 0.922730 0.254730 +vt 0.928880 0.279928 +vt 0.899687 0.488906 +vt 0.914180 0.518457 +vt 0.899687 0.518440 +vt 0.980258 0.694228 +vt 0.994144 0.721429 +vt 0.980258 0.722729 +vt 0.500072 0.887605 +vt 0.514770 0.869063 +vt 0.514813 0.887605 +vt 0.500037 0.910594 +vt 0.514778 0.910594 +vt 0.907614 0.240457 +vt 0.922221 0.240457 +vt 0.999072 0.139084 +vt 0.988145 0.119393 +vt 0.999072 0.109991 +vt 0.529535 0.888717 +vt 0.930020 0.511045 +vt 0.930020 0.525812 +vt 0.412886 0.961190 +vt 0.437982 0.943782 +vt 0.441973 0.961190 +vt 0.931740 0.072394 +vt 0.917194 0.042861 +vt 0.931740 0.042860 +vt 0.870954 0.876316 +vt 0.853941 0.859053 +vt 0.868637 0.858345 +vt 0.248196 0.934532 +vt 0.275447 0.948711 +vt 0.247076 0.948711 +vt 0.856258 0.900420 +vt 0.856258 0.877024 +vt 0.424080 0.929550 +vt 0.438624 0.929550 +vt 0.269158 0.964953 +vt 0.254972 0.964953 +vt 0.840983 0.890786 +vt 0.901451 0.050242 +vt 0.901451 0.035474 +vt 0.187961 0.823449 +vt 0.182523 0.854643 +vt 0.177029 0.848759 +vt 0.931743 0.153554 +vt 0.917200 0.183076 +vt 0.917200 0.153542 +vt 0.433731 0.961190 +vt 0.444326 0.991963 +vt 0.433731 0.990366 +vt 0.987491 0.918587 +vt 0.998036 0.888042 +vt 0.998036 0.917370 +vt 0.212628 0.859527 +vt 0.198949 0.835216 +vt 0.212628 0.832853 +vt 0.968947 0.179035 +vt 0.979248 0.194945 +vt 0.968947 0.193699 +vt 0.989907 0.878189 +vt 0.974286 0.855435 +vt 0.989907 0.849231 +vt 0.198949 0.861890 +vt 0.901451 0.160950 +vt 0.901451 0.146183 +vt 0.339469 0.167165 +vt 0.337437 0.192658 +vt 0.330222 0.190941 +vt 0.931752 0.146183 +vt 0.917219 0.116626 +vt 0.931752 0.116649 +vt 0.000000 0.965574 +vt 0.014291 0.995301 +vt 0.000000 0.995020 +vt 0.943918 0.256276 +vt 0.958186 0.226617 +vt 0.958186 0.256128 +vt 0.366754 0.169635 +vt 0.353900 0.199870 +vt 0.353900 0.170599 +vt 0.337437 0.207293 +vt 0.330222 0.205576 +vt 0.970599 0.248318 +vt 0.901451 0.124055 +vt 0.901451 0.109288 +vt 0.847153 0.020023 +vt 0.824336 0.000000 +vt 0.839064 0.000000 +vt 0.929981 0.353829 +vt 0.915466 0.324325 +vt 0.929981 0.324296 +vt 0.817537 0.034281 +vt 0.846995 0.034281 +vt 0.927676 0.959987 +vt 0.956770 0.945704 +vt 0.957066 0.959987 +vt 0.595250 0.971053 +vt 0.585486 0.997805 +vt 0.585486 0.968857 +vt 0.933670 0.672428 +vt 0.946588 0.685293 +vt 0.933670 0.686841 +vt 0.934995 0.929546 +vt 0.949690 0.929546 +vt 0.960148 0.680129 +vt 0.946588 0.670879 +vt 0.960148 0.651303 +vt 0.899666 0.331655 +vt 0.899666 0.316889 +vt 0.681135 0.852911 +vt 0.699251 0.824487 +vt 0.710205 0.849462 +vt 0.929990 0.451963 +vt 0.915460 0.422455 +vt 0.929990 0.422430 +vt 0.710205 0.860004 +vt 0.500029 0.913006 +vt 0.489530 0.943800 +vt 0.489529 0.914630 +vt 0.621813 0.996470 +vt 0.610397 0.966055 +vt 0.621813 0.970512 +vt 0.696793 0.814291 +vt 0.684716 0.826212 +vt 0.682258 0.816015 +vt 0.473857 0.937308 +vt 0.473857 0.922722 +vt 0.176344 0.903313 +vt 0.161925 0.892503 +vt 0.176344 0.880881 +vt 0.899687 0.429790 +vt 0.899687 0.415023 +vt 0.132867 0.880881 +vt 0.152167 0.906960 +vt 0.137638 0.906324 +vt 0.929980 0.533211 +vt 0.915439 0.562760 +vt 0.915439 0.533226 +vt 0.344230 0.920166 +vt 0.335545 0.901112 +vt 0.349759 0.900824 +vt 0.380361 0.976039 +vt 0.394707 0.947240 +vt 0.394707 0.974827 +vt 0.349759 0.942478 +vt 0.330017 0.920455 +vt 0.152167 0.921241 +vt 0.137638 0.920606 +vt 0.407360 0.964151 +vt 0.161925 0.910716 +vt 0.161925 0.882153 +vt 0.899687 0.540579 +vt 0.899687 0.525812 +vt 0.896994 0.960720 +vt 0.921599 0.943285 +vt 0.926210 0.960720 +vt 0.899687 0.451988 +vt 0.914175 0.481525 +vt 0.899687 0.481523 +vt 0.595871 0.966055 +vt 0.610397 0.994624 +vt 0.595871 0.993749 +vt 0.872419 0.206186 +vt 0.865373 0.225087 +vt 0.858501 0.205806 +vt 0.879290 0.183826 +vt 0.865373 0.183446 +vt 0.907515 0.929047 +vt 0.922123 0.929047 +vt 0.844584 0.215836 +vt 0.898043 0.932245 +vt 0.906990 0.943285 +vt 0.930024 0.474138 +vt 0.930024 0.488906 +vt 0.924007 0.892037 +vt 0.911531 0.859852 +vt 0.924007 0.864637 +vt 0.930000 0.390785 +vt 0.915509 0.361264 +vt 0.930000 0.361251 +vt 0.997467 0.256207 +vt 0.986911 0.225605 +vt 0.997467 0.226909 +vt 1.000000 0.408725 +vt 0.989493 0.439062 +vt 0.989493 0.409644 +vt 0.986308 0.051236 +vt 0.997283 0.073676 +vt 0.986308 0.077909 +vt 0.980677 0.300850 +vt 0.970338 0.314625 +vt 0.970338 0.299915 +vt 0.813486 0.996727 +vt 0.798931 0.975123 +vt 0.813486 0.974866 +vt 0.896994 0.861225 +vt 0.899055 0.882466 +vt 0.899666 0.368625 +vt 0.899666 0.353858 +vt 0.907805 0.689730 +vt 0.933670 0.667101 +vt 0.933669 0.692928 +vt 0.899666 0.279953 +vt 0.914167 0.309462 +vt 0.899666 0.309487 +vt 0.014291 0.965574 +vt 0.028564 0.995253 +vt 0.014291 0.995074 +vt 0.970527 0.256276 +vt 0.956278 0.285850 +vt 0.956278 0.256317 +vt 0.860452 0.970406 +vt 0.870063 0.998184 +vt 0.860452 0.999677 +vt 0.920339 0.651303 +vt 0.933271 0.652902 +vt 0.943918 0.263818 +vt 0.907008 0.661332 +vt 0.920737 0.665502 +vt 0.929993 0.302122 +vt 0.929993 0.316889 +vt 0.444697 0.167165 +vt 0.450662 0.190055 +vt 0.439941 0.189763 +vt 0.029814 0.935515 +vt 0.016477 0.906049 +vt 0.029814 0.905982 +vt 0.088695 0.994193 +vt 0.073954 0.964659 +vt 0.088695 0.964659 +vt 0.938537 0.504731 +vt 0.953278 0.475217 +vt 0.953278 0.504736 +vt 0.476257 0.167440 +vt 0.466140 0.197272 +vt 0.466140 0.167750 +vt 0.450662 0.204817 +vt 0.439941 0.204524 +vt 0.967944 0.482843 +vt 0.967944 0.497602 +vt 0.000000 0.913428 +vt 0.000000 0.898662 +vt 0.958707 0.641151 +vt 0.944179 0.619074 +vt 0.957742 0.619074 +vt 0.703404 0.937397 +vt 0.690111 0.907840 +vt 0.703404 0.907863 +vt 0.636525 0.994083 +vt 0.621987 0.966335 +vt 0.636525 0.965669 +vt 0.160425 0.860561 +vt 0.154052 0.880743 +vt 0.146643 0.860422 +vt 0.154026 0.838991 +vt 0.167808 0.839130 +vt 0.944207 0.604307 +vt 0.957771 0.604307 +vt 0.132867 0.870721 +vt 0.931638 0.611617 +vt 0.931580 0.641151 +vt 0.673633 0.915225 +vt 0.673633 0.900457 +vt 0.840983 0.920532 +vt 0.814684 0.942608 +vt 0.814208 0.920532 +vt 0.089108 0.934197 +vt 0.075682 0.904684 +vt 0.089108 0.904663 +vt 0.885044 0.907726 +vt 0.877080 0.888041 +vt 0.891171 0.887831 +vt 0.966687 0.564437 +vt 0.939027 0.549763 +vt 0.967177 0.549763 +vt 0.877080 0.929761 +vt 0.870954 0.907936 +vt 0.828040 0.957375 +vt 0.814653 0.957375 +vt 0.958453 0.534262 +vt 0.840920 0.950066 +vt 0.828071 0.942608 +vt 0.059213 0.912066 +vt 0.059213 0.897299 +vt 0.412886 0.858026 +vt 0.438575 0.881201 +vt 0.424468 0.882796 +vt 0.651792 0.905901 +vt 0.638464 0.935370 +vt 0.638464 0.905837 +vt 0.442586 0.843813 +vt 0.414373 0.847003 +vt 0.943902 0.139084 +vt 0.954794 0.107922 +vt 0.954794 0.136057 +vt 0.787591 0.008959 +vt 0.802291 0.035439 +vt 0.787591 0.034917 +vt 0.442586 0.890898 +vt 0.428479 0.892493 +vt 0.970652 0.113588 +vt 0.970652 0.127656 +vt 0.802291 0.009481 +vt 0.817537 0.012979 +vt 0.621987 0.913224 +vt 0.621987 0.898457 +vt 0.000000 0.864289 +vt 0.025565 0.887597 +vt 0.011562 0.889071 +vt 0.276940 0.934470 +vt 0.263548 0.904999 +vt 0.276940 0.904936 +vt 0.029806 0.850210 +vt 0.001801 0.853157 +vt 0.943902 0.078131 +vt 0.954890 0.047002 +vt 0.954890 0.074875 +vt 0.557918 0.946457 +vt 0.530811 0.960977 +vt 0.535682 0.949097 +vt 0.015803 0.898662 +vt 0.029806 0.897188 +vt 0.970791 0.066471 +vt 0.553047 0.958337 +vt 0.546800 0.975213 +vt 0.247076 0.912377 +vt 0.247076 0.897610 +vt 0.309717 0.870324 +vt 0.331691 0.853742 +vt 0.331691 0.881011 +vt 0.936783 0.700281 +vt 0.923486 0.729848 +vt 0.923486 0.700313 +vt 0.339180 0.793760 +vt 0.350162 0.824891 +vt 0.339180 0.821921 +vt 0.997234 0.106597 +vt 0.986375 0.080794 +vt 0.997234 0.078131 +vt 0.294957 0.858747 +vt 0.300252 0.879418 +vt 0.939970 0.430992 +vt 0.930000 0.442325 +vt 0.930000 0.428092 +vt 0.993944 0.722729 +vt 0.980258 0.737457 +vt 0.980258 0.724613 +vt 0.304422 0.849653 +vt 0.320704 0.848398 +vt 0.907008 0.707695 +vt 0.907008 0.692928 +vt 0.771071 0.902452 +vt 0.748507 0.880372 +vt 0.754601 0.880304 +vt 0.784493 0.872949 +vt 0.771071 0.872918 +vt 0.996081 0.287373 +vt 0.985003 0.256276 +vt 0.996081 0.259472 +vt 0.996357 0.604307 +vt 0.985403 0.635442 +vt 0.985403 0.607208 +vt 0.937001 0.031808 +vt 0.910411 0.015747 +vt 0.937001 0.017127 +vt 0.899307 0.391649 +vt 0.889441 0.402546 +vt 0.889441 0.388429 +vt 0.970791 0.076536 +vt 0.986308 0.054442 +vt 0.986308 0.069209 +vt 0.920242 0.000690 +vt 0.754601 0.865537 +vt 0.414230 0.204192 +vt 0.439941 0.182245 +vt 0.433827 0.204829 +vt 0.324145 0.957218 +vt 0.311405 0.927765 +vt 0.324145 0.927685 +vt 0.261817 0.994488 +vt 0.247076 0.964953 +vt 0.261817 0.964953 +vt 0.938537 0.504736 +vt 0.953277 0.534262 +vt 0.938537 0.534256 +vt 0.403216 0.174953 +vt 0.403216 0.204476 +vt 0.430142 0.167165 +vt 0.439941 0.167483 +vt 0.967922 0.512362 +vt 0.967922 0.527122 +vt 0.414229 0.174670 +vt 0.430142 0.181926 +vt 0.294957 0.935159 +vt 0.294957 0.920393 +vt 0.840983 0.920532 +vt 0.827897 0.889864 +vt 0.840983 0.893109 +vt 0.127034 0.957377 +vt 0.114323 0.927780 +vt 0.127034 0.927843 +vt 0.984461 0.828146 +vt 0.996365 0.798421 +vt 0.996365 0.827948 +vt 0.972750 0.929546 +vt 0.955365 0.912110 +vt 0.969975 0.912440 +vt 0.958140 0.888042 +vt 0.972750 0.888372 +vt 0.827735 0.877039 +vt 0.840821 0.880285 +vt 0.743954 0.994906 +vt 0.729674 0.978602 +vt 0.743954 0.968354 +vt 0.814488 0.888393 +vt 0.814811 0.914041 +vt 0.097880 0.935154 +vt 0.097880 0.920387 +vt 0.897839 0.842822 +vt 0.923672 0.821805 +vt 0.923672 0.849231 +vt 0.059213 0.934147 +vt 0.046392 0.904675 +vt 0.059213 0.904613 +vt 0.595545 0.201701 +vt 0.585686 0.182139 +vt 0.595545 0.176447 +vt 0.651792 0.922954 +vt 0.671798 0.899294 +vt 0.665940 0.923791 +vt 0.657650 0.939368 +vt 0.671798 0.940204 +vt 0.910333 0.805785 +vt 0.923249 0.808990 +vt 0.782331 0.995300 +vt 0.767975 0.979427 +vt 0.782331 0.969126 +vt 0.896994 0.817191 +vt 0.910755 0.818600 +vt 0.029933 0.912065 +vt 0.029933 0.897299 +vt 0.636192 0.872830 +vt 0.656307 0.883402 +vt 0.636192 0.898457 +vt 0.161991 0.958140 +vt 0.149307 0.928622 +vt 0.161991 0.928605 +vt 0.621987 0.870868 +vt 0.621987 0.896495 +vt 0.325765 0.942767 +vt 0.334862 0.974211 +vt 0.325765 0.968525 +vt 0.644073 0.858683 +vt 0.956432 0.224254 +vt 0.967965 0.213133 +vt 0.968947 0.226617 +vt 0.334862 0.948453 +vt 0.349759 0.971227 +vt 0.968947 0.199671 +vt 0.955451 0.210770 +vt 0.943918 0.194945 +vt 0.132867 0.936009 +vt 0.132867 0.921241 +vt 0.733896 0.901766 +vt 0.710205 0.879642 +vt 0.717434 0.879613 +vt 0.746743 0.901782 +vt 0.733896 0.872231 +vt 0.746743 0.872248 +vt 0.670998 0.872701 +vt 0.658028 0.856980 +vt 0.672719 0.856720 +vt 0.205740 0.942199 +vt 0.193400 0.971315 +vt 0.193400 0.941814 +vt 0.658028 0.897793 +vt 0.656307 0.872960 +vt 0.883426 0.959434 +vt 0.894865 0.948690 +vt 0.895899 0.961996 +vt 0.177029 0.949098 +vt 0.895899 0.934885 +vt 0.882392 0.946128 +vt 0.870954 0.929761 +vt 0.717434 0.864846 +vt 0.983418 0.139084 +vt 0.984832 0.128363 +vt 0.988145 0.138893 +vt 0.850168 0.403043 +vt 0.860611 0.410567 +vt 0.850168 0.410423 +vt 0.817687 0.229288 +vt 0.827921 0.234935 +vt 0.817620 0.236296 +vt 0.752194 0.066472 +vt 0.741750 0.059069 +vt 0.752194 0.059088 +vt 0.731347 0.066472 +vt 0.731346 0.059089 +vt 0.983418 0.118211 +vt 0.988145 0.118021 +vt 0.871015 0.403040 +vt 0.871015 0.410419 +vt 0.838526 0.229288 +vt 0.838459 0.236296 +vt 0.530811 0.985673 +vt 0.545690 0.975213 +vt 0.545690 0.996097 +vt 0.670640 0.637997 +vt 0.654423 0.637997 +vt 0.667488 0.621734 +vt 0.545690 0.985674 +vt 0.560450 0.975213 +vt 0.560450 0.996097 +vt 0.406278 0.769051 +vt 0.412418 0.758140 +vt 0.412418 0.779012 +vt 0.387852 0.867580 +vt 0.408699 0.846696 +vt 0.408699 0.867579 +vt 0.281282 0.207867 +vt 0.253676 0.208123 +vt 0.488881 0.569214 +vt 0.387178 0.073855 +vt 0.455655 0.167165 +vt 0.429472 0.137861 +vt 0.471844 0.135361 +vt 0.461455 0.571549 +vt 0.361579 0.070305 +vt 0.363216 0.027271 +vt 0.226003 0.414991 +vt 0.426376 0.112859 +vt 0.441784 0.577926 +vt 0.412886 0.544664 +vt 0.340958 0.079731 +vt 0.330222 0.042353 +vt 0.566017 0.544664 +vt 0.516712 0.571549 +vt 0.410895 0.089431 +vt 0.373133 0.163615 +vt 0.333936 0.124611 +vt 0.650297 0.073795 +vt 0.591333 0.000009 +vt 0.650297 0.000000 +vt 0.723977 0.059069 +vt 0.709235 0.000000 +vt 0.723975 0.000000 +vt 0.726928 0.317538 +vt 0.767994 0.364559 +vt 0.723832 0.362775 +vt 0.768199 0.059069 +vt 0.768196 0.000000 +vt 0.767994 0.411947 +vt 0.723832 0.410163 +vt 0.709235 0.070090 +vt 0.665032 0.000423 +vt 0.709235 0.000000 +vt 0.555026 0.132145 +vt 0.496062 0.176448 +vt 0.496062 0.132146 +vt 0.782715 0.384109 +vt 0.782715 0.412542 +vt 0.665032 0.070513 +vt 0.650297 0.028601 +vt 0.495995 0.205917 +vt 0.555026 0.176447 +vt 0.554959 0.205916 +vt 0.247083 0.852695 +vt 0.291274 0.808393 +vt 0.291281 0.852695 +vt 0.294957 0.838063 +vt 0.339180 0.793760 +vt 0.339180 0.838062 +vt 0.214276 0.807429 +vt 0.241946 0.841506 +vt 0.213217 0.841419 +vt 0.029806 0.850210 +vt 0.058550 0.894513 +vt 0.029806 0.894512 +vt 0.243004 0.869919 +vt 0.214276 0.869832 +vt 0.213217 0.870194 +vt 0.241950 0.911973 +vt 0.213217 0.912248 +vt 0.175201 0.836580 +vt 0.167835 0.880880 +vt 0.167835 0.836579 +vt 0.593056 0.176447 +vt 0.585686 0.132145 +vt 0.593056 0.132145 +vt 0.063939 0.814913 +vt 0.059213 0.859381 +vt 0.059213 0.815104 +vt 0.787591 0.079722 +vt 0.794587 0.035506 +vt 0.794587 0.079789 +vt 0.097873 0.815870 +vt 0.063939 0.859190 +vt 0.044223 0.805909 +vt 0.000000 0.850210 +vt 0.000000 0.805911 +vt 0.979735 0.842889 +vt 0.974079 0.798452 +vt 0.979735 0.798612 +vt 0.840285 0.832783 +vt 0.832914 0.788483 +vt 0.840285 0.788483 +vt 0.983837 0.408725 +vt 0.989493 0.453161 +vt 0.983837 0.453002 +vt 0.889380 0.799275 +vt 0.896750 0.843574 +vt 0.889380 0.843575 +vt 0.979111 0.408916 +vt 0.979111 0.453193 +vt 0.096104 0.941649 +vt 0.089108 0.897299 +vt 0.096104 0.897366 +vt 0.984461 0.842698 +vt 0.984462 0.798421 +vt 0.739714 0.901824 +vt 0.746710 0.946175 +vt 0.739714 0.946108 +vt 0.872718 0.146229 +vt 0.880089 0.168381 +vt 0.865348 0.168380 +vt 0.802360 0.120640 +vt 0.809592 0.137493 +vt 0.794862 0.137793 +vt 0.883001 0.651622 +vt 0.871690 0.798893 +vt 0.871690 0.651303 +vt 0.885695 0.415023 +vt 0.870954 0.562690 +vt 0.870954 0.415024 +vt 0.862237 0.799275 +vt 0.862237 0.651685 +vt 0.901451 0.035608 +vt 0.887459 0.183087 +vt 0.887459 0.035474 +vt 0.850168 0.388110 +vt 0.861479 0.240839 +vt 0.861479 0.388429 +vt 0.751860 0.701001 +vt 0.737119 0.848667 +vt 0.737119 0.701002 +vt 0.870932 0.240457 +vt 0.870932 0.388047 +vt 0.899687 0.415157 +vt 0.885695 0.562636 +vt 0.885695 0.415023 +vt 0.484970 0.414874 +vt 0.573416 0.208131 +vt 0.573416 0.414873 +vt 0.440746 0.414756 +vt 0.352300 0.208145 +vt 0.440746 0.208131 +vt 0.841473 0.798956 +vt 0.852784 0.651685 +vt 0.852784 0.799275 +vt 0.044203 0.757323 +vt 0.058944 0.609657 +vt 0.058944 0.757323 +vt 0.862237 0.651303 +vt 0.862237 0.798893 +vt 0.899666 0.240591 +vt 0.885673 0.388070 +vt 0.885673 0.240457 +vt 0.865348 0.035793 +vt 0.854037 0.183064 +vt 0.854037 0.035474 +vt 0.885673 0.240457 +vt 0.870932 0.388123 +vt 0.870932 0.240457 +vt 0.844584 0.183446 +vt 0.844584 0.035856 +vt 0.883001 0.798915 +vt 0.896994 0.651437 +vt 0.896994 0.799049 +vt 0.802890 0.052627 +vt 0.817089 0.120339 +vt 0.872718 0.057625 +vt 0.887459 0.146230 +vt 0.412886 0.843806 +vt 0.457084 0.784744 +vt 0.457084 0.843813 +vt 0.097880 0.779921 +vt 0.142103 0.838991 +vt 0.097880 0.838990 +vt 0.556220 0.132197 +vt 0.584492 0.177472 +vt 0.555026 0.177524 +vt 0.841473 0.799275 +vt 0.870954 0.858345 +vt 0.841473 0.858344 +vt 0.585686 0.205880 +vt 0.556220 0.205932 +vt 0.814261 0.910351 +vt 0.784792 0.868579 +vt 0.814261 0.868297 +vt 0.560292 0.776571 +vt 0.530811 0.865174 +vt 0.530811 0.776570 +vt 0.350190 0.679023 +vt 0.364911 0.651185 +vt 0.409073 0.662447 +vt 0.656865 0.414165 +vt 0.671596 0.399398 +vt 0.671598 0.414165 +vt 0.457174 0.784669 +vt 0.427691 0.696065 +vt 0.457173 0.696066 +vt 0.607994 0.817625 +vt 0.566017 0.802462 +vt 0.580009 0.758312 +vt 0.360266 0.756950 +vt 0.394352 0.690285 +vt 0.389707 0.758140 +vt 0.486083 0.784739 +vt 0.471850 0.696065 +vt 0.486083 0.696135 +vt 0.471850 0.784737 +vt 0.515549 0.696140 +vt 0.530781 0.784678 +vt 0.515549 0.784743 +vt 0.427691 0.784669 +vt 0.412886 0.696132 +vt 0.642122 0.414165 +vt 0.656863 0.399398 +vt 0.656863 0.414165 +vt 0.720798 0.414165 +vt 0.713428 0.399398 +vt 0.720798 0.399398 +vt 0.757218 0.862685 +vt 0.749851 0.848738 +vt 0.757218 0.848667 +vt 0.832914 0.844113 +vt 0.840633 0.853606 +vt 0.833267 0.853584 +vt 0.833267 0.832783 +vt 0.840281 0.844135 +vt 0.036818 0.995056 +vt 0.029480 0.972871 +vt 0.036818 0.965522 +vt 0.870464 0.968913 +vt 0.840983 0.939377 +vt 0.870464 0.939378 +vt 0.044189 0.995056 +vt 0.051555 0.995057 +vt 0.044189 0.965522 +vt 0.051555 0.965523 +vt 0.965611 0.286041 +vt 0.970338 0.315368 +vt 0.965611 0.315559 +vt 0.979915 0.226617 +vt 0.986911 0.256207 +vt 0.979915 0.256139 +vt 0.943918 0.293133 +vt 0.955229 0.308211 +vt 0.943918 0.307892 +vt 0.058672 0.987709 +vt 0.955229 0.293452 +vt 0.970599 0.234133 +vt 0.731346 0.059069 +vt 0.709235 0.081220 +vt 0.709235 0.059070 +vt 0.591333 0.073804 +vt 0.595018 0.095955 +vt 0.591333 0.095955 +vt 0.595016 0.118106 +vt 0.591333 0.095955 +vt 0.595016 0.095955 +vt 0.593056 0.132240 +vt 0.595420 0.154283 +vt 0.593056 0.154379 +vt 0.409073 0.651185 +vt 0.412571 0.673360 +vt 0.409073 0.673327 +vt 0.677465 0.688132 +vt 0.672850 0.533178 +vt 0.677465 0.534214 +vt 0.943902 0.194945 +vt 0.936956 0.047002 +vt 0.943902 0.047845 +vt 0.682889 0.535830 +vt 0.936956 0.351416 +vt 0.930000 0.197387 +vt 0.936956 0.194945 +vt 0.902495 0.652723 +vt 0.907008 0.803039 +vt 0.902495 0.804460 +vt 0.943918 0.344853 +vt 0.936956 0.195637 +vt 0.943918 0.194945 +vt 0.896994 0.654048 +vt 0.896994 0.805785 +vt 0.938537 0.447879 +vt 0.931580 0.601871 +vt 0.931580 0.445442 +vt 0.817620 0.269935 +vt 0.802890 0.270236 +vt 0.462892 0.208166 +vt 0.484970 0.208133 +vt 0.352300 0.414770 +vt 0.330222 0.208398 +vt 0.880089 0.035475 +vt 0.887459 0.057626 +vt 0.058938 0.609516 +vt 0.044203 0.413405 +vt 0.058938 0.413264 +vt 0.595561 0.414905 +vt 0.462892 0.415003 +vt 0.810388 0.035474 +vt 0.817620 0.052327 +vt 0.805264 0.964065 +vt 0.801275 0.968061 +vt 0.795634 0.954418 +vt 0.366586 0.968588 +vt 0.356956 0.964592 +vt 0.360944 0.954945 +vt 0.444353 0.961620 +vt 0.451956 0.953436 +vt 0.470311 0.960845 +vt 0.462708 0.980282 +vt 0.444353 0.972873 +vt 0.755565 0.701001 +vt 0.159506 0.985131 +vt 0.755565 0.805410 +vt 0.821321 0.257169 +vt 0.425678 0.989738 +vt 0.418184 0.987521 +vt 0.412886 0.967335 +vt 0.430976 0.983593 +vt 0.409093 0.715128 +vt 0.406298 0.799886 +vt 0.406294 0.841641 +vt 0.893095 0.859230 +vt 0.171573 0.962745 +vt 0.175547 0.969704 +vt 0.175547 0.977884 +vt 0.893092 0.906201 +vt 0.243019 0.859638 +vt 0.562369 0.854853 +vt 0.723971 0.988729 +vt 0.715907 0.988970 +vt 0.710205 0.983172 +vt 0.715907 0.968595 +vt 0.723971 0.968354 +vt 0.889395 0.874884 +vt 0.328119 0.896666 +vt 0.412886 0.843813 +vt 0.957066 0.965538 +vt 0.964669 0.957354 +vt 0.983025 0.964763 +vt 0.975422 0.984200 +vt 0.957066 0.976790 +vt 0.412778 0.736013 +vt 0.148908 0.959731 +vt 0.563997 0.818315 +vt 0.672847 0.640158 +vt 0.975103 0.341890 +vt 0.969804 0.332611 +vt 0.969804 0.321704 +vt 0.409093 0.694244 +vt 0.817640 0.236297 +vt 0.560307 0.839199 +vt 0.893080 0.843575 +vt 0.136841 0.982117 +vt 0.132868 0.975157 +vt 0.132867 0.966977 +vt 0.146436 0.979171 +vt 0.243016 0.906618 +vt 0.243019 0.843975 +vt 0.753937 0.841948 +vt 0.854749 0.989288 +vt 0.846685 0.989529 +vt 0.840983 0.983731 +vt 0.846685 0.969154 +vt 0.860452 0.974710 +vt 0.893095 0.859229 +vt 0.565193 0.886259 +vt 0.145803 0.821667 +vt 0.889441 0.410579 +vt 0.814488 0.788486 +vt 0.841473 0.415023 +vt 0.745310 0.081260 +vt 0.259384 0.746814 +vt 0.680924 0.856438 +vt 0.651456 0.765603 +vt 0.750186 0.433497 +vt 0.508686 0.784955 +vt 0.530787 0.868851 +vt 0.508686 0.869063 +vt 0.259793 0.732650 +vt 0.406278 0.758140 +vt 0.918092 0.390799 +vt 0.784792 0.974866 +vt 0.661790 0.533163 +vt 0.654423 0.415023 +vt 0.661790 0.415025 +vt 0.757553 0.415040 +vt 0.750186 0.415038 +vt 0.213217 0.957590 +vt 0.220820 0.949406 +vt 0.239176 0.956815 +vt 0.231573 0.976252 +vt 0.213217 0.968842 +vt 0.755565 0.721885 +vt 0.563997 0.797442 +vt 0.672847 0.661041 +vt 0.876252 0.988327 +vt 0.870954 0.979047 +vt 0.870954 0.968141 +vt 0.409093 0.736013 +vt 0.142123 0.779921 +vt 0.842226 0.234792 +vt 0.328123 0.881011 +vt 0.900968 0.984680 +vt 0.896994 0.977720 +vt 0.896994 0.969540 +vt 0.910562 0.981733 +vt 0.127373 0.912323 +vt 0.561511 0.870596 +vt 0.834991 0.869261 +vt 0.754209 0.969366 +vt 0.762273 0.969126 +vt 0.767975 0.974923 +vt 0.762273 0.989500 +vt 0.754209 0.989741 +vt 0.127377 0.896660 +vt 0.707101 0.900457 +vt 0.565196 0.870596 +vt 0.964769 0.354179 +vt 0.975522 0.353858 +vt 0.983125 0.361588 +vt 0.975522 0.381024 +vt 0.964769 0.381345 +vt 0.755565 0.742769 +vt 0.943421 0.961561 +vt 0.409983 0.799884 +vt 0.755561 0.805410 +vt 0.981739 0.223492 +vt 0.974245 0.221275 +vt 0.968947 0.201089 +vt 0.987037 0.217347 +vt 0.751880 0.784537 +vt 0.142123 0.800794 +vt 0.246705 0.828312 +vt 0.246705 0.875301 +vt 0.931354 0.983947 +vt 0.927380 0.976988 +vt 0.927380 0.968808 +vt 0.940948 0.981001 +vt 0.777984 0.918250 +vt 0.598378 0.875303 +vt 0.783026 0.081141 +vt 0.579783 0.989232 +vt 0.571719 0.989473 +vt 0.566017 0.983675 +vt 0.571719 0.969098 +vt 0.585486 0.974655 +vt 0.893095 0.890539 +vt 0.565193 0.901922 +vt 0.246705 0.859638 +vt 0.962328 0.190531 +vt 0.672850 0.621731 +vt 0.841473 0.533163 +vt 0.745310 0.199400 +vt 0.065983 0.753334 +vt 0.651456 0.856438 +vt 0.621987 0.765603 +vt 0.573383 0.739838 +vt 0.493951 0.868851 +vt 0.471850 0.784955 +vt 0.493951 0.784743 +vt 0.066392 0.739170 +vt 0.870954 0.887831 +vt 0.692059 0.967034 +vt 0.325765 0.974211 +vt 0.661780 0.640173 +vt 0.669146 0.640174 +vt 0.661780 0.758311 +vt 0.573383 0.640159 +vt 0.573383 0.758297 +vt 0.088582 0.000000 +vt 0.088582 0.000002 +vt 0.642122 0.081647 +vt 0.457084 0.873341 +vt 0.627394 0.414518 +vt 0.029469 0.805909 +vt 0.029469 0.413405 +vt 0.088446 0.146589 +vt 0.596618 0.318974 +vt 0.000000 0.666011 +vt 0.619826 0.880280 +vt 0.335766 0.838063 +vt 0.059021 0.850210 +vt 0.778137 0.000382 +vt 0.442369 0.696065 +vt 0.412887 0.651763 +vt 0.412886 0.622228 +vt 0.294957 0.651185 +vt 0.177029 0.655457 +vt 0.088667 0.657951 +vt 0.221117 0.415024 +vt 0.165498 0.557992 +vt 0.972029 0.176001 +vt 0.177029 0.993851 +vt 0.206511 0.971700 +vt 0.987491 0.888042 +vt 0.752194 0.081220 +vt 0.980153 0.788814 +vt 0.488598 0.973492 +vt 0.974079 0.805986 +vt 0.642122 0.341514 +vt 0.666055 0.317538 +vt 0.699900 0.317538 +vt 0.723832 0.375422 +vt 0.666054 0.399398 +vt 0.444761 0.492408 +vt 0.186578 0.089499 +vt 0.186578 0.296814 +vt 0.441118 0.000000 +vt 0.462927 0.417358 +vt 0.501064 0.087112 +vt 0.242455 0.208123 +vt 0.563795 0.042558 +vt 0.567759 0.053314 +vt 0.565823 0.064615 +vt 0.694987 0.967034 +vt 0.227959 0.912248 +vt 0.943954 0.729848 +vt 0.044203 0.786858 +vt 0.854357 0.000000 +vt 0.917245 0.109259 +vt 0.059404 0.964659 +vt 0.066739 0.934219 +vt 0.724972 0.938819 +vt 0.058958 0.950347 +vt 0.190411 0.868046 +vt 0.936783 0.722480 +vt 0.213066 0.890047 +vt 0.896994 0.929047 +vt 0.007957 0.935582 +vt 0.697413 0.900379 +vt 0.937001 0.014780 +vt 0.673633 0.878356 +vt 0.412886 0.929550 +vt 0.998081 0.139403 +vt 0.958424 0.796388 +vt 0.372791 0.933373 +vt 0.855723 0.902485 +vt 0.651260 0.965669 +vt 0.350542 0.911290 +vt 0.799454 0.947578 +vt 0.507334 0.925361 +vt 0.967490 0.168381 +vt 0.909068 0.183446 +vt 0.573778 0.902648 +vt 0.409860 0.947240 +vt 0.598363 0.865028 +vt 0.938537 0.586626 +vt 0.763248 0.902588 +vt 0.946100 0.885905 +vt 0.995091 0.962078 +vt 0.967716 0.452785 +vt 0.930178 0.599855 +vt 0.936570 0.803754 +vt 0.749851 0.863426 +vt 0.101604 0.881005 +vt 0.444353 0.916214 +vt 0.858414 0.225510 +vt 0.651445 0.944795 +vt 0.566091 0.859640 +vt 0.994994 0.552519 +vt 0.302261 0.893834 +vt 0.191825 0.941813 +vt 0.993761 0.000000 +vt 0.891939 0.562975 +vt 0.981006 0.673390 +vt 0.899595 0.570298 +vt 0.545497 0.946456 +vt 0.119999 0.907565 +vt 0.442586 0.866261 +vt 0.474915 0.913006 +vt 0.983025 0.959080 +vt 0.936551 0.766819 +vt 0.995483 0.463557 +vt 0.994942 0.382112 +vt 0.957166 0.430398 +vt 0.982663 0.534254 +vt 0.938350 0.842646 +vt 0.706082 0.976771 +vt 0.871892 0.640872 +vt 0.901255 0.604307 +vt 0.621987 0.964727 +vt 0.595871 0.959391 +vt 0.906946 0.000000 +vt 0.908122 0.254730 +vt 0.914180 0.488922 +vt 0.994144 0.692928 +vt 0.500029 0.869063 +vt 0.988145 0.133940 +vt 0.529552 0.877222 +vt 0.423439 0.943782 +vt 0.917194 0.072396 +vt 0.276568 0.934532 +vt 0.870954 0.899711 +vt 0.840983 0.902484 +vt 0.931743 0.183089 +vt 0.444326 0.962787 +vt 0.987491 0.889258 +vt 0.979248 0.180280 +vt 0.974286 0.869913 +vt 0.182523 0.867980 +vt 0.917219 0.146159 +vt 0.014291 0.965855 +vt 0.943918 0.226765 +vt 0.366754 0.198906 +vt 0.970599 0.233562 +vt 0.817696 0.020023 +vt 0.915466 0.353858 +vt 0.927380 0.945704 +vt 0.595250 1.000000 +vt 0.915460 0.451988 +vt 0.681135 0.863452 +vt 0.500029 0.942176 +vt 0.610397 0.992013 +vt 0.161925 0.903718 +vt 0.929980 0.562745 +vt 0.380361 0.948453 +vt 0.335545 0.942767 +vt 0.407360 0.950358 +vt 0.914175 0.451990 +vt 0.610397 0.966930 +vt 0.879290 0.225467 +vt 0.848020 0.225477 +vt 0.915509 0.390799 +vt 0.986911 0.254902 +vt 1.000000 0.438143 +vt 0.997283 0.047002 +vt 0.980677 0.315559 +vt 0.798931 0.986053 +vt 0.910500 0.849231 +vt 0.914167 0.279928 +vt 0.028564 0.965753 +vt 0.970527 0.285809 +vt 0.870063 0.968913 +vt 0.943918 0.278585 +vt 0.016477 0.935582 +vt 0.073954 0.994193 +vt 0.938537 0.475212 +vt 0.476257 0.196963 +vt 0.690112 0.937375 +vt 0.621987 0.994749 +vt 0.167835 0.880881 +vt 0.136572 0.880881 +vt 0.075682 0.934219 +vt 0.938537 0.564437 +vt 0.891171 0.929551 +vt 0.944378 0.534262 +vt 0.441099 0.854836 +vt 0.651792 0.935434 +vt 0.943902 0.110949 +vt 0.817537 0.000000 +vt 0.028005 0.861342 +vt 0.263548 0.934532 +vt 0.943902 0.050258 +vt 0.970791 0.052535 +vt 0.557918 0.973893 +vt 0.936783 0.729816 +vt 0.350162 0.796730 +vt 0.986375 0.109260 +vt 0.939970 0.445225 +vt 0.993944 0.748418 +vt 0.318056 0.838063 +vt 0.758881 0.902588 +vt 0.784493 0.902483 +vt 0.985003 0.284177 +vt 0.996357 0.632541 +vt 0.910411 0.030427 +vt 0.899307 0.405766 +vt 0.970791 0.047002 +vt 0.906946 0.000000 +vt 0.311405 0.957298 +vt 0.247076 0.994488 +vt 0.953277 0.504742 +vt 0.114323 0.957314 +vt 0.984461 0.798619 +vt 0.958140 0.929215 +vt 0.729674 0.991878 +vt 0.046392 0.934208 +vt 0.585686 0.207393 +vt 0.657650 0.898457 +vt 0.767975 0.992514 +vt 0.656307 0.870589 +vt 0.149307 0.958157 +vt 0.629868 0.856720 +vt 0.349759 0.958349 +vt 0.719437 0.901824 +vt 0.205740 0.971700 +vt 0.672719 0.897533 +vt 0.177029 0.963849 +vt 0.970652 0.128936 +vt 0.860611 0.388429 +vt 0.828122 0.213909 +vt 0.741750 0.081220 +vt 0.387852 0.846697 +vt 0.419353 0.157739 +vt 0.253676 0.415023 +vt 0.537491 0.577926 +vt 0.330840 0.099609 +vt 0.398732 0.167165 +vt 0.349416 0.148039 +vt 0.591333 0.073804 +vt 0.709237 0.059069 +vt 0.771091 0.319322 +vt 0.650297 0.070654 +vt 0.247076 0.808393 +vt 0.294957 0.793761 +vt 0.243004 0.807515 +vt 0.058550 0.850212 +vt 0.241950 0.869919 +vt 0.175201 0.880881 +vt 0.585686 0.176447 +vt 0.787591 0.035439 +vt 0.097873 0.860147 +vt 0.044223 0.850209 +vt 0.974079 0.842729 +vt 0.832914 0.832783 +vt 0.989493 0.408884 +vt 0.896750 0.799275 +vt 0.089108 0.941582 +vt 0.746710 0.901891 +vt 0.883001 0.799212 +vt 0.885695 0.562689 +vt 0.901451 0.183221 +vt 0.850168 0.240520 +vt 0.751860 0.848667 +vt 0.899687 0.562770 +vt 0.841473 0.651365 +vt 0.044203 0.609658 +vt 0.899666 0.388204 +vt 0.865348 0.183384 +vt 0.885673 0.388123 +vt 0.883001 0.651303 +vt 0.412886 0.784737 +vt 0.142103 0.779922 +vt 0.585686 0.132145 +vt 0.870954 0.799276 +vt 0.784792 0.910633 +vt 0.560292 0.865175 +vt 0.409073 0.681402 +vt 0.364911 0.689095 +vt 0.350190 0.660068 +vt 0.394352 0.652374 +vt 0.656863 0.399398 +vt 0.607994 0.758580 +vt 0.621987 0.773476 +vt 0.621987 0.802998 +vt 0.580009 0.817357 +vt 0.566017 0.772940 +vt 0.471850 0.784669 +vt 0.471850 0.696133 +vt 0.530781 0.696074 +vt 0.412886 0.784736 +vt 0.642122 0.399398 +vt 0.713428 0.414165 +vt 0.749851 0.862756 +vt 0.840633 0.832805 +vt 0.029480 0.987639 +vt 0.840983 0.968912 +vt 0.044189 0.965522 +vt 0.044189 0.995056 +vt 0.970338 0.285850 +vt 0.986911 0.226684 +vt 0.058672 0.972942 +vt 0.970599 0.248894 +vt 0.731346 0.081219 +vt 0.595018 0.073804 +vt 0.591333 0.118106 +vt 0.595420 0.132145 +vt 0.412571 0.651218 +vt 0.672850 0.687095 +vt 0.936956 0.194102 +vt 0.682889 0.689748 +vt 0.930000 0.353858 +vt 0.907008 0.651303 +vt 0.936956 0.345546 +vt 0.938537 0.604307 +vt 0.462892 0.414907 +vt 0.330222 0.415023 +vt 0.865348 0.035474 +vt 0.044203 0.609657 +vt 0.595561 0.208163 +vt 0.462892 0.208378 +vt 0.795658 0.035774 +vt 0.795634 0.968061 +vt 0.791645 0.964065 +vt 0.791645 0.958414 +vt 0.801275 0.954418 +vt 0.805264 0.958414 +vt 0.366586 0.954945 +vt 0.370574 0.958941 +vt 0.370574 0.964592 +vt 0.360944 0.968588 +vt 0.356956 0.958941 +vt 0.840460 0.788483 +vt 0.826298 0.781930 +vt 0.840969 0.783363 +vt 0.978146 0.445442 +vt 0.972911 0.460217 +vt 0.972911 0.445450 +vt 0.173362 0.668339 +vt 0.158158 0.664634 +vt 0.172823 0.663137 +vt 0.338345 0.792162 +vt 0.344324 0.782451 +vt 0.343550 0.793760 +vt 0.349529 0.781273 +vt 0.348755 0.792582 +vt 0.826801 0.776663 +vt 0.841473 0.778096 +vt 0.967723 0.460209 +vt 0.967723 0.445442 +vt 0.157640 0.659449 +vt 0.172305 0.657951 +vt 0.349996 0.772078 +vt 0.821320 0.779273 +vt 0.825343 0.775885 +vt 0.149163 0.664025 +vt 0.817292 0.782513 +vt 0.158697 0.669837 +vt 0.153192 0.667315 +vt 0.339587 0.771658 +vt 0.344872 0.771678 +vt 0.819678 0.773869 +vt 0.156769 0.672208 +vt 0.151573 0.672729 +vt 0.345098 0.761664 +vt 0.350190 0.763531 +vt 0.824862 0.774302 +vt 0.146399 0.673267 +vt 0.967716 0.461741 +vt 0.747134 0.533279 +vt 0.752390 0.535160 +vt 0.747115 0.534531 +vt 0.978146 0.460209 +vt 0.978139 0.461741 +vt 0.757553 0.533178 +vt 0.757534 0.534430 +vt 0.168015 0.834331 +vt 0.339780 0.763110 +vt 0.345098 0.657410 +vt 0.752409 0.689358 +vt 0.350190 0.659277 +vt 0.747134 0.688729 +vt 0.840613 0.612722 +vt 0.162841 0.834869 +vt 0.814488 0.773289 +vt 0.835429 0.612290 +vt 0.757553 0.688628 +vt 0.750252 0.694335 +vt 0.342943 0.653972 +vt 0.346509 0.653408 +vt 0.841473 0.603731 +vt 0.746502 0.690187 +vt 0.830239 0.611709 +vt 0.836436 0.601755 +vt 0.339149 0.657849 +vt 0.166620 0.956640 +vt 0.171330 0.947403 +vt 0.171898 0.957875 +vt 0.337738 0.652374 +vt 0.744978 0.700715 +vt 0.745043 0.696439 +vt 0.164284 0.953107 +vt 0.166135 0.947701 +vt 0.177029 0.956088 +vt 0.176544 0.947150 +vt 0.744976 0.690803 +vt 0.173211 0.833810 +vt 0.173362 0.835329 +vt 0.744818 0.687109 +vt 0.162993 0.836388 +vt 0.337351 0.662768 +vt 0.337625 0.657381 +vt 0.308183 0.656192 +vt 0.308296 0.651185 +vt 0.715574 0.696725 +vt 0.715508 0.691089 +vt 0.715349 0.687395 +vt 0.164000 0.947870 +vt 0.164578 0.918209 +vt 0.169773 0.917911 +vt 0.174987 0.917658 +vt 0.875804 0.170534 +vt 0.881058 0.172658 +vt 0.875837 0.174185 +vt 0.171654 0.912583 +vt 0.175538 0.916097 +vt 0.710205 0.688125 +vt 0.167788 0.909114 +vt 0.297660 0.654077 +vt 0.307909 0.661578 +vt 0.299105 0.658660 +vt 0.886260 0.174204 +vt 0.881058 0.183080 +vt 0.300162 0.666935 +vt 0.294957 0.665337 +vt 0.875837 0.183081 +vt 0.176744 0.910148 +vt 0.177029 0.915384 +vt 0.306078 0.664612 +vt 0.302591 0.663024 +vt 0.176478 0.904957 +vt 0.783388 0.865537 +vt 0.769284 0.858858 +vt 0.783942 0.860422 +vt 0.947432 0.045847 +vt 0.952666 0.031071 +vt 0.952666 0.045839 +vt 0.737119 0.711378 +vt 0.721879 0.707823 +vt 0.736529 0.706181 +vt 0.811383 0.410943 +vt 0.817362 0.401232 +vt 0.816588 0.412542 +vt 0.822566 0.400055 +vt 0.821792 0.411364 +vt 0.769835 0.853595 +vt 0.784493 0.855160 +vt 0.957854 0.031079 +vt 0.957855 0.045847 +vt 0.721310 0.702643 +vt 0.735960 0.701001 +vt 0.823033 0.390860 +vt 0.764331 0.856155 +vt 0.768384 0.852803 +vt 0.712878 0.707303 +vt 0.760273 0.859359 +vt 0.722469 0.713020 +vt 0.716940 0.710553 +vt 0.812157 0.399634 +vt 0.817909 0.390460 +vt 0.762737 0.850737 +vt 0.720564 0.715410 +vt 0.715374 0.715982 +vt 0.812624 0.390439 +vt 0.818136 0.380446 +vt 0.823227 0.382312 +vt 0.767917 0.851217 +vt 0.710205 0.716571 +vt 0.957861 0.029548 +vt 0.252614 0.805169 +vt 0.247083 0.804418 +vt 0.252374 0.803940 +vt 0.947431 0.031079 +vt 0.947438 0.029548 +vt 0.242442 0.807429 +vt 0.242201 0.806199 +vt 0.731762 0.862739 +vt 0.812818 0.381892 +vt 0.818136 0.285669 +vt 0.218099 0.667278 +vt 0.823227 0.287536 +vt 0.223390 0.666800 +vt 0.783553 0.704461 +vt 0.726594 0.863328 +vt 0.757553 0.850110 +vt 0.778373 0.703981 +vt 0.213217 0.669059 +vt 0.219181 0.661961 +vt 0.815980 0.282232 +vt 0.819547 0.281667 +vt 0.779474 0.693456 +vt 0.784493 0.695477 +vt 0.223707 0.665243 +vt 0.773188 0.703354 +vt 0.812186 0.286108 +vt 0.975988 0.115372 +vt 0.980419 0.105997 +vt 0.981301 0.116447 +vt 0.810662 0.285640 +vt 0.810775 0.280633 +vt 0.223022 0.654626 +vt 0.223842 0.658823 +vt 0.973548 0.111910 +vt 0.975235 0.106452 +vt 0.986375 0.114507 +vt 0.985623 0.105587 +vt 0.225072 0.664324 +vt 0.736952 0.862167 +vt 0.737119 0.863684 +vt 0.225991 0.667905 +vt 0.726760 0.864846 +vt 0.810388 0.291027 +vt 0.795941 0.285046 +vt 0.796055 0.280039 +vt 0.237408 0.651431 +vt 0.252614 0.652433 +vt 0.240376 0.664709 +vt 0.973107 0.106685 +vt 0.974015 0.091736 +vt 0.979199 0.091281 +vt 0.984403 0.090871 +vt 0.239458 0.661128 +vt 0.865348 0.170534 +vt 0.870602 0.172658 +vt 0.865381 0.174185 +vt 0.980919 0.085899 +vt 0.984906 0.089295 +vt 0.245258 0.662928 +vt 0.976951 0.082548 +vt 0.785419 0.282930 +vt 0.795667 0.290432 +vt 0.786863 0.287514 +vt 0.875804 0.174204 +vt 0.870602 0.183080 +vt 0.790349 0.291878 +vt 0.782715 0.294191 +vt 0.865381 0.183081 +vt 0.986375 0.088537 +vt 0.793125 0.294612 +vt 0.787920 0.295789 +vt 0.985513 0.078131 +vt 0.985934 0.083312 +vt 0.826279 0.421580 +vt 0.840462 0.415023 +vt 0.840951 0.420145 +vt 0.942197 0.031083 +vt 0.947431 0.045842 +vt 0.942197 0.045850 +vt 0.829399 0.207229 +vt 0.844584 0.203521 +vt 0.844065 0.208726 +vt 0.344482 0.837758 +vt 0.339180 0.825185 +vt 0.344482 0.826422 +vt 0.349594 0.836226 +vt 0.349594 0.824891 +vt 0.826801 0.426845 +vt 0.841473 0.425410 +vt 0.937008 0.031075 +vt 0.937008 0.045842 +vt 0.828862 0.212413 +vt 0.843527 0.213909 +vt 0.783034 0.263412 +vt 0.790275 0.270235 +vt 0.784746 0.269487 +vt 0.821301 0.424238 +vt 0.820385 0.207837 +vt 0.817293 0.420996 +vt 0.825791 0.416458 +vt 0.824433 0.204549 +vt 0.829919 0.202025 +vt 0.788270 0.263118 +vt 0.794862 0.266989 +vt 0.819658 0.429642 +vt 0.827990 0.199654 +vt 0.828464 0.201239 +vt 0.785554 0.252179 +vt 0.793151 0.260914 +vt 0.824862 0.429206 +vt 0.825343 0.427624 +vt 0.822814 0.199135 +vt 0.937001 0.029548 +vt 0.830116 0.199848 +vt 0.947431 0.031075 +vt 0.947425 0.029548 +vt 0.827052 0.429170 +vt 0.839251 0.037532 +vt 0.750148 0.102116 +vt 0.790833 0.251576 +vt 0.101901 0.758239 +vt 0.136907 0.657951 +vt 0.140928 0.661594 +vt 0.745310 0.104011 +vt 0.780716 0.254074 +vt 0.107372 0.758897 +vt 0.146399 0.662251 +vt 0.840581 0.590789 +vt 0.834057 0.036992 +vt 0.817620 0.198596 +vt 0.835377 0.591224 +vt 0.814488 0.430221 +vt 0.102612 0.762236 +vt 0.097880 0.754596 +vt 0.751105 0.096775 +vt 0.841473 0.599778 +vt 0.107580 0.760067 +vt 0.836422 0.601755 +vt 0.830207 0.591804 +vt 0.755706 0.099949 +vt 0.755426 0.101513 +vt 0.675544 0.700236 +vt 0.670318 0.691257 +vt 0.675536 0.689748 +vt 0.755692 0.093528 +vt 0.682885 0.694918 +vt 0.680748 0.700216 +vt 0.680742 0.691264 +vt 0.754774 0.089352 +vt 0.746944 0.094894 +vt 0.106839 0.765673 +vt 0.844427 0.038051 +vt 0.844584 0.036532 +vt 0.111088 0.756183 +vt 0.108818 0.761074 +vt 0.834214 0.035474 +vt 0.757050 0.098998 +vt 0.758052 0.102557 +vt 0.785664 0.091933 +vt 0.682868 0.729695 +vt 0.682889 0.700162 +vt 0.135666 0.773237 +vt 0.783388 0.082286 +vt 0.675523 0.729769 +vt 0.670325 0.700209 +vt 0.794862 0.085258 +vt 0.784306 0.086463 +vt 0.680727 0.729749 +vt 0.677678 0.734991 +vt 0.141957 0.771990 +vt 0.137936 0.768347 +vt 0.673983 0.738657 +vt 0.670304 0.729742 +vt 0.794674 0.090904 +vt 0.786666 0.095491 +vt 0.655499 0.070654 +vt 0.650297 0.081116 +vt 0.650297 0.072186 +vt 0.146399 0.779921 +vt 0.146031 0.772248 +vt 0.660721 0.081097 +vt 0.660721 0.072167 +vt 0.681359 0.731279 +vt 0.682889 0.737157 +vt 0.142172 0.776484 +vt 0.136844 0.774304 +vt 0.682877 0.742355 +vt 0.834940 0.247140 +vt 0.849064 0.240457 +vt 0.849598 0.245574 +vt 0.945165 0.429627 +vt 0.950400 0.444387 +vt 0.945165 0.444394 +vt 0.799041 0.861478 +vt 0.814261 0.857920 +vt 0.813691 0.863119 +vt 0.876448 0.240277 +vt 0.871146 0.227703 +vt 0.876448 0.228941 +vt 0.881560 0.238745 +vt 0.881560 0.227410 +vt 0.835510 0.252401 +vt 0.850168 0.250834 +vt 0.939977 0.429619 +vt 0.939977 0.444386 +vt 0.798453 0.866656 +vt 0.813103 0.868297 +vt 0.201657 0.816152 +vt 0.208423 0.823449 +vt 0.202956 0.822328 +vt 0.829987 0.249843 +vt 0.790021 0.861997 +vt 0.825950 0.246638 +vt 0.834406 0.242023 +vt 0.794101 0.858749 +vt 0.799611 0.856279 +vt 0.206901 0.816212 +vt 0.213217 0.820519 +vt 0.828392 0.255261 +vt 0.797706 0.853889 +vt 0.798165 0.855479 +vt 0.204927 0.805114 +vt 0.211919 0.814342 +vt 0.833592 0.254779 +vt 0.834059 0.253192 +vt 0.792535 0.853320 +vt 0.939970 0.428092 +vt 0.799830 0.854104 +vt 0.950400 0.429619 +vt 0.950393 0.428092 +vt 0.835781 0.254723 +vt 0.808918 0.706562 +vt 0.181983 0.666831 +vt 0.210233 0.804869 +vt 0.354507 0.852005 +vt 0.378027 0.758140 +vt 0.382344 0.761424 +vt 0.177029 0.668396 +vt 0.199972 0.806679 +vt 0.360015 0.852190 +vt 0.387852 0.761610 +vt 0.849196 0.401539 +vt 0.803730 0.705971 +vt 0.787347 0.852729 +vt 0.843996 0.402021 +vt 0.823227 0.255887 +vt 0.355558 0.855926 +vt 0.350190 0.848720 +vt 0.183297 0.661568 +vt 0.845134 0.412542 +vt 0.360322 0.853339 +vt 0.839803 0.411626 +vt 0.838831 0.402646 +vt 0.187675 0.665045 +vt 0.187290 0.666586 +vt 0.978059 0.614795 +vt 0.972837 0.605814 +vt 0.978056 0.604307 +vt 0.188092 0.658638 +vt 0.985402 0.609480 +vt 0.983263 0.614778 +vt 0.983260 0.605826 +vt 0.187457 0.654408 +vt 0.179272 0.659410 +vt 0.361642 0.854236 +vt 0.814089 0.707132 +vt 0.814261 0.705615 +vt 0.363485 0.849168 +vt 0.803902 0.704455 +vt 0.189079 0.664187 +vt 0.189840 0.667805 +vt 0.203591 0.661627 +vt 0.985403 0.614724 +vt 0.983245 0.629544 +vt 0.377380 0.854076 +vt 0.201969 0.651849 +vt 0.978041 0.629561 +vt 0.375536 0.859143 +vt 0.360063 0.858988 +vt 0.972839 0.614766 +vt 0.213217 0.655588 +vt 0.202604 0.656078 +vt 0.983876 0.631074 +vt 0.381698 0.857360 +vt 0.976497 0.638449 +vt 0.972822 0.629532 +vt 0.212650 0.661209 +vt 0.204352 0.665245 +vt 0.665942 0.081116 +vt 0.671144 0.070655 +vt 0.671144 0.079585 +vt 0.385779 0.857269 +vt 0.382296 0.861820 +vt 0.660721 0.070674 +vt 0.660721 0.079603 +vt 0.985403 0.636953 +vt 0.980194 0.634785 +vt 0.376801 0.860105 +vt 0.985389 0.642151 +vt 0.977174 0.396112 +vt 0.971940 0.381353 +vt 0.977174 0.381345 +vt 0.493800 0.983954 +vt 0.499031 0.998708 +vt 0.493810 0.998721 +vt 0.557461 0.583426 +vt 0.562763 0.596000 +vt 0.557461 0.594762 +vt 0.552349 0.584958 +vt 0.552349 0.596294 +vt 0.918092 0.392971 +vt 0.923393 0.407723 +vt 0.918111 0.407739 +vt 0.982363 0.396120 +vt 0.982363 0.381353 +vt 0.488598 0.983947 +vt 0.488608 0.998715 +vt 0.923374 0.392955 +vt 0.928529 0.407727 +vt 0.555305 0.579480 +vt 0.978677 0.405033 +vt 0.975015 0.401333 +vt 0.488608 0.975018 +vt 0.493812 0.973492 +vt 0.971940 0.396120 +vt 0.971307 0.397649 +vt 0.499021 0.983940 +vt 0.499031 0.975011 +vt 0.562763 0.584664 +vt 0.559081 0.577926 +vt 0.969804 0.403496 +vt 0.969781 0.398282 +vt 0.786203 0.680598 +vt 0.776920 0.683114 +vt 0.777303 0.678854 +vt 0.781664 0.693456 +vt 0.776567 0.688739 +vt 0.785467 0.690483 +vt 0.551718 0.583802 +vt 0.550098 0.577966 +vt 0.787347 0.685157 +vt 0.928529 0.391427 +vt 0.928510 0.392959 +vt 0.550421 0.588362 +vt 0.550193 0.583359 +vt 0.918111 0.391439 +vt 0.918162 0.390799 +vt 0.769951 0.678376 +vt 0.776450 0.692435 +vt 0.769215 0.688260 +vt 0.962355 0.396138 +vt 0.969725 0.396138 +vt 0.542734 0.578174 +vt 0.542829 0.583567 +vt 0.969781 0.408725 +vt 0.962434 0.403496 +vt 0.769568 0.682635 +vt 0.962411 0.398282 +vt 0.960891 0.398280 +vt 0.957166 0.396130 +vt 0.532510 0.581237 +vt 0.764522 0.680249 +vt 0.543058 0.588570 +vt 0.534102 0.586181 +vt 0.768473 0.677677 +vt 0.769098 0.691956 +vt 0.760600 0.684188 +vt 0.762736 0.675167 +vt 0.767950 0.676188 +vt 0.804084 0.416283 +vt 0.808728 0.425293 +vt 0.803532 0.425049 +vt 0.537946 0.590101 +vt 0.541225 0.591698 +vt 0.536018 0.593505 +vt 0.814488 0.416919 +vt 0.809375 0.415023 +vt 0.757553 0.675511 +vt 0.530811 0.591992 +vt 0.962411 0.408724 +vt 0.960891 0.408722 +vt 0.699802 0.814291 +vt 0.699703 0.812762 +vt 0.704915 0.812443 +vt 0.710205 0.813636 +vt 0.710106 0.812107 +vt 0.787347 0.690214 +vt 0.693474 0.546819 +vt 0.547668 0.763703 +vt 0.688283 0.547155 +vt 0.813936 0.425684 +vt 0.792544 0.690458 +vt 0.781479 0.423542 +vt 0.542462 0.762189 +vt 0.786693 0.424564 +vt 0.797751 0.690850 +vt 0.794380 0.695798 +vt 0.776296 0.423887 +vt 0.782246 0.415023 +vt 0.683071 0.547474 +vt 0.690111 0.541809 +vt 0.787347 0.417292 +vt 0.790483 0.699330 +vt 0.694009 0.545253 +vt 0.799138 0.703556 +vt 0.695493 0.544525 +vt 0.798289 0.692414 +vt 0.799451 0.698273 +vt 0.995450 0.288888 +vt 0.990191 0.297830 +vt 0.990220 0.287373 +vt 0.694840 0.534104 +vt 0.695177 0.539323 +vt 0.985027 0.288905 +vt 0.985003 0.297831 +vt 0.552875 0.761896 +vt 0.552942 0.763361 +vt 0.552970 0.764940 +vt 0.542529 0.763655 +vt 0.542556 0.765234 +vt 0.542556 0.776570 +vt 0.710205 0.543599 +vt 0.547668 0.775038 +vt 0.799774 0.693139 +vt 0.814165 0.699172 +vt 0.995426 0.297814 +vt 0.990216 0.312598 +vt 0.709889 0.538397 +vt 0.985027 0.312598 +vt 0.813852 0.704455 +vt 0.672557 0.969836 +vt 0.661790 0.940204 +vt 0.672557 0.940318 +vt 0.937378 0.420521 +vt 0.930000 0.391245 +vt 0.937378 0.390999 +vt 0.948631 0.383380 +vt 0.937378 0.353881 +vt 0.948631 0.353858 +vt 0.948631 0.420497 +vt 0.948631 0.390975 +vt 0.957166 0.383593 +vt 0.957166 0.354071 +vt 0.957166 0.420711 +vt 0.957166 0.391188 +vt 0.510468 0.977137 +vt 0.500029 0.947558 +vt 0.510468 0.947603 +vt 0.484296 0.973492 +vt 0.473857 0.943913 +vt 0.484296 0.943959 +vt 0.520876 0.977090 +vt 0.520876 0.947557 +vt 0.494704 0.973445 +vt 0.494704 0.943912 +vt 0.525156 0.976978 +vt 0.525156 0.947445 +vt 0.498984 0.973333 +vt 0.498984 0.943800 +vt 0.963519 0.878749 +vt 0.953522 0.849408 +vt 0.963519 0.849231 +vt 0.661790 0.969723 +vt 0.651792 0.940381 +vt 0.974286 0.878863 +vt 0.974286 0.849345 +vt 0.937378 0.383404 +vt 0.930000 0.354128 +vt 0.964176 0.886377 +vt 0.812030 0.955571 +vt 0.358167 0.948141 +vt 0.662447 0.977350 +vt 0.792770 0.974866 +vt 0.804052 0.974866 +vt 0.940685 0.390975 +vt 0.946312 0.428080 +vt 0.940685 0.428092 +vt 0.377427 0.956132 +vt 0.784792 0.955571 +vt 0.784792 0.966874 +vt 0.369450 0.975427 +vt 0.377427 0.967435 +vt 0.792770 0.947579 +vt 0.350190 0.967435 +vt 0.358167 0.975427 +vt 0.804052 0.947579 +vt 0.825789 0.787050 +vt 0.339120 0.780853 +vt 0.157243 0.670622 +vt 0.339780 0.658856 +vt 0.753870 0.697124 +vt 0.831098 0.602717 +vt 0.715509 0.701001 +vt 0.162444 0.918379 +vt 0.881020 0.168381 +vt 0.714001 0.691303 +vt 0.886260 0.183100 +vt 0.305366 0.665758 +vt 0.768730 0.863972 +vt 0.721023 0.713820 +vt 0.812818 0.287115 +vt 0.215065 0.659983 +vt 0.774128 0.694371 +vt 0.971887 0.091969 +vt 0.870564 0.168381 +vt 0.240887 0.660606 +vt 0.875804 0.183100 +vt 0.793836 0.293466 +vt 0.339180 0.836520 +vt 0.099094 0.761419 +vt 0.831099 0.600792 +vt 0.133686 0.777836 +vt 0.792398 0.081258 +vt 0.791944 0.094889 +vt 0.655500 0.081116 +vt 0.682885 0.731913 +vt 0.136907 0.775621 +vt 0.871146 0.239039 +vt 0.351983 0.855414 +vt 0.850168 0.410519 +vt 0.985368 0.644257 +vt 0.387852 0.868803 +vt 0.211028 0.651431 +vt 0.209659 0.665000 +vt 0.665942 0.070654 +vt 0.386801 0.864882 +vt 0.985402 0.631709 +vt 0.376976 0.861411 +vt 0.759006 0.687185 +vt 0.541790 0.590701 +vt 0.776950 0.416615 +vt 0.686191 0.538347 +vt 0.552970 0.776276 +vt 0.814488 0.694038 +vt 0.995450 0.312581 +vt 0.709552 0.533178 +vt 0.930000 0.420768 +vt 0.500029 0.977091 +vt 0.473857 0.973446 +vt 0.953522 0.878926 +vt 0.651792 0.969899 +vt 0.930000 0.383651 +vt 0.969559 0.886434 +vt 0.812030 0.966873 +vt 0.369450 0.948140 +vt 0.667830 0.977407 +vt 0.946312 0.390963 +vt 0.350190 0.956133 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.3827 -0.9239 +vn -0.0000 -0.9239 -0.3827 +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.3827 -0.9239 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 0.3827 0.9239 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn -0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn -0.3827 -0.9239 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.5547 0.8321 0.0000 +vn -0.5547 0.8321 0.0000 +vn 0.2588 0.9659 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.9659 -0.2588 0.0000 +vn -0.2588 -0.9659 0.0000 +vn -0.9659 0.2588 0.0000 +vn 0.9659 0.2588 0.0000 +vn 0.2588 -0.9659 0.0000 +vn -0.9659 -0.2588 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.2588 0.9659 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.2516 -0.9389 0.2347 +vn -0.9389 -0.2516 0.2347 +vn 0.6874 0.6873 0.2347 +vn -0.2516 0.9389 0.2347 +vn 0.6874 -0.6873 0.2347 +vn -0.6874 -0.6873 0.2347 +vn 0.2516 0.9389 0.2347 +vn -0.6873 0.6873 0.2347 +vn 0.9389 -0.2516 0.2347 +vn -0.2516 -0.9389 0.2347 +vn -0.9389 0.2516 0.2347 +vn 0.9389 0.2516 0.2347 +vn 0.8698 0.2331 0.4349 +vn 0.2331 -0.8698 0.4349 +vn -0.8698 -0.2331 0.4349 +vn 0.6367 0.6367 0.4349 +vn -0.2331 0.8698 0.4349 +vn 0.6367 -0.6367 0.4349 +vn -0.6367 -0.6367 0.4349 +vn 0.2331 0.8698 0.4349 +vn -0.6367 0.6367 0.4349 +vn 0.8698 -0.2331 0.4349 +vn -0.2331 -0.8698 0.4349 +vn -0.8698 0.2331 0.4349 +vn -0.7822 0.2096 0.5867 +vn 0.7822 0.2096 0.5867 +vn 0.2096 -0.7822 0.5867 +vn -0.7822 -0.2096 0.5867 +vn 0.5726 0.5726 0.5867 +vn -0.2096 0.7822 0.5867 +vn 0.5726 -0.5726 0.5867 +vn -0.5726 -0.5726 0.5867 +vn 0.2096 0.7822 0.5867 +vn -0.5726 0.5726 0.5867 +vn 0.7822 -0.2096 0.5867 +vn -0.2096 -0.7822 0.5867 +vn 0.8321 -0.5547 0.0000 +vn -0.4472 0.8944 0.0000 +vn 0.4472 0.0000 -0.8944 +vn 0.4472 0.0000 0.8944 +vn 0.6479 -0.7479 0.1445 +vn -0.1677 0.0449 0.9848 +vn 0.1677 -0.0449 -0.9848 +vn 0.9513 -0.2549 0.1736 +vn -0.1939 0.9779 -0.0777 +vn 0.5754 -0.1542 -0.8032 +vn 0.2754 -0.0738 0.9585 +vn 0.7541 -0.5547 0.3516 +vn -0.4226 0.0000 0.9063 +vn 0.4226 0.0000 -0.9063 +vn 0.9063 0.0000 0.4226 +vn -0.4053 0.8944 -0.1890 +vn 0.7833 0.0000 -0.6216 +vn 0.0273 0.0000 0.9996 +vn -0.8321 0.5547 0.0000 +vn 0.7206 -0.5547 0.4160 +vn -0.5000 0.0000 0.8660 +vn 0.5000 0.0000 -0.8660 +vn 0.8660 0.0000 0.5000 +vn -0.3873 0.8944 -0.2236 +vn 0.8345 0.0000 -0.5510 +vn -0.0599 0.0000 0.9982 +vn 0.4472 -0.8944 0.0000 +vn -0.4472 0.0000 -0.8944 +vn -0.4472 0.0000 0.8944 +vn -0.5547 -0.8321 0.0000 +vn 0.8944 0.4472 0.0000 +vn 0.0000 -0.4472 -0.8944 +vn 0.0000 -0.4472 0.8944 +vn -0.8944 -0.4472 0.0000 +vn 0.0000 0.4472 -0.8944 +vn 0.0000 0.4472 0.8944 +vn -0.5000 -0.8660 0.0000 +vn 0.4432 -0.8964 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.0599 0.9982 0.0000 +vn 0.3873 -0.2236 -0.8944 +vn 0.3873 -0.2236 0.8944 +vn -0.4432 0.8964 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.0599 -0.9982 0.0000 +vn -0.3873 0.2236 -0.8944 +vn -0.3873 0.2236 0.8944 +vn -0.8964 -0.4432 0.0000 +vn 0.9982 -0.0599 0.0000 +vn -0.2236 -0.3873 -0.8944 +vn -0.2236 -0.3873 0.8944 +vn 0.8964 0.4432 0.0000 +vn -0.9982 0.0599 0.0000 +vn 0.2236 0.3873 -0.8944 +vn 0.2236 0.3873 0.8944 +vn -0.8660 -0.5000 0.0000 +vn -0.0644 -0.9979 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.5510 0.8345 0.0000 +vn 0.2236 -0.3873 -0.8944 +vn 0.2236 -0.3873 0.8944 +vn 0.0644 0.9979 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.5510 -0.8345 0.0000 +vn -0.2236 0.3873 -0.8944 +vn -0.2236 0.3873 0.8944 +vn -0.9979 0.0644 0.0000 +vn 0.8345 -0.5510 0.0000 +vn -0.3873 -0.2236 -0.8944 +vn -0.3873 -0.2236 0.8944 +vn 0.9979 -0.0644 0.0000 +vn -0.8345 0.5510 0.0000 +vn 0.3873 0.2236 -0.8944 +vn 0.3873 0.2236 0.8944 +vn 0.1872 -0.9716 0.1445 +vn -0.1228 0.1228 0.9848 +vn 0.1228 -0.1228 -0.9848 +vn 0.6964 -0.6964 0.1736 +vn 0.3210 0.9439 -0.0777 +vn 0.4212 -0.4212 -0.8032 +vn 0.2016 -0.2016 0.9585 +vn -0.3237 -0.9351 0.1445 +vn -0.0449 0.1677 0.9848 +vn 0.0449 -0.1677 -0.9848 +vn 0.2549 -0.9513 0.1736 +vn 0.7500 0.6569 -0.0777 +vn 0.1542 -0.5754 -0.8032 +vn 0.0738 -0.2754 0.9585 +vn 0.7479 0.6479 0.1445 +vn -0.0449 -0.1677 0.9848 +vn 0.0449 0.1677 -0.9848 +vn 0.2549 0.9513 0.1736 +vn -0.9779 -0.1939 -0.0777 +vn 0.1542 0.5754 -0.8032 +vn 0.0738 0.2754 0.9585 +vn 0.9716 0.1872 0.1445 +vn -0.1228 -0.1228 0.9848 +vn 0.1228 0.1228 -0.9848 +vn 0.6964 0.6964 0.1736 +vn -0.9439 0.3210 -0.0777 +vn 0.4212 0.4212 -0.8032 +vn 0.2016 0.2016 0.9585 +vn 0.9351 -0.3237 0.1445 +vn -0.1677 -0.0449 0.9848 +vn 0.1677 0.0449 -0.9848 +vn 0.9513 0.2549 0.1736 +vn -0.6569 0.7500 -0.0777 +vn 0.5754 0.1542 -0.8032 +vn 0.2754 0.0738 0.9585 +vn -0.6479 0.7479 0.1445 +vn 0.1677 -0.0449 0.9848 +vn -0.1677 0.0449 -0.9848 +vn -0.9513 0.2549 0.1736 +vn 0.1939 -0.9779 -0.0777 +vn -0.5754 0.1542 -0.8032 +vn -0.2754 0.0738 0.9585 +vn -0.1872 0.9716 0.1445 +vn 0.1228 -0.1228 0.9848 +vn -0.1228 0.1228 -0.9848 +vn -0.6964 0.6964 0.1736 +vn -0.3210 -0.9439 -0.0777 +vn -0.4212 0.4212 -0.8032 +vn -0.2016 0.2016 0.9585 +vn 0.3237 0.9351 0.1445 +vn 0.0449 -0.1677 0.9848 +vn -0.0449 0.1677 -0.9848 +vn -0.2549 0.9513 0.1736 +vn -0.7500 -0.6569 -0.0777 +vn -0.1542 0.5754 -0.8032 +vn -0.0738 0.2754 0.9585 +vn -0.7479 -0.6479 0.1445 +vn 0.0449 0.1677 0.9848 +vn -0.0449 -0.1677 -0.9848 +vn -0.2549 -0.9513 0.1736 +vn 0.9779 0.1939 -0.0777 +vn -0.1542 -0.5754 -0.8032 +vn -0.0738 -0.2754 0.9585 +vn -0.9716 -0.1872 0.1445 +vn 0.1228 0.1228 0.9848 +vn -0.1228 -0.1228 -0.9848 +vn -0.6964 -0.6964 0.1736 +vn 0.9439 -0.3210 -0.0777 +vn -0.4212 -0.4212 -0.8032 +vn -0.2016 -0.2016 0.9585 +vn -0.9351 0.3237 0.1445 +vn 0.1677 0.0449 0.9848 +vn -0.1677 -0.0449 -0.9848 +vn -0.9513 -0.2549 0.1736 +vn 0.6569 -0.7500 -0.0777 +vn -0.5754 -0.1542 -0.8032 +vn -0.2754 -0.0738 0.9585 +vn -0.7541 0.5547 0.3516 +vn 0.4226 0.0000 0.9063 +vn -0.4226 0.0000 -0.9063 +vn -0.9063 0.0000 0.4226 +vn 0.4053 -0.8944 -0.1890 +vn -0.7833 0.0000 -0.6216 +vn -0.0273 0.0000 0.9996 +vn -0.5547 -0.7541 0.3516 +vn 0.0000 0.4226 0.9063 +vn 0.0000 -0.4226 -0.9063 +vn 0.0000 -0.9063 0.4226 +vn 0.8944 0.4053 -0.1890 +vn 0.0000 -0.7833 -0.6216 +vn 0.0000 -0.0273 0.9996 +vn 0.5547 0.7541 0.3516 +vn 0.0000 -0.4226 0.9063 +vn 0.0000 0.4226 -0.9063 +vn 0.0000 0.9063 0.4226 +vn -0.8944 -0.4053 -0.1890 +vn 0.0000 0.7833 -0.6216 +vn 0.0000 0.0273 0.9996 +vn 0.1410 -0.9255 0.3516 +vn -0.2988 0.2988 0.9063 +vn 0.2988 -0.2988 -0.9063 +vn 0.6409 -0.6409 0.4226 +vn 0.3459 0.9191 -0.1890 +vn 0.5539 -0.5539 -0.6216 +vn 0.0193 -0.0193 0.9996 +vn -0.1410 0.9255 0.3516 +vn 0.2988 -0.2988 0.9063 +vn -0.2988 0.2988 -0.9063 +vn -0.6409 0.6409 0.4226 +vn -0.3459 -0.9191 -0.1890 +vn -0.5539 0.5539 -0.6216 +vn -0.0193 0.0193 0.9996 +vn -0.9255 -0.1410 0.3516 +vn 0.2988 0.2988 0.9063 +vn -0.2988 -0.2988 -0.9063 +vn -0.6409 -0.6409 0.4226 +vn 0.9191 -0.3459 -0.1890 +vn -0.5539 -0.5539 -0.6216 +vn -0.0193 -0.0193 0.9996 +vn 0.9255 0.1410 0.3516 +vn -0.2988 -0.2988 0.9063 +vn 0.2988 0.2988 -0.9063 +vn 0.6409 0.6409 0.4226 +vn -0.9191 0.3459 -0.1890 +vn 0.5539 0.5539 -0.6216 +vn 0.0193 0.0193 0.9996 +vn -0.7206 0.5547 0.4160 +vn 0.5000 -0.0000 0.8660 +vn -0.5000 0.0000 -0.8660 +vn -0.8660 0.0000 0.5000 +vn 0.3873 -0.8944 -0.2236 +vn -0.8345 0.0000 -0.5510 +vn 0.0599 -0.0000 0.9982 +vn -0.1201 -0.9014 0.4160 +vn -0.2500 0.4330 0.8660 +vn 0.2500 -0.4330 -0.8660 +vn 0.4330 -0.7500 0.5000 +vn 0.5809 0.7826 -0.2236 +vn 0.4173 -0.7227 -0.5510 +vn -0.0300 0.0519 0.9982 +vn 0.1201 0.9014 0.4160 +vn 0.2500 -0.4330 0.8660 +vn -0.2500 0.4330 -0.8660 +vn -0.4330 0.7500 0.5000 +vn -0.5809 -0.7826 -0.2236 +vn -0.4173 0.7227 -0.5510 +vn 0.0300 -0.0519 0.9982 +vn -0.8407 -0.3467 0.4160 +vn 0.2500 0.4330 0.8660 +vn -0.2500 -0.4330 -0.8660 +vn -0.4330 -0.7500 0.5000 +vn 0.9682 -0.1118 -0.2236 +vn -0.4173 -0.7227 -0.5510 +vn 0.0300 0.0519 0.9982 +vn 0.8407 0.3467 0.4160 +vn -0.2500 -0.4330 0.8660 +vn 0.2500 0.4330 -0.8660 +vn 0.4330 0.7500 0.5000 +vn -0.9682 0.1118 -0.2236 +vn 0.4173 0.7227 -0.5510 +vn -0.0300 -0.0519 0.9982 +vn 0.0000 -0.9597 0.2811 +vn -0.9597 0.0000 0.2811 +vn 0.0000 0.9597 0.2811 +vn 0.9597 0.0000 0.2811 +vn -0.1753 -0.6541 -0.7358 +vn -0.6541 0.1753 -0.7358 +vn 0.6541 0.1753 -0.7358 +vn 0.1753 -0.6541 -0.7358 +vn -0.6541 -0.1753 -0.7358 +vn 0.4788 0.4788 -0.7358 +vn -0.1753 0.6541 -0.7358 +vn 0.4788 -0.4788 -0.7358 +vn -0.4788 -0.4788 -0.7358 +vn 0.1753 0.6541 -0.7358 +vn -0.4788 0.4788 -0.7358 +vn 0.6541 -0.1753 -0.7358 +vn 0.0000 0.8944 -0.4472 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.9437 0.3307 0.0000 +vn -0.9437 -0.3307 0.0000 +vn 0.9440 -0.3300 0.0000 +vn -0.9440 0.3300 0.0000 +vn 0.3162 0.9487 0.0000 +vn -0.3162 -0.9487 0.0000 +vn -0.3162 0.9487 0.0000 +vn 0.3162 -0.9487 0.0000 +vn 0.4213 0.4212 -0.8032 +vn 0.0196 -0.9987 -0.0473 +vn -0.7071 -0.0000 0.7071 +vn 0.0196 0.9987 -0.0473 +vn 0.1866 -0.0000 -0.9824 +vn 0.1448 -0.6794 -0.7194 +vn -0.1363 -0.7263 0.6737 +vn -0.1363 0.7263 0.6737 +vn 0.1448 0.6794 -0.7194 +vn 0.5294 -0.6630 -0.5294 +vn 0.0671 -0.9955 -0.0671 +vn -0.4617 -0.7574 0.4617 +vn 0.5294 0.6630 -0.5294 +vn 0.0671 0.9955 -0.0671 +vn 0.0473 -0.9987 -0.0196 +vn -0.6737 0.7263 0.1363 +vn 0.0473 0.9987 -0.0196 +vn 0.9824 -0.0000 -0.1866 +vn 0.7194 -0.6794 -0.1448 +vn -0.6737 -0.7263 0.1363 +vn 0.7194 0.6794 -0.1448 +vn -0.4617 0.7574 0.4617 +vn 0.9987 -0.0473 0.0196 +vn -0.9987 -0.0473 0.0196 +vn 0.6794 -0.7194 0.1448 +vn -0.7263 0.6737 -0.1363 +vn -0.6794 -0.7194 0.1448 +vn 0.7263 0.6737 -0.1363 +vn -0.0000 -0.9824 0.1866 +vn -0.9955 -0.0671 0.0671 +vn 0.9955 -0.0671 0.0671 +vn 0.6630 -0.5294 0.5294 +vn -0.6630 -0.5294 0.5294 +vn -0.7574 0.4617 -0.4617 +vn 0.7574 0.4617 -0.4617 +vn 0.0000 -0.1866 0.9824 +vn 0.9987 -0.0196 0.0473 +vn -0.6794 -0.1448 0.7194 +vn -0.9987 -0.0196 0.0473 +vn 0.6794 -0.1448 0.7194 +vn -0.7263 0.1363 -0.6737 +vn 0.7263 0.1363 -0.6737 +vn 0.7194 0.1448 -0.6794 +vn 0.9824 0.1866 -0.0000 +vn -0.5880 -0.0639 -0.8063 +vn 0.0473 0.0196 -0.9987 +vn 0.7194 0.1448 0.6794 +vn 0.0473 0.0196 0.9987 +vn -0.5880 -0.0639 0.8063 +vn 0.5294 0.5294 0.6630 +vn 0.0671 0.0671 0.9955 +vn -0.2706 -0.2706 0.9239 +vn 0.0671 0.0671 -0.9955 +vn 0.5294 0.5294 -0.6630 +vn 0.0393 0.0948 -0.9947 +vn 0.2962 0.7150 -0.6333 +vn 0.2962 0.7150 0.6333 +vn 0.0393 0.0948 0.9947 +vn -0.1566 -0.3780 0.9125 +vn -0.2706 -0.2706 -0.9239 +vn -0.6725 -0.0522 0.7382 +vn -0.6725 -0.0522 -0.7382 +vn -0.1566 -0.3780 -0.9125 +vn -0.0196 -0.9987 -0.0473 +vn 0.7071 0.0000 0.7071 +vn -0.0196 0.9987 -0.0473 +vn -0.1866 -0.0000 -0.9824 +vn -0.1448 -0.6794 -0.7194 +vn 0.1363 -0.7263 0.6737 +vn 0.1363 0.7263 0.6737 +vn -0.1448 0.6794 -0.7194 +vn -0.5294 -0.6630 -0.5294 +vn -0.0671 -0.9955 -0.0671 +vn -0.5294 0.6630 -0.5294 +vn -0.0671 0.9955 -0.0671 +vn -0.0473 -0.9987 -0.0196 +vn 0.6737 0.7263 0.1363 +vn 0.4617 0.7574 0.4617 +vn -0.9824 -0.0000 -0.1866 +vn 0.6737 -0.7263 0.1363 +vn 0.4617 -0.7574 0.4617 +vn -0.0473 0.9987 -0.0196 +vn -0.7194 0.6794 -0.1448 +vn -0.7194 -0.6794 -0.1448 +vn -0.7194 0.1448 -0.6794 +vn 0.5880 -0.0639 -0.8063 +vn -0.7194 0.1448 0.6794 +vn -0.0473 0.0196 0.9987 +vn -0.9824 0.1866 -0.0000 +vn 0.5880 -0.0639 0.8063 +vn -0.0671 0.0671 0.9955 +vn -0.0671 0.0671 -0.9955 +vn -0.0473 0.0196 -0.9987 +vn -0.5294 0.5294 0.6630 +vn -0.5294 0.5294 -0.6630 +vn -0.2962 0.7150 -0.6333 +vn -0.2962 0.7150 0.6333 +vn 0.2706 -0.2706 0.9239 +vn -0.0393 0.0948 0.9947 +vn -0.0393 0.0948 -0.9947 +vn 0.2706 -0.2706 -0.9239 +vn 0.6725 -0.0522 0.7382 +vn 0.6725 -0.0522 -0.7382 +vn -0.0196 0.0473 0.9987 +vn -0.1866 0.9824 -0.0000 +vn -0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 -0.7263 +vn 0.1363 -0.6737 0.7263 +vn -0.1448 0.7194 0.6794 +vn -0.1448 0.7194 -0.6794 +vn 0.4617 -0.4617 0.7574 +vn 0.6737 -0.1363 0.7263 +vn 0.4617 -0.4617 -0.7574 +vn 0.6737 -0.1363 -0.7263 +vn -0.7263 0.1363 0.6737 +vn -0.6794 -0.1448 -0.7194 +vn 0.9987 -0.0196 -0.0473 +vn 0.0000 -0.1866 -0.9824 +vn 0.6794 -0.1448 -0.7194 +vn -0.9987 -0.0196 -0.0473 +vn 0.7263 0.1363 0.6737 +vn 0.7574 0.4617 0.4617 +vn 0.9955 -0.0671 -0.0671 +vn -0.9955 -0.0671 -0.0671 +vn 0.6630 -0.5294 -0.5294 +vn -0.7574 0.4617 0.4617 +vn -0.6630 -0.5294 -0.5294 +vn -0.9987 -0.0473 -0.0196 +vn -0.7263 0.6737 0.1363 +vn -0.0000 -0.9824 -0.1866 +vn -0.6794 -0.7194 -0.1448 +vn 0.7263 0.6737 0.1363 +vn 0.9987 -0.0473 -0.0196 +vn 0.6794 -0.7194 -0.1448 +vn -0.7194 -0.6794 0.1448 +vn 0.6737 0.7263 -0.1363 +vn -0.0473 0.9987 0.0196 +vn -0.0473 -0.9987 0.0196 +vn -0.9824 -0.0000 0.1866 +vn 0.6737 -0.7263 -0.1363 +vn -0.7194 0.6794 0.1448 +vn -0.0671 -0.9955 0.0671 +vn -0.0671 0.9955 0.0671 +vn -0.5294 0.6630 0.5294 +vn -0.5294 -0.6630 0.5294 +vn 0.4617 0.7574 -0.4617 +vn -0.1448 -0.6794 0.7194 +vn 0.1363 0.7263 -0.6737 +vn 0.4617 -0.7574 -0.4617 +vn -0.0196 -0.9987 0.0473 +vn -0.1866 -0.0000 0.9824 +vn -0.1448 0.6794 0.7194 +vn -0.0196 0.9987 0.0473 +vn 0.1363 -0.7263 -0.6737 +vn 0.5000 0.7071 -0.5000 +vn -0.5000 0.7071 -0.5000 +vn -0.5000 0.7071 0.5000 +vn 0.5000 0.7071 0.5000 +vn 0.1566 -0.3780 0.9125 +vn 0.1566 -0.3780 -0.9125 +s off +f 74/1/1 114/2/1 113/3/1 +f 14/4/1 54/5/1 53/6/1 +f 12/7/2 43/8/2 11/9/2 +f 22/10/1 27/11/1 25/12/1 +f 11/9/3 28/13/3 12/7/3 +f 9/14/4 26/15/4 10/16/4 +f 7/17/5 24/18/5 8/19/5 +f 5/20/6 21/21/6 6/22/6 +f 12/23/7 22/24/7 5/20/7 +f 10/25/8 27/26/8 11/9/8 +f 9/14/9 24/27/9 25/28/9 +f 6/29/10 23/30/10 7/17/10 +f 31/31/2 33/32/2 35/33/2 +f 14/34/6 30/35/6 13/36/6 +f 13/36/7 36/37/7 20/38/7 +f 19/39/8 34/40/8 18/41/8 +f 17/42/9 32/43/9 16/44/9 +f 15/45/10 29/46/10 14/47/10 +f 20/48/3 35/33/3 19/39/3 +f 17/42/4 34/49/4 33/50/4 +f 16/51/5 31/52/5 15/45/5 +f 41/53/4 50/54/4 49/55/4 +f 10/25/2 41/56/2 9/57/2 +f 8/58/2 39/59/2 7/60/2 +f 6/61/2 38/62/2 5/63/2 +f 12/7/2 38/62/2 44/64/2 +f 11/9/2 42/65/2 10/25/2 +f 9/57/2 40/66/2 8/58/2 +f 6/61/2 39/59/2 37/67/2 +f 49/68/2 51/69/2 46/70/2 +f 40/71/5 47/72/5 39/73/5 +f 37/74/6 46/75/6 38/76/6 +f 38/76/7 52/77/7 44/78/7 +f 43/8/8 50/79/8 42/65/8 +f 41/53/9 48/80/9 40/81/9 +f 39/73/10 45/82/10 37/83/10 +f 43/8/3 52/84/3 51/69/3 +f 58/85/8 67/86/8 59/87/8 +f 13/88/1 60/89/1 54/5/1 +f 19/90/1 58/91/1 59/92/1 +f 16/93/1 57/94/1 17/95/1 +f 14/4/1 55/96/1 15/97/1 +f 19/90/1 60/89/1 20/98/1 +f 17/95/1 58/91/1 18/99/1 +f 16/93/1 55/96/1 56/100/1 +f 64/101/1 63/102/1 67/103/1 +f 56/104/9 65/105/9 57/106/9 +f 53/107/10 63/108/10 55/109/10 +f 60/110/3 67/86/3 68/111/3 +f 58/112/4 65/105/4 66/113/4 +f 55/109/5 64/114/5 56/115/5 +f 54/116/6 61/117/6 53/118/6 +f 60/119/7 62/120/7 54/116/7 +f 71/121/2 104/122/2 103/123/2 +f 82/124/1 87/125/1 85/126/1 +f 71/121/3 88/127/3 72/128/3 +f 69/129/4 86/130/4 70/131/4 +f 2/132/5 84/133/5 1/134/5 +f 4/135/6 81/136/6 3/137/6 +f 72/138/7 82/139/7 4/135/7 +f 70/140/8 87/141/8 71/121/8 +f 69/129/9 84/142/9 85/143/9 +f 3/144/10 83/145/10 2/132/10 +f 96/146/2 90/147/2 93/148/2 +f 74/149/6 90/150/6 73/151/6 +f 73/151/7 96/152/7 80/153/7 +f 79/154/8 94/155/8 78/156/8 +f 77/157/9 92/158/9 76/159/9 +f 75/160/10 89/161/10 74/162/10 +f 80/163/3 95/164/3 79/154/3 +f 77/157/4 94/165/4 93/166/4 +f 76/167/5 91/168/5 75/160/5 +f 102/169/4 109/170/4 101/171/4 +f 70/140/2 101/172/2 69/173/2 +f 2/174/2 100/175/2 99/176/2 +f 3/177/2 98/178/2 4/179/2 +f 72/128/2 98/178/2 104/122/2 +f 71/121/2 102/180/2 70/140/2 +f 1/181/2 101/172/2 100/175/2 +f 2/174/2 97/182/2 3/177/2 +f 109/183/2 111/184/2 106/185/2 +f 100/186/5 107/187/5 99/188/5 +f 97/189/6 106/190/6 98/191/6 +f 98/191/7 112/192/7 104/193/7 +f 103/123/8 110/194/8 102/180/8 +f 101/171/9 108/195/9 100/196/9 +f 99/188/10 105/197/10 97/198/10 +f 104/122/3 111/184/3 103/123/3 +f 118/199/8 127/200/8 119/201/8 +f 80/202/1 114/2/1 73/203/1 +f 79/204/1 118/205/1 119/206/1 +f 76/207/1 117/208/1 77/209/1 +f 75/210/1 113/3/1 115/211/1 +f 79/204/1 120/212/1 80/202/1 +f 78/213/1 117/208/1 118/205/1 +f 75/210/1 116/214/1 76/207/1 +f 127/215/1 125/216/1 123/217/1 +f 116/218/9 125/219/9 117/220/9 +f 113/221/10 123/222/10 115/223/10 +f 119/201/3 128/224/3 120/225/3 +f 117/220/4 126/226/4 118/227/4 +f 115/223/5 124/228/5 116/229/5 +f 114/230/6 121/231/6 113/232/6 +f 120/233/7 122/234/7 114/230/7 +f 134/235/11 153/236/11 149/237/11 +f 154/238/12 130/239/12 129/240/12 +f 129/241/13 151/242/13 154/243/13 +f 143/244/11 140/245/11 139/246/11 +f 142/247/13 137/248/13 138/249/13 +f 142/250/14 143/251/14 141/252/14 +f 129/241/2 139/253/2 133/254/2 +f 130/255/2 143/256/2 129/241/2 +f 130/255/2 137/248/2 141/257/2 +f 132/258/1 138/259/1 136/260/1 +f 144/261/1 132/258/1 131/262/1 +f 131/262/1 140/263/1 144/261/1 +f 147/264/12 146/265/12 145/266/12 +f 148/267/15 149/268/15 146/265/15 +f 145/266/16 152/269/16 147/264/16 +f 148/270/1 147/271/1 156/272/1 +f 145/273/2 146/274/2 153/275/2 +f 132/276/12 156/277/12 131/278/12 +f 136/279/11 155/280/11 132/281/11 +f 156/282/13 135/283/13 131/284/13 +f 152/269/12 151/285/12 139/286/12 +f 137/287/12 134/288/12 149/268/12 +f 230/289/1 270/290/1 269/291/1 +f 170/292/1 210/293/1 209/294/1 +f 167/295/2 200/296/2 199/297/2 +f 178/298/1 183/299/1 181/300/1 +f 167/295/3 184/301/3 168/302/3 +f 165/303/4 182/304/4 166/305/4 +f 163/306/5 180/307/5 164/308/5 +f 161/309/6 177/310/6 162/311/6 +f 168/312/7 178/313/7 161/309/7 +f 167/295/8 182/314/8 183/315/8 +f 165/303/9 180/316/9 181/317/9 +f 162/318/10 179/319/10 163/306/10 +f 192/320/2 186/321/2 189/322/2 +f 170/323/6 186/324/6 169/325/6 +f 169/325/7 192/326/7 176/327/7 +f 175/328/8 190/329/8 174/330/8 +f 173/331/9 188/332/9 172/333/9 +f 171/334/10 185/335/10 170/336/10 +f 176/337/3 191/338/3 175/328/3 +f 173/331/4 190/339/4 189/340/4 +f 171/334/5 188/341/5 187/342/5 +f 198/343/4 205/344/4 197/345/4 +f 166/346/2 197/347/2 165/348/2 +f 164/349/2 195/350/2 163/351/2 +f 162/352/2 194/353/2 161/354/2 +f 168/302/2 194/353/2 200/296/2 +f 167/295/2 198/355/2 166/346/2 +f 165/348/2 196/356/2 164/349/2 +f 162/352/2 195/350/2 193/357/2 +f 205/358/2 207/359/2 202/360/2 +f 196/361/5 203/362/5 195/363/5 +f 193/364/6 202/365/6 194/366/6 +f 194/366/7 208/367/7 200/368/7 +f 199/297/8 206/369/8 198/355/8 +f 197/345/9 204/370/9 196/371/9 +f 195/363/10 201/372/10 193/373/10 +f 200/296/3 207/359/3 199/297/3 +f 214/374/8 223/375/8 215/376/8 +f 176/377/1 210/293/1 169/378/1 +f 175/379/1 214/380/1 215/381/1 +f 172/382/1 213/383/1 173/384/1 +f 170/292/1 211/385/1 171/386/1 +f 175/379/1 216/387/1 176/377/1 +f 174/388/1 213/383/1 214/380/1 +f 172/382/1 211/385/1 212/389/1 +f 220/390/1 219/391/1 223/392/1 +f 212/393/9 221/394/9 213/395/9 +f 209/396/10 219/397/10 211/398/10 +f 215/376/3 224/399/3 216/400/3 +f 213/395/4 222/401/4 214/402/4 +f 211/398/5 220/403/5 212/404/5 +f 210/405/6 217/406/6 209/407/6 +f 216/408/7 218/409/7 210/405/7 +f 227/410/2 260/411/2 259/412/2 +f 240/413/1 239/414/1 243/415/1 +f 227/410/3 244/416/3 228/417/3 +f 225/418/4 242/419/4 226/420/4 +f 158/421/5 240/422/5 157/423/5 +f 160/424/6 237/425/6 159/426/6 +f 228/427/7 238/428/7 160/424/7 +f 226/429/8 243/430/8 227/410/8 +f 225/418/9 240/431/9 241/432/9 +f 159/433/10 239/434/10 158/421/10 +f 247/435/2 249/436/2 251/437/2 +f 230/438/6 246/439/6 229/440/6 +f 229/440/7 252/441/7 236/442/7 +f 235/443/8 250/444/8 234/445/8 +f 233/446/9 248/447/9 232/448/9 +f 231/449/10 245/450/10 230/451/10 +f 236/452/3 251/437/3 235/443/3 +f 233/446/4 250/453/4 249/454/4 +f 231/449/5 248/455/5 247/456/5 +f 258/457/4 265/458/4 257/459/4 +f 226/429/2 257/460/2 225/461/2 +f 158/462/2 256/463/2 255/464/2 +f 159/465/2 254/466/2 160/467/2 +f 228/417/2 254/466/2 260/411/2 +f 227/410/2 258/468/2 226/429/2 +f 157/469/2 257/460/2 256/463/2 +f 158/462/2 253/470/2 159/465/2 +f 265/471/2 267/472/2 262/473/2 +f 256/474/5 263/475/5 255/476/5 +f 253/477/6 262/478/6 254/479/6 +f 254/479/7 268/480/7 260/481/7 +f 259/412/8 266/482/8 258/468/8 +f 257/459/9 264/483/9 256/484/9 +f 255/476/10 261/485/10 253/486/10 +f 260/411/3 267/472/3 259/412/3 +f 274/487/8 283/488/8 275/489/8 +f 236/490/1 270/290/1 229/491/1 +f 235/492/1 274/493/1 275/494/1 +f 232/495/1 273/496/1 233/497/1 +f 231/498/1 269/291/1 271/499/1 +f 235/492/1 276/500/1 236/490/1 +f 234/501/1 273/496/1 274/493/1 +f 231/498/1 272/502/1 232/495/1 +f 283/503/1 281/504/1 279/505/1 +f 272/506/9 281/507/9 273/508/9 +f 269/509/10 279/510/10 271/511/10 +f 275/489/3 284/512/3 276/513/3 +f 273/508/4 282/514/4 274/515/4 +f 271/511/5 280/516/5 272/517/5 +f 270/518/6 277/519/6 269/520/6 +f 276/521/7 278/522/7 270/518/7 +f 290/523/11 309/524/11 305/525/11 +f 310/526/12 286/527/12 285/528/12 +f 285/529/13 307/530/13 310/531/13 +f 299/532/11 296/533/11 295/534/11 +f 298/535/13 293/536/13 294/537/13 +f 298/538/14 299/539/14 297/540/14 +f 285/529/2 295/541/2 289/542/2 +f 286/543/2 299/544/2 285/529/2 +f 286/543/2 293/536/2 297/545/2 +f 288/546/1 294/547/1 292/548/1 +f 300/549/1 288/546/1 287/550/1 +f 287/550/1 296/551/1 300/549/1 +f 303/552/12 302/553/12 301/554/12 +f 304/555/15 305/556/15 302/553/15 +f 301/554/16 308/557/16 303/552/16 +f 304/558/1 303/559/1 312/560/1 +f 301/561/2 302/562/2 309/563/2 +f 288/564/12 312/565/12 287/566/12 +f 292/567/11 311/568/11 288/569/11 +f 312/570/13 291/571/13 287/572/13 +f 307/573/12 296/574/12 308/557/12 +f 294/575/12 293/576/12 305/556/12 +f 315/577/12 324/578/12 321/579/12 +f 319/580/14 317/581/14 318/582/14 +f 315/583/13 320/584/13 316/585/13 +f 314/586/11 318/587/11 313/588/11 +f 324/589/2 320/584/2 319/590/2 +f 322/591/1 318/592/1 317/593/1 +f 322/594/12 314/595/12 313/596/12 +f 322/594/16 327/597/16 323/598/16 +f 325/599/12 327/597/12 326/600/12 +f 324/578/15 325/599/15 321/579/15 +f 323/601/2 328/602/2 324/589/2 +f 321/603/1 326/604/1 322/591/1 +f 336/605/17 662/606/17 661/607/17 +f 334/608/18 664/609/18 663/610/18 +f 332/611/19 666/612/19 665/613/19 +f 330/614/20 668/615/20 667/616/20 +f 335/617/21 663/610/21 662/618/21 +f 342/619/11 337/620/11 338/621/11 +f 339/622/12 338/623/12 337/624/12 +f 329/625/22 661/607/22 668/626/22 +f 331/627/23 667/616/23 666/628/23 +f 345/629/13 348/630/13 344/631/13 +f 354/632/2 355/633/2 353/634/2 +f 341/635/1 512/636/1 342/637/1 +f 347/638/14 345/639/14 346/640/14 +f 333/641/24 665/613/24 664/642/24 +f 344/643/25 347/638/25 343/644/25 +f 342/645/26 345/639/26 341/646/26 +f 340/647/2 351/648/2 338/649/2 +f 350/650/11 353/651/11 349/652/11 +f 349/653/14 355/654/14 351/655/14 +f 351/648/13 356/656/13 352/657/13 +f 352/658/12 354/659/12 350/660/12 +f 350/661/2 340/647/2 344/631/2 +f 352/657/2 344/631/2 343/662/2 +f 338/649/2 352/657/2 343/662/2 +f 506/663/11 509/664/11 505/665/11 +f 505/666/14 511/667/14 507/668/14 +f 507/669/13 512/670/13 508/671/13 +f 508/672/12 510/673/12 506/674/12 +f 339/675/1 510/676/1 341/635/1 +f 339/675/1 511/677/1 509/678/1 +f 512/636/1 337/679/1 342/637/1 +f 505/680/1 508/681/1 506/682/1 +f 331/683/11 333/684/11 335/685/11 +f 669/686/27 692/687/27 680/688/27 +f 671/689/28 682/690/28 670/691/28 +f 678/692/29 689/693/29 677/694/29 +f 675/695/30 686/696/30 674/697/30 +f 672/698/31 683/699/31 671/700/31 +f 679/701/32 690/702/32 678/692/32 +f 676/703/33 687/704/33 675/695/33 +f 673/705/34 684/706/34 672/698/34 +f 680/688/35 691/707/35 679/708/35 +f 670/691/36 681/709/36 669/686/36 +f 677/710/37 688/711/37 676/703/37 +f 674/697/38 685/712/38 673/713/38 +f 687/704/39 700/714/39 699/715/39 +f 684/706/40 697/716/40 696/717/40 +f 692/687/41 703/718/41 691/707/41 +f 682/690/42 693/719/42 681/709/42 +f 689/720/43 700/714/43 688/711/43 +f 685/712/44 698/721/44 697/722/44 +f 681/709/45 704/723/45 692/687/45 +f 683/724/46 694/725/46 682/690/46 +f 690/702/47 701/726/47 689/693/47 +f 687/704/48 698/721/48 686/696/48 +f 684/706/49 695/727/49 683/699/49 +f 691/728/50 702/729/50 690/702/50 +f 703/730/51 714/731/51 702/732/51 +f 700/714/52 711/733/52 699/715/52 +f 697/716/53 708/734/53 696/717/53 +f 704/723/54 715/735/54 703/718/54 +f 693/719/55 706/736/55 705/737/55 +f 700/714/56 713/738/56 712/739/56 +f 698/721/57 709/740/57 697/722/57 +f 693/719/58 716/741/58 704/723/58 +f 694/725/59 707/742/59 706/736/59 +f 702/732/60 713/743/60 701/744/60 +f 699/715/61 710/745/61 698/721/61 +f 696/717/62 707/746/62 695/727/62 +f 708/747/63 719/748/63 707/749/63 +f 715/750/64 726/751/64 714/731/64 +f 712/739/65 723/752/65 711/733/65 +f 709/753/66 720/754/66 708/747/66 +f 715/750/67 728/755/67 727/756/67 +f 706/736/68 717/757/68 705/737/68 +f 712/739/69 725/758/69 724/759/69 +f 710/760/70 721/761/70 709/753/70 +f 716/741/71 717/757/71 728/762/71 +f 706/763/72 719/748/72 718/764/72 +f 714/731/73 725/765/73 713/743/73 +f 711/733/74 722/766/74 710/745/74 +f 727/756/11 717/767/11 721/761/11 +f 777/768/12 781/769/12 779/770/12 +f 736/771/75 739/772/75 735/773/75 +f 730/774/11 734/775/11 729/776/11 +f 732/777/12 735/773/12 730/778/12 +f 729/779/14 733/780/14 731/781/14 +f 731/782/13 736/783/13 732/784/13 +f 739/785/2 737/786/2 738/787/2 +f 734/788/76 737/789/76 733/780/76 +f 733/790/77 740/791/77 736/783/77 +f 734/775/78 739/792/78 738/793/78 +f 780/794/14 783/795/14 778/796/14 +f 748/797/79 751/798/79 747/799/79 +f 742/800/80 746/801/80 741/802/80 +f 744/803/30 747/799/30 742/804/30 +f 743/805/27 746/806/27 745/807/27 +f 743/808/81 748/809/81 744/810/81 +f 751/811/82 749/812/82 750/813/82 +f 746/806/83 749/814/83 745/807/83 +f 745/815/84 752/816/84 748/809/84 +f 746/801/85 751/817/85 750/818/85 +f 778/819/11 782/820/11 777/821/11 +f 759/822/86 764/823/86 763/824/86 +f 754/825/87 758/826/87 753/827/87 +f 756/828/12 759/822/12 754/829/12 +f 755/830/14 758/831/14 757/832/14 +f 755/833/88 760/834/88 756/835/88 +f 763/836/89 761/837/89 762/838/89 +f 757/832/90 762/839/90 761/840/90 +f 757/841/91 764/842/91 760/834/91 +f 758/826/92 763/836/92 762/838/92 +f 784/843/93 787/844/93 783/845/93 +f 772/846/94 775/847/94 771/848/94 +f 766/849/95 770/850/95 765/851/95 +f 768/852/12 771/848/12 766/853/12 +f 765/854/14 769/855/14 767/856/14 +f 767/857/96 772/858/96 768/859/96 +f 775/860/97 773/861/97 774/862/97 +f 769/855/98 774/863/98 773/864/98 +f 769/865/99 776/866/99 772/858/99 +f 770/850/100 775/860/100 774/862/100 +f 779/867/13 784/868/13 780/869/13 +f 787/844/1 785/870/1 786/871/1 +f 782/872/101 785/873/101 781/769/101 +f 781/874/102 788/875/102 784/843/102 +f 782/820/103 787/876/103 786/877/103 +f 801/878/1 805/879/1 803/880/1 +f 796/881/104 799/882/104 795/883/104 +f 790/884/11 794/885/11 789/886/11 +f 792/887/1 795/888/1 790/889/1 +f 789/890/2 793/891/2 791/892/2 +f 791/892/13 796/893/13 792/894/13 +f 799/882/12 797/895/12 798/896/12 +f 794/897/105 797/898/105 793/891/105 +f 793/891/106 800/899/106 796/893/106 +f 794/885/107 799/900/107 798/901/107 +f 804/902/2 807/903/2 802/904/2 +f 802/905/11 806/906/11 801/907/11 +f 808/908/25 811/909/25 807/910/25 +f 803/911/13 808/912/13 804/902/13 +f 811/909/14 809/913/14 810/914/14 +f 806/915/108 809/916/108 805/879/108 +f 805/917/109 812/918/109 808/912/109 +f 806/906/110 811/919/110 810/920/110 +f 825/921/111 829/922/111 827/923/111 +f 820/924/112 823/925/112 819/926/112 +f 813/927/11 819/928/11 818/929/11 +f 816/930/111 819/926/111 814/931/111 +f 813/932/113 817/933/113 815/934/113 +f 816/935/13 817/936/13 820/937/13 +f 823/938/114 821/939/114 822/940/114 +f 818/941/115 821/942/115 817/933/115 +f 817/936/116 824/943/116 820/937/116 +f 818/929/117 823/944/117 822/945/117 +f 828/946/113 831/947/113 826/948/113 +f 826/949/11 830/950/11 825/951/11 +f 832/952/118 835/953/118 831/947/118 +f 827/954/13 832/955/13 828/956/13 +f 835/957/119 833/958/119 834/959/119 +f 830/960/120 833/961/120 829/922/120 +f 829/962/121 836/963/121 832/964/121 +f 830/950/122 835/965/122 834/966/122 +f 849/967/119 853/968/119 851/969/119 +f 844/970/123 847/971/123 843/972/123 +f 837/973/11 843/974/11 842/975/11 +f 840/976/119 843/972/119 838/977/119 +f 837/978/114 841/979/114 839/980/114 +f 839/980/13 844/981/13 840/982/13 +f 847/983/111 845/984/111 846/985/111 +f 842/986/124 845/987/124 841/979/124 +f 841/979/125 848/988/125 844/981/125 +f 842/975/126 847/989/126 846/990/126 +f 852/991/114 855/992/114 850/993/114 +f 849/994/11 855/995/11 854/996/11 +f 856/997/127 859/998/127 855/992/127 +f 851/999/13 856/997/13 852/991/13 +f 859/1000/113 857/1001/113 858/1002/113 +f 854/1003/128 857/1004/128 853/968/128 +f 853/1005/129 860/1006/129 856/997/129 +f 854/996/130 859/1007/130 858/1008/130 +f 873/1009/131 877/1010/131 875/1011/131 +f 868/1012/132 871/1013/132 867/1014/132 +f 862/1015/11 866/1016/11 861/1017/11 +f 864/1018/131 867/1019/131 862/1020/131 +f 861/1021/133 865/1022/133 863/1023/133 +f 864/1024/13 865/1022/13 868/1025/13 +f 871/1013/134 869/1026/134 870/1027/134 +f 866/1028/135 869/1029/135 865/1030/135 +f 865/1022/136 872/1031/136 868/1025/136 +f 866/1016/137 871/1032/137 870/1033/137 +f 876/1034/133 879/1035/133 874/1036/133 +f 874/1037/11 878/1038/11 873/1039/11 +f 880/1040/138 883/1041/138 879/1042/138 +f 875/1043/13 880/1044/13 876/1034/13 +f 883/1041/139 881/1045/139 882/1046/139 +f 878/1047/140 881/1048/140 877/1049/140 +f 877/1050/141 884/1051/141 880/1044/141 +f 878/1038/142 883/1052/142 882/1053/142 +f 897/1054/139 901/1055/139 899/1056/139 +f 892/1057/143 895/1058/143 891/1059/143 +f 885/1060/11 891/1061/11 890/1062/11 +f 888/1063/139 891/1064/139 886/1065/139 +f 885/1066/134 889/1067/134 887/1068/134 +f 888/1069/13 889/1070/13 892/1071/13 +f 895/1058/131 893/1072/131 894/1073/131 +f 890/1074/144 893/1075/144 889/1067/144 +f 889/1076/145 896/1077/145 892/1057/145 +f 890/1062/146 895/1078/146 894/1079/146 +f 900/1080/134 903/1081/134 898/1082/134 +f 898/1083/11 902/1084/11 897/1085/11 +f 904/1086/147 907/1087/147 903/1088/147 +f 899/1089/13 904/1086/13 900/1090/13 +f 907/1087/133 905/1091/133 906/1092/133 +f 902/1093/148 905/1094/148 901/1095/148 +f 901/1096/149 908/1097/149 904/1086/149 +f 902/1084/150 907/1098/150 906/1099/150 +f 915/1100/151 920/1101/151 919/1102/151 +f 909/1103/152 915/1104/152 914/1105/152 +f 912/1106/38 915/1100/38 910/1107/38 +f 911/1108/35 914/1109/35 913/1110/35 +f 911/1111/153 916/1112/153 912/1113/153 +f 918/1114/154 920/1101/154 917/1115/154 +f 914/1109/155 917/1116/155 913/1110/155 +f 913/1117/156 920/1118/156 916/1112/156 +f 914/1105/157 919/1119/157 918/1120/157 +f 928/1121/158 931/1122/158 927/1123/158 +f 922/1124/159 926/1125/159 921/1126/159 +f 924/1127/34 927/1128/34 922/1129/34 +f 923/1130/32 926/1131/32 925/1132/32 +f 924/1133/160 925/1132/160 928/1134/160 +f 931/1122/161 929/1135/161 930/1136/161 +f 926/1137/162 929/1138/162 925/1139/162 +f 925/1132/163 932/1140/163 928/1134/163 +f 926/1125/164 931/1141/164 930/1142/164 +f 940/1143/165 943/1144/165 939/1145/165 +f 934/1146/166 938/1147/166 933/1148/166 +f 936/1149/29 939/1150/29 934/1151/29 +f 935/1152/31 938/1153/31 937/1154/31 +f 936/1149/167 937/1155/167 940/1156/167 +f 943/1144/168 941/1157/168 942/1158/168 +f 937/1154/169 942/1159/169 941/1160/169 +f 937/1155/170 944/1161/170 940/1156/170 +f 938/1147/171 943/1162/171 942/1163/171 +f 951/1164/172 956/1165/172 955/1166/172 +f 945/1167/173 951/1168/173 950/1169/173 +f 948/1170/37 951/1171/37 946/1172/37 +f 947/1173/28 950/1174/28 949/1175/28 +f 947/1176/174 952/1177/174 948/1178/174 +f 954/1179/175 956/1180/175 953/1181/175 +f 950/1182/176 953/1183/176 949/1184/176 +f 949/1185/177 956/1165/177 952/1177/177 +f 950/1169/178 955/1186/178 954/1187/178 +f 963/1188/179 968/1189/179 967/1190/179 +f 958/1191/180 962/1192/180 957/1193/180 +f 960/1194/33 963/1195/33 958/1196/33 +f 959/1197/36 962/1198/36 961/1199/36 +f 960/1200/181 961/1201/181 964/1202/181 +f 967/1190/182 965/1203/182 966/1204/182 +f 962/1198/183 965/1205/183 961/1199/183 +f 961/1201/184 968/1189/184 964/1202/184 +f 962/1192/185 967/1206/185 966/1207/185 +f 975/1208/186 980/1209/186 979/1210/186 +f 970/1211/187 974/1212/187 969/1213/187 +f 972/1214/27 975/1208/27 970/1215/27 +f 969/1216/30 973/1217/30 971/1218/30 +f 972/1219/188 973/1220/188 976/1221/188 +f 979/1222/189 977/1223/189 978/1224/189 +f 973/1217/190 978/1225/190 977/1226/190 +f 973/1227/191 980/1228/191 976/1229/191 +f 974/1212/192 979/1230/192 978/1231/192 +f 988/1232/193 991/1233/193 987/1234/193 +f 982/1235/194 986/1236/194 981/1237/194 +f 982/1238/35 988/1232/35 987/1234/35 +f 983/1239/38 986/1240/38 985/1241/38 +f 983/1242/195 988/1243/195 984/1244/195 +f 990/1245/196 992/1246/196 989/1247/196 +f 985/1241/197 990/1248/197 989/1249/197 +f 985/1250/198 992/1251/198 988/1252/198 +f 986/1236/199 991/1253/199 990/1254/199 +f 999/1255/200 1004/1256/200 1003/1257/200 +f 993/1258/201 999/1259/201 998/1260/201 +f 996/1261/32 999/1262/32 994/1263/32 +f 995/1264/34 998/1265/34 997/1266/34 +f 995/1267/202 1000/1268/202 996/1261/202 +f 1003/1257/203 1001/1269/203 1002/1270/203 +f 998/1265/204 1001/1271/204 997/1266/204 +f 997/1272/205 1004/1256/205 1000/1273/205 +f 998/1260/206 1003/1274/206 1002/1275/206 +f 1012/1276/207 1015/1277/207 1011/1278/207 +f 1006/1279/208 1010/1280/208 1005/1281/208 +f 1008/1282/31 1011/1283/31 1006/1284/31 +f 1007/1285/29 1010/1286/29 1009/1287/29 +f 1008/1288/209 1009/1287/209 1012/1289/209 +f 1015/1277/210 1013/1290/210 1014/1291/210 +f 1010/1286/211 1013/1292/211 1009/1287/211 +f 1009/1293/212 1016/1294/212 1012/1276/212 +f 1010/1280/213 1015/1295/213 1014/1296/213 +f 1023/1297/214 1028/1298/214 1027/1299/214 +f 1018/1300/215 1022/1301/215 1017/1302/215 +f 1020/1303/28 1023/1304/28 1018/1305/28 +f 1019/1306/37 1022/1307/37 1021/1308/37 +f 1019/1309/216 1024/1310/216 1020/1311/216 +f 1027/1312/217 1025/1313/217 1026/1314/217 +f 1022/1315/218 1025/1316/218 1021/1317/218 +f 1021/1318/219 1028/1298/219 1024/1319/219 +f 1022/1301/220 1027/1320/220 1026/1321/220 +f 1036/1322/221 1039/1323/221 1035/1324/221 +f 1030/1325/222 1034/1326/222 1029/1327/222 +f 1032/1328/36 1035/1329/36 1030/1330/36 +f 1031/1331/33 1034/1332/33 1033/1333/33 +f 1031/1334/223 1036/1335/223 1032/1336/223 +f 1039/1323/224 1037/1337/224 1038/1338/224 +f 1034/1332/225 1037/1339/225 1033/1333/225 +f 1033/1340/226 1040/1341/226 1036/1322/226 +f 1034/1326/227 1039/1342/227 1038/1343/227 +f 1047/1344/228 1052/1345/228 1051/1346/228 +f 1042/1347/229 1046/1348/229 1041/1349/229 +f 1044/1350/14 1047/1351/14 1042/1352/14 +f 1043/1353/12 1046/1354/12 1045/1355/12 +f 1044/1356/230 1045/1357/230 1048/1358/230 +f 1051/1346/231 1049/1359/231 1050/1360/231 +f 1045/1355/232 1050/1361/232 1049/1362/232 +f 1045/1357/233 1052/1345/233 1048/1358/233 +f 1046/1348/234 1051/1363/234 1050/1364/234 +f 1059/1365/235 1064/1366/235 1063/1367/235 +f 1054/1368/236 1058/1369/236 1053/1370/236 +f 1056/1371/1 1059/1372/1 1054/1373/1 +f 1055/1374/2 1058/1375/2 1057/1376/2 +f 1055/1374/237 1060/1377/237 1056/1378/237 +f 1063/1367/238 1061/1379/238 1062/1380/238 +f 1058/1375/239 1061/1381/239 1057/1376/239 +f 1057/1382/240 1064/1366/240 1060/1383/240 +f 1058/1369/241 1063/1384/241 1062/1385/241 +f 1072/1386/242 1075/1387/242 1071/1388/242 +f 1066/1389/243 1070/1390/243 1065/1391/243 +f 1068/1392/2 1071/1393/2 1066/1394/2 +f 1067/1395/1 1070/1396/1 1069/1397/1 +f 1068/1392/244 1069/1398/244 1072/1399/244 +f 1075/1387/245 1073/1400/245 1074/1401/245 +f 1070/1396/246 1073/1402/246 1069/1397/246 +f 1069/1403/247 1076/1404/247 1072/1386/247 +f 1070/1390/248 1075/1405/248 1074/1406/248 +f 1083/1407/249 1088/1408/249 1087/1409/249 +f 1077/1410/250 1083/1411/250 1082/1412/250 +f 1080/1413/38 1083/1407/38 1078/1414/38 +f 1079/1415/35 1082/1416/35 1081/1417/35 +f 1079/1418/251 1084/1419/251 1080/1420/251 +f 1087/1409/252 1085/1421/252 1086/1422/252 +f 1081/1417/253 1086/1423/253 1085/1424/253 +f 1081/1425/254 1088/1426/254 1084/1419/254 +f 1082/1412/255 1087/1427/255 1086/1428/255 +f 1095/1429/256 1100/1430/256 1099/1431/256 +f 1090/1432/257 1094/1433/257 1089/1434/257 +f 1092/1435/35 1095/1429/35 1090/1436/35 +f 1091/1437/38 1094/1438/38 1093/1439/38 +f 1091/1440/258 1096/1441/258 1092/1442/258 +f 1098/1443/259 1100/1430/259 1097/1444/259 +f 1094/1438/260 1097/1445/260 1093/1439/260 +f 1093/1446/261 1100/1447/261 1096/1441/261 +f 1094/1433/262 1099/1448/262 1098/1449/262 +f 1108/1450/263 1111/1451/263 1107/1452/263 +f 1101/1453/264 1107/1454/264 1106/1455/264 +f 1104/1456/28 1107/1457/28 1102/1458/28 +f 1101/1459/37 1105/1460/37 1103/1461/37 +f 1103/1462/265 1108/1450/265 1104/1463/265 +f 1111/1464/266 1109/1465/266 1110/1466/266 +f 1105/1467/267 1110/1468/267 1109/1469/267 +f 1105/1470/268 1112/1471/268 1108/1450/268 +f 1106/1455/269 1111/1472/269 1110/1473/269 +f 1119/1474/270 1124/1475/270 1123/1476/270 +f 1113/1477/271 1119/1474/271 1118/1478/271 +f 1116/1479/37 1119/1480/37 1114/1481/37 +f 1115/1482/28 1118/1483/28 1117/1484/28 +f 1116/1485/272 1117/1486/272 1120/1487/272 +f 1123/1488/273 1121/1489/273 1122/1490/273 +f 1117/1491/274 1122/1492/274 1121/1493/274 +f 1117/1486/275 1124/1494/275 1120/1487/275 +f 1118/1478/276 1123/1476/276 1122/1495/276 +f 1132/1496/277 1135/1497/277 1131/1498/277 +f 1126/1499/278 1130/1500/278 1125/1501/278 +f 1128/1502/14 1131/1503/14 1126/1504/14 +f 1125/1505/12 1129/1506/12 1127/1507/12 +f 1127/1508/279 1132/1496/279 1128/1509/279 +f 1135/1497/280 1133/1510/280 1134/1511/280 +f 1129/1506/281 1134/1512/281 1133/1513/281 +f 1129/1514/282 1136/1515/282 1132/1496/282 +f 1130/1500/283 1135/1516/283 1134/1517/283 +f 1143/1518/284 1148/1519/284 1147/1520/284 +f 1138/1521/285 1142/1522/285 1137/1523/285 +f 1138/1524/131 1144/1525/131 1143/1526/131 +f 1137/1527/133 1141/1528/133 1139/1529/133 +f 1139/1529/286 1144/1530/286 1140/1531/286 +f 1147/1520/287 1145/1532/287 1146/1533/287 +f 1142/1534/288 1145/1535/288 1141/1536/288 +f 1141/1537/289 1148/1519/289 1144/1538/289 +f 1142/1522/290 1147/1539/290 1146/1540/290 +f 1156/1541/291 1159/1542/291 1155/1543/291 +f 1150/1544/292 1154/1545/292 1149/1546/292 +f 1152/1547/133 1155/1548/133 1150/1549/133 +f 1151/1550/131 1154/1551/131 1153/1552/131 +f 1152/1553/293 1153/1552/293 1156/1554/293 +f 1159/1542/294 1157/1555/294 1158/1556/294 +f 1154/1557/295 1157/1558/295 1153/1559/295 +f 1153/1560/296 1160/1561/296 1156/1541/296 +f 1154/1545/297 1159/1562/297 1158/1563/297 +f 1168/1564/298 1171/1565/298 1167/1566/298 +f 1162/1567/299 1166/1568/299 1161/1569/299 +f 1164/1570/119 1167/1566/119 1162/1571/119 +f 1161/1572/114 1165/1573/114 1163/1574/114 +f 1164/1570/300 1165/1575/300 1168/1564/300 +f 1171/1576/301 1169/1577/301 1170/1578/301 +f 1166/1579/302 1169/1580/302 1165/1573/302 +f 1165/1581/303 1172/1582/303 1168/1583/303 +f 1166/1568/304 1171/1584/304 1170/1585/304 +f 1179/1586/305 1184/1587/305 1183/1588/305 +f 1174/1589/306 1178/1590/306 1173/1591/306 +f 1176/1592/114 1179/1593/114 1174/1594/114 +f 1175/1595/119 1178/1596/119 1177/1597/119 +f 1176/1592/307 1177/1598/307 1180/1599/307 +f 1183/1600/308 1181/1601/308 1182/1602/308 +f 1178/1596/309 1181/1603/309 1177/1597/309 +f 1177/1604/310 1184/1605/310 1180/1606/310 +f 1178/1590/311 1183/1588/311 1182/1607/311 +f 1200/1608/23 1191/1609/23 1192/1610/23 +f 1198/1611/22 1189/1612/22 1190/1613/22 +f 1196/1614/21 1187/1615/21 1188/1616/21 +f 1194/1617/24 1185/1618/24 1186/1619/24 +f 1185/1618/19 1200/1620/19 1192/1621/19 +f 1191/1609/20 1198/1622/20 1190/1623/20 +f 1189/1612/17 1196/1624/17 1188/1625/17 +f 1187/1615/18 1194/1626/18 1186/1627/18 +f 1193/1628/312 1194/1629/312 1200/1630/312 +f 1199/1631/313 1200/1632/313 1198/1633/313 +f 1197/1634/314 1198/1635/314 1196/1636/314 +f 1195/1637/315 1196/1638/315 1194/1639/315 +f 1194/1640/11 1198/1641/11 1200/1642/11 +f 675/695/316 1206/1643/316 1207/1644/316 +f 671/700/317 1204/1645/317 672/698/317 +f 678/692/318 1211/1646/318 679/701/318 +f 675/1647/319 1208/1648/319 676/1649/319 +f 673/705/320 1204/1645/320 1205/1650/320 +f 679/701/321 1212/1651/321 680/1652/321 +f 669/686/322 1202/1653/322 670/691/322 +f 677/694/323 1208/1648/323 1209/1654/323 +f 673/705/324 1206/1655/324 674/1656/324 +f 680/1652/325 1201/1657/325 669/1658/325 +f 670/1659/326 1203/1660/326 671/700/326 +f 677/694/327 1210/1661/327 678/692/327 +f 1205/1662/13 1203/1663/13 1211/1646/13 +f 1215/1664/12 1214/1665/12 1213/1666/12 +f 1219/1667/11 1222/1668/11 1218/1669/11 +f 1215/1670/13 1220/1671/13 1216/1672/13 +f 1214/1673/11 1218/1669/11 1213/1674/11 +f 1216/1672/2 1219/1675/2 1214/1676/2 +f 1213/1677/1 1217/1678/1 1215/1679/1 +f 1223/1680/14 1221/1681/14 1222/1682/14 +f 1219/1675/2 1224/1683/2 1223/1684/2 +f 1218/1685/1 1221/1686/1 1217/1678/1 +f 1217/1687/328 1224/1688/328 1220/1689/328 +f 1227/1690/12 1226/1691/12 1225/1692/12 +f 1231/1693/14 1229/1694/14 1230/1695/14 +f 1227/1696/13 1232/1697/13 1228/1698/13 +f 1226/1699/11 1230/1700/11 1225/1701/11 +f 1228/1698/2 1231/1702/2 1226/1703/2 +f 1225/1704/1 1229/1705/1 1227/1706/1 +f 1235/1707/12 1234/1708/12 1233/1709/12 +f 1239/1710/14 1237/1711/14 1238/1712/14 +f 1236/1713/2 1239/1714/2 1234/1715/2 +f 1233/1716/1 1237/1717/1 1235/1718/1 +f 1235/1719/13 1240/1720/13 1236/1713/13 +f 1234/1721/11 1238/1722/11 1233/1723/11 +f 1256/1724/13 1251/1725/13 1252/1726/13 +f 1254/1727/11 1250/1728/11 1249/1729/11 +f 1248/1730/13 1243/1731/13 1244/1732/13 +f 1246/1733/11 1242/1734/11 1241/1735/11 +f 1247/1736/2 1244/1732/2 1242/1737/2 +f 1245/1738/1 1241/1739/1 1243/1740/1 +f 1255/1741/2 1252/1726/2 1250/1742/2 +f 1253/1743/1 1249/1744/1 1251/1745/1 +f 1289/1746/11 1454/1747/11 1452/1748/11 +f 1292/1749/13 1450/1750/13 1448/1751/13 +f 1259/1752/13 1264/1753/13 1260/1754/13 +f 1258/1755/11 1261/1756/11 1257/1757/11 +f 1260/1754/2 1262/1758/2 1258/1759/2 +f 1257/1760/1 1263/1761/1 1259/1762/1 +f 1267/1763/13 1272/1764/13 1268/1765/13 +f 1266/1766/11 1269/1767/11 1265/1768/11 +f 1268/1765/2 1270/1769/2 1266/1770/2 +f 1265/1771/1 1271/1772/1 1267/1773/1 +f 1295/1774/14 1293/1775/14 1294/1776/14 +f 1291/1777/12 1290/1778/12 1289/1779/12 +f 1275/1780/13 1280/1781/13 1276/1782/13 +f 1274/1783/11 1277/1784/11 1273/1785/11 +f 1276/1782/2 1278/1786/2 1274/1787/2 +f 1273/1788/1 1279/1789/1 1275/1790/1 +f 1283/1791/13 1288/1792/13 1284/1793/13 +f 1282/1794/11 1285/1795/11 1281/1796/11 +f 1284/1793/2 1286/1797/2 1282/1798/2 +f 1281/1799/1 1287/1800/1 1283/1801/1 +f 1291/1802/13 1296/1803/13 1292/1749/13 +f 1290/1804/11 1294/1805/11 1289/1746/11 +f 1299/1806/12 1298/1807/12 1297/1808/12 +f 1303/1809/14 1301/1810/14 1302/1811/14 +f 1299/1812/13 1304/1813/13 1300/1814/13 +f 1298/1815/11 1302/1816/11 1297/1817/11 +f 1300/1814/2 1303/1818/2 1298/1819/2 +f 1297/1820/1 1301/1821/1 1299/1822/1 +f 1324/1823/11 1314/1824/11 1321/1825/11 +f 1328/1826/2 1324/1827/2 1322/1828/2 +f 1310/1829/12 1311/1830/12 1312/1831/12 +f 1319/1832/14 1323/1833/14 1328/1834/14 +f 1316/1835/1 1320/1836/1 1318/1837/1 +f 1320/1838/13 1326/1839/13 1317/1840/13 +f 1318/1841/15 1326/1842/15 1325/1843/15 +f 1328/1834/329 1320/1844/329 1319/1832/329 +f 1322/1845/16 1314/1846/16 1313/1847/16 +f 1316/1848/330 1324/1849/330 1323/1833/330 +f 1325/1843/12 1313/1847/12 1318/1841/12 +f 1305/1850/14 1308/1851/14 1307/1852/14 +f 1311/1853/11 1307/1854/11 1312/1855/11 +f 1312/1856/1 1308/1857/1 1310/1858/1 +f 1309/1859/2 1305/1860/2 1311/1861/2 +f 1310/1862/13 1306/1863/13 1309/1859/13 +f 1332/1864/329 1337/1865/329 1331/1866/329 +f 1335/1867/11 1333/1868/11 1334/1869/11 +f 1331/1866/14 1336/1870/14 1332/1864/14 +f 1330/1871/12 1334/1872/12 1329/1873/12 +f 1332/1874/2 1335/1875/2 1330/1876/2 +f 1329/1877/1 1333/1878/1 1331/1879/1 +f 1337/1880/13 1339/1881/13 1338/1882/13 +f 1329/1873/15 1339/1883/15 1330/1871/15 +f 1330/1876/331 1340/1884/331 1332/1874/331 +f 1331/1879/332 1338/1885/332 1329/1877/332 +f 1347/1886/11 1345/1887/11 1346/1888/11 +f 1341/1889/14 1348/1890/14 1344/1891/14 +f 1343/1892/12 1346/1893/12 1342/1894/12 +f 1344/1895/2 1347/1896/2 1343/1897/2 +f 1342/1898/1 1345/1899/1 1341/1900/1 +f 1356/1901/333 1350/1902/333 1352/1903/333 +f 1353/1904/334 1351/1905/334 1349/1906/334 +f 1351/1907/13 1356/1901/13 1352/1903/13 +f 1354/1908/11 1349/1909/11 1350/1910/11 +f 1364/1911/335 1358/1912/335 1360/1913/335 +f 1361/1914/336 1359/1915/336 1357/1916/336 +f 1363/1917/13 1360/1913/13 1359/1918/13 +f 1358/1919/11 1361/1920/11 1357/1921/11 +f 1448/1751/2 1449/1922/2 1447/1923/2 +f 1295/1774/337 1450/1924/337 1296/1925/337 +f 1292/1926/338 1447/1927/338 1290/1778/338 +f 1290/1804/11 1449/1928/11 1295/1929/11 +f 1452/1930/1 1453/1931/1 1451/1932/1 +f 1293/1775/339 1454/1933/339 1294/1776/339 +f 1289/1779/340 1451/1934/340 1291/1777/340 +f 1291/1802/13 1453/1935/13 1293/1936/13 +f 1502/1937/14 1496/1938/14 1499/1939/14 +f 1491/1940/14 1493/1941/14 1488/1942/14 +f 74/1/1 73/203/1 114/2/1 +f 14/4/1 13/88/1 54/5/1 +f 12/7/2 44/64/2 43/8/2 +f 23/1943/1 21/1944/1 22/10/1 +f 22/10/1 28/1945/1 27/11/1 +f 27/11/1 26/1946/1 25/12/1 +f 25/12/1 24/1947/1 23/1943/1 +f 23/1943/1 22/10/1 25/12/1 +f 11/9/3 27/26/3 28/13/3 +f 9/14/4 25/28/4 26/15/4 +f 7/17/5 23/30/5 24/18/5 +f 5/20/6 22/24/6 21/21/6 +f 12/23/7 28/1948/7 22/24/7 +f 10/25/8 26/1949/8 27/26/8 +f 9/14/9 8/1950/9 24/27/9 +f 6/29/10 21/1951/10 23/30/10 +f 30/1952/2 29/1953/2 31/31/2 +f 31/31/2 32/1954/2 33/32/2 +f 33/32/2 34/40/2 35/33/2 +f 35/33/2 36/1955/2 30/1952/2 +f 30/1952/2 31/31/2 35/33/2 +f 14/34/6 29/1956/6 30/35/6 +f 13/36/7 30/35/7 36/37/7 +f 19/39/8 35/33/8 34/40/8 +f 17/42/9 33/50/9 32/43/9 +f 15/45/10 31/52/10 29/46/10 +f 20/48/3 36/1955/3 35/33/3 +f 17/42/4 18/1957/4 34/49/4 +f 16/51/5 32/1958/5 31/52/5 +f 41/53/4 42/1959/4 50/54/4 +f 10/25/2 42/65/2 41/56/2 +f 8/58/2 40/66/2 39/59/2 +f 6/61/2 37/67/2 38/62/2 +f 12/7/2 5/63/2 38/62/2 +f 11/9/2 43/8/2 42/65/2 +f 9/57/2 41/56/2 40/66/2 +f 6/61/2 7/60/2 39/59/2 +f 46/70/2 45/1960/2 49/68/2 +f 45/1960/2 47/1961/2 49/68/2 +f 47/1961/2 48/1962/2 49/68/2 +f 49/68/2 50/79/2 51/69/2 +f 51/69/2 52/84/2 46/70/2 +f 40/71/5 48/1963/5 47/72/5 +f 37/74/6 45/1964/6 46/75/6 +f 38/76/7 46/75/7 52/77/7 +f 43/8/8 51/69/8 50/79/8 +f 41/53/9 49/55/9 48/80/9 +f 39/73/10 47/72/10 45/82/10 +f 43/8/3 44/64/3 52/84/3 +f 58/85/8 66/1965/8 67/86/8 +f 13/88/1 20/98/1 60/89/1 +f 19/90/1 18/99/1 58/91/1 +f 16/93/1 56/100/1 57/94/1 +f 14/4/1 53/6/1 55/96/1 +f 19/90/1 59/92/1 60/89/1 +f 17/95/1 57/94/1 58/91/1 +f 16/93/1 15/97/1 55/96/1 +f 63/102/1 61/1966/1 67/103/1 +f 61/1966/1 62/1967/1 67/103/1 +f 62/1967/1 68/1968/1 67/103/1 +f 67/103/1 66/1969/1 65/1970/1 +f 65/1970/1 64/101/1 67/103/1 +f 56/104/9 64/1971/9 65/105/9 +f 53/107/10 61/1972/10 63/108/10 +f 60/110/3 59/87/3 67/86/3 +f 58/112/4 57/106/4 65/105/4 +f 55/109/5 63/108/5 64/114/5 +f 54/116/6 62/120/6 61/117/6 +f 60/119/7 68/1973/7 62/120/7 +f 71/121/2 72/128/2 104/122/2 +f 83/1974/1 81/1975/1 82/124/1 +f 82/124/1 88/1976/1 87/125/1 +f 87/125/1 86/1977/1 85/126/1 +f 85/126/1 84/1978/1 83/1974/1 +f 83/1974/1 82/124/1 85/126/1 +f 71/121/3 87/141/3 88/127/3 +f 69/129/4 85/143/4 86/130/4 +f 2/132/5 83/145/5 84/133/5 +f 4/135/6 82/139/6 81/136/6 +f 72/138/7 88/1979/7 82/139/7 +f 70/140/8 86/1980/8 87/141/8 +f 69/129/9 1/1981/9 84/142/9 +f 3/144/10 81/1982/10 83/145/10 +f 90/147/2 89/1983/2 91/1984/2 +f 91/1984/2 92/1985/2 90/147/2 +f 92/1985/2 93/148/2 90/147/2 +f 93/148/2 94/155/2 95/164/2 +f 95/164/2 96/146/2 93/148/2 +f 74/149/6 89/1986/6 90/150/6 +f 73/151/7 90/150/7 96/152/7 +f 79/154/8 95/164/8 94/155/8 +f 77/157/9 93/166/9 92/158/9 +f 75/160/10 91/168/10 89/161/10 +f 80/163/3 96/146/3 95/164/3 +f 77/157/4 78/1987/4 94/165/4 +f 76/167/5 92/1988/5 91/168/5 +f 102/169/4 110/1989/4 109/170/4 +f 70/140/2 102/180/2 101/172/2 +f 2/174/2 1/181/2 100/175/2 +f 3/177/2 97/182/2 98/178/2 +f 72/128/2 4/179/2 98/178/2 +f 71/121/2 103/123/2 102/180/2 +f 1/181/2 69/173/2 101/172/2 +f 2/174/2 99/176/2 97/182/2 +f 106/185/2 105/1990/2 107/1991/2 +f 107/1991/2 108/1992/2 109/183/2 +f 109/183/2 110/194/2 111/184/2 +f 111/184/2 112/1993/2 106/185/2 +f 106/185/2 107/1991/2 109/183/2 +f 100/186/5 108/1994/5 107/187/5 +f 97/189/6 105/1995/6 106/190/6 +f 98/191/7 106/190/7 112/192/7 +f 103/123/8 111/184/8 110/194/8 +f 101/171/9 109/170/9 108/195/9 +f 99/188/10 107/187/10 105/197/10 +f 104/122/3 112/1993/3 111/184/3 +f 118/199/8 126/1996/8 127/200/8 +f 80/202/1 120/212/1 114/2/1 +f 79/204/1 78/213/1 118/205/1 +f 76/207/1 116/214/1 117/208/1 +f 75/210/1 74/1/1 113/3/1 +f 79/204/1 119/206/1 120/212/1 +f 78/213/1 77/209/1 117/208/1 +f 75/210/1 115/211/1 116/214/1 +f 123/217/1 121/1997/1 122/1998/1 +f 122/1998/1 128/1999/1 127/215/1 +f 127/215/1 126/2000/1 125/216/1 +f 125/216/1 124/2001/1 123/217/1 +f 123/217/1 122/1998/1 127/215/1 +f 116/218/9 124/2002/9 125/219/9 +f 113/221/10 121/2003/10 123/222/10 +f 119/201/3 127/200/3 128/224/3 +f 117/220/4 125/219/4 126/226/4 +f 115/223/5 123/222/5 124/228/5 +f 114/230/6 122/234/6 121/231/6 +f 120/233/7 128/2004/7 122/234/7 +f 134/235/11 130/2005/11 153/236/11 +f 154/238/12 153/2006/12 130/239/12 +f 129/241/13 133/254/13 151/242/13 +f 143/244/11 144/2007/11 140/245/11 +f 142/247/13 141/257/13 137/248/13 +f 142/250/14 144/2008/14 143/251/14 +f 129/241/2 143/256/2 139/253/2 +f 130/255/2 141/257/2 143/256/2 +f 130/255/2 134/2009/2 137/248/2 +f 132/258/1 142/2010/1 138/259/1 +f 144/261/1 142/2010/1 132/258/1 +f 131/262/1 135/2011/1 140/263/1 +f 147/264/12 148/267/12 146/265/12 +f 148/267/15 150/2012/15 149/268/15 +f 145/266/16 151/285/16 152/269/16 +f 147/271/1 152/2013/1 156/272/1 +f 156/272/1 155/2014/1 148/270/1 +f 155/2014/1 150/2015/1 148/270/1 +f 146/274/2 149/2016/2 153/275/2 +f 153/275/2 154/243/2 145/273/2 +f 154/243/2 151/242/2 145/273/2 +f 132/276/12 155/2017/12 156/277/12 +f 136/279/11 150/2018/11 155/280/11 +f 156/282/13 152/2019/13 135/283/13 +f 151/285/12 133/2020/12 139/286/12 +f 139/286/12 140/2021/12 152/269/12 +f 140/2021/12 135/2022/12 152/269/12 +f 149/268/12 150/2012/12 138/2023/12 +f 150/2012/12 136/2024/12 138/2023/12 +f 138/2023/12 137/287/12 149/268/12 +f 230/289/1 229/491/1 270/290/1 +f 170/292/1 169/378/1 210/293/1 +f 167/295/2 168/302/2 200/296/2 +f 179/2025/1 177/2026/1 178/298/1 +f 178/298/1 184/2027/1 183/299/1 +f 183/299/1 182/2028/1 181/300/1 +f 181/300/1 180/2029/1 179/2025/1 +f 179/2025/1 178/298/1 181/300/1 +f 167/295/3 183/315/3 184/301/3 +f 165/303/4 181/317/4 182/304/4 +f 163/306/5 179/319/5 180/307/5 +f 161/309/6 178/313/6 177/310/6 +f 168/312/7 184/2030/7 178/313/7 +f 167/295/8 166/346/8 182/314/8 +f 165/303/9 164/2031/9 180/316/9 +f 162/318/10 177/2032/10 179/319/10 +f 186/321/2 185/2033/2 187/2034/2 +f 187/2034/2 188/2035/2 186/321/2 +f 188/2035/2 189/322/2 186/321/2 +f 189/322/2 190/329/2 191/338/2 +f 191/338/2 192/320/2 189/322/2 +f 170/323/6 185/2036/6 186/324/6 +f 169/325/7 186/324/7 192/326/7 +f 175/328/8 191/338/8 190/329/8 +f 173/331/9 189/340/9 188/332/9 +f 171/334/10 187/342/10 185/335/10 +f 176/337/3 192/320/3 191/338/3 +f 173/331/4 174/2037/4 190/339/4 +f 171/334/5 172/2038/5 188/341/5 +f 198/343/4 206/2039/4 205/344/4 +f 166/346/2 198/355/2 197/347/2 +f 164/349/2 196/356/2 195/350/2 +f 162/352/2 193/357/2 194/353/2 +f 168/302/2 161/354/2 194/353/2 +f 167/295/2 199/297/2 198/355/2 +f 165/348/2 197/347/2 196/356/2 +f 162/352/2 163/351/2 195/350/2 +f 202/360/2 201/2040/2 205/358/2 +f 201/2040/2 203/2041/2 205/358/2 +f 203/2041/2 204/2042/2 205/358/2 +f 205/358/2 206/369/2 207/359/2 +f 207/359/2 208/2043/2 202/360/2 +f 196/361/5 204/2044/5 203/362/5 +f 193/364/6 201/2045/6 202/365/6 +f 194/366/7 202/365/7 208/367/7 +f 199/297/8 207/359/8 206/369/8 +f 197/345/9 205/344/9 204/370/9 +f 195/363/10 203/362/10 201/372/10 +f 200/296/3 208/2043/3 207/359/3 +f 214/374/8 222/2046/8 223/375/8 +f 176/377/1 216/387/1 210/293/1 +f 175/379/1 174/388/1 214/380/1 +f 172/382/1 212/389/1 213/383/1 +f 170/292/1 209/294/1 211/385/1 +f 175/379/1 215/381/1 216/387/1 +f 174/388/1 173/384/1 213/383/1 +f 172/382/1 171/386/1 211/385/1 +f 219/391/1 217/2047/1 223/392/1 +f 217/2047/1 218/2048/1 223/392/1 +f 218/2048/1 224/2049/1 223/392/1 +f 223/392/1 222/2050/1 221/2051/1 +f 221/2051/1 220/390/1 223/392/1 +f 212/393/9 220/2052/9 221/394/9 +f 209/396/10 217/2053/10 219/397/10 +f 215/376/3 223/375/3 224/399/3 +f 213/395/4 221/394/4 222/401/4 +f 211/398/5 219/397/5 220/403/5 +f 210/405/6 218/409/6 217/406/6 +f 216/408/7 224/2054/7 218/409/7 +f 227/410/2 228/417/2 260/411/2 +f 239/414/1 237/2055/1 243/415/1 +f 237/2055/1 238/2056/1 243/415/1 +f 238/2056/1 244/2057/1 243/415/1 +f 243/415/1 242/2058/1 241/2059/1 +f 241/2059/1 240/413/1 243/415/1 +f 227/410/3 243/430/3 244/416/3 +f 225/418/4 241/432/4 242/419/4 +f 158/421/5 239/434/5 240/422/5 +f 160/424/6 238/428/6 237/425/6 +f 228/427/7 244/2060/7 238/428/7 +f 226/429/8 242/2061/8 243/430/8 +f 225/418/9 157/2062/9 240/431/9 +f 159/433/10 237/2063/10 239/434/10 +f 246/2064/2 245/2065/2 247/435/2 +f 247/435/2 248/2066/2 249/436/2 +f 249/436/2 250/444/2 251/437/2 +f 251/437/2 252/2067/2 246/2064/2 +f 246/2064/2 247/435/2 251/437/2 +f 230/438/6 245/2068/6 246/439/6 +f 229/440/7 246/439/7 252/441/7 +f 235/443/8 251/437/8 250/444/8 +f 233/446/9 249/454/9 248/447/9 +f 231/449/10 247/456/10 245/450/10 +f 236/452/3 252/2067/3 251/437/3 +f 233/446/4 234/2069/4 250/453/4 +f 231/449/5 232/2070/5 248/455/5 +f 258/457/4 266/2071/4 265/458/4 +f 226/429/2 258/468/2 257/460/2 +f 158/462/2 157/469/2 256/463/2 +f 159/465/2 253/470/2 254/466/2 +f 228/417/2 160/467/2 254/466/2 +f 227/410/2 259/412/2 258/468/2 +f 157/469/2 225/461/2 257/460/2 +f 158/462/2 255/464/2 253/470/2 +f 262/473/2 261/2072/2 263/2073/2 +f 263/2073/2 264/2074/2 265/471/2 +f 265/471/2 266/482/2 267/472/2 +f 267/472/2 268/2075/2 262/473/2 +f 262/473/2 263/2073/2 265/471/2 +f 256/474/5 264/2076/5 263/475/5 +f 253/477/6 261/2077/6 262/478/6 +f 254/479/7 262/478/7 268/480/7 +f 259/412/8 267/472/8 266/482/8 +f 257/459/9 265/458/9 264/483/9 +f 255/476/10 263/475/10 261/485/10 +f 260/411/3 268/2075/3 267/472/3 +f 274/487/8 282/2078/8 283/488/8 +f 236/490/1 276/500/1 270/290/1 +f 235/492/1 234/501/1 274/493/1 +f 232/495/1 272/502/1 273/496/1 +f 231/498/1 230/289/1 269/291/1 +f 235/492/1 275/494/1 276/500/1 +f 234/501/1 233/497/1 273/496/1 +f 231/498/1 271/499/1 272/502/1 +f 279/505/1 277/2079/1 278/2080/1 +f 278/2080/1 284/2081/1 283/503/1 +f 283/503/1 282/2082/1 281/504/1 +f 281/504/1 280/2083/1 279/505/1 +f 279/505/1 278/2080/1 283/503/1 +f 272/506/9 280/2084/9 281/507/9 +f 269/509/10 277/2085/10 279/510/10 +f 275/489/3 283/488/3 284/512/3 +f 273/508/4 281/507/4 282/514/4 +f 271/511/5 279/510/5 280/516/5 +f 270/518/6 278/522/6 277/519/6 +f 276/521/7 284/2086/7 278/522/7 +f 290/523/11 286/2087/11 309/524/11 +f 310/526/12 309/2088/12 286/527/12 +f 285/529/13 289/542/13 307/530/13 +f 299/532/11 300/2089/11 296/533/11 +f 298/535/13 297/545/13 293/536/13 +f 298/538/14 300/2090/14 299/539/14 +f 285/529/2 299/544/2 295/541/2 +f 286/543/2 297/545/2 299/544/2 +f 286/543/2 290/2091/2 293/536/2 +f 288/546/1 298/2092/1 294/547/1 +f 300/549/1 298/2092/1 288/546/1 +f 287/550/1 291/2093/1 296/551/1 +f 303/552/12 304/555/12 302/553/12 +f 304/555/15 306/2094/15 305/556/15 +f 301/554/16 307/573/16 308/557/16 +f 303/559/1 308/2095/1 312/560/1 +f 312/560/1 311/2096/1 304/558/1 +f 311/2096/1 306/2097/1 304/558/1 +f 302/562/2 305/2098/2 309/563/2 +f 309/563/2 310/531/2 301/561/2 +f 310/531/2 307/530/2 301/561/2 +f 288/564/12 311/2099/12 312/565/12 +f 292/567/11 306/2100/11 311/568/11 +f 312/570/13 308/2101/13 291/571/13 +f 307/573/12 289/2102/12 295/2103/12 +f 295/2103/12 296/574/12 307/573/12 +f 296/574/12 291/2104/12 308/557/12 +f 290/2105/12 305/556/12 293/576/12 +f 305/556/12 306/2094/12 294/575/12 +f 306/2094/12 292/2106/12 294/575/12 +f 315/577/12 316/2107/12 324/578/12 +f 319/580/14 320/2108/14 317/581/14 +f 315/583/13 317/2109/13 320/584/13 +f 314/586/11 319/2110/11 318/587/11 +f 319/590/2 314/2111/2 323/601/2 +f 324/589/2 316/585/2 320/584/2 +f 319/590/2 323/601/2 324/589/2 +f 317/593/1 315/2112/1 321/603/1 +f 322/591/1 313/2113/1 318/592/1 +f 317/593/1 321/603/1 322/591/1 +f 322/594/12 323/598/12 314/595/12 +f 322/594/16 326/600/16 327/597/16 +f 325/599/12 328/2114/12 327/597/12 +f 324/578/15 328/2114/15 325/599/15 +f 323/601/2 327/2115/2 328/602/2 +f 321/603/1 325/2116/1 326/604/1 +f 336/605/17 335/2117/17 662/606/17 +f 334/608/18 333/2118/18 664/609/18 +f 332/611/19 331/2119/19 666/612/19 +f 330/614/20 329/2120/20 668/615/20 +f 335/617/21 334/608/21 663/610/21 +f 338/621/11 343/2121/11 342/619/11 +f 343/2121/11 347/2122/11 342/619/11 +f 347/2122/11 346/2123/11 342/619/11 +f 339/622/12 340/2124/12 338/623/12 +f 329/625/22 336/605/22 661/607/22 +f 331/627/23 330/614/23 667/616/23 +f 344/631/13 340/647/13 339/2125/13 +f 339/2125/13 341/2126/13 344/631/13 +f 341/2126/13 345/629/13 344/631/13 +f 354/632/2 356/656/2 355/633/2 +f 341/635/1 510/676/1 512/636/1 +f 347/638/14 348/2127/14 345/639/14 +f 333/641/24 332/611/24 665/613/24 +f 344/643/25 348/2127/25 347/638/25 +f 342/645/26 346/640/26 345/639/26 +f 340/647/2 349/2128/2 351/648/2 +f 350/650/11 354/2129/11 353/651/11 +f 349/653/14 353/2130/14 355/654/14 +f 351/648/13 355/633/13 356/656/13 +f 352/658/12 356/2131/12 354/659/12 +f 350/661/2 349/2128/2 340/647/2 +f 352/657/2 350/661/2 344/631/2 +f 338/649/2 351/648/2 352/657/2 +f 506/663/11 510/2132/11 509/664/11 +f 505/666/14 509/2133/14 511/667/14 +f 507/669/13 511/2134/13 512/670/13 +f 508/672/12 512/2135/12 510/673/12 +f 339/675/1 509/678/1 510/676/1 +f 339/675/1 337/679/1 511/677/1 +f 512/636/1 511/677/1 337/679/1 +f 505/680/1 507/2136/1 508/681/1 +f 335/685/11 336/2137/11 331/683/11 +f 336/2137/11 329/2138/11 331/683/11 +f 329/2138/11 330/2139/11 331/683/11 +f 331/683/11 332/2140/11 333/684/11 +f 333/684/11 334/2141/11 335/685/11 +f 669/686/27 681/709/27 692/687/27 +f 671/689/28 683/724/28 682/690/28 +f 678/692/29 690/702/29 689/693/29 +f 675/695/30 687/704/30 686/696/30 +f 672/698/31 684/706/31 683/699/31 +f 679/701/32 691/728/32 690/702/32 +f 676/703/33 688/711/33 687/704/33 +f 673/705/34 685/2142/34 684/706/34 +f 680/688/35 692/687/35 691/707/35 +f 670/691/36 682/690/36 681/709/36 +f 677/710/37 689/720/37 688/711/37 +f 674/697/38 686/696/38 685/712/38 +f 687/704/39 688/711/39 700/714/39 +f 684/706/40 685/2142/40 697/716/40 +f 692/687/41 704/723/41 703/718/41 +f 682/690/42 694/725/42 693/719/42 +f 689/720/43 701/2143/43 700/714/43 +f 685/712/44 686/696/44 698/721/44 +f 681/709/45 693/719/45 704/723/45 +f 683/724/46 695/2144/46 694/725/46 +f 690/702/47 702/729/47 701/726/47 +f 687/704/48 699/715/48 698/721/48 +f 684/706/49 696/717/49 695/727/49 +f 691/728/50 703/2145/50 702/729/50 +f 703/730/51 715/750/51 714/731/51 +f 700/714/52 712/739/52 711/733/52 +f 697/716/53 709/2146/53 708/734/53 +f 704/723/54 716/741/54 715/735/54 +f 693/719/55 694/725/55 706/736/55 +f 700/714/56 701/2143/56 713/738/56 +f 698/721/57 710/745/57 709/740/57 +f 693/719/58 705/737/58 716/741/58 +f 694/725/59 695/2144/59 707/742/59 +f 702/732/60 714/731/60 713/743/60 +f 699/715/61 711/733/61 710/745/61 +f 696/717/62 708/734/62 707/746/62 +f 708/747/63 720/754/63 719/748/63 +f 715/750/64 727/756/64 726/751/64 +f 712/739/65 724/759/65 723/752/65 +f 709/753/66 721/761/66 720/754/66 +f 715/750/67 716/2147/67 728/755/67 +f 706/736/68 718/2148/68 717/757/68 +f 712/739/69 713/738/69 725/758/69 +f 710/760/70 722/2149/70 721/761/70 +f 716/741/71 705/737/71 717/757/71 +f 706/763/72 707/749/72 719/748/72 +f 714/731/73 726/751/73 725/765/73 +f 711/733/74 723/752/74 722/766/74 +f 717/767/11 718/764/11 721/761/11 +f 718/764/11 719/748/11 721/761/11 +f 719/748/11 720/754/11 721/761/11 +f 721/761/11 722/2149/11 725/765/11 +f 722/2149/11 723/2150/11 725/765/11 +f 723/2150/11 724/2151/11 725/765/11 +f 725/765/11 726/751/11 727/756/11 +f 727/756/11 728/755/11 717/767/11 +f 725/765/11 727/756/11 721/761/11 +f 777/768/12 782/872/12 781/769/12 +f 736/771/75 740/2152/75 739/772/75 +f 730/774/11 735/2153/11 734/775/11 +f 732/777/12 736/771/12 735/773/12 +f 729/779/14 734/788/14 733/780/14 +f 731/782/13 733/790/13 736/783/13 +f 739/785/2 740/791/2 737/786/2 +f 734/788/76 738/2154/76 737/789/76 +f 733/790/77 737/786/77 740/791/77 +f 734/775/78 735/2153/78 739/792/78 +f 780/794/14 784/2155/14 783/795/14 +f 748/797/79 752/2156/79 751/798/79 +f 742/800/80 747/2157/80 746/801/80 +f 744/803/30 748/797/30 747/799/30 +f 743/805/27 741/2158/27 746/806/27 +f 743/808/81 745/815/81 748/809/81 +f 751/811/82 752/816/82 749/812/82 +f 746/806/83 750/2159/83 749/814/83 +f 745/815/84 749/812/84 752/816/84 +f 746/801/85 747/2157/85 751/817/85 +f 778/819/11 783/2160/11 782/820/11 +f 759/822/86 760/2161/86 764/823/86 +f 754/825/87 759/2162/87 758/826/87 +f 756/828/12 760/2161/12 759/822/12 +f 755/830/14 753/2163/14 758/831/14 +f 755/833/88 757/841/88 760/834/88 +f 763/836/89 764/2164/89 761/837/89 +f 757/832/90 758/831/90 762/839/90 +f 757/841/91 761/2165/91 764/842/91 +f 758/826/92 759/2162/92 763/836/92 +f 784/843/93 788/875/93 787/844/93 +f 772/846/94 776/2166/94 775/847/94 +f 766/849/95 771/2167/95 770/850/95 +f 768/852/12 772/846/12 771/848/12 +f 765/854/14 770/2168/14 769/855/14 +f 767/857/96 769/865/96 772/858/96 +f 775/860/97 776/2169/97 773/861/97 +f 769/855/98 770/2168/98 774/863/98 +f 769/865/99 773/2170/99 776/866/99 +f 770/850/100 771/2167/100 775/860/100 +f 779/867/13 781/2171/13 784/868/13 +f 787/844/1 788/875/1 785/870/1 +f 782/872/101 786/2172/101 785/873/101 +f 781/874/102 785/870/102 788/875/102 +f 782/820/103 783/2160/103 787/876/103 +f 801/878/1 806/915/1 805/879/1 +f 796/881/104 800/2173/104 799/882/104 +f 790/884/11 795/2174/11 794/885/11 +f 792/887/1 796/2175/1 795/888/1 +f 789/890/2 794/897/2 793/891/2 +f 791/892/13 793/891/13 796/893/13 +f 799/882/12 800/2173/12 797/895/12 +f 794/897/105 798/2176/105 797/898/105 +f 793/891/106 797/898/106 800/899/106 +f 794/885/107 795/2174/107 799/900/107 +f 804/902/2 808/912/2 807/903/2 +f 802/905/11 807/2177/11 806/906/11 +f 808/908/25 812/2178/25 811/909/25 +f 803/911/13 805/917/13 808/912/13 +f 811/909/14 812/2178/14 809/913/14 +f 806/915/108 810/2179/108 809/916/108 +f 805/917/109 809/2180/109 812/918/109 +f 806/906/110 807/2177/110 811/919/110 +f 825/921/111 830/960/111 829/922/111 +f 820/924/112 824/2181/112 823/925/112 +f 813/927/11 814/2182/11 819/928/11 +f 816/930/111 820/924/111 819/926/111 +f 813/932/113 818/941/113 817/933/113 +f 816/935/13 815/2183/13 817/936/13 +f 823/938/114 824/943/114 821/939/114 +f 818/941/115 822/2184/115 821/942/115 +f 817/936/116 821/939/116 824/943/116 +f 818/929/117 819/928/117 823/944/117 +f 828/946/113 832/952/113 831/947/113 +f 826/949/11 831/2185/11 830/950/11 +f 832/952/118 836/2186/118 835/953/118 +f 827/954/13 829/2187/13 832/955/13 +f 835/957/119 836/963/119 833/958/119 +f 830/960/120 834/2188/120 833/961/120 +f 829/962/121 833/958/121 836/963/121 +f 830/950/122 831/2185/122 835/965/122 +f 849/967/119 854/1003/119 853/968/119 +f 844/970/123 848/2189/123 847/971/123 +f 837/973/11 838/2190/11 843/974/11 +f 840/976/119 844/970/119 843/972/119 +f 837/978/114 842/986/114 841/979/114 +f 839/980/13 841/979/13 844/981/13 +f 847/983/111 848/2191/111 845/984/111 +f 842/986/124 846/2192/124 845/987/124 +f 841/979/125 845/987/125 848/988/125 +f 842/975/126 843/974/126 847/989/126 +f 852/991/114 856/997/114 855/992/114 +f 849/994/11 850/2193/11 855/995/11 +f 856/997/127 860/1006/127 859/998/127 +f 851/999/13 853/1005/13 856/997/13 +f 859/1000/113 860/2194/113 857/1001/113 +f 854/1003/128 858/2195/128 857/1004/128 +f 853/1005/129 857/2196/129 860/1006/129 +f 854/996/130 855/995/130 859/1007/130 +f 873/1009/131 878/2197/131 877/1010/131 +f 868/1012/132 872/2198/132 871/1013/132 +f 862/1015/11 867/2199/11 866/1016/11 +f 864/1018/131 868/2200/131 867/1019/131 +f 861/1021/133 866/2201/133 865/1022/133 +f 864/1024/13 863/1023/13 865/1022/13 +f 871/1013/134 872/2198/134 869/1026/134 +f 866/1028/135 870/2202/135 869/1029/135 +f 865/1022/136 869/2203/136 872/1031/136 +f 866/1016/137 867/2199/137 871/1032/137 +f 876/1034/133 880/1044/133 879/1035/133 +f 874/1037/11 879/2204/11 878/1038/11 +f 880/1040/138 884/2205/138 883/1041/138 +f 875/1043/13 877/1050/13 880/1044/13 +f 883/1041/139 884/2205/139 881/1045/139 +f 878/1047/140 882/2206/140 881/1048/140 +f 877/1050/141 881/2207/141 884/1051/141 +f 878/1038/142 879/2204/142 883/1052/142 +f 897/1054/139 902/2208/139 901/1055/139 +f 892/1057/143 896/1077/143 895/1058/143 +f 885/1060/11 886/2209/11 891/1061/11 +f 888/1063/139 892/2210/139 891/1064/139 +f 885/1066/134 890/1074/134 889/1067/134 +f 888/1069/13 887/2211/13 889/1070/13 +f 895/1058/131 896/1077/131 893/1072/131 +f 890/1074/144 894/2212/144 893/1075/144 +f 889/1076/145 893/1072/145 896/1077/145 +f 890/1062/146 891/1061/146 895/1078/146 +f 900/1080/134 904/2213/134 903/1081/134 +f 898/1083/11 903/2214/11 902/1084/11 +f 904/1086/147 908/1097/147 907/1087/147 +f 899/1089/13 901/1096/13 904/1086/13 +f 907/1087/133 908/1097/133 905/1091/133 +f 902/1093/148 906/2215/148 905/1094/148 +f 901/1096/149 905/1091/149 908/1097/149 +f 902/1084/150 903/2214/150 907/1098/150 +f 915/1100/151 916/2216/151 920/1101/151 +f 909/1103/152 910/2217/152 915/1104/152 +f 912/1106/38 916/2216/38 915/1100/38 +f 911/1108/35 909/2218/35 914/1109/35 +f 911/1111/153 913/1117/153 916/1112/153 +f 918/1114/154 919/1102/154 920/1101/154 +f 914/1109/155 918/2219/155 917/1116/155 +f 913/1117/156 917/2220/156 920/1118/156 +f 914/1105/157 915/1104/157 919/1119/157 +f 928/1121/158 932/2221/158 931/1122/158 +f 922/1124/159 927/2222/159 926/1125/159 +f 924/1127/34 928/2223/34 927/1128/34 +f 923/1130/32 921/2224/32 926/1131/32 +f 924/1133/160 923/1130/160 925/1132/160 +f 931/1122/161 932/2221/161 929/1135/161 +f 926/1137/162 930/2225/162 929/1138/162 +f 925/1132/163 929/2226/163 932/1140/163 +f 926/1125/164 927/2222/164 931/1141/164 +f 940/1143/165 944/2227/165 943/1144/165 +f 934/1146/166 939/2228/166 938/1147/166 +f 936/1149/29 940/1156/29 939/1150/29 +f 935/1152/31 933/2229/31 938/1153/31 +f 936/1149/167 935/2230/167 937/1155/167 +f 943/1144/168 944/2227/168 941/1157/168 +f 937/1154/169 938/1153/169 942/1159/169 +f 937/1155/170 941/2231/170 944/1161/170 +f 938/1147/171 939/2228/171 943/1162/171 +f 951/1164/172 952/1177/172 956/1165/172 +f 945/1167/173 946/2232/173 951/1168/173 +f 948/1170/37 952/2233/37 951/1171/37 +f 947/1173/28 945/2234/28 950/1174/28 +f 947/1176/174 949/1185/174 952/1177/174 +f 954/1179/175 955/2235/175 956/1180/175 +f 950/1182/176 954/2236/176 953/1183/176 +f 949/1185/341 953/2237/341 956/1165/341 +f 950/1169/178 951/1168/178 955/1186/178 +f 963/1188/179 964/1202/179 968/1189/179 +f 958/1191/180 963/2238/180 962/1192/180 +f 960/1194/33 964/2239/33 963/1195/33 +f 959/1197/36 957/2240/36 962/1198/36 +f 960/1200/181 959/2241/181 961/1201/181 +f 967/1190/182 968/1189/182 965/1203/182 +f 962/1198/183 966/2242/183 965/1205/183 +f 961/1201/184 965/1203/184 968/1189/184 +f 962/1192/185 963/2238/185 967/1206/185 +f 975/1208/186 976/2243/186 980/1209/186 +f 970/1211/187 975/2244/187 974/1212/187 +f 972/1214/27 976/2243/27 975/1208/27 +f 969/1216/30 974/2245/30 973/1217/30 +f 972/1219/188 971/2246/188 973/1220/188 +f 979/1222/189 980/1228/189 977/1223/189 +f 973/1217/190 974/2245/190 978/1225/190 +f 973/1227/191 977/1223/191 980/1228/191 +f 974/1212/192 975/2244/192 979/1230/192 +f 988/1232/193 992/1246/193 991/1233/193 +f 982/1235/194 987/2247/194 986/1236/194 +f 982/1238/35 984/2248/35 988/1232/35 +f 983/1239/38 981/2249/38 986/1240/38 +f 983/1242/195 985/2250/195 988/1243/195 +f 990/1245/196 991/1233/196 992/1246/196 +f 985/1241/197 986/1240/197 990/1248/197 +f 985/1250/198 989/2251/198 992/1251/198 +f 986/1236/199 987/2247/199 991/1253/199 +f 999/1255/200 1000/1273/200 1004/1256/200 +f 993/1258/201 994/2252/201 999/1259/201 +f 996/1261/32 1000/1268/32 999/1262/32 +f 995/1264/34 993/2253/34 998/1265/34 +f 995/1267/202 997/2254/202 1000/1268/202 +f 1003/1257/203 1004/1256/203 1001/1269/203 +f 998/1265/204 1002/2255/204 1001/1271/204 +f 997/1272/205 1001/1269/205 1004/1256/205 +f 998/1260/206 999/1259/206 1003/1274/206 +f 1012/1276/207 1016/1294/207 1015/1277/207 +f 1006/1279/208 1011/2256/208 1010/1280/208 +f 1008/1282/31 1012/2257/31 1011/1283/31 +f 1007/1285/29 1005/2258/29 1010/1286/29 +f 1008/1288/209 1007/1285/209 1009/1287/209 +f 1015/1277/210 1016/1294/210 1013/1290/210 +f 1010/1286/211 1014/2259/211 1013/1292/211 +f 1009/1293/212 1013/1290/212 1016/1294/212 +f 1010/1280/213 1011/2256/213 1015/1295/213 +f 1023/1297/214 1024/1319/214 1028/1298/214 +f 1018/1300/215 1023/2260/215 1022/1301/215 +f 1020/1303/28 1024/2261/28 1023/1304/28 +f 1019/1306/37 1017/2262/37 1022/1307/37 +f 1019/1309/216 1021/2263/216 1024/1310/216 +f 1027/1312/217 1028/2264/217 1025/1313/217 +f 1022/1315/218 1026/2265/218 1025/1316/218 +f 1021/1318/219 1025/2266/219 1028/1298/219 +f 1022/1301/220 1023/2260/220 1027/1320/220 +f 1036/1322/221 1040/1341/221 1039/1323/221 +f 1030/1325/222 1035/2267/222 1034/1326/222 +f 1032/1328/36 1036/2268/36 1035/1329/36 +f 1031/1331/33 1029/2269/33 1034/1332/33 +f 1031/1334/223 1033/2270/223 1036/1335/223 +f 1039/1323/224 1040/1341/224 1037/1337/224 +f 1034/1332/225 1038/2271/225 1037/1339/225 +f 1033/1340/226 1037/1337/226 1040/1341/226 +f 1034/1326/227 1035/2267/227 1039/1342/227 +f 1047/1344/228 1048/1358/228 1052/1345/228 +f 1042/1347/229 1047/2272/229 1046/1348/229 +f 1044/1350/14 1048/2273/14 1047/1351/14 +f 1043/1353/12 1041/2274/12 1046/1354/12 +f 1044/1356/230 1043/2275/230 1045/1357/230 +f 1051/1346/231 1052/1345/231 1049/1359/231 +f 1045/1355/232 1046/1354/232 1050/1361/232 +f 1045/1357/233 1049/1359/233 1052/1345/233 +f 1046/1348/234 1047/2272/234 1051/1363/234 +f 1059/1365/235 1060/1383/235 1064/1366/235 +f 1054/1368/236 1059/2276/236 1058/1369/236 +f 1056/1371/1 1060/2277/1 1059/1372/1 +f 1055/1374/2 1053/2278/2 1058/1375/2 +f 1055/1374/237 1057/1376/237 1060/1377/237 +f 1063/1367/238 1064/1366/238 1061/1379/238 +f 1058/1375/239 1062/2279/239 1061/1381/239 +f 1057/1382/240 1061/1379/240 1064/1366/240 +f 1058/1369/241 1059/2276/241 1063/1384/241 +f 1072/1386/242 1076/1404/242 1075/1387/242 +f 1066/1389/243 1071/2280/243 1070/1390/243 +f 1068/1392/2 1072/1399/2 1071/1393/2 +f 1067/1395/1 1065/2281/1 1070/1396/1 +f 1068/1392/244 1067/2282/244 1069/1398/244 +f 1075/1387/245 1076/1404/245 1073/1400/245 +f 1070/1396/246 1074/2283/246 1073/1402/246 +f 1069/1403/247 1073/1400/247 1076/1404/247 +f 1070/1390/248 1071/2280/248 1075/1405/248 +f 1083/1407/249 1084/2284/249 1088/1408/249 +f 1077/1410/250 1078/2285/250 1083/1411/250 +f 1080/1413/38 1084/2284/38 1083/1407/38 +f 1079/1415/35 1077/2286/35 1082/1416/35 +f 1079/1418/251 1081/1425/251 1084/1419/251 +f 1087/1409/252 1088/1408/252 1085/1421/252 +f 1081/1417/253 1082/1416/253 1086/1423/253 +f 1081/1425/254 1085/2287/254 1088/1426/254 +f 1082/1412/255 1083/1411/255 1087/1427/255 +f 1095/1429/256 1096/2288/256 1100/1430/256 +f 1090/1432/257 1095/2289/257 1094/1433/257 +f 1092/1435/35 1096/2288/35 1095/1429/35 +f 1091/1437/38 1089/2290/38 1094/1438/38 +f 1091/1440/258 1093/1446/258 1096/1441/258 +f 1098/1443/259 1099/1431/259 1100/1430/259 +f 1094/1438/260 1098/2291/260 1097/1445/260 +f 1093/1446/261 1097/2292/261 1100/1447/261 +f 1094/1433/262 1095/2289/262 1099/1448/262 +f 1108/1450/263 1112/1471/263 1111/1451/263 +f 1101/1453/264 1102/2293/264 1107/1454/264 +f 1104/1456/28 1108/2294/28 1107/1457/28 +f 1101/1459/37 1106/2295/37 1105/1460/37 +f 1103/1462/265 1105/1470/265 1108/1450/265 +f 1111/1464/266 1112/2296/266 1109/1465/266 +f 1105/1467/267 1106/2297/267 1110/1468/267 +f 1105/1470/268 1109/2298/268 1112/1471/268 +f 1106/1455/269 1107/1454/269 1111/1472/269 +f 1119/1474/270 1120/2299/270 1124/1475/270 +f 1113/1477/271 1114/2300/271 1119/1474/271 +f 1116/1479/37 1120/2301/37 1119/1480/37 +f 1115/1482/28 1113/2302/28 1118/1483/28 +f 1116/1485/272 1115/2303/272 1117/1486/272 +f 1123/1488/273 1124/2304/273 1121/1489/273 +f 1117/1491/274 1118/2305/274 1122/1492/274 +f 1117/1486/275 1121/2306/275 1124/1494/275 +f 1118/1478/276 1119/1474/276 1123/1476/276 +f 1132/1496/277 1136/1515/277 1135/1497/277 +f 1126/1499/278 1131/2307/278 1130/1500/278 +f 1128/1502/14 1132/2308/14 1131/1503/14 +f 1125/1505/12 1130/2309/12 1129/1506/12 +f 1127/1508/279 1129/1514/279 1132/1496/279 +f 1135/1497/280 1136/1515/280 1133/1510/280 +f 1129/1506/281 1130/2309/281 1134/1512/281 +f 1129/1514/282 1133/1510/282 1136/1515/282 +f 1130/1500/283 1131/2307/283 1135/1516/283 +f 1143/1518/284 1144/1538/284 1148/1519/284 +f 1138/1521/285 1143/2310/285 1142/1522/285 +f 1138/1524/131 1140/2311/131 1144/1525/131 +f 1137/1527/133 1142/2312/133 1141/1528/133 +f 1139/1529/286 1141/1528/286 1144/1530/286 +f 1147/1520/287 1148/1519/287 1145/1532/287 +f 1142/1534/288 1146/2313/288 1145/1535/288 +f 1141/1537/289 1145/1532/289 1148/1519/289 +f 1142/1522/290 1143/2310/290 1147/1539/290 +f 1156/1541/291 1160/1561/291 1159/1542/291 +f 1150/1544/292 1155/2314/292 1154/1545/292 +f 1152/1547/133 1156/2315/133 1155/1548/133 +f 1151/1550/131 1149/2316/131 1154/1551/131 +f 1152/1553/293 1151/1550/293 1153/1552/293 +f 1159/1542/294 1160/1561/294 1157/1555/294 +f 1154/1557/295 1158/2317/295 1157/1558/295 +f 1153/1560/296 1157/1555/296 1160/1561/296 +f 1154/1545/297 1155/2314/297 1159/1562/297 +f 1168/1564/298 1172/2318/298 1171/1565/298 +f 1162/1567/299 1167/2319/299 1166/1568/299 +f 1164/1570/119 1168/1564/119 1167/1566/119 +f 1161/1572/114 1166/1579/114 1165/1573/114 +f 1164/1570/300 1163/2320/300 1165/1575/300 +f 1171/1576/301 1172/1582/301 1169/1577/301 +f 1166/1579/302 1170/2321/302 1169/1580/302 +f 1165/1581/303 1169/1577/303 1172/1582/303 +f 1166/1568/304 1167/2319/304 1171/1584/304 +f 1179/1586/305 1180/2322/305 1184/1587/305 +f 1174/1589/306 1179/1586/306 1178/1590/306 +f 1176/1592/114 1180/1599/114 1179/1593/114 +f 1175/1595/119 1173/2323/119 1178/1596/119 +f 1176/1592/307 1175/2324/307 1177/1598/307 +f 1183/1600/308 1184/1605/308 1181/1601/308 +f 1178/1596/309 1182/2325/309 1181/1603/309 +f 1177/1604/310 1181/1601/310 1184/1605/310 +f 1178/1590/311 1179/1586/311 1183/1588/311 +f 1200/1608/23 1199/2326/23 1191/1609/23 +f 1198/1611/22 1197/2327/22 1189/1612/22 +f 1196/1614/21 1195/2328/21 1187/1615/21 +f 1194/1617/24 1193/2329/24 1185/1618/24 +f 1185/1618/19 1193/2329/19 1200/1620/19 +f 1191/1609/20 1199/2326/20 1198/1622/20 +f 1189/1612/17 1197/2327/17 1196/1624/17 +f 1187/1615/18 1195/2328/18 1194/1626/18 +f 1194/1640/11 1196/2330/11 1198/1641/11 +f 675/695/316 674/697/316 1206/1643/316 +f 671/700/317 1203/1660/317 1204/1645/317 +f 678/692/318 1210/1661/318 1211/1646/318 +f 675/1647/319 1207/2331/319 1208/1648/319 +f 673/705/320 672/698/320 1204/1645/320 +f 679/701/321 1211/1646/321 1212/1651/321 +f 669/686/322 1201/2332/322 1202/1653/322 +f 677/694/323 676/1649/323 1208/1648/323 +f 673/705/324 1205/1650/324 1206/1655/324 +f 680/1652/325 1212/1651/325 1201/1657/325 +f 670/1659/326 1202/2333/326 1203/1660/326 +f 677/694/327 1209/1654/327 1210/1661/327 +f 1203/1663/13 1202/2334/13 1211/1646/13 +f 1202/2334/13 1201/1657/13 1211/1646/13 +f 1201/1657/13 1212/1651/13 1211/1646/13 +f 1211/1646/13 1210/1661/13 1209/1654/13 +f 1209/1654/13 1208/1648/13 1207/2331/13 +f 1207/2331/13 1206/2335/13 1205/1662/13 +f 1205/1662/13 1204/2336/13 1203/1663/13 +f 1211/1646/13 1209/1654/13 1207/2331/13 +f 1207/2331/13 1205/1662/13 1211/1646/13 +f 1215/1664/12 1216/2337/12 1214/1665/12 +f 1219/1667/11 1223/2338/11 1222/1668/11 +f 1215/1670/13 1217/2339/13 1220/1671/13 +f 1214/1673/11 1219/1667/11 1218/1669/11 +f 1216/1672/2 1220/1671/2 1219/1675/2 +f 1213/1677/1 1218/1685/1 1217/1678/1 +f 1223/1680/14 1224/1688/14 1221/1681/14 +f 1219/1675/2 1220/1671/2 1224/1683/2 +f 1218/1685/1 1222/2340/1 1221/1686/1 +f 1217/1687/328 1221/1681/328 1224/1688/328 +f 1227/1690/12 1228/2341/12 1226/1691/12 +f 1231/1693/14 1232/2342/14 1229/1694/14 +f 1227/1696/13 1229/2343/13 1232/1697/13 +f 1226/1699/11 1231/2344/11 1230/1700/11 +f 1228/1698/2 1232/1697/2 1231/1702/2 +f 1225/1704/1 1230/2345/1 1229/1705/1 +f 1235/1707/12 1236/2346/12 1234/1708/12 +f 1239/1710/14 1240/2347/14 1237/1711/14 +f 1236/1713/2 1240/1720/2 1239/1714/2 +f 1233/1716/1 1238/2348/1 1237/1717/1 +f 1235/1719/13 1237/2349/13 1240/1720/13 +f 1234/1721/11 1239/2350/11 1238/1722/11 +f 1256/1724/13 1253/2351/13 1251/1725/13 +f 1254/1727/11 1255/2352/11 1250/1728/11 +f 1248/1730/13 1245/2353/13 1243/1731/13 +f 1246/1733/11 1247/2354/11 1242/1734/11 +f 1247/1736/2 1248/1730/2 1244/1732/2 +f 1245/1738/1 1246/2355/1 1241/1739/1 +f 1255/1741/2 1256/1724/2 1252/1726/2 +f 1253/1743/1 1254/2356/1 1249/1744/1 +f 1289/1746/11 1294/1805/11 1454/1747/11 +f 1292/1749/13 1296/1803/13 1450/1750/13 +f 1259/1752/13 1263/2357/13 1264/1753/13 +f 1258/1755/11 1262/2358/11 1261/1756/11 +f 1260/1754/2 1264/1753/2 1262/1758/2 +f 1257/1760/1 1261/2359/1 1263/1761/1 +f 1267/1763/13 1271/2360/13 1272/1764/13 +f 1266/1766/11 1270/2361/11 1269/1767/11 +f 1268/1765/2 1272/1764/2 1270/1769/2 +f 1265/1771/1 1269/2362/1 1271/1772/1 +f 1295/1774/14 1296/1925/14 1293/1775/14 +f 1291/1777/12 1292/1926/12 1290/1778/12 +f 1275/1780/13 1279/2363/13 1280/1781/13 +f 1274/1783/11 1278/2364/11 1277/1784/11 +f 1276/1782/2 1280/1781/2 1278/1786/2 +f 1273/1788/1 1277/2365/1 1279/1789/1 +f 1283/1791/13 1287/2366/13 1288/1792/13 +f 1282/1794/11 1286/2367/11 1285/1795/11 +f 1284/1793/2 1288/1792/2 1286/1797/2 +f 1281/1799/1 1285/2368/1 1287/1800/1 +f 1291/1802/13 1293/1936/13 1296/1803/13 +f 1290/1804/11 1295/1929/11 1294/1805/11 +f 1299/1806/12 1300/2369/12 1298/1807/12 +f 1303/1809/14 1304/2370/14 1301/1810/14 +f 1299/1812/13 1301/2371/13 1304/1813/13 +f 1298/1815/11 1303/2372/11 1302/1816/11 +f 1300/1814/2 1304/1813/2 1303/1818/2 +f 1297/1820/1 1302/2373/1 1301/1821/1 +f 1324/1823/11 1315/2374/11 1314/1824/11 +f 1322/1828/2 1325/2375/2 1326/1839/2 +f 1326/1839/2 1327/2376/2 1328/1826/2 +f 1328/1826/2 1323/2377/2 1324/1827/2 +f 1324/1827/2 1321/2378/2 1322/1828/2 +f 1322/1828/2 1326/1839/2 1328/1826/2 +f 1310/1829/12 1309/2379/12 1311/1830/12 +f 1319/1832/14 1316/1848/14 1323/1833/14 +f 1318/1837/1 1313/2380/1 1314/2381/1 +f 1314/2381/1 1315/2382/1 1316/1835/1 +f 1316/1835/1 1319/2383/1 1320/1836/1 +f 1320/1836/1 1317/2384/1 1318/1837/1 +f 1318/1837/1 1314/2381/1 1316/1835/1 +f 1320/1838/13 1327/2376/13 1326/1839/13 +f 1318/1841/15 1317/2385/15 1326/1842/15 +f 1328/1834/329 1327/2386/329 1320/1844/329 +f 1322/1845/16 1321/2387/16 1314/1846/16 +f 1316/1848/330 1315/2388/330 1324/1849/330 +f 1325/1843/12 1322/1845/12 1313/1847/12 +f 1305/1850/14 1306/2389/14 1308/1851/14 +f 1311/1853/11 1305/2390/11 1307/1854/11 +f 1312/1856/1 1307/2391/1 1308/1857/1 +f 1309/1859/2 1306/1863/2 1305/1860/2 +f 1310/1862/13 1308/2392/13 1306/1863/13 +f 1332/1864/329 1340/2393/329 1337/1865/329 +f 1335/1867/11 1336/2394/11 1333/1868/11 +f 1331/1866/14 1333/2395/14 1336/1870/14 +f 1330/1871/12 1335/2396/12 1334/1872/12 +f 1332/1874/2 1336/2397/2 1335/1875/2 +f 1329/1877/1 1334/2398/1 1333/1878/1 +f 1337/1880/13 1340/1884/13 1339/1881/13 +f 1329/1873/15 1338/2399/15 1339/1883/15 +f 1330/1876/331 1339/1881/331 1340/1884/331 +f 1331/1879/332 1337/2400/332 1338/1885/332 +f 1347/1886/11 1348/2401/11 1345/1887/11 +f 1341/1889/14 1345/2402/14 1348/1890/14 +f 1343/1892/12 1347/2403/12 1346/1893/12 +f 1344/1895/2 1348/2404/2 1347/1896/2 +f 1342/1898/1 1346/2405/1 1345/1899/1 +f 1356/1901/333 1354/2406/333 1350/1902/333 +f 1353/1904/334 1355/2407/334 1351/1905/334 +f 1351/1907/13 1355/2408/13 1356/1901/13 +f 1354/1908/11 1353/2409/11 1349/1909/11 +f 1364/1911/335 1362/2410/335 1358/1912/335 +f 1361/1914/336 1363/2411/336 1359/1915/336 +f 1363/1917/13 1364/1911/13 1360/1913/13 +f 1358/1919/11 1362/2412/11 1361/1920/11 +f 1448/1751/2 1450/1750/2 1449/1922/2 +f 1295/1774/337 1449/2413/337 1450/1924/337 +f 1292/1926/338 1448/2414/338 1447/1927/338 +f 1290/1804/11 1447/2415/11 1449/1928/11 +f 1452/1930/1 1454/2416/1 1453/1931/1 +f 1293/1775/339 1453/2417/339 1454/1933/339 +f 1289/1779/340 1452/2418/340 1451/1934/340 +f 1291/1802/13 1451/2419/13 1453/1935/13 +f 1496/1938/14 1495/2420/14 1499/1939/14 +f 1495/2420/14 1497/2421/14 1499/1939/14 +f 1497/2421/14 1498/2422/14 1499/1939/14 +f 1499/1939/14 1500/2423/14 1501/2424/14 +f 1501/2424/14 1502/1937/14 1499/1939/14 +f 1488/1942/14 1487/2425/14 1489/2426/14 +f 1489/2426/14 1490/2427/14 1491/1940/14 +f 1491/1940/14 1492/2428/14 1493/1941/14 +f 1493/1941/14 1494/2429/14 1488/1942/14 +f 1488/1942/14 1489/2426/14 1491/1940/14 +s 1 +f 364/2430/15 371/2431/342 363/2432/12 +f 362/2433/16 369/2434/343 361/2435/11 +f 360/2436/330 367/2437/344 359/2438/14 +f 358/2439/329 365/2440/345 357/2441/13 +f 357/2441/13 372/2442/346 364/2443/15 +f 363/2432/12 370/2444/347 362/2445/16 +f 361/2435/11 368/2446/348 360/2447/330 +f 359/2438/14 366/2448/349 358/2449/329 +f 365/2440/345 379/2450/350 372/2442/346 +f 370/2444/347 378/2451/351 377/2452/352 +f 367/2437/344 374/2453/353 366/2448/349 +f 371/2431/342 379/2454/350 378/2451/351 +f 368/2455/348 375/2456/354 367/2437/344 +f 365/2440/345 374/2457/353 373/2458/331 +f 379/2454/350 385/2459/355 378/2451/351 +f 375/2456/354 383/2460/356 382/2461/357 +f 374/2457/353 380/2462/358 373/2458/331 +f 379/2450/350 380/2462/358 386/2463/359 +f 378/2451/351 384/2464/360 377/2452/352 +f 374/2453/353 382/2461/357 381/2465/361 +f 368/2446/348 369/2434/343 376/2466/362 +f 376/2467/362 369/2468/343 383/2469/356 +f 370/2470/347 377/2471/352 369/2434/343 +f 377/2472/352 384/2473/360 369/2468/343 +f 383/2460/356 390/2474/329 382/2461/357 +f 381/2475/361 388/2476/363 380/2462/358 +f 384/2473/360 387/2477/364 369/2468/343 +f 380/2462/358 394/2478/365 386/2463/359 +f 369/2468/343 391/2479/366 383/2469/356 +f 385/2459/355 392/2480/367 384/2464/360 +f 382/2461/357 389/2481/368 381/2465/361 +f 386/2482/359 393/2483/369 385/2459/355 +f 392/2484/367 395/2485/370 387/2477/364 +f 394/2478/365 396/2486/371 401/2487/372 +f 393/2483/369 399/2488/373 392/2480/367 +f 387/2477/364 398/2489/374 391/2479/366 +f 394/2490/365 400/2491/16 393/2483/369 +f 388/2476/363 397/2492/375 396/2486/371 +f 401/2493/372 407/2494/376 400/2495/16 +f 397/2492/375 403/2496/377 396/2486/371 +f 395/2485/370 406/2497/378 402/2498/379 +f 396/2499/371 408/2500/380 401/2493/372 +f 399/2501/373 407/2494/376 406/2502/378 +f 395/2485/370 405/2503/381 398/2489/374 +f 391/2504/366 398/2505/374 390/2474/329 +f 398/2489/374 405/2503/381 390/2506/329 +f 389/2481/368 390/2474/329 397/2507/375 +f 397/2492/375 390/2508/329 404/2509/382 +f 403/2496/377 412/2510/383 411/2511/384 +f 390/2508/329 412/2510/383 404/2509/382 +f 406/2497/378 410/2512/1 402/2498/379 +f 390/2506/329 413/2513/385 409/2514/386 +f 403/2515/377 416/2516/387 408/2500/380 +f 406/2502/378 415/2517/388 414/2518/389 +f 402/2498/379 413/2513/385 405/2503/381 +f 408/2500/380 415/2517/388 407/2494/376 +f 416/2519/387 418/2520/35 423/2521/390 +f 414/2518/389 422/2522/391 421/2523/392 +f 413/2513/385 417/2524/393 409/2514/386 +f 415/2517/388 423/2525/390 422/2522/391 +f 412/2510/383 418/2526/35 411/2511/384 +f 409/2527/386 419/2528/394 412/2510/383 +f 419/2529/394 425/2530/19 418/2520/35 +f 419/2528/394 424/2531/395 426/2532/396 +f 423/2521/390 425/2530/19 430/2533/397 +f 421/2523/392 429/2534/398 428/2535/399 +f 420/2536/400 424/2531/395 417/2537/393 +f 422/2522/391 430/2538/397 429/2534/398 +f 438/2539/15 445/2540/342 437/2541/12 +f 436/2542/16 443/2543/343 435/2544/11 +f 434/2545/330 441/2546/344 433/2547/14 +f 432/2548/329 439/2549/345 431/2550/13 +f 431/2550/13 446/2551/346 438/2552/15 +f 437/2541/12 444/2553/347 436/2554/16 +f 435/2544/11 442/2555/348 434/2556/330 +f 433/2547/14 440/2557/349 432/2558/329 +f 439/2549/345 453/2559/350 446/2551/346 +f 444/2553/347 452/2560/351 451/2561/352 +f 441/2546/344 448/2562/353 440/2557/349 +f 445/2540/342 453/2563/350 452/2560/351 +f 442/2564/348 449/2565/354 441/2546/344 +f 440/2566/349 447/2567/331 439/2549/345 +f 453/2563/350 459/2568/355 452/2560/351 +f 449/2565/354 457/2569/356 456/2570/357 +f 448/2571/353 454/2572/358 447/2567/331 +f 447/2567/331 460/2573/359 453/2559/350 +f 452/2560/351 458/2574/360 451/2561/352 +f 448/2562/353 456/2570/357 455/2575/361 +f 442/2555/348 443/2543/343 450/2576/362 +f 450/2577/362 443/2578/343 457/2579/356 +f 444/2580/347 451/2581/352 443/2543/343 +f 451/2582/352 458/2583/360 443/2578/343 +f 457/2569/356 464/2584/329 456/2570/357 +f 455/2585/361 462/2586/363 454/2572/358 +f 458/2583/360 461/2587/364 443/2578/343 +f 454/2572/358 468/2588/365 460/2573/359 +f 443/2578/343 465/2589/366 457/2579/356 +f 459/2568/355 466/2590/367 458/2574/360 +f 456/2570/357 463/2591/368 455/2575/361 +f 460/2592/359 467/2593/369 459/2568/355 +f 466/2594/367 469/2595/370 461/2587/364 +f 468/2588/365 470/2596/371 475/2597/372 +f 466/2590/367 474/2598/16 473/2599/373 +f 461/2587/364 472/2600/374 465/2589/366 +f 468/2601/365 474/2598/16 467/2593/369 +f 462/2586/363 471/2602/375 470/2596/371 +f 475/2603/372 481/2604/376 474/2605/16 +f 470/2596/371 478/2606/382 477/2607/377 +f 469/2595/370 480/2608/378 476/2609/379 +f 470/2610/371 482/2611/380 475/2603/372 +f 473/2612/373 481/2604/376 480/2613/378 +f 469/2595/370 479/2614/381 472/2600/374 +f 465/2615/366 472/2616/374 464/2584/329 +f 472/2600/374 479/2614/381 464/2617/329 +f 463/2591/368 464/2584/329 471/2618/375 +f 471/2602/375 464/2619/329 478/2606/382 +f 477/2607/377 486/2620/383 485/2621/384 +f 464/2619/329 486/2620/383 478/2606/382 +f 476/2609/379 488/2622/401 484/2623/1 +f 479/2614/381 483/2624/386 464/2617/329 +f 477/2625/377 490/2626/387 482/2611/380 +f 480/2613/378 489/2627/388 488/2628/401 +f 476/2609/379 487/2629/402 479/2614/381 +f 482/2611/380 489/2627/388 481/2604/376 +f 490/2630/387 492/2631/35 497/2632/390 +f 488/2628/401 496/2633/391 495/2634/392 +f 487/2629/402 491/2635/393 483/2624/386 +f 489/2627/388 497/2636/390 496/2633/391 +f 486/2620/383 492/2637/35 485/2621/384 +f 483/2638/386 493/2639/394 486/2620/383 +f 493/2640/394 499/2641/19 492/2631/35 +f 491/2642/393 500/2643/396 493/2639/394 +f 497/2632/390 499/2641/19 504/2644/397 +f 496/2633/391 502/2645/399 495/2634/392 +f 491/2642/393 501/2646/403 498/2647/395 +f 496/2633/391 504/2648/397 503/2649/398 +f 527/2650/404 520/2651/15 519/2652/12 +f 525/2653/405 518/2654/16 517/2655/11 +f 523/2656/406 516/2657/330 515/2658/14 +f 521/2659/407 514/2660/329 513/2661/13 +f 528/2662/408 513/2661/13 520/2663/15 +f 526/2664/409 519/2652/12 518/2665/16 +f 524/2666/410 517/2655/11 516/2667/330 +f 522/2668/411 515/2658/14 514/2669/329 +f 535/2670/412 521/2671/407 528/2672/408 +f 526/2664/409 534/2673/413 527/2650/404 +f 530/2674/414 523/2656/406 522/2668/411 +f 527/2650/404 535/2675/412 528/2676/408 +f 531/2677/415 524/2678/410 523/2656/406 +f 529/2679/332 522/2680/411 521/2671/407 +f 541/2681/416 535/2675/412 534/2673/413 +f 531/2677/415 539/2682/417 532/2683/418 +f 536/2684/419 530/2685/414 529/2679/332 +f 535/2670/412 536/2684/419 529/2679/332 +f 540/2686/420 534/2673/413 533/2687/421 +f 530/2674/414 538/2688/422 531/2677/415 +f 524/2666/410 532/2689/418 525/2653/405 +f 532/2683/418 539/2682/417 525/2690/405 +f 526/2691/409 525/2653/405 533/2692/421 +f 533/2687/421 525/2693/405 540/2686/420 +f 546/2694/329 539/2682/417 538/2688/422 +f 544/2695/364 537/2696/423 536/2684/419 +f 543/2697/363 540/2698/420 525/2699/405 +f 550/2700/367 536/2684/419 542/2701/424 +f 547/2702/368 525/2699/405 539/2703/417 +f 548/2704/365 541/2681/416 540/2686/420 +f 545/2705/366 538/2688/422 537/2706/423 +f 549/2707/369 542/2708/424 541/2681/416 +f 551/2709/371 548/2710/365 543/2697/363 +f 550/2700/367 552/2711/370 544/2695/364 +f 555/2712/372 549/2707/369 548/2704/365 +f 554/2713/375 543/2697/363 547/2702/368 +f 556/2714/16 550/2715/367 549/2707/369 +f 544/2695/364 553/2716/374 545/2717/366 +f 563/2718/376 557/2719/373 556/2720/16 +f 559/2721/379 553/2716/374 552/2711/370 +f 551/2722/371 562/2723/380 555/2724/372 +f 564/2725/378 552/2711/370 557/2726/373 +f 555/2724/372 563/2718/376 556/2720/16 +f 554/2713/375 558/2727/377 551/2709/371 +f 547/2728/368 546/2694/329 554/2729/375 +f 554/2713/375 546/2730/329 561/2731/382 +f 545/2705/366 553/2732/374 546/2694/329 +f 553/2716/374 560/2733/381 546/2734/329 +f 559/2721/379 568/2735/425 560/2733/381 +f 568/2735/425 546/2734/329 560/2733/381 +f 566/2736/2 562/2723/380 558/2737/377 +f 546/2730/329 569/2738/426 561/2731/382 +f 572/2739/427 559/2721/379 564/2725/378 +f 562/2723/380 571/2740/428 563/2718/376 +f 569/2738/426 558/2727/377 561/2731/382 +f 571/2740/428 564/2741/378 563/2718/376 +f 572/2739/427 574/2742/28 567/2743/429 +f 570/2744/430 578/2745/431 571/2740/428 +f 573/2746/432 569/2738/426 565/2747/433 +f 571/2740/428 579/2748/434 572/2749/427 +f 574/2742/28 568/2735/425 567/2743/429 +f 575/2750/435 565/2751/433 568/2735/425 +f 574/2752/28 582/2753/436 575/2754/435 +f 582/2755/436 573/2746/432 575/2756/435 +f 586/2757/437 574/2752/28 579/2758/434 +f 577/2759/438 585/2760/439 578/2745/431 +f 580/2761/440 576/2762/441 573/2746/432 +f 578/2745/431 586/2763/437 579/2748/434 +f 601/2764/404 594/2765/15 593/2766/12 +f 599/2767/405 592/2768/16 591/2769/11 +f 597/2770/406 590/2771/330 589/2772/14 +f 595/2773/407 588/2774/329 587/2775/13 +f 602/2776/408 587/2775/13 594/2777/15 +f 600/2778/409 593/2766/12 592/2779/16 +f 598/2780/410 591/2769/11 590/2781/330 +f 596/2782/411 589/2772/14 588/2783/329 +f 609/2784/412 595/2785/407 602/2786/408 +f 600/2778/409 608/2787/413 601/2764/404 +f 604/2788/414 597/2770/406 596/2782/411 +f 601/2764/404 609/2789/412 602/2790/408 +f 605/2791/415 598/2792/410 597/2770/406 +f 603/2793/332 596/2794/411 595/2785/407 +f 615/2795/416 609/2789/412 608/2787/413 +f 605/2791/415 613/2796/417 606/2797/418 +f 610/2798/419 604/2799/414 603/2793/332 +f 609/2784/412 610/2798/419 603/2793/332 +f 614/2800/420 608/2787/413 607/2801/421 +f 604/2788/414 612/2802/422 605/2791/415 +f 598/2780/410 606/2803/418 599/2767/405 +f 606/2797/418 613/2796/417 599/2804/405 +f 600/2805/409 599/2767/405 607/2806/421 +f 607/2801/421 599/2807/405 614/2800/420 +f 620/2808/329 613/2796/417 612/2802/422 +f 618/2809/364 611/2810/423 610/2798/419 +f 617/2811/363 614/2812/420 599/2813/405 +f 624/2814/367 610/2798/419 616/2815/424 +f 621/2816/368 599/2813/405 613/2817/417 +f 622/2818/365 615/2795/416 614/2800/420 +f 619/2819/366 612/2802/422 611/2820/423 +f 623/2821/369 616/2822/424 615/2795/416 +f 625/2823/371 622/2824/365 617/2811/363 +f 624/2814/367 626/2825/370 618/2809/364 +f 622/2818/365 630/2826/16 623/2821/369 +f 628/2827/375 617/2811/363 621/2816/368 +f 623/2821/369 631/2828/373 624/2829/367 +f 618/2809/364 627/2830/374 619/2831/366 +f 637/2832/376 631/2833/373 630/2834/16 +f 633/2835/379 627/2830/374 626/2825/370 +f 625/2836/371 636/2837/380 629/2838/372 +f 638/2839/378 626/2825/370 631/2840/373 +f 629/2838/372 637/2832/376 630/2834/16 +f 635/2841/382 625/2823/371 628/2827/375 +f 621/2842/368 620/2808/329 628/2843/375 +f 628/2827/375 620/2844/329 635/2841/382 +f 619/2819/366 627/2845/374 620/2808/329 +f 627/2830/374 634/2846/381 620/2847/329 +f 633/2835/379 642/2848/425 634/2846/381 +f 642/2848/425 620/2847/329 634/2846/381 +f 632/2849/377 644/2850/442 636/2837/380 +f 639/2851/433 635/2841/382 620/2844/329 +f 646/2852/427 633/2835/379 638/2839/378 +f 636/2837/380 645/2853/428 637/2832/376 +f 643/2854/443 632/2855/377 635/2841/382 +f 645/2853/428 638/2856/378 637/2832/376 +f 646/2852/427 648/2857/28 641/2858/429 +f 651/2859/438 645/2853/428 644/2850/442 +f 647/2860/432 643/2854/443 639/2851/433 +f 645/2853/428 653/2861/434 646/2862/427 +f 648/2857/28 642/2848/425 641/2858/429 +f 649/2863/435 639/2864/433 642/2848/425 +f 648/2865/28 656/2866/436 649/2867/435 +f 649/2868/435 654/2869/440 647/2860/432 +f 660/2870/437 648/2865/28 653/2871/434 +f 651/2859/438 659/2872/439 652/2873/431 +f 654/2869/440 650/2874/441 647/2860/432 +f 652/2873/431 660/2875/437 653/2861/434 +f 1377/2876/444 1370/2877/16 1369/2878/11 +f 1375/2879/445 1368/2880/330 1367/2881/14 +f 1373/2882/446 1366/2883/329 1365/2884/13 +f 1380/2885/447 1365/2884/13 1372/2886/15 +f 1378/2887/448 1371/2888/12 1370/2889/16 +f 1376/2890/449 1369/2878/11 1368/2891/330 +f 1374/2892/450 1367/2881/14 1366/2893/329 +f 1379/2894/37 1372/2895/15 1371/2888/12 +f 1380/2885/447 1381/2896/432 1373/2882/446 +f 1377/2876/444 1384/2897/434 1385/2898/431 +f 1375/2879/445 1382/2899/435 1383/2900/28 +f 1378/2901/448 1385/2898/431 1386/2902/451 +f 1376/2903/449 1383/2900/28 1384/2904/434 +f 1374/2905/450 1381/2896/432 1382/2906/435 +f 1386/2902/451 1392/2907/428 1393/2908/452 +f 1384/2909/434 1390/2910/429 1391/2911/427 +f 1381/2912/432 1389/2913/425 1382/2914/435 +f 1387/2915/453 1388/2916/433 1381/2896/432 +f 1384/2897/434 1392/2907/428 1385/2898/431 +f 1382/2914/435 1390/2910/429 1383/2917/28 +f 1379/2894/37 1387/2918/453 1380/2919/447 +f 1387/2915/453 1379/2920/37 1394/2921/454 +f 1378/2887/448 1386/2922/451 1379/2894/37 +f 1386/2922/451 1393/2923/452 1379/2894/37 +f 1390/2910/429 1399/2924/455 1391/2911/427 +f 1388/2925/433 1397/2926/456 1389/2913/425 +f 1393/2908/452 1395/2927/457 1379/2928/37 +f 1394/2921/454 1396/2929/458 1388/2916/433 +f 1379/2920/37 1402/2930/459 1394/2921/454 +f 1391/2931/427 1400/2932/330 1392/2907/428 +f 1389/2913/425 1398/2933/460 1390/2910/429 +f 1392/2907/428 1401/2934/461 1393/2908/452 +f 1395/2927/457 1408/2935/462 1403/2936/463 +f 1402/2930/459 1404/2937/15 1396/2929/458 +f 1397/2926/456 1406/2938/464 1398/2933/460 +f 1395/2939/457 1409/2940/465 1402/2930/459 +f 1398/2933/460 1407/2941/466 1399/2924/455 +f 1396/2942/458 1405/2943/467 1397/2926/456 +f 1407/2941/466 1413/2944/468 1414/2945/469 +f 1405/2946/467 1411/2947/470 1412/2948/471 +f 1403/2949/463 1415/2950/472 1410/2951/473 +f 1409/2952/465 1411/2947/470 1404/2953/15 +f 1406/2938/464 1412/2954/471 1413/2944/468 +f 1403/2949/463 1416/2955/474 1409/2940/465 +f 1399/2956/455 1407/2957/466 1400/2932/330 +f 1407/2958/466 1414/2959/469 1400/2960/330 +f 1400/2932/330 1408/2935/462 1401/2934/461 +f 1408/2961/462 1400/2960/330 1415/2962/472 +f 1411/2947/470 1420/2963/475 1412/2948/471 +f 1400/2960/330 1423/2964/476 1415/2962/472 +f 1415/2950/472 1418/2965/331 1410/2951/473 +f 1414/2959/469 1417/2966/477 1400/2960/330 +f 1416/2967/474 1419/2968/478 1411/2947/470 +f 1412/2954/471 1421/2969/479 1413/2944/468 +f 1410/2951/473 1424/2970/480 1416/2955/474 +f 1413/2944/468 1422/2971/481 1414/2945/469 +f 1424/2972/480 1426/2973/482 1419/2968/478 +f 1420/2974/475 1428/2975/343 1421/2969/479 +f 1422/2976/481 1425/2977/483 1417/2966/477 +f 1421/2969/479 1429/2978/484 1422/2971/481 +f 1420/2963/475 1426/2973/482 1427/2979/485 +f 1417/2966/477 1430/2980/486 1423/2964/476 +f 1426/2973/482 1434/2981/487 1427/2979/485 +f 1425/2977/483 1437/2982/488 1430/2980/486 +f 1431/2983/489 1433/2984/490 1426/2973/482 +f 1427/2985/485 1435/2986/491 1428/2987/343 +f 1425/2977/483 1436/2988/492 1432/2989/493 +f 1429/2990/484 1435/2986/491 1436/2991/492 +f 1423/2992/476 1430/2993/486 1418/2965/331 +f 1430/2993/486 1437/2994/488 1418/2965/331 +f 1418/2965/331 1431/2995/489 1424/2970/480 +f 1431/2995/489 1418/2965/331 1438/2996/494 +f 1418/2965/331 1446/2997/15 1438/2996/494 +f 1432/2989/493 1445/2998/329 1437/2982/488 +f 1437/2994/488 1439/2999/13 1418/2965/331 +f 1438/3000/494 1441/3001/12 1433/2984/490 +f 1434/3002/487 1443/3003/11 1435/2986/491 +f 1436/2988/492 1440/3004/14 1432/2989/493 +f 1435/2986/491 1444/3005/330 1436/2991/492 +f 1433/2984/490 1442/3006/16 1434/2981/487 +f 1479/3007/13 1470/3008/331 1463/3009/13 +f 1480/3010/332 1463/3011/13 1464/3012/332 +f 1473/3013/1 1456/3014/332 1457/3015/1 +f 1481/3016/1 1464/3012/332 1465/3017/1 +f 1474/3018/343 1457/3015/1 1458/3019/343 +f 1482/3020/343 1465/3017/1 1466/3021/343 +f 1475/3022/11 1458/3023/343 1459/3024/11 +f 1483/3025/11 1466/3026/343 1467/3027/11 +f 1476/3028/405 1459/3024/11 1460/3029/405 +f 1484/3030/405 1467/3027/11 1468/3031/405 +f 1477/3032/2 1460/3029/405 1461/3033/2 +f 1485/3034/2 1468/3031/405 1469/3035/2 +f 1478/3036/331 1461/3037/2 1462/3038/331 +f 1486/3039/331 1469/3040/2 1470/3008/331 +f 1471/3041/13 1462/3038/331 1455/3042/13 +f 1472/3043/332 1455/3044/13 1456/3014/332 +f 1471/3041/329 1494/3045/495 1478/3036/495 +f 1485/3046/35 1502/1937/495 1501/2424/35 +f 1471/3047/329 1487/2425/496 1488/1942/329 +f 1479/3007/329 1502/3048/495 1486/3039/495 +f 1480/3049/496 1496/1938/329 1479/3050/329 +f 1473/3013/28 1487/3051/496 1472/3043/496 +f 1480/3010/496 1497/3052/28 1495/3053/496 +f 1473/3054/28 1490/2427/497 1489/2426/28 +f 1482/3055/497 1497/2421/28 1481/3056/28 +f 1475/3057/330 1490/2427/497 1474/3058/497 +f 1483/3059/330 1498/2422/497 1482/3055/497 +f 1475/3057/330 1492/2428/498 1491/1940/330 +f 1483/3059/330 1500/2423/498 1499/1939/330 +f 1477/3060/35 1492/2428/498 1476/3061/498 +f 1485/3046/35 1500/2423/498 1484/3062/498 +f 1477/3060/35 1494/2429/495 1493/1941/35 +f 364/2430/15 372/3063/346 371/2431/342 +f 362/2433/16 370/2470/347 369/2434/343 +f 360/2436/330 368/2455/348 367/2437/344 +f 358/2439/329 366/3064/349 365/2440/345 +f 357/2441/13 365/2440/345 372/2442/346 +f 363/2432/12 371/2431/342 370/2444/347 +f 361/2435/11 369/2434/343 368/2446/348 +f 359/2438/14 367/2437/344 366/2448/349 +f 365/2440/345 373/2458/331 379/2450/350 +f 370/2444/347 371/2431/342 378/2451/351 +f 367/2437/344 375/2456/354 374/2453/353 +f 371/2431/342 372/3063/346 379/2454/350 +f 368/2455/348 376/3065/362 375/2456/354 +f 365/2440/345 366/3064/349 374/2457/353 +f 379/2454/350 386/2482/359 385/2459/355 +f 375/2456/354 376/3065/362 383/2460/356 +f 374/2457/353 381/2475/361 380/2462/358 +f 379/2450/350 373/2458/331 380/2462/358 +f 378/2451/351 385/2459/355 384/2464/360 +f 374/2453/353 375/2456/354 382/2461/357 +f 383/2460/356 391/2504/366 390/2474/329 +f 381/2475/361 389/3066/368 388/2476/363 +f 384/2473/360 392/2484/367 387/2477/364 +f 380/2462/358 388/2476/363 394/2478/365 +f 369/2468/343 387/2477/364 391/2479/366 +f 385/2459/355 393/2483/369 392/2480/367 +f 382/2461/357 390/2474/329 389/2481/368 +f 386/2482/359 394/2490/365 393/2483/369 +f 392/2484/367 399/3067/373 395/2485/370 +f 394/2478/365 388/2476/363 396/2486/371 +f 393/2483/369 400/2491/16 399/2488/373 +f 387/2477/364 395/2485/370 398/2489/374 +f 394/2490/365 401/3068/372 400/2491/16 +f 388/2476/363 389/3066/368 397/2492/375 +f 401/2493/372 408/2500/380 407/2494/376 +f 397/2492/375 404/2509/382 403/2496/377 +f 395/2485/370 399/3067/373 406/2497/378 +f 396/2499/371 403/2515/377 408/2500/380 +f 399/2501/373 400/2495/16 407/2494/376 +f 395/2485/370 402/2498/379 405/2503/381 +f 403/2496/377 404/2509/382 412/2510/383 +f 390/2508/329 409/2527/386 412/2510/383 +f 406/2497/378 414/3069/389 410/2512/1 +f 390/2506/329 405/2503/381 413/2513/385 +f 403/2515/377 411/3070/384 416/2516/387 +f 406/2502/378 407/2494/376 415/2517/388 +f 402/2498/379 410/2512/1 413/2513/385 +f 408/2500/380 416/2516/387 415/2517/388 +f 416/2519/387 411/3071/384 418/2520/35 +f 414/2518/389 415/2517/388 422/2522/391 +f 413/2513/385 420/3072/400 417/2524/393 +f 415/2517/388 416/2516/387 423/2525/390 +f 412/2510/383 419/2528/394 418/2526/35 +f 409/2527/386 417/2537/393 419/2528/394 +f 419/2529/394 426/3073/396 425/2530/19 +f 419/2528/394 417/2537/393 424/2531/395 +f 423/2521/390 418/2520/35 425/2530/19 +f 421/2523/392 422/2522/391 429/2534/398 +f 420/2536/400 427/3074/403 424/2531/395 +f 422/2522/391 423/2525/390 430/2538/397 +f 438/2539/15 446/3075/346 445/2540/342 +f 436/2542/16 444/2580/347 443/2543/343 +f 434/2545/330 442/2564/348 441/2546/344 +f 432/2548/329 440/2566/349 439/2549/345 +f 431/2550/13 439/2549/345 446/2551/346 +f 437/2541/12 445/2540/342 444/2553/347 +f 435/2544/11 443/2543/343 442/2555/348 +f 433/2547/14 441/2546/344 440/2557/349 +f 439/2549/345 447/2567/331 453/2559/350 +f 444/2553/347 445/2540/342 452/2560/351 +f 441/2546/344 449/2565/354 448/2562/353 +f 445/2540/342 446/3075/346 453/2563/350 +f 442/2564/348 450/3076/362 449/2565/354 +f 440/2566/349 448/2571/353 447/2567/331 +f 453/2563/350 460/2592/359 459/2568/355 +f 449/2565/354 450/3076/362 457/2569/356 +f 448/2571/353 455/2585/361 454/2572/358 +f 447/2567/331 454/2572/358 460/2573/359 +f 452/2560/351 459/2568/355 458/2574/360 +f 448/2562/353 449/2565/354 456/2570/357 +f 457/2569/356 465/2615/366 464/2584/329 +f 455/2585/361 463/3077/368 462/2586/363 +f 458/2583/360 466/2594/367 461/2587/364 +f 454/2572/358 462/2586/363 468/2588/365 +f 443/2578/343 461/2587/364 465/2589/366 +f 459/2568/355 467/2593/369 466/2590/367 +f 456/2570/357 464/2584/329 463/2591/368 +f 460/2592/359 468/2601/365 467/2593/369 +f 466/2594/367 473/3078/373 469/2595/370 +f 468/2588/365 462/2586/363 470/2596/371 +f 466/2590/367 467/2593/369 474/2598/16 +f 461/2587/364 469/2595/370 472/2600/374 +f 468/2601/365 475/3079/372 474/2598/16 +f 462/2586/363 463/3077/368 471/2602/375 +f 475/2603/372 482/2611/380 481/2604/376 +f 470/2596/371 471/2602/375 478/2606/382 +f 469/2595/370 473/3078/373 480/2608/378 +f 470/2610/371 477/2625/377 482/2611/380 +f 473/2612/373 474/2605/16 481/2604/376 +f 469/2595/370 476/2609/379 479/2614/381 +f 477/2607/377 478/2606/382 486/2620/383 +f 464/2619/329 483/2638/386 486/2620/383 +f 476/2609/379 480/2608/378 488/2622/401 +f 479/2614/381 487/2629/402 483/2624/386 +f 477/2625/377 485/3080/384 490/2626/387 +f 480/2613/378 481/2604/376 489/2627/388 +f 476/2609/379 484/2623/1 487/2629/402 +f 482/2611/380 490/2626/387 489/2627/388 +f 490/2630/387 485/3081/384 492/2631/35 +f 488/2628/401 489/2627/388 496/2633/391 +f 487/2629/402 494/3082/400 491/2635/393 +f 489/2627/388 490/2626/387 497/2636/390 +f 486/2620/383 493/2639/394 492/2637/35 +f 483/2638/386 491/2642/393 493/2639/394 +f 493/2640/394 500/3083/396 499/2641/19 +f 491/2642/393 498/2647/395 500/2643/396 +f 497/2632/390 492/2631/35 499/2641/19 +f 496/2633/391 503/2649/398 502/2645/399 +f 491/2642/393 494/3084/400 501/2646/403 +f 496/2633/391 497/2636/390 504/2648/397 +f 527/2650/404 528/2676/408 520/2651/15 +f 525/2653/405 526/2691/409 518/2654/16 +f 523/2656/406 524/2678/410 516/2657/330 +f 521/2659/407 522/3085/411 514/2660/329 +f 528/2662/408 521/2659/407 513/2661/13 +f 526/2664/409 527/2650/404 519/2652/12 +f 524/2666/410 525/2653/405 517/2655/11 +f 522/2668/411 523/2656/406 515/2658/14 +f 535/2670/412 529/2679/332 521/2671/407 +f 526/2664/409 533/2687/421 534/2673/413 +f 530/2674/414 531/2677/415 523/2656/406 +f 527/2650/404 534/2673/413 535/2675/412 +f 531/2677/415 532/2683/418 524/2678/410 +f 529/2679/332 530/2685/414 522/2680/411 +f 541/2681/416 542/2708/424 535/2675/412 +f 531/2677/415 538/2688/422 539/2682/417 +f 536/2684/419 537/2696/423 530/2685/414 +f 535/2670/412 542/2701/424 536/2684/419 +f 540/2686/420 541/2681/416 534/2673/413 +f 530/2674/414 537/2706/423 538/2688/422 +f 546/2694/329 547/2728/368 539/2682/417 +f 544/2695/364 545/2717/366 537/2696/423 +f 543/2697/363 548/2710/365 540/2698/420 +f 550/2700/367 544/2695/364 536/2684/419 +f 547/2702/368 543/2697/363 525/2699/405 +f 548/2704/365 549/2707/369 541/2681/416 +f 545/2705/366 546/2694/329 538/2688/422 +f 549/2707/369 550/2715/367 542/2708/424 +f 551/2709/371 555/3086/372 548/2710/365 +f 550/2700/367 557/2726/373 552/2711/370 +f 555/2712/372 556/2714/16 549/2707/369 +f 554/2713/375 551/2709/371 543/2697/363 +f 556/2714/16 557/3087/373 550/2715/367 +f 544/2695/364 552/2711/370 553/2716/374 +f 563/2718/376 564/2741/378 557/2719/373 +f 559/2721/379 560/2733/381 553/2716/374 +f 551/2722/371 558/2737/377 562/2723/380 +f 564/2725/378 559/2721/379 552/2711/370 +f 555/2724/372 562/2723/380 563/2718/376 +f 554/2713/375 561/2731/382 558/2727/377 +f 559/2721/379 567/2743/429 568/2735/425 +f 568/2735/425 565/2751/433 546/2734/329 +f 566/2736/2 570/2744/430 562/2723/380 +f 546/2730/329 565/2747/433 569/2738/426 +f 572/2739/427 567/2743/429 559/2721/379 +f 562/2723/380 570/2744/430 571/2740/428 +f 569/2738/426 566/3088/2 558/2727/377 +f 571/2740/428 572/2749/427 564/2741/378 +f 572/2739/427 579/3089/434 574/2742/28 +f 570/2744/430 577/2759/438 578/2745/431 +f 573/2746/432 576/2762/441 569/2738/426 +f 571/2740/428 578/2745/431 579/2748/434 +f 574/2742/28 575/2750/435 568/2735/425 +f 575/2750/435 573/3090/432 565/2751/433 +f 574/2752/28 581/3091/24 582/2753/436 +f 582/2755/436 580/2761/440 573/2746/432 +f 586/2757/437 581/3091/24 574/2752/28 +f 577/2759/438 584/3092/499 585/2760/439 +f 580/2761/440 583/3093/500 576/2762/441 +f 578/2745/431 585/2760/439 586/2763/437 +f 601/2764/404 602/2790/408 594/2765/15 +f 599/2767/405 600/2805/409 592/2768/16 +f 597/2770/406 598/2792/410 590/2771/330 +f 595/2773/407 596/3094/411 588/2774/329 +f 602/2776/408 595/2773/407 587/2775/13 +f 600/2778/409 601/2764/404 593/2766/12 +f 598/2780/410 599/2767/405 591/2769/11 +f 596/2782/411 597/2770/406 589/2772/14 +f 609/2784/412 603/2793/332 595/2785/407 +f 600/2778/409 607/2801/421 608/2787/413 +f 604/2788/414 605/2791/415 597/2770/406 +f 601/2764/404 608/2787/413 609/2789/412 +f 605/2791/415 606/2797/418 598/2792/410 +f 603/2793/332 604/2799/414 596/2794/411 +f 615/2795/416 616/2822/424 609/2789/412 +f 605/2791/415 612/2802/422 613/2796/417 +f 610/2798/419 611/2810/423 604/2799/414 +f 609/2784/412 616/2815/424 610/2798/419 +f 614/2800/420 615/2795/416 608/2787/413 +f 604/2788/414 611/2820/423 612/2802/422 +f 620/2808/329 621/2842/368 613/2796/417 +f 618/2809/364 619/2831/366 611/2810/423 +f 617/2811/363 622/2824/365 614/2812/420 +f 624/2814/367 618/2809/364 610/2798/419 +f 621/2816/368 617/2811/363 599/2813/405 +f 622/2818/365 623/2821/369 615/2795/416 +f 619/2819/366 620/2808/329 612/2802/422 +f 623/2821/369 624/2829/367 616/2822/424 +f 625/2823/371 629/3095/372 622/2824/365 +f 624/2814/367 631/2840/373 626/2825/370 +f 622/2818/365 629/3096/372 630/2826/16 +f 628/2827/375 625/2823/371 617/2811/363 +f 623/2821/369 630/2826/16 631/2828/373 +f 618/2809/364 626/2825/370 627/2830/374 +f 637/2832/376 638/2856/378 631/2833/373 +f 633/2835/379 634/2846/381 627/2830/374 +f 625/2836/371 632/2849/377 636/2837/380 +f 638/2839/378 633/2835/379 626/2825/370 +f 629/2838/372 636/2837/380 637/2832/376 +f 635/2841/382 632/2855/377 625/2823/371 +f 633/2835/379 641/2858/429 642/2848/425 +f 642/2848/425 639/2864/433 620/2847/329 +f 632/2849/377 640/3097/2 644/2850/442 +f 639/2851/433 643/2854/443 635/2841/382 +f 646/2852/427 641/2858/429 633/2835/379 +f 636/2837/380 644/2850/442 645/2853/428 +f 643/2854/443 640/3098/2 632/2855/377 +f 645/2853/428 646/2862/427 638/2856/378 +f 646/2852/427 653/3099/434 648/2857/28 +f 651/2859/438 652/2873/431 645/2853/428 +f 647/2860/432 650/2874/441 643/2854/443 +f 645/2853/428 652/2873/431 653/2861/434 +f 648/2857/28 649/2863/435 642/2848/425 +f 649/2863/435 647/3100/432 639/2864/433 +f 648/2865/28 655/3101/24 656/2866/436 +f 649/2868/435 656/3102/436 654/2869/440 +f 660/2870/437 655/3101/24 648/2865/28 +f 651/2859/438 658/3103/499 659/2872/439 +f 654/2869/440 657/3104/500 650/2874/441 +f 652/2873/431 659/2872/439 660/2875/437 +f 1377/2876/444 1378/2901/448 1370/2877/16 +f 1375/2879/445 1376/2903/449 1368/2880/330 +f 1373/2882/446 1374/2905/450 1366/2883/329 +f 1380/2885/447 1373/2882/446 1365/2884/13 +f 1378/2887/448 1379/2894/37 1371/2888/12 +f 1376/2890/449 1377/2876/444 1369/2878/11 +f 1374/2892/450 1375/2879/445 1367/2881/14 +f 1379/2894/37 1380/2919/447 1372/2895/15 +f 1380/2885/447 1387/2915/453 1381/2896/432 +f 1377/2876/444 1376/2890/449 1384/2897/434 +f 1375/2879/445 1374/2892/450 1382/2899/435 +f 1378/2901/448 1377/2876/444 1385/2898/431 +f 1376/2903/449 1375/2879/445 1383/2900/28 +f 1374/2905/450 1373/2882/446 1381/2896/432 +f 1386/2902/451 1385/2898/431 1392/2907/428 +f 1384/2909/434 1383/2917/28 1390/2910/429 +f 1381/2912/432 1388/2925/433 1389/2913/425 +f 1387/2915/453 1394/2921/454 1388/2916/433 +f 1384/2897/434 1391/2931/427 1392/2907/428 +f 1382/2914/435 1389/2913/425 1390/2910/429 +f 1390/2910/429 1398/2933/460 1399/2924/455 +f 1388/2925/433 1396/2942/458 1397/2926/456 +f 1393/2908/452 1401/2934/461 1395/2927/457 +f 1394/2921/454 1402/2930/459 1396/2929/458 +f 1379/2920/37 1395/2939/457 1402/2930/459 +f 1391/2931/427 1399/2956/455 1400/2932/330 +f 1389/2913/425 1397/2926/456 1398/2933/460 +f 1392/2907/428 1400/2932/330 1401/2934/461 +f 1395/2927/457 1401/2934/461 1408/2935/462 +f 1402/2930/459 1409/2940/465 1404/2937/15 +f 1397/2926/456 1405/2943/467 1406/2938/464 +f 1395/2939/457 1403/2949/463 1409/2940/465 +f 1398/2933/460 1406/2938/464 1407/2941/466 +f 1396/2942/458 1404/3105/15 1405/2943/467 +f 1407/2941/466 1406/2938/464 1413/2944/468 +f 1405/2946/467 1404/2953/15 1411/2947/470 +f 1403/2949/463 1408/3106/462 1415/2950/472 +f 1409/2952/465 1416/2967/474 1411/2947/470 +f 1406/2938/464 1405/2943/467 1412/2954/471 +f 1403/2949/463 1410/2951/473 1416/2955/474 +f 1411/2947/470 1419/2968/478 1420/2963/475 +f 1400/2960/330 1417/2966/477 1423/2964/476 +f 1415/2950/472 1423/2992/476 1418/2965/331 +f 1414/2959/469 1422/2976/481 1417/2966/477 +f 1416/2967/474 1424/2972/480 1419/2968/478 +f 1412/2954/471 1420/2974/475 1421/2969/479 +f 1410/2951/473 1418/2965/331 1424/2970/480 +f 1413/2944/468 1421/2969/479 1422/2971/481 +f 1424/2972/480 1431/2983/489 1426/2973/482 +f 1420/2974/475 1427/3107/485 1428/2975/343 +f 1422/2976/481 1429/3108/484 1425/2977/483 +f 1421/2969/479 1428/2975/343 1429/2978/484 +f 1420/2963/475 1419/2968/478 1426/2973/482 +f 1417/2966/477 1425/2977/483 1430/2980/486 +f 1426/2973/482 1433/2984/490 1434/2981/487 +f 1425/2977/483 1432/2989/493 1437/2982/488 +f 1431/2983/489 1438/3000/494 1433/2984/490 +f 1427/2985/485 1434/3002/487 1435/2986/491 +f 1425/2977/483 1429/3108/484 1436/2988/492 +f 1429/2990/484 1428/2987/343 1435/2986/491 +f 1418/2965/331 1439/2999/13 1446/2997/15 +f 1432/2989/493 1440/3004/14 1445/2998/329 +f 1437/2994/488 1445/3109/329 1439/2999/13 +f 1438/3000/494 1446/3110/15 1441/3001/12 +f 1434/3002/487 1442/3111/16 1443/3003/11 +f 1436/2988/492 1444/3112/330 1440/3004/14 +f 1435/2986/491 1443/3003/11 1444/3005/330 +f 1433/2984/490 1441/3001/12 1442/3006/16 +f 1479/3007/13 1486/3039/331 1470/3008/331 +f 1480/3010/332 1479/3113/13 1463/3011/13 +f 1473/3013/1 1472/3043/332 1456/3014/332 +f 1481/3016/1 1480/3010/332 1464/3012/332 +f 1474/3018/343 1473/3013/1 1457/3015/1 +f 1482/3020/343 1481/3016/1 1465/3017/1 +f 1475/3022/11 1474/3114/343 1458/3023/343 +f 1483/3025/11 1482/3115/343 1466/3026/343 +f 1476/3028/405 1475/3022/11 1459/3024/11 +f 1484/3030/405 1483/3025/11 1467/3027/11 +f 1477/3032/2 1476/3028/405 1460/3029/405 +f 1485/3034/2 1484/3030/405 1468/3031/405 +f 1478/3036/331 1477/3116/2 1461/3037/2 +f 1486/3039/331 1485/3117/2 1469/3040/2 +f 1471/3041/13 1478/3036/331 1462/3038/331 +f 1472/3043/332 1471/3118/13 1455/3044/13 +f 1471/3041/329 1488/3119/329 1494/3045/495 +f 1485/3046/35 1486/3120/495 1502/1937/495 +f 1471/3047/329 1472/3121/496 1487/2425/496 +f 1479/3007/329 1496/3122/329 1502/3048/495 +f 1480/3049/496 1495/2420/496 1496/1938/329 +f 1473/3013/28 1489/3123/28 1487/3051/496 +f 1480/3010/496 1481/3016/28 1497/3052/28 +f 1473/3054/28 1474/3058/497 1490/2427/497 +f 1482/3055/497 1498/2422/497 1497/2421/28 +f 1475/3057/330 1491/1940/330 1490/2427/497 +f 1483/3059/330 1499/1939/330 1498/2422/497 +f 1475/3057/330 1476/3061/498 1492/2428/498 +f 1483/3059/330 1484/3062/498 1500/2423/498 +f 1477/3060/35 1493/1941/35 1492/2428/498 +f 1485/3046/35 1501/2424/35 1500/2423/498 +f 1477/3060/35 1478/3124/495 1494/2429/495 diff --git a/src/main/resources/assets/hbm/models/weapons/UAC pistol.obj b/src/main/resources/assets/hbm/models/weapons/UAC pistol.obj new file mode 100644 index 000000000..0a7aa02dd --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/UAC pistol.obj @@ -0,0 +1,9409 @@ +# Blender 3.6.1 +# www.blender.org +mtllib UAC pistol.mtl +o bool_obj_bool_obj_data.002 +v -0.395192 7.596701 -3.479156 +v 0.584592 7.596701 -3.479156 +v 0.584592 6.166869 -3.479156 +v -0.395192 6.166869 -3.479156 +v -0.395192 8.736673 -5.713195 +v 0.584592 8.736673 -5.713195 +v -0.395192 9.164925 -5.571519 +v 0.584592 9.164925 -5.571519 +v -0.395192 9.566045 -5.817651 +v 0.584592 9.566045 -5.817651 +v -0.395192 9.328085 -6.240386 +v 0.584592 9.328085 -6.240386 +v -0.395192 8.650138 -6.472074 +v 0.584592 8.650138 -6.472074 +v -0.395192 8.023209 -6.974555 +v 0.584592 8.023209 -6.974555 +v -0.395192 7.262578 -7.039774 +v 0.584592 7.262578 -7.039774 +v -0.395192 7.029797 -6.702054 +v 0.584592 7.029797 -6.702054 +v -0.395192 7.269280 -6.422195 +v 0.584592 7.269280 -6.422195 +v -0.395192 7.572928 -6.422195 +v 0.584592 7.572928 -6.422195 +v -0.395192 8.226030 -6.011785 +v 0.584592 8.226030 -6.011785 +v -0.395192 6.903951 -4.234125 +v 0.584592 6.903951 -4.234125 +v -0.395192 6.148036 -4.191928 +v 0.584592 6.148036 -4.191928 +v -0.395192 7.596701 -3.479156 +v 0.584592 7.596701 -3.479156 +v 0.584592 6.166869 -3.479156 +v -0.395192 6.166869 -3.479156 +v -0.395192 8.736673 -5.713195 +v 0.584592 8.736673 -5.713195 +v -0.395192 9.164925 -5.571519 +v 0.584592 9.164925 -5.571519 +v -0.395192 9.566045 -5.817651 +v 0.584592 9.566045 -5.817651 +v -0.395192 9.328085 -6.240386 +v 0.584592 9.328085 -6.240386 +v -0.395192 8.650138 -6.472074 +v 0.584592 8.650138 -6.472074 +v -0.395192 8.023209 -6.974555 +v 0.584592 8.023209 -6.974555 +v -0.395192 7.262578 -7.039774 +v 0.584592 7.262578 -7.039774 +v -0.395192 7.029797 -6.702054 +v 0.584592 7.029797 -6.702054 +v -0.395192 7.269280 -6.422195 +v 0.584592 7.269280 -6.422195 +v -0.395192 7.572928 -6.422195 +v 0.584592 7.572928 -6.422195 +v -0.395192 8.226030 -6.011785 +v 0.584592 8.226030 -6.011785 +v -0.395192 6.903951 -4.234125 +v 0.584592 6.903951 -4.234125 +v -0.395192 6.148036 -4.191928 +v 0.584592 6.148036 -4.191928 +vn 1.0000 -0.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 0.5222 0.8528 +vn -0.0000 -0.6977 0.7164 +vn -0.0000 0.3799 0.9250 +vn -0.0000 0.1152 0.9933 +vn -0.0000 0.9679 0.2511 +vn -0.0000 0.6394 -0.7689 +vn -0.0000 0.4816 -0.8764 +vn -0.0000 0.3715 -0.9284 +vn -0.0000 -0.4267 -0.9044 +vn -0.0000 -0.9986 0.0521 +vn -0.0000 -0.4182 0.9083 +vn -0.0000 -0.2769 0.9609 +vn -0.0000 -0.9829 0.1841 +vn -0.0000 -0.4738 -0.8807 +vn -0.0000 -0.7356 -0.6775 +vt 0.382588 0.627146 +vt 0.395485 0.647711 +s 0 +f 22/1/1 20/1/1 18/1/1 +f 17/1/2 21/1/2 23/1/2 +f 25/1/2 15/1/2 23/1/2 +f 16/1/1 26/1/1 24/1/1 +f 14/1/1 6/1/1 26/1/1 +f 13/1/2 25/1/2 5/1/2 +f 5/1/2 11/1/2 13/1/2 +f 12/1/1 6/1/1 14/1/1 +f 7/1/2 9/1/2 11/1/2 +f 12/1/1 10/1/1 8/1/1 +f 6/1/1 28/1/1 26/1/1 +f 28/1/1 3/2/1 30/1/1 +f 27/1/2 5/1/2 25/1/2 +f 27/1/2 4/2/2 1/1/2 +f 16/1/1 24/1/1 18/1/1 +f 24/1/1 22/1/1 18/1/1 +f 23/1/2 15/1/2 17/1/2 +f 17/1/2 19/1/2 21/1/2 +f 25/1/2 13/1/2 15/1/2 +f 16/1/1 14/1/1 26/1/1 +f 5/1/2 7/1/2 11/1/2 +f 12/1/1 8/1/1 6/1/1 +f 6/1/1 2/1/1 28/1/1 +f 28/1/1 2/1/1 3/2/1 +f 27/1/2 1/1/2 5/1/2 +f 27/1/2 29/1/2 4/2/2 +s 1 +f 31/1/3 33/2/4 32/1/3 +f 32/1/3 35/1/5 31/1/3 +f 36/1/5 37/1/6 35/1/5 +f 38/1/6 39/1/7 37/1/6 +f 40/1/7 41/1/8 39/1/7 +f 42/1/8 43/1/9 41/1/8 +f 44/1/9 45/1/10 43/1/9 +f 46/1/10 47/1/11 45/1/10 +f 48/1/11 49/1/12 47/1/11 +f 50/1/12 51/1/13 49/1/12 +f 52/1/13 53/1/14 51/1/13 +f 54/1/14 55/1/15 53/1/14 +f 56/1/15 57/1/16 55/1/15 +f 58/1/16 59/1/17 57/1/16 +f 34/2/4 60/1/17 33/2/4 +f 31/1/3 34/2/4 33/2/4 +f 32/1/3 36/1/5 35/1/5 +f 36/1/5 38/1/6 37/1/6 +f 38/1/6 40/1/7 39/1/7 +f 40/1/7 42/1/8 41/1/8 +f 42/1/8 44/1/9 43/1/9 +f 44/1/9 46/1/10 45/1/10 +f 46/1/10 48/1/11 47/1/11 +f 48/1/11 50/1/12 49/1/12 +f 50/1/12 52/1/13 51/1/13 +f 52/1/13 54/1/14 53/1/14 +f 54/1/14 56/1/15 55/1/15 +f 56/1/15 58/1/16 57/1/16 +f 58/1/16 60/1/17 59/1/17 +f 34/2/4 59/1/17 60/1/17 +o lower_pistol_0 +v 1.709833 6.807342 5.318411 +v 1.709833 6.807342 5.149457 +v 1.965886 6.807342 5.149457 +v 1.363295 6.807342 7.165411 +v 1.363295 6.807342 5.318411 +v 1.882584 6.807342 5.848535 +v 2.253843 6.902664 -4.747439 +v 2.253843 6.534985 -3.056432 +v 1.924818 6.534985 -3.056432 +v 1.924818 6.930664 -2.831019 +v 1.924818 6.534985 -3.056432 +v 2.253843 6.534985 -3.056432 +v 2.253843 6.534985 -3.056432 +v 2.253843 6.902664 -4.747439 +v 2.253843 7.162436 -4.697546 +v 1.924818 6.930664 -2.831019 +v 1.592578 6.930664 -2.831019 +v 1.592578 7.603653 -2.269644 +v 1.592578 6.534985 -3.056432 +v 1.592578 6.902664 -4.747439 +v 1.924818 6.125614 -1.931486 +v 1.592578 6.902664 -4.747439 +v 1.592578 7.162436 -4.697546 +v 2.253843 7.162436 -4.697546 +v 2.253843 7.603653 -2.269644 +v 2.253843 7.371370 -2.466393 +v 1.924818 7.371370 -2.466393 +v 2.253843 7.371370 -2.466393 +v 2.253843 7.603653 -2.269644 +v 2.253843 6.966193 -1.398448 +v 2.253843 7.603653 -2.269644 +v 1.592578 7.603653 -2.269644 +v 1.592578 6.966193 -1.398448 +v 1.592578 7.162436 -4.697546 +v 1.592578 6.902664 -4.747439 +v 1.592578 6.534985 -3.056432 +v 2.253843 6.930664 -2.831019 +v 2.253843 7.162436 -4.697546 +v 1.592578 7.162436 -4.697546 +v 1.924818 7.371370 -2.466393 +v 1.924818 6.726052 -1.549974 +v 1.924818 6.125614 -1.931486 +v 2.253843 6.966193 -1.398448 +v 1.592578 6.966193 -1.398448 +v 1.924818 6.726052 -1.549974 +v 1.709833 7.483092 5.149457 +v 1.709833 6.807342 5.149457 +v 1.709833 7.118924 5.318411 +v 1.363295 7.118924 5.318411 +v 1.363295 6.807342 7.165411 +v 1.363295 7.118924 10.804634 +v 1.363295 6.201985 10.638463 +v 1.363295 6.617642 11.001134 +v 1.363295 7.118924 10.804634 +v 1.882584 7.118924 7.165411 +v 1.363295 7.118924 5.318411 +v 2.249606 7.118924 10.804634 +v 2.249606 7.118924 7.165411 +v 1.709833 7.483090 5.848535 +v 1.709833 7.483090 5.848535 +v 1.882584 7.118924 5.848535 +v 1.965886 7.483090 5.848535 +v 2.249606 7.118924 10.804634 +v 2.249606 6.617642 11.001134 +v 2.249606 6.201985 10.638463 +v 2.249606 7.118924 7.165411 +v 1.363295 6.915578 11.004506 +v 1.363295 6.411725 10.933464 +v 1.709833 7.118924 5.848535 +v 1.709833 7.118924 5.848535 +v 1.882584 6.807342 5.848535 +v 1.965886 6.807342 5.848535 +v 2.249606 6.411725 10.933464 +v 2.249606 6.807342 7.165411 +v 2.249606 6.807342 7.165411 +v 2.249606 6.201985 10.638463 +v 1.363295 6.201985 10.638463 +v 1.363295 6.915578 11.004506 +v 2.249606 6.915578 11.004506 +v 1.363295 6.617642 11.001134 +v 2.249606 6.617642 11.001134 +v 1.363295 6.411725 10.933464 +v 2.249606 6.411725 10.933464 +v 1.882584 6.807342 7.165411 +v 1.709833 7.118924 5.318411 +v 1.363295 6.807342 5.318411 +v 1.363295 7.118924 5.318411 +v 1.709833 7.118924 5.318411 +v 1.709833 6.807342 5.149457 +v 1.709833 7.483092 5.149457 +v 1.965886 7.483092 5.149457 +v 1.965886 7.483092 5.149457 +v 1.709833 7.483092 5.149457 +v 1.709833 7.483090 5.848535 +v 1.965886 6.807342 5.149457 +v 1.965886 7.483092 5.149457 +v 1.965886 7.483090 5.848535 +v 1.882584 6.807342 5.848535 +v 1.882584 7.118924 5.848535 +v 1.882584 7.118924 7.165411 +v 1.882584 6.807342 7.165411 +v 1.882584 7.118924 7.165411 +v 2.249606 7.118924 7.165411 +v 1.363295 6.807342 5.318411 +v 1.882584 7.118924 5.848535 +v 1.709833 6.807342 5.318411 +v 1.709833 7.118924 5.848535 +v 2.249606 6.915578 11.004506 +v 0.741864 8.870750 5.649786 +v 0.685393 8.586851 5.649786 +v 0.685393 8.586853 22.443676 +v -1.051055 4.245723 5.289183 +v -1.051055 4.815591 5.698347 +v -1.582758 4.978196 4.997455 +v -1.051055 0.126899 9.525374 +v -1.051055 0.126897 6.278877 +v -1.051055 -0.223472 3.408138 +v -1.051055 5.194829 19.361946 +v -1.051055 4.834130 12.349441 +v -1.051055 4.834130 19.361946 +v -1.582758 5.194829 5.282278 +v -1.373788 7.218986 19.361946 +v -1.373788 6.342139 19.361946 +v -0.857694 7.218986 19.361946 +v -1.051055 5.194829 19.361946 +v -0.857694 5.453609 19.361946 +v -1.373788 5.534112 19.361946 +v 0.741864 8.870753 22.443676 +v 0.685393 8.586853 22.443676 +v 0.912610 8.492737 22.443676 +v 0.987802 8.870753 22.443676 +v 0.912610 8.492737 22.443676 +v 0.912610 8.492735 5.649786 +v 0.987802 8.870750 5.649786 +v 0.912610 8.492735 5.649786 +v 0.685393 8.586851 5.649786 +v 0.524577 8.346173 5.649786 +v 0.524577 8.346175 22.443676 +v 0.524577 8.346175 22.443676 +v 0.698482 8.172271 22.443676 +v 0.698482 8.172271 22.443676 +v 0.698482 8.172269 5.649786 +v 0.698482 8.172269 5.649786 +v 0.524577 8.346173 5.649786 +v 0.283899 8.185357 5.649786 +v 0.283899 8.185359 22.443676 +v 0.283899 8.185359 22.443676 +v 0.378015 7.958142 22.443676 +v 0.378015 7.958142 22.443676 +v 0.378015 7.958138 5.649786 +v 0.378015 7.958138 5.649786 +v 0.283899 8.185357 5.649786 +v 0.000000 8.128886 5.649786 +v 0.000000 8.128888 22.443676 +v 0.000000 8.128888 22.443676 +v 0.000000 7.882950 22.443676 +v 0.000000 7.882950 22.443676 +v 0.000000 7.882946 5.649786 +v 0.000000 7.882946 5.649786 +v 0.000000 8.128886 5.649786 +v 0.000000 8.128886 5.649786 +v -0.283899 8.185357 5.649786 +v -0.283899 8.185359 22.443676 +v -0.283899 8.185359 22.443676 +v -0.378015 7.958142 22.443676 +v 0.000000 7.882950 22.443676 +v -0.378015 7.958142 22.443676 +v -0.378015 7.958138 5.649786 +v -0.378015 7.958138 5.649786 +v -0.283899 8.185357 5.649786 +v -0.524577 8.346173 5.649786 +v -0.524577 8.346175 22.443676 +v -0.524577 8.346175 22.443676 +v -0.698482 8.172271 22.443676 +v -0.698482 8.172271 22.443676 +v -0.698482 8.172269 5.649786 +v -0.698482 8.172269 5.649786 +v -0.524577 8.346173 5.649786 +v -0.685393 8.586851 5.649786 +v -0.685393 8.586853 22.443676 +v -0.685393 8.586853 22.443676 +v -0.912610 8.492737 22.443676 +v -0.912610 8.492737 22.443676 +v -0.912610 8.492735 5.649786 +v -0.912610 8.492735 5.649786 +v -0.685393 8.586851 5.649786 +v -0.741864 8.870750 5.649786 +v -0.741864 8.870753 22.443676 +v -0.741864 8.870753 22.443676 +v -0.987802 8.870753 22.443676 +v -0.987802 8.870753 22.443676 +v -0.987802 8.870750 5.649786 +v -0.987802 8.870750 5.649786 +v -0.741864 8.870750 5.649786 +v -0.685393 9.154650 5.649786 +v -0.685393 9.154652 22.443676 +v -0.685393 9.154652 22.443676 +v -0.912610 9.248768 22.443676 +v -0.912610 9.248768 22.443676 +v -0.912610 9.248766 5.649786 +v -0.912610 9.248766 5.649786 +v -0.685393 9.154650 5.649786 +v -0.524577 9.395328 5.649786 +v -0.524577 9.395329 22.443676 +v -0.524577 9.395329 22.443676 +v -0.698482 9.569234 22.443676 +v -0.698482 9.569234 22.443676 +v -0.698482 9.569232 5.649784 +v -0.698482 9.569232 5.649784 +v -0.524577 9.395328 5.649786 +v -0.283899 9.556144 5.649784 +v -0.283899 9.556146 22.443676 +v -0.283899 9.556146 22.443676 +v -0.378015 9.783361 22.443676 +v -0.378015 9.783361 22.443676 +v -0.378015 9.783360 5.649784 +v -0.378015 9.783360 5.649784 +v -0.283899 9.556144 5.649784 +v 0.000000 9.612615 5.649784 +v 0.000000 9.612617 22.443676 +v 0.000000 9.612617 22.443676 +v 0.000000 9.858554 22.443676 +v 0.000000 9.858554 22.443676 +v 0.000000 9.858552 5.649784 +v 0.000000 9.858552 5.649784 +v 0.000000 9.612615 5.649784 +v 0.283899 9.556144 5.649784 +v 0.283899 9.556146 22.443676 +v 0.283899 9.556146 22.443676 +v 0.378015 9.783361 22.443676 +v 0.378015 9.783361 22.443676 +v 0.378015 9.783360 5.649784 +v 0.378015 9.783360 5.649784 +v 0.283899 9.556144 5.649784 +v 0.524577 9.395328 5.649786 +v 0.524577 9.395329 22.443676 +v 0.524577 9.395329 22.443676 +v 0.698482 9.569234 22.443676 +v 0.698482 9.569234 22.443676 +v 0.698482 9.569232 5.649784 +v 0.698482 9.569232 5.649784 +v 0.524577 9.395328 5.649786 +v 0.685393 9.154650 5.649786 +v 0.685393 9.154652 22.443676 +v 0.685393 9.154652 22.443676 +v 0.912610 9.248768 22.443676 +v 0.912610 9.248768 22.443676 +v 0.912610 9.248766 5.649786 +v 0.912610 9.248766 5.649786 +v 0.685393 9.154650 5.649786 +v 0.741864 8.870753 22.443676 +v 0.987802 8.870753 22.443676 +v 0.987802 8.870750 5.649786 +v 0.741864 8.870750 5.649786 +v 1.133210 1.741260 4.213062 +v 1.133210 1.619134 4.668841 +v 1.133210 1.560808 4.635167 +v 1.133210 1.285481 5.002494 +v 1.133210 1.251807 4.944168 +v 1.133210 0.829702 5.124619 +v 1.133210 0.829702 5.057271 +v 1.133210 0.373924 5.002494 +v 1.133210 0.407598 4.944168 +v 1.133210 0.040271 4.668841 +v 1.133210 0.098596 4.635167 +v 1.133210 -0.081855 4.213062 +v 1.133210 -0.014506 4.213062 +v 1.133210 0.040271 3.757283 +v 1.133210 0.098596 3.790958 +v 1.133210 0.373924 3.423630 +v 1.133210 0.407598 3.481956 +v 1.133210 0.829702 3.301505 +v 1.133210 0.829702 3.368853 +v 1.133210 1.285481 3.423630 +v 1.133210 1.251807 3.481956 +v 1.133210 1.619134 3.757283 +v 1.133210 1.560808 3.790958 +v 1.133210 1.673911 4.213062 +v 1.133210 1.560808 3.790958 +v 1.133210 1.673911 4.213062 +v 1.469249 1.673911 4.213062 +v 1.020556 1.741260 4.213062 +v 1.020556 1.619134 4.668841 +v 1.133210 1.619134 4.668841 +v 1.469249 1.673911 4.213062 +v 1.469249 1.560808 4.635167 +v 1.469249 0.829702 4.213062 +v 1.133210 1.251807 3.481956 +v 1.469249 1.560808 3.790958 +v 1.020556 1.285481 5.002494 +v 1.133210 1.285481 5.002494 +v 1.469249 1.251807 4.944168 +v 1.133210 0.829702 3.368853 +v 1.469249 1.251807 3.481956 +v 1.020556 0.829702 5.124619 +v 1.133210 0.829702 5.124619 +v 1.469249 0.829702 5.057271 +v 1.133210 0.407598 3.481956 +v 1.133210 0.829702 3.368853 +v 1.469249 0.829702 3.368853 +v 1.020556 0.373924 5.002494 +v 1.133210 0.373924 5.002494 +v 1.469249 0.407598 4.944168 +v 1.133210 0.098596 3.790958 +v 1.469249 0.407598 3.481956 +v 1.020556 0.040271 4.668841 +v 1.133210 0.040271 4.668841 +v 1.469249 0.098596 4.635167 +v 1.133210 -0.014506 4.213062 +v 1.469249 0.098596 3.790958 +v 1.020556 -0.081855 4.213062 +v 1.133210 -0.081855 4.213062 +v 1.469249 -0.014506 4.213062 +v 1.133210 0.098596 4.635167 +v 1.469249 -0.014506 4.213062 +v 1.020556 0.040271 3.757283 +v 1.133210 0.040271 3.757283 +v 1.469249 0.098596 3.790958 +v 1.133210 0.407598 4.944168 +v 1.469249 0.098596 4.635167 +v 1.020556 0.373924 3.423630 +v 1.133210 0.373924 3.423630 +v 1.469249 0.407598 3.481956 +v 1.133210 0.829702 5.057271 +v 1.469249 0.407598 4.944168 +v 1.020556 0.829702 3.301505 +v 1.133210 0.829702 3.301505 +v 1.469249 0.829702 3.368853 +v 1.133210 1.251807 4.944168 +v 1.469249 0.829702 5.057271 +v 1.020556 0.829702 3.301505 +v 1.020556 1.285481 3.423630 +v 1.133210 1.285481 3.423630 +v 1.469249 1.251807 3.481956 +v 1.133210 1.560808 4.635167 +v 1.469249 1.251807 4.944168 +v 1.020556 1.619134 3.757283 +v 1.133210 1.619134 3.757283 +v 1.469249 1.560808 3.790958 +v 1.469249 1.560808 4.635167 +v 1.133210 1.741260 4.213062 +v -2.120367 6.032114 -1.127586 +v -2.168285 6.052625 -0.925915 +v -2.124553 6.332816 -1.081475 +v -1.803483 -8.183756 -0.940652 +v -1.550631 -8.207280 -0.940179 +v -1.803497 2.273637 3.302741 +v -2.107996 4.322828 -0.236828 +v -2.163024 4.259209 -0.066218 +v -2.116467 4.647215 -0.174769 +v -2.168202 1.521683 2.220641 +v -2.172835 -7.439816 -1.372816 +v -2.137654 1.534970 2.385706 +v -1.849792 2.296251 3.228978 +v -1.880736 2.578792 3.289423 +v -1.879857 2.017154 3.056580 +v -1.803508 -5.875546 -4.913877 +v -1.803499 -6.096517 -4.976789 +v -2.130997 -6.177514 -4.485744 +v -1.550631 -5.813593 -4.933241 +v -1.550631 -6.027864 -4.968081 +v -1.839455 4.411472 -0.653382 +v -2.137789 6.702975 -0.434407 +v -1.803504 7.006510 -0.872318 +v -1.803507 7.133335 -0.533684 +v -1.550631 7.026423 -0.881129 +v -1.803483 6.443164 -1.419199 +v -2.176839 -6.680809 -4.296600 +v -2.176541 -6.266698 -4.325727 +v -2.177566 -6.820210 -4.161255 +v -2.121354 -6.703001 -4.498363 +v -2.173862 1.655341 1.737604 +v -1.978566 2.889965 3.247607 +v -1.933436 2.830892 2.688685 +v -2.119590 3.136953 3.088691 +v -1.971355 2.842444 2.231860 +v -2.159245 3.192134 2.951774 +v -2.171134 2.757730 1.304274 +v -2.032148 2.748445 1.721616 +v -2.176745 2.987958 1.594733 +v -2.167308 3.176706 2.349641 +v -1.838198 2.378400 2.963018 +v -1.857113 2.122498 2.578046 +v -2.068853 1.609260 2.541311 +v -1.962750 1.737307 2.831918 +v -1.945670 1.985472 2.045092 +v -2.173443 2.217372 1.117763 +v -2.176554 1.911733 1.296362 +v -2.047754 2.044644 1.547692 +v -1.847373 2.496792 2.548999 +v -1.977065 2.428715 1.644999 +v -1.883795 2.419949 2.091068 +v -2.169390 2.475281 1.132310 +v -2.174314 6.129676 4.109241 +v -2.176527 6.514084 3.866836 +v -2.108078 6.117068 4.317319 +v -2.174668 5.841984 -0.795250 +v -2.179727 5.017104 -0.002164 +v -2.141465 5.765682 -0.955082 +v -2.145445 -6.930309 -4.281384 +v -2.119612 -7.822574 -1.480974 +v -2.176766 -7.604493 -1.548244 +v -2.174624 4.663060 0.053574 +v -2.163947 6.294227 -0.887580 +v -2.176857 6.557230 -0.328894 +v -1.803505 6.986403 4.265716 +v -2.129669 6.678270 3.948848 +v -1.550631 7.011675 4.277203 +v -1.803498 6.146347 4.785964 +v -1.550631 5.888646 4.797830 +v -1.550631 6.141140 4.807180 +v -1.803494 -8.338592 -1.148251 +v -2.121051 -7.647707 -1.285313 +v -1.284940 0.829702 3.740532 +v -1.284940 1.075818 2.934655 +v -1.284940 0.583586 2.934655 +v -1.284940 0.442691 4.456008 +v -1.284940 0.606261 4.619579 +v -1.353546 0.606261 4.619579 +v -1.284940 0.382820 4.232567 +v -1.353546 0.442691 4.456008 +v -1.284940 0.829702 4.679450 +v -1.353546 0.829702 4.679450 +v -1.284940 0.442691 4.009126 +v -1.353546 0.382820 4.232567 +v -1.284940 0.606261 3.845556 +v -1.353546 0.442691 4.009126 +v -1.284940 1.053144 4.619579 +v -1.353546 1.053144 4.619579 +v -1.284940 0.829702 3.785685 +v -1.353546 0.606261 3.845556 +v -1.284940 1.053144 3.845556 +v -1.353546 0.829702 3.785685 +v -1.284940 1.216714 4.456008 +v -1.353546 1.216714 4.456008 +v -1.284940 1.216714 4.009126 +v -1.353546 1.053144 3.845556 +v -1.284940 1.276585 4.232567 +v -1.353546 1.216714 4.009126 +v -1.353546 1.276585 4.232567 +v -1.284940 0.403587 4.478585 +v -1.284940 0.583685 4.658682 +v -1.284940 0.606261 4.619579 +v -1.284940 0.337667 4.232567 +v -1.284940 0.442691 4.456008 +v -1.284940 0.829702 4.724603 +v -1.284940 0.829702 4.679450 +v -1.284940 0.403587 3.986549 +v -1.284940 0.382820 4.232567 +v -1.284940 0.583685 3.806452 +v -1.284940 0.442691 4.009126 +v -1.284940 1.075720 4.658682 +v -1.284940 1.053144 4.619579 +v -1.284940 0.606261 3.845556 +v -1.284940 1.075720 3.806452 +v -1.284940 0.829702 3.785685 +v -1.284940 1.255818 4.478585 +v -1.284940 1.216714 4.456008 +v -1.284940 1.255818 3.986549 +v -1.284940 1.053144 3.845556 +v -1.284940 1.321738 4.232567 +v -1.284940 1.216714 4.009126 +v -1.284940 1.276585 4.232567 +v -1.353546 0.606261 4.619579 +v -1.353546 0.829702 4.232567 +v -1.353546 0.442691 4.456008 +v -1.284940 0.583685 4.658682 +v -1.284940 0.403587 4.478585 +v -0.991334 0.403587 4.478585 +v -1.284940 0.829702 4.724603 +v -0.991334 0.583685 4.658682 +v -1.353546 0.382820 4.232567 +v -1.284940 0.337667 4.232567 +v -0.991334 0.337667 4.232567 +v -1.353546 0.829702 4.679450 +v -1.353546 0.442691 4.009126 +v -1.284940 0.403587 3.986549 +v -0.991334 0.403587 3.986549 +v -1.284940 1.075720 4.658682 +v -0.991334 0.829702 4.724603 +v -1.353546 0.606261 3.845556 +v -1.284940 0.583685 3.806452 +v -0.991334 0.583685 3.806452 +v -1.353546 1.053144 4.619579 +v -1.353546 0.829702 3.785685 +v -1.284940 1.075720 3.806452 +v -0.991334 1.075720 3.806452 +v -0.991334 1.075818 2.934655 +v -1.284940 1.255818 4.478585 +v -0.991334 1.075720 4.658682 +v -1.353546 1.053144 3.845556 +v -1.284940 0.714416 2.803811 +v -1.284940 0.944989 2.803811 +v -0.991334 0.944989 2.803811 +v -1.353546 1.216714 4.456008 +v -1.353546 1.216714 4.009126 +v -1.284940 1.255818 3.986549 +v -0.991334 1.255818 3.986549 +v -1.284940 1.321738 4.232567 +v -0.991334 1.255818 4.478585 +v -1.353546 1.276585 4.232567 +v -0.991334 1.321738 4.232567 +v -1.284940 1.075818 2.934655 +v -1.284940 0.583586 2.934655 +v -0.991334 0.583586 2.934655 +v -1.284940 0.583586 2.934655 +v -1.284940 0.944989 2.803811 +v -1.702916 6.787141 -2.070845 +v -1.702916 6.582519 -2.070845 +v -1.702916 6.727209 -1.926155 +v -1.702916 6.787141 -2.070845 +v -1.702916 6.727209 -1.926155 +v 1.979996 6.727209 -1.926155 +v 1.979996 6.787141 -2.070845 +v 1.979996 6.727209 -1.926155 +v 1.979996 6.582519 -2.070845 +v -1.702916 6.582519 -1.866223 +v -1.702916 6.582519 -1.866223 +v 1.979996 6.582519 -1.866223 +v 1.979996 6.582519 -1.866223 +v -1.702916 6.437829 -1.926155 +v -1.702916 6.437829 -1.926155 +v 1.979996 6.437829 -1.926155 +v 1.979996 6.437829 -1.926155 +v -1.702916 6.377896 -2.070845 +v -1.702916 6.437829 -1.926155 +v -1.702916 6.377896 -2.070845 +v 1.979996 6.377896 -2.070845 +v 1.979996 6.377896 -2.070845 +v -1.702916 6.437829 -2.215535 +v -1.702916 6.437829 -2.215535 +v 1.979996 6.437829 -2.215535 +v 1.979996 6.437829 -2.215535 +v -1.702916 6.582519 -2.275470 +v -1.702916 6.582519 -2.275470 +v 1.979996 6.582519 -2.275470 +v -1.425465 5.714321 12.324278 +v -1.425465 5.534113 12.470450 +v -1.425465 6.342139 12.470448 +v 1.979996 6.582519 -2.275470 +v -1.702916 6.727209 -2.215535 +v -1.373788 5.534112 19.361946 +v -1.702916 6.727209 -2.215535 +v 1.979996 6.727209 -2.215535 +v 1.979996 6.727209 -2.215535 +v -1.425465 5.714321 12.324278 +v -1.425465 6.129150 12.324278 +v -1.582758 6.173633 12.234967 +v -1.425465 5.534113 12.470450 +v -1.582758 5.657323 12.234967 +v 1.979996 6.787141 -2.070845 +v 0.000000 6.215096 -5.421185 +v -1.582758 6.749187 -4.912819 +v 1.582758 6.749187 -4.912819 +v 1.488590 5.921740 -5.685918 +v 0.000000 6.031167 -5.736896 +v -1.582758 5.957942 -5.266879 +v -1.582758 5.870734 -4.399592 +v -1.582758 6.749187 -4.912819 +v 1.582758 5.957942 -5.266879 +v 1.582758 6.154637 -5.365934 +v 1.582758 6.749187 -4.912819 +v 1.582758 5.848899 -5.238699 +v 1.582758 5.870734 -4.399592 +v 0.983988 5.324528 -5.327059 +v -1.425465 6.342139 12.470448 +v -1.582758 6.342139 12.374790 +v -1.582758 5.848899 -5.238699 +v -1.484238 5.789523 -5.649559 +v -0.983988 5.324528 -5.327059 +v 1.488590 5.921740 -5.685918 +v -1.425465 6.342139 12.470448 +v -1.373788 6.342139 19.361946 +v -1.582758 6.342139 18.331852 +v -1.051055 0.805344 10.660654 +v -1.051055 0.446520 11.231197 +v -1.051055 3.374606 10.660654 +v -1.051055 -0.223472 11.574593 +v -1.051055 0.200443 10.158533 +v -0.836559 7.218984 0.486122 +v -1.148529 7.218984 0.843370 +v -1.148529 -7.632975 -5.164886 +v -1.092400 5.576506 -6.393807 +v -1.582758 6.342139 18.331852 +v -1.582758 7.218986 18.331852 +v -1.582758 6.342139 12.374790 +v -1.051055 5.194829 6.202400 +v -1.051055 5.194829 19.361946 +v -1.582758 5.194829 18.331852 +v -1.373788 5.194829 19.361946 +v -0.580398 3.816195 5.489355 +v -0.580398 5.143754 5.307024 +v -0.580398 4.250059 5.891655 +v -1.148529 7.218986 4.965837 +v -1.148529 -8.749960 -1.489983 +v -0.580398 4.410829 6.286258 +v -0.580398 4.410829 8.504850 +v -1.051055 4.410829 9.595867 +v -1.582758 7.218984 -4.804955 +v -0.843982 7.218986 5.409400 +v -1.148529 7.218986 4.965837 +v -0.957142 7.218986 5.409400 +v -1.582758 7.218986 5.409400 +v -1.582758 7.218986 5.409400 +v -1.582758 7.218986 18.331852 +v -0.857694 7.218986 12.938876 +v -1.213076 8.145895 -1.953277 +v -0.692288 8.145895 -1.953277 +v -0.427195 9.430100 -1.953277 +v -0.708688 7.624437 -1.953277 +v -0.397424 7.218984 -1.953277 +v -1.213076 7.624437 -1.953277 +v -1.213076 7.218984 -1.953277 +v -1.213076 7.218984 -1.953277 +v -0.836559 7.218984 0.486122 +v -0.397424 7.218984 -1.953277 +v -0.843982 7.218986 5.409400 +v -0.957142 7.218986 5.409400 +v -0.957142 7.863286 5.710876 +v -1.488590 5.921740 -5.685918 +v -1.582758 6.154637 -5.365934 +v -1.582758 5.957942 -5.266879 +v -1.488590 5.921740 -5.685918 +v 1.582758 5.957942 -5.266879 +v 1.484238 5.789523 -5.649559 +v -1.051055 0.730363 5.438924 +v -1.052369 1.419883 5.161799 +v -1.051770 1.087353 3.958939 +v -1.052369 2.312512 5.048415 +v -1.052369 3.020581 5.130578 +v -1.051055 4.245723 5.289183 +v -1.582758 0.545047 3.068055 +v -1.582758 -0.142682 2.781362 +v -1.051055 -0.223472 3.408138 +v -1.582758 4.606297 4.761065 +v -1.582758 1.087353 3.294126 +v -1.051770 1.087353 3.958939 +v 1.494327 1.329366 3.504859 +v 1.493618 0.998143 3.367662 +v 1.582758 -0.142682 2.781362 +v -1.582758 -2.770208 -4.057409 +v -1.582758 2.997752 -1.677936 +v -1.582758 0.676579 2.788985 +v -1.582758 0.955821 2.788985 +v -1.582758 1.087353 2.951361 +v -1.582758 7.218984 0.532608 +v -0.443586 5.533402 -6.767138 +v -0.528251 5.631948 -6.753191 +v 0.000000 5.631948 -6.801857 +v 1.239158 -6.459404 -6.210184 +v 1.239158 -6.716359 -6.316617 +v 1.239158 -5.908381 -6.182570 +v -1.239158 -6.459404 -6.210184 +v -1.239158 -6.352970 -5.953228 +v -1.239158 -5.908381 -6.182570 +v 1.239158 -7.503078 -5.592237 +v 1.239158 -6.973310 -5.696270 +v 1.239158 -6.751893 -5.355608 +v 1.239158 -7.188475 -6.627295 +v 1.239158 -7.079744 -5.953228 +v 1.239158 -6.352970 -5.953228 +v 1.239158 -6.111135 -5.821548 +v 1.239158 -6.459404 -5.696270 +v 1.239158 -6.353005 -5.417202 +v 1.239158 -6.716359 -5.589839 +v -1.239158 -7.503078 -5.592237 +v -1.239158 -7.079744 -5.953228 +v -1.239158 -7.188475 -6.627295 +v -1.239158 -6.716359 -5.589839 +v -1.239158 -6.973310 -5.696270 +v -1.239158 -6.751893 -5.355608 +v -1.239158 -6.459404 -5.696270 +v -1.239158 -6.353005 -5.417202 +v -1.239158 -6.111135 -5.821548 +v -1.239158 -6.716359 -6.316617 +v 1.239158 -6.973310 -6.210184 +v -1.239158 -6.973310 -6.210184 +v -1.148529 7.218984 0.843370 +v -1.582758 -8.611731 0.338330 +v -1.582758 -7.606416 0.140502 +v -1.539709 -9.237019 0.112446 +v -1.582758 -6.783546 -5.235445 +v -1.582758 -7.547009 -5.447709 +v -1.582758 -6.272799 -5.294005 +v -1.582758 -6.767919 0.122680 +v -1.582758 -5.973763 -5.781600 +v -1.582758 -3.887019 -5.026795 +v 0.000000 5.385467 -6.635780 +v 0.000000 5.533402 -6.815804 +v -0.957142 7.218986 7.609766 +v -1.582758 7.218984 -4.804955 +v -1.213076 7.218984 -4.804955 +v -1.582758 4.316335 -1.880566 +v -1.582758 5.060399 -2.393605 +v -1.213076 9.430100 -1.953277 +v -1.213076 9.430100 -4.335176 +v -1.213076 8.145895 -4.804955 +v -1.582758 5.060399 -2.393605 +v -1.582758 5.705914 -3.303000 +v -0.974568 4.768444 -3.230170 +v -1.113677 5.685021 -6.433600 +v -1.488590 5.921740 -5.685918 +v -1.582758 5.705914 -3.303000 +v -1.582758 7.218984 -4.804955 +v -1.213076 7.218984 -4.804955 +v -0.703050 7.624435 -4.804955 +v -0.702042 8.145895 -4.804955 +v -0.419459 8.845671 -4.804955 +v -1.239158 -7.188475 -6.627295 +v -1.239158 -5.908381 -6.182570 +v -0.974568 -7.096979 -6.928317 +v -1.239158 -5.908381 -6.182570 +v -1.239158 -6.111135 -5.821548 +v -1.582758 -5.973763 -5.781600 +v -1.582758 -7.547009 -5.447709 +v -1.582758 -6.783546 -5.235445 +v -1.239158 -6.751893 -5.355608 +v -1.582758 -6.272799 -5.294005 +v 2.119590 3.136953 3.088691 +v 2.108078 6.117068 4.317319 +v 1.803502 5.931036 4.779142 +v 1.880736 2.578792 3.289423 +v 1.978566 2.889965 3.247607 +v 1.803497 2.273637 3.302741 +v 1.962750 1.737307 2.831918 +v 1.879857 2.017154 3.056580 +v 1.803483 -8.183756 -0.940652 +v 2.068853 1.609260 2.541311 +v 2.137654 1.534970 2.385706 +v 1.803499 -6.096517 -4.976789 +v 2.130997 -6.177514 -4.485744 +v 2.121354 -6.703001 -4.498363 +v 1.550631 -7.022316 -4.915741 +v 1.550631 -6.027864 -4.968081 +v 2.116467 4.647215 -0.174769 +v 2.107996 4.322828 -0.236828 +v 1.839455 4.411472 -0.653382 +v 2.138861 4.925927 -0.212349 +v 1.832909 4.741830 -0.615315 +v 2.141465 5.765682 -0.955082 +v 1.803493 4.979961 -0.698811 +v 2.120367 6.032114 -1.127586 +v 1.803477 5.747915 -1.279529 +v 2.124553 6.332816 -1.081475 +v 1.803468 6.136785 -1.467315 +v 1.803507 7.133335 -0.533684 +v 1.803500 7.103070 4.086895 +v 2.129669 6.678270 3.948848 +v 1.550631 4.920799 -0.676702 +v 1.550631 5.750243 -1.260870 +v 1.550631 6.117420 -1.448277 +v 1.550631 6.431123 -1.427431 +v 1.803483 6.443164 -1.419199 +v 1.550631 4.711940 -0.618973 +v 1.839455 4.411472 -0.653382 +v 2.179727 5.017104 -0.002164 +v 2.174624 4.663060 0.053574 +v 2.119612 -7.822574 -1.480974 +v 2.176766 -7.604493 -1.548244 +v 2.121051 -7.647707 -1.285313 +v 1.803505 -7.014567 -4.882656 +v 2.137789 6.702975 -0.434407 +v 1.550631 4.418573 -0.651555 +v 1.550631 5.888646 4.797830 +v 1.550631 -8.207280 -0.940179 +v 2.163024 4.259209 -0.066218 +v 2.172835 -7.439816 -1.372816 +v 1.803508 -5.875546 -4.913877 +v 1.803504 7.006510 -0.872318 +v 1.550631 7.026423 -0.881129 +v 2.176857 6.557230 -0.328894 +v 2.163947 6.294227 -0.887580 +v 2.176527 6.514084 3.866836 +v 2.168285 6.052625 -0.925915 +v -0.823032 5.400961 -6.289595 +v -1.373788 7.218986 19.361946 +v -0.857694 7.218986 19.361946 +v 1.092400 5.576506 -6.393807 +v 0.443586 5.533402 -6.767138 +v 0.823032 5.400961 -6.289595 +v 0.403942 7.218984 -4.804955 +v 1.213076 7.218984 -4.804955 +v 0.974568 5.132453 -4.066989 +v 1.213076 8.145895 -4.804955 +v 1.213076 8.845671 -4.804955 +v 1.213076 9.430100 -4.335176 +v 0.703050 7.624435 -4.804955 +v 0.708688 7.624437 -1.953277 +v 1.213076 7.624437 -1.953277 +v 1.213076 7.624437 -1.953277 +v 1.213076 7.218984 -1.953277 +v 1.213076 7.218984 -4.804955 +v 0.703050 7.624435 -4.804955 +v 0.702042 8.145895 -4.804955 +v 0.692288 8.145895 -1.953277 +v 0.692288 8.145895 -1.953277 +v 0.702042 8.145895 -4.804955 +v 1.213076 8.145895 -4.804955 +v 1.213076 9.430100 -4.335176 +v 0.450662 9.430100 -4.335176 +v 0.427195 9.430100 -1.953277 +v 1.582758 7.218984 -4.804955 +v 0.528251 5.631948 -6.753191 +v 0.000000 5.631948 -6.801857 +v 1.113677 5.685021 -6.433600 +v 1.582758 6.154637 -5.365934 +v -0.403942 7.218984 -4.804955 +v 1.213076 7.218984 -1.953277 +v 1.582758 7.218984 -4.804955 +v 1.213076 7.218984 -4.804955 +v 0.703050 7.624435 -4.804955 +v 0.419459 8.845671 -4.804955 +v 1.213076 7.624435 -4.804955 +v 1.213076 8.845671 -4.804955 +v 1.213076 8.145895 -4.804955 +v 0.702042 8.145895 -4.804955 +v 0.450662 9.430100 -4.335176 +v 1.213076 9.430100 -4.335176 +v 0.836559 7.218984 0.486122 +v 0.397424 7.218984 -1.953277 +v -1.582758 6.154637 -5.365934 +v 1.582758 2.997752 -1.677936 +v 1.582758 4.606297 4.761065 +v 1.582758 5.060399 -2.393605 +v 1.582758 5.705914 -3.303000 +v 1.582758 7.218984 0.532608 +v 1.582758 4.978196 4.997455 +v 1.582758 7.218986 5.409400 +v 1.582758 6.173633 12.234967 +v 1.582758 5.194829 5.282278 +v 1.582758 5.194829 18.331852 +v 1.582758 5.534113 12.374792 +v 1.582758 4.316335 -1.880566 +v 1.582758 7.218984 -4.804955 +v 1.582758 6.342139 12.374790 +v 1.582758 5.657323 12.234967 +v 1.582758 7.218986 18.331852 +v 1.582758 7.218986 5.409400 +v 0.857694 7.218986 12.938876 +v 1.148529 7.218986 4.965837 +v 0.957142 7.218986 5.409400 +v 0.857694 7.218986 19.361946 +v 1.373788 7.218986 19.361946 +v 0.957142 7.218986 7.609766 +v 1.148529 7.218984 0.843370 +v 0.957142 7.218986 6.277359 +v 0.857694 5.453765 12.938878 +v 0.580191 5.127948 12.938878 +v 0.580398 5.127513 19.361946 +v 0.857694 7.218986 12.938876 +v 0.857694 5.453609 19.361946 +v -1.803494 -8.338592 -1.148251 +v -1.803496 -7.249155 -4.729249 +v -1.550631 -7.254868 -4.756801 +v -1.550631 -8.362582 -1.129570 +v -1.803505 -7.014567 -4.882656 +v -1.803500 7.103070 4.086895 +v -1.550631 7.159328 -0.581058 +v -1.839455 4.411472 -0.653382 +v -1.550631 4.418573 -0.651555 +v -1.803502 5.931036 4.779142 +v -2.138861 4.925927 -0.212349 +v -1.550631 -7.022316 -4.915741 +v -1.832909 4.741830 -0.615315 +v -1.803493 4.979961 -0.698811 +v -1.803477 5.747915 -1.279529 +v -1.803468 6.136785 -1.467315 +v -1.550631 4.920799 -0.676702 +v -1.550631 5.750243 -1.260870 +v -1.550631 6.117420 -1.448277 +v -1.550631 6.431123 -1.427431 +v -1.550631 4.711940 -0.618973 +v 2.168202 1.521683 2.220641 +v 1.849792 2.296251 3.228978 +v 1.550631 -5.813593 -4.933241 +v 2.176839 -6.680809 -4.296600 +v 2.177566 -6.820210 -4.161255 +v 2.145445 -6.930309 -4.281384 +v 2.173862 1.655341 1.737604 +v 1.933436 2.830892 2.688685 +v 1.971355 2.842444 2.231860 +v 2.167308 3.176706 2.349641 +v 2.159245 3.192134 2.951774 +v 2.032148 2.748445 1.721616 +v 2.171134 2.757730 1.304274 +v 2.176745 2.987958 1.594733 +v 1.838198 2.378400 2.963018 +v 1.857113 2.122498 2.578046 +v 1.945670 1.985472 2.045092 +v 2.047754 2.044644 1.547692 +v 2.176554 1.911733 1.296362 +v 2.173443 2.217372 1.117763 +v 1.847373 2.496792 2.548999 +v 1.977065 2.428715 1.644999 +v 1.883795 2.419949 2.091068 +v 2.169390 2.475281 1.132310 +v 2.174314 6.129676 4.109241 +v 2.174668 5.841984 -0.795250 +v 2.176541 -6.266698 -4.325727 +v 1.803505 6.986403 4.265716 +v 1.803498 6.146347 4.785964 +v 1.550631 7.011675 4.277203 +v 1.550631 6.141140 4.807180 +v 1.803494 -8.338592 -1.148251 +v 1.550631 -8.362582 -1.129570 +v 1.803494 -8.338592 -1.148251 +v 1.803496 -7.249155 -4.729249 +v 1.550631 -7.254868 -4.756801 +v 1.550631 7.159328 -0.581058 +v 1.550631 7.128139 4.054966 +v -1.239158 -6.353005 -5.417202 +v -1.113677 5.685021 -6.433600 +v -1.582758 6.173633 12.234967 +v -1.582758 5.657323 12.234967 +v -0.974568 4.193733 -2.693952 +v -1.582758 4.316335 -1.880566 +v -1.582758 5.870734 -4.399592 +v -0.974568 5.132453 -4.066989 +v -0.974568 2.986196 -2.567274 +v -1.582758 2.997752 -1.677936 +v -0.974568 -2.299957 -4.683156 +v -1.582758 -2.770208 -4.057409 +v -0.974568 -3.532902 -5.626941 +v -1.582758 -3.887019 -5.026795 +v -1.582758 -5.973763 -5.781600 +v -0.427195 9.430100 -1.953277 +v -0.397424 7.218984 -1.953277 +v -0.450662 9.430100 -4.335176 +v -0.580398 4.410829 6.286258 +v -0.580398 5.143754 8.504850 +v 0.403942 7.218984 -4.804955 +v -0.580398 3.410161 5.307024 +v 0.397424 7.218984 -1.953277 +v 0.450662 9.430100 -4.335176 +v 0.419459 8.845671 -4.804955 +v -0.857694 5.453765 12.938878 +v -0.857694 5.453609 19.361946 +v -0.580398 5.127513 19.361946 +v -0.857694 7.218986 12.938876 +v -0.857694 7.218986 19.361946 +v -0.957142 7.863286 7.609766 +v -0.957142 7.218986 5.409400 +v -0.957142 7.218986 6.277359 +v -0.957142 7.863286 5.710876 +v -1.213076 8.845671 -4.804955 +v -0.703050 7.624435 -4.804955 +v -1.213076 7.624435 -4.804955 +v -1.213076 7.624437 -1.953277 +v -1.213076 7.624437 -1.953277 +v -1.213076 7.624435 -4.804955 +v -1.213076 7.218984 -4.804955 +v -1.148529 -8.749960 -1.489983 +v -0.843982 -8.845317 -1.176258 +v -1.539709 -9.237019 0.112446 +v -0.703050 7.624435 -4.804955 +v -0.708688 7.624437 -1.953277 +v -0.692288 8.145895 -1.953277 +v -0.580398 3.410161 5.307024 +v -0.580398 3.816195 5.489355 +v -1.051055 3.816077 5.489355 +v -1.051055 4.250059 5.891655 +v -0.580398 4.250059 5.891655 +v -1.051055 4.410829 6.286258 +v -0.692288 8.145895 -1.953277 +v -1.213076 8.145895 -1.953277 +v -1.213076 8.145895 -4.804955 +v -1.052369 3.020581 5.130578 +v -1.582758 5.534112 18.331852 +v -1.582758 5.534113 12.374792 +v -1.582758 5.194829 18.331852 +v -1.051055 3.986081 11.231197 +v -1.213076 9.430100 -4.335176 +v -1.213076 9.430100 -1.953277 +v -0.427195 9.430100 -1.953277 +v -1.051055 4.197898 10.160744 +v -1.051055 4.410829 9.595867 +v -1.051055 5.194829 6.202400 +v -1.051055 4.410829 6.286258 +v -1.051055 4.815591 5.698347 +v -1.051055 4.250059 5.891655 +v 1.051203 0.060934 3.592092 +v 1.051055 -0.223472 3.408138 +v 1.358388 0.595196 3.367662 +v -1.051055 0.491169 10.501270 +v -1.051055 3.846212 10.532600 +v -1.051055 3.816077 5.489355 +v -1.051055 0.303245 5.858099 +v -1.051055 0.145063 11.660562 +v -0.403942 7.218984 -4.804955 +v -0.419459 8.845671 -4.804955 +v -0.580398 5.127513 19.361946 +v -1.213076 7.624435 -4.804955 +v -1.213076 8.845671 -4.804955 +v -1.213076 9.430100 -4.335176 +v -0.528251 5.631948 -6.753191 +v -1.051055 -7.663412 0.798396 +v -1.051055 -6.827383 0.859534 +v -1.051055 -9.408401 0.676295 +v -1.051055 -8.710466 0.929090 +v -0.832096 -2.281892 2.617995 +v -1.051055 -0.223472 3.408138 +v -1.051055 -6.827383 0.859534 +v -0.832096 -3.798709 2.025143 +v -0.832096 -3.666983 2.980051 +v -0.832096 -2.992427 3.243009 +v -1.051055 4.834130 19.361946 +v -1.582758 5.534113 12.374792 +v -1.582758 5.534112 18.331852 +v -1.373788 5.534112 19.361946 +v -1.373788 7.218986 19.361946 +v -1.373788 5.194829 19.361946 +v -0.372438 10.036927 5.890270 +v -0.372438 10.296735 5.890270 +v 0.372438 10.036927 5.890270 +v -0.570611 9.870735 5.890270 +v 0.570611 9.870735 5.890270 +v 0.667251 10.036927 5.890270 +v -0.667251 10.036927 5.890270 +v -0.372438 10.036927 5.890270 +v -0.667251 10.036927 5.890270 +v -0.666265 10.036927 11.908642 +v -1.159394 7.167399 5.890272 +v -1.159394 7.167401 11.908642 +v -1.159394 9.473121 11.908642 +v -1.018901 7.167401 11.908642 +v -1.018901 9.373809 11.908642 +v -1.159394 9.473121 11.908642 +v -1.018901 7.167399 5.890272 +v -1.159394 7.167399 5.890272 +v -1.159394 9.473121 5.890272 +v -0.570611 9.870735 11.908642 +v -0.666265 10.036927 11.908642 +v 1.018901 9.373809 5.890272 +v 1.018901 7.167399 5.890272 +v 1.018901 7.167401 11.908642 +v 1.018901 9.373809 11.908642 +v 0.570611 9.870735 11.908642 +v -0.372438 10.036929 8.085607 +v 0.372438 10.036929 8.085607 +v 0.372438 10.296735 5.890270 +v 1.018901 7.167399 5.890272 +v 1.018901 9.373809 5.890272 +v 1.159394 9.473121 5.890272 +v 0.372438 10.036927 5.890270 +v 0.372438 10.296735 5.890270 +v 0.372438 10.036929 8.085607 +v 0.372438 10.036927 5.890270 +v 0.372438 10.036929 8.085607 +v 0.666265 10.036927 11.908642 +v 1.159394 7.167399 5.890272 +v 1.159394 9.473121 5.890272 +v 1.159394 9.473121 11.908642 +v 1.018901 7.167401 11.908642 +v 1.159394 7.167401 11.908642 +v 1.159394 9.473121 11.908642 +v 0.570611 9.870735 11.908642 +v 1.018901 9.373809 11.908642 +v 0.667251 10.036927 5.890270 +v -1.018901 9.373809 5.890272 +v -1.018901 9.373809 11.908642 +v -1.018901 7.167401 11.908642 +v -0.372438 10.036929 8.085607 +v -0.372438 10.296735 5.890270 +v -0.372438 10.036927 5.890270 +v -0.372438 10.036929 8.085607 +v -0.570611 9.870735 5.890270 +v -0.570611 9.870735 11.908642 +v 0.570611 9.870735 5.890270 +v 0.372438 10.296735 5.890270 +v 1.592578 6.930664 -2.831019 +v 1.924818 6.930664 -2.831019 +v 1.924818 6.930664 -2.831019 +v 2.253843 6.726052 -1.549974 +v 1.592578 6.125614 -1.931486 +v 1.592578 6.966193 -1.398448 +v 1.924818 6.125614 -1.931486 +v 1.592578 6.125614 -1.931486 +v 1.592578 7.603653 -2.269644 +v 1.592578 6.930664 -2.831019 +v 1.924818 6.534985 -3.056432 +v 1.924818 6.726052 -1.549974 +v 1.924818 7.371370 -2.466393 +v 2.253843 7.371370 -2.466393 +v -1.051770 0.545047 3.730687 +v 1.360567 1.614293 3.789785 +v 1.051232 1.834943 4.322482 +v 1.050937 1.614293 3.789785 +v 1.360567 1.614293 3.789785 +v -1.582758 0.676579 2.788985 +v -1.582758 0.545047 3.068055 +v -1.051770 0.545047 2.951361 +v 1.050937 0.595196 3.367662 +v 1.050937 1.614293 3.789785 +v 1.052369 1.419883 5.161799 +v 1.051232 1.834943 4.322482 +v -1.051770 0.545047 3.730687 +v 1.051055 0.126897 6.278877 +v 1.051055 -0.223472 3.408138 +v 1.051055 0.303245 5.858099 +v 1.051232 1.834943 4.322482 +v 1.050937 0.998143 3.367662 +v 1.358388 0.595196 3.367662 +v 1.493618 0.998143 3.367662 +v 1.050937 0.998143 3.367662 +v -1.051770 1.087353 3.958939 +v -1.582758 1.087353 3.294126 +v -1.582758 1.087353 2.951361 +v 1.050937 0.062500 3.588312 +v 1.051055 0.730363 5.438924 +v 1.050937 1.329366 3.504859 +v 1.239158 -6.352970 -5.953228 +v -1.239158 -6.352970 -5.953228 +v -1.239158 -6.459404 -6.210184 +v -1.239158 -6.973310 -6.210184 +v 1.239158 -6.973310 -6.210184 +v 1.239158 -6.716359 -6.316617 +v -1.239158 -7.079744 -5.953228 +v -1.239158 -6.716359 -5.589839 +v 1.239158 -6.716359 -5.589839 +v 1.239158 -6.973310 -5.696270 +v -0.836559 -7.541790 -5.464879 +v -1.148529 -7.632975 -5.164886 +v -1.239158 -7.503078 -5.592237 +v -0.843982 -8.845317 -1.176258 +v -1.582758 -7.547009 -5.447709 +v -0.974568 -7.096979 -6.928317 +v -1.239158 -7.188475 -6.627295 +v -0.857694 5.453765 12.938878 +v 0.857694 5.453765 12.938878 +v 0.857694 7.218986 12.938876 +v -0.580191 5.127948 12.938878 +v 0.580191 5.127948 12.938878 +v 0.427195 9.430100 -1.953277 +v -1.051055 -9.408401 0.676295 +v -0.580191 5.127948 12.938878 +v 0.403942 7.218984 -4.804955 +v 1.239158 -6.459404 -6.210184 +v -1.239158 -6.459404 -5.696270 +v 1.239158 -6.459404 -5.696270 +v 1.239158 -7.079744 -5.953228 +v 1.239158 -6.352970 -5.953228 +v 0.957142 7.218986 5.409400 +v 0.843982 7.218986 5.409400 +v 0.957142 7.863286 5.710876 +v 1.213076 7.624437 -1.953277 +v 0.708688 7.624437 -1.953277 +v 0.397424 7.218984 -1.953277 +v 0.692288 8.145895 -1.953277 +v 0.427195 9.430100 -1.953277 +v 1.213076 8.145895 -1.953277 +v 1.213076 9.430100 -1.953277 +v -0.957142 7.218986 6.277359 +v 1.582758 7.218986 18.331852 +v 0.843982 7.218986 5.409400 +v 1.582758 5.870734 -4.399592 +v 0.580398 4.410829 6.286258 +v 1.051055 4.410829 6.286258 +v 1.051055 4.410829 9.595867 +v -0.580398 4.410829 8.504850 +v -0.580398 5.143754 8.504850 +v 0.580398 5.143754 8.504850 +v 0.580398 5.143754 5.307024 +v 0.580398 3.816195 5.489355 +v 0.580398 4.250059 5.891655 +v 1.582758 5.194829 18.331852 +v 1.373788 5.194829 19.361946 +v 1.051055 5.194829 19.361946 +v 1.051055 5.194829 6.202400 +v 1.582758 5.194829 5.282278 +v 1.582758 6.342139 18.331852 +v 1.051055 4.834130 12.349441 +v -1.051055 4.834130 12.349441 +v -1.051055 3.986081 11.231197 +v -1.051055 4.197898 10.160744 +v 1.051055 -0.223472 11.574593 +v 1.051055 0.126899 9.525374 +v 1.051055 0.200443 10.158533 +v -1.051770 0.545047 2.951361 +v -1.051770 1.087353 2.951361 +v -1.051770 0.955821 2.753111 +v 1.050937 0.062500 3.588312 +v 1.051203 0.060934 3.592092 +v 1.358388 0.595196 3.367662 +v -1.582758 0.955821 2.788985 +v -1.051770 0.955821 2.753111 +v 1.051055 0.446520 11.231197 +v 1.051055 0.805344 10.660654 +v 1.051055 3.374606 10.660654 +v 1.425465 6.342139 12.470448 +v 1.582758 6.342139 12.374790 +v 1.582758 6.342139 18.331852 +v 1.425465 6.129150 12.324278 +v 1.582758 6.173633 12.234967 +v 1.582758 6.342139 12.374790 +v 1.425465 5.534113 12.470450 +v 1.582758 5.534113 12.374792 +v 1.582758 5.657323 12.234967 +v 1.425465 5.714321 12.324278 +v 1.425465 6.342139 12.470448 +v 1.373788 6.342139 19.361946 +v 1.373788 5.534112 19.361946 +v 1.425465 5.714321 12.324278 +v 1.425465 6.129150 12.324278 +v 1.051055 5.194829 19.361946 +v 1.373788 5.194829 19.361946 +v 1.373788 5.534112 19.361946 +v 1.373788 6.342139 19.361946 +v 1.373788 7.218986 19.361946 +v 0.857694 7.218986 19.361946 +v -1.582758 0.676579 2.788985 +v -1.051770 0.676579 2.753111 +v 1.051055 5.194829 6.202400 +v 1.051055 4.815591 5.698347 +v 1.051055 4.834130 12.349441 +v 1.051055 5.194829 19.361946 +v 1.051055 4.834130 19.361946 +v 1.051203 0.060934 3.592092 +v 1.050937 0.062500 3.588312 +v 1.051055 -0.223472 3.408138 +v 1.051055 4.245723 5.289183 +v 1.582758 5.534112 18.331852 +v 1.373788 5.534112 19.361946 +v 1.373788 5.194829 19.361946 +v 1.373788 7.218986 19.361946 +v 1.373788 6.342139 19.361946 +v 1.373788 5.534112 19.361946 +v 1.051055 4.834130 19.361946 +v 0.857694 5.453609 19.361946 +v 0.580398 5.127513 19.361946 +v -1.051055 0.145063 11.660562 +v -1.051055 -0.223472 11.574593 +v 1.051055 -0.223472 11.574593 +v 1.494327 1.329366 3.504859 +v 1.051055 -0.223472 11.574593 +v -1.051055 -0.223472 11.574593 +v -1.051055 -0.223472 3.408138 +v -1.051055 0.446520 11.231197 +v -1.051055 0.145063 11.660562 +v 1.051055 0.145063 11.660562 +v 1.051055 0.446520 11.231197 +v -1.051055 4.834130 19.361946 +v -0.832096 -2.992427 3.243009 +v 0.832096 -2.992427 3.243009 +v 0.832096 -2.281892 2.617995 +v -0.832096 -3.666983 2.980051 +v 0.832096 -3.666983 2.980051 +v 0.832096 -2.992427 3.243009 +v 0.832096 -3.798709 2.025143 +v 0.832096 -2.281892 2.617995 +v 0.832096 -2.992427 3.243009 +v -0.832096 -3.798709 2.025143 +v 0.832096 -3.798709 2.025143 +v 0.832096 -3.666983 2.980051 +v 1.051055 -0.223472 3.408138 +v 1.051055 -6.827383 0.859534 +v 1.582758 -6.767919 0.122680 +v 1.582758 -7.606416 0.140502 +v 1.051055 -7.663412 0.798396 +v 1.051055 -8.710466 0.929090 +v 0.832096 -2.281892 2.617995 +v 0.832096 -3.798709 2.025143 +v 1.051055 -6.827383 0.859534 +v 1.051055 -9.408401 0.676295 +v 1.539709 -9.237019 0.112446 +v 1.582758 -8.611731 0.338330 +v 1.051055 -7.663412 0.798396 +v -1.051055 -7.663412 0.798396 +v -1.051055 -8.710466 0.929090 +v -0.832096 -3.798709 2.025143 +v -1.051055 -9.408401 0.676295 +v 1.051055 -9.408401 0.676295 +v 1.051055 -8.710466 0.929090 +v -0.403942 7.218984 -4.804955 +v 1.051055 0.491169 10.501270 +v 1.051055 0.145063 11.660562 +v 1.051055 4.245723 5.289183 +v 1.052369 3.020581 5.130578 +v 1.052369 2.312512 5.048415 +v 1.051055 3.816077 5.489355 +v 1.051055 4.250059 5.891655 +v 1.051055 4.410829 6.286258 +v 1.051055 4.815591 5.698347 +v 1.051055 5.194829 6.202400 +v 1.051055 4.410829 9.595867 +v 1.051055 4.197898 10.160744 +v 1.051055 3.986081 11.231197 +v 1.051055 3.846212 10.532600 +v 1.050937 1.329366 3.504859 +v -1.052369 3.020581 5.130578 +v -1.052369 2.312512 5.048415 +v 1.052369 2.312512 5.048415 +v 1.052369 3.020581 5.130578 +v 1.051055 3.816077 5.489355 +v 0.580398 3.410161 5.307024 +v 0.580398 4.250059 5.891655 +v 1.051055 4.250059 5.891655 +v 0.580398 3.816195 5.489355 +v -1.051055 0.126899 9.525374 +v -1.051055 0.200443 10.158533 +v 1.051055 0.200443 10.158533 +v -1.051055 0.491169 10.501270 +v 1.051055 0.491169 10.501270 +v -1.051055 0.126897 6.278877 +v 1.051055 0.126899 9.525374 +v -1.051055 0.805344 10.660654 +v 1.051055 0.805344 10.660654 +v -1.051055 0.303245 5.858099 +v 1.051055 0.126897 6.278877 +v -1.051055 3.374606 10.660654 +v 1.051055 3.374606 10.660654 +v -1.051055 0.730363 5.438924 +v 1.051055 0.303245 5.858099 +v -1.051055 3.846212 10.532600 +v 1.051055 3.846212 10.532600 +v -1.052369 1.419883 5.161799 +v 1.051055 0.730363 5.438924 +v 1.051055 4.197898 10.160744 +v 1.052369 1.419883 5.161799 +v 0.580398 5.143754 5.307024 +v -0.580398 5.143754 5.307024 +v -0.580398 3.410161 5.307024 +v 0.580398 3.410161 5.307024 +v 0.580398 4.410829 6.286258 +v 0.580398 5.143754 8.504850 +v -0.580398 5.143754 8.504850 +v -0.580398 5.143754 5.307024 +v 0.580398 4.410829 8.504850 +v 0.580398 5.143754 8.504850 +v 0.580398 4.410829 8.504850 +v 1.582758 -3.887019 -5.026795 +v 1.582758 -5.973763 -5.781600 +v 1.239158 -5.908381 -6.182570 +v 0.974568 -7.096979 -6.928317 +v 0.974568 -3.532902 -5.626941 +v 0.974568 -2.299957 -4.683156 +v 1.582758 -2.770208 -4.057409 +v 0.974568 2.986196 -2.567274 +v 1.582758 2.997752 -1.677936 +v 0.974568 4.768444 -3.230170 +v 1.582758 5.705914 -3.303000 +v 0.974568 4.193733 -2.693952 +v 1.582758 4.316335 -1.880566 +v 1.582758 5.060399 -2.393605 +v 1.113677 5.685021 -6.433600 +v 1.488590 5.921740 -5.685918 +v 0.528251 5.631948 -6.753191 +v 1.239158 -6.353005 -5.417202 +v 1.582758 -6.272799 -5.294005 +v 1.582758 -6.783546 -5.235445 +v 1.239158 -6.111135 -5.821548 +v 1.582758 -7.547009 -5.447709 +v 1.239158 -7.503078 -5.592237 +v 1.239158 -6.751893 -5.355608 +v 1.239158 -5.908381 -6.182570 +v 1.582758 -5.973763 -5.781600 +v 1.239158 -7.188475 -6.627295 +v 1.213076 9.430100 -1.953277 +v 1.213076 8.145895 -1.953277 +v 1.582758 -2.770208 -4.057409 +v 1.582758 -3.887019 -5.026795 +v 1.582758 -6.272799 -5.294005 +v 1.582758 -5.973763 -5.781600 +v 1.582758 -6.783546 -5.235445 +v 1.582758 -7.547009 -5.447709 +v 1.582758 -7.547009 -5.447709 +v 1.148529 -7.632975 -5.164886 +v 1.239158 -7.503078 -5.592237 +v 0.836559 -7.541790 -5.464879 +v 0.974568 -7.096979 -6.928317 +v 1.239158 -7.188475 -6.627295 +v 1.539709 -9.237019 0.112446 +v 1.051055 -9.408401 0.676295 +v 0.843982 -8.845317 -1.176258 +v 0.843982 -8.845317 -1.176258 +v 0.843982 7.218986 5.409400 +v 1.148529 7.218986 4.965837 +v 1.148529 7.218984 0.843370 +v 1.148529 -7.632975 -5.164886 +v 0.836559 7.218984 0.486122 +v 0.836559 -7.541790 -5.464879 +v 1.148529 -7.632975 -5.164886 +v -0.836559 -7.541790 -5.464879 +v -0.843982 7.218986 5.409400 +v 1.148529 -8.749960 -1.489983 +v 0.957142 7.863286 7.609766 +v -0.957142 7.863286 7.609766 +v -0.957142 7.218986 7.609766 +v 0.957142 7.218986 5.409400 +v 0.957142 7.863286 5.710876 +v 0.957142 7.863286 7.609766 +v -0.957142 7.863286 7.609766 +v 0.957142 7.863286 7.609766 +v 0.957142 7.863286 5.710876 +v 0.957142 7.218986 7.609766 +v 0.957142 7.218986 6.277359 +v 2.253843 6.930664 -2.831019 +v 2.253843 6.930664 -2.831019 +v 1.592578 6.125614 -1.931486 +v 2.253843 6.902664 -4.747439 +v 2.253843 6.726052 -1.549974 +v 2.253843 6.966193 -1.398448 +v 1.709833 6.807342 5.318411 +v 1.965886 6.807342 5.149457 +v 1.965886 7.483090 5.848535 +v 1.965886 6.807342 5.848535 +v 1.882584 6.807342 7.165411 +v 2.249606 6.807342 7.165411 +v -1.051055 5.194829 6.202400 +v -1.373788 5.194829 19.361946 +v 0.000000 8.128888 22.443676 +v 0.000000 7.882946 5.649786 +v 1.469249 0.829702 3.368853 +v 1.133210 0.829702 3.301505 +v -0.991334 0.714416 2.803811 +v -0.991334 0.583586 2.934655 +v -1.284940 0.714416 2.803811 +v 1.979996 6.437829 -1.926155 +v -1.425465 6.129150 12.324278 +v -1.373788 6.342139 19.361946 +v -1.582758 6.342139 12.374790 +v -1.582758 5.194829 5.282278 +v -1.213076 9.430100 -1.953277 +v -1.051770 0.545047 3.730687 +v -1.213076 8.145895 -1.953277 +v -1.239158 -7.503078 -5.592237 +v 1.213076 7.624435 -4.804955 +v 1.213076 7.624435 -4.804955 +v 0.708688 7.624437 -1.953277 +v 1.213076 8.145895 -1.953277 +v 1.213076 9.430100 -1.953277 +v 0.857694 7.218986 19.361946 +v -1.550631 -8.362582 -1.129570 +v -1.550631 7.128139 4.054966 +v 1.550631 -8.362582 -1.129570 +v -0.580398 4.410829 8.504850 +v -0.957142 7.218986 7.609766 +v -0.708688 7.624437 -1.953277 +v -1.213076 7.218984 -1.953277 +v -0.702042 8.145895 -4.804955 +v -0.702042 8.145895 -4.804955 +v -0.450662 9.430100 -4.335176 +v -1.213076 8.145895 -4.804955 +v -0.450662 9.430100 -4.335176 +v -0.832096 -2.281892 2.617995 +v -1.373788 6.342139 19.361946 +v -1.373788 5.534112 19.361946 +v -1.159394 9.473121 5.890272 +v -1.159394 7.167401 11.908642 +v -1.018901 9.373809 5.890272 +v -0.372438 10.296735 5.890270 +v 1.159394 7.167399 5.890272 +v 1.159394 7.167401 11.908642 +v 0.666265 10.036927 11.908642 +v -1.018901 7.167399 5.890272 +v 2.253843 6.726052 -1.549974 +v -1.051770 0.676579 2.753111 +v 1.050937 0.595196 3.367662 +v -1.051770 1.087353 2.951361 +v -1.239158 -6.716359 -6.316617 +v -1.239158 -6.973310 -5.696270 +v -0.857694 7.218986 12.938876 +v -1.239158 -6.352970 -5.953228 +v 1.213076 7.218984 -1.953277 +v 0.580398 4.410829 8.504850 +v 1.051055 3.986081 11.231197 +v -1.051770 0.676579 2.753111 +v 1.050937 0.062500 3.588312 +v 1.373788 6.342139 19.361946 +v 1.425465 6.342139 12.470448 +v 1.425465 5.534113 12.470450 +v 1.582758 5.534112 18.331852 +v 1.051055 0.145063 11.660562 +v 1.051055 -0.223472 3.408138 +v 1.051055 4.834130 19.361946 +v -0.832096 -2.281892 2.617995 +v -0.832096 -2.992427 3.243009 +v 0.832096 -3.666983 2.980051 +v -0.832096 -3.666983 2.980051 +v 1.052369 3.020581 5.130578 +v 0.580398 3.410161 5.307024 +v 0.580398 5.143754 5.307024 +v 1.148529 -8.749960 -1.489983 +v 1.148529 7.218984 0.843370 +v 0.957142 7.218986 7.609766 +v -0.957142 7.863286 5.710876 +v 1.965886 6.807342 5.848535 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 -0.9983 -0.0575 +vn -0.0000 -0.9772 -0.2125 +vn -0.0000 -0.9666 -0.2562 +vn -0.0000 -0.4950 0.8689 +vn 1.0000 -0.0000 -0.0000 +vn -0.0053 0.6390 -0.7692 +vn -0.0000 0.6406 -0.7679 +vn -0.0035 0.6415 -0.7671 +vn -0.0000 -0.9606 -0.2778 +vn -0.0000 -0.9397 -0.3420 +vn -0.0000 0.1886 -0.9821 +vn -0.0000 0.6463 -0.7631 +vn -0.0036 0.6433 -0.7656 +vn -0.0000 0.8070 0.5905 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 0.9924 0.1232 +vn -0.0000 -0.5336 0.8457 +vn -0.0011 -0.5347 0.8451 +vn -0.0008 -0.5346 0.8451 +vn 0.0002 0.9819 0.1892 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 0.8598 0.5106 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 -0.9851 -0.1717 +vn -0.0000 -0.9356 0.3532 +vn -0.0000 -0.9999 0.0171 +vn -0.0000 0.3735 0.9276 +vn -0.0000 -0.2142 0.9768 +vn -0.0000 -0.1128 0.9936 +vn -0.0000 -0.6774 0.7356 +vn -0.0000 -0.5021 0.8648 +vn -0.0000 -0.9934 -0.1149 +vn -0.0000 -0.0000 -1.0000 +vn -0.9978 0.0662 -0.0000 +vn -0.8965 0.4430 -0.0000 +vn -0.9472 0.3207 -0.0000 +vn -0.9575 -0.1451 0.2492 +vn -0.9344 -0.2629 0.2404 +vn -0.9389 -0.2242 0.2612 +vn -0.8781 -0.1764 0.4448 +vn -0.9776 -0.1677 0.1269 +vn 0.9978 -0.0662 -0.0000 +vn 0.8965 -0.4430 -0.0000 +vn 0.9472 -0.3207 -0.0000 +vn -0.6588 0.7523 -0.0000 +vn -0.7523 0.6588 -0.0000 +vn 0.6588 -0.7523 -0.0000 +vn 0.7523 -0.6588 -0.0000 +vn -0.3207 0.9472 -0.0001 +vn -0.4430 0.8965 -0.0001 +vn 0.3207 -0.9472 -0.0000 +vn 0.4430 -0.8965 -0.0000 +vn 0.0662 0.9978 -0.0000 +vn -0.0661 0.9978 -0.0000 +vn -0.0662 -0.9978 -0.0000 +vn 0.0661 -0.9978 -0.0000 +vn 0.0661 0.9978 -0.0000 +vn 0.4430 0.8965 -0.0000 +vn 0.3207 0.9472 -0.0000 +vn -0.0661 -0.9978 -0.0000 +vn -0.4430 -0.8965 -0.0000 +vn -0.3207 -0.9472 -0.0000 +vn 0.7523 0.6588 -0.0000 +vn 0.6588 0.7523 -0.0000 +vn -0.7523 -0.6588 -0.0000 +vn -0.6588 -0.7523 -0.0000 +vn 0.9472 0.3207 -0.0000 +vn 0.8965 0.4430 -0.0001 +vn -0.9472 -0.3207 -0.0000 +vn -0.8965 -0.4430 -0.0000 +vn 0.9978 0.0662 -0.0000 +vn -0.9978 -0.0662 -0.0000 +vn 0.8965 -0.4430 0.0001 +vn -0.3207 0.9472 -0.0000 +vn -0.4430 0.8965 -0.0000 +vn 0.0662 -0.9978 -0.0000 +vn -0.0662 0.9978 -0.0000 +vn -0.4430 -0.8965 0.0001 +vn -0.3207 -0.9472 0.0001 +vn 0.8965 0.4430 -0.0000 +vn -0.0000 0.9071 -0.4210 +vn -0.0000 0.9960 0.0890 +vn -0.0000 0.9960 -0.0890 +vn -0.0000 0.9960 0.0889 +vn -0.0000 0.8181 0.5750 +vn -0.0000 0.9071 0.4210 +vn -0.0000 0.5751 -0.8181 +vn -0.0000 0.8181 -0.5751 +vn -0.0000 0.4210 0.9071 +vn -0.0000 0.5750 0.8181 +vn -0.0000 0.0890 -0.9960 +vn -0.0000 0.4210 -0.9071 +vn -0.0000 -0.0889 0.9960 +vn -0.0000 0.0889 0.9960 +vn -0.0000 -0.4210 -0.9071 +vn -0.0000 0.0889 -0.9960 +vn -0.0000 -0.0890 -0.9960 +vn -0.0000 -0.5750 0.8181 +vn -0.0000 -0.4210 0.9071 +vn -0.0000 -0.8181 -0.5751 +vn -0.0000 -0.5751 -0.8181 +vn -0.0000 -0.9071 0.4210 +vn -0.0000 -0.8181 0.5750 +vn -0.0000 -0.9960 -0.0890 +vn -0.0000 -0.9071 -0.4210 +vn -0.0000 -0.9960 -0.0889 +vn -0.0000 -0.9960 0.0889 +vn -0.0000 -0.9960 0.0890 +vn -0.0000 -0.8181 -0.5750 +vn -0.0000 -0.5751 0.8181 +vn -0.0000 -0.8181 0.5751 +vn -0.0000 -0.5750 -0.8181 +vn -0.0000 -0.0890 0.9960 +vn -0.0000 0.0890 0.9960 +vn -0.0000 0.5750 -0.8181 +vn -0.0000 0.8181 0.5751 +vn -0.0000 0.5751 0.8181 +vn -0.0000 0.8181 -0.5750 +vn -0.0000 0.9960 -0.0889 +vn -0.8737 -0.1315 -0.4684 +vn -0.9862 -0.0041 -0.1656 +vn -0.8872 0.2205 -0.4054 +vn -0.7168 -0.3702 0.5909 +vn -0.0822 -0.6000 0.7957 +vn -0.6767 -0.2422 0.6953 +vn -0.9125 0.1216 -0.3905 +vn -0.9940 0.0221 -0.1068 +vn -0.9139 -0.0027 -0.4059 +vn -0.9673 0.2232 0.1202 +vn -0.9954 -0.0433 0.0853 +vn -0.9560 0.1006 0.2757 +vn -0.9685 -0.0991 0.2284 +vn -0.9504 -0.2074 0.2318 +vn -0.9883 0.1182 0.0969 +vn -0.4530 0.2801 -0.8464 +vn -0.4864 0.0390 -0.8729 +vn -0.9142 0.0704 -0.3992 +vn -0.1396 0.2721 -0.9521 +vn -0.0360 0.1283 -0.9911 +vn -0.8460 0.1204 -0.5194 +vn -0.9076 0.3995 -0.1294 +vn -0.4854 0.7468 -0.4545 +vn -0.5755 0.8091 -0.1186 +vn -0.0534 0.7747 -0.6301 +vn -0.3445 0.4756 -0.8094 +vn -0.9779 -0.0642 -0.1992 +vn -0.9947 0.0245 -0.0996 +vn -0.9931 -0.0834 -0.0820 +vn -0.9058 -0.1444 -0.3984 +vn -0.9566 0.2613 0.1289 +vn -0.9201 -0.3126 0.2362 +vn -0.9313 -0.3635 0.0218 +vn -0.9227 -0.2852 0.2592 +vn -0.9128 -0.3909 0.1182 +vn -0.9312 -0.3570 0.0740 +vn -0.9684 -0.1692 0.1830 +vn -0.9038 -0.3696 0.2156 +vn -0.9809 -0.1776 0.0789 +vn -0.9786 -0.2002 0.0480 +vn -0.9987 -0.0475 -0.0201 +vn -0.9688 0.2308 0.0903 +vn -0.9376 0.0952 0.3344 +vn -0.9649 0.1135 0.2367 +vn -0.9495 0.2763 0.1486 +vn -0.9832 0.0556 0.1736 +vn -0.9844 0.1276 0.1212 +vn -0.9290 0.2500 0.2729 +vn -0.9956 -0.0665 0.0653 +vn -0.9625 -0.0724 0.2614 +vn -0.9851 -0.1084 0.1335 +vn -0.9833 -0.0502 0.1751 +vn -0.9846 -0.0087 0.1745 +vn -0.9900 0.1007 0.0988 +vn -0.8989 0.0907 0.4287 +vn -0.9942 -0.0403 -0.1002 +vn -0.9968 -0.0448 -0.0663 +vn -0.8695 -0.2858 -0.4029 +vn -0.9335 -0.3023 -0.1926 +vn -0.9089 -0.4170 0.0072 +vn -0.9846 -0.1696 0.0430 +vn -0.9932 -0.0221 -0.1146 +vn -0.9900 0.0999 -0.0998 +vn -0.9920 0.1239 -0.0234 +vn -0.5747 0.5494 0.6065 +vn -0.8998 0.4026 0.1680 +vn -0.0745 0.7122 0.6980 +vn -0.3706 0.2403 0.8972 +vn -0.0963 -0.2070 0.9736 +vn -0.0758 0.2517 0.9648 +vn -0.6409 -0.7662 -0.0458 +vn -0.9298 -0.2330 0.2848 +vn -0.0000 -0.5750 0.8182 +vn -0.0000 -0.5750 -0.8182 +vn -0.0000 -0.8182 -0.5750 +vn -0.0000 0.5750 0.8182 +vn -0.0000 -0.0889 -0.9960 +vn -0.0000 -0.9239 -0.3826 +vn -0.0000 0.9239 -0.3826 +vn -0.0001 0.9675 -0.2527 +vn -0.0000 -0.3827 -0.9239 +vn -0.0000 0.3827 -0.9239 +vn -0.0000 0.8629 -0.5054 +vn -0.0000 -0.9676 -0.2526 +vn -0.0000 -0.8629 -0.5054 +vn 0.0002 -0.9676 -0.2526 +vn -0.0000 0.9906 0.1368 +vn -0.0000 0.6038 0.7972 +vn -0.0000 0.7972 0.6038 +vn -0.0000 -0.1368 0.9906 +vn -0.0000 0.1368 0.9906 +vn -0.0000 -0.7972 0.6037 +vn -0.0000 -0.6038 0.7972 +vn -0.0000 -0.7972 0.6038 +vn -0.0000 -0.9906 -0.1368 +vn -0.0000 -0.9906 0.1368 +vn -0.0000 -0.6038 -0.7972 +vn -0.0000 -0.7972 -0.6038 +vn -0.0000 0.1368 -0.9906 +vn -0.0000 -0.1368 -0.9906 +vn -1.0000 -0.0000 0.0037 +vn -1.0000 -0.0000 0.0075 +vn -0.0000 0.7972 -0.6038 +vn -0.0000 0.6038 -0.7972 +vn -0.5344 0.1812 0.8256 +vn -0.5073 -0.3627 0.7818 +vn -0.5247 -0.1884 0.8302 +vn -0.3422 0.8174 0.4635 +vn -0.5018 0.4301 0.7505 +vn -0.0000 0.9906 -0.1368 +vn 0.0138 0.7488 -0.6626 +vn -0.0105 0.4047 -0.9144 +vn 0.0087 0.3748 -0.9271 +vn 0.0713 0.8730 -0.4825 +vn -0.0055 0.9136 -0.4067 +vn -0.9958 -0.0324 -0.0853 +vn -0.9474 -0.3190 -0.0268 +vn 0.9932 -0.0426 -0.1083 +vn 0.9930 -0.0531 -0.1054 +vn 0.9015 -0.4270 -0.0701 +vn 0.9474 -0.3190 -0.0268 +vn 0.4260 -0.8999 -0.0934 +vn -0.4482 -0.5058 0.7370 +vn -0.4877 -0.5255 0.6971 +vn -0.9280 -0.3587 -0.1012 +vn -0.8534 -0.4727 -0.2197 +vn -0.4260 -0.8989 -0.1030 +vn 0.9394 -0.1625 -0.3019 +vn 0.5145 -0.3209 0.7952 +vn 0.9295 -0.1383 0.3419 +vn 0.9268 -0.1407 0.3483 +vn -0.6818 -0.5955 -0.4249 +vn -0.9911 -0.0000 0.1331 +vn -0.9978 -0.0000 0.0666 +vn 0.9404 0.1281 -0.3149 +vn 0.9304 0.1374 -0.3398 +vn -0.0000 -0.9918 0.1279 +vn -0.0000 -0.9960 -0.0893 +vn 0.1721 0.4024 -0.8991 +vn -0.0000 0.4238 -0.9058 +vn -0.9476 -0.1416 -0.2864 +vn -0.9930 -0.0531 -0.1054 +vn -0.9476 -0.1416 -0.2865 +vn 0.8934 -0.3903 -0.2225 +vn -1.0000 -0.0006 0.0001 +vn -1.0000 -0.0010 -0.0002 +vn -0.9886 -0.0584 0.1389 +vn -1.0000 -0.0000 -0.0006 +vn -1.0000 0.0008 -0.0006 +vn -0.8859 -0.1792 0.4279 +vn -0.9569 -0.1081 0.2694 +vn -0.9391 -0.1502 0.3090 +vn -0.9371 -0.1343 0.3223 +vn 0.4203 -0.4751 0.7730 +vn 0.3339 -0.2816 0.8996 +vn 0.8896 -0.1729 0.4226 +vn -0.9473 0.1523 -0.2819 +vn -0.9802 0.0091 -0.1979 +vn -0.2835 -0.4795 -0.8305 +vn -0.2965 -0.1206 -0.9474 +vn -0.0364 0.1142 -0.9928 +vn 0.9363 0.1191 -0.3304 +vn -0.9363 0.1191 -0.3304 +vn 0.9910 0.0439 -0.1265 +vn -0.9910 0.0439 -0.1265 +vn -0.8724 -0.1036 0.4777 +vn -0.9603 0.0267 0.2778 +vn -0.9801 -0.1117 0.1641 +vn -0.9999 -0.0132 -0.0001 +vn -0.9719 -0.0333 0.2329 +vn -0.9376 0.1183 -0.3271 +vn -0.9212 0.1912 -0.3389 +vn -0.0000 -0.9072 -0.4206 +vn 0.0208 -0.2762 -0.9609 +vn -0.0000 0.2238 -0.9746 +vn -0.0000 0.1500 -0.9887 +vn -0.9257 -0.1856 -0.3295 +vn -0.9477 -0.2262 -0.2251 +vn -0.9436 -0.3063 -0.1256 +vn -0.5812 -0.6406 -0.5019 +vn -0.0856 0.9400 -0.3303 +vn -0.0807 0.8763 -0.4749 +vn 0.0006 0.2651 -0.9642 +vn -0.9910 0.0440 -0.1265 +vn -0.9363 0.1191 -0.3303 +vn -0.4139 0.3096 -0.8560 +vn -0.3758 -0.8080 -0.4538 +vn -0.3691 -0.8001 -0.4728 +vn -0.3743 -0.7996 -0.4696 +vn -0.3715 0.2637 -0.8902 +vn -0.3430 0.0002 -0.9393 +vn -0.3595 0.1300 -0.9240 +vn -0.3937 -0.6141 -0.6841 +vn 0.9227 -0.2852 0.2592 +vn 0.8989 0.0907 0.4287 +vn 0.6998 -0.1880 0.6892 +vn 0.9504 -0.2074 0.2318 +vn 0.9201 -0.3126 0.2362 +vn 0.6767 -0.2422 0.6953 +vn 0.9649 0.1135 0.2367 +vn 0.9883 0.1182 0.0969 +vn 0.7168 -0.3702 0.5909 +vn 0.9376 0.0952 0.3344 +vn 0.9560 0.1006 0.2757 +vn 0.4864 0.0390 -0.8729 +vn 0.9142 0.0704 -0.3992 +vn 0.9058 -0.1444 -0.3984 +vn 0.0717 -0.2461 -0.9666 +vn 0.0360 0.1283 -0.9911 +vn 0.9139 -0.0027 -0.4059 +vn 0.9125 0.1216 -0.3905 +vn 0.8460 0.1204 -0.5194 +vn 0.9083 -0.1711 -0.3818 +vn 0.4795 -0.1233 -0.8689 +vn 0.8695 -0.2858 -0.4029 +vn 0.3927 -0.4709 -0.7900 +vn 0.8737 -0.1315 -0.4684 +vn 0.3129 -0.4800 -0.8196 +vn 0.8872 0.2205 -0.4054 +vn 0.3805 -0.0664 -0.9224 +vn 0.5755 0.8091 -0.1186 +vn 0.3592 0.8985 0.2523 +vn 0.8999 0.4025 0.1679 +vn 0.0333 -0.3953 -0.9180 +vn -0.0238 -0.5460 -0.8375 +vn -0.0633 -0.2827 -0.9571 +vn -0.0221 0.3133 -0.9494 +vn 0.3445 0.4756 -0.8094 +vn 0.0128 -0.0140 -0.9998 +vn 0.0009 0.2043 -0.9789 +vn 0.9968 -0.0448 -0.0663 +vn 0.9932 -0.0221 -0.1146 +vn 0.9089 -0.4170 0.0072 +vn 0.9846 -0.1696 0.0430 +vn 0.9298 -0.2330 0.2848 +vn 0.4446 -0.3490 -0.8249 +vn 0.9076 0.3995 -0.1294 +vn 0.0550 0.2948 -0.9540 +vn 0.0963 -0.2070 0.9736 +vn 0.0822 -0.6000 0.7957 +vn 0.9940 0.0221 -0.1068 +vn 0.9954 -0.0433 0.0853 +vn 0.4530 0.2801 -0.8464 +vn 0.4854 0.7468 -0.4545 +vn 0.0534 0.7747 -0.6301 +vn 0.9920 0.1239 -0.0234 +vn 0.9900 0.0999 -0.0998 +vn 0.9900 0.1007 0.0988 +vn 0.9862 -0.0041 -0.1656 +vn -0.1765 -0.9638 -0.1996 +vn 0.6818 -0.5955 -0.4249 +vn 0.3051 -0.5726 -0.7609 +vn 0.2122 -0.9513 -0.2235 +vn -0.0000 0.0901 -0.9959 +vn 0.4259 -0.8802 -0.2092 +vn 0.9999 0.0167 0.0007 +vn 1.0000 0.0019 0.0034 +vn -0.0000 0.9018 -0.4322 +vn 0.0616 0.9395 -0.3370 +vn -0.0000 0.9364 -0.3510 +vn 0.0856 0.9400 -0.3303 +vn 0.0516 0.7096 -0.7027 +vn -0.0000 0.1126 -0.9936 +vn -0.0000 0.2651 -0.9642 +vn -0.0000 0.2199 -0.9755 +vn -0.0000 0.9018 -0.4321 +vn -0.0613 0.7646 -0.6415 +vn 0.9666 0.0118 -0.2559 +vn 0.9053 -0.1764 0.3864 +vn 0.9477 -0.2262 -0.2251 +vn 0.9436 -0.3063 -0.1256 +vn 0.9389 -0.2242 0.2612 +vn 0.9776 -0.1677 0.1269 +vn 0.9978 -0.0000 0.0666 +vn 0.9257 -0.1856 -0.3295 +vn -0.8895 0.4570 -0.0000 +vn -0.2763 0.9611 0.0002 +vn -0.5527 0.8333 0.0001 +vn -0.9736 0.2284 -0.0000 +vn -0.0976 -0.7839 0.6132 +vn -0.6439 -0.6219 -0.4457 +vn -0.0928 -0.7999 -0.5929 +vn -0.0690 -0.9541 -0.2914 +vn -0.4446 -0.3490 -0.8249 +vn -0.3592 0.8985 0.2523 +vn -0.1134 0.9756 -0.1878 +vn -0.0002 0.2043 -0.9789 +vn -0.0550 0.2948 -0.9540 +vn -0.6998 -0.1881 0.6892 +vn -0.9083 -0.1711 -0.3818 +vn -0.0717 -0.2461 -0.9666 +vn -0.4795 -0.1233 -0.8689 +vn -0.3927 -0.4709 -0.7900 +vn -0.3129 -0.4800 -0.8196 +vn -0.3805 -0.0664 -0.9224 +vn -0.0333 -0.3953 -0.9180 +vn 0.0238 -0.5460 -0.8375 +vn 0.0633 -0.2827 -0.9571 +vn 0.0221 0.3133 -0.9494 +vn -0.0128 -0.0140 -0.9998 +vn 0.9673 0.2232 0.1202 +vn 0.9685 -0.0991 0.2284 +vn 0.1396 0.2721 -0.9521 +vn 0.9779 -0.0642 -0.1992 +vn 0.9931 -0.0834 -0.0820 +vn 0.9335 -0.3023 -0.1926 +vn 0.9566 0.2613 0.1289 +vn 0.9313 -0.3635 0.0219 +vn 0.9128 -0.3909 0.1182 +vn 0.9786 -0.2002 0.0480 +vn 0.9312 -0.3570 0.0740 +vn 0.9038 -0.3696 0.2156 +vn 0.9684 -0.1692 0.1830 +vn 0.9809 -0.1776 0.0789 +vn 0.9987 -0.0475 -0.0201 +vn 0.9688 0.2308 0.0903 +vn 0.9495 0.2763 0.1486 +vn 0.9290 0.2500 0.2729 +vn 0.9844 0.1276 0.1212 +vn 0.9832 0.0556 0.1736 +vn 0.9956 -0.0665 0.0653 +vn 0.9625 -0.0724 0.2614 +vn 0.9851 -0.1084 0.1335 +vn 0.9833 -0.0502 0.1751 +vn 0.9846 -0.0087 0.1745 +vn 0.9942 -0.0403 -0.1002 +vn 0.9947 0.0245 -0.0996 +vn 0.5747 0.5494 0.6065 +vn 0.3706 0.2403 0.8972 +vn 0.0745 0.7122 0.6980 +vn 0.0758 0.2517 0.9648 +vn 0.6409 -0.7662 -0.0458 +vn 0.1193 -0.7677 0.6296 +vn 0.0973 -0.7840 0.6130 +vn 0.6439 -0.6219 -0.4457 +vn 0.0928 -0.7999 -0.5929 +vn 0.1134 0.9756 -0.1878 +vn 0.0654 0.9680 0.2423 +vn -0.3723 -0.3800 -0.8468 +vn -0.6432 -0.3414 -0.6854 +vn -0.4592 -0.4012 -0.7925 +vn -0.4263 -0.8678 -0.2554 +vn -0.3935 0.1531 -0.9065 +vn -0.5149 0.4477 -0.7311 +vn -0.4133 0.4461 -0.7938 +vn -0.9212 0.1912 -0.3390 +vn -0.9375 0.1183 -0.3271 +vn 0.9999 0.0135 -0.0099 +vn 0.9998 0.0213 0.0011 +vn 0.9996 0.0271 0.0029 +vn -0.9998 0.0213 0.0011 +vn -0.9996 0.0271 0.0029 +vn -0.9997 0.0252 0.0067 +vn 0.8895 0.4570 -0.0000 +vn 0.9736 0.2284 -0.0000 +vn 0.4196 0.9077 -0.0000 +vn -0.0000 -0.9568 -0.2908 +vn -0.9999 0.0167 0.0007 +vn -0.9995 0.0314 -0.0020 +vn -0.0004 -0.2799 0.9600 +vn 0.0001 -0.5968 0.8024 +vn -0.0004 -0.5061 0.8625 +vn 0.0001 -0.7783 0.6279 +vn -0.0000 -0.8622 0.5066 +vn -0.0000 -0.9667 0.2558 +vn -0.0004 -0.2668 0.9638 +vn -0.9911 -0.0000 0.1332 +vn -0.9894 -0.1160 0.0873 +vn 0.8417 -0.2936 0.4532 +vn 0.4395 -0.3448 0.8294 +vn 0.4540 -0.0806 0.8873 +vn -1.0000 0.0006 0.0012 +vn 1.0000 0.0095 -0.0023 +vn 0.9997 0.0252 0.0067 +vn 0.0001 0.2199 -0.9755 +vn -0.0616 0.9395 -0.3370 +vn -0.4392 0.0051 0.8984 +vn -0.3221 -0.2815 0.9039 +vn -0.4149 -0.3225 0.8508 +vn -0.4184 -0.0205 0.9080 +vn 0.0147 -0.3602 0.9328 +vn -0.3221 -0.2814 0.9039 +vn -0.1337 0.9663 0.2198 +vn -0.9800 -0.0000 0.1988 +vn -0.5451 0.8383 -0.0000 +vn -0.2015 0.9795 0.0001 +vn -0.9362 0.3516 0.0001 +vn -0.9334 -0.3588 -0.0000 +vn -0.5359 -0.8443 -0.0000 +vn -0.0000 0.9989 0.0471 +vn -0.0000 0.9992 0.0392 +vn -0.0000 0.9931 0.1175 +vn -0.0000 0.9992 0.0393 +vn 0.1595 0.9872 0.0003 +vn 0.9363 0.3512 -0.0000 +vn 0.9362 0.3516 0.0001 +vn 0.5451 0.8383 0.0001 +vn 0.9334 -0.3588 -0.0000 +vn 0.4063 -0.9137 -0.0000 +vn -0.2679 -0.9634 -0.0000 +vn -0.0000 -0.5363 0.8440 +vn -0.0005 -0.5361 0.8442 +vn -0.0000 -0.8176 -0.5758 +vn -0.9850 -0.0671 0.1589 +vn 0.4464 -0.6134 0.6515 +vn -0.0000 -0.9239 0.3827 +vn -0.0000 -0.7929 0.6094 +vn 0.4465 -0.6134 0.6515 +vn 0.0655 0.8693 0.4899 +vn 0.0479 0.9748 0.2177 +vn 0.0450 0.9407 0.3362 +vn 1.0000 -0.0001 -0.0003 +vn 1.0000 0.0004 -0.0008 +vn 1.0000 -0.0007 -0.0006 +vn 0.9756 -0.0842 0.2027 +vn 1.0000 0.0004 -0.0001 +vn 0.4540 -0.0805 0.8873 +vn -0.0000 -0.1298 0.9915 +vn 0.0112 -0.9503 0.3111 +vn 1.0000 0.0002 -0.0001 +vn 1.0000 -0.0007 -0.0000 +vn -0.0000 -0.7071 0.7071 +vn -0.0000 0.6037 0.7972 +vn -0.0000 0.7972 0.6037 +vn -0.0000 0.7071 -0.7071 +vn 0.4240 0.3427 -0.8383 +vn -0.9999 0.0135 -0.0099 +vn 0.4193 0.9079 0.0001 +vn -1.0000 0.0095 -0.0023 +vn 0.0001 -0.7972 -0.6037 +vn -0.0001 -0.6037 -0.7972 +vn -0.1722 0.3928 -0.9033 +vn -0.0000 -0.9929 -0.1193 +vn 0.9911 -0.0000 0.1332 +vn -0.0000 -0.9478 0.3188 +vn -0.0000 -0.4448 0.8956 +vn -0.0000 -0.8814 -0.4724 +vn -0.9418 0.2820 0.1830 +vn -0.7726 0.5655 0.2886 +vn 0.0646 -0.2831 0.9569 +vn 0.0405 -0.5936 0.8037 +vn 0.5073 -0.3627 0.7818 +vn 0.5247 -0.1884 0.8302 +vn 0.4877 -0.5255 0.6971 +vn 0.3422 0.8174 0.4635 +vn 0.1337 0.9663 0.2198 +vn 0.5018 0.4301 0.7505 +vn 0.5344 0.1812 0.8256 +vn 1.0000 -0.0000 0.0037 +vn 1.0000 -0.0000 0.0075 +vn 0.0674 -0.0000 0.9977 +vn 0.9894 -0.1160 0.0873 +vn 0.9344 -0.2629 0.2404 +vn -0.9978 -0.0354 0.0555 +vn 0.9575 -0.1436 0.2500 +vn 0.9800 -0.0000 0.1988 +vn -0.0000 -0.2272 0.9739 +vn 0.0002 0.6059 0.7955 +vn -0.0000 0.8184 0.5746 +vn -0.0002 0.3029 0.9530 +vn -0.0000 0.6605 0.7508 +vn -0.0000 -0.3632 0.9317 +vn -0.0000 -0.9906 0.1367 +vn 0.4395 -0.3449 0.8294 +vn 0.3228 -0.2420 0.9150 +vn 0.9719 -0.0333 0.2329 +vn 0.9603 0.0267 0.2778 +vn 0.4392 0.0417 0.8974 +vn 0.4198 -0.1075 0.9012 +vn -0.0197 -0.3607 0.9325 +vn -0.0257 -0.3607 0.9323 +vn 0.5470 -0.3017 0.7809 +vn 0.9801 -0.1117 0.1641 +vn 0.8724 -0.1036 0.4777 +vn -0.4184 -0.0204 0.9080 +vn 0.0385 -0.3613 0.9316 +vn 0.5470 -0.3018 0.7808 +vn 0.4198 -0.1076 0.9012 +vn 1.0000 0.0009 -0.0015 +vn 1.0000 0.0001 -0.0016 +vn 1.0000 0.0006 0.0012 +vn -0.0000 -0.4993 0.8664 +vn -0.0000 -0.2667 0.9638 +vn -0.0000 0.0459 0.9989 +vn -0.0000 -0.0351 0.9994 +vn 0.0006 -0.3409 0.9401 +vn 0.0003 -0.5061 0.8625 +vn 0.0003 -0.3136 0.9496 +vn -0.0000 -0.7783 0.6279 +vn -0.0001 -0.5968 0.8024 +vn -0.0000 0.9970 -0.0770 +vn -0.0000 0.8727 -0.4883 +vn -0.0001 0.9526 -0.3041 +vn -0.0000 0.5657 -0.8246 +vn -0.0000 0.6710 -0.7415 +vn -0.0000 0.9914 0.1311 +vn -0.0000 0.9993 -0.0385 +vn -0.0000 0.1546 -0.9880 +vn -0.0000 0.3091 -0.9510 +vn -0.0000 0.8635 0.5044 +vn -0.0000 0.9650 0.2623 +vn -0.0000 -0.1761 -0.9844 +vn -0.0000 -0.0880 -0.9961 +vn -0.0000 0.6016 0.7988 +vn -0.0000 0.7882 0.6154 +vn -0.0000 -0.5913 -0.8065 +vn -0.0000 -0.4311 -0.9023 +vn -0.0000 0.2927 0.9562 +vn -0.0000 0.4905 0.8714 +vn -0.0000 -0.8104 -0.5859 +vn -0.0000 0.2098 0.9777 +vn -0.0002 -0.2799 0.9600 +vn 0.9212 0.1912 -0.3390 +vn 0.9375 0.1183 -0.3271 +vn 0.9363 0.1191 -0.3303 +vn 0.5457 0.2840 -0.7884 +vn 0.4129 0.3969 -0.8198 +vn 0.3689 0.4766 -0.7979 +vn 0.9473 0.1523 -0.2819 +vn 0.5471 0.1521 -0.8231 +vn 0.4428 -0.7141 -0.5422 +vn 0.4578 -0.2885 -0.8409 +vn 0.6432 -0.3414 -0.6854 +vn 0.2347 -0.0372 -0.9713 +vn 0.3723 -0.3800 -0.8468 +vn 0.3937 -0.6141 -0.6841 +vn 0.3430 0.0002 -0.9393 +vn 0.3691 -0.8001 -0.4728 +vn 0.3715 0.2637 -0.8902 +vn 0.4024 0.2750 -0.8731 +vn 0.3595 0.1300 -0.9240 +vn 0.3758 -0.8080 -0.4538 +vn 0.3743 -0.7997 -0.4695 +vn 0.9910 0.0440 -0.1265 +vn 0.9212 0.1912 -0.3389 +vn 0.9376 0.1183 -0.3271 +vn 0.9999 -0.0132 -0.0001 +vn -0.5587 0.3131 -0.7680 +vn -0.1722 0.3928 -0.9034 +vn -0.9404 0.1281 -0.3149 +vn -0.9295 -0.1383 0.3419 +vn -0.9268 -0.1407 0.3483 +vn -0.3897 -0.3446 0.8541 +vn -0.3829 -0.3454 0.8568 +vn -0.9268 -0.1406 0.3483 +vn 0.2529 -0.3618 0.8973 +vn 0.1722 0.4024 -0.8991 +vn -0.0000 -0.6037 0.7972 +vn -0.4024 0.2750 -0.8731 +vn 0.9995 0.0314 -0.0020 +vn -0.1193 -0.7677 0.6296 +vn -0.0654 0.9680 0.2423 +vn 0.0690 -0.9541 -0.2914 +vn -1.0000 0.0019 0.0034 +vn -0.9363 0.3512 -0.0000 +vn 0.0373 0.8327 0.5525 +vn -0.0000 0.1951 0.9808 +vn -0.0000 -0.9574 0.2887 +vn -0.0000 0.3827 0.9239 +vn 0.4482 -0.5058 0.7370 +vn 0.0004 -0.3409 0.9401 +vn -0.9304 0.1374 -0.3398 +vt 0.359688 0.958662 +vt 0.362249 0.958669 +vt 0.362239 0.962551 +vt 0.331697 0.953329 +vt 0.359702 0.953407 +vt 0.351642 0.961259 +vt 0.811898 0.853744 +vt 0.802908 0.853744 +vt 0.802908 0.855453 +vt 0.510231 0.845136 +vt 0.505784 0.850420 +vt 0.501968 0.847202 +vt 0.477758 0.837077 +vt 0.479214 0.833341 +vt 0.823042 0.855453 +vt 0.823042 0.857179 +vt 0.827595 0.857179 +vt 0.802908 0.857179 +vt 0.811898 0.857179 +vt 0.796689 0.855453 +vt 0.813272 0.857179 +vt 0.813272 0.853744 +vt 0.827595 0.853744 +vt 0.826014 0.853744 +vt 0.826014 0.855453 +vt 0.520442 0.836072 +vt 0.524015 0.833150 +vt 0.535257 0.845043 +vt 0.833203 0.857179 +vt 0.897698 0.596442 +vt 0.896258 0.600185 +vt 0.920512 0.610205 +vt 0.823042 0.853744 +vt 0.516880 0.839562 +vt 0.528775 0.851703 +vt 0.521438 0.859613 +vt 0.833202 0.853744 +vt 0.834678 0.855453 +vt 0.790690 0.954682 +vt 0.780443 0.954656 +vt 0.785161 0.957230 +vt 0.422440 0.965570 +vt 0.450495 0.970002 +vt 0.505626 0.964699 +vt 0.503252 0.978629 +vt 0.508685 0.972269 +vt 0.260623 0.953127 +vt 0.205415 0.960844 +vt 0.177430 0.952890 +vt 0.260584 0.966567 +vt 0.205400 0.966410 +vt 0.790662 0.965283 +vt 0.939733 0.972563 +vt 0.945259 0.969952 +vt 0.939739 0.968680 +vt 0.597353 0.964711 +vt 0.600376 0.972295 +vt 0.594912 0.978629 +vt 0.542169 0.965022 +vt 0.508689 0.967750 +vt 0.507691 0.975401 +vt 0.185454 0.958168 +vt 0.785140 0.965268 +vt 0.949984 0.969959 +vt 0.949986 0.968695 +vt 0.599367 0.975424 +vt 0.542195 0.969746 +vt 0.331659 0.966768 +vt 0.278202 0.966617 +vt 0.278240 0.953177 +vt 0.264946 0.953139 +vt 0.264908 0.966579 +vt 0.269464 0.953153 +vt 0.269426 0.966592 +vt 0.272751 0.953162 +vt 0.272713 0.966602 +vt 0.331675 0.961203 +vt 0.177415 0.958145 +vt 0.364426 0.953420 +vt 0.364412 0.958675 +vt 0.968179 0.972572 +vt 0.957932 0.972563 +vt 0.957935 0.968680 +vt 0.794573 0.954693 +vt 0.804820 0.954720 +vt 0.794545 0.965293 +vt 0.516662 0.969893 +vt 0.516635 0.965166 +vt 0.536604 0.965056 +vt 0.536631 0.969780 +vt 0.422489 0.970295 +vt 0.185446 0.960788 +vt 0.780437 0.957218 +vt 0.945255 0.972571 +vt 0.600401 0.967777 +vt 0.035908 0.941334 +vt 0.035908 0.941635 +vt 0.054072 0.941633 +vt 0.370583 0.810248 +vt 0.374948 0.806042 +vt 0.367858 0.802066 +vt 0.164734 0.678016 +vt 0.213982 0.678118 +vt 0.257519 0.683519 +vt 0.015729 0.600923 +vt 0.122051 0.606551 +vt 0.015721 0.606392 +vt 0.370634 0.800249 +vt 0.812069 0.443349 +vt 0.825366 0.443346 +vt 0.812071 0.451175 +vt 0.842764 0.448237 +vt 0.838841 0.451170 +vt 0.837618 0.443344 +vt 0.051468 0.951958 +vt 0.051191 0.952073 +vt 0.051240 0.952323 +vt 0.035954 0.945310 +vt 0.035954 0.944910 +vt 0.054117 0.944908 +vt 0.053269 0.945680 +vt 0.052868 0.945681 +vt 0.052918 0.945431 +vt 0.035908 0.941935 +vt 0.054072 0.941933 +vt 0.051191 0.945097 +vt 0.050890 0.945097 +vt 0.050841 0.945347 +vt 0.035954 0.944510 +vt 0.054117 0.944508 +vt 0.052499 0.945529 +vt 0.052640 0.945316 +vt 0.035908 0.942235 +vt 0.054072 0.942234 +vt 0.050890 0.952073 +vt 0.050613 0.951958 +vt 0.050471 0.952170 +vt 0.035954 0.944110 +vt 0.054117 0.944108 +vt 0.052215 0.945246 +vt 0.052428 0.945104 +vt 0.035908 0.942536 +vt 0.054072 0.942534 +vt 0.050400 0.951745 +vt 0.050188 0.951887 +vt 0.036076 0.944336 +vt 0.036076 0.943936 +vt 0.054239 0.943934 +vt 0.052062 0.944877 +vt 0.052312 0.944827 +vt 0.035908 0.937730 +vt 0.035908 0.938031 +vt 0.054072 0.938027 +vt 0.050286 0.951468 +vt 0.050035 0.951517 +vt 0.035954 0.943134 +vt 0.035954 0.942734 +vt 0.054117 0.942732 +vt 0.052061 0.944477 +vt 0.052312 0.944526 +vt 0.035908 0.945006 +vt 0.035908 0.945307 +vt 0.054072 0.945304 +vt 0.050286 0.951167 +vt 0.050035 0.951117 +vt 0.035954 0.942334 +vt 0.054117 0.942332 +vt 0.052214 0.944107 +vt 0.052426 0.944249 +vt 0.035908 0.945607 +vt 0.054072 0.945604 +vt 0.050401 0.950890 +vt 0.050188 0.950748 +vt 0.035954 0.941934 +vt 0.054117 0.941932 +vt 0.052496 0.943824 +vt 0.052638 0.944036 +vt 0.035908 0.938631 +vt 0.035908 0.938932 +vt 0.054072 0.938929 +vt 0.050613 0.950677 +vt 0.050471 0.950465 +vt 0.035954 0.941534 +vt 0.054117 0.941532 +vt 0.052865 0.943670 +vt 0.052915 0.943920 +vt 0.035908 0.939232 +vt 0.054072 0.939229 +vt 0.050891 0.950562 +vt 0.050841 0.950312 +vt 0.035954 0.941134 +vt 0.054117 0.941132 +vt 0.053265 0.943670 +vt 0.053216 0.943920 +vt 0.035908 0.939532 +vt 0.054072 0.939530 +vt 0.051191 0.950562 +vt 0.051241 0.950312 +vt 0.035954 0.940734 +vt 0.054117 0.940732 +vt 0.053635 0.943822 +vt 0.053494 0.944035 +vt 0.035908 0.939833 +vt 0.054072 0.939830 +vt 0.051468 0.950678 +vt 0.051610 0.950465 +vt 0.035954 0.940334 +vt 0.054117 0.940332 +vt 0.053918 0.944104 +vt 0.053706 0.944247 +vt 0.035908 0.940133 +vt 0.054072 0.940130 +vt 0.051681 0.950890 +vt 0.051893 0.950748 +vt 0.035954 0.939934 +vt 0.054117 0.939932 +vt 0.054072 0.944474 +vt 0.053822 0.944524 +vt 0.035908 0.940433 +vt 0.054072 0.940431 +vt 0.051796 0.951167 +vt 0.052046 0.951118 +vt 0.035954 0.946910 +vt 0.035954 0.946510 +vt 0.054117 0.946508 +vt 0.054073 0.944874 +vt 0.053822 0.944824 +vt 0.035908 0.940734 +vt 0.054072 0.940731 +vt 0.051796 0.951468 +vt 0.052046 0.951518 +vt 0.035954 0.946110 +vt 0.054117 0.946108 +vt 0.053920 0.945244 +vt 0.053708 0.945102 +vt 0.035908 0.941034 +vt 0.054072 0.941032 +vt 0.051681 0.951746 +vt 0.051893 0.951887 +vt 0.035954 0.945710 +vt 0.054117 0.945708 +vt 0.053638 0.945527 +vt 0.053496 0.945315 +vt 0.054072 0.941332 +vt 0.051610 0.952170 +vt 0.054117 0.945308 +vt 0.053218 0.945430 +vt 0.395541 0.956521 +vt 0.399095 0.962729 +vt 0.398106 0.962988 +vt 0.399068 0.969883 +vt 0.398081 0.969613 +vt 0.395468 0.976063 +vt 0.394748 0.975338 +vt 0.389257 0.979614 +vt 0.388998 0.978628 +vt 0.382104 0.979585 +vt 0.382373 0.978601 +vt 0.375923 0.975984 +vt 0.376648 0.975264 +vt 0.372372 0.969775 +vt 0.373359 0.969515 +vt 0.372399 0.962623 +vt 0.373386 0.962892 +vt 0.375999 0.956443 +vt 0.376720 0.957167 +vt 0.382206 0.952890 +vt 0.382469 0.953878 +vt 0.389360 0.952919 +vt 0.389091 0.953904 +vt 0.394817 0.957240 +vt 0.838965 0.931013 +vt 0.832339 0.930980 +vt 0.832314 0.936076 +vt 0.337664 0.995947 +vt 0.344817 0.995957 +vt 0.344820 0.994249 +vt 0.253929 0.963378 +vt 0.253961 0.970006 +vt 0.241579 0.966752 +vt 0.845592 0.931046 +vt 0.838941 0.936108 +vt 0.351970 0.995967 +vt 0.351972 0.994259 +vt 0.250678 0.975761 +vt 0.852219 0.931079 +vt 0.845567 0.936141 +vt 0.359124 0.995976 +vt 0.359126 0.994268 +vt 0.244954 0.979102 +vt 0.779328 0.930717 +vt 0.772701 0.930684 +vt 0.772676 0.935780 +vt 0.366278 0.995986 +vt 0.366281 0.994278 +vt 0.238328 0.979135 +vt 0.785955 0.930750 +vt 0.779303 0.935813 +vt 0.373434 0.995995 +vt 0.373437 0.994286 +vt 0.232572 0.975848 +vt 0.792581 0.930783 +vt 0.785929 0.935845 +vt 0.380592 0.996004 +vt 0.380594 0.994295 +vt 0.229232 0.970128 +vt 0.799208 0.930816 +vt 0.792556 0.935878 +vt 0.387750 0.996012 +vt 0.387752 0.994303 +vt 0.229199 0.963502 +vt 0.805834 0.930849 +vt 0.799183 0.935911 +vt 0.394910 0.996020 +vt 0.394911 0.994310 +vt 0.232484 0.957745 +vt 0.812460 0.930881 +vt 0.805809 0.935944 +vt 0.402070 0.996027 +vt 0.402072 0.994318 +vt 0.238206 0.954406 +vt 0.819087 0.930915 +vt 0.812435 0.935977 +vt 0.316208 0.995915 +vt 0.323359 0.995926 +vt 0.323362 0.994218 +vt 0.244832 0.954373 +vt 0.825713 0.930947 +vt 0.819061 0.936010 +vt 0.330512 0.995936 +vt 0.330514 0.994229 +vt 0.250586 0.957656 +vt 0.825687 0.936043 +vt 0.337666 0.994239 +vt 0.295338 0.103287 +vt 0.295221 0.104723 +vt 0.293302 0.103617 +vt 0.409234 0.135866 +vt 0.410611 0.137862 +vt 0.319804 0.145507 +vt 0.309657 0.110962 +vt 0.309823 0.112593 +vt 0.306707 0.110882 +vt 0.328674 0.137629 +vt 0.404333 0.130464 +vt 0.328247 0.138878 +vt 0.319775 0.144719 +vt 0.317240 0.144505 +vt 0.322554 0.143866 +vt 0.403938 0.100755 +vt 0.405721 0.101225 +vt 0.404279 0.105677 +vt 0.403791 0.098527 +vt 0.405876 0.098902 +vt 0.309891 0.106421 +vt 0.290334 0.107950 +vt 0.287801 0.103905 +vt 0.286363 0.106300 +vt 0.286167 0.102470 +vt 0.292374 0.100537 +vt 0.407173 0.108601 +vt 0.404441 0.107178 +vt 0.407718 0.109926 +vt 0.407977 0.107246 +vt 0.328434 0.133594 +vt 0.314711 0.143246 +vt 0.316677 0.139029 +vt 0.312958 0.141183 +vt 0.317532 0.135389 +vt 0.312794 0.139989 +vt 0.319955 0.127728 +vt 0.319269 0.131437 +vt 0.317360 0.129659 +vt 0.314226 0.135381 +vt 0.319718 0.142303 +vt 0.322593 0.139719 +vt 0.327219 0.140192 +vt 0.325454 0.142462 +vt 0.324800 0.135588 +vt 0.325027 0.127340 +vt 0.327174 0.129527 +vt 0.325386 0.131443 +vt 0.319686 0.138706 +vt 0.322039 0.131554 +vt 0.321220 0.135209 +vt 0.322767 0.126903 +vt 0.288842 0.142654 +vt 0.286523 0.140196 +vt 0.288488 0.144289 +vt 0.296744 0.105669 +vt 0.303415 0.111921 +vt 0.297301 0.104416 +vt 0.408817 0.109428 +vt 0.407352 0.130669 +vt 0.405962 0.129635 +vt 0.306196 0.112876 +vt 0.293525 0.104978 +vt 0.291353 0.108873 +vt 0.281673 0.142822 +vt 0.285169 0.140549 +vt 0.279556 0.143871 +vt 0.286951 0.148225 +vt 0.288440 0.150917 +vt 0.286064 0.150224 +vt 0.410802 0.134669 +vt 0.405654 0.131658 +vt 0.200676 0.976738 +vt 0.198506 0.962311 +vt 0.206953 0.963581 +vt 0.177491 0.953870 +vt 0.174541 0.955967 +vt 0.174214 0.955054 +vt 0.179011 0.950603 +vt 0.176755 0.953254 +vt 0.170974 0.956250 +vt 0.171141 0.955319 +vt 0.178740 0.946996 +vt 0.178071 0.950430 +vt 0.176717 0.943925 +vt 0.177824 0.947310 +vt 0.167756 0.954771 +vt 0.168348 0.954049 +vt 0.173219 0.942341 +vt 0.176033 0.944690 +vt 0.169417 0.942815 +vt 0.173064 0.943346 +vt 0.165672 0.951916 +vt 0.166544 0.951571 +vt 0.166596 0.945097 +vt 0.169843 0.943734 +vt 0.165246 0.948395 +vt 0.167364 0.945664 +vt 0.166181 0.948525 +vt 0.178034 0.954320 +vt 0.174785 0.956657 +vt 0.179705 0.950732 +vt 0.170851 0.956935 +vt 0.179415 0.946774 +vt 0.177257 0.943358 +vt 0.167318 0.955307 +vt 0.173333 0.941582 +vt 0.169069 0.942125 +vt 0.165031 0.952168 +vt 0.166033 0.944684 +vt 0.164562 0.948303 +vt 0.507413 0.952649 +vt 0.505313 0.947007 +vt 0.509953 0.950848 +vt 0.813137 0.936030 +vt 0.816999 0.936042 +vt 0.817012 0.931590 +vt 0.809275 0.936018 +vt 0.813150 0.931578 +vt 0.511269 0.948024 +vt 0.820861 0.936053 +vt 0.820874 0.931600 +vt 0.504339 0.952914 +vt 0.511023 0.944905 +vt 0.824723 0.936065 +vt 0.824738 0.931614 +vt 0.805411 0.936006 +vt 0.809288 0.931566 +vt 0.509232 0.942284 +vt 0.828587 0.936077 +vt 0.828600 0.931624 +vt 0.501546 0.951644 +vt 0.506263 0.940940 +vt 0.789963 0.935960 +vt 0.789976 0.931508 +vt 0.776758 0.931469 +vt 0.801550 0.935995 +vt 0.805426 0.931555 +vt 0.503041 0.941329 +vt 0.770442 0.935901 +vt 0.773938 0.935912 +vt 0.773952 0.931460 +vt 0.499743 0.949165 +vt 0.500563 0.943259 +vt 0.793825 0.935972 +vt 0.793838 0.931519 +vt 0.797687 0.935984 +vt 0.801564 0.931543 +vt 0.499379 0.946119 +vt 0.797702 0.931532 +vt 0.776744 0.935920 +vt 0.196413 0.977281 +vt 0.841807 0.936117 +vt 0.767649 0.931441 +vt 0.767636 0.935893 +vt 0.179609 0.928425 +vt 0.171162 0.927155 +vt 0.173740 0.925126 +vt 0.204601 0.978514 +vt 0.267733 0.946344 +vt 0.264866 0.947523 +vt 0.267728 0.948720 +vt 0.113559 0.986588 +vt 0.113545 0.988963 +vt 0.169391 0.989268 +vt 0.912369 0.968520 +vt 0.914046 0.966837 +vt 0.915237 0.969701 +vt 0.266045 0.950393 +vt 0.113533 0.991338 +vt 0.169378 0.991642 +vt 0.916421 0.966832 +vt 0.263670 0.950389 +vt 0.113520 0.993713 +vt 0.169365 0.994017 +vt 0.918104 0.968508 +vt 0.261993 0.948704 +vt 0.113623 0.974714 +vt 0.113610 0.977089 +vt 0.169456 0.977394 +vt 0.918104 0.970883 +vt 0.262000 0.946331 +vt 0.113597 0.979464 +vt 0.169443 0.979768 +vt 0.916433 0.972566 +vt 0.263683 0.944656 +vt 0.113584 0.981839 +vt 0.169430 0.982143 +vt 0.278275 0.840654 +vt 0.280295 0.842503 +vt 0.278989 0.832199 +vt 0.914053 0.972571 +vt 0.266059 0.944661 +vt 0.369894 0.831101 +vt 0.113571 0.984213 +vt 0.169417 0.984518 +vt 0.912375 0.970895 +vt 0.467682 0.428415 +vt 0.467409 0.426444 +vt 0.466533 0.426181 +vt 0.468381 0.429055 +vt 0.466914 0.428943 +vt 0.169404 0.986893 +vt 0.920370 0.565509 +vt 0.944401 0.554243 +vt 0.896376 0.554167 +vt 0.897668 0.571337 +vt 0.920362 0.571097 +vt 0.277841 0.781228 +vt 0.285343 0.783006 +vt 0.281869 0.774704 +vt 0.160089 0.800284 +vt 0.159623 0.798905 +vt 0.163138 0.795437 +vt 0.479286 0.894667 +vt 0.489683 0.897471 +vt 0.480471 0.884403 +vt 0.467929 0.425487 +vt 0.467205 0.425127 +vt 0.477729 0.848052 +vt 0.472954 0.850913 +vt 0.479582 0.858578 +vt 0.157244 0.800156 +vt 0.498939 0.421464 +vt 0.494112 0.421021 +vt 0.147537 0.667691 +vt 0.138873 0.673114 +vt 0.147618 0.628731 +vt 0.133643 0.683264 +vt 0.155132 0.676881 +vt 0.525965 0.426373 +vt 0.523581 0.425654 +vt 0.523015 0.509761 +vt 0.465526 0.858808 +vt 0.481265 0.779540 +vt 0.480607 0.772219 +vt 0.431532 0.784011 +vt 0.379766 0.803761 +vt 0.488548 0.791601 +vt 0.479552 0.788234 +vt 0.488196 0.788828 +vt 0.816605 0.798274 +vt 0.800394 0.810525 +vt 0.816251 0.807239 +vt 0.503573 0.417403 +vt 0.502943 0.507827 +vt 0.397927 0.482081 +vt 0.364284 0.482080 +vt 0.347740 0.489217 +vt 0.283364 0.770711 +vt 0.524484 0.428283 +vt 0.525220 0.427780 +vt 0.524484 0.428095 +vt 0.372721 0.781916 +vt 0.523960 0.436055 +vt 0.499903 0.435989 +vt 0.509939 0.437367 +vt 0.524487 0.427059 +vt 0.631458 0.968590 +vt 0.631414 0.976488 +vt 0.650864 0.980618 +vt 0.623508 0.976194 +vt 0.617333 0.980879 +vt 0.623551 0.968546 +vt 0.617403 0.968511 +vt 0.536680 0.427704 +vt 0.532638 0.428317 +vt 0.536677 0.429055 +vt 0.505929 0.440946 +vt 0.506151 0.441448 +vt 0.507140 0.440872 +vt 0.274031 0.781088 +vt 0.277202 0.779388 +vt 0.476868 0.846792 +vt 0.471771 0.849575 +vt 0.478536 0.895923 +vt 0.474524 0.892209 +vt 0.226741 0.668989 +vt 0.230965 0.658537 +vt 0.249203 0.663617 +vt 0.232711 0.644999 +vt 0.231484 0.634255 +vt 0.229111 0.615665 +vt 0.344606 0.838417 +vt 0.341288 0.844146 +vt 0.348270 0.846461 +vt 0.365181 0.805114 +vt 0.347197 0.834015 +vt 0.354449 0.835871 +vt 0.213549 0.839343 +vt 0.212248 0.841388 +vt 0.206815 0.848170 +vt 0.278298 0.859067 +vt 0.305848 0.811373 +vt 0.341603 0.836850 +vt 0.341929 0.834401 +vt 0.344203 0.833531 +vt 0.330160 0.776947 +vt 0.462094 0.867217 +vt 0.461172 0.865919 +vt 0.460357 0.872288 +vt 0.542334 0.734232 +vt 0.542982 0.739274 +vt 0.542761 0.725538 +vt 0.612699 0.710711 +vt 0.608902 0.708625 +vt 0.613102 0.701990 +vt 0.528420 0.748113 +vt 0.532710 0.740699 +vt 0.528989 0.736149 +vt 0.546000 0.748127 +vt 0.535991 0.743464 +vt 0.538550 0.732135 +vt 0.536918 0.728310 +vt 0.534592 0.733283 +vt 0.531071 0.731273 +vt 0.532323 0.736601 +vt 0.598796 0.724641 +vt 0.606324 0.719957 +vt 0.616313 0.724533 +vt 0.602661 0.713126 +vt 0.603047 0.717217 +vt 0.599324 0.712678 +vt 0.604936 0.709796 +vt 0.601402 0.707792 +vt 0.607249 0.704798 +vt 0.613286 0.715728 +vt 0.540303 0.742946 +vt 0.610621 0.719398 +vt 0.532048 0.427799 +vt 0.308951 0.916386 +vt 0.308804 0.907417 +vt 0.306065 0.921446 +vt 0.262659 0.892397 +vt 0.259718 0.898761 +vt 0.262865 0.887867 +vt 0.309964 0.899927 +vt 0.259034 0.884614 +vt 0.268399 0.867508 +vt 0.464315 0.872081 +vt 0.461623 0.872221 +vt 0.520840 0.428085 +vt 0.512013 0.428226 +vt 0.944412 0.546931 +vt 0.938804 0.546922 +vt 0.305612 0.799576 +vt 0.301983 0.792453 +vt 0.533427 0.430789 +vt 0.529482 0.430804 +vt 0.528712 0.432934 +vt 0.516798 0.838874 +vt 0.502642 0.840441 +vt 0.512413 0.853965 +vt 0.937195 0.583071 +vt 0.943054 0.571410 +vt 0.294765 0.785732 +vt 0.415487 0.757689 +vt 0.372231 0.763177 +vt 0.415472 0.763294 +vt 0.931076 0.540758 +vt 0.931073 0.532847 +vt 0.926803 0.522223 +vt 0.717079 0.850025 +vt 0.697889 0.850599 +vt 0.717428 0.855838 +vt 0.604947 0.699432 +vt 0.592611 0.724172 +vt 0.593958 0.711478 +vt 0.597415 0.704236 +vt 0.288507 0.148770 +vt 0.413761 0.103579 +vt 0.304331 0.110232 +vt 0.306789 0.105923 +vt 0.304667 0.104836 +vt 0.297557 0.100926 +vt 0.294488 0.100201 +vt 0.281002 0.141297 +vt 0.305962 0.103033 +vt 0.298304 0.099009 +vt 0.294755 0.098165 +vt 0.291840 0.098506 +vt 0.307621 0.103550 +vt 0.411997 0.105183 +vt 0.310018 0.103888 +vt 0.467771 0.862417 +vt 0.497984 0.436373 +vt 0.497981 0.437334 +vt 0.466787 0.885072 +vt 0.462614 0.877138 +vt 0.468717 0.881368 +vt 0.914272 0.546883 +vt 0.901996 0.546863 +vt 0.498218 0.886038 +vt 0.530203 0.432638 +vt 0.530198 0.431479 +vt 0.530971 0.430508 +vt 0.530207 0.434348 +vt 0.534930 0.434344 +vt 0.534933 0.435180 +vt 0.534935 0.435851 +vt 0.530211 0.435865 +vt 0.741145 0.587771 +vt 0.741138 0.579863 +vt 0.784380 0.579822 +vt 0.741104 0.572114 +vt 0.536277 0.431807 +vt 0.536268 0.430545 +vt 0.532323 0.430534 +vt 0.896388 0.546854 +vt 0.912374 0.587741 +vt 0.920334 0.588416 +vt 0.903490 0.583017 +vt 0.896258 0.565379 +vt 0.926528 0.546902 +vt 0.536670 0.431723 +vt 0.541392 0.432348 +vt 0.541394 0.431735 +vt 0.909744 0.540724 +vt 0.914078 0.522204 +vt 0.902006 0.540711 +vt 0.902038 0.522185 +vt 0.902020 0.532800 +vt 0.909773 0.532813 +vt 0.913623 0.510828 +vt 0.902057 0.510809 +vt 0.532631 0.431088 +vt 0.536673 0.430372 +vt 0.944483 0.565456 +vt 0.180820 0.822971 +vt 0.225631 0.818815 +vt 0.178050 0.808817 +vt 0.172700 0.803752 +vt 0.199189 0.797410 +vt 0.227672 0.816516 +vt 0.038689 0.814747 +vt 0.082486 0.817672 +vt 0.037050 0.828634 +vt 0.119684 0.819896 +vt 0.083750 0.821563 +vt 0.229782 0.815148 +vt 0.231420 0.801261 +vt 0.180716 0.814159 +vt 0.164279 0.792464 +vt 0.083280 0.816529 +vt 0.082798 0.820883 +vt 0.499887 0.441882 +vt 0.523943 0.441948 +vt 0.509930 0.440560 +vt 0.525209 0.431585 +vt 0.524475 0.431266 +vt 0.524472 0.432302 +vt 0.497973 0.440527 +vt 0.497970 0.441488 +vt 0.519850 0.440772 +vt 0.532038 0.431603 +vt 0.523038 0.431262 +vt 0.520831 0.431256 +vt 0.507889 0.443620 +vt 0.508686 0.443623 +vt 0.508723 0.431665 +vt 0.504603 0.443610 +vt 0.507926 0.431663 +vt 0.413032 0.107126 +vt 0.415337 0.106231 +vt 0.412617 0.135954 +vt 0.284455 0.105100 +vt 0.278808 0.141349 +vt 0.464288 0.857946 +vt 0.430491 0.785523 +vt 0.430922 0.789755 +vt 0.525633 0.853031 +vt 0.527890 0.837636 +vt 0.488410 0.844488 +vt 0.497813 0.855843 +vt 0.547036 0.854081 +vt 0.545883 0.836789 +vt 0.642072 0.855004 +vt 0.644582 0.840304 +vt 0.664836 0.856850 +vt 0.665550 0.844082 +vt 0.696641 0.843246 +vt 0.541561 0.435406 +vt 0.541562 0.439068 +vt 0.537616 0.435406 +vt 0.818748 0.813198 +vt 0.834622 0.844873 +vt 0.541397 0.430395 +vt 0.819014 0.791969 +vt 0.520041 0.434440 +vt 0.516080 0.430794 +vt 0.515306 0.431766 +vt 0.541405 0.427105 +vt 0.511643 0.443632 +vt 0.511681 0.431675 +vt 0.510884 0.431672 +vt 0.507074 0.443643 +vt 0.507113 0.431685 +vt 0.503826 0.431675 +vt 0.510646 0.441203 +vt 0.507810 0.441837 +vt 0.528708 0.431775 +vt 0.528715 0.434644 +vt 0.528717 0.435489 +vt 0.533441 0.435479 +vt 0.528719 0.436161 +vt 0.067244 0.893667 +vt 0.062278 0.889043 +vt 0.041841 0.899568 +vt 0.533439 0.434643 +vt 0.533438 0.433779 +vt 0.420110 0.482081 +vt 0.413360 0.482081 +vt 0.413362 0.489218 +vt 0.404388 0.489218 +vt 0.404388 0.482081 +vt 0.397926 0.489218 +vt 0.786497 0.853755 +vt 0.783792 0.853765 +vt 0.783848 0.868579 +vt 0.426594 0.489238 +vt 0.479489 0.785493 +vt 0.432181 0.790646 +vt 0.138986 0.619442 +vt 0.527793 0.430554 +vt 0.523847 0.430532 +vt 0.523840 0.431833 +vt 0.155225 0.616260 +vt 0.163798 0.613046 +vt 0.215285 0.601246 +vt 0.213992 0.613134 +vt 0.222920 0.607011 +vt 0.219973 0.615583 +vt 0.213518 0.848409 +vt 0.212031 0.850131 +vt 0.212061 0.844251 +vt 0.149944 0.672461 +vt 0.149575 0.621583 +vt 0.226063 0.622177 +vt 0.220370 0.675456 +vt 0.132351 0.677672 +vt 0.536839 0.439070 +vt 0.536838 0.436375 +vt 0.843786 0.455374 +vt 0.938814 0.540771 +vt 0.938843 0.522242 +vt 0.938861 0.510866 +vt 0.928295 0.587766 +vt 0.316290 0.909189 +vt 0.317939 0.901895 +vt 0.312259 0.924673 +vt 0.315534 0.918706 +vt 0.185045 0.846782 +vt 0.151621 0.850208 +vt 0.258963 0.849871 +vt 0.693736 0.480570 +vt 0.706500 0.473447 +vt 0.706497 0.462469 +vt 0.767028 0.809971 +vt 0.762580 0.817109 +vt 0.761558 0.809972 +vt 0.467778 0.429604 +vt 0.494848 0.426750 +vt 0.499402 0.425107 +vt 0.489382 0.771430 +vt 0.510766 0.435967 +vt 0.510768 0.435484 +vt 0.512152 0.435975 +vt 0.510395 0.436275 +vt 0.512519 0.436286 +vt 0.512701 0.435978 +vt 0.510217 0.435965 +vt 0.503404 0.438795 +vt 0.503403 0.439344 +vt 0.514607 0.439360 +vt 0.503395 0.445030 +vt 0.514599 0.445047 +vt 0.514605 0.440754 +vt 0.458385 0.056417 +vt 0.424924 0.056311 +vt 0.423411 0.058436 +vt 0.509540 0.441305 +vt 0.509278 0.441304 +vt 0.509296 0.437010 +vt 0.417408 0.049490 +vt 0.414883 0.050932 +vt 0.508711 0.419461 +vt 0.504603 0.419473 +vt 0.504635 0.430677 +vt 0.508743 0.430665 +vt 0.509989 0.430662 +vt 0.515352 0.424554 +vt 0.513966 0.424552 +vt 0.513960 0.428667 +vt 0.513321 0.441323 +vt 0.513348 0.437216 +vt 0.513611 0.437033 +vt 0.513479 0.428610 +vt 0.503406 0.437409 +vt 0.507493 0.437415 +vt 0.514611 0.436879 +vt 0.503416 0.431174 +vt 0.503409 0.435467 +vt 0.514613 0.435484 +vt 0.458463 0.025487 +vt 0.458468 0.023357 +vt 0.423510 0.023271 +vt 0.417457 0.032182 +vt 0.425010 0.025404 +vt 0.503407 0.436860 +vt 0.513327 0.419448 +vt 0.513359 0.430652 +vt 0.517467 0.430640 +vt 0.507491 0.438802 +vt 0.515346 0.428669 +vt 0.515827 0.428613 +vt 0.512081 0.419451 +vt 0.512113 0.430656 +vt 0.509957 0.419458 +vt 0.512155 0.435491 +vt 0.924937 0.604905 +vt 0.834678 0.853744 +vt 0.936206 0.619330 +vt 0.946414 0.608213 +vt 0.838373 0.855453 +vt 0.838373 0.857178 +vt 0.935119 0.596362 +vt 0.252649 0.671850 +vt 0.216060 0.837967 +vt 0.688976 0.721051 +vt 0.688964 0.729778 +vt 0.693650 0.729782 +vt 0.987930 0.703465 +vt 0.987937 0.709256 +vt 0.996010 0.707585 +vt 0.100906 0.686438 +vt 0.107408 0.671030 +vt 0.128190 0.674115 +vt 0.115506 0.667738 +vt 0.995866 0.719402 +vt 0.144996 0.693831 +vt 0.101437 0.698854 +vt 0.138634 0.691115 +vt 0.220429 0.837505 +vt 0.100946 0.680329 +vt 0.693601 0.747407 +vt 0.695654 0.741310 +vt 0.688953 0.741304 +vt 0.995821 0.679724 +vt 0.987837 0.689859 +vt 0.987873 0.695057 +vt 0.104197 0.694536 +vt 0.132322 0.684597 +vt 0.103059 0.675321 +vt 0.632078 0.866868 +vt 0.594498 0.866868 +vt 0.594498 0.862650 +vt 0.594498 0.854215 +vt 0.632078 0.854215 +vt 0.632078 0.858432 +vt 0.203347 0.487944 +vt 0.165767 0.487944 +vt 0.165767 0.483727 +vt 0.166763 0.745860 +vt 0.204344 0.745860 +vt 0.204344 0.750077 +vt 0.130247 0.889012 +vt 0.125486 0.893737 +vt 0.132258 0.895120 +vt 0.500600 0.507658 +vt 0.129961 0.900327 +vt 0.153438 0.891133 +vt 0.148662 0.895139 +vt 0.509791 0.440921 +vt 0.506598 0.440935 +vt 0.506583 0.437649 +vt 0.509277 0.441530 +vt 0.507117 0.441540 +vt 0.520025 0.430778 +vt 0.032914 0.892147 +vt 0.510846 0.443630 +vt 0.515317 0.434461 +vt 0.632078 0.862650 +vt 0.166763 0.741642 +vt 0.204344 0.741642 +vt 0.204344 0.754295 +vt 0.166763 0.754295 +vt 0.204344 0.737425 +vt 0.506125 0.436830 +vt 0.505931 0.437397 +vt 0.507183 0.437514 +vt 0.701232 0.980835 +vt 0.701178 0.973187 +vt 0.694996 0.968511 +vt 0.709083 0.972881 +vt 0.728527 0.968723 +vt 0.709139 0.980778 +vt 0.728612 0.980639 +vt 0.523046 0.428091 +vt 0.120536 0.807751 +vt 0.524476 0.431078 +vt 0.165680 0.801658 +vt 0.397927 0.464479 +vt 0.397927 0.457342 +vt 0.347741 0.457341 +vt 0.842467 0.852745 +vt 0.822154 0.857297 +vt 0.787926 0.822949 +vt 0.775618 0.839118 +vt 0.784584 0.838795 +vt 0.126237 0.820376 +vt 0.126494 0.822480 +vt 0.043968 0.831329 +vt 0.121011 0.813305 +vt 0.377326 0.801464 +vt 0.377276 0.833340 +vt 0.398558 0.833373 +vt 0.338586 0.489217 +vt 0.225253 0.699679 +vt 0.194218 0.694159 +vt 0.203825 0.693107 +vt 0.264472 0.671874 +vt 0.264488 0.663647 +vt 0.268153 0.665649 +vt 0.688940 0.756131 +vt 0.689025 0.756305 +vt 0.987901 0.699231 +vt 0.995953 0.699177 +vt 0.220114 0.689486 +vt 0.211500 0.683987 +vt 0.211760 0.645028 +vt 0.468430 0.425751 +vt 0.467704 0.425373 +vt 0.494826 0.421949 +vt 0.467887 0.426702 +vt 0.467013 0.426422 +vt 0.468799 0.429341 +vt 0.468185 0.429873 +vt 0.467346 0.429192 +vt 0.468121 0.428683 +vt 0.231220 0.830499 +vt 0.321420 0.821180 +vt 0.322517 0.831775 +vt 0.230329 0.838968 +vt 0.229651 0.833246 +vt 0.842765 0.480112 +vt 0.842765 0.485006 +vt 0.837620 0.485005 +vt 0.825367 0.485004 +vt 0.812070 0.485004 +vt 0.812071 0.477177 +vt 0.995981 0.703411 +vt 0.236699 0.817843 +vt 0.233036 0.819558 +vt 0.237514 0.623066 +vt 0.343890 0.618285 +vt 0.343855 0.623755 +vt 0.169223 0.700762 +vt 0.169246 0.700790 +vt 0.167737 0.702484 +vt 0.229706 0.822739 +vt 0.119645 0.817818 +vt 0.126369 0.818161 +vt 0.127194 0.807182 +vt 0.127669 0.812736 +vt 0.500038 0.426193 +vt 0.767029 0.841847 +vt 0.838841 0.477179 +vt 0.762580 0.834710 +vt 0.761559 0.841847 +vt 0.460186 0.833470 +vt 0.465924 0.833478 +vt 0.465974 0.801603 +vt 0.695669 0.735883 +vt 0.589758 0.833672 +vt 0.452231 0.833457 +vt 0.460236 0.801593 +vt 0.452281 0.801581 +vt 0.270941 0.833175 +vt 0.731733 0.462463 +vt 0.731730 0.448114 +vt 0.731735 0.473442 +vt 0.744502 0.480559 +vt 0.744475 0.455864 +vt 0.706503 0.488064 +vt 0.731738 0.488059 +vt 0.151521 0.818331 +vt 0.187828 0.891142 +vt 0.181881 0.889467 +vt 0.180828 0.895063 +vt 0.186407 0.896580 +vt 0.185602 0.903706 +vt 0.184965 0.821547 +vt 0.209662 0.821469 +vt 0.258863 0.817994 +vt 0.182995 0.908105 +vt 0.178426 0.905528 +vt 0.180717 0.901802 +vt 0.271574 0.817954 +vt 0.271675 0.849831 +vt 0.287676 0.849781 +vt 0.209741 0.846705 +vt 0.298932 0.849746 +vt 0.298832 0.817868 +vt 0.287576 0.817904 +vt 0.843786 0.472975 +vt 0.541400 0.429057 +vt 0.209051 0.688734 +vt 0.226594 0.694100 +vt 0.130403 0.631285 +vt 0.127876 0.649844 +vt 0.126560 0.660571 +vt 0.133395 0.637819 +vt 0.139538 0.631279 +vt 0.145537 0.628880 +vt 0.136663 0.622685 +vt 0.144343 0.616985 +vt 0.195720 0.629210 +vt 0.204263 0.632495 +vt 0.220473 0.635814 +vt 0.209866 0.637864 +vt 0.688958 0.735877 +vt 0.161690 0.489238 +vt 0.172499 0.489238 +vt 0.172498 0.457322 +vt 0.426595 0.457322 +vt 0.413362 0.457342 +vt 0.420110 0.464479 +vt 0.404388 0.464479 +vt 0.404389 0.457342 +vt 0.413361 0.464479 +vt 0.262632 0.489217 +vt 0.272298 0.489217 +vt 0.272298 0.457341 +vt 0.279113 0.489217 +vt 0.279113 0.457341 +vt 0.213404 0.489217 +vt 0.262632 0.457341 +vt 0.284455 0.489217 +vt 0.284455 0.457341 +vt 0.206486 0.489217 +vt 0.213404 0.457341 +vt 0.323415 0.489217 +vt 0.323415 0.457341 +vt 0.197411 0.489217 +vt 0.206485 0.457341 +vt 0.330825 0.489217 +vt 0.330825 0.457341 +vt 0.186143 0.489237 +vt 0.197411 0.457342 +vt 0.338586 0.457341 +vt 0.186142 0.457322 +vt 0.781838 0.791904 +vt 0.769305 0.841505 +vt 0.790535 0.841313 +vt 0.814282 0.865143 +vt 0.364285 0.464478 +vt 0.665099 0.895783 +vt 0.696240 0.896784 +vt 0.697528 0.889426 +vt 0.717390 0.884099 +vt 0.664335 0.883183 +vt 0.642311 0.884975 +vt 0.644805 0.899444 +vt 0.547257 0.887636 +vt 0.546159 0.904698 +vt 0.512670 0.887203 +vt 0.503448 0.900859 +vt 0.526257 0.888227 +vt 0.528278 0.903634 +vt 0.517264 0.902279 +vt 0.465653 0.886011 +vt 0.473472 0.893576 +vt 0.461836 0.878509 +vt 0.527098 0.727704 +vt 0.523628 0.734935 +vt 0.522247 0.747613 +vt 0.534645 0.722946 +vt 0.717036 0.890009 +vt 0.534917 0.430491 +vt 0.534926 0.432618 +vt 0.159128 0.858047 +vt 0.151495 0.864134 +vt 0.146839 0.879266 +vt 0.144046 0.876731 +vt 0.146573 0.882660 +vt 0.144209 0.887363 +vt 0.130019 0.852326 +vt 0.125529 0.858905 +vt 0.132303 0.857539 +vt 0.130277 0.863641 +vt 0.153474 0.861577 +vt 0.148708 0.857559 +vt 0.041897 0.852873 +vt 0.032952 0.860271 +vt 0.062309 0.863447 +vt 0.491739 0.507629 +vt 0.492032 0.416482 +vt 0.489346 0.417357 +vt 0.469285 0.425479 +vt 0.469311 0.509589 +vt 0.534748 0.426440 +vt 0.534114 0.509991 +vt 0.536433 0.509863 +vt 0.525331 0.509924 +vt 0.500893 0.416511 +vt 0.067286 0.858835 +vt 0.519860 0.437209 +vt 0.519310 0.440420 +vt 0.529931 0.440635 +vt 0.530292 0.436681 +vt 0.510722 0.437437 +vt 0.930383 0.894023 +vt 0.928759 0.883534 +vt 0.907068 0.886893 +vt 0.506415 0.841924 +vt 0.796689 0.857179 +vt 0.532339 0.848213 +vt 0.968182 0.968689 +vt 0.804792 0.965320 +vt 0.842763 0.443343 +vt 0.050841 0.952323 +vt 0.054072 0.949210 +vt 0.035908 0.949211 +vt 0.054072 0.949510 +vt 0.054605 0.944456 +vt 0.036442 0.944458 +vt 0.054605 0.944056 +vt 0.054072 0.944703 +vt 0.035908 0.944706 +vt 0.054072 0.945003 +vt 0.054117 0.943132 +vt 0.054072 0.945905 +vt 0.035908 0.945908 +vt 0.054072 0.946205 +vt 0.035908 0.946208 +vt 0.054072 0.946505 +vt 0.035908 0.946508 +vt 0.054072 0.946806 +vt 0.054117 0.946908 +vt 0.852193 0.936174 +vt 0.316211 0.994208 +vt 0.770455 0.931449 +vt 0.841820 0.931664 +vt 0.177713 0.925811 +vt 0.169469 0.975019 +vt 0.277487 0.834962 +vt 0.368558 0.820578 +vt 0.650931 0.968701 +vt 0.351976 0.840046 +vt 0.533435 0.432916 +vt 0.530209 0.435193 +vt 0.784387 0.587733 +vt 0.784346 0.571925 +vt 0.532332 0.431836 +vt 0.504640 0.431653 +vt 0.842494 0.837028 +vt 0.514929 0.443643 +vt 0.927409 0.934733 +vt 0.929762 0.924701 +vt 0.906663 0.929866 +vt 0.533442 0.436150 +vt 0.528715 0.433781 +vt 0.786503 0.868569 +vt 0.527785 0.431817 +vt 0.938826 0.532859 +vt 0.927294 0.510847 +vt 0.693752 0.455875 +vt 0.490040 0.778751 +vt 0.488357 0.785906 +vt 0.503401 0.440738 +vt 0.458378 0.058547 +vt 0.509556 0.437196 +vt 0.513582 0.441326 +vt 0.514620 0.431192 +vt 0.414941 0.030725 +vt 0.517435 0.419436 +vt 0.688948 0.747403 +vt 0.995924 0.695002 +vt 0.594498 0.858432 +vt 0.203347 0.483727 +vt 0.166763 0.750077 +vt 0.509776 0.437635 +vt 0.165767 0.466857 +vt 0.203347 0.466857 +vt 0.165767 0.471074 +vt 0.695084 0.980879 +vt 0.829999 0.865170 +vt 0.398608 0.801497 +vt 0.268144 0.669886 +vt 0.499658 0.422525 +vt 0.232286 0.840869 +vt 0.495422 0.427721 +vt 0.589808 0.801796 +vt 0.270991 0.801299 +vt 0.706494 0.448119 +vt 0.161689 0.457323 +vt 0.769370 0.804329 +vt 0.489394 0.507784 +vt 0.537143 0.425757 +vt 0.519297 0.436720 +vt 0.507859 0.436561 +vt 0.351639 0.962522 +s 1 +f 61/3/18 62/4/18 63/5/18 +f 64/6/19 65/7/18 66/8/18 +f 67/9/20 68/10/20 69/11/21 +f 70/12/22 71/13/22 72/14/22 +f 73/14/23 74/15/23 75/16/23 +f 76/17/24 77/18/25 78/19/26 +f 79/20/27 80/21/20 67/9/20 +f 79/20/27 69/11/21 81/22/28 +f 82/21/29 83/23/29 84/24/29 +f 85/25/30 86/26/30 87/27/31 +f 88/28/23 89/29/23 90/30/23 +f 91/25/32 92/19/32 93/31/32 +f 79/20/27 67/9/20 69/11/21 +f 94/32/33 95/33/33 96/34/33 +f 97/35/34 98/24/34 99/23/34 +f 100/36/23 101/37/23 102/38/23 +f 103/39/35 104/31/36 105/40/37 +f 106/41/33 107/42/33 108/43/33 +f 109/44/33 110/45/33 111/46/33 +f 111/46/33 112/47/33 113/48/33 +f 114/49/38 115/50/39 116/51/39 +f 117/52/40 118/53/39 114/49/38 +f 106/41/33 108/43/33 119/54/33 +f 120/55/41 121/56/41 122/57/41 +f 123/58/23 124/59/23 125/60/23 +f 123/58/23 125/60/23 126/61/23 +f 127/62/33 111/46/33 113/48/33 +f 110/45/33 112/47/33 111/46/33 +f 112/47/33 128/63/33 113/48/33 +f 115/50/39 129/64/39 116/51/39 +f 118/53/39 115/50/39 114/49/38 +f 108/43/33 130/65/33 119/54/33 +f 131/66/41 132/67/41 121/56/41 +f 121/56/41 132/67/41 122/57/41 +f 124/59/23 133/68/23 125/60/23 +f 125/60/23 134/69/23 126/61/23 +f 135/70/42 136/71/43 137/72/44 +f 138/73/45 139/74/45 117/52/40 +f 138/73/45 140/75/46 141/76/47 +f 140/75/46 142/77/48 143/78/49 +f 142/77/48 137/72/44 136/71/43 +f 144/79/50 137/72/44 64/6/19 +f 145/80/39 116/51/39 129/64/39 +f 146/7/51 147/81/51 148/82/51 +f 149/83/51 150/84/51 151/85/51 +f 152/86/39 153/41/39 154/54/39 +f 155/87/23 156/86/23 157/88/23 +f 158/89/23 159/90/23 160/91/23 +f 161/92/51 162/91/51 163/61/51 +f 109/44/33 164/93/33 110/45/33 +f 129/64/39 115/50/39 165/94/39 +f 107/42/33 166/95/33 108/43/33 +f 120/55/41 167/96/41 121/56/41 +f 123/58/23 168/97/23 124/59/23 +f 169/98/52 170/99/53 171/100/54 +f 172/101/55 173/102/56 174/103/57 +f 175/104/33 176/105/33 177/106/58 +f 178/107/33 179/108/33 180/109/33 +f 181/110/59 174/103/57 173/102/56 +f 182/111/41 183/112/41 184/113/41 +f 185/114/41 186/115/41 187/116/41 +f 188/117/41 189/118/41 190/119/41 +f 191/120/60 192/121/61 193/122/62 +f 194/123/51 195/124/51 196/125/51 +f 170/99/53 197/126/63 198/127/64 +f 189/128/41 199/129/41 200/130/41 +f 192/121/61 201/131/65 202/132/66 +f 195/124/51 203/133/51 204/134/51 +f 197/126/63 205/135/67 206/136/68 +f 199/137/41 207/138/41 208/139/41 +f 201/131/65 209/140/69 210/141/70 +f 203/133/51 211/142/51 212/143/51 +f 205/135/67 213/144/71 214/145/72 +f 207/138/41 215/146/41 216/147/41 +f 209/148/69 217/149/73 218/150/74 +f 211/142/51 219/151/51 220/152/51 +f 221/153/75 222/154/76 223/155/77 +f 215/146/41 224/156/41 225/157/41 +f 226/158/78 227/159/79 228/160/80 +f 219/151/51 229/161/51 230/162/51 +f 222/163/76 231/164/81 232/165/82 +f 224/156/41 233/166/41 234/167/41 +f 227/159/79 235/168/83 236/169/84 +f 229/161/51 237/170/51 238/171/51 +f 231/164/81 239/172/85 240/173/86 +f 233/166/41 241/174/41 242/175/41 +f 235/168/83 243/176/87 244/177/88 +f 237/170/51 245/178/51 246/179/51 +f 239/180/85 247/181/60 248/182/89 +f 241/174/41 249/183/41 250/184/41 +f 243/176/87 251/185/52 252/186/90 +f 245/178/51 253/187/51 254/188/51 +f 247/181/60 255/189/91 256/190/62 +f 249/183/41 257/191/41 258/192/41 +f 251/185/52 259/193/53 260/194/54 +f 253/187/51 261/195/51 262/196/51 +f 255/189/91 263/197/65 264/198/66 +f 257/191/41 265/199/41 266/200/41 +f 259/193/53 267/201/63 268/202/64 +f 261/195/51 269/203/51 270/204/51 +f 263/197/65 271/205/69 272/206/70 +f 265/199/41 273/207/41 274/208/41 +f 267/201/63 275/209/92 276/210/93 +f 269/203/51 277/211/51 278/212/51 +f 271/205/69 279/213/73 280/214/94 +f 273/207/41 281/215/41 282/216/41 +f 275/209/92 283/217/71 284/218/95 +f 277/211/51 285/219/51 286/220/51 +f 279/213/73 287/221/96 288/222/97 +f 281/215/41 289/223/41 290/224/41 +f 283/225/71 291/226/76 292/227/77 +f 285/219/51 293/228/51 294/229/51 +f 287/221/96 295/230/83 296/231/84 +f 289/223/41 297/232/41 298/233/41 +f 291/226/76 299/234/81 300/235/82 +f 293/228/51 301/236/51 302/237/51 +f 295/230/83 303/238/87 304/239/88 +f 297/232/41 305/240/41 306/241/41 +f 299/234/81 307/242/85 308/243/98 +f 301/236/51 309/244/51 310/245/51 +f 303/238/87 169/98/52 311/246/90 +f 305/240/41 188/117/41 312/247/41 +f 307/242/85 191/120/60 313/248/89 +f 309/244/51 194/123/51 314/249/51 +f 315/250/23 316/251/23 317/252/23 +f 316/251/23 318/253/23 319/254/23 +f 318/253/23 320/255/23 321/256/23 +f 320/255/23 322/257/23 323/258/23 +f 322/257/23 324/259/23 325/260/23 +f 324/259/23 326/261/23 327/262/23 +f 326/261/23 328/263/23 329/264/23 +f 328/263/23 330/265/23 331/266/23 +f 330/265/23 332/267/23 333/268/23 +f 332/267/23 334/269/23 335/270/23 +f 334/269/23 336/271/23 337/272/23 +f 336/271/23 315/250/23 338/273/23 +f 339/274/99 340/275/100 341/276/101 +f 342/277/102 343/278/103 344/279/104 +f 345/280/23 346/281/23 347/282/23 +f 348/283/105 339/274/99 349/284/106 +f 343/278/103 350/285/107 351/286/108 +f 346/281/23 352/287/23 347/282/23 +f 353/288/109 348/283/105 354/289/110 +f 350/285/107 355/290/111 356/291/112 +f 352/287/23 357/292/23 347/282/23 +f 358/293/113 359/294/114 360/295/115 +f 355/290/111 361/296/116 362/297/117 +f 357/292/23 363/298/23 347/282/23 +f 364/299/118 358/293/113 365/300/119 +f 361/296/116 366/301/120 367/302/121 +f 363/298/23 368/303/23 347/282/23 +f 369/304/122 364/299/118 370/305/123 +f 366/301/120 371/306/124 372/307/125 +f 368/303/23 373/308/23 347/282/23 +f 374/309/120 369/304/122 375/310/126 +f 371/306/124 376/311/127 377/312/123 +f 373/308/23 378/313/23 347/282/23 +f 379/314/128 374/309/120 380/315/129 +f 376/311/127 381/316/113 382/317/130 +f 378/313/23 383/318/23 347/282/23 +f 384/319/131 379/314/128 385/320/117 +f 381/316/113 386/321/114 387/322/115 +f 383/318/23 388/323/23 347/282/23 +f 389/324/107 384/319/131 390/325/132 +f 391/326/109 392/327/133 393/328/110 +f 388/323/23 394/329/23 347/282/23 +f 395/330/134 389/324/107 396/331/135 +f 392/327/133 397/332/99 398/333/136 +f 394/329/23 399/334/23 347/282/23 +f 340/275/100 395/330/134 400/335/104 +f 397/332/99 342/277/102 401/336/137 +f 399/334/23 345/280/23 347/282/23 +f 402/337/138 403/338/139 404/339/140 +f 405/340/141 406/341/142 407/342/143 +f 408/343/144 409/344/145 410/345/146 +f 411/346/147 412/347/148 413/348/149 +f 414/349/150 407/342/143 415/350/151 +f 416/351/152 407/342/143 414/349/150 +f 417/352/153 418/353/154 419/354/155 +f 420/355/156 421/356/157 417/352/153 +f 408/343/144 422/357/158 417/352/153 +f 423/358/159 424/359/160 404/339/140 +f 424/359/160 423/358/159 425/360/161 +f 424/359/160 426/361/162 427/362/163 +f 428/363/164 429/364/165 419/354/155 +f 430/365/166 428/363/164 431/366/167 +f 411/346/147 432/367/168 412/347/148 +f 433/368/169 434/369/170 415/350/151 +f 435/370/171 434/369/170 433/368/169 +f 436/371/172 434/369/170 437/372/173 +f 438/373/174 439/374/175 440/375/176 +f 441/376/177 440/375/176 439/374/175 +f 414/349/150 415/350/151 442/377/178 +f 443/378/179 413/348/149 444/379/180 +f 445/380/181 416/351/152 443/378/179 +f 411/346/147 413/348/149 446/381/182 +f 432/367/168 411/346/147 446/381/182 +f 446/381/182 413/348/149 443/378/179 +f 447/382/183 448/383/184 449/384/185 +f 434/369/170 442/377/178 415/350/151 +f 443/378/179 442/377/178 450/385/186 +f 451/386/187 452/387/188 436/371/172 +f 452/387/188 450/385/186 434/369/170 +f 446/381/182 452/387/188 451/386/187 +f 450/385/186 452/387/188 446/381/182 +f 449/384/185 451/386/187 447/382/183 +f 438/373/174 453/388/189 451/386/187 +f 454/389/190 437/372/173 435/370/171 +f 455/390/191 454/389/190 456/391/192 +f 457/392/193 403/338/139 402/337/138 +f 458/393/194 457/392/193 459/394/195 +f 429/364/165 409/344/145 408/343/144 +f 460/395/196 461/396/197 462/397/198 +f 437/372/173 434/369/170 435/370/171 +f 450/385/186 442/377/178 434/369/170 +f 416/351/152 414/349/150 442/377/178 +f 442/377/178 443/378/179 416/351/152 +f 445/380/181 443/378/179 444/379/180 +f 432/367/168 449/384/185 448/383/184 +f 453/388/189 447/382/183 451/386/187 +f 439/374/175 438/373/174 451/386/187 +f 462/397/198 412/347/148 430/365/166 +f 432/367/168 448/383/184 412/347/148 +f 412/347/148 448/383/184 429/364/165 +f 453/388/189 409/344/145 447/382/183 +f 438/373/174 409/344/145 453/388/189 +f 438/373/174 440/375/176 409/344/145 +f 440/375/176 441/376/177 463/398/199 +f 437/372/173 454/389/190 441/376/177 +f 441/376/177 455/390/191 458/393/194 +f 464/399/200 457/392/193 465/400/201 +f 403/338/139 457/392/193 464/399/200 +f 429/364/165 428/363/164 430/365/166 +f 412/347/148 429/364/165 430/365/166 +f 448/383/184 447/382/183 429/364/165 +f 409/344/145 429/364/165 447/382/183 +f 440/375/176 463/398/199 409/344/145 +f 441/376/177 458/393/194 463/398/199 +f 454/389/190 455/390/191 441/376/177 +f 455/390/191 465/400/201 458/393/194 +f 457/392/193 458/393/194 465/400/201 +f 466/401/202 467/402/203 456/391/192 +f 468/403/204 466/401/202 469/404/205 +f 470/405/206 471/406/207 469/404/205 +f 472/407/208 405/340/141 473/408/209 +f 474/409/33 475/410/33 476/411/33 +f 477/412/121 478/413/117 479/414/210 +f 480/415/125 477/412/121 481/416/120 +f 478/413/117 482/417/112 483/418/111 +f 484/419/123 480/415/125 485/420/124 +f 486/421/211 484/419/123 487/422/212 +f 482/417/112 488/423/213 489/424/107 +f 490/425/214 486/421/211 491/426/113 +f 492/427/110 490/425/214 493/428/114 +f 488/423/213 494/429/104 495/430/103 +f 496/431/136 492/427/110 497/432/133 +f 498/433/137 496/431/136 499/434/99 +f 494/429/104 498/433/137 500/435/102 +f 501/436/33 502/437/33 503/413/33 +f 504/438/33 501/436/33 505/412/33 +f 502/437/33 506/439/33 507/417/33 +f 508/440/33 504/438/33 509/415/33 +f 510/441/33 508/440/33 511/419/33 +f 506/439/33 512/442/33 513/423/33 +f 474/443/33 510/441/33 514/421/33 +f 515/444/33 474/443/33 516/425/33 +f 512/442/33 517/445/33 518/429/33 +f 519/446/33 515/444/33 520/427/33 +f 521/447/33 519/446/33 522/431/33 +f 517/445/33 521/447/33 523/433/33 +f 524/448/33 525/449/33 526/450/33 +f 527/451/116 528/452/120 529/453/121 +f 530/454/111 527/451/116 531/455/117 +f 526/450/33 525/449/33 532/456/33 +f 528/452/120 533/457/124 534/458/125 +f 535/459/33 525/449/33 524/448/33 +f 532/456/33 525/449/33 536/460/33 +f 533/457/124 537/461/127 538/462/123 +f 539/463/107 530/454/111 540/464/112 +f 536/460/33 525/449/33 541/465/33 +f 537/461/127 542/466/215 543/467/215 +f 544/468/33 525/449/33 535/459/33 +f 541/465/33 525/449/33 545/469/33 +f 546/470/216 547/471/216 548/472/217 +f 549/473/103 539/463/107 550/474/108 +f 545/469/33 525/449/33 551/475/33 +f 552/476/218 553/477/219 554/478/219 +f 555/479/33 525/449/33 544/468/33 +f 551/475/33 525/449/33 556/480/33 +f 546/470/216 557/481/99 558/482/136 +f 559/483/102 549/473/103 560/484/104 +f 556/480/33 525/449/33 561/485/33 +f 557/481/99 559/483/102 562/486/137 +f 561/485/33 525/449/33 555/479/33 +f 563/487/220 548/472/217 554/478/219 +f 474/409/33 515/488/33 475/410/33 +f 543/467/215 542/466/215 564/489/221 +f 565/490/222 566/491/223 552/476/218 +f 476/492/33 475/493/33 567/494/33 +f 476/411/33 510/495/33 474/409/33 +f 568/496/33 569/497/33 570/498/33 +f 571/499/224 572/500/225 573/501/226 +f 574/502/23 575/503/23 576/504/23 +f 570/498/33 569/497/33 577/505/33 +f 572/500/225 578/506/227 579/507/228 +f 575/503/23 580/508/23 576/504/23 +f 577/505/33 569/497/33 581/509/33 +f 578/506/227 582/510/229 583/511/230 +f 580/508/23 584/512/23 576/504/23 +f 581/509/33 569/497/33 585/513/33 +f 586/514/231 587/515/232 588/516/233 +f 584/512/23 589/517/23 576/504/23 +f 585/513/33 569/497/33 590/518/33 +f 587/515/232 591/519/234 592/520/235 +f 589/517/23 593/521/23 576/504/23 +f 590/518/33 569/497/33 594/522/33 +f 591/519/234 595/523/236 596/524/237 +f 597/525/33 598/526/238 599/527/238 +f 593/521/23 600/528/23 576/504/23 +f 594/522/33 569/497/33 601/529/33 +f 599/527/238 598/526/238 602/530/239 +f 595/523/236 603/531/240 604/532/241 +f 600/528/23 605/533/23 576/504/23 +f 606/534/242 607/535/243 608/536/244 +f 609/537/245 606/534/242 610/538/246 +f 601/529/33 569/497/33 568/496/33 +f 603/531/240 571/499/224 611/539/247 +f 605/533/23 574/502/23 576/504/23 +f 612/540/248 613/541/249 614/542/250 +f 615/543/251 616/544/252 612/540/248 +f 617/545/253 618/546/254 619/547/33 +f 620/548/255 621/549/256 622/550/23 +f 623/551/257 624/552/258 625/553/259 +f 607/535/243 626/554/260 627/555/261 +f 628/556/262 629/557/263 630/558/264 +f 620/548/255 631/559/265 621/549/256 +f 632/554/18 633/560/18 634/561/18 +f 635/562/33 636/563/33 637/564/33 +f 175/104/33 638/565/33 639/566/33 +f 640/567/266 641/568/267 642/569/268 +f 630/558/264 629/557/263 643/570/269 +f 644/571/270 645/572/271 646/573/33 +f 647/574/18 648/575/18 649/576/18 +f 650/577/18 649/576/18 648/575/18 +f 651/578/23 652/579/23 653/580/23 +f 654/581/272 655/582/273 642/569/268 +f 656/583/274 657/584/18 658/585/275 +f 619/547/33 618/546/254 659/586/33 +f 660/587/39 661/588/39 662/589/39 +f 645/572/271 663/590/33 646/573/33 +f 664/591/39 665/592/39 666/593/39 +f 662/589/39 661/588/39 664/594/39 +f 667/595/41 668/596/41 669/597/41 +f 668/596/41 670/598/41 671/599/41 +f 672/600/41 673/601/41 671/599/41 +f 674/602/39 675/603/39 676/604/39 +f 677/605/276 678/606/277 679/607/277 +f 680/608/278 617/545/253 681/609/279 +f 628/556/262 682/610/253 683/611/280 +f 684/612/255 623/551/257 685/613/281 +f 686/614/282 687/615/283 688/616/284 +f 688/616/284 687/615/283 689/617/285 +f 688/616/284 689/617/285 690/618/286 +f 688/616/284 690/618/286 691/619/55 +f 692/620/287 693/621/288 694/622/58 +f 695/623/289 696/624/290 697/625/284 +f 698/626/291 699/627/292 700/628/293 +f 701/629/294 693/621/288 702/630/295 +f 703/631/33 704/632/33 702/630/295 +f 704/632/33 705/633/33 702/630/295 +f 706/634/33 702/630/295 705/633/33 +f 693/621/288 703/631/33 702/630/295 +f 703/631/33 693/621/288 692/620/287 +f 707/635/296 708/636/297 709/637/298 +f 710/638/23 711/639/23 712/640/299 +f 713/641/33 714/642/33 715/643/300 +f 716/644/23 717/645/23 718/646/23 +f 716/644/23 719/647/301 720/648/23 +f 710/638/23 712/640/299 721/649/23 +f 721/649/23 722/650/23 723/651/23 +f 723/651/23 724/652/23 725/653/23 +f 726/654/33 727/655/33 728/656/302 +f 729/657/33 730/658/33 731/659/33 +f 732/660/33 729/657/33 733/661/33 +f 714/642/33 732/660/33 734/662/33 +f 713/641/33 715/643/300 735/663/33 +f 711/639/23 736/664/23 719/647/301 +f 720/648/23 717/645/23 716/644/23 +f 717/645/23 725/653/23 718/646/23 +f 719/647/301 736/664/23 720/648/23 +f 712/640/299 722/650/23 721/649/23 +f 722/650/23 724/652/23 723/651/23 +f 724/652/23 718/646/23 725/653/23 +f 737/665/33 735/663/33 728/656/302 +f 730/658/33 727/655/33 726/654/33 +f 727/655/33 737/665/33 728/656/302 +f 730/658/33 726/654/33 731/659/33 +f 729/657/33 731/659/33 733/661/33 +f 732/660/33 733/661/33 734/662/33 +f 715/643/300 728/656/302 735/663/33 +f 738/666/39 675/603/39 674/602/39 +f 739/667/303 740/668/304 741/669/305 +f 742/670/33 743/671/306 740/668/304 +f 744/672/33 742/670/33 745/673/307 +f 746/674/308 744/672/33 747/675/309 +f 701/629/294 747/675/309 745/673/307 +f 748/676/310 707/635/296 749/677/311 +f 750/678/39 664/594/39 666/679/39 +f 751/680/312 752/681/313 613/541/249 +f 753/682/314 702/630/295 706/634/33 +f 754/683/315 753/682/314 706/634/33 +f 619/547/33 681/609/279 617/545/253 +f 755/684/33 756/685/33 757/686/33 +f 758/687/315 759/688/316 760/689/317 +f 616/544/252 761/690/318 762/691/319 +f 659/586/33 763/692/316 706/634/33 +f 663/590/33 706/634/33 174/103/57 +f 764/693/39 674/694/39 765/695/39 +f 766/696/51 767/697/51 768/698/320 +f 769/699/321 770/700/322 771/701/323 +f 772/643/324 773/662/325 774/702/326 +f 775/703/327 776/704/328 777/659/329 +f 778/705/330 774/702/326 773/662/325 +f 779/370/331 780/391/332 781/706/333 +f 781/706/333 782/350/334 783/368/335 +f 784/342/336 785/380/337 786/351/338 +f 787/340/339 788/379/340 785/380/337 +f 789/348/341 788/379/340 787/340/339 +f 784/342/336 787/340/339 785/380/337 +f 790/353/342 791/354/343 792/366/344 +f 793/707/345 794/356/346 790/353/342 +f 795/345/347 796/343/348 797/357/349 +f 798/708/350 795/345/347 799/709/351 +f 800/394/352 798/708/350 801/710/353 +f 802/337/354 800/394/352 803/711/355 +f 804/339/356 802/337/354 805/712/357 +f 806/360/358 807/713/359 808/402/360 +f 809/714/361 801/710/353 799/709/351 +f 810/715/362 803/711/355 801/710/353 +f 811/716/363 805/712/357 803/711/355 +f 812/717/364 813/362/365 805/712/357 +f 814/718/366 799/709/351 815/357/367 +f 816/393/368 817/398/369 798/708/350 +f 818/396/370 819/397/371 820/408/372 +f 783/368/335 779/370/331 781/706/333 +f 820/408/372 789/348/341 787/340/339 +f 821/719/373 790/353/342 792/366/344 +f 821/719/373 793/707/345 790/353/342 +f 801/710/353 798/708/350 799/709/351 +f 803/711/355 800/394/352 801/710/353 +f 805/712/357 802/337/354 803/711/355 +f 813/362/365 804/339/356 805/712/357 +f 822/358/374 806/360/358 808/402/360 +f 814/718/366 809/714/361 799/709/351 +f 809/714/361 810/715/362 801/710/353 +f 810/715/362 811/716/363 803/711/355 +f 811/716/363 812/717/364 805/712/357 +f 823/720/375 814/718/366 815/357/367 +f 824/405/376 825/341/377 784/342/336 +f 817/398/369 826/344/378 795/345/347 +f 820/408/372 827/347/379 789/348/341 +f 781/706/333 784/342/336 782/350/334 +f 790/353/342 794/356/346 828/352/380 +f 813/362/365 829/359/381 804/339/356 +f 812/717/364 830/361/382 813/362/365 +f 831/400/383 822/358/374 808/402/360 +f 832/399/384 804/339/356 822/358/374 +f 833/390/385 831/400/383 808/402/360 +f 831/400/383 832/399/384 822/358/374 +f 832/399/384 834/338/386 804/339/356 +f 643/570/269 707/635/296 835/721/387 +f 836/722/39 837/723/39 665/592/39 +f 625/553/259 838/724/388 685/613/281 +f 839/725/389 838/724/388 840/726/390 +f 841/727/391 842/728/313 614/542/250 +f 843/729/392 625/553/259 624/552/258 +f 844/730/23 845/731/23 846/732/23 +f 847/733/39 848/734/39 849/735/39 +f 850/735/23 851/736/23 852/737/23 +f 853/738/393 854/739/394 855/740/393 +f 856/740/18 857/739/18 858/741/18 +f 859/742/395 860/743/395 861/744/39 +f 738/666/39 664/594/39 661/588/39 +f 842/728/313 862/745/312 614/542/250 +f 863/746/396 864/747/397 616/544/252 +f 616/544/252 615/543/251 865/748/398 +f 612/540/248 614/542/250 866/749/399 +f 614/542/250 613/541/249 867/750/400 +f 868/751/39 869/752/39 870/753/39 +f 871/754/51 841/727/391 872/755/401 +f 873/756/51 842/728/313 841/727/391 +f 874/757/402 875/758/51 876/759/51 +f 872/755/401 877/760/403 878/761/403 +f 865/748/398 863/746/396 616/544/252 +f 879/762/39 868/751/39 880/763/39 +f 616/544/252 762/691/319 881/764/404 +f 700/628/293 882/765/405 883/766/406 +f 884/767/407 885/768/408 886/769/23 +f 883/766/406 886/769/23 887/770/409 +f 888/771/23 889/772/23 890/773/410 +f 891/774/411 890/773/410 892/775/23 +f 890/776/410 887/770/409 888/777/23 +f 882/765/405 886/769/23 883/766/406 +f 882/765/405 893/778/412 886/769/23 +f 893/778/412 884/767/407 886/769/23 +f 885/768/408 894/779/23 886/769/23 +f 886/769/23 888/777/23 887/770/409 +f 888/771/23 895/780/23 889/772/23 +f 889/772/23 896/781/23 890/773/410 +f 890/773/410 896/781/23 892/775/23 +f 897/782/39 898/783/39 899/784/39 +f 900/785/39 901/786/39 898/787/39 +f 902/788/39 903/789/39 897/782/39 +f 898/783/39 904/790/39 899/784/39 +f 898/787/39 905/791/39 900/785/39 +f 906/792/39 904/793/39 898/787/39 +f 905/791/39 898/787/39 869/752/39 +f 907/794/413 908/795/414 909/796/415 +f 910/797/33 907/794/413 911/798/416 +f 406/341/142 405/340/141 912/407/417 +f 913/799/418 472/407/208 461/396/197 +f 914/800/419 915/801/420 472/407/208 +f 914/800/419 913/799/418 916/719/421 +f 431/366/167 916/719/421 913/799/418 +f 917/713/422 467/402/203 466/401/202 +f 918/802/423 426/361/162 424/359/160 +f 918/802/423 425/360/161 917/713/422 +f 917/713/422 466/401/202 468/403/204 +f 417/352/153 919/357/424 920/720/425 +f 407/342/143 470/405/206 921/706/426 +f 410/345/146 463/398/199 922/708/427 +f 412/347/148 462/397/198 473/408/209 +f 456/391/192 921/706/426 469/404/205 +f 456/391/192 435/370/171 921/706/426 +f 415/350/151 921/706/426 433/368/169 +f 445/380/181 407/342/143 416/351/152 +f 444/379/180 405/340/141 445/380/181 +f 444/379/180 413/348/149 405/340/141 +f 405/340/141 407/342/143 445/380/181 +f 419/354/155 418/353/154 431/366/167 +f 421/356/157 923/707/428 418/353/154 +f 410/345/146 924/709/429 422/357/158 +f 410/345/146 922/708/427 924/709/429 +f 922/708/427 459/394/195 925/710/430 +f 459/394/195 402/337/138 926/711/431 +f 402/337/138 404/339/140 927/712/432 +f 917/713/422 425/360/161 467/402/203 +f 925/710/430 928/714/433 924/709/429 +f 926/711/431 929/715/434 925/710/430 +f 927/712/432 930/716/435 926/711/431 +f 427/362/163 931/717/436 927/712/432 +f 924/709/429 932/718/437 919/357/424 +f 463/398/199 458/393/194 922/708/427 +f 462/397/198 461/396/197 473/408/209 +f 435/370/171 433/368/169 921/706/426 +f 413/348/149 473/408/209 405/340/141 +f 418/353/154 916/719/421 431/366/167 +f 923/707/428 916/719/421 418/353/154 +f 922/708/427 925/710/430 924/709/429 +f 459/394/195 926/711/431 925/710/430 +f 402/337/138 927/712/432 926/711/431 +f 404/339/140 427/362/163 927/712/432 +f 425/360/161 423/358/159 467/402/203 +f 928/714/433 932/718/437 924/709/429 +f 929/715/434 928/714/433 925/710/430 +f 930/716/435 929/715/434 926/711/431 +f 931/717/436 930/716/435 927/712/432 +f 932/718/437 920/720/425 919/357/424 +f 406/341/142 470/405/206 407/342/143 +f 409/344/145 463/398/199 410/345/146 +f 412/347/148 473/408/209 413/348/149 +f 407/342/143 921/706/426 415/350/151 +f 421/356/157 418/353/154 417/352/153 +f 424/359/160 427/362/163 404/339/140 +f 426/361/162 931/717/436 427/362/163 +f 423/358/159 465/400/201 467/402/203 +f 404/339/140 464/399/200 423/358/159 +f 465/400/201 455/390/191 467/402/203 +f 464/399/200 465/400/201 423/358/159 +f 403/338/139 464/399/200 404/339/140 +f 834/338/386 802/337/354 804/339/356 +f 825/341/377 787/340/339 784/342/336 +f 826/344/378 796/343/348 795/345/347 +f 827/347/379 933/346/438 789/348/341 +f 784/342/336 934/349/439 782/350/334 +f 784/342/336 786/351/338 934/349/439 +f 790/353/342 828/352/380 791/354/343 +f 794/356/346 935/355/440 828/352/380 +f 796/343/348 791/354/343 828/352/380 +f 829/359/381 822/358/374 804/339/356 +f 822/358/374 829/359/381 806/360/358 +f 830/361/382 829/359/381 813/362/365 +f 936/363/441 792/366/344 791/354/343 +f 937/365/442 938/395/443 792/366/344 +f 939/367/444 933/346/438 827/347/379 +f 940/369/445 783/368/335 782/350/334 +f 940/369/445 779/370/331 783/368/335 +f 941/371/446 942/376/447 943/372/448 +f 944/374/449 945/373/450 946/375/451 +f 942/376/447 941/371/446 944/374/449 +f 782/350/334 934/349/439 947/377/452 +f 789/348/341 948/378/453 788/379/340 +f 786/351/338 785/380/337 948/378/453 +f 789/348/341 933/346/438 949/381/454 +f 939/367/444 950/384/455 949/381/454 +f 789/348/341 949/381/454 948/378/453 +f 951/383/456 952/382/457 950/384/455 +f 947/377/452 940/369/445 782/350/334 +f 947/377/452 948/378/453 953/385/458 +f 954/386/459 944/374/449 941/371/446 +f 955/387/460 941/371/446 940/369/445 +f 949/381/454 950/384/455 954/386/459 +f 953/385/458 948/378/453 949/381/454 +f 954/386/459 950/384/455 952/382/457 +f 956/388/461 945/373/450 954/386/459 +f 957/389/462 780/391/332 779/370/331 +f 833/390/385 808/402/360 780/391/332 +f 958/392/463 800/394/352 802/337/354 +f 816/393/368 798/708/350 800/394/352 +f 959/364/464 791/354/343 796/343/348 +f 938/395/443 937/365/442 819/397/371 +f 940/369/445 943/372/448 779/370/331 +f 947/377/452 953/385/458 940/369/445 +f 934/349/439 786/351/338 947/377/452 +f 948/378/453 947/377/452 786/351/338 +f 948/378/453 785/380/337 788/379/340 +f 950/384/455 939/367/444 951/383/456 +f 952/382/457 956/388/461 954/386/459 +f 945/373/450 944/374/449 954/386/459 +f 827/347/379 819/397/371 937/365/442 +f 951/383/456 939/367/444 827/347/379 +f 951/383/456 827/347/379 959/364/464 +f 826/344/378 956/388/461 952/382/457 +f 826/344/378 945/373/450 956/388/461 +f 946/375/451 945/373/450 826/344/378 +f 942/376/447 946/375/451 817/398/369 +f 957/389/462 943/372/448 942/376/447 +f 833/390/385 942/376/447 816/393/368 +f 958/392/463 832/399/384 831/400/383 +f 958/392/463 834/338/386 832/399/384 +f 936/363/441 959/364/464 937/365/442 +f 959/364/464 827/347/379 937/365/442 +f 952/382/457 951/383/456 959/364/464 +f 959/364/464 826/344/378 952/382/457 +f 817/398/369 946/375/451 826/344/378 +f 816/393/368 942/376/447 817/398/369 +f 833/390/385 957/389/462 942/376/447 +f 831/400/383 833/390/385 816/393/368 +f 816/393/368 958/392/463 831/400/383 +f 960/401/465 961/404/466 780/391/332 +f 962/403/467 963/406/468 961/404/466 +f 824/405/376 781/706/333 961/404/466 +f 964/407/469 818/396/370 820/408/372 +f 825/341/377 965/801/470 966/407/471 +f 967/799/472 938/395/443 818/396/370 +f 968/800/473 967/799/472 964/407/469 +f 968/800/473 793/707/345 821/719/373 +f 792/366/344 938/395/443 967/799/472 +f 808/402/360 807/713/359 960/401/465 +f 969/802/474 806/360/358 829/359/381 +f 969/802/474 970/803/475 807/713/359 +f 807/713/359 970/803/475 962/403/467 +f 828/352/380 935/355/440 823/720/375 +f 824/405/376 784/342/336 781/706/333 +f 817/398/369 795/345/347 798/708/350 +f 819/397/371 827/347/379 820/408/372 +f 781/706/333 780/391/332 961/404/466 +f 971/661/476 777/659/329 776/704/328 +f 972/804/477 708/636/297 707/635/296 +f 646/573/33 663/590/33 973/805/33 +f 643/570/269 629/557/263 683/611/280 +f 835/721/387 707/635/296 748/676/310 +f 974/806/33 973/805/33 181/110/59 +f 835/721/387 630/558/264 643/570/269 +f 760/689/317 975/807/478 976/808/314 +f 977/809/254 978/810/479 759/688/316 +f 975/807/478 979/811/480 980/812/295 +f 628/556/262 630/558/264 977/809/254 +f 978/810/479 760/689/317 759/688/316 +f 979/811/480 981/813/481 982/814/294 +f 981/813/481 983/815/482 984/816/483 +f 984/816/483 983/815/482 770/700/322 +f 771/701/323 770/700/322 983/815/482 +f 985/817/484 984/816/483 770/700/322 +f 682/610/253 628/556/262 977/809/254 +f 986/818/485 987/819/486 988/820/487 +f 989/821/23 652/579/23 990/822/23 +f 676/604/39 880/763/39 991/823/39 +f 989/821/23 653/580/23 652/579/23 +f 651/578/23 992/824/23 652/579/23 +f 993/825/488 994/826/489 995/827/490 +f 664/594/39 738/666/39 764/828/39 +f 996/829/491 997/830/492 998/831/493 +f 999/832/23 1000/833/23 997/834/492 +f 1001/835/33 1002/606/33 1003/836/33 +f 752/681/313 867/750/400 613/541/249 +f 1004/607/33 1002/606/33 1001/835/33 +f 1005/837/33 757/686/33 756/685/33 +f 1006/838/39 1007/839/39 1008/840/39 +f 1009/840/33 1010/839/33 1011/841/33 +f 1012/842/494 1013/843/494 1014/844/494 +f 1015/838/495 1016/845/496 1017/846/495 +f 1018/847/497 1019/848/498 1020/849/499 +f 1021/850/500 1020/849/499 1019/848/498 +f 1022/851/501 656/583/274 1023/852/502 +f 1024/853/18 1025/854/18 1026/855/18 +f 1020/849/499 1027/856/503 1018/847/497 +f 837/723/39 666/593/39 665/592/39 +f 1028/857/504 1029/858/33 1030/576/271 +f 636/563/33 1031/859/33 637/564/33 +f 1032/860/395 1033/861/39 1034/862/39 +f 1035/863/33 1031/859/33 179/108/33 +f 1036/864/33 179/108/33 1037/865/505 +f 1038/866/33 1037/865/505 1039/867/56 +f 1040/868/33 1039/867/56 691/619/55 +f 1041/869/506 1042/870/507 1043/871/508 +f 638/565/33 636/563/33 1044/872/33 +f 637/564/33 1031/859/33 1045/873/33 +f 1045/873/33 1031/859/33 1035/863/33 +f 1036/864/33 1035/863/33 179/108/33 +f 1038/866/33 1036/864/33 1037/865/505 +f 1037/865/505 179/108/33 178/107/33 +f 1040/868/33 1038/866/33 1039/867/56 +f 1046/874/509 1040/868/33 691/619/55 +f 1046/874/509 691/619/55 690/618/286 +f 177/106/58 176/105/33 1047/875/33 +f 686/614/282 177/106/58 1047/875/33 +f 1048/876/33 636/563/33 638/565/33 +f 639/566/33 638/565/33 1044/872/33 +f 1044/872/33 636/563/33 635/562/33 +f 1049/877/510 1050/878/511 987/819/486 +f 1051/879/41 186/115/41 185/114/41 +f 184/113/41 183/112/41 186/115/41 +f 1052/880/51 766/696/51 867/750/400 +f 1053/881/512 768/698/320 767/697/51 +f 768/698/320 1053/881/512 1054/882/403 +f 1055/883/513 761/690/318 616/544/252 +f 745/673/307 740/668/304 1056/884/514 +f 693/621/288 1057/885/515 694/622/58 +f 1058/886/516 1059/887/517 739/667/303 +f 1060/888/518 1061/889/58 1062/890/519 +f 740/668/304 739/667/303 1059/887/517 +f 745/673/307 1057/885/515 693/621/288 +f 974/806/33 181/110/59 1029/858/33 +f 612/540/248 881/764/404 613/541/249 +f 864/747/397 1055/883/513 616/544/252 +f 1063/891/33 1064/892/33 1065/893/33 +f 763/692/316 754/683/315 706/634/33 +f 706/634/33 695/623/289 174/103/57 +f 973/805/33 663/590/33 181/110/59 +f 181/110/59 1030/576/271 1029/858/33 +f 174/103/57 181/110/59 663/590/33 +f 630/558/264 978/810/479 977/809/254 +f 1066/894/41 1051/895/41 185/896/41 +f 187/116/41 186/115/41 183/112/41 +f 676/604/39 675/603/39 880/763/39 +f 1067/897/520 1068/898/39 1069/899/39 +f 1070/900/521 645/572/271 644/571/270 +f 1028/857/504 1030/576/271 1071/577/521 +f 1072/901/51 1073/902/51 1074/903/51 +f 1075/904/51 1072/901/51 1076/905/51 +f 1074/903/51 1077/906/51 1076/905/51 +f 1072/901/51 1074/903/51 1076/905/51 +f 1075/904/51 1078/907/51 1072/901/51 +f 1079/908/39 1080/909/522 1081/910/523 +f 1082/911/33 1083/912/33 1084/913/524 +f 1085/914/41 1086/915/41 1087/916/41 +f 1088/917/51 1089/918/51 1090/919/51 +f 1091/920/41 1092/921/41 1087/916/41 +f 1084/913/524 1081/910/523 1080/909/522 +f 1093/922/525 1094/923/33 1095/924/33 +f 1093/922/525 1096/925/525 1097/926/526 +f 1098/927/527 1099/928/528 1100/929/529 +f 1101/930/51 1102/931/51 1103/932/51 +f 1103/932/51 1102/931/51 1076/905/51 +f 1104/933/23 1105/929/23 1106/928/23 +f 1107/934/39 1108/935/530 1109/936/531 +f 1110/937/23 1111/938/532 1112/939/533 +f 1113/940/41 1114/941/41 1115/942/41 +f 1092/921/41 1091/920/41 1116/943/41 +f 1116/943/41 1117/944/41 1115/942/41 +f 1112/939/533 1111/938/532 1118/945/534 +f 1119/946/535 1120/947/535 1121/948/23 +f 1109/936/531 1108/935/530 1122/949/527 +f 1090/919/51 1078/907/51 1075/904/51 +f 1123/950/33 1124/951/33 1125/927/33 +f 1119/946/535 1126/952/536 1127/953/536 +f 1128/954/537 1097/926/526 1127/953/536 +f 1073/902/51 1129/955/51 1074/903/51 +f 1130/956/33 94/32/33 96/34/33 +f 1131/17/34 97/35/34 99/23/34 +f 1132/12/23 100/36/23 102/38/23 +f 1133/957/35 103/39/35 105/40/37 +f 1134/958/33 1135/959/33 1130/956/33 +f 1136/960/538 105/40/37 1137/961/539 +f 96/34/33 1134/958/33 1130/956/33 +f 1135/959/33 1138/962/33 1130/956/33 +f 1131/17/34 99/23/34 1139/18/34 +f 102/38/23 1140/13/23 1132/12/23 +f 105/40/37 104/31/36 1137/961/539 +f 1141/37/540 1142/36/540 1143/28/540 +f 1144/963/541 177/106/58 686/614/282 +f 883/766/406 1145/964/542 698/626/291 +f 883/766/406 698/626/291 700/628/293 +f 699/627/292 1043/871/508 700/628/293 +f 705/633/33 696/624/290 695/623/289 +f 1146/965/543 1147/966/544 1148/967/545 +f 1149/968/546 1150/969/547 1151/970/548 +f 1152/971/549 1153/972/550 1154/973/551 +f 1153/972/550 1155/974/552 1154/973/551 +f 1042/870/507 700/628/293 1043/871/508 +f 1151/970/548 1150/969/547 1156/975/39 +f 1157/976/23 1158/977/553 1159/978/23 +f 1160/979/552 1145/964/542 883/766/406 +f 1152/971/549 1161/980/23 1153/972/550 +f 1162/981/554 1163/982/292 1164/983/555 +f 1165/984/18 1166/985/18 1167/986/556 +f 1168/987/557 1152/971/549 1169/988/558 +f 1161/980/23 1170/989/23 1153/972/550 +f 714/642/33 734/662/33 715/643/300 +f 711/639/23 719/647/301 712/640/299 +f 1171/990/18 1172/991/18 1173/992/559 +f 1174/993/560 1175/994/561 1176/995/41 +f 1175/996/561 1174/997/560 1177/998/39 +f 1178/999/51 1179/1000/51 1180/1001/562 +f 1181/1002/494 1182/1003/494 1183/1004/494 +f 1184/1005/563 655/582/273 654/581/272 +f 1182/1003/494 1185/1006/494 1183/1004/494 +f 1186/1007/494 1181/1002/494 1187/1008/494 +f 618/546/254 763/692/316 659/586/33 +f 1188/1009/41 1189/1010/41 1190/1011/41 +f 1191/1012/41 1192/1013/41 1189/1010/41 +f 993/825/488 1193/1014/564 994/826/489 +f 701/629/294 745/673/307 693/621/288 +f 747/675/309 744/672/33 745/673/307 +f 1182/1003/494 1012/842/494 1014/844/494 +f 1194/1015/494 1014/844/494 1013/843/494 +f 742/670/33 740/668/304 745/673/307 +f 1187/1008/494 1181/1002/494 1183/1004/494 +f 743/671/306 741/669/305 740/668/304 +f 675/603/39 879/762/39 880/763/39 +f 1050/878/511 988/820/487 987/819/486 +f 908/795/414 1195/1016/565 998/831/493 +f 1196/1017/566 993/825/488 995/827/490 +f 1176/995/41 1197/1018/559 1173/992/559 +f 1178/999/51 1198/1019/567 1199/1020/568 +f 1180/1001/562 1200/1021/39 1177/1022/39 +f 1201/1023/18 1199/1020/568 1198/1019/567 +f 1202/1024/277 1203/1025/569 1204/1026/277 +f 677/605/276 679/607/277 1204/1026/277 +f 1205/1027/41 1206/1028/41 1207/1029/41 +f 1208/1030/41 1209/1031/41 1207/1029/41 +f 1210/1032/41 1211/1033/41 1209/1031/41 +f 1212/1034/39 662/589/39 664/594/39 +f 888/771/23 1213/1035/411 895/780/23 +f 900/785/39 1214/1036/39 901/786/39 +f 1215/1037/258 622/550/23 894/779/23 +f 1216/1038/274 1217/1039/502 1218/1040/570 +f 1219/1041/51 1220/822/51 1221/1042/51 +f 1222/1043/33 1223/1044/33 1224/1045/33 +f 1225/774/18 1226/1046/18 1227/1047/18 +f 1228/1048/18 1229/773/18 1225/774/18 +f 1213/1035/411 1230/1049/571 895/780/23 +f 1231/1050/572 1232/1051/572 1233/1052/573 +f 1234/1053/574 658/585/275 1218/1040/570 +f 1235/1054/23 1236/1055/23 1237/1056/23 +f 1238/1057/33 1239/1058/33 1240/1059/33 +f 1241/1060/575 1242/1061/575 1243/981/576 +f 1167/986/556 1244/1062/577 1245/1063/578 +f 1246/1064/23 1247/1065/23 1248/1066/23 +f 1249/1067/18 1250/1068/18 1251/1069/18 +f 1252/1070/579 1253/1071/580 1254/1068/581 +f 1255/1072/582 1256/1073/583 1257/1074/584 +f 1258/1075/585 1257/1074/584 1253/1071/580 +f 1259/1076/586 1260/1077/587 1261/1078/587 +f 1262/1079/23 1263/1080/23 1259/1076/586 +f 1264/1081/41 1265/1082/41 1266/1083/41 +f 1267/1084/41 1268/1085/41 1269/1086/41 +f 1244/1062/577 1270/968/588 1271/1087/588 +f 890/776/410 1272/1088/589 1273/1089/590 +f 1274/1090/23 1275/1091/23 1276/1092/23 +f 1277/1093/575 1278/1094/575 1279/1095/591 +f 1236/1055/23 1235/1054/23 1158/977/553 +f 1158/977/553 1168/987/557 1159/978/23 +f 1280/1096/592 883/766/406 887/770/409 +f 1281/1097/571 1282/1098/593 1283/1046/593 +f 1284/1099/593 1285/1100/593 1230/1049/571 +f 1256/1073/583 1255/1072/582 1286/1101/39 +f 1051/895/41 1066/894/41 1287/1102/41 +f 1288/1103/41 1266/1083/41 1267/1084/41 +f 1289/1104/41 1287/1102/41 1264/1105/41 +f 1290/1106/594 1291/1107/594 1292/1108/594 +f 1280/1096/592 1160/979/552 883/766/406 +f 695/623/289 706/634/33 705/633/33 +f 1293/1109/291 1148/967/545 1147/966/544 +f 1294/1108/18 1295/1107/18 1296/1110/18 +f 1152/971/549 1154/973/551 1169/988/558 +f 1297/1111/595 1298/1106/596 1299/1112/596 +f 1233/1052/573 1297/1111/595 1300/1113/597 +f 1301/1114/18 1232/1051/572 1231/1050/572 +f 1302/893/598 1303/1115/598 1304/1116/598 +f 1305/892/599 1306/1117/599 1307/1115/599 +f 1308/1118/23 1309/1119/23 1310/1115/23 +f 1311/1120/600 1312/1121/600 1313/1117/600 +f 1314/1122/601 1061/889/58 1060/888/518 +f 1315/1123/602 1316/1124/603 700/628/293 +f 1317/1125/604 1318/1126/605 1319/1127/606 +f 1320/1128/607 1321/1129/608 1322/1130/602 +f 1323/1131/609 1324/1132/610 1325/1133/611 +f 1315/1123/602 700/628/293 1042/870/507 +f 1316/1124/603 1315/1123/602 1318/1126/605 +f 1326/1134/605 1327/1135/514 1328/1136/612 +f 1327/1135/514 1326/1134/605 1322/1130/602 +f 1321/1129/608 1329/1137/613 1062/890/519 +f 1330/1138/516 1331/1139/614 1332/1140/615 +f 1267/1084/41 1269/1086/41 1288/1103/41 +f 1288/1103/41 1289/1141/41 1264/1081/41 +f 1333/1142/39 676/604/39 991/823/39 +f 1246/1064/23 1334/1143/23 1247/1065/23 +f 1235/1054/23 1237/1056/23 1334/1143/23 +f 1246/1064/23 1335/1144/23 1235/1054/23 +f 1144/963/541 686/614/282 688/616/284 +f 688/616/284 1239/1058/33 1238/1057/33 +f 1155/974/552 1336/1145/592 1337/1146/616 +f 1159/978/23 1168/987/557 1169/988/558 +f 1338/1147/617 1154/973/551 1155/974/552 +f 1336/1145/592 1339/1148/618 1337/1146/616 +f 1340/1149/23 1339/1148/618 1336/1145/592 +f 1341/1150/23 1340/1149/23 1342/1151/590 +f 1274/1090/23 1343/1152/589 1275/1091/23 +f 1344/1153/23 1341/1150/23 1343/1152/589 +f 1345/1154/23 1344/1153/23 1274/1090/23 +f 1346/1155/23 1347/1156/23 1345/1154/23 +f 1346/1155/23 1248/1066/23 1347/1156/23 +f 1246/1064/23 1235/1054/23 1334/1143/23 +f 1163/982/292 1293/1109/291 1348/1157/619 +f 1342/1151/590 1340/1149/23 1336/1145/592 +f 1343/1152/589 1341/1150/23 1342/1151/590 +f 1274/1090/23 1344/1153/23 1343/1152/589 +f 1346/1155/23 1345/1154/23 1274/1090/23 +f 1349/1158/620 1350/1159/621 1351/1160/622 +f 1346/1155/23 1246/1064/23 1248/1066/23 +f 892/775/23 1281/1097/571 891/774/411 +f 899/784/39 902/788/39 897/782/39 +f 1352/1161/623 1353/1162/624 1354/1163/625 +f 1018/847/497 1027/856/503 1352/1161/623 +f 1355/1164/501 1356/1165/626 1217/1039/502 +f 1356/1165/626 1355/1164/501 1357/1166/627 +f 1357/1166/627 1354/1163/625 1353/1162/624 +f 1358/1167/628 1359/1168/629 1360/1169/630 +f 1359/1168/629 1361/1170/631 1362/1171/632 +f 1363/1172/633 1358/1167/628 1364/1173/634 +f 1361/1170/631 1365/1174/635 1366/1175/636 +f 1367/1176/637 1363/1172/633 1368/1177/638 +f 1365/1174/635 1369/1178/639 1370/1179/640 +f 1371/1180/641 1367/1176/637 1372/1181/642 +f 1369/1178/639 1373/1182/643 1374/1183/644 +f 1375/1184/645 1371/1180/641 1376/1185/646 +f 1373/1182/643 1234/1053/574 1377/1186/647 +f 1350/1159/621 1375/1184/645 1378/1187/648 +f 1379/1043/41 1380/579/41 1381/1188/649 +f 1382/1189/33 1223/1044/33 1222/1043/33 +f 1224/1045/33 1383/1190/33 1222/1043/33 +f 1384/1042/18 1385/822/18 1386/579/18 +f 1383/1190/33 1387/1191/33 1388/1042/33 +f 657/584/18 1389/1192/18 1218/1040/570 +f 620/548/255 622/550/23 1215/1037/258 +f 1390/1193/650 1391/1194/651 1392/1195/652 +f 1392/1195/652 1393/1196/653 1394/1197/654 +f 1394/1197/654 1390/1193/650 1392/1195/652 +f 1395/1198/655 1396/1199/656 1390/1193/650 +f 1397/1200/657 1398/1201/405 1396/1199/656 +f 1399/1202/658 843/729/392 1400/1203/408 +f 625/553/259 685/613/281 623/551/257 +f 1401/1204/659 1402/1205/412 1398/1201/405 +f 843/729/392 624/552/258 1400/1203/408 +f 1399/1202/658 1403/1206/407 1402/1205/412 +f 625/553/259 840/726/390 838/724/388 +f 749/677/311 839/725/389 748/676/310 +f 839/725/389 840/726/390 748/676/310 +f 838/724/388 1404/1207/660 1405/1208/265 +f 749/677/311 709/637/298 1406/1209/661 +f 1404/1207/660 838/724/388 839/725/389 +f 1407/652/662 1408/1210/663 1409/1211/664 +f 1408/1210/663 1407/652/662 1410/650/665 +f 1411/1212/666 1412/644/667 1413/646/668 +f 1410/650/665 1414/640/669 1415/1213/670 +f 1392/1195/652 1416/1214/671 1393/1196/653 +f 771/701/323 983/815/482 1394/1197/654 +f 983/815/482 981/813/481 1395/1198/655 +f 979/811/480 975/807/478 1401/1204/659 +f 1395/1198/655 981/813/481 979/811/480 +f 975/807/478 760/689/317 1399/1202/658 +f 1400/1203/408 1403/1206/407 1399/1202/658 +f 1417/1215/23 1418/1216/23 844/730/23 +f 684/612/255 624/552/258 623/551/257 +f 835/721/387 748/676/310 840/726/390 +f 1399/1202/658 760/689/317 978/810/479 +f 835/721/387 840/726/390 625/553/259 +f 843/729/392 978/810/479 630/558/264 +f 1419/1217/656 882/765/405 700/628/293 +f 1420/1218/672 1419/1217/656 1316/1124/603 +f 1421/1219/23 1422/1220/673 1420/1218/672 +f 1423/1221/23 1421/1219/23 1316/1124/603 +f 1424/1222/674 1423/1221/23 1317/1125/604 +f 1317/1125/604 1325/1133/611 1324/1132/610 +f 905/791/39 869/752/39 868/751/39 +f 1316/1124/603 1419/1217/656 700/628/293 +f 1421/1219/23 1420/1218/672 1316/1124/603 +f 1317/1125/604 1423/1221/23 1316/1124/603 +f 1324/1132/610 1424/1222/674 1317/1125/604 +f 885/768/408 1215/1037/258 894/779/23 +f 1425/1223/494 1426/1224/494 1427/1225/494 +f 1428/1226/494 1429/1227/494 1430/1228/494 +f 1428/1226/494 1430/1228/494 1427/1225/494 +f 1426/1224/494 1428/1226/494 1427/1225/494 +f 1426/1224/494 1425/1223/494 1431/1229/494 +f 1431/1229/494 1432/1230/494 1433/1231/494 +f 1194/1015/494 1013/843/494 1433/1231/494 +f 1434/1232/675 1435/1233/676 1436/1234/677 +f 1436/1234/677 1437/1235/678 1438/1236/679 +f 1439/1237/680 1440/1238/681 1441/1239/682 +f 1442/1240/683 1440/1238/681 1439/1237/680 +f 1184/1005/563 1443/1241/684 1435/1233/676 +f 1181/1002/494 1186/1007/494 1429/1227/494 +f 1433/1231/494 1444/1242/494 1431/1229/494 +f 750/1243/39 666/593/39 899/784/39 +f 1445/1244/41 1446/1245/41 1447/1246/41 +f 1448/1024/23 1449/1026/23 1450/1247/23 +f 1451/835/39 1452/1247/39 1453/1026/39 +f 1450/1248/23 1454/1249/23 1455/1250/23 +f 1456/1251/22 70/12/22 72/14/22 +f 1457/1251/23 73/14/23 75/16/23 +f 87/27/31 76/17/24 78/19/26 +f 1458/1252/28 79/20/27 81/22/28 +f 1459/9/29 82/21/29 84/24/29 +f 78/19/26 85/25/30 87/27/31 +f 1460/1253/23 88/28/23 90/30/23 +f 1461/39/32 91/25/32 93/31/32 +f 144/79/50 135/70/42 137/72/44 +f 114/49/38 138/73/45 117/52/40 +f 139/74/45 138/73/45 141/76/47 +f 141/76/47 140/75/46 143/78/49 +f 143/78/49 142/77/48 136/71/43 +f 1462/3/51 146/7/51 148/82/51 +f 1463/1254/51 149/83/51 151/85/51 +f 1464/88/39 152/86/39 154/54/39 +f 1465/1255/23 155/87/23 157/88/23 +f 1466/92/23 158/89/23 160/91/23 +f 1467/69/51 161/92/51 163/61/51 +f 311/246/90 169/98/52 171/100/54 +f 695/623/289 172/101/55 174/103/57 +f 638/565/33 175/104/33 177/106/58 +f 1468/574/505 181/110/59 173/102/56 +f 1469/1256/41 185/114/41 187/116/41 +f 312/247/41 188/117/41 190/119/41 +f 313/248/89 191/120/60 193/122/62 +f 314/249/51 194/123/51 196/125/51 +f 171/100/54 170/99/53 198/127/64 +f 190/119/41 189/118/41 200/1257/41 +f 193/122/62 192/121/61 202/132/66 +f 196/125/51 195/124/51 204/134/51 +f 198/127/64 197/126/63 206/136/68 +f 200/1257/41 199/137/41 208/139/41 +f 202/132/66 201/131/65 210/141/70 +f 204/134/51 203/133/51 212/143/51 +f 206/1258/68 205/1259/67 214/1260/72 +f 208/139/41 207/138/41 216/147/41 +f 210/1261/70 209/1262/69 218/1263/74 +f 212/143/51 211/142/51 220/152/51 +f 1470/1264/95 221/1265/75 223/1266/77 +f 216/147/41 215/146/41 225/157/41 +f 1471/1267/94 226/158/78 228/160/80 +f 220/152/51 219/151/51 230/162/51 +f 223/1266/77 222/163/76 232/165/82 +f 225/157/41 224/156/41 234/167/41 +f 228/160/80 227/159/79 236/169/84 +f 230/162/51 229/161/51 238/171/51 +f 232/165/82 231/164/81 240/173/86 +f 234/167/41 233/166/41 242/175/41 +f 236/169/84 235/168/83 244/177/88 +f 238/171/51 237/170/51 246/179/51 +f 240/173/86 239/172/85 248/1268/89 +f 242/175/41 241/174/41 250/184/41 +f 244/177/88 243/176/87 252/186/90 +f 246/179/51 245/178/51 254/188/51 +f 248/1268/89 247/1269/60 256/1270/62 +f 250/184/41 249/183/41 258/192/41 +f 252/186/90 251/185/52 260/194/54 +f 254/188/51 253/187/51 262/196/51 +f 256/1270/62 255/1271/91 264/1272/66 +f 258/192/41 257/191/41 266/200/41 +f 260/194/54 259/193/53 268/202/64 +f 262/196/51 261/195/51 270/204/51 +f 264/1272/66 263/1273/65 272/1274/70 +f 266/200/41 265/199/41 274/208/41 +f 268/202/64 267/201/63 276/210/93 +f 270/204/51 269/203/51 278/212/51 +f 272/206/70 271/205/69 280/214/94 +f 274/208/41 273/207/41 282/216/41 +f 276/210/93 275/209/92 284/218/95 +f 278/212/51 277/211/51 286/220/51 +f 280/214/94 279/213/73 288/222/97 +f 282/216/41 281/215/41 290/224/41 +f 284/1275/95 283/225/71 292/227/77 +f 286/220/51 285/219/51 294/229/51 +f 288/222/97 287/221/96 296/231/84 +f 290/224/41 289/223/41 298/233/41 +f 292/227/77 291/226/76 300/235/82 +f 294/229/51 293/228/51 302/237/51 +f 296/231/84 295/230/83 304/239/88 +f 298/233/41 297/232/41 306/241/41 +f 300/235/82 299/234/81 308/243/98 +f 302/237/51 301/236/51 310/245/51 +f 304/239/88 303/238/87 311/246/90 +f 306/241/41 305/240/41 312/247/41 +f 308/243/98 307/242/85 313/248/89 +f 310/245/51 309/244/51 314/249/51 +f 338/273/23 315/250/23 317/252/23 +f 317/252/23 316/251/23 319/254/23 +f 319/254/23 318/253/23 321/256/23 +f 321/256/23 320/255/23 323/258/23 +f 323/258/23 322/257/23 325/260/23 +f 325/260/23 324/259/23 327/262/23 +f 327/262/23 326/261/23 329/264/23 +f 329/264/23 328/263/23 331/266/23 +f 331/266/23 330/265/23 333/268/23 +f 333/268/23 332/267/23 335/270/23 +f 335/270/23 334/269/23 337/272/23 +f 337/272/23 336/271/23 338/273/23 +f 349/284/106 339/274/99 341/276/101 +f 401/336/137 342/277/102 344/279/104 +f 354/289/110 348/283/105 349/284/106 +f 344/279/104 343/278/103 351/286/108 +f 1472/1276/214 353/288/109 354/289/110 +f 351/286/108 350/285/107 356/291/112 +f 365/300/119 358/293/113 360/295/115 +f 356/291/112 355/290/111 362/297/117 +f 370/305/123 364/299/118 365/300/119 +f 362/297/117 361/296/116 367/302/121 +f 375/310/126 369/304/122 370/305/123 +f 367/302/121 366/301/120 372/307/125 +f 380/315/129 374/309/120 375/310/126 +f 372/307/125 371/306/124 377/312/123 +f 385/320/117 379/314/128 380/315/129 +f 377/312/123 376/311/127 382/317/130 +f 390/325/132 384/319/131 385/320/117 +f 382/317/130 381/316/113 387/322/115 +f 396/331/135 389/324/107 390/325/132 +f 1473/1277/214 391/326/109 393/328/110 +f 400/335/104 395/330/134 396/331/135 +f 393/328/110 392/327/133 398/333/136 +f 341/276/101 340/275/100 400/335/104 +f 398/333/136 397/332/99 401/336/137 +f 419/354/155 408/343/144 417/352/153 +f 431/366/167 428/363/164 419/354/155 +f 460/395/196 430/365/166 431/366/167 +f 441/376/177 436/371/172 437/372/173 +f 436/371/172 441/376/177 439/374/175 +f 449/384/185 432/367/168 446/381/182 +f 439/374/175 451/386/187 436/371/172 +f 436/371/172 452/387/188 434/369/170 +f 449/384/185 446/381/182 451/386/187 +f 443/378/179 450/385/186 446/381/182 +f 456/391/192 454/389/190 435/370/171 +f 467/402/203 455/390/191 456/391/192 +f 459/394/195 457/392/193 402/337/138 +f 922/708/427 458/393/194 459/394/195 +f 419/354/155 429/364/165 408/343/144 +f 430/365/166 460/395/196 462/397/198 +f 469/404/205 466/401/202 456/391/192 +f 471/406/207 468/403/204 469/404/205 +f 921/706/426 470/405/206 469/404/205 +f 461/396/197 472/407/208 473/408/209 +f 481/416/120 477/412/121 479/414/210 +f 485/420/124 480/415/125 481/416/120 +f 479/414/210 478/413/117 483/418/111 +f 487/422/212 484/419/123 485/420/124 +f 491/426/113 486/421/211 487/422/212 +f 483/418/111 482/417/112 489/424/107 +f 493/428/114 490/425/214 491/426/113 +f 497/432/133 492/427/110 493/428/114 +f 489/424/107 488/423/213 495/430/103 +f 499/434/99 496/431/136 497/432/133 +f 500/435/102 498/433/137 499/434/99 +f 495/430/103 494/429/104 500/435/102 +f 505/412/33 501/436/33 503/413/33 +f 509/415/33 504/438/33 505/412/33 +f 503/413/33 502/437/33 507/417/33 +f 511/419/33 508/440/33 509/415/33 +f 514/421/33 510/441/33 511/419/33 +f 507/417/33 506/439/33 513/423/33 +f 516/425/33 474/443/33 514/421/33 +f 520/427/33 515/444/33 516/425/33 +f 513/423/33 512/442/33 518/429/33 +f 522/431/33 519/446/33 520/427/33 +f 523/433/33 521/447/33 522/431/33 +f 518/429/33 517/445/33 523/433/33 +f 531/455/117 527/451/116 529/453/121 +f 540/464/112 530/454/111 531/455/117 +f 529/453/121 528/452/120 534/458/125 +f 534/458/125 533/457/124 538/462/123 +f 550/474/108 539/463/107 540/464/112 +f 538/462/123 537/461/127 543/467/215 +f 563/487/220 546/470/216 548/472/217 +f 560/484/104 549/473/103 550/474/108 +f 1474/1278/218 552/476/218 554/478/219 +f 547/471/216 546/470/216 558/482/136 +f 562/486/137 559/483/102 560/484/104 +f 558/482/136 557/481/99 562/486/137 +f 553/477/219 563/487/220 554/478/219 +f 1475/1279/222 543/467/215 564/489/221 +f 1474/1278/218 565/490/222 552/476/218 +f 1476/1280/33 476/492/33 567/494/33 +f 611/539/247 571/499/224 573/501/226 +f 573/501/226 572/500/225 579/507/228 +f 579/507/228 578/506/227 583/511/230 +f 1477/1281/685 586/514/231 588/516/233 +f 588/516/233 587/515/232 592/520/235 +f 592/520/235 591/519/234 596/524/237 +f 1478/1282/33 597/525/33 599/527/238 +f 1479/1283/239 599/527/238 602/530/239 +f 596/524/237 595/523/236 604/532/241 +f 610/538/246 606/534/242 608/536/244 +f 1067/897/520 609/537/245 610/538/246 +f 604/532/241 603/531/240 611/539/247 +f 866/749/399 615/543/251 612/540/248 +f 608/536/244 607/535/243 627/555/261 +f 1480/555/18 632/554/18 634/561/18 +f 1442/1240/683 640/567/266 642/569/268 +f 1481/110/18 647/574/18 649/576/18 +f 641/568/267 654/581/272 642/569/268 +f 1023/852/502 656/583/274 658/585/275 +f 1482/1284/41 667/595/41 669/597/41 +f 669/597/41 668/596/41 671/599/41 +f 670/598/41 672/600/41 671/599/41 +f 629/557/263 628/556/262 683/611/280 +f 1405/1208/265 684/612/255 685/613/281 +f 1483/1285/541 692/620/287 694/622/58 +f 172/101/55 695/623/289 697/625/284 +f 749/677/311 707/635/296 709/637/298 +f 764/828/39 738/666/39 674/602/39 +f 1484/1286/33 755/684/33 757/686/33 +f 867/750/400 766/696/51 768/698/320 +f 1485/654/686 775/703/327 777/659/329 +f 971/661/476 778/705/330 773/662/325 +f 799/709/351 795/345/347 797/357/349 +f 1486/1287/39 847/733/39 849/735/39 +f 1487/1287/23 850/735/23 852/737/23 +f 1488/1288/687 853/738/393 855/740/393 +f 1489/1289/18 856/740/18 858/741/18 +f 1490/1290/39 859/742/395 861/744/39 +f 841/727/391 614/542/250 867/750/400 +f 876/759/51 871/754/51 872/755/401 +f 871/754/51 873/756/51 841/727/391 +f 872/755/401 874/757/402 876/759/51 +f 874/757/402 872/755/401 878/761/403 +f 612/540/248 616/544/252 881/764/404 +f 901/786/39 906/792/39 898/787/39 +f 911/798/416 907/794/413 909/796/415 +f 1491/1291/33 910/797/33 911/798/416 +f 1492/801/688 406/341/142 912/407/417 +f 460/395/196 913/799/418 461/396/197 +f 913/799/418 914/800/419 472/407/208 +f 923/707/428 914/800/419 916/719/421 +f 460/395/196 431/366/167 913/799/418 +f 425/360/161 918/802/423 424/359/160 +f 1493/803/689 918/802/423 917/713/422 +f 1493/803/689 917/713/422 468/403/204 +f 420/355/156 417/352/153 920/720/425 +f 408/343/144 410/345/146 422/357/158 +f 797/357/349 796/343/348 828/352/380 +f 959/364/464 936/363/441 791/354/343 +f 936/363/441 937/365/442 792/366/344 +f 940/369/445 941/371/446 943/372/448 +f 946/375/451 942/376/447 944/374/449 +f 933/346/438 939/367/444 949/381/454 +f 955/387/460 954/386/459 941/371/446 +f 953/385/458 955/387/460 940/369/445 +f 955/387/460 949/381/454 954/386/459 +f 955/387/460 953/385/458 949/381/454 +f 943/372/448 957/389/462 779/370/331 +f 957/389/462 833/390/385 780/391/332 +f 834/338/386 958/392/463 802/337/354 +f 958/392/463 816/393/368 800/394/352 +f 826/344/378 959/364/464 796/343/348 +f 818/396/370 938/395/443 819/397/371 +f 808/402/360 960/401/465 780/391/332 +f 960/401/465 962/403/467 961/404/466 +f 963/406/468 824/405/376 961/404/466 +f 787/340/339 964/407/469 820/408/372 +f 787/340/339 825/341/377 966/407/471 +f 964/407/469 967/799/472 818/396/370 +f 1494/801/690 968/800/473 964/407/469 +f 967/799/472 968/800/473 821/719/373 +f 821/719/373 792/366/344 967/799/472 +f 830/361/382 969/802/474 829/359/381 +f 806/360/358 969/802/474 807/713/359 +f 960/401/465 807/713/359 962/403/467 +f 815/357/367 828/352/380 823/720/375 +f 778/705/330 971/661/476 776/704/328 +f 643/570/269 972/804/477 707/635/296 +f 972/804/477 643/570/269 683/611/280 +f 758/687/315 760/689/317 976/808/314 +f 976/808/314 975/807/478 980/812/295 +f 980/812/295 979/811/480 982/814/294 +f 982/814/294 981/813/481 984/816/483 +f 1495/1292/23 989/821/23 990/822/23 +f 1195/1016/565 996/829/491 998/831/493 +f 996/829/491 999/1293/23 997/830/492 +f 1496/1294/33 1001/1295/33 1003/1296/33 +f 1497/845/39 1006/838/39 1008/840/39 +f 1498/1297/33 1009/840/33 1011/841/33 +f 1499/1298/691 1015/838/495 1017/846/495 +f 1022/851/501 1021/850/500 1019/848/498 +f 1021/850/500 1022/851/501 1023/852/502 +f 1500/1299/18 1024/853/18 1026/855/18 +f 1501/1300/395 1032/860/395 1034/862/39 +f 752/681/313 1052/880/51 867/750/400 +f 1502/1301/51 1053/881/512 767/697/51 +f 1503/1302/403 768/698/320 1054/882/403 +f 1057/885/515 745/673/307 1056/884/514 +f 741/669/305 1058/886/516 739/667/303 +f 1329/1137/613 1060/888/518 1062/890/519 +f 1056/884/514 740/668/304 1059/887/517 +f 1504/1303/33 1063/891/33 1065/893/33 +f 609/537/245 1067/897/520 1069/899/39 +f 1505/1304/521 1070/900/521 644/571/270 +f 1506/1305/521 1028/857/504 1071/577/521 +f 1122/949/527 1079/908/39 1081/910/523 +f 1507/1306/692 1082/911/33 1084/913/524 +f 1508/1307/41 1085/914/41 1087/916/41 +f 1509/1308/51 1088/917/51 1090/919/51 +f 1086/915/41 1091/920/41 1087/916/41 +f 1507/1306/692 1084/913/524 1080/909/522 +f 1096/925/525 1093/922/525 1095/924/33 +f 1128/954/537 1093/922/525 1097/926/526 +f 1510/950/529 1098/927/527 1100/929/529 +f 1511/1309/51 1101/930/51 1103/932/51 +f 1077/906/51 1103/932/51 1076/905/51 +f 1118/945/534 1107/934/39 1109/936/531 +f 1512/1310/23 1110/937/23 1112/939/533 +f 1117/944/41 1113/940/41 1115/942/41 +f 1513/1311/41 1092/921/41 1116/943/41 +f 1513/1311/41 1116/943/41 1115/942/41 +f 1109/936/531 1112/939/533 1118/945/534 +f 1514/1312/23 1119/946/535 1121/948/23 +f 1081/910/523 1109/936/531 1122/949/527 +f 1509/1308/51 1090/919/51 1075/904/51 +f 1120/947/535 1119/946/535 1127/953/536 +f 1126/952/536 1128/954/537 1127/953/536 +f 1515/1253/540 1141/37/540 1143/28/540 +f 1516/1087/693 1149/968/546 1151/970/548 +f 1517/1313/694 1162/981/554 1164/983/555 +f 1518/1314/695 1165/984/18 1167/986/556 +f 1197/1018/559 1171/990/18 1173/992/559 +f 1519/1315/41 1174/993/560 1176/995/41 +f 1200/1316/39 1175/996/561 1177/998/39 +f 1520/1317/562 1178/999/51 1180/1001/562 +f 1443/1241/684 1184/1005/563 654/581/272 +f 1521/1318/41 1188/1009/41 1190/1011/41 +f 1188/1009/41 1191/1012/41 1189/1010/41 +f 1185/1006/494 1182/1003/494 1014/844/494 +f 909/796/415 908/795/414 998/831/493 +f 1519/1315/41 1176/995/41 1173/992/559 +f 1179/1000/51 1178/999/51 1199/1020/568 +f 1520/1317/562 1180/1001/562 1177/1022/39 +f 1522/1319/18 1201/1320/18 1198/1321/567 +f 1203/1025/569 677/605/276 1204/1026/277 +f 1523/1322/41 1205/1027/41 1207/1029/41 +f 1206/1028/41 1208/1030/41 1207/1029/41 +f 1208/1030/41 1210/1032/41 1209/1031/41 +f 750/678/39 1212/1034/39 664/594/39 +f 1389/1192/18 1216/1038/274 1218/1040/570 +f 1524/1323/51 1219/1041/51 1221/1042/51 +f 1227/1047/18 1228/1048/18 1225/774/18 +f 1525/1324/573 1231/1050/572 1233/1052/573 +f 1377/1186/647 1234/1053/574 1218/1040/570 +f 1526/1325/33 1238/1057/33 1240/1059/33 +f 1517/1313/694 1527/1060/696 1162/981/554 +f 1518/1314/695 1167/986/556 1245/1063/578 +f 1528/1326/18 1249/1067/18 1251/1069/18 +f 1529/1067/697 1252/1070/579 1254/1068/581 +f 1258/1075/585 1255/1072/582 1257/1074/584 +f 1252/1070/579 1258/1075/585 1253/1071/580 +f 1530/1327/586 1259/1076/586 1261/1078/587 +f 1530/1327/586 1262/1079/23 1259/1076/586 +f 1288/1103/41 1264/1081/41 1266/1083/41 +f 1245/1063/578 1244/1062/577 1271/1087/588 +f 887/770/409 890/776/410 1273/1089/590 +f 1157/976/23 1236/1055/23 1158/977/553 +f 1273/1089/590 1280/1096/592 887/770/409 +f 891/774/411 1281/1097/571 1283/1046/593 +f 1213/1035/411 1284/1099/593 1230/1049/571 +f 1531/1328/39 1256/1073/583 1286/1101/39 +f 1289/1104/41 1051/895/41 1287/1102/41 +f 1532/1112/594 1290/1106/594 1292/1108/594 +f 1348/1157/619 1293/1109/291 1147/966/544 +f 1533/1329/18 1294/1108/18 1296/1110/18 +f 1300/1113/597 1297/1111/595 1299/1112/596 +f 1525/1324/573 1233/1052/573 1300/1113/597 +f 1534/1330/18 1301/1114/18 1231/1050/572 +f 1535/1331/598 1302/893/598 1304/1116/598 +f 1536/893/599 1305/892/599 1307/1115/599 +f 1537/1117/23 1308/1118/23 1310/1115/23 +f 1538/892/600 1311/1120/600 1313/1117/600 +f 1320/1128/607 1314/1122/601 1060/888/518 +f 1325/1133/611 1317/1125/604 1319/1127/606 +f 1314/1122/601 1320/1128/607 1322/1130/602 +f 1319/1127/606 1323/1131/609 1325/1133/611 +f 1317/1125/604 1316/1124/603 1318/1126/605 +f 1332/1140/615 1326/1134/605 1328/1136/612 +f 1062/890/519 1327/1135/514 1322/1130/602 +f 1322/1130/602 1321/1129/608 1062/890/519 +f 1328/1136/612 1330/1138/516 1332/1140/615 +f 1144/963/541 688/616/284 1238/1057/33 +f 1337/1146/616 1338/1147/617 1155/974/552 +f 1164/983/555 1163/982/292 1348/1157/619 +f 1539/1332/698 1349/1158/620 1351/1160/622 +f 1354/1163/625 1018/847/497 1352/1161/623 +f 1216/1038/274 1355/1164/501 1217/1039/502 +f 1353/1162/624 1356/1165/626 1357/1166/627 +f 1364/1173/634 1358/1167/628 1360/1169/630 +f 1360/1169/630 1359/1168/629 1362/1171/632 +f 1368/1177/638 1363/1172/633 1364/1173/634 +f 1362/1171/632 1361/1170/631 1366/1175/636 +f 1372/1181/642 1367/1176/637 1368/1177/638 +f 1366/1175/636 1365/1174/635 1370/1179/640 +f 1376/1185/646 1371/1180/641 1372/1181/642 +f 1370/1179/640 1369/1178/639 1374/1183/644 +f 1378/1187/648 1375/1184/645 1376/1185/646 +f 1374/1183/644 1373/1182/643 1377/1186/647 +f 1351/1160/622 1350/1159/621 1378/1187/648 +f 1540/1333/625 1379/1043/41 1381/1188/649 +f 1541/1043/18 1384/1042/18 1386/579/18 +f 1222/1043/33 1383/1190/33 1388/1042/33 +f 658/585/275 657/584/18 1218/1040/570 +f 1394/1197/654 1395/1198/655 1390/1193/650 +f 1395/1198/655 1397/1200/657 1396/1199/656 +f 1397/1200/657 1401/1204/659 1398/1201/405 +f 1401/1204/659 1399/1202/658 1402/1205/412 +f 685/613/281 838/724/388 1405/1208/265 +f 839/725/389 749/677/311 1406/1209/661 +f 1406/1209/661 1404/1207/660 839/725/389 +f 1413/646/668 1407/652/662 1409/1211/664 +f 1415/1213/670 1408/1210/663 1410/650/665 +f 1409/1211/664 1411/1212/666 1413/646/668 +f 1393/1196/653 771/701/323 1394/1197/654 +f 1394/1197/654 983/815/482 1395/1198/655 +f 1397/1200/657 979/811/480 1401/1204/659 +f 1397/1200/657 1395/1198/655 979/811/480 +f 1401/1204/659 975/807/478 1399/1202/658 +f 846/732/23 1417/1215/23 844/730/23 +f 843/729/392 1399/1202/658 978/810/479 +f 630/558/264 835/721/387 625/553/259 +f 625/553/259 843/729/392 630/558/264 +f 879/762/39 905/791/39 868/751/39 +f 1444/1242/494 1426/1224/494 1431/1229/494 +f 1432/1230/494 1194/1015/494 1433/1231/494 +f 1542/1334/699 1434/1232/675 1436/1234/677 +f 1542/1334/699 1436/1234/677 1438/1236/679 +f 1543/1335/678 1439/1237/680 1441/1239/682 +f 640/567/266 1442/1240/683 1439/1237/680 +f 1434/1232/675 1184/1005/563 1435/1233/676 +f 1428/1226/494 1181/1002/494 1429/1227/494 +f 904/790/39 750/1243/39 899/784/39 +f 1544/1336/41 1445/1244/41 1447/1246/41 +f 1545/607/39 1451/835/39 1453/1026/39 +f 1448/1024/23 1450/1247/23 1455/1337/23 +f 61/3/18 63/5/18 1546/1338/18 +f 61/3/18 66/8/18 65/7/18 +f 66/8/18 61/3/18 1546/1338/18 +f 144/79/50 64/6/19 66/8/18 +o mag_pistol_0 +v -1.109136 1.854146 1.546994 +v -1.109136 6.483851 2.313159 +v -1.109136 1.746315 1.309461 +v 1.109136 6.483851 2.313159 +v 1.109136 6.193875 2.563060 +v 1.109136 1.854146 1.546994 +v 1.109136 1.746315 1.309461 +v -1.109136 6.193875 2.563060 +v -1.109136 7.455005 0.432839 +v -0.855096 7.454038 0.681170 +v -0.637953 7.455005 0.432839 +v -1.109136 7.447666 2.316916 +v -0.851242 7.447666 2.316916 +v -0.645065 7.456246 0.114418 +v -0.808240 7.456246 0.114418 +v -0.882817 -7.449296 -6.242331 +v -1.332151 -7.578506 -5.806304 +v -1.109136 -7.583717 -5.788713 +v -1.260158 -8.694220 -2.041335 +v -1.109136 -8.686133 -2.068619 +v -0.818644 -8.777006 -1.761972 +v -0.549908 -9.201518 -0.329462 +v 0.549908 -9.201518 -0.329462 +v 0.855096 7.454038 0.681170 +v 1.109136 7.455005 0.432839 +v 0.637953 7.455005 0.432839 +v 0.645065 7.456246 0.114418 +v 0.808240 7.456246 0.114418 +v -0.413784 6.208827 -0.016872 +v 0.413784 6.208827 -0.016872 +v 0.440888 6.323021 -0.358271 +v 0.851242 7.447666 2.316916 +v -0.791829 -7.487275 -6.114170 +v 0.791829 -7.487275 -6.114170 +v 0.882817 -7.449296 -6.242331 +v 1.109136 -7.583717 -5.788713 +v 1.332151 -7.578506 -5.806304 +v 1.109136 -8.686133 -2.068619 +v -0.527911 -9.865828 -0.558221 +v 0.527911 -9.865828 -0.558221 +v 0.549908 -9.201518 -0.329462 +v 0.527911 -9.865828 -0.558221 +v -0.527911 -9.865828 -0.558221 +v -1.263812 -9.320386 -2.284039 +v -0.889556 -7.991921 -6.487401 +v 0.889556 -7.991921 -6.487401 +v 1.326758 -8.130615 -6.048564 +v 1.263812 -9.320386 -2.284039 +v -1.326758 -8.130615 -6.048564 +v 1.260158 -8.694220 -2.041335 +v 0.818644 -8.777006 -1.761972 +v -0.440888 6.323021 -0.358271 +v 1.109136 7.447666 2.316916 +v -0.549908 -9.201518 -0.329462 +v -0.330292 5.643600 3.823889 +v 0.330292 5.643600 3.823889 +v -0.639183 4.693711 3.350439 +v -0.784649 4.758710 3.184808 +v -0.823423 6.188931 3.832170 +v -0.613250 5.916150 3.869261 +v 0.639183 4.693711 3.350439 +v 0.613250 5.916150 3.869261 +v -0.791829 -7.487275 -6.114170 +v -0.440888 6.323021 -0.358271 +v 0.791829 -7.487275 -6.114170 +v 1.109136 6.187973 4.078713 +v 1.109136 1.608211 2.157616 +v 1.109136 7.455005 0.432839 +v 1.109136 -7.583717 -5.788713 +v 1.109136 1.421237 1.150594 +v 1.109136 1.152737 1.225781 +v 0.613250 6.186937 4.344059 +v 0.613250 5.905007 4.230341 +v 0.807799 6.186931 4.345726 +v -0.367306 5.610397 4.110494 +v -0.804550 1.432484 2.382775 +v 0.367306 5.610397 4.110494 +v -0.613250 6.186937 4.344059 +v -0.807799 6.186931 4.345726 +v -0.613250 5.905007 4.230341 +v -0.818644 -8.777006 -1.761972 +v 0.818644 -8.777006 -1.761972 +v -0.775337 0.764493 2.107609 +v -1.109136 1.608211 2.157616 +v -1.109136 7.455005 0.432839 +v -1.109136 1.421237 1.150594 +v -1.109136 -7.583717 -5.788713 +v -1.109136 1.152737 1.225781 +v -0.629678 6.747400 -0.181056 +v 0.440888 6.323021 -0.358271 +v 0.629678 6.747400 -0.181056 +v -0.784480 5.973367 0.123958 +v -0.784649 4.758710 3.184808 +v 0.784480 5.973367 0.123958 +v 1.109136 7.447666 2.316916 +v 1.109136 -8.686133 -2.068619 +v 0.804550 1.432484 2.382775 +v 0.775337 0.764493 2.107609 +v -1.109136 0.828570 1.868721 +v -1.109136 -8.686133 -2.068619 +v -1.109136 6.187973 4.078713 +v -0.613250 6.189570 3.985306 +v -1.109136 6.193875 2.563060 +v -1.109136 6.187973 4.078713 +v -0.823423 6.188931 3.832170 +v -0.808240 7.456246 0.114418 +v -1.109136 7.447666 2.316916 +v -1.109136 6.483851 2.313159 +v -0.839998 6.483851 2.313159 +v -0.855295 6.193875 2.563060 +v -0.855096 7.454038 0.681170 +v -0.851242 7.447666 2.316916 +v -0.839998 6.483851 2.313159 +v -0.613250 5.916150 3.869261 +v -0.613250 5.905007 4.230341 +v -0.367306 5.610397 4.110494 +v -0.613250 6.189570 3.985306 +v -0.613250 6.186937 4.344059 +v -0.804550 1.432484 2.382775 +v -0.804550 1.432484 2.382775 +v -0.836434 1.761413 1.534160 +v -0.864811 1.209287 1.297543 +v -0.866598 1.383340 1.228519 +v -1.109136 1.608211 2.157616 +v -1.109136 1.854146 1.546994 +v -0.836434 1.761413 1.534160 +v -1.109136 1.746315 1.309461 +v -0.853872 1.693580 1.365606 +v -1.109136 1.421237 1.150594 +v -0.866598 1.383340 1.228519 +v -1.109136 1.152737 1.225781 +v -0.864811 1.209287 1.297543 +v -1.109136 0.828570 1.868721 +v -0.775337 0.764493 2.107609 +v -0.818644 -8.777006 -1.761972 +v -1.326758 -8.130615 -6.048564 +v -1.332151 -7.578506 -5.806304 +v -0.882817 -7.449296 -6.242331 +v -1.263812 -9.320386 -2.284039 +v -1.260158 -8.694220 -2.041335 +v -0.527911 -9.865828 -0.558221 +v -0.549908 -9.201518 -0.329462 +v -0.855295 6.193875 2.563060 +v -0.637953 7.455005 0.432839 +v -0.610240 6.670014 0.107511 +v -0.586664 6.044359 -0.058251 +v -0.413784 6.208827 -0.016872 +v -0.629678 6.747400 -0.181056 +v -0.645065 7.456246 0.114418 +v -0.610240 6.670014 0.107511 +v -0.784480 5.973367 0.123958 +v -0.637953 7.455005 0.432839 +v -0.413784 6.208827 -0.016872 +v -0.440888 6.323021 -0.358271 +v -0.807799 6.186931 4.345726 +v -0.613250 6.189570 3.985306 +v 0.586664 6.044359 -0.058251 +v 0.889556 -7.991921 -6.487401 +v -0.889556 -7.991921 -6.487401 +v 0.784480 5.973367 0.123958 +v 0.855096 7.454038 0.681170 +v 0.610240 6.670014 0.107511 +v 0.637953 7.455005 0.432839 +v 0.645065 7.456246 0.114418 +v 0.610240 6.670014 0.107511 +v 1.109136 6.187973 4.078713 +v 1.109136 6.193875 2.563060 +v 0.823423 6.188931 3.832170 +v 0.851242 7.447666 2.316916 +v 0.839998 6.483851 2.313159 +v 0.855295 6.193875 2.563060 +v 0.413784 6.208827 -0.016872 +v 0.440888 6.323021 -0.358271 +v 0.413784 6.208827 -0.016872 +v 0.629678 6.747400 -0.181056 +v 0.807799 6.186931 4.345726 +v 0.613250 6.189570 3.985306 +v 0.784649 4.758710 3.184808 +v 0.586664 6.044359 -0.058251 +v 0.613250 6.186937 4.344059 +v 0.613250 6.189570 3.985306 +v 0.823423 6.188931 3.832170 +v 0.808240 7.456246 0.114418 +v 1.109136 7.447666 2.316916 +v 0.851242 7.447666 2.316916 +v 0.839998 6.483851 2.313159 +v 1.109136 6.483851 2.313159 +v 0.855295 6.193875 2.563060 +v -0.330292 5.643600 3.823889 +v 0.367306 5.610397 4.110494 +v 0.613250 5.916150 3.869261 +v 0.330292 5.643600 3.823889 +v 0.613250 5.905007 4.230341 +v 0.613250 6.186937 4.344059 +v 0.807799 6.186931 4.345726 +v 0.804550 1.432484 2.382775 +v 0.804550 1.432484 2.382775 +v 0.775337 0.764493 2.107609 +v 0.864811 1.209287 1.297543 +v 0.866598 1.383340 1.228519 +v 0.853872 1.693580 1.365606 +v 0.836434 1.761413 1.534160 +v 1.109136 1.608211 2.157616 +v 0.804550 1.432484 2.382775 +v 0.836434 1.761413 1.534160 +v 1.109136 1.854146 1.546994 +v 0.853872 1.693580 1.365606 +v 1.109136 1.746315 1.309461 +v 0.866598 1.383340 1.228519 +v 1.109136 1.421237 1.150594 +v 0.864811 1.209287 1.297543 +v 1.109136 1.152737 1.225781 +v 0.775337 0.764493 2.107609 +v 1.109136 0.828570 1.868721 +v 0.775337 0.764493 2.107609 +v 0.818644 -8.777006 -1.761972 +v -0.613250 6.186937 4.344059 +v 1.326758 -8.130615 -6.048564 +v 0.882817 -7.449296 -6.242331 +v 1.332151 -7.578506 -5.806304 +v 1.260158 -8.694220 -2.041335 +v 1.263812 -9.320386 -2.284039 +v 0.549908 -9.201518 -0.329462 +v 0.637953 7.455005 0.432839 +v 0.610240 6.670014 0.107511 +v 0.586664 6.044359 -0.058251 +v -0.586664 6.044359 -0.058251 +v -0.639183 4.693711 3.350439 +v 0.639183 4.693711 3.350439 +v 0.784649 4.758710 3.184808 +v -1.109136 7.447666 2.316916 +v -0.851242 7.447666 2.316916 +v -0.807799 6.186931 4.345726 +v -0.775337 0.764493 2.107609 +v -0.853872 1.693580 1.365606 +v -0.804550 1.432484 2.382775 +v -0.775337 0.764493 2.107609 +v 0.613250 6.189570 3.985306 +v 1.109136 0.828570 1.868721 +v 0.527911 -9.865828 -0.558221 +v 0.645065 7.456246 0.114418 +v -0.645065 7.456246 0.114418 +vn -1.0000 -0.0000 -0.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 1.0000 0.0039 +vn -0.0000 0.9588 0.2841 +vn -0.0000 0.9484 0.3172 +vn -0.0000 -0.3256 0.9455 +vn -0.0000 -0.9535 -0.3014 +vn 0.1103 0.4144 -0.9034 +vn -0.0735 0.4256 -0.9019 +vn 0.3275 0.3966 -0.8576 +vn 0.9708 0.1320 -0.2001 +vn 0.7758 0.2586 -0.5755 +vn 0.4477 0.3447 -0.8251 +vn -0.3560 0.3788 -0.8543 +vn -0.5482 0.3301 -0.7685 +vn -0.1944 0.3772 -0.9055 +vn -0.0010 0.3847 -0.9230 +vn 0.1540 0.3797 -0.9122 +vn 0.8357 -0.2111 0.5070 +vn 0.9636 -0.1035 0.2467 +vn 0.9886 0.0575 -0.1389 +vn 0.9535 0.1154 -0.2784 +vn -0.0080 -0.3741 0.9274 +vn 0.0012 -0.3791 0.9254 +vn 0.2219 -0.3696 0.9023 +vn -0.0036 -0.3819 0.9242 +vn -0.1726 -0.3764 0.9102 +vn 0.0022 -0.3819 0.9242 +vn 0.0080 -0.3741 0.9274 +vn -0.2219 -0.3696 0.9023 +vn -0.0011 -0.3791 0.9254 +vn -0.4729 -0.3319 0.8162 +vn 0.3572 -0.3516 0.8653 +vn -0.1539 -0.3721 0.9154 +vn -0.9636 -0.1035 0.2467 +vn -0.9886 0.0575 -0.1389 +vn -0.9535 0.1154 -0.2784 +vn 0.0010 0.3847 -0.9230 +vn -0.0000 0.9310 0.3651 +vn -0.0000 0.9300 0.3676 +vn -0.0000 0.9302 0.3669 +vn 0.9710 -0.0914 0.2209 +vn 0.2322 -0.3719 0.8988 +vn 0.1539 -0.3734 0.9148 +vn -0.8442 -0.2022 0.4964 +vn -0.9710 -0.0914 0.2209 +vn -0.8357 -0.2111 0.5070 +vn 0.5563 0.3246 -0.7649 +vn 0.0001 0.9608 0.2772 +vn -0.0015 1.0000 0.0040 +vn -0.0014 1.0000 0.0023 +vn -0.5115 0.3297 -0.7935 +vn -0.0000 -0.0039 1.0000 +vn 0.0001 0.4597 0.8881 +vn -0.0000 0.2278 0.9737 +vn -0.0000 0.8351 0.5501 +vn 0.9387 -0.0984 0.3305 +vn 0.9999 0.0117 -0.0023 +vn 0.9998 0.0092 0.0149 +vn 0.9323 0.3580 0.0512 +vn 0.9411 0.3379 0.0104 +vn 0.5309 0.8401 0.1116 +vn -0.9980 -0.0211 0.0598 +vn -0.9970 0.0146 0.0763 +vn -0.9979 -0.0076 0.0647 +vn -0.9959 0.0068 0.0899 +vn -0.2927 -0.8910 -0.3470 +vn -0.3083 -0.9391 0.1520 +vn -0.3077 -0.9451 -0.1103 +vn -0.3087 -0.5872 0.7483 +vn -0.2906 -0.7546 0.5883 +vn -0.3189 0.0702 0.9452 +vn -0.3014 -0.1559 0.9407 +vn -0.2877 0.6969 0.6569 +vn -0.3131 0.5002 0.8073 +vn -0.1491 0.8829 0.4452 +vn -0.2405 0.8515 0.4659 +vn -0.9295 0.1497 -0.3372 +vn -0.9281 0.1420 -0.3443 +vn -0.3883 0.3779 -0.8405 +vn -0.9660 -0.0947 0.2406 +vn -0.9906 -0.0493 0.1279 +vn -0.9257 -0.1502 0.3472 +vn -0.9273 -0.1397 0.3472 +vn 0.9997 0.0240 0.0100 +vn 0.9368 -0.1053 0.3338 +vn 0.8731 -0.0619 0.4836 +vn 0.2534 -0.2345 0.9385 +vn 0.0038 -0.2478 0.9688 +vn 0.9613 0.2751 0.0139 +vn 0.9983 0.0446 -0.0387 +vn 0.8731 -0.0618 0.4836 +vn 0.9557 -0.0568 0.2888 +vn 0.9367 -0.1053 0.3338 +vn 0.9220 0.3843 0.0481 +vn 0.9207 0.3862 0.0561 +vn -0.0011 1.0000 0.0067 +vn -0.0020 1.0000 0.0042 +vn -0.1880 -0.2385 0.9528 +vn 0.2591 0.4017 -0.8784 +vn -0.3925 0.3826 -0.8364 +vn -0.9557 -0.0568 0.2888 +vn -0.9387 -0.0984 0.3305 +vn -0.8731 -0.0618 0.4836 +vn -0.9367 -0.1053 0.3338 +vn -0.9983 0.0446 -0.0387 +vn 0.0015 1.0000 0.0040 +vn -0.0000 0.9608 0.2772 +vn 0.0014 1.0000 0.0023 +vn -0.9999 0.0117 -0.0023 +vn -0.9998 0.0092 0.0149 +vn -0.9997 0.0240 0.0100 +vn -0.0056 -0.2495 0.9684 +vn -0.9207 0.3862 0.0561 +vn -0.9220 0.3843 0.0482 +vn -0.9613 0.2751 0.0139 +vn 0.0011 1.0000 0.0067 +vn 0.0020 1.0000 0.0042 +vn -0.9140 0.1852 -0.3611 +vn -0.0000 1.0000 0.0073 +vn -0.5563 0.3246 -0.7649 +vn -0.7857 0.2615 -0.5606 +vn 0.5115 0.3297 -0.7935 +vn -0.0000 0.4597 0.8881 +vn 0.2491 0.9578 0.1431 +vn -0.4021 0.9083 0.1151 +vn -0.9323 0.3580 0.0512 +vn -0.3771 0.9132 0.1545 +vn -0.9411 0.3379 0.0104 +vn 0.9980 -0.0211 0.0598 +vn 0.9949 -0.0724 0.0701 +vn 0.9979 -0.0076 0.0647 +vn 0.9959 0.0068 0.0899 +vn 0.9944 -0.0057 0.1052 +vn 0.9970 0.0146 0.0763 +vn 0.2927 -0.8910 -0.3470 +vn 0.2692 -0.9013 -0.3393 +vn 0.3091 -0.9446 -0.1104 +vn 0.3083 -0.9391 0.1520 +vn 0.2906 -0.7546 0.5883 +vn 0.3087 -0.5872 0.7483 +vn 0.3014 -0.1559 0.9407 +vn 0.3189 0.0702 0.9452 +vn 0.3131 0.5002 0.8073 +vn 0.2877 0.6969 0.6569 +vn 0.2405 0.8515 0.4659 +vn 0.8442 -0.2022 0.4964 +vn 0.1539 -0.3733 0.9148 +vn 0.9294 0.1498 -0.3372 +vn 0.5126 0.3515 -0.7834 +vn 0.9281 0.1420 -0.3443 +vn 0.9906 -0.0493 0.1279 +vn 0.9660 -0.0947 0.2406 +vn 0.9273 -0.1397 0.3472 +vn -0.9368 -0.1053 0.3338 +vn -0.8731 -0.0619 0.4836 +vn -0.0000 0.9318 0.3630 +vn -0.0000 0.9309 0.3653 +vn -0.0000 0.9302 0.3671 +vn -0.9949 -0.0724 0.0701 +vn -0.9944 -0.0057 0.1052 +vn -0.2692 -0.9013 -0.3393 +vn -0.1539 -0.3720 0.9154 +vn 0.1491 0.8829 0.4452 +vn 0.9257 -0.1502 0.3472 +vn -0.0000 0.3847 -0.9230 +vt 0.318637 0.836460 +vt 0.322686 0.835525 +vt 0.318469 0.836302 +vt 0.322662 0.829447 +vt 0.322506 0.829146 +vt 0.318606 0.828545 +vt 0.318439 0.828704 +vt 0.322533 0.835828 +vt 0.335540 0.815841 +vt 0.335689 0.816068 +vt 0.335880 0.815923 +vt 0.335363 0.817407 +vt 0.335570 0.817415 +vt 0.335928 0.815727 +vt 0.335827 0.815658 +vt 0.338110 0.834998 +vt 0.338521 0.834581 +vt 0.338361 0.834565 +vt 0.338450 0.830987 +vt 0.338327 0.831013 +vt 0.338045 0.830721 +vt 0.337797 0.829353 +vt 0.336791 0.829355 +vt 0.338509 0.816056 +vt 0.338639 0.815806 +vt 0.338293 0.815922 +vt 0.338229 0.815719 +vt 0.338328 0.815642 +vt 0.336756 0.815704 +vt 0.337372 0.815710 +vt 0.337407 0.815436 +vt 0.338796 0.817419 +vt 0.338027 0.834876 +vt 0.336577 0.834878 +vt 0.336494 0.835000 +vt 0.336242 0.834568 +vt 0.336082 0.834585 +vt 0.336266 0.831016 +vt 0.351326 0.453820 +vt 0.352262 0.453765 +vt 0.352318 0.454386 +vt 0.365837 0.453882 +vt 0.365836 0.454819 +vt 0.367442 0.455473 +vt 0.371353 0.455145 +vt 0.371355 0.453566 +vt 0.370947 0.453178 +vt 0.367444 0.453230 +vt 0.370945 0.455532 +vt 0.336143 0.830990 +vt 0.336546 0.830723 +vt 0.336722 0.815432 +vt 0.339004 0.817387 +vt 0.351343 0.454443 +vt 0.336608 0.810165 +vt 0.336600 0.809579 +vt 0.335671 0.810452 +vt 0.335670 0.810656 +vt 0.337063 0.810641 +vt 0.336849 0.810420 +vt 0.335654 0.809318 +vt 0.336833 0.809316 +vt 0.308406 0.833228 +vt 0.321347 0.832873 +vt 0.308400 0.831858 +vt 0.323003 0.827899 +vt 0.318606 0.827962 +vt 0.322837 0.831313 +vt 0.308428 0.831448 +vt 0.318119 0.828727 +vt 0.317924 0.828577 +vt 0.334726 0.805815 +vt 0.334724 0.806084 +vt 0.334898 0.805815 +vt 0.333853 0.806363 +vt 0.333448 0.810373 +vt 0.334505 0.806366 +vt 0.333637 0.805810 +vt 0.333465 0.805809 +vt 0.333636 0.806080 +vt 0.333393 0.820149 +vt 0.334845 0.820155 +vt 0.333471 0.811014 +vt 0.318642 0.837043 +vt 0.322847 0.833658 +vt 0.318149 0.836281 +vt 0.308437 0.833638 +vt 0.317955 0.836433 +vt 0.321830 0.833071 +vt 0.321344 0.832110 +vt 0.321826 0.831909 +vt 0.338990 0.829527 +vt 0.338986 0.832448 +vt 0.340382 0.829528 +vt 0.323455 0.829763 +vt 0.308753 0.828027 +vt 0.334875 0.810379 +vt 0.334847 0.811020 +vt 0.317906 0.837069 +vt 0.308789 0.837056 +vt 0.323039 0.837070 +vt 0.337112 0.810416 +vt 0.335399 0.818676 +vt 0.335644 0.820232 +vt 0.335864 0.819933 +vt 0.322740 0.833285 +vt 0.335368 0.818297 +vt 0.335604 0.818285 +vt 0.335628 0.818648 +vt 0.336965 0.813654 +vt 0.337545 0.812323 +vt 0.336761 0.811981 +vt 0.336450 0.819974 +vt 0.336387 0.820399 +vt 0.336865 0.820333 +vt 0.336109 0.820051 +vt 0.336132 0.820332 +vt 0.318573 0.837406 +vt 0.297273 0.862936 +vt 0.296468 0.862987 +vt 0.296450 0.863484 +vt 0.296375 0.863361 +vt 0.296982 0.862655 +vt 0.296349 0.862774 +vt 0.296171 0.863007 +vt 0.296386 0.863086 +vt 0.296139 0.863393 +vt 0.296301 0.863656 +vt 0.296981 0.863857 +vt 0.297271 0.863612 +vt 0.308818 0.837437 +vt 0.360171 0.453244 +vt 0.360165 0.453779 +vt 0.359601 0.453718 +vt 0.363650 0.453662 +vt 0.363616 0.454257 +vt 0.365371 0.453864 +vt 0.365306 0.454484 +vt 0.336615 0.811674 +vt 0.336865 0.813929 +vt 0.336111 0.813900 +vt 0.335542 0.813822 +vt 0.335664 0.813999 +vt 0.336339 0.815514 +vt 0.336384 0.815738 +vt 0.335562 0.813576 +vt 0.335975 0.820462 +vt 0.335363 0.814848 +vt 0.358032 0.453178 +vt 0.359611 0.453190 +vt 0.335454 0.806199 +vt 0.336854 0.806081 +vt 0.335993 0.805859 +vt 0.337754 0.815749 +vt 0.338970 0.820225 +vt 0.339108 0.818663 +vt 0.338736 0.819939 +vt 0.337473 0.807394 +vt 0.336699 0.807758 +vt 0.336562 0.808069 +vt 0.335538 0.814723 +vt 0.337796 0.815517 +vt 0.338647 0.820469 +vt 0.338501 0.820063 +vt 0.335647 0.809115 +vt 0.335427 0.805954 +vt 0.338482 0.820342 +vt 0.337096 0.809313 +vt 0.337040 0.809089 +vt 0.322734 0.831687 +vt 0.338866 0.818294 +vt 0.339103 0.818281 +vt 0.338879 0.818655 +vt 0.336917 0.819991 +vt 0.337747 0.820341 +vt 0.338164 0.819987 +vt 0.337700 0.819998 +vt 0.338225 0.820410 +vt 0.323089 0.827553 +vt 0.318534 0.827599 +vt 0.299359 0.862966 +vt 0.299357 0.863640 +vt 0.300188 0.863503 +vt 0.300265 0.863381 +vt 0.300257 0.863103 +vt 0.300174 0.863004 +vt 0.299646 0.862698 +vt 0.300297 0.862779 +vt 0.300477 0.863024 +vt 0.300502 0.863417 +vt 0.300332 0.863678 +vt 0.317870 0.827942 +vt 0.317895 0.827574 +vt 0.308779 0.827646 +vt 0.357471 0.453223 +vt 0.358034 0.453706 +vt 0.357469 0.453758 +vt 0.354011 0.454184 +vt 0.353986 0.453589 +vt 0.336746 0.805809 +vt 0.335925 0.814967 +vt 0.340207 0.829355 +vt 0.339165 0.829353 +vt 0.339115 0.832606 +vt 0.340249 0.832608 +vt 0.340379 0.832450 +vt 0.323476 0.835203 +vt 0.323128 0.837416 +vt 0.317935 0.837436 +vt 0.299652 0.863857 +vt 0.322736 0.831880 +vt 0.322741 0.833092 +s 0 +f 1547/1339/700 1548/1340/700 1549/1341/700 +f 1550/1342/701 1551/1343/701 1552/1344/701 +f 1550/1342/701 1552/1344/701 1553/1345/701 +f 1547/1339/700 1554/1346/700 1548/1340/700 +f 1555/1347/702 1556/1348/702 1557/1349/702 +f 1555/1347/702 1558/1350/702 1559/1351/702 +f 1557/1349/702 1560/1352/702 1561/1353/702 +f 1562/1354/703 1563/1355/703 1564/1356/703 +f 1563/1355/703 1565/1357/703 1566/1358/703 +f 1561/1353/702 1555/1347/702 1557/1349/702 +f 1567/1359/703 1568/1360/703 1569/1361/703 +f 1570/1362/702 1571/1363/702 1572/1364/702 +f 1573/1365/702 1572/1364/702 1574/1366/702 +f 1575/1367/704 1576/1368/704 1577/1369/704 +f 1571/1363/702 1570/1362/702 1578/1370/702 +f 1562/1354/703 1579/1371/703 1580/1372/703 +f 1581/1373/703 1580/1372/703 1582/1374/703 +f 1583/1375/703 1582/1374/703 1584/1376/703 +f 1585/1377/705 1586/1378/705 1587/1379/705 +f 1571/1363/702 1574/1366/702 1572/1364/702 +f 1588/1380/706 1589/1381/706 1590/1382/706 +f 1591/1383/706 1592/1384/706 1593/1385/706 +f 1594/1386/706 1590/1382/706 1595/1387/706 +f 1596/1388/703 1584/1376/703 1597/1389/703 +f 1556/1348/702 1555/1347/702 1559/1351/702 +f 1579/1371/703 1562/1354/703 1564/1356/703 +f 1564/1356/703 1563/1355/703 1566/1358/703 +f 1597/1389/703 1567/1359/703 1569/1361/703 +f 1598/1390/704 1575/1367/704 1577/1369/704 +f 1599/1391/702 1571/1363/702 1578/1370/702 +f 1581/1373/703 1562/1354/703 1580/1372/703 +f 1583/1375/703 1581/1373/703 1582/1374/703 +f 1596/1388/703 1583/1375/703 1584/1376/703 +f 1600/1392/705 1585/1377/705 1587/1379/705 +f 1594/1386/706 1588/1380/706 1590/1382/706 +f 1595/1387/706 1591/1383/706 1593/1385/706 +f 1593/1385/706 1594/1386/706 1595/1387/706 +f 1569/1361/703 1596/1388/703 1597/1389/703 +f 1567/1359/703 1566/1358/703 1568/1360/703 +s 1 +f 1601/1393/707 1602/1394/708 1603/1395/709 +f 1603/1395/709 1604/1396/710 1605/1397/711 +f 1603/1395/709 1606/1398/712 1601/1393/707 +f 1602/1394/708 1607/1399/713 1603/1395/709 +f 1602/1394/708 1608/1400/714 1607/1399/713 +f 1609/1401/715 1610/1402/716 1611/1403/717 +f 1612/1404/718 1613/1405/719 1551/1343/701 +f 1614/1406/720 1550/1342/701 1553/1345/701 +f 1615/1407/721 1614/1406/720 1616/1408/701 +f 1616/1408/701 1617/1409/701 1615/1407/721 +f 1618/1410/722 1619/1411/723 1620/1412/724 +f 1621/1413/725 1622/1414/726 1623/1415/727 +f 1624/1416/728 1625/1417/729 1626/1418/730 +f 1627/1419/731 1628/1420/732 1629/1421/733 +f 1547/1339/700 1630/1422/734 1554/1346/700 +f 1549/1341/700 1631/1423/735 1632/1424/700 +f 1632/1424/700 1633/1425/736 1634/1426/700 +f 1609/1401/715 1635/1427/716 1610/1402/716 +f 1610/1402/716 1636/1428/737 1611/1403/717 +f 1611/1403/717 1636/1428/737 1637/1429/737 +f 1638/1430/738 1639/1431/739 1640/1432/740 +f 1614/1406/720 1641/1433/701 1550/1342/701 +f 1613/1405/719 1552/1344/701 1551/1343/701 +f 1614/1406/720 1553/1345/701 1616/1408/701 +f 1617/1409/701 1642/1434/741 1615/1407/721 +f 1619/1411/723 1643/1435/742 1620/1412/724 +f 1619/1411/723 1623/1415/727 1643/1435/742 +f 1622/1414/726 1643/1435/742 1623/1415/727 +f 1621/1413/725 1626/1418/730 1622/1414/726 +f 1625/1417/729 1622/1414/726 1626/1418/730 +f 1628/1420/732 1644/1436/743 1629/1421/733 +f 1645/1437/744 1634/1426/700 1646/1438/745 +f 1548/1340/700 1631/1423/735 1549/1341/700 +f 1630/1422/734 1647/1439/746 1554/1346/700 +f 1631/1423/735 1633/1425/736 1632/1424/700 +f 1633/1425/736 1646/1438/745 1634/1426/700 +f 1605/1397/711 1648/1440/747 1606/1398/712 +f 1649/1441/748 1650/1442/749 1651/1443/750 +f 1652/1444/751 1609/1401/715 1633/1425/736 +f 1653/1350/752 1654/1445/753 1655/1446/754 +f 1654/1445/753 1649/1441/748 1656/1447/755 +f 1657/1448/756 1658/1449/757 1659/1450/758 +f 1660/1451/759 1661/1452/760 1662/1453/761 +f 1660/1451/759 1663/1454/701 1664/1455/701 +f 1647/1439/746 1630/1422/734 1665/1456/726 +f 1666/1457/762 1667/1458/763 1668/1459/764 +f 1669/1460/765 1668/1459/764 1667/1458/763 +f 1670/1461/766 1671/1462/767 1672/1458/768 +f 1671/1462/767 1673/1463/769 1674/1464/770 +f 1673/1463/769 1675/1465/771 1676/1460/772 +f 1675/1465/771 1677/1466/773 1678/1459/774 +f 1677/1466/773 1679/1467/775 1680/1468/776 +f 1645/1437/744 1646/1438/745 1681/1469/731 +f 1682/1470/777 1683/1471/778 1684/1472/779 +f 1682/1470/777 1685/1473/780 1686/1474/781 +f 1685/1473/780 1687/1475/782 1688/1476/783 +f 1604/1396/710 1689/1477/784 1605/1397/711 +f 1690/1478/785 1657/1448/756 1691/1479/786 +f 1691/1479/786 1692/1480/787 1693/1481/788 +f 1694/1482/789 1695/1352/790 1696/1483/791 +f 1657/1448/756 1697/1484/792 1691/1479/786 +f 1695/1352/790 1698/1349/793 1696/1483/791 +f 1697/1484/792 1659/1450/758 1689/1477/784 +f 1699/1367/794 1700/1390/795 1694/1482/789 +f 1650/1442/749 1701/1485/796 1702/1454/797 +f 1697/1484/792 1657/1448/756 1659/1450/758 +f 1656/1447/755 1649/1441/748 1651/1443/750 +f 1604/1396/710 1697/1484/792 1689/1477/784 +f 1691/1479/786 1697/1484/792 1692/1480/787 +f 1692/1480/787 1703/1486/798 1693/1481/788 +f 1696/1483/791 1699/1367/794 1694/1482/789 +f 1704/1487/799 1705/1488/800 1684/1472/779 +f 1706/1489/801 1707/1490/802 1708/1491/803 +f 1709/1364/804 1710/1365/805 1711/1492/803 +f 1712/1493/806 1713/1494/807 1714/1495/808 +f 1715/1496/809 1707/1490/802 1716/1497/810 +f 1716/1497/810 1706/1489/801 1717/1498/811 +f 1693/1481/788 1703/1486/798 1718/1499/812 +f 1719/1369/813 1720/1368/814 1721/1500/815 +f 1722/1501/816 1712/1493/806 1723/1502/817 +f 1707/1490/802 1706/1489/801 1716/1497/810 +f 1706/1489/801 1724/1503/818 1717/1498/811 +f 1706/1489/801 1708/1491/803 1725/1504/798 +f 1720/1368/814 1711/1492/803 1721/1500/815 +f 1712/1493/806 1714/1495/808 1723/1502/817 +f 1722/1501/816 1723/1502/817 1726/1505/819 +f 1608/1400/714 1727/1506/820 1728/1507/821 +f 1651/1443/750 1650/1442/749 1702/1454/797 +f 1729/1508/822 1614/1406/720 1615/1407/721 +f 1730/1391/752 1731/1370/752 1732/1509/754 +f 1733/1510/823 1732/1509/754 1734/1511/755 +f 1735/1512/824 1662/1453/761 1736/1513/825 +f 1737/1514/826 1738/1515/827 1736/1513/825 +f 1737/1514/826 1739/1516/828 1740/1505/700 +f 1612/1404/718 1741/1517/724 1742/1518/742 +f 1743/1519/829 1744/1520/830 1745/1521/831 +f 1746/1522/832 1747/1523/833 1748/1524/834 +f 1749/1525/835 1750/1519/836 1751/1524/837 +f 1752/1526/838 1751/1524/837 1753/1523/839 +f 1754/1527/840 1753/1523/839 1755/1522/841 +f 1756/1528/842 1755/1522/841 1757/1521/843 +f 1758/1529/844 1757/1521/843 1759/1520/845 +f 1760/1530/846 1761/1531/847 1762/1532/732 +f 1702/1454/797 1701/1485/796 1763/1455/819 +f 1764/1533/848 1704/1487/799 1765/1534/849 +f 1764/1533/848 1766/1535/850 1767/1536/851 +f 1768/1537/852 1767/1536/851 1769/1379/853 +f 1717/1498/811 1724/1503/818 1728/1507/821 +f 1707/1490/802 1770/1538/854 1708/1491/803 +f 1703/1486/798 1771/1539/855 1718/1499/812 +f 1710/1365/805 1721/1500/815 1711/1492/803 +f 1713/1494/807 1734/1511/755 1714/1495/808 +f 1566/1358/703 1565/1357/703 1568/1360/703 +f 1629/1421/733 1644/1436/743 1622/1414/726 +f 1772/1540/856 1773/1541/856 1638/1430/738 +f 1774/1542/857 1775/1543/857 1776/1544/858 +f 1639/1431/739 1776/1544/858 1640/1432/740 +f 1728/1507/821 1724/1503/818 1608/1400/714 +f 1617/1409/701 1760/1530/846 1642/1434/741 +f 1644/1436/743 1643/1435/742 1622/1414/726 +f 1548/1340/700 1777/1545/700 1631/1423/735 +f 1724/1503/818 1607/1399/713 1608/1400/714 +f 1606/1398/712 1603/1395/709 1605/1397/711 +f 1631/1423/735 1652/1444/751 1633/1425/736 +f 1778/1351/752 1653/1350/752 1655/1446/754 +f 1655/1446/754 1654/1445/753 1656/1447/755 +f 1735/1512/824 1660/1451/759 1662/1453/761 +f 1661/1452/760 1660/1451/759 1664/1455/701 +f 1779/1546/729 1647/1439/746 1665/1456/726 +f 1780/1468/859 1666/1457/762 1668/1459/764 +f 1781/1464/860 1669/1460/765 1667/1458/763 +f 1782/1457/861 1670/1461/766 1672/1458/768 +f 1672/1458/768 1671/1462/767 1674/1464/770 +f 1674/1464/770 1673/1463/769 1676/1460/772 +f 1676/1460/772 1675/1465/771 1678/1459/774 +f 1678/1459/774 1677/1466/773 1680/1468/776 +f 1783/1547/862 1645/1437/744 1681/1469/731 +f 1705/1488/800 1682/1470/777 1684/1472/779 +f 1683/1471/778 1682/1470/777 1686/1474/781 +f 1686/1474/781 1685/1473/780 1688/1476/783 +f 1765/1534/849 1704/1487/799 1684/1472/779 +f 1611/1403/717 1729/1508/822 1615/1407/721 +f 1733/1510/823 1730/1391/752 1732/1509/754 +f 1713/1494/807 1733/1510/823 1734/1511/755 +f 1738/1515/827 1735/1512/824 1736/1513/825 +f 1739/1516/828 1737/1514/826 1736/1513/825 +f 1784/1502/700 1737/1514/826 1740/1505/700 +f 1613/1405/719 1612/1404/718 1742/1518/742 +f 1748/1524/834 1743/1519/829 1745/1521/831 +f 1745/1521/831 1746/1522/832 1748/1524/834 +f 1752/1526/838 1749/1525/835 1751/1524/837 +f 1754/1527/840 1752/1526/838 1753/1523/839 +f 1756/1528/842 1754/1527/840 1755/1522/841 +f 1758/1529/844 1756/1528/842 1757/1521/843 +f 1785/1548/863 1758/1529/844 1759/1520/845 +f 1642/1434/741 1760/1530/846 1762/1532/732 +f 1766/1535/850 1764/1533/848 1765/1534/849 +f 1768/1537/852 1764/1533/848 1767/1536/851 +f 1786/1378/864 1768/1537/852 1769/1379/853 +f 1640/1432/740 1772/1540/856 1638/1430/738 +f 1639/1431/739 1774/1542/857 1776/1544/858 +f 1611/1403/717 1637/1429/737 1787/1549/865 +f 1611/1403/717 1787/1549/865 1729/1508/822 +f 1609/1401/715 1652/1444/751 1788/1550/865 +f 1609/1401/715 1788/1550/865 1635/1427/716 +o slide_pistol_0 +v 1.014517 11.207904 -2.625851 +v 1.014517 11.207904 -2.300617 +v 1.014517 10.723700 -1.978916 +v -1.014517 10.157009 -2.625851 +v -1.014517 11.207904 -2.625851 +v -0.335502 10.613042 -2.625851 +v -1.526129 9.326169 3.920664 +v -1.526129 9.326169 3.413726 +v -1.526129 8.752565 3.413726 +v -1.705540 8.752565 3.920664 +v -1.705540 7.184847 3.920666 +v -1.705540 8.402290 6.532843 +v -1.526129 8.752565 3.920664 +v -1.705540 8.752565 3.920664 +v -1.705540 8.752759 6.288157 +v -1.526129 8.752565 3.920664 +v -1.524936 8.752759 6.288157 +v 1.705540 7.247200 -1.820038 +v 1.526129 7.247200 -1.820038 +v 1.526043 7.614016 -2.276283 +v 1.321148 7.184847 12.021433 +v -1.171832 7.184847 11.897295 +v 1.156401 7.184847 11.897295 +v 1.526043 7.614016 -2.276283 +v 1.526129 7.247200 -1.820038 +v 1.526043 7.184847 -2.765843 +v 1.321148 7.184847 11.214214 +v -1.705540 7.184847 2.105287 +v -1.705540 8.757562 2.105287 +v -1.705540 8.927025 1.935822 +v 1.526129 7.247200 -1.820038 +v 1.526129 7.184847 -1.313099 +v 1.526043 7.184847 -2.765843 +v -1.524936 9.326169 6.288157 +v -1.326382 10.025589 6.288155 +v -1.705540 9.660696 6.288155 +v -1.705540 9.326169 6.288157 +v 0.813732 7.184847 16.849926 +v 1.705540 7.184847 12.021433 +v 1.705540 7.184847 18.319260 +v 1.326382 7.184847 19.492821 +v -1.705540 7.967402 7.346314 +v -1.705540 8.055083 6.892087 +v 1.705540 7.637858 11.214214 +v 1.705540 7.184847 11.214214 +v 1.705540 7.967402 7.346314 +v -1.705540 7.184847 3.920666 +v -1.526129 7.184847 3.920666 +v -1.171832 7.184845 5.830760 +v 1.705540 7.184847 3.920666 +v 1.705540 7.184847 11.214214 +v 1.156401 7.184845 5.830760 +v 1.705540 7.184847 -2.765843 +v 1.705540 7.184845 -4.842924 +v 1.705540 8.782389 -4.842924 +v 1.705540 7.614016 -2.276283 +v 1.231429 7.184845 -4.842924 +v 1.526129 7.184847 -1.313099 +v 1.231024 7.184847 1.879622 +v -1.526129 7.184847 2.105287 +v -1.526129 7.184847 2.612226 +v -1.526129 8.752565 2.612224 +v 1.705540 7.184847 3.920666 +v 1.321148 7.184847 11.214214 +v 1.705540 7.184847 11.214214 +v 1.705540 7.637858 11.214214 +v -0.813732 7.184847 16.849926 +v 1.526129 7.184847 3.920666 +v 0.000000 9.832475 21.944122 +v 0.947015 10.390599 21.944122 +v -0.947015 10.390599 21.944122 +v 1.705540 8.055083 6.892087 +v -1.171832 7.184847 11.897295 +v -1.171832 8.402287 11.660702 +v -1.171832 8.578353 11.777044 +v 0.167762 11.355712 20.190464 +v -0.167762 11.355712 20.190464 +v -0.167762 10.787160 20.190464 +v 0.814306 10.492235 20.190464 +v 0.814306 10.492235 19.285318 +v 0.359371 10.492235 19.285318 +v 0.893030 10.492235 20.116810 +v 0.893030 10.492235 19.372772 +v -1.526129 7.184847 3.413727 +v 1.526129 7.184847 3.413727 +v -0.393269 7.184847 1.879622 +v 0.393269 7.184847 1.879622 +v -1.333642 8.402290 6.532843 +v -1.333642 8.055083 6.892087 +v -1.333642 7.967402 7.346314 +v -1.016029 10.321228 11.777044 +v -0.947015 10.390597 11.777044 +v -0.654714 10.019367 11.777044 +v -0.813732 7.184847 16.849926 +v 0.813732 7.184847 16.849926 +v 0.813732 5.420444 16.849926 +v 0.471660 5.087640 16.849926 +v -0.471660 5.087640 16.849926 +v -0.813732 5.420444 16.849926 +v -1.333642 7.184847 21.944122 +v -1.333642 7.184847 19.492821 +v -0.813732 7.184847 21.944122 +v -1.526129 7.184847 0.796844 +v -1.705540 7.184847 0.796844 +v -1.705540 7.184847 -0.004658 +v -0.728164 8.051682 1.879622 +v -0.393269 9.417000 1.879622 +v -0.393269 7.184847 1.879622 +v -0.728164 7.586768 1.879622 +v -1.238688 7.184847 1.879622 +v 1.231024 9.417000 1.879622 +v 1.231024 8.051682 1.879622 +v 0.728164 8.051682 1.879622 +v 1.526129 7.184847 2.105287 +v 1.526129 7.184847 2.612226 +v 1.705540 7.184847 -1.313099 +v 1.705540 7.184847 -0.511597 +v 1.526129 7.184847 -0.511597 +v 1.705540 7.184847 2.612226 +v 1.705540 7.184847 3.413727 +v 1.526129 7.184847 3.920666 +v 1.526129 9.833411 3.920664 +v 1.705540 9.660696 3.920664 +v 0.408756 10.107763 -3.259712 +v -0.409408 10.107763 -3.259712 +v -0.409408 10.390597 -3.172267 +v 1.705540 9.660696 3.413726 +v 1.526129 9.833411 3.413726 +v 1.526129 7.184847 3.413727 +v -0.392768 7.184845 -4.842924 +v 0.393269 9.417000 1.879622 +v 0.393269 7.184847 1.879622 +v 0.392768 7.184845 -4.842924 +v 1.705540 7.184847 2.612226 +v 1.526129 7.184847 2.612226 +v 1.526129 9.833411 2.612224 +v 1.526129 7.184847 2.105287 +v 1.705540 7.184847 2.105287 +v 1.705540 9.660696 2.105287 +v 0.392768 8.782389 -4.842924 +v 0.392768 9.417337 -4.333549 +v 1.231024 7.184847 1.879622 +v 1.231024 7.586768 1.879622 +v 1.231429 7.587345 -4.842924 +v 0.408756 10.390597 -3.531360 +v 0.408756 10.107763 -3.763228 +v 0.408756 10.107763 -3.259712 +v 1.526129 9.833411 1.303783 +v 1.705540 9.660696 1.303783 +v 1.705540 7.184847 1.303783 +v 0.728571 7.587345 -4.842924 +v 0.728571 8.051105 -4.842924 +v 1.231429 8.051105 -4.842924 +v 1.705540 9.660696 0.796844 +v 1.526129 9.833411 0.796844 +v 1.526129 7.184847 0.796844 +v 0.813732 7.184847 21.944122 +v 1.231024 9.417000 1.879622 +v 0.393269 9.417000 1.879622 +v 0.392768 9.417337 -4.333549 +v 1.231024 7.586768 1.879622 +v 0.728164 7.586768 1.879622 +v 0.728571 7.587345 -4.842924 +v 1.526129 9.833411 -0.004658 +v 1.705540 9.660696 -0.004658 +v 1.705540 7.184847 -0.004658 +v 1.705540 7.184845 -4.842924 +v 1.231429 7.184845 -4.842924 +v 1.231429 7.587345 -4.842924 +v 1.526129 7.184847 -0.511597 +v 1.705540 7.184847 -0.511597 +v 1.705540 9.660696 -0.511597 +v 1.231429 9.417337 -4.333549 +v 1.231429 8.782389 -4.842924 +v 1.231024 9.417000 1.879622 +v 0.728164 7.586768 1.879622 +v 0.728164 8.051682 1.879622 +v 0.728571 8.051105 -4.842924 +v 1.526129 9.833411 -1.313099 +v 1.705540 9.660696 -1.313099 +v 1.705540 7.184847 -1.313099 +v 1.231024 8.051682 1.879622 +v 0.728164 8.051682 1.879622 +v 1.231024 8.051682 1.879622 +v 1.231429 8.051105 -4.842924 +v 0.947015 10.390597 -2.821982 +v -0.947015 10.390597 -2.821982 +v -1.132077 10.212755 -2.753816 +v 1.526129 7.247200 -1.820038 +v 1.705540 7.247200 -1.820038 +v 1.705540 9.660696 -1.820038 +v 1.705540 8.752767 6.288157 +v 1.705540 8.402290 6.532843 +v -1.132077 10.212755 0.576709 +v -0.947015 10.390597 0.637663 +v 0.947015 10.390597 0.637663 +v 1.326382 7.184847 21.944122 +v 1.526129 7.184847 -0.004658 +v -1.526129 7.184847 2.612226 +v -1.238688 7.184847 1.879622 +v 1.705540 7.184847 2.105287 +v 1.526129 7.184847 1.303783 +v 1.705540 7.184847 1.303783 +v 1.526129 7.184847 0.796844 +v 1.705540 7.184847 -0.004658 +v 0.728164 7.586768 1.879622 +v 1.231024 7.586768 1.879622 +v 1.231024 7.184847 1.879622 +v 0.393269 7.184847 1.879622 +v -1.238688 9.417000 1.879622 +v -1.526129 7.184847 2.105287 +v -1.705540 7.184847 -1.313099 +v -1.526129 7.184847 -1.313099 +v -1.526129 7.184847 -0.511597 +v -1.705540 7.184847 2.612226 +v -1.526129 9.326169 3.920664 +v -1.705540 9.326169 3.920664 +v -1.705540 9.660696 3.920664 +v -1.526129 7.184847 3.920666 +v -1.705540 7.184847 3.920666 +v -1.705540 8.752565 3.920664 +v -1.705540 7.184847 3.413727 +v -1.526129 7.184847 3.413727 +v -1.526129 8.752565 3.413726 +v -1.705540 9.326169 3.413726 +v -1.526129 9.326169 3.413726 +v -1.526129 9.833411 3.413726 +v -1.705540 7.184847 2.612226 +v -1.705540 7.184847 3.413727 +v -1.705540 8.752565 3.413726 +v -0.393269 9.417000 1.879622 +v -0.392768 8.782389 -4.842924 +v -0.392768 7.184845 -4.842924 +v -1.526129 9.326169 2.612224 +v -1.705540 9.326169 2.612224 +v -1.705540 9.660696 2.612224 +v -1.526129 7.184847 2.612226 +v -1.705540 7.184847 2.612226 +v -1.705540 8.752565 2.612224 +v -0.392768 9.417337 -4.333549 +v -1.238688 7.184847 1.879622 +v -1.238688 7.184845 -4.842924 +v -1.238688 7.587345 -4.842924 +v -0.409408 10.390597 -3.531360 +v -0.409408 10.390597 -3.172267 +v -0.409408 10.107763 -3.259712 +v -1.526129 9.833411 1.303783 +v -1.526129 7.184847 1.303783 +v -1.705540 7.184847 1.303783 +v -0.728571 7.587345 -4.842924 +v -1.238688 7.587345 -4.842924 +v -1.238688 8.051105 -4.842924 +v -1.705540 9.660696 0.796844 +v -1.705540 7.184847 0.796844 +v -1.526129 7.184847 0.796844 +v -1.238688 9.417000 1.879622 +v -1.238688 9.417337 -4.333549 +v -0.392768 9.417337 -4.333549 +v -1.238688 7.586768 1.879622 +v -1.238688 7.587345 -4.842924 +v -0.728571 7.587345 -4.842924 +v -1.526129 9.833411 -0.004658 +v -1.526129 7.184847 -0.004658 +v -1.705540 7.184847 -0.004658 +v -1.238688 7.184845 -4.842924 +v -1.705540 7.184845 -4.842924 +v -1.526129 7.184847 -0.511597 +v -1.526129 9.833411 -0.511597 +v -1.705540 9.660696 -0.511597 +v -1.238688 8.782389 -4.842924 +v -1.238688 9.417337 -4.333549 +v -1.238688 9.417000 1.879622 +v -0.728164 7.586768 1.879622 +v -0.728571 7.587345 -4.842924 +v -0.728571 8.051105 -4.842924 +v -1.526129 7.184847 -0.004658 +v -1.238688 7.184845 -4.842924 +v -1.526129 9.833411 -1.313099 +v -1.526129 7.184847 -1.313099 +v -1.705540 7.184847 -1.313099 +v -1.238688 8.051682 1.879622 +v -1.238688 8.051105 -4.842924 +v -0.728164 8.051682 1.879622 +v -0.728571 8.051105 -4.842924 +v -1.238688 8.051105 -4.842924 +v -1.705540 7.184845 -4.842924 +v -1.526129 7.184847 -1.820038 +v -1.705540 7.184847 2.105287 +v -1.705540 7.184847 1.303783 +v -1.526129 7.184847 -1.820038 +v -1.526129 9.833411 -1.820038 +v -1.705540 9.660696 -1.820038 +v -1.526129 7.184847 1.303783 +v -1.526129 7.184847 3.413727 +v -1.526129 7.184847 3.920666 +v -1.526129 8.752565 3.920664 +v -0.947015 10.390597 6.288155 +v -0.654714 10.019367 6.288155 +v -0.409408 10.390597 6.288155 +v -1.171832 9.475291 6.288155 +v -0.409408 10.019367 5.830758 +v -0.409408 10.390597 5.830758 +v -0.409408 10.390597 6.288155 +v 0.408756 10.019367 5.830758 +v 0.408756 10.019367 6.288155 +v 0.408756 10.390597 6.288155 +v 0.408756 10.019367 5.830758 +v 0.408756 10.390597 5.830758 +v -0.409408 10.390597 5.830758 +v 0.408756 10.019367 6.288155 +v 0.632517 10.019367 6.288155 +v 0.408756 10.390597 6.288155 +v 0.958007 9.683089 6.288155 +v 1.018419 10.321527 6.288155 +v -1.171832 9.475291 11.777044 +v -1.171832 7.184845 5.830760 +v -1.171832 8.752774 6.288157 +v -1.171832 8.402290 6.532843 +v -0.409408 10.019367 6.288155 +v -1.333642 8.402287 11.660702 +v -1.171832 8.402287 11.660702 +v -1.171832 8.402290 6.532843 +v -0.409408 10.019367 5.830758 +v -0.654714 10.019367 5.830758 +v -1.171832 9.475291 5.830758 +v -1.171832 7.184845 5.830760 +v 1.156401 7.184845 5.830760 +v 1.156401 9.475291 5.830758 +v 1.014517 11.207904 -2.625851 +v 0.335502 10.613042 -2.625851 +v 0.335502 11.207904 -2.625851 +v -0.167762 11.355712 20.190464 +v 0.167762 11.355712 20.190464 +v 0.167762 11.355712 19.816681 +v 0.143185 11.207904 -2.300617 +v 0.143185 11.269897 -2.300617 +v 0.143185 11.269897 -2.690544 +v 1.014517 11.207904 -2.625851 +v 0.335502 11.207904 -2.625851 +v 0.335502 11.207904 -2.300617 +v 1.014517 11.207904 -2.300617 +v 0.335502 11.207904 -2.625851 +v 0.335502 11.269897 -2.690544 +v 0.335502 11.269897 -2.300617 +v 0.335502 10.613042 -2.625851 +v 0.335502 10.613042 -2.690544 +v 0.335502 11.269897 -2.690544 +v 0.143185 11.269897 -2.300617 +v 0.335502 11.269897 -2.300617 +v 0.335502 11.269897 -2.690544 +v -0.720340 8.093419 11.897295 +v -0.389845 7.872592 11.897295 +v -1.171832 7.184847 11.897295 +v -0.941169 8.423914 11.897295 +v -1.018714 8.813759 11.897295 +v 0.000000 7.795045 11.897295 +v 0.471660 5.087640 21.944122 +v 0.813732 5.420444 21.944122 +v -0.813732 5.420444 21.944122 +v 0.813732 7.184847 21.944122 +v -1.333642 7.184847 21.944122 +v -0.813732 7.184847 21.944122 +v -0.720340 8.093421 21.944122 +v -1.018714 8.813761 21.944122 +v -1.326382 10.025591 21.944122 +v -0.720340 9.534101 21.944122 +v 0.720340 9.534101 21.944122 +v 1.326382 10.025591 21.944122 +v 1.018714 8.813761 21.944122 +v 1.326382 7.184847 21.944122 +v 0.720340 8.093421 21.944122 +v 0.941169 9.203606 21.944122 +v 0.389845 9.754930 21.944122 +v -0.941169 9.203606 21.944122 +v -0.941169 8.423916 21.944122 +v -0.389845 7.872591 21.944122 +v 0.000000 7.795045 21.944122 +v 0.389845 7.872591 21.944122 +v 0.941169 8.423916 21.944122 +v -0.471660 5.087640 21.944122 +v -0.389845 9.754930 21.944122 +v 1.321148 7.637858 11.214214 +v 1.321148 7.444347 12.021433 +v 1.321148 7.184847 12.021433 +v 1.705540 7.184847 12.021433 +v 1.321148 7.184847 12.021433 +v 1.321148 7.444347 12.021433 +v 1.705540 7.637858 11.214214 +v 1.705540 7.444347 12.021433 +v 1.321148 7.444347 12.021433 +v -1.526129 9.326169 3.413726 +v -1.705540 9.326169 3.413726 +v -1.705540 9.326169 2.612224 +v -1.524936 9.326169 6.288157 +v -1.705540 9.326169 6.288157 +v -1.705540 9.326169 3.920664 +v -1.526129 8.752565 2.612224 +v -1.705540 8.752565 2.612224 +v -1.705540 8.752565 3.413726 +v -1.526129 8.752565 2.612224 +v 0.632517 10.019367 5.830758 +v 0.335502 10.613042 -2.690544 +v 0.143185 10.723700 -2.690544 +v 0.143185 11.269897 -2.690544 +v -0.335502 10.613042 -2.690544 +v -0.143185 10.723700 -2.690544 +v -0.335502 10.613042 -2.625851 +v -0.335502 10.613042 -2.690544 +v 0.335502 10.613042 -2.690544 +v 0.143185 10.723700 -2.690544 +v 0.143185 10.723700 -1.978916 +v -0.814306 10.492235 20.190464 +v -0.359371 10.492235 20.190464 +v -0.359371 10.492235 19.285318 +v -0.893030 10.492235 20.116810 +v -0.814306 10.492235 19.285318 +v -0.335502 11.207904 -2.625851 +v -0.335502 10.613042 -2.625851 +v -0.335502 11.207904 -2.625851 +v -0.335502 11.269897 -2.690544 +v -0.335502 11.269897 -2.690544 +v -0.143185 11.269897 -2.690544 +v -0.143185 10.723700 -2.690544 +v -0.143185 11.269897 -2.690544 +v -0.143185 11.207904 -2.300617 +v -0.335502 11.207904 -2.625851 +v -0.335502 11.207904 -2.300617 +v -0.335502 11.269897 -2.300617 +v -0.143185 11.269897 -2.300617 +v -0.143185 11.269897 -2.690544 +v -0.335502 11.269897 -2.690544 +v -0.143185 11.269897 -2.300617 +v -0.335502 11.207904 -2.625851 +v -1.014517 11.207904 -2.625851 +v -0.335502 11.207904 -2.300617 +v -1.014517 11.207904 -2.300617 +v 1.014517 10.157009 -2.625851 +v 1.014517 10.606321 -1.825949 +v 1.014517 10.491154 -1.431076 +v 1.014517 10.157009 -2.625851 +v 0.167762 10.787160 20.190464 +v -0.359371 10.492235 20.190464 +v -1.014517 11.207904 -2.625851 +v -1.014517 10.157009 -2.625851 +v -1.014517 10.723700 -1.978916 +v -1.014517 10.606321 -1.825949 +v -1.014517 10.491154 -1.431076 +v 0.359371 10.492235 20.190464 +v -1.014517 11.207904 -2.300617 +v -0.451145 8.974197 5.975873 +v 0.000000 8.787328 5.975873 +v -0.345291 9.132619 5.975873 +v 0.186870 8.336183 5.975873 +v 0.000000 8.299012 5.975873 +v -0.186870 9.238472 5.975873 +v 0.000000 9.275643 5.975873 +v 0.345291 8.442036 5.975873 +v 0.186870 9.238472 5.975873 +v 0.345291 9.132619 5.975873 +v 0.451145 8.600457 5.975873 +v 0.451145 8.974197 5.975873 +v 0.488316 8.787328 5.975873 +v -0.488316 8.787328 5.975873 +v -0.186870 8.336183 5.975873 +v -0.451145 8.600457 5.975873 +v -0.345291 8.442036 5.975873 +v -1.659889 9.270180 6.250484 +v -1.659889 9.270180 2.190354 +v -1.659889 8.796173 2.190354 +v -1.659889 9.139336 2.059509 +v -1.659889 8.927017 2.059509 +v -1.360494 9.270180 6.250484 +v -1.659889 9.270180 6.250484 +v -1.659889 8.796173 6.250484 +v -1.705540 8.752759 6.288157 +v -1.524936 8.752759 6.288157 +v -1.524936 9.326169 6.288157 +v 1.705540 7.614016 -2.276283 +v -1.705540 7.184847 1.303783 +v -1.705540 9.151711 1.935822 +v 1.321148 7.637858 11.214214 +v 0.359371 10.492235 20.190464 +v -1.238688 7.586768 1.879622 +v 0.393269 9.417000 1.879622 +v 1.705540 7.184847 3.920666 +v 0.408756 10.390597 -3.172267 +v 1.705540 7.184847 3.413727 +v 0.392768 7.184845 -4.842924 +v 1.705540 9.660696 2.612224 +v 1.526129 9.833411 2.105287 +v 1.231429 7.184845 -4.842924 +v 0.408756 10.390597 -3.172267 +v 1.526129 7.184847 1.303783 +v 1.705540 7.184847 0.796844 +v 1.231429 9.417337 -4.333549 +v 1.231429 7.587345 -4.842924 +v 1.526129 7.184847 -0.004658 +v 1.526129 9.833411 -0.511597 +v 0.728571 7.587345 -4.842924 +v 1.526129 7.184847 -1.313099 +v 1.231429 8.051105 -4.842924 +v 0.728571 8.051105 -4.842924 +v 1.132077 10.212755 -2.753816 +v 1.526129 9.833411 -1.820038 +v 1.132077 10.212755 0.576709 +v 1.705540 7.184847 0.796844 +v -1.238688 8.051682 1.879622 +v -1.705540 7.184847 -0.511597 +v -1.705540 7.184847 3.413727 +v -1.526129 9.833411 3.920664 +v -1.526129 8.752565 3.920664 +v -1.705540 8.752565 3.413726 +v -1.705540 9.660696 3.413726 +v -1.705540 8.752565 2.612224 +v -0.393269 7.184847 1.879622 +v -1.526129 9.833411 2.612224 +v -1.526129 8.752565 2.612224 +v -1.705540 7.184847 18.319260 +v -1.238688 7.586768 1.879622 +v -0.409408 10.107763 -3.763228 +v -1.705540 9.660696 1.303783 +v -0.728571 8.051105 -4.842924 +v -1.526129 9.833411 0.796844 +v -0.393269 9.417000 1.879622 +v -0.728164 7.586768 1.879622 +v -1.705540 9.660696 -0.004658 +v -1.705540 7.184847 -0.511597 +v -0.728164 8.051682 1.879622 +v -1.705540 9.660696 -1.313099 +v -1.238688 8.051682 1.879622 +v -1.705540 7.184847 -1.820038 +v -1.705540 7.184847 -1.820038 +v -1.705540 7.184845 -4.842924 +v -1.705540 7.184847 -1.820038 +v -1.705540 8.782389 -4.842924 +v -1.526129 8.752565 3.413726 +v -0.409408 10.019367 6.288155 +v 0.408756 10.390597 5.830758 +v -1.326382 10.025589 11.777044 +v -1.333642 8.402290 6.532843 +v -0.167762 11.355712 19.816681 +v 0.335502 11.207904 -2.300617 +v 0.335502 11.207904 -2.625851 +v 0.143185 11.269897 -2.690544 +v 1.321148 7.184847 11.214214 +v 1.705540 7.444347 12.021433 +v 1.321148 7.637858 11.214214 +v -1.526129 9.326169 2.612224 +v -1.526129 9.326169 3.920664 +v -1.526129 8.752565 3.413726 +v -1.526129 9.326169 2.612224 +v 0.335502 11.269897 -2.690544 +v 0.335502 10.613042 -2.625851 +v -0.893030 10.492235 19.372772 +v -0.335502 10.613042 -2.690544 +v -0.143185 10.723700 -1.978916 +v -0.335502 11.269897 -2.690544 +v -0.335502 11.269897 -2.300617 +v -1.659889 8.796173 6.250484 +v -1.360494 8.796173 6.250484 +v -1.705540 8.402290 6.532843 +v -1.333642 8.402290 6.532843 +v -1.524936 8.752759 6.288157 +v -1.171832 8.752774 6.288157 +v -0.654714 10.019367 11.897295 +v -0.654714 10.019367 11.777044 +v 0.632517 10.019367 11.777044 +v 0.632517 10.019367 11.777044 +v -1.705540 9.660696 6.288155 +v -1.705540 9.660696 3.920664 +v -1.705540 9.326169 3.920664 +v -1.526129 8.752565 2.110280 +v -1.526129 9.321173 2.105287 +v -1.524936 9.151711 1.935822 +v -1.526129 7.184847 1.303783 +v -1.526129 9.833411 1.303783 +v -1.526129 9.833411 0.796844 +v -1.705540 9.660696 1.303783 +v 1.526129 9.833411 -1.820038 +v 1.526129 9.833411 -1.313099 +v -1.171832 9.475291 11.777044 +v 1.705540 7.184847 18.319260 +v 1.705540 7.184847 12.021433 +v 1.705540 7.444347 12.021433 +v 1.705540 9.660696 -1.820038 +v 1.705540 7.247200 -1.820038 +v 1.705540 7.967403 18.319260 +v 1.526043 7.184847 -2.765843 +v 1.705540 7.184845 -4.842924 +v 1.705540 7.184847 -2.765843 +v -1.526129 9.321173 2.105287 +v -1.705540 9.321173 2.105287 +v -1.705540 9.151711 1.935822 +v -1.705540 8.927025 1.935822 +v -1.705540 8.757562 2.105287 +v -1.526129 8.752565 2.110280 +v 1.018714 8.813759 11.876556 +v 1.156401 9.475291 11.866869 +v 1.156401 7.184847 11.897295 +v -1.014517 10.157009 0.196239 +v -1.014517 10.369081 0.196239 +v 0.167762 10.787160 19.556133 +v 0.167762 11.355712 19.816681 +v 0.167762 11.355712 20.190464 +v 0.359371 10.492235 20.190464 +v 0.359371 10.492235 19.285318 +v 0.872165 9.770430 11.711021 +v 1.156401 9.475291 11.866869 +v 0.632517 10.019367 11.897295 +v 1.018419 10.321527 11.521419 +v 1.019789 10.321230 19.320282 +v 1.326382 10.025591 21.944122 +v 0.872165 9.770430 11.711021 +v 0.947015 10.390597 11.752499 +v 1.018419 10.321527 11.521419 +v 1.018419 10.321527 6.288155 +v 0.958007 9.683089 6.288155 +v 0.958007 9.683130 11.555178 +v 0.632517 10.019367 5.830758 +v 1.156401 9.475291 5.830758 +v 0.958007 9.683089 6.288155 +v 1.326382 7.967403 19.492821 +v 1.326382 7.967402 7.346314 +v 1.326382 8.055083 6.892087 +v 1.326382 8.402290 6.532843 +v 1.326382 10.025589 6.288155 +v -1.333642 7.967403 19.492821 +v -1.333642 8.578353 11.777044 +v -1.333642 8.402287 11.660702 +v -1.326382 10.025591 21.944122 +v -1.326382 10.025589 11.777044 +v 0.947015 10.390599 19.208494 +v 0.947015 10.390597 11.752499 +v 0.869641 10.390597 11.777044 +v -0.409408 10.390597 -3.531360 +v -0.409408 10.107763 -3.763228 +v -0.947015 10.390597 -3.531360 +v 0.869641 10.390597 11.777044 +v -1.238688 8.782389 -4.842924 +v -1.333642 8.578353 11.777044 +v -1.526129 7.184847 -0.004658 +v -1.526129 9.833411 -0.004658 +v -1.526129 9.833411 -0.511597 +v -0.947015 10.390597 0.637663 +v -0.947015 10.390597 6.288155 +v -0.409408 10.390597 5.830758 +v 0.408756 10.390597 5.830758 +v 0.947015 10.390597 0.637663 +v 0.408756 10.390597 6.288155 +v 1.018419 10.321527 6.288155 +v -1.171832 9.475291 5.830758 +v -1.171832 9.475291 6.288155 +v 1.018419 10.321527 6.288155 +v 1.326382 10.025589 6.288155 +v 1.132077 10.212755 0.576709 +v -0.409408 10.390597 6.288155 +v -1.526129 9.833411 2.105287 +v -1.526129 9.833411 2.612224 +v -1.132077 10.212755 0.576709 +v -1.526129 9.833411 3.920664 +v -1.326382 10.025589 6.288155 +v -1.526129 9.833411 3.413726 +v 0.947015 10.390597 -3.531360 +v 0.947015 10.390597 -2.821982 +v 1.132077 10.212755 -2.753816 +v 0.947015 10.390599 19.208494 +v -0.947015 10.390599 19.208494 +v -1.016029 10.321230 19.320282 +v 0.947015 10.390599 20.281315 +v -0.947015 10.390599 20.281315 +v -0.947015 10.390599 21.944122 +v 1.705540 7.184847 2.612226 +v 1.705540 9.660696 2.612224 +v 1.705540 9.660696 3.413726 +v 1.019789 10.321230 20.144449 +v -1.016029 10.321230 20.144449 +v 1.326382 7.967403 19.492821 +v 1.326382 7.184847 19.492821 +v 0.471660 5.087640 16.849926 +v 0.813732 5.420444 16.849926 +v 0.813732 5.420444 21.944122 +v 0.408756 10.390597 -3.531360 +v 0.408756 10.390597 -3.172267 +v 1.019789 10.321230 20.144449 +v -0.409408 10.107763 -3.763228 +v -0.409408 10.107763 -3.259712 +v 0.408756 10.107763 -3.259712 +v 1.705540 7.967402 7.346314 +v 1.326382 7.967402 7.346314 +v 1.326382 7.967403 19.492821 +v 1.326382 7.184847 21.944122 +v 1.326382 7.184847 19.492821 +v 1.526129 7.184847 1.303783 +v 1.526129 7.184847 0.796844 +v 1.526129 9.833411 0.796844 +v 1.705540 8.402290 6.532843 +v 1.326382 8.402290 6.532843 +v 1.326382 8.055083 6.892087 +v 1.705540 8.055083 6.892087 +v 1.705540 9.660696 6.288155 +v 1.326382 10.025589 6.288155 +v 1.326382 8.752767 6.288157 +v 1.705540 9.660696 -4.131682 +v 1.231429 9.417337 -4.333549 +v 0.408756 10.107763 -3.763228 +v -0.392768 9.417337 -4.333549 +v -0.409408 10.390597 -3.172267 +v -0.947015 10.390597 -2.821982 +v 0.392768 9.417337 -4.333549 +v 0.392768 8.782389 -4.842924 +v 1.231429 8.782389 -4.842924 +v 1.705540 8.782389 -4.842924 +v 1.705540 9.660696 -4.131682 +v 0.947015 10.390597 -3.531360 +v 1.526129 9.833411 2.612224 +v 1.705540 9.660696 6.288155 +v 1.705540 9.660696 3.920664 +v 1.526129 9.833411 3.920664 +v -1.132077 10.212755 0.576709 +v 1.132077 10.212755 0.576709 +v 1.132077 10.212755 -2.753816 +v 1.705540 9.660696 -1.313099 +v 1.705540 9.660696 -0.511597 +v 1.705540 7.184847 -0.511597 +v 1.705540 9.660696 -0.004658 +v 1.705540 9.660696 0.796844 +v 1.705540 7.184847 0.796844 +v 1.526129 7.184847 2.612226 +v 1.526129 7.184847 2.105287 +v 1.526129 9.833411 2.105287 +v 1.705540 9.660696 3.920664 +v 1.705540 9.660696 6.288155 +v 1.019789 10.321230 19.320282 +v -0.471660 5.087640 16.849926 +v 0.471660 5.087640 21.944122 +v 0.813732 7.184847 16.849926 +v 0.813732 7.184847 21.944122 +v 0.947015 10.390599 20.281315 +v 0.947015 10.390599 21.944122 +v 1.705540 8.752767 6.288157 +v 1.526129 7.184847 3.920666 +v 1.526129 7.184847 3.413727 +v 1.526129 9.833411 3.413726 +v 0.392768 7.184845 -4.842924 +v -0.392768 7.184845 -4.842924 +v -0.392768 8.782389 -4.842924 +v 0.408756 10.390597 -3.531360 +v 1.526129 7.184847 -0.004658 +v 1.526129 7.184847 -0.511597 +v 1.526129 9.833411 -0.511597 +v 1.705540 7.184847 1.303783 +v 1.705540 9.660696 1.303783 +v 1.705540 9.660696 2.105287 +v 1.526129 9.833411 3.413726 +v 1.526129 9.833411 -0.511597 +v 1.526129 9.833411 -1.313099 +v 1.526129 9.833411 -1.820038 +v 1.526129 9.833411 -0.004658 +v 1.526129 9.833411 2.105287 +v 1.526129 9.833411 1.303783 +v 1.705540 7.184847 -2.765843 +v 1.705540 7.614016 -2.276283 +v 1.526043 7.614016 -2.276283 +v -0.947015 10.390597 -3.531360 +v -1.705540 9.660696 -4.131682 +v -1.132077 10.212755 -2.753816 +v -1.705540 7.184847 18.319260 +v -1.705540 7.967403 18.319260 +v -1.526129 9.833411 -1.313099 +v -1.526129 9.833411 -0.511597 +v -1.705540 9.660696 -1.820038 +v -1.526129 9.833411 -1.820038 +v -1.705540 9.660696 3.413726 +v -1.705540 9.660696 2.612224 +v -1.705540 9.326169 2.612224 +v -1.333642 7.184847 19.492821 +v -0.471660 5.087640 21.944122 +v -0.813732 5.420444 21.944122 +v -0.409408 10.390597 -3.531360 +v -1.705540 7.184847 2.105287 +v -1.526129 7.184847 2.105287 +v -1.526129 9.833411 2.105287 +v -1.705540 7.967402 7.346314 +v -1.705540 7.967403 18.319260 +v -1.333642 7.967403 19.492821 +v -1.333642 7.184847 19.492821 +v -1.705540 9.321173 2.105287 +v -1.705540 9.660696 2.105287 +v -1.705540 8.055083 6.892087 +v -1.333642 8.055083 6.892087 +v -1.333642 7.967402 7.346314 +v -1.705540 9.660696 -0.511597 +v -1.238688 9.417337 -4.333549 +v -1.705540 9.660696 -4.131682 +v -1.526129 9.833411 1.303783 +v -1.705540 8.782389 -4.842924 +v -1.705540 9.660696 -1.313099 +v -1.705540 7.184847 -1.313099 +v -1.705540 7.184847 -0.511597 +v -1.705540 9.660696 -0.004658 +v -1.705540 7.184847 -0.004658 +v -1.705540 7.184847 0.796844 +v -1.526129 9.833411 -0.004658 +v -1.705540 9.660696 0.796844 +v -1.526129 9.833411 0.796844 +v -0.813732 5.420444 16.849926 +v -0.813732 7.184847 21.944122 +v -1.526129 7.184847 -1.313099 +v -1.526129 9.833411 -1.313099 +v -1.526129 9.833411 -1.820038 +v -0.947015 10.390597 11.777044 +v -1.016029 10.321228 11.777044 +v -1.705540 8.752759 6.288157 +v -1.526129 9.833411 3.920664 +v -1.526129 9.833411 3.413726 +v -1.526129 9.326169 3.413726 +v 1.326382 8.752767 6.288157 +v -1.171832 8.402290 6.532843 +v -1.171832 8.578353 11.777044 +v -1.171832 8.402287 11.660702 +v 0.632517 10.019367 5.830758 +v 0.632517 10.019367 6.288155 +v 0.408756 10.019367 6.288155 +v -0.654714 10.019367 5.830758 +v -0.409408 10.019367 5.830758 +v -0.409408 10.019367 6.288155 +v 0.632517 10.019367 6.288155 +v 0.958007 9.683130 11.555178 +v 1.156401 7.184845 5.830760 +v 1.156401 7.184847 11.897295 +v 0.941169 9.203604 11.872110 +v 1.018714 8.813759 11.876556 +v 1.018714 8.813761 21.944122 +v 0.720340 9.534099 11.876594 +v 0.941169 9.203606 21.944122 +v 0.389845 9.754928 11.891424 +v 0.720340 9.534101 21.944122 +v 0.000000 9.832473 11.897295 +v 0.389845 9.754930 21.944122 +v 0.814306 10.296816 20.190464 +v 0.814306 10.492235 20.190464 +v 0.000000 9.832475 21.944122 +v -0.389845 9.754930 21.944122 +v -0.389845 9.754928 11.897295 +v -0.720340 9.534101 21.944122 +v -0.720340 9.534099 11.896715 +v 0.893030 10.296816 20.116810 +v 0.893030 10.492235 20.116810 +v 0.893030 10.296816 19.372772 +v 0.893030 10.492235 19.372772 +v -0.941169 9.203604 11.897295 +v -0.941169 9.203606 21.944122 +v -1.018714 8.813761 21.944122 +v -1.018714 8.813759 11.897295 +v -0.941169 8.423916 21.944122 +v -0.941169 8.423914 11.897295 +v -0.720340 8.093421 21.944122 +v -0.720340 8.093419 11.897295 +v -0.389845 7.872591 21.944122 +v -0.389845 7.872592 11.897295 +v 0.000000 7.795045 21.944122 +v 0.000000 7.795045 11.897295 +v 0.000000 7.795045 21.944122 +v 0.389845 7.872591 21.944122 +v 0.389845 7.872592 11.897295 +v 0.720340 8.093421 21.944122 +v 0.720340 8.093419 11.890940 +v 0.814306 10.296816 19.285318 +v 0.814306 10.492235 19.285318 +v 0.893030 10.492235 19.372772 +v 0.941169 8.423914 11.883168 +v 0.941169 8.423916 21.944122 +v 0.359371 10.492235 19.285318 +v -0.814306 10.296816 19.285318 +v -0.359371 10.492235 19.285318 +v -0.167762 10.787160 19.556133 +v 0.167762 10.787160 19.556133 +v -0.167762 11.355712 19.816681 +v 0.167762 11.355712 19.816681 +v -0.814306 10.157009 0.372429 +v 0.814306 10.157009 0.372429 +v 0.814306 10.357646 0.372429 +v 1.014517 10.157009 0.196239 +v 1.014517 10.369081 0.196239 +v -0.143185 10.723700 -1.978916 +v 0.143185 10.723700 -1.978916 +v 0.143185 10.723700 -2.690544 +v 0.143185 11.207904 -2.300617 +v 0.143185 10.723700 -1.978916 +v 0.335502 11.207904 -2.300617 +v 1.014517 10.723700 -1.978916 +v 1.014517 11.207904 -2.300617 +v 1.014517 10.606321 -1.825949 +v -1.014517 10.606321 -1.825949 +v -1.014517 10.491154 -1.431076 +v 1.014517 10.491154 -1.431076 +v -0.814306 10.357646 0.372429 +v 0.814306 10.357646 0.372429 +v 1.014517 10.369081 0.196239 +v -1.014517 10.369081 0.196239 +v -1.171832 9.475291 11.897295 +v 0.632517 10.019367 11.897295 +v 0.720340 9.534099 11.876594 +v 0.000000 9.832473 11.897295 +v -0.654714 10.019367 11.897295 +v -0.720340 9.534099 11.896715 +v -1.171832 9.475291 11.897295 +v 0.941169 8.423914 11.883168 +v 0.720340 8.093419 11.890940 +v 0.389845 7.872592 11.897295 +v -0.941169 9.203604 11.897295 +v -0.389845 9.754928 11.897295 +v 0.389845 9.754928 11.891424 +v 0.941169 9.203604 11.872110 +v -1.524936 8.927025 1.935822 +v -1.526129 9.833411 2.105287 +v -1.526129 9.321173 2.105287 +v -1.526129 9.326169 2.612224 +v 0.335502 11.269897 -2.300617 +v 0.143185 11.269897 -2.300617 +v -0.167762 10.787160 19.556133 +v -0.167762 10.787160 20.190464 +v -0.167762 11.355712 20.190464 +v -0.359371 10.492235 20.190464 +v -0.814306 10.492235 20.190464 +v -0.814306 10.296816 20.190464 +v -0.893030 10.296816 20.116810 +v -0.893030 10.296816 19.372772 +v -0.893030 10.492235 20.116810 +v -0.893030 10.296816 19.372772 +v -0.893030 10.492235 19.372772 +v -0.814306 10.492235 19.285318 +v -0.143185 10.723700 -1.978916 +v -1.014517 10.723700 -1.978916 +v -0.814306 10.357646 0.372429 +v -0.335502 11.269897 -2.300617 +v -0.335502 11.207904 -2.300617 +v -0.143185 11.207904 -2.300617 +v 1.526129 9.833411 0.796844 +v -0.451145 8.974197 5.975873 +v -0.345291 9.132619 5.975873 +v -0.345291 9.132619 5.773399 +v -0.186870 9.238472 5.975873 +v -0.186870 9.238472 5.773399 +v 0.345291 8.442036 5.975873 +v 0.186870 8.336183 5.975873 +v 0.186870 8.336183 5.773399 +v 0.000000 9.275643 5.975873 +v 0.000000 9.275643 5.773399 +v 0.186870 9.238472 5.975873 +v 0.186870 9.238472 5.773399 +v 0.451145 8.600457 5.975873 +v 0.345291 8.442036 5.773399 +v 0.345291 9.132619 5.975873 +v 0.345291 9.132619 5.773399 +v 0.451145 8.974197 5.975873 +v 0.451145 8.974197 5.773399 +v 0.488316 8.787328 5.975873 +v 0.451145 8.600457 5.773399 +v 0.488316 8.787328 5.773399 +v -0.186870 8.336183 5.975873 +v -0.345291 8.442036 5.975873 +v -0.345291 8.442036 5.773399 +v -0.451145 8.600457 5.975873 +v -0.488316 8.787328 5.975873 +v -0.488316 8.787328 5.773399 +v 0.000000 8.299012 5.975873 +v -0.186870 8.336183 5.773399 +v 0.000000 8.299012 5.773399 +v -0.451145 8.974197 5.773399 +v -0.451145 8.600457 5.773399 +v -1.360494 8.796173 2.190354 +v -1.659889 8.796173 2.190354 +v -1.659889 8.927017 2.059509 +v -1.659889 9.139336 2.059509 +v -1.360494 9.139336 2.059509 +v -1.360494 8.927017 2.059509 +v -1.360494 9.270180 2.190354 +v -1.659889 9.270180 2.190354 +v -1.659889 9.270180 6.250484 +v -1.360494 8.796173 6.250484 +v -1.659889 8.796173 6.250484 +v -1.705540 9.326169 6.288157 +v -1.524936 8.927025 1.935822 +v -1.526129 7.184847 0.796844 +v -1.526129 8.752565 2.110280 +v -1.524936 9.151711 1.935822 +v 0.167762 10.787160 20.190464 +v -1.526129 7.184847 -0.511597 +v 0.947015 10.390599 21.944122 +v 1.705540 7.184847 3.413727 +v 0.408756 10.107763 -3.763228 +v 1.705540 7.967403 18.319260 +v 1.526129 9.833411 1.303783 +v -1.132077 10.212755 -2.753816 +v 1.705540 7.184847 -1.313099 +v 1.705540 7.184847 -0.004658 +v 1.526129 9.833411 2.612224 +v 1.526129 9.833411 3.920664 +v 1.526129 9.833411 -0.004658 +v 1.705540 7.184847 2.105287 +v 1.526043 7.184847 -2.765843 +v -1.705540 9.326169 3.413726 +v -1.333642 7.967403 19.492821 +v -1.705540 9.660696 2.105287 +v -1.333642 7.184847 21.944122 +v -0.813732 7.184847 16.849926 +v -1.526129 7.184847 -1.820038 +v -1.526129 9.326169 3.920664 +v -1.333642 8.402287 11.660702 +v 0.408756 10.019367 5.830758 +v -0.654714 10.019367 6.288155 +v 0.869641 10.390597 11.777044 +v 0.000000 7.795045 11.897295 +v 0.893030 10.296816 19.372772 +v -0.143185 10.723700 -2.690544 +v -1.526129 9.833411 2.612224 +v -0.167762 11.355712 19.816681 +v -0.359371 10.492235 19.285318 +v -0.893030 10.492235 19.372772 +v -0.143185 11.269897 -2.300617 +v -1.014517 11.207904 -2.300617 +v -1.360494 9.270180 6.250484 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 1.0000 -0.0001 +vn -1.0000 -0.0000 0.0005 +vn -0.0000 -0.7793 -0.6266 +vn -0.0000 -1.0000 -0.0000 +vn 1.0000 0.0001 -0.0001 +vn 1.0000 -0.0005 -0.0001 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 0.2954 -0.9554 +vn 1.0000 -0.0000 -0.0001 +vn -1.0000 -0.0000 -0.0001 +vn -0.0000 -1.0000 -0.0001 +vn -1.0000 0.0001 -0.0001 +vn -0.0000 0.3579 0.9338 +vn -0.0000 0.3242 -0.9460 +vn -0.0000 -0.9724 -0.2331 +vn -0.0000 0.6488 0.7610 +vn -0.0000 0.6112 0.7915 +vn -0.0000 0.3594 0.9332 +vn -0.0000 0.3979 0.9174 +vn 0.3944 -0.9189 -0.0000 +vn -0.2584 -0.9660 -0.0000 +vn -0.0544 0.0347 -0.9979 +vn -0.9202 0.3915 -0.0000 +vn -0.9202 0.3914 -0.0000 +vn -1.0000 -0.0000 -0.0023 +vn -1.0000 -0.0001 -0.0070 +vn -0.7948 0.6069 -0.0000 +vn -0.8837 0.4681 -0.0000 +vn -0.9815 0.1914 -0.0000 +vn 0.9202 0.3914 -0.0000 +vn 0.7785 0.6277 -0.0000 +vn 0.8716 -0.4902 0.0001 +vn 0.9946 -0.0000 0.1036 +vn 0.9501 0.3120 -0.0000 +vn 0.9922 -0.0000 0.1244 +vn -0.0000 -0.9849 0.1730 +vn -0.0000 -0.8848 0.4659 +vn -0.0000 -0.5054 0.8629 +vn 0.0001 -0.2527 0.9675 +vn -0.0000 -0.3827 0.9239 +vn -0.0001 0.5055 0.8628 +vn -0.0151 0.3827 0.9237 +vn -0.0075 0.3820 0.9241 +vn -0.0098 -0.0134 -0.9999 +vn -0.0135 0.0030 -0.9999 +vn -0.0078 -0.0088 -0.9999 +vn -0.9112 -0.0000 0.4119 +vn 0.9588 0.2841 -0.0000 +vn 0.8386 0.5448 -0.0000 +vn -0.8061 -0.3082 -0.5053 +vn -0.8143 -0.5805 -0.0013 +vn -0.5167 -0.8561 -0.0000 +vn 0.6940 0.7200 -0.0000 +vn 0.4341 0.8971 0.0825 +vn 0.9006 0.4347 0.0001 +vn -0.6892 0.1308 -0.7126 +vn -0.9536 0.0970 -0.2850 +vn -0.9956 0.0942 -0.0000 +vn -0.8233 -0.5676 0.0006 +vn -0.9600 -0.2555 -0.1143 +vn -0.3908 -0.9205 0.0012 +vn -0.9277 -0.3732 0.0009 +vn -0.8233 -0.5676 0.0008 +vn 0.8835 0.4684 -0.0000 +vn -0.9987 0.0005 0.0512 +vn -1.0000 0.0021 -0.0000 +vn -0.9198 0.3925 -0.0002 +vn -0.8535 0.5212 0.0001 +vn 0.1239 0.9740 0.1894 +vn 0.4932 0.8699 -0.0000 +vn -0.0000 0.9039 -0.4278 +vn -0.0000 0.8020 -0.5974 +vn -0.2691 0.9151 -0.3004 +vn -0.1559 0.0685 -0.9854 +vn -0.0000 0.2196 -0.9756 +vn -0.0000 0.2883 -0.9575 +vn -0.8561 0.5167 -0.0000 +vn -0.2979 0.9546 -0.0000 +vn -0.2469 0.9690 -0.0000 +vn 0.0544 0.9985 0.0027 +vn 0.3979 0.9174 0.0029 +vn 0.1126 0.9936 -0.0000 +vn 0.4235 0.9059 0.0029 +vn 0.9695 -0.2451 -0.0000 +vn 0.8716 -0.4902 -0.0000 +vn 0.4233 0.9060 0.0029 +vn 0.6497 0.7602 -0.0000 +vn -0.8837 0.4680 -0.0000 +vn -0.6017 0.7987 -0.0000 +vn -0.8561 0.5168 -0.0000 +vn -0.6934 0.7206 -0.0000 +vn -0.8186 0.5743 -0.0000 +vn 0.2692 0.9150 -0.3004 +vn 0.1831 0.9831 -0.0000 +vn 0.5496 0.8354 -0.0000 +vn -0.2622 0.9451 0.1950 +vn -0.4802 0.8651 0.1452 +vn 0.3027 0.9480 -0.0986 +vn -0.3083 0.9299 -0.2006 +vn -0.2470 0.9690 -0.0000 +vn 0.3052 0.9313 -0.1990 +vn -0.3051 0.9470 -0.1000 +vn 0.9878 -0.0000 0.1556 +vn 0.4972 -0.8676 -0.0000 +vn 0.9665 -0.2568 -0.0000 +vn 0.8580 -0.5136 -0.0000 +vn -0.0000 0.9980 0.0635 +vn -0.0000 0.9919 0.1269 +vn 0.8837 0.4681 -0.0000 +vn -0.0000 0.6730 0.7397 +vn -0.0000 0.6239 0.7815 +vn -0.0000 0.8374 0.5466 +vn -0.0000 0.9284 0.3717 +vn -0.0000 0.1989 0.9800 +vn 0.0033 0.6337 -0.7736 +vn 0.0022 0.6324 -0.7747 +vn -0.0001 0.7210 -0.6930 +vn -0.0000 0.6324 -0.7746 +vn -0.2468 0.9691 -0.0000 +vn -0.0000 0.6332 -0.7740 +vn -0.0001 0.4392 -0.8984 +vn 0.0028 0.4406 -0.8977 +vn 0.8561 0.5169 -0.0001 +vn 0.2691 0.9151 -0.3004 +vn 0.7948 0.6069 -0.0000 +vn 0.8561 0.5168 -0.0000 +vn 0.9660 0.2584 -0.0000 +vn 0.9660 0.2584 0.0001 +vn 0.8561 0.5168 -0.0002 +vn 0.8561 0.5168 -0.0001 +vn -0.3763 -0.9265 -0.0000 +vn 0.2486 -0.9686 -0.0000 +vn 0.3737 0.9275 -0.0000 +vn -0.0001 0.2196 -0.9756 +vn 0.8837 0.4680 -0.0000 +vn 0.7785 0.6276 -0.0000 +vn 0.9202 0.3915 -0.0000 +vn -0.0000 -0.7520 0.6592 +vn -0.8561 0.5169 -0.0001 +vn -0.6262 0.7797 -0.0000 +vn -0.9883 -0.0000 0.1528 +vn -0.9881 0.0006 0.1536 +vn -0.8580 -0.5136 -0.0000 +vn -0.0139 -0.0016 0.9999 +vn -0.0000 -0.0032 1.0000 +vn -0.9881 0.0014 0.1536 +vn -0.0000 0.9284 0.3716 +vn -0.0000 0.8374 0.5465 +vn -0.0022 0.6324 -0.7746 +vn -0.0027 0.6339 -0.7734 +vn -0.0015 0.4406 -0.8977 +vn -0.9660 0.2584 -0.0000 +vn -0.9665 -0.2568 -0.0000 +vn -0.3839 0.9234 -0.0000 +vn -0.6994 0.7147 -0.0000 +vn -0.0000 0.5725 0.8199 +vn -0.0000 0.5724 0.8199 +vn -0.0000 0.2878 -0.9577 +vn -0.0000 0.5513 -0.8343 +vn -0.3908 -0.9205 0.0007 +vn -0.3902 -0.9207 -0.0000 +vn -0.9601 -0.2554 -0.1143 +vn -0.9472 -0.3207 -0.0000 +vn -0.9978 0.0661 -0.0000 +vn -0.9978 -0.0662 -0.0000 +vn -0.7523 -0.6588 -0.0000 +vn -0.8965 -0.4430 -0.0000 +vn -0.4430 -0.8965 -0.0000 +vn -0.6588 -0.7523 -0.0000 +vn -0.0661 -0.9978 -0.0000 +vn -0.3207 -0.9472 -0.0000 +vn 0.1802 -0.0001 0.9836 +vn 0.4855 -0.0001 0.8742 +vn 0.0662 -0.9978 -0.0000 +vn 0.3827 -0.9239 -0.0000 +vn 0.3828 -0.9238 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn 0.8510 -0.0001 0.5252 +vn 0.9649 -0.0001 0.2626 +vn 0.9715 -0.0000 -0.2369 +vn 0.8806 -0.0000 -0.4739 +vn 0.8965 -0.4430 -0.0000 +vn 0.9472 -0.3207 -0.0000 +vn 0.9978 0.0662 -0.0000 +vn 0.9978 -0.0662 -0.0000 +vn 0.8965 0.4430 -0.0000 +vn 0.9472 0.3207 -0.0000 +vn 0.6588 0.7523 -0.0000 +vn 0.7523 0.6588 0.0001 +vn 0.3207 0.9472 -0.0000 +vn 0.4430 0.8965 -0.0000 +vn -0.0662 0.9978 -0.0000 +vn 0.0661 0.9978 -0.0000 +vn -0.0661 0.9978 -0.0000 +vn -0.3827 0.9239 -0.0000 +vn -0.3831 0.9237 -0.0000 +vn -0.7071 0.7071 -0.0000 +vn 0.4068 -0.0000 -0.9135 +vn -0.8965 0.4430 -0.0000 +vn -0.9472 0.3207 -0.0000 +vn -0.0000 0.2895 -0.9572 +vn -0.3241 -0.0000 -0.9460 +vn -0.0000 0.2399 -0.9708 +vn -0.0000 0.5962 -0.8028 +vn -0.0000 0.5087 -0.8609 +vn -0.0000 0.4166 -0.9091 +vn -0.2336 -0.0000 0.9723 +vn 0.3531 -0.0000 0.9356 +vn 0.9112 -0.0000 0.4119 +vn -0.0000 0.8520 0.5235 +vn -0.0003 0.7892 0.6142 +vn -0.0000 0.1917 0.9814 +vn -0.0000 0.7892 0.6142 +vn -0.0000 0.4287 0.9035 +vn -0.0000 0.6411 0.7674 +vn -0.0000 0.5534 0.8329 +vn -0.0000 0.8920 0.4521 +vn -0.0000 0.8459 0.5334 +vn -0.0000 0.9771 0.2126 +vn -0.0000 0.9896 0.1439 +vn -0.0000 0.9979 0.0648 +vn -0.0000 0.9977 0.0682 +vn -0.0000 0.9974 0.0716 +vn 0.9695 -0.2451 -0.0001 +vn -0.0111 0.0273 -0.9996 +vn -0.0194 0.0258 -0.9995 +vn -0.0030 0.0101 -0.9999 +vn -0.0000 0.0008 -1.0000 +vn -0.0005 0.0005 -1.0000 +vn -0.0009 -0.0000 -1.0000 +vn -0.0148 -0.0140 -0.9998 +vn -0.0126 -0.0131 -0.9998 +vn -0.0055 -0.0061 -1.0000 +vn -0.0004 -0.0004 -1.0000 +vn 0.0004 0.0004 -1.0000 +vn -0.0138 0.0348 -0.9993 +vn -0.0152 -0.0072 -0.9999 +vn -0.0000 0.2527 0.9675 +vn -0.9588 0.2841 -0.0000 +vn -0.8386 0.5448 -0.0000 +vn -0.4855 -0.0000 0.8742 +vn -0.2428 -0.0000 0.9701 +vn -0.8510 -0.0000 0.5252 +vn -0.9715 0.0001 -0.2369 +vn -0.9649 -0.0000 0.2626 +vn -0.9715 -0.0000 -0.2370 +vn -0.8806 -0.0000 -0.4739 +vn -0.4068 -0.0000 -0.9135 +vn -0.0000 0.8521 0.5234 +vn -0.4670 -0.0000 0.8842 +vn -0.6588 0.7523 -0.0000 +vn -0.7523 0.6588 -0.0000 +vn -0.3207 0.9472 -0.0000 +vn -0.4430 0.8965 -0.0000 +vn 0.6588 -0.7523 -0.0000 +vn 0.3207 -0.9472 -0.0000 +vn 0.4430 -0.8965 -0.0000 +vn 0.7523 -0.6588 -0.0000 +vn 0.7523 0.6588 -0.0000 +vn 0.9978 -0.0661 -0.0000 +vn 0.9978 0.0661 -0.0000 +vn -0.9978 -0.0661 -0.0000 +vn 0.0661 -0.9978 -0.0000 +vn -0.0001 -0.8629 -0.5054 +vn -0.0000 -0.9675 -0.2527 +vn -0.0001 -0.5054 -0.8629 +vn -0.0000 0.2527 -0.9675 +vn -0.0000 0.5054 -0.8629 +vn -0.0000 -0.2527 -0.9675 +vn -0.0000 0.9675 -0.2527 +vn 0.0001 0.8629 -0.5054 +vn -1.0000 -0.0000 -0.0068 +vn -1.0000 -0.0000 -0.0028 +vn -0.0000 -0.3821 0.9241 +vn 0.3738 0.9275 -0.0000 +vn 0.0001 0.7210 -0.6930 +vn 0.7948 0.6069 -0.0002 +vn -0.6262 0.7797 -0.0001 +vn 0.7948 0.6069 0.0002 +vn -0.0000 -0.9849 0.1731 +vn -0.9987 -0.0000 0.0512 +vn -1.0000 0.0026 -0.0000 +vn 0.0662 0.9978 -0.0000 +vn 0.9715 -0.0000 -0.2370 +vt 0.665882 0.347767 +vt 0.666023 0.347766 +vt 0.666162 0.347974 +vt 0.668422 0.348903 +vt 0.668420 0.348450 +vt 0.668128 0.348707 +vt 0.670331 0.347891 +vt 0.670113 0.347891 +vt 0.670112 0.348138 +vt 0.648961 0.347035 +vt 0.648963 0.347711 +vt 0.650088 0.347182 +vt 0.670330 0.348139 +vt 0.670330 0.348216 +vt 0.671351 0.348220 +vt 0.671351 0.348142 +vt 0.655673 0.344315 +vt 0.655725 0.344372 +vt 0.655911 0.344201 +vt 0.649593 0.340884 +vt 0.649645 0.341960 +vt 0.649646 0.340955 +vt 0.656134 0.344371 +vt 0.649941 0.340885 +vt 0.655073 0.340475 +vt 0.655070 0.339797 +vt 0.654996 0.339724 +vt 0.671575 0.327451 +vt 0.671356 0.327477 +vt 0.671982 0.327480 +vt 0.644693 0.340192 +vt 0.644385 0.340134 +vt 0.644557 0.340283 +vt 0.644700 0.340269 +vt 0.647509 0.341099 +vt 0.649593 0.340718 +vt 0.646875 0.340713 +vt 0.646368 0.340876 +vt 0.650439 0.347369 +vt 0.650243 0.347332 +vt 0.648903 0.346602 +vt 0.648902 0.346797 +vt 0.650571 0.346464 +vt 0.653087 0.342196 +vt 0.653087 0.342119 +vt 0.652263 0.341965 +vt 0.653089 0.340724 +vt 0.649942 0.340719 +vt 0.652265 0.340960 +vt 0.652957 0.336625 +vt 0.652061 0.336628 +vt 0.652064 0.337317 +vt 0.653168 0.336809 +vt 0.656866 0.340895 +vt 0.655346 0.340806 +vt 0.653970 0.340890 +vt 0.671253 0.338233 +vt 0.671472 0.338233 +vt 0.671470 0.337557 +vt 0.652046 0.346806 +vt 0.665497 0.338599 +vt 0.665663 0.338599 +vt 0.665663 0.338404 +vt 0.647507 0.341802 +vt 0.653089 0.340802 +vt 0.669772 0.341914 +vt 0.669364 0.341701 +vt 0.670181 0.341704 +vt 0.650766 0.346427 +vt 0.652276 0.346675 +vt 0.652808 0.346599 +vt 0.652882 0.346653 +vt 0.666531 0.348446 +vt 0.666675 0.348446 +vt 0.666674 0.348692 +vt 0.671544 0.335436 +vt 0.671154 0.335438 +vt 0.671154 0.335634 +vt 0.671512 0.335403 +vt 0.671191 0.335404 +vt 0.653306 0.342119 +vt 0.653308 0.340802 +vt 0.653969 0.341610 +vt 0.653969 0.341314 +vt 0.657096 0.340687 +vt 0.657251 0.340835 +vt 0.657446 0.340872 +vt 0.666338 0.341178 +vt 0.666344 0.341136 +vt 0.666141 0.341132 +vt 0.671982 0.327709 +vt 0.671281 0.327706 +vt 0.671277 0.328466 +vt 0.671424 0.328610 +vt 0.671831 0.328612 +vt 0.671979 0.328470 +vt 0.645308 0.342022 +vt 0.646366 0.342024 +vt 0.645309 0.341798 +vt 0.654435 0.342121 +vt 0.654435 0.342199 +vt 0.654781 0.342199 +vt 0.671983 0.325746 +vt 0.671796 0.325132 +vt 0.671793 0.326094 +vt 0.671982 0.325897 +vt 0.672220 0.326096 +vt 0.671777 0.334214 +vt 0.671776 0.334827 +vt 0.672010 0.334827 +vt 0.653873 0.340803 +vt 0.653654 0.340803 +vt 0.655346 0.340729 +vt 0.655001 0.340728 +vt 0.655001 0.340805 +vt 0.653654 0.340725 +vt 0.653308 0.340725 +vt 0.671788 0.332239 +vt 0.671789 0.331098 +vt 0.671711 0.331172 +vt 0.652553 0.348753 +vt 0.652553 0.349106 +vt 0.652681 0.349106 +vt 0.672085 0.331172 +vt 0.672007 0.331098 +vt 0.672006 0.332240 +vt 0.656870 0.341615 +vt 0.668193 0.332067 +vt 0.669156 0.332072 +vt 0.669169 0.329174 +vt 0.671795 0.322170 +vt 0.671872 0.322170 +vt 0.671867 0.321028 +vt 0.672090 0.322169 +vt 0.672168 0.322168 +vt 0.672163 0.321101 +vt 0.668481 0.329171 +vt 0.668206 0.329389 +vt 0.666338 0.332059 +vt 0.666535 0.332060 +vt 0.666549 0.329162 +vt 0.652436 0.348631 +vt 0.652336 0.348753 +vt 0.671870 0.322396 +vt 0.671793 0.322471 +vt 0.671795 0.323538 +vt 0.670269 0.345604 +vt 0.670270 0.345453 +vt 0.670505 0.345454 +vt 0.672166 0.322470 +vt 0.672088 0.322396 +vt 0.672090 0.323538 +vt 0.645310 0.341095 +vt 0.667770 0.332065 +vt 0.666770 0.332061 +vt 0.666784 0.329163 +vt 0.671056 0.346443 +vt 0.670979 0.346517 +vt 0.670974 0.347585 +vt 0.670666 0.345804 +vt 0.670503 0.345803 +vt 0.670504 0.345605 +vt 0.671270 0.347586 +vt 0.671347 0.347586 +vt 0.671352 0.346519 +vt 0.667782 0.329387 +vt 0.667509 0.329166 +vt 0.666922 0.332062 +vt 0.666935 0.329164 +vt 0.671361 0.326336 +vt 0.671283 0.326410 +vt 0.671279 0.327477 +vt 0.667157 0.332063 +vt 0.667170 0.329165 +vt 0.657272 0.345497 +vt 0.657273 0.344680 +vt 0.657191 0.344600 +vt 0.671652 0.327452 +vt 0.671656 0.326411 +vt 0.651028 0.346127 +vt 0.650922 0.346278 +vt 0.655755 0.344598 +vt 0.655674 0.344677 +vt 0.655673 0.345494 +vt 0.645310 0.340874 +vt 0.654782 0.340805 +vt 0.653652 0.342120 +vt 0.653968 0.342037 +vt 0.653873 0.340726 +vt 0.654218 0.340804 +vt 0.654219 0.340726 +vt 0.654437 0.340804 +vt 0.654782 0.340727 +vt 0.672010 0.334979 +vt 0.671775 0.334978 +vt 0.671775 0.335176 +vt 0.672199 0.335177 +vt 0.672223 0.325134 +vt 0.653871 0.342120 +vt 0.655345 0.342200 +vt 0.655345 0.342122 +vt 0.655000 0.342122 +vt 0.653652 0.342197 +vt 0.656756 0.344189 +vt 0.656833 0.344189 +vt 0.656833 0.344045 +vt 0.671877 0.347120 +vt 0.671954 0.347119 +vt 0.671951 0.346443 +vt 0.671581 0.347121 +vt 0.671659 0.347121 +vt 0.671655 0.346445 +vt 0.656460 0.344190 +vt 0.656538 0.344190 +vt 0.656537 0.343971 +vt 0.671606 0.348023 +vt 0.671952 0.348024 +vt 0.671954 0.347348 +vt 0.667304 0.332303 +vt 0.667016 0.335199 +vt 0.666328 0.335196 +vt 0.671469 0.337246 +vt 0.671546 0.337245 +vt 0.671544 0.337101 +vt 0.671549 0.338232 +vt 0.671547 0.337557 +vt 0.667291 0.334981 +vt 0.669169 0.332311 +vt 0.669156 0.335209 +vt 0.668958 0.335208 +vt 0.652436 0.349228 +vt 0.652591 0.349228 +vt 0.672007 0.329730 +vt 0.672007 0.330872 +vt 0.672084 0.330872 +vt 0.669596 0.345601 +vt 0.669357 0.345600 +vt 0.669358 0.345449 +vt 0.671711 0.329804 +vt 0.671711 0.330872 +vt 0.671788 0.330872 +vt 0.667731 0.332305 +vt 0.667718 0.334983 +vt 0.668972 0.332310 +vt 0.668720 0.335207 +vt 0.672007 0.332466 +vt 0.672006 0.333607 +vt 0.672083 0.333608 +vt 0.669356 0.345798 +vt 0.669196 0.345797 +vt 0.671787 0.333607 +vt 0.671789 0.332465 +vt 0.671711 0.332540 +vt 0.667991 0.335204 +vt 0.668734 0.332309 +vt 0.668569 0.335206 +vt 0.654781 0.342122 +vt 0.656868 0.342041 +vt 0.672089 0.323764 +vt 0.672090 0.324906 +vt 0.672168 0.324906 +vt 0.668344 0.332307 +vt 0.668331 0.335205 +vt 0.668582 0.332308 +vt 0.656869 0.342187 +vt 0.655687 0.342123 +vt 0.653870 0.342198 +vt 0.654216 0.342198 +vt 0.671872 0.324906 +vt 0.671870 0.323765 +vt 0.671793 0.323839 +vt 0.654216 0.342121 +vt 0.671874 0.346444 +vt 0.644214 0.339986 +vt 0.644362 0.339846 +vt 0.644193 0.339756 +vt 0.644615 0.340046 +vt 0.644334 0.339545 +vt 0.644175 0.339559 +vt 0.661765 0.343274 +vt 0.661774 0.343476 +vt 0.661938 0.343468 +vt 0.644761 0.345897 +vt 0.644761 0.345737 +vt 0.644408 0.345736 +vt 0.661779 0.343575 +vt 0.661664 0.343724 +vt 0.661914 0.343724 +vt 0.666088 0.341451 +vt 0.652408 0.344048 +vt 0.653077 0.344280 +vt 0.652920 0.344378 +vt 0.644352 0.339741 +vt 0.665748 0.341793 +vt 0.665706 0.341738 +vt 0.663936 0.343063 +vt 0.644408 0.345896 +vt 0.644302 0.345896 +vt 0.644079 0.346130 +vt 0.644077 0.347117 +vt 0.645080 0.347119 +vt 0.645082 0.346132 +vt 0.667545 0.348453 +vt 0.667839 0.348708 +vt 0.667838 0.348452 +vt 0.671547 0.336174 +vt 0.671546 0.336029 +vt 0.671385 0.336030 +vt 0.645949 0.348760 +vt 0.645922 0.348760 +vt 0.645922 0.348928 +vt 0.645519 0.348898 +vt 0.645812 0.348899 +vt 0.645813 0.348759 +vt 0.645520 0.348758 +vt 0.645839 0.348927 +vt 0.645839 0.348759 +vt 0.665999 0.338618 +vt 0.666027 0.338619 +vt 0.666027 0.338335 +vt 0.671398 0.339640 +vt 0.671245 0.339741 +vt 0.671571 0.340011 +vt 0.671500 0.339488 +vt 0.671536 0.339308 +vt 0.671066 0.339776 +vt 0.669561 0.343988 +vt 0.669414 0.343844 +vt 0.670116 0.343846 +vt 0.669417 0.343083 +vt 0.670343 0.343087 +vt 0.670119 0.343086 +vt 0.670101 0.342715 +vt 0.670239 0.342384 +vt 0.670344 0.341862 +vt 0.670103 0.342052 +vt 0.669440 0.342050 +vt 0.669200 0.341858 +vt 0.669301 0.342381 +vt 0.669196 0.343083 +vt 0.669438 0.342713 +vt 0.669338 0.342202 +vt 0.669592 0.341949 +vt 0.670204 0.342205 +vt 0.670203 0.342563 +vt 0.669948 0.342816 +vt 0.669769 0.342851 +vt 0.669589 0.342815 +vt 0.669336 0.342560 +vt 0.669968 0.343989 +vt 0.669951 0.341950 +vt 0.665497 0.338404 +vt 0.665149 0.338488 +vt 0.665150 0.338600 +vt 0.664984 0.338600 +vt 0.665458 0.338243 +vt 0.665110 0.338327 +vt 0.670113 0.347813 +vt 0.669767 0.347812 +vt 0.671352 0.347895 +vt 0.671352 0.347817 +vt 0.670331 0.347814 +vt 0.669766 0.348137 +vt 0.669766 0.348214 +vt 0.670112 0.348215 +vt 0.644857 0.345897 +vt 0.666110 0.338571 +vt 0.666110 0.338335 +vt 0.666316 0.338619 +vt 0.666233 0.338571 +vt 0.666316 0.338647 +vt 0.646157 0.348929 +vt 0.646158 0.348622 +vt 0.671549 0.336766 +vt 0.671548 0.336570 +vt 0.671158 0.336572 +vt 0.671517 0.336801 +vt 0.671159 0.336768 +vt 0.668127 0.348451 +vt 0.666344 0.338619 +vt 0.666344 0.338363 +vt 0.666317 0.338336 +vt 0.666234 0.338336 +vt 0.646280 0.348929 +vt 0.646516 0.348930 +vt 0.646490 0.348762 +vt 0.646626 0.348903 +vt 0.646626 0.348763 +vt 0.646599 0.348763 +vt 0.646517 0.348762 +vt 0.646599 0.348931 +vt 0.646918 0.348904 +vt 0.646919 0.348764 +vt 0.665884 0.348220 +vt 0.666228 0.348025 +vt 0.666399 0.348073 +vt 0.667547 0.348906 +vt 0.666529 0.348691 +vt 0.666756 0.348819 +vt 0.669247 0.347752 +vt 0.669249 0.348205 +vt 0.668969 0.347962 +vt 0.668904 0.348013 +vt 0.668734 0.348063 +vt 0.666446 0.348817 +vt 0.669107 0.347753 +vt 0.651009 0.348764 +vt 0.651047 0.348947 +vt 0.651082 0.348764 +vt 0.650945 0.349104 +vt 0.650893 0.349053 +vt 0.651150 0.348791 +vt 0.651202 0.348842 +vt 0.651013 0.349131 +vt 0.651231 0.348909 +vt 0.651231 0.348982 +vt 0.651086 0.349131 +vt 0.651204 0.349050 +vt 0.651153 0.349102 +vt 0.650942 0.348793 +vt 0.650864 0.348986 +vt 0.650891 0.348845 +vt 0.650864 0.348913 +vt 0.672001 0.336533 +vt 0.671992 0.338283 +vt 0.672197 0.338284 +vt 0.672049 0.338339 +vt 0.672140 0.338340 +vt 0.665496 0.328592 +vt 0.665496 0.328721 +vt 0.665700 0.328722 +vt 0.649982 0.347032 +vt 0.655858 0.344144 +vt 0.654727 0.340476 +vt 0.654996 0.339627 +vt 0.671545 0.335632 +vt 0.672221 0.325898 +vt 0.672200 0.334214 +vt 0.671711 0.332239 +vt 0.652681 0.348753 +vt 0.672084 0.332240 +vt 0.656871 0.341319 +vt 0.671790 0.321103 +vt 0.672085 0.321027 +vt 0.666351 0.329161 +vt 0.652591 0.348631 +vt 0.671872 0.323538 +vt 0.672168 0.323538 +vt 0.671051 0.347585 +vt 0.671275 0.346444 +vt 0.657189 0.345576 +vt 0.671579 0.326337 +vt 0.655754 0.345574 +vt 0.654437 0.340727 +vt 0.672221 0.325747 +vt 0.654999 0.342199 +vt 0.653306 0.342197 +vt 0.656755 0.343970 +vt 0.671578 0.346445 +vt 0.656460 0.344046 +vt 0.671609 0.347347 +vt 0.666342 0.332298 +vt 0.671466 0.337028 +vt 0.646872 0.342185 +vt 0.652336 0.349106 +vt 0.672085 0.329805 +vt 0.669596 0.345450 +vt 0.671789 0.329730 +vt 0.672085 0.332540 +vt 0.671710 0.333607 +vt 0.672166 0.323838 +vt 0.655687 0.342193 +vt 0.671795 0.324906 +vt 0.652075 0.340487 +vt 0.653379 0.340482 +vt 0.652073 0.339798 +vt 0.661929 0.343266 +vt 0.666317 0.341361 +vt 0.663978 0.343119 +vt 0.671386 0.336174 +vt 0.665999 0.338362 +vt 0.664984 0.338489 +vt 0.669767 0.347890 +vt 0.666027 0.338646 +vt 0.671197 0.336802 +vt 0.646282 0.348623 +vt 0.672205 0.336534 +vt 0.665701 0.328592 +vt 0.645130 0.340230 +vt 0.645115 0.340070 +vt 0.644939 0.340169 +vt 0.644925 0.340018 +vt 0.653589 0.346722 +vt 0.653589 0.346671 +vt 0.654138 0.346662 +vt 0.665807 0.340688 +vt 0.656870 0.339398 +vt 0.655850 0.339403 +vt 0.655851 0.339547 +vt 0.669550 0.348136 +vt 0.669549 0.347891 +vt 0.669475 0.347964 +vt 0.654722 0.339409 +vt 0.653268 0.346667 +vt 0.645840 0.346789 +vt 0.648555 0.346796 +vt 0.648555 0.346685 +vt 0.653368 0.337690 +vt 0.653364 0.336650 +vt 0.645841 0.346452 +vt 0.655971 0.340807 +vt 0.656866 0.340731 +vt 0.655971 0.340730 +vt 0.671250 0.337251 +vt 0.671173 0.337252 +vt 0.671174 0.337355 +vt 0.671175 0.337452 +vt 0.671176 0.337555 +vt 0.671254 0.337557 +vt 0.670598 0.339307 +vt 0.670569 0.339021 +vt 0.670567 0.340009 +vt 0.668033 0.348210 +vt 0.668032 0.348119 +vt 0.671272 0.335785 +vt 0.654284 0.346628 +vt 0.654463 0.346686 +vt 0.654139 0.346714 +vt 0.653167 0.344749 +vt 0.668714 0.344925 +vt 0.673954 0.344135 +vt 0.665656 0.340670 +vt 0.665851 0.340483 +vt 0.665756 0.340431 +vt 0.664125 0.338873 +vt 0.663934 0.339073 +vt 0.665576 0.340641 +vt 0.654003 0.344111 +vt 0.654328 0.344094 +vt 0.654215 0.344297 +vt 0.669114 0.339976 +vt 0.644900 0.339700 +vt 0.651779 0.345198 +vt 0.651935 0.345050 +vt 0.652048 0.344354 +vt 0.651583 0.345233 +vt 0.662656 0.340850 +vt 0.659345 0.340602 +vt 0.659296 0.340678 +vt 0.674047 0.345242 +vt 0.653814 0.345328 +vt 0.653827 0.348209 +vt 0.646508 0.344057 +vt 0.649684 0.344093 +vt 0.649669 0.344043 +vt 0.669763 0.344216 +vt 0.669762 0.344374 +vt 0.669531 0.344215 +vt 0.665873 0.340511 +vt 0.669360 0.345109 +vt 0.665821 0.341739 +vt 0.654433 0.338957 +vt 0.656867 0.338944 +vt 0.656669 0.338713 +vt 0.656667 0.338361 +vt 0.654429 0.338141 +vt 0.656864 0.338360 +vt 0.656863 0.338096 +vt 0.653400 0.344098 +vt 0.653390 0.344296 +vt 0.652050 0.344171 +vt 0.649802 0.344145 +vt 0.656863 0.337912 +vt 0.654402 0.338030 +vt 0.656866 0.338712 +vt 0.655067 0.339300 +vt 0.655286 0.339299 +vt 0.654407 0.339067 +vt 0.655849 0.339296 +vt 0.656869 0.339171 +vt 0.655631 0.339297 +vt 0.652632 0.338147 +vt 0.652938 0.338146 +vt 0.652967 0.338035 +vt 0.662503 0.338903 +vt 0.662477 0.339733 +vt 0.662538 0.339781 +vt 0.670633 0.340349 +vt 0.670698 0.344205 +vt 0.674042 0.344163 +vt 0.655278 0.336619 +vt 0.655279 0.337686 +vt 0.655624 0.337686 +vt 0.662902 0.338878 +vt 0.662914 0.339780 +vt 0.662981 0.339739 +vt 0.645309 0.346450 +vt 0.645308 0.346788 +vt 0.666773 0.346076 +vt 0.666773 0.346282 +vt 0.668969 0.346283 +vt 0.652633 0.338379 +vt 0.652788 0.338378 +vt 0.642744 0.343779 +vt 0.670357 0.344943 +vt 0.661163 0.348102 +vt 0.661163 0.347939 +vt 0.655926 0.347949 +vt 0.674018 0.338472 +vt 0.669132 0.338416 +vt 0.661578 0.348101 +vt 0.661577 0.347938 +vt 0.661362 0.347939 +vt 0.661362 0.348102 +vt 0.662153 0.348100 +vt 0.662310 0.347937 +vt 0.661761 0.347938 +vt 0.670672 0.344629 +vt 0.670508 0.344764 +vt 0.670115 0.344376 +vt 0.669789 0.344760 +vt 0.652789 0.338731 +vt 0.652941 0.338962 +vt 0.670084 0.344762 +vt 0.670082 0.345113 +vt 0.670506 0.345115 +vt 0.670670 0.345116 +vt 0.652372 0.337694 +vt 0.670348 0.344219 +vt 0.655279 0.337793 +vt 0.656863 0.337685 +vt 0.655843 0.337686 +vt 0.655843 0.337793 +vt 0.653587 0.337690 +vt 0.653932 0.337689 +vt 0.653928 0.336621 +vt 0.654151 0.337688 +vt 0.654496 0.337687 +vt 0.654493 0.336620 +vt 0.652049 0.345739 +vt 0.651029 0.345736 +vt 0.662560 0.338873 +vt 0.666774 0.345670 +vt 0.668969 0.346078 +vt 0.666773 0.347043 +vt 0.668969 0.347044 +vt 0.670627 0.345147 +vt 0.673942 0.345184 +vt 0.646451 0.344107 +vt 0.661762 0.348101 +vt 0.670079 0.345801 +vt 0.669784 0.345800 +vt 0.669787 0.345111 +vt 0.670116 0.344218 +vt 0.654713 0.336619 +vt 0.654715 0.337686 +vt 0.655060 0.337686 +vt 0.655624 0.337793 +vt 0.653933 0.337796 +vt 0.653587 0.337797 +vt 0.653369 0.337798 +vt 0.654151 0.337795 +vt 0.655060 0.337793 +vt 0.654715 0.337794 +vt 0.656181 0.344310 +vt 0.655958 0.344139 +vt 0.652635 0.338964 +vt 0.652378 0.339418 +vt 0.652971 0.339073 +vt 0.655170 0.347691 +vt 0.655169 0.347353 +vt 0.653593 0.339306 +vt 0.653939 0.339305 +vt 0.653375 0.339415 +vt 0.653374 0.339307 +vt 0.655631 0.339404 +vt 0.655286 0.339406 +vt 0.655287 0.339550 +vt 0.655701 0.347689 +vt 0.668970 0.345671 +vt 0.668970 0.345465 +vt 0.652634 0.338732 +vt 0.668641 0.344399 +vt 0.670385 0.344396 +vt 0.671176 0.338233 +vt 0.671248 0.337030 +vt 0.645543 0.340191 +vt 0.650254 0.339752 +vt 0.650742 0.339545 +vt 0.669187 0.349359 +vt 0.669193 0.350916 +vt 0.655068 0.339554 +vt 0.655068 0.339408 +vt 0.645344 0.340210 +vt 0.645329 0.340050 +vt 0.645528 0.340032 +vt 0.653939 0.339413 +vt 0.669362 0.344758 +vt 0.669202 0.344621 +vt 0.654722 0.339302 +vt 0.669200 0.345108 +vt 0.653593 0.339414 +vt 0.653597 0.340482 +vt 0.653943 0.340480 +vt 0.654158 0.339412 +vt 0.654162 0.340479 +vt 0.654508 0.340478 +vt 0.654157 0.339304 +vt 0.654504 0.339410 +vt 0.654503 0.339303 +vt 0.666774 0.345464 +vt 0.668970 0.344705 +vt 0.659341 0.339758 +vt 0.659342 0.339807 +vt 0.644946 0.340247 +vt 0.652042 0.344901 +vt 0.645109 0.340001 +vt 0.665779 0.341683 +vt 0.661666 0.343279 +vt 0.661676 0.343481 +vt 0.653725 0.344114 +vt 0.653832 0.344119 +vt 0.653822 0.344318 +vt 0.654014 0.344308 +vt 0.654333 0.346558 +vt 0.655311 0.344043 +vt 0.655447 0.346648 +vt 0.661438 0.342326 +vt 0.661436 0.342143 +vt 0.657096 0.342143 +vt 0.661436 0.342509 +vt 0.657096 0.342326 +vt 0.661430 0.342692 +vt 0.657096 0.342509 +vt 0.661427 0.342875 +vt 0.657096 0.342692 +vt 0.666250 0.348901 +vt 0.666250 0.348816 +vt 0.657096 0.342875 +vt 0.657096 0.343058 +vt 0.661427 0.343058 +vt 0.657096 0.343240 +vt 0.661427 0.343240 +vt 0.666203 0.348900 +vt 0.666204 0.348816 +vt 0.665882 0.348899 +vt 0.665883 0.348814 +vt 0.661427 0.343423 +vt 0.657096 0.343423 +vt 0.657096 0.343606 +vt 0.661427 0.343606 +vt 0.657096 0.343789 +vt 0.661427 0.343789 +vt 0.657096 0.343972 +vt 0.661427 0.343972 +vt 0.657096 0.344155 +vt 0.661427 0.344155 +vt 0.657096 0.344338 +vt 0.661427 0.344338 +vt 0.657096 0.341411 +vt 0.657096 0.341594 +vt 0.661427 0.341594 +vt 0.657096 0.341777 +vt 0.661430 0.341777 +vt 0.649012 0.349171 +vt 0.649012 0.349086 +vt 0.648961 0.349086 +vt 0.661433 0.341960 +vt 0.657096 0.341960 +vt 0.649208 0.349086 +vt 0.649714 0.349170 +vt 0.649518 0.349086 +vt 0.649435 0.348914 +vt 0.649290 0.348914 +vt 0.649435 0.348644 +vt 0.649290 0.348644 +vt 0.667918 0.348211 +vt 0.667216 0.348214 +vt 0.667216 0.348127 +vt 0.667101 0.348214 +vt 0.667100 0.348123 +vt 0.656458 0.342453 +vt 0.656457 0.342704 +vt 0.656541 0.342453 +vt 0.656833 0.342705 +vt 0.656833 0.342454 +vt 0.656832 0.342788 +vt 0.655958 0.342785 +vt 0.655957 0.342962 +vt 0.656832 0.342965 +vt 0.656041 0.343742 +vt 0.656743 0.343745 +vt 0.656829 0.343669 +vt 0.655955 0.343666 +vt 0.653267 0.346719 +vt 0.670795 0.338787 +vt 0.670736 0.338975 +vt 0.671068 0.338839 +vt 0.671350 0.338788 +vt 0.671399 0.338977 +vt 0.671573 0.339023 +vt 0.670633 0.339486 +vt 0.670735 0.339638 +vt 0.670887 0.339740 +vt 0.671500 0.339129 +vt 0.671247 0.338875 +vt 0.670888 0.338874 +vt 0.670634 0.339127 +vt 0.671253 0.337451 +vt 0.656541 0.342427 +vt 0.656458 0.342426 +vt 0.671274 0.336420 +vt 0.671548 0.336419 +vt 0.666952 0.348820 +vt 0.666952 0.348904 +vt 0.666998 0.348905 +vt 0.667319 0.348906 +vt 0.666998 0.348820 +vt 0.649765 0.349170 +vt 0.649765 0.349086 +vt 0.649714 0.349086 +vt 0.656334 0.342703 +vt 0.655958 0.342702 +vt 0.667918 0.348124 +vt 0.656252 0.342426 +vt 0.656251 0.342452 +vt 0.656334 0.342453 +vt 0.654496 0.337794 +vt 0.651103 0.348667 +vt 0.651206 0.348710 +vt 0.650889 0.349185 +vt 0.651285 0.348789 +vt 0.651328 0.348892 +vt 0.650992 0.349228 +vt 0.651328 0.349003 +vt 0.651285 0.349106 +vt 0.651103 0.349228 +vt 0.651206 0.349185 +vt 0.650767 0.348892 +vt 0.650889 0.348710 +vt 0.650767 0.349003 +vt 0.650810 0.349106 +vt 0.650992 0.348667 +vt 0.650810 0.348789 +vt 0.663495 0.328582 +vt 0.663495 0.328711 +vt 0.663575 0.328712 +vt 0.663666 0.328712 +vt 0.663667 0.328583 +vt 0.663575 0.328583 +vt 0.663746 0.328583 +vt 0.663746 0.328713 +vt 0.661745 0.328574 +vt 0.661745 0.328703 +vt 0.656871 0.339542 +vt 0.669475 0.348061 +vt 0.671252 0.337354 +vt 0.671545 0.335784 +vt 0.674011 0.340319 +vt 0.655624 0.336619 +vt 0.662967 0.338908 +vt 0.656433 0.348111 +vt 0.653583 0.336623 +vt 0.654148 0.336621 +vt 0.655059 0.336619 +vt 0.655632 0.339548 +vt 0.655699 0.347352 +vt 0.659343 0.339981 +vt 0.671171 0.337105 +vt 0.674072 0.350895 +vt 0.666774 0.344703 +vt 0.653715 0.344312 +vt 0.659330 0.338958 +vt 0.661427 0.341411 +vt 0.648961 0.349171 +vt 0.667319 0.348822 +vt 0.656334 0.342426 +vt 0.655959 0.342451 +s 0 +f 1789/1551/866 1790/1552/866 1791/1553/866 +f 1792/1554/867 1793/1555/867 1794/1556/867 +f 1795/1557/868 1796/1558/868 1797/1559/868 +f 1798/1560/868 1799/1561/868 1800/1562/868 +f 1801/1563/869 1802/1564/869 1803/1565/869 +f 1795/1557/870 1804/1563/870 1805/1566/870 +f 1806/1567/871 1807/1568/871 1808/1569/871 +f 1809/1570/872 1810/1571/872 1811/1572/872 +f 1812/1569/873 1813/1568/873 1814/1573/873 +f 1809/1570/872 1811/1572/872 1815/1574/872 +f 1816/1575/868 1817/1576/868 1818/1577/868 +f 1819/1578/874 1820/1579/874 1821/1580/874 +f 1822/1581/875 1823/1582/875 1824/1583/875 +f 1824/1583/875 1825/1584/875 1822/1581/875 +f 1826/1585/872 1809/1570/872 1827/1586/872 +f 1828/1587/872 1829/1588/872 1826/1585/872 +f 1799/1561/868 1830/1589/868 1831/1590/868 +f 1832/1591/866 1833/1592/866 1834/1593/866 +f 1835/1594/872 1836/1595/872 1837/1596/872 +f 1838/1597/872 1839/1598/872 1840/1599/872 +f 1828/1587/872 1826/1585/872 1827/1586/872 +f 1841/1600/866 1842/1601/866 1843/1602/866 +f 1843/1602/866 1844/1603/866 1841/1600/866 +f 1845/1604/872 1846/1605/872 1847/1606/872 +f 1848/1607/868 1849/1608/868 1850/1609/868 +f 1833/1592/866 1851/1610/866 1834/1593/866 +f 1852/1611/875 1853/1612/875 1854/1613/875 +f 1839/1598/872 1815/1574/872 1840/1599/872 +f 1811/1572/872 1840/1599/872 1815/1574/872 +f 1826/1585/872 1855/1614/872 1809/1570/872 +f 1840/1599/872 1856/1615/872 1838/1597/872 +f 1857/1616/875 1858/1617/875 1859/1618/875 +f 1860/1619/866 1834/1593/866 1851/1610/866 +f 1861/1620/866 1862/1621/866 1863/1622/866 +f 1864/1623/875 1865/1624/875 1866/1625/875 +f 1867/1626/876 1868/1627/876 1869/1628/876 +f 1870/1629/876 1871/1630/876 1868/1627/876 +f 1840/1599/872 1837/1596/872 1836/1595/872 +f 1872/1631/872 1873/1632/872 1856/1615/872 +f 1874/1633/872 1875/1634/872 1873/1632/872 +f 1876/1635/868 1877/1636/868 1878/1637/868 +f 1879/1638/867 1880/1639/867 1881/1640/867 +f 1882/1641/867 1883/1642/867 1884/1643/867 +f 1885/1644/867 1886/1645/867 1887/1646/867 +f 1888/1647/872 1889/1648/872 1890/1649/872 +f 1891/1650/872 1892/1651/872 1893/1652/872 +f 1894/1653/867 1895/1654/867 1896/1655/867 +f 1897/1656/867 1896/1655/867 1898/1657/867 +f 1899/1658/867 1900/1659/867 1901/1660/867 +f 1902/1661/872 1903/1662/872 1847/1606/872 +f 1904/1663/872 1905/1664/872 1906/1665/872 +f 1907/1666/872 1908/1667/872 1873/1632/872 +f 1909/1668/867 1910/1669/867 1911/1670/867 +f 1912/1671/877 1913/1672/877 1914/1673/877 +f 1915/1674/875 1916/1675/875 1917/1676/875 +f 1875/1634/872 1874/1633/872 1918/1677/872 +f 1919/1678/878 1920/1679/878 1921/1680/878 +f 1922/1681/867 1923/1682/867 1924/1683/867 +f 1925/1684/875 1926/1685/875 1927/1686/875 +f 1928/1687/873 1929/1688/873 1919/1678/873 +f 1930/1689/879 1931/1690/879 1932/1691/879 +f 1933/1692/868 1934/1693/868 1935/1671/868 +f 1936/1694/867 1937/1695/867 1938/1696/867 +f 1939/1697/867 1940/1698/867 1941/1699/867 +f 1942/1700/875 1943/1701/875 1944/1702/875 +f 1829/1588/872 1945/1703/872 1826/1585/872 +f 1946/1704/880 1947/1678/880 1948/1688/880 +f 1949/1690/880 1950/1705/880 1951/1706/880 +f 1952/1707/867 1953/1708/867 1954/1709/867 +f 1955/1710/867 1956/1711/867 1957/1712/867 +f 1958/1713/875 1959/1714/875 1960/1715/875 +f 1957/1712/867 1941/1699/867 1955/1710/867 +f 1961/1716/881 1962/1717/881 1963/1704/881 +f 1964/1705/879 1965/1718/879 1966/1719/879 +f 1967/1720/867 1968/1721/867 1969/1722/867 +f 1970/1723/879 1963/1704/879 1962/1717/879 +f 1971/1718/869 1972/1723/869 1973/1724/869 +f 1974/1725/882 1975/1726/882 1976/1727/882 +f 1977/1578/875 1978/1728/875 1979/1729/875 +f 1980/1730/866 1981/1731/866 1851/1610/866 +f 1982/1732/883 1983/1733/883 1984/1734/883 +f 1829/1588/872 1985/1735/872 1945/1703/872 +f 1906/1665/872 1986/1736/872 1847/1606/872 +f 1873/1632/872 1875/1634/872 1847/1606/872 +f 1872/1631/872 1987/1737/872 1988/1738/872 +f 1989/1739/872 1902/1661/872 1847/1606/872 +f 1847/1606/872 1990/1740/872 1991/1741/872 +f 1992/1742/872 1990/1740/872 1847/1606/872 +f 1992/1742/872 1986/1736/872 1993/1743/872 +f 1994/1744/867 1995/1745/867 1996/1746/867 +f 1901/1660/867 1994/1744/867 1997/1747/867 +f 1998/1748/867 1895/1654/867 1894/1653/867 +f 1987/1737/872 1999/1749/872 1988/1738/872 +f 2000/1750/872 2001/1751/872 2002/1752/872 +f 2003/1753/872 1987/1737/872 1872/1631/872 +f 2004/1754/867 2005/1755/867 2006/1756/867 +f 2007/1757/867 2008/1758/867 2009/1759/867 +f 2010/1760/875 2011/1761/875 2012/1762/875 +f 2013/1763/875 2014/1764/875 2015/1765/875 +f 2016/1766/868 2017/1767/868 2018/1768/868 +f 2019/1769/879 2020/1770/879 2021/1771/879 +f 2022/1772/867 2023/1773/867 2024/1774/867 +f 2025/1608/867 2026/1775/867 2027/1776/867 +f 1835/1594/872 1810/1571/872 1889/1648/872 +f 2028/1777/881 2020/1770/881 2019/1769/881 +f 2029/1778/866 2030/1779/866 2031/1780/866 +f 2032/1781/866 2033/1782/866 2034/1672/866 +f 2035/1783/867 2036/1784/867 2037/1785/867 +f 1855/1614/872 1889/1648/872 1810/1571/872 +f 2038/1786/867 2039/1787/867 2040/1788/867 +f 2041/1789/875 2042/1790/875 2043/1791/875 +f 1890/1649/872 1889/1648/872 1855/1614/872 +f 2044/1792/880 2045/1793/880 2046/1777/880 +f 2047/1794/880 2048/1780/880 2049/1795/880 +f 2050/1796/867 2051/1797/867 2052/1798/867 +f 2053/1799/867 2054/1800/867 2039/1787/867 +f 2055/1801/875 2056/1802/875 2057/1803/875 +f 2040/1788/867 2039/1787/867 2054/1800/867 +f 2058/1804/866 2059/1793/866 2060/1792/866 +f 2061/1805/878 2062/1795/878 2063/1806/878 +f 1988/1738/872 2064/1807/872 2002/1752/872 +f 2065/1808/872 1988/1738/872 2001/1751/872 +f 2066/1809/867 2067/1810/867 2068/1811/867 +f 2069/1812/866 2070/1813/866 2058/1804/866 +f 2071/1814/869 2072/1806/869 2073/1813/869 +f 2074/1815/872 2065/1808/872 2075/1816/872 +f 2076/1817/872 2077/1818/872 1988/1738/872 +f 2078/1819/875 2079/1820/875 2080/1821/875 +f 2081/1822/872 1988/1738/872 2077/1818/872 +f 2082/1761/868 2083/1757/868 2084/1823/868 +f 1891/1650/872 2064/1807/872 1988/1738/872 +f 2085/1824/875 2086/1825/875 2087/1826/875 +f 1823/1582/875 2088/1827/875 2086/1825/875 +f 1823/1582/875 1822/1581/875 2088/1827/875 +f 2089/1828/866 2090/1829/866 2091/1826/866 +f 2092/1830/868 2093/1831/868 2094/1832/868 +f 2095/1833/875 2096/1834/875 2097/1835/875 +f 2098/1831/875 2099/1836/875 2100/1832/875 +f 2101/1837/875 2102/1838/875 2100/1832/875 +f 1879/1638/867 1881/1640/867 2103/1839/867 +f 2104/1840/866 2105/1841/866 2106/1842/866 +f 2086/1825/875 2107/1843/875 2087/1826/875 +f 2108/1844/876 2109/1845/876 2110/1846/876 +f 2111/1847/875 2112/1848/875 2113/1849/875 +f 2114/1850/875 2115/1851/875 2116/1852/875 +f 2117/1853/867 2118/1854/867 2119/1855/867 +f 2120/1856/876 2121/1857/876 2122/1858/876 +f 2123/1859/868 2124/1860/868 2125/1861/868 +f 2126/1862/876 2127/1863/876 2128/1864/876 +f 2128/1864/876 2129/1865/876 2126/1862/876 +f 2130/1863/866 2131/1866/866 2132/1867/866 +f 2133/1868/866 2134/1869/866 2135/1870/866 +f 2136/1860/876 2137/1867/876 2138/1866/876 +f 2106/1842/866 1862/1621/866 1861/1620/866 +f 1837/1596/872 1810/1571/872 1835/1594/872 +f 2139/1871/867 2140/1872/867 2141/1873/867 +f 2142/1874/867 2139/1871/867 2141/1873/867 +f 2143/1875/867 2142/1874/867 2141/1873/867 +f 2104/1840/866 2106/1842/866 1861/1620/866 +f 2140/1872/867 2144/1876/867 2141/1873/867 +f 2145/1877/875 2146/1878/875 2147/1879/875 +f 2147/1879/875 2146/1878/875 2148/1880/875 +f 2149/1881/875 2150/1882/875 2151/1883/875 +f 2152/1884/875 2153/1885/875 2149/1881/875 +f 1859/1618/875 2153/1885/875 2154/1886/875 +f 2155/1887/875 2156/1888/875 1858/1617/875 +f 2157/1889/875 2158/1890/875 2156/1888/875 +f 2159/1891/875 2148/1880/875 2158/1890/875 +f 2160/1892/875 2157/1889/875 2156/1888/875 +f 2155/1887/875 2160/1892/875 2156/1888/875 +f 1857/1616/875 2161/1893/875 1858/1617/875 +f 2162/1894/875 2154/1886/875 2153/1885/875 +f 2152/1884/875 2162/1894/875 2153/1885/875 +f 2163/1895/875 2152/1884/875 2149/1881/875 +f 2164/1896/875 2151/1883/875 2150/1882/875 +f 2165/1897/875 2164/1896/875 2150/1882/875 +f 2165/1897/875 2150/1882/875 2148/1880/875 +f 2159/1891/875 2166/1898/875 2148/1880/875 +f 2157/1889/875 2167/1899/875 2158/1890/875 +f 2168/1900/875 2145/1877/875 2147/1879/875 +f 2150/1882/875 2147/1879/875 2148/1880/875 +f 2163/1895/875 2149/1881/875 2151/1883/875 +f 2169/1901/875 1859/1618/875 2154/1886/875 +f 2161/1893/875 2155/1887/875 1858/1617/875 +f 2167/1899/875 2159/1891/875 2158/1890/875 +f 2166/1898/875 2165/1897/875 2148/1880/875 +f 2169/1901/875 1857/1616/875 1859/1618/875 +f 2170/1902/866 2171/1903/866 2172/1904/866 +f 1855/1614/872 1810/1571/872 1809/1570/872 +f 2173/1905/867 2174/1904/867 2175/1903/867 +f 2176/1906/884 2177/1907/884 2178/1903/884 +f 2179/1558/872 2180/1908/872 2181/1909/872 +f 2182/1910/872 2183/1911/872 2184/1912/872 +f 2185/1913/876 2186/1914/876 2187/1915/876 +f 2188/1913/868 1797/1559/868 1796/1558/868 +f 2116/1852/875 2189/1916/875 2095/1833/875 +f 2111/1847/875 2113/1849/875 2116/1852/875 +f 2190/1869/867 2191/1917/867 2192/1918/867 +f 2190/1869/867 2193/1919/867 2194/1920/867 +f 2195/1921/872 2196/1919/872 2197/1869/872 +f 2198/1922/868 2199/1923/868 2123/1859/868 +f 2200/1924/876 2201/1925/876 2202/1926/876 +f 2203/1927/876 2200/1924/876 2204/1928/876 +f 1794/1556/867 1793/1555/867 2205/1929/867 +f 2206/1930/868 2207/1931/868 2208/1932/868 +f 2193/1919/867 2209/1932/867 2210/1933/867 +f 2211/1934/866 2212/1935/866 2213/1936/866 +f 2214/1937/868 2215/1938/868 2216/1939/868 +f 2217/1940/876 2218/1935/876 2219/1941/876 +f 2220/1940/866 2213/1936/866 2212/1935/866 +f 2221/1937/876 2222/1942/876 2223/1938/876 +f 2224/1943/876 2223/1938/876 2222/1942/876 +f 2225/1944/866 2226/1945/866 2227/1946/866 +f 2225/1944/866 1791/1553/866 2226/1945/866 +f 1794/1556/867 2118/1854/867 2228/1947/867 +f 2118/1854/867 2117/1853/867 2228/1947/867 +f 2229/1948/875 1866/1625/875 2230/1949/875 +f 2231/1950/868 2232/1951/868 2233/1952/868 +f 2234/1953/868 2233/1952/868 2232/1951/868 +f 2235/1954/868 2234/1953/868 2232/1951/868 +f 1792/1554/867 1794/1556/867 2228/1947/867 +f 2236/1955/875 2229/1948/875 2230/1949/875 +f 2237/1956/868 2231/1950/868 2233/1952/868 +f 2225/1944/866 1789/1551/866 1791/1553/866 +f 2229/1948/875 1864/1623/875 1866/1625/875 +f 2238/1957/875 2239/1958/875 2240/1959/875 +f 2241/1960/875 2239/1958/875 2242/1961/875 +f 2240/1959/875 2239/1958/875 2243/1962/875 +f 2243/1962/875 2239/1958/875 2244/1963/875 +f 2245/1964/875 2239/1958/875 2241/1960/875 +f 2244/1963/875 2239/1958/875 2246/1965/875 +f 2246/1965/875 2239/1958/875 2247/1966/875 +f 2248/1967/875 2239/1958/875 2245/1964/875 +f 2247/1966/875 2239/1958/875 2249/1968/875 +f 2249/1968/875 2239/1958/875 2250/1969/875 +f 2250/1969/875 2239/1958/875 2248/1967/875 +f 2251/1970/875 2239/1958/875 2238/1957/875 +f 2242/1961/875 2239/1958/875 2252/1971/875 +f 2253/1972/875 2239/1958/875 2251/1970/875 +f 2252/1971/875 2239/1958/875 2254/1973/875 +f 2254/1973/875 2239/1958/875 2253/1972/875 +f 2255/1974/868 2256/1975/868 2257/1976/868 +f 2258/1977/868 2259/1978/868 2257/1976/868 +f 2260/1979/875 2261/1980/875 2262/1981/875 +f 1804/1563/868 1795/1557/868 1797/1559/868 +f 2263/1982/868 1798/1560/868 1800/1562/868 +f 2264/1566/869 1801/1563/869 1803/1565/869 +f 2265/1910/870 1795/1557/870 1805/1566/870 +f 2266/1983/871 1806/1567/871 1808/1569/871 +f 2267/1984/868 1816/1575/868 1818/1577/868 +f 1818/1577/868 2268/1985/868 2267/1984/868 +f 1800/1562/868 1799/1561/868 1831/1590/868 +f 2269/1902/875 1852/1611/875 1854/1613/875 +f 1981/1731/866 1860/1619/866 1851/1610/866 +f 2270/1986/876 1867/1626/876 1869/1628/876 +f 1867/1626/876 1870/1629/876 1868/1627/876 +f 1856/1615/872 1840/1599/872 1836/1595/872 +f 1836/1595/872 1872/1631/872 1856/1615/872 +f 1872/1631/872 1874/1633/872 1873/1632/872 +f 1887/1646/867 1882/1641/867 1884/1643/867 +f 1884/1643/867 1885/1644/867 1887/1646/867 +f 2064/1807/872 1891/1650/872 1893/1652/872 +f 1897/1656/867 1894/1653/867 1896/1655/867 +f 2271/1987/867 1897/1656/867 1898/1657/867 +f 2272/1988/867 1899/1658/867 1901/1660/867 +f 1846/1605/872 1904/1663/872 1906/1665/872 +f 1903/1662/872 1907/1666/872 1873/1632/872 +f 2273/1989/867 1909/1668/867 1911/1670/867 +f 2274/1990/877 1912/1671/877 1914/1673/877 +f 2275/1991/875 1915/1674/875 1917/1676/875 +f 2276/1992/872 1875/1634/872 1918/1677/872 +f 1928/1687/878 1919/1678/878 1921/1680/878 +f 2277/1993/867 1922/1681/867 1924/1683/867 +f 2278/1994/875 1925/1684/875 1927/1686/875 +f 2279/1995/879 1930/1689/879 1932/1691/879 +f 2280/1996/868 1933/1692/868 1935/1671/868 +f 2281/1997/867 1936/1694/867 1938/1696/867 +f 1957/1712/867 1939/1697/867 1941/1699/867 +f 2282/1998/875 1942/1700/875 1944/1702/875 +f 2283/1716/880 1946/1704/880 1948/1688/880 +f 2284/1691/880 1949/1690/880 1951/1706/880 +f 2285/1999/867 1952/1707/867 1954/1709/867 +f 2286/2000/875 1958/1713/875 1960/1715/875 +f 2287/1706/879 1964/1705/879 1966/1719/879 +f 2288/1579/867 1967/1720/867 1969/1722/867 +f 2289/1724/879 1970/1723/879 1962/1717/879 +f 2290/1719/869 1971/1718/869 1973/1724/869 +f 2291/2001/882 1974/1725/882 1976/1727/882 +f 2292/2002/875 1977/1578/875 1979/1729/875 +f 2293/2003/883 1982/1732/883 1984/1734/883 +f 1846/1605/872 1906/1665/872 1847/1606/872 +f 1903/1662/872 1873/1632/872 1847/1606/872 +f 1874/1633/872 1872/1631/872 1988/1738/872 +f 1991/1741/872 1989/1739/872 1847/1606/872 +f 1986/1736/872 1992/1742/872 1847/1606/872 +f 2294/2004/872 1992/1742/872 1993/1743/872 +f 1997/1747/867 1994/1744/867 1996/1746/867 +f 2272/1988/867 1901/1660/867 1997/1747/867 +f 2295/2005/867 1998/1748/867 1894/1653/867 +f 2296/2006/872 2000/1750/872 2002/1752/872 +f 2297/2007/872 2003/1753/872 1872/1631/872 +f 2298/2008/867 2004/1754/867 2006/1756/867 +f 2299/1823/867 2007/1757/867 2009/1759/867 +f 2300/2009/875 2010/1760/875 2012/1762/875 +f 2301/2010/875 2013/1763/875 2015/1765/875 +f 2302/2011/868 2016/1766/868 2018/1768/868 +f 2303/2012/879 2019/1769/879 2021/1771/879 +f 2304/2013/867 2022/1772/867 2024/1774/867 +f 2305/1609/867 2025/1608/867 2027/1776/867 +f 2306/2014/872 1835/1594/872 1889/1648/872 +f 2307/1794/866 2029/1778/866 2031/1780/866 +f 2308/2015/866 2032/1781/866 2034/1672/866 +f 2309/2016/867 2035/1783/867 2037/1785/867 +f 2310/2017/867 2038/1786/867 2040/1788/867 +f 2311/2018/875 2041/1789/875 2043/1791/875 +f 2312/1769/880 2044/1792/880 2046/1777/880 +f 2313/1805/880 2047/1794/880 2049/1795/880 +f 2314/2019/867 2050/1796/867 2052/1798/867 +f 2315/2020/875 2055/1801/875 2057/1803/875 +f 2316/1814/878 2061/1805/878 2063/1806/878 +f 2001/1751/872 1988/1738/872 2002/1752/872 +f 2075/1816/872 2065/1808/872 2001/1751/872 +f 2317/2021/867 2066/1809/867 2068/1811/867 +f 2060/1792/866 2069/1812/866 2058/1804/866 +f 2318/1812/869 2071/1814/869 2073/1813/869 +f 2319/2022/872 2074/1815/872 2075/1816/872 +f 1999/1749/872 2076/1817/872 1988/1738/872 +f 2320/2023/875 2078/1819/875 2080/1821/875 +f 2321/2024/868 2322/2025/868 2323/2026/868 +f 2324/1762/868 2082/1761/868 2084/1823/868 +f 2081/1822/872 1891/1650/872 1988/1738/872 +f 2085/1824/875 1823/1582/875 2086/1825/875 +f 2325/1843/866 2089/1828/866 2091/1826/866 +f 2326/2027/868 2092/1830/868 2094/1832/868 +f 2111/1847/875 2095/1833/875 2097/1835/875 +f 2099/1836/875 2101/1837/875 2100/1832/875 +f 2327/2028/867 1879/1638/867 2103/1839/867 +f 2328/2029/876 2108/1844/876 2110/1846/876 +f 2113/1849/875 2114/1850/875 2116/1852/875 +f 2329/2030/876 2120/1856/876 2122/1858/876 +f 2330/1864/866 2130/1863/866 2132/1867/866 +f 2331/2031/866 2133/1868/866 2135/1870/866 +f 2332/1861/876 2136/1860/876 2138/1866/876 +f 2333/1611/866 2170/1902/866 2172/1904/866 +f 2334/2032/867 2173/1905/867 2175/1903/867 +f 2335/1902/884 2176/1906/884 2178/1903/884 +f 2336/2033/872 2179/1558/872 2181/1909/872 +f 2337/1557/872 2182/1910/872 2184/1912/872 +f 2338/1559/876 2185/1913/876 2187/1915/876 +f 2339/2033/868 2188/1913/868 1796/1558/868 +f 2095/1833/875 2111/1847/875 2116/1852/875 +f 2340/1870/867 2190/1869/867 2192/1918/867 +f 2191/1917/867 2190/1869/867 2194/1920/867 +f 2341/2034/872 2195/1921/872 2197/1869/872 +f 2125/1861/868 2198/1922/868 2123/1859/868 +f 2204/1928/876 2200/1924/876 2202/1926/876 +f 2342/2035/876 2203/1927/876 2204/1928/876 +f 2343/1919/868 2206/1930/868 2208/1932/868 +f 2194/1920/867 2193/1919/867 2210/1933/867 +f 2344/2036/866 2211/1934/866 2213/1936/866 +f 2345/1941/868 2214/1937/868 2216/1939/868 +f 2346/1939/876 2217/1940/876 2219/1941/876 +f 2347/2037/868 2255/1974/868 2257/1976/868 +f 2256/1975/868 2258/1977/868 2257/1976/868 +f 2348/2038/875 2260/1979/875 2262/1981/875 +s 1 +f 2349/2039/885 2350/2040/886 2351/2041/887 +f 2351/2041/887 2352/2042/888 2088/1827/875 +f 2353/2043/889 2354/2044/889 2355/2045/890 +f 2356/2046/891 1881/1640/867 1880/1639/867 +f 2357/2047/892 2358/2048/893 2359/2049/868 +f 2360/2050/894 2361/2051/894 2362/2052/895 +f 2363/1784/868 2364/1783/896 2365/2018/897 +f 2268/1985/868 2366/2053/898 2267/1984/868 +f 2367/2002/899 2368/1720/900 1820/1579/866 +f 2369/2054/901 2354/2044/889 2353/2043/889 +f 2370/2055/902 2371/2056/866 2372/2057/866 +f 1844/1603/866 1843/1602/866 2373/2058/903 +f 2373/2058/903 2374/2059/866 1844/1603/866 +f 2372/2057/866 1832/1591/866 2375/2060/904 +f 1832/1591/866 1834/1593/866 2375/2060/904 +f 1846/1605/872 1845/1604/872 2376/2061/905 +f 2377/2062/872 2378/2063/906 2376/2061/905 +f 2370/2055/902 2372/2057/866 2375/2060/904 +f 2379/2064/907 2380/2065/908 2381/2066/909 +f 2382/2067/910 2383/2068/911 2384/2069/912 +f 2385/2070/913 2386/2071/914 2387/2072/915 +f 2388/2073/916 2389/2074/916 2235/1954/868 +f 2390/2075/917 2391/1858/866 2392/1857/866 +f 2393/1986/918 2394/1628/918 2390/2075/917 +f 2395/2076/919 2396/2077/920 2397/2078/921 +f 2398/2079/922 2399/2080/923 2400/2081/924 +f 2401/2082/919 2402/2083/925 2403/2084/926 +f 2404/2085/927 2405/2086/928 2406/2087/929 +f 2407/2088/930 2408/2089/931 2409/2090/932 +f 2400/2081/924 2410/2091/902 2411/2092/866 +f 2412/2093/866 2413/2094/866 2414/2095/933 +f 2411/2096/866 2412/2093/866 2414/2095/933 +f 2415/2097/934 2416/2098/935 2417/2099/868 +f 2418/2100/936 2419/2101/937 2416/2102/935 +f 2415/2097/934 2417/2099/868 1876/1635/868 +f 2420/2103/938 2421/2104/939 2422/2105/876 +f 2423/2106/940 2424/2107/941 2425/2108/942 +f 2356/2046/891 2426/2109/943 2401/2082/919 +f 2427/2110/944 2040/1788/867 2054/1800/867 +f 2103/1839/867 2428/2111/945 2327/2028/867 +f 2429/1797/868 2430/1796/896 2431/1802/946 +f 2432/2112/947 2433/2113/948 2434/2114/876 +f 2435/2115/949 2436/2116/950 2432/2112/947 +f 2435/2115/949 2437/2117/951 2438/2118/952 +f 2439/2119/953 2440/2120/954 2105/1841/866 +f 2414/2095/933 2441/2121/955 2398/2122/922 +f 2442/2123/933 2443/2124/956 2436/2116/950 +f 2444/2125/876 2434/2114/876 2433/2113/948 +f 2445/2126/957 2446/2127/896 2447/2128/958 +f 2448/2129/959 2449/2130/960 2447/2128/958 +f 2432/2112/947 2447/2128/958 2449/2130/960 +f 2450/2131/961 2448/2129/959 2447/2128/958 +f 2451/2132/962 2452/2133/963 2453/2134/964 +f 2454/2135/938 2455/2136/965 2456/2137/966 +f 2457/2138/967 2458/2139/968 2459/2140/969 +f 2460/2141/866 2461/2142/899 2462/2143/899 +f 2463/2144/970 2464/2145/971 2458/2146/968 +f 2375/2060/904 2465/2147/902 2466/2148/972 +f 2467/2149/973 2468/2150/974 2469/2151/975 +f 2451/2132/962 2470/2152/940 2471/2153/876 +f 2400/2081/924 2414/2154/933 2398/2079/922 +f 2400/2081/924 2399/2080/923 2472/2155/970 +f 2473/2015/941 2474/1672/876 2475/1671/876 +f 2476/2156/976 2477/2157/977 2478/2158/876 +f 2400/2081/924 2479/2159/866 2480/2160/972 +f 2481/1997/866 2482/1702/866 2483/1701/978 +f 2484/2161/979 2485/2162/980 2486/2163/981 +f 2487/2164/982 2486/2163/981 2477/2157/977 +f 2488/2165/875 2489/2166/875 2490/2167/983 +f 2491/2168/984 2492/2169/985 2493/2170/986 +f 2494/2171/987 2424/2107/941 2493/2170/986 +f 2495/2172/876 2496/2173/988 2452/2133/963 +f 2494/2171/987 2497/2174/989 2498/2175/990 +f 2499/2176/944 2492/2169/985 2500/2177/991 +f 2492/2169/985 2497/2174/989 2493/2170/986 +f 2501/2178/992 2373/2058/903 1843/1602/866 +f 2493/2170/986 2502/2179/993 2491/2168/984 +f 2471/2153/876 2452/2133/963 2451/2132/962 +f 2462/2143/899 2461/2142/899 2503/2180/994 +f 2504/2181/995 2505/2182/996 2506/2183/994 +f 2507/1732/958 2508/2003/956 2509/2001/964 +f 2510/2184/997 2511/2185/998 2512/2186/866 +f 2492/2169/985 2491/2168/984 2500/2177/991 +f 2513/2187/996 2514/2188/999 2515/2189/866 +f 2516/1682/866 2517/1684/866 2518/1994/978 +f 2519/2190/996 2520/2191/995 1980/1730/866 +f 2521/2192/923 2456/2137/966 2464/2145/971 +f 2522/2193/1000 2467/2149/973 2523/2194/1001 +f 2468/2150/974 2524/2195/866 2525/2196/866 +f 2526/2197/967 2527/2198/1002 2400/2081/924 +f 2398/2122/922 2421/2104/939 2399/2199/923 +f 2485/2162/980 2484/2161/979 2528/2200/888 +f 2529/1668/866 2530/1676/866 2531/1675/978 +f 2532/2201/867 2533/2202/867 2534/2203/1003 +f 2493/2170/986 2535/2204/940 2502/2179/993 +f 2499/2176/944 2500/2177/991 1955/1710/867 +f 2536/1999/866 2537/1713/866 2538/2000/978 +f 2539/2205/866 2540/2206/899 2541/2207/899 +f 1980/1730/866 1851/1610/866 2519/2190/996 +f 2542/2208/1004 2503/2180/994 2443/2124/956 +f 2543/2209/1004 2544/2210/1005 2443/2124/956 +f 2373/2058/903 2501/2178/992 2453/2134/964 +f 2544/2210/1005 2545/2211/1006 2453/2134/964 +f 2511/2185/998 2510/2184/997 2544/2210/1005 +f 2546/2212/994 2543/2209/1004 2443/2124/956 +f 2514/2188/999 2513/2187/996 2546/2212/994 +f 2547/2213/1004 2548/2214/994 2443/2124/956 +f 2541/2207/899 2540/2206/899 2548/2214/994 +f 2503/2180/994 2547/2213/1004 2443/2124/956 +f 2442/2123/933 2506/2183/994 2443/2124/956 +f 2549/2215/906 2550/2216/1007 2551/1569/1007 +f 2552/2217/942 2553/2218/1008 2554/2219/1009 +f 1799/1561/868 2555/2220/1010 2556/2221/1010 +f 2554/2219/1009 2557/2222/896 2558/2223/959 +f 2559/2224/893 2560/2225/892 2554/2219/1009 +f 2561/2226/893 2562/2227/893 2563/2228/868 +f 2560/2225/892 2557/2222/896 2554/2219/1009 +f 2556/2221/1010 2555/2220/1010 2564/2229/1011 +f 2522/2193/1000 2565/2230/1000 2566/2231/1012 +f 2567/2232/940 2552/2217/942 2495/2172/876 +f 2419/2101/937 2418/2100/936 2456/2233/966 +f 2456/2233/966 2418/2100/936 2464/2234/971 +f 2568/2235/1013 2569/1607/1014 2384/2069/912 +f 2380/2065/908 2379/2064/907 2570/2236/875 +f 2438/2118/952 2436/2116/950 2435/2115/949 +f 2571/2237/976 2572/2238/876 2573/2239/876 +f 2418/2100/936 2415/2240/934 2574/2241/1015 +f 2575/2242/868 2576/2243/959 2366/2053/898 +f 2349/2039/885 2577/2244/1016 2578/2245/1017 +f 2577/2244/1016 2571/2237/976 2579/2246/977 +f 2580/2247/959 2558/2223/959 2557/2222/896 +f 2581/2248/1018 2582/2249/1019 2424/2107/941 +f 2576/2243/959 2445/2126/957 2583/2250/896 +f 2581/2248/1018 2427/2110/944 2584/2251/1020 +f 2494/2171/987 2581/2248/1018 2424/2107/941 +f 2559/2224/893 2553/2218/1008 2323/2026/868 +f 2425/2108/942 2424/2107/941 2582/2249/1019 +f 2496/2173/988 2495/2172/876 2552/2217/942 +f 2561/2226/893 2450/2131/961 2446/2127/896 +f 2357/2047/892 2449/2130/960 2448/2129/959 +f 2585/2252/1021 2586/2253/868 2587/2254/868 +f 2582/2249/1019 2581/2248/1018 2584/2251/1020 +f 2588/2255/1021 2589/2256/868 2590/2257/868 +f 2322/2025/868 2559/2224/893 2323/2026/868 +f 2558/2223/959 2591/2258/896 2447/2128/958 +f 2592/2259/959 2593/2260/957 2591/2258/896 +f 2594/2261/1022 2566/2231/1012 2595/2262/868 +f 2458/2139/968 2464/2234/971 2418/2100/936 +f 2596/1810/868 2597/1809/896 2598/1820/893 +f 2599/2263/1023 2600/2264/1024 2456/2137/966 +f 2349/2039/885 2351/2041/887 2601/2265/1025 +f 2602/2008/959 2603/1765/961 2604/1764/868 +f 2583/2250/896 2445/2126/957 2447/2128/958 +f 2413/2094/866 2605/2266/866 2414/2095/933 +f 2426/2109/943 2402/2083/925 2401/2082/919 +f 2105/1841/866 2104/1840/866 2439/2119/953 +f 2350/2040/886 2606/2267/1026 2352/2042/888 +f 2428/2111/945 2607/2268/1027 2608/1845/1028 +f 2428/2111/945 2103/1839/867 2607/2268/1027 +f 2609/2269/1029 2610/2270/1030 2611/1831/872 +f 2612/2271/889 2613/2272/872 2614/2273/872 +f 2440/2120/954 2439/2119/953 2612/2271/889 +f 2407/2088/930 2409/2090/932 2615/2274/1030 +f 2599/2263/1023 2455/2136/965 2454/2135/938 +f 2416/2102/935 2415/2240/934 2418/2100/936 +f 2421/2104/939 2420/2103/938 2399/2199/923 +f 2396/2077/920 2616/2275/1031 2409/2090/932 +f 2408/2089/931 2617/2276/868 2618/2277/868 +f 2396/2077/920 2395/2076/919 2616/2275/1031 +f 2397/2078/921 2355/2045/890 2395/2076/919 +f 2619/2278/1032 2620/2279/1033 2621/2280/1034 +f 2622/2281/1035 2619/2278/1032 2623/2282/1036 +f 2624/2283/1037 2622/2281/1035 2625/2284/1038 +f 2626/2285/1039 2624/2283/1037 2627/2286/1040 +f 2628/2287/1041 2629/2288/1042 2236/1955/875 +f 2630/2289/1043 2631/2290/1044 2632/2291/1045 +f 2633/2292/1046 2634/2293/1046 2632/2291/1045 +f 2635/2294/1047 2636/2295/1048 2629/2288/1042 +f 2637/2296/1049 2638/2297/1050 2636/2295/1048 +f 2639/2298/1051 2634/2293/1046 2633/2292/1046 +f 2640/2299/1052 2641/2300/1053 2642/2301/1054 +f 2641/2300/1053 2643/2302/1055 2644/2303/1056 +f 2643/2302/1055 2645/2304/1057 2646/2305/1058 +f 2645/2304/1057 2647/2306/1059 2648/2307/1060 +f 2647/2306/1059 2649/2308/1061 2650/2309/1062 +f 2651/2310/1063 2652/2311/1064 2653/2312/1065 +f 2654/2313/1066 2655/2314/1066 2653/2312/1065 +f 2656/2315/1067 2657/2316/1067 2658/2317/1050 +f 2659/2318/1068 2655/2314/1066 2654/2313/1066 +f 2620/2279/1033 2659/2318/1068 2660/2319/1069 +f 2656/2315/1067 2661/2320/1070 2657/2316/1067 +f 2662/2321/1071 2663/2322/1072 2661/2320/1070 +f 2664/2323/1073 2665/2324/1074 2661/2320/1070 +f 2666/2325/1075 2667/2326/1075 2665/2324/1074 +f 2668/2327/1076 2669/2328/1077 2670/2329/1077 +f 2671/2330/1078 2672/2331/1078 2670/2329/1077 +f 2673/2036/1079 2674/1923/1080 2675/1922/876 +f 2676/2332/1081 2677/2333/1082 2678/2334/1083 +f 2679/2335/1084 2680/2336/1085 2678/2334/1083 +f 2677/2333/1082 2681/2337/1086 2679/2335/1084 +f 2682/2338/1087 2681/2337/1086 2677/2333/1082 +f 2683/2339/1088 2684/2340/1089 2681/2337/1086 +f 2685/2341/1090 2686/2342/1090 2687/2343/1091 +f 2688/2344/1092 2687/2343/1091 2684/2340/1089 +f 1863/1622/866 2369/2054/901 2689/2345/1093 +f 2690/2346/1094 2386/2071/914 2691/2347/1095 +f 2692/2348/1096 2693/2349/1097 2690/2346/1094 +f 2694/2350/1098 2695/2351/1099 2693/2349/1097 +f 2143/1875/867 2141/1873/867 2695/2351/1099 +f 2144/1876/867 2387/2072/915 2141/1873/867 +f 2696/2352/1100 2385/2070/913 2387/2072/915 +f 2697/2353/1101 2696/2352/1100 2387/2072/915 +f 2698/2354/1102 2697/2353/1101 2387/2072/915 +f 2144/1876/867 2698/2354/1102 2387/2072/915 +f 2699/2355/1103 2143/1875/867 2695/2351/1099 +f 2694/2350/1098 2699/2355/1103 2695/2351/1099 +f 2692/2348/1096 2700/2356/1104 2693/2349/1097 +f 2701/2357/1105 2692/2348/1096 2690/2346/1094 +f 2702/2358/1106 2691/2347/1095 2386/2071/914 +f 2385/2070/913 2702/2358/1106 2386/2071/914 +f 1861/1620/866 1863/1622/866 2689/2345/1093 +f 2701/2357/1105 2690/2346/1094 2691/2347/1095 +f 2700/2356/1104 2694/2350/1098 2693/2349/1097 +f 2381/2066/909 2382/2067/910 2703/2359/1107 +f 2360/2050/894 2188/1913/868 2339/2033/868 +f 2704/2236/897 2705/2064/894 2706/1772/868 +f 2707/2360/875 2708/2361/875 2676/2332/1081 +f 2709/2362/1108 2710/2363/1108 2711/1856/868 +f 2712/1925/1109 2710/2363/1108 2709/2362/1108 +f 2713/2364/1110 2714/2365/1111 2230/1949/875 +f 2715/2366/1112 2714/2365/1111 2713/2364/1110 +f 2716/2367/1113 2715/2366/1112 2717/2368/1114 +f 2662/2321/1071 2718/2369/1115 2719/2370/1116 +f 2663/2322/1072 2662/2321/1071 2720/2371/1117 +f 2682/2338/1087 2721/2372/1118 2722/2373/1084 +f 2388/2073/916 2668/2327/1076 2723/2374/1119 +f 2724/2375/875 2725/2376/1083 2726/2377/1081 +f 2721/2372/1118 2726/2377/1081 2725/2376/1083 +f 2722/2373/1084 2721/2372/1118 2725/2376/1083 +f 2227/1946/866 2672/2331/1078 2671/2330/1078 +f 2230/1949/875 2714/2365/1111 2628/2287/1041 +f 2225/1944/866 2227/1946/866 2671/2330/1078 +f 2236/1955/875 2230/1949/875 2628/2287/1041 +f 2232/1951/868 2388/2073/916 2235/1954/868 +f 2548/2214/994 2727/2378/1004 2443/2124/956 +f 2544/2210/1005 2453/2134/964 2443/2124/956 +f 2591/2258/896 2593/2260/957 2447/2128/958 +f 2558/2223/959 2447/2128/958 2554/2219/1009 +f 2728/1957/1068 2729/1959/1120 2730/2379/1121 +f 2729/1959/1120 2731/1962/1122 2732/2380/1123 +f 2733/1964/1124 2734/1960/1125 2735/2381/1126 +f 2731/1962/1122 2736/1963/1062 2737/2382/1063 +f 2736/1963/1062 2738/1965/1060 2739/2383/1059 +f 2740/1967/1051 2733/1964/1124 2741/2384/1127 +f 2738/1965/1060 2742/1966/1128 2743/2385/1057 +f 2742/1966/1128 2744/1968/1056 2745/2386/1055 +f 2746/1969/1129 2740/1967/1051 2747/2387/1052 +f 2744/1968/1056 2746/1969/1129 2748/2388/1130 +f 2749/1971/1037 2750/1973/1035 2751/2389/1038 +f 2752/1972/1032 2753/1970/1033 2754/2390/1131 +f 2755/1961/1039 2749/1971/1037 2756/2391/1040 +f 2734/1960/1125 2755/1961/1039 2757/2392/1132 +f 2753/1970/1033 2728/1957/1068 2758/2393/1069 +f 2750/1973/1035 2752/1972/1032 2759/2394/1036 +f 2760/2395/1133 2761/2396/1134 2762/2397/1135 +f 2763/2398/1136 2764/2399/1137 2765/2400/1138 +f 2766/2401/1139 2767/2402/1140 2768/1980/876 +f 2769/2403/872 2770/2404/872 2761/2396/1134 +f 2764/2399/1137 2763/2398/1136 2767/2402/1140 +f 1822/1581/875 2351/2041/887 2088/1827/875 +f 2397/2078/921 2353/2043/889 2355/2045/890 +f 2426/2109/943 2356/2046/891 1880/1639/867 +f 2771/2405/868 2357/2047/892 2359/2049/868 +f 2772/2406/1141 2360/2050/894 2362/2052/895 +f 2773/1791/868 2363/1784/868 2365/2018/897 +f 1819/1578/866 2367/2002/899 1820/1579/866 +f 2689/2345/1093 2369/2054/901 2353/2043/889 +f 1845/1604/872 2377/2062/872 2376/2061/905 +f 2774/2069/1142 1848/1607/868 1850/1609/868 +f 2775/2407/1143 2379/2064/907 2381/2066/909 +f 2703/2359/1107 2382/2067/910 2384/2069/912 +f 2776/2408/917 2390/2075/917 2392/1857/866 +f 2776/2408/917 2393/1986/918 2390/2075/917 +f 2406/2087/929 2401/2082/919 2403/2084/926 +f 2403/2084/926 2404/2085/927 2406/2087/929 +f 2414/2154/933 2400/2081/924 2411/2092/866 +f 1878/1637/868 2415/2097/934 1876/1635/868 +f 2584/2251/1020 2427/2110/944 2054/1800/867 +f 2777/1801/868 2429/1797/868 2431/1802/946 +f 2434/2114/876 2435/2115/949 2432/2112/947 +f 2438/2118/952 2442/2123/933 2436/2116/950 +f 2433/2113/948 2432/2112/947 2449/2130/960 +f 2446/2127/896 2450/2131/961 2447/2128/958 +f 2501/2178/992 2451/2132/962 2453/2134/964 +f 2521/2192/923 2454/2135/938 2456/2137/966 +f 2778/2409/1144 2457/2138/967 2459/2140/969 +f 2779/2410/866 2460/2141/866 2462/2143/899 +f 2457/2411/967 2463/2144/970 2458/2146/968 +f 2370/2055/902 2375/2060/904 2466/2148/972 +f 2523/2194/1001 2467/2149/973 2469/2151/975 +f 2780/1693/1145 2473/2015/941 2475/1671/876 +f 2781/2412/876 2476/2156/976 2478/2158/876 +f 2410/2091/902 2400/2081/924 2480/2160/972 +f 2782/1694/1146 2481/1997/866 2483/1701/978 +f 2487/2164/982 2484/2161/979 2486/2163/981 +f 2476/2156/976 2487/2164/982 2477/2157/977 +f 2528/2200/888 2488/2165/875 2490/2167/983 +f 2497/2174/989 2494/2171/987 2493/2170/986 +f 2471/2153/876 2495/2172/876 2452/2133/963 +f 2534/2203/1003 2494/2171/987 2498/2175/990 +f 2542/2208/1004 2462/2143/899 2503/2180/994 +f 2442/2123/933 2504/2181/995 2506/2183/994 +f 2783/1727/1147 2507/1732/958 2509/2001/964 +f 2784/2413/866 2510/2184/997 2512/2186/866 +f 2785/2414/866 2513/2187/996 2515/2189/866 +f 2786/1683/1146 2516/1682/866 2518/1994/978 +f 2463/2144/970 2521/2192/923 2464/2145/971 +f 2565/2230/1000 2522/2193/1000 2523/2194/1001 +f 2469/2151/975 2468/2150/974 2525/2196/866 +f 2472/2155/970 2526/2197/967 2400/2081/924 +f 2490/2167/983 2485/2162/980 2528/2200/888 +f 2787/1669/1148 2529/1668/866 2531/1675/978 +f 2498/2175/990 2532/2201/867 2534/2203/1003 +f 1941/1699/867 2499/2176/944 1955/1710/867 +f 2788/1707/1146 2536/1999/866 2538/2000/978 +f 2789/2415/866 2539/2205/866 2541/2207/899 +f 2506/2183/994 2542/2208/1004 2443/2124/956 +f 2545/2211/1006 2373/2058/903 2453/2134/964 +f 2543/2209/1004 2511/2185/998 2544/2210/1005 +f 2727/2378/1004 2546/2212/994 2443/2124/956 +f 2727/2378/1004 2514/2188/999 2546/2212/994 +f 2547/2213/1004 2541/2207/899 2548/2214/994 +f 2790/1573/1149 2549/2215/906 2551/1569/1007 +f 2496/2173/988 2552/2217/942 2554/2219/1009 +f 1830/1589/868 1799/1561/868 2556/2221/1010 +f 2553/2218/1008 2559/2224/893 2554/2219/1009 +f 2791/2416/868 2561/2226/893 2563/2228/868 +f 2792/2417/1150 2556/2221/1010 2564/2229/1011 +f 2594/2261/1022 2522/2193/1000 2566/2231/1012 +f 2600/2264/1024 2419/2418/937 2456/2137/966 +f 2383/2068/911 2568/2235/1013 2384/2069/912 +f 2793/2419/875 2380/2065/908 2570/2236/875 +f 2579/2246/977 2571/2237/976 2573/2239/876 +f 2794/2420/1151 2418/2100/936 2574/2241/1015 +f 2268/1985/868 2575/2242/868 2366/2053/898 +f 2350/2040/886 2349/2039/885 2578/2245/1017 +f 2578/2245/1017 2577/2244/1016 2579/2246/977 +f 2585/2252/1021 2580/2247/959 2557/2222/896 +f 2366/2053/898 2576/2243/959 2583/2250/896 +f 2562/2227/893 2561/2226/893 2446/2127/896 +f 2358/2048/893 2357/2047/892 2448/2129/959 +f 2580/2247/959 2585/2252/1021 2587/2254/868 +f 2592/2259/959 2588/2255/1021 2590/2257/868 +f 2588/2255/1021 2592/2259/959 2591/2258/896 +f 2795/2421/868 2594/2261/1022 2595/2262/868 +f 2459/2140/969 2458/2139/968 2418/2100/936 +f 2796/1819/868 2596/1810/868 2598/1820/893 +f 2455/2136/965 2599/2263/1023 2456/2137/966 +f 2797/1754/868 2602/2008/959 2604/1764/868 +f 2593/2260/957 2583/2250/896 2447/2128/958 +f 2351/2041/887 2350/2040/886 2352/2042/888 +f 2798/1844/1028 2428/2111/945 2608/1845/1028 +f 2799/1830/872 2609/2269/1029 2611/1831/872 +f 2800/2422/889 2612/2271/889 2614/2273/872 +f 2800/2422/889 2440/2120/954 2612/2271/889 +f 2801/2423/876 2599/2263/1023 2454/2135/938 +f 2408/2089/931 2396/2077/920 2409/2090/932 +f 2396/2077/920 2408/2089/931 2618/2277/868 +f 2623/2282/1036 2619/2278/1032 2621/2280/1034 +f 2625/2284/1038 2622/2281/1035 2623/2282/1036 +f 2627/2286/1040 2624/2283/1037 2625/2284/1038 +f 2630/2289/1043 2626/2285/1039 2627/2286/1040 +f 2626/2285/1039 2630/2289/1043 2632/2291/1045 +f 2631/2290/1044 2633/2292/1046 2632/2291/1045 +f 2628/2287/1041 2635/2294/1047 2629/2288/1042 +f 2635/2294/1047 2637/2296/1049 2636/2295/1048 +f 2640/2299/1052 2639/2298/1051 2633/2292/1046 +f 2639/2298/1051 2640/2299/1052 2642/2301/1054 +f 2642/2301/1054 2641/2300/1053 2644/2303/1056 +f 2644/2303/1056 2643/2302/1055 2646/2305/1058 +f 2646/2305/1058 2645/2304/1057 2648/2307/1060 +f 2648/2307/1060 2647/2306/1059 2650/2309/1062 +f 2802/2424/1152 2651/2310/1063 2653/2312/1065 +f 2652/2311/1064 2654/2313/1066 2653/2312/1065 +f 2803/2425/1153 2656/2315/1067 2658/2317/1050 +f 2660/2319/1069 2659/2318/1068 2654/2313/1066 +f 2621/2280/1034 2620/2279/1033 2660/2319/1069 +f 2656/2315/1067 2662/2321/1071 2661/2320/1070 +f 2663/2322/1072 2664/2323/1073 2661/2320/1070 +f 2664/2323/1073 2666/2325/1075 2665/2324/1074 +f 2723/2374/1119 2668/2327/1076 2670/2329/1077 +f 2669/2328/1077 2671/2330/1078 2670/2329/1077 +f 2804/1934/876 2673/2036/1079 2675/1922/876 +f 2677/2333/1082 2679/2335/1084 2678/2334/1083 +f 2721/2372/1118 2682/2338/1087 2677/2333/1082 +f 2682/2338/1087 2683/2339/1088 2681/2337/1086 +f 2688/2344/1092 2685/2341/1090 2687/2343/1091 +f 2683/2339/1088 2688/2344/1092 2684/2340/1089 +f 2775/2407/1143 2381/2066/909 2703/2359/1107 +f 2361/2051/894 2360/2050/894 2339/2033/868 +f 2805/2013/896 2704/2236/897 2706/1772/868 +f 2678/2334/1083 2707/2360/875 2676/2332/1081 +f 2806/2030/868 2709/2362/1108 2711/1856/868 +f 2807/1926/1109 2712/1925/1109 2709/2362/1108 +f 2717/2368/1114 2715/2366/1112 2713/2364/1110 +f 2808/2426/1116 2716/2367/1113 2717/2368/1114 +f 2720/2371/1117 2662/2321/1071 2719/2370/1116 +f 2389/2074/916 2388/2073/916 2723/2374/1119 +f 2809/2427/875 2724/2375/875 2726/2377/1081 +f 2810/2428/1085 2722/2373/1084 2725/2376/1083 +f 2758/2393/1069 2728/1957/1068 2730/2379/1121 +f 2730/2379/1121 2729/1959/1120 2732/2380/1123 +f 2741/2384/1127 2733/1964/1124 2735/2381/1126 +f 2732/2380/1123 2731/1962/1122 2737/2382/1063 +f 2737/2382/1063 2736/1963/1062 2739/2383/1059 +f 2747/2387/1052 2740/1967/1051 2741/2384/1127 +f 2739/2383/1059 2738/1965/1060 2743/2385/1057 +f 2743/2385/1057 2742/1966/1128 2745/2386/1055 +f 2748/2388/1130 2746/1969/1129 2747/2387/1052 +f 2745/2386/1055 2744/1968/1056 2748/2388/1130 +f 2756/2391/1040 2749/1971/1037 2751/2389/1038 +f 2759/2394/1036 2752/1972/1032 2754/2390/1131 +f 2757/2392/1132 2755/1961/1039 2756/2391/1040 +f 2735/2381/1126 2734/1960/1125 2757/2392/1132 +f 2754/2390/1131 2753/1970/1033 2758/2393/1069 +f 2751/2389/1038 2750/1973/1035 2759/2394/1036 +f 2765/2400/1138 2760/2395/1133 2762/2397/1135 +f 2762/2397/1135 2763/2398/1136 2765/2400/1138 +f 2811/1979/876 2766/2401/1139 2768/1980/876 +f 2760/2395/1133 2769/2403/872 2761/2396/1134 +f 2766/2401/1139 2764/2399/1137 2767/2402/1140 +o trigger_pistol_0 +v 0.255916 1.582615 6.859656 +v 0.255916 1.449703 6.660409 +v 0.255916 1.810704 6.457509 +v 0.255916 2.466018 6.344805 +v 0.255916 1.892926 6.633237 +v 0.577175 1.435799 6.186546 +v 0.577175 1.810704 6.457509 +v 0.577175 1.449703 6.660409 +v 0.577175 3.484048 5.722968 +v 0.577175 3.243770 6.479858 +v 0.577175 2.895700 6.381779 +v 0.577175 1.924940 5.885275 +v 0.577175 2.439333 5.691723 +v 0.577175 2.466018 6.344805 +v 0.577175 3.484048 5.722968 +v 0.401255 3.484048 5.722968 +v 0.401255 3.243770 6.479858 +v 0.401255 3.588840 6.684443 +v 0.401255 3.243770 6.479858 +v 0.401255 3.484048 5.722968 +v 0.401255 4.331120 5.796535 +v 0.401255 4.331120 7.553139 +v 0.401255 3.911054 6.978125 +v 0.401255 4.776393 4.607953 +v 0.401255 5.500355 4.607955 +v 0.401255 5.500353 7.553141 +v -0.401255 4.331120 5.796535 +v -0.401255 4.776393 4.607953 +v 0.401255 4.776393 4.607953 +v -0.401255 5.500355 4.607955 +v 0.401255 5.500355 4.607955 +v 0.401255 4.776393 4.607953 +v 0.577175 2.851677 5.639833 +v -0.577175 3.484048 5.722968 +v -0.577175 3.243770 6.479858 +v -0.401255 3.243770 6.479858 +v -0.255916 1.582615 6.859656 +v -0.255916 1.892926 6.633237 +v -0.255916 1.810704 6.457509 +v -0.401255 3.243770 6.479858 +v -0.401255 3.588840 6.684443 +v -0.401255 3.484048 5.722968 +v -0.401255 4.331120 7.553139 +v -0.401255 4.331120 5.796535 +v -0.401255 3.911054 6.978125 +v -0.401255 4.776393 4.607953 +v -0.401255 5.500355 4.607955 +v -0.401255 5.500353 7.553141 +v -0.255916 2.466018 6.344805 +v -0.577175 2.466018 6.344805 +v -0.577175 2.895700 6.381779 +v -0.577175 2.851677 5.639833 +v -0.577175 1.810704 6.457509 +v -0.577175 1.435799 6.186546 +v -0.577175 1.449703 6.660409 +v -0.577175 3.484048 5.722968 +v -0.577175 1.924940 5.885275 +v -0.577175 2.439333 5.691723 +v 0.577175 3.243770 6.479858 +v 0.401255 4.331120 5.796535 +v -0.401255 4.776393 4.607953 +v -0.401255 3.484048 5.722968 +v -0.255916 1.449703 6.660409 +v -0.577175 3.243770 6.479858 +v -0.255916 1.892926 6.633237 +v 0.255916 1.892926 6.633237 +v 0.255916 2.466018 6.344805 +v 0.577175 2.895700 6.381779 +v 0.577175 3.243770 6.479858 +v 0.401255 3.243770 6.479858 +v -0.401255 3.243770 6.479858 +v -0.577175 2.895700 6.381779 +v -0.136434 1.170199 7.267153 +v 0.136434 1.170199 7.267153 +v 0.255916 1.274902 7.159120 +v -0.255916 1.274902 7.159120 +v 0.255916 1.582615 6.859656 +v -0.255916 1.582615 6.859656 +v -0.136434 1.170199 7.267153 +v -0.140214 0.908800 7.158844 +v 0.140214 0.908800 7.158844 +v 0.255916 1.049089 7.041913 +v 0.255916 1.274902 7.159120 +v 0.136434 1.170199 7.267153 +v 0.255916 2.466018 6.344805 +v 0.577175 2.466018 6.344805 +v 0.577175 1.049089 7.041913 +v 0.255916 1.049089 7.041913 +v 0.140214 0.908800 7.158844 +v -0.140214 0.908800 7.158844 +v -0.238265 0.780517 7.270253 +v 0.238265 0.780517 7.270253 +v 0.577175 1.810704 6.457509 +v 0.255916 1.810704 6.457509 +v 0.255916 1.449703 6.660409 +v 0.577175 1.449703 6.660409 +v -0.242153 0.574700 7.190140 +v 0.242153 0.574700 7.190140 +v 0.238265 0.780517 7.270253 +v 0.557295 0.748790 6.906375 +v 0.577175 1.049089 7.041913 +v 0.577175 1.022907 6.562050 +v -0.255916 2.466018 6.344805 +v -0.401255 4.331120 5.796535 +v 0.401255 4.331120 5.796535 +v 0.401255 3.484048 5.722968 +v 0.401255 3.588840 6.684443 +v -0.401255 3.588840 6.684443 +v 0.401255 3.911054 6.978125 +v 0.401255 4.331120 7.553139 +v -0.401255 4.331120 7.553139 +v -0.401255 3.911054 6.978125 +v 0.401255 5.500353 7.553141 +v -0.401255 5.500353 7.553141 +v 0.577175 2.851677 5.639833 +v 0.577175 3.484048 5.722968 +v -0.577175 2.851677 5.639833 +v -0.401255 3.484048 5.722968 +v 0.577175 1.022907 6.562050 +v -0.577175 1.022907 6.562050 +v -0.577175 1.435799 6.186546 +v 0.577175 1.435799 6.186546 +v -0.577175 1.924940 5.885275 +v -0.577175 2.439333 5.691723 +v 0.577175 2.439333 5.691723 +v 0.577175 1.924940 5.885275 +v 0.242153 0.574700 7.190140 +v -0.242153 0.574700 7.190140 +v -0.557295 0.748790 6.906375 +v 0.557295 0.748790 6.906375 +v -0.577175 3.243770 6.479858 +v -0.255916 1.049089 7.041913 +v -0.577175 2.466018 6.344805 +v -0.255916 1.274902 7.159120 +v -0.577175 1.049089 7.041913 +v -0.577175 3.484048 5.722968 +v -0.577175 1.810704 6.457509 +v -0.577175 1.449703 6.660409 +v -0.255916 1.449703 6.660409 +v -0.255916 1.810704 6.457509 +v -0.255916 1.049089 7.041913 +v -0.557295 0.748790 6.906375 +v -0.238265 0.780517 7.270253 +v -0.577175 1.022907 6.562050 +v -0.577175 1.049089 7.041913 +v -0.255916 2.466018 6.344805 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 0.9531 0.3026 +vn -0.0000 -0.9364 -0.3508 +vn -0.0000 -0.0000 -1.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 0.4977 0.8674 +vn -0.0000 0.5444 0.8388 +vn -0.0000 0.1395 0.9902 +vn -0.0000 -0.1979 0.9802 +vn -0.0000 -0.2712 0.9625 +vn -0.0000 -0.3535 0.9354 +vn -0.0000 -0.3697 0.9291 +vn -0.0000 -0.1606 0.9870 +vn -0.0000 0.7181 0.6960 +vn -0.0000 0.7113 0.7029 +vn -0.0000 0.7044 0.7098 +vn -0.0000 0.6629 0.7487 +vn -0.0000 0.6268 0.7792 +vn -0.4404 -0.3550 0.8247 +vn -0.4552 -0.3352 0.8249 +vn 0.2991 -0.3616 0.8831 +vn 0.9038 -0.1780 0.3893 +vn 0.9745 -0.1034 0.1993 +vn 0.5796 -0.3268 0.7465 +vn 0.0001 0.1395 0.9902 +vn -0.0000 0.0850 0.9964 +vn -0.0023 0.6611 0.7503 +vn -0.0000 0.6735 0.7392 +vn -0.0023 0.6496 0.7603 +vn 0.0017 0.6512 0.7589 +vn 0.0038 0.6541 0.7564 +vn -0.0023 0.6547 0.7559 +vn -0.0000 0.3882 0.9216 +vn -0.0000 0.2799 0.9600 +vn -0.0000 0.5604 0.8282 +vn -0.0000 0.6274 0.7787 +vn -0.2580 -0.3462 0.9020 +vn 0.3908 -0.3275 0.8603 +vn 0.3829 -0.3520 0.8541 +vn 0.8580 -0.2283 0.4601 +vn 0.9627 -0.1436 0.2294 +vn 0.9997 -0.0226 0.0012 +vn -0.0000 0.1148 0.9934 +vn -0.0000 0.0865 -0.9963 +vn -0.0000 0.1129 -0.9936 +vn -0.0000 -0.5671 0.8236 +vn -0.0000 -0.6219 0.7831 +vn -0.0000 -0.7215 0.6924 +vn -0.0001 -0.5953 0.8035 +vn 0.0001 -0.2977 0.9547 +vn -0.0000 -0.7663 0.6425 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 0.0456 -0.9990 +vn -0.0000 0.1303 -0.9915 +vn -0.0000 0.0285 -0.9996 +vn -0.0000 0.1158 -0.9933 +vn -0.0000 -0.7114 -0.7028 +vn -0.0000 -0.7480 -0.6637 +vn -0.0000 -0.6258 -0.7800 +vn -0.0000 -0.5761 -0.8174 +vn -0.0000 -0.4689 -0.8832 +vn -0.0000 -0.2781 -0.9606 +vn -0.0000 -0.2019 -0.9794 +vn -0.0000 -0.4113 -0.9115 +vn -0.0000 -0.8524 -0.5229 +vn -0.0000 -0.8304 -0.5572 +vn -0.0000 -0.8071 -0.5904 +vn -0.9038 -0.1780 0.3893 +vn -0.9745 -0.1034 0.1993 +vn 0.0023 0.6611 0.7503 +vn -0.8580 -0.2283 0.4601 +vn -0.5059 -0.3351 0.7948 +vn -0.9997 -0.0226 0.0012 +vn -0.9627 -0.1436 0.2294 +vn -0.0000 0.1149 0.9934 +vt 0.482997 0.972676 +vt 0.483169 0.972693 +vt 0.483177 0.972380 +vt 0.483034 0.971858 +vt 0.483023 0.972386 +vt 0.471310 0.981774 +vt 0.471246 0.981454 +vt 0.471009 0.981626 +vt 0.472210 0.980596 +vt 0.471654 0.980527 +vt 0.471614 0.980779 +vt 0.471647 0.981549 +vt 0.471923 0.981275 +vt 0.471511 0.981066 +vt 0.472225 0.980472 +vt 0.471669 0.980404 +vt 0.471639 0.980122 +vt 0.472428 0.979907 +vt 0.471300 0.979390 +vt 0.471545 0.979829 +vt 0.473322 0.979971 +vt 0.473535 0.979507 +vt 0.471644 0.978639 +vt 0.480249 0.946278 +vt 0.480249 0.945382 +vt 0.480816 0.945382 +vt 0.480249 0.944870 +vt 0.480816 0.944870 +vt 0.472077 0.981026 +vt 0.468113 0.980573 +vt 0.468670 0.980511 +vt 0.468657 0.980387 +vt 0.482644 0.972678 +vt 0.482622 0.972386 +vt 0.482468 0.972377 +vt 0.468690 0.980106 +vt 0.468100 0.980449 +vt 0.469037 0.979378 +vt 0.467904 0.979882 +vt 0.468786 0.979814 +vt 0.467009 0.979936 +vt 0.466802 0.979469 +vt 0.468701 0.978624 +vt 0.482618 0.971864 +vt 0.468807 0.981051 +vt 0.468707 0.980763 +vt 0.468241 0.981005 +vt 0.469067 0.981441 +vt 0.469000 0.981761 +vt 0.469302 0.981616 +vt 0.468666 0.981532 +vt 0.468393 0.981256 +vt 0.480816 0.946278 +vt 0.482469 0.972694 +vt 0.480078 0.973332 +vt 0.480077 0.973077 +vt 0.479953 0.973077 +vt 0.479387 0.973079 +vt 0.479263 0.973334 +vt 0.482753 0.972998 +vt 0.482894 0.972996 +vt 0.482958 0.972932 +vt 0.482686 0.972938 +vt 0.482726 0.973162 +vt 0.482929 0.973155 +vt 0.483051 0.973046 +vt 0.479852 0.973637 +vt 0.480079 0.973637 +vt 0.480081 0.974789 +vt 0.479855 0.974790 +vt 0.479773 0.974919 +vt 0.479575 0.974919 +vt 0.479506 0.975040 +vt 0.479843 0.975039 +vt 0.480080 0.974106 +vt 0.479853 0.974107 +vt 0.479854 0.974399 +vt 0.480081 0.974399 +vt 0.469982 0.982043 +vt 0.470324 0.982045 +vt 0.470322 0.981889 +vt 0.470645 0.982004 +vt 0.470647 0.981771 +vt 0.470947 0.981928 +vt 0.479491 0.973638 +vt 0.480816 0.946878 +vt 0.479953 0.972794 +vt 0.479386 0.972795 +vt 0.479952 0.972486 +vt 0.479951 0.971983 +vt 0.479384 0.971985 +vt 0.479385 0.972488 +vt 0.479949 0.971158 +vt 0.479382 0.971159 +vt 0.480940 0.947328 +vt 0.480940 0.946878 +vt 0.480125 0.947328 +vt 0.480249 0.946878 +vt 0.480940 0.948810 +vt 0.480125 0.948810 +vt 0.480125 0.948416 +vt 0.480940 0.948415 +vt 0.480125 0.948010 +vt 0.480125 0.947622 +vt 0.480940 0.947622 +vt 0.480940 0.948010 +vt 0.480704 0.949355 +vt 0.480362 0.949355 +vt 0.480139 0.949120 +vt 0.480926 0.949120 +vt 0.479262 0.973079 +vt 0.482592 0.973062 +vt 0.479264 0.973639 +vt 0.479266 0.974791 +vt 0.480125 0.946878 +vt 0.479265 0.974108 +vt 0.479265 0.974401 +vt 0.479492 0.974400 +vt 0.479492 0.974108 +vt 0.479493 0.974791 +vt 0.469662 0.981998 +vt 0.469986 0.981887 +vt 0.469361 0.981919 +vt 0.469663 0.981765 +s 0 +f 2812/2429/1154 2813/2430/1154 2814/2431/1154 +f 2814/2431/1154 2815/2432/1154 2816/2433/1154 +f 2817/2434/1154 2818/2435/1154 2819/2436/1154 +f 2820/2437/1154 2821/2438/1154 2822/2439/1154 +f 2817/2434/1154 2823/2440/1154 2818/2435/1154 +f 2824/2441/1154 2825/2442/1154 2818/2435/1154 +f 2826/2437/1155 2827/2443/1155 2828/2444/1155 +f 2829/2445/1154 2830/2444/1154 2831/2443/1154 +f 2832/2446/1154 2833/2447/1154 2834/2448/1154 +f 2829/2445/1154 2831/2443/1154 2832/2446/1154 +f 2832/2446/1154 2835/2449/1154 2836/2450/1154 +f 2837/2451/1154 2833/2447/1154 2832/2446/1154 +f 2838/2452/1156 2839/2453/1156 2840/2454/1156 +f 2841/2455/1157 2842/2456/1157 2843/2454/1157 +f 2825/2442/1154 2824/2441/1154 2844/2457/1154 +f 2845/2458/1155 2846/2459/1155 2847/2460/1155 +f 2848/2461/1158 2849/2462/1158 2850/2463/1158 +f 2851/2460/1158 2852/2464/1158 2853/2465/1158 +f 2854/2466/1158 2855/2467/1158 2856/2468/1158 +f 2852/2464/1158 2856/2468/1158 2855/2467/1158 +f 2857/2469/1158 2855/2467/1158 2858/2470/1158 +f 2859/2471/1158 2858/2470/1158 2855/2467/1158 +f 2860/2472/1158 2850/2463/1158 2849/2462/1158 +f 2861/2473/1158 2862/2474/1158 2863/2475/1158 +f 2864/2476/1158 2865/2477/1158 2866/2478/1158 +f 2867/2458/1158 2863/2475/1158 2862/2474/1158 +f 2868/2479/1158 2865/2477/1158 2864/2476/1158 +f 2869/2480/1158 2868/2479/1158 2864/2476/1158 +f 2816/2433/1154 2812/2429/1154 2814/2431/1154 +f 2844/2457/1154 2820/2437/1154 2822/2439/1154 +f 2823/2440/1154 2824/2441/1154 2818/2435/1154 +f 2870/2438/1155 2826/2437/1155 2828/2444/1155 +f 2834/2448/1154 2829/2445/1154 2832/2446/1154 +f 2836/2450/1154 2837/2451/1154 2832/2446/1154 +f 2871/2481/1156 2838/2452/1156 2840/2454/1156 +f 2872/2453/1157 2841/2455/1157 2843/2454/1157 +f 2822/2439/1154 2825/2442/1154 2844/2457/1154 +f 2873/2465/1155 2845/2458/1155 2847/2460/1155 +f 2874/2482/1158 2848/2461/1158 2850/2463/1158 +f 2853/2465/1158 2852/2464/1158 2855/2467/1158 +f 2854/2466/1158 2859/2471/1158 2855/2467/1158 +f 2869/2480/1158 2861/2473/1158 2863/2475/1158 +f 2875/2459/1158 2867/2458/1158 2862/2474/1158 +f 2861/2473/1158 2869/2480/1158 2864/2476/1158 +s 1 +f 2876/2462/1159 2877/2433/1160 2878/2432/1161 +f 2879/2483/1162 2880/2484/1163 2881/2485/1164 +f 2882/2486/1165 2883/2487/1166 2879/2483/1162 +f 2884/2488/1167 2885/2489/1167 2886/2490/1168 +f 2887/2491/1169 2886/2490/1168 2888/2429/1170 +f 2877/2433/1160 2876/2462/1159 2889/2461/1171 +f 2890/2488/1172 2891/2492/1173 2892/2493/1174 +f 2893/2494/1175 2894/2490/1176 2895/2489/1177 +f 2896/2495/1178 2897/2496/1179 2879/2483/1162 +f 2813/2430/1154 2812/2429/1154 2894/2490/1176 +f 2898/2497/1180 2899/2498/1181 2900/2499/1182 +f 2901/2500/1183 2902/2501/1184 2903/2502/1185 +f 2904/2503/1186 2905/2504/1187 2906/2505/1188 +f 2897/2496/1179 2896/2495/1178 2905/2504/1187 +f 2899/2498/1181 2898/2497/1180 2907/2506/1189 +f 2908/2507/1190 2909/2508/1191 2910/2509/1192 +f 2911/2510/1193 2912/2511/1194 2910/2509/1192 +f 2913/2512/1195 2819/2436/1154 2912/2511/1194 +f 2913/2512/1195 2817/2434/1154 2819/2436/1154 +f 2883/2487/1166 2914/2513/1196 2896/2495/1178 +f 2915/2452/1197 2916/2481/1197 2917/2514/1198 +f 2918/2515/1199 2919/2516/1200 2882/2486/1165 +f 2919/2516/1200 2918/2515/1199 2920/2517/1201 +f 2921/2518/1202 2922/2519/1203 2923/2520/1204 +f 2924/2521/1205 2925/2522/1205 2922/2519/1203 +f 2926/2523/1206 2917/2514/1198 2927/2524/1207 +f 2928/2525/1208 2929/2526/1209 2917/2514/1198 +f 2930/2527/1210 2931/2528/1211 2932/2529/1212 +f 2933/2530/1213 2932/2529/1212 2934/2531/1214 +f 2935/2532/1215 2936/2533/1216 2937/2534/1217 +f 2928/2525/1208 2926/2523/1206 2936/2533/1216 +f 2938/2535/1218 2939/2536/1218 2940/2537/1219 +f 2931/2528/1211 2930/2527/1210 2941/2538/1220 +f 2942/2539/1163 2883/2487/1166 2882/2486/1165 +f 2943/2540/1221 2891/2492/1173 2890/2488/1172 +f 2944/2541/1179 2914/2513/1196 2883/2487/1166 +f 2874/2482/1158 2943/2540/1221 2945/2491/1222 +f 2946/2542/1223 2902/2501/1184 2901/2500/1183 +f 2929/2526/1209 2928/2525/1208 2947/2543/1207 +f 2948/2544/1186 2949/2545/1189 2950/2546/1188 +f 2944/2541/1179 2948/2544/1186 2951/2547/1187 +f 2952/2548/1181 2950/2546/1188 2949/2545/1189 +f 2953/2549/1224 2908/2507/1190 2954/2550/1225 +f 2955/2551/1226 2953/2549/1224 2956/2552/1227 +f 2865/2477/1158 2955/2551/1226 2866/2478/1158 +f 2957/2472/1228 2876/2462/1159 2878/2432/1161 +f 2881/2485/1164 2882/2486/1165 2879/2483/1162 +f 2887/2491/1169 2884/2488/1167 2886/2490/1168 +f 2889/2461/1171 2887/2491/1169 2888/2429/1170 +f 2888/2429/1170 2877/2433/1160 2889/2461/1171 +f 2895/2489/1177 2890/2488/1172 2892/2493/1174 +f 2892/2493/1174 2893/2494/1175 2895/2489/1177 +f 2893/2494/1175 2813/2430/1154 2894/2490/1176 +f 2903/2502/1185 2898/2497/1180 2900/2499/1182 +f 2900/2499/1182 2901/2500/1183 2903/2502/1185 +f 2907/2506/1189 2904/2503/1186 2906/2505/1188 +f 2904/2503/1186 2897/2496/1179 2905/2504/1187 +f 2906/2505/1188 2899/2498/1181 2907/2506/1189 +f 2954/2550/1225 2908/2507/1190 2910/2509/1192 +f 2909/2508/1191 2911/2510/1193 2910/2509/1192 +f 2911/2510/1193 2913/2512/1195 2912/2511/1194 +f 2879/2483/1162 2883/2487/1166 2896/2495/1178 +f 2929/2526/1209 2915/2452/1197 2917/2514/1198 +f 2881/2485/1164 2918/2515/1199 2882/2486/1165 +f 2923/2520/1204 2919/2516/1200 2920/2517/1201 +f 2920/2517/1201 2921/2518/1202 2923/2520/1204 +f 2921/2518/1202 2924/2521/1205 2922/2519/1203 +f 2926/2523/1206 2928/2525/1208 2917/2514/1198 +f 2933/2530/1213 2930/2527/1210 2932/2529/1212 +f 2937/2534/1217 2933/2530/1213 2934/2531/1214 +f 2934/2531/1214 2935/2532/1215 2937/2534/1217 +f 2935/2532/1215 2928/2525/1208 2936/2533/1216 +f 2941/2538/1220 2938/2535/1218 2940/2537/1219 +f 2940/2537/1219 2931/2528/1211 2941/2538/1220 +f 2945/2491/1222 2943/2540/1221 2890/2488/1172 +f 2848/2461/1158 2874/2482/1158 2945/2491/1222 +f 2952/2548/1181 2946/2542/1223 2901/2500/1183 +f 2951/2547/1187 2948/2544/1186 2950/2546/1188 +f 2914/2513/1196 2944/2541/1179 2951/2547/1187 +f 2946/2542/1223 2952/2548/1181 2949/2545/1189 +f 2956/2552/1227 2953/2549/1224 2954/2550/1225 +f 2866/2478/1158 2955/2551/1226 2956/2552/1227 diff --git a/src/main/resources/assets/hbm/models/weapons/ar15.obj b/src/main/resources/assets/hbm/models/weapons/ar15.obj index ccb6ad550..091d07aee 100644 --- a/src/main/resources/assets/hbm/models/weapons/ar15.obj +++ b/src/main/resources/assets/hbm/models/weapons/ar15.obj @@ -1,1794 +1,1707 @@ -# Blender v2.79 (sub 0) OBJ File: 'ar15.blend' +# Blender 3.6.1 # www.blender.org -o Mag -v -0.130136 2.873658 -1.302511 -v -0.130136 2.838598 -1.273999 -v -0.118132 2.826593 -1.273941 -v -0.082933 2.826456 -1.302281 -v -0.130136 2.814589 -1.273882 -v -0.130136 2.779253 -1.302052 -v -0.142140 2.826593 -1.273941 -v -0.177340 2.826456 -1.302281 -v -0.130136 2.909554 -2.720071 -v -0.040136 2.819556 -2.719633 -v -0.130136 2.729557 -2.719195 -v -0.220136 2.819556 -2.719633 -v -0.220136 2.824332 -1.738555 -v -0.130136 2.914331 -1.738993 -v -0.130136 2.734333 -1.738117 -v -0.040136 2.824332 -1.738555 -v 0.070075 2.964277 -1.293117 -v 0.070075 2.918879 -1.265522 -v 0.085603 2.903351 -1.265447 -v 0.131135 2.903217 -1.292820 -v 0.070075 2.887822 -1.265371 -v 0.070075 2.842158 -1.292523 -v 0.054546 2.903351 -1.265447 -v 0.009014 2.903218 -1.292820 -v 0.070075 3.012795 -2.698728 -v 0.186495 2.896376 -2.698161 -v 0.070075 2.779957 -2.697594 -v -0.046346 2.896376 -2.698161 -v -0.046346 2.901113 -1.725164 -v 0.070075 3.017532 -1.725731 -v 0.070075 2.784694 -1.724598 -v 0.186495 2.901113 -1.725164 -v 0.215413 2.799175 -2.697022 -v 0.215413 1.412339 -2.717431 -v 0.215413 1.413240 -2.778677 -v 0.215413 2.800076 -2.758268 -v 0.215413 1.395214 -1.553753 -v 0.215413 1.390708 -1.247522 -v 0.200031 0.789030 -1.253212 -v 0.200031 0.741453 -1.544326 -v 0.207611 0.254733 -1.182100 -v 0.207611 0.171899 -1.466945 -v 0.215413 -0.149166 -1.083426 -v 0.215413 -0.264245 -1.368191 -v 0.215413 -1.168349 -1.026934 -v 0.215413 -1.053270 -0.742170 -v 0.215413 -1.100854 -0.724209 -v 0.215413 -1.215933 -1.008973 -v -0.267178 2.799175 -2.697022 -v -0.267178 2.800076 -2.758268 -v -0.267178 1.413240 -2.778677 -v -0.267178 1.412339 -2.717431 -v -0.267178 1.395214 -1.553753 -v -0.252014 0.741454 -1.544326 -v -0.252014 0.789030 -1.253212 -v -0.267178 1.390708 -1.247522 -v -0.259486 0.171899 -1.466945 -v -0.259486 0.254733 -1.182100 -v -0.267178 -0.264245 -1.368191 -v -0.267178 -0.149166 -1.083426 -v -0.267178 -1.168349 -1.026934 -v -0.267178 -1.215933 -1.008973 -v -0.267178 -1.100854 -0.724209 -v -0.267178 -1.053270 -0.742170 -v 0.215413 2.777544 -1.227113 -v -0.267178 2.777544 -1.227113 -v 0.215413 -1.628665 -2.165990 -v -0.267178 -1.628665 -2.165990 -v -0.267178 -0.724561 -2.507246 -v 0.215413 -0.724561 -2.507246 -v -0.259486 -0.159440 -2.606327 -v 0.207611 -0.159440 -2.606327 -v -0.252014 0.551146 -2.708783 -v 0.200031 0.551146 -2.708783 -v 0.215413 -1.653234 -2.091076 -v -0.267178 -1.653234 -2.091076 -v -0.267178 -1.676250 -2.148029 -v 0.215413 -1.676250 -2.148029 -v 0.215413 -1.571169 -1.888006 -v 0.215413 -1.605717 -2.110279 -v 0.215413 -1.523651 -1.907209 -v 0.215413 -1.296767 -1.208995 -v -0.267178 -1.296767 -1.208995 -v -0.267178 -1.398925 -1.461787 -v 0.215413 -1.398925 -1.461787 -v -0.267178 -1.571169 -1.888006 -v -0.267178 -1.523651 -1.907209 -v -0.267178 -1.605650 -2.109037 -v -0.267178 -1.351341 -1.479748 -v -0.267178 -1.249182 -1.226956 -v -0.217019 -1.249182 -1.226956 -v -0.217019 -0.345078 -1.568213 -v -0.267178 -0.345078 -1.568213 -v -0.267178 -0.701545 -2.450294 -v -0.259486 -0.142873 -2.549358 -v -0.259486 0.040180 -1.919889 -v -0.267178 -0.447236 -1.821005 -v -0.259486 0.113714 -1.667024 -v -0.210937 0.113714 -1.667024 -v -0.252014 0.560662 -2.650560 -v -0.252014 0.665800 -2.007238 -v -0.252014 0.708035 -1.748809 -v -0.205029 0.708035 -1.748809 -v -0.267178 1.402380 -2.040703 -v -0.267178 1.398380 -1.768854 -v -0.217019 1.398380 -1.768854 -v -0.267178 2.782051 -1.533345 -v -0.217019 2.785216 -1.748445 -v -0.267178 2.785216 -1.748445 -v -0.267178 2.789217 -2.020294 -v 0.215413 -1.605650 -2.109037 -v 0.159762 -1.605650 -2.109037 -v 0.159762 -1.653234 -2.091076 -v 0.159762 -1.571169 -1.888006 -v 0.159762 -1.523585 -1.905967 -v 0.215413 -1.351341 -1.479748 -v 0.215413 -1.249182 -1.226956 -v 0.207611 -0.142873 -2.549358 -v 0.215413 -0.701545 -2.450294 -v 0.153746 -0.142873 -2.549358 -v 0.153746 -0.083803 -2.346230 -v 0.159762 -0.619481 -2.247224 -v 0.159762 -0.701545 -2.450294 -v 0.207611 0.040180 -1.919889 -v 0.207611 0.113714 -1.667024 -v 0.215413 -0.345078 -1.568213 -v 0.215413 -0.447236 -1.821005 -v 0.200031 0.560662 -2.650560 -v 0.147902 0.560662 -2.650560 -v 0.147902 0.594589 -2.442962 -v 0.200031 0.665800 -2.007238 -v 0.200031 0.708035 -1.748809 -v 0.159762 1.412339 -2.717431 -v 0.159762 1.409125 -2.499052 -v 0.215413 1.402380 -2.040703 -v 0.215413 1.398380 -1.768854 -v 0.215413 2.782051 -1.533345 -v 0.215413 2.785216 -1.748445 -v 0.215413 2.789217 -2.020294 -v 0.159761 2.795962 -2.478644 -v 0.159761 2.799175 -2.697022 -v 0.215413 2.791796 -2.195606 -v 0.215413 1.404960 -2.216014 -v 0.215413 1.409125 -2.499052 -v 0.215413 2.795962 -2.478644 -v 0.200031 0.638563 -2.173895 -v 0.200031 0.594589 -2.442962 -v 0.207611 -0.007241 -2.082958 -v 0.207611 -0.083803 -2.346230 -v 0.215413 -0.513117 -1.984027 -v 0.215413 -0.619481 -2.247224 -v 0.215413 -1.523585 -1.905967 -v 0.215413 -1.417221 -1.642770 -v 0.215413 -1.464806 -1.624809 -v -0.267178 2.791796 -2.195606 -v -0.267178 2.795962 -2.478644 -v -0.267178 1.409125 -2.499052 -v -0.267178 1.404960 -2.216014 -v -0.252014 0.594589 -2.442962 -v -0.252014 0.638563 -2.173895 -v -0.259486 -0.083803 -2.346230 -v -0.259486 -0.007241 -2.082958 -v -0.267178 -0.619481 -2.247224 -v -0.267178 -0.513117 -1.984027 -v -0.267178 -1.523585 -1.905967 -v -0.267178 -1.464806 -1.624809 -v -0.267178 -1.417221 -1.642770 -v -0.267178 -1.605717 -2.110279 -v -0.267178 2.936115 -2.193482 -v -0.267178 2.940280 -2.476520 -v -0.267178 2.933535 -2.018171 -v 0.215413 2.936115 -2.193482 -v 0.215413 2.940280 -2.476520 -v 0.215413 2.933535 -2.018171 -v 0.215413 2.943494 -2.694898 -v 0.215413 2.929535 -1.746321 -v 0.215413 2.926369 -1.531221 -v 0.215413 2.921863 -1.224990 -v -0.267178 2.943494 -2.694898 -v -0.267178 2.929535 -1.746321 -v -0.267178 2.926369 -1.531221 -v -0.267178 2.921863 -1.224990 -v -0.267178 2.944395 -2.756145 -v 0.215413 2.944395 -2.756145 -v -0.219901 2.795962 -2.478644 -v -0.219901 2.799175 -2.697022 -v -0.219901 1.412339 -2.717431 -v -0.219901 1.409125 -2.499052 -v -0.207729 0.560662 -2.650560 -v -0.207729 0.594589 -2.442962 -v -0.213727 -0.142873 -2.549358 -v -0.213727 -0.083803 -2.346230 -v -0.219901 -0.701545 -2.450294 -v -0.219901 -0.619481 -2.247224 -v -0.219901 -1.605650 -2.109037 -v -0.219901 -1.523585 -1.905967 -v -0.219901 -1.571169 -1.888006 -v -0.219901 -1.653234 -2.091076 -v -0.221792 -1.417221 -1.642770 -v -0.221792 -1.351341 -1.479748 -v -0.221792 -1.398925 -1.461787 -v -0.221792 -1.464806 -1.624809 -v -0.215557 -0.007241 -2.082958 -v -0.221792 -0.513117 -1.984027 -v -0.221792 -0.447236 -1.821005 -v -0.215557 0.040180 -1.919889 -v -0.209500 0.638563 -2.173895 -v -0.209500 0.665800 -2.007238 -v -0.221792 1.404960 -2.216014 -v -0.221792 1.402380 -2.040703 -v -0.221792 2.789217 -2.020294 -v -0.221792 2.791796 -2.195606 -v -0.217019 -1.168349 -1.026934 -v -0.217019 -1.215933 -1.008973 -v -0.217019 -1.296767 -1.208995 -v -0.217019 -0.264245 -1.368191 -v -0.210937 0.171899 -1.466945 -v -0.205029 0.741454 -1.544326 -v -0.217019 1.395214 -1.553753 -v -0.217019 2.782051 -1.533345 -v 0.159762 -1.249182 -1.226956 -v 0.159762 -1.296767 -1.208995 -v 0.159762 -1.215933 -1.008973 -v 0.159762 -1.168349 -1.026934 -v 0.153746 0.113714 -1.667024 -v 0.153746 0.171899 -1.466945 -v 0.159762 -0.264245 -1.368191 -v 0.159762 -0.345078 -1.568213 -v 0.147902 0.708035 -1.748809 -v 0.147902 0.741453 -1.544326 -v 0.159762 1.398380 -1.768854 -v 0.159762 1.395214 -1.553753 -v 0.159761 2.782051 -1.533345 -v 0.159761 2.785216 -1.748445 -v 0.159762 -1.417221 -1.642770 -v 0.159762 -1.464806 -1.624809 -v 0.159762 -1.398925 -1.461787 -v 0.159762 -1.351341 -1.479748 -v 0.153746 -0.007241 -2.082958 -v 0.153746 0.040180 -1.919889 -v 0.159762 -0.447236 -1.821005 -v 0.159762 -0.513117 -1.984027 -v 0.147902 0.638563 -2.173895 -v 0.147902 0.665800 -2.007238 -v 0.159762 1.404960 -2.216014 -v 0.159762 1.402380 -2.040703 -v 0.159761 2.789217 -2.020294 -v 0.159761 2.791796 -2.195606 -v 0.215413 -1.168416 -1.028176 -v -0.267178 -1.168416 -1.028176 -v -0.267178 -1.249248 -1.228198 -v 0.215413 -1.249248 -1.228198 -v 0.215413 -1.351407 -1.480990 -v -0.267178 -1.351407 -1.480990 -v -0.267178 -1.417288 -1.644012 -v 0.215413 -1.417288 -1.644012 -v 0.215413 2.800076 -2.758268 -v -0.267178 2.800076 -2.758268 -v -0.267178 2.944395 -2.756145 -v 0.215413 2.944395 -2.756145 -v 0.184787 2.799175 -2.697022 -v 0.189682 2.799606 -2.726298 -v 0.184787 1.412789 -2.748054 -v 0.184787 1.412339 -2.717431 -v -0.236552 2.799175 -2.697022 -v -0.236551 1.412339 -2.717431 -v -0.236551 1.412789 -2.748054 -v -0.241447 2.799606 -2.726298 -v 0.184787 2.777995 -1.257736 -v 0.184787 1.391158 -1.278145 -v -0.236551 1.391158 -1.278145 -v -0.236552 2.777995 -1.257736 -v -0.236551 1.395214 -1.553753 -v -0.236552 2.782051 -1.533345 -v -0.236552 2.785216 -1.748445 -v -0.236551 1.398380 -1.768854 -v -0.236551 1.402380 -2.040703 -v -0.236552 2.789217 -2.020294 -v 0.184787 2.782051 -1.533345 -v 0.184787 1.395214 -1.553753 -v 0.184787 2.785216 -1.748445 -v 0.184787 2.789217 -2.020294 -v 0.184787 1.402380 -2.040703 -v 0.184787 1.398380 -1.768854 -v 0.184787 2.791796 -2.195606 -v 0.184787 2.795962 -2.478644 -v 0.184787 1.409125 -2.499052 -v 0.184787 1.404960 -2.216014 -v -0.236552 2.791796 -2.195606 -v -0.236551 1.404960 -2.216014 -v -0.236551 1.409125 -2.499052 -v -0.236552 2.795962 -2.478644 -v -0.236552 2.936115 -2.193482 -v -0.236552 2.940280 -2.476520 -v -0.236552 2.933535 -2.018171 -v 0.184787 2.936115 -2.193482 -v 0.184787 2.940280 -2.476520 -v 0.184787 2.933535 -2.018171 -v 0.184787 2.943494 -2.694898 -v 0.184787 2.929535 -1.746321 -v 0.184787 2.926369 -1.531221 -v 0.184787 2.922313 -1.255613 -v -0.236552 2.943494 -2.694898 -v -0.236552 2.929535 -1.746321 -v -0.236552 2.926369 -1.531221 -v -0.236552 2.922313 -1.255613 -v -0.236552 2.944395 -2.756145 -v 0.184787 2.944395 -2.756145 -v 0.215413 2.799626 -2.727645 -v 0.215413 2.943944 -2.725522 -v -0.267178 2.943945 -2.725522 -v -0.267178 2.799626 -2.727645 -v -0.156794 3.000995 -2.500587 -v -0.156794 2.998746 -2.254960 -v -0.156794 3.002730 -2.690100 -v -0.175825 3.000995 -2.500587 -v -0.175825 3.002730 -2.690100 -v -0.156794 2.997354 -2.102820 -v -0.175825 2.997354 -2.102820 -v 0.105029 3.000995 -2.500587 -v 0.105029 3.002730 -2.690100 -v -0.175825 2.998746 -2.254960 -v 0.124060 3.002730 -2.690100 -v 0.124060 3.000995 -2.500587 -v 0.105029 2.998746 -2.254960 -v 0.124060 2.998746 -2.254960 -v 0.105029 2.997354 -2.102820 -v 0.124060 2.997354 -2.102820 -v 0.215413 2.799175 -2.697022 -v 0.215413 1.412339 -2.717431 -v 0.215413 1.413240 -2.778677 -v 0.215413 2.800076 -2.758268 -v 0.215413 1.395214 -1.553753 -v 0.215413 1.390708 -1.247522 -v 0.200031 0.789030 -1.253212 -v 0.200031 0.741453 -1.544326 -v 0.207611 0.254733 -1.182100 -v 0.207611 0.171899 -1.466945 -v 0.215413 -0.149166 -1.083426 -v 0.215413 -0.264245 -1.368191 -v 0.215413 -1.168349 -1.026934 -v 0.215413 -1.053270 -0.742170 -v -0.267178 2.799175 -2.697022 -v -0.267178 2.800076 -2.758268 -v -0.267178 1.413240 -2.778677 -v -0.267178 1.412339 -2.717431 -v -0.267178 1.395214 -1.553753 -v -0.252014 0.741454 -1.544326 -v -0.252014 0.789030 -1.253212 -v -0.267178 1.390708 -1.247522 -v -0.259486 0.171899 -1.466945 -v -0.259486 0.254733 -1.182100 -v -0.267178 -0.264245 -1.368191 -v -0.267178 -0.149166 -1.083426 -v -0.267178 -1.168349 -1.026934 -v -0.267178 -1.053270 -0.742170 -v 0.215413 2.777544 -1.227113 -v -0.267178 2.777544 -1.227113 -v 0.215413 -1.628665 -2.165990 -v -0.267178 -1.628665 -2.165990 -v -0.267178 -0.724561 -2.507246 -v 0.215413 -0.724561 -2.507246 -v -0.259486 -0.159440 -2.606327 -v 0.207611 -0.159440 -2.606327 -v -0.252014 0.551146 -2.708783 -v 0.200031 0.551146 -2.708783 -v -0.267178 -1.605650 -2.109037 -v -0.267178 -1.351341 -1.479748 -v -0.267178 -1.249182 -1.226956 -v -0.217019 -1.249182 -1.226956 -v -0.217019 -0.345078 -1.568213 -v -0.267178 -0.345078 -1.568213 -v -0.267178 -0.701545 -2.450294 -v -0.259486 -0.142873 -2.549358 -v -0.259486 0.040180 -1.919889 -v -0.267178 -0.447236 -1.821005 -v -0.259486 0.113714 -1.667024 -v -0.210937 0.113714 -1.667024 -v -0.252014 0.560662 -2.650560 -v -0.252014 0.665800 -2.007238 -v -0.252014 0.708035 -1.748809 -v -0.205029 0.708035 -1.748809 -v -0.267178 1.402380 -2.040703 -v -0.267178 1.398380 -1.768854 -v -0.217019 1.398380 -1.768854 -v -0.267178 2.782051 -1.533345 -v -0.217019 2.785216 -1.748445 -v -0.267178 2.785216 -1.748445 -v -0.267178 2.789217 -2.020294 -v 0.215413 -1.605650 -2.109037 -v 0.159762 -1.605650 -2.109037 -v 0.159762 -1.523585 -1.905967 -v 0.215413 -1.351341 -1.479748 -v 0.215413 -1.249182 -1.226956 -v 0.207611 -0.142873 -2.549358 -v 0.215413 -0.701545 -2.450294 -v 0.153746 -0.142873 -2.549358 -v 0.153746 -0.083803 -2.346230 -v 0.159762 -0.619481 -2.247224 -v 0.159762 -0.701545 -2.450294 -v 0.207611 0.040180 -1.919889 -v 0.207611 0.113714 -1.667024 -v 0.215413 -0.345078 -1.568213 -v 0.215413 -0.447236 -1.821005 -v 0.200031 0.560662 -2.650560 -v 0.147902 0.560662 -2.650560 -v 0.147902 0.594589 -2.442962 -v 0.200031 0.665800 -2.007238 -v 0.200031 0.708035 -1.748809 -v 0.159762 1.412339 -2.717431 -v 0.159762 1.409125 -2.499052 -v 0.215413 1.402380 -2.040703 -v 0.215413 1.398380 -1.768854 -v 0.215413 2.782051 -1.533345 -v 0.215413 2.785216 -1.748445 -v 0.215413 2.789217 -2.020294 -v 0.159761 2.795962 -2.478644 -v 0.159761 2.799175 -2.697022 -v 0.215413 2.791796 -2.195606 -v 0.215413 1.404960 -2.216014 -v 0.215413 1.409125 -2.499052 -v 0.215413 2.795962 -2.478644 -v 0.200031 0.638563 -2.173895 -v 0.200031 0.594589 -2.442962 -v 0.207611 -0.007241 -2.082958 -v 0.207611 -0.083803 -2.346230 -v 0.215413 -0.513117 -1.984027 -v 0.215413 -0.619481 -2.247224 -v 0.215413 -1.523585 -1.905967 -v 0.215413 -1.417221 -1.642770 -v -0.267178 2.791796 -2.195606 -v -0.267178 2.795962 -2.478644 -v -0.267178 1.409125 -2.499052 -v -0.267178 1.404960 -2.216014 -v -0.252014 0.594589 -2.442962 -v -0.252014 0.638563 -2.173895 -v -0.259486 -0.083803 -2.346230 -v -0.259486 -0.007241 -2.082958 -v -0.267178 -0.619481 -2.247224 -v -0.267178 -0.513117 -1.984027 -v -0.267178 -1.523585 -1.905967 -v -0.267178 -1.417221 -1.642770 -v 0.215413 2.921863 -1.224990 -v -0.267178 2.921863 -1.224990 -v -0.219901 2.795962 -2.478644 -v -0.219901 2.799175 -2.697022 -v -0.219901 1.412339 -2.717431 -v -0.219901 1.409125 -2.499052 -v -0.207729 0.560662 -2.650560 -v -0.207729 0.594589 -2.442962 -v -0.213727 -0.142873 -2.549358 -v -0.213727 -0.083803 -2.346230 -v -0.219901 -0.701545 -2.450294 -v -0.219901 -0.619481 -2.247224 -v -0.219901 -1.605650 -2.109037 -v -0.219901 -1.523585 -1.905967 -v -0.221792 -1.417221 -1.642770 -v -0.221792 -1.351341 -1.479748 -v -0.215557 -0.007241 -2.082958 -v -0.221792 -0.513117 -1.984027 -v -0.221792 -0.447236 -1.821005 -v -0.215557 0.040180 -1.919889 -v -0.209500 0.638563 -2.173895 -v -0.209500 0.665800 -2.007238 -v -0.221792 1.404960 -2.216014 -v -0.221792 1.402380 -2.040703 -v -0.221792 2.789217 -2.020294 -v -0.221792 2.791796 -2.195606 -v -0.217019 -1.168349 -1.026934 -v -0.217019 -0.264245 -1.368191 -v -0.210937 0.171899 -1.466945 -v -0.205029 0.741454 -1.544326 -v -0.217019 1.395214 -1.553753 -v -0.217019 2.782051 -1.533345 -v 0.159762 -1.249182 -1.226956 -v 0.159762 -1.168349 -1.026934 -v 0.153746 0.113714 -1.667024 -v 0.153746 0.171899 -1.466945 -v 0.159762 -0.264245 -1.368191 -v 0.159762 -0.345078 -1.568213 -v 0.147902 0.708035 -1.748809 -v 0.147902 0.741453 -1.544326 -v 0.159762 1.398380 -1.768854 -v 0.159762 1.395214 -1.553753 -v 0.159761 2.782051 -1.533345 -v 0.159761 2.785216 -1.748445 -v 0.159762 -1.417221 -1.642770 -v 0.159762 -1.351341 -1.479748 -v 0.153746 -0.007241 -2.082958 -v 0.153746 0.040180 -1.919889 -v 0.159762 -0.447236 -1.821005 -v 0.159762 -0.513117 -1.984027 -v 0.147902 0.638563 -2.173895 -v 0.147902 0.665800 -2.007238 -v 0.159762 1.404960 -2.216014 -v 0.159762 1.402380 -2.040703 -v 0.159761 2.789217 -2.020294 -v 0.159761 2.791796 -2.195606 -vt 0.008879 0.261663 -vt 0.020745 0.024611 -vt 0.026244 0.025163 -vt 0.113358 0.272155 -vt 0.133590 0.377540 -vt 0.106872 0.383764 -vt 0.134010 0.469169 -vt 0.107462 0.481450 -vt 0.138370 0.538729 -vt 0.111468 0.556512 -vt 0.132039 0.712997 -vt 0.160025 0.703450 -vt 0.133122 0.721233 -vt 0.180770 0.767756 -vt 0.168904 0.530703 -vt 0.186269 0.767203 -vt 0.273383 0.520211 -vt 0.293615 0.414826 -vt 0.300878 0.517451 -vt 0.266897 0.408602 -vt 0.294035 0.323197 -vt 0.267486 0.310916 -vt 0.298395 0.253638 -vt 0.292064 0.079369 -vt 0.320050 0.088917 -vt 0.318967 0.097153 -vt 0.485092 0.681372 -vt 0.402571 0.689617 -vt 0.402571 0.681372 -vt 0.402571 0.850275 -vt 0.397572 0.767754 -vt 0.402571 0.767754 -vt 0.372674 0.850275 -vt 0.347683 0.767754 -vt 0.372674 0.767754 -vt 0.152917 0.818907 -vt 0.145390 0.792366 -vt 0.152917 0.795909 -vt 0.619140 0.695924 -vt 0.596954 0.613403 -vt 0.619140 0.613403 -vt 0.484540 0.689617 -vt 0.476292 0.772139 -vt 0.476292 0.689617 -vt 0.184453 0.008236 -vt 0.190917 0.003557 -vt 0.189834 0.011793 -vt 0.249285 0.051091 -vt 0.274250 0.058642 -vt 0.273167 0.066878 -vt 0.161290 0.261792 -vt 0.169262 0.168278 -vt 0.166600 0.264248 -vt 0.225270 0.291388 -vt 0.252596 0.223363 -vt 0.248838 0.302289 -vt 0.160025 0.383705 -vt 0.165368 0.384950 -vt 0.224412 0.398705 -vt 0.248130 0.404230 -vt 0.163405 0.531255 -vt 0.229663 0.524602 -vt 0.254071 0.522151 -vt 0.290748 0.756711 -vt 0.318242 0.753951 -vt 0.247028 0.761102 -vt 0.271435 0.758651 -vt 0.024429 0.784130 -vt 0.030892 0.788810 -vt 0.025511 0.792366 -vt 0.160385 0.796005 -vt 0.167853 0.815364 -vt 0.160385 0.819002 -vt 0.089260 0.741275 -vt 0.114225 0.733724 -vt 0.090343 0.749511 -vt 0.001266 0.530574 -vt 0.009237 0.624088 -vt 0.003857 0.627645 -vt 0.663280 0.502867 -vt 0.684772 0.586248 -vt 0.665533 0.598848 -vt 0.065245 0.500979 -vt 0.092571 0.569003 -vt 0.068689 0.584790 -vt 0.000000 0.408661 -vt 0.006576 0.528118 -vt 0.662562 0.382162 -vt 0.682250 0.494190 -vt 0.064387 0.393662 -vt 0.088813 0.490077 -vt 0.003380 0.261111 -vt 0.666713 0.236424 -vt 0.681634 0.377804 -vt 0.069638 0.267765 -vt 0.088105 0.388136 -vt 0.140853 0.274916 -vt 0.130723 0.035655 -vt 0.158218 0.038416 -vt 0.094046 0.270216 -vt 0.087003 0.031264 -vt 0.111411 0.033715 -vt 0.686311 0.238476 -vt 0.685081 0.000000 -vt 0.704679 0.002052 -vt 0.071263 0.029684 -vt 0.028486 0.263632 -vt 0.045851 0.027132 -vt 0.049091 0.397225 -vt 0.024397 0.402978 -vt 0.050046 0.508009 -vt 0.025508 0.519360 -vt 0.053287 0.594970 -vt 0.028422 0.611407 -vt 0.048994 0.767892 -vt 0.074942 0.759692 -vt 0.050077 0.776128 -vt 0.231288 0.762682 -vt 0.188511 0.528734 -vt 0.213923 0.526182 -vt 0.209116 0.395141 -vt 0.184422 0.389389 -vt 0.210071 0.284357 -vt 0.185533 0.273006 -vt 0.213312 0.197396 -vt 0.209019 0.024474 -vt 0.234967 0.032675 -vt 0.233884 0.040911 -vt 0.145390 0.792366 -vt 0.137863 0.818907 -vt 0.137863 0.795909 -vt 0.620053 0.613403 -vt 0.596954 0.530882 -vt 0.620053 0.530882 -vt 0.233095 0.787293 -vt 0.205875 0.765234 -vt 0.248835 0.785713 -vt 0.073070 0.005073 -vt 0.047658 0.002521 -vt 0.088810 0.006654 -vt 0.028051 0.000552 -vt 0.113218 0.009104 -vt 0.132530 0.011044 -vt 0.160025 0.013805 -vt 0.188076 0.791814 -vt 0.207682 0.789845 -vt 0.273242 0.783262 -vt 0.292555 0.781322 -vt 0.320050 0.778562 -vt 0.182577 0.792366 -vt 0.022552 0.000000 -vt 0.642964 0.755419 -vt 0.644194 0.516943 -vt 0.662562 0.753367 -vt 0.624595 0.518994 -vt 0.639516 0.377615 -vt 0.620444 0.373257 -vt 0.640132 0.261229 -vt 0.621163 0.252552 -vt 0.642654 0.169171 -vt 0.152917 0.815364 -vt 0.160385 0.796005 -vt 0.160385 0.819002 -vt 0.274474 0.796005 -vt 0.267006 0.810828 -vt 0.267006 0.792366 -vt 0.791881 0.243520 -vt 0.810278 0.166681 -vt 0.807102 0.250503 -vt 0.791279 0.354307 -vt 0.806586 0.357822 -vt 0.796500 0.485332 -vt 0.812235 0.483702 -vt 0.814617 0.721776 -vt 0.830352 0.720146 -vt 0.190375 0.815018 -vt 0.197842 0.796005 -vt 0.197842 0.818657 -vt 0.705188 0.235458 -vt 0.727712 0.168979 -vt 0.723853 0.244048 -vt 0.704679 0.337400 -vt 0.723455 0.341735 -vt 0.710846 0.455309 -vt 0.730155 0.453332 -vt 0.747979 0.689798 -vt 0.244484 0.811776 -vt 0.235907 0.792366 -vt 0.244484 0.792366 -vt 0.182907 0.796005 -vt 0.190375 0.815018 -vt 0.182907 0.818657 -vt 0.748488 0.456317 -vt 0.771012 0.522795 -vt 0.752091 0.535250 -vt 0.747979 0.354375 -vt 0.767153 0.447727 -vt 0.754146 0.236466 -vt 0.766755 0.350040 -vt 0.773455 0.238443 -vt 0.771971 0.000000 -vt 0.791279 0.001977 -vt 0.259538 0.796005 -vt 0.267006 0.810828 -vt 0.259538 0.814467 -vt 0.830953 0.478256 -vt 0.849350 0.555095 -vt 0.833916 0.565226 -vt 0.830352 0.367469 -vt 0.846174 0.471274 -vt 0.835572 0.236444 -vt 0.845659 0.363955 -vt 0.851307 0.238074 -vt 0.853689 0.000000 -vt 0.869424 0.001631 -vt 0.938689 0.685553 -vt 0.929173 0.677304 -vt 0.938689 0.677304 -vt 0.917629 0.008245 -vt 0.927145 0.000000 -vt 0.927145 0.008245 -vt 0.207358 0.811776 -vt 0.216875 0.792366 -vt 0.216875 0.811776 -vt 0.915601 0.718231 -vt 0.906084 0.709982 -vt 0.915601 0.709982 -vt 0.283051 0.808186 -vt 0.292567 0.792366 -vt 0.292567 0.808186 -vt 0.894540 0.008245 -vt 0.904056 0.000000 -vt 0.904056 0.008245 -vt 0.892512 0.748989 -vt 0.882996 0.740740 -vt 0.892512 0.740740 -vt 0.871452 0.008245 -vt 0.880968 0.000000 -vt 0.880968 0.008245 -vt 0.197842 0.812072 -vt 0.207358 0.792366 -vt 0.207358 0.812072 -vt 0.614509 0.860967 -vt 0.596954 0.778446 -vt 0.614509 0.778446 -vt 0.614776 0.778446 -vt 0.596954 0.695924 -vt 0.614776 0.695924 -vt 0.581725 0.784464 -vt 0.596033 0.866985 -vt 0.581725 0.866985 -vt 0.869324 0.721776 -vt 0.861081 0.804298 -vt 0.861081 0.721776 -vt 0.484540 0.772139 -vt 0.476292 0.854660 -vt 0.476292 0.772139 -vt 0.259538 0.795909 -vt 0.252011 0.810828 -vt 0.252011 0.792366 -vt 0.175380 0.792366 -vt 0.167853 0.818561 -vt 0.167853 0.795909 -vt 0.182907 0.818561 -vt 0.175380 0.792366 -vt 0.182907 0.795909 -vt 0.852838 0.804298 -vt 0.861081 0.721776 -vt 0.861081 0.804298 -vt 0.252011 0.810828 -vt 0.244484 0.795909 -vt 0.252011 0.792366 -vt 0.093140 0.874888 -vt 0.101383 0.792366 -vt 0.101383 0.874888 -vt 0.700265 0.755419 -vt 0.692018 0.837940 -vt 0.692018 0.755419 -vt 0.581725 0.866985 -vt 0.557139 0.784464 -vt 0.581725 0.784464 -vt 0.485092 0.530882 -vt 0.485092 0.530882 -vt 0.485092 0.530882 -vt 0.485092 0.530882 -vt 0.485092 0.530882 -vt 0.485092 0.530882 -vt 0.485092 0.530882 -vt 0.485092 0.530882 -vt 0.557139 0.555468 -vt 0.485092 0.791728 -vt 0.485092 0.555468 -vt 0.620444 0.502578 -vt 0.595584 0.266107 -vt 0.620444 0.265441 -vt 0.535846 0.001360 -vt 0.510315 0.025353 -vt 0.510315 0.000676 -vt 0.551659 0.026461 -vt 0.551659 0.001784 -vt 0.535846 0.529522 -vt 0.510315 0.505529 -vt 0.535846 0.504845 -vt 0.551660 0.504421 -vt 0.551660 0.529098 -vt 0.490617 0.530734 -vt 0.510315 0.530206 -vt 0.576181 0.528441 -vt 0.576181 0.503764 -vt 0.595584 0.503244 -vt 0.595584 0.527921 -vt 0.620444 0.527255 -vt 0.490617 0.000148 -vt 0.576181 0.002441 -vt 0.595584 0.027638 -vt 0.595584 0.002961 -vt 0.620444 0.003627 -vt 0.476292 0.925939 -vt 0.403408 0.689618 -vt 0.475455 0.689618 -vt 0.485092 0.530882 -vt 0.557139 0.530882 -vt 0.487972 0.024754 -vt 0.485092 0.000000 -vt 0.487972 0.506128 -vt 0.490617 0.506057 -vt 0.397268 0.767754 -vt 0.372674 0.850275 -vt 0.372674 0.767754 -vt 0.305887 0.807001 -vt 0.301411 0.831587 -vt 0.300651 0.806674 -vt 0.704679 0.755419 -vt 0.701916 0.832703 -vt 0.701916 0.760656 -vt 0.618985 0.828899 -vt 0.614509 0.804313 -vt 0.619745 0.803986 -vt 0.704679 0.827177 -vt 0.709079 0.824292 -vt 0.704679 0.827177 -vt 0.910364 0.236260 -vt 0.915601 0.000000 -vt 0.915601 0.236260 -vt 0.065027 0.833726 -vt 0.051389 0.814098 -vt 0.065027 0.808186 -vt 0.620303 0.695924 -vt 0.617540 0.701161 -vt 0.614776 0.695924 -vt 0.222112 0.810188 -vt 0.216875 0.829894 -vt 0.216875 0.810188 -vt 0.689255 0.760656 -vt 0.664385 0.755419 -vt 0.692018 0.755419 -vt 0.617540 0.773209 -vt 0.614776 0.778446 -vt 0.065027 0.853432 -vt 0.051389 0.836254 -vt 0.003254 0.809576 -vt 0.018875 0.792366 -vt 0.018875 0.812072 -vt 0.212595 0.811776 -vt 0.207358 0.817303 -vt 0.207358 0.811776 -vt 0.619746 0.778446 -vt 0.614509 0.803986 -vt 0.614509 0.778446 -vt 0.241144 0.792366 -vt 0.235907 0.811776 -vt 0.787200 0.792098 -vt 0.790305 0.776917 -vt 0.790305 0.796315 -vt 0.620303 0.778446 -vt 0.037751 0.809544 -vt 0.051389 0.792366 -vt 0.051389 0.812072 -vt 0.689255 0.832703 -vt 0.692018 0.837940 -vt 0.620444 0.832703 -vt 0.644975 0.837940 -vt 0.620444 0.837940 -vt 0.485092 0.530882 -vt 0.290177 0.815715 -vt 0.295414 0.810188 -vt 0.295414 0.815715 -vt 0.787200 0.827177 -vt 0.310167 0.817907 -vt 0.315404 0.792366 -vt 0.315404 0.817907 -vt 0.644975 0.832703 -vt 0.664385 0.837940 -vt 0.003254 0.845457 -vt 0.018875 0.837612 -vt 0.018875 0.853432 -vt 0.344919 0.772991 -vt 0.320049 0.767754 -vt 0.347683 0.767754 -vt 0.644975 0.760656 -vt 0.620444 0.755419 -vt 0.644975 0.755419 -vt 0.300651 0.810188 -vt 0.295414 0.826008 -vt 0.295414 0.810188 -vt 0.226391 0.834451 -vt 0.231628 0.809921 -vt 0.231628 0.834451 -vt 0.664385 0.760656 -vt 0.344919 0.845038 -vt 0.347683 0.850275 -vt 0.320049 0.850275 -vt 0.789964 0.691775 -vt 0.787200 0.774296 -vt 0.787200 0.691775 -vt 0.287330 0.808186 -vt 0.887275 0.236260 -vt 0.892512 0.000000 -vt 0.892512 0.236260 -vt 0.202121 0.812072 -vt 0.288288 0.808186 -vt 0.283051 0.832716 -vt 0.283051 0.808186 -vt 0.787200 0.824414 -vt 0.787200 0.827177 -vt 0.933452 0.236260 -vt 0.938689 0.000000 -vt 0.938689 0.236260 -vt 0.211638 0.811776 -vt 0.000000 0.809576 -vt 0.003254 0.792481 -vt 0.000000 0.831733 -vt 0.003254 0.831733 -vt 0.018875 0.853317 -vt 0.022130 0.836222 -vt 0.022130 0.853317 -vt 0.018875 0.836222 -vt 0.022130 0.814065 -vt 0.018875 0.814065 -vt 0.022130 0.800341 -vt 0.000000 0.845457 -vt 0.790305 0.814896 -vt 0.787470 0.800718 -vt 0.790305 0.796315 -vt 0.037751 0.831700 -vt 0.051389 0.837612 -vt 0.037751 0.853432 -vt 0.037751 0.833726 -vt 0.051389 0.800375 -vt 0.065027 0.792366 -vt 0.037751 0.808186 -vt 0.037751 0.845424 -vt 0.051389 0.853432 -vt 0.307332 0.823587 -vt 0.310167 0.809409 -vt 0.310167 0.827990 -vt 0.037751 0.792366 -vt 0.318509 0.811765 -vt 0.315404 0.796584 -vt 0.318509 0.792366 -vt 0.283051 0.792366 -vt 0.274474 0.809921 -vt 0.274474 0.792366 -vt 0.282234 0.809921 -vt 0.274474 0.824228 -vt 0.274474 0.809921 -vt 0.310167 0.806674 -vt 0.300651 0.792366 -vt 0.310167 0.792366 -vt 0.300651 0.792366 -vt 0.292567 0.810188 -vt 0.292567 0.792366 -vt 0.216875 0.792366 -vt 0.226391 0.810188 -vt 0.216875 0.810188 -vt 0.869424 0.711645 -vt 0.853990 0.721776 -vt 0.791279 0.679320 -vt 0.772358 0.691775 -vt 0.940771 0.763658 -vt 0.948855 0.755412 -vt 0.948855 0.763658 -vt 0.959020 0.008249 -vt 0.950936 0.000000 -vt 0.959020 0.000000 -vt 0.982377 0.730012 -vt 0.990137 0.721766 -vt 0.990137 0.730012 -vt 1.000000 0.008249 -vt 0.992239 0.000000 -vt 1.000000 0.000000 -vt 0.980275 0.008249 -vt 0.971698 0.000000 -vt 0.980275 0.000000 -vt 0.708791 0.156525 -vt 0.747979 0.012455 -vt 0.794844 0.156550 -vt 0.830352 0.010131 -vt 0.623416 0.156571 -vt 0.662562 0.012600 -vt 0.188447 0.180960 -vt 0.073859 0.751456 -vt 0.113143 0.725488 -vt 0.704679 0.742819 -vt 0.685441 0.755419 -vt 0.029809 0.780574 -vt 0.961070 0.700006 -vt 0.969648 0.691761 -vt 0.969648 0.700006 -vt 0.228713 0.207577 -vt 0.163882 0.164721 -vt 0.402571 0.000000 -vt 0.320050 0.008249 -vt 0.320050 0.000000 -vt 0.271492 0.235855 -vt 0.158942 0.695214 -vt 0.226391 0.792366 -vt 0.235907 0.809921 -vt 0.226391 0.809921 -vt 0.782801 0.824292 -vt 0.709916 0.691775 -vt 0.781963 0.691775 -vt 0.293147 0.071133 -vt 0.485092 0.689617 -vt 0.397572 0.850275 -vt 0.347683 0.850275 -vt 0.145390 0.815364 -vt 0.596954 0.695924 -vt 0.484540 0.772139 -vt 0.185536 0.000000 -vt 0.250368 0.042855 -vt 0.167853 0.792366 -vt 0.005344 0.407416 -vt 0.053898 0.266184 -vt 0.210101 0.016238 -vt 0.145391 0.815364 -vt 0.596954 0.613403 -vt 0.152917 0.792366 -vt 0.274474 0.814467 -vt 0.190375 0.792366 -vt 0.728671 0.691775 -vt 0.190375 0.792366 -vt 0.267006 0.792366 -vt 0.929173 0.685553 -vt 0.917629 0.000000 -vt 0.207358 0.792366 -vt 0.906084 0.718231 -vt 0.283051 0.792366 -vt 0.894540 0.000000 -vt 0.882996 0.748989 -vt 0.871452 0.000000 -vt 0.197842 0.792366 -vt 0.596954 0.860967 -vt 0.596954 0.778446 -vt 0.596033 0.784464 -vt 0.869324 0.804298 -vt 0.484540 0.854660 -vt 0.259538 0.814371 -vt 0.175380 0.815018 -vt 0.175380 0.815018 -vt 0.852838 0.721776 -vt 0.244484 0.814371 -vt 0.093140 0.792366 -vt 0.700265 0.837940 -vt 0.557139 0.866985 -vt 0.557139 0.791728 -vt 0.535846 0.026037 -vt 0.490617 0.024825 -vt 0.576181 0.027118 -vt 0.620444 0.028304 -vt 0.402571 0.925939 -vt 0.397268 0.850275 -vt 0.305811 0.831587 -vt 0.704679 0.837940 -vt 0.614585 0.828899 -vt 0.704679 0.824414 -vt 0.910364 0.000000 -vt 0.620303 0.701161 -vt 0.222112 0.829894 -vt 0.051389 0.853349 -vt 0.212595 0.817303 -vt 0.619746 0.803986 -vt 0.241144 0.811776 -vt 0.788376 0.774296 -vt 0.620303 0.773209 -vt 0.037751 0.792449 -vt 0.485092 0.530882 -vt 0.290177 0.810188 -vt 0.310167 0.792366 -vt 0.664385 0.832703 -vt 0.320049 0.772991 -vt 0.620444 0.760656 -vt 0.300651 0.826008 -vt 0.226391 0.809921 -vt 0.320049 0.845038 -vt 0.789964 0.774296 -vt 0.287330 0.792366 -vt 0.887275 0.000000 -vt 0.202121 0.792366 -vt 0.288288 0.832716 -vt 0.933452 0.000000 -vt 0.211638 0.792366 -vt 0.000000 0.792481 -vt 0.018875 0.800341 -vt 0.788543 0.817632 -vt 0.308405 0.806674 -vt 0.316580 0.814385 -vt 0.283051 0.809921 -vt 0.282234 0.824228 -vt 0.300651 0.806674 -vt 0.300651 0.810188 -vt 0.226391 0.792366 -vt 0.940771 0.755412 -vt 0.950936 0.008249 -vt 0.982377 0.721766 -vt 0.992239 0.008249 -vt 0.971698 0.008249 -vt 0.729058 0.000000 -vt 0.814918 0.000000 -vt 0.643324 0.000000 -vt 0.961070 0.691761 -vt 0.402571 0.008249 -vt 0.235907 0.792366 -vt 0.127497 0.811550 -vt 0.123116 0.818581 -vt 0.123116 0.807181 -vt 0.127497 0.814449 -vt 0.134517 0.818552 -vt 0.130396 0.811543 -vt 0.130396 0.814442 -vt 0.134517 0.807151 -vt 0.101383 0.814099 -vt 0.123116 0.792429 -vt 0.123116 0.814162 -vt 0.837444 0.761082 -vt 0.852838 0.849638 -vt 0.837444 0.849557 -vt 0.822059 0.761163 -vt 0.822059 0.849638 -vt 0.806673 0.761082 -vt 0.806673 0.849557 -vt 0.791279 0.849638 -vt 0.555515 0.792251 -vt 0.540125 0.831298 -vt 0.540125 0.791728 -vt 0.829377 0.721819 -vt 0.814741 0.721819 -vt 0.524736 0.792251 -vt 0.123116 0.807113 -vt 0.132491 0.801514 -vt 0.137863 0.807151 -vt 0.132491 0.797763 -vt 0.137863 0.792404 -vt 0.128740 0.797754 -vt 0.123116 0.792366 -vt 0.065027 0.820479 -vt 0.093140 0.792447 -vt 0.093140 0.820560 -vt 0.577041 0.657568 -vt 0.596954 0.569926 -vt 0.596954 0.657673 -vt 0.557139 0.569926 -vt 0.557139 0.657673 -vt 0.577053 0.784359 -vt 0.596954 0.696717 -vt 0.596954 0.784464 -vt 0.557139 0.696717 -vt 0.557139 0.784464 -vt 0.524736 0.801194 -vt 0.485092 0.811635 -vt 0.485768 0.791728 -vt 0.566606 0.530937 -vt 0.577041 0.569822 -vt 0.577053 0.696612 -vt 0.587488 0.657728 -vt 0.524381 0.811635 -vt 0.485768 0.831543 -vt 0.403905 0.455114 -vt 0.485092 0.524709 -vt 0.402571 0.524709 -vt 0.485092 0.024594 -vt 0.402571 0.260929 -vt 0.402571 0.024594 -vt 0.405201 0.363486 -vt 0.483777 0.455114 -vt 0.402571 0.008249 -vt 0.320050 0.164983 -vt 0.320050 0.008249 -vt 0.485092 0.260929 -vt 0.402571 0.164983 -vt 0.321384 0.262078 -vt 0.401256 0.262078 -vt 0.322680 0.383997 -vt 0.402571 0.531494 -vt 0.320050 0.531494 -vt 0.961070 0.691761 -vt 0.969648 0.535097 -vt 0.969648 0.691761 -vt 0.968332 0.456142 -vt 0.961070 0.535097 -vt 0.960031 0.456142 -vt 0.967054 0.354200 -vt 0.961070 0.236335 -vt 0.959020 0.354200 -vt 0.969647 0.000000 -vt 0.961070 0.000000 -vt 0.320050 0.767754 -vt 0.485092 0.000000 -vt 0.402571 0.000000 -vt 0.980275 0.164984 -vt 0.971698 0.008249 -vt 0.980275 0.008249 -vt 0.978959 0.240089 -vt 0.971698 0.164984 -vt 0.977682 0.337774 -vt 0.970658 0.240089 -vt 0.971698 0.449293 -vt 0.969647 0.337774 -vt 0.971698 0.685554 -vt 0.980275 0.449293 -vt 0.980275 0.685554 -vt 0.990137 0.236335 -vt 0.982376 0.000000 -vt 0.990137 0.000000 -vt 0.992239 0.718231 -vt 1.000000 0.481971 -vt 1.000000 0.718231 -vt 0.997407 0.356149 -vt 0.992239 0.481971 -vt 0.990137 0.356149 -vt 0.987544 0.367330 -vt 0.982376 0.236335 -vt 0.981310 0.478117 -vt 0.988822 0.478117 -vt 0.991173 0.248831 -vt 0.998685 0.248831 -vt 0.982377 0.565103 -vt 0.990137 0.565103 -vt 0.992239 0.164983 -vt 1.000000 0.164983 -vt 0.992239 0.008249 -vt 1.000000 0.008249 -vt 0.982377 0.721766 -vt 0.990137 0.721766 -vt 0.959020 0.164983 -vt 0.950936 0.008249 -vt 0.959020 0.008249 -vt 0.957705 0.257059 -vt 0.950936 0.164983 -vt 0.956427 0.373445 -vt 0.949880 0.257059 -vt 0.950936 0.512729 -vt 0.948855 0.373445 -vt 0.950936 0.748989 -vt 0.959020 0.512729 -vt 0.959020 0.748989 -vt 0.948855 0.236335 -vt 0.940770 0.000000 -vt 0.948855 0.000000 -vt 0.946262 0.382053 -vt 0.940770 0.236335 -vt 0.939715 0.502760 -vt 0.947539 0.502760 -vt 0.940770 0.598749 -vt 0.948855 0.598749 -vt 0.940771 0.755412 -vt 0.948855 0.755412 -vt 0.936059 0.347780 -vt 0.929173 0.236260 -vt 0.938689 0.236260 -vt 0.938689 0.000000 -vt 0.928144 0.445465 -vt 0.927145 0.347780 -vt 0.937355 0.445465 -vt 0.929173 0.520570 -vt 0.925811 0.243865 -vt 0.917629 0.164909 -vt 0.927145 0.164909 -vt 0.927145 0.700006 -vt 0.917629 0.463671 -vt 0.927145 0.463671 -vt 0.924515 0.345806 -vt 0.916600 0.243865 -vt 0.912970 0.362082 -vt 0.905056 0.469401 -vt 0.904056 0.362082 -vt 0.906084 0.236260 -vt 0.915601 0.236260 -vt 0.915601 0.000000 -vt 0.914266 0.469401 -vt 0.906084 0.553248 -vt 0.904056 0.730011 -vt 0.894540 0.493676 -vt 0.904056 0.493676 -vt 0.901426 0.362682 -vt 0.893512 0.251894 -vt 0.902722 0.251894 -vt 0.894540 0.164908 -vt 0.904056 0.164908 -vt 0.882996 0.236260 -vt 0.892512 0.000000 -vt 0.892512 0.236260 -vt 0.889882 0.375544 -vt 0.881967 0.491931 -vt 0.880968 0.375544 -vt 0.891178 0.491931 -vt 0.882996 0.584006 -vt 0.879634 0.260898 -vt 0.871452 0.164909 -vt 0.880968 0.164909 -vt 0.878338 0.381605 -vt 0.870423 0.260898 -vt 0.871452 0.527323 -vt 0.880968 0.527323 -vt 0.880968 0.763658 -vt 0.880968 0.008245 -vt 0.892512 0.740740 -vt 0.892512 0.584006 -vt 0.904056 0.008245 -vt 0.915601 0.709982 -vt 0.915601 0.553248 -vt 0.927145 0.008245 -vt 0.938689 0.677304 -vt 0.938689 0.520570 -vt 0.402571 0.681372 -vt 0.101383 0.792366 -vt 0.852838 0.761163 -vt 0.791279 0.761163 -vt 0.548197 0.831572 -vt 0.837446 0.721776 -vt 0.806671 0.721776 -vt 0.532054 0.831572 -vt 0.128740 0.801504 -vt 0.065027 0.792366 -vt 0.577044 0.530882 -vt 0.577050 0.657673 -vt 0.524736 0.822076 -vt 0.482499 0.363486 -vt 0.399978 0.383997 -vt 0.969647 0.236335 -vt 0.402571 0.767754 -vt 0.980275 0.367330 -vt 0.938689 0.382053 -vt 0.929173 0.000000 -vt 0.917629 0.700006 -vt 0.915601 0.345806 -vt 0.906084 0.000000 -vt 0.894540 0.730011 -vt 0.892512 0.362682 -vt 0.882996 0.000000 -vt 0.869424 0.381605 -vt 0.871452 0.763658 -vt 0.871452 0.008245 -vt 0.882996 0.740740 -vt 0.894540 0.008245 -vt 0.906084 0.709982 -vt 0.917629 0.008245 -vt 0.929173 0.677304 -vt 0.485092 0.681372 -vn 1.0000 0.0000 0.0000 -vn 0.9997 -0.0235 0.0038 -vn 0.9999 0.0128 -0.0037 -vn 0.9999 0.0131 -0.0049 -vn 0.9999 0.0139 -0.0032 -vn 0.9999 0.0154 -0.0060 -vn 0.9998 0.0164 -0.0066 -vn -1.0000 -0.0000 0.0000 -vn -0.9997 -0.0252 -0.0004 -vn -0.9999 0.0137 -0.0022 -vn -0.9999 0.0149 -0.0025 -vn -0.9998 0.0171 -0.0043 -vn -0.9998 0.0178 -0.0052 -vn -0.9998 0.0172 -0.0062 -vn 0.0000 0.3531 0.9356 -vn 0.0000 -0.9272 0.3747 -vn 0.0000 -0.3747 -0.9272 -vn -0.9999 0.0123 -0.0035 -vn -0.9999 0.0164 -0.0046 -vn -0.9999 0.0131 -0.0038 -vn -0.9999 0.0158 -0.0046 -vn -0.9999 0.0154 -0.0056 -vn -0.9999 0.0104 -0.0017 -vn -0.9999 0.0123 -0.0020 -vn -0.9999 0.0133 -0.0022 -vn -0.9998 -0.0176 -0.0003 -vn -0.9998 -0.0220 -0.0003 -vn 0.9999 0.0129 -0.0052 -vn 0.9999 0.0115 -0.0084 -vn 0.9998 0.0162 -0.0061 -vn 0.9999 0.0094 -0.0038 -vn 0.9999 0.0091 -0.0066 -vn 0.9999 0.0126 -0.0049 -vn 0.9999 0.0138 -0.0054 -vn 0.9999 0.0148 -0.0060 -vn 0.9999 0.0102 -0.0030 -vn 0.9999 0.0106 -0.0037 -vn 1.0000 0.0080 -0.0023 -vn 1.0000 0.0086 -0.0020 -vn 0.9999 0.0116 -0.0034 -vn 0.9999 0.0120 -0.0044 -vn 0.9999 0.0126 -0.0029 -vn 0.9998 -0.0179 -0.0003 -vn 0.9999 -0.0137 0.0022 -vn 0.9998 -0.0207 0.0034 -vn 0.9998 -0.0187 0.0031 -vn 0.9999 0.0107 -0.0031 -vn 0.9999 0.0110 -0.0040 -vn 0.9999 0.0136 -0.0055 -vn -0.9998 -0.0198 -0.0003 -vn -0.9999 0.0113 -0.0018 -vn -0.9999 0.0137 -0.0035 -vn -0.9999 0.0144 -0.0042 -vn -0.9999 0.0140 -0.0051 -vn -1.0000 -0.0015 -0.0017 -vn -1.0000 -0.0012 0.0020 -vn 1.0000 -0.0008 -0.0022 -vn 1.0000 -0.0010 0.0023 -vn 1.0000 -0.0004 0.0023 -vn 1.0000 -0.0023 -0.0010 -vn -1.0000 -0.0009 -0.0023 -vn -0.9999 -0.0150 -0.0002 -vn -1.0000 0.0086 -0.0014 -vn -0.9999 0.0109 -0.0032 -vn -0.9999 0.0135 -0.0042 -vn -0.9999 0.0114 -0.0031 -vn -0.9999 0.0149 -0.0046 -vn -0.9999 0.0121 -0.0035 -vn -1.0000 0.0095 -0.0015 -vn -0.9999 -0.0167 -0.0002 -vn -0.9999 0.0124 -0.0032 -vn -0.9999 0.0161 -0.0052 -vn -0.9999 0.0101 -0.0017 -vn -0.9998 -0.0183 -0.0003 -vn 0.0000 -0.9999 -0.0147 -vn 0.9999 0.0113 -0.0045 -vn 0.9999 0.0108 -0.0079 -vn 0.9999 0.0153 -0.0057 -vn 1.0000 0.0095 -0.0027 -vn 0.9999 0.0102 -0.0024 -vn 0.9998 -0.0171 0.0028 -vn 0.9999 0.0103 -0.0042 -vn 0.9999 0.0099 -0.0072 -vn 0.9999 0.0139 -0.0053 -vn 1.0000 0.0087 -0.0025 -vn 1.0000 0.0094 -0.0022 -vn 0.9999 -0.0153 0.0025 -vn 0.0000 -0.3531 -0.9356 -vn 0.0000 0.3747 0.9271 -vn 0.0000 0.3747 0.9272 -vn 0.0000 0.0147 -0.9999 -vn 0.0000 0.0000 1.0000 -vn 1.0000 -0.0023 0.0008 -vn 1.0000 0.0024 0.0010 -vn 1.0000 0.0024 0.0005 -vn -1.0000 0.0018 -0.0016 -vn -1.0000 -0.0021 -0.0012 +mtllib ar15.mtl +o mag +v 0.065068 1.436829 0.651256 +v 0.065068 1.419299 0.637000 +v 0.059066 1.413296 0.636971 +v 0.041467 1.413228 0.651141 +v 0.065068 1.407295 0.636941 +v 0.065068 1.389627 0.651026 +v 0.071070 1.413296 0.636971 +v 0.088670 1.413228 0.651141 +v 0.065068 1.454777 1.360036 +v 0.020068 1.409778 1.359817 +v 0.065068 1.364778 1.359598 +v 0.110068 1.409778 1.359817 +v 0.110068 1.412166 0.869278 +v 0.065068 1.457165 0.869497 +v 0.065068 1.367166 0.869059 +v 0.020068 1.412166 0.869278 +v -0.035037 1.482139 0.646559 +v -0.035037 1.459440 0.632761 +v -0.042801 1.451676 0.632724 +v -0.065567 1.451609 0.646410 +v -0.035037 1.443911 0.632686 +v -0.035037 1.421079 0.646262 +v -0.027273 1.451676 0.632724 +v -0.004507 1.451609 0.646410 +v -0.035037 1.506397 1.349364 +v -0.093247 1.448188 1.349081 +v -0.035037 1.389978 1.348797 +v 0.023173 1.448188 1.349081 +v 0.023173 1.450556 0.862582 +v -0.035037 1.508766 0.862866 +v -0.035037 1.392347 0.862299 +v -0.093247 1.450556 0.862582 +v -0.107706 1.399587 1.348511 +v -0.107706 0.706169 1.358716 +v -0.107706 0.706620 1.389339 +v -0.107706 1.400038 1.379134 +v -0.107706 0.697607 0.776877 +v -0.107706 0.695354 0.623761 +v -0.100015 0.394515 0.626606 +v -0.100015 0.370726 0.772163 +v -0.103805 0.127366 0.591050 +v -0.103805 0.085949 0.733473 +v -0.107706 -0.074583 0.541713 +v -0.107706 -0.132123 0.684096 +v -0.107706 -0.584175 0.513467 +v -0.107706 -0.526635 0.371085 +v -0.107706 -0.550427 0.362104 +v -0.107706 -0.607967 0.504486 +v 0.133589 1.399587 1.348511 +v 0.133589 1.400038 1.379134 +v 0.133589 0.706620 1.389338 +v 0.133589 0.706169 1.358716 +v 0.133589 0.697607 0.776877 +v 0.126007 0.370727 0.772163 +v 0.126007 0.394515 0.626606 +v 0.133589 0.695354 0.623761 +v 0.129743 0.085949 0.733473 +v 0.129743 0.127366 0.591050 +v 0.133589 -0.132123 0.684096 +v 0.133589 -0.074583 0.541713 +v 0.133589 -0.584175 0.513467 +v 0.133589 -0.607967 0.504486 +v 0.133589 -0.550427 0.362104 +v 0.133589 -0.526635 0.371085 +v -0.107706 1.388772 0.613557 +v 0.133589 1.388772 0.613557 +v -0.107706 -0.814333 1.082995 +v 0.133589 -0.814333 1.082995 +v 0.133589 -0.362281 1.253623 +v -0.107706 -0.362281 1.253623 +v 0.129743 -0.079720 1.303164 +v -0.103805 -0.079720 1.303164 +v 0.126007 0.275573 1.354391 +v -0.100015 0.275573 1.354391 +v -0.107706 -0.826617 1.045538 +v 0.133589 -0.826617 1.045538 +v 0.133589 -0.838125 1.074014 +v -0.107706 -0.838125 1.074015 +v -0.107706 -0.785585 0.944003 +v -0.107706 -0.802859 1.055140 +v -0.107706 -0.761826 0.953604 +v -0.107706 -0.648384 0.604497 +v 0.133589 -0.648384 0.604497 +v 0.133589 -0.699463 0.730893 +v -0.107706 -0.699463 0.730893 +v 0.133589 -0.785585 0.944003 +v 0.133589 -0.761826 0.953604 +v 0.133589 -0.802825 1.054518 +v 0.133589 -0.675671 0.739874 +v 0.133589 -0.624591 0.613478 +v 0.108510 -0.624591 0.613478 +v 0.108510 -0.172539 0.784106 +v 0.133589 -0.172539 0.784106 +v 0.133589 -0.350773 1.225147 +v 0.129743 -0.071437 1.274679 +v 0.129743 0.020090 0.959944 +v 0.133589 -0.223618 0.910502 +v 0.129743 0.056857 0.833512 +v 0.105469 0.056857 0.833512 +v 0.126007 0.280331 1.325280 +v 0.126007 0.332900 1.003619 +v 0.126007 0.354017 0.874404 +v 0.102515 0.354017 0.874404 +v 0.133589 0.701190 1.020352 +v 0.133589 0.699190 0.884427 +v 0.108510 0.699190 0.884427 +v 0.133589 1.391026 0.766673 +v 0.108510 1.392608 0.874223 +v 0.133589 1.392608 0.874223 +v 0.133589 1.394608 1.010147 +v -0.107706 -0.802825 1.054518 +v -0.079881 -0.802825 1.054518 +v -0.079881 -0.826617 1.045538 +v -0.079881 -0.785585 0.944003 +v -0.079881 -0.761793 0.952983 +v -0.107706 -0.675671 0.739874 +v -0.107706 -0.624591 0.613478 +v -0.103805 -0.071437 1.274679 +v -0.107706 -0.350773 1.225147 +v -0.076873 -0.071437 1.274679 +v -0.076873 -0.041902 1.173115 +v -0.079881 -0.309741 1.123612 +v -0.079881 -0.350773 1.225147 +v -0.103805 0.020090 0.959944 +v -0.103805 0.056857 0.833512 +v -0.107706 -0.172539 0.784106 +v -0.107706 -0.223618 0.910502 +v -0.100015 0.280331 1.325280 +v -0.073951 0.280331 1.325280 +v -0.073951 0.297294 1.221481 +v -0.100015 0.332900 1.003619 +v -0.100015 0.354017 0.874405 +v -0.079881 0.706169 1.358716 +v -0.079881 0.704562 1.249526 +v -0.107706 0.701190 1.020352 +v -0.107706 0.699190 0.884427 +v -0.107706 1.391026 0.766673 +v -0.107706 1.392608 0.874223 +v -0.107706 1.394608 1.010147 +v -0.079880 1.397981 1.239322 +v -0.079880 1.399587 1.348511 +v -0.107706 1.395898 1.097803 +v -0.107706 0.702480 1.108007 +v -0.107706 0.704562 1.249526 +v -0.107706 1.397981 1.239322 +v -0.100015 0.319281 1.086947 +v -0.100015 0.297294 1.221481 +v -0.103805 -0.003621 1.041479 +v -0.103805 -0.041902 1.173115 +v -0.107706 -0.256559 0.992014 +v -0.107706 -0.309741 1.123612 +v -0.107706 -0.761793 0.952983 +v -0.107706 -0.708611 0.821385 +v -0.107706 -0.732403 0.812404 +v 0.133589 1.395898 1.097803 +v 0.133589 1.397981 1.239322 +v 0.133589 0.704562 1.249526 +v 0.133589 0.702480 1.108007 +v 0.126007 0.297294 1.221481 +v 0.126007 0.319281 1.086947 +v 0.129743 -0.041902 1.173115 +v 0.129743 -0.003621 1.041479 +v 0.133589 -0.309741 1.123612 +v 0.133589 -0.256559 0.992013 +v 0.133589 -0.761793 0.952983 +v 0.133589 -0.732403 0.812404 +v 0.133589 -0.708611 0.821385 +v 0.133589 -0.802859 1.055139 +v 0.133589 1.468057 1.096741 +v 0.133589 1.470140 1.238260 +v 0.133589 1.466767 1.009086 +v -0.107706 1.468057 1.096741 +v -0.107706 1.470140 1.238260 +v -0.107706 1.466767 1.009086 +v -0.107706 1.471747 1.347449 +v -0.107706 1.464767 0.873161 +v -0.107706 1.463184 0.765611 +v -0.107706 1.460932 0.612495 +v 0.133589 1.471747 1.347449 +v 0.133589 1.464767 0.873161 +v 0.133589 1.463184 0.765611 +v 0.133589 1.460932 0.612495 +v 0.133589 1.472197 1.378073 +v -0.107706 1.472197 1.378073 +v 0.109951 1.397981 1.239322 +v 0.109951 1.399587 1.348511 +v 0.109951 0.706169 1.358716 +v 0.109951 0.704562 1.249526 +v 0.103865 0.280331 1.325280 +v 0.103865 0.297294 1.221481 +v 0.106864 -0.071437 1.274679 +v 0.106864 -0.041902 1.173115 +v 0.109951 -0.350773 1.225147 +v 0.109951 -0.309741 1.123612 +v 0.109951 -0.802825 1.054518 +v 0.109951 -0.761793 0.952983 +v 0.109951 -0.785585 0.944003 +v 0.109951 -0.826617 1.045538 +v 0.110896 -0.708611 0.821385 +v 0.110896 -0.675671 0.739874 +v 0.110896 -0.699463 0.730893 +v 0.110896 -0.732403 0.812404 +v 0.107779 -0.003621 1.041479 +v 0.110896 -0.256559 0.992014 +v 0.110896 -0.223618 0.910502 +v 0.107779 0.020090 0.959944 +v 0.104750 0.319281 1.086947 +v 0.104750 0.332900 1.003619 +v 0.110896 0.702480 1.108007 +v 0.110896 0.701190 1.020352 +v 0.110896 1.394608 1.010147 +v 0.110896 1.395898 1.097803 +v 0.108510 -0.584175 0.513467 +v 0.108510 -0.607967 0.504486 +v 0.108510 -0.648384 0.604497 +v 0.108510 -0.132123 0.684096 +v 0.105469 0.085949 0.733473 +v 0.102515 0.370727 0.772163 +v 0.108510 0.697607 0.776877 +v 0.108510 1.391026 0.766673 +v -0.079881 -0.624591 0.613478 +v -0.079881 -0.648384 0.604497 +v -0.079881 -0.607967 0.504486 +v -0.079881 -0.584175 0.513467 +v -0.076873 0.056857 0.833512 +v -0.076873 0.085949 0.733473 +v -0.079881 -0.132123 0.684096 +v -0.079881 -0.172539 0.784106 +v -0.073951 0.354017 0.874405 +v -0.073951 0.370726 0.772163 +v -0.079881 0.699190 0.884427 +v -0.079881 0.697607 0.776877 +v -0.079880 1.391026 0.766673 +v -0.079880 1.392608 0.874223 +v -0.079881 -0.708611 0.821385 +v -0.079881 -0.732403 0.812404 +v -0.079881 -0.699463 0.730893 +v -0.079881 -0.675671 0.739874 +v -0.076873 -0.003621 1.041479 +v -0.076873 0.020090 0.959944 +v -0.079881 -0.223618 0.910502 +v -0.079881 -0.256559 0.992014 +v -0.073951 0.319281 1.086947 +v -0.073951 0.332900 1.003619 +v -0.079881 0.702480 1.108007 +v -0.079881 0.701190 1.020352 +v -0.079880 1.394608 1.010147 +v -0.079880 1.395898 1.097803 +v -0.107706 -0.584208 0.514088 +v 0.133589 -0.584208 0.514088 +v 0.133589 -0.624624 0.614099 +v -0.107706 -0.624624 0.614099 +v -0.107706 -0.675704 0.740495 +v 0.133589 -0.675704 0.740495 +v 0.133589 -0.708644 0.822006 +v -0.107706 -0.708644 0.822006 +v -0.107706 1.400038 1.379134 +v 0.133589 1.400038 1.379134 +v 0.133589 1.472197 1.378073 +v -0.107706 1.472197 1.378073 +v -0.092393 1.399587 1.348511 +v -0.094841 1.399803 1.363149 +v -0.092393 0.706394 1.374027 +v -0.092393 0.706169 1.358716 +v 0.118276 1.399587 1.348511 +v 0.118276 0.706169 1.358716 +v 0.118276 0.706394 1.374027 +v 0.120724 1.399803 1.363149 +v -0.092393 1.388998 0.628868 +v -0.092393 0.695579 0.639073 +v 0.118276 0.695579 0.639073 +v 0.118276 1.388998 0.628868 +v 0.118276 0.697607 0.776877 +v 0.118276 1.391026 0.766673 +v 0.118276 1.392608 0.874223 +v 0.118276 0.699190 0.884427 +v 0.118276 0.701190 1.020352 +v 0.118276 1.394608 1.010147 +v -0.092393 1.391026 0.766673 +v -0.092393 0.697607 0.776877 +v -0.092393 1.392608 0.874223 +v -0.092393 1.394608 1.010147 +v -0.092393 0.701190 1.020352 +v -0.092393 0.699190 0.884427 +v -0.092393 1.395898 1.097803 +v -0.092393 1.397981 1.239322 +v -0.092393 0.704562 1.249526 +v -0.092393 0.702480 1.108007 +v 0.118276 1.395898 1.097803 +v 0.118276 0.702480 1.108007 +v 0.118276 0.704562 1.249526 +v 0.118276 1.397981 1.239322 +v 0.118276 1.468057 1.096741 +v 0.118276 1.470140 1.238260 +v 0.118276 1.466767 1.009086 +v -0.092393 1.468057 1.096741 +v -0.092393 1.470140 1.238260 +v -0.092393 1.466767 1.009086 +v -0.092393 1.471747 1.347449 +v -0.092393 1.464767 0.873161 +v -0.092393 1.463184 0.765611 +v -0.092393 1.461156 0.627807 +v 0.118276 1.471747 1.347449 +v 0.118276 1.464767 0.873161 +v 0.118276 1.463184 0.765611 +v 0.118276 1.461156 0.627807 +v 0.118276 1.472197 1.378073 +v -0.092393 1.472197 1.378073 +v -0.107706 1.399813 1.363823 +v -0.107706 1.471972 1.362761 +v 0.133589 1.471972 1.362761 +v 0.133589 1.399813 1.363823 +v 0.078397 1.500497 1.250294 +v 0.078397 1.499373 1.127480 +v 0.078397 1.501365 1.345050 +v 0.087913 1.500497 1.250294 +v 0.087913 1.501365 1.345050 +v 0.078397 1.498677 1.051410 +v 0.087913 1.498677 1.051410 +v -0.052514 1.500497 1.250294 +v -0.052514 1.501365 1.345050 +v 0.087913 1.499373 1.127480 +v -0.062030 1.501365 1.345050 +v -0.062030 1.500497 1.250294 +v -0.052514 1.499373 1.127480 +v -0.062030 1.499373 1.127480 +v -0.052514 1.498677 1.051410 +v -0.062030 1.498677 1.051410 +v -0.107706 1.399587 1.348511 +v -0.107706 0.706169 1.358716 +v -0.107706 0.706620 1.389339 +v -0.107706 1.400038 1.379134 +v -0.107706 0.697607 0.776877 +v -0.107706 0.695354 0.623761 +v -0.100015 0.394515 0.626606 +v -0.100015 0.370726 0.772163 +v -0.103805 0.127366 0.591050 +v -0.103805 0.085949 0.733473 +v -0.107706 -0.074583 0.541713 +v -0.107706 -0.132123 0.684096 +v -0.107706 -0.584175 0.513467 +v -0.107706 -0.526635 0.371085 +v 0.133589 1.399587 1.348511 +v 0.133589 1.400038 1.379134 +v 0.133589 0.706620 1.389338 +v 0.133589 0.706169 1.358716 +v 0.133589 0.697607 0.776877 +v 0.126007 0.370727 0.772163 +v 0.126007 0.394515 0.626606 +v 0.133589 0.695354 0.623761 +v 0.129743 0.085949 0.733473 +v 0.129743 0.127366 0.591050 +v 0.133589 -0.132123 0.684096 +v 0.133589 -0.074583 0.541713 +v 0.133589 -0.584175 0.513467 +v 0.133589 -0.526635 0.371085 +v -0.107706 1.388772 0.613557 +v 0.133589 1.388772 0.613557 +v -0.107706 -0.814333 1.082995 +v 0.133589 -0.814333 1.082995 +v 0.133589 -0.362281 1.253623 +v -0.107706 -0.362281 1.253623 +v 0.129743 -0.079720 1.303164 +v -0.103805 -0.079720 1.303164 +v 0.126007 0.275573 1.354391 +v -0.100015 0.275573 1.354391 +v 0.133589 -0.802825 1.054518 +v 0.133589 -0.675671 0.739874 +v 0.133589 -0.624591 0.613478 +v 0.108510 -0.624591 0.613478 +v 0.108510 -0.172539 0.784106 +v 0.133589 -0.172539 0.784106 +v 0.133589 -0.350773 1.225147 +v 0.129743 -0.071437 1.274679 +v 0.129743 0.020090 0.959944 +v 0.133589 -0.223618 0.910502 +v 0.129743 0.056857 0.833512 +v 0.105469 0.056857 0.833512 +v 0.126007 0.280331 1.325280 +v 0.126007 0.332900 1.003619 +v 0.126007 0.354017 0.874404 +v 0.102515 0.354017 0.874404 +v 0.133589 0.701190 1.020352 +v 0.133589 0.699190 0.884427 +v 0.108510 0.699190 0.884427 +v 0.133589 1.391026 0.766673 +v 0.108510 1.392608 0.874223 +v 0.133589 1.392608 0.874223 +v 0.133589 1.394608 1.010147 +v -0.107706 -0.802825 1.054518 +v -0.079881 -0.802825 1.054518 +v -0.079881 -0.761793 0.952983 +v -0.107706 -0.675671 0.739874 +v -0.107706 -0.624591 0.613478 +v -0.103805 -0.071437 1.274679 +v -0.107706 -0.350773 1.225147 +v -0.076873 -0.071437 1.274679 +v -0.076873 -0.041902 1.173115 +v -0.079881 -0.309741 1.123612 +v -0.079881 -0.350773 1.225147 +v -0.103805 0.020090 0.959944 +v -0.103805 0.056857 0.833512 +v -0.107706 -0.172539 0.784106 +v -0.107706 -0.223618 0.910502 +v -0.100015 0.280331 1.325280 +v -0.073951 0.280331 1.325280 +v -0.073951 0.297294 1.221481 +v -0.100015 0.332900 1.003619 +v -0.100015 0.354017 0.874405 +v -0.079881 0.706169 1.358716 +v -0.079881 0.704562 1.249526 +v -0.107706 0.701190 1.020352 +v -0.107706 0.699190 0.884427 +v -0.107706 1.391026 0.766673 +v -0.107706 1.392608 0.874223 +v -0.107706 1.394608 1.010147 +v -0.079880 1.397981 1.239322 +v -0.079880 1.399587 1.348511 +v -0.107706 1.395898 1.097803 +v -0.107706 0.702480 1.108007 +v -0.107706 0.704562 1.249526 +v -0.107706 1.397981 1.239322 +v -0.100015 0.319281 1.086947 +v -0.100015 0.297294 1.221481 +v -0.103805 -0.003621 1.041479 +v -0.103805 -0.041902 1.173115 +v -0.107706 -0.256559 0.992014 +v -0.107706 -0.309741 1.123612 +v -0.107706 -0.761793 0.952983 +v -0.107706 -0.708611 0.821385 +v 0.133589 1.395898 1.097803 +v 0.133589 1.397981 1.239322 +v 0.133589 0.704562 1.249526 +v 0.133589 0.702480 1.108007 +v 0.126007 0.297294 1.221481 +v 0.126007 0.319281 1.086947 +v 0.129743 -0.041902 1.173115 +v 0.129743 -0.003621 1.041479 +v 0.133589 -0.309741 1.123612 +v 0.133589 -0.256559 0.992013 +v 0.133589 -0.761793 0.952983 +v 0.133589 -0.708611 0.821385 +v -0.107706 1.460932 0.612495 +v 0.133589 1.460932 0.612495 +v 0.109951 1.397981 1.239322 +v 0.109951 1.399587 1.348511 +v 0.109951 0.706169 1.358716 +v 0.109951 0.704562 1.249526 +v 0.103865 0.280331 1.325280 +v 0.103865 0.297294 1.221481 +v 0.106864 -0.071437 1.274679 +v 0.106864 -0.041902 1.173115 +v 0.109951 -0.350773 1.225147 +v 0.109951 -0.309741 1.123612 +v 0.109951 -0.802825 1.054518 +v 0.109951 -0.761793 0.952983 +v 0.110896 -0.708611 0.821385 +v 0.110896 -0.675671 0.739874 +v 0.107779 -0.003621 1.041479 +v 0.110896 -0.256559 0.992014 +v 0.110896 -0.223618 0.910502 +v 0.107779 0.020090 0.959944 +v 0.104750 0.319281 1.086947 +v 0.104750 0.332900 1.003619 +v 0.110896 0.702480 1.108007 +v 0.110896 0.701190 1.020352 +v 0.110896 1.394608 1.010147 +v 0.110896 1.395898 1.097803 +v 0.108510 -0.584175 0.513467 +v 0.108510 -0.132123 0.684096 +v 0.105469 0.085949 0.733473 +v 0.102515 0.370727 0.772163 +v 0.108510 0.697607 0.776877 +v 0.108510 1.391026 0.766673 +v -0.079881 -0.624591 0.613478 +v -0.079881 -0.584175 0.513467 +v -0.076873 0.056857 0.833512 +v -0.076873 0.085949 0.733473 +v -0.079881 -0.132123 0.684096 +v -0.079881 -0.172539 0.784106 +v -0.073951 0.354017 0.874405 +v -0.073951 0.370726 0.772163 +v -0.079881 0.699190 0.884427 +v -0.079881 0.697607 0.776877 +v -0.079880 1.391026 0.766673 +v -0.079880 1.392608 0.874223 +v -0.079881 -0.708611 0.821385 +v -0.079881 -0.675671 0.739874 +v -0.076873 -0.003621 1.041479 +v -0.076873 0.020090 0.959944 +v -0.079881 -0.223618 0.910502 +v -0.079881 -0.256559 0.992014 +v -0.073951 0.319281 1.086947 +v -0.073951 0.332900 1.003619 +v -0.079881 0.702480 1.108007 +v -0.079881 0.701190 1.020352 +v -0.079880 1.394608 1.010147 +v -0.079880 1.395898 1.097803 +vn -1.0000 -0.0000 -0.0000 +vn -0.9997 -0.0235 -0.0038 +vn -0.9999 0.0128 0.0037 +vn -0.9999 0.0131 0.0047 +vn -0.9999 0.0139 0.0032 +vn -0.9999 0.0156 0.0062 +vn -0.9998 0.0164 0.0066 +vn 1.0000 -0.0000 -0.0000 +vn 0.9997 -0.0252 0.0004 +vn 0.9999 0.0137 0.0022 +vn 0.9999 0.0148 0.0025 +vn 0.9998 0.0171 0.0043 +vn 0.9998 0.0178 0.0052 +vn 0.9998 0.0172 0.0062 +vn -0.0000 0.3532 -0.9356 +vn -0.0000 -0.9272 -0.3747 +vn -0.0000 -0.3747 0.9272 +vn 0.9999 0.0126 0.0036 +vn 0.9999 0.0164 0.0046 +vn 0.9999 0.0131 0.0038 +vn 0.9999 0.0158 0.0046 +vn 0.9999 0.0154 0.0056 +vn 0.9999 0.0104 0.0017 +vn 0.9999 0.0123 0.0020 +vn 0.9999 0.0131 0.0022 +vn 0.9998 -0.0176 0.0003 +vn 0.9998 -0.0220 0.0003 +vn -0.9999 0.0129 0.0052 +vn -0.9999 0.0115 0.0084 +vn -0.9998 0.0162 0.0061 +vn -0.9999 0.0094 0.0038 +vn -0.9999 0.0091 0.0066 +vn -0.9999 0.0126 0.0049 +vn -0.9999 0.0139 0.0054 +vn -0.9999 0.0148 0.0060 +vn -0.9999 0.0102 0.0030 +vn -0.9999 0.0104 0.0033 +vn -1.0000 0.0080 0.0023 +vn -1.0000 0.0088 0.0020 +vn -0.9999 0.0116 0.0034 +vn -0.9999 0.0120 0.0044 +vn -0.9999 0.0126 0.0029 +vn -0.9998 -0.0179 0.0003 +vn -0.9999 -0.0137 -0.0022 +vn -0.9998 -0.0207 -0.0034 +vn -0.9998 -0.0187 -0.0031 +vn -0.9999 0.0107 0.0031 +vn -0.9999 0.0110 0.0038 +vn -0.9999 0.0136 0.0055 +vn 0.9998 -0.0198 0.0003 +vn 0.9999 0.0113 0.0018 +vn 0.9999 0.0122 0.0020 +vn 0.9999 0.0139 0.0037 +vn 0.9999 0.0144 0.0042 +vn 0.9999 0.0140 0.0050 +vn 1.0000 -0.0015 0.0017 +vn 1.0000 -0.0012 -0.0020 +vn -1.0000 -0.0008 0.0022 +vn -1.0000 -0.0010 -0.0023 +vn -1.0000 -0.0004 -0.0023 +vn -1.0000 -0.0023 0.0010 +vn 1.0000 -0.0009 0.0023 +vn 0.9999 -0.0150 0.0002 +vn 1.0000 0.0086 0.0014 +vn 0.9999 0.0109 0.0032 +vn 0.9999 0.0135 0.0042 +vn 0.9999 0.0115 0.0032 +vn 0.9999 0.0149 0.0046 +vn 0.9999 0.0121 0.0035 +vn 1.0000 0.0095 0.0015 +vn 0.9999 -0.0167 0.0002 +vn 0.9999 0.0125 0.0033 +vn 0.9999 0.0160 0.0052 +vn 0.9999 0.0101 0.0017 +vn 0.9998 -0.0183 0.0003 +vn -0.0000 -0.9999 0.0147 +vn -0.9999 0.0114 0.0045 +vn -0.9999 0.0108 0.0079 +vn -0.9999 0.0153 0.0057 +vn -1.0000 0.0095 0.0027 +vn -0.9999 0.0102 0.0025 +vn -0.9999 -0.0171 -0.0028 +vn -0.9999 0.0102 0.0042 +vn -0.9999 0.0099 0.0072 +vn -0.9999 0.0139 0.0053 +vn -1.0000 0.0087 0.0025 +vn -1.0000 0.0094 0.0022 +vn -0.9999 -0.0153 -0.0025 +vn -0.0000 -0.3532 0.9356 +vn -0.0000 0.3531 -0.9356 +vn -0.0000 -0.3531 0.9356 +vn -0.0000 0.3747 -0.9271 +vn -0.0000 -0.3747 0.9271 +vn -0.0000 0.3747 -0.9272 +vn -0.0000 0.0147 0.9999 +vn 0.0001 -0.0000 -1.0000 +vn -0.0000 -0.0000 -1.0000 +vn -1.0000 -0.0023 -0.0008 vn -1.0000 0.0024 -0.0010 -vn 1.0000 -0.0010 0.0024 -vn 0.0000 -0.0157 0.9999 -vn 0.9994 -0.0339 -0.0005 -vn 0.8112 0.0604 -0.5816 -vn -0.9863 0.0024 -0.1649 -vn 0.0000 -0.0147 0.9999 -vn 0.7010 -0.1212 -0.7028 -vn 0.1631 -0.0109 -0.9865 -vn 0.0000 0.9999 0.0147 -vn 0.5878 0.8090 0.0079 -vn 0.3071 0.8163 -0.4892 -vn -0.7010 -0.1212 -0.7028 -vn -0.4897 0.4583 -0.7417 -vn 0.6139 -0.7893 -0.0125 -vn 0.6122 -0.7906 -0.0092 -vn 0.6101 -0.7922 -0.0123 -vn 0.6034 -0.7973 -0.0117 -vn 0.6032 -0.7975 -0.0092 -vn 0.6015 -0.7988 -0.0126 -vn -0.5528 0.8333 0.0106 -vn -0.5512 0.8343 0.0123 -vn -0.5495 0.8354 0.0110 -vn -0.3193 0.8162 -0.4815 -vn 0.0000 0.7985 0.6020 -vn -0.6049 -0.7962 -0.0136 -vn -0.6034 -0.7973 -0.0117 -vn -0.6046 -0.7965 -0.0096 -vn 0.0000 0.0000 -1.0000 -vn -0.5590 0.1816 -0.8090 -vn -0.5651 0.8250 0.0121 -vn -0.5646 0.8252 0.0144 -vn 0.0023 1.0000 0.0079 -vn 0.0000 1.0000 0.0092 -vn 0.0023 1.0000 0.0082 -vn 0.0022 1.0000 0.0081 -vn 0.0000 0.9999 0.0116 -vn 0.0021 1.0000 0.0083 -vn -0.0001 1.0000 0.0067 -vn -0.0023 0.9999 0.0102 -vn -0.0000 1.0000 0.0069 -vn -0.0023 0.9999 0.0101 -vn -0.0022 0.9999 0.0103 -vn 0.0000 1.0000 0.0091 -vn -0.0021 0.9999 0.0100 -vn 0.0001 0.9999 0.0114 -vn 0.0000 0.0807 -0.9967 -vn -0.6133 -0.7898 -0.0135 -vn -0.6100 -0.7923 -0.0113 -vn -0.6134 -0.7897 -0.0099 -vn -0.5613 0.8276 0.0107 -vn -0.5596 0.8286 0.0147 -vn -0.5585 0.8295 0.0106 -vn 0.5512 0.8343 0.0123 -vn 0.5533 0.8329 0.0120 -vn 0.5506 0.8347 0.0099 -vn 0.6188 -0.7855 -0.0130 -vn 0.6172 -0.7867 -0.0116 -vn 0.5591 0.8290 0.0145 -vn 0.5617 0.8272 0.0124 -vn 0.5593 0.8289 0.0100 -vn -0.6172 -0.7867 -0.0116 -vn -0.6153 -0.7882 -0.0111 -vn 0.5639 0.8257 0.0140 -vn 0.5651 0.8250 0.0121 -vn 1.0000 -0.0024 0.0018 -vn 1.0000 -0.0026 0.0020 -vn -1.0000 0.0006 -0.0032 -vn -1.0000 -0.0030 -0.0014 -vn -1.0000 0.0006 -0.0030 -vn -1.0000 -0.0028 -0.0013 -vn -1.0000 0.0005 -0.0027 -vn -1.0000 -0.0025 -0.0011 -vn 1.0000 -0.0020 0.0019 -vn 1.0000 -0.0030 0.0018 -vn -1.0000 0.0009 -0.0033 -vn -1.0000 -0.0031 -0.0014 -vn 0.9997 -0.0256 -0.0004 -vn 0.9999 0.0139 -0.0023 -vn 0.9999 0.0150 -0.0028 -vn 0.9998 0.0179 -0.0041 -vn 0.9998 0.0169 -0.0057 -vn 0.9998 0.0180 -0.0052 -vn -0.9997 -0.0231 0.0038 -vn -0.9999 0.0126 -0.0037 -vn -0.9999 0.0130 -0.0026 -vn -0.9999 0.0135 -0.0045 -vn -0.9999 0.0150 -0.0062 -vn -0.9998 0.0162 -0.0065 -vn -0.9999 0.0119 -0.0050 -vn -0.9999 0.0095 -0.0064 -vn -0.9999 0.0142 -0.0082 -vn -0.9999 0.0146 -0.0059 -vn -0.9999 0.0101 -0.0029 -vn -0.9999 0.0104 -0.0022 -vn -0.9999 0.0115 -0.0033 -vn -0.9999 0.0123 -0.0040 -vn -0.9998 -0.0176 0.0029 -vn -0.9998 -0.0204 0.0033 -vn 0.9999 0.0133 -0.0039 -vn 0.9999 0.0125 -0.0042 -vn 0.9999 0.0166 -0.0049 -vn 0.9999 0.0104 -0.0025 -vn 0.9999 0.0130 -0.0046 -vn 0.9999 0.0158 -0.0036 -vn 0.9999 0.0151 -0.0051 -vn 0.9999 0.0160 -0.0047 -vn 0.9999 0.0105 -0.0017 -vn 0.9999 0.0113 -0.0019 -vn 1.0000 0.0084 -0.0014 -vn 0.9999 0.0125 -0.0020 -vn 0.9999 0.0135 -0.0024 -vn 0.9998 -0.0178 0.0029 -vn 0.9999 -0.0146 -0.0002 -vn 0.9998 -0.0223 -0.0003 -vn 0.9998 -0.0201 -0.0003 -vn 0.9999 0.0115 -0.0019 -vn 0.9999 0.0124 -0.0022 -vn 0.9999 0.0146 -0.0042 -vn 0.9999 0.0137 -0.0047 -vn -0.9998 -0.0184 0.0030 -vn -0.9999 0.0106 -0.0031 -vn -0.9999 0.0109 -0.0022 -vn -0.9999 0.0113 -0.0037 -vn -0.9999 0.0125 -0.0052 -vn -0.9999 0.0134 -0.0054 -vn -1.0000 -0.0002 -0.0023 -vn -1.0000 -0.0023 0.0009 -vn -1.0000 -0.0023 0.0005 -vn 1.0000 -0.0022 -0.0007 -vn 1.0000 -0.0018 0.0014 -vn -0.9999 -0.0141 0.0023 -vn -1.0000 0.0082 -0.0024 -vn -0.9999 0.0103 -0.0042 -vn -1.0000 0.0077 -0.0052 -vn -0.9999 0.0112 -0.0068 -vn -0.9999 0.0107 -0.0045 -vn -0.9999 0.0086 -0.0057 -vn -0.9999 0.0124 -0.0075 -vn -1.0000 0.0090 -0.0026 -vn -1.0000 0.0093 -0.0019 -vn -0.9999 -0.0159 0.0026 -vn -0.9999 0.0114 -0.0047 -vn -0.9999 0.0091 -0.0061 -vn -0.9999 0.0131 -0.0081 -vn -1.0000 0.0096 -0.0028 -vn -0.9999 0.0099 -0.0020 -vn -0.9998 -0.0173 0.0028 -vn 0.9999 0.0128 -0.0029 -vn 0.9999 0.0129 -0.0038 -vn 0.9999 0.0154 -0.0059 -vn 0.9999 0.0100 -0.0016 -vn 0.9998 -0.0181 -0.0003 -vn 0.9999 0.0115 -0.0026 -vn 0.9999 0.0117 -0.0034 -vn 0.9999 0.0142 -0.0049 -vn 1.0000 0.0091 -0.0015 -vn 0.9999 -0.0161 -0.0002 -vn 1.0000 -0.0007 0.0023 -vn 1.0000 0.0015 0.0020 -vn -1.0000 0.0024 -0.0002 +vn -1.0000 0.0024 -0.0005 +vn 1.0000 0.0018 0.0016 +vn 1.0000 -0.0021 0.0012 +vn 1.0000 0.0024 0.0010 vn -1.0000 -0.0010 -0.0024 -vn -1.0000 -0.0005 -0.0024 -vn 0.9863 0.0024 -0.1649 -vn -0.9994 -0.0339 -0.0005 -vn -0.8272 0.5267 -0.1956 -vn -0.0523 0.0147 -0.9985 -vn 0.5622 0.8115 -0.1598 -vn 0.0523 0.0147 -0.9985 -vn 0.6045 -0.7966 -0.0099 -vn 0.6062 -0.7953 -0.0064 -vn 0.6024 -0.7981 -0.0065 -vn 0.5965 -0.8026 -0.0073 -vn 0.5945 -0.8040 -0.0065 -vn -0.5446 0.8387 0.0052 -vn -0.5443 0.8388 0.0077 -vn -0.0272 0.8176 -0.5752 -vn -0.5986 -0.8010 -0.0076 -vn -0.5965 -0.8026 -0.0073 -vn -0.5590 -0.1816 0.8090 -vn 0.4756 0.3454 0.8090 -vn 0.5806 0.8103 -0.0800 -vn -0.5620 0.8271 0.0076 -vn -0.5633 0.8262 0.0092 -vn -0.5602 0.8283 0.0084 -vn 0.0026 1.0000 0.0090 -vn 0.0024 1.0000 0.0091 -vn -0.0010 1.0000 0.0068 -vn 0.0011 0.9999 0.0114 -vn 0.0010 0.9999 0.0116 -vn -0.0011 1.0000 0.0069 -vn -0.0026 1.0000 0.0091 -vn 0.0009 0.9999 0.0114 -vn -0.0010 1.0000 0.0071 -vn -0.0024 1.0000 0.0092 -vn -0.0009 1.0000 0.0069 -vn 0.0011 0.9999 0.0112 -vn -0.6062 -0.7953 -0.0075 -vn -0.6032 -0.7975 -0.0095 -vn -0.6028 -0.7978 -0.0055 -vn -0.5523 0.8336 0.0053 -vn -0.5539 0.8326 0.0089 -vn -0.5506 0.8347 0.0094 -vn 0.5443 0.8388 0.0077 -vn 0.5451 0.8383 0.0054 -vn 0.6137 -0.7895 -0.0096 -vn 0.6160 -0.7877 -0.0066 -vn 0.6141 -0.7892 -0.0072 -vn 0.5500 0.8351 0.0079 -vn 0.5528 0.8333 0.0100 -vn 0.5528 0.8333 0.0055 -vn -0.6141 -0.7892 -0.0072 -vn -0.6127 -0.7902 -0.0089 -vn -0.6134 -0.7898 -0.0050 -vn 0.5601 0.8284 0.0071 -vn 0.5625 0.8268 0.0098 -vn 0.5620 0.8271 0.0076 -vn 1.0000 0.0013 0.0027 -vn 1.0000 -0.0028 0.0010 -vn 1.0000 0.0014 0.0030 -vn 1.0000 -0.0030 0.0012 -vn -1.0000 0.0027 -0.0019 -vn -1.0000 0.0025 -0.0018 -vn -1.0000 0.0022 -0.0016 -vn 1.0000 0.0014 0.0024 -vn 1.0000 -0.0026 0.0009 -vn 1.0000 0.0016 0.0031 -vn 1.0000 -0.0032 0.0013 -vn -1.0000 0.0029 -0.0018 -vn -0.0000 0.4647 0.8855 -vn 0.9102 0.0020 0.4142 -vn 0.0000 0.9122 0.4097 -vn 0.4604 0.0043 0.8877 -vn 0.0000 -0.9082 0.4186 -vn -0.4604 0.0043 0.8877 -vn 0.0000 -0.4560 0.8900 -vn -0.9102 0.0020 0.4142 -vn -0.0000 0.8137 -0.5813 -vn -0.0000 -0.8193 -0.5734 -vn -0.8165 -0.0028 -0.5773 -vn -0.9989 0.0002 0.0478 -vn -0.0000 -0.9986 0.0527 -vn 0.9989 0.0002 0.0478 -vn 0.8165 -0.0028 -0.5773 -vn -0.0000 0.9991 0.0430 -vn 0.0000 0.8842 0.4672 -vn 0.3799 0.0045 0.9250 -vn 0.8819 0.0023 0.4715 -vn -0.0000 -0.3754 0.9269 -vn 0.0000 -0.8796 0.4758 -vn -0.3799 0.0045 0.9250 -vn -0.8819 0.0023 0.4715 -vn 0.0000 0.9984 0.0570 -vn 0.0000 -0.9978 0.0667 -vn -0.9981 0.0003 0.0619 -vn 0.9981 0.0003 0.0619 -vn -0.0011 0.1857 0.9826 -vn 0.0000 0.2961 0.9552 -vn 0.0000 -0.0121 0.9999 -vn 0.0000 0.0611 0.9981 -vn 0.0004 0.1844 0.9829 -vn 0.0002 -0.2679 -0.9634 -vn -0.0035 -0.2641 -0.9645 -vn 0.0000 -0.1578 -0.9875 -vn 0.0002 -0.1570 -0.9876 -vn 0.0000 -0.1117 -0.9937 -vn 0.0000 -0.0328 -0.9995 -vn 0.0000 0.2830 0.9591 -vn 0.0002 0.1729 0.9849 -vn 0.0032 0.2825 0.9593 -vn -0.0001 0.1741 0.9847 -vn 0.0000 0.0826 0.9966 -vn 0.0000 0.0073 1.0000 -vn 0.0000 0.0829 0.9966 -vn 0.0000 -0.2880 -0.9576 -vn 0.0001 -0.1772 -0.9842 -vn -0.0034 -0.2874 -0.9578 -vn 0.0000 -0.0745 -0.9972 -vn 0.0000 -0.1776 -0.9841 -vn 0.0000 0.0001 -1.0000 -vn 0.0000 -0.0748 -0.9972 -vn 0.0000 0.0003 -1.0000 -vn 0.0000 0.0199 0.9998 -vn 0.0000 -0.0151 -0.9999 -vn 0.0000 -0.0918 -0.9958 -vn 0.0000 -0.0155 -0.9999 -vn 0.0000 -0.0920 -0.9958 -vn 0.0000 0.0971 0.9953 -vn 0.0000 0.0203 0.9998 -vn -0.0001 0.1663 0.9861 -vn 0.0002 0.1651 0.9863 -vn 0.0000 -0.1684 -0.9857 -vn 0.0000 -0.1689 -0.9856 -vn 0.0029 0.2734 0.9619 -vn 0.0000 0.2739 0.9618 -vn -0.0032 -0.2766 -0.9610 -vn 0.0000 -0.2773 -0.9608 -vn 0.0000 -0.2689 -0.9632 -vn 0.0002 -0.1608 -0.9870 -vn -0.0029 -0.2682 -0.9633 -vn 0.0000 -0.1049 -0.9945 -vn 0.0000 -0.1614 -0.9869 -vn 0.0000 -0.0272 -0.9996 -vn 0.0000 -0.1051 -0.9945 -vn 0.0000 -0.0268 -0.9996 -vn 0.0000 0.0316 0.9995 -vn 0.0000 0.1103 0.9939 -vn 0.0000 0.0320 0.9995 -vn 0.0000 0.1584 0.9874 -vn 0.0000 0.1586 0.9873 -vn 0.0026 0.2649 0.9643 -vn 0.0033 0.2653 0.9642 -vn -0.0012 -0.1786 -0.9839 -vn -0.0001 -0.2842 -0.9588 -vn -0.0010 0.1741 0.9847 -vn -0.0001 0.2793 0.9602 -vn 0.0000 0.0070 1.0000 -vn 0.0008 0.1731 0.9849 -vn -0.0011 -0.1692 -0.9856 -vn -0.0000 -0.2736 -0.9618 -vn 0.0007 0.1654 0.9862 -vn -0.0009 0.1662 0.9861 -vn -0.0001 0.2705 0.9627 -vn 0.0000 -0.1617 -0.9868 -vn 0.0000 -0.2655 -0.9641 -vn -0.0008 0.1588 0.9873 -vn -0.0002 0.2622 0.9650 -vn -0.0000 0.2686 0.9633 -vn 0.0007 0.1583 0.9874 -vn 0.0000 0.0315 0.9995 -vn 0.0000 0.3844 0.9232 -vn 0.0000 0.0973 0.9953 -vn 0.0000 0.1104 0.9939 -s off +vn -0.0000 -0.0157 -0.9999 +vn -0.9994 -0.0339 0.0005 +vn -0.8112 0.0604 0.5816 +vn 0.9863 0.0024 0.1649 +vn -0.0000 -0.0147 -0.9999 +vn -0.7010 -0.1212 0.7028 +vn -0.1631 -0.0109 0.9866 +vn -0.0000 0.9999 -0.0147 +vn -0.5878 0.8090 -0.0079 +vn -0.3071 0.8163 0.4892 +vn 0.7010 -0.1212 0.7028 +vn 0.4897 0.4583 0.7417 +vn -0.0000 -0.0001 -1.0000 +vn -0.6139 -0.7893 0.0125 +vn -0.6122 -0.7906 0.0092 +vn -0.6101 -0.7922 0.0123 +vn -0.0001 0.9999 -0.0147 +vn -0.0000 -0.9999 0.0148 +vn -0.6034 -0.7973 0.0117 +vn -0.6032 -0.7975 0.0092 +vn -0.6015 -0.7988 0.0126 +vn 0.5527 0.8333 -0.0106 +vn 0.5512 0.8343 -0.0123 +vn 0.5496 0.8354 -0.0110 +vn 0.3193 0.8162 0.4815 +vn -0.0000 0.7985 -0.6020 +vn 0.6049 -0.7962 0.0136 +vn 0.6034 -0.7973 0.0117 +vn 0.6046 -0.7965 0.0096 +vn -0.0000 0.9999 -0.0146 +vn -0.0000 -0.0000 1.0000 +vn 0.5590 0.1816 0.8090 +vn 0.5651 0.8249 -0.0121 +vn 0.5646 0.8252 -0.0142 +vn 0.0001 0.9999 -0.0147 +vn -0.0023 1.0000 -0.0079 +vn -0.0000 1.0000 -0.0092 +vn -0.0023 1.0000 -0.0082 +vn -0.0022 1.0000 -0.0081 +vn -0.0000 0.9999 -0.0115 +vn -0.0021 1.0000 -0.0083 +vn 0.0001 1.0000 -0.0068 +vn 0.0023 0.9999 -0.0102 +vn -0.0000 1.0000 -0.0070 +vn 0.0023 0.9999 -0.0101 +vn 0.0022 0.9999 -0.0103 +vn -0.0000 1.0000 -0.0091 +vn 0.0021 0.9999 -0.0100 +vn -0.0001 0.9999 -0.0114 +vn -0.0000 0.0807 0.9967 +vn 0.6133 -0.7897 0.0135 +vn 0.6100 -0.7923 0.0113 +vn 0.6134 -0.7897 0.0099 +vn 0.5612 0.8276 -0.0107 +vn 0.5596 0.8286 -0.0146 +vn 0.5585 0.8295 -0.0106 +vn -0.5512 0.8343 -0.0123 +vn -0.5533 0.8329 -0.0120 +vn -0.5506 0.8347 -0.0099 +vn -0.6188 -0.7855 0.0130 +vn -0.6172 -0.7867 0.0116 +vn -0.5591 0.8290 -0.0146 +vn -0.5617 0.8272 -0.0124 +vn -0.5593 0.8289 -0.0099 +vn 0.6172 -0.7867 0.0116 +vn 0.6154 -0.7882 0.0111 +vn -0.5639 0.8257 -0.0139 +vn -0.5651 0.8250 -0.0121 +vn -1.0000 -0.0024 -0.0018 +vn -1.0000 -0.0026 -0.0020 +vn 1.0000 0.0006 0.0032 +vn 1.0000 -0.0030 0.0014 +vn 1.0000 0.0006 0.0030 +vn 1.0000 -0.0028 0.0013 +vn 1.0000 0.0005 0.0027 +vn 1.0000 -0.0025 0.0011 +vn -1.0000 -0.0020 -0.0019 +vn -1.0000 -0.0030 -0.0018 +vn 1.0000 0.0009 0.0033 +vn 1.0000 -0.0031 0.0014 +vn -0.9997 -0.0256 0.0004 +vn -0.9999 0.0139 0.0023 +vn -0.9999 0.0149 0.0027 +vn -0.9998 0.0179 0.0041 +vn -0.9998 0.0169 0.0057 +vn -0.9998 0.0180 0.0052 +vn 0.9997 -0.0231 -0.0038 +vn 0.9999 0.0126 0.0037 +vn 0.9999 0.0130 0.0025 +vn 0.9999 0.0135 0.0045 +vn 0.9999 0.0151 0.0062 +vn 0.9998 0.0162 0.0065 +vn 0.9999 0.0124 0.0051 +vn 0.9999 0.0095 0.0064 +vn 0.9999 0.0142 0.0082 +vn 0.9999 0.0146 0.0059 +vn 0.9999 0.0101 0.0029 +vn 0.9999 0.0104 0.0022 +vn 0.9999 0.0115 0.0033 +vn 0.9999 0.0122 0.0039 +vn 0.9998 -0.0176 -0.0029 +vn 0.9998 -0.0204 -0.0033 +vn -0.9999 0.0133 0.0039 +vn -0.9999 0.0124 0.0042 +vn -0.9998 0.0166 0.0049 +vn -0.9999 0.0104 0.0027 +vn -0.9999 0.0130 0.0046 +vn -0.9999 0.0158 0.0037 +vn -0.9999 0.0152 0.0051 +vn -0.9999 0.0160 0.0047 +vn -0.9999 0.0105 0.0017 +vn -0.9999 0.0109 0.0018 +vn -1.0000 0.0084 0.0014 +vn -0.9999 0.0125 0.0020 +vn -0.9999 0.0135 0.0024 +vn -0.9998 -0.0178 -0.0029 +vn -0.9999 -0.0146 0.0002 +vn -0.9998 -0.0223 0.0003 +vn -0.9998 -0.0201 0.0003 +vn -0.9999 0.0115 0.0019 +vn -0.9999 0.0125 0.0022 +vn -0.9999 0.0146 0.0042 +vn -0.9999 0.0137 0.0047 +vn 0.9998 -0.0184 -0.0030 +vn 0.9999 0.0106 0.0031 +vn 0.9999 0.0108 0.0025 +vn 0.9999 0.0113 0.0037 +vn 0.9999 0.0128 0.0053 +vn 0.9999 0.0134 0.0054 +vn 1.0000 -0.0002 0.0023 +vn 1.0000 -0.0023 -0.0009 +vn 1.0000 -0.0023 -0.0005 +vn -1.0000 -0.0022 0.0007 +vn -1.0000 -0.0018 -0.0014 +vn 0.9999 -0.0141 -0.0023 +vn 1.0000 0.0082 0.0024 +vn 0.9999 0.0103 0.0042 +vn 1.0000 0.0077 0.0052 +vn 0.9999 0.0112 0.0068 +vn 0.9999 0.0108 0.0045 +vn 0.9999 0.0086 0.0057 +vn 0.9999 0.0124 0.0075 +vn 1.0000 0.0090 0.0026 +vn 1.0000 0.0093 0.0019 +vn 0.9999 -0.0159 -0.0026 +vn 0.9999 0.0115 0.0048 +vn 0.9999 0.0091 0.0061 +vn 0.9999 0.0131 0.0081 +vn 1.0000 0.0096 0.0028 +vn 1.0000 0.0097 0.0025 +vn 0.9998 -0.0173 -0.0028 +vn -0.9999 0.0128 0.0029 +vn -0.9999 0.0129 0.0038 +vn -0.9999 0.0154 0.0059 +vn -0.9999 0.0100 0.0016 +vn -0.9998 -0.0181 0.0003 +vn -0.9999 0.0115 0.0026 +vn -0.9999 0.0117 0.0034 +vn -0.9999 0.0142 0.0049 +vn -1.0000 0.0091 0.0015 +vn -0.9999 -0.0161 0.0002 +vn -1.0000 -0.0007 -0.0023 +vn -1.0000 0.0015 -0.0020 +vn 1.0000 0.0024 0.0002 +vn 1.0000 -0.0010 0.0024 +vn 1.0000 -0.0005 0.0024 +vn -0.9863 0.0024 0.1649 +vn 0.9994 -0.0339 0.0005 +vn 0.8272 0.5267 0.1956 +vn 0.0523 0.0147 0.9985 +vn -0.5622 0.8114 0.1598 +vn -0.0523 0.0147 0.9985 +vn -0.6045 -0.7966 0.0099 +vn -0.6062 -0.7953 0.0064 +vn -0.6024 -0.7982 0.0065 +vn -0.5965 -0.8026 0.0074 +vn -0.5945 -0.8041 0.0065 +vn 0.5446 0.8387 -0.0052 +vn 0.5443 0.8388 -0.0077 +vn 0.0272 0.8176 0.5752 +vn 0.5986 -0.8010 0.0076 +vn 0.5965 -0.8026 0.0074 +vn 0.5591 -0.1816 -0.8090 +vn -0.4756 0.3454 -0.8090 +vn -0.5806 0.8103 0.0800 +vn 0.5620 0.8271 -0.0076 +vn 0.5633 0.8262 -0.0092 +vn 0.5602 0.8283 -0.0084 +vn -0.0026 1.0000 -0.0090 +vn -0.0023 1.0000 -0.0091 +vn 0.0010 1.0000 -0.0068 +vn -0.0011 0.9999 -0.0114 +vn -0.0010 0.9999 -0.0116 +vn 0.0011 1.0000 -0.0070 +vn 0.0026 1.0000 -0.0091 +vn -0.0009 0.9999 -0.0114 +vn 0.0010 1.0000 -0.0071 +vn 0.0023 1.0000 -0.0092 +vn 0.0009 1.0000 -0.0069 +vn -0.0011 0.9999 -0.0112 +vn 0.6062 -0.7953 0.0075 +vn 0.6032 -0.7975 0.0095 +vn 0.6028 -0.7979 0.0055 +vn 0.5523 0.8336 -0.0053 +vn 0.5538 0.8326 -0.0089 +vn 0.5506 0.8347 -0.0094 +vn -0.5443 0.8388 -0.0077 +vn -0.5451 0.8383 -0.0054 +vn -0.6137 -0.7895 0.0096 +vn -0.6160 -0.7877 0.0066 +vn -0.6141 -0.7892 0.0072 +vn -0.5500 0.8351 -0.0079 +vn -0.5528 0.8333 -0.0100 +vn -0.5528 0.8333 -0.0055 +vn 0.6141 -0.7892 0.0072 +vn 0.6127 -0.7902 0.0089 +vn 0.6134 -0.7898 0.0051 +vn -0.5601 0.8284 -0.0071 +vn -0.5625 0.8268 -0.0098 +vn -0.5620 0.8271 -0.0076 +vn -1.0000 0.0013 -0.0027 +vn -1.0000 -0.0028 -0.0010 +vn -1.0000 0.0014 -0.0030 +vn -1.0000 -0.0030 -0.0012 +vn 1.0000 0.0027 0.0019 +vn 1.0000 0.0025 0.0018 +vn 1.0000 0.0022 0.0016 +vn -1.0000 0.0014 -0.0024 +vn -1.0000 -0.0026 -0.0009 +vn -1.0000 0.0016 -0.0031 +vn -1.0000 -0.0032 -0.0013 +vn 1.0000 0.0029 0.0018 +vn -0.0000 0.4647 -0.8855 +vn -0.9102 0.0020 -0.4142 +vn -0.0000 0.9122 -0.4097 +vn -0.4604 0.0043 -0.8877 +vn -0.0000 -0.9082 -0.4186 +vn 0.4604 0.0043 -0.8877 +vn -0.0000 -0.4560 -0.8900 +vn 0.9102 0.0020 -0.4142 +vn -0.0000 0.8137 0.5813 +vn -0.0000 -0.8193 0.5734 +vn 0.8165 -0.0028 0.5773 +vn 0.9989 0.0002 -0.0478 +vn -0.0000 -0.9986 -0.0527 +vn -0.9989 0.0002 -0.0478 +vn -0.8165 -0.0028 0.5773 +vn -0.0000 0.9991 -0.0430 +vn -0.0000 0.8842 -0.4672 +vn -0.3799 0.0045 -0.9250 +vn -0.8819 0.0023 -0.4715 +vn -0.0000 -0.3754 -0.9269 +vn -0.0000 -0.8796 -0.4758 +vn 0.3799 0.0045 -0.9250 +vn 0.8819 0.0023 -0.4715 +vn -0.0000 0.9984 -0.0570 +vn -0.0000 -0.9978 -0.0667 +vn 0.9981 0.0003 -0.0619 +vn -0.9981 0.0003 -0.0619 +vn 0.0010 0.1857 -0.9826 +vn -0.0000 0.2961 -0.9552 +vn -0.0000 -0.0121 -0.9999 +vn -0.0000 0.0611 -0.9981 +vn -0.0004 0.1846 -0.9828 +vn -0.0002 -0.2679 0.9635 +vn 0.0035 -0.2641 0.9645 +vn -0.0000 -0.1578 0.9875 +vn -0.0002 -0.1570 0.9876 +vn -0.0000 -0.1117 0.9937 +vn -0.0000 -0.0328 0.9995 +vn -0.0000 0.2830 -0.9591 +vn -0.0002 0.1732 -0.9849 +vn -0.0032 0.2825 -0.9593 +vn 0.0001 0.1740 -0.9847 +vn -0.0000 0.0826 -0.9966 +vn -0.0000 0.0073 -1.0000 +vn -0.0000 0.0829 -0.9966 +vn -0.0000 -0.2880 0.9576 +vn -0.0001 -0.1775 0.9841 +vn 0.0034 -0.2874 0.9578 +vn -0.0000 -0.0745 0.9972 +vn -0.0000 -0.1776 0.9841 +vn -0.0000 0.0001 1.0000 +vn -0.0000 -0.0748 0.9972 +vn -0.0000 0.0003 1.0000 +vn -0.0000 0.0199 -0.9998 +vn -0.0000 -0.0151 0.9999 +vn -0.0000 -0.0918 0.9958 +vn -0.0000 -0.0155 0.9999 +vn -0.0000 -0.0920 0.9958 +vn -0.0000 0.0971 -0.9953 +vn -0.0000 0.0203 -0.9998 +vn 0.0001 0.1660 -0.9861 +vn -0.0002 0.1651 -0.9863 +vn -0.0000 -0.1684 0.9857 +vn -0.0000 -0.1689 0.9856 +vn -0.0029 0.2734 -0.9619 +vn -0.0000 0.2739 -0.9618 +vn 0.0032 -0.2766 0.9610 +vn -0.0000 -0.2773 0.9608 +vn -0.0000 -0.2689 0.9632 +vn -0.0002 -0.1611 0.9869 +vn 0.0028 -0.2682 0.9634 +vn -0.0000 -0.1049 0.9945 +vn -0.0000 -0.1614 0.9869 +vn -0.0000 -0.0272 0.9996 +vn -0.0000 -0.1051 0.9945 +vn -0.0000 -0.0268 0.9996 +vn -0.0000 0.0316 -0.9995 +vn -0.0000 0.1103 -0.9939 +vn -0.0000 0.0320 -0.9995 +vn -0.0000 0.1584 -0.9874 +vn -0.0000 0.1586 -0.9873 +vn -0.0026 0.2649 -0.9643 +vn -0.0033 0.2653 -0.9642 +vn 0.0011 -0.1786 0.9839 +vn 0.0001 -0.2843 0.9587 +vn 0.0010 0.1741 -0.9847 +vn 0.0001 0.2793 -0.9602 +vn -0.0000 0.0070 -1.0000 +vn -0.0005 0.1732 -0.9849 +vn 0.0012 -0.1692 0.9856 +vn -0.0000 -0.2736 0.9618 +vn -0.0007 0.1654 -0.9862 +vn 0.0008 0.1662 -0.9861 +vn 0.0001 0.2705 -0.9627 +vn -0.0000 -0.1617 0.9868 +vn -0.0000 -0.2655 0.9641 +vn 0.0006 0.1588 -0.9873 +vn 0.0002 0.2622 -0.9650 +vn -0.0000 0.2686 -0.9633 +vn -0.0005 0.1583 -0.9874 +vn -0.0000 0.0315 -0.9995 +vn -0.0000 0.3844 -0.9232 +vn -0.0000 0.0973 -0.9953 +vn -0.0000 0.1104 -0.9939 +vt 0.293178 0.253940 +vt 0.294447 0.228588 +vt 0.295035 0.228647 +vt 0.304352 0.255062 +vt 0.306516 0.266333 +vt 0.303659 0.266999 +vt 0.306561 0.276133 +vt 0.303722 0.277446 +vt 0.307027 0.283572 +vt 0.304150 0.285474 +vt 0.306350 0.302210 +vt 0.309343 0.301189 +vt 0.306466 0.303091 +vt 0.311562 0.308066 +vt 0.310293 0.282714 +vt 0.312150 0.308007 +vt 0.321467 0.281591 +vt 0.323630 0.270321 +vt 0.324407 0.281296 +vt 0.320773 0.269655 +vt 0.323675 0.260521 +vt 0.320836 0.259208 +vt 0.324142 0.253082 +vt 0.323465 0.234444 +vt 0.326458 0.235465 +vt 0.326342 0.236346 +vt 0.344109 0.298827 +vt 0.335283 0.299709 +vt 0.335283 0.298827 +vt 0.335283 0.316891 +vt 0.334749 0.308066 +vt 0.335283 0.308066 +vt 0.332086 0.316891 +vt 0.329413 0.308066 +vt 0.332086 0.308066 +vt 0.308583 0.313537 +vt 0.307778 0.310698 +vt 0.308583 0.311077 +vt 0.358445 0.300384 +vt 0.356072 0.291558 +vt 0.358445 0.291558 +vt 0.344050 0.299709 +vt 0.343168 0.308535 +vt 0.343168 0.299709 +vt 0.311956 0.226836 +vt 0.312647 0.226336 +vt 0.312531 0.227217 +vt 0.318889 0.231420 +vt 0.321559 0.232227 +vt 0.321444 0.233108 +vt 0.309478 0.253954 +vt 0.310331 0.243953 +vt 0.310046 0.254216 +vt 0.316321 0.257119 +vt 0.319244 0.249844 +vt 0.318842 0.258285 +vt 0.309343 0.266992 +vt 0.309915 0.267125 +vt 0.316229 0.268597 +vt 0.318766 0.269187 +vt 0.309705 0.282773 +vt 0.316791 0.282061 +vt 0.319401 0.281799 +vt 0.323324 0.306885 +vt 0.326264 0.306590 +vt 0.318648 0.307354 +vt 0.321258 0.307092 +vt 0.294841 0.309817 +vt 0.295533 0.310318 +vt 0.294957 0.310698 +vt 0.309382 0.311087 +vt 0.310180 0.313158 +vt 0.309382 0.313547 +vt 0.301775 0.305234 +vt 0.304445 0.304426 +vt 0.301891 0.306115 +vt 0.292364 0.282700 +vt 0.293217 0.292701 +vt 0.292641 0.293081 +vt 0.363166 0.279737 +vt 0.365464 0.288654 +vt 0.363407 0.290002 +vt 0.299207 0.279535 +vt 0.302129 0.286810 +vt 0.299575 0.288498 +vt 0.292229 0.269661 +vt 0.292932 0.282437 +vt 0.363089 0.266827 +vt 0.365195 0.278809 +vt 0.299115 0.268057 +vt 0.301727 0.278369 +vt 0.292590 0.253881 +vt 0.363533 0.251241 +vt 0.365129 0.266361 +vt 0.299676 0.254593 +vt 0.301651 0.267466 +vt 0.307293 0.255357 +vt 0.306209 0.229769 +vt 0.309150 0.230064 +vt 0.302287 0.254855 +vt 0.301534 0.229299 +vt 0.304144 0.229561 +vt 0.365629 0.251460 +vt 0.365497 0.225955 +vt 0.367593 0.226175 +vt 0.299850 0.229130 +vt 0.295275 0.254151 +vt 0.297132 0.228857 +vt 0.297479 0.268438 +vt 0.294838 0.269054 +vt 0.297581 0.280286 +vt 0.294957 0.281500 +vt 0.297928 0.289587 +vt 0.295268 0.291345 +vt 0.297469 0.308081 +vt 0.300244 0.307204 +vt 0.297584 0.308962 +vt 0.316965 0.307523 +vt 0.312390 0.282503 +vt 0.315107 0.282230 +vt 0.314593 0.268215 +vt 0.311952 0.267600 +vt 0.314696 0.256367 +vt 0.312071 0.255153 +vt 0.315042 0.247067 +vt 0.314583 0.228573 +vt 0.317358 0.229450 +vt 0.317242 0.230331 +vt 0.306973 0.313537 +vt 0.306973 0.311077 +vt 0.358543 0.291558 +vt 0.356072 0.282733 +vt 0.358543 0.282733 +vt 0.317158 0.310156 +vt 0.314247 0.307796 +vt 0.318841 0.309987 +vt 0.300043 0.226498 +vt 0.297326 0.226225 +vt 0.301727 0.226667 +vt 0.295229 0.226014 +vt 0.304337 0.226929 +vt 0.306403 0.227137 +vt 0.309343 0.227432 +vt 0.312343 0.310639 +vt 0.314440 0.310429 +vt 0.321452 0.309724 +vt 0.323517 0.309517 +vt 0.326458 0.309222 +vt 0.311755 0.310698 +vt 0.294641 0.225955 +vt 0.360993 0.306747 +vt 0.361125 0.281242 +vt 0.363089 0.306527 +vt 0.359028 0.281461 +vt 0.360624 0.266341 +vt 0.358584 0.265875 +vt 0.360690 0.253894 +vt 0.358661 0.252966 +vt 0.360960 0.244048 +vt 0.308583 0.313158 +vt 0.321583 0.311087 +vt 0.320785 0.312673 +vt 0.320785 0.310698 +vt 0.376920 0.252000 +vt 0.378887 0.243782 +vt 0.378547 0.252746 +vt 0.376855 0.263848 +vt 0.378492 0.264224 +vt 0.377413 0.277861 +vt 0.379096 0.277687 +vt 0.379351 0.303149 +vt 0.381034 0.302974 +vt 0.312589 0.313121 +vt 0.313388 0.311087 +vt 0.313388 0.313510 +vt 0.367648 0.251137 +vt 0.370057 0.244028 +vt 0.369644 0.252056 +vt 0.367593 0.262040 +vt 0.369601 0.262504 +vt 0.368253 0.274650 +vt 0.370318 0.274439 +vt 0.372224 0.299729 +vt 0.318376 0.312774 +vt 0.317459 0.310698 +vt 0.318376 0.310698 +vt 0.311790 0.311087 +vt 0.311790 0.313510 +vt 0.372279 0.274758 +vt 0.374688 0.281868 +vt 0.372664 0.283200 +vt 0.372224 0.263855 +vt 0.374275 0.273839 +vt 0.372884 0.251245 +vt 0.374232 0.263392 +vt 0.374949 0.251457 +vt 0.374790 0.225955 +vt 0.376855 0.226167 +vt 0.319986 0.311087 +vt 0.319986 0.313062 +vt 0.381098 0.277104 +vt 0.383066 0.285322 +vt 0.381415 0.286406 +vt 0.381034 0.265256 +vt 0.382726 0.276358 +vt 0.381592 0.251243 +vt 0.382671 0.264880 +vt 0.383275 0.251417 +vt 0.383530 0.225955 +vt 0.385213 0.226130 +vt 0.392620 0.299275 +vt 0.391603 0.298392 +vt 0.392620 0.298392 +vt 0.390368 0.226837 +vt 0.391386 0.225955 +vt 0.391386 0.226837 +vt 0.314405 0.312774 +vt 0.315423 0.310698 +vt 0.315423 0.312774 +vt 0.390151 0.302769 +vt 0.389133 0.301887 +vt 0.390151 0.301887 +vt 0.322501 0.312390 +vt 0.323518 0.310698 +vt 0.323518 0.312390 +vt 0.387899 0.226837 +vt 0.388916 0.225955 +vt 0.388916 0.226837 +vt 0.387682 0.306059 +vt 0.386664 0.305177 +vt 0.387682 0.305177 +vt 0.385430 0.226837 +vt 0.386447 0.225955 +vt 0.386447 0.226837 +vt 0.313388 0.312806 +vt 0.314405 0.310698 +vt 0.314405 0.312806 +vt 0.357950 0.318035 +vt 0.356072 0.309209 +vt 0.357950 0.309209 +vt 0.357978 0.309209 +vt 0.356072 0.300384 +vt 0.357978 0.300384 +vt 0.354444 0.309853 +vt 0.355974 0.318679 +vt 0.354444 0.318679 +vt 0.385202 0.303149 +vt 0.384320 0.311974 +vt 0.384320 0.303149 +vt 0.344050 0.308535 +vt 0.343168 0.317360 +vt 0.319986 0.311077 +vt 0.319181 0.312673 +vt 0.319181 0.310698 +vt 0.310985 0.310698 +vt 0.310180 0.313500 +vt 0.310180 0.311077 +vt 0.311790 0.313500 +vt 0.311790 0.311077 +vt 0.383439 0.311974 +vt 0.318376 0.311077 +vt 0.302190 0.319524 +vt 0.303071 0.310698 +vt 0.303071 0.319524 +vt 0.367121 0.306747 +vt 0.366239 0.315572 +vt 0.366239 0.306747 +vt 0.351814 0.309853 +vt 0.344109 0.282733 +vt 0.351814 0.285362 +vt 0.344109 0.310630 +vt 0.344109 0.285362 +vt 0.358584 0.279706 +vt 0.355926 0.254415 +vt 0.358584 0.254344 +vt 0.349537 0.226101 +vt 0.346806 0.228667 +vt 0.346806 0.226028 +vt 0.351228 0.228785 +vt 0.351228 0.226146 +vt 0.349537 0.282587 +vt 0.346806 0.280021 +vt 0.349537 0.279948 +vt 0.351228 0.279903 +vt 0.351228 0.282542 +vt 0.344700 0.282717 +vt 0.346806 0.282660 +vt 0.353851 0.282472 +vt 0.353851 0.279832 +vt 0.355926 0.279777 +vt 0.355926 0.282416 +vt 0.358584 0.282345 +vt 0.344700 0.225971 +vt 0.353851 0.226217 +vt 0.355926 0.228911 +vt 0.355926 0.226272 +vt 0.358584 0.226343 +vt 0.343168 0.324984 +vt 0.335373 0.299709 +vt 0.343078 0.299709 +vt 0.351814 0.282733 +vt 0.344417 0.228603 +vt 0.344109 0.225955 +vt 0.344417 0.280085 +vt 0.344700 0.280078 +vt 0.334716 0.308066 +vt 0.324943 0.312263 +vt 0.324464 0.314893 +vt 0.324383 0.312228 +vt 0.367593 0.306747 +vt 0.367298 0.315012 +vt 0.367298 0.307307 +vt 0.358428 0.314605 +vt 0.357950 0.311976 +vt 0.358510 0.311941 +vt 0.367593 0.314421 +vt 0.368064 0.314113 +vt 0.389591 0.251223 +vt 0.390151 0.225955 +vt 0.390151 0.251223 +vt 0.299183 0.315122 +vt 0.297725 0.313022 +vt 0.299183 0.312390 +vt 0.358569 0.300384 +vt 0.358274 0.300944 +vt 0.315983 0.312604 +vt 0.315423 0.314712 +vt 0.315423 0.312604 +vt 0.365944 0.307307 +vt 0.363284 0.306747 +vt 0.358274 0.308649 +vt 0.299183 0.317229 +vt 0.297725 0.315392 +vt 0.292577 0.312539 +vt 0.294247 0.310698 +vt 0.294247 0.312806 +vt 0.314965 0.312774 +vt 0.314405 0.313365 +vt 0.358510 0.309209 +vt 0.357950 0.311941 +vt 0.318019 0.310698 +vt 0.317459 0.312774 +vt 0.376419 0.310669 +vt 0.376751 0.309046 +vt 0.376751 0.311120 +vt 0.358569 0.309209 +vt 0.296266 0.312535 +vt 0.297725 0.310698 +vt 0.297725 0.312806 +vt 0.365944 0.315012 +vt 0.358584 0.315012 +vt 0.361208 0.315572 +vt 0.358584 0.315572 +vt 0.323263 0.313195 +vt 0.323823 0.312604 +vt 0.323823 0.313195 +vt 0.376419 0.314421 +vt 0.325401 0.313430 +vt 0.325961 0.310698 +vt 0.325961 0.313430 +vt 0.361208 0.315012 +vt 0.363284 0.315572 +vt 0.292577 0.316376 +vt 0.294247 0.315537 +vt 0.294247 0.317229 +vt 0.329117 0.308626 +vt 0.326458 0.308066 +vt 0.361208 0.307307 +vt 0.358584 0.306747 +vt 0.361208 0.306747 +vt 0.324383 0.312604 +vt 0.323823 0.314296 +vt 0.316441 0.315199 +vt 0.317001 0.312576 +vt 0.317001 0.315199 +vt 0.363284 0.307307 +vt 0.329117 0.316331 +vt 0.329413 0.316891 +vt 0.326458 0.316891 +vt 0.376714 0.299940 +vt 0.376419 0.308766 +vt 0.376419 0.299940 +vt 0.322958 0.312390 +vt 0.387122 0.251223 +vt 0.387682 0.225955 +vt 0.387682 0.251223 +vt 0.313845 0.312806 +vt 0.323061 0.312390 +vt 0.322501 0.315013 +vt 0.376419 0.314126 +vt 0.392060 0.251223 +vt 0.392620 0.225955 +vt 0.392620 0.251223 +vt 0.314863 0.312774 +vt 0.292229 0.312539 +vt 0.292577 0.310710 +vt 0.292229 0.314908 +vt 0.292577 0.314908 +vt 0.294247 0.317217 +vt 0.294595 0.315388 +vt 0.294595 0.317217 +vt 0.294247 0.315388 +vt 0.294595 0.313019 +vt 0.294247 0.313019 +vt 0.294595 0.311551 +vt 0.292229 0.316376 +vt 0.376751 0.313108 +vt 0.376448 0.311591 +vt 0.296266 0.314905 +vt 0.297725 0.315537 +vt 0.296266 0.317229 +vt 0.296266 0.315122 +vt 0.297725 0.311555 +vt 0.299183 0.310698 +vt 0.296266 0.312390 +vt 0.296266 0.316373 +vt 0.297725 0.317229 +vt 0.325098 0.314037 +vt 0.325401 0.312521 +vt 0.325401 0.314508 +vt 0.296266 0.310698 +vt 0.326293 0.312773 +vt 0.325961 0.311149 +vt 0.326293 0.310698 +vt 0.322501 0.310698 +vt 0.321583 0.312576 +vt 0.321583 0.310698 +vt 0.322413 0.312576 +vt 0.321583 0.314106 +vt 0.325401 0.312228 +vt 0.324383 0.310698 +vt 0.325401 0.310698 +vt 0.323518 0.312604 +vt 0.316441 0.312604 +vt 0.385213 0.302065 +vt 0.383562 0.303149 +vt 0.376855 0.298608 +vt 0.374831 0.299940 +vt 0.392843 0.307628 +vt 0.393708 0.306746 +vt 0.393708 0.307628 +vt 0.394795 0.226838 +vt 0.393930 0.225955 +vt 0.394795 0.225955 +vt 0.397293 0.304029 +vt 0.398123 0.303148 +vt 0.398123 0.304029 +vt 0.399178 0.226838 +vt 0.398348 0.225955 +vt 0.399178 0.225955 +vt 0.397068 0.226838 +vt 0.396151 0.225955 +vt 0.397068 0.225955 +vt 0.368033 0.242696 +vt 0.372224 0.227288 +vt 0.377236 0.242698 +vt 0.381034 0.227039 +vt 0.358902 0.242701 +vt 0.363089 0.227303 +vt 0.312383 0.245309 +vt 0.300128 0.306323 +vt 0.304329 0.303546 +vt 0.367593 0.305399 +vt 0.365536 0.306747 +vt 0.295417 0.309437 +vt 0.395014 0.300820 +vt 0.395931 0.299939 +vt 0.395931 0.300820 +vt 0.316689 0.248156 +vt 0.309756 0.243572 +vt 0.335283 0.225955 +vt 0.326458 0.226838 +vt 0.326458 0.225955 +vt 0.321264 0.251180 +vt 0.309227 0.300308 +vt 0.316441 0.310698 +vt 0.317459 0.312576 +vt 0.316441 0.312576 +vt 0.375948 0.314113 +vt 0.368153 0.299940 +vt 0.375859 0.299940 +vt 0.323580 0.233563 +vt 0.344109 0.299709 +vt 0.334749 0.316891 +vt 0.307778 0.313158 +vt 0.312072 0.225955 +vt 0.319005 0.230539 +vt 0.310180 0.310698 +vt 0.292800 0.269528 +vt 0.297993 0.254424 +vt 0.314699 0.227692 +vt 0.307778 0.313158 +vt 0.308583 0.310698 +vt 0.321583 0.313062 +vt 0.312589 0.310698 +vt 0.370159 0.299940 +vt 0.391603 0.299275 +vt 0.390368 0.225955 +vt 0.389133 0.302769 +vt 0.387899 0.225955 +vt 0.386664 0.306059 +vt 0.385430 0.225955 +vt 0.313388 0.310698 +vt 0.356072 0.318035 +vt 0.355974 0.309853 +vt 0.385202 0.311974 +vt 0.344050 0.317360 +vt 0.319986 0.313052 +vt 0.310985 0.313121 +vt 0.383439 0.303149 +vt 0.318376 0.313052 +vt 0.302190 0.310698 +vt 0.367121 0.315572 +vt 0.351814 0.318679 +vt 0.351814 0.310630 +vt 0.349537 0.228740 +vt 0.344700 0.228610 +vt 0.353851 0.228856 +vt 0.358584 0.228983 +vt 0.335283 0.324984 +vt 0.334716 0.316891 +vt 0.324935 0.314893 +vt 0.367593 0.315572 +vt 0.357958 0.314605 +vt 0.367593 0.314126 +vt 0.389591 0.225955 +vt 0.358569 0.300944 +vt 0.315983 0.314712 +vt 0.297725 0.317220 +vt 0.314965 0.313365 +vt 0.358510 0.311941 +vt 0.318019 0.312774 +vt 0.376545 0.308766 +vt 0.358569 0.308649 +vt 0.296266 0.310707 +vt 0.323263 0.312604 +vt 0.363284 0.315012 +vt 0.326458 0.308626 +vt 0.358584 0.307307 +vt 0.324383 0.314296 +vt 0.326458 0.316331 +vt 0.376714 0.308766 +vt 0.322958 0.310698 +vt 0.387122 0.225955 +vt 0.313845 0.310698 +vt 0.323061 0.315013 +vt 0.392060 0.225955 +vt 0.314863 0.310698 +vt 0.292229 0.310710 +vt 0.294247 0.311551 +vt 0.376562 0.313400 +vt 0.325212 0.312228 +vt 0.326087 0.313053 +vt 0.322501 0.312576 +vt 0.322413 0.314106 +vt 0.392843 0.306746 +vt 0.393930 0.226838 +vt 0.397293 0.303148 +vt 0.398348 0.226838 +vt 0.396151 0.226838 +vt 0.370201 0.225955 +vt 0.379383 0.225955 +vt 0.361031 0.225955 +vt 0.395014 0.299939 +vt 0.335283 0.226838 +vt 0.305864 0.312750 +vt 0.305396 0.313502 +vt 0.305396 0.312283 +vt 0.305864 0.313060 +vt 0.306615 0.313499 +vt 0.306174 0.312749 +vt 0.306174 0.313059 +vt 0.306615 0.312279 +vt 0.303071 0.313022 +vt 0.305396 0.310705 +vt 0.305396 0.313029 +vt 0.381792 0.307352 +vt 0.383439 0.316823 +vt 0.381792 0.316815 +vt 0.380147 0.307361 +vt 0.380147 0.316823 +vt 0.378501 0.307352 +vt 0.378501 0.316815 +vt 0.376855 0.316823 +vt 0.351640 0.310686 +vt 0.349994 0.314862 +vt 0.349994 0.310630 +vt 0.380930 0.303153 +vt 0.379364 0.303153 +vt 0.348349 0.310686 +vt 0.305396 0.312275 +vt 0.306398 0.311677 +vt 0.306973 0.312279 +vt 0.306398 0.311275 +vt 0.306973 0.310702 +vt 0.305997 0.311274 +vt 0.305396 0.310698 +vt 0.299183 0.313705 +vt 0.302190 0.310707 +vt 0.302190 0.313713 +vt 0.353943 0.296282 +vt 0.356072 0.286908 +vt 0.356072 0.296293 +vt 0.351814 0.286908 +vt 0.351814 0.296293 +vt 0.353944 0.309842 +vt 0.356072 0.300469 +vt 0.356072 0.309853 +vt 0.351814 0.300469 +vt 0.348349 0.311642 +vt 0.344109 0.312759 +vt 0.344181 0.310630 +vt 0.352827 0.282739 +vt 0.353943 0.286897 +vt 0.353944 0.300457 +vt 0.355060 0.296299 +vt 0.348311 0.312759 +vt 0.344181 0.314888 +vt 0.335426 0.274629 +vt 0.344109 0.282073 +vt 0.335283 0.282073 +vt 0.344109 0.228586 +vt 0.335283 0.253862 +vt 0.335283 0.228586 +vt 0.335564 0.264830 +vt 0.343968 0.274629 +vt 0.326458 0.243600 +vt 0.344109 0.253862 +vt 0.335283 0.243600 +vt 0.326600 0.253984 +vt 0.335143 0.253984 +vt 0.326739 0.267024 +vt 0.335283 0.282798 +vt 0.326458 0.282798 +vt 0.395931 0.283183 +vt 0.395791 0.274739 +vt 0.395014 0.283183 +vt 0.394903 0.274739 +vt 0.395654 0.263837 +vt 0.395014 0.251231 +vt 0.394795 0.263837 +vt 0.395931 0.225955 +vt 0.395014 0.225955 +vt 0.326458 0.308066 +vt 0.397068 0.243600 +vt 0.396927 0.251633 +vt 0.396151 0.243600 +vt 0.396791 0.262080 +vt 0.396039 0.251633 +vt 0.396151 0.274007 +vt 0.395931 0.262080 +vt 0.396151 0.299275 +vt 0.397068 0.274007 +vt 0.397068 0.299275 +vt 0.398123 0.251231 +vt 0.397293 0.225955 +vt 0.398123 0.225955 +vt 0.398348 0.302769 +vt 0.399178 0.277502 +vt 0.399178 0.302769 +vt 0.398900 0.264045 +vt 0.398348 0.277502 +vt 0.398123 0.264045 +vt 0.397845 0.265241 +vt 0.397293 0.251231 +vt 0.397179 0.277090 +vt 0.397982 0.277090 +vt 0.398234 0.252568 +vt 0.399037 0.252568 +vt 0.397293 0.286393 +vt 0.398123 0.286393 +vt 0.398348 0.243600 +vt 0.399178 0.243600 +vt 0.394795 0.243600 +vt 0.394654 0.253448 +vt 0.393930 0.243600 +vt 0.394517 0.265895 +vt 0.393817 0.253448 +vt 0.393930 0.280791 +vt 0.393708 0.265895 +vt 0.393930 0.306059 +vt 0.394795 0.280791 +vt 0.394795 0.306059 +vt 0.393708 0.251231 +vt 0.392843 0.225955 +vt 0.393708 0.225955 +vt 0.393430 0.266816 +vt 0.392843 0.251231 +vt 0.392730 0.279725 +vt 0.393567 0.279725 +vt 0.392843 0.289991 +vt 0.393708 0.289991 +vt 0.392339 0.263150 +vt 0.391603 0.251223 +vt 0.391493 0.273597 +vt 0.391386 0.263150 +vt 0.392478 0.273597 +vt 0.391603 0.281630 +vt 0.391243 0.252037 +vt 0.390368 0.243592 +vt 0.391386 0.243592 +vt 0.391386 0.300820 +vt 0.390368 0.275545 +vt 0.391386 0.275545 +vt 0.391105 0.262939 +vt 0.390258 0.252037 +vt 0.389870 0.264680 +vt 0.389023 0.276157 +vt 0.388916 0.264680 +vt 0.389133 0.251223 +vt 0.390008 0.276157 +vt 0.389133 0.285125 +vt 0.388916 0.304029 +vt 0.387899 0.278754 +vt 0.388916 0.278754 +vt 0.388635 0.264744 +vt 0.387789 0.252895 +vt 0.388774 0.252895 +vt 0.387899 0.243592 +vt 0.388916 0.243592 +vt 0.386664 0.251223 +vt 0.387401 0.266119 +vt 0.386554 0.278567 +vt 0.386447 0.266119 +vt 0.387539 0.278567 +vt 0.386664 0.288414 +vt 0.386305 0.253858 +vt 0.385430 0.243592 +vt 0.386447 0.243592 +vt 0.386166 0.266768 +vt 0.385319 0.253858 +vt 0.385430 0.282352 +vt 0.386447 0.282352 +vt 0.386447 0.307628 +vt 0.387682 0.288414 +vt 0.390151 0.285125 +vt 0.392620 0.281630 +vt 0.383439 0.307361 +vt 0.376855 0.307361 +vt 0.350858 0.314891 +vt 0.381793 0.303149 +vt 0.378501 0.303149 +vt 0.349131 0.314891 +vt 0.305997 0.311675 +vt 0.353943 0.282733 +vt 0.353944 0.296293 +vt 0.348349 0.313876 +vt 0.343831 0.264830 +vt 0.335006 0.267024 +vt 0.395931 0.251231 +vt 0.397068 0.265241 +vt 0.392620 0.266816 +vt 0.391603 0.225955 +vt 0.390368 0.300820 +vt 0.390151 0.262939 +vt 0.389133 0.225955 +vt 0.387899 0.304029 +vt 0.387682 0.264744 +vt 0.386664 0.225955 +vt 0.385213 0.266768 +vt 0.385430 0.307628 +s 0 f 34/1/1 36/2/1 33/3/1 f 37/4/2 39/5/2 40/6/2 f 40/6/3 41/7/4 42/8/5 @@ -1837,2372 +1750,3647 @@ f 149/112/49 150/113/49 151/114/49 f 152/115/1 154/116/1 79/117/1 f 155/118/8 157/119/8 158/120/8 f 157/119/50 160/121/50 158/120/50 -f 159/122/51 162/123/24 160/121/51 -f 161/124/52 164/125/53 162/123/54 +f 159/122/51 162/123/52 160/121/51 +f 161/124/53 164/125/54 162/123/55 f 165/126/8 166/127/8 167/128/8 -f 76/129/8 87/130/8 168/131/8 -f 166/132/16 79/133/16 154/134/16 -f 169/135/55 156/136/8 155/118/8 -f 169/135/56 110/66/8 171/137/8 -f 172/138/57 145/108/1 173/139/58 -f 139/101/1 172/138/59 174/140/1 -f 145/108/1 175/141/1 173/139/60 -f 176/142/1 139/101/1 174/140/1 -f 137/98/1 176/142/1 177/143/1 -f 178/144/1 137/98/1 177/143/1 -f 179/145/8 156/136/8 170/146/61 -f 180/147/8 110/66/8 109/67/8 -f 180/147/8 107/64/8 181/148/8 -f 182/149/8 107/64/8 66/65/8 -f 183/150/8 49/16/8 179/145/8 -f 33/3/1 184/151/1 175/141/1 -f 186/152/8 188/153/8 185/154/8 -f 187/155/62 190/156/62 188/153/62 -f 189/157/63 192/158/63 190/156/63 -f 191/159/64 194/160/65 192/158/64 -f 195/161/1 197/162/1 198/163/1 -f 199/164/1 201/165/1 202/166/1 -f 203/167/66 205/168/67 206/169/68 -f 207/170/69 206/169/69 208/171/69 -f 209/172/70 208/171/70 210/173/70 -f 212/174/8 210/173/8 211/175/8 -f 91/176/1 214/177/1 215/178/1 -f 99/179/71 216/180/72 217/181/20 -f 103/182/73 217/181/73 218/183/73 -f 106/184/74 218/183/74 219/185/74 -f 220/186/8 106/184/8 219/185/8 -f 220/187/75 109/188/75 108/189/75 -f 221/190/8 223/191/8 224/192/8 -f 225/193/76 227/194/77 228/195/78 -f 229/196/79 226/197/79 225/193/80 -f 231/198/81 230/199/81 229/196/81 -f 232/200/1 234/201/1 233/202/1 -f 235/203/8 237/204/8 238/205/8 -f 239/206/82 241/207/83 242/208/84 -f 243/209/85 240/210/85 239/206/86 -f 245/211/87 244/212/87 243/209/87 -f 246/213/1 248/214/1 247/215/1 -f 48/216/88 224/217/88 45/218/88 -f 221/219/15 82/220/15 117/221/15 -f 233/222/75 138/223/75 137/224/75 -f 85/225/88 238/226/88 116/227/88 -f 247/228/75 142/229/75 139/230/75 -f 235/231/15 154/232/15 153/233/15 -f 79/234/88 115/235/88 152/236/88 -f 112/237/15 75/238/15 111/239/15 -f 140/240/75 33/241/75 145/242/75 -f 250/243/16 252/244/16 249/245/16 -f 87/246/16 80/247/16 81/248/16 -f 254/249/16 256/250/16 253/251/16 -f 80/252/89 76/253/89 75/254/89 -f 250/255/17 48/256/17 62/257/17 -f 85/258/1 256/259/1 253/260/1 -f 83/261/8 250/262/8 251/263/8 -f 82/264/1 249/265/1 48/266/1 -f 252/267/90 83/268/90 82/269/90 -f 84/270/8 255/271/8 166/272/8 -f 256/273/90 166/274/90 154/275/90 -f 254/276/17 85/277/17 84/278/17 -f 258/279/91 260/280/91 257/281/91 -f 184/282/92 257/283/92 260/284/92 -f 183/285/92 260/284/92 259/286/92 -f 50/287/92 259/286/92 258/288/92 -f 36/289/92 258/288/92 50/287/92 -f 269/290/91 271/291/91 272/292/91 -f 269/293/8 280/294/8 270/295/8 -f 293/296/93 292/297/1 294/298/94 -f 278/299/1 293/296/95 295/300/1 -f 296/301/96 286/302/8 285/303/8 -f 296/301/97 282/304/8 298/305/8 -f 299/306/8 286/302/8 297/307/98 -f 300/308/8 282/304/8 281/309/8 -f 300/308/8 279/310/8 301/311/8 -f 302/312/8 279/310/8 269/293/8 -f 292/297/1 303/313/1 294/298/99 -f 304/314/1 278/299/1 295/300/1 -f 274/315/1 304/314/1 305/316/1 -f 306/317/1 274/315/1 305/316/1 -f 262/318/100 267/319/100 263/320/100 -f 269/290/91 306/321/91 302/322/91 -f 303/313/101 268/323/101 307/324/102 -f 299/306/103 262/325/103 261/326/103 -f 310/327/104 312/328/104 309/329/104 -f 310/330/105 262/331/105 308/332/106 -f 311/333/107 308/334/108 307/335/109 -f 268/336/110 311/337/110 307/338/111 -f 258/339/92 268/340/92 50/341/92 -f 283/342/91 139/343/91 135/344/91 -f 294/345/112 314/346/113 293/347/114 -f 34/348/75 263/349/75 35/350/75 -f 265/351/75 156/352/75 49/353/75 -f 306/354/107 181/355/107 182/356/107 -f 35/350/75 267/357/75 51/358/75 -f 303/359/115 313/360/116 294/345/117 -f 316/361/118 179/362/119 170/363/120 -f 308/364/121 175/365/107 184/366/107 -f 291/367/75 158/368/75 157/369/75 -f 275/370/75 107/371/75 109/188/75 -f 295/372/122 319/373/122 171/374/122 -f 267/357/75 52/375/75 51/358/75 -f 320/376/123 299/377/124 297/378/125 -f 302/379/107 182/356/107 178/380/107 -f 298/381/107 176/382/107 174/383/107 -f 183/285/126 308/384/127 184/282/126 -f 303/385/107 183/386/107 179/387/107 -f 268/340/107 36/388/107 50/341/107 -f 288/389/75 144/390/75 143/391/75 -f 300/392/107 177/393/107 176/382/107 -f 319/394/128 169/395/129 171/396/128 -f 270/397/75 37/398/75 38/399/75 -f 304/400/107 171/401/107 180/402/107 -f 289/403/75 110/404/75 155/405/75 -f 284/406/75 135/407/75 136/408/75 -f 305/409/107 180/402/107 181/355/107 -f 271/410/75 38/399/75 56/411/75 -f 53/412/75 271/410/75 56/411/75 -f 309/413/75 258/414/75 257/415/75 -f 282/416/75 142/229/75 139/230/75 -f 287/417/91 145/418/91 144/419/91 -f 286/420/75 33/241/75 145/242/75 -f 277/421/75 105/422/75 104/423/75 -f 36/388/92 309/424/92 257/425/92 -f 280/426/91 137/427/91 37/428/91 -f 177/393/107 302/379/107 178/380/107 -f 279/429/75 138/223/75 137/224/75 -f 313/430/130 317/431/131 316/361/132 -f 314/432/133 316/361/134 322/433/135 -f 321/434/131 324/435/136 323/436/131 -f 320/437/137 326/438/138 324/435/139 -f 325/439/140 328/440/141 326/438/142 -f 318/441/141 322/433/143 319/394/141 -f 317/442/144 303/443/144 179/444/144 -f 325/445/145 297/378/146 296/446/147 -f 322/433/148 170/363/149 169/395/150 -f 175/447/151 324/435/152 173/448/153 -f 293/347/154 318/449/155 295/450/155 -f 173/448/156 326/438/157 172/451/158 -f 327/452/159 296/446/160 298/453/159 -f 299/454/144 323/455/144 175/456/144 -f 172/451/161 328/440/162 174/457/162 -f 328/458/122 298/459/122 174/460/122 -f 215/461/16 62/462/16 83/463/16 -f 202/464/16 84/465/16 166/466/16 -f 85/467/16 236/468/16 154/469/16 -f 198/470/16 86/471/16 76/472/16 -f 79/473/16 113/474/16 75/475/16 -f 242/208/163 238/476/1 235/477/1 -f 228/195/164 224/478/1 221/479/1 -f 198/480/15 88/481/15 76/482/15 -f 165/483/88 197/484/88 86/485/88 -f 202/486/15 167/487/15 166/488/15 -f 89/489/88 201/490/88 84/491/88 -f 61/492/88 214/493/88 62/494/88 -f 92/495/165 213/496/8 216/180/166 -f 204/497/167 200/498/8 205/168/168 -f 193/499/169 196/500/8 194/160/170 -f 163/501/8 167/128/8 164/125/8 -f 151/114/1 153/502/1 152/115/1 -f 127/85/1 117/503/1 116/74/1 -f 123/82/171 115/504/1 112/505/1 -f 70/79/172 111/506/1 67/68/1 -f 215/507/15 90/508/15 83/509/15 -f 97/510/8 90/50/8 93/55/8 -f 69/511/173 88/47/8 94/52/174 -f 77/512/88 67/513/88 78/514/88 -f 59/515/8 64/26/8 60/23/8 -f 44/10/1 46/516/1 45/11/1 -f 48/517/16 222/518/16 82/519/16 -f 262/520/107 272/521/107 269/522/107 +f 76/37/8 87/129/8 168/130/8 +f 166/131/16 79/132/16 154/133/16 +f 169/134/56 156/135/8 155/118/8 +f 169/134/57 110/66/8 171/136/8 +f 172/137/58 145/108/1 173/138/59 +f 139/101/1 172/137/60 174/139/1 +f 145/108/1 175/140/1 173/138/61 +f 176/141/1 139/101/1 174/139/1 +f 137/98/1 176/141/1 177/142/1 +f 178/143/1 137/98/1 177/142/1 +f 179/144/8 156/135/8 170/145/62 +f 180/146/8 110/66/8 109/67/8 +f 180/146/8 107/64/8 181/147/8 +f 182/148/8 107/64/8 66/65/8 +f 183/149/8 49/16/8 179/144/8 +f 33/3/1 184/150/1 175/140/1 +f 186/151/8 188/152/8 185/153/8 +f 187/154/63 190/155/63 188/152/63 +f 189/156/64 192/157/64 190/155/64 +f 191/158/65 194/159/66 192/157/65 +f 195/160/1 197/71/1 198/73/1 +f 199/161/1 201/162/1 202/163/1 +f 203/164/67 205/165/68 206/166/69 +f 207/167/70 206/166/70 208/168/70 +f 209/169/71 208/168/71 210/170/71 +f 212/171/8 210/170/8 211/172/8 +f 91/173/1 214/174/1 215/175/1 +f 99/176/72 216/177/73 217/178/20 +f 103/179/74 217/178/74 218/180/74 +f 106/181/75 218/180/75 219/182/75 +f 220/183/8 106/181/8 219/182/8 +f 220/184/76 109/185/76 108/186/76 +f 221/187/8 223/173/8 224/188/8 +f 225/189/77 227/190/78 228/191/79 +f 229/192/80 226/193/80 225/189/81 +f 231/194/82 230/195/82 229/192/82 +f 232/196/1 234/197/1 233/198/1 +f 235/199/8 237/162/8 238/200/8 +f 239/201/83 241/202/84 242/203/85 +f 243/204/86 240/205/86 239/201/87 +f 245/206/88 244/207/88 243/204/88 +f 246/208/1 248/209/1 247/210/1 +f 48/211/89 224/212/89 45/213/89 +f 221/214/90 82/215/90 117/216/90 +f 233/217/76 138/218/76 137/219/76 +f 85/220/89 238/221/89 116/222/89 +f 247/223/76 142/224/76 139/225/76 +f 235/226/15 154/227/15 153/228/15 +f 79/229/91 115/230/91 152/231/91 +f 112/232/90 75/233/90 111/234/90 +f 140/235/76 33/236/76 145/237/76 +f 250/238/16 252/239/16 249/240/16 +f 87/241/16 80/242/16 81/243/16 +f 254/244/16 256/245/16 253/246/16 +f 80/247/92 76/248/92 75/249/92 +f 250/250/93 48/251/93 62/43/93 +f 85/252/1 256/253/1 253/254/1 +f 83/255/8 250/256/8 251/257/8 +f 82/258/1 249/255/1 48/259/1 +f 252/260/94 83/249/94 82/248/94 +f 84/253/8 255/261/8 166/254/8 +f 256/262/92 166/263/92 154/264/92 +f 254/265/93 85/266/93 84/267/93 +f 258/246/95 260/268/95 257/244/95 +f 184/269/96 257/269/97 260/269/97 +f 183/269/97 260/269/97 259/269/97 +f 50/269/97 259/269/97 258/269/97 +f 36/269/97 258/269/97 50/269/97 +f 269/270/95 271/271/95 272/272/95 +f 269/273/8 280/274/8 270/275/8 +f 293/276/98 292/277/1 294/278/99 +f 278/279/1 293/276/100 295/280/1 +f 296/281/101 286/282/8 285/283/8 +f 296/281/102 282/284/8 298/285/8 +f 299/286/8 286/282/8 297/287/103 +f 300/288/8 282/284/8 281/289/8 +f 300/288/8 279/290/8 301/291/8 +f 302/292/8 279/290/8 269/273/8 +f 292/277/1 303/293/1 294/278/104 +f 304/294/1 278/279/1 295/280/1 +f 274/295/1 304/294/1 305/296/1 +f 306/297/1 274/295/1 305/296/1 +f 262/298/105 267/299/105 263/300/105 +f 269/270/95 306/269/95 302/301/95 +f 303/293/106 268/302/106 307/303/107 +f 299/286/108 262/304/108 261/305/108 +f 310/306/109 312/33/109 309/35/109 +f 310/307/110 262/308/110 308/309/111 +f 311/310/112 308/311/113 307/312/114 +f 268/313/115 311/314/115 307/315/116 +f 258/316/97 268/317/117 50/316/97 +f 283/318/95 139/319/95 135/320/95 +f 294/321/118 314/322/119 293/323/120 +f 34/324/76 263/325/76 35/243/76 +f 265/326/76 156/327/76 49/328/76 +f 306/329/121 181/330/121 182/267/121 +f 35/243/122 267/331/122 51/241/122 +f 303/332/123 313/333/124 294/321/125 +f 316/334/126 179/335/127 170/336/128 +f 308/337/129 175/338/112 184/217/112 +f 291/339/76 158/340/76 157/240/76 +f 275/341/76 107/342/76 109/185/76 +f 295/343/130 319/344/130 171/345/130 +f 267/331/76 52/346/76 51/241/76 +f 320/347/131 299/348/132 297/349/133 +f 302/350/134 182/267/134 178/266/134 +f 298/351/112 176/352/112 174/353/112 +f 183/269/135 308/269/136 184/269/135 +f 303/354/112 183/355/112 179/356/112 +f 268/317/112 36/357/112 50/316/112 +f 288/358/76 144/359/76 143/360/76 +f 300/361/112 177/362/112 176/352/112 +f 319/363/137 169/364/138 171/365/137 +f 270/366/76 37/367/76 38/34/76 +f 304/368/112 171/369/112 180/370/112 +f 289/371/76 110/372/76 155/355/76 +f 284/373/76 135/374/76 136/375/76 +f 305/376/112 180/370/112 181/330/112 +f 271/377/76 38/34/76 56/378/76 +f 53/379/76 271/377/76 56/378/76 +f 309/380/76 258/381/76 257/382/76 +f 282/383/76 142/224/76 139/225/76 +f 287/384/95 145/385/95 144/386/95 +f 286/387/76 33/236/76 145/237/76 +f 277/388/76 105/389/76 104/223/76 +f 36/357/97 309/390/97 257/357/97 +f 280/391/95 137/392/95 37/393/95 +f 177/362/139 302/350/139 178/266/139 +f 279/394/76 138/218/76 137/219/76 +f 313/395/140 317/396/141 316/334/142 +f 314/397/143 316/334/144 322/398/145 +f 321/399/141 324/400/146 323/401/141 +f 320/402/147 326/403/148 324/400/149 +f 325/404/150 328/405/151 326/403/152 +f 318/406/151 322/398/153 319/363/151 +f 317/407/154 303/408/154 179/345/154 +f 325/409/155 297/349/156 296/410/157 +f 322/398/158 170/336/159 169/364/160 +f 175/411/161 324/400/162 173/412/163 +f 293/323/164 318/413/165 295/414/165 +f 173/412/166 326/403/167 172/415/168 +f 327/416/169 296/410/170 298/417/169 +f 299/418/154 323/419/154 175/420/154 +f 172/415/171 328/405/172 174/421/172 +f 328/422/130 298/423/130 174/424/130 +f 215/425/16 62/426/16 83/427/16 +f 202/428/16 84/429/16 166/426/16 +f 85/430/16 236/431/16 154/432/16 +f 198/431/16 86/433/16 76/224/16 +f 79/218/16 113/434/16 75/328/16 +f 242/203/173 238/435/1 235/436/1 +f 228/191/174 224/437/1 221/438/1 +f 198/439/90 88/440/90 76/441/90 +f 165/442/91 197/443/91 86/444/91 +f 202/445/15 167/446/15 166/447/15 +f 89/448/89 201/449/89 84/450/89 +f 61/451/89 214/452/89 62/453/89 +f 92/454/175 213/455/8 216/177/176 +f 204/456/177 200/457/8 205/165/178 +f 193/458/179 196/459/8 194/159/180 +f 163/460/8 167/128/8 164/125/8 +f 151/114/1 153/461/1 152/115/1 +f 127/85/1 117/462/1 116/74/1 +f 123/82/181 115/463/1 112/464/1 +f 70/79/182 111/465/1 67/68/1 +f 215/466/90 90/467/90 83/468/90 +f 97/469/8 90/50/8 93/55/8 +f 69/470/183 88/47/8 94/52/184 +f 77/471/91 67/472/91 78/473/91 +f 59/474/8 64/26/8 60/23/8 +f 44/10/1 46/475/1 45/11/1 +f 48/476/16 222/477/16 82/478/16 +f 262/479/112 272/480/112 269/481/112 f 34/1/1 35/92/1 36/2/1 -f 37/4/175 38/97/175 39/5/175 -f 40/6/176 39/5/176 41/7/177 -f 42/8/178 41/7/179 43/9/180 -f 45/11/1 46/516/1 47/12/1 +f 37/4/185 38/97/185 39/5/185 +f 40/6/186 39/5/186 41/7/187 +f 42/8/188 41/7/189 43/9/190 +f 45/11/1 46/475/1 47/12/1 f 50/14/8 51/61/8 52/15/8 -f 53/17/181 54/20/181 55/18/181 -f 54/20/182 57/22/183 58/21/184 -f 57/22/185 59/515/186 60/23/186 -f 61/24/8 62/523/8 63/25/8 -f 64/27/15 63/524/15 47/28/15 -f 76/30/16 77/525/16 78/31/16 -f 63/33/16 62/526/16 48/34/16 -f 75/36/1 80/527/1 81/37/1 -f 83/39/16 84/528/16 85/40/16 -f 87/42/17 81/529/17 79/43/17 -f 68/45/8 77/530/8 76/46/8 -f 89/48/8 84/531/8 83/49/8 -f 71/51/187 69/511/188 94/52/189 -f 96/54/190 97/510/190 93/55/190 -f 73/57/191 71/51/192 95/53/191 -f 101/59/193 96/54/193 98/56/194 -f 73/57/195 100/58/195 52/15/195 -f 104/62/196 101/59/196 102/60/196 +f 53/17/191 54/20/191 55/18/191 +f 54/20/192 57/22/193 58/21/194 +f 57/22/195 59/474/196 60/23/196 +f 61/24/8 62/482/8 63/25/8 +f 64/27/15 63/483/15 47/28/15 +f 76/30/16 77/484/16 78/31/16 +f 63/33/16 62/378/16 48/34/16 +f 75/36/1 80/485/1 81/37/1 +f 83/39/16 84/242/16 85/40/16 +f 87/42/17 81/250/17 79/43/17 +f 68/45/8 77/486/8 76/46/8 +f 89/48/8 84/487/8 83/49/8 +f 71/51/197 69/470/198 94/52/199 +f 96/54/200 97/469/200 93/55/200 +f 73/57/201 71/51/202 95/53/201 +f 101/59/203 96/54/203 98/56/204 +f 73/57/205 100/58/205 52/15/205 +f 104/62/206 101/59/206 102/60/206 f 107/64/8 53/17/8 56/19/8 f 110/66/8 104/62/8 105/63/8 -f 67/68/1 111/506/1 75/69/1 -f 112/71/8 113/532/8 114/72/8 -f 116/74/1 117/503/1 82/75/1 -f 72/77/197 118/87/198 119/78/199 -f 120/80/200 121/89/47 122/81/201 -f 124/83/202 125/91/203 126/84/204 -f 74/86/205 128/533/205 118/87/206 -f 129/88/207 130/94/207 121/89/207 -f 131/90/208 132/96/208 125/91/209 -f 34/1/210 128/533/210 74/86/210 -f 133/93/211 134/103/211 130/94/211 -f 135/95/212 136/100/212 132/96/212 +f 67/68/1 111/465/1 75/69/1 +f 112/71/8 113/488/8 114/72/8 +f 116/74/1 117/462/1 82/75/1 +f 72/77/207 118/87/208 119/78/209 +f 120/80/210 121/89/47 122/81/211 +f 124/83/212 125/91/213 126/84/214 +f 74/86/215 128/489/215 118/87/216 +f 129/88/217 130/94/217 121/89/217 +f 131/90/218 132/96/218 125/91/219 +f 34/1/220 128/489/220 74/86/220 +f 133/93/221 134/103/221 130/94/221 +f 135/95/222 136/100/222 132/96/222 f 38/97/1 37/4/1 137/98/1 f 136/100/1 135/95/1 139/101/1 f 134/103/1 133/93/1 141/104/1 -f 142/106/1 143/534/1 144/107/1 -f 144/107/213 143/534/213 146/109/213 -f 147/110/214 146/109/214 148/111/215 -f 149/112/216 148/111/217 150/113/216 -f 152/115/1 153/502/1 154/116/1 -f 155/118/8 156/136/8 157/119/8 -f 157/119/218 159/122/218 160/121/218 -f 159/122/219 161/124/220 162/123/221 -f 161/124/222 163/501/223 164/125/223 -f 165/126/8 86/535/8 166/127/8 -f 76/129/8 86/536/8 87/130/8 -f 166/132/16 86/537/16 79/133/16 -f 169/135/224 170/146/225 156/136/8 -f 169/135/226 155/118/8 110/66/8 -f 172/138/227 142/106/1 145/108/1 -f 139/101/1 142/106/1 172/138/228 -f 145/108/1 33/3/1 175/141/1 -f 176/142/1 138/102/1 139/101/1 -f 137/98/1 138/102/1 176/142/1 -f 178/144/1 65/99/1 137/98/1 -f 179/145/8 49/16/8 156/136/8 -f 180/147/8 171/137/8 110/66/8 -f 180/147/8 109/67/8 107/64/8 -f 182/149/8 181/148/8 107/64/8 -f 183/150/8 50/14/8 49/16/8 -f 33/3/1 36/2/1 184/151/1 -f 186/152/8 187/155/8 188/153/8 -f 187/155/229 189/157/229 190/156/229 -f 189/157/230 191/159/230 192/158/230 -f 191/159/231 193/499/232 194/160/233 -f 195/161/1 196/538/1 197/162/1 -f 199/164/1 200/539/1 201/165/1 -f 203/167/234 204/497/235 205/168/236 -f 207/170/237 203/167/238 206/169/237 -f 209/172/239 207/170/239 208/171/239 -f 212/174/8 209/172/8 210/173/8 -f 91/176/1 213/540/1 214/177/1 -f 99/179/240 92/495/241 216/180/242 -f 103/182/243 99/179/244 217/181/243 -f 106/184/245 103/182/245 218/183/245 -f 220/186/8 108/541/8 106/184/8 -f 220/187/75 107/371/75 109/188/75 -f 221/190/8 222/542/8 223/191/8 -f 225/193/246 226/197/247 227/194/248 -f 229/196/249 230/199/249 226/197/249 -f 231/198/250 232/200/250 230/199/250 -f 232/200/1 231/198/1 234/201/1 -f 235/203/8 236/543/8 237/204/8 -f 239/206/251 240/210/252 241/207/253 -f 243/209/254 244/212/254 240/210/254 -f 245/211/255 246/213/255 244/212/255 -f 246/213/1 245/211/1 248/214/1 -f 48/216/88 223/544/88 224/217/88 -f 221/219/15 222/545/15 82/220/15 -f 233/222/75 234/546/75 138/223/75 -f 85/225/88 237/547/88 238/226/88 -f 247/228/75 248/548/75 142/229/75 -f 235/231/15 236/549/15 154/232/15 -f 79/234/88 114/550/88 115/235/88 -f 112/237/15 113/551/15 75/238/15 -f 140/240/75 141/552/75 33/241/75 -f 250/243/16 251/553/16 252/244/16 -f 87/246/16 168/554/16 80/247/16 -f 254/249/16 255/555/16 256/250/16 -f 80/252/89 168/556/89 76/253/89 -f 250/255/17 249/557/17 48/256/17 -f 85/258/1 154/558/1 256/259/1 -f 83/261/8 62/559/8 250/262/8 -f 82/264/1 252/560/1 249/265/1 -f 252/267/90 251/561/90 83/268/90 -f 84/270/8 254/562/8 255/271/8 -f 256/273/90 255/563/90 166/274/90 -f 254/276/17 253/564/17 85/277/17 -f 258/279/91 259/565/91 260/280/91 -f 184/282/92 36/289/92 257/283/92 -f 183/285/92 184/282/92 260/284/92 -f 50/287/92 183/285/92 259/286/92 -f 36/289/92 257/283/92 258/288/92 -f 269/290/91 270/566/91 271/291/91 -f 269/293/8 279/310/8 280/294/8 -f 293/296/256 289/567/1 292/297/1 -f 278/299/1 289/567/1 293/296/257 -f 296/301/258 297/307/259 286/302/8 -f 296/301/260 285/303/8 282/304/8 -f 299/306/8 261/326/8 286/302/8 -f 300/308/8 298/305/8 282/304/8 -f 300/308/8 281/309/8 279/310/8 -f 302/312/8 301/311/8 279/310/8 -f 292/297/1 265/568/1 303/313/1 -f 304/314/1 275/569/1 278/299/1 -f 274/315/1 275/569/1 304/314/1 -f 306/317/1 272/570/1 274/315/1 -f 262/318/100 268/571/100 267/319/100 -f 269/290/91 272/292/91 306/321/91 -f 303/313/261 265/568/261 268/323/261 -f 299/306/262 308/384/263 262/325/262 -f 310/327/104 311/572/104 312/328/104 -f 310/330/264 309/573/264 262/331/264 -f 311/333/107 310/574/107 308/334/265 -f 268/336/266 312/575/266 311/337/266 -f 258/339/107 312/576/107 268/340/107 -f 283/342/91 282/577/91 139/343/91 -f 294/345/267 313/360/268 314/346/269 -f 34/348/75 264/578/75 263/349/75 -f 265/351/75 292/579/75 156/352/75 -f 306/354/107 305/409/107 181/355/107 -f 35/350/75 263/349/75 267/357/75 -f 303/359/270 315/580/270 313/360/271 -f 316/361/272 317/431/273 179/362/273 -f 308/364/274 299/581/107 175/365/107 -f 291/367/75 290/582/75 158/368/75 -f 275/370/75 274/583/75 107/371/75 -f 295/372/122 318/584/122 319/373/122 -f 267/357/75 266/585/75 52/375/75 -f 320/376/275 321/586/276 299/377/276 -f 302/379/107 306/354/107 182/356/107 -f 298/381/107 300/392/107 176/382/107 -f 183/285/92 307/587/277 308/384/278 -f 303/385/107 307/588/279 183/386/107 -f 268/340/107 262/520/107 36/388/107 -f 288/389/75 287/589/75 144/390/75 -f 300/392/107 301/590/107 177/393/107 -f 319/394/280 322/433/281 169/395/282 -f 270/397/75 280/591/75 37/398/75 -f 304/400/107 295/592/107 171/401/107 -f 289/403/75 278/593/75 110/404/75 -f 284/406/75 283/594/75 135/407/75 -f 305/409/107 304/400/107 180/402/107 -f 271/410/75 270/397/75 38/399/75 -f 53/412/75 273/595/75 271/410/75 -f 309/413/75 312/596/75 258/414/75 -f 282/416/75 285/597/75 142/229/75 -f 287/417/91 286/598/91 145/418/91 -f 286/420/75 261/599/75 33/241/75 -f 277/421/75 276/600/75 105/422/75 -f 36/388/107 262/520/107 309/424/107 -f 280/426/91 279/601/91 137/427/91 -f 177/393/107 301/590/107 302/379/107 -f 279/429/75 281/602/75 138/223/75 -f 313/430/283 315/603/131 317/431/131 -f 314/432/284 313/430/285 316/361/286 -f 321/434/131 320/437/287 324/435/288 -f 320/437/289 325/439/290 326/438/291 -f 325/439/292 327/604/141 328/440/141 -f 318/441/141 314/432/293 322/433/294 -f 317/442/144 315/605/144 303/443/144 -f 325/445/295 320/376/296 297/378/297 -f 322/433/298 316/361/299 170/363/300 -f 175/447/301 323/436/301 324/435/302 -f 293/347/303 314/346/304 318/449/305 -f 173/448/306 324/435/307 326/438/308 -f 327/452/309 325/445/310 296/446/311 -f 299/454/144 321/606/144 323/455/144 -f 172/451/312 326/438/313 328/440/314 -f 328/458/122 327/607/122 298/459/122 -f 215/461/16 214/608/16 62/462/16 -f 202/464/16 201/609/16 84/465/16 -f 85/467/16 237/610/16 236/468/16 -f 198/470/16 197/611/16 86/471/16 -f 79/473/16 114/612/16 113/474/16 -f 242/208/315 241/207/316 238/476/1 -f 228/195/317 227/194/318 224/478/1 -f 198/480/15 195/613/15 88/481/15 -f 165/483/88 196/614/88 197/484/88 -f 202/486/15 199/615/15 167/487/15 -f 89/489/88 200/616/88 201/490/88 -f 61/492/88 213/617/88 214/493/88 -f 92/495/319 91/618/8 213/496/8 -f 204/497/320 199/619/8 200/498/8 -f 193/499/321 195/620/8 196/500/8 -f 163/501/8 165/126/8 167/128/8 -f 151/114/1 150/113/1 153/502/1 -f 127/85/1 126/84/1 117/503/1 -f 123/82/322 122/81/323 115/504/1 -f 70/79/324 119/78/325 111/506/1 -f 215/507/15 91/621/15 90/508/15 -f 97/510/8 89/48/8 90/50/8 -f 69/511/326 68/45/8 88/47/8 -f 77/512/88 68/622/88 67/513/88 -f 59/515/8 61/24/8 64/26/8 -f 44/10/1 43/9/1 46/516/1 -f 48/517/16 223/623/16 222/518/16 -f 262/520/107 268/340/107 272/521/107 +f 142/106/1 143/490/1 144/107/1 +f 144/107/223 143/490/223 146/109/223 +f 147/110/224 146/109/224 148/111/225 +f 149/112/226 148/111/227 150/113/226 +f 152/115/1 153/461/1 154/116/1 +f 155/118/8 156/135/8 157/119/8 +f 157/119/228 159/122/228 160/121/228 +f 159/122/229 161/124/230 162/123/231 +f 161/124/232 163/460/233 164/125/233 +f 165/126/8 86/491/8 166/127/8 +f 76/37/8 86/492/8 87/129/8 +f 166/131/16 86/40/16 79/132/16 +f 169/134/234 170/145/235 156/135/8 +f 169/134/236 155/118/8 110/66/8 +f 172/137/237 142/106/1 145/108/1 +f 139/101/1 142/106/1 172/137/238 +f 145/108/1 33/3/1 175/140/1 +f 176/141/1 138/102/1 139/101/1 +f 137/98/1 138/102/1 176/141/1 +f 178/143/1 65/99/1 137/98/1 +f 179/144/8 49/16/8 156/135/8 +f 180/146/8 171/136/8 110/66/8 +f 180/146/8 109/67/8 107/64/8 +f 182/148/8 181/147/8 107/64/8 +f 183/149/8 50/14/8 49/16/8 +f 33/3/1 36/2/1 184/150/1 +f 186/151/8 187/154/8 188/152/8 +f 187/154/239 189/156/239 190/155/239 +f 189/156/240 191/158/240 192/157/240 +f 191/158/241 193/458/242 194/159/243 +f 195/160/1 196/493/1 197/71/1 +f 199/161/1 200/494/1 201/162/1 +f 203/164/244 204/456/245 205/165/246 +f 207/167/247 203/164/248 206/166/247 +f 209/169/249 207/167/249 208/168/249 +f 212/171/8 209/169/8 210/170/8 +f 91/173/1 213/495/1 214/174/1 +f 99/176/250 92/454/251 216/177/252 +f 103/179/253 99/176/254 217/178/253 +f 106/181/255 103/179/255 218/180/255 +f 220/183/8 108/496/8 106/181/8 +f 220/184/76 107/342/76 109/185/76 +f 221/187/8 222/495/8 223/173/8 +f 225/189/256 226/193/257 227/190/258 +f 229/192/259 230/195/259 226/193/259 +f 231/194/260 232/196/260 230/195/260 +f 232/196/1 231/194/1 234/197/1 +f 235/199/8 236/163/8 237/162/8 +f 239/201/261 240/205/262 241/202/263 +f 243/204/264 244/207/264 240/205/264 +f 245/206/265 246/208/265 244/207/265 +f 246/208/1 245/206/1 248/209/1 +f 48/211/89 223/497/89 224/212/89 +f 221/214/90 222/498/90 82/215/90 +f 233/217/76 234/236/76 138/218/76 +f 85/220/89 237/499/89 238/221/89 +f 247/223/76 248/425/76 142/224/76 +f 235/226/15 236/500/15 154/227/15 +f 79/229/91 114/501/91 115/230/91 +f 112/232/90 113/502/90 75/233/90 +f 140/235/76 141/503/76 33/236/76 +f 250/238/16 251/504/16 252/239/16 +f 87/241/16 168/239/16 80/242/16 +f 254/244/16 255/505/16 256/245/16 +f 80/247/94 168/506/94 76/248/94 +f 250/250/93 249/507/93 48/251/93 +f 85/252/1 154/508/1 256/253/1 +f 83/255/8 62/509/8 250/256/8 +f 82/258/1 252/509/1 249/255/1 +f 252/260/94 251/510/94 83/249/94 +f 84/253/8 254/511/8 255/261/8 +f 256/262/92 255/512/92 166/263/92 +f 254/265/93 253/513/93 85/266/93 +f 258/246/95 259/514/95 260/268/95 +f 184/269/97 36/269/97 257/269/97 +f 183/269/97 184/269/97 260/269/97 +f 50/269/97 183/269/97 259/269/96 +f 36/269/97 257/269/97 258/269/97 +f 269/270/95 270/515/95 271/271/95 +f 269/273/8 279/290/8 280/274/8 +f 293/276/266 289/516/1 292/277/1 +f 278/279/1 289/516/1 293/276/267 +f 296/281/268 297/287/269 286/282/8 +f 296/281/270 285/283/8 282/284/8 +f 299/286/8 261/305/8 286/282/8 +f 300/288/8 298/285/8 282/284/8 +f 300/288/8 281/289/8 279/290/8 +f 302/292/8 301/291/8 279/290/8 +f 292/277/1 265/517/1 303/293/1 +f 304/294/1 275/518/1 278/279/1 +f 274/295/1 275/518/1 304/294/1 +f 306/297/1 272/519/1 274/295/1 +f 262/298/105 268/520/105 267/299/105 +f 269/270/95 272/272/95 306/269/95 +f 303/293/271 265/517/271 268/302/271 +f 299/286/272 308/269/273 262/304/272 +f 310/306/109 311/521/109 312/33/109 +f 310/307/274 309/522/274 262/308/274 +f 311/310/112 310/523/112 308/311/275 +f 268/313/276 312/524/276 311/314/276 +f 258/316/112 312/525/112 268/317/112 +f 283/318/95 282/526/95 139/319/95 +f 294/321/277 313/333/278 314/322/279 +f 34/324/76 264/527/76 263/325/76 +f 265/326/76 292/528/76 156/327/76 +f 306/329/112 305/376/112 181/330/112 +f 35/243/122 263/325/122 267/331/122 +f 303/332/280 315/529/280 313/333/281 +f 316/334/282 317/396/283 179/335/283 +f 308/337/284 299/530/112 175/338/112 +f 291/339/76 290/531/76 158/340/76 +f 275/341/76 274/532/76 107/342/76 +f 295/343/130 318/533/130 319/344/130 +f 267/331/76 266/534/76 52/346/76 +f 320/347/285 321/535/286 299/348/286 +f 302/350/134 306/329/134 182/267/134 +f 298/351/112 300/361/112 176/352/112 +f 183/269/97 307/269/287 308/269/288 +f 303/354/112 307/536/289 183/355/112 +f 268/317/112 262/479/112 36/357/112 +f 288/358/76 287/432/76 144/359/76 +f 300/361/112 301/537/112 177/362/112 +f 319/363/290 322/398/291 169/364/292 +f 270/366/76 280/538/76 37/367/76 +f 304/368/112 295/539/112 171/369/112 +f 289/371/76 278/540/76 110/372/76 +f 284/373/76 283/478/76 135/374/76 +f 305/376/112 304/368/112 180/370/112 +f 271/377/76 270/366/76 38/34/76 +f 53/379/76 273/541/76 271/377/76 +f 309/380/76 312/542/76 258/381/76 +f 282/383/76 285/543/76 142/224/76 +f 287/384/95 286/544/95 145/385/95 +f 286/387/76 261/545/76 33/236/76 +f 277/388/76 276/546/76 105/389/76 +f 36/357/112 262/479/112 309/390/112 +f 280/391/95 279/547/95 137/392/95 +f 177/362/112 301/537/112 302/350/112 +f 279/394/76 281/548/76 138/218/76 +f 313/395/293 315/549/141 317/396/141 +f 314/397/294 313/395/295 316/334/296 +f 321/399/141 320/402/297 324/400/298 +f 320/402/299 325/404/300 326/403/301 +f 325/404/302 327/550/151 328/405/151 +f 318/406/151 314/397/303 322/398/304 +f 317/407/154 315/551/154 303/408/154 +f 325/409/305 320/347/306 297/349/307 +f 322/398/308 316/334/309 170/336/310 +f 175/411/311 323/401/311 324/400/312 +f 293/323/313 314/322/314 318/413/315 +f 173/412/316 324/400/317 326/403/318 +f 327/416/319 325/409/320 296/410/321 +f 299/418/154 321/552/154 323/419/154 +f 172/415/322 326/403/323 328/405/324 +f 328/422/130 327/553/130 298/423/130 +f 215/425/16 214/554/16 62/426/16 +f 202/428/16 201/555/16 84/429/16 +f 85/430/16 237/309/16 236/431/16 +f 198/431/16 197/371/16 86/433/16 +f 79/218/16 114/476/16 113/434/16 +f 242/203/325 241/202/326 238/435/1 +f 228/191/327 227/190/328 224/437/1 +f 198/439/90 195/556/90 88/440/90 +f 165/442/91 196/557/91 197/443/91 +f 202/445/15 199/558/15 167/446/15 +f 89/448/89 200/559/89 201/449/89 +f 61/451/89 213/560/89 214/452/89 +f 92/454/329 91/561/8 213/455/8 +f 204/456/330 199/562/8 200/457/8 +f 193/458/331 195/563/8 196/459/8 +f 163/460/8 165/126/8 167/128/8 +f 151/114/1 150/113/1 153/461/1 +f 127/85/1 126/84/1 117/462/1 +f 123/82/332 122/81/333 115/463/1 +f 70/79/334 119/78/335 111/465/1 +f 215/466/90 91/564/90 90/467/90 +f 97/469/8 89/48/8 90/50/8 +f 69/470/336 68/45/8 88/47/8 +f 77/471/89 68/565/89 67/472/89 +f 59/474/8 61/24/8 64/26/8 +f 44/10/1 43/9/1 46/475/1 +f 48/476/16 223/185/16 222/477/16 +f 262/479/112 268/317/112 272/480/112 s 1 -f 2/624/327 4/625/328 1/626/329 -f 3/627/330 6/628/331 4/625/328 -f 3/627/330 7/629/332 5/630/333 -f 6/628/331 7/629/332 8/631/334 -f 7/629/332 1/626/329 8/631/334 -f 9/632/335 11/633/336 12/634/337 -f 13/635/338 9/636/335 12/637/337 -f 15/638/339 12/637/337 11/639/336 -f 16/640/340 11/639/336 10/641/341 -f 9/642/335 16/640/340 10/641/341 -f 13/643/338 1/644/329 14/645/342 -f 6/646/331 13/635/338 15/638/339 -f 16/640/340 6/647/331 15/638/339 -f 1/644/329 16/648/340 14/645/342 -f 17/649/343 19/650/344 20/651/345 -f 20/651/345 21/652/346 22/653/347 -f 19/650/344 23/654/348 21/652/346 -f 22/653/347 23/654/348 24/655/349 -f 23/654/348 17/649/343 24/655/349 -f 25/656/335 27/657/336 28/658/337 -f 28/659/337 30/660/350 25/661/335 -f 31/662/351 28/659/337 27/663/336 -f 26/664/341 31/665/351 27/666/336 -f 30/667/350 26/664/341 25/668/335 -f 24/669/349 30/670/350 29/671/352 -f 22/672/347 29/673/352 31/662/351 -f 32/674/353 22/675/347 31/665/351 -f 17/676/343 32/677/353 30/670/350 -f 337/678/354 354/679/355 339/680/355 -f 358/681/104 334/682/356 357/683/104 -f 335/684/357 352/685/358 337/678/354 -f 360/686/88 362/687/359 359/688/88 -f 350/689/356 335/684/357 334/682/356 -f 361/690/360 364/691/361 362/687/359 -f 363/692/362 366/693/363 364/691/361 -f 366/693/363 345/694/364 331/695/364 -f 370/696/15 372/697/365 369/698/15 -f 377/699/366 371/700/367 378/701/368 -f 378/701/368 381/702/369 377/699/366 -f 385/703/370 381/702/369 382/704/371 -f 388/705/104 385/703/370 387/706/104 -f 345/694/364 332/707/91 331/695/364 -f 444/708/104 357/683/104 443/709/104 -f 353/710/372 469/711/88 355/712/88 -f 351/713/373 470/714/374 353/710/372 -f 348/715/375 471/716/376 351/713/373 -f 348/715/375 473/717/377 472/718/378 -f 474/719/91 347/720/379 386/721/91 -f 434/722/380 468/723/104 431/724/104 -f 467/725/91 383/726/381 389/727/91 -f 380/728/382 466/729/383 464/730/384 -f 436/731/385 465/732/386 434/722/380 -f 459/733/387 436/731/385 438/734/388 -f 380/728/382 462/735/389 375/736/390 -f 460/737/391 438/734/388 440/738/392 -f 375/736/390 461/739/393 376/740/394 -f 376/740/394 458/741/88 368/742/88 -f 457/743/15 440/738/392 442/744/15 -f 439/745/395 456/746/88 441/747/88 -f 437/748/396 454/749/397 439/745/395 -f 435/750/398 452/751/399 437/748/396 -f 435/750/398 448/752/400 450/753/401 -f 445/754/91 433/755/402 432/756/91 -f 346/757/403 446/758/104 343/759/104 -f 379/760/404 447/761/405 346/757/403 -f 451/762/406 379/760/404 374/763/407 -f 453/764/408 374/763/407 373/765/409 -f 455/766/15 373/765/409 367/767/15 -f 336/768/375 484/769/377 333/770/379 -f 484/769/377 414/771/91 333/770/379 -f 336/768/375 478/772/376 482/773/378 -f 338/774/410 479/775/411 478/772/376 -f 402/776/412 480/777/413 403/778/365 -f 415/779/104 483/780/370 413/781/414 -f 483/780/370 409/782/369 413/781/414 -f 409/782/369 477/783/415 402/776/412 -f 408/784/382 490/785/389 494/786/384 -f 408/784/382 496/787/383 412/788/381 -f 496/787/383 416/789/91 412/788/381 -f 401/790/416 491/791/417 490/785/389 -f 419/792/104 495/793/386 420/794/380 -f 495/793/386 423/795/385 420/794/380 -f 423/795/385 489/796/418 425/797/419 -f 425/797/419 492/798/420 427/799/392 -f 411/800/400 422/801/91 421/802/402 -f 424/803/398 411/800/400 421/802/402 -f 424/803/398 398/804/399 407/805/401 -f 426/806/421 399/807/422 398/804/399 -f 395/808/423 400/809/424 396/810/425 -f 405/811/404 397/812/426 395/808/423 -f 410/813/405 405/811/404 330/814/427 -f 329/815/104 410/813/405 330/814/427 -f 400/809/424 390/816/15 396/810/425 -f 429/817/88 399/807/422 428/818/395 -f 492/798/420 430/819/15 427/799/392 -f 393/820/88 491/791/417 404/821/394 -f 480/777/413 394/822/15 403/778/365 -f 341/823/88 479/775/411 340/824/372 -f 354/679/355 342/825/15 339/680/355 -f 2/624/327 3/627/330 4/625/328 -f 3/627/330 5/630/333 6/628/331 -f 3/627/330 2/624/327 7/629/332 -f 6/628/331 5/630/333 7/629/332 -f 7/629/332 2/624/327 1/626/329 -f 9/632/335 10/826/341 11/633/336 -f 13/635/338 14/827/342 9/636/335 -f 15/638/339 13/635/338 12/637/337 -f 16/640/340 15/638/339 11/639/336 -f 9/642/335 14/828/342 16/640/340 -f 13/643/338 8/829/334 1/644/329 -f 6/646/331 8/830/334 13/635/338 -f 16/640/340 4/831/328 6/647/331 -f 1/644/329 4/832/328 16/648/340 -f 17/649/343 18/833/428 19/650/344 -f 20/651/345 19/650/344 21/652/346 -f 19/650/344 18/833/428 23/654/348 -f 22/653/347 21/652/346 23/654/348 -f 23/654/348 18/833/428 17/649/343 -f 25/656/335 26/834/341 27/657/336 -f 28/659/337 29/673/352 30/660/350 -f 31/662/351 29/673/352 28/659/337 -f 26/664/341 32/674/353 31/665/351 -f 30/667/350 32/674/353 26/664/341 -f 24/669/349 17/676/343 30/670/350 -f 22/672/347 24/835/349 29/673/352 -f 32/674/353 20/836/345 22/675/347 -f 17/676/343 20/837/345 32/677/353 -f 337/678/354 352/685/358 354/679/355 -f 358/681/104 350/689/356 334/682/356 -f 335/684/357 349/838/357 352/685/358 -f 360/686/88 361/690/360 362/687/359 -f 350/689/356 349/838/357 335/684/357 -f 361/690/360 363/692/362 364/691/361 -f 363/692/362 365/839/363 366/693/363 -f 366/693/363 365/839/363 345/694/364 -f 370/696/15 371/700/367 372/697/365 -f 377/699/366 372/697/365 371/700/367 -f 378/701/368 382/704/371 381/702/369 -f 385/703/370 384/840/414 381/702/369 -f 388/705/104 384/840/414 385/703/370 -f 345/694/364 344/841/91 332/707/91 -f 444/708/104 358/681/104 357/683/104 -f 353/710/372 470/714/374 469/711/88 -f 351/713/373 471/716/376 470/714/374 -f 348/715/375 472/718/378 471/716/376 -f 348/715/375 347/720/379 473/717/377 -f 474/719/91 473/717/377 347/720/379 -f 434/722/380 465/732/386 468/723/104 -f 467/725/91 466/729/383 383/726/381 -f 380/728/382 383/726/381 466/729/383 -f 436/731/385 463/842/429 465/732/386 -f 459/733/387 463/842/429 436/731/385 -f 380/728/382 464/730/384 462/735/389 -f 460/737/391 459/733/387 438/734/388 -f 375/736/390 462/735/389 461/739/393 -f 376/740/394 461/739/393 458/741/88 -f 457/743/15 460/737/391 440/738/392 -f 439/745/395 454/749/397 456/746/88 -f 437/748/396 452/751/399 454/749/397 -f 435/750/398 450/753/401 452/751/399 -f 435/750/398 433/755/402 448/752/400 -f 445/754/91 448/752/400 433/755/402 -f 346/757/403 447/761/405 446/758/104 -f 379/760/404 449/843/430 447/761/405 -f 451/762/406 449/843/430 379/760/404 -f 453/764/408 451/762/406 374/763/407 -f 455/766/15 453/764/408 373/765/409 -f 336/768/375 482/773/378 484/769/377 -f 484/769/377 485/844/91 414/771/91 -f 336/768/375 338/774/410 478/772/376 -f 338/774/410 340/824/372 479/775/411 -f 402/776/412 477/783/415 480/777/413 -f 415/779/104 486/845/104 483/780/370 -f 483/780/370 481/846/371 409/782/369 -f 409/782/369 481/846/371 477/783/415 -f 408/784/382 401/790/416 490/785/389 -f 408/784/382 494/786/384 496/787/383 -f 496/787/383 497/847/91 416/789/91 -f 401/790/416 404/821/394 491/791/417 -f 419/792/104 498/848/104 495/793/386 -f 495/793/386 493/849/429 423/795/385 -f 423/795/385 493/849/429 489/796/418 -f 425/797/419 489/796/418 492/798/420 -f 411/800/400 417/850/91 422/801/91 -f 424/803/398 407/805/401 411/800/400 -f 424/803/398 426/806/421 398/804/399 -f 426/806/421 428/818/395 399/807/422 -f 395/808/423 397/812/426 400/809/424 -f 405/811/404 406/851/430 397/812/426 -f 410/813/405 406/851/430 405/811/404 -f 329/815/104 418/852/104 410/813/405 -f 400/809/424 391/853/15 390/816/15 -f 429/817/88 392/854/88 399/807/422 -f 492/798/420 487/855/15 430/819/15 -f 393/820/88 488/856/88 491/791/417 -f 480/777/413 475/857/15 394/822/15 -f 341/823/88 476/858/88 479/775/411 -f 354/679/355 356/859/15 342/825/15 -o Main -v 0.404348 2.344625 -0.169240 -v -0.025414 2.229476 -0.168127 -v -0.025414 2.447085 -0.235523 -v 0.295223 2.532996 -0.236354 -v 0.161965 3.479305 11.476994 -v 0.026115 3.515703 11.476642 -v 0.026115 3.520083 12.578159 -v 0.158830 3.484524 12.578503 -v 0.360992 2.553488 7.419190 -v 0.026117 2.463763 7.420058 -v -0.856289 3.221189 -0.177715 -v -0.806233 2.871109 -0.174330 -v -0.581955 2.963729 7.415224 -v -0.620958 3.236514 7.412587 -v 0.718957 3.518703 -0.180592 -v 0.404349 3.833296 -0.183633 -v 0.360992 3.713472 7.407975 -v 0.606137 3.468339 7.410346 -v -0.025414 3.948445 -0.184746 -v -0.455176 3.833296 -0.183633 -v -0.308757 3.713473 7.407975 -v 0.026117 3.803198 7.407108 -v 0.718957 2.659218 -0.172282 -v 0.606137 2.798622 7.416821 -v -0.785146 2.848658 -0.174113 -v -0.455177 2.344625 -0.169240 -v -0.308757 2.553488 7.419190 -v -0.565872 2.946235 7.415394 -v -0.769785 3.518703 -0.180592 -v -0.553902 3.468339 7.410346 -v 0.791086 3.249524 -0.177989 -v 0.791023 3.004963 -0.175625 -v 0.579132 3.025661 -0.241117 -v 0.583760 3.208122 -0.242881 -v 0.425803 3.342331 -0.916230 -v 0.469526 3.179162 -0.914652 -v 0.300966 3.184552 -0.543207 -v 0.271888 3.293070 -0.544256 -v 0.662341 3.258592 7.412374 -v 0.261414 3.108174 11.480582 -v 0.281334 3.212642 11.479572 -v 0.284214 3.294771 11.478778 -v 0.261414 3.379859 11.477955 -v -0.109735 3.479305 11.476994 -v -0.209184 3.379859 11.477955 -v -0.234384 3.285815 11.478865 -v -0.218685 3.175153 11.479935 -v -0.109735 3.008729 11.481544 -v 0.026115 2.972330 11.481895 -v 0.161965 3.008729 11.481544 -v -0.203755 3.387375 12.579442 -v -0.106601 3.484524 12.578503 -v 0.026115 2.989248 12.583291 -v -0.106601 3.024806 12.582948 -v 0.255984 3.387375 12.579442 -v 0.278259 3.304250 12.580246 -v 0.158830 3.024806 12.582948 -v -0.213038 3.187391 12.581376 -v -0.228374 3.295500 12.580331 -v 0.255984 3.121957 12.582008 -v 0.226939 3.190377 8.484865 -v 0.229205 3.255001 8.484241 -v 0.221033 3.253622 8.507836 -v 0.218858 3.191598 8.508436 -v 0.128710 3.037602 8.509925 -v 0.203814 3.112703 8.509199 -v 0.225277 3.128225 11.396477 -v 0.141101 3.044054 11.397291 -v 0.026117 3.420470 8.506223 -v -0.076477 3.392981 8.506489 -v -0.088871 3.442358 11.393440 -v 0.026115 3.473166 11.393142 -v 0.203814 3.317881 8.507215 -v 0.128710 3.392981 8.506489 -v 0.141101 3.442358 11.393440 -v 0.225277 3.358186 11.394254 -v -0.170612 3.246857 8.507902 -v -0.158757 3.163285 8.508710 -v -0.181089 3.184917 11.395928 -v -0.194377 3.278584 11.395023 -v 0.026117 3.010113 8.510191 -v 0.026115 3.013243 11.397589 -v 0.244576 3.286165 11.394950 -v -0.076477 3.037602 8.509925 -v -0.088871 3.044054 11.397291 -v -0.151581 3.317881 8.507215 -v -0.173046 3.358186 11.394254 -v 0.133012 3.400203 8.482837 -v 0.026117 3.428843 8.482559 -v -0.080779 3.400203 8.482837 -v -0.159031 3.321954 8.483593 -v -0.080779 3.029925 8.486416 -v 0.026117 3.001283 8.486693 -v 0.211264 3.321954 8.483593 -v 0.133012 3.029925 8.486416 -v -0.178861 3.247952 8.484308 -v -0.166508 3.160877 8.485150 -v 0.211264 3.108174 8.485660 -v 0.130800 3.031615 8.264970 -v 0.207433 3.108244 8.264229 -v 0.026117 3.422280 8.261192 -v -0.078566 3.394231 8.261463 -v 0.207433 3.317600 8.262204 -v 0.130800 3.394231 8.261463 -v -0.174619 3.245131 8.262905 -v -0.162522 3.159858 8.263730 -v 0.026117 3.003567 8.265241 -v 0.225003 3.252033 8.262838 -v -0.078566 3.031615 8.264970 -v -0.155200 3.317600 8.262204 -v 0.125120 3.384223 8.243902 -v 0.026117 3.410749 8.243646 -v -0.072887 3.384223 8.243902 -v -0.145362 3.311750 8.244603 -v -0.072887 3.041281 8.247218 -v 0.026117 3.014755 8.247475 -v 0.214212 3.249741 8.245203 -v 0.197596 3.311750 8.244603 -v 0.125120 3.041281 8.247218 -v -0.163728 3.243213 8.245266 -v -0.152287 3.162566 8.246045 -v 0.197596 3.113754 8.246517 -v 0.126247 3.033054 7.598080 -v 0.199547 3.106351 7.597371 -v 0.026117 3.406727 7.594467 -v -0.074013 3.379899 7.594727 -v 0.199547 3.306602 7.595435 -v 0.126247 3.379899 7.594727 -v -0.165888 3.237284 7.596105 -v -0.154317 3.155719 7.596893 -v 0.026117 3.006226 7.598339 -v 0.216353 3.243886 7.596042 -v -0.074013 3.033054 7.598080 -v -0.147313 3.306602 7.595435 -v 0.214230 3.183352 7.596626 -v 0.655241 3.056143 7.414330 -v 0.662640 3.068029 7.414216 -v -0.150892 3.150488 7.596944 -v -0.025414 2.339091 -0.673720 -v 0.347100 2.438901 -0.674685 -v -0.640253 3.186982 -0.242677 -v -0.603200 2.925795 -0.240152 -v 0.529946 3.408951 -0.244823 -v 0.295223 3.643663 -0.247092 -v -0.025414 3.729573 -0.247923 -v -0.346051 3.643663 -0.247092 -v 0.529946 2.767707 -0.238623 -v -0.592235 2.909045 -0.239990 -v -0.580774 3.408952 -0.244823 -v -0.346051 2.532996 -0.236354 -v 0.676943 3.011275 -0.680219 -v 0.688901 3.198697 -0.682031 -v 0.682320 3.223258 -0.682268 -v 0.474129 3.163835 -0.723243 -v 0.469526 3.181010 -0.723409 -v -0.739729 3.198697 -0.682031 -v -0.696682 2.895252 -0.679097 -v 0.619799 3.456579 -0.684524 -v 0.347100 3.729265 -0.687160 -v -0.025414 3.829076 -0.688125 -v -0.397928 3.729265 -0.687160 -v 0.619799 2.711587 -0.677321 -v -0.683942 2.875792 -0.678909 -v -0.670627 3.456579 -0.684524 -v -0.397928 2.438901 -0.674685 -v 0.465767 3.032764 -0.721976 -v 0.465767 3.030915 -0.913219 -v 0.474129 3.161986 -0.914486 -v -0.025414 2.562685 -0.717431 -v 0.235096 2.632485 -0.718106 -v -0.524957 3.163835 -0.723243 -v -0.494852 2.951626 -0.721192 -v 0.425803 3.344180 -0.724987 -v 0.235097 3.534878 -0.726831 -v -0.025414 3.604678 -0.727505 -v -0.285924 3.534878 -0.726831 -v 0.425803 2.823183 -0.719950 -v -0.485943 2.938017 -0.721060 -v -0.476631 3.344180 -0.724987 -v 0.674422 2.998053 -0.680091 -v 0.464004 3.023518 -0.721887 -v -0.285924 2.632485 -0.718106 -v -0.488505 3.299868 -0.724558 -v -0.476631 3.342331 -0.916230 -v -0.488505 3.298019 -0.915802 -v 0.235096 2.630636 -0.909349 -v -0.025414 2.560836 -0.908674 -v -0.028200 2.773328 -0.539231 -v 0.145056 2.819749 -0.539680 -v -0.524957 3.161986 -0.914486 -v -0.494852 2.949777 -0.912435 -v 0.235097 3.533029 -0.918074 -v -0.025414 3.602829 -0.918749 -v -0.285924 3.533029 -0.918074 -v 0.425803 2.821334 -0.911193 -v -0.485943 2.936168 -0.912303 -v -0.285924 2.630636 -0.909349 -v 0.300966 3.137746 -5.384423 -v 0.304027 3.126323 -5.384313 -v 0.180622 3.105078 -5.752636 -v 0.178769 3.111992 -5.752703 -v -0.360427 3.173130 -0.543097 -v -0.340405 3.031997 -0.541732 -v 0.145056 3.419896 -0.545482 -v -0.028200 3.466318 -0.545931 -v -0.201455 3.419896 -0.545482 -v 0.271888 2.946575 -0.540906 -v -0.334480 3.022947 -0.541645 -v -0.328287 3.293070 -0.544256 -v 0.464004 3.021669 -0.913130 -v 0.297293 3.079810 -0.542194 -v -0.201455 2.819749 -0.539680 -v -0.687605 3.393217 -0.683911 -v 0.304027 3.173130 -0.543097 -v -0.125370 3.254456 -5.754081 -v -0.202147 3.177683 -5.753338 -v -0.206927 3.159843 -5.753165 -v -0.210469 3.146626 -5.753037 -v -0.214011 3.133408 -5.752910 -v -0.217553 3.120190 -5.752782 -v -0.220761 3.108217 -5.752666 -v -0.221602 3.105078 -5.752636 -v -0.209482 3.019644 -5.751810 -v -0.205896 3.014165 -5.751757 -v -0.125370 2.891161 -5.750567 -v -0.020490 2.863060 -5.750297 -v 0.084389 2.891161 -5.750567 -v 0.161166 2.967934 -5.751310 -v 0.176545 3.048587 -5.752090 -v 0.177255 3.052310 -5.752126 -v 0.161166 3.177683 -5.753338 -v 0.084389 3.254456 -5.754081 -v -0.020490 3.282557 -5.754352 -v 0.145056 2.772943 -5.380897 -v -0.028200 2.726521 -5.380447 -v -0.340405 2.985191 -5.382949 -v -0.360427 3.126323 -5.384313 -v 0.145056 3.373090 -5.386699 -v 0.271888 3.246264 -5.385472 -v -0.201455 3.373090 -5.386699 -v -0.028200 3.419511 -5.387148 -v 0.271888 2.899769 -5.382123 -v -0.334480 2.976140 -5.382861 -v -0.328287 3.246264 -5.385472 -v 0.297293 3.033004 -5.383410 -v -0.201455 2.772943 -5.380897 -v -0.336184 3.263600 -0.543971 -v 0.298466 3.039153 -5.383471 -v 0.298466 3.085960 -0.542254 -v 0.212113 3.189888 8.245781 -v 0.222783 3.188746 8.263451 -v 0.242138 3.216650 11.395622 -v 0.275445 3.224015 12.581021 -v -0.359037 3.131510 -5.384363 -v -0.336184 3.216794 -5.385188 -v -0.522867 3.169785 -0.914562 -v -0.359037 3.178316 -0.543147 -v -0.736741 3.209849 -0.682138 -v -0.522867 3.171633 -0.723319 -v -0.201455 2.788822 -3.738577 -v -0.334480 2.992019 -3.740541 -v -0.334500 3.252076 -3.741569 -v -0.328287 3.262142 -3.743153 -v 0.300966 3.153625 -3.742104 -v 0.300966 3.166108 -2.450925 -v 0.297293 3.061366 -2.449912 -v 0.297293 3.048883 -3.741091 -v 0.271888 3.262142 -3.743153 -v -0.028200 2.742400 -3.738128 -v 0.271888 2.915648 -3.739803 -v -0.201455 3.388968 -3.744379 -v -0.028200 3.435390 -3.744828 -v 0.145056 3.388968 -3.744379 -v -0.340405 3.001070 -3.740629 -v 0.145056 2.788822 -3.738577 -v 0.145056 2.801305 -2.447398 -v -0.028200 2.754883 -2.446949 -v 0.145056 3.401452 -2.453200 -v 0.271888 3.274626 -2.451974 -v -0.201455 3.401452 -2.453200 -v -0.028200 3.447873 -2.453649 -v 0.271888 2.928131 -2.448624 -v -0.334480 3.004502 -2.449363 -v -0.340405 3.013553 -2.449450 -v -0.328287 3.274626 -2.451974 -v -0.201455 2.801305 -2.447398 -v -0.334500 3.264560 -2.450390 -v -0.359037 3.147388 -3.742043 -v -0.347886 3.172076 -3.771701 -v -0.347886 3.156482 -5.384604 -v -0.353737 3.151288 -5.384554 -v -0.342035 3.241765 -0.543760 -v -0.342035 3.223584 -2.424222 -v -0.342035 3.210553 -3.772073 -v -0.342035 3.194958 -5.384976 -v -0.497303 3.265187 -0.915484 -v -0.700186 3.346269 -0.683457 -v -0.497303 3.267036 -0.724241 -v -0.514898 3.201372 -0.723606 -v -0.514898 3.199523 -0.914849 -v -0.725346 3.252373 -0.682550 -v -0.353737 3.198094 -0.543338 -v -0.359037 3.159872 -2.450865 -v -0.712766 3.299321 -0.683003 -v -0.506101 3.234204 -0.723924 -v -0.506101 3.232355 -0.915167 -v -0.347886 3.203671 -0.543392 -v -0.347886 3.185490 -2.423854 -v -0.330283 3.239839 -4.036386 -v -0.330283 3.455639 -4.038473 -v -0.330283 3.442577 -5.389550 -v -0.330283 3.226777 -5.387465 -v 0.190607 2.026066 -5.584056 -v -0.246987 2.026066 -5.584056 -v -0.232000 2.105978 -6.077040 -v 0.175621 2.105978 -6.077040 -v 0.273904 3.226777 -5.387465 -v 0.273904 3.442577 -5.389550 -v 0.273904 3.455639 -4.038473 -v 0.273904 3.239839 -4.036386 -v -0.321697 3.575348 -1.209314 -v -0.143134 3.576650 -0.930052 -v -0.143134 3.637300 -0.930267 -v -0.321697 3.635997 -1.209528 -v -0.330283 1.706711 -4.021564 -v -0.330283 1.693649 -5.372642 -v -0.330283 1.408763 -5.369888 -v -0.330283 1.454738 -4.298106 -v -0.321697 3.563178 -3.730762 -v -0.321697 3.570713 -2.951427 -v -0.321697 3.631362 -2.951642 -v -0.321697 3.623828 -3.730978 -v 0.273904 3.252129 -2.441601 -v 0.273904 3.467488 -2.443747 -v 0.273904 3.470904 -1.159974 -v 0.273904 3.256656 -1.157677 -v 0.273904 3.242578 -3.753104 -v 0.273904 3.458378 -3.755191 -v 0.273904 3.466133 -2.953055 -v 0.273904 3.250333 -2.950969 -v -0.330283 3.144529 -3.752156 -v -0.330283 1.709450 -3.738282 -v -0.330283 1.717205 -2.936146 -v -0.330283 3.152284 -2.950021 -v 0.273904 1.709450 -3.738282 -v 0.273904 1.717205 -2.936146 -v -0.330283 1.734557 -1.141361 -v 0.273904 1.734557 -1.141361 -v 0.090118 2.663733 -0.868376 -v -0.146497 2.663733 -0.868376 -v 0.298165 1.329196 -1.082963 -v -0.354544 1.329196 -1.082963 -v -0.354544 1.269344 -1.084694 -v 0.298165 1.269344 -1.084694 -v -0.330283 3.154280 -2.440626 -v -0.330283 1.722134 -2.426354 -v -0.330283 3.159312 -1.156634 -v -0.321697 3.608476 -5.318881 -v -0.321697 3.621167 -4.006207 -v -0.330283 3.695073 -4.039322 -v -0.330283 3.682011 -5.390399 -v -0.354544 0.976347 -2.441677 -v 0.298165 0.976347 -2.441677 -v -0.354544 0.965281 -2.983357 -v 0.298165 0.965281 -2.983357 -v 0.298165 0.860108 -2.980030 -v -0.354544 0.860108 -2.980030 -v 0.298165 1.068648 -2.443568 -v -0.354544 1.068648 -2.443568 -v 0.151434 -0.563161 -5.307450 -v -0.387438 -0.380119 -6.075793 -v 0.082453 -0.903583 -5.396180 -v 0.193095 -0.803404 -5.819082 -v 0.234464 1.611982 -4.534523 -v 0.234464 1.612759 -4.454083 -v 0.273904 1.444370 -4.539809 -v 0.273904 1.442717 -4.578357 -v 0.273904 1.706711 -4.021564 -v 0.273904 1.454738 -4.298106 -v 0.273904 1.693649 -5.372642 -v 0.273904 1.408763 -5.369888 -v 0.045572 -0.803404 -5.819082 -v 0.008691 -0.903583 -5.396180 -v -0.243738 -0.288598 -6.459964 -v -0.246513 -0.451829 -6.564517 -v -0.249474 -0.603046 -6.664886 -v -0.249474 -0.703225 -6.241984 -v -0.284789 0.951510 -3.091764 -v -0.207814 -0.563161 -5.307450 -v -0.138832 -0.903583 -5.396180 -v -0.065070 -0.903583 -5.396180 -v 0.044585 -0.451829 -6.564517 -v 0.190134 -0.451829 -6.564517 -v 0.193095 -0.603046 -6.664886 -v 0.045572 -0.603046 -6.664886 -v -0.232000 3.262850 -6.088224 -v -0.232000 3.425689 -6.089799 -v 0.175621 3.425689 -6.089799 -v 0.175621 3.262850 -6.088224 -v -0.246987 3.442819 -5.597754 -v 0.190607 3.442819 -5.597754 -v -0.246987 3.268006 -5.596064 -v 0.190607 3.188580 -5.595296 -v 0.175621 3.188864 -6.087509 -v 0.273904 3.128728 -5.386516 -v 0.090118 3.372483 -0.872028 -v 0.090118 3.472245 -0.872542 -v -0.146497 3.472245 -0.872542 -v -0.146497 3.372483 -0.872028 -v -0.146497 3.327156 -0.871794 -v 0.265317 3.608476 -5.318881 -v 0.273904 3.682011 -5.390399 -v 0.032229 1.408763 -5.369888 -v 0.153067 1.408763 -5.369888 -v 0.169948 0.735733 -5.803853 -v 0.037856 0.735733 -5.803853 -v 0.187359 -0.288598 -6.459964 -v -0.179237 1.454738 -4.298106 -v 0.308184 0.328695 -5.216453 -v 0.139997 0.233605 -4.853300 -v -0.330283 1.424088 -5.012627 -v -0.209446 1.408763 -5.369888 -v -0.226328 0.735733 -5.803853 -v -0.364563 0.423784 -5.579605 -v 0.273904 1.439413 -4.655366 -v 0.122857 1.454738 -4.298106 -v -0.230014 0.518873 -5.942758 -v -0.114424 0.980412 -3.109781 -v 0.171927 0.619351 -5.878399 -v 0.038516 0.619351 -5.878399 -v -0.196376 0.233605 -4.853300 -v 0.173634 0.518873 -5.942758 -v -0.228306 0.619351 -5.878399 -v 0.305337 0.408198 -5.059734 -v 0.138574 0.302622 -4.650402 -v -0.361716 0.513774 -5.469066 -v 0.173634 0.518873 -5.942758 -v 0.039085 0.518873 -5.942758 -v -0.228306 0.619351 -5.878399 -v -0.284789 1.135689 -2.992763 -v -0.230014 0.518873 -5.942758 -v -0.194953 0.302622 -4.650402 -v 0.171927 0.619351 -5.878399 -v 0.302040 0.560031 -5.096963 -v 0.187359 -0.288598 -6.459964 -v 0.043660 -0.288598 -6.459964 -v 0.136925 0.472180 -4.743518 -v -0.358420 0.647882 -5.450408 -v -0.243738 -0.288598 -6.459964 -v -0.226328 0.735733 -5.803853 -v -0.115506 1.151276 -3.032256 -v -0.193305 0.472180 -4.743518 -v 0.265317 3.621167 -4.006207 -v 0.273904 3.695073 -4.039322 -v 0.265317 3.632679 -2.456811 -v 0.265317 3.631362 -2.951642 -v 0.273904 3.705567 -2.953904 -v 0.273904 3.706922 -2.444596 -v 0.086755 3.637300 -0.930267 -v 0.265317 3.635997 -1.209528 -v 0.273904 3.710337 -1.160822 -v 0.090118 3.711678 -0.873391 -v 0.265317 3.623828 -3.730978 -v 0.273904 3.697812 -3.756040 -v -0.321697 3.632679 -2.456811 -v -0.330283 3.710337 -1.160822 -v -0.330283 3.706922 -2.444596 -v -0.146497 3.711678 -0.873391 -v -0.330283 3.705567 -2.953904 -v -0.330283 3.697812 -3.756040 -v 0.273904 3.779082 -4.039882 -v 0.273904 3.781820 -3.756600 -v -0.330283 3.794346 -1.161382 -v -0.330283 3.790930 -2.445156 -v 0.273904 3.766019 -5.390960 -v 0.273904 3.794346 -1.161382 -v 0.090118 3.795687 -0.873952 -v -0.330283 3.789575 -2.954464 -v -0.330283 3.781820 -3.756600 -v 0.273904 3.789575 -2.954464 -v 0.273904 3.790930 -2.445156 -v -0.330283 3.766019 -5.390960 -v -0.146497 3.795687 -0.873952 -v -0.330283 3.779082 -4.039882 -v 0.086755 3.576650 -0.930052 -v -0.321697 3.572029 -2.456596 -v 0.265317 3.563178 -3.730762 -v 0.265317 3.560517 -4.005992 -v 0.265317 3.575348 -1.209314 -v 0.265317 3.572029 -2.456596 -v 0.265317 3.570713 -2.951427 -v 0.265317 3.547827 -5.318666 -v -0.321697 3.547827 -5.318666 -v -0.321697 3.560517 -4.005992 -v -0.330283 3.467488 -2.443747 -v -0.330283 3.470904 -1.159974 -v -0.330283 3.458378 -3.755191 -v -0.330283 3.466133 -2.953055 -v 0.273904 3.789575 -2.954464 -v 0.273904 3.790930 -2.445156 -v 0.273904 3.779082 -4.039882 -v 0.273904 3.781820 -3.756600 -v 0.273904 3.766019 -5.390960 -v -0.330283 3.781820 -3.756600 -v -0.330283 3.789575 -2.954464 -v -0.330283 3.766019 -5.390960 -v -0.330283 3.779082 -4.039882 -v -0.330283 3.790930 -2.445156 -v -0.330283 3.794346 -1.161382 -v 0.273904 3.794346 -1.161382 -v -0.330283 0.979098 -2.912797 -v -0.330283 1.074369 -2.413089 -v 0.273904 1.722134 -2.426354 -v 0.273904 1.314513 -1.153514 -v 0.273904 1.074369 -2.413089 -v 0.273904 0.979098 -2.912797 -v -0.330283 1.314513 -1.153514 -v 0.169948 0.735733 -5.803853 -v 0.193095 -0.603046 -6.664886 -v 0.190134 -0.451829 -6.564517 -v -0.284789 1.330151 -2.942667 -v -0.138832 -0.903583 -5.396180 -v -0.210126 -0.762632 -5.266933 -v -0.117756 1.329624 -3.000926 -v -0.249474 -0.703225 -6.241984 -v -0.249474 -0.603046 -6.664886 -v -0.246513 -0.451829 -6.564517 -v 0.273904 1.424088 -5.012627 -v -0.330283 1.439413 -4.655366 -v -0.249474 -0.803404 -5.819082 -v 0.193095 -0.703225 -6.241984 -v 0.045572 -0.703225 -6.241984 -v -0.101951 -0.703225 -6.241984 -v -0.101951 -0.803404 -5.819082 -v -0.101951 -0.603046 -6.664886 -v -0.392062 -0.555430 -6.131989 -v -0.284789 1.523609 -2.996514 -v -0.100039 -0.288598 -6.459964 -v -0.100964 -0.451829 -6.564517 -v 0.193095 -0.803404 -5.819082 -v -0.095464 0.518873 -5.942758 -v 0.082453 -0.903583 -5.396180 -v -0.094895 0.619351 -5.878399 -v 0.153746 -0.762632 -5.266933 -v -0.094236 0.735733 -5.803853 -v 0.335683 -0.659031 -5.699462 -v -0.088608 1.408763 -5.369888 -v 0.273904 3.159313 -1.156634 -v 0.090118 3.327156 -0.871794 -v -0.330283 3.256656 -1.157677 -v -0.330283 3.128728 -5.386516 -v -0.246987 3.188580 -5.595296 -v 0.190607 3.268006 -5.596064 -v -0.232000 3.188864 -6.087509 -v -0.330283 3.252129 -2.441601 -v -0.330283 3.242578 -3.753104 -v -0.330283 3.250333 -2.950969 -v 0.273904 3.144529 -3.752156 -v 0.273904 3.152284 -2.950021 -v 0.273904 3.154280 -2.440626 -v 0.273904 3.141790 -4.035439 -v -0.330283 3.141790 -4.035439 -v 0.233100 1.888631 -4.550890 -v 0.273904 3.136409 -4.592074 -v 0.273904 3.136791 -4.552498 -v 0.234464 1.886212 -4.456727 -v 0.273904 1.706711 -4.021564 -v 0.273904 1.454738 -4.298106 -v 0.273904 3.141790 -4.035439 -v 0.273904 1.841250 -4.022865 -v 0.273904 1.828188 -5.373942 -v 0.273904 3.128728 -5.386516 -v 0.273904 3.135626 -4.673046 -v 0.234464 1.883843 -4.701743 -v 0.273904 1.693649 -5.372642 -v 0.234464 1.610391 -4.699099 -v 0.273904 1.439333 -4.657226 -v 0.273904 1.408763 -5.369888 -v 0.273904 1.742807 -5.373117 -v 0.234464 1.710306 -4.700065 -v 0.234464 1.712675 -4.455049 -v 0.273904 1.755870 -4.022039 -v 0.331254 1.883843 -4.701743 -v 0.331254 1.710306 -4.700065 -v 0.331254 1.711897 -4.535489 -v 0.329314 1.891838 -4.545410 -v 0.331254 1.886212 -4.456727 -v 0.331254 1.712675 -4.455049 -v 0.234464 1.611019 -4.634068 -v 0.331254 1.610391 -4.699099 -v 0.331254 1.611019 -4.634068 -v 0.331254 1.612759 -4.454083 -v 0.294289 1.971530 -4.579909 -v 0.235999 1.975935 -4.584616 -v 0.331254 1.611982 -4.534523 -v 0.331254 1.710935 -4.635034 -v 0.330367 1.891374 -4.629972 -v 0.234464 1.889147 -4.633514 -v 0.273904 3.135935 -4.641050 -v 0.273904 1.440670 -4.626060 -v 0.422689 1.611982 -4.534523 -v 0.331254 1.300388 -4.531510 -v 0.422689 1.300388 -4.531510 -v 0.422689 1.711897 -4.535489 -v 0.422689 1.611019 -4.634068 -v 0.422689 1.710935 -4.635034 -v 0.331254 1.299426 -4.631055 -v 0.234464 1.299426 -4.631055 -v 0.234464 1.300388 -4.531510 -v 0.422689 1.299426 -4.631055 -v 0.292923 1.970817 -4.597499 -v 0.234464 1.973841 -4.593580 -v 0.304490 2.087529 -6.086900 -v 0.304490 3.424876 -6.092767 -v -0.385685 3.424876 -6.092767 -v -0.385685 2.087529 -6.086900 -v -0.385685 1.875774 -7.043372 -v 0.304490 1.875774 -7.043372 -v 0.304490 3.299155 -13.055437 -v -0.385685 3.299155 -13.055437 -v -0.385685 0.051586 -12.420024 -v -0.385685 0.019905 -12.750216 -v 0.304490 0.019905 -12.750216 -v 0.304490 0.051586 -12.420024 -v 0.304490 0.470741 -11.143966 -v 0.304490 0.911194 -9.875237 -v -0.385685 0.911194 -9.875237 -v -0.385685 0.470741 -11.143966 -v -0.385685 3.361983 -9.577537 -v 0.304490 3.361983 -9.577537 -v -0.385685 3.424876 -6.092767 -v 0.304490 3.424876 -6.092767 -v 0.304490 1.308804 -8.801523 -v 0.304490 1.642280 -7.761399 -v -0.385685 1.642280 -7.761399 -v -0.385685 1.308804 -8.801523 -v 0.577935 1.794459 -12.737568 -v 0.577935 0.846547 -12.590424 -v -0.585645 1.646944 -8.028779 -v -0.585645 1.349062 -8.957884 -v -0.585645 2.044671 -6.533008 -v -0.585645 3.239276 -6.538247 -v -0.585645 3.183095 -9.651071 -v -0.585645 3.126972 -12.757756 -v -0.585645 2.512112 -12.820806 -v -0.585645 1.796385 -12.781429 -v -0.585645 0.831648 -12.631672 -v -0.585645 0.197734 -12.485114 -v -0.585645 0.226034 -12.190164 -v -0.585645 0.600450 -11.050306 -v -0.585645 0.993891 -9.916996 -v -0.585645 1.855517 -7.387390 -v 0.577935 1.852561 -7.437602 -v 0.577935 1.647625 -8.067804 -v 0.577935 1.354939 -8.980706 -v 0.577935 1.005961 -9.923091 -v 0.577935 0.619383 -11.036636 -v 0.577935 0.251496 -12.156615 -v 0.577935 0.223689 -12.446421 -v 0.577935 2.497705 -12.776258 -v 0.577935 3.101842 -12.714309 -v 0.577935 3.156986 -9.661803 -v 0.577935 3.212186 -6.603268 -v 0.577935 2.038415 -6.598119 -v -0.032053 1.094781 -3.724003 -v -0.038611 1.122167 -3.698678 -v -0.284789 1.515775 -4.233112 -v -0.284789 1.321313 -4.283208 -v 0.014587 1.095661 -3.723721 -v -0.284789 1.700950 -4.031070 -v -0.116041 1.658715 -3.772054 -v 0.008028 1.123047 -3.698396 -v -0.284789 1.707290 -3.635175 -v -0.284789 1.705085 -3.772867 -v -0.032053 1.094781 -3.724003 -v -0.284789 1.712767 -3.235150 -v -0.038611 1.122167 -3.698678 -v -0.284789 1.523609 -2.996514 -v -0.040570 1.152858 -3.878815 -v -0.284789 1.330151 -2.942667 -v -0.042336 1.278494 -3.947056 -v -0.284789 1.135689 -2.992763 -v -0.042443 1.187165 -3.770670 -v -0.284789 0.951510 -3.091764 -v -0.044210 1.312802 -3.838912 -v -0.284789 0.931451 -3.627675 -v -0.043276 1.492857 -3.839123 -v -0.284789 0.934137 -4.036023 -v -0.043276 1.491040 -3.952579 -v -0.284789 1.127856 -4.229362 -v 0.234423 1.314280 -4.470789 -v -0.285355 1.314280 -4.470789 -v -0.285355 1.634126 -4.471505 -v 0.234423 1.634126 -4.471505 -v -0.285355 1.752750 -4.467820 -v 0.234423 1.752750 -4.467820 -v -0.285355 1.763648 -3.638703 -v 0.234423 1.763648 -3.638703 -v -0.285355 1.772588 -2.905027 -v 0.234423 1.772588 -2.905027 -v -0.285355 1.667477 -2.901424 -v 0.234423 1.667477 -2.901424 -v -0.285355 1.333338 -2.898680 -v 0.234423 1.333338 -2.898680 -v -0.285355 0.896085 -2.902554 -v 0.234423 0.896085 -2.902554 -v -0.285355 0.896631 -3.015312 -v 0.234423 0.896631 -3.015312 -v -0.285355 0.873620 -3.630098 -v 0.234423 0.873620 -3.630098 -v -0.285355 0.876701 -4.098548 -v 0.234423 0.876701 -4.098548 -v -0.285355 0.847201 -4.575191 -v 0.234423 0.847200 -4.575191 -v 0.233857 1.712767 -3.235150 -v 0.233857 1.707290 -3.635175 -v 0.233857 1.330151 -2.942667 -v 0.233857 1.523608 -2.996514 -v 0.233857 1.515775 -4.233112 -v 0.233857 1.321313 -4.283208 -v 0.233857 1.705085 -3.772867 -v 0.233857 1.702504 -3.934052 -v 0.233857 1.700950 -4.031070 -v 0.233857 0.934137 -4.036023 -v 0.233857 0.931451 -3.627675 -v 0.233857 1.127856 -4.229362 -v 0.233857 1.135689 -2.992763 -v 0.233857 0.951510 -3.091764 -v -0.284789 1.702504 -3.934052 -v -0.116041 1.656134 -3.933240 -v 0.065110 1.658714 -3.772054 -v 0.065110 1.656132 -3.933240 -v -0.058661 1.651579 -3.933167 -v -0.058661 1.654160 -3.771982 -v -0.058661 1.654160 -3.771982 -v -0.058661 1.651579 -3.933167 -v 0.014587 1.095661 -3.723721 -v 0.008028 1.123047 -3.698396 -v 0.006151 1.153709 -3.878275 -v 0.004278 1.188017 -3.770131 -v 0.004385 1.279346 -3.946517 -v 0.002511 1.313654 -3.838373 -v 0.003456 1.491040 -3.952579 -v 0.003456 1.492857 -3.839123 -v 0.007729 1.654159 -3.771982 -v 0.007729 1.651578 -3.933167 -v 0.007729 1.651578 -3.933167 -v 0.007729 1.654159 -3.771982 -v 0.003456 1.492857 -3.839123 -v 0.003456 1.491040 -3.952579 -v 0.002511 1.313654 -3.838373 -v 0.004385 1.279346 -3.946517 -v -0.043276 1.491040 -3.952579 -v -0.043276 1.492857 -3.839123 -v -0.044210 1.312802 -3.838912 -v -0.042443 1.187165 -3.770670 -v 0.004278 1.188017 -3.770131 -v -0.042336 1.278494 -3.947056 -v 0.006151 1.153709 -3.878275 -v 0.008028 1.123047 -3.698396 -v 0.014587 1.095661 -3.723721 -v -0.040570 1.152858 -3.878815 -v -0.038611 1.122167 -3.698678 -v -0.032053 1.094781 -3.724003 -v -0.103188 3.357830 8.539176 -v -0.103188 3.672956 8.536129 -v -0.103188 3.669909 8.221003 -v -0.103188 3.354783 8.224050 -v 0.107425 3.669909 8.221003 -v 0.107425 3.354783 8.224050 -v 0.107425 3.672956 8.536129 -v 0.107425 3.357830 8.539176 -v -0.032984 3.357830 8.539176 -v -0.032984 3.672956 8.536129 -v 0.037220 3.357830 8.539176 -v 0.121946 3.708827 8.298789 -v 0.121946 3.708827 8.298789 -v 0.083971 4.069171 8.313674 -v 0.108349 4.069171 8.313674 -v -0.103665 3.711009 8.524389 -v -0.103665 3.711009 8.524389 -v -0.090068 4.071090 8.512082 -v -0.090068 4.071090 8.512082 -v -0.103665 3.708827 8.298789 -v -0.090068 4.069171 8.313674 -v 0.037220 3.672956 8.536129 -v 0.121946 3.711009 8.524389 -v 0.046743 3.711009 8.524389 -v -0.090068 4.405278 8.288956 -v -0.023929 4.405278 8.288956 -v 0.042210 4.405278 8.288956 -v 0.083971 4.405278 8.288956 -v 0.042210 4.071090 8.512082 -v 0.108349 4.071090 8.512082 -v 0.108349 4.407197 8.487363 -v 0.042210 4.407197 8.487363 -v 0.108349 4.071090 8.512082 -v 0.108349 4.405278 8.288956 -v 0.108349 4.407197 8.487363 -v -0.103665 3.708827 8.298789 -v -0.059739 4.069171 8.313674 -v 0.121946 3.711009 8.524389 -v 0.108349 4.812802 8.249234 -v 0.108349 4.814721 8.447641 -v 0.108349 4.610959 8.467504 -v 0.108349 4.610959 8.467504 -v 0.108349 4.814721 8.447641 -v -0.059739 4.405278 8.288956 -v -0.090068 4.812802 8.249234 -v -0.090068 4.812802 8.249234 -v -0.090068 4.407197 8.487363 -v -0.090068 4.407197 8.487363 -v -0.023929 4.812802 8.249234 -v -0.090068 4.814721 8.447641 -v -0.023929 4.814721 8.447641 -v 0.108349 4.812802 8.249234 -v -0.090068 4.814721 8.447641 -v 0.042210 4.664865 8.473516 -v 0.042210 4.814721 8.447641 -v -0.090068 4.610959 8.467504 -v -0.090068 4.610959 8.467504 -v -0.059739 4.418322 8.157631 -v -0.059739 4.082213 8.182349 -v 0.083971 4.082213 8.182349 -v 0.083971 4.418322 8.157631 -v -0.090068 4.793198 8.155925 -v -0.090068 4.782697 8.105946 -v -0.090068 4.463150 7.849932 -v -0.090068 4.442965 8.003063 -v 0.108349 4.463150 7.849932 -v 0.108349 4.712172 8.049443 -v 0.108349 4.782697 8.105946 -v 0.108349 4.442004 8.010345 -v 0.108349 4.463150 7.849932 -v 0.108349 4.782697 8.105946 -v 0.108349 4.793696 8.158301 -v -0.090068 4.782697 8.105946 -v -0.090068 4.712172 8.049443 -v -0.090068 4.463150 7.849932 -v 0.108349 4.405278 8.288956 -v 0.108349 4.463150 7.849932 -v -0.090068 4.463150 7.849932 -v -0.090068 4.442965 8.003063 -v 0.042210 4.658266 8.043429 -v 0.042210 4.782697 8.105946 -v -0.023929 4.782697 8.105946 -v -0.023929 4.812802 8.249234 -v -0.090068 4.463150 7.849932 -v -0.090068 4.442965 8.003063 -v 0.108349 4.442004 8.010345 -v 0.108349 4.463150 7.849932 -v -0.090068 4.463150 7.849932 -v -0.090068 4.405278 8.288956 -v -0.065027 3.757016 7.321871 -v -0.060844 3.766371 7.510190 -v 0.088251 3.766989 7.521697 -v 0.092221 3.756975 7.324428 -v 0.083737 3.522897 8.173863 -v 0.083737 3.672082 8.172421 -v -0.065455 3.672082 8.172421 -v -0.065455 3.522897 8.173863 -v 0.083737 3.517609 7.626964 -v 0.088711 3.661251 7.628131 -v -0.066596 3.661242 7.625576 -v -0.065455 3.517609 7.626964 -v 0.083737 3.514731 7.329237 -v 0.088711 3.658372 7.330404 -v -0.066596 3.658364 7.327848 -v -0.065455 3.514731 7.329237 -v 0.083737 3.385996 7.628237 -v 0.083737 3.383117 7.330510 -v -0.065455 3.371527 7.330622 -v -0.065455 3.374406 7.628348 -v 0.042210 4.812802 8.249234 -v -0.023929 4.658266 8.043429 -v 0.042210 4.812802 8.249234 -v -0.023929 4.407197 8.487363 -v -0.023929 4.664865 8.473516 -v -0.028461 3.711009 8.524389 -v -0.023929 4.071090 8.512082 -v -0.023929 4.463150 7.849932 -v 0.042210 4.463150 7.849932 -v -0.090068 4.069731 8.308047 -v -0.090068 4.405837 8.283328 -v 0.108349 4.069801 8.307324 -v 0.108349 4.405909 8.282606 -v -0.128788 3.939337 -4.286372 -v -0.128788 3.725225 -4.284302 -v -0.339690 3.725225 -4.284302 -v -0.339690 3.939337 -4.286372 -v 0.085334 3.939337 -4.286372 -v 0.085334 3.725225 -4.284302 -v 0.085334 3.715957 -5.242964 -v 0.085334 3.930068 -5.245033 -v 0.085334 3.941407 -4.072260 -v 0.274737 3.941407 -4.072260 -v 0.274737 3.939337 -4.286372 -v -0.128788 3.941407 -4.072260 -v -0.128788 3.727295 -4.070190 -v -0.128788 3.752047 -1.509983 -v -0.128788 3.966159 -1.512053 -v 0.013960 3.725225 -4.284302 -v 0.085334 3.727295 -4.070190 -v 0.013960 3.727295 -4.070190 -v -0.087317 3.939388 -4.275171 -v -0.057414 3.941407 -4.072260 -v -0.128788 3.968520 -1.267860 -v -0.293372 3.966159 -1.512053 -v -0.293372 3.968520 -1.267860 -v 0.085334 3.752047 -1.509983 -v 0.013960 3.752047 -1.509983 -v -0.057414 3.966159 -1.512053 -v 0.085334 3.966159 -1.512053 -v -0.057414 3.754408 -1.265790 -v -0.057414 3.968520 -1.267860 -v -0.128788 3.754408 -1.265790 -v 0.013960 3.968520 -1.267860 -v 0.085334 3.968520 -1.267860 -v 0.085334 4.334809 -1.271402 -v 0.013960 4.334809 -1.271402 -v 0.085334 3.754408 -1.265790 -v 0.334377 3.754408 -1.265790 -v 0.334377 3.968520 -1.267860 -v 0.013960 3.754408 -1.265790 -v -0.128788 4.490870 -1.497192 -v -0.128788 4.389227 -1.297727 -v -0.128788 4.537484 -1.491777 -v -0.128788 4.332448 -1.515594 -v -0.057414 4.332448 -1.515594 -v 0.085334 4.332448 -1.515594 -v -0.128788 4.334809 -1.271402 -v -0.057414 4.537484 -1.491777 -v -0.057414 4.376855 -1.291742 -v -0.098593 4.547485 -1.579802 -v -0.098593 4.514018 -1.583690 -v 0.085334 4.376855 -1.291742 -v 0.085334 4.490870 -1.497192 -v 0.085334 4.537484 -1.491777 -v 0.003895 4.547485 -1.579802 -v 0.055139 4.547485 -1.579802 -v 0.175042 4.762084 -4.264839 -v 0.043863 4.762084 -4.264839 -v -0.098593 4.400275 -1.596903 -v -0.047349 4.400275 -1.596903 -v 0.055139 4.400275 -1.596903 -v 0.055139 4.514018 -1.583690 -v 0.013960 4.537484 -1.491777 -v 0.175042 4.284624 -4.842155 -v 0.175042 4.293411 -4.398141 -v 0.175042 4.036338 -4.393054 -v 0.175042 4.027551 -4.837068 -v -0.218496 4.762084 -4.264839 -v -0.218496 4.676412 -4.274791 -v -0.218496 4.385243 -4.308614 -v -0.087317 4.385243 -4.308614 -v 0.175042 4.385243 -4.308614 -v 0.175042 4.676412 -4.274791 -v -0.087317 3.929435 -4.839783 -v -0.218496 3.929435 -4.839783 -v -0.218496 3.918185 -5.516152 -v -0.087317 3.918185 -5.516152 -v -0.218496 4.293411 -4.398141 -v -0.218496 4.284624 -4.842155 -v -0.218496 4.027551 -4.837068 -v -0.218496 4.036338 -4.393054 -v -0.218496 3.939388 -4.275171 -v -0.218496 4.365192 -4.846815 -v -0.087317 4.293411 -4.398141 -v -0.218496 4.016302 -5.513437 -v 0.175042 4.016302 -5.513437 -v -0.087317 4.036338 -4.393054 -v -0.218496 4.734344 -5.370099 -v -0.218496 4.842429 -5.370595 -v -0.218496 4.663689 -5.549295 -v -0.218496 4.599157 -5.547852 -v 0.043863 4.842429 -5.370595 -v 0.175042 4.842429 -5.370595 -v 0.175042 4.663689 -5.549295 -v 0.043863 4.663689 -5.549295 -v 0.175042 4.734344 -5.370099 -v 0.175042 4.367011 -5.368414 -v 0.175042 4.379847 -5.542946 -v 0.175042 4.599157 -5.547852 -v 0.043863 4.599157 -5.547852 -v 0.175042 4.736579 -4.882914 -v 0.175042 4.365105 -4.867969 -v 0.043863 4.844664 -4.883410 -v 0.175042 4.844664 -4.883410 -v -0.218496 4.736579 -4.882914 -v -0.218496 4.844664 -4.883410 -v -0.087317 4.367011 -5.368414 -v -0.218496 4.367011 -5.368414 -v -0.218496 4.379847 -5.542946 -v -0.087317 4.379847 -5.542946 -v 0.043863 4.801307 -4.848616 -v 0.175042 4.801307 -4.848616 -v 0.175042 4.702158 -4.848207 -v -0.087317 4.365192 -4.846815 -v -0.218496 4.369246 -4.881228 -v -0.087317 4.369246 -4.881228 -v -0.218496 4.702158 -4.848207 -v -0.218496 4.801307 -4.848616 -v -0.057414 3.725225 -4.284302 -v -0.128788 3.715957 -5.242964 -v -0.057414 3.715957 -5.242964 -v 0.043863 3.939388 -4.275171 -v 0.013960 3.930068 -5.245033 -v -0.128788 3.930068 -5.245033 -v 0.013960 3.709850 -5.865262 -v 0.013960 3.912128 -5.795037 -v 0.085334 3.912128 -5.795037 -v 0.085334 3.709850 -5.865262 -v 0.175042 3.929435 -4.839783 -v 0.175042 3.918185 -5.516152 -v -0.128788 3.912128 -5.795037 -v -0.128788 3.709850 -5.865262 -v -0.057414 3.709850 -5.865262 -v 0.043863 4.365105 -4.867969 -v 0.175042 4.353942 -5.523185 -v 0.043863 4.353942 -5.523185 -v -0.218496 4.353942 -5.523185 -v -0.218496 4.273375 -5.518525 -v -0.218496 3.912346 -5.794299 -v -0.057414 3.912128 -5.795037 -v 0.175042 4.273375 -5.518525 -v 0.043863 4.273375 -5.518525 -v 0.175042 4.294797 -5.661301 -v 0.043863 4.294797 -5.661301 -v 0.175042 3.939388 -4.275171 -v 0.043863 4.016843 -5.754391 -v 0.175042 4.016843 -5.754391 -v 0.175042 3.912346 -5.794299 -v -0.218496 4.016843 -5.754391 -v -0.218496 4.294797 -5.661301 -v -0.087317 4.294797 -5.661301 -v -0.087317 4.016843 -5.754391 -v 0.043863 4.036338 -4.393054 -v -0.087317 4.273375 -5.518525 -v -0.087317 4.353942 -5.523185 -v 0.043863 3.918185 -5.516152 -v 0.013960 3.715957 -5.242964 -v -0.057414 3.930068 -5.245033 -v 0.043863 3.929435 -4.839783 -v -0.087317 4.762084 -4.264839 -v -0.087317 4.801220 -4.869769 -v 0.043863 4.367011 -5.368414 -v -0.087317 4.844664 -4.883410 -v 0.043863 4.379847 -5.542946 -v -0.087317 4.842429 -5.370595 -v -0.087317 4.663689 -5.549295 -v -0.087317 4.599157 -5.547852 -v 0.043863 4.293411 -4.398141 -v 0.043863 4.385243 -4.308614 -v 0.003895 4.400275 -1.596903 -v -0.047349 4.547485 -1.579802 -v 0.013960 4.332448 -1.515594 -v 0.042011 4.595339 -5.296710 -v -0.085465 4.595339 -5.296710 -v 0.013960 4.376855 -1.291742 -v 0.013960 3.966159 -1.512053 -v -0.057414 3.752047 -1.509983 -v -0.057414 4.334809 -1.271402 -v 0.013960 3.941407 -4.072260 -v -0.057414 3.727295 -4.070190 -v -0.086140 4.596731 -5.388300 -v 0.274737 3.725225 -4.284302 -v 0.274737 3.727295 -4.070190 -v -0.339690 3.727295 -4.070190 -v -0.339690 3.941407 -4.072260 -v -0.293372 3.752047 -1.509983 -v -0.293372 3.754408 -1.265790 -v 0.334377 3.752047 -1.509983 -v 0.334377 3.966159 -1.512053 -v -0.020524 4.043039 -5.178573 -v -0.020524 4.040238 -5.468335 -v 0.184378 4.041059 -5.383466 -v -0.020524 4.263888 -5.180708 -v 0.184378 4.261907 -5.385601 -v -0.020524 4.261086 -5.470470 -v 0.269252 4.043039 -5.178573 -v 0.269252 4.263888 -5.180708 -v 0.184378 4.045021 -4.973680 -v 0.184378 4.265869 -4.975815 -v -0.020524 4.045841 -4.888810 -v -0.020524 4.266689 -4.890945 -v -0.225427 4.045021 -4.973680 -v -0.225427 4.265869 -4.975815 -v -0.310300 4.043039 -5.178573 -v -0.310300 4.263888 -5.180708 -v -0.225427 4.041059 -5.383466 -v -0.225427 4.261907 -5.385601 -v 0.042687 4.596731 -5.388300 -v -0.074426 4.640141 -5.380030 -v 0.030972 4.640141 -5.380030 -v -0.073873 4.639002 -5.305097 -v 0.029752 4.654943 -5.320924 -v -0.021181 4.633978 -5.323280 -v 0.024096 4.664785 -5.357850 -v -0.021181 4.638448 -5.363047 -v 0.042850 4.705805 -5.317441 -v 0.042850 4.709779 -5.352792 -v 0.024096 4.754773 -5.347733 -v 0.024096 4.750798 -5.312383 -v -0.021181 4.773410 -5.345638 -v -0.021181 4.777135 -5.307187 -v -0.072114 4.760641 -5.349310 -v -0.066458 4.750798 -5.312383 -v -0.085213 4.709779 -5.352792 -v -0.093211 4.705556 -5.315233 -v -0.066458 4.664785 -5.357850 -v -0.214659 4.417867 -5.192763 -v -0.214119 4.436285 -5.115522 -v -0.274848 4.436007 -5.144247 -v -0.213685 4.486393 -5.053922 -v -0.213445 4.558267 -5.020162 -v -0.349903 4.557643 -5.084703 -v -0.323116 4.485892 -5.105680 -v -0.213445 4.637671 -5.020929 -v -0.213685 4.708880 -5.056073 -v -0.323116 4.708379 -5.107832 -v -0.349903 4.637048 -5.085471 -v -0.214119 4.757788 -5.118630 -v -0.214659 4.774708 -5.196214 -v -0.274848 4.757510 -5.147355 -v -0.384519 4.635627 -5.232394 -v -0.384519 4.556222 -5.231627 -v -0.290254 4.756878 -5.212741 -v -0.350876 4.707240 -5.225655 -v -0.290254 4.435375 -5.209634 -v -0.350876 4.484754 -5.223503 -v -0.248736 4.434864 -5.262445 -v -0.291228 4.555075 -5.350295 -v -0.276063 4.483833 -5.318668 -v -0.276063 4.706320 -5.320819 -v -0.291228 4.634480 -5.351063 -v -0.248736 4.756367 -5.265553 -v -0.181557 4.434860 -5.262915 -v -0.140279 4.555065 -5.351349 -v -0.155011 4.483825 -5.319513 -v -0.155011 4.706312 -5.321664 -v -0.140279 4.634470 -5.352117 -v -0.181557 4.756362 -5.266023 -v -0.576565 3.014771 -5.569995 -v -0.604169 3.016425 -5.679888 -v -0.460427 3.032423 -5.715754 -v -0.432823 3.030769 -5.605861 -v -0.382525 3.158213 -5.733428 -v -0.354921 3.156559 -5.623536 -v -0.429126 3.299072 -5.719602 -v -0.401522 3.297418 -5.609710 -v -0.565138 3.348930 -5.684687 -v -0.537534 3.347276 -5.574795 -v -0.688141 3.270244 -5.654974 -v -0.660537 3.268590 -5.545082 -v -0.705511 3.122265 -5.652839 -v -0.677907 3.120611 -5.542946 -v -0.055919 2.973660 -3.634294 -v 0.087823 2.989658 -3.670160 -v 0.165724 3.115448 -3.687835 -v 0.119123 3.256307 -3.674009 -v -0.016889 3.306165 -3.639094 -v -0.139891 3.227479 -3.609381 -v -0.157262 3.079500 -3.607245 -v -0.601651 3.136804 -5.555968 -v -0.538175 3.070511 -5.572911 -v -0.590771 3.229491 -5.557307 -v -0.513728 3.278776 -5.575917 -v -0.428538 3.247547 -5.597787 -v -0.399349 3.159320 -5.606446 -v -0.448143 3.080532 -5.595376 -v -0.482560 2.999224 -5.332764 -v -0.338818 3.015222 -5.368630 -v -0.260917 3.141012 -5.386305 -v -0.307518 3.281871 -5.372479 -v -0.443529 3.331730 -5.337564 -v -0.566532 3.253043 -5.307851 -v -0.583902 3.105064 -5.305715 -v -0.479087 3.064332 -5.340877 -v -0.389054 3.074353 -5.363341 -v -0.340261 3.153141 -5.374412 -v -0.369449 3.241368 -5.365751 -v -0.454640 3.272597 -5.343883 -v -0.531682 3.223312 -5.325272 -v -0.542562 3.130625 -5.323935 -v -0.363587 3.145624 -3.764716 -v -0.355013 3.102182 -3.763593 -v -0.355013 3.101992 -3.783260 -v -0.363587 3.145434 -3.784383 -v -0.363587 3.150487 -3.261750 -v -0.355013 3.107044 -3.260627 -v -0.355013 3.103132 -3.665258 -v -0.363587 3.146575 -3.666381 -v -0.363587 3.158700 -2.412168 -v -0.355013 3.115258 -2.411045 -v -0.355013 3.114258 -2.514499 -v -0.363587 3.157700 -2.515622 -v -0.353813 3.282961 -2.413369 -v -0.357413 3.255744 -2.413106 -v -0.357413 3.254744 -2.516561 -v -0.353813 3.281961 -2.516824 -v -0.353813 3.274748 -3.262952 -v -0.357413 3.247530 -3.262689 -v -0.357413 3.243618 -3.667320 -v -0.353813 3.270836 -3.667583 -v -0.353813 3.269885 -3.765918 -v -0.357413 3.242667 -3.765655 -v -0.357413 3.242477 -3.785322 -v -0.353813 3.269695 -3.785585 -v -0.353813 3.278354 -2.889888 -v -0.357413 3.251137 -2.889625 -v -0.355013 3.110651 -2.887563 -v -0.363587 3.154094 -2.888686 -v -0.357413 3.255977 -2.389014 -v -0.363587 3.158933 -2.388076 -v -0.353813 3.283194 -2.389277 -v -0.355013 3.115491 -2.386953 -v -0.351350 3.289458 -3.667763 -v -0.351350 3.288507 -3.766098 -v -0.351350 3.300584 -2.517004 -v -0.351350 3.296977 -2.890068 -v -0.351350 3.293370 -3.263132 -v -0.351350 3.301584 -2.413549 -v -0.373501 3.146935 -3.764729 -v -0.373501 3.146745 -3.784396 -v -0.362845 3.095773 -3.783200 -v -0.362845 3.095964 -3.763533 -v -0.373501 3.151798 -3.261763 -v -0.373501 3.147886 -3.666394 -v -0.362845 3.096914 -3.665198 -v -0.362845 3.100826 -3.260567 -v -0.373501 3.160012 -2.412180 -v -0.373501 3.159012 -2.515635 -v -0.362845 3.108040 -2.514439 -v -0.362845 3.109040 -2.410985 -v -0.363727 3.284273 -2.413382 -v -0.363727 3.283272 -2.516836 -v -0.367327 3.256055 -2.516573 -v -0.367327 3.257055 -2.413119 -v -0.363727 3.276059 -3.262964 -v -0.363727 3.272147 -3.667595 -v -0.367327 3.244929 -3.667332 -v -0.367327 3.248841 -3.262701 -v -0.363727 3.271196 -3.765930 -v -0.363727 3.271006 -3.785597 -v -0.367327 3.243788 -3.785334 -v -0.367327 3.243979 -3.765667 -v -0.363727 3.279666 -2.889900 -v -0.367327 3.252448 -2.889637 -v -0.373501 3.155405 -2.888699 -v -0.362845 3.104433 -2.887503 -v -0.367327 3.257288 -2.389027 -v -0.373501 3.160245 -2.388088 -v -0.363727 3.284506 -2.389290 -v -0.362845 3.109273 -2.386893 -v -0.361263 3.290770 -3.667776 -v -0.361263 3.289819 -3.766110 -v -0.361263 3.301895 -2.517016 -v -0.361263 3.298288 -2.890080 -v -0.361263 3.294681 -3.263144 -v -0.361263 3.302895 -2.413562 -v 0.026115 3.520083 12.578159 -v 0.158830 3.484524 12.578503 -v -0.203755 3.387375 12.579442 -v -0.106601 3.484524 12.578503 -v 0.026115 2.989248 12.583291 -v -0.106601 3.024806 12.582948 -v 0.255984 3.387375 12.579442 -v 0.278259 3.304250 12.580246 -v 0.158830 3.024806 12.582948 -v -0.213038 3.187391 12.581376 -v -0.228374 3.295500 12.580331 -v 0.255984 3.121957 12.582008 -v 0.275445 3.224015 12.581021 -v -0.089518 3.454937 12.578789 -v 0.026115 3.485919 12.578489 -v -0.174167 3.370292 12.579607 -v -0.181397 3.199310 12.581261 -v -0.194754 3.293464 12.580350 -v 0.026115 3.023412 12.582961 -v -0.085890 3.053421 12.582671 -v 0.141747 3.054394 12.582662 -v 0.225469 3.138112 12.581852 -v 0.242553 3.227706 12.580986 -v 0.141747 3.454937 12.578789 -v 0.226396 3.370292 12.579607 -v 0.245105 3.300474 12.580282 -v 0.132682 3.422947 11.477539 -v 0.030794 3.450246 11.477275 -v 0.207268 3.144599 11.480230 -v 0.222208 3.222950 11.479473 -v 0.224368 3.284547 11.478877 -v 0.207268 3.348363 11.478260 -v -0.071093 3.422947 11.477539 -v -0.145680 3.348363 11.478260 -v -0.164580 3.277830 11.478942 -v -0.152806 3.194833 11.479744 -v -0.071093 3.070015 11.480951 -v 0.030794 3.042716 11.481215 -v 0.132682 3.070015 11.480951 -v -0.089518 3.454937 12.578789 -v 0.026115 3.485919 12.578489 -v -0.174167 3.370292 12.579607 -v -0.181397 3.199310 12.581261 -v -0.194754 3.293464 12.580350 -v 0.026115 3.023411 12.582961 -v -0.085890 3.053421 12.582671 -v 0.141747 3.054393 12.582662 -v 0.225469 3.138112 12.581852 -v 0.242553 3.227706 12.580986 -v 0.141747 3.454937 12.578789 -v 0.226396 3.370292 12.579607 -v 0.245105 3.300475 12.580282 -v 0.132682 3.422947 11.477539 -v 0.030794 3.450246 11.477275 -v 0.207268 3.144599 11.480230 -v 0.222208 3.222950 11.479473 -v 0.224368 3.284547 11.478877 -v 0.207268 3.348363 11.478260 -v -0.071093 3.422947 11.477539 -v -0.145680 3.348363 11.478260 -v -0.164580 3.277830 11.478942 -v -0.152806 3.194833 11.479744 -v -0.071093 3.070015 11.480951 -v 0.030794 3.042716 11.481215 -v 0.132682 3.070015 11.480951 -v 0.161965 3.479305 11.476994 -v 0.026115 3.515703 11.476642 -v 0.261414 3.108174 11.480582 -v 0.281334 3.212642 11.479572 -v 0.284214 3.294771 11.478778 -v 0.261414 3.379859 11.477955 -v -0.109735 3.479305 11.476994 -v -0.209184 3.379859 11.477955 -v -0.234384 3.285815 11.478865 -v -0.218685 3.175153 11.479935 -v -0.109735 3.008729 11.481544 -v 0.026115 2.972330 11.481895 -v 0.161965 3.008729 11.481544 -v 0.225277 3.128225 11.396477 -v 0.141101 3.044054 11.397291 -v -0.088871 3.442358 11.393440 -v 0.026115 3.473166 11.393142 -v 0.141101 3.442358 11.393440 -v 0.225277 3.358186 11.394254 -v -0.181089 3.184917 11.395928 -v -0.194377 3.278584 11.395023 -v 0.026115 3.013243 11.397589 -v 0.244576 3.286165 11.394950 -v -0.088871 3.044054 11.397291 -v -0.173046 3.358186 11.394254 -v 0.242138 3.216650 11.395622 -v 0.226939 3.190377 8.484865 -v 0.229205 3.255001 8.484241 -v 0.221033 3.253622 8.507836 -v 0.218858 3.191598 8.508436 -v 0.128710 3.037602 8.509925 -v 0.203814 3.112703 8.509199 -v 0.026117 3.420470 8.506223 -v -0.076477 3.392981 8.506489 -v 0.203814 3.317881 8.507215 -v 0.128710 3.392981 8.506489 -v -0.170612 3.246857 8.507902 -v -0.158757 3.163285 8.508710 -v 0.026117 3.010113 8.510191 -v -0.076477 3.037602 8.509925 -v -0.151581 3.317881 8.507215 -v 0.133012 3.400203 8.482837 -v 0.026117 3.428843 8.482559 -v -0.080779 3.400203 8.482837 -v -0.159031 3.321954 8.483593 -v -0.080779 3.029925 8.486416 -v 0.026117 3.001283 8.486693 -v 0.211264 3.321954 8.483593 -v 0.133012 3.029925 8.486416 -v -0.178861 3.247952 8.484308 -v -0.166508 3.160877 8.485150 -v 0.211264 3.108174 8.485660 -v 0.130800 3.031615 8.264970 -v 0.207433 3.108244 8.264229 -v 0.026117 3.422280 8.261192 -v -0.078566 3.394231 8.261463 -v 0.207433 3.317600 8.262204 -v 0.130800 3.394231 8.261463 -v -0.174619 3.245131 8.262905 -v -0.162522 3.159858 8.263730 -v 0.026117 3.003567 8.265241 -v 0.225003 3.252033 8.262838 -v -0.078566 3.031615 8.264970 -v -0.155200 3.317600 8.262204 -v 0.125120 3.384223 8.243902 -v 0.026117 3.410749 8.243646 -v -0.072887 3.384223 8.243902 -v -0.145362 3.311750 8.244603 -v -0.072887 3.041281 8.247218 -v 0.026117 3.014755 8.247475 -v 0.214212 3.249741 8.245203 -v 0.197596 3.311750 8.244603 -v 0.125120 3.041281 8.247218 -v -0.163728 3.243213 8.245266 -v -0.152287 3.162566 8.246045 -v 0.197596 3.113754 8.246517 -v 0.212113 3.189888 8.245781 -v 0.222783 3.188746 8.263451 -v 0.360992 2.553488 7.419190 -v 0.026117 2.463763 7.420058 -v -0.581955 2.963729 7.415224 -v -0.620958 3.236514 7.412587 -v 0.360992 3.713472 7.407975 -v 0.606137 3.468339 7.410346 -v -0.308757 3.713473 7.407975 -v 0.026117 3.803198 7.407108 -v 0.606137 2.798622 7.416821 -v -0.308757 2.553488 7.419190 -v -0.565872 2.946235 7.415394 -v -0.553902 3.468339 7.410346 -v 0.662341 3.258592 7.412374 -v 0.126247 3.033054 7.598080 -v 0.199547 3.106351 7.597371 -v 0.026117 3.406727 7.594467 -v -0.074013 3.379899 7.594727 -v 0.199547 3.306602 7.595435 -v 0.126247 3.379899 7.594727 -v -0.165888 3.237284 7.596105 -v -0.154317 3.155719 7.596893 -v 0.026117 3.006226 7.598339 -v 0.216353 3.243886 7.596042 -v -0.074013 3.033054 7.598080 -v -0.147313 3.306602 7.595435 -v 0.214230 3.183352 7.596626 -v 0.655241 3.056143 7.414330 -v 0.662640 3.068029 7.414216 -v -0.150892 3.150488 7.596944 -v 0.404348 2.344625 -0.169240 -v -0.025414 2.229476 -0.168127 -v -0.025414 2.447085 -0.235523 -v 0.295223 2.532996 -0.236354 -v -0.856289 3.221189 -0.177715 -v -0.806233 2.871109 -0.174330 -v 0.718957 3.518703 -0.180592 -v 0.404349 3.833296 -0.183633 -v -0.025414 3.948445 -0.184746 -v -0.455176 3.833296 -0.183633 -v 0.718957 2.659218 -0.172282 -v -0.785146 2.848658 -0.174113 -v -0.455177 2.344625 -0.169240 -v -0.769785 3.518703 -0.180592 -v 0.791086 3.249524 -0.177989 -v 0.791023 3.004963 -0.175625 -v 0.579132 3.025661 -0.241117 -v 0.583760 3.208122 -0.242881 -v -0.640253 3.186982 -0.242677 -v -0.603200 2.925795 -0.240152 -v 0.529946 3.408951 -0.244823 -v 0.295223 3.643663 -0.247092 -v -0.025414 3.729573 -0.247923 -v -0.346051 3.643663 -0.247092 -v 0.529946 2.767707 -0.238623 -v -0.592235 2.909045 -0.239990 -v -0.580774 3.408952 -0.244823 -v -0.346051 2.532996 -0.236354 -v -0.025414 2.339091 -0.673720 -v 0.347100 2.438901 -0.674685 -v 0.676943 3.011275 -0.680219 -v 0.688901 3.198697 -0.682031 -v 0.682320 3.223258 -0.682268 -v 0.474129 3.163835 -0.723243 -v 0.469526 3.181010 -0.723409 -v -0.739729 3.198697 -0.682031 -v -0.696682 2.895252 -0.679097 -v 0.619799 3.456579 -0.684524 -v 0.347100 3.729265 -0.687160 -v -0.025414 3.829076 -0.688125 -v -0.397928 3.729265 -0.687160 -v 0.619799 2.711587 -0.677321 -v -0.683942 2.875792 -0.678909 -v -0.670627 3.456579 -0.684524 -v -0.397928 2.438901 -0.674685 -v 0.465767 3.032764 -0.721976 -v -0.025414 2.562685 -0.717431 -v 0.235096 2.632485 -0.718106 -v -0.524957 3.163835 -0.723243 -v -0.494852 2.951626 -0.721192 -v 0.425803 3.344180 -0.724987 -v 0.235097 3.534878 -0.726831 -v -0.025414 3.604678 -0.727505 -v -0.285924 3.534878 -0.726831 -v 0.425803 2.823183 -0.719950 -v -0.485943 2.938017 -0.721060 -v -0.476631 3.344180 -0.724987 -v 0.674422 2.998053 -0.680091 -v 0.464004 3.023518 -0.721887 -v -0.285924 2.632485 -0.718106 -v -0.488505 3.299868 -0.724558 -v -0.687605 3.393217 -0.683911 -v -0.736741 3.209849 -0.682138 -v -0.522867 3.171633 -0.723319 -v -0.700186 3.346269 -0.683457 -v -0.497303 3.267036 -0.724241 -v -0.514898 3.201372 -0.723606 -v -0.725346 3.252373 -0.682550 -v -0.712766 3.299321 -0.683003 -v -0.506101 3.234204 -0.723924 -v 0.425803 3.342331 -0.916230 -v 0.469526 3.179162 -0.914652 -v 0.300966 3.184552 -0.543207 -v 0.271888 3.293070 -0.544256 -v 0.465767 3.030915 -0.913219 -v 0.474129 3.161986 -0.914486 -v -0.476631 3.342331 -0.916230 -v -0.488505 3.298019 -0.915802 -v 0.235096 2.630636 -0.909349 -v -0.025414 2.560836 -0.908674 -v -0.028200 2.773328 -0.539231 -v 0.145056 2.819749 -0.539680 -v -0.524957 3.161986 -0.914486 -v -0.494852 2.949777 -0.912435 -v 0.235097 3.533029 -0.918074 -v -0.025414 3.602829 -0.918749 -v -0.285924 3.533029 -0.918074 -v 0.425803 2.821334 -0.911193 -v -0.485943 2.936168 -0.912303 -v -0.285924 2.630636 -0.909349 -v -0.360427 3.173130 -0.543097 -v -0.340405 3.031997 -0.541732 -v 0.145056 3.419896 -0.545482 -v -0.028200 3.466318 -0.545931 -v -0.201455 3.419896 -0.545482 -v 0.271888 2.946575 -0.540906 -v -0.334480 3.022947 -0.541645 -v -0.328287 3.293070 -0.544256 -v 0.464004 3.021669 -0.913130 -v 0.297293 3.079810 -0.542194 -v -0.201455 2.819749 -0.539680 -v 0.304027 3.173130 -0.543097 -v -0.336184 3.263600 -0.543971 -v 0.298466 3.085960 -0.542254 -v -0.522867 3.169785 -0.914562 -v -0.359037 3.178316 -0.543147 -v -0.342035 3.241765 -0.543760 -v -0.497303 3.265187 -0.915484 -v -0.514898 3.199523 -0.914849 -v -0.353737 3.198094 -0.543338 -v -0.506101 3.232355 -0.915167 -v -0.347886 3.203671 -0.543392 -v -0.088064 -0.563161 -5.307450 -v -0.207814 -0.563161 -5.307450 -v 0.139997 0.233605 -4.853300 -v -0.084252 0.233605 -4.853300 -v -0.196376 0.233605 -4.853300 -v 0.136925 0.472180 -4.743518 -v 0.122857 1.454738 -4.298106 -v -0.083228 0.472180 -4.743518 -v -0.193305 0.472180 -4.743518 -v -0.179237 1.454738 -4.298106 -v -0.078539 1.454738 -4.298106 -v 0.153746 -0.762632 -5.266933 -v 0.082453 -0.903583 -5.396180 -v 0.008691 -0.903583 -5.396180 -v -0.088835 -0.762632 -5.266933 -v 0.153067 1.408763 -5.369888 -v 0.169948 0.735733 -5.803853 -v -0.114885 1.502682 -3.027913 -v -0.179237 1.454738 -4.298106 -v -0.193305 0.472180 -4.743518 -v -0.284789 1.712767 -3.235150 -v -0.330283 1.424088 -5.012627 -v -0.209446 1.408763 -5.369888 -v -0.226328 0.735733 -5.803853 -v -0.358420 0.647882 -5.450408 -v 0.273904 1.439413 -4.655366 -v 0.122857 1.454738 -4.298106 -v 0.136925 0.472180 -4.743518 -v 0.302040 0.560031 -5.096963 -v -0.210126 -0.762632 -5.266933 -v -0.138832 -0.903583 -5.396180 -v -0.065070 -0.903583 -5.396180 -v -0.193305 0.472180 -4.743518 -v -0.083228 0.472180 -4.743518 -v 0.136925 0.472180 -4.743518 -v -0.194953 0.302622 -4.650402 -v 0.173634 0.518873 -5.942758 -v -0.196376 0.233605 -4.853300 -v -0.114812 1.677601 -3.247157 -v -0.230014 0.518873 -5.942758 -v -0.364563 0.423784 -5.579605 -v 0.139997 0.233605 -4.853300 -v 0.308184 0.328695 -5.216453 -v 0.187359 -0.288598 -6.459964 -v -0.207814 -0.563161 -5.307450 -v -0.284789 1.705085 -3.772867 -v -0.243738 -0.288598 -6.459964 -v -0.387438 -0.380119 -6.075793 -v 0.151434 -0.563161 -5.307450 -v 0.331058 -0.471640 -5.691622 -v 0.331058 -0.380119 -6.075793 -v -0.083777 0.302622 -4.650402 -v -0.387438 -0.471640 -5.691622 -v 0.138574 0.302622 -4.650402 -v 0.308184 0.423784 -5.579605 -v -0.364563 0.328694 -5.216453 -v -0.196376 0.233605 -4.853300 -v -0.084252 0.233605 -4.853300 -v 0.302040 0.647882 -5.450408 -v -0.358420 0.560031 -5.096963 -v 0.273904 1.424088 -5.012627 -v -0.330283 1.439413 -4.655366 -v 0.139997 0.233605 -4.853300 -v -0.207814 -0.563161 -5.307450 -v -0.284789 1.707290 -3.635175 -v -0.088064 -0.563161 -5.307450 -v -0.116042 1.660913 -3.634511 -v 0.151434 -0.563161 -5.307450 -v -0.116041 1.658715 -3.772054 -v -0.284789 1.700950 -4.031070 -v 0.331058 -0.471640 -5.691622 -v 0.331058 -0.380119 -6.075793 -v 0.335683 -0.555430 -6.131989 -v -0.387438 -0.471640 -5.691622 -v -0.392062 -0.659031 -5.699462 -v 0.308184 0.423784 -5.579605 -v -0.364563 0.328694 -5.216453 -v 0.305337 0.513775 -5.469066 -v -0.361716 0.408198 -5.059734 -v 0.302040 0.647882 -5.450408 -v -0.358420 0.560031 -5.096963 -v -0.249474 -0.803404 -5.819082 -v 0.193095 -0.703225 -6.241984 -v -0.114767 1.666757 -4.017442 -v -0.284789 1.321313 -4.283208 -v -0.284789 1.515775 -4.233112 -v -0.114964 1.495999 -4.200259 -v -0.117773 1.321858 -4.224834 -v 0.151434 -0.563161 -5.307450 -v 0.031685 -0.563161 -5.307450 -v 0.027873 0.233605 -4.853300 -v 0.026849 0.472180 -4.743518 -v 0.022159 1.454738 -4.298106 -v 0.031685 -0.563161 -5.307450 -v 0.032456 -0.762632 -5.266933 -v 0.027873 0.233605 -4.853300 -v 0.027398 0.302622 -4.650402 -v 0.026849 0.472180 -4.743518 -v -0.116145 0.978564 -3.628443 -v -0.284789 0.931451 -3.627675 -v -0.114705 0.967637 -4.021990 -v -0.284789 0.934137 -4.036023 -v -0.115059 1.147580 -4.195626 -v -0.284789 1.127856 -4.229362 -v 0.233857 1.712767 -3.235150 -v 0.233857 1.707290 -3.635175 -v 0.233857 1.330151 -2.942667 -v 0.233857 1.523608 -2.996514 -v 0.233857 1.515775 -4.233112 -v 0.233857 1.321313 -4.283208 -v 0.233857 1.705085 -3.772867 -v 0.233857 1.702504 -3.934052 -v 0.233857 1.700950 -4.031070 -v 0.233857 0.934137 -4.036023 -v 0.233857 0.931451 -3.627675 -v 0.233857 1.127856 -4.229362 -v 0.233857 1.135689 -2.992763 -v 0.233857 0.951510 -3.091764 -v -0.284789 1.702504 -3.934052 -v -0.116041 1.656134 -3.933240 -v 0.065110 1.658714 -3.772054 -v 0.065110 1.656132 -3.933240 -v -0.058661 1.651579 -3.933167 -v -0.058661 1.654160 -3.771982 -v 0.063835 1.666756 -4.017442 -v 0.066841 1.321858 -4.224834 -v 0.064127 1.147580 -4.195626 -v 0.063773 0.967636 -4.021990 -v 0.065213 0.978564 -3.628443 -v 0.063492 0.980412 -3.109781 -v 0.064574 1.151276 -3.032256 -v 0.066824 1.329624 -3.000926 -v 0.063953 1.502682 -3.027913 -v 0.063880 1.677601 -3.247157 -v 0.065110 1.660913 -3.634511 -v 0.064032 1.495999 -4.200259 -v 0.007729 1.651578 -3.933167 -v 0.007729 1.654159 -3.771982 -v -0.576565 3.014771 -5.569995 -v -0.604169 3.016425 -5.679888 -v -0.460427 3.032423 -5.715754 -v -0.432823 3.030769 -5.605861 -v -0.382525 3.158213 -5.733428 -v -0.354921 3.156559 -5.623536 -v -0.429126 3.299072 -5.719602 -v -0.401522 3.297418 -5.609710 -v -0.565138 3.348930 -5.684687 -v -0.537534 3.347276 -5.574795 -v -0.688141 3.270244 -5.654974 -v -0.660537 3.268590 -5.545082 -v -0.705511 3.122265 -5.652839 -v -0.677907 3.120611 -5.542946 -v -0.055919 2.973660 -3.634294 -v 0.087823 2.989658 -3.670160 -v 0.165724 3.115448 -3.687835 -v 0.119123 3.256307 -3.674009 -v -0.016889 3.306165 -3.639094 -v -0.139891 3.227479 -3.609381 -v -0.157262 3.079500 -3.607245 -v -0.601651 3.136804 -5.555968 -v -0.538175 3.070511 -5.572911 -v -0.590771 3.229491 -5.557307 -v -0.513728 3.278776 -5.575917 -v -0.428538 3.247547 -5.597787 -v -0.399349 3.159320 -5.606446 -v -0.448143 3.080532 -5.595376 -v -0.482560 2.999224 -5.332764 -v -0.338818 3.015222 -5.368630 -v -0.260917 3.141012 -5.386305 -v -0.307518 3.281871 -5.372479 -v -0.443529 3.331730 -5.337564 -v -0.566532 3.253043 -5.307851 -v -0.583902 3.105064 -5.305715 -v -0.479087 3.064332 -5.340877 -v -0.389054 3.074353 -5.363341 -v -0.340261 3.153141 -5.374412 -v -0.369449 3.241368 -5.365751 -v -0.454640 3.272597 -5.343883 -v -0.531682 3.223312 -5.325272 -v -0.542562 3.130625 -5.323935 -v -0.020524 4.040238 -5.468335 -v 0.184378 4.041059 -5.383466 -v 0.184378 4.261907 -5.385601 -v -0.020524 4.261086 -5.470470 -v 0.269252 4.043039 -5.178573 -v 0.269252 4.263888 -5.180708 -v 0.184378 4.045021 -4.973680 -v 0.184378 4.265869 -4.975815 -v -0.020524 4.045841 -4.888810 -v -0.020524 4.266689 -4.890945 -v -0.225427 4.045021 -4.973680 -v -0.225427 4.265869 -4.975815 -v -0.310300 4.043039 -5.178573 -v -0.310300 4.263888 -5.180708 -v -0.225427 4.041059 -5.383466 -v -0.225427 4.261907 -5.385601 -v -0.385685 2.610826 -13.126019 -v -0.385685 3.299155 -13.055437 -v 0.304490 3.299155 -13.055437 -v 0.304490 2.610826 -13.126019 -v -0.385685 0.019905 -12.750216 -v 0.304490 0.019905 -12.750216 -v -0.385685 0.729564 -12.914287 -v -0.385685 1.809576 -13.081938 -v 0.304490 1.809576 -13.081938 -v 0.304490 0.729564 -12.914287 -v 0.577935 1.794459 -12.737568 -v 0.577935 0.846547 -12.590424 -v -0.585645 3.126972 -12.757756 -v -0.585645 2.512112 -12.820806 -v -0.585645 1.796385 -12.781429 -v -0.585645 0.831648 -12.631672 -v -0.585645 0.197734 -12.485114 -v 0.577935 0.223689 -12.446421 -v 0.577935 2.497705 -12.776258 -v 0.577935 3.101842 -12.714309 -v -0.585645 3.239276 -6.538247 -v -0.585645 3.183095 -9.651071 -v -0.585645 3.126972 -12.757756 -v 0.577935 3.101842 -12.714309 -v 0.577935 3.156986 -9.661803 -v 0.577935 3.212186 -6.603268 +f 2/566/337 4/567/338 1/568/339 +f 3/569/340 6/570/341 4/567/338 +f 3/569/340 7/571/342 5/572/343 +f 6/570/341 7/571/342 8/573/344 +f 7/571/342 1/568/339 8/573/344 +f 9/574/345 11/575/346 12/576/347 +f 13/577/348 9/578/345 12/579/347 +f 15/580/349 12/579/347 11/581/346 +f 16/582/350 11/581/346 10/583/351 +f 9/584/345 16/582/350 10/583/351 +f 13/585/348 1/586/339 14/587/352 +f 6/588/341 13/577/348 15/580/349 +f 16/582/350 6/589/341 15/580/349 +f 1/586/339 16/590/350 14/587/352 +f 17/591/353 19/592/354 20/593/355 +f 20/593/355 21/594/356 22/595/357 +f 19/592/354 23/596/358 21/594/356 +f 22/595/357 23/596/358 24/597/359 +f 23/596/358 17/591/353 24/597/359 +f 25/598/345 27/599/346 28/600/347 +f 28/601/347 30/602/360 25/603/345 +f 31/604/361 28/601/347 27/605/346 +f 26/606/351 31/607/361 27/608/346 +f 30/609/360 26/606/351 25/268/345 +f 24/610/359 30/611/360 29/612/362 +f 22/613/357 29/614/362 31/604/361 +f 32/615/363 22/616/357 31/607/361 +f 17/617/353 32/618/363 30/611/360 +f 337/619/364 354/620/365 339/621/365 +f 358/622/109 334/623/366 357/624/109 +f 335/625/367 352/626/368 337/619/364 +f 360/565/91 362/627/369 359/472/91 +f 350/628/366 335/625/367 334/623/366 +f 361/629/370 364/630/371 362/627/369 +f 363/631/372 366/632/373 364/630/371 +f 366/632/373 345/633/374 331/634/374 +f 370/564/90 372/635/375 369/467/90 +f 377/636/376 371/637/377 378/638/378 +f 378/638/378 381/639/379 377/636/376 +f 385/640/380 381/639/379 382/641/381 +f 388/642/109 385/640/380 387/643/109 +f 345/633/374 332/644/95 331/634/374 +f 444/303/109 357/624/109 443/471/109 +f 353/645/382 469/560/91 355/451/91 +f 351/646/383 470/647/384 353/645/382 +f 348/648/385 471/649/386 351/646/383 +f 348/648/385 473/650/387 472/651/388 +f 474/652/95 347/653/389 386/654/95 +f 434/655/390 468/656/109 431/657/109 +f 467/658/95 383/659/391 389/660/95 +f 380/661/392 466/662/393 464/663/394 +f 436/664/395 465/665/396 434/655/390 +f 459/666/397 436/664/395 438/667/398 +f 380/661/392 462/668/399 375/669/400 +f 460/670/401 438/667/398 440/671/402 +f 375/669/400 461/672/403 376/673/404 +f 376/673/404 458/559/91 368/448/91 +f 457/558/90 440/671/402 442/446/90 +f 439/674/405 456/557/91 441/442/91 +f 437/675/406 454/676/407 439/674/405 +f 435/677/408 452/678/409 437/675/406 +f 435/677/408 448/679/410 450/680/411 +f 445/681/95 433/682/412 432/683/95 +f 346/684/413 446/685/109 343/686/109 +f 379/687/414 447/688/415 346/684/413 +f 451/689/416 379/687/414 374/690/417 +f 453/691/418 374/690/417 373/692/419 +f 455/556/90 373/692/419 367/440/90 +f 336/693/385 484/694/387 333/393/389 +f 484/694/387 414/392/95 333/393/389 +f 336/693/385 478/695/386 482/696/388 +f 338/697/420 479/698/421 478/695/386 +f 402/699/422 480/700/423 403/701/375 +f 415/702/109 483/703/380 413/704/424 +f 483/703/380 409/705/379 413/704/424 +f 409/705/379 477/706/425 402/699/422 +f 408/707/392 490/708/399 494/709/394 +f 408/707/392 496/710/393 412/320/391 +f 496/710/393 416/319/95 412/320/391 +f 401/711/426 491/712/427 490/708/399 +f 419/713/109 495/714/396 420/715/390 +f 495/714/396 423/716/395 420/715/390 +f 423/716/395 489/717/428 425/718/429 +f 425/718/429 492/719/430 427/720/402 +f 411/721/410 422/385/95 421/386/412 +f 424/722/408 411/721/410 421/386/412 +f 424/722/408 398/723/409 407/724/411 +f 426/725/431 399/726/432 398/723/409 +f 395/727/433 400/728/434 396/729/435 +f 405/730/414 397/731/436 395/727/433 +f 410/732/415 405/730/414 330/733/437 +f 329/734/109 410/732/415 330/733/437 +f 400/728/434 390/234/90 396/729/435 +f 429/231/91 399/726/432 428/735/405 +f 492/719/430 430/228/90 427/720/402 +f 393/222/91 491/712/427 404/736/404 +f 480/700/423 394/216/90 403/701/375 +f 341/213/91 479/698/421 340/737/382 +f 354/620/365 342/29/90 339/621/365 +f 2/566/337 3/569/340 4/567/338 +f 3/569/340 5/572/343 6/570/341 +f 3/569/340 2/566/337 7/571/342 +f 6/570/341 5/572/343 7/571/342 +f 7/571/342 2/566/337 1/568/339 +f 9/574/345 10/263/351 11/575/346 +f 13/577/348 14/738/352 9/578/345 +f 15/580/349 13/577/348 12/579/347 +f 16/582/350 15/580/349 11/581/346 +f 9/584/345 14/739/352 16/582/350 +f 13/585/348 8/740/344 1/586/339 +f 6/588/341 8/741/344 13/577/348 +f 16/582/350 4/742/338 6/589/341 +f 1/586/339 4/743/338 16/590/350 +f 17/591/353 18/744/438 19/592/354 +f 20/593/355 19/592/354 21/594/356 +f 19/592/354 18/744/438 23/596/358 +f 22/595/357 21/594/356 23/596/358 +f 23/596/358 18/744/438 17/591/353 +f 25/598/345 26/414/351 27/599/346 +f 28/601/347 29/614/362 30/602/360 +f 31/604/361 29/614/362 28/601/347 +f 26/606/351 32/615/363 31/607/361 +f 30/609/360 32/615/363 26/606/351 +f 24/610/359 17/617/353 30/611/360 +f 22/613/357 24/745/359 29/614/362 +f 32/615/363 20/746/355 22/616/357 +f 17/617/353 20/747/355 32/618/363 +f 337/619/364 352/626/368 354/620/365 +f 358/622/109 350/628/366 334/623/366 +f 335/625/367 349/748/367 352/626/368 +f 360/565/91 361/629/370 362/627/369 +f 350/628/366 349/748/367 335/625/367 +f 361/629/370 363/631/372 364/630/371 +f 363/631/372 365/749/373 366/632/373 +f 366/632/373 365/749/373 345/633/374 +f 370/564/90 371/637/377 372/635/375 +f 377/636/376 372/635/375 371/637/377 +f 378/638/378 382/641/381 381/639/379 +f 385/640/380 384/750/424 381/639/379 +f 388/642/109 384/750/424 385/640/380 +f 345/633/374 344/32/95 332/644/95 +f 444/303/109 358/622/109 357/624/109 +f 353/645/382 470/647/384 469/560/91 +f 351/646/383 471/649/386 470/647/384 +f 348/648/385 472/651/388 471/649/386 +f 348/648/385 347/653/389 473/650/387 +f 474/652/95 473/650/387 347/653/389 +f 434/655/390 465/665/396 468/656/109 +f 467/658/95 466/662/393 383/659/391 +f 380/661/392 383/659/391 466/662/393 +f 436/664/395 463/751/439 465/665/396 +f 459/666/397 463/751/439 436/664/395 +f 380/661/392 464/663/394 462/668/399 +f 460/670/401 459/666/397 438/667/398 +f 375/669/400 462/668/399 461/672/403 +f 376/673/404 461/672/403 458/559/91 +f 457/558/90 460/670/401 440/671/402 +f 439/674/405 454/676/407 456/557/91 +f 437/675/406 452/678/409 454/676/407 +f 435/677/408 450/680/411 452/678/409 +f 435/677/408 433/682/412 448/679/410 +f 445/681/95 448/679/410 433/682/412 +f 346/684/413 447/688/415 446/685/109 +f 379/687/414 449/752/440 447/688/415 +f 451/689/416 449/752/440 379/687/414 +f 453/691/418 451/689/416 374/690/417 +f 455/556/90 453/691/418 373/692/419 +f 336/693/385 482/696/388 484/694/387 +f 484/694/387 485/753/95 414/392/95 +f 336/693/385 338/697/420 478/695/386 +f 338/697/420 340/737/382 479/698/421 +f 402/699/422 477/706/425 480/700/423 +f 415/702/109 486/754/109 483/703/380 +f 483/703/380 481/755/381 409/705/379 +f 409/705/379 481/755/381 477/706/425 +f 408/707/392 401/711/426 490/708/399 +f 408/707/392 494/709/394 496/710/393 +f 496/710/393 497/756/95 416/319/95 +f 401/711/426 404/736/404 491/712/427 +f 419/713/109 498/757/109 495/714/396 +f 495/714/396 493/758/439 423/716/395 +f 423/716/395 493/758/439 489/717/428 +f 425/718/429 489/717/428 492/719/430 +f 411/721/410 417/759/95 422/385/95 +f 424/722/408 407/724/411 411/721/410 +f 424/722/408 426/725/431 398/723/409 +f 426/725/431 428/735/405 399/726/432 +f 395/727/433 397/731/436 400/728/434 +f 405/730/414 406/760/440 397/731/436 +f 410/732/415 406/760/440 405/730/414 +f 329/734/109 418/761/109 410/732/415 +f 400/728/434 391/232/90 390/234/90 +f 429/231/91 392/230/91 399/726/432 +f 492/719/430 487/226/90 430/228/90 +f 393/222/91 488/221/91 491/712/427 +f 480/700/423 475/214/90 394/216/90 +f 341/213/91 476/212/91 479/698/421 +f 354/620/365 356/27/90 342/29/90 +o main +v -0.202174 1.172312 0.084620 +v 0.012707 1.114738 0.084064 +v 0.012707 1.223542 0.117762 +v -0.147611 1.266498 0.118177 +v -0.080983 1.739653 -5.738497 +v -0.013058 1.757851 -5.738321 +v -0.013058 1.760041 -6.289080 +v -0.079416 1.742262 -6.289251 +v -0.180496 1.276744 -3.709595 +v -0.013059 1.231882 -3.710029 +v 0.428145 1.610595 0.088858 +v 0.403116 1.435555 0.087165 +v 0.290977 1.481865 -3.707612 +v 0.310479 1.618257 -3.706294 +v -0.359479 1.759351 0.090296 +v -0.202174 1.916648 0.091817 +v -0.180496 1.856736 -3.703987 +v -0.303069 1.734170 -3.705173 +v 0.012707 1.974223 0.092373 +v 0.227588 1.916648 0.091817 +v 0.154378 1.856737 -3.703987 +v -0.013059 1.901599 -3.703554 +v -0.359479 1.329609 0.086141 +v -0.303069 1.399311 -3.708410 +v 0.392573 1.424329 0.087057 +v 0.227589 1.172312 0.084620 +v 0.154378 1.276744 -3.709595 +v 0.282936 1.473118 -3.707697 +v 0.384892 1.759351 0.090296 +v 0.276951 1.734170 -3.705173 +v -0.395543 1.624762 0.088995 +v -0.395512 1.502481 0.087813 +v -0.289566 1.512830 0.120559 +v -0.291880 1.604061 0.121441 +v -0.212901 1.671165 0.458115 +v -0.234763 1.589581 0.457326 +v -0.150483 1.592276 0.271604 +v -0.135944 1.646535 0.272128 +v -0.331171 1.629296 -3.706187 +v -0.130708 1.554088 -5.740291 +v -0.140668 1.606321 -5.739786 +v -0.142108 1.647385 -5.739389 +v -0.130708 1.689929 -5.738977 +v 0.054867 1.739653 -5.738497 +v 0.104592 1.689929 -5.738977 +v 0.117192 1.642908 -5.739432 +v 0.109342 1.587577 -5.739967 +v 0.054867 1.504364 -5.740772 +v -0.013058 1.486166 -5.740948 +v -0.080983 1.504364 -5.740772 +v 0.101877 1.693688 -6.289721 +v 0.053300 1.742262 -6.289251 +v -0.013058 1.494624 -6.291646 +v 0.053300 1.512403 -6.291474 +v -0.127993 1.693688 -6.289721 +v -0.139130 1.652125 -6.290123 +v -0.079416 1.512403 -6.291474 +v 0.106518 1.593696 -6.290688 +v 0.114186 1.647750 -6.290165 +v -0.127993 1.560979 -6.291004 +v -0.113470 1.595189 -4.242433 +v -0.114603 1.627501 -4.242120 +v -0.110517 1.626811 -4.253918 +v -0.109429 1.595799 -4.254218 +v -0.064355 1.518801 -4.254962 +v -0.101907 1.556352 -4.254600 +v -0.112639 1.564113 -5.698238 +v -0.070551 1.522027 -5.698646 +v -0.013059 1.710235 -4.253111 +v 0.038238 1.696491 -4.253244 +v 0.044435 1.721179 -5.696720 +v -0.013058 1.736583 -5.696571 +v -0.101907 1.658941 -4.253607 +v -0.064355 1.696491 -4.253244 +v -0.070551 1.721179 -5.696720 +v -0.112639 1.679093 -5.697127 +v 0.085306 1.623429 -4.253951 +v 0.079378 1.581643 -4.254355 +v 0.090544 1.592458 -5.697964 +v 0.097188 1.639292 -5.697512 +v -0.013059 1.505057 -4.255095 +v -0.013058 1.506621 -5.698794 +v -0.122289 1.643082 -5.697475 +v 0.038238 1.518801 -4.254962 +v 0.044435 1.522027 -5.698646 +v 0.075790 1.658941 -4.253607 +v 0.086522 1.679093 -5.697127 +v -0.066506 1.700102 -4.241418 +v -0.013059 1.714422 -4.241280 +v 0.040389 1.700102 -4.241418 +v 0.079515 1.660977 -4.241796 +v 0.040389 1.514963 -4.243208 +v -0.013059 1.500642 -4.243347 +v -0.105632 1.660977 -4.241796 +v -0.066506 1.514963 -4.243208 +v 0.089430 1.623976 -4.242154 +v 0.083254 1.580439 -4.242575 +v -0.105632 1.554087 -4.242830 +v -0.065400 1.515808 -4.132485 +v -0.103717 1.554122 -4.132114 +v -0.013059 1.711140 -4.130596 +v 0.039283 1.697116 -4.130732 +v -0.103717 1.658800 -4.131102 +v -0.065400 1.697116 -4.130732 +v 0.087309 1.622566 -4.131453 +v 0.081261 1.579929 -4.131865 +v -0.013059 1.501784 -4.132620 +v -0.112502 1.626017 -4.131419 +v 0.039283 1.515808 -4.132485 +v 0.077600 1.658800 -4.131102 +v -0.062560 1.692112 -4.121951 +v -0.013059 1.705375 -4.121823 +v 0.036443 1.692112 -4.121951 +v 0.072681 1.655875 -4.122302 +v 0.036443 1.520641 -4.123609 +v -0.013059 1.507378 -4.123737 +v -0.107106 1.624871 -4.122602 +v -0.098798 1.655875 -4.122302 +v -0.062560 1.520641 -4.123609 +v 0.081864 1.621607 -4.122633 +v 0.076143 1.581283 -4.123023 +v -0.098798 1.556877 -4.123259 +v -0.063124 1.516527 -3.799040 +v -0.099774 1.553176 -3.798685 +v -0.013059 1.703364 -3.797233 +v 0.037006 1.689950 -3.797363 +v -0.099774 1.653301 -3.797717 +v -0.063124 1.689950 -3.797363 +v 0.082944 1.618642 -3.798053 +v 0.077158 1.577860 -3.798446 +v -0.013059 1.503113 -3.799170 +v -0.108177 1.621943 -3.798021 +v 0.037006 1.516527 -3.799040 +v 0.073656 1.653301 -3.797718 +v -0.107115 1.591676 -3.798313 +v -0.327621 1.528072 -3.707165 +v -0.331320 1.534015 -3.707108 +v 0.075446 1.575244 -3.798472 +v 0.012707 1.169546 0.336860 +v -0.173550 1.219450 0.337343 +v 0.320127 1.593491 0.121339 +v 0.301600 1.462898 0.120076 +v -0.264973 1.704476 0.122412 +v -0.147611 1.821831 0.123546 +v 0.012707 1.864787 0.123962 +v 0.173026 1.821831 0.123546 +v -0.264973 1.383854 0.119312 +v 0.296118 1.454522 0.119995 +v 0.290387 1.704476 0.122412 +v 0.173026 1.266498 0.118177 +v -0.338471 1.505638 0.340110 +v -0.344450 1.599349 0.341016 +v -0.341160 1.611629 0.341134 +v -0.237064 1.581918 0.361622 +v -0.234763 1.590505 0.361705 +v 0.369865 1.599349 0.341016 +v 0.348341 1.447626 0.339549 +v -0.309899 1.728289 0.342262 +v -0.173550 1.864632 0.343580 +v 0.012707 1.914538 0.344063 +v 0.198964 1.864632 0.343580 +v -0.309899 1.355793 0.338661 +v 0.341971 1.437896 0.339455 +v 0.335314 1.728289 0.342262 +v 0.198964 1.219450 0.337343 +v -0.232883 1.516382 0.360988 +v -0.232883 1.515458 0.456610 +v -0.237064 1.580993 0.457243 +v 0.012707 1.281343 0.358716 +v -0.117548 1.316242 0.359053 +v 0.262479 1.581918 0.361622 +v 0.247426 1.475813 0.360596 +v -0.212901 1.672090 0.362494 +v -0.117548 1.767439 0.363416 +v 0.012707 1.802339 0.363753 +v 0.142962 1.767439 0.363416 +v -0.212901 1.411592 0.359975 +v 0.242972 1.469008 0.360530 +v 0.238316 1.672090 0.362494 +v -0.337211 1.499027 0.340046 +v -0.232002 1.511759 0.360944 +v 0.142962 1.316242 0.359053 +v 0.244253 1.649934 0.362279 +v 0.238316 1.671165 0.458115 +v 0.244253 1.649009 0.457901 +v -0.117548 1.315318 0.454675 +v 0.012707 1.280418 0.454337 +v 0.014100 1.386664 0.269616 +v -0.072528 1.409875 0.269840 +v 0.262479 1.580993 0.457243 +v 0.247426 1.474888 0.456218 +v -0.117548 1.766515 0.459037 +v 0.012707 1.801414 0.459375 +v 0.142962 1.766515 0.459037 +v -0.212901 1.410667 0.455597 +v 0.242972 1.468084 0.456152 +v 0.142962 1.315318 0.454675 +v -0.150483 1.568873 2.692212 +v -0.152013 1.563161 2.692157 +v -0.090311 1.552539 2.876318 +v -0.089384 1.555996 2.876352 +v 0.180214 1.586565 0.271549 +v 0.170203 1.515998 0.270866 +v -0.072528 1.709948 0.272741 +v 0.014100 1.733159 0.272966 +v 0.100728 1.709948 0.272741 +v -0.135944 1.473287 0.270453 +v 0.167240 1.511474 0.270823 +v 0.164144 1.646535 0.272128 +v -0.232002 1.510834 0.456565 +v -0.148646 1.539905 0.271097 +v 0.100728 1.409875 0.269840 +v 0.343803 1.696609 0.341956 +v -0.152013 1.586565 0.271549 +v 0.062685 1.627228 2.877040 +v 0.101074 1.588841 2.876669 +v 0.103464 1.579921 2.876582 +v 0.105235 1.573313 2.876518 +v 0.107006 1.566704 2.876455 +v 0.108777 1.560095 2.876391 +v 0.110381 1.554108 2.876333 +v 0.110801 1.552539 2.876318 +v 0.104741 1.509822 2.875905 +v 0.102948 1.507082 2.875879 +v 0.062685 1.445580 2.875283 +v 0.010245 1.431530 2.875149 +v -0.042194 1.445580 2.875283 +v -0.080583 1.483967 2.875655 +v -0.088272 1.524293 2.876045 +v -0.088627 1.526155 2.876063 +v -0.080583 1.588841 2.876669 +v -0.042194 1.627228 2.877041 +v 0.010245 1.641278 2.877176 +v -0.072528 1.386471 2.690449 +v 0.014100 1.363260 2.690223 +v 0.170203 1.492595 2.691474 +v 0.180214 1.563161 2.692157 +v -0.072528 1.686545 2.693350 +v -0.135944 1.623132 2.692736 +v 0.100728 1.686545 2.693350 +v 0.014100 1.709755 2.693574 +v -0.135944 1.449884 2.691062 +v 0.167240 1.488070 2.691431 +v 0.164144 1.623132 2.692736 +v -0.148646 1.516502 2.691705 +v 0.100728 1.386471 2.690449 +v 0.168092 1.631800 0.271986 +v -0.149233 1.519576 2.691736 +v -0.149233 1.542980 0.271127 +v -0.106057 1.594944 -4.122890 +v -0.111392 1.594373 -4.131725 +v -0.121069 1.608325 -5.697811 +v -0.137723 1.612007 -6.290511 +v 0.179519 1.565755 2.692182 +v 0.168092 1.608397 2.692594 +v 0.261434 1.584893 0.457281 +v 0.179519 1.589158 0.271574 +v 0.368371 1.604925 0.341069 +v 0.261434 1.585817 0.361660 +v 0.100728 1.394411 1.869289 +v 0.167240 1.496009 1.870271 +v 0.167250 1.626038 1.870785 +v 0.164144 1.631071 1.871577 +v -0.150483 1.576812 1.871052 +v -0.150483 1.583054 1.225463 +v -0.148646 1.530683 1.224956 +v -0.148646 1.524441 1.870546 +v -0.135944 1.631071 1.871577 +v 0.014100 1.371200 1.869064 +v -0.135944 1.457824 1.869902 +v 0.100728 1.694484 1.872190 +v 0.014100 1.717695 1.872414 +v -0.072528 1.694484 1.872190 +v 0.170203 1.500535 1.870315 +v -0.072528 1.394411 1.869289 +v -0.072528 1.400652 1.223699 +v 0.014100 1.377441 1.223475 +v -0.072528 1.700726 1.226600 +v -0.135944 1.637313 1.225987 +v 0.100728 1.700726 1.226600 +v 0.014100 1.723936 1.226825 +v -0.135944 1.464065 1.224312 +v 0.167240 1.502251 1.224682 +v 0.170203 1.506776 1.224725 +v 0.164144 1.637313 1.225987 +v 0.100728 1.400652 1.223699 +v 0.167250 1.632280 1.225195 +v 0.179519 1.573694 1.871022 +v 0.173943 1.586038 1.885851 +v 0.173943 1.578241 2.692302 +v 0.176869 1.575644 2.692277 +v 0.171018 1.620883 0.271880 +v 0.171018 1.611792 1.212111 +v 0.171018 1.605276 1.886037 +v 0.171018 1.597479 2.692488 +v 0.248652 1.632594 0.457742 +v 0.350093 1.673134 0.341729 +v 0.248652 1.633518 0.362121 +v 0.257449 1.600686 0.361803 +v 0.257449 1.599761 0.457425 +v 0.362673 1.626186 0.341275 +v 0.176869 1.599047 0.271669 +v 0.179519 1.579936 1.225433 +v 0.356383 1.649660 0.341502 +v 0.253051 1.617102 0.361962 +v 0.253051 1.616178 0.457584 +v 0.173943 1.601835 0.271696 +v 0.173943 1.592745 1.211927 +v 0.165142 1.619919 2.018193 +v 0.165142 1.727819 2.019237 +v 0.165142 1.721288 2.694775 +v 0.165142 1.613388 2.693733 +v -0.095303 1.013033 2.792028 +v 0.123494 1.013033 2.792028 +v 0.116000 1.052989 3.038520 +v -0.087810 1.052989 3.038520 +v -0.136952 1.613388 2.693733 +v -0.136952 1.721288 2.694775 +v -0.136952 1.727819 2.019237 +v -0.136952 1.619919 2.018193 +v 0.160849 1.787674 0.604657 +v 0.071567 1.788325 0.465026 +v 0.071567 1.818650 0.465134 +v 0.160849 1.817999 0.604764 +v 0.165142 0.853355 2.010782 +v 0.165142 0.846824 2.686321 +v 0.165142 0.704381 2.684944 +v 0.165142 0.727369 2.149053 +v 0.160849 1.781589 1.865381 +v 0.160849 1.785356 1.475714 +v 0.160849 1.815681 1.475821 +v 0.160849 1.811914 1.865489 +v -0.136952 1.626064 1.220801 +v -0.136952 1.733744 1.221874 +v -0.136952 1.735452 0.579987 +v -0.136952 1.628328 0.578839 +v -0.136952 1.621289 1.876552 +v -0.136952 1.729189 1.877596 +v -0.136952 1.733066 1.476528 +v -0.136952 1.625166 1.475485 +v 0.165142 1.572264 1.876078 +v 0.165142 0.854725 1.869141 +v 0.165142 0.858602 1.468073 +v 0.165142 1.576142 1.475011 +v -0.136952 0.854725 1.869141 +v -0.136952 0.858602 1.468073 +v 0.165142 0.867278 0.570681 +v -0.136952 0.867278 0.570681 +v -0.045059 1.331867 0.434188 +v 0.073249 1.331867 0.434188 +v -0.149082 0.664598 0.541482 +v 0.177272 0.664598 0.541482 +v 0.177272 0.634672 0.542347 +v -0.149082 0.634672 0.542347 +v 0.165142 1.577140 1.220313 +v 0.165142 0.861067 1.213177 +v 0.165142 1.579656 0.578317 +v 0.160849 1.804238 2.659441 +v 0.160849 1.810583 2.003104 +v 0.165142 1.847536 2.019661 +v 0.165142 1.841005 2.695200 +v 0.177272 0.488173 1.220839 +v -0.149082 0.488173 1.220839 +v 0.177272 0.482640 1.491678 +v -0.149082 0.482640 1.491678 +v -0.149082 0.430054 1.490015 +v 0.177272 0.430054 1.490015 +v -0.149082 0.534324 1.221784 +v 0.177272 0.534324 1.221784 +v -0.075717 -0.281581 2.653725 +v 0.193719 -0.190060 3.037896 +v -0.041226 -0.451792 2.698090 +v -0.096547 -0.401702 2.909541 +v -0.117232 0.805991 2.267262 +v -0.117232 0.806379 2.227041 +v -0.136952 0.722185 2.269905 +v -0.136952 0.721358 2.289179 +v -0.136952 0.853355 2.010782 +v -0.136952 0.727369 2.149053 +v -0.136952 0.846824 2.686321 +v -0.136952 0.704381 2.684944 +v -0.022786 -0.401702 2.909541 +v -0.004345 -0.451792 2.698090 +v 0.121869 -0.144299 3.229982 +v 0.123257 -0.225915 3.282259 +v 0.124737 -0.301523 3.332443 +v 0.124737 -0.351613 3.120992 +v 0.142395 0.475755 1.545882 +v 0.103907 -0.281581 2.653725 +v 0.069416 -0.451792 2.698090 +v 0.032535 -0.451792 2.698090 +v -0.022292 -0.225915 3.282259 +v -0.095067 -0.225915 3.282259 +v -0.096547 -0.301523 3.332443 +v -0.022786 -0.301523 3.332443 +v 0.116000 1.631425 3.044112 +v 0.116000 1.712844 3.044899 +v -0.087810 1.712844 3.044900 +v -0.087810 1.631425 3.044112 +v 0.123494 1.721409 2.798877 +v -0.095303 1.721409 2.798877 +v 0.123494 1.634003 2.798032 +v -0.095303 1.594290 2.797648 +v -0.087810 1.594432 3.043755 +v -0.136952 1.564364 2.693258 +v -0.045059 1.686242 0.436014 +v -0.045059 1.736122 0.436271 +v 0.073249 1.736122 0.436271 +v 0.073249 1.686242 0.436014 +v 0.073249 1.663578 0.435897 +v -0.132658 1.804238 2.659441 +v -0.136952 1.841005 2.695200 +v -0.016114 0.704381 2.684944 +v -0.076533 0.704381 2.684944 +v -0.084974 0.367866 2.901927 +v -0.018928 0.367866 2.901927 +v -0.093679 -0.144299 3.229982 +v 0.089619 0.727369 2.149053 +v -0.154092 0.164347 2.608227 +v -0.069998 0.116802 2.426650 +v 0.165142 0.712044 2.506314 +v 0.104723 0.704381 2.684944 +v 0.113164 0.367866 2.901927 +v 0.182282 0.211892 2.789803 +v -0.136952 0.719706 2.327683 +v -0.061428 0.727369 2.149053 +v 0.115007 0.259436 2.971379 +v 0.057212 0.490206 1.554891 +v -0.085963 0.309675 2.939199 +v -0.019258 0.309675 2.939199 +v 0.098188 0.116802 2.426650 +v -0.086817 0.259436 2.971379 +v 0.114153 0.309675 2.939199 +v -0.152668 0.204099 2.529867 +v -0.069287 0.151311 2.325201 +v 0.180858 0.256887 2.734533 +v -0.086817 0.259436 2.971379 +v -0.019542 0.259436 2.971379 +v 0.114153 0.309675 2.939199 +v 0.142395 0.567844 1.496382 +v 0.115007 0.259436 2.971379 +v 0.097477 0.151311 2.325201 +v -0.085963 0.309675 2.939199 +v -0.151020 0.280015 2.548481 +v -0.093679 -0.144299 3.229982 +v -0.021830 -0.144299 3.229982 +v -0.068462 0.236090 2.371759 +v 0.179210 0.323941 2.725204 +v 0.121869 -0.144299 3.229982 +v 0.113164 0.367866 2.901927 +v 0.057753 0.575638 1.516128 +v 0.096653 0.236090 2.371759 +v -0.132658 1.810583 2.003104 +v -0.136952 1.847536 2.019661 +v -0.132658 1.816339 1.228406 +v -0.132658 1.815681 1.475821 +v -0.136952 1.852783 1.476952 +v -0.136952 1.853461 1.222298 +v -0.043377 1.818650 0.465134 +v -0.132658 1.817999 0.604764 +v -0.136952 1.855168 0.580411 +v -0.045059 1.855839 0.436696 +v -0.132658 1.811914 1.865489 +v -0.136952 1.848906 1.878020 +v 0.160849 1.816339 1.228406 +v 0.165142 1.855168 0.580411 +v 0.165142 1.853461 1.222298 +v 0.073249 1.855839 0.436696 +v 0.165142 1.852783 1.476952 +v 0.165142 1.848906 1.878020 +v -0.136952 1.889541 2.019941 +v -0.136952 1.890910 1.878300 +v 0.165142 1.897173 0.580691 +v 0.165142 1.895465 1.222578 +v -0.136952 1.883009 2.695480 +v -0.136952 1.897173 0.580691 +v -0.045059 1.897843 0.436976 +v 0.165142 1.894787 1.477232 +v 0.165142 1.890910 1.878300 +v -0.136952 1.894787 1.477232 +v -0.136952 1.895465 1.222578 +v 0.165142 1.883009 2.695480 +v 0.073249 1.897843 0.436976 +v 0.165142 1.889541 2.019941 +v -0.043377 1.788325 0.465026 +v 0.160849 1.786014 1.228298 +v -0.132658 1.781589 1.865381 +v -0.132658 1.780258 2.002996 +v -0.132658 1.787674 0.604657 +v -0.132658 1.786014 1.228298 +v -0.132658 1.785356 1.475714 +v -0.132658 1.773913 2.659333 +v 0.160849 1.773913 2.659333 +v 0.160849 1.780258 2.002996 +v 0.165142 1.733744 1.221874 +v 0.165142 1.735452 0.579987 +v 0.165142 1.729189 1.877596 +v 0.165142 1.733066 1.476528 +v -0.136952 1.894787 1.477232 +v -0.136952 1.895465 1.222578 +v -0.136952 1.889541 2.019941 +v -0.136952 1.890910 1.878300 +v -0.136952 1.883009 2.695480 +v 0.165142 1.890910 1.878300 +v 0.165142 1.894787 1.477232 +v 0.165142 1.883009 2.695480 +v 0.165142 1.889541 2.019941 +v 0.165142 1.895465 1.222578 +v 0.165142 1.897173 0.580691 +v -0.136952 1.897173 0.580691 +v 0.165142 0.489549 1.456398 +v 0.165142 0.537184 1.206545 +v -0.136952 0.861067 1.213177 +v -0.136952 0.657256 0.576757 +v -0.136952 0.537184 1.206545 +v -0.136952 0.489549 1.456398 +v 0.165142 0.657256 0.576757 +v -0.084974 0.367866 2.901927 +v -0.096547 -0.301523 3.332443 +v -0.095067 -0.225915 3.282259 +v 0.142395 0.665075 1.471334 +v 0.069416 -0.451792 2.698090 +v 0.105063 -0.381316 2.633466 +v 0.058878 0.664812 1.500463 +v 0.124737 -0.351613 3.120992 +v 0.124737 -0.301523 3.332443 +v 0.123257 -0.225915 3.282259 +v -0.136952 0.712044 2.506314 +v 0.165142 0.719706 2.327683 +v 0.124737 -0.401702 2.909541 +v -0.096547 -0.351613 3.120992 +v -0.022786 -0.351613 3.120992 +v 0.050976 -0.351613 3.120992 +v 0.050976 -0.401702 2.909541 +v 0.050976 -0.301523 3.332443 +v 0.196031 -0.277715 3.065995 +v 0.142395 0.761804 1.498257 +v 0.050020 -0.144299 3.229982 +v 0.050482 -0.225915 3.282259 +v -0.096547 -0.401702 2.909541 +v 0.047732 0.259436 2.971379 +v -0.041226 -0.451792 2.698090 +v 0.047448 0.309675 2.939199 +v -0.076873 -0.381316 2.633466 +v 0.047118 0.367866 2.901927 +v -0.167841 -0.329516 2.849731 +v 0.044304 0.704381 2.684944 +v -0.136952 1.579656 0.578317 +v -0.045059 1.663578 0.435897 +v 0.165142 1.628328 0.578839 +v 0.165142 1.564364 2.693258 +v 0.123494 1.594290 2.797648 +v -0.095303 1.634003 2.798032 +v 0.116000 1.594432 3.043755 +v 0.165142 1.626064 1.220801 +v 0.165142 1.621289 1.876552 +v 0.165142 1.625166 1.475485 +v -0.136952 1.572264 1.876078 +v -0.136952 1.576142 1.475011 +v -0.136952 1.577140 1.220313 +v -0.136952 1.570895 2.017720 +v 0.165142 1.570895 2.017720 +v -0.116550 0.944315 2.275445 +v -0.136952 1.568204 2.296037 +v -0.136952 1.568395 2.276249 +v -0.117232 0.943106 2.228364 +v -0.136952 0.853355 2.010782 +v -0.136952 0.727369 2.149053 +v -0.136952 1.570895 2.017720 +v -0.136952 0.920625 2.011432 +v -0.136952 0.914094 2.686971 +v -0.136952 1.564364 2.693258 +v -0.136952 1.567813 2.336523 +v -0.117232 0.941921 2.350872 +v -0.136952 0.846824 2.686321 +v -0.117232 0.805195 2.349550 +v -0.136952 0.719666 2.328613 +v -0.136952 0.704381 2.684944 +v -0.136952 0.871403 2.686558 +v -0.117232 0.855153 2.350033 +v -0.117232 0.856337 2.227525 +v -0.136952 0.877935 2.011019 +v -0.165627 0.941921 2.350872 +v -0.165627 0.855153 2.350033 +v -0.165627 0.855948 2.267745 +v -0.164657 0.945919 2.272705 +v -0.165627 0.943106 2.228364 +v -0.165627 0.856337 2.227525 +v -0.117232 0.805509 2.317034 +v -0.165627 0.805195 2.349550 +v -0.165627 0.805509 2.317034 +v -0.165627 0.806379 2.227041 +v -0.147144 0.985765 2.289954 +v -0.117999 0.987967 2.292308 +v -0.165627 0.805991 2.267262 +v -0.165627 0.855467 2.317517 +v -0.165183 0.945687 2.314986 +v -0.117232 0.944573 2.316757 +v -0.136952 1.567967 2.320525 +v -0.136952 0.720335 2.313030 +v -0.211344 0.805991 2.267262 +v -0.165627 0.650194 2.265755 +v -0.211344 0.650194 2.265755 +v -0.211344 0.855948 2.267745 +v -0.211344 0.805509 2.317034 +v -0.211344 0.855467 2.317517 +v -0.165627 0.649713 2.315527 +v -0.117232 0.649713 2.315527 +v -0.117232 0.650194 2.265755 +v -0.211344 0.649713 2.315527 +v -0.146461 0.985408 2.298749 +v -0.117232 0.986920 2.296790 +v -0.152245 1.043764 3.043450 +v -0.152245 1.712438 3.046384 +v 0.192843 1.712438 3.046383 +v 0.192843 1.043764 3.043450 +v 0.192843 0.937887 3.521686 +v -0.152245 0.937887 3.521686 +v -0.152244 1.649577 6.527719 +v 0.192843 1.649577 6.527719 +v 0.192843 0.025793 6.210012 +v 0.192843 0.009952 6.375108 +v -0.152244 0.009952 6.375108 +v -0.152244 0.025793 6.210012 +v -0.152245 0.235370 5.571983 +v -0.152245 0.455597 4.937619 +v 0.192843 0.455597 4.937619 +v 0.192843 0.235370 5.571983 +v 0.192843 1.680991 4.788768 +v -0.152245 1.680991 4.788768 +v 0.192843 1.712438 3.046383 +v -0.152245 1.712438 3.046384 +v -0.152245 0.654402 4.400762 +v -0.152245 0.821140 3.880699 +v 0.192843 0.821140 3.880699 +v 0.192843 0.654402 4.400762 +v -0.288967 0.897229 6.368784 +v -0.288967 0.423273 6.295212 +v 0.292823 0.823472 4.014390 +v 0.292823 0.674531 4.478942 +v 0.292823 1.022335 3.266504 +v 0.292823 1.619638 3.269124 +v 0.292823 1.591547 4.825535 +v 0.292823 1.563486 6.378878 +v 0.292823 1.256055 6.410403 +v 0.292823 0.898192 6.390715 +v 0.292823 0.415824 6.315836 +v 0.292823 0.098867 6.242557 +v 0.292823 0.113017 6.095082 +v 0.292823 0.300225 5.525153 +v 0.292823 0.496945 4.958498 +v 0.292823 0.927758 3.693695 +v -0.288967 0.926280 3.718801 +v -0.288967 0.823812 4.033902 +v -0.288967 0.677469 4.490353 +v -0.288967 0.502980 4.961545 +v -0.288967 0.309691 5.518318 +v -0.288967 0.125748 6.078308 +v -0.288967 0.111844 6.223210 +v -0.288967 1.248852 6.388129 +v -0.288967 1.550920 6.357154 +v -0.288967 1.578493 4.830902 +v -0.288967 1.606093 3.301634 +v -0.288967 1.019207 3.299059 +v 0.016027 0.547390 1.862002 +v 0.019306 0.561083 1.849339 +v 0.142395 0.757887 2.116556 +v 0.142395 0.660656 2.141604 +v -0.007293 0.547830 1.861861 +v 0.142395 0.850475 2.015535 +v 0.058021 0.829357 1.886027 +v -0.004014 0.561523 1.849198 +v 0.142395 0.853645 1.817587 +v 0.142395 0.852542 1.886433 +v 0.016027 0.547390 1.862002 +v 0.142395 0.856383 1.617575 +v 0.019306 0.561083 1.849339 +v 0.142395 0.761804 1.498257 +v 0.020285 0.576429 1.939407 +v 0.142395 0.665075 1.471334 +v 0.021168 0.639247 1.973528 +v 0.142395 0.567844 1.496382 +v 0.021222 0.593582 1.885335 +v 0.142395 0.475755 1.545882 +v 0.022105 0.656401 1.919456 +v 0.142395 0.465725 1.813838 +v 0.021638 0.746428 1.919562 +v 0.142395 0.467068 2.018012 +v 0.021638 0.745520 1.976290 +v 0.142395 0.563928 2.114681 +v -0.117211 0.657140 2.235394 +v 0.142678 0.657140 2.235394 +v 0.142678 0.817063 2.235753 +v -0.117211 0.817063 2.235753 +v 0.142678 0.876375 2.233910 +v -0.117211 0.876375 2.233910 +v 0.142678 0.881824 1.819352 +v -0.117211 0.881824 1.819352 +v 0.142678 0.886294 1.452513 +v -0.117211 0.886294 1.452514 +v 0.142678 0.833738 1.450712 +v -0.117211 0.833738 1.450712 +v 0.142678 0.666669 1.449340 +v -0.117211 0.666669 1.449340 +v 0.142678 0.448042 1.451277 +v -0.117211 0.448042 1.451277 +v 0.142678 0.448315 1.507656 +v -0.117211 0.448315 1.507656 +v 0.142678 0.436810 1.815049 +v -0.117211 0.436810 1.815049 +v 0.142678 0.438350 2.049274 +v -0.117211 0.438350 2.049274 +v 0.142678 0.423600 2.287596 +v -0.117211 0.423600 2.287596 +v -0.116928 0.856383 1.617575 +v -0.116928 0.853645 1.817588 +v -0.116928 0.665075 1.471334 +v -0.116928 0.761804 1.498257 +v -0.116928 0.757887 2.116556 +v -0.116928 0.660656 2.141604 +v -0.116928 0.852542 1.886434 +v -0.116928 0.851252 1.967026 +v -0.116928 0.850475 2.015535 +v -0.116928 0.467068 2.018012 +v -0.116928 0.465725 1.813838 +v -0.116928 0.563928 2.114681 +v -0.116928 0.567844 1.496382 +v -0.116928 0.475755 1.545882 +v 0.142395 0.851252 1.967026 +v 0.058021 0.828067 1.966620 +v -0.032555 0.829357 1.886027 +v -0.032555 0.828066 1.966620 +v 0.029331 0.825789 1.966584 +v 0.029331 0.827080 1.885991 +v 0.029331 0.827080 1.885991 +v 0.029331 0.825789 1.966584 +v -0.007293 0.547830 1.861861 +v -0.004014 0.561523 1.849198 +v -0.003075 0.576854 1.939137 +v -0.002139 0.594008 1.885066 +v -0.002192 0.639673 1.973258 +v -0.001255 0.656827 1.919186 +v -0.001728 0.745520 1.976290 +v -0.001728 0.746428 1.919562 +v -0.003864 0.827079 1.885991 +v -0.003864 0.825789 1.966584 +v -0.003864 0.825789 1.966584 +v -0.003864 0.827079 1.885991 +v -0.001728 0.746428 1.919562 +v -0.001728 0.745520 1.976290 +v -0.001255 0.656827 1.919186 +v -0.002192 0.639673 1.973258 +v 0.021638 0.745520 1.976290 +v 0.021638 0.746428 1.919562 +v 0.022105 0.656401 1.919456 +v 0.021222 0.593582 1.885335 +v -0.002139 0.594008 1.885066 +v 0.021168 0.639247 1.973528 +v -0.003075 0.576854 1.939137 +v -0.004014 0.561523 1.849198 +v -0.007293 0.547830 1.861861 +v 0.020285 0.576429 1.939407 +v 0.019306 0.561083 1.849339 +v 0.016027 0.547390 1.862002 +v 0.051594 1.678915 -4.269588 +v 0.051594 1.836478 -4.268064 +v 0.051594 1.834955 -4.110501 +v 0.051594 1.677392 -4.112025 +v -0.053713 1.834955 -4.110501 +v -0.053713 1.677392 -4.112025 +v -0.053713 1.836478 -4.268064 +v -0.053713 1.678915 -4.269588 +v 0.016492 1.678915 -4.269588 +v 0.016492 1.836478 -4.268064 +v -0.018610 1.678915 -4.269588 +v -0.060973 1.854414 -4.149395 +v -0.060973 1.854414 -4.149395 +v -0.041986 2.034586 -4.156837 +v -0.054175 2.034586 -4.156837 +v 0.051832 1.855505 -4.262195 +v 0.051832 1.855505 -4.262195 +v 0.045034 2.035545 -4.256041 +v 0.045034 2.035545 -4.256041 +v 0.051832 1.854414 -4.149395 +v 0.045034 2.034586 -4.156837 +v -0.018610 1.836478 -4.268064 +v -0.060973 1.855505 -4.262195 +v -0.023372 1.855505 -4.262195 +v 0.045034 2.202639 -4.144478 +v 0.011964 2.202639 -4.144478 +v -0.021105 2.202639 -4.144478 +v -0.041986 2.202639 -4.144478 +v -0.021105 2.035545 -4.256041 +v -0.054175 2.035545 -4.256041 +v -0.054175 2.203599 -4.243681 +v -0.021105 2.203599 -4.243681 +v -0.054175 2.035545 -4.256041 +v -0.054175 2.202639 -4.144478 +v -0.054175 2.203599 -4.243681 +v 0.051832 1.854414 -4.149395 +v 0.029869 2.034586 -4.156837 +v -0.060973 1.855505 -4.262195 +v -0.054175 2.406401 -4.124617 +v -0.054175 2.407361 -4.223821 +v -0.054175 2.305480 -4.233752 +v -0.054175 2.305480 -4.233752 +v -0.054175 2.407361 -4.223821 +v 0.029869 2.202639 -4.144478 +v 0.045034 2.406401 -4.124617 +v 0.045034 2.406401 -4.124617 +v 0.045034 2.203599 -4.243681 +v 0.045034 2.203599 -4.243681 +v 0.011964 2.406401 -4.124617 +v 0.045034 2.407361 -4.223821 +v 0.011964 2.407361 -4.223821 +v -0.054175 2.406401 -4.124617 +v 0.045034 2.407361 -4.223821 +v -0.021105 2.332433 -4.236758 +v -0.021105 2.407361 -4.223821 +v 0.045034 2.305480 -4.233752 +v 0.045034 2.305480 -4.233752 +v 0.029869 2.209161 -4.078815 +v 0.029869 2.041107 -4.091175 +v -0.041986 2.041107 -4.091175 +v -0.041986 2.209161 -4.078815 +v 0.045034 2.396599 -4.077962 +v 0.045034 2.391349 -4.052973 +v 0.045034 2.231575 -3.924966 +v 0.045034 2.221483 -4.001532 +v -0.054175 2.231575 -3.924966 +v -0.054175 2.356086 -4.024722 +v -0.054175 2.391349 -4.052973 +v -0.054175 2.221002 -4.005173 +v -0.054175 2.231575 -3.924966 +v -0.054175 2.391349 -4.052973 +v -0.054175 2.396848 -4.079151 +v 0.045034 2.391349 -4.052973 +v 0.045034 2.356086 -4.024722 +v 0.045034 2.231575 -3.924966 +v -0.054175 2.202639 -4.144478 +v -0.054175 2.231575 -3.924966 +v 0.045034 2.231575 -3.924966 +v 0.045034 2.221483 -4.001532 +v -0.021105 2.329133 -4.021715 +v -0.021105 2.391349 -4.052973 +v 0.011964 2.391349 -4.052973 +v 0.011964 2.406401 -4.124617 +v 0.045034 2.231575 -3.924966 +v 0.045034 2.221483 -4.001532 +v -0.054175 2.221002 -4.005173 +v -0.054175 2.231575 -3.924966 +v 0.045034 2.231575 -3.924966 +v 0.045034 2.202639 -4.144478 +v 0.032513 1.878508 -3.660935 +v 0.030422 1.883186 -3.755095 +v -0.044126 1.883495 -3.760848 +v -0.046111 1.878488 -3.662214 +v -0.041869 1.761449 -4.086932 +v -0.041869 1.836041 -4.086211 +v 0.032727 1.836041 -4.086211 +v 0.032727 1.761449 -4.086932 +v -0.041869 1.758805 -3.813482 +v -0.044356 1.830626 -3.814065 +v 0.033298 1.830621 -3.812788 +v 0.032727 1.758805 -3.813482 +v -0.041869 1.757366 -3.664618 +v -0.044356 1.829186 -3.665202 +v 0.033298 1.829182 -3.663924 +v 0.032727 1.757366 -3.664618 +v -0.041869 1.692998 -3.814118 +v -0.041869 1.691559 -3.665255 +v 0.032727 1.685764 -3.665311 +v 0.032727 1.687203 -3.814174 +v -0.021105 2.406401 -4.124617 +v 0.011964 2.329133 -4.021715 +v -0.021105 2.406401 -4.124617 +v 0.011964 2.203599 -4.243681 +v 0.011964 2.332433 -4.236758 +v 0.014230 1.855505 -4.262195 +v 0.011964 2.035545 -4.256041 +v 0.011964 2.231575 -3.924966 +v -0.021105 2.231575 -3.924966 +v 0.045034 2.034866 -4.154024 +v 0.045034 2.202919 -4.141664 +v -0.054175 2.034901 -4.153662 +v -0.054175 2.202955 -4.141303 +v 0.064394 1.969668 2.143186 +v 0.064394 1.862612 2.142151 +v 0.169845 1.862612 2.142151 +v 0.169845 1.969668 2.143186 +v -0.042667 1.969668 2.143186 +v -0.042667 1.862612 2.142151 +v -0.042667 1.857978 2.621482 +v -0.042667 1.965034 2.622517 +v -0.042667 1.970703 2.036130 +v -0.137368 1.970703 2.036130 +v -0.137368 1.969668 2.143186 +v 0.064394 1.970703 2.036130 +v 0.064394 1.863647 2.035095 +v 0.064394 1.876024 0.754992 +v 0.064394 1.983080 0.756027 +v -0.006980 1.862612 2.142151 +v -0.042667 1.863647 2.035095 +v -0.006980 1.863647 2.035095 +v 0.043659 1.969694 2.137586 +v 0.028707 1.970703 2.036130 +v 0.064394 1.984260 0.633930 +v 0.146686 1.983080 0.756027 +v 0.146686 1.984260 0.633930 +v -0.042667 1.876024 0.754992 +v -0.006980 1.876024 0.754992 +v 0.028707 1.983080 0.756027 +v -0.042667 1.983080 0.756027 +v 0.028707 1.877204 0.632895 +v 0.028707 1.984260 0.633930 +v 0.064394 1.877204 0.632895 +v -0.006980 1.984260 0.633930 +v -0.042667 1.984260 0.633930 +v -0.042667 2.167404 0.635701 +v -0.006980 2.167404 0.635701 +v -0.042667 1.877204 0.632895 +v -0.167188 1.877204 0.632895 +v -0.167188 1.984260 0.633930 +v -0.006980 1.877204 0.632895 +v 0.064394 2.245435 0.748596 +v 0.064394 2.194613 0.648864 +v 0.064394 2.268742 0.745889 +v 0.064394 2.166224 0.757797 +v 0.028707 2.166224 0.757797 +v -0.042667 2.166224 0.757797 +v 0.064394 2.167404 0.635701 +v 0.028707 2.268742 0.745889 +v 0.028707 2.188427 0.645871 +v 0.049297 2.273742 0.789901 +v 0.049297 2.257009 0.791845 +v -0.042667 2.188427 0.645871 +v -0.042667 2.245435 0.748596 +v -0.042667 2.268742 0.745889 +v -0.001947 2.273742 0.789901 +v -0.027569 2.273742 0.789901 +v -0.087521 2.381042 2.132420 +v -0.021931 2.381042 2.132420 +v 0.049297 2.200138 0.798452 +v 0.023675 2.200138 0.798452 +v -0.027569 2.200138 0.798452 +v -0.027569 2.257009 0.791845 +v -0.006980 2.268742 0.745889 +v -0.087521 2.142312 2.421078 +v -0.087521 2.146705 2.199071 +v -0.087521 2.018169 2.196527 +v -0.087521 2.013775 2.418534 +v 0.109248 2.381042 2.132420 +v 0.109248 2.338206 2.137396 +v 0.109248 2.192621 2.154307 +v 0.043659 2.192621 2.154307 +v -0.087521 2.192621 2.154307 +v -0.087521 2.338206 2.137396 +v 0.043659 1.964717 2.419892 +v 0.109248 1.964717 2.419892 +v 0.109248 1.959092 2.758076 +v 0.043659 1.959092 2.758076 +v 0.109248 2.146705 2.199071 +v 0.109248 2.142312 2.421078 +v 0.109248 2.013775 2.418534 +v 0.109248 2.018169 2.196527 +v 0.109248 1.969694 2.137586 +v 0.109248 2.182596 2.423408 +v 0.043659 2.146705 2.199071 +v 0.109248 2.008151 2.756719 +v -0.087521 2.008151 2.756719 +v 0.043659 2.018169 2.196527 +v 0.109248 2.367172 2.685050 +v 0.109248 2.421214 2.685298 +v 0.109248 2.331844 2.774648 +v 0.109248 2.299578 2.773926 +v -0.021931 2.421214 2.685298 +v -0.087521 2.421214 2.685298 +v -0.087521 2.331844 2.774648 +v -0.021931 2.331844 2.774648 +v -0.087521 2.367172 2.685050 +v -0.087521 2.183505 2.684207 +v -0.087521 2.189923 2.771473 +v -0.087521 2.299578 2.773926 +v -0.021931 2.299578 2.773926 +v -0.087521 2.368289 2.441457 +v -0.087521 2.182552 2.433985 +v -0.021931 2.422332 2.441705 +v -0.087521 2.422332 2.441705 +v 0.109248 2.368289 2.441457 +v 0.109248 2.422332 2.441705 +v 0.043659 2.183505 2.684207 +v 0.109248 2.183505 2.684207 +v 0.109248 2.189923 2.771473 +v 0.043659 2.189923 2.771473 +v -0.021931 2.400653 2.424308 +v -0.087521 2.400653 2.424308 +v -0.087521 2.351079 2.424104 +v 0.043659 2.182596 2.423408 +v 0.109248 2.184623 2.440614 +v 0.043659 2.184623 2.440614 +v 0.109248 2.351079 2.424104 +v 0.109248 2.400653 2.424308 +v 0.028707 1.862612 2.142151 +v 0.064394 1.857978 2.621482 +v 0.028707 1.857978 2.621482 +v -0.021931 1.969694 2.137586 +v -0.006980 1.965034 2.622517 +v 0.064394 1.965034 2.622517 +v -0.006980 1.854925 2.932631 +v -0.006980 1.956064 2.897519 +v -0.042667 1.956064 2.897519 +v -0.042667 1.854925 2.932631 +v -0.087521 1.964717 2.419892 +v -0.087521 1.959092 2.758076 +v 0.064394 1.956064 2.897519 +v 0.064394 1.854925 2.932631 +v 0.028707 1.854925 2.932631 +v -0.021931 2.182552 2.433985 +v -0.087521 2.176971 2.761593 +v -0.021931 2.176971 2.761593 +v 0.109248 2.176971 2.761593 +v 0.109248 2.136687 2.759263 +v 0.109248 1.956173 2.897150 +v 0.028707 1.956064 2.897519 +v -0.087521 2.136687 2.759263 +v -0.021931 2.136687 2.759263 +v -0.087521 2.147398 2.830651 +v -0.021931 2.147398 2.830651 +v -0.087521 1.969694 2.137586 +v -0.021931 2.008421 2.877196 +v -0.087521 2.008421 2.877196 +v -0.087521 1.956173 2.897150 +v 0.109248 2.008421 2.877196 +v 0.109248 2.147398 2.830651 +v 0.043659 2.147398 2.830651 +v 0.043659 2.008421 2.877196 +v -0.021931 2.018169 2.196527 +v 0.043659 2.136687 2.759263 +v 0.043659 2.176971 2.761593 +v -0.021931 1.959092 2.758076 +v -0.006980 1.857978 2.621482 +v 0.028707 1.965034 2.622517 +v -0.021931 1.964717 2.419892 +v 0.043659 2.381042 2.132420 +v 0.043659 2.400610 2.434885 +v -0.021931 2.183505 2.684207 +v 0.043659 2.422332 2.441705 +v -0.021931 2.189923 2.771473 +v 0.043659 2.421214 2.685298 +v 0.043659 2.331844 2.774648 +v 0.043659 2.299578 2.773926 +v -0.021931 2.146705 2.199071 +v -0.021931 2.192621 2.154307 +v -0.001947 2.200138 0.798452 +v 0.023675 2.273742 0.789901 +v -0.006980 2.166224 0.757797 +v -0.021005 2.297669 2.648355 +v 0.042733 2.297669 2.648355 +v -0.006980 2.188427 0.645871 +v -0.006980 1.983080 0.756027 +v 0.028707 1.876024 0.754992 +v 0.028707 2.167404 0.635701 +v -0.006980 1.970703 2.036130 +v 0.028707 1.863647 2.035095 +v 0.043070 2.298365 2.694150 +v -0.137368 1.862612 2.142151 +v -0.137368 1.863647 2.035095 +v 0.169845 1.863647 2.035095 +v 0.169845 1.970703 2.036130 +v 0.146686 1.876024 0.754992 +v 0.146686 1.877204 0.632895 +v -0.167188 1.876024 0.754992 +v -0.167188 1.983080 0.756027 +v 0.010262 2.021519 2.589287 +v 0.010262 2.020119 2.734168 +v -0.092189 2.020529 2.691733 +v 0.010262 2.131944 2.590354 +v -0.092189 2.130953 2.692801 +v 0.010262 2.130543 2.735235 +v -0.134626 2.021519 2.589287 +v -0.134626 2.131944 2.590354 +v -0.092189 2.022510 2.486840 +v -0.092189 2.132934 2.487908 +v 0.010262 2.022920 2.444405 +v 0.010262 2.133344 2.445473 +v 0.112714 2.022510 2.486840 +v 0.112714 2.132934 2.487908 +v 0.155150 2.021519 2.589287 +v 0.155150 2.131944 2.590354 +v 0.112714 2.020529 2.691733 +v 0.112714 2.130953 2.692801 +v -0.021343 2.298365 2.694150 +v 0.037213 2.320070 2.690015 +v -0.015486 2.320070 2.690015 +v 0.036937 2.319501 2.652549 +v -0.014876 2.327471 2.660462 +v 0.010591 2.316989 2.661640 +v -0.012048 2.332392 2.678925 +v 0.010591 2.319224 2.681524 +v -0.021425 2.352902 2.658721 +v -0.021425 2.354889 2.676396 +v -0.012048 2.377386 2.673867 +v -0.012048 2.375399 2.656192 +v 0.010591 2.386705 2.672819 +v 0.010591 2.388567 2.653594 +v 0.036057 2.380320 2.674655 +v 0.033229 2.375399 2.656192 +v 0.042607 2.354889 2.676396 +v 0.046606 2.352778 2.657617 +v 0.033229 2.332392 2.678925 +v 0.107330 2.208933 2.596382 +v 0.107060 2.218142 2.557761 +v 0.137424 2.218003 2.572124 +v 0.106843 2.243196 2.526961 +v 0.106723 2.279133 2.510081 +v 0.174952 2.278821 2.542352 +v 0.161558 2.242946 2.552840 +v 0.106723 2.318835 2.510465 +v 0.106843 2.354440 2.528037 +v 0.161558 2.354189 2.553916 +v 0.174952 2.318524 2.542736 +v 0.107060 2.378894 2.559315 +v 0.107330 2.387354 2.598107 +v 0.137424 2.378755 2.573678 +v 0.192260 2.317813 2.616197 +v 0.192260 2.278111 2.615814 +v 0.145127 2.378439 2.606371 +v 0.175438 2.353620 2.612828 +v 0.145127 2.217687 2.604817 +v 0.175438 2.242377 2.611752 +v 0.124368 2.217432 2.631223 +v 0.145614 2.277537 2.675148 +v 0.138032 2.241916 2.659334 +v 0.138032 2.353160 2.660410 +v 0.145614 2.317240 2.675532 +v 0.124368 2.378183 2.632777 +v 0.090779 2.217430 2.631458 +v 0.070140 2.277532 2.675675 +v 0.077506 2.241912 2.659757 +v 0.077506 2.353156 2.660832 +v 0.070140 2.317235 2.676059 +v 0.090779 2.378181 2.633012 +v 0.288283 1.507385 2.784997 +v 0.302085 1.508212 2.839944 +v 0.230214 1.516211 2.857877 +v 0.216412 1.515384 2.802931 +v 0.191263 1.579106 2.866714 +v 0.177461 1.578279 2.811768 +v 0.214563 1.649536 2.859801 +v 0.200761 1.648709 2.804855 +v 0.282569 1.674465 2.842344 +v 0.268767 1.673638 2.787397 +v 0.344071 1.635122 2.827487 +v 0.330269 1.634295 2.772541 +v 0.352756 1.561132 2.826420 +v 0.338954 1.560305 2.771473 +v 0.027960 1.486830 1.817147 +v -0.043911 1.494829 1.835080 +v -0.082862 1.557724 1.843918 +v -0.059561 1.628153 1.837005 +v 0.008445 1.653082 1.819547 +v 0.069946 1.613739 1.804691 +v 0.078631 1.539750 1.803623 +v 0.300826 1.568402 2.777984 +v 0.269088 1.535255 2.786455 +v 0.295386 1.614745 2.778653 +v 0.256864 1.639388 2.787958 +v 0.214269 1.623773 2.798893 +v 0.199675 1.579660 2.803223 +v 0.224072 1.540266 2.797688 +v 0.241280 1.499612 2.666382 +v 0.169409 1.507611 2.684315 +v 0.130459 1.570506 2.693152 +v 0.153759 1.640935 2.686239 +v 0.221765 1.665865 2.668782 +v 0.283266 1.626521 2.653925 +v 0.291951 1.552532 2.652858 +v 0.239544 1.532166 2.670439 +v 0.194527 1.537176 2.681670 +v 0.170131 1.576570 2.687206 +v 0.184725 1.620684 2.682875 +v 0.227320 1.636298 2.671942 +v 0.265841 1.611656 2.662636 +v 0.271281 1.565312 2.661968 +v 0.181794 1.572812 1.882358 +v 0.177507 1.551091 1.881797 +v 0.177507 1.550996 1.891630 +v 0.181794 1.572717 1.892192 +v 0.181794 1.575243 1.630875 +v 0.177507 1.553522 1.630314 +v 0.177507 1.551566 1.832629 +v 0.181794 1.573287 1.833191 +v 0.181794 1.579350 1.206084 +v 0.177507 1.557629 1.205523 +v 0.177507 1.557129 1.257250 +v 0.181794 1.578850 1.257811 +v 0.176907 1.641480 1.206685 +v 0.178707 1.627872 1.206553 +v 0.178707 1.627372 1.258281 +v 0.176907 1.640980 1.258412 +v 0.176907 1.637374 1.631476 +v 0.178707 1.623765 1.631345 +v 0.178707 1.621809 1.833660 +v 0.176907 1.635418 1.833792 +v 0.176907 1.634942 1.882959 +v 0.178707 1.621333 1.882828 +v 0.178707 1.621238 1.892661 +v 0.176907 1.634847 1.892793 +v 0.176907 1.639177 1.444944 +v 0.178707 1.625568 1.444813 +v 0.177507 1.555325 1.443782 +v 0.181794 1.577047 1.444343 +v 0.178707 1.627988 1.194507 +v 0.181794 1.579466 1.194038 +v 0.176907 1.641597 1.194639 +v 0.177507 1.557745 1.193477 +v 0.175675 1.644729 1.833882 +v 0.175675 1.644253 1.883049 +v 0.175675 1.650292 1.258502 +v 0.175675 1.648488 1.445034 +v 0.175675 1.646685 1.631566 +v 0.175675 1.650792 1.206775 +v 0.186751 1.573467 1.882365 +v 0.186751 1.573372 1.892198 +v 0.181423 1.547886 1.891600 +v 0.181423 1.547982 1.881767 +v 0.186751 1.575899 1.630882 +v 0.186751 1.573943 1.833197 +v 0.181423 1.548457 1.832599 +v 0.181423 1.550413 1.630284 +v 0.186751 1.580006 1.206090 +v 0.186751 1.579506 1.257818 +v 0.181423 1.554020 1.257220 +v 0.181423 1.554520 1.205493 +v 0.181864 1.642136 1.206691 +v 0.181864 1.641636 1.258418 +v 0.183664 1.628027 1.258287 +v 0.183664 1.628527 1.206560 +v 0.181864 1.638029 1.631482 +v 0.181864 1.636073 1.833798 +v 0.183664 1.622464 1.833666 +v 0.183664 1.624420 1.631351 +v 0.181864 1.635598 1.882965 +v 0.181864 1.635503 1.892799 +v 0.183664 1.621894 1.892667 +v 0.183664 1.621989 1.882834 +v 0.181864 1.639833 1.444950 +v 0.183664 1.626224 1.444819 +v 0.186751 1.577702 1.444350 +v 0.181423 1.552216 1.443752 +v 0.183664 1.628644 1.194514 +v 0.186751 1.580122 1.194044 +v 0.181864 1.642253 1.194645 +v 0.181423 1.554636 1.193447 +v 0.180632 1.645385 1.833888 +v 0.180632 1.644909 1.883055 +v 0.180632 1.650947 1.258508 +v 0.180632 1.649144 1.445040 +v 0.180632 1.647340 1.631572 +v 0.180632 1.651447 1.206781 +v -0.013058 1.760041 -6.289080 +v -0.079416 1.742262 -6.289251 +v 0.101877 1.693688 -6.289721 +v 0.053300 1.742262 -6.289251 +v -0.013058 1.494624 -6.291646 +v 0.053300 1.512403 -6.291474 +v -0.127993 1.693688 -6.289721 +v -0.139130 1.652125 -6.290123 +v -0.079416 1.512403 -6.291474 +v 0.106518 1.593696 -6.290688 +v 0.114186 1.647750 -6.290165 +v -0.127993 1.560979 -6.291004 +v -0.137723 1.612007 -6.290511 +v 0.044758 1.727468 -6.289394 +v -0.013058 1.742959 -6.289245 +v 0.087083 1.685145 -6.289804 +v 0.090698 1.599656 -6.290630 +v 0.097376 1.646731 -6.290175 +v -0.013058 1.511706 -6.291481 +v 0.042944 1.526711 -6.291336 +v -0.070874 1.527197 -6.291331 +v -0.112735 1.569057 -6.290926 +v -0.121277 1.613853 -6.290493 +v -0.070874 1.727468 -6.289394 +v -0.113199 1.685145 -6.289804 +v -0.122553 1.650236 -6.290141 +v -0.066341 1.711473 -5.738770 +v -0.015398 1.725124 -5.738637 +v -0.103634 1.572299 -5.740115 +v -0.111104 1.611475 -5.739737 +v -0.112185 1.642274 -5.739439 +v -0.103634 1.674182 -5.739130 +v 0.035546 1.711473 -5.738770 +v 0.072839 1.674182 -5.739130 +v 0.082290 1.638914 -5.739471 +v 0.076403 1.597417 -5.739872 +v 0.035546 1.535007 -5.740476 +v -0.015398 1.521358 -5.740607 +v -0.066341 1.535007 -5.740476 +v 0.044758 1.727468 -6.289394 +v -0.013058 1.742959 -6.289245 +v 0.087083 1.685145 -6.289804 +v 0.090698 1.599656 -6.290630 +v 0.097376 1.646731 -6.290175 +v -0.013058 1.511706 -6.291481 +v 0.042944 1.526711 -6.291336 +v -0.070874 1.527197 -6.291331 +v -0.112735 1.569057 -6.290926 +v -0.121277 1.613853 -6.290493 +v -0.070874 1.727468 -6.289394 +v -0.113199 1.685145 -6.289804 +v -0.122553 1.650238 -6.290141 +v -0.066341 1.711473 -5.738770 +v -0.015398 1.725124 -5.738637 +v -0.103634 1.572299 -5.740115 +v -0.111104 1.611475 -5.739737 +v -0.112185 1.642274 -5.739439 +v -0.103634 1.674182 -5.739130 +v 0.035546 1.711473 -5.738770 +v 0.072839 1.674182 -5.739130 +v 0.082290 1.638914 -5.739471 +v 0.076403 1.597417 -5.739872 +v 0.035546 1.535007 -5.740476 +v -0.015398 1.521358 -5.740607 +v -0.066341 1.535007 -5.740476 +v -0.080983 1.739653 -5.738497 +v -0.013058 1.757851 -5.738321 +v -0.130708 1.554088 -5.740291 +v -0.140668 1.606321 -5.739786 +v -0.142108 1.647385 -5.739389 +v -0.130708 1.689929 -5.738977 +v 0.054867 1.739653 -5.738497 +v 0.104592 1.689929 -5.738977 +v 0.117192 1.642908 -5.739432 +v 0.109342 1.587577 -5.739967 +v 0.054867 1.504364 -5.740772 +v -0.013058 1.486166 -5.740948 +v -0.080983 1.504364 -5.740772 +v -0.112639 1.564113 -5.698238 +v -0.070551 1.522027 -5.698646 +v 0.044435 1.721179 -5.696720 +v -0.013058 1.736583 -5.696571 +v -0.070551 1.721179 -5.696720 +v -0.112639 1.679093 -5.697127 +v 0.090544 1.592458 -5.697964 +v 0.097188 1.639292 -5.697512 +v -0.013058 1.506621 -5.698794 +v -0.122289 1.643082 -5.697475 +v 0.044435 1.522027 -5.698646 +v 0.086522 1.679093 -5.697127 +v -0.121069 1.608325 -5.697811 +v -0.113470 1.595189 -4.242433 +v -0.114603 1.627501 -4.242120 +v -0.110517 1.626811 -4.253918 +v -0.109429 1.595799 -4.254218 +v -0.064355 1.518801 -4.254962 +v -0.101907 1.556352 -4.254600 +v -0.013059 1.710235 -4.253111 +v 0.038238 1.696491 -4.253244 +v -0.101907 1.658941 -4.253607 +v -0.064355 1.696491 -4.253244 +v 0.085306 1.623429 -4.253951 +v 0.079378 1.581643 -4.254355 +v -0.013059 1.505057 -4.255095 +v 0.038238 1.518801 -4.254962 +v 0.075790 1.658941 -4.253607 +v -0.066506 1.700102 -4.241418 +v -0.013059 1.714422 -4.241280 +v 0.040389 1.700102 -4.241418 +v 0.079515 1.660977 -4.241796 +v 0.040389 1.514963 -4.243208 +v -0.013059 1.500642 -4.243347 +v -0.105632 1.660977 -4.241796 +v -0.066506 1.514963 -4.243208 +v 0.089430 1.623976 -4.242154 +v 0.083254 1.580439 -4.242575 +v -0.105632 1.554087 -4.242830 +v -0.065400 1.515808 -4.132485 +v -0.103717 1.554122 -4.132114 +v -0.013059 1.711140 -4.130596 +v 0.039283 1.697116 -4.130732 +v -0.103717 1.658800 -4.131102 +v -0.065400 1.697116 -4.130732 +v 0.087309 1.622566 -4.131453 +v 0.081261 1.579929 -4.131865 +v -0.013059 1.501784 -4.132620 +v -0.112502 1.626017 -4.131419 +v 0.039283 1.515808 -4.132485 +v 0.077600 1.658800 -4.131102 +v -0.062560 1.692112 -4.121951 +v -0.013059 1.705375 -4.121823 +v 0.036443 1.692112 -4.121951 +v 0.072681 1.655875 -4.122302 +v 0.036443 1.520641 -4.123609 +v -0.013059 1.507378 -4.123737 +v -0.107106 1.624871 -4.122602 +v -0.098798 1.655875 -4.122302 +v -0.062560 1.520641 -4.123609 +v 0.081864 1.621607 -4.122633 +v 0.076143 1.581283 -4.123023 +v -0.098798 1.556877 -4.123259 +v -0.106057 1.594944 -4.122890 +v -0.111392 1.594373 -4.131725 +v -0.180496 1.276744 -3.709595 +v -0.013059 1.231882 -3.710029 +v 0.290977 1.481865 -3.707612 +v 0.310479 1.618257 -3.706294 +v -0.180496 1.856736 -3.703987 +v -0.303069 1.734170 -3.705173 +v 0.154378 1.856737 -3.703987 +v -0.013059 1.901599 -3.703554 +v -0.303069 1.399311 -3.708410 +v 0.154378 1.276744 -3.709595 +v 0.282936 1.473118 -3.707697 +v 0.276951 1.734170 -3.705173 +v -0.331171 1.629296 -3.706187 +v -0.063124 1.516527 -3.799040 +v -0.099774 1.553176 -3.798685 +v -0.013059 1.703364 -3.797233 +v 0.037006 1.689950 -3.797363 +v -0.099774 1.653301 -3.797717 +v -0.063124 1.689950 -3.797363 +v 0.082944 1.618642 -3.798053 +v 0.077158 1.577860 -3.798446 +v -0.013059 1.503113 -3.799170 +v -0.108177 1.621943 -3.798021 +v 0.037006 1.516527 -3.799040 +v 0.073656 1.653301 -3.797718 +v -0.107115 1.591676 -3.798313 +v -0.327621 1.528072 -3.707165 +v -0.331320 1.534015 -3.707108 +v 0.075446 1.575244 -3.798472 +v -0.202174 1.172312 0.084620 +v 0.012707 1.114738 0.084064 +v 0.012707 1.223542 0.117762 +v -0.147611 1.266498 0.118177 +v 0.428145 1.610595 0.088858 +v 0.403116 1.435555 0.087165 +v -0.359479 1.759351 0.090296 +v -0.202174 1.916648 0.091817 +v 0.012707 1.974223 0.092373 +v 0.227588 1.916648 0.091817 +v -0.359479 1.329609 0.086141 +v 0.392573 1.424329 0.087057 +v 0.227589 1.172312 0.084620 +v 0.384892 1.759351 0.090296 +v -0.395543 1.624762 0.088995 +v -0.395512 1.502481 0.087813 +v -0.289566 1.512830 0.120559 +v -0.291880 1.604061 0.121441 +v 0.320127 1.593491 0.121339 +v 0.301600 1.462898 0.120076 +v -0.264973 1.704476 0.122412 +v -0.147611 1.821831 0.123546 +v 0.012707 1.864787 0.123962 +v 0.173026 1.821831 0.123546 +v -0.264973 1.383854 0.119312 +v 0.296118 1.454522 0.119995 +v 0.290387 1.704476 0.122412 +v 0.173026 1.266498 0.118177 +v 0.012707 1.169546 0.336860 +v -0.173550 1.219450 0.337343 +v -0.338471 1.505638 0.340110 +v -0.344450 1.599349 0.341016 +v -0.341160 1.611629 0.341134 +v -0.237064 1.581918 0.361622 +v -0.234763 1.590505 0.361705 +v 0.369865 1.599349 0.341016 +v 0.348341 1.447626 0.339549 +v -0.309899 1.728289 0.342262 +v -0.173550 1.864632 0.343580 +v 0.012707 1.914538 0.344063 +v 0.198964 1.864632 0.343580 +v -0.309899 1.355793 0.338661 +v 0.341971 1.437896 0.339455 +v 0.335314 1.728289 0.342262 +v 0.198964 1.219450 0.337343 +v -0.232883 1.516382 0.360988 +v 0.012707 1.281343 0.358716 +v -0.117548 1.316242 0.359053 +v 0.262479 1.581918 0.361622 +v 0.247426 1.475813 0.360596 +v -0.212901 1.672090 0.362494 +v -0.117548 1.767439 0.363416 +v 0.012707 1.802339 0.363753 +v 0.142962 1.767439 0.363416 +v -0.212901 1.411592 0.359975 +v 0.242972 1.469008 0.360530 +v 0.238316 1.672090 0.362494 +v -0.337211 1.499027 0.340046 +v -0.232002 1.511759 0.360944 +v 0.142962 1.316242 0.359053 +v 0.244253 1.649934 0.362279 +v 0.343803 1.696609 0.341956 +v 0.368371 1.604925 0.341069 +v 0.261434 1.585817 0.361660 +v 0.350093 1.673134 0.341729 +v 0.248652 1.633518 0.362121 +v 0.257449 1.600686 0.361803 +v 0.362673 1.626186 0.341275 +v 0.356383 1.649660 0.341502 +v 0.253051 1.617102 0.361962 +v -0.212901 1.671165 0.458115 +v -0.234763 1.589581 0.457326 +v -0.150483 1.592276 0.271604 +v -0.135944 1.646535 0.272128 +v -0.232883 1.515458 0.456610 +v -0.237064 1.580993 0.457243 +v 0.238316 1.671165 0.458115 +v 0.244253 1.649009 0.457901 +v -0.117548 1.315318 0.454675 +v 0.012707 1.280418 0.454337 +v 0.014100 1.386664 0.269616 +v -0.072528 1.409875 0.269840 +v 0.262479 1.580993 0.457243 +v 0.247426 1.474888 0.456218 +v -0.117548 1.766515 0.459037 +v 0.012707 1.801414 0.459375 +v 0.142962 1.766515 0.459037 +v -0.212901 1.410667 0.455597 +v 0.242972 1.468084 0.456152 +v 0.142962 1.315318 0.454675 +v 0.180214 1.586565 0.271549 +v 0.170203 1.515998 0.270866 +v -0.072528 1.709948 0.272741 +v 0.014100 1.733159 0.272966 +v 0.100728 1.709948 0.272741 +v -0.135944 1.473287 0.270453 +v 0.167240 1.511474 0.270823 +v 0.164144 1.646535 0.272128 +v -0.232002 1.510834 0.456565 +v -0.148646 1.539905 0.271097 +v 0.100728 1.409875 0.269840 +v -0.152013 1.586565 0.271549 +v 0.168092 1.631800 0.271986 +v -0.149233 1.542980 0.271127 +v 0.261434 1.584893 0.457281 +v 0.179519 1.589158 0.271574 +v 0.171018 1.620883 0.271880 +v 0.248652 1.632594 0.457742 +v 0.257449 1.599761 0.457425 +v 0.176869 1.599047 0.271669 +v 0.253051 1.616178 0.457584 +v 0.173943 1.601835 0.271696 +v 0.044032 -0.281581 2.653725 +v 0.103907 -0.281581 2.653725 +v -0.069998 0.116802 2.426650 +v 0.042126 0.116802 2.426650 +v 0.098188 0.116802 2.426650 +v -0.068462 0.236090 2.371759 +v -0.061428 0.727369 2.149053 +v 0.041614 0.236090 2.371759 +v 0.096653 0.236090 2.371759 +v 0.089619 0.727369 2.149053 +v 0.039270 0.727369 2.149053 +v -0.076873 -0.381316 2.633466 +v -0.041226 -0.451792 2.698090 +v -0.004345 -0.451792 2.698090 +v 0.044418 -0.381316 2.633466 +v -0.076533 0.704381 2.684944 +v -0.084974 0.367866 2.901927 +v 0.057443 0.751341 1.513957 +v 0.089619 0.727369 2.149053 +v 0.096653 0.236090 2.371759 +v 0.142395 0.856383 1.617575 +v 0.165142 0.712044 2.506314 +v 0.104723 0.704381 2.684944 +v 0.113164 0.367866 2.901927 +v 0.179210 0.323941 2.725204 +v -0.136952 0.719706 2.327683 +v -0.061428 0.727369 2.149053 +v -0.068462 0.236090 2.371759 +v -0.151020 0.280015 2.548481 +v 0.105063 -0.381316 2.633466 +v 0.069416 -0.451792 2.698090 +v 0.032535 -0.451792 2.698090 +v 0.096653 0.236090 2.371759 +v 0.041614 0.236090 2.371759 +v -0.068462 0.236090 2.371759 +v 0.097477 0.151311 2.325201 +v -0.086817 0.259436 2.971379 +v 0.098188 0.116802 2.426650 +v 0.057406 0.838800 1.623579 +v 0.115007 0.259436 2.971379 +v 0.182282 0.211892 2.789803 +v -0.069998 0.116802 2.426650 +v -0.154092 0.164347 2.608227 +v -0.093679 -0.144299 3.229982 +v 0.103907 -0.281581 2.653725 +v 0.142395 0.852542 1.886433 +v 0.121869 -0.144299 3.229982 +v 0.193719 -0.190060 3.037896 +v -0.075717 -0.281581 2.653725 +v -0.165529 -0.235820 2.845811 +v -0.165529 -0.190060 3.037896 +v 0.041889 0.151311 2.325201 +v 0.193719 -0.235820 2.845811 +v -0.069287 0.151311 2.325201 +v -0.154092 0.211892 2.789803 +v 0.182282 0.164347 2.608227 +v 0.098188 0.116802 2.426650 +v 0.042126 0.116802 2.426650 +v -0.151020 0.323941 2.725204 +v 0.179210 0.280015 2.548481 +v -0.136952 0.712044 2.506314 +v 0.165142 0.719706 2.327683 +v -0.069998 0.116802 2.426650 +v 0.103907 -0.281581 2.653725 +v 0.142395 0.853645 1.817587 +v 0.044032 -0.281581 2.653725 +v 0.058021 0.830456 1.817255 +v -0.075717 -0.281581 2.653725 +v 0.058021 0.829357 1.886027 +v 0.142395 0.850475 2.015535 +v -0.165529 -0.235820 2.845811 +v -0.165529 -0.190060 3.037896 +v -0.167841 -0.277715 3.065995 +v 0.193719 -0.235820 2.845811 +v 0.196031 -0.329516 2.849731 +v -0.154092 0.211892 2.789803 +v 0.182282 0.164347 2.608227 +v -0.152668 0.256887 2.734533 +v 0.180858 0.204099 2.529867 +v -0.151020 0.323941 2.725204 +v 0.179210 0.280015 2.548481 +v 0.124737 -0.401702 2.909541 +v -0.096547 -0.351613 3.120992 +v 0.057384 0.833378 2.008721 +v 0.142395 0.660656 2.141604 +v 0.142395 0.757887 2.116556 +v 0.057482 0.747999 2.100130 +v 0.058887 0.660929 2.112417 +v -0.075717 -0.281581 2.653725 +v -0.015842 -0.281581 2.653725 +v -0.013936 0.116802 2.426650 +v -0.013424 0.236090 2.371759 +v -0.011079 0.727369 2.149053 +v -0.015842 -0.281581 2.653725 +v -0.016228 -0.381316 2.633466 +v -0.013936 0.116802 2.426650 +v -0.013699 0.151311 2.325201 +v -0.013424 0.236090 2.371759 +v 0.058073 0.489282 1.814222 +v 0.142395 0.465725 1.813838 +v 0.057353 0.483818 2.010995 +v 0.142395 0.467068 2.018012 +v 0.057530 0.573790 2.097813 +v 0.142395 0.563928 2.114681 +v -0.116928 0.856383 1.617575 +v -0.116928 0.853645 1.817588 +v -0.116928 0.665075 1.471334 +v -0.116928 0.761804 1.498257 +v -0.116928 0.757887 2.116556 +v -0.116928 0.660656 2.141604 +v -0.116928 0.852542 1.886434 +v -0.116928 0.851252 1.967026 +v -0.116928 0.850475 2.015535 +v -0.116928 0.467068 2.018012 +v -0.116928 0.465725 1.813838 +v -0.116928 0.563928 2.114681 +v -0.116928 0.567844 1.496382 +v -0.116928 0.475755 1.545882 +v 0.142395 0.851252 1.967026 +v 0.058021 0.828067 1.966620 +v -0.032555 0.829357 1.886027 +v -0.032555 0.828066 1.966620 +v 0.029331 0.825789 1.966584 +v 0.029331 0.827080 1.885991 +v -0.031917 0.833378 2.008721 +v -0.033420 0.660929 2.112417 +v -0.032063 0.573790 2.097813 +v -0.031886 0.483818 2.010995 +v -0.032606 0.489282 1.814222 +v -0.031746 0.490206 1.554891 +v -0.032287 0.575638 1.516128 +v -0.033412 0.664812 1.500463 +v -0.031976 0.751341 1.513957 +v -0.031940 0.838800 1.623579 +v -0.032555 0.830456 1.817256 +v -0.032016 0.747999 2.100130 +v -0.003864 0.825789 1.966584 +v -0.003864 0.827079 1.885991 +v 0.288283 1.507385 2.784997 +v 0.302085 1.508212 2.839944 +v 0.230214 1.516211 2.857877 +v 0.216412 1.515384 2.802931 +v 0.191263 1.579106 2.866714 +v 0.177461 1.578279 2.811768 +v 0.214563 1.649536 2.859801 +v 0.200761 1.648709 2.804855 +v 0.282569 1.674465 2.842344 +v 0.268767 1.673638 2.787397 +v 0.344071 1.635122 2.827487 +v 0.330269 1.634295 2.772541 +v 0.352756 1.561132 2.826420 +v 0.338954 1.560305 2.771473 +v 0.027960 1.486830 1.817147 +v -0.043911 1.494829 1.835080 +v -0.082862 1.557724 1.843918 +v -0.059561 1.628153 1.837005 +v 0.008445 1.653082 1.819547 +v 0.069946 1.613739 1.804691 +v 0.078631 1.539750 1.803623 +v 0.300826 1.568402 2.777984 +v 0.269088 1.535255 2.786455 +v 0.295386 1.614745 2.778653 +v 0.256864 1.639388 2.787958 +v 0.214269 1.623773 2.798893 +v 0.199675 1.579660 2.803223 +v 0.224072 1.540266 2.797688 +v 0.241280 1.499612 2.666382 +v 0.169409 1.507611 2.684315 +v 0.130459 1.570506 2.693152 +v 0.153759 1.640935 2.686239 +v 0.221765 1.665865 2.668782 +v 0.283266 1.626521 2.653925 +v 0.291951 1.552532 2.652858 +v 0.239544 1.532166 2.670439 +v 0.194527 1.537176 2.681670 +v 0.170131 1.576570 2.687206 +v 0.184725 1.620684 2.682875 +v 0.227320 1.636298 2.671942 +v 0.265841 1.611656 2.662636 +v 0.271281 1.565312 2.661968 +v 0.010262 2.020119 2.734168 +v -0.092189 2.020529 2.691733 +v -0.092189 2.130953 2.692801 +v 0.010262 2.130543 2.735235 +v -0.134626 2.021519 2.589287 +v -0.134626 2.131944 2.590354 +v -0.092189 2.022510 2.486840 +v -0.092189 2.132934 2.487908 +v 0.010262 2.022920 2.444405 +v 0.010262 2.133344 2.445473 +v 0.112714 2.022510 2.486840 +v 0.112714 2.132934 2.487908 +v 0.155150 2.021519 2.589287 +v 0.155150 2.131944 2.590354 +v 0.112714 2.020529 2.691733 +v 0.112714 2.130953 2.692801 +v 0.192843 1.305413 6.563009 +v 0.192843 1.649577 6.527719 +v -0.152244 1.649577 6.527719 +v -0.152244 1.305413 6.563009 +v 0.192843 0.009952 6.375108 +v -0.152244 0.009952 6.375108 +v 0.192843 0.364782 6.457143 +v 0.192843 0.904788 6.540969 +v -0.152244 0.904788 6.540969 +v -0.152244 0.364782 6.457143 +v -0.288967 0.897229 6.368784 +v -0.288967 0.423273 6.295212 +v 0.292823 1.563486 6.378878 +v 0.292823 1.256055 6.410403 +v 0.292823 0.898192 6.390715 +v 0.292823 0.415824 6.315836 +v 0.292823 0.098867 6.242557 +v -0.288967 0.111844 6.223210 +v -0.288967 1.248852 6.388129 +v -0.288967 1.550920 6.357154 +v 0.292823 1.619638 3.269124 +v 0.292823 1.591547 4.825535 +v 0.292823 1.563486 6.378878 +v -0.288967 1.550920 6.357154 +v -0.288967 1.578493 4.830902 +v -0.288967 1.606093 3.301634 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -0.9871 0.1600 +vn -1.0000 -0.0000 -0.0000 +vn 0.8425 0.0019 -0.5387 +vn -0.0000 -1.0000 -0.0097 +vn -0.0000 -0.2819 -0.9594 +vn -0.0000 -0.0289 -0.9996 +vn 0.9934 -0.1149 -0.0011 +vn -0.0000 -0.9775 -0.2111 +vn -0.0000 -0.0316 0.9995 +vn -0.9736 0.2281 0.0100 +vn -0.9733 0.2293 0.0098 +vn -0.9732 0.2300 0.0089 +vn -0.0000 -0.7392 -0.6735 +vn -0.0000 -0.0097 1.0000 +vn -0.0000 -0.9731 0.2305 +vn -0.0000 0.5530 0.8332 +vn -0.0000 0.9994 0.0348 +vn 0.9995 -0.0003 0.0304 +vn -0.9995 -0.0003 0.0304 +vn -0.9284 -0.0036 0.3715 +vn 0.9284 -0.0036 0.3714 +vn -0.0000 1.0000 -0.0012 +vn -0.0000 -0.5366 0.8438 +vn -0.0000 0.0052 -1.0000 +vn 0.8422 0.0034 -0.5392 +vn 0.8410 0.0028 -0.5410 +vn 0.8404 0.0047 -0.5420 +vn -0.0000 -0.6972 0.7169 +vn -0.8420 0.0058 -0.5394 +vn -0.0000 0.5419 0.8404 +vn -0.0000 0.5394 0.8421 +vn -0.9934 -0.1149 -0.0011 +vn -0.9934 -0.1150 -0.0003 +vn -0.7671 -0.4112 -0.4924 +vn 0.9934 -0.1149 -0.0003 +vn -0.0000 -0.6074 -0.7944 +vn 0.7671 -0.4112 -0.4924 +vn -0.8425 0.0036 -0.5387 +vn -0.0000 -0.0067 1.0000 +vn 0.8425 0.0036 -0.5387 +vn -0.0000 0.0067 -1.0000 +vn -0.0000 0.0036 -1.0000 +vn -0.8425 0.0019 -0.5387 +vn -0.0000 -0.0036 1.0000 +vn 0.9966 0.0818 0.0008 +vn -0.0000 0.5586 0.8294 +vn -0.9966 0.0819 0.0008 +vn -0.9966 0.0818 0.0002 +vn -0.8023 0.3076 -0.5116 +vn 0.9966 0.0818 0.0002 +vn -0.0000 0.4825 -0.8759 +vn 0.8023 0.3076 -0.5116 +vn 0.9987 -0.0000 -0.0512 +vn 1.0000 -0.0000 0.0027 +vn 0.7071 -0.0000 0.7071 +vn -0.0000 -0.0000 -0.0000 +vn 0.0025 -0.7128 -0.7013 +vn 0.0025 -0.7071 0.7071 +vn 0.0036 -1.0000 -0.0000 +vn -0.0000 1.0000 0.0047 +vn -0.0000 1.0000 0.0097 +vn -0.0000 1.0000 0.0027 +vn 0.9966 0.0096 -0.0815 +vn 0.7714 0.0075 0.6363 +vn 1.0000 0.0097 -0.0000 +vn 0.3994 0.5930 -0.6992 +vn 0.5573 0.8275 -0.0674 +vn 0.3950 0.5865 0.7071 +vn -0.3535 -0.1464 0.9239 +vn -0.3827 -0.0000 0.9239 +vn -0.0000 -0.0000 1.0000 +vn 0.9793 0.0026 0.2024 +vn 0.7096 0.0019 -0.7046 +vn 1.0000 0.0027 -0.0000 +vn 0.3535 0.1464 0.9239 +vn 0.3827 -0.0000 0.9239 +vn -0.0035 0.9829 0.1840 +vn -0.0037 0.9823 0.1873 +vn 0.0037 0.9823 0.1873 +vn -0.0030 0.9811 0.1935 +vn 0.0015 0.9820 0.1887 +vn 0.0019 0.9820 0.1890 +vn -0.0000 0.9790 0.2038 +vn -0.0000 0.9991 0.0429 +vn -0.0000 -0.9991 -0.0429 +vn -0.0000 -0.0000 -1.0000 +vn -0.8418 0.0058 -0.5397 +vn -0.8407 0.0065 -0.5414 +vn -0.8425 0.0039 -0.5387 +vn 0.8425 0.0028 -0.5387 +vn -0.0000 -0.0096 1.0000 +vn -0.9993 -0.0327 0.0153 +vn 0.9284 -0.0036 0.3715 +vn -0.8390 0.0080 -0.5441 +vn -0.8386 0.0058 -0.5447 +vn 0.8415 0.0028 -0.5403 +vn 0.8406 0.0014 -0.5417 +vn 0.8002 -0.0000 0.5997 +vn 0.7071 -0.0000 -0.7071 +vn 1.0000 -0.0000 -0.0097 +vn -0.0147 0.9816 0.1903 +vn -0.0124 0.9821 0.1881 +vn -0.0155 0.9824 0.1861 +vn -0.0475 0.9810 0.1879 +vn 0.9911 0.0096 0.1327 +vn 0.7072 0.0068 -0.7070 +vn -0.9641 -0.0000 0.2654 +vn -0.7071 -0.0000 -0.7071 +vn -1.0000 -0.0000 0.0097 +vn -0.9725 0.2329 0.0100 +vn -0.9959 -0.0009 0.0906 +vn -0.9983 0.0006 -0.0585 +vn 0.0348 0.9991 -0.0262 +vn -0.0000 0.0097 -1.0000 +vn 0.0479 0.3613 -0.9312 +vn -0.0000 -1.0000 -0.0096 +vn -0.9999 0.0108 0.0001 +vn -0.9993 -0.0321 -0.0206 +vn -0.9994 -0.0321 -0.0163 +vn -0.9743 0.2251 0.0097 +vn -0.9741 0.2258 0.0106 +vn -0.9745 0.2242 0.0022 +vn -0.9995 -0.0315 -0.0025 +vn -0.9996 -0.0272 -0.0022 +vn -0.0000 0.9970 0.0775 +vn -0.9140 0.4057 -0.0091 +vn -0.0250 0.3883 0.9212 +vn -0.0347 0.9719 0.2330 +vn 0.9998 0.0078 0.0165 +vn -0.0000 0.0044 -1.0000 +vn 0.9126 0.0018 -0.4089 +vn -0.8819 0.0021 -0.4715 +vn -0.0000 -0.0022 1.0000 +vn -0.0000 0.0311 0.9995 +vn -0.0000 0.9999 0.0131 +vn -0.0000 0.9999 0.0122 +vn -0.0000 0.0343 -0.9994 +vn -0.0000 0.0082 -1.0000 +vn -0.0000 -0.0089 -1.0000 +vn -0.0000 -1.0000 0.0048 +vn -0.0000 -0.9993 -0.0374 +vn -0.0000 -1.0000 0.0066 +vn -0.0000 -0.9981 -0.0618 +vn -0.0000 0.2181 0.9759 +vn -1.0000 -0.0026 0.0020 +vn -0.9999 -0.0100 -0.0002 +vn -1.0000 0.0047 -0.0047 +vn -1.0000 0.0029 0.0053 +vn 1.0000 0.0029 0.0053 +vn 1.0000 -0.0026 0.0020 +vn 0.9999 -0.0100 -0.0002 +vn 1.0000 0.0022 0.0001 +vn 1.0000 -0.0063 -0.0000 +vn -0.0000 0.0413 0.9991 +vn -0.0001 -0.0000 -1.0000 +vn -0.0000 0.2947 -0.9556 +vn -0.0000 0.8943 0.4474 +vn -0.0000 -0.0733 0.9973 +vn -0.0000 0.0734 -0.9973 +vn 0.9926 0.1211 0.0012 +vn -0.9993 0.0377 0.0004 +vn -0.0000 0.0342 -0.9994 +vn 0.0001 -0.0000 -1.0000 +vn -0.1592 0.3844 0.9093 +vn 0.9885 -0.0111 0.1510 +vn -0.0733 0.9973 -0.0000 +vn -0.0519 0.7052 -0.7071 +vn -0.0720 0.9793 0.1891 +vn 0.0720 -0.9793 0.1891 +vn 0.0734 -0.9973 -0.0000 +vn 0.0519 -0.7052 -0.7071 +vn -0.0000 0.1701 -0.9854 +vn -0.0000 -0.0970 0.9953 +vn -0.9979 -0.0402 -0.0501 +vn 0.2738 0.4318 0.8594 +vn -0.0000 0.9786 0.2056 +vn -0.0000 -0.9951 0.0988 +vn -0.0000 -0.0734 0.9973 +vn 0.4239 -0.9013 0.0895 +vn -0.1710 -0.9768 0.1288 +vn -0.0000 0.9914 -0.1307 +vn 0.9992 -0.0394 0.0052 +vn -0.9996 -0.0272 0.0036 +vn -0.8988 -0.0042 0.4384 +vn 0.7896 -0.0059 0.6136 +vn -1.0000 0.0001 -0.0091 +vn 1.0000 -0.0000 -0.0021 +vn -0.9994 -0.0346 -0.0003 +vn 1.0000 -0.0079 -0.0001 +vn 0.9985 0.0541 0.0005 +vn -0.9992 -0.0342 -0.0218 +vn -0.0132 0.5967 0.8023 +vn -0.0162 -0.0611 0.9980 +vn -0.0775 -0.9969 -0.0096 +vn -0.0000 -0.2860 0.9582 +vn 0.9999 -0.0126 0.0062 +vn 0.9999 -0.0125 -0.0001 +vn 0.9999 -0.0124 -0.0073 +vn -0.9346 -0.3556 -0.0034 +vn 0.0326 -0.5854 -0.8101 +vn 0.0116 0.7093 -0.7048 +vn -0.0000 -0.9914 0.1307 +vn -0.0000 0.9998 0.0199 +vn -0.2738 0.4318 0.8594 +vn -0.1333 0.0532 -0.9896 +vn -0.0000 0.0537 -0.9986 +vn 0.1672 0.0956 -0.9813 +vn -0.0000 0.9999 0.0153 +vn -0.0000 0.0970 -0.9953 +vn -0.0000 0.2948 -0.9556 +vn -0.0000 0.7042 0.7100 +vn -0.0000 1.0000 0.0099 +vn -0.0824 0.7771 -0.6240 +vn 0.9465 0.0372 0.3204 +vn -0.0000 0.9968 -0.0797 +vn -0.0000 -0.7679 0.6406 +vn -0.9465 0.0372 0.3205 +vn -0.0000 0.9936 -0.1129 +vn 0.9990 -0.0051 -0.0442 +vn -0.0000 -1.0000 -0.0055 +vn -0.9990 -0.0051 -0.0442 +vn -0.0000 -0.9999 -0.0166 +vn -0.0000 -0.6981 -0.7160 +vn -0.0000 0.9999 0.0166 +vn -0.0000 0.0198 -0.9998 +vn -0.0000 0.7070 0.7072 +vn -0.0000 -0.0224 0.9997 +vn -0.0000 1.0000 0.0046 +vn -0.0000 -0.9973 0.0734 +vn -0.0000 0.6259 -0.7799 +vn -0.0000 -0.9931 0.1170 +vn -0.0000 -1.0000 -0.0046 +vn -0.0000 0.9978 -0.0670 +vn -0.0000 -0.0198 0.9998 +vn -0.0000 -0.9998 -0.0176 +vn 0.0013 1.0000 0.0096 +vn -0.0000 0.3280 0.9447 +vn -0.0000 -1.0000 -0.0098 +vn -0.0000 0.9999 0.0170 +vn 0.0013 -0.9998 -0.0216 +vn -0.0000 -0.0577 0.9983 +vn -0.0000 0.9889 -0.1484 +vn -0.0000 0.7723 -0.6352 +vn -0.0023 0.3616 0.9323 +vn -0.0038 0.3609 0.9326 +vn -0.0042 0.3593 0.9332 +vn -0.0000 0.3176 0.9482 +vn -0.0016 0.3559 0.9345 +vn -0.0000 0.3568 0.9342 +vn -0.0005 0.3634 0.9316 +vn 0.0017 0.3617 0.9323 +vn 0.0002 0.3635 0.9316 +vn -0.0000 -0.9998 -0.0210 +vn -0.0000 -0.9998 -0.0217 +vn 0.0020 0.9999 0.0166 +vn -0.0000 1.0000 0.0096 +vn -0.0000 -1.0000 0.0038 +vn 0.0312 -0.9995 0.0038 +vn 0.0195 -0.9929 0.1170 +vn -0.1252 0.6209 -0.7738 +vn -0.0000 -0.9973 0.0733 +vn -0.0000 0.9999 -0.0152 +vn -0.0000 0.7797 -0.6261 +vn 0.0014 1.0000 0.0097 +vn -0.0000 0.4355 -0.9002 +vn -1.0000 0.0052 0.0052 +vn -0.0000 0.1871 0.9823 +vn -0.0000 0.9700 0.2429 +vn 0.9659 0.2586 -0.0110 +vn -0.9813 0.1906 0.0275 +vn -0.0000 0.1887 -0.9820 +vn 0.5087 0.8556 -0.0962 +vn 0.9507 0.2307 -0.2071 +vn -0.9239 0.3803 -0.0427 +vn -0.4938 0.8655 0.0838 +vn 0.4938 0.8655 0.0838 +vn 0.8507 0.5109 0.1237 +vn -0.9067 0.3518 -0.2326 +vn -0.2383 0.8589 -0.4533 +vn -0.3827 -0.9181 0.1032 +vn -0.9685 -0.2475 0.0278 +vn 0.9243 -0.3038 0.2310 +vn 0.0998 -0.9949 0.0144 +vn 0.2646 0.6033 0.7523 +vn 0.6990 0.3607 0.6175 +vn -0.6810 0.3558 0.6400 +vn -0.2608 0.5979 0.7580 +vn 0.2436 0.0146 0.9698 +vn -0.2436 -0.0146 -0.9698 +vn -0.1833 -0.0750 -0.9802 +vn -0.1695 -0.0057 -0.9855 +vn -0.2016 0.0541 -0.9780 +vn -0.2753 0.0800 -0.9580 +vn -0.3604 0.0277 -0.9324 +vn -0.3529 -0.0877 -0.9316 +vn -0.2532 -0.1242 -0.9594 +vn -0.9811 0.1936 0.0019 +vn -0.9914 -0.1311 -0.0013 +vn -0.9980 -0.0635 -0.0006 +vn -0.9914 -0.1312 -0.0013 +vn 0.9788 -0.2046 -0.0020 +vn 0.9914 0.1311 0.0013 +vn 0.9980 0.0635 0.0006 +vn 0.9914 0.1312 0.0013 +vn 0.0094 0.0215 -0.9997 +vn -0.6219 -0.7830 -0.0077 +vn -0.1312 0.9913 0.0096 +vn -0.6218 -0.7831 -0.0076 +vn -0.1310 0.9913 0.0096 +vn 0.0002 0.0097 -1.0000 +vn 0.0001 -0.0097 1.0000 +vn -0.0001 0.0097 -1.0000 +vn 0.0020 -0.0263 0.9997 +vn 0.0095 0.0215 -0.9997 +vn 0.0020 -0.0262 0.9997 +vn 0.1312 -0.9913 -0.0096 +vn -0.1034 0.7877 -0.6073 +vn -0.6218 -0.7831 -0.0075 +vn -0.0948 0.7102 0.6976 +vn 0.0001 0.0097 -1.0000 +vn -0.0000 0.0096 -1.0000 +vn -0.9736 0.2282 0.0013 +vn -0.9734 0.2291 0.0022 +vn 0.8390 0.0080 -0.5441 +vn 0.8386 0.0058 -0.5447 +vn -0.8425 0.0028 -0.5387 +vn -1.0000 -0.0000 0.0027 +vn -0.7071 -0.0000 0.7071 +vn -0.9987 -0.0000 -0.0512 +vn 0.9794 -0.0000 -0.2018 +vn 0.0025 -0.7071 -0.7071 +vn 0.0035 -1.0000 -0.0000 +vn 0.0025 -0.7128 0.7013 +vn 0.7240 0.0070 -0.6897 +vn 0.9966 0.0096 0.0815 +vn 0.3950 0.5865 -0.7071 +vn 0.3994 0.5930 0.6992 +vn 0.7072 0.0019 0.7070 +vn 0.9793 0.0026 -0.2024 +vn 0.0147 0.9816 0.1903 +vn 0.0156 0.9824 0.1861 +vn 0.0124 0.9821 0.1881 +vn 0.0475 0.9810 0.1879 +vn -0.0033 0.9814 0.1922 +vn 0.0030 0.9812 0.1932 +vn -0.0020 0.9820 0.1890 +vn 0.9701 0.2425 -0.0000 +vn -0.8415 0.0028 -0.5403 +vn -0.8405 0.0014 -0.5418 +vn 0.8420 0.0058 -0.5394 +vn -0.9995 -0.0327 -0.0003 +vn -0.8422 0.0034 -0.5392 +vn -0.8404 0.0047 -0.5420 +vn -0.8410 0.0028 -0.5410 +vn 0.8418 0.0058 -0.5397 +vn 0.8425 0.0039 -0.5387 +vn 0.8408 0.0065 -0.5414 +vn 1.0000 -0.0000 0.0097 +vn 0.8059 -0.0000 -0.5921 +vn -1.0000 -0.0000 -0.0039 +vn -0.8002 -0.0000 0.5997 +vn 0.0035 0.9829 0.1839 +vn 0.7171 0.0069 0.6969 +vn 0.9911 0.0096 -0.1327 +vn 0.9641 -0.0000 0.2654 +vn -0.9846 0.1294 0.1179 +vn -0.9995 -0.0315 -0.0003 +vn -0.9749 0.2224 0.0095 +vn -0.9997 0.0096 0.0213 +vn -0.0000 0.9980 -0.0633 +vn 0.0651 0.3722 -0.9259 +vn -0.9999 0.0046 -0.0124 +vn -0.9999 0.0027 -0.0144 +vn -0.9996 -0.0273 -0.0004 +vn -0.9995 -0.0316 -0.0003 +vn -0.9738 0.2275 0.0022 +vn -0.9740 0.2267 0.0031 +vn -0.9735 0.2285 0.0022 +vn -0.9996 -0.0274 -0.0003 +vn -0.9999 0.0046 -0.0119 +vn -0.9999 0.0025 -0.0101 +vn 0.0192 0.9943 0.1046 +vn -0.8869 0.4537 0.0873 +vn 0.0385 0.4262 0.9038 +vn -0.0790 0.9958 0.0465 +vn 0.9850 0.0897 -0.1476 +vn -0.9999 -0.0100 -0.0001 +vn -1.0000 -0.0001 0.0017 +vn -1.0000 -0.0000 0.0059 +vn -1.0000 0.0046 0.0060 +vn -0.9999 0.0005 0.0148 +vn -1.0000 -0.0025 0.0081 +vn -0.9999 -0.0035 0.0126 +vn -0.9999 -0.0101 -0.0001 +vn -1.0000 -0.0008 -0.0030 +vn -1.0000 -0.0005 -0.0056 +vn -1.0000 0.0019 -0.0042 +vn -1.0000 -0.0000 -0.0024 +vn -1.0000 -0.0001 -0.0023 +vn -1.0000 -0.0098 -0.0001 +vn -1.0000 -0.0013 -0.0011 +vn -1.0000 0.0098 -0.0001 +vn -1.0000 0.0022 0.0001 +vn -1.0000 -0.0004 -0.0020 +vn -1.0000 -0.0030 -0.0018 +vn -1.0000 -0.0006 -0.0052 +vn -1.0000 0.0008 -0.0030 +vn -0.9999 0.0034 0.0131 +vn -0.9999 -0.0012 0.0136 +vn -0.9998 0.0029 0.0177 +vn -1.0000 -0.0041 0.0081 +vn -1.0000 0.0001 0.0061 +vn -1.0000 0.0024 -0.0000 +vn -1.0000 0.0098 0.0004 +vn 0.9998 0.0029 0.0177 +vn 0.9999 -0.0012 0.0136 +vn 0.9999 0.0034 0.0131 +vn 1.0000 0.0098 0.0004 +vn 1.0000 0.0001 0.0061 +vn 1.0000 -0.0041 0.0081 +vn 1.0000 0.0024 -0.0000 +vn 0.9999 -0.0100 -0.0001 +vn 0.9999 -0.0035 0.0126 +vn 1.0000 -0.0025 0.0081 +vn 0.9999 0.0005 0.0148 +vn 0.9999 -0.0101 -0.0001 +vn 1.0000 -0.0000 0.0059 +vn 1.0000 0.0046 0.0060 +vn 1.0000 -0.0001 0.0017 +vn 1.0000 -0.0005 -0.0056 +vn 1.0000 -0.0008 -0.0030 +vn 1.0000 0.0018 -0.0041 +vn 1.0000 -0.0000 -0.0024 +vn 1.0000 -0.0013 -0.0011 +vn 1.0000 -0.0001 -0.0023 +vn 1.0000 -0.0098 -0.0001 +vn 1.0000 0.0098 -0.0001 +vn 1.0000 0.0008 -0.0030 +vn 1.0000 -0.0006 -0.0051 +vn 1.0000 0.0047 -0.0047 +vn 1.0000 -0.0004 -0.0020 +vn 1.0000 -0.0030 -0.0018 +vn 1.0000 -0.0045 0.0044 +vn 1.0000 -0.0071 -0.0001 +vn 0.9880 0.0321 0.1513 +vn -0.0000 -0.4489 0.8936 +vn 0.0519 -0.7052 0.7071 +vn 0.0720 -0.9793 -0.1891 +vn -0.1672 0.0956 -0.9813 +vn 0.9939 -0.0813 0.0752 +vn 0.9884 -0.0147 0.1510 +vn -0.9980 -0.0569 -0.0287 +vn 0.9968 -0.0499 -0.0623 +vn 0.9969 -0.0707 -0.0356 +vn -0.0000 0.6252 0.7804 +vn 0.9982 -0.0540 -0.0248 +vn -0.9990 -0.0393 -0.0221 +vn 0.9996 0.0172 -0.0213 +vn -1.0000 0.0043 -0.0000 +vn -0.0000 0.5989 0.8008 +vn -0.0164 -0.0607 0.9980 +vn -0.0165 0.0076 0.9998 +vn 0.9999 -0.0115 0.0061 +vn 0.0597 -0.5894 -0.8056 +vn 0.0548 0.7394 -0.6710 +vn -0.0003 0.9998 0.0198 +vn 0.1333 0.0532 -0.9896 +vn -0.4017 0.5726 0.7147 +vn 0.4017 0.5726 0.7147 +vn -0.0014 1.0000 0.0097 +vn -0.0000 0.7946 -0.6071 +vn 0.9465 0.0372 0.3205 +vn 0.0016 0.3559 0.9345 +vn 0.0022 0.3616 0.9323 +vn 0.0042 0.3593 0.9332 +vn 0.0038 0.3609 0.9326 +vn 0.0008 0.3633 0.9317 +vn -0.0018 0.3621 0.9321 +vn 0.0010 0.3630 0.9318 +vn -0.0013 -0.9998 -0.0216 +vn -0.0013 1.0000 0.0096 +vn -0.0111 0.9979 -0.0646 +vn -0.0000 0.2995 -0.9541 +vn -0.9976 0.0689 0.0093 +vn -0.6286 -0.7775 0.0165 +vn -1.0000 0.0053 0.0073 +vn -1.0000 -0.0002 0.0074 +vn -1.0000 0.0075 -0.0000 +vn -1.0000 0.0012 -0.0038 +vn -1.0000 0.0079 -0.0005 +vn 0.9974 0.0718 0.0091 +vn 0.1496 0.9886 -0.0161 +vn -0.9659 0.2585 -0.0111 +vn -0.0803 0.3893 -0.9176 +vn 0.3755 0.8796 -0.2919 +vn 0.9239 0.3803 -0.0427 +vn -0.9239 0.3803 -0.0428 +vn -0.3827 0.9181 -0.1032 +vn 0.2524 0.9247 -0.2851 +vn -0.9103 0.3068 -0.2779 +vn -0.5087 0.8556 -0.0962 +vn -0.1106 -0.9636 -0.2436 +vn -0.9786 -0.1938 -0.0687 +vn 0.9879 -0.1550 -0.0049 +vn -0.0041 -0.9937 0.1117 +vn -0.0023 0.0263 -0.9997 +vn -0.0095 -0.0215 0.9997 +vn -0.0021 0.0262 -0.9997 +vn -0.0094 -0.0215 0.9997 +vn 0.1310 -0.9913 -0.0096 +vn -0.1035 0.7877 -0.6073 +vn -0.1821 0.0393 0.9825 +vn -0.1579 0.0817 0.9841 +vn -0.0000 1.0000 0.0040 +vn -0.5000 0.8660 0.0027 +vn -0.4993 -0.8660 -0.0267 +vn -0.0011 -0.9995 -0.0309 +vn 0.0011 -0.9995 -0.0309 +vn 0.9018 -0.4309 -0.0319 +vn 0.9971 0.0692 -0.0308 +vn 0.9970 0.0714 -0.0307 +vn -0.8653 0.5010 -0.0162 +vn -0.5010 0.8653 -0.0165 +vn -0.8664 0.4991 -0.0162 +vn 0.0011 0.9998 -0.0191 +vn 0.4992 0.8662 -0.0233 +vn -0.0011 0.9998 -0.0191 +vn -0.8797 -0.4751 -0.0221 +vn -0.5005 -0.8653 -0.0267 +vn 0.5870 -0.8089 -0.0336 +vn 0.7893 -0.6132 -0.0307 +vn 0.7850 -0.6187 -0.0307 +vn -0.4987 0.8666 -0.0165 +vn 0.5003 0.8655 -0.0233 +vn 0.8605 0.5086 -0.0279 +vn -0.1906 -0.0335 0.9811 +vn -0.1872 0.0078 0.9823 +vn -0.1869 0.0101 0.9823 +vn 0.5851 -0.8102 -0.0336 +vn -0.9912 0.1311 -0.0167 +vn -0.9913 0.1309 -0.0166 +vn 0.5000 0.8660 0.0027 +vn 0.8660 0.5000 -0.0009 +vn -0.0000 -0.9999 -0.0154 +vn 0.5864 -0.8099 -0.0135 +vn 0.5862 -0.8101 -0.0135 +vn -0.9936 0.1132 -0.0044 +vn -0.8660 0.5000 -0.0009 +vn -0.9936 0.1131 -0.0044 +vn -0.5000 -0.8659 -0.0141 +vn 0.9358 -0.3524 -0.0087 +vn 0.9982 0.0604 -0.0049 +vn 0.9982 0.0605 -0.0049 +vn -0.8838 -0.4678 -0.0102 +vn 0.9358 -0.3525 -0.0087 +vn -0.8838 -0.4679 0.0041 +vn -0.5000 -0.8660 0.0002 +vn 0.5000 0.8659 0.0170 +vn -0.0000 0.9998 0.0183 +vn -0.5000 0.8659 0.0170 +vn -0.8660 0.4999 0.0134 +vn 0.9981 0.0602 0.0089 +vn 0.9358 -0.3525 0.0046 +vn 0.9981 0.0604 0.0089 +vn -0.0000 -1.0000 -0.0011 +vn -0.9935 0.1131 0.0094 +vn -0.9936 0.1130 0.0094 +vn 0.5864 -0.8100 0.0007 +vn 0.5861 -0.8102 0.0007 +vn 0.8660 0.4999 0.0134 +vn 0.9357 -0.3527 0.0046 +vn 0.6006 0.5955 0.5336 +vn 0.7283 0.4152 0.5451 +vn 0.2198 -0.8153 -0.5357 +vn -0.0000 -0.8357 -0.5492 +vn 0.8871 -0.3274 -0.3254 +vn 0.5581 -0.7533 -0.3481 +vn 0.8846 -0.3343 -0.3252 +vn -0.4697 -0.8102 -0.3505 +vn -0.8315 -0.4341 -0.3467 +vn -0.2441 -0.9142 0.3235 +vn -0.4697 0.8168 -0.3349 +vn -0.8136 0.4730 -0.3381 +vn 0.9417 0.0560 -0.3318 +vn 0.9411 0.0639 -0.3320 +vn -0.0000 -0.9361 -0.3518 +vn -0.9369 0.1122 -0.3310 +vn -0.9375 0.1074 -0.3310 +vn 0.1822 0.0393 0.9825 +vn 0.1821 0.0393 0.9825 +vn 0.1821 0.0394 0.9825 +vn 0.1702 -0.1209 0.9780 +vn 0.1130 -0.1548 0.9815 +vn 0.1047 -0.1596 0.9816 +vn 0.5456 -0.7620 -0.3487 +vn 0.1886 -0.0010 0.9821 +vn 0.1878 0.0039 0.9822 +vn -0.8837 -0.4679 0.0154 +vn -0.4999 -0.8660 0.0116 +vn -0.0000 -0.9996 -0.0296 +vn -0.2588 -0.9655 -0.0286 +vn -0.7070 0.7067 0.0261 +vn -0.8658 0.4997 0.0248 +vn -0.8659 0.4997 0.0248 +vn 0.9980 0.0600 0.0199 +vn 0.9357 -0.3524 0.0152 +vn 0.9980 0.0604 0.0199 +vn -0.0000 -0.9999 0.0103 +vn -0.9934 0.1131 0.0204 +vn -0.9934 0.1128 0.0204 +vn 0.5866 -0.8098 0.0120 +vn 0.5858 -0.8104 0.0120 +vn 0.8659 0.4997 0.0248 +vn 0.7070 0.7068 0.0261 +vn 0.7070 0.7067 0.0261 +vn 0.2588 -0.9655 -0.0286 +vn -0.1893 -0.0456 0.9809 +vn -0.1906 -0.0337 0.9811 +vn 0.3383 0.2001 -0.9195 +vn 0.3751 0.0362 -0.9263 +vn 0.3331 0.2137 -0.9184 +vn 0.2948 -0.2253 -0.9286 +vn 0.3442 -0.1181 -0.9314 +vn 0.3304 -0.1463 -0.9324 +vn -0.3207 -0.0291 -0.9467 +vn -0.3108 -0.1408 -0.9400 +vn -0.2987 -0.1576 -0.9412 +vn 0.2095 -0.2501 -0.9453 +vn 0.3112 -0.1946 -0.9302 +vn -0.1672 -0.2717 -0.9477 +vn -0.1608 -0.2749 -0.9479 +vn -0.0000 0.4273 -0.9041 +vn 0.1994 0.3681 -0.9082 +vn -0.2088 0.3617 -0.9086 +vn -0.3331 0.2137 -0.9184 +vn -0.3401 0.1973 -0.9195 +vn 0.3739 0.0324 -0.9269 +vn 0.9356 -0.3528 0.0152 +vn -0.0000 -0.3122 -0.9500 +vn -0.5000 -0.8659 -0.0118 +vn -0.8838 -0.4678 -0.0080 +vn 0.5000 0.8660 0.0049 +vn -0.0000 1.0000 0.0062 +vn -0.5000 0.8660 0.0049 +vn -0.8660 0.5000 0.0014 +vn 0.9358 -0.3524 -0.0066 +vn 0.9982 0.0604 -0.0028 +vn 0.9982 0.0605 -0.0028 +vn -0.0000 -0.9999 -0.0131 +vn -0.9936 0.1132 -0.0023 +vn -0.9936 0.1131 -0.0023 +vn 0.5862 -0.8101 -0.0113 +vn 0.5864 -0.8100 -0.0113 +vn 0.8660 0.5000 0.0014 +vn 0.2877 0.0123 0.9576 +vn 0.2456 0.1353 0.9599 +vn 0.2875 0.0040 0.9578 +vn 0.2520 -0.2136 0.9439 +vn 0.1771 -0.2377 0.9551 +vn 0.1646 -0.2450 0.9554 +vn -0.2930 0.0306 0.9556 +vn -0.2482 0.1340 0.9594 +vn -0.2944 -0.0398 0.9548 +vn -0.2524 -0.1425 0.9571 +vn -0.2914 -0.0406 0.9557 +vn -0.0000 -0.2958 0.9552 +vn 0.1433 0.2389 0.9604 +vn 0.2469 0.1363 0.9594 +vn -0.0000 0.2773 0.9608 +vn -0.1433 0.2389 0.9604 +vn 0.2797 -0.1228 0.9522 +vn 0.2659 -0.1832 0.9464 +vn -0.1433 -0.2575 0.9556 +vn -0.2517 -0.1465 0.9567 +vn -0.4866 -0.8406 -0.2380 +vn -0.0000 -0.9709 -0.2393 +vn 0.1579 0.0817 0.9841 +vn -0.0000 -0.1919 0.9814 +vn -0.1621 -0.0934 0.9823 +vn -0.1893 -0.0455 0.9809 +vn 0.0912 0.1484 0.9847 +vn -0.0912 0.1484 0.9847 +vn -0.0000 0.1729 0.9849 +vn 0.1818 -0.0810 0.9800 +vn -0.0912 -0.1674 0.9817 +vn -0.1608 -0.0957 0.9823 +vn -0.9946 -0.1025 -0.0180 +vn -0.9685 -0.1066 -0.2252 +vn -0.9681 -0.1203 -0.2196 +vn -0.9695 0.0996 -0.2239 +vn -0.8888 -0.2388 0.3913 +vn -0.8264 -0.4164 0.3790 +vn -0.8872 -0.2446 0.3912 +vn 0.9733 0.0582 -0.2219 +vn 0.9147 -0.3399 -0.2185 +vn 0.9130 -0.3446 -0.2184 +vn -0.8428 0.4888 -0.2252 +vn -0.4866 0.8450 -0.2217 +vn -0.0000 0.9754 -0.2205 +vn 0.4866 0.8450 -0.2217 +vn -0.8609 -0.4517 -0.2341 +vn -0.8595 -0.4544 -0.2342 +vn 0.8187 -0.5339 -0.2115 +vn 0.8428 0.4888 -0.2252 +vn 0.5753 -0.7831 -0.2362 +vn -0.9951 0.0989 0.0010 +vn -0.9659 0.2588 0.0025 +vn -0.7876 -0.4941 0.3683 +vn -0.8898 -0.2422 0.3869 +vn -0.8897 -0.2422 0.3869 +vn -0.9009 -0.1935 0.3885 +vn -0.7590 0.4928 0.4255 +vn -0.5352 0.6962 0.4784 +vn -0.5025 0.7178 0.4820 +vn -0.9131 -0.0646 0.4026 +vn -0.9135 -0.0545 0.4031 +vn 0.8994 0.1124 0.4223 +vn 0.8896 0.1656 0.4257 +vn 0.9003 0.1074 0.4219 +vn 0.9066 -0.0888 0.4126 +vn 0.9058 -0.1000 0.4119 +vn -0.7936 -0.4755 0.3795 +vn 0.8851 -0.2410 0.3982 +vn -0.0011 0.8668 0.4986 +vn 0.0008 0.8668 0.4986 +vn 0.8660 0.5000 0.0048 +vn 0.9659 0.2588 0.0025 +vn -0.5000 -0.8660 -0.0084 +vn 0.9358 -0.3525 -0.0034 +vn 0.9982 0.0604 0.0006 +vn -0.5000 0.8660 0.0084 +vn -0.8660 0.5000 0.0048 +vn 0.5000 0.8660 0.0084 +vn -0.8838 -0.4679 -0.0045 +vn 0.8367 -0.5477 -0.0053 +vn 0.8367 -0.5476 -0.0053 +vn -0.9587 -0.1806 -0.2195 +vn 0.5863 -0.8101 -0.0078 +vn -0.9533 0.2538 0.1638 +vn -0.9429 0.0892 0.3210 +vn -0.9156 0.2423 0.3208 +vn 0.8896 0.1654 0.4257 +vn 0.7923 0.3968 0.4635 +vn 0.0022 -0.6241 -0.7813 +vn 0.4237 0.8995 -0.1063 +vn 0.0022 0.6327 -0.7744 +vn -0.0014 0.9861 -0.1661 +vn 0.9234 -0.3460 0.1660 +vn 0.9336 0.0499 0.3548 +vn 0.8767 -0.3375 0.3427 +vn -0.8880 0.4032 0.2212 +vn -0.6700 0.6669 0.3260 +vn -0.1154 -0.4222 -0.8991 +vn -0.0014 -0.9841 -0.1777 +vn -0.4253 -0.8971 -0.1196 +vn -0.9058 -0.3635 0.2177 +vn -0.6674 -0.6706 0.3240 +vn -0.8352 -0.4389 0.3315 +vn 0.8246 -0.5415 0.1640 +vn 0.7888 -0.5195 0.3285 +vn 0.4239 -0.8980 -0.1183 +vn 0.6639 0.6605 0.3508 +vn 0.8069 0.4657 0.3635 +vn 0.8849 0.3985 0.2412 +vn -0.9697 -0.1866 0.1576 +vn -0.9324 -0.1808 0.3130 +vn -0.1202 0.4571 -0.8813 +vn -0.2550 0.9533 -0.1620 +vn -0.9795 -0.1258 0.1573 +vn -0.9823 0.0966 0.1604 +vn -0.4710 -0.8087 0.3523 +vn -0.8040 -0.4565 0.3811 +vn -0.9938 -0.1115 -0.0044 +vn -0.3787 0.0550 -0.9239 +vn -0.3745 0.0494 -0.9259 +vn -0.9936 -0.1117 0.0178 +vn 0.6669 0.6701 -0.3259 +vn 0.8136 0.4730 -0.3381 +vn -0.9937 -0.1116 0.0070 +vn -0.9937 -0.1114 -0.0065 +vn -0.9823 -0.1872 -0.0018 +vn -0.9921 -0.1256 -0.0012 +vn 0.9506 0.2530 0.1801 +vn 0.9831 0.0579 0.1735 +vn 0.1831 -0.0764 0.9801 +vn 0.0010 -0.9390 0.3438 +vn 0.4582 -0.8137 0.3578 +vn -0.0012 -0.9390 0.3438 +vn -0.9417 0.2544 -0.2200 +vn -0.8180 0.4686 0.3336 +vn -0.8837 -0.4680 0.0041 +vn -0.2441 0.9142 -0.3235 +vn 0.1853 -0.2625 -0.9470 +vn -0.8835 -0.4681 0.0154 +vn -0.3744 -0.0300 -0.9268 +vn 0.2733 -0.1317 0.9529 +vn -0.9415 -0.1222 0.3139 +vn -0.8513 0.3099 0.4234 +vn -0.7589 0.4929 0.4255 +vn 0.9503 0.2529 0.1815 +vn 0.9040 0.2388 0.3545 +vn 0.7780 0.4215 0.4659 +vn 0.4424 0.7501 0.4915 +vn 0.9659 0.2589 0.0025 +vn 0.7888 -0.5196 0.3285 +vn 0.8258 -0.5421 0.1553 +vn -0.4611 -0.8146 0.3519 +vn 0.5668 -0.7892 -0.2365 +vn -0.2920 0.0256 0.9561 +vn 0.9024 -0.4297 -0.0319 +vn 0.8533 0.5213 0.0103 +vn 0.9177 0.3972 0.0076 +vn -0.9935 0.1134 0.0016 +vn -0.9937 -0.1118 -0.0016 +vn -0.9935 0.1135 0.0006 +vn -0.2588 0.9659 0.0093 +vn -0.9823 -0.1873 -0.0018 +vn -0.7071 -0.7071 -0.0068 +vn -0.7570 -0.6534 -0.0063 +vn 0.5000 -0.8660 -0.0084 +vn 0.9444 -0.3286 0.0103 +vn 0.7071 0.7071 0.0068 +vn 0.7071 -0.7071 -0.0068 +vn 0.9445 -0.3282 -0.0167 +vn 0.8366 -0.5477 -0.0053 +vn -0.7873 -0.6165 -0.0060 +vn -0.9269 -0.3753 -0.0036 +vn -0.9937 -0.1118 -0.0006 +vn -0.9071 0.4210 0.0041 +vn -0.9951 0.0987 0.0012 +vn -0.8513 -0.5246 -0.0051 +vn 0.6839 -0.7296 -0.0071 +vn 0.8366 -0.5478 -0.0053 +vn 0.8657 0.5005 0.0039 +vn 0.9159 0.4015 0.0035 +vn 0.9661 0.2583 0.0016 +vn 0.9964 0.0177 0.0830 +vn -0.9823 -0.1874 -0.0018 +vn 0.7815 0.6238 0.0060 +vn 0.9857 0.1685 0.0011 +vn 0.9786 0.2056 0.0020 +vn 0.9857 0.1683 0.0023 +vn 0.9632 0.2006 0.1790 +vn 0.8367 -0.5476 -0.0084 +vn 0.9358 -0.3525 -0.0066 +vn 0.9065 0.2362 0.3498 +vn 0.4712 -0.8058 0.3586 +vn 0.7894 -0.4744 0.3895 +vn -0.8470 0.3207 0.4240 +vn 0.8444 0.5082 0.1695 +vn 0.9041 0.2387 0.3545 +vn 0.9579 -0.1245 0.2586 +vn 0.9524 -0.1186 -0.2810 +vn 0.2088 0.3617 -0.9086 +vn -0.1994 0.3681 -0.9082 +vn -0.9393 -0.1024 -0.3274 +vn -0.9394 -0.1021 -0.3274 +vn 0.8603 0.5091 -0.0278 +vn 0.9417 0.2545 -0.2200 +vn 0.4335 0.7551 0.4919 +vn 0.8006 -0.4537 0.3914 +vn 0.8866 0.4626 0.0045 +vn 0.9961 0.0214 -0.0862 +vn 0.8592 0.4785 0.1808 +vn 0.9050 0.2425 0.3496 +vn 0.9075 0.2399 0.3449 +vn 0.9369 -0.3497 0.0009 +vn 0.9983 0.0583 0.0063 +vn -0.9613 -0.2748 -0.0185 +vn -0.9316 -0.3630 -0.0187 +vn -0.1530 -0.9867 0.0547 +vn -0.0792 -0.9967 -0.0160 +vn -0.0791 -0.9967 -0.0160 +vn -0.1418 0.0120 -0.9898 +vn 0.1127 -0.4565 -0.8826 +vn 0.1418 0.0120 -0.9898 +vn -0.2462 -0.4736 -0.8456 +vn -0.3299 0.0091 -0.9440 +vn -0.1260 -0.9413 -0.3133 +vn -0.1127 -0.4565 -0.8826 +vn -0.1337 -0.9906 -0.0294 +vn 0.1533 -0.9880 -0.0158 +vn -0.1534 -0.9880 -0.0158 +vn -0.2650 -0.9641 -0.0154 +vn 0.1530 -0.9867 0.0547 +vn 0.1260 -0.9413 -0.3133 +vn -0.2413 -0.9704 0.0048 +vn -0.2116 -0.9080 -0.3616 +vn 0.0791 -0.9967 -0.0160 +vn 0.2650 -0.9641 -0.0154 +vn 0.2413 -0.9704 0.0048 +vn 0.2116 -0.9080 -0.3616 +vn 0.2464 0.4622 -0.8519 +vn 0.1146 0.4450 -0.8882 +vn 0.1164 0.9181 -0.3790 +vn 0.2088 0.9021 -0.3777 +vn -0.9445 -0.2527 0.2099 +vn -0.7423 -0.6651 0.0812 +vn -0.8371 -0.4874 0.2486 +vn -0.9854 0.0047 0.1703 +vn -0.9998 0.0169 -0.0040 +vn 0.9445 -0.2527 0.2099 +vn 0.7423 -0.6651 0.0812 +vn 0.9352 -0.3329 -0.1212 +vn 0.7729 -0.6171 -0.1477 +vn 0.9080 -0.2753 -0.3160 +vn 0.9843 0.0622 -0.1650 +vn 0.9908 0.0847 0.1058 +vn 0.9564 -0.1410 -0.2558 +vn 0.8789 0.2188 -0.4238 +vn 0.9300 -0.1110 -0.3503 +vn -0.9840 0.0600 -0.1677 +vn -0.9908 0.0847 0.1058 +vn -0.9832 0.0494 0.1759 +vn -0.9475 0.1641 0.2744 +vn -0.9396 0.2056 0.2735 +vn 0.9916 -0.1072 -0.0724 +vn 0.8195 -0.5358 -0.2033 +vn -0.9916 -0.1072 -0.0724 +vn -0.9636 0.2121 0.1629 +vn -0.9343 0.2035 0.2929 +vn 0.9804 0.0160 -0.1961 +vn 0.9094 0.0735 -0.4094 +vn -0.9804 0.0160 -0.1961 +vn -0.9855 0.0749 0.1525 +vn -0.9428 0.1762 0.2830 +vn -0.9094 0.0735 -0.4094 +vn -0.9352 -0.3329 -0.1212 +vn 0.9428 0.1762 0.2830 +vn 0.9855 0.0749 0.1525 +vn 0.2493 0.9683 0.0141 +vn 0.1360 0.9906 0.0155 +vn -0.9564 -0.1410 -0.2558 +vn -0.8195 -0.5358 -0.2033 +vn 0.9396 0.2056 0.2735 +vn 0.9636 0.2121 0.1629 +vn 0.1195 0.8349 0.5373 +vn 0.1960 0.8321 0.5188 +vn -0.8789 0.2188 -0.4238 +vn 0.9475 0.1641 0.2744 +vn 0.9826 0.0512 0.1786 +vn 0.2458 0.3187 0.9154 +vn 0.1231 0.2914 0.9486 +vn 0.1445 0.0045 0.9895 +vn 0.3293 -0.0091 0.9442 +vn 0.9854 0.0047 0.1703 +vn 0.8371 -0.4874 0.2486 +vn -0.7729 -0.6171 -0.1477 +vn -0.1256 -0.9608 -0.2472 +vn 0.0576 -0.9747 -0.2158 +vn 0.1467 -0.9583 -0.2454 +vn 0.2007 -0.9752 -0.0936 +vn -0.2533 -0.9513 -0.1759 +vn 0.2919 -0.9407 -0.1729 +vn -0.1826 -0.9254 -0.3321 +vn 0.2163 -0.9254 -0.3112 +vn -0.1850 -0.9314 -0.3134 +vn -0.1722 -0.9368 -0.3047 +vn 0.2012 -0.9320 -0.3015 +vn -0.1764 -0.9315 -0.3181 +vn 0.2135 -0.9195 -0.3300 +vn 0.2064 -0.9261 -0.3158 +vn 0.3986 -0.8724 -0.2829 +vn 0.4109 -0.8594 -0.3042 +vn -0.3144 0.9491 0.0171 +vn -0.5969 0.8022 0.0145 +vn -0.2092 0.9777 0.0177 +vn 0.4177 -0.8553 -0.3065 +vn 0.3763 -0.8860 -0.2709 +vn 0.4727 -0.8497 -0.2337 +vn 0.2633 -0.9419 -0.2085 +vn 0.3551 0.9347 0.0169 +vn 0.6639 0.7477 0.0135 +vn 0.6044 -0.7930 -0.0761 +vn 0.4200 -0.8590 -0.2929 +vn -0.5365 -0.8400 -0.0806 +vn -0.4144 -0.8788 -0.2367 +vn 0.1780 0.9839 0.0178 +vn -0.3529 -0.8823 -0.3114 +vn 0.2247 0.9743 0.0176 +vn -0.3196 -0.9068 -0.2750 +vn -0.3617 -0.8825 -0.3006 +vn -0.1688 0.9855 0.0178 +vn -0.2230 -0.9518 -0.2107 +vn -0.0543 -0.9749 -0.2158 +vn -0.3595 -0.8784 -0.3148 +vn -0.3423 -0.8938 -0.2899 +vn 0.9172 -0.3289 -0.2248 +vn 0.3319 -0.9414 -0.0595 +vn 0.3285 -0.9427 -0.0585 +vn 0.8159 0.5339 -0.2220 +vn 0.9192 -0.3228 -0.2255 +vn 0.0973 0.9939 -0.0512 +vn 0.8136 0.5375 -0.2215 +vn -0.6909 0.7057 0.1571 +vn -0.6947 0.7017 0.1582 +vn -0.9621 -0.1135 0.2480 +vn -0.9614 -0.1194 0.2480 +vn -0.5071 -0.8484 0.1517 +vn -0.5057 -0.8493 0.1514 +vn 0.9181 -0.3259 -0.2257 +vn 0.3279 -0.9422 -0.0682 +vn 0.8169 0.5359 -0.2133 +vn 0.1006 0.9941 -0.0402 +vn -0.9999 0.0106 -0.0110 +vn -0.9991 0.0430 -0.0037 +vn -0.9998 0.0127 -0.0133 +vn -0.9971 0.0758 -0.0061 +vn -0.9897 0.1348 -0.0485 +vn -0.9999 -0.0137 -0.0031 +vn 0.9971 -0.0762 0.0059 +vn 0.9896 -0.1356 0.0481 +vn 0.9841 -0.1548 0.0874 +vn -0.0000 0.0158 -0.9999 +vn -0.0000 -0.1169 -0.9931 +vn -0.0000 -0.1207 -0.9927 +vn -0.0000 -0.0158 0.9999 +vn -0.0000 0.0284 0.9996 +vn -0.9996 -0.0267 -0.0004 +vn -0.9999 -0.0172 -0.0003 +vn 0.9999 -0.0106 0.0110 +vn 0.9991 -0.0432 0.0036 +vn -0.0000 0.0298 0.9996 +vn -0.0008 0.0483 0.9988 +vn -0.6915 0.7038 0.1631 +vn 0.0009 -0.1992 -0.9800 +vn -0.0000 -0.1957 -0.9807 +vn 0.0147 0.2452 -0.9694 +vn 0.0203 0.6164 -0.7871 +vn 0.0199 0.6195 -0.7848 +vn -0.0150 -0.2579 0.9660 +vn -0.0159 -0.2595 0.9656 +vn -0.9628 -0.1165 0.2436 +vn 0.9990 -0.0449 0.0022 +vn 0.9987 -0.0513 -0.0008 +vn 0.9954 -0.0956 -0.0015 +vn -0.0213 -0.7492 0.6620 +vn -0.5092 -0.8491 0.1407 +vn -0.0212 -0.7581 0.6517 +vn -0.0200 -0.9356 0.3524 +vn -0.0083 -0.6779 -0.7352 +vn -0.0083 -0.6779 -0.7351 +vn 0.0189 0.7409 -0.6714 +vn 0.0180 0.7406 -0.6717 +vn 0.4678 0.0244 0.8835 +vn 0.8432 0.0548 0.5347 +vn 0.4172 0.0927 0.9041 +vn 0.4653 -0.1686 0.8689 +vn 0.8298 -0.0604 0.5548 +vn 0.4643 -0.0912 0.8810 +vn 0.8307 -0.1254 0.5424 +vn 0.8292 -0.1042 0.5491 +vn -0.4283 -0.1721 0.8871 +vn -0.7799 -0.0676 0.6222 +vn -0.7792 -0.1169 0.6157 +vn -0.4275 -0.0931 0.8992 +vn -0.3889 -0.2075 0.8976 +vn 0.4192 -0.2045 0.8845 +vn -0.4320 0.0249 0.9015 +vn 0.1376 -0.9903 0.0208 +vn 0.2230 -0.8487 -0.4796 +vn 0.3750 -0.8730 -0.3118 +vn 0.3558 -0.5474 -0.7575 +vn 0.7601 -0.2043 -0.6169 +vn 0.6250 -0.5899 -0.5113 +vn 0.3558 0.5619 -0.7468 +vn 0.7601 0.2162 -0.6128 +vn 0.4198 0.1988 -0.8856 +vn 0.2230 0.8578 -0.4631 +vn 0.1376 0.9897 0.0400 +vn 0.3750 0.8789 -0.2949 +vn 0.4198 -0.1816 -0.8893 +vn 0.6250 0.5997 -0.4998 +vn 0.9546 0.2082 0.2129 +vn 0.9546 -0.2123 0.2089 +vn 0.4710 0.8750 0.1125 +vn 0.7849 0.5931 0.1791 +vn 0.4710 -0.8770 0.0956 +vn 0.7849 -0.5965 0.1676 +vn 0.2123 -0.8801 0.4246 +vn 0.4303 -0.2187 0.8758 +vn 0.3538 -0.6018 0.7160 +vn 0.4303 0.2017 0.8798 +vn 0.2123 0.8718 0.4415 +vn 0.3538 0.5878 0.7275 +vn 0.0036 -0.8583 0.5132 +vn 0.0058 -0.5627 0.8266 +vn 0.0058 0.5466 0.8373 +vn 0.0069 0.1807 0.9835 +vn 0.0037 0.8482 0.5297 +vn 0.0069 -0.1997 0.9798 +vn -0.7889 0.0070 0.6145 +vn -0.7959 0.0618 0.6023 +vn -0.7809 -0.1407 0.6086 +vn 0.8373 0.0058 0.5467 +vn 0.7071 -0.0068 0.7071 +vn 0.7071 0.0068 -0.7071 +vn -0.7071 0.0068 -0.7071 +vn -0.7071 -0.0068 0.7071 +vn 0.3814 -0.0415 0.9235 +vn 0.2981 -0.1024 0.9490 +vn 0.2765 -0.1043 0.9553 +vn 0.3719 0.1045 0.9224 +vn 0.3905 -0.0244 0.9203 +vn 0.2717 0.1526 0.9502 +vn 0.2482 0.1489 0.9572 +vn 0.1720 0.1002 0.9800 +vn 0.1642 0.0879 0.9825 +vn 0.1476 0.0045 0.9890 +vn 0.1479 0.0025 0.9890 +vn 0.1873 -0.0715 0.9797 +vn 0.1949 -0.0781 0.9777 +vn -0.8654 -0.5001 -0.0323 +vn -0.5005 -0.8651 -0.0335 +vn -0.8660 -0.4989 -0.0323 +vn -0.4992 -0.8659 -0.0335 +vn -0.0007 -0.9995 -0.0324 +vn 0.0007 -0.9995 -0.0324 +vn 0.4995 -0.8658 -0.0293 +vn 0.5003 -0.8654 -0.0293 +vn 0.8658 -0.4997 -0.0250 +vn 0.8659 -0.4997 -0.0250 +vn 0.9934 -0.1132 -0.0203 +vn 0.9934 -0.1127 -0.0203 +vn 0.9936 0.1118 -0.0179 +vn 0.8841 0.4670 -0.0174 +vn 0.9936 0.1115 -0.0179 +vn 0.5005 0.8656 -0.0164 +vn 0.8831 0.4690 -0.0174 +vn 0.0007 0.9998 -0.0175 +vn 0.4992 0.8663 -0.0164 +vn -0.5867 0.8095 -0.0201 +vn -0.0007 0.9998 -0.0175 +vn -0.9357 0.3521 -0.0229 +vn -0.5854 0.8105 -0.0201 +vn -0.9978 -0.0598 -0.0282 +vn -0.9353 0.3532 -0.0228 +vn -0.9978 -0.0605 -0.0282 +vn -0.7929 -0.4205 0.4409 +vn -0.4477 -0.7797 0.4378 +vn 0.4477 0.7711 0.4528 +vn -0.0000 0.8910 0.4539 +vn -0.4477 0.7711 0.4528 +vn -0.7754 0.4434 0.4496 +vn 0.9001 0.0449 0.4334 +vn 0.8504 -0.3199 0.4178 +vn 0.8993 0.0548 0.4339 +vn -0.0000 -0.8997 0.4366 +vn -0.8954 0.1006 0.4337 +vn -0.8962 0.0947 0.4335 +vn 0.5345 -0.7241 0.4359 +vn 0.5188 -0.7350 0.4366 +vn 0.7754 0.4434 0.4496 +vn 0.8473 -0.3286 0.4174 +vn -0.8991 -0.1052 0.4248 +vn -0.8992 -0.1048 0.4248 +vn -0.7903 -0.4254 0.4410 +vn -0.0000 -0.8462 0.5329 +vn 0.4864 -0.6926 0.5327 +vn 0.5045 -0.6802 0.5318 +vn -0.7283 0.4152 0.5451 +vn -0.8437 0.0942 0.5286 +vn -0.8446 0.0874 0.5282 +vn -0.4205 -0.7335 0.5339 +vn 0.8483 0.0400 0.5280 +vn 0.8040 -0.3027 0.5117 +vn 0.8473 0.0513 0.5286 +vn -0.6006 0.5955 0.5336 +vn -0.2198 -0.8153 -0.5357 +vn -0.4205 -0.7335 0.5340 +vn -0.7421 -0.4012 0.5371 +vn 0.8005 -0.3128 0.5112 +vn -0.8488 -0.1005 0.5191 +vn -0.8489 -0.1000 0.5190 +vn -0.8294 -0.4381 -0.3468 +vn -0.7451 -0.3955 0.5370 +vn -0.1154 -0.9429 0.3126 +vn 0.1337 -0.9906 -0.0294 +vn -0.2566 -0.9662 -0.0250 +vn -0.1111 -0.4968 0.8607 +vn 0.1154 -0.9429 0.3126 +vn 0.2460 -0.5123 0.8228 +vn 0.1111 -0.4968 0.8607 +vn 0.9245 0.2144 0.3152 +vn 0.9750 0.1377 0.1746 +vn 0.9896 0.0945 0.1082 +vn -0.9601 -0.0989 -0.2615 +vn -0.9082 -0.1637 -0.3852 +vn -0.9837 -0.0512 -0.1726 +vn -0.2460 -0.5123 0.8228 +vn -0.2136 -0.9247 0.3150 +vn -0.1445 0.0045 0.9895 +vn -0.1231 0.2914 0.9486 +vn -0.2458 0.3187 0.9154 +vn -0.3293 -0.0091 0.9442 +vn 0.2136 -0.9247 0.3150 +vn 0.9333 0.2069 0.2936 +vn 0.9745 0.1360 0.1782 +vn 0.9879 0.1010 0.1179 +vn -0.9682 -0.1082 -0.2257 +vn -0.9060 -0.1974 -0.3744 +vn -0.9847 -0.0673 -0.1606 +vn -0.1195 0.8349 0.5373 +vn -0.1360 0.9906 0.0155 +vn -0.2493 0.9683 0.0141 +vn -0.1960 0.8321 0.5188 +vn -0.1164 0.9181 -0.3790 +vn -0.1146 0.4450 -0.8882 +vn -0.2464 0.4622 -0.8519 +vn -0.2088 0.9021 -0.3777 +vn -0.9333 0.2069 0.2936 +vn -0.9745 0.1360 0.1782 +vn -0.9314 0.2074 0.2990 +vn -0.9879 0.1010 0.1179 +vn 0.9682 -0.1082 -0.2257 +vn 0.9060 -0.1974 -0.3744 +vn 0.9083 -0.1973 -0.3690 +vn 0.9847 -0.0673 -0.1606 +vn -0.0000 -0.4129 -0.9108 +vn -0.0000 -0.4952 -0.8688 +vn -0.9245 0.2144 0.3152 +vn -0.9742 0.1397 0.1774 +vn -0.9313 0.2136 0.2950 +vn -0.9896 0.0945 0.1082 +vn 0.9601 -0.0989 -0.2615 +vn 0.9082 -0.1637 -0.3852 +vn 0.9061 -0.1639 -0.3901 +vn 0.9831 -0.0533 -0.1753 +vn -0.0000 -0.2676 -0.9635 +vn -0.0000 -0.6758 -0.7370 +vn -0.0000 0.4814 -0.8765 +vn -0.0000 -0.3619 -0.9322 +vn -0.0000 -0.3673 -0.9301 +vn -0.0000 -0.9467 -0.3220 +vn -0.0000 0.1991 -0.9800 +vn -0.0000 -0.2060 -0.9786 +vn 0.2566 -0.9662 -0.0250 +vn 0.2462 -0.4736 -0.8456 +vn 0.3299 0.0091 -0.9440 +vn -0.8837 -0.4675 -0.0217 +vn -0.9660 0.1205 -0.2287 +vn 0.9730 0.0636 -0.2220 +vn -0.9921 -0.1257 -0.0012 +vn -0.0001 0.0096 -1.0000 +vn -0.0000 0.0098 -1.0000 +vn -0.0003 0.0095 -1.0000 +vn 0.0001 0.0096 -1.0000 +vn 0.1145 -0.4185 -0.9010 +vn 0.0004 0.0097 -1.0000 +vn -0.0004 0.0096 -1.0000 +vn 0.0003 0.0097 -1.0000 +vn 0.1131 0.4306 -0.8954 +vn -0.9938 -0.1114 -0.0065 +vn -0.9921 -0.1257 -0.0010 +vn 0.9659 0.2588 0.0047 +vn 0.8603 0.5098 0.0061 +vn 0.0792 -0.9967 -0.0160 +vn -0.9080 -0.2753 -0.3160 +vn -0.9300 -0.1109 -0.3503 +vn 0.9343 0.2035 0.2929 +vn 0.9998 0.0169 -0.0040 +vn -0.1859 -0.9781 -0.0938 +vn 0.0983 0.9938 -0.0515 +vn -0.9841 0.1541 -0.0882 +vn 0.9998 -0.0127 0.0133 +vn -0.0000 0.0464 0.9989 +vn 0.0157 0.2484 -0.9685 +vn -0.0198 -0.9356 0.3525 +vn -0.3889 0.0940 0.9165 +vn 0.3783 0.0960 0.9207 +vn 0.9313 0.2136 0.2950 +vn -0.9061 -0.1639 -0.3901 +vn 0.9314 0.2074 0.2990 +vn -0.9083 -0.1973 -0.3690 vt 0.592751 0.548916 vt 0.578308 0.637378 vt 0.578622 0.548873 @@ -4295,7 +5483,6 @@ vt 0.306859 0.794688 vt 0.540070 0.341778 vt 0.583504 0.341714 vt 0.613965 0.683939 -vt 0.609285 0.722969 vt 0.609285 0.683388 vt 0.586312 0.341635 vt 0.202491 0.788236 @@ -4370,13 +5557,6 @@ vt 0.593003 0.477813 vt 0.592817 0.530359 vt 0.592597 0.360358 vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 vt 0.918599 0.993142 vt 0.937429 0.965601 vt 0.937429 0.981102 @@ -4389,18 +5569,6 @@ vt 0.614296 0.497468 vt 0.653876 0.690444 vt 0.614296 0.774545 vt 0.614295 0.690444 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 vt 0.478498 0.477464 vt 0.436204 0.443481 vt 0.478690 0.239539 @@ -4491,9 +5659,7 @@ vt 0.539880 0.341651 vt 0.578570 0.360301 vt 0.580771 0.000052 vt 0.478181 0.135049 -vt 0.116890 0.461562 vt 0.653877 0.585975 -vt 0.116890 0.461562 vt 0.603930 0.205721 vt 0.613926 0.548867 vt 0.614295 0.205596 @@ -4504,9 +5670,7 @@ vt 0.751117 0.799136 vt 0.430167 0.207444 vt 0.451421 0.360871 vt 0.478915 0.359892 -vt 0.116890 0.461562 vt 0.653876 0.657079 -vt 0.116890 0.461562 vt 0.599713 0.319824 vt 0.603840 0.477656 vt 0.614045 0.323042 @@ -4515,7 +5679,6 @@ vt 0.215017 0.716530 vt 0.211212 0.717469 vt 0.208242 0.588264 vt 0.215022 0.589505 -vt 0.380372 0.927363 vt 0.423132 0.927341 vt 0.490229 0.783288 vt 0.500394 0.793738 @@ -4594,7 +5757,6 @@ vt 0.683099 0.858255 vt 0.676578 0.864596 vt 0.676578 0.858255 vt 0.683099 0.864596 -vt 0.676578 0.870586 vt 0.994011 0.129824 vt 0.429652 0.823549 vt 0.423131 0.803145 @@ -4698,11 +5860,7 @@ vt 0.284111 0.975408 vt 0.992479 0.619180 vt 0.990020 0.595605 vt 0.991617 0.595605 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 vt 0.977701 0.619180 -vt 0.992479 0.619180 vt 0.983993 0.364999 vt 0.980026 0.367478 vt 0.979394 0.364999 @@ -4722,41 +5880,22 @@ vt 0.293925 0.790098 vt 0.280321 0.813782 vt 0.279146 0.790098 vt 0.980607 0.595605 -vt 0.977701 0.619180 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 vt 0.653151 0.846895 vt 0.635810 0.774545 vt 0.648806 0.774545 vt 0.649978 0.787906 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 vt 0.326089 0.714280 vt 0.326057 0.687635 -vt 0.326057 0.687635 -vt 0.116890 0.461562 -vt 0.116890 0.461562 vt 0.991690 0.573888 vt 0.291951 0.835730 vt 0.278926 0.835802 -vt 0.116890 0.461562 -vt 0.116890 0.461562 vt 0.513905 0.809068 vt 0.518238 0.796070 vt 0.518238 0.809068 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 vt 0.979776 0.429893 vt 0.984128 0.439677 vt 0.979796 0.439677 vt 0.983125 0.547624 -vt 0.116890 0.461562 -vt 0.991790 0.547624 vt 0.991790 0.547624 vt 0.290786 0.849082 vt 0.289621 0.862434 @@ -4781,10 +5920,6 @@ vt 0.026114 0.987759 vt 0.000000 0.981707 vt 0.325697 0.714280 vt 0.324102 0.743009 -vt 0.325697 0.714280 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 vt 0.074665 0.997135 vt 0.070333 0.992094 vt 0.074706 0.988591 @@ -4800,14 +5935,8 @@ vt 0.328769 0.929860 vt 0.430167 0.495866 vt 0.430167 0.524692 vt 0.429573 0.504448 -vt 0.571940 0.770988 vt 0.573537 0.779591 vt 0.571941 0.789237 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.116890 0.461562 vt 0.326089 0.658794 vt 0.326089 0.687635 vt 0.324107 0.658931 @@ -4816,7 +5945,6 @@ vt 0.227491 0.794465 vt 0.260253 0.838378 vt 0.587472 0.842593 vt 0.609435 0.797197 -vt 0.619928 0.798684 vt 0.630026 0.858997 vt 0.630026 0.849223 vt 0.274025 0.787601 @@ -4868,7 +5996,6 @@ vt 0.564398 0.885040 vt 0.339238 0.816319 vt 0.334905 0.825701 vt 0.334905 0.816320 -vt 0.116890 0.461562 vt 0.083329 0.992246 vt 0.078997 0.997186 vt 0.079038 0.988642 @@ -4881,9 +6008,7 @@ vt 0.971131 0.439677 vt 0.971114 0.426355 vt 0.334905 0.816319 vt 0.339238 0.788145 -vt 0.339238 0.816319 vt 0.513905 0.822065 -vt 0.518238 0.809068 vt 0.518238 0.822065 vt 0.971098 0.413033 vt 0.975100 0.367478 @@ -4897,7 +6022,6 @@ vt 0.074665 0.974521 vt 0.078997 0.974571 vt 0.083329 0.974622 vt 0.070333 0.974470 -vt 0.116890 0.461562 vt 0.216539 0.985698 vt 0.221661 0.969636 vt 0.239249 0.989889 @@ -4951,7 +6075,6 @@ vt 0.772369 0.497686 vt 0.143020 0.743452 vt 0.149846 0.756426 vt 0.139974 0.743848 -vt 0.070333 0.974470 vt 0.065658 0.998313 vt 0.065658 0.974480 vt 0.116846 0.477622 @@ -5141,7 +6264,6 @@ vt 0.118642 0.978350 vt 0.127236 0.978350 vt 0.214994 0.820151 vt 0.206401 0.852067 -vt 0.206401 0.820151 vt 0.574740 0.967422 vt 0.583322 0.971615 vt 0.574730 0.971615 @@ -5234,7 +6356,6 @@ vt 0.998748 0.239984 vt 0.987968 0.226077 vt 0.998748 0.226053 vt 0.792236 0.514013 -vt 0.751117 0.923555 vt 0.961047 0.440110 vt 0.975075 0.456106 vt 0.961047 0.456106 @@ -5318,7 +6439,6 @@ vt 0.331509 0.762352 vt 0.331509 0.765794 vt 0.329752 0.765305 vt 0.080261 0.845476 -vt 0.079009 0.840719 vt 0.339493 0.845390 vt 0.327922 0.765685 vt 0.328799 0.762352 @@ -5456,7 +6576,6 @@ vt 0.429472 0.613181 vt 0.430167 0.570250 vt 0.429517 0.594689 vt 0.429517 0.570249 -vt 0.429473 0.551821 vt 0.428663 0.550227 vt 0.429312 0.550227 vt 0.429655 0.526273 @@ -5532,7 +6651,6 @@ vt 0.513905 0.830416 vt 0.429301 0.876495 vt 0.423132 0.841456 vt 0.175808 0.883270 -vt 0.079009 0.828671 vt 0.478997 0.683388 vt 0.334905 0.825758 vt 0.214762 0.760239 @@ -5604,25 +6722,19 @@ vt 0.177412 0.997717 vt 0.288711 0.975408 vt 0.288711 0.996052 vt 0.274913 0.975408 -vt 0.116890 0.461562 vt 0.984953 0.367478 vt 0.079009 0.797630 vt 0.987357 0.573888 vt 0.984096 0.413033 vt 0.293346 0.813711 -vt 0.116890 0.461562 vt 0.324102 0.714280 vt 0.980680 0.573888 vt 0.513905 0.796070 -vt 0.116890 0.461562 vt 0.978793 0.547624 vt 0.270333 0.836739 -vt 0.206401 0.852067 vt 0.026114 0.958754 vt 0.029297 0.973844 vt 0.026114 0.964797 -vt 0.609435 0.797197 -vt 0.250236 0.839796 vt 0.325697 0.743098 vt 0.070333 0.997085 vt 0.083341 0.821764 @@ -5630,9 +6742,6 @@ vt 0.206401 0.902711 vt 0.215003 0.904696 vt 0.338182 0.951546 vt 0.573537 0.770988 -vt 0.116890 0.461562 -vt 0.116890 0.461562 -vt 0.326089 0.687635 vt 0.215154 0.793962 vt 0.594203 0.867619 vt 0.215470 0.768719 @@ -5648,7 +6757,6 @@ vt 0.339238 0.825699 vt 0.083329 0.997237 vt 0.975463 0.439677 vt 0.334905 0.788145 -vt 0.513905 0.809068 vt 0.215154 0.976682 vt 0.232180 0.962005 vt 0.751117 0.978285 @@ -5673,7 +6781,6 @@ vt 0.175604 0.966579 vt 0.116890 0.490144 vt 0.600517 0.967422 vt 0.086470 0.741176 -vt 0.214994 0.820151 vt 0.144423 0.978351 vt 0.513905 0.845374 vt 0.710468 0.730573 @@ -5728,7 +6835,6 @@ vt 0.676578 0.993443 vt 0.337791 0.832805 vt 0.206401 0.915149 vt 0.609285 0.772595 -vt 0.423131 0.870065 vt 0.646558 0.880433 vt 0.513905 0.829630 vt 0.749221 0.845709 @@ -5861,24 +6967,17 @@ vt 0.929730 0.437061 vt 0.923236 0.438182 vt 0.923240 0.437032 vt 0.665501 0.765850 -vt 0.657628 0.764388 -vt 0.665663 0.764313 vt 0.946951 0.724606 vt 0.942312 0.723150 -vt 0.947219 0.723063 vt 0.923202 0.452684 vt 0.916483 0.454234 vt 0.916204 0.452684 vt 0.969859 0.268470 vt 0.974506 0.266914 vt 0.974975 0.268469 -vt 0.671107 0.764301 vt 0.671173 0.765839 vt 0.953948 0.724525 -vt 0.953936 0.722986 vt 0.190207 0.729927 -vt 0.186103 0.728414 -vt 0.190313 0.728393 vt 0.171617 0.830018 vt 0.158550 0.824066 vt 0.159660 0.822151 @@ -5891,32 +6990,21 @@ vt 0.157439 0.825981 vt 0.176934 0.802917 vt 0.155869 0.780630 vt 0.166196 0.770646 -vt 0.960661 0.722939 vt 0.960956 0.724478 vt 0.162041 0.818046 vt 0.175020 0.824148 vt 0.199682 0.744456 vt 0.204955 0.730046 vt 0.204704 0.744552 -vt 0.923202 0.452684 vt 0.916382 0.438182 -vt 0.923236 0.438182 vt 0.180948 0.744552 vt 0.185821 0.729949 vt 0.185966 0.744456 vt 0.671131 0.780347 -vt 0.665501 0.765850 -vt 0.671173 0.765839 vt 0.954082 0.739033 -vt 0.946951 0.724606 -vt 0.953948 0.724525 -vt 0.190207 0.729927 vt 0.190261 0.744434 vt 0.960944 0.738985 -vt 0.960956 0.724478 -vt 0.675922 0.780365 vt 0.681372 0.765929 -vt 0.681119 0.780436 vt 0.930098 0.438213 vt 0.088889 0.787728 vt 0.101539 0.793128 @@ -5964,7 +7052,6 @@ vt 0.190401 0.745605 vt 0.961047 0.782675 vt 0.960584 0.740150 vt 0.675620 0.824054 -vt 0.680488 0.781597 vt 0.680592 0.824121 vt 0.365901 0.951373 vt 0.365974 0.993900 @@ -6137,9 +7224,6 @@ vt 0.485370 0.842440 vt 0.513904 0.835563 vt 0.194441 0.729930 vt 0.194408 0.744437 -vt 0.681372 0.765929 -vt 0.675801 0.764319 -vt 0.680895 0.764388 vt 0.194565 0.539250 vt 0.194376 0.728395 vt 0.194879 0.533706 @@ -6160,7 +7244,6 @@ vt 0.392940 0.803050 vt 0.201519 0.461589 vt 0.200358 0.539271 vt 0.962861 0.268406 -vt 0.969596 0.266915 vt 0.440496 0.807421 vt 0.199827 0.729949 vt 0.484209 0.838647 @@ -6279,8 +7362,6 @@ vt 0.675572 0.781530 vt 0.460171 0.880794 vt 0.676065 0.765857 vt 0.481975 0.852570 -vt 0.194441 0.729930 -vt 0.194376 0.728395 vt 0.676658 0.575169 vt 0.677941 0.569638 vt 0.787951 0.497050 @@ -6435,7 +7516,6 @@ vt 0.176233 0.851937 vt 0.170142 0.866881 vt 0.170142 0.851735 vt 0.992872 0.129838 -vt 0.987671 0.145580 vt 0.987671 0.129893 vt 0.998628 0.145531 vt 0.998628 0.129844 @@ -6467,7 +7547,6 @@ vt 0.995852 0.843418 vt 0.999538 0.103036 vt 0.991430 0.102738 vt 0.995779 0.102738 -vt 0.985780 0.748635 vt 0.993888 0.748339 vt 0.997645 0.748635 vt 0.989169 0.344362 @@ -6506,22 +7585,15 @@ vt 0.325698 0.766766 vt 0.322648 0.762218 vt 0.325698 0.762047 vt 0.385194 0.461623 -vt 0.418071 0.436698 vt 0.430166 0.456164 vt 0.261800 0.450042 -vt 0.331002 0.439865 vt 0.332693 0.459710 -vt 0.226007 0.422400 -vt 0.267675 0.431229 vt 0.046677 0.011642 -vt 0.116223 0.024813 -vt 0.053960 0.033329 vt 0.563909 0.849501 vt 0.518666 0.797791 vt 0.563872 0.797623 vt 0.563954 0.728457 vt 0.518867 0.683556 -vt 0.564074 0.683388 vt 0.518748 0.728625 vt 0.564074 0.894829 vt 0.518703 0.849669 @@ -6531,7 +7603,6 @@ vt 0.124631 0.991251 vt 0.206136 0.942946 vt 0.215039 0.938320 vt 0.213269 0.943044 -vt 0.206136 0.928376 vt 0.215039 0.933120 vt 0.206144 0.932998 vt 0.965577 0.984105 @@ -6578,7 +7649,6 @@ vt 0.419690 0.653932 vt 0.429418 0.765000 vt 0.419690 0.764790 vt 0.161838 0.966526 -vt 0.170142 0.851735 vt 0.170142 0.966465 vt 0.152648 0.851757 vt 0.152648 0.966486 @@ -6590,12 +7660,8 @@ vt 0.292378 0.862434 vt 0.964537 0.897609 vt 0.964537 0.782884 vt 0.117617 0.001940 -vt 0.162332 0.023110 vt 0.170151 0.000000 -vt 0.201830 0.027882 -vt 0.012993 0.042023 vt 0.000000 0.021548 -vt 0.377898 0.441574 vt 0.981779 0.879791 vt 0.995498 0.893344 vt 0.981129 0.893313 @@ -6655,63 +7721,14 @@ vt 0.459084 0.953123 vt 0.475016 0.880794 vt 0.467766 0.880812 vt 0.474808 0.952991 -vt 0.200358 0.539271 -vt 0.208241 0.533854 -vt 0.205875 0.539375 vt 0.957756 0.077634 -vt 0.965368 0.072295 -vt 0.965292 0.077756 vt 0.179780 0.539375 -vt 0.183925 0.533731 -vt 0.185292 0.539271 -vt 0.671396 0.575149 -vt 0.664516 0.569630 -vt 0.671724 0.569615 vt 0.944672 0.533923 -vt 0.952142 0.528317 -vt 0.952199 0.533837 -vt 0.189499 0.533702 -vt 0.190010 0.539247 -vt 0.959737 0.533785 -vt 0.961047 0.528255 -vt 0.676658 0.575169 -vt 0.684687 0.569730 -vt 0.682367 0.575246 -vt 0.972821 0.077826 -vt 0.974262 0.072377 vt 0.656289 0.575246 -vt 0.665295 0.575161 -vt 0.194879 0.533706 -vt 0.194565 0.539250 -vt 0.201724 0.533731 -vt 0.677941 0.569638 -vt 0.954094 0.740195 -vt 0.960944 0.738985 -vt 0.960584 0.740150 -vt 0.186339 0.745625 -vt 0.190261 0.744434 -vt 0.190401 0.745605 vt 0.947229 0.739111 -vt 0.954082 0.739033 -vt 0.671042 0.781513 -vt 0.665577 0.780358 -vt 0.671131 0.780347 vt 0.181592 0.745715 -vt 0.185966 0.744456 -vt 0.916382 0.438182 vt 0.916759 0.437032 -vt 0.204060 0.745715 -vt 0.199682 0.744456 -vt 0.204704 0.744552 -vt 0.658035 0.781597 -vt 0.665789 0.781524 -vt 0.194408 0.744437 vt 0.194322 0.745607 -vt 0.199545 0.728414 -vt 0.199827 0.729949 -vt 0.199310 0.745625 -vt 0.675572 0.781530 -vt 0.676065 0.765857 vt 0.141488 0.916338 vt 0.129703 0.890961 vt 0.152618 0.890921 @@ -6720,11 +7737,8 @@ vt 0.129782 0.916338 vt 0.328679 0.967761 vt 0.317516 0.966177 vt 0.297681 0.502185 -vt 0.274879 0.547165 vt 0.278294 0.488857 vt 0.341908 0.645403 -vt 0.312646 0.588881 -vt 0.335063 0.581322 vt 0.152648 0.932747 vt 0.152618 0.917128 vt 0.305669 0.955095 @@ -6736,11 +7750,6 @@ vt 0.294797 0.955539 vt 0.118671 0.932747 vt 0.118641 0.917128 vt 0.297700 0.571531 -vt 0.272885 0.625991 -vt 0.274052 0.564095 -vt 0.333447 0.564346 -vt 0.307032 0.511863 -vt 0.331258 0.503428 vt 0.305802 0.931584 vt 0.263870 0.897599 vt 0.263756 0.863621 @@ -6752,14 +7761,6 @@ vt 0.734834 0.984075 vt 0.723142 0.984071 vt 0.711860 0.973826 vt 0.711991 0.986279 -vt 0.380341 0.549012 -vt 0.355668 0.494867 -vt 0.380224 0.486206 -vt 0.356825 0.556726 -vt 0.250681 0.556462 -vt 0.224450 0.608577 -vt 0.227657 0.548582 -vt 0.248483 0.617416 vt 0.984170 0.344362 vt 0.977558 0.279463 vt 0.984769 0.279463 @@ -6775,37 +7776,27 @@ vt 0.555518 0.917404 vt 0.970977 0.344362 vt 0.977574 0.344362 vt 0.380316 0.618326 -vt 0.357650 0.573647 -vt 0.380372 0.565879 vt 0.361050 0.631907 vt 0.259155 0.475351 -vt 0.230059 0.531546 vt 0.240328 0.461623 -vt 0.252299 0.539476 vt 0.555437 0.904387 vt 0.552249 0.894998 vt 0.557081 0.894998 vt 0.970347 0.279463 vt 0.977456 0.268470 -vt 0.977558 0.279463 vt 0.977701 0.694015 vt 0.990998 0.701278 vt 0.977701 0.701298 vt 0.547674 0.917404 -vt 0.555518 0.917404 -vt 0.571207 0.917404 vt 0.563383 0.904387 vt 0.571328 0.904387 -vt 0.563362 0.917404 vt 0.118641 0.890922 vt 0.977701 0.715865 vt 0.990998 0.708623 vt 0.990998 0.715969 vt 0.977701 0.708581 -vt 0.991980 0.279463 vt 0.984739 0.268470 vt 0.992022 0.268470 -vt 0.984769 0.279463 vt 0.118671 0.851736 vt 0.745835 0.948432 vt 0.745800 0.961230 @@ -6820,22 +7811,12 @@ vt 0.942794 0.456264 vt 0.177768 0.461709 vt 0.956464 0.072151 vt 0.653877 0.569730 -vt 0.957756 0.077634 -vt 0.179780 0.539375 -vt 0.944672 0.533923 -vt 0.656289 0.575246 -vt 0.930098 0.438213 vt 0.657130 0.765929 vt 0.941837 0.724697 vt 0.923200 0.454234 -vt 0.185821 0.729949 -vt 0.916204 0.452684 vt 0.180697 0.730046 -vt 0.947229 0.739111 vt 0.930209 0.452717 -vt 0.657130 0.765929 vt 0.378946 0.993900 -vt 0.181592 0.745715 vt 0.947929 0.782795 vt 0.177412 0.960627 vt 0.603229 0.905585 @@ -6872,9 +7853,7 @@ vt 0.419690 0.778932 vt 0.904258 0.000016 vt 0.743763 0.838827 vt 0.985780 0.723884 -vt 0.194322 0.745607 vt 0.194833 0.461565 -vt 0.962879 0.266853 vt 0.510690 0.823504 vt 0.487822 0.947429 vt 0.428663 0.461780 @@ -6896,7 +7875,6 @@ vt 0.133464 0.871395 vt 0.252085 0.934792 vt 0.297732 0.502307 vt 0.301507 0.582836 -vt 0.297700 0.571531 vt 0.328639 0.929828 vt 0.297731 0.658945 vt 0.867621 0.456105 @@ -6924,7 +7902,6 @@ vt 0.518867 0.894998 vt 0.213269 0.928474 vt 0.129813 0.996170 vt 0.916203 0.452545 -vt 0.129813 0.978351 vt 0.207904 0.977190 vt 0.981129 0.897520 vt 0.429418 0.654142 @@ -6933,7 +7910,6 @@ vt 0.274913 0.974696 vt 0.215153 0.005436 vt 0.996148 0.879822 vt 0.562151 0.996988 -vt 0.562151 0.970144 vt 0.241092 0.971372 vt 0.241092 0.998218 vt 0.255557 0.971368 @@ -6944,3704 +7920,2489 @@ vt 0.487695 0.880950 vt 0.990700 0.907841 vt 0.964358 0.980046 vt 0.976544 0.000026 -vt 0.956464 0.072151 -vt 0.177412 0.533854 -vt 0.943249 0.528419 -vt 0.653877 0.569730 -vt 0.947613 0.740270 -vt 0.180948 0.744552 -vt 0.657378 0.780436 vt 0.129804 0.930688 -vt 0.297731 0.554659 vt 0.322920 0.658794 -vt 0.297584 0.634355 -vt 0.310241 0.571848 -vt 0.294668 0.929828 vt 0.274913 0.924289 -vt 0.547674 0.917404 -vt 0.970347 0.279463 vt 0.547492 0.904387 -vt 0.970173 0.268470 vt 0.990998 0.693932 -vn -1.0000 0.0000 0.0000 -vn 0.0000 -0.9871 -0.1600 -vn 1.0000 0.0000 0.0000 -vn -0.8425 0.0019 0.5387 -vn 0.0000 -1.0000 0.0097 -vn 0.0000 -0.2819 0.9594 -vn 0.0000 -0.0289 0.9996 -vn -0.9934 -0.1149 0.0011 -vn 0.0000 -0.9775 0.2111 -vn 0.0000 -0.0316 -0.9995 -vn 0.9736 0.2281 -0.0100 -vn 0.9733 0.2293 -0.0098 -vn 0.9731 0.2300 -0.0089 -vn 0.0000 -0.7392 0.6735 -vn 0.0000 -0.0097 -1.0000 -vn 0.0000 -0.9731 -0.2305 -vn 0.0000 0.5530 -0.8332 -vn 0.0000 0.9994 -0.0348 -vn -0.9995 -0.0003 -0.0304 -vn 0.9995 -0.0003 -0.0304 -vn 0.9284 -0.0036 -0.3715 -vn -0.9284 -0.0036 -0.3714 -vn 0.0000 1.0000 0.0012 -vn 0.0000 -0.5367 -0.8438 -vn 0.0000 0.0052 1.0000 -vn -0.8422 0.0034 0.5392 -vn -0.8410 0.0028 0.5410 -vn -0.8404 0.0047 0.5420 -vn 0.0000 -0.6972 -0.7169 -vn 0.8420 0.0058 0.5394 -vn 0.0000 0.5419 -0.8404 -vn 0.0000 0.5394 -0.8421 -vn 0.9934 -0.1149 0.0011 -vn 0.9934 -0.1149 0.0003 -vn 0.7671 -0.4112 0.4924 -vn -0.9934 -0.1149 0.0003 -vn 0.0000 -0.6074 0.7944 -vn -0.7671 -0.4112 0.4924 -vn 0.8425 0.0036 0.5387 -vn 0.0000 -0.0067 -1.0000 -vn -0.8425 0.0036 0.5387 -vn 0.0000 0.0067 1.0000 -vn 0.0000 0.0035 1.0000 -vn 0.8425 0.0019 0.5387 -vn 0.0000 -0.0035 -1.0000 -vn -0.9966 0.0818 -0.0008 -vn 0.0000 0.5586 -0.8294 -vn 0.9966 0.0818 -0.0008 -vn 0.9966 0.0818 -0.0002 -vn 0.8023 0.3076 0.5116 -vn -0.9966 0.0818 -0.0002 -vn 0.0000 0.4825 0.8759 -vn -0.8023 0.3076 0.5116 -vn 0.0000 0.0000 0.0000 -vn 0.0000 1.0000 -0.0047 -vn 0.0000 1.0000 -0.0097 -vn 0.0000 1.0000 -0.0027 -vn 0.3535 -0.1464 -0.9239 -vn 0.3827 0.0000 -0.9239 -vn 0.0000 0.0000 -0.9239 -vn -0.3535 0.1464 -0.9239 -vn -0.3827 0.0000 -0.9239 -vn 0.0035 0.9829 -0.1840 -vn 0.0036 0.9823 -0.1873 -vn -0.0036 0.9823 -0.1873 -vn 0.0030 0.9811 -0.1935 -vn -0.0015 0.9820 -0.1887 -vn -0.0019 0.9820 -0.1890 -vn 0.0000 0.9790 -0.2038 -vn 0.0000 0.9991 -0.0429 -vn 0.0000 -0.9991 0.0429 -vn 0.0000 0.0000 1.0000 -vn 0.8418 0.0058 0.5397 -vn 0.8407 0.0065 0.5415 -vn 0.8425 0.0039 0.5387 -vn -0.8425 0.0028 0.5387 -vn 0.9993 -0.0327 -0.0153 -vn -0.9284 -0.0036 -0.3715 -vn 0.8390 0.0080 0.5441 -vn 0.8386 0.0058 0.5447 -vn -0.8415 0.0028 0.5403 -vn -0.8405 0.0014 0.5417 -vn 0.0147 0.9816 -0.1903 -vn 0.0124 0.9821 -0.1881 -vn 0.0156 0.9824 -0.1861 -vn 0.0474 0.9810 -0.1879 -vn 0.9725 0.2329 -0.0100 -vn 0.9959 -0.0009 -0.0906 -vn 0.9983 0.0006 0.0585 -vn -0.0348 0.9991 0.0262 -vn 0.0000 0.0097 1.0000 -vn -0.0479 0.3613 0.9312 -vn 0.9999 0.0108 -0.0001 -vn 0.9993 -0.0321 0.0206 -vn 0.9994 -0.0321 0.0163 -vn 0.9743 0.2251 -0.0097 -vn 0.9741 0.2258 -0.0106 -vn 0.9745 0.2242 -0.0022 -vn 0.9995 -0.0315 0.0025 -vn 0.9996 -0.0272 0.0022 -vn 0.0000 0.9970 -0.0775 -vn 0.9140 0.4057 0.0092 -vn 0.0250 0.3883 -0.9212 -vn 0.0346 0.9719 -0.2330 -vn -0.9998 0.0078 -0.0165 -vn 0.0000 0.0044 1.0000 -vn -0.9126 0.0018 0.4089 -vn 0.8819 0.0021 0.4715 -vn 0.0000 -0.0022 -1.0000 -vn 0.0000 0.0310 -0.9995 -vn 0.0000 0.9999 -0.0131 -vn 0.0000 0.9999 -0.0122 -vn 0.0000 0.0343 0.9994 -vn 0.0000 0.0082 1.0000 -vn 0.0000 -0.0089 1.0000 -vn 0.0000 -1.0000 -0.0048 -vn 0.0000 -0.9993 0.0374 -vn 0.0000 -1.0000 -0.0066 -vn 0.0000 -0.9981 0.0618 -vn -0.0000 0.2181 -0.9759 -vn 1.0000 -0.0026 -0.0020 -vn 0.9999 -0.0100 0.0002 -vn 1.0000 0.0047 0.0047 -vn 1.0000 0.0029 -0.0053 -vn -1.0000 0.0029 -0.0053 -vn -1.0000 -0.0026 -0.0020 -vn -0.9999 -0.0100 0.0002 -vn -1.0000 0.0022 -0.0001 -vn -1.0000 -0.0063 0.0000 -vn 0.0000 0.0413 -0.9991 -vn 0.0000 0.2948 0.9556 -vn 0.0000 0.8943 -0.4475 -vn 0.0000 -0.0733 -0.9973 -vn 0.0000 0.0733 0.9973 -vn -0.9926 0.1211 -0.0012 -vn 0.9993 0.0377 -0.0004 -vn 0.0000 0.0342 0.9994 -vn 0.0000 0.0000 -0.9093 -vn 0.1592 0.3844 -0.9093 -vn -0.9885 -0.0111 -0.1510 -vn 0.0000 0.1701 0.9854 -vn 0.0000 -0.0970 -0.9953 -vn 0.9979 -0.0402 0.0501 -vn -0.2738 0.4318 -0.8594 -vn 0.0000 0.9786 -0.2056 -vn 0.0000 -0.9951 -0.0988 -vn -0.4239 -0.9013 -0.0895 -vn 0.1710 -0.9768 -0.1288 -vn 0.0000 0.9914 0.1307 -vn -0.9992 -0.0394 -0.0052 -vn 0.9996 -0.0272 -0.0036 -vn 0.8988 -0.0042 -0.4384 -vn -0.7896 -0.0059 -0.6136 -vn 1.0000 0.0001 0.0091 -vn -1.0000 0.0000 0.0021 -vn 0.9994 -0.0346 0.0003 -vn -1.0000 -0.0079 0.0001 -vn -0.9985 0.0541 -0.0005 -vn 0.9992 -0.0342 0.0218 -vn 0.0132 0.5967 -0.8023 -vn 0.0162 -0.0611 -0.9980 -vn 0.0775 -0.9969 0.0096 -vn 0.0000 -0.2860 -0.9582 -vn -0.9999 -0.0126 -0.0062 -vn -0.9999 -0.0125 0.0001 -vn -0.9999 -0.0124 0.0073 -vn 0.9346 -0.3556 0.0034 -vn -0.0326 -0.5854 0.8101 -vn -0.0116 0.7094 0.7048 -vn 0.0000 -0.9914 -0.1307 -vn 0.0000 0.9998 -0.0199 -vn 0.2738 0.4318 -0.8594 -vn 0.1333 0.0532 0.9896 -vn 0.0000 0.0537 0.9986 -vn -0.1672 0.0957 0.9813 -vn 0.0000 0.9999 -0.0153 -vn 0.0000 0.0970 0.9953 -vn 0.0000 0.7042 -0.7100 -vn 0.0000 1.0000 -0.0099 -vn 0.0824 0.7771 0.6240 -vn -0.9465 0.0372 -0.3205 -vn 0.0000 0.9968 0.0797 -vn 0.0000 -0.7679 -0.6406 -vn 0.9465 0.0372 -0.3205 -vn 0.0000 0.9936 0.1129 -vn -0.9990 -0.0051 0.0442 -vn 0.0000 -1.0000 0.0055 -vn 0.9990 -0.0051 0.0442 -vn 0.0000 -0.9999 0.0166 -vn 0.0000 -0.6981 0.7160 -vn 0.0000 0.9999 -0.0166 -vn 0.0000 0.0198 0.9998 -vn 0.0000 0.7070 -0.7072 -vn 0.0000 -0.0224 -0.9998 -vn 0.0000 1.0000 -0.0046 -vn 0.0000 -0.9973 -0.0733 -vn 0.0000 0.6259 0.7799 -vn 0.0000 -0.9931 -0.1170 -vn 0.0000 -1.0000 0.0046 -vn 0.0000 0.9978 0.0670 -vn 0.0000 -0.0198 -0.9998 -vn 0.0000 -0.9998 0.0176 -vn -0.0014 1.0000 -0.0096 -vn 0.0000 0.3280 -0.9447 -vn 0.0000 -1.0000 0.0098 -vn 0.0000 0.9999 -0.0170 -vn -0.0013 -0.9998 0.0216 -vn 0.0000 -0.0577 -0.9983 -vn 0.0000 0.9889 0.1484 -vn 0.0000 0.7724 0.6352 -vn 0.0021 0.3616 -0.9323 -vn 0.0038 0.3609 -0.9326 -vn 0.0042 0.3592 -0.9332 -vn 0.0000 0.3176 -0.9482 -vn 0.0016 0.3559 -0.9345 -vn 0.0000 0.3568 -0.9342 -vn 0.0005 0.3635 -0.9316 -vn -0.0018 0.3617 -0.9323 -vn -0.0002 0.3636 -0.9316 -vn 0.0000 -0.9998 0.0210 -vn 0.0000 -0.9998 0.0217 -vn -0.0020 0.9999 -0.0166 -vn 0.0000 1.0000 -0.0096 -vn 0.0000 -1.0000 -0.0038 -vn -0.0312 -0.9995 -0.0038 -vn -0.0195 -0.9929 -0.1170 -vn 0.1252 0.6210 0.7738 -vn 0.0000 0.9999 0.0152 -vn 0.0000 0.7797 0.6261 -vn -0.0014 1.0000 -0.0097 -vn 0.0000 0.4355 0.9002 -vn 0.0000 -0.0224 -0.9997 -vn 0.9465 0.0372 -0.3204 -vn 1.0000 0.0052 -0.0052 -vn 0.0000 0.1871 -0.9823 -vn 0.0000 0.9700 -0.2429 -vn -0.9659 0.2585 0.0111 -vn 0.9813 0.1907 -0.0275 -vn 0.0000 0.1886 0.9820 -vn -0.5087 0.8556 0.0962 -vn -0.9507 0.2307 0.2071 -vn 0.9239 0.3803 0.0427 -vn 0.4938 0.8655 -0.0838 -vn -0.4938 0.8655 -0.0838 -vn -0.8507 0.5109 -0.1237 -vn 0.9067 0.3518 0.2326 -vn 0.2383 0.8589 0.4533 -vn 0.3827 -0.9181 -0.1032 -vn 0.9685 -0.2475 -0.0278 -vn -0.9243 -0.3038 -0.2310 -vn -0.0998 -0.9949 -0.0144 -vn -0.2646 0.6033 -0.7524 -vn -0.6990 0.3607 -0.6175 -vn 0.6810 0.3558 -0.6400 -vn 0.2608 0.5979 -0.7580 -vn -0.2436 0.0146 -0.9698 -vn 0.2436 -0.0146 0.9698 -vn 0.1833 -0.0750 0.9802 -vn 0.1695 -0.0057 0.9855 -vn 0.2016 0.0541 0.9780 -vn 0.2752 0.0799 0.9580 -vn 0.3604 0.0277 0.9324 -vn 0.3529 -0.0877 0.9316 -vn 0.2532 -0.1242 0.9594 -vn 0.9811 0.1936 -0.0019 -vn 0.9914 -0.1311 0.0013 -vn 0.9980 -0.0635 0.0006 -vn -0.9788 -0.2046 0.0020 -vn -0.9914 0.1311 -0.0013 -vn -0.9980 0.0635 -0.0006 -vn -0.9914 0.1312 -0.0013 -vn -0.0094 0.0215 0.9997 -vn 0.6219 -0.7831 0.0076 -vn 0.1312 0.9913 -0.0096 -vn 0.6218 -0.7831 0.0076 -vn 0.1311 0.9913 -0.0096 -vn 0.0001 0.0097 1.0000 -vn -0.0022 -0.0263 -0.9997 -vn -0.0021 -0.0263 -0.9997 -vn -0.1311 -0.9913 0.0096 -vn 0.1034 0.7877 0.6073 -vn -0.0001 -0.0097 -1.0000 -vn 0.0948 0.7102 -0.6976 -vn 0.9736 0.2282 -0.0013 -vn 0.9734 0.2291 -0.0022 -vn -0.8390 0.0080 0.5441 -vn -0.8386 0.0058 0.5447 -vn 0.8425 0.0028 0.5387 -vn -0.0147 0.9816 -0.1903 -vn -0.0156 0.9824 -0.1861 -vn -0.0124 0.9821 -0.1881 -vn -0.0474 0.9810 -0.1879 -vn 0.0033 0.9813 -0.1922 -vn -0.0031 0.9812 -0.1932 -vn 0.0020 0.9820 -0.1890 -vn -0.9701 0.2425 0.0000 -vn 0.8415 0.0028 0.5403 -vn 0.8405 0.0014 0.5418 -vn -0.8420 0.0058 0.5394 -vn 0.9995 -0.0327 0.0003 -vn 0.8422 0.0034 0.5392 -vn 0.8404 0.0047 0.5420 -vn 0.8410 0.0028 0.5410 -vn -0.8418 0.0058 0.5397 -vn -0.8425 0.0039 0.5387 -vn -0.8407 0.0065 0.5415 -vn -0.0035 0.9829 -0.1840 -vn 0.9846 0.1294 -0.1179 -vn 0.9995 -0.0315 0.0003 -vn 0.9749 0.2224 -0.0095 -vn 0.9997 0.0096 -0.0213 -vn 0.0000 0.9980 0.0633 -vn -0.0651 0.3722 0.9259 -vn 0.9999 0.0046 0.0124 -vn 0.9999 0.0027 0.0144 -vn 0.9996 -0.0273 0.0004 -vn 0.9995 -0.0316 0.0003 -vn 0.9738 0.2275 -0.0022 -vn 0.9740 0.2267 -0.0032 -vn 0.9735 0.2286 -0.0022 -vn 0.9996 -0.0273 0.0003 -vn 0.9999 0.0046 0.0119 -vn 0.9999 0.0025 0.0101 -vn -0.0192 0.9943 -0.1046 -vn 0.8869 0.4537 -0.0873 -vn -0.0385 0.4262 -0.9038 -vn 0.0790 0.9958 -0.0465 -vn -0.9850 0.0898 0.1477 -vn 0.9999 -0.0100 0.0001 -vn 1.0000 -0.0001 -0.0017 -vn 1.0000 -0.0000 -0.0059 -vn 1.0000 0.0046 -0.0060 -vn 0.9999 0.0005 -0.0148 -vn 1.0000 -0.0025 -0.0081 -vn 0.9999 -0.0035 -0.0126 -vn 0.9999 -0.0101 0.0001 -vn 1.0000 -0.0008 0.0030 -vn 1.0000 -0.0005 0.0056 -vn 1.0000 0.0019 0.0042 -vn 1.0000 0.0000 0.0024 -vn 1.0000 -0.0001 0.0023 -vn 1.0000 -0.0098 0.0001 -vn 1.0000 -0.0013 0.0011 -vn 1.0000 0.0098 0.0001 -vn 1.0000 0.0022 -0.0001 -vn 1.0000 -0.0004 0.0020 -vn 1.0000 -0.0030 0.0018 -vn 1.0000 -0.0006 0.0052 -vn 1.0000 0.0008 0.0030 -vn 0.9999 0.0034 -0.0131 -vn 0.9999 -0.0012 -0.0136 -vn 0.9998 0.0029 -0.0177 -vn 1.0000 -0.0041 -0.0081 -vn 1.0000 0.0001 -0.0061 -vn 1.0000 0.0024 0.0000 -vn 1.0000 0.0098 -0.0004 -vn -0.9998 0.0029 -0.0177 -vn -0.9999 -0.0012 -0.0136 -vn -0.9999 0.0034 -0.0131 -vn -1.0000 0.0098 -0.0004 -vn -1.0000 0.0001 -0.0061 -vn -1.0000 -0.0041 -0.0081 -vn -1.0000 0.0024 0.0000 -vn -0.9999 -0.0100 0.0001 -vn -0.9999 -0.0035 -0.0126 -vn -1.0000 -0.0025 -0.0081 -vn -0.9999 0.0005 -0.0148 -vn -0.9999 -0.0101 0.0001 -vn -1.0000 -0.0000 -0.0059 -vn -1.0000 0.0046 -0.0060 -vn -1.0000 -0.0001 -0.0017 -vn -1.0000 -0.0005 0.0056 -vn -1.0000 -0.0008 0.0030 -vn -1.0000 0.0018 0.0041 -vn -1.0000 0.0000 0.0024 -vn -1.0000 -0.0013 0.0011 -vn -1.0000 -0.0001 0.0023 -vn -1.0000 -0.0098 0.0001 -vn -1.0000 0.0098 0.0001 -vn -1.0000 0.0008 0.0030 -vn -1.0000 -0.0006 0.0051 -vn -1.0000 0.0047 0.0047 -vn -1.0000 -0.0004 0.0020 -vn -1.0000 -0.0030 0.0018 -vn -1.0000 -0.0045 -0.0044 -vn -1.0000 -0.0071 0.0001 -vn 0.0000 0.8943 -0.4474 -vn -0.9880 0.0321 -0.1513 -vn 0.0000 -0.4489 -0.8936 -vn 0.1672 0.0957 0.9813 -vn -0.9939 -0.0813 -0.0752 -vn -0.9884 -0.0147 -0.1510 -vn 0.9980 -0.0569 0.0287 -vn -0.9968 -0.0499 0.0623 -vn -0.9969 -0.0707 0.0356 -vn 0.0000 0.6252 -0.7804 -vn -0.9982 -0.0540 0.0249 -vn 0.9990 -0.0393 0.0221 -vn -0.9996 0.0172 0.0213 -vn 1.0000 0.0043 -0.0000 -vn 0.0000 0.5989 -0.8008 -vn 0.0164 -0.0607 -0.9980 -vn 0.0165 0.0076 -0.9998 -vn 0.0000 -0.2861 -0.9582 -vn -0.9999 -0.0115 -0.0061 -vn -0.0597 -0.5894 0.8056 -vn -0.0549 0.7394 0.6710 -vn 0.0003 0.9998 -0.0198 -vn -0.1333 0.0532 0.9896 -vn 0.4017 0.5726 -0.7147 -vn -0.4017 0.5726 -0.7147 -vn 0.0014 1.0000 -0.0097 -vn 0.0000 0.7946 0.6071 -vn -0.9465 0.0372 -0.3204 -vn -0.0016 0.3559 -0.9345 -vn -0.0021 0.3616 -0.9323 -vn -0.0042 0.3593 -0.9332 -vn -0.0038 0.3609 -0.9326 -vn -0.0008 0.3634 -0.9316 -vn 0.0019 0.3621 -0.9321 -vn -0.0012 0.3631 -0.9317 -vn 0.0013 -0.9998 0.0216 -vn 0.0014 1.0000 -0.0096 -vn 0.0111 0.9979 0.0646 -vn 0.0000 0.2996 0.9541 -vn 0.0000 1.0000 -0.0100 -vn 0.9976 0.0689 -0.0093 -vn 0.6286 -0.7775 -0.0165 -vn 1.0000 0.0053 -0.0073 -vn 1.0000 -0.0002 -0.0074 -vn 1.0000 0.0075 -0.0000 -vn 1.0000 0.0012 0.0038 -vn 1.0000 0.0079 0.0005 -vn -0.9974 0.0718 -0.0091 -vn -0.1496 0.9886 0.0161 -vn -0.9659 0.2586 0.0110 -vn 0.9659 0.2586 0.0111 -vn 0.0803 0.3893 0.9176 -vn -0.3756 0.8796 0.2920 -vn -0.9239 0.3803 0.0427 -vn 0.9239 0.3803 0.0428 -vn 0.3827 0.9181 0.1032 -vn -0.2524 0.9247 0.2851 -vn 0.9103 0.3068 0.2779 -vn 0.5087 0.8556 0.0962 -vn 0.1106 -0.9635 0.2436 -vn 0.9786 -0.1938 0.0687 -vn -0.9879 -0.1550 0.0049 -vn 0.0040 -0.9937 -0.1117 -vn 0.2017 0.0541 0.9780 -vn 0.2753 0.0800 0.9580 -vn 0.3529 -0.0876 0.9316 -vn 0.0023 0.0263 0.9997 -vn -0.0001 0.0097 1.0000 -vn 0.0094 -0.0215 -0.9997 -vn 0.0022 0.0263 0.9997 -vn 0.0093 -0.0215 -0.9997 -vn 0.1035 0.7877 0.6073 -vn 0.1821 0.0393 -0.9825 -vn 0.1579 0.0817 -0.9841 -vn 0.0000 1.0000 -0.0040 -vn 0.5000 0.8660 -0.0027 -vn 0.4994 -0.8660 0.0267 -vn 0.0011 -0.9995 0.0309 -vn -0.0011 -0.9995 0.0309 -vn -0.9018 -0.4309 0.0319 -vn -0.9971 0.0692 0.0308 -vn -0.9970 0.0714 0.0307 -vn 0.8653 0.5010 0.0162 -vn 0.5010 0.8653 0.0165 -vn 0.8664 0.4991 0.0162 -vn -0.0011 0.9998 0.0191 -vn -0.4992 0.8662 0.0233 -vn 0.0011 0.9998 0.0191 -vn 0.8797 -0.4751 0.0221 -vn 0.5005 -0.8653 0.0267 -vn -0.5870 -0.8089 0.0336 -vn -0.7893 -0.6132 0.0307 -vn -0.7850 -0.6187 0.0307 -vn 0.4987 0.8666 0.0165 -vn -0.5003 0.8655 0.0233 -vn -0.8605 0.5086 0.0279 -vn 0.1906 -0.0335 -0.9811 -vn 0.1872 0.0078 -0.9823 -vn 0.1869 0.0101 -0.9823 -vn -0.5852 -0.8102 0.0336 -vn 0.9912 0.1311 0.0167 -vn 0.9913 0.1309 0.0166 -vn -0.5000 0.8660 -0.0027 -vn -0.8660 0.5000 0.0009 -vn 0.0000 -0.9999 0.0154 -vn -0.5864 -0.8099 0.0135 -vn -0.5862 -0.8101 0.0135 -vn 0.9936 0.1132 0.0044 -vn 0.8660 0.5000 0.0009 -vn 0.9936 0.1131 0.0044 -vn 0.5000 -0.8659 0.0141 -vn -0.9358 -0.3524 0.0087 -vn -0.9982 0.0604 0.0049 -vn -0.9982 0.0605 0.0049 -vn 0.8838 -0.4678 0.0102 -vn -0.9358 -0.3525 0.0087 -vn 0.8838 -0.4679 -0.0041 -vn 0.5000 -0.8660 -0.0002 -vn -0.5000 0.8659 -0.0170 -vn -0.0000 0.9998 -0.0183 -vn 0.5000 0.8659 -0.0170 -vn 0.8660 0.4999 -0.0134 -vn -0.9981 0.0602 -0.0089 -vn -0.9358 -0.3525 -0.0046 -vn -0.9981 0.0604 -0.0089 -vn -0.0000 -1.0000 0.0011 -vn 0.9935 0.1131 -0.0094 -vn 0.9936 0.1130 -0.0094 -vn -0.5864 -0.8100 -0.0007 -vn -0.5861 -0.8102 -0.0007 -vn -0.8660 0.4999 -0.0134 -vn -0.9357 -0.3527 -0.0046 -vn -0.6006 0.5955 -0.5336 -vn -0.7283 0.4152 -0.5451 -vn -0.2198 -0.8153 0.5357 -vn 0.0000 -0.8357 0.5492 -vn -0.8871 -0.3274 0.3253 -vn -0.5580 -0.7533 0.3481 -vn -0.8846 -0.3343 0.3252 -vn 0.4697 -0.8102 0.3506 -vn 0.8315 -0.4341 0.3467 -vn 0.2441 -0.9142 -0.3235 -vn 0.4697 0.8169 0.3349 -vn 0.8136 0.4730 0.3382 -vn -0.9417 0.0560 0.3318 -vn -0.9411 0.0639 0.3320 -vn 0.0000 -0.9361 0.3518 -vn 0.9369 0.1122 0.3310 -vn 0.9375 0.1074 0.3310 -vn -0.1821 0.0393 -0.9825 -vn -0.1822 0.0393 -0.9825 -vn -0.1702 -0.1209 -0.9780 -vn -0.1130 -0.1548 -0.9815 -vn -0.1047 -0.1596 -0.9816 -vn -0.5456 -0.7620 0.3487 -vn -0.1886 -0.0010 -0.9821 -vn -0.1878 0.0039 -0.9822 -vn 0.8837 -0.4678 -0.0154 -vn 0.4999 -0.8660 -0.0116 -vn -0.0000 -0.9996 0.0296 -vn 0.2588 -0.9655 0.0286 -vn 0.7070 0.7068 -0.0261 -vn 0.8659 0.4997 -0.0248 -vn -0.9980 0.0600 -0.0199 -vn -0.9357 -0.3524 -0.0152 -vn -0.9980 0.0604 -0.0199 -vn 0.0000 -0.9999 -0.0103 -vn 0.9934 0.1131 -0.0204 -vn 0.9934 0.1128 -0.0204 -vn -0.5866 -0.8098 -0.0120 -vn -0.5858 -0.8104 -0.0120 -vn -0.8659 0.4997 -0.0248 -vn -0.7070 0.7068 -0.0261 -vn -0.2588 -0.9655 0.0286 -vn 0.1893 -0.0456 -0.9809 -vn 0.1906 -0.0338 -0.9811 -vn -0.3383 0.2001 0.9195 -vn -0.3751 0.0362 0.9263 -vn -0.3331 0.2137 0.9184 -vn -0.2948 -0.2253 0.9286 -vn -0.3441 -0.1182 0.9315 -vn -0.3304 -0.1463 0.9324 -vn 0.3207 -0.0291 0.9467 -vn 0.3108 -0.1408 0.9400 -vn 0.2987 -0.1576 0.9412 -vn -0.2095 -0.2501 0.9453 -vn -0.3111 -0.1947 0.9302 -vn 0.1672 -0.2717 0.9477 -vn 0.1608 -0.2749 0.9479 -vn -0.0000 0.4273 0.9041 -vn -0.1994 0.3681 0.9082 -vn 0.2088 0.3617 0.9086 -vn 0.3331 0.2137 0.9184 -vn 0.3401 0.1973 0.9195 -vn -0.3739 0.0324 0.9269 -vn -0.9356 -0.3528 -0.0152 -vn -0.0000 -0.3122 0.9500 -vn 0.5000 -0.8659 0.0118 -vn 0.8838 -0.4678 0.0080 -vn -0.5000 0.8660 -0.0049 -vn 0.0000 1.0000 -0.0062 -vn 0.5000 0.8660 -0.0049 -vn 0.8660 0.5000 -0.0014 -vn -0.9358 -0.3525 0.0066 -vn -0.9982 0.0604 0.0028 -vn -0.9982 0.0605 0.0028 -vn 0.0000 -0.9999 0.0131 -vn 0.9936 0.1132 0.0023 -vn 0.9936 0.1131 0.0023 -vn -0.5862 -0.8101 0.0113 -vn -0.5864 -0.8100 0.0113 -vn -0.8660 0.5000 -0.0014 -vn -0.2877 0.0123 -0.9576 -vn -0.2456 0.1353 -0.9599 -vn -0.2875 0.0040 -0.9578 -vn -0.2520 -0.2137 -0.9438 -vn -0.1771 -0.2377 -0.9551 -vn -0.1646 -0.2450 -0.9554 -vn 0.2930 0.0306 -0.9556 -vn 0.2482 0.1340 -0.9594 -vn 0.2944 -0.0398 -0.9548 -vn 0.2524 -0.1425 -0.9571 -vn 0.2914 -0.0406 -0.9557 -vn 0.0000 -0.2958 -0.9552 -vn -0.1433 0.2389 -0.9604 -vn -0.2469 0.1363 -0.9594 -vn 0.0000 0.2773 -0.9608 -vn 0.1433 0.2389 -0.9604 -vn -0.2797 -0.1228 -0.9522 -vn -0.2659 -0.1832 -0.9464 -vn 0.1433 -0.2575 -0.9556 -vn 0.2517 -0.1465 -0.9567 -vn 0.4866 -0.8406 0.2380 -vn -0.0000 -0.9709 0.2393 -vn -0.1579 0.0817 -0.9841 -vn -0.0000 -0.1919 -0.9814 -vn 0.1621 -0.0934 -0.9823 -vn -0.0912 0.1484 -0.9847 -vn 0.0912 0.1484 -0.9847 -vn 0.0000 0.1729 -0.9849 -vn -0.1818 -0.0810 -0.9800 -vn 0.0912 -0.1674 -0.9817 -vn 0.1608 -0.0957 -0.9823 -vn 0.9946 -0.1025 0.0180 -vn 0.9685 -0.1066 0.2252 -vn 0.9681 -0.1204 0.2196 -vn 0.9695 0.0996 0.2239 -vn 0.8888 -0.2388 -0.3913 -vn 0.8265 -0.4164 -0.3789 -vn 0.8872 -0.2447 -0.3912 -vn -0.9733 0.0582 0.2219 -vn -0.9147 -0.3399 0.2185 -vn -0.9130 -0.3446 0.2184 -vn 0.8428 0.4888 0.2252 -vn 0.4866 0.8450 0.2217 -vn -0.0000 0.9754 0.2205 -vn -0.4866 0.8450 0.2217 -vn 0.8609 -0.4517 0.2341 -vn 0.8595 -0.4544 0.2342 -vn -0.8187 -0.5339 0.2115 -vn -0.8428 0.4888 0.2252 -vn -0.5753 -0.7831 0.2362 -vn 0.9951 0.0989 -0.0010 -vn 0.9659 0.2588 -0.0025 -vn 0.7876 -0.4940 -0.3683 -vn 0.8898 -0.2422 -0.3869 -vn 0.8897 -0.2422 -0.3869 -vn 0.9009 -0.1935 -0.3885 -vn 0.7590 0.4928 -0.4255 -vn 0.5352 0.6962 -0.4784 -vn 0.5025 0.7178 -0.4820 -vn 0.9131 -0.0646 -0.4026 -vn 0.9135 -0.0545 -0.4031 -vn -0.8994 0.1125 -0.4223 -vn -0.8896 0.1655 -0.4257 -vn -0.9003 0.1073 -0.4219 -vn -0.9066 -0.0888 -0.4126 -vn -0.9058 -0.1000 -0.4118 -vn 0.7936 -0.4755 -0.3795 -vn -0.8851 -0.2410 -0.3981 -vn 0.0011 0.8668 -0.4986 -vn -0.0008 0.8668 -0.4986 -vn -0.8660 0.5000 -0.0048 -vn -0.9659 0.2588 -0.0025 -vn 0.5000 -0.8660 0.0084 -vn -0.9358 -0.3525 0.0034 -vn -0.9982 0.0604 -0.0006 -vn 0.5000 0.8660 -0.0084 -vn 0.8660 0.5000 -0.0048 -vn -0.5000 0.8660 -0.0084 -vn 0.8838 -0.4679 0.0045 -vn -0.8367 -0.5477 0.0053 -vn 0.9587 -0.1807 0.2195 -vn -0.5863 -0.8101 0.0078 -vn 0.9533 0.2539 -0.1638 -vn 0.9429 0.0892 -0.3211 -vn 0.9156 0.2423 -0.3208 -vn -0.7923 0.3968 -0.4635 -vn -0.0022 -0.6242 0.7813 -vn -0.4237 0.8995 0.1063 -vn -0.0022 0.6327 0.7744 -vn 0.0014 0.9861 0.1661 -vn -0.9235 -0.3459 -0.1660 -vn -0.9336 0.0501 -0.3548 -vn -0.8767 -0.3375 -0.3427 -vn 0.8880 0.4032 -0.2212 -vn 0.6700 0.6669 -0.3260 -vn 0.1154 -0.4222 0.8991 -vn 0.0014 -0.9841 0.1777 -vn 0.4253 -0.8971 0.1195 -vn 0.9058 -0.3635 -0.2177 -vn 0.6674 -0.6706 -0.3240 -vn 0.8352 -0.4389 -0.3315 -vn -0.8246 -0.5414 -0.1640 -vn -0.7888 -0.5195 -0.3285 -vn -0.4239 -0.8980 0.1183 -vn -0.6639 0.6605 -0.3508 -vn -0.8069 0.4657 -0.3635 -vn -0.8849 0.3985 -0.2412 -vn 0.9697 -0.1865 -0.1576 -vn 0.9324 -0.1808 -0.3130 -vn 0.1202 0.4570 0.8813 -vn 0.2550 0.9533 0.1620 -vn 0.9795 -0.1257 -0.1573 -vn 0.9823 0.0966 -0.1604 -vn 0.4710 -0.8087 -0.3523 -vn 0.8040 -0.4565 -0.3811 -vn 0.9938 -0.1115 0.0044 -vn 0.3787 0.0550 0.9239 -vn 0.3745 0.0494 0.9259 -vn 0.9936 -0.1117 -0.0178 -vn -0.6669 0.6701 0.3259 -vn -0.8136 0.4730 0.3382 -vn 0.9937 -0.1116 -0.0070 -vn 0.9937 -0.1114 0.0065 -vn 0.9823 -0.1873 0.0018 -vn 0.9921 -0.1257 0.0012 -vn -0.9506 0.2530 -0.1801 -vn -0.9831 0.0579 -0.1735 -vn -0.1831 -0.0764 -0.9801 -vn -0.0010 -0.9390 -0.3438 -vn -0.4582 -0.8137 -0.3578 -vn 0.0012 -0.9390 -0.3438 -vn 0.9417 0.2545 0.2200 -vn 0.8180 0.4686 -0.3336 -vn 0.8837 -0.4680 -0.0041 -vn 0.2441 0.9142 0.3235 -vn -0.1853 -0.2625 0.9470 -vn 0.8835 -0.4681 -0.0154 -vn 0.3744 -0.0300 0.9268 -vn 0.8838 -0.4679 0.0080 -vn -0.2733 -0.1317 -0.9529 -vn 0.9415 -0.1223 -0.3139 -vn 0.8513 0.3098 -0.4234 -vn -0.9503 0.2529 -0.1815 -vn -0.9040 0.2388 -0.3545 -vn -0.7780 0.4215 -0.4659 -vn -0.4424 0.7501 -0.4915 -vn -0.7888 -0.5196 -0.3285 -vn -0.8258 -0.5421 -0.1553 -vn 0.4611 -0.8146 -0.3519 -vn -0.5668 -0.7892 0.2365 -vn 0.2920 0.0256 -0.9561 -vn -0.9024 -0.4297 0.0319 -vn -0.8533 0.5214 -0.0103 -vn -0.9177 0.3972 -0.0076 -vn 0.9935 0.1134 -0.0016 -vn 0.9937 -0.1118 0.0016 -vn 0.9935 0.1135 -0.0006 -vn 0.2588 0.9659 -0.0093 -vn 0.7071 -0.7071 0.0068 -vn 0.7570 -0.6534 0.0063 -vn -0.5000 -0.8660 0.0084 -vn -0.9444 -0.3286 -0.0103 -vn -0.7071 0.7071 -0.0068 -vn -0.7071 -0.7071 0.0068 -vn -0.9445 -0.3282 0.0167 -vn 0.7873 -0.6165 0.0060 -vn 0.9269 -0.3753 0.0036 -vn 0.9937 -0.1118 0.0006 -vn 0.9071 0.4210 -0.0041 -vn 0.9951 0.0988 -0.0012 -vn 0.8513 -0.5246 0.0051 -vn -0.6839 -0.7296 0.0071 -vn -0.8657 0.5005 -0.0039 -vn -0.9158 0.4015 -0.0035 -vn -0.9661 0.2583 -0.0016 -vn -0.9964 0.0177 -0.0830 -vn -0.7815 0.6239 -0.0060 -vn -0.9857 0.1685 -0.0011 -vn -0.9786 0.2056 -0.0020 -vn -0.9857 0.1683 -0.0023 -vn -0.9632 0.2006 -0.1790 -vn -0.8367 -0.5477 0.0084 -vn -0.9066 0.2362 -0.3498 -vn -0.4712 -0.8058 -0.3586 -vn -0.7894 -0.4744 -0.3895 -vn 0.8470 0.3207 -0.4240 -vn -0.8444 0.5082 -0.1695 -vn -0.9579 -0.1245 -0.2586 -vn -0.9524 -0.1186 0.2809 -vn -0.2088 0.3617 0.9086 -vn 0.1994 0.3681 0.9082 -vn 0.9393 -0.1024 0.3273 -vn 0.9394 -0.1021 0.3273 -vn -0.8603 0.5091 0.0278 -vn -0.9417 0.2545 0.2200 -vn -0.4335 0.7551 -0.4919 -vn -0.8006 -0.4537 -0.3914 -vn -0.8866 0.4625 -0.0045 -vn -0.9961 0.0214 0.0862 -vn -0.8593 0.4785 -0.1808 -vn -0.9050 0.2425 -0.3497 -vn -0.9075 0.2398 -0.3449 -vn -0.9368 -0.3499 -0.0009 -vn -0.9983 0.0583 -0.0063 -vn 0.9613 -0.2749 0.0185 -vn 0.9316 -0.3631 0.0187 -vn 0.1530 -0.9867 -0.0547 -vn 0.0791 -0.9967 0.0160 -vn 0.1418 0.0120 0.9898 -vn -0.1127 -0.4565 0.8826 -vn -0.1418 0.0120 0.9898 -vn 0.2462 -0.4736 0.8456 -vn 0.3300 0.0091 0.9440 -vn 0.1260 -0.9413 0.3133 -vn 0.1127 -0.4565 0.8826 -vn 0.1337 -0.9906 0.0294 -vn -0.1533 -0.9880 0.0158 -vn 0.1534 -0.9880 0.0158 -vn 0.2650 -0.9641 0.0154 -vn -0.1530 -0.9867 -0.0547 -vn -0.1260 -0.9413 0.3133 -vn 0.2413 -0.9704 -0.0048 -vn 0.2116 -0.9080 0.3616 -vn -0.0791 -0.9967 0.0160 -vn -0.2650 -0.9641 0.0154 -vn -0.2413 -0.9704 -0.0048 -vn -0.2116 -0.9080 0.3616 -vn -0.2464 0.4622 0.8519 -vn -0.1146 0.4450 0.8882 -vn -0.1164 0.9181 0.3790 -vn -0.2088 0.9021 0.3777 -vn 0.9445 -0.2527 -0.2099 -vn 0.7423 -0.6651 -0.0812 -vn 0.8371 -0.4874 -0.2486 -vn 0.9854 0.0047 -0.1703 -vn 0.9998 0.0169 0.0040 -vn -0.9445 -0.2527 -0.2099 -vn -0.7423 -0.6651 -0.0812 -vn -0.9352 -0.3329 0.1212 -vn -0.7729 -0.6171 0.1477 -vn -0.9080 -0.2753 0.3160 -vn -0.9843 0.0622 0.1649 -vn -0.9908 0.0846 -0.1058 -vn -0.9564 -0.1410 0.2558 -vn -0.8789 0.2188 0.4238 -vn -0.9300 -0.1110 0.3503 -vn 0.9840 0.0600 0.1677 -vn 0.9908 0.0847 -0.1058 -vn 0.9832 0.0494 -0.1759 -vn 0.9475 0.1642 -0.2743 -vn 0.9396 0.2056 -0.2735 -vn -0.9916 -0.1072 0.0726 -vn -0.8195 -0.5358 0.2033 -vn 0.9916 -0.1071 0.0724 -vn 0.9635 0.2124 -0.1630 -vn 0.9343 0.2035 -0.2929 -vn -0.9804 0.0160 0.1961 -vn -0.9094 0.0735 0.4094 -vn 0.9804 0.0160 0.1961 -vn 0.9855 0.0749 -0.1525 -vn 0.9428 0.1762 -0.2830 -vn 0.9094 0.0735 0.4094 -vn 0.9352 -0.3329 0.1212 -vn -0.9428 0.1762 -0.2830 -vn -0.9855 0.0749 -0.1525 -vn -0.2493 0.9683 -0.0141 -vn -0.1360 0.9906 -0.0155 -vn 0.9564 -0.1410 0.2558 -vn 0.8195 -0.5358 0.2033 -vn -0.9396 0.2056 -0.2735 -vn -0.9636 0.2121 -0.1628 -vn -0.1195 0.8349 -0.5373 -vn -0.1960 0.8321 -0.5188 -vn 0.8789 0.2188 0.4238 -vn -0.9475 0.1641 -0.2744 -vn -0.9826 0.0514 -0.1786 -vn -0.2458 0.3187 -0.9154 -vn -0.1231 0.2914 -0.9486 -vn -0.1445 0.0045 -0.9895 -vn -0.3293 -0.0091 -0.9442 -vn -0.9854 0.0047 -0.1703 -vn -0.8371 -0.4874 -0.2486 -vn 0.7729 -0.6171 0.1477 -vn 0.1256 -0.9608 0.2472 -vn -0.0576 -0.9747 0.2158 -vn -0.1467 -0.9583 0.2454 -vn -0.2007 -0.9752 0.0936 -vn 0.2533 -0.9513 0.1759 -vn -0.2919 -0.9407 0.1729 -vn 0.1826 -0.9254 0.3321 -vn -0.2163 -0.9254 0.3112 -vn 0.1850 -0.9314 0.3134 -vn 0.1722 -0.9368 0.3047 -vn -0.2012 -0.9320 0.3015 -vn 0.1764 -0.9315 0.3181 -vn -0.2135 -0.9195 0.3300 -vn -0.2064 -0.9261 0.3159 -vn -0.3986 -0.8724 0.2829 -vn -0.4109 -0.8594 0.3042 -vn 0.3144 0.9491 -0.0171 -vn 0.5969 0.8022 -0.0145 -vn 0.2092 0.9777 -0.0177 -vn -0.4177 -0.8553 0.3065 -vn -0.3763 -0.8860 0.2709 -vn -0.4727 -0.8497 0.2337 -vn -0.2633 -0.9419 0.2085 -vn -0.3551 0.9347 -0.0169 -vn -0.6639 0.7477 -0.0135 -vn -0.6044 -0.7930 0.0761 -vn -0.4200 -0.8590 0.2929 -vn 0.5365 -0.8400 0.0806 -vn 0.4144 -0.8788 0.2367 -vn -0.1780 0.9839 -0.0178 -vn 0.3529 -0.8823 0.3114 -vn -0.2247 0.9743 -0.0176 -vn 0.3196 -0.9068 0.2750 -vn 0.3617 -0.8825 0.3006 -vn 0.1688 0.9855 -0.0178 -vn 0.2230 -0.9518 0.2107 -vn 0.0543 -0.9749 0.2158 -vn 0.3595 -0.8784 0.3148 -vn 0.3423 -0.8938 0.2899 -vn -0.9172 -0.3289 0.2248 -vn -0.3319 -0.9414 0.0595 -vn -0.3285 -0.9427 0.0585 -vn -0.8159 0.5339 0.2220 -vn -0.9192 -0.3228 0.2255 -vn -0.0973 0.9939 0.0512 -vn -0.8136 0.5375 0.2215 -vn 0.6909 0.7057 -0.1571 -vn 0.6947 0.7016 -0.1582 -vn 0.9621 -0.1135 -0.2480 -vn 0.9614 -0.1194 -0.2480 -vn 0.5071 -0.8484 -0.1517 -vn 0.5057 -0.8493 -0.1514 -vn -0.9181 -0.3259 0.2257 -vn -0.3279 -0.9422 0.0682 -vn -0.8169 0.5359 0.2133 -vn -0.1006 0.9941 0.0402 -vn 0.9999 0.0106 0.0110 -vn 0.9991 0.0430 0.0037 -vn 0.9998 0.0127 0.0133 -vn 0.9971 0.0758 0.0061 -vn 0.9897 0.1349 0.0486 -vn 0.9999 -0.0137 0.0031 -vn -0.9971 -0.0762 -0.0059 -vn -0.9896 -0.1356 -0.0481 -vn -0.9841 -0.1548 -0.0874 -vn 0.0000 0.0158 0.9999 -vn -0.0000 -0.1169 0.9931 -vn 0.0000 -0.1207 0.9927 -vn 0.0000 -0.0160 -0.9999 -vn 0.0000 0.0283 -0.9996 -vn 0.9996 -0.0267 0.0004 -vn 0.9999 -0.0172 0.0003 -vn -0.9999 -0.0106 -0.0110 -vn -0.9991 -0.0431 -0.0036 -vn 0.0000 0.0297 -0.9996 -vn 0.0008 0.0483 -0.9988 -vn 0.6915 0.7038 -0.1631 -vn -0.0009 -0.1992 0.9800 -vn 0.0000 -0.1958 0.9807 -vn -0.0147 0.2452 0.9694 -vn -0.0203 0.6164 0.7871 -vn -0.0199 0.6195 0.7848 -vn 0.0150 -0.2579 -0.9660 -vn 0.0159 -0.2595 -0.9656 -vn 0.9628 -0.1165 -0.2436 -vn -0.9990 -0.0449 -0.0022 -vn -0.9987 -0.0513 0.0008 -vn -0.9954 -0.0956 0.0015 -vn 0.0213 -0.7492 -0.6620 -vn 0.5092 -0.8491 -0.1407 -vn 0.0212 -0.7581 -0.6517 -vn 0.0200 -0.9356 -0.3524 -vn 0.0083 -0.6778 0.7352 -vn -0.0190 0.7409 0.6714 -vn -0.0180 0.7406 0.6717 -vn -0.4678 0.0244 -0.8835 -vn -0.8432 0.0548 -0.5347 -vn -0.4172 0.0927 -0.9041 -vn -0.4653 -0.1686 -0.8689 -vn -0.8298 -0.0604 -0.5548 -vn -0.4643 -0.0912 -0.8810 -vn -0.8307 -0.1254 -0.5424 -vn -0.8292 -0.1042 -0.5491 -vn 0.4283 -0.1721 -0.8871 -vn 0.7799 -0.0676 -0.6222 -vn 0.7793 -0.1169 -0.6157 -vn 0.4275 -0.0931 -0.8992 -vn 0.3889 -0.2075 -0.8976 -vn -0.4192 -0.2045 -0.8845 -vn 0.4320 0.0249 -0.9015 -vn -0.1376 -0.9903 -0.0208 -vn -0.2230 -0.8487 0.4796 -vn -0.3750 -0.8730 0.3118 -vn -0.3558 -0.5474 0.7575 -vn -0.7601 -0.2043 0.6169 -vn -0.6250 -0.5899 0.5113 -vn -0.3558 0.5620 0.7467 -vn -0.7601 0.2162 0.6128 -vn -0.4198 0.1988 0.8856 -vn -0.2230 0.8578 0.4631 -vn -0.1376 0.9897 -0.0400 -vn -0.3750 0.8789 0.2949 -vn -0.4198 -0.1816 0.8893 -vn -0.6250 0.5997 0.4998 -vn -0.9546 0.2082 -0.2129 -vn -0.9546 -0.2123 -0.2089 -vn -0.4710 0.8750 -0.1125 -vn -0.7849 0.5931 -0.1791 -vn -0.4710 -0.8770 -0.0956 -vn -0.7849 -0.5965 -0.1676 -vn -0.2123 -0.8801 -0.4246 -vn -0.4303 -0.2187 -0.8758 -vn -0.3538 -0.6018 -0.7160 -vn -0.4303 0.2017 -0.8798 -vn -0.2123 0.8718 -0.4415 -vn -0.3538 0.5878 -0.7275 -vn -0.0036 -0.8583 -0.5132 -vn -0.0058 -0.5627 -0.8266 -vn -0.0058 0.5466 -0.8373 -vn -0.0069 0.1807 -0.9835 -vn -0.0036 0.8482 -0.5297 -vn -0.0069 -0.1997 -0.9798 -vn 0.7889 0.0070 -0.6145 -vn 0.7959 0.0618 -0.6023 -vn 0.7809 -0.1407 -0.6085 -vn -0.8373 0.0058 -0.5467 -vn -0.7071 -0.0068 -0.7071 -vn -0.7071 0.0068 0.7071 -vn 0.7071 0.0068 0.7071 -vn 0.7071 -0.0068 -0.7071 -vn -0.3813 -0.0415 -0.9235 -vn -0.2981 -0.1024 -0.9490 -vn -0.2765 -0.1043 -0.9553 -vn -0.3719 0.1045 -0.9224 -vn -0.3905 -0.0244 -0.9203 -vn -0.2717 0.1526 -0.9502 -vn -0.2482 0.1489 -0.9572 -vn -0.1720 0.1002 -0.9800 -vn -0.1642 0.0879 -0.9825 -vn -0.1476 0.0045 -0.9890 -vn -0.1479 0.0024 -0.9890 -vn -0.1873 -0.0715 -0.9797 -vn -0.1949 -0.0781 -0.9777 -vn 0.8654 -0.5001 0.0323 -vn 0.5005 -0.8651 0.0335 -vn 0.8660 -0.4989 0.0323 -vn 0.4992 -0.8659 0.0335 -vn 0.0007 -0.9995 0.0324 -vn -0.0007 -0.9995 0.0324 -vn -0.4995 -0.8658 0.0293 -vn -0.5003 -0.8654 0.0293 -vn -0.8658 -0.4997 0.0250 -vn -0.8659 -0.4996 0.0250 -vn -0.9934 -0.1132 0.0203 -vn -0.9934 -0.1127 0.0203 -vn -0.9936 0.1118 0.0179 -vn -0.8841 0.4670 0.0174 -vn -0.9936 0.1115 0.0179 -vn -0.5005 0.8656 0.0164 -vn -0.8830 0.4690 0.0174 -vn -0.0007 0.9998 0.0175 -vn -0.4992 0.8664 0.0164 -vn 0.5867 0.8095 0.0201 -vn 0.0007 0.9998 0.0175 -vn 0.9357 0.3521 0.0229 -vn 0.5854 0.8105 0.0201 -vn 0.9978 -0.0597 0.0282 -vn 0.9353 0.3531 0.0228 -vn 0.9978 -0.0605 0.0282 -vn 0.7929 -0.4205 -0.4409 -vn 0.4477 -0.7797 -0.4378 -vn -0.4477 0.7711 -0.4528 -vn 0.0000 0.8910 -0.4539 -vn 0.4477 0.7711 -0.4528 -vn 0.7754 0.4434 -0.4496 -vn -0.9001 0.0449 -0.4334 -vn -0.8504 -0.3199 -0.4178 -vn -0.8993 0.0548 -0.4339 -vn -0.0000 -0.8997 -0.4366 -vn 0.8954 0.1006 -0.4337 -vn 0.8962 0.0947 -0.4335 -vn -0.5345 -0.7241 -0.4359 -vn -0.5188 -0.7350 -0.4366 -vn -0.7754 0.4434 -0.4496 -vn -0.8473 -0.3286 -0.4174 -vn 0.8991 -0.1052 -0.4248 -vn 0.8992 -0.1048 -0.4248 -vn 0.7903 -0.4254 -0.4410 -vn 0.0000 -0.8462 -0.5329 -vn -0.4863 -0.6926 -0.5327 -vn -0.5045 -0.6802 -0.5318 -vn 0.7283 0.4153 -0.5451 -vn 0.8437 0.0942 -0.5285 -vn 0.8446 0.0874 -0.5282 -vn 0.4205 -0.7335 -0.5340 -vn -0.8482 0.0400 -0.5281 -vn -0.8040 -0.3028 -0.5117 -vn -0.8472 0.0513 -0.5287 -vn 0.6005 0.5955 -0.5336 -vn 0.2198 -0.8153 0.5357 -vn 0.7421 -0.4012 -0.5370 -vn -0.8005 -0.3128 -0.5112 -vn 0.8488 -0.1005 -0.5190 -vn 0.8489 -0.1000 -0.5190 -vn 0.8294 -0.4381 0.3468 -vn 0.7452 -0.3955 -0.5369 -vn -0.8136 0.4730 0.3381 -vn 0.1154 -0.9429 -0.3126 -vn -0.1337 -0.9906 0.0294 -vn 0.2566 -0.9662 0.0250 -vn 0.1111 -0.4968 -0.8607 -vn -0.1154 -0.9429 -0.3126 -vn -0.2460 -0.5123 -0.8228 -vn -0.1111 -0.4968 -0.8607 -vn -0.9245 0.2144 -0.3152 -vn -0.9750 0.1377 -0.1746 -vn -0.9896 0.0945 -0.1082 -vn 0.9601 -0.0989 0.2615 -vn 0.9082 -0.1637 0.3852 -vn 0.9837 -0.0512 0.1726 -vn 0.2460 -0.5123 -0.8228 -vn 0.2136 -0.9247 -0.3150 -vn 0.1445 0.0045 -0.9895 -vn 0.1231 0.2914 -0.9486 -vn 0.2458 0.3187 -0.9154 -vn 0.3293 -0.0091 -0.9442 -vn -0.2136 -0.9247 -0.3150 -vn -0.9333 0.2069 -0.2936 -vn -0.9745 0.1360 -0.1782 -vn -0.9879 0.1010 -0.1180 -vn 0.9682 -0.1083 0.2257 -vn 0.9060 -0.1974 0.3744 -vn 0.9847 -0.0673 0.1606 -vn 0.1195 0.8349 -0.5373 -vn 0.1360 0.9906 -0.0155 -vn 0.2493 0.9683 -0.0141 -vn 0.1960 0.8321 -0.5188 -vn 0.1164 0.9181 0.3790 -vn 0.1146 0.4450 0.8882 -vn 0.2464 0.4622 0.8519 -vn 0.2088 0.9021 0.3777 -vn 0.9333 0.2069 -0.2936 -vn 0.9745 0.1360 -0.1782 -vn 0.9314 0.2074 -0.2990 -vn 0.9879 0.1007 -0.1179 -vn -0.9682 -0.1082 0.2255 -vn -0.9060 -0.1974 0.3744 -vn -0.9083 -0.1973 0.3690 -vn -0.9847 -0.0673 0.1606 -vn 0.0000 -0.4129 0.9108 -vn 0.0000 -0.4952 0.8688 -vn 0.9245 0.2144 -0.3152 -vn 0.9742 0.1397 -0.1774 -vn 0.9313 0.2136 -0.2950 -vn 0.9896 0.0945 -0.1082 -vn -0.9601 -0.0989 0.2615 -vn -0.9082 -0.1637 0.3852 -vn -0.9061 -0.1639 0.3901 -vn -0.9831 -0.0533 0.1753 -vn 0.0000 -0.2676 0.9635 -vn 0.0000 -0.6758 0.7370 -vn 0.0000 0.4814 0.8765 -vn 0.0000 -0.3619 0.9322 -vn 0.0000 -0.3673 0.9301 -vn 0.0000 -0.9467 0.3220 -vn 0.0000 0.1991 0.9800 -vn 0.0000 -0.2060 0.9786 -vn -0.2566 -0.9662 0.0250 -vn -0.2462 -0.4736 0.8456 -vn -0.3300 0.0091 0.9440 -vn 0.8837 -0.4675 0.0217 -vn 0.9660 0.1205 0.2287 -vn -0.9730 0.0636 0.2220 -vn 0.0000 0.0096 1.0000 -vn -0.1145 -0.4185 0.9010 -vn -0.0004 0.0097 1.0000 -vn 0.0002 0.0097 1.0000 -vn 0.0003 0.0096 1.0000 -vn -0.0002 0.0097 1.0000 -vn -0.1131 0.4306 0.8955 -vn 0.9921 -0.1256 0.0010 -vn -0.9659 0.2588 -0.0047 -vn -0.8603 0.5097 -0.0061 -vn 0.9080 -0.2753 0.3160 -vn 0.9300 -0.1110 0.3503 -vn -0.9343 0.2035 -0.2929 -vn -0.9998 0.0169 0.0040 -vn 0.1859 -0.9781 0.0938 -vn -0.0983 0.9938 0.0515 -vn 0.9841 0.1542 0.0882 -vn -0.9998 -0.0127 -0.0133 -vn 0.0000 0.0464 -0.9989 -vn -0.0157 0.2484 0.9685 -vn 0.0198 -0.9356 -0.3525 -vn 0.3889 0.0940 -0.9165 -vn -0.3783 0.0960 -0.9207 -vn -0.9313 0.2136 -0.2950 -vn 0.9061 -0.1639 0.3901 -vn -0.9314 0.2074 -0.2990 -vn 0.9083 -0.1973 0.3690 -s off -f 808/860/431 810/861/431 807/862/431 -f 811/863/432 813/864/432 814/865/432 -f 816/866/433 818/867/433 815/868/433 -f 820/869/434 822/870/434 819/871/434 -f 824/872/431 826/873/431 823/874/431 -f 828/875/431 830/876/431 827/877/431 -f 831/878/433 833/879/433 834/880/433 -f 835/881/433 837/882/433 838/883/433 -f 840/884/431 842/885/431 839/886/431 -f 843/887/435 841/888/435 840/889/435 -f 845/890/436 847/891/436 848/892/436 -f 850/893/437 852/894/437 849/895/437 -f 854/896/431 855/897/431 853/898/431 -f 856/899/438 858/900/438 859/901/438 -f 861/902/439 851/903/439 860/904/439 -f 863/905/440 865/906/440 862/907/440 -f 866/908/433 852/909/433 861/910/433 -f 862/911/431 860/912/431 867/913/431 -f 872/914/441 874/915/442 875/916/443 -f 823/917/444 877/918/444 876/919/444 -f 878/920/445 825/921/445 824/922/445 -f 880/923/446 870/924/446 881/925/446 -f 891/926/447 893/927/447 890/928/447 -f 895/929/445 897/930/445 894/931/445 -f 899/932/448 895/933/448 898/934/448 -f 900/935/449 895/936/449 894/937/449 -f 901/938/450 814/939/450 902/940/450 -f 903/941/451 811/942/451 901/938/451 -f 809/943/452 900/935/452 810/861/452 -f 809/944/453 899/932/453 898/934/453 -f 824/922/454 811/945/454 878/920/454 -f 905/946/455 907/947/455 904/948/455 -f 855/897/456 848/949/457 908/950/458 -f 909/951/459 859/952/459 910/953/459 -f 833/879/460 904/954/460 834/880/460 -f 912/955/461 914/956/461 911/957/461 -f 913/958/462 928/959/462 914/956/462 -f 927/960/462 936/961/462 928/959/462 -f 935/962/462 944/963/462 936/961/462 -f 943/964/462 890/928/462 944/963/462 -f 909/965/463 952/966/463 951/967/463 -f 953/968/464 955/969/464 956/970/464 -f 957/971/465 959/972/465 960/973/465 -f 951/967/463 962/974/463 961/975/463 -f 822/870/466 965/976/466 963/977/466 -f 957/978/467 966/979/467 821/980/467 -f 821/981/468 964/982/468 822/870/468 -f 830/876/438 967/983/438 968/984/438 -f 962/974/433 969/985/433 970/986/433 -f 965/976/431 971/987/431 972/988/431 -f 952/966/433 973/989/433 969/985/433 -f 959/972/469 975/990/469 960/973/469 -f 967/983/431 977/991/431 968/984/431 -f 955/969/433 979/992/433 956/970/433 -f 859/993/470 973/994/470 910/995/470 -f 964/982/471 981/996/471 971/987/471 -f 858/900/431 980/997/431 859/901/431 -f 960/998/472 981/999/472 966/979/472 -f 983/1000/473 821/980/473 820/1001/473 -f 984/1002/431 822/870/431 963/977/431 -f 985/1003/433 951/967/433 961/975/433 -f 983/1004/474 958/1005/474 957/971/474 -f 989/1006/433 953/968/433 988/1007/433 -f 986/1008/433 909/965/433 951/967/433 -f 991/1009/475 909/1010/475 990/1011/475 -f 992/1012/431 856/899/431 991/1013/431 -f 808/860/476 991/1013/476 809/943/476 -f 809/1014/477 990/1011/477 816/1015/477 -f 817/1016/478 990/1017/478 986/1008/478 -f 837/882/479 988/1007/479 832/1018/479 -f 833/879/480 983/1004/480 905/1019/480 -f 836/1020/478 986/1008/478 985/1003/478 -f 993/1021/481 819/871/481 984/1002/481 -f 905/946/482 820/1001/482 906/1022/482 -f 996/1023/476 827/877/476 995/1024/476 -f 994/1025/483 820/869/483 819/871/483 -f 979/1026/484 997/1027/484 998/1028/484 -f 970/1029/484 999/1030/484 1000/1031/484 -f 969/1032/484 1001/1033/484 999/1030/484 -f 974/1034/485 981/1035/485 975/1036/485 -f 1002/1037/486 997/1038/486 1000/1039/486 -f 1004/1040/486 999/1041/486 1001/1042/486 -f 1006/1043/487 1008/1044/487 998/1045/487 -f 980/1046/484 1005/1047/484 1004/1048/484 -f 972/1049/484 1007/1050/484 1006/1051/484 -f 973/1052/488 1004/1048/489 1001/1033/490 -f 977/1053/484 1003/1054/484 1002/1055/484 -f 971/1056/491 1008/1057/492 1007/1050/490 -f 841/1058/431 1010/1059/431 854/896/431 -f 1011/1060/433 1012/1061/433 1013/1062/433 -f 844/1063/440 1009/1064/440 841/1065/440 -f 845/890/437 1012/1066/437 846/1067/437 -f 1009/1068/493 867/1069/494 1010/1070/494 -f 1012/1071/495 866/1072/495 1013/1073/495 -f 1009/1068/496 863/1074/497 862/1075/498 -f 1015/1076/499 849/1077/499 1012/1071/499 -f 892/1078/446 1030/1079/446 893/1080/446 -f 1029/1081/446 880/923/446 1030/1079/446 -f 1031/1082/446 1028/1083/446 885/1084/446 -f 1030/1079/446 1032/1085/446 1031/1082/446 -f 1033/1086/446 885/1084/446 884/1087/446 -f 893/1080/446 1031/1082/446 1033/1086/446 -f 947/1088/462 1037/1089/462 883/1090/462 -f 944/963/462 1037/1089/462 1036/1091/462 -f 939/1092/462 1036/1091/462 947/1088/462 -f 936/961/462 1036/1091/462 1039/1093/462 -f 931/1094/462 1039/1093/462 939/1092/462 -f 928/959/462 1039/1093/462 1041/1095/462 -f 921/1096/462 1041/1095/462 931/1094/462 -f 914/956/462 1041/1095/462 1043/1097/462 -f 920/1098/461 1043/1097/461 921/1096/461 -f 1045/1099/461 914/956/461 1043/1097/461 -f 883/1090/447 1033/1100/447 884/1101/447 -f 890/928/447 1033/1100/447 1037/1089/447 -f 1032/1085/446 888/1102/446 1028/1083/446 -f 880/923/446 889/1103/446 1032/1085/446 -f 877/1104/500 1026/1105/500 912/1106/500 -f 825/1107/431 919/1108/431 826/1109/431 -f 877/918/501 924/1110/501 923/1111/501 -f 916/1112/502 924/1110/502 826/1109/502 -f 834/880/503 1047/1113/504 1046/1114/505 -f 994/1025/506 907/1115/506 906/1116/506 -f 904/948/455 908/1117/455 1047/1118/455 -f 810/861/452 1050/1119/452 1049/1120/452 -f 816/866/451 1051/1121/451 899/1122/451 -f 1051/1121/450 896/1123/450 899/1122/450 -f 900/935/449 1052/1124/449 1050/1119/449 -f 894/931/445 902/1125/445 1052/1126/445 -f 1053/1127/431 994/1025/431 993/1021/431 -f 1054/1128/431 996/1023/431 995/1024/431 -f 835/881/433 1057/1129/433 1056/1130/433 -f 1058/1131/433 834/880/433 1046/1114/433 -f 903/941/433 818/867/433 1059/1132/433 -f 807/862/431 1049/1120/431 1060/1133/431 -f 1060/1133/431 824/872/431 823/874/431 -f 1061/1134/507 1063/1135/507 1064/1136/507 -f 1011/1060/433 1046/1114/433 846/1137/433 -f 1056/1130/433 844/1138/433 843/1139/433 -f 1052/1126/445 814/1140/445 813/1141/445 -f 1050/1119/449 813/1142/449 812/1143/449 -f 1049/1120/508 812/1143/508 824/872/508 -f 1047/1118/455 848/892/455 847/891/455 -f 1046/1114/509 847/1144/510 846/1137/510 -f 1048/1145/511 908/950/512 907/1115/511 -f 815/868/451 901/938/451 1051/1121/451 -f 1051/1121/450 902/940/450 897/1146/450 -f 853/898/431 1048/1145/431 1053/1127/431 -f 807/862/431 839/886/431 1054/1128/431 -f 1059/1132/433 843/1139/433 876/1147/433 -f 818/867/433 1056/1130/433 1059/1132/433 -f 807/862/431 995/1024/431 808/860/431 -f 982/1148/484 1002/1055/484 1005/1047/484 -f 1005/1149/486 1000/1039/486 999/1041/486 -f 978/1150/484 1000/1031/484 997/1027/484 -f 995/1024/476 992/1012/476 808/860/476 -f 837/882/478 985/1003/478 989/1006/478 -f 989/1006/433 961/975/433 954/1151/433 -f 968/984/431 982/1152/431 858/900/431 -f 955/969/433 970/986/433 978/1153/433 -f 857/1154/438 968/984/438 858/900/438 -f 961/975/463 955/969/463 954/1151/463 -f 876/919/435 840/889/435 823/917/435 -f 1060/1133/431 840/884/431 839/886/431 -f 818/867/433 836/1020/433 835/881/433 -f 827/877/431 857/1154/431 992/1012/431 -f 844/1138/433 1058/1131/433 1011/1060/433 -f 1057/1129/433 831/878/433 1058/1131/433 -f 1055/1155/431 993/1021/431 996/1023/431 -f 1014/1156/513 866/1072/514 863/1074/515 -f 1015/1076/516 867/1069/516 850/1157/516 -f 844/1138/433 1013/1062/433 1014/1158/433 -f 854/896/431 1015/1159/431 845/1160/431 -f 976/1161/484 1006/1051/484 1003/1054/484 -f 1003/1162/487 998/1045/487 997/1038/487 -f 974/1163/484 998/1028/484 1008/1057/484 -f 996/1023/481 984/1002/481 828/875/481 -f 832/1018/479 987/1164/479 833/879/479 -f 988/1007/433 958/1005/433 987/1164/433 -f 828/875/431 963/977/431 829/1165/431 -f 956/970/433 974/1166/433 959/972/433 -f 967/983/431 972/988/431 976/1167/431 -f 963/977/466 967/983/466 829/1165/466 -f 958/1005/464 956/970/464 959/972/464 -f 867/913/431 851/1168/431 850/1169/431 -f 863/1170/433 861/910/433 864/1171/433 -f 864/1172/439 860/904/439 865/1173/439 -f 841/1058/431 853/898/431 842/885/431 -f 838/883/433 832/1018/433 831/878/433 -f 873/1174/517 1066/1175/517 874/915/517 -f 1064/1136/518 1067/1176/518 1068/1177/518 -f 1070/1178/519 1072/1179/519 1069/1180/519 -f 1074/1181/519 1076/1182/519 1073/1183/519 -f 1069/1180/519 1078/1184/519 1077/1185/519 -f 1079/1186/518 1068/1177/518 1080/1187/518 -f 1072/1188/445 1082/1189/445 1078/1190/445 -f 1083/1191/433 1085/1192/433 1086/1193/433 -f 1074/1194/435 1089/1195/435 1087/1196/435 -f 1064/1197/520 1084/1198/520 1061/1199/520 -f 873/1200/521 1086/1201/521 1079/1202/521 -f 1061/1203/522 1091/1204/522 1092/1205/522 -f 872/1206/435 1090/1207/435 873/1208/435 -f 1094/1209/523 1084/1210/523 1083/1191/523 -f 1096/1211/524 1062/1212/525 1061/1134/525 -f 1087/1213/526 875/916/527 1098/1214/526 -f 1087/1213/528 1075/1215/528 1074/1181/528 -f 1071/1216/529 1096/1211/530 1072/1179/529 -f 1081/1217/433 1094/1209/433 1082/1218/433 -f 1096/1219/531 1081/1220/531 1072/1221/531 -f 1093/1222/521 1101/1223/521 1099/1224/521 -f 1088/1225/433 1094/1209/433 1089/1226/433 -f 1093/1222/521 1102/1227/521 1083/1228/521 -f 1079/1202/521 1085/1229/521 1064/1230/521 -f 1093/1231/433 1086/1193/433 1090/1232/433 -f 1078/1190/445 1088/1233/445 1074/1234/445 -f 1079/1186/518 1065/1235/518 873/1174/518 -f 1073/1183/519 1078/1184/519 1074/1181/519 -f 1104/1236/433 1099/1237/433 1103/1238/433 -f 1094/1239/445 1103/1240/445 1089/1241/445 -f 1089/1241/445 1106/1242/445 1087/1243/445 -f 1083/1244/486 1104/1245/486 1094/1246/486 -f 1106/1247/435 1100/1248/435 1107/1249/435 -f 1105/1250/435 1101/1251/435 1100/1248/435 -f 1103/1240/445 1105/1252/445 1089/1241/445 -f 872/1253/431 1106/1254/431 1107/1255/431 -f 872/1256/521 1100/1257/521 1093/1222/521 -f 1099/1237/433 1108/1258/433 1103/1238/433 -f 1095/1259/532 1091/1260/532 1084/1210/532 -f 1096/1261/533 1109/1262/533 1095/1263/533 -f 1092/1264/534 1109/1265/534 1110/1266/534 -f 1061/1267/535 1110/1268/535 1096/1269/535 -f 1112/1270/536 1114/1271/536 1111/1272/536 -f 1143/1273/431 1148/1274/431 1141/1275/431 -f 1114/1276/537 1140/1277/537 1139/1278/537 -f 1158/1279/433 1160/1280/433 1155/1281/433 -f 1111/1282/538 1161/1283/538 1112/1284/538 -f 1190/1285/539 1192/1286/539 1189/1287/539 -f 1191/1288/540 1194/1289/540 1192/1286/540 -f 1193/1290/541 1196/1291/541 1194/1292/541 -f 1195/1293/542 1198/1294/542 1196/1291/542 -f 1197/1295/543 1200/1296/543 1198/1297/543 -f 1199/1298/544 1202/1299/544 1200/1296/544 -f 1201/1300/545 1204/1301/545 1202/1299/545 -f 1203/1302/546 1206/1303/546 1204/1304/546 -f 1205/1305/547 1208/1306/547 1206/1303/547 -f 1207/1307/548 1210/1308/548 1208/1306/548 -f 1209/1309/549 1212/1310/549 1210/1308/549 -f 1211/1311/550 1189/1287/550 1212/1312/550 -f 1200/1313/551 1216/1314/551 1213/1315/551 -f 1196/1316/552 1220/1317/552 1221/1318/552 -f 1224/1319/553 1222/1320/553 1210/1321/553 -f 1225/1322/554 1206/1323/554 1226/1324/554 -f 1180/1325/555 1182/1326/555 1205/1327/555 -f 1174/1328/556 1176/1329/556 1199/1330/556 -f 1227/1331/557 1172/1332/557 1195/1333/557 -f 1209/1334/558 1188/1335/558 1211/1336/558 -f 1264/1337/559 1266/1338/431 1263/1339/431 -f 1265/1340/445 1268/1341/445 1266/1342/445 -f 1267/1343/433 1270/1344/433 1268/1345/433 -f 1272/1346/521 1263/1347/521 1271/1348/521 -f 1268/1349/435 1273/1350/435 1271/1351/435 -f 1274/1352/560 1276/1353/560 1277/1354/560 -f 1278/1355/502 1280/1356/502 1281/1357/502 -f 1282/1358/560 1276/1353/560 1275/1359/560 -f 1269/1360/561 1286/1361/561 1284/1362/561 -f 1267/1363/562 1282/1364/562 1275/1365/562 -f 1283/1366/563 1287/1367/563 1288/1368/563 -f 1292/1369/564 1294/1370/564 1291/1371/564 -f 1277/1372/433 1297/1373/433 1295/1374/433 -f 1278/1375/565 1299/1376/565 1298/1377/565 -f 1282/1358/502 1299/1378/502 1298/1379/502 -f 1285/1380/502 1295/1381/502 1292/1382/502 -f 1300/1383/566 1277/1372/566 1295/1374/566 -f 1286/1361/567 1292/1369/567 1291/1371/567 -f 1301/1384/433 1302/1385/433 1303/1386/433 -f 1304/1387/502 1302/1388/568 1305/1389/569 -f 1287/1390/502 1307/1391/502 1308/1392/502 -f 1281/1357/502 1309/1393/502 1310/1394/502 -f 1276/1353/563 1296/1395/563 1277/1354/563 -f 1299/1376/570 1310/1396/570 1306/1397/570 -f 1287/1367/563 1299/1378/563 1283/1366/563 -f 1292/1382/502 1297/1398/502 1293/1399/502 -f 1308/1400/486 1313/1401/486 1311/1402/486 -f 1314/1403/484 1302/1388/484 1301/1404/484 -f 1312/1405/484 1307/1406/484 1315/1407/484 -f 1316/1408/571 1305/1409/571 1317/1410/571 -f 1287/1367/572 1311/1411/572 1288/1368/572 -f 1318/1412/502 1312/1405/568 1315/1407/569 -f 1296/1395/502 1314/1413/502 1301/1414/502 -f 1318/1415/431 1315/1416/431 1307/1417/431 -f 1306/1397/431 1321/1418/431 1299/1376/431 -f 1290/1419/433 1322/1420/433 1323/1421/433 -f 1325/1422/431 1327/1423/431 1324/1424/431 -f 1290/1425/573 1328/1426/573 1329/1427/573 -f 1331/1428/433 1333/1429/433 1334/1430/433 -f 1307/1417/431 1335/1431/431 1336/1432/431 -f 1296/1433/433 1334/1430/433 1301/1384/433 -f 1324/1424/431 1287/1434/431 1308/1435/431 -f 1328/1436/502 1338/1437/502 1339/1438/502 -f 1326/1439/502 1341/1440/502 1327/1441/502 -f 1343/1442/574 1329/1443/574 1342/1444/574 -f 1335/1445/575 1345/1446/575 1344/1447/575 -f 1299/1448/576 1322/1449/576 1276/1450/576 -f 1321/1451/563 1323/1452/563 1322/1453/563 -f 1306/1454/577 1337/1455/577 1320/1456/577 -f 1296/1457/578 1323/1458/578 1331/1459/578 -f 1340/1460/502 1347/1461/502 1341/1440/502 -f 1331/1462/502 1349/1463/502 1332/1464/502 -f 1306/1465/579 1350/1466/579 1351/1467/579 -f 1346/1468/580 1353/1469/580 1347/1470/580 -f 1354/1471/581 1349/1472/581 1348/1473/581 -f 1267/1343/582 1356/1474/582 1357/1475/582 -f 1265/1476/583 1359/1477/583 1266/1338/583 -f 1356/1474/584 1361/1478/584 1357/1475/584 -f 1362/1479/585 1359/1477/585 1358/1480/585 -f 1360/1481/586 1365/1482/586 1361/1478/586 -f 1362/1479/587 1367/1483/587 1363/1484/587 -f 1360/1481/433 1369/1485/433 1364/1486/433 -f 1367/1483/431 1371/1487/431 1363/1484/431 -f 1353/1469/588 1366/1488/588 1362/1479/588 -f 1354/1471/589 1365/1482/589 1355/1489/589 -f 1352/1490/590 1349/1491/590 1355/1492/590 -f 1365/1493/591 1352/1490/591 1355/1492/591 -f 1366/1494/445 1364/1495/445 1367/1496/445 -f 1369/1497/445 1367/1496/445 1364/1495/445 -f 1369/1498/592 1371/1499/592 1370/1500/592 -f 1368/1501/521 1363/1502/521 1371/1503/521 -f 1356/1504/435 1363/1505/435 1360/1506/435 -f 1268/1341/593 1359/1507/593 1356/1508/593 -f 1264/1337/594 1298/1377/595 1265/1476/596 -f 1269/1509/597 1274/1510/597 1300/1383/597 -f 1347/1511/598 1354/1512/598 1348/1513/598 -f 1354/1514/599 1362/1515/599 1361/1516/599 -f 1351/1517/600 1339/1518/600 1338/1519/600 -f 1361/1516/601 1358/1520/601 1357/1521/601 -f 1343/1522/575 1314/1523/575 1330/1524/575 -f 1310/1394/502 1319/1525/502 1318/1412/502 -f 1336/1526/602 1344/1527/602 1373/1528/602 -f 1294/1370/603 1304/1529/603 1316/1408/603 -f 1290/1530/572 1374/1531/572 1314/1413/572 -f 1294/1370/604 1376/1532/604 1375/1533/604 -f 1376/1532/605 1312/1534/605 1319/1535/605 -f 1316/1536/606 1373/1537/606 1376/1538/606 -f 1374/1539/486 1305/1540/486 1314/1541/486 -f 1375/1533/607 1319/1535/607 1309/1542/607 -f 1377/1543/567 1280/1544/567 1279/1545/567 -f 1377/1543/567 1291/1371/567 1378/1546/567 -f 1378/1546/564 1309/1542/564 1280/1544/564 -f 1291/1371/564 1375/1533/564 1378/1546/564 -f 1272/1346/561 1279/1545/561 1264/1547/561 -f 1284/1362/561 1377/1543/561 1272/1346/561 -f 1269/1360/521 1273/1548/521 1270/1549/521 -f 1284/1362/521 1271/1348/521 1273/1548/521 -f 1373/1528/608 1380/1550/608 1379/1551/608 -f 1337/1552/608 1373/1528/608 1379/1551/608 -f 1342/1444/608 1328/1553/608 1380/1550/608 -f 1293/1399/502 1303/1554/502 1304/1387/502 -f 1373/1555/433 1311/1556/433 1288/1557/433 -f 1311/1556/433 1376/1558/433 1288/1557/433 -f 1374/1559/431 1316/1560/431 1317/1561/431 -f 1374/1559/431 1342/1562/431 1289/1563/431 -f 1381/1564/433 1287/1565/433 1283/1566/433 -f 1383/1567/433 1296/1433/433 1277/1372/433 -f 1386/1568/445 1388/1569/445 1385/1570/445 -f 1390/1571/433 1392/1572/433 1389/1573/433 -f 1393/1574/486 1395/1575/486 1389/1576/486 -f 1396/1577/431 1398/1578/431 1399/1579/431 -f 1390/1580/435 1402/1581/435 1400/1582/435 -f 1403/1583/609 1396/1584/609 1404/1585/609 -f 1399/1586/486 1407/1587/486 1405/1588/486 -f 1401/1589/435 1409/1590/435 1402/1581/435 -f 1396/1584/486 1410/1591/486 1404/1585/486 -f 1393/1592/433 1408/1593/433 1401/1594/433 -f 1413/1595/521 1414/1596/521 1412/1597/521 -f 1416/1598/521 1418/1599/521 1415/1600/521 -f 1419/1601/521 1421/1602/521 1416/1598/521 -f 1408/1603/435 1422/1604/435 1409/1590/435 -f 1423/1605/431 1424/1606/431 1425/1607/431 -f 1399/1608/445 1427/1609/445 1410/1610/445 -f 1411/1611/433 1417/1612/433 1416/1613/433 -f 1399/1614/431 1429/1615/431 1426/1616/431 -f 1430/1617/610 1424/1618/610 1431/1619/610 -f 1425/1607/611 1433/1620/611 1423/1605/611 -f 1434/1621/433 1435/1622/433 1436/1623/433 -f 1438/1624/612 1440/1625/612 1437/1626/612 -f 1427/1627/613 1441/1628/613 1442/1629/613 -f 1435/1622/614 1443/1630/614 1444/1631/614 -f 1445/1632/615 1438/1624/615 1437/1626/615 -f 1446/1633/433 1448/1634/433 1449/1635/433 -f 1433/1620/616 1450/1636/616 1451/1637/616 -f 1441/1628/617 1453/1638/617 1442/1629/617 -f 1443/1630/618 1455/1639/618 1444/1631/618 -f 1457/1640/619 1459/1641/619 1456/1642/619 -f 1461/1643/431 1463/1644/431 1460/1645/431 -f 1463/1644/431 1457/1646/431 1464/1647/431 -f 1465/1648/431 1460/1645/431 1452/1649/431 -f 1452/1650/620 1466/1651/620 1453/1652/620 -f 1462/1653/621 1468/1654/621 1467/1655/621 -f 1460/1656/622 1469/1657/622 1466/1651/622 -f 1470/1658/431 1472/1659/431 1473/1660/431 -f 1475/1661/623 1477/1662/623 1474/1663/623 -f 1479/1664/433 1481/1665/433 1478/1666/433 -f 1477/1662/624 1481/1667/624 1482/1668/624 -f 1483/1669/433 1479/1664/433 1478/1666/433 -f 1486/1670/625 1474/1671/625 1485/1672/625 -f 1488/1673/431 1470/1658/431 1487/1674/431 -f 1490/1675/626 1492/1676/626 1489/1677/626 -f 1494/1678/627 1485/1679/627 1493/1680/627 -f 1495/1681/433 1484/1682/433 1483/1669/433 -f 1465/1683/628 1498/1684/628 1496/1685/628 -f 1497/1686/629 1489/1677/629 1498/1684/629 -f 1500/1687/431 1487/1674/431 1499/1688/431 -f 1484/1682/433 1447/1689/433 1446/1633/433 -f 1450/1636/431 1499/1688/431 1451/1637/431 -f 1439/1690/630 1493/1691/630 1440/1625/630 -f 1454/1692/433 1495/1681/433 1455/1639/433 -f 1462/1693/631 1446/1694/631 1449/1695/631 -f 1386/1696/435 1503/1697/435 1501/1698/435 -f 1464/1699/632 1456/1642/632 1403/1700/632 -f 1389/1576/633 1505/1701/633 1504/1702/633 -f 1386/1703/431 1506/1704/431 1502/1705/431 -f 1508/1706/634 1510/1707/634 1507/1708/634 -f 1511/1709/433 1468/1710/433 1449/1635/433 -f 1502/1705/431 1513/1711/431 1514/1712/431 -f 1391/1713/433 1509/1714/433 1392/1572/433 -f 1502/1715/635 1515/1716/635 1503/1697/635 -f 1484/1717/636 1518/1718/636 1516/1719/636 -f 1465/1648/431 1520/1720/431 1461/1643/431 -f 1459/1641/637 1521/1721/637 1522/1722/637 -f 1517/1723/638 1524/1724/638 1518/1725/638 -f 1523/1726/639 1526/1727/639 1524/1728/639 -f 1457/1646/431 1467/1729/431 1458/1730/431 -f 1448/1634/433 1511/1709/433 1449/1635/433 -f 1463/1731/640 1403/1583/640 1469/1732/640 -f 1484/1682/433 1523/1733/433 1517/1734/433 -f 1528/1735/641 1530/1736/642 1508/1706/643 -f 1525/1737/644 1528/1735/644 1526/1738/644 -f 1458/1730/431 1531/1739/431 1521/1740/431 -f 1468/1710/433 1525/1741/433 1523/1733/433 -f 1512/1742/433 1529/1743/433 1468/1710/433 -f 1467/1729/431 1532/1744/431 1531/1739/431 -f 1533/1745/644 1531/1746/644 1532/1747/644 -f 1526/1738/644 1534/1748/644 1533/1745/644 -f 1534/1748/645 1521/1749/646 1531/1746/646 -f 1528/1735/647 1522/1750/648 1534/1748/649 -f 1535/1751/640 1527/1752/640 1448/1753/640 -f 1469/1732/640 1504/1702/640 1535/1751/640 -f 1536/1754/639 1532/1755/639 1520/1756/639 -f 1524/1728/639 1533/1757/639 1536/1754/639 -f 1537/1758/638 1520/1759/638 1519/1760/638 -f 1518/1725/638 1536/1761/638 1537/1758/638 -f 1538/1762/650 1530/1763/650 1512/1764/650 -f 1459/1641/651 1508/1765/651 1538/1762/651 -f 1496/1766/621 1519/1767/621 1465/1768/621 -f 1516/1719/652 1537/1769/652 1496/1766/652 -f 1539/1770/635 1510/1771/635 1391/1772/635 -f 1503/1697/635 1507/1773/635 1539/1770/635 -f 1513/1774/634 1515/1775/634 1514/1776/634 -f 1522/1750/634 1507/1708/634 1515/1775/634 -f 1385/1777/486 1540/1778/486 1506/1779/486 -f 1504/1702/653 1540/1778/653 1403/1583/653 -f 1504/1780/632 1511/1781/632 1527/1782/632 -f 1403/1700/632 1541/1783/632 1504/1780/632 -f 1400/1582/435 1391/1772/435 1390/1580/435 -f 1501/1698/435 1539/1770/435 1400/1582/435 -f 1542/1784/630 1500/1785/630 1450/1786/630 -f 1516/1787/654 1479/1788/654 1484/1789/654 -f 1498/1684/655 1544/1790/655 1516/1787/655 -f 1516/1787/656 1496/1685/656 1498/1684/656 -f 1543/1791/657 1488/1792/657 1500/1793/657 -f 1544/1790/626 1480/1794/626 1479/1788/626 -f 1489/1677/626 1546/1795/626 1544/1790/626 -f 1545/1796/625 1471/1797/625 1488/1798/625 -f 1472/1799/624 1549/1800/624 1473/1801/624 -f 1547/1802/623 1472/1799/623 1471/1803/623 -f 1550/1804/622 1448/1805/622 1447/1806/622 -f 1466/1651/622 1535/1807/622 1550/1804/622 -f 1551/1808/620 1447/1806/620 1454/1809/620 -f 1453/1652/620 1550/1804/620 1551/1808/620 -f 1541/1783/619 1512/1764/619 1511/1781/619 -f 1456/1642/619 1538/1762/619 1541/1783/619 -f 1443/1810/617 1551/1811/617 1454/1812/617 -f 1442/1629/617 1551/1811/617 1552/1813/617 -f 1430/1617/615 1432/1814/615 1425/1815/615 -f 1445/1632/615 1553/1816/615 1430/1617/615 -f 1554/1817/613 1443/1810/613 1428/1818/613 -f 1427/1627/613 1552/1813/613 1554/1817/613 -f 1432/1814/612 1542/1784/612 1450/1786/612 -f 1556/1819/658 1445/1632/658 1555/1820/658 -f 1445/1632/659 1434/1821/659 1436/1822/659 -f 1430/1617/659 1557/1823/659 1445/1632/659 -f 1558/1824/445 1428/1825/445 1411/1826/445 -f 1410/1610/445 1554/1827/445 1558/1824/445 -f 1559/1828/435 1414/1829/435 1398/1830/435 -f 1409/1590/435 1412/1831/435 1559/1828/435 -f 1413/1595/521 1429/1832/521 1405/1833/521 -f 1415/1600/521 1560/1834/521 1413/1595/521 -f 1416/1598/521 1422/1835/521 1419/1601/521 -f 1415/1600/521 1412/1597/521 1422/1835/521 -f 1561/1836/486 1411/1837/486 1393/1574/486 -f 1404/1585/486 1558/1838/486 1561/1836/486 -f 1562/1839/435 1398/1830/435 1397/1840/435 -f 1402/1581/435 1559/1828/435 1562/1839/435 -f 1504/1702/660 1393/1574/660 1389/1576/660 -f 1403/1583/609 1561/1836/609 1504/1702/609 -f 1501/1698/435 1397/1840/435 1386/1696/435 -f 1400/1582/435 1562/1839/435 1501/1698/435 -f 1418/1599/661 1431/1841/661 1560/1834/661 -f 1429/1832/661 1431/1841/661 1424/1842/661 -f 1549/1800/662 1546/1843/662 1492/1844/662 -f 1473/1801/662 1492/1844/662 1491/1845/662 -f 1439/1846/433 1495/1681/433 1494/1847/433 -f 1452/1649/431 1499/1688/431 1465/1648/431 -f 1499/1688/431 1497/1848/431 1465/1648/431 -f 1494/1847/433 1483/1669/433 1486/1849/433 -f 1487/1674/431 1490/1850/431 1497/1848/431 -f 1486/1849/433 1478/1666/433 1475/1851/433 -f 1482/1668/662 1480/1852/662 1546/1843/662 -f 1478/1666/433 1476/1853/433 1475/1851/433 -f 1490/1850/431 1473/1660/431 1491/1854/431 -f 1444/1631/618 1439/1846/618 1438/1855/618 -f 1441/1856/616 1451/1637/616 1452/1649/616 -f 1436/1623/663 1444/1631/663 1438/1855/663 -f 1417/1857/661 1557/1858/661 1418/1599/661 -f 1428/1859/433 1434/1621/433 1417/1612/433 -f 1423/1605/611 1441/1856/611 1426/1616/611 -f 1426/1616/431 1424/1606/431 1423/1605/431 -f 1563/1860/664 1548/1861/664 1547/1862/664 -f 1493/1863/431 1474/1864/431 1482/1865/431 -f 1395/1866/433 1565/1867/433 1564/1868/433 -f 1389/1869/445 1564/1870/445 1390/1871/445 -f 1401/1872/521 1394/1873/521 1393/1874/521 -f 1390/1580/435 1565/1875/435 1401/1589/435 -f 1567/1876/431 1387/1877/431 1566/1878/431 -f 1396/1879/521 1566/1880/521 1397/1881/521 -f 1385/1777/486 1567/1882/486 1396/1584/486 -f 1397/1840/435 1387/1883/435 1386/1696/435 -f 1568/1884/431 1407/1885/431 1406/1886/431 -f 1398/1887/445 1406/1888/445 1399/1889/445 -f 1414/1829/435 1568/1890/435 1398/1830/435 -f 1405/1833/521 1569/1891/521 1414/1596/521 -f 1570/1892/433 1421/1893/433 1420/1894/433 -f 1416/1895/486 1571/1896/486 1411/1897/486 -f 1411/1898/445 1570/1899/445 1408/1900/445 -f 1408/1603/435 1420/1901/435 1419/1902/435 -f 1468/1903/622 1520/1904/622 1467/1905/622 -f 1461/1906/619 1523/1907/619 1446/1908/619 -f 1572/1909/435 1573/1910/435 1574/1911/435 -f 1575/1912/486 1576/1913/486 1577/1914/486 -f 1572/1909/435 1574/1911/435 1578/1915/435 -f 1575/1912/486 1579/1916/486 1576/1913/486 -f 1572/1909/435 1578/1915/435 1580/1917/435 -f 1575/1912/486 1581/1918/486 1579/1916/486 -f 1572/1909/435 1580/1917/435 1582/1919/435 -f 1575/1912/486 1583/1920/486 1581/1918/486 -f 1572/1909/435 1582/1919/435 1584/1921/435 -f 1575/1912/486 1585/1922/486 1583/1920/486 -f 1572/1909/435 1584/1921/435 1586/1923/435 -f 1575/1912/486 1587/1924/486 1585/1922/486 -f 1572/1909/435 1586/1923/435 1588/1925/435 -f 1575/1912/486 1589/1926/486 1587/1924/486 -f 1572/1909/435 1588/1925/435 1573/1910/435 -f 1575/1912/486 1577/1914/486 1589/1926/486 -f 1563/1927/665 1592/1928/665 1590/1929/665 -f 1482/1930/658 1563/1931/658 1590/1932/658 -f 1591/1933/666 1594/1934/666 1592/1935/666 -f 1563/1936/667 1593/1937/667 1591/1938/667 -f 1555/1939/668 1592/1940/668 1594/1941/668 -f 1555/1942/669 1593/1943/669 1556/1944/669 -f 1595/1945/670 1596/1946/670 1597/1947/670 -f 1598/1948/671 1596/1949/671 1594/1950/671 -f 1599/1951/672 1601/1952/672 1598/1953/672 -f 1601/1954/673 1602/1955/673 1603/1956/673 -f 1602/1955/674 1605/1957/674 1603/1956/674 -f 1605/1958/675 1606/1959/675 1607/1960/675 -f 1607/1961/676 1608/1962/676 1606/1963/676 -f 1595/1945/677 1608/1964/677 1593/1965/677 -f 1597/1966/678 1594/1967/678 1595/1968/678 -f 1594/1941/679 1599/1951/679 1598/1953/679 -f 1606/1959/680 1593/1937/680 1607/1960/680 -f 1591/1969/681 1595/1968/681 1593/1970/681 -f 1597/1971/682 1596/1972/682 1592/1973/682 -f 1596/1949/683 1599/1974/683 1592/1975/683 -f 1606/1963/684 1608/1962/684 1591/1976/684 -f 1608/1977/685 1597/1978/685 1591/1979/685 -f 1649/1980/686 1647/1981/686 1642/1982/686 -f 1659/1983/687 1660/1984/687 1656/1985/687 -f 1662/1986/688 1641/1987/688 1663/1988/688 -f 1664/1989/689 1654/1990/689 1662/1986/689 -f 1650/1991/690 1664/1989/690 1665/1992/690 -f 1648/1993/691 1665/1992/691 1666/1994/691 -f 1646/1995/692 1666/1994/692 1667/1996/692 -f 1668/1997/693 1646/1995/693 1667/1996/693 -f 1663/1988/694 1644/1998/694 1668/1997/694 -f 1683/1999/695 1685/2000/695 1686/2001/695 -f 1687/2002/695 1689/2003/695 1690/2004/695 -f 1691/2005/695 1693/2006/695 1694/2007/695 -f 1696/2008/696 1698/2009/696 1695/2010/696 -f 1700/2011/696 1702/2012/696 1699/2013/696 -f 1704/2014/696 1706/2015/696 1703/2016/696 -f 1708/2017/696 1699/2013/696 1707/2018/696 -f 1701/2019/697 1683/1999/697 1704/2014/697 -f 1694/2007/695 1709/2020/695 1710/2021/695 -f 1697/2022/696 1707/2018/696 1698/2009/696 -f 1697/2022/697 1710/2021/697 1708/2017/697 -f 1708/2017/697 1687/2002/697 1700/2011/697 -f 1696/2008/697 1694/2007/697 1697/2022/697 -f 1700/2011/697 1690/2004/697 1701/2019/697 -f 1704/2014/697 1686/2001/697 1705/2023/697 -f 1701/2019/696 1703/2016/696 1702/2012/696 -f 1690/2004/695 1684/2024/695 1683/1999/695 -f 1712/2025/697 1696/2008/697 1711/2026/697 -f 1711/2026/696 1695/2010/696 1713/2027/696 -f 1712/2025/695 1692/2028/695 1691/2005/695 -f 1702/2012/696 1716/2029/696 1715/2030/696 -f 1698/2009/696 1718/2031/696 1717/2032/696 -f 1707/2018/696 1719/2033/696 1718/2031/696 -f 1699/2013/696 1715/2030/696 1719/2033/696 -f 1695/2010/696 1717/2032/696 1720/2034/696 -f 1721/2035/698 1723/2036/698 1724/2037/698 -f 1725/2038/698 1727/2039/698 1728/2040/698 -f 1729/2041/698 1731/2042/698 1732/2043/698 -f 1734/2044/699 1736/2045/699 1733/2046/699 -f 1738/2047/699 1740/2048/699 1737/2049/699 -f 1742/2050/699 1744/2051/699 1741/2052/699 -f 1737/2049/699 1746/2053/699 1745/2054/699 -f 1744/2051/700 1726/2055/700 1739/2056/700 -f 1730/2057/698 1748/2058/698 1731/2042/698 -f 1745/2054/699 1735/2059/699 1734/2044/699 -f 1746/2053/700 1730/2057/700 1735/2059/700 -f 1740/2048/700 1747/2060/700 1746/2053/700 -f 1736/2045/700 1730/2057/700 1729/2041/700 -f 1739/2056/700 1725/2038/700 1740/2048/700 -f 1743/2061/700 1721/2035/700 1744/2051/700 -f 1741/2052/699 1739/2056/699 1738/2047/699 -f 1726/2055/698 1724/2037/698 1727/2039/698 -f 1749/2062/700 1729/2041/700 1750/2063/700 -f 1733/2046/699 1749/2062/699 1751/2064/699 -f 1750/2063/698 1732/2043/698 1752/2065/698 -f 1753/2066/701 1741/2052/701 1738/2047/701 -f 1756/2067/701 1734/2044/701 1755/2068/701 -f 1757/2069/701 1745/2054/701 1756/2067/701 -f 1757/2069/701 1738/2047/701 1737/2049/701 -f 1755/2068/701 1733/2046/701 1758/2070/701 -f 1714/2071/702 1750/2072/702 1752/2073/702 -f 1685/2074/703 1724/2075/703 1723/2076/703 -f 1715/2077/704 1754/2078/704 1753/2079/704 -f 1689/2080/705 1728/2081/705 1727/2082/705 -f 1717/2083/706 1756/2084/706 1755/2085/706 -f 1693/2086/705 1732/2087/705 1731/2088/705 -f 1713/2089/521 1749/2090/521 1711/2091/521 -f 1705/2092/445 1722/2093/445 1743/2094/445 -f 1684/2095/705 1727/2082/705 1724/2075/705 -f 1719/2096/706 1753/2079/706 1757/2097/706 -f 1718/2098/706 1757/2097/706 1756/2084/706 -f 1709/2099/705 1731/2088/705 1748/2100/705 -f 1711/2091/707 1750/2072/707 1712/2101/707 -f 1685/2102/708 1722/2093/708 1686/2103/708 -f 1688/2104/702 1725/2105/702 1728/2106/702 -f 1709/2107/709 1747/2108/709 1710/2109/709 -f 1687/2110/710 1747/2111/710 1725/2112/710 -f 1751/2113/711 1720/2114/711 1758/2115/711 -f 1720/2114/706 1755/2085/706 1758/2115/706 -f 1692/2116/705 1752/2117/705 1732/2087/705 -f 1706/2118/712 1743/2094/712 1742/2119/712 -f 1716/2120/713 1742/2119/713 1754/2121/713 -f 1716/2029/696 1703/2016/696 1706/2015/696 -f 1754/2122/701 1742/2050/701 1741/2052/701 -f 1695/2010/696 1720/2034/696 1713/2027/696 -f 1758/2070/701 1733/2046/701 1751/2064/701 -f 1772/2123/521 1759/2124/521 1762/2125/521 -f 1772/2123/521 1761/2126/521 1774/2127/521 -f 1775/2128/707 1769/2129/707 1768/2130/707 -f 1778/2131/521 1763/2132/521 1777/2133/521 -f 1779/2134/521 1763/2132/521 1767/2135/521 -f 1780/2136/521 1767/2135/521 1770/2137/521 -f 1780/2136/707 1771/2138/707 1781/2139/707 -f 1782/2140/521 1765/2141/521 1760/2142/521 -f 1782/2140/521 1759/2124/521 1773/2143/521 -f 1783/2144/707 1766/2145/707 1765/2141/707 -f 1784/2146/707 1771/2138/707 1766/2145/707 -f 1778/2131/521 1768/2130/521 1764/2147/521 -f 1774/2127/521 1769/2129/521 1776/2148/521 -f 1814/2149/521 1812/2150/521 1820/2151/521 -f 808/860/431 809/943/431 810/861/431 -f 811/863/432 812/2152/432 813/864/432 -f 816/866/433 817/1016/433 818/867/433 -f 820/869/434 821/981/434 822/870/434 -f 824/872/431 825/2153/431 826/873/431 -f 828/875/431 829/1165/431 830/876/431 -f 831/878/433 832/1018/433 833/879/433 -f 835/881/433 836/1020/433 837/882/433 -f 840/884/431 841/1058/431 842/885/431 -f 843/887/435 844/2154/435 841/888/435 -f 845/890/436 846/1067/436 847/891/436 -f 850/893/437 851/2155/437 852/894/437 -f 854/896/431 845/1160/431 855/897/431 -f 856/899/438 857/1154/438 858/900/438 -f 861/902/439 852/2156/439 851/903/439 -f 863/905/440 864/2157/440 865/906/440 -f 866/908/433 849/2158/433 852/909/433 -f 862/911/431 865/2159/431 860/912/431 -f 872/914/714 873/1174/715 874/915/715 -f 823/917/444 826/1109/444 877/918/444 -f 878/920/445 879/2160/445 825/921/445 -f 880/923/446 871/2161/446 870/924/446 -f 891/926/447 892/2162/447 893/927/447 -f 895/929/445 896/2163/445 897/930/445 -f 899/932/448 896/2164/448 895/933/448 -f 900/935/449 898/2165/449 895/936/449 -f 901/938/450 811/942/450 814/939/450 -f 903/941/451 878/2166/451 811/942/451 -f 809/943/452 898/2165/452 900/935/452 -f 809/944/453 816/2167/453 899/932/453 -f 824/922/454 812/2168/454 811/945/454 -f 905/946/455 906/1022/455 907/947/455 -f 855/897/716 845/1160/717 848/949/717 -f 909/951/459 856/2169/459 859/952/459 -f 833/879/718 905/1019/718 904/954/718 -f 912/955/461 913/958/461 914/956/461 -f 913/958/462 927/960/462 928/959/462 -f 927/960/462 935/962/462 936/961/462 -f 935/962/462 943/964/462 944/963/462 -f 943/964/462 891/926/462 890/928/462 -f 909/965/463 910/2170/463 952/966/463 -f 953/968/464 954/1151/464 955/969/464 -f 957/971/465 958/1005/465 959/972/465 -f 951/967/463 952/966/463 962/974/463 -f 822/870/466 964/982/466 965/976/466 -f 957/978/467 960/998/467 966/979/467 -f 821/981/468 966/2171/468 964/982/468 -f 830/876/438 829/1165/438 967/983/438 -f 962/974/433 952/966/433 969/985/433 -f 965/976/431 964/982/431 971/987/431 -f 952/966/433 910/2170/433 973/989/433 -f 959/972/469 974/1166/469 975/990/469 -f 967/983/431 976/1167/431 977/991/431 -f 955/969/433 978/1153/433 979/992/433 -f 859/993/470 980/2172/470 973/994/470 -f 964/982/471 966/2171/471 981/996/471 -f 858/900/431 982/1152/431 980/997/431 -f 960/998/472 975/2173/472 981/999/472 -f 983/1000/473 957/978/473 821/980/473 -f 984/1002/431 819/871/431 822/870/431 -f 985/1003/433 986/1008/433 951/967/433 -f 983/1004/474 987/1164/474 958/1005/474 -f 989/1006/433 954/1151/433 953/968/433 -f 986/1008/433 990/1017/433 909/965/433 -f 991/1009/475 856/2174/475 909/1010/475 -f 992/1012/431 857/1154/431 856/899/431 -f 808/860/476 992/1012/476 991/1013/476 -f 809/1014/477 991/1009/477 990/1011/477 -f 817/1016/478 816/866/478 990/1017/478 -f 837/882/479 989/1006/479 988/1007/479 -f 833/879/480 987/1164/480 983/1004/480 -f 836/1020/478 817/1016/478 986/1008/478 -f 993/1021/481 994/1025/481 819/871/481 -f 905/946/482 983/1000/482 820/1001/482 -f 996/1023/476 828/875/476 827/877/476 -f 994/1025/483 906/1116/483 820/869/483 -f 979/1026/484 978/1150/484 997/1027/484 -f 970/1029/484 969/1032/484 999/1030/484 -f 969/1032/484 973/1052/484 1001/1033/484 -f 974/1034/485 971/2175/485 981/1035/485 -f 1002/1037/486 1003/1162/486 997/1038/486 -f 1004/1040/486 1005/1149/486 999/1041/486 -f 1006/1043/487 1007/2176/487 1008/1044/487 -f 980/1046/484 982/1148/484 1005/1047/484 -f 972/1049/484 971/1056/484 1007/1050/484 -f 973/1052/492 980/1046/490 1004/1048/491 -f 977/1053/484 976/1161/484 1003/1054/484 -f 971/1056/489 974/1163/490 1008/1057/488 -f 841/1058/431 1009/2177/431 1010/1059/431 -f 1011/1060/433 846/1137/433 1012/1061/433 -f 844/1063/440 1014/2178/440 1009/1064/440 -f 845/890/437 1015/2179/437 1012/1066/437 -f 1009/1068/719 862/1075/720 867/1069/721 -f 1012/1071/722 849/1077/722 866/1072/722 -f 1009/1068/723 1014/1156/724 863/1074/725 -f 1015/1076/499 850/1157/499 849/1077/499 -f 892/1078/446 1029/1081/446 1030/1079/446 -f 1029/1081/446 871/2161/446 880/923/446 -f 1031/1082/446 1032/1085/446 1028/1083/446 -f 1030/1079/446 880/923/446 1032/1085/446 -f 1033/1086/446 1031/1082/446 885/1084/446 -f 893/1080/446 1030/1079/446 1031/1082/446 -f 947/1088/462 1036/1091/462 1037/1089/462 -f 944/963/462 890/928/462 1037/1089/462 -f 939/1092/462 1039/1093/462 1036/1091/462 -f 936/961/462 944/963/462 1036/1091/462 -f 931/1094/462 1041/1095/462 1039/1093/462 -f 928/959/462 936/961/462 1039/1093/462 -f 921/1096/462 1043/1097/462 1041/1095/462 -f 914/956/462 928/959/462 1041/1095/462 -f 920/1098/461 1045/1099/461 1043/1097/461 -f 1045/1099/461 911/957/461 914/956/461 -f 883/1090/447 1037/1089/447 1033/1100/447 -f 890/928/447 893/927/447 1033/1100/447 -f 1032/1085/446 889/1103/446 888/1102/446 -f 880/923/446 881/925/446 889/1103/446 -f 877/1104/431 879/2180/431 1026/1105/431 -f 825/1107/501 920/2181/501 919/1108/501 -f 877/918/502 826/1109/502 924/1110/502 -f 923/1111/433 879/2182/433 877/918/433 -f 826/1109/726 919/1108/726 1027/2183/726 -f 826/1109/501 1027/2183/501 916/1112/501 -f 834/880/727 904/954/727 1047/1113/728 -f 994/1025/729 1048/1145/729 907/1115/729 -f 904/948/455 907/947/455 908/1117/455 -f 810/861/452 900/935/452 1050/1119/452 -f 816/866/451 815/868/451 1051/1121/451 -f 1051/1121/450 897/1146/450 896/1123/450 -f 900/935/449 894/937/449 1052/1124/449 -f 894/931/445 897/930/445 902/1125/445 -f 1053/1127/431 1048/1145/431 994/1025/431 -f 1054/1128/431 1055/1155/431 996/1023/431 -f 835/881/433 838/883/433 1057/1129/433 -f 1058/1131/433 831/878/433 834/880/433 -f 903/941/433 815/868/433 818/867/433 -f 807/862/431 810/861/431 1049/1120/431 -f 1060/1133/431 1049/1120/431 824/872/431 -f 1061/1134/730 1062/1212/730 1063/1135/730 -f 1011/1060/433 1058/1131/433 1046/1114/433 -f 1056/1130/433 1057/1129/433 844/1138/433 -f 1052/1126/445 902/1125/445 814/1140/445 -f 1050/1119/449 1052/1124/449 813/1142/449 -f 1049/1120/452 1050/1119/452 812/1143/452 -f 1047/1118/455 908/1117/455 848/892/455 -f 1046/1114/731 1047/1113/732 847/1144/733 -f 1048/1145/734 855/897/735 908/950/736 -f 815/868/451 903/941/451 901/938/451 -f 1051/1121/450 901/938/450 902/940/450 -f 853/898/431 855/897/431 1048/1145/431 -f 807/862/431 1060/1133/431 839/886/431 -f 1059/1132/433 1056/1130/433 843/1139/433 -f 818/867/433 835/881/433 1056/1130/433 -f 807/862/431 1054/1128/431 995/1024/431 -f 982/1148/484 977/1053/484 1002/1055/484 -f 1005/1149/486 1002/1037/486 1000/1039/486 -f 978/1150/484 970/1029/484 1000/1031/484 -f 995/1024/476 827/877/476 992/1012/476 -f 837/882/478 836/1020/478 985/1003/478 -f 989/1006/433 985/1003/433 961/975/433 -f 968/984/431 977/991/431 982/1152/431 -f 955/969/433 962/974/433 970/986/433 -f 857/1154/438 830/876/438 968/984/438 -f 961/975/463 962/974/463 955/969/463 -f 876/919/435 843/887/435 840/889/435 -f 1060/1133/431 823/874/431 840/884/431 -f 818/867/433 817/1016/433 836/1020/433 -f 827/877/431 830/876/431 857/1154/431 -f 844/1138/433 1057/1129/433 1058/1131/433 -f 1057/1129/433 838/883/433 831/878/433 -f 1055/1155/431 1053/1127/431 993/1021/431 -f 1014/1156/737 1013/1073/495 866/1072/495 -f 1015/1076/494 1010/1070/494 867/1069/494 -f 844/1138/433 1011/1060/433 1013/1062/433 -f 854/896/431 1010/1059/431 1015/1159/431 -f 976/1161/484 972/1049/484 1006/1051/484 -f 1003/1162/487 1006/1043/487 998/1045/487 -f 974/1163/484 979/1026/484 998/1028/484 -f 996/1023/481 993/1021/481 984/1002/481 -f 832/1018/479 988/1007/479 987/1164/479 -f 988/1007/433 953/968/433 958/1005/433 -f 828/875/431 984/1002/431 963/977/431 -f 956/970/433 979/992/433 974/1166/433 -f 967/983/431 965/976/431 972/988/431 -f 963/977/466 965/976/466 967/983/466 -f 958/1005/464 953/968/464 956/970/464 -f 867/913/431 860/912/431 851/1168/431 -f 863/1170/433 866/908/433 861/910/433 -f 864/1172/439 861/902/439 860/904/439 -f 841/1058/431 854/896/431 853/898/431 -f 838/883/433 837/882/433 832/1018/433 -f 873/1174/738 1065/1235/738 1066/1175/738 -f 1064/1136/739 1063/1135/739 1067/1176/739 -f 1070/1178/739 1071/1216/739 1072/1179/739 -f 1074/1181/740 1075/1215/740 1076/1182/740 -f 1069/1180/519 1072/1179/519 1078/1184/519 -f 1079/1186/518 1064/1136/518 1068/1177/518 -f 1072/1188/445 1081/2184/445 1082/1189/445 -f 1083/1191/741 1084/1210/741 1085/1192/741 -f 1074/1194/435 1088/2185/435 1089/1195/435 -f 1064/1197/742 1085/2186/742 1084/1198/742 -f 873/1200/521 1090/2187/521 1086/1201/521 -f 1061/1203/743 1084/2188/743 1091/1204/743 -f 872/1206/435 1093/2189/435 1090/1207/435 -f 1094/1209/744 1095/1259/745 1084/1210/744 -f 1096/1211/746 1097/2190/747 1062/1212/747 -f 1087/1213/748 872/914/749 875/916/750 -f 1087/1213/526 1098/1214/526 1075/1215/526 -f 1071/1216/747 1097/2190/747 1096/1211/751 -f 1081/1217/752 1095/1259/753 1094/1209/752 -f 1096/1219/754 1095/2191/754 1081/1220/754 -f 1093/1222/521 1100/1257/521 1101/1223/521 -f 1088/1225/433 1082/1218/433 1094/1209/433 -f 1093/1222/521 1099/1224/521 1102/1227/521 -f 1079/1202/521 1086/1201/521 1085/1229/521 -f 1093/1231/433 1083/1191/433 1086/1193/433 -f 1078/1190/445 1082/1189/445 1088/1233/445 -f 1079/1186/518 1080/1187/518 1065/1235/518 -f 1073/1183/519 1077/1185/519 1078/1184/519 -f 1104/1236/433 1102/2192/433 1099/1237/433 -f 1094/1239/445 1104/2193/445 1103/1240/445 -f 1089/1241/445 1105/1252/445 1106/1242/445 -f 1083/1244/486 1102/2194/486 1104/1245/486 -f 1106/1247/435 1105/1250/435 1100/1248/435 -f 1105/1250/435 1108/2195/435 1101/1251/435 -f 1103/1240/445 1108/2196/445 1105/1252/445 -f 872/1253/431 1087/2197/431 1106/1254/431 -f 872/1256/521 1107/2198/521 1100/1257/521 -f 1099/1237/433 1101/2199/433 1108/1258/433 -f 1095/1259/755 1109/2200/755 1091/1260/755 -f 1096/1261/756 1110/2201/756 1109/1262/756 -f 1092/1264/757 1091/2202/757 1109/1265/757 -f 1061/1267/758 1092/2203/758 1110/1268/758 -f 1112/1270/536 1113/2204/536 1114/1271/536 -f 1150/2205/431 1139/1278/431 1140/1277/431 -f 1140/1277/431 1141/1275/431 1150/2205/431 -f 1141/1275/431 1142/2206/431 1143/1273/431 -f 1150/2205/431 1141/1275/431 1137/2207/431 -f 1143/1273/431 1144/2208/431 1148/1274/431 -f 1144/2208/431 1145/2209/431 1148/1274/431 -f 1145/2209/431 1146/2210/431 1147/2211/431 -f 1148/1274/431 1145/2209/431 1147/2211/431 -f 1148/1274/431 1149/2212/431 1141/1275/431 -f 1149/2212/431 1138/2213/431 1141/1275/431 -f 1138/2213/431 1137/2207/431 1141/1275/431 -f 1114/1276/537 1113/2214/537 1140/1277/537 -f 1151/2215/433 1152/2216/433 1160/1280/433 -f 1152/2216/433 1153/2217/433 1160/1280/433 -f 1153/2217/433 1154/2218/433 1160/1280/433 -f 1154/2218/433 1155/1281/433 1160/1280/433 -f 1155/1281/433 1156/2219/433 1136/2220/433 -f 1156/2219/433 1157/2221/433 1136/2220/433 -f 1136/2220/433 1135/2222/433 1155/1281/433 -f 1135/2222/433 1158/1279/433 1155/1281/433 -f 1158/1279/433 1159/2223/433 1160/1280/433 -f 1160/1280/433 1161/1283/433 1151/2215/433 -f 1161/1283/433 1162/2224/433 1151/2215/433 -f 1111/1282/538 1162/2224/538 1161/1283/538 -f 1190/1285/539 1191/1288/539 1192/1286/539 -f 1191/1288/540 1193/2225/540 1194/1289/540 -f 1193/1290/541 1195/1293/541 1196/1291/541 -f 1195/1293/542 1197/2226/542 1198/1294/542 -f 1197/1295/543 1199/1298/543 1200/1296/543 -f 1199/1298/544 1201/1300/544 1202/1299/544 -f 1201/1300/545 1203/2227/545 1204/1301/545 -f 1203/1302/546 1205/1305/546 1206/1303/546 -f 1205/1305/547 1207/1307/547 1208/1306/547 -f 1207/1307/548 1209/1309/548 1210/1308/548 -f 1209/1309/549 1211/2228/549 1212/1310/549 -f 1211/1311/550 1190/1285/550 1189/1287/550 -f 1213/1315/759 1214/2229/759 1196/1316/759 -f 1198/2230/760 1200/1313/760 1213/1315/760 -f 1200/1313/761 1202/2231/762 1216/1314/761 -f 1202/2231/763 1215/2232/764 1216/1314/765 -f 1213/1315/766 1196/1316/766 1198/2230/766 -f 1217/2233/767 1218/2234/767 1189/2235/768 -f 1189/2235/769 1192/2236/770 1217/2233/770 -f 1192/2236/771 1194/2237/771 1217/2233/771 -f 1194/2237/772 1196/1316/772 1221/1318/772 -f 1196/1316/552 1214/2229/552 1219/2238/552 -f 1220/1317/552 1196/1316/552 1219/2238/552 -f 1221/1318/773 1217/2233/773 1194/2237/773 -f 1222/1320/774 1223/2239/774 1208/2240/774 -f 1210/1321/775 1212/2241/775 1224/1319/775 -f 1212/2241/776 1189/2235/777 1224/1319/776 -f 1222/1320/774 1208/2240/774 1210/1321/774 -f 1189/2235/778 1218/2234/779 1224/1319/779 -f 1225/1322/780 1215/2232/781 1202/2231/782 -f 1202/2231/783 1204/2242/784 1225/1322/784 -f 1204/2242/785 1206/1323/785 1225/1322/785 -f 1206/1323/786 1208/2240/786 1226/1324/786 -f 1208/2240/786 1223/2239/786 1226/1324/786 -f 1201/2243/787 1178/2244/788 1180/1325/789 -f 1182/1326/790 1184/2245/790 1207/2246/790 -f 1203/2247/791 1201/2243/792 1180/1325/791 -f 1182/1326/790 1207/2246/790 1205/1327/790 -f 1203/2247/793 1180/1325/793 1205/1327/793 -f 1195/1333/794 1171/2248/794 1174/1328/794 -f 1176/1329/795 1178/2244/796 1201/2243/797 -f 1197/2249/798 1195/1333/798 1174/1328/798 -f 1176/1329/799 1201/2243/800 1199/1330/799 -f 1197/2249/801 1174/1328/801 1199/1330/801 -f 1190/2250/802 1166/2251/803 1165/2252/803 -f 1190/2250/804 1165/2252/805 1191/2253/805 -f 1165/2252/806 1168/2254/806 1193/2255/806 -f 1193/2255/807 1191/2253/807 1165/2252/807 -f 1171/2248/557 1195/1333/557 1172/1332/557 -f 1195/1333/808 1193/2255/808 1168/2254/808 -f 1227/1331/557 1195/1333/557 1168/2254/557 -f 1207/2246/809 1184/2245/809 1186/2256/809 -f 1188/1335/810 1166/2251/810 1190/2250/811 -f 1209/1334/809 1207/2246/809 1186/2256/809 -f 1186/2256/812 1188/1335/812 1209/1334/812 -f 1188/1335/813 1190/2250/814 1211/1336/813 -f 1264/1337/815 1265/1476/816 1266/1338/431 -f 1265/1340/445 1267/2257/445 1268/1341/445 -f 1267/1343/433 1269/1509/433 1270/1344/433 -f 1272/1346/521 1264/1547/521 1263/1347/521 -f 1263/2258/435 1266/2259/435 1271/1351/435 -f 1266/2259/435 1268/1349/435 1271/1351/435 -f 1268/1349/435 1270/2260/435 1273/1350/435 -f 1274/1352/502 1275/1359/502 1276/1353/502 -f 1278/1355/502 1279/2261/502 1280/1356/502 -f 1282/1358/560 1283/1366/560 1276/1353/560 -f 1269/1360/561 1285/2262/561 1286/1361/561 -f 1267/1363/817 1265/2263/817 1282/1364/817 -f 1290/1530/563 1276/1353/563 1289/2264/563 -f 1276/1353/563 1283/1366/563 1288/1368/563 -f 1289/2264/563 1276/1353/563 1288/1368/563 -f 1292/1369/564 1293/2265/564 1294/1370/564 -f 1277/1372/433 1296/1433/433 1297/1373/433 -f 1278/1375/818 1281/2266/818 1299/1376/818 -f 1282/1358/560 1283/1366/560 1299/1378/560 -f 1285/1380/502 1300/2267/502 1295/1381/502 -f 1300/1383/566 1274/1510/566 1277/1372/566 -f 1286/1361/567 1285/2262/567 1292/1369/567 -f 1303/1386/433 1297/1373/433 1296/1433/433 -f 1296/1433/433 1301/1384/433 1303/1386/433 -f 1304/1387/502 1303/1554/502 1302/1388/819 -f 1287/1390/607 1306/2268/607 1307/1391/607 -f 1281/1357/502 1280/1356/502 1309/1393/502 -f 1276/1353/563 1290/1530/563 1296/1395/563 -f 1299/1376/570 1281/2266/570 1310/1396/570 -f 1287/1367/563 1306/2269/563 1299/1378/563 -f 1292/1382/502 1295/1381/502 1297/1398/502 -f 1308/1400/486 1312/2270/486 1313/1401/486 -f 1314/1403/484 1305/1389/484 1302/1388/484 -f 1312/1405/484 1308/2271/484 1307/1406/484 -f 1316/1408/820 1304/1529/820 1305/1409/820 -f 1287/1367/572 1308/2272/572 1311/1411/572 -f 1318/1412/502 1319/1525/502 1312/1405/819 -f 1296/1395/572 1290/1530/572 1314/1413/572 -f 1307/1417/821 1306/1397/821 1318/1415/821 -f 1306/1397/822 1310/1396/822 1318/1415/822 -f 1306/1397/431 1320/2273/431 1321/1418/431 -f 1290/1419/433 1276/2274/433 1322/1420/433 -f 1325/1422/431 1326/2275/431 1327/1423/431 -f 1330/2276/433 1314/2277/433 1329/1427/433 -f 1314/2277/823 1290/1425/823 1329/1427/823 -f 1331/1428/433 1332/2278/433 1333/1429/433 -f 1337/2279/824 1306/1397/824 1336/1432/824 -f 1306/1397/825 1307/1417/825 1336/1432/825 -f 1296/1433/433 1331/1428/433 1334/1430/433 -f 1324/1424/431 1327/1423/431 1287/1434/431 -f 1328/1436/579 1290/2280/579 1338/1437/579 -f 1326/1439/502 1340/1460/502 1341/1440/502 -f 1343/1442/826 1330/2281/826 1329/1443/826 -f 1335/1445/575 1307/2282/575 1345/1446/575 -f 1299/1448/576 1321/2283/576 1322/1449/576 -f 1276/1450/502 1283/2284/502 1299/1448/502 -f 1321/1451/563 1320/2285/563 1323/1452/563 -f 1296/1457/576 1290/2286/576 1323/1458/576 -f 1340/1460/502 1346/2287/502 1347/1461/502 -f 1331/1462/502 1348/2288/502 1349/1463/502 -f 1306/1465/502 1337/2289/502 1350/1466/502 -f 1346/1468/827 1352/2290/827 1353/1469/827 -f 1354/1471/828 1355/1489/828 1349/1472/828 -f 1267/1343/582 1268/1345/582 1356/1474/582 -f 1265/1476/583 1358/1480/583 1359/1477/583 -f 1356/1474/586 1360/1481/586 1361/1478/586 -f 1362/1479/587 1363/1484/587 1359/1477/587 -f 1360/1481/586 1364/1486/586 1365/1482/586 -f 1362/1479/587 1366/1488/587 1367/1483/587 -f 1360/1481/433 1368/2291/433 1369/1485/433 -f 1367/1483/431 1370/2292/431 1371/1487/431 -f 1353/1469/829 1352/2290/829 1366/1488/829 -f 1354/1471/830 1361/1478/830 1365/1482/830 -f 1352/1490/831 1346/2293/831 1349/1491/831 -f 1365/1493/832 1366/1494/832 1352/1490/832 -f 1366/1494/833 1365/1493/833 1364/1495/833 -f 1369/1497/445 1370/2294/445 1367/1496/445 -f 1369/1498/592 1368/2295/592 1371/1499/592 -f 1368/1501/521 1360/2296/521 1363/1502/521 -f 1356/1504/435 1359/2297/435 1363/1505/435 -f 1268/1341/834 1266/1342/834 1359/1507/834 -f 1264/1337/835 1278/1375/595 1298/1377/595 -f 1269/1509/597 1267/1343/597 1274/1510/597 -f 1347/1511/836 1353/2298/836 1354/1512/836 -f 1354/1514/837 1353/2299/837 1362/1515/837 -f 1351/1517/600 1350/2300/600 1339/1518/600 -f 1361/1516/838 1362/1515/838 1358/1520/838 -f 1343/1522/575 1372/2301/575 1314/1523/575 -f 1310/1394/502 1309/1393/502 1319/1525/502 -f 1336/1526/826 1335/2302/826 1344/1527/826 -f 1294/1370/607 1293/2265/607 1304/1529/607 -f 1290/1530/572 1289/2264/572 1374/1531/572 -f 1294/1370/604 1316/1408/604 1376/1532/604 -f 1376/1532/571 1313/2303/571 1312/1534/571 -f 1316/1536/606 1342/2304/606 1373/1537/606 -f 1374/1539/486 1317/2305/486 1305/1540/486 -f 1375/1533/839 1376/1532/839 1319/1535/839 -f 1377/1543/567 1378/1546/567 1280/1544/567 -f 1377/1543/567 1286/1361/567 1291/1371/567 -f 1378/1546/564 1375/1533/564 1309/1542/564 -f 1291/1371/564 1294/1370/564 1375/1533/564 -f 1272/1346/561 1377/1543/561 1279/1545/561 -f 1284/1362/561 1286/1361/561 1377/1543/561 -f 1269/1360/521 1284/1362/521 1273/1548/521 -f 1284/1362/521 1272/1346/521 1271/1348/521 -f 1373/1528/608 1342/1444/608 1380/1550/608 -f 1337/1552/840 1336/1526/840 1373/1528/840 -f 1342/1444/841 1329/1443/841 1328/1553/841 -f 1293/1399/502 1297/1398/502 1303/1554/502 -f 1373/1555/433 1344/2306/433 1311/1556/433 -f 1311/1556/433 1313/2307/433 1376/1558/433 -f 1374/1559/431 1289/1563/431 1316/1560/431 -f 1374/1559/431 1343/2308/431 1342/1562/431 -f 1381/1564/433 1382/2309/433 1287/1565/433 -f 1383/1567/433 1384/2310/433 1296/1433/433 -f 1386/1568/445 1387/2311/445 1388/1569/445 -f 1390/1571/433 1391/1713/433 1392/1572/433 -f 1393/1574/486 1394/2312/486 1395/1575/486 -f 1396/1577/431 1397/2313/431 1398/1578/431 -f 1390/1580/435 1401/1589/435 1402/1581/435 -f 1403/1583/842 1385/1777/842 1396/1584/842 -f 1399/1586/486 1406/2314/486 1407/1587/486 -f 1401/1589/435 1408/1603/435 1409/1590/435 -f 1396/1584/486 1399/2315/486 1410/1591/486 -f 1393/1592/433 1411/2316/433 1408/1593/433 -f 1413/1595/521 1405/1833/521 1414/1596/521 -f 1416/1598/521 1417/1857/521 1418/1599/521 -f 1419/1601/521 1420/2317/521 1421/1602/521 -f 1408/1603/435 1419/1902/435 1422/1604/435 -f 1399/1608/445 1426/2318/445 1427/1609/445 -f 1411/1611/433 1428/1859/433 1417/1612/433 -f 1399/1614/431 1405/2319/431 1429/1615/431 -f 1430/1617/843 1425/1815/843 1424/1618/843 -f 1425/1607/844 1432/2320/844 1433/1620/844 -f 1438/1624/612 1439/1690/612 1440/1625/612 -f 1427/1627/613 1426/2321/613 1441/1628/613 -f 1435/1622/614 1428/1859/614 1443/1630/614 -f 1445/1632/615 1436/1822/615 1438/1624/615 -f 1446/1633/433 1447/1689/433 1448/1634/433 -f 1433/1620/616 1432/2320/616 1450/1636/616 -f 1441/1628/617 1452/2322/617 1453/1638/617 -f 1443/1630/618 1454/1692/618 1455/1639/618 -f 1457/1640/619 1458/2323/619 1459/1641/619 -f 1461/1643/431 1462/2324/431 1463/1644/431 -f 1463/1644/431 1462/2324/431 1457/1646/431 -f 1465/1648/431 1461/1643/431 1460/1645/431 -f 1452/1650/620 1460/1656/620 1466/1651/620 -f 1462/1653/621 1449/2325/621 1468/1654/621 -f 1460/1656/622 1463/2326/622 1469/1657/622 -f 1470/1658/431 1471/2327/431 1472/1659/431 -f 1475/1661/623 1476/2328/623 1477/1662/623 -f 1479/1664/433 1480/2329/433 1481/1665/433 -f 1477/1662/624 1476/2328/624 1481/1667/624 -f 1483/1669/433 1484/1682/433 1479/1664/433 -f 1486/1670/625 1475/2330/625 1474/1671/625 -f 1488/1673/431 1471/2327/431 1470/1658/431 -f 1490/1675/626 1491/2331/626 1492/1676/626 -f 1494/1678/627 1486/2332/627 1485/1679/627 -f 1465/1683/628 1497/1686/628 1498/1684/628 -f 1497/1686/629 1490/1675/629 1489/1677/629 -f 1500/1687/431 1488/1673/431 1487/1674/431 -f 1484/1682/433 1454/1692/433 1447/1689/433 -f 1450/1636/431 1500/1687/431 1499/1688/431 -f 1439/1690/630 1494/2333/630 1493/1691/630 -f 1454/1692/433 1484/1682/433 1495/1681/433 -f 1462/1693/631 1461/2334/631 1446/1694/631 -f 1386/1696/435 1502/1715/435 1503/1697/435 -f 1464/1699/632 1457/1640/632 1456/1642/632 -f 1389/1576/486 1392/2335/486 1505/1701/486 -f 1386/1703/431 1385/2336/431 1506/1704/431 -f 1508/1706/634 1509/2337/634 1510/1707/634 -f 1511/1709/433 1512/1742/433 1468/1710/433 -f 1502/1705/431 1506/1704/431 1513/1711/431 -f 1391/1713/433 1510/2338/433 1509/1714/433 -f 1502/1715/635 1514/2339/635 1515/1716/635 -f 1484/1717/636 1517/2340/636 1518/1718/636 -f 1465/1648/431 1519/2341/431 1520/1720/431 -f 1459/1641/650 1458/2323/650 1521/1721/650 -f 1517/1723/638 1523/2342/638 1524/1724/638 -f 1523/1726/639 1525/2343/639 1526/1727/639 -f 1457/1646/431 1462/2324/431 1467/1729/431 -f 1448/1634/433 1527/2344/433 1511/1709/433 -f 1463/1731/640 1464/2345/640 1403/1583/640 -f 1484/1682/433 1446/1633/433 1523/1733/433 -f 1528/1735/845 1529/2346/646 1530/1736/646 -f 1525/1737/644 1529/2346/644 1528/1735/644 -f 1458/1730/431 1467/1729/431 1531/1739/431 -f 1468/1710/433 1529/1743/433 1525/1741/433 -f 1512/1742/433 1530/2347/433 1529/1743/433 -f 1467/1729/431 1520/1720/431 1532/1744/431 -f 1533/1745/644 1534/1748/644 1531/1746/644 -f 1526/1738/644 1528/1735/644 1534/1748/644 -f 1534/1748/846 1522/1750/847 1521/1749/848 -f 1528/1735/849 1508/1706/850 1522/1750/851 -f 1535/1751/640 1504/1702/640 1527/1752/640 -f 1469/1732/640 1403/1583/640 1504/1702/640 -f 1536/1754/639 1533/1757/639 1532/1755/639 -f 1524/1728/639 1526/1727/639 1533/1757/639 -f 1537/1758/638 1536/1761/638 1520/1759/638 -f 1518/1725/638 1524/1724/638 1536/1761/638 -f 1538/1762/852 1508/1765/852 1530/1763/852 -f 1459/1641/651 1522/1722/651 1508/1765/651 -f 1496/1766/621 1537/1769/621 1519/1767/621 -f 1516/1719/636 1518/1718/636 1537/1769/636 -f 1539/1770/635 1507/1773/635 1510/1771/635 -f 1503/1697/635 1515/1716/635 1507/1773/635 -f 1513/1774/634 1522/1750/634 1515/1775/634 -f 1522/1750/634 1508/1706/634 1507/1708/634 -f 1385/1777/853 1403/1583/853 1540/1778/853 -f 1504/1702/653 1505/1701/653 1540/1778/653 -f 1504/1780/632 1541/1783/632 1511/1781/632 -f 1403/1700/632 1456/1642/632 1541/1783/632 -f 1400/1582/435 1539/1770/435 1391/1772/435 -f 1501/1698/435 1503/1697/435 1539/1770/435 -f 1542/1784/854 1543/2348/854 1500/1785/854 -f 1516/1787/654 1544/1790/654 1479/1788/654 -f 1498/1684/629 1489/1677/629 1544/1790/629 -f 1543/1791/855 1545/2349/855 1488/1792/855 -f 1544/1790/626 1546/1795/626 1480/1794/626 -f 1489/1677/626 1492/1676/626 1546/1795/626 -f 1545/1796/625 1547/2350/625 1471/1797/625 -f 1472/1799/624 1548/2351/624 1549/1800/624 -f 1547/1802/623 1548/2351/623 1472/1799/623 -f 1550/1804/622 1535/1807/622 1448/1805/622 -f 1466/1651/622 1469/1657/622 1535/1807/622 -f 1551/1808/620 1550/1804/620 1447/1806/620 -f 1453/1652/620 1466/1651/620 1550/1804/620 -f 1541/1783/619 1538/1762/619 1512/1764/619 -f 1456/1642/619 1459/1641/619 1538/1762/619 -f 1443/1810/617 1552/1813/617 1551/1811/617 -f 1442/1629/617 1453/1638/617 1551/1811/617 -f 1430/1617/615 1553/1816/615 1432/1814/615 -f 1445/1632/615 1437/1626/615 1553/1816/615 -f 1554/1817/613 1552/1813/613 1443/1810/613 -f 1427/1627/613 1442/1629/613 1552/1813/613 -f 1432/1814/612 1553/1816/612 1542/1784/612 -f 1556/1819/658 1430/1617/658 1445/1632/658 -f 1445/1632/659 1557/1823/659 1434/1821/659 -f 1430/1617/659 1431/1619/659 1557/1823/659 -f 1558/1824/445 1554/1827/445 1428/1825/445 -f 1410/1610/445 1427/1609/445 1554/1827/445 -f 1559/1828/435 1412/1831/435 1414/1829/435 -f 1409/1590/435 1422/1604/435 1412/1831/435 -f 1413/1595/521 1560/1834/521 1429/1832/521 -f 1415/1600/521 1418/1599/521 1560/1834/521 -f 1416/1598/521 1415/1600/521 1422/1835/521 -f 1415/1600/521 1413/1595/521 1412/1597/521 -f 1561/1836/486 1558/1838/486 1411/1837/486 -f 1404/1585/486 1410/1591/486 1558/1838/486 -f 1562/1839/435 1559/1828/435 1398/1830/435 -f 1402/1581/435 1409/1590/435 1559/1828/435 -f 1504/1702/609 1561/1836/609 1393/1574/609 -f 1403/1583/856 1404/1585/856 1561/1836/856 -f 1501/1698/435 1562/1839/435 1397/1840/435 -f 1400/1582/435 1402/1581/435 1562/1839/435 -f 1418/1599/661 1557/1858/661 1431/1841/661 -f 1429/1832/661 1560/1834/661 1431/1841/661 -f 1549/1800/662 1482/1668/662 1546/1843/662 -f 1473/1801/662 1549/1800/662 1492/1844/662 -f 1439/1846/433 1455/1639/433 1495/1681/433 -f 1452/1649/431 1451/1637/431 1499/1688/431 -f 1499/1688/431 1487/1674/431 1497/1848/431 -f 1494/1847/433 1495/1681/433 1483/1669/433 -f 1487/1674/431 1470/1658/431 1490/1850/431 -f 1486/1849/433 1483/1669/433 1478/1666/433 -f 1482/1668/662 1481/1667/662 1480/1852/662 -f 1478/1666/433 1481/1665/433 1476/1853/433 -f 1490/1850/431 1470/1658/431 1473/1660/431 -f 1444/1631/618 1455/1639/618 1439/1846/618 -f 1441/1856/616 1433/1620/616 1451/1637/616 -f 1436/1623/614 1435/1622/614 1444/1631/614 -f 1417/1857/661 1434/2352/661 1557/1858/661 -f 1428/1859/433 1435/1622/433 1434/1621/433 -f 1423/1605/611 1433/1620/611 1441/1856/611 -f 1426/1616/431 1429/1615/431 1424/1606/431 -f 1542/2353/857 1553/2354/857 1556/2355/857 -f 1553/2354/858 1430/2356/858 1556/2355/858 -f 1556/2355/859 1563/1860/859 1547/1862/859 -f 1563/1860/860 1549/2357/860 1548/1861/860 -f 1547/1862/861 1545/2358/861 1556/2355/861 -f 1545/2358/862 1543/2359/862 1556/2355/862 -f 1543/2359/863 1542/2353/863 1556/2355/863 -f 1437/2360/864 1440/2361/864 1482/1865/864 -f 1440/2361/431 1493/1863/431 1482/1865/431 -f 1493/1863/431 1485/2362/431 1474/1864/431 -f 1474/1864/431 1477/2363/431 1482/1865/431 -f 1395/1866/433 1394/2364/433 1565/1867/433 -f 1389/1869/445 1395/2365/445 1564/1870/445 -f 1401/1872/521 1565/2366/521 1394/1873/521 -f 1390/1580/435 1564/2367/435 1565/1875/435 -f 1567/1876/431 1388/2368/431 1387/1877/431 -f 1396/1879/521 1567/2369/521 1566/1880/521 -f 1385/1777/486 1388/2370/486 1567/1882/486 -f 1397/1840/435 1566/2371/435 1387/1883/435 -f 1568/1884/431 1569/2372/431 1407/1885/431 -f 1398/1887/445 1568/2373/445 1406/1888/445 -f 1414/1829/435 1569/2374/435 1568/1890/435 -f 1405/1833/521 1407/2375/521 1569/1891/521 -f 1570/1892/433 1571/2376/433 1421/1893/433 -f 1416/1895/486 1421/2377/486 1571/1896/486 -f 1411/1898/445 1571/2378/445 1570/1899/445 -f 1408/1603/435 1570/2379/435 1420/1901/435 -f 1468/1903/622 1523/2380/622 1520/1904/622 -f 1461/1906/619 1520/2381/619 1523/1907/619 -f 1563/1927/665 1591/2382/665 1592/1928/665 -f 1482/1930/658 1549/2383/658 1563/1931/658 -f 1591/1933/865 1593/2384/865 1594/1934/865 -f 1563/1936/866 1556/2385/866 1593/1937/866 -f 1555/1939/867 1590/2386/867 1592/1940/867 -f 1555/1942/868 1594/2387/868 1593/1943/868 -f 1595/1945/869 1594/2388/869 1596/1946/869 -f 1598/1948/870 1599/1974/870 1596/1949/870 -f 1599/1951/871 1600/2389/871 1601/1952/871 -f 1601/1954/872 1600/2390/872 1602/1955/872 -f 1602/1955/873 1604/2391/873 1605/1957/873 -f 1605/1958/671 1604/2392/671 1606/1959/671 -f 1607/1961/874 1593/2393/874 1608/1962/874 -f 1595/1945/875 1597/1947/875 1608/1964/875 -f 1597/1966/876 1592/2394/876 1594/1967/876 -f 1594/1941/877 1592/1940/877 1599/1951/877 -f 1606/1959/878 1591/1938/878 1593/1937/878 -f 1591/1969/879 1597/1966/879 1595/1968/879 -f 1645/2395/686 1643/2396/686 1647/1981/686 -f 1643/2396/686 1642/1982/686 1647/1981/686 -f 1642/1982/686 1653/2397/686 1651/2398/686 -f 1651/2398/686 1649/1980/686 1642/1982/686 -f 1661/2399/687 1655/2400/687 1660/1984/687 -f 1655/2400/687 1656/1985/687 1660/1984/687 -f 1656/1985/687 1657/2401/687 1658/2402/687 -f 1658/2402/687 1659/1983/687 1656/1985/687 -f 1662/1986/688 1654/1990/688 1641/1987/688 -f 1664/1989/689 1652/2403/689 1654/1990/689 -f 1650/1991/880 1652/2403/880 1664/1989/880 -f 1648/1993/881 1650/1991/881 1665/1992/881 -f 1646/1995/692 1648/1993/692 1666/1994/692 -f 1668/1997/882 1644/1998/882 1646/1995/882 -f 1663/1988/694 1641/1987/694 1644/1998/694 -f 1683/1999/695 1684/2024/695 1685/2000/695 -f 1687/2002/695 1688/2404/695 1689/2003/695 -f 1691/2005/695 1692/2028/695 1693/2006/695 -f 1696/2008/696 1697/2022/696 1698/2009/696 -f 1700/2011/696 1701/2019/696 1702/2012/696 -f 1704/2014/696 1705/2023/696 1706/2015/696 -f 1708/2017/696 1700/2011/696 1699/2013/696 -f 1701/2019/697 1690/2004/697 1683/1999/697 -f 1694/2007/695 1693/2006/695 1709/2020/695 -f 1697/2022/696 1708/2017/696 1707/2018/696 -f 1697/2022/697 1694/2007/697 1710/2021/697 -f 1708/2017/697 1710/2021/697 1687/2002/697 -f 1696/2008/697 1691/2005/697 1694/2007/697 -f 1700/2011/697 1687/2002/697 1690/2004/697 -f 1704/2014/697 1683/1999/697 1686/2001/697 -f 1701/2019/696 1704/2014/696 1703/2016/696 -f 1690/2004/695 1689/2003/695 1684/2024/695 -f 1712/2025/697 1691/2005/697 1696/2008/697 -f 1711/2026/696 1696/2008/696 1695/2010/696 -f 1712/2025/695 1714/2405/695 1692/2028/695 -f 1702/2012/696 1703/2016/696 1716/2029/696 -f 1698/2009/696 1707/2018/696 1718/2031/696 -f 1707/2018/696 1699/2013/696 1719/2033/696 -f 1699/2013/696 1702/2012/696 1715/2030/696 -f 1695/2010/696 1698/2009/696 1717/2032/696 -f 1721/2035/698 1722/2406/698 1723/2036/698 -f 1725/2038/698 1726/2055/698 1727/2039/698 -f 1729/2041/698 1730/2057/698 1731/2042/698 -f 1734/2044/699 1735/2059/699 1736/2045/699 -f 1738/2047/699 1739/2056/699 1740/2048/699 -f 1742/2050/699 1743/2061/699 1744/2051/699 -f 1737/2049/699 1740/2048/699 1746/2053/699 -f 1744/2051/700 1721/2035/700 1726/2055/700 -f 1730/2057/698 1747/2060/698 1748/2058/698 -f 1745/2054/699 1746/2053/699 1735/2059/699 -f 1746/2053/700 1747/2060/700 1730/2057/700 -f 1740/2048/700 1725/2038/700 1747/2060/700 -f 1736/2045/700 1735/2059/700 1730/2057/700 -f 1739/2056/700 1726/2055/700 1725/2038/700 -f 1743/2061/700 1722/2406/700 1721/2035/700 -f 1741/2052/699 1744/2051/699 1739/2056/699 -f 1726/2055/698 1721/2035/698 1724/2037/698 -f 1749/2062/700 1736/2045/700 1729/2041/700 -f 1733/2046/699 1736/2045/699 1749/2062/699 -f 1750/2063/698 1729/2041/698 1732/2043/698 -f 1753/2066/701 1754/2122/701 1741/2052/701 -f 1756/2067/701 1745/2054/701 1734/2044/701 -f 1757/2069/701 1737/2049/701 1745/2054/701 -f 1757/2069/701 1753/2066/701 1738/2047/701 -f 1755/2068/701 1734/2044/701 1733/2046/701 -f 1714/2071/883 1712/2101/883 1750/2072/883 -f 1685/2074/705 1684/2095/705 1724/2075/705 -f 1715/2077/704 1716/2407/704 1754/2078/704 -f 1689/2080/705 1688/2408/705 1728/2081/705 -f 1717/2083/706 1718/2098/706 1756/2084/706 -f 1693/2086/705 1692/2116/705 1732/2087/705 -f 1713/2089/521 1751/2409/521 1749/2090/521 -f 1705/2092/445 1686/2103/445 1722/2093/445 -f 1684/2095/705 1689/2080/705 1727/2082/705 -f 1719/2096/704 1715/2077/704 1753/2079/704 -f 1718/2098/706 1719/2096/706 1757/2097/706 -f 1709/2099/705 1693/2086/705 1731/2088/705 -f 1711/2091/884 1749/2090/884 1750/2072/884 -f 1685/2102/885 1723/2410/885 1722/2093/885 -f 1688/2104/886 1687/2411/886 1725/2105/886 -f 1709/2107/887 1748/2412/887 1747/2108/887 -f 1687/2110/710 1710/2413/710 1747/2111/710 -f 1751/2113/888 1713/2414/888 1720/2114/888 -f 1720/2114/706 1717/2083/706 1755/2085/706 -f 1692/2116/705 1714/2415/705 1752/2117/705 -f 1706/2118/712 1705/2092/712 1743/2094/712 -f 1716/2120/713 1706/2118/713 1742/2119/713 -f 1772/2123/521 1773/2143/521 1759/2124/521 -f 1772/2123/521 1762/2125/521 1761/2126/521 -f 1775/2128/521 1776/2148/521 1769/2129/521 -f 1778/2131/521 1764/2147/521 1763/2132/521 -f 1779/2134/521 1777/2133/521 1763/2132/521 -f 1780/2136/521 1779/2134/521 1767/2135/521 -f 1780/2136/521 1770/2137/521 1771/2138/521 -f 1782/2140/521 1783/2144/521 1765/2141/521 -f 1782/2140/521 1760/2142/521 1759/2124/521 -f 1783/2144/521 1784/2146/521 1766/2145/521 -f 1784/2146/521 1781/2139/521 1771/2138/521 -f 1778/2131/521 1775/2128/521 1768/2130/521 -f 1774/2127/521 1761/2126/521 1769/2129/521 -f 1823/2416/521 1813/2417/521 1814/2149/521 -f 1814/2149/884 1815/2418/884 1811/2419/884 -f 1815/2418/521 1816/2420/521 1811/2419/521 -f 1811/2419/521 1812/2150/521 1814/2149/521 -f 1812/2150/521 1817/2421/521 1820/2151/521 -f 1817/2421/521 1818/2422/521 1819/2423/521 -f 1820/2151/521 1817/2421/521 1819/2423/521 -f 1820/2151/521 1821/2424/521 1822/2425/521 -f 1822/2425/521 1823/2416/521 1814/2149/521 -f 1820/2151/521 1822/2425/521 1814/2149/521 +s 0 +f 808/762/441 810/763/441 807/764/441 +f 811/765/442 813/766/442 814/767/442 +f 816/768/443 818/769/443 815/770/443 +f 820/771/444 822/772/444 819/773/444 +f 824/774/441 826/775/441 823/776/441 +f 828/777/441 830/778/441 827/779/441 +f 831/780/443 833/781/443 834/782/443 +f 835/783/443 837/784/443 838/785/443 +f 840/786/441 842/787/441 839/788/441 +f 843/789/445 841/790/445 840/791/445 +f 845/792/446 847/793/446 848/794/446 +f 850/795/447 852/796/447 849/797/447 +f 854/798/441 855/799/441 853/800/441 +f 856/801/448 858/802/448 859/803/448 +f 861/804/449 851/805/449 860/806/449 +f 863/807/450 865/808/450 862/809/450 +f 866/810/443 852/811/443 861/812/443 +f 862/813/441 860/814/441 867/815/441 +f 872/816/451 874/817/452 875/818/453 +f 823/819/454 877/820/454 876/821/454 +f 878/822/455 825/823/455 824/824/455 +f 880/825/456 870/826/456 881/827/456 +f 891/828/457 893/829/457 890/830/457 +f 895/831/455 897/832/455 894/833/455 +f 899/834/458 895/835/458 898/836/458 +f 900/837/459 895/838/459 894/839/459 +f 901/840/460 814/841/460 902/842/460 +f 903/843/461 811/844/461 901/840/461 +f 809/845/462 900/837/462 810/763/462 +f 809/846/463 899/834/463 898/836/463 +f 824/824/464 811/847/464 878/822/464 +f 905/848/465 907/849/465 904/850/465 +f 855/799/466 848/851/467 908/852/468 +f 909/853/469 859/795/469 910/854/469 +f 833/781/470 904/855/470 834/782/470 +f 912/856/471 914/857/471 911/858/471 +f 913/859/472 928/860/472 914/857/472 +f 927/861/472 936/862/472 928/860/472 +f 935/863/472 944/864/472 936/862/472 +f 943/865/472 890/830/472 944/864/472 +f 909/866/473 952/867/473 951/868/473 +f 953/869/474 955/870/474 956/871/474 +f 957/872/475 959/873/475 960/874/475 +f 951/868/473 962/875/473 961/876/473 +f 822/772/476 965/877/476 963/878/476 +f 957/879/477 966/880/477 821/881/477 +f 821/882/478 964/883/478 822/772/478 +f 830/778/448 967/884/448 968/885/448 +f 962/875/443 969/886/443 970/887/443 +f 965/877/441 971/888/441 972/889/441 +f 952/867/443 973/890/443 969/886/443 +f 959/873/479 975/891/479 960/874/479 +f 967/884/441 977/892/441 968/885/441 +f 955/870/443 979/893/443 956/871/443 +f 859/894/480 973/895/480 910/896/480 +f 964/883/481 981/897/481 971/888/481 +f 858/802/441 980/898/441 859/803/441 +f 960/899/482 981/900/482 966/880/482 +f 983/901/483 821/881/483 820/902/483 +f 984/903/441 822/772/441 963/878/441 +f 985/904/443 951/868/443 961/876/443 +f 983/905/484 958/906/484 957/872/484 +f 989/907/443 953/869/443 988/908/443 +f 986/909/443 909/866/443 951/868/443 +f 991/910/485 909/911/485 990/912/485 +f 992/913/441 856/801/441 991/914/441 +f 808/762/486 991/914/486 809/845/486 +f 809/915/487 990/912/487 816/916/487 +f 817/917/488 990/918/488 986/909/488 +f 837/784/489 988/908/489 832/919/489 +f 833/781/490 983/905/490 905/920/490 +f 836/921/488 986/909/488 985/904/488 +f 993/922/491 819/773/491 984/903/491 +f 905/848/492 820/902/492 906/923/492 +f 996/924/486 827/779/486 995/925/486 +f 994/926/493 820/771/493 819/773/493 +f 979/927/494 997/927/495 998/927/496 +f 970/927/497 999/927/497 1000/927/497 +f 969/927/498 1001/927/499 999/927/500 +f 974/928/501 981/929/501 975/930/501 +f 1002/931/502 997/932/502 1000/933/502 +f 1004/934/502 999/935/502 1001/936/502 +f 1006/937/503 1008/938/503 998/939/503 +f 980/927/504 1005/927/505 1004/927/506 +f 972/927/507 1007/927/508 1006/927/509 +f 973/927/510 1004/927/511 1001/927/512 +f 977/927/513 1003/927/514 1002/927/515 +f 971/927/516 1008/927/517 1007/927/512 +f 841/940/441 1010/941/441 854/798/441 +f 1011/942/443 1012/943/443 1013/944/443 +f 844/945/450 1009/946/450 841/947/450 +f 845/792/447 1012/948/447 846/949/447 +f 1009/950/518 867/951/519 1010/952/519 +f 1012/953/520 866/954/520 1013/955/520 +f 1009/950/521 863/956/522 862/957/523 +f 1015/958/524 849/959/524 1012/953/524 +f 892/960/456 1030/961/456 893/962/456 +f 1029/963/456 880/825/456 1030/961/456 +f 1031/964/456 1028/965/456 885/966/456 +f 1030/961/456 1032/967/456 1031/964/456 +f 1033/968/456 885/966/456 884/969/456 +f 893/962/456 1031/964/456 1033/968/456 +f 947/970/472 1037/971/472 883/972/472 +f 944/864/472 1037/971/472 1036/973/472 +f 939/974/472 1036/973/472 947/970/472 +f 936/862/472 1036/973/472 1039/975/472 +f 931/976/472 1039/975/472 939/974/472 +f 928/860/472 1039/975/472 1041/977/472 +f 921/978/472 1041/977/472 931/976/472 +f 914/857/472 1041/977/472 1043/979/472 +f 920/980/471 1043/979/471 921/978/471 +f 1045/981/471 914/857/471 1043/979/471 +f 883/972/457 1033/982/457 884/983/457 +f 890/830/457 1033/982/457 1037/971/457 +f 1032/967/456 888/984/456 1028/965/456 +f 880/825/456 889/985/456 1032/967/456 +f 877/986/525 1026/987/525 912/988/525 +f 825/989/441 919/990/441 826/991/441 +f 877/820/526 924/992/526 923/993/526 +f 916/994/527 924/992/527 826/991/527 +f 834/782/528 1047/995/529 1046/996/530 +f 994/926/531 907/997/531 906/998/531 +f 904/850/465 908/999/465 1047/1000/465 +f 810/763/462 1050/1001/462 1049/1002/462 +f 816/768/461 1051/1003/461 899/1004/461 +f 1051/1003/460 896/1005/460 899/1004/460 +f 900/837/459 1052/1006/459 1050/1001/459 +f 894/833/532 902/1007/532 1052/1008/532 +f 1053/1009/441 994/926/441 993/922/441 +f 1054/1010/441 996/924/441 995/925/441 +f 835/783/443 1057/1011/443 1056/1012/443 +f 1058/1013/443 834/782/443 1046/996/443 +f 903/843/443 818/769/443 1059/1014/443 +f 807/764/441 1049/1002/441 1060/1015/441 +f 1060/1015/441 824/774/441 823/776/441 +f 1061/1016/533 1063/1017/533 1064/1018/533 +f 1011/942/443 1046/996/443 846/1019/443 +f 1056/1012/443 844/1020/443 843/1021/443 +f 1052/1008/455 814/1022/455 813/1023/455 +f 1050/1001/459 813/1024/459 812/1025/459 +f 1049/1002/534 812/1025/534 824/774/534 +f 1047/1000/465 848/794/465 847/793/465 +f 1046/996/535 847/1026/536 846/1019/536 +f 1048/1027/537 908/852/538 907/997/537 +f 815/770/461 901/840/461 1051/1003/461 +f 1051/1003/460 902/842/460 897/1028/460 +f 853/800/441 1048/1027/441 1053/1009/441 +f 807/764/441 839/788/441 1054/1010/441 +f 1059/1014/443 843/1021/443 876/1029/443 +f 818/769/443 1056/1012/443 1059/1014/443 +f 807/764/441 995/925/441 808/762/441 +f 982/927/497 1002/927/497 1005/927/497 +f 1005/1030/502 1000/933/502 999/935/502 +f 978/927/539 1000/927/540 997/927/541 +f 995/925/486 992/913/486 808/762/486 +f 837/784/488 985/904/488 989/907/488 +f 989/907/443 961/876/443 954/1031/443 +f 968/885/441 982/1032/441 858/802/441 +f 955/870/443 970/887/443 978/1033/443 +f 857/1034/448 968/885/448 858/802/448 +f 961/876/473 955/870/473 954/1031/473 +f 876/821/445 840/791/445 823/819/445 +f 1060/1015/441 840/786/441 839/788/441 +f 818/769/443 836/921/443 835/783/443 +f 827/779/441 857/1034/441 992/913/441 +f 844/1020/443 1058/1013/443 1011/942/443 +f 1057/1011/443 831/780/443 1058/1013/443 +f 1055/1035/441 993/922/441 996/924/441 +f 1014/1036/542 866/954/543 863/956/544 +f 1015/958/545 867/951/545 850/1037/545 +f 844/1020/443 1013/944/443 1014/1038/443 +f 854/798/441 1015/1039/441 845/1040/441 +f 976/927/546 1006/927/506 1003/927/547 +f 1003/1041/503 998/939/503 997/932/503 +f 974/927/548 998/927/549 1008/927/550 +f 996/924/491 984/903/491 828/777/491 +f 832/919/489 987/1042/489 833/781/489 +f 988/908/443 958/906/443 987/1042/443 +f 828/777/441 963/878/441 829/1043/441 +f 956/871/443 974/1044/443 959/873/443 +f 967/884/441 972/889/441 976/1045/441 +f 963/878/476 967/884/476 829/1043/476 +f 958/906/474 956/871/474 959/873/474 +f 867/815/441 851/1046/441 850/1047/441 +f 863/1048/443 861/812/443 864/1049/443 +f 864/823/449 860/806/449 865/1050/449 +f 841/940/441 853/800/441 842/787/441 +f 838/785/443 832/919/443 831/780/443 +f 873/1051/551 1066/1052/551 874/817/551 +f 1064/1018/552 1067/1053/552 1068/1054/552 +f 1070/1055/553 1072/1056/553 1069/1057/553 +f 1074/1058/553 1076/1059/553 1073/1060/553 +f 1069/1057/553 1078/1061/553 1077/1062/553 +f 1079/1063/552 1068/1054/552 1080/1064/552 +f 1072/1065/455 1082/1066/455 1078/1067/455 +f 1083/1068/443 1085/1069/443 1086/1070/443 +f 1074/1071/445 1089/1072/445 1087/1073/445 +f 1064/1074/554 1084/1075/554 1061/1076/554 +f 873/1077/555 1086/1078/555 1079/1079/555 +f 1061/1080/556 1091/1081/556 1092/1082/556 +f 872/1083/557 1090/1084/557 873/1085/557 +f 1094/1086/558 1084/1087/558 1083/1068/558 +f 1096/1088/559 1062/1089/560 1061/1016/560 +f 1087/1090/561 875/818/562 1098/1091/561 +f 1087/1090/563 1075/1092/563 1074/1058/563 +f 1071/1093/564 1096/1088/565 1072/1056/564 +f 1081/1094/443 1094/1086/443 1082/1095/443 +f 1096/1096/566 1081/1097/566 1072/1098/566 +f 1093/1099/555 1101/1100/555 1099/1101/555 +f 1088/1102/443 1094/1086/443 1089/1103/443 +f 1093/1099/555 1102/1104/555 1083/1105/555 +f 1079/1079/555 1085/1106/555 1064/1107/555 +f 1093/1108/443 1086/1070/443 1090/1109/443 +f 1078/1067/455 1088/1110/455 1074/1111/455 +f 1079/1063/552 1065/1112/552 873/1051/552 +f 1073/1060/553 1078/1061/553 1074/1058/553 +f 1104/1113/443 1099/1114/443 1103/1115/443 +f 1094/1116/455 1103/1117/455 1089/1118/455 +f 1089/1118/455 1106/1119/455 1087/1120/455 +f 1083/1121/502 1104/1122/502 1094/1123/502 +f 1106/1124/445 1100/1125/445 1107/1126/445 +f 1105/1127/445 1101/1121/445 1100/1125/445 +f 1103/1117/455 1105/1128/455 1089/1118/455 +f 872/1129/441 1106/1130/441 1107/1131/441 +f 872/1132/555 1100/1133/555 1093/1099/555 +f 1099/1114/443 1108/1134/443 1103/1115/443 +f 1095/1135/567 1091/1136/567 1084/1087/567 +f 1096/1137/568 1109/1138/568 1095/1139/568 +f 1092/1140/569 1109/1141/569 1110/1142/569 +f 1061/1143/570 1110/1144/570 1096/1145/570 +f 1112/1146/571 1114/1147/571 1111/1148/571 +f 1143/1149/441 1148/1150/441 1141/1151/441 +f 1114/1152/572 1140/1153/572 1139/1154/572 +f 1158/1155/443 1160/1156/443 1155/1157/443 +f 1111/1158/573 1161/1159/573 1112/1160/573 +f 1190/1161/574 1192/1162/574 1189/1163/574 +f 1191/1164/575 1194/1165/575 1192/1162/575 +f 1193/1166/576 1196/1167/576 1194/1168/576 +f 1195/1169/577 1198/1170/577 1196/1167/577 +f 1197/1171/578 1200/1172/578 1198/1173/578 +f 1199/1174/579 1202/1175/579 1200/1172/579 +f 1201/1176/580 1204/1177/580 1202/1175/580 +f 1203/1178/581 1206/1179/581 1204/1180/581 +f 1205/1181/582 1208/1182/582 1206/1179/582 +f 1207/1183/583 1210/1184/583 1208/1182/583 +f 1209/1185/584 1212/1186/584 1210/1184/584 +f 1211/1187/585 1189/1163/585 1212/1188/585 +f 1200/1189/586 1216/1190/586 1213/1191/586 +f 1196/1192/587 1220/1193/587 1221/1194/587 +f 1224/1195/588 1222/1196/588 1210/1197/588 +f 1225/1198/589 1206/1199/589 1226/1200/589 +f 1180/1201/590 1182/1202/590 1205/1203/590 +f 1174/1204/591 1176/1205/591 1199/1206/591 +f 1227/1207/592 1172/1208/592 1195/1209/592 +f 1209/1210/593 1188/1211/593 1211/1212/593 +f 1264/1213/594 1266/1214/441 1263/1215/441 +f 1265/1216/455 1268/1217/455 1266/1218/455 +f 1267/1219/443 1270/1220/443 1268/1221/443 +f 1272/1222/555 1263/1223/555 1271/1224/555 +f 1268/1225/445 1273/1226/445 1271/1227/445 +f 1274/1228/595 1276/1229/595 1277/1230/595 +f 1278/927/596 1280/927/527 1281/927/527 +f 1282/1231/595 1276/1229/595 1275/1228/595 +f 1269/1232/597 1286/1233/597 1284/1234/597 +f 1267/1235/598 1282/1236/598 1275/1237/598 +f 1283/1238/599 1287/1239/599 1288/1240/599 +f 1292/1241/600 1294/1242/600 1291/1243/600 +f 1277/1244/443 1297/1245/443 1295/1246/443 +f 1278/1247/601 1299/1248/601 1298/1249/601 +f 1282/1231/527 1299/1250/527 1298/1231/527 +f 1285/927/596 1295/927/527 1292/927/527 +f 1300/1251/602 1277/1244/602 1295/1246/602 +f 1286/1233/603 1292/1241/603 1291/1243/603 +f 1301/1252/443 1302/1253/443 1303/1254/443 +f 1304/927/604 1302/927/512 1305/927/605 +f 1287/1255/604 1307/1256/527 1308/1256/527 +f 1281/927/596 1309/927/527 1310/927/527 +f 1276/1229/599 1296/1257/599 1277/1230/599 +f 1299/1248/606 1310/1258/606 1306/1259/606 +f 1287/1239/599 1299/1250/599 1283/1238/599 +f 1292/927/596 1297/927/527 1293/927/527 +f 1308/1260/502 1313/1261/502 1311/1262/502 +f 1314/927/607 1302/927/608 1301/927/609 +f 1312/927/610 1307/927/611 1315/927/612 +f 1316/1263/613 1305/1264/613 1317/1265/613 +f 1287/1239/614 1311/1266/614 1288/1240/614 +f 1318/927/604 1312/927/512 1315/927/605 +f 1296/1257/604 1314/1267/527 1301/1267/527 +f 1318/1268/441 1315/1269/441 1307/1270/441 +f 1306/1259/441 1321/1271/441 1299/1248/441 +f 1290/1272/443 1322/1273/443 1323/1274/443 +f 1325/1275/441 1327/1276/441 1324/1277/441 +f 1290/1278/615 1328/1279/615 1329/1280/615 +f 1331/1281/443 1333/1282/443 1334/1283/443 +f 1307/1270/441 1335/1284/441 1336/1285/441 +f 1296/1286/443 1334/1283/443 1301/1252/443 +f 1324/1277/441 1287/1287/441 1308/1288/441 +f 1328/1289/527 1338/1290/596 1339/1289/527 +f 1326/927/527 1341/927/527 1327/927/527 +f 1343/1291/616 1329/1292/616 1342/1293/616 +f 1335/1294/617 1345/1295/617 1344/1296/617 +f 1299/1297/618 1322/1298/618 1276/1299/618 +f 1321/1300/619 1323/1301/619 1322/1302/619 +f 1306/1303/620 1337/1304/620 1320/1305/620 +f 1296/988/621 1323/1306/621 1331/1307/621 +f 1340/927/527 1347/927/527 1341/927/527 +f 1331/927/596 1349/927/527 1332/927/527 +f 1306/1308/622 1350/1309/622 1351/1310/622 +f 1346/1311/623 1353/1312/623 1347/1313/623 +f 1354/1314/624 1349/1315/624 1348/1281/624 +f 1267/1219/625 1356/1316/625 1357/1317/625 +f 1265/1318/626 1359/1319/626 1266/1214/626 +f 1356/1316/627 1361/1320/627 1357/1317/627 +f 1362/1321/628 1359/1319/628 1358/1322/628 +f 1360/1323/629 1365/1324/629 1361/1320/629 +f 1362/1321/630 1367/1325/630 1363/1326/630 +f 1360/1323/443 1369/1327/443 1364/1328/443 +f 1367/1325/441 1371/1329/441 1363/1326/441 +f 1353/1312/631 1366/1330/631 1362/1321/631 +f 1354/1314/632 1365/1324/632 1355/1331/632 +f 1352/1332/633 1349/1333/633 1355/1334/633 +f 1365/1335/634 1352/1332/634 1355/1334/634 +f 1366/1336/455 1364/1337/455 1367/1338/455 +f 1369/1339/455 1367/1338/455 1364/1337/455 +f 1369/1340/635 1371/1341/635 1370/1342/635 +f 1368/1343/555 1363/1344/555 1371/1345/555 +f 1356/1346/445 1363/1347/445 1360/1348/445 +f 1268/1217/636 1359/1349/636 1356/1350/636 +f 1264/1213/637 1298/1249/638 1265/1318/639 +f 1269/1351/640 1274/1352/640 1300/1251/640 +f 1347/1353/641 1354/1354/641 1348/1355/641 +f 1354/1356/642 1362/1357/642 1361/1358/642 +f 1351/1359/643 1339/1360/643 1338/1361/643 +f 1361/1358/644 1358/1362/644 1357/1363/644 +f 1343/1364/617 1314/1365/617 1330/1366/617 +f 1310/927/604 1319/927/527 1318/927/527 +f 1336/1367/645 1344/1368/645 1373/1369/645 +f 1294/1242/646 1304/1370/646 1316/1263/646 +f 1290/1371/614 1374/1372/614 1314/1267/614 +f 1294/1242/647 1376/1373/647 1375/1374/647 +f 1376/1373/648 1312/1375/648 1319/1376/648 +f 1316/1377/649 1373/1378/649 1376/1364/649 +f 1374/1379/502 1305/1262/502 1314/1380/502 +f 1375/1374/650 1319/1376/650 1309/1381/650 +f 1377/1382/603 1280/1383/603 1279/1384/603 +f 1377/1382/603 1291/1243/603 1378/1385/603 +f 1378/1385/600 1309/1381/600 1280/1383/600 +f 1291/1243/600 1375/1374/600 1378/1385/600 +f 1272/1222/651 1279/1384/651 1264/1386/651 +f 1284/1234/651 1377/1382/651 1272/1222/651 +f 1269/1232/555 1273/1387/555 1270/1388/555 +f 1284/1234/555 1271/1224/555 1273/1387/555 +f 1373/1369/652 1380/1389/652 1379/1390/652 +f 1337/1391/652 1373/1369/652 1379/1390/652 +f 1342/1293/652 1328/1392/652 1380/1389/652 +f 1293/927/604 1303/927/527 1304/927/527 +f 1373/1393/443 1311/1394/443 1288/1395/443 +f 1311/1394/443 1376/1396/443 1288/1395/443 +f 1374/1397/441 1316/1398/441 1317/1399/441 +f 1374/1397/441 1342/1400/441 1289/1401/441 +f 1381/1402/443 1287/1403/443 1283/1404/443 +f 1383/1405/443 1296/1286/443 1277/1244/443 +f 1386/1406/455 1388/1407/455 1385/1408/455 +f 1390/1409/443 1392/1410/443 1389/1411/443 +f 1393/1412/502 1395/1413/502 1389/1414/502 +f 1396/1415/441 1398/1416/441 1399/1417/441 +f 1390/1418/445 1402/1419/445 1400/1420/445 +f 1403/1421/653 1396/1422/653 1404/1423/653 +f 1399/1424/502 1407/1425/502 1405/1426/502 +f 1401/1427/445 1409/1428/445 1402/1419/445 +f 1396/1422/502 1410/1429/502 1404/1423/502 +f 1393/1430/443 1408/1431/443 1401/1432/443 +f 1413/1433/555 1414/1434/555 1412/1435/555 +f 1416/1436/555 1418/1437/555 1415/1438/555 +f 1419/1439/555 1421/1440/555 1416/1436/555 +f 1408/1441/445 1422/1442/445 1409/1428/445 +f 1423/1443/441 1424/1444/441 1425/1445/441 +f 1399/1392/455 1427/1446/455 1410/1447/455 +f 1411/1448/443 1417/1449/443 1416/1450/443 +f 1399/1451/441 1429/1452/441 1426/1453/441 +f 1430/1454/654 1424/1455/654 1431/1456/654 +f 1425/1445/655 1433/1457/655 1423/1443/655 +f 1434/1458/443 1435/1459/443 1436/1460/443 +f 1438/1461/656 1440/1462/656 1437/1463/656 +f 1427/1464/657 1441/1465/657 1442/1466/657 +f 1435/1459/658 1443/1467/658 1444/1468/658 +f 1445/1469/659 1438/1461/659 1437/1463/659 +f 1446/1470/443 1448/1471/443 1449/1472/443 +f 1433/1457/660 1450/1473/660 1451/1474/660 +f 1441/1465/661 1453/1475/661 1442/1466/661 +f 1443/1467/662 1455/1476/662 1444/1468/662 +f 1457/1477/663 1459/1478/663 1456/1479/663 +f 1461/1480/441 1463/1481/441 1460/1482/441 +f 1463/1481/441 1457/1483/441 1464/1484/441 +f 1465/1485/441 1460/1482/441 1452/1486/441 +f 1452/1487/664 1466/1488/664 1453/1489/664 +f 1462/1490/665 1468/1491/665 1467/1492/665 +f 1460/1493/666 1469/1494/666 1466/1488/666 +f 1470/1495/441 1472/1496/441 1473/1497/441 +f 1475/1498/667 1477/1499/667 1474/1500/667 +f 1479/1501/443 1481/1502/443 1478/1503/443 +f 1477/1499/668 1481/1504/668 1482/1505/668 +f 1483/1506/443 1479/1501/443 1478/1503/443 +f 1486/1507/669 1474/1508/669 1485/1509/669 +f 1488/1510/441 1470/1495/441 1487/1511/441 +f 1490/1512/670 1492/1513/670 1489/1514/670 +f 1494/1515/671 1485/1516/671 1493/1517/671 +f 1495/1518/443 1484/1519/443 1483/1506/443 +f 1465/1520/672 1498/1521/672 1496/1522/672 +f 1497/1523/673 1489/1514/673 1498/1521/673 +f 1500/1524/441 1487/1511/441 1499/1525/441 +f 1484/1519/443 1447/1526/443 1446/1470/443 +f 1450/1473/441 1499/1525/441 1451/1474/441 +f 1439/1527/674 1493/1528/674 1440/1462/674 +f 1454/1529/443 1495/1518/443 1455/1476/443 +f 1462/1530/675 1446/1531/675 1449/1532/675 +f 1386/1533/445 1503/1534/445 1501/1535/445 +f 1464/1536/676 1456/1479/676 1403/1537/676 +f 1389/1414/677 1505/1538/677 1504/1539/677 +f 1386/1540/441 1506/1541/441 1502/1542/441 +f 1508/1543/678 1510/1544/678 1507/1545/678 +f 1511/1546/443 1468/1547/443 1449/1472/443 +f 1502/1542/441 1513/1548/441 1514/1549/441 +f 1391/1550/443 1509/1551/443 1392/1410/443 +f 1502/1552/679 1515/1553/679 1503/1534/679 +f 1484/1554/680 1518/1555/680 1516/1556/680 +f 1465/1485/441 1520/1557/441 1461/1480/441 +f 1459/1478/681 1521/1558/681 1522/1559/681 +f 1517/1560/682 1524/1561/682 1518/1562/682 +f 1523/1563/683 1526/1564/683 1524/1565/683 +f 1457/1483/441 1467/1566/441 1458/1567/441 +f 1448/1471/443 1511/1546/443 1449/1472/443 +f 1463/1568/684 1403/1421/684 1469/1569/684 +f 1484/1519/443 1523/1570/443 1517/1571/443 +f 1528/1572/685 1530/1573/686 1508/1543/687 +f 1525/1574/688 1528/1572/688 1526/1575/688 +f 1458/1567/441 1531/1576/441 1521/1577/441 +f 1468/1547/443 1525/1578/443 1523/1570/443 +f 1512/1579/443 1529/1580/443 1468/1547/443 +f 1467/1566/441 1532/1581/441 1531/1576/441 +f 1533/1582/688 1531/1583/688 1532/1584/688 +f 1526/1575/688 1534/1585/688 1533/1582/688 +f 1534/1585/689 1521/1586/690 1531/1583/690 +f 1528/1572/691 1522/1587/692 1534/1585/693 +f 1535/1588/684 1527/1589/684 1448/1590/684 +f 1469/1569/684 1504/1539/684 1535/1588/684 +f 1536/1591/683 1532/1592/683 1520/1593/683 +f 1524/1565/683 1533/1594/683 1536/1591/683 +f 1537/1595/682 1520/1596/682 1519/1597/682 +f 1518/1562/682 1536/1598/682 1537/1595/682 +f 1538/1599/694 1530/1600/694 1512/1601/694 +f 1459/1478/695 1508/1602/695 1538/1599/695 +f 1496/1603/665 1519/1604/665 1465/1605/665 +f 1516/1556/696 1537/1606/696 1496/1603/696 +f 1539/1607/679 1510/1608/679 1391/1609/679 +f 1503/1534/679 1507/1610/679 1539/1607/679 +f 1513/1611/678 1515/1612/678 1514/1613/678 +f 1522/1587/678 1507/1545/678 1515/1612/678 +f 1385/1614/502 1540/1615/502 1506/1616/502 +f 1504/1539/697 1540/1615/697 1403/1421/697 +f 1504/1617/676 1511/1618/676 1527/1619/676 +f 1403/1537/676 1541/1620/676 1504/1617/676 +f 1400/1420/445 1391/1609/445 1390/1418/445 +f 1501/1535/445 1539/1607/445 1400/1420/445 +f 1542/1621/674 1500/1622/674 1450/1623/674 +f 1516/1624/698 1479/1625/698 1484/1626/698 +f 1498/1521/699 1544/1627/699 1516/1624/699 +f 1516/1624/700 1496/1522/700 1498/1521/700 +f 1543/1628/701 1488/1629/701 1500/1630/701 +f 1544/1627/702 1480/1631/702 1479/1625/702 +f 1489/1514/702 1546/1632/702 1544/1627/702 +f 1545/1633/669 1471/1634/669 1488/1508/669 +f 1472/1635/668 1549/1636/668 1473/1637/668 +f 1547/1638/667 1472/1635/667 1471/1639/667 +f 1550/1640/666 1448/1641/666 1447/1642/666 +f 1466/1488/666 1535/1643/666 1550/1640/666 +f 1551/1644/664 1447/1642/664 1454/1645/664 +f 1453/1489/664 1550/1640/664 1551/1644/664 +f 1541/1620/663 1512/1601/663 1511/1618/663 +f 1456/1479/663 1538/1599/663 1541/1620/663 +f 1443/1646/661 1551/1647/661 1454/1648/661 +f 1442/1466/661 1551/1647/661 1552/1649/661 +f 1430/1454/659 1432/1650/659 1425/1651/659 +f 1445/1469/659 1553/1652/659 1430/1454/659 +f 1554/1653/657 1443/1646/657 1428/1654/657 +f 1427/1464/657 1552/1649/657 1554/1653/657 +f 1432/1650/656 1542/1621/656 1450/1623/656 +f 1556/1655/703 1445/1469/703 1555/1656/703 +f 1445/1469/704 1434/1657/704 1436/1658/704 +f 1430/1454/704 1557/1659/704 1445/1469/704 +f 1558/1660/455 1428/1661/455 1411/1662/455 +f 1410/1447/455 1554/1663/455 1558/1660/455 +f 1559/1664/445 1414/1665/445 1398/1666/445 +f 1409/1428/445 1412/1667/445 1559/1664/445 +f 1413/1433/555 1429/1668/555 1405/1669/555 +f 1415/1438/555 1560/1670/555 1413/1433/555 +f 1416/1436/555 1422/1671/555 1419/1439/555 +f 1415/1438/555 1412/1435/555 1422/1671/555 +f 1561/1672/502 1411/1673/502 1393/1412/502 +f 1404/1423/502 1558/1674/502 1561/1672/502 +f 1562/1675/445 1398/1666/445 1397/1676/445 +f 1402/1419/445 1559/1664/445 1562/1675/445 +f 1504/1539/705 1393/1412/705 1389/1414/705 +f 1403/1421/653 1561/1672/653 1504/1539/653 +f 1501/1535/445 1397/1676/445 1386/1533/445 +f 1400/1420/445 1562/1675/445 1501/1535/445 +f 1418/1437/706 1431/1677/706 1560/1670/706 +f 1429/1668/706 1431/1677/706 1424/1678/706 +f 1549/1636/668 1546/1679/668 1492/1680/668 +f 1473/1637/668 1492/1680/668 1491/1681/668 +f 1439/1682/443 1495/1518/443 1494/1683/443 +f 1452/1486/441 1499/1525/441 1465/1485/441 +f 1499/1525/441 1497/1684/441 1465/1485/441 +f 1494/1683/443 1483/1506/443 1486/1685/443 +f 1487/1511/441 1490/1686/441 1497/1684/441 +f 1486/1685/443 1478/1503/443 1475/1687/443 +f 1482/1505/668 1480/1688/668 1546/1679/668 +f 1478/1503/443 1476/1689/443 1475/1687/443 +f 1490/1686/441 1473/1497/441 1491/1690/441 +f 1444/1468/662 1439/1682/662 1438/1691/662 +f 1441/1692/660 1451/1474/660 1452/1486/660 +f 1436/1460/658 1444/1468/658 1438/1691/658 +f 1417/1693/706 1557/1694/706 1418/1437/706 +f 1428/1695/443 1434/1458/443 1417/1449/443 +f 1423/1443/655 1441/1692/655 1426/1453/655 +f 1426/1453/441 1424/1444/441 1423/1443/441 +f 1563/1696/707 1548/1697/707 1547/1698/707 +f 1493/1699/441 1474/1700/441 1482/1701/441 +f 1395/1702/443 1565/1703/443 1564/1704/443 +f 1389/1705/455 1564/1706/455 1390/1707/455 +f 1401/1708/555 1394/1709/555 1393/1710/555 +f 1390/1418/445 1565/1711/445 1401/1427/445 +f 1567/1712/441 1387/1713/441 1566/1714/441 +f 1396/1715/555 1566/1716/555 1397/1717/555 +f 1385/1614/502 1567/1718/502 1396/1422/502 +f 1397/1676/445 1387/1719/445 1386/1533/445 +f 1568/1720/441 1407/1721/441 1406/1722/441 +f 1398/1723/455 1406/1724/455 1399/1725/455 +f 1414/1665/445 1568/1726/445 1398/1666/445 +f 1405/1669/555 1569/957/555 1414/1434/555 +f 1570/1727/443 1421/1728/443 1420/1729/443 +f 1416/1730/502 1571/1731/502 1411/1732/502 +f 1411/1733/455 1570/1734/455 1408/1735/455 +f 1408/1441/445 1420/1736/445 1419/1737/445 +f 1468/1738/666 1520/1739/666 1467/1740/666 +f 1461/1741/663 1523/1742/663 1446/1743/663 +f 1572/1744/445 1573/1745/445 1574/1746/445 +f 1575/1747/502 1576/1748/502 1577/1749/502 +f 1572/1744/445 1574/1746/445 1578/1750/445 +f 1575/1747/502 1579/1751/502 1576/1748/502 +f 1572/1744/445 1578/1750/445 1580/1752/445 +f 1575/1747/502 1581/1753/502 1579/1751/502 +f 1572/1744/445 1580/1752/445 1582/1754/445 +f 1575/1747/502 1583/1755/502 1581/1753/502 +f 1572/1744/445 1582/1754/445 1584/1756/445 +f 1575/1747/502 1585/1757/502 1583/1755/502 +f 1572/1744/445 1584/1756/445 1586/1758/445 +f 1575/1747/502 1587/1759/502 1585/1757/502 +f 1572/1744/445 1586/1758/445 1588/1760/445 +f 1575/1747/502 1589/1761/502 1587/1759/502 +f 1572/1744/445 1588/1760/445 1573/1745/445 +f 1575/1747/502 1577/1749/502 1589/1761/502 +f 1563/1762/708 1592/1763/708 1590/1764/708 +f 1482/1765/703 1563/1766/703 1590/1767/703 +f 1591/1768/709 1594/1769/709 1592/1770/709 +f 1563/1771/710 1593/1772/710 1591/1773/710 +f 1555/1774/711 1592/1775/711 1594/1776/711 +f 1555/1777/712 1593/1778/712 1556/1779/712 +f 1595/1780/713 1596/1781/713 1597/1782/713 +f 1598/1783/714 1596/1784/714 1594/1785/714 +f 1599/1786/715 1601/1787/715 1598/1788/715 +f 1601/1789/716 1602/1790/716 1603/1791/716 +f 1602/1790/717 1605/1792/717 1603/1791/717 +f 1605/1793/718 1606/1794/718 1607/1795/718 +f 1607/1796/719 1608/1797/719 1606/1798/719 +f 1595/1780/720 1608/1799/720 1593/1800/720 +f 1597/1801/721 1594/1802/721 1595/1803/721 +f 1594/1776/722 1599/1786/722 1598/1788/722 +f 1606/1794/723 1593/1772/723 1607/1795/723 +f 1591/1804/724 1595/1803/724 1593/1805/724 +f 1597/1806/725 1596/1807/725 1592/1808/725 +f 1596/1784/726 1599/1809/726 1592/1143/726 +f 1606/1798/727 1608/1797/727 1591/1810/727 +f 1608/1811/728 1597/1812/728 1591/1813/728 +f 1649/1814/729 1647/1815/729 1642/1816/729 +f 1659/1817/730 1660/1818/730 1656/1819/730 +f 1662/1820/731 1641/1821/731 1663/1822/731 +f 1664/1823/732 1654/1824/732 1662/1820/732 +f 1650/1825/733 1664/1823/733 1665/1826/733 +f 1648/1827/734 1665/1826/734 1666/1828/734 +f 1646/1829/735 1666/1828/735 1667/1830/735 +f 1668/1831/736 1646/1829/736 1667/1830/736 +f 1663/1822/737 1644/1832/737 1668/1831/737 +f 1683/1833/738 1685/1834/738 1686/1835/738 +f 1687/1836/738 1689/1837/738 1690/1838/738 +f 1691/1839/738 1693/1840/738 1694/1841/738 +f 1696/1842/739 1698/1843/739 1695/1844/739 +f 1700/1845/739 1702/1846/739 1699/1847/739 +f 1704/1848/739 1706/1849/739 1703/1850/739 +f 1708/1851/739 1699/1847/739 1707/1852/739 +f 1701/1853/740 1683/1833/740 1704/1848/740 +f 1694/1841/738 1709/1854/738 1710/1855/738 +f 1697/1856/739 1707/1852/739 1698/1843/739 +f 1697/1856/740 1710/1855/740 1708/1851/740 +f 1708/1851/740 1687/1836/740 1700/1845/740 +f 1696/1842/740 1694/1841/740 1697/1856/740 +f 1700/1845/740 1690/1838/740 1701/1853/740 +f 1704/1848/740 1686/1835/740 1705/1857/740 +f 1701/1853/739 1703/1850/739 1702/1846/739 +f 1690/1838/738 1684/1858/738 1683/1833/738 +f 1712/1859/740 1696/1842/740 1711/1860/740 +f 1711/1860/739 1695/1844/739 1713/1861/739 +f 1712/1859/738 1692/1862/738 1691/1839/738 +f 1702/1846/741 1716/1863/741 1715/1864/741 +f 1698/1843/739 1718/1865/739 1717/1866/739 +f 1707/1852/741 1719/1867/741 1718/1865/741 +f 1699/1847/741 1715/1864/741 1719/1867/741 +f 1695/1844/739 1717/1866/739 1720/1868/739 +f 1721/1869/742 1723/1870/742 1724/1871/742 +f 1725/1872/742 1727/1873/742 1728/1874/742 +f 1729/1875/742 1731/1876/742 1732/1877/742 +f 1734/1878/743 1736/1879/743 1733/1880/743 +f 1738/1881/743 1740/1882/743 1737/1883/743 +f 1742/1884/743 1744/1885/743 1741/1886/743 +f 1737/1883/743 1746/1887/743 1745/1888/743 +f 1744/1885/744 1726/1889/744 1739/1890/744 +f 1730/1891/742 1748/1892/742 1731/1876/742 +f 1745/1888/743 1735/1893/743 1734/1878/743 +f 1746/1887/744 1730/1891/744 1735/1893/744 +f 1740/1882/744 1747/1894/744 1746/1887/744 +f 1736/1879/744 1730/1891/744 1729/1875/744 +f 1739/1890/744 1725/1872/744 1740/1882/744 +f 1743/1895/744 1721/1869/744 1744/1885/744 +f 1741/1886/743 1739/1890/743 1738/1881/743 +f 1726/1889/742 1724/1871/742 1727/1873/742 +f 1749/1896/744 1729/1875/744 1750/1897/744 +f 1733/1880/743 1749/1896/743 1751/1898/743 +f 1750/1897/742 1732/1877/742 1752/1899/742 +f 1753/1900/743 1741/1886/743 1738/1881/743 +f 1756/1901/745 1734/1878/745 1755/1902/745 +f 1757/1903/745 1745/1888/745 1756/1901/745 +f 1757/1903/745 1738/1881/745 1737/1883/745 +f 1755/1902/745 1733/1880/745 1758/1904/745 +f 1714/1905/746 1750/1906/746 1752/1907/746 +f 1685/1908/747 1724/1909/747 1723/1910/747 +f 1715/1911/748 1754/1912/748 1753/1913/748 +f 1689/1914/749 1728/1915/749 1727/1916/749 +f 1717/1917/750 1756/1918/750 1755/1919/750 +f 1693/1920/749 1732/1921/749 1731/1922/749 +f 1713/1923/751 1749/1924/751 1711/1925/751 +f 1705/1926/752 1722/1927/752 1743/1928/752 +f 1684/1929/749 1727/1916/749 1724/1909/749 +f 1719/1930/750 1753/1913/750 1757/1931/750 +f 1718/1932/748 1757/1931/748 1756/1918/748 +f 1709/1933/749 1731/1922/749 1748/1934/749 +f 1711/1925/753 1750/1906/753 1712/1935/753 +f 1685/1936/754 1722/1927/754 1686/1937/754 +f 1688/1938/755 1725/1939/755 1728/1940/755 +f 1709/1941/756 1747/1942/756 1710/1943/756 +f 1687/1944/757 1747/1945/757 1725/1946/757 +f 1751/1939/758 1720/1947/758 1758/1948/758 +f 1720/1947/750 1755/1919/750 1758/1948/750 +f 1692/1949/759 1752/1950/759 1732/1921/759 +f 1706/1951/752 1743/1928/752 1742/1952/752 +f 1716/1953/760 1742/1952/760 1754/1954/760 +f 1716/1863/741 1703/1850/741 1706/1849/741 +f 1754/1955/745 1742/1884/745 1741/1886/745 +f 1695/1844/739 1720/1868/739 1713/1861/739 +f 1758/1904/745 1733/1880/745 1751/1898/745 +f 1772/1956/555 1759/1957/555 1762/1958/555 +f 1772/1956/555 1761/1959/555 1774/1960/555 +f 1775/1961/555 1769/1962/555 1768/1963/555 +f 1778/1964/555 1763/1965/555 1777/1966/555 +f 1779/1967/555 1763/1965/555 1767/1968/555 +f 1780/1969/761 1767/1968/761 1770/1970/761 +f 1780/1969/555 1771/1971/555 1781/1972/555 +f 1782/1973/555 1765/1974/555 1760/1975/555 +f 1782/1973/555 1759/1957/555 1773/1976/555 +f 1783/1977/753 1766/1978/753 1765/1974/753 +f 1784/1979/555 1771/1971/555 1766/1978/555 +f 1778/1964/762 1768/1963/762 1764/1980/762 +f 1774/1960/555 1769/1962/555 1776/1981/555 +f 1814/1982/555 1812/1983/555 1820/1984/555 +f 808/762/441 809/845/441 810/763/441 +f 811/765/442 812/1985/442 813/766/442 +f 816/768/443 817/917/443 818/769/443 +f 820/771/444 821/882/444 822/772/444 +f 824/774/441 825/1986/441 826/775/441 +f 828/777/441 829/1043/441 830/778/441 +f 831/780/443 832/919/443 833/781/443 +f 835/783/443 836/921/443 837/784/443 +f 840/786/441 841/940/441 842/787/441 +f 843/789/445 844/1987/445 841/790/445 +f 845/792/446 846/949/446 847/793/446 +f 850/795/447 851/1988/447 852/796/447 +f 854/798/441 845/1040/441 855/799/441 +f 856/801/448 857/1034/448 858/802/448 +f 861/804/449 852/1989/449 851/805/449 +f 863/807/450 864/1990/450 865/808/450 +f 866/810/443 849/1991/443 852/811/443 +f 862/813/441 865/1992/441 860/814/441 +f 872/816/763 873/1051/764 874/817/764 +f 823/819/454 826/991/454 877/820/454 +f 878/822/455 879/1993/455 825/823/455 +f 880/825/456 871/1994/456 870/826/456 +f 891/828/457 892/1995/457 893/829/457 +f 895/831/455 896/1996/455 897/832/455 +f 899/834/458 896/1997/458 895/835/458 +f 900/837/459 898/1998/459 895/838/459 +f 901/840/460 811/844/460 814/841/460 +f 903/843/461 878/1999/461 811/844/461 +f 809/845/462 898/1998/462 900/837/462 +f 809/846/463 816/2000/463 899/834/463 +f 824/824/464 812/2001/464 811/847/464 +f 905/848/465 906/923/465 907/849/465 +f 855/799/765 845/1040/766 848/851/766 +f 909/853/469 856/2002/469 859/795/469 +f 833/781/767 905/920/767 904/855/767 +f 912/856/471 913/859/471 914/857/471 +f 913/859/472 927/861/472 928/860/472 +f 927/861/472 935/863/472 936/862/472 +f 935/863/472 943/865/472 944/864/472 +f 943/865/472 891/828/472 890/830/472 +f 909/866/473 910/2003/473 952/867/473 +f 953/869/474 954/1031/474 955/870/474 +f 957/872/475 958/906/475 959/873/475 +f 951/868/473 952/867/473 962/875/473 +f 822/772/476 964/883/476 965/877/476 +f 957/879/477 960/899/477 966/880/477 +f 821/882/478 966/2004/478 964/883/478 +f 830/778/448 829/1043/448 967/884/448 +f 962/875/443 952/867/443 969/886/443 +f 965/877/441 964/883/441 971/888/441 +f 952/867/443 910/2003/443 973/890/443 +f 959/873/479 974/1044/479 975/891/479 +f 967/884/441 976/1045/441 977/892/441 +f 955/870/443 978/1033/443 979/893/443 +f 859/894/480 980/2005/480 973/895/480 +f 964/883/481 966/2004/481 981/897/481 +f 858/802/441 982/1032/441 980/898/441 +f 960/899/482 975/2006/482 981/900/482 +f 983/901/483 957/879/483 821/881/483 +f 984/903/441 819/773/441 822/772/441 +f 985/904/443 986/909/443 951/868/443 +f 983/905/484 987/1042/484 958/906/484 +f 989/907/443 954/1031/443 953/869/443 +f 986/909/443 990/918/443 909/866/443 +f 991/910/485 856/2007/485 909/911/485 +f 992/913/441 857/1034/441 856/801/441 +f 808/762/486 992/913/486 991/914/486 +f 809/915/487 991/910/487 990/912/487 +f 817/917/488 816/768/488 990/918/488 +f 837/784/489 989/907/489 988/908/489 +f 833/781/490 987/1042/490 983/905/490 +f 836/921/488 817/917/488 986/909/488 +f 993/922/491 994/926/491 819/773/491 +f 905/848/492 983/901/492 820/902/492 +f 996/924/486 828/777/486 827/779/486 +f 994/926/493 906/998/493 820/771/493 +f 979/927/768 978/927/769 997/927/770 +f 970/927/541 969/927/496 999/927/771 +f 969/927/772 973/927/773 1001/927/774 +f 974/928/501 971/2008/501 981/929/501 +f 1002/931/502 1003/1041/502 997/932/502 +f 1004/934/502 1005/1030/502 999/935/502 +f 1006/937/503 1007/2009/503 1008/938/503 +f 980/927/775 982/927/506 1005/927/776 +f 972/927/508 971/927/777 1007/927/778 +f 973/927/517 980/927/512 1004/927/516 +f 977/927/779 976/927/515 1003/927/780 +f 971/927/511 974/927/512 1008/927/510 +f 841/940/441 1009/2010/441 1010/941/441 +f 1011/942/443 846/1019/443 1012/943/443 +f 844/945/450 1014/2011/450 1009/946/450 +f 845/792/447 1015/2012/447 1012/948/447 +f 1009/950/781 862/957/782 867/951/783 +f 1012/953/784 849/959/784 866/954/784 +f 1009/950/785 1014/1036/786 863/956/787 +f 1015/958/524 850/1037/524 849/959/524 +f 892/960/456 1029/963/456 1030/961/456 +f 1029/963/456 871/1994/456 880/825/456 +f 1031/964/456 1032/967/456 1028/965/456 +f 1030/961/456 880/825/456 1032/967/456 +f 1033/968/456 1031/964/456 885/966/456 +f 893/962/456 1030/961/456 1031/964/456 +f 947/970/472 1036/973/472 1037/971/472 +f 944/864/472 890/830/472 1037/971/472 +f 939/974/472 1039/975/472 1036/973/472 +f 936/862/472 944/864/472 1036/973/472 +f 931/976/472 1041/977/472 1039/975/472 +f 928/860/472 936/862/472 1039/975/472 +f 921/978/472 1043/979/472 1041/977/472 +f 914/857/472 928/860/472 1041/977/472 +f 920/980/471 1045/981/471 1043/979/471 +f 1045/981/471 911/858/471 914/857/471 +f 883/972/457 1037/971/457 1033/982/457 +f 890/830/457 893/829/457 1033/982/457 +f 1032/967/456 889/985/456 888/984/456 +f 880/825/456 881/827/456 889/985/456 +f 877/986/441 879/2013/441 1026/987/441 +f 825/989/526 920/2014/526 919/990/526 +f 877/820/527 826/991/527 924/992/527 +f 923/993/443 879/2015/443 877/820/443 +f 826/991/788 919/990/788 1027/2016/788 +f 826/991/526 1027/2016/526 916/994/526 +f 834/782/789 904/855/789 1047/995/790 +f 994/926/791 1048/1027/791 907/997/791 +f 904/850/465 907/849/465 908/999/465 +f 810/763/462 900/837/462 1050/1001/462 +f 816/768/461 815/770/461 1051/1003/461 +f 1051/1003/460 897/1028/460 896/1005/460 +f 900/837/459 894/839/459 1052/1006/459 +f 894/833/532 897/832/532 902/1007/532 +f 1053/1009/441 1048/1027/441 994/926/441 +f 1054/1010/441 1055/1035/441 996/924/441 +f 835/783/443 838/785/443 1057/1011/443 +f 1058/1013/443 831/780/443 834/782/443 +f 903/843/443 815/770/443 818/769/443 +f 807/764/441 810/763/441 1049/1002/441 +f 1060/1015/441 1049/1002/441 824/774/441 +f 1061/1016/792 1062/1089/792 1063/1017/792 +f 1011/942/443 1058/1013/443 1046/996/443 +f 1056/1012/443 1057/1011/443 844/1020/443 +f 1052/1008/455 902/1007/455 814/1022/455 +f 1050/1001/459 1052/1006/459 813/1024/459 +f 1049/1002/462 1050/1001/462 812/1025/462 +f 1047/1000/465 908/999/465 848/794/465 +f 1046/996/793 1047/995/794 847/1026/795 +f 1048/1027/796 855/799/797 908/852/798 +f 815/770/461 903/843/461 901/840/461 +f 1051/1003/460 901/840/460 902/842/460 +f 853/800/441 855/799/441 1048/1027/441 +f 807/764/441 1060/1015/441 839/788/441 +f 1059/1014/443 1056/1012/443 843/1021/443 +f 818/769/443 835/783/443 1056/1012/443 +f 807/764/441 1054/1010/441 995/925/441 +f 982/927/799 977/927/496 1002/927/800 +f 1005/1030/502 1002/931/502 1000/933/502 +f 978/927/549 970/927/801 1000/927/802 +f 995/925/486 827/779/486 992/913/486 +f 837/784/488 836/921/488 985/904/488 +f 989/907/443 985/904/443 961/876/443 +f 968/885/441 977/892/441 982/1032/441 +f 955/870/443 962/875/443 970/887/443 +f 857/1034/448 830/778/448 968/885/448 +f 961/876/473 962/875/473 955/870/473 +f 876/821/445 843/789/445 840/791/445 +f 1060/1015/441 823/776/441 840/786/441 +f 818/769/443 817/917/443 836/921/443 +f 827/779/441 830/778/441 857/1034/441 +f 844/1020/443 1057/1011/443 1058/1013/443 +f 1057/1011/443 838/785/443 831/780/443 +f 1055/1035/441 1053/1009/441 993/922/441 +f 1014/1036/803 1013/955/520 866/954/520 +f 1015/958/519 1010/952/519 867/951/519 +f 844/1020/443 1011/942/443 1013/944/443 +f 854/798/441 1010/941/441 1015/1039/441 +f 976/927/506 972/927/804 1006/927/805 +f 1003/1041/503 1006/937/503 998/939/503 +f 974/927/540 979/927/799 998/927/806 +f 996/924/491 993/922/491 984/903/491 +f 832/919/489 988/908/489 987/1042/489 +f 988/908/443 953/869/443 958/906/443 +f 828/777/441 984/903/441 963/878/441 +f 956/871/443 979/893/443 974/1044/443 +f 967/884/441 965/877/441 972/889/441 +f 963/878/476 965/877/476 967/884/476 +f 958/906/474 953/869/474 956/871/474 +f 867/815/441 860/814/441 851/1046/441 +f 863/1048/443 866/810/443 861/812/443 +f 864/823/449 861/804/449 860/806/449 +f 841/940/441 854/798/441 853/800/441 +f 838/785/443 837/784/443 832/919/443 +f 873/1051/807 1065/1112/807 1066/1052/807 +f 1064/1018/808 1063/1017/808 1067/1053/808 +f 1070/1055/808 1071/1093/808 1072/1056/808 +f 1074/1058/809 1075/1092/809 1076/1059/809 +f 1069/1057/553 1072/1056/553 1078/1061/553 +f 1079/1063/552 1064/1018/552 1068/1054/552 +f 1072/1065/455 1081/2017/455 1082/1066/455 +f 1083/1068/810 1084/1087/810 1085/1069/810 +f 1074/1071/445 1088/2018/445 1089/1072/445 +f 1064/1074/811 1085/2019/811 1084/1075/811 +f 873/1077/555 1090/2020/555 1086/1078/555 +f 1061/1080/812 1084/2021/812 1091/1081/812 +f 872/1083/557 1093/1804/557 1090/1084/557 +f 1094/1086/813 1095/1135/814 1084/1087/813 +f 1096/1088/815 1097/2022/816 1062/1089/816 +f 1087/1090/817 872/816/818 875/818/819 +f 1087/1090/561 1098/1091/561 1075/1092/561 +f 1071/1093/816 1097/2022/816 1096/1088/820 +f 1081/1094/821 1095/1135/822 1094/1086/821 +f 1096/1096/823 1095/2023/823 1081/1097/823 +f 1093/1099/555 1100/1133/555 1101/1100/555 +f 1088/1102/443 1082/1095/443 1094/1086/443 +f 1093/1099/555 1099/1101/555 1102/1104/555 +f 1079/1079/555 1086/1078/555 1085/1106/555 +f 1093/1108/443 1083/1068/443 1086/1070/443 +f 1078/1067/455 1082/1066/455 1088/1110/455 +f 1079/1063/552 1080/1064/552 1065/1112/552 +f 1073/1060/553 1077/1062/553 1078/1061/553 +f 1104/1113/443 1102/2024/443 1099/1114/443 +f 1094/1116/455 1104/2025/455 1103/1117/455 +f 1089/1118/455 1105/1128/455 1106/1119/455 +f 1083/1121/502 1102/2026/502 1104/1122/502 +f 1106/1124/445 1105/1127/445 1100/1125/445 +f 1105/1127/445 1108/2027/445 1101/1121/445 +f 1103/1117/455 1108/2028/455 1105/1128/455 +f 872/1129/441 1087/2029/441 1106/1130/441 +f 872/1132/555 1107/2030/555 1100/1133/555 +f 1099/1114/443 1101/2031/443 1108/1134/443 +f 1095/1135/824 1109/2032/824 1091/1136/824 +f 1096/1137/825 1110/2033/825 1109/1138/825 +f 1092/1140/826 1091/2034/826 1109/1141/826 +f 1061/1143/827 1092/2035/827 1110/1144/827 +f 1112/1146/571 1113/2036/571 1114/1147/571 +f 1150/2037/441 1139/1154/441 1140/1153/441 +f 1140/1153/441 1141/1151/441 1150/2037/441 +f 1141/1151/441 1142/2038/441 1143/1149/441 +f 1150/2037/441 1141/1151/441 1137/2039/441 +f 1143/1149/441 1144/2040/441 1148/1150/441 +f 1144/2040/441 1145/2041/441 1148/1150/441 +f 1145/2041/441 1146/2042/441 1147/2043/441 +f 1148/1150/441 1145/2041/441 1147/2043/441 +f 1148/1150/441 1149/2044/441 1141/1151/441 +f 1149/2044/441 1138/2045/441 1141/1151/441 +f 1138/2045/441 1137/2039/441 1141/1151/441 +f 1114/1152/572 1113/2046/572 1140/1153/572 +f 1151/2047/443 1152/2048/443 1160/1156/443 +f 1152/2048/443 1153/2049/443 1160/1156/443 +f 1153/2049/443 1154/2050/443 1160/1156/443 +f 1154/2050/443 1155/1157/443 1160/1156/443 +f 1155/1157/443 1156/2051/443 1136/2052/443 +f 1156/2051/443 1157/2053/443 1136/2052/443 +f 1136/2052/443 1135/2054/443 1155/1157/443 +f 1135/2054/443 1158/1155/443 1155/1157/443 +f 1158/1155/443 1159/2055/443 1160/1156/443 +f 1160/1156/443 1161/1159/443 1151/2047/443 +f 1161/1159/443 1162/2056/443 1151/2047/443 +f 1111/1158/573 1162/2056/573 1161/1159/573 +f 1190/1161/574 1191/1164/574 1192/1162/574 +f 1191/1164/575 1193/2057/575 1194/1165/575 +f 1193/1166/576 1195/1169/576 1196/1167/576 +f 1195/1169/577 1197/2058/577 1198/1170/577 +f 1197/1171/603 1199/1174/603 1200/1172/603 +f 1199/1174/579 1201/1176/579 1202/1175/579 +f 1201/1176/580 1203/2059/580 1204/1177/580 +f 1203/1178/581 1205/1181/581 1206/1179/581 +f 1205/1181/582 1207/1183/582 1208/1182/582 +f 1207/1183/583 1209/1185/583 1210/1184/583 +f 1209/1185/584 1211/2060/584 1212/1186/584 +f 1211/1187/585 1190/1161/585 1189/1163/585 +f 1213/1191/828 1214/2061/828 1196/1192/828 +f 1198/2062/829 1200/1189/829 1213/1191/829 +f 1200/1189/830 1202/2063/831 1216/1190/830 +f 1202/2063/832 1215/2064/833 1216/1190/834 +f 1213/1191/835 1196/1192/835 1198/2062/835 +f 1217/2065/836 1218/2066/836 1189/2067/837 +f 1189/2067/838 1192/2068/839 1217/2065/839 +f 1192/2068/840 1194/2069/840 1217/2065/840 +f 1194/2069/841 1196/1192/841 1221/1194/841 +f 1196/1192/587 1214/2061/587 1219/2070/587 +f 1220/1193/587 1196/1192/587 1219/2070/587 +f 1221/1194/842 1217/2065/842 1194/2069/842 +f 1222/1196/843 1223/2071/843 1208/2072/843 +f 1210/1197/844 1212/2073/844 1224/1195/844 +f 1212/2073/845 1189/2067/846 1224/1195/845 +f 1222/1196/843 1208/2072/843 1210/1197/843 +f 1189/2067/847 1218/2066/848 1224/1195/848 +f 1225/1198/849 1215/2064/850 1202/2063/851 +f 1202/2063/852 1204/2074/853 1225/1198/853 +f 1204/2074/854 1206/1199/854 1225/1198/854 +f 1206/1199/855 1208/2072/855 1226/1200/855 +f 1208/2072/855 1223/2071/855 1226/1200/855 +f 1201/2075/856 1178/2076/857 1180/1201/858 +f 1182/1202/859 1184/2077/859 1207/2078/859 +f 1203/2079/860 1201/2075/861 1180/1201/860 +f 1182/1202/859 1207/2078/859 1205/1203/859 +f 1203/2079/862 1180/1201/862 1205/1203/862 +f 1195/1209/863 1171/2080/863 1174/1204/863 +f 1176/1205/864 1178/2076/865 1201/2075/866 +f 1197/2081/867 1195/1209/867 1174/1204/867 +f 1176/1205/868 1201/2075/869 1199/1206/868 +f 1197/2081/870 1174/1204/870 1199/1206/870 +f 1190/2082/871 1166/2083/872 1165/2084/872 +f 1190/2082/873 1165/2084/874 1191/2085/874 +f 1165/2084/875 1168/2086/875 1193/2087/875 +f 1193/2087/876 1191/2085/876 1165/2084/876 +f 1171/2080/592 1195/1209/592 1172/1208/592 +f 1195/1209/877 1193/2087/877 1168/2086/877 +f 1227/1207/592 1195/1209/592 1168/2086/592 +f 1207/2078/878 1184/2077/878 1186/2088/878 +f 1188/1211/879 1166/2083/879 1190/2082/880 +f 1209/1210/878 1207/2078/878 1186/2088/878 +f 1186/2088/881 1188/1211/881 1209/1210/881 +f 1188/1211/882 1190/2082/883 1211/1212/882 +f 1264/1213/884 1265/1318/885 1266/1214/441 +f 1265/1216/455 1267/2089/455 1268/1217/455 +f 1267/1219/443 1269/1351/443 1270/1220/443 +f 1272/1222/555 1264/1386/555 1263/1223/555 +f 1263/2090/445 1266/2091/445 1271/1227/445 +f 1266/2091/445 1268/1225/445 1271/1227/445 +f 1268/1225/445 1270/2092/445 1273/1226/445 +f 1274/1228/527 1275/1228/527 1276/1229/527 +f 1278/927/527 1279/927/527 1280/927/527 +f 1282/1231/595 1283/1238/595 1276/1229/595 +f 1269/1232/597 1285/2093/597 1286/1233/597 +f 1267/1235/598 1265/2094/598 1282/1236/598 +f 1290/1371/599 1276/1229/599 1289/2095/599 +f 1276/1229/599 1283/1238/599 1288/1240/599 +f 1289/2095/599 1276/1229/599 1288/1240/599 +f 1292/1241/600 1293/2096/600 1294/1242/600 +f 1277/1244/443 1296/1286/443 1297/1245/443 +f 1278/1247/886 1281/2097/886 1299/1248/886 +f 1282/1231/595 1283/1238/595 1299/1250/595 +f 1285/927/527 1300/927/527 1295/927/527 +f 1300/1251/602 1274/1352/602 1277/1244/602 +f 1286/1233/603 1285/2093/603 1292/1241/603 +f 1303/1254/443 1297/1245/443 1296/1286/443 +f 1296/1286/443 1301/1252/443 1303/1254/443 +f 1304/927/527 1303/927/527 1302/927/887 +f 1287/1255/650 1306/2098/650 1307/1256/650 +f 1281/927/527 1280/927/527 1309/927/596 +f 1276/1229/599 1290/1371/599 1296/1257/599 +f 1299/1248/606 1281/2097/606 1310/1258/606 +f 1287/1239/599 1306/2099/599 1299/1250/599 +f 1292/927/527 1295/927/527 1297/927/596 +f 1308/1260/502 1312/2100/502 1313/1261/502 +f 1314/927/611 1305/927/888 1302/927/889 +f 1312/927/497 1308/927/497 1307/927/497 +f 1316/1263/890 1304/1370/890 1305/1264/890 +f 1287/1239/614 1308/2101/614 1311/1266/614 +f 1318/927/527 1319/927/527 1312/927/887 +f 1296/1257/614 1290/1371/614 1314/1267/614 +f 1307/1270/891 1306/1259/891 1318/1268/891 +f 1306/1259/892 1310/1258/892 1318/1268/892 +f 1306/1259/441 1320/2102/441 1321/1271/441 +f 1290/1272/443 1276/1634/443 1322/1273/443 +f 1325/1275/441 1326/2103/441 1327/1276/441 +f 1330/2104/443 1314/2105/443 1329/1280/443 +f 1314/2105/893 1290/1278/893 1329/1280/893 +f 1331/1281/443 1332/1315/443 1333/1282/443 +f 1337/1311/894 1306/1259/894 1336/1285/894 +f 1306/1259/895 1307/1270/895 1336/1285/895 +f 1296/1286/443 1331/1281/443 1334/1283/443 +f 1324/1277/441 1327/1276/441 1287/1287/441 +f 1328/1289/622 1290/2106/622 1338/1290/622 +f 1326/927/527 1340/927/527 1341/927/596 +f 1343/1291/896 1330/2107/896 1329/1292/896 +f 1335/1294/617 1307/2108/617 1345/1295/617 +f 1299/1297/618 1321/2109/618 1322/1298/618 +f 1276/1299/527 1283/2110/527 1299/1297/527 +f 1321/1300/619 1320/2111/619 1323/1301/619 +f 1296/988/618 1290/2112/618 1323/1306/618 +f 1340/927/527 1346/927/527 1347/927/596 +f 1331/927/527 1348/927/527 1349/927/527 +f 1306/1308/527 1337/1309/527 1350/1309/527 +f 1346/1311/897 1352/2113/897 1353/1312/897 +f 1354/1314/898 1355/1331/898 1349/1315/898 +f 1267/1219/625 1268/1221/625 1356/1316/625 +f 1265/1318/626 1358/1322/626 1359/1319/626 +f 1356/1316/629 1360/1323/629 1361/1320/629 +f 1362/1321/630 1363/1326/630 1359/1319/630 +f 1360/1323/629 1364/1328/629 1365/1324/629 +f 1362/1321/630 1366/1330/630 1367/1325/630 +f 1360/1323/443 1368/2114/443 1369/1327/443 +f 1367/1325/441 1370/2115/441 1371/1329/441 +f 1353/1312/899 1352/2113/899 1366/1330/899 +f 1354/1314/900 1361/1320/900 1365/1324/900 +f 1352/1332/901 1346/2116/901 1349/1333/901 +f 1365/1335/902 1366/1336/902 1352/1332/902 +f 1366/1336/903 1365/1335/903 1364/1337/903 +f 1369/1339/455 1370/2117/455 1367/1338/455 +f 1369/1340/635 1368/2118/635 1371/1341/635 +f 1368/1343/555 1360/2119/555 1363/1344/555 +f 1356/1346/445 1359/2120/445 1363/1347/445 +f 1268/1217/636 1266/1218/636 1359/1349/636 +f 1264/1213/904 1278/1247/638 1298/1249/638 +f 1269/1351/640 1267/1219/640 1274/1352/640 +f 1347/1353/905 1353/2121/905 1354/1354/905 +f 1354/1356/906 1353/2122/906 1362/1357/906 +f 1351/1359/643 1350/2123/643 1339/1360/643 +f 1361/1358/907 1362/1357/907 1358/1362/907 +f 1343/1364/617 1372/2124/617 1314/1365/617 +f 1310/927/527 1309/927/527 1319/927/604 +f 1336/1367/896 1335/2125/896 1344/1368/896 +f 1294/1242/650 1293/2096/650 1304/1370/650 +f 1290/1371/614 1289/2095/614 1374/1372/614 +f 1294/1242/647 1316/1263/647 1376/1373/647 +f 1376/1373/613 1313/2126/613 1312/1375/613 +f 1316/1377/649 1342/2127/649 1373/1378/649 +f 1374/1379/502 1317/1260/502 1305/1262/502 +f 1375/1374/908 1376/1373/908 1319/1376/908 +f 1377/1382/603 1378/1385/603 1280/1383/603 +f 1377/1382/603 1286/1233/603 1291/1243/603 +f 1378/1385/600 1375/1374/600 1309/1381/600 +f 1291/1243/600 1294/1242/600 1375/1374/600 +f 1272/1222/651 1377/1382/651 1279/1384/651 +f 1284/1234/597 1286/1233/597 1377/1382/597 +f 1269/1232/555 1284/1234/555 1273/1387/555 +f 1284/1234/555 1272/1222/555 1271/1224/555 +f 1373/1369/652 1342/1293/652 1380/1389/652 +f 1337/1391/909 1336/1367/909 1373/1369/909 +f 1342/1293/910 1329/1292/910 1328/1392/910 +f 1293/927/527 1297/927/527 1303/927/604 +f 1373/1393/443 1344/2128/443 1311/1394/443 +f 1311/1394/443 1313/2129/443 1376/1396/443 +f 1374/1397/441 1289/1401/441 1316/1398/441 +f 1374/1397/441 1343/2130/441 1342/1400/441 +f 1381/1402/443 1382/2131/443 1287/1403/443 +f 1383/1405/443 1384/2132/443 1296/1286/443 +f 1386/1406/455 1387/2133/455 1388/1407/455 +f 1390/1409/443 1391/1550/443 1392/1410/443 +f 1393/1412/502 1394/2134/502 1395/1413/502 +f 1396/1415/441 1397/2135/441 1398/1416/441 +f 1390/1418/445 1401/1427/445 1402/1419/445 +f 1403/1421/911 1385/1614/911 1396/1422/911 +f 1399/1424/502 1406/2136/502 1407/1425/502 +f 1401/1427/445 1408/1441/445 1409/1428/445 +f 1396/1422/502 1399/2137/502 1410/1429/502 +f 1393/1430/443 1411/2138/443 1408/1431/443 +f 1413/1433/555 1405/1669/555 1414/1434/555 +f 1416/1436/555 1417/1693/555 1418/1437/555 +f 1419/1439/555 1420/2139/555 1421/1440/555 +f 1408/1441/445 1419/1737/445 1422/1442/445 +f 1399/1392/455 1426/2140/455 1427/1446/455 +f 1411/1448/443 1428/1695/443 1417/1449/443 +f 1399/1451/441 1405/2141/441 1429/1452/441 +f 1430/1454/912 1425/1651/912 1424/1455/912 +f 1425/1445/913 1432/2142/913 1433/1457/913 +f 1438/1461/656 1439/1527/656 1440/1462/656 +f 1427/1464/657 1426/2143/657 1441/1465/657 +f 1435/1459/658 1428/1695/658 1443/1467/658 +f 1445/1469/659 1436/1658/659 1438/1461/659 +f 1446/1470/443 1447/1526/443 1448/1471/443 +f 1433/1457/660 1432/2142/660 1450/1473/660 +f 1441/1465/661 1452/2144/661 1453/1475/661 +f 1443/1467/662 1454/1529/662 1455/1476/662 +f 1457/1477/663 1458/2145/663 1459/1478/663 +f 1461/1480/441 1462/2146/441 1463/1481/441 +f 1463/1481/441 1462/2146/441 1457/1483/441 +f 1465/1485/441 1461/1480/441 1460/1482/441 +f 1452/1487/664 1460/1493/664 1466/1488/664 +f 1462/1490/665 1449/2147/665 1468/1491/665 +f 1460/1493/666 1463/2148/666 1469/1494/666 +f 1470/1495/441 1471/2149/441 1472/1496/441 +f 1475/1498/667 1476/2150/667 1477/1499/667 +f 1479/1501/443 1480/2151/443 1481/1502/443 +f 1477/1499/668 1476/2150/668 1481/1504/668 +f 1483/1506/443 1484/1519/443 1479/1501/443 +f 1486/1507/669 1475/1633/669 1474/1508/669 +f 1488/1510/441 1471/2149/441 1470/1495/441 +f 1490/1512/702 1491/2152/702 1492/1513/702 +f 1494/1515/671 1486/2153/671 1485/1516/671 +f 1465/1520/672 1497/1523/672 1498/1521/672 +f 1497/1523/673 1490/1512/673 1489/1514/673 +f 1500/1524/441 1488/1510/441 1487/1511/441 +f 1484/1519/443 1454/1529/443 1447/1526/443 +f 1450/1473/441 1500/1524/441 1499/1525/441 +f 1439/1527/674 1494/2154/674 1493/1528/674 +f 1454/1529/443 1484/1519/443 1495/1518/443 +f 1462/1530/675 1461/2155/675 1446/1531/675 +f 1386/1533/445 1502/1552/445 1503/1534/445 +f 1464/1536/676 1457/1477/676 1456/1479/676 +f 1389/1414/502 1392/2156/502 1505/1538/502 +f 1386/1540/441 1385/2157/441 1506/1541/441 +f 1508/1543/678 1509/2158/678 1510/1544/678 +f 1511/1546/443 1512/1579/443 1468/1547/443 +f 1502/1542/441 1506/1541/441 1513/1548/441 +f 1391/1550/443 1510/2159/443 1509/1551/443 +f 1502/1552/679 1514/2160/679 1515/1553/679 +f 1484/1554/680 1517/2161/680 1518/1555/680 +f 1465/1485/441 1519/2162/441 1520/1557/441 +f 1459/1478/694 1458/2145/694 1521/1558/694 +f 1517/1560/682 1523/2163/682 1524/1561/682 +f 1523/1563/683 1525/2164/683 1526/1564/683 +f 1457/1483/441 1462/2146/441 1467/1566/441 +f 1448/1471/443 1527/2165/443 1511/1546/443 +f 1463/1568/684 1464/2166/684 1403/1421/684 +f 1484/1519/443 1446/1470/443 1523/1570/443 +f 1528/1572/914 1529/2167/690 1530/1573/690 +f 1525/1574/688 1529/2167/688 1528/1572/688 +f 1458/1567/441 1467/1566/441 1531/1576/441 +f 1468/1547/443 1529/1580/443 1525/1578/443 +f 1512/1579/443 1530/2168/443 1529/1580/443 +f 1467/1566/441 1520/1557/441 1532/1581/441 +f 1533/1582/688 1534/1585/688 1531/1583/688 +f 1526/1575/688 1528/1572/688 1534/1585/688 +f 1534/1585/915 1522/1587/916 1521/1586/917 +f 1528/1572/918 1508/1543/919 1522/1587/920 +f 1535/1588/684 1504/1539/684 1527/1589/684 +f 1469/1569/684 1403/1421/684 1504/1539/684 +f 1536/1591/683 1533/1594/683 1532/1592/683 +f 1524/1565/683 1526/1564/683 1533/1594/683 +f 1537/1595/682 1536/1598/682 1520/1596/682 +f 1518/1562/682 1524/1561/682 1536/1598/682 +f 1538/1599/921 1508/1602/921 1530/1600/921 +f 1459/1478/695 1522/1559/695 1508/1602/695 +f 1496/1603/665 1537/1606/665 1519/1604/665 +f 1516/1556/680 1518/1555/680 1537/1606/680 +f 1539/1607/679 1507/1610/679 1510/1608/679 +f 1503/1534/679 1515/1553/679 1507/1610/679 +f 1513/1611/678 1522/1587/678 1515/1612/678 +f 1522/1587/678 1508/1543/678 1507/1545/678 +f 1385/1614/922 1403/1421/922 1540/1615/922 +f 1504/1539/697 1505/1538/697 1540/1615/697 +f 1504/1617/676 1541/1620/676 1511/1618/676 +f 1403/1537/676 1456/1479/676 1541/1620/676 +f 1400/1420/445 1539/1607/445 1391/1609/445 +f 1501/1535/445 1503/1534/445 1539/1607/445 +f 1542/1621/923 1543/2169/923 1500/1622/923 +f 1516/1624/698 1544/1627/698 1479/1625/698 +f 1498/1521/673 1489/1514/673 1544/1627/673 +f 1543/1628/924 1545/2170/924 1488/1629/924 +f 1544/1627/702 1546/1632/702 1480/1631/702 +f 1489/1514/702 1492/1513/702 1546/1632/702 +f 1545/1633/669 1547/2171/669 1471/1634/669 +f 1472/1635/668 1548/2172/668 1549/1636/668 +f 1547/1638/667 1548/2172/667 1472/1635/667 +f 1550/1640/666 1535/1643/666 1448/1641/666 +f 1466/1488/666 1469/1494/666 1535/1643/666 +f 1551/1644/664 1550/1640/664 1447/1642/664 +f 1453/1489/664 1466/1488/664 1550/1640/664 +f 1541/1620/663 1538/1599/663 1512/1601/663 +f 1456/1479/663 1459/1478/663 1538/1599/663 +f 1443/1646/661 1552/1649/661 1551/1647/661 +f 1442/1466/661 1453/1475/661 1551/1647/661 +f 1430/1454/659 1553/1652/659 1432/1650/659 +f 1445/1469/659 1437/1463/659 1553/1652/659 +f 1554/1653/657 1552/1649/657 1443/1646/657 +f 1427/1464/657 1442/1466/657 1552/1649/657 +f 1432/1650/656 1553/1652/656 1542/1621/656 +f 1556/1655/703 1430/1454/703 1445/1469/703 +f 1445/1469/704 1557/1659/704 1434/1657/704 +f 1430/1454/704 1431/1456/704 1557/1659/704 +f 1558/1660/455 1554/1663/455 1428/1661/455 +f 1410/1447/455 1427/1446/455 1554/1663/455 +f 1559/1664/445 1412/1667/445 1414/1665/445 +f 1409/1428/445 1422/1442/445 1412/1667/445 +f 1413/1433/555 1560/1670/555 1429/1668/555 +f 1415/1438/555 1418/1437/555 1560/1670/555 +f 1416/1436/555 1415/1438/555 1422/1671/555 +f 1415/1438/555 1413/1433/555 1412/1435/555 +f 1561/1672/502 1558/1674/502 1411/1673/502 +f 1404/1423/502 1410/1429/502 1558/1674/502 +f 1562/1675/445 1559/1664/445 1398/1666/445 +f 1402/1419/445 1409/1428/445 1559/1664/445 +f 1504/1539/653 1561/1672/653 1393/1412/653 +f 1403/1421/653 1404/1423/653 1561/1672/653 +f 1501/1535/445 1562/1675/445 1397/1676/445 +f 1400/1420/445 1402/1419/445 1562/1675/445 +f 1418/1437/706 1557/1694/706 1431/1677/706 +f 1429/1668/706 1560/1670/706 1431/1677/706 +f 1549/1636/668 1482/1505/668 1546/1679/668 +f 1473/1637/668 1549/1636/668 1492/1680/668 +f 1439/1682/443 1455/1476/443 1495/1518/443 +f 1452/1486/441 1451/1474/441 1499/1525/441 +f 1499/1525/441 1487/1511/441 1497/1684/441 +f 1494/1683/443 1495/1518/443 1483/1506/443 +f 1487/1511/441 1470/1495/441 1490/1686/441 +f 1486/1685/443 1483/1506/443 1478/1503/443 +f 1482/1505/668 1481/1504/668 1480/1688/668 +f 1478/1503/443 1481/1502/443 1476/1689/443 +f 1490/1686/441 1470/1495/441 1473/1497/441 +f 1444/1468/662 1455/1476/662 1439/1682/662 +f 1441/1692/660 1433/1457/660 1451/1474/660 +f 1436/1460/658 1435/1459/658 1444/1468/658 +f 1417/1693/706 1434/2173/706 1557/1694/706 +f 1428/1695/443 1435/1459/443 1434/1458/443 +f 1423/1443/655 1433/1457/655 1441/1692/655 +f 1426/1453/441 1429/1452/441 1424/1444/441 +f 1542/2174/925 1553/2175/925 1556/2176/925 +f 1553/2175/926 1430/2177/926 1556/2176/926 +f 1556/2176/927 1563/1696/927 1547/1698/927 +f 1563/1696/928 1549/2178/928 1548/1697/928 +f 1547/1698/929 1545/2179/929 1556/2176/929 +f 1545/2179/930 1543/2180/930 1556/2176/930 +f 1543/2180/931 1542/2174/931 1556/2176/931 +f 1437/2181/932 1440/2182/932 1482/1701/932 +f 1440/2182/441 1493/1699/441 1482/1701/441 +f 1493/1699/441 1485/2183/441 1474/1700/441 +f 1474/1700/441 1477/2184/441 1482/1701/441 +f 1395/1702/443 1394/2185/443 1565/1703/443 +f 1389/1705/455 1395/2186/455 1564/1706/455 +f 1401/1708/555 1565/2187/555 1394/1709/555 +f 1390/1418/445 1564/2188/445 1565/1711/445 +f 1567/1712/441 1388/2189/441 1387/1713/441 +f 1396/1715/555 1567/2190/555 1566/1716/555 +f 1385/1614/502 1388/2191/502 1567/1718/502 +f 1397/1676/445 1566/2192/445 1387/1719/445 +f 1568/1720/441 1569/2193/441 1407/1721/441 +f 1398/1723/455 1568/2194/455 1406/1724/455 +f 1414/1665/445 1569/2195/445 1568/1726/445 +f 1405/1669/555 1407/2196/555 1569/957/555 +f 1570/1727/443 1571/2197/443 1421/1728/443 +f 1416/1730/502 1421/2198/502 1571/1731/502 +f 1411/1733/455 1571/2199/455 1570/1734/455 +f 1408/1441/445 1570/2200/445 1420/1736/445 +f 1468/1738/666 1523/2201/666 1520/1739/666 +f 1461/1741/663 1520/2202/663 1523/1742/663 +f 1563/1762/708 1591/2203/708 1592/1763/708 +f 1482/1765/703 1549/2204/703 1563/1766/703 +f 1591/1768/933 1593/2205/933 1594/1769/933 +f 1563/1771/710 1556/1076/710 1593/1772/710 +f 1555/1774/934 1590/2206/934 1592/1775/934 +f 1555/1777/935 1594/2207/935 1593/1778/935 +f 1595/1780/936 1594/2208/936 1596/1781/936 +f 1598/1783/937 1599/1809/937 1596/1784/937 +f 1599/1786/938 1600/2209/938 1601/1787/938 +f 1601/1789/939 1600/2210/939 1602/1790/939 +f 1602/1790/940 1604/2211/940 1605/1792/940 +f 1605/1793/714 1604/2212/714 1606/1794/714 +f 1607/1796/941 1593/2213/941 1608/1797/941 +f 1595/1780/942 1597/1782/942 1608/1799/942 +f 1597/1801/943 1592/2214/943 1594/1802/943 +f 1594/1776/944 1592/1775/944 1599/1786/944 +f 1606/1794/945 1591/1773/945 1593/1772/945 +f 1591/1804/946 1597/1801/946 1595/1803/946 +f 1645/2215/729 1643/2216/729 1647/1815/729 +f 1643/2216/729 1642/1816/729 1647/1815/729 +f 1642/1816/729 1653/2217/729 1651/2218/729 +f 1651/2218/729 1649/1814/729 1642/1816/729 +f 1661/2219/730 1655/2220/730 1660/1818/730 +f 1655/2220/730 1656/1819/730 1660/1818/730 +f 1656/1819/730 1657/2221/730 1658/2222/730 +f 1658/2222/730 1659/1817/730 1656/1819/730 +f 1662/1820/731 1654/1824/731 1641/1821/731 +f 1664/1823/732 1652/2223/732 1654/1824/732 +f 1650/1825/733 1652/2223/733 1664/1823/733 +f 1648/1827/734 1650/1825/734 1665/1826/734 +f 1646/1829/735 1648/1827/735 1666/1828/735 +f 1668/1831/736 1644/1832/736 1646/1829/736 +f 1663/1822/737 1641/1821/737 1644/1832/737 +f 1683/1833/738 1684/1858/738 1685/1834/738 +f 1687/1836/738 1688/2224/738 1689/1837/738 +f 1691/1839/738 1692/1862/738 1693/1840/738 +f 1696/1842/739 1697/1856/739 1698/1843/739 +f 1700/1845/739 1701/1853/739 1702/1846/739 +f 1704/1848/739 1705/1857/739 1706/1849/739 +f 1708/1851/739 1700/1845/739 1699/1847/739 +f 1701/1853/740 1690/1838/740 1683/1833/740 +f 1694/1841/738 1693/1840/738 1709/1854/738 +f 1697/1856/739 1708/1851/739 1707/1852/739 +f 1697/1856/740 1694/1841/740 1710/1855/740 +f 1708/1851/740 1710/1855/740 1687/1836/740 +f 1696/1842/740 1691/1839/740 1694/1841/740 +f 1700/1845/740 1687/1836/740 1690/1838/740 +f 1704/1848/740 1683/1833/740 1686/1835/740 +f 1701/1853/739 1704/1848/739 1703/1850/739 +f 1690/1838/738 1689/1837/738 1684/1858/738 +f 1712/1859/740 1691/1839/740 1696/1842/740 +f 1711/1860/739 1696/1842/739 1695/1844/739 +f 1712/1859/738 1714/2225/738 1692/1862/738 +f 1702/1846/741 1703/1850/741 1716/1863/741 +f 1698/1843/741 1707/1852/741 1718/1865/741 +f 1707/1852/741 1699/1847/741 1719/1867/741 +f 1699/1847/741 1702/1846/741 1715/1864/741 +f 1695/1844/739 1698/1843/739 1717/1866/739 +f 1721/1869/742 1722/2226/742 1723/1870/742 +f 1725/1872/742 1726/1889/742 1727/1873/742 +f 1729/1875/742 1730/1891/742 1731/1876/742 +f 1734/1878/743 1735/1893/743 1736/1879/743 +f 1738/1881/743 1739/1890/743 1740/1882/743 +f 1742/1884/743 1743/1895/743 1744/1885/743 +f 1737/1883/743 1740/1882/743 1746/1887/743 +f 1744/1885/744 1721/1869/744 1726/1889/744 +f 1730/1891/742 1747/1894/742 1748/1892/742 +f 1745/1888/743 1746/1887/743 1735/1893/743 +f 1746/1887/744 1747/1894/744 1730/1891/744 +f 1740/1882/744 1725/1872/744 1747/1894/744 +f 1736/1879/744 1735/1893/744 1730/1891/744 +f 1739/1890/744 1726/1889/744 1725/1872/744 +f 1743/1895/744 1722/2226/744 1721/1869/744 +f 1741/1886/743 1744/1885/743 1739/1890/743 +f 1726/1889/742 1721/1869/742 1724/1871/742 +f 1749/1896/744 1736/1879/744 1729/1875/744 +f 1733/1880/743 1736/1879/743 1749/1896/743 +f 1750/1897/742 1729/1875/742 1732/1877/742 +f 1753/1900/745 1754/1955/745 1741/1886/745 +f 1756/1901/745 1745/1888/745 1734/1878/745 +f 1757/1903/745 1737/1883/745 1745/1888/745 +f 1757/1903/743 1753/1900/743 1738/1881/743 +f 1755/1902/745 1734/1878/745 1733/1880/745 +f 1714/1905/947 1712/1935/947 1750/1906/947 +f 1685/1908/749 1684/1929/749 1724/1909/749 +f 1715/1911/748 1716/2227/748 1754/1912/748 +f 1689/1914/749 1688/2228/749 1728/1915/749 +f 1717/1917/748 1718/1932/748 1756/1918/748 +f 1693/1920/749 1692/1949/749 1732/1921/749 +f 1713/1923/762 1751/2229/762 1749/1924/762 +f 1705/1926/752 1686/1937/752 1722/1927/752 +f 1684/1929/749 1689/1914/749 1727/1916/749 +f 1719/1930/748 1715/1911/748 1753/1913/748 +f 1718/1932/750 1719/1930/750 1757/1931/750 +f 1709/1933/749 1693/1920/749 1731/1922/749 +f 1711/1925/761 1749/1924/761 1750/1906/761 +f 1685/1936/948 1723/2230/948 1722/1927/948 +f 1688/1938/949 1687/2231/949 1725/1939/949 +f 1709/1941/950 1748/2232/950 1747/1942/950 +f 1687/1944/951 1710/2233/951 1747/1945/951 +f 1751/1939/952 1713/2234/952 1720/1947/952 +f 1720/1947/750 1717/1917/750 1755/1919/750 +f 1692/1949/759 1714/2235/759 1752/1950/759 +f 1706/1951/752 1705/1926/752 1743/1928/752 +f 1716/1953/760 1706/1951/760 1742/1952/760 +f 1772/1956/555 1773/1976/555 1759/1957/555 +f 1772/1956/555 1762/1958/555 1761/1959/555 +f 1775/1961/555 1776/1981/555 1769/1962/555 +f 1778/1964/762 1764/1980/762 1763/1965/762 +f 1779/1967/555 1777/1966/555 1763/1965/555 +f 1780/1969/555 1779/1967/555 1767/1968/555 +f 1780/1969/555 1770/1970/555 1771/1971/555 +f 1782/1973/555 1783/1977/555 1765/1974/555 +f 1782/1973/555 1760/1975/555 1759/1957/555 +f 1783/1977/761 1784/1979/761 1766/1978/761 +f 1784/1979/555 1781/1972/555 1771/1971/555 +f 1778/1964/555 1775/1961/555 1768/1963/555 +f 1774/1960/761 1761/1959/761 1769/1962/761 +f 1823/2236/762 1813/2237/762 1814/1982/762 +f 1814/1982/753 1815/2238/753 1811/2239/753 +f 1815/2238/555 1816/2240/555 1811/2239/555 +f 1811/2239/555 1812/1983/555 1814/1982/555 +f 1812/1983/555 1817/2241/555 1820/1984/555 +f 1817/2241/555 1818/2242/555 1819/2243/555 +f 1820/1984/555 1817/2241/555 1819/2243/555 +f 1820/1984/753 1821/2244/753 1822/2245/753 +f 1822/2245/555 1823/2236/555 1814/1982/555 +f 1820/1984/555 1822/2245/555 1814/1982/555 s 1 -f 1963/2426/889 1981/2427/890 1968/2428/890 -f 504/2429/891 506/2430/892 503/2431/892 -f 499/2432/893 508/2433/894 500/2434/895 -f 510/2435/896 512/2436/897 509/2437/898 -f 513/2438/899 515/2439/900 516/2440/901 -f 517/2441/902 519/2442/903 520/2443/904 -f 521/2444/905 507/2445/906 499/2446/893 -f 524/2447/907 526/2448/908 523/2449/909 -f 514/2450/910 520/2443/904 515/2451/900 -f 518/2452/911 528/2453/912 519/2454/903 -f 1961/2455/913 1964/2456/914 1962/2457/915 -f 500/2434/895 525/2458/916 524/2459/907 -f 529/2460/917 516/2440/901 537/2461/918 -f 542/2462/919 549/2463/920 550/2464/919 -f 547/2465/921 552/2466/922 546/2467/923 -f 540/2468/924 553/2469/925 554/2470/926 -f 548/2471/927 551/2472/921 547/2465/921 -f 545/2473/928 557/2474/929 544/2475/930 -f 503/2476/892 553/2469/925 541/2477/925 -f 504/2429/891 550/2478/919 505/2479/891 -f 538/2480/931 555/2481/927 548/2482/927 -f 545/2473/928 552/2483/922 556/2484/932 -f 564/2485/933 566/2486/934 563/2487/934 -f 568/2488/935 570/2489/936 567/2490/936 -f 572/2491/937 574/2492/938 571/2493/938 -f 575/2494/939 577/2495/940 578/2496/941 -f 563/2497/934 580/2498/942 579/2499/942 -f 571/2493/938 581/2500/943 561/2501/944 -f 582/2502/945 580/2498/942 583/2503/946 -f 584/2504/947 569/2505/935 568/2506/935 -f 572/2507/937 570/2489/936 573/2508/937 -f 582/2509/945 577/2495/940 576/2510/948 -f 1890/2511/949 1887/2512/950 1879/2513/949 -f 1888/2514/951 1878/2515/952 1889/2516/952 -f 1874/2517/953 1863/2518/954 1861/2519/955 -f 1872/2520/956 1855/2521/957 1854/2522/956 -f 1866/2523/958 1857/2524/958 1867/2525/958 -f 1865/2526/959 1858/2527/960 1871/2528/960 -f 1874/2517/953 1860/2529/961 1873/2530/962 -f 1870/2531/963 1854/2522/956 1862/2532/963 -f 1851/2533/964 1858/2534/960 1852/2535/965 -f 1999/2536/966 1996/2537/966 2000/2538/966 -f 1998/2539/966 2000/2538/966 1997/2540/966 -f 1998/2539/966 1994/2541/967 1993/2542/966 -f 1995/2543/966 1991/2544/966 1996/2537/966 -f 1973/2545/968 1990/2546/969 1975/2547/970 -f 1870/2531/963 1863/2548/954 1869/2549/971 -f 1993/2542/966 1979/2550/972 1966/2551/973 -f 598/2552/974 593/2553/975 597/2554/975 -f 587/2555/976 600/2556/977 599/2557/976 -f 602/2558/978 592/2559/979 601/2560/979 -f 603/2561/980 595/2562/981 594/2563/982 -f 605/2564/983 593/2565/975 591/2566/983 -f 601/2560/979 560/2567/984 606/2568/985 -f 607/2569/986 591/2566/983 590/2570/987 -f 608/2571/988 588/2572/989 600/2573/989 -f 602/2574/990 587/2555/976 599/2557/976 -f 1988/2575/991 1976/2576/992 1961/2455/913 -f 1913/2577/993 1921/2578/994 1926/2579/995 -f 1912/2580/996 1922/2581/997 1904/2582/998 -f 1928/2583/999 1916/2584/1000 1910/2585/1001 -f 1912/2580/996 1925/2586/1002 1930/2587/1003 -f 1910/2585/1001 1915/2588/1004 1902/2589/1005 -f 1909/2590/1006 1918/2591/1007 1917/2592/1006 -f 1906/2593/1008 1919/2594/1009 1907/2595/1010 -f 1905/2596/1011 1922/2581/997 1921/2578/994 -f 607/2597/986 595/2562/981 604/2598/1012 -f 1902/2589/1005 1923/2599/1013 1903/2600/1013 -f 621/2601/1014 620/2602/1015 617/2603/1014 -f 624/2604/1016 610/2605/1017 623/2606/1017 -f 626/2607/1018 616/2608/1019 625/2609/1019 -f 628/2610/1020 618/2611/1021 627/2612/1022 -f 629/2613/1023 617/2614/1014 614/2615/1023 -f 630/2616/1024 616/2608/1019 615/2617/1025 -f 631/2618/1026 614/2615/1023 613/2619/1027 -f 632/2620/1028 611/2621/1016 624/2622/1016 -f 626/2623/1018 610/2605/1017 609/2624/1018 -f 1935/2625/1029 1957/2626/1030 1949/2627/1031 -f 1942/2628/1032 1958/2629/1033 1943/2630/1034 -f 1945/2631/1035 1951/2632/1036 1937/2633/1036 -f 1946/2634/1037 1955/2635/1038 1947/2636/1039 -f 1932/2637/1040 1958/2629/1033 1933/2638/1040 -f 1940/2639/1041 1957/2626/1030 1944/2640/1042 -f 1939/2641/1043 1952/2642/1044 1953/2643/1043 -f 1942/2628/1032 1950/2644/1045 1956/2645/1046 -f 1931/2646/1047 1955/2635/1038 1941/2647/1048 -f 1940/2639/1041 1953/2643/1043 1954/2648/1041 -f 1938/2649/1044 1951/2632/1036 1952/2642/1044 -f 502/2650/1049 637/2651/1050 638/2652/1049 -f 1992/2653/966 1987/2654/1051 1991/2544/966 -f 1959/2655/1052 1990/2546/969 1977/2656/1052 -f 1988/2575/991 1985/2657/1053 1989/2658/991 -f 1971/2659/1054 1987/2654/1051 1974/2660/1051 -f 1969/2661/1055 1983/2662/1056 1970/2663/1056 -f 1973/2545/968 1980/2664/1057 1986/2665/968 -f 1960/2666/1058 1985/2657/1053 1972/2667/1059 -f 537/2461/918 530/2668/1060 529/2460/917 -f 1970/2663/1056 1984/2669/1054 1971/2659/1054 -f 531/2670/1061 649/2671/1062 650/2672/1063 -f 2038/2673/1064 2042/2674/1065 2041/2675/1066 -f 639/2676/1067 655/2677/1068 640/2678/1069 -f 641/2679/1070 657/2680/1071 642/2681/1071 -f 643/2682/1072 659/2683/1073 644/2684/1073 -f 645/2685/1074 638/2652/1049 660/2686/1075 -f 640/2678/1069 661/2687/1076 646/2688/1076 -f 643/2682/1072 657/2680/1071 658/2689/1072 -f 647/2690/1077 659/2691/1073 662/2692/1077 -f 1969/2661/1055 1981/2427/890 1982/2693/1055 -f 648/2694/1078 637/2651/1050 501/2695/1050 -f 666/2696/1079 534/2697/1080 653/2698/1080 -f 2041/2675/1066 2040/2699/1081 2039/2700/1082 -f 2039/2700/1082 2036/2701/1083 2035/2702/1082 -f 2008/2703/1082 2037/2704/1084 2038/2673/1064 -f 2019/2705/1085 2031/2706/1086 2020/2707/1087 -f 2035/2702/1082 2021/2708/1088 2013/2709/1089 -f 2005/2710/1090 2030/2711/1091 2034/2712/1092 -f 2006/2713/1093 2034/2712/1092 2032/2714/1094 -f 2008/2703/1082 2028/2715/1095 2033/2716/1082 -f 2002/2717/1096 2032/2714/1094 2003/2718/1096 -f 2020/2719/1087 2011/2720/1097 2010/2721/1098 -f 677/2722/1099 683/2723/1100 681/2724/1100 -f 668/2725/1101 685/2726/435 684/2727/1101 -f 670/2728/1102 688/2729/1103 689/2730/1102 -f 672/2731/1104 533/2732/1105 690/2733/1104 -f 674/2734/1106 691/2735/486 692/2736/1106 -f 675/2737/1107 684/2738/1101 693/2739/1107 -f 670/2728/1102 694/2740/1108 676/2741/1108 -f 672/2742/1104 691/2735/486 673/2743/486 -f 674/2744/1106 682/2745/1099 677/2722/1099 -f 645/2746/1074 660/2747/1075 678/2748/1109 -f 680/2749/1110 685/2726/435 667/2750/435 -f 696/2751/1111 698/2752/1112 699/2753/1113 -f 2029/2754/1091 2026/2755/1114 2030/2711/1091 -f 727/2756/521 731/2757/1115 722/2758/521 -f 732/2759/1116 724/2760/1117 733/2761/1118 -f 734/2762/1119 720/2763/1120 721/2764/1121 -f 737/2765/1122 730/2766/1123 736/2767/1123 -f 713/2768/1124 739/2769/1125 738/2770/1126 -f 740/2771/1127 725/2772/1128 726/2773/1129 -f 741/2774/1130 721/2764/1121 722/2775/1131 -f 731/2776/1115 736/2777/1132 739/2769/1125 -f 738/2778/1133 714/2779/1134 742/2780/1135 -f 743/2781/1136 726/2773/1129 727/2782/1137 -f 733/2761/1118 723/2783/1138 744/2784/1139 -f 746/2785/1140 698/2752/1112 697/2786/1141 -f 2017/2787/1142 2028/2715/1095 2007/2788/1143 -f 615/2617/1025 633/2789/1144 630/2616/1024 -f 1907/2595/1010 1924/2790/1145 1914/2791/1146 -f 606/2568/985 559/2792/1147 749/2793/1147 -f 1867/2794/1148 1864/2795/1149 1857/2796/1148 -f 561/2501/944 750/2797/1150 562/2798/1150 -f 554/2470/926 539/2799/1151 540/2468/924 -f 708/2800/1152 665/2801/1153 679/2802/1152 -f 752/2803/1154 720/2763/1120 735/2804/1155 -f 1967/2805/1156 1979/2550/972 1980/2664/1057 -f 2016/2806/1157 2023/2807/1158 2024/2808/1159 -f 641/2809/1070 651/2810/1160 656/2811/1070 -f 671/2812/1105 534/2697/1080 533/2732/1105 -f 696/2751/1111 729/2813/1161 737/2765/1122 -f 539/2799/1151 558/2814/931 538/2480/931 -f 564/2485/933 750/2797/1150 565/2815/1162 -f 1866/2816/1163 1859/2817/959 1865/2526/959 -f 1911/2818/1164 1923/2599/1013 1925/2586/1002 -f 598/2552/974 559/2792/1147 596/2819/1165 -f 1928/2583/999 1914/2791/1146 1927/2820/1166 -f 633/2789/1144 620/2602/1015 622/2821/1167 -f 1936/2822/1168 1949/2627/1031 1950/2644/1045 -f 743/2781/1136 728/2823/1169 746/2785/1140 -f 2019/2705/1085 2022/2824/1170 2027/2825/1085 -f 753/2826/1171 714/2779/1134 715/2827/1172 -f 2018/2828/1173 2012/2829/1174 2026/2755/1114 -f 757/2830/1100 688/2729/1103 669/2831/1103 -f 741/2774/1130 723/2832/1175 744/2833/1176 -f 676/2741/1108 695/2834/1110 680/2835/1110 -f 2016/2806/1157 2025/2836/1177 2017/2837/1142 -f 648/2838/1078 661/2687/1076 663/2839/1178 -f 1959/2655/1052 1978/2840/1058 1960/2666/1058 -f 1946/2634/1037 1948/2841/1179 1945/2631/1035 -f 523/2449/909 511/2842/1180 510/2435/896 -f 758/2843/1108 741/2774/1130 744/2833/1176 -f 761/2844/1181 753/2826/1171 760/2845/1182 -f 763/2846/1183 765/2847/1184 762/2848/1185 -f 762/2848/1185 737/2765/1122 766/2849/1080 -f 733/2761/1118 758/2850/1186 767/2851/486 -f 768/2852/1152 743/2781/1136 765/2847/1184 -f 742/2853/1187 769/2854/1101 761/2855/1188 -f 739/2769/1125 771/2856/1189 770/2857/435 -f 772/2858/1190 741/2774/1130 759/2859/1108 -f 740/2860/1191 773/2861/1106 768/2862/1191 -f 738/2770/1126 770/2857/435 769/2863/1101 -f 771/2856/1189 737/2864/1192 766/2865/1192 -f 773/2866/1106 733/2761/1118 767/2851/486 -f 774/2867/1106 767/2851/486 775/2868/486 -f 771/2856/1189 777/2869/1192 776/2870/1189 -f 769/2863/1101 779/2871/435 778/2872/1101 -f 768/2862/1191 774/2873/1106 780/2874/1191 -f 782/2875/1193 759/2859/1108 781/2876/1108 -f 770/2857/435 776/2870/1189 779/2871/435 -f 761/2855/1188 778/2877/1101 783/2878/1194 -f 780/2879/1195 765/2847/1184 764/2880/1196 -f 767/2851/486 784/2881/1186 775/2868/486 -f 763/2846/1183 766/2849/1080 777/2882/1197 -f 712/2883/1198 764/2880/1196 763/2846/1183 -f 760/2884/1199 783/2878/1194 785/2885/1199 -f 781/2876/1108 758/2843/1108 784/2886/1200 -f 706/2887/1108 784/2886/1200 710/2888/1110 -f 707/2889/1201 785/2890/1202 745/2891/1203 -f 535/2892/1080 777/2882/1197 536/2893/1105 -f 734/2762/1119 772/2858/1190 787/2894/1204 -f 746/2785/1140 697/2786/1141 765/2847/1184 -f 710/2895/1110 775/2896/435 686/2897/435 -f 705/2898/1107 764/2880/1196 709/2899/1152 -f 707/2889/1201 778/2900/1106 783/2901/1205 -f 703/2902/486 776/2903/1104 779/2904/486 -f 706/2887/1108 782/2875/1193 781/2876/1108 -f 687/2905/1101 780/2879/1195 705/2898/1107 -f 703/2902/486 778/2906/1106 704/2907/1106 -f 536/2893/1105 776/2908/1104 702/2909/1104 -f 687/2910/1101 775/2896/435 774/2911/1101 -f 745/2891/1203 791/2912/1206 790/2913/1207 -f 792/2914/1208 753/2826/1171 793/2915/1209 -f 636/2916/1210 613/2917/1027 619/2918/1020 -f 793/2915/1209 715/2827/1172 716/2919/1211 -f 2015/2920/1212 2004/2921/1213 2023/2807/1158 -f 681/2724/1100 794/2922/1100 796/2923/1100 -f 757/2830/1100 798/2924/1100 754/2925/1100 -f 2013/2709/1089 2022/2824/1170 2014/2926/1214 -f 789/2927/1215 719/2928/1172 752/2803/1154 -f 786/2929/1216 782/2875/1193 801/2930/1217 -f 1931/2646/1047 1933/2638/1040 1934/2931/1047 -f 627/2612/1022 612/2932/1028 632/2620/1028 -f 1908/2933/1218 1926/2579/995 1918/2591/1007 -f 608/2571/988 594/2563/982 589/2934/988 -f 1909/2590/1006 1920/2935/1219 1906/2593/1008 -f 1850/2936/1220 1852/2535/965 1853/2937/1221 -f 584/2504/947 578/2496/941 585/2938/947 -f 544/2475/930 549/2463/920 543/2939/920 -f 509/2437/898 528/2453/912 527/2940/1222 -f 1963/2426/889 1964/2456/914 1965/2941/889 -f 802/2942/1223 799/2943/1223 639/2676/1067 -f 803/2944/1100 798/2924/1100 797/2945/1100 -f 803/2944/1100 794/2922/1100 804/2946/1100 -f 2009/2947/1224 2011/2720/1097 2012/2948/1174 -f 2001/2949/1225 2003/2718/1096 2004/2950/1213 -f 805/2951/1226 791/2912/1206 806/2952/1227 -f 788/2953/1228 718/2954/1229 789/2927/1215 -f 788/2953/1228 716/2919/1211 717/2955/1230 -f 787/2894/1204 793/2915/1209 788/2953/1228 -f 701/2956/1231 700/2957/1232 806/2952/1227 -f 530/2668/1060 635/2958/1233 634/2959/1234 -f 2164/2960/1235 2180/2961/1236 2179/2962/1236 -f 2168/2963/1237 2129/2964/1238 2130/2965/1239 -f 2151/2966/1240 2168/2963/1237 2152/2967/1241 -f 2167/2968/1242 2129/2969/1238 2178/2970/1243 -f 2151/2971/1240 2167/2968/1242 2178/2970/1243 -f 2177/2972/1244 2111/2973/1245 2163/2974/1246 -f 2153/2975/1247 2177/2972/1244 2163/2974/1246 -f 2167/2968/1242 2162/2976/1248 2126/2977/1249 -f 2154/2978/1250 2167/2968/1242 2155/2979/1251 -f 2162/2976/1248 2166/2980/1252 2111/2973/1245 -f 2153/2975/1247 2164/2960/1235 2154/2978/1250 -f 2162/2976/1248 2088/2981/1253 2161/2982/1254 -f 2126/2977/1249 2161/2982/1254 2112/2983/1255 -f 2130/2965/1239 2146/2984/1256 2145/2985/1257 -f 2143/2986/1258 2146/2987/1256 2144/2988/1259 -f 2115/2989/1260 1038/2990/1261 2125/2991/1262 -f 1018/2992/1263 2125/2991/1262 1017/2993/1264 -f 1034/2994/1265 2124/2995/1266 2117/2996/1267 -f 2117/2996/1267 1020/2997/1268 1021/2998/1269 -f 2123/2999/1270 934/3000/1271 2121/3001/1272 -f 950/3002/1273 2121/3001/1272 940/3003/1274 -f 942/3004/1275 2120/3005/1276 2122/3006/1277 -f 1016/3007/1278 2120/3005/1276 941/3008/1279 -f 934/3000/1271 2119/3009/1280 2121/3001/1272 -f 2121/3001/1272 929/3010/1281 940/3003/1274 -f 2120/3005/1276 917/3011/1282 2118/3012/1283 -f 941/3008/1279 2118/3012/1283 930/3013/1284 -f 2116/3014/1285 1034/2994/1265 2117/2996/1267 -f 887/3015/1286 2117/2996/1267 1021/2998/1269 -f 2113/3016/1287 2115/2989/1260 2114/3017/1288 -f 915/3018/1289 2115/2989/1260 1018/2992/1263 -f 868/3019/1290 1044/3020/1291 2113/3016/1287 -f 882/3021/1292 1034/2994/1265 869/3022/1293 -f 2143/2986/1258 2142/3023/1294 2141/3024/1295 -f 932/3025/1296 918/3026/1297 917/3011/1282 -f 937/3027/1298 922/3028/1299 934/3000/1271 -f 926/3029/1300 2142/3023/1294 886/3030/1301 -f 945/3031/1302 932/3025/1296 942/3004/1275 -f 948/3032/1303 934/3000/1271 946/3033/1304 -f 926/3034/1300 938/3035/1305 949/3036/1306 -f 1022/3037/1307 938/3035/1305 1019/3038/1308 -f 1025/3039/1309 1023/3040/1310 1034/2994/1265 -f 1044/3020/1291 1040/3041/1311 1038/2990/1261 -f 1116/3042/1312 1114/3043/1313 1115/3044/1314 -f 1120/3045/1315 1122/3046/1316 1119/3047/1317 -f 1124/3048/1318 1126/3049/1319 1123/3050/1320 -f 1123/3050/1320 1119/3047/1317 1122/3046/1316 -f 1132/3051/1321 1115/3044/1314 1133/3052/1322 -f 1131/3053/1323 1125/3054/1324 1124/3048/1318 -f 1134/3055/1325 1137/3056/1326 1138/3057/1327 -f 1128/3058/1328 2262/3059/1329 1117/3060/1330 -f 1125/3054/1324 1138/3057/1327 1149/3061/1331 -f 1133/3052/1322 1150/3062/1332 1137/3056/1326 -f 1128/3058/1328 2264/3063/1329 2263/3064/1329 -f 1126/3049/1319 1147/3065/1333 1119/3047/1317 -f 1115/3044/1314 1139/3066/1334 1150/3062/1332 -f 1127/3067/1335 2261/3068/1336 2260/3069/1336 -f 1119/3047/1317 1146/3070/1337 1120/3045/1315 -f 1125/3054/1324 1148/3071/1338 1126/3049/1319 -f 1122/3046/1316 1157/3072/1339 1156/3073/1340 -f 1127/3067/1335 2259/3074/1336 1129/3075/1341 -f 1124/3048/1318 1153/3076/1342 1131/3053/1323 -f 1118/3077/1343 1128/3058/1328 1117/3060/1330 -f 1132/3051/1321 1151/3078/1344 1116/3042/1312 -f 1123/3050/1320 1156/3073/1340 1155/3079/1345 -f 1127/3067/1335 1130/3080/1346 1128/3058/1328 -f 1116/3042/1312 1162/3081/1347 1111/3082/1348 -f 1124/3048/1318 1155/3079/1345 1154/3083/1349 -f 1131/3053/1323 1152/3084/1350 1132/3051/1321 -f 2222/3085/1351 2203/3086/1352 2216/3087/1353 -f 2221/3088/1354 2202/3089/1355 2222/3090/1351 -f 2220/3091/1356 2204/3092/1357 2221/3093/1354 -f 2206/3094/1358 2220/3091/1356 2219/3095/1359 -f 2207/3096/1360 2219/3097/1359 2218/3098/1361 -f 2208/3099/1362 2218/3098/1361 2217/3100/1363 -f 2216/3087/1353 2208/3101/1362 2217/3102/1363 -f 2193/3103/1364 2181/3104/1365 2194/3105/1364 -f 2191/3106/1366 2194/3107/1364 2192/3108/1366 -f 2189/3109/1367 2192/3110/1366 2190/3111/1367 -f 1240/3112/1368 1237/3113/1369 1239/3114/1370 -f 1238/3115/1371 1235/3116/1372 1237/3113/1369 -f 1241/3117/1373 1240/3112/1368 1239/3114/1370 -f 1181/3118/1374 1173/3119/1375 1175/3120/1376 -f 1229/3121/1377 1232/3122/1378 1246/3123/1379 -f 1230/3124/1380 1231/3125/1381 1228/3126/1380 -f 1244/3127/1382 1242/3128/1383 1241/3117/1373 -f 1183/3129/1384 1177/3130/1385 1181/3118/1374 -f 1245/3131/1386 1251/3132/1387 1231/3125/1381 -f 2187/3133/1388 2190/3111/1367 2188/3134/1388 -f 1246/3123/1379 1252/3135/1389 1247/3136/1390 -f 1249/3137/1391 1254/3138/1392 1255/3139/1393 -f 1251/3132/1387 1250/3140/1394 1256/3141/1395 -f 2185/3142/1396 2188/3143/1388 2186/3144/1396 -f 1252/3135/1389 1249/3137/1391 1247/3136/1390 -f 1187/3145/1397 1183/3129/1384 1185/3146/1398 -f 1234/3147/1399 1185/3146/1398 1233/3148/1399 -f 1250/3140/1394 1260/3149/1400 1256/3141/1395 -f 2184/3150/1401 2185/3142/1396 2186/3144/1396 -f 2182/3151/1365 2184/3152/1401 2181/3104/1365 -f 1257/3153/1402 1262/3154/1403 1260/3155/1400 -f 1170/3156/1404 1163/3157/1404 1167/3158/1404 -f 1255/3159/1393 1261/3160/1405 1258/3161/1406 -f 2239/3162/1407 2251/3163/1408 2240/3164/1409 -f 2245/3165/1410 2253/3166/1411 2246/3167/1412 -f 2245/3165/1410 2255/3168/1413 2254/3169/1414 -f 2248/3170/1415 2249/3171/1416 2250/3172/1417 -f 2239/3173/1407 2247/3174/1418 2246/3175/1412 -f 2245/3176/1410 2244/3177/1419 2243/3178/1420 -f 2246/3175/1412 2248/3179/1415 2245/3176/1410 -f 2240/3180/1409 2242/3181/1421 2239/3173/1407 -f 1609/3182/1422 1610/3183/1423 1611/3184/1424 -f 1612/3185/1425 1614/3186/1426 1615/3187/1427 -f 1617/3188/1428 1619/3189/1429 1616/3190/1430 -f 1620/3191/1431 1621/3192/1432 1622/3193/1433 -f 1610/3183/1423 1615/3194/1427 1611/3184/1424 -f 1616/3190/1430 1614/3186/1426 1613/3195/1434 -f 1620/3191/1431 1618/3196/1435 1617/3197/1428 -f 1614/3198/1426 1623/3199/1436 1624/3200/1437 -f 1618/3196/1435 1625/3201/1438 1626/3202/1439 -f 1609/3182/1422 1611/3184/1424 1627/3203/1440 -f 1614/3198/1426 1628/3204/1441 1615/3205/1427 -f 1618/3206/1435 1623/3199/1436 1619/3207/1429 -f 1622/3193/1433 1621/3192/1432 1625/3201/1438 -f 1611/3184/1424 1628/3208/1441 1627/3203/1440 -f 1609/3182/1422 1627/3203/1440 1629/3209/1442 -f 1628/3204/1441 1630/3210/1443 1631/3211/1444 -f 1626/3212/1439 1633/3213/1445 1623/3199/1436 -f 1625/3201/1438 1621/3192/1432 1634/3214/1446 -f 1627/3203/1440 1631/3215/1444 1629/3209/1442 -f 1623/3199/1436 1630/3210/1443 1624/3200/1437 -f 1626/3202/1439 1634/3214/1446 1632/3216/1447 -f 1609/3182/1422 1629/3209/1442 1635/3217/1448 -f 1630/3218/1443 1637/3219/1449 1631/3220/1444 -f 1633/3221/1445 1638/3222/1450 1639/3223/1451 -f 1634/3214/1446 1621/3192/1432 1640/3224/1452 -f 1631/3215/1444 1635/3217/1448 1629/3209/1442 -f 1633/3221/1445 1636/3225/1453 1630/3218/1443 -f 1632/3226/1447 1640/3227/1452 1638/3222/1450 -f 2201/3228/1364 2209/3229/1365 2195/3230/1365 -f 2214/3231/1366 2201/3232/1364 2200/3233/1366 -f 2199/3234/1367 2214/3235/1366 2200/3236/1366 -f 2212/3237/1388 2199/3234/1367 2198/3238/1388 -f 2211/3239/1396 2198/3240/1388 2197/3241/1396 -f 2210/3242/1401 2197/3241/1396 2196/3243/1401 -f 2195/3230/1365 2210/3244/1401 2196/3245/1401 -f 2247/3246/1418 2257/3247/1454 2249/3171/1416 -f 2242/3248/1421 2258/3249/1455 2257/3247/1454 -f 2248/3170/1415 2256/3250/1456 2244/3251/1419 -f 2246/3167/1412 2252/3252/1457 2239/3162/1407 -f 2237/3253/1458 2226/3254/445 2223/3255/445 -f 2236/3256/431 2237/3257/1458 2235/3258/431 -f 2233/3259/1459 2236/3256/431 2235/3258/431 -f 2232/3260/521 2233/3261/1459 2231/3262/521 -f 2229/3263/1460 2232/3260/521 2231/3262/521 -f 2228/3264/433 2229/3265/1460 2227/3266/433 -f 2224/3267/1461 2228/3264/433 2227/3266/433 -f 2226/3254/445 2224/3268/1461 2223/3255/445 -f 1675/3269/1462 1676/3270/1463 1669/3271/1464 -f 1674/3272/1465 1682/3273/1466 1675/3269/1462 -f 1680/3274/1467 1674/3272/1465 1673/3275/1468 -f 1679/3276/1469 1673/3275/1468 1672/3277/1470 -f 1678/3278/1471 1672/3277/1470 1671/3279/1472 -f 1670/3280/1473 1678/3278/1471 1671/3279/1472 -f 1669/3271/1464 1677/3281/1474 1670/3280/1473 -f 1792/3282/1475 1798/3283/1476 1800/3284/1477 -f 1791/3285/1478 1799/3286/1479 1798/3287/1476 -f 1786/3288/1480 1808/3289/1481 1799/3286/1479 -f 1785/3290/1482 1809/3291/1483 1808/3289/1481 -f 1790/3292/1484 1810/3293/1485 1809/3294/1483 -f 1789/3295/1486 1807/3296/1487 1810/3293/1485 -f 1787/3297/1488 1807/3296/1487 1788/3298/1489 -f 1797/3299/1490 1806/3300/1491 1787/3297/1488 -f 1796/3301/1492 1805/3302/1493 1797/3303/1490 -f 1795/3304/1494 1803/3305/1495 1796/3301/1492 -f 1795/3306/1494 1801/3307/1496 1804/3308/1497 -f 1793/3309/1498 1801/3307/1496 1794/3310/1499 -f 1792/3282/1475 1802/3311/1500 1793/3309/1498 -f 1837/3312/1501 1836/3313/1502 1838/3314/1502 -f 1839/3315/1503 1825/3316/1504 1840/3317/1504 -f 1841/3318/1505 1829/3319/1506 1842/3320/1506 -f 1844/3321/1507 1833/3322/1508 1832/3323/1509 -f 1838/3324/1502 1835/3325/1510 1845/3326/1510 -f 1842/3320/1506 1828/3327/1511 1846/3328/1512 -f 1847/3329/1513 1835/3325/1510 1834/3330/1514 -f 1848/3331/1515 1830/3332/1503 1839/3333/1503 -f 1841/3334/1505 1825/3316/1504 1824/3335/1505 -f 1847/3336/1513 1833/3322/1508 1843/3337/1516 -f 1846/3328/1512 1827/3338/1517 1849/3339/1518 -f 1837/3312/1501 1827/3338/1517 1826/3340/1519 -f 1848/3331/1515 1832/3323/1509 1831/3341/1515 -f 1893/3342/1520 1886/3343/1521 1892/3344/1522 -f 1895/3345/1523 1885/3346/1524 1894/3347/1525 -f 1893/3342/1520 1876/3348/1526 1884/3349/1520 -f 1897/3350/1527 1883/3351/1528 1882/3352/1529 -f 1888/3353/1530 1880/3354/1523 1895/3345/1523 -f 1889/2516/952 1879/3355/1531 1890/3356/1531 -f 1896/3357/1526 1877/3358/1532 1876/3359/1526 -f 1892/3360/1522 1883/3351/1528 1898/3361/1533 -f 1894/3347/1525 1901/3362/1534 1900/3363/1535 -f 1850/2936/1220 1855/3364/957 1875/3365/1536 -f 1899/3366/1537 1901/3362/1534 1877/3358/1532 -f 1891/3367/950 1882/3352/1529 1887/2512/950 -f 1873/2530/962 1864/2795/1149 1868/3368/1538 -f 2176/3369/1539 2109/3370/1540 2177/2972/1244 -f 2148/3371/1541 2176/3369/1539 2177/2972/1244 -f 2175/3372/1542 2081/3373/1543 2176/3369/1539 -f 1022/3037/1307 1035/3374/1544 2060/3375/1545 -f 2065/3376/1546 2067/3377/1547 2064/3378/1548 -f 2068/3379/1549 2070/3380/1550 2071/3381/1551 -f 2150/3382/1552 2176/3369/1539 2147/3383/1553 -f 2174/3384/1554 2060/3375/1545 2175/3385/1542 -f 2150/3386/1552 2174/3384/1554 2175/3385/1542 -f 2173/3387/1555 1022/3037/1307 2174/3384/1554 -f 2159/3388/1556 2174/3384/1554 2149/3389/1557 -f 2173/3387/1555 926/3034/1300 949/3036/1306 -f 2081/3373/1543 1035/3390/1544 2063/3391/1558 -f 2082/3392/1559 2090/3393/1560 2083/3394/1561 -f 2085/3395/1562 2091/3396/1563 2092/3397/1564 -f 2159/3388/1556 2172/3398/1565 2173/3387/1555 -f 2171/3399/1566 926/3029/1300 2172/3400/1565 -f 2157/3401/1567 2172/3400/1565 2160/3402/1568 -f 2170/3403/1569 2141/3024/1295 2171/3399/1566 -f 2157/3401/1567 2170/3403/1569 2171/3399/1566 -f 2169/3404/1570 2143/3405/1258 2170/3406/1569 -f 2158/3407/1571 2170/3406/1569 2156/3408/1572 -f 2079/3409/1573 2093/3410/1574 2086/3411/1575 -f 2097/3412/1576 2092/3397/1564 2093/3410/1574 -f 2098/3413/1577 2087/3414/1578 2080/3415/1579 -f 2083/3394/1561 2095/3416/1580 2098/3413/1577 -f 2168/2963/1237 2145/2985/1257 2169/3404/1570 -f 2158/3407/1571 2168/2963/1237 2169/3404/1570 -f 2135/3417/1581 2050/3418/1581 2134/3419/1581 -f 2049/3420/1581 2134/3419/1581 2048/3421/1581 -f 2046/3422/1582 2132/3423/1582 2133/3424/1582 -f 2045/3425/1582 2132/3423/1582 2131/3426/1582 -f 2047/3427/1582 2043/3428/1582 2046/3422/1582 -f 2052/3429/1581 2050/3418/1581 2053/3430/1581 -f 2058/3431/1583 2101/3432/1584 2059/3433/1585 -f 2103/3434/1586 2071/3381/1551 2101/3432/1584 -f 2104/3435/1587 2062/3436/1588 2061/3437/1589 -f 2064/3378/1548 2102/3438/1590 2104/3435/1587 -f 2057/3439/1591 2073/3440/1592 2074/3441/1592 -f 2075/3442/1593 2094/3443/1594 2076/3444/1593 -f 2078/3445/1595 2100/3446/1596 2094/3447/1594 -f 2106/3448/1597 2057/3439/1591 2108/3449/1597 -f 2110/3450/1597 2137/3451/1591 2054/3452/1598 -f 2108/3449/1597 2137/3451/1591 2136/3453/1597 -f 2081/3373/1543 2107/3454/1599 2109/3370/1540 -f 2109/3370/1540 2088/2981/1253 2111/2973/1245 -f 2096/3455/1595 2138/3456/1596 2105/3457/1596 -f 2094/3447/1594 2138/3456/1596 2139/3458/1594 -f 2077/3459/1593 2139/3460/1594 2096/3461/1595 -f 2076/3444/1593 2139/3460/1594 2140/3462/1593 -f 2126/2977/1249 2128/3463/1600 2129/2969/1238 -f 2130/2965/1239 2128/3464/1600 2127/3465/1601 -f 2137/3451/1591 2055/3466/1592 2054/3452/1598 -f 2057/3439/1591 2056/3467/1592 2137/3451/1591 -f 1963/2426/889 1965/2941/889 1981/2427/890 -f 504/2429/891 505/2479/891 506/2430/892 -f 499/2432/893 507/3468/906 508/2433/894 -f 510/2435/896 511/2842/1180 512/2436/897 -f 513/2438/899 514/3469/910 515/2439/900 -f 517/2441/902 518/3470/911 519/2442/903 -f 521/2444/905 522/3471/1602 507/2445/906 -f 524/2447/907 525/3472/916 526/2448/908 -f 514/2450/910 517/2441/902 520/2443/904 -f 518/2452/911 527/2940/1222 528/2453/912 -f 1961/2455/913 1976/2576/992 1964/2456/914 -f 500/2434/895 508/2433/894 525/2458/916 -f 529/2460/917 513/2438/899 516/2440/901 -f 542/2462/919 543/2939/920 549/2463/920 -f 547/2465/921 551/2472/921 552/2466/922 -f 540/2468/924 541/2477/925 553/2469/925 -f 548/2471/927 555/3473/927 551/2472/921 -f 545/2473/928 556/2484/932 557/2474/929 -f 503/2476/892 506/3474/892 553/2469/925 -f 504/2429/891 542/3475/919 550/2478/919 -f 538/2480/931 558/2814/931 555/2481/927 -f 545/2473/928 546/3476/923 552/2483/922 -f 564/2485/933 565/2815/1162 566/2486/934 -f 568/2488/935 569/3477/935 570/2489/936 -f 572/2491/937 573/3478/937 574/2492/938 -f 575/2494/939 576/2510/948 577/2495/940 -f 563/2497/934 566/3479/934 580/2498/942 -f 571/2493/938 574/2492/938 581/2500/943 -f 582/2502/945 579/2499/942 580/2498/942 -f 584/2504/947 585/2938/947 569/2505/935 -f 572/2507/937 567/2490/936 570/2489/936 -f 582/2509/945 583/3480/946 577/2495/940 -f 1890/2511/949 1891/3367/950 1887/2512/950 -f 1888/2514/951 1881/3481/951 1878/2515/952 -f 1874/2517/953 1869/3482/971 1863/2518/954 -f 1872/2520/956 1875/3483/1536 1855/2521/957 -f 1866/2523/958 1856/3484/958 1857/2524/958 -f 1865/2526/959 1859/2817/959 1858/2527/960 -f 1874/2517/953 1861/2519/955 1860/2529/961 -f 1870/2531/963 1872/2520/956 1854/2522/956 -f 1851/2533/964 1871/3485/960 1858/2534/960 -f 1999/2536/966 1995/2543/966 1996/2537/966 -f 1998/2539/966 1999/2536/966 2000/2538/966 -f 1998/2539/966 1997/2540/966 1994/2541/967 -f 1995/2543/966 1992/2653/966 1991/2544/966 -f 1973/2545/968 1986/2665/968 1990/2546/969 -f 1870/2531/963 1862/2532/963 1863/2548/954 -f 1993/2542/966 1994/2541/967 1979/2550/972 -f 598/2552/974 596/2819/1165 593/2553/975 -f 587/2555/976 588/3486/977 600/2556/977 -f 602/2558/978 586/3487/978 592/2559/979 -f 603/2561/980 604/2598/1012 595/2562/981 -f 605/2564/983 597/3488/975 593/2565/975 -f 601/2560/979 592/2559/979 560/2567/984 -f 607/2569/986 605/2564/983 591/2566/983 -f 608/2571/988 589/2934/988 588/2572/989 -f 602/2574/990 586/3489/990 587/2555/976 -f 1988/2575/991 1989/2658/991 1976/2576/992 -f 1913/2577/993 1905/2596/1011 1921/2578/994 -f 1912/2580/996 1930/2587/1003 1922/2581/997 -f 1928/2583/999 1927/2820/1166 1916/2584/1000 -f 1912/2580/996 1911/2818/1164 1925/2586/1002 -f 1910/2585/1001 1916/2584/1000 1915/2588/1004 -f 1909/2590/1006 1908/2933/1218 1918/2591/1007 -f 1906/2593/1008 1920/2935/1219 1919/2594/1009 -f 1905/2596/1011 1904/2582/998 1922/2581/997 -f 607/2597/986 590/3490/987 595/2562/981 -f 1902/2589/1005 1915/2588/1004 1923/2599/1013 -f 621/2601/1014 622/2821/1167 620/2602/1015 -f 624/2604/1016 611/3491/1016 610/2605/1017 -f 626/2607/1018 609/3492/1018 616/2608/1019 -f 628/2610/1020 619/2918/1020 618/2611/1021 -f 629/2613/1023 621/3493/1014 617/2614/1014 -f 630/2616/1024 625/2609/1019 616/2608/1019 -f 631/2618/1026 629/2613/1023 614/2615/1023 -f 632/2620/1028 612/2932/1028 611/2621/1016 -f 626/2623/1018 623/2606/1017 610/2605/1017 -f 1935/2625/1029 1944/2640/1042 1957/2626/1030 -f 1942/2628/1032 1956/2645/1046 1958/2629/1033 -f 1945/2631/1035 1948/2841/1179 1951/2632/1036 -f 1946/2634/1037 1941/2647/1048 1955/2635/1038 -f 1932/2637/1040 1943/2630/1034 1958/2629/1033 -f 1940/2639/1041 1954/2648/1041 1957/2626/1030 -f 1939/2641/1043 1938/2649/1044 1952/2642/1044 -f 1942/2628/1032 1936/2822/1168 1950/2644/1045 -f 1931/2646/1047 1934/2931/1047 1955/2635/1038 -f 1940/2639/1041 1939/2641/1043 1953/2643/1043 -f 1938/2649/1044 1937/2633/1036 1951/2632/1036 -f 502/2650/1049 501/2695/1050 637/2651/1050 -f 1992/2653/966 1974/2660/1051 1987/2654/1051 -f 1959/2655/1052 1975/2547/970 1990/2546/969 -f 1988/2575/991 1972/2667/1059 1985/2657/1053 -f 1971/2659/1054 1984/2669/1054 1987/2654/1051 -f 1969/2661/1055 1982/2693/1055 1983/2662/1056 -f 1973/2545/968 1967/2805/1156 1980/2664/1057 -f 1960/2666/1058 1978/2840/1058 1985/2657/1053 -f 537/2461/918 635/2958/1233 530/2668/1060 -f 1970/2663/1056 1983/2662/1056 1984/2669/1054 -f 651/2810/1160 532/3494/1603 650/2672/1063 -f 532/3494/1603 531/2670/1061 650/2672/1063 -f 2038/2673/1064 2037/2704/1084 2042/2674/1065 -f 639/2676/1067 654/3495/1604 655/2677/1068 -f 641/2679/1070 656/3496/1070 657/2680/1071 -f 643/2682/1072 658/2689/1072 659/2683/1073 -f 645/2685/1074 502/2650/1049 638/2652/1049 -f 640/2678/1069 655/2677/1068 661/2687/1076 -f 643/2682/1072 642/2681/1071 657/2680/1071 -f 647/2690/1077 644/3497/1073 659/2691/1073 -f 1969/2661/1055 1968/2428/890 1981/2427/890 -f 648/2694/1078 663/3498/1178 637/2651/1050 -f 653/2698/1080 652/3499/1079 666/2696/1079 -f 652/3499/1079 664/3500/1153 666/2696/1079 -f 664/3500/1153 665/2801/1153 666/2696/1079 -f 2041/2675/1066 2042/2674/1065 2040/2699/1081 -f 2039/2700/1082 2040/2699/1081 2036/2701/1083 -f 2008/2703/1082 2033/2716/1082 2037/2704/1084 -f 2019/2705/1085 2027/2825/1085 2031/2706/1086 -f 2035/2702/1082 2036/2701/1083 2021/2708/1088 -f 2005/2710/1090 2029/2754/1091 2030/2711/1091 -f 2006/2713/1093 2005/2710/1090 2034/2712/1092 -f 2008/2703/1082 2007/2788/1143 2028/2715/1095 -f 2002/2717/1096 2006/2713/1093 2032/2714/1094 -f 2020/2719/1087 2031/3501/1086 2011/2720/1097 -f 677/2722/1099 682/2745/1099 683/2723/1100 -f 668/2725/1101 667/2750/435 685/2726/435 -f 670/2728/1102 669/2831/1103 688/2729/1103 -f 672/2731/1104 671/2812/1105 533/2732/1105 -f 674/2734/1106 673/2743/486 691/2735/486 -f 675/2737/1107 668/3502/1101 684/2738/1101 -f 670/2728/1102 689/2730/1102 694/2740/1108 -f 672/2742/1104 690/3503/1104 691/2735/486 -f 674/2744/1106 692/3504/1106 682/2745/1099 -f 649/2671/1062 531/2670/1061 678/2748/1109 -f 531/2670/1061 645/2746/1074 678/2748/1109 -f 680/2749/1110 695/3505/1110 685/2726/435 -f 696/2751/1111 697/2786/1141 698/2752/1112 -f 2029/2754/1091 2018/2828/1173 2026/2755/1114 -f 731/2757/1115 713/3506/1124 717/3507/521 -f 713/3506/1124 714/3508/521 715/3509/521 -f 715/3509/521 716/3510/1605 713/3506/1124 -f 716/3510/1605 717/3507/521 713/3506/1124 -f 729/3511/884 730/3512/1606 699/3513/521 -f 730/3512/1606 731/2757/1115 727/2756/521 -f 699/3513/521 730/3512/1606 728/3514/521 -f 728/3514/521 698/3515/1607 699/3513/521 -f 717/3507/521 718/3516/1608 722/2758/521 -f 718/3516/1608 719/3517/521 722/2758/521 -f 722/2758/521 719/3517/521 720/3518/1609 -f 720/3518/1609 721/3519/1610 722/2758/521 -f 722/2758/521 723/3520/1138 724/3521/1117 -f 724/3521/1117 725/3522/1611 727/2756/521 -f 724/3521/1117 727/2756/521 722/2758/521 -f 725/3522/1611 726/3523/521 727/2756/521 -f 727/2756/521 728/3514/521 730/3512/1606 -f 731/2757/1115 717/3507/521 722/2758/521 -f 732/2759/1116 725/3524/1611 724/2760/1117 -f 734/2762/1119 735/2804/1155 720/2763/1120 -f 737/2765/1122 729/2813/1161 730/2766/1123 -f 713/2768/1124 731/2776/1115 739/2769/1125 -f 740/2771/1127 732/3525/1128 725/2772/1128 -f 741/2774/1130 734/2762/1119 721/2764/1121 -f 731/2776/1115 730/3526/1606 736/2777/1132 -f 738/2778/1133 713/3527/1133 714/2779/1134 -f 743/2781/1136 740/2771/1127 726/2773/1129 -f 733/2761/1118 724/2760/1117 723/2783/1138 -f 746/2785/1140 728/2823/1169 698/2752/1112 -f 2017/2787/1142 2025/3528/1177 2028/2715/1095 -f 615/2617/1025 748/3529/1144 633/2789/1144 -f 1907/2595/1010 1919/2594/1009 1924/2790/1145 -f 606/2568/985 560/2567/984 559/2792/1147 -f 1867/2794/1148 1868/3368/1538 1864/2795/1149 -f 561/2501/944 581/2500/943 750/2797/1150 -f 554/2470/926 751/3530/1151 539/2799/1151 -f 665/2801/1153 664/3500/1153 679/2802/1152 -f 679/2802/1152 675/2737/1107 693/2739/1107 -f 693/2739/1107 708/2800/1152 679/2802/1152 -f 752/2803/1154 719/2928/1172 720/2763/1120 -f 1967/2805/1156 1966/2551/973 1979/2550/972 -f 2016/2806/1157 2015/2920/1212 2023/2807/1158 -f 641/2809/1070 532/3494/1603 651/2810/1160 -f 671/2812/1105 653/2698/1080 534/2697/1080 -f 696/2751/1111 699/2753/1113 729/2813/1161 -f 539/2799/1151 751/3530/1151 558/2814/931 -f 564/2485/933 562/2798/1150 750/2797/1150 -f 1866/2816/1163 1856/3531/1163 1859/2817/959 -f 1911/2818/1164 1903/2600/1013 1923/2599/1013 -f 598/2552/974 749/2793/1147 559/2792/1147 -f 1929/3532/1610 1914/2791/1146 1928/2583/999 -f 1914/2791/1146 1924/2790/1145 1927/2820/1166 -f 633/2789/1144 748/3529/1144 620/2602/1015 -f 1936/2822/1168 1935/2625/1029 1949/2627/1031 -f 743/2781/1136 727/2782/1137 728/2823/1169 -f 2019/2705/1085 2014/2926/1214 2022/2824/1170 -f 753/2826/1171 742/2780/1135 714/2779/1134 -f 2018/2828/1173 2009/3533/1224 2012/2829/1174 -f 757/2830/1100 754/2925/1100 688/2729/1103 -f 741/2774/1130 722/2775/1131 723/2832/1175 -f 676/2741/1108 694/2740/1108 695/2834/1110 -f 2016/2806/1157 2024/2808/1159 2025/2836/1177 -f 648/2838/1078 646/2688/1076 661/2687/1076 -f 1959/2655/1052 1977/2656/1052 1978/2840/1058 -f 1946/2634/1037 1947/2636/1039 1948/2841/1179 -f 523/2449/909 526/2448/908 511/2842/1180 -f 758/2843/1108 759/2859/1108 741/2774/1130 -f 761/2844/1181 742/2780/1135 753/2826/1171 -f 763/2846/1183 764/2880/1196 765/2847/1184 -f 762/2848/1185 696/2751/1111 737/2765/1122 -f 733/2761/1118 744/2784/1139 758/2850/1186 -f 768/2852/1152 740/2771/1127 743/2781/1136 -f 742/2853/1187 738/3534/1126 769/2854/1101 -f 739/2769/1125 736/2777/1132 771/2856/1189 -f 772/2858/1190 734/2762/1119 741/2774/1130 -f 740/2860/1191 732/3535/1116 773/2861/1106 -f 738/2770/1126 739/2769/1125 770/2857/435 -f 771/2856/1189 736/2777/1132 737/2864/1192 -f 773/2866/1106 732/2759/1116 733/2761/1118 -f 774/2867/1106 773/2866/1106 767/2851/486 -f 771/2856/1189 766/2865/1192 777/2869/1192 -f 769/2863/1101 770/2857/435 779/2871/435 -f 768/2862/1191 773/2861/1106 774/2873/1106 -f 782/2875/1193 772/2858/1190 759/2859/1108 -f 770/2857/435 771/2856/1189 776/2870/1189 -f 761/2855/1188 769/2854/1101 778/2877/1101 -f 780/2879/1195 768/2852/1152 765/2847/1184 -f 767/2851/486 758/2850/1186 784/2881/1186 -f 763/2846/1183 762/2848/1185 766/2849/1080 -f 763/2846/1183 535/2892/1080 712/2883/1198 -f 712/2883/1198 747/3536/1612 764/2880/1196 -f 747/3536/1612 709/2899/1152 764/2880/1196 -f 760/2884/1199 761/2855/1188 783/2878/1194 -f 781/2876/1108 759/2859/1108 758/2843/1108 -f 706/2887/1108 781/2876/1108 784/2886/1200 -f 707/2889/1201 783/2901/1205 785/2890/1202 -f 535/2892/1080 763/2846/1183 777/2882/1197 -f 772/2858/1190 786/2929/1216 787/2894/1204 -f 787/2894/1204 788/2953/1228 789/2927/1215 -f 752/2803/1154 735/2804/1155 787/2894/1204 -f 735/2804/1155 734/2762/1119 787/2894/1204 -f 787/2894/1204 789/2927/1215 752/2803/1154 -f 696/2751/1111 762/2848/1185 697/2786/1141 -f 762/2848/1185 765/2847/1184 697/2786/1141 -f 765/2847/1184 743/2781/1136 746/2785/1140 -f 710/2895/1110 784/3537/1200 775/2896/435 -f 705/2898/1107 780/2879/1195 764/2880/1196 -f 707/2889/1201 704/3538/1106 778/2900/1106 -f 703/2902/486 702/3539/1104 776/2903/1104 -f 706/2887/1108 701/2956/1231 782/2875/1193 -f 687/2905/1101 774/3540/1101 780/2879/1195 -f 703/2902/486 779/2904/486 778/2906/1106 -f 536/2893/1105 777/2882/1197 776/2908/1104 -f 687/2910/1101 686/2897/435 775/2896/435 -f 745/2891/1203 785/2890/1202 791/2912/1206 -f 792/2914/1208 760/2845/1182 753/2826/1171 -f 619/2918/1020 628/2610/1020 636/2916/1210 -f 636/2916/1210 631/3541/1026 613/2917/1027 -f 793/2915/1209 753/2826/1171 715/2827/1172 -f 2015/2920/1212 2001/3542/1225 2004/2921/1213 -f 681/2724/1100 683/2723/1100 794/2922/1100 -f 757/2830/1100 797/2945/1100 798/2924/1100 -f 2013/2709/1089 2021/2708/1088 2022/2824/1170 -f 789/2927/1215 718/2954/1229 719/2928/1172 -f 786/2929/1216 772/2858/1190 782/2875/1193 -f 1931/2646/1047 1932/2637/1040 1933/2638/1040 -f 627/2612/1022 618/2611/1021 612/2932/1028 -f 1908/2933/1218 1913/2577/993 1926/2579/995 -f 608/2571/988 603/2561/980 594/2563/982 -f 1909/2590/1006 1917/2592/1006 1920/2935/1219 -f 1850/2936/1220 1851/2533/964 1852/2535/965 -f 584/2504/947 575/2494/939 578/2496/941 -f 544/2475/930 557/2474/929 549/2463/920 -f 509/2437/898 512/2436/897 528/2453/912 -f 1963/2426/889 1962/2457/915 1964/2456/914 -f 654/3495/1604 639/2676/1067 756/3543/1223 -f 639/2676/1067 647/2690/1077 802/2942/1223 -f 756/3543/1223 639/2676/1067 799/2943/1223 -f 647/2690/1077 662/2692/1077 711/3544/1223 -f 711/3544/1223 795/3545/1223 647/2690/1077 -f 795/3545/1223 802/2942/1223 647/2690/1077 -f 803/2944/1100 804/2946/1100 798/2924/1100 -f 803/2944/1100 796/2923/1100 794/2922/1100 -f 2009/2947/1224 2010/2721/1098 2011/2720/1097 -f 2001/2949/1225 2002/2717/1096 2003/2718/1096 -f 805/2951/1226 790/2913/1207 791/2912/1206 -f 788/2953/1228 717/2955/1230 718/2954/1229 -f 788/2953/1228 793/2915/1209 716/2919/1211 -f 787/2894/1204 792/2914/1208 793/2915/1209 -f 755/3546/1613 800/3547/1614 806/2952/1227 -f 800/3547/1614 805/2951/1226 806/2952/1227 -f 806/2952/1227 801/2930/1217 782/2875/1193 -f 755/3546/1613 806/2952/1227 700/2957/1232 -f 782/2875/1193 701/2956/1231 806/2952/1227 -f 522/3471/1602 521/2444/905 634/2959/1234 -f 521/2444/905 530/2668/1060 634/2959/1234 -f 2164/2960/1235 2163/2974/1246 2180/2961/1236 -f 2168/2963/1237 2178/3548/1243 2129/2964/1238 -f 2151/2966/1240 2178/3548/1243 2168/2963/1237 -f 2167/2968/1242 2126/2977/1249 2129/2969/1238 -f 2151/2971/1240 2155/2979/1251 2167/2968/1242 -f 2177/2972/1244 2109/3370/1540 2111/2973/1245 -f 2153/2975/1247 2148/3371/1541 2177/2972/1244 -f 2167/2968/1242 2164/2960/1235 2162/2976/1248 -f 2154/2978/1250 2164/2960/1235 2167/2968/1242 -f 2162/2976/1248 2165/3549/1252 2166/2980/1252 -f 2153/2975/1247 2163/2974/1246 2164/2960/1235 -f 2162/2976/1248 2111/2973/1245 2088/2981/1253 -f 2126/2977/1249 2162/2976/1248 2161/2982/1254 -f 2130/2965/1239 2127/3465/1601 2146/2984/1256 -f 2143/2986/1258 2145/3550/1257 2146/2987/1256 -f 2115/2989/1260 1044/3020/1291 1038/2990/1261 -f 1018/2992/1263 2115/2989/1260 2125/2991/1262 -f 1034/2994/1265 1023/3040/1310 2124/2995/1266 -f 2117/2996/1267 2124/2995/1266 1020/2997/1268 -f 2123/2999/1270 946/3033/1304 934/3000/1271 -f 950/3002/1273 2123/2999/1270 2121/3001/1272 -f 942/3004/1275 932/3025/1296 2120/3005/1276 -f 1016/3007/1278 2122/3006/1277 2120/3005/1276 -f 934/3000/1271 922/3028/1299 2119/3009/1280 -f 2121/3001/1272 2119/3009/1280 929/3010/1281 -f 2120/3005/1276 932/3025/1296 917/3011/1282 -f 941/3008/1279 2120/3005/1276 2118/3012/1283 -f 2116/3014/1285 869/3022/1293 1034/2994/1265 -f 887/3015/1286 2116/3014/1285 2117/2996/1267 -f 2113/3016/1287 1044/3020/1291 2115/2989/1260 -f 915/3018/1289 2114/3017/1288 2115/2989/1260 -f 868/3019/1290 1042/3551/1615 1044/3020/1291 -f 882/3021/1292 1025/3039/1309 1034/2994/1265 -f 2143/2986/1258 2144/2988/1259 2142/3023/1294 -f 932/3025/1296 933/3552/1616 918/3026/1297 -f 937/3027/1298 925/3553/1617 922/3028/1299 -f 926/3029/1300 2141/3024/1295 2142/3023/1294 -f 945/3031/1302 933/3552/1616 932/3025/1296 -f 948/3032/1303 937/3027/1298 934/3000/1271 -f 926/3034/1300 886/3554/1301 938/3035/1305 -f 1022/3037/1307 949/3036/1306 938/3035/1305 -f 1025/3039/1309 1024/3555/1618 1023/3040/1310 -f 1044/3020/1291 1042/3551/1615 1040/3041/1311 -f 1116/3042/1312 1111/3082/1348 1114/3043/1313 -f 1120/3045/1315 1121/3556/1619 1122/3046/1316 -f 1124/3048/1318 1125/3054/1324 1126/3049/1319 -f 1123/3050/1320 1126/3049/1319 1119/3047/1317 -f 1134/3055/1325 1131/3053/1323 1132/3051/1321 -f 1132/3051/1321 1116/3042/1312 1115/3044/1314 -f 1133/3052/1322 1134/3055/1325 1132/3051/1321 -f 1131/3053/1323 1134/3055/1325 1125/3054/1324 -f 1134/3055/1325 1133/3052/1322 1137/3056/1326 -f 1128/3058/1328 2263/3064/1329 2262/3059/1329 -f 1125/3054/1324 1134/3055/1325 1138/3057/1327 -f 1133/3052/1322 1115/3044/1314 1150/3062/1332 -f 1128/3058/1328 1130/3080/1346 2264/3063/1329 -f 1126/3049/1319 1148/3071/1338 1147/3065/1333 -f 1115/3044/1314 1114/3043/1313 1139/3066/1334 -f 1127/3067/1335 1118/3077/1343 2261/3068/1336 -f 1119/3047/1317 1147/3065/1333 1146/3070/1337 -f 1125/3054/1324 1149/3061/1331 1148/3071/1338 -f 1122/3046/1316 1121/3556/1619 1157/3072/1339 -f 1127/3067/1335 2260/3069/1336 2259/3074/1336 -f 1124/3048/1318 1154/3083/1349 1153/3076/1342 -f 1118/3077/1343 1127/3067/1335 1128/3058/1328 -f 1132/3051/1321 1152/3084/1350 1151/3078/1344 -f 1123/3050/1320 1122/3046/1316 1156/3073/1340 -f 1127/3067/1335 1129/3075/1341 1130/3080/1346 -f 1116/3042/1312 1151/3078/1344 1162/3081/1347 -f 1124/3048/1318 1123/3050/1320 1155/3079/1345 -f 1131/3053/1323 1153/3076/1342 1152/3084/1350 -f 2222/3085/1351 2202/3557/1355 2203/3086/1352 -f 2221/3088/1354 2204/3558/1357 2202/3089/1355 -f 2220/3091/1356 2205/3559/1620 2204/3092/1357 -f 2206/3094/1358 2205/3559/1620 2220/3091/1356 -f 2207/3096/1360 2206/3560/1358 2219/3097/1359 -f 2208/3099/1362 2207/3096/1360 2218/3098/1361 -f 2216/3087/1353 2203/3086/1352 2208/3101/1362 -f 2193/3103/1364 2182/3151/1365 2181/3104/1365 -f 2191/3106/1366 2193/3561/1364 2194/3107/1364 -f 2189/3109/1367 2191/3562/1366 2192/3110/1366 -f 1240/3112/1368 1238/3115/1371 1237/3113/1369 -f 1238/3115/1371 1236/3563/1621 1235/3116/1372 -f 1241/3117/1373 1242/3128/1383 1240/3112/1368 -f 1181/3118/1374 1177/3130/1385 1173/3119/1375 -f 1229/3121/1377 1169/3564/1377 1232/3122/1378 -f 1230/3124/1380 1245/3131/1386 1231/3125/1381 -f 1244/3127/1382 1243/3565/1382 1242/3128/1383 -f 1183/3129/1384 1179/3566/1622 1177/3130/1385 -f 1245/3131/1386 1248/3567/1623 1251/3132/1387 -f 2187/3133/1388 2189/3109/1367 2190/3111/1367 -f 1246/3123/1379 1232/3122/1378 1252/3135/1389 -f 1249/3137/1391 1253/3568/1624 1254/3138/1392 -f 1251/3132/1387 1248/3567/1623 1250/3140/1394 -f 2185/3142/1396 2187/3569/1388 2188/3143/1388 -f 1252/3135/1389 1253/3568/1624 1249/3137/1391 -f 1187/3145/1397 1179/3566/1622 1183/3129/1384 -f 1234/3147/1399 1187/3145/1397 1185/3146/1398 -f 1250/3140/1394 1257/3570/1402 1260/3149/1400 -f 2184/3150/1401 2183/3571/1401 2185/3142/1396 -f 2182/3151/1365 2183/3572/1401 2184/3152/1401 -f 1257/3153/1402 1259/3573/1625 1262/3154/1403 -f 1170/3156/1404 1164/3574/1404 1163/3157/1404 -f 1255/3159/1393 1254/3575/1392 1261/3160/1405 -f 2239/3162/1407 2252/3252/1457 2251/3163/1408 -f 2245/3165/1410 2254/3169/1414 2253/3166/1411 -f 2245/3165/1410 2243/3576/1420 2255/3168/1413 -f 2248/3170/1415 2247/3246/1418 2249/3171/1416 -f 2239/3173/1407 2242/3181/1421 2247/3174/1418 -f 2245/3176/1410 2248/3179/1415 2244/3177/1419 -f 2246/3175/1412 2247/3174/1418 2248/3179/1415 -f 2240/3180/1409 2241/3577/1626 2242/3181/1421 -f 1612/3185/1425 1613/3195/1434 1614/3186/1426 -f 1617/3188/1428 1618/3578/1435 1619/3189/1429 -f 1610/3183/1423 1612/3579/1425 1615/3194/1427 -f 1616/3190/1430 1619/3189/1429 1614/3186/1426 -f 1620/3191/1431 1622/3193/1433 1618/3196/1435 -f 1614/3198/1426 1619/3207/1429 1623/3199/1436 -f 1618/3196/1435 1622/3193/1433 1625/3201/1438 -f 1614/3198/1426 1624/3200/1437 1628/3204/1441 -f 1618/3206/1435 1626/3212/1439 1623/3199/1436 -f 1611/3184/1424 1615/3194/1427 1628/3208/1441 -f 1628/3204/1441 1624/3200/1437 1630/3210/1443 -f 1626/3212/1439 1632/3580/1447 1633/3213/1445 -f 1627/3203/1440 1628/3208/1441 1631/3215/1444 -f 1623/3199/1436 1633/3213/1445 1630/3210/1443 -f 1626/3202/1439 1625/3201/1438 1634/3214/1446 -f 1630/3218/1443 1636/3225/1453 1637/3219/1449 -f 1633/3221/1445 1632/3226/1447 1638/3222/1450 -f 1631/3215/1444 1637/3581/1449 1635/3217/1448 -f 1633/3221/1445 1639/3223/1451 1636/3225/1453 -f 1632/3226/1447 1634/3582/1446 1640/3227/1452 -f 2201/3228/1364 2215/3583/1364 2209/3229/1365 -f 2214/3231/1366 2215/3584/1364 2201/3232/1364 -f 2199/3234/1367 2213/3585/1367 2214/3235/1366 -f 2212/3237/1388 2213/3585/1367 2199/3234/1367 -f 2211/3239/1396 2212/3586/1388 2198/3240/1388 -f 2210/3242/1401 2211/3239/1396 2197/3241/1396 -f 2195/3230/1365 2209/3229/1365 2210/3244/1401 -f 2247/3246/1418 2242/3248/1421 2257/3247/1454 -f 2242/3248/1421 2241/3587/1626 2258/3249/1455 -f 2248/3170/1415 2250/3172/1417 2256/3250/1456 -f 2246/3167/1412 2253/3166/1411 2252/3252/1457 -f 2237/3253/1458 2238/3588/1458 2226/3254/445 -f 2236/3256/431 2238/3589/1458 2237/3257/1458 -f 2233/3259/1459 2234/3590/1459 2236/3256/431 -f 2232/3260/521 2234/3591/1459 2233/3261/1459 -f 2229/3263/1460 2230/3592/1460 2232/3260/521 -f 2228/3264/433 2230/3593/1460 2229/3265/1460 -f 2224/3267/1461 2225/3594/1461 2228/3264/433 -f 2226/3254/445 2225/3595/1461 2224/3268/1461 -f 1675/3269/1462 1682/3273/1466 1676/3270/1463 -f 1674/3272/1465 1681/3596/1627 1682/3273/1466 -f 1680/3274/1467 1681/3596/1627 1674/3272/1465 -f 1679/3276/1469 1680/3274/1467 1673/3275/1468 -f 1678/3278/1471 1679/3276/1469 1672/3277/1470 -f 1670/3280/1473 1677/3281/1474 1678/3278/1471 -f 1669/3271/1464 1676/3270/1463 1677/3281/1474 -f 1792/3282/1475 1791/3597/1478 1798/3283/1476 -f 1791/3285/1478 1786/3288/1480 1799/3286/1479 -f 1786/3288/1480 1785/3290/1482 1808/3289/1481 -f 1785/3290/1482 1790/3598/1484 1809/3291/1483 -f 1790/3292/1484 1789/3295/1486 1810/3293/1485 -f 1789/3295/1486 1788/3298/1489 1807/3296/1487 -f 1787/3297/1488 1806/3300/1491 1807/3296/1487 -f 1797/3299/1490 1805/3599/1493 1806/3300/1491 -f 1796/3301/1492 1803/3305/1495 1805/3302/1493 -f 1795/3304/1494 1804/3600/1497 1803/3305/1495 -f 1795/3306/1494 1794/3310/1499 1801/3307/1496 -f 1793/3309/1498 1802/3311/1500 1801/3307/1496 -f 1792/3282/1475 1800/3284/1477 1802/3311/1500 -f 1837/3312/1501 1826/3340/1519 1836/3313/1502 -f 1839/3315/1503 1830/3601/1503 1825/3316/1504 -f 1841/3318/1505 1824/3602/1505 1829/3319/1506 -f 1844/3321/1507 1843/3337/1516 1833/3322/1508 -f 1838/3324/1502 1836/3603/1502 1835/3325/1510 -f 1842/3320/1506 1829/3319/1506 1828/3327/1511 -f 1847/3329/1513 1845/3326/1510 1835/3325/1510 -f 1848/3331/1515 1831/3341/1515 1830/3332/1503 -f 1841/3334/1505 1840/3317/1504 1825/3316/1504 -f 1847/3336/1513 1834/3604/1514 1833/3322/1508 -f 1846/3328/1512 1828/3327/1511 1827/3338/1517 -f 1837/3312/1501 1849/3339/1518 1827/3338/1517 -f 1848/3331/1515 1844/3321/1507 1832/3323/1509 -f 1893/3342/1520 1884/3349/1520 1886/3343/1521 -f 1895/3345/1523 1880/3354/1523 1885/3346/1524 -f 1893/3342/1520 1896/3605/1526 1876/3348/1526 -f 1897/3350/1527 1898/3361/1533 1883/3351/1528 -f 1888/3353/1530 1881/3606/1530 1880/3354/1523 -f 1889/2516/952 1878/2515/952 1879/3355/1531 -f 1896/3357/1526 1899/3366/1537 1877/3358/1532 -f 1892/3360/1522 1886/3607/1521 1883/3351/1528 -f 1894/3347/1525 1885/3346/1524 1901/3362/1534 -f 1850/2936/1220 1853/2937/1221 1855/3364/957 -f 1899/3366/1537 1900/3363/1535 1901/3362/1534 -f 1891/3367/950 1897/3350/1527 1882/3352/1529 -f 1873/2530/962 1860/2529/961 1864/2795/1149 -f 2176/3369/1539 2081/3373/1543 2109/3370/1540 -f 2148/3371/1541 2147/3383/1553 2176/3369/1539 -f 2175/3372/1542 2060/3608/1545 2081/3373/1543 -f 1022/3037/1307 1019/3038/1308 1035/3374/1544 -f 2065/3376/1546 2066/3609/1628 2067/3377/1547 -f 2068/3379/1549 2069/3610/1629 2070/3380/1550 -f 2150/3382/1552 2175/3372/1542 2176/3369/1539 -f 2174/3384/1554 1022/3037/1307 2060/3375/1545 -f 2150/3386/1552 2149/3389/1557 2174/3384/1554 -f 2173/3387/1555 949/3036/1306 1022/3037/1307 -f 2159/3388/1556 2173/3387/1555 2174/3384/1554 -f 2173/3387/1555 2172/3398/1565 926/3034/1300 -f 2081/3373/1543 2060/3608/1545 1035/3390/1544 -f 2082/3392/1559 2089/3611/1630 2090/3393/1560 -f 2085/3395/1562 2084/3612/1631 2091/3396/1563 -f 2159/3388/1556 2160/3613/1568 2172/3398/1565 -f 2171/3399/1566 2141/3024/1295 926/3029/1300 -f 2157/3401/1567 2171/3399/1566 2172/3400/1565 -f 2170/3403/1569 2143/2986/1258 2141/3024/1295 -f 2157/3401/1567 2156/3614/1572 2170/3403/1569 -f 2169/3404/1570 2145/2985/1257 2143/3405/1258 -f 2158/3407/1571 2169/3404/1570 2170/3406/1569 -f 2079/3409/1573 2097/3412/1576 2093/3410/1574 -f 2097/3412/1576 2085/3395/1562 2092/3397/1564 -f 2098/3413/1577 2095/3416/1580 2087/3414/1578 -f 2083/3394/1561 2090/3393/1560 2095/3416/1580 -f 2168/2963/1237 2130/2965/1239 2145/2985/1257 -f 2158/3407/1571 2152/2967/1241 2168/2963/1237 -f 2135/3417/1581 2053/3430/1581 2050/3418/1581 -f 2049/3420/1581 2135/3417/1581 2134/3419/1581 -f 2046/3422/1582 2043/3428/1582 2132/3423/1582 -f 2045/3425/1582 2133/3424/1582 2132/3423/1582 -f 2047/3427/1582 2044/3615/1582 2043/3428/1582 -f 2052/3429/1581 2051/3616/1581 2050/3418/1581 -f 2058/3431/1583 2103/3434/1586 2101/3432/1584 -f 2103/3434/1586 2068/3379/1549 2071/3381/1551 -f 2104/3435/1587 2102/3438/1590 2062/3436/1588 -f 2064/3378/1548 2067/3377/1547 2102/3438/1590 -f 2057/3439/1591 2072/3617/1598 2073/3440/1592 -f 2075/3442/1593 2078/3618/1595 2094/3443/1594 -f 2078/3445/1595 2099/3619/1596 2100/3446/1596 -f 2106/3448/1597 2072/3617/1598 2057/3439/1591 -f 2110/3450/1597 2136/3453/1597 2137/3451/1591 -f 2108/3449/1597 2057/3439/1591 2137/3451/1591 -f 2081/3373/1543 2063/3391/1558 2107/3454/1599 -f 2109/3370/1540 2107/3454/1599 2088/2981/1253 -f 2096/3455/1595 2139/3458/1594 2138/3456/1596 -f 2094/3447/1594 2100/3446/1596 2138/3456/1596 -f 2077/3459/1593 2140/3462/1593 2139/3460/1594 -f 2076/3444/1593 2094/3443/1594 2139/3460/1594 -f 2126/2977/1249 2112/2983/1255 2128/3463/1600 -f 2130/2965/1239 2129/2964/1238 2128/3464/1600 -f 2137/3451/1591 2056/3467/1592 2055/3466/1592 -f 2057/3439/1591 2074/3441/1592 2056/3467/1592 +f 1963/2246/953 1981/2247/954 1968/2248/954 +f 504/2249/955 506/2250/956 503/2251/956 +f 499/2252/957 508/2253/958 500/2254/959 +f 510/2255/960 512/2256/961 509/2257/962 +f 513/2258/963 515/2259/964 516/2260/965 +f 517/2261/966 519/2262/967 520/2263/968 +f 521/2264/969 507/2265/970 499/2266/957 +f 524/2267/971 526/2268/972 523/2269/973 +f 514/2270/974 520/2263/968 515/2271/964 +f 518/2272/975 528/2273/976 519/2274/967 +f 1961/2275/977 1964/2276/978 1962/2277/979 +f 500/2254/959 525/2278/980 524/2279/971 +f 529/2280/981 516/2260/965 537/2281/982 +f 542/2282/983 549/2283/984 550/2284/983 +f 547/2285/985 552/2286/986 546/2287/987 +f 540/2288/988 553/2289/989 554/2290/990 +f 548/2291/991 551/2292/985 547/2285/985 +f 545/2293/992 557/2294/993 544/2295/994 +f 503/2296/956 553/2289/989 541/2297/989 +f 504/2249/955 550/2298/983 505/2299/955 +f 538/2300/995 555/2301/991 548/2302/991 +f 545/2293/992 552/2303/986 556/2304/996 +f 564/2305/997 566/2306/998 563/2307/998 +f 568/2308/999 570/2309/1000 567/2310/1000 +f 572/2311/1001 574/2312/1002 571/2313/1002 +f 575/2314/1003 577/2315/1004 578/2316/1005 +f 563/2317/998 580/2318/1006 579/2319/1006 +f 571/2313/1002 581/2320/1007 561/2321/1008 +f 582/2322/1009 580/2318/1006 583/2323/1010 +f 584/2324/1011 569/2325/999 568/2326/999 +f 572/2327/1001 570/2309/1000 573/2328/1001 +f 582/2329/1009 577/2315/1004 576/2330/1012 +f 1890/2331/1013 1887/2332/1014 1879/2333/1013 +f 1888/2334/1015 1878/2335/1016 1889/2336/1016 +f 1874/2337/1017 1863/2329/1018 1861/2330/1019 +f 1872/2338/1020 1855/2339/1021 1854/2317/1020 +f 1866/2340/1022 1857/2341/1022 1867/2342/1022 +f 1865/2343/1023 1858/2344/1024 1871/2345/1024 +f 1874/2337/1017 1860/2314/1025 1873/2346/1026 +f 1870/2347/1027 1854/2317/1020 1862/2319/1027 +f 1851/2348/1028 1858/2313/1024 1852/2321/1029 +f 1999/2349/1030 1996/2350/1031 2000/2351/1030 +f 1998/2352/1030 2000/2351/1030 1997/2353/1031 +f 1998/2352/1030 1994/2354/1031 1993/2355/1032 +f 1995/2356/1031 1991/2357/1031 1996/2350/1031 +f 1973/2358/1033 1990/2359/1034 1975/2360/1035 +f 1870/2347/1027 1863/2322/1018 1869/2361/1036 +f 1993/2355/1032 1979/2362/1037 1966/2363/1038 +f 598/2364/1039 593/2365/1040 597/2366/1040 +f 587/2340/1041 600/2367/1042 599/2335/1041 +f 602/2368/1043 592/2369/1044 601/2370/1045 +f 603/2371/1046 595/2337/1047 594/2346/1048 +f 605/2372/1049 593/2338/1040 591/2347/1049 +f 601/2370/1045 560/2348/1050 606/2373/1051 +f 607/2374/1052 591/2347/1049 590/2361/1053 +f 608/2332/1054 588/2375/1055 600/2333/1056 +f 602/2376/1057 587/2340/1041 599/2335/1041 +f 1988/2377/1058 1976/2378/1059 1961/2275/977 +f 1913/2379/1060 1921/2380/1061 1926/2381/1062 +f 1912/2382/1063 1922/2383/1064 1904/2384/1065 +f 1928/2385/1066 1916/2386/1067 1910/2387/1068 +f 1912/2382/1063 1925/2388/1069 1930/2389/1070 +f 1910/2387/1068 1915/2390/1071 1902/2391/1072 +f 1909/2392/1073 1918/2393/1074 1917/2394/1073 +f 1906/2395/1075 1919/2396/1076 1907/2397/1077 +f 1905/2398/1078 1922/2383/1064 1921/2380/1061 +f 607/2399/1052 595/2337/1047 604/2400/1079 +f 1902/2391/1072 1923/2401/1080 1903/2402/1080 +f 621/2403/1081 620/2404/1082 617/2405/1081 +f 624/2406/1083 610/2407/1084 623/2408/1084 +f 626/2409/1085 616/2410/1086 625/2411/1086 +f 628/2412/1087 618/2413/1088 627/2414/1089 +f 629/2415/1090 617/2416/1081 614/2417/1090 +f 630/2418/1091 616/2410/1086 615/2419/1092 +f 631/2420/1093 614/2417/1090 613/2421/1094 +f 632/2422/1095 611/2331/1083 624/2423/1083 +f 626/2424/1085 610/2407/1084 609/2425/1085 +f 1935/2426/1096 1957/2427/1097 1949/2428/1098 +f 1942/2429/1099 1958/2430/1100 1943/2431/1101 +f 1945/2432/1102 1951/2433/1103 1937/2434/1103 +f 1946/2435/1104 1955/2436/1105 1947/2437/1106 +f 1932/2438/1107 1958/2430/1100 1933/2439/1107 +f 1940/2440/1108 1957/2427/1097 1944/2441/1109 +f 1939/2442/1110 1952/2443/1111 1953/2444/1110 +f 1942/2429/1099 1950/2445/1112 1956/2446/1113 +f 1931/2447/1114 1955/2436/1105 1941/2448/1115 +f 1940/2440/1108 1953/2444/1110 1954/2449/1108 +f 1938/2450/1111 1951/2433/1103 1952/2443/1111 +f 502/2451/1116 637/2452/1117 638/2453/1116 +f 1992/2454/1031 1987/2455/1118 1991/2357/1031 +f 1959/2456/1119 1990/2359/1034 1977/2457/1119 +f 1988/2377/1058 1985/2458/1120 1989/2459/1121 +f 1971/2460/1122 1987/2455/1118 1974/2461/1118 +f 1969/2462/1123 1983/2463/1124 1970/2464/1124 +f 1973/2358/1033 1980/2465/1125 1986/2466/1033 +f 1960/2467/1126 1985/2458/1120 1972/2468/1127 +f 537/2281/982 530/2469/1128 529/2280/981 +f 1970/2464/1124 1984/2470/1122 1971/2460/1122 +f 531/2471/1129 649/2472/1130 650/2473/1131 +f 2038/2474/1132 2042/2475/1133 2041/2476/1134 +f 639/2477/1135 655/2478/1136 640/2479/1137 +f 641/2480/1138 657/2481/1139 642/2482/1139 +f 643/2483/1140 659/2484/1141 644/2485/1141 +f 645/2486/1142 638/2453/1116 660/2487/1143 +f 640/2479/1137 661/2488/1144 646/2489/1144 +f 643/2483/1140 657/2481/1139 658/2490/1140 +f 647/2491/1145 659/2492/1141 662/2493/1145 +f 1969/2462/1123 1981/2247/954 1982/2494/1123 +f 648/2495/1146 637/2452/1117 501/2496/1117 +f 666/2497/1147 534/2498/1148 653/2499/1148 +f 2041/2476/1134 2040/2500/1149 2039/2501/1150 +f 2039/2501/1150 2036/2502/1151 2035/2503/1150 +f 2008/2504/1150 2037/2505/1152 2038/2474/1132 +f 2019/2506/1153 2031/2507/1154 2020/2508/1155 +f 2035/2503/1150 2021/2509/1156 2013/2510/1157 +f 2005/2511/1158 2030/2512/1159 2034/2513/1160 +f 2006/2514/1161 2034/2513/1160 2032/2515/1162 +f 2008/2504/1150 2028/2516/1163 2033/2517/1150 +f 2002/2518/1164 2032/2515/1162 2003/2519/1164 +f 2020/2520/1155 2011/2521/1165 2010/2522/1166 +f 677/2523/1167 683/2524/1168 681/2525/1168 +f 668/2526/1169 685/2527/445 684/2528/1169 +f 670/2529/1170 688/2530/1171 689/2531/1170 +f 672/2532/1172 533/2533/1173 690/2534/1172 +f 674/2535/1174 691/2536/502 692/2537/1174 +f 675/2538/1175 684/2539/1169 693/2540/1175 +f 670/2529/1170 694/2541/1176 676/2542/1177 +f 672/2543/1172 691/2536/502 673/2544/502 +f 674/2545/1174 682/2546/1167 677/2523/1167 +f 645/2547/1142 660/2548/1143 678/2549/1178 +f 680/2550/1179 685/2527/445 667/2551/445 +f 696/2552/1180 698/2553/1181 699/2554/1182 +f 2029/2555/1183 2026/2556/1184 2030/2512/1159 +f 727/2557/555 731/2558/1185 722/2559/555 +f 732/2560/1186 724/2561/1187 733/2562/1188 +f 734/2563/1189 720/2564/1190 721/2565/1191 +f 737/2566/1192 730/2567/1193 736/2568/1193 +f 713/2569/1194 739/2570/1195 738/2571/1196 +f 740/2572/1197 725/2573/1198 726/2574/1199 +f 741/2575/1200 721/2565/1191 722/2576/1201 +f 731/2577/1185 736/2578/1202 739/2570/1195 +f 738/2579/1203 714/2580/1204 742/2581/1205 +f 743/2582/1206 726/2574/1199 727/2583/1207 +f 733/2562/1188 723/2584/1208 744/2585/1209 +f 746/2586/1210 698/2553/1181 697/2587/1211 +f 2017/2588/1212 2028/2516/1163 2007/2589/1213 +f 615/2419/1092 633/2590/1214 630/2418/1091 +f 1907/2397/1077 1924/2591/1215 1914/2592/1216 +f 606/2373/1051 559/2593/1217 749/2594/1217 +f 1867/2375/1218 1864/2324/1219 1857/2326/1218 +f 561/2321/1008 750/2595/1220 562/2596/1220 +f 554/2290/990 539/2597/1221 540/2288/988 +f 708/2598/1222 665/2599/1223 679/2600/1222 +f 752/2601/1224 720/2564/1190 735/2602/1225 +f 1967/2603/1226 1979/2362/1037 1980/2465/1125 +f 2016/2604/1227 2023/2605/1228 2024/2606/1229 +f 641/2607/1138 651/2608/1230 656/2609/1138 +f 671/2610/1173 534/2498/1148 533/2533/1173 +f 696/2552/1180 729/2611/1231 737/2566/1192 +f 539/2597/1221 558/2612/995 538/2300/995 +f 564/2305/997 750/2595/1220 565/2613/1232 +f 1866/2614/1233 1859/2327/1023 1865/2343/1023 +f 1911/2615/1234 1923/2401/1080 1925/2388/1069 +f 598/2364/1039 559/2593/1217 596/2616/1235 +f 1928/2385/1066 1914/2592/1216 1927/2617/1236 +f 633/2590/1214 620/2404/1082 622/2618/1082 +f 1936/2619/1237 1949/2428/1098 1950/2445/1112 +f 743/2582/1206 728/2620/1238 746/2586/1210 +f 2019/2506/1153 2022/2621/1239 2027/2622/1240 +f 753/2623/1241 714/2580/1204 715/2624/1242 +f 2018/2625/1243 2012/2626/1244 2026/2556/1184 +f 757/2627/1245 688/2530/1171 669/2628/1171 +f 741/2575/1200 723/2629/1246 744/2630/1247 +f 676/2542/1177 695/2631/1179 680/2632/1179 +f 2016/2604/1227 2025/2633/1248 2017/2634/1212 +f 648/2635/1146 661/2488/1144 663/2636/1249 +f 1959/2456/1119 1978/2637/1126 1960/2467/1126 +f 1946/2435/1104 1948/2638/1250 1945/2432/1102 +f 523/2269/973 511/2639/1251 510/2255/960 +f 758/2640/1176 741/2575/1200 744/2630/1247 +f 761/2641/1252 753/2623/1241 760/2642/1253 +f 763/2643/1254 765/2644/1255 762/2645/1256 +f 762/2645/1256 737/2566/1192 766/2646/1148 +f 733/2562/1188 758/2647/1257 767/2648/502 +f 768/2649/1258 743/2582/1206 765/2644/1255 +f 742/2650/1259 769/2651/1169 761/2652/1260 +f 739/2570/1195 771/2653/1261 770/2654/445 +f 772/2655/1262 741/2575/1200 759/2656/1176 +f 740/2657/1263 773/2658/1174 768/2659/1263 +f 738/2571/1196 770/2654/445 769/2660/1169 +f 771/2653/1261 737/2661/1264 766/2662/1264 +f 773/2663/1174 733/2562/1188 767/2648/502 +f 774/2664/1174 767/2648/502 775/2665/502 +f 771/2653/1261 777/2666/1264 776/2667/1261 +f 769/2660/1169 779/2668/445 778/2669/1169 +f 768/2659/1263 774/2670/1174 780/2671/1263 +f 782/2672/1265 759/2656/1176 781/2673/1266 +f 770/2654/445 776/2667/1261 779/2668/445 +f 761/2652/1260 778/2674/1169 783/2675/1267 +f 780/2676/1268 765/2644/1255 764/2677/1269 +f 767/2648/502 784/2678/1257 775/2665/502 +f 763/2643/1254 766/2646/1148 777/2679/1270 +f 712/2680/1271 764/2677/1269 763/2643/1254 +f 760/2681/1272 783/2675/1267 785/2682/1272 +f 781/2673/1266 758/2640/1176 784/2683/1273 +f 706/2684/1274 784/2683/1273 710/2685/1179 +f 707/2686/1275 785/2687/1276 745/2688/1277 +f 535/2689/1148 777/2679/1270 536/2690/1173 +f 734/2563/1189 772/2655/1262 787/2691/1278 +f 746/2586/1210 697/2587/1211 765/2644/1255 +f 710/2692/1179 775/2693/445 686/2694/445 +f 705/2695/1175 764/2677/1269 709/2696/1279 +f 707/2686/1275 778/2697/1174 783/2698/1280 +f 703/2699/502 776/2700/1172 779/2701/502 +f 706/2684/1274 782/2672/1265 781/2673/1266 +f 687/2702/1169 780/2676/1268 705/2695/1175 +f 703/2699/502 778/2703/1174 704/2704/1174 +f 536/2690/1173 776/2705/1172 702/2706/1172 +f 687/2707/1169 775/2693/445 774/2708/1169 +f 745/2688/1277 791/2709/1281 790/2710/1282 +f 792/2711/1283 753/2623/1241 793/2712/1284 +f 636/2713/1285 613/2714/1094 619/2715/1286 +f 793/2712/1284 715/2624/1242 716/2716/1287 +f 2015/2717/1288 2004/2718/1289 2023/2605/1228 +f 681/2525/1168 794/2719/1168 796/2720/1168 +f 757/2627/1245 798/2721/1168 754/2722/1168 +f 2013/2510/1157 2022/2621/1239 2014/2723/1290 +f 789/2724/1291 719/2725/1292 752/2601/1224 +f 786/2726/1293 782/2672/1265 801/2727/1294 +f 1931/2447/1114 1933/2439/1107 1934/2728/1114 +f 627/2414/1089 612/2729/1095 632/2422/1095 +f 1908/2730/1295 1926/2381/1062 1918/2393/1074 +f 608/2332/1054 594/2346/1048 589/2731/1054 +f 1909/2392/1073 1920/2732/1296 1906/2395/1075 +f 1850/2593/1297 1852/2321/1029 1853/2596/1298 +f 584/2324/1011 578/2316/1005 585/2733/1011 +f 544/2295/994 549/2283/984 543/2734/984 +f 509/2257/962 528/2273/976 527/2735/1299 +f 1963/2246/953 1964/2276/978 1965/2736/953 +f 802/2737/1300 799/2738/1300 639/2477/1135 +f 803/2739/1168 798/2721/1168 797/2740/1168 +f 803/2739/1168 794/2719/1168 804/2741/1168 +f 2009/2742/1301 2011/2521/1165 2012/2743/1244 +f 2001/2744/1302 2003/2519/1164 2004/2745/1289 +f 805/2746/1303 791/2709/1281 806/2747/1304 +f 788/2748/1305 718/2749/1306 789/2724/1291 +f 788/2748/1305 716/2716/1287 717/2750/1307 +f 787/2691/1278 793/2712/1284 788/2748/1305 +f 701/2751/1308 700/2752/1309 806/2747/1304 +f 530/2469/1128 635/2753/1310 634/2754/1311 +f 2164/2755/1312 2180/2756/1313 2179/2757/1314 +f 2168/2758/1315 2129/2759/1316 2130/2760/1317 +f 2151/2761/1318 2168/2758/1315 2152/2762/1319 +f 2167/2763/1320 2129/2764/1316 2178/2765/1321 +f 2151/2766/1318 2167/2763/1320 2178/2765/1321 +f 2177/2767/1322 2111/2768/1323 2163/2769/1324 +f 2153/2770/1325 2177/2767/1322 2163/2769/1324 +f 2167/2763/1320 2162/2771/1326 2126/2772/1327 +f 2154/2773/1328 2167/2763/1320 2155/2774/1329 +f 2162/2771/1326 2166/2775/1330 2111/2768/1323 +f 2153/2770/1325 2164/2755/1312 2154/2773/1328 +f 2162/2771/1326 2088/2776/1331 2161/2777/1332 +f 2126/2772/1327 2161/2777/1332 2112/2778/1333 +f 2130/2760/1317 2146/2779/1334 2145/2780/1335 +f 2143/2781/1336 2146/2782/1334 2144/2783/1337 +f 2115/2784/1338 1038/2785/1339 2125/2786/1340 +f 1018/2787/1341 2125/2786/1340 1017/2788/1342 +f 1034/2789/1343 2124/2790/1344 2117/2791/1345 +f 2117/2791/1345 1020/2792/1346 1021/2793/1347 +f 2123/2794/1348 934/2795/1349 2121/2796/1350 +f 950/2797/1351 2121/2796/1350 940/2798/1352 +f 942/2799/1353 2120/2800/1354 2122/2801/1355 +f 1016/2802/1356 2120/2800/1354 941/2803/1357 +f 934/2795/1349 2119/2804/1358 2121/2796/1350 +f 2121/2796/1350 929/2805/1359 940/2798/1352 +f 2120/2800/1354 917/2806/1360 2118/2807/1361 +f 941/2803/1357 2118/2807/1361 930/2808/1362 +f 2116/2809/1363 1034/2789/1343 2117/2791/1345 +f 887/2810/1364 2117/2791/1345 1021/2793/1347 +f 2113/2811/1365 2115/2784/1338 2114/2812/1366 +f 915/2813/1367 2115/2784/1338 1018/2787/1341 +f 868/2814/1368 1044/2815/1369 2113/2811/1365 +f 882/2816/1370 1034/2789/1343 869/2817/1371 +f 2143/2781/1336 2142/2818/1372 2141/2819/1373 +f 932/2820/1374 918/2821/1375 917/2806/1360 +f 937/2822/1376 922/2823/1377 934/2795/1349 +f 926/2824/1378 2142/2818/1372 886/2825/1379 +f 945/2826/1380 932/2820/1374 942/2799/1353 +f 948/2827/1381 934/2795/1349 946/2828/1382 +f 926/2829/1378 938/2830/1383 949/2831/1384 +f 1022/2832/1385 938/2830/1383 1019/2833/1386 +f 1025/2834/1387 1023/2835/1388 1034/2789/1343 +f 1044/2815/1369 1040/2836/1389 1038/2785/1339 +f 1116/2837/1390 1114/2838/1391 1115/2839/1392 +f 1120/2840/1393 1122/2841/1394 1119/2842/1395 +f 1124/2843/1396 1126/2844/1397 1123/2845/1398 +f 1123/2845/1398 1119/2842/1395 1122/2841/1394 +f 1132/2846/1399 1115/2839/1392 1133/2847/1400 +f 1131/2848/1401 1125/2849/1402 1124/2843/1396 +f 1134/2850/1403 1137/2851/1404 1138/2852/1405 +f 1128/2853/1406 2262/2854/1407 1117/2855/1408 +f 1125/2849/1402 1138/2852/1405 1149/2856/1409 +f 1133/2847/1400 1150/2857/1410 1137/2851/1404 +f 1128/2853/1406 2264/2858/1407 2263/2859/1407 +f 1126/2844/1397 1147/2860/1411 1119/2842/1395 +f 1115/2839/1392 1139/2861/1412 1150/2857/1410 +f 1127/2862/1413 2261/2863/1414 2260/2864/1414 +f 1119/2842/1395 1146/2865/1415 1120/2840/1393 +f 1125/2849/1402 1148/2866/1416 1126/2844/1397 +f 1122/2841/1394 1157/2867/1417 1156/2868/1418 +f 1127/2862/1413 2259/2869/1414 1129/2870/1419 +f 1124/2843/1396 1153/2871/1420 1131/2848/1401 +f 1118/2872/1421 1128/2853/1406 1117/2855/1408 +f 1132/2846/1399 1151/2873/1422 1116/2837/1390 +f 1123/2845/1398 1156/2868/1418 1155/2874/1423 +f 1127/2862/1413 1130/2875/1424 1128/2853/1406 +f 1116/2837/1390 1162/2876/1425 1111/2877/1426 +f 1124/2843/1396 1155/2874/1423 1154/2878/1427 +f 1131/2848/1401 1152/2879/1428 1132/2846/1399 +f 2222/2880/1429 2203/2881/1430 2216/2882/1431 +f 2221/2883/1432 2202/2884/1433 2222/2885/1429 +f 2220/2886/1434 2204/1425/1435 2221/2887/1432 +f 2206/2888/1436 2220/2886/1434 2219/2889/1437 +f 2207/2890/1438 2219/2891/1437 2218/2892/1439 +f 2208/2893/1440 2218/2892/1439 2217/2894/1441 +f 2216/2882/1431 2208/2895/1440 2217/2896/1441 +f 2193/2897/1442 2181/2898/1443 2194/2899/1442 +f 2191/2900/1444 2194/2901/1442 2192/2902/1444 +f 2189/2903/1445 2192/2904/1444 2190/2905/1445 +f 1240/2906/1446 1237/2907/1447 1239/2908/1448 +f 1238/2909/1449 1235/2910/1450 1237/2907/1447 +f 1241/2911/1451 1240/2906/1446 1239/2908/1448 +f 1181/2912/1452 1173/2913/1453 1175/2914/1454 +f 1229/2915/1455 1232/2916/1456 1246/2917/1457 +f 1230/1361/1458 1231/2918/1459 1228/2919/1458 +f 1244/2920/1460 1242/2921/1461 1241/2911/1451 +f 1183/2922/1462 1177/2923/1463 1181/2912/1452 +f 1245/2924/1464 1251/2925/1465 1231/2918/1459 +f 2187/2926/1466 2190/2905/1445 2188/2927/1466 +f 1246/2917/1457 1252/2928/1467 1247/2929/1468 +f 1249/2930/1469 1254/2931/1470 1255/2932/1471 +f 1251/2925/1465 1250/2933/1472 1256/2934/1473 +f 2185/2935/1474 2188/2936/1466 2186/2937/1474 +f 1252/2928/1467 1249/2930/1469 1247/2929/1468 +f 1187/2938/1475 1183/2922/1462 1185/2939/1476 +f 1234/2940/1477 1185/2939/1476 1233/2941/1477 +f 1250/2933/1472 1260/2942/1478 1256/2934/1473 +f 2184/2943/1479 2185/2935/1474 2186/2937/1474 +f 2182/2944/1443 2184/2945/1479 2181/2898/1443 +f 1257/2946/1480 1262/2947/1481 1260/2948/1478 +f 1170/2949/1482 1163/2950/1482 1167/2951/1483 +f 1255/2952/1471 1261/2953/1484 1258/2954/1485 +f 2239/2955/1486 2251/2038/1487 2240/2956/1488 +f 2245/2957/1489 2253/2040/1490 2246/2958/1491 +f 2245/2957/1489 2255/2042/1492 2254/2041/1493 +f 2248/2959/1494 2249/2054/1495 2250/2052/1496 +f 2239/2960/1486 2247/2961/1497 2246/2962/1491 +f 2245/2963/1489 2244/2964/1498 2243/1146/1499 +f 2246/2962/1491 2248/2965/1494 2245/2963/1489 +f 2240/2966/1488 2242/2967/1500 2239/2960/1486 +f 1609/2968/1501 1610/2969/1502 1611/2970/1503 +f 1612/2971/1504 1614/2972/1505 1615/2973/1506 +f 1617/2548/1507 1619/2974/1508 1616/2975/1509 +f 1620/2976/1510 1621/2977/1511 1622/2978/1512 +f 1610/2969/1502 1615/2979/1506 1611/2970/1503 +f 1616/2975/1509 1614/2972/1505 1613/2980/1513 +f 1620/2976/1510 1618/2981/1514 1617/2982/1507 +f 1614/2983/1505 1623/2984/1515 1624/2985/1516 +f 1618/2981/1514 1625/2986/1517 1626/2987/1518 +f 1609/2968/1501 1611/2970/1503 1627/2988/1519 +f 1614/2983/1505 1628/2989/1520 1615/2990/1506 +f 1618/2991/1514 1623/2984/1515 1619/2992/1508 +f 1622/2978/1512 1621/2977/1511 1625/2986/1517 +f 1611/2970/1503 1628/2993/1520 1627/2988/1519 +f 1609/2968/1501 1627/2988/1519 1629/2994/1521 +f 1628/2989/1520 1630/2995/1522 1631/2996/1523 +f 1626/2997/1518 1633/2998/1524 1623/2984/1515 +f 1625/2986/1517 1621/2977/1511 1634/2999/1525 +f 1627/2988/1519 1631/3000/1523 1629/2994/1521 +f 1623/2984/1515 1630/2995/1522 1624/2985/1516 +f 1626/2987/1518 1634/2999/1525 1632/3001/1526 +f 1609/2968/1501 1629/2994/1521 1635/3002/1527 +f 1630/3003/1522 1637/3004/1528 1631/3005/1523 +f 1633/3006/1524 1638/3007/1529 1639/3008/1530 +f 1634/2999/1525 1621/2977/1511 1640/3009/1531 +f 1631/3000/1523 1635/3002/1527 1629/2994/1521 +f 1633/3006/1524 1636/3010/1532 1630/3003/1522 +f 1632/3011/1526 1640/3012/1531 1638/3007/1529 +f 2201/3013/1442 2209/3014/1443 2195/3015/1443 +f 2214/3016/1444 2201/3017/1442 2200/3018/1444 +f 2199/3019/1445 2214/2885/1444 2200/3020/1444 +f 2212/3021/1466 2199/3019/1445 2198/3022/1466 +f 2211/3023/1474 2198/3024/1466 2197/3025/1474 +f 2210/3026/1479 2197/3025/1474 2196/3027/1479 +f 2195/3015/1443 2210/3028/1479 2196/3029/1479 +f 2247/3030/1497 2257/1155/1533 2249/2054/1495 +f 2242/3031/1500 2258/2055/1534 2257/1155/1533 +f 2248/2959/1494 2256/2053/1535 2244/3032/1498 +f 2246/2958/1491 2252/1149/1536 2239/2955/1486 +f 2237/3033/1537 2226/3034/455 2223/3035/455 +f 2236/3036/441 2237/3037/1537 2235/3038/441 +f 2233/3039/1538 2236/3036/441 2235/3038/441 +f 2232/3040/555 2233/3041/1538 2231/3042/555 +f 2229/3043/1539 2232/3040/555 2231/3042/555 +f 2228/3044/443 2229/3045/1539 2227/3046/443 +f 2224/3047/1540 2228/3044/443 2227/3046/443 +f 2226/3034/455 2224/3048/1540 2223/3035/455 +f 1675/3049/1541 1676/3050/1542 1669/3051/1543 +f 1674/3052/1544 1682/3053/1545 1675/3049/1541 +f 1680/3054/1546 1674/3052/1544 1673/3055/1547 +f 1679/3056/1548 1673/3055/1547 1672/3057/1549 +f 1678/3058/1550 1672/3057/1549 1671/3059/1551 +f 1670/3060/1552 1678/3058/1550 1671/3059/1551 +f 1669/3051/1543 1677/3061/1553 1670/3060/1552 +f 1792/3062/1554 1798/3063/1555 1800/3064/1556 +f 1791/3065/1557 1799/3066/1558 1798/3067/1555 +f 1786/3068/1559 1808/3069/1560 1799/3066/1558 +f 1785/3070/1561 1809/3071/1562 1808/3069/1560 +f 1790/3072/1563 1810/3073/1564 1809/3074/1562 +f 1789/3075/1565 1807/3076/1566 1810/3073/1564 +f 1787/3077/1567 1807/3076/1566 1788/3078/1568 +f 1797/3079/1569 1806/3080/1570 1787/3077/1567 +f 1796/3081/1571 1805/3082/1572 1797/3083/1569 +f 1795/3084/1573 1803/3085/1574 1796/3081/1571 +f 1795/3086/1573 1801/3087/1575 1804/3088/1576 +f 1793/3089/1577 1801/3087/1575 1794/3090/1578 +f 1792/3062/1554 1802/3091/1579 1793/3089/1577 +f 1837/2613/1580 1836/2302/1581 1838/2306/1581 +f 1839/3092/1582 1825/2249/1583 1840/2309/1583 +f 1841/3093/1584 1829/2297/1585 1842/2312/1585 +f 1844/2316/1586 1833/2293/1587 1832/2295/1588 +f 1838/3094/1581 1835/2285/1589 1845/2318/1589 +f 1842/2312/1585 1828/2288/1590 1846/2320/1591 +f 1847/2323/1592 1835/2285/1589 1834/2287/1593 +f 1848/2733/1594 1830/2282/1582 1839/2325/1582 +f 1841/2328/1584 1825/2249/1583 1824/2251/1584 +f 1847/3095/1592 1833/2293/1587 1843/2315/1595 +f 1846/2320/1591 1827/2597/1596 1849/2595/1597 +f 1837/2613/1580 1827/2597/1596 1826/2300/1598 +f 1848/2733/1594 1832/2295/1588 1831/2734/1594 +f 1893/2417/1599 1886/2374/1600 1892/2421/1601 +f 1895/2410/1602 1885/2373/1603 1894/2419/1604 +f 1893/2417/1599 1876/3096/1605 1884/2372/1599 +f 1897/2413/1606 1883/2400/1607 1882/2371/1608 +f 1888/3097/1609 1880/2370/1602 1895/2410/1602 +f 1889/2336/1016 1879/2367/1610 1890/3098/1610 +f 1896/2405/1611 1877/2364/1612 1876/2366/1605 +f 1892/2714/1601 1883/2400/1607 1898/2715/1613 +f 1894/2419/1604 1901/2594/1614 1900/3099/1615 +f 1850/2593/1297 1855/2305/1021 1875/2616/1616 +f 1899/2404/1617 1901/2594/1614 1877/2364/1612 +f 1891/2729/1014 1882/2371/1608 1887/2332/1014 +f 1873/2346/1026 1864/2324/1219 1868/2731/1219 +f 2176/3100/1618 2109/3101/1619 2177/2767/1322 +f 2148/3102/1620 2176/3100/1618 2177/2767/1322 +f 2175/3103/1621 2081/3104/1622 2176/3100/1618 +f 1022/2832/1385 1035/3105/1623 2060/3106/1624 +f 2065/3107/1625 2067/2828/1626 2064/3108/1627 +f 2068/3109/1628 2070/2826/1629 2071/2799/1630 +f 2150/3110/1631 2176/3100/1618 2147/3111/1632 +f 2174/3112/1633 2060/3106/1624 2175/3113/1621 +f 2150/3114/1631 2174/3112/1633 2175/3113/1621 +f 2173/3115/1634 1022/2832/1385 2174/3112/1633 +f 2159/3116/1635 2174/3112/1633 2149/3117/1636 +f 2173/3115/1634 926/2829/1378 949/2831/1384 +f 2081/3104/1622 1035/3118/1623 2063/3119/1637 +f 2082/3120/1638 2090/2817/1639 2083/2823/1640 +f 2085/2806/1641 2091/2814/1642 2092/2811/1643 +f 2159/3116/1635 2172/3121/1644 2173/3115/1634 +f 2171/3122/1645 926/2824/1378 2172/3123/1644 +f 2157/3124/1646 2172/3123/1644 2160/3125/1647 +f 2170/3126/1648 2141/2819/1373 2171/3122/1645 +f 2157/3124/1646 2170/3126/1648 2171/3122/1645 +f 2169/3127/1649 2143/3128/1336 2170/3129/1648 +f 2158/3130/1650 2170/3129/1648 2156/3131/1651 +f 2079/2808/1652 2093/2812/1653 2086/2813/1654 +f 2097/2807/1655 2092/2811/1643 2093/2812/1653 +f 2098/2804/1656 2087/2810/1657 2080/2805/1658 +f 2083/2823/1640 2095/2809/1659 2098/2804/1656 +f 2168/2758/1315 2145/2780/1335 2169/3127/1649 +f 2158/3130/1650 2168/2758/1315 2169/3127/1649 +f 2135/3132/1660 2050/3133/1660 2134/3134/1660 +f 2049/3135/1660 2134/3134/1660 2048/3136/1660 +f 2046/3137/1661 2132/3138/1661 2133/3139/1661 +f 2045/3140/1661 2132/3138/1661 2131/3141/1661 +f 2047/3142/1661 2043/3143/1661 2046/3137/1661 +f 2052/3144/1660 2050/3133/1660 2053/3145/1660 +f 2058/3146/1662 2101/2801/1663 2059/2802/1664 +f 2103/3147/1665 2071/2799/1630 2101/2801/1663 +f 2104/3148/1666 2062/2797/1667 2061/3149/1668 +f 2064/3108/1627 2102/2794/1669 2104/3148/1666 +f 2057/3150/1670 2073/3151/1671 2074/3152/1671 +f 2075/3153/1672 2094/3154/1673 2076/3133/1672 +f 2078/3155/1674 2100/3156/1675 2094/3157/1673 +f 2106/3158/1676 2057/3150/1670 2108/3143/1676 +f 2110/3141/1676 2137/3159/1670 2054/3160/1677 +f 2108/3143/1676 2137/3159/1670 2136/3138/1676 +f 2081/3104/1622 2107/3161/1678 2109/3101/1619 +f 2109/3101/1619 2088/2776/1331 2111/2768/1323 +f 2096/3162/1674 2138/3163/1675 2105/3164/1675 +f 2094/3157/1673 2138/3163/1675 2139/3165/1673 +f 2077/3136/1672 2139/3166/1673 2096/3167/1674 +f 2076/3133/1672 2139/3166/1673 2140/3134/1672 +f 2126/2772/1327 2128/3168/1679 2129/2764/1316 +f 2130/2760/1317 2128/3169/1679 2127/3170/1680 +f 2137/3159/1670 2055/3171/1671 2054/3160/1677 +f 2057/3150/1670 2056/3172/1671 2137/3159/1670 +f 1963/2246/953 1965/2736/953 1981/2247/954 +f 504/2249/955 505/2299/955 506/2250/956 +f 499/2252/957 507/3173/970 508/2253/958 +f 510/2255/960 511/2639/1251 512/2256/961 +f 513/2258/963 514/3174/974 515/2259/964 +f 517/2261/966 518/3175/975 519/2262/967 +f 521/2264/969 522/3176/1681 507/2265/970 +f 524/2267/971 525/3177/980 526/2268/972 +f 514/2270/974 517/2261/966 520/2263/968 +f 518/2272/975 527/2735/1299 528/2273/976 +f 1961/2275/977 1976/2378/1059 1964/2276/978 +f 500/2254/959 508/2253/958 525/2278/980 +f 529/2280/981 513/2258/963 516/2260/965 +f 542/2282/983 543/2734/984 549/2283/984 +f 547/2285/985 551/2292/985 552/2286/986 +f 540/2288/988 541/2297/989 553/2289/989 +f 548/2291/991 555/3178/991 551/2292/985 +f 545/2293/992 556/2304/996 557/2294/993 +f 503/2296/956 506/3179/956 553/2289/989 +f 504/2249/955 542/3180/983 550/2298/983 +f 538/2300/995 558/2612/995 555/2301/991 +f 545/2293/992 546/3181/987 552/2303/986 +f 564/2305/997 565/2613/1232 566/2306/998 +f 568/2308/999 569/3092/999 570/2309/1000 +f 572/2311/1001 573/3093/1001 574/2312/1002 +f 575/2314/1003 576/2330/1012 577/2315/1004 +f 563/2317/998 566/3094/998 580/2318/1006 +f 571/2313/1002 574/2312/1002 581/2320/1007 +f 582/2322/1009 579/2319/1006 580/2318/1006 +f 584/2324/1011 585/2733/1011 569/2325/999 +f 572/2327/1001 567/2310/1000 570/2309/1000 +f 582/2329/1009 583/3095/1010 577/2315/1004 +f 1890/2331/1013 1891/2729/1014 1887/2332/1014 +f 1888/2334/1015 1881/2376/1015 1878/2335/1016 +f 1874/2337/1017 1869/3182/1036 1863/2329/1018 +f 1872/2338/1020 1875/3183/1616 1855/2339/1021 +f 1866/2340/1022 1856/3184/1022 1857/2341/1022 +f 1865/2343/1023 1859/2327/1023 1858/2344/1024 +f 1874/2337/1017 1861/2330/1019 1860/2314/1025 +f 1870/2347/1027 1872/2338/1020 1854/2317/1020 +f 1851/2348/1028 1871/2369/1024 1858/2313/1024 +f 1999/2349/1030 1995/2356/1031 1996/2350/1031 +f 1998/2352/1030 1999/2349/1030 2000/2351/1030 +f 1998/2352/1030 1997/2353/1031 1994/2354/1031 +f 1995/2356/1031 1992/2454/1031 1991/2357/1031 +f 1973/2358/1033 1986/2466/1033 1990/2359/1034 +f 1870/2347/1027 1862/2319/1027 1863/2322/1018 +f 1993/2355/1032 1994/2354/1031 1979/2362/1037 +f 598/2364/1039 596/2616/1235 593/2365/1040 +f 587/2340/1041 588/2342/1042 600/2367/1042 +f 602/2368/1043 586/3185/1043 592/2369/1044 +f 603/2371/1046 604/2400/1079 595/2337/1047 +f 605/2372/1049 597/3096/1040 593/2338/1040 +f 601/2370/1045 592/2369/1044 560/2348/1050 +f 607/2374/1052 605/2372/1049 591/2347/1049 +f 608/2332/1054 589/2731/1054 588/2375/1055 +f 602/2376/1057 586/3186/1057 587/2340/1041 +f 1988/2377/1058 1989/2459/1121 1976/2378/1059 +f 1913/2379/1060 1905/2398/1078 1921/2380/1061 +f 1912/2382/1063 1930/2389/1070 1922/2383/1064 +f 1928/2385/1066 1927/2617/1236 1916/2386/1067 +f 1912/2382/1063 1911/2615/1234 1925/2388/1069 +f 1910/2387/1068 1916/2386/1067 1915/2390/1071 +f 1909/2392/1073 1908/2730/1295 1918/2393/1074 +f 1906/2395/1075 1920/2732/1296 1919/2396/1076 +f 1905/2398/1078 1904/2384/1065 1922/2383/1064 +f 607/2399/1052 590/3182/1053 595/2337/1047 +f 1902/2391/1072 1915/2390/1071 1923/2401/1080 +f 621/2403/1081 622/2618/1082 620/2404/1082 +f 624/2406/1083 611/3187/1083 610/2407/1084 +f 626/2409/1085 609/3097/1085 616/2410/1086 +f 628/2412/1087 619/2715/1286 618/2413/1088 +f 629/2415/1090 621/3188/1081 617/2416/1081 +f 630/2418/1091 625/2411/1086 616/2410/1086 +f 631/2420/1093 629/2415/1090 614/2417/1090 +f 632/2422/1095 612/2729/1095 611/2331/1083 +f 626/2424/1085 623/2408/1084 610/2407/1084 +f 1935/2426/1096 1944/2441/1109 1957/2427/1097 +f 1942/2429/1099 1956/2446/1113 1958/2430/1100 +f 1945/2432/1102 1948/2638/1250 1951/2433/1103 +f 1946/2435/1104 1941/2448/1115 1955/2436/1105 +f 1932/2438/1107 1943/2431/1101 1958/2430/1100 +f 1940/2440/1108 1954/2449/1108 1957/2427/1097 +f 1939/2442/1110 1938/2450/1111 1952/2443/1111 +f 1942/2429/1099 1936/2619/1237 1950/2445/1112 +f 1931/2447/1114 1934/2728/1114 1955/2436/1105 +f 1940/2440/1108 1939/2442/1110 1953/2444/1110 +f 1938/2450/1111 1937/2434/1103 1951/2433/1103 +f 502/2451/1116 501/2496/1117 637/2452/1117 +f 1992/2454/1031 1974/2461/1118 1987/2455/1118 +f 1959/2456/1119 1975/2360/1035 1990/2359/1034 +f 1988/2377/1058 1972/2468/1127 1985/2458/1120 +f 1971/2460/1122 1984/2470/1122 1987/2455/1118 +f 1969/2462/1123 1982/2494/1123 1983/2463/1124 +f 1973/2358/1033 1967/2603/1226 1980/2465/1125 +f 1960/2467/1126 1978/2637/1126 1985/2458/1120 +f 537/2281/982 635/2753/1310 530/2469/1128 +f 1970/2464/1124 1983/2463/1124 1984/2470/1122 +f 651/2608/1230 532/3189/1682 650/2473/1131 +f 532/3189/1682 531/2471/1129 650/2473/1131 +f 2038/2474/1132 2037/2505/1152 2042/2475/1133 +f 639/2477/1135 654/3190/1683 655/2478/1136 +f 641/2480/1138 656/3191/1138 657/2481/1139 +f 643/2483/1140 658/2490/1140 659/2484/1141 +f 645/2486/1142 502/2451/1116 638/2453/1116 +f 640/2479/1137 655/2478/1136 661/2488/1144 +f 643/2483/1140 642/2482/1139 657/2481/1139 +f 647/2491/1145 644/3192/1141 659/2492/1141 +f 1969/2462/1123 1968/2248/954 1981/2247/954 +f 648/2495/1146 663/3193/1249 637/2452/1117 +f 653/2499/1148 652/3194/1147 666/2497/1147 +f 652/3194/1147 664/3195/1684 666/2497/1147 +f 664/3195/1684 665/2599/1223 666/2497/1147 +f 2041/2476/1134 2042/2475/1133 2040/2500/1149 +f 2039/2501/1150 2040/2500/1149 2036/2502/1151 +f 2008/2504/1150 2033/2517/1150 2037/2505/1152 +f 2019/2506/1153 2027/2622/1240 2031/2507/1154 +f 2035/2503/1150 2036/2502/1151 2021/2509/1156 +f 2005/2511/1158 2029/2555/1183 2030/2512/1159 +f 2006/2514/1161 2005/2511/1158 2034/2513/1160 +f 2008/2504/1150 2007/2589/1213 2028/2516/1163 +f 2002/2518/1164 2006/2514/1161 2032/2515/1162 +f 2020/2520/1155 2031/3196/1154 2011/2521/1165 +f 677/2523/1167 682/2546/1167 683/2524/1168 +f 668/2526/1169 667/2551/445 685/2527/445 +f 670/2529/1170 669/2628/1171 688/2530/1171 +f 672/2532/1172 671/2610/1173 533/2533/1173 +f 674/2535/1174 673/2544/502 691/2536/502 +f 675/2538/1175 668/3197/1169 684/2539/1169 +f 670/2529/1170 689/2531/1170 694/2541/1176 +f 672/2543/1172 690/3198/1172 691/2536/502 +f 674/2545/1174 692/3199/1174 682/2546/1167 +f 649/2472/1130 531/2471/1129 678/2549/1178 +f 531/2471/1129 645/2547/1142 678/2549/1178 +f 680/2550/1179 695/3200/1179 685/2527/445 +f 696/2552/1180 697/2587/1211 698/2553/1181 +f 2029/2555/1183 2018/2625/1243 2026/2556/1184 +f 731/2558/1185 713/3201/1194 717/3202/1685 +f 713/3201/1194 714/3203/1686 715/3204/555 +f 715/3204/555 716/3205/1687 713/3201/1194 +f 716/3205/1687 717/3202/1685 713/3201/1194 +f 729/3206/1688 730/3207/1689 699/3208/761 +f 730/3207/1689 731/2558/1185 727/2557/555 +f 699/3208/761 730/3207/1689 728/3209/555 +f 728/3209/555 698/3210/1690 699/3208/761 +f 717/3202/1685 718/3211/753 722/2559/555 +f 718/3211/753 719/3212/761 722/2559/555 +f 722/2559/555 719/3212/761 720/3213/1691 +f 720/3213/1691 721/3214/1692 722/2559/555 +f 722/2559/555 723/3215/1208 724/3216/1187 +f 724/3216/1187 725/3217/1693 727/2557/555 +f 724/3216/1187 727/2557/555 722/2559/555 +f 725/3217/1693 726/3218/555 727/2557/555 +f 727/2557/555 728/3209/555 730/3207/1689 +f 731/2558/1185 717/3202/1685 722/2559/555 +f 732/2560/1186 725/3219/1693 724/2561/1187 +f 734/2563/1189 735/2602/1225 720/2564/1190 +f 737/2566/1192 729/2611/1231 730/2567/1193 +f 713/2569/1194 731/2577/1185 739/2570/1195 +f 740/2572/1197 732/3220/1198 725/2573/1198 +f 741/2575/1200 734/2563/1189 721/2565/1191 +f 731/2577/1185 730/3221/1689 736/2578/1202 +f 738/2579/1203 713/3222/1203 714/2580/1204 +f 743/2582/1206 740/2572/1197 726/2574/1199 +f 733/2562/1188 724/2561/1187 723/2584/1208 +f 746/2586/1210 728/2620/1238 698/2553/1181 +f 2017/2588/1212 2025/3223/1248 2028/2516/1163 +f 615/2419/1092 748/3099/1214 633/2590/1214 +f 1907/2397/1077 1919/2396/1076 1924/2591/1215 +f 606/2373/1051 560/2348/1050 559/2593/1217 +f 1867/2375/1218 1868/2731/1219 1864/2324/1219 +f 561/2321/1008 581/2320/1007 750/2595/1220 +f 554/2290/990 751/3224/1694 539/2597/1221 +f 665/2599/1223 664/3195/1684 679/2600/1222 +f 679/2600/1222 675/2538/1175 693/2540/1175 +f 693/2540/1175 708/2598/1222 679/2600/1222 +f 752/2601/1224 719/2725/1292 720/2564/1190 +f 1967/2603/1226 1966/2363/1038 1979/2362/1037 +f 2016/2604/1227 2015/2717/1288 2023/2605/1228 +f 641/2607/1138 532/3189/1682 651/2608/1230 +f 671/2610/1173 653/2499/1148 534/2498/1148 +f 696/2552/1180 699/2554/1182 729/2611/1231 +f 539/2597/1221 751/3224/1694 558/2612/995 +f 564/2305/997 562/2596/1220 750/2595/1220 +f 1866/2614/1233 1856/2310/1233 1859/2327/1023 +f 1911/2615/1234 1903/2402/1080 1923/2401/1080 +f 598/2364/1039 749/2594/1217 559/2593/1217 +f 1929/3225/555 1914/2592/1216 1928/2385/1066 +f 1914/2592/1216 1924/2591/1215 1927/2617/1236 +f 633/2590/1214 748/3099/1214 620/2404/1082 +f 1936/2619/1237 1935/2426/1096 1949/2428/1098 +f 743/2582/1206 727/2583/1207 728/2620/1238 +f 2019/2506/1153 2014/2723/1290 2022/2621/1239 +f 753/2623/1241 742/2581/1205 714/2580/1204 +f 2018/2625/1243 2009/3226/1301 2012/2626/1244 +f 757/2627/1245 754/2722/1168 688/2530/1171 +f 741/2575/1200 722/2576/1201 723/2629/1246 +f 676/2542/1177 694/2541/1176 695/2631/1179 +f 2016/2604/1227 2024/2606/1229 2025/2633/1248 +f 648/2635/1146 646/2489/1144 661/2488/1144 +f 1959/2456/1119 1977/2457/1119 1978/2637/1126 +f 1946/2435/1104 1947/2437/1106 1948/2638/1250 +f 523/2269/973 526/2268/972 511/2639/1251 +f 758/2640/1176 759/2656/1176 741/2575/1200 +f 761/2641/1252 742/2581/1205 753/2623/1241 +f 763/2643/1254 764/2677/1269 765/2644/1255 +f 762/2645/1256 696/2552/1180 737/2566/1192 +f 733/2562/1188 744/2585/1209 758/2647/1257 +f 768/2649/1258 740/2572/1197 743/2582/1206 +f 742/2650/1259 738/3227/1196 769/2651/1169 +f 739/2570/1195 736/2578/1202 771/2653/1261 +f 772/2655/1262 734/2563/1189 741/2575/1200 +f 740/2657/1263 732/3228/1186 773/2658/1174 +f 738/2571/1196 739/2570/1195 770/2654/445 +f 771/2653/1261 736/2578/1202 737/2661/1264 +f 773/2663/1174 732/2560/1186 733/2562/1188 +f 774/2664/1174 773/2663/1174 767/2648/502 +f 771/2653/1261 766/2662/1264 777/2666/1264 +f 769/2660/1169 770/2654/445 779/2668/445 +f 768/2659/1263 773/2658/1174 774/2670/1174 +f 782/2672/1265 772/2655/1262 759/2656/1176 +f 770/2654/445 771/2653/1261 776/2667/1261 +f 761/2652/1260 769/2651/1169 778/2674/1169 +f 780/2676/1268 768/2649/1258 765/2644/1255 +f 767/2648/502 758/2647/1257 784/2678/1257 +f 763/2643/1254 762/2645/1256 766/2646/1148 +f 763/2643/1254 535/2689/1148 712/2680/1271 +f 712/2680/1271 747/3229/1695 764/2677/1269 +f 747/3229/1695 709/2696/1279 764/2677/1269 +f 760/2681/1272 761/2652/1260 783/2675/1267 +f 781/2673/1266 759/2656/1176 758/2640/1176 +f 706/2684/1274 781/2673/1266 784/2683/1273 +f 707/2686/1275 783/2698/1280 785/2687/1276 +f 535/2689/1148 763/2643/1254 777/2679/1270 +f 772/2655/1262 786/2726/1293 787/2691/1278 +f 787/2691/1278 788/2748/1305 789/2724/1291 +f 752/2601/1224 735/2602/1225 787/2691/1278 +f 735/2602/1225 734/2563/1189 787/2691/1278 +f 787/2691/1278 789/2724/1291 752/2601/1224 +f 696/2552/1180 762/2645/1256 697/2587/1211 +f 762/2645/1256 765/2644/1255 697/2587/1211 +f 765/2644/1255 743/2582/1206 746/2586/1210 +f 710/2692/1179 784/3230/1273 775/2693/445 +f 705/2695/1175 780/2676/1268 764/2677/1269 +f 707/2686/1275 704/3231/1174 778/2697/1174 +f 703/2699/502 702/3232/1172 776/2700/1172 +f 706/2684/1274 701/2751/1308 782/2672/1265 +f 687/2702/1169 774/3233/1169 780/2676/1268 +f 703/2699/502 779/2701/502 778/2703/1174 +f 536/2690/1173 777/2679/1270 776/2705/1172 +f 687/2707/1169 686/2694/445 775/2693/445 +f 745/2688/1277 785/2687/1276 791/2709/1281 +f 792/2711/1283 760/2642/1253 753/2623/1241 +f 619/2715/1286 628/2412/1087 636/2713/1285 +f 636/2713/1285 631/3234/1093 613/2714/1094 +f 793/2712/1284 753/2623/1241 715/2624/1242 +f 2015/2717/1288 2001/3235/1302 2004/2718/1289 +f 681/2525/1168 683/2524/1168 794/2719/1168 +f 757/2627/1245 797/2740/1168 798/2721/1168 +f 2013/2510/1157 2021/2509/1156 2022/2621/1239 +f 789/2724/1291 718/2749/1306 719/2725/1292 +f 786/2726/1293 772/2655/1262 782/2672/1265 +f 1931/2447/1114 1932/2438/1107 1933/2439/1107 +f 627/2414/1089 618/2413/1088 612/2729/1095 +f 1908/2730/1295 1913/2379/1060 1926/2381/1062 +f 608/2332/1054 603/2371/1046 594/2346/1048 +f 1909/2392/1073 1917/2394/1073 1920/2732/1296 +f 1850/2593/1297 1851/2348/1028 1852/2321/1029 +f 584/2324/1011 575/2314/1003 578/2316/1005 +f 544/2295/994 557/2294/993 549/2283/984 +f 509/2257/962 512/2256/961 528/2273/976 +f 1963/2246/953 1962/2277/979 1964/2276/978 +f 654/3190/1683 639/2477/1135 756/3236/1300 +f 639/2477/1135 647/2491/1145 802/2737/1300 +f 756/3236/1300 639/2477/1135 799/2738/1300 +f 647/2491/1145 662/2493/1145 711/3237/1300 +f 711/3237/1300 795/3238/1300 647/2491/1145 +f 795/3238/1300 802/2737/1300 647/2491/1145 +f 803/2739/1168 804/2741/1168 798/2721/1168 +f 803/2739/1168 796/2720/1168 794/2719/1168 +f 2009/2742/1301 2010/2522/1166 2011/2521/1165 +f 2001/2744/1302 2002/2518/1164 2003/2519/1164 +f 805/2746/1303 790/2710/1282 791/2709/1281 +f 788/2748/1305 717/2750/1307 718/2749/1306 +f 788/2748/1305 793/2712/1284 716/2716/1287 +f 787/2691/1278 792/2711/1283 793/2712/1284 +f 755/3239/1696 800/3240/1697 806/2747/1304 +f 800/3240/1697 805/2746/1303 806/2747/1304 +f 806/2747/1304 801/2727/1294 782/2672/1265 +f 755/3239/1696 806/2747/1304 700/2752/1309 +f 782/2672/1265 701/2751/1308 806/2747/1304 +f 522/3176/1681 521/2264/969 634/2754/1311 +f 521/2264/969 530/2469/1128 634/2754/1311 +f 2164/2755/1312 2163/2769/1324 2180/2756/1313 +f 2168/2758/1315 2178/3241/1321 2129/2759/1316 +f 2151/2761/1318 2178/3241/1321 2168/2758/1315 +f 2167/2763/1320 2126/2772/1327 2129/2764/1316 +f 2151/2766/1318 2155/2774/1329 2167/2763/1320 +f 2177/2767/1322 2109/3101/1619 2111/2768/1323 +f 2153/2770/1325 2148/3102/1620 2177/2767/1322 +f 2167/2763/1320 2164/2755/1312 2162/2771/1326 +f 2154/2773/1328 2164/2755/1312 2167/2763/1320 +f 2162/2771/1326 2165/3242/1698 2166/2775/1330 +f 2153/2770/1325 2163/2769/1324 2164/2755/1312 +f 2162/2771/1326 2111/2768/1323 2088/2776/1331 +f 2126/2772/1327 2162/2771/1326 2161/2777/1332 +f 2130/2760/1317 2127/3170/1680 2146/2779/1334 +f 2143/2781/1336 2145/3243/1335 2146/2782/1334 +f 2115/2784/1338 1044/2815/1369 1038/2785/1339 +f 1018/2787/1341 2115/2784/1338 2125/2786/1340 +f 1034/2789/1343 1023/2835/1388 2124/2790/1344 +f 2117/2791/1345 2124/2790/1344 1020/2792/1346 +f 2123/2794/1348 946/2828/1382 934/2795/1349 +f 950/2797/1351 2123/2794/1348 2121/2796/1350 +f 942/2799/1353 932/2820/1374 2120/2800/1354 +f 1016/2802/1356 2122/2801/1355 2120/2800/1354 +f 934/2795/1349 922/2823/1377 2119/2804/1358 +f 2121/2796/1350 2119/2804/1358 929/2805/1359 +f 2120/2800/1354 932/2820/1374 917/2806/1360 +f 941/2803/1357 2120/2800/1354 2118/2807/1361 +f 2116/2809/1363 869/2817/1371 1034/2789/1343 +f 887/2810/1364 2116/2809/1363 2117/2791/1345 +f 2113/2811/1365 1044/2815/1369 2115/2784/1338 +f 915/2813/1367 2114/2812/1366 2115/2784/1338 +f 868/2814/1368 1042/3244/1699 1044/2815/1369 +f 882/2816/1370 1025/2834/1387 1034/2789/1343 +f 2143/2781/1336 2144/2783/1337 2142/2818/1372 +f 932/2820/1374 933/3245/1700 918/2821/1375 +f 937/2822/1376 925/3120/1701 922/2823/1377 +f 926/2824/1378 2141/2819/1373 2142/2818/1372 +f 945/2826/1380 933/3245/1700 932/2820/1374 +f 948/2827/1381 937/2822/1376 934/2795/1349 +f 926/2829/1378 886/3246/1379 938/2830/1383 +f 1022/2832/1385 949/2831/1384 938/2830/1383 +f 1025/2834/1387 1024/3247/1702 1023/2835/1388 +f 1044/2815/1369 1042/3244/1699 1040/2836/1389 +f 1116/2837/1390 1111/2877/1426 1114/2838/1391 +f 1120/2840/1393 1121/3248/1703 1122/2841/1394 +f 1124/2843/1396 1125/2849/1402 1126/2844/1397 +f 1123/2845/1398 1126/2844/1397 1119/2842/1395 +f 1134/2850/1403 1131/2848/1401 1132/2846/1399 +f 1132/2846/1399 1116/2837/1390 1115/2839/1392 +f 1133/2847/1400 1134/2850/1403 1132/2846/1399 +f 1131/2848/1401 1134/2850/1403 1125/2849/1402 +f 1134/2850/1403 1133/2847/1400 1137/2851/1404 +f 1128/2853/1406 2263/2859/1407 2262/2854/1407 +f 1125/2849/1402 1134/2850/1403 1138/2852/1405 +f 1133/2847/1400 1115/2839/1392 1150/2857/1410 +f 1128/2853/1406 1130/2875/1424 2264/2858/1407 +f 1126/2844/1397 1148/2866/1416 1147/2860/1411 +f 1115/2839/1392 1114/2838/1391 1139/2861/1412 +f 1127/2862/1413 1118/2872/1421 2261/2863/1414 +f 1119/2842/1395 1147/2860/1411 1146/2865/1415 +f 1125/2849/1402 1149/2856/1409 1148/2866/1416 +f 1122/2841/1394 1121/3248/1703 1157/2867/1417 +f 1127/2862/1413 2260/2864/1414 2259/2869/1414 +f 1124/2843/1396 1154/2878/1427 1153/2871/1420 +f 1118/2872/1421 1127/2862/1413 1128/2853/1406 +f 1132/2846/1399 1152/2879/1428 1151/2873/1422 +f 1123/2845/1398 1122/2841/1394 1156/2868/1418 +f 1127/2862/1413 1129/2870/1419 1130/2875/1424 +f 1116/2837/1390 1151/2873/1422 1162/2876/1425 +f 1124/2843/1396 1123/2845/1398 1155/2874/1423 +f 1131/2848/1401 1153/2871/1420 1152/2879/1428 +f 2222/2880/1429 2202/3249/1433 2203/2881/1430 +f 2221/2883/1432 2204/3250/1435 2202/2884/1433 +f 2220/2886/1434 2205/3251/1704 2204/1425/1435 +f 2206/2888/1436 2205/3251/1704 2220/2886/1434 +f 2207/2890/1438 2206/3252/1436 2219/2891/1437 +f 2208/2893/1440 2207/2890/1438 2218/2892/1439 +f 2216/2882/1431 2203/2881/1430 2208/2895/1440 +f 2193/2897/1442 2182/2944/1443 2181/2898/1443 +f 2191/2900/1444 2193/3253/1442 2194/2901/1442 +f 2189/2903/1445 2191/3254/1444 2192/2904/1444 +f 1240/2906/1446 1238/2909/1449 1237/2907/1447 +f 1238/2909/1449 1236/3255/1705 1235/2910/1450 +f 1241/2911/1451 1242/2921/1461 1240/2906/1446 +f 1181/2912/1452 1177/2923/1463 1173/2913/1453 +f 1229/2915/1455 1169/3256/1455 1232/2916/1456 +f 1230/1361/1458 1245/2924/1464 1231/2918/1459 +f 1244/2920/1460 1243/3257/1460 1242/2921/1461 +f 1183/2922/1462 1179/3258/1706 1177/2923/1463 +f 1245/2924/1464 1248/3259/1707 1251/2925/1465 +f 2187/2926/1466 2189/2903/1445 2190/2905/1445 +f 1246/2917/1457 1232/2916/1456 1252/2928/1467 +f 1249/2930/1469 1253/3260/1708 1254/2931/1470 +f 1251/2925/1465 1248/3259/1707 1250/2933/1472 +f 2185/2935/1474 2187/3261/1466 2188/2936/1466 +f 1252/2928/1467 1253/3260/1708 1249/2930/1469 +f 1187/2938/1475 1179/3258/1706 1183/2922/1462 +f 1234/2940/1477 1187/2938/1475 1185/2939/1476 +f 1250/2933/1472 1257/3262/1480 1260/2942/1478 +f 2184/2943/1479 2183/3263/1479 2185/2935/1474 +f 2182/2944/1443 2183/3264/1479 2184/2945/1479 +f 1257/2946/1480 1259/3265/1709 1262/2947/1481 +f 1170/2949/1482 1164/3266/1482 1163/2950/1482 +f 1255/2952/1471 1254/3267/1470 1261/2953/1484 +f 2239/2955/1486 2252/1149/1536 2251/2038/1487 +f 2245/2957/1489 2254/2041/1493 2253/2040/1490 +f 2245/2957/1489 2243/3268/1499 2255/2042/1492 +f 2248/2959/1494 2247/3030/1497 2249/2054/1495 +f 2239/2960/1486 2242/2967/1500 2247/2961/1497 +f 2245/2963/1489 2248/2965/1494 2244/2964/1498 +f 2246/2962/1491 2247/2961/1497 2248/2965/1494 +f 2240/2966/1488 2241/3269/1710 2242/2967/1500 +f 1612/2971/1504 1613/2980/1513 1614/2972/1505 +f 1617/2548/1507 1618/3270/1514 1619/2974/1508 +f 1610/2969/1502 1612/3271/1504 1615/2979/1506 +f 1616/2975/1509 1619/2974/1508 1614/2972/1505 +f 1620/2976/1510 1622/2978/1512 1618/2981/1514 +f 1614/2983/1505 1619/2992/1508 1623/2984/1515 +f 1618/2981/1514 1622/2978/1512 1625/2986/1517 +f 1614/2983/1505 1624/2985/1516 1628/2989/1520 +f 1618/2991/1514 1626/2997/1518 1623/2984/1515 +f 1611/2970/1503 1615/2979/1506 1628/2993/1520 +f 1628/2989/1520 1624/2985/1516 1630/2995/1522 +f 1626/2997/1518 1632/3272/1526 1633/2998/1524 +f 1627/2988/1519 1628/2993/1520 1631/3000/1523 +f 1623/2984/1515 1633/2998/1524 1630/2995/1522 +f 1626/2987/1518 1625/2986/1517 1634/2999/1525 +f 1630/3003/1522 1636/3010/1532 1637/3004/1528 +f 1633/3006/1524 1632/3011/1526 1638/3007/1529 +f 1631/3000/1523 1637/1702/1528 1635/3002/1527 +f 1633/3006/1524 1639/3008/1530 1636/3010/1532 +f 1632/3011/1526 1634/3273/1525 1640/3012/1531 +f 2201/3013/1442 2215/3274/1442 2209/3014/1443 +f 2214/3016/1444 2215/3275/1442 2201/3017/1442 +f 2199/3019/1445 2213/3276/1445 2214/2885/1444 +f 2212/3021/1466 2213/3276/1445 2199/3019/1445 +f 2211/3023/1474 2212/3277/1466 2198/3024/1466 +f 2210/3026/1479 2211/3023/1474 2197/3025/1474 +f 2195/3015/1443 2209/3014/1443 2210/3028/1479 +f 2247/3030/1497 2242/3031/1500 2257/1155/1533 +f 2242/3031/1500 2241/3278/1710 2258/2055/1534 +f 2248/2959/1494 2250/2052/1496 2256/2053/1535 +f 2246/2958/1491 2253/2040/1490 2252/1149/1536 +f 2237/3033/1537 2238/3279/1537 2226/3034/455 +f 2236/3036/441 2238/3280/1537 2237/3037/1537 +f 2233/3039/1538 2234/1104/1538 2236/3036/441 +f 2232/3040/555 2234/3281/1538 2233/3041/1538 +f 2229/3043/1539 2230/3282/1539 2232/3040/555 +f 2228/3044/443 2230/3283/1539 2229/3045/1539 +f 2224/3047/1540 2225/3284/1540 2228/3044/443 +f 2226/3034/455 2225/3285/1540 2224/3048/1540 +f 1675/3049/1541 1682/3053/1545 1676/3050/1542 +f 1674/3052/1544 1681/3286/1711 1682/3053/1545 +f 1680/3054/1546 1681/3286/1711 1674/3052/1544 +f 1679/3056/1548 1680/3054/1546 1673/3055/1547 +f 1678/3058/1550 1679/3056/1548 1672/3057/1549 +f 1670/3060/1552 1677/3061/1553 1678/3058/1550 +f 1669/3051/1543 1676/3050/1542 1677/3061/1553 +f 1792/3062/1554 1791/3287/1557 1798/3063/1555 +f 1791/3065/1557 1786/3068/1559 1799/3066/1558 +f 1786/3068/1559 1785/3070/1561 1808/3069/1560 +f 1785/3070/1561 1790/3288/1563 1809/3071/1562 +f 1790/3072/1563 1789/3075/1565 1810/3073/1564 +f 1789/3075/1565 1788/3078/1568 1807/3076/1566 +f 1787/3077/1567 1806/3080/1570 1807/3076/1566 +f 1797/3079/1569 1805/3289/1572 1806/3080/1570 +f 1796/3081/1571 1803/3085/1574 1805/3082/1572 +f 1795/3084/1573 1804/3290/1576 1803/3085/1574 +f 1795/3086/1573 1794/3090/1578 1801/3087/1575 +f 1793/3089/1577 1802/3091/1579 1801/3087/1575 +f 1792/3062/1554 1800/3064/1556 1802/3091/1579 +f 1837/2613/1580 1826/2300/1598 1836/2302/1581 +f 1839/3092/1582 1830/3180/1582 1825/2249/1583 +f 1841/3093/1584 1824/2296/1584 1829/2297/1585 +f 1844/2316/1586 1843/2315/1595 1833/2293/1587 +f 1838/3094/1581 1836/2291/1581 1835/2285/1589 +f 1842/2312/1585 1829/2297/1585 1828/2288/1590 +f 1847/2323/1592 1845/2318/1589 1835/2285/1589 +f 1848/2733/1594 1831/2734/1594 1830/2282/1582 +f 1841/2328/1584 1840/2309/1583 1825/2249/1583 +f 1847/3095/1592 1834/3181/1593 1833/2293/1587 +f 1846/2320/1591 1828/2288/1590 1827/2597/1596 +f 1837/2613/1580 1849/2595/1597 1827/2597/1596 +f 1848/2733/1594 1844/2316/1586 1832/2295/1588 +f 1893/2417/1599 1884/2372/1599 1886/2374/1600 +f 1895/2410/1602 1880/2370/1602 1885/2373/1603 +f 1893/2417/1599 1896/2416/1611 1876/3096/1605 +f 1897/2413/1606 1898/2715/1613 1883/2400/1607 +f 1888/3097/1609 1881/2368/1609 1880/2370/1602 +f 1889/2336/1016 1878/2335/1016 1879/2367/1610 +f 1896/2405/1611 1899/2404/1617 1877/2364/1612 +f 1892/2714/1601 1886/2399/1600 1883/2400/1607 +f 1894/2419/1604 1885/2373/1603 1901/2594/1614 +f 1850/2593/1297 1853/2596/1298 1855/2305/1021 +f 1899/2404/1617 1900/3099/1615 1901/2594/1614 +f 1891/2729/1014 1897/2413/1606 1882/2371/1608 +f 1873/2346/1026 1860/2314/1025 1864/2324/1219 +f 2176/3100/1618 2081/3104/1622 2109/3101/1619 +f 2148/3102/1620 2147/3111/1632 2176/3100/1618 +f 2175/3103/1621 2060/3291/1624 2081/3104/1622 +f 1022/2832/1385 1019/2833/1386 1035/3105/1623 +f 2065/3107/1625 2066/2827/1712 2067/2828/1626 +f 2068/3109/1628 2069/3292/1713 2070/2826/1629 +f 2150/3110/1631 2175/3103/1621 2176/3100/1618 +f 2174/3112/1633 1022/2832/1385 2060/3106/1624 +f 2150/3114/1631 2149/3117/1636 2174/3112/1633 +f 2173/3115/1634 949/2831/1384 1022/2832/1385 +f 2159/3116/1635 2173/3115/1634 2174/3112/1633 +f 2173/3115/1634 2172/3121/1644 926/2829/1378 +f 2081/3104/1622 2060/3291/1624 1035/3118/1623 +f 2082/3120/1638 2089/2816/1714 2090/2817/1639 +f 2085/2806/1641 2084/2821/1715 2091/2814/1642 +f 2159/3116/1635 2160/948/1647 2172/3121/1644 +f 2171/3122/1645 2141/2819/1373 926/2824/1378 +f 2157/3124/1646 2171/3122/1645 2172/3123/1644 +f 2170/3126/1648 2143/2781/1336 2141/2819/1373 +f 2157/3124/1646 2156/3293/1651 2170/3126/1648 +f 2169/3127/1649 2145/2780/1335 2143/3128/1336 +f 2158/3130/1650 2169/3127/1649 2170/3129/1648 +f 2079/2808/1652 2097/2807/1655 2093/2812/1653 +f 2097/2807/1655 2085/2806/1641 2092/2811/1643 +f 2098/2804/1656 2095/2809/1659 2087/2810/1657 +f 2083/2823/1640 2090/2817/1639 2095/2809/1659 +f 2168/2758/1315 2130/2760/1317 2145/2780/1335 +f 2158/3130/1650 2152/2762/1319 2168/2758/1315 +f 2135/3132/1660 2053/3145/1660 2050/3133/1660 +f 2049/3135/1660 2135/3132/1660 2134/3134/1660 +f 2046/3137/1661 2043/3143/1661 2132/3138/1661 +f 2045/3140/1661 2133/3139/1661 2132/3138/1661 +f 2047/3142/1661 2044/3158/1661 2043/3143/1661 +f 2052/3144/1660 2051/3153/1660 2050/3133/1660 +f 2058/3146/1662 2103/3147/1665 2101/2801/1663 +f 2103/3147/1665 2068/3109/1628 2071/2799/1630 +f 2104/3148/1666 2102/2794/1669 2062/2797/1667 +f 2064/3108/1627 2067/2828/1626 2102/2794/1669 +f 2057/3150/1670 2072/3294/1677 2073/3151/1671 +f 2075/3153/1672 2078/1417/1674 2094/3154/1673 +f 2078/3155/1674 2099/3295/1675 2100/3156/1675 +f 2106/3158/1676 2072/3294/1677 2057/3150/1670 +f 2110/3141/1676 2136/3138/1676 2137/3159/1670 +f 2108/3143/1676 2057/3150/1670 2137/3159/1670 +f 2081/3104/1622 2063/3119/1637 2107/3161/1678 +f 2109/3101/1619 2107/3161/1678 2088/2776/1331 +f 2096/3162/1674 2139/3165/1673 2138/3163/1675 +f 2094/3157/1673 2100/3156/1675 2138/3163/1675 +f 2077/3136/1672 2140/3134/1672 2139/3166/1673 +f 2076/3133/1672 2094/3154/1673 2139/3166/1673 +f 2126/2772/1327 2112/2778/1333 2128/3168/1679 +f 2130/2760/1317 2129/2759/1316 2128/3169/1679 +f 2137/3159/1670 2056/3172/1671 2055/3171/1671 +f 2057/3150/1670 2074/3152/1671 2056/3172/1671 diff --git a/src/main/resources/assets/hbm/models/weapons/benelli_new.obj b/src/main/resources/assets/hbm/models/weapons/benelli_new.obj new file mode 100644 index 000000000..81b43a6ee --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/benelli_new.obj @@ -0,0 +1,5827 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +o Cube.007_Cube.012 +v -0.749291 3.198776 0.999861 +v -0.925561 3.198776 0.999861 +v -0.749291 3.375046 0.999861 +v -0.925561 3.198776 1.249144 +v 0.748885 3.197617 0.999051 +v 0.748885 3.373887 0.999051 +v 0.925155 3.197617 0.999051 +v 0.925155 3.197617 1.248335 +v 0.748885 3.373887 1.248335 +v 0.748885 3.197617 1.248335 +v -0.749291 3.375046 1.249144 +v -0.750000 3.200001 1.250000 +v -0.749291 3.198776 1.249144 +v 0.748869 3.197661 -1.749421 +v 0.925138 3.197661 -1.749422 +v 0.748868 3.021391 -1.749422 +v 0.748869 3.021390 3.750661 +v 0.925139 3.197660 3.750661 +v 0.748869 3.197660 3.750661 +v -0.749187 3.199502 -1.749413 +v -0.749187 3.023233 -1.749413 +v -0.925457 3.199503 -1.749413 +v -0.925456 3.199502 3.750652 +v -0.749186 3.023232 3.750652 +v -0.749186 3.199502 3.750652 +v -0.749291 3.198776 3.499861 +v -0.925561 3.198776 3.499861 +v -0.749291 3.375046 3.499861 +v -0.925561 3.198776 3.749144 +v 0.748885 3.197617 3.499051 +v 0.748885 3.373887 3.499051 +v 0.925155 3.197617 3.499051 +v 0.925155 3.197617 3.748335 +v 0.748885 3.373887 3.748335 +v 0.748885 3.197617 3.748335 +v -0.749291 3.375046 3.749144 +v -0.750000 3.200001 3.750000 +v -0.749291 3.198776 3.749144 +v -0.749291 3.198776 2.999861 +v -0.925561 3.198776 2.999861 +v -0.749291 3.375046 2.999861 +v -0.925561 3.198776 3.249144 +v 0.748885 3.197617 2.999051 +v 0.748885 3.373887 2.999051 +v 0.925155 3.197617 2.999051 +v 0.925155 3.197617 3.248334 +v 0.748885 3.373887 3.248334 +v 0.748885 3.197617 3.248334 +v -0.749291 3.375046 3.249144 +v -0.750000 3.200001 3.250000 +v -0.749291 3.198776 3.249144 +v -0.749291 3.198776 2.499861 +v -0.925561 3.198776 2.499861 +v -0.749291 3.375046 2.499861 +v -0.925561 3.198776 2.749144 +v 0.748885 3.197617 2.499051 +v 0.748885 3.373887 2.499051 +v 0.925155 3.197617 2.499051 +v 0.925155 3.197617 2.748335 +v 0.748885 3.373887 2.748335 +v 0.748885 3.197617 2.748335 +v -0.749291 3.375046 2.749144 +v -0.750000 3.200001 2.750000 +v -0.749291 3.198776 2.749144 +v -0.749291 3.198776 1.999861 +v -0.925561 3.198776 1.999861 +v -0.749291 3.375046 1.999861 +v -0.925561 3.198776 2.249144 +v 0.748885 3.197617 1.999051 +v 0.748885 3.373887 1.999051 +v 0.925155 3.197617 1.999051 +v 0.925155 3.197617 2.248335 +v 0.748885 3.373887 2.248335 +v 0.748885 3.197617 2.248335 +v -0.749291 3.375046 2.249144 +v -0.750000 3.200001 2.250000 +v -0.749291 3.198776 2.249144 +v -0.749291 3.198776 1.499861 +v -0.925561 3.198776 1.499861 +v -0.749291 3.375046 1.499861 +v -0.925561 3.198776 1.749144 +v 0.748885 3.197617 1.499051 +v 0.748885 3.373887 1.499051 +v 0.925155 3.197617 1.499051 +v 0.925155 3.197617 1.748335 +v 0.748885 3.373887 1.748335 +v 0.748885 3.197617 1.748335 +v -0.749291 3.375046 1.749144 +v -0.750000 3.200001 1.750000 +v -0.749291 3.198776 1.749144 +v -0.749291 3.198776 0.499861 +v -0.925561 3.198776 0.499861 +v -0.749291 3.375046 0.499861 +v -0.925561 3.198776 0.749144 +v 0.748885 3.197617 0.499051 +v 0.748885 3.373887 0.499051 +v 0.925155 3.197617 0.499051 +v 0.925155 3.197617 0.748335 +v 0.748885 3.373887 0.748335 +v 0.748885 3.197617 0.748335 +v -0.749291 3.375046 0.749144 +v -0.750000 3.200001 0.750000 +v -0.749291 3.198776 0.749144 +v -0.749291 3.198776 -0.000139 +v -0.925561 3.198776 -0.000139 +v -0.749291 3.375046 -0.000139 +v -0.925561 3.198776 0.249144 +v 0.748885 3.197617 -0.000949 +v 0.748885 3.373887 -0.000949 +v 0.925155 3.197617 -0.000949 +v 0.925155 3.197617 0.248335 +v 0.748885 3.373887 0.248335 +v 0.748885 3.197617 0.248335 +v -0.749291 3.375046 0.249144 +v -0.750000 3.200001 0.250000 +v -0.749291 3.198776 0.249144 +v -0.749291 3.198776 -0.500139 +v -0.925561 3.198776 -0.500139 +v -0.749291 3.375046 -0.500139 +v -0.925561 3.198776 -0.250856 +v 0.748885 3.197617 -0.500949 +v 0.748885 3.373887 -0.500949 +v 0.925155 3.197617 -0.500949 +v 0.925155 3.197617 -0.251665 +v 0.748885 3.373887 -0.251665 +v 0.748885 3.197617 -0.251665 +v -0.749291 3.375046 -0.250856 +v -0.750000 3.200001 -0.250000 +v -0.749291 3.198776 -0.250856 +v -0.749291 3.198776 -1.000139 +v -0.925561 3.198776 -1.000139 +v -0.749291 3.375046 -1.000139 +v -0.925561 3.198776 -0.750855 +v 0.748885 3.197617 -1.000948 +v 0.748885 3.373887 -1.000948 +v 0.925155 3.197617 -1.000948 +v 0.925155 3.197617 -0.751665 +v 0.748885 3.373887 -0.751665 +v 0.748885 3.197617 -0.751665 +v -0.749291 3.375046 -0.750855 +v -0.750000 3.200001 -0.749999 +v -0.749291 3.198776 -0.750855 +v -0.749291 3.198776 -1.500139 +v -0.925561 3.198776 -1.500139 +v -0.749291 3.375046 -1.500139 +v -0.925561 3.198776 -1.250856 +v 0.748885 3.197617 -1.500949 +v 0.748885 3.373887 -1.500949 +v 0.925155 3.197617 -1.500949 +v 0.925155 3.197617 -1.251665 +v 0.748885 3.373887 -1.251665 +v 0.748885 3.197617 -1.251665 +v -0.749291 3.375046 -1.250856 +v -0.750000 3.200001 -1.249999 +v -0.749291 3.198776 -1.250856 +v -0.749291 3.198776 -1.751088 +v -0.925561 3.198776 -1.751088 +v -0.749291 3.375046 -1.751088 +v -0.925561 3.198776 -1.501805 +v 0.748885 3.197617 -1.751898 +v 0.748885 3.373887 -1.751898 +v 0.925155 3.197617 -1.751898 +v 0.925155 3.197617 -1.502614 +v 0.748885 3.373887 -1.502614 +v 0.748885 3.197617 -1.502614 +v -0.749291 3.375046 -1.501805 +v -0.750000 3.200001 -1.500949 +v -0.749291 3.198776 -1.501805 +v -0.750000 1.350001 -10.700001 +v -0.692910 1.994416 -10.700001 +v 0.750000 1.350001 -10.700001 +v 0.692910 1.994415 -1.700001 +v 0.692910 1.994416 -10.700001 +v 0.750000 1.350000 -1.700001 +v 0.692910 1.005585 -10.700001 +v 0.692910 1.005584 -1.700001 +v 0.530330 0.713604 -10.700001 +v 0.530330 0.713604 -1.700001 +v 0.287013 0.518509 -10.700001 +v 0.287013 0.518508 -1.700001 +v 0.000000 0.450000 -10.700001 +v 0.000000 0.450000 -1.700001 +v -0.287012 0.518508 -10.700001 +v -0.287012 0.518508 -1.700001 +v -0.530330 0.713604 -10.700001 +v -0.530330 0.713603 -1.700001 +v -0.692910 1.005585 -10.700001 +v -0.692910 1.005584 -1.700001 +v -0.750000 1.350000 -1.700001 +v -0.692910 1.994415 -1.700001 +v 0.000000 3.000000 -1.700000 +v 0.129410 2.982966 -19.500000 +v 0.000000 3.000003 -19.500000 +v 0.129410 2.982962 -1.700000 +v 0.250000 2.933016 -19.500000 +v 0.250000 2.933012 -1.700000 +v 0.353553 2.853557 -19.500000 +v 0.353553 2.853553 -1.700000 +v 0.433013 2.750004 -19.500000 +v 0.433013 2.750000 -1.700000 +v 0.482963 2.629413 -19.500000 +v 0.482963 2.629409 -1.700000 +v 0.500000 2.500003 -19.500000 +v 0.500000 2.500000 -1.700000 +v 0.482963 2.370594 -19.500000 +v 0.482963 2.370590 -1.700000 +v 0.433013 2.250003 -19.500000 +v 0.433013 2.250000 -1.700000 +v 0.353554 2.146450 -19.500000 +v 0.353554 2.146446 -1.700000 +v 0.250000 2.066991 -19.500000 +v 0.250000 2.066987 -1.700000 +v 0.129410 2.017040 -19.500000 +v 0.129410 2.017036 -1.700000 +v 0.000000 2.000003 -19.500000 +v 0.000000 2.000000 -1.700000 +v -0.129409 2.017040 -19.500000 +v -0.129409 2.017036 -1.700000 +v -0.250000 2.066991 -19.500000 +v -0.250000 2.066987 -1.700000 +v -0.353553 2.146450 -19.500000 +v -0.353553 2.146446 -1.700000 +v -0.433013 2.250003 -19.500000 +v -0.433013 2.250000 -1.700000 +v -0.482963 2.370594 -19.500000 +v -0.482963 2.370590 -1.700000 +v -0.500000 2.500003 -19.500000 +v -0.500000 2.500000 -1.700000 +v -0.482963 2.629413 -19.500000 +v -0.482963 2.629409 -1.700000 +v -0.433013 2.750003 -19.500000 +v -0.433013 2.749999 -1.700000 +v -0.353554 2.853557 -19.500000 +v -0.353554 2.853553 -1.700000 +v -0.250000 2.933016 -19.500000 +v -0.250000 2.933012 -1.700000 +v -0.129410 2.982966 -19.500000 +v -0.129410 2.982962 -1.700000 +v 0.217114 2.822436 -19.500000 +v 0.113208 2.865444 -4.500000 +v 0.113208 2.865475 -19.500000 +v 0.000000 2.050003 -17.850000 +v 0.494975 1.844978 -18.550001 +v 0.000000 2.050003 -18.550001 +v 0.494975 1.844978 -17.850000 +v 0.700000 1.350003 -18.550001 +v 0.700000 1.350003 -17.850000 +v 0.494975 0.855029 -18.550001 +v 0.494975 0.855028 -17.850000 +v 0.000000 0.650003 -18.550001 +v 0.000000 0.650003 -17.850000 +v -0.494975 0.855029 -18.550001 +v -0.494975 0.855029 -17.850000 +v -0.700000 1.350003 -18.550001 +v -0.700000 1.350003 -17.850000 +v -0.494975 1.844978 -18.550001 +v -0.494975 1.844978 -17.850000 +v 0.247487 1.102515 -19.300001 +v 0.350000 1.350003 -19.300001 +v 0.247487 1.597490 -19.300001 +v 0.000000 1.700003 -19.300001 +v -0.247487 1.597490 -19.300001 +v -0.350000 1.350003 -19.300001 +v -0.247487 1.102515 -19.300001 +v 0.247487 1.102515 -19.187502 +v 0.000000 1.000003 -19.187502 +v 0.000000 1.000003 -19.300001 +v 0.000000 1.700003 -19.187502 +v 0.247487 1.597490 -19.187502 +v 0.350000 1.350003 -19.187502 +v -0.247487 1.102515 -19.187502 +v 0.000000 1.750000 -1.199998 +v 0.103528 1.736374 -18.200001 +v 0.000000 1.750003 -18.200001 +v 0.103528 1.736370 -1.199998 +v 0.200000 1.696413 -18.200001 +v 0.200000 1.696410 -1.199998 +v 0.282843 1.632846 -18.200001 +v 0.282843 1.632842 -1.199998 +v 0.346410 1.550003 -18.200001 +v 0.346410 1.549999 -1.199998 +v 0.386370 1.453531 -18.200001 +v 0.386370 1.453527 -1.199998 +v 0.400000 1.350003 -18.200001 +v 0.400000 1.349999 -1.199998 +v 0.386370 1.246476 -18.200001 +v 0.386370 1.246472 -1.199998 +v 0.346410 1.150003 -18.200001 +v 0.346410 1.150000 -1.199998 +v 0.282843 1.067161 -18.200001 +v 0.282843 1.067157 -1.199998 +v 0.200000 1.003593 -18.200001 +v 0.200000 1.003590 -1.199998 +v 0.103528 0.963633 -18.200001 +v 0.103528 0.963629 -1.199998 +v 0.000000 0.950003 -18.200001 +v 0.000000 0.950000 -1.199998 +v -0.103527 0.963633 -18.200001 +v -0.103527 0.963629 -1.199998 +v -0.200000 1.003593 -18.200001 +v -0.200000 1.003589 -1.199998 +v -0.282843 1.067161 -18.200001 +v -0.282843 1.067157 -1.199998 +v -0.346410 1.150003 -18.200001 +v -0.346410 1.150000 -1.199998 +v -0.386370 1.246475 -18.200001 +v -0.386370 1.246472 -1.199998 +v -0.400000 1.350003 -18.200001 +v -0.400000 1.349999 -1.199998 +v -0.386370 1.453531 -18.200001 +v -0.386370 1.453527 -1.199998 +v -0.346410 1.550003 -18.200001 +v -0.346410 1.549999 -1.199998 +v -0.282843 1.632846 -18.200001 +v -0.282843 1.632842 -1.199998 +v -0.200000 1.696413 -18.200001 +v -0.200000 1.696410 -1.199998 +v -0.103528 1.736374 -18.200001 +v -0.103528 1.736370 -1.199998 +v 0.000000 1.850003 -15.850002 +v 0.129410 1.832966 -17.850002 +v 0.000000 1.850003 -17.850002 +v 0.129410 1.832966 -15.850002 +v 0.250000 1.783015 -17.850002 +v 0.250000 1.783015 -15.850002 +v 0.353553 1.703556 -17.850002 +v 0.353553 1.703556 -15.850002 +v 0.433013 1.600003 -17.850002 +v 0.433013 1.600003 -15.850002 +v 0.482963 1.479412 -17.850002 +v 0.482963 1.479412 -15.850002 +v 0.500000 1.350003 -17.850002 +v 0.500000 1.350003 -15.850002 +v 0.482963 1.220594 -17.850002 +v 0.482963 1.220594 -15.850002 +v 0.433013 1.100003 -17.850002 +v 0.433013 1.100003 -15.850002 +v 0.353554 0.996450 -17.850002 +v 0.353554 0.996450 -15.850002 +v 0.250000 0.916990 -17.850002 +v 0.250000 0.916990 -15.850002 +v 0.129410 0.867040 -17.850002 +v 0.129410 0.867040 -15.850002 +v 0.000000 0.850003 -17.850002 +v 0.000000 0.850003 -15.850002 +v -0.129409 0.867040 -17.850002 +v -0.129409 0.867040 -15.850002 +v -0.250000 0.916990 -17.850002 +v -0.250000 0.916990 -15.850002 +v -0.353553 0.996450 -17.850002 +v -0.353553 0.996449 -15.850002 +v -0.433013 1.100003 -17.850002 +v -0.433013 1.100003 -15.850002 +v -0.482963 1.220593 -17.850002 +v -0.482963 1.220593 -15.850002 +v -0.500000 1.350003 -17.850002 +v -0.500000 1.350002 -15.850002 +v -0.482963 1.479412 -17.850002 +v -0.482963 1.479412 -15.850002 +v -0.433013 1.600003 -17.850002 +v -0.433013 1.600003 -15.850002 +v -0.353554 1.703556 -17.850002 +v -0.353554 1.703556 -15.850002 +v -0.250000 1.783015 -17.850002 +v -0.250000 1.783015 -15.850002 +v -0.129410 1.832966 -17.850002 +v -0.129410 1.832966 -15.850002 +v 0.000000 1.850003 -15.400005 +v 0.129410 1.832966 -15.600006 +v 0.000000 1.850003 -15.600006 +v 0.129410 1.832966 -15.400005 +v 0.250000 1.783015 -15.600006 +v 0.250000 1.783015 -15.400005 +v 0.353553 1.703556 -15.600006 +v 0.353553 1.703556 -15.400005 +v 0.433013 1.600003 -15.600006 +v 0.433013 1.600003 -15.400005 +v 0.482963 1.479412 -15.600006 +v 0.482963 1.479412 -15.400005 +v 0.500000 1.350003 -15.600006 +v 0.500000 1.350003 -15.400005 +v 0.482963 1.220594 -15.600006 +v 0.482963 1.220594 -15.400005 +v 0.433013 1.100003 -15.600006 +v 0.433013 1.100003 -15.400005 +v 0.353554 0.996450 -15.600006 +v 0.353554 0.996450 -15.400005 +v 0.250000 0.916990 -15.600006 +v 0.250000 0.916990 -15.400005 +v 0.129410 0.867040 -15.600006 +v 0.129410 0.867040 -15.400005 +v 0.000000 0.850003 -15.600006 +v 0.000000 0.850003 -15.400005 +v -0.129409 0.867040 -15.600006 +v -0.129409 0.867040 -15.400005 +v -0.250000 0.916990 -15.600006 +v -0.250000 0.916990 -15.400005 +v -0.353553 0.996449 -15.600006 +v -0.353553 0.996449 -15.400005 +v -0.433013 1.100003 -15.600006 +v -0.433013 1.100003 -15.400005 +v -0.482963 1.220593 -15.600006 +v -0.482963 1.220593 -15.400005 +v -0.500000 1.350003 -15.600006 +v -0.500000 1.350003 -15.400005 +v -0.482963 1.479412 -15.600006 +v -0.482963 1.479412 -15.400005 +v -0.433013 1.600003 -15.600006 +v -0.433013 1.600003 -15.400005 +v -0.353554 1.703556 -15.600006 +v -0.353554 1.703556 -15.400005 +v -0.250000 1.783015 -15.600006 +v -0.250000 1.783015 -15.400005 +v -0.129410 1.832966 -15.600006 +v -0.129410 1.832966 -15.400005 +v 0.000000 1.850003 -15.050005 +v 0.129410 1.832966 -15.250006 +v 0.000000 1.850003 -15.250006 +v 0.129410 1.832966 -15.050005 +v 0.250000 1.783015 -15.250006 +v 0.250000 1.783015 -15.050005 +v 0.353553 1.703556 -15.250006 +v 0.353553 1.703556 -15.050005 +v 0.433013 1.600003 -15.250006 +v 0.433013 1.600003 -15.050005 +v 0.482963 1.479412 -15.250006 +v 0.482963 1.479412 -15.050005 +v 0.500000 1.350003 -15.250006 +v 0.500000 1.350003 -15.050005 +v 0.482963 1.220594 -15.250006 +v 0.482963 1.220594 -15.050005 +v 0.433013 1.100003 -15.250006 +v 0.433013 1.100003 -15.050005 +v 0.353554 0.996450 -15.250006 +v 0.353554 0.996450 -15.050005 +v 0.250000 0.916990 -15.250006 +v 0.250000 0.916990 -15.050005 +v 0.129410 0.867040 -15.250006 +v 0.129410 0.867040 -15.050005 +v 0.000000 0.850003 -15.250006 +v 0.000000 0.850003 -15.050005 +v -0.129409 0.867040 -15.250006 +v -0.129409 0.867040 -15.050005 +v -0.250000 0.916990 -15.250006 +v -0.250000 0.916990 -15.050005 +v -0.353553 0.996450 -15.250006 +v -0.353553 0.996450 -15.050005 +v -0.433013 1.100003 -15.250006 +v -0.433013 1.100003 -15.050005 +v -0.482963 1.220593 -15.250006 +v -0.482963 1.220593 -15.050005 +v -0.500000 1.350003 -15.250006 +v -0.500000 1.350003 -15.050005 +v -0.482963 1.479412 -15.250006 +v -0.482963 1.479412 -15.050005 +v -0.433013 1.600003 -15.250006 +v -0.433013 1.600003 -15.050005 +v -0.353554 1.703556 -15.250006 +v -0.353554 1.703556 -15.050005 +v -0.250000 1.783015 -15.250006 +v -0.250000 1.783015 -15.050005 +v -0.129410 1.832966 -15.250006 +v -0.129410 1.832966 -15.050005 +v 0.000000 1.850001 -10.700005 +v 0.129410 1.832966 -14.900005 +v 0.000000 1.850003 -14.900005 +v 0.129410 1.832963 -10.700005 +v 0.250000 1.783015 -14.900005 +v 0.250000 1.783013 -10.700005 +v 0.353553 1.703556 -14.900005 +v 0.353553 1.703553 -10.700005 +v 0.433013 1.600003 -14.900005 +v 0.433013 1.600001 -10.700005 +v 0.482963 1.479412 -14.900005 +v 0.482963 1.479409 -10.700005 +v 0.500000 1.350003 -14.900005 +v 0.500000 1.350001 -10.700005 +v 0.482963 1.220594 -14.900005 +v 0.482963 1.220591 -10.700005 +v 0.433013 1.100003 -14.900005 +v 0.433013 1.100001 -10.700005 +v 0.353554 0.996450 -14.900005 +v 0.353554 0.996448 -10.700005 +v 0.250000 0.916990 -14.900005 +v 0.250000 0.916987 -10.700005 +v 0.129410 0.867040 -14.900005 +v 0.129410 0.867037 -10.700005 +v 0.000000 0.850003 -14.900005 +v 0.000000 0.850001 -10.700005 +v -0.129409 0.867040 -14.900005 +v -0.129409 0.867037 -10.700005 +v -0.250000 0.916990 -14.900005 +v -0.250000 0.916987 -10.700005 +v -0.353553 0.996450 -14.900005 +v -0.353553 0.996446 -10.700005 +v -0.433013 1.100003 -14.900005 +v -0.433013 1.100001 -10.700005 +v -0.482963 1.220593 -14.900005 +v -0.482963 1.220590 -10.700005 +v -0.500000 1.350003 -14.900005 +v -0.500000 1.349999 -10.700005 +v -0.482963 1.479412 -14.900005 +v -0.482963 1.479409 -10.700005 +v -0.433013 1.600003 -14.900005 +v -0.433013 1.600001 -10.700005 +v -0.353554 1.703556 -14.900005 +v -0.353554 1.703553 -10.700005 +v -0.250000 1.783015 -14.900005 +v -0.250000 1.783013 -10.700005 +v -0.129410 1.832966 -14.900005 +v -0.129410 1.832963 -10.700005 +v 0.000000 2.880379 -19.500000 +v 0.303359 2.756258 -19.500000 +v 0.365776 2.674914 -19.500000 +v 0.401974 2.587524 -19.500000 +v 0.413496 2.500003 -19.500000 +v 0.401974 2.412482 -19.500000 +v 0.365776 2.325093 -19.500000 +v 0.303359 2.243749 -19.500000 +v 0.217114 2.177571 -19.500000 +v 0.113208 2.134532 -19.500000 +v 0.000000 2.119627 -19.500000 +v -0.113207 2.134532 -19.500000 +v -0.217114 2.177571 -19.500000 +v -0.303358 2.243749 -19.500000 +v -0.365776 2.325093 -19.500000 +v -0.401974 2.412482 -19.500000 +v -0.413496 2.500003 -19.500000 +v -0.401974 2.587524 -19.500000 +v -0.365776 2.674914 -19.500000 +v -0.303359 2.756258 -19.500000 +v -0.217115 2.822435 -19.500000 +v -0.113208 2.865475 -19.500000 +v -0.303359 2.756227 -4.500000 +v -0.217115 2.822405 -4.500000 +v -0.303358 2.243718 -4.500000 +v -0.365776 2.325062 -4.500000 +v 0.303359 2.243718 -4.500000 +v 0.217114 2.822405 -4.500000 +v -0.401974 2.412452 -4.500000 +v 0.217114 2.177541 -4.500000 +v 0.303359 2.756227 -4.500000 +v -0.413496 2.499972 -4.500000 +v 0.113208 2.134501 -4.500000 +v 0.365776 2.674883 -4.500000 +v -0.401974 2.587493 -4.500000 +v 0.000000 2.119597 -4.500000 +v 0.401974 2.587494 -4.500000 +v -0.365776 2.674883 -4.500000 +v -0.113207 2.134501 -4.500000 +v 0.413496 2.499973 -4.500000 +v -0.217114 2.177540 -4.500000 +v 0.401974 2.412452 -4.500000 +v 0.000000 2.880348 -4.500000 +v 0.365776 2.325063 -4.500000 +v -0.113208 2.865444 -4.500000 +v -0.247487 1.597490 -19.187502 +v -0.755718 0.647394 5.837500 +v 0.755718 -2.527644 7.135499 +v -0.755718 -2.527644 7.135499 +v -0.755718 -0.180467 8.289835 +v -0.859447 -0.780915 8.274623 +v -0.755718 -0.780915 8.274623 +v -0.755718 -3.377863 7.013356 +v 0.755718 -3.377863 7.013356 +v -0.755718 -2.987607 8.437500 +v 0.755718 -2.987607 8.437500 +v 0.755718 -2.817606 9.400000 +v 0.755718 -2.464953 7.305608 +v 0.860460 -3.026299 7.224965 +v 0.755718 -3.026299 7.224965 +v -0.755718 -0.688223 8.418876 +v 0.755718 -0.688223 8.418876 +v 0.755718 0.185424 9.259533 +v -0.755718 0.582394 8.302500 +v -0.755718 0.185424 9.259533 +v -0.755718 -0.369988 8.426938 +v 0.755718 -0.369988 8.426938 +v 0.755718 0.582394 8.302500 +v -1.000000 2.933334 -1.071110 +v -1.000000 0.800000 -1.699999 +v -1.000000 0.780398 -0.913832 +v 1.000000 0.800000 -1.699999 +v 1.000000 2.933334 -1.699999 +v 1.000000 1.698309 -0.676977 +v 1.000000 2.933304 -1.071133 +v -1.000000 2.933334 -1.699999 +v 1.000000 0.650225 4.306945 +v -1.000000 0.550646 8.300697 +v -1.000000 0.650225 4.306945 +v 1.000000 0.550646 8.300697 +v -1.000000 -3.878247 18.970343 +v 1.000000 2.932952 6.299709 +v 1.000000 -3.878247 18.970343 +v -1.000000 0.817814 19.398920 +v 1.000000 1.917567 8.277368 +v 1.155736 2.325624 6.986647 +v 1.000000 2.325624 6.986647 +v -1.000000 2.237243 7.108925 +v -1.185947 2.308128 6.984412 +v -1.000000 2.308128 6.984412 +v 1.000000 2.123852 8.290171 +v -1.000000 2.123852 8.290171 +v -1.000000 2.933334 6.300001 +v 1.000000 2.527876 7.012211 +v -0.750000 3.200001 3.750000 +v -0.750000 2.900000 -1.750000 +v -0.750000 2.900000 3.750000 +v 0.750000 3.200001 -1.750000 +v 0.750000 2.900000 3.750000 +v 0.750000 2.900000 -1.750000 +v 0.750000 3.200001 3.750000 +v -0.750000 3.200001 -1.750000 +v -0.250000 0.652645 5.427117 +v 0.250000 0.640000 5.690244 +v 0.250000 0.652645 5.427117 +v -0.250000 0.256794 5.586637 +v 0.250000 -0.181354 5.410000 +v -0.250000 -0.181354 5.410000 +v -0.250000 -0.031450 5.624102 +v 0.250000 0.160424 5.735405 +v 0.250000 -0.031450 5.624102 +v 0.250000 0.405741 5.904014 +v 0.250000 0.256794 5.586637 +v -0.250000 0.640000 5.690244 +v 0.250000 0.606441 5.842027 +v -0.250000 0.405741 5.904014 +v -0.250000 0.160424 5.735405 +v -0.250000 0.606441 5.842027 +v -0.500000 0.660000 2.970000 +v 0.500000 0.660000 4.294731 +v 0.500000 0.660000 2.970000 +v 0.500000 0.324113 3.675095 +v -0.500000 0.324113 3.675095 +v -0.500000 0.660000 4.294731 +v 0.500000 0.509328 4.170000 +v -0.500000 -0.124560 4.074054 +v 0.500000 -0.124560 4.074054 +v -0.500000 0.346295 4.124543 +v 0.500000 0.346295 4.124543 +v 0.500000 0.069553 4.199328 +v -0.500000 0.069553 4.199328 +v -0.500000 -0.236114 4.310554 +v 0.500000 -0.146776 4.438249 +v -0.500000 -0.351705 5.529659 +v 0.500000 -0.322895 4.675695 +v 0.500000 -0.351705 5.529659 +v -0.500000 -0.322895 4.675695 +v 0.500000 -0.236114 4.310554 +v 0.500000 -0.262769 5.520746 +v -0.500000 -0.146776 4.438249 +v -0.500000 -0.262769 5.520746 +v -0.500000 -0.202867 5.844228 +v 0.500000 -0.202867 5.844228 +v 0.500000 -0.157875 5.763871 +v -0.500000 0.158226 6.022319 +v 0.500000 0.158226 6.022319 +v -0.500000 0.239107 5.983576 +v 0.500000 0.239107 5.983576 +v -0.500000 -0.157875 5.763871 +v -0.750000 2.930000 6.000000 +v -0.500000 3.441713 5.759016 +v -0.750000 3.441713 5.759016 +v 0.750000 3.441713 5.759016 +v 0.750000 2.930000 6.000000 +v 0.750000 3.523953 4.644016 +v 0.750000 2.930000 3.800829 +v 0.500000 2.930000 6.000000 +v 0.500000 2.930000 3.800829 +v 0.500000 3.427887 3.897640 +v -0.750000 3.830230 5.170968 +v -0.500000 3.823139 5.393547 +v -0.500000 3.830230 5.170968 +v 0.500000 3.523953 4.644016 +v -0.750000 3.523953 4.644016 +v 0.500000 3.823139 5.393547 +v 0.750000 3.823139 5.393547 +v 0.500000 3.830230 5.170968 +v 0.750000 3.830230 5.170968 +v -0.500000 3.523953 4.644016 +v -0.496667 3.427887 3.897640 +v -0.500000 3.427887 3.897640 +v -0.750000 3.427887 3.897640 +v -0.500000 2.930000 3.800829 +v -0.750000 2.930000 3.800829 +v -0.500000 2.930000 6.000000 +v 0.496667 2.930000 3.800829 +v -0.750000 3.823139 5.393547 +v 0.500000 3.441713 5.759016 +v -0.496667 2.930000 3.800829 +v -0.496667 3.523953 4.644016 +v -1.000000 -3.606867 18.872658 +v -1.000000 0.608680 19.257383 +v -1.000000 1.899714 8.276260 +v -1.000000 0.761976 8.347678 +v -1.000000 2.527876 7.012211 +v -1.185947 1.899714 8.276260 +v -1.185947 2.237243 7.108925 +v -1.185947 0.761976 8.347678 +v -1.185947 0.608680 19.257383 +v -1.185947 -3.606867 18.872658 +v 1.000000 2.293221 7.043643 +v 1.000000 -3.628483 18.880440 +v 1.000000 0.817814 19.398920 +v 1.000000 0.745147 8.343928 +v 1.000000 0.625337 19.268656 +v 1.155736 0.745147 8.343928 +v 1.155736 2.293221 7.043643 +v 1.155736 1.917567 8.277368 +v 1.155736 -3.628483 18.880440 +v 1.155736 0.625337 19.268656 +v -0.755718 0.375138 6.127107 +v -0.755718 -2.470537 7.290457 +v -0.755718 -3.057612 7.206118 +v -0.755718 -2.724833 8.420519 +v -0.755718 -2.602371 9.113867 +v -0.755718 -2.817606 9.400000 +v -0.755718 0.126025 8.749284 +v -0.755718 0.318211 8.285953 +v -0.859447 0.375138 6.127107 +v -0.859447 -2.470537 7.290457 +v -0.859447 -2.724833 8.420519 +v -0.859447 0.318211 8.285953 +v -0.859447 -0.180467 8.289835 +v -0.859447 -2.602371 9.113867 +v -0.859447 0.126025 8.749284 +v -0.859447 -3.057612 7.206118 +v 0.755718 0.348518 6.155423 +v 0.755718 0.292380 8.284335 +v 0.755718 0.647394 5.837500 +v 0.755718 -2.581326 9.085890 +v 0.755718 -2.699138 8.418859 +v 0.755718 0.120217 8.699394 +v 0.755718 -0.789979 8.260518 +v 0.755718 -0.161936 8.276430 +v 0.860460 -0.789979 8.260518 +v 0.860460 -2.699138 8.418859 +v 0.860460 -2.464953 7.305608 +v 0.860460 0.292380 8.284335 +v 0.860460 -0.161936 8.276430 +v 0.860460 -2.581326 9.085890 +v 0.860460 0.348518 6.155423 +v 0.860460 0.120217 8.699394 +v 1.000000 2.933104 3.105046 +v -1.000000 2.933334 3.105221 +v 1.000000 0.780398 -0.913832 +v 1.000000 1.335998 -0.650505 +v 0.788792 1.270460 2.926924 +v 1.000000 1.270460 2.928254 +v 1.000000 2.371172 -0.726139 +v 1.000000 2.370995 2.978774 +v 0.788792 1.698309 -0.676977 +v 0.788792 2.370995 2.978774 +v 0.788792 1.666737 2.926896 +v 0.988511 1.668191 5.137841 +v 0.777303 1.668191 5.136976 +v 0.788792 2.371172 -0.726139 +v 0.788792 1.335998 -0.650505 +v 1.000000 1.666737 2.927761 +v 0.777303 1.271914 5.137004 +v 0.988511 1.271914 5.138335 +v -0.500000 0.509328 4.170000 +v 0.750000 3.427887 3.897640 +v -0.496667 3.823139 5.393547 +v -0.496667 3.830230 5.170968 +v 0.212415 3.387585 5.190104 +v 0.249773 3.433107 5.409896 +v 0.212415 3.387585 5.409896 +v 0.249773 3.433107 5.190104 +v 0.277533 3.485042 5.409896 +v 0.277533 3.485042 5.190104 +v 0.294628 3.541395 5.409896 +v 0.294628 3.541395 5.190104 +v 0.300400 3.600000 5.409896 +v 0.300400 3.600000 5.190104 +v 0.294628 3.658605 5.409896 +v 0.294628 3.658605 5.190104 +v 0.277533 3.714958 5.409896 +v 0.277533 3.714958 5.190104 +v 0.249773 3.766893 5.409896 +v 0.249773 3.766893 5.190104 +v 0.212415 3.812415 5.409896 +v 0.212415 3.812415 5.190104 +v 0.166893 3.849773 5.409896 +v 0.166893 3.849773 5.190104 +v 0.114958 3.877533 5.409896 +v 0.114958 3.877533 5.190104 +v 0.058605 3.894628 5.409896 +v 0.058605 3.894628 5.190104 +v 0.000000 3.900400 5.409896 +v 0.000000 3.900400 5.190104 +v -0.058605 3.894628 5.409896 +v -0.058605 3.894628 5.190104 +v -0.114958 3.877533 5.409896 +v -0.114958 3.877533 5.190104 +v -0.166893 3.849773 5.409896 +v -0.166893 3.849773 5.190104 +v -0.212415 3.812415 5.409896 +v -0.212415 3.812415 5.190104 +v -0.249773 3.766893 5.409896 +v -0.249773 3.766893 5.190104 +v -0.277533 3.714958 5.409896 +v -0.277533 3.714958 5.190104 +v -0.294628 3.658605 5.409896 +v -0.294628 3.658605 5.190104 +v -0.300400 3.600000 5.409896 +v -0.300400 3.600000 5.190104 +v -0.294628 3.541395 5.409896 +v -0.294628 3.541395 5.190104 +v -0.277533 3.485042 5.409896 +v -0.277533 3.485042 5.190104 +v -0.249773 3.433107 5.409896 +v -0.249773 3.433107 5.190104 +v -0.212414 3.387585 5.409896 +v 0.146217 3.453784 5.190104 +v 0.171933 3.485118 5.410770 +v 0.171933 3.485118 5.190104 +v 0.202808 3.559659 5.190104 +v 0.191041 3.520868 5.190104 +v 0.206782 3.600000 5.190104 +v 0.202808 3.640341 5.190104 +v 0.171933 3.714882 5.190104 +v 0.191041 3.679132 5.190104 +v 0.146217 3.746217 5.190104 +v 0.114882 3.771933 5.190104 +v 0.040341 3.802808 5.190104 +v 0.079132 3.791041 5.190104 +v 0.000000 3.806782 5.190104 +v -0.040341 3.802808 5.190104 +v -0.114882 3.771933 5.190104 +v -0.079132 3.791041 5.190104 +v -0.146217 3.746217 5.190104 +v -0.171933 3.714881 5.190104 +v -0.202808 3.640341 5.190104 +v -0.191041 3.679132 5.190104 +v -0.206782 3.600000 5.190104 +v -0.202808 3.559659 5.190104 +v -0.191041 3.520868 5.190104 +v -0.171932 3.485118 5.190104 +v -0.212414 3.387585 5.190104 +v -0.040341 3.397192 5.190104 +v 0.000000 3.393219 5.410770 +v 0.000000 3.393219 5.190104 +v -0.114882 3.771933 5.410770 +v 0.191041 3.520868 5.410770 +v -0.146217 3.746217 5.410770 +v 0.202808 3.559659 5.410770 +v -0.171933 3.714881 5.410770 +v 0.206782 3.600000 5.410770 +v -0.191041 3.679132 5.410770 +v 0.202808 3.640341 5.410770 +v -0.202808 3.640341 5.410770 +v 0.191041 3.679132 5.410770 +v -0.206781 3.600000 5.410770 +v 0.171933 3.714882 5.410770 +v -0.202808 3.559659 5.410770 +v 0.146217 3.746217 5.410770 +v -0.191041 3.520868 5.410770 +v 0.114882 3.771933 5.410770 +v -0.171932 3.485118 5.410770 +v 0.079132 3.791041 5.410770 +v 0.040341 3.397192 5.410770 +v 0.040341 3.397192 5.190104 +v -0.146216 3.453783 5.410770 +v -0.146216 3.453783 5.190104 +v 0.040341 3.802808 5.410770 +v 0.079132 3.408959 5.410770 +v 0.079132 3.408959 5.190104 +v -0.114881 3.428067 5.410770 +v -0.114881 3.428067 5.190104 +v 0.000000 3.806782 5.410770 +v 0.114882 3.428067 5.410770 +v 0.114882 3.428067 5.190104 +v -0.079132 3.408959 5.410770 +v -0.079132 3.408959 5.190104 +v -0.040341 3.802808 5.410770 +v 0.146217 3.453784 5.410770 +v -0.040341 3.397192 5.410770 +v -0.079132 3.791041 5.410770 +v 0.169977 3.486425 5.409896 +v 0.188868 3.521768 5.409896 +v 0.200501 3.560118 5.409896 +v 0.204429 3.600000 5.409896 +v 0.200501 3.639882 5.409896 +v 0.188868 3.678232 5.409896 +v 0.169977 3.713575 5.409896 +v 0.144553 3.744553 5.409896 +v 0.113575 3.769977 5.409896 +v 0.078232 3.788868 5.409896 +v 0.039882 3.800501 5.409896 +v 0.000000 3.804429 5.409896 +v -0.039882 3.800501 5.409896 +v -0.078232 3.788868 5.409896 +v -0.113575 3.769977 5.409896 +v -0.144553 3.744553 5.409896 +v -0.169977 3.713575 5.409896 +v -0.188868 3.678231 5.409896 +v -0.200501 3.639882 5.409896 +v -0.204429 3.600000 5.409896 +v -0.200501 3.560118 5.409896 +v -0.188868 3.521768 5.409896 +v -0.169977 3.486425 5.409896 +v -0.144553 3.455447 5.409896 +v -0.499854 3.387367 5.661843 +v -0.499854 2.912633 4.938158 +v -0.499854 2.912633 5.661843 +v -0.499854 3.387367 4.938158 +v 0.519854 2.912633 4.938158 +v 0.519854 3.387367 4.938158 +v 0.519854 2.912633 5.661843 +v 0.519854 3.387367 5.661843 +v 0.212149 3.387367 5.409896 +v 0.212149 3.387367 5.190104 +v -0.212149 3.387367 5.190104 +v -0.212149 3.387367 5.409896 +v 0.000000 3.387367 5.190104 +v 0.042295 3.387367 5.190104 +v 0.088076 3.387367 5.190104 +v 0.142077 3.387367 5.190104 +v -0.142076 3.387367 5.190104 +v -0.088075 3.387367 5.190104 +v -0.042295 3.387367 5.190104 +v 0.039882 3.399499 5.409896 +v 0.000000 3.387367 5.409896 +v 0.042295 3.387367 5.409896 +v 0.078232 3.411132 5.409896 +v 0.088076 3.387367 5.409896 +v 0.113575 3.430023 5.409896 +v 0.142077 3.387367 5.409896 +v 0.144553 3.455447 5.409896 +v -0.088075 3.387367 5.409896 +v -0.113575 3.430023 5.409896 +v -0.142076 3.387367 5.409896 +v -0.042295 3.387367 5.409896 +v -0.078231 3.411132 5.409896 +v -0.039882 3.399499 5.409896 +v 0.000000 3.395571 5.409896 +v -0.285753 2.876174 -17.583353 +v -0.206993 3.392601 -18.284744 +v -0.285753 2.876174 -18.899897 +v 0.285753 2.876174 -18.899897 +v 0.206993 3.392601 -18.284744 +v 0.285753 2.876174 -17.583353 +v 0.206993 3.392601 -17.955841 +v -0.052052 3.504859 -18.120081 +v -0.045935 3.600579 -18.259661 +v -0.052052 3.504859 -18.269205 +v 0.052052 3.504859 -18.269205 +v 0.045935 3.600579 -18.259661 +v 0.052052 3.504859 -18.120081 +v 0.045935 3.600579 -18.122107 +v 0.063413 3.327094 -18.286932 +v -0.063413 3.327094 -18.116322 +v -0.063413 3.327094 -18.286932 +v 0.063413 3.327094 -18.116322 +v -0.197447 3.270684 -17.965662 +v -0.287607 3.625364 -18.247025 +v -0.197447 3.270684 -18.300558 +v -0.199752 3.652224 -18.247025 +v -0.076163 3.307764 -18.300558 +v -0.076163 3.307764 -17.965662 +v -0.199752 3.652224 -17.977015 +v 0.076163 3.307764 -17.965847 +v 0.199752 3.652224 -18.246998 +v 0.076163 3.307764 -18.300491 +v 0.197447 3.270684 -18.300491 +v 0.287607 3.625364 -18.246998 +v 0.197447 3.270684 -17.965847 +v 0.287607 3.625364 -17.977190 +v -0.206993 3.392601 -17.955841 +v -0.045935 3.600579 -18.122107 +v -0.287607 3.625364 -17.977015 +v 0.199752 3.652224 -17.977190 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.968169 +vt 0.415780 0.982469 +vt 0.498282 0.968169 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.470782 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.470782 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.470782 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.470782 0.939568 +vt 0.443281 0.939617 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.435064 0.853152 +vt 0.419806 0.853152 +vt 0.557124 0.853152 +vt 0.572381 0.891623 +vt 0.557124 0.828152 +vt 0.572381 0.828152 +vt 0.557124 0.891623 +vt 0.541866 0.828152 +vt 0.541866 0.891623 +vt 0.526609 0.828152 +vt 0.526609 0.891623 +vt 0.511351 0.828152 +vt 0.511351 0.891623 +vt 0.496094 0.828152 +vt 0.496094 0.891623 +vt 0.480836 0.828152 +vt 0.480836 0.891623 +vt 0.465579 0.828152 +vt 0.465579 0.891623 +vt 0.450321 0.828152 +vt 0.450321 0.891623 +vt 0.435064 0.828152 +vt 0.435064 0.891623 +vt 0.419806 0.828152 +vt 0.572381 0.916623 +vt 0.572381 0.853152 +vt 0.526609 0.916623 +vt 0.541866 0.916623 +vt 0.465579 0.916623 +vt 0.541866 0.853152 +vt 0.450321 0.853152 +vt 0.526609 0.853152 +vt 0.465579 0.853152 +vt 0.511351 0.853152 +vt 0.496094 0.853152 +vt 0.480836 0.853152 +vt 0.419806 0.891623 +vt 0.419806 0.916623 +vt 0.557124 0.916623 +vt 0.435064 0.916623 +vt 0.450321 0.916623 +vt 0.480836 0.916623 +vt 0.496094 0.916623 +vt 0.511351 0.916623 +vt 0.603611 0.962891 +vt 0.600511 0.943544 +vt 0.603611 0.943544 +vt 0.600511 0.962891 +vt 0.597411 0.943544 +vt 0.597411 0.962891 +vt 0.594310 0.943544 +vt 0.594310 0.962891 +vt 0.591210 0.943544 +vt 0.591210 0.962891 +vt 0.588109 0.943544 +vt 0.588109 0.962891 +vt 0.585009 0.943544 +vt 0.585009 0.962891 +vt 0.581908 0.943544 +vt 0.581908 0.962891 +vt 0.578808 0.943544 +vt 0.578808 0.962891 +vt 0.575707 0.943544 +vt 0.575707 0.962891 +vt 0.572607 0.943544 +vt 0.572607 0.962891 +vt 0.569507 0.943544 +vt 0.569507 0.962891 +vt 0.566406 0.943544 +vt 0.566406 0.962891 +vt 0.563306 0.943544 +vt 0.563306 0.962891 +vt 0.560205 0.943544 +vt 0.560205 0.962891 +vt 0.557105 0.943544 +vt 0.557105 0.962891 +vt 0.554004 0.943544 +vt 0.554004 0.962891 +vt 0.550904 0.943544 +vt 0.550904 0.962891 +vt 0.547804 0.943544 +vt 0.547804 0.962891 +vt 0.544703 0.943544 +vt 0.544703 0.962891 +vt 0.541603 0.943544 +vt 0.541603 0.962891 +vt 0.538502 0.943544 +vt 0.538502 0.962891 +vt 0.535402 0.943544 +vt 0.556733 0.950828 +vt 0.565662 0.958871 +vt 0.556733 0.966913 +vt 0.535402 0.962891 +vt 0.532301 0.943544 +vt 0.532301 0.962891 +vt 0.529201 0.943544 +vt 0.592763 0.964859 +vt 0.589052 0.965659 +vt 0.589052 0.965659 +vt 0.603611 0.987891 +vt 0.594310 0.968544 +vt 0.603611 0.968544 +vt 0.594310 0.987891 +vt 0.585009 0.968544 +vt 0.585009 0.987891 +vt 0.575707 0.968544 +vt 0.575707 0.987891 +vt 0.566406 0.968544 +vt 0.566406 0.987891 +vt 0.557105 0.968544 +vt 0.557105 0.987891 +vt 0.547804 0.968544 +vt 0.565662 0.958871 +vt 0.547804 0.968157 +vt 0.529945 0.958871 +vt 0.547804 0.987891 +vt 0.538502 0.968544 +vt 0.538502 0.987891 +vt 0.529201 0.968544 +vt 0.597637 0.952304 +vt 0.572381 0.952304 +vt 0.572381 0.965437 +vt 0.547804 0.968157 +vt 0.554118 0.962154 +vt 0.560431 0.965437 +vt 0.556733 0.958871 +vt 0.565662 0.958871 +vt 0.554118 0.955587 +vt 0.560431 0.952304 +vt 0.547804 0.949584 +vt 0.547804 0.954228 +vt 0.535176 0.952304 +vt 0.541490 0.955587 +vt 0.529945 0.958871 +vt 0.538874 0.958871 +vt 0.535176 0.965437 +vt 0.541490 0.962154 +vt 0.575707 0.987891 +vt 0.585009 0.983745 +vt 0.575707 0.983745 +vt 0.566406 0.987891 +vt 0.566406 0.983745 +vt 0.529201 0.987891 +vt 0.538502 0.983745 +vt 0.529201 0.983745 +vt 0.594310 0.987891 +vt 0.603611 0.983745 +vt 0.594310 0.983745 +vt 0.585009 0.987891 +vt 0.557105 0.987891 +vt 0.557105 0.983745 +vt 0.603611 0.987891 +vt 0.600511 0.968544 +vt 0.603611 0.968544 +vt 0.600511 0.987891 +vt 0.597411 0.968544 +vt 0.597411 0.987891 +vt 0.594310 0.968544 +vt 0.594310 0.987891 +vt 0.591210 0.968544 +vt 0.591210 0.987891 +vt 0.588109 0.968544 +vt 0.588109 0.987891 +vt 0.585009 0.968544 +vt 0.585009 0.987891 +vt 0.581908 0.968544 +vt 0.581908 0.987891 +vt 0.578808 0.968544 +vt 0.578808 0.987891 +vt 0.575707 0.968544 +vt 0.575707 0.987891 +vt 0.572607 0.968544 +vt 0.572607 0.987891 +vt 0.569507 0.968544 +vt 0.569507 0.987891 +vt 0.566406 0.968544 +vt 0.566406 0.987891 +vt 0.563306 0.968544 +vt 0.563306 0.987891 +vt 0.560205 0.968544 +vt 0.560205 0.987891 +vt 0.557105 0.968544 +vt 0.557105 0.987891 +vt 0.554004 0.968544 +vt 0.554004 0.987891 +vt 0.550904 0.968544 +vt 0.550904 0.987891 +vt 0.547804 0.968544 +vt 0.547804 0.987891 +vt 0.544703 0.968544 +vt 0.544703 0.987891 +vt 0.541603 0.968544 +vt 0.541603 0.987891 +vt 0.538502 0.968544 +vt 0.538502 0.987891 +vt 0.535402 0.968544 +vt 0.529945 0.958871 +vt 0.556733 0.950828 +vt 0.556733 0.966913 +vt 0.535402 0.987891 +vt 0.532301 0.968544 +vt 0.532301 0.987891 +vt 0.529201 0.968544 +vt 0.567759 0.961274 +vt 0.580387 0.967841 +vt 0.602259 0.956467 +vt 0.603611 0.962891 +vt 0.600511 0.943544 +vt 0.603611 0.943544 +vt 0.600511 0.962891 +vt 0.597411 0.943544 +vt 0.597411 0.962891 +vt 0.594310 0.943544 +vt 0.594310 0.962891 +vt 0.591210 0.943544 +vt 0.591210 0.962891 +vt 0.588109 0.943544 +vt 0.588109 0.962891 +vt 0.585009 0.943544 +vt 0.585009 0.962891 +vt 0.581908 0.943544 +vt 0.581908 0.962891 +vt 0.578808 0.943544 +vt 0.578808 0.962891 +vt 0.575707 0.943544 +vt 0.575707 0.962891 +vt 0.572607 0.943544 +vt 0.572607 0.962891 +vt 0.569507 0.943544 +vt 0.569507 0.962891 +vt 0.566406 0.943544 +vt 0.566406 0.962891 +vt 0.563306 0.943544 +vt 0.563306 0.962891 +vt 0.560205 0.943544 +vt 0.560205 0.962891 +vt 0.557105 0.943544 +vt 0.557105 0.962891 +vt 0.554004 0.943544 +vt 0.554004 0.962891 +vt 0.550904 0.943544 +vt 0.550904 0.962891 +vt 0.547804 0.943544 +vt 0.547804 0.962891 +vt 0.544703 0.943544 +vt 0.544703 0.962891 +vt 0.541603 0.943544 +vt 0.541603 0.962891 +vt 0.538502 0.943544 +vt 0.538502 0.962891 +vt 0.535402 0.943544 +vt 0.556733 0.950828 +vt 0.565662 0.958871 +vt 0.556733 0.966913 +vt 0.535402 0.962891 +vt 0.532301 0.943544 +vt 0.532301 0.962891 +vt 0.529201 0.943544 +vt 0.572381 0.952304 +vt 0.567759 0.961274 +vt 0.580387 0.967841 +vt 0.603611 0.987891 +vt 0.600511 0.968544 +vt 0.603611 0.968544 +vt 0.600511 0.987891 +vt 0.597411 0.968544 +vt 0.597411 0.987891 +vt 0.594310 0.968544 +vt 0.594310 0.987891 +vt 0.591210 0.968544 +vt 0.591210 0.987891 +vt 0.588109 0.968544 +vt 0.588109 0.987891 +vt 0.585009 0.968544 +vt 0.585009 0.987891 +vt 0.581908 0.968544 +vt 0.581908 0.987891 +vt 0.578808 0.968544 +vt 0.578808 0.987891 +vt 0.575707 0.968544 +vt 0.575707 0.987891 +vt 0.572607 0.968544 +vt 0.572607 0.987891 +vt 0.569507 0.968544 +vt 0.569507 0.987891 +vt 0.566406 0.968544 +vt 0.566406 0.987891 +vt 0.563306 0.968544 +vt 0.563306 0.987891 +vt 0.560205 0.968544 +vt 0.560205 0.987891 +vt 0.557105 0.968544 +vt 0.557105 0.987891 +vt 0.554004 0.968544 +vt 0.554004 0.987891 +vt 0.550904 0.968544 +vt 0.550904 0.987891 +vt 0.547804 0.968544 +vt 0.547804 0.987891 +vt 0.544703 0.968544 +vt 0.544703 0.987891 +vt 0.541603 0.968544 +vt 0.541603 0.987891 +vt 0.538502 0.968544 +vt 0.538502 0.987891 +vt 0.535402 0.968544 +vt 0.556733 0.950828 +vt 0.565662 0.958871 +vt 0.556733 0.966913 +vt 0.535402 0.987891 +vt 0.532301 0.968544 +vt 0.532301 0.987891 +vt 0.529201 0.968544 +vt 0.572381 0.952304 +vt 0.567759 0.961274 +vt 0.580387 0.967841 +vt 0.603611 0.987891 +vt 0.600511 0.968544 +vt 0.603611 0.968544 +vt 0.600511 0.987891 +vt 0.597411 0.968544 +vt 0.597411 0.987891 +vt 0.594310 0.968544 +vt 0.594310 0.987891 +vt 0.591210 0.968544 +vt 0.591210 0.987891 +vt 0.588109 0.968544 +vt 0.588109 0.987891 +vt 0.585009 0.968544 +vt 0.585009 0.987891 +vt 0.581908 0.968544 +vt 0.581908 0.987891 +vt 0.578808 0.968544 +vt 0.578808 0.987891 +vt 0.575707 0.968544 +vt 0.575707 0.987891 +vt 0.572607 0.968544 +vt 0.572607 0.987891 +vt 0.569507 0.968544 +vt 0.569507 0.987891 +vt 0.566406 0.968544 +vt 0.566406 0.987891 +vt 0.563306 0.968544 +vt 0.563306 0.987891 +vt 0.560205 0.968544 +vt 0.560205 0.987891 +vt 0.557105 0.968544 +vt 0.557105 0.987891 +vt 0.554004 0.968544 +vt 0.554004 0.987891 +vt 0.550904 0.968544 +vt 0.550904 0.987891 +vt 0.547804 0.968544 +vt 0.547804 0.987891 +vt 0.544703 0.968544 +vt 0.544703 0.987891 +vt 0.541603 0.968544 +vt 0.541603 0.987891 +vt 0.538502 0.968544 +vt 0.538502 0.987891 +vt 0.535402 0.968544 +vt 0.556733 0.950828 +vt 0.565662 0.958871 +vt 0.556733 0.966913 +vt 0.535402 0.987891 +vt 0.532301 0.968544 +vt 0.532301 0.987891 +vt 0.529201 0.968544 +vt 0.572381 0.952304 +vt 0.567759 0.961274 +vt 0.580387 0.967841 +vt 0.603611 0.962891 +vt 0.600511 0.943544 +vt 0.603611 0.943544 +vt 0.600511 0.962891 +vt 0.597411 0.943544 +vt 0.597411 0.962891 +vt 0.594310 0.943544 +vt 0.594310 0.962891 +vt 0.591210 0.943544 +vt 0.591210 0.962891 +vt 0.588109 0.943544 +vt 0.588109 0.962891 +vt 0.585009 0.943544 +vt 0.585009 0.962891 +vt 0.581908 0.943544 +vt 0.581908 0.962891 +vt 0.578808 0.943544 +vt 0.578808 0.962891 +vt 0.575707 0.943544 +vt 0.575707 0.962891 +vt 0.572607 0.943544 +vt 0.572607 0.962891 +vt 0.569507 0.943544 +vt 0.569507 0.962891 +vt 0.566406 0.943544 +vt 0.566406 0.962891 +vt 0.563306 0.943544 +vt 0.563306 0.962891 +vt 0.560205 0.943544 +vt 0.560205 0.962891 +vt 0.557105 0.943544 +vt 0.557105 0.962891 +vt 0.554004 0.943544 +vt 0.554004 0.962891 +vt 0.550904 0.943544 +vt 0.550904 0.962891 +vt 0.547804 0.943544 +vt 0.547804 0.962891 +vt 0.544703 0.943544 +vt 0.544703 0.962891 +vt 0.541603 0.943544 +vt 0.541603 0.962891 +vt 0.538502 0.943544 +vt 0.538502 0.962891 +vt 0.535402 0.943544 +vt 0.556733 0.950828 +vt 0.565662 0.958871 +vt 0.556733 0.966913 +vt 0.535402 0.962891 +vt 0.532301 0.943544 +vt 0.532301 0.962891 +vt 0.529201 0.943544 +vt 0.572381 0.952304 +vt 0.567759 0.961274 +vt 0.580387 0.967841 +vt 0.585009 0.965935 +vt 0.589631 0.967841 +vt 0.593938 0.966913 +vt 0.597637 0.965437 +vt 0.595844 0.963630 +vt 0.600475 0.963514 +vt 0.598073 0.962119 +vt 0.602259 0.961274 +vt 0.599366 0.960496 +vt 0.602867 0.958871 +vt 0.599778 0.958871 +vt 0.599366 0.957245 +vt 0.602259 0.956467 +vt 0.598073 0.955622 +vt 0.600475 0.954228 +vt 0.595844 0.954111 +vt 0.597637 0.952304 +vt 0.592763 0.952882 +vt 0.593938 0.950828 +vt 0.589052 0.952082 +vt 0.589631 0.949901 +vt 0.585009 0.951806 +vt 0.585009 0.949584 +vt 0.580387 0.949901 +vt 0.580965 0.952082 +vt 0.576080 0.950828 +vt 0.577254 0.952882 +vt 0.572381 0.952304 +vt 0.574174 0.954111 +vt 0.569543 0.954228 +vt 0.571944 0.955622 +vt 0.567759 0.956467 +vt 0.570651 0.957245 +vt 0.567150 0.958871 +vt 0.570240 0.958871 +vt 0.570651 0.960496 +vt 0.567759 0.961274 +vt 0.571944 0.962119 +vt 0.569543 0.963514 +vt 0.574174 0.963630 +vt 0.572381 0.965437 +vt 0.577254 0.964859 +vt 0.576079 0.966913 +vt 0.580965 0.965659 +vt 0.580387 0.967841 +vt 0.585009 0.968157 +vt 0.574174 0.963630 +vt 0.577254 0.964859 +vt 0.574174 0.954111 +vt 0.571944 0.955622 +vt 0.595844 0.954111 +vt 0.592763 0.964859 +vt 0.570651 0.957245 +vt 0.592763 0.952882 +vt 0.595844 0.963630 +vt 0.570240 0.958871 +vt 0.589052 0.952082 +vt 0.598073 0.962119 +vt 0.570651 0.960496 +vt 0.585009 0.951806 +vt 0.599366 0.960496 +vt 0.571944 0.962119 +vt 0.580965 0.952082 +vt 0.599778 0.958871 +vt 0.577254 0.952882 +vt 0.599366 0.957245 +vt 0.585009 0.965935 +vt 0.598073 0.955622 +vt 0.580965 0.965659 +vt 0.538502 0.987891 +vt 0.552426 0.967841 +vt 0.547804 0.968157 +vt 0.543181 0.967841 +vt 0.538874 0.966913 +vt 0.535176 0.965437 +vt 0.532338 0.963514 +vt 0.530554 0.961274 +vt 0.529945 0.958871 +vt 0.530554 0.956467 +vt 0.532338 0.954228 +vt 0.535176 0.952304 +vt 0.538874 0.950828 +vt 0.543181 0.949901 +vt 0.547804 0.949584 +vt 0.552426 0.949901 +vt 0.560431 0.952304 +vt 0.563269 0.954228 +vt 0.565054 0.956467 +vt 0.565054 0.961274 +vt 0.563269 0.963514 +vt 0.560431 0.965437 +vt 0.529201 0.962891 +vt 0.560431 0.965437 +vt 0.535176 0.965437 +vt 0.535176 0.952304 +vt 0.547804 0.949584 +vt 0.560431 0.952304 +vt 0.529201 0.987891 +vt 0.585009 0.968157 +vt 0.597637 0.965437 +vt 0.602867 0.958871 +vt 0.585009 0.949584 +vt 0.567150 0.958871 +vt 0.547804 0.963514 +vt 0.603611 0.987891 +vt 0.552426 0.967841 +vt 0.538874 0.966913 +vt 0.547804 0.968157 +vt 0.543181 0.967841 +vt 0.535176 0.965437 +vt 0.532338 0.963514 +vt 0.530554 0.961274 +vt 0.530554 0.956467 +vt 0.532338 0.954228 +vt 0.535176 0.952304 +vt 0.538874 0.950828 +vt 0.543181 0.949901 +vt 0.547804 0.949584 +vt 0.552426 0.949901 +vt 0.560431 0.952304 +vt 0.563269 0.954228 +vt 0.565054 0.956467 +vt 0.565662 0.958871 +vt 0.565054 0.961274 +vt 0.563269 0.963514 +vt 0.560431 0.965437 +vt 0.529201 0.987891 +vt 0.585009 0.968157 +vt 0.589631 0.967841 +vt 0.593938 0.966913 +vt 0.597637 0.965437 +vt 0.600475 0.963514 +vt 0.602259 0.961274 +vt 0.602867 0.958871 +vt 0.600475 0.954228 +vt 0.597637 0.952304 +vt 0.593938 0.950828 +vt 0.589631 0.949901 +vt 0.585009 0.949584 +vt 0.580387 0.949901 +vt 0.576080 0.950828 +vt 0.572381 0.952304 +vt 0.569543 0.954228 +vt 0.567759 0.956467 +vt 0.567150 0.958871 +vt 0.569543 0.963514 +vt 0.572381 0.965437 +vt 0.576079 0.966913 +vt 0.552426 0.967841 +vt 0.547804 0.968157 +vt 0.543181 0.967841 +vt 0.538874 0.966913 +vt 0.535176 0.965437 +vt 0.532338 0.963514 +vt 0.530554 0.961274 +vt 0.529945 0.958871 +vt 0.530554 0.956467 +vt 0.532338 0.954228 +vt 0.535176 0.952304 +vt 0.538874 0.950828 +vt 0.543181 0.949901 +vt 0.547804 0.949584 +vt 0.552426 0.949901 +vt 0.560431 0.952304 +vt 0.563269 0.954228 +vt 0.565054 0.956467 +vt 0.565054 0.961274 +vt 0.563269 0.963514 +vt 0.560431 0.965437 +vt 0.529201 0.962891 +vt 0.585009 0.968157 +vt 0.589631 0.967841 +vt 0.593938 0.966913 +vt 0.597637 0.965437 +vt 0.600475 0.963514 +vt 0.602259 0.961274 +vt 0.602867 0.958871 +vt 0.602259 0.956467 +vt 0.600475 0.954228 +vt 0.597637 0.952304 +vt 0.593938 0.950828 +vt 0.589631 0.949901 +vt 0.585009 0.949584 +vt 0.580387 0.949901 +vt 0.576080 0.950828 +vt 0.569543 0.954228 +vt 0.567759 0.956467 +vt 0.567150 0.958871 +vt 0.569543 0.963514 +vt 0.572381 0.965437 +vt 0.576079 0.966913 +vt 0.552426 0.967841 +vt 0.547804 0.968157 +vt 0.543181 0.967841 +vt 0.538874 0.966913 +vt 0.535176 0.965437 +vt 0.532338 0.963514 +vt 0.530554 0.961274 +vt 0.529945 0.958871 +vt 0.530554 0.956467 +vt 0.532338 0.954228 +vt 0.535176 0.952304 +vt 0.538874 0.950828 +vt 0.543181 0.949901 +vt 0.547804 0.949584 +vt 0.552426 0.949901 +vt 0.560431 0.952304 +vt 0.563269 0.954228 +vt 0.565054 0.956467 +vt 0.565054 0.961274 +vt 0.563269 0.963514 +vt 0.560431 0.965437 +vt 0.529201 0.987891 +vt 0.585009 0.968157 +vt 0.589631 0.967841 +vt 0.593938 0.966913 +vt 0.597637 0.965437 +vt 0.600475 0.963514 +vt 0.602259 0.961274 +vt 0.602867 0.958871 +vt 0.602259 0.956467 +vt 0.600475 0.954228 +vt 0.597637 0.952304 +vt 0.593938 0.950828 +vt 0.589631 0.949901 +vt 0.585009 0.949584 +vt 0.580387 0.949901 +vt 0.576080 0.950828 +vt 0.569543 0.954228 +vt 0.567759 0.956467 +vt 0.567150 0.958871 +vt 0.569543 0.963514 +vt 0.572381 0.965437 +vt 0.576079 0.966913 +vt 0.552426 0.967841 +vt 0.547804 0.968157 +vt 0.543181 0.967841 +vt 0.538874 0.966913 +vt 0.535176 0.965437 +vt 0.532338 0.963514 +vt 0.530554 0.961274 +vt 0.529945 0.958871 +vt 0.530554 0.956467 +vt 0.532338 0.954228 +vt 0.535176 0.952304 +vt 0.538874 0.950828 +vt 0.543181 0.949901 +vt 0.547804 0.949584 +vt 0.552426 0.949901 +vt 0.560431 0.952304 +vt 0.563269 0.954228 +vt 0.565054 0.956467 +vt 0.565054 0.961274 +vt 0.563269 0.963514 +vt 0.560431 0.965437 +vt 0.529201 0.987891 +vt 0.585009 0.968157 +vt 0.589631 0.967841 +vt 0.593938 0.966913 +vt 0.597637 0.965437 +vt 0.600475 0.963514 +vt 0.602259 0.961274 +vt 0.602867 0.958871 +vt 0.602259 0.956467 +vt 0.600475 0.954228 +vt 0.597637 0.952304 +vt 0.593938 0.950828 +vt 0.589631 0.949901 +vt 0.585009 0.949584 +vt 0.580387 0.949901 +vt 0.576080 0.950828 +vt 0.569543 0.954228 +vt 0.567759 0.956467 +vt 0.567150 0.958871 +vt 0.569543 0.963514 +vt 0.572381 0.965437 +vt 0.576079 0.966913 +vt 0.552426 0.967841 +vt 0.547804 0.968157 +vt 0.543181 0.967841 +vt 0.538874 0.966913 +vt 0.535176 0.965437 +vt 0.532338 0.963514 +vt 0.530554 0.961274 +vt 0.529945 0.958871 +vt 0.530554 0.956467 +vt 0.532338 0.954228 +vt 0.535176 0.952304 +vt 0.538874 0.950828 +vt 0.543181 0.949901 +vt 0.547804 0.949584 +vt 0.552426 0.949901 +vt 0.560431 0.952304 +vt 0.563269 0.954228 +vt 0.565054 0.956467 +vt 0.565054 0.961274 +vt 0.563269 0.963514 +vt 0.560431 0.965437 +vt 0.529201 0.962891 +vt 0.585009 0.968157 +vt 0.589631 0.967841 +vt 0.593938 0.966913 +vt 0.597637 0.965437 +vt 0.600475 0.963514 +vt 0.602259 0.961274 +vt 0.602867 0.958871 +vt 0.602259 0.956467 +vt 0.600475 0.954228 +vt 0.597637 0.952304 +vt 0.593938 0.950828 +vt 0.589631 0.949901 +vt 0.585009 0.949584 +vt 0.580387 0.949901 +vt 0.576080 0.950828 +vt 0.569543 0.954228 +vt 0.567759 0.956467 +vt 0.567150 0.958871 +vt 0.569543 0.963514 +vt 0.572381 0.965437 +vt 0.576079 0.966913 +vt 0.396481 0.835451 +vt 0.459833 0.866080 +vt 0.396481 0.866080 +vt 0.545719 0.522092 +vt 0.497611 0.526046 +vt 0.497611 0.526046 +vt 0.462657 0.901337 +vt 0.459833 0.868394 +vt 0.462657 0.868394 +vt 0.467752 0.901337 +vt 0.467752 0.868394 +vt 0.523185 0.868394 +vt 0.388562 0.868394 +vt 0.411544 0.779875 +vt 0.390770 0.774974 +vt 0.390770 0.774974 +vt 0.333129 0.853963 +vt 0.523185 0.853963 +vt 0.564336 0.894415 +vt 0.384270 0.884437 +vt 0.384270 0.894415 +vt 0.333129 0.850928 +vt 0.523185 0.850928 +vt 0.333129 0.845982 +vt 0.625000 0.895044 +vt 0.625000 0.635044 +vt 0.625000 0.505044 +vt 0.563252 0.666138 +vt 0.539872 0.667093 +vt 0.539872 0.666138 +vt 0.360235 0.662320 +vt 0.610235 0.662320 +vt 0.467262 0.676993 +vt 0.389035 0.657551 +vt 0.654591 0.681900 +vt 0.673945 0.683675 +vt 0.539872 0.686553 +vt 0.516493 0.691408 +vt 0.516493 0.686553 +vt 0.371179 0.824396 +vt 0.224012 0.900923 +vt 0.224012 0.824396 +vt 0.504838 0.868908 +vt 0.504838 0.907383 +vt 0.578829 0.907383 +vt 0.371179 0.900923 +vt 0.665512 0.900923 +vt 0.589593 0.872960 +vt 0.579928 0.818991 +vt 0.579928 0.818991 +vt 0.720909 0.823249 +vt 0.728444 0.813188 +vt 0.728444 0.813188 +vt 0.518346 0.900923 +vt 0.665512 0.900923 +vt 0.403568 0.865893 +vt 0.403568 0.865893 +vt 0.403568 0.865893 +vt 0.634882 0.842860 +vt 0.875000 0.895044 +vt 0.625000 0.895044 +vt 0.622404 0.844210 +vt 0.554773 0.879378 +vt 0.554773 0.844210 +vt 0.579328 0.848935 +vt 0.460045 0.910962 +vt 0.460045 0.848935 +vt 0.594184 0.857324 +vt 0.479639 0.916888 +vt 0.479639 0.857324 +vt 0.316829 0.865671 +vt 0.232387 0.909581 +vt 0.232387 0.865671 +vt 0.755432 0.845134 +vt 0.631372 0.909645 +vt 0.631372 0.845134 +vt 0.875000 0.780375 +vt 0.625000 0.886482 +vt 0.625000 0.780375 +vt 0.527665 0.671526 +vt 0.434557 0.728562 +vt 0.434557 0.671526 +vt 0.478702 0.654816 +vt 0.405181 0.693047 +vt 0.405181 0.654816 +vt 0.578288 0.668871 +vt 0.504989 0.711222 +vt 0.504989 0.668871 +vt 0.369079 0.703598 +vt 0.619079 0.688267 +vt 0.619079 0.703598 +vt 0.545910 0.694020 +vt 0.542943 0.694166 +vt 0.538713 0.651138 +vt 0.875000 0.886482 +vt 0.625000 0.894248 +vt 0.348638 0.674242 +vt 0.598638 0.670022 +vt 0.598638 0.674242 +vt 0.862696 0.694629 +vt 0.612696 0.694960 +vt 0.612696 0.694629 +vt 0.528140 0.639470 +vt 0.528140 0.682157 +vt 0.512942 0.688324 +vt 0.875000 0.765044 +vt 0.625000 0.875456 +vt 0.625000 0.765044 +vt 0.560300 0.670191 +vt 0.450392 0.729897 +vt 0.450392 0.670191 +vt 0.737196 0.697591 +vt 0.487196 0.717178 +vt 0.487196 0.697591 +vt 0.252961 0.688828 +vt 0.502961 0.675471 +vt 0.502961 0.688828 +vt 0.585624 0.678619 +vt 0.528884 0.716829 +vt 0.528884 0.678619 +vt 0.571863 0.680723 +vt 0.321863 0.681349 +vt 0.321863 0.680723 +vt 0.424216 0.682430 +vt 0.174216 0.683030 +vt 0.174216 0.682430 +vt 0.324323 0.676884 +vt 0.574323 0.676770 +vt 0.574323 0.676884 +vt 0.216049 0.682677 +vt 0.466049 0.663982 +vt 0.466049 0.682677 +vt 0.216049 0.652466 +vt 0.466049 0.652320 +vt 0.466049 0.652466 +vt 0.601392 0.694569 +vt 0.351392 0.694684 +vt 0.351392 0.694569 +vt 0.485420 0.656087 +vt 0.486296 0.699330 +vt 0.485205 0.699287 +vt 0.181598 0.675854 +vt 0.431598 0.674999 +vt 0.431598 0.675854 +vt 0.456422 0.681871 +vt 0.456979 0.681849 +vt 0.456531 0.703932 +vt 0.410451 0.676654 +vt 0.660451 0.676023 +vt 0.660451 0.676654 +vt 0.532490 0.669456 +vt 0.282490 0.715181 +vt 0.282490 0.669456 +vt 0.375000 0.844421 +vt 0.125000 0.852193 +vt 0.125000 0.844421 +vt 0.626000 0.660251 +vt 0.376000 0.701615 +vt 0.376000 0.660251 +vt 0.593750 0.793481 +vt 0.218750 0.793481 +vt 0.819522 0.793481 +vt 0.604291 0.804188 +vt 0.510661 0.804188 +vt 0.614339 0.751259 +vt 0.375000 0.765044 +vt 0.291667 0.895044 +vt 0.291667 0.765044 +vt 0.625695 0.758273 +vt 0.378906 0.801606 +vt 0.378906 0.758273 +vt 0.664062 0.761468 +vt 0.580729 0.765166 +vt 0.580729 0.761468 +vt 0.625000 0.767416 +vt 0.708333 0.765044 +vt 0.708333 0.767416 +vt 0.677121 0.760761 +vt 0.684017 0.765248 +vt 0.684017 0.797089 +vt 0.677083 0.809854 +vt 0.593750 0.821919 +vt 0.593750 0.809854 +vt 0.630208 0.781780 +vt 0.546875 0.785479 +vt 0.546875 0.781780 +vt 0.109638 0.753166 +vt 0.109638 0.753166 +vt 0.809234 0.800535 +vt 0.629601 0.752856 +vt 0.382812 0.796190 +vt 0.382812 0.752856 +vt 0.375000 0.635044 +vt 0.375000 0.678377 +vt 0.000000 0.505044 +vt 0.263889 0.765044 +vt 0.263889 0.895044 +vt 0.573022 0.757181 +vt 0.705624 0.783892 +vt 0.573022 0.783892 +vt 0.226495 0.821409 +vt 0.627179 0.805925 +vt 0.648505 0.794114 +vt 0.280702 0.812445 +vt 0.496130 0.766499 +vt 0.444553 0.738474 +vt 0.421875 0.760981 +vt 0.355469 0.819888 +vt 0.581240 0.819888 +vt 0.320312 0.775200 +vt 0.320312 0.775200 +vt 0.320312 0.775200 +vt 0.341584 0.755253 +vt 0.894527 0.754523 +vt 0.894527 0.754523 +vt 0.502440 0.838252 +vt 0.335149 0.925244 +vt 0.335149 0.838252 +vt 0.556540 0.854906 +vt 0.463146 0.903471 +vt 0.463146 0.854906 +vt 0.245835 0.915308 +vt 0.224012 0.839396 +vt 0.224012 0.915923 +vt 0.665512 0.915923 +vt 0.643647 0.915691 +vt 0.665512 0.915923 +vt 0.597620 0.901828 +vt 0.125000 0.765044 +vt 0.228633 0.780745 +vt 0.875000 0.895044 +vt 0.875000 0.765044 +vt 0.597620 0.901828 +vt 0.574804 0.873659 +vt 0.285018 0.848638 +vt 0.643647 0.915691 +vt 0.285018 0.848638 +vt 0.759668 0.871099 +vt 0.759668 0.871099 +vt 0.720909 0.823249 +vt 0.245835 0.915308 +vt 0.578887 0.824122 +vt 0.375000 0.765044 +vt 0.625000 0.765044 +vt 0.377872 0.915356 +vt 0.518346 0.915923 +vt 0.371179 0.915923 +vt 0.377872 0.900356 +vt 0.389892 0.832881 +vt 0.625000 0.895044 +vt 0.511639 0.915711 +vt 0.518346 0.915923 +vt 0.389892 0.847881 +vt 0.491200 0.874173 +vt 0.497503 0.902923 +vt 0.389892 0.847881 +vt 0.377872 0.915356 +vt 0.406788 0.779458 +vt 0.406788 0.779458 +vt 0.497503 0.902923 +vt 0.578887 0.824122 +vt 0.511639 0.915711 +vt 0.643647 0.900691 +vt 0.245835 0.900308 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.221470 0.868452 +vt 0.221470 0.868452 +vt 0.221470 0.868452 +vt 0.251000 0.856936 +vt 0.251000 0.856936 +vt 0.251000 0.856936 +vt 0.361735 0.900442 +vt 0.361735 0.900442 +vt 0.361735 0.900442 +vt 0.518346 0.900923 +vt 0.511639 0.900711 +vt 0.236235 0.851817 +vt 0.236235 0.851817 +vt 0.236235 0.851817 +vt 0.164872 0.847978 +vt 0.164872 0.847978 +vt 0.164872 0.847978 +vt 0.209167 0.860775 +vt 0.209167 0.860775 +vt 0.209167 0.860775 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.150429 0.686343 +vt 0.150429 0.686343 +vt 0.150429 0.686343 +vt 0.605366 0.625582 +vt 0.392556 0.635044 +vt 0.410506 0.621173 +vt 0.389781 0.625623 +vt 0.375000 0.618794 +vt 0.390712 0.598254 +vt 0.388734 0.524179 +vt 0.375000 0.505044 +vt 0.382120 0.629248 +vt 0.556923 0.509307 +vt 0.597602 0.514746 +vt 0.507545 0.505044 +vt 0.545076 0.505044 +vt 0.484510 0.505044 +vt 0.391870 0.838038 +vt 0.389721 0.863715 +vt 0.343364 0.852237 +vt 0.390712 0.598254 +vt 0.597602 0.514746 +vt 0.545719 0.522092 +vt 0.410506 0.621173 +vt 0.605366 0.625582 +vt 0.388734 0.524179 +vt 0.556923 0.509307 +vt 0.389781 0.625623 +vt 0.603447 0.775430 +vt 0.594972 0.884555 +vt 0.392556 0.765044 +vt 0.625000 0.765044 +vt 0.375000 0.781294 +vt 0.382120 0.770840 +vt 0.390113 0.874091 +vt 0.392214 0.803595 +vt 0.558295 0.890122 +vt 0.545076 0.895044 +vt 0.498333 0.872319 +vt 0.507545 0.895044 +vt 0.484510 0.895044 +vt 0.548567 0.877213 +vt 0.375000 0.895044 +vt 0.512111 0.852142 +vt 0.478620 0.866125 +vt 0.467060 0.863579 +vt 0.411544 0.779875 +vt 0.498333 0.872319 +vt 0.594972 0.884555 +vt 0.392214 0.803595 +vt 0.548567 0.877213 +vt 0.390113 0.874091 +vt 0.603447 0.775430 +vt 0.558295 0.890122 +vt 0.464672 0.866316 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.243618 0.881248 +vt 0.243618 0.881248 +vt 0.243618 0.881248 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.868394 +vt 0.342454 0.866584 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.539872 0.679250 +vt 0.516493 0.680206 +vt 0.516493 0.679250 +vt 0.718065 0.674451 +vt 0.298249 0.674451 +vt 0.167739 0.674451 +vt 0.563252 0.659791 +vt 0.539872 0.659791 +vt 0.563252 0.654936 +vt 0.539872 0.654936 +vt 0.666833 0.705488 +vt 0.666833 0.669427 +vt 0.666833 0.663889 +vt 0.539872 0.680206 +vt 0.440044 0.779617 +vt 0.437493 0.837443 +vt 0.437493 0.837443 +vt 0.422729 0.709719 +vt 0.360235 0.647539 +vt 0.425280 0.651893 +vt 0.545228 0.642180 +vt 0.610235 0.705405 +vt 0.547899 0.699410 +vt 0.489409 0.751566 +vt 0.570046 0.808982 +vt 0.488685 0.809183 +vt 0.481303 0.837335 +vt 0.481303 0.837335 +vt 0.481303 0.837335 +vt 0.559993 0.779904 +vt 0.482026 0.779717 +vt 0.482026 0.779717 +vt 0.562664 0.837133 +vt 0.559993 0.779904 +vt 0.440044 0.779617 +vt 0.481303 0.837335 +vt 0.562664 0.837133 +vt 0.432662 0.733550 +vt 0.473921 0.791269 +vt 0.430111 0.791377 +vt 0.437493 0.837443 +vt 0.437493 0.837443 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.459833 0.835451 +vt 0.459833 0.901337 +vt 0.564336 0.884437 +vt 0.523185 0.845982 +vt 0.563252 0.667093 +vt 0.610235 0.657539 +vt 0.545228 0.662180 +vt 0.610235 0.647320 +vt 0.467262 0.661993 +vt 0.425280 0.661893 +vt 0.360235 0.647320 +vt 0.360235 0.657539 +vt 0.408389 0.659326 +vt 0.539872 0.691408 +vt 0.578829 0.868908 +vt 0.589593 0.872960 +vt 0.403568 0.865893 +vt 0.622404 0.879378 +vt 0.579328 0.910962 +vt 0.594184 0.916888 +vt 0.316829 0.909581 +vt 0.755432 0.909645 +vt 0.527665 0.728562 +vt 0.478702 0.693047 +vt 0.578288 0.711222 +vt 0.369079 0.688267 +vt 0.468469 0.694166 +vt 0.468469 0.651138 +vt 0.551217 0.656212 +vt 0.551217 0.691333 +vt 0.546274 0.693903 +vt 0.875000 0.894248 +vt 0.348638 0.670022 +vt 0.862696 0.694960 +vt 0.427566 0.688324 +vt 0.427566 0.636026 +vt 0.518084 0.636026 +vt 0.521690 0.636204 +vt 0.522133 0.636346 +vt 0.875000 0.875456 +vt 0.560300 0.729897 +vt 0.737196 0.717178 +vt 0.252961 0.675471 +vt 0.585624 0.716829 +vt 0.571863 0.681349 +vt 0.424216 0.683030 +vt 0.324323 0.676770 +vt 0.216049 0.663982 +vt 0.216049 0.652320 +vt 0.601392 0.694684 +vt 0.485158 0.663146 +vt 0.485415 0.656142 +vt 0.485157 0.699244 +vt 0.485525 0.655862 +vt 0.489162 0.650857 +vt 0.578824 0.650857 +vt 0.578824 0.692226 +vt 0.564711 0.699565 +vt 0.485156 0.683510 +vt 0.485156 0.680598 +vt 0.485157 0.699007 +vt 0.485156 0.663466 +vt 0.492385 0.699565 +vt 0.181598 0.674999 +vt 0.456397 0.700163 +vt 0.456397 0.691415 +vt 0.456397 0.682013 +vt 0.456397 0.689928 +vt 0.456529 0.703904 +vt 0.456398 0.700327 +vt 0.456397 0.681893 +vt 0.458443 0.706603 +vt 0.456585 0.704047 +vt 0.504231 0.685476 +vt 0.504231 0.706603 +vt 0.497023 0.681729 +vt 0.460088 0.681729 +vt 0.410451 0.676023 +vt 0.532490 0.715181 +vt 0.375000 0.852193 +vt 0.626000 0.701615 +vt 0.218750 0.793481 +vt 0.510661 0.750275 +vt 0.613008 0.750275 +vt 0.614339 0.797650 +vt 0.613913 0.799184 +vt 0.375000 0.895044 +vt 0.625695 0.801606 +vt 0.664062 0.765166 +vt 0.625000 0.765044 +vt 0.612858 0.797764 +vt 0.612858 0.760761 +vt 0.683725 0.764195 +vt 0.683103 0.797764 +vt 0.677083 0.821919 +vt 0.630208 0.785479 +vt 0.779674 0.760019 +vt 0.781057 0.757208 +vt 0.109638 0.753166 +vt 0.629601 0.796190 +vt 0.375000 0.505044 +vt 0.236111 0.765044 +vt 0.705624 0.757181 +vt 0.380237 0.736263 +vt 0.226495 0.821409 +vt 0.651589 0.807504 +vt 0.280702 0.812445 +vt 0.280702 0.812445 +vt 0.272135 0.819888 +vt 0.320312 0.775200 +vt 0.320312 0.775200 +vt 0.320312 0.775200 +vt 0.320312 0.775200 +vt 0.894527 0.754523 +vt 0.894527 0.754523 +vt 0.894527 0.754523 +vt 0.894527 0.754523 +vt 0.502440 0.925244 +vt 0.556540 0.903471 +vt 0.245835 0.900308 +vt 0.285018 0.833638 +vt 0.579240 0.867737 +vt 0.597620 0.886828 +vt 0.228633 0.780745 +vt 0.643647 0.900691 +vt 0.491813 0.871153 +vt 0.497503 0.887923 +vt 0.389892 0.832881 +vt 0.377872 0.900356 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.221470 0.868452 +vt 0.361735 0.900442 +vt 0.361735 0.900442 +vt 0.236235 0.851817 +vt 0.209167 0.860775 +vt 0.209167 0.860775 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.378552 0.866324 +vt 0.341437 0.845898 +vt 0.335206 0.844421 +vt 0.337857 0.839061 +vt 0.391890 0.866446 +vt 0.464894 0.838291 +vt 0.518073 0.839407 +vt 0.514496 0.845523 +vt 0.520786 0.844241 +vt 0.512974 0.866402 +vt 0.333129 0.917808 +vt 0.243618 0.881248 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.587555 0.674451 +vt 0.666833 0.699950 +vt 0.422729 0.699719 +vt 0.360235 0.705405 +vt 0.360235 0.637539 +vt 0.545228 0.652180 +vt 0.610235 0.647539 +vt 0.610235 0.715405 +vt 0.567375 0.751753 +vt 0.474644 0.733651 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.617682 0.716042 +vt 0.616961 0.710037 +vt 0.617682 0.710037 +vt 0.616961 0.716042 +vt 0.616239 0.710037 +vt 0.616239 0.716042 +vt 0.615517 0.710037 +vt 0.615517 0.716042 +vt 0.614795 0.710037 +vt 0.614795 0.716042 +vt 0.614073 0.710037 +vt 0.614073 0.716042 +vt 0.613352 0.710037 +vt 0.613352 0.716042 +vt 0.612630 0.710037 +vt 0.612630 0.716042 +vt 0.611908 0.710037 +vt 0.611908 0.716042 +vt 0.611186 0.710037 +vt 0.611186 0.716042 +vt 0.610464 0.710037 +vt 0.610464 0.716042 +vt 0.609743 0.710037 +vt 0.609743 0.716042 +vt 0.609021 0.710037 +vt 0.609021 0.716042 +vt 0.608299 0.710037 +vt 0.608299 0.716042 +vt 0.607577 0.710037 +vt 0.607577 0.716042 +vt 0.606855 0.710037 +vt 0.606855 0.716042 +vt 0.606134 0.710037 +vt 0.606134 0.716042 +vt 0.605412 0.710037 +vt 0.605412 0.716042 +vt 0.604690 0.710037 +vt 0.604690 0.716042 +vt 0.603968 0.710037 +vt 0.603968 0.716042 +vt 0.603247 0.710037 +vt 0.603247 0.716042 +vt 0.602525 0.710037 +vt 0.602525 0.716042 +vt 0.601803 0.710037 +vt 0.601803 0.716042 +vt 0.601081 0.710037 +vt 0.601081 0.716042 +vt 0.600359 0.710037 +vt 0.605945 0.708437 +vt 0.606419 0.708136 +vt 0.606419 0.708136 +vt 0.607856 0.708635 +vt 0.607166 0.709072 +vt 0.608368 0.708137 +vt 0.606989 0.707421 +vt 0.606772 0.707793 +vt 0.607062 0.707034 +vt 0.608683 0.707596 +vt 0.608683 0.706471 +vt 0.608790 0.707034 +vt 0.606989 0.706647 +vt 0.608368 0.705931 +vt 0.606419 0.705932 +vt 0.606772 0.706274 +vt 0.605945 0.705631 +vt 0.607856 0.705432 +vt 0.606326 0.704637 +vt 0.607166 0.704996 +vt 0.605366 0.705384 +vt 0.605368 0.704371 +vt 0.603991 0.705088 +vt 0.604707 0.705201 +vt 0.603247 0.705050 +vt 0.604328 0.704207 +vt 0.602165 0.704207 +vt 0.603247 0.704151 +vt 0.602502 0.705088 +vt 0.601125 0.704371 +vt 0.601127 0.705384 +vt 0.601786 0.705201 +vt 0.600548 0.705631 +vt 0.600167 0.704637 +vt 0.598637 0.705432 +vt 0.599327 0.704996 +vt 0.600074 0.705932 +vt 0.598125 0.705931 +vt 0.599504 0.706647 +vt 0.599721 0.706274 +vt 0.599431 0.707034 +vt 0.597810 0.706471 +vt 0.597810 0.707596 +vt 0.597703 0.707034 +vt 0.599504 0.707421 +vt 0.598125 0.708137 +vt 0.599721 0.707793 +vt 0.598637 0.708635 +vt 0.600074 0.708136 +vt 0.599327 0.709072 +vt 0.602502 0.708980 +vt 0.603247 0.709018 +vt 0.603247 0.709018 +vt 0.601127 0.705384 +vt 0.606772 0.707793 +vt 0.600548 0.705631 +vt 0.606989 0.707421 +vt 0.600074 0.705932 +vt 0.607062 0.707034 +vt 0.599721 0.706274 +vt 0.606989 0.706647 +vt 0.599504 0.706647 +vt 0.606772 0.706274 +vt 0.599431 0.707034 +vt 0.606419 0.705932 +vt 0.599504 0.707421 +vt 0.605945 0.705631 +vt 0.599721 0.707793 +vt 0.605366 0.705384 +vt 0.600074 0.708136 +vt 0.604707 0.705201 +vt 0.603991 0.708980 +vt 0.603991 0.708980 +vt 0.600548 0.708437 +vt 0.600548 0.708437 +vt 0.603991 0.705088 +vt 0.604707 0.708867 +vt 0.604707 0.708867 +vt 0.601127 0.708683 +vt 0.601127 0.708683 +vt 0.603247 0.705050 +vt 0.605366 0.708683 +vt 0.605366 0.708683 +vt 0.601786 0.708867 +vt 0.601786 0.708867 +vt 0.602502 0.705088 +vt 0.605945 0.708437 +vt 0.602502 0.708980 +vt 0.601786 0.705201 +vt 0.617932 0.708123 +vt 0.618715 0.709072 +vt 0.619404 0.708635 +vt 0.619917 0.708137 +vt 0.618280 0.707784 +vt 0.618495 0.707416 +vt 0.620232 0.707596 +vt 0.620339 0.707034 +vt 0.618568 0.707034 +vt 0.618495 0.706651 +vt 0.620232 0.706471 +vt 0.619917 0.705931 +vt 0.618280 0.706283 +vt 0.619404 0.705432 +vt 0.617932 0.705944 +vt 0.618715 0.704996 +vt 0.617463 0.705647 +vt 0.616891 0.705403 +vt 0.617875 0.704637 +vt 0.616917 0.704371 +vt 0.616239 0.705221 +vt 0.615531 0.705110 +vt 0.615877 0.704207 +vt 0.614795 0.704151 +vt 0.614795 0.705072 +vt 0.614059 0.705110 +vt 0.613714 0.704207 +vt 0.612674 0.704371 +vt 0.613352 0.705221 +vt 0.612699 0.705403 +vt 0.611715 0.704637 +vt 0.610875 0.704996 +vt 0.612128 0.705647 +vt 0.611659 0.705944 +vt 0.610186 0.705432 +vt 0.609674 0.705931 +vt 0.611310 0.706283 +vt 0.611095 0.706651 +vt 0.609358 0.706471 +vt 0.609252 0.707034 +vt 0.611023 0.707034 +vt 0.611095 0.707416 +vt 0.609358 0.707596 +vt 0.609674 0.708137 +vt 0.611310 0.707784 +vt 0.611659 0.708123 +vt 0.610186 0.708635 +vt 0.610875 0.709072 +vt 0.612128 0.708421 +vt 0.618610 0.646303 +vt 0.584515 0.664033 +vt 0.584515 0.646303 +vt 0.618610 0.664033 +vt 0.584515 0.681763 +vt 0.618610 0.681763 +vt 0.584515 0.699492 +vt 0.618610 0.699492 +vt 0.584515 0.717221 +vt 0.550420 0.699492 +vt 0.550420 0.681763 +vt 0.617687 0.710037 +vt 0.617687 0.716042 +vt 0.600355 0.716042 +vt 0.600355 0.710037 +vt 0.603247 0.709074 +vt 0.604027 0.709074 +vt 0.604872 0.709074 +vt 0.607161 0.709074 +vt 0.605868 0.709074 +vt 0.600625 0.709074 +vt 0.599332 0.709074 +vt 0.601621 0.709074 +vt 0.602466 0.709074 +vt 0.615531 0.708958 +vt 0.614795 0.709074 +vt 0.615576 0.709074 +vt 0.616239 0.708846 +vt 0.616420 0.709074 +vt 0.616891 0.708665 +vt 0.617417 0.709074 +vt 0.617463 0.708421 +vt 0.610880 0.709074 +vt 0.613170 0.709074 +vt 0.612699 0.708665 +vt 0.612173 0.709074 +vt 0.614015 0.709074 +vt 0.613352 0.708846 +vt 0.614059 0.708958 +vt 0.628899 0.693320 +vt 0.652705 0.681763 +vt 0.643086 0.693320 +vt 0.643086 0.687935 +vt 0.600359 0.716042 +vt 0.618610 0.717221 +vt 0.614795 0.708996 +vt 0.618710 0.709074 +vt 0.640743 0.693320 +vt 0.652705 0.699492 +vt 0.635992 0.687935 +vt 0.640743 0.687935 +vt 0.638937 0.687935 +vt 0.637406 0.687935 +vt 0.638937 0.693320 +vt 0.635992 0.693320 +vt 0.637406 0.693320 +vt 0.634578 0.687935 +vt 0.633047 0.687935 +vt 0.631242 0.693320 +vt 0.633047 0.693320 +vt 0.634578 0.693320 +vt 0.631242 0.687935 +vt 0.628899 0.687935 +vt 0.543609 0.932938 +vt 0.565766 0.944459 +vt 0.543609 0.944459 +vt 0.543609 0.955981 +vt 0.565766 0.955981 +vt 0.543609 0.967503 +vt 0.565766 0.967503 +vt 0.543609 0.979025 +vt 0.521451 0.967503 +vt 0.521451 0.955981 +vt 0.587924 0.955981 +vt 0.558011 0.932938 +vt 0.565766 0.944459 +vt 0.558011 0.944459 +vt 0.558011 0.955981 +vt 0.565766 0.955981 +vt 0.558011 0.967503 +vt 0.542329 0.614065 +vt 0.534574 0.625587 +vt 0.534574 0.614065 +vt 0.543609 0.955981 +vt 0.521451 0.967503 +vt 0.521451 0.955981 +vt 0.587924 0.955981 +vt 0.565766 0.967503 +vt 0.543609 0.979025 +vt 0.543609 0.967503 +vt 0.543609 0.944459 +vt 0.543609 0.932938 +vt 0.543609 0.932938 +vt 0.565766 0.944459 +vt 0.543609 0.944459 +vt 0.565766 0.955981 +vt 0.543609 0.955981 +vt 0.543609 0.967503 +vt 0.565766 0.967503 +vt 0.543609 0.979025 +vt 0.521451 0.967503 +vt 0.521451 0.955981 +vt 0.587924 0.955981 +vt 0.543609 0.932938 +vt 0.565766 0.944459 +vt 0.543609 0.944459 +vt 0.543609 0.955981 +vt 0.565766 0.955981 +vt 0.543609 0.967503 +vt 0.565766 0.967503 +vt 0.543609 0.979025 +vt 0.521451 0.967503 +vt 0.521451 0.955981 +vt 0.587924 0.955981 +vt 0.565766 0.932938 +vt 0.565766 0.979025 +vt 0.587924 0.967503 +vt 0.565766 0.932938 +vt 0.542329 0.625587 +vt 0.587924 0.967503 +vt 0.558011 0.979025 +vt 0.565766 0.932938 +vt 0.565766 0.979025 +vt 0.587924 0.967503 +vt 0.565766 0.932938 +vt 0.565766 0.979025 +vt 0.587924 0.967503 +vn -0.0003 0.0000 -1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.0004 0.0000 -1.0000 +vn 0.0027 -1.0000 0.0019 +vn 0.0042 -1.0000 0.0030 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0006 0.0004 1.0000 +vn 0.0011 0.0045 1.0000 +vn 0.0011 0.0049 1.0000 +vn 0.0008 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.0049 0.0049 1.0000 +vn -0.8655 -0.5009 0.0000 +vn -0.0005 0.0000 -1.0000 +vn -0.0008 -1.0000 0.0005 +vn -0.0000 -0.5727 0.8197 +vn -0.0004 -0.8551 0.5184 +vn 0.7704 0.0003 0.6376 +vn 0.7699 -0.0003 0.6381 +vn 0.7698 0.0000 0.6382 +vn 0.7071 -0.7071 -0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 -0.7071 -0.0000 +vn 0.0000 -0.5729 0.8196 +vn -0.0004 -0.8552 0.5183 +vn 0.7696 -0.0008 0.6385 +vn 0.7708 0.0008 0.6371 +vn 0.7710 -0.0000 0.6369 +vn -0.0000 -0.5734 0.8193 +vn 0.7699 -0.0003 0.6382 +vn 0.7703 0.0003 0.6377 +vn 0.7704 -0.0000 0.6376 +vn -0.0000 -0.5727 0.8198 +vn -0.0004 -0.8551 0.5185 +vn 0.7700 0.0000 0.6381 +vn -0.8655 -0.5008 0.0000 +vn 0.7701 -0.0000 0.6379 +vn -0.7701 0.0000 -0.6379 +vn -0.0000 -0.5732 0.8194 +vn -0.0004 -0.8553 0.5182 +vn -0.7700 -0.0000 -0.6380 +vn 0.0070 -1.0000 0.0049 +vn 0.0005 0.0000 1.0000 +vn -0.0008 -1.0000 0.0000 +vn -0.0008 -1.0000 0.0003 +vn 0.9961 0.0882 0.0000 +vn 0.9865 -0.1635 -0.0000 +vn 0.8737 -0.4865 -0.0000 +vn 0.6256 -0.7802 -0.0000 +vn 0.2322 -0.9727 -0.0000 +vn -0.2322 -0.9727 -0.0000 +vn -0.6256 -0.7802 -0.0000 +vn -0.8737 -0.4865 -0.0000 +vn -0.9865 -0.1635 -0.0000 +vn -0.9961 0.0882 0.0000 +vn 0.1305 0.9914 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.6088 0.7934 0.0000 +vn 0.7933 0.6088 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.9914 0.1305 0.0000 +vn 0.9914 -0.1305 -0.0000 +vn 0.9239 -0.3827 -0.0000 +vn 0.7934 -0.6088 -0.0000 +vn 0.6088 -0.7934 -0.0000 +vn 0.3827 -0.9239 -0.0000 +vn 0.1305 -0.9914 -0.0000 +vn -0.1305 -0.9914 -0.0000 +vn -0.3827 -0.9239 -0.0000 +vn -0.6088 -0.7934 -0.0000 +vn -0.7934 -0.6088 -0.0000 +vn -0.7933 -0.6088 -0.0000 +vn -0.9239 -0.3827 -0.0000 +vn -0.9914 -0.1305 -0.0000 +vn -0.9914 0.1305 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.7934 0.6088 0.0000 +vn -0.6088 0.7934 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.1305 0.9914 0.0000 +vn 0.3514 -0.8484 -0.3959 +vn 0.8484 -0.3514 -0.3959 +vn 0.8484 0.3514 -0.3959 +vn 0.3514 0.8484 -0.3959 +vn -0.3514 0.8484 -0.3959 +vn -0.8484 0.3514 -0.3959 +vn -0.8484 -0.3514 -0.3959 +vn -0.3514 -0.8484 -0.3959 +vn 0.7934 0.6088 0.0000 +vn -0.6088 -0.7933 0.0000 +vn 0.6088 0.7933 0.0000 +vn 0.6088 -0.7933 -0.0000 +vn 0.5314 0.1600 -0.8319 +vn 0.8527 -0.0000 -0.5224 +vn 0.5314 -0.1600 -0.8319 +vn -0.0001 0.0000 -1.0000 +vn 0.0001 0.0000 -1.0000 +vn 0.0001 0.0000 1.0000 +vn -0.0001 0.0000 1.0000 +vn 0.0000 -0.3784 -0.9256 +vn 0.0000 -0.0253 0.9997 +vn 0.0000 0.1422 -0.9898 +vn 0.0000 -0.9644 0.2643 +vn 0.0000 -0.9848 0.1739 +vn 0.0000 0.4185 0.9082 +vn 0.0000 0.9237 0.3831 +vn 0.0000 -0.8319 0.5549 +vn 0.0000 0.9997 0.0264 +vn 0.0000 -0.9997 -0.0249 +vn 0.0000 -0.9236 -0.3834 +vn 0.0001 0.6431 0.7658 +vn 0.0000 0.6432 0.7657 +vn 0.0000 -0.0909 0.9959 +vn 0.0000 0.9535 0.3014 +vn 0.0000 -0.8690 -0.4947 +vn 0.0000 0.9932 0.1168 +vn 0.0001 0.8691 0.4946 +vn 0.0002 0.8693 0.4944 +vn 0.0002 0.8693 0.4942 +vn 0.0000 0.9988 0.0480 +vn 0.0000 0.3739 -0.9275 +vn 0.0000 -0.8192 0.5735 +vn 0.0000 -0.5018 0.8650 +vn 0.0000 -0.3738 -0.9275 +vn 0.0000 0.9764 0.2159 +vn 0.0000 -0.5664 0.8241 +vn 0.0000 0.2951 0.9555 +vn 0.0000 -0.9028 -0.4301 +vn 0.0000 -0.6377 0.7703 +vn 0.0000 -0.6645 -0.7473 +vn 0.0000 -0.2686 0.9633 +vn 0.0000 0.2609 0.9654 +vn 0.0000 -0.9044 -0.4266 +vn 0.0000 0.7413 0.6712 +vn 0.0000 -0.9994 -0.0337 +vn 0.0000 -0.9729 -0.2312 +vn 0.0000 0.9943 0.1065 +vn 0.0000 -0.9039 0.4277 +vn 0.0000 0.9182 -0.3961 +vn 0.0000 -0.4423 0.8969 +vn 0.0000 0.4320 0.9019 +vn 0.0000 0.4842 -0.8749 +vn 0.0000 0.4261 0.9047 +vn 0.0000 0.1909 -0.9816 +vn 0.0000 0.9995 0.0318 +vn 0.0000 0.9918 -0.1277 +vn 0.0000 0.6918 0.7220 +vn 0.0000 0.8646 -0.5025 +vn 1.0000 -0.0010 0.0007 +vn 1.0000 -0.0019 0.0017 +vn 0.0000 -0.6430 -0.7658 +vn 0.0000 -0.6432 -0.7657 +vn 0.0000 -0.8693 -0.4942 +vn -0.5484 -0.0760 0.8328 +vn -0.7536 -0.6071 -0.2520 +vn -0.7698 0.6340 0.0745 +vn -0.7607 0.6189 0.1957 +vn -0.7402 0.5843 0.3326 +vn -0.6787 -0.4737 -0.5613 +vn -0.9730 -0.1947 -0.1237 +vn -0.6263 -0.5087 -0.5907 +vn 0.7982 0.5982 0.0703 +vn 0.7898 0.5848 0.1849 +vn 0.7709 0.5538 0.3148 +vn 0.5429 -0.7301 -0.4151 +vn 0.8868 -0.3899 -0.2481 +vn 0.3349 -0.6195 -0.7100 +vn 0.7699 -0.5824 -0.2610 +vn 0.7751 -0.5764 -0.2588 +vn 0.3897 -0.8505 -0.3533 +vn 0.5847 -0.0737 0.8079 +vn 0.9379 -0.3346 0.0917 +vn 0.9395 -0.3373 0.0596 +vn 0.8718 0.2050 0.4449 +vn 0.8298 -0.0141 0.5579 +vn 0.9258 -0.3144 0.2097 +vn 0.9344 0.3289 0.1364 +vn 0.9407 0.3392 0.0089 +vn 0.8657 -0.1894 -0.4633 +vn 0.8358 0.0781 -0.5434 +vn -0.9296 -0.3628 0.0641 +vn -0.9278 -0.3599 0.0986 +vn -0.8138 0.0826 -0.5752 +vn -0.8467 -0.2014 -0.4926 +vn -0.9310 0.3649 0.0096 +vn -0.9238 0.3536 0.1467 +vn -0.9140 -0.3374 0.2251 +vn -0.8072 -0.0149 0.5901 +vn -0.8534 0.2182 0.4735 +vn 0.0001 1.0000 0.0000 +vn 0.0002 1.0000 0.0000 +vn -0.0000 0.9998 0.0183 +vn -0.0001 0.9998 0.0183 +vn 1.0000 0.0015 0.0007 +vn 1.0000 -0.0020 0.0019 +vn 1.0000 -0.0005 0.0032 +vn 1.0000 -0.0000 0.0017 +vn -0.0000 -1.0000 0.0007 +vn 0.0000 0.0729 0.9973 +vn 0.0033 0.0732 -0.9973 +vn 0.0008 0.0725 -0.9974 +vn 0.0000 0.0722 -0.9974 +vn 1.0000 -0.0000 0.0026 +vn 0.0048 -0.0004 -1.0000 +vn 0.0056 -0.0009 -1.0000 +vn 0.0041 -0.0001 -1.0000 +vn 0.0000 1.0000 -0.0007 +vn 1.0000 0.0000 0.0052 +vn 1.0000 -0.0035 -0.0044 +vn 0.0002 0.6430 0.7658 +vn 0.0000 0.8690 0.4947 +vn 1.0000 -0.0055 0.0020 +vn 1.0000 -0.0005 0.0027 +vn 1.0000 -0.0090 -0.0003 +vn 1.0000 0.0001 0.0025 +vn -0.6788 -0.4722 -0.5624 +vn -0.5489 -0.5375 -0.6401 +vn 0.7982 0.5983 0.0703 +vn 0.4928 -0.5934 -0.6364 +vn 0.4171 -0.6319 -0.6532 +vn 0.3412 -0.6364 -0.6918 +vn 0.3227 -0.6087 -0.7248 +vn 0.3837 -0.8529 -0.3540 +vn 0.9999 0.0114 0.0035 +vn 0.0041 0.0735 -0.9973 +vn 0.0063 -0.0012 -1.0000 +vn 1.0000 0.0013 -0.0033 +vn 1.0000 0.0093 -0.0015 +vn 1.0000 -0.0055 -0.0032 +vn 1.0000 -0.0004 0.0052 +vn 0.7730 -0.6344 0.0000 +vn 0.8819 -0.4714 0.0000 +vn 0.9569 -0.2903 0.0000 +vn 0.9952 -0.0980 0.0000 +vn 0.9952 0.0980 0.0000 +vn 0.9569 0.2903 0.0000 +vn 0.8819 0.4714 0.0000 +vn 0.7730 0.6344 0.0000 +vn 0.6344 0.7730 0.0000 +vn 0.4714 0.8819 0.0000 +vn 0.2903 0.9569 0.0000 +vn 0.0980 0.9952 0.0000 +vn -0.0980 0.9952 0.0000 +vn -0.2903 0.9569 0.0000 +vn -0.4714 0.8819 0.0000 +vn -0.6344 0.7730 0.0000 +vn -0.7730 0.6344 0.0000 +vn -0.8819 0.4714 0.0000 +vn -0.9569 0.2903 0.0000 +vn -0.9952 0.0980 0.0000 +vn -0.9952 -0.0980 0.0000 +vn -0.9569 -0.2903 0.0000 +vn -0.8819 -0.4714 0.0000 +vn -0.7730 -0.6344 0.0000 +vn 0.4714 -0.8819 0.0000 +vn 0.6344 -0.7730 0.0000 +vn -0.6344 -0.7730 0.0000 +vn -0.4714 -0.8819 0.0000 +vn -0.2903 -0.9569 0.0000 +vn -0.0980 -0.9952 0.0000 +vn 0.0980 -0.9952 0.0000 +vn 0.2903 -0.9569 0.0000 +vn 0.0009 0.0000 1.0000 +vn -0.0008 0.0000 1.0000 +vn 0.6341 -0.7732 0.0000 +vn 0.6338 -0.7735 0.0000 +vn -0.6345 -0.7729 0.0000 +vn -0.0010 0.0000 1.0000 +vn 0.0012 0.0000 1.0000 +vn -0.9886 0.1508 0.0000 +vn 0.0000 0.7659 -0.6430 +vn 0.9886 0.1508 0.0000 +vn 0.0000 0.5850 0.8110 +vn -0.9980 0.0638 0.0000 +vn 0.0000 0.0992 -0.9951 +vn 0.9980 0.0638 0.0000 +vn 0.0000 0.0212 0.9998 +vn 0.0000 0.0211 0.9998 +vn -0.9692 -0.2464 0.0000 +vn -0.0424 0.1386 -0.9894 +vn 0.9412 0.3377 0.0000 +vn 0.9413 0.3377 0.0000 +vn -0.0091 0.0297 0.9995 +vn 0.2924 -0.9563 0.0000 +vn -0.2924 0.9563 0.0000 +vn -0.9412 0.3377 0.0000 +vn 0.0423 0.1385 -0.9895 +vn 0.9692 -0.2464 0.0000 +vn 0.0091 0.0297 0.9995 +vn -0.2924 -0.9563 0.0000 +vn 0.2924 0.9563 0.0000 +s 1 +f 1/1/1 2/2/2 3/3/3 +f 1/4/4 4/5/5 2/2/6 +f 5/6/2 6/7/2 7/8/2 +f 6/7/7 8/9/7 7/8/7 +f 8/9/8 9/10/8 10/11/8 +f 7/8/6 10/12/6 5/13/6 +f 5/14/9 6/7/9 9/10/9 +f 10/15/10 11/16/11 12/17/12 +f 3/18/13 9/10/13 6/7/13 +f 2/2/14 11/19/14 3/3/14 +f 12/17/15 11/19/15 4/5/15 +f 13/20/16 12/21/16 1/22/16 +f 6/7/17 1/23/1 3/24/3 +f 10/15/18 12/21/19 13/25/20 +f 12/26/21 13/27/22 11/28/23 +f 14/29/2 15/30/2 16/31/2 +f 15/30/24 17/32/24 16/31/24 +f 17/32/8 18/33/8 19/34/8 +f 14/35/25 17/32/25 19/36/25 +f 14/37/26 18/33/26 15/30/26 +f 20/38/2 21/39/2 22/40/2 +f 21/39/27 23/41/27 22/40/27 +f 23/41/8 24/42/8 25/43/8 +f 22/40/26 25/44/26 20/45/26 +f 20/46/9 24/42/9 21/39/9 +f 26/47/1 27/48/2 28/49/3 +f 26/50/4 29/51/5 27/48/6 +f 30/52/2 31/53/2 32/54/2 +f 31/53/7 33/55/7 32/54/7 +f 33/55/8 34/56/8 35/57/8 +f 32/54/6 35/58/6 30/59/6 +f 30/60/9 31/53/9 34/56/9 +f 35/61/10 36/62/11 37/63/12 +f 28/64/13 34/56/13 31/53/13 +f 27/48/14 36/65/14 28/49/14 +f 37/63/15 36/65/15 29/51/15 +f 38/66/16 37/67/16 26/68/16 +f 31/53/17 26/69/1 28/70/3 +f 35/61/18 37/67/28 38/71/29 +f 37/72/30 38/73/31 36/74/32 +f 39/75/1 40/76/2 41/77/3 +f 39/78/4 42/79/5 40/76/6 +f 43/80/2 44/81/2 45/82/2 +f 44/81/7 46/83/7 45/82/7 +f 46/83/8 47/84/8 48/85/8 +f 45/82/6 48/86/6 43/87/6 +f 43/88/9 44/81/9 47/84/9 +f 48/89/10 49/90/11 50/91/12 +f 41/92/13 47/84/13 44/81/13 +f 40/76/14 49/93/14 41/77/14 +f 50/91/15 49/93/15 42/79/15 +f 51/94/16 50/95/16 39/96/16 +f 44/81/17 39/97/1 41/98/3 +f 48/89/18 50/95/33 51/99/29 +f 50/100/30 51/101/31 49/102/32 +f 52/103/1 53/104/2 54/105/3 +f 52/106/4 55/107/5 53/104/6 +f 56/108/2 57/109/2 58/110/2 +f 57/109/7 59/111/7 58/110/7 +f 59/111/8 60/112/8 61/113/8 +f 58/110/6 61/114/6 56/115/6 +f 56/116/9 57/109/9 60/112/9 +f 61/117/10 62/118/11 63/119/12 +f 54/120/13 60/112/13 57/109/13 +f 53/104/14 62/121/14 54/105/14 +f 63/119/15 62/121/15 55/107/15 +f 64/122/16 63/123/16 52/124/16 +f 57/109/17 52/125/1 54/126/3 +f 61/117/18 63/123/28 64/127/29 +f 63/128/34 64/129/35 62/130/36 +f 65/131/1 66/132/2 67/133/3 +f 65/134/4 68/135/5 66/132/6 +f 69/136/2 70/137/2 71/138/2 +f 70/137/7 72/139/7 71/138/7 +f 72/139/8 73/140/8 74/141/8 +f 71/138/6 74/142/6 69/143/6 +f 69/144/9 70/137/9 73/140/9 +f 74/145/10 75/146/11 76/147/12 +f 67/148/13 73/140/13 70/137/13 +f 66/132/14 75/149/14 67/133/14 +f 76/147/15 75/149/15 68/135/15 +f 77/150/16 76/151/16 65/152/16 +f 70/137/17 65/153/1 67/154/3 +f 74/145/18 76/151/37 77/155/38 +f 76/156/34 77/157/35 75/158/36 +f 78/159/1 79/160/2 80/161/3 +f 78/162/4 81/163/5 79/160/6 +f 82/164/2 83/165/2 84/166/2 +f 83/165/7 85/167/7 84/166/7 +f 85/167/8 86/168/8 87/169/8 +f 84/166/6 87/170/6 82/171/6 +f 82/172/9 83/165/9 86/168/9 +f 87/173/10 88/174/11 89/175/12 +f 80/176/13 86/168/13 83/165/13 +f 79/160/14 88/177/14 80/161/14 +f 89/175/15 88/177/15 81/163/15 +f 90/178/16 89/179/16 78/180/16 +f 83/165/17 78/181/1 80/182/3 +f 87/173/18 89/179/19 90/183/20 +f 89/184/39 90/185/39 88/186/39 +f 91/187/1 92/188/2 93/189/3 +f 91/190/4 94/191/5 92/188/6 +f 95/192/2 96/193/2 97/194/2 +f 96/193/7 98/195/7 97/194/7 +f 98/195/8 99/196/8 100/197/8 +f 97/194/6 100/198/6 95/199/6 +f 95/200/9 96/193/9 99/196/9 +f 100/201/10 101/202/11 102/203/12 +f 93/204/13 99/196/13 96/193/13 +f 92/188/14 101/205/14 93/189/14 +f 102/203/15 101/205/15 94/191/15 +f 103/206/40 102/207/40 91/208/40 +f 96/193/17 91/209/1 93/210/3 +f 100/201/18 102/207/37 103/211/20 +f 102/212/21 103/213/22 101/214/23 +f 104/215/1 105/216/2 106/217/3 +f 104/218/4 107/219/5 105/216/6 +f 108/220/2 109/221/2 110/222/2 +f 109/221/7 111/223/7 110/222/7 +f 111/223/8 112/224/8 113/225/8 +f 110/222/6 113/226/6 108/227/6 +f 108/228/9 109/221/9 112/224/9 +f 113/229/10 114/230/11 115/231/12 +f 106/232/13 112/224/13 109/221/13 +f 105/216/14 114/233/14 106/217/14 +f 115/231/15 114/233/15 107/219/15 +f 116/234/16 115/235/16 104/236/16 +f 109/221/17 104/237/1 106/238/3 +f 113/229/18 115/235/19 116/239/20 +f 115/240/41 116/241/41 114/242/41 +f 117/243/1 118/244/2 119/245/3 +f 117/246/4 120/247/5 118/244/6 +f 121/248/2 122/249/2 123/250/2 +f 122/249/7 124/251/7 123/250/7 +f 124/251/8 125/252/8 126/253/8 +f 123/250/6 126/254/6 121/255/6 +f 121/256/9 122/249/9 125/252/9 +f 126/257/10 127/258/11 128/259/12 +f 119/260/13 125/252/13 122/249/13 +f 118/244/14 127/261/14 119/245/14 +f 128/259/15 127/261/15 120/247/15 +f 129/262/16 128/263/16 117/264/16 +f 122/249/17 117/265/1 119/266/3 +f 126/257/18 128/263/37 129/267/20 +f 128/268/42 127/269/42 129/270/42 +f 130/271/1 131/272/2 132/273/3 +f 130/274/4 133/275/5 131/272/6 +f 134/276/2 135/277/2 136/278/2 +f 135/277/7 137/279/7 136/278/7 +f 137/279/8 138/280/8 139/281/8 +f 136/278/6 139/282/6 134/283/6 +f 134/284/9 135/277/9 138/280/9 +f 139/285/10 140/286/11 141/287/12 +f 132/288/13 138/280/13 135/277/13 +f 131/272/14 140/289/14 132/273/14 +f 141/287/15 140/289/15 133/275/15 +f 142/290/16 141/291/16 130/292/16 +f 135/277/17 130/293/1 132/294/3 +f 139/285/18 141/291/19 142/295/20 +f 141/296/42 140/297/42 142/298/42 +f 143/299/1 144/300/2 145/301/3 +f 143/302/4 146/303/5 144/300/6 +f 147/304/2 148/305/2 149/306/2 +f 148/305/7 150/307/7 149/306/7 +f 150/307/8 151/308/8 152/309/8 +f 149/306/6 152/310/6 147/311/6 +f 147/312/9 148/305/9 151/308/9 +f 152/313/10 153/314/11 154/315/12 +f 145/316/13 151/308/13 148/305/13 +f 144/300/14 153/317/14 145/301/14 +f 154/315/15 153/317/15 146/303/15 +f 155/318/16 154/319/16 143/320/16 +f 148/305/17 143/321/1 145/322/3 +f 152/313/18 154/319/43 155/323/44 +f 154/324/45 153/325/45 155/326/45 +f 156/327/1 157/328/2 158/329/3 +f 156/330/4 159/331/5 157/328/6 +f 160/332/2 161/333/2 162/334/2 +f 161/333/7 163/335/7 162/334/7 +f 163/335/8 164/336/8 165/337/8 +f 162/334/6 165/338/6 160/339/6 +f 160/340/9 161/333/9 164/336/9 +f 165/341/10 166/342/11 167/343/12 +f 158/344/13 164/336/13 161/333/13 +f 157/328/14 166/345/14 158/329/14 +f 167/343/15 166/345/15 159/331/15 +f 168/346/16 167/347/16 156/348/16 +f 161/333/17 156/349/1 158/350/3 +f 165/341/18 167/347/37 168/351/38 +f 167/352/42 166/353/42 168/354/42 +f 1/4/4 12/355/46 4/5/5 +f 6/7/7 9/10/7 8/9/7 +f 7/8/6 8/9/6 10/12/6 +f 5/14/9 9/10/9 10/356/9 +f 10/15/10 9/10/47 11/16/11 +f 3/18/13 11/357/13 9/10/13 +f 2/2/14 4/5/14 11/19/14 +f 6/7/17 5/358/17 1/23/1 +f 13/25/20 1/22/48 10/15/18 +f 1/22/48 5/358/48 10/15/18 +f 15/30/24 18/33/24 17/32/24 +f 14/35/25 16/31/25 17/32/25 +f 14/37/26 19/359/26 18/33/26 +f 21/39/27 24/42/27 23/41/27 +f 22/40/26 23/41/26 25/44/26 +f 20/46/9 25/360/9 24/42/9 +f 26/50/4 37/361/46 29/51/5 +f 31/53/7 34/56/7 33/55/7 +f 32/54/6 33/55/6 35/58/6 +f 30/60/9 34/56/9 35/362/9 +f 35/61/10 34/56/47 36/62/11 +f 28/64/13 36/363/13 34/56/13 +f 27/48/14 29/51/14 36/65/14 +f 31/53/17 30/364/17 26/69/1 +f 38/71/29 26/68/48 35/61/18 +f 26/68/48 30/364/48 35/61/18 +f 39/78/4 50/365/46 42/79/5 +f 44/81/7 47/84/7 46/83/7 +f 45/82/6 46/83/6 48/86/6 +f 43/88/9 47/84/9 48/366/9 +f 48/89/10 47/84/47 49/90/11 +f 41/92/13 49/367/13 47/84/13 +f 40/76/14 42/79/14 49/93/14 +f 44/81/17 43/368/17 39/97/1 +f 51/99/29 39/96/48 48/89/18 +f 39/96/48 43/368/48 48/89/18 +f 52/106/4 63/369/46 55/107/5 +f 57/109/7 60/112/7 59/111/7 +f 58/110/6 59/111/6 61/114/6 +f 56/116/9 60/112/9 61/370/9 +f 61/117/10 60/112/47 62/118/11 +f 54/120/13 62/371/13 60/112/13 +f 53/104/14 55/107/14 62/121/14 +f 57/109/17 56/372/17 52/125/1 +f 64/127/29 52/124/48 61/117/18 +f 52/124/48 56/372/48 61/117/18 +f 65/134/4 76/373/46 68/135/5 +f 70/137/7 73/140/7 72/139/7 +f 71/138/6 72/139/6 74/142/6 +f 69/144/9 73/140/9 74/374/9 +f 74/145/10 73/140/47 75/146/11 +f 67/148/13 75/375/13 73/140/13 +f 66/132/14 68/135/14 75/149/14 +f 70/137/17 69/376/17 65/153/1 +f 77/155/38 65/152/48 74/145/18 +f 65/152/48 69/376/48 74/145/49 +f 78/162/4 89/377/46 81/163/5 +f 83/165/7 86/168/7 85/167/7 +f 84/166/6 85/167/6 87/170/6 +f 82/172/9 86/168/9 87/378/9 +f 87/173/10 86/168/47 88/174/11 +f 80/176/13 88/379/13 86/168/13 +f 79/160/14 81/163/14 88/177/14 +f 83/165/17 82/380/17 78/181/1 +f 90/183/20 78/180/48 87/173/18 +f 78/180/48 82/380/48 87/173/18 +f 91/190/4 102/381/46 94/191/5 +f 96/193/7 99/196/7 98/195/7 +f 97/194/6 98/195/6 100/198/6 +f 95/200/9 99/196/9 100/382/9 +f 100/201/10 99/196/47 101/202/11 +f 93/204/13 101/383/13 99/196/13 +f 92/188/14 94/191/14 101/205/14 +f 96/193/17 95/384/17 91/209/1 +f 103/211/20 91/208/48 100/201/18 +f 91/208/48 95/384/48 100/201/18 +f 104/218/4 115/385/46 107/219/5 +f 109/221/7 112/224/7 111/223/7 +f 110/222/6 111/223/6 113/226/6 +f 108/228/9 112/224/9 113/386/9 +f 113/229/10 112/224/47 114/230/11 +f 106/232/13 114/387/13 112/224/13 +f 105/216/14 107/219/14 114/233/14 +f 109/221/17 108/388/17 104/237/1 +f 116/239/20 104/236/48 113/229/18 +f 104/236/48 108/388/48 113/229/18 +f 117/246/4 128/389/46 120/247/5 +f 122/249/7 125/252/7 124/251/7 +f 123/250/6 124/251/6 126/254/6 +f 121/256/9 125/252/9 126/390/9 +f 126/257/10 125/252/47 127/258/11 +f 119/260/13 127/391/13 125/252/13 +f 118/244/14 120/247/14 127/261/14 +f 122/249/17 121/392/17 117/265/1 +f 129/267/20 117/264/48 126/257/18 +f 117/264/48 121/392/48 126/257/18 +f 130/274/4 141/393/46 133/275/5 +f 135/277/7 138/280/7 137/279/7 +f 136/278/6 137/279/6 139/282/6 +f 134/284/9 138/280/9 139/394/9 +f 139/285/10 138/280/47 140/286/11 +f 132/288/13 140/395/13 138/280/13 +f 131/272/14 133/275/14 140/289/14 +f 135/277/17 134/396/17 130/293/1 +f 142/295/20 130/292/48 139/285/18 +f 130/292/48 134/396/48 139/285/49 +f 143/302/4 154/397/46 146/303/5 +f 148/305/7 151/308/7 150/307/7 +f 149/306/6 150/307/6 152/310/6 +f 147/312/9 151/308/9 152/398/9 +f 152/313/10 151/308/47 153/314/11 +f 145/316/13 153/399/13 151/308/13 +f 144/300/14 146/303/14 153/317/14 +f 148/305/17 147/400/17 143/321/1 +f 155/323/44 143/320/48 152/313/18 +f 143/320/48 147/400/48 152/313/18 +f 156/330/4 167/401/46 159/331/5 +f 161/333/7 164/336/7 163/335/7 +f 162/334/6 163/335/6 165/338/6 +f 160/340/9 164/336/9 165/402/9 +f 165/341/10 164/336/47 166/342/11 +f 158/344/13 166/403/13 164/336/13 +f 157/328/14 159/331/14 166/345/14 +f 161/333/17 160/404/17 156/349/1 +f 168/351/38 156/348/48 165/341/18 +f 156/348/48 160/404/48 165/341/18 +f 169/405/2 170/406/2 171/407/2 +f 172/408/50 171/409/50 173/410/50 +f 174/411/51 175/412/51 171/409/51 +f 176/413/52 177/414/52 175/412/52 +f 178/415/53 179/416/53 177/414/53 +f 180/417/54 181/418/54 179/416/54 +f 182/419/55 183/420/55 181/418/55 +f 184/421/56 185/422/56 183/420/56 +f 186/423/57 187/424/57 185/422/57 +f 188/425/58 169/426/58 187/424/58 +f 189/427/59 170/428/59 169/426/59 +f 170/406/26 172/429/26 173/430/26 +f 178/431/8 176/432/8 186/433/8 +f 170/406/2 173/430/2 171/407/2 +f 171/407/2 175/434/2 187/435/2 +f 175/434/2 177/436/2 185/437/2 +f 177/436/2 179/438/2 185/437/2 +f 179/438/2 181/439/2 183/440/2 +f 185/437/2 179/438/2 183/440/2 +f 185/437/2 187/435/2 175/434/2 +f 187/435/2 169/405/2 171/407/2 +f 172/408/50 174/411/50 171/409/50 +f 174/411/51 176/413/51 175/412/51 +f 176/413/52 178/415/52 177/414/52 +f 178/415/53 180/417/53 179/416/53 +f 180/417/54 182/419/54 181/418/54 +f 182/419/55 184/421/55 183/420/55 +f 184/421/56 186/423/56 185/422/56 +f 186/423/57 188/425/57 187/424/57 +f 188/425/58 189/427/58 169/426/58 +f 189/427/59 190/441/59 170/428/59 +f 170/406/26 190/442/26 172/429/26 +f 176/432/8 174/443/8 189/444/8 +f 174/443/8 172/429/8 189/444/8 +f 172/429/8 190/442/8 189/444/8 +f 189/444/8 188/445/8 176/432/8 +f 188/445/8 186/433/8 176/432/8 +f 186/433/8 184/446/8 178/431/8 +f 184/446/8 182/447/8 180/448/8 +f 178/431/8 184/446/8 180/448/8 +f 191/449/60 192/450/60 193/451/60 +f 194/452/61 195/453/61 192/450/61 +f 196/454/62 197/455/62 195/453/62 +f 198/456/63 199/457/63 197/455/63 +f 200/458/64 201/459/64 199/457/64 +f 202/460/65 203/461/65 201/459/65 +f 204/462/66 205/463/66 203/461/66 +f 206/464/67 207/465/67 205/463/67 +f 208/466/68 209/467/68 207/465/68 +f 210/468/69 211/469/69 209/467/69 +f 212/470/70 213/471/70 211/469/70 +f 214/472/71 215/473/71 213/471/71 +f 216/474/72 217/475/72 215/473/72 +f 218/476/73 219/477/73 217/475/73 +f 220/478/74 221/479/74 219/477/74 +f 222/480/75 223/481/76 221/479/76 +f 224/482/77 225/483/77 223/481/77 +f 226/484/78 227/485/78 225/483/78 +f 228/486/79 229/487/79 227/485/79 +f 230/488/80 231/489/80 229/487/80 +f 232/490/81 233/491/81 231/489/81 +f 234/492/82 235/493/82 233/491/82 +f 212/494/8 204/495/8 196/496/8 +f 236/497/83 237/498/83 235/493/83 +f 238/499/84 193/500/84 237/498/84 +f 239/501/73 240/502/73 241/503/73 +f 242/504/61 243/505/61 244/506/61 +f 245/507/64 246/508/64 243/505/64 +f 247/509/67 248/510/67 246/508/67 +f 249/511/70 250/512/70 248/510/70 +f 251/513/73 252/514/73 250/512/73 +f 253/515/77 254/516/77 252/514/77 +f 247/517/8 242/518/8 255/519/8 +f 255/520/80 256/521/80 254/516/80 +f 257/522/83 244/523/83 256/521/83 +f 248/524/2 252/525/2 256/526/2 +f 250/527/85 258/528/85 248/529/85 +f 248/529/86 259/530/86 246/531/86 +f 246/531/87 260/532/87 243/533/87 +f 260/532/88 244/534/88 243/533/88 +f 261/535/89 256/536/89 244/534/89 +f 262/537/90 254/538/90 256/536/90 +f 263/539/91 252/540/91 254/538/91 +f 264/541/92 250/527/92 252/540/92 +f 265/542/80 259/543/80 258/544/80 +f 266/545/83 258/544/83 267/546/83 +f 268/547/70 262/548/70 261/549/70 +f 269/550/73 261/551/73 260/552/73 +f 270/553/77 260/552/77 259/543/77 +f 271/554/61 267/546/61 264/555/61 +f 272/556/60 273/557/60 274/558/60 +f 275/559/61 276/560/61 273/557/61 +f 277/561/62 278/562/62 276/560/62 +f 279/563/93 280/564/93 278/562/93 +f 281/565/64 282/566/64 280/564/64 +f 283/567/65 284/568/65 282/566/65 +f 285/569/66 286/570/66 284/568/66 +f 287/571/67 288/572/67 286/570/67 +f 289/573/68 290/574/68 288/572/68 +f 291/575/69 292/576/69 290/574/69 +f 293/577/70 294/578/70 292/576/70 +f 295/579/71 296/580/71 294/578/71 +f 297/581/72 298/582/72 296/580/72 +f 299/583/73 300/584/73 298/582/73 +f 301/585/74 302/586/74 300/584/74 +f 303/587/75 304/588/75 302/586/75 +f 305/589/77 306/590/77 304/588/77 +f 307/591/78 308/592/78 306/590/78 +f 309/593/79 310/594/79 308/592/79 +f 311/595/80 312/596/80 310/594/80 +f 313/597/81 314/598/81 312/596/81 +f 315/599/82 316/600/82 314/598/82 +f 309/601/8 293/602/8 277/603/8 +f 317/604/83 318/605/83 316/600/83 +f 319/606/84 274/607/84 318/605/84 +f 310/608/2 318/609/2 286/610/2 +f 320/611/60 321/612/60 322/613/60 +f 323/614/61 324/615/61 321/612/61 +f 325/616/62 326/617/62 324/615/62 +f 327/618/63 328/619/63 326/617/63 +f 329/620/64 330/621/64 328/619/64 +f 331/622/65 332/623/65 330/621/65 +f 333/624/66 334/625/66 332/623/66 +f 335/626/67 336/627/67 334/625/67 +f 337/628/68 338/629/68 336/627/68 +f 339/630/69 340/631/69 338/629/69 +f 341/632/70 342/633/70 340/631/70 +f 343/634/71 344/635/71 342/633/71 +f 345/636/72 346/637/72 344/635/72 +f 347/638/73 348/639/73 346/637/73 +f 349/640/74 350/641/74 348/639/94 +f 351/642/75 352/643/75 350/641/75 +f 353/644/77 354/645/77 352/643/77 +f 355/646/78 356/647/78 354/645/78 +f 357/648/79 358/649/79 356/647/79 +f 359/650/80 360/651/80 358/649/80 +f 361/652/81 362/653/81 360/651/81 +f 363/654/82 364/655/82 362/653/82 +f 341/656/8 333/657/8 325/658/8 +f 365/659/83 366/660/83 364/655/83 +f 367/661/84 322/662/84 366/660/84 +f 350/663/2 358/664/2 366/665/2 +f 368/666/60 369/667/60 370/668/60 +f 371/669/61 372/670/61 369/667/61 +f 373/671/62 374/672/62 372/670/62 +f 375/673/63 376/674/63 374/672/63 +f 377/675/64 378/676/64 376/674/64 +f 379/677/65 380/678/65 378/676/65 +f 381/679/66 382/680/66 380/678/66 +f 383/681/67 384/682/67 382/680/67 +f 385/683/68 386/684/68 384/682/68 +f 387/685/69 388/686/69 386/684/69 +f 389/687/70 390/688/70 388/686/70 +f 391/689/71 392/690/71 390/688/71 +f 393/691/72 394/692/72 392/690/72 +f 395/693/73 396/694/73 394/692/73 +f 397/695/74 398/696/74 396/694/74 +f 399/697/75 400/698/75 398/696/75 +f 401/699/77 402/700/77 400/698/77 +f 403/701/78 404/702/78 402/700/78 +f 405/703/79 406/704/79 404/702/79 +f 407/705/80 408/706/80 406/704/80 +f 409/707/81 410/708/81 408/706/81 +f 411/709/82 412/710/82 410/708/82 +f 389/711/8 381/712/8 373/713/8 +f 413/714/83 414/715/83 412/710/83 +f 415/716/84 370/717/84 414/715/84 +f 398/718/2 406/719/2 414/720/2 +f 416/721/60 417/722/60 418/723/60 +f 419/724/61 420/725/61 417/722/61 +f 421/726/62 422/727/62 420/725/62 +f 423/728/63 424/729/63 422/727/63 +f 425/730/64 426/731/64 424/729/64 +f 427/732/65 428/733/65 426/731/65 +f 429/734/66 430/735/66 428/733/66 +f 431/736/67 432/737/67 430/735/67 +f 433/738/68 434/739/68 432/737/68 +f 435/740/69 436/741/69 434/739/69 +f 437/742/70 438/743/70 436/741/70 +f 439/744/71 440/745/71 438/743/71 +f 441/746/72 442/747/72 440/745/72 +f 443/748/73 444/749/73 442/747/73 +f 445/750/74 446/751/74 444/749/74 +f 447/752/75 448/753/75 446/751/76 +f 449/754/77 450/755/77 448/753/77 +f 451/756/78 452/757/78 450/755/78 +f 453/758/79 454/759/79 452/757/79 +f 455/760/80 456/761/80 454/759/80 +f 457/762/81 458/763/81 456/761/81 +f 459/764/82 460/765/82 458/763/82 +f 437/766/8 429/767/8 421/768/8 +f 461/769/83 462/770/83 460/765/83 +f 463/771/84 418/772/84 462/770/84 +f 446/773/2 454/774/2 462/775/2 +f 464/776/60 465/777/60 466/778/60 +f 467/779/61 468/780/61 465/777/61 +f 469/781/95 470/782/62 468/780/62 +f 471/783/63 472/784/63 470/782/63 +f 473/785/64 474/786/64 472/784/64 +f 475/787/65 476/788/65 474/786/65 +f 477/789/66 478/790/66 476/788/66 +f 479/791/67 480/792/67 478/790/67 +f 481/793/68 482/794/68 480/792/68 +f 483/795/96 484/796/69 482/794/69 +f 485/797/70 486/798/70 484/796/70 +f 487/799/71 488/800/71 486/798/71 +f 489/801/72 490/802/72 488/800/72 +f 491/803/73 492/804/73 490/802/73 +f 493/805/74 494/806/94 492/804/94 +f 495/807/75 496/808/76 494/806/76 +f 497/809/77 498/810/77 496/808/77 +f 499/811/78 500/812/78 498/810/78 +f 501/813/79 502/814/79 500/812/79 +f 503/815/80 504/816/80 502/814/80 +f 505/817/81 506/818/81 504/816/81 +f 507/819/82 508/820/82 506/818/82 +f 485/821/8 477/822/8 469/823/8 +f 509/824/83 510/825/83 508/820/83 +f 511/826/84 466/827/84 510/825/84 +f 494/828/2 502/829/2 510/830/2 +f 512/831/2 192/832/2 241/503/2 +f 241/503/2 195/833/2 239/501/2 +f 239/501/2 197/834/2 513/835/2 +f 513/835/2 199/836/2 514/837/2 +f 514/837/2 201/838/2 515/839/2 +f 515/839/2 203/840/2 516/841/2 +f 517/842/2 203/840/2 205/843/2 +f 518/844/2 205/843/2 207/845/2 +f 519/846/2 207/845/2 209/847/2 +f 520/848/2 209/847/2 211/849/2 +f 521/850/2 211/849/2 213/851/2 +f 522/852/2 213/851/2 215/853/2 +f 522/852/2 217/854/2 523/855/2 +f 523/855/2 219/856/2 524/857/2 +f 524/857/2 221/858/2 525/859/2 +f 525/859/2 223/860/2 526/861/2 +f 526/861/2 225/862/2 527/863/2 +f 527/863/2 227/864/2 528/865/2 +f 529/866/2 227/864/2 229/867/2 +f 530/868/2 229/867/2 231/869/2 +f 531/870/2 231/869/2 233/871/2 +f 532/872/2 233/871/2 235/873/2 +f 533/874/2 235/873/2 237/875/2 +f 512/831/2 237/875/2 193/876/2 +f 534/877/2 535/878/2 536/879/2 +f 527/863/64 537/880/64 526/861/64 +f 520/848/82 538/881/82 519/846/82 +f 513/835/74 539/882/74 239/501/74 +f 528/865/65 540/883/65 527/863/65 +f 521/850/83 541/884/83 520/848/83 +f 514/837/75 542/885/75 513/835/75 +f 529/866/66 543/886/66 528/865/66 +f 522/852/84 544/887/84 521/850/84 +f 515/839/77 545/888/77 514/837/77 +f 530/868/67 546/889/67 529/866/67 +f 523/855/60 547/890/60 522/852/60 +f 516/841/78 548/891/78 515/839/78 +f 531/870/68 549/892/68 530/868/68 +f 524/857/61 550/893/61 523/855/61 +f 517/842/79 551/894/79 516/841/79 +f 532/872/69 534/877/69 531/870/69 +f 525/859/62 552/895/62 524/857/62 +f 518/844/80 553/896/80 517/842/80 +f 533/874/70 535/878/70 532/872/70 +f 241/503/72 554/897/72 512/831/72 +f 526/861/93 536/879/93 525/859/93 +f 519/846/81 555/898/81 518/844/81 +f 512/831/71 556/899/71 533/874/71 +f 271/554/97 263/539/98 557/900/99 +f 191/449/60 194/452/60 192/450/60 +f 194/452/61 196/454/61 195/453/61 +f 196/454/62 198/456/62 197/455/62 +f 198/456/63 200/458/63 199/457/63 +f 200/458/64 202/460/64 201/459/64 +f 202/460/65 204/462/65 203/461/65 +f 204/462/66 206/464/66 205/463/66 +f 206/464/67 208/466/67 207/465/67 +f 208/466/68 210/468/68 209/467/68 +f 210/468/69 212/470/69 211/469/69 +f 212/470/70 214/472/70 213/471/70 +f 214/472/71 216/474/71 215/473/71 +f 216/474/72 218/476/72 217/475/72 +f 218/476/73 220/478/73 219/477/73 +f 220/478/74 222/480/74 221/479/74 +f 222/480/75 224/482/75 223/481/76 +f 224/482/77 226/484/77 225/483/77 +f 226/484/78 228/486/78 227/485/78 +f 228/486/79 230/488/79 229/487/79 +f 230/488/80 232/490/80 231/489/80 +f 232/490/81 234/492/81 233/491/81 +f 234/492/82 236/497/82 235/493/82 +f 196/496/8 194/901/8 191/902/8 +f 191/902/8 238/903/8 196/496/8 +f 238/903/8 236/904/8 196/496/8 +f 236/904/8 234/905/8 232/906/8 +f 232/906/8 230/907/8 228/908/8 +f 228/908/8 226/909/8 224/910/8 +f 224/910/8 222/911/8 228/908/8 +f 222/911/8 220/912/8 228/908/8 +f 220/912/8 218/913/8 216/914/8 +f 216/914/8 214/915/8 212/494/8 +f 212/494/8 210/916/8 208/917/8 +f 208/917/8 206/918/8 204/495/8 +f 204/495/8 202/919/8 200/920/8 +f 200/920/8 198/921/8 204/495/8 +f 198/921/8 196/496/8 204/495/8 +f 236/904/8 232/906/8 228/908/8 +f 220/912/8 216/914/8 228/908/8 +f 216/914/8 212/494/8 228/908/8 +f 212/494/8 208/917/8 204/495/8 +f 196/496/8 236/904/8 212/494/8 +f 236/904/8 228/908/8 212/494/8 +f 236/497/83 238/499/83 237/498/83 +f 238/499/84 191/922/84 193/500/84 +f 239/501/73 539/882/73 240/502/73 +f 242/504/61 245/507/61 243/505/61 +f 245/507/64 247/509/64 246/508/64 +f 247/509/67 249/511/67 248/510/67 +f 249/511/70 251/513/70 250/512/70 +f 251/513/73 253/515/73 252/514/73 +f 253/515/77 255/520/77 254/516/77 +f 247/517/8 245/923/8 242/518/8 +f 242/518/8 257/924/8 255/519/8 +f 255/519/8 253/925/8 247/517/8 +f 253/925/8 251/926/8 247/517/8 +f 251/926/8 249/927/8 247/517/8 +f 255/520/80 257/522/80 256/521/80 +f 257/522/83 242/928/83 244/523/83 +f 256/526/2 244/929/2 248/524/2 +f 244/929/2 243/930/2 248/524/2 +f 243/930/2 246/931/2 248/524/2 +f 248/524/2 250/932/2 252/525/2 +f 252/525/2 254/933/2 256/526/2 +f 250/527/85 267/934/85 258/528/85 +f 248/529/86 258/528/86 259/530/86 +f 246/531/87 259/530/87 260/532/87 +f 260/532/88 261/535/88 244/534/88 +f 261/535/89 262/537/89 256/536/89 +f 262/537/90 263/539/90 254/538/90 +f 263/539/91 264/541/91 252/540/91 +f 264/541/92 267/934/92 250/527/92 +f 265/542/80 270/553/80 259/543/80 +f 266/545/83 265/542/83 258/544/83 +f 268/547/70 557/900/70 262/548/70 +f 269/550/73 268/935/73 261/551/73 +f 270/553/77 269/550/77 260/552/77 +f 271/554/61 266/545/61 267/546/61 +f 272/556/60 275/559/60 273/557/60 +f 275/559/61 277/561/61 276/560/61 +f 277/561/62 279/563/62 278/562/62 +f 279/563/93 281/565/93 280/564/93 +f 281/565/64 283/567/64 282/566/64 +f 283/567/65 285/569/65 284/568/65 +f 285/569/66 287/571/66 286/570/66 +f 287/571/67 289/573/67 288/572/67 +f 289/573/68 291/575/68 290/574/68 +f 291/575/69 293/577/69 292/576/69 +f 293/577/70 295/579/70 294/578/70 +f 295/579/71 297/581/71 296/580/71 +f 297/581/72 299/583/72 298/582/72 +f 299/583/73 301/585/73 300/584/73 +f 301/585/74 303/587/74 302/586/74 +f 303/587/75 305/589/75 304/588/75 +f 305/589/77 307/591/77 306/590/77 +f 307/591/78 309/593/78 308/592/78 +f 309/593/79 311/595/79 310/594/79 +f 311/595/80 313/597/80 312/596/80 +f 313/597/81 315/599/81 314/598/81 +f 315/599/82 317/604/82 316/600/82 +f 277/603/8 275/936/8 317/937/8 +f 275/936/8 272/938/8 317/937/8 +f 272/938/8 319/939/8 317/937/8 +f 317/937/8 315/940/8 313/941/8 +f 313/941/8 311/942/8 309/601/8 +f 309/601/8 307/943/8 305/944/8 +f 305/944/8 303/945/8 301/946/8 +f 301/946/8 299/947/8 297/948/8 +f 297/948/8 295/949/8 293/602/8 +f 293/602/8 291/950/8 289/951/8 +f 289/951/8 287/952/8 293/602/8 +f 287/952/8 285/953/8 293/602/8 +f 285/953/8 283/954/8 281/955/8 +f 281/955/8 279/956/8 277/603/8 +f 317/937/8 313/941/8 277/603/8 +f 313/941/8 309/601/8 277/603/8 +f 309/601/8 305/944/8 293/602/8 +f 305/944/8 301/946/8 293/602/8 +f 301/946/8 297/948/8 293/602/8 +f 285/953/8 281/955/8 293/602/8 +f 281/955/8 277/603/8 293/602/8 +f 317/604/83 319/606/83 318/605/83 +f 319/606/84 272/957/84 274/607/84 +f 318/609/2 274/958/2 273/959/2 +f 273/959/2 276/960/2 318/609/2 +f 276/960/2 278/961/2 318/609/2 +f 278/961/2 280/962/2 286/610/2 +f 280/962/2 282/963/100 286/610/2 +f 282/963/100 284/964/2 286/610/2 +f 286/610/2 288/965/101 290/966/2 +f 290/966/2 292/967/2 294/968/2 +f 294/968/2 296/969/2 298/970/2 +f 298/970/2 300/971/2 302/972/2 +f 302/972/2 304/973/2 306/974/2 +f 306/974/2 308/975/2 310/608/2 +f 310/608/2 312/976/2 314/977/101 +f 314/977/101 316/978/2 310/608/2 +f 316/978/2 318/609/2 310/608/2 +f 286/610/2 290/966/2 294/968/2 +f 294/968/2 298/970/2 286/610/2 +f 298/970/2 302/972/2 286/610/2 +f 302/972/2 306/974/2 310/608/2 +f 318/609/2 278/961/2 286/610/2 +f 302/972/2 310/608/2 286/610/2 +f 320/611/60 323/614/60 321/612/60 +f 323/614/61 325/616/61 324/615/61 +f 325/616/62 327/618/62 326/617/62 +f 327/618/63 329/620/63 328/619/63 +f 329/620/64 331/622/64 330/621/64 +f 331/622/65 333/624/65 332/623/65 +f 333/624/66 335/626/66 334/625/66 +f 335/626/67 337/628/67 336/627/67 +f 337/628/68 339/630/68 338/629/68 +f 339/630/69 341/632/69 340/631/69 +f 341/632/70 343/634/70 342/633/70 +f 343/634/71 345/636/71 344/635/71 +f 345/636/72 347/638/72 346/637/72 +f 347/638/73 349/640/73 348/639/73 +f 349/640/74 351/642/74 350/641/74 +f 351/642/75 353/644/75 352/643/75 +f 353/644/77 355/646/77 354/645/77 +f 355/646/78 357/648/78 356/647/78 +f 357/648/79 359/650/79 358/649/79 +f 359/650/80 361/652/80 360/651/80 +f 361/652/81 363/654/81 362/653/81 +f 363/654/82 365/659/82 364/655/82 +f 325/658/8 323/979/8 320/980/8 +f 320/980/8 367/981/8 365/982/8 +f 365/982/8 363/983/102 361/984/8 +f 361/984/8 359/985/8 365/982/8 +f 359/985/8 357/986/8 365/982/8 +f 357/986/8 355/987/102 353/988/8 +f 353/988/8 351/989/8 357/986/8 +f 351/989/8 349/990/8 357/986/8 +f 349/990/8 347/991/8 345/992/8 +f 345/992/8 343/993/8 341/656/8 +f 341/656/8 339/994/8 337/995/8 +f 337/995/8 335/996/8 341/656/8 +f 335/996/8 333/657/8 341/656/8 +f 333/657/8 331/997/8 329/998/8 +f 329/998/8 327/999/8 333/657/8 +f 327/999/8 325/658/8 333/657/8 +f 325/658/8 320/980/8 365/982/8 +f 349/990/8 345/992/8 357/986/8 +f 345/992/8 341/656/8 357/986/8 +f 325/658/8 365/982/8 341/656/8 +f 365/982/8 357/986/8 341/656/8 +f 365/659/83 367/661/83 366/660/83 +f 367/661/84 320/1000/84 322/662/84 +f 366/665/2 322/1001/2 321/1002/2 +f 321/1002/2 324/1003/2 366/665/2 +f 324/1003/2 326/1004/2 366/665/2 +f 326/1004/2 328/1005/100 330/1006/2 +f 330/1006/2 332/1007/101 326/1004/2 +f 332/1007/101 334/1008/2 326/1004/2 +f 334/1008/2 336/1009/101 338/1010/2 +f 338/1010/2 340/1011/2 342/1012/2 +f 342/1012/2 344/1013/2 350/663/2 +f 344/1013/2 346/1014/2 350/663/2 +f 346/1014/2 348/1015/101 350/663/2 +f 350/663/2 352/1016/101 354/1017/100 +f 354/1017/100 356/1018/2 350/663/2 +f 356/1018/2 358/664/2 350/663/2 +f 358/664/2 360/1019/101 362/1020/100 +f 362/1020/100 364/1021/2 358/664/2 +f 364/1021/2 366/665/2 358/664/2 +f 334/1008/2 338/1010/2 350/663/2 +f 338/1010/2 342/1012/2 350/663/2 +f 366/665/2 326/1004/2 350/663/2 +f 326/1004/2 334/1008/2 350/663/2 +f 368/666/60 371/669/60 369/667/60 +f 371/669/61 373/671/61 372/670/61 +f 373/671/62 375/673/62 374/672/62 +f 375/673/63 377/675/63 376/674/63 +f 377/675/64 379/677/64 378/676/64 +f 379/677/65 381/679/65 380/678/65 +f 381/679/66 383/681/66 382/680/66 +f 383/681/67 385/683/67 384/682/67 +f 385/683/68 387/685/68 386/684/68 +f 387/685/69 389/687/96 388/686/69 +f 389/687/70 391/689/70 390/688/70 +f 391/689/71 393/691/71 392/690/71 +f 393/691/72 395/693/72 394/692/72 +f 395/693/73 397/695/73 396/694/73 +f 397/695/74 399/697/74 398/696/74 +f 399/697/75 401/699/75 400/698/75 +f 401/699/77 403/701/77 402/700/77 +f 403/701/78 405/703/78 404/702/78 +f 405/703/79 407/705/79 406/704/79 +f 407/705/80 409/707/80 408/706/80 +f 409/707/81 411/709/81 410/708/81 +f 411/709/82 413/714/82 412/710/82 +f 373/713/8 371/1022/8 368/1023/8 +f 368/1023/8 415/1024/8 413/1025/8 +f 413/1025/8 411/1026/103 409/1027/8 +f 409/1027/8 407/1028/8 413/1025/8 +f 407/1028/8 405/1029/8 413/1025/8 +f 405/1029/8 403/1030/8 401/1031/8 +f 401/1031/8 399/1032/8 405/1029/8 +f 399/1032/8 397/1033/8 405/1029/8 +f 397/1033/8 395/1034/8 393/1035/8 +f 393/1035/8 391/1036/8 389/711/8 +f 389/711/8 387/1037/103 385/1038/8 +f 385/1038/8 383/1039/8 389/711/8 +f 383/1039/8 381/712/8 389/711/8 +f 381/712/8 379/1040/8 377/1041/102 +f 377/1041/102 375/1042/8 381/712/8 +f 375/1042/8 373/713/8 381/712/8 +f 373/713/8 368/1023/8 413/1025/8 +f 397/1033/8 393/1035/8 405/1029/8 +f 393/1035/8 389/711/8 405/1029/8 +f 373/713/8 413/1025/8 389/711/8 +f 413/1025/8 405/1029/8 389/711/8 +f 413/714/83 415/716/83 414/715/83 +f 415/716/84 368/1043/84 370/717/84 +f 414/720/2 370/1044/2 369/1045/2 +f 369/1045/2 372/1046/2 414/720/2 +f 372/1046/2 374/1047/2 414/720/2 +f 374/1047/2 376/1048/101 378/1049/2 +f 378/1049/2 380/1050/2 374/1047/2 +f 380/1050/2 382/1051/2 374/1047/2 +f 382/1051/2 384/1052/100 386/1053/2 +f 386/1053/2 388/1054/100 390/1055/2 +f 390/1055/2 392/1056/2 394/1057/2 +f 394/1057/2 396/1058/2 398/718/2 +f 398/718/2 400/1059/2 402/1060/2 +f 402/1060/2 404/1061/2 398/718/2 +f 404/1061/2 406/719/2 398/718/2 +f 406/719/2 408/1062/100 410/1063/101 +f 410/1063/101 412/1064/2 406/719/2 +f 412/1064/2 414/720/2 406/719/2 +f 382/1051/2 386/1053/2 390/1055/2 +f 390/1055/2 394/1057/2 382/1051/2 +f 394/1057/2 398/718/2 382/1051/2 +f 414/720/2 374/1047/2 398/718/2 +f 374/1047/2 382/1051/2 398/718/2 +f 416/721/60 419/724/60 417/722/60 +f 419/724/61 421/726/61 420/725/61 +f 421/726/62 423/728/62 422/727/62 +f 423/728/63 425/730/63 424/729/63 +f 425/730/64 427/732/64 426/731/64 +f 427/732/65 429/734/65 428/733/65 +f 429/734/66 431/736/66 430/735/66 +f 431/736/67 433/738/67 432/737/67 +f 433/738/68 435/740/68 434/739/68 +f 435/740/69 437/742/69 436/741/69 +f 437/742/70 439/744/70 438/743/70 +f 439/744/71 441/746/71 440/745/71 +f 441/746/72 443/748/72 442/747/72 +f 443/748/73 445/750/73 444/749/73 +f 445/750/74 447/752/74 446/751/74 +f 447/752/75 449/754/75 448/753/75 +f 449/754/77 451/756/77 450/755/77 +f 451/756/78 453/758/78 452/757/78 +f 453/758/79 455/760/79 454/759/79 +f 455/760/80 457/762/80 456/761/80 +f 457/762/81 459/764/81 458/763/81 +f 459/764/82 461/769/82 460/765/82 +f 421/768/8 419/1065/8 416/1066/8 +f 416/1066/8 463/1067/8 461/1068/8 +f 461/1068/8 459/1069/103 457/1070/8 +f 457/1070/8 455/1071/8 461/1068/8 +f 455/1071/8 453/1072/8 461/1068/8 +f 453/1072/8 451/1073/8 449/1074/8 +f 449/1074/8 447/1075/8 453/1072/8 +f 447/1075/8 445/1076/8 453/1072/8 +f 445/1076/8 443/1077/8 441/1078/8 +f 441/1078/8 439/1079/8 437/766/8 +f 437/766/8 435/1080/8 433/1081/8 +f 433/1081/8 431/1082/8 437/766/8 +f 431/1082/8 429/767/8 437/766/8 +f 429/767/8 427/1083/8 425/1084/8 +f 425/1084/8 423/1085/8 429/767/8 +f 423/1085/8 421/768/8 429/767/8 +f 421/768/8 416/1066/8 461/1068/8 +f 445/1076/8 441/1078/8 453/1072/8 +f 441/1078/8 437/766/8 453/1072/8 +f 421/768/8 461/1068/8 437/766/8 +f 461/1068/8 453/1072/8 437/766/8 +f 461/769/83 463/771/83 462/770/83 +f 463/771/84 416/1086/84 418/772/84 +f 462/775/2 418/1087/2 417/1088/2 +f 417/1088/2 420/1089/2 462/775/2 +f 420/1089/2 422/1090/2 462/775/2 +f 422/1090/2 424/1091/100 426/1092/101 +f 426/1092/101 428/1093/2 422/1090/2 +f 428/1093/2 430/1094/2 422/1090/2 +f 430/1094/2 432/1095/2 434/1096/2 +f 434/1096/2 436/1097/2 438/1098/2 +f 438/1098/2 440/1099/2 446/773/2 +f 440/1099/2 442/1100/2 446/773/2 +f 442/1100/2 444/1101/2 446/773/2 +f 446/773/2 448/1102/2 450/1103/2 +f 450/1103/2 452/1104/2 446/773/2 +f 452/1104/2 454/774/2 446/773/2 +f 454/774/2 456/1105/101 458/1106/2 +f 458/1106/2 460/1107/2 454/774/2 +f 460/1107/2 462/775/2 454/774/2 +f 430/1094/2 434/1096/2 446/773/2 +f 434/1096/2 438/1098/2 446/773/2 +f 462/775/2 422/1090/2 446/773/2 +f 422/1090/2 430/1094/2 446/773/2 +f 464/776/60 467/779/60 465/777/60 +f 467/779/61 469/781/61 468/780/61 +f 469/781/95 471/783/95 470/782/62 +f 471/783/63 473/785/63 472/784/63 +f 473/785/64 475/787/64 474/786/64 +f 475/787/65 477/789/65 476/788/65 +f 477/789/66 479/791/66 478/790/66 +f 479/791/67 481/793/67 480/792/67 +f 481/793/68 483/795/68 482/794/68 +f 483/795/96 485/797/96 484/796/69 +f 485/797/70 487/799/70 486/798/70 +f 487/799/71 489/801/71 488/800/71 +f 489/801/72 491/803/72 490/802/72 +f 491/803/73 493/805/73 492/804/73 +f 493/805/74 495/807/74 494/806/94 +f 495/807/75 497/809/75 496/808/76 +f 497/809/77 499/811/77 498/810/77 +f 499/811/78 501/813/78 500/812/78 +f 501/813/79 503/815/79 502/814/79 +f 503/815/80 505/817/80 504/816/80 +f 505/817/81 507/819/81 506/818/81 +f 507/819/82 509/824/82 508/820/82 +f 469/823/8 467/1108/8 464/1109/8 +f 464/1109/8 511/1110/8 469/823/8 +f 511/1110/8 509/1111/8 469/823/8 +f 509/1111/8 507/1112/8 505/1113/8 +f 505/1113/8 503/1114/8 509/1111/8 +f 503/1114/8 501/1115/8 509/1111/8 +f 501/1115/8 499/1116/8 497/1117/8 +f 497/1117/8 495/1118/8 501/1115/8 +f 495/1118/8 493/1119/8 501/1115/8 +f 493/1119/8 491/1120/8 489/1121/8 +f 489/1121/8 487/1122/8 485/821/8 +f 485/821/8 483/1123/8 481/1124/8 +f 481/1124/8 479/1125/8 485/821/8 +f 479/1125/8 477/822/8 485/821/8 +f 477/822/8 475/1126/8 473/1127/8 +f 473/1127/8 471/1128/8 477/822/8 +f 471/1128/8 469/823/8 477/822/8 +f 493/1119/8 489/1121/8 501/1115/8 +f 489/1121/8 485/821/8 501/1115/8 +f 469/823/8 509/1111/8 485/821/8 +f 509/1111/8 501/1115/8 485/821/8 +f 509/824/83 511/826/83 510/825/83 +f 511/826/84 464/1129/84 466/827/84 +f 510/830/2 466/1130/2 465/1131/2 +f 465/1131/2 468/1132/2 510/830/2 +f 468/1132/2 470/1133/2 510/830/2 +f 470/1133/2 472/1134/2 474/1135/2 +f 474/1135/2 476/1136/2 470/1133/2 +f 476/1136/2 478/1137/2 470/1133/2 +f 478/1137/2 480/1138/100 482/1139/2 +f 482/1139/2 484/1140/2 486/1141/2 +f 486/1141/2 488/1142/2 494/828/2 +f 488/1142/2 490/1143/2 494/828/2 +f 490/1143/2 492/1144/2 494/828/2 +f 494/828/2 496/1145/2 498/1146/2 +f 498/1146/2 500/1147/2 494/828/2 +f 500/1147/2 502/829/2 494/828/2 +f 502/829/2 504/1148/2 506/1149/2 +f 506/1149/2 508/1150/2 502/829/2 +f 508/1150/2 510/830/2 502/829/2 +f 478/1137/2 482/1139/2 494/828/2 +f 482/1139/2 486/1141/2 494/828/2 +f 510/830/2 470/1133/2 494/828/2 +f 470/1133/2 478/1137/2 494/828/2 +f 512/831/2 193/876/2 192/832/2 +f 241/503/2 192/832/2 195/833/2 +f 239/501/2 195/833/2 197/834/2 +f 513/835/2 197/834/2 199/836/2 +f 514/837/2 199/836/2 201/838/2 +f 515/839/2 201/838/2 203/840/2 +f 517/842/2 516/841/2 203/840/2 +f 518/844/2 517/842/2 205/843/2 +f 519/846/2 518/844/2 207/845/2 +f 520/848/2 519/846/2 209/847/2 +f 521/850/2 520/848/2 211/849/2 +f 522/852/2 521/850/2 213/851/2 +f 522/852/2 215/853/2 217/854/2 +f 523/855/2 217/854/2 219/856/2 +f 524/857/2 219/856/2 221/858/2 +f 525/859/2 221/858/2 223/860/2 +f 526/861/2 223/860/2 225/862/2 +f 527/863/2 225/862/2 227/864/2 +f 529/866/2 528/865/2 227/864/2 +f 530/868/2 529/866/2 229/867/2 +f 531/870/2 530/868/2 231/869/2 +f 532/872/2 531/870/2 233/871/2 +f 533/874/2 532/872/2 235/873/2 +f 512/831/2 533/874/2 237/875/2 +f 556/899/2 554/897/2 547/890/2 +f 554/897/2 240/502/2 544/887/2 +f 240/502/2 539/882/2 544/887/2 +f 539/882/2 542/885/2 541/884/2 +f 544/887/2 539/882/2 541/884/2 +f 542/885/2 545/888/2 555/898/2 +f 545/888/2 548/891/2 553/896/2 +f 548/891/2 551/894/2 553/896/2 +f 553/896/2 555/898/2 545/888/2 +f 555/898/2 538/881/2 542/885/2 +f 538/881/2 541/884/2 542/885/2 +f 544/887/2 547/890/2 554/897/2 +f 547/890/2 550/893/2 556/899/2 +f 550/893/2 552/895/2 556/899/2 +f 552/895/2 536/879/2 535/878/2 +f 556/899/2 552/895/2 535/878/2 +f 536/879/2 537/880/2 549/892/2 +f 537/880/2 540/883/2 546/889/2 +f 540/883/2 543/886/2 546/889/2 +f 546/889/2 549/892/2 537/880/2 +f 549/892/2 534/877/2 536/879/2 +f 527/863/64 540/883/64 537/880/64 +f 520/848/82 541/884/82 538/881/82 +f 513/835/74 542/885/74 539/882/74 +f 528/865/65 543/886/65 540/883/65 +f 521/850/83 544/887/83 541/884/83 +f 514/837/75 545/888/75 542/885/75 +f 529/866/66 546/889/66 543/886/66 +f 522/852/84 547/890/84 544/887/84 +f 515/839/77 548/891/77 545/888/77 +f 530/868/67 549/892/67 546/889/67 +f 523/855/60 550/893/60 547/890/60 +f 516/841/78 551/894/78 548/891/78 +f 531/870/68 534/877/68 549/892/68 +f 524/857/61 552/895/61 550/893/61 +f 517/842/79 553/896/79 551/894/79 +f 532/872/69 535/878/69 534/877/69 +f 525/859/62 536/879/62 552/895/62 +f 518/844/80 555/898/80 553/896/80 +f 533/874/70 556/899/70 535/878/70 +f 241/503/72 240/502/72 554/897/72 +f 526/861/93 537/880/93 536/879/93 +f 519/846/81 538/881/81 555/898/81 +f 512/831/71 554/897/71 556/899/71 +f 557/900/99 268/547/2 269/550/2 +f 269/550/2 270/553/2 557/900/99 +f 270/553/2 265/542/2 271/554/97 +f 557/900/99 270/553/2 271/554/97 +f 265/542/2 266/545/2 271/554/97 +f 271/554/97 264/541/64 263/539/98 +f 263/539/98 262/548/67 557/900/99 +f 558/1151/104 559/1152/104 560/1153/104 +f 561/1154/105 562/1155/105 563/1156/105 +f 564/1157/106 559/1158/106 565/1159/106 +f 566/1160/107 565/1159/107 567/1161/107 +f 568/1162/108 566/1163/108 567/1161/108 +f 569/1164/106 570/1165/106 571/1166/106 +f 572/1167/109 568/1162/109 573/1168/109 +f 574/1169/110 575/1170/110 576/1171/110 +f 573/1168/105 577/1172/105 572/1167/105 +f 578/1173/111 576/1174/111 577/1172/111 +f 579/1175/112 558/1176/112 575/1177/112 +f 580/1178/25 581/1179/25 582/1180/25 +f 583/1181/9 584/1182/9 585/1183/9 +f 586/1184/26 587/1185/26 580/1186/26 +f 588/1187/113 589/1188/113 590/1189/113 +f 591/1190/114 592/1191/114 589/1192/114 +f 589/1193/115 591/1194/116 593/1195/115 +f 594/1196/117 595/1197/117 592/1191/117 +f 596/1198/118 597/1199/118 598/1200/118 +f 599/1201/119 600/1202/119 601/1203/119 +f 595/1197/120 602/1204/120 603/1205/120 +f 604/1206/121 605/1207/122 593/1208/123 +f 605/1209/118 603/1210/118 602/1211/118 +f 606/1212/25 607/1213/25 608/1214/25 +f 609/1215/9 610/1216/9 611/1217/9 +f 612/1218/8 608/1219/8 610/1220/8 +f 611/1221/6 608/1222/6 607/1223/6 +f 613/1224/26 612/1225/26 609/1226/26 +f 614/1227/124 615/1228/124 616/1229/124 +f 617/1230/125 618/1231/125 619/1232/125 +f 618/1233/126 620/1234/126 619/1235/126 +f 621/1236/127 620/1237/127 622/1238/127 +f 616/1239/128 617/1240/128 614/1241/128 +f 623/1242/9 621/1243/9 624/1244/9 +f 625/1245/129 626/1246/129 615/1228/129 +f 621/1247/130 627/1248/130 628/1249/130 +f 629/1250/131 623/1251/131 626/1252/131 +f 625/1253/25 614/1254/25 617/1255/25 +f 630/1256/26 631/1257/26 632/1258/26 +f 630/1259/132 633/1260/132 634/1261/132 +f 635/1262/133 636/1263/133 631/1264/133 +f 637/1265/134 633/1266/134 638/1267/134 +f 636/1268/135 639/1269/135 640/1270/135 +f 641/1271/136 639/1272/136 642/1273/136 +f 638/1274/137 643/1275/137 637/1276/137 +f 642/1277/138 644/1278/138 641/1279/138 +f 645/1280/139 646/1281/139 647/1282/139 +f 648/1283/140 649/1284/140 646/1285/140 +f 650/1286/141 651/1287/141 652/1288/141 +f 649/1289/9 641/1290/9 644/1291/9 +f 653/1292/142 647/1293/142 654/1294/142 +f 651/1295/25 642/1296/25 643/1297/25 +f 652/1298/143 655/1299/143 650/1300/143 +f 654/1301/144 656/1302/144 653/1303/144 +f 657/1304/145 658/1305/145 656/1306/145 +f 659/1307/146 660/1308/146 658/1309/146 +f 661/1310/147 662/1311/147 663/1312/147 +f 664/1313/9 665/1314/9 666/1315/9 +f 667/1316/6 668/1317/6 669/1318/6 +f 670/1319/148 667/1320/148 669/1321/148 +f 671/1322/149 672/1323/149 673/1324/149 +f 666/1325/150 670/1326/150 674/1327/150 +f 663/1328/25 671/1329/25 675/1330/25 +f 676/1331/151 664/1332/151 677/1333/151 +f 678/1334/149 677/1335/149 679/1336/149 +f 680/1337/150 681/1338/150 682/1339/150 +f 683/1340/148 684/1341/148 685/1342/148 +f 685/1343/6 684/1344/6 686/1345/6 +f 687/1346/6 669/1318/6 668/1347/6 +f 674/1348/152 679/1349/152 666/1350/152 +f 662/1351/151 672/1352/151 688/1353/151 +f 680/1354/152 675/1355/152 671/1356/152 +f 689/1357/147 665/1358/147 664/1359/147 +f 689/1360/25 678/1361/25 674/1362/25 +f 690/1363/153 681/1364/9 691/1365/154 +f 587/1366/2 583/1367/2 581/1368/2 +f 613/1369/2 611/1370/2 607/1371/2 +f 692/1372/25 589/1373/25 592/1374/25 +f 692/1372/25 595/1375/25 693/1376/25 +f 693/1376/25 603/1377/25 694/1378/25 +f 599/1201/25 589/1379/25 695/1380/25 +f 599/1201/25 696/1381/25 604/1382/25 +f 601/1203/9 603/1210/25 696/1381/25 +f 697/1383/25 698/1384/25 699/1385/25 +f 694/1378/120 700/1386/120 693/1376/120 +f 692/1372/114 699/1385/114 695/1387/114 +f 601/1203/118 697/1388/118 694/1389/118 +f 695/1380/155 698/1390/155 599/1201/155 +f 693/1376/117 701/1391/117 692/1372/117 +f 702/1392/9 591/1393/9 593/1394/9 +f 703/1395/9 704/1396/9 594/1397/9 +f 703/1398/9 591/1190/9 705/1399/9 +f 598/1200/25 593/1394/9 605/1400/9 +f 598/1200/25 602/1211/9 596/1198/9 +f 706/1401/9 602/1402/9 704/1396/9 +f 707/1403/9 708/1404/9 709/1405/9 +f 705/1406/114 710/1407/114 703/1395/114 +f 702/1392/156 707/1408/156 705/1409/156 +f 706/1401/120 709/1405/120 596/1410/120 +f 598/1200/157 708/1411/157 702/1392/157 +f 703/1395/117 711/1412/117 706/1401/117 +f 595/1197/158 700/1413/158 701/1414/158 +f 589/1415/159 592/1416/159 701/1417/159 +f 603/1418/160 697/1419/160 700/1420/160 +f 600/1421/161 697/1422/161 603/1423/161 +f 604/1424/162 600/1425/162 696/1426/162 +f 589/1427/163 698/1428/164 600/1429/165 +f 602/1204/166 704/1430/166 711/1431/166 +f 602/1432/167 709/1433/167 597/1434/167 +f 593/1435/168 605/1436/168 597/1437/168 +f 597/1438/169 708/1439/170 579/1440/171 +f 710/1441/172 594/1442/173 579/1443/174 +f 710/1444/175 711/1445/175 704/1446/175 +f 712/1447/25 575/1177/25 558/1176/25 +f 712/1447/25 560/1448/25 713/1449/25 +f 714/1450/25 566/1451/25 715/1452/25 +f 716/1453/25 566/1451/25 717/1454/25 +f 714/1450/25 560/1448/25 564/1455/25 +f 718/1456/25 575/1177/25 719/1457/25 +f 563/1156/25 577/1458/25 561/1154/25 +f 718/1456/25 577/1458/25 576/1459/25 +f 716/1453/25 572/1460/25 563/1156/25 +f 720/1461/25 721/1462/25 562/1463/25 +f 716/1453/108 722/1464/108 715/1452/108 +f 712/1447/112 723/1465/112 719/1457/112 +f 718/1456/111 724/1466/111 561/1154/111 +f 714/1450/106 721/1467/106 713/1449/106 +f 713/1449/104 720/1468/104 712/1447/104 +f 563/1156/109 725/1469/109 716/1453/109 +f 719/1457/110 726/1470/110 718/1456/110 +f 715/1452/107 727/1471/107 714/1450/107 +f 728/1472/9 579/1175/9 729/1473/9 +f 728/1472/9 559/1474/9 730/1475/9 +f 571/1166/9 567/1476/9 565/1477/9 +f 731/1478/9 567/1476/9 732/1479/9 +f 571/1166/9 559/1474/9 569/1164/9 +f 733/1480/9 579/1175/9 574/1481/9 +f 734/1482/9 578/1483/9 573/1484/9 +f 733/1480/9 578/1483/9 735/1485/9 +f 731/1478/9 573/1484/9 568/1486/9 +f 736/1487/9 737/1488/9 738/1489/9 +f 728/1472/104 738/1490/104 569/1164/104 +f 731/1478/109 736/1491/109 734/1482/109 +f 733/1480/110 739/1492/110 729/1473/110 +f 571/1166/107 737/1493/107 732/1479/107 +f 734/1482/105 740/1494/105 735/1485/105 +f 732/1479/108 741/1495/108 731/1478/108 +f 729/1473/112 742/1496/112 728/1472/112 +f 735/1485/111 743/1497/111 733/1480/111 +f 567/1161/176 565/1159/176 570/1498/176 +f 567/1499/177 737/1500/177 741/1501/177 +f 741/1502/178 736/1503/178 573/1504/178 +f 736/1505/179 740/1506/179 578/1507/179 +f 578/1507/180 740/1506/180 743/1508/180 +f 743/1508/181 739/1509/181 579/1510/181 +f 742/1511/182 730/1512/182 579/1510/182 +f 742/1511/183 738/1513/183 559/1514/183 +f 559/1514/184 738/1513/184 570/1515/184 +f 566/1163/185 717/1516/185 725/1517/185 +f 566/1518/186 722/1519/186 727/1520/186 +f 727/1520/187 721/1521/187 560/1522/187 +f 720/1523/188 558/1524/188 560/1522/188 +f 575/1525/189 558/1524/189 720/1523/189 +f 575/1525/190 723/1526/190 726/1527/190 +f 726/1527/191 724/1528/191 577/1529/191 +f 577/1529/192 724/1528/192 562/1530/192 +f 572/1531/193 562/1530/193 725/1532/193 +f 583/1533/113 582/1534/113 581/1535/113 +f 744/1536/194 580/1537/26 745/1538/194 +f 745/1539/25 582/1180/25 590/1540/25 +f 604/1541/25 590/1540/25 589/1542/25 +f 593/1543/195 745/1544/195 604/1545/195 +f 746/1546/113 590/1189/113 582/1534/113 +f 747/1547/196 748/1548/197 749/1549/197 +f 749/1550/198 746/1551/9 747/1552/9 +f 750/1553/9 744/1554/199 751/1555/200 +f 752/1556/9 753/1557/9 754/1558/201 +f 754/1559/202 755/1560/202 756/1561/202 +f 750/1562/203 752/1563/203 585/1564/203 +f 751/1565/6 757/1566/6 750/1562/6 +f 585/1564/203 758/1567/203 747/1547/203 +f 759/1568/204 753/1569/205 751/1565/206 +f 758/1570/9 754/1571/201 748/1572/207 +f 755/1560/208 760/1573/209 756/1561/210 +f 749/1549/211 760/1573/211 761/1574/211 +f 754/1559/201 760/1573/212 748/1548/207 +f 751/1575/200 744/1576/199 755/1577/213 +f 558/1151/104 730/1578/104 559/1152/104 +f 561/1154/105 724/1466/105 562/1155/105 +f 564/1157/106 560/1579/106 559/1158/106 +f 566/1160/107 564/1157/107 565/1159/107 +f 568/1162/108 717/1516/108 566/1163/108 +f 569/1164/106 738/1490/106 570/1165/106 +f 572/1167/109 717/1516/109 568/1162/109 +f 574/1169/110 579/1580/110 575/1170/110 +f 573/1168/105 578/1173/105 577/1172/105 +f 578/1173/111 574/1581/111 576/1174/111 +f 579/1175/112 730/1475/112 558/1176/112 +f 580/1178/25 587/1582/25 581/1179/25 +f 586/1583/9 750/1584/9 584/1585/9 +f 750/1584/9 585/1586/9 584/1585/9 +f 585/1586/9 747/1587/9 583/1588/9 +f 747/1587/9 746/1589/9 583/1588/9 +f 586/1184/26 584/1590/26 587/1185/26 +f 588/1187/113 591/1591/113 589/1188/113 +f 591/1190/114 594/1196/114 592/1191/114 +f 589/1193/115 593/1195/115 604/1592/214 +f 594/1196/117 704/1430/117 595/1197/117 +f 596/1198/118 709/1593/118 597/1199/118 +f 599/1201/119 698/1390/119 600/1202/119 +f 595/1197/120 704/1430/120 602/1204/120 +f 604/1206/121 696/1594/215 605/1207/122 +f 605/1209/118 696/1381/118 603/1210/118 +f 606/1212/25 613/1595/25 607/1213/25 +f 609/1215/9 612/1596/9 610/1216/9 +f 612/1218/8 606/1597/8 608/1219/8 +f 611/1221/6 610/1598/6 608/1222/6 +f 613/1224/26 606/1599/26 612/1225/26 +f 614/1227/124 625/1245/124 615/1228/124 +f 617/1230/125 624/1600/125 618/1231/125 +f 618/1233/126 622/1601/126 620/1234/126 +f 621/1236/127 628/1602/127 620/1237/127 +f 616/1239/128 624/1603/128 617/1240/128 +f 622/1604/9 618/1605/9 624/1244/9 +f 624/1244/9 616/1606/9 615/1607/9 +f 615/1607/9 626/1608/9 623/1242/9 +f 621/1243/9 622/1604/9 624/1244/9 +f 615/1607/9 623/1242/9 624/1244/9 +f 625/1245/129 629/1609/129 626/1246/129 +f 621/1247/130 623/1610/130 627/1248/130 +f 629/1250/131 627/1611/131 623/1251/131 +f 619/1612/25 620/1613/25 617/1255/25 +f 620/1613/25 628/1614/25 617/1255/25 +f 628/1614/25 627/1615/25 617/1255/25 +f 627/1615/25 629/1616/25 625/1253/25 +f 617/1255/25 627/1615/25 625/1253/25 +f 630/1256/26 635/1617/26 631/1257/26 +f 630/1259/132 632/1618/132 633/1260/132 +f 635/1262/133 762/1619/133 636/1263/133 +f 637/1265/134 634/1620/134 633/1266/134 +f 636/1268/135 762/1621/135 639/1269/135 +f 641/1271/136 640/1622/136 639/1272/136 +f 638/1274/137 649/1623/137 643/1275/137 +f 642/1277/138 651/1624/138 644/1278/138 +f 645/1280/139 648/1625/139 646/1281/139 +f 648/1283/140 643/1626/140 649/1284/140 +f 650/1286/141 644/1627/141 651/1287/141 +f 647/1628/9 646/1629/9 650/1630/9 +f 646/1629/9 649/1289/9 644/1291/9 +f 649/1289/9 638/1631/9 641/1290/9 +f 638/1631/9 633/1632/9 641/1290/9 +f 633/1632/9 632/1633/9 631/1634/9 +f 633/1632/9 631/1634/9 636/1635/9 +f 659/1636/9 657/1637/9 655/1638/9 +f 657/1637/9 654/1639/9 655/1638/9 +f 633/1632/9 636/1635/9 640/1640/9 +f 633/1632/9 640/1640/9 641/1290/9 +f 655/1638/9 654/1639/9 647/1628/9 +f 650/1630/9 655/1638/9 647/1628/9 +f 644/1291/9 650/1630/9 646/1629/9 +f 653/1292/142 645/1641/142 647/1293/142 +f 653/1642/25 656/1643/25 660/1644/25 +f 656/1643/25 658/1645/25 660/1644/25 +f 643/1297/25 648/1646/25 651/1295/25 +f 648/1646/25 645/1647/25 652/1648/25 +f 634/1649/25 637/1650/25 642/1296/25 +f 637/1650/25 643/1297/25 642/1296/25 +f 635/1651/25 630/1652/25 634/1649/25 +f 762/1653/25 635/1651/25 634/1649/25 +f 645/1647/25 653/1642/25 660/1644/25 +f 645/1647/25 660/1644/25 652/1648/25 +f 639/1654/25 762/1653/25 634/1649/25 +f 642/1296/25 639/1654/25 634/1649/25 +f 648/1646/25 652/1648/25 651/1295/25 +f 652/1298/143 660/1655/143 655/1299/143 +f 654/1301/144 657/1656/144 656/1302/144 +f 657/1304/145 659/1657/145 658/1305/145 +f 659/1307/146 655/1658/146 660/1308/146 +f 661/1310/147 686/1659/147 662/1311/147 +f 665/1314/9 667/1660/9 666/1315/9 +f 667/1660/9 763/1661/9 666/1315/9 +f 666/1315/9 679/1662/9 664/1313/9 +f 679/1662/9 677/1663/9 664/1313/9 +f 667/1316/6 665/1664/6 668/1317/6 +f 670/1319/148 763/1665/148 667/1320/148 +f 671/1322/149 688/1666/149 672/1323/149 +f 666/1325/150 763/1667/150 670/1326/150 +f 685/1668/25 661/1669/25 675/1330/25 +f 661/1669/25 663/1328/25 675/1330/25 +f 663/1328/25 688/1670/25 671/1329/25 +f 675/1330/25 683/1671/25 685/1668/25 +f 676/1331/151 689/1672/151 664/1332/151 +f 678/1334/149 676/1673/149 677/1335/149 +f 682/1339/150 683/1674/150 675/1675/150 +f 680/1337/150 691/1676/150 681/1338/150 +f 682/1339/150 675/1675/150 680/1337/150 +f 683/1340/148 682/1677/148 684/1341/148 +f 686/1345/6 661/1678/6 685/1343/6 +f 684/1344/6 690/1679/6 686/1345/6 +f 674/1348/152 678/1680/152 679/1349/152 +f 688/1353/151 663/1681/151 662/1351/151 +f 662/1351/151 764/1682/151 672/1352/151 +f 671/1356/152 673/1683/152 680/1354/152 +f 673/1683/152 765/1684/152 680/1354/152 +f 765/1684/152 691/1685/152 680/1354/152 +f 689/1357/147 668/1686/147 665/1358/147 +f 669/1687/25 668/1688/25 674/1362/25 +f 668/1688/25 689/1360/25 674/1362/25 +f 689/1360/25 676/1689/25 678/1361/25 +f 674/1362/25 670/1690/25 669/1687/25 +f 691/1365/154 765/1691/216 662/1692/217 +f 765/1691/216 764/1693/218 662/1692/217 +f 662/1692/217 686/1694/219 691/1365/154 +f 686/1694/219 690/1363/153 691/1365/154 +f 587/1366/2 584/1695/2 583/1367/2 +f 613/1369/2 609/1696/2 611/1370/2 +f 692/1372/25 695/1387/25 589/1373/25 +f 692/1697/25 592/1191/25 595/1197/25 +f 693/1376/25 595/1375/25 603/1377/25 +f 599/1201/25 604/1382/25 589/1379/25 +f 599/1201/25 601/1203/9 696/1381/25 +f 601/1203/9 694/1389/25 603/1210/25 +f 699/1698/25 701/1414/25 700/1413/25 +f 697/1383/25 600/1699/25 698/1384/25 +f 699/1698/25 700/1413/25 697/1700/25 +f 694/1378/120 697/1383/120 700/1386/120 +f 692/1372/114 701/1391/114 699/1385/114 +f 601/1203/118 600/1202/118 697/1388/118 +f 695/1380/155 699/1701/155 698/1390/155 +f 693/1702/117 700/1413/117 701/1414/117 +f 702/1392/9 705/1409/9 591/1393/9 +f 703/1395/9 706/1401/9 704/1396/9 +f 703/1398/9 594/1196/9 591/1190/9 +f 598/1200/25 702/1392/9 593/1394/9 +f 598/1200/25 605/1400/9 602/1211/9 +f 706/1401/9 596/1410/9 602/1402/9 +f 708/1404/9 597/1703/9 709/1405/9 +f 709/1704/9 711/1431/9 707/1705/9 +f 711/1431/9 710/1706/9 707/1705/9 +f 705/1399/114 707/1705/114 710/1706/114 +f 702/1392/156 708/1411/156 707/1408/156 +f 706/1401/120 711/1412/120 709/1405/120 +f 598/1200/157 597/1199/157 708/1411/157 +f 703/1395/117 710/1407/117 711/1412/117 +f 595/1197/158 701/1414/158 592/1191/158 +f 589/1415/159 701/1417/159 699/1707/159 +f 603/1418/160 700/1420/160 595/1708/160 +f 600/1421/161 603/1423/161 696/1709/161 +f 698/1428/164 589/1427/163 699/1710/220 +f 589/1427/163 600/1429/165 604/1711/221 +f 602/1204/222 711/1431/222 709/1704/222 +f 602/1432/167 597/1434/167 605/1712/167 +f 593/1713/223 597/1438/224 579/1440/225 +f 579/1440/171 708/1439/170 707/1714/226 +f 710/1441/172 579/1443/174 707/1715/227 +f 710/1441/175 704/1716/175 594/1442/175 +f 712/1447/25 719/1457/25 575/1177/25 +f 712/1447/25 558/1176/25 560/1448/25 +f 714/1450/25 564/1455/25 566/1451/25 +f 716/1453/25 715/1452/25 566/1451/25 +f 714/1450/25 713/1449/25 560/1448/25 +f 718/1456/25 576/1459/25 575/1177/25 +f 563/1156/25 572/1460/25 577/1458/25 +f 718/1456/25 561/1154/25 577/1458/25 +f 716/1453/25 717/1454/25 572/1460/25 +f 722/1717/25 725/1517/25 562/1463/25 +f 724/1718/25 726/1719/25 723/1720/25 +f 727/1721/25 722/1717/25 721/1462/25 +f 722/1717/25 562/1463/25 721/1462/25 +f 562/1463/25 724/1718/25 720/1461/25 +f 724/1718/25 723/1720/25 720/1461/25 +f 716/1453/108 725/1469/108 722/1464/108 +f 712/1447/112 720/1468/112 723/1465/112 +f 718/1456/111 726/1470/111 724/1466/111 +f 714/1450/106 727/1471/106 721/1467/106 +f 713/1449/104 721/1467/104 720/1468/104 +f 563/1156/109 562/1155/109 725/1469/109 +f 719/1457/110 723/1465/110 726/1470/110 +f 715/1452/107 722/1464/107 727/1471/107 +f 728/1472/9 730/1475/9 579/1175/9 +f 728/1472/9 569/1164/9 559/1474/9 +f 571/1166/9 732/1479/9 567/1476/9 +f 731/1478/9 568/1486/9 567/1476/9 +f 571/1166/9 565/1477/9 559/1474/9 +f 733/1480/9 729/1473/9 579/1175/9 +f 734/1482/9 735/1485/9 578/1483/9 +f 733/1480/9 574/1481/9 578/1483/9 +f 731/1478/9 734/1482/9 573/1484/9 +f 737/1488/9 570/1498/9 738/1489/9 +f 738/1489/9 742/1722/9 736/1487/9 +f 742/1722/9 739/1723/9 740/1724/9 +f 736/1487/9 742/1722/9 740/1724/9 +f 739/1723/9 743/1725/9 740/1724/9 +f 736/1487/9 741/1726/9 737/1488/9 +f 728/1472/104 742/1496/104 738/1490/104 +f 731/1478/109 741/1495/109 736/1491/109 +f 733/1480/110 743/1497/110 739/1492/110 +f 571/1166/107 570/1165/107 737/1493/107 +f 734/1482/105 736/1491/105 740/1494/105 +f 732/1479/108 737/1493/108 741/1495/108 +f 729/1473/112 739/1492/112 742/1496/112 +f 735/1485/111 740/1494/111 743/1497/111 +f 567/1161/176 570/1498/176 737/1488/176 +f 567/1499/177 741/1501/177 568/1727/177 +f 741/1502/178 573/1504/178 568/1728/178 +f 736/1505/179 578/1507/179 573/1729/179 +f 578/1507/180 743/1508/180 574/1730/180 +f 743/1508/181 579/1510/181 574/1730/181 +f 742/1511/182 579/1510/182 739/1509/182 +f 742/1511/183 559/1514/183 730/1512/183 +f 559/1514/184 570/1515/184 565/1731/184 +f 566/1163/185 725/1517/185 722/1717/185 +f 566/1518/186 727/1520/186 564/1732/186 +f 727/1520/187 560/1522/187 564/1732/187 +f 720/1523/188 560/1522/188 721/1521/188 +f 575/1525/189 720/1523/189 723/1526/189 +f 575/1525/190 726/1527/190 576/1733/190 +f 726/1527/191 577/1529/191 576/1733/191 +f 577/1529/192 562/1530/192 572/1531/192 +f 572/1531/193 725/1532/193 717/1734/193 +f 583/1533/113 746/1546/113 582/1534/113 +f 744/1536/194 586/1735/26 580/1537/26 +f 745/1539/25 580/1178/25 582/1180/25 +f 604/1541/25 745/1539/25 590/1540/25 +f 593/1543/194 744/1736/194 745/1544/194 +f 746/1546/113 588/1187/113 590/1189/113 +f 747/1547/196 758/1567/196 748/1548/197 +f 749/1737/198 588/1738/228 746/1739/9 +f 750/1740/9 586/1741/9 744/1742/199 +f 752/1556/9 757/1743/9 753/1557/9 +f 754/1559/202 759/1568/202 755/1560/202 +f 750/1562/203 757/1566/203 752/1563/203 +f 751/1565/6 753/1569/6 757/1566/6 +f 585/1564/203 752/1563/203 758/1567/203 +f 759/1568/204 754/1559/229 753/1569/205 +f 758/1570/9 752/1744/9 754/1571/201 +f 755/1560/208 761/1574/230 760/1573/209 +f 749/1549/211 748/1548/211 760/1573/211 +f 754/1559/201 756/1561/212 760/1573/212 +f 591/1745/231 588/1746/228 761/1747/232 +f 588/1746/228 749/1748/198 761/1747/232 +f 744/1576/199 593/1749/233 755/1577/213 +f 593/1749/233 591/1745/231 761/1747/232 +f 755/1577/213 593/1749/233 761/1747/232 +f 759/1750/234 751/1575/200 755/1577/213 +f 766/1751/235 767/1752/235 768/1753/235 +f 769/1754/236 770/1755/236 767/1752/236 +f 771/1756/237 772/1757/237 770/1755/237 +f 773/1758/238 774/1759/238 772/1757/238 +f 775/1760/239 776/1761/239 774/1759/239 +f 777/1762/240 778/1763/240 776/1761/240 +f 779/1764/241 780/1765/241 778/1763/241 +f 781/1766/242 782/1767/242 780/1765/242 +f 783/1768/243 784/1769/243 782/1767/243 +f 785/1770/244 786/1771/244 784/1769/244 +f 787/1772/245 788/1773/245 786/1771/245 +f 789/1774/246 790/1775/246 788/1773/246 +f 791/1776/247 792/1777/247 790/1775/247 +f 793/1778/248 794/1779/248 792/1777/248 +f 795/1780/249 796/1781/249 794/1779/249 +f 797/1782/250 798/1783/250 796/1781/250 +f 799/1784/251 800/1785/251 798/1783/251 +f 801/1786/252 802/1787/252 800/1785/252 +f 803/1788/253 804/1789/253 802/1787/253 +f 805/1790/254 806/1791/254 804/1789/254 +f 807/1792/255 808/1793/255 806/1791/255 +f 809/1794/256 810/1795/256 808/1793/256 +f 811/1796/257 812/1797/257 810/1795/257 +f 813/1798/258 814/1799/258 812/1797/258 +f 815/1800/251 816/1801/251 817/1802/251 +f 815/1800/2 769/1803/2 766/1804/2 +f 817/1802/2 771/1805/2 769/1803/2 +f 818/1806/2 771/1805/2 819/1807/2 +f 820/1808/2 773/1809/2 818/1806/2 +f 820/1808/2 777/1810/2 775/1811/2 +f 821/1812/2 779/1813/2 777/1810/2 +f 822/1814/2 779/1813/2 823/1815/2 +f 824/1816/2 781/1817/2 822/1814/2 +f 824/1816/2 785/1818/2 783/1819/2 +f 825/1820/2 787/1821/2 785/1818/2 +f 826/1822/2 787/1821/2 827/1823/2 +f 828/1824/2 789/1825/2 826/1822/2 +f 828/1824/2 793/1826/2 791/1827/2 +f 829/1828/2 795/1829/2 793/1826/2 +f 830/1830/2 795/1829/2 831/1831/2 +f 832/1832/2 797/1833/2 830/1830/2 +f 832/1832/2 801/1834/2 799/1835/2 +f 833/1836/2 803/1837/2 801/1834/2 +f 834/1838/2 803/1837/2 835/1839/2 +f 836/1840/2 805/1841/2 834/1838/2 +f 836/1840/2 809/1842/2 807/1843/2 +f 837/1844/2 811/1845/2 809/1842/2 +f 838/1846/2 813/1847/2 811/1845/2 +f 839/1848/2 840/1849/2 813/1847/2 +f 841/1850/246 842/1851/246 843/1852/246 +f 831/1831/259 844/1853/259 830/1830/259 +f 817/1802/252 845/1854/252 819/1807/252 +f 830/1830/260 846/1855/260 832/1832/260 +f 819/1807/253 847/1856/253 818/1806/253 +f 832/1832/235 848/1857/235 833/1836/235 +f 818/1806/254 849/1858/254 820/1808/254 +f 833/1836/236 850/1859/236 835/1839/236 +f 820/1808/255 851/1860/255 821/1812/255 +f 835/1839/237 852/1861/237 834/1838/237 +f 821/1812/256 853/1862/256 823/1815/256 +f 834/1838/238 854/1863/238 836/1840/238 +f 823/1815/257 855/1864/257 822/1814/257 +f 836/1840/239 856/1865/239 837/1844/239 +f 822/1814/258 857/1866/258 824/1816/258 +f 837/1844/240 858/1867/240 838/1846/240 +f 824/1816/261 859/1868/261 825/1820/261 +f 838/1846/241 860/1869/241 839/1848/241 +f 825/1820/262 861/1870/262 827/1823/262 +f 843/1852/247 862/1871/247 863/1872/247 +f 839/1848/242 864/1873/242 865/1874/242 +f 827/1823/263 866/1875/263 826/1822/263 +f 863/1872/248 867/1876/248 868/1877/248 +f 865/1874/243 869/1878/243 870/1879/243 +f 826/1822/264 871/1880/264 828/1824/264 +f 868/1877/249 872/1881/249 873/1882/249 +f 870/1879/244 874/1883/244 875/1884/244 +f 828/1824/265 876/1885/265 829/1828/265 +f 873/1882/250 877/1886/250 815/1800/250 +f 875/1884/245 878/1887/245 841/1850/245 +f 829/1828/266 879/1888/266 831/1831/266 +f 880/1889/8 768/1890/267 767/1891/8 +f 880/1889/8 770/1892/8 881/1893/8 +f 882/1894/8 770/1892/8 772/1895/8 +f 882/1894/8 774/1896/8 883/1897/8 +f 884/1898/8 774/1896/8 776/1899/8 +f 884/1898/8 778/1900/8 885/1901/8 +f 885/1901/8 780/1902/8 886/1903/8 +f 886/1903/8 782/1904/8 887/1905/8 +f 888/1906/8 782/1904/8 784/1907/8 +f 888/1906/8 786/1908/8 889/1909/8 +f 890/1910/8 786/1908/8 788/1911/8 +f 890/1910/8 790/1912/8 891/1913/8 +f 892/1914/8 790/1912/8 792/1915/8 +f 892/1914/8 794/1916/8 893/1917/8 +f 894/1918/8 794/1916/8 796/1919/8 +f 894/1918/8 798/1920/8 895/1921/8 +f 896/1922/8 798/1920/8 800/1923/8 +f 896/1922/8 802/1924/8 897/1925/8 +f 898/1926/8 802/1924/8 804/1927/8 +f 898/1926/8 806/1928/8 899/1929/8 +f 900/1930/8 806/1928/8 808/1931/8 +f 900/1930/8 810/1932/8 901/1933/8 +f 902/1934/8 810/1932/8 812/1935/8 +f 902/1934/8 814/1936/268 903/1937/8 +f 904/1938/25 905/1939/25 906/1940/25 +f 907/1941/2 908/1942/2 905/1939/2 +f 909/1943/9 910/1944/9 908/1942/9 +f 911/1945/8 906/1946/8 910/1944/8 +f 908/1942/6 906/1947/6 905/1948/6 +f 766/1751/269 912/1949/270 913/1950/269 +f 814/1799/271 914/1951/261 915/1952/261 +f 863/1872/2 916/1953/2 843/1852/2 +f 868/1877/2 917/1954/2 863/1872/2 +f 873/1882/2 918/1955/2 868/1877/2 +f 815/1800/2 913/1956/2 919/1957/2 +f 865/1874/2 920/1958/2 914/1959/2 +f 870/1879/2 921/1960/2 920/1958/2 +f 875/1884/2 922/1961/2 921/1960/2 +f 841/1850/2 916/1953/2 922/1961/2 +f 923/1962/8 924/1963/8 925/1964/8 +f 926/1965/8 925/1964/8 927/1966/8 +f 928/1967/8 927/1966/8 929/1968/8 +f 930/1969/8 928/1967/8 929/1968/8 +f 903/1937/8 814/1936/268 915/1970/272 +f 931/1971/8 932/1972/8 933/1973/8 +f 934/1974/8 935/1975/8 931/1971/8 +f 924/1963/8 936/1976/8 934/1974/8 +f 912/1977/26 911/1945/26 909/1943/26 +f 907/1978/26 915/1979/26 914/1980/26 +f 766/1751/235 769/1754/235 767/1752/235 +f 769/1754/236 771/1756/236 770/1755/236 +f 771/1756/237 773/1758/237 772/1757/237 +f 773/1758/238 775/1760/238 774/1759/238 +f 775/1760/239 777/1762/239 776/1761/239 +f 777/1762/240 779/1764/240 778/1763/240 +f 779/1764/241 781/1766/241 780/1765/241 +f 781/1766/242 783/1768/242 782/1767/242 +f 783/1768/243 785/1770/243 784/1769/243 +f 785/1770/244 787/1772/244 786/1771/244 +f 787/1772/245 789/1774/245 788/1773/245 +f 789/1774/246 791/1776/246 790/1775/246 +f 791/1776/247 793/1778/247 792/1777/247 +f 793/1778/248 795/1780/248 794/1779/248 +f 795/1780/249 797/1782/249 796/1781/249 +f 797/1782/250 799/1784/250 798/1783/250 +f 799/1784/251 801/1786/251 800/1785/251 +f 801/1786/252 803/1788/252 802/1787/252 +f 803/1788/253 805/1790/253 804/1789/253 +f 805/1790/254 807/1792/254 806/1791/254 +f 807/1792/255 809/1794/255 808/1793/255 +f 809/1794/256 811/1796/256 810/1795/256 +f 811/1796/257 813/1798/257 812/1797/257 +f 813/1798/258 840/1981/258 814/1799/258 +f 815/1800/251 877/1886/251 816/1801/251 +f 815/1800/2 817/1802/2 769/1803/2 +f 817/1802/2 819/1807/2 771/1805/2 +f 818/1806/2 773/1809/2 771/1805/2 +f 820/1808/2 775/1811/2 773/1809/2 +f 820/1808/2 821/1812/2 777/1810/2 +f 821/1812/2 823/1815/2 779/1813/2 +f 822/1814/2 781/1817/2 779/1813/2 +f 824/1816/2 783/1819/2 781/1817/2 +f 824/1816/2 825/1820/2 785/1818/2 +f 825/1820/2 827/1823/2 787/1821/2 +f 826/1822/2 789/1825/2 787/1821/2 +f 828/1824/2 791/1827/2 789/1825/2 +f 828/1824/2 829/1828/2 793/1826/2 +f 829/1828/2 831/1831/2 795/1829/2 +f 830/1830/2 797/1833/2 795/1829/2 +f 832/1832/2 799/1835/2 797/1833/2 +f 832/1832/2 833/1836/2 801/1834/2 +f 833/1836/2 835/1839/2 803/1837/2 +f 834/1838/2 805/1841/2 803/1837/2 +f 836/1840/2 807/1843/2 805/1841/2 +f 836/1840/2 837/1844/2 809/1842/2 +f 837/1844/2 838/1846/2 811/1845/2 +f 838/1846/2 839/1848/2 813/1847/2 +f 839/1848/2 865/1874/2 840/1849/2 +f 841/1850/246 878/1887/246 842/1851/246 +f 831/1831/259 879/1888/259 844/1853/259 +f 817/1802/252 816/1801/252 845/1854/252 +f 830/1830/260 844/1853/260 846/1855/260 +f 819/1807/253 845/1854/253 847/1856/253 +f 832/1832/235 846/1855/235 848/1857/235 +f 818/1806/254 847/1856/254 849/1858/254 +f 833/1836/236 848/1857/236 850/1859/236 +f 820/1808/255 849/1858/255 851/1860/255 +f 835/1839/237 850/1859/237 852/1861/237 +f 821/1812/256 851/1860/256 853/1862/256 +f 834/1838/238 852/1861/238 854/1863/238 +f 823/1815/257 853/1862/257 855/1864/257 +f 836/1840/239 854/1863/239 856/1865/239 +f 822/1814/258 855/1864/258 857/1866/258 +f 837/1844/240 856/1865/240 858/1867/240 +f 824/1816/261 857/1866/261 859/1868/261 +f 838/1846/241 858/1867/241 860/1869/241 +f 825/1820/262 859/1868/262 861/1870/262 +f 843/1852/247 842/1851/247 862/1871/247 +f 839/1848/242 860/1869/242 864/1873/242 +f 827/1823/263 861/1870/263 866/1875/263 +f 863/1872/248 862/1871/248 867/1876/248 +f 865/1874/243 864/1873/243 869/1878/243 +f 826/1822/264 866/1875/264 871/1880/264 +f 868/1877/249 867/1876/249 872/1881/249 +f 870/1879/244 869/1878/244 874/1883/244 +f 828/1824/265 871/1880/265 876/1885/265 +f 873/1882/250 872/1881/250 877/1886/250 +f 875/1884/245 874/1883/245 878/1887/245 +f 829/1828/266 876/1885/266 879/1888/266 +f 880/1889/8 930/1969/8 768/1890/267 +f 880/1889/8 767/1891/8 770/1892/8 +f 882/1894/8 881/1893/8 770/1892/8 +f 882/1894/8 772/1895/8 774/1896/8 +f 884/1898/8 883/1897/8 774/1896/8 +f 884/1898/8 776/1899/8 778/1900/8 +f 885/1901/8 778/1900/8 780/1902/8 +f 886/1903/8 780/1902/8 782/1904/8 +f 888/1906/8 887/1905/8 782/1904/8 +f 888/1906/8 784/1907/8 786/1908/8 +f 890/1910/8 889/1909/8 786/1908/8 +f 890/1910/8 788/1911/8 790/1912/8 +f 892/1914/8 891/1913/8 790/1912/8 +f 892/1914/8 792/1915/8 794/1916/8 +f 894/1918/8 893/1917/8 794/1916/8 +f 894/1918/8 796/1919/8 798/1920/8 +f 896/1922/8 895/1921/8 798/1920/8 +f 896/1922/8 800/1923/8 802/1924/8 +f 898/1926/8 897/1925/8 802/1924/8 +f 898/1926/8 804/1927/8 806/1928/8 +f 900/1930/8 899/1929/8 806/1928/8 +f 900/1930/8 808/1931/8 810/1932/8 +f 902/1934/8 901/1933/8 810/1932/8 +f 902/1934/8 812/1935/8 814/1936/268 +f 904/1938/25 907/1941/25 905/1939/25 +f 907/1941/2 909/1943/2 908/1942/2 +f 909/1943/9 911/1945/9 910/1944/9 +f 911/1945/8 904/1982/8 906/1946/8 +f 908/1942/6 910/1944/6 906/1947/6 +f 766/1751/269 768/1753/270 912/1949/270 +f 814/1799/271 840/1981/261 914/1951/261 +f 863/1872/2 917/1954/2 916/1953/2 +f 868/1877/2 918/1955/2 917/1954/2 +f 873/1882/2 919/1957/2 918/1955/2 +f 919/1957/2 873/1882/2 815/1800/2 +f 815/1800/2 766/1804/2 913/1956/2 +f 914/1959/2 840/1849/2 865/1874/2 +f 865/1874/2 870/1879/2 920/1958/2 +f 870/1879/2 875/1884/2 921/1960/2 +f 875/1884/2 841/1850/2 922/1961/2 +f 841/1850/2 843/1852/2 916/1953/2 +f 923/1962/8 937/1983/8 924/1963/8 +f 926/1965/8 923/1962/8 925/1964/8 +f 928/1967/8 926/1965/8 927/1966/8 +f 929/1968/8 912/1984/273 930/1969/8 +f 912/1984/273 768/1890/267 930/1969/8 +f 915/1970/272 933/1973/8 903/1937/8 +f 933/1973/8 932/1972/8 903/1937/8 +f 931/1971/8 935/1975/8 932/1972/8 +f 934/1974/8 936/1976/8 935/1975/8 +f 924/1963/8 937/1983/8 936/1976/8 +f 933/1985/26 915/1979/26 904/1986/26 +f 909/1943/26 907/1978/26 916/1987/26 +f 907/1978/26 914/1980/26 920/1988/26 +f 920/1988/26 921/1989/26 907/1978/26 +f 921/1989/26 922/1990/26 907/1978/26 +f 907/1978/26 922/1990/26 916/1987/26 +f 933/1985/26 904/1986/26 931/1991/26 +f 904/1986/26 911/1945/26 924/1992/26 +f 931/1991/26 904/1986/26 934/1993/26 +f 924/1992/26 934/1993/26 904/1986/26 +f 916/1987/26 917/1994/26 909/1943/26 +f 917/1994/26 918/1995/26 909/1943/26 +f 929/1996/26 927/1997/26 911/1945/26 +f 927/1997/26 925/1998/26 911/1945/26 +f 925/1998/26 924/1992/26 911/1945/26 +f 918/1995/26 919/1999/26 909/1943/26 +f 919/1999/26 913/2000/26 909/1943/26 +f 912/1977/26 929/1996/26 911/1945/26 +f 913/2000/26 912/1977/26 909/1943/26 +f 907/1978/26 904/1986/26 915/1979/26 +f 938/2001/274 939/2002/274 940/2003/274 +f 939/2002/275 941/2004/275 940/2003/275 +f 942/2005/276 943/2006/276 941/2004/276 +f 944/2007/277 938/2008/277 943/2006/277 +f 941/2004/6 938/2009/6 940/2010/6 +f 939/2011/26 944/2007/26 942/2005/26 +f 945/2012/278 946/2013/278 947/2014/278 +f 946/2013/279 948/2015/279 947/2014/279 +f 949/2016/280 950/2017/280 948/2015/280 +f 951/2018/281 945/2019/282 950/2020/282 +f 952/2021/6 953/2022/6 954/2023/6 +f 946/2024/26 951/2025/26 949/2016/26 +f 950/2017/282 953/2026/282 955/2027/282 +f 948/2015/280 955/2027/280 952/2021/280 +f 947/2014/279 952/2021/279 954/2028/279 +f 953/2029/278 947/2014/278 954/2028/278 +f 956/2030/283 957/2031/283 958/2032/283 +f 958/2032/284 959/2033/284 960/2034/284 +f 959/2033/285 961/2035/285 960/2034/286 +f 962/2036/287 956/2037/287 961/2035/287 +f 960/2034/288 956/2038/288 958/2039/288 +f 957/2040/289 962/2036/289 959/2033/289 +f 963/2041/290 964/2042/290 965/2043/290 +f 964/2042/291 966/2044/291 965/2043/291 +f 967/2045/292 968/2046/292 966/2044/292 +f 969/2047/293 963/2048/293 968/2046/293 +f 966/2044/294 963/2049/294 965/2050/294 +f 964/2051/295 969/2047/295 967/2045/295 +f 938/2001/274 970/2052/274 939/2002/274 +f 939/2002/275 942/2005/275 941/2004/275 +f 942/2005/276 944/2007/276 943/2006/276 +f 944/2007/277 970/2053/277 938/2008/277 +f 941/2004/6 943/2006/6 938/2009/6 +f 939/2011/26 970/2054/26 944/2007/26 +f 945/2012/278 971/2055/278 946/2013/278 +f 946/2013/279 949/2016/279 948/2015/279 +f 949/2016/280 951/2025/280 950/2017/280 +f 951/2018/281 971/2056/281 945/2019/282 +f 952/2021/6 955/2027/6 953/2022/6 +f 946/2024/26 971/2057/26 951/2025/26 +f 950/2017/282 945/2058/282 953/2026/282 +f 948/2015/280 950/2017/280 955/2027/280 +f 947/2014/279 948/2015/279 952/2021/279 +f 953/2029/278 945/2012/278 947/2014/278 +f 956/2030/283 972/2059/283 957/2031/283 +f 958/2032/284 957/2031/284 959/2033/284 +f 959/2033/285 962/2036/285 961/2035/285 +f 962/2036/287 972/2060/287 956/2037/287 +f 960/2034/288 961/2035/288 956/2038/288 +f 957/2040/289 972/2061/289 962/2036/289 +f 963/2041/290 973/2062/290 964/2042/290 +f 964/2042/291 967/2045/291 966/2044/291 +f 967/2045/292 969/2047/292 968/2046/292 +f 969/2047/293 973/2063/293 963/2048/293 +f 966/2044/294 968/2046/294 963/2049/294 +f 964/2051/295 973/2064/295 969/2047/295 +o Slide_Cylinder +v 1.272063 1.594606 -0.244676 +v 1.272063 1.368420 -0.338365 +v 1.272063 1.462109 -0.564550 +v 0.647653 0.965039 -0.742828 +v 0.711569 1.012017 5.211916 +v 0.647653 0.965039 5.211916 +v 0.711569 1.012017 -0.742828 +v 0.770475 1.088305 5.211916 +v 0.770475 1.088305 -0.742828 +v 0.822106 1.190971 5.211916 +v 0.822106 1.190971 -0.742828 +v 0.864478 1.316070 5.211916 +v 0.921900 1.774713 -0.742828 +v 0.915353 1.918690 3.212208 +v 0.921900 1.774713 3.711916 +v 0.915353 1.935767 -0.742828 +v 0.895964 2.073555 3.212208 +v 0.895964 2.090632 -0.742828 +v 0.864478 2.216279 3.212208 +v 0.864478 2.233356 -0.742828 +v 0.822106 2.341378 3.212208 +v 0.822106 2.358455 -0.742828 +v 0.770475 2.444044 3.212208 +v 0.770475 2.461121 -0.742828 +v 0.711569 2.520332 3.212208 +v 0.711569 2.537409 -0.742828 +v 0.647653 2.567310 3.212208 +v 0.904673 1.528358 -0.577728 +v 1.272063 1.494584 -0.574402 +v 0.900445 1.494584 -0.574402 +v 0.896379 1.462109 -0.564550 +v 1.272063 1.432180 -0.548553 +v 0.890093 1.432180 -0.548553 +v 0.895964 1.458794 -0.562778 +v 1.272063 1.405947 -0.527024 +v 0.884306 1.405947 -0.527024 +v 1.272063 1.384418 -0.500791 +v 0.879556 1.384418 -0.500791 +v 1.272063 1.368420 -0.470861 +v 0.876027 1.368420 -0.470861 +v 1.272063 1.358569 -0.438386 +v 0.873854 1.358569 -0.438386 +v 1.272063 1.355243 -0.404613 +v 0.873120 1.355243 -0.404613 +v 0.873854 1.358569 -0.370840 +v 1.272063 1.358569 -0.370840 +v 0.876027 1.368420 -0.338365 +v 0.879556 1.384418 -0.308436 +v 1.272063 1.384418 -0.308436 +v 0.884306 1.405947 -0.282203 +v 1.272063 1.405947 -0.282203 +v 0.890093 1.432180 -0.260674 +v 1.272063 1.432180 -0.260674 +v 0.896379 1.462109 -0.244676 +v 0.895964 1.458794 -0.246449 +v 1.272063 1.462109 -0.244676 +v 0.900445 1.494585 -0.234825 +v 1.272063 1.494585 -0.234825 +v 0.904673 1.528358 -0.231499 +v 1.272063 1.528358 -0.231499 +v 0.908902 1.562131 -0.234825 +v 1.272063 1.562131 -0.234825 +v 0.912967 1.594606 -0.244676 +v 1.272063 1.624535 -0.260674 +v 0.915795 1.624535 -0.260674 +v 0.915353 1.613659 -0.254860 +v 0.916861 1.650768 -0.282203 +v 1.272063 1.650768 -0.282203 +v 0.917736 1.672297 -0.308436 +v 1.272063 1.672297 -0.308436 +v 0.918387 1.688295 -0.338366 +v 1.272063 1.688295 -0.338366 +v 0.918787 1.698146 -0.370841 +v 1.272063 1.698146 -0.370841 +v 0.918922 1.701472 -0.404613 +v 1.272063 1.698146 -0.438387 +v 0.918787 1.698146 -0.438387 +v 1.272063 1.688294 -0.470862 +v 0.918387 1.688294 -0.470862 +v 1.272063 1.672297 -0.500791 +v 0.917736 1.672297 -0.500791 +v 1.272063 1.650768 -0.527024 +v 0.916861 1.650768 -0.527024 +v 1.272063 1.624535 -0.548553 +v 0.915795 1.624535 -0.548553 +v 1.272063 1.594605 -0.564551 +v 0.912967 1.594605 -0.564551 +v 0.915353 1.613659 -0.554366 +v 1.272063 1.562130 -0.574402 +v 0.908902 1.562130 -0.574402 +v 1.272063 1.528358 -0.577728 +v 0.864478 1.316070 -0.742828 +v 0.895964 1.458794 5.211916 +v 0.915353 1.613659 -0.742828 +v 1.272063 1.701472 -0.404613 +v 0.647653 2.584387 -0.742828 +v 0.895964 1.458794 -0.742828 +v 0.915353 1.613659 5.211916 +v 0.581182 0.949177 5.211916 +v 0.581182 0.949177 -0.742828 +v 0.581182 2.583172 3.212208 +v 0.581182 2.600249 -0.742828 +vt 0.601212 0.686463 +vt 0.607212 0.688948 +vt 0.604727 0.694949 +vt 0.562350 0.784943 +vt 0.743961 0.782105 +vt 0.743961 0.784943 +vt 0.562350 0.782105 +vt 0.743961 0.779268 +vt 0.562350 0.779268 +vt 0.743961 0.776430 +vt 0.562350 0.776430 +vt 0.743961 0.773592 +vt 0.562350 0.765080 +vt 0.743961 0.762242 +vt 0.743961 0.765080 +vt 0.562350 0.762242 +vt 0.743961 0.759404 +vt 0.562350 0.759404 +vt 0.743961 0.756567 +vt 0.562350 0.756567 +vt 0.743961 0.753729 +vt 0.562350 0.753729 +vt 0.743961 0.750891 +vt 0.562350 0.750891 +vt 0.743961 0.748054 +vt 0.562350 0.748054 +vt 0.743961 0.745216 +vt 0.617321 0.697653 +vt 0.616723 0.705057 +vt 0.616723 0.697568 +vt 0.616125 0.705057 +vt 0.616125 0.697486 +vt 0.615527 0.705057 +vt 0.615527 0.697359 +vt 0.616059 0.697478 +vt 0.614929 0.705057 +vt 0.614929 0.697243 +vt 0.614331 0.705057 +vt 0.614331 0.697147 +vt 0.613733 0.705057 +vt 0.613733 0.697076 +vt 0.613135 0.705057 +vt 0.613135 0.697032 +vt 0.612537 0.705057 +vt 0.612537 0.697017 +vt 0.611939 0.697032 +vt 0.611939 0.705057 +vt 0.611341 0.697076 +vt 0.611341 0.705057 +vt 0.610743 0.697147 +vt 0.610743 0.705057 +vt 0.610145 0.697243 +vt 0.610145 0.705057 +vt 0.609547 0.697359 +vt 0.609547 0.705057 +vt 0.608949 0.697486 +vt 0.609015 0.697478 +vt 0.608949 0.705057 +vt 0.608351 0.697568 +vt 0.608351 0.705057 +vt 0.607753 0.697653 +vt 0.607753 0.705057 +vt 0.607155 0.697738 +vt 0.607155 0.705057 +vt 0.606557 0.697820 +vt 0.605959 0.705057 +vt 0.605959 0.697877 +vt 0.606177 0.697868 +vt 0.605361 0.697899 +vt 0.605361 0.705057 +vt 0.604763 0.697916 +vt 0.604763 0.705057 +vt 0.604165 0.697930 +vt 0.604165 0.705057 +vt 0.603567 0.697938 +vt 0.603567 0.705057 +vt 0.602969 0.697940 +vt 0.602372 0.705057 +vt 0.602372 0.697938 +vt 0.601774 0.705057 +vt 0.601774 0.697930 +vt 0.601176 0.705057 +vt 0.601176 0.697916 +vt 0.600578 0.705057 +vt 0.600578 0.697899 +vt 0.599980 0.705057 +vt 0.599980 0.697877 +vt 0.599382 0.705057 +vt 0.599382 0.697820 +vt 0.599762 0.697868 +vt 0.598784 0.705057 +vt 0.598784 0.697738 +vt 0.598186 0.705057 +vt 0.598186 0.697653 +vt 0.562350 0.773592 +vt 0.572667 0.772814 +vt 0.573697 0.772747 +vt 0.743961 0.770755 +vt 0.577845 0.770099 +vt 0.577947 0.769480 +vt 0.562350 0.767917 +vt 0.567489 0.768861 +vt 0.567387 0.769480 +vt 0.572667 0.766370 +vt 0.571637 0.766429 +vt 0.603865 0.695210 +vt 0.602969 0.695298 +vt 0.602074 0.695210 +vt 0.601212 0.694949 +vt 0.600418 0.694524 +vt 0.598727 0.692463 +vt 0.599722 0.693953 +vt 0.599151 0.693257 +vt 0.598465 0.691602 +vt 0.598377 0.690706 +vt 0.598465 0.689810 +vt 0.598727 0.688948 +vt 0.599151 0.688154 +vt 0.599722 0.687459 +vt 0.600418 0.686887 +vt 0.602074 0.686202 +vt 0.602969 0.686113 +vt 0.603865 0.686202 +vt 0.604727 0.686463 +vt 0.605521 0.686887 +vt 0.606217 0.687459 +vt 0.606788 0.688154 +vt 0.607474 0.689810 +vt 0.607562 0.690706 +vt 0.607474 0.691602 +vt 0.607212 0.692463 +vt 0.606788 0.693257 +vt 0.606217 0.693953 +vt 0.605521 0.694524 +vt 0.562350 0.745216 +vt 0.617321 0.705057 +vt 0.606557 0.705057 +vt 0.602969 0.705057 +vt 0.577057 0.771284 +vt 0.577491 0.770755 +vt 0.562350 0.770755 +vt 0.568277 0.771284 +vt 0.567842 0.770755 +vt 0.576399 0.771805 +vt 0.575599 0.772234 +vt 0.568932 0.771805 +vt 0.569733 0.772234 +vt 0.574686 0.772552 +vt 0.570646 0.772552 +vt 0.571637 0.772747 +vt 0.577545 0.768266 +vt 0.577233 0.767917 +vt 0.743961 0.767917 +vt 0.577545 0.770694 +vt 0.577845 0.768861 +vt 0.567789 0.770694 +vt 0.568098 0.767917 +vt 0.567789 0.768266 +vt 0.567489 0.770099 +vt 0.568277 0.767726 +vt 0.573697 0.766429 +vt 0.577057 0.767726 +vt 0.576399 0.767263 +vt 0.568932 0.767263 +vt 0.575599 0.766884 +vt 0.574686 0.766602 +vt 0.569733 0.766884 +vt 0.570646 0.766602 +vn 1.0000 0.0000 0.0000 +vn 0.5922 -0.8058 -0.0000 +vn 0.7915 -0.6112 -0.0000 +vn 0.8934 -0.4493 -0.0000 +vn 0.9471 -0.3208 -0.0000 +vn 0.9992 0.0407 0.0002 +vn 0.9990 0.0454 0.0000 +vn 0.9923 0.1242 0.0005 +vn 0.9765 0.2154 0.0009 +vn 0.9471 0.3208 0.0014 +vn 0.8934 0.4493 0.0019 +vn 0.7915 0.6112 0.0026 +vn 0.5922 0.8058 0.0035 +vn 0.0000 -0.0980 -0.9952 +vn 0.0000 -0.2903 -0.9569 +vn -0.0000 -0.4714 -0.8819 +vn 0.0000 -0.6344 -0.7730 +vn 0.0000 -0.7730 -0.6344 +vn 0.0000 -0.8819 -0.4714 +vn 0.0000 -0.9569 -0.2903 +vn 0.0000 -0.9952 -0.0980 +vn 0.0000 -0.9952 0.0980 +vn 0.0000 -0.9569 0.2903 +vn 0.0000 -0.8819 0.4714 +vn 0.0000 -0.7730 0.6344 +vn 0.0000 -0.6344 0.7730 +vn -0.0000 -0.4714 0.8819 +vn -0.0000 -0.4716 0.8818 +vn -0.0000 -0.4715 0.8819 +vn 0.0000 -0.2903 0.9569 +vn 0.0000 -0.0980 0.9952 +vn 0.0000 0.0980 0.9952 +vn 0.0000 0.2903 0.9569 +vn 0.0000 0.4714 0.8819 +vn 0.0000 0.6344 0.7730 +vn 0.0000 0.7730 0.6344 +vn 0.0000 0.8819 0.4714 +vn 0.0000 0.9569 0.2903 +vn 0.0000 0.9952 0.0980 +vn 0.0000 0.9952 -0.0980 +vn 0.0000 0.9569 -0.2903 +vn 0.0000 0.8819 -0.4714 +vn 0.0000 0.7730 -0.6344 +vn 0.0000 0.6344 -0.7730 +vn -0.0000 0.4714 -0.8819 +vn 0.0000 0.2903 -0.9569 +vn 0.0000 0.0980 -0.9952 +vn 0.9765 -0.2154 -0.0000 +vn 0.9766 -0.2150 -0.0000 +vn 0.9923 -0.1242 0.0000 +vn 0.9923 -0.1243 -0.0000 +vn 0.9992 -0.0406 0.0000 +vn 0.9992 -0.0407 -0.0000 +vn 0.9992 0.0406 0.0002 +vn 0.9765 -0.2155 0.0000 +s 1 +f 974/2065/296 975/2066/296 976/2067/296 +f 977/2068/297 978/2069/297 979/2070/297 +f 980/2071/298 981/2072/298 978/2069/298 +f 982/2073/299 983/2074/299 981/2072/299 +f 984/2075/300 985/2076/300 983/2074/300 +f 986/2077/301 987/2078/302 988/2079/302 +f 989/2080/303 990/2081/303 987/2078/303 +f 991/2082/304 992/2083/304 990/2081/304 +f 993/2084/305 994/2085/305 992/2083/305 +f 995/2086/306 996/2087/306 994/2085/306 +f 997/2088/307 998/2089/307 996/2087/307 +f 999/2090/308 1000/2091/308 998/2089/308 +f 1001/2092/309 1002/2093/309 1003/2094/309 +f 1003/2094/310 976/2095/310 1004/2096/310 +f 1005/2097/311 1006/2098/311 1007/2099/311 +f 1006/2098/312 1008/2100/312 1009/2101/312 +f 1009/2101/313 1010/2102/313 1011/2103/313 +f 1011/2103/314 1012/2104/314 1013/2105/314 +f 1013/2105/315 1014/2106/315 1015/2107/315 +f 1015/2107/316 1016/2108/316 1017/2109/316 +f 1016/2108/317 1018/2110/317 1017/2109/317 +f 1019/2111/318 1020/2112/318 1018/2110/318 +f 975/2113/319 1021/2114/319 1020/2112/319 +f 1022/2115/320 1023/2116/320 1021/2114/320 +f 1024/2117/321 1025/2118/321 1023/2116/321 +f 1026/2119/322 1027/2120/323 1028/2121/324 +f 1029/2122/325 1030/2123/325 1027/2120/325 +f 1031/2124/326 1032/2125/326 1030/2123/326 +f 1033/2126/327 1034/2127/327 1032/2125/327 +f 1035/2128/328 1036/2129/328 1034/2127/328 +f 1037/2130/329 1038/2131/329 1039/2132/329 +f 1037/2130/330 1040/2133/330 1038/2131/330 +f 1041/2134/331 1042/2135/331 1040/2133/331 +f 1043/2136/332 1044/2137/332 1042/2135/332 +f 1045/2138/333 1046/2139/333 1044/2137/333 +f 1047/2140/334 1048/2141/334 1046/2139/334 +f 1048/2141/335 1049/2142/335 1050/2143/335 +f 1050/2143/336 1051/2144/336 1052/2145/336 +f 1052/2145/337 1053/2146/337 1054/2147/337 +f 1054/2147/338 1055/2148/338 1056/2149/338 +f 1056/2149/339 1057/2150/339 1058/2151/339 +f 1059/2152/340 1060/2153/340 1061/2154/340 +f 1060/2153/341 1062/2155/341 1063/2156/341 +f 1063/2156/342 1064/2157/342 1001/2158/342 +f 1065/2159/343 1017/2160/344 1018/2161/343 +f 1066/2162/345 1030/2163/345 1032/2164/345 +f 1067/2165/345 1063/2166/345 1001/2167/346 +f 986/2077/347 1048/2168/348 1050/2169/347 +f 976/2067/296 1002/2170/296 1064/2171/296 +f 1064/2171/296 1062/2172/296 1059/2173/296 +f 1059/2173/296 1057/2174/296 1051/2175/296 +f 1057/2174/296 1055/2176/296 1051/2175/296 +f 1055/2176/296 1053/2177/296 1051/2175/296 +f 1051/2175/296 1049/2178/296 1068/2179/296 +f 1068/2179/296 1047/2180/296 1045/2181/296 +f 1045/2181/296 1043/2182/296 1041/2183/296 +f 1041/2183/296 1037/2184/296 974/2065/296 +f 974/2065/296 1035/2185/296 1033/2186/296 +f 1033/2186/296 1031/2187/296 1029/2188/296 +f 1029/2188/296 1026/2189/296 975/2066/296 +f 1026/2189/296 1024/2190/296 975/2066/296 +f 1024/2190/296 1022/2191/296 975/2066/296 +f 975/2066/296 1019/2192/296 1016/2193/296 +f 1016/2193/296 1014/2194/296 1012/2195/296 +f 1012/2195/296 1010/2196/296 976/2067/296 +f 1010/2196/296 1008/2197/296 976/2067/296 +f 1008/2197/296 1005/2198/296 976/2067/296 +f 976/2067/296 1064/2171/296 1051/2175/296 +f 1064/2171/296 1059/2173/296 1051/2175/296 +f 1051/2175/296 1068/2179/296 1045/2181/296 +f 1045/2181/296 1041/2183/296 1051/2175/296 +f 1041/2183/296 974/2065/296 1051/2175/296 +f 974/2065/296 1033/2186/296 975/2066/296 +f 1033/2186/296 1029/2188/296 975/2066/296 +f 975/2066/296 1016/2193/296 976/2067/296 +f 1016/2193/296 1012/2195/296 976/2067/296 +f 976/2067/296 1051/2175/296 974/2065/296 +f 977/2068/297 980/2071/297 978/2069/297 +f 980/2071/298 982/2073/298 981/2072/298 +f 982/2073/299 984/2075/299 983/2074/299 +f 984/2075/300 1065/2159/300 985/2076/300 +f 986/2077/301 989/2080/349 987/2078/302 +f 989/2080/303 991/2082/303 990/2081/303 +f 991/2082/304 993/2084/304 992/2083/304 +f 993/2084/305 995/2086/305 994/2085/305 +f 995/2086/306 997/2088/306 996/2087/306 +f 997/2088/307 999/2090/307 998/2089/307 +f 999/2090/308 1069/2199/308 1000/2091/308 +f 1001/2092/309 1064/2200/309 1002/2093/309 +f 1003/2094/310 1002/2093/310 976/2095/310 +f 1007/2099/311 1004/2096/311 1005/2097/311 +f 1004/2096/311 976/2095/311 1005/2097/311 +f 1006/2098/312 1005/2097/312 1008/2100/312 +f 1009/2101/313 1008/2100/313 1010/2102/313 +f 1011/2103/314 1010/2102/314 1012/2104/314 +f 1013/2105/315 1012/2104/315 1014/2106/315 +f 1015/2107/316 1014/2106/316 1016/2108/316 +f 1016/2108/317 1019/2111/317 1018/2110/317 +f 1019/2111/318 975/2113/318 1020/2112/318 +f 975/2113/319 1022/2115/319 1021/2114/319 +f 1022/2115/320 1024/2117/320 1023/2116/320 +f 1024/2117/321 1026/2119/321 1025/2118/321 +f 1028/2121/324 1025/2118/322 1026/2119/322 +f 1026/2119/322 1029/2122/322 1027/2120/323 +f 1029/2122/325 1031/2124/325 1030/2123/325 +f 1031/2124/326 1033/2126/326 1032/2125/326 +f 1033/2126/327 1035/2128/327 1034/2127/327 +f 1035/2128/328 974/2201/328 1036/2129/328 +f 1039/2132/329 1036/2129/329 974/2201/329 +f 974/2201/329 1037/2130/329 1039/2132/329 +f 1037/2130/330 1041/2134/330 1040/2133/330 +f 1041/2134/331 1043/2136/331 1042/2135/331 +f 1043/2136/332 1045/2138/332 1044/2137/332 +f 1045/2138/333 1047/2140/333 1046/2139/333 +f 1047/2140/334 1068/2202/334 1048/2141/334 +f 1048/2141/335 1068/2202/335 1049/2142/335 +f 1050/2143/336 1049/2142/336 1051/2144/336 +f 1052/2145/337 1051/2144/337 1053/2146/337 +f 1054/2147/338 1053/2146/338 1055/2148/338 +f 1056/2149/339 1055/2148/339 1057/2150/339 +f 1061/2154/340 1058/2151/340 1057/2150/340 +f 1057/2150/340 1059/2152/340 1061/2154/340 +f 1060/2153/341 1059/2152/341 1062/2155/341 +f 1063/2156/342 1062/2155/342 1064/2157/342 +f 1025/2203/343 1028/2204/343 985/2076/343 +f 1028/2204/343 1066/2162/343 985/2076/343 +f 985/2076/343 1065/2159/343 1018/2161/343 +f 1065/2159/343 1070/2205/343 1006/2206/343 +f 1070/2205/343 1007/2207/343 1006/2206/343 +f 1023/2208/343 1025/2203/343 985/2076/343 +f 1021/2209/343 1023/2208/343 985/2076/343 +f 1065/2159/343 1006/2206/343 1009/2210/343 +f 1065/2159/343 1009/2210/343 1011/2211/343 +f 1020/2212/343 1021/2209/343 985/2076/343 +f 1018/2161/343 1020/2212/343 985/2076/343 +f 1065/2159/343 1011/2211/343 1013/2213/343 +f 1065/2159/343 1013/2213/343 1015/2214/350 +f 1065/2159/343 1015/2214/350 1017/2160/344 +f 1036/2215/345 1039/2216/346 1071/2217/345 +f 1071/2217/345 1066/2162/345 1032/2164/346 +f 1066/2162/345 1028/2204/345 1027/2218/345 +f 1066/2162/345 1027/2218/345 1030/2163/345 +f 1034/2219/345 1036/2215/345 1071/2217/345 +f 1032/2164/346 1034/2219/345 1071/2217/345 +f 1004/2220/345 1007/2207/345 1070/2205/345 +f 1070/2205/345 1067/2165/345 1001/2167/345 +f 1067/2165/345 1061/2221/345 1060/2222/345 +f 1067/2165/345 1060/2222/345 1063/2166/345 +f 1003/2223/345 1004/2220/345 1070/2205/345 +f 1001/2167/345 1003/2223/345 1070/2205/345 +f 1058/2224/347 1061/2221/347 1067/2165/347 +f 986/2077/347 988/2079/347 1046/2225/347 +f 988/2079/347 1071/2217/347 1039/2216/347 +f 986/2077/347 1046/2225/347 1048/2168/348 +f 1039/2216/347 1038/2226/347 988/2079/347 +f 1038/2226/347 1040/2227/347 988/2079/347 +f 1058/2224/347 1067/2165/347 986/2077/347 +f 1056/2228/347 1058/2224/347 986/2077/347 +f 1040/2227/347 1042/2229/347 988/2079/347 +f 1042/2229/347 1044/2230/347 988/2079/347 +f 1054/2231/347 1056/2228/347 986/2077/347 +f 1052/2232/347 1054/2231/347 986/2077/347 +f 1044/2230/347 1046/2225/347 988/2079/347 +f 1050/2169/347 1052/2232/347 986/2077/347 +l 1075 1069 +l 1000 1074 +l 1072 979 +l 977 1073 +o Shell_Cylinder.002 +v -0.317579 2.171942 1.847565 +v 0.000000 2.303487 -0.098938 +v -0.317579 2.171942 -0.098938 +v 0.449124 1.854363 1.847565 +v 0.317579 1.536785 -0.098938 +v 0.449124 1.854363 -0.098938 +v 0.317579 1.536785 1.847565 +v 0.000000 1.405240 -0.098938 +v 0.000000 1.405239 1.847565 +v -0.317579 1.536785 -0.098938 +v -0.317579 1.536785 1.847565 +v -0.449124 1.854363 -0.098938 +v -0.449124 1.854363 1.847565 +v 0.000000 2.303487 1.847565 +v 0.317579 2.171942 -0.098938 +v 0.317579 2.171942 1.847565 +v 0.353356 2.207720 1.877207 +v 0.499721 1.854363 1.877207 +v 0.353356 1.501007 1.877207 +v 0.000000 1.354642 1.877207 +v -0.353356 1.501007 1.877207 +v -0.499721 1.854363 1.877207 +v -0.353356 2.207720 1.877207 +v 0.000000 2.354084 1.877207 +vt 0.125000 0.577656 +vt 0.000000 0.516094 +vt 0.125000 0.516094 +vt 0.750000 0.577656 +vt 0.625000 0.516094 +vt 0.750000 0.516094 +vt 0.625000 0.577656 +vt 0.500000 0.516094 +vt 0.500000 0.577656 +vt 0.375000 0.516094 +vt 0.375000 0.577656 +vt 0.250000 0.516094 +vt 0.250000 0.577656 +vt 1.000000 0.577656 +vt 0.875000 0.516094 +vt 1.000000 0.516094 +vt 0.875000 0.577656 +vt 0.707574 0.516599 +vt 0.690000 0.537812 +vt 0.707574 0.559026 +vt 0.218750 0.446250 +vt 0.195693 0.450000 +vt 0.195312 0.446250 +vt 0.172255 0.450000 +vt 0.171875 0.446250 +vt 0.148438 0.446250 +vt 0.171494 0.450000 +vt 0.148818 0.450000 +vt 0.125000 0.446250 +vt 0.148057 0.450000 +vt 0.125380 0.450000 +vt 0.101943 0.450000 +vt 0.101562 0.446250 +vt 0.078505 0.450000 +vt 0.078125 0.446250 +vt 0.054688 0.446250 +vt 0.077745 0.450000 +vt 0.055068 0.450000 +vt 0.031250 0.446250 +vt 0.054307 0.450000 +vt 0.031630 0.450000 +vt 0.013897 0.440000 +vt 0.130000 0.381948 +vt 0.246103 0.440000 +vt 0.000000 0.577656 +vt 0.750000 0.567813 +vt 0.792426 0.516599 +vt 0.792426 0.559026 +vt 0.810000 0.537812 +vt 0.750000 0.507812 +vt 0.218369 0.450000 +vt 0.194932 0.450000 +vt 0.124620 0.450000 +vt 0.101182 0.450000 +vt 0.212097 0.481049 +vt 0.130000 0.498052 +vt 0.047903 0.481049 +vt 0.047903 0.398951 +vt 0.212097 0.398951 +vn -0.3827 0.9239 0.0000 +vn 0.9239 -0.3827 -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.9239 0.3827 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.0000 0.0000 -1.0000 +vn 0.2049 0.4948 -0.8445 +vn 0.4948 0.2049 -0.8445 +vn 0.4948 -0.2049 -0.8445 +vn 0.2049 -0.4948 -0.8445 +vn -0.2049 -0.4948 -0.8445 +vn -0.4948 -0.2049 -0.8445 +vn -0.4948 0.2049 -0.8445 +vn -0.2049 0.4948 -0.8445 +vn 0.0000 -0.0000 1.0000 +s 1 +f 1076/2233/351 1077/2234/351 1078/2235/351 +f 1079/2236/352 1080/2237/352 1081/2238/352 +f 1082/2239/353 1083/2240/353 1080/2237/353 +f 1084/2241/354 1085/2242/354 1083/2240/354 +f 1086/2243/355 1087/2244/355 1085/2242/355 +f 1088/2245/356 1078/2235/356 1087/2244/356 +f 1089/2246/357 1090/2247/357 1077/2248/357 +f 1091/2249/358 1081/2238/358 1090/2247/358 +f 1085/2250/359 1087/2251/359 1078/2252/359 +f 1089/2253/360 1092/2254/360 1091/2255/360 +f 1091/2255/361 1093/2256/361 1079/2257/361 +f 1082/2258/362 1093/2259/362 1094/2260/362 +f 1084/2261/363 1094/2262/363 1095/2263/363 +f 1084/2261/364 1096/2264/364 1086/2265/364 +f 1086/2265/365 1097/2266/365 1088/2267/365 +f 1076/2268/366 1097/2269/366 1098/2270/366 +f 1089/2271/367 1098/2272/367 1099/2273/367 +f 1097/2274/368 1095/2275/368 1093/2276/368 +f 1076/2233/351 1089/2277/351 1077/2234/351 +f 1079/2236/352 1082/2239/352 1080/2237/352 +f 1082/2239/353 1084/2241/353 1083/2240/353 +f 1084/2241/354 1086/2243/354 1085/2242/354 +f 1086/2243/355 1088/2245/355 1087/2244/355 +f 1088/2245/356 1076/2233/356 1078/2235/356 +f 1089/2246/357 1091/2249/357 1090/2247/357 +f 1091/2249/358 1079/2236/358 1081/2238/358 +f 1078/2252/359 1077/2278/359 1080/2279/359 +f 1077/2278/359 1090/2280/359 1080/2279/359 +f 1090/2280/359 1081/2281/359 1080/2279/359 +f 1080/2279/359 1083/2282/359 1078/2252/359 +f 1083/2282/359 1085/2250/359 1078/2252/359 +f 1089/2253/360 1099/2283/360 1092/2254/360 +f 1091/2255/361 1092/2284/361 1093/2256/361 +f 1082/2258/362 1079/2257/362 1093/2259/362 +f 1084/2261/363 1082/2258/363 1094/2262/363 +f 1084/2261/364 1095/2285/364 1096/2264/364 +f 1086/2265/365 1096/2286/365 1097/2266/365 +f 1076/2268/366 1088/2267/366 1097/2269/366 +f 1089/2271/367 1076/2268/367 1098/2272/367 +f 1093/2276/368 1092/2287/368 1099/2288/368 +f 1099/2288/368 1098/2289/368 1097/2274/368 +f 1097/2274/368 1096/2290/368 1095/2275/368 +f 1095/2275/368 1094/2291/368 1093/2276/368 +f 1093/2276/368 1099/2288/368 1097/2274/368 diff --git a/src/main/resources/assets/hbm/models/weapons/coilgun.obj b/src/main/resources/assets/hbm/models/weapons/coilgun.obj new file mode 100644 index 000000000..849fa2f23 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/coilgun.obj @@ -0,0 +1,8489 @@ +# Blender v2.79 (sub 0) OBJ File: 'coilgun.blend' +# www.blender.org +o Coils_Cylinder.012 +v -0.463562 0.524760 -0.428106 +v -0.237813 0.524760 -0.428106 +v -0.237813 0.222044 -0.302716 +v -0.463562 0.222044 -0.302716 +v -0.237813 0.096655 0.000000 +v -0.463562 0.096655 0.000000 +v -0.237813 0.222044 0.302716 +v -0.463562 0.222044 0.302716 +v -0.237813 0.524760 0.428106 +v -0.463562 0.524760 0.428106 +v -0.237813 0.827477 0.302716 +v -0.463562 0.827477 0.302716 +v -0.237813 0.952866 0.000000 +v -0.463562 0.952866 0.000000 +v -0.237813 0.827477 -0.302716 +v -0.463562 0.827477 -0.302716 +v -0.170088 0.524760 -0.428106 +v 0.055660 0.524760 -0.428106 +v 0.055660 0.222044 -0.302716 +v -0.170088 0.222044 -0.302716 +v 0.055660 0.096655 0.000000 +v -0.170088 0.096655 0.000000 +v 0.055660 0.222044 0.302716 +v -0.170088 0.222044 0.302716 +v 0.055660 0.524760 0.428106 +v -0.170088 0.524760 0.428106 +v 0.055660 0.827477 0.302716 +v -0.170088 0.827477 0.302716 +v 0.055660 0.952866 0.000000 +v -0.170088 0.952866 0.000000 +v 0.055660 0.827477 -0.302716 +v -0.170088 0.827477 -0.302716 +v 0.123385 0.524760 -0.428106 +v 0.349134 0.524760 -0.428106 +v 0.349134 0.222044 -0.302716 +v 0.123385 0.222044 -0.302716 +v 0.349134 0.096655 0.000000 +v 0.123385 0.096655 0.000000 +v 0.349134 0.222044 0.302716 +v 0.123385 0.222044 0.302716 +v 0.349134 0.524760 0.428106 +v 0.123385 0.524760 0.428106 +v 0.349134 0.827477 0.302716 +v 0.123385 0.827477 0.302716 +v 0.349134 0.952866 0.000000 +v 0.123385 0.952866 0.000000 +v 0.349134 0.827477 -0.302716 +v 0.123385 0.827477 -0.302716 +v 0.416858 0.524760 -0.428106 +v 0.642607 0.524760 -0.428106 +v 0.642607 0.222044 -0.302716 +v 0.416858 0.222044 -0.302716 +v 0.642607 0.096655 0.000000 +v 0.416858 0.096655 0.000000 +v 0.642607 0.222044 0.302716 +v 0.416858 0.222044 0.302716 +v 0.642607 0.524760 0.428106 +v 0.416858 0.524760 0.428106 +v 0.642607 0.827477 0.302716 +v 0.416858 0.827477 0.302716 +v 0.642607 0.952866 0.000000 +v 0.416858 0.952866 0.000000 +v 0.642607 0.827477 -0.302716 +v 0.416858 0.827477 -0.302716 +v 0.710331 0.524760 -0.428106 +v 0.936080 0.524760 -0.428106 +v 0.936080 0.222044 -0.302716 +v 0.710331 0.222044 -0.302716 +v 0.936080 0.096655 0.000000 +v 0.710331 0.096655 0.000000 +v 0.936080 0.222044 0.302716 +v 0.710331 0.222044 0.302716 +v 0.936080 0.524760 0.428106 +v 0.710331 0.524760 0.428106 +v 0.936080 0.827477 0.302716 +v 0.710331 0.827477 0.302716 +v 0.936080 0.952866 0.000000 +v 0.710331 0.952866 0.000000 +v 0.936080 0.827477 -0.302716 +v 0.710331 0.827477 -0.302716 +v -1.457017 0.997796 0.139627 +v -1.457017 1.110929 0.189700 +v -1.405270 1.098405 0.216824 +v -1.405270 0.985272 0.166751 +v -1.405270 1.073357 0.271072 +v -1.405270 0.960224 0.220999 +v -1.457017 1.060833 0.298196 +v -1.457017 0.947700 0.248123 +v -1.508763 1.073357 0.271072 +v -1.508763 0.960224 0.220999 +v -1.508763 1.098405 0.216824 +v -1.508763 0.985272 0.166751 +v -1.322476 0.997796 0.139627 +v -1.322476 1.110929 0.189700 +v -1.270730 1.098405 0.216824 +v -1.270730 0.985272 0.166751 +v -1.270730 1.073357 0.271072 +v -1.270730 0.960224 0.220999 +v -1.322476 1.060833 0.298196 +v -1.322476 0.947700 0.248123 +v -1.374223 1.073357 0.271072 +v -1.374223 0.960224 0.220999 +v -1.374223 1.098405 0.216824 +v -1.374223 0.985272 0.166751 +v -1.187935 0.997796 0.139627 +v -1.187935 1.110929 0.189700 +v -1.136189 1.098405 0.216824 +v -1.136189 0.985272 0.166751 +v -1.136189 1.073357 0.271072 +v -1.136189 0.960224 0.220999 +v -1.187935 1.060833 0.298196 +v -1.187935 0.947700 0.248123 +v -1.239682 1.073357 0.271072 +v -1.239682 0.960224 0.220999 +v -1.239682 1.098405 0.216824 +v -1.239682 0.985272 0.166751 +v -1.551588 0.824089 0.270719 +v -1.551588 0.906574 0.321562 +v -1.551588 1.018668 0.066710 +v -1.551588 0.936183 0.015867 +v -1.097206 1.018668 0.066710 +v -1.097206 0.936183 0.015867 +v -1.097206 0.906574 0.321562 +v -1.097206 0.824089 0.270719 +v -1.521210 0.950031 0.320343 +v -1.521210 1.047137 0.099566 +v -1.127583 1.047137 0.099566 +v -1.127583 0.950031 0.320343 +v -1.457017 0.997796 -0.139627 +v -1.405271 0.985272 -0.166751 +v -1.405271 1.098405 -0.216824 +v -1.457017 1.110929 -0.189700 +v -1.405271 0.960224 -0.220999 +v -1.405271 1.073357 -0.271072 +v -1.457017 0.947700 -0.248123 +v -1.457017 1.060833 -0.298196 +v -1.508764 0.960224 -0.220999 +v -1.508764 1.073357 -0.271072 +v -1.508764 1.098405 -0.216824 +v -1.508764 0.985272 -0.166751 +v -1.322476 0.997796 -0.139627 +v -1.270730 0.985272 -0.166751 +v -1.270730 1.098405 -0.216824 +v -1.322476 1.110929 -0.189700 +v -1.270730 0.960224 -0.220999 +v -1.270730 1.073357 -0.271072 +v -1.322476 0.947700 -0.248123 +v -1.322476 1.060833 -0.298196 +v -1.374223 0.960224 -0.220999 +v -1.374223 1.073357 -0.271072 +v -1.374223 1.098405 -0.216824 +v -1.374223 0.985272 -0.166751 +v -1.187936 0.997796 -0.139627 +v -1.136189 0.985272 -0.166751 +v -1.136189 1.098405 -0.216824 +v -1.187936 1.110929 -0.189700 +v -1.136189 0.960224 -0.220999 +v -1.136189 1.073357 -0.271072 +v -1.187936 0.947700 -0.248123 +v -1.187936 1.060833 -0.298196 +v -1.239682 0.960224 -0.220999 +v -1.239682 1.073357 -0.271072 +v -1.239682 1.098405 -0.216824 +v -1.239682 0.985272 -0.166751 +v -1.551588 0.824089 -0.270719 +v -1.551588 0.936183 -0.015867 +v -1.551588 1.018668 -0.066710 +v -1.551588 0.906574 -0.321562 +v -1.097206 0.936183 -0.015867 +v -1.097206 1.018668 -0.066710 +v -1.097206 0.824089 -0.270719 +v -1.097206 0.906574 -0.321562 +v -1.521211 1.047137 -0.099566 +v -1.521211 0.950031 -0.320343 +v -1.127584 1.047137 -0.099566 +v -1.127584 0.950031 -0.320343 +v -1.552216 0.766425 0.449060 +v -1.552216 0.766425 0.324053 +v -1.613245 0.699098 0.324053 +v -1.613245 0.699098 0.449060 +v -1.552216 0.456014 0.324053 +v -1.048308 0.766425 0.449060 +v -1.048308 0.766425 0.324053 +v -1.552216 0.456014 0.449060 +v -1.048308 0.456014 0.324053 +v -1.041527 0.788142 0.315308 +v -1.041527 0.434297 0.315308 +v -1.048308 0.456014 0.449060 +v -1.041527 0.788142 0.457806 +v -1.041527 0.434297 0.457806 +v -0.900483 0.434297 0.457806 +v -0.900483 0.788142 0.457806 +v -0.900483 0.788142 0.315308 +v -0.896414 0.768510 0.449899 +v -0.896414 0.768510 0.323214 +v -0.900483 0.434297 0.315308 +v -0.896414 0.453929 0.449899 +v -0.817755 0.457256 0.449106 +v -0.817755 0.767895 0.449106 +v -0.896414 0.453929 0.323214 +v -0.817755 0.457256 0.324007 +v -0.817755 0.767895 0.324007 +v -1.613245 0.523341 0.449060 +v -1.613245 0.523341 0.324053 +v -1.552216 0.766425 -0.449060 +v -1.613245 0.699098 -0.449060 +v -1.613245 0.699098 -0.324053 +v -1.552216 0.766425 -0.324053 +v -1.552216 0.456014 -0.324053 +v -1.048308 0.766425 -0.324053 +v -1.048308 0.766425 -0.449060 +v -1.552216 0.456014 -0.449060 +v -1.048308 0.456014 -0.324053 +v -1.041528 0.434297 -0.315308 +v -1.041528 0.788142 -0.315308 +v -1.048308 0.456014 -0.449060 +v -1.041528 0.788142 -0.457806 +v -0.900483 0.788142 -0.457806 +v -0.900483 0.434297 -0.457806 +v -1.041528 0.434297 -0.457806 +v -0.900483 0.788142 -0.315308 +v -0.896414 0.768510 -0.323214 +v -0.896414 0.768510 -0.449899 +v -0.900483 0.434297 -0.315308 +v -0.817755 0.767895 -0.449106 +v -0.817755 0.457256 -0.449106 +v -0.896414 0.453929 -0.449899 +v -0.896414 0.453929 -0.323214 +v -0.817755 0.457256 -0.324007 +v -0.817755 0.767895 -0.324007 +v -1.613245 0.523341 -0.449060 +v -1.613245 0.523341 -0.324053 +v -2.170566 0.644712 -0.108739 +v -2.102717 0.644712 -0.108739 +v -2.102717 0.567822 -0.076890 +v -2.170566 0.567822 -0.076890 +v -2.102717 0.535974 0.000000 +v -2.170566 0.535974 0.000000 +v -2.102717 0.567822 0.076890 +v -2.170566 0.567822 0.076890 +v -2.102717 0.644712 0.108739 +v -2.170566 0.644712 0.108739 +v -2.102717 0.721602 0.076890 +v -2.170566 0.721602 0.076890 +v -2.102717 0.753451 0.000000 +v -2.170566 0.753451 0.000000 +v -2.102717 0.721602 -0.076890 +v -2.170566 0.721602 -0.076890 +v -2.209619 0.644712 0.088337 +v -2.209619 0.582248 0.062464 +v -2.209619 0.644712 -0.088337 +v -2.209619 0.582248 -0.062464 +v -2.209619 0.556375 0.000000 +v -2.209619 0.707176 0.062464 +v -2.209619 0.733049 0.000000 +v -2.209619 0.707176 -0.062464 +v -0.166791 0.038391 -0.117032 +v -0.166791 0.038391 0.117032 +v -0.118438 0.018363 0.117032 +v -0.118438 0.018363 -0.117032 +v -0.098409 -0.029991 0.117032 +v -0.098409 -0.029991 -0.117032 +v -0.118438 -0.078344 0.117032 +v -0.118438 -0.078344 -0.117032 +v -0.166791 -0.098373 0.117032 +v -0.166791 -0.098373 -0.117032 +v -0.215145 -0.078344 0.117032 +v -0.215145 -0.078344 -0.117032 +v -0.235173 -0.029991 0.117032 +v -0.235173 -0.029991 -0.117032 +v -0.215145 0.018363 0.117032 +v -0.215145 0.018363 -0.117032 +v -0.033837 0.094104 -0.072767 +v -0.033837 -0.016338 -0.072767 +v -0.115306 -0.142061 -0.072767 +v -0.115306 0.094104 -0.072767 +v 0.797049 0.094104 -0.072767 +v 0.797049 -0.016338 -0.072767 +v 0.796577 -0.079782 0.048582 +v 0.796577 -0.079782 -0.048582 +v 0.886076 -0.258069 -0.048582 +v 0.886076 -0.258069 0.048582 +v 0.797049 -0.016338 0.072767 +v 0.797049 0.094104 0.072767 +v -0.033837 0.094104 0.072767 +v -0.033837 -0.016338 0.072767 +v -0.026079 -0.079782 -0.048582 +v -0.115306 0.094104 0.072767 +v -0.272459 0.094104 -0.072767 +v -0.272459 0.094104 0.072767 +v -0.115306 -0.142061 0.072767 +v -0.272459 -0.098487 0.072767 +v -0.264701 -0.161930 0.048582 +v -0.107548 -0.205505 0.048582 +v -0.272459 -0.098487 -0.072767 +v -0.026079 -0.079782 0.048582 +v -0.107548 -0.205505 -0.048582 +v -0.264701 -0.161930 -0.048582 +v 0.886547 -0.194626 0.072767 +v 0.888072 -0.069961 0.072767 +v 0.917361 0.000750 0.072767 +v 0.988072 0.030039 0.072767 +v 1.058783 0.000750 0.072767 +v 1.088072 -0.069961 0.072767 +v 1.088250 -0.195375 0.072767 +v 0.886547 -0.194626 -0.072767 +v 1.088250 -0.195375 -0.072767 +v 1.087778 -0.258818 -0.048582 +v 1.087778 -0.258818 0.048582 +v 1.152616 -0.153109 -0.048582 +v 1.152616 -0.153109 0.048582 +v 1.153087 -0.089666 0.072767 +v 0.888072 -0.069961 -0.072767 +v 0.917362 -0.140671 -0.072767 +v 0.988072 -0.169961 -0.072767 +v 1.058783 -0.140671 -0.072767 +v 1.088072 -0.069961 -0.072767 +v 1.153087 -0.089666 -0.072767 +v 1.153087 0.092782 -0.072767 +v 1.153087 0.092782 0.072767 +v 0.917361 0.000750 -0.072767 +v 1.058783 0.000750 -0.072767 +v 1.058783 -0.140671 0.072767 +v 0.988072 -0.169961 0.072767 +v 0.917362 -0.140671 0.072767 +v 0.988072 0.030039 -0.072767 +v -1.185225 0.299229 -0.228225 +v -1.185225 0.078919 -0.228225 +v -1.579320 0.146982 -0.228225 +v -1.579320 0.299229 -0.228225 +v -0.726389 0.070637 -0.201417 +v -0.726389 0.299229 -0.201417 +v -0.726389 0.299229 0.201417 +v -0.726389 0.070637 0.201417 +v -0.770558 0.343398 -0.201417 +v -1.096886 0.343398 -0.201417 +v -1.096886 0.343398 0.201417 +v -0.770558 0.343398 0.201417 +v -1.185225 0.078919 0.228225 +v -1.185225 0.299229 0.228225 +v -1.579320 0.299229 0.228225 +v -1.579320 0.146982 0.228225 +v -1.185225 0.343398 0.201417 +v -1.185225 0.343398 -0.201417 +v -1.579320 0.343398 -0.201417 +v -1.579320 0.343398 0.201417 +v -1.096886 0.026467 -0.201417 +v -0.770558 0.026467 -0.201417 +v -0.770558 0.026467 0.201417 +v -1.096886 0.026467 0.201417 +v -1.096886 0.070637 -0.228225 +v -1.096886 0.299229 -0.228225 +v -0.770558 0.299229 -0.228225 +v -0.770558 0.070637 -0.228225 +v -0.770558 0.070637 0.228225 +v -0.770558 0.299229 0.228225 +v -1.096886 0.299229 0.228225 +v -1.096886 0.070637 0.228225 +v -1.690351 0.200246 0.201417 +v -1.690351 0.287913 0.201417 +v -1.690351 0.287913 -0.201417 +v -1.690351 0.200246 -0.201417 +v -1.184581 0.033984 0.201417 +v -1.184581 0.033984 -0.201417 +v -1.659805 0.134929 0.201417 +v -1.579964 0.102270 0.201417 +v -1.667659 0.194088 0.228225 +v -1.667659 0.291126 0.228225 +v -1.646801 0.339453 0.201417 +v -1.659805 0.134929 -0.201417 +v -1.667659 0.194088 -0.228225 +v -1.579964 0.102270 -0.201417 +v -1.667040 0.336028 -0.201417 +v -1.667659 0.291126 -0.228225 +v -0.991593 0.009137 0.090896 +v -0.991593 0.050129 0.090896 +v -0.991593 0.050129 -0.090896 +v -0.991593 0.009137 -0.090896 +v -0.359255 0.050129 -0.090896 +v -0.359255 0.009137 -0.090896 +v -0.359255 0.050129 0.090896 +v -0.359255 0.009137 0.090896 +v -0.952793 -0.032302 0.079741 +v -0.475801 -0.032302 0.079741 +v -0.398056 -0.032302 0.079741 +v -0.952793 -0.032302 -0.079741 +v -0.477062 -0.032302 -0.079741 +v -0.398056 -0.032302 -0.079741 +v -0.547697 -0.243266 -0.079741 +v -0.468691 -0.243266 -0.079741 +v -0.417833 -0.308250 -0.079741 +v -0.496840 -0.308250 -0.079741 +v -0.468691 -0.243266 0.079741 +v -0.546437 -0.243266 0.079741 +v -0.495579 -0.308250 0.079741 +v -0.884730 -0.317360 -0.073714 +v -0.883469 -0.317360 0.085769 +v -0.417833 -0.308250 0.079741 +v -0.548320 -0.390292 0.079741 +v -0.549581 -0.390292 -0.079741 +v -0.470574 -0.390292 -0.079741 +v -0.470574 -0.390292 0.079741 +v -0.933383 -0.398929 -0.073714 +v -0.932122 -0.398929 0.085769 +v -1.071287 -0.315922 0.087949 +v -1.072548 -0.315922 -0.071533 +v -1.022634 -0.234353 0.087949 +v -1.023895 -0.234353 -0.071533 +v -0.906556 -0.031746 0.035327 +v -0.906556 -0.031746 -0.035327 +v -0.750972 -0.031746 -0.035327 +v -0.750972 -0.031746 0.035327 +v -0.891840 -0.172320 -0.035327 +v -0.891840 -0.172320 0.035327 +v -0.858049 -0.254618 0.035327 +v -0.773318 -0.237178 0.035327 +v -0.781494 -0.172320 0.035327 +v -0.781494 -0.172320 -0.035327 +v -0.752234 -0.268743 0.035327 +v -0.752234 -0.268743 -0.035327 +v -0.773318 -0.237178 -0.035327 +v -0.858049 -0.254618 -0.035327 +v -0.786277 -0.298175 0.035327 +v -0.786277 -0.298175 -0.035327 +v -0.654718 0.939467 0.338343 +v -0.745955 0.781575 0.338343 +v -0.745839 1.097427 0.338343 +v -0.757348 1.077508 0.380293 +v -0.677723 0.939476 0.380293 +v -1.019432 0.939601 0.338343 +v -0.928196 1.097493 0.338343 +v -0.928312 0.781642 0.338343 +v -0.916701 1.077567 0.380293 +v -0.996428 0.939592 0.380293 +v -0.949024 0.939575 0.380293 +v -0.893014 1.036505 0.380293 +v -0.916802 0.801560 0.380293 +v -0.757450 0.801501 0.380293 +v -0.781065 1.036464 0.380293 +v -0.884357 1.021497 0.419074 +v -0.789734 1.021463 0.419074 +v -0.781137 0.842563 0.380293 +v -0.893085 0.842604 0.380293 +v -0.725127 0.939493 0.380293 +v -0.931698 0.939569 0.419074 +v -0.877029 0.939549 0.419074 +v -0.857040 0.974142 0.419074 +v -0.884417 0.857606 0.419074 +v -0.742452 0.939499 0.419074 +v -0.789794 0.857571 0.419074 +v -0.817086 0.974128 0.419074 +v -0.857040 0.974142 0.317496 +v -0.817086 0.974128 0.317496 +v -0.817111 0.904926 0.419074 +v -0.857065 0.904940 0.419074 +v -0.797122 0.939519 0.419074 +v -0.797122 0.939519 0.317496 +v -0.877029 0.939549 0.317496 +v -0.857065 0.904940 0.317496 +v -0.817111 0.904926 0.317496 +v -0.745955 0.781575 -0.338343 +v -0.654718 0.939467 -0.338343 +v -0.677723 0.939476 -0.380293 +v -0.757348 1.077508 -0.380293 +v -0.745839 1.097427 -0.338343 +v -0.928196 1.097493 -0.338343 +v -1.019432 0.939601 -0.338343 +v -0.928312 0.781642 -0.338343 +v -0.916701 1.077567 -0.380293 +v -0.893014 1.036505 -0.380293 +v -0.949024 0.939575 -0.380293 +v -0.996428 0.939593 -0.380293 +v -0.916802 0.801560 -0.380293 +v -0.757450 0.801502 -0.380293 +v -0.781065 1.036464 -0.380293 +v -0.789734 1.021463 -0.419074 +v -0.884357 1.021497 -0.419074 +v -0.893085 0.842604 -0.380293 +v -0.781137 0.842563 -0.380293 +v -0.725127 0.939493 -0.380293 +v -0.857040 0.974142 -0.419074 +v -0.877029 0.939549 -0.419074 +v -0.931698 0.939569 -0.419074 +v -0.884417 0.857606 -0.419074 +v -0.789794 0.857571 -0.419074 +v -0.742452 0.939499 -0.419074 +v -0.817086 0.974128 -0.419074 +v -0.817086 0.974128 -0.317496 +v -0.857040 0.974142 -0.317496 +v -0.857065 0.904940 -0.419074 +v -0.817111 0.904926 -0.419074 +v -0.797122 0.939519 -0.419074 +v -0.797122 0.939519 -0.317496 +v -0.817111 0.904926 -0.317496 +v -0.857065 0.904940 -0.317496 +v -0.877029 0.939549 -0.317496 +v 0.990151 -0.648179 -0.190841 +v 0.990151 -0.321606 -0.374799 +v 1.068843 -0.322088 -0.329369 +v 1.068843 -0.609076 -0.167709 +v 1.068843 -0.323051 -0.238509 +v 1.068843 -0.530870 -0.121444 +v 0.990151 -0.323533 -0.193078 +v 0.990151 -0.491768 -0.098312 +v 0.911459 -0.323051 -0.238509 +v 0.911459 -0.530870 -0.121444 +v 0.911459 -0.322088 -0.329369 +v 0.911459 -0.609076 -0.167709 +v 0.990151 0.000993 -0.183958 +v 1.068843 -0.038592 -0.161660 +v 1.068843 -0.117761 -0.117064 +v 0.990151 -0.157346 -0.094766 +v 0.911459 -0.117761 -0.117064 +v 0.911459 -0.038592 -0.161660 +v 0.990151 -0.002981 0.190841 +v 1.068843 -0.042084 0.167709 +v 1.068843 -0.120290 0.121444 +v 0.990151 -0.159393 0.098312 +v 0.911459 -0.120290 0.121444 +v 0.911459 -0.042084 0.167709 +v 0.990151 -0.329554 0.374799 +v 1.068843 -0.329073 0.329369 +v 1.068843 -0.328109 0.238509 +v 0.990151 -0.327627 0.193079 +v 0.911459 -0.328109 0.238509 +v 0.911459 -0.329073 0.329369 +v 0.990151 -0.652153 0.183958 +v 1.068843 -0.612568 0.161660 +v 1.068843 -0.533399 0.117064 +v 0.990151 -0.493815 0.094766 +v 0.911459 -0.533399 0.117064 +v 0.911459 -0.612568 0.161660 +v -0.972691 1.166717 0.278124 +v -0.972691 1.166717 -0.278124 +v -0.987438 1.166717 -0.260322 +v -0.987438 1.166717 0.260322 +v -0.934937 1.102284 0.278124 +v -0.934937 1.102284 -0.278124 +v -0.971860 1.037372 0.278124 +v -0.971860 1.037372 -0.278124 +v -1.046537 1.036892 0.278124 +v -1.046537 1.036892 -0.278124 +v -1.047369 1.166237 0.278124 +v -1.084291 1.101324 0.278124 +v -1.084291 1.101324 -0.278124 +v -1.047368 1.166237 -0.278124 +v -1.032621 1.166237 -0.260322 +v -1.032621 1.166237 0.260322 +v -1.033084 1.202181 0.260322 +v -1.033084 1.202181 -0.260322 +v -0.987902 1.202661 0.260322 +v -0.987902 1.202661 -0.260322 +v -1.464091 -0.996279 -0.140051 +v -1.457375 -0.967729 -0.140051 +v -1.339310 -0.995504 -0.070026 +v -1.346026 -1.024054 -0.070026 +v -1.339310 -0.995504 0.070026 +v -1.346026 -1.024054 0.070026 +v -1.457375 -0.967729 0.140051 +v -1.464091 -0.996279 0.140051 +v -1.575440 -0.939954 0.070026 +v -1.582156 -0.968503 0.070026 +v -1.343945 -0.917630 -0.057125 +v -1.343945 -0.917630 0.057125 +v -1.575440 -0.939954 -0.070026 +v -1.582156 -0.968503 -0.070026 +v -1.482215 -1.073316 0.113549 +v -1.386492 -1.095835 0.056774 +v -1.440258 -0.894971 -0.114249 +v -1.536572 -0.872313 -0.057125 +v -1.536572 -0.872313 0.057125 +v -1.440258 -0.894971 0.114249 +v -1.577937 -1.050797 0.056774 +v -1.577937 -1.050797 -0.056774 +v -1.539716 -1.059789 -0.034105 +v -1.539716 -1.059789 0.034105 +v -1.482215 -1.073316 -0.113549 +v -1.386492 -1.095835 -0.056774 +v -1.482215 -1.073316 -0.068210 +v -1.487302 -1.094942 -0.059778 +v -1.537696 -1.083087 -0.029889 +v -1.482215 -1.073316 0.068210 +v -1.424713 -1.086844 0.034105 +v -1.424713 -1.086844 -0.034105 +v -1.436908 -1.106798 -0.029889 +v -1.436908 -1.106798 0.029889 +v -1.487302 -1.094942 0.059778 +v -1.537696 -1.083087 0.029889 +v -1.508359 -0.214874 0.108693 +v -1.504838 -0.215309 -0.106817 +v -1.564296 -0.274102 -0.089219 +v -1.567402 -0.273718 0.089973 +v -1.348484 -0.928894 -0.174279 +v -1.331423 -0.813343 -0.174279 +v -1.263873 -0.855085 -0.182453 +v -1.262042 -0.949106 -0.182453 +v -1.263873 -0.855085 0.182453 +v -1.207149 -0.865197 0.174081 +v -1.207149 -0.865197 -0.174081 +v -1.570189 -0.877055 0.143835 +v -1.435938 -0.379825 0.163084 +v -1.622805 -0.828855 0.096503 +v -1.262042 -0.949106 0.182453 +v -1.348484 -0.928894 0.174279 +v -1.435938 -0.379825 -0.163084 +v -1.112852 -0.829663 0.130793 +v -1.112852 -0.829663 -0.130793 +v -1.205319 -0.959218 -0.174081 +v -1.205319 -0.959218 0.174081 +v -1.111021 -0.923684 0.130793 +v -1.072210 -0.848373 0.087270 +v -1.073111 -0.802094 0.087270 +v -1.111021 -0.923684 -0.130793 +v -1.072210 -0.848373 -0.087270 +v -1.073111 -0.802094 -0.087270 +v -1.681696 -0.766817 -0.072169 +v -1.689936 -0.702839 -0.059605 +v -1.640119 -0.414721 -0.072179 +v -1.619700 -0.829239 -0.095954 +v -1.684682 -0.766448 0.071709 +v -1.643105 -0.414353 0.071698 +v -1.666879 -0.498637 -0.059615 +v -1.669865 -0.498268 0.058900 +v -1.692922 -0.702470 0.058910 +v -1.690559 -0.607421 0.054481 +v -1.687573 -0.607789 -0.055307 +v -1.331423 -0.813343 0.174279 +v -1.416650 -0.767127 -0.178303 +v -1.416650 -0.767127 0.178303 +v -1.469005 -0.685482 -0.171908 +v -1.469005 -0.685482 0.171908 +v -1.542909 -0.883434 -0.161182 +v -1.516768 -0.889546 -0.174389 +v -1.516768 -0.889546 0.174389 +v -1.542909 -0.883434 0.161182 +v -1.432626 -0.909220 -0.178303 +v -1.432626 -0.909220 0.178303 +v -1.484962 -0.656299 -0.158888 +v -1.570189 -0.877055 -0.143835 +v -1.484962 -0.656299 0.158888 +v -1.325666 -0.019640 0.170554 +v -1.325666 0.137146 0.170554 +v -1.472478 0.148884 0.071087 +v -1.472478 -0.007902 0.071087 +v -1.325666 -0.019640 -0.170554 +v -1.325666 0.137146 -0.170554 +v -1.062875 0.137146 -0.170554 +v -1.062875 -0.019640 -0.170554 +v -1.130714 -0.142396 -0.170554 +v -0.914155 -0.020276 -0.107189 +v -0.981994 -0.143031 -0.107189 +v -1.062875 -0.019640 0.170554 +v -1.062875 0.137146 0.170554 +v -0.914155 0.136510 -0.107189 +v -1.259746 -0.728734 -0.170554 +v -1.147611 -0.221161 -0.170554 +v -0.998891 -0.221796 -0.107189 +v -1.111026 -0.729370 -0.107189 +v -1.346664 -0.179545 0.170554 +v -1.130714 -0.142396 0.170554 +v -1.346664 -0.179545 -0.170554 +v -1.447785 -0.735647 0.170554 +v -1.363562 -0.258310 0.170554 +v -1.510373 -0.246572 0.071087 +v -1.594597 -0.723909 0.071087 +v -0.981994 -0.143031 0.107189 +v -0.914155 -0.020276 0.107189 +v -1.363562 -0.258310 -0.170554 +v -1.447785 -0.735647 -0.170554 +v -1.594597 -0.723909 -0.071087 +v -1.510373 -0.246572 -0.071087 +v -1.147611 -0.221161 0.170554 +v -1.259746 -0.728734 0.170554 +v -1.483874 -0.874924 0.170554 +v -1.219691 -0.868011 0.170554 +v -1.493475 -0.167807 0.071087 +v -1.219691 -0.868011 -0.170554 +v -0.914155 0.136510 0.107189 +v -1.472478 -0.007902 -0.071087 +v -1.472478 0.148884 -0.071087 +v -1.493475 -0.167807 -0.071087 +v -1.630686 -0.740134 -0.071087 +v -1.630686 -0.740134 0.071087 +v -0.998891 -0.221796 0.107189 +v -1.111026 -0.729370 0.107189 +v -1.100054 -0.868647 0.107189 +v -1.100054 -0.868647 -0.107189 +v -1.483874 -0.874924 -0.170554 +v -1.114931 0.645018 -0.394257 +v -0.705608 0.645018 -0.392564 +v -0.705608 0.367434 -0.277584 +v -1.115595 0.367434 -0.277584 +v -0.705608 0.252454 0.000000 +v -1.115595 0.252454 0.000000 +v -0.705608 0.367434 0.277584 +v -1.115595 0.367434 0.277584 +v -0.705608 0.645018 0.392564 +v -1.115595 0.645018 0.392564 +v -0.705608 0.922602 0.277584 +v -1.115595 0.922602 0.277584 +v -0.705608 1.037581 0.000000 +v -1.115595 1.037581 0.000000 +v -0.705608 0.922602 -0.277584 +v -1.115595 0.922602 -0.277584 +v -1.680468 0.367434 -0.277584 +v -1.680468 0.252454 0.000000 +v -1.696762 0.326183 0.000000 +v -1.696762 0.419567 -0.225451 +v -1.696762 0.645018 0.318835 +v -1.696762 0.870468 0.225451 +v -1.717499 0.922175 0.277157 +v -1.717499 0.645018 0.391959 +v -1.680468 0.645018 0.392564 +v -1.680468 0.922602 0.277584 +v -1.680468 0.922602 -0.277584 +v -1.680468 0.645018 -0.392564 +v -1.696762 0.645018 -0.318835 +v -1.696762 0.870469 -0.225450 +v -1.680468 0.367434 0.277584 +v -1.696762 0.419567 0.225451 +v -1.680468 1.037582 0.000000 +v -1.696762 0.963853 0.000000 +v -1.717499 1.036977 0.000000 +v -1.717499 0.922175 -0.277157 +v -1.807855 0.922175 -0.277157 +v -1.807855 1.036977 0.000000 +v -1.717499 0.367861 0.277157 +v -1.717499 0.253059 0.000000 +v -1.717499 0.367861 -0.277157 +v -1.717499 0.645018 -0.391959 +v -1.807855 0.922175 0.277157 +v -1.827112 0.964049 0.000000 +v -1.827112 0.870607 0.225589 +v -1.807856 0.645018 0.391959 +v -1.807856 0.367861 0.277157 +v -1.807856 0.253059 0.000000 +v -1.807856 0.367861 -0.277157 +v -1.807856 0.645018 -0.391959 +v -1.827112 0.645018 -0.319031 +v -1.827112 0.419429 -0.225589 +v -1.850272 0.367220 -0.277798 +v -1.850272 0.645018 -0.392866 +v -1.827112 0.645018 0.319031 +v -1.827112 0.419429 0.225589 +v -1.827112 0.325987 0.000000 +v -1.827112 0.870607 -0.225589 +v -1.850272 1.037884 0.000000 +v -1.850272 0.922816 -0.277798 +v -1.929992 0.922816 -0.277798 +v -1.929992 1.037884 0.000000 +v -1.850272 0.922816 0.277798 +v -1.850272 0.645018 0.392866 +v -1.850272 0.367220 0.277798 +v -1.850272 0.252152 0.000000 +v -1.929992 0.367220 -0.277798 +v -1.929992 0.252152 0.000000 +v -2.043752 0.321683 0.000000 +v -2.043752 0.416385 -0.228633 +v -1.929992 0.922816 0.277798 +v -1.929992 0.645018 0.392866 +v -1.929992 0.367220 0.277798 +v -1.929992 0.645018 -0.392866 +v -2.043752 0.873651 -0.228633 +v -2.043752 0.645018 -0.323335 +v -2.121962 0.645018 -0.225354 +v -2.121962 0.804367 -0.159349 +v -2.043752 0.968353 0.000000 +v -2.043752 0.873651 0.228633 +v -2.043752 0.645018 0.323335 +v -2.043752 0.416385 0.228633 +v -2.121962 0.870372 0.000000 +v -2.179800 0.787147 -0.142129 +v -2.179800 0.846019 0.000000 +v -2.121962 0.804367 0.159349 +v -2.121962 0.645018 0.225354 +v -2.121962 0.485669 0.159349 +v -2.121962 0.419664 0.000000 +v -2.121962 0.485669 -0.159349 +v -2.179800 0.787147 0.142129 +v -2.179800 0.817735 0.000000 +v -2.179800 0.767148 0.122130 +v -2.179800 0.645018 0.201001 +v -2.179800 0.502889 0.142129 +v -2.179800 0.444017 0.000000 +v -2.179800 0.502889 -0.142129 +v -2.179800 0.645018 -0.201001 +v -2.179800 0.645018 -0.172717 +v -2.179800 0.522888 -0.122130 +v -2.139229 0.522888 -0.122130 +v -2.139229 0.645018 -0.172717 +v -2.179800 0.645018 0.172717 +v -2.179800 0.522888 0.122130 +v -2.179800 0.472301 0.000000 +v -2.179800 0.767148 -0.122130 +v -2.139229 0.472301 0.000000 +v -2.139229 0.522888 0.122130 +v -2.139229 0.645018 0.172717 +v -2.139229 0.767148 0.122130 +v -2.139229 0.817735 0.000000 +v -2.139229 0.767148 -0.122130 +v -1.416219 0.923800 -0.278782 +v -1.416219 0.645018 -0.394257 +v -1.415588 1.037581 0.000000 +v -1.416219 0.923800 0.278782 +v -1.416219 0.645018 0.394257 +v -1.416219 0.366236 0.278782 +v -1.415589 0.252454 0.000000 +v -1.416219 0.366236 -0.278782 +v -1.161507 0.923800 -0.278782 +v -1.161507 0.645018 -0.394257 +v -1.161507 1.039275 0.000000 +v -1.161507 0.923800 0.278782 +v -1.161507 0.645018 0.394257 +v -1.161507 0.366236 0.278782 +v -1.161507 0.250761 0.000000 +v -1.161507 0.366236 -0.278782 +v -1.379544 0.645018 -0.394257 +v -1.379545 0.366236 -0.278782 +v -1.379545 1.039275 0.000000 +v -1.379545 0.923800 0.278782 +v -1.382795 0.953877 0.308859 +v -1.382795 1.081811 0.000000 +v -1.319287 0.645018 -0.409318 +v -1.221764 0.645018 -0.409318 +v -1.221764 0.355586 -0.289432 +v -1.319287 0.355586 -0.289432 +v -1.158621 0.950501 -0.305483 +v -1.158621 1.077036 0.000000 +v -1.379545 0.250761 0.000000 +v -1.319287 0.235700 0.000000 +v -1.316037 0.208225 0.000000 +v -1.316037 0.336159 -0.308859 +v -1.221764 0.235700 0.000000 +v -1.158621 0.950501 0.305483 +v -1.158621 0.645018 0.432019 +v -1.379545 0.366236 0.278782 +v -1.379545 0.645018 0.394257 +v -1.382795 0.336159 0.308859 +v -1.382795 0.645018 0.436793 +v -1.221764 0.355586 0.289432 +v -1.319287 0.355586 0.289432 +v -1.221764 0.934450 -0.289432 +v -1.221764 1.054336 0.000000 +v -1.224650 1.077036 0.000000 +v -1.224650 0.950501 -0.305483 +v -1.382795 0.336159 -0.308859 +v -1.382795 0.208225 0.000000 +v -1.221764 0.645018 0.409318 +v -1.319287 0.645018 0.409318 +v -1.158621 0.339535 0.305483 +v -1.158621 0.212999 0.000000 +v -1.319287 1.054336 0.000000 +v -1.319287 0.934450 -0.289432 +v -1.316037 0.953877 -0.308859 +v -1.316037 1.081811 0.000000 +v -1.221764 0.934450 0.289432 +v -1.319287 0.934450 0.289432 +v -1.224650 0.645018 0.432019 +v -1.224650 0.950501 0.305483 +v -1.316037 0.953877 0.308859 +v -1.316037 0.645018 0.436793 +v -1.158621 0.339535 -0.305483 +v -1.158621 0.645018 -0.432019 +v -1.379545 0.923800 -0.278782 +v -1.382795 0.953877 -0.308859 +v -1.224650 0.212999 0.000000 +v -1.224650 0.339535 0.305483 +v -1.316037 0.336159 0.308859 +v -1.224650 0.645018 -0.432019 +v -1.224650 0.339535 -0.305483 +v -1.382795 0.645018 -0.436793 +v -1.316036 0.645018 -0.436793 +v -0.419369 0.526526 -0.206986 +v 0.947632 0.526526 -0.206986 +v 0.947632 0.380164 -0.146361 +v -0.419369 0.380164 -0.146361 +v 0.947632 0.319540 0.000000 +v -0.419369 0.319540 0.000000 +v 0.947632 0.380164 0.146361 +v -0.419369 0.380164 0.146361 +v 0.947632 0.526526 0.206986 +v -0.419369 0.526526 0.206986 +v 0.947632 0.672887 0.146361 +v -0.419369 0.672887 0.146361 +v 0.947632 0.733512 0.000000 +v -0.419369 0.733512 0.000000 +v 0.947632 0.672887 -0.146361 +v -0.419369 0.672887 -0.146361 +v 1.384588 0.551670 0.654257 +v 1.384588 0.551670 0.449972 +v 1.139921 0.531994 0.449972 +v 1.139921 0.531994 0.558806 +v 1.384588 0.408111 0.449972 +v 1.504148 0.551670 0.449972 +v 1.504148 0.408111 0.449972 +v 1.504148 0.551670 0.654257 +v 1.577323 0.529883 0.613238 +v 1.577323 0.529883 0.449972 +v 1.504148 0.408111 0.654257 +v 1.384588 0.408111 0.654257 +v 1.577323 0.429898 0.449972 +v 1.577323 0.429898 0.613238 +v 1.139921 0.427787 0.558806 +v 1.139921 0.427787 0.449972 +v 1.384588 0.551670 -0.654257 +v 1.139921 0.531994 -0.558805 +v 1.139921 0.531994 -0.449972 +v 1.384588 0.551670 -0.449972 +v 1.384588 0.408111 -0.449972 +v 1.504148 0.408111 -0.449972 +v 1.504148 0.551670 -0.449972 +v 1.577323 0.529883 -0.449972 +v 1.577323 0.529883 -0.613238 +v 1.504148 0.551670 -0.654257 +v 1.504148 0.408111 -0.654257 +v 1.384588 0.408111 -0.654257 +v 1.577323 0.429898 -0.449972 +v 1.577323 0.429898 -0.613238 +v 1.139921 0.427787 -0.558805 +v 1.139921 0.427787 -0.449972 +v 1.310526 -0.082794 0.073582 +v 1.384588 0.101767 0.073582 +v 1.139921 0.101767 0.053905 +v 1.144858 -0.044123 0.053905 +v 1.384588 0.101767 -0.069977 +v 1.504148 0.101767 0.073582 +v 1.504148 0.101767 -0.069977 +v 1.430086 -0.082794 0.073582 +v 1.608182 -0.022025 0.051795 +v 1.577323 0.101767 0.051795 +v 1.430086 -0.082794 -0.069977 +v 1.310526 -0.082794 -0.069977 +v 1.577323 0.101767 -0.048191 +v 1.608182 -0.022025 -0.048191 +v 1.144858 -0.044123 -0.050301 +v 1.139921 0.101767 -0.050301 +v -1.606489 0.994589 0.070837 +v -1.606489 1.084445 0.070837 +v -1.606489 1.084277 -0.070837 +v -1.606489 0.994589 -0.070837 +v -0.511384 1.084480 -0.070837 +v -0.514357 1.052983 -0.070837 +v -0.549767 1.006668 -0.070837 +v -0.549767 0.994589 -0.070837 +v 1.313063 1.160981 0.058974 +v 1.498769 1.160981 0.058974 +v 1.498532 1.230366 0.031927 +v 1.312826 1.230366 0.031927 +v 1.225298 0.994589 0.070837 +v 1.225298 1.084445 0.070837 +v 0.962233 1.084445 0.070837 +v 0.964610 1.052983 0.070837 +v 1.000021 1.006668 0.070837 +v 1.000021 0.994589 0.070837 +v -0.197543 0.994589 -0.070837 +v 0.049014 0.994589 -0.070837 +v 0.049014 0.994589 0.070837 +v -0.197543 0.994589 0.070837 +v 0.401239 0.994589 -0.070837 +v 0.647796 0.994589 -0.070837 +v 0.647796 0.994589 0.070837 +v 0.401239 0.994589 0.070837 +v 1.000021 0.994589 -0.070837 +v 1.225298 0.994589 -0.070837 +v -0.549767 0.994589 0.070837 +v 1.225298 1.143051 -0.043128 +v -1.531817 1.143051 -0.043128 +v -1.531817 1.143051 0.043128 +v 1.225298 1.143051 0.043128 +v 1.313063 0.996053 0.070837 +v 1.498769 0.996053 0.070837 +v 1.313063 1.160981 -0.058974 +v 1.313063 0.996053 -0.070837 +v 1.225298 1.084802 -0.070837 +v 1.269521 1.219445 0.031927 +v 1.498769 0.996053 -0.070837 +v 1.498769 1.160981 -0.058974 +v 1.312826 1.230366 -0.031927 +v 1.498532 1.230366 -0.031927 +v 1.575087 0.954078 -0.070837 +v 1.575087 1.119006 -0.070837 +v 1.575087 1.119006 0.070837 +v 1.575087 0.954078 0.070837 +v 1.269521 1.219445 -0.031927 +v 1.554546 1.188392 0.031927 +v 1.554546 1.188392 -0.031927 +v -0.514597 1.084445 0.070837 +v -0.234129 1.084445 0.070837 +v 0.083877 1.084445 0.070837 +v 0.364860 1.084445 0.070837 +v 0.682044 1.084445 0.070837 +v 0.964998 1.084754 -0.070837 +v 0.683980 1.084702 -0.070837 +v 0.366670 1.084643 -0.070837 +v 0.084942 1.084590 -0.070837 +v -0.230760 1.084532 -0.070837 +v -0.232953 1.052983 -0.070837 +v -0.232953 1.052983 0.070837 +v -0.514357 1.052983 0.070837 +v -0.197543 1.006668 0.070837 +v -0.197543 1.006668 -0.070837 +v -0.549767 1.006668 0.070837 +v 0.084425 1.052983 -0.070837 +v 0.365828 1.052983 -0.070837 +v 0.365828 1.052983 0.070837 +v 0.084425 1.052983 0.070837 +v 0.401239 1.006668 0.070837 +v 0.401239 1.006668 -0.070837 +v 0.049014 1.006668 -0.070837 +v 0.049014 1.006668 0.070837 +v 0.683207 1.052983 -0.070837 +v 0.964610 1.052983 -0.070837 +v 0.683207 1.052983 0.070837 +v 1.000021 1.006668 -0.070837 +v 0.647796 1.006668 -0.070837 +v 0.647796 1.006668 0.070837 +v 1.103664 0.525584 -0.500000 +v 1.292985 0.525584 -0.500000 +v 1.292985 0.172030 -0.353553 +v 1.103664 0.172030 -0.353553 +v 1.103664 0.525584 0.500000 +v 1.292985 0.525584 0.500000 +v 1.292985 0.879137 0.353553 +v 1.103664 0.879137 0.353553 +v 1.292985 1.025584 0.000000 +v 1.103664 1.025584 0.000000 +v 1.503651 1.012795 0.000000 +v 1.503651 0.870094 -0.344510 +v 1.509822 0.895986 -0.370402 +v 1.509822 1.049411 0.000000 +v 1.080568 0.851567 0.325983 +v 1.080568 0.525584 0.461010 +v 1.292985 0.879137 -0.353553 +v 1.286814 0.905708 -0.380125 +v 1.286814 0.525584 -0.537577 +v 1.286814 0.525584 0.537577 +v 1.286814 0.905708 0.380125 +v 1.503651 0.038372 0.000000 +v 1.503651 0.181073 0.344510 +v 1.509822 0.155181 0.370402 +v 1.509822 0.001756 0.000000 +v 1.503651 0.870094 0.344510 +v 1.509822 0.895986 0.370402 +v 1.503651 0.525584 0.487211 +v 1.669294 0.525584 0.401911 +v 1.669294 0.809777 0.284194 +v 1.503651 0.181073 -0.344510 +v 1.503651 0.525584 -0.487211 +v 1.669294 0.525584 -0.401911 +v 1.669294 0.241390 -0.284194 +v 1.669294 0.809777 -0.284194 +v 1.669294 0.927494 0.000000 +v 1.669294 0.241390 0.284194 +v -0.603601 0.525584 -0.500000 +v 1.044523 0.525584 -0.500000 +v 1.044523 0.172030 -0.353553 +v -0.603601 0.172030 -0.353553 +v -0.603601 0.025584 0.000000 +v 1.044523 0.025584 0.000000 +v 1.044523 0.172030 0.353553 +v -0.603601 0.172030 0.353553 +v 0.951045 0.197436 0.364077 +v -0.460212 0.197436 0.364077 +v 1.044523 0.879137 0.353553 +v 0.899442 0.953734 0.173461 +v 0.899442 0.879137 0.353553 +v 1.044523 0.525584 0.500000 +v 1.068921 0.199748 0.325836 +v 1.068921 0.525584 0.460801 +v 1.044523 0.879137 -0.353553 +v 0.899442 0.735289 -0.413137 +v 0.899442 0.879137 -0.353553 +v 1.068921 0.986385 0.000000 +v 1.068921 0.851420 -0.325836 +v 1.044523 1.025584 0.000000 +v 0.985768 0.843292 0.316901 +v 0.899442 0.843292 0.316901 +v 0.899442 0.918248 0.161081 +v 1.068921 0.525584 -0.460801 +v 1.068921 0.199748 -0.325836 +v 1.068921 0.851420 0.325836 +v 1.080568 0.851567 -0.325983 +v 1.080568 0.525584 -0.461010 +v 1.080568 0.199600 -0.325983 +v 1.080568 0.064574 0.000000 +v 1.080568 0.199600 0.325983 +v 1.080568 0.986594 0.000000 +v 1.103664 0.172030 0.353553 +v 1.068921 0.064782 0.000000 +v -0.603601 1.025584 0.000000 +v 0.810528 0.997935 -0.101577 +v -0.388078 0.997935 -0.101577 +v 0.810528 0.952228 0.101577 +v 0.969099 0.952228 0.101577 +v 0.899442 0.719760 0.368080 +v 0.810528 0.997935 0.101577 +v -0.388078 0.997935 0.101577 +v 0.810528 0.655494 -0.446189 +v 1.286814 1.063161 0.000000 +v 1.320923 0.951339 0.425755 +v 1.320923 1.127692 0.000000 +v 1.286814 0.145459 -0.380125 +v 1.320923 0.525584 -0.602109 +v 1.320923 0.099829 -0.425755 +v 1.509822 0.525584 -0.523828 +v 1.475712 0.525584 -0.586708 +v 1.475712 0.940449 -0.414865 +v 1.286814 -0.011994 -0.000000 +v 1.320923 -0.076525 -0.000000 +v 1.509822 0.525584 0.523828 +v 1.475712 0.940449 0.414865 +v 1.475712 0.525584 0.586708 +v 1.509822 0.155181 -0.370402 +v 1.320923 0.525584 0.602109 +v 1.320923 0.951339 -0.425755 +v 1.475712 0.110718 -0.414866 +v 1.475712 1.112292 0.000000 +v 1.475712 0.110718 0.414866 +v 1.669294 0.271118 -0.254466 +v 1.669294 0.525584 -0.359869 +v 1.423236 0.525584 -0.300328 +v 1.423236 0.313220 -0.212364 +v 1.669294 0.780049 -0.254466 +v 1.669294 0.885452 0.000000 +v 1.669294 0.525584 0.359869 +v 1.669294 0.780049 0.254466 +v 1.669294 0.271118 0.254466 +v 1.423236 0.737947 -0.212364 +v 1.423236 0.825911 0.000000 +v 1.657500 0.838523 0.000000 +v 1.657500 0.746865 -0.221281 +v 1.423236 0.525584 0.300328 +v 1.423236 0.737947 0.212364 +v 1.657500 0.746865 0.221281 +v 1.657500 0.525584 0.312939 +v 1.657500 0.525584 0.252281 +v 1.657500 0.703973 0.178389 +v 1.657500 0.525584 -0.312939 +v 1.657500 0.304302 -0.221282 +v 1.423236 0.313220 0.212364 +v 1.657500 0.304302 0.221282 +v 1.657500 0.703973 -0.178389 +v 1.657500 0.525584 -0.252281 +v 1.657500 0.347194 -0.178389 +v 1.657500 0.347194 0.178389 +v 1.432520 0.525584 -0.169385 +v 1.432520 0.645357 -0.119773 +v 1.651829 0.645357 -0.119773 +v 1.651829 0.525584 -0.169385 +v 1.657500 0.777864 0.000000 +v 1.432520 0.645357 0.119773 +v 1.432520 0.694968 0.000000 +v 1.432520 0.405810 -0.119773 +v 1.432520 0.405810 0.119773 +v 1.432520 0.525584 0.169385 +v 1.657500 0.273303 0.000000 +v 1.432520 0.356199 0.000000 +v 1.651829 0.431184 0.000000 +v 1.651829 0.356199 0.000000 +v 1.651829 0.405810 -0.119773 +v 1.651829 0.525394 -0.094211 +v 1.651829 0.458777 -0.066617 +v 1.651829 0.405810 0.119773 +v 1.651829 0.525584 0.169385 +v 1.651829 0.645357 0.119773 +v 1.127542 0.525394 -0.094211 +v 1.127542 0.458777 -0.066617 +v 1.127542 0.431184 0.000000 +v 1.127542 0.525394 0.094211 +v 1.127542 0.592011 0.066617 +v 1.651829 0.592011 0.066617 +v 1.651829 0.525394 0.094211 +v 1.651829 0.619605 0.000000 +v 1.127542 0.619605 0.000000 +v 1.127542 0.592011 -0.066617 +v 1.651829 0.592011 -0.066617 +v 1.127542 0.458777 0.066617 +v -0.476991 0.837264 -0.291860 +v -0.476991 0.714942 -0.357372 +v -0.476991 0.735289 -0.413137 +v -0.476991 0.879137 -0.353553 +v -0.476991 0.879137 0.353553 +v -0.476991 0.953734 0.173461 +v -0.603601 0.879137 0.353553 +v 0.899442 0.735289 0.413137 +v -0.603601 0.879137 -0.353553 +v -0.724548 0.869896 -0.337068 +v -0.476991 0.953734 -0.173461 +v -0.476991 0.735289 0.413137 +v -0.388078 0.655494 0.446189 +v -0.388078 0.655494 -0.446189 +v 0.810528 0.655494 0.446189 +v -0.603601 0.525584 0.500000 +v 1.651829 0.458777 0.066617 +v -0.388078 0.633076 0.392654 +v -0.476991 0.714942 0.357372 +v -0.476991 0.837264 0.291860 +v -0.388078 0.944133 0.101577 +v -0.388078 0.944133 -0.101577 +v 0.810528 0.952228 -0.101577 +v 1.657500 0.212644 0.000000 +v 1.651829 0.694968 0.000000 +v -0.476991 0.926475 0.173461 +v 0.899442 0.843292 -0.316901 +v 0.899442 0.918248 -0.161081 +v 0.899442 0.953734 -0.173461 +v 0.899442 0.719760 -0.368080 +v 0.810528 0.655494 -0.378684 +v 0.810528 0.655494 0.378684 +v -0.388078 0.633076 -0.392654 +v 1.669294 0.123673 0.000000 +v 1.669294 0.165715 0.000000 +v 0.985768 0.843292 -0.316901 +v 0.969099 0.952228 -0.101577 +v 1.475712 -0.061125 -0.000000 +v 1.423236 0.225256 0.000000 +v 0.984259 0.528318 -0.436781 +v 0.984259 0.228435 -0.325032 +v 0.984259 0.095638 0.005025 +v 0.984259 0.228435 0.325032 +v 0.984259 0.528318 0.436781 +v 1.103664 0.025584 0.000000 +v -0.534084 0.903408 0.173461 +v -0.534084 0.903408 -0.173461 +v -0.476991 0.926475 -0.173461 +v -0.548068 0.837264 0.291860 +v -0.548068 0.837264 -0.291860 +v 1.292985 0.025584 0.000000 +v -0.550334 0.529772 0.433593 +v -0.550334 0.236472 0.339820 +v -0.550334 0.062663 0.005342 +v -0.550334 0.236472 -0.339820 +v -0.550334 0.529772 -0.433593 +v -0.388078 0.540720 0.422003 +v -0.388078 0.540720 -0.422003 +v 0.810528 0.526819 -0.419828 +v 0.810528 0.526819 0.419828 +v -0.388078 0.088709 0.007100 +v -0.388078 0.229035 -0.323350 +v -0.388078 0.229035 0.323350 +v 0.810528 0.240010 -0.300109 +v 0.810528 0.100279 0.006216 +v 0.810528 0.240010 0.300109 +v -0.460212 0.500178 0.489476 +v 0.678212 0.092276 -0.724878 +v 0.648869 0.138277 -0.701704 +v 0.951045 0.500178 0.489476 +v 0.646934 0.318302 -0.775205 +v 0.641987 0.458293 -0.590595 +v 0.671568 0.425284 -0.596467 +v 0.673140 0.318430 -0.775219 +v 0.003785 0.107850 -0.712878 +v 0.003776 0.311542 -0.796039 +v 0.286340 0.110829 -0.713675 +v 0.335441 0.111139 -0.713708 +v 0.137117 0.111516 -0.714176 +v 0.181234 0.111785 -0.714205 +v 0.643209 0.321800 -0.818636 +v 0.285150 0.311362 -0.795548 +v 0.335438 0.311680 -0.795582 +v 0.346589 0.320346 -0.818478 +v 0.273733 0.319982 -0.818438 +v 0.137105 0.309206 -0.794886 +v 0.180025 0.309468 -0.794915 +v 0.188876 0.319558 -0.818392 +v 0.127999 0.319254 -0.818359 +v 0.051715 0.318872 -0.818317 +v 0.044163 0.311789 -0.796066 +v 0.045414 0.108104 -0.712906 +v 0.949896 0.093608 -0.725023 +v 0.645678 0.092117 -0.724860 +v 0.346592 0.090651 -0.724701 +v 0.275455 0.090295 -0.724662 +v 0.190590 0.089871 -0.724616 +v 0.128016 0.089558 -0.724582 +v 0.053442 0.089185 -0.724541 +v -0.004002 0.088898 -0.724510 +v -0.004015 0.318594 -0.818287 +v -0.060217 0.318313 -0.818256 +v -0.059018 0.088623 -0.724480 +v 0.678557 0.155552 -0.465195 +v 0.649846 0.155552 -0.465195 +v 0.951045 0.155552 -0.465195 +v 0.674638 0.458293 -0.590595 +v 0.676644 0.321964 -0.818654 +v 0.948697 0.323297 -0.818799 +v 0.951045 0.458293 -0.590595 +v 0.641563 0.500178 -0.489476 +v 0.674042 0.500178 -0.489476 +v 0.951045 0.500178 -0.489476 +v -0.460212 0.155552 -0.465195 +v -0.460212 0.458293 -0.590595 +v -0.460212 0.500178 -0.489476 +v 0.951045 0.197436 -0.364077 +v -0.460212 0.197436 -0.364077 +v 1.292985 0.172030 0.353553 +v 1.103664 0.879137 -0.353553 +v -0.460212 0.197436 -0.364077 +v 0.951045 0.197436 -0.364077 +v 1.286814 0.145459 0.380125 +v 1.320923 0.099829 0.425755 +v -0.460212 0.500178 -0.489476 +v 0.951045 0.500178 -0.489476 +v -0.724548 0.532825 -0.476687 +v -0.724548 0.195753 -0.337068 +v -0.724548 0.056134 0.000004 +v -0.724548 0.195753 0.337075 +v -0.724548 0.532825 0.476694 +v -0.724548 0.869896 0.337075 +v -0.724548 1.009515 0.000004 +v 0.951045 0.197436 0.364077 +v -0.460212 0.197436 0.364077 +v -0.460212 0.500178 0.489476 +v -0.460212 0.155552 0.465195 +v -0.460212 0.458293 0.590595 +v 0.641563 0.500178 0.489476 +v 0.674042 0.500178 0.489476 +v 0.951045 0.500178 0.489476 +v 0.951045 0.458293 0.590595 +v 0.674638 0.458293 0.590595 +v 0.676644 0.321964 0.818654 +v 0.948697 0.323297 0.818799 +v 0.951045 0.155552 0.465195 +v 0.678557 0.155552 0.465195 +v 0.649846 0.155552 0.465195 +v -0.059018 0.088623 0.724480 +v -0.004002 0.088898 0.724510 +v -0.004015 0.318594 0.818287 +v -0.060217 0.318313 0.818256 +v 0.645678 0.092117 0.724860 +v 0.346592 0.090651 0.724701 +v 0.275455 0.090295 0.724662 +v 0.190590 0.089871 0.724616 +v 0.128016 0.089558 0.724582 +v 0.053442 0.089185 0.724541 +v 0.949896 0.093608 0.725023 +v 0.051715 0.318872 0.818317 +v 0.044163 0.311789 0.796066 +v 0.045414 0.108104 0.712906 +v 0.127999 0.319254 0.818359 +v 0.188876 0.319558 0.818392 +v 0.137105 0.309206 0.794886 +v 0.180025 0.309468 0.794915 +v 0.273733 0.319982 0.818438 +v 0.346589 0.320346 0.818478 +v 0.285150 0.311362 0.795548 +v 0.335438 0.311680 0.795582 +v 0.643209 0.321800 0.818636 +v 0.137117 0.111516 0.714176 +v 0.181234 0.111785 0.714205 +v 0.286340 0.110829 0.713675 +v 0.335441 0.111139 0.713708 +v 0.003776 0.311542 0.796039 +v 0.003785 0.107850 0.712878 +v 0.671568 0.425284 0.596467 +v 0.673140 0.318430 0.775219 +v 0.641987 0.458293 0.590595 +v 0.648869 0.138277 0.701704 +v 0.646934 0.318302 0.775205 +v 0.678212 0.092276 0.724878 +v 0.674369 0.138402 0.701718 +v 0.645976 0.425284 0.596467 +v 0.645644 0.458113 0.517211 +v 0.671101 0.458113 0.517211 +v 0.652136 0.187997 0.498180 +v 0.674639 0.187997 0.498180 +v 0.674369 0.138402 -0.701718 +v 0.645644 0.458113 -0.517211 +v 0.645976 0.425284 -0.596467 +v 0.671101 0.458113 -0.517211 +v 0.674639 0.187997 -0.498180 +v 0.652136 0.187997 -0.498180 +v -0.436383 0.265019 0.509254 +v 1.004741 0.265019 0.509254 +v 1.004741 0.179718 0.544586 +v -0.436383 0.179718 0.544586 +v 1.004741 0.144386 0.629887 +v -0.436383 0.144385 0.629887 +v 1.004741 0.179718 0.715187 +v -0.436383 0.179718 0.715187 +v 1.004741 0.265019 0.750520 +v -0.436383 0.265019 0.750520 +v 1.004741 0.350319 0.715187 +v -0.436383 0.350319 0.715187 +v 1.004741 0.385652 0.629887 +v -0.436383 0.385652 0.629887 +v 1.088061 0.265019 0.750520 +v 1.088061 0.350319 0.715187 +v 1.004741 0.350319 0.544586 +v -0.436383 0.350319 0.544586 +v -0.513171 0.364069 0.629887 +v -0.513171 0.335058 0.699926 +v -0.513171 0.265019 0.530836 +v -0.513171 0.194979 0.559848 +v -0.513171 0.165968 0.629887 +v -0.513171 0.194979 0.699926 +v -0.513171 0.265019 0.728937 +v -0.513171 0.335058 0.559848 +v 1.088061 0.265019 0.509254 +v 1.088061 0.350319 0.544586 +v 1.100404 0.336110 0.558795 +v 1.100404 0.265019 0.529348 +v 1.088061 0.179718 0.544586 +v 1.088061 0.144386 0.629887 +v 1.088061 0.179718 0.715187 +v 1.088061 0.385652 0.629887 +v 1.100404 0.336110 0.700979 +v 1.100404 0.365558 0.629887 +v 1.100404 0.193927 0.700979 +v 1.100404 0.265019 0.730426 +v 1.100404 0.193927 0.558795 +v 1.100404 0.164480 0.629887 +v 1.127149 0.181939 0.629887 +v 1.127149 0.206273 0.688633 +v 1.127149 0.206273 0.571141 +v 1.127149 0.265019 0.546807 +v 1.127149 0.323765 0.571141 +v 1.127149 0.348098 0.629887 +v 1.127149 0.323765 0.688633 +v 1.127149 0.265019 0.712966 +v -0.436384 0.265019 -0.509254 +v -0.436384 0.179718 -0.544586 +v 1.004741 0.179718 -0.544586 +v 1.004741 0.265019 -0.509254 +v -0.436384 0.144385 -0.629887 +v 1.004741 0.144386 -0.629887 +v -0.436384 0.179718 -0.715187 +v 1.004741 0.179718 -0.715187 +v -0.436384 0.265019 -0.750520 +v 1.004741 0.265019 -0.750520 +v -0.436384 0.350319 -0.715187 +v 1.004741 0.350319 -0.715187 +v -0.436384 0.385652 -0.629887 +v 1.004741 0.385652 -0.629887 +v 1.088061 0.350319 -0.715187 +v 1.088061 0.265019 -0.750520 +v -0.436384 0.350319 -0.544586 +v 1.004741 0.350319 -0.544586 +v -0.513171 0.335058 -0.699926 +v -0.513171 0.364069 -0.629887 +v -0.513171 0.265019 -0.530836 +v -0.513171 0.335058 -0.559848 +v -0.513171 0.265019 -0.728937 +v -0.513171 0.194979 -0.699926 +v -0.513171 0.165968 -0.629887 +v -0.513171 0.194979 -0.559848 +v 1.088061 0.265019 -0.509254 +v 1.100404 0.265019 -0.529348 +v 1.100404 0.336111 -0.558795 +v 1.088061 0.350319 -0.544586 +v 1.088061 0.179718 -0.544586 +v 1.088061 0.179718 -0.715187 +v 1.088061 0.144386 -0.629887 +v 1.088061 0.385652 -0.629887 +v 1.100404 0.365558 -0.629887 +v 1.100404 0.336110 -0.700979 +v 1.100404 0.265019 -0.730426 +v 1.100404 0.193927 -0.700979 +v 1.100404 0.164480 -0.629887 +v 1.100404 0.193927 -0.558795 +v 1.127149 0.206273 -0.688633 +v 1.127149 0.181939 -0.629887 +v 1.127149 0.206273 -0.571141 +v 1.127149 0.265019 -0.712966 +v 1.127149 0.323765 -0.688633 +v 1.127149 0.348098 -0.629887 +v 1.127149 0.323765 -0.571141 +v 1.127149 0.265019 -0.546807 +v -2.120991 0.943304 0.035550 +v -2.158085 0.862576 0.035550 +v -2.120991 0.943304 -0.035550 +v -2.158085 0.862576 -0.035550 +v -2.003111 1.008603 0.035550 +v -2.003111 1.008603 -0.035550 +v -1.938336 0.967051 0.035550 +v -1.938336 0.967051 -0.035550 +v -2.111712 0.819430 0.035550 +v -2.111712 0.819430 -0.035550 +v -2.120991 0.346120 -0.035550 +v -2.158085 0.426848 -0.035550 +v -2.120991 0.346120 0.035550 +v -2.158085 0.426848 0.035550 +v -2.003111 0.280821 -0.035550 +v -2.003111 0.280821 0.035550 +v -1.938336 0.322373 -0.035550 +v -1.938336 0.322373 0.035550 +v -2.111712 0.469994 -0.035550 +v -2.111712 0.469994 0.035550 +v -2.120991 0.609162 0.298592 +v -2.158085 0.609162 0.217864 +v -2.120991 0.680262 0.298592 +v -2.158085 0.680262 0.217864 +v -2.003111 0.609162 0.363891 +v -2.003111 0.680262 0.363891 +v -1.938336 0.609162 0.322339 +v -1.938336 0.680262 0.322339 +v -2.111712 0.609162 0.174718 +v -2.111712 0.680262 0.174718 +v -2.120991 0.680262 -0.298592 +v -2.158085 0.680262 -0.217864 +v -2.120991 0.609162 -0.298592 +v -2.158085 0.609162 -0.217864 +v -2.003111 0.680262 -0.363891 +v -2.003111 0.609162 -0.363891 +v -1.938336 0.680262 -0.322339 +v -1.938336 0.609162 -0.322339 +v -2.111712 0.680262 -0.174718 +v -2.111712 0.609162 -0.174718 +v -2.120991 0.830711 0.236274 +v -2.158085 0.773628 0.179191 +v -2.120991 0.880986 0.185999 +v -2.158085 0.823903 0.128916 +v -2.003111 0.876884 0.282447 +v -2.003111 0.927159 0.232172 +v -1.938336 0.847503 0.253066 +v -1.938336 0.897778 0.202791 +v -2.111712 0.743119 0.148682 +v -2.111712 0.793394 0.098407 +v -2.120991 0.458713 -0.236274 +v -2.158085 0.515796 -0.179191 +v -2.120991 0.408438 -0.185999 +v -2.158085 0.465521 -0.128916 +v -2.003111 0.412540 -0.282447 +v -2.003111 0.362265 -0.232172 +v -1.938336 0.441921 -0.253066 +v -1.938336 0.391646 -0.202791 +v -2.111712 0.546305 -0.148682 +v -2.111712 0.496030 -0.098407 +v -2.120991 0.408438 0.185999 +v -2.158085 0.465521 0.128916 +v -2.120991 0.458713 0.236274 +v -2.158085 0.515796 0.179191 +v -2.003111 0.362265 0.232172 +v -2.003111 0.412540 0.282447 +v -1.938336 0.391646 0.202791 +v -1.938336 0.441921 0.253066 +v -2.111712 0.496030 0.098407 +v -2.111712 0.546305 0.148682 +v -2.120991 0.880986 -0.185999 +v -2.158085 0.823903 -0.128916 +v -2.120991 0.830711 -0.236274 +v -2.158085 0.773628 -0.179191 +v -2.003111 0.927159 -0.232172 +v -2.003111 0.876884 -0.282447 +v -1.938336 0.897778 -0.202791 +v -1.938336 0.847503 -0.253066 +v -2.111712 0.793394 -0.098407 +v -2.111712 0.743119 -0.148682 +vt 0.500000 0.265625 +vt 0.531250 0.226562 +vt 0.531250 0.265625 +vt 0.500000 0.226562 +vt 0.531250 0.187500 +vt 0.500000 0.500000 +vt 0.531250 0.460938 +vt 0.531250 0.500000 +vt 0.500000 0.460938 +vt 0.531250 0.421875 +vt 0.500000 0.421875 +vt 0.531250 0.382812 +vt 0.500000 0.382812 +vt 0.531250 0.343750 +vt 0.822057 0.744753 +vt 0.801034 0.723730 +vt 0.872812 0.693998 +vt 0.500000 0.343750 +vt 0.531250 0.304688 +vt 0.500000 0.304688 +vt 0.944804 0.723730 +vt 0.894049 0.744753 +vt 0.873025 0.693998 +vt 0.500000 0.265625 +vt 0.531250 0.226562 +vt 0.531250 0.265625 +vt 0.500000 0.226562 +vt 0.531250 0.187500 +vt 0.500000 0.500000 +vt 0.531250 0.460938 +vt 0.531250 0.500000 +vt 0.500000 0.460938 +vt 0.531250 0.421875 +vt 0.500000 0.421875 +vt 0.531250 0.382812 +vt 0.500000 0.382812 +vt 0.531250 0.343750 +vt 0.750065 0.816745 +vt 0.729042 0.795722 +vt 0.800820 0.765990 +vt 0.500000 0.343750 +vt 0.531250 0.304688 +vt 0.500000 0.304688 +vt 0.872812 0.867713 +vt 0.822057 0.888737 +vt 0.801034 0.837982 +vt 0.500000 0.265625 +vt 0.531250 0.226562 +vt 0.531250 0.265625 +vt 0.500000 0.226562 +vt 0.531250 0.187500 +vt 0.500000 0.500000 +vt 0.531250 0.460938 +vt 0.531250 0.500000 +vt 0.500000 0.460938 +vt 0.531250 0.421875 +vt 0.500000 0.421875 +vt 0.531250 0.382812 +vt 0.500000 0.382812 +vt 0.531250 0.343750 +vt 0.678074 0.744753 +vt 0.657050 0.723730 +vt 0.728829 0.693998 +vt 0.500000 0.343750 +vt 0.531250 0.304688 +vt 0.500000 0.304688 +vt 0.728829 0.939705 +vt 0.678074 0.960729 +vt 0.657050 0.909974 +vt 0.500000 0.265625 +vt 0.531250 0.226562 +vt 0.531250 0.265625 +vt 0.500000 0.226562 +vt 0.531250 0.187500 +vt 0.500000 0.500000 +vt 0.531250 0.460938 +vt 0.531250 0.500000 +vt 0.500000 0.460938 +vt 0.531250 0.421875 +vt 0.500000 0.421875 +vt 0.531250 0.382812 +vt 0.500000 0.382812 +vt 0.531250 0.343750 +vt 0.750065 0.744753 +vt 0.729042 0.723730 +vt 0.800820 0.693998 +vt 0.500000 0.343750 +vt 0.531250 0.304688 +vt 0.500000 0.304688 +vt 0.728829 0.867713 +vt 0.678074 0.888737 +vt 0.657050 0.837982 +vt 0.500000 0.265625 +vt 0.531250 0.226562 +vt 0.531250 0.265625 +vt 0.500000 0.226562 +vt 0.531250 0.187500 +vt 0.500000 0.500000 +vt 0.531250 0.460938 +vt 0.531250 0.500000 +vt 0.500000 0.460938 +vt 0.531250 0.421875 +vt 0.500000 0.421875 +vt 0.531250 0.382812 +vt 0.500000 0.382812 +vt 0.531250 0.343750 +vt 0.678074 0.816745 +vt 0.657050 0.795722 +vt 0.728829 0.765990 +vt 0.500000 0.343750 +vt 0.531250 0.304688 +vt 0.500000 0.304688 +vt 0.872812 0.795722 +vt 0.822057 0.816745 +vt 0.801034 0.765990 +vt 0.792241 0.765292 +vt 0.806786 0.772343 +vt 0.792185 0.772343 +vt 0.806674 0.779394 +vt 0.792073 0.779394 +vt 0.806618 0.786445 +vt 0.792017 0.786445 +vt 0.792073 0.793497 +vt 0.710865 0.890954 +vt 0.707339 0.884848 +vt 0.717917 0.878741 +vt 0.806674 0.793497 +vt 0.792185 0.800547 +vt 0.806786 0.800547 +vt 0.792241 0.807599 +vt 0.792241 0.807743 +vt 0.806786 0.814794 +vt 0.792185 0.814794 +vt 0.806674 0.821845 +vt 0.792073 0.821845 +vt 0.806618 0.828896 +vt 0.792017 0.828896 +vt 0.792073 0.835947 +vt 0.602536 0.912132 +vt 0.596430 0.908607 +vt 0.602536 0.898029 +vt 0.806674 0.835947 +vt 0.792185 0.842998 +vt 0.806786 0.842998 +vt 0.792241 0.850049 +vt 0.797635 0.690671 +vt 0.812180 0.697723 +vt 0.797579 0.697723 +vt 0.812068 0.704773 +vt 0.797468 0.704773 +vt 0.812012 0.711825 +vt 0.797412 0.711825 +vt 0.797468 0.718876 +vt 0.713446 0.905202 +vt 0.707339 0.901676 +vt 0.713446 0.891099 +vt 0.812068 0.718876 +vt 0.797579 0.725927 +vt 0.812180 0.725927 +vt 0.797635 0.732978 +vt 0.725698 0.877553 +vt 0.737025 0.908837 +vt 0.725698 0.910410 +vt 0.739301 0.911771 +vt 0.792924 0.923206 +vt 0.739301 0.923206 +vt 0.795200 0.908837 +vt 0.806526 0.877554 +vt 0.806526 0.910410 +vt 0.792924 0.873046 +vt 0.739301 0.861611 +vt 0.792924 0.861611 +vt 0.737025 0.875980 +vt 0.742886 0.906641 +vt 0.789339 0.878177 +vt 0.789339 0.906641 +vt 0.742886 0.878177 +vt 0.739301 0.873046 +vt 0.792924 0.911771 +vt 0.795200 0.875980 +vt 0.692595 0.878597 +vt 0.707139 0.871545 +vt 0.707195 0.878597 +vt 0.692539 0.871545 +vt 0.707027 0.864495 +vt 0.692427 0.864495 +vt 0.706971 0.857444 +vt 0.692427 0.850392 +vt 0.692371 0.857444 +vt 0.809625 0.750895 +vt 0.809625 0.757947 +vt 0.803518 0.761472 +vt 0.692539 0.843341 +vt 0.707027 0.850392 +vt 0.692595 0.836290 +vt 0.707139 0.843341 +vt 0.677626 0.878597 +vt 0.692171 0.871545 +vt 0.692227 0.878597 +vt 0.677570 0.871545 +vt 0.692059 0.864495 +vt 0.677458 0.864495 +vt 0.692003 0.857443 +vt 0.677458 0.850392 +vt 0.677402 0.857443 +vt 0.809625 0.736648 +vt 0.809625 0.743699 +vt 0.803518 0.747225 +vt 0.677570 0.843341 +vt 0.692059 0.850392 +vt 0.677626 0.836290 +vt 0.692171 0.843341 +vt 0.707563 0.878597 +vt 0.722108 0.871545 +vt 0.722164 0.878597 +vt 0.707507 0.871545 +vt 0.721996 0.864495 +vt 0.707395 0.864495 +vt 0.721940 0.857443 +vt 0.707395 0.850392 +vt 0.707339 0.857443 +vt 0.790935 0.847539 +vt 0.790935 0.854590 +vt 0.784828 0.858116 +vt 0.707507 0.843341 +vt 0.721996 0.850392 +vt 0.707563 0.836290 +vt 0.722108 0.843341 +vt 0.596430 0.881943 +vt 0.607756 0.850659 +vt 0.607756 0.883516 +vt 0.663656 0.836290 +vt 0.610032 0.847725 +vt 0.610032 0.836290 +vt 0.677258 0.881943 +vt 0.665931 0.850659 +vt 0.677258 0.849086 +vt 0.610032 0.897885 +vt 0.663656 0.886450 +vt 0.663656 0.897885 +vt 0.613617 0.852856 +vt 0.660071 0.881319 +vt 0.660071 0.852856 +vt 0.610032 0.886450 +vt 0.663656 0.847725 +vt 0.665932 0.883516 +vt 0.815201 0.764122 +vt 0.805115 0.750247 +vt 0.815201 0.750247 +vt 0.817141 0.641039 +vt 0.870476 0.653777 +vt 0.814975 0.653777 +vt 0.609375 0.500000 +vt 0.667969 0.464844 +vt 0.667969 0.500000 +vt 0.871129 0.715795 +vt 0.815201 0.701921 +vt 0.871129 0.701921 +vt 0.871129 0.798574 +vt 0.871129 0.764122 +vt 0.854479 0.926427 +vt 0.891341 0.925198 +vt 0.888931 0.926427 +vt 0.796980 0.925198 +vt 0.836253 0.909544 +vt 0.836253 0.925198 +vt 0.799390 0.926427 +vt 0.833842 0.926427 +vt 0.796009 0.927723 +vt 0.781164 0.925198 +vt 0.837223 0.927723 +vt 0.852068 0.925198 +vt 0.851098 0.927723 +vt 0.852068 0.909544 +vt 0.837130 0.907319 +vt 0.851191 0.907319 +vt 0.796980 0.909544 +vt 0.891341 0.909544 +vt 0.634130 0.888554 +vt 0.669086 0.895466 +vt 0.634655 0.897270 +vt 0.854247 0.908557 +vt 0.889162 0.908557 +vt 0.834073 0.908557 +vt 0.781164 0.909544 +vt 0.796102 0.907319 +vt 0.682970 0.929943 +vt 0.682970 0.895466 +vt 0.683058 0.886728 +vt 0.668998 0.886728 +vt 0.620805 0.898244 +vt 0.620104 0.889541 +vt 0.586461 0.901279 +vt 0.585325 0.892614 +vt 0.785608 0.715795 +vt 0.805115 0.701921 +vt 0.805115 0.715795 +vt 0.815201 0.715795 +vt 0.815201 0.798574 +vt 0.808427 0.771594 +vt 0.808427 0.742775 +vt 0.808427 0.723268 +vt 0.804494 0.651062 +vt 0.870476 0.687966 +vt 0.814975 0.701735 +vt 0.814975 0.687966 +vt 0.866125 0.600252 +vt 0.807497 0.609109 +vt 0.667969 0.464844 +vt 0.609375 0.500000 +vt 0.609375 0.464844 +vt 0.783574 0.905836 +vt 0.820437 0.904607 +vt 0.818026 0.905836 +vt 0.836253 0.888953 +vt 0.875526 0.904607 +vt 0.836253 0.904607 +vt 0.873115 0.905836 +vt 0.838663 0.905836 +vt 0.876496 0.907133 +vt 0.891341 0.904607 +vt 0.890371 0.907133 +vt 0.835282 0.907133 +vt 0.821407 0.907133 +vt 0.820437 0.888953 +vt 0.835375 0.886728 +vt 0.875526 0.888953 +vt 0.781164 0.888953 +vt 0.781164 0.904607 +vt 0.732050 0.928117 +vt 0.767005 0.921205 +vt 0.766917 0.929943 +vt 0.818258 0.887966 +vt 0.838432 0.887966 +vt 0.876403 0.886728 +vt 0.891341 0.888953 +vt 0.780890 0.886728 +vt 0.780890 0.921205 +vt 0.780978 0.929943 +vt 0.718724 0.918427 +vt 0.718024 0.927130 +vt 0.684381 0.915392 +vt 0.683244 0.924057 +vt 0.804966 0.701735 +vt 0.785608 0.687966 +vt 0.804966 0.687966 +vt 0.808774 0.637292 +vt 0.808253 0.661193 +vt 0.871129 0.750247 +vt 0.791853 0.824225 +vt 0.783842 0.834044 +vt 0.783845 0.824223 +vt 0.791849 0.834047 +vt 0.783839 0.843866 +vt 0.791873 0.765295 +vt 0.783862 0.775114 +vt 0.783866 0.765292 +vt 0.791869 0.775116 +vt 0.783859 0.784935 +vt 0.791866 0.784938 +vt 0.783855 0.794757 +vt 0.791863 0.794760 +vt 0.783852 0.804579 +vt 0.791859 0.804582 +vt 0.783849 0.814401 +vt 0.791856 0.814404 +vt 0.778742 0.784012 +vt 0.778744 0.776033 +vt 0.677402 0.884383 +vt 0.683044 0.878741 +vt 0.691023 0.898004 +vt 0.778734 0.805499 +vt 0.778724 0.834964 +vt 0.778741 0.785855 +vt 0.778728 0.823299 +vt 0.778731 0.815320 +vt 0.778728 0.825142 +vt 0.778745 0.774191 +vt 0.778748 0.766212 +vt 0.778735 0.803656 +vt 0.778738 0.795677 +vt 0.271409 0.769029 +vt 0.265832 0.744085 +vt 0.271409 0.744085 +vt 0.265832 0.769029 +vt 0.260254 0.744085 +vt 0.260254 0.769029 +vt 0.254677 0.744085 +vt 0.254677 0.769029 +vt 0.249099 0.744085 +vt 0.249099 0.769029 +vt 0.243522 0.744085 +vt 0.243522 0.769029 +vt 0.237944 0.744085 +vt 0.261888 0.772973 +vt 0.275353 0.778551 +vt 0.237944 0.769029 +vt 0.232367 0.744085 +vt 0.232367 0.769029 +vt 0.226789 0.744085 +vt 0.275353 0.734564 +vt 0.275353 0.740142 +vt 0.261888 0.734564 +vt 0.712227 0.691554 +vt 0.724024 0.700800 +vt 0.715450 0.703178 +vt 0.507381 0.846904 +vt 0.598130 0.858967 +vt 0.507381 0.858967 +vt 0.569512 0.785553 +vt 0.590950 0.795995 +vt 0.569512 0.795995 +vt 0.598131 0.896473 +vt 0.507381 0.884411 +vt 0.598131 0.884410 +vt 0.508228 0.866382 +vt 0.678632 0.902783 +vt 0.769382 0.886888 +vt 0.769382 0.902783 +vt 0.669734 0.902783 +vt 0.652570 0.886888 +vt 0.669734 0.886888 +vt 0.712227 0.635780 +vt 0.724025 0.626533 +vt 0.717132 0.651390 +vt 0.678632 0.886888 +vt 0.732276 0.658361 +vt 0.714464 0.658361 +vt 0.760292 0.655719 +vt 0.739257 0.671614 +vt 0.739257 0.655719 +vt 0.708871 0.642447 +vt 0.734944 0.675944 +vt 0.740565 0.696214 +vt 0.734944 0.651390 +vt 0.598079 0.866382 +vt 0.508228 0.876995 +vt 0.698102 0.658361 +vt 0.714464 0.668973 +vt 0.698102 0.668973 +vt 0.732276 0.668973 +vt 0.808269 0.886888 +vt 0.717132 0.675944 +vt 0.708871 0.684886 +vt 0.713777 0.669277 +vt 0.598079 0.876995 +vt 0.591132 0.778095 +vt 0.612625 0.785553 +vt 0.590950 0.785553 +vt 0.578532 0.766460 +vt 0.578532 0.815089 +vt 0.591132 0.803454 +vt 0.578698 0.823250 +vt 0.625952 0.795995 +vt 0.612625 0.795995 +vt 0.612587 0.803625 +vt 0.621392 0.807294 +vt 0.621466 0.815543 +vt 0.594762 0.825013 +vt 0.579217 0.836399 +vt 0.652377 0.782955 +vt 0.632770 0.798594 +vt 0.632770 0.782955 +vt 0.625952 0.785554 +vt 0.601835 0.823468 +vt 0.620002 0.835136 +vt 0.612587 0.777924 +vt 0.621392 0.774255 +vt 0.739899 0.703371 +vt 0.748258 0.719266 +vt 0.739899 0.719266 +vt 0.714821 0.703371 +vt 0.723180 0.719266 +vt 0.714821 0.719266 +vt 0.748258 0.703371 +vt 0.756618 0.719266 +vt 0.706461 0.703371 +vt 0.706461 0.719266 +vt 0.698102 0.703371 +vt 0.698102 0.719266 +vt 0.731539 0.703371 +vt 0.731539 0.719266 +vt 0.723180 0.703371 +vt 0.756618 0.703371 +vt 0.764977 0.719266 +vt 0.601585 0.811408 +vt 0.588652 0.817689 +vt 0.609226 0.824945 +vt 0.609027 0.809728 +vt 0.615013 0.817143 +vt 0.601835 0.758080 +vt 0.579217 0.745150 +vt 0.620002 0.746413 +vt 0.621466 0.766005 +vt 0.609226 0.756604 +vt 0.609027 0.771821 +vt 0.615013 0.764406 +vt 0.594762 0.756536 +vt 0.578698 0.758299 +vt 0.588652 0.763859 +vt 0.594100 0.771488 +vt 0.601585 0.770141 +vt 0.167826 0.637345 +vt 0.114215 0.658256 +vt 0.114130 0.637792 +vt 0.232537 0.630625 +vt 0.263917 0.575325 +vt 0.263918 0.630625 +vt 0.179850 0.630269 +vt 0.223962 0.575325 +vt 0.223962 0.630625 +vt 0.167952 0.568476 +vt 0.114311 0.547378 +vt 0.168353 0.538018 +vt 0.167800 0.630285 +vt 0.113693 0.574921 +vt 0.167898 0.575574 +vt 0.272493 0.630625 +vt 0.317290 0.575325 +vt 0.317290 0.630625 +vt 0.179863 0.637263 +vt 0.223367 0.666831 +vt 0.180317 0.668668 +vt 0.223276 0.568399 +vt 0.180494 0.537066 +vt 0.224230 0.538894 +vt 0.094978 0.574829 +vt 0.081998 0.630460 +vt 0.082831 0.574648 +vt 0.168405 0.530773 +vt 0.180051 0.568560 +vt 0.168173 0.674993 +vt 0.180473 0.675838 +vt 0.225140 0.532000 +vt 0.231072 0.538436 +vt 0.230294 0.569140 +vt 0.224302 0.673691 +vt 0.230365 0.667318 +vt 0.230075 0.636801 +vt 0.223301 0.637495 +vt 0.102583 0.545262 +vt 0.103033 0.554042 +vt 0.114158 0.567779 +vt 0.104111 0.573586 +vt 0.102879 0.566036 +vt 0.102508 0.660379 +vt 0.113614 0.665427 +vt 0.101567 0.632630 +vt 0.102656 0.639463 +vt 0.098126 0.554394 +vt 0.098359 0.566372 +vt 0.098030 0.651303 +vt 0.102915 0.651612 +vt 0.098072 0.639307 +vt 0.329373 0.630625 +vt 0.180014 0.575685 +vt 0.168140 0.667731 +vt 0.272492 0.575325 +vt 0.180648 0.529997 +vt 0.060889 0.574321 +vt 0.072008 0.630311 +vt 0.060057 0.630133 +vt 0.113750 0.630739 +vt 0.104327 0.574930 +vt 0.113715 0.540194 +vt 0.072841 0.574499 +vt 0.101552 0.630752 +vt 0.005298 0.573491 +vt 0.004465 0.629303 +vt 0.423560 0.873494 +vt 0.420121 0.888745 +vt 0.420121 0.873494 +vt 0.341393 0.820409 +vt 0.338027 0.873463 +vt 0.337954 0.820414 +vt 0.405973 0.888777 +vt 0.402533 0.904028 +vt 0.402534 0.888777 +vt 0.356717 0.873437 +vt 0.360083 0.820384 +vt 0.360156 0.873433 +vt 0.363688 0.823634 +vt 0.363743 0.863650 +vt 0.341466 0.873458 +vt 0.375447 0.887810 +vt 0.415358 0.874430 +vt 0.415358 0.887810 +vt 0.334422 0.870213 +vt 0.334413 0.863585 +vt 0.397771 0.889712 +vt 0.676091 0.758842 +vt 0.670636 0.756488 +vt 0.676082 0.752214 +vt 0.757146 0.797623 +vt 0.738482 0.784243 +vt 0.757146 0.784243 +vt 0.723118 0.758182 +vt 0.740817 0.758754 +vt 0.723127 0.764704 +vt 0.734822 0.782341 +vt 0.716053 0.769156 +vt 0.734717 0.768961 +vt 0.693788 0.758116 +vt 0.709131 0.769177 +vt 0.676682 0.782565 +vt 0.676576 0.769186 +vt 0.738482 0.797622 +vt 0.731559 0.784242 +vt 0.709236 0.782556 +vt 0.746266 0.756491 +vt 0.746275 0.763013 +vt 0.716854 0.797621 +vt 0.723377 0.784242 +vt 0.723377 0.797622 +vt 0.753151 0.758579 +vt 0.663756 0.758701 +vt 0.663747 0.752073 +vt 0.731559 0.797622 +vt 0.684647 0.798126 +vt 0.670948 0.784944 +vt 0.684542 0.784746 +vt 0.669829 0.723944 +vt 0.753143 0.752057 +vt 0.746983 0.723944 +vt 0.753821 0.719853 +vt 0.716749 0.784242 +vt 0.662981 0.785039 +vt 0.671054 0.798323 +vt 0.663086 0.798418 +vt 0.669929 0.708186 +vt 0.676778 0.712259 +vt 0.663087 0.782582 +vt 0.662981 0.769203 +vt 0.740003 0.712277 +vt 0.746840 0.708186 +vt 0.742675 0.732079 +vt 0.725698 0.723741 +vt 0.742675 0.723741 +vt 0.750354 0.690671 +vt 0.750039 0.712874 +vt 0.736464 0.702680 +vt 0.750039 0.742945 +vt 0.750354 0.765148 +vt 0.736464 0.753139 +vt 0.763226 0.714312 +vt 0.759890 0.704357 +vt 0.754869 0.723741 +vt 0.750389 0.732079 +vt 0.750389 0.723741 +vt 0.763226 0.741507 +vt 0.759890 0.751462 +vt 0.770088 0.732079 +vt 0.780587 0.723741 +vt 0.780587 0.732079 +vt 0.760180 0.732079 +vt 0.754869 0.732079 +vt 0.770088 0.723741 +vt 0.760180 0.723741 +vt 0.754315 0.719295 +vt 0.754315 0.736524 +vt 0.797267 0.732079 +vt 0.660992 0.723479 +vt 0.639471 0.803338 +vt 0.639471 0.723479 +vt 0.617951 0.803338 +vt 0.617950 0.723479 +vt 0.638114 0.808819 +vt 0.619308 0.808819 +vt 0.704033 0.723479 +vt 0.682513 0.803338 +vt 0.682513 0.723479 +vt 0.725554 0.723479 +vt 0.704033 0.803338 +vt 0.662350 0.808819 +vt 0.678358 0.813663 +vt 0.665147 0.813663 +vt 0.659635 0.808819 +vt 0.640829 0.808819 +vt 0.683870 0.808819 +vt 0.596430 0.803338 +vt 0.616593 0.808819 +vt 0.597787 0.808819 +vt 0.660992 0.803338 +vt 0.725554 0.803338 +vt 0.705391 0.808819 +vt 0.656838 0.813663 +vt 0.644648 0.818571 +vt 0.643626 0.813663 +vt 0.724197 0.808819 +vt 0.708188 0.813663 +vt 0.635317 0.813663 +vt 0.622105 0.813664 +vt 0.702676 0.808819 +vt 0.686667 0.813663 +vt 0.613796 0.813663 +vt 0.600584 0.813664 +vt 0.677336 0.818571 +vt 0.669395 0.824158 +vt 0.666169 0.818571 +vt 0.698857 0.818571 +vt 0.687690 0.818571 +vt 0.601607 0.818571 +vt 0.720377 0.818571 +vt 0.709210 0.818571 +vt 0.623128 0.818571 +vt 0.652589 0.824158 +vt 0.647874 0.836146 +vt 0.647874 0.824158 +vt 0.712436 0.824158 +vt 0.631069 0.824158 +vt 0.626354 0.824158 +vt 0.655815 0.818571 +vt 0.695631 0.824158 +vt 0.690916 0.824158 +vt 0.612774 0.818571 +vt 0.604833 0.824158 +vt 0.792017 0.852551 +vt 0.796100 0.850193 +vt 0.800184 0.852551 +vt 0.690916 0.836146 +vt 0.609548 0.824158 +vt 0.604833 0.836146 +vt 0.674110 0.824158 +vt 0.669395 0.836146 +vt 0.717151 0.824158 +vt 0.712436 0.836146 +vt 0.626354 0.836146 +vt 0.638114 0.717999 +vt 0.596430 0.723479 +vt 0.665147 0.713154 +vt 0.681155 0.717999 +vt 0.662349 0.717999 +vt 0.659635 0.717999 +vt 0.702676 0.717999 +vt 0.597787 0.717999 +vt 0.705391 0.717999 +vt 0.644648 0.708247 +vt 0.656837 0.713154 +vt 0.643626 0.713154 +vt 0.721400 0.713154 +vt 0.724197 0.717999 +vt 0.619308 0.717999 +vt 0.635317 0.713154 +vt 0.640829 0.717999 +vt 0.686667 0.713154 +vt 0.683870 0.717999 +vt 0.613796 0.713154 +vt 0.616593 0.717999 +vt 0.669395 0.702659 +vt 0.677336 0.708246 +vt 0.666169 0.708246 +vt 0.698856 0.708246 +vt 0.699879 0.713154 +vt 0.601607 0.708247 +vt 0.600584 0.713154 +vt 0.678358 0.713154 +vt 0.708188 0.713154 +vt 0.720377 0.708246 +vt 0.623127 0.708247 +vt 0.622105 0.713154 +vt 0.647874 0.690671 +vt 0.652589 0.702659 +vt 0.647874 0.702659 +vt 0.712436 0.702659 +vt 0.709210 0.708246 +vt 0.631068 0.702659 +vt 0.634294 0.708247 +vt 0.655815 0.708246 +vt 0.687690 0.708246 +vt 0.695631 0.702659 +vt 0.609547 0.702659 +vt 0.612773 0.708247 +vt 0.696809 0.885813 +vt 0.696809 0.881098 +vt 0.700893 0.878741 +vt 0.690916 0.690671 +vt 0.690915 0.702659 +vt 0.604832 0.690672 +vt 0.604832 0.702659 +vt 0.669395 0.690672 +vt 0.674110 0.702659 +vt 0.712436 0.690672 +vt 0.717151 0.702659 +vt 0.626354 0.690671 +vt 0.626353 0.702659 +vt 0.539489 0.662552 +vt 0.530537 0.626566 +vt 0.541470 0.624156 +vt 0.521994 0.657280 +vt 0.522018 0.631474 +vt 0.512477 0.654813 +vt 0.512497 0.633922 +vt 0.567104 0.656501 +vt 0.559023 0.632614 +vt 0.568376 0.635647 +vt 0.557452 0.658376 +vt 0.550823 0.627189 +vt 0.548654 0.662764 +vt 0.527522 0.698874 +vt 0.530503 0.662204 +vt 0.521331 0.666550 +vt 0.519173 0.693104 +vt 0.511331 0.668282 +vt 0.567457 0.691304 +vt 0.557405 0.667647 +vt 0.567145 0.670010 +vt 0.549187 0.699089 +vt 0.537876 0.738665 +vt 0.538860 0.699091 +vt 0.518013 0.733188 +vt 0.518013 0.704364 +vt 0.507381 0.707109 +vt 0.569318 0.707322 +vt 0.558690 0.733388 +vt 0.558691 0.704578 +vt 0.537662 0.775156 +vt 0.527522 0.738678 +vt 0.519390 0.770224 +vt 0.518914 0.743857 +vt 0.509619 0.767888 +vt 0.509234 0.746544 +vt 0.565380 0.769400 +vt 0.557526 0.744628 +vt 0.567103 0.747937 +vt 0.555399 0.771140 +vt 0.549185 0.738876 +vt 0.536415 0.808349 +vt 0.528179 0.775090 +vt 0.519937 0.803468 +vt 0.520232 0.779548 +vt 0.511381 0.781718 +vt 0.562846 0.782540 +vt 0.553741 0.804033 +vt 0.554066 0.780145 +vt 0.546247 0.775488 +vt 0.534853 0.846711 +vt 0.527772 0.808121 +vt 0.517338 0.838217 +vt 0.518971 0.812483 +vt 0.509324 0.814332 +vt 0.563947 0.815884 +vt 0.554383 0.839383 +vt 0.554368 0.813416 +vt 0.545798 0.808475 +vt 0.743325 0.846202 +vt 0.734511 0.780557 +vt 0.743325 0.780557 +vt 0.734511 0.846202 +vt 0.725698 0.780557 +vt 0.778577 0.846202 +vt 0.769764 0.780557 +vt 0.778577 0.780557 +vt 0.752138 0.861467 +vt 0.743325 0.861467 +vt 0.738918 0.853835 +vt 0.769764 0.846202 +vt 0.760951 0.780557 +vt 0.760951 0.846202 +vt 0.752138 0.780557 +vt 0.743325 0.765292 +vt 0.752138 0.765292 +vt 0.756544 0.772924 +vt 0.598904 0.450451 +vt 0.597400 0.428674 +vt 0.598904 0.428674 +vt 0.752138 0.846202 +vt 0.597400 0.450451 +vt 0.595510 0.428674 +vt 0.597397 0.427170 +vt 0.595507 0.427170 +vt 0.594007 0.428674 +vt 0.595510 0.450451 +vt 0.594007 0.450451 +vt 0.597397 0.451954 +vt 0.172227 0.765938 +vt 0.166938 0.740681 +vt 0.172228 0.740681 +vt 0.172227 0.715424 +vt 0.166938 0.866966 +vt 0.172227 0.841709 +vt 0.172228 0.866966 +vt 0.166938 0.841709 +vt 0.172227 0.816452 +vt 0.152869 0.717751 +vt 0.166938 0.715424 +vt 0.166938 0.816452 +vt 0.172227 0.791195 +vt 0.166938 0.765938 +vt 0.187088 0.864576 +vt 0.216258 0.756632 +vt 0.198414 0.746330 +vt 0.216258 0.715424 +vt 0.166938 0.791195 +vt 0.152869 0.814126 +vt 0.152869 0.793522 +vt 0.152870 0.743008 +vt 0.152870 0.864640 +vt 0.152869 0.844036 +vt 0.152869 0.788868 +vt 0.152869 0.768265 +vt 0.152869 0.818779 +vt 0.187087 0.814062 +vt 0.194168 0.797673 +vt 0.194168 0.809974 +vt 0.187088 0.768328 +vt 0.187087 0.788806 +vt 0.187088 0.839319 +vt 0.187088 0.717814 +vt 0.187088 0.738291 +vt 0.187088 0.743071 +vt 0.187088 0.763549 +vt 0.708834 0.775416 +vt 0.713051 0.763876 +vt 0.713051 0.774656 +vt 0.187088 0.844099 +vt 0.194169 0.860488 +vt 0.194169 0.747160 +vt 0.194169 0.759461 +vt 0.194169 0.772417 +vt 0.194168 0.784717 +vt 0.187087 0.818842 +vt 0.194169 0.835231 +vt 0.194169 0.721902 +vt 0.194169 0.734203 +vt 0.722416 0.768920 +vt 0.713080 0.763529 +vt 0.713080 0.752749 +vt 0.708834 0.813629 +vt 0.713051 0.825169 +vt 0.708834 0.825930 +vt 0.708834 0.712601 +vt 0.713051 0.724142 +vt 0.708834 0.724902 +vt 0.708834 0.788372 +vt 0.713051 0.799913 +vt 0.708834 0.800673 +vt 0.708834 0.851187 +vt 0.713051 0.839646 +vt 0.713051 0.850427 +vt 0.708834 0.737858 +vt 0.713051 0.749399 +vt 0.708834 0.750159 +vt 0.294370 0.288682 +vt 0.282009 0.316260 +vt 0.282523 0.290958 +vt 0.111872 0.368366 +vt 0.117819 0.383109 +vt 0.105182 0.379030 +vt 0.244750 0.469833 +vt 0.236614 0.419488 +vt 0.244750 0.418305 +vt 0.291396 0.345771 +vt 0.296207 0.414923 +vt 0.284577 0.418229 +vt 0.142062 0.327911 +vt 0.154598 0.277537 +vt 0.154598 0.326756 +vt 0.352881 0.428986 +vt 0.327695 0.467098 +vt 0.327695 0.421040 +vt 0.236614 0.468651 +vt 0.222384 0.425600 +vt 0.113833 0.390300 +vt 0.101197 0.386221 +vt 0.239145 0.411717 +vt 0.236151 0.397828 +vt 0.244213 0.399443 +vt 0.142062 0.276383 +vt 0.133926 0.326728 +vt 0.133926 0.277565 +vt 0.224344 0.387806 +vt 0.215554 0.387155 +vt 0.218049 0.381113 +vt 0.101197 0.401708 +vt 0.219277 0.400080 +vt 0.119696 0.283678 +vt 0.101197 0.314470 +vt 0.107733 0.289824 +vt 0.107733 0.314470 +vt 0.119696 0.320616 +vt 0.222384 0.462538 +vt 0.215554 0.431746 +vt 0.113834 0.405787 +vt 0.108641 0.412910 +vt 0.151062 0.327987 +vt 0.195826 0.350407 +vt 0.210708 0.367530 +vt 0.196826 0.288518 +vt 0.208893 0.312342 +vt 0.196468 0.315696 +vt 0.139544 0.333726 +vt 0.215478 0.378614 +vt 0.316497 0.338796 +vt 0.308068 0.409865 +vt 0.259909 0.292936 +vt 0.247128 0.311195 +vt 0.247433 0.294457 +vt 0.319951 0.361232 +vt 0.312942 0.401961 +vt 0.259522 0.313253 +vt 0.209234 0.292024 +vt 0.218022 0.310674 +vt 0.231455 0.310275 +vt 0.231736 0.294769 +vt 0.218322 0.293936 +vt 0.160233 0.329406 +vt 0.186236 0.342290 +vt 0.319951 0.373800 +vt 0.317454 0.389300 +vt 0.255963 0.419460 +vt 0.269653 0.418891 +vt 0.255963 0.468679 +vt 0.283349 0.419794 +vt 0.269653 0.469247 +vt 0.179002 0.326772 +vt 0.182793 0.279386 +vt 0.182793 0.324907 +vt 0.166800 0.327325 +vt 0.179002 0.277522 +vt 0.166800 0.276969 +vt 0.251604 0.413517 +vt 0.255306 0.397444 +vt 0.263694 0.415262 +vt 0.268904 0.395754 +vt 0.275783 0.417007 +vt 0.127120 0.344105 +vt 0.149936 0.363391 +vt 0.124858 0.347674 +vt 0.136609 0.366672 +vt 0.118365 0.358020 +vt 0.126522 0.375945 +vt 0.189270 0.381869 +vt 0.129617 0.340179 +vt 0.154838 0.362201 +vt 0.186749 0.281836 +vt 0.186749 0.322457 +vt 0.288046 0.466506 +vt 0.283349 0.468344 +vt 0.288046 0.421633 +vt 0.280030 0.387717 +vt 0.279968 0.417592 +vt 0.284109 0.384750 +vt 0.736257 0.749904 +vt 0.720981 0.735530 +vt 0.737601 0.735936 +vt 0.692257 0.749976 +vt 0.667660 0.739250 +vt 0.690864 0.735991 +vt 0.656960 0.729484 +vt 0.671630 0.727494 +vt 0.759218 0.752722 +vt 0.760973 0.739048 +vt 0.655240 0.754127 +vt 0.654630 0.741140 +vt 0.699236 0.763166 +vt 0.729711 0.786304 +vt 0.699401 0.786517 +vt 0.672000 0.720136 +vt 0.659437 0.673315 +vt 0.674733 0.671568 +vt 0.756640 0.727337 +vt 0.690778 0.721089 +vt 0.737245 0.669306 +vt 0.720921 0.712637 +vt 0.721119 0.668222 +vt 0.770995 0.729067 +vt 0.775102 0.740741 +vt 0.691946 0.668674 +vt 0.707690 0.712575 +vt 0.691181 0.713632 +vt 0.737660 0.721120 +vt 0.756168 0.720079 +vt 0.759698 0.661123 +vt 0.754034 0.672902 +vt 0.737267 0.713753 +vt 0.721068 0.720172 +vt 0.708242 0.664474 +vt 0.730412 0.646622 +vt 0.721161 0.664626 +vt 0.693252 0.655628 +vt 0.708200 0.668070 +vt 0.773373 0.754463 +vt 0.707499 0.735519 +vt 0.707983 0.750017 +vt 0.720616 0.749928 +vt 0.276862 0.356559 +vt 0.290431 0.341211 +vt 0.290344 0.356570 +vt 0.707508 0.720200 +vt 0.307023 0.342159 +vt 0.730695 0.622609 +vt 0.699417 0.646258 +vt 0.699700 0.622244 +vt 0.729546 0.762953 +vt 0.260141 0.342128 +vt 0.260227 0.357030 +vt 0.669837 0.659434 +vt 0.736442 0.656278 +vt 0.718696 0.665604 +vt 0.637125 0.740104 +vt 0.638041 0.728257 +vt 0.657420 0.722230 +vt 0.638442 0.721194 +vt 0.639290 0.674330 +vt 0.657986 0.660330 +vt 0.768416 0.675386 +vt 0.770534 0.721953 +vt 0.705585 0.611441 +vt 0.725065 0.611670 +vt 0.705124 0.799693 +vt 0.468409 0.803653 +vt 0.432321 0.777944 +vt 0.468147 0.777333 +vt 0.467547 0.751090 +vt 0.431825 0.960571 +vt 0.468094 0.935326 +vt 0.467293 0.961486 +vt 0.432446 0.934600 +vt 0.468625 0.909056 +vt 0.432887 0.908590 +vt 0.468914 0.882722 +vt 0.433124 0.882534 +vt 0.469005 0.856330 +vt 0.252713 0.926008 +vt 0.234184 0.907479 +vt 0.297448 0.881274 +vt 0.433163 0.856431 +vt 0.468870 0.829966 +vt 0.433008 0.830309 +vt 0.402012 0.955428 +vt 0.397300 0.927800 +vt 0.404066 0.928173 +vt 0.687720 0.750985 +vt 0.680145 0.726425 +vt 0.686631 0.726623 +vt 0.405324 0.800871 +vt 0.399383 0.825394 +vt 0.398294 0.801032 +vt 0.405388 0.876012 +vt 0.397510 0.901583 +vt 0.399024 0.875931 +vt 0.397503 0.901726 +vt 0.405036 0.901915 +vt 0.403269 0.751934 +vt 0.398317 0.776869 +vt 0.397135 0.754788 +vt 0.405529 0.825455 +vt 0.398520 0.850403 +vt 0.399381 0.825522 +vt 0.404431 0.776697 +vt 0.398295 0.800898 +vt 0.398319 0.776992 +vt 0.405807 0.850546 +vt 0.399030 0.875799 +vt 0.398516 0.850542 +vt 0.680386 0.801069 +vt 0.672012 0.775951 +vt 0.680120 0.775770 +vt 0.686654 0.702459 +vt 0.680397 0.678377 +vt 0.685472 0.680379 +vt 0.685647 0.853251 +vt 0.678903 0.826776 +vt 0.685839 0.827317 +vt 0.685847 0.827174 +vt 0.687361 0.801521 +vt 0.686856 0.775994 +vt 0.680970 0.750833 +vt 0.687717 0.751113 +vt 0.686655 0.702582 +vt 0.680400 0.702433 +vt 0.685636 0.853391 +vt 0.676386 0.880012 +vt 0.678246 0.852673 +vt 0.687366 0.801389 +vt 0.686852 0.776133 +vt 0.666018 0.750825 +vt 0.672677 0.751098 +vt 0.672359 0.726775 +vt 0.672420 0.678157 +vt 0.670576 0.826799 +vt 0.671795 0.801161 +vt 0.672599 0.702801 +vt 0.669799 0.852532 +vt 0.375392 0.900738 +vt 0.367298 0.925768 +vt 0.368419 0.900106 +vt 0.665917 0.702651 +vt 0.667453 0.879204 +vt 0.663024 0.851996 +vt 0.664913 0.800603 +vt 0.665347 0.775609 +vt 0.666024 0.750692 +vt 0.665933 0.726588 +vt 0.665920 0.702524 +vt 0.666176 0.680584 +vt 0.663728 0.826328 +vt 0.664905 0.800741 +vt 0.369605 0.874566 +vt 0.363323 0.849412 +vt 0.370241 0.849510 +vt 0.375402 0.900600 +vt 0.376568 0.875150 +vt 0.377018 0.849885 +vt 0.370951 0.824801 +vt 0.377682 0.825235 +vt 0.377601 0.800869 +vt 0.371383 0.776907 +vt 0.377581 0.777061 +vt 0.373635 0.950910 +vt 0.374687 0.926405 +vt 0.377011 0.850018 +vt 0.377688 0.825102 +vt 0.371077 0.800659 +vt 0.377597 0.800998 +vt 0.377839 0.754993 +vt 0.371413 0.752320 +vt 0.360267 0.925582 +vt 0.347083 0.950103 +vt 0.348183 0.927438 +vt 0.364418 0.800713 +vt 0.364200 0.752350 +vt 0.361297 0.899912 +vt 0.362552 0.874407 +vt 0.364148 0.824770 +vt 0.364611 0.776997 +vt 0.366231 0.953475 +vt 0.350327 0.897110 +vt 0.341055 0.878800 +vt 0.351359 0.876119 +vt 0.352395 0.851288 +vt 0.353941 0.802724 +vt 0.353528 0.754710 +vt 0.350053 0.901736 +vt 0.353368 0.826592 +vt 0.354131 0.798530 +vt 0.354290 0.779011 +vt 0.341912 0.868436 +vt 0.337171 0.854714 +vt 0.342354 0.854099 +vt 0.352689 0.846873 +vt 0.343461 0.829337 +vt 0.344830 0.781891 +vt 0.337060 0.930341 +vt 0.344181 0.819416 +vt 0.344336 0.805617 +vt 0.344009 0.772085 +vt 0.343773 0.757947 +vt 0.339120 0.919252 +vt 0.339711 0.904527 +vt 0.337928 0.842538 +vt 0.336179 0.830746 +vt 0.338350 0.829930 +vt 0.339363 0.806307 +vt 0.338699 0.758796 +vt 0.334381 0.905110 +vt 0.335110 0.892381 +vt 0.335752 0.879332 +vt 0.339831 0.794720 +vt 0.339930 0.782587 +vt 0.330651 0.945008 +vt 0.331335 0.930918 +vt 0.331660 0.917230 +vt 0.328650 0.905805 +vt 0.332113 0.905944 +vt 0.337862 0.783423 +vt 0.328894 0.931793 +vt 0.334633 0.866535 +vt 0.334971 0.855547 +vt 0.337144 0.817725 +vt 0.337262 0.807149 +vt 0.336753 0.770554 +vt 0.336572 0.759719 +vt 0.333490 0.880141 +vt 0.941898 0.795080 +vt 0.941898 0.783551 +vt 0.969733 0.795080 +vt 0.332939 0.891354 +vt 0.330049 0.879972 +vt 0.335816 0.841579 +vt 0.332854 0.830634 +vt 0.337776 0.793850 +vt 0.334662 0.783397 +vt 0.328306 0.943900 +vt 0.325178 0.931613 +vt 0.331599 0.855443 +vt 0.334017 0.807113 +vt 0.333246 0.759774 +vt 0.428276 0.902463 +vt 0.428438 0.850443 +vt 0.427095 0.800329 +vt 0.425262 0.751105 +vt 0.426477 0.956538 +vt 0.673824 0.788881 +vt 0.671595 0.810654 +vt 0.670524 0.788997 +vt 0.673367 0.767296 +vt 0.670065 0.767319 +vt 0.670218 0.745637 +vt 0.670983 0.723967 +vt 0.673519 0.745706 +vt 0.675650 0.702584 +vt 0.672358 0.702328 +vt 0.674344 0.680736 +vt 0.675956 0.832101 +vt 0.674339 0.853928 +vt 0.672662 0.832310 +vt 0.678391 0.810766 +vt 0.680639 0.832492 +vt 0.678004 0.832445 +vt 0.661211 0.777994 +vt 0.658377 0.800847 +vt 0.658377 0.776825 +vt 0.796315 0.870850 +vt 0.818826 0.877857 +vt 0.796315 0.877857 +vt 0.661248 0.753053 +vt 0.663763 0.775775 +vt 0.661247 0.774736 +vt 0.677663 0.854079 +vt 0.651742 0.681492 +vt 0.653581 0.704758 +vt 0.651742 0.704003 +vt 0.818826 0.870850 +vt 0.841337 0.877858 +vt 0.661247 0.822256 +vt 0.663763 0.799534 +vt 0.663763 0.823294 +vt 0.677663 0.680829 +vt 0.680639 0.702416 +vt 0.678004 0.702463 +vt 0.661211 0.826039 +vt 0.658377 0.848891 +vt 0.658377 0.824869 +vt 0.661247 0.870850 +vt 0.683759 0.877858 +vt 0.661247 0.877858 +vt 0.670029 0.775151 +vt 0.668508 0.752015 +vt 0.670029 0.752639 +vt 0.678391 0.724142 +vt 0.661211 0.681906 +vt 0.658378 0.704758 +vt 0.658378 0.680736 +vt 0.683759 0.870850 +vt 0.706270 0.877857 +vt 0.661247 0.848092 +vt 0.663763 0.870813 +vt 0.661247 0.869775 +vt 0.681026 0.724095 +vt 0.678778 0.745822 +vt 0.651742 0.776069 +vt 0.653580 0.752802 +vt 0.653580 0.776825 +vt 0.706270 0.870850 +vt 0.728781 0.877857 +vt 0.670029 0.822670 +vt 0.668508 0.799534 +vt 0.670029 0.800159 +vt 0.681413 0.745775 +vt 0.679210 0.767454 +vt 0.651742 0.801602 +vt 0.653580 0.824869 +vt 0.651742 0.824113 +vt 0.728781 0.870850 +vt 0.751292 0.877857 +vt 0.661247 0.727217 +vt 0.663763 0.704496 +vt 0.663763 0.728256 +vt 0.681413 0.789133 +vt 0.678778 0.789086 +vt 0.661211 0.753972 +vt 0.658377 0.752802 +vt 0.751292 0.870850 +vt 0.773803 0.877857 +vt 0.670029 0.870189 +vt 0.668507 0.847054 +vt 0.670029 0.847678 +vt 0.651742 0.872158 +vt 0.653580 0.848891 +vt 0.653580 0.872914 +vt 0.773803 0.870850 +vt 0.670029 0.727631 +vt 0.668508 0.704496 +vt 0.670029 0.705120 +vt 0.668508 0.728256 +vt 0.668508 0.680736 +vt 0.668507 0.870813 +vt 0.663763 0.847054 +vt 0.668508 0.823294 +vt 0.668508 0.775775 +vt 0.663763 0.752015 +vt 0.670029 0.703872 +vt 0.670029 0.681360 +vt 0.670029 0.823918 +vt 0.661248 0.703457 +vt 0.663763 0.680736 +vt 0.670029 0.798910 +vt 0.670029 0.776399 +vt 0.661247 0.824332 +vt 0.661247 0.846015 +vt 0.670029 0.728880 +vt 0.661247 0.798496 +vt 0.661248 0.729294 +vt 0.661248 0.750977 +vt 0.658377 0.728780 +vt 0.658378 0.872914 +vt 0.653580 0.800847 +vt 0.651742 0.848136 +vt 0.661211 0.751633 +vt 0.661211 0.729950 +vt 0.651742 0.777580 +vt 0.651742 0.800091 +vt 0.651742 0.752047 +vt 0.653580 0.728780 +vt 0.661211 0.727611 +vt 0.661211 0.705928 +vt 0.661211 0.871744 +vt 0.661211 0.850061 +vt 0.651742 0.705514 +vt 0.651742 0.728025 +vt 0.661211 0.823699 +vt 0.661211 0.802016 +vt 0.593987 0.466928 +vt 0.536809 0.473554 +vt 0.536809 0.466928 +vt 0.593987 0.473554 +vt 0.536809 0.480180 +vt 0.593987 0.427170 +vt 0.536809 0.433796 +vt 0.536809 0.427170 +vt 0.593987 0.433796 +vt 0.536809 0.440423 +vt 0.593987 0.440423 +vt 0.536809 0.447049 +vt 0.593987 0.447049 +vt 0.536809 0.453675 +vt 0.564138 0.496197 +vt 0.557512 0.496197 +vt 0.552826 0.491512 +vt 0.593987 0.453675 +vt 0.536809 0.460302 +vt 0.593987 0.460302 +vt 0.548121 0.480200 +vt 0.552807 0.484886 +vt 0.552807 0.491512 +vt 0.657338 0.624156 +vt 0.684146 0.636043 +vt 0.657338 0.646468 +vt 0.596234 0.646468 +vt 0.609293 0.662148 +vt 0.596234 0.662148 +vt 0.644279 0.624156 +vt 0.635940 0.641988 +vt 0.635940 0.624156 +vt 0.644279 0.646468 +vt 0.657338 0.662148 +vt 0.644279 0.662148 +vt 0.644279 0.684460 +vt 0.657338 0.684460 +vt 0.617285 0.648848 +vt 0.635117 0.659768 +vt 0.617285 0.659768 +vt 0.609293 0.646468 +vt 0.635117 0.648848 +vt 0.635940 0.666628 +vt 0.686022 0.648617 +vt 0.697909 0.659999 +vt 0.686022 0.659999 +vt 0.684146 0.672573 +vt 0.684146 0.684460 +vt 0.569512 0.659999 +vt 0.569512 0.648617 +vt 0.684146 0.733070 +vt 0.657338 0.744957 +vt 0.657338 0.722645 +vt 0.609293 0.706965 +vt 0.596234 0.722645 +vt 0.596234 0.706965 +vt 0.644279 0.744957 +vt 0.635940 0.727125 +vt 0.644279 0.722645 +vt 0.657338 0.706965 +vt 0.644279 0.706965 +vt 0.644279 0.684653 +vt 0.657338 0.684653 +vt 0.635117 0.709345 +vt 0.617285 0.720265 +vt 0.617285 0.709345 +vt 0.609293 0.722645 +vt 0.635940 0.702485 +vt 0.697909 0.709114 +vt 0.686022 0.720496 +vt 0.686022 0.709114 +vt 0.684146 0.696540 +vt 0.569512 0.709114 +vt 0.687094 0.850835 +vt 0.668374 0.871028 +vt 0.668880 0.855092 +vt 0.755690 0.850835 +vt 0.742632 0.835156 +vt 0.755690 0.835156 +vt 0.708241 0.870993 +vt 0.719772 0.857405 +vt 0.716580 0.870969 +vt 0.700152 0.850835 +vt 0.687094 0.835156 +vt 0.700152 0.835156 +vt 0.695183 0.814998 +vt 0.695183 0.870993 +vt 0.734640 0.848456 +vt 0.720705 0.837535 +vt 0.734640 0.837535 +vt 0.720705 0.848456 +vt 0.708242 0.814998 +vt 0.719772 0.828586 +vt 0.668513 0.848686 +vt 0.652570 0.837305 +vt 0.668513 0.837305 +vt 0.668374 0.814963 +vt 0.782413 0.848686 +vt 0.507381 0.592589 +vt 0.517080 0.607896 +vt 0.507387 0.607900 +vt 0.650947 0.611955 +vt 0.650586 0.616094 +vt 0.646319 0.621727 +vt 0.666752 0.768747 +vt 0.686764 0.776291 +vt 0.667308 0.776511 +vt 0.803577 0.589880 +vt 0.803817 0.587267 +vt 0.806813 0.583472 +vt 0.841024 0.871221 +vt 0.814095 0.886695 +vt 0.814095 0.871221 +vt 0.914062 0.871221 +vt 0.887133 0.886695 +vt 0.887133 0.871221 +vt 0.984776 0.871221 +vt 0.960171 0.886695 +vt 0.960171 0.871221 +vt 0.652570 0.871221 +vt 0.767986 0.886695 +vt 0.652570 0.886695 +vt 0.527349 0.604901 +vt 0.825309 0.595589 +vt 0.825308 0.604911 +vt 0.665637 0.750916 +vt 0.686629 0.768163 +vt 0.665076 0.808360 +vt 0.655487 0.808168 +vt 0.655848 0.798318 +vt 0.656852 0.767886 +vt 0.656097 0.760783 +vt 0.760863 0.788053 +vt 0.751192 0.772277 +vt 0.760938 0.772323 +vt 0.662462 0.776147 +vt 0.751117 0.788007 +vt 0.730573 0.772179 +vt 0.666572 0.790660 +vt 0.686731 0.783381 +vt 0.686464 0.791526 +vt 0.685418 0.809662 +vt 0.702516 0.787776 +vt 0.720903 0.772133 +vt 0.720828 0.787863 +vt 0.694600 0.796708 +vt 0.693495 0.814770 +vt 0.685873 0.750109 +vt 0.694810 0.763131 +vt 0.730498 0.787909 +vt 0.667168 0.782974 +vt 0.662462 0.783303 +vt 0.694502 0.783418 +vt 0.693012 0.771912 +vt 0.694536 0.776328 +vt 0.702591 0.772046 +vt 0.652570 0.774891 +vt 0.652570 0.784558 +vt 0.692927 0.787866 +vt 0.753166 0.589107 +vt 0.780211 0.589523 +vt 0.517091 0.592585 +vt 0.780716 0.610920 +vt 0.753871 0.611342 +vt 0.806408 0.871221 +vt 0.775673 0.886695 +vt 0.775673 0.871221 +vt 0.812776 0.886695 +vt 0.769305 0.871221 +vt 0.767986 0.871221 +vt 0.769305 0.886695 +vt 0.806408 0.886695 +vt 0.879446 0.871221 +vt 0.848711 0.886695 +vt 0.848711 0.871221 +vt 0.885814 0.886695 +vt 0.842343 0.871221 +vt 0.841024 0.886695 +vt 0.842343 0.886695 +vt 0.885814 0.871221 +vt 0.952484 0.871221 +vt 0.921749 0.886695 +vt 0.921749 0.871221 +vt 0.958852 0.871221 +vt 0.958852 0.886695 +vt 0.915381 0.871221 +vt 0.914062 0.886695 +vt 0.915381 0.886695 +vt 0.952484 0.886695 +vt 0.727505 0.585511 +vt 0.753313 0.586332 +vt 0.756417 0.582443 +vt 0.777420 0.582866 +vt 0.780357 0.586873 +vt 0.727356 0.588687 +vt 0.695088 0.579087 +vt 0.723588 0.580023 +vt 0.690554 0.588399 +vt 0.648787 0.584252 +vt 0.690717 0.584368 +vt 0.518329 0.577020 +vt 0.644354 0.577019 +vt 0.645688 0.577706 +vt 0.825516 0.617637 +vt 0.806985 0.617940 +vt 0.806095 0.617494 +vt 0.803990 0.613178 +vt 0.780699 0.613575 +vt 0.777810 0.617541 +vt 0.756950 0.617979 +vt 0.728182 0.611771 +vt 0.753871 0.614124 +vt 0.728190 0.614946 +vt 0.691930 0.612062 +vt 0.724388 0.620358 +vt 0.695957 0.621276 +vt 0.691701 0.616067 +vt 0.074863 0.862419 +vt 0.041487 0.845907 +vt 0.074863 0.845907 +vt 0.208370 0.862419 +vt 0.174994 0.845907 +vt 0.208370 0.845907 +vt 0.174994 0.862419 +vt 0.141617 0.845907 +vt 0.759121 0.703643 +vt 0.763396 0.737251 +vt 0.760353 0.736143 +vt 0.207069 0.842175 +vt 0.786226 0.661385 +vt 0.787099 0.696141 +vt 0.783028 0.660488 +vt 0.786226 0.816865 +vt 0.787099 0.782109 +vt 0.790012 0.783704 +vt 0.738082 0.887901 +vt 0.749823 0.856123 +vt 0.740656 0.889867 +vt 0.760353 0.742107 +vt 0.762071 0.775942 +vt 0.759121 0.774607 +vt 0.130251 0.752410 +vt 0.117722 0.721111 +vt 0.133940 0.720097 +vt 0.129350 0.599029 +vt 0.108048 0.572898 +vt 0.123224 0.567088 +vt 0.130250 0.604925 +vt 0.117722 0.636224 +vt 0.114678 0.609569 +vt 0.134392 0.714149 +vt 0.119529 0.683889 +vt 0.135624 0.681650 +vt 0.129350 0.758306 +vt 0.108048 0.784437 +vt 0.113101 0.758089 +vt 0.323543 0.521306 +vt 0.178785 0.553868 +vt 0.179016 0.520310 +vt 0.323312 0.554864 +vt 0.191344 0.556367 +vt 0.188700 0.636714 +vt 0.196375 0.643810 +vt 0.177885 0.652869 +vt 0.208370 0.837350 +vt 0.240439 0.841159 +vt 0.209679 0.841159 +vt 0.302524 0.704634 +vt 0.178557 0.718309 +vt 0.196859 0.706096 +vt 0.109548 0.841159 +vt 0.141617 0.837350 +vt 0.140309 0.841159 +vt 0.459954 0.627010 +vt 0.454058 0.621089 +vt 0.461711 0.606364 +vt 0.076172 0.841159 +vt 0.108240 0.837350 +vt 0.106932 0.841159 +vt 0.074863 0.837350 +vt 0.042795 0.841159 +vt 0.041487 0.837350 +vt 0.173685 0.841159 +vt 0.174994 0.837350 +vt 0.241747 0.845907 +vt 0.209672 0.842175 +vt 0.240446 0.842175 +vt 0.073562 0.842175 +vt 0.073555 0.841159 +vt 0.106939 0.842175 +vt 0.076165 0.842175 +vt 0.176295 0.842175 +vt 0.207062 0.841159 +vt 0.009418 0.841159 +vt 0.040185 0.842175 +vt 0.009411 0.842175 +vt 0.311616 0.697812 +vt 0.323085 0.717307 +vt 0.446749 0.682132 +vt 0.454484 0.676563 +vt 0.461983 0.693911 +vt 0.454365 0.665148 +vt 0.461754 0.665035 +vt 0.324265 0.685344 +vt 0.313007 0.685763 +vt 0.788819 0.741504 +vt 0.781391 0.779289 +vt 0.782914 0.739125 +vt 0.782310 0.655784 +vt 0.769261 0.619554 +vt 0.775550 0.620541 +vt 0.757821 0.663828 +vt 0.767863 0.699988 +vt 0.761788 0.698570 +vt 0.765070 0.581275 +vt 0.758724 0.580767 +vt 0.757821 0.814422 +vt 0.767863 0.778262 +vt 0.763420 0.817174 +vt 0.747953 0.627546 +vt 0.757255 0.660122 +vt 0.754079 0.659487 +vt 0.790580 0.776227 +vt 0.791845 0.742874 +vt 0.758669 0.780554 +vt 0.754980 0.812868 +vt 0.758669 0.697696 +vt 0.747953 0.850704 +vt 0.757255 0.818128 +vt 0.750668 0.852470 +vt 0.785094 0.653973 +vt 0.778807 0.621194 +vt 0.776832 0.819223 +vt 0.781391 0.698961 +vt 0.763420 0.661076 +vt 0.776832 0.659028 +vt 0.756044 0.622613 +vt 0.769347 0.739125 +vt 0.756044 0.855638 +vt 0.109510 0.598506 +vt 0.083763 0.581008 +vt 0.104985 0.574914 +vt 0.111471 0.611347 +vt 0.113101 0.599246 +vt 0.119529 0.673446 +vt 0.115180 0.648167 +vt 0.118512 0.646637 +vt 0.114678 0.747766 +vt 0.114197 0.722120 +vt 0.104985 0.782421 +vt 0.109510 0.758829 +vt 0.718770 0.731477 +vt 0.697552 0.711798 +vt 0.718010 0.711444 +vt 0.111471 0.745988 +vt 0.092123 0.721600 +vt 0.116090 0.672172 +vt 0.093281 0.650986 +vt 0.116090 0.685162 +vt 0.093281 0.706349 +vt 0.094040 0.686315 +vt 0.114197 0.635214 +vt 0.089849 0.615816 +vt 0.696575 0.779319 +vt 0.689578 0.797508 +vt 0.691489 0.780776 +vt 0.718770 0.746773 +vt 0.697552 0.766452 +vt 0.698343 0.745577 +vt 0.716852 0.696192 +vt 0.694205 0.678176 +vt 0.714578 0.676274 +vt 0.708492 0.641465 +vt 0.692256 0.665421 +vt 0.688321 0.644905 +vt 0.708492 0.836785 +vt 0.692256 0.812829 +vt 0.712268 0.817096 +vt 0.716852 0.782058 +vt 0.694205 0.800074 +vt 0.696575 0.698931 +vt 0.689578 0.680743 +vt 0.687075 0.664353 +vt 0.683902 0.647814 +vt 0.688321 0.833345 +vt 0.687074 0.813897 +vt 0.670581 0.697077 +vt 0.650294 0.688013 +vt 0.669298 0.685843 +vt 0.693382 0.747415 +vt 0.672136 0.760694 +vt 0.672564 0.749395 +vt 0.666196 0.665540 +vt 0.664067 0.654436 +vt 0.683902 0.830436 +vt 0.666196 0.812710 +vt 0.675750 0.862842 +vt 0.659437 0.843826 +vt 0.680165 0.846590 +vt 0.669298 0.792407 +vt 0.670581 0.781173 +vt 0.645281 0.658038 +vt 0.664067 0.823815 +vt 0.647411 0.809107 +vt 0.651576 0.779003 +vt 0.792170 0.858787 +vt 0.837897 0.852498 +vt 0.837897 0.858787 +vt 0.792170 0.846209 +vt 0.792170 0.852498 +vt 0.792170 0.877654 +vt 0.837897 0.883942 +vt 0.792170 0.883942 +vt 0.792170 0.871365 +vt 0.837897 0.865076 +vt 0.837897 0.871365 +vt 0.792170 0.865076 +vt 0.881564 0.850656 +vt 0.877117 0.861392 +vt 0.866381 0.856945 +vt 0.314719 0.975612 +vt 0.326762 0.982391 +vt 0.313189 0.981932 +vt 0.301347 0.662214 +vt 0.196376 0.661927 +vt 0.324264 0.620387 +vt 0.311614 0.607920 +vt 0.323082 0.588424 +vt 0.177947 0.620066 +vt 0.168091 0.588566 +vt 0.178554 0.587429 +vt 0.176302 0.841159 +vt 0.167501 0.684689 +vt 0.167441 0.653416 +vt 0.189059 0.698860 +vt 0.188700 0.669022 +vt 0.177948 0.685671 +vt 0.634488 0.638596 +vt 0.638014 0.628528 +vt 0.640978 0.639439 +vt 0.837897 0.890231 +vt 0.173982 0.975612 +vt 0.184794 0.980700 +vt 0.173813 0.980786 +vt 0.161783 0.982106 +vt 0.186232 0.966456 +vt 0.290702 0.960924 +vt 0.290761 0.964910 +vt 0.340529 0.645113 +vt 0.446339 0.626918 +vt 0.446326 0.644424 +vt 0.679936 0.866077 +vt 0.685412 0.845918 +vt 0.653022 0.759969 +vt 0.176204 0.962749 +vt 0.186163 0.961764 +vt 0.314189 0.952419 +vt 0.300675 0.944255 +vt 0.317014 0.948953 +vt 0.109541 0.842175 +vt 0.140316 0.842175 +vt 0.452576 0.982507 +vt 0.463142 0.975612 +vt 0.465756 0.979239 +vt 0.788819 0.736746 +vt 0.787459 0.700886 +vt 0.659437 0.634425 +vt 0.656472 0.623513 +vt 0.442243 0.979216 +vt 0.442081 0.985101 +vt 0.290702 0.944238 +vt 0.299950 0.947451 +vt 0.300675 0.960908 +vt 0.299950 0.957711 +vt 0.314189 0.952744 +vt 0.299764 0.978453 +vt 0.310165 0.985594 +vt 0.298915 0.982521 +vt 0.289357 0.981499 +vt 0.289333 0.975612 +vt 0.337691 0.977558 +vt 0.098660 0.820501 +vt 0.102057 0.795077 +vt 0.105694 0.794611 +vt 0.446810 0.693938 +vt 0.454466 0.594878 +vt 0.446757 0.589328 +vt 0.461939 0.577590 +vt 0.745776 0.584818 +vt 0.080315 0.566105 +vt 0.095759 0.539076 +vt 0.102057 0.562258 +vt 0.691489 0.697474 +vt 0.638014 0.849722 +vt 0.656472 0.854737 +vt 0.446820 0.577560 +vt 0.738082 0.590349 +vt 0.749823 0.622128 +vt 0.746608 0.621735 +vt 0.121879 0.561277 +vt 0.098660 0.536834 +vt 0.113353 0.529892 +vt 0.243049 0.842175 +vt 0.273816 0.841159 +vt 0.273823 0.842175 +vt 0.740656 0.588383 +vt 0.083763 0.776327 +vt 0.693382 0.730835 +vt 0.692744 0.714006 +vt 0.337571 0.982619 +vt 0.160078 0.901277 +vt 0.122340 0.938934 +vt 0.085257 0.909698 +vt 0.275124 0.845907 +vt 0.705044 0.851687 +vt 0.699788 0.871034 +vt 0.142918 0.842175 +vt 0.326037 0.620144 +vt 0.331671 0.650833 +vt 0.326267 0.651299 +vt 0.330650 0.663037 +vt 0.324656 0.663275 +vt 0.330614 0.608328 +vt 0.324590 0.608016 +vt 0.332277 0.596183 +vt 0.327061 0.578210 +vt 0.340693 0.588559 +vt 0.331583 0.620575 +vt 0.326731 0.693126 +vt 0.332160 0.675176 +vt 0.041487 0.862419 +vt 0.008110 0.845907 +vt 0.777117 0.613889 +vt 0.768366 0.581679 +vt 0.121879 0.796058 +vt 0.134392 0.643185 +vt 0.745776 0.893432 +vt 0.705044 0.626563 +vt 0.679936 0.612173 +vt 0.699788 0.607216 +vt 0.680165 0.631660 +vt 0.675750 0.615409 +vt 0.008110 0.837350 +vt 0.790580 0.702023 +vt 0.634488 0.839654 +vt 0.632839 0.845723 +vt 0.233859 0.885432 +vt 0.175562 0.930199 +vt 0.175562 0.870923 +vt 0.340483 0.682895 +vt 0.340659 0.691513 +vt 0.454069 0.650265 +vt 0.328705 0.520310 +vt 0.341652 0.551659 +vt 0.327962 0.552552 +vt 0.340925 0.579939 +vt 0.327513 0.718940 +vt 0.341269 0.719879 +vt 0.459642 0.520310 +vt 0.446460 0.550286 +vt 0.445095 0.521164 +vt 0.459703 0.750615 +vt 0.446433 0.721309 +vt 0.461634 0.721227 +vt 0.341884 0.749217 +vt 0.445110 0.749566 +vt 0.342347 0.521361 +vt 0.672376 0.760954 +vt 0.666688 0.725988 +vt 0.672622 0.721033 +vt 0.315098 0.557219 +vt 0.191146 0.585104 +vt 0.404923 0.830258 +vt 0.398083 0.826306 +vt 0.404970 0.825822 +vt 0.672968 0.644290 +vt 0.668770 0.634152 +vt 0.673046 0.627943 +vt 0.171673 0.707536 +vt 0.175271 0.737367 +vt 0.171994 0.741994 +vt 0.296421 0.825822 +vt 0.302713 0.829258 +vt 0.296390 0.829743 +vt 0.177592 0.778384 +vt 0.173180 0.808813 +vt 0.172380 0.774160 +vt 0.331325 0.829448 +vt 0.302737 0.826185 +vt 0.331355 0.825966 +vt 0.386366 0.826227 +vt 0.398046 0.829783 +vt 0.386329 0.829722 +vt 0.357915 0.826055 +vt 0.357884 0.829634 +vt 0.175295 0.698725 +vt 0.171551 0.693345 +vt 0.713201 0.721362 +vt 0.713498 0.684307 +vt 0.672864 0.683977 +vt 0.666824 0.715921 +vt 0.177390 0.769698 +vt 0.028764 0.708208 +vt 0.124089 0.742320 +vt 0.113087 0.742395 +vt 0.669066 0.678666 +vt 0.327662 0.716011 +vt 0.296421 0.712823 +vt 0.331088 0.713489 +vt 0.331126 0.724012 +vt 0.299814 0.721363 +vt 0.296421 0.724239 +vt 0.300232 0.715750 +vt 0.296421 0.675999 +vt 0.299809 0.685664 +vt 0.296421 0.688736 +vt 0.327449 0.685745 +vt 0.331241 0.688518 +vt 0.327754 0.678912 +vt 0.331208 0.676084 +vt 0.300160 0.679045 +vt 0.296421 0.700860 +vt 0.300021 0.709721 +vt 0.296421 0.712663 +vt 0.327040 0.709681 +vt 0.331091 0.712270 +vt 0.327366 0.703877 +vt 0.331046 0.701249 +vt 0.300401 0.703801 +vt 0.133601 0.774424 +vt 0.133535 0.742255 +vt 0.113373 0.774562 +vt 0.095303 0.742516 +vt 0.105260 0.774617 +vt 0.095591 0.774683 +vt 0.327298 0.721488 +vt 0.080790 0.742616 +vt 0.018656 0.779631 +vt 0.018657 0.737143 +vt 0.124377 0.774487 +vt 0.088143 0.774734 +vt 0.081010 0.774783 +vt 0.454347 0.606253 +vt 0.714417 0.628363 +vt 0.714251 0.644710 +vt 0.004465 0.737143 +vt 0.004465 0.779631 +vt 0.108240 0.845907 +vt 0.108240 0.862419 +vt 0.178790 0.751868 +vt 0.323550 0.784426 +vt 0.179022 0.785426 +vt 0.191348 0.749370 +vt 0.323317 0.750868 +vt 0.769261 0.858696 +vt 0.782310 0.822466 +vt 0.775550 0.857709 +vt 0.765070 0.896975 +vt 0.774478 0.862345 +vt 0.785094 0.824277 +vt 0.778807 0.857057 +vt 0.763396 0.741000 +vt 0.115180 0.709168 +vt 0.118512 0.710698 +vt 0.672136 0.717557 +vt 0.792170 0.896520 +vt 0.792170 0.890231 +vt 0.837897 0.877654 +vt 0.176169 0.960371 +vt 0.160403 0.956475 +vt 0.165729 0.952744 +vt 0.176169 0.944787 +vt 0.160403 0.948683 +vt 0.176205 0.942410 +vt 0.186233 0.938703 +vt 0.186163 0.943395 +vt 0.672564 0.728855 +vt 0.653022 0.718281 +vt 0.173692 0.842175 +vt 0.142925 0.841159 +vt 0.095759 0.818259 +vt 0.080315 0.791229 +vt 0.340119 0.626273 +vt 0.241747 0.862419 +vt 0.777117 0.864362 +vt 0.768366 0.896571 +vt 0.241747 0.837350 +vt 0.243056 0.841159 +vt 0.328195 0.750550 +vt 0.461603 0.550382 +vt 0.191149 0.720633 +vt 0.315102 0.748513 +vt 0.752577 0.727783 +vt 0.769071 0.678888 +vt 0.768925 0.727831 +vt 0.008110 0.885244 +vt 0.062431 0.862744 +vt 0.084932 0.917065 +vt 0.168124 0.784477 +vt 0.167902 0.752483 +vt 0.321232 0.652866 +vt 0.309396 0.669478 +vt 0.168118 0.521260 +vt 0.167500 0.621048 +vt 0.167962 0.750574 +vt 0.167740 0.718579 +vt 0.167957 0.555163 +vt 0.168094 0.717172 +vt 0.647287 0.750954 +vt 0.647048 0.757238 +vt 0.647287 0.727296 +vt 0.653450 0.729580 +vt 0.645265 0.697427 +vt 0.651576 0.699247 +vt 0.640993 0.667804 +vt 0.647411 0.669143 +vt 0.640993 0.810447 +vt 0.645281 0.820212 +vt 0.639808 0.816623 +vt 0.650294 0.790237 +vt 0.645265 0.780824 +vt 0.752690 0.827705 +vt 0.769039 0.876649 +vt 0.752691 0.876650 +vt 0.752723 0.678839 +vt 0.188734 0.685530 +vt 0.309395 0.636254 +vt 0.301347 0.643518 +vt 0.302522 0.601098 +vt 0.196857 0.599641 +vt 0.189057 0.606877 +vt 0.004465 0.913646 +vt 0.018781 0.871200 +vt 0.018657 0.913687 +vt 0.672835 0.910963 +vt 0.713482 0.871066 +vt 0.714119 0.910665 +vt 0.714237 0.927013 +vt 0.240401 0.825822 +vt 0.199776 0.842354 +vt 0.173390 0.842473 +vt 0.088253 0.876301 +vt 0.080806 0.908398 +vt 0.081120 0.876231 +vt 0.095701 0.876374 +vt 0.029467 0.840968 +vt 0.105370 0.876468 +vt 0.296421 0.724400 +vt 0.327298 0.727151 +vt 0.299814 0.727276 +vt 0.095318 0.908540 +vt 0.105209 0.908637 +vt 0.331091 0.689289 +vt 0.327366 0.697682 +vt 0.327040 0.691878 +vt 0.113483 0.876547 +vt 0.124104 0.908821 +vt 0.113102 0.908714 +vt 0.331210 0.835232 +vt 0.327723 0.844838 +vt 0.327418 0.838005 +vt 0.133710 0.876745 +vt 0.172008 0.909288 +vt 0.133550 0.908914 +vt 0.300021 0.691838 +vt 0.296421 0.700699 +vt 0.331046 0.700311 +vt 0.296421 0.688896 +vt 0.300401 0.697758 +vt 0.299777 0.838086 +vt 0.296390 0.847752 +vt 0.331177 0.847666 +vt 0.296390 0.835015 +vt 0.300129 0.844706 +vt 0.327662 0.732627 +vt 0.296421 0.735815 +vt 0.300232 0.732889 +vt 0.331126 0.724626 +vt 0.331088 0.735149 +vt 0.669034 0.876576 +vt 0.672848 0.871276 +vt 0.171585 0.943745 +vt 0.171421 0.957935 +vt 0.028679 0.942652 +vt 0.177485 0.881600 +vt 0.177108 0.906811 +vt 0.666901 0.839315 +vt 0.672715 0.834220 +vt 0.672586 0.794298 +vt 0.713295 0.834010 +vt 0.175181 0.952567 +vt 0.331337 0.834362 +vt 0.357883 0.830819 +vt 0.357897 0.834398 +vt 0.386328 0.830866 +vt 0.398045 0.830860 +vt 0.386349 0.834361 +vt 0.302720 0.834007 +vt 0.331324 0.830879 +vt 0.177713 0.872915 +vt 0.172488 0.877123 +vt 0.296402 0.834340 +vt 0.302711 0.830933 +vt 0.175271 0.913925 +vt 0.174940 0.940932 +vt 0.668607 0.921090 +vt 0.668584 0.908276 +vt 0.404924 0.830418 +vt 0.398066 0.834337 +vt 0.666796 0.829248 +vt 0.666694 0.797957 +vt 0.240142 0.825662 +vt 0.029359 0.824084 +vt 0.459981 0.644320 +vt 0.938208 0.866046 +vt 0.778259 0.876294 +vt 0.778259 0.866046 +vt 0.938208 0.876294 +vt 0.778259 0.886541 +vt 0.938208 0.804562 +vt 0.778259 0.814809 +vt 0.778259 0.804562 +vt 0.938208 0.814809 +vt 0.778259 0.825057 +vt 0.938208 0.825057 +vt 0.778259 0.835304 +vt 0.938208 0.835304 +vt 0.778259 0.845551 +vt 0.947456 0.835304 +vt 0.938208 0.845551 +vt 0.778259 0.855799 +vt 0.938208 0.855799 +vt 0.769454 0.844635 +vt 0.769454 0.836221 +vt 0.890976 0.635115 +vt 0.876612 0.641065 +vt 0.870662 0.626701 +vt 0.769454 0.824140 +vt 0.769454 0.815726 +vt 0.769454 0.854882 +vt 0.769454 0.846468 +vt 0.769454 0.877211 +vt 0.769454 0.825973 +vt 0.769454 0.865130 +vt 0.769454 0.856716 +vt 0.769454 0.866963 +vt 0.769454 0.805478 +vt 0.947456 0.866046 +vt 0.949930 0.856652 +vt 0.949930 0.865193 +vt 0.947456 0.876294 +vt 0.947456 0.814809 +vt 0.947456 0.845551 +vt 0.947456 0.825057 +vt 0.947456 0.855799 +vt 0.947456 0.886541 +vt 0.938208 0.886541 +vt 0.949930 0.844698 +vt 0.949930 0.815663 +vt 0.949930 0.824203 +vt 0.949930 0.877147 +vt 0.949930 0.885688 +vt 0.949930 0.846405 +vt 0.949930 0.854946 +vt 0.949930 0.834450 +vt 0.949930 0.805415 +vt 0.949930 0.813956 +vt 0.949930 0.875440 +vt 0.953397 0.813214 +vt 0.875653 0.675513 +vt 0.870662 0.670523 +vt 0.887700 0.663466 +vt 0.949930 0.866900 +vt 0.953397 0.874699 +vt 0.953397 0.864451 +vt 0.953397 0.836899 +vt 0.953397 0.843956 +vt 0.953397 0.816404 +vt 0.953397 0.823462 +vt 0.953397 0.877889 +vt 0.953397 0.884946 +vt 0.953397 0.854204 +vt 0.953397 0.826652 +vt 0.953397 0.833709 +vt 0.594130 0.814809 +vt 0.754079 0.825057 +vt 0.594130 0.825057 +vt 0.754079 0.804562 +vt 0.754079 0.814809 +vt 0.594130 0.876294 +vt 0.754079 0.886541 +vt 0.594130 0.886541 +vt 0.594130 0.866046 +vt 0.754079 0.876294 +vt 0.594130 0.855799 +vt 0.754079 0.866046 +vt 0.594130 0.845552 +vt 0.754079 0.855799 +vt 0.763327 0.855799 +vt 0.594130 0.835304 +vt 0.754079 0.845552 +vt 0.754079 0.835304 +vt 0.585325 0.846468 +vt 0.870662 0.606202 +vt 0.885026 0.600252 +vt 0.890976 0.614616 +vt 0.585325 0.866963 +vt 0.585325 0.836221 +vt 0.585325 0.813892 +vt 0.594130 0.804562 +vt 0.585325 0.865130 +vt 0.585325 0.825973 +vt 0.585325 0.824140 +vt 0.585325 0.885625 +vt 0.765801 0.825910 +vt 0.763327 0.835304 +vt 0.763327 0.825057 +vt 0.763327 0.814809 +vt 0.763327 0.876294 +vt 0.763327 0.845551 +vt 0.763327 0.866046 +vt 0.763327 0.804562 +vt 0.765801 0.846405 +vt 0.765801 0.875440 +vt 0.765801 0.813956 +vt 0.765801 0.836158 +vt 0.765801 0.856652 +vt 0.765801 0.885688 +vt 0.763327 0.886541 +vt 0.765801 0.815663 +vt 0.769268 0.877889 +vt 0.765801 0.877147 +vt 0.887700 0.653299 +vt 0.882710 0.658289 +vt 0.875653 0.641251 +vt 0.769268 0.816404 +vt 0.765801 0.824203 +vt 0.769268 0.833709 +vt 0.765801 0.834451 +vt 0.769268 0.854204 +vt 0.765801 0.854946 +vt 0.765801 0.866900 +vt 0.769267 0.874699 +vt 0.765801 0.805415 +vt 0.769268 0.813214 +vt 0.769267 0.836899 +vt 0.765801 0.844698 +vt 0.769268 0.864451 +vt 0.765801 0.865193 +vt 0.683708 0.729337 +vt 0.660202 0.741608 +vt 0.680517 0.745595 +vt 0.711332 0.751643 +vt 0.728929 0.755097 +vt 0.714523 0.735385 +vt 0.666440 0.724518 +vt 0.669643 0.729946 +vt 0.652965 0.726115 +vt 0.695887 0.785671 +vt 0.701756 0.768726 +vt 0.803080 0.643478 +vt 0.790810 0.619972 +vt 0.786822 0.640287 +vt 0.780775 0.671102 +vt 0.777321 0.688699 +vt 0.797033 0.674292 +vt 0.802472 0.629412 +vt 0.806303 0.612735 +vt 0.807899 0.626210 +vt 0.746746 0.655656 +vt 0.763692 0.661526 +vt 0.604415 0.743826 +vt 0.580909 0.756097 +vt 0.601224 0.760084 +vt 0.632039 0.766132 +vt 0.649636 0.769586 +vt 0.635230 0.749874 +vt 0.587148 0.739007 +vt 0.590350 0.744435 +vt 0.573672 0.740604 +vt 0.616594 0.800160 +vt 0.622463 0.783215 +vt 0.706533 0.664337 +vt 0.690884 0.675212 +vt 0.702546 0.684653 +vt 0.712581 0.633523 +vt 0.690275 0.661147 +vt 0.716034 0.615926 +vt 0.696322 0.630332 +vt 0.685456 0.678415 +vt 0.687052 0.691890 +vt 0.746609 0.648968 +vt 0.729663 0.643099 +vt 0.759810 0.745595 +vt 0.748935 0.729946 +vt 0.739495 0.741608 +vt 0.790624 0.751643 +vt 0.763001 0.729337 +vt 0.808222 0.755097 +vt 0.793815 0.735385 +vt 0.732258 0.726115 +vt 0.745733 0.724518 +vt 0.775179 0.785671 +vt 0.781049 0.768726 +vt 0.785825 0.837412 +vt 0.770176 0.848286 +vt 0.781838 0.857727 +vt 0.791873 0.806597 +vt 0.769567 0.834221 +vt 0.779069 0.785809 +vt 0.775615 0.803406 +vt 0.764748 0.851489 +vt 0.766345 0.864964 +vt 0.825901 0.822042 +vt 0.808956 0.816173 +vt 0.683708 0.823119 +vt 0.660202 0.835390 +vt 0.680517 0.839377 +vt 0.714523 0.829166 +vt 0.711332 0.845425 +vt 0.732120 0.832620 +vt 0.669642 0.823728 +vt 0.652965 0.819896 +vt 0.666440 0.818300 +vt 0.695887 0.879453 +vt 0.701756 0.862507 +vt 0.604415 0.650045 +vt 0.580909 0.662315 +vt 0.601224 0.666303 +vt 0.635230 0.656092 +vt 0.632039 0.672350 +vt 0.652827 0.659546 +vt 0.587147 0.645226 +vt 0.590350 0.650653 +vt 0.573672 0.646822 +vt 0.616594 0.706379 +vt 0.622463 0.689433 +vt 0.500000 0.187500 +vt 0.801034 0.693998 +vt 0.822057 0.672975 +vt 0.851789 0.672975 +vt 0.872812 0.723730 +vt 0.851789 0.744753 +vt 0.894049 0.672975 +vt 0.923781 0.672975 +vt 0.944804 0.693998 +vt 0.923781 0.744753 +vt 0.873025 0.723730 +vt 0.500000 0.187500 +vt 0.729042 0.765990 +vt 0.750065 0.744967 +vt 0.779797 0.744967 +vt 0.800820 0.795722 +vt 0.779797 0.816745 +vt 0.822057 0.816958 +vt 0.851789 0.816958 +vt 0.872812 0.837982 +vt 0.851789 0.888737 +vt 0.801034 0.867713 +vt 0.500000 0.187500 +vt 0.657050 0.693998 +vt 0.678074 0.672975 +vt 0.707805 0.672975 +vt 0.728829 0.723730 +vt 0.707805 0.744753 +vt 0.678074 0.888950 +vt 0.707805 0.888950 +vt 0.728829 0.909974 +vt 0.707805 0.960729 +vt 0.657050 0.939705 +vt 0.500000 0.187500 +vt 0.729042 0.693998 +vt 0.750065 0.672975 +vt 0.779797 0.672975 +vt 0.800820 0.723730 +vt 0.779797 0.744753 +vt 0.678074 0.816958 +vt 0.707805 0.816958 +vt 0.728829 0.837982 +vt 0.707805 0.888737 +vt 0.657050 0.867713 +vt 0.500000 0.187500 +vt 0.657050 0.765990 +vt 0.678074 0.744967 +vt 0.707805 0.744967 +vt 0.728829 0.795722 +vt 0.707805 0.816745 +vt 0.822057 0.744967 +vt 0.851789 0.744967 +vt 0.872812 0.765990 +vt 0.851789 0.816745 +vt 0.801034 0.795722 +vt 0.806841 0.765292 +vt 0.710865 0.878741 +vt 0.721442 0.884848 +vt 0.717917 0.890954 +vt 0.806842 0.807599 +vt 0.806842 0.807743 +vt 0.596430 0.901555 +vt 0.608643 0.901555 +vt 0.608643 0.908607 +vt 0.806842 0.850049 +vt 0.812236 0.690671 +vt 0.707339 0.894624 +vt 0.719553 0.894624 +vt 0.719553 0.901676 +vt 0.812236 0.732978 +vt 0.797412 0.757947 +vt 0.797412 0.750895 +vt 0.803518 0.747369 +vt 0.707195 0.836290 +vt 0.797412 0.743699 +vt 0.797412 0.736648 +vt 0.803518 0.733122 +vt 0.692227 0.836290 +vt 0.778722 0.854590 +vt 0.778722 0.847539 +vt 0.784828 0.844013 +vt 0.722164 0.836290 +vt 0.596430 0.849086 +vt 0.613617 0.881319 +vt 0.805115 0.764122 +vt 0.870166 0.638468 +vt 0.609375 0.464844 +vt 0.782135 0.927723 +vt 0.799159 0.908557 +vt 0.782041 0.907319 +vt 0.669086 0.929943 +vt 0.785608 0.701921 +vt 0.808427 0.791102 +vt 0.870476 0.701735 +vt 0.667969 0.500000 +vt 0.821314 0.886728 +vt 0.732575 0.919401 +vt 0.783343 0.887966 +vt 0.873347 0.887966 +vt 0.890464 0.886728 +vt 0.767005 0.886728 +vt 0.785608 0.701735 +vt 0.803093 0.618341 +vt 0.808253 0.680551 +vt 0.791846 0.843869 +vt 0.691023 0.878741 +vt 0.696665 0.884383 +vt 0.696665 0.892362 +vt 0.683044 0.898004 +vt 0.677402 0.892362 +vt 0.778732 0.813478 +vt 0.778722 0.842943 +vt 0.778738 0.793834 +vt 0.778725 0.833121 +vt 0.275353 0.772973 +vt 0.271410 0.782495 +vt 0.265832 0.782495 +vt 0.261888 0.778551 +vt 0.226789 0.769029 +vt 0.261888 0.740142 +vt 0.265832 0.730620 +vt 0.271410 0.730620 +vt 0.598130 0.846904 +vt 0.507381 0.896473 +vt 0.652570 0.902783 +vt 0.715450 0.624156 +vt 0.760292 0.671614 +vt 0.713777 0.658057 +vt 0.740565 0.631120 +vt 0.808269 0.902783 +vt 0.652377 0.798594 +vt 0.764977 0.703371 +vt 0.594100 0.810061 +vt 0.232537 0.575325 +vt 0.094145 0.630642 +vt 0.329373 0.575325 +vt 0.423560 0.888745 +vt 0.405972 0.904028 +vt 0.356644 0.820388 +vt 0.363752 0.870173 +vt 0.375342 0.874430 +vt 0.334359 0.823674 +vt 0.397771 0.903092 +vt 0.670645 0.763117 +vt 0.740808 0.752231 +vt 0.716159 0.782535 +vt 0.693797 0.764744 +vt 0.662981 0.719872 +vt 0.725698 0.732079 +vt 0.797267 0.723741 +vt 0.681156 0.808819 +vt 0.721400 0.813663 +vt 0.699879 0.813663 +vt 0.634295 0.818571 +vt 0.652589 0.836146 +vt 0.800184 0.857266 +vt 0.796100 0.859624 +vt 0.792017 0.857266 +vt 0.695631 0.836146 +vt 0.609548 0.836146 +vt 0.674110 0.836146 +vt 0.717151 0.836146 +vt 0.631069 0.836146 +vt 0.652589 0.690671 +vt 0.704976 0.881099 +vt 0.704976 0.885814 +vt 0.700892 0.888171 +vt 0.695631 0.690671 +vt 0.609547 0.690672 +vt 0.674110 0.690672 +vt 0.717151 0.690671 +vt 0.631069 0.690672 +vt 0.509584 0.689778 +vt 0.557791 0.693952 +vt 0.507381 0.730443 +vt 0.569317 0.730645 +vt 0.511142 0.801081 +vt 0.562583 0.801877 +vt 0.525516 0.843657 +vt 0.508001 0.835164 +vt 0.563960 0.836904 +vt 0.545819 0.844334 +vt 0.725698 0.846202 +vt 0.756544 0.853835 +vt 0.738918 0.772924 +vt 0.595507 0.451954 +vt 0.152870 0.738355 +vt 0.198414 0.725726 +vt 0.234101 0.725726 +vt 0.234101 0.746330 +vt 0.152869 0.763611 +vt 0.152869 0.839383 +vt 0.187087 0.793585 +vt 0.708834 0.763115 +vt 0.194169 0.848187 +vt 0.194168 0.822930 +vt 0.722416 0.747359 +vt 0.731752 0.752749 +vt 0.731752 0.763529 +vt 0.713051 0.814389 +vt 0.713051 0.713361 +vt 0.713051 0.789132 +vt 0.708834 0.838886 +vt 0.713051 0.738618 +vt 0.293733 0.319111 +vt 0.311139 0.327987 +vt 0.353135 0.459421 +vt 0.231084 0.410102 +vt 0.101197 0.289824 +vt 0.215554 0.456392 +vt 0.114861 0.414917 +vt 0.172800 0.334169 +vt 0.669208 0.752748 +vt 0.710714 0.665515 +vt 0.276871 0.341239 +vt 0.306964 0.356975 +vt 0.636756 0.753622 +vt 0.638459 0.661605 +vt 0.771586 0.663320 +vt 0.724173 0.799559 +vt 0.432714 0.804124 +vt 0.431825 0.751766 +vt 0.234184 0.881274 +vt 0.252713 0.862744 +vt 0.278918 0.862744 +vt 0.297448 0.907478 +vt 0.278918 0.926008 +vt 0.395286 0.952106 +vt 0.397311 0.927660 +vt 0.686631 0.726489 +vt 0.683623 0.877696 +vt 0.665355 0.775475 +vt 0.374699 0.926265 +vt 0.665938 0.726460 +vt 0.661972 0.876500 +vt 0.663035 0.851856 +vt 0.663739 0.826191 +vt 0.376577 0.875013 +vt 0.377583 0.776933 +vt 0.358930 0.953121 +vt 0.340336 0.893430 +vt 0.351760 0.871860 +vt 0.353719 0.822524 +vt 0.353866 0.774995 +vt 0.349205 0.922863 +vt 0.336777 0.867502 +vt 0.342988 0.843472 +vt 0.344719 0.795495 +vt 0.336293 0.946137 +vt 0.339225 0.818615 +vt 0.338909 0.771406 +vt 0.333854 0.918244 +vt 0.328196 0.917091 +vt 0.950051 0.775398 +vt 0.961580 0.775398 +vt 0.969733 0.783551 +vt 0.961580 0.803233 +vt 0.950051 0.803233 +vt 0.329498 0.891185 +vt 0.332491 0.841468 +vt 0.334577 0.793824 +vt 0.324590 0.943720 +vt 0.331260 0.866431 +vt 0.333898 0.817689 +vt 0.333427 0.770610 +vt 0.428333 0.876211 +vt 0.427678 0.825096 +vt 0.426153 0.775763 +vt 0.427557 0.929224 +vt 0.674938 0.810489 +vt 0.674280 0.724130 +vt 0.677627 0.681085 +vt 0.677627 0.853626 +vt 0.681026 0.810813 +vt 0.661211 0.799677 +vt 0.680254 0.854172 +vt 0.653581 0.680736 +vt 0.841337 0.870850 +vt 0.661247 0.800573 +vt 0.680254 0.680736 +vt 0.661211 0.847722 +vt 0.661211 0.703589 +vt 0.651742 0.753558 +vt 0.681803 0.767454 +vt 0.661248 0.705534 +vt 0.661211 0.775655 +vt 0.651742 0.849647 +vt 0.670029 0.846430 +vt 0.661248 0.681775 +vt 0.670029 0.751391 +vt 0.661247 0.776813 +vt 0.651742 0.825625 +vt 0.651742 0.729536 +vt 0.593987 0.480180 +vt 0.552826 0.484886 +vt 0.557512 0.480200 +vt 0.564138 0.480200 +vt 0.568824 0.484886 +vt 0.568824 0.491512 +vt 0.548121 0.496197 +vt 0.541495 0.496197 +vt 0.536809 0.491512 +vt 0.536809 0.484886 +vt 0.541495 0.480200 +vt 0.684147 0.624156 +vt 0.635940 0.684460 +vt 0.697909 0.648617 +vt 0.684146 0.744957 +vt 0.635940 0.744957 +vt 0.635117 0.720265 +vt 0.635940 0.684653 +vt 0.697909 0.720496 +vt 0.684146 0.684653 +vt 0.569512 0.720496 +vt 0.742632 0.850835 +vt 0.716580 0.815022 +vt 0.652570 0.848686 +vt 0.668880 0.830898 +vt 0.782413 0.837305 +vt 0.646322 0.623963 +vt 0.518241 0.623753 +vt 0.518193 0.612882 +vt 0.806829 0.582470 +vt 0.825511 0.582762 +vt 0.825394 0.590214 +vt 0.984776 0.886695 +vt 0.527350 0.595580 +vt 0.656765 0.791330 +vt 0.655965 0.750883 +vt 0.693984 0.745150 +vt 0.518329 0.587736 +vt 0.648803 0.588527 +vt 0.825394 0.610216 +vt 0.803979 0.610554 +vt 0.812776 0.871221 +vt 0.879446 0.886695 +vt 0.756437 0.581414 +vt 0.777441 0.581837 +vt 0.695134 0.577691 +vt 0.723634 0.578627 +vt 0.777831 0.618563 +vt 0.756971 0.619001 +vt 0.724433 0.621751 +vt 0.696002 0.622669 +vt 0.141617 0.862419 +vt 0.762071 0.702308 +vt 0.790012 0.694547 +vt 0.783028 0.817762 +vt 0.746608 0.856516 +vt 0.133940 0.637238 +vt 0.123224 0.790247 +vt 0.042788 0.842175 +vt 0.040178 0.841159 +vt 0.787459 0.777364 +vt 0.774478 0.615905 +vt 0.761788 0.779680 +vt 0.750668 0.625780 +vt 0.754979 0.665383 +vt 0.754079 0.818764 +vt 0.087539 0.600697 +vt 0.698343 0.732673 +vt 0.089849 0.741519 +vt 0.094040 0.671020 +vt 0.092123 0.635735 +vt 0.718010 0.766806 +vt 0.712268 0.661154 +vt 0.714578 0.801976 +vt 0.692744 0.764244 +vt 0.837897 0.846209 +vt 0.866381 0.850656 +vt 0.870828 0.846209 +vt 0.877117 0.846209 +vt 0.881564 0.856945 +vt 0.870828 0.861392 +vt 0.326715 0.977214 +vt 0.313006 0.619968 +vt 0.167512 0.619681 +vt 0.632839 0.632527 +vt 0.184793 0.975638 +vt 0.160403 0.975751 +vt 0.653450 0.748670 +vt 0.451822 0.978419 +vt 0.290761 0.940252 +vt 0.317014 0.956210 +vt 0.312864 0.982029 +vt 0.075059 0.546759 +vt 0.640978 0.838811 +vt 0.105694 0.562724 +vt 0.087539 0.756638 +vt 0.094869 0.873199 +vt 0.122340 0.862744 +vt 0.085257 0.891980 +vt 0.148495 0.872490 +vt 0.148495 0.929187 +vt 0.094869 0.928478 +vt 0.008110 0.862419 +vt 0.113353 0.827443 +vt 0.135624 0.675685 +vt 0.685412 0.632333 +vt 0.791845 0.735376 +vt 0.201143 0.862744 +vt 0.227962 0.875106 +vt 0.233859 0.915690 +vt 0.227962 0.926016 +vt 0.201143 0.938378 +vt 0.160403 0.901027 +vt 0.666495 0.757277 +vt 0.314900 0.585956 +vt 0.668710 0.646965 +vt 0.175019 0.710358 +vt 0.178219 0.805544 +vt 0.175390 0.709847 +vt 0.713074 0.761258 +vt 0.667013 0.686876 +vt 0.177087 0.744486 +vt 0.028698 0.694017 +vt 0.088077 0.742566 +vt 0.105193 0.742449 +vt 0.669147 0.647559 +vt 0.029253 0.809894 +vt 0.758724 0.897483 +vt 0.837897 0.896520 +vt 0.165729 0.952414 +vt 0.075059 0.810576 +vt 0.275124 0.862419 +vt 0.275124 0.837350 +vt 0.314904 0.719775 +vt 0.062431 0.939566 +vt 0.030611 0.939566 +vt 0.008110 0.917065 +vt 0.030610 0.862744 +vt 0.084932 0.885244 +vt 0.167898 0.553254 +vt 0.167441 0.652321 +vt 0.167737 0.587159 +vt 0.167514 0.686056 +vt 0.647048 0.721012 +vt 0.644552 0.691178 +vt 0.639808 0.661627 +vt 0.644552 0.787072 +vt 0.769038 0.827705 +vt 0.188732 0.620207 +vt 0.004590 0.871159 +vt 0.672864 0.927311 +vt 0.029615 0.826778 +vt 0.240475 0.842169 +vt 0.088093 0.908469 +vt 0.124486 0.876655 +vt 0.669023 0.907683 +vt 0.028571 0.956843 +vt 0.667005 0.868360 +vt 0.713285 0.794113 +vt 0.175310 0.941445 +vt 0.178419 0.845756 +vt 0.296390 0.830418 +vt 0.404951 0.834854 +vt 0.199566 0.809010 +vt 0.240264 0.809314 +vt 0.885026 0.641065 +vt 0.870662 0.635115 +vt 0.876612 0.620751 +vt 0.885026 0.620751 +vt 0.890976 0.626701 +vt 0.769454 0.885625 +vt 0.769454 0.834387 +vt 0.769454 0.875377 +vt 0.769454 0.813893 +vt 0.947456 0.804562 +vt 0.949930 0.836157 +vt 0.949930 0.825910 +vt 0.953397 0.806157 +vt 0.870662 0.663466 +vt 0.875653 0.658475 +vt 0.882710 0.658475 +vt 0.887700 0.670523 +vt 0.882710 0.675513 +vt 0.953397 0.867641 +vt 0.953397 0.857394 +vt 0.953397 0.847147 +vt 0.585325 0.854882 +vt 0.876612 0.600252 +vt 0.890976 0.606202 +vt 0.885026 0.620565 +vt 0.876612 0.620565 +vt 0.870662 0.614616 +vt 0.585325 0.875377 +vt 0.585325 0.844635 +vt 0.585325 0.805478 +vt 0.585325 0.856716 +vt 0.585325 0.834387 +vt 0.585325 0.815726 +vt 0.585325 0.877211 +vt 0.769268 0.884946 +vt 0.875653 0.658289 +vt 0.870662 0.653299 +vt 0.870662 0.646241 +vt 0.882710 0.641251 +vt 0.887700 0.646241 +vt 0.769268 0.823462 +vt 0.769268 0.826652 +vt 0.769268 0.847147 +vt 0.769268 0.867642 +vt 0.769268 0.806157 +vt 0.769268 0.843956 +vt 0.769268 0.857394 +vt 0.732120 0.738839 +vt 0.694552 0.704387 +vt 0.682426 0.692028 +vt 0.652965 0.754472 +vt 0.793579 0.691890 +vt 0.828030 0.654322 +vt 0.840390 0.642196 +vt 0.777945 0.612735 +vt 0.652827 0.753327 +vt 0.615259 0.718876 +vt 0.603134 0.706516 +vt 0.573672 0.768961 +vt 0.699776 0.612735 +vt 0.665325 0.650303 +vt 0.652965 0.662428 +vt 0.715410 0.691890 +vt 0.811413 0.738839 +vt 0.773845 0.704387 +vt 0.761719 0.692028 +vt 0.732258 0.754472 +vt 0.795327 0.789000 +vt 0.744617 0.823377 +vt 0.732258 0.835503 +vt 0.794703 0.864964 +vt 0.728929 0.848878 +vt 0.694552 0.798169 +vt 0.682426 0.785809 +vt 0.652965 0.848254 +vt 0.649636 0.675804 +vt 0.615259 0.625094 +vt 0.603133 0.612735 +vt 0.573672 0.675180 +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.3827 0.9239 +vn 0.0000 0.3827 0.9239 +vn 0.0000 0.9239 0.3827 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.9239 -0.3827 +vn 0.0000 0.3827 -0.9239 +vn -1.0000 -0.0000 0.0000 +vn 0.4999 0.3505 -0.7920 +vn 0.4999 -0.3505 0.7920 +vn -0.5000 -0.3505 0.7919 +vn 0.0000 0.9079 0.4192 +vn -0.5000 0.3505 -0.7919 +vn 0.5000 0.3505 -0.7919 +vn 0.5000 -0.3505 0.7919 +vn -0.4999 -0.3505 0.7920 +vn -0.4999 0.3505 -0.7920 +vn 0.0000 0.5247 -0.8513 +vn 0.0000 -0.5247 0.8513 +vn -0.7911 0.5599 0.2463 +vn 0.0000 0.9154 0.4026 +vn 0.0000 0.0280 0.9996 +vn 0.0000 0.7558 -0.6548 +vn 0.7911 0.5599 0.2463 +vn 0.5000 0.3505 0.7919 +vn 0.5000 -0.3505 -0.7919 +vn -0.4999 -0.3505 -0.7920 +vn 0.0000 0.9079 -0.4192 +vn -0.4999 0.3505 0.7920 +vn 0.4999 0.3505 0.7920 +vn 0.5000 -0.3505 -0.7920 +vn -0.5000 -0.3505 -0.7919 +vn -0.5000 0.3505 0.7919 +vn 0.0000 0.5247 0.8513 +vn 0.0000 -0.5247 -0.8513 +vn -0.7911 0.5599 -0.2463 +vn 0.0000 0.9154 -0.4026 +vn 0.0000 0.0280 -0.9996 +vn 0.0000 0.7558 0.6548 +vn 0.7911 0.5599 -0.2463 +vn -0.7409 0.6716 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 -0.0000 +vn -0.7903 0.0000 -0.6128 +vn 0.0000 0.0000 1.0000 +vn -0.7903 0.0000 0.6127 +vn -0.9545 -0.2981 -0.0000 +vn -0.9546 0.2980 0.0000 +vn 0.9792 0.2029 0.0000 +vn 0.0101 0.0000 0.9999 +vn 0.8891 0.0000 -0.4576 +vn 0.8892 0.0000 0.4576 +vn 0.9792 -0.2030 -0.0000 +vn 0.0423 -0.9991 0.0000 +vn 0.0078 1.0000 0.0000 +vn 0.0101 0.0000 -0.9999 +vn -0.7409 -0.6716 0.0000 +vn -0.7903 0.0000 -0.6127 +vn -0.9546 -0.2980 0.0000 +vn 0.9792 0.2030 0.0000 +vn 0.8891 0.0000 0.4576 +vn 0.8892 0.0000 -0.4576 +vn -0.4347 -0.3446 0.8320 +vn -0.4347 0.8320 -0.3446 +vn -0.4347 -0.8320 -0.3446 +vn -0.4347 0.3446 0.8320 +vn -0.4347 0.3446 -0.8320 +vn -0.4347 -0.3446 -0.8320 +vn -0.4347 -0.8320 0.3446 +vn -0.4347 0.8320 0.3446 +vn 0.3827 0.9239 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.9239 -0.3827 -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.9239 0.3827 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.8937 -0.4486 0.0000 +vn 0.0000 -0.3562 -0.9344 +vn -0.1012 -0.3652 0.9254 +vn 0.4263 -0.2762 0.8614 +vn 0.8392 -0.5438 0.0000 +vn -0.2672 -0.9636 0.0000 +vn -0.9926 -0.1214 0.0000 +vn 0.0037 1.0000 0.0000 +vn -0.1012 -0.3652 -0.9254 +vn 0.4263 -0.2762 -0.8614 +vn 0.0000 -0.3562 0.9344 +vn -0.0013 -0.3562 -0.9344 +vn -0.5737 -0.2880 -0.7667 +vn -0.5737 -0.2880 0.7667 +vn 0.8524 -0.5228 0.0000 +vn 0.5062 -0.3105 0.8046 +vn 0.5044 -0.3120 0.8051 +vn -0.0013 -0.3562 0.9344 +vn -0.0037 -1.0000 0.0000 +vn 1.0000 -0.0009 -0.0023 +vn 1.0000 -0.0023 -0.0008 +vn 1.0000 -0.0093 -0.0016 +vn 1.0000 -0.0074 0.0000 +vn 1.0000 -0.0072 -0.0024 +vn 0.5062 -0.3105 -0.8046 +vn 0.0009 0.0023 1.0000 +vn -0.0019 0.0015 1.0000 +vn 0.0020 -0.0014 -1.0000 +vn 0.0020 0.0015 -1.0000 +vn -0.0480 -0.5123 0.8575 +vn 0.0000 0.5189 0.8549 +vn -0.0444 -0.5183 -0.8540 +vn 0.0000 0.5189 -0.8549 +vn 0.4606 -0.4605 0.7588 +vn 0.4606 0.4606 0.7588 +vn 0.4606 -0.4605 -0.7588 +vn 0.4606 0.4606 -0.7588 +vn -0.2276 -0.4268 0.8752 +vn -0.0458 0.4996 0.8650 +vn -0.2050 -0.5011 -0.8407 +vn -0.0470 0.5125 -0.8574 +vn -0.7527 -0.3520 0.5563 +vn -0.6638 0.5609 0.4947 +vn -0.7527 -0.3520 -0.5563 +vn -0.7340 0.3556 -0.5787 +vn -0.0854 -0.9963 -0.0000 +vn 0.0000 -0.5188 -0.8549 +vn 0.5189 0.0000 -0.8549 +vn 0.7071 -0.7071 -0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.5189 0.0000 0.8549 +vn 0.0000 -0.5188 0.8549 +vn -0.3786 -0.9256 -0.0000 +vn -0.0584 0.9983 0.0000 +vn -0.0883 -0.5113 0.8549 +vn -0.0883 -0.5113 -0.8549 +vn -0.9058 -0.4236 -0.0000 +vn -0.7633 0.0000 0.6461 +vn -0.7634 0.6451 0.0329 +vn -0.7633 0.0000 -0.6461 +vn -0.1702 -0.9854 -0.0000 +vn 0.0000 -0.2599 0.9656 +vn 0.0000 -0.2599 -0.9656 +vn -0.7300 -0.6835 -0.0000 +vn 0.7300 -0.6835 -0.0000 +vn 0.9483 -0.3175 0.0000 +vn -0.9482 0.3175 0.0075 +vn -0.0235 0.9997 0.0002 +vn -0.0233 0.9997 0.0014 +vn -0.0222 0.9998 0.0003 +vn 0.7875 0.6163 0.0000 +vn -0.7875 -0.6163 0.0062 +vn 0.8412 -0.5408 0.0000 +vn -0.5133 -0.8582 0.0037 +vn -0.5122 -0.8589 0.0040 +vn -0.5122 -0.8588 0.0053 +vn -0.0158 0.0101 -0.9998 +vn -0.0145 0.0101 -0.9998 +vn 0.0159 -0.0095 0.9998 +vn 0.0152 -0.0106 0.9998 +vn 0.0171 -0.0100 0.9998 +vn 0.0225 -0.9997 -0.0002 +vn 0.0238 -0.9997 -0.0002 +vn -0.8588 0.5123 0.0068 +vn -0.0128 0.0070 -0.9999 +vn -0.0116 0.0069 -0.9999 +vn 0.5115 0.8593 -0.0050 +vn 0.5122 0.8589 -0.0040 +vn 0.0115 -0.0056 0.9999 +vn 0.0116 -0.0069 0.9999 +vn 0.9772 -0.2122 0.0000 +vn 0.8316 0.5554 0.0000 +vn 0.9921 0.1251 0.0000 +vn -0.9251 -0.3798 0.0000 +vn 0.6540 -0.7565 0.0000 +vn -0.5188 -0.8549 0.0000 +vn -0.9946 -0.1041 0.0000 +vn 0.0004 1.0000 0.0000 +vn 0.8662 0.4997 0.0000 +vn 0.7825 0.4514 0.4290 +vn -0.8662 -0.4997 0.0000 +vn -0.0004 -1.0000 0.0000 +vn -0.8658 0.5003 0.0000 +vn 0.0003 0.9033 0.4290 +vn -0.7825 -0.4514 0.4290 +vn 0.7821 -0.4519 0.4290 +vn -0.7821 0.4519 0.4290 +vn -0.0003 -0.9033 0.4290 +vn 0.0003 0.9326 0.3608 +vn -0.8079 -0.4660 0.3608 +vn 0.8075 -0.4666 0.3608 +vn -0.8075 0.4666 0.3608 +vn -0.0003 -0.9326 0.3609 +vn 0.8079 0.4660 0.3608 +vn 0.8658 -0.5003 0.0000 +vn 0.7825 0.4514 -0.4290 +vn 0.0003 0.9033 -0.4290 +vn -0.7825 -0.4514 -0.4290 +vn 0.7821 -0.4519 -0.4290 +vn -0.7821 0.4519 -0.4290 +vn -0.0003 -0.9033 -0.4290 +vn 0.0003 0.9326 -0.3608 +vn -0.8079 -0.4660 -0.3608 +vn 0.8075 -0.4666 -0.3608 +vn -0.8075 0.4666 -0.3608 +vn -0.0003 -0.9326 -0.3608 +vn 0.8079 0.4660 -0.3608 +vn 0.4472 -0.4390 -0.7793 +vn 0.4472 0.4390 0.7793 +vn -0.4472 0.4390 0.7793 +vn -0.4472 -0.4390 -0.7793 +vn 0.4472 0.4554 -0.7698 +vn 0.4472 -0.4554 0.7698 +vn -0.4472 -0.4554 0.7698 +vn -0.4472 0.4554 -0.7698 +vn 0.4472 0.8944 0.0095 +vn 0.4472 -0.8944 -0.0095 +vn -0.4472 -0.8944 -0.0095 +vn -0.4472 0.8944 0.0095 +vn 0.8637 0.5040 -0.0008 +vn 0.8628 0.5055 0.0000 +vn 0.8618 0.5073 0.0000 +vn 0.8692 -0.4944 0.0000 +vn 0.0064 -1.0000 0.0000 +vn -0.8628 -0.5056 0.0000 +vn -0.8692 0.4944 0.0000 +vn -0.8700 0.4931 0.0013 +vn -0.9999 -0.0128 -0.0020 +vn -0.9999 -0.0129 0.0000 +vn -0.9999 -0.0119 0.0017 +vn -0.0052 1.0000 -0.0016 +vn -0.0063 1.0000 0.0020 +vn -0.0044 1.0000 0.0000 +vn -0.0106 0.9999 0.0000 +vn 0.0018 0.0009 -1.0000 +vn -0.0014 0.0014 -1.0000 +vn 0.9999 0.0130 0.0020 +vn 0.9999 0.0129 0.0000 +vn 0.9999 0.0129 -0.0020 +vn 0.0014 0.0015 1.0000 +vn 0.4867 -0.1145 -0.8660 +vn 0.9734 -0.2290 0.0000 +vn 0.4867 -0.1145 0.8660 +vn -0.4867 0.1145 0.8660 +vn 0.9982 0.0594 0.0000 +vn -0.9734 0.2290 0.0000 +vn -0.4867 0.1145 -0.8660 +vn 0.4037 -0.3811 0.8318 +vn 0.2290 0.9734 0.0000 +vn -0.8670 0.4982 0.0000 +vn 0.5319 0.1691 -0.8297 +vn 0.5319 0.1691 0.8297 +vn -0.4007 0.3885 -0.8297 +vn -0.4007 0.3885 0.8297 +vn -0.2290 -0.9734 0.0000 +vn -0.5312 -0.1612 -0.8317 +vn -0.5312 -0.1612 0.8318 +vn 0.8711 -0.4911 0.0000 +vn -0.9987 -0.0512 0.0000 +vn 0.4037 -0.3811 -0.8318 +vn -0.5339 -0.1952 -0.8227 +vn -0.5339 -0.1952 0.8227 +vn 0.8533 -0.5215 0.0000 +vn -0.9963 -0.0864 0.0000 +vn 0.3909 -0.4127 0.8227 +vn 0.3909 -0.4127 -0.8227 +vn -0.7037 0.7104 -0.0137 +vn -0.0946 -0.0018 -0.9955 +vn 0.1755 0.9845 0.0000 +vn -0.5947 0.1299 0.7934 +vn -0.2277 -0.9737 0.0000 +vn 0.9224 0.3863 0.0000 +vn -0.3526 0.9358 0.0000 +vn 0.1465 0.0029 -0.9892 +vn 0.1465 0.0029 0.9892 +vn -0.1755 -0.9845 0.0000 +vn 0.7339 0.0143 0.6791 +vn 0.4147 0.0081 -0.9099 +vn 0.4147 0.0081 0.9099 +vn 0.3526 -0.9358 0.0000 +vn 0.9998 0.0195 0.0000 +vn 0.8889 -0.4581 0.0000 +vn -0.5700 0.8216 0.0000 +vn 0.7339 0.0143 -0.6791 +vn -0.2763 0.0326 -0.9605 +vn -0.7114 -0.7027 -0.0101 +vn -0.3230 0.0437 -0.9454 +vn -0.3328 0.0443 0.9420 +vn -0.9513 0.3072 -0.0249 +vn -0.6278 0.0742 0.7748 +vn -0.8793 0.4759 -0.0195 +vn -0.9921 -0.1238 -0.0203 +vn -0.9819 0.1873 -0.0273 +vn -0.9993 0.0260 -0.0253 +vn -0.5866 0.0662 -0.8072 +vn -0.4667 0.0527 0.8828 +vn 0.5257 0.8507 0.0000 +vn 0.4767 0.8791 0.0000 +vn 0.8418 0.5398 0.0000 +vn -0.0946 -0.0018 0.9955 +vn 0.0462 -0.0068 0.9989 +vn -0.0453 0.0051 0.9990 +vn -0.4274 0.1109 -0.8972 +vn -0.0453 0.0051 -0.9990 +vn 0.0462 -0.0068 -0.9989 +vn -0.6173 0.1367 -0.7748 +vn -0.5082 0.1382 -0.8501 +vn -0.6709 -0.7415 -0.0093 +vn 0.8774 0.4798 0.0000 +vn 0.9846 -0.1746 0.0000 +vn -0.4274 0.1109 0.8972 +vn -0.5082 0.1382 0.8501 +vn -0.5609 0.0000 0.8279 +vn 0.3824 -0.2113 -0.8995 +vn -0.0010 -0.0003 1.0000 +vn 0.3920 0.0000 -0.9200 +vn 0.0003 1.0000 -0.0010 +vn 0.0005 1.0000 -0.0009 +vn 0.3904 -0.0867 -0.9166 +vn 0.3902 -0.0862 -0.9167 +vn -0.5529 0.0976 0.8275 +vn 0.3824 -0.2113 0.8995 +vn -0.5529 0.0976 -0.8275 +vn 0.0004 -0.0004 1.0000 +vn -0.0005 -0.0002 -1.0000 +vn -0.5505 0.1181 0.8264 +vn 0.0003 0.0005 1.0000 +vn -0.6763 -0.7366 0.0000 +vn -0.5474 0.1418 -0.8247 +vn 0.3920 0.0000 0.9200 +vn 0.3917 -0.0010 0.9201 +vn -0.5609 -0.0000 -0.8279 +vn -0.9915 0.1302 0.0000 +vn -0.9778 0.2098 0.0000 +vn -0.9848 0.1738 0.0000 +vn -0.4100 0.9121 0.0000 +vn -0.5554 0.0729 0.8284 +vn 0.0262 -0.9997 0.0000 +vn 0.0797 0.9968 0.0000 +vn -0.5554 0.0729 -0.8284 +vn -0.5505 0.1181 -0.8264 +vn -0.1957 0.4353 0.8788 +vn 0.8752 -0.4837 -0.0000 +vn 0.9778 -0.2098 0.0000 +vn 0.9779 -0.2091 -0.0001 +vn 0.9765 -0.2154 0.0006 +vn 0.9765 -0.2157 0.0000 +vn 0.9765 -0.2157 0.0006 +vn 0.9969 0.0785 0.0000 +vn 0.3899 0.1121 0.9140 +vn 0.3903 -0.0837 0.9169 +vn 0.3906 -0.0843 0.9167 +vn -0.0053 -1.0000 0.0000 +vn 0.4679 0.0369 -0.8830 +vn 0.3903 -0.0837 -0.9169 +vn 0.3897 -0.0838 -0.9171 +vn 0.3903 -0.0832 -0.9169 +vn 0.0050 1.0000 -0.0007 +vn 0.0043 1.0000 0.0000 +vn 0.0035 1.0000 -0.0007 +vn 0.3898 -0.0859 0.9169 +vn 0.3902 -0.0862 0.9167 +vn 0.3906 -0.0858 0.9165 +vn 0.0000 -0.3875 -0.9219 +vn 0.0000 0.3875 -0.9219 +vn -0.9726 -0.2149 -0.0890 +vn 0.9560 0.1123 0.2711 +vn -0.9726 0.0890 0.2149 +vn -0.9726 0.0890 -0.2149 +vn -0.9726 -0.0890 -0.2149 +vn -0.9726 -0.2149 0.0890 +vn -0.9726 0.2149 0.0890 +vn -0.9726 -0.0890 0.2149 +vn -0.9726 0.2149 -0.0890 +vn 0.9560 -0.2711 0.1123 +vn 0.9560 -0.1123 -0.2711 +vn 0.9560 0.1123 -0.2711 +vn 0.9560 0.2711 0.1123 +vn 0.9560 -0.1123 0.2711 +vn 0.9560 -0.2711 -0.1123 +vn 0.9560 0.2711 -0.1123 +vn -0.9615 0.2539 0.1052 +vn 0.9469 -0.1230 -0.2970 +vn -0.9615 -0.1052 0.2539 +vn -0.9615 -0.2539 -0.1052 +vn -0.9615 0.2539 -0.1052 +vn -0.9615 0.1052 0.2539 +vn -0.9615 -0.2539 0.1052 +vn -0.9615 -0.1052 -0.2539 +vn -0.9615 0.1052 -0.2539 +vn 0.9469 0.1230 -0.2970 +vn 0.9469 0.2970 0.1230 +vn 0.9469 -0.1230 0.2970 +vn 0.9469 -0.2970 -0.1230 +vn 0.9469 0.2970 -0.1230 +vn 0.9469 0.1230 0.2970 +vn 0.9469 -0.2970 0.1230 +vn -0.4917 -0.8045 -0.3332 +vn -0.7567 0.2502 -0.6040 +vn -0.4917 0.8045 -0.3332 +vn -0.4917 0.3332 0.8045 +vn -0.4917 -0.8045 0.3332 +vn -0.4917 -0.3332 -0.8045 +vn -0.4917 0.3332 -0.8045 +vn -0.4917 0.8045 0.3332 +vn -0.4917 -0.3332 0.8045 +vn -0.3625 0.8610 -0.3567 +vn -0.7567 0.6040 0.2502 +vn -0.7567 -0.2502 0.6040 +vn -0.7567 -0.6040 -0.2502 +vn -0.7567 0.6040 -0.2502 +vn -0.7567 0.2502 0.6040 +vn -0.7567 -0.6040 0.2502 +vn -0.7567 -0.2502 -0.6040 +vn -0.3625 0.3567 0.8610 +vn -0.3625 -0.8610 0.3567 +vn -0.3625 -0.3567 -0.8610 +vn -0.3625 0.3567 -0.8610 +vn -0.3625 0.8610 0.3567 +vn -0.3625 -0.3567 0.8610 +vn -0.3625 -0.8610 -0.3567 +vn -0.0059 0.3827 -0.9239 +vn -0.0059 0.3827 0.9239 +vn -0.0059 -0.3827 0.9239 +vn -0.0059 -0.3827 -0.9239 +vn 0.0341 0.3825 -0.9233 +vn 0.0341 0.9233 -0.3825 +vn 0.0341 0.9233 0.3825 +vn 0.0341 0.3825 0.9233 +vn 0.0341 -0.3825 0.9233 +vn 0.0341 -0.9233 0.3825 +vn 0.0341 -0.9233 -0.3825 +vn 0.0341 -0.3825 -0.9233 +vn -0.9966 -0.0761 -0.0315 +vn 0.9966 -0.0762 0.0316 +vn 0.0000 -0.9259 -0.3779 +vn 0.9919 0.1173 0.0486 +vn 0.9966 -0.0316 -0.0762 +vn 0.0000 -0.9259 0.3779 +vn -0.9966 0.0315 -0.0761 +vn -0.9907 -0.1260 0.0522 +vn -0.9966 0.0761 0.0315 +vn 0.9966 0.0762 -0.0315 +vn 0.9919 -0.1173 0.0486 +vn -0.9907 -0.0522 -0.1260 +vn 0.0000 0.9259 0.3779 +vn 0.9919 -0.0486 -0.1173 +vn 0.9966 0.0316 0.0762 +vn 0.0000 0.9259 -0.3779 +vn -0.9966 -0.0761 0.0315 +vn -0.9907 0.1259 -0.0522 +vn 0.9919 0.1173 -0.0486 +vn -0.9907 0.0522 0.1260 +vn -0.9907 0.1259 0.0522 +vn -0.9907 0.0522 -0.1259 +vn 0.9966 0.0762 0.0316 +vn -0.9907 -0.1259 -0.0522 +vn 0.9966 0.0316 -0.0762 +vn -0.9907 -0.0522 0.1259 +vn 0.9966 -0.0762 -0.0316 +vn 0.9966 -0.0316 0.0762 +vn 0.9919 0.0486 -0.1173 +vn -0.9966 -0.0316 0.0762 +vn 0.9919 -0.1173 -0.0486 +vn 0.9919 -0.0486 0.1173 +vn -0.9966 0.0315 0.0761 +vn -0.9966 0.0762 -0.0315 +vn 0.9919 0.0486 0.1174 +vn -0.9966 -0.0315 -0.0761 +vn -0.0802 0.9968 0.0000 +vn 0.2854 0.9584 0.0000 +vn 0.4890 0.0000 0.8723 +vn 0.2854 -0.9584 0.0000 +vn -0.0802 -0.9968 0.0000 +vn -0.3634 0.0000 0.9316 +vn 0.4890 0.0000 -0.8723 +vn -0.3635 0.0000 -0.9316 +vn -0.1189 -0.0040 0.9929 +vn 0.2846 0.0710 0.9560 +vn 0.9703 0.2419 0.0000 +vn 0.3229 -0.9464 0.0000 +vn 0.1401 -0.0562 -0.9885 +vn -0.9994 -0.0338 -0.0000 +vn -0.0801 0.0322 -0.9963 +vn -0.2273 -0.9738 0.0000 +vn 0.0000 0.3632 0.9317 +vn 0.0000 0.0717 0.9974 +vn -0.2430 0.4146 0.8769 +vn 0.0167 -0.9999 0.0000 +vn -0.2238 0.2670 0.9374 +vn 0.0000 0.3632 -0.9317 +vn 0.0000 0.0717 -0.9974 +vn -0.1148 0.0713 0.9908 +vn -0.4819 -0.8762 0.0000 +vn -0.2445 0.9696 0.0000 +vn 0.5997 0.8003 0.0000 +vn 0.2631 0.3512 0.8986 +vn 0.9589 0.2839 0.0000 +vn -0.8655 0.5010 0.0000 +vn -0.0911 0.3614 -0.9279 +vn 0.1538 0.5175 -0.8417 +vn 0.0000 0.4274 0.9040 +vn -0.6183 0.7860 -0.0009 +vn -0.0001 0.4296 -0.9030 +vn 0.7944 -0.6074 0.0000 +vn -0.7944 -0.6074 0.0000 +vn 0.9838 -0.1658 0.0687 +vn -0.8418 0.2066 0.4987 +vn -0.9846 -0.0670 0.1617 +vn -0.9846 -0.0670 -0.1617 +vn 0.9838 0.1658 -0.0687 +vn 0.9838 -0.1658 -0.0687 +vn 0.4296 0.3456 0.8343 +vn 0.4296 -0.3456 -0.8343 +vn 0.4296 0.3456 -0.8343 +vn 0.4296 0.8343 0.3456 +vn 0.4296 -0.3456 0.8343 +vn -0.0913 0.8947 0.4372 +vn 0.8293 -0.2138 0.5162 +vn 0.8293 0.5162 -0.2138 +vn 0.0464 -0.8899 0.4538 +vn 0.8293 0.2138 -0.5162 +vn 0.8293 -0.2138 -0.5162 +vn 0.8293 0.5162 0.2138 +vn -0.8418 -0.2066 0.4987 +vn -0.0166 -0.3826 -0.9238 +vn -0.0166 0.3826 -0.9238 +vn -0.0166 0.3826 0.9238 +vn -0.0165 -0.9238 -0.3826 +vn 0.1008 -0.2962 -0.9498 +vn 0.0000 -0.3828 -0.9239 +vn -0.8680 0.4588 0.1900 +vn -0.8680 -0.1900 -0.4588 +vn 0.8623 0.1938 -0.4678 +vn -0.8680 -0.4588 -0.1900 +vn 0.8623 0.1938 0.4678 +vn 0.9838 0.0687 0.1658 +vn -0.9846 -0.1617 -0.0670 +vn 0.9838 -0.0687 -0.1658 +vn 0.9838 -0.0687 0.1658 +vn 0.9838 0.0687 -0.1658 +vn -0.9846 0.0670 0.1617 +vn 0.0915 0.3811 0.9200 +vn 0.0915 0.3811 -0.9200 +vn 0.0915 -0.3811 -0.9200 +vn -0.8680 0.1900 -0.4588 +vn -0.8680 0.1900 0.4588 +vn 0.8623 0.4678 -0.1938 +vn 0.8623 -0.1938 0.4678 +vn 0.8623 -0.1938 -0.4678 +vn 0.2182 0.3735 0.9016 +vn -0.0497 0.9227 -0.3822 +vn 0.2182 -0.3735 -0.9016 +vn 0.2182 -0.9016 0.3735 +vn 0.2182 -0.9016 -0.3735 +vn 0.2182 -0.3735 0.9016 +vn -0.0497 0.9227 0.3822 +vn -0.0497 0.3822 -0.9227 +vn -0.0497 -0.3822 -0.9227 +vn -0.0497 -0.3822 0.9227 +vn -0.0497 0.3822 0.9227 +vn 0.3223 -0.8746 -0.3623 +vn 0.3223 0.3623 0.8746 +vn 0.3223 0.3623 -0.8746 +vn 0.3223 0.8746 -0.3623 +vn 0.3223 -0.3623 -0.8746 +vn 0.0000 0.9649 -0.2626 +vn -0.1533 0.3782 0.9130 +vn 0.8293 0.2138 0.5162 +vn -0.1218 0.9170 -0.3798 +vn 0.7075 0.6639 -0.2423 +vn 0.0068 -1.0000 0.0000 +vn 0.6287 0.0000 0.7776 +vn -0.0166 0.9238 -0.3826 +vn -0.8680 0.4588 -0.1900 +vn -0.6679 0.7442 0.0000 +vn -0.6040 -0.2625 -0.7525 +vn -0.6040 -0.2625 0.7525 +vn -0.0187 0.9998 0.0000 +vn -0.0453 -0.3552 -0.9337 +vn 0.0951 -0.3032 -0.9482 +vn 0.1008 -0.2962 0.9498 +vn 0.0915 -0.9200 -0.3811 +vn 0.2182 0.9016 0.3735 +vn 0.3223 -0.3623 0.8746 +vn 0.0951 -0.3032 0.9482 +vn 0.9838 0.1658 0.0687 +vn 0.4296 -0.8343 -0.3456 +vn -0.0165 -0.3826 0.9238 +vn -0.0165 -0.9238 0.3826 +vn 0.8623 -0.4678 -0.1938 +vn 0.2182 0.3735 -0.9016 +vn 0.6968 0.6616 0.2771 +vn -0.9996 -0.0199 0.0200 +vn 0.0915 0.9200 -0.3811 +vn -0.0453 -0.3552 0.9337 +vn -0.8418 -0.4987 0.2066 +vn -0.0497 -0.9227 0.3822 +vn -0.8418 0.4987 0.2066 +vn 0.3746 -0.9272 0.0000 +vn 0.0000 -0.8730 -0.4877 +vn 0.0000 -0.4721 0.8815 +vn 0.0120 -0.3847 0.9230 +vn 0.3071 -0.7601 0.5727 +vn 0.1144 -0.4166 0.9019 +vn 0.1144 -0.4166 -0.9019 +vn -0.9846 0.1617 0.0670 +vn 0.4296 -0.8343 0.3456 +vn 0.0915 0.9200 0.3811 +vn 0.4296 0.8343 -0.3456 +vn 0.8623 -0.4678 0.1938 +vn -0.0497 -0.9227 -0.3822 +vn 0.3223 0.8746 0.3623 +vn 0.8293 -0.5162 -0.2138 +vn -0.9846 -0.1617 0.0670 +vn 0.9997 -0.0244 0.0000 +vn -0.0476 -0.3025 -0.9520 +vn 0.0120 -0.3847 -0.9230 +vn 0.0000 -0.9012 -0.4335 +vn 0.0000 -0.8684 0.4959 +vn -0.0054 -0.3046 0.9525 +vn -0.0054 -0.3046 -0.9525 +vn -0.0047 0.8931 0.4497 +vn -0.0882 0.3033 0.9488 +vn -0.0827 0.3007 -0.9501 +vn 0.0271 0.9095 0.4149 +vn 0.1157 0.9174 -0.3807 +vn 0.0881 0.3478 -0.9334 +vn 0.0018 0.3018 -0.9534 +vn -0.0090 0.9031 -0.4294 +vn -0.0160 0.9203 0.3908 +vn -0.0214 0.3851 0.9226 +vn -0.9952 -0.0952 0.0245 +vn 0.0000 0.5505 -0.8349 +vn -0.9938 0.1009 -0.0477 +vn 0.9884 0.1326 -0.0741 +vn 0.0000 -0.7129 -0.7012 +vn 0.9976 -0.0694 0.0010 +vn 0.0049 -0.9714 0.2372 +vn -0.0045 0.8583 -0.5131 +vn 0.0014 -0.3780 -0.9258 +vn 0.9905 0.1284 -0.0490 +vn 0.0049 -0.9716 0.2367 +vn -0.9957 -0.0410 -0.0837 +vn 0.9959 -0.0250 -0.0874 +vn -0.0046 0.8581 -0.5135 +vn -0.9919 0.1050 -0.0715 +vn 0.9172 -0.1506 -0.3689 +vn 0.0046 -0.9528 -0.3036 +vn -0.0031 0.5229 -0.8524 +vn 0.0017 -0.3780 -0.9258 +vn -0.0028 0.4716 -0.8818 +vn -0.8491 -0.1997 -0.4891 +vn 0.8460 -0.1961 -0.4958 +vn 0.0018 -0.3780 -0.9258 +vn -0.0026 0.4282 -0.9037 +vn -0.8941 -0.1750 -0.4123 +vn 0.8917 -0.1711 -0.4191 +vn 0.0045 -0.9351 -0.3544 +vn 0.0044 -0.9187 -0.3950 +vn -0.9196 -0.1544 -0.3613 +vn -0.5507 -0.3194 -0.7712 +vn 0.0050 -0.9715 0.2371 +vn 0.0000 -0.9012 0.4335 +vn 0.0000 0.8607 -0.5091 +vn 0.0015 0.8611 -0.5085 +vn -0.8418 0.2066 -0.4987 +vn -0.8418 -0.2066 -0.4987 +vn -0.8680 -0.1900 0.4588 +vn -0.8680 -0.4588 0.1900 +vn -0.9846 0.0670 -0.1617 +vn 0.0915 -0.3811 0.9200 +vn 0.8623 0.4678 0.1938 +vn 0.3223 -0.8746 0.3623 +vn 0.6287 0.0000 -0.7776 +vn -0.0165 0.9238 0.3826 +vn 0.0915 -0.9200 0.3811 +vn 0.2182 0.9016 -0.3735 +vn 0.1948 -0.9808 0.0000 +vn -0.8418 -0.4987 -0.2066 +vn -0.8418 0.4987 -0.2066 +vn -0.9846 0.1617 -0.0670 +vn 0.8293 -0.5162 0.2138 +vn -0.1409 0.9049 -0.4015 +vn 0.1561 0.3805 0.9115 +vn 1.0000 0.0017 -0.0001 +vn -0.2273 -0.8997 -0.3727 +vn -0.0913 0.8947 -0.4372 +vn 0.0864 0.8928 -0.4421 +vn -0.2272 -0.8997 0.3727 +vn -0.1218 0.9170 0.3798 +vn -0.1971 -0.3752 -0.9058 +vn -0.1970 -0.3752 0.9058 +vn -0.1533 0.3782 -0.9130 +vn 1.0000 0.0017 0.0004 +vn 1.0000 -0.0017 -0.0001 +vn 1.0000 0.0017 -0.0093 +vn 0.9999 0.0008 -0.0108 +vn 0.0864 0.8928 0.4421 +vn 0.0000 0.9649 0.2626 +vn 0.0000 0.8607 0.5091 +vn -0.0016 0.8610 0.5087 +vn 0.0005 0.9245 0.3812 +vn 0.0014 -0.3780 0.9258 +vn 0.0050 -0.9664 -0.2571 +vn -0.5507 -0.3194 0.7712 +vn -0.9140 -0.1581 0.3736 +vn 0.0053 -0.9195 0.3932 +vn 0.0057 -0.9362 0.3516 +vn 0.0017 -0.3780 0.9258 +vn 0.8917 -0.1711 0.4191 +vn -0.8883 -0.1782 0.4232 +vn -0.0032 0.4293 0.9031 +vn 0.0018 -0.3780 0.9258 +vn 0.8460 -0.1961 0.4958 +vn -0.8491 -0.1997 0.4891 +vn -0.0036 0.4732 0.8809 +vn -0.0038 0.5242 0.8516 +vn 0.0056 -0.9534 0.3016 +vn 0.9172 -0.1506 0.3689 +vn -0.9919 0.1050 0.0715 +vn -0.0046 0.8581 0.5135 +vn 0.9959 -0.0250 0.0874 +vn -0.9957 -0.0410 0.0837 +vn 0.0049 -0.9716 -0.2367 +vn 0.9905 0.1284 0.0490 +vn -0.0045 0.8583 0.5131 +vn 0.0049 -0.9714 -0.2372 +vn 0.9976 -0.0694 -0.0010 +vn 0.0000 -0.7129 0.7012 +vn 0.9884 0.1326 0.0741 +vn -0.9938 0.1009 0.0476 +vn 0.0000 0.5505 0.8349 +vn -0.9952 -0.0952 -0.0245 +vn 1.0000 -0.0030 0.0052 +vn 1.0000 -0.0017 0.0040 +vn 1.0000 -0.0008 0.0055 +vn 0.0464 -0.8899 -0.4538 +vn 0.0000 -0.8684 -0.4959 +vn -0.0476 -0.3025 0.9520 +vn 0.0000 -0.4721 -0.8815 +vn -0.2513 0.8942 0.3704 +vn -0.2513 -0.3704 0.8942 +vn -0.2513 0.8942 -0.3704 +vn -0.2513 -0.8942 -0.3704 +vn -0.2513 0.3704 0.8942 +vn -0.2513 0.3704 -0.8942 +vn -0.2513 -0.3704 -0.8942 +vn -0.2513 -0.8942 0.3704 +vn 0.8327 0.2119 -0.5115 +vn 0.8327 0.5115 0.2119 +vn 0.8327 -0.2119 0.5115 +vn 0.8327 -0.5115 -0.2119 +vn 0.8328 0.5115 -0.2119 +vn 0.8327 0.2119 0.5115 +vn 0.8327 -0.5115 0.2119 +vn 0.8327 -0.2119 -0.5115 +vn 0.5165 -0.7911 0.3277 +vn 0.5165 -0.3277 -0.7911 +vn 0.5164 0.3277 -0.7911 +vn 0.5165 0.7911 0.3277 +vn 0.5165 -0.3277 0.7911 +vn 0.5164 -0.7911 -0.3277 +vn 0.5164 0.7911 -0.3277 +vn 0.5165 0.3277 0.7911 +vn 0.8327 0.5115 -0.2119 +vn 0.5165 -0.7911 -0.3277 +vn 0.5165 0.3277 -0.7911 +vn -0.9087 0.4175 0.0000 +vn -0.4846 0.8748 0.0000 +vn 0.5399 0.8417 0.0000 +vn -0.6812 -0.7321 0.0000 +vn 0.9972 0.0747 0.0000 +vn -0.9087 -0.4175 0.0000 +vn -0.4846 -0.8748 0.0000 +vn 0.5399 -0.8417 0.0000 +vn -0.6812 0.7321 0.0000 +vn 0.9972 -0.0747 0.0000 +vn -0.9087 0.0000 0.4175 +vn -0.4846 0.0000 0.8748 +vn 0.5399 0.0000 0.8417 +vn -0.6812 -0.0000 -0.7321 +vn 0.9972 0.0000 0.0747 +vn -0.9087 0.0000 -0.4175 +vn -0.4846 0.0000 -0.8748 +vn 0.5399 0.0000 -0.8417 +vn -0.6812 -0.0000 0.7321 +vn 0.9972 0.0000 -0.0747 +vn -0.9087 0.2952 0.2952 +vn -0.4846 0.6185 0.6185 +vn 0.5399 0.5952 0.5952 +vn -0.6812 -0.5177 -0.5177 +vn 0.9972 0.0528 0.0528 +vn 0.0000 -0.7071 0.7071 +vn -0.9087 -0.2952 -0.2952 +vn -0.4846 -0.6185 -0.6185 +vn 0.5399 -0.5952 -0.5952 +vn -0.6812 0.5177 0.5177 +vn 0.9972 -0.0528 -0.0528 +vn 0.0000 0.7071 -0.7071 +vn -0.9087 -0.2952 0.2952 +vn -0.4846 -0.6185 0.6185 +vn 0.5399 -0.5952 0.5952 +vn -0.6812 0.5177 -0.5177 +vn 0.9972 -0.0528 0.0528 +vn 0.0000 -0.7071 -0.7071 +vn -0.9087 0.2952 -0.2952 +vn -0.4846 0.6185 -0.6185 +vn 0.5399 0.5952 -0.5952 +vn -0.6812 -0.5177 0.5177 +vn 0.9972 0.0528 -0.0528 +vn -0.0000 0.7071 0.7071 +vn -0.5000 -0.3505 0.7920 +vn -0.5000 -0.3505 -0.7920 +vn 0.4999 -0.3505 -0.7920 +vn 0.0000 0.7558 0.6549 +vn -0.9545 0.2981 0.0000 +vn 0.9792 -0.2029 -0.0000 +vn 1.0000 0.0012 -0.0021 +vn 1.0000 -0.0099 0.0001 +vn 0.5057 -0.3083 -0.8057 +vn -0.0010 0.0022 1.0000 +vn -0.0024 -0.0002 1.0000 +vn 0.0024 0.0001 -1.0000 +vn 0.0006 0.0024 -1.0000 +vn -0.0444 -0.5183 0.8540 +vn -0.0480 -0.5123 -0.8575 +vn -0.2050 -0.5011 0.8407 +vn -0.0303 0.5186 0.8545 +vn -0.2276 -0.4268 -0.8752 +vn -0.0436 0.5184 -0.8541 +vn -0.0837 0.9965 -0.0043 +vn -0.8999 0.4360 0.0000 +vn -0.0223 0.9998 0.0006 +vn -0.5132 -0.8583 0.0046 +vn -0.0159 0.0095 -0.9998 +vn -0.0152 0.0106 -0.9998 +vn -0.0148 0.0090 -0.9999 +vn 0.0158 -0.0101 0.9998 +vn 0.0170 -0.0105 0.9998 +vn 0.0220 -0.9998 -0.0014 +vn 0.0237 -0.9997 0.0003 +vn -0.8588 0.5122 0.0068 +vn -0.0123 0.0059 -0.9999 +vn -0.0127 0.0076 -0.9999 +vn 0.5123 0.8588 -0.0053 +vn 0.5112 0.8595 -0.0039 +vn 0.0126 -0.0062 0.9999 +vn 0.0105 -0.0062 0.9999 +vn -0.0003 -0.9326 0.3608 +vn 0.8078 0.4660 0.3608 +vn -0.0003 -0.9326 -0.3609 +vn 0.8078 0.4660 -0.3608 +vn 0.8635 0.5043 0.0015 +vn -0.0016 0.0013 1.0000 +vn 0.0017 -0.0010 1.0000 +vn -0.0010 -0.0018 1.0000 +vn -0.8692 0.4944 -0.0020 +vn -0.8693 0.4943 0.0020 +vn 0.0010 -0.0017 -1.0000 +vn 0.0016 -0.0013 -1.0000 +vn 0.0017 0.0010 -1.0000 +vn -0.9999 -0.0109 -0.0005 +vn -0.0047 1.0000 -0.0010 +vn -0.0064 1.0000 -0.0020 +vn -0.0049 1.0000 0.0013 +vn 0.0006 0.0019 -1.0000 +vn 0.9999 0.0143 0.0013 +vn 0.0020 0.0002 1.0000 +vn -0.0000 0.0020 1.0000 +vn -0.5312 -0.1612 -0.8318 +vn -0.5312 -0.1612 0.8317 +vn -0.7050 0.7091 -0.0129 +vn -0.1102 0.0163 -0.9938 +vn -0.4866 0.0734 0.8705 +vn 0.9138 0.4059 0.0141 +vn -0.6209 0.0733 -0.7804 +vn -0.7075 -0.7066 -0.0129 +vn -0.3195 0.0434 -0.9466 +vn -0.3426 0.0452 0.9384 +vn -0.9534 0.3010 -0.0206 +vn -0.2953 0.0349 0.9548 +vn -0.8809 0.4730 -0.0163 +vn -0.9909 -0.1325 -0.0246 +vn -0.9824 0.1852 -0.0253 +vn -0.9994 0.0236 -0.0273 +vn -0.4566 0.0515 -0.8882 +vn -0.5938 0.0671 0.8018 +vn -0.1102 0.0163 0.9938 +vn 0.0445 -0.0050 0.9990 +vn -0.0753 0.0298 0.9967 +vn -0.4737 0.1296 -0.8711 +vn -0.0753 0.0298 -0.9967 +vn 0.0445 -0.0050 -0.9990 +vn -0.5089 0.0800 -0.8571 +vn -0.2460 0.0289 -0.9688 +vn -0.6947 -0.7193 0.0000 +vn -0.4737 0.1296 0.8711 +vn -0.2460 0.0289 0.9688 +vn 0.0009 0.0005 -1.0000 +vn -0.0010 0.0003 1.0000 +vn 0.3915 0.0009 -0.9202 +vn -0.0004 1.0000 -0.0010 +vn 0.3907 -0.0861 -0.9165 +vn 0.3901 -0.0868 -0.9167 +vn 0.0006 0.0001 1.0000 +vn -0.0006 0.0000 -1.0000 +vn -0.0000 -0.0006 -1.0000 +vn -0.1957 0.4353 -0.8788 +vn -0.5474 0.1418 0.8247 +vn 0.9777 -0.2102 0.0004 +vn 0.9778 -0.2095 0.0005 +vn 0.9766 -0.2151 0.0002 +vn 0.4679 0.0369 0.8830 +vn 0.3899 -0.0842 0.9170 +vn 0.3909 -0.0838 0.9166 +vn 0.3899 0.1121 -0.9140 +vn 0.3898 -0.0835 -0.9171 +vn 0.0053 1.0000 -0.0001 +vn 0.3901 -0.0856 0.9168 +vn 0.0038 -0.3827 -0.9239 +vn 0.0038 0.3827 -0.9239 +vn -0.0059 0.9258 -0.3779 +vn -0.0059 0.9258 0.3779 +vn -0.0059 -0.9258 0.3779 +vn -0.0059 -0.9258 -0.3779 +vn 0.0340 0.3825 0.9233 +vn 0.0340 -0.3825 0.9233 +vn 0.0340 -0.9233 0.3825 +vn 0.0340 -0.9233 -0.3825 +vn -0.0434 -0.9230 -0.3823 +vn -0.0434 -0.9230 0.3823 +vn -0.9907 -0.1259 0.0522 +vn -0.9966 0.0762 0.0315 +vn 0.9966 0.0762 -0.0316 +vn -0.9907 -0.0522 -0.1259 +vn -0.0434 0.9230 0.3823 +vn -0.0434 0.9230 -0.3823 +vn -0.9907 0.1260 -0.0522 +vn -0.9907 0.0522 0.1259 +vn -0.9907 0.1260 0.0522 +vn -0.9907 0.0522 -0.1260 +vn 0.9966 0.0762 0.0315 +vn -0.9907 -0.1260 -0.0522 +vn 0.9966 0.0315 -0.0762 +vn -0.9907 -0.0522 0.1260 +vn -0.9966 -0.0315 0.0761 +vn 0.9919 -0.0486 0.1174 +vn -0.9966 0.0315 0.0762 +vn -0.9966 0.0761 -0.0315 +vn 0.9919 0.0486 0.1173 +vn -0.0801 0.0322 0.9963 +vn 0.1401 -0.0562 0.9885 +vn 0.2846 0.0710 -0.9560 +vn -0.1189 -0.0040 -0.9929 +vn -0.2433 0.4167 -0.8759 +vn 0.0724 0.0716 -0.9948 +vn 0.0721 0.0716 0.9948 +vn -0.0911 0.3614 0.9279 +vn -0.1148 0.0713 -0.9908 +vn 0.5997 0.8002 0.0000 +vn 0.1538 0.5175 0.8417 +vn -0.2238 0.2670 -0.9374 +vn 0.2631 0.3512 -0.8986 +vn -0.6174 0.7866 0.0000 +vn -0.0001 0.4265 -0.9045 +vn 0.0000 0.4280 -0.9038 +vn -0.0165 -0.3826 -0.9238 +vn -0.0165 0.3826 -0.9238 +vn -0.0165 0.3826 0.9238 +vn -0.0166 -0.9238 -0.3826 +vn 0.6968 0.6616 -0.2771 +vn -0.0165 0.9238 -0.3826 +vn -0.5855 0.7664 0.2642 +vn -0.6287 0.0000 -0.7776 +vn -0.6287 0.0000 0.7776 +vn -0.5855 0.7664 -0.2642 +vn 0.0000 0.9224 -0.3863 +vn 0.0000 0.9224 0.3863 +vn -0.0166 -0.3826 0.9238 +vn -0.0166 -0.9238 0.3826 +vn 0.7075 0.6639 0.2423 +vn -0.9943 0.0422 -0.0983 +vn -0.9996 -0.0201 -0.0197 +vn -0.9998 -0.0177 0.0000 +vn -0.9943 0.0422 0.0983 +vn 0.3071 -0.7601 -0.5727 +vn 0.0000 -0.8730 0.4877 +vn 0.9865 0.0625 -0.1514 +vn 0.9865 0.0625 0.1514 +vn 0.9990 -0.0137 0.0428 +vn 0.9990 -0.0137 -0.0428 +vn -0.0052 -0.3029 0.9530 +vn -0.0052 -0.3029 -0.9530 +vn -0.1503 0.9100 0.3864 +vn -0.0827 0.3007 0.9501 +vn -0.0882 0.3033 -0.9488 +vn 0.1146 0.9216 0.3708 +vn 0.0212 0.9029 -0.4293 +vn 0.1561 0.3805 -0.9115 +vn -0.0214 0.3851 -0.9226 +vn -0.0162 0.9139 -0.4055 +vn -0.0085 0.9098 0.4150 +vn 0.0018 0.3018 0.9534 +vn -0.9938 0.1009 -0.0476 +vn 0.0000 -0.9716 0.2367 +vn 0.0000 0.8580 -0.5136 +vn 0.0013 -0.3780 -0.9258 +vn 0.0000 -0.9727 0.2319 +vn -0.0017 -0.9728 0.2318 +vn -0.0045 0.8580 -0.5136 +vn -0.0045 0.8483 -0.5295 +vn 0.0000 0.8535 -0.5210 +vn 0.9172 -0.1505 -0.3688 +vn 0.0056 -0.9534 -0.3016 +vn -0.0038 0.5242 -0.8516 +vn -0.0036 0.4732 -0.8809 +vn 0.8531 -0.1929 -0.4848 +vn -0.0032 0.4293 -0.9031 +vn -0.8883 -0.1782 -0.4232 +vn 0.8917 -0.1710 -0.4190 +vn 0.0057 -0.9361 -0.3516 +vn 0.0053 -0.9195 -0.3932 +vn -0.9140 -0.1581 -0.3736 +vn -0.5515 -0.3178 -0.7713 +vn 0.0000 -0.9691 0.2466 +vn 0.0050 -0.9664 0.2571 +vn 0.0008 0.9233 -0.3841 +vn -0.0166 0.9238 0.3826 +vn -0.0061 0.8873 -0.4611 +vn 0.0881 0.3478 0.9334 +vn 1.0000 0.0016 -0.0006 +vn 1.0000 0.0011 -0.0013 +vn -0.1970 -0.3752 -0.9058 +vn 1.0000 0.0014 -0.0009 +vn 1.0000 -0.0000 -0.0034 +vn 1.0000 -0.0020 -0.0057 +vn 1.0000 -0.0017 -0.0040 +vn -0.0013 -0.9234 -0.3838 +vn 0.0000 -0.9691 -0.2466 +vn 0.0050 -0.9715 -0.2371 +vn -0.5515 -0.3178 0.7713 +vn -0.9196 -0.1544 0.3613 +vn 0.0044 -0.9187 0.3950 +vn 0.0045 -0.9351 0.3544 +vn 0.8917 -0.1710 0.4190 +vn -0.8941 -0.1750 0.4123 +vn -0.0026 0.4282 0.9037 +vn 0.8531 -0.1929 0.4848 +vn -0.0028 0.4716 0.8818 +vn -0.0031 0.5229 0.8524 +vn 0.0046 -0.9528 0.3036 +vn 0.9172 -0.1505 0.3688 +vn -0.0045 0.8580 0.5136 +vn 0.0000 0.8535 0.5210 +vn -0.0045 0.8483 0.5295 +vn 0.0000 -0.9727 -0.2319 +vn -0.0012 -0.9730 -0.2307 +vn 0.0013 -0.3780 0.9258 +vn 0.0000 0.8580 0.5136 +vn 0.0000 -0.9716 -0.2367 +vn 0.9999 0.0005 0.0125 +vn 0.9999 0.0008 0.0108 +vn -0.0001 -0.9232 0.3843 +vn 0.5164 -0.7911 0.3277 +vn 0.5164 -0.3277 -0.7911 +vn 0.5164 0.7911 0.3277 +vn 0.5165 0.7911 -0.3277 +vn 0.5164 -0.3277 0.7911 +vn 0.0641 -0.4932 -0.8676 +vn 0.0641 0.4932 0.8676 +vn 0.0641 0.8676 -0.4932 +vn 0.0641 -0.8676 0.4932 +vn 0.0641 0.2648 -0.9622 +vn 0.0641 -0.2648 0.9622 +vn 0.0641 0.9622 0.2648 +vn 0.0641 -0.9622 -0.2648 +s off +f 2/1/1 4/2/1 1/3/1 +f 3/4/2 6/5/2 4/2/2 +f 5/6/3 8/7/3 6/8/3 +f 7/9/4 10/10/4 8/7/4 +f 9/11/5 12/12/5 10/10/5 +f 11/13/6 14/14/6 12/12/6 +f 7/15/7 5/16/7 13/17/7 +f 13/18/8 16/19/8 14/14/8 +f 15/20/9 1/3/9 16/19/9 +f 8/21/10 12/22/10 16/23/10 +f 18/24/1 20/25/1 17/26/1 +f 19/27/2 22/28/2 20/25/2 +f 21/29/3 24/30/3 22/31/3 +f 23/32/4 26/33/4 24/30/4 +f 25/34/5 28/35/5 26/33/5 +f 27/36/6 30/37/6 28/35/6 +f 23/38/7 21/39/7 29/40/7 +f 29/41/8 32/42/8 30/37/8 +f 31/43/9 17/26/9 32/42/9 +f 24/44/10 28/45/10 32/46/10 +f 34/47/1 36/48/1 33/49/1 +f 35/50/2 38/51/2 36/48/2 +f 37/52/3 40/53/3 38/54/3 +f 39/55/4 42/56/4 40/53/4 +f 41/57/5 44/58/5 42/56/5 +f 43/59/6 46/60/6 44/58/6 +f 39/61/7 37/62/7 45/63/7 +f 45/64/8 48/65/8 46/60/8 +f 47/66/9 33/49/9 48/65/9 +f 40/67/10 44/68/10 48/69/10 +f 50/70/1 52/71/1 49/72/1 +f 51/73/2 54/74/2 52/71/2 +f 53/75/3 56/76/3 54/77/3 +f 55/78/4 58/79/4 56/76/4 +f 57/80/5 60/81/5 58/79/5 +f 59/82/6 62/83/6 60/81/6 +f 55/84/7 53/85/7 61/86/7 +f 61/87/8 64/88/8 62/83/8 +f 63/89/9 49/72/9 64/88/9 +f 56/90/10 60/91/10 64/92/10 +f 66/93/1 68/94/1 65/95/1 +f 67/96/2 70/97/2 68/94/2 +f 69/98/3 72/99/3 70/100/3 +f 71/101/4 74/102/4 72/99/4 +f 73/103/5 76/104/5 74/102/5 +f 75/105/6 78/106/6 76/104/6 +f 71/107/7 69/108/7 77/109/7 +f 77/110/8 80/111/8 78/106/8 +f 79/112/9 65/95/9 80/111/9 +f 72/113/10 76/114/10 80/115/10 +f 81/116/11 83/117/11 84/118/11 +f 84/118/7 85/119/7 86/120/7 +f 86/120/12 87/121/12 88/122/12 +f 87/121/13 90/123/13 88/122/13 +f 87/124/14 85/125/14 82/126/14 +f 89/127/10 92/128/10 90/123/10 +f 91/129/15 81/130/15 92/128/15 +f 93/131/16 95/132/16 96/133/16 +f 96/133/7 97/134/7 98/135/7 +f 98/135/17 99/136/17 100/137/17 +f 99/136/18 102/138/18 100/137/18 +f 99/139/14 97/140/14 94/141/14 +f 101/142/10 104/143/10 102/138/10 +f 103/144/19 93/145/19 104/143/19 +f 105/146/16 107/147/16 108/148/16 +f 108/148/7 109/149/7 110/150/7 +f 110/150/17 111/151/17 112/152/17 +f 111/151/18 114/153/18 112/152/18 +f 111/154/14 109/155/14 106/156/14 +f 113/157/10 116/158/10 114/153/10 +f 115/159/19 105/160/19 116/158/19 +f 117/161/10 119/162/10 120/163/10 +f 119/164/20 122/165/20 120/166/20 +f 121/167/7 124/168/7 122/169/7 +f 123/170/21 117/171/21 124/172/21 +f 118/173/22 126/174/22 119/162/22 +f 126/174/23 128/175/23 127/176/23 +f 123/170/24 125/177/24 118/178/24 +f 121/179/25 126/174/25 127/176/25 +f 123/180/26 127/176/26 128/175/26 +f 129/181/27 131/182/27 132/183/27 +f 130/184/7 134/185/7 131/182/7 +f 133/186/28 136/187/28 134/185/28 +f 137/188/29 136/187/29 135/189/29 +f 138/190/30 139/191/30 132/192/30 +f 140/193/10 138/194/10 137/188/10 +f 129/195/31 139/196/31 140/193/31 +f 141/197/27 143/198/27 144/199/27 +f 142/200/7 146/201/7 143/198/7 +f 145/202/28 148/203/28 146/201/28 +f 149/204/29 148/203/29 147/205/29 +f 150/206/30 151/207/30 144/208/30 +f 152/209/10 150/210/10 149/204/10 +f 141/211/31 151/212/31 152/209/31 +f 153/213/32 155/214/32 156/215/32 +f 154/216/7 158/217/7 155/214/7 +f 157/218/33 160/219/33 158/217/33 +f 161/220/34 160/219/34 159/221/34 +f 162/222/30 163/223/30 156/224/30 +f 164/225/10 162/226/10 161/220/10 +f 153/227/35 163/228/35 164/225/35 +f 165/229/10 167/230/10 168/231/10 +f 169/232/36 167/233/36 166/234/36 +f 171/235/7 170/236/7 169/237/7 +f 165/238/37 172/239/37 171/240/37 +f 173/241/38 168/231/38 167/230/38 +f 176/242/39 173/241/39 175/243/39 +f 168/244/40 176/242/40 172/239/40 +f 175/243/41 167/233/41 170/245/41 +f 172/246/42 175/243/42 170/236/42 +f 178/247/43 180/248/43 177/249/43 +f 208/250/44 211/251/44 205/252/44 +f 211/253/45 212/254/45 205/255/45 +f 188/256/46 181/257/46 185/258/46 +f 185/259/45 178/247/45 183/260/45 +f 183/261/47 187/262/47 185/263/47 +f 190/264/48 192/265/48 189/266/48 +f 188/267/49 189/266/49 182/268/49 +f 188/269/50 187/270/50 190/264/50 +f 182/271/51 186/272/51 183/273/51 +f 193/274/52 194/275/52 195/276/52 +f 187/270/46 191/277/46 190/264/46 +f 189/266/44 193/274/44 186/272/44 +f 186/272/45 196/278/45 187/262/45 +f 194/279/53 198/280/53 199/281/53 +f 196/278/54 195/282/54 200/283/54 +f 191/277/55 194/284/55 192/265/55 +f 196/285/56 197/286/56 191/277/56 +f 202/287/7 198/280/7 201/288/7 +f 200/289/57 198/280/57 197/290/57 +f 194/279/58 202/291/58 195/292/58 +f 195/292/59 201/293/59 200/294/59 +f 180/295/10 204/296/10 203/297/10 +f 184/298/60 204/296/60 181/257/60 +f 181/299/45 179/300/45 178/247/45 +f 184/298/48 180/301/48 203/302/48 +f 206/303/43 208/250/43 205/252/43 +f 216/304/46 209/305/46 212/306/46 +f 213/307/48 208/250/48 209/308/48 +f 188/309/48 177/310/48 184/311/48 +f 213/312/49 215/313/49 210/314/49 +f 218/315/45 220/316/45 217/317/45 +f 217/317/61 216/318/61 211/319/61 +f 216/320/62 214/321/62 213/322/62 +f 215/313/51 211/323/51 210/324/51 +f 221/325/63 223/326/63 218/315/63 +f 219/327/46 214/321/46 220/316/46 +f 221/325/44 217/317/44 215/313/44 +f 224/328/48 215/313/48 214/329/48 +f 223/330/59 226/331/59 227/332/59 +f 224/328/64 222/333/64 221/325/64 +f 223/334/65 219/327/65 218/315/65 +f 227/335/56 224/336/56 219/327/56 +f 226/331/7 230/337/7 229/338/7 +f 226/331/57 228/339/57 227/332/57 +f 230/340/58 223/330/58 222/341/58 +f 229/342/53 222/341/53 228/343/53 +f 232/344/10 206/345/10 231/346/10 +f 232/344/60 212/306/60 209/305/60 +f 207/347/48 209/308/48 208/250/48 +f 212/306/45 206/348/45 205/252/45 +f 178/247/44 182/349/44 183/260/44 +f 234/350/1 236/351/1 233/352/1 +f 235/353/2 238/354/2 236/351/2 +f 237/355/3 240/356/3 238/357/3 +f 239/358/4 242/359/4 240/356/4 +f 241/360/5 244/361/5 242/359/5 +f 243/362/6 246/363/6 244/361/6 +f 245/364/8 248/365/8 246/363/8 +f 247/366/9 233/352/9 248/365/9 +f 240/356/66 249/367/66 250/368/66 +f 255/369/10 256/370/10 250/371/10 +f 248/365/67 255/372/67 246/363/67 +f 238/354/68 252/373/68 236/351/68 +f 244/361/69 249/374/69 242/359/69 +f 248/365/70 251/375/70 256/376/70 +f 236/351/71 251/377/71 233/352/71 +f 238/357/72 250/378/72 253/379/72 +f 244/361/73 255/380/73 254/381/73 +f 258/382/74 260/383/74 257/384/74 +f 259/385/75 262/386/75 260/383/75 +f 261/387/76 264/388/76 262/386/76 +f 263/389/77 266/390/77 264/388/77 +f 265/391/78 268/392/78 266/390/78 +f 267/393/79 270/394/79 268/392/79 +f 261/395/48 258/382/48 269/396/48 +f 269/397/80 272/398/80 270/394/80 +f 271/399/81 257/400/81 272/398/81 +f 270/401/45 272/402/45 264/403/45 +f 274/404/45 276/405/45 273/406/45 +f 273/407/45 278/408/45 274/409/45 +f 280/410/82 282/411/82 279/412/82 +f 284/413/48 286/414/48 283/415/48 +f 278/408/83 287/416/83 274/409/83 +f 273/417/44 284/418/44 277/419/44 +f 276/420/44 290/421/44 288/422/44 +f 286/423/48 288/424/48 291/425/48 +f 273/417/44 288/422/44 285/426/44 +f 291/425/84 293/427/84 294/428/84 +f 290/429/10 295/430/10 292/431/10 +f 291/425/85 296/432/85 286/423/85 +f 276/405/45 295/433/45 289/434/45 +f 288/424/48 292/435/48 291/425/48 +f 280/436/46 296/437/46 287/416/46 +f 296/438/86 297/439/86 287/440/86 +f 294/428/87 298/441/87 297/439/87 +f 295/430/88 293/427/88 292/431/88 +f 320/442/89 277/419/89 284/418/89 +f 275/443/90 298/441/90 295/433/90 +f 275/443/91 287/444/91 297/445/91 +f 283/415/92 296/437/92 279/446/92 +f 306/447/93 308/448/93 281/449/93 +f 280/450/94 306/447/94 281/449/94 +f 279/451/95 299/452/95 283/453/95 +f 308/448/96 311/454/96 309/455/96 +f 305/456/97 311/457/97 312/458/98 +f 299/452/99 309/455/99 305/456/99 +f 281/449/100 309/455/100 282/411/100 +f 283/453/48 301/459/48 284/460/48 +f 319/461/7 312/462/101 318/463/102 +f 312/462/103 310/464/104 318/463/105 +f 284/460/48 302/465/48 320/466/48 +f 307/467/106 310/468/106 308/448/106 +f 301/469/76 313/470/76 321/471/76 +f 304/472/79 322/473/79 317/474/79 +f 300/475/75 314/476/75 313/470/75 +f 323/477/80 317/474/80 316/478/80 +f 324/479/81 316/478/81 315/480/81 +f 302/481/77 321/471/77 326/482/77 +f 303/483/78 326/482/78 322/473/78 +f 325/484/74 315/485/74 314/476/74 +f 299/452/48 305/456/48 324/486/48 +f 299/452/48 300/487/48 283/453/48 +f 303/488/48 312/458/107 320/466/48 +f 323/489/48 312/458/108 304/490/48 +f 326/491/45 277/492/45 319/493/45 +f 318/494/109 322/495/45 319/493/45 +f 318/494/110 316/496/45 317/497/45 +f 321/498/45 278/499/45 277/492/45 +f 306/447/45 313/500/45 314/501/45 +f 307/467/45 306/447/45 315/502/45 +f 327/503/45 329/504/45 330/505/45 +f 332/506/7 334/507/7 331/508/7 +f 336/509/44 338/510/44 335/511/44 +f 340/512/48 342/513/48 339/514/48 +f 344/515/44 346/516/44 343/517/44 +f 348/518/46 350/519/46 347/520/46 +f 352/521/45 354/522/45 351/523/45 +f 356/524/48 358/525/48 355/526/48 +f 360/527/10 362/528/10 359/529/10 +f 363/530/111 358/525/111 339/514/111 +f 357/531/112 343/517/112 340/512/112 +f 364/532/113 351/523/113 347/533/113 +f 336/509/114 327/503/114 344/515/114 +f 349/534/115 334/535/115 355/526/115 +f 338/510/116 356/524/116 333/536/116 +f 348/537/117 354/522/117 331/538/117 +f 335/511/118 332/539/118 353/540/118 +f 365/541/119 342/513/119 367/542/119 +f 341/543/120 369/544/120 368/545/120 +f 370/546/121 329/504/121 372/547/121 +f 373/548/122 330/505/122 374/549/122 +f 365/541/123 367/542/123 359/550/123 +f 368/545/124 369/544/124 360/551/124 +f 370/546/125 362/552/125 371/553/125 +f 373/548/126 374/549/126 361/554/126 +f 350/519/127 364/555/127 347/520/127 +f 357/531/48 339/514/48 358/525/48 +f 336/509/44 343/517/44 337/556/44 +f 352/521/45 328/557/45 327/503/45 +f 347/533/128 354/522/128 348/537/128 +f 335/511/114 352/521/114 336/509/114 +f 331/538/129 353/540/129 332/539/129 +f 348/518/130 334/507/130 349/558/130 +f 338/510/131 332/506/131 335/511/131 +f 355/526/132 333/536/132 356/524/132 +f 349/534/133 358/525/133 350/559/133 +f 337/556/112 356/524/112 338/510/112 +f 366/560/134 370/561/134 372/562/134 +f 341/543/48 367/542/48 342/513/48 +f 345/563/135 369/564/135 346/516/135 +f 330/505/45 371/553/45 374/549/45 +f 330/505/114 344/515/114 327/503/114 +f 340/512/112 346/516/112 341/543/112 +f 339/514/136 366/565/136 363/530/136 +f 328/557/137 372/547/137 329/504/137 +f 365/566/138 362/528/138 370/561/138 +f 368/545/139 359/550/139 367/542/139 +f 373/567/140 360/527/140 369/564/140 +f 374/549/141 362/552/141 361/554/141 +f 363/568/142 372/562/142 364/569/142 +f 376/570/10 378/571/10 375/572/10 +f 377/573/45 380/574/45 378/575/45 +f 379/576/7 382/577/7 380/578/7 +f 381/579/48 375/580/48 382/581/48 +f 375/580/143 383/582/143 384/583/143 +f 377/573/44 381/579/44 379/584/44 +f 387/585/46 383/586/46 386/587/46 +f 380/574/144 388/588/144 387/589/144 +f 378/571/145 383/586/145 375/572/145 +f 382/577/146 388/590/146 380/578/146 +f 390/591/45 392/592/45 389/593/45 +f 385/594/147 390/595/147 388/596/147 +f 384/597/48 393/598/48 385/599/48 +f 387/600/148 394/601/148 384/602/148 +f 387/603/45 390/591/45 389/593/45 +f 395/604/149 396/605/150 397/606/151 +f 393/607/152 391/608/152 390/595/152 +f 394/601/153 392/609/153 395/604/153 +f 393/598/48 395/610/48 398/611/48 +f 399/612/46 401/613/46 402/614/46 +f 395/610/48 402/615/48 398/611/48 +f 392/592/45 401/616/45 400/617/45 +f 398/618/154 401/613/154 391/608/154 +f 404/619/155 406/620/156 403/621/157 +f 400/617/158 396/622/159 392/592/158 +f 399/623/160 397/624/161 404/625/162 +f 399/612/163 403/621/164 400/626/163 +f 408/627/165 405/628/165 407/629/165 +f 396/622/166 406/630/167 408/631/167 +f 397/606/168 408/632/169 407/633/169 +f 404/625/170 407/634/171 405/635/171 +f 418/636/172 412/637/172 417/638/172 +f 409/639/48 417/640/48 412/641/48 +f 418/642/45 410/643/45 411/644/45 +f 415/645/48 417/640/48 414/646/48 +f 419/647/173 421/648/173 416/649/173 +f 418/642/45 422/650/45 413/651/45 +f 416/649/174 418/636/174 417/638/174 +f 422/652/175 414/653/175 413/654/175 +f 419/647/176 424/655/176 420/656/176 +f 424/655/177 415/657/177 422/652/177 +f 423/658/48 416/659/48 415/645/48 +f 421/660/45 424/655/45 422/650/45 +f 414/653/178 410/661/178 413/654/178 +f 466/662/179 427/663/179 465/664/179 +f 465/664/180 425/665/180 462/666/180 +f 425/665/181 428/667/181 429/668/181 +f 468/669/182 430/670/182 467/671/182 +f 461/672/183 432/673/183 468/669/183 +f 430/670/184 466/662/184 467/671/184 +f 433/674/48 435/675/48 436/676/48 +f 427/663/185 433/677/185 428/678/185 +f 432/673/186 434/679/186 430/670/186 +f 426/680/187 429/681/187 438/682/187 +f 430/670/188 433/674/188 431/683/188 +f 426/684/189 437/685/189 432/673/189 +f 436/686/190 441/687/190 439/688/190 +f 438/689/48 443/690/48 437/685/48 +f 429/668/48 439/691/48 444/692/48 +f 433/677/48 439/688/48 428/678/48 +f 437/693/48 435/694/48 434/679/48 +f 438/682/48 444/695/48 442/696/48 +f 445/697/48 447/698/48 440/699/48 +f 435/694/191 448/700/191 445/701/191 +f 444/695/192 450/702/192 442/696/192 +f 435/675/193 440/699/193 436/676/193 +f 443/690/194 450/703/194 448/704/194 +f 439/691/195 449/705/195 444/692/195 +f 447/706/183 453/707/183 451/708/183 +f 450/703/48 455/709/48 448/704/48 +f 449/705/48 451/710/48 456/711/48 +f 440/712/48 451/708/48 441/687/48 +f 445/701/48 455/713/48 446/714/48 +f 449/715/48 454/716/48 450/702/48 +f 458/717/48 459/718/48 460/719/48 +f 455/713/180 458/720/180 446/714/180 +f 456/721/184 460/722/184 454/716/184 +f 446/723/196 452/724/196 447/698/196 +f 454/725/179 459/726/179 455/709/179 +f 451/710/182 457/727/182 456/711/182 +f 462/666/197 464/728/197 465/664/197 +f 462/666/196 426/680/196 461/729/196 +f 470/730/45 472/731/45 469/732/45 +f 465/664/198 469/733/198 466/662/198 +f 467/671/199 473/734/199 468/669/199 +f 474/735/200 462/666/200 461/729/200 +f 466/662/201 472/731/201 467/671/201 +f 473/736/202 461/672/202 468/669/202 +f 476/737/203 470/738/203 475/739/203 +f 473/736/45 479/740/45 474/741/45 +f 463/742/45 475/743/45 464/728/45 +f 475/739/45 469/733/45 464/744/45 +f 471/745/45 473/734/45 472/746/45 +f 474/735/45 480/747/45 463/748/45 +f 481/749/45 483/750/45 477/751/45 +f 471/745/204 484/752/204 478/753/204 +f 485/754/205 480/747/205 479/755/205 +f 470/730/206 483/750/206 471/756/206 +f 478/757/207 485/758/207 479/740/207 +f 486/759/208 475/743/208 480/760/208 +f 488/761/183 481/762/183 487/763/183 +f 490/764/45 485/758/45 484/765/45 +f 486/759/45 487/766/45 476/767/45 +f 487/763/45 477/768/45 476/737/45 +f 483/769/45 490/770/45 484/752/45 +f 485/754/45 492/771/45 486/772/45 +f 496/773/45 489/774/45 488/775/45 +f 496/776/180 490/770/180 482/777/180 +f 494/778/184 492/771/184 491/779/184 +f 489/780/196 482/781/196 481/749/196 +f 495/782/179 491/783/179 490/764/179 +f 493/784/182 487/766/182 492/785/182 +f 498/786/209 500/787/209 497/788/209 +f 500/787/7 501/789/7 502/790/7 +f 502/790/210 503/791/210 504/792/210 +f 503/793/211 506/794/211 504/795/211 +f 505/796/10 508/797/10 506/794/10 +f 507/798/212 497/788/212 508/797/212 +f 498/786/213 510/799/213 499/800/213 +f 510/799/7 501/801/7 499/800/7 +f 511/802/214 503/803/214 501/801/214 +f 512/804/215 505/805/215 503/806/215 +f 505/805/10 514/807/10 507/798/10 +f 514/807/216 498/786/216 507/798/216 +f 515/808/217 510/799/217 509/809/217 +f 510/799/7 517/810/7 511/811/7 +f 517/810/218 512/812/218 511/811/218 +f 512/813/219 519/814/219 513/815/219 +f 519/814/10 514/807/10 513/815/10 +f 514/807/220 515/808/220 509/809/220 +f 521/816/210 516/817/210 515/808/210 +f 516/817/7 523/818/7 517/819/7 +f 517/819/209 524/820/209 518/821/209 +f 524/822/212 519/823/212 518/824/212 +f 525/825/10 520/826/10 519/823/10 +f 520/826/211 521/816/211 515/808/211 +f 527/827/214 522/828/214 521/816/214 +f 522/828/7 529/829/7 523/830/7 +f 529/829/213 524/831/213 523/830/213 +f 524/832/216 531/833/216 525/834/216 +f 531/833/10 526/835/10 525/834/10 +f 526/835/215 527/827/215 521/816/215 +f 497/836/218 528/837/218 527/827/218 +f 528/837/7 502/838/7 529/839/7 +f 502/838/217 530/840/217 529/839/217 +f 530/841/220 506/842/220 531/843/220 +f 506/842/10 532/844/10 531/843/10 +f 532/844/219 497/836/219 527/827/219 +f 533/845/221 538/846/222 534/847/223 +f 537/848/224 540/849/224 538/846/224 +f 539/850/225 542/851/225 540/852/225 +f 541/853/48 539/854/48 537/855/48 +f 541/856/226 545/857/226 542/851/226 +f 544/858/227 546/859/228 545/857/227 +f 540/860/45 542/861/45 545/862/45 +f 548/863/229 550/864/230 547/865/231 +f 533/845/232 546/859/233 543/866/234 +f 549/867/235 552/868/235 550/864/235 +f 547/869/236 552/868/45 535/870/237 +f 535/871/238 551/872/239 536/873/240 +f 548/874/241 551/872/48 549/867/48 +f 553/875/242 555/876/242 556/877/242 +f 555/876/243 558/878/243 556/877/243 +f 557/879/244 560/880/244 558/881/244 +f 559/882/245 562/883/245 560/880/245 +f 555/876/246 564/884/246 557/885/246 +f 561/886/247 566/887/247 562/883/247 +f 566/887/248 554/888/248 553/875/248 +f 560/880/249 568/889/249 558/881/249 +f 572/890/250 564/891/250 569/892/250 +f 565/893/251 571/894/251 570/895/251 +f 554/888/252 563/896/252 555/876/252 +f 559/882/253 564/897/253 572/898/253 +f 554/888/254 570/899/254 569/900/254 +f 559/882/255 571/901/255 561/886/255 +f 573/902/256 575/903/256 576/904/256 +f 566/887/257 577/905/257 574/906/257 +f 562/883/258 567/907/258 560/880/258 +f 556/877/259 568/908/259 578/909/259 +f 566/887/260 573/902/260 562/883/260 +f 553/875/261 578/910/261 577/911/261 +f 575/912/262 580/913/262 581/914/262 +f 567/915/256 583/916/256 568/889/256 +f 577/911/256 584/917/256 579/918/256 +f 574/906/256 579/919/256 575/920/256 +f 573/921/256 582/922/256 567/907/256 +f 578/909/256 583/923/256 584/924/256 +f 587/925/256 588/926/256 581/927/256 +f 576/928/263 587/929/263 582/930/263 +f 583/931/264 585/932/264 584/933/264 +f 575/934/265 588/935/265 576/936/265 +f 583/937/266 587/938/266 586/939/266 +f 584/940/267 580/941/267 579/942/267 +f 589/943/268 591/944/268 592/945/268 +f 593/946/269 595/947/269 596/948/269 +f 597/949/270 599/950/270 595/951/270 +f 601/952/271 602/953/271 600/954/271 +f 596/955/272 604/956/272 593/957/272 +f 590/958/273 601/959/273 605/960/273 +f 598/961/274 607/962/274 599/950/274 +f 596/948/275 599/963/275 608/964/275 +f 603/965/276 598/966/276 597/967/276 +f 603/968/277 608/969/277 609/970/277 +f 606/971/278 611/972/278 612/973/278 +f 599/963/279 613/974/279 608/964/279 +f 598/966/280 610/975/280 606/971/280 +f 608/969/281 610/976/281 609/970/281 +f 615/977/282 611/978/282 614/979/282 +f 613/980/283 611/978/283 610/976/283 +f 606/981/284 615/982/284 607/962/284 +f 607/983/285 614/984/285 613/974/285 +f 616/985/286 618/986/286 591/987/286 +f 602/988/287 616/989/287 619/990/287 +f 619/991/288 591/987/288 590/992/288 +f 602/953/289 592/993/289 620/994/289 +f 621/995/290 622/996/290 623/997/290 +f 620/994/291 621/998/291 624/999/291 +f 592/945/292 618/1000/292 621/995/292 +f 620/1001/293 617/1002/293 616/989/293 +f 623/997/294 626/1003/294 625/1004/294 +f 624/1005/295 626/1003/295 617/1002/295 +f 617/1006/296 622/1007/296 618/986/296 +f 624/999/297 623/1008/297 625/1009/297 +f 594/1010/298 597/949/298 595/951/298 +f 628/1011/299 627/1012/299 594/1010/299 +f 630/1013/300 629/1014/300 628/1011/300 +f 633/1015/272 635/1016/272 632/1017/272 +f 636/1018/272 634/1019/272 633/1015/272 +f 593/957/272 637/1020/272 636/1018/272 +f 597/967/301 604/1021/301 603/965/301 +f 627/1022/302 637/1023/302 604/1021/302 +f 629/1024/303 634/1025/303 637/1023/303 +f 632/1026/304 630/1027/304 633/1028/304 +f 633/1028/305 628/1029/305 636/1030/305 +f 636/1030/306 594/1031/306 593/946/306 +f 619/991/307 605/1032/307 639/1033/307 +f 639/1033/308 638/1034/308 632/1026/308 +f 619/990/309 600/1035/309 602/988/309 +f 632/1017/272 600/1035/272 639/1036/272 +f 630/1013/310 640/1037/310 631/1038/310 +f 605/960/311 640/1037/311 638/1039/311 +f 631/1040/312 635/1041/312 634/1025/312 +f 640/1042/313 600/954/313 635/1041/313 +f 642/1043/314 644/1044/314 641/1045/314 +f 646/1046/45 648/1047/45 645/1048/45 +f 648/1047/315 651/1049/315 649/1050/315 +f 653/1051/316 641/1045/48 652/1052/48 +f 648/1047/317 654/1053/317 650/1054/317 +f 646/1055/44 653/1056/318 647/1057/319 +f 656/1058/320 658/1059/321 655/1060/321 +f 641/1045/48 660/1061/48 652/1052/48 +f 645/1048/45 649/1050/45 661/1062/45 +f 662/1063/322 664/1064/322 665/1065/322 +f 652/1052/323 666/1066/323 667/1067/323 +f 669/1068/324 671/1069/324 668/1070/324 +f 659/1071/48 672/1072/325 660/1061/48 +f 661/1062/45 656/1058/326 668/1070/45 +f 662/1063/48 675/1073/48 673/1074/48 +f 663/1075/327 676/1076/327 664/1064/327 +f 663/1075/48 673/1074/48 672/1072/328 +f 668/1070/45 655/1060/45 669/1068/45 +f 682/1077/329 674/1078/329 683/1079/329 +f 688/1080/330 670/1081/330 669/1068/330 +f 652/1052/331 678/1082/331 653/1051/332 +f 646/1046/333 679/1083/333 680/1084/333 +f 643/1085/10 679/1083/10 644/1044/10 +f 679/1086/334 676/1087/334 644/1088/334 +f 681/1089/335 664/1064/335 676/1076/335 +f 671/1069/336 665/1065/336 664/1064/336 +f 670/1081/337 683/1079/337 665/1065/337 +f 659/1090/338 644/1088/338 676/1087/338 +f 675/1091/339 688/1092/339 677/1093/339 +f 646/1055/340 643/1085/340 642/1094/340 +f 661/1095/341 679/1086/341 645/1096/341 +f 669/1068/45 677/1097/45 688/1080/45 +f 668/1070/342 681/1089/342 661/1062/342 +f 674/1098/343 665/1065/343 683/1099/343 +f 654/1053/7 667/1100/7 650/1054/7 +f 667/1100/344 651/1049/344 650/1054/344 +f 666/1101/345 657/1102/346 651/1049/345 +f 684/1103/347 658/1059/348 657/1102/349 +f 685/1104/350 687/1105/350 658/1059/350 +f 675/1073/351 685/1106/351 673/1074/351 +f 660/1061/352 684/1107/353 666/1066/352 +f 675/1091/354 687/1108/354 686/1109/354 +f 677/1097/355 658/1059/355 687/1105/355 +f 649/1050/356 657/1102/357 656/1058/358 +f 653/1056/359 654/1110/360 647/1057/361 +f 672/1072/362 685/1106/363 684/1107/364 +f 689/1111/365 691/1112/365 692/1113/365 +f 691/1112/2 694/1114/2 692/1113/2 +f 693/1115/3 696/1116/3 694/1117/3 +f 695/1118/4 698/1119/4 696/1116/4 +f 697/1120/5 700/1121/5 698/1119/5 +f 699/1122/6 702/1123/6 700/1121/6 +f 695/1124/7 693/1125/7 701/1126/7 +f 701/1127/8 704/1128/8 702/1123/8 +f 703/1129/366 689/1111/366 704/1128/366 +f 706/1130/367 708/1131/367 705/1132/367 +f 710/1133/368 712/1134/368 709/1135/368 +f 713/1136/369 710/1137/369 709/1138/369 +f 715/1139/370 717/1140/370 718/1141/370 +f 705/1132/371 717/1142/371 716/1143/371 +f 706/1144/372 720/1145/372 707/1146/372 +f 714/1147/373 722/1148/373 710/1149/373 +f 719/1150/374 709/1151/374 720/1152/374 +f 721/1153/375 718/1154/375 722/1155/375 +f 724/1156/8 726/1157/8 723/1158/8 +f 720/1159/376 728/1160/376 707/1161/376 +f 708/1162/377 730/1163/377 717/1164/377 +f 717/1165/378 724/1156/378 718/1166/378 +f 722/1167/379 711/1168/379 710/1169/379 +f 720/1170/380 712/1134/380 727/1171/380 +f 708/1172/381 728/1173/381 729/1174/381 +f 718/1175/382 723/1158/382 722/1176/382 +f 726/1157/383 733/1177/383 731/1178/383 +f 712/1134/5 731/1178/5 734/1179/5 +f 727/1171/3 736/1180/3 728/1160/3 +f 729/1174/1 738/1181/1 730/1163/1 +f 730/1163/9 725/1182/9 724/1156/9 +f 723/1158/6 731/1178/6 711/1168/6 +f 712/1134/4 735/1183/4 727/1171/4 +f 728/1173/2 737/1184/2 729/1174/2 +f 739/1185/384 741/1186/384 742/1187/384 +f 734/1179/385 744/1188/385 735/1183/385 +f 736/1189/386 740/1190/386 737/1184/386 +f 726/1157/387 746/1191/387 732/1192/387 +f 734/1179/388 733/1193/388 743/1194/388 +f 736/1180/389 744/1195/389 745/1196/389 +f 737/1184/390 739/1197/390 738/1181/390 +f 738/1181/391 746/1198/391 725/1182/391 +f 748/1199/8 750/1200/8 747/1201/8 +f 739/1202/392 748/1199/392 746/1203/392 +f 732/1204/393 751/1205/393 733/1206/393 +f 743/1207/394 753/1208/394 744/1209/394 +f 745/1210/395 741/1186/395 740/1211/395 +f 732/1212/396 748/1199/396 747/1201/396 +f 733/1213/397 752/1214/397 743/1215/397 +f 745/1216/398 753/1208/398 754/1217/398 +f 755/1218/399 757/1219/399 758/1220/399 +f 751/1205/5 760/1221/5 752/1214/5 +f 753/1208/3 756/1222/3 754/1217/3 +f 741/1186/1 762/1223/1 742/1187/1 +f 742/1187/9 749/1224/9 748/1199/9 +f 747/1201/6 759/1225/6 751/1205/6 +f 752/1214/4 761/1226/4 753/1208/4 +f 754/1227/2 755/1218/2 741/1186/2 +f 764/1228/400 766/1229/400 763/1230/400 +f 749/1224/401 767/1231/401 750/1200/401 +f 759/1225/402 769/1232/402 760/1221/402 +f 761/1226/403 757/1233/403 756/1222/403 +f 755/1218/404 764/1234/404 762/1223/404 +f 749/1224/405 764/1228/405 763/1230/405 +f 750/1200/406 768/1235/406 759/1225/406 +f 761/1226/407 769/1236/407 770/1237/407 +f 766/1238/408 773/1239/408 771/1240/408 +f 767/1241/409 774/1242/409 768/1235/409 +f 769/1236/410 776/1243/410 770/1237/410 +f 757/1219/411 778/1244/411 758/1220/411 +f 767/1231/412 766/1238/412 771/1240/412 +f 769/1232/413 774/1245/413 775/1246/413 +f 757/1233/414 776/1247/414 777/1248/414 +f 764/1234/415 778/1249/415 765/1250/415 +f 773/1251/10 781/1252/10 779/1253/10 +f 774/1245/416 782/1254/416 775/1246/416 +f 776/1247/417 784/1255/417 777/1248/417 +f 778/1249/418 786/1256/418 765/1250/418 +f 766/1229/419 786/1257/419 772/1258/419 +f 774/1242/420 773/1251/420 779/1253/420 +f 776/1243/421 782/1259/421 783/1260/421 +f 778/1244/422 784/1261/422 785/1262/422 +f 788/1263/5 790/1264/5 787/1265/5 +f 782/1259/10 792/1266/10 783/1260/10 +f 784/1261/10 788/1267/10 785/1262/10 +f 773/1239/10 794/1268/10 780/1269/10 +f 782/1254/10 781/1270/10 791/1271/10 +f 784/1255/10 792/1272/10 793/1273/10 +f 786/1256/10 788/1263/10 787/1265/10 +f 786/1257/10 794/1274/10 772/1258/10 +f 799/1275/10 800/1276/10 796/1277/10 +f 787/1278/4 800/1279/4 794/1274/4 +f 780/1280/2 798/1281/2 781/1252/2 +f 791/1282/9 796/1283/9 792/1266/9 +f 793/1284/6 789/1285/6 788/1267/6 +f 794/1268/3 799/1286/3 780/1269/3 +f 781/1270/1 797/1287/1 791/1271/1 +f 792/1272/8 795/1288/8 793/1273/8 +f 715/1139/423 802/1289/423 716/1143/423 +f 803/1290/8 715/1139/8 721/1153/8 +f 714/1147/6 803/1290/6 721/1153/6 +f 805/1291/424 714/1147/424 713/1136/424 +f 719/1150/425 805/1291/425 713/1136/425 +f 807/1292/3 719/1150/3 706/1144/3 +f 705/1132/2 807/1293/2 706/1130/2 +f 802/1289/426 705/1132/426 716/1143/426 +f 704/1294/427 810/1295/427 809/1296/427 +f 702/1297/428 809/1296/428 811/1298/428 +f 812/1299/429 702/1297/429 811/1298/429 +f 813/1300/430 700/1301/430 812/1299/430 +f 696/1302/431 813/1300/431 814/1303/431 +f 815/1304/432 696/1302/432 814/1303/432 +f 692/1305/433 815/1306/433 816/1307/433 +f 810/1295/434 692/1305/434 816/1307/434 +f 802/1308/1 818/1309/1 808/1310/1 +f 819/1311/435 821/1312/435 822/1313/435 +f 824/1314/1 826/1315/1 823/1316/1 +f 809/1317/436 828/1318/436 811/1319/436 +f 818/1309/437 807/1320/437 808/1310/437 +f 830/1321/438 832/1322/438 826/1323/438 +f 825/1324/2 830/1325/2 826/1315/2 +f 813/1326/439 834/1327/439 835/1328/439 +f 807/1329/440 836/1330/440 806/1331/440 +f 837/1332/441 838/1333/441 839/1334/441 +f 833/1335/3 841/1336/3 830/1337/3 +f 843/1338/442 845/1339/442 842/1340/442 +f 836/1330/4 805/1341/4 806/1331/4 +f 829/1342/443 846/1343/443 847/1344/443 +f 840/1345/4 849/1346/4 841/1336/4 +f 814/1347/444 851/1348/444 815/1349/444 +f 837/1350/5 804/1351/5 805/1341/5 +f 852/1352/445 854/1353/445 855/1354/445 +f 848/1355/5 857/1356/5 849/1346/5 +f 848/1357/446 859/1358/446 856/1359/446 +f 820/1360/447 803/1361/447 804/1351/447 +f 857/1362/448 861/1363/448 849/1364/448 +f 856/1365/6 852/1366/6 857/1356/6 +f 810/1367/449 862/1368/449 863/1369/449 +f 803/1361/450 864/1370/450 801/1371/450 +f 864/1372/451 822/1313/451 865/1373/451 +f 843/1374/8 853/1375/8 852/1366/8 +f 833/1376/452 867/1377/452 840/1378/452 +f 864/1370/9 802/1308/9 801/1371/9 +f 830/1379/453 868/1380/453 831/1381/453 +f 842/1382/9 823/1316/9 853/1375/9 +f 824/1383/454 870/1384/454 825/1385/454 +f 863/1369/1 870/1384/1 869/1386/1 +f 862/1368/2 866/1387/2 870/1384/2 +f 851/1348/3 867/1377/3 866/1388/3 +f 850/1389/4 858/1390/4 867/1377/4 +f 835/1328/5 859/1358/5 858/1390/5 +f 834/1327/6 844/1391/6 859/1358/6 +f 828/1318/8 845/1339/8 844/1391/8 +f 827/1392/9 869/1386/9 845/1339/9 +f 825/1393/455 866/1387/455 833/1394/455 +f 848/1395/456 867/1377/456 858/1390/456 +f 816/1396/457 851/1397/457 862/1368/457 +f 856/1398/458 844/1391/458 843/1399/458 +f 813/1400/459 850/1389/459 814/1401/459 +f 824/1402/460 845/1339/460 869/1386/460 +f 812/1403/461 828/1318/461 834/1327/461 +f 810/1404/462 827/1392/462 809/1405/462 +f 871/1406/1 832/1322/1 846/1343/1 +f 832/1322/2 847/1344/2 846/1343/2 +f 831/1381/3 838/1333/3 847/1407/3 +f 868/1380/4 839/1334/4 838/1333/4 +f 861/1363/5 821/1312/5 839/1334/5 +f 860/1408/6 822/1313/6 821/1312/6 +f 855/1354/8 865/1373/8 822/1313/8 +f 854/1353/9 871/1406/9 865/1373/9 +f 841/1409/463 861/1363/463 868/1380/463 +f 864/1410/464 871/1406/464 817/1411/464 +f 852/1412/465 860/1408/465 857/1413/465 +f 853/1414/466 872/1415/466 854/1353/466 +f 817/1416/467 846/1343/467 818/1417/467 +f 829/1418/468 838/1333/468 836/1419/468 +f 826/1420/469 872/1415/469 823/1421/469 +f 837/1422/470 821/1312/470 820/1423/470 +f 874/1424/1 876/1425/1 873/1426/1 +f 875/1427/2 878/1428/2 876/1425/2 +f 877/1429/3 880/1430/3 878/1431/3 +f 879/1432/4 882/1433/4 880/1430/4 +f 881/1434/5 884/1435/5 882/1433/5 +f 883/1436/6 886/1437/6 884/1435/6 +f 881/1438/7 879/1439/7 877/1440/7 +f 885/1441/8 888/1442/8 886/1437/8 +f 887/1443/9 873/1426/9 888/1442/9 +f 884/1444/10 886/1445/10 888/1446/10 +f 890/1447/471 892/1448/471 889/1449/471 +f 890/1450/45 895/1451/45 893/1452/45 +f 894/1453/472 897/1454/472 898/1455/472 +f 896/1456/48 900/1457/48 899/1458/48 +f 895/1459/46 900/1457/46 893/1460/46 +f 890/1447/44 896/1456/44 894/1453/44 +f 898/1461/7 902/1462/7 901/1463/7 +f 894/1464/45 901/1463/45 895/1451/45 +f 899/1458/473 897/1465/473 896/1456/473 +f 895/1459/474 902/1466/474 899/1458/474 +f 892/1467/10 904/1468/10 903/1469/10 +f 893/1460/475 903/1470/475 904/1471/475 +f 890/1450/45 904/1472/45 891/1473/45 +f 889/1449/476 903/1469/476 900/1457/476 +f 906/1474/471 908/1475/471 905/1476/471 +f 910/1477/48 908/1478/48 909/1479/48 +f 911/1480/472 913/1481/472 914/1482/472 +f 916/1483/45 914/1482/45 915/1484/45 +f 916/1483/46 910/1485/46 909/1486/46 +f 914/1482/44 908/1475/44 911/1480/44 +f 918/1487/7 912/1488/7 917/1489/7 +f 917/1489/48 911/1490/48 910/1477/48 +f 914/1482/477 918/1487/477 915/1484/477 +f 918/1491/474 910/1485/474 915/1484/474 +f 920/1492/10 906/1493/10 919/1494/10 +f 909/1486/475 919/1495/475 916/1483/475 +f 908/1478/48 920/1496/48 909/1479/48 +f 916/1483/478 906/1493/478 905/1476/478 +f 921/1497/479 923/1498/479 924/1499/479 +f 922/1500/44 927/1501/44 925/1502/44 +f 926/1503/480 929/1504/480 930/1505/480 +f 928/1506/46 932/1507/46 931/1508/46 +f 925/1509/45 931/1508/45 932/1507/45 +f 922/1510/48 928/1506/48 926/1503/48 +f 930/1511/481 934/1512/481 933/1513/481 +f 927/1501/44 930/1511/44 933/1513/44 +f 931/1508/482 929/1514/482 928/1506/482 +f 927/1515/483 934/1516/483 931/1508/483 +f 924/1517/484 936/1518/484 935/1519/484 +f 932/1507/485 936/1520/485 925/1509/485 +f 925/1502/44 923/1521/44 922/1500/44 +f 932/1507/486 924/1517/486 935/1519/486 +f 937/1522/10 939/1523/10 940/1524/10 +f 941/1525/45 942/1526/45 943/1527/45 +f 945/1528/487 947/1529/487 948/1530/487 +f 951/1531/48 952/1532/48 953/1533/48 +f 956/1534/46 958/1535/46 955/1536/46 +f 960/1537/46 962/1538/46 959/1539/46 +f 964/1540/46 954/1541/46 963/1542/46 +f 940/1543/46 965/1544/46 937/1545/46 +f 967/1546/44 969/1547/44 966/1548/44 +f 970/1549/488 946/1550/488 945/1528/488 +f 973/1551/45 964/1552/45 974/1553/45 +f 945/1528/489 969/1554/489 950/1555/489 +f 964/1556/490 970/1557/490 949/1558/490 +f 945/1528/491 975/1559/491 969/1554/491 +f 973/1560/46 971/1561/46 970/1557/46 +f 972/1562/492 979/1563/492 977/1564/492 +f 972/1562/493 976/1565/493 973/1551/493 +f 981/1566/7 983/1567/7 980/1568/7 +f 976/1565/45 981/1569/45 980/1570/45 +f 971/1571/494 982/1572/494 946/1550/494 +f 976/1573/495 983/1567/495 971/1561/495 +f 975/1559/496 978/1574/496 984/1575/496 +f 947/1529/497 986/1576/497 979/1563/497 +f 948/1530/44 979/1563/44 978/1574/44 +f 946/1550/498 985/1577/498 947/1529/498 +f 981/1566/499 985/1578/499 982/1579/499 +f 969/1580/500 984/1575/500 966/1581/500 +f 972/1562/501 984/1575/501 978/1574/501 +f 977/1564/502 986/1582/502 981/1569/502 +f 990/1583/503 991/1584/503 969/1547/503 +f 938/1585/504 967/1546/504 939/1523/504 +f 966/1548/505 993/1586/505 994/1587/505 +f 997/1588/46 999/1589/46 942/1590/46 +f 1000/1591/10 955/1536/10 958/1535/10 +f 943/1592/7 965/1544/7 944/1593/7 +f 942/1590/506 1002/1594/506 943/1592/506 +f 997/1588/507 1000/1591/507 998/1595/507 +f 1004/1596/46 1006/1597/46 1003/1598/46 +f 1007/1599/10 959/1539/10 962/1538/10 +f 1009/1600/7 957/1601/7 956/1534/7 +f 1003/1598/506 1010/1602/506 1009/1600/506 +f 1007/1599/507 1004/1596/507 1008/1603/507 +f 1012/1604/46 1013/1605/46 1011/1606/46 +f 1014/1607/10 954/1541/10 953/1608/10 +f 1015/1609/7 961/1610/7 960/1537/7 +f 1015/1609/506 1013/1605/506 1016/1611/506 +f 1012/1604/507 953/1608/507 952/1612/507 +f 990/1583/48 1006/1613/48 1005/1614/48 +f 991/1584/48 1007/1615/48 1016/1616/48 +f 951/1531/48 1013/1617/48 952/1532/48 +f 989/1618/48 1000/1619/48 1010/1620/48 +f 988/1621/48 999/1622/48 998/1623/48 +f 937/1624/48 965/1625/48 1002/1626/48 +f 964/1627/45 963/1628/45 1014/1629/45 +f 993/1586/45 1012/1630/45 1011/1631/45 +f 994/1587/45 1015/1632/45 1008/1633/45 +f 995/1634/45 1004/1635/45 1003/1636/45 +f 996/1637/45 1009/1638/45 1001/1639/45 +f 941/1525/45 997/1640/45 942/1526/45 +f 1018/1641/1 1020/1642/1 1017/1643/1 +f 1022/1644/5 1024/1645/5 1021/1646/5 +f 1023/1647/6 1026/1648/6 1024/1645/6 +f 1028/1649/508 1030/1650/508 1027/1651/508 +f 1024/1645/509 1032/1652/509 1021/1646/509 +f 1018/1653/510 1034/1654/510 1035/1655/510 +f 1022/1656/511 1037/1657/511 1023/1658/511 +f 1038/1659/512 1040/1660/512 1041/1661/512 +f 1027/1662/513 1043/1663/513 1042/1664/513 +f 1044/1665/514 1046/1666/514 1042/1667/514 +f 1048/1668/515 1050/1669/515 1047/1670/515 +f 1048/1671/516 1051/1672/516 1049/1673/516 +f 1042/1674/517 1052/1675/517 1027/1676/517 +f 1044/1677/518 1053/1678/518 1045/1679/518 +f 1059/1680/3 1061/1681/3 1058/1682/3 +f 1060/1683/4 1063/1684/4 1061/1681/4 +f 1183/1685/519 1097/1686/519 1090/1687/519 +f 1067/1688/520 1068/1689/520 1069/1690/520 +f 1098/1691/9 1054/1692/9 1191/1693/9 +f 1074/1694/521 1075/1695/521 1073/1696/521 +f 1214/1697/522 1205/1698/522 1213/1699/522 +f 1079/1700/523 1070/1701/523 1074/1702/523 +f 1055/1703/524 1080/1704/524 1056/1705/524 +f 1081/1706/525 1075/1695/525 1064/1707/525 +f 1088/1708/526 1032/1709/526 1086/1710/526 +f 1083/1711/527 1080/1704/527 1079/1712/527 +f 1079/1700/528 1082/1713/528 1083/1714/528 +f 1031/1715/529 1069/1716/529 1032/1652/529 +f 1089/1717/530 1084/1718/530 1085/1719/530 +f 1071/1720/9 1055/1721/9 1098/1691/9 +f 1209/1722/531 1095/1723/531 1221/1724/531 +f 1095/1723/532 1077/1725/532 1076/1726/532 +f 1070/1727/9 1071/1720/9 1072/1728/9 +f 1099/1729/533 1100/1730/533 1101/1731/533 +f 1035/1732/534 1104/1733/534 1102/1734/534 +f 1105/1735/535 1107/1736/535 1029/1737/535 +f 1108/1738/536 1104/1733/536 1109/1739/536 +f 1110/1740/537 1111/1741/537 1112/1742/537 +f 1047/1743/538 1105/1744/538 1048/1745/538 +f 1023/1746/539 1099/1729/539 1025/1747/539 +f 1042/1748/540 1110/1740/540 1044/1749/540 +f 1028/1750/541 1105/1735/541 1029/1737/541 +f 1039/1751/542 1110/1752/542 1040/1753/542 +f 1018/1754/543 1102/1734/543 1019/1755/543 +f 1114/1756/544 1111/1741/544 1100/1730/544 +f 1115/1757/545 1106/1758/545 1103/1759/545 +f 1104/1733/546 1106/1758/546 1116/1760/546 +f 1034/1654/547 1103/1759/547 1035/1655/547 +f 1037/1657/548 1114/1756/548 1100/1730/548 +f 1030/1650/549 1107/1736/549 1117/1761/549 +f 1110/1752/550 1118/1762/550 1040/1753/550 +f 1105/1744/551 1116/1760/551 1106/1758/551 +f 1120/1763/552 1122/1764/552 1119/1765/552 +f 1051/1672/7 1120/1766/7 1049/1673/7 +f 1049/1767/7 1119/1765/7 1050/1669/7 +f 1052/1768/7 1123/1769/7 1051/1770/7 +f 1045/1771/7 1126/1772/7 1046/1666/7 +f 1045/1679/7 1127/1773/7 1125/1774/7 +f 1129/1775/553 1131/1776/553 1128/1777/553 +f 1125/1778/554 1133/1779/554 1126/1772/554 +f 1124/1780/555 1128/1781/555 1123/1769/555 +f 1124/1782/556 1133/1783/556 1129/1784/556 +f 1123/1785/557 1121/1786/557 1120/1766/557 +f 1134/1787/7 1136/1788/7 1137/1789/7 +f 1129/1790/558 1134/1791/558 1130/1792/558 +f 1128/1793/559 1138/1794/559 1121/1795/559 +f 1122/1796/560 1138/1797/560 1139/1798/560 +f 1140/1799/561 1135/1800/561 1132/1801/561 +f 1133/1802/562 1135/1803/562 1134/1787/562 +f 1131/1804/7 1143/1805/7 1138/1794/7 +f 1139/1798/7 1143/1806/7 1144/1807/7 +f 1141/1808/7 1136/1809/7 1135/1800/7 +f 1147/1810/9 1149/1811/9 1146/1812/9 +f 1150/1813/563 1151/1814/563 1152/1815/563 +f 1144/1807/564 1146/1816/564 1153/1817/564 +f 1145/1818/565 1155/1819/565 1136/1809/565 +f 1156/1820/566 1154/1821/566 1145/1822/566 +f 1137/1789/567 1155/1823/567 1151/1824/567 +f 1146/1816/1 1160/1825/1 1153/1817/1 +f 1154/1826/4 1164/1827/4 1155/1819/4 +f 1155/1823/5 1165/1828/5 1151/1824/5 +f 1166/1829/5 1162/1830/5 1161/1831/5 +f 1168/1832/6 1162/1830/6 1167/1833/6 +f 1170/1834/1 1172/1835/1 1169/1836/1 +f 1174/1837/3 1176/1838/3 1173/1839/3 +f 1175/1840/4 1161/1831/4 1176/1838/4 +f 1175/1841/7 1170/1842/7 1177/1843/7 +f 1178/1844/7 1180/1845/7 1181/1846/7 +f 1090/1687/568 1091/1847/568 1092/1848/568 +f 1064/1849/5 1185/1850/5 1067/1851/5 +f 1184/1852/569 1308/1853/569 1193/1854/569 +f 1064/1707/570 1069/1716/570 1081/1855/570 +f 1090/1687/571 1187/1856/571 1310/1857/571 +f 1191/1693/9 1054/1692/9 1180/1858/9 +f 1188/1859/8 1186/1860/8 1090/1687/8 +f 1162/1861/7 1159/1862/7 1160/1863/7 +f 1194/1864/9 1169/1836/9 1172/1835/9 +f 1189/1865/572 1195/1866/572 1196/1867/572 +f 1197/1868/7 1189/1865/7 1196/1867/7 +f 1097/1869/48 1093/1870/48 1096/1871/48 +f 1198/1872/573 1200/1873/573 1093/1874/573 +f 1201/1875/7 1145/1822/7 1141/1876/7 +f 1165/1877/6 1152/1815/6 1151/1814/6 +f 1183/1878/574 1198/1879/574 1097/1869/574 +f 1204/1880/10 1206/1881/10 1072/1882/10 +f 1082/1883/575 1073/1696/575 1087/1884/575 +f 1071/1885/10 1204/1886/10 1072/1887/10 +f 1099/1888/576 1115/1757/576 1034/1889/576 +f 1153/1890/2 1159/1862/2 1157/1891/2 +f 1208/1892/577 1071/1885/577 1098/1893/577 +f 1200/1894/578 1206/1881/578 1205/1895/578 +f 1065/1896/579 1093/1870/579 1078/1897/579 +f 1077/1898/10 1065/1896/10 1078/1897/10 +f 1185/1899/10 1077/1900/10 1095/1901/10 +f 1185/1899/577 1209/1902/577 1192/1903/577 +f 1195/1866/580 1192/1903/580 1209/1902/580 +f 1098/1893/580 1210/1904/580 1208/1892/580 +f 1211/1905/7 1127/1906/7 1053/1907/7 +f 1076/1726/581 1221/1724/581 1095/1723/581 +f 1237/1908/582 1209/1722/582 1221/1724/582 +f 1207/1909/583 1208/1910/583 1217/1911/583 +f 1104/1733/584 1215/1912/584 1109/1739/584 +f 1122/1913/585 1212/1914/585 1119/1915/585 +f 1142/1916/586 1146/1812/586 1143/1805/586 +f 1159/1917/3 1154/1821/3 1157/1918/3 +f 1236/1919/587 1217/1911/587 1208/1910/587 +f 1214/1697/46 1093/1874/46 1200/1873/46 +f 1038/1920/588 1113/1921/588 1047/1922/588 +f 1047/1923/589 1211/1924/589 1038/1925/589 +f 1032/1709/590 1068/1689/590 1086/1710/590 +f 1086/1926/591 1089/1927/591 1085/1928/591 +f 1215/1912/592 1113/1921/592 1041/1929/592 +f 1140/1930/593 1125/1774/593 1127/1773/593 +f 1131/1776/7 1150/1931/7 1142/1932/7 +f 1180/1845/594 1210/1904/594 1191/1933/594 +f 1219/1934/595 1221/1935/595 1094/1936/595 +f 1211/1924/7 1119/1915/7 1212/1914/7 +f 1101/1731/596 1107/1736/596 1115/1757/596 +f 1217/1911/597 1213/1699/597 1207/1909/597 +f 1086/1926/598 1222/1937/598 1088/1708/598 +f 1201/1875/599 1140/1938/599 1216/1939/599 +f 1134/1791/7 1150/1813/7 1130/1792/7 +f 1087/1940/600 1024/1645/600 1026/1648/600 +f 1224/1941/601 1203/1942/601 1223/1943/601 +f 1223/1943/602 1197/1944/602 1226/1945/602 +f 1178/1946/603 1227/1947/603 1179/1948/603 +f 1233/1949/604 1210/1950/604 1179/1948/604 +f 1224/1941/605 1178/1946/605 1225/1951/605 +f 1227/1947/606 1233/1949/606 1179/1948/606 +f 1229/1952/607 1226/1945/607 1196/1953/607 +f 1019/1954/2 1222/1955/2 1020/1642/2 +f 1019/1956/608 1108/1738/608 1228/1957/608 +f 1039/1958/609 1211/1905/609 1053/1907/609 +f 1111/1741/610 1101/1731/610 1100/1730/610 +f 1028/1959/611 1052/1768/611 1051/1770/611 +f 1040/1660/612 1215/1960/612 1041/1661/612 +f 1122/1961/613 1201/1962/613 1216/1963/613 +f 1201/1962/7 1144/1964/7 1156/1965/7 +f 1156/1965/614 1153/1890/614 1157/1891/614 +f 1056/1705/615 1089/1717/615 1059/1966/615 +f 1033/1967/616 1099/1888/616 1034/1889/616 +f 1194/1968/7 1159/1917/7 1158/1969/7 +f 1224/1970/617 1230/1971/617 1232/1972/617 +f 1195/1973/618 1234/1974/618 1229/1952/618 +f 1196/1953/619 1195/1973/619 1229/1952/619 +f 1076/1726/620 1077/1725/620 1078/1975/620 +f 1214/1697/621 1200/1873/621 1205/1698/621 +f 1210/1950/622 1236/1919/622 1208/1910/622 +f 1237/1908/623 1195/1973/623 1209/1722/623 +f 1231/1976/624 1239/1977/624 1232/1978/624 +f 1232/1978/625 1235/1979/625 1233/1949/625 +f 1230/1980/626 1234/1974/626 1240/1981/626 +f 1219/1982/627 1241/1983/627 1242/1984/627 +f 1219/1985/628 1243/1986/628 1220/1987/628 +f 1220/1987/629 1237/1908/629 1221/1724/629 +f 1237/1908/630 1240/1981/630 1234/1974/630 +f 1238/1988/631 1243/1986/631 1242/1989/631 +f 1238/1990/632 1241/1983/632 1239/1977/632 +f 1236/1919/633 1239/1977/633 1241/1983/633 +f 1281/1991/634 1367/1992/634 1245/1993/634 +f 1067/1851/4 1062/1994/4 1060/1683/4 +f 1061/1681/4 1244/1995/4 1193/1854/4 +f 1289/1996/635 1368/1997/635 1288/1998/635 +f 1284/1999/636 1370/2000/636 1289/2001/636 +f 1249/2002/637 1248/2003/637 1258/2004/637 +f 1282/2005/638 1371/2006/638 1281/2007/638 +f 1246/2008/639 1282/2009/639 1271/2010/639 +f 1367/2011/640 1372/2012/640 1246/2013/640 +f 1369/2014/8 1370/2015/8 1250/2016/8 +f 1248/2017/641 1250/2016/641 1251/2018/641 +f 1251/2018/642 1246/2013/642 1248/2017/642 +f 1368/2019/643 1249/2002/643 1288/2020/643 +f 1270/2021/644 1281/1991/644 1245/1993/644 +f 1286/2022/642 1245/1993/642 1285/2023/642 +f 1367/2024/645 1285/2023/645 1245/1993/645 +f 1258/2004/646 1246/2025/646 1271/2010/646 +f 1292/2026/8 1288/2020/8 1249/2002/8 +f 1249/2002/647 1262/2027/647 1265/2028/647 +f 1251/2029/648 1284/1999/648 1285/2023/648 +f 1253/2030/649 1277/2031/649 1278/2032/649 +f 1267/2033/650 1253/2030/650 1278/2032/650 +f 1277/2031/651 1269/2034/651 1276/2035/651 +f 1253/2030/652 1269/2034/652 1252/2036/652 +f 1273/2037/653 1255/2038/653 1272/2039/653 +f 1272/2039/654 1260/2040/654 1261/2041/654 +f 1259/2042/655 1273/2037/655 1262/2043/655 +f 1259/2042/656 1255/2038/656 1254/2044/656 +f 1275/2045/657 1257/2046/657 1274/2047/657 +f 1274/2047/658 1264/2048/658 1265/2049/658 +f 1263/2050/659 1275/2045/659 1266/2051/659 +f 1263/2050/652 1257/2046/652 1256/2052/652 +f 1258/2004/642 1272/2053/642 1261/2054/642 +f 1261/2041/660 1259/2042/660 1262/2043/660 +f 1262/2027/642 1274/2055/642 1265/2028/642 +f 1265/2049/661 1263/2050/661 1266/2051/661 +f 1267/2056/642 1275/2057/642 1276/2058/642 +f 1276/2035/662 1268/2059/662 1267/2033/662 +f 1279/2060/663 1291/2061/663 1292/2062/663 +f 1273/2063/664 1272/2053/664 1282/2009/664 +f 1279/2060/642 1277/2064/642 1280/2065/642 +f 1205/1698/665 1204/2066/665 1213/1699/665 +f 1290/2067/8 1284/1999/8 1289/2001/8 +f 1286/2022/666 1284/1999/666 1287/2068/667 +f 1293/2069/10 1291/2061/10 1295/2070/10 +f 1088/1708/4 1022/1644/4 1021/1646/4 +f 1297/2071/9 1018/1641/9 1017/1643/9 +f 1026/1648/8 1033/2072/8 1297/2071/8 +f 1083/1714/668 1297/2071/668 1017/1643/668 +f 1057/2073/2 1059/2074/2 1058/2075/2 +f 1298/2076/1 1056/2077/1 1057/2073/1 +f 1020/1642/669 1083/1711/669 1017/1643/669 +f 1301/2078/670 1036/2079/670 1300/2080/670 +f 1108/2081/671 1301/2078/671 1300/2082/671 +f 1300/2080/672 1022/2083/672 1296/2084/672 +f 1301/2078/673 1112/1742/673 1114/1756/673 +f 1117/1761/674 1043/1663/674 1030/2085/674 +f 1126/2086/7 1052/1675/7 1046/2087/7 +f 1150/1931/675 1147/2088/675 1142/1932/675 +f 1194/1864/8 1168/2089/8 1177/2090/8 +f 1171/2091/2 1174/1837/2 1173/1839/2 +f 1203/2092/7 1182/2093/7 1197/2094/7 +f 1225/2095/7 1181/2096/7 1188/2097/7 +f 1092/2098/45 1200/1894/45 1199/2099/45 +f 1152/2100/8 1148/2101/8 1147/2088/8 +f 1199/2099/676 1188/2097/676 1092/2098/676 +f 1031/2102/677 1073/2103/677 1081/1706/677 +f 1301/2078/678 1215/1960/678 1118/1762/678 +f 1212/2104/679 1140/2105/679 1127/1906/679 +f 1198/1872/680 1225/1951/680 1199/2106/680 +f 1222/1955/681 1084/1718/681 1020/1642/681 +f 1297/2071/682 1087/1884/682 1026/1648/682 +f 1222/1937/3 1296/2107/3 1088/1708/3 +f 1108/2081/683 1296/2108/683 1228/2109/683 +f 1060/2110/684 1089/1927/684 1068/2111/684 +f 1231/2112/685 1240/1981/685 1238/1988/685 +f 1218/2113/686 1236/1919/686 1241/1983/686 +f 1055/1721/1 1302/2114/1 1054/1692/1 +f 1299/2115/1 1055/1721/1 1056/2077/1 +f 1054/1692/1 1298/2076/1 1057/2073/1 +f 1283/2116/687 1290/2117/7 1294/2118/7 +f 1306/2119/10 1308/2120/10 1310/2121/10 +f 1057/2073/688 1306/2122/688 1305/2123/688 +f 1090/1687/689 1092/1848/689 1188/1859/689 +f 1091/1847/690 1075/2124/690 1206/2125/690 +f 1061/1681/691 1306/2126/691 1058/1682/691 +f 1090/1687/692 1309/2127/692 1184/1852/692 +f 1054/1692/693 1305/2128/693 1304/2129/693 +f 1193/1854/694 1307/2130/694 1061/1681/694 +f 1304/2131/695 1186/1860/695 1054/1692/695 +f 1206/2125/8 1070/1727/8 1072/1728/8 +f 1173/2132/7 1165/1877/7 1171/2133/7 +f 1173/2134/7 1148/2101/7 1202/2135/7 +f 1176/2136/7 1149/1811/7 1148/2137/7 +f 1161/2138/7 1160/1825/7 1149/2139/7 +f 1172/2140/7 1163/2141/7 1194/2142/7 +f 1164/2143/7 1171/2144/7 1165/1828/7 +f 1323/2145/696 1318/2146/7 1319/2147/697 +f 1287/2148/698 1270/2021/699 1286/2022/699 +f 1180/1858/9 1186/1860/9 1181/2149/9 +f 1065/2150/6 1064/1849/6 1075/2124/6 +f 1065/2150/700 1075/2124/700 1096/2151/700 +f 1185/1850/5 1192/2152/5 1067/1851/5 +f 1192/2152/5 1193/1854/5 1067/1851/5 +f 1193/1854/5 1190/2153/5 1189/2154/5 +f 1189/2154/5 1184/1852/5 1193/1854/5 +f 1090/1687/701 1096/2151/701 1075/2124/701 +f 1184/1852/6 1183/1685/6 1090/1687/6 +f 1244/1995/4 1067/1851/4 1193/1854/4 +f 1313/2155/10 1314/2156/10 1315/2157/10 +f 1320/2158/702 1322/2159/702 1319/2160/703 +f 1318/2161/6 1320/2158/6 1319/2160/704 +f 1311/2162/2 1324/2163/2 1325/2164/2 +f 1327/2165/705 1329/2166/705 1326/2167/705 +f 1335/2168/706 1314/2169/706 1334/2170/706 +f 1314/2156/707 1329/2166/707 1315/2157/707 +f 1335/2171/708 1338/2172/708 1339/2173/708 +f 1337/2174/705 1334/2170/705 1340/2175/705 +f 1341/2176/709 1342/2177/709 1343/2178/709 +f 1333/2179/705 1344/2180/705 1341/2181/705 +f 1345/2182/710 1346/2183/710 1347/2184/710 +f 1331/2185/705 1348/2186/705 1345/2187/705 +f 1342/2177/711 1350/2188/711 1343/2178/711 +f 1334/2189/712 1342/2177/712 1340/2190/712 +f 1333/2191/713 1343/2178/713 1350/2188/713 +f 1334/2189/714 1350/2188/714 1349/2192/714 +f 1346/2183/715 1352/2193/715 1347/2184/715 +f 1332/2194/716 1346/2183/716 1344/2195/716 +f 1331/2196/717 1347/2184/717 1352/2193/717 +f 1332/2194/718 1352/2193/718 1351/2197/718 +f 1353/2198/711 1339/2173/711 1338/2172/711 +f 1327/2199/719 1339/2173/719 1354/2200/719 +f 1337/2201/720 1353/2198/720 1338/2172/720 +f 1327/2199/721 1353/2198/721 1328/2202/721 +f 1320/2158/722 1356/2203/722 1321/2204/722 +f 1341/2181/723 1344/2180/723 1357/2205/723 +f 1316/2206/6 1315/2207/6 1357/2205/6 +f 1348/2186/724 1358/2208/724 1359/2209/724 +f 1321/2204/725 1361/2210/725 1360/2211/725 +f 1360/2211/705 1322/2159/705 1321/2204/705 +f 1324/2212/726 1336/2213/726 1360/2211/726 +f 1357/2205/727 1363/2214/727 1316/2206/727 +f 1358/2215/705 1356/2216/705 1359/2217/705 +f 1355/2218/728 1359/2217/728 1356/2216/728 +f 1364/2219/6 1362/2220/6 1355/2218/6 +f 1365/2221/729 1361/2222/729 1358/2215/729 +f 1325/2164/730 1358/2223/730 1330/2224/730 +f 1325/2225/731 1366/2226/731 1365/2221/731 +f 1357/2205/732 1359/2227/732 1362/2228/732 +f 1320/2158/733 1364/2229/733 1355/2230/733 +f 1317/2231/734 1363/2232/734 1364/2219/734 +f 1324/2212/735 1361/2233/735 1366/2234/735 +f 1319/2147/736 1336/2213/737 1323/2145/738 +f 1213/1699/4 1204/2066/4 1207/1909/4 +f 1294/2235/3 1295/2236/3 1282/2009/3 +f 1094/2237/739 1076/1726/739 1078/1975/739 +f 1078/1975/740 1093/1874/740 1094/2237/740 +f 1233/1949/741 1235/1979/741 1210/1950/741 +f 1226/1945/742 1197/1944/742 1196/1953/742 +f 1374/2238/1 1376/2239/1 1373/2240/1 +f 1375/2241/2 1378/2242/2 1376/2239/2 +f 1377/2243/3 1380/2244/3 1378/2245/3 +f 1379/2246/4 1382/2247/4 1380/2244/4 +f 1381/2248/5 1384/2249/5 1382/2247/5 +f 1383/2250/6 1386/2251/6 1384/2249/6 +f 1381/2248/5 1388/2252/5 1383/2250/5 +f 1385/2253/8 1390/2254/8 1386/2251/8 +f 1389/2255/9 1373/2240/9 1390/2254/9 +f 1384/2249/743 1391/2256/743 1392/2257/743 +f 1398/2258/10 1394/2259/10 1396/2260/10 +f 1380/2244/744 1397/2261/744 1396/2262/744 +f 1386/2251/745 1398/2263/745 1391/2264/745 +f 1378/2242/746 1394/2265/746 1376/2239/746 +f 1384/2249/747 1397/2266/747 1382/2247/747 +f 1390/2254/748 1393/2267/748 1398/2268/748 +f 1376/2239/749 1393/2269/749 1373/2240/749 +f 1380/2244/750 1395/2270/750 1378/2245/750 +f 1399/2271/751 1401/2272/751 1402/2273/751 +f 1389/2255/9 1399/2271/9 1374/2238/9 +f 1374/2238/1 1403/2274/1 1375/2241/1 +f 1377/2243/3 1405/2275/3 1379/2246/3 +f 1383/2250/6 1406/2276/6 1385/2253/6 +f 1379/2246/4 1387/2277/4 1381/2248/4 +f 1385/2253/8 1400/2278/8 1389/2255/8 +f 1375/2241/2 1404/2279/2 1377/2280/2 +f 1388/2252/752 1408/2281/752 1406/2276/752 +f 1387/2277/753 1409/2282/753 1410/2283/753 +f 1404/2279/754 1411/2284/754 1412/2285/754 +f 1400/2278/755 1408/2286/755 1401/2287/755 +f 1387/2277/756 1407/2288/756 1388/2252/756 +f 1405/2275/757 1412/2289/757 1409/2290/757 +f 1399/2271/758 1411/2291/758 1403/2274/758 +f 1412/2289/759 1414/2292/759 1409/2290/759 +f 1414/2293/7 1413/2294/7 1418/2295/7 +f 1402/2296/760 1415/2297/760 1411/2291/760 +f 1401/2272/761 1416/2298/761 1402/2273/761 +f 1408/2281/762 1419/2299/762 1418/2300/762 +f 1410/2283/763 1414/2301/763 1420/2302/763 +f 1412/2285/764 1415/2303/764 1413/2304/764 +f 1408/2286/765 1417/2305/765 1401/2287/765 +f 1407/2288/766 1420/2306/766 1419/2307/766 +f 1422/2308/4 1424/2309/4 1421/2310/4 +f 1422/2308/3 1426/2311/3 1423/2312/3 +f 1427/2313/2 1426/2314/2 1425/2315/2 +f 1429/2316/1 1428/2317/1 1427/2313/1 +f 1431/2318/9 1430/2319/9 1429/2316/9 +f 1433/2320/8 1432/2321/8 1431/2318/8 +f 1435/2322/9 1430/2319/9 1432/2321/9 +f 1437/2323/6 1434/2324/6 1433/2320/6 +f 1421/2310/5 1438/2325/5 1437/2323/5 +f 1431/2318/745 1440/2326/745 1433/2320/745 +f 1446/2327/10 1442/2328/10 1439/2329/10 +f 1427/2313/749 1443/2330/749 1429/2316/749 +f 1433/2320/743 1442/2331/743 1437/2323/743 +f 1446/2332/750 1425/2333/750 1422/2308/750 +f 1443/2334/748 1431/2318/748 1429/2316/748 +f 1437/2323/747 1441/2335/747 1421/2310/747 +f 1441/2336/744 1422/2308/744 1421/2310/744 +f 1445/2337/746 1427/2313/746 1425/2315/746 +f 1448/2338/756 1450/2339/756 1447/2340/756 +f 1447/2340/5 1438/2325/5 1424/2309/5 +f 1451/2341/4 1424/2309/4 1423/2312/4 +f 1452/2342/2 1426/2314/2 1428/2317/2 +f 1454/2343/8 1432/2321/8 1434/2324/8 +f 1436/2344/1 1428/2317/1 1430/2319/1 +f 1450/2339/6 1434/2324/6 1438/2325/6 +f 1453/2345/3 1423/2312/3 1426/2311/3 +f 1455/2346/767 1435/2322/767 1454/2343/767 +f 1436/2344/758 1458/2347/758 1452/2342/758 +f 1453/2345/757 1460/2348/757 1451/2341/757 +f 1449/2349/752 1454/2343/752 1450/2339/752 +f 1456/2350/751 1436/2344/751 1435/2322/751 +f 1452/2342/754 1459/2351/754 1453/2352/754 +f 1460/2353/753 1447/2340/753 1451/2341/753 +f 1461/2354/768 1459/2351/768 1458/2355/768 +f 1467/2356/7 1468/2357/7 1464/2358/7 +f 1463/2359/763 1448/2360/763 1460/2353/763 +f 1448/2338/766 1467/2361/766 1449/2362/766 +f 1455/2346/765 1465/2363/765 1456/2364/765 +f 1457/2365/760 1461/2366/760 1458/2347/760 +f 1459/2367/759 1463/2368/759 1460/2348/759 +f 1467/2369/762 1455/2370/762 1449/2349/762 +f 1456/2350/769 1464/2371/769 1457/2372/769 +f 1471/2373/770 1470/2374/770 1469/2375/770 +f 1473/2376/771 1471/2373/771 1469/2375/771 +f 1475/2377/772 1474/2378/772 1473/2376/772 +f 1478/2379/773 1470/2374/773 1472/2380/773 +f 1477/2381/774 1478/2379/774 1471/2373/774 +f 1475/2382/48 1473/2383/48 1469/2375/48 +f 1481/2384/775 1480/2385/775 1479/2386/775 +f 1483/2387/776 1481/2384/776 1479/2386/776 +f 1485/2388/777 1484/2389/777 1483/2387/777 +f 1482/2390/778 1487/2391/778 1480/2385/778 +f 1487/2391/779 1488/2392/779 1481/2384/779 +f 1485/2393/45 1483/2394/45 1479/2386/45 +f 1491/2395/780 1490/2396/780 1489/2397/780 +f 1493/2398/781 1491/2395/781 1489/2397/781 +f 1495/2399/782 1494/2400/782 1493/2398/782 +f 1498/2401/783 1490/2396/783 1492/2402/783 +f 1497/2403/784 1498/2401/784 1491/2395/784 +f 1495/2404/46 1493/2405/46 1489/2397/46 +f 1499/2406/785 1502/2407/785 1500/2408/785 +f 1503/2409/786 1501/2410/786 1499/2406/786 +f 1505/2411/787 1504/2412/787 1503/2409/787 +f 1508/2413/788 1500/2408/788 1502/2407/788 +f 1507/2414/789 1508/2413/789 1501/2410/789 +f 1505/2415/44 1503/2416/44 1499/2406/44 +f 1509/2417/790 1512/2418/790 1510/2419/790 +f 1513/2420/791 1511/2421/791 1509/2417/791 +f 1515/2422/792 1514/2423/792 1513/2420/792 +f 1512/2418/793 1517/2424/793 1510/2419/793 +f 1517/2424/794 1518/2425/794 1511/2421/794 +f 1515/2426/795 1513/2427/795 1509/2417/795 +f 1519/2428/796 1522/2429/796 1520/2430/796 +f 1523/2431/797 1521/2432/797 1519/2428/797 +f 1523/2431/798 1526/2433/798 1524/2434/798 +f 1528/2435/799 1520/2430/799 1522/2429/799 +f 1527/2436/800 1528/2435/800 1521/2432/800 +f 1525/2437/801 1523/2438/801 1519/2428/801 +f 1531/2439/802 1530/2440/802 1529/2441/802 +f 1529/2441/803 1534/2442/803 1531/2439/803 +f 1533/2443/804 1536/2444/804 1534/2442/804 +f 1532/2445/805 1537/2446/805 1530/2440/805 +f 1537/2446/806 1538/2447/806 1531/2439/806 +f 1535/2448/807 1533/2449/807 1529/2441/807 +f 1541/2450/808 1540/2451/808 1539/2452/808 +f 1539/2452/809 1544/2453/809 1541/2450/809 +f 1543/2454/810 1546/2455/810 1544/2453/810 +f 1548/2456/811 1540/2451/811 1542/2457/811 +f 1547/2458/812 1548/2456/812 1541/2450/812 +f 1545/2459/813 1543/2460/813 1539/2452/813 +f 2/1/1 3/4/1 4/2/1 +f 3/4/2 5/2461/2 6/5/2 +f 5/6/3 7/9/3 8/7/3 +f 7/9/4 9/11/4 10/10/4 +f 9/11/5 11/13/5 12/12/5 +f 11/13/6 13/18/6 14/14/6 +f 5/16/7 3/2462/7 2/2463/7 +f 2/2463/7 15/2464/7 5/16/7 +f 15/2464/7 13/17/7 5/16/7 +f 13/17/7 11/2465/7 9/2466/7 +f 9/2466/7 7/15/7 13/17/7 +f 13/18/8 15/20/8 16/19/8 +f 15/20/9 2/1/9 1/3/9 +f 16/23/10 1/2467/10 4/2468/10 +f 4/2468/10 6/2469/10 8/21/10 +f 8/21/10 10/2470/10 12/22/10 +f 12/22/10 14/2471/10 16/23/10 +f 16/23/10 4/2468/10 8/21/10 +f 18/24/1 19/27/1 20/25/1 +f 19/27/2 21/2472/2 22/28/2 +f 21/29/3 23/32/3 24/30/3 +f 23/32/4 25/34/4 26/33/4 +f 25/34/5 27/36/5 28/35/5 +f 27/36/6 29/41/6 30/37/6 +f 21/39/7 19/2473/7 18/2474/7 +f 18/2474/7 31/2475/7 21/39/7 +f 31/2475/7 29/40/7 21/39/7 +f 29/40/7 27/2476/7 25/2477/7 +f 25/2477/7 23/38/7 29/40/7 +f 29/41/8 31/43/8 32/42/8 +f 31/43/9 18/24/9 17/26/9 +f 32/46/10 17/2478/10 20/2479/10 +f 20/2479/10 22/2480/10 24/44/10 +f 24/44/10 26/2481/10 28/45/10 +f 28/45/10 30/2482/10 32/46/10 +f 32/46/10 20/2479/10 24/44/10 +f 34/47/1 35/50/1 36/48/1 +f 35/50/2 37/2483/2 38/51/2 +f 37/52/3 39/55/3 40/53/3 +f 39/55/4 41/57/4 42/56/4 +f 41/57/5 43/59/5 44/58/5 +f 43/59/6 45/64/6 46/60/6 +f 37/62/7 35/2484/7 34/2485/7 +f 34/2485/7 47/2486/7 37/62/7 +f 47/2486/7 45/63/7 37/62/7 +f 45/63/7 43/2487/7 41/2488/7 +f 41/2488/7 39/61/7 45/63/7 +f 45/64/8 47/66/8 48/65/8 +f 47/66/9 34/47/9 33/49/9 +f 48/69/10 33/2489/10 36/2490/10 +f 36/2490/10 38/2491/10 40/67/10 +f 40/67/10 42/2492/10 44/68/10 +f 44/68/10 46/2493/10 48/69/10 +f 48/69/10 36/2490/10 40/67/10 +f 50/70/1 51/73/1 52/71/1 +f 51/73/2 53/2494/2 54/74/2 +f 53/75/3 55/78/3 56/76/3 +f 55/78/4 57/80/4 58/79/4 +f 57/80/5 59/82/5 60/81/5 +f 59/82/6 61/87/6 62/83/6 +f 53/85/7 51/2495/7 50/2496/7 +f 50/2496/7 63/2497/7 53/85/7 +f 63/2497/7 61/86/7 53/85/7 +f 61/86/7 59/2498/7 57/2499/7 +f 57/2499/7 55/84/7 61/86/7 +f 61/87/8 63/89/8 64/88/8 +f 63/89/9 50/70/9 49/72/9 +f 64/92/10 49/2500/10 52/2501/10 +f 52/2501/10 54/2502/10 56/90/10 +f 56/90/10 58/2503/10 60/91/10 +f 60/91/10 62/2504/10 64/92/10 +f 64/92/10 52/2501/10 56/90/10 +f 66/93/1 67/96/1 68/94/1 +f 67/96/2 69/2505/2 70/97/2 +f 69/98/3 71/101/3 72/99/3 +f 71/101/4 73/103/4 74/102/4 +f 73/103/5 75/105/5 76/104/5 +f 75/105/6 77/110/6 78/106/6 +f 69/108/7 67/2506/7 66/2507/7 +f 66/2507/7 79/2508/7 69/108/7 +f 79/2508/7 77/109/7 69/108/7 +f 77/109/7 75/2509/7 73/2510/7 +f 73/2510/7 71/107/7 77/109/7 +f 77/110/8 79/112/8 80/111/8 +f 79/112/9 66/93/9 65/95/9 +f 80/115/10 65/2511/10 68/2512/10 +f 68/2512/10 70/2513/10 72/113/10 +f 72/113/10 74/2514/10 76/114/10 +f 76/114/10 78/2515/10 80/115/10 +f 80/115/10 68/2512/10 72/113/10 +f 81/116/11 82/2516/11 83/117/11 +f 84/118/7 83/117/7 85/119/7 +f 86/120/12 85/119/12 87/121/12 +f 87/121/13 89/127/13 90/123/13 +f 85/125/14 83/2517/14 82/126/14 +f 82/126/14 91/2518/14 89/2519/14 +f 89/2519/14 87/124/14 82/126/14 +f 89/127/10 91/129/10 92/128/10 +f 91/129/15 82/2520/15 81/130/15 +f 93/131/16 94/2521/16 95/132/16 +f 96/133/7 95/132/7 97/134/7 +f 98/135/17 97/134/17 99/136/17 +f 99/136/814 101/142/814 102/138/814 +f 97/140/14 95/2522/14 94/141/14 +f 94/141/14 103/2523/14 101/2524/14 +f 101/2524/14 99/139/14 94/141/14 +f 101/142/10 103/144/10 104/143/10 +f 103/144/19 94/2525/19 93/145/19 +f 105/146/16 106/2526/16 107/147/16 +f 108/148/7 107/147/7 109/149/7 +f 110/150/17 109/149/17 111/151/17 +f 111/151/814 113/157/814 114/153/814 +f 109/155/14 107/2527/14 106/156/14 +f 106/156/14 115/2528/14 113/2529/14 +f 113/2529/14 111/154/14 106/156/14 +f 113/157/10 115/159/10 116/158/10 +f 115/159/19 106/2530/19 105/160/19 +f 117/161/10 118/173/10 119/162/10 +f 119/164/20 121/179/20 122/165/20 +f 121/167/7 123/180/7 124/168/7 +f 123/170/21 118/178/21 117/171/21 +f 118/173/22 125/177/22 126/174/22 +f 126/174/23 125/177/23 128/175/23 +f 123/170/24 128/175/24 125/177/24 +f 121/179/25 119/164/25 126/174/25 +f 123/180/26 121/167/26 127/176/26 +f 129/181/27 130/184/27 131/182/27 +f 130/184/7 133/186/7 134/185/7 +f 133/186/28 135/189/28 136/187/28 +f 137/188/29 138/194/29 136/187/29 +f 132/192/30 131/2531/30 134/2532/30 +f 134/2532/30 136/2533/30 132/192/30 +f 136/2533/30 138/190/30 132/192/30 +f 140/193/10 139/196/10 138/194/10 +f 129/195/31 132/2534/31 139/196/31 +f 141/197/27 142/200/27 143/198/27 +f 142/200/7 145/202/7 146/201/7 +f 145/202/28 147/205/28 148/203/28 +f 149/204/815 150/210/815 148/203/815 +f 144/208/30 143/2535/30 146/2536/30 +f 146/2536/30 148/2537/30 144/208/30 +f 148/2537/30 150/206/30 144/208/30 +f 152/209/10 151/212/10 150/210/10 +f 141/211/31 144/2538/31 151/212/31 +f 153/213/32 154/216/32 155/214/32 +f 154/216/7 157/218/7 158/217/7 +f 157/218/816 159/221/816 160/219/816 +f 161/220/34 162/226/34 160/219/34 +f 156/224/30 155/2539/30 158/2540/30 +f 158/2540/30 160/2541/30 156/224/30 +f 160/2541/30 162/222/30 156/224/30 +f 164/225/10 163/228/10 162/226/10 +f 153/227/35 156/2542/35 163/228/35 +f 165/229/10 166/2543/10 167/230/10 +f 169/232/36 170/245/36 167/233/36 +f 171/235/7 172/246/7 170/236/7 +f 165/238/37 168/244/37 172/239/37 +f 173/241/38 174/2544/38 168/231/38 +f 176/242/39 174/2544/39 173/241/39 +f 168/244/40 174/2544/40 176/242/40 +f 175/243/817 173/241/817 167/233/817 +f 172/246/42 176/242/42 175/243/42 +f 178/247/43 179/2545/43 180/248/43 +f 208/250/44 210/2546/44 211/251/44 +f 211/253/45 216/2547/45 212/254/45 +f 188/256/46 184/298/46 181/257/46 +f 185/259/45 181/299/45 178/247/45 +f 183/261/47 186/272/47 187/262/47 +f 190/264/48 191/277/48 192/265/48 +f 188/267/49 190/264/49 189/266/49 +f 188/269/62 185/2548/62 187/270/62 +f 182/271/818 189/266/818 186/272/818 +f 193/274/63 192/265/63 194/275/63 +f 187/270/46 196/285/46 191/277/46 +f 189/266/44 192/265/44 193/274/44 +f 186/272/45 193/274/45 196/278/45 +f 194/279/53 197/290/53 198/280/53 +f 196/278/54 193/274/54 195/282/54 +f 191/277/55 197/2549/55 194/284/55 +f 196/285/819 200/2550/819 197/286/819 +f 202/287/7 199/2551/7 198/280/7 +f 200/289/57 201/288/57 198/280/57 +f 194/279/58 199/281/58 202/291/58 +f 195/292/59 202/291/59 201/293/59 +f 180/295/10 179/2552/10 204/296/10 +f 184/298/60 203/297/60 204/296/60 +f 181/299/45 204/2553/45 179/300/45 +f 184/298/48 177/249/48 180/301/48 +f 206/303/43 207/347/43 208/250/43 +f 216/304/46 213/2554/46 209/305/46 +f 213/307/48 210/2546/48 208/250/48 +f 188/309/48 182/2555/48 177/310/48 +f 213/312/49 214/329/49 215/313/49 +f 218/315/45 219/327/45 220/316/45 +f 217/317/61 220/316/61 216/318/61 +f 216/320/62 220/316/62 214/321/62 +f 215/313/51 217/317/51 211/323/51 +f 221/325/52 222/2556/52 223/326/52 +f 219/327/46 224/336/46 214/321/46 +f 221/325/44 218/315/44 217/317/44 +f 224/328/48 221/325/48 215/313/48 +f 223/330/59 225/2557/59 226/331/59 +f 224/328/64 228/2558/64 222/333/64 +f 223/334/65 227/2559/65 219/327/65 +f 227/335/819 228/2560/819 224/336/819 +f 226/331/7 225/2561/7 230/337/7 +f 226/331/57 229/338/57 228/339/57 +f 230/340/58 225/2557/58 223/330/58 +f 229/342/53 230/340/53 222/341/53 +f 232/344/10 207/2562/10 206/345/10 +f 232/344/60 231/346/60 212/306/60 +f 207/347/48 232/2563/48 209/308/48 +f 212/306/45 231/2564/45 206/348/45 +f 178/247/44 177/249/44 182/349/44 +f 234/350/1 235/353/1 236/351/1 +f 235/353/2 237/2565/2 238/354/2 +f 237/355/3 239/358/3 240/356/3 +f 239/358/4 241/360/4 242/359/4 +f 241/360/5 243/362/5 244/361/5 +f 243/362/6 245/364/6 246/363/6 +f 245/364/8 247/366/8 248/365/8 +f 247/366/9 234/350/9 233/352/9 +f 240/356/66 242/359/66 249/367/66 +f 256/370/10 251/2566/10 252/2567/10 +f 252/2567/10 253/2568/10 256/370/10 +f 253/2568/10 250/371/10 256/370/10 +f 250/371/10 249/2569/10 254/2570/10 +f 254/2570/10 255/369/10 250/371/10 +f 248/365/67 256/2571/67 255/372/67 +f 238/354/68 253/2572/68 252/373/68 +f 244/361/69 254/2573/69 249/374/69 +f 248/365/70 233/352/70 251/375/70 +f 236/351/71 252/2574/71 251/377/71 +f 238/357/72 240/356/72 250/378/72 +f 244/361/73 246/363/73 255/380/73 +f 258/382/74 259/385/74 260/383/74 +f 259/385/75 261/387/75 262/386/75 +f 261/387/76 263/389/76 264/388/76 +f 263/389/77 265/391/77 266/390/77 +f 265/391/78 267/393/78 268/392/78 +f 267/393/79 269/397/79 270/394/79 +f 261/395/48 259/385/48 258/382/48 +f 258/382/48 271/2575/48 269/396/48 +f 269/396/48 267/2576/48 265/2577/48 +f 265/2577/48 263/2578/48 269/396/48 +f 263/2578/48 261/395/48 269/396/48 +f 269/397/80 271/399/80 272/398/80 +f 271/399/81 258/2579/81 257/400/81 +f 272/402/45 257/384/45 264/403/45 +f 257/384/45 260/383/45 264/403/45 +f 260/383/45 262/2580/45 264/403/45 +f 264/403/45 266/2581/45 268/2582/45 +f 268/2582/45 270/401/45 264/403/45 +f 274/404/45 275/443/45 276/405/45 +f 273/407/45 277/2583/45 278/408/45 +f 280/410/82 281/449/82 282/411/82 +f 284/413/48 285/2584/48 286/414/48 +f 278/408/83 280/436/83 287/416/83 +f 273/417/44 285/426/44 284/418/44 +f 276/420/44 289/2585/44 290/421/44 +f 286/423/48 285/2586/48 288/424/48 +f 273/417/44 276/420/44 288/422/44 +f 291/425/84 292/435/84 293/427/84 +f 290/429/10 289/2587/10 295/430/10 +f 291/425/85 294/2588/85 296/432/85 +f 276/405/45 275/443/45 295/433/45 +f 288/424/48 290/2589/48 292/435/48 +f 280/436/46 279/446/46 296/437/46 +f 296/438/86 294/428/86 297/439/86 +f 294/428/87 293/427/87 298/441/87 +f 295/430/88 298/441/88 293/427/88 +f 320/442/89 319/2590/89 277/419/89 +f 275/443/90 297/439/90 298/441/90 +f 275/443/91 274/404/91 287/444/91 +f 283/415/92 286/414/92 296/437/92 +f 306/447/93 307/467/93 308/448/93 +f 280/450/94 278/499/94 306/447/94 +f 279/451/95 282/411/95 299/452/95 +f 308/448/96 310/464/96 311/454/96 +f 305/456/97 309/455/97 311/457/97 +f 299/452/99 282/411/99 309/455/99 +f 281/449/100 308/448/100 309/455/100 +f 283/453/48 300/487/48 301/459/48 +f 319/461/7 320/2591/7 312/462/820 +f 312/462/821 311/454/104 310/464/104 +f 284/460/48 301/459/48 302/465/48 +f 302/465/48 303/488/48 320/466/48 +f 307/467/106 318/494/822 310/468/106 +f 301/469/76 300/475/76 313/470/76 +f 304/472/79 303/483/79 322/473/79 +f 300/475/75 325/484/75 314/476/75 +f 323/477/80 304/472/80 317/474/80 +f 324/479/81 323/477/81 316/478/81 +f 302/481/77 301/469/77 321/471/77 +f 303/483/78 302/481/78 326/482/78 +f 325/484/74 324/2592/74 315/485/74 +f 305/456/48 323/489/48 324/486/48 +f 324/486/48 325/2593/48 299/452/48 +f 299/452/48 325/2593/48 300/487/48 +f 303/488/48 304/490/48 312/458/823 +f 323/489/48 305/456/48 312/458/824 +f 319/493/45 322/495/45 326/491/45 +f 326/491/45 321/498/45 277/492/45 +f 318/494/825 317/497/45 322/495/45 +f 318/494/826 307/467/45 316/496/45 +f 321/498/45 313/500/45 278/499/45 +f 306/447/45 278/499/45 313/500/45 +f 306/447/45 314/501/45 315/502/45 +f 315/502/45 316/496/45 307/467/45 +f 327/503/45 328/557/45 329/504/45 +f 332/506/7 333/2594/7 334/507/7 +f 336/509/44 337/556/44 338/510/44 +f 340/512/48 341/543/48 342/513/48 +f 344/515/44 345/563/44 346/516/44 +f 348/518/46 349/558/46 350/519/46 +f 352/521/45 353/540/45 354/522/45 +f 356/524/48 357/531/48 358/525/48 +f 360/527/10 361/2595/10 362/528/10 +f 363/530/827 350/559/827 358/525/827 +f 357/531/112 337/556/112 343/517/112 +f 364/532/828 328/557/828 351/523/828 +f 336/509/114 352/521/114 327/503/114 +f 365/541/829 366/565/829 342/513/829 +f 341/543/830 346/516/830 369/544/830 +f 370/546/831 371/553/831 329/504/831 +f 373/548/832 345/563/832 330/505/832 +f 350/519/127 363/2596/127 364/555/127 +f 357/531/48 340/512/48 339/514/48 +f 336/509/44 344/515/44 343/517/44 +f 352/521/45 351/523/45 328/557/45 +f 347/533/128 351/523/128 354/522/128 +f 335/511/114 353/540/114 352/521/114 +f 331/538/129 354/522/129 353/540/129 +f 348/518/130 331/508/130 334/507/130 +f 338/510/131 333/2594/131 332/506/131 +f 355/526/132 334/535/132 333/536/132 +f 349/534/133 355/526/133 358/525/133 +f 337/556/112 357/531/112 356/524/112 +f 366/560/134 365/566/134 370/561/134 +f 341/543/48 368/545/48 367/542/48 +f 345/563/833 373/567/833 369/564/833 +f 330/505/45 329/504/45 371/553/45 +f 330/505/114 345/563/114 344/515/114 +f 340/512/112 343/517/112 346/516/112 +f 339/514/136 342/513/136 366/565/136 +f 328/557/137 364/532/137 372/547/137 +f 365/566/138 359/529/138 362/528/138 +f 368/545/139 360/551/139 359/550/139 +f 373/567/834 361/2595/834 360/527/834 +f 374/549/141 371/553/141 362/552/141 +f 363/568/142 366/560/142 372/562/142 +f 376/570/10 377/2597/10 378/571/10 +f 377/573/45 379/584/45 380/574/45 +f 379/576/7 381/2598/7 382/577/7 +f 381/579/48 376/2599/48 375/580/48 +f 385/2600/143 382/581/143 384/583/143 +f 382/581/143 375/580/143 384/583/143 +f 377/573/44 376/2599/44 381/579/44 +f 387/585/46 384/2601/46 383/586/46 +f 386/2602/144 378/575/144 387/589/144 +f 378/575/144 380/574/144 387/589/144 +f 378/571/145 386/587/145 383/586/145 +f 382/577/146 385/2603/146 388/590/146 +f 390/591/45 391/2604/45 392/592/45 +f 385/594/147 393/607/147 390/595/147 +f 384/597/48 394/2605/48 393/598/48 +f 387/600/148 389/2606/148 394/601/148 +f 387/603/45 388/2607/45 390/591/45 +f 395/604/149 392/609/149 396/605/835 +f 393/607/152 398/618/152 391/608/152 +f 394/601/153 389/2606/153 392/609/153 +f 393/598/48 394/2605/48 395/610/48 +f 399/612/46 400/626/46 401/613/46 +f 395/610/48 399/623/48 402/615/48 +f 392/592/45 391/2604/45 401/616/45 +f 398/618/154 402/614/154 401/613/154 +f 404/619/836 405/628/156 406/620/156 +f 400/617/837 403/2608/838 396/622/839 +f 399/623/840 395/610/840 397/624/841 +f 399/612/163 404/619/842 403/621/843 +f 408/627/844 406/620/844 405/628/844 +f 396/622/845 403/2608/846 406/630/167 +f 397/606/847 396/605/848 408/632/169 +f 404/625/849 397/624/850 407/634/171 +f 418/636/172 411/2609/172 412/637/172 +f 409/639/48 414/646/48 417/640/48 +f 418/642/45 413/651/45 410/643/45 +f 415/645/48 416/659/48 417/640/48 +f 419/647/173 420/656/173 421/648/173 +f 418/642/45 421/660/45 422/650/45 +f 416/649/174 421/648/174 418/636/174 +f 422/652/175 415/657/175 414/653/175 +f 419/647/176 423/658/176 424/655/176 +f 424/655/177 423/658/177 415/657/177 +f 423/658/48 419/647/48 416/659/48 +f 421/660/45 420/656/45 424/655/45 +f 414/653/178 409/2610/178 410/661/178 +f 466/662/179 431/683/179 427/663/179 +f 465/664/180 427/663/180 425/665/180 +f 425/665/181 427/663/181 428/667/181 +f 468/669/182 432/673/182 430/670/182 +f 461/672/183 426/684/183 432/673/183 +f 430/670/184 431/683/184 466/662/184 +f 433/674/48 434/2611/48 435/675/48 +f 427/663/185 431/683/185 433/677/185 +f 432/673/186 437/693/186 434/679/186 +f 426/680/187 425/665/187 429/681/187 +f 430/670/188 434/2611/188 433/674/188 +f 426/684/189 438/689/189 437/685/189 +f 436/686/190 440/712/190 441/687/190 +f 438/689/48 442/2612/48 443/690/48 +f 429/668/48 428/667/48 439/691/48 +f 433/677/48 436/686/48 439/688/48 +f 437/693/48 443/2613/48 435/694/48 +f 438/682/48 429/681/48 444/695/48 +f 445/697/48 446/723/48 447/698/48 +f 435/694/191 443/2613/191 448/700/191 +f 444/695/192 449/715/192 450/702/192 +f 435/675/193 445/697/193 440/699/193 +f 443/690/851 442/2612/851 450/703/851 +f 439/691/852 441/2614/852 449/705/852 +f 447/706/183 452/2615/183 453/707/183 +f 450/703/48 454/725/48 455/709/48 +f 449/705/48 441/2614/48 451/710/48 +f 440/712/48 447/706/48 451/708/48 +f 445/701/48 448/700/48 455/713/48 +f 449/715/48 456/721/48 454/716/48 +f 460/719/48 457/2616/48 458/717/48 +f 457/2616/48 453/2617/48 458/717/48 +f 453/2617/48 452/2618/48 458/717/48 +f 455/713/180 459/2619/180 458/720/180 +f 456/721/184 457/2620/184 460/722/184 +f 446/723/196 458/2621/196 452/724/196 +f 454/725/179 460/2622/179 459/726/179 +f 451/710/182 453/2623/182 457/727/182 +f 462/666/197 463/742/197 464/728/197 +f 462/666/196 425/665/196 426/680/196 +f 470/730/45 471/756/45 472/731/45 +f 465/664/198 464/744/198 469/733/198 +f 467/671/199 472/746/199 473/734/199 +f 474/735/200 463/748/200 462/666/200 +f 466/662/201 469/732/201 472/731/201 +f 473/736/202 474/741/202 461/672/202 +f 476/737/203 477/768/203 470/738/203 +f 473/736/45 478/757/45 479/740/45 +f 463/742/45 480/760/45 475/743/45 +f 475/739/45 470/738/45 469/733/45 +f 471/745/45 478/753/45 473/734/45 +f 474/735/45 479/755/45 480/747/45 +f 481/749/45 482/781/45 483/750/45 +f 471/745/204 483/769/204 484/752/204 +f 485/754/205 486/772/205 480/747/205 +f 470/730/206 477/751/206 483/750/206 +f 478/757/853 484/765/853 485/758/853 +f 486/759/854 476/767/854 475/743/854 +f 488/761/183 489/2624/183 481/762/183 +f 490/764/45 491/783/45 485/758/45 +f 486/759/45 492/785/45 487/766/45 +f 487/763/45 481/762/45 477/768/45 +f 483/769/45 482/777/45 490/770/45 +f 485/754/45 491/779/45 492/771/45 +f 488/775/45 493/2625/45 496/773/45 +f 493/2625/45 494/2626/45 496/773/45 +f 494/2626/45 495/2627/45 496/773/45 +f 496/776/180 495/2628/180 490/770/180 +f 494/778/184 493/2629/184 492/771/184 +f 489/780/196 496/2630/196 482/781/196 +f 495/782/179 494/2631/179 491/783/179 +f 493/784/182 488/2632/182 487/766/182 +f 498/786/209 499/800/209 500/787/209 +f 500/787/7 499/800/7 501/789/7 +f 502/790/210 501/789/210 503/791/210 +f 503/793/211 505/796/211 506/794/211 +f 505/796/10 507/798/10 508/797/10 +f 507/798/212 498/786/212 497/788/212 +f 498/786/213 509/809/213 510/799/213 +f 510/799/7 511/802/7 501/801/7 +f 511/802/214 512/2633/214 503/803/214 +f 512/804/215 513/2634/215 505/805/215 +f 505/805/10 513/2634/10 514/807/10 +f 514/807/216 509/809/216 498/786/216 +f 515/808/217 516/817/217 510/799/217 +f 510/799/7 516/817/7 517/810/7 +f 517/810/218 518/2635/218 512/812/218 +f 512/813/219 518/2636/219 519/814/219 +f 519/814/10 520/826/10 514/807/10 +f 514/807/220 520/826/220 515/808/220 +f 521/816/210 522/828/210 516/817/210 +f 516/817/7 522/828/7 523/818/7 +f 517/819/209 523/818/209 524/820/209 +f 524/822/212 525/825/212 519/823/212 +f 525/825/10 526/835/10 520/826/10 +f 520/826/211 526/835/211 521/816/211 +f 527/827/214 528/837/214 522/828/214 +f 522/828/7 528/837/7 529/829/7 +f 529/829/213 530/2637/213 524/831/213 +f 524/832/216 530/2638/216 531/833/216 +f 531/833/10 532/844/10 526/835/10 +f 526/835/215 532/844/215 527/827/215 +f 497/836/218 500/2639/218 528/837/218 +f 528/837/7 500/2639/7 502/838/7 +f 502/838/217 504/2640/217 530/840/217 +f 530/841/220 504/2641/220 506/842/220 +f 506/842/10 508/2642/10 532/844/10 +f 532/844/219 508/2642/219 497/836/219 +f 533/845/855 537/848/222 538/846/222 +f 537/848/224 539/2643/224 540/849/224 +f 539/850/225 541/856/225 542/851/225 +f 537/855/48 533/845/856 543/866/857 +f 543/866/858 544/2644/48 537/855/48 +f 544/2644/48 541/853/48 537/855/48 +f 541/856/226 544/858/226 545/857/226 +f 544/858/227 543/866/859 546/859/860 +f 545/862/45 546/859/861 534/847/862 +f 534/847/863 538/2645/45 545/862/45 +f 538/2645/45 540/860/45 545/862/45 +f 548/863/864 549/867/230 550/864/230 +f 533/845/865 534/847/866 546/859/867 +f 549/867/235 551/872/235 552/868/235 +f 547/869/868 550/864/45 552/868/45 +f 535/871/869 552/868/239 551/872/239 +f 548/874/870 536/2646/871 551/872/48 +f 553/875/242 554/888/242 555/876/242 +f 555/876/243 557/885/243 558/878/243 +f 557/879/244 559/882/244 560/880/244 +f 559/882/245 561/886/245 562/883/245 +f 555/876/246 563/2647/246 564/884/246 +f 561/886/247 565/893/247 566/887/247 +f 566/887/248 565/893/248 554/888/248 +f 560/880/249 567/915/249 568/889/249 +f 564/891/250 563/2648/250 569/892/250 +f 569/892/250 570/2649/250 571/2650/250 +f 571/2650/250 572/890/250 569/892/250 +f 565/893/251 561/886/251 571/894/251 +f 554/888/252 569/2651/252 563/896/252 +f 559/882/253 557/879/253 564/897/253 +f 554/888/254 565/893/254 570/899/254 +f 559/882/255 572/2652/255 571/901/255 +f 573/902/256 574/2653/256 575/903/256 +f 566/887/872 553/875/872 577/905/872 +f 562/883/873 573/921/873 567/907/873 +f 556/877/259 558/878/259 568/908/259 +f 566/887/260 574/2653/260 573/902/260 +f 553/875/261 556/877/261 578/910/261 +f 575/912/262 579/2654/262 580/913/262 +f 567/915/256 582/2655/256 583/916/256 +f 577/911/256 578/910/256 584/917/256 +f 574/906/256 577/905/256 579/919/256 +f 573/921/256 576/2656/256 582/922/256 +f 578/909/256 568/908/256 583/923/256 +f 581/927/256 580/2657/256 587/925/256 +f 580/2657/256 585/2658/256 587/925/256 +f 585/2658/256 586/2659/256 587/925/256 +f 576/928/263 588/2660/263 587/929/263 +f 583/931/264 586/2661/264 585/932/264 +f 575/934/265 581/2662/265 588/935/265 +f 583/937/266 582/2663/266 587/938/266 +f 584/940/267 585/2664/267 580/941/267 +f 589/943/874 590/2665/874 591/944/874 +f 593/946/875 594/1031/875 595/947/875 +f 597/949/270 598/961/270 599/950/270 +f 601/952/876 589/2666/876 602/953/876 +f 596/955/272 603/968/272 604/956/272 +f 590/958/877 589/2667/877 601/959/877 +f 598/961/274 606/981/274 607/962/274 +f 596/948/275 595/947/275 599/963/275 +f 603/965/276 609/2668/276 598/966/276 +f 603/968/277 596/955/277 608/969/277 +f 606/971/278 610/975/278 611/972/278 +f 599/963/279 607/983/279 613/974/279 +f 598/966/280 609/2668/280 610/975/280 +f 608/969/281 613/980/281 610/976/281 +f 615/977/282 612/2669/282 611/978/282 +f 613/980/283 614/979/283 611/978/283 +f 606/981/284 612/2670/284 615/982/284 +f 607/983/285 615/2671/285 614/984/285 +f 616/985/878 617/1006/878 618/986/878 +f 602/988/879 620/1001/879 616/989/879 +f 619/991/880 616/985/880 591/987/880 +f 602/953/881 589/2666/881 592/993/881 +f 621/995/882 618/1000/882 622/996/882 +f 620/994/883 592/993/883 621/998/883 +f 592/945/884 591/944/884 618/1000/884 +f 620/1001/885 624/1005/885 617/1002/885 +f 623/997/886 622/996/886 626/1003/886 +f 624/1005/887 625/1004/887 626/1003/887 +f 617/1006/888 626/2672/888 622/1007/888 +f 624/999/889 621/998/889 623/1008/889 +f 594/1010/298 627/1012/298 597/949/298 +f 628/1011/299 629/1014/299 627/1012/299 +f 630/1013/300 631/1038/300 629/1014/300 +f 633/1015/272 634/1019/272 635/1016/272 +f 636/1018/272 637/1020/272 634/1019/272 +f 593/957/272 604/956/272 637/1020/272 +f 597/967/890 627/1022/890 604/1021/890 +f 627/1022/891 629/1024/891 637/1023/891 +f 629/1024/892 631/1040/892 634/1025/892 +f 632/1026/893 638/1034/893 630/1027/893 +f 633/1028/894 630/1027/894 628/1029/894 +f 636/1030/895 628/1029/895 594/1031/895 +f 619/991/896 590/992/896 605/1032/896 +f 639/1033/897 605/1032/897 638/1034/897 +f 619/990/898 639/1036/898 600/1035/898 +f 632/1017/272 635/1016/272 600/1035/272 +f 630/1013/310 638/1039/310 640/1037/310 +f 605/960/311 601/959/311 640/1037/311 +f 631/1040/899 640/1042/899 635/1041/899 +f 640/1042/900 601/952/900 600/954/900 +f 642/1043/314 643/1085/314 644/1044/314 +f 646/1046/45 647/2673/901 648/1047/45 +f 648/1047/315 650/1054/315 651/1049/315 +f 653/1051/902 642/1043/48 641/1045/48 +f 648/1047/317 647/2673/903 654/1053/317 +f 646/1055/44 642/1094/44 653/1056/904 +f 656/1058/905 657/1102/906 658/1059/321 +f 641/1045/48 659/1071/48 660/1061/48 +f 645/1048/45 648/1047/45 649/1050/45 +f 662/1063/322 663/1075/322 664/1064/322 +f 652/1052/323 660/1061/323 666/1066/323 +f 669/1068/324 670/1081/324 671/1069/324 +f 659/1071/48 663/1075/48 672/1072/907 +f 661/1062/45 649/1050/45 656/1058/908 +f 662/1063/48 674/1098/48 675/1073/48 +f 663/1075/327 659/1071/327 676/1076/327 +f 663/1075/48 662/1063/48 673/1074/48 +f 668/1070/45 656/1058/909 655/1060/45 +f 682/1077/329 688/1092/329 674/1078/329 +f 688/1080/910 682/2674/910 670/1081/910 +f 652/1052/331 667/1067/331 678/1082/331 +f 646/1046/333 645/1048/333 679/1083/333 +f 643/1085/10 680/1084/10 679/1083/10 +f 679/1086/334 681/2675/334 676/1087/334 +f 681/1089/335 671/1069/335 664/1064/335 +f 671/1069/336 670/1081/336 665/1065/336 +f 670/1081/337 682/1077/337 683/1079/337 +f 659/1090/338 641/2676/338 644/1088/338 +f 675/1091/339 674/1078/339 688/1092/339 +f 646/1055/340 680/1084/340 643/1085/340 +f 661/1095/341 681/2675/341 679/1086/341 +f 669/1068/45 655/1060/45 677/1097/45 +f 668/1070/342 671/1069/342 681/1089/342 +f 674/1098/911 662/1063/911 665/1065/911 +f 654/1053/7 678/2677/7 667/1100/7 +f 667/1100/344 666/1101/344 651/1049/344 +f 666/1101/345 684/1103/912 657/1102/913 +f 684/1103/914 685/1104/348 658/1059/348 +f 685/1104/350 686/2678/350 687/1105/350 +f 675/1073/915 686/2679/915 685/1106/915 +f 660/1061/352 672/1072/916 684/1107/917 +f 675/1091/354 677/1093/354 687/1108/354 +f 677/1097/918 655/1060/918 658/1059/918 +f 649/1050/356 651/1049/356 657/1102/919 +f 653/1056/920 678/2680/360 654/1110/360 +f 672/1072/921 673/1074/363 685/1106/363 +f 689/1111/922 690/2681/922 691/1112/922 +f 691/1112/2 693/2682/2 694/1114/2 +f 693/1115/3 695/1118/3 696/1116/3 +f 695/1118/4 697/1120/4 698/1119/4 +f 697/1120/5 699/1122/5 700/1121/5 +f 699/1122/6 701/1127/6 702/1123/6 +f 693/1125/7 691/2683/7 701/1126/7 +f 691/2683/7 690/2684/7 701/1126/7 +f 690/2684/7 703/2685/7 701/1126/7 +f 701/1126/7 699/2686/7 697/2687/7 +f 697/2687/7 695/1124/7 701/1126/7 +f 701/1127/8 703/1129/8 704/1128/8 +f 703/1129/923 690/2681/923 689/1111/923 +f 706/1130/367 707/2688/367 708/1131/367 +f 710/1133/368 711/1168/368 712/1134/368 +f 713/1136/369 714/1147/369 710/1137/369 +f 715/1139/370 716/1143/370 717/1140/370 +f 705/1132/371 708/2689/371 717/1142/371 +f 706/1144/372 719/1150/372 720/1145/372 +f 714/1147/373 721/1153/373 722/1148/373 +f 719/1150/374 713/1136/374 709/1151/374 +f 721/1153/375 715/1139/375 718/1154/375 +f 724/1156/8 725/1182/8 726/1157/8 +f 720/1159/376 727/1171/376 728/1160/376 +f 708/1162/377 729/1174/377 730/1163/377 +f 717/1165/378 730/1163/378 724/1156/378 +f 722/1167/379 723/1158/379 711/1168/379 +f 720/1170/380 709/2690/380 712/1134/380 +f 708/1172/381 707/2691/381 728/1173/381 +f 718/1175/382 724/1156/382 723/1158/382 +f 726/1157/383 732/2692/383 733/1177/383 +f 712/1134/5 711/1168/5 731/1178/5 +f 727/1171/3 735/1183/3 736/1180/3 +f 729/1174/1 737/1184/1 738/1181/1 +f 730/1163/9 738/1181/9 725/1182/9 +f 723/1158/6 726/1157/6 731/1178/6 +f 712/1134/4 734/1179/4 735/1183/4 +f 728/1173/2 736/1189/2 737/1184/2 +f 739/1185/384 740/2693/384 741/1186/384 +f 734/1179/385 743/2694/385 744/1188/385 +f 736/1189/386 745/2695/386 740/1190/386 +f 726/1157/387 725/1182/387 746/1191/387 +f 734/1179/388 731/1178/388 733/1193/388 +f 736/1180/389 735/1183/389 744/1195/389 +f 737/1184/390 740/2696/390 739/1197/390 +f 738/1181/391 739/2697/391 746/1198/391 +f 748/1199/8 749/1224/8 750/1200/8 +f 739/1202/392 742/1187/392 748/1199/392 +f 732/1204/393 747/1201/393 751/1205/393 +f 743/1207/394 752/1214/394 753/1208/394 +f 745/1210/395 754/1227/395 741/1186/395 +f 732/1212/396 746/2698/396 748/1199/396 +f 733/1213/397 751/1205/397 752/1214/397 +f 745/1216/398 744/2699/398 753/1208/398 +f 755/1218/399 756/2700/399 757/1219/399 +f 751/1205/5 759/1225/5 760/1221/5 +f 753/1208/3 761/1226/3 756/1222/3 +f 741/1186/1 755/1218/1 762/1223/1 +f 742/1187/9 762/1223/9 749/1224/9 +f 747/1201/6 750/1200/6 759/1225/6 +f 752/1214/4 760/1221/4 761/1226/4 +f 754/1227/2 756/2700/2 755/1218/2 +f 764/1228/400 765/2701/400 766/1229/400 +f 749/1224/401 763/2702/401 767/1231/401 +f 759/1225/402 768/2703/402 769/1232/402 +f 761/1226/403 770/2704/403 757/1233/403 +f 755/1218/404 758/2705/404 764/1234/404 +f 749/1224/405 762/1223/405 764/1228/405 +f 750/1200/406 767/1241/406 768/1235/406 +f 761/1226/407 760/1221/407 769/1236/407 +f 766/1238/408 772/2706/408 773/1239/408 +f 767/1241/409 771/2707/409 774/1242/409 +f 769/1236/410 775/2708/410 776/1243/410 +f 757/1219/411 777/2709/411 778/1244/411 +f 767/1231/412 763/2702/412 766/1238/412 +f 769/1232/413 768/2703/413 774/1245/413 +f 757/1233/414 770/2704/414 776/1247/414 +f 764/1234/415 758/2705/415 778/1249/415 +f 773/1251/10 780/1280/10 781/1252/10 +f 774/1245/416 779/2710/416 782/1254/416 +f 776/1247/417 783/2711/417 784/1255/417 +f 778/1249/418 785/2712/418 786/1256/418 +f 766/1229/419 765/2701/419 786/1257/419 +f 774/1242/420 771/2707/420 773/1251/420 +f 776/1243/421 775/2708/421 782/1259/421 +f 778/1244/422 777/2709/422 784/1261/422 +f 788/1263/5 789/2713/5 790/1264/5 +f 782/1259/10 791/1282/10 792/1266/10 +f 784/1261/10 793/1284/10 788/1267/10 +f 773/1239/10 772/2706/10 794/1268/10 +f 782/1254/10 779/2710/10 781/1270/10 +f 784/1255/10 783/2711/10 792/1272/10 +f 786/1256/10 785/2712/10 788/1263/10 +f 786/1257/10 787/1278/10 794/1274/10 +f 800/1276/10 790/2714/10 789/2715/10 +f 789/2715/10 795/2716/10 800/1276/10 +f 795/2716/10 796/1277/10 800/1276/10 +f 796/1277/10 797/2717/10 798/2718/10 +f 798/2718/10 799/1275/10 796/1277/10 +f 787/1278/4 790/2719/4 800/1279/4 +f 780/1280/2 799/2720/2 798/1281/2 +f 791/1282/9 797/2721/9 796/1283/9 +f 793/1284/6 795/2722/6 789/1285/6 +f 794/1268/3 800/2723/3 799/1286/3 +f 781/1270/1 798/2724/1 797/1287/1 +f 792/1272/8 796/2725/8 795/1288/8 +f 715/1139/423 801/2726/423 802/1289/423 +f 803/1290/924 801/2726/924 715/1139/924 +f 714/1147/925 804/2727/925 803/1290/925 +f 805/1291/424 804/2727/424 714/1147/424 +f 719/1150/425 806/2728/425 805/1291/425 +f 807/1292/926 806/2728/926 719/1150/926 +f 705/1132/927 808/2729/927 807/1293/927 +f 802/1289/426 808/2729/426 705/1132/426 +f 704/1294/366 689/2730/366 810/1295/366 +f 702/1297/428 704/1294/428 809/1296/428 +f 812/1299/429 700/1301/429 702/1297/429 +f 813/1300/928 698/2731/928 700/1301/928 +f 696/1302/929 698/2731/929 813/1300/929 +f 815/1304/930 694/2732/930 696/1302/930 +f 692/1305/931 694/2733/931 815/1306/931 +f 810/1295/365 689/2730/365 692/1305/365 +f 802/1308/1 817/2734/1 818/1309/1 +f 819/1311/435 820/2735/435 821/1312/435 +f 824/1314/1 825/1324/1 826/1315/1 +f 809/1317/436 827/1392/436 828/1318/436 +f 818/1309/932 829/2736/932 807/1320/932 +f 830/1321/438 831/2737/438 832/1322/438 +f 825/1324/2 833/2738/2 830/1325/2 +f 813/1326/439 812/2739/439 834/1327/439 +f 807/1329/933 829/2740/933 836/1330/933 +f 837/1332/441 836/2741/441 838/1333/441 +f 833/1335/3 840/1345/3 841/1336/3 +f 843/1338/934 844/1391/934 845/1339/934 +f 836/1330/4 837/1350/4 805/1341/4 +f 829/1342/935 818/2742/935 846/1343/935 +f 840/1345/4 848/1355/4 849/1346/4 +f 814/1347/936 850/1389/936 851/1348/936 +f 837/1350/5 820/1360/5 804/1351/5 +f 852/1352/445 853/2743/445 854/1353/445 +f 848/1355/5 856/1365/5 857/1356/5 +f 848/1357/937 858/1390/937 859/1358/937 +f 820/1360/938 819/2744/938 803/1361/938 +f 857/1362/448 860/1408/448 861/1363/448 +f 856/1365/6 843/1374/6 852/1366/6 +f 810/1367/449 816/2745/449 862/1368/449 +f 803/1361/939 819/2744/939 864/1370/939 +f 864/1372/451 819/2746/451 822/1313/451 +f 843/1374/8 842/1382/8 853/1375/8 +f 833/1376/940 866/1388/940 867/1377/940 +f 864/1370/9 817/2734/9 802/1308/9 +f 830/1379/453 841/2747/453 868/1380/453 +f 842/1382/9 824/1314/9 823/1316/9 +f 824/1383/941 869/1386/941 870/1384/941 +f 863/1369/1 862/1368/1 870/1384/1 +f 862/1368/2 851/1397/2 866/1387/2 +f 851/1348/3 850/1389/3 867/1377/3 +f 850/1389/4 835/1328/4 858/1390/4 +f 835/1328/5 834/1327/5 859/1358/5 +f 834/1327/6 828/1318/6 844/1391/6 +f 828/1318/8 827/1392/8 845/1339/8 +f 827/1392/9 863/1369/9 869/1386/9 +f 825/1393/942 870/1384/942 866/1387/942 +f 848/1395/943 840/2748/943 867/1377/943 +f 816/1396/944 815/2749/944 851/1397/944 +f 856/1398/945 859/1358/945 844/1391/945 +f 813/1400/946 835/1328/946 850/1389/946 +f 824/1402/947 842/2750/947 845/1339/947 +f 812/1403/461 811/2751/461 828/1318/461 +f 810/1404/462 863/1369/462 827/1392/462 +f 871/1406/1 872/1415/1 832/1322/1 +f 832/1322/2 831/2737/2 847/1344/2 +f 831/1381/3 868/1380/3 838/1333/3 +f 868/1380/4 861/1363/4 839/1334/4 +f 861/1363/5 860/1408/5 821/1312/5 +f 860/1408/6 855/1354/6 822/1313/6 +f 855/1354/8 854/1353/8 865/1373/8 +f 854/1353/9 872/1415/9 871/1406/9 +f 841/1409/463 849/2752/463 861/1363/463 +f 864/1410/948 865/1373/948 871/1406/948 +f 852/1412/465 855/1354/465 860/1408/465 +f 853/1414/949 823/2753/949 872/1415/949 +f 817/1416/950 871/1406/950 846/1343/950 +f 829/1418/951 847/1407/951 838/1333/951 +f 826/1420/952 832/1322/952 872/1415/952 +f 837/1422/470 839/1334/470 821/1312/470 +f 874/1424/1 875/1427/1 876/1425/1 +f 875/1427/2 877/2754/2 878/1428/2 +f 877/1429/3 879/1432/3 880/1430/3 +f 879/1432/4 881/1434/4 882/1433/4 +f 881/1434/5 883/1436/5 884/1435/5 +f 883/1436/6 885/1441/6 886/1437/6 +f 877/1440/7 875/2755/7 874/2756/7 +f 874/2756/7 887/2757/7 877/1440/7 +f 887/2757/7 885/2758/7 877/1440/7 +f 885/2758/7 883/2759/7 877/1440/7 +f 883/2759/7 881/1438/7 877/1440/7 +f 885/1441/8 887/1443/8 888/1442/8 +f 887/1443/9 874/1424/9 873/1426/9 +f 888/1446/10 873/2760/10 876/2761/10 +f 876/2761/10 878/2762/10 888/1446/10 +f 878/2762/10 880/2763/10 888/1446/10 +f 880/2763/10 882/2764/10 888/1446/10 +f 882/2764/10 884/1444/10 888/1446/10 +f 890/1447/471 891/2765/471 892/1448/471 +f 890/1450/45 894/1464/45 895/1451/45 +f 894/1453/472 896/1456/472 897/1454/472 +f 896/1456/48 889/1449/48 900/1457/48 +f 895/1459/46 899/1458/46 900/1457/46 +f 890/1447/44 889/1449/44 896/1456/44 +f 898/1461/7 897/1465/7 902/1462/7 +f 894/1464/45 898/1461/45 901/1463/45 +f 899/1458/473 902/1462/473 897/1465/473 +f 895/1459/474 901/2766/474 902/1466/474 +f 892/1467/10 891/2767/10 904/1468/10 +f 893/1460/475 900/1457/475 903/1470/475 +f 890/1450/45 893/1452/45 904/1472/45 +f 889/1449/476 892/1467/476 903/1469/476 +f 906/1474/471 907/2768/471 908/1475/471 +f 910/1477/48 911/1490/48 908/1478/48 +f 911/1480/472 912/2769/472 913/1481/472 +f 916/1483/45 905/1476/45 914/1482/45 +f 916/1483/46 915/1484/46 910/1485/46 +f 914/1482/44 905/1476/44 908/1475/44 +f 918/1487/7 913/2770/7 912/1488/7 +f 917/1489/48 912/1488/48 911/1490/48 +f 914/1482/477 913/2770/477 918/1487/477 +f 918/1491/474 917/2771/474 910/1485/474 +f 920/1492/10 907/2772/10 906/1493/10 +f 909/1486/475 920/2773/475 919/1495/475 +f 908/1478/48 907/2774/48 920/1496/48 +f 916/1483/478 919/1494/478 906/1493/478 +f 921/1497/953 922/1510/953 923/1498/953 +f 922/1500/44 926/2775/44 927/1501/44 +f 926/1503/954 928/1506/954 929/1504/954 +f 928/1506/46 921/1497/46 932/1507/46 +f 925/1509/45 927/1515/45 931/1508/45 +f 922/1510/48 921/1497/48 928/1506/48 +f 930/1511/481 929/1514/481 934/1512/481 +f 927/1501/44 926/2775/44 930/1511/44 +f 931/1508/482 934/1512/482 929/1514/482 +f 927/1515/955 933/2776/955 934/1516/955 +f 924/1517/484 923/2777/484 936/1518/484 +f 932/1507/956 935/2778/956 936/1520/956 +f 925/1502/44 936/2779/44 923/1521/44 +f 932/1507/486 921/1497/486 924/1517/486 +f 937/1522/10 938/1585/10 939/1523/10 +f 944/2780/45 940/2781/45 943/1527/45 +f 940/2781/45 939/2782/45 943/1527/45 +f 939/2782/45 941/1525/45 943/1527/45 +f 945/1528/487 946/1550/487 947/1529/487 +f 954/2783/48 949/2784/48 953/1533/48 +f 949/2784/48 950/2785/48 953/1533/48 +f 950/2785/48 951/1531/48 953/1533/48 +f 956/1534/46 957/1601/46 958/1535/46 +f 960/1537/46 961/1610/46 962/1538/46 +f 964/1540/46 949/2786/46 954/1541/46 +f 940/1543/46 944/1593/46 965/1544/46 +f 967/1546/44 968/2787/44 969/1547/44 +f 970/1549/488 971/1571/488 946/1550/488 +f 966/2788/957 972/1562/957 974/1553/957 +f 972/1562/958 973/1551/958 974/1553/958 +f 950/1555/48 949/2789/48 970/1549/48 +f 970/1549/959 945/1528/959 950/1555/959 +f 964/1556/490 973/1560/490 970/1557/490 +f 945/1528/960 948/1530/960 975/1559/960 +f 973/1560/46 976/1573/46 971/1561/46 +f 972/1562/492 978/1574/492 979/1563/492 +f 972/1562/493 977/1564/493 976/1565/493 +f 981/1566/7 982/1579/7 983/1567/7 +f 976/1565/961 977/1564/961 981/1569/961 +f 971/1571/48 983/2790/48 982/1572/48 +f 976/1573/495 980/1568/495 983/1567/495 +f 975/1559/496 948/1530/496 978/1574/496 +f 947/1529/962 985/1578/962 986/1576/962 +f 948/1530/44 947/1529/44 979/1563/44 +f 946/1550/963 982/1572/963 985/1577/963 +f 981/1566/499 986/1576/499 985/1578/499 +f 969/1580/500 975/1559/500 984/1575/500 +f 972/1562/964 966/2788/964 984/1575/964 +f 977/1564/965 979/1563/965 986/1582/965 +f 968/2787/503 938/2791/503 987/2792/503 +f 988/1621/503 989/1618/503 969/1547/503 +f 989/1618/503 990/1583/503 969/1547/503 +f 988/1621/503 969/1547/503 968/2787/503 +f 968/2787/503 987/2792/503 988/1621/503 +f 950/2785/503 969/1547/503 951/1531/503 +f 951/1531/503 969/1547/503 991/1584/503 +f 938/1585/966 968/2787/966 967/1546/966 +f 966/1548/505 974/2793/505 992/2794/505 +f 966/1548/505 992/2794/505 993/1586/505 +f 939/2782/967 967/1546/967 941/1525/967 +f 967/1546/968 966/1548/968 996/1637/968 +f 996/1637/967 941/1525/967 967/1546/967 +f 994/1587/505 995/1634/505 966/1548/505 +f 995/1634/505 996/1637/505 966/1548/505 +f 997/1588/46 998/1595/46 999/1589/46 +f 1000/1591/10 1001/2795/10 955/1536/10 +f 943/1592/7 1002/1594/7 965/1544/7 +f 942/1590/506 999/1589/506 1002/1594/506 +f 997/1588/507 1001/2795/507 1000/1591/507 +f 1004/1596/46 1005/2796/46 1006/1597/46 +f 1007/1599/10 1008/1603/10 959/1539/10 +f 1009/1600/7 1010/1602/7 957/1601/7 +f 1003/1598/506 1006/1597/506 1010/1602/506 +f 1007/1599/507 1005/2796/507 1004/1596/507 +f 1012/1604/46 952/1612/46 1013/1605/46 +f 1014/1607/10 963/1542/10 954/1541/10 +f 1015/1609/7 1016/1611/7 961/1610/7 +f 1015/1609/506 1011/1606/506 1013/1605/506 +f 1012/1604/507 1014/1607/507 953/1608/507 +f 990/1583/48 989/1618/48 1006/1613/48 +f 1016/1616/48 1013/1617/48 991/1584/48 +f 991/1584/48 990/1583/48 1007/1615/48 +f 990/1583/48 1005/1614/48 1007/1615/48 +f 1007/1615/48 962/2797/48 961/2798/48 +f 1007/1615/48 961/2798/48 1016/1616/48 +f 951/1531/48 991/1584/48 1013/1617/48 +f 1010/1620/48 1006/1613/48 989/1618/48 +f 989/1618/48 988/1621/48 1000/1619/48 +f 988/1621/48 998/1623/48 1000/1619/48 +f 1000/1619/48 958/2799/48 957/2800/48 +f 1000/1619/48 957/2800/48 1010/1620/48 +f 988/1621/48 987/2792/48 999/1622/48 +f 1002/1626/48 999/1622/48 987/2792/48 +f 987/2792/48 938/2791/48 1002/1626/48 +f 938/2791/48 937/1624/48 1002/1626/48 +f 1014/1629/45 1012/1630/45 992/2794/45 +f 992/2794/45 974/2793/45 1014/1629/45 +f 974/2793/45 964/1627/45 1014/1629/45 +f 993/1586/45 992/2794/45 1012/1630/45 +f 1008/1633/45 1004/1635/45 994/1587/45 +f 994/1587/45 993/1586/45 1015/1632/45 +f 993/1586/45 1011/1631/45 1015/1632/45 +f 1015/1632/45 960/2801/45 959/2802/45 +f 1015/1632/45 959/2802/45 1008/1633/45 +f 995/1634/45 994/1587/45 1004/1635/45 +f 1001/1639/45 997/1640/45 996/1637/45 +f 996/1637/45 995/1634/45 1009/1638/45 +f 995/1634/45 1003/1636/45 1009/1638/45 +f 1009/1638/45 956/2803/45 955/2804/45 +f 1009/1638/45 955/2804/45 1001/1639/45 +f 941/1525/45 996/1637/45 997/1640/45 +f 1018/1641/1 1019/1954/1 1020/1642/1 +f 1022/1644/5 1023/1647/5 1024/1645/5 +f 1023/1647/6 1025/2805/6 1026/1648/6 +f 1028/1649/508 1029/2806/508 1030/1650/508 +f 1024/1645/509 1031/1715/509 1032/1652/509 +f 1018/1653/510 1033/2807/510 1034/1654/510 +f 1022/1656/511 1036/2808/511 1037/1657/511 +f 1038/1659/512 1039/2809/512 1040/1660/512 +f 1027/1662/513 1030/2085/513 1043/1663/513 +f 1044/1665/514 1045/1771/514 1046/1666/514 +f 1048/1668/515 1049/1767/515 1050/1669/515 +f 1048/1671/516 1028/2810/516 1051/1672/516 +f 1042/1674/517 1046/2087/517 1052/1675/517 +f 1044/1677/518 1039/2811/518 1053/1678/518 +f 1059/1680/3 1060/1683/3 1061/1681/3 +f 1060/1683/4 1062/1994/4 1063/1684/4 +f 1067/1688/520 1060/2110/520 1068/1689/520 +f 1098/1691/9 1055/1721/9 1054/1692/9 +f 1074/1694/521 1070/1701/521 1075/1695/521 +f 1079/1700/523 1055/1703/523 1070/1701/523 +f 1055/1703/524 1079/1712/524 1080/1704/524 +f 1081/1706/525 1073/2103/525 1075/1695/525 +f 1088/1708/526 1021/1646/526 1032/1709/526 +f 1083/1711/969 1084/2812/969 1080/1704/969 +f 1079/1700/970 1074/1702/970 1082/1713/970 +f 1031/1715/971 1081/1855/971 1069/1716/971 +f 1089/1717/972 1080/2813/972 1084/1718/972 +f 1070/1727/9 1055/1721/9 1071/1720/9 +f 1099/1729/533 1037/2814/533 1100/1730/533 +f 1035/1732/534 1103/1759/534 1104/1733/534 +f 1105/1735/535 1106/1758/535 1107/1736/535 +f 1108/1738/536 1102/2815/536 1104/1733/536 +f 1110/1740/537 1043/2816/537 1111/1741/537 +f 1047/1743/538 1113/2817/538 1105/1744/538 +f 1023/1746/539 1037/2814/539 1099/1729/539 +f 1042/1748/540 1043/2816/540 1110/1740/540 +f 1028/1750/541 1048/2818/541 1105/1735/541 +f 1039/1751/542 1044/2819/542 1110/1752/542 +f 1018/1754/543 1035/1732/543 1102/1734/543 +f 1114/1756/544 1112/1742/544 1111/1741/544 +f 1115/1757/545 1107/1736/545 1106/1758/545 +f 1104/1733/546 1103/1759/546 1106/1758/546 +f 1034/1654/547 1115/1757/547 1103/1759/547 +f 1037/1657/548 1036/2808/548 1114/1756/548 +f 1030/1650/549 1029/2806/549 1107/1736/549 +f 1110/1752/550 1112/1742/550 1118/1762/550 +f 1105/1744/551 1113/2817/551 1116/1760/551 +f 1120/1763/552 1121/2820/552 1122/1764/552 +f 1051/1672/7 1123/1785/7 1120/1766/7 +f 1049/1767/7 1120/1763/7 1119/1765/7 +f 1052/1768/7 1124/1780/7 1123/1769/7 +f 1045/1771/7 1125/1778/7 1126/1772/7 +f 1045/1679/7 1053/1678/7 1127/1773/7 +f 1129/1775/553 1130/2821/553 1131/1776/553 +f 1125/1778/554 1132/2822/554 1133/1779/554 +f 1124/1780/555 1129/2823/555 1128/1781/555 +f 1124/1782/556 1126/2086/556 1133/1783/556 +f 1123/1785/557 1128/2824/557 1121/1786/557 +f 1134/1787/7 1135/1803/7 1136/1788/7 +f 1129/1790/558 1133/2825/558 1134/1791/558 +f 1128/1793/559 1131/1804/559 1138/1794/559 +f 1122/1796/560 1121/2826/560 1138/1797/560 +f 1140/1799/561 1141/1808/561 1135/1800/561 +f 1133/1802/562 1132/2827/562 1135/1803/562 +f 1131/1804/7 1142/1916/7 1143/1805/7 +f 1139/1798/7 1138/1797/7 1143/1806/7 +f 1141/1808/7 1145/1818/7 1136/1809/7 +f 1147/1810/9 1148/2137/9 1149/1811/9 +f 1150/1813/563 1137/2828/563 1151/1814/563 +f 1144/1807/564 1143/1806/564 1146/1816/564 +f 1145/1818/565 1154/1826/565 1155/1819/565 +f 1156/1820/566 1157/1918/566 1154/1821/566 +f 1137/1789/567 1136/1788/567 1155/1823/567 +f 1146/1816/1 1149/2139/1 1160/1825/1 +f 1154/1826/4 1163/2141/4 1164/1827/4 +f 1155/1823/5 1164/2143/5 1165/1828/5 +f 1166/1829/5 1167/1833/5 1162/1830/5 +f 1168/1832/6 1158/2829/6 1162/1830/6 +f 1170/1834/1 1171/2091/1 1172/1835/1 +f 1174/1837/3 1175/1840/3 1176/1838/3 +f 1175/1840/4 1166/1829/4 1161/1831/4 +f 1177/1843/7 1168/2830/7 1175/1841/7 +f 1168/2830/7 1167/2831/7 1175/1841/7 +f 1167/2831/7 1166/2832/7 1175/1841/7 +f 1175/1841/7 1174/2833/7 1170/1842/7 +f 1170/1842/7 1169/2834/7 1177/1843/7 +f 1178/1844/7 1179/2835/7 1180/1845/7 +f 1090/1687/568 1075/2124/568 1091/1847/568 +f 1064/1849/5 1066/2836/5 1185/1850/5 +f 1184/1852/569 1309/2837/569 1308/1853/569 +f 1064/1707/570 1067/1688/570 1069/1716/570 +f 1090/1687/571 1186/1860/571 1187/1856/571 +f 1188/1859/8 1181/2149/8 1186/1860/8 +f 1162/1861/7 1158/2838/7 1159/1862/7 +f 1194/1864/9 1177/2090/9 1169/1836/9 +f 1189/1865/973 1190/2839/973 1195/1866/973 +f 1197/1868/7 1182/2840/7 1189/1865/7 +f 1097/1869/48 1198/1879/48 1093/1870/48 +f 1198/1872/573 1199/2106/573 1200/1873/573 +f 1201/1875/7 1156/1820/7 1145/1822/7 +f 1165/1877/6 1202/2841/6 1152/1815/6 +f 1183/1878/574 1203/2092/574 1198/1879/574 +f 1204/1880/10 1205/1895/10 1206/1881/10 +f 1082/1883/974 1074/1694/974 1073/1696/974 +f 1071/1885/10 1207/2842/10 1204/1886/10 +f 1099/1888/576 1101/1731/576 1115/1757/576 +f 1153/1890/2 1160/1863/2 1159/1862/2 +f 1208/1892/975 1207/2842/975 1071/1885/975 +f 1200/1894/976 1091/2843/976 1206/1881/976 +f 1065/1896/977 1096/1871/977 1093/1870/977 +f 1077/1898/10 1066/2844/10 1065/1896/10 +f 1185/1899/10 1066/2845/10 1077/1900/10 +f 1185/1899/978 1095/1901/978 1209/1902/978 +f 1195/1866/979 1190/2839/979 1192/1903/979 +f 1098/1893/980 1191/1933/980 1210/1904/980 +f 1211/1905/7 1212/2104/7 1127/1906/7 +f 1104/1733/584 1116/1760/584 1215/1912/584 +f 1122/1913/585 1216/2846/585 1212/1914/585 +f 1142/1916/586 1147/1810/586 1146/1812/586 +f 1159/1917/3 1163/2847/3 1154/1821/3 +f 1214/1697/46 1094/2237/46 1093/1874/46 +f 1038/1920/588 1041/1929/588 1113/1921/588 +f 1047/1923/589 1050/2848/589 1211/1924/589 +f 1032/1709/981 1069/1690/981 1068/1689/981 +f 1086/1926/982 1068/2111/982 1089/1927/982 +f 1215/1912/592 1116/1760/592 1113/1921/592 +f 1140/1930/593 1132/2849/593 1125/1774/593 +f 1131/1776/7 1130/2821/7 1150/1931/7 +f 1180/1845/983 1179/2835/983 1210/1904/983 +f 1213/2850/984 1217/2851/984 1214/2852/984 +f 1217/2851/10 1218/2853/10 1219/1934/10 +f 1214/2852/985 1217/2851/985 1219/1934/985 +f 1219/1934/10 1220/2854/10 1221/1935/10 +f 1219/1934/986 1094/1936/986 1214/2852/986 +f 1221/1935/987 1076/2855/987 1094/1936/987 +f 1211/1924/7 1050/2848/7 1119/1915/7 +f 1101/1731/596 1117/1761/596 1107/1736/596 +f 1086/1926/598 1085/1928/598 1222/1937/598 +f 1201/1875/599 1141/1876/599 1140/1938/599 +f 1134/1791/7 1137/2828/7 1150/1813/7 +f 1087/1940/600 1031/2102/600 1024/1645/600 +f 1224/1941/601 1225/1951/601 1203/1942/601 +f 1223/1943/988 1203/1942/988 1197/1944/988 +f 1224/1941/989 1227/1947/989 1178/1946/989 +f 1019/1954/2 1228/2856/2 1222/1955/2 +f 1019/1956/608 1102/2815/608 1108/1738/608 +f 1039/1958/609 1038/2857/609 1211/1905/609 +f 1111/1741/610 1117/1761/610 1101/1731/610 +f 1028/1959/611 1027/2858/611 1052/1768/611 +f 1040/1660/612 1118/1762/612 1215/1960/612 +f 1122/1961/613 1139/2859/613 1201/1962/613 +f 1201/1962/7 1139/2859/7 1144/1964/7 +f 1156/1965/614 1144/1964/614 1153/1890/614 +f 1056/1705/615 1080/2813/615 1089/1717/615 +f 1033/1967/616 1025/2860/616 1099/1888/616 +f 1194/1968/7 1163/2847/7 1159/1917/7 +f 1233/2861/990 1227/2862/990 1224/1970/990 +f 1224/1970/617 1223/2863/617 1230/1971/617 +f 1223/2863/991 1226/2864/991 1229/2865/991 +f 1230/1971/992 1223/2863/992 1229/2865/992 +f 1230/1971/7 1231/2866/7 1232/1972/7 +f 1232/1972/993 1233/2861/993 1224/1970/993 +f 1210/1950/994 1235/1979/994 1236/1919/994 +f 1237/1908/995 1234/1974/995 1195/1973/995 +f 1231/1976/996 1238/1990/996 1239/1977/996 +f 1232/1978/997 1239/1977/997 1235/1979/997 +f 1230/1980/998 1229/1952/998 1234/1974/998 +f 1219/1982/999 1218/2113/999 1241/1983/999 +f 1219/1985/1000 1242/1989/1000 1243/1986/1000 +f 1220/1987/1001 1243/1986/1001 1237/1908/1001 +f 1237/1908/1002 1243/1986/1002 1240/1981/1002 +f 1238/1988/1003 1240/1981/1003 1243/1986/1003 +f 1238/1990/1004 1242/1984/1004 1241/1983/1004 +f 1236/1919/1005 1235/1979/1005 1239/1977/1005 +f 1281/1991/634 1371/2867/634 1367/1992/634 +f 1067/1851/4 1247/2868/4 1062/1994/4 +f 1061/1681/4 1063/1684/4 1244/1995/4 +f 1289/1996/635 1370/2015/635 1368/1997/635 +f 1284/1999/1006 1250/2869/1006 1370/2000/1006 +f 1249/2002/637 1369/2870/637 1248/2003/637 +f 1282/2005/638 1372/2012/638 1371/2006/638 +f 1246/2008/639 1372/2871/639 1282/2009/639 +f 1367/2011/1007 1371/2006/1007 1372/2012/1007 +f 1369/2014/8 1368/1997/8 1370/2015/8 +f 1248/2017/1008 1369/2014/1008 1250/2016/1008 +f 1251/2018/1009 1367/2011/1009 1246/2013/1009 +f 1368/2019/643 1369/2872/643 1249/2002/643 +f 1270/2021/1010 1283/2873/1011 1281/1991/1010 +f 1286/2022/642 1270/2021/642 1245/1993/642 +f 1367/2024/645 1251/2874/645 1285/2023/645 +f 1258/2004/646 1248/2875/646 1246/2025/646 +f 1292/2026/8 1293/2876/8 1288/2020/8 +f 1249/2002/1012 1258/2004/1012 1261/2054/1012 +f 1249/2002/647 1261/2054/647 1262/2027/647 +f 1279/2060/1013 1292/2026/1013 1278/2877/1013 +f 1292/2026/1014 1249/2002/1014 1266/2878/1014 +f 1267/2056/1013 1292/2026/1013 1266/2878/1013 +f 1267/2056/1013 1278/2877/1013 1292/2026/1013 +f 1265/2028/647 1266/2878/647 1249/2002/647 +f 1251/2029/648 1250/2879/648 1284/1999/648 +f 1253/2030/1015 1252/2036/1015 1277/2031/1015 +f 1267/2033/1016 1268/2059/1016 1253/2030/1016 +f 1277/2031/1017 1252/2036/1017 1269/2034/1017 +f 1253/2030/652 1268/2059/652 1269/2034/652 +f 1273/2037/1018 1254/2044/1018 1255/2038/1018 +f 1272/2039/654 1255/2038/654 1260/2040/654 +f 1259/2042/1019 1254/2044/1019 1273/2037/1019 +f 1259/2042/656 1260/2040/656 1255/2038/656 +f 1275/2045/1020 1256/2052/1020 1257/2046/1020 +f 1274/2047/1021 1257/2046/1021 1264/2048/1021 +f 1263/2050/1022 1256/2052/1022 1275/2045/1022 +f 1263/2050/652 1264/2048/652 1257/2046/652 +f 1258/2004/642 1271/2010/642 1272/2053/642 +f 1261/2041/1023 1260/2040/1023 1259/2042/1023 +f 1262/2027/642 1273/2063/642 1274/2055/642 +f 1265/2049/1024 1264/2048/1024 1263/2050/1024 +f 1267/2056/642 1266/2878/642 1275/2057/642 +f 1276/2035/1025 1269/2034/1025 1268/2059/1025 +f 1279/2060/1026 1280/2065/1026 1291/2061/1026 +f 1282/2009/1027 1291/2880/1027 1275/2057/1027 +f 1291/2880/1028 1280/2065/1028 1277/2064/1028 +f 1276/2058/1028 1291/2880/1028 1277/2064/1028 +f 1276/2058/1028 1275/2057/1028 1291/2880/1028 +f 1275/2057/664 1274/2055/664 1282/2009/664 +f 1274/2055/664 1273/2063/664 1282/2009/664 +f 1272/2053/640 1271/2010/640 1282/2009/640 +f 1279/2060/642 1278/2877/642 1277/2064/642 +f 1290/2067/8 1287/2068/1029 1284/1999/8 +f 1286/2022/641 1285/2023/641 1284/1999/641 +f 1293/2069/10 1292/2062/10 1291/2061/10 +f 1088/1708/4 1296/2107/4 1022/1644/4 +f 1297/2071/9 1033/2072/9 1018/1641/9 +f 1026/1648/8 1025/2805/8 1033/2072/8 +f 1083/1714/668 1082/1713/668 1297/2071/668 +f 1057/2073/2 1056/2077/2 1059/2074/2 +f 1298/2076/1 1299/2115/1 1056/2077/1 +f 1020/1642/669 1084/2812/669 1083/1711/669 +f 1301/2078/670 1114/1756/670 1036/2079/670 +f 1108/2081/671 1109/2881/671 1301/2078/671 +f 1300/2080/672 1036/2079/672 1022/2083/672 +f 1301/2078/673 1118/1762/673 1112/1742/673 +f 1117/1761/674 1111/1741/674 1043/1663/674 +f 1126/2086/7 1124/1782/7 1052/1675/7 +f 1150/1931/675 1152/2100/675 1147/2088/675 +f 1194/1864/8 1158/2882/8 1168/2089/8 +f 1171/2091/2 1170/1834/2 1174/1837/2 +f 1203/2092/7 1183/1878/7 1182/2093/7 +f 1225/2095/7 1178/2883/7 1181/2096/7 +f 1092/2098/45 1091/2843/45 1200/1894/45 +f 1152/2100/8 1202/2135/8 1148/2101/8 +f 1199/2099/676 1225/2095/676 1188/2097/676 +f 1031/2102/1030 1087/1940/1030 1073/2103/1030 +f 1301/2078/678 1109/2881/678 1215/1960/678 +f 1212/2104/679 1216/2884/679 1140/2105/679 +f 1198/1872/680 1203/1942/680 1225/1951/680 +f 1222/1955/681 1085/1719/681 1084/1718/681 +f 1297/2071/682 1082/1883/682 1087/1884/682 +f 1222/1937/3 1228/2885/3 1296/2107/3 +f 1108/2081/683 1300/2082/683 1296/2108/683 +f 1060/2110/684 1059/2886/684 1089/1927/684 +f 1231/2112/1031 1230/1980/1031 1240/1981/1031 +f 1218/2113/1032 1217/1911/1032 1236/1919/1032 +f 1055/1721/1 1303/2887/1 1302/2114/1 +f 1299/2115/1 1303/2887/1 1055/1721/1 +f 1054/1692/1 1302/2114/1 1298/2076/1 +f 1283/2116/1033 1287/2148/1034 1290/2117/7 +f 1310/2121/10 1187/2888/10 1304/2889/10 +f 1304/2889/10 1305/2890/10 1306/2119/10 +f 1306/2119/10 1307/2891/10 1308/2120/10 +f 1308/2120/10 1309/2892/10 1310/2121/10 +f 1310/2121/10 1304/2889/10 1306/2119/10 +f 1057/2073/688 1058/2075/688 1306/2122/688 +f 1061/1681/691 1307/2893/691 1306/2126/691 +f 1090/1687/692 1310/2894/692 1309/2127/692 +f 1054/1692/1035 1057/2073/1035 1305/2128/1035 +f 1193/1854/694 1308/2895/694 1307/2130/694 +f 1304/2131/695 1187/2896/695 1186/1860/695 +f 1206/2125/8 1075/2124/8 1070/1727/8 +f 1173/2132/7 1202/2841/7 1165/1877/7 +f 1173/2134/7 1176/2897/7 1148/2101/7 +f 1176/2136/7 1161/2898/7 1149/1811/7 +f 1161/2138/7 1162/2899/7 1160/1825/7 +f 1172/2140/7 1164/1827/7 1163/2141/7 +f 1164/2143/7 1172/2900/7 1171/2144/7 +f 1323/2145/1036 1311/2901/7 1318/2146/7 +f 1287/2148/1037 1283/2116/1038 1270/2021/1039 +f 1180/1858/9 1054/1692/9 1186/1860/9 +f 1065/2150/6 1066/2836/6 1064/1849/6 +f 1192/2152/5 1190/2153/5 1193/1854/5 +f 1189/2154/5 1182/2902/5 1184/1852/5 +f 1090/1687/701 1097/1686/701 1096/2151/701 +f 1184/1852/6 1182/2902/6 1183/1685/6 +f 1244/1995/4 1247/2868/4 1067/1851/4 +f 1313/2155/10 1312/2903/10 1314/2156/10 +f 1320/2158/728 1321/2204/728 1322/2159/728 +f 1318/2161/6 1317/2904/6 1320/2158/6 +f 1314/2169/2 1312/2905/2 1325/2164/2 +f 1312/2905/2 1311/2162/2 1325/2164/2 +f 1311/2162/2 1323/2906/1040 1324/2163/2 +f 1327/2165/705 1328/2907/705 1329/2166/705 +f 1326/2167/706 1314/2169/706 1327/2165/706 +f 1314/2169/1041 1325/2164/1041 1334/2170/1041 +f 1327/2165/706 1314/2169/706 1335/2168/706 +f 1325/2164/729 1330/2224/729 1331/2185/729 +f 1332/2908/1042 1333/2179/1042 1325/2164/1042 +f 1333/2179/1042 1334/2170/1042 1325/2164/1042 +f 1325/2164/1042 1331/2185/1042 1332/2908/1042 +f 1314/2156/1043 1326/2167/1043 1329/2166/1043 +f 1335/2171/1044 1337/2201/1044 1338/2172/1044 +f 1337/2174/705 1335/2168/705 1334/2170/705 +f 1341/2176/1045 1340/2190/1045 1342/2177/1045 +f 1333/2179/705 1332/2908/705 1344/2180/705 +f 1345/2182/1046 1344/2195/1046 1346/2183/1046 +f 1331/2185/705 1330/2224/705 1348/2186/705 +f 1342/2177/711 1349/2192/711 1350/2188/711 +f 1334/2189/1047 1349/2192/1047 1342/2177/1047 +f 1333/2191/1048 1341/2176/1048 1343/2178/1048 +f 1334/2189/1049 1333/2191/1049 1350/2188/1049 +f 1346/2183/715 1351/2197/715 1352/2193/715 +f 1332/2194/1050 1351/2197/1050 1346/2183/1050 +f 1331/2196/717 1345/2182/717 1347/2184/717 +f 1332/2194/1051 1331/2196/1051 1352/2193/1051 +f 1353/2198/711 1354/2200/711 1339/2173/711 +f 1327/2199/1052 1335/2171/1052 1339/2173/1052 +f 1337/2201/1053 1328/2202/1053 1353/2198/1053 +f 1327/2199/1054 1354/2200/1054 1353/2198/1054 +f 1320/2158/722 1355/2909/722 1356/2203/722 +f 1345/2187/1055 1348/2186/1055 1357/2205/1055 +f 1357/2205/1056 1315/2207/1056 1340/2175/1056 +f 1315/2207/1057 1329/2166/1057 1328/2907/1057 +f 1340/2175/1057 1315/2207/1057 1337/2174/1057 +f 1328/2907/1057 1337/2174/1057 1315/2207/1057 +f 1344/2180/723 1345/2187/723 1357/2205/723 +f 1340/2175/723 1341/2181/723 1357/2205/723 +f 1316/2206/6 1313/2910/6 1315/2207/6 +f 1348/2186/724 1330/2224/724 1358/2208/724 +f 1321/2204/725 1356/2911/725 1361/2210/725 +f 1360/2211/705 1336/2213/705 1322/2159/705 +f 1324/2212/1058 1323/2912/1059 1336/2213/1058 +f 1357/2205/727 1362/2913/727 1363/2214/727 +f 1358/2215/1060 1361/2222/1060 1356/2216/1060 +f 1355/2218/1061 1362/2220/1061 1359/2217/1061 +f 1364/2219/6 1363/2232/6 1362/2220/6 +f 1365/2221/1062 1366/2226/1062 1361/2222/1062 +f 1325/2164/730 1365/2914/730 1358/2223/730 +f 1325/2225/731 1324/2915/731 1366/2226/731 +f 1357/2205/732 1348/2186/732 1359/2227/732 +f 1320/2158/733 1317/2904/733 1364/2229/733 +f 1317/2231/734 1316/2916/734 1363/2232/734 +f 1324/2212/735 1360/2211/735 1361/2233/735 +f 1319/2147/1063 1322/2159/1064 1336/2213/1064 +f 1291/2880/3 1282/2009/3 1295/2236/3 +f 1282/2009/3 1281/2917/3 1294/2235/3 +f 1281/2917/3 1283/2918/1065 1294/2235/3 +f 1374/2238/1 1375/2241/1 1376/2239/1 +f 1375/2241/2 1377/2280/2 1378/2242/2 +f 1377/2243/3 1379/2246/3 1380/2244/3 +f 1379/2246/4 1381/2248/4 1382/2247/4 +f 1381/2248/5 1383/2250/5 1384/2249/5 +f 1383/2250/6 1385/2253/6 1386/2251/6 +f 1381/2248/5 1387/2277/5 1388/2252/5 +f 1385/2253/8 1389/2255/8 1390/2254/8 +f 1389/2255/9 1374/2238/9 1373/2240/9 +f 1384/2249/743 1386/2251/743 1391/2256/743 +f 1398/2258/10 1393/2919/10 1394/2259/10 +f 1394/2259/10 1395/2920/10 1396/2260/10 +f 1396/2260/10 1397/2921/10 1398/2258/10 +f 1397/2921/10 1392/2922/10 1398/2258/10 +f 1392/2922/10 1391/2923/10 1398/2258/10 +f 1380/2244/744 1382/2247/744 1397/2261/744 +f 1386/2251/745 1390/2254/745 1398/2263/745 +f 1378/2242/746 1395/2924/746 1394/2265/746 +f 1384/2249/747 1392/2925/747 1397/2266/747 +f 1390/2254/748 1373/2240/748 1393/2267/748 +f 1376/2239/749 1394/2926/749 1393/2269/749 +f 1380/2244/750 1396/2927/750 1395/2270/750 +f 1399/2271/751 1400/2278/751 1401/2272/751 +f 1389/2255/9 1400/2278/9 1399/2271/9 +f 1374/2238/1 1399/2271/1 1403/2274/1 +f 1377/2243/3 1404/2928/3 1405/2275/3 +f 1383/2250/6 1388/2252/6 1406/2276/6 +f 1379/2246/4 1405/2275/4 1387/2277/4 +f 1385/2253/8 1406/2276/8 1400/2278/8 +f 1375/2241/2 1403/2274/2 1404/2279/2 +f 1388/2252/752 1407/2929/752 1408/2281/752 +f 1387/2277/753 1405/2275/753 1409/2282/753 +f 1404/2279/754 1403/2274/754 1411/2284/754 +f 1400/2278/767 1406/2276/767 1408/2286/767 +f 1387/2277/756 1410/2930/756 1407/2288/756 +f 1405/2275/757 1404/2928/757 1412/2289/757 +f 1399/2271/758 1402/2296/758 1411/2291/758 +f 1412/2289/1066 1413/2931/1066 1414/2292/1066 +f 1413/2294/7 1415/2932/7 1418/2295/7 +f 1415/2932/7 1416/2933/7 1418/2295/7 +f 1416/2933/7 1417/2934/7 1418/2295/7 +f 1418/2295/7 1419/2935/7 1420/2936/7 +f 1420/2936/7 1414/2293/7 1418/2295/7 +f 1402/2296/1067 1416/2937/1067 1415/2297/1067 +f 1401/2272/769 1417/2938/769 1416/2298/769 +f 1408/2281/1068 1407/2929/1068 1419/2299/1068 +f 1410/2283/763 1409/2282/763 1414/2301/763 +f 1412/2285/768 1411/2284/768 1415/2303/768 +f 1408/2286/1069 1418/2939/1069 1417/2305/1069 +f 1407/2288/766 1410/2930/766 1420/2306/766 +f 1422/2308/4 1423/2312/4 1424/2309/4 +f 1422/2308/3 1425/2333/3 1426/2311/3 +f 1427/2313/2 1428/2317/2 1426/2314/2 +f 1429/2316/1 1430/2319/1 1428/2317/1 +f 1431/2318/9 1432/2321/9 1430/2319/9 +f 1433/2320/8 1434/2324/8 1432/2321/8 +f 1435/2322/9 1436/2344/9 1430/2319/9 +f 1437/2323/6 1438/2325/6 1434/2324/6 +f 1421/2310/5 1424/2309/5 1438/2325/5 +f 1431/2318/745 1439/2940/745 1440/2326/745 +f 1446/2327/10 1441/2941/10 1442/2328/10 +f 1442/2328/10 1440/2942/10 1439/2329/10 +f 1439/2329/10 1443/2943/10 1446/2327/10 +f 1443/2943/10 1444/2944/10 1446/2327/10 +f 1444/2944/10 1445/2945/10 1446/2327/10 +f 1427/2313/749 1444/2946/749 1443/2330/749 +f 1433/2320/743 1440/2947/743 1442/2331/743 +f 1446/2332/750 1445/2948/750 1425/2333/750 +f 1443/2334/748 1439/2949/748 1431/2318/748 +f 1437/2323/747 1442/2950/747 1441/2335/747 +f 1441/2336/744 1446/2951/744 1422/2308/744 +f 1445/2337/746 1444/2952/746 1427/2313/746 +f 1448/2338/756 1449/2362/756 1450/2339/756 +f 1447/2340/5 1450/2339/5 1438/2325/5 +f 1451/2341/4 1447/2340/4 1424/2309/4 +f 1452/2342/2 1453/2352/2 1426/2314/2 +f 1454/2343/8 1435/2322/8 1432/2321/8 +f 1436/2344/1 1452/2342/1 1428/2317/1 +f 1450/2339/6 1454/2343/6 1434/2324/6 +f 1453/2345/3 1451/2341/3 1423/2312/3 +f 1455/2346/767 1456/2364/767 1435/2322/767 +f 1436/2344/758 1457/2365/758 1458/2347/758 +f 1453/2345/757 1459/2367/757 1460/2348/757 +f 1449/2349/752 1455/2370/752 1454/2343/752 +f 1456/2350/751 1457/2372/751 1436/2344/751 +f 1452/2342/754 1458/2355/754 1459/2351/754 +f 1460/2353/753 1448/2360/753 1447/2340/753 +f 1461/2354/764 1462/2953/764 1459/2351/764 +f 1468/2357/7 1463/2954/7 1464/2358/7 +f 1463/2954/7 1462/2955/7 1464/2358/7 +f 1462/2955/7 1461/2956/7 1464/2358/7 +f 1464/2358/7 1465/2957/7 1466/2958/7 +f 1466/2958/7 1467/2356/7 1464/2358/7 +f 1463/2359/1070 1468/2959/1070 1448/2360/1070 +f 1448/2338/766 1468/2960/766 1467/2361/766 +f 1455/2346/1069 1466/2961/1069 1465/2363/1069 +f 1457/2365/760 1464/2962/760 1461/2366/760 +f 1459/2367/1066 1462/2963/1066 1463/2368/1066 +f 1467/2369/762 1466/2964/762 1455/2370/762 +f 1456/2350/769 1465/2965/769 1464/2371/769 +f 1471/2373/770 1472/2380/770 1470/2374/770 +f 1473/2376/771 1474/2378/771 1471/2373/771 +f 1475/2377/772 1476/2966/772 1474/2378/772 +f 1478/2379/773 1477/2381/773 1470/2374/773 +f 1478/2379/45 1472/2380/45 1471/2373/45 +f 1471/2373/45 1474/2967/45 1476/2968/45 +f 1476/2968/1071 1477/2381/1071 1471/2373/1071 +f 1469/2375/48 1470/2374/48 1477/2969/48 +f 1477/2969/48 1475/2382/48 1469/2375/48 +f 1481/2384/775 1482/2390/775 1480/2385/775 +f 1483/2387/776 1484/2389/776 1481/2384/776 +f 1485/2388/777 1486/2970/777 1484/2389/777 +f 1482/2390/778 1488/2392/778 1487/2391/778 +f 1488/2392/48 1482/2390/48 1481/2384/48 +f 1481/2384/48 1484/2971/48 1486/2972/48 +f 1486/2972/1072 1487/2391/1072 1481/2384/1072 +f 1479/2386/45 1480/2385/45 1487/2973/45 +f 1487/2973/45 1485/2393/45 1479/2386/45 +f 1491/2395/780 1492/2402/780 1490/2396/780 +f 1493/2398/781 1494/2400/781 1491/2395/781 +f 1495/2399/782 1496/2974/782 1494/2400/782 +f 1498/2401/783 1497/2403/783 1490/2396/783 +f 1498/2401/44 1492/2402/44 1491/2395/44 +f 1491/2395/44 1494/2975/44 1496/2976/44 +f 1496/2976/1073 1497/2403/1073 1491/2395/1073 +f 1489/2397/46 1490/2396/46 1497/2977/46 +f 1497/2977/46 1495/2404/46 1489/2397/46 +f 1499/2406/785 1501/2410/785 1502/2407/785 +f 1503/2409/786 1504/2412/786 1501/2410/786 +f 1505/2411/787 1506/2978/787 1504/2412/787 +f 1508/2413/788 1507/2414/788 1500/2408/788 +f 1508/2413/46 1502/2407/46 1501/2410/46 +f 1501/2410/46 1504/2979/46 1506/2980/46 +f 1506/2980/1074 1507/2414/1074 1501/2410/1074 +f 1499/2406/44 1500/2408/44 1507/2981/44 +f 1507/2981/44 1505/2415/44 1499/2406/44 +f 1509/2417/790 1511/2421/790 1512/2418/790 +f 1513/2420/791 1514/2423/791 1511/2421/791 +f 1515/2422/792 1516/2982/792 1514/2423/792 +f 1512/2418/793 1518/2425/793 1517/2424/793 +f 1518/2425/801 1512/2418/801 1511/2421/801 +f 1511/2421/801 1514/2983/801 1516/2984/801 +f 1516/2984/1075 1517/2424/1075 1511/2421/1075 +f 1509/2417/795 1510/2419/795 1517/2985/795 +f 1517/2985/795 1515/2426/795 1509/2417/795 +f 1519/2428/796 1521/2432/796 1522/2429/796 +f 1523/2431/797 1524/2434/797 1521/2432/797 +f 1523/2431/798 1525/2986/798 1526/2433/798 +f 1528/2435/799 1527/2436/799 1520/2430/799 +f 1528/2435/795 1522/2429/795 1521/2432/795 +f 1521/2432/795 1524/2987/795 1526/2988/795 +f 1526/2988/1076 1527/2436/1076 1521/2432/1076 +f 1519/2428/801 1520/2430/801 1527/2989/801 +f 1527/2989/801 1525/2437/801 1519/2428/801 +f 1531/2439/802 1532/2445/802 1530/2440/802 +f 1529/2441/803 1533/2443/803 1534/2442/803 +f 1533/2443/804 1535/2990/804 1536/2444/804 +f 1532/2445/805 1538/2447/805 1537/2446/805 +f 1538/2447/813 1532/2445/813 1531/2439/813 +f 1531/2439/813 1534/2991/813 1536/2992/813 +f 1536/2992/1077 1537/2446/1077 1531/2439/1077 +f 1529/2441/807 1530/2440/807 1537/2993/807 +f 1537/2993/807 1535/2448/807 1529/2441/807 +f 1541/2450/808 1542/2457/808 1540/2451/808 +f 1539/2452/809 1543/2454/809 1544/2453/809 +f 1543/2454/810 1545/2994/810 1546/2455/810 +f 1548/2456/811 1547/2458/811 1540/2451/811 +f 1548/2456/807 1542/2457/807 1541/2450/807 +f 1541/2450/807 1544/2995/807 1546/2996/807 +f 1546/2996/1078 1547/2458/1078 1541/2450/1078 +f 1539/2452/813 1540/2451/813 1547/2997/813 +f 1547/2997/813 1545/2459/813 1539/2452/813 diff --git a/src/main/resources/assets/hbm/models/weapons/congolake.obj b/src/main/resources/assets/hbm/models/weapons/congolake.obj new file mode 100644 index 000000000..61dba5009 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/congolake.obj @@ -0,0 +1,3494 @@ +# Blender v2.79 (sub 0) OBJ File: 'CongoLake.blend' +# www.blender.org +o Pump_Pummp +v 0.000000 0.935654 2.185543 +v -0.193840 1.015945 2.185543 +v -0.214852 0.994933 2.177396 +v 0.000000 0.905939 2.177396 +v -0.193840 1.403625 2.185543 +v -0.274131 1.209785 2.185543 +v -0.274131 1.209785 3.266089 +v -0.193840 1.403625 3.266089 +v 0.000000 1.483656 2.185543 +v 0.000000 1.483656 3.266089 +v 0.274131 1.209785 2.185543 +v 0.193656 1.403441 2.185543 +v 0.193656 1.403441 3.266089 +v 0.274131 1.209785 3.266089 +v 0.000000 0.935915 3.266089 +v -0.193840 1.015945 3.266089 +v 0.193656 1.016130 2.185543 +v 0.193656 1.016130 3.266089 +v 0.000000 1.513631 2.177396 +v 0.214852 1.424637 2.177396 +v 0.214852 1.424637 2.113585 +v 0.000000 1.513631 2.113585 +v -0.214852 1.424637 2.177396 +v 0.214852 0.994933 2.177396 +v -0.303846 1.209785 2.177396 +v 0.303846 1.209785 2.177396 +v -0.214852 0.994933 2.113585 +v -0.303846 1.209785 2.113585 +v -0.273445 1.209785 2.100498 +v -0.193355 1.016430 2.100498 +v -0.214852 1.424637 2.113585 +v 0.000000 0.905939 2.113585 +v 0.214852 0.994933 2.113585 +v 0.303846 1.209785 2.113585 +v -0.193355 1.403140 2.100498 +v 0.000000 1.483230 2.100498 +v 0.193355 1.403140 2.100498 +v 0.273445 1.209785 2.100498 +v 0.193355 1.016430 2.100498 +v 0.000000 0.936340 2.100498 +v 0.000000 0.905939 3.274235 +v -0.214852 0.994933 3.274235 +v 0.000000 1.513631 3.274235 +v 0.000000 1.513631 3.338046 +v 0.214852 1.424637 3.338046 +v 0.214852 1.424637 3.274235 +v -0.214852 1.424637 3.274235 +v 0.214852 0.994933 3.274235 +v -0.303846 1.209785 3.274235 +v 0.303846 1.209785 3.274235 +v -0.214852 0.994933 3.338046 +v -0.193355 1.016430 3.351134 +v -0.273445 1.209785 3.351134 +v -0.303846 1.209785 3.338046 +v -0.214852 1.424637 3.338046 +v 0.214852 0.994933 3.338046 +v 0.000000 0.905939 3.338046 +v 0.303846 1.209785 3.338046 +v -0.193355 1.403140 3.351134 +v 0.000000 0.936340 3.351134 +v 0.193355 1.016430 3.351134 +v 0.273445 1.209785 3.351134 +v 0.193355 1.403140 3.351134 +v 0.000000 1.483230 3.351134 +vt 0.270772 0.021748 +vt 0.259071 0.044520 +vt 0.258022 0.040873 +vt 0.124225 0.297698 +vt 0.000380 0.290063 +vt 0.124223 0.290059 +vt 0.000378 0.282428 +vt 0.124220 0.282425 +vt 0.124223 0.335878 +vt 0.000382 0.328240 +vt 0.124225 0.328243 +vt 0.124227 0.305336 +vt 0.000387 0.312974 +vt 0.000384 0.305339 +vt 0.124221 0.343509 +vt 0.000380 0.335874 +vt 0.000384 0.320605 +vt 0.124227 0.320609 +vt 0.000382 0.297701 +vt 0.124229 0.312974 +vt 0.301296 0.107856 +vt 0.311550 0.080842 +vt 0.315428 0.086659 +vt 0.319568 0.052066 +vt 0.317107 0.080578 +vt 0.317107 0.050600 +vt 0.254931 0.052066 +vt 0.257392 0.080578 +vt 0.254911 0.079099 +vt 0.303748 0.109442 +vt 0.316485 0.090335 +vt 0.316477 0.040872 +vt 0.301296 0.023322 +vt 0.303727 0.021748 +vt 0.278234 0.017112 +vt 0.297242 0.020803 +vt 0.277257 0.020803 +vt 0.270772 0.109430 +vt 0.259071 0.086659 +vt 0.273203 0.107856 +vt 0.278234 0.114066 +vt 0.297242 0.110375 +vt 0.296257 0.114096 +vt 0.297242 0.029029 +vt 0.278257 0.033023 +vt 0.277257 0.029029 +vt 0.311623 0.050600 +vt 0.257392 0.050600 +vt 0.262876 0.080578 +vt 0.315428 0.044519 +vt 0.297418 0.029138 +vt 0.277081 0.102040 +vt 0.277257 0.110375 +vt 0.297242 0.102149 +vt 0.273203 0.023322 +vt 0.262949 0.050336 +vt 0.308960 0.079078 +vt 0.278257 0.098155 +vt 0.265539 0.052100 +vt 0.277257 0.102149 +vt 0.296243 0.098155 +vt 0.311623 0.080578 +vt 0.308960 0.052100 +vt 0.262876 0.050600 +vt 0.265539 0.079078 +vt 0.296242 0.033023 +vt 0.189118 0.066082 +vt 0.194118 0.093837 +vt 0.187203 0.068873 +vt 0.246869 0.062649 +vt 0.244287 0.031805 +vt 0.251935 0.059501 +vt 0.246935 0.093837 +vt 0.251935 0.066083 +vt 0.253850 0.068873 +vt 0.196766 0.031805 +vt 0.187203 0.056711 +vt 0.194097 0.031747 +vt 0.246956 0.031747 +vt 0.253850 0.056711 +vt 0.222720 0.109905 +vt 0.241223 0.102404 +vt 0.224565 0.112754 +vt 0.199830 0.102404 +vt 0.218332 0.109905 +vt 0.216488 0.112754 +vt 0.216488 0.012829 +vt 0.199869 0.027151 +vt 0.199830 0.023147 +vt 0.241184 0.027151 +vt 0.224565 0.012829 +vt 0.241223 0.023147 +vt 0.203910 0.087717 +vt 0.220431 0.102305 +vt 0.201967 0.090833 +vt 0.239221 0.090631 +vt 0.244287 0.093779 +vt 0.201832 0.034953 +vt 0.189118 0.059501 +vt 0.220622 0.102305 +vt 0.241184 0.098433 +vt 0.220431 0.023279 +vt 0.218333 0.015679 +vt 0.199868 0.098433 +vt 0.239086 0.034751 +vt 0.222720 0.015679 +vt 0.194184 0.062935 +vt 0.196766 0.093779 +vt 0.197027 0.062792 +vt 0.220527 0.027543 +vt 0.244026 0.062792 +vt 0.237143 0.037867 +vt 0.220622 0.023278 +vt 0.201832 0.090631 +vt 0.239221 0.034953 +vt 0.237143 0.087717 +vt 0.246869 0.062935 +vt 0.203910 0.037867 +vt 0.194184 0.062649 +vt 0.239086 0.090833 +vt 0.201967 0.034750 +vt 0.000378 0.343505 +vt 0.297419 0.102040 +vt 0.319588 0.079099 +vt 0.296265 0.017112 +vt 0.258014 0.090336 +vt 0.311550 0.050336 +vt 0.262949 0.080842 +vt 0.277081 0.029138 +vt 0.220526 0.098041 +vn -0.1089 -0.2628 0.9587 +vn -0.9239 0.3827 0.0000 +vn -0.3816 0.9243 0.0000 +vn 0.9234 0.3837 0.0000 +vn -0.3816 -0.9243 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.9234 -0.3837 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.3837 -0.9234 0.0002 +vn -0.1089 0.2628 0.9587 +vn 0.1083 -0.2605 0.9594 +vn 0.1080 0.2607 0.9593 +vn -0.2629 0.1089 0.9587 +vn -0.2628 -0.1089 0.9587 +vn 0.2628 -0.1089 0.9587 +vn 0.2605 0.1083 0.9594 +vn -0.3902 -0.1616 -0.9064 +vn -0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.3902 0.1616 -0.9064 +vn -0.1616 -0.3902 -0.9064 +vn 0.1616 0.3902 -0.9064 +vn -0.1616 0.3902 -0.9064 +vn 0.1616 -0.3902 -0.9064 +vn -0.3902 0.1616 -0.9064 +vn 0.3902 -0.1616 -0.9064 +vn -0.1076 -0.2607 -0.9594 +vn -0.1076 0.2607 -0.9594 +vn 0.1080 -0.2607 -0.9594 +vn 0.1080 0.2607 -0.9594 +vn -0.2628 0.1089 -0.9587 +vn -0.2628 -0.1089 -0.9587 +vn 0.2605 -0.1082 -0.9594 +vn 0.2605 0.1082 -0.9594 +vn -0.3902 -0.1616 0.9064 +vn 0.0000 0.0000 1.0000 +vn 0.3902 0.1616 0.9064 +vn -0.1616 -0.3902 0.9064 +vn 0.1616 0.3902 0.9064 +vn -0.1616 0.3902 0.9064 +vn 0.1616 -0.3902 0.9064 +vn -0.3902 0.1616 0.9064 +vn 0.3902 -0.1616 0.9064 +vn -0.3827 -0.9239 0.0002 +vn -0.1077 0.2608 0.9594 +vn 0.1089 -0.2628 0.9587 +vn -0.2628 0.1089 0.9587 +vn -0.2629 -0.1089 0.9587 +vn 0.2605 -0.1083 0.9594 +vn 0.2628 0.1089 0.9587 +vn -0.1089 -0.2628 -0.9587 +vn -0.1089 0.2628 -0.9587 +vn 0.2628 -0.1089 -0.9587 +vn 0.2628 0.1089 -0.9587 +s off +f 2/1/1 4/2/1 1/3/1 +f 6/4/2 8/5/2 5/6/2 +f 5/6/3 10/7/3 9/8/3 +f 12/9/4 14/10/4 11/11/4 +f 2/12/5 15/13/5 16/14/5 +f 9/15/6 13/16/6 12/9/6 +f 11/11/7 18/17/7 17/18/7 +f 2/12/8 7/19/8 6/4/8 +f 17/18/9 15/13/9 1/20/9 +f 20/21/6 22/22/6 19/23/6 +f 5/24/10 19/25/10 23/26/10 +f 1/27/11 24/28/11 17/29/11 +f 12/30/12 19/23/12 9/31/12 +f 5/32/13 25/33/13 6/34/13 +f 2/35/14 25/36/14 3/37/14 +f 11/38/15 24/39/15 26/40/15 +f 11/41/16 20/42/16 12/43/16 +f 28/44/17 30/45/17 27/46/17 +f 19/25/18 31/47/18 23/26/18 +f 4/48/19 33/49/19 24/28/19 +f 23/50/2 28/51/2 25/33/2 +f 24/39/20 34/52/20 26/40/20 +f 25/36/8 27/46/8 3/37/8 +f 26/53/21 21/54/21 20/42/21 +f 3/55/22 32/56/22 4/2/22 +f 36/57/23 38/58/23 40/59/23 +f 34/60/24 37/61/24 21/54/24 +f 32/56/25 30/45/25 40/59/25 +f 22/22/26 37/61/26 36/57/26 +f 22/62/27 35/63/27 31/47/27 +f 32/64/28 39/65/28 33/49/28 +f 28/51/29 35/63/29 29/66/29 +f 34/52/30 39/65/30 38/58/30 +f 41/67/31 16/68/31 15/69/31 +f 44/70/6 46/71/6 43/72/6 +f 8/73/32 43/74/32 10/75/32 +f 48/76/33 15/77/33 18/78/33 +f 43/72/34 13/79/34 10/80/34 +f 49/81/35 8/82/35 7/83/35 +f 16/84/36 49/85/36 7/86/36 +f 14/87/37 48/88/37 18/89/37 +f 46/90/38 14/91/38 13/92/38 +f 52/93/39 54/94/39 51/95/39 +f 55/96/18 43/74/18 47/97/18 +f 56/98/19 41/99/19 48/76/19 +f 54/100/2 47/101/2 49/81/2 +f 58/102/20 48/88/20 50/103/20 +f 51/95/8 49/85/8 42/104/8 +f 45/105/21 50/106/21 46/90/21 +f 57/107/22 42/108/22 41/67/22 +f 60/109/40 62/110/40 64/111/40 +f 63/112/41 58/113/41 45/105/41 +f 60/109/42 51/114/42 57/107/42 +f 44/70/43 63/112/43 45/115/43 +f 59/116/44 44/117/44 55/96/44 +f 61/118/45 57/119/45 56/98/45 +f 54/100/46 59/116/46 55/120/46 +f 58/102/47 61/118/47 56/121/47 +f 2/1/1 3/55/1 4/2/1 +f 6/4/2 7/19/2 8/5/2 +f 5/6/3 8/5/3 10/7/3 +f 12/9/4 13/16/4 14/10/4 +f 2/12/48 1/20/48 15/13/48 +f 9/15/6 10/122/6 13/16/6 +f 11/11/7 14/10/7 18/17/7 +f 2/12/8 16/14/8 7/19/8 +f 17/18/19 18/17/19 15/13/19 +f 20/21/6 21/123/6 22/22/6 +f 5/24/49 9/124/49 19/25/49 +f 1/27/50 4/48/50 24/28/50 +f 12/30/12 20/21/12 19/23/12 +f 5/32/51 23/50/51 25/33/51 +f 2/35/52 6/125/52 25/36/52 +f 11/38/53 17/126/53 24/39/53 +f 11/41/54 26/53/54 20/42/54 +f 28/44/17 29/66/17 30/45/17 +f 19/25/18 22/62/18 31/47/18 +f 4/48/19 32/64/19 33/49/19 +f 23/50/2 31/127/2 28/51/2 +f 24/39/20 33/128/20 34/52/20 +f 25/36/8 28/44/8 27/46/8 +f 26/53/21 34/60/21 21/54/21 +f 3/55/22 27/129/22 32/56/22 +f 29/66/23 35/63/23 36/57/23 +f 36/57/23 37/61/23 38/58/23 +f 38/58/23 39/65/23 40/59/23 +f 40/59/23 30/45/23 29/66/23 +f 29/66/23 36/57/23 40/59/23 +f 34/60/24 38/58/24 37/61/24 +f 32/56/25 27/129/25 30/45/25 +f 22/22/26 21/123/26 37/61/26 +f 22/62/27 36/57/27 35/63/27 +f 32/64/28 40/59/28 39/65/28 +f 28/51/29 31/127/29 35/63/29 +f 34/52/30 33/128/30 39/65/30 +f 41/67/55 42/108/55 16/68/55 +f 44/70/6 45/115/6 46/71/6 +f 8/73/56 47/97/56 43/74/56 +f 48/76/33 41/99/33 15/77/33 +f 43/72/34 46/71/34 13/79/34 +f 49/81/35 47/101/35 8/82/35 +f 16/84/36 42/104/36 49/85/36 +f 14/87/57 50/103/57 48/88/57 +f 46/90/58 50/106/58 14/91/58 +f 52/93/39 53/130/39 54/94/39 +f 55/96/18 44/117/18 43/74/18 +f 56/98/19 57/119/19 41/99/19 +f 54/100/2 55/120/2 47/101/2 +f 58/102/20 56/121/20 48/88/20 +f 51/95/8 54/94/8 49/85/8 +f 45/105/21 58/113/21 50/106/21 +f 57/107/22 51/114/22 42/108/22 +f 64/111/40 59/116/40 53/130/40 +f 53/130/40 52/93/40 60/109/40 +f 60/109/40 61/118/40 62/110/40 +f 62/110/40 63/112/40 64/111/40 +f 64/111/40 53/130/40 60/109/40 +f 63/112/41 62/110/41 58/113/41 +f 60/109/42 52/93/42 51/114/42 +f 44/70/43 64/111/43 63/112/43 +f 59/116/44 64/111/44 44/117/44 +f 61/118/45 60/109/45 57/119/45 +f 54/100/46 53/130/46 59/116/46 +f 58/102/47 62/110/47 61/118/47 +o Gun +v 0.000000 2.012847 0.929753 +v 0.000000 2.012847 1.070247 +v 0.183294 1.927366 1.070247 +v 0.183618 1.926461 0.929220 +v 0.259217 1.720997 1.070247 +v 0.257984 1.718743 0.928515 +v 0.259047 1.606972 1.070247 +v 0.257604 1.541884 0.928170 +v -0.144433 0.866083 0.913514 +v -0.144446 0.864949 1.065059 +v -0.258151 1.005157 1.070247 +v -0.257451 1.005115 0.928270 +v -0.183294 1.927366 1.070247 +v -0.259216 1.720997 1.070247 +v -0.259043 1.604334 1.070247 +v -0.258413 1.181274 1.070247 +v -0.257166 1.181723 0.927804 +v -0.257983 1.718743 0.928515 +v -0.183294 1.927366 0.929753 +v 0.257451 1.005115 0.928270 +v 0.258152 1.005157 1.070247 +v 0.144446 0.864949 1.065059 +v 0.144434 0.866083 0.913514 +v -0.257983 1.718743 -0.730968 +v -0.183294 1.927366 -0.725578 +v 0.257356 1.541884 -0.031674 +v 0.257984 1.718742 -0.031674 +v 0.213936 1.724480 -0.012808 +v 0.213408 1.585937 -0.012808 +v 0.183294 1.927366 -0.031674 +v 0.151081 1.887906 -0.012808 +v 0.000000 2.012848 -0.725578 +v 0.000000 2.012847 -0.031673 +v -0.257237 1.370989 0.927836 +v -0.256750 1.371195 -0.736357 +v 0.187757 1.476302 -0.792273 +v 0.187757 1.335660 -0.792273 +v 0.146203 1.348426 -1.160494 +v 0.146203 1.506278 -1.160494 +v 0.256751 1.371195 -0.736357 +v 0.257984 1.718742 -0.730968 +v 0.257238 1.371176 0.927836 +v 0.257167 1.182080 0.927804 +v 0.256751 1.182173 -0.736357 +v -0.145153 1.919827 -0.781493 +v -0.201659 1.715739 -0.786883 +v -0.159904 1.695958 -1.155104 +v -0.115487 1.870179 -1.149714 +v -0.061328 1.229217 -0.792273 +v -0.200726 1.335660 -0.792273 +v -0.159171 1.348426 -1.160494 +v -0.060785 1.241984 -1.160494 +v -0.061222 1.231706 -0.864069 +v -0.256750 1.182173 -0.736357 +v 0.256751 0.956724 -0.734144 +v 0.256751 0.856270 -0.117823 +v -0.256750 0.856270 -0.117823 +v -0.256750 0.956724 -0.734144 +v -0.062749 0.957195 -0.735251 +v 0.051362 0.957195 -0.735251 +v 0.256751 0.867043 0.903277 +v -0.256750 0.867043 0.903277 +v 0.258415 1.181988 1.070247 +v 0.258696 1.371157 1.070247 +v -0.258695 1.370783 1.070247 +v 0.183294 1.927366 -0.725578 +v -0.003170 1.954868 0.910839 +v 0.151354 1.887197 0.910326 +v 0.213936 1.724480 0.909649 +v -0.003170 1.954868 -0.012807 +v 0.213616 1.585937 0.909317 +v -0.159171 1.506278 -1.160494 +v -0.159904 1.390979 -1.676333 +v -0.159171 1.268371 -1.681723 +v 0.146203 1.146998 -1.681723 +v 0.146203 1.268371 -1.681723 +v -0.115487 1.524939 -1.670943 +v -0.200726 1.476302 -0.792273 +v -0.006484 2.003450 -0.781493 +v -0.006484 1.941564 -1.149714 +v 0.132185 1.919827 -0.781493 +v 0.102519 1.870179 -1.149714 +v 0.188690 1.715739 -0.786883 +v 0.146936 1.695958 -1.155104 +v -0.159904 1.204788 -1.982580 +v -0.115487 1.394869 -1.977190 +v -0.049574 1.040555 -1.681723 +v -0.159171 1.146998 -1.681723 +v -0.159171 0.816467 -1.987970 +v -0.049574 0.710024 -1.987970 +v 0.146936 1.390979 -1.676333 +v 0.102519 1.524939 -1.670943 +v 0.102519 1.394869 -1.977190 +v 0.146936 1.204788 -1.982580 +v -0.006484 1.579827 -1.670943 +v 0.102519 1.539839 -2.297575 +v 0.146936 1.349759 -2.302965 +v 0.146203 0.988688 -1.987970 +v 0.146203 1.133659 -2.308354 +v -0.006484 1.472752 -1.977190 +v -0.006484 1.617722 -2.297575 +v 0.146203 0.816467 -1.987970 +v -0.159171 0.988688 -1.987970 +v -0.159171 0.961438 -2.308354 +v -0.159171 1.133659 -2.308354 +v -0.159171 0.787673 -4.057262 +v -0.159171 0.502792 -4.057262 +v -0.115487 1.539839 -2.297575 +v -0.115487 1.525341 -4.046483 +v -0.006484 1.654172 -4.046483 +v -0.159904 1.349759 -2.302965 +v -0.159904 1.210917 -4.051873 +v -0.049574 0.854995 -2.308354 +v 0.146203 0.961438 -2.308354 +v -0.159904 1.210283 -4.199338 +v -0.159171 0.787039 -4.204728 +v 0.146203 0.787673 -4.057262 +v 0.146203 0.502792 -4.057262 +v 0.146203 0.502158 -4.204728 +v 0.146203 0.787039 -4.204728 +v -0.115487 1.524706 -4.193949 +v 0.102519 1.525341 -4.046483 +v 0.146936 1.210917 -4.051873 +v -0.049574 0.396350 -4.057262 +v -0.083889 1.075730 -0.736357 +v 0.146936 1.210283 -4.199338 +v 0.102519 1.524706 -4.193949 +v 0.036802 0.395715 -4.204728 +v -0.006484 1.653537 -4.193949 +v -0.159171 0.502158 -4.204728 +v -0.049574 0.395715 -4.204728 +v 0.036802 0.396350 -4.057262 +v 0.071739 1.075730 -0.736357 +v 0.048556 1.229217 -0.792273 +v 0.048450 1.231706 -0.864069 +v 0.048450 0.960438 -0.864069 +v -0.061222 0.960438 -0.864069 +v 0.036802 0.854995 -2.308354 +v 0.036802 0.710024 -1.987970 +v 0.048013 1.241984 -1.160494 +v 0.036802 1.040555 -1.681723 +v 0.048556 0.958818 -0.792273 +v 0.048556 0.889021 -0.793779 +v 0.048450 0.890640 -0.865575 +v -0.061222 0.890640 -0.865575 +v -0.061328 0.958818 -0.792273 +v 0.050594 0.887869 -0.737864 +v -0.062623 0.887869 -0.737864 +v -0.062623 0.859409 -0.738478 +v 0.050594 0.859409 -0.738478 +v 0.048556 0.860561 -0.794393 +v -0.061328 0.889021 -0.793779 +v -0.061328 0.860561 -0.794393 +v -0.061222 0.862180 -0.866189 +v 0.048450 0.862180 -0.866189 +v 0.048450 0.897640 -1.189937 +v -0.061222 0.897640 -1.189937 +v -0.061222 0.869180 -1.190551 +v -0.061222 0.909566 -1.231055 +v -0.061222 0.883039 -1.241383 +v 0.048450 0.869180 -1.190551 +v 0.048450 0.909566 -1.231055 +v 0.048450 0.883039 -1.241383 +v 0.048450 0.923721 -1.286653 +v 0.048450 0.939453 -1.262928 +v -0.061222 0.923721 -1.286653 +v -0.061222 0.939453 -1.262928 +v -0.061222 0.990369 -1.269143 +v -0.061222 0.991506 -1.297587 +v 0.048450 0.990369 -1.269143 +v 0.048450 0.991506 -1.297587 +v -0.027604 1.183662 -1.022258 +v -0.027604 1.241078 -1.015614 +v -0.027604 1.241078 -1.073029 +v -0.027604 1.183662 -1.079673 +v 0.014636 1.241078 -1.073029 +v 0.014636 1.183662 -1.079673 +v 0.014636 1.241078 -1.015614 +v 0.014636 1.183662 -1.022258 +v 0.014636 1.135947 -1.081794 +v -0.027604 1.135947 -1.081794 +v 0.014636 1.135947 -1.031008 +v -0.027604 1.135947 -1.031008 +v -0.027604 1.073735 -1.037243 +v 0.014636 1.073735 -1.037243 +v 0.014636 1.073735 -1.077975 +v 0.014636 1.020584 -1.027559 +v 0.014636 1.020584 -1.064708 +v -0.027604 1.073735 -1.077975 +v 0.008448 0.973270 -0.999595 +v 0.008448 0.955554 -1.018985 +v -0.027604 1.020584 -1.064708 +v -0.027604 1.020584 -1.027559 +v -0.021416 0.973270 -0.999595 +v -0.014341 0.956268 -0.989678 +v 0.001372 0.956268 -0.989678 +v -0.021416 0.955554 -1.018985 +v -0.014341 0.946947 -0.999880 +v 0.001372 0.946947 -0.999880 +v -0.259043 1.604334 1.840350 +v 0.259047 1.606972 1.840350 +v -0.259043 1.604334 2.018898 +v 0.259047 1.606972 2.018898 +v 0.259030 1.580560 1.803183 +v 0.259030 1.580560 1.107413 +v -0.258712 1.397895 1.107085 +v -0.259026 1.580701 1.107085 +v 0.258696 1.371157 1.840350 +v -0.258695 1.370783 1.840350 +v -0.258695 1.370783 2.018898 +v 0.258696 1.371157 2.018898 +v 0.258713 1.397570 1.803183 +v 0.258713 1.397570 1.107413 +v 0.220014 1.397694 1.107413 +v 0.220014 1.397694 1.803183 +v -0.259026 1.580701 1.803511 +v -0.221491 1.580821 1.107085 +v -0.221491 1.580821 1.803511 +v -0.258712 1.397895 1.803511 +v -0.221177 1.398014 1.107085 +v -0.221177 1.398014 1.803511 +v 0.220331 1.580684 1.107413 +v 0.220331 1.580684 1.803183 +v 0.268254 1.513106 -0.078803 +v 0.268254 0.963807 -0.078803 +v 0.268254 0.963807 -0.628102 +v 0.268254 1.513106 -0.628102 +v 0.121073 1.490289 3.430747 +v 0.326188 1.490289 3.430747 +v 0.326188 1.452264 3.446498 +v 0.121073 1.452264 3.446498 +v 0.326188 1.436513 3.484523 +v 0.121073 1.436513 3.484523 +v 0.326188 1.452264 3.522549 +v 0.121073 1.452264 3.522549 +v 0.326188 1.490289 3.538300 +v 0.121073 1.490289 3.538300 +v 0.326188 1.528315 3.522549 +v 0.121073 1.528315 3.522549 +v 0.326188 1.544065 3.484523 +v 0.121073 1.544065 3.484523 +v 0.326188 1.528315 3.446498 +v 0.121073 1.528315 3.446498 +v 0.406256 1.125653 3.483772 +v 0.372781 1.206173 3.302696 +v 0.405798 1.241512 3.327720 +v 0.434647 1.172119 3.483772 +v 0.377865 1.264868 3.368210 +v 0.399229 1.213480 3.483772 +v 0.327584 1.243964 3.368210 +v 0.348947 1.192576 3.483772 +v 0.324441 1.207689 3.327720 +v 0.353290 1.138296 3.483772 +v 0.297563 1.387101 3.257974 +v 0.340975 1.397436 3.289178 +v 0.329861 1.380335 3.339669 +v 0.279580 1.359431 3.339669 +v 0.259618 1.363613 3.289178 +v 0.237243 1.532194 3.383282 +v 0.288991 1.522477 3.397170 +v 0.291365 1.472933 3.419640 +v 0.241084 1.452029 3.419640 +v 0.207634 1.488654 3.397170 +v 0.237243 1.532194 3.584262 +v 0.288991 1.522477 3.570374 +v 0.291365 1.472933 3.547904 +v 0.241084 1.452029 3.547904 +v 0.207634 1.488654 3.570374 +v 0.297563 1.387101 3.709570 +v 0.340975 1.397436 3.678366 +v 0.329861 1.380335 3.627876 +v 0.279580 1.359431 3.627876 +v 0.259618 1.363613 3.678366 +v 0.372781 1.206173 3.664848 +v 0.405798 1.241512 3.639824 +v 0.377865 1.264868 3.599334 +v 0.327584 1.243964 3.599334 +v 0.324441 1.207689 3.639824 +v 0.000000 1.983355 1.070358 +v 0.156272 1.918625 1.070358 +v 0.221002 1.762353 1.070358 +v 0.156272 1.606081 1.070358 +v 0.000000 1.541351 1.070358 +v -0.156272 1.606081 1.070358 +v -0.221002 1.762353 1.070358 +v 0.000000 1.541351 3.018507 +v 0.156272 1.606081 3.018507 +v 0.156272 1.606081 3.391006 +v 0.000000 1.541351 3.391006 +v -0.156272 1.918625 1.070358 +v 0.156272 1.918625 3.391006 +v 0.000000 1.983355 3.391006 +v 0.000000 2.025926 3.417953 +v 0.186374 1.948727 3.417953 +v -0.156272 1.918625 3.018507 +v -0.221002 1.762353 3.018507 +v -0.221002 1.762353 3.391006 +v -0.156272 1.918625 3.391006 +v 0.221002 1.762353 3.018507 +v 0.156272 1.918625 3.018507 +v 0.221002 1.762353 3.391006 +v -0.156272 1.606081 3.018507 +v -0.156272 1.606081 3.391006 +v 0.000000 1.983355 3.018507 +v -0.186374 1.948727 3.417953 +v -0.263573 1.762353 3.417953 +v -0.263573 1.762353 3.553212 +v -0.186374 1.948727 3.553212 +v -0.186374 1.575979 3.417953 +v 0.186374 1.575979 3.417953 +v 0.000000 1.495447 3.414135 +v 0.263573 1.762353 3.417953 +v 0.263573 1.762353 3.553212 +v 0.186374 1.948727 3.553212 +v 0.156272 1.918625 3.580159 +v 0.221002 1.762353 3.580159 +v 0.000000 1.495447 3.558366 +v -0.186374 1.575979 3.553212 +v 0.186374 1.575979 3.553212 +v 0.000000 2.025926 3.553212 +v 0.000000 1.983355 3.580159 +v -0.156272 1.918625 3.580159 +v -0.156272 1.918625 4.205390 +v 0.000000 1.983355 4.205390 +v -0.221002 1.762353 3.580159 +v 0.000000 1.541351 3.580159 +v -0.156272 1.606081 3.580159 +v 0.156272 1.606081 3.580159 +v 0.000000 2.017086 4.028187 +v 0.136534 1.975546 4.028187 +v 0.126058 1.959349 4.031190 +v -0.156272 1.606081 4.205390 +v 0.000000 1.541351 4.205390 +v 0.000000 1.568728 4.205390 +v -0.136914 1.625439 4.205390 +v -0.221002 1.762353 4.205390 +v 0.156272 1.606081 4.205390 +v 0.156272 1.918625 4.205390 +v 0.221002 1.762353 4.205390 +v -0.136914 1.899267 4.205390 +v -0.193625 1.762353 4.205390 +v -0.193625 1.762353 3.654342 +v -0.136914 1.899267 3.654342 +v 0.193625 1.762353 4.205390 +v 0.136914 1.625439 4.205390 +v 0.000000 1.955978 4.205390 +v 0.136914 1.899267 4.205390 +v -0.136914 1.625439 3.654342 +v 0.000000 1.568728 3.654342 +v 0.136914 1.625439 3.654342 +v 0.193625 1.762353 3.654342 +v 0.136914 1.899267 3.654342 +v 0.000000 1.955978 3.654342 +v -0.156124 1.365909 1.034639 +v 0.000000 1.430577 1.034639 +v 0.156124 1.365909 1.034639 +v 0.220792 1.209785 1.034639 +v 0.156124 1.053662 1.034639 +v 0.000000 0.988993 1.034639 +v -0.156124 1.053662 1.034639 +v -0.220792 1.209785 1.034639 +v 0.000000 1.430367 3.383215 +v -0.155975 1.365760 3.383215 +v -0.199637 1.409422 3.410316 +v -0.220582 1.209785 3.383215 +v 0.155975 1.365760 3.383215 +v 0.199637 1.409422 3.410316 +v 0.155975 1.053810 3.383215 +v 0.220582 1.209785 3.383215 +v 0.282329 1.209785 3.410316 +v 0.199637 1.010148 3.410316 +v 0.000000 0.989203 3.383215 +v 0.000000 0.927456 3.410316 +v -0.155975 1.053810 3.383215 +v -0.199637 1.010148 3.410316 +v -0.282329 1.209785 3.410316 +v -0.199637 1.010148 3.563519 +v -0.282329 1.209785 3.563519 +v -0.199637 1.409422 3.563519 +v 0.199637 1.010148 3.563519 +v 0.000000 0.927456 3.563519 +v 0.199637 1.409422 3.563519 +v 0.282329 1.209785 3.563519 +v 0.157156 1.052629 3.583857 +v 0.000000 0.987533 3.583857 +v 0.157156 1.366942 3.583857 +v 0.222253 1.209785 3.583857 +v -0.222253 1.209785 3.583857 +v -0.157156 1.366942 3.583857 +v -0.157156 1.052629 3.583857 +v 0.000000 1.432038 3.583857 +v 0.000000 1.432038 4.108382 +v 0.157156 1.366942 4.108382 +v -0.222253 1.209785 4.108382 +v -0.157156 1.052629 4.108382 +v -0.170965 1.038821 4.118903 +v -0.241780 1.209785 4.118903 +v 0.222253 1.209785 4.108382 +v 0.157156 1.052629 4.108382 +v 0.000000 0.987533 4.108382 +v -0.157156 1.366942 4.108382 +v -0.170965 1.380750 4.118903 +v -0.241780 1.209785 4.156476 +v -0.170965 1.380750 4.156476 +v 0.000000 0.968005 4.118903 +v 0.000000 1.451566 4.118903 +v 0.170965 1.380750 4.118903 +v 0.241780 1.209785 4.118903 +v 0.170965 1.038821 4.118903 +v 0.170965 1.038821 4.156476 +v 0.241780 1.209785 4.156476 +v 0.208075 1.209785 4.165493 +v 0.147131 1.062654 4.165493 +v -0.170965 1.038821 4.156476 +v 0.000000 0.968005 4.156476 +v 0.000000 1.451566 4.156476 +v 0.170965 1.380750 4.156476 +v -0.147131 1.356917 4.165493 +v -0.208075 1.209785 4.165493 +v -0.147131 1.062654 4.165493 +v 0.000000 1.001710 4.165493 +v 0.147131 1.356917 4.165493 +v 0.000000 1.417861 4.165493 +v 0.000000 1.994179 4.031190 +v -0.136534 1.975546 4.028187 +v -0.126058 1.959349 4.031190 +v -0.156272 1.606081 2.843204 +v -0.221002 1.762353 2.843204 +v -0.239682 1.762353 3.000497 +v -0.169481 1.592872 3.000497 +v 0.221002 1.762353 2.843204 +v 0.156272 1.606081 2.843204 +v 0.169481 1.592872 3.000497 +v 0.239682 1.762353 3.000497 +v 0.000000 1.983355 2.843204 +v 0.156272 1.918625 2.843204 +v 0.167155 1.934229 3.000244 +v 0.000569 2.004398 3.000244 +v -0.156272 1.918625 2.843204 +v -0.167155 1.934229 3.000244 +v 0.000000 1.541351 2.843204 +v 0.000000 1.522671 3.000497 +v 0.169481 1.592872 2.860280 +v 0.000000 1.522671 2.860280 +v -0.239682 1.762353 2.860280 +v -0.167155 1.934229 2.865422 +v 0.167155 1.934229 2.865422 +v 0.239682 1.762353 2.860280 +v -0.169481 1.592872 2.860280 +v 0.000569 2.004398 2.865422 +v -0.128183 2.091560 2.999992 +v -0.128183 2.091560 2.870565 +v -0.000564 2.091560 2.870565 +v 0.128183 2.091560 2.870565 +v 0.128183 2.091560 2.999992 +v -0.000758 2.091560 2.999992 +v -0.000758 2.040556 3.941854 +v -0.000758 2.038297 3.983544 +v -0.128183 2.038297 3.983544 +v -0.103443 2.040556 3.941854 +v -0.128183 2.117034 2.999992 +v -0.000758 2.117034 2.999992 +v -0.000564 2.117035 2.870565 +v -0.128183 2.117035 2.870565 +v 0.128183 2.117034 2.999992 +v 0.128183 2.117035 2.870565 +v -0.000758 2.113045 3.073697 +v -0.103443 2.113045 3.073697 +v -0.000758 2.063745 3.984738 +v -0.128183 2.063745 3.984738 +v 0.128183 2.038297 3.983544 +v 0.128183 2.063745 3.984738 +v -0.000758 2.087663 3.071927 +v 0.103443 2.087663 3.071927 +v 0.103443 2.065968 3.943648 +v -0.000758 2.065968 3.943648 +v -0.103443 2.087663 3.071927 +v -0.103443 2.065968 3.943648 +v 0.103443 2.040556 3.941854 +v 0.103443 2.113045 3.073697 +v -0.101627 1.929570 4.174595 +v -0.101627 2.046870 4.174595 +v -0.101627 2.046870 4.045168 +v -0.101627 1.929570 4.045168 +v -0.060619 2.046870 4.045168 +v 0.001267 2.046870 4.045168 +v 0.001138 1.971165 4.045168 +v 0.101627 1.929570 4.045168 +v 0.101627 2.046870 4.045168 +v 0.101627 2.046870 4.174595 +v 0.101627 1.929570 4.174595 +v 0.056925 2.046870 4.174595 +v 0.001287 2.046870 4.174595 +v 0.001138 1.971165 4.174595 +v 0.056926 2.046870 4.045168 +v 0.056926 2.055243 4.045168 +v 0.101627 2.083730 4.045168 +v -0.060365 2.046870 4.174595 +v -0.060365 2.055243 4.174595 +v -0.101627 2.083730 4.174595 +v -0.101627 2.083730 4.045168 +v 0.101627 2.083730 4.174595 +v -0.060365 2.065117 4.148927 +v -0.060365 2.065117 4.070836 +v -0.075271 2.144081 4.070836 +v -0.075271 2.144081 4.148927 +v 0.074745 2.144397 4.070836 +v 0.056926 2.065117 4.070836 +v 0.056926 2.065117 4.148927 +v 0.074745 2.144397 4.148927 +v -0.098636 2.129495 4.154779 +v -0.098636 2.129495 4.064983 +v 0.098636 2.129495 4.064983 +v 0.098636 2.129495 4.154779 +v -0.060365 2.055243 4.045168 +v 0.056926 2.055243 4.174595 +v -0.059365 1.189290 -1.312787 +v -0.059465 1.198896 -1.284075 +v 0.046693 1.198896 -1.284075 +v 0.046593 1.189290 -1.312787 +vt 0.314366 0.961863 +vt 0.294812 0.975635 +vt 0.294657 0.961939 +vt 0.273456 0.975731 +vt 0.273229 0.961965 +vt 0.262381 0.975737 +vt 0.256051 0.961941 +vt 0.125608 0.749505 +vt 0.097336 0.727764 +vt 0.125610 0.725602 +vt 0.168440 0.696871 +vt 0.168440 0.716405 +vt 0.109231 0.716275 +vt 0.127314 0.962819 +vt 0.110436 0.977071 +vt 0.110100 0.963138 +vt 0.056961 0.977985 +vt 0.034809 0.964084 +vt 0.057052 0.963821 +vt 0.034870 0.978067 +vt 0.014902 0.964099 +vt 0.199446 0.727764 +vt 0.171174 0.749505 +vt 0.171172 0.725602 +vt 0.035307 0.807355 +vt 0.010838 0.597288 +vt 0.017874 0.618909 +vt 0.015372 0.630834 +vt 0.013899 0.556050 +vt 0.009136 0.552343 +vt 0.015271 0.870213 +vt 0.091632 0.963445 +vt 0.055268 0.806356 +vt 0.088357 0.802601 +vt 0.013764 0.139760 +vt 0.049854 0.124762 +vt 0.048730 0.157936 +vt 0.271875 0.803748 +vt 0.255984 0.868690 +vt 0.239398 0.800845 +vt 0.221112 0.961929 +vt 0.221070 0.800394 +vt 0.043269 0.233050 +vt 0.010790 0.189172 +vt 0.008714 0.234441 +vt 0.040214 0.045310 +vt 0.041285 0.072586 +vt 0.016409 0.072577 +vt 0.106773 0.801728 +vt 0.188797 0.799828 +vt 0.189454 0.860441 +vt 0.168859 0.799931 +vt 0.203932 0.961982 +vt 0.190529 0.959560 +vt 0.139611 0.860982 +vt 0.140686 0.960100 +vt 0.179637 0.960676 +vt 0.191879 0.973114 +vt 0.221110 0.975759 +vt 0.239478 0.975750 +vt 0.239470 0.961920 +vt 0.091859 0.977480 +vt 0.068629 0.977845 +vt 0.151599 0.960980 +vt 0.139629 0.973680 +vt 0.295488 0.867180 +vt 0.309465 0.800651 +vt 0.314455 0.865726 +vt 0.099265 0.557700 +vt 0.088674 0.528893 +vt 0.091711 0.518805 +vt 0.273373 0.868342 +vt 0.291054 0.804240 +vt 0.137874 0.461278 +vt 0.058604 0.420707 +vt 0.138976 0.425869 +vt 0.064584 0.393192 +vt 0.133379 0.393550 +vt 0.134776 0.484662 +vt 0.059414 0.457228 +vt 0.017282 0.517402 +vt 0.096715 0.601134 +vt 0.094272 0.561212 +vt 0.090072 0.620005 +vt 0.092216 0.630834 +vt 0.019880 0.528535 +vt 0.093170 0.596621 +vt 0.048521 0.157264 +vt 0.099086 0.151375 +vt 0.101118 0.125172 +vt 0.100614 0.125701 +vt 0.096976 0.181286 +vt 0.045608 0.196565 +vt 0.014112 0.138899 +vt 0.044187 0.260468 +vt 0.009380 0.268657 +vt 0.010839 0.235095 +vt 0.047070 0.260910 +vt 0.012396 0.269226 +vt 0.011742 0.189926 +vt 0.045438 0.233562 +vt 0.050505 0.124018 +vt 0.015811 0.109271 +vt 0.046833 0.197155 +vt 0.129115 0.163540 +vt 0.092797 0.074820 +vt 0.123836 0.051890 +vt 0.125752 0.076448 +vt 0.099258 0.151849 +vt 0.129673 0.163858 +vt 0.097922 0.181697 +vt 0.098488 0.207838 +vt 0.102467 0.099218 +vt 0.100128 0.208179 +vt 0.086379 0.050726 +vt 0.161380 0.154835 +vt 0.130349 0.120529 +vt 0.161569 0.110452 +vt 0.161572 0.193930 +vt 0.129818 0.193381 +vt 0.101290 0.099804 +vt 0.131373 0.074271 +vt 0.130916 0.120113 +vt 0.133141 0.073753 +vt 0.128491 0.193132 +vt 0.134570 0.037458 +vt 0.163321 0.074493 +vt 0.324006 0.068216 +vt 0.325470 0.009804 +vt 0.159015 0.221209 +vt 0.319147 0.219954 +vt 0.160154 0.193815 +vt 0.162323 0.110144 +vt 0.321290 0.154865 +vt 0.153411 0.072905 +vt 0.160980 0.154628 +vt 0.161642 0.074882 +vt 0.136981 0.357463 +vt 0.167260 0.372515 +vt 0.136981 0.373289 +vt 0.088568 0.357595 +vt 0.068186 0.373289 +vt 0.068186 0.357463 +vt 0.189977 0.371792 +vt 0.167260 0.356690 +vt 0.189978 0.355966 +vt 0.321611 0.219338 +vt 0.161143 0.221263 +vt 0.322066 0.154397 +vt 0.321076 0.041804 +vt 0.323456 0.071128 +vt 0.322534 0.067945 +vt 0.250154 0.792851 +vt 0.273221 0.795467 +vt 0.091316 0.794644 +vt 0.293066 0.797695 +vt 0.016873 0.804883 +vt 0.033786 0.801329 +vt 0.077381 0.795722 +vt 0.155566 0.788575 +vt 0.138639 0.778486 +vt 0.158066 0.772764 +vt 0.054011 0.798812 +vt 0.236326 0.792079 +vt 0.202051 0.371732 +vt 0.202051 0.355906 +vt 0.116599 0.357595 +vt 0.116599 0.373421 +vt 0.015190 0.355966 +vt 0.003116 0.371732 +vt 0.003116 0.355906 +vt 0.037907 0.372515 +vt 0.037907 0.356690 +vt 0.015190 0.371792 +vt 0.105668 0.357644 +vt 0.105668 0.373470 +vt 0.099489 0.357644 +vt 0.088568 0.373421 +vt 0.099489 0.373470 +vt 0.188632 0.777943 +vt 0.167878 0.772654 +vt 0.181394 0.762326 +vt 0.294067 0.647961 +vt 0.303167 0.614199 +vt 0.303167 0.647961 +vt 0.153583 0.091790 +vt 0.321316 0.117408 +vt 0.153648 0.123361 +vt 0.323510 0.088039 +vt 0.124127 0.112592 +vt 0.125603 0.089619 +vt 0.041308 0.093532 +vt 0.086689 0.119252 +vt 0.039823 0.120997 +vt 0.273195 0.559127 +vt 0.289603 0.553152 +vt 0.290452 0.556695 +vt 0.091482 0.092156 +vt 0.016236 0.091777 +vt 0.281554 0.625218 +vt 0.271561 0.618402 +vt 0.294030 0.616776 +vt 0.170751 0.788410 +vt 0.193727 0.919817 +vt 0.180297 0.708701 +vt 0.193725 0.708701 +vt 0.265671 0.609576 +vt 0.271448 0.609440 +vt 0.294067 0.614199 +vt 0.303167 0.605510 +vt 0.293952 0.607827 +vt 0.236000 0.625228 +vt 0.245972 0.618420 +vt 0.245995 0.625548 +vt 0.223524 0.616863 +vt 0.246072 0.609463 +vt 0.254076 0.629043 +vt 0.263451 0.625557 +vt 0.263443 0.629089 +vt 0.265727 0.618518 +vt 0.263353 0.618566 +vt 0.265808 0.625494 +vt 0.254047 0.637653 +vt 0.263488 0.637699 +vt 0.251845 0.609578 +vt 0.251796 0.618515 +vt 0.251734 0.625465 +vt 0.157783 0.800051 +vt 0.138954 0.800369 +vt 0.254084 0.625511 +vt 0.254163 0.618559 +vt 0.263310 0.609597 +vt 0.254206 0.609594 +vt 0.294067 0.605510 +vt 0.303167 0.565131 +vt 0.251853 0.569232 +vt 0.253156 0.562875 +vt 0.254213 0.569233 +vt 0.263295 0.569233 +vt 0.265655 0.569230 +vt 0.266567 0.564085 +vt 0.267638 0.557134 +vt 0.268986 0.560040 +vt 0.294067 0.565131 +vt 0.303167 0.559802 +vt 0.264350 0.562875 +vt 0.263295 0.562688 +vt 0.248520 0.560043 +vt 0.244268 0.555593 +vt 0.249867 0.557136 +vt 0.254213 0.562688 +vt 0.263295 0.555128 +vt 0.250939 0.564087 +vt 0.294067 0.559802 +vt 0.303167 0.554364 +vt 0.294067 0.554364 +vt 0.303167 0.547980 +vt 0.273237 0.555588 +vt 0.254213 0.555128 +vt 0.263295 0.546600 +vt 0.263141 0.521961 +vt 0.254213 0.546600 +vt 0.254367 0.521961 +vt 0.303021 0.521961 +vt 0.294067 0.547980 +vt 0.294213 0.521961 +vt 0.227901 0.553165 +vt 0.244311 0.559132 +vt 0.227053 0.556709 +vt 0.322830 0.524494 +vt 0.328472 0.528894 +vt 0.323984 0.531427 +vt 0.330014 0.547183 +vt 0.325218 0.552440 +vt 0.325218 0.547183 +vt 0.328472 0.540213 +vt 0.322830 0.544613 +vt 0.323984 0.537680 +vt 0.329035 0.552477 +vt 0.324239 0.557734 +vt 0.324239 0.552477 +vt 0.321255 0.547183 +vt 0.320214 0.557734 +vt 0.315026 0.552477 +vt 0.320214 0.552477 +vt 0.319165 0.526989 +vt 0.319165 0.542118 +vt 0.320185 0.535986 +vt 0.314282 0.539490 +vt 0.310555 0.534572 +vt 0.315100 0.534572 +vt 0.321255 0.552440 +vt 0.316083 0.547183 +vt 0.320185 0.533121 +vt 0.314282 0.529617 +vt 0.309808 0.539058 +vt 0.304377 0.538124 +vt 0.310555 0.534535 +vt 0.309808 0.530049 +vt 0.315026 0.557734 +vt 0.310543 0.552477 +vt 0.316083 0.552440 +vt 0.311538 0.547183 +vt 0.305983 0.556964 +vt 0.304350 0.554128 +vt 0.305983 0.553247 +vt 0.304377 0.530983 +vt 0.305407 0.528102 +vt 0.311538 0.552440 +vt 0.304942 0.547953 +vt 0.303203 0.554128 +vt 0.304350 0.556083 +vt 0.303203 0.556083 +vt 0.303203 0.550789 +vt 0.303203 0.548833 +vt 0.305407 0.541005 +vt 0.303203 0.540240 +vt 0.303203 0.528867 +vt 0.303745 0.527351 +vt 0.009347 0.553762 +vt 0.097357 0.642576 +vt 0.009348 0.642577 +vt 0.107587 0.829304 +vt 0.189150 0.799526 +vt 0.189194 0.829363 +vt 0.107632 0.799414 +vt 0.189109 0.771635 +vt 0.107673 0.771635 +vt 0.097357 0.553762 +vt 0.117762 0.642576 +vt 0.093110 0.647104 +vt 0.013595 0.647105 +vt 0.013557 0.518373 +vt 0.013557 0.549711 +vt 0.009348 0.683002 +vt 0.097358 0.771695 +vt 0.009348 0.771696 +vt 0.144454 0.771725 +vt 0.117763 0.683001 +vt 0.144712 0.682911 +vt 0.097357 0.513726 +vt 0.117762 0.553762 +vt 0.097357 0.683001 +vt 0.117763 0.771695 +vt 0.280600 0.402906 +vt 0.283604 0.483938 +vt 0.280600 0.483938 +vt 0.013595 0.678474 +vt 0.093110 0.678473 +vt 0.300859 0.402771 +vt 0.303774 0.483879 +vt 0.300859 0.483879 +vt 0.093147 0.549711 +vt 0.093147 0.518373 +vt 0.009347 0.513726 +vt 0.317967 0.402771 +vt 0.303774 0.402771 +vt 0.303778 0.398399 +vt 0.320881 0.483879 +vt 0.320881 0.402771 +vt 0.303778 0.488250 +vt 0.317967 0.483879 +vt 0.317971 0.488250 +vt 0.297812 0.402906 +vt 0.283604 0.402906 +vt 0.297808 0.488445 +vt 0.297812 0.483938 +vt 0.300817 0.483938 +vt 0.300817 0.402906 +vt 0.297808 0.398399 +vt 0.283600 0.398399 +vt 0.080480 0.350713 +vt 0.103363 0.346034 +vt 0.103172 0.373989 +vt 0.333333 -0.000000 +vt 1.000000 1.000000 +vt 0.333333 1.000000 +vt 0.195007 0.381137 +vt 0.201745 0.431502 +vt 0.195007 0.431502 +vt 0.201745 0.381137 +vt 0.208482 0.431502 +vt 0.154582 0.381137 +vt 0.161320 0.431502 +vt 0.154582 0.431502 +vt 0.161319 0.381137 +vt 0.168057 0.431502 +vt 0.168057 0.381137 +vt 0.174795 0.431502 +vt 0.174795 0.381137 +vt 0.181532 0.431502 +vt 0.231060 0.416867 +vt 0.226296 0.424014 +vt 0.219558 0.399615 +vt 0.181532 0.381137 +vt 0.188270 0.431502 +vt 0.188270 0.381137 +vt 0.187482 0.431554 +vt 0.156855 0.444483 +vt 0.154582 0.431555 +vt 0.181530 0.456662 +vt 0.160534 0.456663 +vt 0.181530 0.470033 +vt 0.160534 0.470034 +vt 0.156855 0.482213 +vt 0.187482 0.495142 +vt 0.154582 0.495142 +vt 0.208478 0.431554 +vt 0.177852 0.444483 +vt 0.175578 0.431554 +vt 0.202527 0.456662 +vt 0.202527 0.470033 +vt 0.177852 0.482213 +vt 0.208479 0.495141 +vt 0.175579 0.495142 +vt 0.229475 0.431554 +vt 0.198848 0.444483 +vt 0.196575 0.431554 +vt 0.227202 0.444483 +vt 0.223523 0.470033 +vt 0.198849 0.482213 +vt 0.229475 0.495141 +vt 0.196575 0.495142 +vt 0.250472 0.431554 +vt 0.219845 0.444483 +vt 0.217572 0.431554 +vt 0.248198 0.444483 +vt 0.223523 0.456662 +vt 0.244520 0.456662 +vt 0.244520 0.470033 +vt 0.219845 0.482212 +vt 0.250472 0.495141 +vt 0.217572 0.495141 +vt 0.238569 0.431554 +vt 0.269195 0.444483 +vt 0.240842 0.444483 +vt 0.265517 0.456662 +vt 0.269195 0.482213 +vt 0.240842 0.482212 +vt 0.238568 0.495141 +vt 0.259565 0.431554 +vt 0.290192 0.444483 +vt 0.261838 0.444483 +vt 0.286513 0.456663 +vt 0.265517 0.470033 +vt 0.290191 0.482213 +vt 0.261838 0.482212 +vt 0.259565 0.495141 +vt 0.280562 0.431554 +vt 0.311188 0.444483 +vt 0.282835 0.444483 +vt 0.307510 0.456663 +vt 0.286513 0.470033 +vt 0.311188 0.482213 +vt 0.282835 0.482213 +vt 0.280561 0.495142 +vt 0.126584 0.919818 +vt 0.140012 0.708701 +vt 0.140013 0.919817 +vt 0.207154 0.708701 +vt 0.207155 0.919817 +vt 0.166870 0.919817 +vt 0.153440 0.708701 +vt 0.166869 0.708701 +vt 0.180298 0.919817 +vt 0.153441 0.919817 +vt 0.234135 0.875411 +vt 0.220697 0.919762 +vt 0.220707 0.875404 +vt 0.220583 0.919816 +vt 0.220582 0.708701 +vt 0.113155 0.708702 +vt 0.126584 0.708702 +vt 0.314568 0.891555 +vt 0.309497 0.867473 +vt 0.313761 0.869278 +vt 0.301277 0.875445 +vt 0.287839 0.919797 +vt 0.287849 0.875438 +vt 0.260992 0.875425 +vt 0.247553 0.919776 +vt 0.247564 0.875418 +vt 0.328134 0.875459 +vt 0.314695 0.919811 +vt 0.314706 0.875452 +vt 0.274410 0.919790 +vt 0.274420 0.875431 +vt 0.260982 0.919783 +vt 0.234125 0.919769 +vt 0.301267 0.919804 +vt 0.308531 0.948048 +vt 0.297558 0.919947 +vt 0.309626 0.921049 +vt 0.314647 0.896518 +vt 0.310460 0.894042 +vt 0.311777 0.973256 +vt 0.312696 0.950617 +vt 0.320287 0.797781 +vt 0.307573 0.814336 +vt 0.317673 0.792250 +vt 0.313606 0.864986 +vt 0.308535 0.840905 +vt 0.312799 0.842709 +vt 0.312873 0.946256 +vt 0.313792 0.923617 +vt 0.320287 0.992004 +vt 0.307435 0.975048 +vt 0.312643 0.838418 +vt 0.311836 0.816141 +vt 0.296659 0.841873 +vt 0.293357 0.866637 +vt 0.292551 0.844359 +vt 0.295697 0.815304 +vt 0.297621 0.868441 +vt 0.298902 0.894148 +vt 0.296462 0.946946 +vt 0.260683 0.910703 +vt 0.247255 0.985157 +vt 0.247255 0.910703 +vt 0.293215 0.921738 +vt 0.295366 0.973946 +vt 0.281238 0.988439 +vt 0.291201 0.971377 +vt 0.292395 0.840068 +vt 0.291588 0.817791 +vt 0.270381 0.881699 +vt 0.294350 0.864763 +vt 0.269266 0.880790 +vt 0.292119 0.948738 +vt 0.281862 0.800912 +vt 0.284016 0.795041 +vt 0.300968 0.985157 +vt 0.288372 0.988169 +vt 0.287540 0.985157 +vt 0.287540 0.910703 +vt 0.274112 0.985157 +vt 0.274112 0.910703 +vt 0.206969 0.910703 +vt 0.193541 0.985157 +vt 0.193541 0.910703 +vt 0.233826 0.910703 +vt 0.220398 0.985157 +vt 0.220398 0.910703 +vt 0.260683 0.985157 +vt 0.300968 0.910703 +vt 0.206969 0.985157 +vt 0.233826 0.985157 +vt 0.000000 0.406250 +vt 0.052083 0.421875 +vt 0.000000 0.421875 +vt 0.207801 0.988169 +vt 0.234658 0.988169 +vt 0.259851 0.988169 +vt 0.248086 0.988169 +vt 0.286708 0.988169 +vt 0.274943 0.988169 +vt 0.206138 0.988169 +vt 0.194373 0.988169 +vt 0.232995 0.988169 +vt 0.221230 0.988169 +vt 0.261515 0.988169 +vt 0.048732 0.447842 +vt 0.045556 0.447842 +vt 0.048732 0.436341 +vt 0.000000 0.375000 +vt 0.052083 0.390625 +vt 0.000000 0.390625 +vt 0.000000 0.468750 +vt 0.052083 0.484375 +vt 0.000000 0.484375 +vt 0.000000 0.437500 +vt 0.052083 0.453125 +vt 0.000000 0.453125 +vt 0.052083 0.437500 +vt 0.052083 0.406250 +vt 0.052083 0.500000 +vt 0.000000 0.500000 +vt 0.052083 0.468750 +vt 0.077693 0.682531 +vt 0.085752 0.702806 +vt 0.072784 0.686569 +vt 0.099335 0.548750 +vt 0.085924 0.828424 +vt 0.085920 0.548750 +vt 0.194542 0.682531 +vt 0.186482 0.702806 +vt 0.184647 0.695445 +vt 0.154742 0.695445 +vt 0.169694 0.702806 +vt 0.152906 0.702806 +vt 0.137953 0.695445 +vt 0.136117 0.702806 +vt 0.171530 0.695445 +vt 0.117493 0.695445 +vt 0.102541 0.702806 +vt 0.104376 0.695445 +vt 0.134281 0.695445 +vt 0.119329 0.702806 +vt 0.121165 0.695445 +vt 0.072504 0.548751 +vt 0.072521 0.828425 +vt 0.059088 0.548753 +vt 0.045714 0.828432 +vt 0.045673 0.548757 +vt 0.126166 0.548755 +vt 0.112729 0.828426 +vt 0.112751 0.548752 +vt 0.059117 0.828428 +vt 0.032312 0.828437 +vt 0.032257 0.548762 +vt 0.099327 0.828424 +vt 0.100705 0.695445 +vt 0.087588 0.695445 +vt 0.018909 0.828443 +vt 0.018841 0.548769 +vt 0.102541 0.720660 +vt 0.085752 0.720660 +vt 0.136117 0.720660 +vt 0.169694 0.720660 +vt 0.119329 0.720660 +vt 0.152906 0.720660 +vt 0.151119 0.727549 +vt 0.137904 0.727549 +vt 0.186482 0.720660 +vt 0.171480 0.727549 +vt 0.100754 0.727549 +vt 0.087538 0.727549 +vt 0.104327 0.727549 +vt 0.121115 0.727549 +vt 0.077795 0.740943 +vt 0.073051 0.737368 +vt 0.194439 0.740943 +vt 0.184696 0.727549 +vt 0.167908 0.727549 +vt 0.154692 0.727549 +vt 0.274714 0.919931 +vt 0.261210 0.982393 +vt 0.261210 0.919931 +vt 0.288333 0.987837 +vt 0.271580 0.973788 +vt 0.289932 0.985191 +vt 0.247705 0.919931 +vt 0.234201 0.982393 +vt 0.234201 0.919931 +vt 0.220697 0.982393 +vt 0.220697 0.919931 +vt 0.247705 0.982393 +vt 0.301723 0.919931 +vt 0.288219 0.982393 +vt 0.288219 0.919931 +vt 0.315227 0.919931 +vt 0.301723 0.982393 +vt 0.328732 0.919931 +vt 0.315227 0.982393 +vt 0.274714 0.982393 +vt 0.293124 0.985191 +vt 0.309933 0.968199 +vt 0.311477 0.973788 +vt 0.266945 0.970578 +vt 0.261721 0.942874 +vt 0.269323 0.970403 +vt 0.316112 0.970578 +vt 0.321335 0.942874 +vt 0.323100 0.945273 +vt 0.316112 0.910382 +vt 0.321335 0.938086 +vt 0.313734 0.910558 +vt 0.288333 0.893123 +vt 0.271580 0.907172 +vt 0.271463 0.903605 +vt 0.266945 0.910383 +vt 0.261721 0.938086 +vt 0.259957 0.935688 +vt 0.294723 0.893123 +vt 0.311476 0.907172 +vt 0.293124 0.895769 +vt 0.294723 0.987837 +vt 0.311593 0.977356 +vt 0.273123 0.912761 +vt 0.291528 0.906976 +vt 0.275734 0.916790 +vt 0.291476 0.979602 +vt 0.273049 0.968088 +vt 0.313734 0.970403 +vt 0.317609 0.940559 +vt 0.310007 0.912873 +vt 0.289932 0.895769 +vt 0.269323 0.910558 +vt 0.265447 0.940401 +vt 0.291581 0.901359 +vt 0.291528 0.973984 +vt 0.269192 0.940480 +vt 0.309933 0.912761 +vt 0.307322 0.964171 +vt 0.273123 0.968199 +vt 0.265447 0.940559 +vt 0.275734 0.964171 +vt 0.313864 0.940480 +vt 0.317609 0.940401 +vt 0.307322 0.916789 +vt 0.282700 0.682531 +vt 0.271598 0.702003 +vt 0.270797 0.682531 +vt 0.263862 0.653767 +vt 0.276843 0.637114 +vt 0.276843 0.652877 +vt 0.272434 0.675600 +vt 0.263862 0.635913 +vt 0.272669 0.614289 +vt 0.256381 0.695742 +vt 0.297255 0.695389 +vt 0.282107 0.702003 +vt 0.269648 0.894065 +vt 0.269215 0.907339 +vt 0.267789 0.894057 +vt 0.270334 0.906440 +vt 0.294268 0.923602 +vt 0.237869 0.893926 +vt 0.237791 0.911563 +vt 0.289962 0.934035 +vt 0.303659 0.931128 +vt 0.304214 0.934035 +vt 0.261457 0.934035 +vt 0.247760 0.931128 +vt 0.260902 0.931128 +vt 0.232711 0.934065 +vt 0.222295 0.920924 +vt 0.233498 0.931227 +vt 0.318708 0.934065 +vt 0.329124 0.920924 +vt 0.330769 0.923036 +vt 0.275710 0.934035 +vt 0.289407 0.931128 +vt 0.247205 0.934035 +vt 0.246640 0.931132 +vt 0.317921 0.931228 +vt 0.262012 0.931128 +vt 0.275154 0.931128 +vt 0.262012 0.953205 +vt 0.275709 0.950376 +vt 0.275154 0.953205 +vt 0.261457 0.950376 +vt 0.317931 0.952980 +vt 0.304214 0.950376 +vt 0.318708 0.949777 +vt 0.233488 0.952980 +vt 0.247205 0.950376 +vt 0.246629 0.953196 +vt 0.232711 0.949777 +vt 0.289407 0.953206 +vt 0.289962 0.950376 +vt 0.329533 0.962240 +vt 0.331194 0.959687 +vt 0.221886 0.962240 +vt 0.247760 0.953205 +vt 0.260902 0.953205 +vt 0.290517 0.953206 +vt 0.303659 0.953205 +vt 0.286548 0.925737 +vt 0.274178 0.941902 +vt 0.276506 0.922891 +vt 0.263857 0.931768 +vt 0.253669 0.941716 +vt 0.241589 0.925551 +vt 0.251491 0.922891 +vt 0.302318 0.955878 +vt 0.296095 0.940846 +vt 0.309892 0.941203 +vt 0.276157 1.000043 +vt 0.277845 0.988719 +vt 0.279031 0.999320 +vt 0.284417 0.944018 +vt 0.263815 0.960025 +vt 0.274027 0.944968 +vt 0.273860 0.960272 +vt 0.284163 0.946906 +vt 0.263891 0.944699 +vt 0.253734 0.959924 +vt 0.253781 0.944730 +vt 0.263905 0.941721 +vt 0.262350 0.883120 +vt 0.272118 0.893652 +vt 0.262350 0.893652 +vt 0.243789 0.946439 +vt 0.243564 0.943592 +vt 0.274698 0.990680 +vt 0.275897 0.990665 +vt 0.222326 0.666214 +vt 0.223796 0.675651 +vt 0.221878 0.675521 +vt 0.276984 0.883345 +vt 0.274471 0.883120 +vt 0.209797 0.558857 +vt 0.219735 0.569163 +vt 0.209797 0.569163 +vt 0.225468 0.664276 +vt 0.226612 0.674973 +vt 0.222094 0.558857 +vt 0.223523 0.666167 +vt 0.281111 0.893792 +vt 0.279697 0.988827 +vt 0.228356 0.674554 +vt 0.227211 0.663856 +vt 0.220401 0.664219 +vt 0.217884 0.569235 +vt 0.272118 0.897282 +vt 0.279262 0.893687 +vt 0.219072 0.674722 +vt 0.289130 0.883559 +vt 0.289049 0.893859 +vt 0.272776 0.988740 +vt 0.274236 0.999907 +vt 0.271463 0.999118 +vt 0.226877 0.569238 +vt 0.236860 0.558893 +vt 0.236778 0.569413 +vt 0.208616 0.698065 +vt 0.199561 0.713051 +vt 0.199561 0.698065 +vt 0.223046 0.714223 +vt 0.228088 0.714255 +vt 0.228001 0.723082 +vt 0.247216 0.713051 +vt 0.256270 0.698065 +vt 0.256270 0.713051 +vt 0.232635 0.696906 +vt 0.228128 0.696870 +vt 0.228192 0.688045 +vt 0.236144 0.714777 +vt 0.232647 0.713361 +vt 0.236489 0.710792 +vt 0.219824 0.696340 +vt 0.223052 0.697748 +vt 0.219448 0.700309 +vt 0.211461 0.713051 +vt 0.208616 0.713051 +vt 0.244371 0.698065 +vt 0.247216 0.698065 +vt 0.223330 0.710079 +vt 0.217127 0.701037 +vt 0.223330 0.701037 +vt 0.232384 0.710079 +vt 0.238657 0.701037 +vt 0.238657 0.710079 +vt 0.215001 0.700359 +vt 0.211461 0.698065 +vt 0.240830 0.700359 +vt 0.244370 0.713051 +vt 0.240830 0.710757 +vt 0.215001 0.710756 +vt 0.212477 0.718880 +vt 0.232384 0.701037 +vt 0.217127 0.710079 +vt 0.243247 0.691947 +vt 0.223051 0.713206 +vt 0.232650 0.697917 +vt 0.236090 0.696640 +vt 0.236348 0.700497 +vt 0.219875 0.714484 +vt 0.219585 0.710645 +vt 0.243247 0.719169 +vt 0.212477 0.692235 +vt 0.223082 0.696719 +vt 0.220294 0.682531 +vt 0.232619 0.714384 +vt 0.235699 0.728531 +vt 0.236749 0.573040 +vt 0.269746 0.998630 +vt 0.144323 0.762715 +vt 0.314455 0.975508 +vt 0.097131 0.750157 +vt 0.159735 0.751740 +vt 0.138787 0.766338 +vt 0.117867 0.751648 +vt 0.109270 0.696289 +vt 0.127627 0.976678 +vt 0.014857 0.978001 +vt 0.199651 0.750157 +vt 0.014710 0.592571 +vt 0.014697 0.110197 +vt 0.010653 0.072850 +vt 0.010554 0.041223 +vt 0.199186 0.800615 +vt 0.128645 0.801487 +vt 0.203942 0.975766 +vt 0.062578 0.483566 +vt 0.131861 0.038058 +vt 0.318354 0.254488 +vt 0.153393 0.041207 +vt 0.321715 0.253791 +vt 0.322483 0.009668 +vt 0.308636 0.795153 +vt 0.018435 0.799670 +vt 0.009876 0.122906 +vt 0.010440 0.091074 +vt 0.271559 0.625547 +vt 0.223589 0.607923 +vt 0.327319 0.521961 +vt 0.330014 0.552440 +vt 0.327319 0.547146 +vt 0.329035 0.557734 +vt 0.315100 0.534535 +vt 0.310543 0.557734 +vt 0.304942 0.551670 +vt 0.303745 0.541756 +vt 0.117762 0.513726 +vt 0.317971 0.398399 +vt 0.283600 0.488445 +vt 0.141926 0.346559 +vt 0.168187 0.351749 +vt 0.141640 0.374054 +vt 0.180275 0.360697 +vt 0.167479 0.368991 +vt 0.081648 0.369717 +vt 0.075115 0.362544 +vt 0.074695 0.357469 +vt 1.000000 -0.000000 +vt 0.208482 0.381137 +vt 0.219558 0.424014 +vt 0.214794 0.416868 +vt 0.214794 0.406761 +vt 0.226296 0.399615 +vt 0.231060 0.406761 +vt 0.185209 0.444483 +vt 0.185209 0.482213 +vt 0.206205 0.444482 +vt 0.206205 0.482213 +vt 0.227202 0.482212 +vt 0.248198 0.482212 +vt 0.271468 0.431554 +vt 0.271468 0.495142 +vt 0.292465 0.431554 +vt 0.292465 0.495142 +vt 0.313461 0.431555 +vt 0.307510 0.470034 +vt 0.313461 0.495142 +vt 0.113156 0.919818 +vt 0.328124 0.919818 +vt 0.313949 0.919163 +vt 0.317605 0.997602 +vt 0.292296 0.944377 +vt 0.283402 0.994429 +vt 0.300137 0.988169 +vt 0.219566 0.988169 +vt 0.246423 0.988169 +vt 0.273280 0.988169 +vt 0.043310 0.444474 +vt 0.043310 0.439710 +vt 0.045556 0.436341 +vt 0.050978 0.439710 +vt 0.050978 0.444474 +vt 0.052083 0.375000 +vt 0.199450 0.686569 +vt 0.167858 0.695445 +vt 0.151070 0.695445 +vt 0.126132 0.828429 +vt 0.117543 0.727549 +vt 0.134331 0.727549 +vt 0.199184 0.737368 +vt 0.271463 0.977356 +vt 0.328732 0.982393 +vt 0.291581 0.979602 +vt 0.259957 0.945273 +vt 0.323100 0.935687 +vt 0.311593 0.903605 +vt 0.291476 0.901359 +vt 0.310007 0.968087 +vt 0.273049 0.912873 +vt 0.237860 0.876290 +vt 0.290517 0.931128 +vt 0.220707 0.923131 +vt 0.276265 0.931128 +vt 0.304779 0.931132 +vt 0.304790 0.953196 +vt 0.276265 0.953205 +vt 0.220287 0.959600 +vt 0.293315 0.949913 +vt 0.224609 0.558677 +vt 0.218549 0.664294 +vt 0.262350 0.897282 +vt 0.220063 0.728189 +vt 0.235926 0.682997 +vt 0.216897 0.712351 +vt 0.238896 0.698725 +vt 0.238896 0.712391 +vt 0.216897 0.698764 +vt 0.226848 0.572865 +vt 0.271059 0.988251 +vn 0.4257 0.9049 -0.0048 +vn 0.9414 0.3371 -0.0135 +vn 1.0000 -0.0021 -0.0092 +vn 0.9999 -0.0056 -0.0127 +vn -0.7762 -0.6305 -0.0048 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0049 -0.0080 +vn -1.0000 0.0016 -0.0087 +vn -0.9414 0.3371 -0.0136 +vn -0.9415 0.3368 -0.0109 +vn -0.4227 0.9063 0.0000 +vn 0.7762 -0.6305 -0.0048 +vn -0.9415 0.3371 0.0000 +vn -0.9406 0.3396 0.0004 +vn 0.3933 -0.0014 0.9194 +vn 0.3737 0.1338 0.9179 +vn -1.0000 -0.0035 -0.0003 +vn 0.9937 0.0000 -0.1121 +vn 1.0000 -0.0035 0.0000 +vn 1.0000 0.0000 -0.0002 +vn -0.9568 0.2679 -0.1132 +vn -0.7341 -0.6786 -0.0246 +vn -1.0000 -0.0004 -0.0003 +vn -0.0014 -0.9870 -0.1609 +vn 1.0000 -0.0079 -0.0019 +vn 1.0000 -0.0051 0.0001 +vn -1.0000 -0.0051 0.0001 +vn -1.0000 -0.0079 -0.0019 +vn 0.0908 -0.1778 0.9799 +vn 0.0000 -1.0000 -0.0075 +vn 1.0000 0.0016 -0.0088 +vn 1.0000 0.0049 -0.0080 +vn 0.9999 -0.0004 -0.0153 +vn 0.9999 -0.0004 -0.0102 +vn -0.9999 -0.0004 -0.0102 +vn -0.9999 -0.0004 -0.0153 +vn -1.0000 -0.0021 -0.0092 +vn -0.9999 -0.0069 -0.0104 +vn -0.9999 -0.0048 -0.0096 +vn -0.0908 -0.1778 0.9799 +vn 0.4227 0.9063 0.0000 +vn 0.1385 0.3003 -0.9437 +vn 0.9415 0.3371 0.0000 +vn 0.9333 0.3590 -0.0000 +vn 0.4012 0.9160 0.0000 +vn 1.0000 -0.0023 0.0000 +vn 0.9985 -0.0546 0.0000 +vn 0.3719 0.1363 -0.9182 +vn 0.7077 0.7065 -0.0002 +vn 0.1397 0.2995 0.9438 +vn 0.3939 0.0013 -0.9192 +vn -1.0000 -0.0068 0.0000 +vn -1.0000 -0.0061 0.0028 +vn -1.0000 -0.0042 0.0047 +vn 1.0000 0.0000 0.0000 +vn 1.0000 0.0007 0.0027 +vn 1.0000 -0.0016 -0.0023 +vn -0.9546 0.2485 -0.1646 +vn -0.9937 -0.0007 -0.1122 +vn -0.5111 0.8476 -0.1425 +vn 0.5111 0.8476 -0.1425 +vn 0.9568 0.2679 -0.1132 +vn -0.9937 0.0000 -0.1121 +vn 0.9936 -0.0013 -0.1126 +vn -0.9389 0.3167 -0.1345 +vn -0.5509 -0.5672 0.6122 +vn 0.9389 0.3167 -0.1345 +vn -0.4738 0.7235 -0.5021 +vn -1.0000 0.0000 0.0000 +vn -1.0000 -0.0023 0.0014 +vn 0.4738 0.7235 -0.5021 +vn 1.0000 -0.0012 0.0016 +vn 1.0000 -0.0039 0.0023 +vn 0.9546 0.2485 -0.1646 +vn -0.6739 -0.6939 0.2537 +vn 0.9694 0.2236 0.1017 +vn 0.9694 0.2237 0.1012 +vn 1.0000 -0.0034 -0.0015 +vn 1.0000 -0.0017 -0.0014 +vn 1.0000 -0.0038 -0.0012 +vn 0.5456 0.7635 0.3455 +vn 1.0000 0.0015 0.0024 +vn 1.0000 -0.0023 -0.0015 +vn -1.0000 -0.0045 0.0006 +vn -1.0000 -0.0035 0.0032 +vn -1.0000 -0.0007 0.0039 +vn -0.4293 0.8526 -0.2981 +vn -1.0000 -0.0004 0.0028 +vn 0.4293 0.8526 -0.2981 +vn 1.0000 -0.0037 0.0023 +vn 1.0000 -0.0061 0.0037 +vn -0.5813 0.8136 -0.0067 +vn -1.0000 -0.0019 -0.0013 +vn -1.0000 -0.0017 0.0003 +vn -0.6627 -0.6823 -0.3087 +vn -0.9694 0.2237 0.1012 +vn -0.9694 0.2235 0.1017 +vn 1.0000 0.0006 -0.0028 +vn 1.0000 -0.0008 0.0015 +vn -1.0000 -0.0034 -0.0015 +vn -1.0000 -0.0033 0.0002 +vn -1.0000 -0.0014 -0.0035 +vn -0.5456 0.7635 0.3455 +vn -1.0000 -0.0025 -0.0012 +vn -1.0000 -0.0017 0.0000 +vn -0.9902 0.1399 -0.0006 +vn 0.5813 0.8136 -0.0067 +vn 1.0000 -0.0032 -0.0014 +vn 1.0000 -0.0034 0.0003 +vn 1.0000 -0.0038 -0.0000 +vn 0.9737 0.2279 -0.0023 +vn 0.9738 0.2276 -0.0019 +vn -0.6847 -0.7050 0.1849 +vn -0.9738 0.2276 -0.0019 +vn -0.9736 0.2281 -0.0020 +vn 1.0000 -0.0017 -0.0001 +vn 0.6275 0.0151 -0.7785 +vn 0.6330 0.0176 -0.7740 +vn -0.7019 0.0021 -0.7122 +vn -0.7064 0.0000 -0.7078 +vn 0.6040 0.2359 -0.7612 +vn 0.3767 0.8078 -0.4533 +vn -0.3910 0.8384 -0.3797 +vn -0.7142 0.0083 -0.6999 +vn -0.7143 0.0016 -0.6998 +vn -0.7176 0.0128 -0.6964 +vn -0.1915 -0.3110 -0.9309 +vn -0.6735 0.2590 -0.6923 +vn 0.6296 0.0075 -0.7769 +vn 0.6296 0.0000 -0.7769 +vn 0.6254 -0.0051 -0.7803 +vn -0.7634 0.6459 -0.0028 +vn 0.7634 0.6459 -0.0028 +vn 1.0000 -0.0017 0.0000 +vn 0.9902 0.1399 -0.0006 +vn -0.6967 -0.7173 0.0031 +vn 0.6973 -0.7167 0.0031 +vn 0.0000 -1.0000 0.0043 +vn 0.1962 -0.2566 -0.9464 +vn 0.0000 0.0000 -1.0000 +vn 0.6853 -0.7044 0.1847 +vn 0.0000 -0.9673 0.2537 +vn 0.6633 -0.6818 -0.3085 +vn 0.0000 -0.9111 -0.4123 +vn 0.7110 -0.6559 0.2535 +vn 0.9999 0.0128 -0.0066 +vn 0.9999 0.0080 -0.0062 +vn 0.5516 -0.5669 0.6119 +vn 0.0000 -0.6796 0.7335 +vn 0.7348 -0.6778 -0.0246 +vn 0.9238 0.0000 -0.3830 +vn 0.0056 -0.0098 -0.9999 +vn 0.0000 -1.0000 0.0095 +vn -0.9239 0.3827 0.0000 +vn 1.0000 0.0000 -0.0015 +vn 0.0000 0.0216 -0.9998 +vn -0.9840 -0.1758 -0.0295 +vn -1.0000 0.0000 -0.0015 +vn 0.0000 -0.0216 0.9998 +vn 0.9993 0.0008 -0.0364 +vn 0.0000 -0.0377 0.9993 +vn -0.9997 -0.0009 -0.0249 +vn -0.0057 -0.0103 -0.9999 +vn 0.0000 -0.9998 -0.0206 +vn 0.0000 -0.9997 -0.0225 +vn -0.9997 0.0005 -0.0231 +vn 0.0000 0.9998 0.0216 +vn 0.0000 -0.9998 -0.0216 +vn 0.0000 0.9604 0.2786 +vn 0.0000 -0.9648 -0.2630 +vn -1.0000 -0.0047 0.0009 +vn 0.0000 -0.7438 -0.6684 +vn 0.0000 0.7295 0.6840 +vn 0.0000 0.1212 0.9926 +vn 1.0000 -0.0039 0.0029 +vn 1.0000 -0.0005 -0.0048 +vn 0.0000 -0.1592 -0.9872 +vn 0.0000 -0.0766 -0.9971 +vn 0.0000 0.0714 0.9974 +vn -0.9999 0.0080 -0.0062 +vn -0.9999 0.0128 -0.0066 +vn 0.0000 0.1150 -0.9934 +vn 0.0000 -0.1150 0.9934 +vn 0.0000 0.0444 -0.9990 +vn 0.0000 -0.0997 0.9950 +vn 0.0000 -0.1804 0.9836 +vn 0.0000 -0.0613 -0.9981 +vn 0.9955 -0.0947 0.0000 +vn 0.0000 0.1792 0.9838 +vn 0.0000 -0.2422 -0.9702 +vn 0.0008 0.5015 0.8652 +vn 0.0000 0.5038 0.8638 +vn 0.0005 0.5013 0.8652 +vn -0.9934 -0.0844 0.0771 +vn 0.0000 0.5088 0.8609 +vn 0.0025 0.5075 0.8616 +vn -0.0026 0.5077 0.8616 +vn 0.0000 -0.5752 -0.8180 +vn 0.0000 -0.7383 0.6745 +vn 0.0000 -0.9117 -0.4108 +vn 0.9385 -0.2548 0.2328 +vn -0.9386 -0.2548 0.2328 +vn 0.0000 -0.9994 -0.0347 +vn -0.0051 1.0000 0.0000 +vn 0.0000 -0.0370 0.9993 +vn 0.9999 -0.0021 -0.0102 +vn 0.9999 0.0018 -0.0135 +vn -1.0000 -0.0035 -0.0069 +vn -0.9999 0.0001 -0.0134 +vn -1.0000 -0.0015 -0.0087 +vn 1.0000 0.0010 0.0047 +vn 1.0000 -0.0006 0.0000 +vn -1.0000 -0.0027 0.0042 +vn -1.0000 -0.0017 -0.0006 +vn 0.0007 -1.0000 -0.0000 +vn -1.0000 -0.0012 0.0001 +vn -1.0000 -0.0015 0.0000 +vn -1.0000 -0.0013 -0.0003 +vn 1.0000 -0.0015 0.0000 +vn 0.0032 1.0000 0.0000 +vn 1.0000 -0.0056 0.0033 +vn 1.0000 -0.0015 0.0006 +vn 1.0000 0.0015 0.0047 +vn 1.0000 -0.0017 0.0008 +vn 1.0000 -0.0006 0.0051 +vn 0.0032 -1.0000 -0.0000 +vn -1.0000 0.0013 0.0045 +vn -1.0000 -0.0007 -0.0000 +vn -1.0000 -0.0006 0.0003 +vn -1.0000 -0.0012 -0.0007 +vn -1.0000 -0.0015 -0.0006 +vn -1.0000 -0.0012 -0.0008 +vn -1.0000 -0.0004 0.0051 +vn -1.0000 -0.0006 0.0000 +vn -0.0032 1.0000 0.0000 +vn -0.0032 -1.0000 0.0000 +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.3827 0.9239 +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.3827 -0.9239 +vn 0.7951 -0.4858 -0.3630 +vn 0.7513 0.6433 0.1472 +vn -0.3459 0.8319 0.4339 +vn -0.9860 -0.0789 0.1472 +vn -0.2163 -0.9063 -0.3630 +vn 0.5772 0.0383 -0.8157 +vn 0.8396 0.4308 0.3307 +vn -0.0854 0.2055 0.9749 +vn -0.8976 -0.2914 0.3307 +vn -0.4343 -0.3822 -0.8157 +vn 0.3055 0.6919 -0.6541 +vn 0.9498 0.1658 0.2652 +vn 0.2394 -0.5757 0.7818 +vn -0.7874 -0.5564 0.2652 +vn -0.7060 0.2715 -0.6542 +vn 0.1846 0.9828 0.0000 +vn 0.9989 0.0479 0.0000 +vn 0.3839 -0.9234 0.0000 +vn -0.7384 -0.6744 0.0000 +vn -0.8269 0.5623 0.0000 +vn 0.3055 0.6919 0.6541 +vn 0.9498 0.1658 -0.2652 +vn 0.2394 -0.5757 -0.7818 +vn -0.7874 -0.5564 -0.2652 +vn -0.7060 0.2715 0.6541 +vn 0.5772 0.0383 0.8157 +vn 0.8396 0.4308 -0.3308 +vn -0.0854 0.2055 -0.9749 +vn -0.8976 -0.2914 -0.3307 +vn -0.4342 -0.3822 0.8157 +vn 0.7951 -0.4858 0.3630 +vn 0.7513 0.6433 -0.1472 +vn -0.3459 0.8319 -0.4339 +vn -0.9860 -0.0789 -0.1472 +vn -0.2163 -0.9063 0.3630 +vn 0.9239 -0.3827 -0.0000 +vn -0.9239 -0.3827 -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.3827 -0.9239 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.2163 0.5222 -0.8249 +vn -0.2163 0.5222 -0.8249 +vn -0.5222 -0.2163 -0.8249 +vn 0.2081 -0.4401 -0.8735 +vn 0.5222 0.2163 -0.8249 +vn -0.5222 0.2163 -0.8249 +vn -0.2163 -0.5222 -0.8249 +vn 0.5222 -0.2163 -0.8249 +vn 0.5222 0.2163 0.8249 +vn -0.5222 0.2163 0.8249 +vn -0.2163 -0.5222 0.8249 +vn 0.5222 -0.2163 0.8249 +vn 0.3827 0.9238 -0.0120 +vn 0.8438 -0.5265 0.1041 +vn -0.5222 -0.2163 0.8250 +vn 0.2058 -0.4197 0.8840 +vn -0.1653 0.4232 -0.8908 +vn -0.9239 0.3827 0.0001 +vn 0.1642 0.3964 -0.9033 +vn 0.3964 -0.1642 -0.9033 +vn 0.1642 -0.3964 -0.9033 +vn 0.3964 0.1642 -0.9033 +vn -0.3964 -0.1642 -0.9033 +vn -0.1642 -0.3964 -0.9033 +vn -0.3827 0.9239 0.0001 +vn 0.9239 0.3827 0.0001 +vn -0.3827 -0.9239 0.0001 +vn 0.3827 0.9239 0.0001 +vn 0.9239 -0.3827 0.0001 +vn -0.9239 -0.3827 0.0001 +vn -0.3964 0.1642 -0.9033 +vn 0.3827 -0.9239 0.0001 +vn 0.1317 -0.3179 0.9389 +vn 0.3179 0.1317 0.9389 +vn -0.3179 0.1317 0.9389 +vn -0.3179 -0.1317 0.9389 +vn -0.1317 -0.3179 0.9389 +vn -0.1355 0.3696 0.9193 +vn 0.1317 0.3179 0.9389 +vn 0.3179 -0.1317 0.9390 +vn -0.4654 -0.1928 -0.8638 +vn -0.1928 -0.4654 -0.8638 +vn -0.1928 0.4654 -0.8638 +vn 0.1928 0.4654 -0.8638 +vn 0.4654 -0.1928 -0.8639 +vn 0.1928 -0.4654 -0.8638 +vn 0.4654 0.1928 -0.8638 +vn -0.4654 0.1928 -0.8639 +vn 0.2570 -0.1064 0.9605 +vn 0.1064 -0.2570 0.9605 +vn 0.2570 0.1064 0.9605 +vn -0.2570 0.1064 0.9605 +vn -0.2570 -0.1064 0.9605 +vn -0.1064 -0.2570 0.9605 +vn -0.1064 0.2570 0.9605 +vn 0.1064 0.2570 0.9605 +vn 0.9968 0.0794 0.0000 +vn -0.9968 0.0794 0.0000 +vn -0.0007 0.0459 -0.9989 +vn -0.0009 0.0618 0.9981 +vn 0.0009 0.0618 0.9981 +vn 0.0007 0.0459 -0.9989 +vn 0.0465 0.1529 0.9871 +vn -0.0359 0.1299 0.9909 +vn -0.2910 0.9565 0.0178 +vn -0.7522 -0.6487 0.1156 +vn -0.2662 -0.9636 0.0231 +vn 0.3820 -0.9223 0.0577 +vn -0.6671 -0.2763 0.6919 +vn 0.6671 -0.2763 0.6919 +vn 0.2683 0.6476 0.7132 +vn -0.2660 0.6359 0.7244 +vn -0.2763 -0.6671 0.6919 +vn 0.6671 0.2763 0.6919 +vn -0.6907 0.2924 0.6614 +vn 0.2763 -0.6671 0.6919 +vn 0.2692 -0.6498 -0.7108 +vn -0.7364 0.3285 -0.5914 +vn -0.9213 0.3888 0.0000 +vn 0.6498 0.2692 -0.7108 +vn 0.9213 0.3888 0.0000 +vn -0.2692 -0.6498 -0.7109 +vn -0.2921 0.6981 -0.6537 +vn 0.2936 0.7087 -0.6415 +vn 0.6498 -0.2692 -0.7109 +vn -0.6498 -0.2692 -0.7108 +vn -0.9707 0.2404 0.0000 +vn -0.0152 0.0364 -0.9992 +vn 0.9707 0.2404 0.0000 +vn 0.0008 0.0018 1.0000 +vn 0.0000 -0.9985 -0.0541 +vn -0.0007 0.0018 1.0000 +vn 0.0154 0.0365 -0.9992 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.9985 0.0540 +vn 0.0000 -0.0469 0.9989 +vn 0.0000 0.0704 -0.9975 +vn 0.0000 -0.0696 0.9976 +vn 0.9826 0.1855 0.0000 +vn -0.9757 0.2193 0.0000 +vn -0.9979 0.0652 0.0000 +vn 0.9979 0.0652 0.0000 +vn 0.5958 0.2860 -0.7505 +vn -0.5296 0.8483 0.0000 +vn 0.5292 0.8485 0.0000 +vn -0.5654 0.2963 0.7697 +vn 0.0000 0.9333 -0.3590 +vn -0.5112 0.8022 -0.3086 +vn 0.0000 0.9333 0.3590 +vn 0.5416 0.7846 0.3018 +vn -0.5654 0.2963 -0.7698 +vn 0.5416 0.7846 -0.3018 +vn 0.5958 0.2860 0.7504 +vn -0.5112 0.8022 0.3086 +vn 1.0000 -0.0023 -0.0003 +vn 0.0054 -0.0103 -0.9999 +vn -0.0060 -0.0098 -0.9999 +vn -0.2048 -0.2682 -0.9413 +vn 0.1799 -0.3126 -0.9327 +vn 0.0000 -0.9869 -0.1613 +vn 0.0015 -0.9870 -0.1609 +vn 0.9385 0.3453 -0.0001 +vn 1.0000 -0.0015 -0.0087 +vn 0.9999 0.0000 -0.0134 +vn -0.7768 -0.6298 -0.0036 +vn -1.0000 0.0004 -0.0021 +vn -1.0000 -0.0015 -0.0049 +vn -0.9385 0.3453 0.0000 +vn 0.7768 -0.6298 -0.0036 +vn -0.9412 0.3378 -0.0026 +vn 0.3935 -0.0015 0.9193 +vn 0.4060 0.1562 0.9004 +vn -1.0000 -0.0021 0.0000 +vn -1.0000 -0.0018 -0.0027 +vn 1.0000 -0.0036 0.0000 +vn 1.0000 -0.0004 -0.0003 +vn -0.9608 0.2487 -0.1223 +vn -0.6066 -0.7945 -0.0284 +vn -0.6264 -0.7733 -0.0975 +vn -1.0000 0.0000 -0.0003 +vn 1.0000 -0.0005 -0.0003 +vn 1.0000 0.0016 -0.0009 +vn 1.0000 0.0030 -0.0040 +vn -1.0000 0.0030 -0.0040 +vn -1.0000 0.0016 -0.0009 +vn -1.0000 -0.0005 -0.0003 +vn 1.0000 -0.0015 -0.0049 +vn 1.0000 0.0004 -0.0021 +vn 0.9999 -0.0056 -0.0118 +vn 1.0000 -0.0015 -0.0088 +vn -1.0000 -0.0015 -0.0088 +vn -0.9999 -0.0056 -0.0118 +vn -0.9999 -0.0015 -0.0102 +vn -0.9999 0.0036 -0.0103 +vn -0.9999 -0.0061 -0.0084 +vn 0.1422 0.3319 -0.9325 +vn 0.3982 0.9173 0.0006 +vn 1.0000 -0.0038 -0.0002 +vn 0.4062 0.1600 -0.8997 +vn 0.7079 0.7063 -0.0002 +vn 0.1430 0.3294 0.9333 +vn 0.3947 0.0009 -0.9188 +vn -1.0000 -0.0012 0.0016 +vn -1.0000 -0.0039 0.0023 +vn 1.0000 -0.0024 0.0014 +vn -0.9306 0.3160 -0.1849 +vn -0.9936 -0.0013 -0.1126 +vn -0.5412 0.8265 -0.1550 +vn 0.5412 0.8265 -0.1550 +vn 0.9608 0.2487 -0.1223 +vn 0.9937 -0.0007 -0.1122 +vn -0.9634 0.2291 -0.1393 +vn 0.9634 0.2291 -0.1393 +vn -0.3871 0.7687 -0.5092 +vn -1.0000 -0.0016 -0.0023 +vn -1.0000 0.0006 0.0027 +vn 0.3871 0.7687 -0.5092 +vn 1.0000 -0.0068 0.0000 +vn 1.0000 -0.0042 0.0048 +vn 1.0000 -0.0061 0.0028 +vn 0.9306 0.3160 -0.1849 +vn 0.0000 -0.9328 0.3605 +vn -0.7103 -0.6566 0.2537 +vn 0.9693 0.2241 0.1015 +vn 1.0000 -0.0008 -0.0027 +vn 1.0000 -0.0030 0.0001 +vn 1.0000 -0.0020 0.0020 +vn -1.0000 -0.0038 0.0023 +vn -1.0000 -0.0061 0.0037 +vn -0.5495 0.7690 -0.3266 +vn -1.0000 -0.0023 -0.0015 +vn -1.0000 0.0017 0.0022 +vn 0.5495 0.7690 -0.3266 +vn 1.0000 -0.0045 0.0006 +vn 1.0000 -0.0010 0.0046 +vn 1.0000 -0.0035 0.0032 +vn -1.0000 -0.0015 -0.0007 +vn -0.7633 0.6459 0.0135 +vn -1.0000 -0.0035 -0.0002 +vn -1.0000 -0.0034 0.0003 +vn -0.9693 0.2238 0.1017 +vn 1.0000 -0.0017 -0.0022 +vn -1.0000 -0.0039 -0.0015 +vn -1.0000 -0.0019 -0.0008 +vn -1.0000 0.0002 -0.0028 +vn -1.0000 -0.0012 0.0012 +vn 0.7633 0.6459 0.0135 +vn 1.0000 -0.0020 -0.0013 +vn 1.0000 -0.0017 0.0003 +vn 0.9901 0.1400 -0.0116 +vn 0.9901 0.1401 -0.0111 +vn -0.9901 0.1401 -0.0111 +vn -0.9901 0.1401 -0.0116 +vn 0.6385 0.0097 -0.7696 +vn 0.6425 0.0150 -0.7662 +vn 0.6390 0.0022 -0.7692 +vn -0.7068 0.0066 -0.7074 +vn -0.7028 -0.0044 -0.7114 +vn 0.7066 0.2135 -0.6746 +vn 0.5060 0.8391 -0.1997 +vn -0.5146 0.8533 -0.0838 +vn -0.7041 0.0132 -0.7100 +vn -0.7086 0.0154 -0.7055 +vn -0.7884 0.2333 -0.5692 +vn 0.6241 0.0024 -0.7814 +vn -0.6967 -0.7174 0.0031 +vn 0.6746 -0.6933 0.2534 +vn 0.9999 0.0140 -0.0012 +vn 0.9999 0.0097 0.0052 +vn 1.0000 0.0094 0.0004 +vn 0.6270 -0.7729 -0.0976 +vn 0.6072 -0.7941 -0.0284 +vn 0.9841 -0.1697 -0.0533 +vn -0.0095 -0.9999 0.0105 +vn 0.0095 -0.9999 0.0105 +vn -0.9274 0.0000 -0.3742 +vn 0.9987 -0.0092 -0.0494 +vn -1.0000 -0.0005 -0.0048 +vn -1.0000 -0.0039 0.0029 +vn 1.0000 -0.0047 0.0009 +vn -0.0004 -0.0719 -0.9974 +vn -1.0000 0.0094 0.0004 +vn -0.9999 0.0097 0.0052 +vn -0.9999 0.0140 -0.0012 +vn 0.0000 0.1149 -0.9934 +vn 0.0000 -0.1149 0.9934 +vn 0.9934 -0.0844 0.0771 +vn -0.0007 0.5014 0.8652 +vn -0.9955 -0.0947 0.0000 +vn 0.0026 0.5098 0.8603 +vn 0.0000 -0.9117 -0.4107 +vn 1.0000 -0.0015 -0.0095 +vn 1.0000 -0.0061 -0.0078 +vn 0.9999 0.0036 -0.0095 +vn 1.0000 0.0013 0.0045 +vn -1.0000 -0.0056 0.0033 +vn -1.0000 0.0016 0.0047 +vn -1.0000 -0.0015 0.0006 +vn -1.0000 -0.0013 0.0003 +vn 1.0000 -0.0030 0.0040 +vn 1.0000 -0.0017 -0.0008 +vn 1.0000 -0.0015 -0.0006 +vn 1.0000 -0.0004 0.0051 +vn -1.0000 0.0010 0.0046 +vn -1.0000 -0.0014 0.0008 +vn -1.0000 -0.0017 0.0006 +vn -1.0000 -0.0006 0.0051 +vn 0.0000 0.0127 -0.9999 +vn -0.0012 0.0155 -0.9999 +vn -0.0021 0.0150 -0.9999 +vn 0.0002 0.0112 -0.9999 +vn 0.0000 0.0171 -0.9999 +vn -0.0027 0.0139 -0.9999 +vn 0.0059 0.0010 -1.0000 +vn -0.0059 0.0011 -1.0000 +vn -0.0012 0.0113 -0.9999 +vn 0.0046 0.0133 -0.9999 +vn -0.4342 -0.3822 -0.8157 +vn -0.7060 0.2714 -0.6541 +vn 0.1845 0.9828 0.0000 +vn -0.7060 0.2715 0.6542 +vn 0.8396 0.4308 -0.3307 +vn -0.4343 -0.3822 0.8157 +vn 0.2163 -0.5222 -0.8249 +vn -0.5222 0.2163 -0.8250 +vn -0.2081 -0.4401 -0.8735 +vn -0.2058 -0.4197 0.8840 +vn 0.2910 0.9565 0.0178 +vn 0.7522 -0.6487 0.1156 +vn -0.5222 -0.2163 0.8249 +vn 0.2163 -0.5222 0.8249 +vn -0.1642 0.3964 -0.9033 +vn 0.1653 0.4232 -0.8908 +vn -0.3179 -0.1317 0.9390 +vn -0.1317 0.3179 0.9389 +vn 0.1355 0.3696 0.9193 +vn 0.3179 -0.1317 0.9389 +vn -0.4654 -0.1928 -0.8639 +vn 0.4654 -0.1928 -0.8638 +vn 0.4654 0.1928 -0.8639 +vn -0.4654 0.1928 -0.8638 +vn 0.0359 0.1299 0.9909 +vn -0.0465 0.1529 0.9871 +vn -0.3827 0.9238 -0.0120 +vn -0.8438 -0.5265 0.1041 +vn -0.3820 -0.9223 0.0577 +vn 0.2663 -0.9636 0.0231 +vn 0.2645 0.6280 0.7319 +vn -0.2683 0.6476 0.7132 +vn 0.6907 0.2924 0.6614 +vn -0.6671 0.2763 0.6919 +vn 0.2692 -0.6498 -0.7109 +vn -0.6498 0.2692 -0.7108 +vn 0.7364 0.3285 -0.5914 +vn -0.2692 -0.6498 -0.7108 +vn -0.2936 0.7087 -0.6415 +vn 0.2910 0.6909 -0.6618 +vn 0.6498 -0.2692 -0.7108 +vn -0.6498 -0.2692 -0.7109 +vn 0.0000 0.0589 -0.9983 +vn 0.0000 0.0029 1.0000 +vn 0.2185 0.0412 -0.9750 +vn -0.2098 0.0472 0.9766 +vn -0.2099 0.0472 -0.9766 +vn 0.2184 0.0412 0.9750 +vn 1.0000 -0.0021 -0.0003 +s off +f 65/131/59 67/132/59 68/133/59 +f 68/133/60 69/134/60 70/135/60 +f 70/135/61 71/136/62 72/137/61 +f 74/138/63 76/139/63 73/140/63 +f 71/141/64 69/142/64 78/143/64 +f 76/144/65 80/145/66 81/146/66 +f 78/147/67 83/148/67 82/149/68 +f 77/150/69 65/151/69 83/148/69 +f 84/152/70 86/153/70 87/154/70 +f 89/155/71 82/149/72 83/148/71 +f 91/156/73 93/157/73 90/158/73 +f 95/159/74 91/156/74 94/160/74 +f 97/161/69 83/148/69 65/151/69 +f 98/162/75 88/163/75 99/164/75 +f 100/165/76 102/166/76 103/167/76 +f 105/168/77 90/169/77 104/170/77 +f 104/170/78 107/171/78 108/172/78 +f 112/173/79 110/174/79 109/175/79 +f 115/176/80 116/177/80 117/178/80 +f 98/162/81 118/179/81 81/146/81 +f 119/180/82 120/181/82 124/182/82 +f 84/183/83 125/184/84 120/181/84 +f 121/185/85 126/186/85 76/144/86 +f 87/187/87 125/184/87 84/188/87 +f 73/140/88 86/153/88 74/138/88 +f 127/189/89 84/183/90 107/171/89 +f 128/190/91 107/171/92 106/191/92 +f 81/146/93 129/192/94 98/162/93 +f 98/162/95 79/193/96 82/149/97 +f 73/194/98 76/195/98 126/186/98 +f 94/196/99 96/197/99 97/198/99 +f 68/199/100 131/200/100 65/201/100 +f 91/202/101 130/203/101 94/196/101 +f 133/204/102 95/205/102 132/206/102 +f 132/206/103 134/207/103 131/208/103 +f 135/209/104 92/210/104 133/204/104 +f 131/200/105 97/211/105 65/201/105 +f 70/212/106 132/213/106 68/199/106 +f 90/158/107 135/214/107 72/215/107 +f 134/216/108 94/160/108 97/211/108 +f 70/212/109 135/214/109 133/217/109 +f 136/218/110 137/219/111 138/220/112 +f 102/166/113 140/221/114 103/167/115 +f 141/222/116 111/223/116 112/173/116 +f 142/224/117 111/223/117 136/218/117 +f 144/225/118 109/175/118 143/226/118 +f 145/227/119 144/228/119 143/229/119 +f 147/230/120 146/231/120 145/227/120 +f 142/224/121 115/232/121 114/233/121 +f 100/165/122 148/234/122 147/230/122 +f 150/235/123 137/219/123 141/222/123 +f 151/236/124 153/237/124 154/238/124 +f 155/239/125 157/240/125 156/241/125 +f 159/242/126 112/173/126 144/225/126 +f 115/232/127 138/220/128 152/243/127 +f 146/231/129 159/244/129 144/228/129 +f 103/167/130 155/239/131 148/234/131 +f 148/234/132 156/241/132 146/231/132 +f 116/177/133 152/245/133 151/236/133 +f 161/246/134 157/240/135 158/247/135 +f 158/247/136 163/248/137 161/246/138 +f 160/249/139 164/250/139 157/240/139 +f 139/251/113 162/252/140 140/221/141 +f 138/220/142 149/253/143 167/254/144 +f 164/255/145 141/222/145 159/242/145 +f 152/243/127 167/254/146 153/256/127 +f 156/241/147 164/250/147 159/244/147 +f 140/221/148 158/247/149 155/239/149 +f 168/257/127 170/258/127 171/259/127 +f 165/260/150 173/261/150 172/262/150 +f 169/263/151 176/264/152 170/258/152 +f 153/237/153 177/265/153 154/238/153 +f 150/235/154 175/266/155 149/253/154 +f 162/252/156 178/267/113 163/248/157 +f 149/253/158 169/263/159 167/254/160 +f 164/255/161 172/262/161 150/235/161 +f 167/254/162 168/257/127 153/256/127 +f 170/268/163 179/269/163 180/270/163 +f 182/271/113 184/272/113 181/273/113 +f 185/274/164 176/275/164 173/276/164 +f 186/277/165 165/278/165 160/249/165 +f 163/248/166 187/279/167 161/246/168 +f 161/246/169 186/277/170 160/249/170 +f 177/265/171 171/280/171 188/281/171 +f 173/261/172 175/266/173 172/262/172 +f 178/267/113 181/282/113 163/248/174 +f 105/168/175 100/283/176 147/284/175 +f 99/164/177 114/285/178 118/179/178 +f 147/284/179 130/203/179 105/168/179 +f 145/286/180 96/197/180 130/203/180 +f 96/287/181 109/288/181 89/155/181 +f 88/163/182 142/289/183 99/164/184 +f 189/290/185 118/291/185 113/292/185 +f 89/155/186 110/293/186 88/163/186 +f 104/170/187 101/294/188 100/283/189 +f 193/295/190 173/276/190 174/296/190 +f 171/297/127 180/270/127 194/298/127 +f 186/299/191 193/300/191 174/301/191 +f 181/273/192 190/302/192 187/303/192 +f 187/303/193 191/304/193 186/299/193 +f 188/305/194 194/298/194 195/306/194 +f 196/307/195 183/308/195 182/271/195 +f 188/305/196 192/309/196 196/307/196 +f 108/310/197 198/311/197 101/312/197 +f 199/313/198 201/314/198 117/315/198 +f 202/316/199 182/317/199 178/318/199 +f 177/265/200 196/319/200 202/316/200 +f 166/320/201 202/316/201 178/318/201 +f 154/238/202 202/316/202 203/321/202 +f 204/322/203 139/323/203 102/324/203 +f 234/325/204 584/326/205 583/327/205 +f 205/328/206 166/320/206 139/323/206 +f 151/236/207 203/321/207 205/328/207 +f 199/329/208 204/322/208 102/324/208 +f 197/330/209 206/331/209 198/332/209 +f 197/333/210 108/310/210 119/180/210 +f 87/187/211 73/194/211 120/181/211 +f 492/334/212 354/335/212 349/336/212 +f 206/331/213 208/337/213 200/338/213 +f 200/339/214 209/340/214 201/314/214 +f 198/332/213 200/338/213 199/341/213 +f 189/342/215 210/343/215 123/344/215 +f 113/345/216 201/346/216 210/343/216 +f 212/347/217 214/348/217 211/349/217 +f 207/350/218 214/348/218 215/351/218 +f 206/331/218 211/352/218 207/350/218 +f 123/353/219 211/349/219 124/354/219 +f 210/343/216 209/355/216 216/356/216 +f 210/343/220 212/357/220 123/344/220 +f 189/290/221 123/358/221 122/359/221 +f 213/360/222 215/351/222 214/348/222 +f 217/361/223 219/362/223 215/351/223 +f 216/356/216 218/363/216 217/361/216 +f 216/356/224 213/360/224 212/357/224 +f 208/364/225 221/365/225 209/340/225 +f 207/350/213 219/362/213 208/337/213 +f 221/366/127 224/367/127 222/368/127 +f 218/363/226 225/369/226 219/362/226 +f 208/337/113 225/369/113 220/370/113 +f 209/355/127 222/368/127 218/363/127 +f 226/371/113 228/372/113 229/373/113 +f 220/374/227 223/375/227 221/365/227 +f 220/370/113 227/376/113 226/371/113 +f 222/368/228 227/377/228 225/369/228 +f 231/378/127 233/379/229 230/380/127 +f 224/381/230 228/382/230 227/377/230 +f 223/383/127 230/380/127 224/367/127 +f 226/384/231 231/385/231 223/375/231 +f 229/386/232 232/387/232 231/385/232 +f 229/373/113 235/388/233 234/325/234 +f 230/389/235 235/390/235 228/382/235 +f 584/391/236 233/392/236 581/393/236 +f 582/394/237 234/395/237 583/396/237 +f 581/397/238 232/398/239 582/399/238 +f 236/400/127 238/401/127 239/402/127 +f 238/403/240 241/404/240 239/405/240 +f 240/406/113 243/407/113 241/408/113 +f 242/409/241 236/410/241 243/411/241 +f 241/404/242 245/412/242 239/405/242 +f 247/413/243 249/414/243 246/415/243 +f 239/402/127 247/416/127 236/400/127 +f 241/408/113 246/417/113 244/418/113 +f 236/410/244 246/415/244 243/411/244 +f 249/419/113 252/420/113 250/421/113 +f 244/422/245 253/423/245 245/412/245 +f 244/418/113 249/419/113 250/421/113 +f 245/424/127 248/425/127 247/416/127 +f 251/426/246 255/427/246 252/420/246 +f 248/425/127 256/428/127 257/429/127 +f 248/430/247 251/431/247 249/414/247 +f 250/432/248 256/433/248 253/423/248 +f 258/434/249 260/435/250 254/436/251 +f 257/429/252 261/437/252 258/438/252 +f 251/431/253 258/434/254 254/436/255 +f 252/439/256 261/440/256 256/433/256 +f 263/441/257 259/442/257 262/443/257 +f 261/440/258 263/444/258 262/445/258 +f 254/446/259 263/447/259 255/427/259 +f 258/438/260 262/448/260 259/449/260 +f 117/178/261 204/322/261 199/329/261 +f 79/450/262 265/451/262 71/452/262 +f 129/453/64 127/454/64 128/455/64 +f 80/456/64 85/457/64 127/454/64 +f 75/458/263 86/153/263 85/457/263 +f 72/137/264 128/190/265 106/191/264 +f 82/149/266 79/193/267 78/147/268 +f 264/459/262 267/460/262 265/451/262 +f 71/452/269 268/461/270 269/462/270 +f 79/450/271 270/463/272 271/464/272 +f 128/465/273 273/466/273 129/467/273 +f 266/468/64 275/469/64 267/470/64 +f 273/471/274 266/472/275 264/459/276 +f 272/473/273 274/474/273 273/466/273 +f 265/451/277 275/469/277 272/473/277 +f 277/475/278 279/476/278 276/477/278 +f 71/452/279 277/478/280 128/465/281 +f 265/451/282 276/479/282 268/461/282 +f 128/465/283 276/479/270 272/473/270 +f 271/480/284 282/481/284 280/482/284 +f 79/450/285 280/483/286 264/459/287 +f 264/459/288 283/484/289 273/471/290 +f 129/485/291 283/484/292 270/463/292 +f 284/486/163 282/481/163 281/487/163 +f 271/488/64 284/486/64 281/487/64 +f 283/489/293 284/486/293 270/490/293 +f 280/491/198 285/492/198 283/493/198 +f 286/494/192 279/476/192 278/495/192 +f 268/496/198 279/476/198 287/497/198 +f 268/498/294 286/494/294 269/499/294 +f 269/500/64 278/495/64 277/501/64 +f 194/502/198 180/503/198 184/504/198 +f 289/505/113 291/506/113 288/507/113 +f 293/508/295 295/509/295 292/510/295 +f 294/511/296 297/512/296 295/509/296 +f 296/513/297 299/514/297 297/515/297 +f 298/516/298 301/517/298 299/514/298 +f 300/518/299 303/519/299 301/517/299 +f 302/520/300 305/521/300 303/519/300 +f 298/522/113 296/523/113 304/524/113 +f 304/525/301 307/526/301 305/521/301 +f 306/527/302 292/510/302 307/526/302 +f 309/528/303 311/529/303 308/530/303 +f 311/529/304 312/531/304 313/532/304 +f 313/532/305 314/533/305 315/534/305 +f 314/533/306 317/535/306 315/534/306 +f 317/535/307 309/536/307 308/537/307 +f 318/538/308 310/539/308 309/540/308 +f 310/539/309 320/541/309 312/531/309 +f 312/531/310 321/542/310 314/533/310 +f 321/542/311 316/543/311 314/533/311 +f 316/543/312 318/544/312 309/545/312 +f 323/546/313 319/547/313 318/548/313 +f 324/549/314 320/541/314 319/547/314 +f 320/541/315 326/550/315 321/542/315 +f 326/550/316 322/551/316 321/542/316 +f 322/551/317 323/552/317 318/553/317 +f 328/554/318 324/555/318 323/556/318 +f 329/557/319 325/558/319 324/555/319 +f 330/559/320 326/550/320 325/558/320 +f 331/560/321 327/561/321 326/550/321 +f 327/561/322 328/562/322 323/563/322 +f 328/564/323 334/565/323 329/566/323 +f 329/566/324 335/567/324 330/559/324 +f 335/567/325 331/560/325 330/559/325 +f 331/560/326 337/568/326 332/569/326 +f 337/568/327 328/570/327 332/569/327 +f 333/571/328 339/572/328 334/573/328 +f 339/572/329 335/567/329 334/573/329 +f 340/574/330 336/575/330 335/567/330 +f 336/575/331 342/576/331 337/577/331 +f 342/576/332 333/578/332 337/577/332 +f 338/579/333 311/580/333 339/581/333 +f 311/580/334 340/574/334 339/581/334 +f 313/582/335 341/583/335 340/574/335 +f 341/583/336 317/584/336 342/585/336 +f 317/584/337 338/586/337 342/585/337 +f 496/587/338 345/588/338 495/589/338 +f 492/334/339 348/590/339 491/591/339 +f 499/592/340 344/593/340 343/594/340 +f 499/592/341 354/335/341 503/595/341 +f 495/589/342 344/593/342 500/596/342 +f 351/597/343 353/598/343 350/599/343 +f 505/600/344 348/590/344 347/601/344 +f 496/587/343 347/602/343 346/603/343 +f 356/604/345 358/605/345 355/606/345 +f 360/607/212 362/608/212 359/609/212 +f 364/610/342 365/611/342 363/612/342 +f 350/613/344 367/614/344 366/615/344 +f 359/609/341 356/616/341 368/617/341 +f 368/617/340 355/618/340 364/610/340 +f 363/612/338 352/619/338 351/597/338 +f 366/615/339 361/620/339 360/607/339 +f 370/621/212 372/622/212 369/623/212 +f 356/624/346 369/623/346 357/625/346 +f 367/626/347 370/621/347 361/627/347 +f 353/628/348 374/629/348 375/630/348 +f 355/631/349 376/632/349 365/633/349 +f 361/634/350 369/623/350 362/635/350 +f 353/636/351 373/637/351 367/626/351 +f 365/638/352 374/629/352 352/639/352 +f 377/640/353 379/641/353 380/642/353 +f 376/632/338 383/643/338 374/629/338 +f 357/625/340 378/644/340 358/605/340 +f 369/623/341 384/645/341 357/625/341 +f 373/637/339 371/646/339 370/621/339 +f 358/605/342 377/640/342 376/632/342 +f 386/647/341 388/648/341 385/649/341 +f 371/646/354 386/650/354 372/622/354 +f 382/651/355 390/652/355 391/653/355 +f 383/643/356 380/654/356 392/655/356 +f 384/645/357 394/656/357 378/644/357 +f 379/657/358 394/656/358 395/658/358 +f 382/651/359 389/659/359 371/646/359 +f 383/643/360 390/660/360 381/661/360 +f 397/662/64 399/663/64 396/664/64 +f 391/665/339 400/666/339 389/667/339 +f 392/668/343 397/669/343 390/670/343 +f 379/671/342 403/672/342 380/673/342 +f 389/667/212 387/674/212 386/647/212 +f 390/675/344 396/664/344 391/665/344 +f 380/673/338 401/676/338 392/668/338 +f 385/649/340 402/677/340 379/671/340 +f 405/678/338 407/679/338 404/680/338 +f 403/672/64 409/681/64 401/676/64 +f 388/648/64 411/682/64 402/677/64 +f 388/648/64 404/683/64 410/684/64 +f 400/666/64 399/685/64 405/686/64 +f 397/669/64 409/687/64 398/688/64 +f 403/672/64 411/689/64 408/690/64 +f 400/666/64 404/691/64 387/674/64 +f 417/692/64 407/693/64 414/694/64 +f 398/695/340 412/696/340 399/697/340 +f 408/698/212 414/699/212 409/700/212 +f 410/701/344 416/702/344 411/703/344 +f 404/680/343 417/704/343 410/701/343 +f 399/697/342 406/705/342 405/678/342 +f 409/700/341 413/706/341 398/707/341 +f 411/703/339 415/708/339 408/698/339 +f 426/709/361 428/710/361 375/711/361 +f 425/712/362 427/713/362 418/714/362 +f 426/715/363 431/716/363 430/717/363 +f 432/718/364 434/719/364 435/720/364 +f 436/721/365 435/720/365 437/722/365 +f 430/717/366 434/719/366 433/723/366 +f 438/724/367 440/725/367 429/726/367 +f 436/727/368 439/728/368 438/729/368 +f 419/730/369 427/713/369 426/731/369 +f 420/732/370 433/733/370 421/734/370 +f 423/735/371 438/736/371 424/737/371 +f 419/730/372 430/738/372 420/732/372 +f 421/734/373 432/739/373 422/740/373 +f 424/737/374 429/741/374 425/712/374 +f 429/742/375 428/710/375 427/743/375 +f 422/740/376 436/744/376 423/745/376 +f 439/728/339 442/746/339 440/725/339 +f 440/725/212 443/747/212 428/710/212 +f 435/720/343 445/748/343 437/722/343 +f 431/716/342 447/749/342 434/719/342 +f 437/722/344 441/750/344 439/728/344 +f 434/719/338 444/751/338 435/720/338 +f 445/748/377 448/752/377 449/753/377 +f 446/754/378 451/755/378 447/749/378 +f 443/747/379 452/756/379 453/757/379 +f 441/750/380 452/758/380 442/746/380 +f 445/748/381 454/759/381 441/750/381 +f 443/747/382 455/760/382 381/761/382 +f 446/754/383 455/762/383 450/763/383 +f 444/751/384 451/764/384 448/765/384 +f 455/766/340 457/767/340 450/768/340 +f 458/769/385 460/770/385 461/771/385 +f 451/772/338 463/773/338 448/774/338 +f 448/774/343 464/775/343 449/776/343 +f 450/768/342 462/777/342 451/772/342 +f 452/778/212 465/779/212 453/780/212 +f 454/781/339 458/782/339 452/778/339 +f 449/783/344 459/784/344 454/781/344 +f 453/780/341 456/785/341 455/766/341 +f 461/786/212 468/787/212 466/788/212 +f 459/789/386 469/790/386 460/791/386 +f 465/792/387 470/793/387 456/794/387 +f 457/795/388 470/796/388 471/797/388 +f 462/798/389 473/799/389 463/800/389 +f 463/801/390 469/802/390 464/803/390 +f 462/804/391 471/805/391 472/806/391 +f 458/807/392 466/788/392 465/808/392 +f 474/809/393 476/810/393 477/811/393 +f 460/770/339 467/812/339 461/771/339 +f 469/790/344 478/813/344 460/791/344 +f 466/814/341 480/815/341 470/793/341 +f 470/796/340 481/816/340 471/797/340 +f 472/817/338 474/809/338 473/799/338 +f 473/818/343 479/819/343 469/802/343 +f 471/805/342 475/820/342 472/806/342 +f 483/821/64 485/822/64 476/810/64 +f 479/819/394 477/811/394 485/822/394 +f 481/823/395 476/810/395 475/820/395 +f 468/787/396 483/821/396 482/824/396 +f 478/825/397 483/821/397 467/812/397 +f 479/826/398 484/827/398 478/813/398 +f 480/815/399 482/824/399 487/828/399 +f 480/829/400 486/830/400 481/816/400 +f 431/831/401 383/832/401 446/833/401 +f 428/834/402 382/835/402 373/836/402 +f 373/836/403 375/837/403 428/834/403 +f 382/835/404 443/838/404 381/839/404 +f 381/840/405 446/833/405 383/832/405 +f 375/841/406 374/842/406 431/831/406 +f 393/843/407 395/658/407 394/656/407 +f 393/843/408 490/844/408 488/845/408 +f 384/645/409 489/846/409 393/843/409 +f 386/847/410 489/846/410 372/622/410 +f 385/848/411 395/658/411 488/845/411 +f 385/848/412 490/844/412 386/849/412 +f 494/850/413 360/851/413 493/852/413 +f 497/853/414 363/854/414 351/855/414 +f 501/856/415 368/857/415 364/858/415 +f 504/859/416 368/860/416 502/861/416 +f 506/862/417 366/863/417 494/850/417 +f 498/864/418 364/858/418 363/865/418 +f 493/852/419 359/866/419 504/859/419 +f 506/862/420 351/867/420 350/868/420 +f 496/869/421 508/870/421 505/871/421 +f 507/872/343 506/862/343 508/870/343 +f 503/873/422 509/874/422 510/875/422 +f 510/875/423 493/852/423 504/859/423 +f 500/876/424 512/877/424 495/878/424 +f 511/879/425 498/864/425 512/877/425 +f 491/880/426 508/870/426 513/881/426 +f 508/870/344 494/850/344 513/881/344 +f 499/882/427 510/875/427 514/883/427 +f 499/884/428 511/879/428 500/876/428 +f 495/885/429 507/872/429 496/886/429 +f 512/877/338 497/853/338 507/872/338 +f 491/887/430 509/874/430 492/888/430 +f 513/881/339 493/852/339 509/874/339 +f 504/889/431 516/890/431 510/891/431 +f 516/890/432 514/892/432 510/891/432 +f 518/893/433 501/894/433 511/895/433 +f 519/896/434 502/897/434 501/898/434 +f 522/899/435 524/900/435 521/901/435 +f 502/897/436 515/902/436 504/889/436 +f 514/892/437 518/893/437 511/895/437 +f 526/903/438 528/904/438 525/905/438 +f 516/890/127 525/906/127 528/904/127 +f 527/907/438 529/908/438 530/909/438 +f 517/910/198 530/909/198 518/893/198 +f 516/890/198 527/907/198 517/910/198 +f 526/911/439 532/912/439 531/913/439 +f 518/893/113 529/914/113 519/915/113 +f 522/899/440 534/916/440 523/917/440 +f 535/918/440 533/919/440 522/920/440 +f 515/921/127 534/916/127 525/922/127 +f 520/923/435 538/924/435 537/925/435 +f 533/919/439 539/926/439 540/927/439 +f 519/928/113 536/929/113 535/918/113 +f 524/900/113 532/930/113 542/931/113 +f 521/932/441 539/926/441 543/933/441 +f 543/934/127 544/935/127 538/924/127 +f 541/936/442 531/913/442 532/912/442 +f 523/917/435 541/937/435 524/900/435 +f 543/934/435 522/920/435 521/938/435 +f 538/924/435 535/918/435 543/934/435 +f 541/937/435 520/939/435 537/940/435 +f 542/941/439 533/942/439 540/943/439 +f 536/929/439 544/944/439 539/926/439 +f 532/912/439 534/916/439 542/941/439 +f 544/944/439 526/945/439 531/946/439 +f 546/947/127 548/948/127 545/949/127 +f 549/950/198 550/951/198 551/952/198 +f 553/953/113 555/954/113 552/955/113 +f 556/956/64 557/957/64 558/958/64 +f 553/959/198 560/960/198 561/961/198 +f 546/962/64 563/963/64 564/964/64 +f 546/947/127 565/965/127 547/966/127 +f 553/953/113 566/967/113 554/968/113 +f 568/969/443 570/970/443 567/971/443 +f 572/972/444 574/973/444 571/974/444 +f 575/975/445 565/965/445 564/976/445 +f 578/977/446 561/978/446 577/979/446 +f 576/980/447 568/981/447 565/965/447 +f 572/972/438 567/971/438 573/982/438 +f 569/983/448 575/975/448 570/970/448 +f 571/974/449 578/977/449 577/979/449 +f 578/977/450 573/984/450 566/967/450 +f 568/969/451 560/960/451 579/985/451 +f 560/960/452 572/972/452 561/961/452 +f 573/982/453 563/963/453 580/986/453 +f 563/963/454 567/971/454 564/964/454 +f 580/986/64 554/987/64 566/988/64 +f 557/957/64 556/956/64 580/986/64 +f 579/985/198 547/989/198 565/990/198 +f 550/951/198 549/950/198 579/985/198 +f 572/991/455 577/979/455 561/978/455 +f 565/990/456 568/969/456 579/985/456 +f 567/992/457 575/975/457 564/976/457 +f 566/988/458 573/982/458 580/986/458 +f 562/993/64 546/962/64 545/994/64 +f 559/995/198 553/959/198 552/996/198 +f 537/997/442 544/944/442 531/946/442 +f 521/998/441 542/941/441 540/943/441 +f 90/169/459 106/191/459 104/170/459 +f 119/180/460 124/182/460 197/333/460 +f 122/359/461 118/291/461 189/290/461 +f 113/292/462 118/291/462 114/999/462 +f 198/311/463 108/310/463 197/333/463 +f 124/182/464 121/185/464 123/358/464 +f 123/358/465 121/185/465 122/359/465 +f 89/155/69 97/161/69 96/287/69 +f 65/131/99 66/1000/99 67/132/99 +f 68/133/466 67/132/466 69/134/466 +f 70/135/467 69/134/467 71/136/468 +f 74/138/469 75/1001/469 76/139/469 +f 69/142/64 67/1002/64 78/143/64 +f 67/1002/64 66/1003/64 77/1004/64 +f 78/143/64 67/1002/64 77/1004/64 +f 78/143/64 79/1005/64 71/141/64 +f 76/144/470 75/1006/471 80/145/471 +f 78/147/472 77/150/472 83/148/472 +f 77/150/69 66/1007/69 65/151/69 +f 84/152/473 85/1008/473 86/153/473 +f 89/155/71 88/163/71 82/149/474 +f 91/156/475 92/1009/475 93/157/475 +f 95/159/476 92/1009/476 91/156/476 +f 97/161/69 89/155/69 83/148/69 +f 98/162/477 82/149/478 88/163/477 +f 100/165/76 101/1010/76 102/166/76 +f 105/168/479 91/202/479 90/169/479 +f 104/170/480 106/191/480 107/171/480 +f 112/173/481 111/223/481 110/174/481 +f 117/178/482 113/1011/482 114/1012/482 +f 114/1012/483 115/176/483 117/178/483 +f 98/162/484 99/164/484 118/179/484 +f 119/1013/113 108/172/113 120/181/113 +f 108/172/485 107/171/485 120/181/485 +f 107/171/486 84/183/487 120/181/486 +f 76/144/488 81/146/489 121/185/489 +f 81/146/490 118/179/490 121/185/490 +f 118/179/127 122/1014/127 121/185/127 +f 73/140/88 87/154/88 86/153/88 +f 127/189/491 85/1015/491 84/183/492 +f 128/190/493 127/189/494 107/171/494 +f 81/146/495 80/145/495 129/192/496 +f 98/162/497 129/192/498 79/193/499 +f 94/196/99 130/203/99 96/197/99 +f 68/199/500 132/213/500 131/200/500 +f 91/202/101 105/168/101 130/203/101 +f 133/204/102 92/210/102 95/205/102 +f 132/206/501 95/205/501 134/207/501 +f 135/209/502 93/1016/502 92/210/502 +f 131/200/105 134/216/105 97/211/105 +f 70/212/503 133/217/503 132/213/503 +f 90/158/504 93/157/504 135/214/504 +f 134/216/505 95/159/505 94/160/505 +f 70/212/506 72/215/506 135/214/506 +f 136/218/507 111/223/508 137/219/508 +f 102/166/113 139/251/113 140/221/509 +f 141/222/510 137/219/510 111/223/510 +f 142/224/511 110/174/511 111/223/511 +f 144/225/512 112/173/512 109/175/512 +f 145/227/513 146/231/513 144/228/513 +f 147/230/514 148/234/514 146/231/514 +f 142/224/121 136/218/121 115/232/121 +f 100/165/515 103/167/515 148/234/515 +f 150/235/516 149/253/516 137/219/516 +f 151/236/124 152/245/124 153/237/124 +f 155/239/517 158/247/517 157/240/517 +f 159/242/518 141/222/518 112/173/518 +f 115/232/127 136/218/519 138/220/520 +f 146/231/521 156/241/521 159/244/521 +f 103/167/522 140/221/523 155/239/524 +f 148/234/525 155/239/525 156/241/525 +f 151/236/526 205/328/526 204/322/526 +f 116/177/527 115/176/527 152/245/527 +f 151/236/526 204/322/526 116/177/526 +f 161/246/528 160/249/135 157/240/135 +f 158/247/136 162/252/529 163/248/530 +f 160/249/139 165/278/139 164/250/139 +f 139/251/113 166/1017/113 162/252/531 +f 138/220/532 137/219/533 149/253/533 +f 164/255/534 150/235/534 141/222/534 +f 152/243/127 138/220/535 167/254/536 +f 156/241/537 157/240/537 164/250/537 +f 140/221/538 162/252/539 158/247/540 +f 168/257/127 169/263/541 170/258/127 +f 165/260/542 174/1018/542 173/261/542 +f 169/263/162 175/266/543 176/264/544 +f 153/237/153 168/1019/153 177/265/153 +f 150/235/154 172/262/154 175/266/545 +f 162/252/546 166/1017/113 178/267/113 +f 149/253/158 175/266/547 169/263/548 +f 164/255/161 165/260/161 172/262/161 +f 167/254/549 169/263/550 168/257/127 +f 170/268/163 176/275/163 179/269/163 +f 182/271/113 183/308/113 184/272/113 +f 185/274/164 179/269/164 176/275/164 +f 186/277/551 174/1020/551 165/278/551 +f 163/248/552 181/282/553 187/279/553 +f 161/246/554 187/279/555 186/277/555 +f 177/265/171 168/1019/171 171/280/171 +f 173/261/556 176/264/556 175/266/557 +f 178/267/113 182/1021/113 181/282/113 +f 105/168/558 104/170/559 100/283/560 +f 99/164/561 142/289/562 114/285/178 +f 147/284/563 145/286/563 130/203/563 +f 145/286/564 143/1022/564 96/197/564 +f 96/287/565 143/1023/565 109/288/565 +f 88/163/566 110/293/566 142/289/567 +f 89/155/568 109/288/568 110/293/568 +f 104/170/569 108/172/188 101/294/188 +f 193/295/190 185/274/190 173/276/190 +f 171/297/127 170/268/127 180/270/127 +f 186/299/191 191/304/191 193/300/191 +f 181/273/192 184/272/192 190/302/192 +f 187/303/193 190/302/193 191/304/193 +f 188/305/570 171/297/570 194/298/570 +f 196/307/195 192/309/195 183/308/195 +f 188/305/196 195/306/196 192/309/196 +f 199/313/198 200/339/198 201/314/198 +f 202/316/199 196/319/199 182/317/199 +f 177/265/200 188/281/200 196/319/200 +f 166/320/201 203/321/201 202/316/201 +f 154/238/202 177/265/202 202/316/202 +f 204/322/571 205/328/571 139/323/571 +f 234/325/572 235/388/573 584/326/574 +f 205/328/206 203/321/206 166/320/206 +f 151/236/207 154/238/207 203/321/207 +f 102/324/575 101/1024/575 199/329/575 +f 101/1024/576 198/1025/576 199/329/576 +f 197/330/577 124/1026/577 206/331/577 +f 126/186/578 121/185/578 73/194/578 +f 121/185/211 120/181/211 73/194/211 +f 120/181/579 125/184/579 87/187/579 +f 492/334/212 503/595/212 354/335/212 +f 206/331/213 207/350/213 208/337/213 +f 200/339/214 208/364/214 209/340/214 +f 198/332/213 206/331/213 200/338/213 +f 189/342/580 113/345/580 210/343/580 +f 113/345/216 117/1027/216 201/346/216 +f 212/347/217 213/360/217 214/348/217 +f 207/350/218 211/352/218 214/348/218 +f 206/331/581 124/1026/581 211/352/581 +f 123/353/219 212/347/219 211/349/219 +f 210/343/216 201/346/216 209/355/216 +f 210/343/224 216/356/224 212/357/224 +f 213/360/222 217/361/222 215/351/222 +f 217/361/223 218/363/223 219/362/223 +f 216/356/216 209/355/216 218/363/216 +f 216/356/224 217/361/224 213/360/224 +f 208/364/225 220/374/225 221/365/225 +f 207/350/213 215/351/213 219/362/213 +f 221/366/127 223/383/127 224/367/127 +f 218/363/226 222/368/226 225/369/226 +f 208/337/113 219/362/113 225/369/113 +f 209/355/127 221/366/127 222/368/127 +f 226/371/113 227/376/113 228/372/113 +f 220/374/227 226/384/227 223/375/227 +f 220/370/113 225/369/113 227/376/113 +f 222/368/228 224/381/228 227/377/228 +f 231/378/127 232/398/582 233/379/583 +f 224/381/230 230/389/230 228/382/230 +f 223/383/127 231/378/127 230/380/127 +f 226/384/231 229/386/231 231/385/231 +f 229/386/232 234/395/232 232/387/232 +f 229/373/113 228/372/113 235/388/584 +f 230/389/235 233/392/235 235/390/235 +f 584/391/236 235/390/585 233/392/236 +f 582/394/237 232/387/237 234/395/237 +f 581/397/586 233/379/587 232/398/588 +f 236/400/127 237/1028/127 238/401/127 +f 238/403/589 240/1029/589 241/404/589 +f 240/406/113 242/1030/113 243/407/113 +f 242/409/590 237/1031/590 236/410/590 +f 241/404/242 244/422/242 245/412/242 +f 247/413/243 248/430/243 249/414/243 +f 239/402/127 245/424/127 247/416/127 +f 241/408/113 243/407/113 246/417/113 +f 236/410/244 247/413/244 246/415/244 +f 249/419/113 251/426/113 252/420/113 +f 244/422/245 250/432/245 253/423/245 +f 244/418/113 246/417/113 249/419/113 +f 245/424/127 253/1032/127 248/425/127 +f 251/426/591 254/446/591 255/427/591 +f 248/425/127 253/1032/127 256/428/127 +f 248/430/247 257/1033/247 251/431/247 +f 250/432/248 252/439/248 256/433/248 +f 258/434/592 259/442/250 260/435/250 +f 257/429/593 256/428/593 261/437/593 +f 251/431/253 257/1033/253 258/434/594 +f 252/439/256 255/1034/256 261/440/256 +f 263/441/257 260/435/257 259/442/257 +f 261/440/595 255/1034/595 263/444/595 +f 254/446/259 260/1035/259 263/447/259 +f 258/438/260 261/437/260 262/448/260 +f 117/178/261 116/177/261 204/322/261 +f 79/450/262 264/459/262 265/451/262 +f 129/453/64 80/456/64 127/454/64 +f 80/456/64 75/458/64 85/457/64 +f 75/458/263 74/138/263 86/153/263 +f 72/137/596 71/136/597 128/190/598 +f 264/459/262 266/472/262 267/460/262 +f 71/452/599 265/451/270 268/461/270 +f 79/450/600 129/485/601 270/463/602 +f 128/465/273 272/473/273 273/466/273 +f 266/468/64 274/474/64 275/469/64 +f 273/471/603 274/1036/275 266/472/275 +f 272/473/273 275/469/273 274/474/273 +f 265/451/277 267/460/277 275/469/277 +f 277/475/278 278/495/278 279/476/278 +f 71/452/604 269/462/605 277/478/605 +f 265/451/606 272/473/606 276/479/606 +f 128/465/607 277/478/270 276/479/270 +f 271/480/284 281/487/284 282/481/284 +f 79/450/608 271/464/286 280/483/286 +f 264/459/609 280/483/610 283/484/610 +f 129/485/611 273/471/490 283/484/292 +f 284/486/163 285/492/163 282/481/163 +f 271/488/64 270/1037/64 284/486/64 +f 283/489/293 285/492/293 284/486/293 +f 280/491/198 282/481/198 285/492/198 +f 286/494/192 287/497/192 279/476/192 +f 268/496/198 276/1038/198 279/476/198 +f 268/498/294 287/497/294 286/494/294 +f 269/500/64 286/494/64 278/495/64 +f 180/503/612 179/1039/613 184/504/612 +f 179/1039/614 185/1040/615 190/1041/616 +f 184/504/612 179/1039/617 190/1041/612 +f 185/1040/618 193/1042/198 191/1043/619 +f 191/1043/620 190/1041/616 185/1040/621 +f 184/504/198 183/1044/198 194/502/198 +f 183/1044/198 192/1045/198 195/1046/198 +f 194/502/198 183/1044/198 195/1046/198 +f 289/505/113 290/1047/113 291/506/113 +f 293/508/295 294/511/295 295/509/295 +f 294/511/296 296/1048/296 297/512/296 +f 296/513/297 298/516/297 299/514/297 +f 298/516/298 300/518/298 301/517/298 +f 300/518/299 302/520/299 303/519/299 +f 302/520/300 304/525/300 305/521/300 +f 296/523/113 294/1049/113 304/524/113 +f 294/1049/113 293/1050/113 304/524/113 +f 293/1050/113 306/1051/113 304/524/113 +f 304/524/113 302/1052/113 300/1053/113 +f 300/1053/113 298/522/113 304/524/113 +f 304/525/301 306/527/301 307/526/301 +f 306/527/302 293/508/302 292/510/302 +f 309/528/303 310/1054/303 311/529/303 +f 311/529/304 310/1054/304 312/531/304 +f 313/532/305 312/531/305 314/533/305 +f 314/533/306 316/1055/306 317/535/306 +f 317/535/307 316/1055/307 309/536/307 +f 318/538/308 319/1056/308 310/539/308 +f 310/539/309 319/1056/309 320/541/309 +f 312/531/310 320/541/310 321/542/310 +f 321/542/311 322/1057/311 316/543/311 +f 316/543/622 322/1057/622 318/544/622 +f 323/546/313 324/549/313 319/547/313 +f 324/549/314 325/558/314 320/541/314 +f 320/541/315 325/558/315 326/550/315 +f 326/550/316 327/1058/316 322/551/316 +f 322/551/623 327/1058/623 323/552/623 +f 328/554/624 329/557/624 324/555/624 +f 329/557/319 330/559/319 325/558/319 +f 330/559/320 331/560/320 326/550/320 +f 331/560/321 332/1059/321 327/561/321 +f 327/561/322 332/1059/322 328/562/322 +f 328/564/323 333/1060/323 334/565/323 +f 329/566/324 334/565/324 335/567/324 +f 335/567/325 336/575/325 331/560/325 +f 331/560/326 336/575/326 337/568/326 +f 337/568/625 333/1061/625 328/570/625 +f 333/571/328 338/1062/328 339/572/328 +f 339/572/626 340/574/626 335/567/626 +f 340/574/330 341/583/330 336/575/330 +f 336/575/331 341/583/331 342/576/331 +f 342/576/627 338/1063/627 333/578/627 +f 338/579/333 308/1064/333 311/580/333 +f 311/580/334 313/582/334 340/574/334 +f 313/582/335 315/1065/335 341/583/335 +f 341/583/336 315/1065/336 317/584/336 +f 317/584/337 308/1066/337 338/586/337 +f 496/587/338 346/603/338 345/588/338 +f 492/334/339 349/336/339 348/590/339 +f 499/592/340 500/596/340 344/593/340 +f 499/592/341 343/594/341 354/335/341 +f 495/589/342 345/588/342 344/593/342 +f 351/597/343 352/619/343 353/598/343 +f 505/600/344 491/591/344 348/590/344 +f 496/587/343 505/1067/343 347/602/343 +f 356/604/345 357/625/345 358/605/345 +f 360/607/212 361/620/212 362/608/212 +f 364/610/342 355/618/342 365/611/342 +f 350/613/344 353/1068/344 367/614/344 +f 359/609/341 362/608/341 356/616/341 +f 368/617/340 356/616/340 355/618/340 +f 363/612/338 365/611/338 352/619/338 +f 366/615/339 367/614/339 361/620/339 +f 370/621/212 371/646/212 372/622/212 +f 356/624/346 362/1069/346 369/623/346 +f 367/626/347 373/637/347 370/621/347 +f 353/628/628 352/639/628 374/629/628 +f 355/631/349 358/605/349 376/632/349 +f 361/634/629 370/621/629 369/623/629 +f 353/636/630 375/1070/630 373/637/630 +f 365/638/352 376/632/352 374/629/352 +f 377/640/353 378/644/353 379/641/353 +f 376/632/338 377/640/338 383/643/338 +f 357/625/340 384/645/340 378/644/340 +f 369/623/341 372/622/341 384/645/341 +f 373/637/339 382/651/339 371/646/339 +f 358/605/342 378/644/342 377/640/342 +f 386/647/341 387/674/341 388/648/341 +f 371/646/354 389/1071/354 386/650/354 +f 382/651/631 381/1072/631 390/652/631 +f 383/643/356 377/640/356 380/654/356 +f 384/645/632 393/843/632 394/656/632 +f 379/657/633 378/644/633 394/656/633 +f 382/651/634 391/653/634 389/659/634 +f 383/643/635 392/655/635 390/660/635 +f 397/662/64 398/1073/64 399/663/64 +f 391/665/339 396/664/339 400/666/339 +f 392/668/343 401/676/343 397/669/343 +f 379/671/342 402/677/342 403/672/342 +f 389/667/212 400/666/212 387/674/212 +f 390/675/344 397/662/344 396/664/344 +f 380/673/338 403/672/338 401/676/338 +f 385/649/340 388/648/340 402/677/340 +f 405/678/338 406/705/338 407/679/338 +f 403/672/64 408/1074/64 409/681/64 +f 388/648/64 410/1075/64 411/682/64 +f 388/648/64 387/674/64 404/683/64 +f 400/666/64 396/664/64 399/685/64 +f 397/669/64 401/676/64 409/687/64 +f 403/672/64 402/677/64 411/689/64 +f 400/666/64 405/1076/64 404/691/64 +f 407/693/64 406/1077/64 412/1078/64 +f 412/1078/64 413/1079/64 407/693/64 +f 413/1079/64 414/694/64 407/693/64 +f 414/694/64 415/1080/64 416/1081/64 +f 416/1081/64 417/692/64 414/694/64 +f 398/695/340 413/1082/340 412/696/340 +f 408/698/212 415/708/212 414/699/212 +f 410/701/344 417/704/344 416/702/344 +f 404/680/343 407/679/343 417/704/343 +f 399/697/342 412/696/342 406/705/342 +f 409/700/341 414/699/341 413/706/341 +f 411/703/339 416/702/339 415/708/339 +f 426/709/636 427/743/636 428/710/636 +f 425/712/362 429/741/362 427/713/362 +f 426/715/637 375/1083/637 431/716/637 +f 432/718/364 433/1084/364 434/719/364 +f 436/721/365 432/1085/365 435/720/365 +f 430/717/366 431/716/366 434/719/366 +f 438/724/367 439/728/367 440/725/367 +f 436/727/368 437/722/368 439/728/368 +f 419/730/369 418/714/369 427/713/369 +f 420/732/370 430/738/370 433/733/370 +f 423/735/371 436/1086/371 438/736/371 +f 419/730/372 426/731/372 430/738/372 +f 421/734/373 433/733/373 432/739/373 +f 424/737/374 438/736/374 429/741/374 +f 429/742/375 440/725/375 428/710/375 +f 422/740/376 432/739/376 436/744/376 +f 439/728/339 441/750/339 442/746/339 +f 440/725/212 442/746/212 443/747/212 +f 435/720/343 444/751/343 445/748/343 +f 431/716/342 446/754/342 447/749/342 +f 437/722/344 445/748/344 441/750/344 +f 434/719/338 447/749/338 444/751/338 +f 445/748/377 444/751/377 448/752/377 +f 446/754/378 450/763/378 451/755/378 +f 443/747/379 442/746/379 452/756/379 +f 441/750/638 454/1087/638 452/758/638 +f 445/748/381 449/1088/381 454/759/381 +f 443/747/639 453/757/639 455/760/639 +f 446/754/640 381/1089/640 455/762/640 +f 444/751/641 447/749/641 451/764/641 +f 455/766/340 456/785/340 457/767/340 +f 458/769/642 459/1090/642 460/770/642 +f 451/772/338 462/777/338 463/773/338 +f 448/774/343 463/773/343 464/775/343 +f 450/768/342 457/767/342 462/777/342 +f 452/778/212 458/782/212 465/779/212 +f 454/781/339 459/784/339 458/782/339 +f 449/783/344 464/1091/344 459/784/344 +f 453/780/341 465/779/341 456/785/341 +f 461/786/212 467/1092/212 468/787/212 +f 459/789/386 464/1093/386 469/790/386 +f 465/792/387 466/814/387 470/793/387 +f 457/795/388 456/1094/388 470/796/388 +f 462/798/643 472/817/643 473/799/643 +f 463/801/390 473/818/390 469/802/390 +f 462/804/644 457/1095/644 471/805/644 +f 458/807/645 461/786/645 466/788/645 +f 474/809/393 475/1096/393 476/810/393 +f 460/770/339 478/825/339 467/812/339 +f 469/790/344 479/826/344 478/813/344 +f 466/814/341 468/1097/341 480/815/341 +f 470/796/340 480/829/340 481/816/340 +f 472/817/338 475/1096/338 474/809/338 +f 473/818/343 474/1098/343 479/819/343 +f 471/805/342 481/823/342 475/820/342 +f 487/828/64 482/824/64 483/821/64 +f 483/821/64 484/827/64 485/822/64 +f 485/822/64 477/811/64 476/810/64 +f 476/810/64 486/830/64 487/828/64 +f 487/828/64 483/821/64 476/810/64 +f 479/819/394 474/1098/394 477/811/394 +f 481/823/395 486/830/395 476/810/395 +f 468/787/396 467/1092/396 483/821/396 +f 478/825/397 484/827/397 483/821/397 +f 479/826/398 485/822/398 484/827/398 +f 480/815/399 468/1097/399 482/824/399 +f 480/829/400 487/828/400 486/830/400 +f 431/831/401 374/842/401 383/832/401 +f 428/834/402 443/838/402 382/835/402 +f 393/843/646 488/845/646 395/658/646 +f 393/843/647 489/846/647 490/844/647 +f 384/645/648 372/622/648 489/846/648 +f 386/847/649 490/844/649 489/846/649 +f 385/848/650 379/1099/650 395/658/650 +f 385/848/651 488/845/651 490/844/651 +f 494/850/413 366/1100/413 360/851/413 +f 497/853/414 498/864/414 363/854/414 +f 501/856/652 502/1101/652 368/857/652 +f 504/859/653 359/866/653 368/860/653 +f 506/862/417 350/1102/417 366/863/417 +f 498/864/654 501/856/654 364/858/654 +f 493/852/655 360/1103/655 359/866/655 +f 506/862/420 497/853/420 351/867/420 +f 496/869/656 507/872/656 508/870/656 +f 507/872/343 497/853/343 506/862/343 +f 503/873/657 492/1104/657 509/874/657 +f 510/875/423 509/874/423 493/852/423 +f 500/876/658 511/879/658 512/877/658 +f 511/879/425 501/856/425 498/864/425 +f 491/880/659 505/1105/659 508/870/659 +f 508/870/344 506/862/344 494/850/344 +f 499/882/660 503/873/660 510/875/660 +f 499/884/661 514/1106/661 511/879/661 +f 495/885/662 512/877/662 507/872/662 +f 512/877/338 498/864/338 497/853/338 +f 491/887/663 513/881/663 509/874/663 +f 513/881/339 494/850/339 493/852/339 +f 504/889/431 515/902/431 516/890/431 +f 516/890/664 517/910/664 514/892/664 +f 518/893/433 519/915/433 501/894/433 +f 519/896/665 520/1107/665 502/897/665 +f 522/899/435 523/917/435 524/900/435 +f 502/897/665 520/1107/665 515/902/665 +f 514/892/664 517/910/664 518/893/664 +f 526/903/438 527/907/438 528/904/438 +f 516/890/127 515/902/127 525/906/127 +f 527/907/438 526/903/438 529/908/438 +f 517/910/198 527/907/198 530/909/198 +f 516/890/198 528/904/198 527/907/198 +f 526/911/439 525/922/439 532/912/439 +f 518/893/113 530/909/113 529/914/113 +f 522/899/440 533/942/440 534/916/440 +f 535/918/440 536/929/440 533/919/440 +f 515/921/127 523/917/127 534/916/127 +f 520/923/435 519/928/435 538/924/435 +f 533/919/439 536/929/439 539/926/439 +f 519/928/113 529/1108/113 536/929/113 +f 524/900/113 541/937/113 532/930/113 +f 521/932/441 540/927/441 539/926/441 +f 543/934/127 539/1109/127 544/935/127 +f 541/936/442 537/1110/442 531/913/442 +f 523/917/435 515/921/435 541/937/435 +f 543/934/435 535/918/435 522/920/435 +f 538/924/435 519/928/435 535/918/435 +f 541/937/435 515/921/435 520/939/435 +f 542/941/439 534/916/439 533/942/439 +f 536/929/439 529/1108/439 544/944/439 +f 532/912/439 525/922/439 534/916/439 +f 544/944/439 529/1108/439 526/945/439 +f 546/947/127 547/966/127 548/948/127 +f 551/952/198 548/1111/198 549/950/198 +f 548/1111/198 547/989/198 549/950/198 +f 553/953/113 554/968/113 555/954/113 +f 558/958/64 555/1112/64 556/956/64 +f 555/1112/64 554/987/64 556/956/64 +f 553/959/198 559/995/198 560/960/198 +f 546/962/64 562/993/64 563/963/64 +f 546/947/127 564/976/127 565/965/127 +f 553/953/113 561/978/113 566/967/113 +f 568/969/443 569/983/443 570/970/443 +f 572/972/444 573/982/444 574/973/444 +f 575/975/445 576/980/445 565/965/445 +f 578/977/446 566/967/446 561/978/446 +f 576/980/666 569/1113/666 568/981/666 +f 572/972/438 568/969/438 567/971/438 +f 569/983/448 576/980/448 575/975/448 +f 571/974/449 574/973/449 578/977/449 +f 578/977/667 574/1114/667 573/984/667 +f 568/969/451 572/972/451 560/960/451 +f 573/982/453 567/971/453 563/963/453 +f 580/986/64 556/956/64 554/987/64 +f 580/986/64 563/963/64 557/957/64 +f 563/963/64 562/993/64 557/957/64 +f 579/985/198 549/950/198 547/989/198 +f 579/985/198 560/960/198 550/951/198 +f 560/960/198 559/995/198 550/951/198 +f 572/991/668 571/1115/668 577/979/668 +f 567/992/669 570/1116/669 575/975/669 +f 545/994/64 558/958/64 562/993/64 +f 558/958/64 557/957/64 562/993/64 +f 552/996/198 551/952/198 559/995/198 +f 551/952/198 550/951/198 559/995/198 +f 537/997/442 538/1117/442 544/944/442 +f 521/998/441 524/1118/441 542/941/441 +f 90/169/670 72/137/670 106/191/670 +f 124/182/464 120/181/464 121/185/464 diff --git a/src/main/resources/assets/hbm/models/weapons/cryo_cannon.obj b/src/main/resources/assets/hbm/models/weapons/cryo_cannon.obj new file mode 100644 index 000000000..8f4413807 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/cryo_cannon.obj @@ -0,0 +1,8221 @@ +# Blender v2.79 (sub 0) OBJ File: 'cryo_cannon.blend' +# www.blender.org +o Gun +v -1.312500 0.501000 -2.750000 +v -1.312500 0.626000 -3.500000 +v -1.312500 0.501000 -3.500000 +v -1.312500 0.751000 -2.750000 +v -1.312500 0.876000 -3.500000 +v -1.312500 0.751000 -3.500000 +v -1.312500 1.001000 -2.750000 +v -1.312500 1.126000 -3.500000 +v -1.312500 1.001000 -3.500000 +v -1.312500 1.251000 -3.500000 +v -1.312500 1.376000 -2.625000 +v -1.312500 1.376000 -3.625000 +v -1.312500 0.251000 -2.625000 +v -1.312500 0.376000 -3.500000 +v -1.312500 0.251000 -3.625000 +v -1.312500 0.626000 -2.750000 +v -1.187500 1.001000 -2.750000 +v -1.187500 1.001000 -3.500000 +v -1.187500 0.626000 -3.500000 +v -1.187500 0.751000 -3.500000 +v -1.187500 1.126000 -3.500000 +v -1.187500 1.251000 -2.750000 +v -1.187500 1.251000 -3.500000 +v -1.187500 0.876000 -2.750000 +v -1.187500 0.876000 -3.500000 +v -1.187500 0.751000 -2.750000 +v -1.187500 0.376000 -2.750000 +v -1.187500 0.501000 -3.500000 +v -1.187500 0.376000 -3.500000 +v -1.312500 1.126000 -2.750000 +v -1.312500 1.251000 -2.750000 +v -1.187500 1.126000 -2.750000 +v -1.312500 0.876000 -2.750000 +v -1.187500 0.626000 -2.750000 +v -1.312500 0.376000 -2.750000 +v -1.187500 0.501000 -2.750000 +v -0.344030 0.708152 -0.175597 +v -0.388541 0.618205 -0.128904 +v -0.328091 0.674453 -0.163924 +v -0.334466 0.442528 -0.062870 +v -0.385571 0.535686 -0.093884 +v -0.420670 0.523129 -0.082211 +v -0.216518 0.438567 -0.082211 +v -0.172007 0.528513 -0.128904 +v -0.232457 0.472265 -0.093884 +v -0.135918 0.513565 -0.128904 +v -0.174978 0.611032 -0.163924 +v -0.226082 0.704190 -0.194938 +v -0.239630 0.671482 -0.178429 +v -0.424630 0.633153 -0.128904 +v -0.320918 0.475236 -0.079378 +v -0.139879 0.623590 -0.175597 +v -0.248396 0.505963 -0.105557 +v -0.210077 0.598474 -0.152250 +v -0.312152 0.640755 -0.152250 +v -0.161900 0.552916 -0.072260 +v -0.238288 0.530366 -0.048913 +v -0.222349 0.496668 -0.037240 +v -0.199968 0.622877 -0.095606 +v -0.197989 0.567865 -0.072260 +v -0.229523 0.695885 -0.121785 +v -0.164869 0.635435 -0.107280 +v -0.317984 0.698857 -0.107280 +v -0.243071 0.663178 -0.105277 +v -0.378433 0.642608 -0.072260 +v -0.302044 0.665158 -0.095606 +v -0.340364 0.572647 -0.048913 +v -0.342344 0.627659 -0.072260 +v -0.375462 0.560089 -0.037240 +v -0.297262 0.532347 -0.039243 +v -0.310810 0.499639 -0.022734 +v -0.014465 0.192905 0.136894 +v -0.349313 0.368885 -0.081856 +v -0.391169 0.267836 0.136894 +v -0.025414 0.247242 -0.109375 +v -0.014465 0.302280 -0.081856 +v -0.025414 0.137868 0.109375 +v -0.402117 0.212799 0.109375 +v -0.360261 0.313848 -0.109375 +v 0.095671 1.480970 -0.500000 +v 0.173227 1.321753 -0.500000 +v 0.230970 1.345671 -0.500000 +v 0.115485 1.202165 -0.500000 +v 0.115485 1.297835 -0.500000 +v 0.047834 1.365485 -0.500000 +v 0.173227 1.178247 -0.500000 +v 0.230970 1.154329 -0.500000 +v 0.095671 1.019030 -0.500000 +v 0.071753 1.076773 -0.500000 +v -0.071753 1.076773 -0.500000 +v -0.095671 1.019030 -0.500000 +v -0.173227 1.178247 -0.500000 +v -0.230970 1.154329 -0.500000 +v -0.173227 1.321753 -0.500000 +v -0.230970 1.345671 -0.500000 +v -0.095671 1.480970 -0.500000 +v -0.071753 1.423227 -0.500000 +v 0.071753 1.423227 -0.500000 +v 0.115485 1.297835 -0.375000 +v 0.071753 1.423227 -0.375000 +v 0.047834 1.365485 -0.375000 +v 0.115485 1.202165 -0.375000 +v 0.173227 1.321753 -0.375000 +v 0.071753 1.076773 -0.375000 +v 0.047834 1.134515 -0.375000 +v -0.071753 1.076773 -0.375000 +v -0.047836 1.134515 -0.375000 +v -0.173227 1.178247 -0.375000 +v -0.115485 1.202165 -0.375000 +v -0.115485 1.297835 -0.375000 +v -0.047836 1.365485 -0.375000 +v -0.173227 1.321753 -0.375000 +v -0.071753 1.423227 -0.375000 +v -1.000000 0.938500 -4.125000 +v -1.000000 -0.061500 -3.125000 +v -1.000000 0.938500 -2.125000 +v -1.000000 1.376000 -2.625000 +v -1.000000 0.251000 -2.625000 +v -1.000000 0.251000 -3.625000 +v -1.000000 1.376000 -3.625000 +v 1.000000 0.938500 -2.125000 +v 1.000000 -0.061500 -3.125000 +v 1.000000 0.938500 -4.125000 +v -1.000000 0.231393 -3.832107 +v -1.000000 0.231393 -2.417893 +v 1.000000 1.938500 -3.125000 +v -1.000000 1.645607 -3.832107 +v -1.000000 1.938500 -3.125000 +v 1.000000 0.231393 -3.832107 +v 1.000000 0.231393 -2.417893 +v 1.000000 1.645607 -2.417893 +v -1.000000 1.645607 -2.417893 +v 1.000000 1.645607 -3.832107 +v 0.731694 2.179917 0.187500 +v 0.643306 2.445082 0.187500 +v 0.554916 2.356694 0.187500 +v 0.643306 2.445082 -0.312500 +v 0.731694 2.179917 -0.312500 +v 0.554916 2.356694 -0.312500 +v 0.820084 2.268306 -0.312500 +v 0.820084 2.268306 0.187500 +v -1.106694 0.695083 0.187500 +v -1.018306 0.429918 0.187500 +v -0.929916 0.518306 0.187500 +v -1.018306 0.429918 -0.312500 +v -1.106694 0.695083 -0.312500 +v -0.929916 0.518306 -0.312500 +v -1.195084 0.606694 -0.312500 +v -1.195084 0.606694 0.187500 +v 1.106694 0.695082 0.187500 +v 1.018306 0.429917 0.187500 +v 1.195082 0.606694 0.187500 +v 1.106694 0.695082 -0.312500 +v 1.018306 0.429917 -0.312500 +v 0.929916 0.518306 -0.312500 +v 0.929916 0.518306 0.187500 +v 1.195082 0.606694 -0.312500 +v -0.731694 2.179918 0.187500 +v -0.643306 2.445083 0.187500 +v -0.820082 2.268306 0.187500 +v -0.731694 2.179918 -0.312500 +v -0.643306 2.445083 -0.312500 +v -0.554916 2.356694 -0.312500 +v -0.554916 2.356694 0.187500 +v -0.820082 2.268306 -0.312500 +v 0.731694 2.179917 -2.375000 +v 0.643306 2.445082 -2.375000 +v 0.554916 2.356694 -2.375000 +v 0.643306 2.445082 -2.750000 +v 0.731694 2.179917 -2.875000 +v 0.554916 2.356694 -2.750000 +v 0.820084 2.268306 -2.875000 +v 0.820084 2.268306 -2.375000 +v 0.750000 1.887724 -3.247583 +v -0.750000 2.039915 -3.445922 +v -0.750000 1.887724 -3.247583 +v 0.750000 1.696383 -3.709523 +v 0.750000 2.039915 -3.445922 +v 0.750000 1.639863 -3.280215 +v -0.750000 1.944244 -3.676892 +v 0.750000 1.944244 -3.676892 +v -0.750000 1.696383 -3.709523 +v 0.500000 0.125000 -2.750000 +v -0.500000 0.125000 -1.750000 +v -0.500000 0.125000 -2.750000 +v 0.500000 0.500000 -1.750000 +v 0.500000 0.125000 -1.750000 +v -0.500000 0.500000 -2.750000 +v -0.625000 1.687500 -4.125000 +v 0.625000 0.187500 -4.125000 +v -0.625000 0.187500 -4.125000 +v 0.625000 0.187500 -3.625000 +v 0.625000 1.687500 -4.125000 +v 0.625000 1.687500 -3.625000 +v -0.625000 1.687500 -3.625000 +v -0.625000 0.187500 -3.625000 +v 0.875000 1.658494 -2.187500 +v 1.375000 1.658494 -2.437500 +v 1.375000 1.658494 -2.187500 +v 0.875000 2.091506 -2.187500 +v 1.375000 1.875000 -2.062500 +v 1.375000 2.091506 -2.187500 +v 0.875000 1.875000 -2.562500 +v 1.375000 2.091506 -2.437500 +v 1.375000 1.875000 -2.562500 +v 0.875000 1.658494 -2.437500 +v 0.875000 1.875000 -2.062500 +v 0.875000 2.091506 -2.437500 +v 1.375000 1.983253 -2.250000 +v 1.562500 1.983253 -2.375000 +v 1.375000 1.983253 -2.375000 +v 1.375000 1.766747 -2.375000 +v 1.562500 1.766747 -2.250000 +v 1.375000 1.766747 -2.250000 +v 1.375000 1.875000 -2.187500 +v 1.562500 1.983253 -2.250000 +v 1.562500 1.875000 -2.437500 +v 1.375000 1.875000 -2.437500 +v 1.562500 1.766747 -2.375000 +v 1.562500 1.875000 -2.187500 +v 1.562500 1.712620 -2.218750 +v 1.562500 1.875000 -2.125000 +v 1.562500 2.037380 -2.218750 +v 1.562500 1.875000 -2.500000 +v 1.562500 1.712620 -2.406250 +v 1.562500 2.037380 -2.406250 +v 2.312500 1.712620 -2.406250 +v 2.312500 1.875000 -2.125000 +v 2.312500 2.037380 -2.406250 +v 2.312500 1.712620 -2.218750 +v 2.312500 2.037380 -2.218750 +v 2.312500 1.875000 -2.500000 +v 2.312500 1.983253 -2.250000 +v 2.312500 1.983253 -2.375000 +v 2.312500 1.875000 -2.437500 +v 2.312500 1.766747 -2.375000 +v 2.312500 1.766747 -2.250000 +v 2.312500 1.875000 -2.187500 +v 2.500000 1.875000 -2.187500 +v 2.500000 1.983253 -2.375000 +v 2.500000 1.766747 -2.250000 +v 2.500000 1.983253 -2.250000 +v 2.500000 1.875000 -2.437500 +v 2.500000 1.766747 -2.375000 +v 2.500000 2.091506 -2.187500 +v 2.500000 2.091506 -2.437500 +v 2.500000 1.875000 -2.562500 +v 2.500000 1.658494 -2.437500 +v 2.500000 1.658494 -2.187500 +v 2.500000 1.875000 -2.062500 +v 2.625000 2.091506 -2.437500 +v 2.625000 1.658494 -2.187500 +v 2.625000 2.091506 -2.187500 +v 2.625000 1.875000 -2.562500 +v 2.625000 1.658494 -2.437500 +v 2.625000 1.875000 -2.062500 +v 2.750000 1.875000 -2.437500 +v 2.750000 1.766747 -2.375000 +v 2.750000 1.766747 -2.250000 +v 2.750000 1.875000 -2.187500 +v 2.750000 1.983253 -2.375000 +v 2.750000 1.983253 -2.250000 +v 0.125000 1.625000 -4.734835 +v -0.125000 1.978553 -5.088388 +v -0.125000 1.625000 -4.734835 +v -0.125000 1.713388 -5.353553 +v -0.125000 1.359835 -5.000000 +v 0.125000 1.713388 -5.353553 +v 0.125000 1.359835 -5.000000 +v 0.125000 1.978553 -5.088388 +v 0.062500 2.597272 -4.558058 +v -0.062500 2.774049 -4.734835 +v -0.062500 2.597272 -4.558058 +v 0.062500 2.066942 -5.088388 +v 0.062500 2.774049 -4.734835 +v -0.062500 2.066942 -5.088388 +v -0.062500 2.243718 -5.265165 +v 0.062500 2.243718 -5.265165 +v -0.137500 2.062500 -3.749900 +v -0.137500 2.062500 -3.437400 +v -0.137500 2.187500 -3.437400 +v -0.012500 1.937500 -3.749900 +v -0.137500 1.937500 -3.749900 +v 0.137500 2.062500 -3.749900 +v 0.137500 2.062500 -3.437400 +v 0.137500 1.937500 -3.749900 +v -0.012500 2.187500 -3.437400 +v -0.012500 2.062500 -3.749900 +v 0.137500 2.134191 -3.062400 +v 0.137500 2.009191 -3.062400 +v -0.012500 2.062500 -3.437400 +v -0.137500 2.009191 -3.062400 +v -0.012500 1.937500 -3.874900 +v -0.137500 1.937500 -3.874900 +v 0.137500 1.937500 -3.874900 +v 0.012500 1.937500 -3.874900 +v 0.012500 1.937500 -3.749900 +v 0.012500 2.062500 -3.749900 +v -0.137500 1.687500 -3.874900 +v -0.012500 1.687500 -3.874900 +v -0.012500 1.687500 -3.749900 +v -0.137500 1.687500 -3.749900 +v 0.137500 1.687500 -3.874900 +v 0.137500 1.687500 -3.749900 +v 0.012500 1.687500 -3.749900 +v 0.012500 1.687500 -3.874900 +v 0.012500 2.062500 -3.437400 +v 0.625000 2.001000 -3.062500 +v 0.875000 2.001000 -3.187500 +v 0.625000 2.001000 -3.187500 +v 0.012500 2.187500 -3.437400 +v 0.137500 2.187500 -3.437400 +v 0.012500 2.134191 -3.062400 +v -0.137500 2.134191 -3.062400 +v 0.012500 2.009191 -3.062400 +v -0.012500 2.134191 -3.062400 +v -0.012500 2.009191 -3.062400 +v 0.625000 1.938500 -3.250000 +v -0.625000 1.830247 -3.187500 +v -0.625000 1.938500 -3.250000 +v 0.625000 1.876000 -3.062500 +v 0.875000 2.001000 -3.062500 +v 0.625000 1.830247 -3.187500 +v -0.625000 1.830247 -3.062500 +v 0.625000 1.876000 -3.187500 +v 0.875000 1.876000 -3.062500 +v 0.625000 1.830247 -3.062500 +v -0.625000 1.938500 -3.000000 +v 0.875000 1.876000 -3.187500 +v 0.625000 1.938500 -3.000000 +v -0.625000 2.046753 -3.062500 +v 0.625000 2.046753 -3.062500 +v -0.625000 2.046753 -3.187500 +v 0.625000 2.046753 -3.187500 +v 1.000000 2.001000 -3.062500 +v 1.000000 2.001000 -3.187500 +v 1.000000 2.126000 -3.187500 +v 0.875000 2.126000 -3.187500 +v 1.000000 2.126000 -3.312500 +v 1.000000 2.126000 -3.062500 +v 0.875000 2.126000 -3.062500 +v 1.000000 2.251000 -3.187500 +v 0.875000 2.251000 -3.187500 +v 1.000000 2.251000 -3.312500 +v 0.875000 2.001000 -3.937500 +v 0.875000 2.251000 -3.312500 +v 0.875000 2.126000 -3.312500 +v 1.000000 1.876000 -3.937500 +v 1.000000 1.876000 -4.062500 +v 1.000000 2.001000 -3.937500 +v 0.875000 1.876000 -3.937500 +v 0.875000 1.876000 -4.062500 +v 0.875000 1.626000 -3.937500 +v 0.625000 1.501000 -3.937500 +v 0.875000 1.501000 -3.937500 +v 1.000000 1.626000 -3.937500 +v 1.000000 1.626000 -4.062500 +v 0.875000 1.626000 -4.062500 +v 0.875000 1.501000 -4.062500 +v 0.625000 1.626000 -3.937500 +v 0.625000 1.626000 -4.062500 +v 0.625000 1.501000 -4.062500 +v 0.344030 1.791848 -0.175597 +v 0.388541 1.881795 -0.128904 +v 0.328091 1.825547 -0.163924 +v 0.334466 2.057472 -0.062870 +v 0.385571 1.964314 -0.093884 +v 0.420670 1.976871 -0.082211 +v 0.216518 2.061433 -0.082211 +v 0.172007 1.971487 -0.128904 +v 0.232457 2.027735 -0.093884 +v 0.135918 1.986435 -0.128904 +v 0.174978 1.888968 -0.163924 +v 0.226082 1.795810 -0.194938 +v 0.239630 1.828518 -0.178429 +v 0.424630 1.866847 -0.128904 +v 0.320918 2.024764 -0.079378 +v 0.139879 1.876410 -0.175597 +v 0.248396 1.994037 -0.105557 +v 0.210077 1.901526 -0.152250 +v 0.312152 1.859245 -0.152250 +v 0.161900 1.947084 -0.072260 +v 0.238288 1.969634 -0.048913 +v 0.222349 2.003332 -0.037240 +v 0.199968 1.877123 -0.095606 +v 0.197989 1.932135 -0.072260 +v 0.229523 1.804115 -0.121785 +v 0.164869 1.864565 -0.107280 +v 0.317984 1.801143 -0.107280 +v 0.243071 1.836822 -0.105277 +v 0.342344 1.872341 -0.072260 +v 0.302044 1.834842 -0.095606 +v 0.378433 1.857392 -0.072260 +v 0.340365 1.927353 -0.048913 +v 0.375462 1.939911 -0.037240 +v 0.297262 1.967653 -0.039243 +v 0.310810 2.000361 -0.022734 +v -0.541848 1.594031 -0.175597 +v -0.631795 1.638541 -0.128904 +v -0.575547 1.578091 -0.163924 +v -0.807472 1.584466 -0.062870 +v -0.714314 1.635571 -0.093884 +v -0.726871 1.670670 -0.082211 +v -0.811433 1.466519 -0.082211 +v -0.721487 1.422007 -0.128904 +v -0.777735 1.482457 -0.093884 +v -0.736435 1.385918 -0.128904 +v -0.638968 1.424978 -0.163924 +v -0.545810 1.476082 -0.194938 +v -0.578518 1.489630 -0.178429 +v -0.616847 1.674630 -0.128904 +v -0.774764 1.570918 -0.079378 +v -0.626410 1.389879 -0.175597 +v -0.744037 1.498396 -0.105557 +v -0.651526 1.460078 -0.152250 +v -0.609245 1.562152 -0.152250 +v -0.697084 1.411900 -0.072260 +v -0.719634 1.488288 -0.048913 +v -0.753332 1.472349 -0.037240 +v -0.627123 1.449969 -0.095606 +v -0.682135 1.447989 -0.072260 +v -0.554115 1.479523 -0.121785 +v -0.614565 1.414870 -0.107280 +v -0.551143 1.567984 -0.107280 +v -0.586822 1.493071 -0.105277 +v -0.607392 1.628433 -0.072260 +v -0.584842 1.552044 -0.095606 +v -0.677353 1.590365 -0.048913 +v -0.622341 1.592345 -0.072260 +v -0.689911 1.625462 -0.037240 +v -0.717653 1.547262 -0.039243 +v -0.750361 1.560810 -0.022734 +v 0.541848 0.905970 -0.175597 +v 0.631795 0.861459 -0.128904 +v 0.575547 0.921909 -0.163924 +v 0.807472 0.915534 -0.062870 +v 0.714314 0.864429 -0.093884 +v 0.726871 0.829330 -0.082211 +v 0.811433 1.033482 -0.082211 +v 0.721487 1.077993 -0.128904 +v 0.777735 1.017543 -0.093884 +v 0.736435 1.114082 -0.128904 +v 0.638968 1.075022 -0.163924 +v 0.545810 1.023918 -0.194938 +v 0.578518 1.010370 -0.178429 +v 0.616847 0.825370 -0.128904 +v 0.774764 0.929082 -0.079378 +v 0.626410 1.110121 -0.175597 +v 0.744037 1.001604 -0.105557 +v 0.651526 1.039923 -0.152250 +v 0.609245 0.937848 -0.152250 +v 0.697084 1.088100 -0.072260 +v 0.719634 1.011712 -0.048913 +v 0.753332 1.027651 -0.037240 +v 0.627123 1.050032 -0.095606 +v 0.682135 1.052011 -0.072260 +v 0.554115 1.020477 -0.121785 +v 0.614565 1.085131 -0.107280 +v 0.551143 0.932016 -0.107280 +v 0.586822 1.006929 -0.105277 +v 0.607392 0.871567 -0.072260 +v 0.584842 0.947956 -0.095606 +v 0.677353 0.909636 -0.048913 +v 0.622341 0.907656 -0.072260 +v 0.689911 0.874539 -0.037240 +v 0.717653 0.952738 -0.039243 +v 0.750361 0.939190 -0.022734 +v -0.626411 1.110122 -0.175597 +v -0.721487 1.077994 -0.128904 +v -0.638968 1.075022 -0.163924 +v -0.807472 0.915534 -0.062870 +v -0.777736 1.017543 -0.093884 +v -0.811434 1.033483 -0.082211 +v -0.726871 0.829332 -0.082211 +v -0.631795 0.861459 -0.128904 +v -0.714314 0.864430 -0.093884 +v -0.616847 0.825370 -0.128904 +v -0.575547 0.921910 -0.163924 +v -0.545810 1.023918 -0.194938 +v -0.578518 1.010370 -0.178429 +v -0.736436 1.114082 -0.128904 +v -0.774764 0.929083 -0.079378 +v -0.541848 0.905971 -0.175597 +v -0.701756 0.899529 -0.105557 +v -0.609246 0.937849 -0.152250 +v -0.651526 1.039924 -0.152250 +v -0.607393 0.871567 -0.072260 +v -0.677353 0.909637 -0.048913 +v -0.689911 0.874538 -0.037240 +v -0.584842 0.947956 -0.095606 +v -0.622341 0.907657 -0.072260 +v -0.554116 1.020479 -0.121785 +v -0.551143 0.932017 -0.107280 +v -0.614565 1.085132 -0.107280 +v -0.586823 1.006931 -0.105277 +v -0.697084 1.088102 -0.072260 +v -0.627123 1.050032 -0.095606 +v -0.719635 1.011713 -0.048913 +v -0.682136 1.052012 -0.072260 +v -0.753332 1.027651 -0.037240 +v -0.717654 0.952739 -0.039243 +v -0.750361 0.939191 -0.022734 +v 0.626411 1.389878 -0.175597 +v 0.721487 1.422006 -0.128904 +v 0.638968 1.424978 -0.163924 +v 0.807472 1.584466 -0.062870 +v 0.777736 1.482457 -0.093884 +v 0.811434 1.466517 -0.082211 +v 0.726872 1.670668 -0.082211 +v 0.631796 1.638541 -0.128904 +v 0.714314 1.635570 -0.093884 +v 0.616847 1.674630 -0.128904 +v 0.575547 1.578090 -0.163924 +v 0.545810 1.476082 -0.194938 +v 0.578518 1.489630 -0.178429 +v 0.736436 1.385918 -0.128904 +v 0.774764 1.570918 -0.079378 +v 0.541848 1.594029 -0.175597 +v 0.701756 1.600471 -0.105557 +v 0.609246 1.562152 -0.152250 +v 0.651526 1.460077 -0.152250 +v 0.607393 1.628433 -0.072260 +v 0.677353 1.590363 -0.048913 +v 0.689911 1.625462 -0.037240 +v 0.584842 1.552044 -0.095606 +v 0.622342 1.592343 -0.072260 +v 0.554116 1.479522 -0.121785 +v 0.551144 1.567983 -0.107280 +v 0.614566 1.414869 -0.107280 +v 0.586823 1.493069 -0.105277 +v 0.697084 1.411898 -0.072260 +v 0.627123 1.449969 -0.095606 +v 0.719635 1.488287 -0.048913 +v 0.682136 1.447988 -0.072260 +v 0.753332 1.472350 -0.037240 +v 0.717654 1.547261 -0.039243 +v 0.750361 1.560810 -0.022734 +v -0.139878 1.876411 -0.175597 +v -0.172006 1.971487 -0.128904 +v -0.174978 1.888969 -0.163924 +v -0.334466 2.057472 -0.062870 +v -0.232457 2.027736 -0.093884 +v -0.216517 2.061434 -0.082211 +v -0.420668 1.976872 -0.082211 +v -0.388541 1.881796 -0.128904 +v -0.385570 1.964314 -0.093884 +v -0.424630 1.866847 -0.128904 +v -0.328090 1.825547 -0.163924 +v -0.226082 1.795810 -0.194938 +v -0.239630 1.828518 -0.178429 +v -0.135918 1.986436 -0.128904 +v -0.320918 2.024765 -0.079378 +v -0.344029 1.791849 -0.175597 +v -0.350471 1.951756 -0.105557 +v -0.312151 1.859246 -0.152250 +v -0.210077 1.901526 -0.152250 +v -0.378433 1.857393 -0.072260 +v -0.340363 1.927353 -0.048913 +v -0.375462 1.939911 -0.037240 +v -0.302044 1.834842 -0.095606 +v -0.342343 1.872342 -0.072260 +v -0.229521 1.804116 -0.121785 +v -0.317983 1.801144 -0.107280 +v -0.164869 1.864566 -0.107280 +v -0.243069 1.836823 -0.105277 +v -0.161898 1.947084 -0.072260 +v -0.199968 1.877123 -0.095606 +v -0.238287 1.969635 -0.048913 +v -0.197988 1.932136 -0.072260 +v -0.222349 2.003333 -0.037240 +v -0.297261 1.967654 -0.039243 +v -0.310809 2.000361 -0.022734 +v 0.139878 0.623589 -0.175597 +v 0.172006 0.528513 -0.128904 +v 0.174978 0.611032 -0.163924 +v 0.334466 0.442528 -0.062870 +v 0.232457 0.472264 -0.093884 +v 0.216517 0.438566 -0.082211 +v 0.420668 0.523129 -0.082211 +v 0.388541 0.618205 -0.128904 +v 0.385570 0.535686 -0.093884 +v 0.344029 0.708152 -0.175597 +v 0.424630 0.633153 -0.128904 +v 0.226082 0.704190 -0.194938 +v 0.239630 0.671482 -0.178429 +v 0.135918 0.513564 -0.128904 +v 0.320918 0.475236 -0.079378 +v 0.328090 0.674453 -0.163924 +v 0.350471 0.548244 -0.105557 +v 0.312151 0.640754 -0.152250 +v 0.210077 0.598474 -0.152250 +v 0.378433 0.642607 -0.072260 +v 0.340363 0.572647 -0.048913 +v 0.375462 0.560089 -0.037240 +v 0.302044 0.665158 -0.095606 +v 0.342343 0.627659 -0.072260 +v 0.229521 0.695884 -0.121785 +v 0.317983 0.698857 -0.107280 +v 0.164869 0.635435 -0.107280 +v 0.243069 0.663177 -0.105277 +v 0.161898 0.552916 -0.072260 +v 0.199969 0.622877 -0.095606 +v 0.238287 0.530365 -0.048913 +v 0.197988 0.567865 -0.072260 +v 0.222349 0.496668 -0.037240 +v 0.297261 0.532347 -0.039243 +v 0.310809 0.499639 -0.022734 +v 0.391169 2.232164 0.136894 +v 0.014465 2.197720 -0.081856 +v 0.349313 2.131115 -0.081856 +v 0.025414 2.252758 -0.109375 +v 0.025414 2.362132 0.109375 +v 0.014465 2.307096 0.136894 +v 0.402117 2.287201 0.109375 +v 0.360261 2.186152 -0.109375 +v -1.057095 1.264466 0.136894 +v -0.881115 1.599313 -0.081856 +v -0.982164 1.641169 0.136894 +v -1.002758 1.275414 -0.109375 +v -0.947720 1.264466 -0.081856 +v -1.112132 1.275414 0.109375 +v -1.037201 1.652117 0.109375 +v -0.936152 1.610261 -0.109375 +v 0.982164 0.858831 0.136894 +v 0.947720 1.235535 -0.081856 +v 0.881115 0.900687 -0.081856 +v 1.002758 1.224586 -0.109375 +v 1.112132 1.224586 0.109375 +v 1.057095 1.235535 0.136894 +v 1.037201 0.847883 0.109375 +v 0.936152 0.889739 -0.109375 +v -0.971093 0.832103 0.136894 +v -0.680368 0.590089 -0.081856 +v -0.870044 0.873959 -0.081856 +v -0.727027 0.558913 -0.109375 +v -0.804366 0.481574 0.109375 +v -0.757708 0.512749 0.136894 +v -1.017751 0.800928 0.109375 +v -0.916702 0.842784 -0.109375 +v 0.971093 1.667897 0.136894 +v 0.680368 1.909911 -0.081856 +v 0.870044 1.626041 -0.081856 +v 0.727027 1.941087 -0.109375 +v 0.804366 2.018426 0.109375 +v 0.757708 1.987251 0.136894 +v 1.017752 1.699073 0.109375 +v 0.916703 1.657217 -0.109375 +v -0.737251 2.007708 0.136894 +v -0.376041 2.120044 -0.081856 +v -0.417897 2.221093 0.136894 +v -0.691087 1.977027 -0.109375 +v -0.659911 1.930368 -0.081856 +v -0.768426 2.054366 0.109375 +v -0.449072 2.267752 0.109375 +v -0.407216 2.166703 -0.109375 +v 0.417897 0.278907 0.136894 +v 0.659911 0.569632 -0.081856 +v 0.376041 0.379956 -0.081856 +v 0.691087 0.522973 -0.109375 +v 0.768426 0.445634 0.109375 +v 0.737251 0.492292 0.136894 +v 0.449072 0.232249 0.109375 +v 0.407216 0.333298 -0.109375 +v -0.417897 0.278907 0.136894 +v -0.659911 0.569632 -0.081856 +v -0.737251 0.492293 0.136894 +v -0.407218 0.333298 -0.109375 +v -0.376041 0.379957 -0.081856 +v -0.449074 0.232249 0.109375 +v -0.768427 0.445635 0.109375 +v -0.691088 0.522974 -0.109375 +v 0.737251 2.007708 0.136894 +v 0.376041 2.120044 -0.081856 +v 0.659911 1.930368 -0.081856 +v 0.407218 2.166703 -0.109375 +v 0.449074 2.267751 0.109375 +v 0.417897 2.221093 0.136894 +v 0.768427 2.054366 0.109375 +v 0.691088 1.977026 -0.109375 +v -0.757708 1.987251 0.136894 +v -0.870044 1.626041 -0.081856 +v -0.680368 1.909911 -0.081856 +v -0.916702 1.657218 -0.109375 +v -1.017751 1.699074 0.109375 +v -0.971093 1.667897 0.136894 +v -0.804365 2.018427 0.109375 +v -0.727026 1.941088 -0.109375 +v 0.757708 0.512749 0.136894 +v 0.870044 0.873959 -0.081856 +v 0.680368 0.590089 -0.081856 +v 0.916702 0.842782 -0.109375 +v 1.017751 0.800926 0.109375 +v 0.971093 0.832103 0.136894 +v 0.804366 0.481573 0.109375 +v 0.727026 0.558912 -0.109375 +v -1.057095 1.235535 0.136894 +v -0.881115 0.900688 -0.081856 +v -0.947720 1.235535 -0.081856 +v -0.936153 0.889740 -0.109375 +v -1.037201 0.847885 0.109375 +v -0.982164 0.858832 0.136894 +v -1.112132 1.224588 0.109375 +v -1.002758 1.224588 -0.109375 +v 1.057095 1.264465 0.136894 +v 0.881115 1.599313 -0.081856 +v 0.947720 1.264465 -0.081856 +v 0.936153 1.610260 -0.109375 +v 1.037202 1.652116 0.109375 +v 0.982164 1.641169 0.136894 +v 1.112132 1.275412 0.109375 +v 1.002758 1.275412 -0.109375 +v -0.391168 2.232164 0.136894 +v -0.014465 2.197721 -0.081856 +v -0.014465 2.307096 0.136894 +v -0.360260 2.186153 -0.109375 +v -0.349312 2.131115 -0.081856 +v -0.402115 2.287201 0.109375 +v -0.025412 2.362133 0.109375 +v -0.025412 2.252758 -0.109375 +v 0.014465 0.192905 0.136894 +v 0.349312 0.368885 -0.081856 +v 0.014465 0.302280 -0.081856 +v 0.360260 0.313847 -0.109375 +v 0.402115 0.212799 0.109375 +v 0.391169 0.267836 0.136894 +v 0.025412 0.137868 0.109375 +v 0.025412 0.247242 -0.109375 +v 1.125000 1.875000 -0.625000 +v 0.625000 2.375000 -0.875000 +v 0.625000 2.375000 -0.625000 +v -0.375000 2.500000 -0.875000 +v 0.375000 2.500000 -0.625000 +v 0.375000 2.500000 -0.875000 +v -0.625000 2.375000 -0.625000 +v -1.125000 1.875000 -0.875000 +v -1.125000 1.875000 -0.625000 +v -0.208096 0.543462 -0.128904 +v -0.253178 0.638775 -0.161921 +v -0.352451 0.603256 -0.128904 +v -0.350471 0.548244 -0.105557 +v -0.307370 0.507944 -0.095887 +v -0.047836 1.365485 -0.500000 +v -0.115485 1.297835 -0.500000 +v -0.115485 1.202165 -0.500000 +v -0.047836 1.134515 -0.500000 +v 0.047834 1.134515 -0.500000 +v 0.173227 1.178247 -0.375000 +v 0.750000 1.544192 -3.511185 +v -0.750000 1.544192 -3.511185 +v -0.750000 1.639863 -3.280215 +v 0.500000 0.500000 -2.750000 +v -0.500000 0.500000 -1.750000 +v 0.208096 1.956538 -0.128904 +v 0.253178 1.861225 -0.161921 +v 0.352451 1.896744 -0.128904 +v 0.350472 1.951756 -0.105557 +v 0.307370 1.992056 -0.095887 +v -0.706538 1.458096 -0.128904 +v -0.611225 1.503178 -0.161921 +v -0.646744 1.602452 -0.128904 +v -0.701756 1.600472 -0.105557 +v -0.742056 1.557370 -0.095887 +v 0.706538 1.041904 -0.128904 +v 0.611225 0.996822 -0.161921 +v 0.646744 0.897549 -0.128904 +v 0.701756 0.899529 -0.105557 +v 0.742056 0.942630 -0.095887 +v -0.646744 0.897548 -0.128904 +v -0.611225 0.996822 -0.161921 +v -0.706538 1.041904 -0.128904 +v -0.744037 1.001604 -0.105557 +v -0.742056 0.942631 -0.095887 +v 0.646744 1.602452 -0.128904 +v 0.611225 1.503178 -0.161921 +v 0.706538 1.458097 -0.128904 +v 0.744037 1.498396 -0.105557 +v 0.742057 1.557369 -0.095887 +v -0.352452 1.896744 -0.128904 +v -0.253178 1.861225 -0.161921 +v -0.208096 1.956538 -0.128904 +v -0.248396 1.994038 -0.105557 +v -0.307369 1.992057 -0.095887 +v 0.352452 0.603256 -0.128904 +v 0.253178 0.638775 -0.161921 +v 0.208096 0.543462 -0.128904 +v 0.248396 0.505963 -0.105557 +v 0.307369 0.507944 -0.095887 +v 1.125000 1.875000 -0.875000 +v -0.375000 2.500000 -0.625000 +v -0.625000 2.375000 -0.875000 +v 0.110485 0.764515 -0.750000 +v 0.156250 0.737706 -0.418544 +v 0.110485 0.659581 -0.496669 +v 0.000000 1.031250 -0.750000 +v 0.110485 0.815831 -0.340419 +v 0.110485 0.985485 -0.750000 +v -0.156250 0.875000 -0.750000 +v -0.110486 0.815831 -0.340419 +v -0.110486 0.985485 -0.750000 +v -0.110486 0.764515 -0.750000 +v -0.156250 0.737706 -0.418544 +v 0.000000 0.718750 -0.750000 +v 0.000000 0.627221 -0.529029 +v 0.156250 0.875000 -0.750000 +v 0.000000 0.848192 -0.308058 +v -0.110486 0.659581 -0.496669 +v -0.156250 0.585633 -0.316931 +v -0.110486 0.627914 -0.214856 +v 0.110485 0.627914 -0.214856 +v 0.110485 0.543352 -0.419007 +v -0.110486 0.543352 -0.419007 +v 0.000000 0.645427 -0.172575 +v 0.156250 0.585633 -0.316931 +v 0.000000 0.525838 -0.461288 +v 0.110485 0.406250 -0.391735 +v 0.000000 0.406250 -0.437500 +v -0.110486 0.406250 -0.391735 +v -0.156250 0.406250 -0.281250 +v -0.110486 0.406250 -0.170765 +v 0.110485 0.406250 -0.170765 +v 0.000000 0.406250 -0.125000 +v 0.156250 0.406250 -0.281250 +v 0.000000 0.167073 -0.172575 +v 0.110485 0.184586 -0.214856 +v 0.156250 0.226867 -0.316932 +v 0.110485 0.269148 -0.419007 +v 0.000000 0.286661 -0.461288 +v -0.156250 0.226867 -0.316932 +v -0.110486 0.184586 -0.214856 +v -0.110486 0.269148 -0.419007 +v -0.200528 0.477172 -0.515462 +v -0.196566 0.367147 -0.468769 +v -0.404678 0.561734 -0.515462 +v -0.286731 0.557772 -0.534803 +v -0.485279 0.486735 -0.468769 +v -0.277166 0.292148 -0.422076 +v -0.395115 0.296110 -0.402735 +v -0.481318 0.376710 -0.422076 +v 0.095671 1.480970 -0.750000 +v 0.230970 1.345671 -0.750000 +v 0.230970 1.154329 -0.750000 +v 0.095671 1.019030 -0.750000 +v -0.095671 1.019030 -0.750000 +v -0.230970 1.154329 -0.750000 +v -0.230970 1.345671 -0.750000 +v -0.095671 1.480970 -0.750000 +v 0.875000 2.125000 -1.125000 +v 0.867418 1.992418 -0.974112 +v 0.911612 2.036612 -1.125000 +v 0.698223 2.125000 -1.125000 +v 0.742418 2.117417 -0.974112 +v 0.786612 2.161612 -1.125000 +v -0.742418 2.117417 -0.974112 +v -0.698223 2.125000 -1.125000 +v -0.786612 2.161612 -1.125000 +v -0.867418 1.992418 -0.974112 +v -0.875000 2.125000 -1.125000 +v -0.911612 2.036612 -1.125000 +v -0.875000 1.948223 -1.125000 +v -0.823223 2.073223 -0.948223 +v -0.635723 2.010723 -0.911612 +v -0.849112 1.922335 -1.036612 +v -0.760723 1.885723 -0.911612 +v -0.609835 2.036612 -1.000000 +v -0.672335 2.099112 -1.036612 +v -0.565641 2.294194 -0.974112 +v -0.521447 2.301777 -1.125000 +v -0.609835 2.338388 -1.125000 +v -0.690641 2.169194 -0.974112 +v -0.698223 2.301777 -1.125000 +v -0.734835 2.213388 -1.125000 +v -0.672335 2.099112 -1.036612 +v -0.698223 2.125000 -1.125000 +v -0.646447 2.250000 -0.948223 +v -0.458947 2.187500 -0.911612 +v -0.583947 2.062500 -0.911612 +v -0.495558 2.275888 -1.036612 +v -0.919194 1.940641 -0.974112 +v -0.875000 1.948223 -1.125000 +v -0.963388 1.984835 -1.125000 +v -1.044194 1.815641 -0.974112 +v -1.051777 1.948223 -1.125000 +v -1.088388 1.859835 -1.125000 +v -1.025888 1.745558 -1.036612 +v -1.051777 1.771446 -1.125000 +v -1.000000 1.896446 -0.948223 +v -0.812500 1.833946 -0.911612 +v -0.963388 1.683058 -1.000000 +v -0.786612 1.859835 -1.000000 +v -0.849112 1.922335 -1.036612 +v -0.937500 1.708946 -0.911612 +v -0.786612 2.161612 -1.812500 +v -0.609835 2.338388 -1.875000 +v -0.875000 2.125000 -1.812500 +v -0.911612 2.036612 -1.812500 +v -0.963388 1.984835 -1.750000 +v -0.698223 2.301777 -1.875000 +v -0.875000 1.948223 -1.812500 +v -0.734835 2.213388 -1.875000 +v -1.051777 1.948223 -1.750000 +v -1.088388 1.859835 -1.750000 +v -0.698223 2.125000 -1.875000 +v -1.051777 1.771446 -1.750000 +v 0.823223 2.073223 -0.948223 +v 0.875000 1.948223 -1.125000 +v 0.849112 1.922335 -1.036612 +v 0.635723 2.010723 -0.911612 +v 0.698223 1.948223 -0.875000 +v 0.760723 1.885723 -0.911612 +v 0.786612 1.859835 -1.000000 +v 0.609835 2.036612 -1.000000 +v 0.521447 2.301777 -1.125000 +v 0.565641 2.294194 -0.974112 +v 0.609835 2.338388 -1.125000 +v 0.698223 2.301777 -1.125000 +v 0.690641 2.169194 -0.974112 +v 0.734835 2.213388 -1.125000 +v 0.646447 2.250000 -0.948223 +v 0.672335 2.099112 -1.036612 +v 0.698223 2.125000 -1.125000 +v 0.458947 2.187500 -0.911612 +v 0.521447 2.125000 -0.875000 +v 0.583947 2.062500 -0.911612 +v 0.609835 2.036612 -1.000000 +v 0.495558 2.275888 -1.036612 +v 0.875000 1.948223 -1.125000 +v 0.919194 1.940641 -0.974112 +v 0.963388 1.984835 -1.125000 +v 1.051777 1.948223 -1.125000 +v 1.044194 1.815641 -0.974112 +v 1.088388 1.859835 -1.125000 +v 1.000000 1.896446 -0.948223 +v 1.025888 1.745558 -1.036612 +v 1.051777 1.771446 -1.125000 +v 0.812500 1.833946 -0.911612 +v 0.875000 1.771446 -0.875000 +v 0.963388 1.683058 -1.000000 +v 0.786612 1.859835 -1.000000 +v 0.937500 1.708946 -0.911612 +v 0.786612 2.161612 -1.812500 +v 0.609835 2.338388 -1.875000 +v 0.875000 2.125000 -1.812500 +v 0.911612 2.036612 -1.812500 +v 0.963388 1.984835 -1.750000 +v 0.698223 2.301777 -1.875000 +v 0.875000 1.948223 -1.812500 +v 0.734835 2.213388 -1.875000 +v 1.051777 1.948223 -1.750000 +v 1.088388 1.859835 -1.750000 +v 0.698223 2.125000 -1.875000 +v 1.051777 1.771446 -1.750000 +v -0.110485 1.735485 -0.750000 +v -0.156250 1.762294 -0.418544 +v -0.110485 1.840419 -0.496669 +v 0.000000 1.468750 -0.750000 +v -0.110485 1.684169 -0.340419 +v -0.110485 1.514515 -0.750000 +v 0.156250 1.625000 -0.750000 +v 0.110486 1.684169 -0.340419 +v 0.110486 1.514515 -0.750000 +v 0.110486 1.735485 -0.750000 +v 0.156250 1.762294 -0.418544 +v 0.000000 1.781250 -0.750000 +v 0.000000 1.872779 -0.529029 +v -0.156250 1.625000 -0.750000 +v 0.000000 1.651808 -0.308058 +v 0.110486 1.840419 -0.496669 +v 0.156250 1.914367 -0.316931 +v 0.110486 1.872086 -0.214856 +v -0.110485 1.872086 -0.214856 +v -0.110485 1.956648 -0.419007 +v 0.110486 1.956648 -0.419007 +v 0.000000 1.854573 -0.172575 +v -0.156250 1.914367 -0.316931 +v 0.000000 1.974162 -0.461288 +v -0.110485 2.093750 -0.391735 +v 0.000000 2.093750 -0.437500 +v 0.110486 2.093750 -0.391735 +v 0.156250 2.093750 -0.281250 +v 0.110486 2.093750 -0.170765 +v -0.110485 2.093750 -0.170765 +v 0.000000 2.093750 -0.125000 +v -0.156250 2.093750 -0.281250 +v 0.000000 2.332927 -0.172575 +v -0.110485 2.315414 -0.214856 +v -0.156250 2.273133 -0.316932 +v -0.110485 2.230852 -0.419007 +v 0.000000 2.213339 -0.461288 +v 0.156250 2.273133 -0.316932 +v 0.110486 2.315414 -0.214856 +v 0.110486 2.230852 -0.419007 +v 0.200528 2.022828 -0.515462 +v 0.196566 2.132853 -0.468769 +v 0.404678 1.938266 -0.515462 +v 0.286731 1.942228 -0.534803 +v 0.485279 2.013265 -0.468769 +v 0.277166 2.207852 -0.422076 +v 0.395115 2.203890 -0.402735 +v 0.481318 2.123290 -0.422076 +v -0.485485 1.139515 -0.750000 +v -0.512294 1.093750 -0.418544 +v -0.590419 1.139515 -0.496669 +v -0.218750 1.250000 -0.750000 +v -0.434169 1.139515 -0.340419 +v -0.264515 1.139515 -0.750000 +v -0.375000 1.406250 -0.750000 +v -0.434169 1.360486 -0.340419 +v -0.264515 1.360486 -0.750000 +v -0.485485 1.360486 -0.750000 +v -0.512294 1.406250 -0.418544 +v -0.531250 1.250000 -0.750000 +v -0.622779 1.250000 -0.529029 +v -0.375000 1.093750 -0.750000 +v -0.401808 1.250000 -0.308058 +v -0.590419 1.360486 -0.496669 +v -0.664367 1.406250 -0.316931 +v -0.622086 1.360486 -0.214856 +v -0.622086 1.139515 -0.214856 +v -0.706648 1.139515 -0.419007 +v -0.706648 1.360486 -0.419007 +v -0.604573 1.250000 -0.172575 +v -0.664367 1.093750 -0.316931 +v -0.724162 1.250000 -0.461288 +v -0.843750 1.139515 -0.391735 +v -0.843750 1.250000 -0.437500 +v -0.843750 1.360486 -0.391735 +v -0.843750 1.406250 -0.281250 +v -0.843750 1.360486 -0.170765 +v -0.843750 1.139515 -0.170765 +v -0.843750 1.250000 -0.125000 +v -0.843750 1.093750 -0.281250 +v -1.082927 1.250000 -0.172575 +v -1.065414 1.139515 -0.214856 +v -1.023133 1.093750 -0.316932 +v -0.980852 1.139515 -0.419007 +v -0.963339 1.250000 -0.461288 +v -1.023133 1.406250 -0.316932 +v -1.065414 1.360486 -0.214856 +v -0.980852 1.360486 -0.419007 +v -0.772828 1.450528 -0.515462 +v -0.882853 1.446566 -0.468769 +v -0.688266 1.654678 -0.515462 +v -0.692228 1.536731 -0.534803 +v -0.763265 1.735279 -0.468769 +v -0.957852 1.527166 -0.422076 +v -0.953890 1.645115 -0.402735 +v -0.873290 1.731318 -0.422076 +v 0.485485 1.360485 -0.750000 +v 0.512294 1.406250 -0.418544 +v 0.590419 1.360485 -0.496669 +v 0.218750 1.250000 -0.750000 +v 0.434169 1.360485 -0.340419 +v 0.264515 1.360485 -0.750000 +v 0.375000 1.093750 -0.750000 +v 0.434169 1.139514 -0.340419 +v 0.264515 1.139514 -0.750000 +v 0.485485 1.139514 -0.750000 +v 0.512294 1.093750 -0.418544 +v 0.531250 1.250000 -0.750000 +v 0.622779 1.250000 -0.529029 +v 0.375000 1.406250 -0.750000 +v 0.401808 1.250000 -0.308058 +v 0.590419 1.139514 -0.496669 +v 0.664367 1.093750 -0.316931 +v 0.622086 1.139514 -0.214856 +v 0.622086 1.360485 -0.214856 +v 0.706648 1.360485 -0.419007 +v 0.706648 1.139514 -0.419007 +v 0.604573 1.250000 -0.172575 +v 0.664367 1.406250 -0.316931 +v 0.724162 1.250000 -0.461288 +v 0.843750 1.360485 -0.391735 +v 0.843750 1.250000 -0.437500 +v 0.843750 1.139514 -0.391735 +v 0.843750 1.093750 -0.281250 +v 0.843750 1.139514 -0.170765 +v 0.843750 1.360485 -0.170765 +v 0.843750 1.250000 -0.125000 +v 0.843750 1.406250 -0.281250 +v 1.082927 1.250000 -0.172575 +v 1.065414 1.360485 -0.214856 +v 1.023133 1.406250 -0.316932 +v 0.980852 1.360485 -0.419007 +v 0.963339 1.250000 -0.461288 +v 1.023133 1.093750 -0.316932 +v 1.065414 1.139514 -0.214856 +v 0.980852 1.139514 -0.419007 +v 0.772828 1.049472 -0.515462 +v 0.882853 1.053434 -0.468769 +v 0.688266 0.845322 -0.515462 +v 0.692228 0.963269 -0.534803 +v 0.763265 0.764721 -0.468769 +v 0.953890 0.854885 -0.402735 +v 0.873290 0.768682 -0.422076 +v 0.957852 0.972834 -0.422076 +v -0.265165 0.828586 -0.750000 +v -0.251761 0.777268 -0.418544 +v -0.339365 0.754386 -0.496669 +v -0.154680 1.095320 -0.750000 +v -0.228879 0.864871 -0.340419 +v -0.108916 0.984835 -0.750000 +v -0.375651 1.095320 -0.750000 +v -0.385129 1.021122 -0.340419 +v -0.265166 1.141085 -0.750000 +v -0.421415 0.984836 -0.750000 +v -0.472732 0.998239 -0.418544 +v -0.375651 0.874350 -0.750000 +v -0.440371 0.809629 -0.529029 +v -0.154680 0.874350 -0.750000 +v -0.284121 0.965879 -0.308058 +v -0.495615 0.910636 -0.496669 +v -0.580264 0.890707 -0.316931 +v -0.518007 0.888244 -0.214856 +v -0.361757 0.731994 -0.214856 +v -0.421551 0.672200 -0.419007 +v -0.577801 0.828450 -0.419007 +v -0.427498 0.822502 -0.172575 +v -0.359293 0.669736 -0.316931 +v -0.512060 0.737940 -0.461288 +v -0.518497 0.575254 -0.391735 +v -0.596621 0.653379 -0.437500 +v -0.674747 0.731504 -0.391735 +v -0.707107 0.763864 -0.281250 +v -0.674747 0.731504 -0.170765 +v -0.518497 0.575254 -0.170765 +v -0.596621 0.653379 -0.125000 +v -0.486136 0.542893 -0.281250 +v -0.765745 0.484255 -0.172575 +v -0.675237 0.418514 -0.214856 +v -0.612979 0.416050 -0.316932 +v -0.615442 0.478308 -0.419007 +v -0.681184 0.568817 -0.461288 +v -0.833950 0.637021 -0.316932 +v -0.831487 0.574764 -0.214856 +v -0.771693 0.634558 -0.419007 +v -0.688267 0.845323 -0.515462 +v -0.763264 0.764722 -0.468769 +v -0.772828 1.049473 -0.515462 +v -0.692228 0.963270 -0.534803 +v -0.882854 1.053434 -0.468769 +v -0.873290 0.768683 -0.422076 +v -0.953891 0.854886 -0.402735 +v -0.957852 0.972834 -0.422076 +v 0.265165 1.671415 -0.750000 +v 0.251761 1.722732 -0.418544 +v 0.339365 1.745614 -0.496669 +v 0.154680 1.404680 -0.750000 +v 0.228879 1.635129 -0.340419 +v 0.108916 1.515165 -0.750000 +v 0.375651 1.404680 -0.750000 +v 0.385129 1.478879 -0.340419 +v 0.265166 1.358915 -0.750000 +v 0.421415 1.515165 -0.750000 +v 0.472732 1.501761 -0.418544 +v 0.375651 1.625651 -0.750000 +v 0.440371 1.690371 -0.529029 +v 0.154680 1.625651 -0.750000 +v 0.284121 1.534121 -0.308058 +v 0.495615 1.589364 -0.496669 +v 0.580264 1.609293 -0.316931 +v 0.518007 1.611756 -0.214856 +v 0.361757 1.768006 -0.214856 +v 0.421551 1.827801 -0.419007 +v 0.577801 1.671550 -0.419007 +v 0.427498 1.677498 -0.172575 +v 0.359293 1.830264 -0.316931 +v 0.512060 1.762060 -0.461288 +v 0.596621 1.846622 -0.437500 +v 0.674747 1.768496 -0.391735 +v 0.707107 1.736136 -0.281250 +v 0.674747 1.768496 -0.170765 +v 0.518497 1.924746 -0.170765 +v 0.518497 1.924746 -0.391735 +v 0.596621 1.846622 -0.125000 +v 0.486136 1.957107 -0.281250 +v 0.765745 2.015745 -0.172575 +v 0.675237 2.081486 -0.214856 +v 0.612979 2.083950 -0.316932 +v 0.615442 2.021692 -0.419007 +v 0.681184 1.931184 -0.461288 +v 0.833950 1.862979 -0.316932 +v 0.831487 1.925236 -0.214856 +v 0.771693 1.865442 -0.419007 +v 0.688267 1.654677 -0.515462 +v 0.763264 1.735279 -0.468769 +v 0.772828 1.450527 -0.515462 +v 0.692229 1.536730 -0.534803 +v 0.882854 1.446566 -0.468769 +v 0.873290 1.731318 -0.422076 +v 0.953891 1.645114 -0.402735 +v 0.957852 1.527166 -0.422076 +v -0.421415 1.515165 -0.750000 +v -0.472732 1.501761 -0.418544 +v -0.495614 1.589365 -0.496669 +v -0.154680 1.404680 -0.750000 +v -0.385129 1.478879 -0.340419 +v -0.265165 1.358916 -0.750000 +v -0.154680 1.625651 -0.750000 +v -0.228879 1.635129 -0.340419 +v -0.108915 1.515166 -0.750000 +v -0.265164 1.671415 -0.750000 +v -0.251761 1.722732 -0.418544 +v -0.375651 1.625651 -0.750000 +v -0.440371 1.690372 -0.529029 +v -0.375651 1.404680 -0.750000 +v -0.284121 1.534121 -0.308058 +v -0.339364 1.745615 -0.496669 +v -0.359293 1.830264 -0.316931 +v -0.361756 1.768007 -0.214856 +v -0.518006 1.611757 -0.214856 +v -0.577800 1.671551 -0.419007 +v -0.421550 1.827801 -0.419007 +v -0.427498 1.677498 -0.172575 +v -0.580264 1.609293 -0.316931 +v -0.512060 1.762060 -0.461288 +v -0.674746 1.768497 -0.391735 +v -0.596621 1.846622 -0.437500 +v -0.518496 1.924747 -0.391735 +v -0.486136 1.957107 -0.281250 +v -0.518496 1.924747 -0.170765 +v -0.674746 1.768497 -0.170765 +v -0.596621 1.846622 -0.125000 +v -0.707107 1.736136 -0.281250 +v -0.765745 2.015745 -0.172575 +v -0.831486 1.925237 -0.214856 +v -0.833950 1.862979 -0.316932 +v -0.771692 1.865443 -0.419007 +v -0.681184 1.931184 -0.461288 +v -0.612979 2.083950 -0.316932 +v -0.675236 2.081487 -0.214856 +v -0.615442 2.021693 -0.419007 +v -0.404677 1.938267 -0.515462 +v -0.485278 2.013265 -0.468769 +v -0.200527 2.022829 -0.515462 +v -0.286730 1.942229 -0.534803 +v -0.196566 2.132854 -0.468769 +v -0.481318 2.123290 -0.422076 +v -0.395114 2.203891 -0.402735 +v -0.277167 2.207852 -0.422076 +v 0.421415 0.984835 -0.750000 +v 0.472732 0.998239 -0.418544 +v 0.495614 0.910635 -0.496669 +v 0.154680 1.095320 -0.750000 +v 0.385129 1.021121 -0.340419 +v 0.265165 1.141084 -0.750000 +v 0.154680 0.874350 -0.750000 +v 0.228879 0.864871 -0.340419 +v 0.108915 0.984834 -0.750000 +v 0.265164 0.828585 -0.750000 +v 0.251761 0.777268 -0.418544 +v 0.375650 0.874350 -0.750000 +v 0.440371 0.809629 -0.529029 +v 0.375651 1.095320 -0.750000 +v 0.284121 0.965879 -0.308058 +v 0.339364 0.754385 -0.496669 +v 0.359293 0.669736 -0.316931 +v 0.361756 0.731993 -0.214856 +v 0.518006 0.888243 -0.214856 +v 0.577800 0.828449 -0.419007 +v 0.421550 0.672199 -0.419007 +v 0.427498 0.822502 -0.172575 +v 0.580264 0.890707 -0.316931 +v 0.512060 0.737940 -0.461288 +v 0.674746 0.731503 -0.391735 +v 0.596621 0.653379 -0.437500 +v 0.518496 0.575253 -0.391735 +v 0.486136 0.542893 -0.281250 +v 0.518496 0.575253 -0.170765 +v 0.674746 0.731503 -0.170765 +v 0.596621 0.653379 -0.125000 +v 0.707107 0.763864 -0.281250 +v 0.765745 0.484255 -0.172575 +v 0.831486 0.574763 -0.214856 +v 0.833950 0.637021 -0.316932 +v 0.771692 0.634558 -0.419007 +v 0.681184 0.568816 -0.461288 +v 0.612979 0.416050 -0.316932 +v 0.675236 0.418513 -0.214856 +v 0.615442 0.478308 -0.419007 +v 0.404677 0.561733 -0.515462 +v 0.485278 0.486736 -0.468769 +v 0.200527 0.477172 -0.515462 +v 0.286730 0.557772 -0.534803 +v 0.196566 0.367146 -0.468769 +v 0.395114 0.296109 -0.402735 +v 0.277166 0.292148 -0.422076 +v 0.481317 0.376710 -0.422076 +v 0.000000 2.500000 -1.875000 +v 0.088388 2.463388 -1.125000 +v 0.088388 2.463388 -1.875000 +v -0.125000 2.375000 -1.875000 +v -0.088388 2.463388 -1.125000 +v -0.088388 2.463388 -1.875000 +v 0.125000 2.375000 -1.125000 +v 0.125000 2.375000 -1.875000 +v 0.000000 2.500000 -1.125000 +v -0.125000 2.338388 -1.036612 +v -0.088388 2.400888 -0.974111 +v 0.125000 2.338388 -1.036612 +v 0.000000 2.426777 -0.948223 +v 0.088388 2.400888 -0.974111 +v 0.088388 2.250000 -0.911611 +v -0.125000 2.250000 -1.000000 +v -0.088388 2.250000 -0.911611 +v 0.125000 2.250000 -1.000000 +v 0.000000 2.250000 -0.875000 +v 0.250000 2.500000 -1.875000 +v 0.338388 2.463388 -1.125000 +v 0.338388 2.463388 -1.875000 +v 0.125000 2.375000 -1.875000 +v 0.161612 2.463388 -1.125000 +v 0.161612 2.463388 -1.875000 +v 0.375000 2.375000 -1.125000 +v 0.375000 2.375000 -1.875000 +v 0.250000 2.500000 -1.125000 +v 0.125000 2.338388 -1.036612 +v 0.161612 2.400888 -0.974111 +v 0.375000 2.338388 -1.036612 +v 0.250000 2.426777 -0.948223 +v 0.338388 2.400888 -0.974111 +v 0.338388 2.250000 -0.911611 +v 0.125000 2.250000 -1.000000 +v 0.161612 2.250000 -0.911611 +v 0.375000 2.250000 -1.000000 +v 0.250000 2.250000 -0.875000 +v -0.250000 2.500000 -1.875000 +v -0.161612 2.463388 -1.125000 +v -0.161612 2.463388 -1.875000 +v -0.375000 2.375000 -1.875000 +v -0.338388 2.463388 -1.125000 +v -0.338388 2.463388 -1.875000 +v -0.125000 2.375000 -1.125000 +v -0.125000 2.375000 -1.875000 +v -0.250000 2.500000 -1.125000 +v -0.375000 2.338388 -1.036612 +v -0.338388 2.400888 -0.974111 +v -0.125000 2.338388 -1.036612 +v -0.250000 2.426777 -0.948223 +v -0.161612 2.400888 -0.974111 +v -0.161612 2.250000 -0.911611 +v -0.375000 2.250000 -1.000000 +v -0.338388 2.250000 -0.911611 +v -0.125000 2.250000 -1.000000 +v -0.250000 2.250000 -0.875000 +v 0.672335 2.099112 -1.036612 +v -0.698223 1.948223 -0.875000 +v -0.786612 1.859835 -1.000000 +v -0.521447 2.125000 -0.875000 +v -0.609835 2.036612 -1.000000 +v -0.433058 2.213388 -1.000000 +v -0.875000 1.771446 -0.875000 +v -0.698223 2.125000 -1.812500 +v -0.521447 2.301777 -1.875000 +v -0.875000 1.948223 -1.750000 +v 0.433058 2.213388 -1.000000 +v 0.849112 1.922335 -1.036612 +v 0.698223 2.125000 -1.812500 +v 0.521447 2.301777 -1.875000 +v 0.875000 1.948223 -1.750000 +v -0.125000 2.375000 -1.125000 +v 0.125000 2.375000 -1.125000 +v -0.375000 2.375000 -1.125000 +v -1.250000 1.376000 -2.625000 +v -1.250000 0.751000 -2.625000 +v -1.250000 0.750000 -0.625000 +v 1.000000 0.500000 -2.125000 +v 1.250000 0.750000 -3.750000 +v 1.250000 0.750000 -0.625000 +v 1.250000 1.625000 -3.750000 +v 1.250000 1.750000 -3.375000 +v -0.500000 0.000000 -1.625000 +v 0.500000 0.000000 -0.625000 +v -0.500000 0.000000 -0.625000 +v -1.000000 0.500000 -2.125000 +v 0.500000 0.000000 -1.625000 +v 1.000000 1.750000 -3.000000 +v 1.000000 1.750000 -3.375000 +v -1.250000 0.750000 -3.750000 +v -1.250000 1.376000 -3.625000 +v -1.250000 1.625000 -3.750000 +v -1.250000 1.750000 -3.000000 +v -1.000000 0.501000 -3.625000 +v -1.250000 0.751000 -3.625000 +v 1.000000 1.625000 -3.750000 +v 1.000000 0.500000 -3.750000 +v 1.000000 0.750000 -3.750000 +v -1.000000 0.750000 -3.750000 +v -1.000000 0.500000 -3.750000 +v -1.000000 1.625000 -3.750000 +v -1.250000 1.750000 -3.375000 +v -1.000000 1.750000 -3.375000 +v -1.000000 1.750000 -3.000000 +v 0.500000 2.500000 -2.625000 +v -0.500000 2.250000 -2.750000 +v -0.500000 2.500000 -2.625000 +v 1.250000 1.750000 -3.000000 +v 0.500000 2.250000 -2.750000 +v 0.948223 1.698223 -0.875000 +v 0.536612 2.286612 -0.875000 +v 1.036612 1.786612 -0.875000 +v -1.036612 1.786612 -0.875000 +v -0.536612 2.286612 -0.625000 +v -0.536612 2.286612 -0.875000 +v 1.250000 1.750000 -0.625000 +v 1.039364 1.680519 -0.625000 +v 1.125000 1.250000 -0.625000 +v 1.039364 0.819481 -0.625000 +v 0.795495 0.454505 -0.625000 +v 0.430519 0.210635 -0.625000 +v 0.000000 0.125000 -0.625000 +v -0.430519 0.210636 -0.625000 +v -0.795495 0.454505 -0.625000 +v -1.039364 0.819481 -0.625000 +v -1.125000 1.250000 -0.625000 +v -0.375000 2.375000 -0.875000 +v 0.375000 2.375000 -0.625000 +v 0.375000 2.375000 -0.875000 +v -1.000000 1.750000 -2.875000 +v 1.000000 1.750000 -2.875000 +v 0.500000 2.250000 -2.625000 +v -0.500000 2.250000 -2.625000 +v 0.500000 1.819230 -2.900848 +v 0.500000 2.268567 -2.829241 +v 0.500000 2.215740 -2.715952 +v -0.500000 2.268567 -2.829241 +v -0.500000 1.819230 -2.900848 +v -0.500000 2.215740 -2.715952 +v 0.312500 2.438500 -2.750000 +v -0.500000 1.872057 -3.014137 +v -0.312500 2.438500 -2.750000 +v 0.312500 2.385673 -2.636712 +v -0.312500 2.385673 -2.636712 +v 1.000000 0.500000 -2.625000 +v 0.500000 1.562500 -4.875000 +v -0.500000 0.312500 -4.875000 +v -0.500000 1.562500 -4.875000 +v -0.500000 0.312500 -4.125000 +v 0.500000 0.312500 -4.875000 +v 0.500000 0.312500 -4.125000 +v 0.500000 1.562500 -4.125000 +v -0.500000 1.562500 -4.125000 +v 0.187500 1.625000 -4.125000 +v -0.187500 1.625000 -5.000000 +v -0.187500 1.625000 -4.125000 +v -0.187500 2.022748 -5.044194 +v -0.187500 2.022748 -5.574524 +v -0.187500 1.845971 -5.574524 +v 0.187500 1.625000 -5.000000 +v -0.187500 1.250000 -5.000000 +v 0.187500 1.250000 -5.000000 +v -0.187500 1.250000 -4.125000 +v -0.187500 1.669194 -5.397748 +v 0.187500 2.022748 -5.044194 +v 0.187500 1.845971 -5.574524 +v 0.187500 1.669194 -5.397748 +v 0.187500 2.022748 -5.574524 +v -0.187500 2.287913 -5.309359 +v 0.187500 2.287913 -5.309359 +v 0.000000 2.453697 -2.948062 +v 0.000000 2.487745 -2.725302 +v 0.000000 2.566986 -2.895234 +v 0.324759 1.977947 -2.963025 +v 0.216506 2.113832 -3.106544 +v 0.324759 2.057188 -3.132957 +v 0.000000 2.374456 -2.778129 +v 0.187500 2.442212 -2.746534 +v -0.500000 2.500000 -0.625000 +v -0.375000 2.500000 -1.875000 +v -1.125000 1.875000 -1.875000 +v -0.625000 2.375000 -1.875000 +v -0.625000 2.375000 -2.125000 +v 1.036612 1.786612 -0.625000 +v -1.125000 1.875000 -2.625000 +v -0.625000 2.375000 -2.375000 +v -0.625000 2.375000 -0.625000 +v -0.625000 2.375000 -0.875000 +v 1.125000 1.875000 -1.625000 +v 0.625000 2.375000 -1.875000 +v 0.500000 2.500000 -0.625000 +v 0.448223 2.198223 -1.875000 +v 0.948223 1.698223 -1.625000 +v -1.036612 1.786612 -2.625000 +v -1.125000 1.875000 -1.625000 +v -0.448223 2.198223 -1.875000 +v -0.536612 2.286612 -2.125000 +v -0.536612 2.286612 -2.375000 +v -0.448223 2.198223 -0.875000 +v 0.448223 2.198223 -0.875000 +v -1.036612 1.786612 -1.875000 +v -0.948223 1.698223 -1.625000 +v 0.625000 2.375000 -0.875000 +v 1.125000 1.875000 -0.875000 +v 0.375000 2.500000 -0.625000 +v 0.375000 2.500000 -0.875000 +v 0.536612 2.286612 -0.625000 +v 0.430518 2.289365 -0.625000 +v -1.039364 1.680519 -0.625000 +v -1.036612 1.786612 -0.625000 +v 0.625000 2.375000 -0.625000 +v -0.375000 2.375000 -0.625000 +v -0.430519 2.289364 -0.625000 +v 0.187500 1.250000 -4.125000 +v 0.375000 2.250000 -1.875000 +v 0.375000 2.250000 -0.875000 +v 0.375000 2.500000 -1.875000 +v -1.125000 1.875000 -0.875000 +v -0.375000 2.250000 -0.875000 +v -0.375000 2.250000 -1.875000 +v -0.375000 2.500000 -0.875000 +v 1.125000 1.875000 -0.625000 +v -0.375000 2.500000 -0.625000 +v -1.250000 1.750000 -0.625000 +v -1.125000 1.875000 -0.625000 +v -0.500000 0.000000 -0.375000 +v 0.500000 -0.000000 0.125000 +v -0.500000 -0.000000 0.125000 +v 0.500000 2.500000 0.125000 +v -0.500000 2.500000 -0.375000 +v -0.500000 2.500000 0.125000 +v -1.250000 1.750000 -0.375000 +v -1.250000 0.750000 0.125000 +v -1.250000 1.750000 0.125000 +v 1.250000 0.750000 0.125000 +v 1.250000 1.750000 -0.375000 +v 1.250000 1.750000 0.125000 +v 0.500000 2.500000 -0.375000 +v 1.250000 0.750000 -0.375000 +v 0.500000 0.000000 -0.375000 +v -1.250000 0.750000 -0.375000 +v 1.039364 1.680519 0.125000 +v 1.125000 1.250000 0.125000 +v 0.430518 2.289365 0.125000 +v 0.795495 2.045496 0.125000 +v -0.430519 2.289364 0.125000 +v 0.000000 2.375000 0.125000 +v -1.039364 1.680519 0.125000 +v -0.795495 2.045495 0.125000 +v -1.039364 0.819481 0.125000 +v -1.125000 1.250000 0.125000 +v -0.430519 0.210636 0.125000 +v -0.795495 0.454505 0.125000 +v 0.430519 0.210635 0.125000 +v 0.000000 0.125000 0.125000 +v 1.039364 0.819481 0.125000 +v 0.795495 0.454505 0.125000 +v 0.000000 0.750000 -0.750000 +v 0.500000 1.250000 -0.750000 +v 0.000000 1.750000 -0.750000 +v 0.795495 2.045496 -0.375000 +v 0.430518 2.289365 -0.375000 +v 1.125000 1.250000 -0.375000 +v 1.039364 1.680519 -0.375000 +v 0.795495 0.454505 -0.375000 +v 1.039364 0.819481 -0.375000 +v 0.000000 0.125000 -0.375000 +v 0.430519 0.210635 -0.375000 +v -0.795495 0.454505 -0.375000 +v -0.430519 0.210636 -0.375000 +v -1.125000 1.250000 -0.375000 +v -1.039364 0.819481 -0.375000 +v -0.795495 2.045495 -0.375000 +v -1.039364 1.680519 -0.375000 +v 0.000000 2.375000 -0.375000 +v -0.430519 2.289364 -0.375000 +v -1.000000 0.500000 -2.625000 +v 0.500000 1.872057 -3.014137 +v 0.216506 2.034591 -2.936611 +v 0.324760 2.317812 -2.804543 +v -0.948223 1.698223 -0.875000 +v -0.191341 1.711940 -0.750000 +v -0.353553 1.603553 -0.750000 +v -0.461940 1.441342 -0.750000 +v -0.500000 1.250000 -0.750000 +v -0.461940 1.058658 -0.750000 +v -0.353553 0.896447 -0.750000 +v -0.191341 0.788060 -0.750000 +v 0.191341 0.788060 -0.750000 +v 0.353553 0.896446 -0.750000 +v 0.461940 1.058658 -0.750000 +v 0.461940 1.441342 -0.750000 +v 0.353553 1.603554 -0.750000 +v 0.191341 1.711940 -0.750000 +v 0.000000 1.921303 -2.989438 +v -0.125000 2.030899 -3.145216 +v 0.000000 2.000544 -3.159371 +v -0.250000 2.147880 -2.883784 +v -0.216506 2.340409 -3.000889 +v -0.250000 2.227120 -3.053716 +v 0.187500 2.521452 -2.916467 +v 0.125000 2.030899 -3.145216 +v 0.125000 1.951658 -2.975283 +v -0.216506 2.034591 -2.936611 +v -0.216506 2.113832 -3.106544 +v 0.324760 2.397053 -2.974475 +v -0.125000 2.344101 -2.792284 +v -0.125000 2.423342 -2.962217 +v -0.125000 1.951658 -2.975283 +v 0.375000 2.227120 -3.053716 +v -0.216506 2.261168 -2.830956 +v 0.375000 2.147880 -2.883783 +v -0.312500 2.245990 -2.838034 +v -0.375000 2.313995 -2.944245 +v -0.375000 2.261168 -2.830956 +v -0.500000 2.147880 -2.883784 +v -0.483253 2.257351 -2.970659 +v -0.500000 2.200707 -2.997072 +v -0.266747 2.091235 -2.910197 +v -0.312500 2.102596 -3.042822 +v -0.266747 2.144063 -3.023486 +v -0.375000 2.034591 -2.936611 +v -0.437500 2.102596 -3.042822 +v -0.375000 2.087419 -3.049900 +v -0.266747 2.257351 -2.970659 +v -0.312500 2.298818 -2.951323 +v -0.437500 2.245990 -2.838034 +v -0.483253 2.204524 -2.857370 +v -0.312500 2.049769 -2.929533 +v -0.483253 2.091235 -2.910197 +v -0.437500 2.049769 -2.929533 +v -0.250000 2.147880 -2.883784 +v -0.266747 2.204524 -2.857370 +v -0.437500 2.298818 -2.951323 +v -0.483253 2.144063 -3.023486 +v -0.250000 2.200707 -2.997072 +v -0.382683 2.173880 -0.125000 +v 0.000000 2.250000 -0.125000 +v 0.382683 2.173880 -0.125000 +v 0.707106 1.957107 -0.125000 +v 0.923880 1.632684 -0.125000 +v 1.000000 1.250000 -0.125000 +v 0.923880 0.867316 -0.125000 +v 0.707106 0.542893 -0.125000 +v 0.382683 0.326120 -0.125000 +v 0.000000 0.250000 -0.125000 +v -0.382684 0.326120 -0.125000 +v -0.707108 0.542893 -0.125000 +v -0.923880 0.867316 -0.125000 +v -1.000000 1.250000 -0.125000 +v -0.923880 1.632683 -0.125000 +v -0.707108 1.957107 -0.125000 +v 0.000000 2.250000 -0.500000 +v 0.382683 2.173880 -0.500000 +v 0.000000 0.250000 -0.500000 +v -0.382683 2.173880 -0.500000 +v 0.382683 0.326120 -0.500000 +v -0.707108 1.957107 -0.500000 +v 0.707106 0.542893 -0.500000 +v -0.923880 1.632683 -0.500000 +v 0.923880 0.867316 -0.500000 +v -1.000000 1.250000 -0.500000 +v 1.000000 1.250000 -0.500000 +v -0.923880 0.867316 -0.500000 +v 0.923880 1.632684 -0.500000 +v -0.707108 0.542893 -0.500000 +v 0.707106 1.957107 -0.500000 +v -0.382684 0.326120 -0.500000 +v 0.000000 0.125000 -0.625000 +v -0.430519 2.289364 -0.625000 +v 0.000000 2.375000 -0.625000 +v 0.430519 0.210635 -0.625000 +v -0.795495 2.045495 -0.625000 +v 0.795495 0.454505 -0.625000 +v -1.039364 1.680519 -0.625000 +v 1.039364 0.819481 -0.625000 +v -1.125000 1.250000 -0.625000 +v 1.125000 1.250000 -0.625000 +v -1.039364 0.819481 -0.625000 +v 1.039364 1.680519 -0.625000 +v -0.795495 0.454505 -0.625000 +v 0.795495 2.045496 -0.625000 +v -0.430519 0.210636 -0.625000 +v 0.430518 2.289365 -0.625000 +vt 0.324138 0.796875 +vt 0.282759 0.812500 +vt 0.282759 0.796875 +vt 0.324138 0.828125 +vt 0.282759 0.843750 +vt 0.282759 0.828125 +vt 0.324138 0.859375 +vt 0.282759 0.875000 +vt 0.282759 0.859375 +vt 0.282759 0.890625 +vt 0.331034 0.906250 +vt 0.275862 0.906250 +vt 0.331034 0.765625 +vt 0.282759 0.781250 +vt 0.275862 0.765625 +vt 0.324138 0.812500 +vt 0.282759 1.000000 +vt 0.324138 0.984375 +vt 0.324138 1.000000 +vt 0.275862 0.968750 +vt 0.282759 0.984375 +vt 0.275862 0.984375 +vt 0.324138 0.953125 +vt 0.282759 0.968750 +vt 0.282759 0.953125 +vt 0.275862 0.968750 +vt 0.282759 0.984375 +vt 0.275862 0.984375 +vt 0.282759 0.968750 +vt 0.324138 0.984375 +vt 0.282759 0.984375 +vt 0.324138 0.968750 +vt 0.282759 0.968750 +vt 0.324138 0.984375 +vt 0.324138 0.968750 +vt 0.282759 0.984375 +vt 0.282759 0.968750 +vt 0.275862 0.968750 +vt 0.275862 0.984375 +vt 0.324138 0.953125 +vt 0.282759 0.953125 +vt 0.331034 0.984375 +vt 0.324138 0.968750 +vt 0.331034 0.968750 +vt 0.282759 1.000000 +vt 0.324138 1.000000 +vt 0.331034 0.984375 +vt 0.331034 0.968750 +vt 0.324138 0.953125 +vt 0.282759 0.953125 +vt 0.331034 0.984375 +vt 0.324138 0.968750 +vt 0.331034 0.968750 +vt 0.282759 1.000000 +vt 0.324138 1.000000 +vt 0.331034 0.984375 +vt 0.331034 0.968750 +vt 0.324138 0.953125 +vt 0.282759 0.953125 +vt 0.275862 0.968750 +vt 0.275862 0.984375 +vt 0.282759 1.000000 +vt 0.324138 0.984375 +vt 0.324138 1.000000 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.117241 0.296875 +vt 0.096552 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.343750 +vt 0.117241 0.328125 +vt 0.124138 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.310345 0.031250 +vt 0.296552 0.046875 +vt 0.296552 0.031250 +vt 0.268584 0.103261 +vt 0.268584 0.115489 +vt 0.264768 0.124136 +vt 0.282759 0.046875 +vt 0.282759 0.031250 +vt 0.268966 0.031250 +vt 0.275862 0.046875 +vt 0.268966 0.046875 +vt 0.255172 0.046875 +vt 0.255172 0.031250 +vt 0.365517 0.031250 +vt 0.351724 0.046875 +vt 0.351724 0.031250 +vt 0.337931 0.046875 +vt 0.337931 0.031250 +vt 0.324138 0.031250 +vt 0.331034 0.046875 +vt 0.324138 0.046875 +vt 0.310345 0.046875 +vt 0.296552 0.078125 +vt 0.303448 0.062500 +vt 0.303448 0.078125 +vt 0.282759 0.078125 +vt 0.289655 0.062500 +vt 0.289655 0.078125 +vt 0.268966 0.062500 +vt 0.275862 0.078125 +vt 0.268966 0.078125 +vt 0.255172 0.062500 +vt 0.262069 0.078125 +vt 0.255172 0.078125 +vt 0.351724 0.062500 +vt 0.358621 0.078125 +vt 0.351724 0.078125 +vt 0.337931 0.078125 +vt 0.344828 0.062500 +vt 0.344828 0.078125 +vt 0.324138 0.078125 +vt 0.331034 0.062500 +vt 0.331034 0.078125 +vt 0.310345 0.078125 +vt 0.317241 0.062500 +vt 0.317241 0.078125 +vt 0.848515 0.125000 +vt 0.903448 0.000542 +vt 0.958382 0.125000 +vt 0.351724 0.906250 +vt 0.331034 0.718750 +vt 0.255172 0.765625 +vt 0.275862 0.953125 +vt 0.848515 0.375000 +vt 0.903448 0.250541 +vt 0.958382 0.375000 +vt 0.737931 0.375000 +vt 0.848276 0.281250 +vt 0.848276 0.375000 +vt 0.737931 0.187500 +vt 0.848276 0.093750 +vt 0.848276 0.187500 +vt 0.737931 0.562500 +vt 0.848276 0.468750 +vt 0.848276 0.562500 +vt 0.737931 0.281250 +vt 0.737931 0.093750 +vt 0.848276 -0.000000 +vt 0.737931 0.656250 +vt 0.848276 0.656250 +vt 0.737931 0.468750 +vt 0.262069 0.140625 +vt 0.268966 0.171875 +vt 0.262069 0.171875 +vt 0.296552 0.171875 +vt 0.303448 0.140625 +vt 0.303448 0.171875 +vt 0.268966 0.125000 +vt 0.296552 0.140625 +vt 0.268966 0.140625 +vt 0.296552 0.187500 +vt 0.268966 0.187500 +vt 0.268966 0.093750 +vt 0.296552 0.125000 +vt 0.303448 0.171875 +vt 0.296552 0.140625 +vt 0.303448 0.140625 +vt 0.268966 0.140625 +vt 0.262069 0.171875 +vt 0.262069 0.140625 +vt 0.296552 0.187500 +vt 0.268966 0.171875 +vt 0.296552 0.171875 +vt 0.268966 0.125000 +vt 0.296552 0.125000 +vt 0.268966 0.093750 +vt 0.296552 0.093750 +vt 0.262069 0.171875 +vt 0.268966 0.140625 +vt 0.268966 0.171875 +vt 0.303448 0.171875 +vt 0.296552 0.140625 +vt 0.303448 0.140625 +vt 0.268966 0.125000 +vt 0.296552 0.187500 +vt 0.268966 0.187500 +vt 0.296552 0.171875 +vt 0.268966 0.093750 +vt 0.296552 0.125000 +vt 0.303448 0.140625 +vt 0.296552 0.171875 +vt 0.296552 0.140625 +vt 0.262069 0.140625 +vt 0.268966 0.171875 +vt 0.262069 0.171875 +vt 0.296552 0.187500 +vt 0.268966 0.125000 +vt 0.296552 0.125000 +vt 0.268966 0.140625 +vt 0.268966 0.093750 +vt 0.296552 0.093750 +vt 0.317241 0.140625 +vt 0.324138 0.171875 +vt 0.317241 0.171875 +vt 0.344828 0.171875 +vt 0.358621 0.187500 +vt 0.344828 0.187500 +vt 0.324138 0.125000 +vt 0.351724 0.140625 +vt 0.324138 0.140625 +vt 0.324138 0.187500 +vt 0.344828 0.093750 +vt 0.351724 0.125000 +vt 0.255172 0.343750 +vt 0.337931 0.312500 +vt 0.337931 0.343750 +vt 0.363190 0.328752 +vt 0.351724 0.373746 +vt 0.340258 0.328752 +vt 0.255172 0.312500 +vt 0.337931 0.281250 +vt 0.255172 0.281250 +vt 0.337931 0.250000 +vt 0.363190 0.296248 +vt 0.351724 0.311246 +vt 0.340258 0.296248 +vt 0.868966 0.625000 +vt 0.924138 0.500000 +vt 0.924138 0.625000 +vt 0.848276 0.500000 +vt 0.868966 0.500000 +vt 0.944828 0.625000 +vt 0.834483 0.906250 +vt 0.765517 0.718750 +vt 0.834483 0.718750 +vt 0.737931 0.718750 +vt 0.765517 0.906250 +vt 0.737931 0.906250 +vt 0.862069 0.906250 +vt 0.862069 0.718750 +vt 0.765517 0.968750 +vt 0.834483 0.968750 +vt 0.834483 0.656250 +vt 0.765517 0.656250 +vt 0.958621 0.187500 +vt 0.986207 0.156250 +vt 0.986207 0.187500 +vt 0.958621 0.062500 +vt 0.986207 0.031250 +vt 0.986207 0.062500 +vt 0.958621 0.125000 +vt 0.986207 0.093750 +vt 0.986207 0.125000 +vt 0.958621 0.156250 +vt 0.958621 0.031250 +vt 0.986207 0.000000 +vt 0.958621 0.093750 +vt 0.965937 0.193335 +vt 0.978890 0.193335 +vt 0.985367 0.218750 +vt 0.737931 0.109375 +vt 0.724138 0.093750 +vt 0.737931 0.093750 +vt 0.737931 0.015625 +vt 0.724138 0.000000 +vt 0.737931 0.000000 +vt 0.737931 0.140625 +vt 0.724138 0.125000 +vt 0.737931 0.125000 +vt 0.737931 0.078125 +vt 0.724138 0.062500 +vt 0.737931 0.062500 +vt 0.737931 0.046875 +vt 0.724138 0.031250 +vt 0.737931 0.031250 +vt 0.737931 0.171875 +vt 0.724138 0.156250 +vt 0.737931 0.156250 +vt 0.724138 0.015625 +vt 0.717241 0.000000 +vt 0.717241 0.156250 +vt 0.717241 0.125000 +vt 0.724138 0.078125 +vt 0.717241 0.062500 +vt 0.717241 0.031250 +vt 0.724138 0.171875 +vt 0.724138 0.109375 +vt 0.717241 0.093750 +vt 0.675862 0.031250 +vt 0.717241 0.187500 +vt 0.675862 0.156250 +vt 0.675862 0.093750 +vt 0.675862 0.000000 +vt 0.675862 0.125000 +vt 0.675862 0.062500 +vt 0.668966 0.125000 +vt 0.668966 0.093750 +vt 0.668966 0.078125 +vt 0.668966 0.062500 +vt 0.668966 0.031250 +vt 0.668966 0.000000 +vt 0.668966 0.171875 +vt 0.668966 0.156250 +vt 0.655172 0.156250 +vt 0.668966 0.109375 +vt 0.655172 0.093750 +vt 0.668966 0.015625 +vt 0.655172 0.000000 +vt 0.668966 0.140625 +vt 0.655172 0.125000 +vt 0.655172 0.062500 +vt 0.668966 0.046875 +vt 0.655172 0.031250 +vt 0.655172 0.140625 +vt 0.648276 0.125000 +vt 0.655172 0.109375 +vt 0.648276 0.093750 +vt 0.648276 0.062500 +vt 0.655172 0.046875 +vt 0.648276 0.031250 +vt 0.655172 0.015625 +vt 0.648276 0.000000 +vt 0.648276 0.187500 +vt 0.648276 0.156250 +vt 0.641379 0.093750 +vt 0.641379 -0.000000 +vt 0.641379 0.125000 +vt 0.641379 0.062500 +vt 0.641379 0.031250 +vt 0.641379 0.156250 +vt 0.634483 0.062500 +vt 0.634483 0.031250 +vt 0.634483 0.171875 +vt 0.634483 0.156250 +vt 0.634483 0.093750 +vt 0.634483 0.000000 +vt 0.634483 0.140625 +vt 0.634483 0.125000 +vt 0.624290 0.002689 +vt 0.630883 0.002689 +vt 0.634179 0.015625 +vt 0.496552 0.187500 +vt 0.468966 0.156250 +vt 0.496552 0.156250 +vt 0.496552 0.312500 +vt 0.468966 0.265625 +vt 0.496552 0.265625 +vt 0.468966 0.234375 +vt 0.496552 0.234375 +vt 0.468966 0.187500 +vt 0.537931 0.828125 +vt 0.524138 0.812500 +vt 0.537931 0.812500 +vt 0.503448 0.718750 +vt 0.517241 0.812500 +vt 0.503448 0.812500 +vt 0.537931 0.718750 +vt 0.524138 0.718750 +vt 0.517241 0.718750 +vt 0.496552 0.812500 +vt 0.496552 0.718750 +vt 0.544828 0.203125 +vt 0.551724 0.250000 +vt 0.544828 0.250000 +vt 0.531034 0.203125 +vt 0.524138 0.250000 +vt 0.524138 0.203125 +vt 0.510345 0.203125 +vt 0.503448 0.250000 +vt 0.503448 0.203125 +vt 0.537931 0.250000 +vt 0.537931 0.203125 +vt 0.510345 0.296875 +vt 0.503448 0.296875 +vt 0.531034 0.250000 +vt 0.524138 0.296875 +vt 0.531034 0.203125 +vt 0.531034 0.187500 +vt 0.537931 0.187500 +vt 0.544828 0.187500 +vt 0.551724 0.187500 +vt 0.551724 0.203125 +vt 0.503448 0.203125 +vt 0.503448 0.187500 +vt 0.510345 0.187500 +vt 0.517241 0.187500 +vt 0.524138 0.187500 +vt 0.524138 0.203125 +vt 0.544828 0.156250 +vt 0.537931 0.156250 +vt 0.531034 0.156250 +vt 0.524138 0.187500 +vt 0.524138 0.156250 +vt 0.510345 0.156250 +vt 0.503448 0.156250 +vt 0.524138 0.156250 +vt 0.517241 0.156250 +vt 0.551724 0.156250 +vt 0.496552 0.187500 +vt 0.496552 0.156250 +vt 0.496552 0.250000 +vt 0.496552 0.203125 +vt 0.979310 0.515625 +vt 0.986207 0.484375 +vt 0.986207 0.515625 +vt 0.517241 0.250000 +vt 0.510345 0.250000 +vt 0.524138 0.250000 +vt 0.517241 0.296875 +vt 0.544828 0.296875 +vt 0.496552 0.296875 +vt 0.537931 0.296875 +vt 0.531034 0.296875 +vt 0.517241 0.203125 +vt 0.213793 0.109375 +vt 0.220690 0.265625 +vt 0.213793 0.265625 +vt 0.972414 0.515625 +vt 0.979310 0.484375 +vt 0.220690 0.109375 +vt 0.227586 0.265625 +vt 0.965517 0.515625 +vt 0.972414 0.484375 +vt 0.186207 0.109375 +vt 0.193103 0.265625 +vt 0.186207 0.265625 +vt 0.958621 0.515625 +vt 0.965517 0.484375 +vt 0.193103 0.109375 +vt 0.200000 0.265625 +vt 0.198836 0.288749 +vt 0.193103 0.296248 +vt 0.187370 0.288749 +vt 0.200000 0.109375 +vt 0.206897 0.265625 +vt 0.206897 0.109375 +vt 0.201164 0.288749 +vt 0.201164 0.273751 +vt 0.212630 0.273751 +vt 0.972414 0.468750 +vt 0.979310 0.484375 +vt 0.979310 0.468750 +vt 0.958621 0.468750 +vt 0.965517 0.468750 +vt 0.958621 0.484375 +vt 0.965517 0.453125 +vt 0.958621 0.437500 +vt 0.965517 0.421875 +vt 0.965517 0.437500 +vt 0.972414 0.453125 +vt 0.979310 0.453125 +vt 0.986207 0.453125 +vt 0.986207 0.468750 +vt 0.972414 0.437500 +vt 0.965517 0.453125 +vt 0.986207 0.453125 +vt 0.979310 0.437500 +vt 0.986207 0.437500 +vt 0.972414 0.421875 +vt 0.979310 0.343750 +vt 0.979310 0.421875 +vt 0.986207 0.421875 +vt 0.965517 0.328125 +vt 0.972414 0.328125 +vt 0.965517 0.343750 +vt 0.986207 0.343750 +vt 0.958621 0.421875 +vt 0.965517 0.343750 +vt 0.972414 0.343750 +vt 0.979310 0.328125 +vt 0.986207 0.296875 +vt 0.986207 0.328125 +vt 0.986207 0.343750 +vt 0.958621 0.281250 +vt 0.965517 0.250000 +vt 0.965517 0.281250 +vt 0.958621 0.328125 +vt 0.965517 0.296875 +vt 0.972414 0.296875 +vt 0.979310 0.296875 +vt 0.979310 0.296875 +vt 0.972414 0.281250 +vt 0.979310 0.281250 +vt 0.958621 0.296875 +vt 0.986207 0.250000 +vt 0.986207 0.281250 +vt 0.979310 0.250000 +vt 0.972414 0.250000 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.093750 +vt 0.151724 0.093750 +vt 0.158621 0.078125 +vt 0.165517 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.193103 0.046875 +vt 0.186207 0.046875 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.200000 0.062500 +vt 0.193103 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.117241 0.296875 +vt 0.096552 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.343750 +vt 0.117241 0.328125 +vt 0.124138 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.117241 0.296875 +vt 0.096552 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.343750 +vt 0.117241 0.328125 +vt 0.124138 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.117241 0.296875 +vt 0.096552 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.343750 +vt 0.117241 0.328125 +vt 0.124138 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.117241 0.296875 +vt 0.096552 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.343750 +vt 0.117241 0.328125 +vt 0.124138 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.551724 0.390625 +vt 0.565517 0.484375 +vt 0.551724 0.484375 +vt 0.565517 0.609375 +vt 0.551724 0.515625 +vt 0.565517 0.515625 +vt 0.551724 0.640625 +vt 0.565517 0.734375 +vt 0.551724 0.734375 +vt 0.324138 0.843750 +vt 0.324138 0.875000 +vt 0.324138 0.890625 +vt 0.324138 0.781250 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.303448 0.046875 +vt 0.259370 0.124136 +vt 0.255554 0.115489 +vt 0.255554 0.103261 +vt 0.259370 0.094614 +vt 0.264768 0.094614 +vt 0.289655 0.046875 +vt 0.262069 0.046875 +vt 0.358621 0.046875 +vt 0.344828 0.046875 +vt 0.317241 0.046875 +vt 0.296552 0.062500 +vt 0.282759 0.062500 +vt 0.275862 0.062500 +vt 0.262069 0.062500 +vt 0.358621 0.062500 +vt 0.337931 0.062500 +vt 0.324138 0.062500 +vt 0.310345 0.062500 +vt 0.903448 0.249458 +vt 0.864604 0.213006 +vt 0.864604 0.036995 +vt 0.942292 0.036994 +vt 0.942292 0.213005 +vt 0.351724 0.765625 +vt 0.275862 0.718750 +vt 0.255172 0.906250 +vt 0.331034 0.953125 +vt 0.942292 0.463005 +vt 0.903448 0.499458 +vt 0.864604 0.463005 +vt 0.864604 0.286994 +vt 0.942292 0.286994 +vt 0.737931 -0.000000 +vt 0.296552 0.093750 +vt 0.268966 0.187500 +vt 0.262069 0.140625 +vt 0.296552 0.093750 +vt 0.303448 0.171875 +vt 0.268966 0.187500 +vt 0.358621 0.171875 +vt 0.324138 0.093750 +vt 0.351724 0.313754 +vt 0.363190 0.358748 +vt 0.340258 0.358748 +vt 0.255172 0.250000 +vt 0.340258 0.266252 +vt 0.351724 0.251254 +vt 0.363190 0.266252 +vt 0.848276 0.625000 +vt 0.944828 0.500000 +vt 0.958621 0.000000 +vt 0.978890 0.244165 +vt 0.965937 0.244165 +vt 0.959461 0.218750 +vt 0.724138 0.140625 +vt 0.724138 0.046875 +vt 0.675862 0.187500 +vt 0.655172 0.171875 +vt 0.655172 0.078125 +vt 0.641379 0.187500 +vt 0.634483 0.078125 +vt 0.634483 0.046875 +vt 0.634483 0.109375 +vt 0.634483 0.015625 +vt 0.630883 0.028561 +vt 0.624290 0.028561 +vt 0.620993 0.015625 +vt 0.468966 0.312500 +vt 0.524138 0.828125 +vt 0.551724 0.203125 +vt 0.524138 0.296875 +vt 0.551724 0.296875 +vt 0.524138 0.203125 +vt 0.227586 0.109375 +vt 0.958621 0.484375 +vt 0.187370 0.273751 +vt 0.193103 0.266252 +vt 0.198836 0.273751 +vt 0.206897 0.266252 +vt 0.212630 0.288749 +vt 0.206897 0.296248 +vt 0.958621 0.453125 +vt 0.958621 0.343750 +vt 0.958621 0.250000 +vt 0.958621 0.296875 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.565517 0.390625 +vt 0.551724 0.609375 +vt 0.565517 0.640625 +vt 0.662069 0.796875 +vt 0.662069 0.875000 +vt 0.551724 0.875000 +vt 0.634483 0.218750 +vt 0.724138 0.250000 +vt 0.551724 0.250000 +vt 0.724138 0.359375 +vt 0.703448 0.375000 +vt 0.606897 -0.000000 +vt 0.551724 0.125000 +vt 0.551724 -0.000000 +vt 0.634483 0.906250 +vt 0.606897 1.000000 +vt 0.413793 0.062500 +vt 0.441379 0.250000 +vt 0.413793 0.187500 +vt 0.682759 0.406250 +vt 0.703448 0.406250 +vt 0.724138 0.875000 +vt 0.717241 0.796875 +vt 0.724138 0.765625 +vt 0.682759 0.750000 +vt 0.717241 0.906250 +vt 0.717241 0.875000 +vt 0.737931 0.359375 +vt 0.737931 0.218750 +vt 0.737931 0.250000 +vt 0.737931 0.875000 +vt 0.737931 0.906250 +vt 0.724138 0.375000 +vt 0.724138 0.718750 +vt 0.703448 0.750000 +vt 0.703448 0.718750 +vt 0.682759 0.718750 +vt 0.662069 0.500000 +vt 0.675862 0.625000 +vt 0.662069 0.625000 +vt 0.696552 0.421875 +vt 0.675862 0.500000 +vt 0.696552 0.703125 +vt 0.020690 0.781250 +vt 0.013793 0.875000 +vt 0.013793 0.781250 +vt 0.213793 0.781250 +vt 0.227586 0.875000 +vt 0.213793 0.875000 +vt 0.510209 0.406422 +vt 0.506394 0.432721 +vt 0.482676 0.422118 +vt 0.455123 0.406613 +vt 0.458988 0.432863 +vt 0.438078 0.465736 +vt 0.414116 0.500678 +vt 0.425220 0.509148 +vt 0.420595 0.561221 +vt 0.413934 0.622365 +vt 0.425067 0.614088 +vt 0.437826 0.657998 +vt 0.454859 0.718112 +vt 0.458836 0.691761 +vt 0.482625 0.702699 +vt 0.455172 0.609375 +vt 0.441379 0.515625 +vt 0.455172 0.515625 +vt 0.696552 0.625000 +vt 0.703448 0.687500 +vt 0.696552 0.687500 +vt 0.696552 0.500000 +vt 0.703448 0.437500 +vt 0.703448 0.500000 +vt 0.703448 0.625000 +vt 0.731034 0.687500 +vt 0.413793 0.859375 +vt 0.420690 0.914062 +vt 0.413793 0.914062 +vt 0.475862 0.914062 +vt 0.482759 0.859375 +vt 0.482759 0.914062 +vt 0.431034 0.937500 +vt 0.475862 0.859375 +vt 0.465517 0.937500 +vt 0.431034 0.953125 +vt 0.479310 0.937500 +vt 0.465517 0.953125 +vt 0.417241 0.937500 +vt 0.417241 0.953125 +vt 0.441379 -0.000000 +vt 0.468966 0.250000 +vt 0.903448 0.875000 +vt 0.958621 0.718750 +vt 0.958621 0.875000 +vt 0.958621 0.625000 +vt 0.903448 0.718750 +vt 0.903448 0.625000 +vt 0.903448 0.968750 +vt 0.958621 0.968750 +vt 0.862069 0.718750 +vt 0.862069 0.875000 +vt 1.000000 0.875000 +vt 1.000000 0.718750 +vt 0.489655 0.156250 +vt 0.510345 0.046875 +vt 0.510345 0.156250 +vt 0.434483 0.812500 +vt 0.413793 0.765625 +vt 0.420690 0.750000 +vt 0.489655 0.046875 +vt 0.510345 0.000000 +vt 0.468966 0.046875 +vt 0.531034 0.156250 +vt 0.434483 0.750000 +vt 0.455172 0.812500 +vt 0.496552 0.765625 +vt 0.475862 0.750000 +vt 0.496552 0.750000 +vt 0.455172 0.750000 +vt 0.468966 0.750000 +vt 0.475862 0.765625 +vt 0.434483 0.859375 +vt 0.475862 0.812500 +vt 0.496552 0.812500 +vt 0.455172 0.718750 +vt 0.986207 0.609375 +vt 0.979310 0.593750 +vt 0.986207 0.593750 +vt 0.979310 0.531250 +vt 0.986207 0.515625 +vt 0.986207 0.531250 +vt 0.972414 0.593750 +vt 0.979310 0.578125 +vt 0.551724 0.625000 +vt 0.620690 0.609375 +vt 0.620690 0.734375 +vt 0.620690 0.640625 +vt 0.634483 0.640625 +vt 0.020690 0.875000 +vt 0.006897 0.781250 +vt 0.020690 0.781250 +vt 0.662069 0.734375 +vt 0.648276 0.640625 +vt 0.565517 0.640625 +vt 0.551724 0.625000 +vt 0.565517 0.625000 +vt 0.606897 0.390625 +vt 0.551724 0.375000 +vt 0.682759 0.375000 +vt 0.662069 0.375000 +vt 0.620690 0.484375 +vt 0.551724 0.500000 +vt 0.117241 0.906250 +vt 0.075862 0.875000 +vt 0.117241 0.875000 +vt 0.158621 0.125000 +vt 0.117241 0.156250 +vt 0.117241 0.125000 +vt 0.117241 0.906250 +vt 0.158621 0.875000 +vt 0.158621 0.906250 +vt 0.144828 0.250000 +vt 0.131034 0.250000 +vt 0.213793 0.875000 +vt 0.220690 0.781250 +vt 0.220690 0.875000 +vt 0.062069 0.781250 +vt 0.020690 0.875000 +vt 0.144828 0.281250 +vt 0.186207 0.250000 +vt 0.186207 0.281250 +vt 0.213793 0.765625 +vt 0.172414 0.781250 +vt 0.172414 0.750000 +vt 0.131034 0.281250 +vt 0.089655 0.250000 +vt 0.075862 0.906250 +vt 0.020690 0.906250 +vt 0.020690 0.890625 +vt 0.020690 0.765625 +vt 0.020690 0.750000 +vt 0.062069 0.750000 +vt 0.213793 0.890625 +vt 0.565517 0.515625 +vt 0.551724 0.500000 +vt 0.565517 0.500000 +vt 0.539805 0.495450 +vt 0.539959 0.508696 +vt 0.506403 0.692192 +vt 0.539824 0.629444 +vt 0.512254 0.691859 +vt 0.544674 0.484410 +vt 0.551565 0.500009 +vt 0.544695 0.609268 +vt 0.539977 0.616199 +vt 0.489655 0.156250 +vt 0.510345 0.046875 +vt 0.510345 0.156250 +vt 0.510345 0.562500 +vt 0.455172 0.562500 +vt 0.455172 0.546875 +vt 0.620690 0.515625 +vt 0.565517 0.515625 +vt 0.565517 0.750000 +vt 0.551724 0.734375 +vt 0.565517 0.734375 +vt 0.620690 0.515625 +vt 0.565517 0.609375 +vt 0.565517 0.515625 +vt 0.448276 0.515625 +vt 0.455172 0.609375 +vt 0.448276 0.609375 +vt 0.524138 0.609375 +vt 0.510345 0.515625 +vt 0.524138 0.515625 +vt 0.455172 0.578125 +vt 0.455172 0.562500 +vt 0.510345 0.562500 +vt 0.565517 0.625000 +vt 0.551724 0.609375 +vt 0.565517 0.609375 +vt 0.565517 0.500000 +vt 0.551724 0.484375 +vt 0.565517 0.484375 +vt 0.565517 0.390625 +vt 0.551724 0.375000 +vt 0.565517 0.375000 +vt 0.565517 0.484375 +vt 0.551724 0.484375 +vt 0.551724 0.515625 +vt 0.565517 0.609375 +vt 0.551724 0.609375 +vt 0.565517 0.640625 +vt 0.551724 0.640625 +vt 0.565517 0.390625 +vt 0.551724 0.390625 +vt 0.565517 0.734375 +vt 0.551724 0.750000 +vt 0.551724 0.734375 +vt 0.551583 0.624874 +vt 0.510212 0.718578 +vt 0.512238 0.433055 +vt 0.255172 -0.000000 +vt 0.227586 0.125000 +vt 0.227586 -0.000000 +vt 0.227586 0.500000 +vt 0.255172 0.625000 +vt 0.227586 0.625000 +vt 0.255172 0.750000 +vt 0.227586 0.875000 +vt 0.227586 0.750000 +vt 0.227586 0.250000 +vt 0.255172 0.375000 +vt 0.227586 0.375000 +vt 0.255172 0.500000 +vt 0.255172 0.250000 +vt 0.255172 0.125000 +vt 0.227586 1.000000 +vt 0.255172 0.875000 +vt 0.255172 1.000000 +vt 0.185647 0.407982 +vt 0.181809 0.433762 +vt 0.158206 0.423338 +vt 0.227246 0.501121 +vt 0.215680 0.509781 +vt 0.201106 0.462288 +vt 0.226770 0.624909 +vt 0.215543 0.616068 +vt 0.220300 0.563004 +vt 0.185661 0.717018 +vt 0.181941 0.690910 +vt 0.202736 0.659045 +vt 0.131028 0.716313 +vt 0.134829 0.690268 +vt 0.158386 0.701199 +vt 0.089995 0.623885 +vt 0.101155 0.615205 +vt 0.113984 0.658150 +vt 0.089997 0.501305 +vt 0.101178 0.509856 +vt 0.096611 0.562314 +vt 0.130816 0.408077 +vt 0.134644 0.434152 +vt 0.113890 0.466628 +vt 0.117241 0.000640 +vt 0.144545 0.062500 +vt 0.117241 0.124360 +vt 0.282000 0.461238 +vt 0.267164 0.508207 +vt 0.255663 0.499249 +vt 0.324503 0.423194 +vt 0.301337 0.432859 +vt 0.297766 0.407469 +vt 0.368692 0.466561 +vt 0.347882 0.434234 +vt 0.351705 0.408442 +vt 0.386036 0.561123 +vt 0.381418 0.509360 +vt 0.392481 0.500826 +vt 0.368830 0.657546 +vt 0.381587 0.613816 +vt 0.392687 0.622102 +vt 0.324106 0.701882 +vt 0.347834 0.691162 +vt 0.351758 0.717531 +vt 0.279544 0.658120 +vt 0.300333 0.691179 +vt 0.296432 0.717486 +vt 0.262317 0.561201 +vt 0.266830 0.614350 +vt 0.255589 0.622775 +vt 0.606897 0.125000 +vt 0.662069 0.218750 +vt 0.724138 0.218750 +vt 0.551724 1.000000 +vt 0.662069 0.906250 +vt 0.724138 0.906250 +vt 0.737931 0.765625 +vt 0.724138 0.406250 +vt 0.724138 0.750000 +vt 0.696552 0.453125 +vt 0.696552 0.671875 +vt 0.227586 0.781250 +vt 0.441379 0.609375 +vt 0.696552 0.437500 +vt 0.731034 0.437500 +vt 0.420690 0.859375 +vt 0.479310 0.953125 +vt 0.468966 -0.000000 +vt 0.413793 0.812500 +vt 0.489655 0.000000 +vt 0.468966 0.156250 +vt 0.531034 0.046875 +vt 0.455172 0.859375 +vt 0.434483 0.718750 +vt 0.979310 0.609375 +vt 0.979310 0.515625 +vt 0.972414 0.562500 +vt 0.606897 0.734375 +vt 0.006897 0.875000 +vt 0.551724 0.640625 +vt 0.158621 0.156250 +vt 0.117241 0.875000 +vt 0.213793 0.781250 +vt 0.213793 0.750000 +vt 0.089655 0.281250 +vt 0.213793 0.906250 +vt 0.551724 0.515625 +vt 0.551568 0.515616 +vt 0.544680 0.515623 +vt 0.489655 0.046875 +vt 0.455172 0.531250 +vt 0.510345 0.531250 +vt 0.551724 0.750000 +vt 0.620690 0.609375 +vt 0.455172 0.515625 +vt 0.510345 0.609375 +vt 0.510345 0.593750 +vt 0.455172 0.593750 +vt 0.551724 0.625000 +vt 0.551724 0.500000 +vt 0.551724 0.390625 +vt 0.551583 0.609269 +vt 0.544695 0.640480 +vt 0.517133 0.702938 +vt 0.517104 0.422013 +vt 0.106793 0.119651 +vt 0.097935 0.106242 +vt 0.092016 0.086173 +vt 0.089938 0.062500 +vt 0.092016 0.038827 +vt 0.097935 0.018758 +vt 0.106793 0.005349 +vt 0.127690 0.005349 +vt 0.136548 0.018758 +vt 0.142467 0.038827 +vt 0.142467 0.086173 +vt 0.136548 0.106242 +vt 0.127690 0.119651 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.179310 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.310345 0.000000 +vt 0.296552 0.000000 +vt 0.282759 0.000000 +vt 0.268966 0.000000 +vt 0.365517 0.000000 +vt 0.351724 0.000000 +vt 0.337931 0.000000 +vt 0.324138 0.000000 +vt 0.255172 0.000000 +vt 0.310345 0.093750 +vt 0.317241 0.093750 +vt 0.296552 0.093750 +vt 0.303448 0.093750 +vt 0.282759 0.093750 +vt 0.289655 0.093750 +vt 0.268966 0.093750 +vt 0.275862 0.093750 +vt 0.324138 0.093750 +vt 0.331034 0.093750 +vt 0.337931 0.093750 +vt 0.344828 0.093750 +vt 0.351724 0.093750 +vt 0.358621 0.093750 +vt 0.255172 0.093750 +vt 0.262069 0.093750 +vt 0.296552 0.218750 +vt 0.310345 0.234375 +vt 0.296552 0.234375 +vt 0.296552 0.187500 +vt 0.310345 0.203125 +vt 0.296552 0.203125 +vt 0.310345 0.234375 +vt 0.296552 0.250000 +vt 0.296552 0.234375 +vt 0.310345 0.203125 +vt 0.296552 0.218750 +vt 0.296552 0.203125 +vt 0.296552 0.187500 +vt 0.310345 0.218750 +vt 0.324138 0.234375 +vt 0.310345 0.187500 +vt 0.324138 0.203125 +vt 0.324138 0.250000 +vt 0.310345 0.250000 +vt 0.310345 0.234375 +vt 0.296552 0.250000 +vt 0.296552 0.234375 +vt 0.310345 0.203125 +vt 0.296552 0.218750 +vt 0.296552 0.203125 +vt 0.310345 0.187500 +vt 0.296552 0.187500 +vt 0.310345 0.218750 +vt 0.324138 0.234375 +vt 0.324138 0.203125 +vt 0.310345 0.250000 +vt 0.310345 0.234375 +vt 0.296552 0.250000 +vt 0.296552 0.234375 +vt 0.310345 0.203125 +vt 0.296552 0.218750 +vt 0.296552 0.203125 +vt 0.310345 0.187500 +vt 0.296552 0.187500 +vt 0.310345 0.218750 +vt 0.324138 0.234375 +vt 0.324138 0.187500 +vt 0.324138 0.250000 +vt 0.310345 0.250000 +vt 0.324138 0.203125 +vt 0.255172 0.234375 +vt 0.255172 0.234375 +vt 0.255172 0.218750 +vt 0.255172 0.203125 +vt 0.255172 0.234375 +vt 0.255172 0.218750 +vt 0.255172 0.187500 +vt 0.255172 0.203125 +vt 0.255172 0.218750 +vt 0.255172 0.203125 +vt 0.255172 0.187500 +vt 0.255172 0.187500 +vt 0.310345 0.218750 +vt 0.296552 0.250000 +vt 0.310345 0.250000 +vt 0.324138 0.203125 +vt 0.324138 0.218750 +vt 0.324138 0.234375 +vt 0.324138 0.250000 +vt 0.324138 0.187500 +vt 0.296552 0.187500 +vt 0.310345 0.203125 +vt 0.296552 0.203125 +vt 0.296552 0.218750 +vt 0.310345 0.234375 +vt 0.296552 0.234375 +vt 0.310345 0.218750 +vt 0.310345 0.250000 +vt 0.296552 0.250000 +vt 0.324138 0.203125 +vt 0.324138 0.218750 +vt 0.324138 0.234375 +vt 0.324138 0.250000 +vt 0.310345 0.187500 +vt 0.296552 0.187500 +vt 0.310345 0.203125 +vt 0.296552 0.203125 +vt 0.296552 0.218750 +vt 0.310345 0.234375 +vt 0.296552 0.234375 +vt 0.310345 0.218750 +vt 0.310345 0.250000 +vt 0.296552 0.250000 +vt 0.324138 0.203125 +vt 0.324138 0.218750 +vt 0.324138 0.250000 +vt 0.324138 0.187500 +vt 0.324138 0.234375 +vt 0.255172 0.203125 +vt 0.255172 0.203125 +vt 0.255172 0.218750 +vt 0.255172 0.234375 +vt 0.255172 0.203125 +vt 0.255172 0.218750 +vt 0.255172 0.250000 +vt 0.255172 0.234375 +vt 0.255172 0.218750 +vt 0.255172 0.234375 +vt 0.255172 0.250000 +vt 0.255172 0.250000 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.179310 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.179310 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.179310 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.179310 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.172414 0.390625 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.179310 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.179310 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.179310 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.255172 0.218750 +vt 0.296552 0.234375 +vt 0.255172 0.234375 +vt 0.255172 0.187500 +vt 0.296552 0.203125 +vt 0.255172 0.203125 +vt 0.296552 0.250000 +vt 0.255172 0.250000 +vt 0.296552 0.218750 +vt 0.310345 0.187500 +vt 0.310345 0.203125 +vt 0.310345 0.250000 +vt 0.310345 0.218750 +vt 0.310345 0.234375 +vt 0.324138 0.234375 +vt 0.324138 0.187500 +vt 0.324138 0.203125 +vt 0.324138 0.250000 +vt 0.324138 0.218750 +vt 0.255172 0.218750 +vt 0.296552 0.234375 +vt 0.255172 0.234375 +vt 0.255172 0.187500 +vt 0.296552 0.203125 +vt 0.255172 0.203125 +vt 0.296552 0.250000 +vt 0.255172 0.250000 +vt 0.296552 0.218750 +vt 0.310345 0.187500 +vt 0.310345 0.203125 +vt 0.310345 0.250000 +vt 0.310345 0.218750 +vt 0.310345 0.234375 +vt 0.324138 0.234375 +vt 0.324138 0.187500 +vt 0.324138 0.203125 +vt 0.324138 0.250000 +vt 0.324138 0.218750 +vt 0.255172 0.218750 +vt 0.296552 0.234375 +vt 0.255172 0.234375 +vt 0.255172 0.187500 +vt 0.296552 0.203125 +vt 0.255172 0.203125 +vt 0.296552 0.250000 +vt 0.255172 0.250000 +vt 0.296552 0.218750 +vt 0.310345 0.187500 +vt 0.310345 0.203125 +vt 0.310345 0.250000 +vt 0.310345 0.218750 +vt 0.310345 0.234375 +vt 0.324138 0.234375 +vt 0.324138 0.187500 +vt 0.324138 0.203125 +vt 0.324138 0.250000 +vt 0.324138 0.218750 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.310345 0.187500 +vt 0.324138 0.218750 +vt 0.324138 0.187500 +vt 0.324138 0.218750 +vt 0.324138 0.187500 +vt 0.324138 0.250000 +vt 0.324138 0.218750 +vt 0.255172 0.250000 +vt 0.255172 0.250000 +vt 0.255172 0.250000 +vt 0.324138 0.187500 +vt 0.310345 0.187500 +vt 0.255172 0.187500 +vt 0.255172 0.187500 +vt 0.255172 0.187500 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.296552 0.187500 +vt 0.296552 0.187500 +vt 0.296552 0.187500 +vt 0.958621 0.609375 +vt 0.965517 0.593750 +vt 0.965517 0.609375 +vt 0.958621 0.562500 +vt 0.965517 0.546875 +vt 0.965517 0.562500 +vt 0.986207 0.578125 +vt 0.965517 0.625000 +vt 0.958621 0.625000 +vt 0.958621 0.578125 +vt 0.965517 0.578125 +vt 0.986207 0.562500 +vt 0.958621 0.531250 +vt 0.965517 0.515625 +vt 0.965517 0.531250 +vt 0.958621 0.640625 +vt 0.965517 0.640625 +vt 0.958621 0.593750 +vt 0.979310 0.562500 +vt 0.986207 0.546875 +vt 0.958621 0.546875 +vt 0.979310 0.546875 +vt 0.965517 0.593750 +vt 0.972414 0.609375 +vt 0.965517 0.609375 +vt 0.965517 0.656250 +vt 0.972414 0.640625 +vt 0.972414 0.656250 +vt 0.965517 0.546875 +vt 0.972414 0.531250 +vt 0.972414 0.546875 +vt 0.965517 0.703125 +vt 0.972414 0.687500 +vt 0.972414 0.703125 +vt 0.972414 0.578125 +vt 0.972414 0.593750 +vt 0.965517 0.625000 +vt 0.965517 0.640625 +vt 0.965517 0.515625 +vt 0.965517 0.531250 +vt 0.965517 0.671875 +vt 0.965517 0.687500 +vt 0.965517 0.562500 +vt 0.965517 0.578125 +vt 0.972414 0.625000 +vt 0.972414 0.671875 +vt 0.972414 0.562500 +vt 0.089655 0.375000 +vt 0.075862 0.421875 +vt 0.075862 0.375000 +vt 0.075862 0.328125 +vt 0.089655 0.328125 +vt 0.075862 0.281250 +vt 0.089655 0.281250 +vt 0.075862 0.234375 +vt 0.089655 0.234375 +vt 0.075862 0.187500 +vt 0.089655 0.187500 +vt 0.089655 0.140625 +vt 0.075862 0.140625 +vt 0.089655 0.093750 +vt 0.075862 0.093750 +vt 0.089655 0.046875 +vt 0.075862 0.046875 +vt 0.089655 -0.000000 +vt 0.075862 0.000000 +vt 0.089655 0.750000 +vt 0.075862 0.703125 +vt 0.089655 0.703125 +vt 0.075862 0.656250 +vt 0.089655 0.656250 +vt 0.089655 0.609375 +vt 0.075862 0.609375 +vt 0.075862 0.562500 +vt 0.089655 0.562500 +vt 0.075862 0.515625 +vt 0.089655 0.515625 +vt 0.075862 0.468750 +vt 0.089655 0.468750 +vt 0.089655 0.421875 +vt 0.055172 0.375000 +vt 0.055172 0.328125 +vt 0.055172 -0.000000 +vt 0.055172 0.421875 +vt 0.055172 0.046875 +vt 0.055172 0.468750 +vt 0.055172 0.093750 +vt 0.055172 0.515625 +vt 0.055172 0.140625 +vt 0.055172 0.562500 +vt 0.055172 0.187500 +vt 0.055172 0.609375 +vt 0.055172 0.234375 +vt 0.055172 0.656250 +vt 0.055172 0.281250 +vt 0.075862 0.750000 +vt 0.055172 0.703125 +vt 0.000000 0.125000 +vt 0.000000 0.093750 +vt -0.000000 0.546875 +vt 0.000000 0.515625 +vt -0.000000 0.140625 +vt -0.000000 0.593750 +vt -0.000000 0.562500 +vt 0.000000 0.218750 +vt 0.000000 0.187500 +vt 0.000000 0.609375 +vt -0.000000 0.234375 +vt 0.000000 0.687500 +vt 0.000000 0.656250 +vt -0.000000 0.281250 +vt 0.055172 0.750000 +vt 0.000000 0.703125 +vt -0.000000 0.406250 +vt -0.000000 0.375000 +vt 0.000000 0.328125 +vt 0.000000 0.031250 +vt -0.000000 0.000000 +vt 0.000000 0.421875 +vt -0.000000 0.046875 +vt -0.000000 0.500000 +vt 0.000000 0.468750 +vt 0.393103 0.937500 +vt 0.413793 1.000000 +vt 0.393103 1.000000 +vt 0.393103 0.500000 +vt 0.413793 0.562500 +vt 0.393103 0.562500 +vt 0.393103 0.437500 +vt 0.413793 0.500000 +vt 0.393103 -0.000000 +vt 0.413793 0.062500 +vt 0.393103 0.062500 +vt 0.413793 0.625000 +vt 0.393103 0.625000 +vt 0.413793 0.125000 +vt 0.393103 0.125000 +vt 0.413793 0.687500 +vt 0.393103 0.687500 +vt 0.413793 0.187500 +vt 0.393103 0.187500 +vt 0.413793 0.750000 +vt 0.393103 0.750000 +vt 0.413793 0.250000 +vt 0.393103 0.250000 +vt 0.413793 0.812500 +vt 0.393103 0.812500 +vt 0.413793 0.312500 +vt 0.393103 0.312500 +vt 0.413793 0.875000 +vt 0.393103 0.875000 +vt 0.413793 0.375000 +vt 0.393103 0.375000 +vt 0.413793 0.937500 +vt 0.413793 0.437500 +vt 0.958621 0.515625 +vt 0.972414 0.515625 +vt -0.000000 0.171875 +vt 0.000000 0.640625 +vt -0.000000 0.265625 +vt -0.000000 0.312500 +vt -0.000000 0.734375 +vt 0.000000 0.359375 +vt -0.000000 0.453125 +vt -0.000000 0.078125 +vt 0.413793 -0.000000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.1617 0.3904 0.9063 +vn 0.1617 0.3905 0.9063 +vn 0.1752 0.8806 0.4403 +vn 0.0859 0.4318 -0.8979 +vn 0.9845 -0.1567 -0.0783 +vn -0.0859 -0.4318 0.8978 +vn -0.9695 0.2320 -0.0783 +vn 1.0000 0.0000 0.0000 +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.9239 -0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.3827 -0.9239 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.3162 0.3162 -0.8944 +vn 0.0000 0.7934 0.6088 +vn 0.0000 0.1305 -0.9914 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.5000 0.8660 +vn 0.6547 0.3780 -0.6547 +vn 0.6547 -0.3780 -0.6547 +vn 0.6547 -0.3780 0.6547 +vn 0.6547 0.7559 0.0000 +vn 0.6547 -0.7559 0.0000 +vn 0.6547 0.3780 0.6547 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.9285 0.3714 +vn 0.0000 0.9285 -0.3714 +vn 0.0000 -0.9900 -0.1407 +vn 0.0000 0.9900 0.1407 +vn -0.1617 -0.3904 0.9063 +vn -0.1617 -0.3905 0.9063 +vn 0.3904 -0.1617 0.9063 +vn 0.3905 -0.1617 0.9063 +vn -0.3904 0.1617 0.9063 +vn -0.3905 0.1617 0.9063 +vn 0.3905 0.1617 0.9063 +vn 0.3904 0.1617 0.9063 +vn 0.3905 0.1618 0.9063 +vn -0.3904 -0.1617 0.9063 +vn -0.3905 -0.1617 0.9063 +vn 0.1617 -0.3905 0.9063 +vn 0.1617 -0.3904 0.9063 +vn 0.1618 -0.3905 0.9063 +vn -0.1617 0.3904 0.9063 +vn -0.1617 0.3905 0.9063 +vn -0.1752 -0.8806 0.4403 +vn -0.0859 -0.4318 -0.8979 +vn -0.9845 0.1567 -0.0783 +vn 0.0859 0.4318 0.8978 +vn 0.9695 -0.2320 -0.0783 +vn 0.8806 -0.1752 0.4403 +vn 0.4318 -0.0859 -0.8979 +vn -0.1567 -0.9845 -0.0783 +vn -0.4318 0.0859 0.8978 +vn 0.2320 0.9695 -0.0783 +vn -0.8806 0.1752 0.4403 +vn -0.4318 0.0859 -0.8979 +vn 0.1567 0.9845 -0.0783 +vn 0.4318 -0.0859 0.8978 +vn -0.2320 -0.9695 -0.0783 +vn 0.7465 0.4988 0.4403 +vn 0.3661 0.2446 -0.8979 +vn 0.5854 -0.8070 -0.0783 +vn -0.3661 -0.2446 0.8978 +vn -0.5215 0.8496 -0.0783 +vn -0.7465 -0.4988 0.4403 +vn -0.3661 -0.2446 -0.8979 +vn -0.5854 0.8070 -0.0783 +vn 0.3661 0.2446 0.8978 +vn 0.5215 -0.8496 -0.0783 +vn 0.4988 -0.7465 0.4403 +vn 0.2446 -0.3661 -0.8978 +vn -0.8070 -0.5854 -0.0783 +vn -0.2446 0.3661 0.8978 +vn 0.8497 0.5215 -0.0783 +vn -0.4988 0.7465 0.4403 +vn -0.2446 0.3661 -0.8979 +vn 0.8070 0.5854 -0.0783 +vn 0.2446 -0.3661 0.8978 +vn -0.8496 -0.5215 -0.0783 +vn 0.4988 0.7465 0.4403 +vn 0.2446 0.3661 -0.8979 +vn 0.8496 -0.5215 -0.0783 +vn -0.2446 -0.3661 0.8978 +vn -0.8069 0.5854 -0.0783 +vn -0.4988 -0.7465 0.4403 +vn -0.2446 -0.3661 -0.8979 +vn -0.8496 0.5215 -0.0783 +vn 0.2446 0.3661 0.8978 +vn 0.8069 -0.5854 -0.0783 +vn 0.7465 -0.4988 0.4403 +vn 0.3661 -0.2446 -0.8978 +vn -0.5215 -0.8496 -0.0783 +vn -0.3661 0.2446 0.8978 +vn 0.5854 0.8069 -0.0783 +vn -0.7465 0.4988 0.4403 +vn -0.3661 0.2446 -0.8978 +vn 0.5215 0.8496 -0.0783 +vn 0.3661 -0.2446 0.8978 +vn -0.5854 -0.8069 -0.0783 +vn 0.8806 0.1752 0.4403 +vn 0.4318 0.0859 -0.8979 +vn 0.2320 -0.9696 -0.0783 +vn -0.4318 -0.0859 0.8978 +vn -0.1567 0.9845 -0.0783 +vn -0.8806 -0.1752 0.4403 +vn -0.4318 -0.0859 -0.8979 +vn -0.2320 0.9696 -0.0783 +vn 0.4318 0.0859 0.8978 +vn 0.1567 -0.9845 -0.0783 +vn 0.1752 -0.8806 0.4403 +vn 0.0859 -0.4318 -0.8979 +vn -0.9696 -0.2320 -0.0783 +vn -0.0859 0.4318 0.8978 +vn 0.9845 0.1567 -0.0783 +vn -0.1752 0.8806 0.4403 +vn -0.0859 0.4318 -0.8979 +vn 0.9696 0.2320 -0.0783 +vn 0.0859 -0.4318 0.8978 +vn -0.9845 -0.1567 -0.0783 +vn 0.0859 0.4318 -0.8978 +vn -0.0859 -0.4318 -0.8978 +vn 0.4318 -0.0859 -0.8978 +vn -0.4318 0.0859 -0.8978 +vn 0.3661 0.2446 -0.8978 +vn -0.3661 -0.2446 -0.8978 +vn -0.2446 0.3661 -0.8978 +vn 0.2446 0.3661 -0.8978 +vn -0.8070 0.5854 -0.0783 +vn 0.8070 -0.5854 -0.0783 +vn 0.5854 0.8070 -0.0783 +vn -0.5854 -0.8070 -0.0783 +vn 0.4318 0.0859 0.8979 +vn 0.0859 -0.4318 -0.8978 +vn -0.7071 -0.7071 0.0057 +vn 0.0000 0.9487 -0.3162 +vn 0.0000 0.4472 -0.8944 +vn 0.0000 0.4226 -0.9063 +vn 0.0000 0.9063 0.4226 +vn -0.7071 0.6409 0.2988 +vn 0.7071 0.6409 0.2988 +vn -0.5000 -0.7849 -0.3660 +vn -0.0000 -0.4226 0.9063 +vn -0.2357 0.2357 0.9428 +vn 0.2357 0.2357 0.9428 +vn -0.2357 -0.2357 -0.9428 +vn -0.2357 -0.2357 0.9428 +vn -0.7082 -0.7060 -0.0004 +vn -0.7085 -0.7057 0.0000 +vn 0.7311 -0.6303 -0.2611 +vn 0.9973 0.0609 0.0399 +vn 0.7430 -0.5190 -0.4226 +vn 0.6721 0.5735 0.4683 +vn 0.6333 0.7150 0.2962 +vn -0.9947 0.0948 0.0393 +vn -0.6721 0.5735 0.4683 +vn -0.6333 0.7150 0.2962 +vn -0.7311 -0.6303 -0.2611 +vn -0.9973 0.0609 0.0399 +vn 0.0000 -0.7779 -0.6284 +vn 0.9947 0.0948 0.0393 +vn 0.0000 0.7690 0.6392 +vn -0.7430 -0.5190 -0.4226 +vn -0.9989 0.0183 0.0441 +vn -0.6840 0.2791 0.6739 +vn 0.6840 0.2791 0.6739 +vn 0.7317 -0.2608 -0.6297 +vn -0.7317 -0.2608 -0.6297 +vn 0.0000 0.3827 0.9239 +vn 0.9989 0.0183 0.0441 +vn 0.7317 0.0000 -0.6816 +vn -0.7317 0.0000 -0.6816 +vn -0.9989 0.0000 0.0477 +vn -0.6841 0.0000 0.7294 +vn 0.6840 -0.0000 0.7294 +vn 0.9989 0.0000 0.0477 +vn 0.0000 -0.1951 0.9808 +vn 0.6770 -0.1436 0.7219 +vn 0.9988 -0.0095 0.0477 +vn 0.7251 0.1344 -0.6754 +vn 0.0000 0.1951 -0.9808 +vn -0.9988 -0.0095 0.0477 +vn -0.6770 -0.1436 0.7219 +vn -0.7251 0.1344 -0.6754 +vn 0.8985 0.3215 -0.2988 +vn 0.9239 -0.3827 -0.0000 +vn -0.4080 0.8627 -0.2988 +vn 0.3468 0.8373 -0.4226 +vn -0.9239 0.3827 0.0000 +vn -0.8985 -0.3215 0.2988 +vn 0.4080 -0.8627 0.2988 +vn -0.3468 -0.8373 0.4226 +vn -0.4080 0.8627 -0.2989 +vn 0.3827 0.9239 0.0000 +vn 0.9239 0.3827 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.3827 0.9239 0.0000 +vn 0.6947 0.6947 0.1866 +vn 0.8431 -0.0945 0.5294 +vn 0.9891 0.0283 0.1448 +vn -0.3812 0.9204 0.0866 +vn -0.0945 0.8431 0.5294 +vn 0.0283 0.9891 0.1448 +vn 0.0945 0.8431 0.5294 +vn 0.3812 0.9204 0.0866 +vn -0.0283 0.9891 0.1448 +vn -0.8431 -0.0945 0.5294 +vn -0.6947 0.6947 0.1866 +vn -0.9891 0.0283 0.1448 +vn -0.9204 -0.3812 0.0866 +vn -0.5000 0.5000 0.7071 +vn 0.2384 0.6572 0.7150 +vn -0.8446 -0.4619 0.2706 +vn -0.6572 -0.2384 0.7150 +vn 0.5345 0.7559 0.3780 +vn 0.4619 0.8446 0.2706 +vn 0.0945 0.8431 0.5293 +vn -0.8431 -0.0945 0.5293 +vn -0.9204 -0.3813 0.0866 +vn -0.7559 -0.5345 0.3780 +vn 0.5000 0.5000 0.7071 +vn 0.9204 -0.3812 0.0866 +vn 0.8446 -0.4619 0.2706 +vn -0.2384 0.6572 0.7150 +vn 0.2706 0.2706 0.9239 +vn 0.6572 -0.2384 0.7150 +vn 0.7559 -0.5345 0.3780 +vn -0.5345 0.7559 0.3780 +vn -0.0945 0.8431 0.5293 +vn 0.8431 -0.0945 0.5293 +vn 0.9204 -0.3813 0.0866 +vn -0.4619 0.8446 0.2706 +vn -0.7311 0.6303 -0.2611 +vn -0.9973 -0.0609 0.0399 +vn -0.7430 0.5190 -0.4226 +vn -0.6721 -0.5735 0.4683 +vn -0.6333 -0.7150 0.2962 +vn 0.9947 -0.0948 0.0393 +vn 0.6721 -0.5735 0.4683 +vn 0.6333 -0.7150 0.2962 +vn 0.7311 0.6303 -0.2611 +vn 0.9973 -0.0609 0.0399 +vn -0.0000 0.7779 -0.6284 +vn -0.9947 -0.0948 0.0393 +vn -0.0000 -0.7690 0.6392 +vn 0.7430 0.5190 -0.4226 +vn 0.9989 -0.0183 0.0441 +vn 0.6840 -0.2791 0.6739 +vn -0.6840 -0.2791 0.6739 +vn -0.7317 0.2608 -0.6297 +vn 0.7317 0.2608 -0.6297 +vn -0.9989 -0.0183 0.0441 +vn 0.6841 -0.0000 0.7294 +vn -0.6840 -0.0000 0.7294 +vn -0.0000 0.1951 0.9808 +vn -0.6770 0.1436 0.7219 +vn -0.9988 0.0095 0.0477 +vn -0.7251 -0.1344 -0.6754 +vn -0.0000 -0.1951 -0.9808 +vn 0.9988 0.0095 0.0477 +vn 0.6770 0.1436 0.7219 +vn 0.7251 -0.1344 -0.6754 +vn -0.8985 -0.3215 -0.2988 +vn 0.4080 -0.8627 -0.2988 +vn -0.3468 -0.8373 -0.4226 +vn 0.8985 0.3215 0.2988 +vn -0.4080 0.8627 0.2988 +vn 0.3468 0.8373 0.4226 +vn 0.4080 -0.8627 -0.2989 +vn -0.6303 -0.7311 -0.2611 +vn 0.0609 -0.9973 0.0399 +vn -0.5190 -0.7430 -0.4226 +vn 0.9239 -0.0000 0.3827 +vn 0.5735 -0.6721 0.4683 +vn 0.7150 -0.6333 0.2962 +vn 0.0948 0.9947 0.0393 +vn 0.5735 0.6721 0.4683 +vn 0.7150 0.6333 0.2962 +vn -0.6303 0.7311 -0.2611 +vn 0.0609 0.9973 0.0399 +vn -0.9239 -0.0000 -0.3827 +vn -0.7779 -0.0000 -0.6284 +vn 0.0948 -0.9947 0.0393 +vn 0.7690 -0.0000 0.6392 +vn -0.5190 0.7430 -0.4226 +vn 0.0183 0.9989 0.0441 +vn 0.2791 0.6841 0.6739 +vn 0.2791 -0.6840 0.6739 +vn -0.2608 -0.7317 -0.6297 +vn -0.2608 0.7317 -0.6297 +vn 0.3827 -0.0000 0.9239 +vn 0.0183 -0.9989 0.0441 +vn -0.3827 -0.0000 -0.9239 +vn 0.0000 -0.7317 -0.6816 +vn 0.0000 0.7317 -0.6816 +vn 0.0000 0.9989 0.0477 +vn 0.0000 0.6841 0.7294 +vn 0.0000 -0.6840 0.7294 +vn 0.0000 -0.9989 0.0477 +vn -0.1951 -0.0000 0.9808 +vn -0.1436 -0.6770 0.7219 +vn -0.0095 -0.9988 0.0477 +vn 0.1344 -0.7251 -0.6754 +vn 0.1951 -0.0000 -0.9808 +vn -0.0095 0.9988 0.0477 +vn -0.1436 0.6770 0.7219 +vn 0.1344 0.7251 -0.6754 +vn 0.3215 -0.8985 -0.2988 +vn 0.8627 0.4080 -0.2988 +vn 0.8373 -0.3468 -0.4226 +vn -0.3215 0.8985 0.2988 +vn -0.8627 -0.4080 0.2988 +vn -0.8373 0.3468 0.4226 +vn 0.8627 0.4080 -0.2989 +vn -0.3215 0.8985 0.2989 +vn 0.6303 0.7311 -0.2611 +vn -0.0609 0.9973 0.0399 +vn 0.5190 0.7430 -0.4226 +vn -0.9239 0.0000 0.3827 +vn -0.5735 0.6721 0.4683 +vn -0.7150 0.6333 0.2962 +vn -0.0948 -0.9947 0.0393 +vn -0.5735 -0.6721 0.4683 +vn -0.7150 -0.6333 0.2962 +vn 0.6303 -0.7311 -0.2611 +vn -0.0609 -0.9973 0.0399 +vn 0.9239 0.0000 -0.3827 +vn 0.7779 0.0000 -0.6284 +vn -0.0948 0.9947 0.0393 +vn -0.7690 0.0000 0.6392 +vn 0.5190 -0.7430 -0.4226 +vn -0.0183 -0.9989 0.0441 +vn -0.2791 -0.6841 0.6739 +vn -0.2791 0.6840 0.6739 +vn 0.2608 0.7317 -0.6297 +vn 0.2608 -0.7317 -0.6297 +vn -0.3827 0.0000 0.9239 +vn -0.0183 0.9989 0.0441 +vn 0.3827 0.0000 -0.9239 +vn -0.0000 -0.6841 0.7294 +vn -0.0000 0.6840 0.7294 +vn 0.1951 0.0000 0.9808 +vn 0.1436 0.6770 0.7219 +vn 0.0095 0.9988 0.0477 +vn -0.1344 0.7251 -0.6754 +vn -0.1951 0.0000 -0.9808 +vn 0.0095 -0.9988 0.0477 +vn 0.1436 -0.6770 0.7219 +vn -0.1344 -0.7251 -0.6754 +vn -0.3215 0.8985 -0.2988 +vn -0.8627 -0.4080 -0.2988 +vn -0.8373 0.3468 -0.4226 +vn 0.3215 -0.8985 0.2988 +vn 0.8373 -0.3468 0.4226 +vn 0.8627 0.4080 0.2988 +vn -0.8627 -0.4080 -0.2989 +vn 0.3215 -0.8985 0.2989 +vn 0.0712 -0.9627 -0.2611 +vn 0.7483 -0.6622 0.0399 +vn 0.1584 -0.8924 -0.4226 +vn 0.6533 0.6533 0.3827 +vn 0.8808 -0.0697 0.4683 +vn 0.9534 0.0578 0.2962 +vn -0.6364 0.7704 0.0393 +vn -0.0697 0.8808 0.4683 +vn 0.0578 0.9534 0.2962 +vn -0.9627 0.0713 -0.2611 +vn -0.6622 0.7483 0.0399 +vn -0.6533 -0.6533 -0.3827 +vn -0.5501 -0.5501 -0.6284 +vn 0.7704 -0.6363 0.0393 +vn 0.5438 0.5438 0.6392 +vn -0.8924 0.1584 -0.4226 +vn -0.6934 0.7192 0.0441 +vn -0.2863 0.6811 0.6739 +vn 0.6811 -0.2863 0.6739 +vn 0.3330 -0.7018 -0.6297 +vn -0.7018 0.3330 -0.6297 +vn 0.7192 -0.6934 0.0441 +vn -0.2706 -0.2706 -0.9239 +vn 0.5174 -0.5174 -0.6816 +vn -0.5174 0.5174 -0.6816 +vn -0.7063 0.7063 0.0477 +vn -0.4837 0.4837 0.7294 +vn 0.4837 -0.4837 0.7294 +vn 0.7063 -0.7063 0.0477 +vn -0.1379 -0.1379 0.9808 +vn 0.3772 -0.5802 0.7219 +vn 0.6996 -0.7130 0.0477 +vn 0.6077 -0.4177 -0.6754 +vn 0.1379 0.1380 -0.9808 +vn -0.7130 0.6996 0.0477 +vn -0.5802 0.3772 0.7219 +vn -0.4177 0.6077 -0.6754 +vn 0.8627 -0.4080 -0.2988 +vn 0.3215 0.8985 -0.2988 +vn 0.8373 0.3468 -0.4226 +vn -0.8627 0.4080 0.2988 +vn -0.3215 -0.8985 0.2988 +vn -0.8373 -0.3468 0.4226 +vn -0.8627 0.4080 0.2989 +vn 0.3215 0.8985 -0.2989 +vn -0.0712 0.9627 -0.2611 +vn -0.7483 0.6622 0.0399 +vn -0.1584 0.8924 -0.4226 +vn -0.6533 -0.6533 0.3827 +vn -0.8808 0.0697 0.4683 +vn -0.9534 -0.0578 0.2962 +vn 0.6364 -0.7704 0.0393 +vn 0.0697 -0.8808 0.4683 +vn -0.0578 -0.9534 0.2962 +vn 0.9627 -0.0712 -0.2611 +vn 0.6622 -0.7483 0.0399 +vn 0.6533 0.6533 -0.3827 +vn 0.5501 0.5501 -0.6284 +vn -0.7704 0.6363 0.0393 +vn -0.5438 -0.5438 0.6392 +vn 0.8924 -0.1584 -0.4226 +vn 0.6934 -0.7192 0.0441 +vn 0.2863 -0.6811 0.6739 +vn -0.6811 0.2863 0.6739 +vn -0.3330 0.7018 -0.6297 +vn 0.7018 -0.3330 -0.6297 +vn -0.2706 -0.2706 0.9239 +vn -0.7192 0.6934 0.0441 +vn 0.2706 0.2706 -0.9239 +vn 0.1379 0.1379 0.9808 +vn -0.3772 0.5802 0.7219 +vn -0.6996 0.7130 0.0477 +vn -0.6077 0.4177 -0.6754 +vn -0.1379 -0.1380 -0.9808 +vn 0.7130 -0.6996 0.0477 +vn 0.5802 -0.3772 0.7219 +vn 0.4177 -0.6077 -0.6754 +vn -0.8627 0.4080 -0.2988 +vn -0.3215 -0.8985 -0.2988 +vn -0.8373 -0.3468 -0.4226 +vn 0.8627 -0.4080 0.2988 +vn 0.3215 0.8985 0.2988 +vn 0.8373 0.3468 0.4226 +vn 0.8627 -0.4080 0.2989 +vn -0.9627 -0.0712 -0.2611 +vn -0.6622 -0.7483 0.0399 +vn -0.8924 -0.1584 -0.4226 +vn 0.6533 -0.6533 0.3827 +vn -0.0697 -0.8808 0.4683 +vn 0.0578 -0.9534 0.2962 +vn 0.7704 0.6364 0.0393 +vn 0.8808 0.0697 0.4683 +vn 0.9534 -0.0578 0.2962 +vn 0.0713 0.9627 -0.2611 +vn 0.7483 0.6622 0.0399 +vn -0.6533 0.6533 -0.3827 +vn -0.5501 0.5501 -0.6284 +vn -0.6363 -0.7704 0.0393 +vn 0.5438 -0.5438 0.6392 +vn 0.1584 0.8924 -0.4226 +vn 0.7192 0.6934 0.0441 +vn 0.6811 0.2863 0.6739 +vn -0.2863 -0.6811 0.6739 +vn -0.7018 -0.3330 -0.6297 +vn 0.3330 0.7018 -0.6297 +vn 0.2706 -0.2706 0.9239 +vn -0.6934 -0.7192 0.0441 +vn -0.2706 0.2706 -0.9239 +vn -0.5174 -0.5174 -0.6816 +vn 0.5174 0.5174 -0.6816 +vn 0.7063 0.7063 0.0477 +vn 0.4837 0.4837 0.7294 +vn -0.4837 -0.4837 0.7294 +vn -0.7063 -0.7063 0.0477 +vn -0.1379 0.1379 0.9808 +vn -0.5802 -0.3772 0.7219 +vn -0.7130 -0.6996 0.0477 +vn -0.4177 -0.6077 -0.6754 +vn 0.1379 -0.1380 -0.9808 +vn 0.6996 0.7130 0.0477 +vn 0.3772 0.5802 0.7219 +vn 0.6077 0.4177 -0.6754 +vn -0.4080 -0.8627 -0.2988 +vn 0.8985 -0.3215 -0.2988 +vn 0.3468 -0.8373 -0.4226 +vn 0.4080 0.8627 0.2988 +vn -0.8985 0.3215 0.2988 +vn -0.3468 0.8373 0.4226 +vn 0.4081 0.8627 0.2989 +vn 0.9627 0.0712 -0.2611 +vn 0.6622 0.7483 0.0399 +vn 0.8924 0.1584 -0.4226 +vn -0.6533 0.6533 0.3827 +vn 0.0697 0.8808 0.4683 +vn -0.0578 0.9534 0.2962 +vn -0.7704 -0.6364 0.0393 +vn -0.8808 -0.0697 0.4683 +vn -0.9534 0.0578 0.2962 +vn -0.0713 -0.9627 -0.2611 +vn -0.7483 -0.6622 0.0399 +vn 0.6533 -0.6533 -0.3827 +vn 0.5501 -0.5501 -0.6284 +vn 0.6363 0.7704 0.0393 +vn -0.5438 0.5438 0.6392 +vn -0.1584 -0.8924 -0.4226 +vn -0.7192 -0.6934 0.0441 +vn -0.6811 -0.2863 0.6739 +vn 0.2863 0.6811 0.6739 +vn 0.7018 0.3330 -0.6297 +vn -0.3330 -0.7018 -0.6297 +vn -0.2706 0.2706 0.9239 +vn 0.6934 0.7192 0.0441 +vn 0.2706 -0.2706 -0.9239 +vn 0.1379 -0.1379 0.9808 +vn 0.5802 0.3772 0.7219 +vn 0.7130 0.6996 0.0477 +vn 0.4177 0.6077 -0.6754 +vn -0.1379 0.1380 -0.9808 +vn -0.6996 -0.7130 0.0477 +vn -0.3772 -0.5802 0.7219 +vn -0.6077 -0.4177 -0.6754 +vn 0.4080 0.8627 -0.2988 +vn -0.8985 0.3215 -0.2988 +vn -0.3468 0.8373 -0.4226 +vn -0.4080 -0.8627 0.2988 +vn 0.3468 -0.8373 0.4226 +vn 0.8985 -0.3215 0.2988 +vn -0.4080 -0.8627 0.2989 +vn 0.4080 0.8627 -0.2989 +vn -0.8985 0.3215 -0.2989 +vn 0.6794 0.7194 0.1448 +vn -0.6794 0.7194 0.1448 +vn 0.9204 0.3812 0.0866 +vn 0.0000 0.9824 0.1866 +vn -0.9239 0.2706 0.2706 +vn -0.6630 0.5294 0.5294 +vn 0.9239 0.2706 0.2706 +vn 0.6630 0.5294 0.5294 +vn 0.6333 0.2962 0.7150 +vn -0.9125 0.1566 0.3780 +vn -0.6333 0.2962 0.7150 +vn 0.9125 0.1566 0.3780 +vn -0.9204 0.3812 0.0866 +vn 0.0000 -0.9063 -0.4226 +vn -0.8660 0.4532 0.2113 +vn 0.2588 0.8754 0.4082 +vn 0.5000 0.7849 0.3660 +vn 0.5000 -0.7849 -0.3660 +vn -0.8660 -0.4532 -0.2113 +vn 0.8660 0.4532 0.2113 +vn -0.5000 0.7849 0.3660 +vn -0.2588 0.8754 0.4082 +vn 0.7071 -0.6409 -0.2988 +vn 0.9659 -0.2346 -0.1094 +vn 0.8660 -0.4532 -0.2113 +vn 0.0000 -0.8944 0.4472 +vn 0.3423 -0.8263 0.4472 +vn -0.3423 -0.8263 0.4472 +vn -0.6325 -0.6325 0.4472 +vn -0.8263 -0.3423 0.4472 +vn -0.8944 -0.0000 0.4472 +vn -0.8263 0.3423 0.4472 +vn -0.6325 0.6325 0.4472 +vn -0.3423 0.8263 0.4472 +vn 0.0000 0.8944 0.4472 +vn 0.3423 0.8263 0.4472 +vn 0.6325 0.6325 0.4472 +vn 0.8263 0.3423 0.4472 +vn 0.8944 0.0000 0.4472 +vn 0.8263 -0.3423 0.4472 +vn 0.6325 -0.6325 0.4472 +vn -0.3162 0.3162 0.8944 +vn -0.4132 0.1711 0.8944 +vn 0.4132 -0.1711 0.8944 +vn 0.4472 -0.0000 0.8944 +vn -0.4472 -0.0000 0.8944 +vn 0.4132 0.1711 0.8944 +vn -0.4132 -0.1711 0.8944 +vn 0.3162 0.3162 0.8944 +vn -0.3162 -0.3162 0.8944 +vn 0.1711 0.4132 0.8944 +vn -0.1711 -0.4132 0.8944 +vn -0.0000 0.4472 0.8944 +vn 0.0000 -0.4472 0.8944 +vn 0.1711 -0.4132 0.8944 +vn -0.1711 0.4132 0.8944 +vn 0.3162 -0.3162 0.8944 +s off +f 1/1/1 2/2/1 3/3/1 +f 4/4/1 5/5/1 6/6/1 +f 7/7/1 8/8/1 9/9/1 +f 10/10/1 11/11/1 12/12/1 +f 13/13/1 14/14/1 15/15/1 +f 9/9/1 12/12/1 5/5/1 +f 16/16/1 1/1/1 13/13/1 +f 9/17/2 17/18/2 7/19/2 +f 5/20/3 18/21/3 9/22/3 +f 16/23/4 19/24/4 2/25/4 +f 2/26/3 20/27/3 6/28/3 +f 21/29/1 22/30/1 23/31/1 +f 24/32/1 18/21/1 25/33/1 +f 19/24/1 26/34/1 20/27/1 +f 27/35/1 28/36/1 29/37/1 +f 8/38/3 23/31/3 10/39/3 +f 30/40/4 21/29/4 8/41/4 +f 31/42/5 32/43/5 30/44/5 +f 6/45/2 26/34/2 4/46/2 +f 7/47/5 24/32/5 33/48/5 +f 33/49/4 25/33/4 5/50/4 +f 4/51/5 34/52/5 16/53/5 +f 10/54/2 22/30/2 31/55/2 +f 1/56/5 27/35/5 35/57/5 +f 35/58/4 29/37/4 14/59/4 +f 14/60/3 28/36/3 3/61/3 +f 3/62/2 36/63/2 1/64/2 +f 37/65/6 38/66/6 39/67/6 +f 40/68/6 41/69/6 42/70/6 +f 43/71/6 44/72/6 45/73/6 +f 46/74/6 47/75/6 44/72/6 +f 48/76/7 39/67/7 49/77/7 +f 50/78/6 41/69/6 38/66/6 +f 43/71/6 51/79/6 40/68/6 +f 52/80/6 49/81/6 47/75/6 +f 53/82/6 54/83/6 55/84/6 +f 56/85/6 57/86/6 58/87/6 +f 56/85/6 59/88/6 60/89/6 +f 61/90/7 59/88/7 62/91/7 +f 63/92/6 64/93/6 61/94/6 +f 65/95/7 66/96/7 63/92/7 +f 65/95/7 67/97/7 68/98/7 +f 69/99/6 70/100/6 67/97/6 +f 71/101/7 57/86/7 70/100/7 +f 72/102/8 73/103/8 74/104/8 +f 75/105/9 73/103/9 76/106/9 +f 77/107/10 76/106/10 72/102/10 +f 77/108/11 74/104/11 78/109/11 +f 78/110/12 73/103/12 79/111/12 +f 80/112/3 81/113/3 82/114/3 +f 83/115/3 84/116/3 85/117/3 +f 82/114/3 86/118/3 87/119/3 +f 88/120/3 86/121/3 89/122/3 +f 88/120/3 90/123/3 91/124/3 +f 91/125/3 92/126/3 93/127/3 +f 93/127/3 94/128/3 95/129/3 +f 96/130/3 94/131/3 97/132/3 +f 96/130/3 98/133/3 80/112/3 +f 99/134/3 100/135/3 101/136/3 +f 102/137/3 103/138/3 99/139/3 +f 104/140/3 102/141/3 105/142/3 +f 106/143/3 105/144/3 107/145/3 +f 108/146/3 107/147/3 109/148/3 +f 110/149/3 108/150/3 109/151/3 +f 111/152/3 112/153/3 110/154/3 +f 101/155/3 113/156/3 111/157/3 +f 114/158/1 115/159/1 116/160/1 +f 13/13/3 117/161/3 11/11/3 +f 15/15/2 118/162/2 13/13/2 +f 12/12/5 119/163/5 15/15/5 +f 11/11/4 120/164/4 12/12/4 +f 121/165/13 122/166/13 123/167/13 +f 123/168/14 124/169/14 114/170/14 +f 122/171/15 125/172/15 115/173/15 +f 126/174/16 127/175/16 128/176/16 +f 129/177/17 115/173/17 124/169/17 +f 130/178/18 116/179/18 125/172/18 +f 131/180/19 128/176/19 132/181/19 +f 133/182/20 114/170/20 127/175/20 +f 134/183/3 135/184/3 136/185/3 +f 137/186/5 138/187/5 139/188/5 +f 134/189/21 140/190/21 141/191/21 +f 135/184/22 139/192/22 136/193/22 +f 141/191/23 137/186/23 135/184/23 +f 136/194/24 138/195/24 134/189/24 +f 142/196/3 143/197/3 144/198/3 +f 145/199/5 146/200/5 147/201/5 +f 142/202/22 148/203/22 149/204/22 +f 143/197/21 147/205/21 144/206/21 +f 149/204/24 145/199/24 143/197/24 +f 144/206/23 146/207/23 142/208/23 +f 150/209/3 151/210/3 152/211/3 +f 153/212/5 154/213/5 155/214/5 +f 156/215/24 154/213/24 151/210/24 +f 152/211/23 153/216/23 150/217/23 +f 151/210/21 157/218/21 152/211/21 +f 150/219/22 155/220/22 156/215/22 +f 158/221/3 159/222/3 160/223/3 +f 161/224/5 162/225/5 163/226/5 +f 164/227/23 162/225/23 159/222/23 +f 160/223/24 161/228/24 158/229/24 +f 159/222/22 165/230/22 160/223/22 +f 158/229/21 163/231/21 164/232/21 +f 166/233/3 167/234/3 168/235/3 +f 169/236/25 170/237/25 171/238/25 +f 166/239/21 172/240/21 173/241/21 +f 167/234/22 171/238/22 168/242/22 +f 173/241/23 169/236/23 167/234/23 +f 166/239/24 171/243/24 170/244/24 +f 174/245/26 175/246/26 176/247/26 +f 177/248/13 178/249/13 179/250/13 +f 178/251/16 180/252/16 175/246/16 +f 181/253/27 182/254/27 180/252/27 +f 176/255/1 175/256/1 180/257/1 +f 183/258/2 184/259/2 185/260/2 +f 183/258/13 186/261/13 187/262/13 +f 184/259/1 188/263/1 185/260/1 +f 189/264/5 190/265/5 191/266/5 +f 192/267/13 193/268/13 194/269/13 +f 195/270/1 191/266/1 196/271/1 +f 194/272/4 189/264/4 195/273/4 +f 196/274/2 190/265/2 192/275/2 +f 197/276/2 198/277/2 199/278/2 +f 200/279/28 201/280/28 202/281/28 +f 203/282/29 204/283/29 205/284/29 +f 206/285/30 205/284/30 198/277/30 +f 207/286/31 199/287/31 201/280/31 +f 208/288/4 202/281/4 204/283/4 +f 199/289/13 198/290/13 205/291/13 +f 209/292/4 210/293/4 211/294/4 +f 212/295/2 213/296/2 214/297/2 +f 215/298/28 216/299/28 209/300/28 +f 211/301/29 217/302/29 218/303/29 +f 218/304/30 219/305/30 212/306/30 +f 214/307/31 220/308/31 215/309/31 +f 219/310/1 221/311/1 213/296/1 +f 216/299/1 222/312/1 223/313/1 +f 210/314/1 224/315/1 217/302/1 +f 219/305/1 224/315/1 225/316/1 +f 213/317/1 222/312/1 220/308/1 +f 216/318/1 226/319/1 210/293/1 +f 224/315/30 227/320/30 225/316/30 +f 221/321/31 228/322/31 222/312/31 +f 223/313/4 229/323/4 226/319/4 +f 225/316/2 230/324/2 221/311/2 +f 222/312/28 231/325/28 223/313/28 +f 226/319/29 232/326/29 224/315/29 +f 228/322/13 233/327/13 231/325/13 +f 231/325/13 234/328/13 229/323/13 +f 232/326/13 234/329/13 235/330/13 +f 232/326/13 236/331/13 227/320/13 +f 227/320/13 237/332/13 230/324/13 +f 228/322/13 237/333/13 238/334/13 +f 237/333/31 239/335/31 238/334/31 +f 233/336/4 240/337/4 234/328/4 +f 236/338/2 241/339/2 237/332/2 +f 238/340/28 242/341/28 233/327/28 +f 234/329/29 243/342/29 235/330/29 +f 235/343/30 244/344/30 236/331/30 +f 239/345/1 245/346/1 242/341/1 +f 242/347/1 246/348/1 240/337/1 +f 243/342/1 246/348/1 247/349/1 +f 243/350/1 248/351/1 244/344/1 +f 244/352/1 249/353/1 241/339/1 +f 239/335/1 249/354/1 250/355/1 +f 245/346/4 251/356/4 246/348/4 +f 248/351/2 252/357/2 249/353/2 +f 250/355/28 253/358/28 245/346/28 +f 246/348/29 254/359/29 247/349/29 +f 247/349/30 255/360/30 248/351/30 +f 249/354/31 256/361/31 250/355/31 +f 251/356/32 257/362/32 254/359/32 +f 254/359/33 258/363/33 255/360/33 +f 256/361/34 259/364/34 260/365/34 +f 253/358/35 261/366/35 251/356/35 +f 255/360/36 259/367/36 252/357/36 +f 253/358/37 260/368/37 262/369/37 +f 259/370/13 258/371/13 257/372/13 +f 263/373/38 264/374/38 265/375/38 +f 265/376/1 266/377/1 267/378/1 +f 267/378/39 268/379/39 269/380/39 +f 263/373/13 268/379/13 270/381/13 +f 271/382/38 272/383/38 273/384/38 +f 274/385/13 275/386/13 271/387/13 +f 276/388/1 272/383/1 277/389/1 +f 277/389/40 275/386/40 278/390/40 +f 274/385/41 273/391/41 276/392/41 +f 279/393/1 280/394/1 281/395/1 +f 282/396/42 280/397/42 283/398/42 +f 284/399/13 285/400/13 286/401/13 +f 279/393/43 287/402/43 288/403/43 +f 285/400/13 289/404/13 290/405/13 +f 291/406/44 292/407/44 280/397/44 +f 288/408/13 282/409/13 293/410/13 +f 294/411/40 288/403/40 293/410/40 +f 294/411/1 283/412/1 279/413/1 +f 284/414/13 286/415/13 295/416/13 +f 296/417/40 284/399/40 295/416/40 +f 296/417/1 297/418/1 298/419/1 +f 299/420/5 293/410/5 300/421/5 +f 301/422/3 283/423/3 302/424/3 +f 303/425/13 286/415/13 304/426/13 +f 305/427/1 296/417/1 306/428/1 +f 302/429/1 294/411/1 299/420/1 +f 306/428/5 295/416/5 303/425/5 +f 304/426/3 297/430/3 305/431/3 +f 300/421/13 282/409/13 301/422/13 +f 286/401/42 307/432/42 297/433/42 +f 288/403/13 291/406/13 282/396/13 +f 308/434/4 309/435/4 310/436/4 +f 311/437/45 289/404/45 312/438/45 +f 307/439/1 313/440/1 311/437/1 +f 280/394/1 314/441/1 281/395/1 +f 285/400/44 315/442/44 307/432/44 +f 291/406/13 316/443/13 317/444/13 +f 281/395/45 316/443/45 287/402/45 +f 298/445/1 307/439/1 311/437/1 +f 298/445/43 312/438/43 284/399/43 +f 318/446/30 319/447/30 320/448/30 +f 321/449/3 322/450/3 308/434/3 +f 323/451/2 324/452/2 319/447/2 +f 325/453/2 326/454/2 321/449/2 +f 327/455/31 328/456/31 324/457/31 +f 310/458/5 329/459/5 325/453/5 +f 330/460/28 331/461/28 328/456/28 +f 332/462/13 330/463/13 327/464/13 +f 332/465/4 333/466/4 331/461/4 +f 334/467/29 320/448/29 333/466/29 +f 331/468/1 333/469/1 319/470/1 +f 329/459/21 335/471/21 326/454/21 +f 326/472/3 335/471/3 322/473/3 +f 309/474/5 336/475/5 329/476/5 +f 309/474/5 337/477/5 336/475/5 +f 338/478/2 339/479/2 337/480/2 +f 336/475/13 340/481/13 335/471/13 +f 335/471/3 341/482/3 322/473/3 +f 322/473/1 338/483/1 309/484/1 +f 337/480/13 342/485/13 340/486/13 +f 341/487/1 343/488/1 338/489/1 +f 342/485/38 341/482/38 340/481/38 +f 344/490/43 345/491/43 346/492/43 +f 337/480/13 344/490/13 342/485/13 +f 342/485/4 346/492/4 343/488/4 +f 343/488/1 347/493/1 338/489/1 +f 348/494/13 349/495/13 350/496/13 +f 347/493/1 345/491/1 351/497/1 +f 347/498/42 348/499/42 339/479/42 +f 339/479/13 350/500/13 344/490/13 +f 349/495/40 345/491/40 350/500/40 +f 352/501/1 353/502/1 351/503/1 +f 351/503/1 345/504/1 352/501/1 +f 353/505/3 354/506/3 355/507/3 +f 351/508/3 356/509/3 348/494/3 +f 348/494/13 357/510/13 349/495/13 +f 349/495/5 358/511/5 352/501/5 +f 357/512/5 359/513/5 358/514/5 +f 355/507/21 357/510/21 356/509/21 +f 353/505/3 355/507/3 356/515/3 +f 358/514/4 360/516/4 353/517/4 +f 359/513/5 361/518/5 358/514/5 +f 355/507/2 362/519/2 359/513/2 +f 363/520/46 364/521/46 365/522/46 +f 366/523/46 367/524/46 368/525/46 +f 369/526/46 370/527/46 371/528/46 +f 372/529/46 373/530/46 370/527/46 +f 374/531/47 365/522/47 375/532/47 +f 376/533/46 367/524/46 364/521/46 +f 366/523/46 371/528/46 377/534/46 +f 378/535/46 375/536/46 373/530/46 +f 379/537/46 380/538/46 381/539/46 +f 382/540/46 383/541/46 384/542/46 +f 382/540/46 385/543/46 386/544/46 +f 387/545/47 385/543/47 388/546/47 +f 389/547/46 390/548/46 387/549/46 +f 389/547/47 391/550/47 392/551/47 +f 393/552/47 394/553/47 391/550/47 +f 395/554/46 396/555/46 394/553/46 +f 397/556/47 383/541/47 396/555/47 +f 398/557/48 399/558/48 400/559/48 +f 401/560/48 402/561/48 403/562/48 +f 404/563/48 405/564/48 406/565/48 +f 407/566/48 408/567/48 405/564/48 +f 409/568/49 400/559/49 410/569/49 +f 411/570/48 402/561/48 399/558/48 +f 404/563/48 412/571/48 401/560/48 +f 413/572/48 410/573/48 408/567/48 +f 414/574/48 415/575/48 416/576/48 +f 417/577/48 418/578/48 419/579/48 +f 417/577/48 420/580/48 421/581/48 +f 422/582/49 420/580/49 423/583/49 +f 424/584/48 425/585/48 422/586/48 +f 426/587/49 427/588/49 424/584/49 +f 426/587/49 428/589/49 429/590/49 +f 430/591/48 431/592/48 428/589/48 +f 432/593/49 418/578/49 431/592/49 +f 433/594/50 434/595/50 435/596/50 +f 436/597/50 437/598/50 438/599/50 +f 439/600/50 440/601/50 441/602/50 +f 442/603/50 443/604/50 440/601/50 +f 444/605/51 435/596/51 445/606/51 +f 446/607/50 437/598/50 434/595/50 +f 439/600/50 447/608/50 436/597/50 +f 448/609/50 445/610/50 443/604/50 +f 449/611/50 450/612/50 451/613/50 +f 452/614/50 453/615/50 454/616/50 +f 452/614/50 455/617/50 456/618/50 +f 457/619/51 455/617/51 458/620/51 +f 459/621/50 460/622/50 457/623/50 +f 461/624/51 462/625/51 459/621/51 +f 461/624/51 463/626/51 464/627/51 +f 465/628/50 466/629/50 463/626/50 +f 467/630/51 453/615/51 466/629/51 +f 468/631/52 469/632/52 470/633/52 +f 471/634/53 472/635/53 473/636/53 +f 474/637/53 475/638/53 476/639/53 +f 477/640/52 478/641/52 475/638/52 +f 479/642/52 470/633/52 480/643/52 +f 481/644/53 472/635/53 469/632/53 +f 474/637/53 482/645/53 471/634/53 +f 483/646/53 480/647/53 478/641/53 +f 484/648/52 485/649/52 486/650/52 +f 487/651/52 488/652/52 489/653/52 +f 487/651/52 490/654/52 491/655/52 +f 492/656/52 490/654/52 493/657/52 +f 494/658/53 495/659/53 492/660/53 +f 496/661/53 497/662/53 494/658/53 +f 496/661/52 498/663/52 499/664/52 +f 500/665/53 501/666/53 498/663/53 +f 502/667/54 488/652/54 501/666/54 +f 503/668/55 504/669/55 505/670/55 +f 506/671/55 507/672/55 508/673/55 +f 509/674/56 510/675/56 511/676/56 +f 512/677/55 513/678/55 510/675/55 +f 514/679/56 505/670/56 515/680/56 +f 516/681/55 507/672/55 504/669/55 +f 509/674/55 517/682/55 506/671/55 +f 518/683/55 515/684/55 513/678/55 +f 519/685/56 520/686/56 521/687/56 +f 522/688/56 523/689/56 524/690/56 +f 522/688/55 525/691/55 526/692/55 +f 527/693/56 525/691/56 528/694/56 +f 529/695/55 530/696/55 527/697/55 +f 531/698/56 532/699/56 529/695/56 +f 531/698/56 533/700/56 534/701/56 +f 535/702/55 536/703/55 533/700/55 +f 537/704/56 523/689/56 536/703/56 +f 538/705/57 539/706/57 540/707/57 +f 541/708/58 542/709/58 543/710/58 +f 544/711/57 545/712/57 546/713/57 +f 547/714/58 548/715/58 545/712/58 +f 549/716/57 540/707/57 550/717/57 +f 551/718/58 542/709/58 539/706/58 +f 541/708/58 546/713/58 552/719/58 +f 553/720/58 550/721/58 548/715/58 +f 554/722/57 555/723/57 556/724/57 +f 557/725/57 558/726/57 559/727/57 +f 557/725/58 560/728/58 561/729/58 +f 562/730/57 560/728/57 563/731/57 +f 564/732/58 565/733/58 562/734/58 +f 566/735/57 567/736/57 564/732/57 +f 566/735/57 568/737/57 569/738/57 +f 570/739/58 571/740/58 568/737/58 +f 572/741/59 558/726/59 571/740/59 +f 573/742/60 574/743/60 575/744/60 +f 576/745/60 577/746/60 578/747/60 +f 579/748/60 580/749/60 581/750/60 +f 582/751/60 580/749/60 583/752/60 +f 584/753/61 575/744/61 585/754/61 +f 586/755/60 577/746/60 574/743/60 +f 579/748/60 587/756/60 576/745/60 +f 582/751/60 585/757/60 588/758/60 +f 589/759/61 590/760/61 591/761/61 +f 592/762/61 593/763/61 594/764/61 +f 592/762/61 595/765/61 596/766/61 +f 597/767/61 595/765/61 598/768/61 +f 599/769/60 600/770/60 597/771/60 +f 601/772/60 602/773/60 599/769/60 +f 601/772/61 603/774/61 604/775/61 +f 605/776/61 606/777/61 603/774/61 +f 607/778/61 593/763/61 606/777/61 +f 608/779/62 609/780/62 610/781/62 +f 611/782/63 610/781/63 609/780/63 +f 612/783/64 609/780/64 613/784/64 +f 612/785/65 608/779/65 614/786/65 +f 614/787/66 610/781/66 615/788/66 +f 616/789/67 617/790/67 618/791/67 +f 619/792/68 617/790/68 620/793/68 +f 621/794/69 620/793/69 616/789/69 +f 621/795/70 618/791/70 622/796/70 +f 622/797/71 617/790/71 623/798/71 +f 624/799/72 625/800/72 626/801/72 +f 627/802/73 626/801/73 625/800/73 +f 628/803/74 625/800/74 629/804/74 +f 628/805/75 624/799/75 630/806/75 +f 630/807/76 626/801/76 631/808/76 +f 632/809/77 633/810/77 634/811/77 +f 635/812/78 634/811/78 633/810/78 +f 636/813/79 633/810/79 637/814/79 +f 636/815/80 632/809/80 638/816/80 +f 638/817/81 634/811/81 639/818/81 +f 640/819/82 641/820/82 642/821/82 +f 643/822/83 642/821/83 641/820/83 +f 644/823/84 641/820/84 645/824/84 +f 644/825/85 640/819/85 646/826/85 +f 646/827/86 642/821/86 647/828/86 +f 648/829/87 649/830/87 650/831/87 +f 651/832/88 649/830/88 652/833/88 +f 653/834/89 652/833/89 648/829/89 +f 653/835/90 650/831/90 654/836/90 +f 654/837/91 649/830/91 655/838/91 +f 656/839/92 657/840/92 658/841/92 +f 659/842/93 658/841/93 657/840/93 +f 660/843/94 657/840/94 661/844/94 +f 660/845/95 656/839/95 662/846/95 +f 662/847/96 658/841/96 663/848/96 +f 664/849/97 665/850/97 666/851/97 +f 667/852/98 665/850/98 668/853/98 +f 669/854/99 668/853/99 664/849/99 +f 669/855/100 666/851/100 670/856/100 +f 670/857/101 665/850/101 671/858/101 +f 672/859/102 673/860/102 674/861/102 +f 675/862/103 674/861/103 673/860/103 +f 676/863/104 673/860/104 677/864/104 +f 676/865/105 672/859/105 678/866/105 +f 678/867/106 674/861/106 679/868/106 +f 680/869/107 681/870/107 682/871/107 +f 683/872/108 682/871/108 681/870/108 +f 684/873/109 681/870/109 685/874/109 +f 684/875/110 680/869/110 686/876/110 +f 686/877/111 682/871/111 687/878/111 +f 688/879/112 689/880/112 690/881/112 +f 691/882/113 690/881/113 689/880/113 +f 692/883/114 689/880/114 693/884/114 +f 692/885/115 688/879/115 694/886/115 +f 694/887/116 690/881/116 695/888/116 +f 696/889/117 697/890/117 698/891/117 +f 699/892/118 698/891/118 697/890/118 +f 700/893/119 697/890/119 701/894/119 +f 700/895/120 696/889/120 702/896/120 +f 702/897/121 698/891/121 703/898/121 +f 704/899/122 705/900/122 706/901/122 +f 707/902/123 706/901/123 705/900/123 +f 708/903/124 705/900/124 709/904/124 +f 708/905/125 704/899/125 710/906/125 +f 710/907/126 706/901/126 711/908/126 +f 712/909/127 713/910/127 714/911/127 +f 715/912/128 713/910/128 716/913/128 +f 717/914/129 716/913/129 712/909/129 +f 717/915/130 714/911/130 718/916/130 +f 718/917/131 713/910/131 719/918/131 +f 720/919/132 721/920/132 722/921/132 +f 723/922/133 722/921/133 721/920/133 +f 724/923/134 721/920/134 725/924/134 +f 724/925/135 720/919/135 726/926/135 +f 726/927/136 722/921/136 727/928/136 +f 728/929/23 729/930/23 730/931/23 +f 731/932/4 732/933/4 733/934/4 +f 734/935/22 735/936/22 736/937/22 +f 1/1/1 16/16/1 2/2/1 +f 4/4/1 33/938/1 5/5/1 +f 7/7/1 30/939/1 8/8/1 +f 10/10/1 31/940/1 11/11/1 +f 13/13/1 35/941/1 14/14/1 +f 10/10/1 12/12/1 8/8/1 +f 12/12/1 15/15/1 5/5/1 +f 8/8/1 12/12/1 9/9/1 +f 15/15/1 14/14/1 3/3/1 +f 2/2/1 6/6/1 15/15/1 +f 6/6/1 5/5/1 15/15/1 +f 15/15/1 3/3/1 2/2/1 +f 13/13/1 11/11/1 33/938/1 +f 11/11/1 31/940/1 30/939/1 +f 30/939/1 7/7/1 11/11/1 +f 7/7/1 33/938/1 11/11/1 +f 1/1/1 35/941/1 13/13/1 +f 33/938/1 4/4/1 13/13/1 +f 4/4/1 16/16/1 13/13/1 +f 9/17/2 18/21/2 17/18/2 +f 5/20/3 25/33/3 18/21/3 +f 16/23/4 34/52/4 19/24/4 +f 2/26/3 19/24/3 20/27/3 +f 21/29/1 32/43/1 22/30/1 +f 24/32/1 17/18/1 18/21/1 +f 19/24/1 34/52/1 26/34/1 +f 27/35/1 36/63/1 28/36/1 +f 8/38/3 21/29/3 23/31/3 +f 30/40/4 32/43/4 21/29/4 +f 31/42/5 22/30/5 32/43/5 +f 6/45/2 20/27/2 26/34/2 +f 7/47/5 17/18/5 24/32/5 +f 33/49/4 24/32/4 25/33/4 +f 4/51/5 26/34/5 34/52/5 +f 10/54/2 23/31/2 22/30/2 +f 1/56/5 36/63/5 27/35/5 +f 35/58/4 27/35/4 29/37/4 +f 14/60/3 29/37/3 28/36/3 +f 3/62/2 28/36/2 36/63/2 +f 37/65/6 50/78/6 38/66/6 +f 40/68/6 51/79/6 41/69/6 +f 43/71/7 46/74/7 44/72/7 +f 46/74/6 52/80/6 47/75/6 +f 48/76/6 37/65/6 39/67/6 +f 50/78/6 42/70/6 41/69/6 +f 43/71/6 45/73/6 51/79/6 +f 52/80/7 48/942/7 49/81/7 +f 53/82/6 737/943/6 54/83/6 +f 54/83/7 738/944/7 55/84/7 +f 55/84/6 739/945/6 53/82/6 +f 739/945/7 740/946/7 53/82/7 +f 740/946/6 741/947/6 53/82/6 +f 56/85/7 60/89/7 57/86/7 +f 56/85/6 62/91/6 59/88/6 +f 61/90/6 64/948/6 59/88/6 +f 63/92/7 66/96/7 64/93/7 +f 65/95/6 68/98/6 66/96/6 +f 65/95/6 69/99/6 67/97/6 +f 69/99/7 71/101/7 70/100/7 +f 71/101/6 58/87/6 57/86/6 +f 72/102/8 76/106/8 73/103/8 +f 75/105/137 79/949/137 73/103/137 +f 77/107/10 75/950/10 76/106/10 +f 77/108/11 72/102/11 74/104/11 +f 78/110/12 74/104/12 73/103/12 +f 80/112/3 98/951/3 81/113/3 +f 85/117/3 742/952/3 743/953/3 +f 743/953/3 744/954/3 85/117/3 +f 744/954/3 745/955/3 85/117/3 +f 745/955/3 746/956/3 85/117/3 +f 746/956/3 83/115/3 85/117/3 +f 82/114/3 81/957/3 86/118/3 +f 88/120/3 87/119/3 86/121/3 +f 88/120/3 89/958/3 90/123/3 +f 91/125/3 90/959/3 92/126/3 +f 93/127/3 92/960/3 94/128/3 +f 96/130/3 95/129/3 94/131/3 +f 96/130/3 97/961/3 98/133/3 +f 99/134/3 103/962/3 100/135/3 +f 102/137/3 747/963/3 103/138/3 +f 104/140/3 747/964/3 102/141/3 +f 106/143/3 104/965/3 105/144/3 +f 108/146/3 106/966/3 107/147/3 +f 110/149/3 112/967/3 108/150/3 +f 111/152/3 113/968/3 112/153/3 +f 101/155/3 100/969/3 113/156/3 +f 128/970/1 127/971/1 114/158/1 +f 114/158/1 124/972/1 115/159/1 +f 115/159/1 125/973/1 116/160/1 +f 116/160/1 132/974/1 128/970/1 +f 128/970/1 114/158/1 116/160/1 +f 13/13/3 118/975/3 117/161/3 +f 15/15/2 119/976/2 118/162/2 +f 12/12/5 120/977/5 119/163/5 +f 11/11/4 117/978/4 120/164/4 +f 123/167/13 133/979/13 126/980/13 +f 126/980/13 131/981/13 121/165/13 +f 121/165/13 130/982/13 122/166/13 +f 122/166/13 129/983/13 123/167/13 +f 123/167/13 126/980/13 121/165/13 +f 123/168/14 129/177/14 124/169/14 +f 122/171/15 130/178/15 125/172/15 +f 126/174/16 133/182/16 127/175/16 +f 129/177/17 122/171/17 115/173/17 +f 130/178/18 121/984/18 116/179/18 +f 131/180/19 126/174/19 128/176/19 +f 133/182/20 123/168/20 114/170/20 +f 134/183/3 141/191/3 135/184/3 +f 137/186/5 140/190/5 138/187/5 +f 134/189/21 138/195/21 140/190/21 +f 135/184/22 137/186/22 139/192/22 +f 141/191/23 140/190/23 137/186/23 +f 136/194/24 139/985/24 138/195/24 +f 142/196/3 149/204/3 143/197/3 +f 145/199/5 148/203/5 146/200/5 +f 142/202/22 146/986/22 148/203/22 +f 143/197/21 145/199/21 147/205/21 +f 149/204/24 148/203/24 145/199/24 +f 144/206/23 147/205/23 146/207/23 +f 150/209/3 156/987/3 151/210/3 +f 153/212/5 157/218/5 154/213/5 +f 156/215/24 155/220/24 154/213/24 +f 152/211/23 157/218/23 153/216/23 +f 151/210/21 154/213/21 157/218/21 +f 150/219/22 153/988/22 155/220/22 +f 158/221/3 164/989/3 159/222/3 +f 161/224/5 165/230/5 162/225/5 +f 164/227/23 163/990/23 162/225/23 +f 160/223/24 165/230/24 161/228/24 +f 159/222/22 162/225/22 165/230/22 +f 158/229/21 161/228/21 163/231/21 +f 166/233/3 173/241/3 167/234/3 +f 169/236/25 172/991/25 170/237/25 +f 166/239/21 170/244/21 172/240/21 +f 167/234/22 169/236/22 171/238/22 +f 173/241/23 172/240/23 169/236/23 +f 166/239/24 168/992/24 171/243/24 +f 174/245/26 178/251/26 175/246/26 +f 179/250/13 748/993/13 177/248/13 +f 177/248/13 181/994/13 178/249/13 +f 178/249/13 174/995/13 179/250/13 +f 178/251/16 181/253/16 180/252/16 +f 181/253/27 177/996/27 182/254/27 +f 180/257/1 182/997/1 176/255/1 +f 182/997/1 749/998/1 176/255/1 +f 749/998/1 750/999/1 176/255/1 +f 183/258/2 187/262/2 184/259/2 +f 183/258/13 751/1000/13 186/261/13 +f 184/259/1 752/1001/1 188/263/1 +f 189/264/5 193/268/5 190/265/5 +f 192/267/13 190/265/13 193/268/13 +f 195/270/1 189/264/1 191/266/1 +f 194/272/4 193/268/4 189/264/4 +f 196/274/2 191/266/2 190/265/2 +f 197/276/2 206/285/2 198/277/2 +f 200/279/28 207/286/28 201/280/28 +f 203/282/29 208/288/29 204/283/29 +f 206/285/30 203/282/30 205/284/30 +f 207/286/31 197/1002/31 199/287/31 +f 208/288/4 200/279/4 202/281/4 +f 205/291/13 204/1003/13 199/289/13 +f 204/1003/13 202/1004/13 199/289/13 +f 202/1004/13 201/1005/13 199/289/13 +f 209/292/4 216/318/4 210/293/4 +f 212/295/2 219/310/2 213/296/2 +f 215/298/28 220/1006/28 216/299/28 +f 211/301/29 210/314/29 217/302/29 +f 218/304/30 217/1007/30 219/305/30 +f 214/307/31 213/317/31 220/308/31 +f 219/310/1 225/316/1 221/311/1 +f 216/299/1 220/1006/1 222/312/1 +f 210/314/1 226/319/1 224/315/1 +f 219/305/1 217/1007/1 224/315/1 +f 213/317/1 221/321/1 222/312/1 +f 216/318/1 223/313/1 226/319/1 +f 224/315/30 232/326/30 227/320/30 +f 221/321/31 230/1008/31 228/322/31 +f 223/313/4 231/325/4 229/323/4 +f 225/316/2 227/320/2 230/324/2 +f 222/312/28 228/322/28 231/325/28 +f 226/319/29 229/323/29 232/326/29 +f 228/322/13 238/340/13 233/327/13 +f 231/325/13 233/336/13 234/328/13 +f 232/326/13 229/323/13 234/329/13 +f 232/326/13 235/343/13 236/331/13 +f 227/320/13 236/338/13 237/332/13 +f 228/322/13 230/1008/13 237/333/13 +f 237/333/31 241/1009/31 239/335/31 +f 233/336/4 242/347/4 240/337/4 +f 236/338/2 244/352/2 241/339/2 +f 238/340/28 239/345/28 242/341/28 +f 234/329/29 240/1010/29 243/342/29 +f 235/343/30 243/350/30 244/344/30 +f 239/345/1 250/355/1 245/346/1 +f 242/347/1 245/346/1 246/348/1 +f 243/342/1 240/1010/1 246/348/1 +f 243/350/1 247/349/1 248/351/1 +f 244/352/1 248/351/1 249/353/1 +f 239/335/1 241/1009/1 249/354/1 +f 245/346/4 253/358/4 251/356/4 +f 248/351/2 255/360/2 252/357/2 +f 250/355/28 256/361/28 253/358/28 +f 246/348/29 251/356/29 254/359/29 +f 247/349/30 254/359/30 255/360/30 +f 249/354/31 252/1011/31 256/361/31 +f 251/356/32 261/1012/32 257/362/32 +f 254/359/33 257/1013/33 258/363/33 +f 256/361/34 252/1011/34 259/364/34 +f 253/358/35 262/1014/35 261/366/35 +f 255/360/36 258/1015/36 259/367/36 +f 253/358/37 256/361/37 260/368/37 +f 257/372/13 261/1016/13 259/370/13 +f 261/1016/13 262/1017/13 259/370/13 +f 262/1017/13 260/1018/13 259/370/13 +f 263/373/38 270/381/38 264/374/38 +f 265/376/1 264/1019/1 266/377/1 +f 267/378/39 266/377/39 268/379/39 +f 263/373/13 269/380/13 268/379/13 +f 271/382/38 275/1020/38 272/383/38 +f 274/385/13 278/390/13 275/386/13 +f 276/388/1 273/384/1 272/383/1 +f 277/389/40 272/383/40 275/386/40 +f 274/385/41 271/387/41 273/391/41 +f 279/393/1 283/1021/1 280/394/1 +f 282/396/42 291/406/42 280/397/42 +f 284/399/13 312/438/13 285/400/13 +f 279/393/43 281/395/43 287/402/43 +f 285/400/13 312/438/13 289/404/13 +f 291/406/44 317/444/44 292/407/44 +f 294/411/40 279/393/40 288/403/40 +f 296/417/40 298/445/40 284/399/40 +f 299/420/5 294/411/5 293/410/5 +f 301/422/3 282/409/3 283/423/3 +f 303/425/13 295/416/13 286/415/13 +f 305/427/1 297/418/1 296/417/1 +f 302/429/1 283/412/1 294/411/1 +f 306/428/5 296/417/5 295/416/5 +f 304/426/3 286/415/3 297/430/3 +f 300/421/13 293/410/13 282/409/13 +f 286/401/42 285/400/42 307/432/42 +f 288/403/13 287/402/13 291/406/13 +f 308/434/4 322/450/4 309/435/4 +f 311/437/45 313/440/45 289/404/45 +f 307/439/1 315/1022/1 313/440/1 +f 280/394/1 292/1023/1 314/441/1 +f 285/400/44 290/405/44 315/442/44 +f 291/406/13 287/402/13 316/443/13 +f 281/395/45 314/441/45 316/443/45 +f 298/445/1 297/1024/1 307/439/1 +f 298/445/43 311/437/43 312/438/43 +f 318/446/30 323/451/30 319/447/30 +f 321/449/3 326/454/3 322/450/3 +f 323/451/2 327/1025/2 324/452/2 +f 325/453/2 329/459/2 326/454/2 +f 327/455/31 330/460/31 328/456/31 +f 310/458/5 309/1026/5 329/459/5 +f 330/460/28 332/465/28 331/461/28 +f 327/464/13 323/1027/13 318/1028/13 +f 318/1028/13 334/1029/13 327/464/13 +f 334/1029/13 332/462/13 327/464/13 +f 332/465/4 334/467/4 333/466/4 +f 334/467/29 318/446/29 320/448/29 +f 333/469/1 320/1030/1 319/470/1 +f 319/470/1 324/1031/1 328/1032/1 +f 328/1032/1 331/468/1 319/470/1 +f 329/459/21 336/475/21 335/471/21 +f 309/474/5 338/1033/5 337/477/5 +f 338/478/2 347/498/2 339/479/2 +f 336/475/13 337/477/13 340/481/13 +f 335/471/3 340/481/3 341/482/3 +f 322/473/1 341/482/1 338/483/1 +f 342/485/38 343/488/38 341/482/38 +f 344/490/43 350/500/43 345/491/43 +f 337/480/13 339/479/13 344/490/13 +f 342/485/4 344/490/4 346/492/4 +f 343/488/1 346/492/1 347/493/1 +f 347/493/1 346/492/1 345/491/1 +f 347/498/42 351/1034/42 348/499/42 +f 339/479/13 348/499/13 350/500/13 +f 349/495/40 352/501/40 345/491/40 +f 352/501/1 358/511/1 353/502/1 +f 353/505/3 360/1035/3 354/506/3 +f 351/508/3 353/1036/3 356/509/3 +f 348/494/13 356/509/13 357/510/13 +f 349/495/5 357/510/5 358/511/5 +f 355/507/21 359/513/21 357/510/21 +f 358/514/4 361/518/4 360/516/4 +f 359/513/5 362/519/5 361/518/5 +f 355/507/2 354/506/2 362/519/2 +f 363/520/46 376/533/46 364/521/46 +f 366/523/46 377/534/46 367/524/46 +f 369/526/47 372/529/47 370/527/47 +f 372/529/46 378/535/46 373/530/46 +f 374/531/46 363/520/46 365/522/46 +f 376/533/46 368/525/46 367/524/46 +f 366/523/46 369/526/46 371/528/46 +f 378/535/47 374/1037/47 375/536/47 +f 379/537/46 753/1038/46 380/538/46 +f 380/538/47 754/1039/47 381/539/47 +f 381/539/47 755/1040/47 756/1041/47 +f 756/1041/46 757/1042/46 381/539/46 +f 757/1042/46 379/537/46 381/539/46 +f 382/540/47 386/544/47 383/541/47 +f 382/540/46 388/546/46 385/543/46 +f 387/545/46 390/1043/46 385/543/46 +f 389/547/47 392/551/47 390/548/47 +f 389/547/46 393/552/46 391/550/46 +f 393/552/46 395/554/46 394/553/46 +f 395/554/47 397/556/47 396/555/47 +f 397/556/46 384/542/46 383/541/46 +f 398/557/49 411/570/49 399/558/49 +f 401/560/48 412/571/48 402/561/48 +f 404/563/49 407/566/49 405/564/49 +f 407/566/48 413/572/48 408/567/48 +f 409/568/48 398/557/48 400/559/48 +f 411/570/48 403/562/48 402/561/48 +f 404/563/48 406/565/48 412/571/48 +f 413/572/49 409/1044/49 410/573/49 +f 414/574/48 758/1045/48 415/575/48 +f 415/575/49 759/1046/49 416/576/49 +f 416/576/48 760/1047/48 414/574/48 +f 760/1047/49 761/1048/49 414/574/49 +f 761/1048/48 762/1049/48 414/574/48 +f 417/577/49 421/581/49 418/578/49 +f 417/577/48 423/583/48 420/580/48 +f 422/582/48 425/1050/48 420/580/48 +f 424/584/49 427/588/49 425/585/49 +f 426/587/48 429/590/48 427/588/48 +f 426/587/49 430/591/49 428/589/49 +f 430/591/49 432/593/49 431/592/49 +f 432/593/48 419/579/48 418/578/48 +f 433/594/50 446/607/50 434/595/50 +f 436/597/50 447/608/50 437/598/50 +f 439/600/51 442/603/51 440/601/51 +f 442/603/50 448/609/50 443/604/50 +f 444/605/50 433/594/50 435/596/50 +f 446/607/50 438/599/50 437/598/50 +f 439/600/50 441/602/50 447/608/50 +f 448/609/51 444/1051/51 445/610/51 +f 449/611/50 763/1052/50 450/612/50 +f 450/612/51 764/1053/51 451/613/51 +f 451/613/50 765/1054/50 449/611/50 +f 765/1054/51 766/1055/51 449/611/51 +f 766/1055/50 767/1056/50 449/611/50 +f 452/614/51 456/618/51 453/615/51 +f 452/614/50 458/620/50 455/617/50 +f 457/619/50 460/1057/50 455/617/50 +f 459/621/51 462/625/51 460/622/51 +f 461/624/50 464/627/50 462/625/50 +f 461/624/50 465/628/50 463/626/50 +f 465/628/51 467/630/51 466/629/51 +f 467/630/50 454/616/50 453/615/50 +f 468/631/53 481/644/53 469/632/53 +f 471/634/53 482/645/53 472/635/53 +f 474/637/52 477/640/52 475/638/52 +f 477/640/53 483/646/53 478/641/53 +f 479/642/53 468/631/53 470/633/53 +f 481/644/53 473/636/53 472/635/53 +f 474/637/52 476/639/52 482/645/52 +f 483/646/52 479/1058/52 480/647/52 +f 484/648/52 768/1059/52 485/649/52 +f 485/649/52 769/1060/52 486/650/52 +f 486/650/53 770/1061/53 484/648/53 +f 770/1061/52 771/1062/52 484/648/52 +f 771/1062/53 772/1063/53 484/648/53 +f 487/651/52 491/655/52 488/652/52 +f 487/651/52 493/657/52 490/654/52 +f 492/656/53 495/1064/53 490/654/53 +f 494/658/52 497/662/52 495/659/52 +f 496/661/53 499/664/53 497/662/53 +f 496/661/53 500/665/53 498/663/53 +f 500/665/52 502/667/52 501/666/52 +f 502/667/53 489/653/53 488/652/53 +f 503/668/55 516/681/55 504/669/55 +f 506/671/55 517/682/55 507/672/55 +f 509/674/55 512/677/55 510/675/55 +f 512/677/55 518/683/55 513/678/55 +f 514/679/55 503/668/55 505/670/55 +f 516/681/55 508/673/55 507/672/55 +f 509/674/55 511/676/55 517/682/55 +f 518/683/56 514/1065/56 515/684/56 +f 519/685/56 773/1066/56 520/686/56 +f 520/686/55 774/1067/55 521/687/55 +f 521/687/55 775/1068/55 519/685/55 +f 775/1068/56 776/1069/56 519/685/56 +f 776/1069/55 777/1070/55 519/685/55 +f 522/688/56 526/692/56 523/689/56 +f 522/688/56 528/694/56 525/691/56 +f 527/693/55 530/1071/55 525/691/55 +f 529/695/56 532/699/56 530/696/56 +f 531/698/55 534/701/55 532/699/55 +f 531/698/55 535/702/55 533/700/55 +f 535/702/56 537/704/56 536/703/56 +f 537/704/55 524/690/55 523/689/55 +f 538/705/58 551/718/58 539/706/58 +f 541/708/58 552/719/58 542/709/58 +f 544/711/58 547/714/58 545/712/58 +f 547/714/58 553/720/58 548/715/58 +f 549/716/58 538/705/58 540/707/58 +f 551/718/58 543/710/58 542/709/58 +f 541/708/58 544/711/58 546/713/58 +f 553/720/57 549/1072/57 550/721/57 +f 554/722/57 778/1073/57 555/723/57 +f 555/723/58 779/1074/58 556/724/58 +f 556/724/58 780/1075/58 781/1076/58 +f 781/1076/58 782/1077/58 556/724/58 +f 782/1077/58 554/722/58 556/724/58 +f 557/725/57 561/729/57 558/726/57 +f 557/725/57 563/731/57 560/728/57 +f 562/730/58 565/1078/58 560/728/58 +f 564/732/57 567/736/57 565/733/57 +f 566/735/58 569/738/58 567/736/58 +f 566/735/58 570/739/58 568/737/58 +f 570/739/57 572/741/57 571/740/57 +f 572/741/58 559/727/58 558/726/58 +f 573/742/60 586/755/60 574/743/60 +f 576/745/60 587/756/60 577/746/60 +f 579/748/61 583/752/61 580/749/61 +f 582/751/60 588/758/60 580/749/60 +f 584/753/60 573/742/60 575/744/60 +f 586/755/60 578/747/60 577/746/60 +f 579/748/61 581/750/61 587/756/61 +f 582/751/61 584/1079/61 585/757/61 +f 589/759/61 783/1080/61 590/760/61 +f 590/760/61 784/1081/61 591/761/61 +f 591/761/60 785/1082/60 589/759/60 +f 785/1082/61 786/1083/61 589/759/61 +f 786/1083/60 787/1084/60 589/759/60 +f 592/762/61 596/766/61 593/763/61 +f 592/762/61 598/768/61 595/765/61 +f 597/767/60 600/1085/60 595/765/60 +f 599/769/61 602/773/61 600/770/61 +f 601/772/60 604/775/60 602/773/60 +f 601/772/61 605/776/61 603/774/61 +f 605/776/61 607/778/61 606/777/61 +f 607/778/60 594/764/60 593/763/60 +f 608/779/62 613/784/62 609/780/62 +f 611/782/138 615/1086/138 610/781/138 +f 612/783/64 611/1087/64 609/780/64 +f 612/785/65 613/784/65 608/779/65 +f 614/787/66 608/779/66 610/781/66 +f 616/789/67 620/793/67 617/790/67 +f 619/792/139 623/1088/139 617/790/139 +f 621/794/69 619/1089/69 620/793/69 +f 621/795/70 616/789/70 618/791/70 +f 622/797/71 618/791/71 617/790/71 +f 624/799/72 629/804/72 625/800/72 +f 627/802/140 631/1090/140 626/801/140 +f 628/803/74 627/1091/74 625/800/74 +f 628/805/75 629/804/75 624/799/75 +f 630/807/76 624/799/76 626/801/76 +f 632/809/77 637/814/77 633/810/77 +f 635/812/141 639/1092/141 634/811/141 +f 636/813/79 635/1093/79 633/810/79 +f 636/815/80 637/814/80 632/809/80 +f 638/817/81 632/809/81 634/811/81 +f 640/819/82 645/824/82 641/820/82 +f 643/822/142 647/1094/142 642/821/142 +f 644/823/84 643/1095/84 641/820/84 +f 644/825/85 645/824/85 640/819/85 +f 646/827/86 640/819/86 642/821/86 +f 648/829/87 652/833/87 649/830/87 +f 651/832/88 655/1096/88 649/830/88 +f 653/834/89 651/1097/89 652/833/89 +f 653/835/90 648/829/90 650/831/90 +f 654/837/91 650/831/91 649/830/91 +f 656/839/92 661/844/92 657/840/92 +f 659/842/143 663/1098/143 658/841/143 +f 660/843/94 659/1099/94 657/840/94 +f 660/845/95 661/844/95 656/839/95 +f 662/847/96 656/839/96 658/841/96 +f 664/849/97 668/853/97 665/850/97 +f 667/852/144 671/1100/144 665/850/144 +f 669/854/99 667/1101/99 668/853/99 +f 669/855/100 664/849/100 666/851/100 +f 670/857/145 666/851/145 665/850/145 +f 672/859/102 677/864/102 673/860/102 +f 675/862/103 679/1102/103 674/861/103 +f 676/863/104 675/1103/104 673/860/104 +f 676/865/105 677/864/105 672/859/105 +f 678/867/146 672/859/146 674/861/146 +f 680/869/107 685/874/107 681/870/107 +f 683/872/108 687/1104/108 682/871/108 +f 684/873/109 683/1105/109 681/870/109 +f 684/875/110 685/874/110 680/869/110 +f 686/877/147 680/869/147 682/871/147 +f 688/879/112 693/884/112 689/880/112 +f 691/882/113 695/1106/113 690/881/113 +f 692/883/114 691/1107/114 689/880/114 +f 692/885/115 693/884/115 688/879/115 +f 694/887/148 688/879/148 690/881/148 +f 696/889/117 701/894/117 697/890/117 +f 699/892/118 703/1108/118 698/891/118 +f 700/893/119 699/1109/119 697/890/119 +f 700/895/120 701/894/120 696/889/120 +f 702/897/121 696/889/121 698/891/121 +f 704/899/122 709/904/122 705/900/122 +f 707/902/123 711/1110/123 706/901/123 +f 708/903/124 707/1111/124 705/900/124 +f 708/905/149 709/904/149 704/899/149 +f 710/907/126 704/899/126 706/901/126 +f 712/909/127 716/913/127 713/910/127 +f 715/912/150 719/1112/150 713/910/150 +f 717/914/129 715/1113/129 716/913/129 +f 717/915/130 712/909/130 714/911/130 +f 718/917/131 714/911/131 713/910/131 +f 720/919/132 725/924/132 721/920/132 +f 723/922/133 727/1114/133 722/921/133 +f 724/923/134 723/1115/134 721/920/134 +f 724/925/135 725/924/135 720/919/135 +f 726/927/136 720/919/136 722/921/136 +f 728/929/23 788/1116/23 729/930/23 +f 731/932/4 789/1117/4 732/933/4 +f 734/935/22 790/1118/22 735/936/22 +f 1363/1119/1 1364/1120/1 1365/1121/1 +f 1366/1122/21 1367/1123/21 1368/1124/21 +f 1367/1123/13 1369/1125/13 1370/1126/13 +f 1371/1127/2 1372/1128/2 1373/1129/2 +f 1374/1130/24 1371/1131/24 1365/1121/24 +f 1371/1132/39 1366/1133/39 1375/1134/39 +f 1376/1135/4 1370/1126/4 1377/1136/4 +f 1378/1137/1 1379/1138/1 1380/1139/1 +f 1379/1138/1 1363/1119/1 1381/1140/1 +f 1378/1137/151 1382/1141/151 1383/1142/151 +f 1367/1123/5 1384/1143/5 1369/1125/5 +f 1367/1123/5 1385/1144/5 1386/1145/5 +f 1380/1139/5 1387/1146/5 1378/1137/5 +f 1378/1137/5 1387/1146/5 1388/1147/5 +f 1369/1148/152 1377/1136/152 1370/1126/152 +f 1389/1149/152 1390/1150/152 1391/1151/152 +f 1391/1151/4 1381/1140/4 1392/1152/4 +f 1393/1153/153 1394/1154/153 1395/1155/153 +f 1396/1156/153 1397/1157/153 1393/1153/153 +f 1394/1154/153 1381/1158/153 1395/1155/153 +f 1398/1159/5 1399/1160/5 1400/1161/5 +f 1401/1162/22 1402/1163/22 1403/1164/22 +f 1404/1165/3 1405/1166/3 1406/1167/3 +f 1368/1168/3 1407/1169/3 1408/1170/3 +f 1372/1171/3 1409/1172/3 1410/1173/3 +f 1373/1174/3 1411/1175/3 1412/1176/3 +f 1365/1177/3 1413/1178/3 1414/1179/3 +f 1415/1180/4 1416/1181/4 1417/1182/4 +f 1394/1183/21 1418/1184/21 1392/1185/21 +f 1397/1186/24 1419/1187/24 1420/1188/24 +f 1397/1186/2 1421/1189/2 1394/1183/2 +f 1420/1188/153 1418/1190/153 1421/1189/153 +f 1422/1191/13 1423/1192/13 1424/1193/13 +f 1425/1194/1 1426/1195/1 1427/1196/1 +f 1428/1197/154 1429/1198/154 1430/1199/154 +f 1430/1199/155 1431/1200/155 1428/1197/155 +f 1425/1201/156 1432/1202/156 1430/1199/156 +f 1423/1203/157 1431/1200/157 1424/1204/157 +f 1374/1205/2 1433/1206/2 1366/1133/2 +f 1434/1207/5 1435/1208/5 1436/1209/5 +f 1437/1210/2 1438/1211/2 1439/1212/2 +f 1440/1213/4 1436/1209/4 1441/1214/4 +f 1439/1215/13 1434/1207/13 1440/1216/13 +f 1441/1217/1 1435/1208/1 1437/1218/1 +f 1442/1219/4 1443/1220/4 1444/1221/4 +f 1445/1222/1 1446/1223/1 1447/1224/1 +f 1448/1225/5 1449/1226/5 1443/1220/5 +f 1442/1219/13 1450/1227/13 1448/1225/13 +f 1443/1220/1 1451/1228/1 1444/1221/1 +f 1452/1229/41 1453/1230/41 1445/1222/41 +f 1446/1231/5 1454/1232/5 1447/1233/5 +f 1455/1234/13 1454/1235/13 1456/1236/13 +f 1453/1230/38 1457/1237/38 1445/1222/38 +f 1458/1238/40 1446/1231/40 1457/1239/40 +f 1452/1229/39 1454/1240/39 1455/1234/39 +f 1459/1241/1 1460/1242/1 1461/1243/1 +f 1462/1244/158 1463/1245/158 1464/1246/158 +f 1465/1247/159 1466/1248/159 1460/1242/159 +f 1467/1249/4 1468/1250/4 1395/1155/4 +f 1469/1251/22 1470/1252/22 1471/1253/22 +f 1399/1254/23 1472/1255/23 1400/1256/23 +f 1395/1155/22 1473/1257/22 1474/1258/22 +f 1469/1251/22 1473/1257/22 1381/1140/22 +f 1395/1155/22 1471/1253/22 1470/1252/22 +f 1403/1259/24 1475/1260/24 1476/1261/24 +f 1477/1262/23 1404/1263/23 1396/1264/23 +f 1396/1265/23 1478/1266/23 1477/1262/23 +f 1479/1267/23 1478/1266/23 1393/1153/23 +f 1477/1268/160 1480/1269/160 1481/1270/160 +f 1469/1271/23 1482/1272/23 1473/1273/23 +f 1483/1274/161 1484/1275/161 1470/1276/161 +f 1482/1272/22 1485/1277/22 1486/1278/22 +f 1487/1279/5 1401/1280/5 1403/1281/5 +f 1481/1282/23 1488/1283/23 1398/1159/23 +f 1471/1284/162 1489/1285/162 1469/1286/162 +f 1401/1287/23 1490/1288/23 1483/1289/23 +f 1474/1290/163 1482/1291/163 1486/1278/163 +f 1474/1290/24 1485/1277/24 1471/1284/24 +f 1478/1292/21 1491/1293/21 1399/1294/21 +f 1400/1295/22 1492/1296/22 1477/1297/22 +f 1490/1288/22 1487/1279/22 1484/1275/22 +f 1484/1275/24 1487/1279/24 1403/1298/24 +f 1417/1299/1 1493/1300/1 1494/1301/1 +f 1405/1166/3 1495/1302/3 1496/1303/3 +f 1497/1304/3 1402/1305/3 1498/1306/3 +f 1495/1302/3 1499/1307/3 1479/1308/3 +f 1496/1303/3 1500/1309/3 1501/1310/3 +f 1451/1311/2 1450/1312/2 1502/1313/2 +f 1503/1314/1 1504/1315/1 1417/1316/1 +f 1395/1155/4 1505/1317/4 1393/1153/4 +f 1479/1267/4 1505/1317/4 1494/1318/4 +f 1506/1319/23 1498/1320/23 1401/1321/23 +f 1503/1322/4 1507/1323/4 1504/1324/4 +f 1417/1325/5 1507/1326/5 1415/1327/5 +f 1468/1328/3 1503/1329/3 1505/1330/3 +f 1415/1331/13 1507/1332/13 1508/1333/13 +f 1509/1334/13 1500/1335/13 1415/1336/13 +f 1491/1337/21 1495/1338/21 1399/1339/21 +f 1400/1340/22 1510/1341/22 1492/1342/22 +f 1491/1343/23 1479/1267/23 1499/1344/23 +f 1494/1318/4 1493/1345/4 1479/1267/4 +f 1509/1346/4 1467/1249/4 1511/1347/4 +f 1476/1348/22 1475/1349/22 1467/1249/22 +f 1492/1350/23 1510/1351/23 1404/1263/23 +f 1506/1352/22 1512/1353/22 1513/1354/22 +f 1467/1355/3 1402/1305/3 1500/1309/3 +f 1498/1306/3 1512/1356/3 1497/1304/3 +f 1404/1165/3 1472/1357/3 1405/1166/3 +f 1514/1358/2 1515/1359/2 1516/1360/2 +f 1517/1361/4 1518/1362/4 1519/1363/4 +f 1520/1364/1 1521/1365/1 1522/1366/1 +f 1523/1367/13 1524/1368/13 1525/1369/13 +f 1525/1369/23 1526/1370/23 1517/1361/23 +f 1527/1371/21 1515/1359/21 1528/1372/21 +f 1516/1373/24 1529/1374/24 1514/1375/24 +f 1518/1362/22 1522/1366/22 1519/1363/22 +f 1525/1376/3 1530/1377/3 1531/1378/3 +f 1517/1379/3 1532/1380/3 1533/1381/3 +f 1519/1382/3 1534/1383/3 1535/1384/3 +f 1522/1385/3 1536/1386/3 1537/1387/3 +f 1521/1388/3 1538/1389/3 1539/1390/3 +f 1516/1391/3 1540/1392/3 1541/1393/3 +f 1515/1394/3 1542/1395/3 1543/1396/3 +f 1523/1397/3 1544/1398/3 1545/1399/3 +f 1546/1400/3 1547/1401/3 1548/1402/3 +f 1549/1403/5 1550/1404/5 1526/1405/5 +f 1551/1406/5 1552/1407/5 1524/1408/5 +f 1553/1409/5 1554/1410/5 1527/1411/5 +f 1555/1412/5 1556/1413/5 1528/1414/5 +f 1557/1415/5 1558/1416/5 1514/1417/5 +f 1559/1418/5 1560/1419/5 1529/1420/5 +f 1561/1421/5 1562/1422/5 1520/1423/5 +f 1563/1424/5 1564/1425/5 1518/1426/5 +f 1365/1121/1 1512/1353/1 1363/1119/1 +f 1512/1353/1 1381/1140/1 1363/1119/1 +f 1372/1128/21 1375/1427/21 1368/1124/21 +f 1375/1427/21 1366/1122/21 1368/1124/21 +f 1433/1428/21 1385/1429/21 1367/1123/21 +f 1366/1122/21 1433/1428/21 1367/1123/21 +f 1370/1126/13 1396/1264/13 1367/1123/13 +f 1396/1264/13 1404/1263/13 1368/1124/13 +f 1367/1123/13 1396/1264/13 1368/1124/13 +f 1371/1127/2 1375/1427/2 1372/1128/2 +f 1373/1430/24 1365/1121/24 1371/1131/24 +f 1365/1121/164 1364/1120/164 1374/1130/164 +f 1364/1120/165 1565/1431/165 1374/1130/165 +f 1371/1132/39 1374/1205/39 1366/1133/39 +f 1376/1135/4 1396/1264/4 1370/1126/4 +f 1378/1137/1 1383/1142/1 1379/1138/1 +f 1381/1140/1 1390/1150/1 1379/1138/1 +f 1390/1150/1 1380/1139/1 1379/1138/1 +f 1378/1137/151 1388/1432/151 1382/1141/151 +f 1367/1123/5 1386/1145/5 1384/1143/5 +f 1380/1139/5 1389/1433/5 1387/1146/5 +f 1369/1148/152 1384/1434/152 1377/1136/152 +f 1389/1149/152 1380/1435/152 1390/1150/152 +f 1391/1151/4 1390/1150/4 1381/1140/4 +f 1393/1153/153 1397/1157/153 1394/1154/153 +f 1396/1156/153 1376/1436/153 1397/1157/153 +f 1394/1154/153 1392/1437/153 1381/1158/153 +f 1398/1159/5 1488/1283/5 1399/1160/5 +f 1401/1162/22 1498/1438/22 1402/1163/22 +f 1407/1169/3 1368/1168/3 1406/1167/3 +f 1368/1168/3 1404/1165/3 1406/1167/3 +f 1409/1172/3 1372/1171/3 1408/1170/3 +f 1372/1171/3 1368/1168/3 1408/1170/3 +f 1411/1175/3 1373/1174/3 1410/1173/3 +f 1373/1174/3 1372/1171/3 1410/1173/3 +f 1413/1178/3 1365/1177/3 1412/1176/3 +f 1365/1177/3 1373/1174/3 1412/1176/3 +f 1497/1304/3 1512/1356/3 1414/1179/3 +f 1512/1356/3 1365/1177/3 1414/1179/3 +f 1415/1180/4 1500/1439/4 1416/1181/4 +f 1394/1183/21 1421/1189/21 1418/1184/21 +f 1397/1186/24 1376/1440/24 1419/1187/24 +f 1397/1186/2 1420/1188/2 1421/1189/2 +f 1420/1188/153 1419/1441/153 1418/1190/153 +f 1422/1191/13 1566/1442/13 1423/1192/13 +f 1425/1194/1 1429/1198/1 1426/1195/1 +f 1428/1197/154 1423/1192/154 1566/1442/154 +f 1566/1442/154 1429/1198/154 1428/1197/154 +f 1429/1198/154 1425/1194/154 1430/1199/154 +f 1430/1199/155 1432/1202/155 1431/1200/155 +f 1425/1201/156 1427/1443/156 1432/1202/156 +f 1423/1203/157 1428/1197/157 1431/1200/157 +f 1374/1205/2 1565/1444/2 1433/1206/2 +f 1434/1207/5 1438/1211/5 1435/1208/5 +f 1437/1210/2 1435/1208/2 1438/1211/2 +f 1440/1213/4 1434/1207/4 1436/1209/4 +f 1439/1215/13 1438/1211/13 1434/1207/13 +f 1441/1217/1 1436/1209/1 1435/1208/1 +f 1442/1219/4 1448/1225/4 1443/1220/4 +f 1447/1224/1 1452/1229/1 1445/1222/1 +f 1445/1222/1 1457/1445/1 1446/1223/1 +f 1448/1225/5 1450/1446/5 1449/1226/5 +f 1442/1219/13 1502/1447/13 1450/1227/13 +f 1443/1220/1 1449/1448/1 1451/1228/1 +f 1452/1229/41 1455/1234/41 1453/1230/41 +f 1446/1231/5 1456/1236/5 1454/1232/5 +f 1458/1238/13 1453/1230/13 1456/1236/13 +f 1453/1230/13 1455/1234/13 1456/1236/13 +f 1453/1230/38 1458/1449/38 1457/1237/38 +f 1458/1238/40 1456/1236/40 1446/1231/40 +f 1452/1229/39 1447/1450/39 1454/1240/39 +f 1459/1241/1 1465/1451/1 1460/1242/1 +f 1462/1244/158 1567/1452/158 1463/1245/158 +f 1465/1247/159 1568/1453/159 1466/1248/159 +f 1467/1249/4 1509/1346/4 1468/1250/4 +f 1469/1251/22 1483/1454/22 1470/1252/22 +f 1399/1254/23 1495/1455/23 1472/1255/23 +f 1395/1155/22 1381/1140/22 1473/1257/22 +f 1381/1140/22 1512/1353/22 1469/1251/22 +f 1512/1353/22 1506/1352/22 1483/1454/22 +f 1483/1454/22 1469/1251/22 1512/1353/22 +f 1476/1348/22 1467/1249/22 1470/1252/22 +f 1467/1249/22 1395/1155/22 1470/1252/22 +f 1395/1155/22 1474/1258/22 1471/1253/22 +f 1403/1259/24 1402/1456/24 1475/1260/24 +f 1477/1262/23 1492/1350/23 1404/1263/23 +f 1396/1265/23 1393/1153/23 1478/1266/23 +f 1479/1267/23 1491/1343/23 1478/1266/23 +f 1477/1268/160 1478/1292/160 1480/1269/160 +f 1469/1271/23 1489/1457/23 1482/1272/23 +f 1483/1274/161 1490/1458/161 1484/1275/161 +f 1482/1272/22 1489/1457/22 1485/1277/22 +f 1487/1279/5 1569/1459/5 1401/1280/5 +f 1481/1282/23 1480/1269/23 1488/1283/23 +f 1471/1284/162 1485/1277/162 1489/1285/162 +f 1483/1289/23 1506/1460/23 1401/1287/23 +f 1401/1287/23 1569/1459/23 1490/1288/23 +f 1474/1290/163 1473/1461/163 1482/1291/163 +f 1474/1290/24 1486/1278/24 1485/1277/24 +f 1399/1294/21 1488/1283/21 1480/1269/21 +f 1480/1269/21 1478/1292/21 1399/1294/21 +f 1477/1297/22 1481/1282/22 1400/1295/22 +f 1481/1282/22 1398/1159/22 1400/1295/22 +f 1490/1288/22 1569/1459/22 1487/1279/22 +f 1476/1462/24 1470/1276/24 1403/1298/24 +f 1470/1276/24 1484/1275/24 1403/1298/24 +f 1417/1299/1 1416/1463/1 1493/1300/1 +f 1405/1166/3 1472/1357/3 1495/1302/3 +f 1497/1304/3 1501/1310/3 1402/1305/3 +f 1493/1464/3 1416/1465/3 1479/1308/3 +f 1416/1465/3 1496/1303/3 1495/1302/3 +f 1479/1308/3 1416/1465/3 1495/1302/3 +f 1496/1303/3 1416/1465/3 1500/1309/3 +f 1451/1311/2 1449/1466/2 1450/1312/2 +f 1417/1316/1 1494/1467/1 1505/1468/1 +f 1505/1468/1 1503/1314/1 1417/1316/1 +f 1395/1155/4 1468/1250/4 1505/1317/4 +f 1479/1267/4 1393/1153/4 1505/1317/4 +f 1506/1319/23 1513/1469/23 1498/1320/23 +f 1503/1322/4 1508/1470/4 1507/1323/4 +f 1417/1325/5 1504/1471/5 1507/1326/5 +f 1468/1328/3 1508/1472/3 1503/1329/3 +f 1508/1333/13 1468/1473/13 1415/1331/13 +f 1468/1473/13 1509/1474/13 1415/1331/13 +f 1509/1334/13 1511/1475/13 1500/1335/13 +f 1491/1337/21 1499/1476/21 1495/1338/21 +f 1400/1340/22 1472/1477/22 1510/1341/22 +f 1501/1310/3 1500/1309/3 1402/1305/3 +f 1500/1309/3 1511/1478/3 1467/1355/3 +f 1467/1355/3 1475/1479/3 1402/1305/3 +f 1498/1306/3 1513/1480/3 1512/1356/3 +f 1404/1165/3 1510/1481/3 1472/1357/3 +f 1514/1358/2 1528/1372/2 1515/1359/2 +f 1517/1361/4 1526/1370/4 1518/1362/4 +f 1520/1364/1 1529/1374/1 1521/1365/1 +f 1523/1367/13 1527/1371/13 1524/1368/13 +f 1525/1369/23 1524/1368/23 1526/1370/23 +f 1527/1371/21 1523/1367/21 1515/1359/21 +f 1516/1373/24 1521/1365/24 1529/1374/24 +f 1518/1362/22 1520/1364/22 1522/1366/22 +f 1544/1398/3 1523/1397/3 1531/1378/3 +f 1523/1397/3 1525/1376/3 1531/1378/3 +f 1530/1377/3 1525/1376/3 1533/1381/3 +f 1525/1376/3 1517/1379/3 1533/1381/3 +f 1532/1380/3 1517/1379/3 1535/1384/3 +f 1517/1379/3 1519/1382/3 1535/1384/3 +f 1534/1383/3 1519/1382/3 1537/1387/3 +f 1519/1382/3 1522/1385/3 1537/1387/3 +f 1536/1386/3 1522/1385/3 1539/1390/3 +f 1522/1385/3 1521/1388/3 1539/1390/3 +f 1538/1389/3 1521/1388/3 1541/1393/3 +f 1521/1388/3 1516/1391/3 1541/1393/3 +f 1540/1392/3 1516/1391/3 1543/1396/3 +f 1516/1391/3 1515/1394/3 1543/1396/3 +f 1542/1395/3 1515/1394/3 1545/1399/3 +f 1515/1394/3 1523/1397/3 1545/1399/3 +f 1548/1402/3 1570/1482/3 1571/1483/3 +f 1571/1483/3 1572/1484/3 1573/1485/3 +f 1573/1485/3 1574/1486/3 1575/1487/3 +f 1575/1487/3 1576/1488/3 1546/1400/3 +f 1546/1400/3 1577/1489/3 1578/1490/3 +f 1578/1490/3 1579/1491/3 1547/1401/3 +f 1547/1401/3 1580/1492/3 1581/1493/3 +f 1581/1493/3 1582/1494/3 1548/1402/3 +f 1548/1402/3 1571/1483/3 1546/1400/3 +f 1571/1483/3 1573/1485/3 1546/1400/3 +f 1573/1485/3 1575/1487/3 1546/1400/3 +f 1546/1400/3 1578/1490/3 1547/1401/3 +f 1547/1401/3 1581/1493/3 1548/1402/3 +f 1526/1405/5 1524/1408/5 1549/1403/5 +f 1524/1408/5 1552/1407/5 1549/1403/5 +f 1524/1408/5 1527/1411/5 1551/1406/5 +f 1527/1411/5 1554/1410/5 1551/1406/5 +f 1527/1411/5 1528/1414/5 1553/1409/5 +f 1528/1414/5 1556/1413/5 1553/1409/5 +f 1528/1414/5 1514/1417/5 1555/1412/5 +f 1514/1417/5 1558/1416/5 1555/1412/5 +f 1514/1417/5 1529/1420/5 1557/1415/5 +f 1529/1420/5 1560/1419/5 1557/1415/5 +f 1529/1420/5 1520/1423/5 1559/1418/5 +f 1520/1423/5 1562/1422/5 1559/1418/5 +f 1520/1423/5 1518/1426/5 1561/1421/5 +f 1518/1426/5 1564/1425/5 1561/1421/5 +f 1518/1426/5 1526/1405/5 1563/1424/5 +f 1526/1405/5 1550/1404/5 1563/1424/5 +s 1 +f 791/1495/166 792/1496/167 793/1497/168 +f 794/1498/19 795/1499/169 796/1500/170 +f 797/1501/171 798/1502/172 799/1503/173 +f 800/1504/174 801/1505/175 797/1501/171 +f 802/1506/17 793/1497/168 803/1507/176 +f 804/1508/177 795/1499/169 792/1496/167 +f 794/1498/19 798/1502/172 805/1509/178 +f 802/1510/17 806/1511/179 800/1504/174 +f 798/1502/172 807/1512/180 808/1513/181 +f 805/1509/178 809/1514/182 795/1499/169 +f 792/1496/167 810/1515/183 793/1497/168 +f 803/1516/176 811/1517/184 806/1511/179 +f 805/1509/178 808/1513/181 812/1518/185 +f 795/1499/169 813/1519/186 792/1496/167 +f 803/1507/176 810/1515/183 814/1520/14 +f 801/1505/175 811/1517/184 807/1512/180 +f 814/1520/14 815/1521/187 816/1522/5 +f 807/1512/180 817/1523/188 818/1524/189 +f 807/1512/180 819/1525/190 808/1513/181 +f 812/1518/185 820/1526/191 809/1514/182 +f 813/1519/186 815/1521/187 810/1515/183 +f 814/1527/14 817/1523/188 811/1517/184 +f 812/1518/185 819/1525/190 821/1528/3 +f 813/1519/186 820/1526/191 822/1529/192 +f 819/1525/190 823/1530/193 821/1528/3 +f 822/1529/192 824/1531/194 825/1532/195 +f 816/1522/5 826/1533/196 827/1534/197 +f 817/1523/188 828/1535/198 818/1524/189 +f 818/1524/189 829/1536/199 819/1525/190 +f 820/1526/191 823/1530/193 824/1531/194 +f 815/1521/187 825/1532/195 826/1533/196 +f 816/1537/5 830/1538/200 817/1523/188 +f 831/1539/201 46/74/202 832/1540/202 +f 833/1541/203 48/76/204 834/1542/204 +f 835/1543/205 42/70/206 50/78/205 +f 836/1544/207 40/68/208 837/1545/208 +f 831/1539/201 48/942/204 52/80/201 +f 833/1541/203 50/78/205 37/65/203 +f 837/1545/208 42/70/206 838/1546/206 +f 832/1540/202 43/71/207 836/1544/207 +f 54/1547/206 60/89/205 59/88/206 +f 45/73/207 56/85/202 58/87/207 +f 54/1547/206 64/948/208 738/1548/208 +f 47/75/201 56/85/202 44/72/202 +f 55/1549/207 64/93/208 66/96/207 +f 49/81/204 62/91/201 47/75/201 +f 55/1549/207 68/98/202 739/1550/202 +f 39/67/209 61/94/204 49/77/204 +f 51/79/208 58/87/207 71/101/208 +f 53/1551/203 60/89/205 737/1552/205 +f 51/79/208 69/99/206 41/69/206 +f 53/1551/203 70/100/204 57/86/203 +f 38/66/205 69/99/206 65/95/205 +f 740/1553/201 70/100/204 741/1554/204 +f 38/66/205 63/92/209 39/67/209 +f 740/1553/201 68/98/202 67/97/201 +f 839/1555/210 82/114/211 840/1556/211 +f 841/1557/202 88/120/212 842/1558/212 +f 843/1559/213 93/127/214 844/1560/214 +f 845/1561/205 96/130/215 846/1562/215 +f 840/1556/211 87/119/202 841/1557/202 +f 842/1558/212 91/124/213 843/1563/213 +f 844/1560/214 95/129/205 845/1561/205 +f 846/1562/215 80/112/210 839/1555/210 +f 98/951/210 103/962/211 81/113/211 +f 85/1564/213 111/157/212 742/1565/212 +f 84/1566/214 101/136/213 85/1567/213 +f 81/957/211 747/963/202 86/118/202 +f 83/1568/205 99/139/214 84/1569/214 +f 86/121/202 104/140/212 89/122/212 +f 746/1570/215 102/141/205 83/1571/205 +f 89/958/212 106/143/213 90/123/213 +f 97/961/215 100/969/210 98/133/210 +f 742/1572/212 110/154/202 743/1573/202 +f 94/131/205 113/968/215 97/132/215 +f 743/1574/202 109/151/211 744/1575/211 +f 92/960/214 112/967/205 94/128/205 +f 744/1576/211 107/147/210 745/1577/210 +f 90/959/213 108/146/214 92/126/214 +f 745/1578/210 105/144/215 746/1579/215 +f 847/1580/216 848/1581/217 849/1582/218 +f 850/1583/219 851/1584/220 852/1585/221 +f 853/1586/222 854/1587/223 855/1588/224 +f 856/1589/225 857/1590/226 858/1591/227 +f 857/1590/226 853/1586/222 855/1588/224 +f 859/1592/228 856/1589/225 858/1591/227 +f 860/1593/229 861/1594/230 853/1586/222 +f 862/1595/231 863/1596/232 856/1589/225 +f 853/1586/222 864/1597/233 865/1598/234 +f 863/1596/232 860/1593/229 856/1589/225 +f 866/1599/235 867/1600/223 868/1601/224 +f 869/1602/236 870/1603/226 871/1604/227 +f 870/1603/226 866/1599/235 868/1601/224 +f 872/1605/231 871/1604/227 873/1606/237 +f 874/1607/229 875/1608/230 866/1599/235 +f 872/1605/231 876/1609/232 869/1602/236 +f 875/1608/230 877/1610/234 866/1599/235 +f 876/1609/232 874/1607/229 869/1602/236 +f 878/1611/222 879/1612/223 880/1613/224 +f 881/1614/236 882/1615/226 883/1616/227 +f 882/1615/226 878/1611/222 880/1613/224 +f 884/1617/231 883/1616/227 885/1618/228 +f 886/1619/229 887/1620/230 878/1611/222 +f 888/1621/238 881/1614/236 884/1617/231 +f 878/1611/222 889/1622/233 890/1623/234 +f 891/1624/232 886/1619/229 881/1614/236 +f 854/1587/223 892/1625/4 855/1588/224 +f 867/1600/223 893/1626/4 868/1601/224 +f 855/1588/224 894/1627/22 857/1590/226 +f 857/1590/226 895/1628/1 858/1591/227 +f 879/1612/223 896/1629/4 880/1613/224 +f 868/1601/224 897/1630/22 870/1603/226 +f 858/1591/227 898/1631/214 859/1592/228 +f 870/1603/226 899/1632/1 871/1604/227 +f 880/1613/224 900/1633/22 882/1615/226 +f 882/1615/226 901/1634/1 883/1616/227 +f 871/1604/227 902/1635/214 873/1606/237 +f 883/1616/227 903/1636/214 885/1618/228 +f 847/1580/216 851/1584/220 904/1637/239 +f 905/1638/240 848/1581/217 906/1639/241 +f 904/1637/239 907/1640/242 908/1641/243 +f 906/1639/241 909/1642/244 910/1643/245 +f 851/1584/220 911/1644/246 907/1640/242 +f 904/1637/239 909/1642/244 848/1581/217 +f 912/1645/219 913/1646/247 914/1647/221 +f 915/1648/216 916/1649/248 917/1650/218 +f 915/1648/216 913/1646/247 918/1651/239 +f 917/1650/218 919/1652/241 920/1653/249 +f 918/1651/239 921/1654/242 922/1655/243 +f 919/1652/241 923/1656/244 924/1657/245 +f 925/1658/250 921/1654/242 913/1646/247 +f 918/1651/239 923/1656/244 916/1649/248 +f 926/1659/219 927/1660/220 928/1661/221 +f 929/1662/216 930/1663/248 931/1664/218 +f 929/1662/216 927/1660/220 932/1665/239 +f 931/1664/218 933/1666/241 934/1667/240 +f 932/1665/239 935/1668/242 936/1669/243 +f 930/1663/248 937/1670/245 933/1666/241 +f 927/1660/220 938/1671/246 935/1668/242 +f 932/1665/239 939/1672/244 930/1663/248 +f 940/1673/4 850/1583/219 852/1585/221 +f 941/1674/4 912/1645/219 914/1647/221 +f 942/1675/23 852/1585/221 847/1580/216 +f 943/1676/13 847/1580/216 849/1582/218 +f 944/1677/4 926/1659/219 928/1661/221 +f 945/1678/23 914/1647/221 915/1648/216 +f 946/1679/202 849/1582/218 905/1638/240 +f 947/1680/13 915/1648/216 917/1650/218 +f 948/1681/23 928/1661/221 929/1662/216 +f 949/1682/13 929/1662/216 931/1664/218 +f 950/1683/202 917/1650/218 920/1653/249 +f 951/1684/202 931/1664/218 934/1667/240 +f 952/1685/251 953/1686/252 954/1687/253 +f 955/1688/15 956/1689/254 957/1690/255 +f 958/1691/256 959/1692/257 960/1693/258 +f 961/1694/259 962/1695/260 958/1691/256 +f 963/1696/16 954/1687/253 964/1697/261 +f 957/1690/255 953/1686/252 965/1698/262 +f 955/1688/15 959/1692/257 966/1699/263 +f 963/1700/16 967/1701/264 961/1694/259 +f 959/1692/257 968/1702/265 969/1703/266 +f 966/1699/263 970/1704/267 956/1689/254 +f 953/1686/252 971/1705/268 954/1687/253 +f 964/1706/261 972/1707/269 967/1701/264 +f 966/1699/263 969/1703/266 973/1708/18 +f 956/1689/254 974/1709/270 953/1686/252 +f 964/1697/261 971/1705/268 975/1710/20 +f 962/1695/260 972/1707/269 968/1702/265 +f 975/1710/20 976/1711/188 977/1712/5 +f 968/1702/265 978/1713/187 979/1714/192 +f 968/1702/265 980/1715/271 969/1703/266 +f 973/1708/18 981/1716/272 970/1704/267 +f 974/1709/270 976/1711/188 971/1705/268 +f 975/1717/20 978/1713/187 972/1707/269 +f 973/1708/18 980/1715/271 982/1718/3 +f 974/1709/270 981/1716/272 983/1719/189 +f 980/1715/271 984/1720/273 982/1718/3 +f 983/1719/189 985/1721/274 986/1722/275 +f 977/1712/5 987/1723/276 988/1724/277 +f 978/1713/187 989/1725/278 979/1714/192 +f 979/1714/192 990/1726/279 980/1715/271 +f 981/1716/272 984/1720/273 985/1721/274 +f 976/1711/188 986/1722/275 987/1723/276 +f 977/1727/5 991/1728/280 978/1713/187 +f 992/1729/281 372/529/205 993/1730/205 +f 994/1731/282 374/531/283 995/1732/283 +f 996/1733/202 368/525/284 376/533/202 +f 997/1734/285 366/523/286 998/1735/286 +f 992/1729/281 374/1037/283 378/535/281 +f 994/1731/282 376/533/202 363/520/282 +f 998/1735/286 368/525/284 999/1736/284 +f 993/1730/205 369/526/285 997/1734/285 +f 380/1737/284 386/544/202 385/543/284 +f 371/528/285 382/540/205 384/542/285 +f 380/1737/284 390/1043/286 754/1738/286 +f 373/530/281 382/540/205 370/527/205 +f 381/1739/285 390/548/286 392/551/285 +f 375/536/283 388/546/281 373/530/281 +f 381/1739/285 391/550/205 755/1740/205 +f 365/522/287 387/549/283 375/532/283 +f 377/534/286 384/542/285 397/556/286 +f 379/1741/282 386/544/202 753/1742/202 +f 377/534/286 395/554/284 367/524/284 +f 379/1741/282 396/555/283 383/541/282 +f 364/521/202 395/554/284 393/552/202 +f 756/1743/281 396/555/283 757/1744/283 +f 364/521/202 389/547/287 365/522/287 +f 756/1743/281 391/550/205 394/553/281 +f 1000/1745/288 1001/1746/289 1002/1747/290 +f 1003/1748/291 1004/1749/292 1005/1750/293 +f 1006/1751/294 1007/1752/295 1008/1753/296 +f 1009/1754/297 1010/1755/298 1006/1751/294 +f 1011/1756/299 1002/1747/290 1012/1757/300 +f 1005/1750/293 1001/1746/289 1013/1758/301 +f 1003/1748/291 1007/1752/295 1014/1759/302 +f 1011/1760/299 1015/1761/303 1009/1754/297 +f 1007/1752/295 1016/1762/304 1017/1763/305 +f 1014/1759/302 1018/1764/306 1004/1749/292 +f 1001/1746/289 1019/1765/307 1002/1747/290 +f 1012/1766/300 1020/1767/308 1015/1761/303 +f 1014/1759/302 1017/1763/305 1021/1768/309 +f 1004/1749/292 1022/1769/310 1001/1746/289 +f 1012/1757/300 1019/1765/307 1023/1770/311 +f 1010/1755/298 1020/1767/308 1016/1762/304 +f 1023/1770/311 1024/1771/312 1025/1772/5 +f 1016/1762/304 1026/1773/313 1027/1774/314 +f 1016/1762/304 1028/1775/315 1017/1763/305 +f 1021/1768/309 1029/1776/316 1018/1764/306 +f 1022/1769/310 1024/1771/312 1019/1765/307 +f 1023/1777/311 1026/1773/313 1020/1767/308 +f 1021/1768/309 1028/1775/315 1030/1778/3 +f 1022/1769/310 1029/1776/316 1031/1779/317 +f 1028/1775/315 1032/1780/318 1030/1778/3 +f 1031/1779/317 1033/1781/319 1034/1782/320 +f 1025/1772/5 1035/1783/321 1036/1784/322 +f 1026/1773/313 1037/1785/323 1027/1774/314 +f 1027/1774/314 1038/1786/324 1028/1775/315 +f 1029/1776/316 1032/1780/318 1033/1781/319 +f 1024/1771/312 1034/1782/320 1035/1783/321 +f 1025/1787/5 1039/1788/325 1026/1773/313 +f 1040/1789/326 407/566/213 1041/1790/213 +f 1042/1791/327 409/568/328 1043/1792/328 +f 1044/1793/210 403/562/329 411/570/210 +f 1045/1794/330 401/560/331 1046/1795/331 +f 1040/1789/326 409/1044/328 413/572/326 +f 1042/1791/327 411/570/210 398/557/327 +f 1047/1796/329 401/560/331 403/562/329 +f 1041/1790/213 404/563/330 1045/1794/330 +f 415/1797/329 421/581/210 420/580/329 +f 406/565/330 417/577/213 419/579/330 +f 415/1797/329 425/1050/331 759/1798/331 +f 408/567/326 417/577/213 405/564/213 +f 416/1799/330 425/585/331 427/588/330 +f 410/573/328 423/583/326 408/567/326 +f 416/1799/330 429/590/213 760/1800/213 +f 400/559/332 422/586/328 410/569/328 +f 412/571/331 419/579/330 432/593/331 +f 414/1801/327 421/581/210 758/1802/210 +f 412/571/331 430/591/333 402/561/329 +f 414/1801/327 431/592/328 418/578/327 +f 402/561/329 426/587/210 399/558/210 +f 761/1803/326 431/592/328 762/1804/328 +f 399/558/210 424/584/332 400/559/332 +f 761/1803/326 429/590/213 428/589/326 +f 1048/1805/334 1049/1806/335 1050/1807/336 +f 1051/1808/337 1052/1809/338 1053/1810/339 +f 1054/1811/340 1055/1812/341 1056/1813/342 +f 1057/1814/343 1058/1815/344 1054/1811/340 +f 1059/1816/345 1050/1807/336 1060/1817/346 +f 1061/1818/347 1052/1809/338 1049/1806/335 +f 1051/1808/337 1055/1812/341 1062/1819/348 +f 1059/1820/345 1063/1821/349 1057/1814/343 +f 1055/1812/341 1064/1822/350 1065/1823/351 +f 1062/1819/348 1066/1824/352 1052/1809/338 +f 1049/1806/335 1067/1825/353 1050/1807/336 +f 1060/1826/346 1068/1827/354 1063/1821/349 +f 1062/1819/348 1065/1823/351 1069/1828/355 +f 1052/1809/338 1070/1829/356 1049/1806/335 +f 1060/1817/346 1067/1825/353 1071/1830/357 +f 1058/1815/344 1068/1827/354 1064/1822/350 +f 1071/1830/357 1072/1831/313 1073/1832/5 +f 1064/1822/350 1074/1833/312 1075/1834/317 +f 1064/1822/350 1076/1835/358 1065/1823/351 +f 1069/1828/355 1077/1836/359 1066/1824/352 +f 1070/1829/356 1072/1831/313 1067/1825/353 +f 1071/1837/357 1074/1833/312 1068/1827/354 +f 1069/1828/355 1076/1835/358 1078/1838/3 +f 1070/1829/356 1077/1836/359 1079/1839/314 +f 1076/1835/358 1080/1840/360 1078/1838/3 +f 1079/1839/314 1081/1841/361 1082/1842/362 +f 1073/1832/5 1083/1843/363 1084/1844/364 +f 1074/1833/312 1085/1845/365 1075/1834/317 +f 1075/1834/317 1086/1846/366 1076/1835/358 +f 1077/1836/359 1080/1840/360 1081/1841/361 +f 1072/1831/313 1082/1842/362 1083/1843/363 +f 1073/1847/5 1087/1848/367 1074/1833/312 +f 1088/1849/368 442/603/210 1089/1850/210 +f 1090/1851/369 444/605/370 1091/1852/370 +f 1092/1853/213 438/599/371 446/607/213 +f 1093/1854/372 439/600/373 436/597/372 +f 1088/1849/368 444/1051/370 448/609/368 +f 1090/1851/369 446/607/213 433/594/369 +f 1093/1854/372 438/599/371 1094/1855/371 +f 1089/1850/210 439/600/373 1095/1856/373 +f 450/1857/371 456/618/213 455/617/371 +f 441/602/373 452/614/210 454/616/373 +f 450/1857/371 460/1057/372 764/1858/372 +f 443/604/368 452/614/210 440/601/210 +f 451/1859/373 460/622/372 462/625/373 +f 445/610/370 458/620/368 443/604/368 +f 451/1859/373 464/627/210 765/1860/210 +f 435/596/374 457/623/370 445/606/370 +f 447/608/372 454/616/373 467/630/372 +f 449/1861/369 456/618/213 763/1862/213 +f 447/608/372 465/628/375 437/598/375 +f 449/1861/369 466/629/370 453/615/369 +f 437/598/375 461/624/213 434/595/213 +f 766/1863/368 466/629/370 767/1864/370 +f 434/595/213 459/621/374 435/596/374 +f 766/1863/368 464/627/210 463/626/368 +f 1096/1865/376 1097/1866/377 1098/1867/378 +f 1099/1868/379 1100/1869/380 1101/1870/381 +f 1102/1871/382 1103/1872/383 1104/1873/384 +f 1105/1874/385 1106/1875/386 1102/1871/382 +f 1107/1876/387 1098/1867/378 1108/1877/388 +f 1109/1878/389 1100/1869/380 1097/1866/377 +f 1099/1868/379 1103/1872/383 1110/1879/390 +f 1107/1880/387 1111/1881/391 1105/1874/385 +f 1103/1872/383 1112/1882/392 1113/1883/393 +f 1110/1879/390 1114/1884/394 1100/1869/380 +f 1097/1866/377 1115/1885/395 1098/1867/378 +f 1108/1886/388 1116/1887/396 1111/1881/391 +f 1110/1879/390 1113/1883/393 1117/1888/243 +f 1100/1869/380 1118/1889/397 1097/1866/377 +f 1108/1877/388 1115/1885/395 1119/1890/398 +f 1106/1875/386 1116/1887/396 1112/1882/392 +f 1119/1890/398 1120/1891/399 1121/1892/5 +f 1112/1882/392 1122/1893/400 1123/1894/401 +f 1112/1882/392 1124/1895/402 1113/1883/393 +f 1117/1888/243 1125/1896/403 1114/1884/394 +f 1118/1889/397 1120/1891/399 1115/1885/395 +f 1119/1897/398 1122/1893/400 1116/1887/396 +f 1117/1888/243 1124/1895/402 1126/1898/3 +f 1118/1889/397 1125/1896/403 1127/1899/404 +f 1124/1895/402 1128/1900/405 1126/1898/3 +f 1127/1899/404 1129/1901/406 1130/1902/407 +f 1121/1892/5 1131/1903/408 1132/1904/409 +f 1122/1893/400 1133/1905/410 1123/1894/401 +f 1123/1894/401 1134/1906/411 1124/1895/402 +f 1125/1896/403 1128/1900/405 1129/1901/406 +f 1120/1891/399 1130/1902/407 1131/1903/408 +f 1121/1907/5 1135/1908/412 1122/1893/400 +f 1136/1909/413 477/640/212 1137/1910/212 +f 1138/1911/414 479/642/415 1139/1912/415 +f 1140/1913/215 473/636/416 481/644/215 +f 1141/1914/417 471/634/418 1142/1915/418 +f 1136/1909/413 479/1058/415 483/646/413 +f 1138/1911/414 481/644/215 468/631/414 +f 1143/1916/416 471/634/418 473/636/416 +f 1137/1910/212 474/637/417 1141/1914/417 +f 485/1917/416 491/655/215 490/654/419 +f 476/639/417 487/651/212 489/653/417 +f 485/1917/416 495/1064/418 769/1918/418 +f 478/641/413 487/651/212 475/638/212 +f 486/1919/417 495/659/418 497/662/417 +f 480/647/415 493/657/413 478/641/413 +f 486/1919/417 499/664/212 770/1920/212 +f 470/633/420 492/660/415 480/643/415 +f 482/645/418 489/653/417 502/667/418 +f 484/1921/414 491/655/215 768/1922/215 +f 482/645/418 500/665/416 472/635/419 +f 484/1921/414 501/666/415 488/652/414 +f 472/635/419 496/661/215 469/632/215 +f 771/1923/413 501/666/415 772/1924/415 +f 469/632/215 494/658/420 470/633/420 +f 771/1923/413 499/664/212 498/663/413 +f 1144/1925/421 1145/1926/422 1146/1927/423 +f 1147/1928/424 1148/1929/425 1149/1930/426 +f 1150/1931/427 1151/1932/428 1152/1933/429 +f 1153/1934/430 1154/1935/431 1150/1931/427 +f 1155/1936/432 1146/1927/423 1156/1937/433 +f 1157/1938/434 1148/1929/425 1145/1926/422 +f 1152/1933/429 1158/1939/435 1147/1928/424 +f 1155/1940/432 1159/1941/436 1153/1934/430 +f 1151/1932/428 1160/1942/437 1161/1943/438 +f 1158/1939/435 1162/1944/439 1148/1929/425 +f 1145/1926/422 1163/1945/440 1146/1927/423 +f 1156/1946/433 1164/1947/441 1159/1941/436 +f 1158/1939/435 1161/1943/438 1165/1948/442 +f 1148/1929/425 1166/1949/443 1145/1926/422 +f 1156/1937/433 1163/1945/440 1167/1950/444 +f 1154/1935/431 1164/1947/441 1160/1942/437 +f 1163/1945/440 1168/1951/5 1167/1950/444 +f 1160/1942/437 1169/1952/399 1170/1953/404 +f 1160/1942/437 1171/1954/403 1161/1943/438 +f 1165/1948/442 1172/1955/402 1162/1944/439 +f 1166/1949/443 1173/1956/400 1163/1945/440 +f 1167/1957/444 1169/1952/399 1164/1947/441 +f 1165/1948/442 1171/1954/403 1174/1958/3 +f 1166/1949/443 1172/1955/402 1175/1959/401 +f 1171/1954/403 1176/1960/445 1174/1958/3 +f 1175/1959/401 1177/1961/446 1178/1962/447 +f 1168/1951/5 1179/1963/448 1180/1964/449 +f 1169/1952/399 1181/1965/450 1170/1953/404 +f 1170/1953/404 1182/1966/451 1171/1954/403 +f 1172/1955/402 1176/1960/445 1177/1961/446 +f 1173/1956/400 1178/1962/447 1179/1963/448 +f 1168/1967/5 1183/1968/452 1169/1952/399 +f 1184/1969/453 512/677/215 1185/1970/215 +f 1186/1971/454 514/679/455 1187/1972/455 +f 1188/1973/212 508/673/456 516/681/212 +f 1189/1974/457 506/671/458 1190/1975/458 +f 1184/1969/453 514/1065/455 518/683/453 +f 1186/1971/454 516/681/212 503/668/454 +f 1190/1975/458 508/673/456 1191/1976/456 +f 1185/1970/215 509/674/457 1189/1974/457 +f 520/1977/456 526/692/212 525/691/456 +f 511/676/457 522/688/215 524/690/457 +f 520/1977/456 530/1071/458 774/1978/458 +f 510/675/215 528/694/453 522/688/215 +f 521/1979/457 530/696/458 532/699/457 +f 515/684/455 528/694/453 513/678/453 +f 521/1979/457 534/701/215 775/1980/215 +f 505/670/454 527/697/455 515/680/455 +f 517/682/458 524/690/457 537/704/458 +f 519/1981/454 526/692/212 773/1982/212 +f 517/682/458 535/702/459 507/672/459 +f 519/1981/454 536/703/455 523/689/454 +f 507/672/459 531/698/212 504/669/212 +f 776/1983/453 536/703/455 777/1984/455 +f 504/669/212 529/695/454 505/670/454 +f 776/1983/453 534/701/215 533/700/453 +f 1192/1985/460 1193/1986/461 1194/1987/462 +f 1195/1988/463 1196/1989/464 1197/1990/465 +f 1198/1991/466 1199/1992/467 1200/1993/468 +f 1201/1994/469 1202/1995/470 1198/1991/466 +f 1203/1996/471 1194/1987/462 1204/1997/472 +f 1197/1990/465 1193/1986/461 1205/1998/473 +f 1195/1988/463 1199/1992/467 1206/1999/474 +f 1203/2000/471 1207/2001/475 1201/1994/469 +f 1199/1992/467 1208/2002/476 1209/2003/477 +f 1206/1999/474 1210/2004/478 1196/1989/464 +f 1193/1986/461 1211/2005/479 1194/1987/462 +f 1204/2006/472 1212/2007/480 1207/2001/475 +f 1206/1999/474 1209/2003/477 1213/2008/481 +f 1196/1989/464 1214/2009/482 1193/1986/461 +f 1204/1997/472 1211/2005/479 1215/2010/483 +f 1202/1995/470 1212/2007/480 1208/2002/476 +f 1215/2010/483 1216/2011/484 1217/2012/5 +f 1208/2002/476 1218/2013/485 1219/2014/486 +f 1208/2002/476 1220/2015/487 1209/2003/477 +f 1213/2008/481 1221/2016/488 1210/2004/478 +f 1214/2009/482 1216/2011/484 1211/2005/479 +f 1215/2017/483 1218/2013/485 1212/2007/480 +f 1213/2008/481 1220/2015/487 1222/2018/3 +f 1214/2009/482 1221/2016/488 1223/2019/489 +f 1220/2015/487 1224/2020/490 1222/2018/3 +f 1223/2019/489 1225/2021/491 1226/2022/492 +f 1217/2012/5 1227/2023/493 1228/2024/494 +f 1218/2013/485 1229/2025/495 1219/2014/486 +f 1219/2014/486 1230/2026/496 1220/2015/487 +f 1221/2016/488 1224/2020/490 1225/2021/491 +f 1216/2011/484 1226/2022/492 1227/2023/493 +f 1217/2027/5 1231/2028/497 1218/2013/485 +f 1232/2029/498 547/714/214 1233/2030/214 +f 1234/2031/499 549/716/500 1235/2032/500 +f 1236/2033/211 543/710/501 551/718/211 +f 1237/2034/502 541/708/503 1238/2035/503 +f 1232/2029/498 549/1072/500 553/720/498 +f 1234/2031/499 551/718/211 538/705/499 +f 1238/2035/503 543/710/501 1239/2036/501 +f 1233/2030/214 544/711/502 1237/2034/502 +f 555/2037/501 561/729/211 560/728/504 +f 546/713/502 557/725/214 559/727/502 +f 555/2037/501 565/1078/503 779/2038/503 +f 548/715/498 557/725/214 545/712/214 +f 556/2039/502 565/733/503 567/736/502 +f 550/721/500 563/731/498 548/715/498 +f 556/2039/502 569/738/214 780/2040/214 +f 540/707/499 562/734/500 550/717/500 +f 552/719/503 559/727/502 572/741/503 +f 554/2041/499 561/729/211 778/2042/211 +f 552/719/503 570/739/501 542/709/501 +f 554/2041/499 571/740/500 558/726/499 +f 542/709/501 566/735/211 539/706/211 +f 781/2043/498 571/740/500 782/2044/500 +f 539/706/211 564/732/499 540/707/499 +f 781/2043/498 569/738/214 568/737/498 +f 1240/2045/505 1241/2046/506 1242/2047/507 +f 1243/2048/508 1244/2049/509 1245/2050/510 +f 1246/2051/511 1247/2052/512 1248/2053/513 +f 1249/2054/514 1250/2055/515 1246/2051/511 +f 1251/2056/516 1242/2047/507 1252/2057/517 +f 1253/2058/518 1244/2049/509 1241/2046/506 +f 1243/2048/508 1247/2052/512 1254/2059/519 +f 1251/2060/516 1255/2061/520 1249/2054/514 +f 1247/2052/512 1256/2062/521 1257/2063/522 +f 1254/2059/519 1258/2064/523 1244/2049/509 +f 1241/2046/506 1259/2065/524 1242/2047/507 +f 1252/2066/517 1260/2067/525 1255/2061/520 +f 1247/2052/512 1261/2068/526 1254/2059/519 +f 1244/2049/509 1262/2069/527 1241/2046/506 +f 1252/2057/517 1259/2065/524 1263/2070/528 +f 1250/2055/515 1260/2067/525 1256/2062/521 +f 1263/2070/528 1264/2071/485 1265/2072/5 +f 1256/2062/521 1266/2073/484 1267/2074/489 +f 1256/2062/521 1268/2075/488 1257/2063/522 +f 1261/2068/526 1269/2076/487 1258/2064/523 +f 1262/2069/527 1264/2071/485 1259/2065/524 +f 1263/2077/528 1266/2073/484 1260/2067/525 +f 1261/2068/526 1268/2075/488 1270/2078/3 +f 1262/2069/527 1269/2076/487 1271/2079/486 +f 1268/2075/488 1272/2080/529 1270/2078/3 +f 1271/2079/486 1273/2081/530 1274/2082/531 +f 1265/2072/5 1275/2083/532 1276/2084/533 +f 1266/2073/484 1277/2085/534 1267/2074/489 +f 1267/2074/489 1278/2086/535 1268/2075/488 +f 1269/2076/487 1272/2080/529 1273/2081/530 +f 1264/2071/485 1274/2082/531 1275/2083/532 +f 1265/2087/5 1279/2088/536 1266/2073/484 +f 1280/2089/537 583/752/211 1281/2090/211 +f 1282/2091/538 584/753/539 1283/2092/539 +f 1284/2093/214 578/747/540 586/755/214 +f 1285/2094/541 579/748/542 576/745/541 +f 1280/2089/537 584/1079/539 582/751/537 +f 1282/2091/538 586/755/214 573/742/538 +f 1286/2095/540 576/745/541 578/747/540 +f 1281/2090/211 579/748/542 1287/2096/542 +f 590/2097/540 596/766/214 595/765/543 +f 581/750/542 592/762/211 594/764/542 +f 590/2097/540 600/1085/541 784/2098/541 +f 580/749/211 598/768/537 592/762/211 +f 591/2099/542 600/770/541 602/773/542 +f 585/757/539 598/768/537 588/758/544 +f 591/2099/542 604/775/211 785/2100/211 +f 575/744/545 597/771/539 585/754/539 +f 587/756/541 594/764/542 607/778/541 +f 589/2101/538 596/766/214 783/2102/214 +f 587/756/541 605/776/540 577/746/543 +f 589/2101/538 606/777/539 593/763/538 +f 577/746/543 601/772/214 574/743/214 +f 786/2103/537 606/777/539 787/2104/539 +f 574/743/214 599/769/538 575/744/545 +f 786/2103/537 604/775/211 603/774/537 +f 1288/2105/4 1289/2106/546 1290/2107/23 +f 1291/2108/205 1292/2109/547 1293/2110/22 +f 1290/2107/23 1294/2111/548 1295/2112/211 +f 1293/2110/22 1296/2113/549 1288/2105/4 +f 1292/2109/547 1297/2114/550 1298/2115/551 +f 1289/2106/546 1299/2116/552 1294/2111/548 +f 1292/2109/547 1300/2117/38 1296/2113/549 +f 1289/2106/546 1300/2117/38 1301/2118/553 +f 1300/2117/38 1302/2119/554 1301/2118/553 +f 1298/2115/551 1303/2120/555 1304/2121/556 +f 1301/2118/553 1305/2122/557 1299/2116/552 +f 1300/2117/38 1304/2121/556 1306/2123/185 +f 1307/2124/4 1308/2125/546 1309/2126/23 +f 1310/2127/205 1311/2128/547 1312/2129/22 +f 1309/2126/23 1313/2130/548 1314/2131/211 +f 1312/2129/22 1315/2132/549 1307/2124/4 +f 1311/2128/547 1316/2133/550 1317/2134/551 +f 1308/2125/546 1318/2135/552 1313/2130/548 +f 1311/2128/547 1319/2136/38 1315/2132/549 +f 1308/2125/546 1319/2136/38 1320/2137/553 +f 1319/2136/38 1321/2138/554 1320/2137/553 +f 1317/2134/551 1322/2139/555 1323/2140/556 +f 1320/2137/553 1324/2141/557 1318/2135/552 +f 1317/2134/551 1325/2142/185 1319/2136/38 +f 1326/2143/4 1327/2144/546 1328/2145/23 +f 1329/2146/205 1330/2147/547 1331/2148/22 +f 1328/2145/23 1332/2149/548 1333/2150/211 +f 1331/2148/22 1334/2151/549 1326/2143/4 +f 1330/2147/547 1335/2152/550 1336/2153/551 +f 1327/2144/546 1337/2154/552 1332/2149/548 +f 1330/2147/547 1338/2155/38 1334/2151/549 +f 1327/2144/546 1338/2155/38 1339/2156/553 +f 1338/2155/38 1340/2157/554 1339/2156/553 +f 1336/2153/551 1341/2158/555 1342/2159/556 +f 1339/2156/553 1343/2160/557 1337/2154/552 +f 1336/2153/551 1344/2161/185 1338/2155/38 +f 791/1495/166 804/1508/177 792/1496/167 +f 794/1498/19 805/1509/178 795/1499/169 +f 797/1501/171 801/1505/175 798/1502/172 +f 800/1504/174 806/1511/179 801/1505/175 +f 802/1506/17 791/1495/166 793/1497/168 +f 804/1508/177 796/1500/170 795/1499/169 +f 794/1498/19 799/1503/173 798/1502/172 +f 802/1510/17 803/1516/176 806/1511/179 +f 798/1502/172 801/1505/175 807/1512/180 +f 805/1509/178 812/1518/185 809/1514/182 +f 792/1496/167 813/1519/186 810/1515/183 +f 803/1516/176 814/1527/14 811/1517/184 +f 805/1509/178 798/1502/172 808/1513/181 +f 795/1499/169 809/1514/182 813/1519/186 +f 803/1507/176 793/1497/168 810/1515/183 +f 801/1505/175 806/1511/179 811/1517/184 +f 814/1520/14 810/1515/183 815/1521/187 +f 807/1512/180 811/1517/184 817/1523/188 +f 807/1512/180 818/1524/189 819/1525/190 +f 812/1518/185 821/1528/3 820/1526/191 +f 813/1519/186 822/1529/192 815/1521/187 +f 814/1527/14 816/1537/5 817/1523/188 +f 812/1518/185 808/1513/181 819/1525/190 +f 813/1519/186 809/1514/182 820/1526/191 +f 819/1525/190 829/1536/199 823/1530/193 +f 822/1529/192 820/1526/191 824/1531/194 +f 816/1522/5 815/1521/187 826/1533/196 +f 817/1523/188 830/1538/200 828/1535/198 +f 818/1524/189 828/1535/198 829/1536/199 +f 820/1526/191 821/1528/3 823/1530/193 +f 815/1521/187 822/1529/192 825/1532/195 +f 816/1537/5 827/2162/197 830/1538/200 +f 831/1539/201 52/80/201 46/74/202 +f 833/1541/203 37/65/203 48/76/204 +f 835/1543/205 838/1546/206 42/70/206 +f 836/1544/207 43/71/207 40/68/208 +f 831/1539/201 834/2163/204 48/942/204 +f 833/1541/203 835/1543/205 50/78/205 +f 837/1545/208 40/68/208 42/70/206 +f 832/1540/202 46/74/202 43/71/207 +f 54/1547/206 737/1552/205 60/89/205 +f 45/73/207 44/72/202 56/85/202 +f 54/1547/206 59/88/206 64/948/208 +f 47/75/201 62/91/201 56/85/202 +f 55/1549/207 738/2164/208 64/93/208 +f 49/81/204 61/90/204 62/91/201 +f 55/1549/207 66/96/207 68/98/202 +f 39/67/209 63/92/209 61/94/204 +f 51/79/208 45/73/207 58/87/207 +f 53/1551/203 57/86/203 60/89/205 +f 51/79/208 71/101/208 69/99/206 +f 53/1551/203 741/1554/204 70/100/204 +f 38/66/205 41/69/206 69/99/206 +f 740/1553/201 67/97/201 70/100/204 +f 38/66/205 65/95/205 63/92/209 +f 740/1553/201 739/1550/202 68/98/202 +f 839/1555/210 80/112/210 82/114/211 +f 841/1557/202 87/119/202 88/120/212 +f 843/1559/213 91/125/213 93/127/214 +f 845/1561/205 95/129/205 96/130/215 +f 840/1556/211 82/114/211 87/119/202 +f 842/1558/212 88/120/212 91/124/213 +f 844/1560/214 93/127/214 95/129/205 +f 846/1562/215 96/130/215 80/112/210 +f 98/951/210 100/135/210 103/962/211 +f 85/1564/213 101/155/213 111/157/212 +f 84/1566/214 99/134/214 101/136/213 +f 81/957/211 103/138/211 747/963/202 +f 83/1568/205 102/137/205 99/139/214 +f 86/121/202 747/964/202 104/140/212 +f 746/1570/215 105/142/215 102/141/205 +f 89/958/212 104/965/212 106/143/213 +f 97/961/215 113/156/215 100/969/210 +f 742/1572/212 111/152/212 110/154/202 +f 94/131/205 112/153/205 113/968/215 +f 743/1574/202 110/149/202 109/151/211 +f 92/960/214 108/150/214 112/967/205 +f 744/1576/211 109/148/211 107/147/210 +f 90/959/213 106/966/213 108/146/214 +f 745/1578/210 107/145/210 105/144/215 +f 847/1580/216 904/1637/239 848/1581/217 +f 850/1583/219 1345/2165/250 851/1584/220 +f 853/1586/222 865/1598/234 854/1587/223 +f 856/1589/225 860/1593/229 857/1590/226 +f 857/1590/226 860/1593/229 853/1586/222 +f 859/1592/228 862/1595/231 856/1589/225 +f 860/1593/229 1346/2166/526 861/1594/230 +f 862/1595/231 1347/2167/238 863/1596/232 +f 853/1586/222 861/1594/230 864/1597/233 +f 863/1596/232 1346/2166/526 860/1593/229 +f 866/1599/235 877/1610/234 867/1600/223 +f 869/1602/236 874/1607/229 870/1603/226 +f 870/1603/226 874/1607/229 866/1599/235 +f 872/1605/231 869/1602/236 871/1604/227 +f 874/1607/229 1348/2168/526 875/1608/230 +f 872/1605/231 1349/2169/238 876/1609/232 +f 875/1608/230 1350/2170/233 877/1610/234 +f 876/1609/232 1348/2168/526 874/1607/229 +f 878/1611/222 890/1623/234 879/1612/223 +f 881/1614/236 886/1619/229 882/1615/226 +f 882/1615/226 886/1619/229 878/1611/222 +f 884/1617/231 881/1614/236 883/1616/227 +f 886/1619/229 1351/2171/526 887/1620/230 +f 888/1621/238 891/1624/232 881/1614/236 +f 878/1611/222 887/1620/230 889/1622/233 +f 891/1624/232 1351/2171/526 886/1619/229 +f 854/1587/223 1352/2172/210 892/1625/4 +f 867/1600/223 1353/2173/210 893/1626/4 +f 855/1588/224 892/1625/4 894/1627/22 +f 857/1590/226 894/1627/22 895/1628/1 +f 879/1612/223 1354/2174/210 896/1629/4 +f 868/1601/224 893/1626/4 897/1630/22 +f 858/1591/227 895/1628/1 898/1631/214 +f 870/1603/226 897/1630/22 899/1632/1 +f 880/1613/224 896/1629/4 900/1633/22 +f 882/1615/226 900/1633/22 901/1634/1 +f 871/1604/227 899/1632/1 902/1635/214 +f 883/1616/227 901/1634/1 903/1636/214 +f 847/1580/216 852/1585/221 851/1584/220 +f 905/1638/240 849/1582/218 848/1581/217 +f 904/1637/239 851/1584/220 907/1640/242 +f 906/1639/241 848/1581/217 909/1642/244 +f 851/1584/220 1345/2165/250 911/1644/246 +f 904/1637/239 908/1641/243 909/1642/244 +f 912/1645/219 925/1658/250 913/1646/247 +f 915/1648/216 918/1651/239 916/1649/248 +f 915/1648/216 914/1647/221 913/1646/247 +f 917/1650/218 916/1649/248 919/1652/241 +f 918/1651/239 913/1646/247 921/1654/242 +f 919/1652/241 916/1649/248 923/1656/244 +f 925/1658/250 1355/2175/246 921/1654/242 +f 918/1651/239 922/1655/243 923/1656/244 +f 926/1659/219 1356/2176/250 927/1660/220 +f 929/1662/216 932/1665/239 930/1663/248 +f 929/1662/216 928/1661/221 927/1660/220 +f 931/1664/218 930/1663/248 933/1666/241 +f 932/1665/239 927/1660/220 935/1668/242 +f 930/1663/248 939/1672/244 937/1670/245 +f 927/1660/220 1356/2176/250 938/1671/246 +f 932/1665/239 936/1669/243 939/1672/244 +f 940/1673/4 1357/2177/215 850/1583/219 +f 941/1674/4 1358/2178/215 912/1645/219 +f 942/1675/23 940/1673/4 852/1585/221 +f 943/1676/13 942/1675/23 847/1580/216 +f 944/1677/4 1359/2179/215 926/1659/219 +f 945/1678/23 941/1674/4 914/1647/221 +f 946/1679/202 943/1676/13 849/1582/218 +f 947/1680/13 945/1678/23 915/1648/216 +f 948/1681/23 944/1677/4 928/1661/221 +f 949/1682/13 948/1681/23 929/1662/216 +f 950/1683/202 947/1680/13 917/1650/218 +f 951/1684/202 949/1682/13 931/1664/218 +f 952/1685/251 965/1698/262 953/1686/252 +f 955/1688/15 966/1699/263 956/1689/254 +f 958/1691/256 962/1695/260 959/1692/257 +f 961/1694/259 967/1701/264 962/1695/260 +f 963/1696/16 952/1685/251 954/1687/253 +f 957/1690/255 956/1689/254 953/1686/252 +f 955/1688/15 960/1693/258 959/1692/257 +f 963/1700/16 964/1706/261 967/1701/264 +f 959/1692/257 962/1695/260 968/1702/265 +f 966/1699/263 973/1708/18 970/1704/267 +f 953/1686/252 974/1709/270 971/1705/268 +f 964/1706/261 975/1717/20 972/1707/269 +f 966/1699/263 959/1692/257 969/1703/266 +f 956/1689/254 970/1704/267 974/1709/270 +f 964/1697/261 954/1687/253 971/1705/268 +f 962/1695/260 967/1701/264 972/1707/269 +f 975/1710/20 971/1705/268 976/1711/188 +f 968/1702/265 972/1707/269 978/1713/187 +f 968/1702/265 979/1714/192 980/1715/271 +f 973/1708/18 982/1718/3 981/1716/272 +f 974/1709/270 983/1719/189 976/1711/188 +f 975/1717/20 977/1727/5 978/1713/187 +f 973/1708/18 969/1703/266 980/1715/271 +f 974/1709/270 970/1704/267 981/1716/272 +f 980/1715/271 990/1726/279 984/1720/273 +f 983/1719/189 981/1716/272 985/1721/274 +f 977/1712/5 976/1711/188 987/1723/276 +f 978/1713/187 991/1728/280 989/1725/278 +f 979/1714/192 989/1725/278 990/1726/279 +f 981/1716/272 982/1718/3 984/1720/273 +f 976/1711/188 983/1719/189 986/1722/275 +f 977/1727/5 988/2180/277 991/1728/280 +f 992/1729/281 378/535/281 372/529/205 +f 994/1731/282 363/520/282 374/531/283 +f 996/1733/202 999/1736/284 368/525/284 +f 997/1734/285 369/526/285 366/523/286 +f 992/1729/281 995/2181/283 374/1037/283 +f 994/1731/282 996/1733/202 376/533/202 +f 998/1735/286 366/523/286 368/525/284 +f 993/1730/205 372/529/205 369/526/285 +f 380/1737/284 753/1742/202 386/544/202 +f 371/528/285 370/527/205 382/540/205 +f 380/1737/284 385/543/284 390/1043/286 +f 373/530/281 388/546/281 382/540/205 +f 381/1739/285 754/2182/286 390/548/286 +f 375/536/283 387/545/283 388/546/281 +f 381/1739/285 392/551/285 391/550/205 +f 365/522/287 389/547/287 387/549/283 +f 377/534/286 371/528/285 384/542/285 +f 379/1741/282 383/541/282 386/544/202 +f 377/534/286 397/556/286 395/554/284 +f 379/1741/282 757/1744/283 396/555/283 +f 364/521/202 367/524/284 395/554/284 +f 756/1743/281 394/553/281 396/555/283 +f 364/521/202 393/552/202 389/547/287 +f 756/1743/281 755/1740/205 391/550/205 +f 1000/1745/288 1013/1758/301 1001/1746/289 +f 1003/1748/291 1014/1759/302 1004/1749/292 +f 1006/1751/294 1010/1755/298 1007/1752/295 +f 1009/1754/297 1015/1761/303 1010/1755/298 +f 1011/1756/299 1000/1745/288 1002/1747/290 +f 1005/1750/293 1004/1749/292 1001/1746/289 +f 1003/1748/291 1008/1753/296 1007/1752/295 +f 1011/1760/299 1012/1766/300 1015/1761/303 +f 1007/1752/295 1010/1755/298 1016/1762/304 +f 1014/1759/302 1021/1768/309 1018/1764/306 +f 1001/1746/289 1022/1769/310 1019/1765/307 +f 1012/1766/300 1023/1777/311 1020/1767/308 +f 1014/1759/302 1007/1752/295 1017/1763/305 +f 1004/1749/292 1018/1764/306 1022/1769/310 +f 1012/1757/300 1002/1747/290 1019/1765/307 +f 1010/1755/298 1015/1761/303 1020/1767/308 +f 1023/1770/311 1019/1765/307 1024/1771/312 +f 1016/1762/304 1020/1767/308 1026/1773/313 +f 1016/1762/304 1027/1774/314 1028/1775/315 +f 1021/1768/309 1030/1778/3 1029/1776/316 +f 1022/1769/310 1031/1779/317 1024/1771/312 +f 1023/1777/311 1025/1787/5 1026/1773/313 +f 1021/1768/309 1017/1763/305 1028/1775/315 +f 1022/1769/310 1018/1764/306 1029/1776/316 +f 1028/1775/315 1038/1786/324 1032/1780/318 +f 1031/1779/317 1029/1776/316 1033/1781/319 +f 1025/1772/5 1024/1771/312 1035/1783/321 +f 1026/1773/313 1039/1788/325 1037/1785/323 +f 1027/1774/314 1037/1785/323 1038/1786/324 +f 1029/1776/316 1030/1778/3 1032/1780/318 +f 1024/1771/312 1031/1779/317 1034/1782/320 +f 1025/1787/5 1036/2183/322 1039/1788/325 +f 1040/1789/326 413/572/326 407/566/213 +f 1042/1791/327 398/557/327 409/568/328 +f 1044/1793/210 1047/1796/329 403/562/329 +f 1045/1794/330 404/563/330 401/560/331 +f 1040/1789/326 1043/2184/328 409/1044/328 +f 1042/1791/327 1044/1793/210 411/570/210 +f 1047/1796/329 1046/1795/331 401/560/331 +f 1041/1790/213 407/566/213 404/563/330 +f 415/1797/329 758/1802/210 421/581/210 +f 406/565/330 405/564/213 417/577/213 +f 415/1797/329 420/580/329 425/1050/331 +f 408/567/326 423/583/326 417/577/213 +f 416/1799/330 759/2185/331 425/585/331 +f 410/573/328 422/582/328 423/583/326 +f 416/1799/330 427/588/330 429/590/213 +f 400/559/332 424/584/332 422/586/328 +f 412/571/331 406/565/330 419/579/330 +f 414/1801/327 418/578/327 421/581/210 +f 412/571/331 432/593/331 430/591/333 +f 414/1801/327 762/1804/328 431/592/328 +f 402/561/329 430/591/333 426/587/210 +f 761/1803/326 428/589/326 431/592/328 +f 399/558/210 426/587/210 424/584/332 +f 761/1803/326 760/1800/213 429/590/213 +f 1048/1805/334 1061/1818/347 1049/1806/335 +f 1051/1808/337 1062/1819/348 1052/1809/338 +f 1054/1811/340 1058/1815/344 1055/1812/341 +f 1057/1814/343 1063/1821/349 1058/1815/344 +f 1059/1816/345 1048/1805/334 1050/1807/336 +f 1061/1818/347 1053/1810/339 1052/1809/338 +f 1051/1808/337 1056/1813/342 1055/1812/341 +f 1059/1820/345 1060/1826/346 1063/1821/349 +f 1055/1812/341 1058/1815/344 1064/1822/350 +f 1062/1819/348 1069/1828/355 1066/1824/352 +f 1049/1806/335 1070/1829/356 1067/1825/353 +f 1060/1826/346 1071/1837/357 1068/1827/354 +f 1062/1819/348 1055/1812/341 1065/1823/351 +f 1052/1809/338 1066/1824/352 1070/1829/356 +f 1060/1817/346 1050/1807/336 1067/1825/353 +f 1058/1815/344 1063/1821/349 1068/1827/354 +f 1071/1830/357 1067/1825/353 1072/1831/313 +f 1064/1822/350 1068/1827/354 1074/1833/312 +f 1064/1822/350 1075/1834/317 1076/1835/358 +f 1069/1828/355 1078/1838/3 1077/1836/359 +f 1070/1829/356 1079/1839/314 1072/1831/313 +f 1071/1837/357 1073/1847/5 1074/1833/312 +f 1069/1828/355 1065/1823/351 1076/1835/358 +f 1070/1829/356 1066/1824/352 1077/1836/359 +f 1076/1835/358 1086/1846/366 1080/1840/360 +f 1079/1839/314 1077/1836/359 1081/1841/361 +f 1073/1832/5 1072/1831/313 1083/1843/363 +f 1074/1833/312 1087/1848/367 1085/1845/365 +f 1075/1834/317 1085/1845/365 1086/1846/366 +f 1077/1836/359 1078/1838/3 1080/1840/360 +f 1072/1831/313 1079/1839/314 1082/1842/362 +f 1073/1847/5 1084/2186/364 1087/1848/367 +f 1088/1849/368 448/609/368 442/603/210 +f 1090/1851/369 433/594/369 444/605/370 +f 1092/1853/213 1094/1855/371 438/599/371 +f 1093/1854/372 1095/1856/373 439/600/373 +f 1088/1849/368 1091/2187/370 444/1051/370 +f 1090/1851/369 1092/1853/213 446/607/213 +f 1093/1854/372 436/597/372 438/599/371 +f 1089/1850/210 442/603/210 439/600/373 +f 450/1857/371 763/1862/213 456/618/213 +f 441/602/373 440/601/210 452/614/210 +f 450/1857/371 455/617/371 460/1057/372 +f 443/604/368 458/620/368 452/614/210 +f 451/1859/373 764/2188/372 460/622/372 +f 445/610/370 457/619/370 458/620/368 +f 451/1859/373 462/625/373 464/627/210 +f 435/596/374 459/621/374 457/623/370 +f 447/608/372 441/602/373 454/616/373 +f 449/1861/369 453/615/369 456/618/213 +f 447/608/372 467/630/372 465/628/375 +f 449/1861/369 767/1864/370 466/629/370 +f 437/598/375 465/628/375 461/624/213 +f 766/1863/368 463/626/368 466/629/370 +f 434/595/213 461/624/213 459/621/374 +f 766/1863/368 765/1860/210 464/627/210 +f 1096/1865/376 1109/1878/389 1097/1866/377 +f 1099/1868/379 1110/1879/390 1100/1869/380 +f 1102/1871/382 1106/1875/386 1103/1872/383 +f 1105/1874/385 1111/1881/391 1106/1875/386 +f 1107/1876/387 1096/1865/376 1098/1867/378 +f 1109/1878/389 1101/1870/381 1100/1869/380 +f 1099/1868/379 1104/1873/384 1103/1872/383 +f 1107/1880/387 1108/1886/388 1111/1881/391 +f 1103/1872/383 1106/1875/386 1112/1882/392 +f 1110/1879/390 1117/1888/243 1114/1884/394 +f 1097/1866/377 1118/1889/397 1115/1885/395 +f 1108/1886/388 1119/1897/398 1116/1887/396 +f 1110/1879/390 1103/1872/383 1113/1883/393 +f 1100/1869/380 1114/1884/394 1118/1889/397 +f 1108/1877/388 1098/1867/378 1115/1885/395 +f 1106/1875/386 1111/1881/391 1116/1887/396 +f 1119/1890/398 1115/1885/395 1120/1891/399 +f 1112/1882/392 1116/1887/396 1122/1893/400 +f 1112/1882/392 1123/1894/401 1124/1895/402 +f 1117/1888/243 1126/1898/3 1125/1896/403 +f 1118/1889/397 1127/1899/404 1120/1891/399 +f 1119/1897/398 1121/1907/5 1122/1893/400 +f 1117/1888/243 1113/1883/393 1124/1895/402 +f 1118/1889/397 1114/1884/394 1125/1896/403 +f 1124/1895/402 1134/1906/411 1128/1900/405 +f 1127/1899/404 1125/1896/403 1129/1901/406 +f 1121/1892/5 1120/1891/399 1131/1903/408 +f 1122/1893/400 1135/1908/412 1133/1905/410 +f 1123/1894/401 1133/1905/410 1134/1906/411 +f 1125/1896/403 1126/1898/3 1128/1900/405 +f 1120/1891/399 1127/1899/404 1130/1902/407 +f 1121/1907/5 1132/2189/409 1135/1908/412 +f 1136/1909/413 483/646/413 477/640/212 +f 1138/1911/414 468/631/414 479/642/415 +f 1140/1913/215 1143/1916/416 473/636/416 +f 1141/1914/417 474/637/417 471/634/418 +f 1136/1909/413 1139/2190/415 479/1058/415 +f 1138/1911/414 1140/1913/215 481/644/215 +f 1143/1916/416 1142/1915/418 471/634/418 +f 1137/1910/212 477/640/212 474/637/417 +f 485/1917/416 768/1922/215 491/655/215 +f 476/639/417 475/638/212 487/651/212 +f 485/1917/416 490/654/419 495/1064/418 +f 478/641/413 493/657/413 487/651/212 +f 486/1919/417 769/2191/418 495/659/418 +f 480/647/415 492/656/415 493/657/413 +f 486/1919/417 497/662/417 499/664/212 +f 470/633/420 494/658/420 492/660/415 +f 482/645/418 476/639/417 489/653/417 +f 484/1921/414 488/652/414 491/655/215 +f 482/645/418 502/667/418 500/665/416 +f 484/1921/414 772/1924/415 501/666/415 +f 472/635/419 500/665/416 496/661/215 +f 771/1923/413 498/663/413 501/666/415 +f 469/632/215 496/661/215 494/658/420 +f 771/1923/413 770/1920/212 499/664/212 +f 1144/1925/421 1157/1938/434 1145/1926/422 +f 1147/1928/424 1158/1939/435 1148/1929/425 +f 1150/1931/427 1154/1935/431 1151/1932/428 +f 1153/1934/430 1159/1941/436 1154/1935/431 +f 1155/1936/432 1144/1925/421 1146/1927/423 +f 1157/1938/434 1149/1930/426 1148/1929/425 +f 1152/1933/429 1151/1932/428 1158/1939/435 +f 1155/1940/432 1156/1946/433 1159/1941/436 +f 1151/1932/428 1154/1935/431 1160/1942/437 +f 1158/1939/435 1165/1948/442 1162/1944/439 +f 1145/1926/422 1166/1949/443 1163/1945/440 +f 1156/1946/433 1167/1957/444 1164/1947/441 +f 1158/1939/435 1151/1932/428 1161/1943/438 +f 1148/1929/425 1162/1944/439 1166/1949/443 +f 1156/1937/433 1146/1927/423 1163/1945/440 +f 1154/1935/431 1159/1941/436 1164/1947/441 +f 1163/1945/440 1173/1956/400 1168/1951/5 +f 1160/1942/437 1164/1947/441 1169/1952/399 +f 1160/1942/437 1170/1953/404 1171/1954/403 +f 1165/1948/442 1174/1958/3 1172/1955/402 +f 1166/1949/443 1175/1959/401 1173/1956/400 +f 1167/1957/444 1168/1967/5 1169/1952/399 +f 1165/1948/442 1161/1943/438 1171/1954/403 +f 1166/1949/443 1162/1944/439 1172/1955/402 +f 1171/1954/403 1182/1966/451 1176/1960/445 +f 1175/1959/401 1172/1955/402 1177/1961/446 +f 1168/1951/5 1173/1956/400 1179/1963/448 +f 1169/1952/399 1183/1968/452 1181/1965/450 +f 1170/1953/404 1181/1965/450 1182/1966/451 +f 1172/1955/402 1174/1958/3 1176/1960/445 +f 1173/1956/400 1175/1959/401 1178/1962/447 +f 1168/1967/5 1180/2192/449 1183/1968/452 +f 1184/1969/453 518/683/453 512/677/215 +f 1186/1971/454 503/668/454 514/679/455 +f 1188/1973/212 1191/1976/456 508/673/456 +f 1189/1974/457 509/674/457 506/671/458 +f 1184/1969/453 1187/2193/455 514/1065/455 +f 1186/1971/454 1188/1973/212 516/681/212 +f 1190/1975/458 506/671/458 508/673/456 +f 1185/1970/215 512/677/215 509/674/457 +f 520/1977/456 773/1982/212 526/692/212 +f 511/676/457 510/675/215 522/688/215 +f 520/1977/456 525/691/456 530/1071/458 +f 510/675/215 513/678/453 528/694/453 +f 521/1979/457 774/2194/458 530/696/458 +f 515/684/455 527/693/455 528/694/453 +f 521/1979/457 532/699/457 534/701/215 +f 505/670/454 529/695/454 527/697/455 +f 517/682/458 511/676/457 524/690/457 +f 519/1981/454 523/689/454 526/692/212 +f 517/682/458 537/704/458 535/702/459 +f 519/1981/454 777/1984/455 536/703/455 +f 507/672/459 535/702/459 531/698/212 +f 776/1983/453 533/700/453 536/703/455 +f 504/669/212 531/698/212 529/695/454 +f 776/1983/453 775/1980/215 534/701/215 +f 1192/1985/460 1205/1998/473 1193/1986/461 +f 1195/1988/463 1206/1999/474 1196/1989/464 +f 1198/1991/466 1202/1995/470 1199/1992/467 +f 1201/1994/469 1207/2001/475 1202/1995/470 +f 1203/1996/471 1192/1985/460 1194/1987/462 +f 1197/1990/465 1196/1989/464 1193/1986/461 +f 1195/1988/463 1200/1993/468 1199/1992/467 +f 1203/2000/471 1204/2006/472 1207/2001/475 +f 1199/1992/467 1202/1995/470 1208/2002/476 +f 1206/1999/474 1213/2008/481 1210/2004/478 +f 1193/1986/461 1214/2009/482 1211/2005/479 +f 1204/2006/472 1215/2017/483 1212/2007/480 +f 1206/1999/474 1199/1992/467 1209/2003/477 +f 1196/1989/464 1210/2004/478 1214/2009/482 +f 1204/1997/472 1194/1987/462 1211/2005/479 +f 1202/1995/470 1207/2001/475 1212/2007/480 +f 1215/2010/483 1211/2005/479 1216/2011/484 +f 1208/2002/476 1212/2007/480 1218/2013/485 +f 1208/2002/476 1219/2014/486 1220/2015/487 +f 1213/2008/481 1222/2018/3 1221/2016/488 +f 1214/2009/482 1223/2019/489 1216/2011/484 +f 1215/2017/483 1217/2027/5 1218/2013/485 +f 1213/2008/481 1209/2003/477 1220/2015/487 +f 1214/2009/482 1210/2004/478 1221/2016/488 +f 1220/2015/487 1230/2026/496 1224/2020/490 +f 1223/2019/489 1221/2016/488 1225/2021/491 +f 1217/2012/5 1216/2011/484 1227/2023/493 +f 1218/2013/485 1231/2028/497 1229/2025/495 +f 1219/2014/486 1229/2025/495 1230/2026/496 +f 1221/2016/488 1222/2018/3 1224/2020/490 +f 1216/2011/484 1223/2019/489 1226/2022/492 +f 1217/2027/5 1228/2195/494 1231/2028/497 +f 1232/2029/498 553/720/498 547/714/214 +f 1234/2031/499 538/705/499 549/716/500 +f 1236/2033/211 1239/2036/501 543/710/501 +f 1237/2034/502 544/711/502 541/708/503 +f 1232/2029/498 1235/2196/500 549/1072/500 +f 1234/2031/499 1236/2033/211 551/718/211 +f 1238/2035/503 541/708/503 543/710/501 +f 1233/2030/214 547/714/214 544/711/502 +f 555/2037/501 778/2042/211 561/729/211 +f 546/713/502 545/712/214 557/725/214 +f 555/2037/501 560/728/504 565/1078/503 +f 548/715/498 563/731/498 557/725/214 +f 556/2039/502 779/2197/503 565/733/503 +f 550/721/500 562/730/500 563/731/498 +f 556/2039/502 567/736/502 569/738/214 +f 540/707/499 564/732/499 562/734/500 +f 552/719/503 546/713/502 559/727/502 +f 554/2041/499 558/726/499 561/729/211 +f 552/719/503 572/741/503 570/739/501 +f 554/2041/499 782/2044/500 571/740/500 +f 542/709/501 570/739/501 566/735/211 +f 781/2043/498 568/737/498 571/740/500 +f 539/706/211 566/735/211 564/732/499 +f 781/2043/498 780/2040/214 569/738/214 +f 1240/2045/505 1253/2058/518 1241/2046/506 +f 1243/2048/508 1254/2059/519 1244/2049/509 +f 1246/2051/511 1250/2055/515 1247/2052/512 +f 1249/2054/514 1255/2061/520 1250/2055/515 +f 1251/2056/516 1240/2045/505 1242/2047/507 +f 1253/2058/518 1245/2050/510 1244/2049/509 +f 1243/2048/508 1248/2053/513 1247/2052/512 +f 1251/2060/516 1252/2066/517 1255/2061/520 +f 1247/2052/512 1250/2055/515 1256/2062/521 +f 1254/2059/519 1261/2068/526 1258/2064/523 +f 1241/2046/506 1262/2069/527 1259/2065/524 +f 1252/2066/517 1263/2077/528 1260/2067/525 +f 1247/2052/512 1257/2063/522 1261/2068/526 +f 1244/2049/509 1258/2064/523 1262/2069/527 +f 1252/2057/517 1242/2047/507 1259/2065/524 +f 1250/2055/515 1255/2061/520 1260/2067/525 +f 1263/2070/528 1259/2065/524 1264/2071/485 +f 1256/2062/521 1260/2067/525 1266/2073/484 +f 1256/2062/521 1267/2074/489 1268/2075/488 +f 1261/2068/526 1270/2078/3 1269/2076/487 +f 1262/2069/527 1271/2079/486 1264/2071/485 +f 1263/2077/528 1265/2087/5 1266/2073/484 +f 1261/2068/526 1257/2063/522 1268/2075/488 +f 1262/2069/527 1258/2064/523 1269/2076/487 +f 1268/2075/488 1278/2086/535 1272/2080/529 +f 1271/2079/486 1269/2076/487 1273/2081/530 +f 1265/2072/5 1264/2071/485 1275/2083/532 +f 1266/2073/484 1279/2088/536 1277/2085/534 +f 1267/2074/489 1277/2085/534 1278/2086/535 +f 1269/2076/487 1270/2078/3 1272/2080/529 +f 1264/2071/485 1271/2079/486 1274/2082/531 +f 1265/2087/5 1276/2198/533 1279/2088/536 +f 1280/2089/537 582/751/537 583/752/211 +f 1282/2091/538 573/742/538 584/753/539 +f 1284/2093/214 1286/2095/540 578/747/540 +f 1285/2094/541 1287/2096/542 579/748/542 +f 1280/2089/537 1283/2199/539 584/1079/539 +f 1282/2091/538 1284/2093/214 586/755/214 +f 1286/2095/540 1285/2094/541 576/745/541 +f 1281/2090/211 583/752/211 579/748/542 +f 590/2097/540 783/2102/214 596/766/214 +f 581/750/542 580/749/211 592/762/211 +f 590/2097/540 595/765/543 600/1085/541 +f 580/749/211 588/758/544 598/768/537 +f 591/2099/542 784/2200/541 600/770/541 +f 585/757/539 597/767/539 598/768/537 +f 591/2099/542 602/773/542 604/775/211 +f 575/744/545 599/769/538 597/771/539 +f 587/756/541 581/750/542 594/764/542 +f 589/2101/538 593/763/538 596/766/214 +f 587/756/541 607/778/541 605/776/540 +f 589/2101/538 787/2104/539 606/777/539 +f 577/746/543 605/776/540 601/772/214 +f 786/2103/537 603/774/537 606/777/539 +f 574/743/214 601/772/214 599/769/538 +f 786/2103/537 785/2100/211 604/775/211 +f 1288/2105/4 1296/2113/549 1289/2106/546 +f 1291/2108/205 1360/2201/558 1292/2109/547 +f 1290/2107/23 1289/2106/546 1294/2111/548 +f 1293/2110/22 1292/2109/547 1296/2113/549 +f 1292/2109/547 1360/2201/558 1297/2114/550 +f 1289/2106/546 1301/2118/553 1299/2116/552 +f 1292/2109/547 1298/2115/551 1300/2117/38 +f 1289/2106/546 1296/2113/549 1300/2117/38 +f 1300/2117/38 1306/2123/185 1302/2119/554 +f 1298/2115/551 1297/2114/550 1303/2120/555 +f 1301/2118/553 1302/2119/554 1305/2122/557 +f 1300/2117/38 1298/2115/551 1304/2121/556 +f 1307/2124/4 1315/2132/549 1308/2125/546 +f 1310/2127/205 1361/2202/558 1311/2128/547 +f 1309/2126/23 1308/2125/546 1313/2130/548 +f 1312/2129/22 1311/2128/547 1315/2132/549 +f 1311/2128/547 1361/2202/558 1316/2133/550 +f 1308/2125/546 1320/2137/553 1318/2135/552 +f 1311/2128/547 1317/2134/551 1319/2136/38 +f 1308/2125/546 1315/2132/549 1319/2136/38 +f 1319/2136/38 1325/2142/185 1321/2138/554 +f 1317/2134/551 1316/2133/550 1322/2139/555 +f 1320/2137/553 1321/2138/554 1324/2141/557 +f 1317/2134/551 1323/2140/556 1325/2142/185 +f 1326/2143/4 1334/2151/549 1327/2144/546 +f 1329/2146/205 1362/2203/558 1330/2147/547 +f 1328/2145/23 1327/2144/546 1332/2149/548 +f 1331/2148/22 1330/2147/547 1334/2151/549 +f 1330/2147/547 1362/2203/558 1335/2152/550 +f 1327/2144/546 1339/2156/553 1337/2154/552 +f 1330/2147/547 1336/2153/551 1338/2155/38 +f 1327/2144/546 1334/2151/549 1338/2155/38 +f 1338/2155/38 1344/2161/185 1340/2157/554 +f 1336/2153/551 1335/2152/550 1341/2158/555 +f 1339/2156/553 1340/2157/554 1343/2160/557 +f 1336/2153/551 1342/2159/556 1344/2161/185 +f 1583/2204/559 1584/2205/158 1585/2206/559 +f 1586/2207/1 1587/2208/560 1588/2209/1 +f 1460/1242/561 1589/2210/562 1461/1243/561 +f 1583/2204/559 1590/2211/563 1591/2212/563 +f 1592/2213/564 1588/2209/1 1593/2214/564 +f 1466/1248/562 1594/2215/565 1589/2210/562 +f 1595/2216/566 1459/2217/567 1596/2218/566 +f 1567/2219/568 1590/2211/563 1463/2220/568 +f 1592/2213/564 1584/2205/158 1597/2221/158 +f 1568/2222/565 1598/2223/13 1594/2215/565 +f 1595/2216/566 1587/2208/560 1599/2224/560 +f 1462/1244/569 1598/2223/13 1600/2225/13 +f 1601/2226/562 1602/2227/155 1603/2228/155 +f 1604/2229/1 1605/2230/560 1606/2231/1 +f 1607/2232/570 1608/2233/563 1609/2234/570 +f 1610/2235/559 1611/2236/158 1612/2237/559 +f 1601/2226/562 1613/2238/565 1614/2239/562 +f 1615/2240/566 1605/2230/560 1616/2241/560 +f 1610/2242/559 1608/2233/563 1617/2243/563 +f 1618/2244/564 1611/2236/158 1619/2245/158 +f 1620/2246/13 1613/2238/565 1621/2247/565 +f 1615/2240/566 1602/2227/155 1622/2248/566 +f 1604/2229/1 1623/2249/564 1618/2244/564 +f 1620/2246/13 1609/2234/570 1624/2250/13 +f 1535/2251/571 1625/2252/572 1626/2253/571 +f 1535/2251/571 1627/2254/573 1532/2255/573 +f 1532/2255/573 1628/2256/574 1533/2257/574 +f 1533/2257/574 1629/2258/575 1530/2259/575 +f 1530/2259/575 1630/2260/576 1531/2261/576 +f 1544/2262/577 1630/2260/576 1631/2263/577 +f 1545/2264/578 1631/2263/577 1632/2265/578 +f 1542/2266/579 1632/2265/578 1633/2267/579 +f 1543/2268/580 1633/2267/579 1634/2269/580 +f 1543/2270/580 1635/2271/581 1540/2272/581 +f 1540/2272/581 1636/2273/582 1541/2274/582 +f 1538/2275/583 1636/2273/582 1637/2276/583 +f 1538/2275/583 1638/2277/584 1539/2278/584 +f 1539/2278/584 1639/2279/585 1536/2280/585 +f 1536/2280/585 1640/2281/586 1537/2282/586 +f 1534/2283/572 1640/2281/586 1625/2252/572 +f 1625/2252/212 1641/2284/2 1626/2253/2 +f 1626/2253/2 1642/2285/213 1627/2254/213 +f 1633/2267/215 1643/2286/4 1634/2269/4 +f 1640/2281/21 1644/2287/212 1625/2252/212 +f 1632/2265/22 1645/2288/215 1633/2267/215 +f 1639/2279/202 1646/2289/21 1640/2281/21 +f 1631/2263/205 1647/2290/22 1632/2265/22 +f 1638/2277/13 1648/2291/202 1639/2279/202 +f 1630/2260/1 1649/2292/205 1631/2263/205 +f 1637/2276/211 1650/2293/13 1638/2277/13 +f 1629/2258/214 1651/2294/1 1630/2260/1 +f 1636/2273/23 1652/2295/211 1637/2276/211 +f 1628/2256/24 1653/2296/214 1629/2258/214 +f 1635/2271/210 1654/2297/23 1636/2273/23 +f 1627/2254/213 1655/2298/24 1628/2256/24 +f 1634/2299/4 1656/2300/210 1635/2271/210 +f 1647/2290/587 1579/2301/588 1578/2302/587 +f 1648/2291/589 1573/2303/590 1572/2304/589 +f 1651/2294/591 1579/2305/588 1649/2292/588 +f 1650/2293/590 1574/2306/592 1573/2307/590 +f 1651/2294/591 1580/2308/593 1547/2309/591 +f 1654/2297/594 1574/2310/592 1652/2295/592 +f 1655/2298/595 1580/2311/593 1653/2296/593 +f 1654/2297/594 1576/2312/596 1575/2313/594 +f 1642/2285/597 1581/2314/595 1655/2298/595 +f 1643/2315/598 1576/2316/596 1656/2300/596 +f 1641/2284/599 1570/2317/600 1548/2318/599 +f 1641/2284/599 1582/2319/597 1642/2285/597 +f 1643/2286/598 1577/2320/601 1546/2321/598 +f 1646/2289/602 1570/2322/600 1644/2287/600 +f 1647/2290/587 1577/2323/601 1645/2288/601 +f 1646/2289/602 1572/2324/589 1571/2325/602 +f 1558/2326/213 1657/2327/2 1555/2328/2 +f 1563/2329/4 1658/2330/215 1564/2331/215 +f 1550/2332/210 1659/2333/4 1563/2329/4 +f 1555/2334/2 1660/2335/212 1556/2336/212 +f 1564/2331/215 1661/2337/22 1561/2338/22 +f 1556/2336/212 1662/2339/21 1553/2340/21 +f 1561/2338/22 1663/2341/205 1562/2342/205 +f 1553/2340/21 1664/2343/202 1554/2344/202 +f 1562/2342/205 1665/2345/1 1559/2346/1 +f 1554/2344/202 1666/2347/13 1551/2348/13 +f 1559/2346/1 1667/2349/214 1560/2350/214 +f 1551/2348/13 1668/2351/211 1552/2352/211 +f 1560/2350/214 1669/2353/24 1557/2354/24 +f 1552/2352/211 1670/2355/23 1549/2356/23 +f 1557/2354/24 1671/2357/213 1558/2326/213 +f 1549/2356/23 1672/2358/210 1550/2332/210 +f 1583/2204/559 1597/2221/158 1584/2205/158 +f 1586/2207/1 1599/2224/560 1587/2208/560 +f 1460/1242/561 1466/1248/562 1589/2210/562 +f 1583/2204/559 1585/2206/559 1590/2211/563 +f 1592/2213/564 1586/2207/1 1588/2209/1 +f 1466/1248/562 1568/2222/565 1594/2215/565 +f 1595/2216/566 1465/2359/567 1459/2217/567 +f 1567/2219/568 1591/2212/563 1590/2211/563 +f 1592/2213/564 1593/2214/564 1584/2205/158 +f 1568/2222/565 1600/2225/13 1598/2223/13 +f 1595/2216/566 1596/2218/566 1587/2208/560 +f 1462/1244/569 1464/1246/569 1598/2223/13 +f 1601/2226/562 1614/2239/562 1602/2227/155 +f 1604/2229/1 1616/2241/560 1605/2230/560 +f 1607/2232/570 1617/2243/563 1608/2233/563 +f 1610/2235/559 1619/2245/158 1611/2236/158 +f 1601/2226/562 1621/2247/565 1613/2238/565 +f 1615/2240/566 1622/2248/566 1605/2230/560 +f 1610/2242/559 1612/2360/559 1608/2233/563 +f 1618/2244/564 1623/2249/564 1611/2236/158 +f 1620/2246/13 1624/2250/13 1613/2238/565 +f 1615/2240/566 1603/2228/155 1602/2227/155 +f 1604/2229/1 1606/2231/1 1623/2249/564 +f 1620/2246/13 1607/2232/570 1609/2234/570 +f 1535/2251/571 1534/2283/572 1625/2252/572 +f 1535/2251/571 1626/2253/571 1627/2254/573 +f 1532/2255/573 1627/2254/573 1628/2256/574 +f 1533/2257/574 1628/2256/574 1629/2258/575 +f 1530/2259/575 1629/2258/575 1630/2260/576 +f 1544/2262/577 1531/2261/576 1630/2260/576 +f 1545/2264/578 1544/2262/577 1631/2263/577 +f 1542/2266/579 1545/2264/578 1632/2265/578 +f 1543/2268/580 1542/2266/579 1633/2267/579 +f 1543/2270/580 1634/2299/580 1635/2271/581 +f 1540/2272/581 1635/2271/581 1636/2273/582 +f 1538/2275/583 1541/2274/582 1636/2273/582 +f 1538/2275/583 1637/2276/583 1638/2277/584 +f 1539/2278/584 1638/2277/584 1639/2279/585 +f 1536/2280/585 1639/2279/585 1640/2281/586 +f 1534/2283/572 1537/2282/586 1640/2281/586 +f 1625/2252/212 1644/2287/212 1641/2284/2 +f 1626/2253/2 1641/2284/2 1642/2285/213 +f 1633/2267/215 1645/2288/215 1643/2286/4 +f 1640/2281/21 1646/2289/21 1644/2287/212 +f 1632/2265/22 1647/2290/22 1645/2288/215 +f 1639/2279/202 1648/2291/202 1646/2289/21 +f 1631/2263/205 1649/2292/205 1647/2290/22 +f 1638/2277/13 1650/2293/13 1648/2291/202 +f 1630/2260/1 1651/2294/1 1649/2292/205 +f 1637/2276/211 1652/2295/211 1650/2293/13 +f 1629/2258/214 1653/2296/214 1651/2294/1 +f 1636/2273/23 1654/2297/23 1652/2295/211 +f 1628/2256/24 1655/2298/24 1653/2296/214 +f 1635/2271/210 1656/2300/210 1654/2297/23 +f 1627/2254/213 1642/2285/213 1655/2298/24 +f 1634/2299/4 1643/2315/4 1656/2300/210 +f 1647/2290/587 1649/2292/588 1579/2301/588 +f 1648/2291/589 1650/2293/590 1573/2303/590 +f 1651/2294/591 1547/2361/591 1579/2305/588 +f 1650/2293/590 1652/2295/592 1574/2306/592 +f 1651/2294/591 1653/2296/593 1580/2308/593 +f 1654/2297/594 1575/2362/594 1574/2310/592 +f 1655/2298/595 1581/2363/595 1580/2311/593 +f 1654/2297/594 1656/2300/596 1576/2312/596 +f 1642/2285/597 1582/2364/597 1581/2314/595 +f 1643/2315/598 1546/2365/598 1576/2316/596 +f 1641/2284/599 1644/2287/600 1570/2317/600 +f 1641/2284/599 1548/2366/599 1582/2319/597 +f 1643/2286/598 1645/2288/601 1577/2320/601 +f 1646/2289/602 1571/2367/602 1570/2322/600 +f 1647/2290/587 1578/2368/587 1577/2323/601 +f 1646/2289/602 1648/2291/589 1572/2324/589 +f 1558/2326/213 1671/2357/213 1657/2327/2 +f 1563/2329/4 1659/2333/4 1658/2330/215 +f 1550/2332/210 1672/2358/210 1659/2333/4 +f 1555/2334/2 1657/2369/2 1660/2335/212 +f 1564/2331/215 1658/2330/215 1661/2337/22 +f 1556/2336/212 1660/2335/212 1662/2339/21 +f 1561/2338/22 1661/2337/22 1663/2341/205 +f 1553/2340/21 1662/2339/21 1664/2343/202 +f 1562/2342/205 1663/2341/205 1665/2345/1 +f 1554/2344/202 1664/2343/202 1666/2347/13 +f 1559/2346/1 1665/2345/1 1667/2349/214 +f 1551/2348/13 1666/2347/13 1668/2351/211 +f 1560/2350/214 1667/2349/214 1669/2353/24 +f 1552/2352/211 1668/2351/211 1670/2355/23 +f 1557/2354/24 1669/2353/24 1671/2357/213 +f 1549/2356/23 1670/2355/23 1672/2358/210 +o Fuel +v 0.250000 2.227120 -3.053716 +v 0.324759 2.057188 -3.132957 +v 0.216506 2.113832 -3.106544 +v 0.324760 2.397053 -2.974475 +v 0.375000 2.227120 -3.053716 +v 0.216506 2.340409 -3.000889 +v 0.187500 2.521452 -2.916467 +v 0.000000 2.566986 -2.895234 +v 0.125000 2.423342 -2.962217 +v 0.000000 2.453697 -2.948062 +vt 1.000000 0.250000 +vt -0.000000 -0.000000 +vt 1.000000 0.000000 +vt -0.000000 0.500000 +vt 0.000000 0.250000 +vt 1.000000 0.500000 +vt -0.000000 0.750000 +vt 0.000000 1.000000 +vt 1.000000 0.750000 +vt 1.000000 1.000000 +vn 0.0000 0.4226 -0.9063 +s off +f 1673/2370/603 1674/2371/603 1675/2372/603 +f 1673/2370/603 1676/2373/603 1677/2374/603 +f 1678/2375/603 1679/2376/603 1676/2373/603 +f 1680/2377/603 1681/2378/603 1682/2379/603 +f 1673/2370/603 1677/2374/603 1674/2371/603 +f 1673/2370/603 1678/2375/603 1676/2373/603 +f 1678/2375/603 1681/2378/603 1679/2376/603 +f 1680/2377/603 1679/2376/603 1681/2378/603 +o Rotor +v 0.003817 2.437500 -0.360298 +v -0.003817 2.437500 -0.639702 +v -0.109472 2.437500 -0.413125 +v 0.109472 2.437500 -0.586875 +v -0.003817 2.312500 -0.639702 +v 0.003817 2.312500 -0.360298 +v 0.109472 2.312500 -0.586875 +v -0.109472 2.312500 -0.413125 +v -0.003817 0.062500 -0.360298 +v 0.003816 0.062500 -0.639702 +v 0.109472 0.062500 -0.413125 +v -0.109472 0.062500 -0.586875 +v 0.003816 0.187500 -0.639702 +v -0.003817 0.187500 -0.360298 +v -0.109472 0.187500 -0.586875 +v 0.109472 0.187500 -0.413125 +v 1.187500 1.246183 -0.360298 +v 1.187500 1.253817 -0.639702 +v 1.187500 1.359472 -0.413125 +v 1.187500 1.140528 -0.586875 +v 1.062500 1.253817 -0.639702 +v 1.062500 1.246183 -0.360298 +v 1.062500 1.140528 -0.586875 +v 1.062500 1.359472 -0.413125 +v -1.187500 1.253817 -0.360298 +v -1.187500 1.246184 -0.639702 +v -1.187500 1.140528 -0.413125 +v -1.062500 1.359473 -0.586875 +v -1.062500 1.246184 -0.639702 +v -1.062500 1.253817 -0.360298 +v -1.187500 1.359473 -0.586875 +v -1.062500 1.140528 -0.413125 +v 0.842388 2.086991 -0.360298 +v 0.836990 2.092388 -0.639702 +v 0.762281 2.167098 -0.413125 +v 0.917098 2.012281 -0.586875 +v 0.748602 2.004000 -0.639702 +v 0.673892 2.078710 -0.413125 +v 0.754000 1.998602 -0.360298 +v 0.828709 1.923892 -0.586875 +v -0.842388 0.413010 -0.360298 +v -0.836991 0.407612 -0.639702 +v -0.762281 0.332902 -0.413125 +v -0.828710 0.576108 -0.586875 +v -0.748602 0.496001 -0.639702 +v -0.673892 0.421291 -0.413125 +v -0.754000 0.501398 -0.360298 +v -0.917098 0.487720 -0.586875 +v 0.836990 0.407612 -0.360298 +v 0.842388 0.413010 -0.639702 +v 0.917098 0.487720 -0.413125 +v 0.762280 0.332902 -0.586875 +v 0.753999 0.501398 -0.639702 +v 0.748602 0.496001 -0.360298 +v 0.673892 0.421291 -0.586875 +v 0.828709 0.576108 -0.413125 +v -0.836990 2.092388 -0.360298 +v -0.842388 2.086991 -0.639702 +v -0.917098 2.012281 -0.413125 +v -0.673892 2.078710 -0.586875 +v -0.754000 1.998602 -0.639702 +v -0.748602 2.004000 -0.360298 +v -0.762281 2.167098 -0.586875 +v -0.828709 1.923893 -0.413125 +v 1.026497 0.652945 -0.360298 +v 1.030313 0.659555 -0.639702 +v 1.083141 0.751056 -0.413125 +v 0.973669 0.561444 -0.586875 +v 0.922060 0.722055 -0.639702 +v 0.918243 0.715445 -0.360298 +v 0.865416 0.623944 -0.586875 +v 0.974888 0.813556 -0.413125 +v -1.026497 1.847056 -0.360298 +v -1.030313 1.840445 -0.639702 +v -1.083141 1.748945 -0.413125 +v -0.865416 1.876056 -0.586875 +v -0.922060 1.777945 -0.639702 +v -0.974888 1.686445 -0.413125 +v -0.918244 1.784556 -0.360298 +v -0.973669 1.938556 -0.586875 +v -0.597055 0.223504 -0.360298 +v -0.590445 0.219687 -0.639702 +v -0.498944 0.166859 -0.413125 +v -0.688556 0.276331 -0.586875 +v -0.527945 0.327940 -0.639702 +v -0.534555 0.331757 -0.360298 +v -0.626056 0.384585 -0.586875 +v -0.436444 0.275112 -0.413125 +v 0.597055 2.276497 -0.360298 +v 0.590445 2.280313 -0.639702 +v 0.498944 2.333141 -0.413125 +v 0.688556 2.223669 -0.586875 +v 0.527945 2.172060 -0.639702 +v 0.436444 2.224888 -0.413125 +v 0.534555 2.168244 -0.360298 +v 0.626056 2.115416 -0.586875 +v 0.303661 0.101975 -0.360298 +v 0.311034 0.103951 -0.639702 +v 0.413089 0.131297 -0.413125 +v 0.201605 0.074630 -0.586875 +v 0.278682 0.224692 -0.639702 +v 0.271308 0.222716 -0.360298 +v 0.169253 0.195371 -0.586875 +v 0.380737 0.252038 -0.413125 +v -0.303661 2.398025 -0.360298 +v -0.311034 2.396049 -0.639702 +v -0.413090 2.368703 -0.413125 +v -0.169253 2.304630 -0.586875 +v -0.278682 2.275309 -0.639702 +v -0.271308 2.277284 -0.360298 +v -0.201605 2.425371 -0.586875 +v -0.380737 2.247963 -0.413125 +v -1.148025 0.946339 -0.360298 +v -1.146049 0.938966 -0.639702 +v -1.118703 0.836911 -0.413125 +v -1.054630 1.080747 -0.586875 +v -1.025308 0.971319 -0.639702 +v -1.027284 0.978692 -0.360298 +v -1.175370 1.048395 -0.586875 +v -0.997963 0.869263 -0.413125 +v 1.148025 1.553661 -0.360298 +v 1.146049 1.561034 -0.639702 +v 1.118703 1.663090 -0.413125 +v 1.175370 1.451605 -0.586875 +v 1.025308 1.528682 -0.639702 +v 1.027284 1.521308 -0.360298 +v 1.054630 1.419253 -0.586875 +v 0.997963 1.630737 -0.413125 +v -1.030313 0.659556 -0.360298 +v -1.026497 0.652945 -0.639702 +v -0.973669 0.561445 -0.413125 +v -0.974888 0.813556 -0.586875 +v -0.918244 0.715445 -0.639702 +v -0.922060 0.722056 -0.360298 +v -1.083141 0.751056 -0.586875 +v -0.865416 0.623945 -0.413125 +v 1.030313 1.840445 -0.360298 +v 1.026497 1.847055 -0.639702 +v 0.973669 1.938556 -0.413125 +v 0.974888 1.686444 -0.586875 +v 0.918244 1.784555 -0.639702 +v 0.922060 1.777945 -0.360298 +v 1.083141 1.748944 -0.586875 +v 0.865416 1.876056 -0.413125 +v -0.590444 2.280313 -0.360298 +v -0.597055 2.276497 -0.639702 +v -0.688556 2.223669 -0.413125 +v -0.498944 2.333141 -0.586875 +v -0.534555 2.168244 -0.639702 +v -0.527944 2.172060 -0.360298 +v -0.436444 2.224888 -0.586875 +v -0.626056 2.115416 -0.413125 +v 0.590444 0.219687 -0.360298 +v 0.597055 0.223503 -0.639702 +v 0.688555 0.276331 -0.413125 +v 0.498944 0.166859 -0.586875 +v 0.534555 0.331756 -0.639702 +v 0.626055 0.384584 -0.413125 +v 0.527944 0.327940 -0.360298 +v 0.436444 0.275112 -0.586875 +v -1.146049 1.561034 -0.360298 +v -1.148025 1.553661 -0.639702 +v -1.175370 1.451606 -0.413125 +v -1.118703 1.663090 -0.586875 +v -1.027284 1.521309 -0.639702 +v -1.054630 1.419253 -0.413125 +v -1.025308 1.528682 -0.360298 +v -0.997963 1.630738 -0.586875 +v 1.146049 0.938966 -0.360298 +v 1.148024 0.946339 -0.639702 +v 1.175370 1.048394 -0.413125 +v 0.997963 0.869263 -0.586875 +v 1.027284 0.978691 -0.639702 +v 1.054630 1.080747 -0.413125 +v 1.025308 0.971318 -0.360298 +v 1.118703 0.836910 -0.586875 +v 0.311034 2.396049 -0.360298 +v 0.303661 2.398025 -0.639702 +v 0.201606 2.425370 -0.413125 +v 0.413090 2.368703 -0.586875 +v 0.271309 2.277284 -0.639702 +v 0.169253 2.304630 -0.413125 +v 0.278682 2.275308 -0.360298 +v 0.380738 2.247962 -0.586875 +v -0.311035 0.103951 -0.360298 +v -0.303662 0.101975 -0.639702 +v -0.201606 0.074630 -0.413125 +v -0.413090 0.131297 -0.586875 +v -0.271309 0.222716 -0.639702 +v -0.169254 0.195371 -0.413125 +v -0.278682 0.224692 -0.360298 +v -0.380738 0.252038 -0.586875 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.303448 0.093750 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.303448 0.093750 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.303448 0.093750 +vt 0.317241 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.303448 0.093750 +vt 0.324138 0.109375 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.303448 0.093750 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.324138 0.109375 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vn 0.0000 1.0000 0.0000 +vn 0.4226 0.0000 -0.9063 +vn -0.4226 -0.0000 0.9063 +vn 0.9063 0.0000 0.4226 +vn -0.9063 0.0000 -0.4226 +vn -0.0000 -1.0000 -0.0000 +vn -0.4226 0.0000 -0.9063 +vn 0.4226 0.0000 0.9063 +vn -0.9063 0.0000 0.4226 +vn 0.9063 0.0000 -0.4226 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.4226 -0.9063 +vn 0.0000 0.4226 0.9063 +vn 0.0000 -0.9063 0.4226 +vn 0.0000 0.9063 -0.4226 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.4226 -0.9063 +vn 0.0000 -0.4226 0.9063 +vn 0.0000 0.9063 0.4226 +vn 0.0000 -0.9063 -0.4226 +vn 0.7071 0.7071 -0.0000 +vn 0.2988 -0.2988 -0.9063 +vn -0.2988 0.2988 0.9063 +vn 0.6409 -0.6409 0.4226 +vn -0.6409 0.6409 -0.4226 +vn -0.7071 -0.7071 0.0000 +vn -0.2988 0.2988 -0.9063 +vn 0.2988 -0.2988 0.9063 +vn -0.6409 0.6409 0.4226 +vn 0.6409 -0.6409 -0.4226 +vn 0.7071 -0.7071 0.0000 +vn -0.2988 -0.2988 -0.9063 +vn 0.2988 0.2988 0.9063 +vn -0.6409 -0.6409 0.4226 +vn 0.6409 0.6409 -0.4226 +vn -0.7071 0.7071 0.0000 +vn 0.2988 0.2988 -0.9063 +vn -0.2988 -0.2988 0.9063 +vn 0.6409 0.6409 0.4226 +vn -0.6409 -0.6409 -0.4226 +vn 0.8660 -0.5000 -0.0000 +vn -0.2113 -0.3660 -0.9063 +vn 0.2113 0.3660 0.9063 +vn -0.4532 -0.7849 0.4226 +vn 0.4532 0.7849 -0.4226 +vn -0.8660 0.5000 -0.0000 +vn 0.2113 0.3660 -0.9063 +vn -0.2113 -0.3660 0.9063 +vn 0.4532 0.7849 0.4226 +vn -0.4532 -0.7849 -0.4226 +vn -0.5000 -0.8660 0.0000 +vn -0.3660 0.2113 -0.9063 +vn 0.3660 -0.2113 0.9063 +vn -0.7849 0.4532 0.4226 +vn 0.7849 -0.4532 -0.4226 +vn 0.5000 0.8660 -0.0000 +vn 0.3660 -0.2113 -0.9063 +vn -0.3660 0.2113 0.9063 +vn 0.7849 -0.4532 0.4226 +vn -0.7849 0.4532 -0.4226 +vn 0.2588 -0.9659 -0.0000 +vn -0.4082 -0.1094 -0.9063 +vn 0.4082 0.1094 0.9063 +vn -0.8754 -0.2346 0.4226 +vn 0.8754 0.2346 -0.4226 +vn -0.2588 0.9659 -0.0000 +vn 0.4082 0.1094 -0.9063 +vn -0.4082 -0.1094 0.9063 +vn 0.8754 0.2346 0.4226 +vn -0.8754 -0.2346 -0.4226 +vn -0.9659 -0.2588 -0.0000 +vn -0.1094 0.4082 -0.9063 +vn 0.1094 -0.4082 0.9063 +vn -0.2346 0.8754 0.4226 +vn 0.2346 -0.8754 -0.4226 +vn 0.9659 0.2588 -0.0000 +vn 0.1094 -0.4082 -0.9063 +vn -0.1094 0.4082 0.9063 +vn 0.2346 -0.8754 0.4226 +vn -0.2346 0.8754 -0.4226 +vn -0.8660 -0.5000 0.0000 +vn -0.2113 0.3660 -0.9063 +vn 0.2113 -0.3660 0.9063 +vn -0.4532 0.7849 0.4226 +vn 0.4532 -0.7849 -0.4226 +vn 0.8660 0.5000 0.0000 +vn 0.2113 -0.3660 -0.9063 +vn -0.2113 0.3660 0.9063 +vn 0.4532 -0.7849 0.4226 +vn -0.4532 0.7849 -0.4226 +vn -0.5000 0.8660 0.0000 +vn 0.3660 0.2113 -0.9063 +vn -0.3660 -0.2113 0.9063 +vn 0.7849 0.4532 0.4226 +vn -0.7849 -0.4532 -0.4226 +vn 0.5000 -0.8660 0.0000 +vn -0.3660 -0.2113 -0.9063 +vn 0.3660 0.2113 0.9063 +vn -0.7849 -0.4532 0.4226 +vn 0.7849 0.4532 -0.4226 +vn -0.9659 0.2588 0.0000 +vn 0.1094 0.4082 -0.9063 +vn -0.1094 -0.4082 0.9063 +vn 0.2346 0.8754 0.4226 +vn -0.2346 -0.8754 -0.4226 +vn 0.9659 -0.2588 -0.0000 +vn -0.1094 -0.4082 -0.9063 +vn 0.1094 0.4082 0.9063 +vn -0.2346 -0.8754 0.4226 +vn 0.2346 0.8754 -0.4226 +vn 0.2588 0.9659 0.0000 +vn 0.4082 -0.1094 -0.9063 +vn -0.4082 0.1094 0.9063 +vn 0.8754 -0.2346 0.4226 +vn -0.8754 0.2346 -0.4226 +vn -0.2588 -0.9659 0.0000 +vn -0.4082 0.1094 -0.9063 +vn 0.4082 -0.1094 0.9063 +vn -0.8754 0.2346 0.4226 +vn 0.8754 -0.2346 -0.4226 +s off +f 1683/2380/604 1684/2381/604 1685/2382/604 +f 1686/2383/605 1687/2384/605 1684/2381/605 +f 1685/2382/606 1688/2385/606 1683/2380/606 +f 1683/2380/607 1689/2386/607 1686/2383/607 +f 1684/2381/608 1690/2387/608 1685/2382/608 +f 1691/2388/609 1692/2389/609 1693/2390/609 +f 1694/2391/610 1695/2392/610 1692/2389/610 +f 1693/2390/611 1696/2393/611 1691/2388/611 +f 1694/2391/612 1696/2394/612 1697/2395/612 +f 1692/2389/613 1698/2396/613 1693/2390/613 +f 1699/2397/614 1700/2398/614 1701/2399/614 +f 1702/2400/615 1703/2401/615 1700/2398/615 +f 1701/2399/616 1704/2402/616 1699/2397/616 +f 1699/2397/617 1705/2403/617 1702/2400/617 +f 1700/2398/618 1706/2404/618 1701/2399/618 +f 1707/2405/619 1708/2406/619 1709/2407/619 +f 1708/2406/620 1710/2408/620 1711/2409/620 +f 1709/2407/621 1712/2410/621 1707/2405/621 +f 1707/2405/622 1710/2411/622 1713/2412/622 +f 1708/2406/623 1714/2413/623 1709/2407/623 +f 1715/2414/624 1716/2415/624 1717/2416/624 +f 1718/2417/625 1719/2418/625 1716/2415/625 +f 1715/2414/626 1720/2419/626 1721/2420/626 +f 1715/2414/627 1722/2421/627 1718/2417/627 +f 1716/2415/628 1720/2422/628 1717/2416/628 +f 1723/2423/629 1724/2424/629 1725/2425/629 +f 1724/2424/630 1726/2426/630 1727/2427/630 +f 1723/2423/631 1728/2428/631 1729/2429/631 +f 1723/2423/632 1726/2430/632 1730/2431/632 +f 1724/2424/633 1728/2432/633 1725/2425/633 +f 1731/2433/634 1732/2434/634 1733/2435/634 +f 1734/2436/635 1735/2437/635 1732/2434/635 +f 1733/2435/636 1736/2438/636 1731/2433/636 +f 1734/2436/637 1736/2439/637 1737/2440/637 +f 1732/2434/638 1738/2441/638 1733/2435/638 +f 1739/2442/639 1740/2443/639 1741/2444/639 +f 1740/2443/640 1742/2445/640 1743/2446/640 +f 1741/2444/641 1744/2447/641 1739/2442/641 +f 1745/2448/642 1744/2449/642 1742/2450/642 +f 1740/2443/643 1746/2451/643 1741/2444/643 +f 1747/2452/644 1748/2453/644 1749/2454/644 +f 1750/2455/645 1751/2456/645 1748/2453/645 +f 1749/2454/646 1752/2457/646 1747/2452/646 +f 1747/2452/647 1753/2458/647 1750/2455/647 +f 1748/2453/648 1754/2459/648 1749/2454/648 +f 1755/2460/649 1756/2461/649 1757/2462/649 +f 1756/2461/650 1758/2463/650 1759/2464/650 +f 1755/2460/651 1760/2465/651 1761/2466/651 +f 1755/2460/652 1758/2467/652 1762/2468/652 +f 1756/2461/653 1760/2469/653 1757/2462/653 +f 1763/2470/654 1764/2471/654 1765/2472/654 +f 1766/2473/655 1767/2474/655 1764/2471/655 +f 1765/2472/656 1768/2475/656 1763/2470/656 +f 1763/2470/657 1769/2476/657 1766/2473/657 +f 1764/2471/658 1770/2477/658 1765/2472/658 +f 1771/2478/659 1772/2479/659 1773/2480/659 +f 1774/2481/660 1775/2482/660 1772/2479/660 +f 1771/2478/661 1776/2483/661 1777/2484/661 +f 1774/2481/662 1777/2485/662 1778/2486/662 +f 1772/2479/663 1776/2487/663 1773/2480/663 +f 1779/2488/664 1780/2489/664 1781/2490/664 +f 1782/2491/665 1783/2492/665 1780/2489/665 +f 1781/2490/666 1784/2493/666 1779/2488/666 +f 1782/2491/667 1784/2494/667 1785/2495/667 +f 1781/2490/668 1783/2496/668 1786/2497/668 +f 1787/2498/669 1788/2499/669 1789/2500/669 +f 1788/2499/670 1790/2501/670 1791/2502/670 +f 1789/2500/671 1792/2503/671 1787/2498/671 +f 1787/2498/672 1790/2504/672 1793/2505/672 +f 1788/2499/673 1794/2506/673 1789/2500/673 +f 1795/2507/674 1796/2508/674 1797/2509/674 +f 1796/2508/675 1798/2510/675 1799/2511/675 +f 1797/2509/676 1800/2512/676 1795/2507/676 +f 1795/2507/677 1798/2513/677 1801/2514/677 +f 1796/2508/678 1802/2515/678 1797/2509/678 +f 1803/2516/679 1804/2517/679 1805/2518/679 +f 1806/2519/680 1807/2520/680 1804/2517/680 +f 1805/2518/681 1808/2521/681 1803/2516/681 +f 1806/2519/682 1808/2522/682 1809/2523/682 +f 1804/2517/683 1810/2524/683 1805/2518/683 +f 1811/2525/684 1812/2526/684 1813/2527/684 +f 1812/2526/685 1814/2528/685 1815/2529/685 +f 1813/2527/686 1816/2530/686 1811/2525/686 +f 1811/2525/687 1814/2531/687 1817/2532/687 +f 1812/2526/688 1818/2533/688 1813/2527/688 +f 1819/2534/689 1820/2535/689 1821/2536/689 +f 1820/2535/690 1822/2537/690 1823/2538/690 +f 1821/2536/691 1824/2539/691 1819/2534/691 +f 1825/2540/692 1824/2541/692 1822/2542/692 +f 1820/2535/693 1826/2543/693 1821/2536/693 +f 1827/2544/694 1828/2545/694 1829/2546/694 +f 1830/2547/695 1831/2548/695 1828/2545/695 +f 1829/2546/696 1832/2549/696 1827/2544/696 +f 1827/2544/697 1833/2550/697 1830/2547/697 +f 1828/2545/698 1834/2551/698 1829/2546/698 +f 1835/2552/699 1836/2553/699 1837/2554/699 +f 1838/2555/700 1839/2556/700 1836/2553/700 +f 1835/2552/701 1840/2557/701 1841/2558/701 +f 1838/2555/702 1841/2559/702 1842/2560/702 +f 1836/2553/703 1840/2561/703 1837/2554/703 +f 1843/2562/704 1844/2563/704 1845/2564/704 +f 1846/2565/705 1847/2566/705 1844/2563/705 +f 1843/2562/706 1848/2567/706 1849/2568/706 +f 1846/2565/707 1849/2569/707 1850/2570/707 +f 1845/2564/708 1847/2571/708 1848/2572/708 +f 1851/2573/709 1852/2574/709 1853/2575/709 +f 1852/2574/710 1854/2576/710 1855/2577/710 +f 1851/2573/711 1856/2578/711 1857/2579/711 +f 1851/2573/712 1854/2580/712 1858/2581/712 +f 1852/2574/713 1856/2582/713 1853/2575/713 +f 1859/2583/714 1860/2584/714 1861/2585/714 +f 1862/2586/715 1863/2587/715 1860/2584/715 +f 1859/2583/716 1864/2588/716 1865/2589/716 +f 1859/2583/717 1866/2590/717 1862/2586/717 +f 1860/2584/718 1864/2591/718 1861/2585/718 +f 1867/2592/719 1868/2593/719 1869/2594/719 +f 1870/2595/720 1871/2596/720 1868/2593/720 +f 1867/2592/721 1872/2597/721 1873/2598/721 +f 1870/2595/722 1873/2599/722 1874/2600/722 +f 1869/2594/723 1871/2601/723 1872/2602/723 +f 1683/2380/604 1686/2383/604 1684/2381/604 +f 1686/2383/605 1689/2603/605 1687/2384/605 +f 1685/2382/606 1690/2604/606 1688/2385/606 +f 1683/2380/607 1688/2605/607 1689/2386/607 +f 1684/2381/608 1687/2606/608 1690/2387/608 +f 1691/2388/609 1694/2391/609 1692/2389/609 +f 1694/2391/610 1697/2607/610 1695/2392/610 +f 1693/2390/611 1698/2608/611 1696/2393/611 +f 1694/2391/612 1691/2388/612 1696/2394/612 +f 1692/2389/613 1695/2609/613 1698/2396/613 +f 1699/2397/614 1702/2400/614 1700/2398/614 +f 1702/2400/615 1705/2610/615 1703/2401/615 +f 1701/2399/616 1706/2611/616 1704/2402/616 +f 1699/2397/617 1704/2612/617 1705/2403/617 +f 1700/2398/618 1703/2613/618 1706/2404/618 +f 1707/2405/619 1713/2412/619 1708/2406/619 +f 1708/2406/620 1713/2412/620 1710/2408/620 +f 1709/2407/621 1714/2614/621 1712/2410/621 +f 1707/2405/622 1712/2615/622 1710/2411/622 +f 1708/2406/623 1711/2616/623 1714/2413/623 +f 1715/2414/624 1718/2417/624 1716/2415/624 +f 1718/2417/625 1722/2617/625 1719/2418/625 +f 1715/2414/626 1717/2416/626 1720/2419/626 +f 1715/2414/627 1721/2618/627 1722/2421/627 +f 1716/2415/628 1719/2619/628 1720/2422/628 +f 1723/2423/629 1730/2431/629 1724/2424/629 +f 1724/2424/630 1730/2431/630 1726/2426/630 +f 1723/2423/631 1725/2425/631 1728/2428/631 +f 1723/2423/632 1729/2620/632 1726/2430/632 +f 1724/2424/633 1727/2621/633 1728/2432/633 +f 1731/2433/634 1734/2436/634 1732/2434/634 +f 1734/2436/635 1737/2622/635 1735/2437/635 +f 1733/2435/636 1738/2623/636 1736/2438/636 +f 1734/2436/637 1731/2433/637 1736/2439/637 +f 1732/2434/638 1735/2624/638 1738/2441/638 +f 1739/2442/639 1745/2448/639 1740/2443/639 +f 1740/2443/640 1745/2448/640 1742/2445/640 +f 1741/2444/641 1746/2625/641 1744/2447/641 +f 1745/2448/642 1739/2442/642 1744/2449/642 +f 1740/2443/643 1743/2626/643 1746/2451/643 +f 1747/2452/644 1750/2455/644 1748/2453/644 +f 1750/2455/645 1753/2627/645 1751/2456/645 +f 1749/2454/646 1754/2628/646 1752/2457/646 +f 1747/2452/647 1752/2629/647 1753/2458/647 +f 1748/2453/648 1751/2630/648 1754/2459/648 +f 1755/2460/649 1762/2468/649 1756/2461/649 +f 1756/2461/650 1762/2468/650 1758/2463/650 +f 1755/2460/651 1757/2462/651 1760/2465/651 +f 1755/2460/652 1761/2631/652 1758/2467/652 +f 1756/2461/653 1759/2632/653 1760/2469/653 +f 1763/2470/654 1766/2473/654 1764/2471/654 +f 1766/2473/655 1769/2633/655 1767/2474/655 +f 1765/2472/656 1770/2634/656 1768/2475/656 +f 1763/2470/657 1768/2635/657 1769/2476/657 +f 1764/2471/658 1767/2636/658 1770/2477/658 +f 1771/2478/659 1774/2481/659 1772/2479/659 +f 1774/2481/660 1778/2637/660 1775/2482/660 +f 1771/2478/661 1773/2480/661 1776/2483/661 +f 1774/2481/662 1771/2478/662 1777/2485/662 +f 1772/2479/663 1775/2638/663 1776/2487/663 +f 1779/2488/664 1782/2491/664 1780/2489/664 +f 1782/2491/665 1785/2639/665 1783/2492/665 +f 1781/2490/666 1786/2640/666 1784/2493/666 +f 1782/2491/667 1779/2488/667 1784/2494/667 +f 1781/2490/668 1780/2489/668 1783/2496/668 +f 1787/2498/669 1793/2505/669 1788/2499/669 +f 1788/2499/670 1793/2505/670 1790/2501/670 +f 1789/2500/671 1794/2641/671 1792/2503/671 +f 1787/2498/672 1792/2642/672 1790/2504/672 +f 1788/2499/673 1791/2643/673 1794/2506/673 +f 1795/2507/674 1801/2514/674 1796/2508/674 +f 1796/2508/675 1801/2514/675 1798/2510/675 +f 1797/2509/676 1802/2644/676 1800/2512/676 +f 1795/2507/677 1800/2645/677 1798/2513/677 +f 1796/2508/678 1799/2646/678 1802/2515/678 +f 1803/2516/679 1806/2519/679 1804/2517/679 +f 1806/2519/680 1809/2647/680 1807/2520/680 +f 1805/2518/681 1810/2648/681 1808/2521/681 +f 1806/2519/682 1803/2516/682 1808/2522/682 +f 1804/2517/683 1807/2649/683 1810/2524/683 +f 1811/2525/684 1817/2532/684 1812/2526/684 +f 1812/2526/685 1817/2532/685 1814/2528/685 +f 1813/2527/686 1818/2650/686 1816/2530/686 +f 1811/2525/687 1816/2651/687 1814/2531/687 +f 1812/2526/688 1815/2652/688 1818/2533/688 +f 1819/2534/689 1825/2540/689 1820/2535/689 +f 1820/2535/690 1825/2540/690 1822/2537/690 +f 1821/2536/691 1826/2653/691 1824/2539/691 +f 1825/2540/692 1819/2534/692 1824/2541/692 +f 1820/2535/693 1823/2654/693 1826/2543/693 +f 1827/2544/694 1830/2547/694 1828/2545/694 +f 1830/2547/695 1833/2655/695 1831/2548/695 +f 1829/2546/696 1834/2656/696 1832/2549/696 +f 1827/2544/697 1832/2657/697 1833/2550/697 +f 1828/2545/698 1831/2658/698 1834/2551/698 +f 1835/2552/699 1838/2555/699 1836/2553/699 +f 1838/2555/700 1842/2659/700 1839/2556/700 +f 1835/2552/701 1837/2554/701 1840/2557/701 +f 1838/2555/702 1835/2552/702 1841/2559/702 +f 1836/2553/703 1839/2660/703 1840/2561/703 +f 1843/2562/704 1846/2565/704 1844/2563/704 +f 1846/2565/705 1850/2661/705 1847/2566/705 +f 1843/2562/706 1845/2564/706 1848/2567/706 +f 1846/2565/707 1843/2562/707 1849/2569/707 +f 1845/2564/708 1844/2563/708 1847/2571/708 +f 1851/2573/709 1858/2581/709 1852/2574/709 +f 1852/2574/710 1858/2581/710 1854/2576/710 +f 1851/2573/711 1853/2575/711 1856/2578/711 +f 1851/2573/712 1857/2662/712 1854/2580/712 +f 1852/2574/713 1855/2663/713 1856/2582/713 +f 1859/2583/714 1862/2586/714 1860/2584/714 +f 1862/2586/715 1866/2664/715 1863/2587/715 +f 1859/2583/716 1861/2585/716 1864/2588/716 +f 1859/2583/717 1865/2665/717 1866/2590/717 +f 1860/2584/718 1863/2666/718 1864/2591/718 +f 1867/2592/719 1870/2595/719 1868/2593/719 +f 1870/2595/720 1874/2667/720 1871/2596/720 +f 1867/2592/721 1869/2594/721 1872/2597/721 +f 1870/2595/722 1867/2592/722 1873/2599/722 +f 1869/2594/723 1868/2593/723 1871/2601/723 +o Pressure +v 0.000000 2.000544 -3.159371 +v -0.216506 2.113832 -3.106544 +v -0.216506 2.340409 -3.000889 +v -0.125000 2.423342 -2.962217 +v 0.000000 2.453697 -2.948062 +v 0.125000 2.423342 -2.962217 +v 0.216506 2.340409 -3.000889 +v 0.250000 2.227120 -3.053716 +v 0.216506 2.113832 -3.106544 +v 0.125000 2.030899 -3.145216 +v -0.125000 2.030899 -3.145216 +v -0.250000 2.227120 -3.053716 +vt 0.500000 0.000000 +vt 0.066987 0.250000 +vt 0.066987 0.750000 +vt 0.250000 0.933013 +vt 0.500000 1.000000 +vt 0.750000 0.933013 +vt 0.933013 0.750000 +vt 1.000000 0.500000 +vt 0.933013 0.250000 +vt 0.750000 0.066987 +vt 0.250000 0.066987 +vt 0.000000 0.500000 +vn 0.0000 0.4226 -0.9063 +s off +f 1875/2668/724 1876/2669/724 1877/2670/724 +f 1877/2670/724 1878/2671/724 1879/2672/724 +f 1879/2672/724 1880/2673/724 1881/2674/724 +f 1881/2674/724 1882/2675/724 1883/2676/724 +f 1883/2676/724 1884/2677/724 1875/2668/724 +f 1875/2668/724 1885/2678/724 1876/2669/724 +f 1876/2669/724 1886/2679/724 1877/2670/724 +f 1877/2670/724 1879/2672/724 1875/2668/724 +f 1879/2672/724 1881/2674/724 1875/2668/724 +f 1881/2674/724 1883/2676/724 1875/2668/724 +o Spin +v -0.375000 2.313995 -2.944245 +v -0.266747 2.257351 -2.970659 +v -0.375000 2.087419 -3.049900 +v -0.437500 2.102596 -3.042822 +v -0.483253 2.144063 -3.023486 +v -0.500000 2.200707 -2.997072 +v -0.483253 2.257351 -2.970659 +v -0.437500 2.298818 -2.951323 +v -0.312500 2.298818 -2.951323 +v -0.250000 2.200707 -2.997072 +v -0.266747 2.144063 -3.023486 +v -0.312500 2.102596 -3.042822 +vt 0.500000 0.000000 +vt 0.066987 0.250000 +vt 0.500000 1.000000 +vt 0.750000 0.933013 +vt 0.933013 0.750000 +vt 1.000000 0.500000 +vt 0.933013 0.250000 +vt 0.750000 0.066987 +vt 0.250000 0.066987 +vt 0.000000 0.500000 +vt 0.066987 0.750000 +vt 0.250000 0.933013 +vn -0.0000 0.4226 -0.9063 +s off +f 1887/2680/725 1888/2681/725 1889/2682/725 +f 1889/2682/725 1890/2683/725 1891/2684/725 +f 1891/2684/725 1892/2685/725 1889/2682/725 +f 1892/2685/725 1893/2686/725 1889/2682/725 +f 1893/2686/725 1894/2687/725 1887/2680/725 +f 1887/2680/725 1895/2688/725 1888/2681/725 +f 1888/2681/725 1896/2689/725 1889/2682/725 +f 1896/2689/725 1897/2690/725 1889/2682/725 +f 1897/2690/725 1898/2691/725 1889/2682/725 +f 1893/2686/725 1887/2680/725 1889/2682/725 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index ab2066140..b77fef3b1 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -52,12 +52,35 @@ "block.turbinegasRunning": {"category": "block", "sounds": [{"name": "block/turbinegasRunning", "stream": false}]}, "block.turbinegasShutdown": {"category": "block", "sounds": [{"name": "block/turbinegasShutdown", "stream": true}]}, "block.damage": {"category": "block", "sounds": ["block/dam1", "block/dam2", "block/dam3", "block/dam4"]}, + "block.electricHum": {"category": "block", "sounds": [{"name": "block/electricHum", "stream": false}]}, + "block.boiler": {"category": "block", "sounds": [{"name": "block/boiler", "stream": false}]}, + "block.hornNearSingle": {"category": "block", "sounds": [{"name": "block/hornNearSingle", "stream": false}]}, + "block.hornNearDual": {"category": "block", "sounds": [{"name": "block/hornNearDual", "stream": false}]}, + "block.hornFarSingle": {"category": "block", "sounds": [{"name": "block/hornFarSingle", "stream": false}]}, + "block.hornFarDual": {"category": "block", "sounds": [{"name": "block/hornFarDual", "stream": false}]}, + "block.reactorLoop": {"category": "block", "sounds": [{"name": "block/reactorLoop", "stream": false}]}, "door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]}, "door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]}, "door.wghStop": {"category": "block", "sounds": [{"name": "block/door/wgh_stop", "stream": true}]}, "door.alarm6": {"category": "block", "sounds": [{"name": "block/door/alarm6", "stream": true}]}, - + "door.sliding_door_shut": {"category": "block", "sounds": [{"name": "block/door/sliding_door_shut", "stream": false}]}, + "door.sliding_door_opened": {"category": "block", "sounds": [{"name": "block/door/sliding_door_opened", "stream": false}]}, + "door.sliding_door_opening": {"category": "block", "sounds": [{"name": "block/door/sliding_door_opening", "stream": false}]}, + + "door.garage_move": { "category": "block", "sounds": [{"name": "block/door/garage_move", "stream": false}] }, + "door.garage_stop": { "category": "block", "sounds": [{"name": "block/door/garage_stop", "stream": false}] }, + "door.lever": {"category": "block", "sounds": [{"name": "block/door/lever1", "stream": false}]}, + "door.wgh_start": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": false}]}, + "door.wgh_stop": {"category": "block", "sounds": [{"name": "block/door/wgh_stop", "stream": false}]}, + "door.wgh_big_start": {"category": "block", "sounds": [{"name": "block/door/door_wgh_big_start", "stream": false}]}, + "door.wgh_big_stop": {"category": "block", "sounds": [{"name": "block/door/door_wgh_big_stop", "stream": false}]}, + "door.qe_sliding_shut": {"category": "block", "sounds": [{"name": "block/door/doorshut_1", "stream": false}]}, + "door.qe_sliding_opened": {"category": "block", "sounds": [{"name": "block/door/doorslide_opened1", "stream": false}]}, + "door.qe_sliding_opening": {"category": "block", "sounds": [{"name": "block/door/doorslide_opening1", "stream": false}]}, + "door.sliding_seal_open": {"category": "block", "sounds": [{"name": "block/door/doormove2", "stream": false}]}, + "door.sliding_seal_stop": {"category": "block", "sounds": [{"name": "block/door/metal_stop1", "stream": false}]}, + "item.techBleep": {"category": "player", "sounds": [{"name": "tool/techBleep", "stream": false}]}, "item.techBoop": {"category": "player", "sounds": [{"name": "tool/techBoop", "stream": false}]}, "item.geiger1": {"category": "player", "sounds": [{"name": "tool/geiger1", "stream": false}]}, @@ -173,6 +196,10 @@ "weapon.shotgunPump": {"category": "player", "sounds": [{"name": "weapon/shotgunShootPump", "stream": false}]}, "weapon.explosionMedium": {"category": "player", "sounds": [{"name": "weapon/explosion_medium", "stream": false}]}, "weapon.hicalShot": {"category": "player", "sounds": [{"name": "weapon/hicalShot", "stream": false}]}, + "weapon.coilgunReload": {"category": "player", "sounds": [{"name": "weapon/coilgunReload", "stream": false}]}, + "weapon.coilgunShoot": {"category": "player", "sounds": [{"name": "weapon/coilgunShoot", "stream": false}]}, + "weapon.glReload": {"category": "player", "sounds": [{"name": "weapon/glReload", "stream": false}]}, + "weapon.glShoot": {"category": "player", "sounds": [{"name": "weapon/glShoot", "stream": false}]}, "weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/block/boiler.ogg b/src/main/resources/assets/hbm/sounds/block/boiler.ogg new file mode 100644 index 000000000..c35d584f3 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/boiler.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/door_wgh_big_start.ogg b/src/main/resources/assets/hbm/sounds/block/door/door_wgh_big_start.ogg new file mode 100644 index 000000000..e85c687ae Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/door_wgh_big_start.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/door_wgh_big_stop.ogg b/src/main/resources/assets/hbm/sounds/block/door/door_wgh_big_stop.ogg new file mode 100644 index 000000000..c5322cd1a Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/door_wgh_big_stop.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/doormove2.ogg b/src/main/resources/assets/hbm/sounds/block/door/doormove2.ogg new file mode 100644 index 000000000..b41c4a6d0 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/doormove2.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/doorshut_1.ogg b/src/main/resources/assets/hbm/sounds/block/door/doorshut_1.ogg new file mode 100644 index 000000000..d3dd53ceb Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/doorshut_1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/doorslide_opened1.ogg b/src/main/resources/assets/hbm/sounds/block/door/doorslide_opened1.ogg new file mode 100644 index 000000000..4e9f5cd4e Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/doorslide_opened1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/doorslide_opening1.ogg b/src/main/resources/assets/hbm/sounds/block/door/doorslide_opening1.ogg new file mode 100644 index 000000000..ded65d1a1 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/doorslide_opening1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/garage_move.ogg b/src/main/resources/assets/hbm/sounds/block/door/garage_move.ogg new file mode 100644 index 000000000..9a8c707a1 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/garage_move.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/garage_stop.ogg b/src/main/resources/assets/hbm/sounds/block/door/garage_stop.ogg new file mode 100644 index 000000000..3d31adb02 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/garage_stop.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/lever1.ogg b/src/main/resources/assets/hbm/sounds/block/door/lever1.ogg new file mode 100644 index 000000000..e6dd7e05c Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/lever1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/metal_stop1.ogg b/src/main/resources/assets/hbm/sounds/block/door/metal_stop1.ogg new file mode 100644 index 000000000..e131a539b Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/metal_stop1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/sliding_door_opened.ogg b/src/main/resources/assets/hbm/sounds/block/door/sliding_door_opened.ogg new file mode 100644 index 000000000..4e9f5cd4e Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/sliding_door_opened.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/sliding_door_opening.ogg b/src/main/resources/assets/hbm/sounds/block/door/sliding_door_opening.ogg new file mode 100644 index 000000000..ded65d1a1 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/sliding_door_opening.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/sliding_door_shut.ogg b/src/main/resources/assets/hbm/sounds/block/door/sliding_door_shut.ogg new file mode 100644 index 000000000..d3dd53ceb Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/sliding_door_shut.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/electricHum.ogg b/src/main/resources/assets/hbm/sounds/block/electricHum.ogg new file mode 100644 index 000000000..2d6a77653 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/electricHum.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/hornFarDual.ogg b/src/main/resources/assets/hbm/sounds/block/hornFarDual.ogg new file mode 100644 index 000000000..f92fc5014 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/hornFarDual.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/hornFarSingle.ogg b/src/main/resources/assets/hbm/sounds/block/hornFarSingle.ogg new file mode 100644 index 000000000..d77e3f57e Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/hornFarSingle.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/hornNearDual.ogg b/src/main/resources/assets/hbm/sounds/block/hornNearDual.ogg new file mode 100644 index 000000000..26c030954 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/hornNearDual.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/hornNearSingle.ogg b/src/main/resources/assets/hbm/sounds/block/hornNearSingle.ogg new file mode 100644 index 000000000..5a66bc414 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/hornNearSingle.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/reactorLoop.ogg b/src/main/resources/assets/hbm/sounds/block/reactorLoop.ogg new file mode 100644 index 000000000..95ac0c523 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/reactorLoop.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/coilgunReload.ogg b/src/main/resources/assets/hbm/sounds/weapon/coilgunReload.ogg new file mode 100644 index 000000000..d17beefde Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/coilgunReload.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/coilgunShoot.ogg b/src/main/resources/assets/hbm/sounds/weapon/coilgunShoot.ogg new file mode 100644 index 000000000..8d2503e2d Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/coilgunShoot.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/glReload.ogg b/src/main/resources/assets/hbm/sounds/weapon/glReload.ogg new file mode 100644 index 000000000..36de2dae7 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/glReload.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/glShoot.ogg b/src/main/resources/assets/hbm/sounds/weapon/glShoot.ogg new file mode 100644 index 000000000..f75be2fe6 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/glShoot.ogg differ diff --git a/src/main/resources/assets/hbm/textures/armor/envsuit_arm.png b/src/main/resources/assets/hbm/textures/armor/envsuit_arm.png new file mode 100644 index 000000000..9c7d6ec9a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/envsuit_arm.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/envsuit_chest.png b/src/main/resources/assets/hbm/textures/armor/envsuit_chest.png new file mode 100644 index 000000000..9f4c8b0f1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/envsuit_chest.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/envsuit_helmet.png b/src/main/resources/assets/hbm/textures/armor/envsuit_helmet.png new file mode 100644 index 000000000..5849c62c5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/envsuit_helmet.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/envsuit_leg.png b/src/main/resources/assets/hbm/textures/armor/envsuit_leg.png new file mode 100644 index 000000000..7dbe96988 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/envsuit_leg.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/envsuit_tail.png b/src/main/resources/assets/hbm/textures/armor/envsuit_tail.png new file mode 100644 index 000000000..81d1aa345 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/envsuit_tail.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/grenade_nan.png b/src/main/resources/assets/hbm/textures/armor/grenade_nan.png deleted file mode 100644 index b07dad82c..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/grenade_nan.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/armor/trenchmaster_arm.png b/src/main/resources/assets/hbm/textures/armor/trenchmaster_arm.png new file mode 100644 index 000000000..b42795dcc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/trenchmaster_arm.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/trenchmaster_chest.png b/src/main/resources/assets/hbm/textures/armor/trenchmaster_chest.png new file mode 100644 index 000000000..ae2f704d8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/trenchmaster_chest.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/trenchmaster_helmet.png b/src/main/resources/assets/hbm/textures/armor/trenchmaster_helmet.png new file mode 100644 index 000000000..e8b931433 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/trenchmaster_helmet.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/trenchmaster_leg.png b/src/main/resources/assets/hbm/textures/armor/trenchmaster_leg.png new file mode 100644 index 000000000..67edc2382 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/trenchmaster_leg.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_cdalloy.png b/src/main/resources/assets/hbm/textures/blocks/block_cdalloy.png new file mode 100644 index 000000000..4b93264c6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/block_cdalloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_slag_broken.png b/src/main/resources/assets/hbm/textures/blocks/block_slag_broken.png new file mode 100644 index 000000000..97f12ce5d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/block_slag_broken.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_tcalloy.png b/src/main/resources/assets/hbm/textures/blocks/block_tcalloy.png new file mode 100644 index 000000000..22fc05fa5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/block_tcalloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust.png new file mode 100644 index 000000000..ab1816ba5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_bl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_bl.png new file mode 100644 index 000000000..48dc1e6b8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_bl.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_br.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_br.png new file mode 100644 index 000000000..51129d041 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_br.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tl.png new file mode 100644 index 000000000..6a7379597 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tl.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tr.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tr.png new file mode 100644 index 000000000..846ec559e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tr.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_end.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_end.png new file mode 100644 index 000000000..2065be57b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_end.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction.png new file mode 100644 index 000000000..8019ad543 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_straight.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_straight.png new file mode 100644 index 000000000..f6a5ed43e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_straight.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cable_gauge.png b/src/main/resources/assets/hbm/textures/blocks/cable_gauge.png new file mode 100644 index 000000000..206104da9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cable_gauge.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_bus_out.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_bus_out.png new file mode 100644 index 000000000..2cb5d7131 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_bus_out.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_bus_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_bus_side.png new file mode 100644 index 000000000..ae4dbc278 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_bus_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_bottom.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_bottom.png new file mode 100644 index 000000000..32987415c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_inner_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_inner_side.png new file mode 100644 index 000000000..554d60816 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_inner_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_inner_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_inner_top.png new file mode 100644 index 000000000..e1c904d6a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_inner_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_side.png new file mode 100644 index 000000000..4fd7aa4d4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_top.png new file mode 100644 index 000000000..42a14038a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_bottom.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_bottom.png new file mode 100644 index 000000000..bac7489b5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_inner_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_inner_side.png new file mode 100644 index 000000000..44987bdc6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_inner_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_inner_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_inner_top.png new file mode 100644 index 000000000..52ffe26c5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_inner_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_side.png new file mode 100644 index 000000000..07812057c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_top.png new file mode 100644 index 000000000..698c605be Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_bottom.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_bottom.png new file mode 100644 index 000000000..63aa94178 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_inner_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_inner_side.png new file mode 100644 index 000000000..a91a791a5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_inner_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_inner_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_inner_top.png new file mode 100644 index 000000000..59d978cfc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_inner_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_side.png new file mode 100644 index 000000000..121a437c4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_top.png new file mode 100644 index 000000000..1a02b2e46 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_bottom.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_bottom.png new file mode 100644 index 000000000..91b4ab950 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_inner_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_inner_side.png new file mode 100644 index 000000000..c81f1996e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_inner_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_inner_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_inner_top.png new file mode 100644 index 000000000..5ed43ff9c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_inner_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_side.png new file mode 100644 index 000000000..c70303bb1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_top.png new file mode 100644 index 000000000..de67f9b0c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_bottom.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_bottom.png new file mode 100644 index 000000000..c8b942875 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_inner_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_inner_side.png new file mode 100644 index 000000000..659311429 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_inner_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_inner_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_inner_top.png new file mode 100644 index 000000000..cc9a64624 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_inner_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_side.png new file mode 100644 index 000000000..ec7eb74da Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_top.png new file mode 100644 index 000000000..50d472365 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_block_alloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_block_alloy.png new file mode 100644 index 000000000..af14c2675 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_block_alloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_block_base.png b/src/main/resources/assets/hbm/textures/blocks/cm_block_base.png new file mode 100644 index 000000000..ce60d26f2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_block_base.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_block_desh.png b/src/main/resources/assets/hbm/textures/blocks/cm_block_desh.png new file mode 100644 index 000000000..73f09cf61 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_block_desh.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_block_steel.png b/src/main/resources/assets/hbm/textures/blocks/cm_block_steel.png new file mode 100644 index 000000000..05180ac75 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_block_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_block_tcalloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_block_tcalloy.png new file mode 100644 index 000000000..1ba202798 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_block_tcalloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_circuit_aluminium.png b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_aluminium.png new file mode 100644 index 000000000..8e44446d3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_aluminium.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_circuit_copper.png b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_copper.png new file mode 100644 index 000000000..7217056b0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_copper.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_circuit_gold.png b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_gold.png new file mode 100644 index 000000000..4c5bed684 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_gold.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_circuit_red_copper.png b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_red_copper.png new file mode 100644 index 000000000..f7df862cf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_red_copper.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_circuit_schrabidium.png b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_schrabidium.png new file mode 100644 index 000000000..da97f4286 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_schrabidium.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_engine_bismuth.png b/src/main/resources/assets/hbm/textures/blocks/cm_engine_bismuth.png new file mode 100644 index 000000000..c61aa02bd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_engine_bismuth.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_engine_desh.png b/src/main/resources/assets/hbm/textures/blocks/cm_engine_desh.png new file mode 100644 index 000000000..ff2e71fff Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_engine_desh.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_engine_standard.png b/src/main/resources/assets/hbm/textures/blocks/cm_engine_standard.png new file mode 100644 index 000000000..a629ff54d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_engine_standard.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_port_alloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_port_alloy.png new file mode 100644 index 000000000..5fb09e5bc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_port_alloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_port_desh.png b/src/main/resources/assets/hbm/textures/blocks/cm_port_desh.png new file mode 100644 index 000000000..fe18d8e6f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_port_desh.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_port_steel.png b/src/main/resources/assets/hbm/textures/blocks/cm_port_steel.png new file mode 100644 index 000000000..a7c997edb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_port_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_port_tcalloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_port_tcalloy.png new file mode 100644 index 000000000..e06654337 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_port_tcalloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_sheet_alloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_alloy.png new file mode 100644 index 000000000..3cee48d8f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_alloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_sheet_base.png b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_base.png new file mode 100644 index 000000000..8f6382d01 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_base.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_sheet_desh.png b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_desh.png new file mode 100644 index 000000000..b68c2850f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_desh.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_sheet_steel.png b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_steel.png new file mode 100644 index 000000000..e1a1160bb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_sheet_tcalloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_tcalloy.png new file mode 100644 index 000000000..5fa07c692 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_tcalloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_tank_alloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_tank_alloy.png new file mode 100644 index 000000000..189361a5c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_tank_alloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_tank_desh.png b/src/main/resources/assets/hbm/textures/blocks/cm_tank_desh.png new file mode 100644 index 000000000..97d667b6d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_tank_desh.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_tank_steel.png b/src/main/resources/assets/hbm/textures/blocks/cm_tank_steel.png new file mode 100644 index 000000000..e0d207b55 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_tank_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_tank_tcalloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_tank_tcalloy.png new file mode 100644 index 000000000..8b5444a3a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_tank_tcalloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_terminal_front.png b/src/main/resources/assets/hbm/textures/blocks/cm_terminal_front.png new file mode 100644 index 000000000..bbf5d2338 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_terminal_front.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_terminal_side.png b/src/main/resources/assets/hbm/textures/blocks/cm_terminal_side.png new file mode 100644 index 000000000..24a880774 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_terminal_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cmt_terminal_front.png b/src/main/resources/assets/hbm/textures/blocks/cmt_terminal_front.png new file mode 100644 index 000000000..1cf5cdafa Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cmt_terminal_front.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cmt_terminal_side.png b/src/main/resources/assets/hbm/textures/blocks/cmt_terminal_side.png new file mode 100644 index 000000000..adb2fdb8a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cmt_terminal_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.hazard.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.hazard.png new file mode 100644 index 000000000..50ce195a5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.hazard.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.indigo.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.indigo.png new file mode 100644 index 000000000..25df4b96d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.indigo.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.machine.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.machine.png new file mode 100644 index 000000000..53406350f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.machine.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.machine_stripe.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.machine_stripe.png new file mode 100644 index 000000000..e60525931 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.machine_stripe.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.pink.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.pink.png new file mode 100644 index 000000000..bf6c79fab Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.pink.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.purple.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.purple.png new file mode 100644 index 000000000..10101f3fb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.purple.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png new file mode 100644 index 000000000..df5c9a664 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png.mcmeta new file mode 100644 index 000000000..df9cfce6e --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": { } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_left.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_left.png new file mode 100644 index 000000000..dc1fd209b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_left.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_left.png.mcmeta new file mode 100644 index 000000000..df9cfce6e --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_left.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": { } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_right.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_right.png new file mode 100644 index 000000000..275cf2485 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_right.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_right.png.mcmeta new file mode 100644 index 000000000..df9cfce6e --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_right.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": { } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_down_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_down_turn_left.png new file mode 100644 index 000000000..5bdc5d132 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_down_turn_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_down_turn_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_down_turn_right.png new file mode 100644 index 000000000..0c3c43bd9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_down_turn_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_left_turn_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_left_turn_down.png new file mode 100644 index 000000000..e2590058d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_left_turn_down.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_left_turn_up.png b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_left_turn_up.png new file mode 100644 index 000000000..3c3f8f469 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_left_turn_up.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_right_turn_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_right_turn_down.png new file mode 100644 index 000000000..3e47bb1b0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_right_turn_down.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_right_turn_up.png b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_right_turn_up.png new file mode 100644 index 000000000..7aaa43bc3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_right_turn_up.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_up_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_up_turn_left.png new file mode 100644 index 000000000..fc5c0762a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_up_turn_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_up_turn_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_up_turn_right.png new file mode 100644 index 000000000..072ada276 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_side_up_turn_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_boxer_top_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_top_left.png new file mode 100644 index 000000000..f848301dd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_top_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_boxer_top_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_top_right.png new file mode 100644 index 000000000..05881e595 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_boxer_top_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_down_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_down_turn_left.png new file mode 100644 index 000000000..03f312b40 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_down_turn_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_down_turn_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_down_turn_right.png new file mode 100644 index 000000000..f1f7fb7d3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_down_turn_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_left_turn_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_left_turn_down.png new file mode 100644 index 000000000..c8ed570b8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_left_turn_down.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_left_turn_up.png b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_left_turn_up.png new file mode 100644 index 000000000..959d1982b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_left_turn_up.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_right_turn_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_right_turn_down.png new file mode 100644 index 000000000..5345e832c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_right_turn_down.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_right_turn_up.png b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_right_turn_up.png new file mode 100644 index 000000000..e0214f3d4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_right_turn_up.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_up_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_up_turn_left.png new file mode 100644 index 000000000..7c0e16cb9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_up_turn_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_up_turn_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_up_turn_right.png new file mode 100644 index 000000000..cda6ec687 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_up_turn_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_grabber_top_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_top_left.png new file mode 100644 index 000000000..8877112aa Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_top_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_grabber_top_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_top_right.png new file mode 100644 index 000000000..2348ad43b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_top_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in.png b/src/main/resources/assets/hbm/textures/blocks/crane_in.png index 8eb25f502..98f5652c1 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/crane_in.png and b/src/main/resources/assets/hbm/textures/blocks/crane_in.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_side_down_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_down_turn_left.png new file mode 100644 index 000000000..ecbed86c1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_down_turn_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_side_down_turn_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_down_turn_right.png new file mode 100644 index 000000000..3f29dca63 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_down_turn_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_side_left_turn_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_left_turn_down.png new file mode 100644 index 000000000..bd2e18f64 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_left_turn_down.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_side_left_turn_up.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_left_turn_up.png new file mode 100644 index 000000000..34acf0577 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_left_turn_up.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_side_right_turn_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_right_turn_down.png new file mode 100644 index 000000000..fb2fca3ff Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_right_turn_down.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_side_right_turn_up.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_right_turn_up.png new file mode 100644 index 000000000..059b922fb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_right_turn_up.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_side_up_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_up_turn_left.png new file mode 100644 index 000000000..763c68afc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_up_turn_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_side_up_turn_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_up_turn_right.png new file mode 100644 index 000000000..0d062f8c7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_in_side_up_turn_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_top_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_top_left.png new file mode 100644 index 000000000..23721ae91 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_in_top_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_in_top_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_in_top_right.png new file mode 100644 index 000000000..1f9c63552 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_in_top_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out.png b/src/main/resources/assets/hbm/textures/blocks/crane_out.png index 98f5652c1..8eb25f502 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/crane_out.png and b/src/main/resources/assets/hbm/textures/blocks/crane_out.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_down_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_down_turn_left.png new file mode 100644 index 000000000..760f1c1f3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_down_turn_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_down_turn_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_down_turn_right.png new file mode 100644 index 000000000..e9bd8e352 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_down_turn_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_left_turn_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_left_turn_down.png new file mode 100644 index 000000000..d99bde01f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_left_turn_down.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_left_turn_up.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_left_turn_up.png new file mode 100644 index 000000000..7e7dcd0be Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_left_turn_up.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_right_turn_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_right_turn_down.png new file mode 100644 index 000000000..7ac3cae11 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_right_turn_down.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_right_turn_up.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_right_turn_up.png new file mode 100644 index 000000000..ed3d586a8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_right_turn_up.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_up_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_up_turn_left.png new file mode 100644 index 000000000..3a5c6636e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_up_turn_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_side_up_turn_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_up_turn_right.png new file mode 100644 index 000000000..18271a72f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_out_side_up_turn_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_top_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_top_left.png new file mode 100644 index 000000000..d2ffff31e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_out_top_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_out_top_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_out_top_right.png new file mode 100644 index 000000000..78f357645 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_out_top_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_side_in.png b/src/main/resources/assets/hbm/textures/blocks/crane_side_in.png index ead7f5c56..47f4406f4 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/crane_side_in.png and b/src/main/resources/assets/hbm/textures/blocks/crane_side_in.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_side_out.png b/src/main/resources/assets/hbm/textures/blocks/crane_side_out.png index 47f4406f4..ead7f5c56 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/crane_side_out.png and b/src/main/resources/assets/hbm/textures/blocks/crane_side_out.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_down_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_down_turn_left.png new file mode 100644 index 000000000..1d6cfc0b0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_down_turn_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_down_turn_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_down_turn_right.png new file mode 100644 index 000000000..7601fddfc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_down_turn_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_left_turn_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_left_turn_down.png new file mode 100644 index 000000000..99d98ea56 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_left_turn_down.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_left_turn_up.png b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_left_turn_up.png new file mode 100644 index 000000000..bbf523a73 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_left_turn_up.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_right_turn_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_right_turn_down.png new file mode 100644 index 000000000..01d6712ed Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_right_turn_down.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_right_turn_up.png b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_right_turn_up.png new file mode 100644 index 000000000..ccc53b86e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_right_turn_up.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_up_turn_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_up_turn_left.png new file mode 100644 index 000000000..33e53a5e9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_up_turn_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_up_turn_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_up_turn_right.png new file mode 100644 index 000000000..51827914c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_side_up_turn_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_top_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_top_left.png new file mode 100644 index 000000000..4d042062a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_top_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_top_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_top_right.png new file mode 100644 index 000000000..5f1aeb266 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_unboxer_top_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crate_template.png b/src/main/resources/assets/hbm/textures/blocks/crate_template.png new file mode 100644 index 000000000..2ae4399fc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crate_template.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/diamond_block.png b/src/main/resources/assets/hbm/textures/blocks/diamond_block.png deleted file mode 100644 index f2e2e771a..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/diamond_block.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/diamond_ore.png b/src/main/resources/assets/hbm/textures/blocks/diamond_ore.png deleted file mode 100644 index 735ecdaa9..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/diamond_ore.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_bottom.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_bottom.png new file mode 100644 index 000000000..dbc6e87ca Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_crate_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_bottom.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_bottom.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_bottom.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_bottom.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_bottom.png new file mode 100644 index 000000000..c7d04c9a3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_bottom.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_bottom.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_bottom.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_side.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_side.png new file mode 100644 index 000000000..add80fb8d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_side.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_side.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_side.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_top.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_top.png new file mode 100644 index 000000000..824bd9421 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_top.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_top.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_top.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_bottom.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_bottom.png new file mode 100644 index 000000000..2b75efcb7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_bottom.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_bottom.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_bottom.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_side.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_side.png new file mode 100644 index 000000000..70d40f070 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_side.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_side.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_side.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_top.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_top.png new file mode 100644 index 000000000..e8d4476ce Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_top.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_top.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_top.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_side.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_side.png new file mode 100644 index 000000000..bb54d31ae Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_crate_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_side.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_side.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_side.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_top.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_top.png new file mode 100644 index 000000000..4d38b8ec7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_crate_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_top.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_top.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_top.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_dock_bottom.png b/src/main/resources/assets/hbm/textures/blocks/drone_dock_bottom.png new file mode 100644 index 000000000..67ebd79ec Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_dock_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_dock_side.png b/src/main/resources/assets/hbm/textures/blocks/drone_dock_side.png new file mode 100644 index 000000000..fd71122a6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_dock_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_dock_side.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_dock_side.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_dock_side.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_dock_top.png b/src/main/resources/assets/hbm/textures/blocks/drone_dock_top.png new file mode 100644 index 000000000..2186e84bb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_dock_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_waypoint.png b/src/main/resources/assets/hbm/textures/blocks/drone_waypoint.png new file mode 100644 index 000000000..658409299 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_waypoint.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_waypoint.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_waypoint.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_waypoint.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_waypoint_request.png b/src/main/resources/assets/hbm/textures/blocks/drone_waypoint_request.png new file mode 100644 index 000000000..730f2a051 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/drone_waypoint_request.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_waypoint_request.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_waypoint_request.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_waypoint_request.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/emerald_ore.png b/src/main/resources/assets/hbm/textures/blocks/emerald_ore.png deleted file mode 100644 index a26c35f6a..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/emerald_ore.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fluid_switch_off.png b/src/main/resources/assets/hbm/textures/blocks/fluid_switch_off.png new file mode 100644 index 000000000..b12413cf5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/fluid_switch_off.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fluid_switch_on.png b/src/main/resources/assets/hbm/textures/blocks/fluid_switch_on.png new file mode 100644 index 000000000..46c641f19 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/fluid_switch_on.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fluid_valve_off.png b/src/main/resources/assets/hbm/textures/blocks/fluid_valve_off.png index 62e2dc7cf..fcf1d2a54 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/fluid_valve_off.png and b/src/main/resources/assets/hbm/textures/blocks/fluid_valve_off.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fluid_valve_on.png b/src/main/resources/assets/hbm/textures/blocks/fluid_valve_on.png index 4bb093842..19c8bec2a 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/fluid_valve_on.png and b/src/main/resources/assets/hbm/textures/blocks/fluid_valve_on.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_bottom.png b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_bottom.png new file mode 100644 index 000000000..07af75aca Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_front.png b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_front.png new file mode 100644 index 000000000..230a6894f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_front.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_inner.png b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_inner.png new file mode 100644 index 000000000..a474e0f5f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_inner.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_side.png b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_side.png new file mode 100644 index 000000000..ce3162bec Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_top.png b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_top.png new file mode 100644 index 000000000..945bb0bbd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side.png index 1db5c40d0..82452e86d 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side.png and b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt.png deleted file mode 100644 index 82452e86d..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt2.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt2.png deleted file mode 100644 index 72bfdc87d..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt2.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt3.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt3.png deleted file mode 100644 index ea4392947..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt3.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_welded.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_welded.png new file mode 100644 index 000000000..adbd7c637 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_welded.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top_alt.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top.png similarity index 100% rename from src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top_alt.png rename to src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top.png diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top_welded.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top_welded.png new file mode 100644 index 000000000..8257cb294 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top_welded.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glass/reinforced_glass.png b/src/main/resources/assets/hbm/textures/blocks/glass/reinforced_glass.png new file mode 100644 index 000000000..d003abb6c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glass/reinforced_glass.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glass/reinforced_glass_ct.png b/src/main/resources/assets/hbm/textures/blocks/glass/reinforced_glass_ct.png new file mode 100644 index 000000000..2105d94d4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glass/reinforced_glass_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_base.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_base.png new file mode 100644 index 000000000..ef6bca815 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glyphid_base.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_base_2.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_base_2.png new file mode 100644 index 000000000..541a53c5f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glyphid_base_2.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_base_alt.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_base_alt.png new file mode 100644 index 000000000..a0fa4d8e6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glyphid_base_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs.png new file mode 100644 index 000000000..8f1e021e5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_alt.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_alt.png new file mode 100644 index 000000000..f641f7f24 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_base.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_base.png new file mode 100644 index 000000000..8d0ed4045 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_base.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/hadron_cooler.png b/src/main/resources/assets/hbm/textures/blocks/hadron_cooler.png new file mode 100644 index 000000000..04e264932 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/hadron_cooler.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/hadron_cooler_mk2.png b/src/main/resources/assets/hbm/textures/blocks/hadron_cooler_mk2.png new file mode 100644 index 000000000..63c994f68 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/hadron_cooler_mk2.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_off.png b/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_off.png deleted file mode 100644 index 88988d8af..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_off.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_off_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_off_alt.png deleted file mode 100644 index 696252554..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_off_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_on.png b/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_on.png deleted file mode 100644 index b7be137c4..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_on.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_on_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_on_alt.png deleted file mode 100644 index fd3db8a9a..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_on_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_coal_side.png b/src/main/resources/assets/hbm/textures/blocks/machine_coal_side.png deleted file mode 100644 index ae621d7a0..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_coal_side.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_coal_side_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_coal_side_alt.png deleted file mode 100644 index 326238314..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_coal_side_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/mass_storage_side_wood.png b/src/main/resources/assets/hbm/textures/blocks/mass_storage_side_wood.png new file mode 100644 index 000000000..d71ef7d61 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/mass_storage_side_wood.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/mass_storage_top_wood.png b/src/main/resources/assets/hbm/textures/blocks/mass_storage_top_wood.png new file mode 100644 index 000000000..ba3c9d9f7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/mass_storage_top_wood.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_block.png b/src/main/resources/assets/hbm/textures/blocks/pwr_block.png new file mode 100644 index 000000000..8483b2814 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_block.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_block_ct.png b/src/main/resources/assets/hbm/textures/blocks/pwr_block_ct.png new file mode 100644 index 000000000..d7b37f330 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_block_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_block_ct_alt.png b/src/main/resources/assets/hbm/textures/blocks/pwr_block_ct_alt.png new file mode 100644 index 000000000..a1b7fd272 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_block_ct_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_casing.png b/src/main/resources/assets/hbm/textures/blocks/pwr_casing.png new file mode 100644 index 000000000..23f51e503 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_casing.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_casing_blank.png b/src/main/resources/assets/hbm/textures/blocks/pwr_casing_blank.png new file mode 100644 index 000000000..6b8c7f6b4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_casing_blank.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_casing_port.png b/src/main/resources/assets/hbm/textures/blocks/pwr_casing_port.png new file mode 100644 index 000000000..809c564c2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_casing_port.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_casing_port_ct.png b/src/main/resources/assets/hbm/textures/blocks/pwr_casing_port_ct.png new file mode 100644 index 000000000..52fb4583a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_casing_port_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_channel_side.png b/src/main/resources/assets/hbm/textures/blocks/pwr_channel_side.png new file mode 100644 index 000000000..bc3b557a2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_channel_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_channel_top.png b/src/main/resources/assets/hbm/textures/blocks/pwr_channel_top.png new file mode 100644 index 000000000..0e1e9a42a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_channel_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_concrete_flat.png b/src/main/resources/assets/hbm/textures/blocks/pwr_concrete_flat.png new file mode 100644 index 000000000..7dd3c4ba5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_concrete_flat.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_control_side.png b/src/main/resources/assets/hbm/textures/blocks/pwr_control_side.png new file mode 100644 index 000000000..b36c421a2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_control_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_control_top.png b/src/main/resources/assets/hbm/textures/blocks/pwr_control_top.png new file mode 100644 index 000000000..d5ae636a0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_control_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_controller.png b/src/main/resources/assets/hbm/textures/blocks/pwr_controller.png new file mode 100644 index 000000000..822cb4d26 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_controller.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_fuel_side.png b/src/main/resources/assets/hbm/textures/blocks/pwr_fuel_side.png new file mode 100644 index 000000000..1f22996bb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_fuel_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_fuel_top.png b/src/main/resources/assets/hbm/textures/blocks/pwr_fuel_top.png new file mode 100644 index 000000000..d29654d60 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_fuel_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_heatex.png b/src/main/resources/assets/hbm/textures/blocks/pwr_heatex.png new file mode 100644 index 000000000..f579c8a45 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_heatex.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_neutron_source.png b/src/main/resources/assets/hbm/textures/blocks/pwr_neutron_source.png new file mode 100644 index 000000000..bc1d78027 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_neutron_source.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_port.png b/src/main/resources/assets/hbm/textures/blocks/pwr_port.png new file mode 100644 index 000000000..2fa42a61e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_port.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pwr_reflector.png b/src/main/resources/assets/hbm/textures/blocks/pwr_reflector.png new file mode 100644 index 000000000..c139a402e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pwr_reflector.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/radio_telex.png b/src/main/resources/assets/hbm/textures/blocks/radio_telex.png new file mode 100644 index 000000000..fddb508dd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/radio_telex.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rail_narrow_neo.png b/src/main/resources/assets/hbm/textures/blocks/rail_narrow_neo.png new file mode 100644 index 000000000..b00f01978 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rail_narrow_neo.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rail_standard_buffer.png b/src/main/resources/assets/hbm/textures/blocks/rail_standard_buffer.png new file mode 100644 index 000000000..a8943aaf8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rail_standard_buffer.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rail_standard_straight.png b/src/main/resources/assets/hbm/textures/blocks/rail_standard_straight.png new file mode 100644 index 000000000..649fbd388 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rail_standard_straight.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reinforced_glass_pane.png b/src/main/resources/assets/hbm/textures/blocks/reinforced_glass_pane.png new file mode 100644 index 000000000..157496351 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/reinforced_glass_pane.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reinforced_glass_pane_edge.png b/src/main/resources/assets/hbm/textures/blocks/reinforced_glass_pane_edge.png new file mode 100644 index 000000000..9c2ff4dd1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/reinforced_glass_pane_edge.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate.png b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate.png new file mode 100644 index 000000000..d003abb6c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_ct.png b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_ct.png new file mode 100644 index 000000000..2105d94d4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_pane.png b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_pane.png new file mode 100644 index 000000000..d003abb6c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_pane.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_pane_edge.png b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_pane_edge.png new file mode 100644 index 000000000..aeaf7b907 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_pane_edge.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rtty_counter.png b/src/main/resources/assets/hbm/textures/blocks/rtty_counter.png new file mode 100644 index 000000000..f00b829ac Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rtty_counter.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/slag.png b/src/main/resources/assets/hbm/textures/blocks/slag.png new file mode 100644 index 000000000..6b39d33d5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/slag.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/sliding_blast_door.png b/src/main/resources/assets/hbm/textures/blocks/sliding_blast_door.png new file mode 100644 index 000000000..752aa7567 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/sliding_blast_door.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome.desert.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome.desert.png new file mode 100644 index 000000000..5d121421f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_biome.desert.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome.woodland.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome.woodland.png new file mode 100644 index 000000000..d0e122c48 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_biome.woodland.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.desert.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.desert.png new file mode 100644 index 000000000..ab84f7807 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.desert.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.woodland.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.woodland.png new file mode 100644 index 000000000..1ff0e0593 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.woodland.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.desert.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.desert.png new file mode 100644 index 000000000..1c05ff0d1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.desert.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.woodland.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.woodland.png new file mode 100644 index 000000000..e758050f4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.woodland.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_deep_base.png b/src/main/resources/assets/hbm/textures/blocks/stone_deep_base.png new file mode 100644 index 000000000..0800acb0c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_deep_base.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_keyhole.png b/src/main/resources/assets/hbm/textures/blocks/stone_keyhole.png new file mode 100644 index 000000000..394785a63 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_keyhole.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_resource.bauxite.png b/src/main/resources/assets/hbm/textures/blocks/stone_resource.bauxite.png new file mode 100644 index 000000000..d2b38295d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_resource.bauxite.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/boat_rubber.png b/src/main/resources/assets/hbm/textures/entity/boat_rubber.png new file mode 100644 index 000000000..9cde41461 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/boat_rubber.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/creeper_gold.png b/src/main/resources/assets/hbm/textures/entity/creeper_gold.png new file mode 100644 index 000000000..8f20dd3f4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/creeper_gold.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/creeper_volatile.png b/src/main/resources/assets/hbm/textures/entity/creeper_volatile.png new file mode 100644 index 000000000..b26401539 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/creeper_volatile.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid.png b/src/main/resources/assets/hbm/textures/entity/glyphid.png new file mode 100644 index 000000000..5294c0dc7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_behemoth.png b/src/main/resources/assets/hbm/textures/entity/glyphid_behemoth.png new file mode 100644 index 000000000..b59f6e251 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_behemoth.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_blaster.png b/src/main/resources/assets/hbm/textures/entity/glyphid_blaster.png new file mode 100644 index 000000000..f99440f7b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_blaster.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_bombardier.png b/src/main/resources/assets/hbm/textures/entity/glyphid_bombardier.png new file mode 100644 index 000000000..172b05b28 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_bombardier.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_brawler.png b/src/main/resources/assets/hbm/textures/entity/glyphid_brawler.png new file mode 100644 index 000000000..420a0a60c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_brawler.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_brenda.png b/src/main/resources/assets/hbm/textures/entity/glyphid_brenda.png new file mode 100644 index 000000000..b831b1a1f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_brenda.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_nuclear.png b/src/main/resources/assets/hbm/textures/entity/glyphid_nuclear.png new file mode 100644 index 000000000..af7c50fbc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_nuclear.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_scout.png b/src/main/resources/assets/hbm/textures/entity/glyphid_scout.png new file mode 100644 index 000000000..23a2eee98 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_scout.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/pigeon.png b/src/main/resources/assets/hbm/textures/entity/pigeon.png new file mode 100644 index 000000000..94ccc073f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/pigeon.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/plasticbag.png b/src/main/resources/assets/hbm/textures/entity/plasticbag.png new file mode 100644 index 000000000..079d1ba4f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/plasticbag.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/quadcopter.png b/src/main/resources/assets/hbm/textures/entity/quadcopter.png new file mode 100644 index 000000000..26d6b5518 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/quadcopter.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/GUICoal.png b/src/main/resources/assets/hbm/textures/gui/GUICoal.png index 55baf1719..64a2c1bff 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/GUICoal.png and b/src/main/resources/assets/hbm/textures/gui/GUICoal.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/book/book_lore.png b/src/main/resources/assets/hbm/textures/gui/book/book_lore.png new file mode 100644 index 000000000..c5f8a4284 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/book/book_lore.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/hotblood.png b/src/main/resources/assets/hbm/textures/gui/fluids/blood_hot.png similarity index 100% rename from src/main/resources/assets/hbm/textures/gui/fluids/hotblood.png rename to src/main/resources/assets/hbm/textures/gui/fluids/blood_hot.png diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/calcium_chloride.png b/src/main/resources/assets/hbm/textures/gui/fluids/calcium_chloride.png new file mode 100644 index 000000000..f1ebd5aba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/calcium_chloride.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/calcium_solution.png b/src/main/resources/assets/hbm/textures/gui/fluids/calcium_solution.png new file mode 100644 index 000000000..f1ebd5aba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/calcium_solution.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_cleaned.png b/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_cleaned.png new file mode 100644 index 000000000..f1ebd5aba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_cleaned.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_mix.png b/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_mix.png new file mode 100644 index 000000000..f1ebd5aba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_mix.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_solution.png b/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_solution.png new file mode 100644 index 000000000..f1ebd5aba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_solution.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/custom_lava.png b/src/main/resources/assets/hbm/textures/gui/fluids/custom_lava.png new file mode 100644 index 000000000..e84993786 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/custom_lava.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/custom_oil.png b/src/main/resources/assets/hbm/textures/gui/fluids/custom_oil.png new file mode 100644 index 000000000..8c2fb1710 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/custom_oil.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/custom_toxin.png b/src/main/resources/assets/hbm/textures/gui/fluids/custom_toxin.png new file mode 100644 index 000000000..997a31214 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/custom_toxin.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/custom_water.png b/src/main/resources/assets/hbm/textures/gui/fluids/custom_water.png new file mode 100644 index 000000000..63fdd9ec9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/custom_water.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/fishoil.png b/src/main/resources/assets/hbm/textures/gui/fluids/fishoil.png new file mode 100644 index 000000000..59a2057bd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/fishoil.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/fullerene.png b/src/main/resources/assets/hbm/textures/gui/fluids/fullerene.png new file mode 100644 index 000000000..bcde8c277 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/fullerene.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/heavywater_hot.png b/src/main/resources/assets/hbm/textures/gui/fluids/heavywater_hot.png new file mode 100644 index 000000000..119b76cda Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/heavywater_hot.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/helium4.png b/src/main/resources/assets/hbm/textures/gui/fluids/helium4.png new file mode 100644 index 000000000..bbf8ac23c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/helium4.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/nitroglycerin.png b/src/main/resources/assets/hbm/textures/gui/fluids/nitroglycerin.png new file mode 100644 index 000000000..7ce138094 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/nitroglycerin.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/potassium_chloride.png b/src/main/resources/assets/hbm/textures/gui/fluids/potassium_chloride.png new file mode 100644 index 000000000..f1ebd5aba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/potassium_chloride.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/redmud.png b/src/main/resources/assets/hbm/textures/gui/fluids/redmud.png new file mode 100644 index 000000000..05e3c75c0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/redmud.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/smoke.png b/src/main/resources/assets/hbm/textures/gui/fluids/smoke.png new file mode 100644 index 000000000..1e275e7d3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/smoke.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/smoke_leaded.png b/src/main/resources/assets/hbm/textures/gui/fluids/smoke_leaded.png new file mode 100644 index 000000000..cd66e88d7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/smoke_leaded.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/smoke_poison.png b/src/main/resources/assets/hbm/textures/gui/fluids/smoke_poison.png new file mode 100644 index 000000000..4af9e9028 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/smoke_poison.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/sodium.png b/src/main/resources/assets/hbm/textures/gui/fluids/sodium.png new file mode 100644 index 000000000..35a104eb6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/sodium.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/sodium_hot.png b/src/main/resources/assets/hbm/textures/gui/fluids/sodium_hot.png new file mode 100644 index 000000000..61fe27c3f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/sodium_hot.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/sunfloweroil.png b/src/main/resources/assets/hbm/textures/gui/fluids/sunfloweroil.png new file mode 100644 index 000000000..533362c50 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/sunfloweroil.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/thorium_salt.png b/src/main/resources/assets/hbm/textures/gui/fluids/thorium_salt.png new file mode 100644 index 000000000..93d40f3e9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/thorium_salt.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/thorium_salt_depleted.png b/src/main/resources/assets/hbm/textures/gui/fluids/thorium_salt_depleted.png new file mode 100644 index 000000000..a8955b82a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/thorium_salt_depleted.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/thorium_salt_hot.png b/src/main/resources/assets/hbm/textures/gui/fluids/thorium_salt_hot.png new file mode 100644 index 000000000..7e5bdc7ac Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/thorium_salt_hot.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner.png b/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner.png new file mode 100644 index 000000000..08d2f02dd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner_alt.png b/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner_alt.png new file mode 100644 index 000000000..dc5671d92 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_inserter.png b/src/main/resources/assets/hbm/textures/gui/gui_inserter.png deleted file mode 100644 index a38ebf127..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_inserter.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_press.png b/src/main/resources/assets/hbm/textures/gui/gui_press.png index 8c09adbe6..c1d48e764 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_press.png and b/src/main/resources/assets/hbm/textures/gui/gui_press.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_turbofan.png b/src/main/resources/assets/hbm/textures/gui/gui_turbofan.png deleted file mode 100644 index 89631642e..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_turbofan.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_ashpit.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_ashpit.png new file mode 100644 index 000000000..a8a29d6bc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/machine/gui_ashpit.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_hadron.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_hadron.png index 9c5334115..956ddeecc 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/machine/gui_hadron.png and b/src/main/resources/assets/hbm/textures/gui/machine/gui_hadron.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_pattern.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_pattern.png deleted file mode 100644 index 306cf24f7..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/machine/gui_pattern.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_link.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_link.png new file mode 100644 index 000000000..423352af0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_link.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png new file mode 100644 index 000000000..572179845 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_rtty_counter.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_rtty_counter.png new file mode 100644 index 000000000..70c49adf4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/machine/gui_rtty_counter.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_telex.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_telex.png new file mode 100644 index 000000000..32635945d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/machine/gui_telex.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_custom.png b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_custom.png new file mode 100644 index 000000000..c28a69cf4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_custom.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_arc_welder.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_arc_welder.png new file mode 100644 index 000000000..82c982cfa Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_arc_welder.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_catalytic_reformer.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_catalytic_reformer.png index 27b5d21fd..077d004fd 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_catalytic_reformer.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_catalytic_reformer.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_compressor.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_compressor.png new file mode 100644 index 000000000..0a0179680 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_compressor.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_custom.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_custom.png new file mode 100644 index 000000000..7b47cbfac Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_custom.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser.png index 7a250f025..3f28a4951 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser_fluid.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser_fluid.png new file mode 100644 index 000000000..30b63b55e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser_fluid.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser_metal.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser_metal.png new file mode 100644 index 000000000..0de879b3d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser_metal.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_exposure_chamber.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_exposure_chamber.png new file mode 100644 index 000000000..24701a27f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_exposure_chamber.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_furnace_combination.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_furnace_combination.png index 3645fbfd5..9db29bd5f 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_furnace_combination.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_furnace_combination.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png index dae113415..a04e3e7a7 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_pwr.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_pwr.png new file mode 100644 index 000000000..a90a45e0c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/reactors/gui_pwr.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_console.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_console.png index 877132937..5222274f9 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_console.png and b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_console.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_crate_drone.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_crate_drone.png new file mode 100644 index 000000000..a0afa8019 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/storage/gui_crate_drone.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_crate_template.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_crate_template.png new file mode 100644 index 000000000..c82ad403b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/storage/gui_crate_template.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_dock.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_dock.png new file mode 100644 index 000000000..4bcea800c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_dock.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_provider.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_provider.png new file mode 100644 index 000000000..a0b473215 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_provider.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_requester.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_requester.png new file mode 100644 index 000000000..2b20d19e6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_requester.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_plastic_bag.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_plastic_bag.png new file mode 100644 index 000000000..9f1c71dc6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/storage/gui_plastic_bag.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/vehicles/gui_cargo_tram.png b/src/main/resources/assets/hbm/textures/gui/vehicles/gui_cargo_tram.png new file mode 100644 index 000000000..21f3bf5a2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/vehicles/gui_cargo_tram.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/vehicles/gui_cargo_tram_trailer.png b/src/main/resources/assets/hbm/textures/gui/vehicles/gui_cargo_tram_trailer.png new file mode 100644 index 000000000..5e7ed2762 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/vehicles/gui_cargo_tram_trailer.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/weapon/ivyMikeSchematic.png b/src/main/resources/assets/hbm/textures/gui/weapon/ivyMikeSchematic.png index 6a1c5e40f..6df7cce0f 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/weapon/ivyMikeSchematic.png and b/src/main/resources/assets/hbm/textures/gui/weapon/ivyMikeSchematic.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/weapon/tsarBombaSchematic.png b/src/main/resources/assets/hbm/textures/gui/weapon/tsarBombaSchematic.png index 3e3a3ca7d..6adb2423b 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/weapon/tsarBombaSchematic.png and b/src/main/resources/assets/hbm/textures/gui/weapon/tsarBombaSchematic.png differ diff --git a/src/main/resources/assets/hbm/textures/items/achievement_icon.acid.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.acid.png new file mode 100644 index 000000000..e83e786e3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/achievement_icon.acid.png differ diff --git a/src/main/resources/assets/hbm/textures/items/achievement_icon.balls.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.balls.png new file mode 100644 index 000000000..569a248c0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/achievement_icon.balls.png differ diff --git a/src/main/resources/assets/hbm/textures/items/digamma_feel.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammafeel.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/digamma_feel.png rename to src/main/resources/assets/hbm/textures/items/achievement_icon.digammafeel.png diff --git a/src/main/resources/assets/hbm/textures/items/achievement_icon.digammaforourright.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammaforourright.png new file mode 100644 index 000000000..bccb7255a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammaforourright.png differ diff --git a/src/main/resources/assets/hbm/textures/items/digamma_kauai_moho.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammakauaimoho.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/digamma_kauai_moho.png rename to src/main/resources/assets/hbm/textures/items/achievement_icon.digammakauaimoho.png diff --git a/src/main/resources/assets/hbm/textures/items/digamma_know.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammaknow.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/digamma_know.png rename to src/main/resources/assets/hbm/textures/items/achievement_icon.digammaknow.png diff --git a/src/main/resources/assets/hbm/textures/items/digamma_see.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammasee.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/digamma_see.png rename to src/main/resources/assets/hbm/textures/items/achievement_icon.digammasee.png diff --git a/src/main/resources/assets/hbm/textures/items/digamma_unity.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammaunity.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/digamma_unity.png rename to src/main/resources/assets/hbm/textures/items/achievement_icon.digammaunity.png diff --git a/src/main/resources/assets/hbm/textures/items/digamma_up_on_top.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammaupontop.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/digamma_up_on_top.png rename to src/main/resources/assets/hbm/textures/items/achievement_icon.digammaupontop.png diff --git a/src/main/resources/assets/hbm/textures/items/achievement_icon.gofish.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.gofish.png new file mode 100644 index 000000000..f6622381a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/achievement_icon.gofish.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_coilgun.png b/src/main/resources/assets/hbm/textures/items/ammo_coilgun.png new file mode 100644 index 000000000..5e6692fb6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_coilgun.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_coilgun_du.png b/src/main/resources/assets/hbm/textures/items/ammo_coilgun_du.png new file mode 100644 index 000000000..a8bb6196c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_coilgun_du.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_coilgun_rubber.png b/src/main/resources/assets/hbm/textures/items/ammo_coilgun_rubber.png new file mode 100644 index 000000000..265c2b866 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_coilgun_rubber.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_grenade_leadburster.png b/src/main/resources/assets/hbm/textures/items/ammo_grenade_leadburster.png new file mode 100644 index 000000000..dd2737ccb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_grenade_leadburster.png differ diff --git a/src/main/resources/assets/hbm/textures/items/analysis_tool.png b/src/main/resources/assets/hbm/textures/items/analysis_tool.png new file mode 100644 index 000000000..efee947ce Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/analysis_tool.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ball_resin.png b/src/main/resources/assets/hbm/textures/items/ball_resin.png new file mode 100644 index 000000000..5c4657a99 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ball_resin.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell.png b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell.png index d9e92ed00..96af24f72 100644 Binary files a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell.png and b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_2.png b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_2.png index b0db61103..ab884158d 100644 Binary files a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_2.png and b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_2.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_4.png b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_4.png index b35ac6882..fe84f7e26 100644 Binary files a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_4.png and b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_4.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_new.png b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_new.png index 46d944174..55b08bbac 100644 Binary files a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_new.png and b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_new.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bdcl.png b/src/main/resources/assets/hbm/textures/items/bdcl.png new file mode 100644 index 000000000..999de5f90 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bdcl.png differ diff --git a/src/main/resources/assets/hbm/textures/items/boat_rubber.png b/src/main/resources/assets/hbm/textures/items/boat_rubber.png new file mode 100644 index 000000000..6a1d428df Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/boat_rubber.png differ diff --git a/src/main/resources/assets/hbm/textures/items/boltgun.png b/src/main/resources/assets/hbm/textures/items/boltgun.png new file mode 100644 index 000000000..a45e128a7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/boltgun.png differ diff --git a/src/main/resources/assets/hbm/textures/items/book_cover.png b/src/main/resources/assets/hbm/textures/items/book_cover.png new file mode 100644 index 000000000..81dfcd45d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/book_cover.png differ diff --git a/src/main/resources/assets/hbm/textures/items/book_pages.png b/src/main/resources/assets/hbm/textures/items/book_pages.png new file mode 100644 index 000000000..73a98d544 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/book_pages.png differ diff --git a/src/main/resources/assets/hbm/textures/items/book_title.png b/src/main/resources/assets/hbm/textures/items/book_title.png new file mode 100644 index 000000000..9513bc51b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/book_title.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_CC_CENTRIFUGE.png b/src/main/resources/assets/hbm/textures/items/chem_icon_CC_CENTRIFUGE.png new file mode 100644 index 000000000..bd40743a8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_CC_CENTRIFUGE.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_CC_ELECTROLYSIS.png b/src/main/resources/assets/hbm/textures/items/chem_icon_CC_ELECTROLYSIS.png new file mode 100644 index 000000000..fd9229fc2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_CC_ELECTROLYSIS.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_LAMINATE.png b/src/main/resources/assets/hbm/textures/items/chem_icon_LAMINATE.png new file mode 100644 index 000000000..545b791dd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_LAMINATE.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_PC_ELECTROLYSIS.png b/src/main/resources/assets/hbm/textures/items/chem_icon_PC_ELECTROLYSIS.png new file mode 100644 index 000000000..7d41a1928 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_PC_ELECTROLYSIS.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_CHLORINE.png b/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_CHLORINE.png new file mode 100644 index 000000000..21ce59d82 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_CHLORINE.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_MUSTARD.png b/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_MUSTARD.png new file mode 100644 index 000000000..dd8ee6c2a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_MUSTARD.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_PHOSGENE.png b/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_PHOSGENE.png new file mode 100644 index 000000000..36509d7c4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_PHOSGENE.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_THORIUM_SALT.png b/src/main/resources/assets/hbm/textures/items/chem_icon_THORIUM_SALT.png new file mode 100644 index 000000000..734d6b435 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_THORIUM_SALT.png differ diff --git a/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier1.png b/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier1.png index 5e65de4c2..88f593cc1 100644 Binary files a/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier1.png and b/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier1.png differ diff --git a/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier2.png b/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier2.png index 041363c15..ca55bb611 100644 Binary files a/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier2.png and b/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier2.png differ diff --git a/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier3.png b/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier3.png index cfe5e550c..e55738dfe 100644 Binary files a/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier3.png and b/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier3.png differ diff --git a/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier4.png b/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier4.png index b5188f3c5..9f0ade52d 100644 Binary files a/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier4.png and b/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier4.png differ diff --git a/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier5.png b/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier5.png index d98e6fac8..e5f061e16 100644 Binary files a/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier5.png and b/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier5.png differ diff --git a/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier6.png b/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier6.png index bc3f083b6..10e0b5a03 100644 Binary files a/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier6.png and b/src/main/resources/assets/hbm/textures/items/circuit_targeting_tier6.png differ diff --git a/src/main/resources/assets/hbm/textures/items/coal_eternal.png b/src/main/resources/assets/hbm/textures/items/coal_eternal.png new file mode 100644 index 000000000..36ee856f8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/coal_eternal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/coil_advanced_alloy.png b/src/main/resources/assets/hbm/textures/items/coil_advanced_alloy.png index 291ff9f9f..aa44989b0 100644 Binary files a/src/main/resources/assets/hbm/textures/items/coil_advanced_alloy.png and b/src/main/resources/assets/hbm/textures/items/coil_advanced_alloy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/coil_copper.png b/src/main/resources/assets/hbm/textures/items/coil_copper.png index a31ac7dc5..332bb627b 100644 Binary files a/src/main/resources/assets/hbm/textures/items/coil_copper.png and b/src/main/resources/assets/hbm/textures/items/coil_copper.png differ diff --git a/src/main/resources/assets/hbm/textures/items/coil_gold.png b/src/main/resources/assets/hbm/textures/items/coil_gold.png index 6d22668a3..849d394ac 100644 Binary files a/src/main/resources/assets/hbm/textures/items/coil_gold.png and b/src/main/resources/assets/hbm/textures/items/coil_gold.png differ diff --git a/src/main/resources/assets/hbm/textures/items/coil_magnetized_tungsten.png b/src/main/resources/assets/hbm/textures/items/coil_magnetized_tungsten.png index 149d1c432..2118d79ff 100644 Binary files a/src/main/resources/assets/hbm/textures/items/coil_magnetized_tungsten.png and b/src/main/resources/assets/hbm/textures/items/coil_magnetized_tungsten.png differ diff --git a/src/main/resources/assets/hbm/textures/items/coupling_tool.png b/src/main/resources/assets/hbm/textures/items/coupling_tool.png new file mode 100644 index 000000000..54fa74781 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/coupling_tool.png differ diff --git a/src/main/resources/assets/hbm/textures/items/digamma_128kbps.png b/src/main/resources/assets/hbm/textures/items/digamma_128kbps.png deleted file mode 100644 index 67fa5529e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/digamma_128kbps.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/digamma_event_horizon.png b/src/main/resources/assets/hbm/textures/items/digamma_event_horizon.png deleted file mode 100644 index 11a7ae960..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/digamma_event_horizon.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/dnt_sword.png b/src/main/resources/assets/hbm/textures/items/dnt_sword.png index fb74fb890..6a2fbb9fe 100644 Binary files a/src/main/resources/assets/hbm/textures/items/dnt_sword.png and b/src/main/resources/assets/hbm/textures/items/dnt_sword.png differ diff --git a/src/main/resources/assets/hbm/textures/items/dont_they_know.png b/src/main/resources/assets/hbm/textures/items/dont_they_know.png deleted file mode 100644 index b906a88b5..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/dont_they_know.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/drone.patrol.png b/src/main/resources/assets/hbm/textures/items/drone.patrol.png new file mode 100644 index 000000000..a1bd3424a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/drone.patrol.png differ diff --git a/src/main/resources/assets/hbm/textures/items/drone.patrol_chunkloading.png b/src/main/resources/assets/hbm/textures/items/drone.patrol_chunkloading.png new file mode 100644 index 000000000..011d7827c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/drone.patrol_chunkloading.png differ diff --git a/src/main/resources/assets/hbm/textures/items/drone.patrol_express.png b/src/main/resources/assets/hbm/textures/items/drone.patrol_express.png new file mode 100644 index 000000000..fdea391f4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/drone.patrol_express.png differ diff --git a/src/main/resources/assets/hbm/textures/items/drone.patrol_express_chunkloading.png b/src/main/resources/assets/hbm/textures/items/drone.patrol_express_chunkloading.png new file mode 100644 index 000000000..de3f8af73 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/drone.patrol_express_chunkloading.png differ diff --git a/src/main/resources/assets/hbm/textures/items/drone.request.png b/src/main/resources/assets/hbm/textures/items/drone.request.png new file mode 100644 index 000000000..33f2be57e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/drone.request.png differ diff --git a/src/main/resources/assets/hbm/textures/items/drone_linker.png b/src/main/resources/assets/hbm/textures/items/drone_linker.png new file mode 100644 index 000000000..6e0a5e7cd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/drone_linker.png differ diff --git a/src/main/resources/assets/hbm/textures/items/drone_linker.png.mcmeta b/src/main/resources/assets/hbm/textures/items/drone_linker.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/items/drone_linker.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/items/egg_glyphid.png b/src/main/resources/assets/hbm/textures/items/egg_glyphid.png new file mode 100644 index 000000000..e7f1bd148 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/egg_glyphid.png differ diff --git a/src/main/resources/assets/hbm/textures/items/egg_glyphid_base.png b/src/main/resources/assets/hbm/textures/items/egg_glyphid_base.png new file mode 100644 index 000000000..87082894f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/egg_glyphid_base.png differ diff --git a/src/main/resources/assets/hbm/textures/items/envsuit_boots.png b/src/main/resources/assets/hbm/textures/items/envsuit_boots.png new file mode 100644 index 000000000..a95366a72 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/envsuit_boots.png differ diff --git a/src/main/resources/assets/hbm/textures/items/envsuit_helmet.png b/src/main/resources/assets/hbm/textures/items/envsuit_helmet.png new file mode 100644 index 000000000..e0b2d4a07 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/envsuit_helmet.png differ diff --git a/src/main/resources/assets/hbm/textures/items/envsuit_legs.png b/src/main/resources/assets/hbm/textures/items/envsuit_legs.png new file mode 100644 index 000000000..c773bf8a6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/envsuit_legs.png differ diff --git a/src/main/resources/assets/hbm/textures/items/envsuit_plate.png b/src/main/resources/assets/hbm/textures/items/envsuit_plate.png new file mode 100644 index 000000000..de43d9705 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/envsuit_plate.png differ diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_large.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_large.png index 1a6b4cb1b..afa1cbaf0 100644 Binary files a/src/main/resources/assets/hbm/textures/items/fuel_tank_large.png and b/src/main/resources/assets/hbm/textures/items/fuel_tank_large.png differ diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_large_alt.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_large_alt.png deleted file mode 100644 index 198a44430..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/fuel_tank_large_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_medium.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_medium.png index a7cd568d9..cd1ac2e15 100644 Binary files a/src/main/resources/assets/hbm/textures/items/fuel_tank_medium.png and b/src/main/resources/assets/hbm/textures/items/fuel_tank_medium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_medium_alt.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_medium_alt.png deleted file mode 100644 index 9674e50ab..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/fuel_tank_medium_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_small.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_small.png index d2ac3f1dc..23345a9ea 100644 Binary files a/src/main/resources/assets/hbm/textures/items/fuel_tank_small.png and b/src/main/resources/assets/hbm/textures/items/fuel_tank_small.png differ diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_small_alt.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_small_alt.png deleted file mode 100644 index 15f8dbacf..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/fuel_tank_small_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_arsenic.png b/src/main/resources/assets/hbm/textures/items/fuelcell_arsenic.png deleted file mode 100644 index 4a2c066f0..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/fuelcell_arsenic.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_base.png b/src/main/resources/assets/hbm/textures/items/fuelcell_base.png deleted file mode 100644 index b74dc7b35..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/fuelcell_base.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_euphemium.png b/src/main/resources/assets/hbm/textures/items/fuelcell_euphemium.png deleted file mode 100644 index 0acd3351e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/fuelcell_euphemium.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_neptunium.png b/src/main/resources/assets/hbm/textures/items/fuelcell_neptunium.png deleted file mode 100644 index b4edaede1..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/fuelcell_neptunium.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_plutonium.png b/src/main/resources/assets/hbm/textures/items/fuelcell_plutonium.png deleted file mode 100644 index f05ccd94d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/fuelcell_plutonium.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_selenium.png b/src/main/resources/assets/hbm/textures/items/fuelcell_selenium.png deleted file mode 100644 index 237092dbb..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/fuelcell_selenium.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_u235.png b/src/main/resources/assets/hbm/textures/items/fuelcell_u235.png deleted file mode 100644 index 86ba25294..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/fuelcell_u235.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_u238m2.png b/src/main/resources/assets/hbm/textures/items/fuelcell_u238m2.png deleted file mode 100644 index 9ce019f88..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/fuelcell_u238m2.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gem_sodalite.png b/src/main/resources/assets/hbm/textures/items/gem_sodalite.png new file mode 100644 index 000000000..10aaa045e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/gem_sodalite.png differ diff --git a/src/main/resources/assets/hbm/textures/items/glyphid_meat.png b/src/main/resources/assets/hbm/textures/items/glyphid_meat.png new file mode 100644 index 000000000..a94ea0561 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/glyphid_meat.png differ diff --git a/src/main/resources/assets/hbm/textures/items/glyphid_meat_grilled.png b/src/main/resources/assets/hbm/textures/items/glyphid_meat_grilled.png new file mode 100644 index 000000000..d611bc741 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/glyphid_meat_grilled.png differ diff --git a/src/main/resources/assets/hbm/textures/items/grenade_cats.png b/src/main/resources/assets/hbm/textures/items/grenade_cats.png new file mode 100644 index 000000000..e800e9e77 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/grenade_cats.png differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_ar15.png b/src/main/resources/assets/hbm/textures/items/gun_ar15.png new file mode 100644 index 000000000..032404fcc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/gun_ar15.png differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_bio_revolver.png b/src/main/resources/assets/hbm/textures/items/gun_bio_revolver.png new file mode 100644 index 000000000..ed11e32c0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/gun_bio_revolver.png differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_coilgun.png b/src/main/resources/assets/hbm/textures/items/gun_coilgun.png new file mode 100644 index 000000000..5c130d109 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/gun_coilgun.png differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_flamer.png b/src/main/resources/assets/hbm/textures/items/gun_flamer.png new file mode 100644 index 000000000..6cf5d9530 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/gun_flamer.png differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_spas12.png b/src/main/resources/assets/hbm/textures/items/gun_spas12.png new file mode 100644 index 000000000..b0420f777 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/gun_spas12.png differ diff --git a/src/main/resources/assets/hbm/textures/items/heavy_component.png b/src/main/resources/assets/hbm/textures/items/heavy_component.png new file mode 100644 index 000000000..276fb9e48 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/heavy_component.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_biorubber.png b/src/main/resources/assets/hbm/textures/items/ingot_biorubber.png new file mode 100644 index 000000000..7094fdeff Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_biorubber.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_cft.png b/src/main/resources/assets/hbm/textures/items/ingot_cft.png new file mode 100644 index 000000000..9346dbb5a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_cft.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_crystalline.png b/src/main/resources/assets/hbm/textures/items/ingot_crystalline.png new file mode 100644 index 000000000..e120cf4ee Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_crystalline.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_uzh.png b/src/main/resources/assets/hbm/textures/items/ingot_uzh.png new file mode 100644 index 000000000..9c1bdf702 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_uzh.png differ diff --git a/src/main/resources/assets/hbm/textures/items/key.png b/src/main/resources/assets/hbm/textures/items/key.png index 403bbd9fc..593227c1c 100644 Binary files a/src/main/resources/assets/hbm/textures/items/key.png and b/src/main/resources/assets/hbm/textures/items/key.png differ diff --git a/src/main/resources/assets/hbm/textures/items/key_red.png b/src/main/resources/assets/hbm/textures/items/key_red.png index 4b54458f6..206d0f966 100644 Binary files a/src/main/resources/assets/hbm/textures/items/key_red.png and b/src/main/resources/assets/hbm/textures/items/key_red.png differ diff --git a/src/main/resources/assets/hbm/textures/items/missile_buster.png b/src/main/resources/assets/hbm/textures/items/missile_buster.png index 40afe848b..2fff7c4a0 100644 Binary files a/src/main/resources/assets/hbm/textures/items/missile_buster.png and b/src/main/resources/assets/hbm/textures/items/missile_buster.png differ diff --git a/src/main/resources/assets/hbm/textures/items/missile_cluster.png b/src/main/resources/assets/hbm/textures/items/missile_cluster.png index 5b11a9d3a..d1b9a056f 100644 Binary files a/src/main/resources/assets/hbm/textures/items/missile_cluster.png and b/src/main/resources/assets/hbm/textures/items/missile_cluster.png differ diff --git a/src/main/resources/assets/hbm/textures/items/missile_decoy.png b/src/main/resources/assets/hbm/textures/items/missile_decoy.png new file mode 100644 index 000000000..a3a736bb3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/missile_decoy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/missile_generic.png b/src/main/resources/assets/hbm/textures/items/missile_generic.png index f06a2fd60..0e51204a0 100644 Binary files a/src/main/resources/assets/hbm/textures/items/missile_generic.png and b/src/main/resources/assets/hbm/textures/items/missile_generic.png differ diff --git a/src/main/resources/assets/hbm/textures/items/missile_incendiary.png b/src/main/resources/assets/hbm/textures/items/missile_incendiary.png index d468e0133..d73c8b473 100644 Binary files a/src/main/resources/assets/hbm/textures/items/missile_incendiary.png and b/src/main/resources/assets/hbm/textures/items/missile_incendiary.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_wire_dense.png b/src/main/resources/assets/hbm/textures/items/mold_wire_dense.png new file mode 100644 index 000000000..2dc03fe36 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_wire_dense.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_wires_dense.png b/src/main/resources/assets/hbm/textures/items/mold_wires_dense.png new file mode 100644 index 000000000..4c4df12b9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_wires_dense.png differ diff --git a/src/main/resources/assets/hbm/textures/items/motor_bismuth.png b/src/main/resources/assets/hbm/textures/items/motor_bismuth.png new file mode 100644 index 000000000..404e935e1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/motor_bismuth.png differ diff --git a/src/main/resources/assets/hbm/textures/items/night_vision.png b/src/main/resources/assets/hbm/textures/items/night_vision.png new file mode 100644 index 000000000..fe10b140c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/night_vision.png differ diff --git a/src/main/resources/assets/hbm/textures/items/nightmare_vision.png b/src/main/resources/assets/hbm/textures/items/nightmare_vision.png new file mode 100644 index 000000000..5d03c6236 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/nightmare_vision.png differ diff --git a/src/main/resources/assets/hbm/textures/items/nitra.png b/src/main/resources/assets/hbm/textures/items/nitra.png new file mode 100644 index 000000000..8dcc2e36a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/nitra.png differ diff --git a/src/main/resources/assets/hbm/textures/items/nitra_small.png b/src/main/resources/assets/hbm/textures/items/nitra_small.png new file mode 100644 index 000000000..856147709 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/nitra_small.png differ diff --git a/src/main/resources/assets/hbm/textures/items/page_of_.png b/src/main/resources/assets/hbm/textures/items/page_of_.png new file mode 100644 index 000000000..c1fef7b72 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/page_of_.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pattern.png b/src/main/resources/assets/hbm/textures/items/pattern.png deleted file mode 100644 index 9a263db7b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/pattern.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/pattern_drawn.png b/src/main/resources/assets/hbm/textures/items/pattern_drawn.png deleted file mode 100644 index ca8a8505a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/pattern_drawn.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/plan_c_alt.png b/src/main/resources/assets/hbm/textures/items/plan_c_alt.png deleted file mode 100644 index 0a44d8317..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/plan_c_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/plastic_bag.png b/src/main/resources/assets/hbm/textures/items/plastic_bag.png new file mode 100644 index 000000000..5074bd920 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/plastic_bag.png differ diff --git a/src/main/resources/assets/hbm/textures/items/plate_welded.png b/src/main/resources/assets/hbm/textures/items/plate_welded.png new file mode 100644 index 000000000..6ef667101 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/plate_welded.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pollution_detector.png b/src/main/resources/assets/hbm/textures/items/pollution_detector.png new file mode 100644 index 000000000..b926f8086 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pollution_detector.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_ash.coal.png b/src/main/resources/assets/hbm/textures/items/powder_ash.coal.png new file mode 100644 index 000000000..cf1f59334 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_ash.coal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_ash.fly.png b/src/main/resources/assets/hbm/textures/items/powder_ash.fly.png new file mode 100644 index 000000000..15e4bae5c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_ash.fly.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_ash.fullerene.png b/src/main/resources/assets/hbm/textures/items/powder_ash.fullerene.png new file mode 100644 index 000000000..31ca1e7f7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_ash.fullerene.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_ash.misc.png b/src/main/resources/assets/hbm/textures/items/powder_ash.misc.png new file mode 100644 index 000000000..1d74394b8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_ash.misc.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_ash.soot.png b/src/main/resources/assets/hbm/textures/items/powder_ash.soot.png new file mode 100644 index 000000000..664b4aa40 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_ash.soot.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_ash.wood.png b/src/main/resources/assets/hbm/textures/items/powder_ash.wood.png new file mode 100644 index 000000000..33440e5ea Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_ash.wood.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_chlorocalcite.png b/src/main/resources/assets/hbm/textures/items/powder_chlorocalcite.png new file mode 100644 index 000000000..901a98e2d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_chlorocalcite.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_sodium.png b/src/main/resources/assets/hbm/textures/items/powder_sodium.png new file mode 100644 index 000000000..d7e6c4ffc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_sodium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/primer_357.png b/src/main/resources/assets/hbm/textures/items/primer_357.png deleted file mode 100644 index c20411ce7..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/primer_357.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/primer_44.png b/src/main/resources/assets/hbm/textures/items/primer_44.png deleted file mode 100644 index 1b7fd5435..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/primer_44.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/primer_50.png b/src/main/resources/assets/hbm/textures/items/primer_50.png deleted file mode 100644 index 17bee59b9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/primer_50.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/primer_9.png b/src/main/resources/assets/hbm/textures/items/primer_9.png deleted file mode 100644 index e88ab382f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/primer_9.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/primer_buckshot.png b/src/main/resources/assets/hbm/textures/items/primer_buckshot.png deleted file mode 100644 index 701799005..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/primer_buckshot.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.bfb_am_mix.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.bfb_am_mix.png new file mode 100644 index 000000000..12f553847 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.bfb_am_mix.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.bfb_pu241.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.bfb_pu241.png new file mode 100644 index 000000000..01c0f4e83 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.bfb_pu241.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.hea242.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hea242.png new file mode 100644 index 000000000..02db8994d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hea242.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.hen237.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hen237.png new file mode 100644 index 000000000..64228fb58 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hen237.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.hep239.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hep239.png new file mode 100644 index 000000000..c14fe4ec2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hep239.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.hep241.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hep241.png new file mode 100644 index 000000000..2a99abe38 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hep241.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.hes326.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hes326.png new file mode 100644 index 000000000..d659fdd2f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hes326.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.hes327.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hes327.png new file mode 100644 index 000000000..7a1f8df98 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hes327.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.heu233.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.heu233.png new file mode 100644 index 000000000..8961cc636 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.heu233.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.heu235.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.heu235.png new file mode 100644 index 000000000..c80a207b0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.heu235.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.mea.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.mea.png new file mode 100644 index 000000000..90305870d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.mea.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.men.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.men.png new file mode 100644 index 000000000..c21db4157 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.men.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.mep.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.mep.png new file mode 100644 index 000000000..1d1334635 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.mep.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.meu.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.meu.png new file mode 100644 index 000000000..ca1e8e89e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.meu.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.mox.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.mox.png new file mode 100644 index 000000000..59d0a64a2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel.mox.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel_base.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel_base.png new file mode 100644 index 000000000..9d614943b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel_base.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel_depleted.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel_depleted.png new file mode 100644 index 000000000..cb2b2d545 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel_depleted.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel_hot.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel_hot.png new file mode 100644 index 000000000..84b4903d4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pwr_fuel_hot.png differ diff --git a/src/main/resources/assets/hbm/textures/items/radar_linker.png b/src/main/resources/assets/hbm/textures/items/radar_linker.png new file mode 100644 index 000000000..274181b4b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/radar_linker.png differ diff --git a/src/main/resources/assets/hbm/textures/items/recycled_crystal.png b/src/main/resources/assets/hbm/textures/items/recycled_crystal.png deleted file mode 100644 index 89635cfba..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/recycled_crystal.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/recycled_electronic.png b/src/main/resources/assets/hbm/textures/items/recycled_electronic.png deleted file mode 100644 index 6076ee251..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/recycled_electronic.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/recycled_explosive.png b/src/main/resources/assets/hbm/textures/items/recycled_explosive.png deleted file mode 100644 index f3e3135c7..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/recycled_explosive.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/recycled_ground.png b/src/main/resources/assets/hbm/textures/items/recycled_ground.png deleted file mode 100644 index 282c680a2..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/recycled_ground.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/recycled_metal.png b/src/main/resources/assets/hbm/textures/items/recycled_metal.png deleted file mode 100644 index b1f504225..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/recycled_metal.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/recycled_misc.png b/src/main/resources/assets/hbm/textures/items/recycled_misc.png deleted file mode 100644 index 23a4459a6..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/recycled_misc.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/recycled_nuclear.png b/src/main/resources/assets/hbm/textures/items/recycled_nuclear.png deleted file mode 100644 index 9846b2c4a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/recycled_nuclear.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/recycled_organic.png b/src/main/resources/assets/hbm/textures/items/recycled_organic.png deleted file mode 100644 index 6f065f58f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/recycled_organic.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/recycled_overlay.png b/src/main/resources/assets/hbm/textures/items/recycled_overlay.png deleted file mode 100644 index e3d5183a6..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/recycled_overlay.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/recycled_refined.png b/src/main/resources/assets/hbm/textures/items/recycled_refined.png deleted file mode 100644 index 2c346dbbd..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/recycled_refined.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/recycled_rock.png b/src/main/resources/assets/hbm/textures/items/recycled_rock.png deleted file mode 100644 index 257a053a9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/recycled_rock.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/scraps_additive.png b/src/main/resources/assets/hbm/textures/items/scraps_additive.png new file mode 100644 index 000000000..3d41c7920 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/scraps_additive.png differ diff --git a/src/main/resources/assets/hbm/textures/items/scraps_liquid.png b/src/main/resources/assets/hbm/textures/items/scraps_liquid.png new file mode 100644 index 000000000..5ce7cd523 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/scraps_liquid.png differ diff --git a/src/main/resources/assets/hbm/textures/items/sliding_blast_door_default.png b/src/main/resources/assets/hbm/textures/items/sliding_blast_door_default.png new file mode 100644 index 000000000..752aa7567 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/sliding_blast_door_default.png differ diff --git a/src/main/resources/assets/hbm/textures/items/sliding_blast_door_variant1.png b/src/main/resources/assets/hbm/textures/items/sliding_blast_door_variant1.png new file mode 100644 index 000000000..5bbe67b45 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/sliding_blast_door_variant1.png differ diff --git a/src/main/resources/assets/hbm/textures/items/sliding_blast_door_variant2.png b/src/main/resources/assets/hbm/textures/items/sliding_blast_door_variant2.png new file mode 100644 index 000000000..bceea2601 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/sliding_blast_door_variant2.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_book.png b/src/main/resources/assets/hbm/textures/items/stamp_book.png new file mode 100644 index 000000000..30f65b906 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/stamp_book.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stick_dynamite_fishing.png b/src/main/resources/assets/hbm/textures/items/stick_dynamite_fishing.png new file mode 100644 index 000000000..973506281 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/stick_dynamite_fishing.png differ diff --git a/src/main/resources/assets/hbm/textures/items/structure_custommachine.png b/src/main/resources/assets/hbm/textures/items/structure_custommachine.png new file mode 100644 index 000000000..3f95a0a78 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/structure_custommachine.png differ diff --git a/src/main/resources/assets/hbm/textures/items/swordTemplate.png b/src/main/resources/assets/hbm/textures/items/swordTemplate.png deleted file mode 100644 index cda8f964c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/swordTemplate.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/template_folder_alt.png b/src/main/resources/assets/hbm/textures/items/template_folder_alt.png deleted file mode 100644 index 442aa6af4..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/template_folder_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/thruster_large.png b/src/main/resources/assets/hbm/textures/items/thruster_large.png index b93646e4f..669b2a68a 100644 Binary files a/src/main/resources/assets/hbm/textures/items/thruster_large.png and b/src/main/resources/assets/hbm/textures/items/thruster_large.png differ diff --git a/src/main/resources/assets/hbm/textures/items/thruster_large_alt.png b/src/main/resources/assets/hbm/textures/items/thruster_large_alt.png deleted file mode 100644 index ee64287d3..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/thruster_large_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/thruster_medium.png b/src/main/resources/assets/hbm/textures/items/thruster_medium.png index c880ffed8..3437a340a 100644 Binary files a/src/main/resources/assets/hbm/textures/items/thruster_medium.png and b/src/main/resources/assets/hbm/textures/items/thruster_medium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/thruster_medium_alt.png b/src/main/resources/assets/hbm/textures/items/thruster_medium_alt.png deleted file mode 100644 index b480e5999..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/thruster_medium_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/thruster_small.png b/src/main/resources/assets/hbm/textures/items/thruster_small.png index f1881cd3c..192d0bd6e 100644 Binary files a/src/main/resources/assets/hbm/textures/items/thruster_small.png and b/src/main/resources/assets/hbm/textures/items/thruster_small.png differ diff --git a/src/main/resources/assets/hbm/textures/items/thruster_small_alt.png b/src/main/resources/assets/hbm/textures/items/thruster_small_alt.png deleted file mode 100644 index 30c695f30..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/thruster_small_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/train.cargo_tram.png b/src/main/resources/assets/hbm/textures/items/train.cargo_tram.png new file mode 100644 index 000000000..dc08307e9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/train.cargo_tram.png differ diff --git a/src/main/resources/assets/hbm/textures/items/train.cargo_tram_trailer.png b/src/main/resources/assets/hbm/textures/items/train.cargo_tram_trailer.png new file mode 100644 index 000000000..8783c427d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/train.cargo_tram_trailer.png differ diff --git a/src/main/resources/assets/hbm/textures/items/train.tunnel_bore.png b/src/main/resources/assets/hbm/textures/items/train.tunnel_bore.png new file mode 100644 index 000000000..b115e28a0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/train.tunnel_bore.png differ diff --git a/src/main/resources/assets/hbm/textures/items/trenchmaster_boots.png b/src/main/resources/assets/hbm/textures/items/trenchmaster_boots.png new file mode 100644 index 000000000..509f7cae6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/trenchmaster_boots.png differ diff --git a/src/main/resources/assets/hbm/textures/items/trenchmaster_helmet.png b/src/main/resources/assets/hbm/textures/items/trenchmaster_helmet.png new file mode 100644 index 000000000..b12e0e69f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/trenchmaster_helmet.png differ diff --git a/src/main/resources/assets/hbm/textures/items/trenchmaster_legs.png b/src/main/resources/assets/hbm/textures/items/trenchmaster_legs.png new file mode 100644 index 000000000..48e7b3e7c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/trenchmaster_legs.png differ diff --git a/src/main/resources/assets/hbm/textures/items/trenchmaster_plate.png b/src/main/resources/assets/hbm/textures/items/trenchmaster_plate.png new file mode 100644 index 000000000..27b3fa9c3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/trenchmaster_plate.png differ diff --git a/src/main/resources/assets/hbm/textures/items/wire_dense.png b/src/main/resources/assets/hbm/textures/items/wire_dense.png new file mode 100644 index 000000000..2482676ab Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/wire_dense.png differ diff --git a/src/main/resources/assets/hbm/textures/misc/scope_bolt.png b/src/main/resources/assets/hbm/textures/misc/scope_bolt.png new file mode 100644 index 000000000..2c40eeb66 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/misc/scope_bolt.png differ diff --git a/src/main/resources/assets/hbm/textures/models/TsarBomba.png b/src/main/resources/assets/hbm/textures/models/TsarBomba.png deleted file mode 100644 index ff12919c1..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/TsarBomba.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/bombs/tsar.png b/src/main/resources/assets/hbm/textures/models/bombs/tsar.png new file mode 100644 index 000000000..479e5c44b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/bombs/tsar.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/large_vehicle_door.png b/src/main/resources/assets/hbm/textures/models/doors/large_vehicle_door.png new file mode 100644 index 000000000..3085d29d2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/large_vehicle_door.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/qe_containment.png b/src/main/resources/assets/hbm/textures/models/doors/qe_containment.png new file mode 100644 index 000000000..9fa8b809f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/qe_containment.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/qe_containment_decal.png b/src/main/resources/assets/hbm/textures/models/doors/qe_containment_decal.png new file mode 100644 index 000000000..cd095da96 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/qe_containment_decal.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/qe_sliding_door.png b/src/main/resources/assets/hbm/textures/models/doors/qe_sliding_door.png new file mode 100644 index 000000000..f46977bcb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/qe_sliding_door.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/round_airlock_door.png b/src/main/resources/assets/hbm/textures/models/doors/round_airlock_door.png new file mode 100644 index 000000000..c5bafb762 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/round_airlock_door.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/secure_access_door.png b/src/main/resources/assets/hbm/textures/models/doors/secure_access_door.png new file mode 100644 index 000000000..108b7cefd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/secure_access_door.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door.png b/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door.png new file mode 100644 index 000000000..20d572d21 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door_variant1.png b/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door_variant1.png new file mode 100644 index 000000000..9d10aa5e5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door_variant1.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door_variant2.png b/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door_variant2.png new file mode 100644 index 000000000..8a327955d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door_variant2.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/sliding_seal_door.png b/src/main/resources/assets/hbm/textures/models/doors/sliding_seal_door.png new file mode 100644 index 000000000..9b64dbfe2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/sliding_seal_door.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/water_door.png b/src/main/resources/assets/hbm/textures/models/doors/water_door.png new file mode 100644 index 000000000..1db668c8e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/water_door.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/arc_welder.png b/src/main/resources/assets/hbm/textures/models/machines/arc_welder.png new file mode 100644 index 000000000..7dc4193e8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/arc_welder.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/ashpit.png b/src/main/resources/assets/hbm/textures/models/machines/ashpit.png new file mode 100644 index 000000000..96dcf87b2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/ashpit.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/chimney_brick.png b/src/main/resources/assets/hbm/textures/models/machines/chimney_brick.png new file mode 100644 index 000000000..104edc2b4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/chimney_brick.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/chimney_industrial.png b/src/main/resources/assets/hbm/textures/models/machines/chimney_industrial.png new file mode 100644 index 000000000..e89a56543 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/chimney_industrial.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/compressor.png b/src/main/resources/assets/hbm/textures/models/machines/compressor.png new file mode 100644 index 000000000..2b26f107a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/compressor.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/condenser.png b/src/main/resources/assets/hbm/textures/models/machines/condenser.png new file mode 100644 index 000000000..cb3573db1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/condenser.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/conveyor_press.png b/src/main/resources/assets/hbm/textures/models/machines/conveyor_press.png new file mode 100644 index 000000000..6464d8f83 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/conveyor_press.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/conveyor_press_belt.png b/src/main/resources/assets/hbm/textures/models/machines/conveyor_press_belt.png new file mode 100644 index 000000000..e99f266f0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/conveyor_press_belt.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/cyclotron.png b/src/main/resources/assets/hbm/textures/models/machines/cyclotron.png index b10a0d1db..6cfaeb008 100644 Binary files a/src/main/resources/assets/hbm/textures/models/machines/cyclotron.png and b/src/main/resources/assets/hbm/textures/models/machines/cyclotron.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/drone.png b/src/main/resources/assets/hbm/textures/models/machines/drone.png new file mode 100644 index 000000000..66c3240ba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/drone.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/drone_express.png b/src/main/resources/assets/hbm/textures/models/machines/drone_express.png new file mode 100644 index 000000000..af1d99522 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/drone_express.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/drone_request.png b/src/main/resources/assets/hbm/textures/models/machines/drone_request.png new file mode 100644 index 000000000..314d79655 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/drone_request.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/electrolyser.png b/src/main/resources/assets/hbm/textures/models/machines/electrolyser.png index 09c84e5ee..cc54a4622 100644 Binary files a/src/main/resources/assets/hbm/textures/models/machines/electrolyser.png and b/src/main/resources/assets/hbm/textures/models/machines/electrolyser.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png b/src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png new file mode 100644 index 000000000..36fefae3b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/fan.png b/src/main/resources/assets/hbm/textures/models/machines/fan.png index 003223c2f..a2abda82d 100644 Binary files a/src/main/resources/assets/hbm/textures/models/machines/fan.png and b/src/main/resources/assets/hbm/textures/models/machines/fan.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/fel.png b/src/main/resources/assets/hbm/textures/models/machines/fel.png index d3e0ed944..c0830a7c4 100644 Binary files a/src/main/resources/assets/hbm/textures/models/machines/fel.png and b/src/main/resources/assets/hbm/textures/models/machines/fel.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/igen.png b/src/main/resources/assets/hbm/textures/models/machines/igen.png index 571094da1..8356c2e3c 100644 Binary files a/src/main/resources/assets/hbm/textures/models/machines/igen.png and b/src/main/resources/assets/hbm/textures/models/machines/igen.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/industrial_boiler.png b/src/main/resources/assets/hbm/textures/models/machines/industrial_boiler.png new file mode 100644 index 000000000..92c535e6e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/industrial_boiler.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/piston_inserter.png b/src/main/resources/assets/hbm/textures/models/machines/piston_inserter.png new file mode 100644 index 000000000..86e8b0b8a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/piston_inserter.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/pump_electric.png b/src/main/resources/assets/hbm/textures/models/machines/pump_electric.png new file mode 100644 index 000000000..ca6baef2d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/pump_electric.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/pump_steam.png b/src/main/resources/assets/hbm/textures/models/machines/pump_steam.png new file mode 100644 index 000000000..8a1306035 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/pump_steam.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/radar_screen.png b/src/main/resources/assets/hbm/textures/models/machines/radar_screen.png new file mode 100644 index 000000000..82e959a1c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/radar_screen.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/steamhammer.png b/src/main/resources/assets/hbm/textures/models/machines/steamhammer.png new file mode 100644 index 000000000..ce0ae052e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/steamhammer.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/stirling_creative.png b/src/main/resources/assets/hbm/textures/models/machines/stirling_creative.png new file mode 100644 index 000000000..9ba16b6a3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/stirling_creative.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/strand_caster.png b/src/main/resources/assets/hbm/textures/models/machines/strand_caster.png new file mode 100644 index 000000000..96f371d95 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/strand_caster.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/telex.png b/src/main/resources/assets/hbm/textures/models/machines/telex.png new file mode 100644 index 000000000..3cc38b488 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/telex.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/wood_burner.png b/src/main/resources/assets/hbm/textures/models/machines/wood_burner.png new file mode 100644 index 000000000..282ac5a5f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/wood_burner.png differ diff --git a/src/main/resources/assets/hbm/textures/models/mas.png b/src/main/resources/assets/hbm/textures/models/mas.png new file mode 100644 index 000000000..a39ae81a4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/mas.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missileAA.png b/src/main/resources/assets/hbm/textures/models/missileAA.png deleted file mode 100644 index 0c74ad150..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileAA.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileHuge_BU.png b/src/main/resources/assets/hbm/textures/models/missileHuge_BU.png deleted file mode 100644 index 2df487384..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileHuge_BU.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileHuge_CL.png b/src/main/resources/assets/hbm/textures/models/missileHuge_CL.png deleted file mode 100644 index cba5500d5..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileHuge_CL.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileHuge_HE.png b/src/main/resources/assets/hbm/textures/models/missileHuge_HE.png deleted file mode 100644 index 2e647789c..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileHuge_HE.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileHuge_IN.png b/src/main/resources/assets/hbm/textures/models/missileHuge_IN.png deleted file mode 100644 index 0cb6be630..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileHuge_IN.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileMIRV.png b/src/main/resources/assets/hbm/textures/models/missileMIRV.png deleted file mode 100644 index dd01c3d04..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileMIRV.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileStrong_BU.png b/src/main/resources/assets/hbm/textures/models/missileStrong_BU.png deleted file mode 100644 index 081321cca..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileStrong_BU.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileStrong_CL.png b/src/main/resources/assets/hbm/textures/models/missileStrong_CL.png deleted file mode 100644 index 0c86da908..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileStrong_CL.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileStrong_EMP.png b/src/main/resources/assets/hbm/textures/models/missileStrong_EMP.png deleted file mode 100644 index a981e35a8..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileStrong_EMP.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileStrong_HE.png b/src/main/resources/assets/hbm/textures/models/missileStrong_HE.png deleted file mode 100644 index fb7624aa1..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileStrong_HE.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileStrong_IN.png b/src/main/resources/assets/hbm/textures/models/missileStrong_IN.png deleted file mode 100644 index 3578037af..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileStrong_IN.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileV2_BU.png b/src/main/resources/assets/hbm/textures/models/missileV2_BU.png deleted file mode 100644 index 48a2bcda9..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileV2_BU.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileV2_CL.png b/src/main/resources/assets/hbm/textures/models/missileV2_CL.png deleted file mode 100644 index f373109a4..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileV2_CL.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileV2_HE.png b/src/main/resources/assets/hbm/textures/models/missileV2_HE.png deleted file mode 100644 index bf8e01d18..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileV2_HE.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missileV2_IN.png b/src/main/resources/assets/hbm/textures/models/missileV2_IN.png deleted file mode 100644 index 4b01e70d2..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missileV2_IN.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_abm.png b/src/main/resources/assets/hbm/textures/models/missile_abm.png new file mode 100644 index 000000000..0b56f1d54 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_abm.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_huge.png b/src/main/resources/assets/hbm/textures/models/missile_huge.png new file mode 100644 index 000000000..30eff35ce Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_huge.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_huge_bu.png b/src/main/resources/assets/hbm/textures/models/missile_huge_bu.png new file mode 100644 index 000000000..fdc91812e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_huge_bu.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_huge_cl.png b/src/main/resources/assets/hbm/textures/models/missile_huge_cl.png new file mode 100644 index 000000000..9047f2918 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_huge_cl.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_huge_inc.png b/src/main/resources/assets/hbm/textures/models/missile_huge_inc.png new file mode 100644 index 000000000..be1ed784a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_huge_inc.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_strong.png b/src/main/resources/assets/hbm/textures/models/missile_strong.png new file mode 100644 index 000000000..25fb3e3c3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_strong.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_strong_bu.png b/src/main/resources/assets/hbm/textures/models/missile_strong_bu.png new file mode 100644 index 000000000..e2521a650 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_strong_bu.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_strong_cl.png b/src/main/resources/assets/hbm/textures/models/missile_strong_cl.png new file mode 100644 index 000000000..5f0236417 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_strong_cl.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_strong_emp.png b/src/main/resources/assets/hbm/textures/models/missile_strong_emp.png new file mode 100644 index 000000000..cbb22f1bc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_strong_emp.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_strong_inc.png b/src/main/resources/assets/hbm/textures/models/missile_strong_inc.png new file mode 100644 index 000000000..c9a536443 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_strong_inc.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_v2.png b/src/main/resources/assets/hbm/textures/models/missile_v2.png new file mode 100644 index 000000000..9959468ec Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_v2.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_v2_bu.png b/src/main/resources/assets/hbm/textures/models/missile_v2_bu.png new file mode 100644 index 000000000..84ca714b3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_v2_bu.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_v2_cl.png b/src/main/resources/assets/hbm/textures/models/missile_v2_cl.png new file mode 100644 index 000000000..7399458d6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_v2_cl.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_v2_decoy.png b/src/main/resources/assets/hbm/textures/models/missile_v2_decoy.png new file mode 100644 index 000000000..191b0c97f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_v2_decoy.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_v2_inc.png b/src/main/resources/assets/hbm/textures/models/missile_v2_inc.png new file mode 100644 index 000000000..18faa37ef Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_v2_inc.png differ diff --git a/src/main/resources/assets/hbm/textures/models/projectiles/himars_single_lava.png b/src/main/resources/assets/hbm/textures/models/projectiles/himars_single_lava.png new file mode 100644 index 000000000..f0b669169 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/projectiles/himars_single_lava.png differ diff --git a/src/main/resources/assets/hbm/textures/models/projectiles/himars_standard_lava.png b/src/main/resources/assets/hbm/textures/models/projectiles/himars_standard_lava.png new file mode 100644 index 000000000..312172141 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/projectiles/himars_standard_lava.png differ diff --git a/src/main/resources/assets/hbm/textures/models/projectiles/leadburster.png b/src/main/resources/assets/hbm/textures/models/projectiles/leadburster.png new file mode 100644 index 000000000..281f6ca1f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/projectiles/leadburster.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_CHOLERSTEROL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_CHOLESTEROL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank/tank_CHOLERSTEROL.png rename to src/main/resources/assets/hbm/textures/models/tank/tank_CHOLESTEROL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_FISHOIL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_FISHOIL.png new file mode 100644 index 000000000..5b9c063b5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_FISHOIL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_HEAVYWATER_HOT.png b/src/main/resources/assets/hbm/textures/models/tank/tank_HEAVYWATER_HOT.png new file mode 100644 index 000000000..09ce7b6d2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_HEAVYWATER_HOT.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_HELIUM4.png b/src/main/resources/assets/hbm/textures/models/tank/tank_HELIUM4.png new file mode 100644 index 000000000..8ca2d648f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_HELIUM4.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_IONGEL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_IONGEL.png new file mode 100644 index 000000000..174c13aaa Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_IONGEL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_NITROGLYCERIN.png b/src/main/resources/assets/hbm/textures/models/tank/tank_NITROGLYCERIN.png new file mode 100644 index 000000000..afc63209a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_NITROGLYCERIN.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_SODIUM.png b/src/main/resources/assets/hbm/textures/models/tank/tank_SODIUM.png new file mode 100644 index 000000000..a17ee9e49 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_SODIUM.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_SODIUM_HOT.png b/src/main/resources/assets/hbm/textures/models/tank/tank_SODIUM_HOT.png new file mode 100644 index 000000000..7a9e921cc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_SODIUM_HOT.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_SUNFLOWEROIL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_SUNFLOWEROIL.png new file mode 100644 index 000000000..abcc1ad09 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_SUNFLOWEROIL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/telex.png b/src/main/resources/assets/hbm/textures/models/telex.png deleted file mode 100644 index 2ba7d96c7..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/telex.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/trains/ow.png b/src/main/resources/assets/hbm/textures/models/trains/ow.png new file mode 100644 index 000000000..3ba1a9767 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trains/ow.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trains/tram.png b/src/main/resources/assets/hbm/textures/models/trains/tram.png new file mode 100644 index 000000000..58721d316 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trains/tram.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trains/tram_trailer.png b/src/main/resources/assets/hbm/textures/models/trains/tram_trailer.png new file mode 100644 index 000000000..382be5124 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trains/tram_trailer.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/adam29.png b/src/main/resources/assets/hbm/textures/models/trinkets/adam29.png index bab400b53..0aa2f83cc 100644 Binary files a/src/main/resources/assets/hbm/textures/models/trinkets/adam29.png and b/src/main/resources/assets/hbm/textures/models/trinkets/adam29.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/lantern.png b/src/main/resources/assets/hbm/textures/models/trinkets/lantern.png new file mode 100644 index 000000000..554a434e2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trinkets/lantern.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/lantern_rusty.png b/src/main/resources/assets/hbm/textures/models/trinkets/lantern_rusty.png new file mode 100644 index 000000000..7f734a12b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trinkets/lantern_rusty.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/microwave.png b/src/main/resources/assets/hbm/textures/models/trinkets/microwave.png new file mode 100644 index 000000000..82a5c22a4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trinkets/microwave.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/peep.png b/src/main/resources/assets/hbm/textures/models/trinkets/peep.png new file mode 100644 index 000000000..9e8551ba8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trinkets/peep.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/benelli_tex.png b/src/main/resources/assets/hbm/textures/models/weapons/benelli_tex.png new file mode 100644 index 000000000..2381fab49 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/benelli_tex.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/coilgun.png b/src/main/resources/assets/hbm/textures/models/weapons/coilgun.png new file mode 100644 index 000000000..8dfb5eaa8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/coilgun.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/congolake.png b/src/main/resources/assets/hbm/textures/models/weapons/congolake.png new file mode 100644 index 000000000..2d611e459 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/congolake.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon.png new file mode 100644 index 000000000..b72c6d3fe Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_0.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_0.png new file mode 100644 index 000000000..7650662e7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_0.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_1.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_1.png new file mode 100644 index 000000000..e73121b40 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_1.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_10.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_10.png new file mode 100644 index 000000000..6dc466718 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_10.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_11.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_11.png new file mode 100644 index 000000000..351ac3108 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_11.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_12.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_12.png new file mode 100644 index 000000000..ccacf821c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_12.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_13.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_13.png new file mode 100644 index 000000000..47a8d042a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_13.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_14.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_14.png new file mode 100644 index 000000000..a1938e8e9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_14.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_2.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_2.png new file mode 100644 index 000000000..b01baf16b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_2.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_3.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_3.png new file mode 100644 index 000000000..16bdc3c2d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_3.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_4.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_4.png new file mode 100644 index 000000000..ce4d89448 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_4.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_5.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_5.png new file mode 100644 index 000000000..0a2f9cfc5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_5.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_6.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_6.png new file mode 100644 index 000000000..c94c65d92 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_6.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_7.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_7.png new file mode 100644 index 000000000..322a8e4d5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_7.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_8.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_8.png new file mode 100644 index 000000000..92bbb9308 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_8.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_9.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_9.png new file mode 100644 index 000000000..363f9131f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_9.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_0.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_0.png new file mode 100644 index 000000000..be363f2a3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_0.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_1.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_1.png new file mode 100644 index 000000000..d1c5435fb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_1.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_10.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_10.png new file mode 100644 index 000000000..32aeaa2ed Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_10.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_11.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_11.png new file mode 100644 index 000000000..79dd01984 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_11.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_2.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_2.png new file mode 100644 index 000000000..f64127298 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_2.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_3.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_3.png new file mode 100644 index 000000000..766391aa5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_3.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_4.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_4.png new file mode 100644 index 000000000..9992b7619 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_4.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_5.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_5.png new file mode 100644 index 000000000..203848086 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_5.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_6.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_6.png new file mode 100644 index 000000000..c6d3580f4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_6.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_7.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_7.png new file mode 100644 index 000000000..938405d7c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_7.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_8.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_8.png new file mode 100644 index 000000000..a70ceb815 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_8.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_9.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_9.png new file mode 100644 index 000000000..3a12cf680 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_9.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_empty.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_empty.png new file mode 100644 index 000000000..a78876d6e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_empty.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_0.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_0.png new file mode 100644 index 000000000..bc3d6c1d6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_0.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_1.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_1.png new file mode 100644 index 000000000..7e13ddbe0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_1.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_2.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_2.png new file mode 100644 index 000000000..f24edf0d9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_2.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_3.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_3.png new file mode 100644 index 000000000..0a41c0947 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_3.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_4.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_4.png new file mode 100644 index 000000000..9bba0a39f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_4.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_5.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_5.png new file mode 100644 index 000000000..3fd5fbf76 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_5.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_6.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_6.png new file mode 100644 index 000000000..9efec8e0a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_6.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_7.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_7.png new file mode 100644 index 000000000..e8db8d13a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_7.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_8.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_8.png new file mode 100644 index 000000000..9a30a70c1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_8.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_empty.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_empty.png new file mode 100644 index 000000000..493a027f2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_empty.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/grenade_launcher.png b/src/main/resources/assets/hbm/textures/models/weapons/grenade_launcher.png new file mode 100644 index 000000000..9c37723a2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/grenade_launcher.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/ipleaker.png b/src/main/resources/assets/hbm/textures/models/weapons/ipleaker.png new file mode 100644 index 000000000..ca0c36889 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/ipleaker.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/pistol_texture.png b/src/main/resources/assets/hbm/textures/models/weapons/pistol_texture.png new file mode 100644 index 000000000..926d076b9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/pistol_texture.png differ